diff --git a/configure.ac b/configure.ac index 69fcffde3f..0484ab2744 100644 --- a/configure.ac +++ b/configure.ac @@ -1027,6 +1027,8 @@ src/Mod/TemplatePyMod/Makefile src/Mod/Sandbox/Makefile src/Mod/Sandbox/App/Makefile src/Mod/Sandbox/Gui/Makefile +src/Mod/Surfaces/Makefile +src/Mod/Ship/Makefile src/Tools/Makefile src/Tools/_TEMPLATE_/Makefile src/Tools/_TEMPLATE_/App/Makefile diff --git a/src/Mod/Arch/ArchAxis.py b/src/Mod/Arch/ArchAxis.py index 4ea4fa317b..53b425b757 100644 --- a/src/Mod/Arch/ArchAxis.py +++ b/src/Mod/Arch/ArchAxis.py @@ -22,6 +22,7 @@ #*************************************************************************** import FreeCAD,FreeCADGui,Draft,math + from draftlibs import fcvec from FreeCAD import Vector from PyQt4 import QtCore, QtGui diff --git a/src/Mod/Arch/ArchCell.py b/src/Mod/Arch/ArchCell.py index 6076150553..8783602ccf 100644 --- a/src/Mod/Arch/ArchCell.py +++ b/src/Mod/Arch/ArchCell.py @@ -89,30 +89,28 @@ class _Cell(ArchComponent.Component): import Part pl = obj.Placement if obj.Components: + shapes = [] if obj.JoinMode: walls = [] structs = [] - compshapes = [] - for comp in obj.Components: - if Draft.getType(comp) == "Wall": - walls.append(comp.Shape) - elif Draft.getType(comp) == "Structure": - structs.append(comp.Shape) + for c in obj.Components: + if Draft.getType(c) == "Wall": + walls.append(c.Shape) + elif Draft.getType(c) == "Structure": + structs.append(c.Shape) else: - compshapes.append(comp.Shape) - for gr in [walls,structs]: - if gr: - sh = gr.pop(0) - for csh in gr: - sh = sh.oldFuse(csh) - compshapes.append(sh) - baseShape = Part.makeCompound(compshapes) + shapes.append(c.Shape) + for group in [walls,structs]: + if group: + sh = group.pop(0).copy() + for subsh in group: + sh = sh.oldFuse(subsh) + shapes.append(sh) else: - compshapes = [] - for o in obj.Components: - compshapes.append(o.Shape) - baseShape = Part.makeCompound(compshapes) - obj.Shape = baseShape + for c in obj.Components: + shapes.append(c.Shape) + if shapes: + obj.Shape = Part.makeCompound(shapes) obj.Placement = pl class _ViewProviderCell(ArchComponent.ViewProviderComponent): diff --git a/src/Mod/Arch/ArchCommands.py b/src/Mod/Arch/ArchCommands.py index 83f6059ad3..d05dd13465 100644 --- a/src/Mod/Arch/ArchCommands.py +++ b/src/Mod/Arch/ArchCommands.py @@ -138,6 +138,7 @@ def splitMesh(obj,mark=True): def meshToShape(obj,mark=True): '''meshToShape(object,[mark]): turns a mesh into a shape, joining coplanar facets. If mark is True (default), non-solid objects will be marked in red''' + name = obj.Name import Part,MeshPart from draftlibs import fcgeo @@ -259,6 +260,24 @@ def mergeCells(objectslist): FreeCAD.ActiveDocument.removeObject(o.Name) FreeCAD.ActiveDocument.recompute() return base + +def download(url): + '''downloads a file from the given URL and saves it in the + user directory. Returns the path to the saved file''' + try: + FreeCAD.Console.PrintMessage("downloading "+url+" ...\n") + import urllib2, os + response = urllib2.urlopen(url) + s = response.read() + fp = os.path.join(FreeCAD.ConfigGet("UserAppData"),url.split('/')[-1]) + if not os.path.exists(fp): + f = open(fp,'wb') + f.write(s) + f.close() + except: + return None + else: + return fp # command definitions ############################################### diff --git a/src/Mod/Arch/ArchWall.py b/src/Mod/Arch/ArchWall.py index 9790fd7156..248006f1f3 100644 --- a/src/Mod/Arch/ArchWall.py +++ b/src/Mod/Arch/ArchWall.py @@ -59,13 +59,42 @@ class _CommandWall: def Activated(self): sel = FreeCADGui.Selection.getSelection() + done = False if sel: - FreeCAD.ActiveDocument.openTransaction("Wall") - for obj in sel: - makeWall(obj) - FreeCAD.ActiveDocument.commitTransaction() - else: - wall = makeWall() + import Draft + if Draft.getType(sel[0]) != "Wall": + FreeCAD.ActiveDocument.openTransaction("Wall") + for obj in sel: + makeWall(obj) + FreeCAD.ActiveDocument.commitTransaction() + done = True + if not done: + import DraftTrackers + self.points = [] + self.tracker = DraftTrackers.boxTracker() + FreeCADGui.Snapper.getPoint(callback=self.getPoint) + + def getPoint(self,point): + "this function is called by the snapper when it has a 3D point" + if point == None: + self.tracker.finalize() + return + self.points.append(point) + if len(self.points) == 1: + self.tracker.on() + FreeCADGui.Snapper.getPoint(last=self.points[0],callback=self.getPoint,movecallback=self.update) + elif len(self.points) == 2: + import Draft + l = Draft.makeWire(self.points) + makeWall(l) + self.tracker.finalize() + + def update(self,point): + "this function is called by the Snapper when the mouse is moved" + self.tracker.update([self.points[0],point]) + + + class _Wall(ArchComponent.Component): "The Wall object" diff --git a/src/Mod/Arch/Arch_rc.py b/src/Mod/Arch/Arch_rc.py index 7c1c30950e..f56440b2c8 100644 --- a/src/Mod/Arch/Arch_rc.py +++ b/src/Mod/Arch/Arch_rc.py @@ -2,7 +2,7 @@ # Resource object code # -# Created: Tue Jan 17 17:15:03 2012 +# Created: Tue Jan 24 10:12:37 2012 # by: The Resource Compiler for PyQt (Qt v4.7.4) # # WARNING! All changes made in this file will be lost! @@ -5697,122 +5697,83 @@ qt_resource_data = "\ \x00\x00\x00\x12\x00\x57\x00\x65\x00\x72\x00\x6b\x00\x7a\x00\x65\ \x00\x75\x00\x67\x00\x65\x08\x00\x00\x00\x00\x06\x00\x00\x00\x05\ \x54\x6f\x6f\x6c\x73\x07\x00\x00\x00\x04\x61\x72\x63\x68\x01\ -\x00\x00\x07\x1c\ +\x00\x00\x04\xaa\ \x00\ -\x00\x27\x43\x78\x9c\xed\x5a\x6d\x73\xda\x38\x10\xfe\x9e\x5f\xa1\ -\xe3\x66\xda\xbb\x99\x80\x21\x81\x34\x21\xc6\x9d\x96\x24\x4d\x66\ -\xd2\x2b\x2d\xb4\x99\xfb\xd4\x31\xb6\xc0\x6a\x65\xcb\xb1\xe4\x1a\ -\x7a\x73\xff\xfd\x56\x92\x0d\x36\x06\xf2\x02\x49\xae\x9d\xce\x24\ -\x13\x4b\xbb\xda\x5d\xad\x76\x9f\x5d\x39\x36\x5f\x4e\x7c\x8a\xbe\ -\xe1\x88\x13\x16\x74\x2a\x8d\x5a\xbd\x82\x70\xe0\x30\x97\x04\xe3\ -\x4e\xe5\xe3\xe0\xac\x7a\x58\x79\x69\xed\x98\x31\x99\x33\x35\x81\ -\xc9\xda\x41\xa6\x43\x6d\xce\xad\x37\x31\x69\xb7\x4f\x88\x4d\xd9\ -\x18\xfe\xd2\x71\x1f\x0b\x01\x8b\xf9\xab\xc8\xf1\x4c\x43\xf3\x00\ -\x73\x42\xdc\x31\x16\x48\x8d\x3b\x95\xf7\x57\x6a\x58\x41\x81\xed\ -\xe3\x4e\x65\x9d\x0c\xa9\x0a\x99\x61\xc4\x42\x1c\x89\x69\xba\x60\ -\x8c\x99\x8f\x45\x34\x55\x44\x64\x46\xd8\x11\xea\x09\x99\x13\xab\ -\x6e\x1a\x93\x74\x30\x95\x83\x69\x3a\x00\x0b\x84\x67\xb5\x5e\xb4\ -\x4c\x43\x3f\xea\x69\x0f\x93\xb1\x27\xac\x83\xbd\x23\xd3\x48\x9f\ -\x95\x4c\x23\x13\x6a\x1a\x99\xf2\x65\x96\x24\x24\x70\x59\x32\x20\ -\x82\xe2\xd4\x18\x2e\x22\xb0\xdd\x7a\x83\x03\x1c\xd9\x14\xf1\x74\ -\x2f\xa6\x91\x12\xca\x22\xa9\x3d\x65\xf1\xdc\x37\x9f\x5e\xb3\xc9\ -\xa5\x9a\x4a\x25\x2e\xa8\xe4\xa1\xed\x80\xa0\x4a\xba\x81\x20\xf6\ -\x87\x38\xb2\x0e\x4c\x23\x7d\xd2\xe6\xe7\x35\x94\x44\xf8\x76\x34\ -\x26\xc1\x82\x84\xa3\xb5\x12\x88\xc0\xfe\xdc\x93\xf9\xb3\x7c\x13\ -\xb1\x38\x04\x9b\xb3\xd3\x1c\x67\x63\xcd\x5e\x52\x2e\xe6\xce\x5a\ -\xe2\x2f\x79\xe6\xa8\xbf\xc4\x69\x65\x9b\xd6\xba\x2e\x55\x06\x51\ -\x2b\x88\x63\x53\x3d\xfb\x79\x6f\xae\x77\xbe\xa1\x25\x82\xce\x4b\ -\x82\x3c\x16\x91\xef\x2c\x10\x4b\x44\x2d\x0a\x2b\xbb\xe8\xd2\x1e\ -\x62\x9a\x49\xa2\x72\x50\x58\xbe\xc4\x47\x78\x22\x0a\x0c\x33\x3f\ -\x9d\xe0\x91\x1d\x53\x10\xcd\x28\x8b\xd0\x08\x7e\x13\x9b\xd2\x45\ -\x4f\x2d\x77\x97\x9e\xd4\xb6\xe5\x8c\x37\x8a\xd6\x97\x36\x23\x03\ -\x0e\x47\x25\x3f\xf4\xd5\xf4\xda\x6d\x00\x2f\x06\x56\x01\xb8\xb1\ -\xb0\x1b\x0c\xa1\x66\xbd\x17\xed\xf6\xf9\x4c\x9e\x69\xa8\xc9\x9b\ -\x36\x50\xce\x07\xf2\x1d\x9f\x93\x00\x4e\x8a\x0b\x17\xd2\xad\x53\ -\xa9\x2f\xba\x0e\x38\x0a\x33\x19\x1a\x34\xeb\x05\x30\x98\x51\x53\ -\x20\xd8\xab\x17\x30\x61\x6e\xd6\xa2\xc0\x15\x9e\xd6\x8e\xbb\x83\ -\xa7\x8b\x61\xa3\x60\xb1\x17\xe1\x51\x57\x9e\xf5\xeb\x58\x08\x70\ -\x63\x96\x64\x92\x16\x02\x4d\xc5\xc1\x50\xd3\xd6\x46\x14\x63\x74\ -\x40\xc2\xe5\x41\x35\xf0\x08\x47\xf0\x23\x3c\x8c\xdc\x52\x80\x05\ -\x38\x41\x57\x10\x64\x88\x0d\xbf\x00\x28\xde\x3e\xd6\x4a\x46\x28\ -\x99\x0b\x26\xa8\xb9\x05\xff\x47\xd8\xb5\xf6\x5a\x2d\x09\xc2\xee\ -\x02\x69\x1c\x61\x1c\x58\x8d\x23\x38\x1a\xfd\x58\x24\x0f\x69\x8c\ -\xad\xc6\x0b\xa0\xaa\xa7\xe2\xb1\x95\x54\xdd\xce\x6a\xe9\xe6\xd3\ -\x40\x96\x9b\x95\x11\xe6\xa4\x1e\x91\x6e\x52\xa7\x05\xca\xee\xeb\ -\x24\xa9\xae\x67\x0b\xef\x66\x6d\x6f\x99\x6b\xa4\x75\x76\x5b\xd9\ -\x6f\x1a\x1a\x09\x67\x30\x59\x20\x6f\x0a\x9a\x1b\x41\xe6\xd6\x00\ -\x13\x08\xb1\x23\xe2\x08\x3f\x1d\x6a\xde\x00\xff\xbf\x70\xf3\x31\ -\x71\xf3\xa6\x5a\xbc\x19\x72\xf6\xb3\x68\x7b\x5c\xf8\x6c\xb4\xea\ -\x6b\xe0\xf3\xe0\x68\x1d\x7c\x1e\x1e\x3c\x11\x7c\xce\x7c\xf5\x0b\ -\x43\x57\x37\x9e\x07\x9b\x35\x9e\xad\xed\x35\x9e\xea\xee\xf3\x84\ -\x20\xda\xfc\x05\xa2\xab\x7d\xfd\xd8\x20\xba\xbf\xf6\x30\xee\x02\ -\x5d\xad\xa3\x35\xc8\xb5\xbf\xb7\x0e\xb9\x9a\x4f\x85\x5c\x57\x2a\ -\x17\x7e\x5e\xd8\x2a\x12\x0b\xb2\x72\x7c\xf7\x78\x4b\x30\x2f\xbe\ -\xb7\x7b\x4f\x70\x71\xd6\x45\xc4\x0f\x59\x24\xb6\xfd\x72\x60\x7b\ -\xaf\x06\xf6\x37\x43\xe8\xf5\x99\xb4\x1a\xa1\x9f\x51\x71\xfc\xdb\ -\xc9\xbb\xee\xe0\xef\xde\x29\x3a\x1f\xbc\xbd\x44\xbd\x8f\xaf\x2f\ -\x2f\xba\xe8\xd9\x75\xcc\xc4\x71\xd5\x30\xae\xf6\xbb\x86\x71\x32\ -\x38\xd1\xd4\x66\xad\x6e\x18\xa7\x7f\x69\x6a\xca\xe4\x09\x11\xb6\ -\x0d\x23\x49\x92\x5a\xb2\x5f\x63\xd1\xd8\x18\x7c\x30\x3e\x9c\x76\ -\xab\x9e\xf0\x69\xb3\xae\x5c\xee\x88\x9a\x2b\x5c\xcd\xff\x6c\x2c\ -\x8e\x77\xa4\x62\x49\x97\x03\xf5\x8c\x6d\x37\x7b\xf6\xb1\xb0\xb5\ -\xe5\x7a\xc1\x35\xac\xf7\xe4\x1e\x52\xb5\x0e\x38\x0e\x60\x3a\xa5\ -\x36\xd2\x59\x23\x5b\xce\xc5\x94\x62\x24\xa6\x61\xb6\x5e\x2e\x85\ -\x98\xe7\x39\xf5\xe1\x2e\xa2\x04\xfd\x83\x12\x0f\x7c\x5d\x55\xb8\ -\xd7\x46\x90\x4a\xd5\x24\xb2\xc3\x63\xf4\xaf\xb2\xcf\x50\x92\x32\ -\xb1\x46\xde\xc4\x21\x73\xa7\x48\x91\x53\x1d\x50\xdd\x02\x51\x1d\ -\xd9\x3e\xa1\xd3\xf6\xf3\x13\xfc\xc5\xfe\x14\xa3\xbe\x1d\xf0\xe7\ -\x29\x49\x42\x70\xfb\x30\xcc\x38\x13\x05\xd3\xed\x66\xbd\x9e\xd1\ -\xa5\xb0\x76\xc0\x22\xdf\xa6\xc7\x0b\x8e\x0a\x8b\xaa\xf4\xab\xb8\ -\xaa\x60\x61\xbb\x1e\x4e\x66\xe3\x21\x03\x50\xf5\x0b\x53\x14\x8f\ -\x44\x61\x22\x52\x5a\xd5\x4c\xf5\x5a\x54\x87\x94\x39\x5f\xab\x80\ -\x43\xe0\xce\x36\x58\x22\x3d\x35\x1b\x02\xd3\xdc\x8e\x33\x28\xde\ -\xb2\x61\x95\xb9\x14\x81\x23\xa0\xc2\x0a\x86\x46\x71\xe0\xc8\x62\ -\xb9\x8b\x20\x88\xa1\x75\xc5\x2e\xb2\x03\xc5\xd3\x77\x3c\xec\xdb\ -\xe8\x74\x02\x4e\xe5\x1c\x8d\x08\x1c\xc9\x1f\x35\x3c\x09\xff\x44\ -\xf6\x37\x9b\x40\xd4\xc2\x84\x87\x23\xdc\x56\xbe\x0d\xff\x4f\x7b\ -\x95\x66\xd8\xc8\x03\x60\xed\x94\x22\x9c\x0b\x1c\xca\xee\x9e\xd7\ -\x1c\xe6\x1b\x3c\x0e\x25\xac\x40\xa0\xb8\xf8\xdb\x67\x97\x39\xdc\ -\xc0\x7a\xc7\x06\x19\x39\x7b\x93\xfd\xf4\xcf\x67\xe1\x34\xe4\xe6\ -\x8b\x3a\x20\xec\x82\xe2\x6e\x95\x4d\x2e\x76\x58\xa4\x7a\x90\x36\ -\x8a\xc1\xbe\x88\x92\x00\x1f\xeb\x26\xaa\xfd\x7b\xab\x7e\x88\xdd\ -\xc3\x9c\xb5\xdb\x33\x4e\x85\x3c\xd8\x34\x8b\x78\x7b\xf6\x14\xce\ -\x9e\x64\xe4\xcf\x53\x22\xcd\xe0\xed\xf5\x73\x0f\xdc\x08\x37\x6f\ -\x0f\xb3\xf3\x6e\xc6\xc3\xce\xd7\x7c\x19\x9a\xb5\x32\x92\x30\xcc\ -\xd7\xa3\xe5\xe8\xbb\xee\x32\x48\x46\x90\x56\xfa\x3e\xa8\xc4\x61\ -\x77\x57\xe5\x19\xf4\x87\x38\x0a\xb2\x97\xdb\x32\xa3\x42\x3b\xe2\ -\x58\x76\xd0\x94\xa2\x21\x46\x31\xc7\x32\x03\x87\x31\xa1\xae\x66\ -\x4a\xef\x8a\x68\x14\x31\x1f\x7d\x0d\x58\xa2\x33\x51\x02\x21\xaf\ -\xdd\xff\x06\xb9\xba\x78\x48\x13\x66\x76\xce\x4d\xdc\xe0\xb2\xaa\ -\x3d\xb0\xa0\x6d\x08\xfe\xb3\xe0\x96\x87\xa1\x4f\x93\x8f\x0f\xd9\ -\x93\xc1\x96\x2e\x46\x4e\x2f\xdd\xc7\x8f\xd9\x94\xdd\xf5\x4a\xb4\ -\xbe\x77\xf8\x75\x25\xda\xe4\x4a\xb4\xac\x57\x5b\x7f\x05\x5d\x9d\ -\x6e\xb9\xb2\xaa\xca\x29\xd4\x33\x75\x2c\x0f\x79\x99\x5e\x01\x89\ -\x67\xa0\xbf\xeb\x31\x06\x59\x52\x42\x45\x69\x9b\x93\xd2\xee\x0d\ -\x8b\xdb\x6b\x37\x6a\x48\xca\xa2\xc4\xc1\x01\x07\xc9\x52\x1a\x67\ -\x01\x47\x09\x46\x76\x84\x51\xc0\x04\xb2\x29\x65\x09\xc8\x02\x0d\ -\xdc\x23\x21\x28\xb6\x85\x16\x91\x10\xe1\xa1\x33\xb8\x3a\x76\x5f\ -\x9d\xec\x22\xce\x94\x5e\x3f\xe6\x02\xc1\xcd\x2d\xa0\xcc\x76\x11\ -\x11\x72\x12\xf0\x82\x8e\x6a\xa8\x47\x21\x5a\x72\xeb\x09\xd4\x77\ -\xe6\xcf\x8f\x0a\xc1\x8f\xe4\x86\x62\xee\x87\x31\x20\xe7\x2e\x6c\ -\xc0\x45\xb0\x18\x90\x5b\x6d\x58\x2d\x93\x7d\xd1\x06\x88\x7d\x07\ -\xbc\x03\xb0\xd3\xae\xfb\x51\xc1\xee\x81\xfb\x85\xd6\x43\xf4\x0b\ -\xf7\x4f\x8b\x8b\x15\xdd\x02\xa4\xc0\xbb\x10\x07\x7d\x0f\x43\x73\ -\xa0\xaf\xba\xc5\x56\xc1\x55\x6f\xdf\xb2\x0e\x41\x06\xbd\x07\x81\ -\x47\x61\x7e\x38\x2d\xf6\x1b\x9b\xd6\xf0\xd5\xf8\xf5\x91\x17\x0d\ -\x7d\x94\x00\xd7\x05\x3d\xa7\xf3\x27\x0c\xf3\x5b\xbd\x68\xc9\x31\ -\xe5\x38\xd2\x94\xc8\xfe\x0d\x91\x7e\x27\xd2\xa9\x1c\x54\xd2\x5b\ -\x54\xa7\xd2\x68\x54\x0c\xc9\x19\x92\x89\x6f\x87\x19\x04\x5b\xd7\ -\x3d\x35\x3e\x83\x66\xf3\x2d\xf1\x71\x1f\x50\xcd\x81\x0e\x6d\x81\ -\x4b\x7e\xf3\x03\x70\xc9\x7c\xad\x91\x2b\x4b\xf2\x33\xda\xca\xdc\ -\x77\x41\xb9\xd2\x32\xff\x16\x48\x76\x1b\x13\xb8\xf3\xbb\xdc\x4a\ -\xbf\x03\x82\x4e\x23\x9d\x50\x54\x4f\xd5\x08\x29\xc1\x90\x02\xf4\ -\x87\x41\x35\xcf\x34\x52\x82\x72\xc0\xa2\xde\xf5\x86\xe4\x5e\x62\ -\x2e\x37\xa4\x17\x73\x2f\xa3\xaf\x32\x46\x1b\xcb\x37\xb3\x64\xa1\ -\xe2\x2e\xb5\xa6\xec\xbb\x55\x26\x49\x69\x5b\x33\xeb\x26\x27\x95\ -\x3d\xf9\x38\x66\xa5\x10\xbc\xfc\xe0\xe6\xd4\xcd\x8d\x29\x4e\xa8\ -\xef\xd6\xa0\x03\x51\xc9\xc0\x55\xda\x38\x2c\x08\xb0\x4a\x06\x39\ -\x36\x8d\x98\x58\x3b\xff\x01\xea\x67\xa5\xfc\ +\x00\x1c\xf4\x78\x9c\xed\x59\x6d\x6f\xa3\x38\x10\xfe\xde\x5f\x61\ +\xf1\xf9\xae\x24\xd9\x24\xbb\xad\x08\xab\x7d\xb9\xbe\x48\xbb\xba\ +\x54\xe9\x6e\x3f\xae\x08\x4c\x82\x6f\xc1\xe6\x8c\xb9\x24\xfb\xeb\ +\xcf\x36\x26\x60\x20\xb4\x69\xb2\xad\x54\x55\x6a\x54\xdb\x63\x66\ +\xc6\x8f\x67\x1e\x0f\xd8\x79\xbf\x8e\x23\xf4\x1f\xb0\x14\x53\x32\ +\xb1\xfa\xa7\x3d\x0b\x01\xf1\x69\x80\xc9\x72\x62\x7d\xbb\xbd\xf8\ +\xf3\x9d\xf5\xde\x3d\x71\x32\x5c\x4e\x1a\x8a\x49\xee\x09\x72\xfc\ +\xc8\x4b\x53\xf7\x32\xc3\xe7\xe7\x9f\xb1\x17\xd1\xa5\xf8\x1f\x2d\ +\x67\xc0\xb9\x78\x38\xfd\xc0\xfc\xd0\xb1\xf3\x39\x62\xf2\x0a\x07\ +\x4b\xe0\x48\xf5\x27\xd6\xcd\x9d\xea\x5a\x88\x78\x31\x4c\xac\x2e\ +\x1d\xd2\x14\x72\x12\x46\x13\x60\x7c\xa3\x1f\x58\x02\x8d\x81\xb3\ +\x8d\x12\x22\x87\x81\xcf\x55\x0b\x39\x6b\xb7\xe7\xd8\x6b\xdd\xd9\ +\xc8\xce\x46\x77\x84\x07\x3c\x74\x47\x6f\x47\x8e\x9d\x37\xf3\xe1\ +\x10\xf0\x32\xe4\xee\x78\x70\xe6\xd8\xba\xad\x74\xda\x85\x52\xc7\ +\x2e\x8c\xb7\x79\xb2\xc2\x24\xa0\xab\x5b\xcc\x23\xd0\xce\xa4\x9c\ +\x09\xdf\xdd\x4b\x20\xc0\xbc\x08\xa5\x7a\x2d\x8e\xad\x05\x4d\x95\ +\x91\xb7\xa1\x59\x89\xcd\xf7\x8f\x74\xfd\x45\x0d\x69\x8d\x35\x93\ +\x69\xe2\xf9\x42\x91\xa5\x17\x40\xb2\x78\x0e\xcc\x1d\x3b\xb6\x6e\ +\xe5\xee\x57\x2d\x34\x54\xc4\x1e\x5b\x62\x52\xd3\x70\xd6\xa9\x01\ +\x73\x88\x4b\x24\xab\x7b\x79\xc9\x68\x96\x08\x9f\x8b\xdd\x5c\x16\ +\xfd\x7c\x7a\xc3\x38\x2f\xc1\x6a\xc1\x4b\xee\x39\x9a\xb5\x80\xd6\ +\xf4\xa9\x13\x3a\x6d\x4c\x44\x2d\xc7\xbe\x17\xe5\xa3\x3f\x06\xa5\ +\xdd\x72\x41\x2d\x8a\xae\x1a\x8a\x42\xca\xf0\x2f\x4a\x78\x8b\xaa\ +\xba\xb2\x26\x44\x5f\xbc\x39\x44\x85\xa6\x48\x76\x8c\xc7\x5b\x30\ +\x82\x35\x37\x26\x6c\x71\xfa\x0c\x0b\x2f\x8b\x84\x6a\x1a\x51\x86\ +\x16\xe2\xb7\xf2\xa2\xa8\x8e\x54\x3b\x5c\xf9\x60\xee\x5b\xc5\x79\ +\xdb\xf4\xbe\xb1\x18\x19\x70\xc0\x1a\x38\xcc\xd4\x70\xe7\x32\xc4\ +\x5c\x10\x53\xb9\xe0\x8d\xda\x6a\x40\x84\x9a\x7b\xc3\xcf\xcf\xaf\ +\xb6\xfa\x1c\x5b\x0d\xde\xb7\x80\x66\x3e\xe0\x5f\x70\x85\x89\xd8\ +\xa9\x94\x07\x22\xdd\x26\x56\xaf\x0e\x9d\x98\x61\x8c\x14\x6c\x30\ +\xec\x19\x64\xb0\x95\x6a\x22\x18\xf4\x0c\x4e\x28\xdd\xaa\x2b\xdc\ +\x81\x74\x0e\xdc\x1e\x48\x9b\x61\xa3\x68\x71\xca\x60\xf1\x49\xee\ +\xf5\xc7\x8c\x73\x01\x63\x91\x64\x52\x96\x08\x99\x8a\x83\x79\x2e\ +\xeb\x8c\x28\x4a\xa3\x5b\x9c\xb4\x07\xd5\x6d\x88\x53\x24\xfe\x78\ +\x08\x28\x68\x04\x18\x81\x15\xba\x13\x41\x86\xe8\xfc\x1f\x41\x8a\ +\x0f\x8f\xb5\x86\x13\x4a\x67\xcd\x05\x35\x56\xc3\x9f\x41\xe0\x0e\ +\x46\x23\x49\xc2\x41\x4d\xb4\x64\x00\xc4\xed\x9f\x89\xad\xc9\x9b\ +\xa6\x78\x1e\x65\xe0\xf6\xdf\x0a\xa9\x6a\x99\xdb\xd6\x30\xf5\x30\ +\xaf\x25\xcc\x7f\x11\x79\xdc\xec\x8c\x30\x5f\x23\x22\x61\x52\xbb\ +\x25\x8c\x3d\x16\x24\x69\x6e\xea\xf1\xf0\x7e\x6b\x5f\x69\x60\xeb\ +\x73\xf6\x58\xd9\xef\xd8\x39\x13\x6e\x69\xd2\x10\x1f\x4a\x9a\x07\ +\x51\xe6\xd1\x08\x53\x08\x32\x9f\x67\x0c\x9e\x8f\x35\xef\xa1\xff\ +\x57\xde\x7c\x4a\xde\xbc\xef\x2c\x3e\x8c\x39\x67\x45\xb4\x3d\x2d\ +\x7d\xf6\x47\xbd\x0e\xfa\x1c\x9f\x75\xd1\xe7\xbb\xf1\x33\xd1\xe7\ +\x16\xab\x57\x0e\xdd\x5d\x78\x8e\x0f\x2b\x3c\x47\xc7\x2b\x3c\xd5\ +\xbb\xcf\x33\x92\xe8\xf0\x95\x44\x77\x63\xfd\xd4\x24\xfa\xa6\x73\ +\x33\xf6\xa1\xae\xd1\x59\x07\x73\xbd\x19\x74\x31\xd7\xf0\xb9\x98\ +\xeb\x4e\xe5\xc2\xcb\xa5\x2d\x53\x68\xe8\xaa\xcc\x7b\xc4\x57\x82\ +\xf2\xf0\x7d\xd8\x77\x82\xeb\x8b\x4f\x08\xc7\x09\x65\xfc\xd8\x1f\ +\x07\x8e\xf7\x69\x60\xf8\x70\x86\x2e\xd3\x2c\x04\xff\x67\x15\x9f\ +\x6d\x8e\x49\xc1\xbc\x0a\x54\x3b\x5a\x5d\x55\x0a\x5e\x88\x02\x25\ +\x2f\x54\x94\x3a\x08\xfe\x50\x15\x8b\x20\x2e\x60\xa4\xf8\xea\x22\ +\xa1\x4d\x3c\x96\x82\xa4\x76\xf1\xba\x37\x07\x94\xa5\x80\x38\x45\ +\xf3\x0c\x47\x41\x3e\x49\x17\x31\x68\xc1\x68\x8c\x7e\x12\xba\x22\ +\xea\x39\xbe\x49\x20\x3d\x7d\x7c\x69\xb3\xfb\xdc\x91\x2e\x6c\xfd\ +\x2c\x5d\x3c\xa0\x8a\xca\x11\xa8\x59\x9b\x0b\xfc\x5c\x51\x7e\x80\ +\x20\x10\xd9\xfc\x9d\x64\x21\x96\x74\xbd\xf0\xa7\x7a\x1d\x2f\x90\ +\x2d\x0e\x4f\xa1\xd1\xef\x48\xa1\xc7\x27\xd0\xf5\x8e\x04\x12\xf1\ +\xf8\x77\x02\x64\x16\x82\xc8\x97\x9c\x96\xcc\xec\x09\x54\xa5\x54\ +\x24\x0d\xa1\x1c\x85\x1e\x09\x22\x31\x3e\xdf\x98\x29\x78\x68\x58\ +\xef\xce\xa0\x6f\xa9\xe9\xe8\xe3\x6d\xec\x1d\xe3\x15\x9b\x2f\x30\ +\xcc\xf7\x3f\x14\x8d\x7a\xb6\x38\x7e\xcc\x0f\xa9\x0f\x29\x63\xcb\ +\x0a\xf6\xbb\xd6\x61\xd4\xaf\xcd\xa3\x70\x8f\xaa\xd5\x2c\x58\x75\ +\xad\x3a\x68\xd4\xaa\x45\x99\x3a\x6c\x94\xa9\x46\x85\x5a\x77\xc5\ +\xa8\x4b\x4b\x90\x2a\x48\x56\x60\xd4\xbc\x51\xbc\x57\xeb\x8b\x8f\ +\x89\x35\xb6\x50\x7e\x83\x31\xb1\xfa\x7d\xcb\x96\x33\x13\xbc\x8e\ +\xbd\x64\x91\x11\x5f\x02\xe5\xfe\x3b\x55\xfd\x0b\x71\x48\x7d\xc5\ +\x31\xcc\x68\xc6\x7c\xc1\xec\xb5\x59\xf2\x12\x2b\x4b\x39\x8d\x73\ +\x8b\xa9\xf2\xa4\x3a\x92\x7b\x59\xb9\xe8\xaa\x14\xc3\xe5\xe5\x96\ +\xdc\x8f\x35\x07\x12\xa4\xee\xcd\x34\x4b\xc3\x42\x5e\x0c\x9e\xe4\ +\x70\x79\x81\x58\xb6\xd0\x62\xe7\x97\x5f\xe9\x69\x28\x91\x53\xa3\ +\x0a\x81\xba\xe1\x6e\x4f\x6a\xa5\x79\xab\x37\x4d\x97\x77\xb9\x24\ +\xb5\x1d\xcf\x2d\xcd\xc3\xed\x08\x95\xd2\xc3\x9d\x31\x07\xd4\x45\ +\x23\x83\x54\x6d\x76\xaa\xc2\xc2\xa7\x84\x80\xda\x6c\xd9\x77\xec\ +\x0c\xbb\x27\xff\x03\x16\x13\x63\x21\ \x00\x00\x07\x4c\ \x00\ \x00\x29\xd1\x78\x9c\xed\x59\x5b\x8f\xe2\x46\x16\x7e\xef\x5f\xe1\ @@ -10089,30 +10050,30 @@ qt_resource_struct = "\ \x00\x00\x00\x86\x00\x00\x00\x00\x00\x01\x00\x00\x3e\x30\ \x00\x00\x01\x70\x00\x00\x00\x00\x00\x01\x00\x01\x08\x08\ \x00\x00\x00\x38\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ -\x00\x00\x05\x12\x00\x01\x00\x00\x00\x01\x00\x02\x30\x38\ -\x00\x00\x04\x1e\x00\x00\x00\x00\x00\x01\x00\x01\xf2\x69\ -\x00\x00\x02\xfc\x00\x00\x00\x00\x00\x01\x00\x01\xa3\xf7\ -\x00\x00\x05\xb2\x00\x01\x00\x00\x00\x01\x00\x02\x5b\xca\ -\x00\x00\x04\xe4\x00\x01\x00\x00\x00\x01\x00\x02\x29\x66\ -\x00\x00\x03\x36\x00\x01\x00\x00\x00\x01\x00\x01\xb2\x66\ -\x00\x00\x03\x88\x00\x01\x00\x00\x00\x01\x00\x01\xc5\xed\ -\x00\x00\x02\xa0\x00\x01\x00\x00\x00\x01\x00\x01\x89\x57\ -\x00\x00\x04\x5e\x00\x00\x00\x00\x00\x01\x00\x02\x0c\x43\ -\x00\x00\x02\x7e\x00\x01\x00\x00\x00\x01\x00\x01\x80\x5e\ -\x00\x00\x03\x64\x00\x01\x00\x00\x00\x01\x00\x01\xbb\xbe\ -\x00\x00\x02\x34\x00\x01\x00\x00\x00\x01\x00\x01\x6f\xb6\ -\x00\x00\x02\x5e\x00\x01\x00\x00\x00\x01\x00\x01\x79\x5e\ -\x00\x00\x04\x8e\x00\x01\x00\x00\x00\x01\x00\x02\x1b\xb1\ -\x00\x00\x03\xf4\x00\x00\x00\x00\x00\x01\x00\x01\xe1\xe8\ -\x00\x00\x04\xbc\x00\x01\x00\x00\x00\x01\x00\x02\x21\x01\ -\x00\x00\x05\x3c\x00\x00\x00\x00\x00\x01\x00\x02\x37\x13\ -\x00\x00\x03\xac\x00\x01\x00\x00\x00\x01\x00\x01\xcb\x04\ -\x00\x00\x05\x86\x00\x01\x00\x00\x00\x01\x00\x02\x53\x50\ -\x00\x00\x05\x66\x00\x01\x00\x00\x00\x01\x00\x02\x49\x16\ -\x00\x00\x04\x3e\x00\x01\x00\x00\x00\x01\x00\x02\x06\x2b\ -\x00\x00\x02\xd2\x00\x00\x00\x00\x00\x01\x00\x01\x91\x99\ -\x00\x00\x03\xd6\x00\x00\x00\x00\x00\x01\x00\x01\xd2\xec\ -\x00\x00\x02\x00\x00\x01\x00\x00\x00\x01\x00\x01\x68\x66\ +\x00\x00\x05\x12\x00\x01\x00\x00\x00\x01\x00\x02\x2d\xc6\ +\x00\x00\x04\x1e\x00\x00\x00\x00\x00\x01\x00\x01\xef\xf7\ +\x00\x00\x02\xfc\x00\x00\x00\x00\x00\x01\x00\x01\xa1\x85\ +\x00\x00\x05\xb2\x00\x01\x00\x00\x00\x01\x00\x02\x59\x58\ +\x00\x00\x04\xe4\x00\x01\x00\x00\x00\x01\x00\x02\x26\xf4\ +\x00\x00\x03\x36\x00\x01\x00\x00\x00\x01\x00\x01\xaf\xf4\ +\x00\x00\x03\x88\x00\x01\x00\x00\x00\x01\x00\x01\xc3\x7b\ +\x00\x00\x02\xa0\x00\x01\x00\x00\x00\x01\x00\x01\x86\xe5\ +\x00\x00\x04\x5e\x00\x00\x00\x00\x00\x01\x00\x02\x09\xd1\ +\x00\x00\x02\x7e\x00\x01\x00\x00\x00\x01\x00\x01\x7d\xec\ +\x00\x00\x03\x64\x00\x01\x00\x00\x00\x01\x00\x01\xb9\x4c\ +\x00\x00\x02\x34\x00\x01\x00\x00\x00\x01\x00\x01\x6d\x44\ +\x00\x00\x02\x5e\x00\x01\x00\x00\x00\x01\x00\x01\x76\xec\ +\x00\x00\x04\x8e\x00\x01\x00\x00\x00\x01\x00\x02\x19\x3f\ +\x00\x00\x03\xf4\x00\x00\x00\x00\x00\x01\x00\x01\xdf\x76\ +\x00\x00\x04\xbc\x00\x01\x00\x00\x00\x01\x00\x02\x1e\x8f\ +\x00\x00\x05\x3c\x00\x00\x00\x00\x00\x01\x00\x02\x34\xa1\ +\x00\x00\x03\xac\x00\x01\x00\x00\x00\x01\x00\x01\xc8\x92\ +\x00\x00\x05\x86\x00\x01\x00\x00\x00\x01\x00\x02\x50\xde\ +\x00\x00\x05\x66\x00\x01\x00\x00\x00\x01\x00\x02\x46\xa4\ +\x00\x00\x04\x3e\x00\x01\x00\x00\x00\x01\x00\x02\x03\xb9\ +\x00\x00\x02\xd2\x00\x00\x00\x00\x00\x01\x00\x01\x8f\x27\ +\x00\x00\x03\xd6\x00\x00\x00\x00\x00\x01\x00\x01\xd0\x7a\ +\x00\x00\x02\x00\x00\x01\x00\x00\x00\x01\x00\x01\x65\xf4\ \x00\x00\x01\xd8\x00\x01\x00\x00\x00\x01\x00\x01\x61\x46\ " diff --git a/src/Mod/Arch/Resources/ui/archprefs-base.ui b/src/Mod/Arch/Resources/ui/archprefs-base.ui index 2963885847..88b1ba306f 100644 --- a/src/Mod/Arch/Resources/ui/archprefs-base.ui +++ b/src/Mod/Arch/Resources/ui/archprefs-base.ui @@ -164,22 +164,6 @@ IFC import - - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:8pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">For the IFC reader to function, you need an IFC Schema Express file (.exp) available here:</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.steptools.com/support/stdev_docs/express/ifc2x3/ifc2x3_tc1.exp"><span style=" text-decoration: underline; color:#508ed8;">http://www.steptools.com/support/stdev_docs/express/ifc2x3/ifc2x3_tc1.exp</span></a></p></body></html> - - - - - @@ -201,39 +185,6 @@ p, li { white-space: pre-wrap; } - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - IFC Schema file location - - - - - - - For the IFC reader to function, you need an IFC Schema Express file (.exp). For licensing reasons we are not allowed to ship that file with FreeCAD, so you must download it yourself. Place that file in some location on your computer, and select the file here. - - - IfcSchema - - - Mod/Arch - - - @@ -259,26 +210,29 @@ p, li { white-space: pre-wrap; } + + + + Qt::Vertical + + + + 20 + 40 + + + + qPixmapFromMimeSource - - Gui::FileChooser - QWidget -
Gui/FileDialog.h
-
Gui::ColorButton QPushButton
Gui/Widgets.h
- - Gui::PrefFileChooser - Gui::FileChooser -
Gui/PrefWidgets.h
-
Gui::PrefColorButton Gui::ColorButton diff --git a/src/Mod/Arch/importIFC.py b/src/Mod/Arch/importIFC.py index 9cfdf57c37..0018f27398 100644 --- a/src/Mod/Arch/importIFC.py +++ b/src/Mod/Arch/importIFC.py @@ -21,7 +21,7 @@ #* * #*************************************************************************** -import ifcReader, FreeCAD, Arch, Draft, os, sys, time, tempfile +import ifcReader, FreeCAD, Arch, Draft, os, sys, time, tempfile, Part from draftlibs import fcvec __title__="FreeCAD IFC importer" @@ -29,6 +29,8 @@ __author__ = "Yorik van Havre" __url__ = "http://free-cad.sourceforge.net" DEBUG = True +SCHEMA = "http://www.steptools.com/support/stdev_docs/express/ifc2x3/ifc2x3_tc1.exp" +SKIP = ["IfcOpeningElement"] pyopen = open # because we'll redefine open below def open(filename): @@ -38,9 +40,10 @@ def open(filename): doc.Label = decode(docname) FreeCAD.ActiveDocument = doc p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Arch") - p = p.GetBool("useIfcOpenShell") - if p: - readOpenShell(filename) + op = p.GetBool("useIfcOpenShell") + ip = p.GetBool("useIfcParser") + if op: + readOpenShell(filename,useParser=ip) else: read(filename) return doc @@ -59,15 +62,14 @@ def decode(name): def getSchema(): "retrieves the express schema" - default = "IFC2X3_TC1.exp" - p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Arch") - p = p.GetString("IfcSchema") - if p: - if os.path.exists(p): - return p - p = os.path.join(FreeCAD.ConfigGet("UserAppData"),default) + p = None + p = os.path.join(FreeCAD.ConfigGet("UserAppData"),SCHEMA.split('/')[-1]) if os.path.exists(p): return p + import ArchCommands + p = ArchCommands.download(SCHEMA) + if p: + return p return None def getIfcOpenShell(): @@ -81,8 +83,12 @@ def getIfcOpenShell(): else: return True -def readOpenShell(filename): +def readOpenShell(filename,useParser=False): "Parses an IFC file with IfcOpenShell" + + altifc = None + if useParser: + altifc = parseFile(filename) if getIfcOpenShell(): USESHAPES = False @@ -97,72 +103,100 @@ def readOpenShell(filename): meshdata = [] n = obj.name if not n: n = "Unnamed" - - if USESHAPES: + if obj.type in SKIP: + pass + + elif altifc and (obj.type == "IfcWallStandardCase"): + if USESHAPES: + makeWall(altifc.Entities[obj.id],shape=getShape(obj)) + else: + makeWall(altifc.Entities[obj.id]) + + elif USESHAPES: # treat as Parts - import Part - tf = tempfile.mkstemp(suffix=".brp")[1] - of = pyopen(tf,"wb") - of.write(obj.mesh.brep_data) - of.close() - sh = Part.read(tf) + sh = getShape(obj) nobj = FreeCAD.ActiveDocument.addObject("Part::Feature",n) nobj.Shape = sh - os.remove(tf) - else: - # treat as meshes - import Mesh - f = obj.mesh.faces - v = obj.mesh.verts - for i in range(0, len(f), 3): - face = [] - for j in range(3): - vi = f[i+j]*3 - face.append([v[vi],v[vi+1],v[vi+2]]) - meshdata.append(face) - newmesh = Mesh.Mesh(meshdata) + me,pl = getMesh(obj) nobj = FreeCAD.ActiveDocument.addObject("Mesh::Feature",n) - nobj.Mesh = newmesh - - # apply transformation matrix - m = obj.matrix - mat = FreeCAD.Matrix(m[0], m[3], m[6], m[9], - m[1], m[4], m[7], m[10], - m[2], m[5], m[8], m[11], - 0, 0, 0, 1) - nobj.Placement = FreeCAD.Placement(mat) + nobj.Mesh = me + nobj.Placement = pl + if not IfcImport.Next(): break IfcImport.CleanUp() return None + +def getMesh(obj): + "gets mesh and placement from an IfcOpenShell object" + import Mesh + f = obj.mesh.faces + v = obj.mesh.verts + for i in range(0, len(f), 3): + face = [] + for j in range(3): + vi = f[i+j]*3 + face.append([v[vi],v[vi+1],v[vi+2]]) + meshdata.append(face) + me = Mesh.Mesh(meshdata) + # get transformation matrix + m = obj.matrix + mat = FreeCAD.Matrix(m[0], m[3], m[6], m[9], + m[1], m[4], m[7], m[10], + m[2], m[5], m[8], m[11], + 0, 0, 0, 1) + pl = FreeCAD.Placement(mat) + return me,pl + +def getShape(obj): + "gets a shape from an IfcOpenShell object" + tf = tempfile.mkstemp(suffix=".brp")[1] + of = pyopen(tf,"wb") + of.write(obj.mesh.brep_data) + of.close() + sh = Part.read(tf) + os.remove(tf) + m = obj.matrix + mat = FreeCAD.Matrix(m[0], m[3], m[6], m[9], + m[1], m[4], m[7], m[10], + m[2], m[5], m[8], m[11], + 0, 0, 0, 1) + sh.Placement = FreeCAD.Placement(mat) + return sh def read(filename): "processes an ifc file and add its objects to the given document" t1 = time.time() + ifc = parseFile(filename) + t2 = time.time() + if DEBUG: print "Successfully loaded",ifc,"in %s s" % ((t2-t1)) + # getting walls + for w in ifc.getEnt("IFCWALLSTANDARDCASE"): + makeWall(w) + # getting floors + for f in ifc.getEnt("IFCBUILDINGSTOREY"): + makeCell(f,"Floor") + # getting buildings + for b in ifc.getEnt("IFCBUILDING"): + makeCell(b,"Building") + FreeCAD.ActiveDocument.recompute() + t3 = time.time() + if DEBUG: print "done processing",ifc,"in %s s" % ((t3-t1)) + +def parseFile(filename): + "parses an IFC file" schema=getSchema() if schema: if DEBUG: global ifc if DEBUG: print "opening",filename,"..." ifc = ifcReader.IfcDocument(filename,schema=schema,debug=DEBUG) - t2 = time.time() - if DEBUG: print "Successfully loaded",ifc,"in %s s" % ((t2-t1)) - # getting walls - for w in ifc.getEnt("IFCWALLSTANDARDCASE"): - makeWall(w) - # getting floors - for f in ifc.getEnt("IFCBUILDINGSTOREY"): - makeCell(f,"Floor") - # getting buildings - for b in ifc.getEnt("IFCBUILDING"): - makeCell(b,"Building") - FreeCAD.ActiveDocument.recompute() - t3 = time.time() - if DEBUG: print "done processing",ifc,"in %s s" % ((t3-t1)) + return ifc else: - FreeCAD.Console.PrintWarning("IFC Schema not found, IFC import disabled. See Arch Preferences to get a schema") + FreeCAD.Console.PrintWarning("IFC Schema not found, IFC import disabled.\n") + return None def makeCell(entity,mode="Cell"): "makes a cell in the freecad document" @@ -202,10 +236,16 @@ def makeCell(entity,mode="Cell"): except: if DEBUG: print "error: skipping cell",entity.id -def makeWall(entity): +def makeWall(entity,shape=None): "makes a wall in the freecad document" try: if DEBUG: print "=====> making wall",entity.id + if shape: + sh = FreeCAD.ActiveDocument.addObject("Part::Feature","WallBody") + sh.Shape = shape + wall = Arch.makeWall(sh) + if DEBUG: print "made wall object ",entity.id,":",wall + return placement = wall = wire = body = width = height = None placement = getPlacement(entity.ObjectPlacement) if DEBUG: print "got wall placement",entity.id,":",placement diff --git a/src/Mod/CMakeLists.txt b/src/Mod/CMakeLists.txt index bf02f119b9..995c104fd9 100644 --- a/src/Mod/CMakeLists.txt +++ b/src/Mod/CMakeLists.txt @@ -44,3 +44,5 @@ if(FREECAD_BUILD_SANDBOX) add_subdirectory(Sandbox) endif(FREECAD_BUILD_SANDBOX) +add_subdirectory(Surfaces) +add_subdirectory(Ship) diff --git a/src/Mod/Draft/Draft.py b/src/Mod/Draft/Draft.py index 7b03d5ebde..c7209ae7b4 100644 --- a/src/Mod/Draft/Draft.py +++ b/src/Mod/Draft/Draft.py @@ -970,6 +970,7 @@ def draftify(objectslist,makeblock=False): wire. If makeblock is True, multiple objects will be grouped in a block''' from draftlibs import fcgeo import Part + if not isinstance(objectslist,list): objectslist = [objectslist] newobjlist = [] diff --git a/src/Mod/Draft/DraftGui.py b/src/Mod/Draft/DraftGui.py index 83b3814e11..d6e2159144 100644 --- a/src/Mod/Draft/DraftGui.py +++ b/src/Mod/Draft/DraftGui.py @@ -154,6 +154,7 @@ class DraftToolBar: def __init__(self): self.tray = None self.sourceCmd = None + self.cancel = None self.taskmode = Draft.getParam("UiMode") self.paramcolor = Draft.getParam("color")>>8 self.color = QtGui.QColor(self.paramcolor) @@ -465,14 +466,14 @@ class DraftToolBar: def taskUi(self,title): if self.taskmode: self.isTaskOn = True - FreeCADGui.Control.closeDialog() + todo.delay(FreeCADGui.Control.closeDialog,None) self.baseWidget = QtGui.QWidget() self.setTitle(title) self.layout = QtGui.QVBoxLayout(self.baseWidget) self.setupToolBar(task=True) self.retranslateUi(self.baseWidget) self.panel = DraftTaskPanel(self.baseWidget) - FreeCADGui.Control.showDialog(self.panel) + todo.delay(FreeCADGui.Control.showDialog,self.panel) else: self.setTitle(title) @@ -509,7 +510,8 @@ class DraftToolBar: self.labelx.setText(translate("draft", "Center X")) self.continueCmd.show() - def pointUi(self,title=translate("draft","Point")): + def pointUi(self,title=translate("draft","Point"),cancel=None): + if cancel: self.cancel = cancel self.taskUi(title) self.xValue.setEnabled(True) self.yValue.setEnabled(True) @@ -832,7 +834,11 @@ class DraftToolBar: def finish(self): "finish button action" - self.sourceCmd.finish(False) + if self.sourceCmd: + self.sourceCmd.finish(False) + if self.cancel: + self.cancel() + self.cancel = None def closeLine(self): "close button action" diff --git a/src/Mod/Draft/DraftSnap.py b/src/Mod/Draft/DraftSnap.py index 337c468e41..3469772fde 100644 --- a/src/Mod/Draft/DraftSnap.py +++ b/src/Mod/Draft/DraftSnap.py @@ -430,13 +430,16 @@ class Snapper: # get the intersection points pt = fcgeo.findIntersection(tmpEdge1,tmpEdge2,True,True) if pt: - return [pt[0],'ortho',pt[0]] + return [pt[0],'ortho',pt[0]] if eline: - tmpEdge2 = Part.Line(self.extLine.p1(),self.extLine.p2()).toShape() - # get the intersection points - pt = fcgeo.findIntersection(eline,tmpEdge2,True,True) - if pt: + try: + tmpEdge2 = Part.Line(self.extLine.p1(),self.extLine.p2()).toShape() + # get the intersection points + pt = fcgeo.findIntersection(eline,tmpEdge2,True,True) + if pt: return [pt[0],'ortho',pt[0]] + except: + return None return None def snapToElines(self,e1,e2): @@ -613,15 +616,23 @@ class Snapper: if self.constrainLine: self.constrainLine.off() - def getPoint(self,last=None,callback=None): - """getPoint([last],[callback]) : gets a 3D point from the screen. You can provide an existing point, - in that case additional snap options and a tracker are available. You can also passa function as - callback, which will get called with the resulting point as argument, when a point is clicked: + def getPoint(self,last=None,callback=None,movecallback=None): + + """getPoint([last],[callback],[movecallback]) : gets a 3D point from the screen. You + can provide an existing point, in that case additional snap options and a tracker + are available. You can also pass a function as callback, which will get called + with the resulting point as argument, when a point is clicked, and optionally + another callback which gets called when the mouse is moved. + + If the operation gets cancelled (the user pressed Escape), no point is returned. + + Example: def cb(point): - print "got a 3D point: ",point - FreeCADGui.Snapper.getPoint(callback=cb) - """ + if point: + print "got a 3D point: ",point + FreeCADGui.Snapper.getPoint(callback=cb)""" + self.pt = None self.ui = FreeCADGui.draftToolBar self.view = FreeCADGui.ActiveDocument.ActiveView @@ -642,6 +653,8 @@ class Snapper: self.ui.displayPoint(self.pt,last,plane=FreeCAD.DraftWorkingPlane,mask=FreeCADGui.Snapper.affinity) if self.trackLine: self.trackLine.p2(self.pt) + if movecallback: + movecallback(self.pt) def click(event_cb): event = event_cb.getEvent() @@ -656,10 +669,21 @@ class Snapper: callback(self.pt) self.pt = None + def cancel(): + self.view.removeEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(),self.callbackClick) + self.view.removeEventCallbackPivy(coin.SoLocation2Event.getClassTypeId(),self.callbackMove) + FreeCADGui.Snapper.off() + self.ui.offUi() + if self.trackLine: + self.trackLine.off() + if callback: + callback(None) + # adding 2 callback functions - self.ui.pointUi() + self.ui.pointUi(cancel=cancel) self.callbackClick = self.view.addEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(),click) self.callbackMove = self.view.addEventCallbackPivy(coin.SoLocation2Event.getClassTypeId(),move) - + + if not hasattr(FreeCADGui,"Snapper"): FreeCADGui.Snapper = Snapper() diff --git a/src/Mod/Draft/DraftTrackers.py b/src/Mod/Draft/DraftTrackers.py index c071f6ef17..0fc5b3986a 100644 --- a/src/Mod/Draft/DraftTrackers.py +++ b/src/Mod/Draft/DraftTrackers.py @@ -623,3 +623,66 @@ class gridTracker(Tracker): rot = FreeCAD.Rotation() rot.Q = self.trans.rotation.getValue().getValue() return rot.multVec(Vector(pu,pv,0)) + +class boxTracker(Tracker): + "A box tracker, can be based on a line object" + def __init__(self,line=None,width=0.1,height=1): + self.trans = coin.SoTransform() + m = coin.SoMaterial() + m.transparency.setValue(0.8) + m.diffuseColor.setValue([0.4,0.4,0.6]) + self.cube = coin.SoCube() + self.cube.height.setValue(width) + self.cube.depth.setValue(height) + self.baseline = None + if line: + self.baseline = line + self.update() + Tracker.__init__(self,children=[self.trans,m,self.cube]) + + def update(self,line=None,normal=None): + import WorkingPlane + from draftlibs import fcgeo + if not normal: + normal = FreeCAD.DraftWorkingPlane.axis + if line: + if isinstance(line,list): + bp = line[0] + lvec = line[1].sub(line[0]) + else: + lvec = fcgeo.vec(line.Shape.Edges[0]) + bp = line.Shape.Edges[0].Vertexes[0].Point + elif self.baseline: + lvec = fcgeo.vec(self.baseline.Shape.Edges[0]) + bp = self.baseline.Shape.Edges[0].Vertexes[0].Point + else: + return + right = lvec.cross(normal) + self.cube.width.setValue(lvec.Length) + p = WorkingPlane.getPlacementFromPoints([bp,bp.add(lvec),bp.add(right)]) + self.trans.rotation.setValue(p.Rotation.Q) + bp = bp.add(fcvec.scale(lvec,0.5)) + bp = bp.add(fcvec.scaleTo(normal,self.cube.depth.getValue()/2)) + self.pos(bp) + + def pos(self,p): + self.trans.translation.setValue(fcvec.tup(p)) + + def width(self,w=None): + if w: + self.cube.height.setValue(w) + else: + return self.cube.height.getValue() + + def length(self,l=None): + if l: + self.cube.width.setValue(l) + else: + return self.cube.width.getValue() + + def heigth(self,h=None): + if h: + self.cube.depth.setValue(h) + self.update() + else: + return self.cube.depth.getValue() diff --git a/src/Mod/Makefile.am b/src/Mod/Makefile.am index 0da856dec7..7fe7c39734 100644 --- a/src/Mod/Makefile.am +++ b/src/Mod/Makefile.am @@ -1,5 +1,5 @@ #SUBDIRS=Part Mesh Points Raytracing Image Drawing Complete Draft Test TemplatePyMod -SUBDIRS=Points Complete Draft Test TemplatePyMod Web Start Idf Arch +SUBDIRS=Points Complete Draft Test TemplatePyMod Web Start Idf Arch Surfaces Ship #if HAVE_OPENCV SUBDIRS += Image diff --git a/src/Mod/Ship/CMakeLists.txt b/src/Mod/Ship/CMakeLists.txt new file mode 100644 index 0000000000..9f86e5e4af --- /dev/null +++ b/src/Mod/Ship/CMakeLists.txt @@ -0,0 +1,124 @@ +SET(ShipMain_SRCS + InitGui.py + ShipGui.py + Instance.py +) +SOURCE_GROUP("" FILES ${ShipMain_SRCS}) + +SET(ShipIcons_SRCS + Icons/AreaCurveIco.png + Icons/AreaCurveIco.xcf + Icons/AreaCurveIco.xpm + Icons/DataIco.png + Icons/DataIco.xcf + Icons/DataIco.xpm + Icons/DiscretizeIco.png + Icons/DiscretizeIco.xcf + Icons/DiscretizeIco.xpm + Icons/HydrostaticsIco.png + Icons/HydrostaticsIco.xcf + Icons/HydrostaticsIco.xpm + Icons/Ico.png + Icons/Ico.xcf + Icons/Ico.xpm + Icons/OutlineDrawIco.png + Icons/OutlineDrawIco.xcf + Icons/OutlineDrawIco.xpm + Icons/ReparametrizeIco.png + Icons/ReparametrizeIco.xcf + Icons/ReparametrizeIco.xpm + Icons/Ship.xcf + Icons/Ship.xpm +) +SOURCE_GROUP("shipicons" FILES ${ShipIcons_SRCS}) + +SET(ShipCreateShip_SRCS + shipCreateShip/__init__.py + shipCreateShip/Preview.py + shipCreateShip/TaskPanel.py + shipCreateShip/TaskPanel.ui +) +SOURCE_GROUP("shipcreateship" FILES ${ShipCreateShip_SRCS}) + +SET(ShipOutlineDraw_SRCS + shipOutlineDraw/__init__.py + shipOutlineDraw/Plot.py + shipOutlineDraw/Preview.py + shipOutlineDraw/TaskPanel.py + shipOutlineDraw/TaskPanel.ui +) +SOURCE_GROUP("shipoutlinedraw" FILES ${ShipOutlineDraw_SRCS}) + +SET(ShipAreasCurve_SRCS + shipAreasCurve/__init__.py + shipAreasCurve/Preview.py + shipAreasCurve/TaskPanel.py + shipAreasCurve/TaskPanel.ui +) +SOURCE_GROUP("shipareascurve" FILES ${ShipAreasCurve_SRCS}) + +SET(ShipHydrostatics_SRCS + shipHydrostatics/__init__.py + shipHydrostatics/Tools.py +) +SOURCE_GROUP("shiphydrostatics" FILES ${ShipHydrostatics_SRCS}) + +SET(ShipUtils_SRCS + shipUtils/__init__.py + shipUtils/Math.py + shipUtils/Paths.py + shipUtils/Translator.py +) +SOURCE_GROUP("shiputils" FILES ${ShipUtils_SRCS}) + +SET(all_files ${ShipMain_SRCS} ${ShipIcons_SRCS} ${ShipCreateShip_SRCS} ${ShipOutlineDraw_SRCS} ${ShipAreasCurve_SRCS} ${ShipHydrostatics_SRCS} ${ShipUtils_SRCS}) + +ADD_CUSTOM_TARGET(Ship ALL + SOURCES ${all_files} +) + +fc_copy_sources("Mod/Ship" "Ship" ${all_files}) + +INSTALL( + FILES + ${ShipIcons_SRCS} + DESTINATION + Mod/Ship/Icons +) +INSTALL( + FILES + ${ShipCreateShip_SRCS} + DESTINATION + Mod/Ship/shipCreateShip +) +INSTALL( + FILES + ${ShipOutlineDraw_SRCS} + DESTINATION + Mod/Ship/shipOutlineDraw +) +INSTALL( + FILES + ${ShipAreasCurve_SRCS} + DESTINATION + Mod/Ship/shipAreasCurve +) +INSTALL( + FILES + ${ShipHydrostatics_SRCS} + DESTINATION + Mod/Ship/shipHydrostatics +) +INSTALL( + FILES + ${ShipUtils_SRCS} + DESTINATION + Mod/Ship/shipUtils +) +INSTALL( + FILES + ${ShipMain_SRCS} + DESTINATION + Mod/Ship +) + diff --git a/src/Mod/Ship/Icons/AreaCurveIco.png b/src/Mod/Ship/Icons/AreaCurveIco.png new file mode 100644 index 0000000000..88c220e4e8 Binary files /dev/null and b/src/Mod/Ship/Icons/AreaCurveIco.png differ diff --git a/src/Mod/Ship/Icons/AreaCurveIco.xcf b/src/Mod/Ship/Icons/AreaCurveIco.xcf new file mode 100644 index 0000000000..4a4460fb1b Binary files /dev/null and b/src/Mod/Ship/Icons/AreaCurveIco.xcf differ diff --git a/src/Mod/Ship/Icons/AreaCurveIco.xpm b/src/Mod/Ship/Icons/AreaCurveIco.xpm new file mode 100644 index 0000000000..f81e661554 --- /dev/null +++ b/src/Mod/Ship/Icons/AreaCurveIco.xpm @@ -0,0 +1,841 @@ +/* XPM */ +static char * AreaCurveIco_xpm[] = { +"128 128 710 2", +" c None", +". c #B1B1B1", +"+ c #000001", +"@ c #000000", +"# c #010101", +"$ c #020202", +"% c #B0B0B0", +"& c #030303", +"* c #B1B1B0", +"= c #AFAFAF", +"- c #040404", +"; c #AFB0B0", +"> c #B0AFAF", +", c #B0AFB0", +"' c #AEAFAE", +") c #050505", +"! c #AFAEAE", +"~ c #AEAEAE", +"{ c #060606", +"] c #ADACAC", +"^ c #070707", +"/ c #070706", +"( c #ADADAD", +"_ c #ACACAC", +": c #080708", +"< c #ACADAD", +"[ c #ACABAB", +"} c #090909", +"| c #AAABAA", +"1 c #09090A", +"2 c #090A0A", +"3 c #AAABAB", +"4 c #A9A9AA", +"5 c #0A0A0A", +"6 c #0B0A0B", +"7 c #AAAAAA", +"8 c #A9A9A9", +"9 c #0C0C0B", +"0 c #0C0B0B", +"a c #A8A8A8", +"b c #0C0D0D", +"c c #0D0D0C", +"d c #A7A8A7", +"e c #0E0E0D", +"f c #0D0D0E", +"g c #A7A8A8", +"h c #A6A6A7", +"i c #0E0F0F", +"j c #A6A6A5", +"k c #100F0F", +"l c #0F0F0F", +"m c #A6A6A6", +"n c #A5A5A5", +"o c #111010", +"p c #111110", +"q c #A6A5A5", +"r c #A4A4A4", +"s c #111111", +"t c #A4A5A4", +"u c #A3A3A3", +"v c #131212", +"w c #A2A3A3", +"x c #131314", +"y c #131313", +"z c #A3A2A3", +"A c #A2A2A2", +"B c #141414", +"C c #A1A1A1", +"D c #151515", +"E c #A1A1A2", +"F c #A0A0A0", +"G c #161616", +"H c #A1A0A0", +"I c #9F9F9F", +"J c #181617", +"K c #171717", +"L c #181818", +"M c #9E9E9D", +"N c #191919", +"O c #191819", +"P c #9E9E9E", +"Q c #9D9D9D", +"R c #1A191A", +"S c #1A1A1A", +"T c #9D9C9C", +"U c #1B1B1A", +"V c #1B1B1B", +"W c #9C9C9C", +"X c #9B9C9B", +"Y c #1C1C1C", +"Z c #9B9B9B", +"` c #9A9A9A", +" . c #1C1D1D", +".. c #1D1C1D", +"+. c #9A9B9B", +"@. c #1D1D1D", +"#. c #1E1D1E", +"$. c #989998", +"%. c #1F1E1F", +"&. c #1E1E1F", +"*. c #999999", +"=. c #989898", +"-. c #201F1F", +";. c #20201F", +">. c #999898", +",. c #101010", +"'. c #3B3B3B", +"). c #404040", +"!. c #403F40", +"~. c #3F403F", +"{. c #282828", +"]. c #989797", +"^. c #212121", +"/. c #212020", +"(. c #979797", +"_. c #696969", +":. c #C2C1C1", +"<. c #EFF0EF", +"[. c #F0F0F0", +"}. c #F0EFEF", +"|. c #F0F0EF", +"1. c #EFEFEF", +"2. c #EEEFEF", +"3. c #E2E2E2", +"4. c #A09FA0", +"5. c #585858", +"6. c #969696", +"7. c #212122", +"8. c #212221", +"9. c #969797", +"0. c #121212", +"a. c #939292", +"b. c #ECECEC", +"c. c #F1F0F1", +"d. c #EEEEEE", +"e. c #EEEDEE", +"f. c #EEEDED", +"g. c #E5E5E5", +"h. c #8D8D8D", +"i. c #959695", +"j. c #222323", +"k. c #222322", +"l. c #2F2F2F", +"m. c #D6D6D6", +"n. c #F1F1F0", +"o. c #F1F0F0", +"p. c #EFF0F0", +"q. c #EDEEED", +"r. c #EDEDED", +"s. c #ECEDED", +"t. c #ECEDEC", +"u. c #D8D8D8", +"v. c #4D4D4D", +"w. c #959595", +"x. c #242323", +"y. c #242324", +"z. c #585859", +"A. c #E8E8E8", +"B. c #F0F1F1", +"C. c #EEEEEF", +"D. c #EDEEEE", +"E. c #EDEDEC", +"F. c #EBEBEC", +"G. c #EBEBEB", +"H. c #949494", +"I. c #252424", +"J. c #606060", +"K. c #F1F1F1", +"L. c #F0F0F1", +"M. c #EFEEEE", +"N. c #EDEDEE", +"O. c #EDECED", +"P. c #ECECED", +"Q. c #ECEBEB", +"R. c #ECEBEC", +"S. c #EBECEB", +"T. c #EAEBEA", +"U. c #D4D4D4", +"V. c #323232", +"W. c #949393", +"X. c #262525", +"Y. c #252525", +"Z. c #949493", +"`. c #3D3D3D", +" + c #EBEBEA", +".+ c #EAEAEA", +"++ c #EAEAE9", +"@+ c #D7D7D7", +"#+ c #292929", +"$+ c #939392", +"%+ c #272626", +"&+ c #262626", +"*+ c #939393", +"=+ c #D9D9D9", +"-+ c #EEEEED", +";+ c #EDECEC", +">+ c #EBEAEB", +",+ c #E9E9E9", +"'+ c #D2D2D1", +")+ c #222222", +"!+ c #929292", +"~+ c #272727", +"{+ c #282727", +"]+ c #F0F1F0", +"^+ c #E9E8E9", +"/+ c #E8E9E8", +"(+ c #C2C1C2", +"_+ c #919191", +":+ c #919291", +"<+ c #606061", +"[+ c #EFEFF0", +"}+ c #EFEEEF", +"|+ c #EFEFEE", +"1+ c #EAEBEB", +"2+ c #EBEAEA", +"3+ c #E9EAE9", +"4+ c #EAE9E9", +"5+ c #E8E9E9", +"6+ c #E8E7E7", +"7+ c #E7E8E8", +"8+ c #8F8F8F", +"9+ c #909090", +"0+ c #2A2929", +"a+ c #919090", +"b+ c #0C0C0C", +"c+ c #DBDBDB", +"d+ c #E9E9EA", +"e+ c #E9E8E8", +"f+ c #E7E7E7", +"g+ c #E7E6E6", +"h+ c #474747", +"i+ c #2B2A2A", +"j+ c #747475", +"k+ c #F0EFF0", +"l+ c #E9E9E8", +"m+ c #E8E8E9", +"n+ c #E7E6E7", +"o+ c #E6E6E6", +"p+ c #D3D3D3", +"q+ c #8F8E8E", +"r+ c #2B2B2B", +"s+ c #E4E4E4", +"t+ c #E9EAEA", +"u+ c #E7E7E8", +"v+ c #E5E5E6", +"w+ c #8D8E8E", +"x+ c #2D2C2C", +"y+ c #2C2C2C", +"z+ c #8E8E8E", +"A+ c #7F807F", +"B+ c #E6E7E7", +"C+ c #E7E7E6", +"D+ c #E6E7E6", +"E+ c #E5E6E5", +"F+ c #E6E6E5", +"G+ c #E4E5E4", +"H+ c #6D6D6D", +"I+ c #8D8C8D", +"J+ c #2D2C2D", +"K+ c #2D2D2D", +"L+ c #E8E8E7", +"M+ c #E6E5E5", +"N+ c #E5E4E4", +"O+ c #DDDEDE", +"P+ c #8C8C8C", +"Q+ c #2F2E2E", +"R+ c #2E2D2E", +"S+ c #8D8C8C", +"T+ c #757575", +"U+ c #EAEAEB", +"V+ c #E8E7E8", +"W+ c #E6E6E7", +"X+ c #E5E5E4", +"Y+ c #E3E4E4", +"Z+ c #E3E3E4", +"`+ c #8C8B8B", +" @ c #8B8B8B", +".@ c #D1D1D1", +"+@ c #E4E3E4", +"@@ c #E3E3E3", +"#@ c #E3E2E3", +"$@ c #444444", +"%@ c #8B8B8A", +"&@ c #312F30", +"*@ c #30302F", +"=@ c #373737", +"-@ c #ECECEB", +";@ c #E5E6E6", +">@ c #E6E5E6", +",@ c #E5E4E5", +"'@ c #E4E3E3", +")@ c #BFBFBE", +"!@ c #8A8A8A", +"~@ c #313130", +"{@ c #E7E8E7", +"]@ c #E1E1E1", +"^@ c #555555", +"/@ c #898989", +"(@ c #898A89", +"_@ c #D9DAD9", +":@ c #E4E4E5", +"<@ c #E3E4E3", +"[@ c #E3E3E2", +"}@ c #E1E1E2", +"|@ c #C2C3C2", +"1@ c #888888", +"2@ c #333232", +"3@ c #333332", +"4@ c #353435", +"5@ c #EBECEC", +"6@ c #E4E4E3", +"7@ c #E3E2E2", +"8@ c #E1E0E0", +"9@ c #E0E0E0", +"0@ c #545454", +"a@ c #878788", +"b@ c #343434", +"c@ c #343334", +"d@ c #7C7C7C", +"e@ c #E2E3E2", +"f@ c #E2E2E3", +"g@ c #E2E1E2", +"h@ c #E2E1E1", +"i@ c #E1E0E1", +"j@ c #E0E1E1", +"k@ c #E0E1E0", +"l@ c #C1C1C0", +"m@ c #868786", +"n@ c #353535", +"o@ c #878687", +"p@ c #C1C1C1", +"q@ c #E2E2E1", +"r@ c #E1E2E1", +"s@ c #E1E1E0", +"t@ c #DFE0E0", +"u@ c #DFDFE0", +"v@ c #DFDFDF", +"w@ c #4A4A4A", +"x@ c #858686", +"y@ c #353635", +"z@ c #363535", +"A@ c #868686", +"B@ c #EAE9EA", +"C@ c #E2E3E3", +"D@ c #E1E2E2", +"E@ c #DFDEDF", +"F@ c #B4B4B4", +"G@ c #858585", +"H@ c #373636", +"I@ c #363736", +"J@ c #858586", +"K@ c #646464", +"L@ c #DFE0DF", +"M@ c #DEDFDF", +"N@ c #DFDFDE", +"O@ c #DEDEDE", +"P@ c #454545", +"Q@ c #848484", +"R@ c #383838", +"S@ c #858485", +"T@ c #DEDEDF", +"U@ c #DDDDDE", +"V@ c #DDDEDD", +"W@ c #B2B2B2", +"X@ c #838483", +"Y@ c #383938", +"Z@ c #393839", +"`@ c #848384", +" # c #0B0B0B", +".# c #E4E5E5", +"+# c #E0DFDF", +"@# c #DEDEDD", +"## c #DDDDDD", +"$# c #DCDCDC", +"%# c #828282", +"&# c #3A393A", +"*# c #3A3939", +"=# c #838283", +"-# c #464646", +";# c #DDDDDC", +"># c #3B3B3A", +",# c #3A3B3B", +"'# c #818181", +")# c #E0E0E1", +"!# c #DFDEDE", +"~# c #DEDDDD", +"{# c #DDDCDD", +"]# c #DCDDDC", +"^# c #DADADB", +"/# c #202020", +"(# c #3C3B3B", +"_# c #828181", +":# c #BCBCBC", +"<# c #E0DFE0", +"[# c #DEDFDE", +"}# c #DCDCDD", +"|# c #DBDCDC", +"1# c #DBDCDB", +"2# c #7A7A7A", +"3# c #808080", +"4# c #3C3C3C", +"5# c #3C3C3D", +"6# c #808180", +"7# c #DEDDDE", +"8# c #DBDBDC", +"9# c #DADBDB", +"0# c #CCCCCC", +"a# c #7F8080", +"b# c #3E3D3D", +"c# c #807F80", +"d# c #424241", +"e# c #DCDDDD", +"f# c #DDDCDC", +"g# c #DADADA", +"h# c #DADBDA", +"i# c #575757", +"j# c #7E7E7E", +"k# c #3F3E3E", +"l# c #3E3E3D", +"m# c #7F7F7F", +"n# c #DCDCDB", +"o# c #DBDBDA", +"p# c #DADAD9", +"q# c #B5B5B5", +"r# c #7E7D7E", +"s# c #3F3F3F", +"t# c #D9D9DA", +"u# c #D8D8D9", +"v# c #7D7D7D", +"w# c #414040", +"x# c #7D7D7E", +"y# c #DAD9DA", +"z# c #D8D9D9", +"A# c #D9D8D8", +"B# c #D9D8D9", +"C# c #7D7C7D", +"D# c #414141", +"E# c #3E3D3E", +"F# c #DAD9D9", +"G# c #D8D9D8", +"H# c #D8D7D8", +"I# c #D2D2D2", +"J# c #7B7C7B", +"K# c #424142", +"L# c #424242", +"M# c #7B7C7C", +"N# c #767676", +"O# c #D7D8D8", +"P# c #686968", +"Q# c #7A7B7B", +"R# c #444243", +"S# c #444342", +"T# c #AEADAD", +"U# c #DBDADA", +"V# c #D8D7D7", +"W# c #D6D7D6", +"X# c #C1C0C0", +"Y# c #454344", +"Z# c #E0E0DF", +"`# c #D6D7D7", +" $ c #797979", +".$ c #464545", +"+$ c #454544", +"@$ c #7A7979", +"#$ c #D9DADA", +"$$ c #D7D8D7", +"%$ c #D7D7D8", +"&$ c #D6D6D7", +"*$ c #D5D5D6", +"=$ c #787878", +"-$ c #474546", +";$ c #787879", +">$ c #6C6C6C", +",$ c #D7D7D6", +"'$ c #D5D5D5", +")$ c #777878", +"!$ c #474646", +"~$ c #DCDBDB", +"{$ c #D9D9D8", +"]$ c #D7D6D7", +"^$ c #D6D6D5", +"/$ c #D5D4D5", +"($ c #737373", +"_$ c #777777", +":$ c #484748", +"<$ c #494748", +"[$ c #D5D6D5", +"}$ c #D4D4D5", +"|$ c #C4C4C4", +"1$ c #494948", +"2$ c #494848", +"3$ c #2A2A2A", +"4$ c #D5D5D4", +"5$ c #D4D5D4", +"6$ c #D3D4D4", +"7$ c #D3D4D3", +"8$ c #494949", +"9$ c #4A4949", +"0$ c #4A494A", +"a$ c #767575", +"b$ c #636263", +"c$ c #D7D6D6", +"d$ c #D6D5D6", +"e$ c #D4D4D3", +"f$ c #747575", +"g$ c #4B4A4B", +"h$ c #4B4B4B", +"i$ c #D5D6D6", +"j$ c #D4D5D5", +"k$ c #D3D2D2", +"l$ c #747473", +"m$ c #4C4B4B", +"n$ c #4C4B4C", +"o$ c #747374", +"p$ c #D1D1D2", +"q$ c #878787", +"r$ c #727273", +"s$ c #4D4C4D", +"t$ c #4D4C4C", +"u$ c #434343", +"v$ c #D8D8D7", +"w$ c #D4D3D4", +"x$ c #D2D3D2", +"y$ c #D2D1D2", +"z$ c #171716", +"A$ c #717272", +"B$ c #4E4D4D", +"C$ c #727272", +"D$ c #D3D3D4", +"E$ c #D1D1D0", +"F$ c #D0D1D1", +"G$ c #676767", +"H$ c #717171", +"I$ c #4F4E4E", +"J$ c #4E4E4E", +"K$ c #727172", +"L$ c #C6C6C6", +"M$ c #D5D4D4", +"N$ c #D3D2D3", +"O$ c #D2D2D3", +"P$ c #D1D2D2", +"Q$ c #D0D0D0", +"R$ c #707071", +"S$ c #504F4F", +"T$ c #504F50", +"U$ c #707070", +"V$ c #D2D3D3", +"W$ c #D2D1D1", +"X$ c #D1D0D0", +"Y$ c #D0CFD0", +"Z$ c #CFCFCF", +"`$ c #505151", +" % c #706F6F", +".% c #515050", +"+% c #6F6F70", +"@% c #616161", +"#% c #D6D5D5", +"$% c #D3D3D2", +"%% c #D1D0D1", +"&% c #D0D0D1", +"*% c #CFD0D0", +"=% c #ABABAB", +"-% c #6F6F6E", +";% c #525151", +">% c #515151", +",% c #6F6F6F", +"'% c #A1A1A0", +")% c #DCDBDC", +"!% c #D4D3D3", +"~% c #CFCFD0", +"{% c #D0D0CF", +"]% c #CECFCF", +"^% c #CECECE", +"/% c #6E6E6E", +"(% c #525252", +"_% c #535252", +":% c #CFCECE", +"<% c #CDCECE", +"[% c #535353", +"}% c #6D6E6D", +"|% c #595858", +"1% c #D0CFCF", +"2% c #CFCECF", +"3% c #CECECF", +"4% c #CECDCD", +"5% c #CDCDCD", +"6% c #CDCCCC", +"7% c #555454", +"8% c #6C6C6D", +"9% c #D1D2D1", +"0% c #CDCDCE", +"a% c #6B6B6B", +"b% c #565455", +"c% c #565555", +"d% c #6B6C6C", +"e% c #CFCFCE", +"f% c #CECFCE", +"g% c #CECECD", +"h% c #CDCCCD", +"i% c #CCCCCD", +"j% c #CBCBCB", +"k% c #303030", +"l% c #6B6A6A", +"m% c #565656", +"n% c #575656", +"o% c #D0D1D0", +"p% c #CFD0CF", +"q% c #CDCECD", +"r% c #CCCCCB", +"s% c #CBCCCB", +"t% c #A9A8A9", +"u% c #6A696A", +"v% c #575756", +"w% c #6A6A6A", +"x% c #CECDCE", +"y% c #CCCBCC", +"z% c #CBCBCC", +"A% c #CACBCA", +"B% c #CBCACA", +"C% c #585758", +"D% c #767576", +"E% c #DBDADB", +"F% c #CDCDCC", +"G% c #CACACA", +"H% c #B9BABA", +"I% c #0D0D0D", +"J% c #686868", +"K% c #595959", +"L% c #595958", +"M% c #686869", +"N% c #CBCCCC", +"O% c #CBCBCA", +"P% c #C9CAC9", +"Q% c #C9C9CA", +"R% c #737372", +"S% c #5B5A59", +"T% c #5B5A5A", +"U% c #686767", +"V% c #CCCDCC", +"W% c #CBCACB", +"X% c #CAC9C9", +"Y% c #C9C9C9", +"Z% c #C6C5C5", +"`% c #666767", +" & c #5B5B5A", +".& c #5B5B5B", +"+& c #1E1E1E", +"@& c #CCCBCB", +"#& c #C8C8C9", +"$& c #C8C8C8", +"%& c #656566", +"&& c #5C5C5C", +"*& c #5C5B5C", +"=& c #666766", +"-& c #B4B3B3", +";& c #C9CACA", +">& c #C9C9C8", +",& c #C7C8C7", +"'& c #C8C7C7", +")& c #656565", +"!& c #5D5C5D", +"~& c #5D5D5C", +"{& c #656665", +"]& c #707171", +"^& c #CCCDCD", +"/& c #C9C8C8", +"(& c #C7C7C8", +"_& c #C8C7C8", +":& c #C7C7C7", +"<& c #C4C4C5", +"[& c #5E5D5D", +"}& c #656464", +"|& c #3E3E3E", +"1& c #CACBCB", +"2& c #CAC9CA", +"3& c #B4B4B3", +"4& c #646363", +"5& c #5F5E5F", +"6& c #5F5E5E", +"7& c #636364", +"8& c #3E3F3F", +"9& c #C9C8C9", +"0& c #C7C8C8", +"a& c #C6C5C6", +"b& c #C5C6C5", +"c& c #BDBDBD", +"d& c #3B3C3C", +"e& c #636363", +"f& c #605F60", +"g& c #605F5F", +"h& c #5A5A5A", +"i& c #C6C6C7", +"j& c #C5C5C5", +"k& c #5D5D5D", +"l& c #5E5E5E", +"m& c #5F5F5E", +"n& c #626261", +"o& c #5C5D5C", +"p& c #666666", +"q& c #666565", +"r& c #656465", +"s& c #636262", +"t& c #626161", +"u& c #616060", +"v& c #616160", +"w& c #5C5D5D", +"x& c #5F5F5F", +"y& c #5F6060", +"z& c #606160", +"A& c #626262", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" . . ", +" . . ", +" . . . . ", +" . + @ . ", +" . . # # . . ", +" . $ $ $ $ . ", +" % % & & & & * * ", +" = = = - - ; > , ", +" ' ) ) ! ", +" ~ { { ~ ", +" ] ^ / ( ", +" _ : ^ < ", +" [ } } _ ", +" | 1 2 3 ", +" 4 5 6 7 ", +" 8 9 0 4 ", +" a b c a ", +" d e f g ", +" h i i h ", +" j k l m ", +" n o p q ", +" r s s t ", +" u v v u ", +" w x y z ", +" A B B A ", +" C D D E ", +" F G G H ", +" I J K F ", +" I L L I ", +" M N O P ", +" Q R S Q ", +" T U V W ", +" X Y Y Z ", +" ` ...+. ", +" ` @.#.` ", +" $.%.&.*. ", +" =.-.;.>. @ ,.'.).!.~.{.- @ ", +" ].^./.(. @ D _.:.<.[.}.|.1.2.3.4.5.s @ ", +" 6.7.8.9. 0.a.b.c.[.[.[.1.1.2.d.d.e.f.g.h.B @ ", +" i.j.k.6. @ l.m.n.o.[.}.p.<.1.d.d.e.q.r.s.t.b.u.v.@ ", +" w.x.y.i. @ z.A.n.B.[.[.1.1.C.2.d.d.D.r.E.b.b.b.F.G.Z y ", +" H.I.I.H. @ J.K.K.L.|.1.1.1.C.M.D.q.N.r.O.P.Q.R.S.G.G.T.U.V. ", +" W.X.Y.Z. `.e.o.[.[.p.}.1.d.C.D.r.N.r.E.P.b.Q.F. + +.+.+++@+#+ ", +" $+%+&+*+ D =+L.[.<.1.1.1.C.d.-+r.r.;+;+b.F.G.Q.>+ +.+.+,+,+,+'+)+ ", +" !+~+{+!+ $ * ]+[.<.<.1.M.C.d.N.r.r.r.b.b.F.G.G.>+.+.+++,+,+^+/+A.(+} ", +" _+{.{.:+ @ <+L.[.[.[+}+|+d.d.r.r.r.O.P.b.S.G.T.1+2+++3+4+,+5+A.A.6+7+8+@ ", +" 9+#+0+a+ b+c+|.<.[+|+M.d.-+f.f.r.P.b.R.G.G.G.1+.+.+d+,+,+e+A.A.A.f+g+g+h+@ ", +" 8+i+i+9+ @ j+k+<.1.M.|+d.q.r.r.;+P.b.b.S.G.>+.+.+.+4+,+l+m+A.A.6+f+n+g+o+p+K ", +" q+r+r+8+ B s+1.1.M.d.d.-+q.r.P.P.b.Q.b.G.2+2+.+t+,+,+5+/+A.u+f+f+n+o+o+v+g.~ & ", +" w+x+y+z+ @ A+1.1.1.d.d.N.f.r.O.;+b.Q.Q.G..+.+.+,+,+e+e+A.A.A.f+B+C+D+o+E+F+g.G+H+@ ", +" I+J+K+h. y 3.2.1.d.D.e.r.E.r.b.b.F.G. + +.+.+t+d+,+5+A.L+L+6+D+o+g+M+v+g.g.N+s+O+~+ ", +" P+Q+R+S+ T+C.C.d.e.r.r.E.r.b.Q.Q.G.U+2+.+4+d+,+e+A.A.V+f+f+f+W+o+F+v+g.g.X+s+Y+Z+r @ ", +" `+l.l. @ # .@|+d.d.r.r.P.b.b.F.Q.G..+.+.+++t+5+,+A.A.f+f+f+f+o+o+E+v+g.X+G++@@@Y+@@#@$@ ", +" %@&@*@ @ =@2.D.D.r.O.O.t.R.-@G.G.2+T.4+,+,+l+A.m+A.6+6+f+W+g+;@>@g.,@X+s+Y+Y+'@@@3.3.)@) ", +" !@~@~@!@ @ @f.-+r.r.;+b.Q.S.G.G. +.+.+3+,+,+5+A.{@f+f+W+n+o+F+E+g.,@s+N+s++@@@@@#@3.3.]@^@ ", +" /@V.V.(@ & _@d.r.E.b.b.S.Q.G.1+T..+3+d+,+,+,+A.A.f+f+B+D+o+v+g.g.g.:@s+Z+<@@@[@3.3.}@]@]@|@& ", +" 1@2@3@1@ 4@q.r.P.t.-@5@-@G.1+.+t+.+d+,+5+A.A.f+f+f+W+B+o+o+g.g.X+X+s+6@<@@@7@3.3.}@]@]@8@9@0@ ", +" a@b@c@a@ @ d@r.P.t.b.G.G. +>+.+t+d+,+,+^+e+A.A.f+f+g+D+;@>@g.:@G+s++@Z+@@#@e@f@g@]@h@i@j@k@9@l@& ", +" m@n@n@o@ @ p@P.b.b.G.G..+.+.+++++,+^+/+A.u+L+f+C+o+o+v+E+g.,@,@s+6@6@@@[@f@3.q@r@}@s@k@9@t@u@v@w@ ", +" x@y@z@A@ Y s.R.-@S.G.1+U+B@t+,+,+^+^+V+{@6+f+B+W+o+F+g.g.N+X+s+6@@@@@C@7@g@D@}@]@9@i@t@9@u@v@E@F@@ ", +" G@H@I@J@ K@b.R.R.2+1+U+.+++3+m+,+5+A.f+f+n+W+n+F+E+M+,@s+s+6@6@@@@@e@3.q@D@r@j@k@8@u@L@v@M@N@O@O@P@ ", +" Q@=@R@S@ @ _ R.F.G..+.+.+4+3+5+l+e+V+7+f+n+g+o+o+g.g.g.G+s+s+s+@@C@f@3.]@3.h@i@i@9@9@v@v@M@N@T@U@V@W@# ", +" X@Y@Z@`@ #s+G.G.G..+++3+,+,+e+A.u+f+f+W+o+o+;@g.g..#g.s+s+@@@@3.e@3.D@D@]@]@s@9@+#v@v@v@O@O@@#V@##$#R@ ", +" %#&#*#=# -#G.>+1+.+d+++l+l+m+A.L+f+f+n+g+o+F+g.g.g.s+s+'@@@C@f@f@3.]@]@]@]@k@9@9@v@N@T@O@O@O@U@;#;#$#(.@ ", +" %#>#,#%# @ '# +.+.+++,+5+^+A.V+6+f+f+B+W+>@M+g.g.X+s+s+Y+Z+@@@@3.r@3.]@]@s@)#u@v@v@v@T@!#O@~#@###{#]#$#^#/# ", +" '#'.(#_# @ :#.+.+d+,+^+A.A.A.V+f+f+W+o+>@v+g.g.N+s++@@@@@@@3.3.D@g@]@8@s@9@<#+#v@M@[#O@O@O@V@##}#$#$#|#1#2#@ ", +" 3#4#5#6# b+o+d+++,+l+A.A.6+f+f+C+g+o+;@v+,@:@s+s+Y+6@@@7@f@3.3.h@]@j@9@9@9@v@v@v@T@O@7#V@######$#$#8#c+9#0#} ", +" a#`.b#c# d#t+d+,+5+/+A.7+f+f+o+W+F+>@F+g.G+s+s+Y+@@@@e@e@D@h@]@]@k@9@9@9@v@v@T@O@O@U@U@e#f#{#$#1#8#9#g#h#g#i# ", +" j#k#l#m# @ d@,+^+5+A.A.u+f+D+g+o+>@v+v+X+G+s+<@Z+@@@@3.3.}@]@]@]@)#9@9@v@v@N@[#O@7#V@####$#$#n#n#c+c+o#h#p#g#q#@ ", +" r#s#s#j# @ q#,+l+A.A.f+f+f+D+o+;@E+g.G+N+s+s+@@@@@@[@3.3.h@]@]@j@9@L@<#v@v@!#O@O@U@##f#f#$#n#n#c+o#g#g#t#t#=+u#b@ ", +" v#w#).x# 5 Y+A.V+V+u+f+B+W+o+;@;@g.,@g.s+Y+Z+@@3.7@q@g@}@j@]@9@9@u@v@v@T@!#O@@#U@##e#$#$#n#|#c+h#g#g#p#y#z#A#B#z+@ ", +" C#D#w#d@ E#m+A.A.f+n+n+g+o+o+M+g.,@s+s+@@Z+@@e@C@q@]@]@s@j@9@t@v@v@[#!#O@O@O@~###e#$#$#1#c+o#g#g#g#F#F#=+z#G#H#I#G ", +" J#K#L#M# @ N#A.7+f+n+W+o+o+;@g.X+:@s++@Y+@@@@e@3.q@g@]@i@)#9@9@L@v@N@O@O@O@V@##{#e#$#|#$#c+o#9#g#g#p#=+=+G#G#u.O#@+P#@ ", +" Q#R#S#Q# @ T#6+f+f+W+o+;@v+g.:@N+s+@@<@@@C@3.3.D@r@]@]@k@9@u@L@v@N@O@O@V@U@##e#$#$#n#c+c+U#^#g#g#F#=+=+u.u.V#H#@+W#X#- ", +" 2#Y#$@2# ^ )#f+f+D+o+v+F+g.g.G+s++@Y+@@3.7@3.D@h@]@i@8@9@L@Z#v@!#T@O@O+U@##;#}#$#n#|#c+^#g#g#_@=+=+G#u.H#u.V#@+`#m.m.$@ ", +" $.$+$@$ n@f+D+o+o+F+;@g..#:@+@s+@@[@f@3.D@q@]@]@j@8@9@u@L@v@E@O@O@O@##{#;#}#$#8#1#h#o#g##$=+t#=+A#B#$$%$@+@+@+&$m.*$=.@ ", +" =$-$-#;$ >$f+o+o+g.g.g.:@s+s+<@@@f@3.3.}@]@]@j@9@9@9@t@u@v@O@O@O@####;#$#$#n#1#c+c+U#g#t#y#=+=+A#u.$$%$$$@+,$m.m.'$'$p+Y ", +" )$h+!$=$ @ n o+o+v+g..#,@s++@@@@@@@e@3.r@}@]@j@s@9@Z#Z#N@[#O@O@O@@#;###;#$#$#~$o#c+g#g#g#t#{$u.u#u.H#%$@+]$m.m.^$'$/$'$U.($@ ", +" _$:$<$_$ $ =+v+E+g.G+s+Y+Y+<@C@f@[@g@]@]@s@)#9@t@Z#v@v@E@O@O@@#####]#]#$#n#c+9#^#g#g#g#y#=+u.u#u.V#%$@+@+m.m.'$[$'$'$}$U.|${ ", +" N#1$2$N# 3$E+v+N+:@N+s+<@@@@@7@3.3.h@h@s@j@9@9@+#v@[#[#T@~#V@O+##]#f#n#1#c+c+^#g##$_@=+z#{$u.u.$$@+W#@+m.^$*$'$4$4$5$6$U.7$8$ ", +" T+9$0$a$ @ b$g.X+s+s+'@'@@@@@3.f@g@]@]@)#j@9@u@L@v@N@O@O@O@######;#]#$#~$c+U#^#g#_@=+=+{$G#u.u.@+@+@+c$m.*$d$'$/$U.U.e$6$p+p+E @ ", +" f$g$h$T+ @ n N+G+s++@Z+@@f@3.3.g@}@]@]@8@<#<#+#v@N@!#O@~#@#e#;#{#$#n#c+c+h#g#g##$F#=+{$A#u.u.O#@+@+m.m.i$^$4$j$/$U.6$p+p+p+k$I#K+ ", +" l$m$n$o$ 5 7#s+s++@@@@@[@#@3.h@]@s@]@8@t@L@v@v@T@O@O@~###e#]#$#$#n#1#9#c+g#g##$=+=+u.G#u.@+@+@+m.m.m.m.'$'$5$U.e$p+p+p+I#I#'+p$q$@ ", +" r$s$t$($ u$:@s+<@@@f@3.3.g@}@]@]@j@8@9@L@v@v@[#O@V@####;#e#$#$#|#c+c+^#g#g#y#F#G#u#u.v$%$@+W#&$m.m.d$'$/$4$U.U.w$p+k$x$I#y$.@.@0#z$ ", +" A$B$B$C$ @ '#s+@@@@#@@@3.D@D@]@]@k@9@9@v@v@v@O@O@V@V@##f#$#$#$#c+c+c+h#g##$F#z#B#u.u.u.@+@+]$m.^$m.d$'$'$/$U.6$D$p+p+k$I#I#'+.@E$F$G$@ ", +" H$I$J$K$ @ L$@@@@C@C@3.q@h@i@]@9@9@9@u@v@v@!#O@@#~#{#{#;#$#c+~$c+U#U#g#y#=+z#B#A#O#u.H#@+`#&$d$i$'$'$'$M$6$w$7$N$O$I#y$P$p$.@E$Q$Q$)@^ ", +" R$S$T$U$ /#@@@@C@3.q@}@]@k@8@9@Z#u@v@v@T@O@7#O@##{#$#$#|#c+c+c+h#g#g#F#=+=+A#u.O#$$@+@+m.m.i$*$'$j$M$U.U.w$p+V$x$I#I#I#W$.@X$X$Q$Y$Z$`$ ", +" %.%.%+% @ @%@@C@3.q@g@]@]@i@9@9@v@v@v@N@O@~#V@####}#$#~$1#c+o#U#g#g#F#=+B#u.u.$$V#@+,$,$m.#%#%'$5$5$U.D$7$p+$%x$I#I#y$.@%%&%Q$*%Y$Z$Z$=%@ ", +" -%;%>%,% @ '%7@3.q@}@]@8@s@9@9@+#v@!#T@@#@#O+##{#$#)%n#)%c+o#U##$y#p#=+B#u.u.V#v$`#&$`#m.m.[$'$5$4$U.p+!%p+N$N$'+'+W$.@F$&%Q$~%{%Z$]%]%^%=@ ", +" /%(%_%/% ,.7#r@}@]@i@i@)#9@v@v@M@T@O@O@O+##{#;#$#$#|#c+c+^#g#g#g#F#=+u.u.u.H#%$,$@+&$m.#%[$/$5$U.7$!%p+k$x$I#I#I#.@F$Q$Q$Q$Y$Z$:%Z$^%^%<%Z @ ", +" H+[%[%}% @ |%D@3.]@]@j@9@t@Z#v@v@T@N@O@7###{#;#$#~$~$c+c+9#g#y#y#=+=+u.u#H#%$@+`#`#m.m.[$'$'$5$U.U.D$p+O$$%I#p$W$.@.@Q$Q$Q$1%Z$2%3%^%^%4%5%6%~@ ", +" >$7%0@8% @ E D@]@i@]@9@9@t@v@M@O@O@U@####f#}#$#)%c+c+^#h#g#g#_@=+{$G#u.H#@+@+c$@+m.^$*$'$j$U.U.U.!%p+p+k$I#y$9%.@%%Q$Q$Q$~%Z$2%]%^%^%0%5%6%0#z+@ ", +" a%b%c%d% V ~#s@]@)#t@<#Z#v@O@O@O@U@V@##}#}#$#$#c+c+^#h#g#g#t#=+u.u.u.u.V#@+&$W#m.i$[$'$/$j$U.e$D$p+p+I#y$y$.@.@F$X${%Q$Z$e%3%f%g%0%5%6%h%i%0#j%k% ", +" l%m%n%l% @ G@]@8@)#<#9@+#M@M@!#O+@###e#;#;#$#c+c+9#^#^#g#F#=+{$G#u.u.H#%$@+c$]$d$'$'$'$j$U.6$e$p+p+N$I#I#W$.@.@o%X$Q$~%p%Z$]%e%^%q%5%5%0#6%r%s%s%t%- ", +" u%v%v%w% K #$8@9@9@t@<#E@[#O@~#@#U@e#f#]#|#|#c+c+U#g#F#y#=+=+G#u.u.@+v$@+@+&$d$'$#%'$/$U.U.!%p+p+x$I#'+9%.@E$Q$Q$Q${%Z$2%:%^%x%g%5%5%h%0#y%z%j%A%B%m%@ ", +" _.5.C%_. @ D%)#9@9@L@v@v@!#O@O+V@####;#$#|#c+c+E%g#g#p#y#=+=+u.u.u.@+@+c$&$m.d$*$'$/$U.U.U.!%$%$%V$I#P$.@.@F$Q$Q$Q$Z$Z$e%]%^%q%q%5%F%0#y%y%z%j%j%B%G%H%I% ", +" J%K%L%M% I%I#9@<#v@v@N@T@O@@#V@##f#$#)%n#c+c+^#^#g#=+p#=+{$u#u.v$@+,$W#m.i$'$^$'$j$U.U.e$p+$%O$x$I#y$p$.@&%E${%*%Z$Z$Z$^%^%g%0%5%F%0#N%0#j%O%B%G%P%P%Q%R%@ ", +" G$S%T%U% @ =$Z#u@v@v@E@O@O@O@##;#]#$#$#)%8#E%h#g#g#y#=+z#G#u.u.v$@+`#c$m.m.'$'$/$U.U.6$p+!%p+I#x$I#.@.@o%.@Q$Q$*%1%Z$3%^%^%4%5%5%i%V%0#j%j%O%W%G%G%X%Y%Y%Z%Y. ", +" `% &.&G$ +&V#<#v@N@E@O@O@####;###$#)%|#c+c+h#g#g##$=+{$A#u.$$%$@+,$m.m.i$#%'$/$5$U.!%p+p+$%p+I#y$9%.@E$Q$Q$Y$Z$Z$e%^%^%^%0%5%V%h%0#0#@&j%W%G%G%X%Q%Y%Y%#&$&(.# ", +" %&&&*&=& - -&v@v@[#[#O@O@~#####{#$#n#~$9#9#g#g#y#F#=+{$G#u.u.V#@+`#@+m.m.d$'$5$}$U.!%w$p+N$k$y$'+.@F$o%Q$*%*%Z$]%e%^%^%^%q%5%V%V%0#0#y%j%B%B%;&;&;&Y%>&$&$&,&'&K@@ ", +" )&!&~&{& @ ]&v@v@M@O@O@V@##f#e#]#$#8#1#c+^#g#g#t#=+=+G#u.O#H#V#@+W#m.m.'$'$j$4$j$e$p+p+p+p+I#P$9%p$E$X$Q$Q$Y$Z$Z$3%^%^%x%x%^&0#i%y%s%s%W%A%A%G%P%Y%Y%/&$&(&_&:&:&<&b@@ ", +" K@[&[&}& @ |&8#N@E@O@O+@#######$#$#$#1#c+g#^#g#_@=+=+z#u.O#v$@+@+]$W#d$#%'$'$M$U.e$e$p+x$N$I#P$I#9%o%&%Q$*%1%1%]%^%^%g%0%5%5%F%0#0#0#j%1&G%G%2&X%Y%Y%#&/&_&,&:&L$L$L$3&&+@ ", +" 4&5&6&7& @ 8&'$v@O@!#7#O+##]#}#$#~$~$c+c+U#g##$=+=+{$z#u.V#V#@+@+&$m.^$*$'$4$j$U.U.7$p+$%I#I#P$P$.@.@&%Q$Q$~%Z$]%:%^%5%<%5%^&V%N%s%j%j%O%G%G%2&Y%Y%9&$&$&0&:&:&:&L$L$a&b&c&d&@ = % ", +" e&f&g&e& @ h&c+N@N@O@O+####]#}#n#n#c+9#o#h#g#y#=+B#u#u.u.u.@+`#`#W#m.[$'$'$j$/$U.w$p+p+$%O$I#W$.@.@E$Q$Q$*%p%Z$Z$^%^%0%5%5%h%^&z%@&z%O%W%G%G%;&P%Y%#&$&$&0&:&:&L$i&L$j&j&j&j&p@J$@ = % . . ", +" !&k&l&m&J.J.@%n&e&4&K@)&%&`%G$J%_.u%l%a%>$H+/%-% %R$H$A$r$l$f$T+N#_$)$=$ $2#Q#J#C#v#r#j#a#3#'#%#%#X@Q@G@x@m@a@1@/@!@%@`+P+I+w+q+8+9+_+!+$+W.H.w.i.6.].=.$.` ` X T Q M I I F C A w u r n j h d a 8 4 | [ _ ] ~ ' = & $ . . . ", +" o&p&q&r&K@s&t&u&f&5&[&!&&& &S%K%5.v%m%b%7%[%(%;%.%S$I$B$s$m$g$9$1$:$h+-$.$Y#R#K#D#w#s#k#`.4#'.>#&#Y@=@H@y@n@b@2@V.~@&@l.Q+J+x+r+i+#+{.~+%+X.I.x.j.7.^.-.%.@. .Y U R N L J G D B x v s o k i e b 9 5 1 } : ^ { ) - & $ # + . . . ", +" o&p&q&r&4&s&t&v&g&6&[&~&*&.&T%L%C%v%n%c%0@[%_%>%.%T$J$B$t$n$h$0$2$<$!$-#+$$@S#L#w#).s#l#b#5#(#,#*#Z@R@I@z@n@c@3@V.~@*@l.R+K+y+r+i+0+{.{+&+Y.I.y.k.8./.;.&.#...Y V S O L K G D B y v s p l i f c 0 6 2 } ^ / { ) - & $ # @ . . . ", +" w&k&l&x&y&z&t&A&e&7&}&{&=&G$U%M%_.w%l%d%8%}%/%,%+%U$K$C$($o$T+a$N#_$=$;$@$2#Q#M#d@x#j#m#c#6#_#%#=#`@S@J@A@o@a@1@(@!@ @ @S+h.z+8+9+a+:+!+*+Z.H.i.6.9.(.>.*.` +.Z W Q P I F H E A z u t q m h g a 4 7 3 _ < ( ~ ! ; & $ . . . ", +" m&r&r&x& > * . . ", +" l&q&q&l& , * ", +" k&p&p&k& ", +" !&o&o&w& ", +" ", +" ", +" ", +" ", +" ", +" "}; diff --git a/src/Mod/Ship/Icons/DataIco.png b/src/Mod/Ship/Icons/DataIco.png new file mode 100644 index 0000000000..223338ceae Binary files /dev/null and b/src/Mod/Ship/Icons/DataIco.png differ diff --git a/src/Mod/Ship/Icons/DataIco.xcf b/src/Mod/Ship/Icons/DataIco.xcf new file mode 100644 index 0000000000..81e05ac42d Binary files /dev/null and b/src/Mod/Ship/Icons/DataIco.xcf differ diff --git a/src/Mod/Ship/Icons/DataIco.xpm b/src/Mod/Ship/Icons/DataIco.xpm new file mode 100644 index 0000000000..19aed7ffa0 --- /dev/null +++ b/src/Mod/Ship/Icons/DataIco.xpm @@ -0,0 +1,1021 @@ +/* XPM */ +static char * DataIco_xpm[] = { +"128 128 890 2", +" c None", +". c #A7A7A7", +"+ c #A7A7A6", +"@ c #A6A5A6", +"# c #A5A6A5", +"$ c #A5A5A5", +"% c #A5A5A4", +"& c #A4A4A4", +"* c #A7A7A8", +"= c #A6A6A6", +"- c #A5A4A5", +"; c #A5A4A4", +"> c #A8A8A7", +", c #A8A7A7", +"' c #979797", +") c #989898", +"! c #999899", +"~ c #A5A6A6", +"{ c #A8A8A8", +"] c #A7A8A8", +"^ c #979898", +"/ c #999999", +"( c #999A9A", +"_ c #A9A9A8", +": c #99999A", +"< c #9A9A9B", +"[ c #B2B2B2", +"} c #A9A9AA", +"| c #A9A9A9", +"1 c #9B9A9A", +"2 c #9C9B9B", +"3 c #A7A6A6", +"4 c #B3B4B3", +"5 c #B3B3B3", +"6 c #AAAAAA", +"7 c #9A9A9A", +"8 c #9B9B9B", +"9 c #9C9C9C", +"0 c #A7A6A7", +"a c #9E9E9E", +"b c #9D9D9D", +"c c #B5B5B5", +"d c #B5B4B5", +"e c #B4B4B4", +"f c #B4B3B4", +"g c #B2B3B3", +"h c #9D9C9C", +"i c #9F9E9E", +"j c #9E9E9F", +"k c #B7B6B7", +"l c #B6B6B6", +"m c #B6B5B5", +"n c #B4B4B5", +"o c #828181", +"p c #B3B3B4", +"q c #ABAAAB", +"r c #9C9C9B", +"s c #9C9C9D", +"t c #9F9FA0", +"u c #9E9F9E", +"v c #9E9F9F", +"w c #9E9D9E", +"x c #9E9D9D", +"y c #9C9D9C", +"z c #807F7F", +"A c #818080", +"B c #828281", +"C c #B4B5B4", +"D c #ABABAB", +"E c #A9A8A8", +"F c #A0A0A0", +"G c #A09FA0", +"H c #9F9F9F", +"I c #ADADAD", +"J c #ADAEAE", +"K c #9D9D9E", +"L c #B7B7B7", +"M c #B6B6B5", +"N c #818081", +"O c #828282", +"P c #838383", +"Q c #ADADAC", +"R c #ABACAC", +"S c #ABACAB", +"T c #A8A9A8", +"U c #A6A7A7", +"V c #A0A1A0", +"W c #AFAFAF", +"X c #B7B6B6", +"Y c #818181", +"Z c #828383", +"` c #848383", +" . c #B4B3B3", +".. c #AFB0AF", +"+. c #AEAEAF", +"@. c #AFAEAE", +"#. c #AEAEAE", +"$. c #ACADAD", +"%. c #ACACAC", +"&. c #A0A1A1", +"*. c #A5A5A6", +"=. c #A1A2A2", +"-. c #A1A1A1", +";. c #A1A1A0", +">. c #B0B0B0", +",. c #B1B1B0", +"'. c #838382", +"). c #848484", +"!. c #858585", +"~. c #B5B5B4", +"{. c #B4B4B3", +"]. c #B2B1B2", +"^. c #B1B1B1", +"/. c #B0B1B0", +"(. c #AEAFAF", +"_. c #9C9D9D", +":. c #9E9E9D", +"<. c #A2A2A2", +"[. c #A3A3A4", +"}. c #A6A6A5", +"|. c #A4A4A5", +"1. c #A1A2A1", +"2. c #B2B1B1", +"3. c #A09F9F", +"4. c #B7B7B8", +"5. c #B6B6B7", +"6. c #868585", +"7. c #868786", +"8. c #B3B2B3", +"9. c #B2B2B3", +"0. c #B1B2B1", +"a. c #B0B1B1", +"b. c #949494", +"c. c #959595", +"d. c #969696", +"e. c #979798", +"f. c #989899", +"g. c #A0A09F", +"h. c #A3A3A3", +"i. c #A4A4A3", +"j. c #A6A5A5", +"k. c #A4A3A3", +"l. c #A3A2A2", +"m. c #A1A0A0", +"n. c #B8B8B8", +"o. c #848584", +"p. c #858686", +"q. c #868787", +"r. c #888888", +"s. c #919090", +"t. c #919192", +"u. c #929392", +"v. c #969697", +"w. c #979897", +"x. c #999898", +"y. c #9D9C9D", +"z. c #A8A7A8", +"A. c #A8A9A9", +"B. c #A9AAAA", +"C. c #AAABAB", +"D. c #ACACAD", +"E. c #A4A5A4", +"F. c #A3A2A3", +"G. c #B3B4B4", +"H. c #898888", +"I. c #898989", +"J. c #8B8A8A", +"K. c #8C8C8B", +"L. c #8D8D8D", +"M. c #8E8E8E", +"N. c #8F8F8F", +"O. c #909090", +"P. c #929291", +"Q. c #939393", +"R. c #959495", +"S. c #969695", +"T. c #979796", +"U. c #9B9B9C", +"V. c #A0A0A1", +"W. c #AAAAA9", +"X. c #ACABAB", +"Y. c #ACADAC", +"Z. c #AEADAE", +"`. c #AFB0B0", +" + c #B1B0B1", +".+ c #B3B2B2", +"++ c #A2A1A2", +"@+ c #B7B8B7", +"#+ c #878787", +"$+ c #888988", +"%+ c #8A8A8A", +"&+ c #8A8B8B", +"*+ c #8C8C8C", +"=+ c #8E8D8D", +"-+ c #8F8E8F", +";+ c #919091", +">+ c #929292", +",+ c #949495", +"'+ c #969596", +")+ c #9B9C9C", +"!+ c #A2A3A3", +"~+ c #A7A8A7", +"{+ c #AEAFAE", +"]+ c #A2A1A1", +"^+ c #B9B8B8", +"/+ c #868686", +"(+ c #888787", +"_+ c #898889", +":+ c #8B8B8B", +"<+ c #8D8E8D", +"[+ c #8F8E8E", +"}+ c #919191", +"|+ c #939392", +"1+ c #949393", +"2+ c #959494", +"3+ c #989798", +"4+ c #989998", +"5+ c #9A9999", +"6+ c #9A9B9B", +"7+ c #A1A0A1", +"8+ c #ACABAC", +"9+ c #B0AFB0", +"0+ c #B8B8B7", +"a+ c #A2A3A2", +"b+ c #B9B9B9", +"c+ c #868687", +"d+ c #878887", +"e+ c #8D8C8C", +"f+ c #8F8F8E", +"g+ c #909091", +"h+ c #929192", +"i+ c #939493", +"j+ c #9A9A99", +"k+ c #9D9D9C", +"l+ c #A2A2A3", +"m+ c #A4A5A5", +"n+ c #AAA9A9", +"o+ c #B2B2B1", +"p+ c #BABABA", +"q+ c #BAB9BA", +"r+ c #B9B9BA", +"s+ c #878687", +"t+ c #888887", +"u+ c #8C8C8D", +"v+ c #929393", +"w+ c #949493", +"x+ c #969796", +"y+ c #A1A1A2", +"z+ c #A6A6A7", +"A+ c #A9A8A9", +"B+ c #AFAEAF", +"C+ c #B0AFAF", +"D+ c #B5B6B6", +"E+ c #B8B7B8", +"F+ c #BABAB9", +"G+ c #BBBBBA", +"H+ c #BABABB", +"I+ c #8C8D8C", +"J+ c #8E8D8E", +"K+ c #919190", +"L+ c #929191", +"M+ c #939293", +"N+ c #979697", +"O+ c #999998", +"P+ c #9C9B9C", +"Q+ c #A6A7A6", +"R+ c #ABABAC", +"S+ c #ADACAC", +"T+ c #BCBBBB", +"U+ c #A3A3A2", +"V+ c #BCBCBC", +"W+ c #BBBBBC", +"X+ c #BBBBBB", +"Y+ c #979696", +"Z+ c #989797", +"`+ c #9FA09F", +" @ c #ABAAAA", +".@ c #ACACAB", +"+@ c #B0B0AF", +"@@ c #B3B3B2", +"#@ c #B6B7B7", +"$@ c #B9B9B8", +"%@ c #BBBCBB", +"&@ c #BCBDBC", +"*@ c #BDBCBD", +"=@ c #BDBDBD", +"-@ c #818182", +";@ c #858586", +">@ c #8B8B8C", +",@ c #8C8D8D", +"'@ c #8F9090", +")@ c #909190", +"!@ c #919292", +"~@ c #959695", +"{@ c #9D9E9D", +"]@ c #AAAAAB", +"^@ c #BBBABA", +"/@ c #BBBCBC", +"(@ c #BEBDBD", +"_@ c #BEBDBE", +":@ c #BBBABB", +"<@ c #C3C3C4", +"[@ c #BDBDBE", +"}@ c #808181", +"|@ c #828283", +"1@ c #848485", +"2@ c #868685", +"3@ c #8B8C8B", +"4@ c #908F8F", +"5@ c #B1B0B0", +"6@ c #AFAFAE", +"7@ c #ADAEAD", +"8@ c #BEBFBE", +"9@ c #BEBEBE", +"0@ c #B9BAB9", +"a@ c #C4C4C4", +"b@ c #C3C3C3", +"c@ c #C3C2C3", +"d@ c #BFBFBE", +"e@ c #7F7F80", +"f@ c #878686", +"g@ c #8A8B8A", +"h@ c #8D8E8E", +"i@ c #929293", +"j@ c #AFAFB0", +"k@ c #AEAEAD", +"l@ c #AEADAD", +"m@ c #B5B5B6", +"n@ c #BABBBA", +"o@ c #BCBBBC", +"p@ c #BDBEBD", +"q@ c #C5C5C5", +"r@ c #C3C4C3", +"s@ c #BFC0C0", +"t@ c #BFBFBF", +"u@ c #7E7E7E", +"v@ c #7F7F7F", +"w@ c #808081", +"x@ c #818281", +"y@ c #838282", +"z@ c #8F8F90", +"A@ c #B9BABA", +"B@ c #BABBBB", +"C@ c #9FA0A0", +"D@ c #C4C5C4", +"E@ c #6F6F6F", +"F@ c #C4C3C4", +"G@ c #C2C3C3", +"H@ c #C3C3C2", +"I@ c #C0C0C0", +"J@ c #7C7D7C", +"K@ c #808080", +"L@ c #838283", +"M@ c #858685", +"N@ c #B8B9B8", +"O@ c #B8B9B9", +"P@ c #B8B7B7", +"Q@ c #A2A2A1", +"R@ c #C6C6C6", +"S@ c #6D6E6D", +"T@ c #6F6E6F", +"U@ c #707071", +"V@ c #C3C4C4", +"W@ c #C4C3C3", +"X@ c #C2C2C2", +"Y@ c #C2C1C1", +"Z@ c #C1C1C1", +"`@ c #C1C0C1", +" # c #7D7D7D", +".# c #7E7D7E", +"+# c #888989", +"@# c #8C8B8B", +"## c #B9B8B9", +"$# c #C7C7C7", +"%# c #6E6D6E", +"&# c #707070", +"*# c #717172", +"=# c #727372", +"-# c #C3C2C2", +";# c #7B7B7B", +"># c #7D7D7E", +",# c #828382", +"'# c #848483", +")# c #858584", +"!# c #888788", +"~# c #888889", +"{# c #B7B8B8", +"]# c #ADACAD", +"^# c #C7C8C8", +"/# c #C6C7C7", +"(# c #C6C7C6", +"_# c #C5C6C5", +":# c #717271", +"<# c #727272", +"[# c #747374", +"}# c #757575", +"|# c #767676", +"1# c #777878", +"2# c #797978", +"3# c #797A7A", +"4# c #7D7E7D", +"5# c #878788", +"6# c #959596", +"7# c #AAABAA", +"8# c #B1B2B2", +"9# c #C6C6C5", +"0# c #717171", +"a# c #737372", +"b# c #777777", +"c# c #797879", +"d# c #7A7A7A", +"e# c #7C7C7D", +"f# c #7E7D7D", +"g# c #7E7F7F", +"h# c #B6B7B6", +"i# c #C7C6C7", +"j# c #737474", +"k# c #747574", +"l# c #767675", +"m# c #797878", +"n# c #7B7C7C", +"o# c #7F7E7F", +"p# c #939494", +"q# c #C5C6C6", +"r# c #757474", +"s# c #787878", +"t# c #797A79", +"u# c #7A7A7B", +"v# c #767777", +"w# c #797979", +"x# c #7B7B7A", +"y# c #7C7C7B", +"z# c #7D7D7C", +"A# c #808180", +"B# c #BEBFBF", +"C# c #B2B3B2", +"D# c #ABABAA", +"E# c #747474", +"F# c #767677", +"G# c #787777", +"H# c #7C7B7B", +"I# c #7D7C7C", +"J# c #B1B1B2", +"K# c #A4A3A4", +"L# c #C7C7C6", +"M# c #747473", +"N# c #7A7A79", +"O# c #C1C0C0", +"P# c #C7C8C7", +"Q# c #737373", +"R# c #787879", +"S# c #7C7B7C", +"T# c #B7B7B6", +"U# c #C1C1C0", +"V# c #AAA9AA", +"W# c #C8C8C8", +"X# c #C8C8C7", +"Y# c #737374", +"Z# c #7A7979", +"`# c #7A7B7A", +" $ c #C8C9C8", +".$ c #C8C8C9", +"+$ c #727171", +"@$ c #757576", +"#$ c #777677", +"$$ c #C2C2C1", +"%$ c #CAC9C9", +"&$ c #C8C9C9", +"*$ c #737273", +"=$ c #7C7C7C", +"-$ c #A9AAA9", +";$ c #CACBCA", +">$ c #C9C9CA", +",$ c #757676", +"'$ c #777877", +")$ c #C4C4C3", +"!$ c #CBCBCB", +"~$ c #CBCACB", +"{$ c #6F7070", +"]$ c #757475", +"^$ c #787877", +"/$ c #7B7A7A", +"($ c #8E8E8F", +"_$ c #C5C5C4", +":$ c #CBCACA", +"<$ c #717071", +"[$ c #727271", +"}$ c #767575", +"|$ c #767776", +"1$ c #787978", +"2$ c #A3A4A3", +"3$ c #6F6F6E", +"4$ c #737473", +"5$ c #79797A", +"6$ c #C5C5C6", +"7$ c #CDCCCD", +"8$ c #CCCCCC", +"9$ c #CBCCCC", +"0$ c #70706F", +"a$ c #707171", +"b$ c #C6C6C7", +"c$ c #ADADAE", +"d$ c #9F9F9E", +"e$ c #CDCDCC", +"f$ c #CCCDCD", +"g$ c #6D6D6D", +"h$ c #6E6E6E", +"i$ c #706F6F", +"j$ c #727172", +"k$ c #737272", +"l$ c #747373", +"m$ c #777676", +"n$ c #9D9E9E", +"o$ c #CDCECE", +"p$ c #CDCDCD", +"q$ c #6D6D6C", +"r$ c #757675", +"s$ c #C8C7C7", +"t$ c #CECECE", +"u$ c #CECDCE", +"v$ c #6C6C6C", +"w$ c #9F9E9F", +"x$ c #D3D3D3", +"y$ c #D2D3D2", +"z$ c #D2D2D2", +"A$ c #D2D2D1", +"B$ c #D1D1D1", +"C$ c #D0D0D1", +"D$ c #D0D0D0", +"E$ c #D0D0CF", +"F$ c #D0CFCF", +"G$ c #CFCFCF", +"H$ c #CFCECF", +"I$ c #727273", +"J$ c #C9C8C9", +"K$ c #9B9A9B", +"L$ c #D3D4D3", +"M$ c #D3D2D2", +"N$ c #D2D1D1", +"O$ c #D1D1D0", +"P$ c #CECFCE", +"Q$ c #6A6A6A", +"R$ c #6B6C6C", +"S$ c #6C6D6D", +"T$ c #757574", +"U$ c #C9C9C9", +"V$ c #9B9B9A", +"W$ c #9A9B9A", +"X$ c #D4D4D4", +"Y$ c #D3D4D4", +"Z$ c #5F5F5F", +"`$ c #606061", +" % c #616161", +".% c #636263", +"+% c #646464", +"@% c #656465", +"#% c #666666", +"$% c #676767", +"%% c #686969", +"&% c #696A69", +"*% c #6B6B6B", +"=% c #706F70", +"-% c #CAC9CA", +";% c #9A999A", +">% c #969797", +",% c #D4D5D4", +"'% c #5F5F5E", +")% c #606060", +"!% c #626263", +"~% c #636463", +"{% c #656566", +"]% c #686868", +"^% c #696969", +"/% c #6E6F6F", +"(% c #717170", +"_% c #C9CAC9", +":% c #CACACA", +"<% c #B0B0B1", +"[% c #D4D5D5", +"}% c #D4D4D5", +"|% c #606161", +"1% c #626261", +"2% c #636363", +"3% c #656565", +"4% c #696869", +"5% c #6C6B6C", +"6% c #707170", +"7% c #717272", +"8% c #CBCBCA", +"9% c #989999", +"0% c #D5D5D5", +"a% c #D5D4D4", +"b% c #D2D3D3", +"c% c #D0D1D1", +"d% c #6A6B6B", +"e% c #6B6B6C", +"f% c #6D6C6D", +"g% c #6E6E6D", +"h% c #949595", +"i% c #949594", +"j% c #D6D5D6", +"k% c #D5D4D5", +"l% c #D3D3D4", +"m% c #D3D2D3", +"n% c #D1D2D2", +"o% c #69696A", +"p% c #6F6E6E", +"q% c #959696", +"r% c #939394", +"s% c #D1D2D1", +"t% c #6D6E6E", +"u% c #6E6F6E", +"v% c #CBCCCB", +"w% c #676768", +"x% c #696868", +"y% c #6A696A", +"z% c #6B6C6B", +"A% c #CCCCCD", +"B% c #666766", +"C% c #6F706F", +"D% c #807F80", +"E% c #919291", +"F% c #909191", +"G% c #90908F", +"H% c #676766", +"I% c #676867", +"J% c #6D6D6E", +"K% c #C1C1C2", +"L% c #B5B4B4", +"M% c #908F90", +"N% c #676666", +"O% c #6B6A6A", +"P% c #6C6B6B", +"Q% c #6D6C6C", +"R% c #8E8F8E", +"S% c #666767", +"T% c #686968", +"U% c #6A6969", +"V% c #CECECD", +"W% c #8F908F", +"X% c #8D8C8D", +"Y% c #8D8D8C", +"Z% c #656666", +"`% c #676667", +" & c #8C8B8C", +".& c #CECFCF", +"+& c #8B8B8A", +"@& c #D5D5D4", +"#& c #666565", +"$& c #676868", +"%& c #B8B8B9", +"&& c #D6D6D5", +"*& c #646364", +"=& c #CFD0CF", +"-& c #CFCECE", +";& c #8A8A8B", +">& c #898A8A", +",& c #8A8989", +"'& c #D6D6D6", +")& c #646564", +"!& c #89898A", +"~& c #898A89", +"{& c #8A8A89", +"]& c #878888", +"^& c #626262", +"/& c #646465", +"(& c #D6D6D7", +"_& c #D7D6D6", +":& c #636362", +"<& c #636464", +"[& c #656665", +"}& c #686867", +"|& c #D0CFD0", +"1& c #D7D7D7", +"2& c #D6D7D7", +"3& c #6E6D6D", +"4& c #CFD0D0", +"5& c #BCBCBB", +"6& c #838483", +"7& c #D8D9D8", +"8& c #D8D8D7", +"9& c #656564", +"0& c #6A6B6A", +"a& c #BCBDBD", +"b& c #858485", +"c& c #848384", +"d& c #838484", +"e& c #DAD9DA", +"f& c #D9D9D9", +"g& c #D8D8D8", +"h& c #5E5E5E", +"i& c #5F5F60", +"j& c #606160", +"k& c #636364", +"l& c #838384", +"m& c #818282", +"n& c #DBDBDB", +"o& c #DADADA", +"p& c #DAD9D9", +"q& c #5D5D5D", +"r& c #5E5D5E", +"s& c #5E5F5E", +"t& c #605F5F", +"u& c #686768", +"v& c #BFBEBF", +"w& c #828182", +"x& c #7F8080", +"y& c #B4B5B5", +"z& c #DCDCDC", +"A& c #DCDCDB", +"B& c #DBDADB", +"C& c #5A5A5A", +"D& c #5A5B5B", +"E& c #5C5C5C", +"F& c #605F60", +"G& c #616160", +"H& c #696A6A", +"I& c #6B6A6B", +"J& c #6C6C6D", +"K& c #818180", +"L& c #7F7F7E", +"M& c #DDDCDD", +"N& c #DCDDDD", +"O& c #585858", +"P& c #595859", +"Q& c #595A59", +"R& c #5B5A5A", +"S& c #5B5B5C", +"T& c #D8D9D9", +"U& c #D8D7D8", +"V& c #626162", +"W& c #636262", +"X& c #646463", +"Y& c #666667", +"Z& c #80807F", +"`& c #7F807F", +" * c #7F7E7E", +".* c #DDDDDD", +"+* c #DDDDDC", +"@* c #575657", +"#* c #585857", +"$* c #595959", +"%* c #D9DADA", +"&* c #D8D8D9", +"** c #696968", +"=* c #6C6C6B", +"-* c #C1C2C1", +";* c #C2C1C2", +">* c #7E7F7E", +",* c #7E7E7D", +"'* c #BAB9B9", +")* c #7B7B7C", +"!* c #DCDCDD", +"~* c #575757", +"{* c #DBDCDC", +"]* c #DBDADA", +"^* c #D9DAD9", +"/* c #D7D6D7", +"(* c #616162", +"_* c #6A6A69", +":* c #6C6D6C", +"<* c #C0BFBF", +"[* c #CECECF", +"}* c #C2C2C3", +"|* c #7D7E7E", +"1* c #7C7D7D", +"2* c #DCDBDC", +"3* c #DCDBDB", +"4* c #616262", +"5* c #626362", +"6* c #C8C7C8", +"7* c #C5C4C5", +"8* c #DEDEDE", +"9* c #D7D8D7", +"0* c #626363", +"a* c #686767", +"b* c #CECDCD", +"c* c #7A7B7B", +"d* c #7B7A7B", +"e* c #A4A2A2", +"f* c #DEDDDD", +"g* c #D9D8D8", +"h* c #616061", +"i* c #626161", +"j* c #646565", +"k* c #CCCBCB", +"l* c #CACBCB", +"m* c #7A797A", +"n* c #BCBCBD", +"o* c #AEB0B0", +"p* c #A9A7A7", +"q* c #D7D8D8", +"r* c #616060", +"s* c #6A6A6B", +"t* c #C4C5C5", +"u* c #CACAC9", +"v* c #787778", +"w* c #787979", +"x* c #A8A8A9", +"y* c #656464", +"z* c #686869", +"A* c #727373", +"B* c #777778", +"C* c #A6A6A4", +"D* c #A3A3A5", +"E* c #6E6E6F", +"F* c #D8D7D7", +"G* c #747475", +"H* c #747575", +"I* c #C0C1C0", +"J* c #D9D8D9", +"K* c #C0C1C1", +"L* c #646363", +"M* c #949394", +"N* c #5F6060", +"O* c #666566", +"P* c #AAAAA8", +"Q* c #5F5E5F", +"R* c #5D5D5E", +"S* c #5F605F", +"T* c #6B6B6A", +"U* c #5D5D5C", +"V* c #DBDBDA", +"W* c #5A5A5B", +"X* c #5B5B5B", +"Y* c #5B5C5C", +"Z* c #D6D7D6", +"`* c #D6D5D5", +" = c #666665", +".= c #C9CACA", +"+= c #C4C4C5", +"@= c #5A595A", +"#= c #5B5B5A", +"$= c #D9D9D8", +"%= c #D5D6D6", +"&= c #D4D3D4", +"*= c #CCCBCC", +"== c #CACACB", +"-= c #B9B7B9", +";= c #DBDBDC", +">= c #585757", +",= c #D9D9DA", +"'= c #D4D4D3", +")= c #D3D3D2", +"!= c #CDCDCE", +"~= c #CDCCCC", +"{= c #CBCBCC", +"]= c #C7C7C8", +"^= c #C5C4C4", +"/= c #B5B7B7", +"(= c #A9A9A7", +"_= c #565555", +":= c #565656", +"<= c #DADBDB", +"[= c #DEDEDD", +"}= c #555454", +"|= c #555555", +"1= c #767576", +"2= c #DFDEDF", +"3= c #DDDEDD", +"4= c #545554", +"5= c #D1D0D1", +"6= c #DDDEDE", +"7= c #DDDDDE", +"8= c #D0D1D0", +"9= c #C7C6C6", +"0= c #777776", +"a= c #5E5F5F", +"b= c #5E5E5F", +"c= c #5C5C5D", +"d= c #5C5D5C", +"e= c #BBB9B9", +"f= c #5B5C5B", +"g= c #D4D3D3", +"h= c #959594", +"i= c #5B5A5B", +"j= c #A7A5A5", +"k= c #AAAAAC", +"l= c #D5D6D5", +"m= c #8E8F8F", +"n= c #6A6A6C", +"o= c #828482", +"p= c #CBCDCB", +"q= c #ABAAA9", +"r= c #A3A4A4", +"s= c #6F6F70", +"t= c #757577", +"u= c #C7C7C5", +"v= c #C0C2C2", +"w= c #D5D5D7", +" ", +" ", +" . + @ # $ % & ", +" * . = # $ - ; ", +" > , ' ) ! ~ $ ", +" { ] ^ / ( @ # ", +" _ { ) : < = ~ ", +" [ [ } | / 1 2 3 + ", +" 4 5 [ 6 | 7 8 9 ] 0 a b ", +" c d e f 4 g 6 6 < 9 h { . i j b b b ", +" k l m c n o p 5 q 6 r s b { ] t u v w x b y ", +" l l z A B C f 5 D 6 9 b a E { F G H I J a K b ", +" L l M N O P e e I I Q R S D b w H | | T * . U . V F W W W j a K ", +" L X Y Z ` d e . ..W +.@.#.I I $.%.9 b i t &.| E { > , U 0 = *.$ =.-.;.>.,.>.H v ", +" L k l '.).!.~.e {. ].^./.>.>.W (.#.) / 7 8 _.:.H F -.<.[.& }.+ * U 0 = ~ *.; |. <.1.^.^.2.3.t i ", +" 4.L 5.).6.7.e n e 5 8.9.[ 0.a.,.b.c.d.e.f.: 8 9 b a g.F <.h.i.$ = . { | 6 D = j.# |.& & k.h.l.<.g g 8.m.g. ", +" n.L o.p.q.r.n e {.5 5 [ s.t.u.b.c.v.w.x.7 8 y.b H F V <.h.; $ + z.A.B.C.%.D.J W $ & E.& h.F. .G.e -.F F ", +" n.4.L p.q.H.I.J.K.L.M.N.O.P.Q.R.S.T.) / 7 U.h a H V.-.h.i.% = . { W.6 X.Y.Z.W `. +2..+5 4 e e c c ++-. ", +" n.@+p.#+$+%+&+*+=+-+O.;+>+Q.,+'+' f./ 8 )+y.a H -.<.!+& j.U ~+T 6 D %.I {+W >.].[ 5 {.n c M l X <.]+ ", +" ^+L /+(+_+%+:+*+<+[+O.}+|+1+2+d.3+4+5+6+9 b i F 7+<.h.E.*.U { | C.8+Y.#.(.9+^.[ 8.e c l k L 0+n.a+<. ", +" b+n.c+d+I.%+:+e+=+f+g+h+Q.i+c.d.) 4+j+8 k+w j F 1.l+& m+j.. T n+D %.I #.W >.o+5 {.c l k L n.b+b+!+l. ", +" p+q+r+^+s+t+$+%+:+u+L.N.O.t.v+w+c.x+w./ 7 8 y.a H V y+l+k.$ z+* A+6 D %.I B+C+,.[ p C D+k E+^+b+F+p+[.h.F.<. ", +" G+H+p+r+!.s+t+_+%+K.I+J+N.K+L+M+b.c.N+) O+7 P+_.a H ;.-.h.& $ Q+~+_ 6 R+S+#.W >.0.8.e c l L n.b+p+G+T+T+k.U+a+<. ", +" V+W+X+Z ).6.#+#+I.J.:+L.M.N.O.h+Q.b.d.Y+Z+/ 8 r y a `+&.1.h.& j.3 > | @.@Q #.+@>.[ @@e m #@L $@p+X+%@&@*@V+X+!+!+<. ", +" =@V+V+-@P ).;@7.r.I.%+>@,@M.'@)@!@Q.b.~@N+) {@h.> R+#.{+W B+#.J S+S ]@6 D .@Q {+W /.o+5 C c #@n.r+^@/@*@(@_@=@V+:@h.l+<. ", +" <@ [@=@=@}@-@|@1@2@c+r.I.&+3@L.M.4@;+>+Q.b.{@> `. .5 9.[ 2.^.5@>.W W 6@#.#.7@I R+%.I W ,.[ 5 C m L n.b+:@T+=@8@9@_@V+X+0@h.l.<. ", +" a@a@b@c@ d@9@9@e@A O P ).6.f@t+I.g@K.e+h@N.)@i@<.j@c c e {.G.5 #.k@l@I I Y.S I ^.5 n m@#@0+b+n@o@*@p@=@=@o@X+0@b+h.U+<. H a a ", +" q@a@a@r@b@ s@t@9@u@v@w@x@y@).!.q.r.I.J.3@L.M.z@<.e 5.l M c I %.%.R D W e c #@4.b+A@B@V+V+*@V+X+X+b+n.L h.!+a+ C@`+H v ", +" q@q@D@E@F@r@G@H@ I@s@J@u@v@K@Y L@).M@/+#+I.%+:+L.8 0.n.4.L 5. S+%..@D %.^.D+L N@r+^@X+o@T+X+p+p+O@P@5.c h.U+<.Q@y+&.V G G v i ", +" R@q@S@T@U@V@W@b@X@X@Y@Z@`@I@ #.#u@A Y P ).!.7.r.+#%+@#. r+b+n.n. %.8+D D {+l n.O@b+q+p+p+r+b+##E+L l c 5 h.F.<.<.y+-.S @F v ", +" $#$#R@%#E@&#*#=#b@b@-#X@X@Z@;# #>#v@K@Y ,#'#)#/+!#~#>+^.p+p+b+ .@D q %.e {#n.$@b+##O@n.@+L l c e 5 [ /.>.(.l@]#D 6 F H H ", +" ^#/#(#R@_#&#:#<#[#}#|#1#2#3#;#J@4#v@K@Y |@'#o./+5#6#n.X+X+ R+7#7#8.L {#@+0+L L X l m e 5 .+8#/.W #.]#%.D ;.7+F g. ", +" $#/#R@9#0#a#[#}#|#b#c#d#;#e#f#g#K@Y O ` o.p.' T+V+V+ %.D ]@2.h#5.5.h#m@M c C p 5 ].,.>.W J %..@=.-.-.V ", +" i#R@_#q@j#k#l#b#m#3#;#n#>#o#K@Y O P 1@p#*@=@*@ X.D 6 [ c m c e e f 5 g 0.^...W #.I %.U+l+<. ", +" (#R@q#q@r#}#b#s#t#u#n# #u@K@N B P L.b+9@[@ D D @].e p p 4 .+8.o+^.>.W #.I %.X.h.h. ", +" R@_#r#}#v#s#w#x#y#z#u@v@A#-@'.[ B#9@ .@D S g C#C#[ [ ^.5@W W #.l@S+.@D#k.h. ", +" /#R@E#l#F#G#2#d#H#I#.#v@K@o = I@t@ X.D ]#J#^.a./.>.j@W #.l@S+%.]@} & K# ", +" i#L#M#}#|#b#2#N#;#I#>#u@K@~@O#I@ D D #.>.>.W W #.Z.I %.8+ @} A+|.& ", +" P#$#Q#k#|#b#R#t#x#S#f#u@K@T#Z@U# %.D q B+(.#.7@I ]#%.D 6 V#A.{ $ ; ", +" W#X#P#Y#E#|#b#R#Z#`#y#z#u@a X@Y@ 8+R %.I I S+%.X.q C.V#| z.. ~ $ $ ", +" $.$+$Q#E#@$#$s#w#d#H#z#o#=@c@$$ D.8+R+D %.8+D 6 V#| A.~+. = @ @ $ ", +" %$&$0#*$M#}#F#G#c#N#;#=$b b@b@ $.8+D C.7#-$| _ T . U = # m+= $ ", +" ;$>$%$0#*$j#}#,$'$2#t#`#=$N@)$r@ I %.7#B.| | { z.. z+= $ & & z+= @ ", +" !$~${$0#<#Q#]$l#v#^$w#/$($_$a@ ]#%.| { , . + ~ $ m+& h.l.=.Q+~ ", +" !$:$E@<$[$Q#E#}$|$^$1$d#. q@q@ I Q -$0 0 *.$ - & 2$h.l.1.V . . ", +" !$!$3$�#<#4$k#|#b#m#5$V+6$ I %.# $ % & K#k.a+<.]+&.F , . ", +" 7$8$9$T@0$a$<#Q#E#l#b#s#!.R@b$ #.c$$ & [.h.a+<.]+-.;.g.d$> ~+. ", +" e$f$g$h$i$0#j$k$l$}#m$b#v.$#i# #.c$= !+a+<.<.-.V.C@H H n$b ] z. ", +" o$p$q$h$E@�#<#Y#k#r$#$$ X#s$ W +.{ ++-.&.m.F 3.H a :.b 9 _ { ", +" t$u$v$g$h$i$a$0#*$r#,$F#2.W# B+]@V.F F H w$d$K x h 8 8 | { ", +" x$y$z$A$B$C$D$E$F$G$H$t$v$g$h$E@�#I$Q#}#|#V+J$ W R+t d$j a :.b 9 9 2 K$7 | A._ z., + U = j. ", +" L$x$M$z$z$N$C$O$F$G$P$Q$R$S$%#E@0$0#<#Q#T$r$X@U$ C+c$:.n$K b y 9 U.V$W$j+/ x.| T T { . + 0 = ", +" X$Y$Z$`$ %.%+%@%#%$%%%&%*%v$g$h$=%&#<#I$[#}#W#-% >.W y.b h 9 r 8 K$;%/ 4+) 3+>%d.6#2+b.Q.. z+ ", +" ,%X$'%)% %!%~%@%{%$%]%^%Q$*%q$%#/%&#(%<#Q#E#_%:% <%W 9 8 8 < 7 7 / 4+f.' ' Y+d.c.b.w+Q.>+] . ", +" [%}%Z$Z$|%1%2%+%3%#%$%4%Q$*%5%g$h$=%6%7%I$j#W#8% a.+@6+7 7 : 9%f.) w.' Y+d.c.,+p#Q.u.P.}+z.~+ ", +" 0%a%,%X$x$x$b%z$A$B$c%]%^%d%e%f%g%3$&#U@j$Q#a@!$ J#B+/ / ! ) ) ^ ' ' d.6#h%i%D D 6 B.-$_ A+{ ", +" j%0%k%X$L$l%x$m%z$n%B$O$%%o%*%v$g$p%E@�#Q#(@!$ 8#I ) w.) >%x+d.q%c.c.,+r%%.R+D C.]@6 n+| E ", +" z$s%]%^%Q$e%S$t%u%{$<$<#5 v% 9.6 N+N+d.d.q%6#h%b.r%Q.|+%.%. ", +" z$n%w%x%y%d%v$g$h$E@�#j.8$v% p C#$ d.S.c.2+,+b.i+Q.u.>+t.Q %. ", +" m%z$$%]%^%Q$z%q$%#p%E@6%b.A%8$ {. .g.h%b.b.i+Q.Q.u.!@}+K+O.7@]# ", +" x$y$B%w%4%y%*%v$S$h$E@C%D%p$p$ e f f.Q.M+v+>+P.E%}+F%O.G%N.#.7@ ", +" X$x$x$H%I%^%Q$*%v$J%h$=%&#K%p$ L%..>+P.P.!@}+}+)@O.M%N.f+(.(.#. ", +" x$x$N%$%]%&%O%P%Q%g$/%C%. u$p$ D+c j.}+g+;+O.G%4@N.f+R%J+<+C+6@ ", +" X$l%{%S%$%T%U%Q$R$f%h$E@+#t$V% l l 5+M%W%z@N.($[+M.M.J+X%Y%9+j@ ", +" }%X$3%Z%`%]%^%Q$*%v$g$h$E@t@t$o$ L l C+R%($M.M.<+h@L.L.Y%e+ &:+>.>. ", +" 0%[%X$3%H%$%]%y%Q$z%v$J%h$7 .&t$ n.L g.L.L.L.I+,@*+*+*+3@+&J.2.5@5@ ", +" @&X$+%#&$%$&^%y%Q$e%q$g$a$$#P$t$ %&n. .L.*+*+:+@#>@:+:+J.%+%+I.[ ^. ", +" &&@&*&+%#%N%]%x%Q$*%R$g$h$9 =&-& ##%&F :+:+J.;&;&;&>&%+,&I.H.$+[ ]. ", +" '&0%2%)&3%#%$%]%^%Q$*%v$g$J%s@G$t$ p+r+^.%+>&%+!&~&{&I.I.~#r.]&#+5 @@[ ", +" '&&&^&2%/&Z%#%w%x%^%Q$z%v$g$L.F$G$ n@p+^ I.H.r.r.r.r.]&t+#+s+q.c+p 5 ", +" (&_&1%:&<&3%[&`%}&]%&%Q$z%Q%S@. |&G$ T+X+# (+5#d+#+#+#+q.#+/+/+6.p.!.e f ", +" 1&2& %1%2%+%3%Z%`%]%^%U%*%P%Q%3&X+4&G$ V+5&..7./+/+p.2@2@/+;@6.!.!.).).6&L%{. ", +" 7&8&8&)% %^&2%+%9&#%$%}&T%Q$0&*%Q% #W#=&G$ =@a&L M.b&b&b&)#b&b&).b&).c&d&P P '.~.~. ", +" e&f&7&g&h&i&j& %^&k&/&3%#%$%]%^%Q$d%*%q$#+G$|&F$ 9@_@V+M+c&'#6&'#` l&P P P Z Z '.y@m&o c c e f ", +" n&n&o&p&f&q&r&s&t& %1%.%2%9&3%#%$%u&%%&%0&*%v$%+G$D$G$ t@v&=@i+P L@'.'.|@O y@,#O w&-@o -@Y }@A#x&c C y&e e ", +" z&A&n&B&C&D&E&q&h&Z$F&G&1%2%~%)&{%#%$%]%T%H&I&z%J&#+W#|&G$ I@t@A@}+Y Y Y o Y Y Y Y Y Y K&A w@D%x&v@v@u@L&u@y&e e f ", +" M&N&z&O&P&Q&R&S&E&T&g&g&U&1&V&W&X&+%{%Y&$%]%^%^%Q$e%v$ #X+4&G$G$ Z@I@I@o+{&K@K@K@Z&K@K@K@x&Z&D%`&v@v@v@o# *g# #>#f# #z#c e e ", +" .*+*z&@*#*O&$*o&p&%*f&&*8&1&1&^&2%2%9&#&#%$%]%**^%Q$*%=*J&. E$G$-&t$ b@X@-*;*E.g#L&>*v@L&v@g#v@v@g#>* *u@u@,*'*b+%&n.E+L =$y#)*m@y& ", +" .*.*!*~*{*n&]*o&^* g&U&/*(*2%<&/&3%#%$%$&**_*Q$*%5%:**+<*=&P$[*o$ a@b@b@}*L !@ #f# #4#|*,*u@4#4# #4#4# # #1*p+p+q+b+$@n.{#@+T#l D+m h.<.h. ", +" .*+*!*2*3*n& 8&8&`$4*5*2%+%#&#%$%]%]%^%Q$O%*%v$g$8 6*G$t$t$t$ q#7*D@a@_@h )*y#S#=$=$=$=$=$J@J@J@I#=$=$y#n#S#:@H+ n.@+L L l $ a U.<. ", +" 8*.*.*M& g&g&9* %1%0*2%+%3%#%H%a*]%^%H&Q$=*v$f%E@/ d@t$b*t$p$8$8$ X#$#L#R@_#q@##8 =$d#`#c*d*;#x#;#;#;#;#;#;#;#;#/$u#/$V+T+:@ @+L L . a 8 e* ", +" f* g*U&9*h*i*!%k&9&j*#%B%a*]%4%y%Q$*%z%Q%g$%##+3 $$p$7$f$8$k*!$l*8%:%U$U$U$W#P#$#V+$ &m#s#2#w#w#5$t#5$t#d#m*Z#5$m*N#d#5$m*w#a&n*5& ^.D o* p*H 9 & 9 ", +" g&q*8&r*^&5*2%+%@%#%#%$%u&x%^%Q$s*=*=*v$g$h$h$u@Q.; 5 =@t*W#u*$#G@o@^.& b.|@|#|##$b#'$b#v*v*s#s#R#R#s#w#m#m#m#c#m#w*m#_@=@=@ m E Q.x* | F b $ a [.F 8 ", +" g&g&9*h*i*:&2%~%y*3%#%S%I%z*T%Q$Q$d%=*v$g$t%J%p%E@&#�#0#+$<#*$A*j#E#E#}#}#}#}$|#|#F#v#b#b#b#b#b#B*'$b#b#v*b#B*b#v&9@p@ %.M.O+^. %.6 = & H K & $ C*|.D* E.D y+ ", +" g&9*1& % %^&2%*&+%3%#%`%$%]%T%U%Q$I&*%R$v$g$3&g%E*E@i$&#<$a$0#7%I$=#Q#Q#M#E#E#E#}#}#}#}$l#|#,$}$|#|#|#|#|#|#m$t@t@9@ - *+H >.>.%.E.a 9 / 7 b H -.h.= . . = & h.-.6 6 H ", +" g&F*U&1& %V&5*k&+%3%3%N%$%$%x%4%y%Q$0&z%v$g$g$g$h$u%E@C%C%&#a$0#0#j$<#k$=#Q#Q#j#E#E#G*E#}#T$T$}#T$H*}#}#Z@I*<*I@ 5 h%%+Q.c.d.}+Q.d.) 8 a F <.% . W.6 $.]#l@#.5 { ", +" J*g&F*1& %4*^&2%<&+%3%#&`%$%]%T%^%Q$Q$*%P%P%v$q$S@%#h$/%E@&#=%&#a$(%0#0#<#<#<#A*=#Q#Q#Y#[#M#Q#j#[#[#Z@Z@K*I* c 7 #+%+*+N.P.b.T./ 9 a -.h.$ { D I W ^. .c c | ", +" g&g&)%j& %^&:&L*+%3%3%#%$%$%u&x%^%^%Q$Q$P%e%v$g$g$g%h$u%h$E@{$=%=%&#&#(%0#+$[$<#*#<#<#=#<#I$A*}*X@Y@ X+W M*#+%+*+N.>+b.T./ 9 H -.K#= | X.#.>.g c L L #.i. ", +" 7&g&Z$N*)% %V&.%2%*&+%3%O*Y&$%I%u&z*^%^%Q$O%*%z%v$v$f%S@h$h$h$p%E@E@E@&#&#&#U@6%U@<$0#a$0#:#0#b@X@ p+*.M.!.(+%+,@z@>+S.j+H h.& $ . . P*6 I ,.5 l n.p+p+5 Q+ ", +" J*7&h&Q*Z$)% % %1%:&~%<&+%3%#%H%$%a*I%]%^%^%&%Q$d%*%*%R$v$g$g$t%%#g%h$T@/%E@/%C%E@{$=%0$=%&#&#V@b@ Z@ V+*.~#L@!.r.%+,@>+9 = I W W W I .@6 6 D#%.W [ l b+X+V+X+].$ ", +" f&&*q&R*h&Z$S*`$ %4*^&2%2%+%3%3%#&N%Y&w%u&]%%%^%o%Q$Q$T**%e%v$v$q$q$g$g$g$h$%#h$h$h$p%/%u%/%3$a@)$ Z@D b+ D #+v@y@!.#++&/ | [ | R {+e L q+p+b+l W = F H F H ", +" B&o&f&E&U*q&1&1&_&_&'&0%^&W&2%k&+%)&3%{%#%B%$%$&]%4%4%^%_*Q$s*I&*%=*5%R$v$v$Q%S$W#X#$#(#(#g$%#t%7*a@b@ C /+:+. ^.B+u.=$v@O !.>@H >. | %.e l n.L l e #.{ . . <.b ", +" V*o&W*X*Y*g*g&1&9*Z*'&&&`*k%X$W&.%~%+%+%3% =#%N%$%$%w%]%T%^%^%^%U%Q$Q$O%d%u*.=U$ $W#X#$#$#R@v$v$v$+=a@a@ R@e O. #;#f#d#1*v@O I.& L 6 $.[ e c e [ >.#.%.$ F ", +" 3*n&n&$*@=#=f&$= Z*'&%=[%X$X$&=x$L*k&/&@%#&3%#%H%B%a*}&]%4%**8$*=v%!$==:%%$U$ P#i#b$O%*%*%7*a@ 9@a b#b#d#=$v@).=.-= 6 %.^.g [ >.6@I | <. ", +" M&z&;=>=O&$*o&,=J* 0%[%,%X$'=x$)=z$n%+%/&)&#% =G$P$t$t$!=~=8$*={=8% ]=$#Q$H&H&q@^=a@ %.|#b#w#S# #) /= (=%.`.W #.S+D | l. ", +" .*.*_=:=~*<=o&e& X$x$x$M$)=N$2%+%+%D$|&G$.&t$V%p$ W#$#$#**]%T%q@a@ | }#|#2#;#I.C+ 6 D D X.6 | . h. ", +" 8*[=.*}=|=:=3*<= b%z$^&^&2%C$E$ 6*]=$%$%$%q@q@_$ b@c.Q#1=s#/$H t@ 6 n+| { . E.& ", +" 2=8*3=.*4=z&z&n& x$b% %(*^&5=B$ W#P#$#b$L#9#q#q@ V+Y Q#}#b#).[ | ~+. = m+h.h.<. ", +" 2=6=7=.*M&z& &=x$)%j&h*N$8= W#W#6*$#9= ^.Q#<#E#0=Q.=@ D { & & U+-.-.m+ ", +" 8*6=.*.* X$l%a=Z$Z$N$B$ U$W#W# :%H 0#0#Q#^$y+Z@ { <.-.m.H b h. ", +" 8* X$X$q&h&b=z$n% U$*+g$&#<#w#R+ 6 y+H a h 8 -.= ", +" 0%X$c=d=q&z$z$ $#e=b+$@#.=$:*E@0#w#5 %.F 9 r 7 O+b h.h.<.$ ", +" 0%0%f=X*E&g=x$ -.v$g$h$0#^%*%h$&#w#l %.H 7 / ) ' c.d.h=/ h. ", +" &&%=C&i=X*g=g= t@| | { b E#Q$g$E@w#e I b ) ' d.c.) C@g.F j= ", +" Z*j%&&0%[%X$X$ p$r.^%R$h$}#>. I 7 c.h%p#v+a k= ", +" 2&_&&&l=0%,%X$ p$m=]%Q$v$&#& } d.>+>+}+O.H ", +" . *%^%*%g$b.W# $ }+O.N.R%L+# ", +" l n=$%U%z%u@/@ [ 9 M.L.L.*+h+| ", +" ~$v@#%]%Q$E@& p$ 6 O.:+:++&%+/ #. ", +" V%` j*#%x%0&P V+ e 9 I.I.I.r.%+h. ", +" t$o=2%3%$%**v$2 W# l = %+/+/+/+!.~&D ", +" 8$ # %2%3%$%^%}#| p= Y.O.).).c&P P r.D ", +" 1&X@c.^& %2%X&3%$%^% #W p$ 9+b.o B Y Y Y K@x@8 %.[ ", +" f&%.*$E#7 q ) **+%{%$%^%=$. W# =@6 }+u@v@v@v@L&).:+%+!.O.#. ", +" n&e y+q@1& x$'+2%+%O*$%^%<#) $@W# I@^+-.#+=$z# #1*=$u@=.[ [ q=& 5 ", +" z&g& I@L@ %~%3%H%]%O%=$V$c b@R@ q@t@c <.:+;#w#N#d#d#d#w#c.c l ", +" V+O 1%2%y*#%u&^%v$}##+c.<.{ { r=7 M.D%b#|#b#b#b#b#b#b#Q.e ", +" *@O.]%!%+%O*$%4%Q$*%g$h$�#0#7%:#=#Q#E#E#T$T$}#v@8 c ", +" D$I.|%^&L*3%#%]%^%Q$*%v$g$h$T@E@�#0#7%<#<#w#}.V+ ", +" x$}+b=)%V&2%+%O*H%w%^%Q$*%z%v$g$g%h$E@E@s=&#K@p+ ", +" 0%%+E#>%7 *+E#+%~%3%#%$%]%^%Q$Q$O%&#u@Q./ #+u@L ", +" b+E@$ '& B$I@A+) v@t=#%3%Q#w##+9 6 p+W#u=l ).>+9@ ", +" t$O :+t$ z$q@t@O <#.+v=Z@!$ <.b#>. ", +" 1&F X+ t$}+s#a@ 9@& p+ ", +" w=z& t$'@|#q@ R@ ", +" D$N.E#R@ ", +" z$= b.:% ", +" z$G$ "}; diff --git a/src/Mod/Ship/Icons/DiscretizeIco.png b/src/Mod/Ship/Icons/DiscretizeIco.png new file mode 100644 index 0000000000..bdba9aca0e Binary files /dev/null and b/src/Mod/Ship/Icons/DiscretizeIco.png differ diff --git a/src/Mod/Ship/Icons/DiscretizeIco.xcf b/src/Mod/Ship/Icons/DiscretizeIco.xcf new file mode 100644 index 0000000000..676a395fb1 Binary files /dev/null and b/src/Mod/Ship/Icons/DiscretizeIco.xcf differ diff --git a/src/Mod/Ship/Icons/DiscretizeIco.xpm b/src/Mod/Ship/Icons/DiscretizeIco.xpm new file mode 100644 index 0000000000..9bff402e33 --- /dev/null +++ b/src/Mod/Ship/Icons/DiscretizeIco.xpm @@ -0,0 +1,2028 @@ +/* XPM */ +static char * DiscretizeIco_xpm[] = { +"128 128 1897 2", +" c None", +". c #9F6602", +"+ c #9F6601", +"@ c #A06602", +"# c #9F6502", +"$ c #A16702", +"% c #A06701", +"& c #A06700", +"* c #A16703", +"= c #9F6501", +"- c #A26803", +"; c #A16802", +"> c #A16601", +", c #A26905", +"' c #A66E0E", +") c #A76F0F", +"! c #A36902", +"~ c #A36802", +"{ c #A26802", +"] c #A26804", +"^ c #A56D0B", +"/ c #A77011", +"( c #A77012", +"_ c #A87212", +": c #A26A07", +"< c #A06601", +"[ c #A56903", +"} c #A46A04", +"| c #A36803", +"1 c #A56D0A", +"2 c #A67010", +"3 c #A77111", +"4 c #A77010", +"5 c #AA751A", +"6 c #B38432", +"7 c #A66F0F", +"8 c #A06702", +"9 c #A56902", +"0 c #A36904", +"a c #A46B08", +"b c #A56E0F", +"c c #A67011", +"d c #AF7E28", +"e c #BF9854", +"f c #B1802B", +"g c #A36B09", +"h c #A66B03", +"i c #A56A03", +"j c #A46B06", +"k c #A46E0D", +"l c #A56E10", +"m c #B1822E", +"n c #CBAC74", +"o c #C6A366", +"p c #A16803", +"q c #A66B04", +"r c #A66B06", +"s c #A56C0C", +"t c #A46D10", +"u c #A46D0F", +"v c #A46E0F", +"w c #A56F10", +"x c #B78A3D", +"y c #D3B889", +"z c #D6BD91", +"A c #BB9249", +"B c #A46D0B", +"C c #A16602", +"D c #A86C04", +"E c #A76C04", +"F c #A76C03", +"G c #A76C05", +"H c #A46C0B", +"I c #A36D0F", +"J c #A36D10", +"K c #A46E10", +"L c #A56F0F", +"M c #A77317", +"N c #CCAC76", +"O c #E1CFAF", +"P c #DEC9A5", +"Q c #D8C096", +"R c #A97418", +"S c #A16804", +"T c #A96D05", +"U c #A86D05", +"V c #AA6D03", +"W c #A56C09", +"X c #A26D0F", +"Y c #A26D10", +"Z c #B07F2B", +"` c #E9DCC5", +" . c #E7D9C0", +".. c #E6D7BC", +"+. c #C9A86E", +"@. c #A56E0D", +"#. c #AA6D05", +"$. c #A96D04", +"%. c #A66C08", +"&. c #A26B0E", +"*. c #A16B10", +"=. c #A16C0F", +"-. c #A26C0F", +";. c #C19D5D", +">. c #EBDFCB", +",. c #F3ECDF", +"'. c #F0E7D7", +"). c #E9DBC3", +"!. c #B88D40", +"~. c #A36A06", +"{. c #AB6F06", +"]. c #AB6E05", +"^. c #AB6E04", +"/. c #A86D07", +"(. c #A26B0C", +"_. c #A06B10", +":. c #A16B0F", +"<. c #B5893C", +"[. c #E5D6BC", +"}. c #F3EDE1", +"|. c #FCFAF7", +"1. c #F9F5EF", +"2. c #ECE1CE", +"3. c #B48636", +"4. c #A76F10", +"5. c #A36D0E", +"6. c #AC7006", +"7. c #AC6F05", +"8. c #A96D07", +"9. c #A36B0C", +"0. c #9F6A0F", +"a. c #A06A0F", +"b. c #A16A0F", +"c. c #A16A0E", +"d. c #C6A56B", +"e. c #E6D7BE", +"f. c #EFE6D6", +"g. c #F4EEE3", +"h. c #A36E10", +"i. c #BE8013", +"j. c #B9790A", +"k. c #9D6401", +"l. c #AD7006", +"m. c #AC6F06", +"n. c #AD7005", +"o. c #A46C0A", +"p. c #9F6A0D", +"q. c #9E6A0F", +"r. c #9F6A0E", +"s. c #A06B0E", +"t. c #A16B0E", +"u. c #B48639", +"v. c #D4BA8F", +"w. c #E0CEAF", +"x. c #EDE3D1", +"y. c #DAC59F", +"z. c #A47217", +"A. c #B77B12", +"B. c #DF9616", +"C. c #E69B17", +"D. c #DB9315", +"E. c #AE7107", +"F. c #AE7106", +"G. c #AD7007", +"H. c #A66D09", +"I. c #9F690E", +"J. c #9D6A0F", +"K. c #A06A0E", +"L. c #A8761E", +"M. c #C29E5F", +"N. c #D3B88B", +"O. c #DBC6A1", +"P. c #D4BB8F", +"Q. c #B1853A", +"R. c #AD7310", +"S. c #CC8913", +"T. c #E09616", +"U. c #4D3408", +"V. c #A26E14", +"W. c #EDA323", +"X. c #C2800D", +"Y. c #AE7206", +"Z. c #AF7206", +"`. c #B07106", +" + c #A96E08", +".+ c #9F6A0C", +"++ c #9C690D", +"@+ c #9E690D", +"#+ c #9E6A0E", +"$+ c #A7751D", +"%+ c #B88E46", +"&+ c #C4A165", +"*+ c #C5A46A", +"=+ c #B2863D", +"-+ c #C58313", +";+ c #DC9416", +">+ c #DF9515", +",+ c #EA9D17", +"'+ c #875D10", +")+ c #4E483D", +"!+ c #F2C983", +"~+ c #DE9516", +"{+ c #A86C05", +"]+ c #B07207", +"^+ c #B07306", +"/+ c #AC7007", +"(+ c #A06A0B", +"_+ c #9B670D", +":+ c #9C680D", +"<+ c #9D690D", +"[+ c #9E680D", +"}+ c #A7741D", +"|+ c #B18435", +"1+ c #AB7E2F", +"2+ c #BC7E12", +"3+ c #D89115", +"4+ c #DE9415", +"5+ c #DA9215", +"6+ c #DC9316", +"7+ c #E8A125", +"8+ c #827C72", +"9+ c #C8B694", +"0+ c #EFA019", +"a+ c #CC8710", +"b+ c #9D6501", +"c+ c #B17408", +"d+ c #B17207", +"e+ c #B27307", +"f+ c #A26B0B", +"g+ c #9A660D", +"h+ c #9E6A0D", +"i+ c #A27018", +"j+ c #AB7F33", +"k+ c #AC8035", +"l+ c #A87927", +"m+ c #A26D13", +"n+ c #A06C12", +"o+ c #9F6C10", +"p+ c #B47911", +"q+ c #D38E14", +"r+ c #DD9416", +"s+ c #DB9215", +"t+ c #E29816", +"u+ c #EAA32A", +"v+ c #CFB07B", +"w+ c #898988", +"x+ c #E09717", +"y+ c #D68E13", +"z+ c #A26702", +"A+ c #B27408", +"B+ c #B37508", +"C+ c #B17308", +"D+ c #A66D0A", +"E+ c #9B670C", +"F+ c #9D670C", +"G+ c #9D680D", +"H+ c #9E690E", +"I+ c #9E6B0E", +"J+ c #A3721B", +"K+ c #B6965C", +"L+ c #C0A779", +"M+ c #CDBDA4", +"N+ c #AE843D", +"O+ c #A77724", +"P+ c #A26C11", +"Q+ c #AC7410", +"R+ c #DC9314", +"S+ c #D99214", +"T+ c #D99115", +"U+ c #DC9315", +"V+ c #D79015", +"W+ c #432D06", +"X+ c #CA8713", +"Y+ c #F4AC2B", +"Z+ c #422C05", +"`+ c #8C5A05", +" @ c #A86F0A", +".@ c #9C670C", +"+@ c #99660C", +"@@ c #9C670D", +"#@ c #9C680C", +"$@ c #A57626", +"%@ c #B79760", +"&@ c #D2C9BB", +"*@ c #CFC7B7", +"=@ c #C2AC83", +"-@ c #B38D4C", +";@ c #A06B11", +">@ c #9D680E", +",@ c #C58312", +"'@ c #DA9114", +")@ c #D79014", +"!@ c #D89014", +"~@ c #D99114", +"{@ c #D18C14", +"]@ c #C28313", +"^@ c #F3A317", +"/@ c #4A3208", +"(@ c #442E06", +"_@ c #C9840D", +":@ c #A36903", +"<@ c #AD6F03", +"[@ c #B47609", +"}@ c #B57508", +"|@ c #AD7009", +"1@ c #9D670B", +"2@ c #98640C", +"3@ c #9A660C", +"4@ c #A06D16", +"5@ c #B69358", +"6@ c #C7B89D", +"7@ c #D8D7D5", +"8@ c #D1CBC0", +"9@ c #B39359", +"0@ c #A16F16", +"a@ c #9C680E", +"b@ c #C38211", +"c@ c #D69013", +"d@ c #D68F13", +"e@ c #D79013", +"f@ c #E39815", +"g@ c #E39816", +"h@ c #79510C", +"i@ c #140E03", +"j@ c #EB9E17", +"k@ c #C3810E", +"l@ c #996303", +"m@ c #B47608", +"n@ c #B57608", +"o@ c #B67709", +"p@ c #B07309", +"q@ c #97640C", +"r@ c #99650C", +"s@ c #A16F1C", +"t@ c #C0A982", +"u@ c #D2CCC1", +"v@ c #D6D6D6", +"w@ c #D4D3D2", +"x@ c #AC8540", +"y@ c #9B680E", +"z@ c #9D690E", +"A@ c #B47810", +"B@ c #D38C13", +"C@ c #895C0C", +"D@ c #D08C13", +"E@ c #D89114", +"F@ c #D68F14", +"G@ c #DA9214", +"H@ c #D58E13", +"I@ c #2A1C04", +"J@ c #E19716", +"K@ c #E29817", +"L@ c #382402", +"M@ c #A26A05", +"N@ c #A16704", +"O@ c #A76C06", +"P@ c #B87709", +"Q@ c #B47509", +"R@ c #A36B0B", +"S@ c #96630C", +"T@ c #98650C", +"U@ c #9B660C", +"V@ c #A07220", +"W@ c #BDA47A", +"X@ c #D8D8D8", +"Y@ c #D5D5D5", +"Z@ c #D0CCC5", +"`@ c #BCA37A", +" # c #9E680E", +".# c #9B680D", +"+# c #AD730F", +"@# c #CB8811", +"## c #E29714", +"$# c #372505", +"%# c #513607", +"&# c #E59914", +"*# c #AE7510", +"=# c #D38D13", +"-# c #E89C15", +";# c #181003", +"># c #7C520A", +",# c #BD7B09", +"'# c #A86B03", +")# c #AC6F04", +"!# c #AC7618", +"~# c #CDB58A", +"{# c #B6780A", +"]# c #B97809", +"^# c #B67609", +"/# c #A76E0A", +"(# c #98640B", +"_# c #95630C", +":# c #9A670C", +"<# c #BEAB8A", +"[# c #D0CDC9", +"}# c #C4B292", +"|# c #A77B30", +"1# c #99660D", +"2# c #C58311", +"3# c #D48E13", +"4# c #D89013", +"5# c #C38212", +"6# c #000000", +"7# c #BD7F11", +"8# c #E59915", +"9# c #3C2805", +"0# c #483007", +"a# c #EA9C15", +"b# c #AB7009", +"c# c #EAEAEA", +"d# c #B8780A", +"e# c #B87809", +"f# c #B97909", +"g# c #AC710A", +"h# c #99660B", +"i# c #94620B", +"j# c #96630B", +"k# c #97640B", +"l# c #9E6C15", +"m# c #B1925B", +"n# c #D4D4D4", +"o# c #D3D3D4", +"p# c #D7D7D7", +"q# c #B99D6E", +"r# c #A16E14", +"s# c #BC7E10", +"t# c #D38C12", +"u# c #D58E12", +"v# c #D28C12", +"w# c #D38D12", +"x# c #E39714", +"y# c #604009", +"z# c #362405", +"A# c #EC9D16", +"B# c #C68412", +"C# c #4D3202", +"D# c #A46A03", +"E# c #A76B04", +"F# c #E9EAEA", +"G# c #BA790A", +"H# c #BA7A0A", +"I# c #B0740A", +"J# c #9C670B", +"K# c #93620B", +"L# c #94620A", +"M# c #96640B", +"N# c #B2935C", +"O# c #D1CEC6", +"P# c #D3D2D2", +"Q# c #D1D1D0", +"R# c #D2D3D3", +"S# c #CCC4B5", +"T# c #BC8B35", +"U# c #CF8A11", +"V# c #D48D12", +"W# c #D18B12", +"X# c #D08B12", +"Y# c #8F5F0C", +"Z# c #DE9414", +"`# c #D58E14", +" $ c #000001", +".$ c #A66D0B", +"+$ c #B17307", +"@$ c #AF7105", +"#$ c #AA6E05", +"$$ c #EBEBEB", +"%$ c #ECECEC", +"&$ c #BA790B", +"*$ c #BC7B0A", +"=$ c #B5770A", +"-$ c #A06A0A", +";$ c #93600B", +">$ c #93610A", +",$ c #95630A", +"'$ c #95630B", +")$ c #AC8643", +"!$ c #CEC7B8", +"~$ c #D4D3D4", +"{$ c #C8C8C9", +"]$ c #CCCCCC", +"^$ c #D3B683", +"/$ c #D48F18", +"($ c #DE9413", +"_$ c #070501", +":$ c #80550C", +"<$ c #E09412", +"[$ c #A26907", +"}$ c #B47405", +"|$ c #E7E7E8", +"1$ c #BB7B0B", +"2$ c #BA7B0A", +"3$ c #BD7C0A", +"4$ c #B97A0A", +"5$ c #A56C0A", +"6$ c #94610A", +"7$ c #92600A", +"8$ c #95620A", +"9$ c #95620B", +"0$ c #96640C", +"a$ c #9C6C16", +"b$ c #BDA67D", +"c$ c #D0D0CB", +"d$ c #CDCDCD", +"e$ c #C2C1C3", +"f$ c #D2D2D1", +"g$ c #D6D6D5", +"h$ c #D4A95E", +"i$ c #CE8C19", +"j$ c #D18C12", +"k$ c #D28D12", +"l$ c #5E3F08", +"m$ c #F0A115", +"n$ c #764C04", +"o$ c #AA6E04", +"p$ c #A96E05", +"q$ c #E7E7E7", +"r$ c #E8E8E8", +"s$ c #BB7C0B", +"t$ c #BD7C0B", +"u$ c #BC7B0B", +"v$ c #AA700A", +"w$ c #956209", +"x$ c #905F0A", +"y$ c #946109", +"z$ c #A57C36", +"A$ c #C1B298", +"B$ c #D0D0D0", +"C$ c #C8C8C8", +"D$ c #C1C1C1", +"E$ c #CFCFCF", +"F$ c #D6D0C9", +"G$ c #D3A24E", +"H$ c #CD8911", +"I$ c #C88611", +"J$ c #7F550B", +"K$ c #E69A13", +"L$ c #B27710", +"M$ c #050300", +"N$ c #B8790C", +"O$ c #AD6F06", +"P$ c #B37406", +"Q$ c #AC7005", +"R$ c #BC7C0B", +"S$ c #BE7C0B", +"T$ c #BF7D0B", +"U$ c #B0730A", +"V$ c #986409", +"W$ c #8F5F09", +"X$ c #91610A", +"Y$ c #95640B", +"Z$ c #98650B", +"`$ c #94620C", +" % c #BCA580", +".% c #D2CEC8", +"+% c #CECECE", +"@% c #C0C0C0", +"#% c #C0C1C1", +"$% c #D0D0CF", +"%% c #D7CAB6", +"&% c #D6A54F", +"*% c #D08B11", +"=% c #D68F12", +"-% c #C78411", +";% c #AE750F", +">% c #D08A0F", +",% c #A86D06", +"'% c #B47506", +")% c #AC7106", +"!% c #E8E8E7", +"~% c #E9E9E9", +"{% c #C07E0C", +"]% c #B5770B", +"^% c #9C670A", +"/% c #8F5E09", +"(% c #915F09", +"_% c #926009", +":% c #936109", +"<% c #92610A", +"[% c #96630A", +"}% c #97630B", +"|% c #AE7714", +"1% c #D2C2A8", +"2% c #C8C7C7", +"3% c #BDBDBD", +"4% c #BEBDBE", +"5% c #D0CFCF", +"6% c #D5D2CC", +"7% c #D19C3F", +"8% c #221703", +"9% c #8E5F0C", +"0% c #EB9D14", +"a% c #7C5208", +"b% c #9B6407", +"c% c #AD7106", +"d% c #BF7E0C", +"e% c #C2800C", +"f% c #BB7A0B", +"g% c #A26A0A", +"h% c #8E5D09", +"i% c #925F09", +"j% c #926109", +"k% c #A66E0C", +"l% c #CF9A3C", +"m% c #D1C7B6", +"n% c #D0CFD0", +"o% c #C6C5C5", +"p% c #BCBBBB", +"q% c #BDBCBB", +"r% c #CECECD", +"s% c #D4D5D5", +"t% c #E4AB48", +"u% c #81560B", +"v% c #2D1E03", +"w% c #B47507", +"x% c #AF7207", +"y% c #ECEBEB", +"z% c #C07E0D", +"A% c #BF7D0C", +"B% c #A86F0B", +"C% c #905E09", +"D% c #8C5C09", +"E% c #905F09", +"F% c #94610B", +"G% c #91610B", +"H% c #9E6A0C", +"I% c #BC7D0E", +"J% c #CC870F", +"K% c #CB870F", +"L% c #CFAA69", +"M% c #D2CFC9", +"N% c #CBCBCB", +"O% c #C0BFC0", +"P% c #BAB9B9", +"Q% c #BEBEBE", +"R% c #CDCECD", +"S% c #C9C9C9", +"T% c #D0AA69", +"U% c #C17F0C", +"V% c #B37407", +"W% c #E8E9E8", +"X% c #E7E8E7", +"Y% c #EBEAEB", +"Z% c #C3800D", +"`% c #C3800C", +" & c #AF730B", +".& c #8B5C09", +"+& c #8E5E09", +"@& c #916009", +"#& c #91600A", +"$& c #99660A", +"%& c #B5770E", +"&& c #C9850F", +"*& c #CA860F", +"=& c #D2B88A", +"-& c #D1CFCB", +";& c #CACACB", +">& c #BEBEBD", +",& c #B9BABA", +"'& c #CACBCB", +")& c #D3D3D3", +"!& c #C5A672", +"~& c #B07307", +"{& c #E6E6E6", +"]& c #DDDEDD", +"^& c #DEDDDE", +"/& c #C27F0D", +"(& c #C5810D", +"_& c #B6780C", +":& c #98640A", +"<& c #8A5B09", +"[& c #8D5C08", +"}& c #915F0A", +"|& c #95610A", +"1& c #AE730C", +"2& c #C7830E", +"3& c #CA850F", +"4& c #C7840F", +"5& c #C8850F", +"6& c #C9891C", +"7& c #D0B586", +"8& c #D1D1D1", +"9& c #C7C7C7", +"0& c #BCBCBB", +"a& c #BABBBA", +"b& c #B8B8B8", +"c& c #C4C4C4", +"d& c #D6CEC1", +"e& c #BB8B34", +"f& c #DDDCDD", +"g& c #C3810D", +"h& c #C3800E", +"i& c #C6830D", +"j& c #BC7B0C", +"k& c #9D6709", +"l& c #8A5B08", +"m& c #8B5B08", +"n& c #8D5D09", +"o& c #8E5E08", +"p& c #8F5E08", +"q& c #AD720C", +"r& c #C6820E", +"s& c #CE880F", +"t& c #C6830E", +"u& c #C7840E", +"v& c #D28C10", +"w& c #B98323", +"x& c #D6BB8B", +"y& c #B9BAB9", +"z& c #B9B9B9", +"A& c #BFBFBF", +"B& c #D5D4D1", +"C& c #E2E3E1", +"D& c #B3B3B3", +"E& c #E8E8E9", +"F& c #C4810E", +"G& c #C3820D", +"H& c #C7830D", +"I& c #C17F0D", +"J& c #895A07", +"K& c #8D5D08", +"L& c #8E5D08", +"M& c #906009", +"N& c #9E690A", +"O& c #BB7B0D", +"P& c #C1800E", +"Q& c #2A1B03", +"R& c #BE7E0D", +"S& c #C9850E", +"T& c #CD880F", +"U& c #CB860F", +"V& c #080808", +"W& c #D1C0A2", +"X& c #CFCFCE", +"Y& c #C4C3C4", +"Z& c #BABABA", +"`& c #B9B9B8", +" * c #B8B7B7", +".* c #C9CAC9", +"+* c #D7D8D7", +"@* c #DCDCDC", +"#* c #E9EAE9", +"$* c #E4E5E5", +"%* c #CBCBCA", +"&* c #ADADAD", +"** c #D2D1D2", +"=* c #EBEBEC", +"-* c #C4820E", +";* c #C5820E", +">* c #AB710B", +",* c #8E5D07", +"'* c #885907", +")* c #8C5C07", +"!* c #8C5C08", +"~* c #B5780C", +"{* c #D38C0E", +"]* c #3B2704", +"^* c #4A3105", +"/* c #D38B0F", +"(* c #503406", +"_* c #C07F0E", +":* c #D99010", +"<* c #35270E", +"[* c #C1B39B", +"}* c #CFD0D0", +"|* c #B8B9B9", +"1* c #B7B7B7", +"2* c #B5B6B6", +"3* c #BEBFBF", +"4* c #D7D8D8", +"5* c #E7E7E6", +"6* c #DFE0E0", +"7* c #B1B1B1", +"8* c #A6A5A5", +"9* c #C5830F", +"0* c #B4760C", +"a* c #936008", +"b* c #875806", +"c* c #8A5A07", +"d* c #8C5B07", +"e* c #8C5B08", +"f* c #8F5D09", +"g* c #936009", +"h* c #AE720B", +"i* c #C7850E", +"j* c #B8790D", +"k* c #010000", +"l* c #AB720C", +"m* c #D9900F", +"n* c #312004", +"o* c #472F06", +"p* c #CC870E", +"q* c #B9801B", +"r* c #CDB487", +"s* c #C5C4C4", +"t* c #B6B5B6", +"u* c #C6C7C6", +"v* c #E4E4E3", +"w* c #C1C2C2", +"x* c #969797", +"y* c #A3A3A3", +"z* c #DDDDDE", +"A* c #BC7B0D", +"B* c #865706", +"C* c #8B5B07", +"D* c #8A5B07", +"E* c #8D5C09", +"F* c #C07F0D", +"G* c #C5820D", +"H* c #C1800D", +"I* c #CC860E", +"J* c #D58C0F", +"K* c #5D3D06", +"L* c #291C03", +"M* c #D78E0F", +"N* c #B9790C", +"O* c #9F6808", +"P* c #B87909", +"Q* c #B6770A", +"R* c #C9B38E", +"S* c #D1D2D1", +"T* c #C6C7C7", +"U* c #B6B7B7", +"V* c #B5B5B5", +"W* c #B3B3B2", +"X* c #B6B5B5", +"Y* c #C8C6C8", +"Z* c #D7D7D8", +"`* c #E5E5E5", +" = c #D0D1D0", +".= c #9A9B9B", +"+= c #949494", +"@= c #AEAEAE", +"#= c #E5E6E6", +"$= c #C9840F", +"%= c #C2800E", +"&= c #A06909", +"*= c #865806", +"== c #895A06", +"-= c #895B07", +";= c #9F680A", +">= c #BB7C0D", +",= c #C4810D", +"'= c #C4820D", +")= c #B3760C", +"!= c #3A2604", +"~= c #CF880E", +"{= c #281A02", +"]= c #BB7B0A", +"^= c #B8790A", +"/= c #CECECF", +"(= c #BBBBBB", +"_= c #B6B6B6", +":= c #B4B3B3", +"<= c #B2B1B2", +"[= c #B6B6B7", +"}= c #CAC9CA", +"|= c #D8D7D7", +"1= c #E3E3E3", +"2= c #A4A4A4", +"3= c #939393", +"4= c #979797", +"5= c #E6E5E5", +"6= c #CC8810", +"7= c #C8840F", +"8= c #A86E0B", +"9= c #895906", +"0= c #855605", +"a= c #895907", +"b= c #8B5A07", +"c= c #B4760B", +"d= c #C27F0C", +"e= c #C07F0C", +"f= c #CE870E", +"g= c #060401", +"h= c #C6830C", +"i= c #C17E0A", +"j= c #BBBCBB", +"k= c #B4B4B5", +"l= c #B3B2B2", +"m= c #AFAFAF", +"n= c #D9D8D8", +"o= c #D9D9D9", +"p= c #DEDDDD", +"q= c #E7E6E7", +"r= c #E5E5E4", +"s= c #E2E2E2", +"t= c #D3D4D4", +"u= c #9F9F9F", +"v= c #999898", +"w= c #969696", +"x= c #9B9B9C", +"y= c #D2D2D2", +"z= c #EBEAEA", +"A= c #CA8610", +"B= c #CD8710", +"C= c #CC880F", +"D= c #B0750C", +"E= c #835505", +"F= c #885906", +"G= c #8A5A06", +"H= c #8C5D08", +"I= c #8B5B09", +"J= c #946108", +"K= c #B0740B", +"L= c #BE7D0C", +"M= c #CD870D", +"N= c #CA850E", +"O= c #4D3205", +"P= c #D88E0F", +"Q= c #B9790B", +"R= c #CFCECF", +"S= c #B4B4B4", +"T= c #B2B2B2", +"U= c #ADADAE", +"V= c #BFBFC0", +"W= c #DDDEDE", +"X= c #DEDEDE", +"Y= c #E4E4E5", +"Z= c #DADADB", +"`= c #C7C7C6", +" - c #A9A7A8", +".- c #949394", +"+- c #9A9999", +"@- c #979798", +"#- c #A4A4A5", +"$- c #D6D7D7", +"%- c #EAEAE9", +"&- c #CB8710", +"*- c #CE8911", +"=- c #B97A0D", +"-- c #825505", +";- c #855706", +">- c #885806", +",- c #8A5B06", +"'- c #8D5C07", +")- c #895A08", +"!- c #744C07", +"~- c #C9850C", +"{- c #432C05", +"]- c #D68D0E", +"^- c #462E04", +"/- c #B97A0B", +"(- c #BC7C0A", +"_- c #BFBFBE", +":- c #B7B7B6", +"<- c #B5B4B4", +"[- c #B2B3B2", +"}- c #B0B0B0", +"|- c #CACACA", +"1- c #DBDBDB", +"2- c #DEDFDF", +"3- c #DFDFDF", +"4- c #DEDEDF", +"5- c #E0E1E1", +"6- c #E1E2E2", +"7- c #E0DFDF", +"8- c #E4E3E3", +"9- c #DEDEDD", +"0- c #CBCDCC", +"a- c #B7B8B7", +"b- c #A2A2A2", +"c- c #989898", +"d- c #999999", +"e- c #CD8810", +"f- c #D08A11", +"g- c #C2800F", +"h- c #9A6508", +"i- c #825506", +"j- c #835606", +"k- c #895806", +"l- c #8A5A08", +"m- c #9E6809", +"n- c #BF7E0B", +"o- c #C17F0B", +"p- c #010100", +"q- c #845608", +"r- c #C7830C", +"s- c #C3810C", +"t- c #CB860D", +"u- c #C5810C", +"v- c #C2C1C1", +"w- c #B4B5B4", +"x- c #B3B3B4", +"y- c #B1B2B1", +"z- c #B1B1B0", +"A- c #ABABAB", +"B- c #AAAAAA", +"C- c #B6B6B5", +"D- c #D3D4D3", +"E- c #D5D6D5", +"F- c #CECFCE", +"G- c #C4C4C3", +"H- c #A0A0A0", +"I- c #9E9E9D", +"J- c #9A999A", +"K- c #9A9A9A", +"L- c #999899", +"M- c #949495", +"N- c #A8A8A8", +"O- c #CD8811", +"P- c #D18B11", +"Q- c #C98610", +"R- c #A36B0A", +"S- c #825305", +"T- c #986308", +"U- c #B3750A", +"V- c #BE7D0A", +"W- c #7E5308", +"X- c #110B01", +"Y- c #C4800B", +"Z- c #7F5308", +"`- c #D38B0D", +" ; c #C6820C", +".; c #BD7C0C", +"+; c #C3C3C3", +"@; c #B6B7B6", +"#; c #B5B5B6", +"$; c #ACACAD", +"%; c #AAABAB", +"&; c #A9A9A9", +"*; c #A9A9A8", +"=; c #ABAAAA", +"-; c #B0AFAF", +";; c #ACABAB", +">; c #A0A09F", +",; c #A2A2A1", +"'; c #9D9D9D", +"); c #9C9C9C", +"!; c #9B9B9B", +"~; c #9A9A99", +"{; c #989897", +"]; c #E1E1E0", +"^; c #AC720C", +"/; c #875705", +"(; c #805204", +"_; c #865605", +":; c #926007", +"<; c #AC7109", +"[; c #BB7A0A", +"}; c #BD7B0B", +"|; c #C7820D", +"1; c #201502", +"2; c #684506", +"3; c #D78D0D", +"4; c #835608", +"5; c #754D07", +"6; c #BD7D0C", +"7; c #C2C3C2", +"8; c #B8B9B8", +"9; c #B0AFB0", +"0; c #AFAEAF", +"a; c #ADAEAE", +"b; c #ACADAD", +"c; c #A9A8A9", +"d; c #A6A6A6", +"e; c #A5A5A5", +"f; c #A0A0A1", +"g; c #A3A3A2", +"h; c #9E9D9D", +"i; c #9E9E9E", +"j; c #9D9E9D", +"k; c #9D9C9B", +"l; c #989998", +"m; c #969697", +"n; c #D3D3D2", +"o; c #EDEDEC", +"p; c #CF8911", +"q; c #B7790D", +"r; c #8C5B06", +"s; c #7E5103", +"t; c #825405", +"u; c #845505", +"v; c #855606", +"w; c #845708", +"x; c #D1890C", +"y; c #CA850D", +"z; c #C6C6C6", +"A; c #B0B1B0", +"B; c #ADADAC", +"C; c #ABACAC", +"D; c #A6A7A7", +"E; c #A6A7A6", +"F; c #A2A2A3", +"G; c #A1A1A1", +"H; c #9E9E9F", +"I; c #9D9D9E", +"J; c #9C9D9C", +"K; c #9B9C9B", +"L; c #9A9B9A", +"M; c #959695", +"N; c #9F9FA0", +"O; c #CDCCCD", +"P; c #EAEBEA", +"Q; c #D28B12", +"R; c #D58D12", +"S; c #C07F0F", +"T; c #946107", +"U; c #7E5203", +"V; c #815304", +"W; c #835504", +"X; c #845506", +"Y; c #9E6808", +"Z; c #BE7D0B", +"`; c #C07E0B", +" > c #AC7209", +".> c #CA850C", +"+> c #B1750C", +"@> c #CBCCCB", +"#> c #CDCDCC", +"$> c #B8B7B8", +"%> c #B4B3B5", +"&> c #B2B3B3", +"*> c #B1B0B1", +"=> c #AEAEAD", +"-> c #ACACAC", +";> c #ACACAB", +">> c #AAA9A9", +",> c #A9A8A8", +"'> c #A5A4A5", +")> c #A2A1A1", +"!> c #A1A0A0", +"~> c #9A9B9C", +"{> c #9F9F9E", +"]> c #E5E5E6", +"^> c #E6E7E6", +"/> c #9D6708", +"(> c #7F5203", +"_> c #7E5204", +":> c #845605", +"<> c #986307", +"[> c #B27409", +"}> c #BA7A09", +"|> c #B7780A", +"1> c #BD7B0A", +"2> c #261902", +"3> c #D1890B", +"4> c #674406", +"5> c #A16A0B", +"6> c #C1800C", +"7> c #CCCDCD", +"8> c #B7B7B8", +"9> c #AFB0AF", +"0> c #AEAEAF", +"a> c #ACADAC", +"b> c #AAA9AA", +"c> c #A8A7A7", +"d> c #A7A7A7", +"e> c #A3A4A4", +"f> c #A2A3A2", +"g> c #A2A0A0", +"h> c #A09F9F", +"i> c #9C9D9D", +"j> c #AEADAD", +"k> c #D18C13", +"l> c #A66E0A", +"m> c #815404", +"n> c #7C5003", +"o> c #825404", +"p> c #845606", +"q> c #915E06", +"r> c #B77709", +"s> c #A86D08", +"t> c #B7770A", +"u> c #B77809", +"v> c #A26A09", +"w> c #624005", +"x> c #2B1C03", +"y> c #CA860E", +"z> c #C8C9C8", +"A> c #BCBCBC", +"B> c #ADACAC", +"C> c #ACACAA", +"D> c #A9A9AA", +"E> c #A7A6A6", +"F> c #A5A5A4", +"G> c #A4A4A3", +"H> c #9D9D9C", +"I> c #9B9C9C", +"J> c #9FA0A0", +"K> c #BBBCBC", +"L> c #D28C13", +"M> c #D78F13", +"N> c #B2750C", +"O> c #855604", +"P> c #7A4F03", +"Q> c #805304", +"R> c #815303", +"S> c #855506", +"T> c #865606", +"U> c #835506", +"V> c #A56C07", +"W> c #B77708", +"X> c #A56C08", +"Y> c #AD7109", +"Z> c #C07E09", +"`> c #B37509", +" , c #C4800A", +"., c #845607", +"+, c #C8840E", +"@, c #B7B8B8", +"#, c #B1B0B0", +"$, c #AEAFAF", +"%, c #ACABAC", +"&, c #A9AAAA", +"*, c #A7A7A6", +"=, c #A4A5A5", +"-, c #A4A3A3", +";, c #A1A1A0", +">, c #A0A1A1", +",, c #9E9F9F", +"', c #9D9C9C", +"), c #CDCECE", +"!, c #E4E4E4", +"~, c #E7E8E8", +"{, c #D48D13", +"], c #BD7D0E", +"^, c #8D5C05", +"/, c #7A4E02", +"(, c #7E5104", +"_, c #805303", +":, c #805403", +"<, c #875805", +"[, c #9F6707", +"}, c #B47508", +"|, c #C27F0A", +"1, c #3E2803", +"2, c #412A03", +"3, c #C2800A", +"4, c #AA6F08", +"5, c #080500", +"6, c #C6820A", +"7, c #654307", +"8, c #BEBEBF", +"9, c #B4B4B3", +"0, c #AFB0B0", +"a, c #ABABAC", +"b, c #A9AAA9", +"c, c #A2A3A3", +"d, c #E1E1E2", +"e, c #E6E5E6", +"f, c #D58F13", +"g, c #DB9214", +"h, c #966207", +"i, c #7A4F02", +"j, c #7C5002", +"k, c #805203", +"l, c #815203", +"m, c #815405", +"n, c #835405", +"o, c #976306", +"p, c #B07208", +"q, c #B67608", +"r, c #B37408", +"s, c #B37409", +"t, c #B67708", +"u, c #AC6F08", +"v, c #9B6508", +"w, c #CA840A", +"x, c #362202", +"y, c #634206", +"z, c #B2B2B1", +"A, c #B0B0B1", +"B, c #A7A6A7", +"C, c #C9C9CA", +"D, c #C2C2C2", +"E, c #C7C7C8", +"F, c #E2E2E1", +"G, c #E4E5E4", +"H, c #A16A09", +"I, c #7B4F03", +"J, c #794E02", +"K, c #835404", +"L, c #815305", +"M, c #915D06", +"N, c #AA7007", +"O, c #B27508", +"P, c #BF7D09", +"Q, c #C88209", +"R, c #563804", +"S, c #1C1201", +"T, c #D28C0F", +"U, c #C7C8C7", +"V, c #BABAB9", +"W, c #B9B8B9", +"X, c #B5B5B4", +"Y, c #AFAEAE", +"Z, c #AAAAA9", +"`, c #A3A3A4", +" ' c #E0E0E0", +".' c #DADADA", +"+' c #D78F14", +"@' c #AC710C", +"#' c #774C02", +"$' c #7D5003", +"%' c #7F5103", +"&' c #805305", +"*' c #8B5A05", +"=' c #B27308", +"-' c #B77808", +";' c #0C0800", +">' c #BB7A09", +",' c #7C5209", +"'' c #C9860F", +")' c #C6830F", +"!' c #ADACAD", +"~' c #D9D9D8", +"{' c #DDDCDC", +"]' c #E1E1E1", +"^' c #B6780E", +"/' c #754B01", +"(' c #7D5103", +"_' c #865704", +":' c #9E6606", +"<' c #593904", +"[' c #BD7A08", +"}' c #191001", +"|' c #CD8910", +"1' c #C5C5C5", +"2' c #C2C3C3", +"3' c #B7B6B6", +"4' c #A8A9A9", +"5' c #C48310", +"6' c #8E5C06", +"7' c #754A01", +"8' c #7C4F03", +"9' c #815403", +"0' c #7F5104", +"a' c #A16906", +"b' c #AB6F07", +"c' c #C07D08", +"d' c #1E1301", +"e' c #482F02", +"f' c #C8830B", +"g' c #C3820E", +"h' c #D78F10", +"i' c #C5C5C6", +"j' c #BDBEBD", +"k' c #BBBABB", +"l' c #B1B2B2", +"m' c #A4A5A4", +"n' c #DADAD9", +"o' c #724800", +"p' c #764C01", +"q' c #915D05", +"r' c #966105", +"s' c #2E1E02", +"t' c #B87806", +"u' c #B57507", +"v' c #583904", +"w' c #281A01", +"x' c #C17E07", +"y' c #A76D09", +"z' c #A16B0D", +"A' c #C98510", +"B' c #C4C5C4", +"C' c #C3C3C2", +"D' c #BABBBB", +"E' c #BAB9BA", +"F' c #B3B4B3", +"G' c #A7A8A7", +"H' c #DA9314", +"I' c #DE9515", +"J' c #C38210", +"K' c #754C01", +"L' c #7B4F02", +"M' c #7C4F02", +"N' c #7C5103", +"O' c #7D5104", +"P' c #8A5A04", +"Q' c #A36A05", +"R' c #AF7106", +"S' c #B27306", +"T' c #0A0700", +"U' c #764D04", +"V' c #B77607", +"W' c #472E03", +"X' c #BC7907", +"Y' c #A96D06", +"Z' c #191002", +"`' c #B87A0D", +" ) c #CB8610", +".) c #BBBBBC", +"+) c #BBBABA", +"@) c #B3B4B4", +"#) c #B2B1B1", +"$) c #D5D5D4", +"%) c #986408", +"&) c #845503", +"*) c #9D6605", +"=) c #B57606", +"-) c #774D04", +";) c #0E0900", +">) c #B27406", +",) c #794E05", +"') c #C9840C", +")) c #D68E11", +"!) c #C3C4C3", +"~) c #C3C2C3", +"{) c #C0BFBF", +"]) c #B7B6B7", +"^) c #B0B0AF", +"/) c #AEAFAE", +"() c #ABACAB", +"_) c #CF8A13", +":) c #784D02", +"<) c #7E5003", +"[) c #976104", +"}) c #B67606", +"|) c #B77706", +"1) c #201501", +"2) c #563803", +"3) c #C37E07", +"4) c #9C6609", +"5) c #C48210", +"6) c #C2C2C1", +"7) c #BCBCBD", +"8) c #B8B9B7", +"9) c #B4B3B4", +"0) c #B0B1B1", +"a) c #734900", +"b) c #905D04", +"c) c #AB6F05", +"d) c #845604", +"e) c #4E3303", +"f) c #BF7C06", +"g) c #8A5903", +"h) c #CE8810", +"i) c #C0C0BF", +"j) c #B8B8B7", +"k) c #B4B5B5", +"l) c #B3B2B3", +"m) c #7E5102", +"n) c #784E01", +"o) c #7B4E02", +"p) c #A26904", +"q) c #AF7205", +"r) c #8F5D04", +"s) c #B67605", +"t) c #9C6505", +"u) c #A16807", +"v) c #D99112", +"w) c #CE8A12", +"x) c #D6D7D6", +"y) c #B40202", +"z) c #A50303", +"A) c #970303", +"B) c #B2760D", +"C) c #724900", +"D) c #794F02", +"E) c #794D03", +"F) c #875703", +"G) c #9C6404", +"H) c #A86B05", +"I) c #B47305", +"J) c #A96E04", +"K) c #C07C07", +"L) c #BFC0C0", +"M) c #B2B2B3", +"N) c #CCCBCC", +"O) c #BE0B0B", +"P) c #B30101", +"Q) c #A30303", +"R) c #940101", +"S) c #830202", +"T) c #750101", +"U) c #DA9315", +"V) c #956003", +"W) c #9F6603", +"X) c #734903", +"Y) c #B27204", +"Z) c #593903", +"`) c #684403", +" ! c #BD7B04", +".! c #654202", +"+! c #724C09", +"@! c #C0C1C0", +"#! c #C0BFC1", +"$! c #BBBBBA", +"%! c #B8B8B9", +"&! c #ADAEAD", +"*! c #ABABAA", +"=! c #D1D1D2", +"-! c #AF4E51", +";! c #A43637", +">! c #9A1616", +",! c #8C0E0F", +"'! c #7F0202", +")! c #6E0000", +"!! c #630102", +"~! c #BF7F0F", +"{! c #905C03", +"]! c #A46903", +"^! c #8E5C03", +"/! c #9D6404", +"(! c #AA6D04", +"_! c #835403", +":! c #B97805", +"~ c #CF8B13", +",~ c #DD9415", +"'~ c #D58F14", +")~ c #C1C0C0", +"!~ c #B9B8B8", +"~~ c #BDBCBC", +"{~ c #CCCBCB", +"]~ c #CFCECE", +"^~ c #C38229", +"/~ c #B87D28", +"(~ c #AB7425", +"_~ c #9E6B22", +":~ c #92621F", +"<~ c #85591C", +"[~ c #78521A", +"}~ c #6F4B17", +"|~ c #9C6401", +"1~ c #956002", +"2~ c #120C00", +"3~ c #9E6501", +"4~ c #533707", +"5~ c #C88612", +"6~ c #D99215", +"7~ c #BCBDBD", +"8~ c #B9B9BA", +"9~ c #CECDCD", +"0~ c #C08028", +"a~ c #B57A27", +"b~ c #A87124", +"c~ c #9B6921", +"d~ c #90601E", +"e~ c #82591C", +"f~ c #76501A", +"g~ c #A56B04", +"h~ c #AA6E01", +"i~ c #1E1300", +"j~ c #603F04", +"k~ c #C2C2C3", +"l~ c #C9C9C8", +"m~ c #CCCDCC", +"n~ c #BE8029", +"o~ c #B07827", +"p~ c #A46F23", +"q~ c #976620", +"r~ c #8C5E1C", +"s~ c #7F561B", +"t~ c #744E19", +"u~ c #DB9316", +"v~ c #DF9517", +"w~ c #C1C1C2", +"x~ c #BA7D29", +"y~ c #AE7626", +"z~ c #A06D22", +"A~ c #946420", +"B~ c #885C1D", +"C~ c #7C531B", +"D~ c #734C18", +"E~ c #DD9516", +"F~ c #BEBDBD", +"G~ c #BDBDBE", +"H~ c #B5B4B5", +"I~ c #CBCACB", +"J~ c #C28129", +"K~ c #B87C28", +"L~ c #AB7325", +"M~ c #9D6A22", +"N~ c #916220", +"O~ c #855A1C", +"P~ c #795119", +"Q~ c #704B17", +"R~ c #C3C3C4", +"S~ c #B5B6B5", +"T~ c #CCCCCD", +"U~ c #C08129", +"V~ c #A77124", +"W~ c #9A6821", +"X~ c #8E601F", +"Y~ c #81571C", +"Z~ c #765018", +"`~ c #BCBDBC", +" { c #CBCBC9", +".{ c #BC7F28", +"+{ c #B07826", +"@{ c #A46F22", +"#{ c #976621", +"${ c #8B5E1E", +"%{ c #7E551B", +"&{ c #734D18", +"*{ c #C38428", +"={ c #BA7D27", +"-{ c #AE7524", +";{ c #A16D22", +">{ c #724C18", +",{ c #C9C8C9", +"'{ c #C08128", +"){ c #B77B27", +"!{ c #AA7325", +"~{ c #91621F", +"{{ c #845A1C", +"]{ c #714B17", +"^{ c #C1C3C2", +"/{ c #BCBBBC", +"({ c #BF8128", +"_{ c #B47A27", +":{ c #A67124", +"<{ c #8D5F1E", +"[{ c #81571B", +"}{ c #754F18", +"|{ c #C4C3C3", +"1{ c #B9BAB8", +"2{ c #C7C6C6", +"3{ c #B17726", +"4{ c #A36E24", +"5{ c #8A5D1D", +"6{ c #7E541B", +"7{ c #744D18", +"8{ c #C1BFC0", +"9{ c #C7C6C7", +"0{ c #C28329", +"a{ c #B97D28", +"b{ c #AD7526", +"c{ c #A06C23", +"d{ c #875B1D", +"e{ c #7A531A", +"f{ c #724D17", +"g{ c #C5C6C6", +"h{ c #C5C5C4", +"i{ c #B1AFB0", +"j{ c #C6C6C5", +"k{ c #C18229", +"l{ c #B77C27", +"m{ c #A97425", +"n{ c #9D6922", +"o{ c #91611F", +"p{ c #84581C", +"q{ c #775019", +"r{ c #6F4B16", +"s{ c #C4C5C5", +"t{ c #A57123", +"u{ c #9A6721", +"v{ c #8D5F1D", +"w{ c #764F19", +"x{ c #C0C1BF", +"y{ c #B07726", +"z{ c #A26E23", +"A{ c #966520", +"B{ c #7D541A", +"C{ c #744D17", +"D{ c #C8C7C8", +"E{ c #C5C4C5", +"F{ c #BABABB", +"G{ c #BFBEBE", +"H{ c #C3C4C4", +"I{ c #C38329", +"J{ c #AD7625", +"K{ c #9F6C23", +"L{ c #936320", +"M{ c #875B1C", +"N{ c #724C17", +"O{ c #BF8028", +"P{ c #B67B27", +"Q{ c #AA7224", +"R{ c #9C6A21", +"S{ c #8F611E", +"T{ c #83591C", +"U{ c #785119", +"V{ c #6F4A15", +"W{ c #B6B8B8", +"X{ c #C5C7C7", +"Y{ c #BE8128", +"Z{ c #B37926", +"`{ c #A57023", +" ] c #996720", +".] c #80571C", +"+] c #C6C6C7", +"@] c #C3C4C2", +"#] c #C2C3C1", +"$] c #B3B5B3", +"%] c #BB7E27", +"&] c #AF7725", +"*] c #A26D23", +"=] c #96641F", +"-] c #8A5C1D", +";] c #7C541B", +">] c #C1C2C1", +",] c #C1C0C1", +"'] c #C2832A", +")] c #AC7425", +"!] c #9F6B22", +"~] c #92631F", +"{] c #865A1C", +"]] c #7A5219", +"^] c #714B16", +"/] c #BF8029", +"(] c #A97224", +"_] c #9C6922", +":] c #8F601F", +"<] c #83581C", +"[] c #785019", +"}] c #6F4916", +"|] c #C3C2C2", +"1] c #BE8028", +"2] c #B27826", +"3] c #A47023", +"4] c #986821", +"5] c #8B5F1E", +"6] c #80561C", +"7] c #744F17", +"8] c #BB7F27", +"9] c #AE7625", +"0] c #956520", +"a] c #885C1E", +"b] c #C28227", +"c] c #B97D27", +"d] c #865A1D", +"e] c #7A5119", +"f] c #C7C9C7", +"g] c #B67B26", +"h] c #A87223", +"i] c #8E611E", +"j] c #6E4A16", +"k] c #CACBCA", +"l] c #C9CBC9", +"m] c #986721", +"n] c #8B5F1D", +"o] c #80561B", +"p] c #C38327", +"q] c #BB7E28", +"r] c #A16E23", +"s] c #895C1D", +"t] c #714C18", +"u] c #A8A8A7", +"v] c #C2C1C2", +"w] c #C28229", +"x] c #B87C27", +"y] c #9E6B23", +"z] c #85591D", +"A] c #78511A", +"B] c #714C17", +"C] c #C4C3C2", +"D] c #A77224", +"E] c #9B6821", +"F] c #8F601E", +"G] c #82581C", +"H] c #BD7F28", +"I] c #986620", +"J] c #7F561C", +"K] c #734E18", +"L] c #B7B6B8", +"M] c #C38328", +"N] c #BB7D28", +"O] c #AF7625", +"P] c #C08228", +"Q] c #90621F", +"R] c #785219", +"S] c #704B16", +"T] c #9A6822", +"U] c #8D601F", +"V] c #81581C", +"W] c #765019", +"X] c #BDBFBD", +"Y] c #BC7F27", +"Z] c #A36F24", +"`] c #7F561A", +" ^ c #C48328", +".^ c #A06C22", +"+^ c #875C1D", +"@^ c #714D17", +"#^ c #AFAFB0", +"$^ c #CAC9C9", +"%^ c #C18227", +"&^ c #9D6A21", +"*^ c #91611E", +"=^ c #785118", +"-^ c #9A6720", +";^ c #8E5F1D", +">^ c #81571A", +",^ c #C78C35", +"'^ c #7C541A", +")^ c #A7A8A8", +"!^ c #F6C06D", +"~^ c #D9A34F", +"{^ c #C18935", +"]^ c #BD8731", +"^^ c #A47126", +"/^ c #8D601D", +"(^ c #845B1A", +"_^ c #775017", +":^ c #F1BB65", +"<^ c #E7B05A", +"[^ c #DEA74C", +"}^ c #D9A240", +"|^ c #C18C30", +"1^ c #AA7720", +"2^ c #AA771B", +"3^ c #916415", +"4^ c #E8B259", +"5^ c #E3AC4E", +"6^ c #DCA540", +"7^ c #D39B32", +"8^ c #D09625", +"9^ c #D0941C", +"0^ c #E6B056", +"a^ c #E0AA49", +"b^ c #D9A23B", +"c^ c #D49B2F", +"d^ c #D09623", +"e^ c #E5AF51", +"f^ c #DFA847", +"g^ c #D9A139", +"h^ c #D3992C", +"i^ c #CD9321", +"j^ c #B0AEAE", +"k^ c #E2AB4B", +"l^ c #DEA743", +"m^ c #D89F36", +"n^ c #D49A2A", +"o^ c #DBA344", +"p^ c #DAA23E", +"q^ c #D79E33", +"r^ c #826122", +" ", +" ", +" ", +" . ", +" + + @ # ", +" $ % & * = # ", +" - ; > , ' ) + . ", +" ! ~ { ] ^ / ( _ : = < ", +" [ } ! | 1 2 3 4 5 6 7 8 @ ", +" } 9 0 a b c 2 2 c d e f g + . ", +" h h i j k l b l 7 4 2 m n o 4 p < ", +" q q h r s t u v b b l 7 w x y z A B % C ", +" D E F G H I J I u u K L l w M N O P Q R S < ", +" T U V D W X Y X I u I v v u K l Z O ` ...+.@.8 $ ", +" T #.$.%.&.*.=.-.X I u u u v u K v ;.>.,.'.).!.3 ~.% $ ", +" {.].^./.(._.:.=.=.-.X X I I I v u I <.[.}.|.1.2.3.4.5.$ $ ", +" 6.7.7.8.9.0.a.b.c.:.:.-.-.-.X X I I I v d.e.f.g.f.L h.K i.j.k.8 ", +" l.m.n.{.o.p.q.r.r.s.t.t.:.:.=.=.X X X I I u.v.w.` x.y.z.A.B.C.D.| 8 ", +" E.F.G.H.I.J.p.r.K.r.r.s.a.:.:.=.=.=.=.-.X L.M.N.O.P.Q.R.S.T.U.V.W.X.k.$ ", +" Y.Z.`. +.+++@+#+#+#+#+r.K.K.a.b.c.t.=.-.=.X $+%+&+*+=+) -+;+>+,+'+)+!+~+{+8 ", +" ]+]+^+/+(+_+:+<+[+@+@+@+#+r.p.r.r.K.c.t.=.=.=.=.}+|+1+X 2+3+4+5+D.6+7+8+9+0+a+b+$ ", +" c+d+e+E.f+g+_+:+:+<+[+@+@+h+#+#+p.r.i+j+k+l+m+t.=.=.n+o+p+q+r+s+5+5+>+t+u+v+w+x+y+i - z+ ", +" A+A+B+C+D+E+g+_+_+:+:+F+G+<+@+@+H+I+J+K+L+M+N+O+P+t.K.J.Q+S.R+S+T+S+U+3+V+W+X+Y+Z+`+. @ - ", +" B+B+B+ @.@+@E+E+E+E+.@@@:+#@<+<+@+$@%@&@*@=@-@r.;@K.>@7 ,@'@S+)@!@!@~@{@]@^@/@(@_@:@<@| { ", +" [@}@}@|@1@2@3@3@3@E+E+E+E+E+.@.@@@4@5@6@7@8@9@0@r.r.a@:.b@c@~@d@e@)@f@~@g@h@i@j@k@l@:@:@:@ ", +" m@n@o@p@(+q@q@r@+@+@3@E+E+E+E+E+.@_+s@t@u@v@w@x@H+#+y@z@A@B@C@D@E@F@G@H@b@I@J@K@L@M@N@O@i ", +" o@o@P@Q@R@q@S@T@T@+@+@+@3@3@U@E+E+_+E+V@W@X@Y@Z@`@ #:+.#+#@#e@##$#%#&#!@*#=#-#;#>#,#'#)#!#~# ", +" o@{#]#^#/#(#_#(#(#2@T@T@r@+@+@3@3@:#E+E+E+<#[#Y@Y@}#|#1#' 2#y+3#=#4#5#6#7#8#9#0#a#b#7.i E c# ", +" d#e#f#g#h#i#j#k#k#(#2@T@T@T@T@r@+@3@3@E+l#m#n#o#n#p#q#r#s#t#u#v#v#w#d@x#y#z#A#B#C#$.D#D E# F# ", +" j.G#H#I#J#K#L#j#M#k#k#k#k#2@2@2@T@r@+@+@+@:#N#O#P#Q#R#S#T#U#V#W#W#v#X#y+Y#Z#`# $.$+$@$#$U $$%$ ", +" G#&$*$=$-$;$>$,$,$'$j#M#M#k#q@q@2@(#T@T@r@T@r@)$!$~${$]$Y@^$/$X#W#W#t#($v#'@_$:$<$[$}$T #$ c#|$ ", +" 1$2$3$4$5$6$7$6$8$9$,$8$j#'$M#k#0$k#2@2@2@T@T@T@a$b$c$d$e$f$g$h$i$U#t#j$k$l$l$m$#@n$o$p$]. q$r$ ", +" s$t$u$v$w$x$>$y$6$6$8$8$8$,$,$j#j#M#k#k#2@2@2@T@T@z$A$B$C$D$E$F$G$U#H$I$J$K$L$M$N$O$P$Q$Q$ q$r$$$ ", +" R$S$T$U$V$W$X$>$>$>$6$6$L#8$8$8$'$Y$j#j#k#k#2@2@2@Z$`$ %.%+%@%#%$%%%&%*%=%-%6#;%>%,%'%)%/+ r$!%~% ", +" S$S${%]%^%/%(%_%_%_%:%<%>$6$L#L#8$8$9$,$[%j#M#M#k#k#9$}%|%1%E$2%3%4%5%6%7%8%9%0%a%b%{.c%l. q$q$~% ", +" d%d%e%f%g%/%h%(%i%i%<%j%j%>$:%:%>$6$L#L#8$9$,$,$'$Y$'$K#k%k@l%m%n%o%p%q%r%s%t%u%v%G#l.w%x% !%r$~%y% ", +" z%{%X.A%B%C%D%C%E%(%(%_%_%_%<%<%:%>$>$>$6$6$i#F%'$8$i#G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%}@V%]+ W%X%q$Y% ", +" U%Z%`% &y$.&+&/%W$E%(%(%(%@&_%<%_%j%<%j%>$>$6$L#8$9$#&$&%&&&*&&&&&=&-&;&>&,&,&'&)&!&E.C+~& {&]&^&Y% ", +" /&Z%(&_&:&<&[&/%/%/%/%/%C%E%E%(%i%_%_%j%j%>$<%>$6$y$}&|&1&2&3&4&4&5&6&7&8&9&0&a&b&c&n#d&e& X%c#+%f&W% ", +" g&h&i&j&k&l&m&n&o&/%p&/%/%/%C%/%E%E%(%_%_%7$_%_%j%>$(%#&q&r&s&t&t&u&4&v&w&x&5%o%y&y&z&A&Q#B& ~%C&D&p#E& ", +" F&G&H&I&o.m&J&K&L&h%L&p&p&p&/%/%C%E%E%E%E%(%@&_%j%<%M&W$N&O&P&Q&R&S&&&T&U&J#V&W&X&Y&Z&`& *z&.*+*@* #*$*%*&***=* ", +" -*2&;*>*,*'*)*!*[&[&!*L&h%L&p&/%/%/%/%/%E%E%E%(%_%(%/%:&~*H&;*{*]*^*/*k@(*_*:*<*[*}*Y&P%|*1*2*3*$%4* 5*6*7*8*)&%$ ", +" 9*u&5&0*a*b*c*m&d*e*)*!*K&h%K&K&h%f*/%p&/%C%W$W$E%(%h%g*h*h&;*h&k@i*j*k*l*m*n*o*p*q*r*E$s* *b&1*t*b&u*Y@X@ v*~%w*x*y*z*$$ ", +" u&u&*&A*V$B*J&C*D*m&C*d*)*)*!*[&[&K&n&o&p&f*/%/%/%/%E*E%.$F*G*H*X.h&I*t&J*K*L*M*N*O*P*Q*R*S*T*z&1*U*V*W*X*Y*v@Z* {&`* =.=+=@=#=c# ", +" 5&$=J%%=&=b**===-=C*D*C*C*e*e*)*d*!*[&L&h%L&o&L&/%/%n&D%;=>=,=/&I&X.'=I&)=!=~=t&{=U$Q*]=^= f$/=(=1*_=V*:=<=[=}=|=X@ 1=c#]$2=3=4=1*5=y% ", +" &&5&6=7=8=9=0=a=9=J&J&c*c*b=C*C*m&)*)*e*!*!*n&L&+&h%n&.&:&c=d=U%e=F*F*G*q&Z%f=g=a%h=*$i=j. P#+%j=_=V*k=D&l=m=l=2%n=o=p= q=r=s=t=u=v=w=x=y=!%z= ", +" A=B=C=D=)*E=b*F=F=9===J&G=D*D*D*C*m&d*!*d*!*!*H=[&L&I=J=K=U%{%L=d%d%M={%N=v%O=P=/#Q=4$G#G# R=8&%*j=V*V*S=:=T=7*U=U=V=8&X@W=X= {&Y=r=s=Z=`= -.-+-@-#-$-%- ", +" &-6=*-=-a*--;-b*>->-9=9=9=9=9=c*,-D*C*C*C*m&d*d*!*'-)-K&1 R$!-~-L=L=e=L=n&{-]-8=^-s$/-(-1$ B$B$_-:-V*<-D&[-7*}-m=&*@=3%|-R#1-Z=2-3-z*4-5-6-7-8-9-0-a-b-c-d-w=d-b&c#%- ", +" a+e-f-g-h-i-j-*=b*b*b*b*k-k-9=9=a===G=c*c*D*C*C*C*e*l-b=m-/-n-o-p-q-r-s-@&t-N*6#D+U%u-T$u$ +%E$v-V*_=w-x-D&y-z-m=m=@=A-B-m=C-c&/=Y@D-v@X@E-)&F-G-1*H-I-J-K-L-M-N-y=X% ", +" e-O-P-Q-R-j-S-B*B*B*B**=b*b*b*>-9=9=9=J&a=J&c*D*D*C*J&'*T-U-V-R$1$r-W-X-Y-d=6#Z-`-o. ;R$.; +%d$+;@;V*#;k=x-T=7*}-m=@=&*$;%;&;*;B-=;-;D&T=&*m=;;>;,;';K-);!;~;{;!;z&];c# ", +" H$v#*-^;/;(;0=0=_;B*B*B**=b*b*b*>->->-9===9=J&J&G=J&'*:;<;(-u$[;1$};u$|;1;2;3;4;5;A%L=6; ]$/=7;8;_=X*S=x-W*T=7*9;0;a;b;;;%;&;c;d;d;e;f;b-g;u=h;u=i;j;k;!;K-l;m;N-n;o;y% ", +" p;P-v#q;r;s;t;u;v;v;;-B*B*B*B*B**=b*b*>->-F=k-9=====b*'-H.G#*$4$/-[;H#f%w;x;w$p-R${%y;d%A% N%d$z; *1*_=V*S=D&T=A;}-m=@=B;C;A-B-&;N-D;E;e;#-F;b-G;>;H;I;J;K;L;L-M;N;O;X%P; ", +" f-Q;R;S;T;U;V;W;E=u;X;u;0=v;_;B*B*B**=*=b*b*b*F=>-k-B*a=Y;{#]=^=^=4$Z;n-`; >6#D+.>+>_@d%d% @>#>z;(=[=$>2*V*%>&><=*>}-0;=>->;>B->>,>D;d;8*'>y*b-)>!>>;u=';);~>d-K-{>|-]>^> ", +" X#W#=%Q-/>(>_>E=W;W;E=E=E=u;:>v;0=;-B**=*=*=*=b*b*b*B**=<>[>}>|>|>|>1>|>j.2>[&3>4>5>F*6>F* |-7>z;(=8>1*:-_=S=[-T=7*A;9>0>&*a>;;b>N-c>d>d;#-e>f>,;g>h>i;i;i>!;c-!;j>z;q$`* ", +" v#k>d@*%l>m>n>m>o>E=W;E=W;E=E=u;u;p>0=v;;-B*B*B**=*=B*p>q>r>s>i=o@o@t>u>v>l-3>w>x>,=Z%y>X. |-|-z>A>b&b&1*_=V*D&T=7*}-m=0>a;B>C>=;D>,>c>E>8*F>G>b-G;H-u=i;H>d-I>J>K>)&1=r$ ", +" L>M>H@N>O>P>Q>R>m>o>o>o>W;W;E=E=E=u;u;0=S>0=T>B*B*;-U>r;V>W>X>6#Y>f#Z>`> ,.,6#]=e%;*+,X.X. {$;&9&_-@,8; *_=V*S=D&T=#,}-$,=>&*%,=;&,c;,>*,e;=,-,,;;,>,,,J;!;',b-_=),3-!,~, ", +" {,d@4#],^,/,(,(;_,:,Q>V;m>o>--W;E=W;E=E=E=:>p>v;0=B*E=<,[,},r>},|,1,2,3,4,5,<;6,7,R&-*'=F& S%|-{$8,z&b&b&1*2*k=9,D&T=#,0,m=&*->a,B-b,N-d>y*&;c>d;g;;,,,c,*,}-D$N%X=d,`*e, ", +" f,d@g,-%h,i,j,(;(;(;k,Q>l,Q>m>m>m,o>n,W;E=E=E=u;:>:>t;X;o,p,q,r,s,B+t,u,p-v,w,x,y,2&S&S&-* z>S%V=z&z&b&8>_=V*S=D&z,A,A,m=j>b;->A-B-&;B,8*}-2%E$C,@%D,9&E,E$3-z*];F,G, ", +" F@F@D.X#H,I,J,U;(>(>(>(>k,k,l,V;V;V;m,o>K,----E=W;E=t;L,M,N,m@A+A+O,[>P,4,Q,R,S, ,F*T,7=;* C$U,w*V,P%W,b&1*_=X,D&[-y-#,}-Y,&*->A-B-Z,N-`,x-B$ '.'1-@*1-@*X=3-s=d,1= ", +" +'+'U+)@@'U;#'$'s;s;%'(>(>(>(;k,(;_,V;V;V;o>o>t;--E=t;&'*'j V%e++$='},-'}@9=;'>'P@,'''4&)' 9&E,w*K>V,y&b&1*_=V*S=D&T=7*}-m=@=!'a,=;>>&;2=@=B$~'o= {']'s=3- ", +" )@s+D.^'O>/'I,n>('('('s;U;(>(>k,k,k,k,k,Q>m>m>m>o>o>Q>_':']+e+~&~&~&x%+$<'C+['}'[%&&|'5&+, 1'T*2'K>a&z&|*@,3'X*<-D&l=7*#,0,0>j>B>a,%;4'D;B-]$o=p# ", +" T+~@B.5'6'7' 8'$'n>$'('('s;(>(>(>(>k,k,Q>Q>:,9'R>0'o>a'E.w%x%x%]++$t,b'c'd'e'f'g'h'&&5& i'i'+;j'k'k'z&b&1*3'X*S=&>l'7*}-$,U=b;->A-Z,m'b;c&n'p# ", +" G@S+.$o'p' n>8'$'('('s;U;(>(>(>k,k,k,(;(;(>(>q',%r's't'F.'%+$u'v'w'x'y'z'H$A=A' B'1'C'>&K>D'E'z&a-1*X*S=F'T=7*A;-;@=&*->A-B-G'G'9&E-X@ ", +" H'I'J'K'L' 8'M'n>N'$'('('s;s;(>(>(>k,%'O'P'Q'R'l.S'T'U'V'[$W'X'Y'Z'`'a+f- ) +;c&+;3%K>.)+)z&8;U*C-X,@)&>#)*>}-m=j>B>->A-c;N-A&X@$) ", +" 5+T.%)7'L' 8'j,8'8'n>n>('s;s;U;(>U;n>&)*)n.l.m.m.=)-);)>)w%6#,)')*-))a+&- !)!)~){)A>K>(=Z&`& *])t*<-@)T=y-#,^)/)&*;>()G'&;(=n#v@ ", +" U+_):)i,i,i,L'L'I,M'8'8'$'('('<)s;n>R>[)#$Q$#$].].})m.|)1)2)3)4)5)U#O-e- 6)+;+;A&7)j=j=Z&y&8)1*_=#;9)D&y-0)}-0;@=b;C;B-e;7)8&Y@ ", +" 5+T.5$a)/,i,I,8'M'M'8'8'n>$'n>I,$'b)E 7.T #$p$c)#$d)e)f)g)9#Q-X#P-h) D,D,i)3%3%(=a&z&b&j)@;V*k)x-l)z,}-m=m=@=a>B-c;S=o#~$ ", +" D.F@m)n)i,o)L'L'M'L'8'n>P>P>g)p)#$T T T U q)r)s)t)6#u)K%v)w#w) D$D$@%8,3%A>(=V,P%j)])_=V*9,D&<=#,-;@=&*b;%;N-X*]$x)y= y)z)A) ", +" D.J@B)C)D)i,i,i,L'L'/,E)F)G)$.D H)G {+I)#$J)6#P>K).+M>k>X# L)D$@%Q%Q%3%p%a&z&|*b&])#;k=F'l)7*}--;0>&*->d>M)N)P# O)P)Q)R)S)T) ", +" U)6+<,p'/,/,i,i,:)s;V)W)X)Y)q E#E#D Z)`) !.!+!j$=#X#W# A&@!#!O%Q%Q%A>$!V,%!8>])_=w-@)W*T=7*}-m=&!->*!=>N%y==! -!;!>!,!'!)!!! ", +" D.T.~!a)J,/,#'P>{!]!$.^!6#/!D (!_!:!Z&z&%!1*_=2*S=D&T=7*}-m=@=->&;7*G-o#8& 2!3!4!5!6!7!8!9! ", +" D.J@0!a!:)b!c!h ]!} d!e!f!g!h!6#i!['j!k!=#L> l!|!@%@%}!m!3%0&j=Z&W,$>:-C-k)@)&>n!*>9;@==>A-$;i'E$8& o!p!q!r!s!t!u! ", +" v!w!x!y!i :@:@:@h h z!A!B!C!D!E!F@+'=# Q%m!|!D$@%l!3%A>(=Z&z&b&])#;V*S=F!T=7*A;}-@=->C;G!S*E$ H!I!J!K!L!M!N! ", +" O!T.d#= $ { P!| i!Q!R!S!{=T!U!V!H@ Q%3%Q%W!W!A&Q%X!A>(=Z&`&b&_=t*V*x-#)*>A,m=$,A-Y!7)E$Z! `! ~.~+~@~#~$~ ", +" %~F@$ &~*~- =~-~6#;~(->~,~'~`# A>0&>&)~D${)Q%m!3%.)Z&P%!~1*@;V*S=D&T=*>}-m=&*B-~~{~]~ ^~/~(~_~:~<~[~}~ ", +" D.B.L=|~1~2~3~*~4~5~6~~@)@ (=0&D$D$@%|!m!7~A>(=8~b&$>_=_=k=x-D&<=*>-;Y!->[=9~]$ 0~a~b~c~d~e~f~ ", +" %~D.g~h~i~j~*%v!I')@ D'K>L)k~#%A&Q%3%7)(=$!z&8;1*2*V*S=l)T=0)9;@=$;U*l~+%m~ n~o~p~q~r~s~t~ ", +" u~v~-*i _*g@%~T+ z&D'A&w*w~@%_-Q%7~K>(=Z&z&b&@;2*k)S=l)#)A,m=A-])9&]$ ^~x~y~z~A~B~C~D~ ", +" U+,~U)E~5+6~ Z&V,A&~)w~G!A&F~G~A>(=Z&z&b&1*@;X*H~:=T=7*}-0>0)9&N%I~ J~K~L~M~N~O~P~Q~ ", +" 4+U+u~U) W,E'j'R~k~D$L)A&3%1!0&(=Z&!~8>2*S~w-D&D&#)}-a;D&D,T~|- U~a~V~W~X~Y~Z~ ", +" D. b& *Q%7;+;D$G!}!3*j'`~(=Z&8~b&a-2*w-S=D&T=z-@=n!D,|- { .{+{@{#{${%{&{ ", +" *1*$!!)+;D,D$@%l!j'`~(=+)E'%!b&1*2*S=:=T=y-9;-;@%S%C, *{={-{;{A~B~#~>{ ", +" _=1*(=+;c&~)6)@%A&Q%>&A>k'E'z&b&1*_=V*S=l)M)0,n!.)z>,{ '{){!{M~~{{{P~]{ ", +" _=V*Z&^{1'+;D,@!@%A&m!7)/{(=V,b&@,1*S~k)x-l'A,m=3%z;C$ ({_{:{W~<{[{}{ ", +" #;V*_=+;1'|{D,D$@%A&Q%3%~~(=Z&1{b&1*@;S~S=l)T=-;`&2{9& .{3{4{#{5{6{7{ ", +" S=b&8{2{G-D,w*D$@%3*>&7).)D'8~%!8>_=V*k):=z,7* *c&9{ 0{a{b{c{A~d{e{f{ ", +" w-[-S~@!g{h{+;7;#%{)A&3*j'A>$!E'8~b&1*C-V*S=l=i{b&+;j{ k{l{m{n{o{p{q{r{ ", +" D&[-}!9&s{c&+;D,@!A&Q%j'7~/{$!z&8;b&1*C-w-@)7*H~+;h{j{ ({_{t{u{v{[{w{ ", +" z,:=j=U,z;c&!)7;D$x{_-Q%1!/{+)P%z&a-_=_=X,x-l'X,{)1'G- .{y{z{A{5{B{C{ ", +" 7*#)3%j{D{E{G-+;D,D$O%|!G~A>.)F{z&z&1*_=V*9,z,V*G{H{s{ I{a{J{K{L{M{e{N{ ", +" z-}-8~E,`=1'c&+;D,D$@%A&4%3%.)$!Z&z&b&1*_=V*F'T=j'+;~) O{P{Q{R{S{T{U{V{ ", +" 0,A;W{X{C$z;h{c&D,D,D$L)Q%3%7)j=Z&z&b&8>3'S~F'<-$!7;2' Y{Z{`{ ]<{.]}{ ", +" 9>&!b&c&S%+]i'h{@]#]W!i)A&Q%3%A>(=Z&z&@,])S~$]F'k'L)w* %]&]*]=]-];]f{ ", +" -;/)D&u*l~`=i'1'c&7;>]D${)3*Q%A>(=Z&y&8;1*3'V*9)z&,]D$ ']a{)]!]~]{]]]^] ", +" Y!:=7;N%2%z;1'c&+;D,#%@%|!m!1!0&a&,&`&j)1*C-V*8;i)@% /]P{(]_]:]<][]}] ", +" 0;->n!6)|-C$2{z;s{+;|]v-@%i)8,3%`~p%k'8~`&1*_=w-8;Q%@% 1]2]3]4]5]6]7] ", +" !'&*w~S%z>T*o%h{c&+;|]W!}!3*Q%F~0&+)E'!~b&_=#;2*3%G{ 8]9]z{0]a]C~f{ ", +" A-0>.)]$S%C$9{j{h{+;2'D$@!A&Q%F~A>(=Z&z&b&8>2*1*K>4%G{ b]c])]!]:~d]e]]{ ", +" *!;;7)S%N%f]U,2{1'c&+;D,D$@%A&Q%7).)(=Z&|*1*2*U*(=3%>& ({g]h]c~i]<]w{j] ", +" a,b,V,k]l]C$T*T*z;s{+;7;D$W!A&m!3%A>(=+)W,b&1*_=8~A>3% n~2]p~m]n]o]7{ ", +" 4'%;w-{~@>l~,{9&z;1'c&C'6)@%}!Q%3%A>(=+)Z&W,1* *z&(=1! p]q] ~r]A~s]#~t] ", +" ;>u]_=9&d$|-S%C$E,z;s*G-D,v])~A&4%3%A>(=V,!~j)1*z&D'(= w]x](~y]~{z]A]B] ", +" @=c>^)l~]$'&N%N% z;h{C]6),]V=8,m!3%/{D'V,b&$>b&P%D' '{){D]E]F]G]w{ ", +" -;B>v-+%N% !)#]@!|!Q%3%~~(=Z&z&$>$>,&Z& H]2]p~I]${J]K] ", +" m=a,L],{]$ C'i)_-Q%A>(=a&E'W,$>W,z& M]N]O];{+~B~#~N{ ", +" ->,>D$]$ G!A&G~A>(=E'z&b&$>b& P]){!{M~Q]{{R]S] ", +" ;>j>S%d$ A&3%p%k'P%b&@,1*b& Y{_{:{T]U]V]W] ", +" T=&;9,C$+% X]1!(=F{b&1*1*1* Y]+{Z]#{${`]K] ", +" _=d>1*'&d$ 4%7)(=8;2*t*_= ^c]y~.^A~+^e{@^ ", +" N-#^$^|- X!/{Z&_=V*]) %^l{!{&^*^<~=^^] ", +" b>Y!|{N% X!+)2*S=S= '{Z{`{-^;^>^}{ ", +" 0;N-z&S% (=_=D&S= ,^O]:{q~B~'^t] ", +" 0,)^m=D$z; Z&1*&>D& !^~^{^]^^^/^(^_^ ", +" x-->1*i'9& F{_=D&D& :^<^[^}^|^1^2^3^ ", +" A-&;S=l!C'1'c& A&b&_=#)W* 4^5^6^7^8^9^ ", +" B-A-m=@;K>3%Q%3%8~_=y-<=3'9, 0^a^b^c^d^ ", +" S=}-=;->-;7*}-m=7*z-V, e^f^g^h^i^ ", +" b&#,D&j^}-A;T=b& k^l^m^n^ ", +" o^p^q^ ", +" r^ ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" "}; diff --git a/src/Mod/Ship/Icons/HydrostaticsIco.png b/src/Mod/Ship/Icons/HydrostaticsIco.png new file mode 100644 index 0000000000..735b4e3a87 Binary files /dev/null and b/src/Mod/Ship/Icons/HydrostaticsIco.png differ diff --git a/src/Mod/Ship/Icons/HydrostaticsIco.xcf b/src/Mod/Ship/Icons/HydrostaticsIco.xcf new file mode 100644 index 0000000000..334c65b816 Binary files /dev/null and b/src/Mod/Ship/Icons/HydrostaticsIco.xcf differ diff --git a/src/Mod/Ship/Icons/HydrostaticsIco.xpm b/src/Mod/Ship/Icons/HydrostaticsIco.xpm new file mode 100644 index 0000000000..a9d1db9ec4 --- /dev/null +++ b/src/Mod/Ship/Icons/HydrostaticsIco.xpm @@ -0,0 +1,3323 @@ +/* XPM */ +static char * HidrostaticsIco_xpm[] = { +"128 128 3192 2", +" c None", +". c #929292", +"+ c #878787", +"@ c #838383", +"# c #89898A", +"$ c #8F8F90", +"% c #939494", +"& c #8B8B8B", +"* c #808180", +"= c #7A7A7A", +"- c #767676", +"; c #747575", +"> c #737373", +", c #898989", +"' c #888888", +") c #868686", +"! c #7C7C7C", +"~ c #7B7B7B", +"{ c #787878", +"] c #7A7B7A", +"^ c #777676", +"/ c #777776", +"( c #929291", +"_ c #858585", +": c #828282", +"< c #7B7C7C", +"[ c #7C7D7C", +"} c #7B7B7C", +"| c #7A7B7B", +"1 c #878484", +"2 c #777877", +"3 c #767675", +"4 c #818180", +"5 c #7F7F7F", +"6 c #828382", +"7 c #818282", +"8 c #808181", +"9 c #7E7E7F", +"0 c #7D7E7E", +"a c #7D7D7D", +"b c #7B7A7A", +"c c #848282", +"d c #767677", +"e c #8B8B8C", +"f c #7A7A7B", +"g c #838484", +"h c #838483", +"i c #828283", +"j c #818181", +"k c #808080", +"l c #7E7E7E", +"m c #7B7B7A", +"n c #817F7F", +"o c #807E7F", +"p c #777777", +"q c #747474", +"r c #7C7B7C", +"s c #949494", +"t c #868585", +"u c #838384", +"v c #828281", +"w c #7F8080", +"x c #7E7D7D", +"y c #82807F", +"z c #7C7B7A", +"A c #777878", +"B c #717171", +"C c #6A6A6A", +"D c #696969", +"E c #8A8A8A", +"F c #8B8C8B", +"G c #898889", +"H c #888788", +"I c #848484", +"J c #7E7F7F", +"K c #7E7D7E", +"L c #807E7E", +"M c #797979", +"N c #767476", +"O c #909090", +"P c #9A9A9A", +"Q c #727272", +"R c #6F6F6F", +"S c #7E7F7E", +"T c #8E8E8E", +"U c #8C8C8C", +"V c #868787", +"W c #858586", +"X c #858485", +"Y c #7F7F80", +"Z c #7D7D7E", +"` c #7C7D7D", +" . c #7E7C7C", +".. c #797A7A", +"+. c #797978", +"@. c #767777", +"#. c #767576", +"$. c #747574", +"%. c #606161", +"&. c #454545", +"*. c #6A6969", +"=. c #666666", +"-. c #7F7F7E", +";. c #757576", +">. c #909190", +",. c #8F8F8E", +"'. c #929192", +"). c #8E8F8F", +"!. c #8D8D8D", +"~. c #8D8C8C", +"{. c #878687", +"]. c #868685", +"^. c #858584", +"/. c #828181", +"(. c #7C7A7A", +"_. c #757676", +":. c #757475", +"<. c #727373", +"[. c #747373", +"}. c #686869", +"|. c #626262", +"1. c #6E6D6F", +"2. c #767776", +"3. c #969696", +"4. c #999999", +"5. c #939393", +"6. c #919091", +"7. c #908F90", +"8. c #828383", +"9. c #818081", +"0. c #7F7E7E", +"a. c #7B7979", +"b. c #7B797A", +"c. c #787979", +"d. c #757575", +"e. c #737474", +"f. c #9C9C9C", +"g. c #606060", +"h. c #565556", +"i. c #9E9E9E", +"j. c #959695", +"k. c #A0A0A0", +"l. c #9D9D9D", +"m. c #989798", +"n. c #989897", +"o. c #959595", +"p. c #919191", +"q. c #8F8F8F", +"r. c #8B8A8B", +"s. c #878888", +"t. c #7F807F", +"u. c #7E7E7D", +"v. c #787676", +"w. c #6B6C6B", +"x. c #888887", +"y. c #A1A0A0", +"z. c #4F4E4E", +"A. c #565655", +"B. c #50504F", +"C. c #656565", +"D. c #9B9B9B", +"E. c #9E9F9E", +"F. c #A5A4A4", +"G. c #9F9F9F", +"H. c #9E9E9D", +"I. c #9C9D9C", +"J. c #999998", +"K. c #989898", +"L. c #979797", +"M. c #959696", +"N. c #949594", +"O. c #949393", +"P. c #919291", +"Q. c #908F8F", +"R. c #868687", +"S. c #848584", +"T. c #848383", +"U. c #757374", +"V. c #777677", +"W. c #737374", +"X. c #727271", +"Y. c #717170", +"Z. c #979696", +"`. c #4D4E4E", +" + c #515252", +".+ c #626362", +"++ c #6F7070", +"@+ c #9FA0A0", +"#+ c #8C8C8B", +"$+ c #ACACAC", +"%+ c #A7A8A7", +"&+ c #A3A3A2", +"*+ c #A3A3A3", +"=+ c #A0A1A0", +"-+ c #A09FA0", +";+ c #9D9D9E", +">+ c #9C9D9D", +",+ c #9C9B9B", +"'+ c #969695", +")+ c #959594", +"!+ c #929293", +"~+ c #919090", +"{+ c #8C8D8C", +"]+ c #8B898B", +"^+ c #868786", +"/+ c #858685", +"(+ c #848585", +"_+ c #807F7F", +":+ c #747372", +"<+ c #7B7A7B", +"[+ c #737372", +"}+ c #717271", +"|+ c #6F706F", +"1+ c #6D6C6C", +"2+ c #888787", +"3+ c #5E5E5E", +"4+ c #4F4F4F", +"5+ c #4C4C4D", +"6+ c #5A5A5A", +"7+ c #515251", +"8+ c #808281", +"9+ c #686868", +"0+ c #A8A9A9", +"a+ c #B3B2B3", +"b+ c #AEAEAF", +"c+ c #A9A8A9", +"d+ c #A9A8A8", +"e+ c #A5A5A4", +"f+ c #A4A5A4", +"g+ c #A2A3A2", +"h+ c #A1A1A1", +"i+ c #989899", +"j+ c #979897", +"k+ c #939293", +"l+ c #8E8F8E", +"m+ c #8D8E8E", +"n+ c #8B8B8A", +"o+ c #858686", +"p+ c #777675", +"q+ c #757574", +"r+ c #787777", +"s+ c #6E6E6D", +"t+ c #6D6D6D", +"u+ c #686768", +"v+ c #A4A5A5", +"w+ c #9B9A9A", +"x+ c #AAAAAB", +"y+ c #A8A8A8", +"z+ c #ABABAA", +"A+ c #B2B2B2", +"B+ c #B3B3B3", +"C+ c #ADADAD", +"D+ c #AAAAAA", +"E+ c #A9A9A9", +"F+ c #A8A8A9", +"G+ c #A7A7A8", +"H+ c #A7A7A6", +"I+ c #A6A6A5", +"J+ c #A1A2A1", +"K+ c #9F9E9F", +"L+ c #9A9B9A", +"M+ c #969595", +"N+ c #939294", +"O+ c #8B8A8A", +"P+ c #878786", +"Q+ c #717070", +"R+ c #777576", +"S+ c #717071", +"T+ c #707070", +"U+ c #6E6F6E", +"V+ c #6B6C6C", +"W+ c #676767", +"X+ c #A6A6A7", +"Y+ c #A6A6A6", +"Z+ c #AAA9AA", +"`+ c #ADAEAD", +" @ c #ABABAB", +".@ c #ACABAC", +"+@ c #ACACAD", +"@@ c #ACADAD", +"#@ c #ACABAA", +"$@ c #A7A7A7", +"%@ c #A5A4A5", +"&@ c #9E9D9C", +"*@ c #999898", +"=@ c #969697", +"-@ c #939394", +";@ c #909091", +">@ c #868586", +",@ c #6C6B6B", +"'@ c #797878", +")@ c #717272", +"!@ c #6C6D6C", +"~@ c #6C6C6C", +"{@ c #ACAAAA", +"]@ c #ABAAAB", +"^@ c #ADADAE", +"/@ c #AEAFAF", +"(@ c #AEAEAE", +"_@ c #AEAEAD", +":@ c #ACABAB", +"<@ c #A8A8A7", +"[@ c #A4A4A4", +"}@ c #A2A2A2", +"|@ c #9A9B9B", +"1@ c #9A9999", +"2@ c #979796", +"3@ c #929392", +"4@ c #909191", +"5@ c #8F908F", +"6@ c #8F8E8E", +"7@ c #8E8D8D", +"8@ c #8C8D8D", +"9@ c #888988", +"0@ c #818182", +"a@ c #767575", +"b@ c #6F6E6E", +"c@ c #6B6B6B", +"d@ c #A8A9A8", +"e@ c #A9A9AA", +"f@ c #ABACAB", +"g@ c #ADACAD", +"h@ c #AFAFAF", +"i@ c #B0AFAF", +"j@ c #ABACAC", +"k@ c #A9AAA9", +"l@ c #A6A7A6", +"m@ c #A5A5A5", +"n@ c #979898", +"o@ c #90908F", +"p@ c #858687", +"q@ c #848483", +"r@ c #747475", +"s@ c #706F70", +"t@ c #6E6E6E", +"u@ c #9B9B9C", +"v@ c #5A5959", +"w@ c #AFAEAE", +"x@ c #AFAEAF", +"y@ c #AEADAF", +"z@ c #ACACAB", +"A@ c #ABAAAA", +"B@ c #A1A2A2", +"C@ c #A0A0A1", +"D@ c #9D9C9C", +"E@ c #969596", +"F@ c #8A8B8A", +"G@ c #898A89", +"H@ c #848485", +"I@ c #6E6C6C", +"J@ c #737272", +"K@ c #7D7B7C", +"L@ c #797A79", +"M@ c #797879", +"N@ c #777778", +"O@ c #6E6E6F", +"P@ c #6C6D6D", +"Q@ c #6B6A6A", +"R@ c #656666", +"S@ c #616161", +"T@ c #A6A7A7", +"U@ c #ADAEAE", +"V@ c #AEAFAE", +"W@ c #ACADAC", +"X@ c #A5A6A6", +"Y@ c #A3A4A3", +"Z@ c #A2A1A1", +"`@ c #A1A0A1", +" # c #A09F9F", +".# c #9F9E9E", +"+# c #9B9B9A", +"@# c #939292", +"## c #8C8B8C", +"$# c #8A8A8B", +"%# c #8A8989", +"&# c #838282", +"*# c #656363", +"=# c #787879", +"-# c #747473", +";# c #727372", +"># c #707170", +",# c #6F6E6F", +"'# c #6E6D6E", +")# c #AAA9A9", +"!# c #A6A5A5", +"~# c #A7A6A6", +"{# c #AEADAD", +"]# c #A7A8A8", +"^# c #A7A6A7", +"/# c #9B9C9C", +"(# c #979697", +"_# c #8D8D8C", +":# c #818281", +"<# c #605F5F", +"[# c #6D6D6E", +"}# c #676667", +"|# c #555555", +"1# c #A9A9A8", +"2# c #A8A7A7", +"3# c #A4A4A5", +"4# c #A3A3A4", +"5# c #9D9C9D", +"6# c #9B9A9B", +"7# c #99999A", +"8# c #8E8E8F", +"9# c #848384", +"0# c #838283", +"a# c #787877", +"b# c #636161", +"c# c #7C7B7B", +"d# c #757675", +"e# c #707171", +"f# c #70706F", +"g# c #6F6F6E", +"h# c #686867", +"i# c #666667", +"j# c #5B5A5A", +"k# c #B5B4B5", +"l# c #575758", +"m# c #AAAAA9", +"n# c #A0A09F", +"o# c #9E9E9F", +"p# c #9D9E9D", +"q# c #999A99", +"r# c #949595", +"s# c #949493", +"t# c #8A898A", +"u# c #878686", +"v# c #696868", +"w# c #686969", +"x# c #676868", +"y# c #676766", +"z# c #656566", +"A# c #656465", +"B# c #636363", +"C# c #696968", +"D# c #7A7979", +"E# c #5D5D5E", +"F# c #A8A7A8", +"G# c #AAACAD", +"H# c #A9AAAA", +"I# c #A9AEB0", +"J# c #A9AFB1", +"K# c #A8ABAB", +"L# c #A8ABAC", +"M# c #A6AEB0", +"N# c #A5A9AB", +"O# c #A4A5A6", +"P# c #A3A4A4", +"Q# c #A2A3A3", +"R# c #9FA1A2", +"S# c #9F9FA0", +"T# c #9C9C9B", +"U# c #979798", +"V# c #929393", +"W# c #8F9090", +"X# c #8B8C8C", +"Y# c #898988", +"Z# c #878788", +"`# c #616061", +" $ c #727273", +".$ c #7A7A79", +"+$ c #767778", +"@$ c #666565", +"#$ c #636364", +"$$ c #5D5C5C", +"%$ c #A2A2A3", +"&$ c #A5ACAE", +"*$ c #A6AAAB", +"=$ c #A8ACAC", +"-$ c #A8B0B2", +";$ c #A89089", +">$ c #A8A5A4", +",$ c #A9B3B6", +"'$ c #A66353", +")$ c #A67A6F", +"!$ c #A79692", +"~$ c #A6AFB1", +"{$ c #A65B49", +"]$ c #A56354", +"^$ c #A4827A", +"/$ c #A39A99", +"($ c #A2A7A8", +"_$ c #A1AAAC", +":$ c #A0ABAE", +"<$ c #A1928F", +"[$ c #A09C9B", +"}$ c #9EA4A5", +"|$ c #9CA4A6", +"1$ c #9BA0A2", +"2$ c #989999", +"3$ c #959596", +"4$ c #929191", +"5$ c #898A8A", +"6$ c #585757", +"7$ c #7D7D7F", +"8$ c #7D7C7C", +"9$ c #757474", +"0$ c #6D6E6E", +"a$ c #6B6C6D", +"b$ c #6A6B6B", +"c$ c #6A6A69", +"d$ c #676768", +"e$ c #646464", +"f$ c #636463", +"g$ c #636263", +"h$ c #5F5F5F", +"i$ c #575857", +"j$ c #646465", +"k$ c #B5B5B5", +"l$ c #B8B7B7", +"m$ c #A6A9AA", +"n$ c #A29E9E", +"o$ c #A2A8AA", +"p$ c #A4918C", +"q$ c #A76555", +"r$ c #A58981", +"s$ c #A58982", +"t$ c #A6391D", +"u$ c #A75844", +"v$ c #A76B5B", +"w$ c #A42809", +"x$ c #A53317", +"y$ c #A5422B", +"z$ c #A42D0F", +"A$ c #A1280B", +"B$ c #A32B0E", +"C$ c #A4361B", +"D$ c #A43215", +"E$ c #A3290C", +"F$ c #A42F13", +"G$ c #A43D24", +"H$ c #A45541", +"I$ c #A3746A", +"J$ c #A63C21", +"K$ c #A63519", +"L$ c #A6472F", +"M$ c #A35F4E", +"N$ c #A0796F", +"O$ c #9C8F8C", +"P$ c #999B9C", +"Q$ c #979FA1", +"R$ c #969D9F", +"S$ c #95999A", +"T$ c #929091", +"U$ c #8E908F", +"V$ c #8A8B8B", +"W$ c #565656", +"X$ c #6C6C6B", +"Y$ c #69696A", +"Z$ c #626162", +"`$ c #5B5C5C", +" % c #545B5B", +".% c #859295", +"+% c #A59591", +"@% c #A75D49", +"#% c #A93A1D", +"$% c #A8442B", +"%% c #A72E10", +"&% c #A62F11", +"*% c #A73619", +"=% c #A63518", +"-% c #A22C10", +";% c #A22B0E", +">% c #A7391E", +",% c #A53419", +"'% c #A02A0F", +")% c #A83C1F", +"!% c #B35033", +"~% c #A93B1F", +"{% c #A22F13", +"]% c #A6371B", +"^% c #BC5F41", +"/% c #AF472B", +"(% c #A6371C", +"_% c #A32E13", +":% c #A12B0E", +"<% c #A32A0D", +"[% c #A5351A", +"}% c #A6381C", +"|% c #A52E12", +"1% c #A73112", +"2% c #A93519", +"3% c #A84025", +"4% c #A5533E", +"5% c #A06B5C", +"6% c #9B817A", +"7% c #969290", +"8% c #929899", +"9% c #90989B", +"0% c #909697", +"a% c #909292", +"b% c #878887", +"c% c #6F6F70", +"d% c #478545", +"e% c #7D7C7D", +"f% c #6D6C6D", +"g% c #6C6B6C", +"h% c #696A69", +"i% c #646364", +"j% c #636362", +"k% c #5F5F60", +"l% c #5D5D5D", +"m% c #5A5B5B", +"n% c #9E452D", +"o% c #A26657", +"p% c #AA4125", +"q% c #A73A1D", +"r% c #A33216", +"s% c #B55135", +"t% c #B0482D", +"u% c #A53519", +"v% c #BD6244", +"w% c #C1694A", +"x% c #B44F32", +"y% c #C26A4C", +"z% c #D08565", +"A% c #C77354", +"B% c #C87556", +"C% c #D58D6D", +"D% c #D38868", +"E% c #CE7F60", +"F% c #CA7858", +"G% c #D58D6C", +"H% c #D38A6A", +"I% c #D18566", +"J% c #CC7A5A", +"K% c #C16849", +"L% c #B55234", +"M% c #B34E32", +"N% c #D08465", +"O% c #C67153", +"P% c #BD6042", +"Q% c #B34E30", +"R% c #AB4024", +"S% c #A7381D", +"T% c #A73519", +"U% c #A83417", +"V% c #AB3718", +"W% c #AB3E21", +"X% c #A84B33", +"Y% c #A35F4D", +"Z% c #9B7469", +"`% c #958683", +" & c #8F9091", +".& c #8C9395", +"+& c #8B9194", +"@& c #8A8E90", +"#& c #4F8D4E", +"$& c #7C7C7B", +"%& c #727171", +"&& c #6D6D6C", +"*& c #6B6B6A", +"=& c #626261", +"-& c #575858", +";& c #545453", +">& c #4D4D4D", +",& c #BABABA", +"'& c #AC3E22", +")& c #AA381B", +"!& c #AC4125", +"~& c #C97657", +"{& c #C2694A", +"]& c #CE7E5F", +"^& c #CF8162", +"/& c #CE7F5F", +"(& c #D08463", +"_& c #D28666", +":& c #D08262", +"<& c #D08263", +"[& c #D18565", +"}& c #D08464", +"|& c #D28566", +"1& c #D18464", +"2& c #D38767", +"3& c #D38969", +"4& c #D08363", +"5& c #D08364", +"6& c #CE8060", +"7& c #C97858", +"8& c #C2694B", +"9& c #B8583B", +"0& c #B04A2D", +"a& c #AA3C1F", +"b& c #AB3A1C", +"c& c #AE3B1D", +"d& c #AE3F21", +"e& c #AD472C", +"f& c #A75641", +"g& c #9F695A", +"h& c #957A73", +"i& c #8C8786", +"j& c #878D8E", +"k& c #858D8F", +"l& c #858A8C", +"m& c #858888", +"n& c #3F7D3E", +"o& c #589758", +"p& c #79797A", +"q& c #737273", +"r& c #6B6B6C", +"s& c #646463", +"t& c #616261", +"u& c #606160", +"v& c #5C5B5C", +"w& c #5B5B5A", +"x& c #595859", +"y& c #585859", +"z& c #AA3E23", +"A& c #AD4428", +"B& c #B8573A", +"C& c #CD7F5F", +"D& c #CC7A5B", +"E& c #CD7D5D", +"F& c #CC7B5C", +"G& c #CC7D5D", +"H& c #CD7E5E", +"I& c #CF8161", +"J& c #D18465", +"K& c #D18666", +"L& c #D28767", +"M& c #D28665", +"N& c #D28565", +"O& c #D18463", +"P& c #CF8262", +"Q& c #CE8061", +"R& c #CD7F60", +"S& c #CD7E5F", +"T& c #CD7D5E", +"U& c #CE7E60", +"V& c #CB7859", +"W& c #C56E50", +"X& c #BD6043", +"Y& c #B55236", +"Z& c #AF482B", +"`& c #AD4326", +" * c #AD4024", +".* c #AF4022", +"+* c #B14224", +"@* c #B1472A", +"#* c #AD5137", +"$* c #A3604D", +"%* c #987065", +"&* c #8D7D79", +"** c #81878A", +"=* c #808688", +"-* c #808385", +";* c #397637", +">* c #609E5F", +",* c #7D7D7C", +"'* c #666767", +")* c #60605F", +"!* c #5D5C5D", +"~* c #595A5A", +"{* c #585959", +"]* c #575656", +"^* c #AC3F23", +"/* c #A93C20", +"(* c #BA5C3E", +"_* c #CE7E5E", +":* c #CA7959", +"<* c #CB7A5A", +"[* c #CC7C5D", +"}* c #CE8161", +"|* c #D38867", +"1* c #D28667", +"2* c #D28564", +"3* c #CD7C5C", +"4* c #CB7B5C", +"5* c #CA7A5A", +"6* c #CA795A", +"7* c #CB785A", +"8* c #CC795A", +"9* c #CB795A", +"0* c #C97758", +"a* c #C67052", +"b* c #C06648", +"c* c #B95A3D", +"d* c #B45033", +"e* c #B14A2D", +"f* c #B0462A", +"g* c #B24528", +"h* c #B44628", +"i* c #B54A2B", +"j* c #B24F33", +"k* c #AA5A44", +"l* c #9E6758", +"m* c #90746C", +"n* c #857E7C", +"o* c #5D9D5F", +"p* c #5EA063", +"q* c #7A7F82", +"r* c #7B7D7D", +"s* c #686767", +"t* c #656665", +"u* c #605F60", +"v* c #5D5E5E", +"w* c #5D5D5C", +"x* c #5C5C5C", +"y* c #5B5B5B", +"z* c #5A5A59", +"A* c #575757", +"B* c #B6B6B6", +"C* c #BCBCBC", +"D* c #A83A1F", +"E* c #C2684A", +"F* c #CB7A5B", +"G* c #CE8162", +"H* c #D38968", +"I* c #CA7859", +"J* c #CA7758", +"K* c #C77455", +"L* c #C67354", +"M* c #C57051", +"N* c #C1684A", +"O* c #BC5F42", +"P* c #B7573A", +"Q* c #B45134", +"R* c #B34E31", +"S* c #B44C2F", +"T* c #B74C2E", +"U* c #B84D2E", +"V* c #B75133", +"W* c #86812E", +"X* c #7C883A", +"Y* c #956C60", +"Z* c #867571", +"`* c #767C7E", +" = c #747A7D", +".= c #75797A", +"+= c #6B6A6B", +"@= c #5F6060", +"#= c #5E5F5F", +"$= c #5D5E5D", +"%= c #595959", +"&= c #595858", +"*= c #565555", +"== c #515050", +"-= c #515150", +";= c #595A59", +">= c #AB4023", +",= c #A93D21", +"'= c #C87455", +")= c #CB795B", +"!= c #CB7B5B", +"~= c #CC7C5C", +"{= c #D38A69", +"]= c #D48A69", +"^= c #D38769", +"/= c #D18363", +"(= c #CF8362", +"_= c #CC7B5B", +":= c #C97759", +"<= c #C97656", +"[= c #C77253", +"}= c #C67152", +"|= c #C56F50", +"1= c #C46F50", +"2= c #C46E4F", +"3= c #C36C4E", +"4= c #C0694A", +"5= c #BE6244", +"6= c #B75639", +"7= c #B65336", +"8= c #8B7C27", +"9= c #8C7C27", +"0= c #BB5334", +"a= c #BC5435", +"b= c #B8583C", +"c= c #AD5F48", +"d= c #9D6757", +"e= c #8B6F66", +"f= c #7C7471", +"g= c #737777", +"h= c #6F7677", +"i= c #6F7476", +"j= c #707273", +"k= c #6A6B6A", +"l= c #606061", +"m= c #5E5E5F", +"n= c #5C5D5C", +"o= c #585857", +"p= c #545454", +"q= c #535353", +"r= c #525252", +"s= c #AB3F23", +"t= c #AD4529", +"u= c #CA7A5B", +"v= c #CC7A5C", +"w= c #CF8060", +"x= c #D08161", +"y= c #D3896A", +"z= c #D48A6B", +"A= c #D48B6B", +"B= c #D48B6A", +"C= c #D18665", +"D= c #D08564", +"E= c #C97556", +"F= c #C57050", +"G= c #C36D4F", +"H= c #C36C4D", +"I= c #C36B4D", +"J= c #C26A4B", +"K= c #C16A4C", +"L= c #C1694B", +"M= c #C16749", +"N= c #918B35", +"O= c #8F8530", +"P= c #BA5A3E", +"Q= c #B9583B", +"R= c #BA593A", +"S= c #BE5939", +"T= c #BF5A3A", +"U= c #BD5C3E", +"V= c #B66045", +"W= c #A76550", +"X= c #936A5D", +"Y= c #806E69", +"Z= c #6A7072", +"`= c #696F71", +" - c #6A6E6F", +".- c #6B6D6C", +"+- c #616060", +"@- c #5E5D5D", +"#- c #5C5B5B", +"$- c #585858", +"%- c #565756", +"&- c #535454", +"*- c #535252", +"=- c #515151", +"-- c #4C4C4C", +";- c #BBBBBB", +">- c #AA3D22", +",- c #D18667", +"'- c #D28868", +")- c #D48969", +"!- c #D58B6B", +"~- c #D48A6A", +"{- c #D28768", +"]- c #CA7658", +"^- c #C87254", +"/- c #C67151", +"(- c #C46E50", +"_- c #C16548", +":- c #928B35", +"<- c #BE6446", +"[- c #918A34", +"}- c #BE6245", +"|- c #BD6143", +"1- c #BB5D40", +"2- c #BA5C3F", +"3- c #BB5D3F", +"4- c #BD5E40", +"5- c #BF5E40", +"6- c #C25F40", +"7- c #C36040", +"8- c #BF6345", +"9- c #B2654D", +"0- c #9E6957", +"a- c #886B61", +"b- c #746B69", +"c- c #676A6C", +"d- c #63696C", +"e- c #63686A", +"f- c #656868", +"g- c #666766", +"h- c #666566", +"i- c #646564", +"j- c #575657", +"k- c #545353", +"l- c #525352", +"m- c #505050", +"n- c #4A4A4B", +"o- c #696869", +"p- c #AC4024", +"q- c #A93C21", +"r- c #BD6142", +"s- c #D28766", +"t- c #C87657", +"u- c #C87355", +"v- c #C56F51", +"w- c #C46D4E", +"x- c #C36B4C", +"y- c #C26A4A", +"z- c #BD5240", +"A- c #8C6B27", +"B- c #BF6847", +"C- c #908933", +"D- c #BB5F41", +"E- c #BB5E40", +"F- c #BA5B3D", +"G- c #BA5B3E", +"H- c #BC5D40", +"I- c #BE6344", +"J- c #C16545", +"K- c #C56546", +"L- c #C76646", +"M- c #C46746", +"N- c #BB684C", +"O- c #AA6953", +"P- c #92695B", +"Q- c #7A6862", +"R- c #686667", +"S- c #606567", +"T- c #5D6465", +"U- c #5F6364", +"V- c #616262", +"W- c #616160", +"X- c #5F605F", +"Y- c #5B5C5B", +"Z- c #565657", +"`- c #555655", +" ; c #545554", +".; c #4D4E4D", +"+; c #4C4B4C", +"@; c #4E4D4D", +"#; c #B0B0B0", +"$; c #AB4125", +"%; c #C46F4F", +"&; c #CC7C5E", +"*; c #CF7F60", +"=; c #CF8261", +"-; c #D18564", +";; c #D38869", +">; c #CF8061", +",; c #CD7D5F", +"'; c #C87555", +"); c #C77252", +"!; c #C46C4E", +"~; c #C26B4C", +"{; c #C16B4B", +"]; c #BA4439", +"^; c #8E752C", +"/; c #C06748", +"(; c #918933", +"_; c #BE6144", +":; c #BC6042", +"<; c #BB5B3E", +"[; c #B95A3C", +"}; c #B65639", +"|; c #B65638", +"1; c #B8583A", +"2; c #BF6648", +"3; c #C3694B", +"4; c #C66B4C", +"5; c #CA6C4C", +"6; c #C56D4E", +"7; c #B66C53", +"8; c #9F6B58", +"9; c #85675C", +"0; c #6D6460", +"a; c #5E6161", +"b; c #5E5F60", +"c; c #5F5F5E", +"d; c #5E5E5D", +"e; c #585758", +"f; c #545555", +"g; c #525253", +"h; c #525152", +"i; c #515051", +"j; c #504F4F", +"k; c #4F4E4F", +"l; c #4D4D4E", +"m; c #494A4A", +"n; c #434343", +"o; c #404040", +"p; c #C1C1C1", +"q; c #B9B9B9", +"r; c #AC4225", +"s; c #C97757", +"t; c #CF8062", +"u; c #C77254", +"v; c #C77152", +"w; c #C16B4A", +"x; c #8C6726", +"y; c #BD5941", +"z; c #BF6547", +"A; c #BD6144", +"B; c #BB5E41", +"C; c #BB5C3E", +"D; c #B95A3E", +"E; c #B9593C", +"F; c #B9593B", +"G; c #B75739", +"H; c #B75538", +"I; c #B65437", +"J; c #B55235", +"K; c #B45133", +"L; c #B65235", +"M; c #C77051", +"N; c #CC7252", +"O; c #CE7351", +"P; c #BB7055", +"Q; c #555D61", +"R; c #575D5E", +"S; c #5A5D5D", +"T; c #5C5C5D", +"U; c #555656", +"V; c #555554", +"W; c #4C4D4D", +"X; c #4B4B4B", +"Y; c #B4B4B4", +"Z; c #AB4025", +"`; c #B24D30", +" > c #CD7C5D", +".> c #CC7D5E", +"+> c #C57052", +"@> c #8A6324", +"#> c #BF6447", +"$> c #BF6445", +"%> c #B85839", +"&> c #B85639", +"*> c #B65436", +"=> c #B55436", +"-> c #B45235", +";> c #B45135", +">> c #B34F33", +",> c #B14B2F", +"'> c #B14B2E", +")> c #B14C2F", +"!> c #BF6446", +"~> c #C57253", +"{> c #A76D58", +"]> c #8E685A", +"^> c #73625B", +"/> c #5E5C5C", +"(> c #54585B", +"_> c #525759", +":> c #545759", +"<> c #555454", +"[> c #535354", +"}> c #4D4C4D", +"|> c #414141", +"1> c #AC4226", +"2> c #AD4528", +"3> c #C97859", +"4> c #D18364", +"5> c #D08665", +"6> c #C87454", +"7> c #C36E4F", +"8> c #C36A4C", +"9> c #BF5C44", +"0> c #8A6624", +"a> c #C06848", +"b> c #BC5E41", +"c> c #BB5C3F", +"d> c #BA5A3D", +"e> c #B65538", +"f> c #B55335", +"g> c #B35032", +"h> c #B24C2F", +"i> c #B0492C", +"j> c #AE462A", +"k> c #AC4326", +"l> c #CE7858", +"m> c #D07958", +"n> c #D07857", +"o> c #B8745A", +"p> c #A16D5A", +"q> c #715F59", +"r> c #555657", +"s> c #555556", +"t> c #545455", +"u> c #4E4E4E", +"v> c #4B4C4B", +"w> c #494949", +"x> c #AD4226", +"y> c #CF8163", +"z> c #CB7959", +"A> c #CA7759", +"B> c #C97557", +"C> c #C67253", +"D> c #C46D4F", +"E> c #C26B4B", +"F> c #BB4C3C", +"G> c #8C6F28", +"H> c #C06948", +"I> c #BD5F41", +"J> c #BC5E40", +"K> c #B95B3E", +"L> c #B75638", +"M> c #B55336", +"N> c #B55134", +"O> c #B0482C", +"P> c #AE4529", +"Q> c #B14A2E", +"R> c #CE7D5D", +"S> c #D57D5C", +"T> c #9F6D5A", +"U> c #5B5858", +"V> c #525456", +"W> c #4B5154", +"X> c #505353", +"Y> c #535352", +"Z> c #504F50", +"`> c #4B4B4C", +" , c #B7B7B7", +"., c #AC4227", +"+, c #AA4024", +"@, c #C57152", +"#, c #CD7D5C", +"$, c #C67252", +"%, c #C67051", +"&, c #C26C4B", +"*, c #8A6C27", +"=, c #BB513E", +"-, c #BE6345", +";, c #8F8833", +">, c #BC5F43", +",, c #BA5B3C", +"', c #B85739", +"), c #B45034", +"!, c #B34D30", +"~, c #B14C30", +"{, c #AB3F24", +"], c #AA3F22", +"^, c #B0492B", +"/, c #D47F5E", +"(, c #D17E5C", +"_, c #C47A5D", +":, c #B2745D", +"<, c #5C5654", +"[, c #4F5152", +"}, c #4D4C4E", +"|, c #464646", +"1, c #AD4327", +"2, c #AE4629", +"3, c #CE7D5E", +"4, c #CA795B", +"5, c #C77454", +"6, c #C2694C", +"7, c #876323", +"8, c #BE5F44", +"9, c #BF6546", +"0, c #B8593B", +"a, c #B75438", +"b, c #B45032", +"c, c #B24D2F", +"d, c #AC4327", +"e, c #AA3F23", +"f, c #C36A4D", +"g, c #D08160", +"h, c #D38060", +"i, c #8B6758", +"j, c #675A54", +"k, c #525151", +"l, c #4F5050", +"m, c #4E4F4E", +"n, c #444444", +"o, c #CF8263", +"p, c #C66F51", +"q, c #C56E51", +"r, c #C16A4B", +"s, c #C06347", +"t, c #876321", +"u, c #BF6344", +"v, c #BC5F40", +"w, c #B65537", +"x, c #B34F32", +"y, c #B24D31", +"z, c #AF492C", +"A, c #AF482A", +"B, c #AF472A", +"C, c #AB4124", +"D, c #A73B1F", +"E, c #A73A1E", +"F, c #B14B2D", +"G, c #D98763", +"H, c #D88462", +"I, c #C77E61", +"J, c #444B4E", +"K, c #464B4C", +"L, c #494C4C", +"M, c #AF4528", +"N, c #AC4124", +"O, c #CE7D5F", +"P, c #D08061", +"Q, c #CC7B5D", +"R, c #C67154", +"S, c #C26B4A", +"T, c #BB5540", +"U, c #886925", +"V, c #C16948", +"W, c #8F8832", +"X, c #BC6041", +"Y, c #B75539", +"Z, c #B34F31", +"`, c #B24E31", +" ' c #AF482C", +".' c #AE472A", +"+' c #AD4427", +"@' c #AA3E22", +"#' c #A93E21", +"$' c #A93D22", +"%' c #B3775F", +"&' c #966C5A", +"*' c #6A5A52", +"=' c #4C4B4B", +"-' c #251D8A", +";' c #251C89", +">' c #251C88", +",' c #251B88", +"'' c #251D89", +")' c #251C8A", +"!' c #251E8B", +"~' c #251F8D", +"{' c #64315F", +"]' c #683159", +"^' c #73456D", +"/' c #754A72", +"(' c #764A72", +"_' c #764C74", +":' c #764D75", +"<' c #764E75", +"[' c #764E77", +"}' c #774F78", +"|' c #775078", +"1' c #775079", +"2' c #775179", +"3' c #77527B", +"4' c #78537C", +"5' c #78537D", +"6' c #78547D", +"7' c #78547E", +"8' c #78557E", +"9' c #78567F", +"0' c #785680", +"a' c #775680", +"b' c #785681", +"c' c #775681", +"d' c #775781", +"e' c #765781", +"f' c #765681", +"g' c #765582", +"h' c #755681", +"i' c #755582", +"j' c #745582", +"k' c #755581", +"l' c #745581", +"m' c #735581", +"n' c #735481", +"o' c #725380", +"p' c #725381", +"q' c #725481", +"r' c #715380", +"s' c #715281", +"t' c #715280", +"u' c #705381", +"v' c #715481", +"w' c #6A4178", +"x' c #52705B", +"y' c #6F5180", +"z' c #6E5180", +"A' c #547B60", +"B' c #6E5080", +"C' c #6D517F", +"D' c #6D5080", +"E' c #6C507F", +"F' c #6C4F7F", +"G' c #6C4F80", +"H' c #6B4F80", +"I' c #6B4E7F", +"J' c #6A4F7F", +"K' c #6A4E7F", +"L' c #694D7E", +"M' c #694C7E", +"N' c #684C7E", +"O' c #684C7D", +"P' c #674C7E", +"Q' c #674B7E", +"R' c #664B7E", +"S' c #674A7D", +"T' c #664A7E", +"U' c #654A7D", +"V' c #65497D", +"W' c #64497D", +"X' c #63487D", +"Y' c #63487C", +"Z' c #62477C", +"`' c #62467C", +" ) c #60457B", +".) c #5F4178", +"+) c #6A578C", +"@) c #776FA2", +"#) c #7970A3", +"$) c #7D72A3", +"%) c #63679E", +"&) c #325196", +"*) c #2F5095", +"=) c #305096", +"-) c #335296", +";) c #335397", +">) c #315196", +",) c #4060A5", +"') c #6186D3", +")) c #1B5EE8", +"!) c #1B5EE9", +"~) c #1A5FEA", +"{) c #1B5FEA", +"]) c #241D8A", +"^) c #251E8C", +"/) c #281F89", +"() c #69325B", +"_) c #754A71", +":) c #754B72", +"<) c #764B73", +"[) c #764C73", +"}) c #764C75", +"|) c #774D75", +"1) c #774E76", +"2) c #775077", +"3) c #78517A", +"4) c #77527C", +"5) c #78557F", +"6) c #765581", +"7) c #745481", +"8) c #725480", +"9) c #705280", +"0) c #705481", +"a) c #4F6957", +"b) c #6D4A7D", +"c) c #705281", +"d) c #6D4F7F", +"e) c #6C5080", +"f) c #6B4F7F", +"g) c #6A4D7F", +"h) c #694C7F", +"i) c #684B7E", +"j) c #674A7E", +"k) c #664A7D", +"l) c #64487D", +"m) c #63477C", +"n) c #61477C", +"o) c #60447A", +"p) c #62487E", +"q) c #644D83", +"r) c #746A9E", +"s) c #7A72A4", +"t) c #7870A3", +"u) c #746EA3", +"v) c #415899", +"w) c #2E5095", +"x) c #325397", +"y) c #2F4F94", +"z) c #4D6EB2", +"A) c #537ED7", +"B) c #251B87", +"C) c #241D8B", +"D) c #241E8C", +"E) c #3A257D", +"F) c #6A335B", +"G) c #69335C", +"H) c #703F67", +"I) c #754971", +"J) c #764D74", +"K) c #764E76", +"L) c #774F77", +"M) c #77517A", +"N) c #77537B", +"O) c #77537C", +"P) c #77557F", +"Q) c #775580", +"R) c #765580", +"S) c #715381", +"T) c #4E6655", +"U) c #6F507F", +"V) c #6E507F", +"W) c #6E517F", +"X) c #537B60", +"Y) c #6D507F", +"Z) c #6A4D7E", +"`) c #694D7F", +" ! c #674C7D", +".! c #674B7D", +"+! c #64487C", +"@! c #61467B", +"#! c #61467C", +"$! c #60457C", +"%! c #5F437A", +"&! c #6B5A8F", +"*! c #71679B", +"=! c #766FA2", +"-! c #7872A5", +";! c #6167A0", +">! c #4C5E9C", +",! c #345397", +"'! c #5A7BBF", +")! c #3E71DD", +"!! c #1B5DE8", +"~! c #6790E7", +"{! c #6691E7", +"]! c #6791E7", +"^! c #6690E7", +"/! c #6690E5", +"(! c #7D79AB", +"_! c #8A6A87", +":! c #8E728E", +"~ c #97819E", +",~ c #9984A0", +"'~ c #9885A1", +")~ c #96829D", +"!~ c #957F9A", +"~~ c #947E99", +"{~ c #937C98", +"]~ c #8F6D90", +"^~ c #6A8B6A", +"/~ c #937C97", +"(~ c #927895", +"_~ c #6E996F", +":~ c #8E7390", +"<~ c #8E728F", +"[~ c #8D708D", +"}~ c #8D6F8C", +"|~ c #8C6D8A", +"1~ c #8B6C8A", +"2~ c #8B6C89", +"3~ c #8A6B89", +"4~ c #8A6A88", +"5~ c #896A87", +"6~ c #8A6987", +"7~ c #876784", +"8~ c #876683", +"9~ c #876482", +"0~ c #856380", +"a~ c #85627F", +"b~ c #85617F", +"c~ c #84607E", +"d~ c #A091AA", +"e~ c #968AA6", +"f~ c #59719D", +"g~ c #8BA4D2", +"h~ c #8A6D8D", +"i~ c #8A6B88", +"j~ c #967F9C", +"k~ c #97809C", +"l~ c #96809D", +"m~ c #95809B", +"n~ c #967F9A", +"o~ c #957D9A", +"p~ c #937B98", +"q~ c #937B97", +"r~ c #6A8B69", +"s~ c #8F6E90", +"t~ c #937A96", +"u~ c #917895", +"v~ c #927894", +"w~ c #6E986E", +"x~ c #907793", +"y~ c #8F7591", +"z~ c #8D728E", +"A~ c #8E718E", +"B~ c #8E708D", +"C~ c #8D6F8B", +"D~ c #8B6D8A", +"E~ c #876481", +"F~ c #856280", +"G~ c #84617E", +"H~ c #84607D", +"I~ c #9B89A4", +"J~ c #9F8EA9", +"K~ c #998DA9", +"L~ c #9094BE", +"M~ c #6C8BD9", +"N~ c #95809C", +"O~ c #957F9B", +"P~ c #96809B", +"Q~ c #947B97", +"R~ c #688667", +"S~ c #937995", +"T~ c #907692", +"U~ c #8E738F", +"V~ c #8D6E8B", +"W~ c #8C6C89", +"X~ c #8B6C88", +"Y~ c #896A86", +"Z~ c #876682", +"`~ c #866482", +" { c #866280", +".{ c #85617E", +"+{ c #815B79", +"@{ c #9E8EAA", +"#{ c #9E8DA8", +"${ c #888FC1", +"%{ c #7681BE", +"&{ c #927A96", +"*{ c #97849F", +"={ c #98829E", +"-{ c #678566", +";{ c #917794", +">{ c #6D976E", +",{ c #8F7592", +"'{ c #907491", +"){ c #8C6E8A", +"!{ c #85607D", +"~{ c #835F7D", +"{{ c #835F7C", +"]{ c #805976", +"^{ c #9A88A3", +"/{ c #9E8EA9", +"({ c #7690D5", +"_{ c #8276A1", +":{ c #97829F", +"<{ c #947B98", +"[{ c #8F7192", +"}{ c #688867", +"|{ c #927B96", +"1{ c #8A6A86", +"2{ c #8A6986", +"3{ c #845F7D", +"4{ c #83607D", +"5{ c #845E7C", +"6{ c #9D8EA9", +"7{ c #887295", +"8{ c #957D99", +"9{ c #937A97", +"0{ c #6A8D6A", +"a{ c #8C698D", +"b{ c #907794", +"c{ c #6D976D", +"d{ c #907492", +"e{ c #8E718F", +"f{ c #8D6F8D", +"g{ c #8C6D8B", +"h{ c #8B6B89", +"i{ c #896785", +"j{ c #876583", +"k{ c #85637F", +"l{ c #825C7B", +"m{ c #A092AC", +"n{ c #988EAF", +"o{ c #8B6E8C", +"p{ c #947D9A", +"q{ c #927996", +"r{ c #678767", +"s{ c #8E7091", +"t{ c #917593", +"u{ c #907693", +"v{ c #6D966D", +"w{ c #8F7391", +"x{ c #8F7290", +"y{ c #8E708E", +"z{ c #8C6E8C", +"A{ c #825B79", +"B{ c #9F91AC", +"C{ c #8E8FBB", +"D{ c #7087CF", +"E{ c #8C6F8B", +"F{ c #967E9B", +"G{ c #947C99", +"H{ c #947A98", +"I{ c #937997", +"J{ c #937996", +"K{ c #927896", +"L{ c #000000", +"M{ c #907593", +"N{ c #6D956D", +"O{ c #907391", +"P{ c #8F7190", +"Q{ c #8E7190", +"R{ c #8D6E8C", +"S{ c #8C6C8A", +"T{ c #896985", +"U{ c #876783", +"V{ c #825A78", +"W{ c #8090CA", +"X{ c #807AA8", +"Y{ c #947B99", +"Z{ c #937A98", +"`{ c #668565", +" ] c #907392", +".] c #8E708F", +"+] c #8D708F", +"@] c #8D708E", +"#] c #8D6F8E", +"$] c #8D6E8D", +"%] c #8C6D8C", +"&] c #8C6C8B", +"*] c #866582", +"=] c #825D7B", +"-] c #9C8CA6", +";] c #6E91DE", +">] c #85769E", +",] c #927897", +"'] c #927796", +")] c #907493", +"!] c #6D946D", +"~] c #8D6E8E", +"{] c #8C6D8D", +"]] c #8C6C8C", +"^] c #8B6B8A", +"/] c #8B6A89", +"(] c #8B6A88", +"_] c #8A6988", +":] c #886785", +"<] c #85607E", +"[] c #9F91AB", +"}] c #9B8EAC", +"|] c #7285C8", +"1] c #8B718F", +"2] c #947A97", +"3] c #927795", +"4] c #917695", +"5] c #678867", +"6] c #917594", +"7] c #907393", +"8] c #907292", +"9] c #8F7292", +"0] c #8F7191", +"a] c #8F7090", +"b] c #8E7090", +"c] c #8E6F8E", +"d] c #8D6D8D", +"e] c #8B6C8B", +"f] c #8B6A8A", +"g] c #8A6A8A", +"h] c #896887", +"i] c #896786", +"j] c #886686", +"k] c #886685", +"l] c #825C7A", +"m] c #9F92AC", +"n] c #948FB4", +"o] c #947E9A", +"p] c #947C9A", +"q] c #947A99", +"r] c #937897", +"s] c #917796", +"t] c #927695", +"u] c #917595", +"v] c #648364", +"w] c #917493", +"x] c #6D936C", +"y] c #8E6F8F", +"z] c #8D6E8F", +"A] c #8C6C8D", +"B] c #8B6B8B", +"C] c #8B6989", +"D] c #8A6989", +"E] c #896888", +"F] c #886583", +"G] c #9F90AB", +"H] c #7385C7", +"I] c #957C99", +"J] c #907594", +"K] c #648164", +"L] c #907293", +"M] c #8F7091", +"N] c #6C936C", +"O] c #8D6F8F", +"P] c #8D6D8E", +"Q] c #8C6B8B", +"R] c #8B6A8B", +"S] c #8A6888", +"T] c #8A6887", +"U] c #8A6787", +"V] c #886584", +"W] c #876584", +"X] c #886483", +"Y] c #876483", +"Z] c #866382", +"`] c #825D7A", +" ^ c #7890D3", +".^ c #6F88D1", +"+^ c #897496", +"@^ c #8C708C", +"#^ c #947C97", +"$^ c #937B99", +"%^ c #927997", +"&^ c #937796", +"*^ c #927696", +"=^ c #917696", +"-^ c #927595", +";^ c #917494", +">^ c #907494", +",^ c #8C6C8F", +"'^ c #658464", +")^ c #6C926C", +"!^ c #8E6E8F", +"~^ c #8D6C8D", +"{^ c #8C6B8C", +"]^ c #8C6A8B", +"^^ c #8B698A", +"/^ c #8A698A", +"(^ c #8A6889", +"_^ c #896788", +":^ c #8A6788", +"<^ c #896787", +"[^ c #896687", +"}^ c #896686", +"|^ c #886585", +"1^ c #876384", +"2^ c #876382", +"3^ c #876381", +"4^ c #866281", +"5^ c #A092AD", +"6^ c #6890E6", +"7^ c #8578A0", +"8^ c #937998", +"9^ c #937797", +"0^ c #907394", +"a^ c #678968", +"b^ c #88628A", +"c^ c #8E6F90", +"d^ c #6C916B", +"e^ c #8A688A", +"f^ c #886587", +"g^ c #886586", +"h^ c #886485", +"i^ c #876484", +"j^ c #876383", +"k^ c #866282", +"l^ c #856180", +"m^ c #A091AC", +"n^ c #978EB0", +"o^ c #8E7391", +"p^ c #927797", +"q^ c #917495", +"r^ c #648365", +"s^ c #8B698E", +"t^ c #8E6F91", +"u^ c #8E6E90", +"v^ c #8E6D8F", +"w^ c #8D6C8E", +"x^ c #8C6B8D", +"y^ c #8B6A8C", +"z^ c #8B698B", +"A^ c #8A6789", +"B^ c #896586", +"C^ c #896485", +"D^ c #876485", +"E^ c #866181", +"F^ c #866180", +"G^ c #856080", +"H^ c #84607F", +"I^ c #8D8FBA", +"J^ c #688FE1", +"K^ c #89769B", +"L^ c #927697", +"M^ c #907192", +"N^ c #628063", +"O^ c #8D6D8F", +"P^ c #8C6B8E", +"Q^ c #8C6A8C", +"R^ c #8B698C", +"S^ c #8A688B", +"T^ c #8B688A", +"U^ c #8B678A", +"V^ c #896688", +"W^ c #886486", +"X^ c #886384", +"Y^ c #876283", +"Z^ c #876282", +"`^ c #856181", +" / c #85607F", +"./ c #845F7E", +"+/ c #845E7D", +"@/ c #835E7C", +"#/ c #815A79", +"$/ c #9F8FAA", +"%/ c #808FCB", +"&/ c #7587C9", +"*/ c #927596", +"=/ c #917394", +"-/ c #917293", +";/ c #8F7293", +">/ c #8F7092", +",/ c #8D6C90", +"'/ c #628163", +")/ c #8E6D90", +"!/ c #8D6C8F", +"~/ c #8C6A8D", +"{/ c #8B688B", +"]/ c #8A678A", +"^/ c #8A668A", +"// c #8A6689", +"(/ c #896689", +"_/ c #896587", +":/ c #886487", +"( c #9E8DA9", +",( c #888DC0", +"'( c #658FE7", +")( c #6E8CD8", +"!( c #907490", +"~( c #917795", +"{( c #8E6D91", +"]( c #8E6C8F", +"^( c #607D61", +"/( c #8D6A8E", +"(( c #8C698E", +"_( c #8C688C", +":( c #8A668B", +"<( c #896589", +"[( c #896489", +"}( c #896387", +"|( c #886287", +"1( c #886286", +"2( c #886285", +"3( c #876185", +"4( c #876084", +"5( c #866083", +"6( c #865F82", +"7( c #855E81", +"8( c #845D7F", +"9( c #825B7C", +"0( c #9A85A3", +"a( c #9D8DA9", +"b( c #8F8CB7", +"c( c #738DD7", +"d( c #668EE7", +"e( c #668EE6", +"f( c #668FE6", +"g( c #668FE5", +"h( c #7B83BC", +"i( c #927794", +"j( c #927694", +"k( c #907093", +"l( c #8F6D91", +"m( c #8A668C", +"n( c #8D6A8F", +"o( c #8C688D", +"p( c #8B668B", +"q( c #8A658A", +"r( c #896388", +"s( c #896288", +"t( c #886186", +"u( c #866084", +"v( c #876083", +"w( c #865E82", +"x( c #855E82", +"y( c #845D80", +"z( c #855D7F", +"A( c #845C7E", +"B( c #835B7D", +"C( c #835B7C", +"D( c #835B7B", +"E( c #9E8CA9", +"F( c #9C8BA8", +"G( c #658BE6", +"H( c #658DE7", +"I( c #668DE6", +"J( c #658DE6", +"K( c #877AA2", +"L( c #8F6E92", +"M( c #658566", +"N( c #835C87", +"O( c #8B698D", +"P( c #8B678C", +"Q( c #8B668A", +"R( c #8A6489", +"S( c #876186", +"T( c #876085", +"U( c #865F84", +"V( c #865E83", +"W( c #855D81", +"X( c #855D80", +"Y( c #845C7F", +"Z( c #835B7E", +"`( c #835A7C", +" _ c #815879", +"._ c #9F8EAC", +"+_ c #978BAF", +"@_ c #658BE7", +"#_ c #658CE6", +"$_ c #8D7898", +"%_ c #8E6C90", +"&_ c #8E6B90", +"*_ c #8D6B90", +"=_ c #87628A", +"-_ c #8B668C", +";_ c #8A658B", +">_ c #8A648A", +",_ c #896389", +"'_ c #886288", +")_ c #886187", +"!_ c #886086", +"~_ c #865D82", +"{_ c #845C81", +"]_ c #845C80", +"^_ c #845B7F", +"/_ c #825A7C", +"(_ c #81587A", +"__ c #9F8DAB", +":_ c #8D8ABA", +"<_ c #648AE6", +"[_ c #7785C3", +"}_ c #907092", +"|_ c #8C6B8F", +"1_ c #8D698F", +"2_ c #5F7B61", +"3_ c #8B678D", +"4_ c #8B688D", +"5_ c #89648A", +"6_ c #886087", +"7_ c #876086", +"8_ c #875F84", +"9_ c #875E84", +"0_ c #865D83", +"a_ c #855D82", +"b_ c #855C81", +"c_ c #855C80", +"d_ c #835B7F", +"e_ c #845A7E", +"f_ c #835A7D", +"g_ c #82597C", +"h_ c #805677", +"i_ c #9882A2", +"j_ c #9D8BA9", +"k_ c #9D8AA8", +"l_ c #7E89C9", +"m_ c #6489E6", +"n_ c #6589E6", +"o_ c #658CE7", +"p_ c #708BD6", +"q_ c #8F7492", +"r_ c #8F7392", +"s_ c #8E6C91", +"t_ c #8D698E", +"u_ c #8B658D", +"v_ c #5E7C61", +"w_ c #8D688D", +"x_ c #8B658C", +"y_ c #8A658C", +"z_ c #8A648B", +"A_ c #8A638A", +"B_ c #896289", +"C_ c #886188", +"D_ c #876087", +"E_ c #885F86", +"F_ c #875F85", +"G_ c #865E85", +"H_ c #865E84", +"I_ c #855E83", +"J_ c #855C82", +"K_ c #845B80", +"L_ c #83597E", +"M_ c #82597D", +"N_ c #83587C", +"O_ c #81587B", +"P_ c #9C88A7", +"Q_ c #9D89A8", +"R_ c #7687D1", +"S_ c #6687E3", +"T_ c #6489E5", +"U_ c #658AE6", +"V_ c #648AE7", +"W_ c #6D8CD8", +"X_ c #8B7B9D", +"Y_ c #8F7291", +"Z_ c #8C688E", +"`_ c #8D698D", +" : c #658667", +".: c #7F5584", +"+: c #8B668D", +"@: c #89638A", +"#: c #886189", +"$: c #896188", +"%: c #875F86", +"&: c #865D84", +"*: c #855D83", +"=: c #865C82", +"-: c #845B81", +";: c #845A7F", +">: c #83597D", +",: c #835A7E", +"': c #83597C", +"): c #82587C", +"!: c #82587B", +"~: c #805679", +"{: c #9D8BAB", +"]: c #9988AC", +"^: c #6486E6", +"/: c #6587E4", +"(: c #6488E6", +"_: c #668DE7", +":: c #658EE7", +"<: c #877DA8", +"[: c #8D6A90", +"}: c #8C678D", +"|: c #8C678E", +"1: c #618063", +"2: c #835B87", +"3: c #8A638B", +"4: c #89628A", +"5: c #886088", +"6: c #885F87", +"7: c #885E86", +"8: c #875E85", +"9: c #865D85", +"0: c #865C83", +"a: c #855B83", +"b: c #855B82", +"c: c #855B81", +"d: c #845A81", +"e: c #845A80", +"f: c #845980", +"g: c #835A7F", +"h: c #83587D", +"i: c #82577C", +"j: c #805578", +"k: c #927798", +"l: c #9E8BAB", +"m: c #9088B4", +"n: c #6486E5", +"o: c #6487E6", +"p: c #6488E5", +"q: c #847FAE", +"r: c #8E7290", +"s: c #8C668D", +"t: c #5E7B61", +"u: c #88618A", +"v: c #8B648B", +"w: c #896088", +"x: c #875E86", +"y: c #855C83", +"z: c #855A82", +"A: c #855B80", +"B: c #835980", +"C: c #84597F", +"D: c #83597F", +"E: c #83587E", +"F: c #82587D", +"G: c #82577B", +"H: c #81577B", +"I: c #7E5175", +"J: c #93789A", +"K: c #9B87A8", +"L: c #8486C2", +"M: c #6385E5", +"N: c #6386E5", +"O: c #6487E5", +"P: c #6588E6", +"Q: c #668CE6", +"R: c #678FE7", +"S: c #8F7899", +"T: c #917592", +"U: c #8D6F90", +"V: c #8C6A8F", +"W: c #5D7960", +"X: c #896189", +"Y: c #875F87", +"Z: c #875D85", +"`: c #865C84", +" < c #855B84", +".< c #83587F", +"+< c #84587E", +"@< c #83577E", +"#< c #83577D", +"$< c #82577D", +"%< c #81567B", +"&< c #815479", +"*< c #957A9D", +"=< c #9A85A6", +"-< c #9C87A8", +";< c #6C83DB", +">< c #6384E6", +",< c #6484E5", +"'< c #6485E6", +")< c #6387E5", +"!< c #6E89D7", +"~< c #8D6B8E", +"{< c #865F88", +"]< c #896089", +"^< c #886089", +"/< c #895F88", +"(< c #885F88", +"_< c #885E87", +":< c #885D87", +"<< c #875D86", +"[< c #865C85", +"}< c #855A83", +"|< c #845A82", +"1< c #845880", +"2< c #835880", +"3< c #84587F", +"4< c #82577E", +"5< c #81557A", +"6< c #9D89AA", +"7< c #9B86A8", +"8< c #9185B3", +"9< c #6382E5", +"0< c #6383E5", +"a< c #6484E6", +"b< c #6589E5", +"c< c #658EE6", +"d< c #6790E6", +"e< c #658DE4", +"f< c #817EB2", +"g< c #8A648C", +"h< c #8A638C", +"i< c #628164", +"j< c #7F5484", +"k< c #8A628A", +"l< c #895F89", +"m< c #875F88", +"n< c #875E87", +"o< c #875C85", +"p< c #865C86", +"q< c #865B85", +"r< c #865B84", +"s< c #855982", +"t< c #845982", +"u< c #845881", +"v< c #83577F", +"w< c #82567D", +"x< c #81567C", +"y< c #82567C", +"z< c #82557C", +"A< c #81557C", +"B< c #81547A", +"C< c #80557B", +"D< c #9E89AA", +"E< c #9285B1", +"F< c #6280E4", +"G< c #6382E3", +"H< c #6384E5", +"I< c #658AE7", +"J< c #668CE4", +"K< c #8D799E", +"L< c #8C6E8E", +"M< c #8B638B", +"N< c #845A86", +"O< c #8A618A", +"P< c #89608A", +"Q< c #885E88", +"R< c #875E88", +"S< c #875D87", +"T< c #875C86", +"U< c #855A84", +"V< c #865A83", +"W< c #845983", +"X< c #845882", +"Y< c #835881", +"Z< c #845780", +"`< c #83567F", +" [ c #83567E", +".[ c #82567E", +"+[ c #82557D", +"@[ c #81547B", +"#[ c #81557B", +"$[ c #7F5177", +"%[ c #927397", +"&[ c #9C87AA", +"*[ c #9C85A8", +"=[ c #8A83BB", +"-[ c #6380E5", +";[ c #6281E4", +">[ c #6381E5", +",[ c #6385E6", +"'[ c #7782C3", +")[ c #907797", +"![ c #8C678C", +"~[ c #89628B", +"{[ c #89618A", +"][ c #5B785F", +"^[ c #875E89", +"/[ c #885F89", +"([ c #875D88", +"_[ c #875B86", +":[ c #875B85", +"<[ c #855B85", +"[[ c #865A84", +"}[ c #855984", +"|[ c #855983", +"1[ c #835780", +"2[ c #84567F", +"3[ c #82567F", +"4[ c #82557E", +"5[ c #81557D", +"6[ c #81547C", +"7[ c #80547A", +"8[ c #7E4F76", +"9[ c #977CA0", +"0[ c #9B85A8", +"a[ c #8482BF", +"b[ c #6D80D8", +"c[ c #627FE4", +"d[ c #6280E5", +"e[ c #6281E5", +"f[ c #6483E5", +"g[ c #6386E6", +"h[ c #6485E5", +"i[ c #89638B", +"j[ c #885D88", +"k[ c #875C87", +"l[ c #865A85", +"m[ c #865983", +"n[ c #855883", +"o[ c #855882", +"p[ c #845782", +"q[ c #845781", +"r[ c #845680", +"s[ c #835680", +"t[ c #82557F", +"u[ c #82547C", +"v[ c #81537B", +"w[ c #9B84A8", +"x[ c #9B84A7", +"y[ c #627DE4", +"z[ c #627EE4", +"A[ c #6381E4", +"B[ c #6382E4", +"C[ c #668CE7", +"D[ c #6B86DA", +"E[ c #8C79A2", +"F[ c #917797", +"G[ c #8B6A8D", +"H[ c #8A678C", +"I[ c #638164", +"J[ c #7A4F81", +"K[ c #885E89", +"L[ c #865B86", +"M[ c #855A85", +"N[ c #865985", +"O[ c #855782", +"P[ c #835781", +"Q[ c #83557F", +"R[ c #82547E", +"S[ c #82547D", +"T[ c #81547D", +"U[ c #81537C", +"V[ c #80537B", +"W[ c #7F5078", +"X[ c #9E89AD", +"Y[ c #9B83A7", +"Z[ c #9883AB", +"`[ c #617DE4", +" } c #6986DD", +".} c #897AA8", +"+} c #8C698B", +"@} c #8B658B", +"#} c #8A6089", +"$} c #7F5583", +"%} c #875B87", +"&} c #865984", +"*} c #855783", +"=} c #845783", +"-} c #845682", +";} c #845681", +">} c #835581", +",} c #835580", +"'} c #83547E", +")} c #82547F", +"!} c #82537E", +"~} c #82537D", +"{} c #81537D", +"]} c #82537C", +"^} c #81527C", +"/} c #80527C", +"(} c #81527B", +"_} c #80527B", +":} c #7E4F77", +"<} c #94779C", +"[} c #9C85AA", +"}} c #8A81B8", +"|} c #617AE0", +"1} c #617CE4", +"2} c #627CE4", +"3} c #627EE5", +"4} c #627FE5", +"5} c #648BE7", +"6} c #6487E4", +"7} c #8879A7", +"8} c #937697", +"9} c #8C688B", +"0} c #648264", +"a} c #865A86", +"b} c #855884", +"c} c #855784", +"d} c #835681", +"e} c #845581", +"f} c #835480", +"g} c #82527C", +"h} c #81517B", +"i} c #80517A", +"j} c #7E4D77", +"k} c #96789E", +"l} c #9C85A9", +"m} c #9882A9", +"n} c #7C7DC8", +"o} c #617BE4", +"p} c #627BE2", +"q} c #617CE3", +"r} c #6282E4", +"s} c #8F789B", +"t} c #927698", +"u} c #937798", +"v} c #89648B", +"w} c #754A7E", +"x} c #678365", +"y} c #678364", +"z} c #668364", +"A} c #668264", +"B} c #865986", +"C} c #845884", +"D} c #845683", +"E} c #83547F", +"F} c #82537F", +"G} c #81527D", +"H} c #81517C", +"I} c #80517B", +"J} c #80507A", +"K} c #7E4E77", +"L} c #9980A5", +"M} c #9B82A7", +"N} c #6178E4", +"O} c #617AE4", +"P} c #617AE3", +"Q} c #6383E4", +"R} c #6691E6", +"S} c #6E81D3", +"T} c #7C7DBC", +"U} c #937698", +"V} c #89658B", +"W} c #89658A", +"X} c #835885", +"Y} c #764B7E", +"Z} c #885C87", +"`} c #658164", +" | c #668164", +".| c #658163", +"+| c #845784", +"@| c #845582", +"#| c #835582", +"$| c #835481", +"%| c #835380", +"&| c #83537F", +"*| c #82527E", +"=| c #81527E", +"-| c #82527D", +";| c #81517D", +">| c #81507B", +",| c #80507B", +"'| c #7F507A", +")| c #997FA5", +"!| c #9B82A8", +"~| c #9981A8", +"{| c #6078E3", +"]| c #6179E3", +"^| c #6179E4", +"/| c #617DE5", +"(| c #6482E2", +"_| c #8C77A2", +":| c #927597", +"<| c #7D5282", +"[| c #7A4F80", +"}| c #885B86", +"|| c #855985", +"1| c #865885", +"2| c #855885", +"3| c #658063", +"4| c #657F62", +"5| c #835482", +"6| c #845481", +"7| c #825380", +"8| c #82527F", +"9| c #80507C", +"0| c #804F7A", +"a| c #7F507B", +"b| c #7D4A76", +"c| c #8B648E", +"d| c #9C84AA", +"e| c #9B81A7", +"f| c #9680AC", +"g| c #817DC0", +"h| c #6077E3", +"i| c #6380E4", +"j| c #747EC9", +"k| c #927699", +"l| c #927598", +"m| c #774C7F", +"n| c #7F5383", +"o| c #875A86", +"p| c #855683", +"q| c #647F61", +"r| c #82517E", +"s| c #81507E", +"t| c #81507D", +"u| c #804F7B", +"v| c #7F4E7A", +"w| c #93739C", +"x| c #9B82A9", +"y| c #857CBC", +"z| c #6875D7", +"A| c #6075E3", +"B| c #6076E3", +"C| c #6078E4", +"D| c #6079E4", +"E| c #668BE6", +"F| c #6281E3", +"G| c #8977A8", +"H| c #93769A", +"I| c #907195", +"J| c #73487D", +"K| c #845684", +"L| c #865784", +"M| c #855684", +"N| c #855583", +"O| c #845583", +"P| c #845483", +"Q| c #845482", +"R| c #835381", +"S| c #835281", +"T| c #835280", +"U| c #83527F", +"V| c #82517F", +"W| c #82507E", +"X| c #814F7D", +"Y| c #804F7C", +"Z| c #804E7B", +"`| c #804E7A", +" 1 c #7F4E79", +".1 c #7C4974", +"+1 c #997EA6", +"@1 c #9A7FA7", +"#1 c #9A7FA6", +"$1 c #6D77D5", +"%1 c #5F73E3", +"&1 c #5F75E3", +"*1 c #6076E4", +"=1 c #607AE4", +"-1 c #6282E5", +";1 c #627EE2", +">1 c #92769C", +",1 c #94769A", +"'1 c #94779B", +")1 c #855A86", +"!1 c #845785", +"~1 c #73477C", +"{1 c #865884", +"]1 c #855785", +"^1 c #835583", +"/1 c #835382", +"(1 c #845381", +"_1 c #825280", +":1 c #835180", +"<1 c #7E4C79", +"[1 c #82517D", +"}1 c #916F99", +"|1 c #9B80A7", +"11 c #987EA8", +"21 c #5E72E2", +"31 c #5F72E2", +"41 c #6073E3", +"51 c #617EE4", +"61 c #7A79BF", +"71 c #8777AC", +"81 c #937599", +"91 c #937499", +"01 c #917297", +"a1 c #865D86", +"b1 c #805382", +"c1 c #76497D", +"d1 c #825180", +"e1 c #81507F", +"f1 c #814F7E", +"g1 c #824F7E", +"h1 c #814E7D", +"i1 c #804E7D", +"j1 c #804E7C", +"k1 c #7F4D7B", +"l1 c #7F4D7A", +"m1 c #804D79", +"n1 c #7E4C78", +"o1 c #7E4A76", +"p1 c #9C83AB", +"q1 c #977CA8", +"r1 c #8D7BB3", +"s1 c #5E72E3", +"t1 c #5F72E3", +"u1 c #5F74E2", +"v1 c #6074E3", +"w1 c #5F76E3", +"x1 c #6178E3", +"y1 c #637CE0", +"z1 c #90759D", +"A1 c #93759A", +"B1 c #7B4F80", +"C1 c #72477C", +"D1 c #7A4D80", +"E1 c #865684", +"F1 c #845382", +"G1 c #835282", +"H1 c #82507F", +"I1 c #814F7F", +"J1 c #804D7D", +"K1 c #804D7C", +"L1 c #814D7C", +"M1 c #804D7B", +"N1 c #804C7B", +"O1 c #7F4C7A", +"P1 c #7F4D79", +"Q1 c #804C79", +"R1 c #7D4976", +"S1 c #8F6A96", +"T1 c #997CA6", +"U1 c #9A7EA7", +"V1 c #8178BE", +"W1 c #5E70E2", +"X1 c #5F70E2", +"Y1 c #5F71E2", +"Z1 c #5F74E3", +"`1 c #627BE4", +" 2 c #607BE3", +".2 c #7A77BD", +"+2 c #94759B", +"@2 c #927399", +"#2 c #72477D", +"$2 c #794C7F", +"%2 c #825382", +"&2 c #855582", +"*2 c #825181", +"=2 c #825080", +"-2 c #824F80", +";2 c #824F7F", +">2 c #814E7F", +",2 c #814E7E", +"'2 c #814D7D", +")2 c #804C7C", +"!2 c #7F4C7B", +"~2 c #804B7A", +"{2 c #7E4B79", +"]2 c #7C4674", +"^2 c #987AA4", +"/2 c #997DA7", +"(2 c #8A79B5", +"_2 c #6C71D3", +":2 c #5E6FE2", +"<2 c #5E71E2", +"[2 c #5F73E2", +"}2 c #6079E3", +"|2 c #607AE3", +"12 c #617BE3", +"22 c #617EE5", +"32 c #617FE5", +"42 c #6179E2", +"52 c #8B76A7", +"62 c #94749B", +"72 c #94759C", +"82 c #94769C", +"92 c #8C678F", +"02 c #835683", +"a2 c #70457B", +"b2 c #835181", +"c2 c #804D7E", +"d2 c #814D7E", +"e2 c #7F4C7C", +"f2 c #7F4B7B", +"g2 c #7F4B7A", +"h2 c #7F4A79", +"i2 c #7E4A78", +"j2 c #906B98", +"k2 c #9B7FAA", +"l2 c #997BA6", +"m2 c #997CA7", +"n2 c #7271CC", +"o2 c #5E6DE2", +"p2 c #5E6EE2", +"q2 c #5E6EE1", +"r2 c #6074E2", +"s2 c #7276CA", +"t2 c #8575AF", +"u2 c #8D74A4", +"v2 c #93749B", +"w2 c #92729A", +"x2 c #8E6A92", +"y2 c #7F5181", +"z2 c #72467C", +"A2 c #855482", +"B2 c #824E7F", +"C2 c #814D7F", +"D2 c #804C7D", +"E2 c #7F4B7C", +"F2 c #7F4A7B", +"G2 c #7F4A7A", +"H2 c #7D4877", +"I2 c #7E4A79", +"J2 c #875A88", +"K2 c #9878A4", +"L2 c #9B7EA9", +"M2 c #987AA6", +"N2 c #8D77B2", +"O2 c #5D6BE2", +"P2 c #5D6CE2", +"Q2 c #5F6CE0", +"R2 c #5E6DE1", +"S2 c #5F6FE3", +"T2 c #6077E4", +"U2 c #627DE5", +"V2 c #648BE6", +"W2 c #6177E3", +"X2 c #92749E", +"Y2 c #94749C", +"Z2 c #95769E", +"`2 c #794C7E", +" 3 c #764A7D", +".3 c #855382", +"+3 c #825081", +"@3 c #804C7E", +"#3 c #804B7C", +"$3 c #7E4A7A", +"%3 c #7F497A", +"&3 c #7B4575", +"*3 c #916D9A", +"=3 c #997BA8", +"-3 c #997BA7", +";3 c #8F76AF", +">3 c #7670C8", +",3 c #5C69E1", +"'3 c #5D6AE1", +")3 c #5D6BE0", +"!3 c #5E6CE2", +"~3 c #5F71E3", +"{3 c #6283E5", +"]3 c #617FE4", +"^3 c #6074E1", +"/3 c #6E73CC", +"(3 c #8073B6", +"_3 c #94749D", +":3 c #93719A", +"<3 c #8F6C96", +"[3 c #8C648F", +"}3 c #855682", +"|3 c #7C4D7E", +"13 c #845281", +"23 c #835080", +"33 c #814C7E", +"43 c #804B7D", +"53 c #804A7C", +"63 c #7F497B", +"73 c #7E497A", +"83 c #7B4475", +"93 c #8C6291", +"03 c #9879A6", +"a3 c #9979A6", +"b3 c #6C6DD1", +"c3 c #5C68E1", +"d3 c #5D69E1", +"e3 c #5E6BE2", +"f3 c #5D6CE1", +"g3 c #5D6DE2", +"h3 c #6572DA", +"i3 c #8C73A5", +"j3 c #91739E", +"k3 c #94739C", +"l3 c #94749E", +"m3 c #93729C", +"n3 c #6F447A", +"o3 c #804F7F", +"p3 c #7F4A7D", +"q3 c #7F4A7C", +"r3 c #80497C", +"s3 c #7E497B", +"t3 c #7F487A", +"u3 c #7E4879", +"v3 c #7D4576", +"w3 c #7D4879", +"x3 c #9572A0", +"y3 c #9A7BA8", +"z3 c #9878A6", +"A3 c #9577A9", +"B3 c #5F67DB", +"C3 c #736EC9", +"D3 c #5D66E0", +"E3 c #5C67E1", +"F3 c #5D68E1", +"G3 c #5D6AE2", +"H3 c #5D6BE1", +"I3 c #5D6EE2", +"J3 c #5E6FE3", +"K3 c #616FDC", +"L3 c #8771AE", +"M3 c #95749F", +"N3 c #93729D", +"O3 c #916E99", +"P3 c #8D6692", +"Q3 c #895E8B", +"R3 c #805080", +"S3 c #6E427A", +"T3 c #824E80", +"U3 c #804B7E", +"V3 c #804A7D", +"W3 c #7F487B", +"X3 c #7E4779", +"Y3 c #7E487A", +"Z3 c #7C4476", +"`3 c #835182", +" 4 c #875989", +".4 c #8A5D8D", +"+4 c #9979A8", +"@4 c #9979A7", +"#4 c #9877A5", +"$4 c #9075AD", +"%4 c #5C64E1", +"&4 c #5B65E0", +"*4 c #5B66E1", +"=4 c #5D66DF", +"-4 c #5C66E1", +";4 c #5D67E1", +">4 c #5D69E2", +",4 c #5F6FE2", +"'4 c #5F77E3", +")4 c #706FCA", +"!4 c #8771AD", +"~4 c #8F71A3", +"{4 c #94729E", +"]4 c #94739E", +"^4 c #95739E", +"/4 c #9675A0", +"(4 c #8D6592", +"_4 c #824E7D", +":4 c #804E7F", +"<4 c #7E487B", +"[4 c #7C4578", +"}4 c #7C4376", +"|4 c #7D4477", +"14 c #8C6192", +"24 c #9572A2", +"34 c #9A7AA9", +"44 c #9877A6", +"54 c #8971B4", +"64 c #8170BB", +"74 c #7C6EC0", +"84 c #5B64E0", +"94 c #5C65E1", +"04 c #5E6BE1", +"a4 c #5D6DE1", +"b4 c #5E6CE1", +"c4 c #606ADD", +"d4 c #6F6CCB", +"e4 c #7D6EB9", +"f4 c #92719F", +"g4 c #926F9C", +"h4 c #8F6895", +"i4 c #895E8D", +"j4 c #855686", +"k4 c #80497D", +"l4 c #7F497C", +"m4 c #7F487C", +"n4 c #7E477A", +"o4 c #7F477B", +"p4 c #7D4578", +"q4 c #7E4579", +"r4 c #7E467A", +"s4 c #7C4378", +"t4 c #8E6595", +"u4 c #87588A", +"v4 c #9775A5", +"w4 c #9775A4", +"x4 c #8D71AF", +"y4 c #9675A6", +"z4 c #7068CB", +"A4 c #5B61DE", +"B4 c #5B62E0", +"C4 c #5C62E1", +"D4 c #5B63E1", +"E4 c #5B64E1", +"F4 c #5B65E1", +"G4 c #6075E2", +"H4 c #5E70E3", +"I4 c #8A70AA", +"J4 c #9271A0", +"K4 c #94719E", +"L4 c #9573A0", +"M4 c #9573A1", +"N4 c #94719F", +"O4 c #916B9A", +"P4 c #875889", +"Q4 c #835081", +"R4 c #7D4679", +"S4 c #865587", +"T4 c #855486", +"U4 c #7E4679", +"V4 c #814B7E", +"W4 c #7D4579", +"X4 c #7D4377", +"Y4 c #804B7F", +"Z4 c #7D4478", +"`4 c #824C7F", +" 5 c #8A5D8F", +".5 c #834F83", +"+5 c #835083", +"@5 c #9671A2", +"#5 c #9876A6", +"$5 c #9776A6", +"%5 c #9773A4", +"&5 c #9774A5", +"*5 c #7C6BBD", +"=5 c #5A5FE0", +"-5 c #5A5FDF", +";5 c #5A60E0", +">5 c #5B60E0", +",5 c #5B61E0", +"'5 c #5A61E0", +")5 c #5B63E0", +"!5 c #5C66E0", +"~5 c #6768D2", +"{5 c #786BBE", +"]5 c #866DAE", +"^5 c #9070A4", +"/5 c #9571A0", +"(5 c #9572A1", +"_5 c #9673A2", +":5 c #9671A1", +"<5 c #936E9E", +"[5 c #8E6696", +"}5 c #946F9F", +"|5 c #9673A3", +"15 c #9570A0", +"25 c #926B9C", +"35 c #8D6294", +"45 c #865588", +"55 c #916899", +"65 c #9571A1", +"75 c #91689A", +"85 c #8A5C8F", +"95 c #90679A", +"05 c #9774A6", +"a5 c #946E9F", +"b5 c #936C9E", +"c5 c #9875A7", +"d5 c #9673A4", +"e5 c #9070AA", +"f5 c #886DB2", +"g5 c #866DB4", +"h5 c #5A5CDF", +"i5 c #6962CF", +"j5 c #5A5EDF", +"k5 c #5A5EDE", +"l5 c #5A5EE0", +"m5 c #5B5FE0", +"n5 c #5C63E0", +"o5 c #5C64E0", +"p5 c #6587E6", +"q5 c #5F76E4", +"r5 c #5F70E3", +"s5 c #5C67E0", +"t5 c #5C63DD", +"u5 c #6F66C9", +"v5 c #806AB6", +"w5 c #8B6EAA", +"x5 c #936FA2", +"y5 c #9470A0", +"z5 c #9672A1", +"A5 c #8E6EA7", +"B5 c #946FA2", +"C5 c #9672A3", +"D5 c #9570A1", +"E5 c #9570A2", +"F5 c #9671A3", +"G5 c #9672A4", +"H5 c #9571A3", +"I5 c #9470A4", +"J5 c #8A6CAE", +"K5 c #8F6FAA", +"L5 c #816AB9", +"M5 c #625ED6", +"N5 c #595BDF", +"O5 c #595CDF", +"P5 c #5A5DE0", +"Q5 c #5A5DDF", +"R5 c #5C68E2", +"S5 c #5E71E3", +"T5 c #6588E5", +"U5 c #5B5FDF", +"V5 c #6462D4", +"W5 c #7767BF", +"X5 c #7E68B8", +"Y5 c #6A61CC", +"Z5 c #7C67BB", +"`5 c #8A6CAD", +" 6 c #906FA7", +".6 c #5A5ADD", +"+6 c #7162C6", +"@6 c #8169B6", +"#6 c #8D6DAB", +"$6 c #5959DF", +"%6 c #655ED3", +"&6 c #7865C0", +"*6 c #595ADF", +"=6 c #5959DE", +"-6 c #595ADE", +";6 c #5A5BDF", +">6 c #595DDF", +",6 c #595EE0", +"'6 c #5A60DF", +")6 c #5B60DF", +"!6 c #595DE0", +"~6 c #585ADF", +"{6 c #5859DF", +"]6 c #5858DE", +"^6 c #5858DF", +"/6 c #595CE0", +"(6 c #5C65E0", +"_6 c #5C6AE1", +":6 c #5958DF", +"<6 c #5857DF", +"[6 c #5857DE", +"}6 c #5C62E0", +"|6 c #5957DE", +"16 c #5957DF", +"26 c #5856DE", +"36 c #5856DF", +"46 c #5956DF", +"56 c #595BE0", +"66 c #5D6FE2", +"76 c #5958DE", +"86 c #5855DE", +"96 c #5755DE", +"06 c #5756DE", +"a6 c #5A5CE0", +"b6 c #5B62E1", +"c6 c #5859DE", +"d6 c #5854DE", +"e6 c #5854DF", +"f6 c #5855DF", +"g6 c #595EDF", +"h6 c #5853DE", +"i6 c #5753DE", +"j6 c #5754DE", +"k6 c #5755DF", +"l6 c #5756DF", +"m6 c #5752DE", +"n6 c #5753DD", +"o6 c #5C6AE2", +"p6 c #637FE4", +"q6 c #5752DD", +"r6 c #5751DE", +"s6 c #5754DD", +"t6 c #5A62E0", +"u6 c #5751DD", +"v6 c #5650DD", +"w6 c #5650DE", +"x6 c #5750DD", +"y6 c #6073E2", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" . ", +" + @ # $ % ", +" & * = - ; > , ", +" ' ) ! ~ = { ] ^ / ( ", +" _ _ : < [ } | = 1 2 3 4 ", +" 5 6 6 7 8 9 0 a ! b a c d ^ - e ", +" f g h @ i j k 5 l a ! m n o p / q r s ", +" p { * 5 + ) t u i v j w l x ! m y z A p - B + ", +" C D l E _ F G H ) _ I @ : j w J K [ ! L M { p 3 N B O P ", +" Q R S k ' T U e E , ' V W X u i j k Y l Z ` ...+.p @.#.$.p 5 ", +" %. &.*.=.-.;.>.,.O '.).!.~.& E , ' {.].^.u i /.* w 9 Z ! (.= M p p _.:.<.[.G }. ", +" |.1.@ 2.9 3.& 4.3.5.. 6.7.).!.U U E , ' + ) X I 8.7 9.5 0.l a.b.f c.{ p - d.e.B [., f. ", +" g.h.= > H i.j.k.l.4.m.n.o.s 5.. p.O q.T !.U r.# G s.) _ I @ 7 9.t.0.u.v.= = c.A p _.q > <.B w.x.y. ", +" z. A.B.p C.D.o.E.F.G.H.I.D.P J.K.L.M.N.O.. P.6.Q.T !.U & E , s.R.W S.T.7 j k J u.U.~ ] = { V._.; W.> X.Y.Q = Z. ", +" `. +.+K *.++@+#+$+%+&+*+=+-+G.;+>+,+P 4.K.L.'+)+% !+( ~+q.T !.{+& ]+G x.^+/+(+h 6 /.k _+b :+` <+= { p - d.q [+}+Y.|+1+2+ ", +" 3+h.4+5+6+7+8+g 9++ 0+i.a+b+0+c+d+e+f+*+g+h+@+G.i.l.,+P 4.i+j+'+o.s k+. ~+q.l+m+U n+E G 2++ o+S.@ : /.k k p+q+[ <+= { r+- d.q [+Q B ++s+t+L.;+ ", +" 3+u+v+w+V s.x+y+z+A+B+C+C+$+D+E+F+G+H+I+F.*+g+J+k.K+i.l.f.L+4.i+j+3.M+N.N+. p.O l+T U #+O+, ' P+_ ^.h : j k k Q+r+! m = c.p R+:.q > Q S+T+U+V+W+= X+ ", +" *.b+Y+Z+C+`+ @.@+@`+`+C+@@$+#@Z+E+y+$@Y+%@*+g+h+k.G.H.&@f.D.4.*@n.=@o.s -@!+p.;@q.m+U e n+, ' V >@^.u : /.k Y ,@~ ! ] M '@2 - d.q [+)@S+T+U+t+!@~@- 7. ", +" M {@H+y+E+D+]@$+^@/@(@(@_@C+:@D+E+d+<@Y+%@[@*+}@k.G.E.l.f.|@1@*@m.2@o.s 5.3@4@5@6@7@8@U n+, 9@+ R._ u @ 0@4 [ *.l ! ~ = '@2 - a@q [+)@T+++b@t+~@c@W+5 3. ", +" h.U E+$@d@e@D+f@g@(@h@i@h@(@C+j@ @k@d@%+l@m@[@*+}@=+G.i.;+f.D.P 4.n@2@o.s -@. 6.o@q.6@!.e E , ' + p@X q@@ : : 3 1+S ! ~ = M r+^ - r@> Q Y.s@t@t+1+c@C =.|.u@G+ ", +" v@l.$@%+y+E+D+f@C+_@w@h@x@y@@@z@A@k@d@%+Y+%@[@*+B@C@-+K+;+D@u@P 4.j+L.E@N.5.. p.O q.T 8@& F@G@' + ) H@h : j : I@J@l K@b L@M@N@d d.q W.Q B s@O@t+P@w.Q@D 9+R@Q +@ ", +" S@T@Y+H+y+E+D+ @$+C+U@V@_@C+W@ @D+E+d+$@X@v+Y@g+Z@`@ #.#l.f.+#P 4.n.L.M.N.O.@#p.O q.m+!.##$#%#' + ) X @ : j &#*#M Z r b M =#N@- d.-#> ;#>#++,#'#P@w.C D 9+W+9+u )+ ", +" ,#)#!#~#y+E+D+D+ @+@C+{#@@$+.@z+D+0+]#^#I+f+*+}@h+k.K+i.l./#D.P 4.n.(#j.s O.. p.O q.T _#& $#%#' 2+) _ @ : :#5 <#l a } ] = { p - d.q > )@Y.R t@[#~@c@C D 9+}#C.3+p $@+@ ", +" |#9.1#e+H+2#d+E+D+z+.@$+$+$+f@z+D+E+y+$@~#m@3#4#}@h+k.G.i.5#,+6#7#J.L.3.o.s 5.. 4@$ 8#!.8@##E , H + ) _ 9#0#6 a#b#k a c#~ M c.A - d#q > }+e#f#g#[#~@c@C D h#i#C.C.g.j#'.k# ", +" l#5.X@m@X@$@<@y+e@e@D+ @ @ @D+m#c+c+y+$@Y+m@[@*+}@h+n#o#p#5#,+D.q#K.L.3.r#s#5.p.>.Q.l+!.U n+t#, H u#_ I @ : @ 1+v#8 a r <+M '@r+^ d.q > Q Y.T+,#t+~@c@C w#x#y#z#A#B#|.C#D#^# ", +" E#k.4#3#e+Y+$@F#y+d+d+G#H#)#I#J#K#2#L#M#N#O#P#Q#h+R#S#E.H.D@T#+#7#K.U#3.s s V#( O W#T !.X#& E Y#Z#) _ I @ : @ `# $w ` ~ = .${ +$#.q+e.> Q B |+t@'#~@c@C D 9+y#@$A##$|.g.$$p.*+ ", +" W+Y+%$4#v+&$*$G+=$-$-$;$>$,$'$)$!$~${$]$^$/$($_$:$<$[$}$|$1$/#P 2$K.=@3$s 5.3@4$;@$ T !.X#& 5$Y#+ ^+) I @ : :#6$~ 7$8$~ f M { p - 9$> ;#B T+R U+0$a$b$c$D d$i#@$e$f$g$S@h$i$j$k$l$ ", +" ^ m$n$o$p$q$r$s$t$u$v$w$x$y$z$A$B$C$D$A$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$M.s 5.. T$O U$T !.U V$, ' 2+^+o+I @ : ! W$* Z a ~ = M { @.#.d.W.;#B T+R t@t+X$c@Y$9+W+=.C.e$B#Z$%.g.h$`$3+_ ", +" %.%+%@%#%$%%%&%*%=%-%;%>%,%'%)%!%~%{%]%^%/%(%_%:%<%[%}%D$|%1%2%3%4%5%6%7%8%9%0%a%q.l+!.U & $#, ' b%) _ I @ I c%d%v x e%} = M { / #.9$W.Q B Q+R s+f%g%C h%9+W+=.C.i%j%|.`#k%3+l%m%c$,.k.h@ ", +" n%o%p%#%q%r%s%t%u%v%w%x%y%z%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%`% &.&+&@&X#, Y#' P+W H@@ : _ g.#&j a $&| .$M A @.a@9$[.Q %&T+R t@&&,@*&D v#W+=.C.e$j%=&%.<#3+l%`$-&;&>&D.,& ", +" '&)&)%!&~&{&]&^&/&E%(&_&:&<&[&[&}&[&|&|&[&[&1&[&2&3&N%^&:&4&5&6&7&8&9&0&R%a&b&c&d&e&f&g&h&i&j&k&l&m&_ H@@ v 9#n&o&5 ` ! ~ p&{ p - a@q q&}+B T+R t@P@r&C D 9+W+=.C.s&B#t&u&h$3+l%v&w&6+x&y&W+B+ ", +" z&A&B&C&D&E&F&G&H&E%6&I&:&5&J&1&[&K&L&_&_&K&M&N&1&O&4&P&I&Q&R&S&T&]&U&H&V&W&X&Y&Z&`& *.*+*@*#*$*%*&*/+**=*-*8 ;*>*K ,*< f D#{ V.- 9$e.J@B >#|+t@t+~@c@C D u+'*=.C.e$B#S@)*h$3+l%!*w&~*{*-&]*I P ", +" ^*/*(*_*:*<*F&[*T&S&E%}*P&<&(&J&I%_&_&L&|*2&L&1*_&2*1&5&<&P&}*R&S&E&3*4*5*6*7*8*9*0*a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*c#= M { @.- ; e.J@B T+R t@t+g%C C v#s*y#t*e$B#|.S@u*h$v*w*x*y*z*{*A*|#>&S@A+B*C* ", +" ^*D*E*D&6*F*F&T&S&E%Q&G*P&(&1&[&_&2&2&D%H*D%D%2&L&|&[&}&4&P&}*6&/&T&G&4*<*9*I*J*B%B%K*K*K*L*M*N*O*P*Q*R*S*T*U*V*W*X*Y*Z*~ `* =.=@.;.$.> <.}+T+c%t@t+X$+=c$v#s*=.C.e$g$=&%.@=#=$=x*y*6+%=&=A**=|#==-=;=E ", +" >=,='=:*)=!=~=E&C&6&I&P&4&}&[&_&2&D%3&3&{=]=3&^=2&1*I%1&/=(=I&6&E%H&G&F&_=9*V&:=<=B%'=[=}=M*|=1=|=2=3=4=5=(*6=7=8=9=0=a=b=c=d=e=f=g=h=i=j=B T+R t@t+~@k=c$v#s*}#C.e$B#=&l=)*m=$=n=y*6+%=o=A*h.p=q=r=4+C s ' ", +" s=t=D&I*u=v=~=E&/&E%w=x=4&}&[&1*2&H*y=z=A=B=H%3&D%L&C=D=4&<&^&w=/&H&E&[*F*6*V&J*~&E=K*[=O%}=F=2=G=H=I=J=K=L=M=N=5=O=P=Q=9&R=S=T=U=V=W=X=Y=Q+Z=`= -.-w.C D 9+W+=.C.e$j%=&+-<#3+@-x*#-6+x&$-%-|#p=&-*-=---&.M C+;- ", +" >-L%F&I*F*4*~=T&]&/&6&:&:&1&[&,-2&'-)-A=!-A=~-H*{-L&K&J&4&:&^&6&C&H&G&~=D&6*I*]-~&B%K*^-[=/-|=(-G=3=I=J={&N*_-:-<-[-}-|-O*1-(*2-3-4-5-6-7-8-9-0-a-b-c-d-e-f-g-h-i-B#g$Z$+-<#3+l%x*y*6+%=l#j-*=p=k-l-=-m-4+n-q=o- ", +" p-q-r-_=9*F*4*[*T&_*/&}*P&<&5&1&K&s-D%3&B=A=A=H%)-D%_&I%1&4&<&^&6&/&T&G&_=D&I*I*~&t-B%u-A%O%v-|=1=w-H=x-y-K%w%z-A-B-C-5=|-O*D-E-3-F-c*G-H-X&I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-@=X-3+n=Y-6+z*$--&Z-`- ;q=r==-m-4+.;+;@;E i.#; ", +" $;,=%;:*9*<*F&[*&;]&*;6&=;P&1&-;C=s-L&;;)-~-~-]=H*{-_&C=J&5&:&I&>;/&,;G&4*F*6*I*~&t-';A%A%);/-W&2=!;I=~;J=N*{;];^;/;(;_;|-:;D-3-<;F-[;Q=B&};|;1;<;X&2;3;4;5;5;6;7;8;9;0;a;b;c;d;x*y*6+%=e;A*W$f;&-g;h;i;j;k;l;5+m;n;o;C p;q; ", +" $;r;s;0*V&9*_=[*&;H&/&w=P&:&5&N%[&K&L&D%D%3&H*|*|*L&_&N&1&4&:&t;E%]&T&G&F&F*6*I*0*t-B%A%u;v;a*|=2=w-H=x-8&N*w;x;y;z;C-A;X&O*B;3-C;D;E;F;1;G;H;I;J;K;K;L;1;D-/;!;M;N;O;N;P;Q;R;S;T;y*6+%=6$A*U;V;q=r==-m-4+`.W;--X;X;X;--x*K.Y; ", +" Z;`;G&0*F%6*F*[* >T&H&*;^&P&<&4&J&I%s-L&2&D%2&L&K&K&[&}&4&4&I&>;6&_*.>[*F&F*9*I*J*~&B%u-u;}=+>|=2=!;H=~;8&N*M=@>#>$>C-A;X&^%E-1-C;c*E;Q=%>&>H;*>=>->;>>>`;,>'>)>L%c*!>|=~>{>]>^>/>(>_>:>o=Z-*=<>[>r==-m-4+>&}>X;X;X;X;X;|>4. ", +" 1>2>{&7&3>5*F*4*[*.>]&E%>;I&^&<&4>J&[&C=_&L&1*K&K&5>N%5&<&^&>;6&C&H&G&~=_=9*:*F%~&B%';6>u;}=M*|=7>3=I=8>8&{&9>0>a>!>C-v%r-^%b>1-c>d>[;9&1;6=e>*>f>;>Q*g>R*`;h>'>i>j>k>3-J*l>m>n>J*o>p>q>r>W$s>t>q=g;=-m-u>u>>&v>X;X;X;X;w>C+ ", +" x>/*!>6*F%V&9*F*F&T&T&C&6&>;y>4&4&4>-;[&[&N&N&N&N%1&5&4&:&^&>;E%S&E&G&F&<*z>A>J*B>';'=A%C>}=F=W&D>3=~;y%8&E>F>G>H>!>C-_;P%I>J>1-(*K>E;9&P*G;L>I;M>N>Q*!%M%`;h>'>0&O>Z&P>Q>I;|-2=F%R>S>T>U>V>W>X>Y>r==-Z>u>u>5+`>X;X;X;w>6+ , ", +" .,+,@,~&J*I*9*D&F&#,T&]&E%>;>;^&<&4&4&1&1&1&J&J&1&4&<&<&^&w=6&E%H&T&~=v=<*I*F%~&E='=K*A%$,%,v-(-D>H=y%8&{&&,*,=,/;-,;,|->,^%J>1-(*,,E;9&1;',L>I;f>L%),g>R*!,~,'>e*O>/%j>P>k>{,],r;^,I*/,(,_,:,<,[,=-m-4+u>},--X;X;X;X;|,> C* ", +" 1,2,s;t-J*J*I*F*!=F&E&3,C&/&6&>;^&:&P&<&5&4&4&4&4&:&^&>;>;E%/&_*T& >F&F*4,:*7&~&~&'=5,[=$,%,|=2=w-I=x-6,w%w%7,8,9,-,;,X&O*J>1-2-K>c*E;0,',L>a,7=f>->Q*b,R*`;c,'>0&i>/%j>2,A&d,1>!&e,2-f,6*g,h,i,j,k,l,m,`.W;v>X;X;X;X;n,T ", +" 1>Q*A>E=~&0*3>5*F*F&~=.>H&H&E%6&>;^&I&P&:&<&o,P&=;I&>;6&R&]&H&T&[*F&!=<*:*I*0*t-B%6>A%[=}=p,q,(-w-H=x-r,w%s,t,b*<-u,;,P%:;v,1-2-F-c*E;9&&>H;w,*>J;K;>>x,R*y,~,Q>0&z,A,B,2,A&1,r;C,s=D,t$E,F,_&G,H,I,J,K,L,}>X;X;X;X;X;&.[@ ", +" M,N,E-~&'=t-~&0*I*6*F*!=~=E&H&O,C&E%w=>;}*P,^&I&I&6&>;E%/&S&S&H&[*Q,4*F*z>3>0*~&E='=A%R,O%%,|=|=2=3=f,y%w%S,T,U,V,$>5=W,P%X,J>3-(*G-[;E;9&&>Y,I;=>J;N>g>Z,`,`;)>0&i> '.'2,2>+'1>$;C,s=@'#'/*$'H;#>u=P&%'&'*'`>='X;X;X;X;4+A+ ", +"-';'>',''')'-'!'!'~'~'{']'^'/'('_'_':'<'['}'|'1'2'3'3'4'5'6'7'8'9'0'9'0'a'b'b'c'd'e'c'c'c'f'g'h'i'h'j'k'l'l'm'n'n'o'p'q'r's't'u'v'w'x'u'y'z'A'B'C'D'D'E'F'G'H'I'J'I'K'L'L'L'M'N'O'P'Q'R'S'T'U'V'V'V'W'X'Y'Y'Y'Y'Z'`' ).)+)@)#)$)%)&)*)=)-);)>),)')))!)~)~)~){)~)", +";'>'>'>'>';'-'])!'^)/)()()_)(':)<)[)})|)1)1)2)1'3)3)3'4)4'4'6'7'7'5)5)9'a'a'a'a'c'a'c'f'f'h'6)h'k'k'l'l'l'7)n'n'8)n'p'p'r'r't'9)0)a)b)c)y'z'A'D'D'D'd)E'e)f)I'f)I'K'g)g)L'L'h)N'P'i)P'j)k)k)k)U'V'V'W'l)Y'X'm)m)Z'`'`'n)o)p)q)r)s)t)u)v)w)x)y)z)A)))!){){){){)~)", +"'';'>'B)>'>';'-'C)D)E)F)G)H)I)/'<)<)J):'K)K)L)|'1'M)M)3'N)4'O)6'7'7'5)P)P)a'Q)Q)a'R)R)R)R)f'R)6)k'l'l'7)n'n'n'n'n'q'S)S)r't't'9)9)T)U)y'V)W)X)D'Y)Y)F'F'F'I'I'K'I'Z)Z)`)L'M'M'N'N' !.!j)k)k)k)U'U'V'V'l)+!Y'Z'm)Z'n)`'@!#!$!%!&!*!=!-!;!>!,!y)'!)!!!))~){)~){)~)", +"~!{!]!~!]!]!{!^!~!/!]!(!_!:!~{v!v!,{y~'{z!B!<~:!:!A~[~[~F!G!V~){){D~2~2~i~i~_!_!P!P!S!S!T!U!8~X!9~X!E~Z! {a~b~.{c~!{~{{{]{^{/{({{!^!{!{!]!{!~!{!", +"^!{!^!]!]!^!~!]!{!/!^!_{M!z!j~f!f!j~e!e!e!d!c!|!|!|!{w!w!y!y!z!A!:~<~:!D!B~E!}~}~C~H!){D~K!2~M!i~N!_!1{2{R!R!R!T!V!8~X!X!Y!Y!`!0~a~b~b~c~3{4{5{c~@~6{^!{!^!{!{!{!^!]!^!", +"{!{!{!{!^!]!{!^!{!{!]!7{2~q!O~!~O~f!f!f!}!}!l~d!d!c!~c!|!|!|!d!d!d!c!e!e![!e!m~m~O~O~h!o~j!l!l!<{p~9{9{q{q{9{r{s{(~m!t{u{w!v{d{'{w{A!x{C!A~A~B~y{f{}~z{H!g{|~D~K!2~X~N!_!_!1{P!Q!S!S!T!U!8~X!X!Y!Z!`!`!a~a~b~G~H~3{~{A{v!B{C{{!{!{!]!{!]!{!{!]!", +"{!]!{!{!{!{!{!]!{!^!D{E{G!&{j!o~h!h!n~F{O~O~j~e!}!e!}!d!d!c!c!d!c!c!c!d!c!d!}!}!d![![![!e!e!f!O~O~h!o~p{o~G{G{p~H{9{I{J{q{K{L{L{L{u!m!M{d{d{N{O{O{x{P{Q{e{y{y{f{f{z{R{H!g{g{S{1~h{h{i~_!_!5~2{P!T{S!T!T!U{8~X!9~E~Y!`!`!a~b~b~c~H~3{.~V{]E{'{8{k!j!i!~~h!h!!~f!O~f!O~f!j~j~e!e!e!e!e!e!e!e!e!e!P~P~f!O~g!g!h!o~p{p{G{G{<{H{H{Z{I{,]K{K{']']q{L{L{L{t{)] ] ]O{!]x{Q{P{.]y{#]#]~]$]{]%]]]&]S{^]^]/](]_]_]6~2{Q!Q!Q!:]T!U!U!j{X!X!*]Y!Z!0~0~a~b~.{<]H~.~+~Y![]}]]!{!]!{!]!]!~!{!{!^!", +"]!{!]!^!^!^!{!{!^!^!]!|]1]D~q!j!k!j!j!8{8{o~h!h!O~O~O~f!O~O~m~P~P~e!m~m~f!f!f!O~f!O~g!h!o~o~j!G{G{Y{p~Z{2]Z{I{I{,]']']3]4]3]5]L{6]7]7]8]9]0]!]a]b].].]c]#]~]$]d]%]]]&]e]^]^]f]g]_]_]h]h]h]i]i{j]k]U!U!j{X!X!X!E~Y!0~`!a~b~.{c~c~H~.~l]C~m]n]{!^!{!]!^!^!{!]!^!]!", +"]!^!{!{!^!{!^!{!~!{!{!]![~G!q~{~{~j!j!j!8{j!h!h!o]h!!~!~f!O~O~O~O~f!g!O~O~O~g!g!h!o~p{o~G{p]p]l!Y{H{q]9{I{,]r]']s]3]t]t]u]4]v]L{w] ]9]9]0]0]x].].]y]z]~]~]d]{]A]]]]]&]B]f]h{C]D]_]_]E]h]i]i]:]k]U!U!F]j{j{`~`~Y!`!`!F~a~b~.{<]H~~{{{]{q~G]${^!~!{!^!{!{!{!^!^!{!", +"{!^!~!~!{!^!{!{!{!^!^!H][~A~{~q~Q~l!l!k!j!j!~~o~o]p{h!h!!~!~!~h!g!!~!~!~h!h!o~j!p{p]I]G{G{Y{q]H{Z{I{I{I{I{K{']']t]t]u]u]J]7]K]L{L]9]9]0]M]a]N]y]O]#]P]P]d]A]{]]]Q]Q]R]f]f]D]D]S]S]T]U]i]i]j]k]k]V]W]X]Y]9~Z]Z]Z!`!F~F~b~b~.{H~H~.~`]E!^{@~ ^{!~!{!]!{!]!~!{!{!^!", +"{!{!^!]!]!]!{!{!]!]!~!.^+^@^'{p~q~#^l!{~l!j!j!j!8{j!~~h!o]8{h!h!h!h!o]h!h!p{p]p]G{Y{<{$^Y{Z{Z{Z{I{%^,]r]&^*^4]=^-^-^;^>^;^,^'^L{9][{[{a]M].])^!^z]~]P]{]~^A]{^{^]^R]f]^^/^(^S]_^:^<^[^}^j]k]|^|^W]Y]1^2^Z]3^4^4^ {F~F~b~.{<]H~3{{{G~5^/{6{6^]!]!{!^!{!{!~!^!]!]!", +"^!]!]!]!]!~!]!{!~!{!{!~!7^[~t!q~q~q~q~p~{~{~{~l!k!j!j!j!j!j!j!8{~~j!8{I]G{G{p~Y{<{H{Z{Z{Z{8^I{,],],]9^']=^=^u]u];^;^0^7]>^a^b^L{[{M]s{b]c^c^d^!^P]P]~^A]{^{^{^R]R]/^^^e^(^S]:^:^[^[^f^g^|^|^h^i^Y]j^2^k^k^4^4^ {l^b~b~b~G~c~H~3{=]_!m^n^{!{!]!^!{!{!{!^!^!{!~!]!", +"{!^!^!]!]!^!{!~!{!{!]!{!o^D!u~&{t~q~q~q~Q~{~p~l!l!l!l!l!l!G{j!G{l!G{G{G{G{p~p~H{Z{Z{8^I{I{r]p^']p^*^=^4]u]q^q^>^;^)]L]L]>^r^s^L{s{c^t^u^z]v^d^w^w^~^x^x^{^y^]^z^/^^^e^(^:^A^<^[^[^B^g^g^C^D^X]1^j^j^k^k^4^E^F^l^G^G^H^c~c~c~3{5{A{T~B{I^{!]!]!{!]!{!]!{!]!]!{!{!", +"]!{!{!{!{!{!{!]!{!{!]!J^K^:!:!q{&{t~|{t~q~q~q~p~q~q~{~{~{~<{l!<{<{<{H{<{Z{H{9{8^I{I{r],],]p^L^*^*^4]u]u]6]q^;^0^7]L]L]M^M^N^c^L{t^u^!^z]O^w^L{w^P^x^{^Q^y^R^z^S^T^U^A^A^_^V^[^[^B^B^W^h^D^X^1^j^Y^Z^k^k^E^`^G^ /G^ /<]././3{+/@/#//,/'/>/L{u^)/O^O^!/w^L{x^~/~/Q^z^z^{/T^]/]/^///V^(/_/:/B^g^W^h^^a/b/b/-/;/c/[{>/>/M^d/e/>/L{)/f/!/!/g/L{L{L{~/h/R^{/S^{/]/^/////i/j/_/_/k/W^W^/>/z/z/>/A/b^s~L{,/!/B/P^L{L{L{L{L{h/C/{/D/E/]///i/j/j/j/k/:/F/F/F/[/l/}/G/m/m/n/n/n/q/q/r/r/1/H/H/3/I/J/5/K/6/L/M/N/O/^!P/^!]!{!{!{!{!]!{!^!^!~!", +"]!~!~!]!{!{!^!~!{!{!{!~!]!Q/A!R/r!v~v~S/q!q!q!q!q!q!q{q{(~K{']K{K{3]']*^t]=^=^*^*/u]q^;^;^=/T/b/L]L]x/c/>/>/>/U/V/W/X/z/Y/s^)/L{B/Z/P^Z/~/a{L{C/C/D/D/D/^/^///i/j/j/`/:/:/ (F/.(l/l/+(G/@(m/n/#($($(r/q/%(H/&(H/3/*(*(*(5/=(-(Z{;(>(,(P/'(P/^!]!{!{!^!{!{!{!{!{!", +"^!{!{!{!{!]!{!{!^!{!{!{!)(!(y~T~t!r!r!v~r!r!v~u~(~(~(~~(3]']3]t]t]t]4]4]m!u]q^q^q^a/=/0^0^T/b/b/x/c/c/>/W/U/U/X/u^{({(](^(!/](L{/(Z/((a{a{_(L{C/D/D/:(^///i/<([(`/`/}( (|(1(2(.(3(G/+(4(5(5(6(n/6(q/7(%(8(&(8(I/I/K/K/K/9(9(L/0(a(b(c(d(e(f(P/^!^!{!{!]!~!]!^!^!", +"^!~!]!{!{!]!]!{!{!{!]!g({!h('{y~T~t!t!;{r!r!r!i(;{~(3]~(m!j(m!4]6]6]6];^6];^0^;^=/L]L]b/L]L]c/y/k(>/U/U/t^X/X/{(l(,/)/m(Y/,/n(L{((Z/o(o(C/C/L{D/p(:(q(i/i/[(r(r( (s(1(F/1(t(3(3(4(u(4(#(v(#(w(x(7(7(7(y(y(z(I/A(B(K/C(=(C(D(J/E(F(G(H(I(J(e(d(P/^!^!{!~!{!^!]!{!", +"{!]!]!^!^!{!~!]!{!]!{!{!u/{!K(y~T~t!t!t!t!t!;{m!u!m!m!m!6]6]6]6];^)];^;^7]7]b/0^L]L]x/x/x/y/>/U/U/W/X/L(X/)/)/f/,/,/)/M(N(!/((L{O(o(o(P(P(P(L{:(Q(q(q([(R([(r(r(|(|(1(t(S(T(3(4(4(U(#(V(V(w(w(W(W(X(y(Y(Y(I/A(A(Z(B(`(C(D( _j]._+_G(@_#_I(J(e(P/P/^!~!]!{!{!{!{!", +"{!{!{!{!]!{!{!]!{!{!]!]!{!{!$_w!v!T~v!u{u{u!M{u!t{t{M{M{6])])])]7]7]7]7]7]L]x/L]x/M^y/>/>/>/U/t^U/L({({(%_%_&_*_B/B/%_Y/=_/(o(L{_(C/P(-_-_p(L{;_>_R([(,_r(s('_'_|()_S(!_3(T(U(u(#(#(V(w(x(~_W(W({_]_]_^_Y(Z(Z(B(B(C(/_/_(_I/7]__:_<_G(#_#_#_I(e(P/f(^!^!]!{!]!{!", +"{!^!{!{!{!{!^!~!]!{!{!]!{!^![_u{T~w!w!w!w!M{)]w!)]d{)]d{)] ])]7]7]L]L]8]c/[{[{}_>/>/>/U/U/L(X/l(X/{()/&_,/](B/|_1_n(n(2_3_o(4_L{P(-_-_p(;_q(L{>_5_r(,_r(s('_)_)_6_7_7_T(T(8_U(9_V(V(0_0_a_b_b_c_]_]_d_^_d_e_Z(f_f_/_g_g_h_i_j_k_l_m_n_<_G(G(o_H(d(e(P/^!{!{!]!{!", +"^!{!{!~!{!]!{!^!]!]!~!~!]!{!p_u!T~'{y~d{w!q_q_'{d{ ] ]r_8]9]r_8]8]x/[{[{>/>/>/>/z/t^X/X/{({({(s_%_s_&_*_B/n(n(t_((((u_v_w_3_3_L{-_x_y_;_z_>_L{A_,_'_B_s(C_)_6_D_E_F_F_F_G_H_V(I_V(0_0_a_J_b_]_]_K_^_^_e_Z(L_M_f_M_g_N_O_O_P_Q_R_S_n_T_U_V_G(#_H(H(d(P/P/P/^!{!]!", +"~!{!{!{!^!{!{!{!{!{!{!{!{!{!W_X_u!w!y!w{w{ ]w{w{ ]w{9]Y_[{Y_Y_M]>/M]M]>/s{z/t^t^X/{(X/{()/s_%_&_*_B/n(n(1_((((Z_Z_`_ :.:o(+:-_L{z_;_z_z_>_@:L{,_s(#:C_$:6_6_%:F_E_%:9_9_&:V(0_0_*:=:J_-:-:K_K_;:;:;:e_>:,:>:>:':):g_!:~:z({:]:^:/:(:(:n_T_<_G(#_J(_:::'(P/t/]!~!", +"{!]!]!]!{!{!{!^!^!]!^!{!{!]!^!<:t!x!x{w{w{x{x{Y_Y_Y_0]0]0]0]0]z/M]z/z/z/X/u^s~s~)/)/](%_%_*_B/n([:1_t_((((Z_Z_}:|:a{1:2:P(;_;_L{z_>_3:A_4:B_L{C_#:C_5:6_6:6:7:8:G_9:9:H_&:0_0:a:J_b:c:-:d:K_e:f:g:,:L_>:>:):h:):i:):j:F/k:l:m:n:n:o:p:m_m_U_U_G(#_o_J(d(P/P/P/{!", +"]!^!^!{!{!]!{!{!]!]!{!{!]!{!^!q:;{u!x{r:Q{P{P{P{Q{b]M]a]b]z/c^c^c^c^u^u^u^)/)/%_%_B/B/B/n(n(n(n(1_((((Z_Z_|:3_s:s:}:t:u:x_v:z_L{A_@:4:4:B_#:L{w:5:5:6:6:6:x:x:8:9:&:&:&:y:=:a:b:z:c:A:d:e:B:C:C:D:E:L_F:F:):):G:H:G:I:J:l:K:L:M:N:O:o:o:P:m_<_U_U_#_Q:Q:I('(f(R:", +"^!~!]!{!{!]!^!]!{!~!]!{!^!~!^!P/S:m!T:e{e{Q{.].]c^b]b]c^U:c^c^u^u^u^)/)/)/!/](!/*_B/B/n(V:1_((Z_Z_|:|:}:+:3_+:x_y_z_W:z_3:3:A_L{4:B_X:X:w:5:L{6:6:Y:x:x:x:Z:G_9:`:`:`: <,<'[9<0<0<,<,['<^:^:o:(:P:n_U_G(#_#_I(", +"]!^!]!^!]!{!~!{!^!^!{!^!'(f(e(o_#_#_'[)[']!^~^~^d]~^~[e[0<0[9<9},},}Q[Q['})}R[R[!}~}{}]}^}/}(}_}_}:}>_<}[}}}|}1}2}`[3}4}4}c[d[>[9<9<0_@:@:A_4:4:X:#:]<^<^}f},}f}E}F}F}!}!}!}G}G}G}^}H}h}I}I}i}J}i}K}L}M}N}N}O}P}o}2}1}y[`[3}c[-[F_@:A_A_4:B_B_X:#:^<^},}$|f}%|&|&|!}*|*|=|-|;|;|H}H}H}H}>|,|,|'|I}t<)|!|~|{|{|]|^|O}O}1}1}y[/|z[c[d[d[A[9<0[9<9<01,1'1P(!_)_C_C_5:6_6:6:Y:6:S<<[>[9<0[-[F[-10<,<,2f1,2h1,2'2J1J1K1K1)2!2!2!2~2O1O1{2]2B}^2/2/2(2_2:2W1X1<221%1[2Z1Z1w1B|h|h|D|}2|2121}1}`[223}4}F<,[h[", +"^!^!^!^!d(I(I(#_G(U_m_(:p:O:'2,2,2c2d2J1J1)2K1)2e2e2!2!2f2g2g2h2i2g2j2k2l2m2n2o2p2q2:2:2X1Y1Y1t141r2Z1A|B|h|{|x1O}O}o}1}1}z[51c[d[d[>[0<02>2C2d2J1'2D2J1)2)2E2f2)2f2f2F2G2G2G2H2I2J2K2L2M2N2O2P2Q2R2R2p2:2S2W1Y131[241u1&1A|h|T2{|D|]|o}o}1}y[U24}4}d[>[B[0<02B2>2,2C2,2d2D2D2@3#3#3#3E2F2F2F2F2F2$3%3G2&3S|*3=3-3;3>3,3'3)3!3P2R2o2p2p2X1W1~33131%1A|A|w1T2{|N}]||212o}1}z[514}d[e[e[0<0[e[4}]3z[1}1}o}O}^|{|{|h|*1A|^3/3(3Y2_3:3<3[3=}p[}3-}-}@|Q|6|5|5|A2~1|313b2d123=2=2I1>2>2>2C2C2d2c233D2D24343#353E2F2F2F263%3%3%37373839303a303a3b3c3d3d3'3'3e3f3!3g3p2:2W1W1<231%1v1&1A|w1h|T2]|^|=1O}2}y[`[c[d[F<>[-10[e[d[c[z[y[2}q}|2^|}2{|h|B|B|Z1%1%1h3i3j3k3l3m3_[}3f}%|%|5|$|R|G1R|R|n3o3:1=2-2;2-2;2>2,2,2c2333333D243#343p3#3q3r3q36363s363t3u3v3w3D2x3y3z3A3B3C3D3E3F3,3d3G3H3P2g3o2I3q2:2J3Y1Y1[2%1Z1v1w1B|T2C|D|=1=1o}1}`[3}z[F[i|4}z[`[1}1}o}P}D|x1h|T2B|&1Z1%12121<2X1K3L3l3M3N3O3P3Q3p|R|_1S|T|R3S3:1-2;2T3>2>2>2c2c2@333U343434343V3q3q363W363W3s3t3X3Y3Z3`3 4.4+4@4#4$4%4&4*4=4-4;4c3,3>4'3H3H3P2o2p2:2,4W1Y1~3%1Z1v1&1B|'4T2{|^|O}o}o}`[`[3}d[F2B2>2d2d2d23333434343p353q3536363W3W3Y3Y3<4[4}4C2|414243444#454647484%49494*4E3E3E3F3>4G3O204f3a4q2p2:2W1~331[241&1B|B|h|C|C|P}O}o}2}/|z[]3i|;[-10<", +"t/P/e(H(#_V2U_m_m_p:^:^:'[F<4}3}z[`[1}o}O}^|^|h|h|A|Z1Z1[2[2~3X1W1p2p2o2b4H3c4d4e4f4{4g4h4i4j4H1J1)2D2d2d2@343q3U3U3V3V3r3k4l4l4m4n4W3o4p4q4r4s4t4u4v4w4w4v4x4y4z4A4B4B4C4D4%4E4F494E3E3c3F3'3G3O2e3!3g3I3:2:2Y1Y1[2[2%1G4B|B|T2x1]|O}o}o}1}y[z[F[", +"^!::I(J(#_V2<_m_(:O:n:M:,[d[c[z[`[`[o}o}|2C|C|T2B|&1v1Z1%1Y1H4W1:2p2p2g3P204O2'3F3I4J4K4x3L4M4N4O493P4Q443R4S4T433W3U4U4V4m4W4X4Y4U3Z4`4 5.5+5@5#5$5%5&5&5*5=5-5;5>5,5'5B4B4)5849494-4!5F3c3d3'3'3H3f3o2p2p2:2X1X121t1%1Z1A|A|h|h|]|=1P}121}y[3}4}F5'5,5B4D4n5o584F4-4-4c3F3,3'3H3O2f3o2p2:2X1X1<231[2Z1G4w1B|h|C||2|2o}2}1}`[z[c[d[A[", +"f(c<_:Q:G(U_n_n_p5O:g[,[0<0[", +"::d(J(o_U_U_n_T5o:^:h[a[i|c[z[`[1}o}=1^|C|T2B|&1Z1%1%131~3H4W1p2o2b4f3O2O2d3c3c3E3-49494E4)5)5B4,5;5U5-5V5W5X5h5h5Y5Z5`5 6.6+6@6#6$6%6&6$6*6=6*6-6*6N5;6N5;6h5h5>6,6l5=5'6)6,5B4B4D4)5E4!5-4s5c3R5'3'3H3P2f3p2:2W1X1Y1t1t1u1Z1&1B|h|]|^|O}`11}y[U2c[4}A[", +"d(H(J(C[G(n_(:P:o:M:h[><0<95=5=5j5,6Q5!6O5;6N5N5*6*6~6$6{6{6]6^6^6=6{6^6$6{6$6{6*6*6N5N5N5/6!6l5j5-5=5>5,5B4)5)584(6(6-4E3F3,3'3G3e3!3o2I3,4W1Y1t1s1[2Z1&1B|h|C|{|P}O}o}1}`[51F6P5!6l5-5)6'5,5B4}6)5%4F4-4E3F3F3d3'304P2f3p2:2,4X1S531[2u1Z1&1h|h|{|]|O}12`[/|z[c[d[", +"_:J(#_G(U_n_p:O:O:h[,<0<9<-1e[i|z[51`[1}o}|2]|{|h|T2&1v1%1[231r5W1:2p2R2P2P2O2>4,3c3E3-4F4(6D4D4B4'5)6-5=5l5l5P5h5;6;6N5*6=6]6^6:6|616<6|626263626364616^6<6|6^6$6{6*6N5N556O5/6P5l5=5;5'5'5B4)5%4%4-4!5E3c3,3'3'3O2g3o2p2:2W1<2t1[2[2Z1B|B|h|}2]|}2o}`1y[z[z[4}", +"I(H(G(@_<_m_p:O:^:h[H6/6;6N5*6*6=676^6:6|6<63636868686962686062636|6<6<6]6]6:6{6*6N5O5a6Q5l5j5=5=5>5B4B4D484E4!5-4E3d3>4'3H3f3g3o2p2:2W13131[2u1A|w1h|{|C|O}P}1}y[`[c[c[", +"H(#_o_G(n_T5(:o:'[d[c[z[y[2}o}P}D|C|{|B|B|A|Z1[231Y1W1:2p2o2f3H3H3'3d3F3E3*4(6E4)5b6B4'5;5m5j5l5h5h5N5*6*6{6c6]676[6362636869686d6d6e68686d69626f626[6[6^6]6{6{6*6*6O5O5Q5g6j5=5>5'5b6)5D4E494-4E3E3c3'3O2H3f3o2p2:2X1S531[2%1A|B|B|T2]|^|O}o}1}y[z[c[", +"c<#_#_G(<_(:p:o:N:H4F3c3E3-484E4b6B4'5'5U5-5l5Q5O556*6*6~6:676<6[636962696d6d6d6h6i6h6j6i6h6j6d696k68626<676^676$6*6N5O5O5P5l5=5-5;5,5B4D4)5o594!5E3c3>4G3O2f3g3o2p2:2Y121t1%1v1B|B|h|C|D|=1o}2}y[z[c[", +"d(#_G(U_b6j5-5>5'5'5B4E4o594-4E3c3d3o6H3H3g3I3:2W1Y1Y131%1Z1&1A|h|{|]|O}P}1}2}y[c[", +"_:o_G(U_m_(:O:n:'5=5-5l5a6h5N5*6$6$6:6<6[62696j6d6i6h6m6q6r6r6m6m6m6r6r6m6m6i6s6d686963626<676c6$6N5N5h5>6j5=5=5;5'5B4)5o5F4-4E3F3F3d3'3H3f3o2p2:2W1W131%1v1v1B|B|h|D|^|O}1}y[z[32", +"J(Q:G(U_b<(:O:^:M:H<0<95;5B4)5o5%4!5E3E3,3d3G3O2!3a4p2:2H4Y131%1y6&1B|h|h|x1}2P}o}y[`[z["}; diff --git a/src/Mod/Ship/Icons/Ico.png b/src/Mod/Ship/Icons/Ico.png new file mode 100644 index 0000000000..5e9792b6f6 Binary files /dev/null and b/src/Mod/Ship/Icons/Ico.png differ diff --git a/src/Mod/Ship/Icons/Ico.xcf b/src/Mod/Ship/Icons/Ico.xcf new file mode 100644 index 0000000000..b8e8693475 Binary files /dev/null and b/src/Mod/Ship/Icons/Ico.xcf differ diff --git a/src/Mod/Ship/Icons/Ico.xpm b/src/Mod/Ship/Icons/Ico.xpm new file mode 100644 index 0000000000..a4a1ce53f7 --- /dev/null +++ b/src/Mod/Ship/Icons/Ico.xpm @@ -0,0 +1,1281 @@ +/* XPM */ +static char * Ico_xpm[] = { +"128 128 1150 2", +" c None", +". c #000000", +"+ c #050505", +"@ c #060606", +"# c #585858", +"$ c #646464", +"% c #818181", +"& c #454545", +"* c #0C0C0C", +"= c #222222", +"- c #848484", +"; c #4C4C4C", +"> c #D3D3D3", +", c #D1D1D0", +"' c #CCCBCB", +") c #9E9E9E", +"! c #636363", +"~ c #2C2C2C", +"{ c #020202", +"] c #161616", +"^ c #1F1F1F", +"/ c #B2B3B3", +"( c #CCCDCD", +"_ c #CACACA", +": c #C8C8C7", +"< c #C6C6C5", +"[ c #C3C3C3", +"} c #B3B3B3", +"| c #7F8080", +"1 c #494949", +"2 c #151515", +"3 c #464646", +"4 c #6A6A6A", +"5 c #999899", +"6 c #969696", +"7 c #9A9A9A", +"8 c #959595", +"9 c #8F8F90", +"0 c #797879", +"a c #5F5E5F", +"b c #414141", +"c c #181818", +"d c #1E1E1E", +"e c #101010", +"f c #040404", +"g c #7D7C7C", +"h c #C6C6C6", +"i c #C3C3C4", +"j c #C1C1C2", +"k c #BFBFBF", +"l c #BDBDBD", +"m c #BABBBA", +"n c #B8B8B8", +"o c #B6B6B6", +"p c #979796", +"q c #323232", +"r c #353535", +"s c #828282", +"t c #BEBDBD", +"u c #D1D2D1", +"v c #D1D1D1", +"w c #D1D0D1", +"x c #D0D0D0", +"y c #CFCFD0", +"z c #D0D0CF", +"A c #CFCFCF", +"B c #CECECE", +"C c #CECECD", +"D c #CDCDCD", +"E c #BEBEBE", +"F c #8B8B8B", +"G c #535353", +"H c #B9B9B9", +"I c #282828", +"J c #7F7F7F", +"K c #C0C0BF", +"L c #BBBBBB", +"M c #B9B8B9", +"N c #B4B4B4", +"O c #B2B2B2", +"P c #AFAFAF", +"Q c #ADADAD", +"R c #ABABAB", +"S c #A2A2A2", +"T c #7B7B7B", +"U c #4B4B4B", +"V c #1D1D1D", +"W c #444444", +"X c #AEAEAE", +"Y c #D0CFD0", +"Z c #CECFCE", +"` c #CECDCD", +" . c #CCCCCD", +".. c #CCCCCC", +"+. c #CCCCCB", +"@. c #CBCCCB", +"#. c #CBCBCB", +"$. c #CACBCB", +"%. c #CBCACA", +"&. c #A6A5A6", +"*. c #5B5B5B", +"=. c #090909", +"-. c #0F0F0F", +";. c #B0B0B0", +">. c #C5C5C5", +",. c #595959", +"'. c #B7B7B7", +"). c #B4B5B5", +"!. c #6767D0", +"~. c #7171C9", +"{. c #9898B3", +"]. c #A9A9A9", +"^. c #A6A7A7", +"/. c #A4A4A5", +"(. c #A2A2A1", +"_. c #9FA0A0", +":. c #9D9D9D", +"<. c #8C8C8C", +"[. c #606060", +"}. c #080808", +"|. c #989999", +"1. c #CDCDCE", +"2. c #CDCCCC", +"3. c #CCCBCC", +"4. c #CBCBCA", +"5. c #CACBCA", +"6. c #C9CAC9", +"7. c #CAC9C9", +"8. c #C9C8C9", +"9. c #C9C8C8", +"0. c #C8C9C8", +"a. c #C8C8C8", +"b. c #C7C7C7", +"c. c #727272", +"d. c #3A3A3B", +"e. c #C1C0C1", +"f. c #595859", +"g. c #B5B5B5", +"h. c #B3B3B2", +"i. c #B1B1B0", +"j. c #ACACAE", +"k. c #0B0BF9", +"l. c #0000FF", +"m. c #1313F4", +"n. c #3838DF", +"o. c #5B5BC8", +"p. c #7F7FB1", +"q. c #99999C", +"r. c #9A999A", +"s. c #979797", +"t. c #949595", +"u. c #929292", +"v. c #212121", +"w. c #BCBCBD", +"x. c #CBCCCC", +"y. c #CACAC9", +"z. c #C9CACA", +"A. c #C9C9C9", +"B. c #C8C9C9", +"C. c #C7C8C8", +"D. c #C8C7C7", +"E. c #C6C6C7", +"F. c #C7C7C6", +"G. c #C4C5C5", +"H. c #333333", +"I. c #888787", +"J. c #797979", +"K. c #1A1A1A", +"L. c #BABABA", +"M. c #898989", +"N. c #AFAEAE", +"O. c #ACACAC", +"P. c #A4A4AC", +"Q. c #5656D1", +"R. c #3030E4", +"S. c #0A0AF9", +"T. c #0707F9", +"U. c #2727E3", +"V. c #4747C9", +"W. c #6667AF", +"X. c #8E8E8E", +"Y. c #171717", +"Z. c #949494", +"`. c #C9C9CA", +" + c #C7C6C7", +".+ c #C5C4C4", +"++ c #C5C5C4", +"@+ c #C4C5C4", +"#+ c #C4C4C4", +"$+ c #C3C4C3", +"%+ c #C4C3C3", +"&+ c #C3C3C2", +"*+ c #C2C3C3", +"=+ c #141414", +"-+ c #A5A6A5", +";+ c #C1C1C1", +">+ c #808081", +",+ c #422626", +"'+ c #955454", +")+ c #542E2E", +"!+ c #2D2D2D", +"~+ c #B8B9B9", +"{+ c #878787", +"]+ c #A8A8A8", +"^+ c #A5A6A6", +"/+ c #A4A3A4", +"(+ c #A1A1A1", +"_+ c #9E9E9F", +":+ c #8181AD", +"<+ c #5C5CC2", +"[+ c #3838D8", +"}+ c #1616EF", +"|+ c #0E0EF2", +"1+ c #807F7F", +"2+ c #070707", +"3+ c #C6C5C5", +"4+ c #C4C4C3", +"5+ c #C2C2C2", +"6+ c #C1C2C1", +"7+ c #C1C2C2", +"8+ c #C2C1C1", +"9+ c #C0C1C0", +"0+ c #090808", +"a+ c #BFBEBE", +"b+ c #BEBEBD", +"c+ c #646565", +"d+ c #301A1A", +"e+ c #AA5B5B", +"f+ c #A45555", +"g+ c #0D0707", +"h+ c #767675", +"i+ c #B5B4B4", +"j+ c #AFB0B0", +"k+ c #434343", +"l+ c #595958", +"m+ c #A4A4A4", +"n+ c #9E9D9D", +"o+ c #9B9B9B", +"p+ c #989998", +"q+ c #929192", +"r+ c #828299", +"s+ c #6060B1", +"t+ c #3E3ECA", +"u+ c #4142C5", +"v+ c #5A5A5A", +"w+ c #C3C4C4", +"x+ c #C3C2C3", +"y+ c #C0C0C1", +"z+ c #C1C0C0", +"A+ c #C0C0C0", +"B+ c #BEBFBE", +"C+ c #BFBEBF", +"D+ c #818282", +"E+ c #303030", +"F+ c #BCBDBD", +"G+ c #BDBCBC", +"H+ c #BCBCBC", +"I+ c #BCBBBC", +"J+ c #292929", +"K+ c #522A2A", +"L+ c #A65252", +"M+ c #723737", +"N+ c #131313", +"O+ c #B2B3B2", +"P+ c #ABACAC", +"Q+ c #6B6B6C", +"R+ c #343535", +"S+ c #A0A0A0", +"T+ c #999999", +"U+ c #929293", +"V+ c #908F90", +"W+ c #8D8D8D", +"X+ c #868787", +"Y+ c #858584", +"Z+ c #383838", +"`+ c #616162", +" @ c #C3C2C2", +".@ c #C2C1C2", +"+@ c #C0C1C1", +"@@ c #C0BFBF", +"#@ c #BEBFBF", +"$@ c #BFBFBE", +"%@ c #BEBDBE", +"&@ c #BDBCBD", +"*@ c #BCBCBB", +"=@ c #BBBCBC", +"-@ c #4F4F4F", +";@ c #5D5D5C", +">@ c #BBBABB", +",@ c #B9B9BA", +"'@ c #B9B9B8", +")@ c #969797", +"!@ c #632F2F", +"~@ c #A24A49", +"{@ c #492020", +"]@ c #515151", +"^@ c #AAAAAA", +"/@ c #A8A7A8", +"(@ c #878686", +"_@ c #9C9C9C", +":@ c #9A9A99", +"<@ c #929392", +"[@ c #909090", +"}@ c #8B8C8C", +"|@ c #858585", +"1@ c #919090", +"2@ c #C1C1C0", +"3@ c #C0BFC0", +"4@ c #BBBCBB", +"5@ c #BBBBBA", +"6@ c #BAB9BA", +"7@ c #B7B8B8", +"8@ c #B8B7B7", +"9@ c #B7B6B6", +"0@ c #B6B7B6", +"a@ c #373737", +"b@ c #733131", +"c@ c #9D4141", +"d@ c #2C1111", +"e@ c #737372", +"f@ c #A8A9A8", +"g@ c #A6A6A6", +"h@ c #A3A3A3", +"i@ c #030303", +"j@ c #989898", +"k@ c #969695", +"l@ c #939393", +"m@ c #919091", +"n@ c #8E8F8E", +"o@ c #89898A", +"p@ c #878788", +"q@ c #838383", +"r@ c #808180", +"s@ c #808080", +"t@ c #777777", +"u@ c #010101", +"v@ c #BDBEBE", +"w@ c #BDBEBD", +"x@ c #BCBBBB", +"y@ c #BBBBBC", +"z@ c #BAB9B9", +"A@ c #B9BABA", +"B@ c #B9B8B8", +"C@ c #B7B7B8", +"D@ c #0A0A0A", +"E@ c #B6B6B5", +"F@ c #B6B5B5", +"G@ c #B5B5B4", +"H@ c #B4B5B4", +"I@ c #B3B4B4", +"J@ c #8D8D8E", +"K@ c #813132", +"L@ c #983839", +"M@ c #1A0909", +"N@ c #A7A7A7", +"O@ c #9F9FA0", +"P@ c #0B0B0B", +"Q@ c #949394", +"R@ c #8F8F8F", +"S@ c #8D8D8C", +"T@ c #8A8A8A", +"U@ c #888988", +"V@ c #868586", +"W@ c #848383", +"X@ c #818281", +"Y@ c #7C7C7C", +"Z@ c #BCBDBC", +"`@ c #BABAB9", +" # c #B6B7B7", +".# c #B7B7B6", +"+# c #B5B6B5", +"@# c #6A696A", +"## c #3C3C3C", +"$# c #B4B4B3", +"%# c #B3B4B3", +"&# c #B4B3B3", +"*# c #B3B2B3", +"=# c #B2B2B3", +"-# c #B3B2B2", +";# c #B1B2B1", +"># c #B1B1B1", +",# c #202020", +"'# c #903131", +")# c #94302F", +"!# c #0C0303", +"~# c #A09FA0", +"{# c #9E9D9E", +"]# c #908F8F", +"^# c #8E8D8E", +"/# c #898988", +"(# c #848485", +"_# c #707070", +":# c #3D3D3D", +"<# c #BABABB", +"[# c #B4B4B5", +"}# c #2E2E2E", +"|# c #6F6F6F", +"1# c #B1B1B2", +"2# c #B0B1B0", +"3# c #B1B0B1", +"4# c #B0AFB0", +"5# c #B0AFAF", +"6# c #5F605F", +"7# c #0A0303", +"8# c #912A2B", +"9# c #8F2827", +"0# c #020000", +"a# c #9C9C9D", +"b# c #9B9C9C", +"c# c #979798", +"d# c #959594", +"e# c #1F1E1F", +"f# c #6D6D6D", +"g# c #848584", +"h# c #828382", +"i# c #7E7E7E", +"j# c #262626", +"k# c #2F2F2F", +"l# c #505050", +"m# c #8F8E8F", +"n# c #B8B8B7", +"o# c #B6B6B7", +"p# c #B5B4B5", +"q# c #B3B3B4", +"r# c #B2B2B1", +"s# c #B1B2B2", +"t# c #B0B1B1", +"u# c #AEAFAE", +"v# c #ADAEAD", +"w# c #ADADAE", +"x# c #ACACAD", +"y# c #1A0606", +"z# c #8D2121", +"A# c #871D1D", +"B# c #9D9C9C", +"C# c #919191", +"D# c #252525", +"E# c #656565", +"F# c #808181", +"G# c #737373", +"H# c #424242", +"I# c #404040", +"J# c #B5B6B6", +"K# c #B6B5B6", +"L# c #B0B0AF", +"M# c #AFAFB0", +"N# c #ACADAD", +"O# c #ADACAC", +"P# c #ACABAB", +"Q# c #AAABAB", +"R# c #290808", +"S# c #881918", +"T# c #7E1414", +"U# c #939494", +"V# c #929291", +"W# c #8C8D8C", +"X# c #5D5E5D", +"Y# c #838483", +"Z# c #5F5F5F", +"`# c #2B2B2B", +" $ c #626162", +".$ c #A7A6A6", +"+$ c #B2B1B2", +"@$ c #B1B0B0", +"#$ c #AFAFAE", +"$$ c #AEAFAF", +"%$ c #ADACAD", +"&$ c #ABAAAB", +"*$ c #AAAAAB", +"=$ c #ABAAAA", +"-$ c #A9A8A9", +";$ c #A8A8A9", +">$ c #A7A8A7", +",$ c #360708", +"'$ c #851313", +")$ c #771111", +"!$ c #090101", +"~$ c #919292", +"{$ c #90908F", +"]$ c #898888", +"^$ c #474747", +"/$ c #393939", +"($ c #AFAEAF", +"_$ c #AEAEAF", +":$ c #AEADAE", +"<$ c #ACADAC", +"[$ c #A3A2A3", +"}$ c #A8A7A7", +"|$ c #A7A6A7", +"1$ c #9D9E9E", +"2$ c #450909", +"3$ c #711010", +"4$ c #1C0404", +"5$ c #2A2A2A", +"6$ c #656665", +"7$ c #9F9F9F", +"8$ c #B2B1B1", +"9$ c #ADADAC", +"0$ c #ACACAB", +"a$ c #A6A6A5", +"b$ c #A5A5A6", +"c$ c #A5A5A5", +"d$ c #A5A4A4", +"e$ c #4E4F4E", +"f$ c #4C4D4D", +"g$ c #313131", +"h$ c #AFB0AF", +"i$ c #ADAEAE", +"j$ c #AAAAA9", +"k$ c #AAA9A9", +"l$ c #A9A9A8", +"m$ c #A9A8A8", +"n$ c #A8A8A7", +"o$ c #A7A7A6", +"p$ c #A6A5A5", +"q$ c #0E0E0E", +"r$ c #7D7D7D", +"s$ c #A2A1A1", +"t$ c #6E6D6D", +"u$ c #787878", +"v$ c #AEAEAD", +"w$ c #ABABAC", +"x$ c #A8A9A9", +"y$ c #A7A8A8", +"z$ c #A5A5A4", +"A$ c #A3A3A4", +"B$ c #6E6D6E", +"C$ c #A1A2A1", +"D$ c #A1A0A1", +"E$ c #444545", +"F$ c #706F70", +"G$ c #ACABAC", +"H$ c #ABABAA", +"I$ c #A9AAA9", +"J$ c #A6A6A7", +"K$ c #A1A1A2", +"L$ c #A1A1A0", +"M$ c #1B1B1B", +"N$ c #3A3A3A", +"O$ c #4A4A4A", +"P$ c #A4A3A3", +"Q$ c #A3A2A2", +"R$ c #A0A1A0", +"S$ c #A9AAAA", +"T$ c #A3A3A2", +"U$ c #A0A1A1", +"V$ c #A0A0A1", +"W$ c #A9A9AA", +"X$ c #A3A4A3", +"Y$ c #A2A3A2", +"Z$ c #6E6E6E", +"`$ c #5C5C5C", +" % c #525252", +".% c #484848", +"+% c #6C6C6C", +"@% c #5D5D5D", +"#% c #A6A7A6", +"$% c #A5A4A5", +"%% c #3E2D2D", +"&% c #543D3D", +"*% c #634646", +"=% c #6F4D4D", +"-% c #775252", +";% c #77504F", +">% c #724B4B", +",% c #684443", +"'% c #543535", +")% c #3C2525", +"!% c #616161", +"~% c #A1A0A0", +"{% c #555555", +"]% c #191919", +"^% c #4B3A3A", +"/% c #725657", +"(% c #997373", +"_% c #BC8A89", +":% c #D19797", +"<% c #CF9393", +"[% c #CD8F8F", +"}% c #CB8B8B", +"|% c #CA8888", +"1% c #C88383", +"2% c #C68080", +"3% c #C57C7C", +"4% c #C37878", +"5% c #C27474", +"6% c #BF7170", +"7% c #BE6D6D", +"8% c #BC6969", +"9% c #AC5D5D", +"0% c #763E3E", +"a% c #351B1B", +"b% c #7A7A7A", +"c% c #767676", +"d% c #A2A3A3", +"e% c #A1A2A2", +"f% c #626262", +"g% c #5B4747", +"h% c #927171", +"i% c #C39494", +"j% c #D49F9E", +"k% c #D29B9A", +"l% c #D19696", +"m% c #CE9393", +"n% c #CE8F8E", +"o% c #CC8B8B", +"p% c #CA8787", +"q% c #C88384", +"r% c #C57B7C", +"s% c #C07070", +"t% c #BE6C6C", +"u% c #BD6969", +"v% c #BA6565", +"w% c #B96161", +"x% c #B75E5D", +"y% c #B65A59", +"z% c #B35556", +"A% c #5E2A2B", +"B% c #737374", +"C% c #242424", +"D% c #493A3A", +"E% c #866969", +"F% c #C19594", +"G% c #D6A2A1", +"H% c #D49D9E", +"I% c #D29A9A", +"J% c #D19796", +"K% c #CF9293", +"L% c #CD8E8F", +"M% c #C6807F", +"N% c #C37877", +"O% c #C17474", +"P% c #BF7070", +"Q% c #BA6564", +"R% c #B96160", +"S% c #B75D5D", +"T% c #B55A59", +"U% c #B35656", +"V% c #B25252", +"W% c #B04D4D", +"X% c #A64646", +"Y% c #0D0505", +"Z% c #3E3E3E", +"`% c #575757", +" & c #564444", +".& c #9C7A7A", +"+& c #D2A1A1", +"@& c #D5A2A2", +"#& c #D49E9D", +"$& c #D2999A", +"%& c #CF9292", +"&& c #CB8B8A", +"*& c #C98787", +"=& c #C67F80", +"-& c #C47C7B", +";& c #C17473", +">& c #BD6C6C", +",& c #BC6868", +"'& c #BA6464", +")& c #B96060", +"!& c #B75C5D", +"~& c #B55959", +"{& c #B45555", +"]& c #B25152", +"^& c #AE4A49", +"/& c #AC4546", +"(& c #AB4242", +"_& c #592020", +":& c #281010", +"<& c #A34141", +"[& c #686868", +"}& c #544242", +"|& c #9F7B7C", +"1& c #D4A3A3", +"2& c #D6A1A1", +"3& c #D09696", +"4& c #CD8E8E", +"5& c #CB8A8A", +"6& c #C98686", +"7& c #C67F7F", +"8& c #C37777", +"9& c #C17373", +"0& c #BE6B6C", +"a& c #B75D5C", +"b& c #B25251", +"c& c #AE4949", +"d& c #AD4546", +"e& c #A93E3E", +"f& c #A83A3A", +"g& c #9C3333", +"h& c #7B2B2B", +"i& c #A73B3A", +"j& c #5B1F1F", +"k& c #947373", +"l& c #D1A0A0", +"m& c #D39D9D", +"n& c #D29A99", +"o& c #CF9192", +"p& c #CA8786", +"q& c #C88283", +"r& c #C67E7E", +"s& c #C47B7B", +"t& c #C27777", +"u& c #C06F6F", +"v& c #BE6B6B", +"w& c #BB6464", +"x& c #B75C5C", +"y& c #B55858", +"z& c #B35554", +"A& c #B25151", +"B& c #B04E4D", +"C& c #AC4645", +"D& c #A73A3A", +"E& c #A63636", +"F& c #A43232", +"G& c #A22E2F", +"H& c #4E1414", +"I& c #270C0B", +"J& c #A33131", +"K& c #A22F30", +"L& c #962A2B", +"M& c #775C5C", +"N& c #C39696", +"O& c #D5A0A1", +"P& c #D29999", +"Q& c #D09596", +"R& c #CE9291", +"S& c #CD8E8D", +"T& c #CB898A", +"U& c #C67F7E", +"V& c #C47A7B", +"W& c #C37677", +"X& c #BF6F6F", +"Y& c #BC6768", +"Z& c #BA6363", +"`& c #B86060", +" * c #B65C5C", +".* c #B35455", +"+* c #B04C4C", +"@* c #AD4646", +"#* c #AB4141", +"$* c #A93E3D", +"%* c #A8393A", +"&* c #A32E2F", +"** c #A12B2B", +"=* c #9F2727", +"-* c #8C1F1F", +";* c #7B1E1F", +">* c #9E2626", +",* c #9F2525", +"'* c #9E2424", +")* c #170505", +"!* c #363636", +"~* c #A17B7A", +"{* c #D4A0A0", +"]* c #D49D9D", +"^* c #D09595", +"/* c #CE9192", +"(* c #CC8E8D", +"_* c #CA8989", +":* c #C78282", +"<* c #C57E7F", +"[* c #C47A7A", +"}* c #BD6C6B", +"|* c #BC6767", +"1* c #B85F5F", +"2* c #B45554", +"3* c #B15151", +"4* c #AF4D4C", +"5* c #AE4948", +"6* c #AC4445", +"7* c #A93D3D", +"8* c #A53636", +"9* c #A32E2E", +"0* c #A12B2A", +"a* c #9F2626", +"b* c #9D2323", +"c* c #9B1E1F", +"d* c #9A1B1B", +"e* c #350808", +"f* c #330A0A", +"g* c #9B1C1D", +"h* c #991A1A", +"i* c #5E0F0F", +"j* c #9D7676", +"k* c #CF9595", +"l* c #CE9191", +"m* c #CC8D8D", +"n* c #C78181", +"o* c #C27776", +"p* c #C17273", +"q* c #BD6B6B", +"r* c #BC6867", +"s* c #B45858", +"t* c #B35454", +"u* c #B15051", +"v* c #B04D4C", +"w* c #AD4445", +"x* c #AA4141", +"y* c #A83939", +"z* c #A63536", +"A* c #A22E2D", +"B* c #A02A2A", +"C* c #9D2222", +"D* c #9C1F1F", +"E* c #981717", +"F* c #961314", +"G* c #700B0B", +"H* c #050000", +"I* c #851010", +"J* c #951212", +"K* c #951111", +"L* c #4A0708", +"M* c #BBFFFB", +"N* c #BAFEFA", +"O* c #1E1515", +"P* c #C58B8B", +"Q* c #CD8D8D", +"R* c #CA898A", +"S* c #C98586", +"T* c #C88282", +"U* c #C27677", +"V* c #C07272", +"W* c #BF6E6F", +"X* c #B96363", +"Y* c #B65C5B", +"Z* c #B45758", +"`* c #B35353", +" = c #B15050", +".= c #AE4849", +"+= c #AC4544", +"@= c #A73939", +"#= c #A63535", +"$= c #A43131", +"%= c #A22E2E", +"&= c #A12A29", +"*= c #9B1E1E", +"== c #961313", +"-= c #950F0F", +";= c #930B0B", +">= c #8E0607", +",= c #190000", +"'= c #470404", +")= c #910808", +"!= c #8C0606", +"~= c #320202", +"{= c #020302", +"]= c #6E9794", +"^= c #9DD7FB", +"/= c #658AFC", +"(= c #3F56FD", +"_= c #212EFE", +":= c #1219FE", +"<= c #0C11FE", +"[= c #1017FE", +"}= c #1E29FE", +"|= c #3447FD", +"1= c #4F6DFD", +"2= c #729CFC", +"3= c #9ED8FB", +"4= c #B4F6FB", +"5= c #9CD5FB", +"6= c #84B5FC", +"7= c #739DFC", +"8= c #6489FC", +"9= c #5D80FC", +"0= c #5777FD", +"a= c #5F82FC", +"b= c #6B93FC", +"c= c #77A3FC", +"d= c #8EC2FB", +"e= c #ABEAFB", +"f= c #B5F7F3", +"g= c #131B1A", +"h= c #644242", +"i= c #C78182", +"j= c #C57D7D", +"k= c #C27576", +"l= c #BF6F6E", +"m= c #BD6A6B", +"n= c #BB6767", +"o= c #B65B5B", +"p= c #B55757", +"q= c #B2504F", +"r= c #AF4C4C", +"s= c #AD4544", +"t= c #AB4041", +"u= c #A83C3C", +"v= c #A73839", +"w= c #A53535", +"x= c #9C1E1E", +"y= c #9A1A1A", +"z= c #981616", +"A= c #961213", +"B= c #940F0F", +"C= c #910807", +"D= c #8F0304", +"E= c #8E0001", +"F= c #4A0000", +"G= c #130000", +"H= c #890000", +"I= c #790000", +"J= c #090D0C", +"K= c #6E96BD", +"L= c #4A65FD", +"M= c #3E55FD", +"N= c #4761FD", +"O= c #506EFD", +"P= c #6E97FC", +"Q= c #81B1FC", +"R= c #96CDFB", +"S= c #AEEEFB", +"T= c #92C8FB", +"U= c #2C3DFE", +"V= c #161FFE", +"W= c #597AFD", +"X= c #9BD4FB", +"Y= c #88BAFC", +"Z= c #5E81FC", +"`= c #374BFD", +" - c #151DFE", +".- c #1118FE", +"+- c #364AFD", +"@- c #4D69DD", +"#- c #000026", +"$- c #080B0A", +"%- c #B26C6C", +"&- c #C17272", +"*- c #BE6E6E", +"=- c #BD6A6A", +"-- c #BA6362", +";- c #B75F5F", +">- c #B45757", +",- c #B1504F", +"'- c #AE4848", +")- c #AA4140", +"!- c #A93D3C", +"~- c #A22D2D", +"{- c #971616", +"]- c #951213", +"^- c #950F0E", +"/- c #920A0B", +"(- c #910707", +"_- c #900403", +":- c #8E0100", +"<- c #8E0101", +"[- c #740000", +"}- c #680000", +"|- c #5B0000", +"1- c #070000", +"2- c #9AD3CF", +"3- c #97CFFB", +"4- c #0D12FE", +"5- c #2837FE", +"6- c #4863FD", +"7- c #6B92FC", +"8- c #8FC3FB", +"9- c #B2F4FB", +"0- c #6C94FC", +"a- c #0204FE", +"b- c #3D54FD", +"c- c #719BFC", +"d- c #A5E2FB", +"e- c #ADEDFB", +"f- c #A8E6FB", +"g- c #98D0FB", +"h- c #83B3FC", +"i- c #6286FC", +"j- c #3B51FD", +"k- c #080CFE", +"l- c #0001FE", +"m- c #1B26FE", +"n- c #3042FD", +"o- c #516FFD", +"p- c #5B7DFD", +"q- c #6388FC", +"r- c #6084FC", +"s- c #4F6CFD", +"t- c #3C53FD", +"u- c #2432FE", +"v- c #0A0EFE", +"w- c #0000CB", +"x- c #3549C0", +"y- c #9FD9FB", +"z- c #B96263", +"A- c #B35354", +"B- c #B04F4F", +"C- c #AF4B4B", +"D- c #AC4344", +"E- c #AA4040", +"F- c #A83C3D", +"G- c #A53434", +"H- c #A33031", +"I- c #A02A29", +"J- c #9E2526", +"K- c #9D2122", +"L- c #9A191A", +"M- c #961212", +"N- c #940E0E", +"O- c #930B0A", +"P- c #910607", +"Q- c #8F0303", +"R- c #1A0000", +"S- c #3F5654", +"T- c #B0F1ED", +"U- c #B5F8FB", +"V- c #6990FC", +"W- c #79A5FC", +"X- c #688EFC", +"Y- c #5C7EFD", +"Z- c #1F2BFE", +"`- c #0305FE", +" ; c #2939FE", +".; c #5A7BFD", +"+; c #94CBFB", +"@; c #6E96FC", +"#; c #B0F1FB", +"$; c #B9FDFB", +"%; c #7EADFC", +"&; c #0102FE", +"*; c #5270FD", +"=; c #7AA7FC", +"-; c #A0DBFB", +";; c #BAFEFB", +">; c #A2DDFB", +",; c #080BFA", +"'; c #1720FE", +"); c #7BA9FC", +"!; c #A7E5FB", +"~; c #AD4747", +"{; c #A93C3C", +"]; c #A63938", +"^; c #A12C2C", +"/; c #A02929", +"(; c #9E2525", +"_; c #9D2121", +":; c #9B1E1D", +"<; c #920B0A", +"[; c #910606", +"}; c #8F0202", +"|; c #8E0000", +"1; c #340000", +"2; c #0E1417", +"3; c #050822", +"4; c #000037", +"5; c #060957", +"6; c #4761BE", +"7; c #7099FC", +"8; c #7CAAFC", +"9; c #8CC0FB", +"0; c #9CD6FB", +"a; c #B2F3FB", +"b; c #A9E7FB", +"c; c #8ABDFC", +"d; c #4762FD", +"e; c #202CFE", +"f; c #0203FE", +"g; c #1822FE", +"h; c #89BBFC", +"i; c #7BA8FC", +"j; c #B5F7FB", +"k; c #435CFD", +"l; c #0E14FE", +"m; c #161EFE", +"n; c #80AFFC", +"o; c #9C272C", +"p; c #9D2221", +"q; c #9A1E1D", +"r; c #991919", +"s; c #930A0A", +"t; c #8E0303", +"u; c #890008", +"v; c #93C9FB", +"w; c #2C3CA4", +"x; c #0000A1", +"y; c #0000D4", +"z; c #0000F9", +"A; c #1016FE", +"B; c #2E40FD", +"C; c #76A2FC", +"D; c #A2DEFB", +"E; c #A1DCFB", +"F; c #678DFC", +"G; c #2F41FD", +"H; c #0B0FFE", +"I; c #0D13FE", +"J; c #2E3FFE", +"K; c #3448FD", +"L; c #B0F0FB", +"M; c #94CAFB", +"N; c #1821FE", +"O; c #2D3EFE", +"P; c #425BFD", +"Q; c #5271FD", +"R; c #6185FC", +"S; c #6F98FC", +"T; c #7DABFC", +"U; c #81B0FC", +"V; c #79A6FC", +"W; c #6387FC", +"X; c #425AFD", +"Y; c #141CFE", +"Z; c #0C11F7", +"`; c #3245FD", +" > c #445EFD", +".> c #445DFD", +"+> c #4A66FD", +"@> c #384DFD", +"#> c #1C27FE", +"$> c #1A24FE", +"%> c #2330FE", +"&> c #2C3CFE", +"*> c #3144FD", +"=> c #2634FE", +"-> c #0609FE", +";> c #090DFE", +">> c #95CCFB", +",> c #5D7FFD", +"'> c #B7FAFB", +")> c #76A1FC", +"!> c #5372FD", +"~> c #1E2AFE", +"{> c #2A3AD9", +"]> c #1D2890", +"^> c #729CCF", +"/> c #B3F5FB", +"(> c #A4E0FB", +"_> c #84B4FC", +":> c #3549FD", +"<> c #080BFE", +"[> c #394FFD", +"}> c #B6F9FB", +"|> c #82B2FC", +"1> c #5575FD", +"2> c #B8FCFB", +"3> c #AAE8FB", +"4> c #3F57FD", +"5> c #6083FC", +"6> c #89BCFC", +"7> c #91C6FB", +"8> c #5676FD", +"9> c #1B25FE", +"0> c #5473FD", +"a> c #0406FE", +"b> c #2635FE", +"c> c #8FC4FB", +"d> c #4E6BFD", +"e> c #97CEFB", +"f> c #4C68FD", +"g> c #3143FD", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" . . . . . ", +" . . + @ . . . . . . ", +" . . # . $ % & * . . . . . . . . . . . . . . . . ", +" . = - . ; > , ' ) ! ~ { . . . . . . . . . . . . . . . . . . . . . . . . ", +" . ] ) . ^ / ( _ : < [ } | 1 2 . . . . . . . . . . . ^ 3 4 % 5 6 7 8 9 0 a b c . . . . . . . ", +" . . ^ d e f g h i j k l m n o p ! q @ . . . . . . . . . r s t u v w x x y z A A A B C D E F G c . . . . . . . ", +" . . f H I . . J K t L M o N O P Q R S T U V . . . . . . . . W X Y y A A Z Z B C ` D ( ...+.+.@.#.$.%._ &.*.=.. . . . . . ", +" . . -.;.>.,.. -.;.H '.).O !.~.{.].^./.(._.:.<.[.r }.. . c |.B B 1.D 2.( ..3.3.#.4.#.5._ 6.7.7.8.9.0.a.: b.b.; . c.Q d.. . . ", +" . . . . U e.E I . f.g.h.i.j.k.l.l.m.n.o.p.q.r.s.t.u.v.. c w...x.+.#.#.%.5.y.7.z.A.A.B.a.a.C.D.E.F.E.h >.>.G.>.H.. I.[ [ J.. . . ", +" . . . . . . K.l L.M.. 2 ;.N.O.P.Q.R.S.l.l.l.l.T.U.V.W.X.Y.. Z._ y.`.A.9.0.a.a.: b. +F.h h h >.>..+++@+#+$+%+[ &+*+=+. -+;+;+;+>+. . . ", +" . . ,+'+)+. !+~+o } e . {+R ]+^+/+(+_+:+<+[+}+l.l.l.|+1+. 2+[ : C.b.b.h h h 3+>.>.@+#+4+4+%+[ *+[ 5+6+7+8+;+;+9+P . 0+l k a+E b+c+. . ", +" . d+e+f+g+. h+i+O j+k+. l+^.m+(._.n+o+p+6 Z.q+r+s+t+u+v+. H.h >.>.++#+#+#+w+%+[ x+5+5+7+;+;+y+z+A+A+k k B+C+E E D+. E+F+G+G+H+I+L.J+. . ", +" . . K+L+M+. N+O+;.X P+Q+. R+S S+) o+T+s.t.U+V+W+F M.X+Y+Z+. `+$+[ [ &+ @5+.@;++@9+z+A+@@k k #@$@E t %@l l &@H+*@=@-@. ;@>@L.L.L.,@'@)@. . ", +" . . !@~@{@. ]@X O.^@/@(@. Y.) _@:@s.8 <@[@X.}@M.{+|@s >+c . 1@2@e.9+A+3@k k C+$@B+E l l l G+F+H+I+H+4@L 5@m 6@,@H V . F n 7@'.8@'.9@0@a@. . ", +" . . b@c@d@. e@^@f@g@h@o+. i@T+j@k@l@m@n@<.o@p@|@q@r@s@t@u@f n $@#@E v@b+w@l H+H+x@4@y@L 5@m L.z@A@z@H M B@7@C@'.(+. D@O E@F@g.g.G@H@I@J@. . ", +" . . K@L@M@. {+N@m+S O@:.P@. {+Q@u.R@S@T@U@V@W@X@s@s@Y@# . ~ Z@&@H+H+4@L L L.L.`@A@z@H ~+M n n 8@8@ #.#0@+#F@F@g.@#. ##$#%#&#*#=#-#O ;#>#,#. . ", +" . . '#)#!#. k@S ~#{#o+T+] . 0 ]#^#F /#(@(#s s@s@_#:#* = . # <#L.A@,@H H n B@7@8@'..#9@ #o +#+#g.).[#[#$#} &#} O+}#. |#1#>#2#3#;.;.4#5#P 6#. . ", +" . 7#8#9#0#. a#) b#7 c#d#e#. f#F M.{+g#h#s@i#v+j#u@. . k#l#m#n 7@n#'. #9@o#o E@g.g.p#N N q#q#} *#h.O r#s#>#t#3#S i@i@S P P u#X v#w#v#Q x#7 u@. ", +" . y#z#A#. i@B#7 j@8 l@C#D#. E#p@|@q@F#G#H#-.. . f I#F 9@9@J#K#+#g.).g.N %#I@} } / O O 1#>#>#>#t#;.j+L#M#P P u#E#. q Q N#O#O.P#P#P#R Q#^@^@Y.. ", +" . R#S#T#. =.j@6 U#V#n@W#I . X#Y#s@Z#`#{ . . c $.$g.[#N N %#%#} *#} O +$s#>#t#>#@$;.P P P #$$$X X Q Q %$N#O.O.D#. |#&$*$=$^@].].].-$;$>$t@. . ", +" . ,$'$)$!$f {+~${$J@F ]$E+. v+^$N+. . { /$s O &#} h.O+O O ;#>#>#3#;.j+P P ($_$_$:$Q Q Q <$O.O.O.R R R &$*$^@X.. =.[$].]+}$/@}$N@|$.$&.1$=+. . ", +" . . 2$3$4$. . 5$W+F M.{+(#6$. . . . N+,.7$8$O >#>#2#2#;.P 5#P ($($X X X Q 9$O.O.0$P#R R &$=$^@^@^@].-$]+]+]+}$-@. H#g@a$g@b$c$c$d$m+m+m+b . . ", +" . . . . . D@D@. e$p@i#f$c . . u@g$0 w#;.4#h$P $$u#_$i$:$Q N#O#O.O.R 0$R R ^@^@^@j$k$l$].m$n$/@N@N@o$.$g@g@p$S q$. r$m+h@h@h@h@[$S S s$t$. . ", +" . . . q N@u$. i@~ 2+. . -.l#s.N._$X v$v#Q <$x#<$P#P+w$R R ^@^@].k$].x$;$f@y$n$N@N@.$.$g@a$p$c$z$m+m+m+A$h@B$. K.S C$s$(+D$(+S+S+S+M.}.. . ", +" . . H#X j+P E$. . . 5$F$]+Q 9$<$O.P#G$R &$H$^@j$].I$].x$]+n$/@}$N@|$J$g@g@^+c$c$m+m+m+A$h@h@h@S S S K$(+L$j#. v+S+S+S+S+S+S+S+S+s.M$. . ", +" . . a@9$i$:$Q &.N$O$X.w$R R =$^@^@].].].f@]+;$N@/@N@N@N@g@&.&.p$c$/.d$m+m+P$h@h@Q$S S S s$(+D$R$S+S+S+S+S+% . 2+8 S+S+S+S+S+S+S+7$E+. . ", +" . . =+m+0$w$R R H$^@S$k$].-$m$]+}$/@N@N@g@g@g@a$a$c$c$c$m+m+h@A$h@T$S S S C$(+(+U$V$S+S+S+S+S+S+S+S+S+S+S+S+:#. W S+S+S+S+S+S+S+S+U . . ", +" . . u$I$W$x$x$m$]+n$>$N@J$g@g@^+^+b$c$c$m+m+m+X$h@T$Y$S (.(.(+D$D$V$S+S+S+6 % Z$`$ %.%I#I#k+O$,.+%q@:.S+S+u.+ u@M.S+S+S+S+S+S+S+@%. . ", +" . D@n$>$N@o$#%p$&.-+c$$%m+m+/+m+h@[$Q$S S (.(+(+(+L$V$S+S+S+S+) s ! 3 5$-.2+V %%&%*%=%-%;%>%,%'%)%c 2+k#!%O$. g$S+S+S+S+S+S+S+4 u@. . ", +" . . I#p$c$c$/.m+/+h@h@[$Y$Y$K$S s$(+U$~%S+S+S+S+S+S+S+S+) s@{%!+}.]%^%/%(%_%:%<%[%}%|%1%2%3%4%5%6%7%8%9%0%a%. . b%S+S+S+S+S+S+c%i@. . ", +" . . a@d%Y$[$e%S (+(+V$S+S+S+S+S+S+S+S+S+S+S+S+S+S+C#f%r P@]%g%h%i%j%k%l%m%n%o%p%q%2%r%4%5%s%t%u%v%w%x%y%z%A%. D@T+S+S+S+S+S+r$2+. . ", +" . . B%S+S+S+S+S+S+S+S+S+S+S+S+S+S+S+S+S+S+F # C%D@D%E%F%G%H%I%J%K%L%}%p%1%M%3%N%O%P%t%8%Q%R%S%T%U%V%W%X%Y%. J+Z%S+S+S+S+s@2+. . ", +" . . . 3 T+S+S+S+S+S+S+S+S+S+S+S+S+S+X.`%v.P@ &.&+&@&#&$&l%%&[%&&*&1%=&-&4%;&s%>&,&'&)&!&~&{&]&W%^&/&(&_&. :&<&-.% S+S+s@D@. . ", +" . . . -.[&S+S+S+S+S+S+S+S+S+j@! I P@}&|&1&2&#&$&3&%&4&5&6&1%7&-&8&9&s%0&,&'&)&a&~&{&b&W%c&d&(&e&f&g&7#. h&i&j&Z+S+J D@. . ", +" . . . g$u.S+S+S+S+S+b%##D@g$k&l&2&m&n&3&o&4&5&p&q&r&s&t&9&u&v&,&w&)&x&y&z&A&B&c&C&(&e&D&E&F&G&H&. I&J&K&L&+ t@}.. . ", +" . . . -.r$S+s.`$K.c M&N&O&m&P&Q&R&S&T&6&q&U&V&W&9&X&0&Y&Z&`& *y&.*A&+*c&@*#*$*%*E&F&&***=*-*0#. ;*>*,*'*)*. . . ", +" . . @ -@P@!*~*{*]*P&^*/*(*_*6&:*<*[*8&9&X&}*|*Z&1* *y&2*3*4*5*6*#*7*f&8*F&9*0*a*b*c*d*e*. f*g*d*h*i*0#. . ", +" . . . j*]*P&k*l*m*T&6&n*r&[*o*p*X&q*r*Z&`& *s*t*u*v*c&w*x*7*y*z*F&A*B*a*C*D*d*E*F*G*. H*I*J*K*L*. . . ", +" M*M*M*M*M*M*M*M*M*M*M*M*M*M*M* M*M*M*M*M*M*M*M*M*M*M*M*M*M*M*N*. . O*P*Q*R*S*T*r&[*U*V*W*q*|*X*`&Y*Z*`* =+*.=+=#*7*@=#=$=%=&=a*C**=h*E*==-=;=>=,=. '=)=!=~=. {=]=M*M*M*M*M*M*M*M*M*M*M* ", +"M*M*M*^=/=(=_=:=<=<=[=}=|=1=2=3=M*M*M*M*M*M*M*4=5=6=7=8=9=0=0=0=a=b=c=d=e=M*f=g=. h=i=j=[*k=V*l=m=n=Z&1*o=p=t*q=r=.=s=t=u=v=w=J&%=B*,*C*x=y=z=A=B=;=C=D=E=F=. G=H=I=,=. J=K=L=M=M=M=N=O=9=P=Q=R=S=M*M*M*M*M*M*M* ", +"M*T=U=l.l.l.l.l.l.l.l.l.l.l.l.l.V=W=X=Y=Z=`= -l.l.l.l.l.l.l.l.l.l.l.l.l.l..-+-@-#-$-%-&-*-=-n=--;-o=>-t*,-r='-6*)-!-@=w=$=~-B*>*C**=h*{-]-^-/-(-_-:-<-:-[-0#. }-|-1-. . 2-3-l.l.l.l.l.l.l.l.l.l.l.4-5-6-7-8-9-M*M*M*M* ", +"M*0-l.a-b-c-T=d-S=e-f-g-h-i-j-k-l.l.l.l.l.l.l.l-m-n-N=o-p-q-Z=r-p-s-t-u-v-l.l.l.l.w-x-y-z-;-o=p=A-B-C-'-D-E-F-v=G-H-~-I-J-K-*=L-z=M-N-O-P-Q-:-E=<-<-<-H=R-. . . . . S-T-M*U-V-W-W-W-c-X-Y-L=+-Z-k-l.l.l.l.l.`- ;.;+;M*M*M*M*M*M*M*M*M* ", +"M*M*@;#;M*M*M*M*M*M*M*M*$;%;n-l-l.l.&;u-*;=;-;$;M*M*M*M*M*M*M*M*M*M*M*M*;;>;c=(=,;l.l.l.';L=);!;~;D-E-{;];G-H-^;/;(;_;:;L-{-M-N-<;[;};|;<-:-E=<-<-<-<-1;. 2;3;4;5;6;7;7;7;7;8;9;0;a;M*M*M*M*M*M*M*b;c;b=d;e;f;l.l.l.g;r-h;h;h;9;X=a;M*M*M*M*M*M* ", +" M*M*M*M* M*M*;;=;}=l.l.&;M=i;S=M*M*M*M*M*M* M*M*M*M*M*j;%;k;l;l.l.l.l.m;j-i-n;y-o;(;p;q;r;{-J*N-s;[;t;<-E=E=E=|;:-|;|;u;v;w;x;y;z;l.l.l.l.l.l.l.l.l.l.l.l.A;B;*;C;D;M*M*M*M*M*M*E;F;G;H;l.l.l.l.l.l.l.l.l.I;J;.;h;j;M*M*M* ", +" M*;;K;l.l.V=X-L;M*M*M*M* M*M*M*M*$;M;r-|=H;l.l.l.l.l.`-N;O;P;Q;R;S;c=8;T;U;W-V;7;W;.;X;J;Y;l-l.l.l.l.l.Z;u-`; >.>+>+>d;@>U=#>&;l.l.l.l.l.$>s-h;9-c- ;l.l.l.l.l.4-%>&>*>*>=>g;->l.l.l.l.;>6->>M*M*M* ", +" M*M*,>->P='>M*M*M* M*M*M*M*M*;;0;)>!>|=N;&;l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.l.`-~>{>]>^>/>M*M*M*M*M*M*M*M*M*M*M*M*(>_>r-:><>l.l.l.`-l.l.a-[>P=R=}>M*M*M*M*M*M*M*M*!;|>1>~>l.l.l.J;>>M*M* ", +" M*2>3>M*M*M* M*M*M*M*M*M*M*U-^=Y=C;F;0=+>P;M=b-[>M=4>+>Q;5>2=6>-;'>M*M* M*M*M* M*M*M*M*M*2>7>8>9>l.l.l-t-5=M*M*M*M* M*M*M*M*M*3=0>a>l.b>;;M* ", +" M*M*M*M* M*M*M*M*M*M*M*M*M*M*M*M*M*M*M*M*M*M*M*M*M*M* M*M*M*M*M*c>k;l-l.a-d>L;M*M* M*M*M*L;O=e>M*M* ", +" M*M*M*d-f>l-l.m;>;M* M*M*M*M*M* ", +" M*M*M*e>e;g>2>M* ", +" M*M*'>S=M*M* ", +" M*M*M*M* ", +" ", +" ", +" ", +" ", +" ", +" ", +" . . ", +" . . . . . . . ", +" . . . . . . . ", +" . . . . ", +" . . . . . . . ", +" . . . . . . . . ", +" . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . ", +" . . . ", +" . . . ", +" ", +" ", +" "}; diff --git a/src/Mod/Ship/Icons/OutlineDrawIco.png b/src/Mod/Ship/Icons/OutlineDrawIco.png new file mode 100644 index 0000000000..4aa5378d43 Binary files /dev/null and b/src/Mod/Ship/Icons/OutlineDrawIco.png differ diff --git a/src/Mod/Ship/Icons/OutlineDrawIco.xcf b/src/Mod/Ship/Icons/OutlineDrawIco.xcf new file mode 100644 index 0000000000..13783d1ed8 Binary files /dev/null and b/src/Mod/Ship/Icons/OutlineDrawIco.xcf differ diff --git a/src/Mod/Ship/Icons/OutlineDrawIco.xpm b/src/Mod/Ship/Icons/OutlineDrawIco.xpm new file mode 100644 index 0000000000..7f80d7367c --- /dev/null +++ b/src/Mod/Ship/Icons/OutlineDrawIco.xpm @@ -0,0 +1,1824 @@ +/* XPM */ +static char * OutlineDrawIco_xpm[] = { +"128 128 1693 2", +" c None", +". c #E8D384", +"+ c #E7D484", +"@ c #E8D485", +"# c #E8D486", +"$ c #E8D585", +"% c #E9D686", +"& c #E8D686", +"* c #E9D687", +"= c #E9D788", +"- c #EAD889", +"; c #EAD88A", +"> c #EAD98A", +", c #EBDA8A", +"' c #EBDA8B", +") c #ECDB8C", +"! c #ECDC8C", +"~ c #EBDC8C", +"{ c #ECDD8D", +"] c #ECDC8D", +"^ c #ECDD8E", +"/ c #EDDE8E", +"( c #EDDE8F", +"_ c #B87124", +": c #B87125", +"< c #E6D082", +"[ c #E7D182", +"} c #E6D182", +"| c #E7D283", +"1 c #E8D284", +"2 c #E7D384", +"3 c #E7D385", +"4 c #E8D586", +"5 c #E9D586", +"6 c #E9D787", +"7 c #EAD787", +"8 c #E9D888", +"9 c #EAD888", +"0 c #EAD989", +"a c #EBD98A", +"b c #EBDB8B", +"c c #EBDB8C", +"d c #EBDC8D", +"e c #EDDD8E", +"f c #EDDF8F", +"g c #EDDF90", +"h c #BB7526", +"i c #E6D181", +"j c #E7D282", +"k c #E7D383", +"l c #E8D385", +"m c #E9D585", +"n c #E8D587", +"o c #EADA8A", +"p c #ECDF8E", +"q c #BB7426", +"r c #BF7726", +"s c #E5D081", +"t c #E6D081", +"u c #E7D183", +"v c #E8D383", +"w c #E8D484", +"x c #EADA8B", +"y c #ECDE8E", +"z c #EDDE90", +"A c #BA7426", +"B c #C27B27", +"C c #E2C97A", +"D c #E5CF80", +"E c #E6D080", +"F c #E7D181", +"G c #E7D485", +"H c #E9D486", +"I c #E8D687", +"J c #EAD788", +"K c #EBDC8B", +"L c #BB7425", +"M c #BE7726", +"N c #C27A27", +"O c #C47D28", +"P c #C88128", +"Q c #E5CF7F", +"R c #E6CE80", +"S c #E6CF80", +"T c #E7D081", +"U c #E7D284", +"V c #EAD789", +"W c #E9D989", +"X c #EAD98B", +"Y c #ECDE8D", +"Z c #ECDE8F", +"` c #C17A27", +" . c #C78128", +".. c #C98228", +"+. c #E5CD7E", +"@. c #E5CE7F", +"#. c #EBD989", +"$. c #EBDB8A", +"%. c #ECDA8B", +"&. c #BA7325", +"*. c #BD7626", +"=. c #C07927", +"-. c #C78028", +";. c #CB8429", +">. c #E2C87A", +",. c #E4CD7E", +"'. c #E5CD7F", +"). c #ECDB8D", +"!. c #C10606", +"~. c #BB0605", +"{. c #B10605", +"]. c #AA0505", +"^. c #A10505", +"/. c #980405", +"(. c #BA7226", +"_. c #BD7526", +":. c #C17926", +"<. c #C47D27", +"[. c #C77F28", +"}. c #CB8329", +"|. c #CE872A", +"1. c #E3C97A", +"2. c #E4CC7E", +"3. c #E4CC7D", +"4. c #E5CE7E", +"5. c #E5D080", +"6. c #D6C67D", +"7. c #B1A367", +"8. c #ECDB8B", +"9. c #C90706", +"0. c #B70606", +"a. c #AF0505", +"b. c #A60505", +"c. c #9E0505", +"d. c #950405", +"e. c #8D0404", +"f. c #850404", +"g. c #7C0404", +"h. c #B97225", +"i. c #BF7927", +"j. c #C37C28", +"k. c #C68028", +"l. c #CA8229", +"m. c #CD8629", +"n. c #D1892A", +"o. c #E4CB7C", +"p. c #E6CF81", +"q. c #E6D283", +"r. c #CCBC76", +"s. c #7A7147", +"t. c #EBDA8C", +"u. c #EDDD8D", +"v. c #C80000", +"w. c #BE0505", +"x. c #B40606", +"y. c #AC0505", +"z. c #A40605", +"A. c #9C0505", +"B. c #930504", +"C. c #8B0504", +"D. c #820404", +"E. c #790304", +"F. c #BC7526", +"G. c #BF7827", +"H. c #C67F28", +"I. c #CC8529", +"J. c #D0892A", +"K. c #D48C2B", +"L. c #E3CA7B", +"M. c #E4CA7B", +"N. c #E3CB7C", +"O. c #E3CC7D", +"P. c #E6CF7F", +"Q. c #D2C179", +"R. c #746B43", +"S. c #B47C7C", +"T. c #BA3D3D", +"U. c #BA0C0C", +"V. c #B40000", +"W. c #AB0000", +"X. c #A20304", +"Y. c #910404", +"Z. c #880405", +"`. c #7F0404", +" + c #770404", +".+ c #6E0303", +"++ c #660303", +"@+ c #BF7826", +"#+ c #C37B27", +"$+ c #C67E28", +"%+ c #C98229", +"&+ c #CD852A", +"*+ c #D38C2B", +"=+ c #D78F2C", +"-+ c #E3C97B", +";+ c #E2CA7B", +">+ c #E3CA7C", +",+ c #E4CC7C", +"'+ c #E5CC7D", +")+ c #D6C67C", +"!+ c #6E6540", +"~+ c #EBDB8D", +"{+ c #AAB2B2", +"]+ c #A2B0B0", +"^+ c #9D9E9F", +"/+ c #9C7273", +"(+ c #9E3A3A", +"_+ c #9D0E0D", +":+ c #970000", +"<+ c #8F0000", +"[+ c #850403", +"}+ c #7D0504", +"|+ c #740403", +"1+ c #6C0303", +"2+ c #620403", +"3+ c #BE7727", +"4+ c #C98129", +"5+ c #D0882A", +"6+ c #D38B2B", +"7+ c #D68F2B", +"8+ c #D9922D", +"9+ c #E3C87A", +"0+ c #E2C97B", +"a+ c #C9B36D", +"b+ c #918250", +"c+ c #E5CE80", +"d+ c #DDCB7F", +"e+ c #675E3A", +"f+ c #A8ACB3", +"g+ c #A1A3A5", +"h+ c #9B9B9B", +"i+ c #929999", +"j+ c #8A9696", +"k+ c #858887", +"l+ c #836564", +"m+ c #823534", +"n+ c #810E0E", +"o+ c #7B0000", +"p+ c #720000", +"q+ c #6A0102", +"r+ c #600203", +"s+ c #DDC071", +"t+ c #DEC273", +"u+ c #DEC071", +"v+ c #D28B2A", +"w+ c #D68E2B", +"x+ c #DA912C", +"y+ c #DFC476", +"z+ c #E1C879", +"A+ c #D8BF73", +"B+ c #C6B06B", +"C+ c #A29057", +"D+ c #9B8A54", +"E+ c #C3AE6A", +"F+ c #7B6D43", +"G+ c #E5CD7D", +"H+ c #E3D082", +"I+ c #605837", +"J+ c #E9D688", +"K+ c #C38B3A", +"L+ c #B69464", +"M+ c #A4998A", +"N+ c #97999C", +"O+ c #8F9399", +"P+ c #898B8D", +"Q+ c #838383", +"R+ c #7B7F7F", +"S+ c #727D7C", +"T+ c #6C7171", +"U+ c #685554", +"V+ c #672E2D", +"W+ c #640D0D", +"X+ c #5E0000", +"Y+ c #DFC172", +"Z+ c #DFC173", +"`+ c #DFC273", +" @ c #E0C273", +".@ c #E0C374", +"+@ c #DFC375", +"@@ c #E0C475", +"#@ c #E1C475", +"$@ c #DDBF71", +"%@ c #D28B2B", +"&@ c #D58E2B", +"*@ c #D9922C", +"=@ c #DB932D", +"-@ c #E2C677", +";@ c #E1C778", +">@ c #BBA464", +",@ c #817245", +"'@ c #E2C979", +")@ c #A7945A", +"!@ c #958451", +"~@ c #C4AF6B", +"{@ c #796C42", +"]@ c #E4CE7E", +"^@ c #605836", +"/@ c #E4D082", +"(@ c #C58529", +"_@ c #C17F22", +":@ c #B97A21", +"<@ c #AE7B31", +"[@ c #9F7F51", +"}@ c #8D8272", +"|@ c #808183", +"1@ c #787A80", +"2@ c #717275", +"3@ c #6B6B6A", +"4@ c #636666", +"5@ c #5B6363", +"6@ c #545959", +"7@ c #514644", +"8@ c #DEC072", +"9@ c #DFC374", +"0@ c #DFC475", +"a@ c #E0C476", +"b@ c #D3973D", +"c@ c #E1C577", +"d@ c #E2C678", +"e@ c #B49E5F", +"f@ c #877748", +"g@ c #E2C879", +"h@ c #E2C779", +"i@ c #AD9A5D", +"j@ c #8F7E4D", +"k@ c #C7B06C", +"l@ c #766940", +"m@ c #E3CB7B", +"n@ c #E4CD7F", +"o@ c #E6D282", +"p@ c #675E3B", +"q@ c #DCC87D", +"r@ c #C3842B", +"s@ c #BC7F29", +"t@ c #B57C28", +"u@ c #AF7625", +"v@ c #AA701F", +"w@ c #A36C1D", +"x@ c #986A28", +"y@ c #886B41", +"z@ c #776B5B", +"A@ c #686969", +"B@ c #5F6267", +"C@ c #595B5C", +"D@ c #525253", +"E@ c #DDBF70", +"F@ c #DEBF70", +"G@ c #DFC071", +"H@ c #E0C274", +"I@ c #E0C375", +"J@ c #DB932C", +"K@ c #E1C576", +"L@ c #AF9A5C", +"M@ c #8C7A4A", +"N@ c #E2C778", +"O@ c #B39F60", +"P@ c #887849", +"Q@ c #E3C879", +"R@ c #CAB26C", +"S@ c #73663E", +"T@ c #E4CB7D", +"U@ c #6E643E", +"V@ c #D4C179", +"W@ c #E9D889", +"X@ c #C6862B", +"Y@ c #C2832B", +"Z@ c #BA7E29", +"`@ c #B37A27", +" # c #AC7526", +".# c #A67024", +"+# c #9F6C23", +"@# c #986721", +"## c #93611B", +"$# c #8C5D19", +"%# c #825A1F", +"&# c #735832", +"*# c #615646", +"=# c #515150", +"-# c #DDBE6F", +";# c #DDBE70", +"># c #DEBF71", +",# c #DFC274", +"'# c #E0C576", +")# c #AA955A", +"!# c #907E4B", +"~# c #E1C677", +"{# c #E1C678", +"]# c #B8A362", +"^# c #827245", +"/# c #CBB46D", +"(# c #70633C", +"_# c #766B42", +":# c #CCBA74", +"<# c #BF822A", +"[# c #B87D28", +"}# c #B17826", +"|# c #AA7425", +"1# c #A46F24", +"2# c #9D6B22", +"3# c #966622", +"4# c #906120", +"5# c #895C1E", +"6# c #81571C", +"7# c #7C5317", +"8# c #764E15", +"9# c #6E4B19", +"0# c #DDBD6F", +"a# c #DEC172", +"b# c #DFC072", +"c# c #DFC174", +"d# c #DFC474", +"e# c #A59156", +"f# c #94814D", +"g# c #BDA664", +"h# c #7C6D42", +"i# c #CFB66F", +"j# c #6D603A", +"k# c #E4CD7D", +"l# c #7E7247", +"m# c #C3B16E", +"n# c #E9D587", +"o# c #C5862C", +"p# c #BC8029", +"q# c #B67B28", +"r# c #AF7626", +"s# c #A87225", +"t# c #A26D24", +"u# c #9A6922", +"v# c #946421", +"w# c #8D5F1F", +"x# c #865B1D", +"y# c #7F571C", +"z# c #78511A", +"A# c #714C19", +"B# c #DDBC6E", +"C# c #DEBD6F", +"D# c #DEBE6F", +"E# c #A18D54", +"F# c #97844E", +"G# c #E0C575", +"H# c #E1C476", +"I# c #C2AA66", +"J# c #77683F", +"K# c #D2B970", +"L# c #695C38", +"M# c #E1C779", +"N# c #E5CF81", +"O# c #86794B", +"P# c #BBA969", +"Q# c #E8D283", +"R# c #C5862B", +"S# c #C2832A", +"T# c #B37928", +"U# c #AD7526", +"V# c #A67025", +"W# c #916320", +"X# c #8A5E1F", +"Y# c #84591D", +"Z# c #7D541C", +"`# c #76501A", +" $ c #6F4B19", +".$ c #DCBC6D", +"+$ c #DCBD6E", +"@$ c #9E8952", +"#$ c #99854F", +"$$ c #C7AE68", +"%$ c #71633B", +"&$ c #E0C676", +"*$ c #D5BB70", +"=$ c #655936", +"-$ c #E4CA7C", +";$ c #E5CC7E", +">$ c #8E804F", +",$ c #B3A163", +"'$ c #C5852B", +")$ c #B87C28", +"!$ c #B17827", +"~$ c #AB7426", +"{$ c #9D6A22", +"]$ c #966620", +"^$ c #8F611F", +"/$ c #885C1E", +"($ c #82581C", +"_$ c #7B531B", +":$ c #734F1A", +"<$ c #6E4B18", +"[$ c #DBBB6C", +"}$ c #DCBB6D", +"|$ c #DCBC6E", +"1$ c #DDBD6E", +"2$ c #DEC173", +"3$ c #9B8750", +"4$ c #9C8750", +"5$ c #CCB36A", +"6$ c #6C5F38", +"7$ c #E1C575", +"8$ c #E0C577", +"9$ c #D9BE72", +"0$ c #615533", +"a$ c #E3CA7A", +"b$ c #958753", +"c$ c #A9995E", +"d$ c #C4852B", +"e$ c #BD8129", +"f$ c #AE7626", +"g$ c #A87125", +"h$ c #A16D24", +"i$ c #9B6922", +"j$ c #946420", +"k$ c #8E601F", +"l$ c #79521B", +"m$ c #714D19", +"n$ c #DBBA6B", +"o$ c #DBBA6C", +"p$ c #DCBB6C", +"q$ c #DEBE70", +"r$ c #DEC171", +"s$ c #9A854F", +"t$ c #9D8851", +"u$ c #D1B56C", +"v$ c #675A35", +"w$ c #DCC073", +"x$ c #5D5131", +"y$ c #E4CB7B", +"z$ c #9F8F58", +"A$ c #A09058", +"B$ c #B47A28", +"C$ c #AD7626", +"D$ c #A67125", +"E$ c #9F6C24", +"F$ c #996722", +"G$ c #926320", +"H$ c #8C5F1E", +"I$ c #7D551C", +"J$ c #77501A", +"K$ c #704C18", +"L$ c #DAB96A", +"M$ c #DBB96B", +"N$ c #99844E", +"O$ c #D5B96E", +"P$ c #615532", +"Q$ c #5B4F2F", +"R$ c #DEC375", +"S$ c #E1C676", +"T$ c #E2CA7A", +"U$ c #E3CB7D", +"V$ c #A8965C", +"W$ c #968753", +"X$ c #B87D29", +"Y$ c #B17927", +"Z$ c #9D6A23", +"`$ c #976620", +" % c #906220", +".% c #895D1E", +"+% c #82581D", +"@% c #7B541C", +"#% c #754F1A", +"$% c #DAB869", +"%% c #DAB86A", +"&% c #DBB96A", +"*% c #DBBA6D", +"=% c #DBBC6D", +"-% c #DDBC6D", +";% c #98834D", +">% c #9E8951", +",% c #DABD6F", +"'% c #5D5030", +")% c #5F5332", +"!% c #D9BD71", +"~% c #E1C777", +"{% c #B19F60", +"]% c #8D7F4D", +"^% c #BD802A", +"/% c #B67C28", +"(% c #AF7727", +"_% c #A97225", +":% c #A26E24", +"<% c #946520", +"[% c #865C1E", +"}% c #80561C", +"|% c #79521A", +"1% c #724D19", +"2% c #6F4C19", +"3% c #D9B768", +"4% c #DAB769", +"5% c #DDBD6D", +"6% c #98834C", +"7% c #9E8950", +"8% c #5A4D2E", +"9% c #655734", +"0% c #D3B86F", +"a% c #BAA665", +"b% c #827548", +"c% c #BB7F29", +"d% c #B47B27", +"e% c #A57125", +"f% c #996821", +"g% c #8B5F1F", +"h% c #855A1D", +"i% c #7E551B", +"j% c #77511A", +"k% c #704C19", +"l% c #DAB668", +"m% c #DAB669", +"n% c #DAB768", +"o% c #DBB86A", +"p% c #DCBA6C", +"q% c #98824C", +"r% c #9D874F", +"s% c #5C4F2E", +"t% c #DABC70", +"u% c #6A5C37", +"v% c #CDB269", +"w% c #C4AF6A", +"x% c #C0822B", +"y% c #B97D29", +"z% c #B27927", +"A% c #AB7425", +"B% c #976721", +"C% c #8F621F", +"D% c #83581C", +"E% c #7B541B", +"F% c #6F4B18", +"G% c #D9B668", +"H% c #9C864E", +"I% c #5F5230", +"J% c #D7B96D", +"K% c #6F6039", +"L% c #C8AE67", +"M% c #E1C375", +"N% c #E2C878", +"O% c #CEB66F", +"P% c #6F633C", +"Q% c #BE802A", +"R% c #A87325", +"S% c #956520", +"T% c #875B1E", +"U% c #80571C", +"V% c #724E1A", +"W% c #D9B467", +"X% c #D9B567", +"Y% c #DAB96B", +"Z% c #DCBB6E", +"`% c #97814B", +" & c #625532", +".& c #D2B56A", +"+& c #76663C", +"@& c #C1A762", +"#& c #E0C376", +"$& c #D8C074", +"%& c #645936", +"&& c #A77125", +"*& c #A06C23", +"=& c #986822", +"-& c #936320", +";& c #845A1D", +">& c #D8B466", +",& c #D9B466", +"'& c #D9B667", +")& c #DBB869", +"!& c #DAB86B", +"~& c #DBBB6D", +"{& c #99834C", +"]& c #9A834C", +"^& c #DCBD6F", +"/& c #675834", +"(& c #CEB267", +"_& c #7C6B3F", +":& c #BAA15E", +"<& c #E0C677", +"[& c #5D5232", +"}& c #C0822A", +"|& c #B97E28", +"1& c #B27828", +"2& c #A47024", +"3& c #9E6B23", +"4& c #966621", +"5& c #8A5D1E", +"6& c #7C541B", +"7& c #754F19", +"8& c #D8B365", +"9& c #D8B567", +"0& c #D9B566", +"a& c #DCBA6B", +"b& c #9A844C", +"c& c #98824B", +"d& c #695A34", +"e& c #CBAF66", +"f& c #837143", +"g& c #B2995A", +"h& c #DFC171", +"i& c #655A36", +"j& c #D5BD72", +"k& c #C4862C", +"l& c #B07727", +"m& c #A97325", +"n& c #A26E23", +"o& c #9C6A22", +"p& c #946521", +"q& c #8D611F", +"r& c #875C1E", +"s& c #714E19", +"t& c #D7B364", +"u& c #D8B366", +"v& c #DAB667", +"w& c #D9B769", +"x& c #DBB96C", +"y& c #9C844D", +"z& c #957E49", +"A& c #6C5C35", +"B& c #C8AB64", +"C& c #8C7746", +"D& c #A99255", +"E& c #DFC272", +"F& c #70633B", +"G& c #CAB26B", +"H& c #C3852B", +"I& c #A77124", +"J& c #996822", +"K& c #926420", +"L& c #8B5F1E", +"M& c #855B1D", +"N& c #7E551C", +"O& c #6F4C18", +"P& c #D7B263", +"Q& c #D7B264", +"R& c #D8B364", +"S& c #D8B465", +"T& c #D9B568", +"U& c #9F864E", +"V& c #927B48", +"W& c #6F5F37", +"X& c #C4A861", +"Y& c #957F4A", +"Z& c #A08950", +"`& c #7B6C41", +" * c #BFA864", +".* c #C6872B", +"+* c #C1822A", +"@* c #B27926", +"#* c #A57024", +"$* c #976621", +"%* c #91621F", +"&* c #83591D", +"** c #7C531B", +"=* c #75501A", +"-* c #D7B163", +";* c #D8B163", +">* c #D7B265", +",* c #D8B467", +"'* c #A3894E", +")* c #8E7946", +"!* c #716037", +"~* c #C2A560", +"{* c #877747", +"]* c #B39D5E", +"^* c #E3C87B", +"/* c #BE812A", +"(* c #B77C28", +"_* c #B07826", +":* c #A36E23", +"<* c #9B6A22", +"[* c #956521", +"}* c #8E611F", +"|* c #875C1D", +"1* c #79531A", +"2* c #724E19", +"3* c #D6B063", +"4* c #D8B264", +"5* c #A58B50", +"6* c #8B7543", +"7* c #736138", +"8* c #C0A25E", +"9* c #A58D52", +"0* c #8D7846", +"a* c #93814D", +"b* c #A69157", +"c* c #C4842B", +"d* c #9F6D23", +"e* c #9A6822", +"f* c #8B5E1E", +"g* c #D6AF61", +"h* c #D6AF62", +"i* c #D6B062", +"j* c #D7B063", +"k* c #D9B465", +"l* c #D9B365", +"m* c #A98E51", +"n* c #877241", +"o* c #746238", +"p* c #BDA15C", +"q* c #B09557", +"r* c #836F40", +"s* c #DDBC6F", +"t* c #9F8B53", +"u* c #998650", +"v* c #E3C979", +"w* c #C5872B", +"x* c #C1832B", +"y* c #B97E29", +"z* c #AC7425", +"A* c #A56F24", +"B* c #9E6C23", +"C* c #895E1E", +"D* c #7C541C", +"E* c #D6AF60", +"F* c #D7B061", +"G* c #D7B162", +"H* c #D6B163", +"I* c #D8B263", +"J* c #D7B365", +"K* c #D8B566", +"L* c #D9B666", +"M* c #AD9152", +"N* c #836D3E", +"O* c #756339", +"P* c #BB9E5B", +"Q* c #DABA6B", +"R* c #BCA05C", +"S* c #75633A", +"T* c #DDBE6E", +"U* c #DFC373", +"V* c #AD9659", +"W* c #8C7A49", +"X* c #E1C878", +"Y* c #B77B28", +"Z* c #B07827", +"`* c #AA7325", +" = c #A36E24", +".= c #9B6A23", +"+= c #8E6120", +"@= c #81571D", +"#= c #7A531B", +"$= c #D5AE5F", +"%= c #D5AF61", +"&= c #B19454", +"*= c #7E693C", +"== c #766339", +"-= c #BA9D5A", +";= c #DBB86B", +">= c #C9AA62", +",= c #685833", +"'= c #B8A05F", +")= c #806F41", +"!= c #E0C474", +"~= c #B57A28", +"{= c #AE7527", +"]= c #8C5F1F", +"^= c #7E561B", +"/= c #714C18", +"(= c #D5AD60", +"_= c #D5AE60", +":= c #D6AE60", +"<= c #D7B062", +"[= c #D8B265", +"}= c #B69755", +"|= c #786439", +"1= c #776339", +"2= c #B99B59", +"3= c #D6B568", +"4= c #5B4D2C", +"5= c #D9B86A", +"6= c #C5AB65", +"7= c #72633B", +"8= c #C7862B", +"9= c #AC7426", +"0= c #8A5E1E", +"a= c #D4AC5E", +"b= c #D5AD5E", +"c= c #D5AD5F", +"d= c #D6AE61", +"e= c #BC9C58", +"f= c #725F36", +"g= c #B99B58", +"h= c #655531", +"i= c #CAAB62", +"j= c #D3B76C", +"k= c #645733", +"l= c #B77D28", +"m= c #A36F24", +"n= c #7A531A", +"o= c #734E19", +"p= c #D4AB5E", +"q= c #D7B164", +"r= c #C1A05A", +"s= c #6B5932", +"t= c #776438", +"u= c #B89A57", +"v= c #79663A", +"w= c #B69A58", +"x= c #5D502F", +"y= c #DABD70", +"z= c #C4862B", +"A= c #BC802A", +"B= c #B57B28", +"C= c #AE7627", +"D= c #A06D24", +"E= c #946320", +"F= c #7F551C", +"G= c #D4AA5C", +"H= c #D4AB5D", +"I= c #D5AC5E", +"J= c #D5AF60", +"K= c #C8A65D", +"L= c #64532F", +"M= c #7D683A", +"N= c #B19453", +"O= c #917945", +"P= c #9D844B", +"Q= c #6A5B36", +"R= c #CCB068", +"S= c #B37927", +"T= c #A57025", +"U= c #916220", +"V= c #7C551C", +"W= c #755019", +"X= c #D3AA5C", +"Y= c #D4AB5C", +"Z= c #D5AB5E", +"`= c #D4AD5E", +" - c #D6B162", +".- c #CEAB5F", +"+- c #5E4E2B", +"@- c #856F3E", +"#- c #A88C4F", +"$- c #AF9353", +"%- c #796539", +"&- c #DAB76A", +"*- c #DBBB6B", +"=- c #79683D", +"-- c #BDA360", +";- c #956621", +">- c #8F601F", +",- c #81581D", +"'- c #6E4C18", +")- c #D4A95B", +"!- c #D4AA5D", +"~- c #D3AB5D", +"{- c #D5AF62", +"]- c #574828", +"^- c #957B45", +"/- c #977D46", +"(- c #D4B164", +"_- c #655430", +":- c #BE9F5B", +"<- c #DCBE6F", +"[- c #867344", +"}- c #AF9758", +"|- c #AE7727", +"1- c #A16D23", +"2- c #936420", +"3- c #865A1D", +"4- c #7F561B", +"5- c #78521A", +"6- c #D2A85B", +"7- c #D3A85B", +"8- c #D3AA5B", +"9- c #D4AA5B", +"0- c #D5AC5F", +"a- c #D5AE61", +"b- c #5D4D2A", +"c- c #CDAA5F", +"d- c #AB8D50", +"e- c #7F683A", +"f- c #A4884D", +"g- c #7A663A", +"h- c #95804A", +"i- c #9F8850", +"j- c #C1832A", +"k- c #9E6C22", +"l- c #8B5D1E", +"m- c #835A1D", +"n- c #7D551B", +"o- c #D3A85A", +"p- c #D2A85A", +"q- c #D3A95A", +"r- c #D3A95C", +"s- c #D4A95C", +"t- c #D4AC5F", +"u- c #66542E", +"v- c #C3A059", +"w- c #CCA85E", +"x- c #5E4D2B", +"y- c #D3AF62", +"z- c #6C5A33", +"A- c #AA8D50", +"B- c #A48C51", +"C- c #8F7B47", +"D- c #C6862C", +"E- c #BF8229", +"F- c #AA7426", +"G- c #8F6020", +"H- c #81581C", +"I- c #744F1A", +"J- c #D2A759", +"K- c #D3A75A", +"L- c #D3A95B", +"M- c #715C33", +"N- c #B99754", +"O- c #7E683A", +"P- c #A2854A", +"Q- c #BC9C57", +"R- c #62512D", +"S- c #CAA95F", +"T- c #B49A5A", +"U- c #7E6C3E", +"V- c #DEBF6F", +"W- c #C4852C", +"X- c #B67A28", +"Y- c #8C601F", +"Z- c #865B1E", +"`- c #7F561C", +" ; c #D2A659", +".; c #D2A95B", +"+; c #7B6437", +"@; c #AE8D4F", +"#; c #D6B061", +"$; c #BB9956", +"%; c #63522D", +"&; c #CEAA5F", +"*; c #987F47", +"=; c #725F35", +"-; c #D5B164", +";; c #C3A660", +">; c #6E5D36", +",; c #BB7E29", +"'; c #AD7525", +"); c #A67124", +"!; c #926220", +"~; c #8B5E1F", +"{; c #D1A658", +"]; c #D2A658", +"^; c #D4AC5D", +"/; c #866D3C", +"(; c #A28449", +"_; c #907642", +":; c #7B6438", +"<; c #D6B264", +"[; c #846E3E", +"}; c #D3AE62", +"|; c #D4B567", +"1; c #5D4F2E", +"2; c #BF822B", +"3; c #8F6120", +"4; c #7B531A", +"5; c #744F19", +"6; c #D1A457", +"7; c #D1A557", +"8; c #D2A758", +"9; c #D2A859", +"0; c #937740", +"a; c #967A43", +"b; c #D4AD60", +"c; c #796437", +"d; c #8D7440", +"e; c #D5B063", +"f; c #8A7240", +"g; c #6E5B33", +"h; c #C1A15A", +"i; c #61522F", +"j; c #D0B166", +"k; c #A26D23", +"l; c #936421", +"m; c #8D601F", +"n; c #D1A556", +"o; c #D1A558", +"p; c #D2A75A", +"q; c #A18247", +"r; c #886D3C", +"s; c #D6AD5F", +"t; c #D0AA5E", +"u; c #6D5931", +"v; c #977C44", +"w; c #A5884C", +"x; c #604F2C", +"y; c #8E7642", +"z; c #CAA75F", +"A; c #BDA05C", +"B; c #C6882C", +"C; c #C2842B", +"D; c #BA7F29", +"E; c #B37A28", +"F; c #986722", +"G; c #916221", +"H; c #7D541B", +"I; c #D0A356", +"J; c #D0A355", +"K; c #D0A456", +"L; c #D1A657", +"M; c #D1A759", +"N; c #AF8D4C", +"O; c #796235", +"P; c #CBA55B", +"Q; c #69562F", +"R; c #9D8147", +"S; c #C9A65D", +"T; c #917843", +"U; c #60502D", +"V; c #7B6639", +"W; c #A0844A", +"X; c #C1A059", +"Y; c #D4B064", +"Z; c #846F40", +"`; c #AB9053", +" > c #C08229", +".> c #B97D28", +"+> c #B27827", +"@> c #885D1E", +"#> c #CFA255", +"$> c #D0A255", +"%> c #D1A356", +"&> c #D1A456", +"*> c #D3A859", +"=> c #BE9953", +"-> c #67532D", +";> c #D5AC5D", +">> c #D6AD60", +",> c #C6A159", +"'> c #67542E", +")> c #957A43", +"!> c #D7AF62", +"~> c #D1AB60", +"{> c #AE8F50", +"]> c #897140", +"^> c #6D5A33", +"/> c #594A29", +"(> c #5F4F2D", +"_> c #725E35", +":> c #856E3F", +"<> c #937A45", +"[> c #A68B4F", +"}> c #B29554", +"|> c #C2A35D", +"1> c #D4B165", +"2> c #967E48", +"3> c #998149", +"4> c #DCBA6D", +"5> c #AF7726", +"6> c #6E4A19", +"7> c #D0A455", +"8> c #D1A659", +"9> c #D3A759", +"0> c #CEA559", +"a> c #584726", +"b> c #D2A95C", +"c> c #D4AD5F", +"d> c #CAA55B", +"e> c #725D34", +"f> c #80693A", +"g> c #CCA95E", +"h> c #BA9A58", +"i> c #A68B4E", +"j> c #9C824A", +"k> c #8C7542", +"l> c #7B663A", +"m> c #5A4B2B", +"n> c #5C4D2C", +"o> c #645430", +"p> c #7C683B", +"q> c #CFA153", +"r> c #D0A154", +"s> c #D0A354", +"t> c #D0A557", +"u> c #D2A557", +"v> c #65512B", +"w> c #C09B54", +"x> c #D3AA5D", +"y> c #D5AB5D", +"z> c #D0A95E", +"A> c #846C3B", +"B> c #6A5730", +"C> c #C19E57", +"D> c #D2B063", +"E> c #AB8F51", +"F> c #715E36", +"G> c #C0832B", +"H> c #A46F25", +"I> c #CFA152", +"J> c #CFA253", +"K> c #D0A153", +"L> c #D1A355", +"M> c #7B6235", +"N> c #AA8848", +"O> c #A28348", +"P> c #604E2A", +"Q> c #A38549", +"R> c #D0AD62", +"S> c #BD8029", +"T> c #956420", +"U> c #CEA052", +"V> c #CFA052", +"W> c #CFA053", +"X> c #CFA154", +"Y> c #CFA254", +"Z> c #CFA355", +"`> c #93753E", +" , c #90733E", +"., c #C09C55", +"+, c #6C5830", +"@, c #7C6537", +"#, c #C6A25A", +"$, c #62522E", +"%, c #CCAB61", +"&, c #B47A27", +"*, c #CE9F51", +"=, c #CEA152", +"-, c #B18D4B", +";, c #705930", +">, c #D2A95A", +",, c #D0A95C", +"', c #937741", +"), c #5E4C2A", +"!, c #9A7E45", +"~, c #D2AC5E", +"{, c #776238", +"], c #B89956", +"^, c #9D6B23", +"/, c #895D1F", +"(, c #CD9E50", +"_, c #CE9E51", +":, c #CF9F52", +"<, c #CE9F52", +"[, c #CEA053", +"}, c #D0A254", +"|, c #CEA357", +"1, c #5C4A26", +"2, c #C69D54", +"3, c #C19D56", +"4, c #796236", +"5, c #6A562F", +"6, c #AF8E4E", +"7, c #8A7340", +"8, c #A1864B", +"9, c #BD812A", +"0, c #B07726", +"a, c #9C6922", +"b, c #CD9D4F", +"c, c #CE9E50", +"d, c #876A38", +"e, c #8E713B", +"f, c #B08F4D", +"g, c #6F5A32", +"h, c #AE8E4D", +"i, c #8C7441", +"j, c #BB8029", +"k, c #B47B28", +"l, c #AD7527", +"m, c #A06D23", +"n, c #85591D", +"o, c #CD9C4F", +"p, c #CE9D50", +"q, c #CD9E51", +"r, c #CF9F51", +"s, c #C49B51", +"t, c #5F4B27", +"u, c #B48F4B", +"v, c #D3AC5D", +"w, c #A8894B", +"x, c #6F5A31", +"y, c #9C7F46", +"z, c #CBA65B", +"A, c #756136", +"B, c #D9B669", +"C, c #9E6B22", +"D, c #CD9B4F", +"E, c #CC9C4F", +"F, c #CE9D4F", +"G, c #D1A455", +"H, c #D0A457", +"I, c #A88445", +"J, c #6B542C", +"K, c #B59350", +"L, c #836B3A", +"M, c #5D4C2A", +"N, c #705B32", +"O, c #957A44", +"P, c #AE8E4F", +"Q, c #B99854", +"R, c #CDA95E", +"S, c #CBA85D", +"T, c #7A521B", +"U, c #734D19", +"V, c #CD9B4D", +"W, c #CC9B4E", +"X, c #CC9C4E", +"Y, c #CD9C4E", +"Z, c #765D30", +"`, c #9C7B41", +" ' c #CEA658", +".' c #B4904D", +"+' c #B18E4D", +"@' c #BC9752", +"#' c #D0A75B", +"$' c #D0A85D", +"%' c #B18F4E", +"&' c #947942", +"*' c #7C6437", +"=' c #705C33", +"-' c #64522D", +";' c #594929", +">' c #5D4D2B", +",' c #574727", +"'' c #7A6438", +")' c #926421", +"!' c #8C5E1E", +"~' c #775119", +"{' c #CC9B4D", +"]' c #CD9B4E", +"^' c #CD9D50", +"/' c #BE954E", +"(' c #5E4926", +"_' c #C59A52", +":' c #BB9651", +"<' c #5F4C29", +"[' c #6F5930", +"}' c #755E32", +"|' c #68532D", +"1' c #5B4A28", +"2' c #7A6335", +"3' c #AC8A4A", +"4' c #CCA75C", +"5' c #745F34", +"6' c #9C8047", +"7' c #D8B164", +"8' c #D8B565", +"9' c #C6872C", +"0' c #C1842B", +"a' c #74501A", +"b' c #CB9A4C", +"c' c #CC9A4C", +"d' c #8E6F3A", +"e' c #7F6334", +"f' c #775E33", +"g' c #9F7F44", +"h' c #CDA458", +"i' c #A78648", +"j' c #6C572F", +"k' c #C59F56", +"l' c #937842", +"m' c #8E6020", +"n' c #79531B", +"o' c #CB994B", +"p' c #CB994C", +"q' c #CC9A4D", +"r' c #CB9F53", +"s' c #644E29", +"t' c #A58144", +"u' c #D2A558", +"v' c #594726", +"w' c #CAA055", +"x' c #D0A759", +"y' c #92763F", +"z' c #624F2A", +"A' c #AD8D4E", +"B' c #A77225", +"C' c #7E561C", +"D' c #CB984B", +"E' c #CC994B", +"F' c #CC994C", +"G' c #B9904A", +"H' c #B58E4A", +"I' c #C89E54", +"J' c #5B4826", +"K' c #C39C54", +"L' c #C8A259", +"M' c #604E2B", +"N' c #B27928", +"O' c #7C531C", +"P' c #CB974A", +"Q' c #CB984A", +"R' c #CB9A4D", +"S' c #AB8445", +"T' c #AC8645", +"U' c #B58E4B", +"V' c #6D552D", +"W' c #A18045", +"X' c #66522C", +"Y' c #CAA258", +"Z' c #63502C", +"`' c #C4A058", +" ) c #D7AF61", +".) c #C5852C", +"+) c #BE8129", +"@) c #734E1A", +"#) c #CA974A", +"$) c #CB9749", +"%) c #CA984A", +"&) c #B08A47", +"*) c #604B27", +"=) c #775D31", +"-) c #A37F43", +";) c #B48D49", +">) c #B18C49", +",) c #745A2F", +"') c #94743D", +")) c #8B703C", +"!) c #776033", +"~) c #7E6638", +"{) c #A78749", +"]) c #BC7F2A", +"^) c #CA9648", +"/) c #CB9649", +"() c #CA9749", +"_) c #CB984C", +":) c #CA9D51", +"<) c #9D7B3F", +"[) c #7F6333", +"}) c #6D552C", +"|) c #6F572D", +"1) c #92723B", +"2) c #CDA053", +"3) c #D0A659", +"4) c #705A30", +"5) c #9B7B42", +"6) c #9C7E44", +"7) c #886E3C", +"8) c #CB953E", +"9) c #BA7E28", +"0) c #B37827", +"a) c #9F6B23", +"b) c #CA9649", +"c) c #CC9B4C", +"d) c #D2A657", +"e) c #BF9952", +"f) c #5F4B28", +"g) c #B38E4C", +"h) c #69552E", +"i) c #D6AE5F", +"j) c #C4872D", +"k) c #C0812A", +"l) c #966521", +"m) c #744E19", +"n) c #C99447", +"o) c #CA9548", +"p) c #5F4C28", +"q) c #B38F4C", +"r) c #5D4B28", +"s) c #C7A057", +"t) c #D2A554", +"u) c #B18C4A", +"v) c #614D29", +"w) c #A48345", +"x) c #7D6436", +"y) c #A58447", +"z) c #CB953F", +"A) c #976722", +"B) c #704B18", +"C) c #CA9447", +"D) c #CC984B", +"E) c #D0A155", +"F) c #D0A556", +"G) c #BF9751", +"H) c #66512B", +"I) c #806637", +"J) c #C49B53", +"K) c #A28145", +"L) c #C7882E", +"M) c #C99345", +"N) c #C99446", +"O) c #C99548", +"P) c #C99547", +"Q) c #CDA256", +"R) c #8F713C", +"S) c #5C4926", +"T) c #8F723C", +"U) c #C89F55", +"V) c #C79F55", +"W) c #5C4927", +"X) c #CFA659", +"Y) c #D2A454", +"Z) c #9B6822", +"`) c #C89245", +" ! c #C89446", +".! c #C99346", +"+! c #C49A53", +"@! c #836837", +"#! c #8A6E3B", +"$! c #64502B", +"%! c #AC8949", +"&! c #CC9641", +"*! c #C79244", +"=! c #C89345", +"-! c #C89346", +";! c #CA9549", +">! c #CE9E52", +",! c #C59C53", +"'! c #92733D", +")! c #5D4A27", +"!! c #7C6235", +"~! c #C78A30", +"{! c #AA7326", +"]! c #9C6A23", +"^! c #C79044", +"/! c #C79144", +"(! c #C89246", +"_! c #CCA255", +":! c #9E7D43", +"~ c #C48A3E", +",~ c #C48B3E", +"'~ c #C68C40", +")~ c #EFBB67", +"!~ c #EBB761", +"~~ c #DDA751", +"{~ c #D49D44", +"]~ c #E6AF4F", +"^~ c #E1AA46", +"/~ c #D09A39", +"(~ c #865C1D", +"_~ c #8A601C", +":~ c #714D1A", +"<~ c #C48A3C", +"[~ c #C48A3D", +"}~ c #EFBA65", +"|~ c #EAB55E", +"1~ c #E9B35A", +"2~ c #E4AE50", +"3~ c #E1A949", +"4~ c #DDA642", +"5~ c #E1A83D", +"6~ c #A27227", +"7~ c #A97823", +"8~ c #C38C23", +"9~ c #DB9D1F", +"0~ c #996A19", +"a~ c #624119", +"b~ c #C4893C", +"c~ c #C58B3D", +"d~ c #ECB864", +"e~ c #E9B45C", +"f~ c #E5B055", +"g~ c #E2AC4D", +"h~ c #E0A846", +"i~ c #DCA43F", +"j~ c #D9A138", +"k~ c #D79E32", +"l~ c #D3992A", +"m~ c #D09523", +"n~ c #CB901C", +"o~ c #BE8615", +"p~ c #C3893C", +"q~ c #EBB760", +"r~ c #E8B35A", +"s~ c #E4AF52", +"t~ c #E0AB4B", +"u~ c #DEA744", +"v~ c #DBA33D", +"w~ c #D8A036", +"x~ c #D49B2F", +"y~ c #D19727", +"z~ c #CE9420", +"A~ c #CB901A", +"B~ c #C98E13", +"C~ c #C4883C", +"D~ c #C48B3D", +"E~ c #EAB45D", +"F~ c #E7B158", +"G~ c #E3AE51", +"H~ c #E0AA49", +"I~ c #DDA641", +"J~ c #DAA23B", +"K~ c #D69E34", +"L~ c #D39A2C", +"M~ c #D09625", +"N~ c #CD921E", +"O~ c #CB9018", +"P~ c #C3883B", +"Q~ c #E6B055", +"R~ c #E2AD4E", +"S~ c #DFA946", +"T~ c #DCA540", +"U~ c #D8A039", +"V~ c #D59C32", +"W~ c #D2992A", +"X~ c #CF9523", +"Y~ c #CC921C", +"Z~ c #E7B259", +"`~ c #E6B054", +" { c #E2AB4C", +".{ c #DEA844", +"+{ c #DBA33E", +"@{ c #D79F37", +"#{ c #D59B2F", +"${ c #D19728", +"%{ c #CE9422", +"&{ c #E6B157", +"*{ c #E1AA4A", +"={ c #DDA643", +"-{ c #D79E34", +";{ c #D49B2C", +">{ c #D19726", +",{ c #E3AD4E", +"'{ c #DFA947", +"){ c #DCA440", +"!{ c #D69D32", +"~{ c #E2AC4C", +"{{ c #DFA744", +"]{ c #DBA43D", +"^{ c #D89F36", +"/{ c #D59C30", +"({ c #D19828", +"_{ c #E8B04C", +":{ c #E1A944", +"<{ c #DBA33B", +"[{ c #D69C30", +"}{ c #8E6C2D", +"|{ c #C7943A", +"1{ c #E4A93B", +"2{ c #D89F33", +"3{ c #070503", +"4{ c #000000", +"5{ c #413011", +"6{ c #120D05", +"7{ c #1C1507", +"8{ c #281D0B", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" . + @ # $ % & * = = = - - ; > , ' ' ' ) ! ~ { ] ^ / / ( ( ", +" _ : < [ } | | 1 2 . 3 @ 4 5 5 * 6 = 7 8 9 - 0 , a , b c c ~ d ] ] e e / f f f f ( f f f ( f g ", +" _ : : h i } } j | k 2 . . l @ m 4 n * * = = 9 9 - - o > ' b b c ] ! { ] ^ ( p f f f f f g f f f ( f ( g f f ", +" : _ : q r s t i } } u | v k 2 w @ @ 4 5 % & * = = 8 - 0 ; o ' x b b ) ~ ] ] ^ / y ( f ( f ( f f f f f z f ( ( ", +" : : _ A r B C D E t t F } } | | k 2 @ G $ H 4 I * * = J 9 - 0 > a o ' b b K ] ! ] { / / / ( f f f f ( f f z f ", +" : _ : L M N O P Q R S E t T < } } | k U 2 w @ @ # 4 % * 6 7 9 V W ; a > X ' b c ) ! { ] ^ Y ( Z f f f f f f g ( ", +" : : : A M ` O ...+.@.@.R S S t i t } j | | k w w + @ @ 5 * % 6 7 = = 9 > #., o $.%.c c ] ~ ^ e y ( Z f f ( ( f f ", +" : : _ &.*.=.O -.;.>.,.@.'.@.@.S t s t t < } | | k U 2 . @ $ $ n * * = = J - - - > a o ' ' b ~ ).! ] ^ e ( ( f f ( g !.~.{.].^./. ", +" _ _ : (._.:.<.[.}.|.1.2.3.2.@.4.@.@.D S 5.t F } [ [ | | 2 2 @ @ # m * & * = = = 6.7.0 a > a ' 8.8.~ ! ] ^ ^ / y ( f ( 9.!.0.a.b.c.d.e.f.g. ", +" : : _ h._.i.j.k.l.m.n.o.o.o.3.3.+.,.+.@.Q S S p.t < [ u q.| k 2 2 w @ @ 4 5 % * * r.s.9 - 0 0 a ' ' t.c ! ] d u.e / ( / v.w.x.y.z.A.B.C.D.E. ", +" : : _ h.F.G.B H.l.I.J.K.L.M.N.o.O.3.2.,.'.4.@.R P.p.t t t i | q.k U . 2 w $ $ 4 4 I Q.R.J 9 - W ; > > ' o c ) c ).! ] { S.T.U.V.W.X./.Y.Z.`. +.+++ ", +" _ : : h.F.@+#+$+%+&+J.*+=+-+;+L.>+o.3.,+2.'++.,.@.@.Q D S p.t i [ [ j | 2 2 @ @ @ # 4 )+!+* = J 9 9 0 > > > ' ' t.c ~+~ ] {+]+^+/+(+_+:+<+[+}+|+1+2+ ", +" : : _ : L 3+B $+4+&+5+6+7+8+9+0+0+L.L.N.o.3.3.a+b+,.4.4.c+P.D E p.t } [ j j | k k 2 @ @ d+e+& * 6 = = 9 9 0 0 > o ' ' ' c ~ f+g+h+i+j+k+l+m+n+o+p+q+r+ ", +" : : s+t+u+B $+P I.5+v+w+x+y+z+A+B+C -+C+D+L.N.E+F+G+G+,.4.4.P.D D s t < i [ j | k k . + H+I+4 5 5 * J+J+= 8 - 0 > > o ' b c K+L+M+N+O+P+Q+R+S+T+U+V+W+X+ ", +" Y+Z+`+ @.@+@.@@@#@$@%@&@*@=@-@;@>@,@'@>.)@!@L.L.~@{@N.o.3.2.,.]@@.Q Q D S t i F } j | v k . ^@/@4 # 4 n * * 6 = 9 9 0 0 a ' $. (@_@:@<@[@}@|@1@2@3@4@5@6@7@ ", +" u+8@8@Z+Z+`+`+9@9@0@@@a@b@=@=@c@d@e@f@g@h@i@j@1.1.k@l@m@N.o.3.3.,.'.n@@.@.D S p.t i } } j o@| p@q@. @ 4 4 % * I 6 6 = J - 0 0 > r@s@t@u@v@w@x@y@z@A@B@C@D@ ", +" E@F@u+G@Y+Y+t+`+`+H@+@I@I@9@J@K@c@L@M@;@N@O@P@Q@'@R@S@L.L.L.o.T@3.,.G+,.@.@.Q S D S t t } [ | U@V@v + @ w 4 m 4 % I 7 J = W@9 - X@Y@Z@`@ #.#+#@###$#%#&#*#=# ", +" -#;#F@F@>#>#8@Y+Y+`+,#H@H@.@.@@@@@'#)#!#~#{#]#^#N@h@/#(#C L.L.N.m@o.,+T@2.+.,.'.@.@.S p.p.t } < _#:#| k 2 2 G @ $ $ 5 5 * = = = W@ X@<#[#}#|#1#2#3#4#5#6#7#8#9# ", +" 0#-#;#E@F@$@>#>#a#b#Z+`+c#.@H@.@d#@@e#f#K@c@g#h#N@;@i#j#>.C -+L.L.m@o.,+o.3.k#2.4.@.@.@.S S s t l#m#[ u | | k w @ $ $ m 4 n#* = 6 o#p#q#r#s#t#u#v#w#x#y#z#A# ", +" B#B#0#0#C#D#F@>#u+u+u+a#Y+Y+`+`+.@.@E#F#G#H#I#J#~#~#K#L#M#g@>.C 1.L.>+m@m@N.,+3.k#,.'.'.@.S D N#O#P#i [ } j | Q#U . @ $ $ 4 I * * R#S#Z@T#U#V#+#@#W#X#Y#Z#`# $ ", +" .$.$.$+$0#0#-#E@;#F@u+>#a#8@Z+Z+`+9@@$#$@@@@$$%$K@&$*$=${#N@h@g@g@>.-+L.L.m@-$3.T@3.,.;$+.'.@.Q >$,$E t < [ } u | v 2 l @ $ @ 4 4 '$<#)$!$~$1#{$]$^$/$($_$:$<$ ", +" [$}$.$.$|$1$0#0#-#;#;#>#>#u+a#Y+2$`+3$4$.@+@5$6$7$8$9$0${#~#;@;@g@g@g@1.a$L.L.>+N.N.3.3.,.,.+.@.b$c$S D N#t } } j q.| k . @ w @ $ d$e$q#f$g$h$i$j$k$x#y#l$m$ ", +" n$n$o$p$p$.$|$B#B#-#0#-#q$F@$@>#8@r$a#s$t$`+H@u$v$@@a@w$x$c@~#;@{#d@N@N@>.'@1.1.-+y$>+o.N.3.3.k#,.z$A$@.c+D S t } i } j j | k k + Y@Z@B$C$D$E$F$G$H$Y#I$J$K$ ", +" L$M$M$o$o$p$}$}$.$.$+$0#-#;#;#>#>#>#8@N$t$`+Z+O$P$9@@@@@Q$R$K@S$~#{#;@;@g@h@>.g@1.T$L.L.N.U$o.,+3.V$W$'.@.S Q S E t t } [ u | | | R#<#X$Y$~$1#Z$`$ %.%+%@%#%9# ", +" $%%%&%M$M$o$o$*%=%}$-%|$B#1$0#;#E@F@>#;%>%8@Y+,%'%`+,#.@)%!%#@@@K@K@~#~%N@N@N@g@>.'@-+L.L.>+M.o.,+{%]%k#,.'.@.@.Q D E s t i } u | '$^%/%(%_%:%i$<%k$[%}%|%1%2% ", +" 3%4%%%L$&%M$n$o$o$[$.$.$|$5%1$0#0#;#q$6%7%>#u+s+8%8@`+ @9%0%+@I@@@'#c@~#~#{#N@M#h@g@g@Q@C C L.L.m@a%b%3.2.k#+.'.@.c+R E D t } } } Y@c%d%C$e%+#f%G$g%h%i%j%k% ", +" l%m%n%$%%%o%&%M$n$p%o$o$p$}$|$+$0#0#;#q%r%F@F@u+s%t%a#Z+u%v%H@.@I@@@H#K@'#c@~#-@;@h@h@h@g@C -+1.L.w%{@N.3.3.3.,.@.4.@.Q R t 5.t t o#x%y%z%A%1#2#B%C%.%D%E%#%F% ", +" G%l%n%4%n%4%$%%%%%M$M$o$p%p$}$.$.$+$1$q%H%-#F@E@I%J%u+8@K%L%`+ @.@.@@@M%H#'#c@~#~#~#d@;@N%g@g@C C O%P%L.>+N.3.3.'+,.,.'.@.D @.S E '$Q%q#r#R%:%i$S%k$T%U%|%V%9# ", +" W%X%X%l%l%n%4%$%o%M$Y%n$n$p%p$[$p$Z%|$`%H%0#-#-# &.&s+u++&@&2$Z+`+,#.@.@@@#&'#H#K@K@~#~#-@;@N%>.g@$&%&-+L.o.N.,+3.3.2.2.+.@.c+c+Q r@c%B$U#&&*&=&-&g%;&i%j%k% ", +" >&,&X%'&'&l%n%m%$%%%)&!&M$n$n$o$p$~&}${&]&|$^&0#/&(&q$$@_&:&u+Y+Z+Z+`+`+.@.@@@@@#@'#c@<&~#{#;@N@g@;@[&{#-+L.L.-$o.T@3.3.3.+.'.4.@. '$}&|&1&~$2&3&4& %5&($6&7&F% ", +" 8&>&>&9&0&'&G%l%m%n%4%)&%%&%&%M$a&o$[$b&c&}$|$|$d&e&;#q$f&g&>#8@h&Y+a#Z+,#`+9@.@@@I@'#'#c@~#~#{#;@g@i&j&g@C C ;+L.-$N.T@O.3.G+,.,. k&e$/%l&m&n&o&p&q&r&U%l$s&<$ ", +" t&t&>&u&,&,&X%X%v&G%3%w&$%$%%%&%L$n$x&y&z&}$}$}$A&B&0#0#C&D&;#F@u+8@8@Y+Z+E&`+`+9@.@@@@@a@K@K@~#-@;@F&G&g@g@C C 1.L.M.m@N.T@,+3.k# H&c%B$f$I&*&J&K&L&M&N&j%O& ", +" P&Q&R&8&8&S&>&9&X%X%T&3%l%4%4%%%%%%%L$U&V&o$p$}$W&X&|$0#Y&Z&-#;#q$E@>#u+Y+Y+Z+`+,#9@,#+@I@@@K@a@c@~#`& *;@N@g@>.>.C -+;+L.N.N.,+U$ .*+*|&@*A%#*3&$*%*5&&***=*F% ", +" -*;*P&Q&>*8&u&>&>&,*X%'&'&n%l%4%$%%%%%'*)*M$n$[$!*~*}$.$H%q%1$-#-#E@E@F@>#u+a#Y+Z+Z+`+,#,#I@@@a@@@'#{*]*~#N@;@h@N%g@>.^*a$a$L.L.o. R#/*(*_*_%:*<*[*}*|*U%1*2*F% ", +" 3*-*-*-*4*4*8&8&8&,&,&0&0&'&G%l%m%4%$%5*6*&%M$M$7*8*}$}$9*0*|$B#0#0#-#;#$@u+u+8@8@Y+Z+`+`+.@.@+@@@G#a*b*c@~#{#;@;@g@g@g@9+1.-+-+>+ c*c%B$f$&&d*e*G$f*M&N&z#K$ ", +" g*h*i*j*-*-*P&Q&R&8&k*l*,&0&9&X%G%G%m%m*n*%%%%&%o*p*n$[$q*r*}$.$B#s*-#-#-#;#F@E@u+u+Y+2$t+`+,#9@.@I@t*u*K@'#S$c@{#N@N@h@g@g@v*C a$ w*x*y*z%z*A*B*B% %C*&*D*=*9# ", +" E*g*F*i*G*H*-*-*I*J*Q&R&k*S&K*X%L*X%G%M*N*4%$%o%O*P*Q*n$R*S*}$}$Z%.$B#+$T*-#q$F@q$>#u+u+8@a#`+`+U*H@V*W*@@a@a@'#c@~#~#d@N@X*g@g@1. R#/*Y*Z*`* =.=[*+=/$@=#=2*<$ ", +" $=%=E*g*i*i*i*H*-*-*4*>*t&8&8&S&>&0&0&&=*=l%n%4%==-=L$;=>=,=o$o$o$}$.$|$+$0#0#-#-#q$$@u+u+8@Y+Z+Y+`+'=)=.@!=@@@@a@c@c@~#-@;@h@h@g@ c*c%~={=I&h$e*-&]=h%^=z#/= ", +" (=_=_=:=g*g*g*i*<=G*-*-*Q&[=R&8&S&,&9&}=|=G%G%l%1=2=$%%%3=4=5=x&o$p%p$.$.$.$1$0#T*-#D#E@F@>#u+8@a#Y+6=7= @ @.@+@@@K@K@~#c@~#{#;@;@ 8=x*y*z%9=#*3&B%W#0=&*6&`#<$ ", +" a=b=c=(=(=d=g*g*i*i*j*-*-*Q&Q&Q&8&8&>&e=f=9&X%T&1=g=4%4%%%h=i=Y%Y%n$n$}$}$}$.$-%B#0#0#-#-#E@F@>#8@r$j=k=Y+`+9@9@9@@@#@H#K@c@c@c@~# k&/*l=Z*`*m=o&[*^$r&6#n=o=<$ ", +" p=a=a=c=_=$=_=%=%=g*F*<=<=j*P&q=4*R&8&r=s=,&K*0&t=u=l%m%4%v=w=%%&%&%n$o$n$o$p$.$.$|$|$^&-#C#;#;#E@u+$@x=y=Y+Z+`+9@9@.@!=I@H#H#'#~# z=A=B=C=s#D=e*E=w#M&F=j%A# ", +" G=H=p=I=I=c=c=(=_=J=d=g*i*<=-*G*P&Q&Q&K=L=8&8&,&M=N=X%v&l%O=P=4%%%%%%%Y%n$o$o$[$}$.$.$|$+$1$-#D#;#F@E@Q=R=8@b#E&Z+`+,#H@I@I@a@@@'# R#x*Z@S= #T=B*B%U=5&&*V=W=O& ", +" X=Y=H=H=Z=a=`=c=_=:=:=E*g*g*i*<= --*P&.-+-Q&[=8&@-#-9&X%'&$-%-m%3%4%&-&%&%&%M$o$*-p$p$}$.$+$+$+$-#-#E@=---u+u+8@Z+2$Z+`+.@9@I@@@a@ R#/*(*Z*`*m=Z$;->-/$,-#=o='- ", +" )-X=X=!-~-p=Z=I=I=c=c=_=_=E*%=h*F*i*<={-]--*4*8&^-/->&>&9&(-_-:-3%3%4%$%)&$%Y%M$M$x&p%p$p$}$-%+$B#<--#[-}-E@E@u+u+8@a#2$`+ @.@H@.@ z=A=B=|-s#1-e*2-H$3-4-5-m$ ", +" 6-7-8-9-G=X=!-H=a=I=0-c=c=$=a-:=g*h*i*<=b-c--*P&d-e-R&>&>&,&f-g-'&X%3%4%4%4%&-%%M$Y%n$o$p%[$}$}$-%|$1$h-i-D#q$F@>#u+u+Y+Y+`+`+`+ @ X@j-Z@`@ ##*k-B%U=l-m-n-`#F% ", +" o-p-q-7-r-s-X=H=!-p=Z=t-b=c=(=:=_=g*g*g*u-v-G*-*w-x-y-8&8&l*H*z-A-X%'&G%l%3%4%&-$%L$M$M$n$p%p%}$~&|$|$B-C-^&-#-#q$q$>#>#u+a#Y+Y+`+ D-E-)$!$F-m=o&S%G-/$H-_$I-F% ", +" J-K-K-o-L-L-s-8-X=H=H=H=p=a=b=c=$=_=:=a-M-N-<= -j*O-P-4*t&[=8&Q-R-S-W%X%T&l%G%n%n%4%%%&%L$L$M$p%o$}$~&T-U-1$^&0#0#D#V-F@>#>#Y+a#Z+ W-A=X-(%s#1-u#2-Y-Z-`-|%m$ ", +" ; ;J-K-o-p-.;L-)-G=X=X=H=H=p=I=c=c=c=$=+;@;g*#;i*$;%;&;q=Q&R&R&*;=;-;0&X%X%'&'&3%w&4%%%%%o%&%n$o$a&p%;;>;.$.$B#+$^&;#;#q$F@u+u+G@ o#S#,;`@';);+#@#!;~;Y#n-`#F% ", +" {;];{; ;J-p-p-L-L-)-L-r-G=!-H=a=^;a=b=(=/;(;E*E*g*h*_;:;#;-*Q&P&<;[;%-};,&K*X%X%X%l%4%4%4%%%$%&%&%Y%o$|;1;}$}$.$B#|$1$0#;#;#F@F@u+u+ o#2;)$}#A%m={$4&3;/$H-4;5;F% ", +" 6;7;7;{;8; ;J-9;o-o-7-L-r-X=X=Y=H=H=I=I=0;a;(=:=:=g*b;c;d;G*j*-*-*e;f;g;h;8&,&X%X%X%'&G%n%n%4%o%%%M$&%n$i;j;o$[$}$}$+$0#1$0#-#-#E@F@ d$^%/%(%s#k;u#l;m;Z-`-l$1% ", +" 6;n;7;7;o;];];8;J-p;o-6-7-L-r-G=~-H=H=a=q;r;c=s;(=_=_=t;u;v;i*i*-*-*P&w;x;y;z;,&>&K*X%X%G%G%n%4%4%)&%%&%7*A;M$o$[$~&.$|$|$B#+$0#-#q$ B;C;D;E;U#);*&F;G;L&h%H;J$K$ ", +" I;J;K;6;6;7;L;{; ;M;J-o-o-7-6-L-r-X=X=G=N;O;I=I=0-$=:=_=P;Q;R;g*i*j*-*-*S;T;U;V;W;X;Y;,&W%X%'&3%G%w&$%%%Z;`;M$n$M$p%p$~&}$|$|$|$0#-# R# >.>+>F-1#{$4&^$@>($E%I-F% ", +" #>$>%>I;K;&>7;o;{;];]; ;p;*>o-.;L-L-r-G==>->;>^;a=I=0-s;>>,>'>)>%=!><=G*H*-*~>{>]>^>/>(>_>:><>[>}>|>1>4%2>3>L$&%M$n$n$p$4>}$}$|$+$B# d$p#/%5>_%:%i$j$w#Z-U%|%1%6> ", +" #>J;J;7>K;&>K;7;o;L;];8> ;9>o-o-7-7-L-0>a>b>H=p=a=I=c>b=c=d>e>f>t;g*#;<=j*-*-*P&4*R&g>h>i>j>k>l>z-m>n>o>p>&-$%&%Y%M$n$n$n$4>[$.$B# C;D;B$C$D$+#@#W#f*Y#n-j%F% ", +" q>r>$>s>J;J;&>&>t>6;u>u>{;8;J-K-p;o-6-L-v>w>x>!-H=I=y>I=c=c=z>A>B>C>g*g*#;<=i*-*P&4*4*4*8&S&8&>&0&0&D>E>F>4%4%$%$%%%o%M$M$n$p%}$~& X@G>y%+>~$H>3&4&3;.%+%E%I- $ ", +" I>q>J>K>$>$>J;L>I;6;6;7;7;{;];{;J-p;o-6-M>N>8-L-!-!-H=H=p=a=I=c=O>P>Q>g*g*g*g*i*-*-*-*P&Q&4*8&8&,&>&W%R>(>G%G%4%4%$%$%%%&%n$p%n$o$ R#S>/%r#_%:%<*T>m;T%U%l$1%<$ ", +" U>V>W>q>X>Y>r>Z>J;L>&>6;7;6;7;];];];J-9>`> ,q-L-L-G=G=G=H=;>a=I=a=.,+,@,#,g*g*#;i*i*i*H*;*4*4*R&8&8&>&>&$,%,'&'&G%w&4%$%)&o%o%M$n$ r@Z@&,C$&&E$J&-&f*Y#I$j%k% ", +" *,*,U>V>=,K>K>Y>Y>J;J;J;I;&>6;o;7;];8>8;-,;,9;7->,L-X=X=X=H=H=H=a=0-,,',),!,~,%=g*h*i*<=H*-*P&Q&4*J*8&8&{,],X%X%'&G%m%m%$%$%)&%%M$ X@}&y%z%A%1#^,$* %/,($_$#%<$ ", +" (,_,*,:,<,[,q>W>J>},Y>s>L>I;K;6;7;7;o;o;|,1,2,p;p-o-L-L-r-G=!-H=H=^;I=0-3,4,5,6,:=d=#;g*i*<=-*-*P&Q&[=R&7,8,k*K*0&'&T&l%3%4%4%%%%% '$9,(*0,R%n&a,p&q&r&U%|%1%F% ", +" b,(,c,_,*,U>W>[,q>q>q>X>J;J;J;7>%>6;7;7;o;d,e,8>J-9;p;p-L-r-8-X=!-H=p=a=^;I=f,+,g,h,b;g*h*F*F*<=<=-*I*4*W;i,8&u&S&0&X%X%'&3%l%n%4% r@j,k,l,&&m,J&G$g%n,i%j%k% ", +" o,b,p,q,_,*,<,r,:,I>q>X>q>},},J;I;I;K;n;7;s,t,u,];8;J-9>o-o-7-L-8-G=Y=!-H=a=I=v,w,x,5,y,z,g*g*h*i*G*-*-*}=A,8&R&8&S&0&0&X%X%G%G%B, R#x*y*z%A%2&C,$*U=.%+%D*#%<$ ", +" D,E,b,b,F,(,_,*,<,V>W>V>q>X>Y>Y>Y>$>G,I;K;H,I,J,H,{;];J-9>9;p-o-L-L-L-G=X=!-;>^;I=~-K,L,M,N,O,P,Q,#,R,G*S,x-H*Q&[=[=8&S&,&,&X%X%X% '$S>Y*_*m&:%a,<%k$r&U%T,U,F% ", +" V,W,X,Y,b,F,(,(,_,r,<,*,V>W>q>X>r>},Y>s>I;I;&>Z,`,7;o;{;M;J-J-9;o-o-q- '.'+'@'#'H=Z=0-I=$'%'&'*'='-'M,;'>','''-*Q&Q&J*8&S&S&,&0&X%X% H&c%&,f$&&m,e*)'!'h%^=~'A# ", +" {']'X,]'Y,b,^'^'c,q,_,*,:,<,W>q>K>Y>},$>J;J;/'('_'7;u>];];{;J-p;p-:'<'['}'|'1'2'3'^;p=I=b=c=(=c=_=d=t;4'5'6'j*-*;*7'4*t&R&8&S&8'9& 9'0'y%+>z*#*^,$*U=0=&*6&a'F% ", +" b'c'V,W,X,Y,E,b,F,^'(,_,*,*,U>U>W>W>X>X>Y>$>J;d'e'K;&>7;7;];];J-J-f'g'p-p-L-h'i'j'2'k'H=H=I=c=c=(=_=_=g*l')><=i*3*-*q=P&Q&t&8&S&S& '$/*(*l&m&:%a,[*m'r&U%n'o=<$ ", +" o'p'q'q'{'V,X,E,Y,^'F,c,c,_,*,:,:,V>V>W>q>},Y>r's't'I;&>&>7;o;u'8>v'w'9;9;p-.;L-x'y'z'=>H=p=a=0-c=c=c=:=A'+;J=g*<=G*G*-*7'Q&8&R&8& d$j,B={=B'h$e*G$]=h%C'z#k% ", +" D'p'E'F'q'{'V,W,W,o,o,^'b,(,c,*,*,:,:,W>W>q>X>Y>G'('H'I;K;&>&>6;I'J' ;J-9>9;*>p-7-L-i'z'K'H=H=y>Z=I=c=c=L'M':=g*g*g*<=3*H*-*P&4*4* D-x*y*N'~$T=B*B%W#/,&*O'`# $ ", +" P'Q'o'o'E'R'R'q'{'W,W,Y,o,o,F,c,_,_,r,:,V>V>W>q>r>S'('T'I;I;K;6;U'V'o;];]; ;J-p;p;7-7-W'X'Y'x>G=H=y>p=0-0-Z'`'$=a-:=g* )h*<=G*-*-*I* .)+)(*Z*`* =o&;-}*r&6#T,@)9# ", +" #)$)P'%)D'p'p'c'c'q'{'V,X,]'o,b,(,c,_,_,r,:,V>[,W>q>&)*)=)-);)>),)')&>7;o;{;];J-J-p;p-p-))!)L-s-!-H=H=p=I=~){)c=_=:=:=g*g*F*#;i*3*-* r@])~=f$B'D=u#G$w#x#F=z#k% ", +" ^)/)()P'Q'D'_)p'F'q'{'{'W,Y,o,b,b,F,(,(,*,*,*,U>V>V>:)<)[)})|)1)2)&>n;7;7;7;{;8;J-J-p;3)4)5))-8-r-G=H=p=6)7)t-0-c=$=:=_=E*g*#;<=G*8)S#9)0)9=#*a)F;U=~;&*D*`#F% ", +" ^)b)b)()%)P'D'D'E'F'c'R'c){'X,]'Y,o,b,p,^'c,*,*,<,:,U>q>X>},},},$>J;%>K;H,&>7;d)]; ;8;J-e)f)g)q-L-L-r-G=:'h)^;a=c=b=c=i)_=:=g*h*F*j)k)l=}#m&m={$l)^$@>H-#=m)F% ", +" n)o)b)b)b)#)P'#)D'D'_)o'c'q'q'{']'Y,o,o,^'p,c,_,_,r,:,U>W>W>q>Y>Y>},J;J;7>%>6;6;7;{;{;{;J-g)p)q)q-q-L-r-L-r)s)H=a=I=a=c=c=(=_=E*t)r@])~=|-B'1-u#j$Y-M&^=z#m$ ", +" n)n)o)o)^)b)()()$)%)D'p'o'E'c'q'q'W,X,E,Y,o,b,(,p,_,_,r,:,:,[,q>K>Y>},$>$>I;I;&>K;6;7;u' ;J-u)v)w)p-6-q-)-x)y)H=!-H=p=I=I=0->>(=z)Y@Z@`@ #.#+#A)U=0=&*n-=*B) ", +" n)n)n)C)o)b)()b)()Q'Q'D'D)E'b'b'c){'V,W,Y,Y,o,F,F,c,_,*,<,:,V>[,K>K>Y>E)$>J;L>I;&>F)6;7;];];G)H)I)J)6-7-K)I)G=!-x>H=H=a=I=0-c=L)<#(*}#|#1#o&;-^$@>H-#=o=<$ ", +" M)N)N)N)O)P)^)^)b)b)P'%)Q'D'o'o'F'q'q'q'W,X,X,o,b,F,p,(,*,_,*,V>:,q>q>J>r>},$>J;J;%>H,6;7;o;{;Q)R)S)T)U)V)W)X)L-G=X=!-H=p=a=Y)c*p#B=r#s#1-Z)2-m;x#`-5-m$ ", +" `)M)M) !.!n)P)o)O)O)b)()()Q'Q'o'D'o'p'q'q'{'V,]'Y,o,b,b,(,_,_,_,U>V>V>W>q>q>r>},$>$>7>&>&>7;7;o;u'+!@!W)#!$!%!7-L-L-s-G=G=H=&!S#9)`@ #D$+#F;U=0=;&H;`#'- ", +" *!`)=!-!-!n)n)n)P);!^)()#)#)P'%)Q'_)F'c'R'q']'W,]'E,o,b,b,(,(,_,>!<,:,V>q>q>X>Y>},J;J;J;I;&>7;7;L;u',!'!)!!!9;o-q-L-r-G=G=~!<#)$!${!m=]!l)^$/$H-_$m)F% ", +" ^!/!*!`)-!(!.!N)n)n)o)o)b)()()#)P'D'o'E'p'b'q'q'W,V,W,Y,o,F,p,p,_,_,>!:,<,W>q>q>J>Y>$>J;L>L>K;6;t>7;{;{;_!:!B'1-u#2-m;x#F=}!m$ ", +" |!1!2!`)`)=!-!.!n)C)3!O)4!o)b)b)P'#)D'D'o'p'b'q'q'{'W,X,E,5!b,(,p,q,_,*,r,:,W>W>q>Y>X>Y>$>J;I;K;6;7;o;u'u'];];J-p;p-o-&!Y@Z@E;U#D$+#J&U=6!Y#I$`#k% ", +" 7!1!|!/!/!`)`)(!N).!N)n)n)O)o)4!b)b)%)#)D'D'o'b'b'c'{'{'{'Y,Y,o,b,8!^'c,_,*,<,:,V>q>9!Y>},J;J;J;%>&>H,6;7;];]; ;8;J-*>0!}&X$Y$~$1#2#a!C%.%($E%5;b! ", +" c!7!d!e!e!f!f!`)`)g!-!n).!n)P)o)4!^)b)#)#)h!Q'D'D'b'b'c'q'{'i!]'o,b,b,^'c,_,*,<,<,U>j!V>q>r>},$>$>J;J;K;K;7;u>u'];];k!d$l!/%5>s#m!<*<%m;Z-`-|%m$ ", +" n!c!o!e!p!e!/!`)`)`)=!.!q!n)n)3!P)o)b)b)#)%)Q'Q'o'o'o'b'c'{'r!]']'o,b,b,^'c,s!*,*,U><,W>W>q>r>},J;$>J;%>&> C;D;B$t!.#+#F;G$f*;&I$`#B) ", +" u!n!n!o!7!e!p!^!f!f!2!(!.!-! !n)O)P)o)b)^)b)b)#)v!D'p'F'p'b'q'q'W,W,D,b,b,b,p,c,_,*,<,<,U> X@<#w!Y$A%1#Z$4&x!.%($E%I- $ ", +" y!u!u!u!7!7!z!e!^!f!/!*!`)(!.!N)N)n)n)A!o)b)b)#)()P'%)Q'_)p'o'q'q'q'{'W,E,Y,b,^' '$S>/%B!_%:%i$<%C!D!U%l$1%F% ", +" E!F!E!u!G!H!c!d!e!I!1!/!J!`)`)-!.!n)N)n)o)o)K!4!/)#)Q'Q'o'o'p'p'c'q'q' S#D;&,U#D$*&f%G$L&Y#N&J$k% ", +" L!M!N!F!O!u!G!P!7!o!e!e!/!J!f!`)`).!.!q!n)Q!n)K!b)b)#)P'P'Q'D'D' R!S!l=z%A%2&^,a!x!.%+%T!#% $ ", +" U!N!L!E!y!V!u!c!7!c!e!e!e!1!f!W!`)X!=!.!n)n)P)O)K!b)b) Y!Z!`!5>B'C, ~<%}*r&U%l$1%F% ", +" .~+~U!N!@~E!u!O!G!c!c!#~7!e!1!^!f!`)`)X!.!-!N)n) $~%~&~U#*~=~-~W#f*h%D*;~O& ", +" >~.~,~.~L!'~'~F!u!n!G!H!#~o!e!1!|!f!`)`) )~!~~~{~]~^~/~C%x#(~_~:~ $ ", +" <~[~[~.~.~L!L!L!E!V!y!u!P!7!o!e!e! }~|~1~2~3~4~5~6~7~8~9~0~a~ ", +" b~[~[~c~,~+~U!L!F!F!F!u!n! d~e~f~g~h~i~j~k~l~m~n~o~ ", +" p~p~[~>~c~.~.~L!L!M! q~r~s~t~u~v~w~x~y~z~A~B~ ", +" C~b~b~[~>~D~ E~F~G~H~I~J~K~L~M~N~O~ ", +" P~b~ e~Q~R~S~T~U~V~W~X~Y~ ", +" Z~`~ {.{+{@{#{${%{ ", +" &{2~*{={J~-{;{>{ ", +" ,{'{){j~!{W~ ", +" ~{{{]{^{/{({ ", +" _{:{<{-{[{ ", +" }{|{1{2{ ", +" 3{4{5{ ", +" 6{7{ ", +" 8{ ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" "}; diff --git a/src/Mod/Ship/Icons/ReparametrizeIco.png b/src/Mod/Ship/Icons/ReparametrizeIco.png new file mode 100644 index 0000000000..0e75e41cca Binary files /dev/null and b/src/Mod/Ship/Icons/ReparametrizeIco.png differ diff --git a/src/Mod/Ship/Icons/ReparametrizeIco.xcf b/src/Mod/Ship/Icons/ReparametrizeIco.xcf new file mode 100644 index 0000000000..b370b06b00 Binary files /dev/null and b/src/Mod/Ship/Icons/ReparametrizeIco.xcf differ diff --git a/src/Mod/Ship/Icons/ReparametrizeIco.xpm b/src/Mod/Ship/Icons/ReparametrizeIco.xpm new file mode 100644 index 0000000000..690b938941 --- /dev/null +++ b/src/Mod/Ship/Icons/ReparametrizeIco.xpm @@ -0,0 +1,1737 @@ +/* XPM */ +static char * ReparametrizeIco_xpm[] = { +"128 128 1606 2", +" c None", +". c #000000", +"+ c #B50000", +"@ c #6C0000", +"# c #640000", +"$ c #FF0000", +"% c #8E0000", +"& c #8C0000", +"* c #630000", +"= c #CE0000", +"- c #DD0000", +"; c #A20000", +"> c #6A0000", +", c #7C0000", +"' c #860000", +") c #AA0000", +"! c #D50000", +"~ c #000001", +"{ c #00000B", +"] c #00000A", +"^ c #C80033", +"/ c #B5003A", +"( c #09009C", +"_ c #090099", +": c #090097", +"< c #090098", +"[ c #070085", +"} c #04004F", +"| c #040054", +"1 c #03000E", +"2 c #020000", +"3 c #0B0028", +"4 c #090027", +"5 c #14005B", +"6 c #1900B0", +"7 c #1500B2", +"8 c #1000B7", +"9 c #0C00BE", +"0 c #0800AC", +"a c #0700B9", +"b c #0600D5", +"c c #0400E0", +"d c #0200E9", +"e c #0100F2", +"f c #0000FB", +"g c #0000FD", +"h c #0000FE", +"i c #0000FC", +"j c #0000F8", +"k c #0000F3", +"l c #0100EC", +"m c #0100E5", +"n c #0200DF", +"o c #0300D9", +"p c #0400D6", +"q c #0400D3", +"r c #0500D3", +"s c #0400D4", +"t c #0400D9", +"u c #0400E2", +"v c #0400E7", +"w c #0300EB", +"x c #0300ED", +"y c #0300E7", +"z c #0300E2", +"A c #0300DC", +"B c #0300D5", +"C c #0300CF", +"D c #0200C7", +"E c #0200B1", +"F c #0200AE", +"G c #0100C3", +"H c #0200BC", +"I c #0400AD", +"J c #07009B", +"K c #0C008D", +"L c #BA0018", +"M c #E50010", +"N c #450044", +"O c #9E004F", +"P c #3E0070", +"Q c #0800B3", +"R c #0500C3", +"S c #0300D0", +"T c #0100DD", +"U c #0000EA", +"V c #0000F6", +"W c #0000FF", +"X c #0000F7", +"Y c #0000F5", +"Z c #0000F2", +"` c #0000EE", +" . c #0000E6", +".. c #0000E1", +"+. c #0000DE", +"@. c #0000DA", +"#. c #0000D6", +"$. c #0800CE", +"%. c #3700C6", +"&. c #2300BC", +"*. c #0000BB", +"=. c #0100B6", +"-. c #0200AF", +";. c #0300AD", +">. c #0300AE", +",. c #0300AF", +"'. c #0300A9", +"). c #0300A4", +"!. c #0300AC", +"~. c #0300B2", +"{. c #0400B0", +"]. c #0400AA", +"^. c #0400A5", +"/. c #0400A8", +"(. c #0400B3", +"_. c #0400BC", +":. c #0400C5", +"<. c #0300D1", +"[. c #0200E5", +"}. c #0200FB", +"|. c #0100FD", +"1. c #0000F4", +"2. c #0100E7", +"3. c #0100E3", +"4. c #0200DD", +"5. c #3300C8", +"6. c #4D00A4", +"7. c #0A00A6", +"8. c #0C00D8", +"9. c #0600E0", +"0. c #0100E1", +"a. c #0000E5", +"b. c #0000EC", +"c. c #0600EF", +"d. c #0700F7", +"e. c #0000FA", +"f. c #0000E9", +"g. c #0200DC", +"h. c #0500CD", +"i. c #0700BA", +"j. c #0800A7", +"k. c #0A0094", +"l. c #0C0085", +"m. c #0E0076", +"n. c #0F0069", +"o. c #10005C", +"p. c #0F004C", +"q. c #0B002F", +"r. c #120035", +"s. c #600000", +"t. c #800000", +"u. c #06001F", +"v. c #040014", +"w. c #08001E", +"x. c #04004B", +"y. c #020042", +"z. c #01005D", +"A. c #000086", +"B. c #010088", +"C. c #03008E", +"D. c #040097", +"E. c #0500A5", +"F. c #0700B5", +"G. c #0A00C4", +"H. c #2800D0", +"I. c #1100E4", +"J. c #0200E4", +"K. c #070084", +"L. c #0700C3", +"M. c #0100E4", +"N. c #0100FE", +"O. c #0100E2", +"P. c #0400C1", +"Q. c #3600A0", +"R. c #6B0083", +"S. c #190072", +"T. c #070068", +"U. c #06005A", +"V. c #05004D", +"W. c #000003", +"X. c #740000", +"Y. c #700000", +"Z. c #3F0039", +"`. c #C50033", +" + c #59005A", +".+ c #070081", +"++ c #0700B3", +"@+ c #0300D2", +"#+ c #0200E7", +"$+ c #0100F3", +"%+ c #0100EE", +"&+ c #0400CF", +"*+ c #0600AC", +"=+ c #090088", +"-+ c #090067", +";+ c #090051", +">+ c #070046", +",+ c #05003D", +"'+ c #040034", +")+ c #C40010", +"!+ c #F2000A", +"~+ c #620000", +"{+ c #7D0006", +"]+ c #0100E8", +"^+ c #0400D5", +"/+ c #0800B2", +"(+ c #09008A", +"_+ c #070072", +":+ c #06005E", +"<+ c #06004F", +"[+ c #FD0000", +"}+ c #EF0000", +"|+ c #9B0000", +"1+ c #080098", +"2+ c #0700BB", +"3+ c #06008F", +"4+ c #050065", +"5+ c #BD0000", +"6+ c #570000", +"7+ c #9A0000", +"8+ c #D70000", +"9+ c #820000", +"0+ c #010000", +"a+ c #F90000", +"b+ c #FB0000", +"c+ c #B30000", +"d+ c #090000", +"e+ c #DC0000", +"f+ c #0C0000", +"g+ c #7E0000", +"h+ c #470000", +"i+ c #BF0000", +"j+ c #900000", +"k+ c #2B0000", +"l+ c #A80000", +"m+ c #B20000", +"n+ c #2C0000", +"o+ c #950000", +"p+ c #5F0000", +"q+ c #890000", +"r+ c #670000", +"s+ c #6E0000", +"t+ c #780000", +"u+ c #690000", +"v+ c #6F0000", +"w+ c #3F0000", +"x+ c #550000", +"y+ c #350000", +"z+ c #4B0000", +"A+ c #990000", +"B+ c #7F0000", +"C+ c #540000", +"D+ c #4A0000", +"E+ c #A60000", +"F+ c #5C0000", +"G+ c #C80000", +"H+ c #5D0000", +"I+ c #D10000", +"J+ c #DB0000", +"K+ c #E40000", +"L+ c #04000C", +"M+ c #03000F", +"N+ c #000002", +"O+ c #BF0030", +"P+ c #C40037", +"Q+ c #0B00AC", +"R+ c #0B00A7", +"S+ c #0A00A7", +"T+ c #0A00A8", +"U+ c #0900A9", +"V+ c #070086", +"W+ c #06008D", +"X+ c #0600AF", +"Y+ c #0600B1", +"Z+ c #0500B3", +"`+ c #0400B5", +" @ c #0400B6", +".@ c #0300B8", +"+@ c #0300BA", +"@@ c #0300BD", +"#@ c #0100C0", +"$@ c #000091", +"%@ c #000092", +"&@ c #0000C5", +"*@ c #0000C1", +"=@ c #0200B3", +"-@ c #0500A8", +";@ c #06009C", +">@ c #080091", +",@ c #0B008A", +"'@ c #980041", +")@ c #C10032", +"!@ c #0B005F", +"~@ c #0B0071", +"{@ c #0E00B0", +"]@ c #0900C8", +"^@ c #0700D3", +"/@ c #0500DE", +"(@ c #0200EA", +"_@ c #0100FC", +":@ c #0100F8", +"<@ c #0200F2", +"[@ c #0200EB", +"}@ c #0300E4", +"|@ c #0300DE", +"1@ c #0300DA", +"2@ c #0300D7", +"3@ c #0300D6", +"4@ c #0300D8", +"5@ c #0200DB", +"6@ c #0200E0", +"7@ c #0100E6", +"8@ c #1900DE", +"9@ c #1F00DC", +"0@ c #0100DC", +"a@ c #0200CC", +"b@ c #0400BD", +"c@ c #0B00AE", +"d@ c #0E00A5", +"e@ c #0E008C", +"f@ c #080040", +"g@ c #08005C", +"h@ c #0A00A2", +"i@ c #0800B7", +"j@ c #0500C8", +"k@ c #0200D9", +"l@ c #0000F1", +"m@ c #0000ED", +"n@ c #0000E8", +"o@ c #0000E4", +"p@ c #0000DB", +"q@ c #0100D2", +"r@ c #3400CA", +"s@ c #3A00C1", +"t@ c #0000BC", +"u@ c #0000B7", +"v@ c #0100B2", +"w@ c #0100AD", +"x@ c #0300A5", +"y@ c #04009C", +"z@ c #050096", +"A@ c #06008E", +"B@ c #070088", +"C@ c #060061", +"D@ c #06005F", +"E@ c #090081", +"F@ c #0A007F", +"G@ c #09007E", +"H@ c #08007E", +"I@ c #07007E", +"J@ c #06007D", +"K@ c #04007D", +"L@ c #04007E", +"M@ c #020065", +"N@ c #010068", +"O@ c #000088", +"P@ c #010089", +"Q@ c #01008D", +"R@ c #030092", +"S@ c #030097", +"T@ c #04009E", +"U@ c #4C00A1", +"V@ c #4400AF", +"W@ c #0800BD", +"X@ c #0800C1", +"Y@ c #0600C7", +"Z@ c #0500CA", +"`@ c #0000EB", +" # c #C10009", +".# c #C4002C", +"+# c #17008D", +"@# c #0800BF", +"## c #0200D8", +"$# c #0000DF", +"%# c #0400CD", +"&# c #0600B9", +"*# c #0700A5", +"=# c #090091", +"-# c #0A0076", +";# c #0C0060", +"># c #0F0060", +",# c #110052", +"'# c #120044", +")# c #140037", +"!# c #ED0000", +"~# c #DC0019", +"{# c #DC001E", +"]# c #070075", +"^# c #090079", +"/# c #0B007C", +"(# c #0C0084", +"_# c #09009E", +":# c #0400B4", +"<# c #0E00CB", +"[# c #0500DD", +"}# c #2C00C8", +"|# c #1A00E2", +"1# c #0000F0", +"2# c #060098", +"3# c #070079", +"4# c #080071", +"5# c #080060", +"6# c #070053", +"7# c #1000CF", +"8# c #0500D1", +"9# c #0700F4", +"0# c #3A00BA", +"a# c #09008C", +"b# c #05004A", +"c# c #01002F", +"d# c #000006", +"e# c #E20000", +"f# c #0C0081", +"g# c #0600B4", +"h# c #080053", +"i# c #BF002F", +"j# c #DD001D", +"k# c #E00000", +"l# c #080079", +"m# c #080064", +"n# c #060048", +"o# c #DF0000", +"p# c #E60000", +"q# c #F70000", +"r# c #E50000", +"s# c #040000", +"t# c #F50000", +"u# c #030000", +"v# c #EB0000", +"w# c #050000", +"x# c #D20000", +"y# c #C30000", +"z# c #9D0000", +"A# c #760000", +"B# c #8A0000", +"C# c #500000", +"D# c #4D0000", +"E# c #5E0000", +"F# c #400000", +"G# c #3D0000", +"H# c #720000", +"I# c #520000", +"J# c #4F0000", +"K# c #510000", +"L# c #980000", +"M# c #750000", +"N# c #8D0000", +"O# c #B00000", +"P# c #610000", +"Q# c #850000", +"R# c #6D0000", +"S# c #D90000", +"T# c #580000", +"U# c #5B0000", +"V# c #F30000", +"W# c #680000", +"X# c #050010", +"Y# c #03000D", +"Z# c #000004", +"`# c #620038", +" $ c #C20039", +".$ c #45004F", +"+$ c #0A00AE", +"@$ c #0A00AA", +"#$ c #0A00A9", +"$$ c #0900AA", +"%$ c #0800A9", +"&$ c #070095", +"*$ c #050086", +"=$ c #0600AD", +"-$ c #0500AE", +";$ c #0400B1", +">$ c #0300B3", +",$ c #0300B6", +"'$ c #0200BE", +")$ c #0100C4", +"!$ c #00009B", +"~$ c #000089", +"{$ c #0100A1", +"]$ c #0300B1", +"^$ c #0500A3", +"/$ c #080095", +"($ c #0C007F", +"_$ c #A50024", +":$ c #DF0019", +"<$ c #010005", +"[$ c #0D0071", +"}$ c #0B0078", +"|$ c #0D00AA", +"1$ c #0B00C0", +"2$ c #0900CA", +"3$ c #0700D5", +"4$ c #0500E0", +"5$ c #0100F5", +"6$ c #0200FC", +"7$ c #0200EF", +"8$ c #0200E1", +"9$ c #0100E9", +"0$ c #0100EA", +"a$ c #1800D5", +"b$ c #2A00D2", +"c$ c #0800D7", +"d$ c #0200D0", +"e$ c #0300BF", +"f$ c #0F00A4", +"g$ c #120099", +"h$ c #08005D", +"i$ c #070074", +"j$ c #0700AF", +"k$ c #0500C6", +"l$ c #0000EF", +"m$ c #0000D9", +"n$ c #0000D1", +"o$ c #0800CA", +"p$ c #3D00C1", +"q$ c #2700BC", +"r$ c #0000B3", +"s$ c #0100AC", +"t$ c #0200A5", +"u$ c #03009D", +"v$ c #050097", +"w$ c #060091", +"x$ c #060064", +"y$ c #070087", +"z$ c #060086", +"A$ c #050084", +"B$ c #040084", +"C$ c #040085", +"D$ c #030087", +"E$ c #020083", +"F$ c #010070", +"G$ c #010078", +"H$ c #030090", +"I$ c #04009D", +"J$ c #0600AE", +"K$ c #0600B8", +"L$ c #1A00C1", +"M$ c #2900CF", +"N$ c #0F00D3", +"O$ c #0500D2", +"P$ c #0100DF", +"Q$ c #0200D1", +"R$ c #B8002E", +"S$ c #970057", +"T$ c #0900BD", +"U$ c #0000F9", +"V$ c #0200D4", +"W$ c #0400C2", +"X$ c #08009C", +"Y$ c #0C0073", +"Z$ c #0D0059", +"`$ c #0E004E", +" % c #11004D", +".% c #130041", +"+% c #130035", +"@% c #50002F", +"#% c #D40028", +"$% c #64002F", +"%% c #07007D", +"&% c #07007F", +"*% c #090083", +"=% c #0B0085", +"-% c #0B0093", +";% c #0700B1", +">% c #080096", +",% c #0F00D4", +"'% c #0600DD", +")% c #0100E0", +"!% c #1700DE", +"~% c #0900F5", +"{% c #0400C4", +"]% c #0600A4", +"^% c #070080", +"/% c #07005E", +"(% c #060055", +"_% c #070054", +":% c #A30000", +"<% c #090065", +"[% c #0500D0", +"}% c #0100EB", +"|% c #2600B6", +"1% c #6B0085", +"2% c #1F005F", +"3% c #050047", +"4% c #02002E", +"5% c #000007", +"6% c #0600B2", +"7% c #09007C", +"8% c #090055", +"9% c #060043", +"0% c #650022", +"a% c #E90010", +"b% c #5A000A", +"c% c #08007A", +"d% c #090080", +"e% c #070062", +"f% c #D99214", +"g% c #D99215", +"h% c #DD9516", +"i% c #DC9416", +"j% c #DC9315", +"k% c #D89014", +"l% c #D79014", +"m% c #DD9415", +"n% c #DE9516", +"o% c #E59A16", +"p% c #D18C12", +"q% c #DB9315", +"r% c #D68F13", +"s% c #D68F14", +"t% c #DA9115", +"u% c #DC9314", +"v% c #D89114", +"w% c #B87B12", +"x% c #A46C0C", +"y% c #B37407", +"z% c #312001", +"A% c #744A00", +"B% c #B47506", +"C% c #DB9215", +"D% c #DD9416", +"E% c #D89013", +"F% c #D78F13", +"G% c #D48D13", +"H% c #D18B13", +"I% c #D38C12", +"J% c #C58411", +"K% c #B0750F", +"L% c #B4760B", +"M% c #593A05", +"N% c #9E6603", +"O% c #593800", +"P% c #251700", +"Q% c #B37202", +"R% c #563701", +"S% c #6E4701", +"T% c #AC6F04", +"U% c #D78F12", +"V% c #D58E13", +"W% c #D79013", +"X% c #D18B11", +"Y% c #BF7F0F", +"Z% c #B2760D", +"`% c #BB7B0B", +" & c #624107", +".& c #B67507", +"+& c #6C4602", +"@& c #1B1100", +"#& c #B17102", +"$& c #352100", +"%& c #7C5002", +"&& c #9B6403", +"*& c #714902", +"=& c #A86B03", +"-& c #A76C03", +";& c #A66A02", +">& c #9C6301", +",& c #D18B12", +"'& c #CF8910", +")& c #CF8911", +"!& c #D38D11", +"~& c #E19612", +"{& c #CE8A12", +"]& c #C18110", +"^& c #C0800E", +"/& c #BE7D0C", +"(& c #573B07", +"_& c #BF7D09", +":& c #7B5005", +"<& c #3B2701", +"[& c #B27304", +"}& c #271901", +"|& c #9C6403", +"1& c #6C4502", +"2& c #B37304", +"3& c #4B3102", +"4& c #674202", +"5& c #A76B03", +"6& c #AD7003", +"7& c #A36803", +"8& c #A26803", +"9& c #A26802", +"0& c #9D6400", +"a& c #C6830E", +"b& c #DC9415", +"c& c #C78410", +"d& c #CB8610", +"e& c #CE8910", +"f& c #D88F12", +"g& c #CE8911", +"h& c #D38C11", +"i& c #C1800E", +"j& c #5C3D07", +"k& c #C37F09", +"l& c #6D4706", +"m& c #6B4604", +"n& c #BB7906", +"o& c #A96D05", +"p& c #9C6504", +"q& c #704903", +"r& c #AE7105", +"s& c #9D6505", +"t& c #A76B05", +"u& c #A86C05", +"v& c #AB6E04", +"w& c #AF7004", +"x& c #5E3C02", +"y& c #412A01", +"z& c #A36904", +"A& c #A56A03", +"B& c #A86C03", +"C& c #A46A02", +"D& c #966001", +"E& c #AA7009", +"F& c #DF9617", +"G& c #DC9216", +"H& c #C8830F", +"I& c #C9850E", +"J& c #C9860F", +"K& c #C98610", +"L& c #DC9211", +"M& c #CC880F", +"N& c #C2810F", +"O& c #92610B", +"P& c #C7830B", +"Q& c #422B03", +"R& c #845505", +"S& c #BC7907", +"T& c #AE7107", +"U& c #734B04", +"V& c #4C3103", +"W& c #AE7106", +"X& c #A26906", +"Y& c #AB6F05", +"Z& c #AA6E05", +"`& c #A86D05", +" * c #A86B04", +".* c #AB6F04", +"+* c #9B6303", +"@* c #905C03", +"#* c #A46903", +"$* c #9D6503", +"%* c #905D03", +"&* c #835503", +"** c #764B01", +"=* c #815304", +"-* c #DF9616", +";* c #C5830E", +">* c #C6820E", +",* c #C6830F", +"'* c #CD890F", +")* c #C7840F", +"!* c #C4830F", +"~* c #BC7D0D", +"{* c #CD870D", +"]* c #412B05", +"^* c #996307", +"/* c #B17306", +"(* c #100A00", +"_* c #B27307", +":* c #5B3B04", +"<* c #6D4705", +"[* c #B97707", +"}* c #8E5C05", +"|* c #8A5A05", +"1* c #3D2802", +"2* c #A16905", +"3* c #AD7106", +"4* c #AC6F06", +"5* c #AB6E05", +"6* c #AA6F05", +"7* c #AA6E04", +"8* c #A66C05", +"9* c #9D6604", +"0* c #915D03", +"a* c #865703", +"b* c #7B4E03", +"c* c #774D03", +"d* c #784D02", +"e* c #794E02", +"f* c #7A4E02", +"g* c #724800", +"h* c #D58E14", +"i* c #C5820D", +"j* c #C3810D", +"k* c #C2800E", +"l* c #BA7C0D", +"m* c #CB860E", +"n* c #704A07", +"o* c #9D6709", +"p* c #986407", +"q* c #2F1E02", +"r* c #BA7808", +"s* c #452C03", +"t* c #6E4705", +"u* c #C17D09", +"v* c #774D05", +"w* c #A46A07", +"x* c #B87808", +"y* c #BA7908", +"z* c #B47507", +"A* c #A16906", +"B* c #382502", +"C* c #956005", +"D* c #AF7106", +"E* c #AB6F06", +"F* c #A96E05", +"G* c #A46A05", +"H* c #9B6505", +"I* c #905D04", +"J* c #855603", +"K* c #7C4F03", +"L* c #784D03", +"M* c #794E03", +"N* c #7A4F03", +"O* c #7B4F02", +"P* c #7B4F03", +"Q* c #7A4F02", +"R* c #6E4600", +"S* c #DF9615", +"T* c #C3800C", +"U* c #C17F0C", +"V* c #C9840D", +"W* c #BC7C0D", +"X* c #B4760C", +"Y* c #C6830D", +"Z* c #905E0A", +"`* c #A56D0A", +" = c #8C5C08", +".= c #412B03", +"+= c #C7830A", +"@= c #452D03", +"#= c #644105", +"$= c #B77809", +"%= c #3F2903", +"&= c #956107", +"*= c #B37508", +"== c #B27408", +"-= c #B17308", +";= c #BC7B08", +">= c #B67608", +",= c #B07307", +"'= c #B07207", +")= c #B17307", +"!= c #AF7206", +"~= c #8B5B05", +"{= c #A06705", +"]= c #996305", +"^= c #8E5C04", +"/= c #855604", +"(= c #7E5103", +"_= c #7C5103", +":= c #7D5003", +"<= c #7C5003", +"[= c #714900", +"}= c #A16A09", +"|= c #E39817", +"1= c #BD7C0C", +"2= c #C07E0B", +"3= c #C9840C", +"4= c #BF7D0C", +"5= c #BF7E0C", +"6= c #8F5E09", +"7= c #AE720B", +"8= c #946109", +"9= c #3D2803", +"0= c #D18A0B", +"a= c #533604", +"b= c #5B3C05", +"c= c #B3750A", +"d= c #6E4806", +"e= c #B87809", +"f= c #A76D08", +"g= c #A66C08", +"h= c #4B3104", +"i= c #794F06", +"j= c #B47609", +"k= c #B37408", +"l= c #B47608", +"m= c #B57608", +"n= c #B57607", +"o= c #B17407", +"p= c #AC6F07", +"q= c #A36A06", +"r= c #9B6406", +"s= c #936006", +"t= c #936005", +"u= c #895805", +"v= c #805204", +"w= c #7D5103", +"x= c #7E5104", +"y= c #805203", +"z= c #7F5203", +"A= c #7C4F02", +"B= c #774D02", +"C= c #B9780B", +"D= c #C17F0B", +"E= c #B97A0B", +"F= c #C4810B", +"G= c #B9790B", +"H= c #915E09", +"I= c #9D670A", +"J= c #362303", +"K= c #D28A0C", +"L= c #563905", +"M= c #794F07", +"N= c #B3760A", +"O= c #4C3204", +"P= c #C2800A", +"Q= c #AB700A", +"R= c #A76E09", +"S= c #BB7B0A", +"T= c #B97909", +"U= c #B7780A", +"V= c #B9780A", +"W= c #BB7A09", +"X= c #BD7C09", +"Y= c #624105", +"Z= c #6B4605", +"`= c #B97808", +" - c #AD7008", +".- c #A16907", +"+- c #966206", +"@- c #8E5C06", +"#- c #855605", +"$- c #825405", +"%- c #815405", +"&- c #815404", +"*- c #805304", +"=- c #754B01", +"-- c #D99114", +";- c #B77909", +">- c #B8790A", +",- c #B9790A", +"'- c #C07E0A", +")- c #C27F0A", +"!- c #A76D0A", +"~- c #C4820C", +"{- c #9E690A", +"]- c #452D04", +"^- c #D38A0D", +"/- c #362403", +"(- c #9C660A", +"_- c #BA7B0C", +":- c #160F01", +"<- c #CF870D", +"[- c #6F4906", +"}- c #5C3C06", +"|- c #BE7D0B", +"1- c #BC7B0B", +"2- c #BB7A0A", +"3- c #B8780A", +"4- c #BA7B09", +"5- c #BB7B09", +"6- c #B47509", +"7- c #AE7208", +"8- c #A16807", +"9- c #8A5906", +"0- c #865706", +"a- c #855606", +"b- c #855706", +"c- c #855705", +"d- c #835605", +"e- c #845605", +"f- c #835505", +"g- c #825505", +"h- c #835404", +"i- c #825404", +"j- c #714901", +"k- c #C38111", +"l- c #E09716", +"m- c #B67709", +"n- c #B57709", +"o- c #BC7B09", +"p- c #BB7A0B", +"q- c #986409", +"r- c #7D5208", +"s- c #D48C0E", +"t- c #130D01", +"u- c #B7780C", +"v- c #1A1102", +"w- c #D1890E", +"x- c #8B5C09", +"y- c #A86F0B", +"z- c #CA860D", +"A- c #875808", +"B- c #BC7C0B", +"C- c #AF7309", +"D- c #A06808", +"E- c #915F08", +"F- c #895906", +"G- c #875806", +"H- c #865806", +"I- c #865606", +"J- c #845506", +"K- c #835504", +"L- c #835405", +"M- c #805303", +"N- c #744B01", +"O- c #A66D0A", +"P- c #E49917", +"Q- c #B27308", +"R- c #B57609", +"S- c #B57708", +"T- c #B37509", +"U- c #986308", +"V- c #A46B0A", +"W- c #D28A0F", +"X- c #010100", +"Y- c #C5830F", +"Z- c #99650B", +"`- c #3B2704", +" ; c #D68C0E", +".; c #553806", +"+; c #AC710C", +"@; c #C8830D", +"#; c #BF7F0D", +"$; c #C17F0D", +"%; c #C4810C", +"&; c #BD7D0C", +"*; c #A26B0A", +"=; c #503405", +"-; c #AD720A", +";; c #BD7D0B", +">; c #B5770A", +",; c #AD7109", +"'; c #9F6808", +"); c #926007", +"!; c #895A07", +"~; c #855807", +"{; c #875906", +"]; c #885806", +"^; c #855506", +"/; c #774C02", +"(; c #895B05", +"_; c #DA9215", +":; c #B97907", +"<; c #AF7207", +"[; c #B07208", +"}; c #976307", +"|; c #A76E0A", +"1; c #C9850D", +"2; c #352303", +"3; c #704B09", +"4; c #5D3E07", +"5; c #DC9111", +"6; c #462E05", +"7; c #AD720D", +"8; c #D78E0F", +"9; c #CA840E", +"0; c #C4810D", +"a; c #C27F0D", +"b; c #C2800D", +"c; c #C2800C", +"d; c #BC7C0C", +"e; c #B97A0C", +"f; c #B8790C", +"g; c #AA700A", +"h; c #9E6809", +"i; c #926009", +"j; c #8A5A07", +"k; c #875807", +"l; c #895907", +"m; c #8B5B07", +"n; c #8A5A06", +"o; c #895A06", +"p; c #885906", +"q; c #825504", +"r; c #805404", +"s; c #815203", +"t; c #7B5003", +"u; c #845604", +"v; c #8E5D06", +"w; c #DA9314", +"x; c #AE7206", +"y; c #B27306", +"z; c #B67607", +"A; c #B67708", +"B; c #946006", +"C; c #A56C09", +"D; c #BC7B0C", +"E; c #644106", +"F; c #C8840F", +"G; c #583A07", +"H; c #604008", +"I; c #E39712", +"J; c #503606", +"K; c #A9700E", +"L; c #B87B0E", +"M; c #A36C0C", +"N; c #C7830E", +"O; c #CB860F", +"P; c #CC870F", +"Q; c #BD7C0D", +"R; c #422B05", +"S; c #8D5D0A", +"T; c #C4810E", +"U; c #B4770C", +"V; c #AC720B", +"W; c #A36B0A", +"X; c #9B660A", +"Y; c #936109", +"Z; c #8D5D09", +"`; c #8A5A09", +" > c #8A5B08", +".> c #8C5C07", +"+> c #8C5B08", +"@> c #8C5B07", +"#> c #8A5B07", +"$> c #845606", +"%> c #764C02", +"&> c #7F5204", +"*> c #8B5B06", +"=> c #9B6508", +"-> c #A86E0B", +";> c #B7790E", +">> c #C98611", +",> c #DA9214", +"'> c #AC6F05", +")> c #B17304", +"!> c #B67506", +"~> c #AA6E06", +"{> c #AC7109", +"]> c #AA710B", +"^> c #674406", +"/> c #D28B10", +"(> c #614007", +"_> c #4D3406", +":> c #DF9412", +"<> c #452E06", +"[> c #9A670C", +"}> c #B6790F", +"|> c #A76F0D", +"1> c #C1810F", +"2> c #C78310", +"3> c #C8850E", +"4> c #8D5E0A", +"5> c #A36C0B", +"6> c #C8850F", +"7> c #BD7D0D", +"8> c #B2760C", +"9> c #A66D0B", +"0> c #9E680A", +"a> c #98640A", +"b> c #905E09", +"c> c #8D5C09", +"d> c #8C5C09", +"e> c #8E5D09", +"f> c #8E5E09", +"g> c #8E5D08", +"h> c #8C5D08", +"i> c #815403", +"j> c #794D02", +"k> c #825403", +"l> c #936007", +"m> c #A76E0B", +"n> c #B87A0E", +"o> c #C58310", +"p> c #CE8913", +"q> c #B07105", +"r> c #A36903", +"s> c #AF7105", +"t> c #684406", +"u> c #E09512", +"v> c #734D09", +"w> c #4F3507", +"x> c #D58F12", +"y> c #3A2705", +"z> c #B67910", +"A> c #B2770F", +"B> c #93620D", +"C> c #D48D11", +"D> c #6B4709", +"E> c #704A09", +"F> c #D68F11", +"G> c #CD880F", +"H> c #CA8710", +"I> c #CB870F", +"J> c #CA860F", +"K> c #C9850F", +"L> c #BE7E0D", +"M> c #B0740C", +"N> c #A26B0B", +"O> c #98650A", +"P> c #946209", +"Q> c #926109", +"R> c #92600A", +"S> c #915F09", +"T> c #905F09", +"U> c #8F5F09", +"V> c #8F5D08", +"W> c #8E5E08", +"X> c #8D5C08", +"Y> c #8B5B08", +"Z> c #895806", +"`> c #865705", +" , c #7D5104", +"., c #7A4E03", +"+, c #986408", +"@, c #C38110", +"#, c #D48E13", +"$, c #A76A04", +"%, c #A76C04", +"&, c #A86C04", +"*, c #A66A03", +"=, c #AE7004", +"-, c #A56B06", +";, c #794E05", +">, c #D78F10", +",, c #724B0A", +"', c #704B0B", +"), c #110B02", +"!, c #B4770F", +"~, c #644208", +"{, c #DB9213", +"], c #D08B12", +"^, c #D08B11", +"/, c #CF8A11", +"(, c #D48D12", +"_, c #D28B11", +":, c #84580B", +"<, c #563A07", +"[, c #D08A10", +"}, c #CB8710", +"|, c #CD8810", +"1, c #CE890F", +"2, c #BF7F0E", +"3, c #AF750D", +"4, c #A06B0C", +"5, c #96630A", +"6, c #935F0A", +"7, c #93610A", +"8, c #8F5E08", +"9, c #8D5D08", +"0, c #8B5A07", +"a, c #895905", +"b, c #B5770C", +"c, c #C98510", +"d, c #D38E12", +"e, c #D28D12", +"f, c #D28C13", +"g, c #A46904", +"h, c #A96E04", +"i, c #925D04", +"j, c #634106", +"k, c #A16B0F", +"l, c #D79015", +"m, c #EB9D16", +"n, c #98660E", +"o, c #4A3106", +"p, c #E29614", +"q, c #B47910", +"r, c #CF8A13", +"s, c #E49813", +"t, c #CF8B12", +"u, c #D08A12", +"v, c #D08A11", +"w, c #CE8A11", +"x, c #D28C11", +"y, c #B3770E", +"z, c #885B0B", +"A, c #BE7E0F", +"B, c #AF750E", +"C, c #A06A0C", +"D, c #95630B", +"E, c #91610B", +"F, c #94630B", +"G, c #95620B", +"H, c #95620A", +"I, c #94620A", +"J, c #94610A", +"K, c #92610A", +"L, c #916009", +"M, c #8F5D09", +"N, c #8D5B08", +"O, c #855505", +"P, c #905E08", +"Q, c #A26A09", +"R, c #B8790E", +"S, c #CA8711", +"T, c #D58E12", +"U, c #D18A12", +"V, c #935E04", +"W, c #BE7D0A", +"X, c #5B3B03", +"Y, c #BE7F0F", +"Z, c #D59014", +"`, c #F2A319", +" ' c #81560D", +".' c #8F5F0D", +"+' c #E49814", +"@' c #7C530B", +"#' c #B27710", +"$' c #402B06", +"%' c #CB8812", +"&' c #DD9314", +"*' c #D28C12", +"=' c #D38D12", +"-' c #CE8811", +";' c #C28211", +">' c #BE7F10", +",' c #BB7C0F", +"'' c #A26C0D", +")' c #97640C", +"!' c #93600C", +"~' c #93610C", +"{' c #96630B", +"]' c #98640C", +"^' c #98640B", +"/' c #96640B", +"(' c #95630A", +"_' c #94620B", +":' c #885A07", +"<' c #865707", +"[' c #9A6508", +"}' c #A86F0A", +"|' c #BA7B0E", +"1' c #CD8911", +"2' c #A16703", +"3' c #9F6601", +"4' c #C7830F", +"5' c #BD8015", +"6' c #63543B", +"7' c #F5AD32", +"8' c #533809", +"9' c #A97211", +"0' c #714C0B", +"a' c #E79A15", +"b' c #C48312", +"c' c #462F06", +"d' c #B07610", +"e' c #CF8912", +"f' c #C68411", +"g' c #BC7E10", +"h' c #B4780E", +"i' c #AA720E", +"j' c #A06B0D", +"k' c #99660C", +"l' c #96640C", +"m' c #95630C", +"n' c #98650C", +"o' c #99650C", +"p' c #97640B", +"q' c #925F09", +"r' c #885907", +"s' c #875907", +"t' c #926008", +"u' c #9C6609", +"v' c #B1740B", +"w' c #D08911", +"x' c #CC8710", +"y' c #9B6400", +"z' c #E0A640", +"A' c #B0A99B", +"B' c #CFA050", +"C' c #CD8A16", +"D' c #D18C14", +"E' c #E39816", +"F' c #D99013", +"G' c #DB9214", +"H' c #B17710", +"I' c #C28111", +"J' c #B77A0F", +"K' c #AE7310", +"L' c #A76F0E", +"M' c #A16A0D", +"N' c #9C680D", +"O' c #9A660C", +"P' c #99650D", +"Q' c #9B670C", +"R' c #8A5A08", +"S' c #865907", +"T' c #A46C0A", +"U' c #AF730B", +"V' c #B87A0D", +"W' c #BF7E0E", +"X' c #C5820E", +"Y' c #BA7A0A", +"Z' c #E9B04E", +"`' c #A18E6F", +" ) c #996F25", +".) c #EA9D18", +"+) c #DE9515", +"@) c #DE9514", +"#) c #D08B13", +"$) c #C18111", +"%) c #B37710", +"&) c #AB710F", +"*) c #A46D0F", +"=) c #A06A0E", +"-) c #9D6A0E", +";) c #9D690E", +">) c #9D680D", +",) c #9D680E", +"') c #9C670D", +")) c #895A08", +"!) c #895A09", +"~) c #AA6F0B", +"{) c #C4820D", +"]) c #C6840E", +"^) c #C7840E", +"/) c #A16702", +"() c #E69D1E", +"_) c #865E1B", +":) c #64430A", +"<) c #E89B16", +"[) c #DF9516", +"}) c #E09615", +"|) c #D08B14", +"1) c #BF8112", +"2) c #AF7510", +"3) c #9E6A0F", +"4) c #9F6B0F", +"5) c #A16B0E", +"6) c #9F6A0E", +"7) c #9E6A0D", +"8) c #9E690E", +"9) c #8C5D09", +"0) c #936009", +"a) c #9F680A", +"b) c #AE730B", +"c) c #BB7B0C", +"d) c #C27F0C", +"e) c #C3800D", +"f) c #C4800D", +"g) c #C3810E", +"h) c #A06702", +"i) c #A16602", +"j) c #D28E15", +"k) c #C08216", +"l) c #B07918", +"m) c #A67319", +"n) c #A97A2A", +"o) c #B0863D", +"p) c #B3883E", +"q) c #AB7B28", +"r) c #A26D11", +"s) c #A16C0F", +"t) c #A06B0E", +"u) c #9F6A0F", +"v) c #9E6A0E", +"w) c #9E690D", +"x) c #9B670D", +"y) c #9C670C", +"z) c #9B660C", +"A) c #976409", +"B) c #C27F0B", +"C) c #C3810C", +"D) c #C07F0C", +"E) c #C07E0D", +"F) c #9E6501", +"G) c #B87B0F", +"H) c #B17712", +"I) c #A66F10", +"J) c #A57621", +"K) c #CCB180", +"L) c #DBC7A4", +"M) c #E1CFAF", +"N) c #D9C39D", +"O) c #CCAE7A", +"P) c #BB934F", +"Q) c #AA7923", +"R) c #A26C0F", +"S) c #9D670D", +"T) c #A56D09", +"U) c #B0730A", +"V) c #BF7D0B", +"W) c #C17E0B", +"X) c #C07E0C", +"Y) c #BE7C0B", +"Z) c #A16701", +"`) c #A06909", +" ! c #A56F11", +".! c #B28332", +"+! c #D5BB8F", +"@! c #F9F5EF", +"#! c #F2EBDF", +"$! c #E7D8BF", +"%! c #D8C098", +"&! c #BC934F", +"*! c #A67218", +"=! c #A26D0F", +"-! c #9D690D", +";! c #9D680C", +">! c #96630C", +",! c #9A660B", +"'! c #A96F0A", +")! c #B1740A", +"!! c #BC7B0A", +"~! c #BE7C0A", +"{! c #BD7C0A", +"]! c #BC7C0A", +"^! c #AF7D25", +"/! c #DAC39B", +"(! c #F5EFE5", +"_! c #F9F6F0", +":! c #F6F0E7", +"~ c #AA6D04", +",~ c #A06601", +"'~ c #A16704", +")~ c #A87316", +"!~ c #AA761B", +"~~ c #A77011", +"{~ c #A77111", +"]~ c #A67111", +"^~ c #A67011", +"/~ c #A46D0D", +"(~ c #A46D0A", +"_~ c #A56B08", +":~ c #A56C07", +"<~ c #A56B05", +"[~ c #A66B04", +"}~ c #A06703", +"|~ c #A66E0D", +"1~ c #A87213", +"2~ c #A66E0C", +"3~ c #A46C09", +"4~ c #A46B07", +"5~ c #A36A04", +"6~ c #A56903", +"7~ c #A66B03", +"8~ c #A26804", +"9~ c #A26904", +"0~ c #A26702", +"a~ c #A36902", +"b~ c #A46A03", +"c~ c #A26902", +" ", +" ", +" ", +" . ", +" + @ . . . ", +" # $ % . . . . ", +" . & $ * . . . . + @ ", +" . . = $ . . . . # $ % ", +" . . . $ - . . . . & $ * ", +" . . . . $ ; . . . . = $ ", +" + @ . . . . > $ , . . . . $ - ", +" # $ % . . . . ' $ * . . . . $ ; ", +" & $ * . . . . ) $ . . . . > $ , ", +" = $ . . . . ! $ ~ . . . ' $ * ", +" $ - . . { ] ^ / ( _ : < < [ } | 1 2 ) $ ", +" $ ; 3 4 5 6 7 8 9 0 a b c d e f g g g g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M ", +" N O P Q R S T U V g h W W W h g f X Y Z ` U ...+.@.#.$.%.&.*.=.E F -.;.>.,.'.).!.~.{.].^./.I (._.:.<.[.}.|.|.1.2.3.4.o 5.6.7. ", +" 8.9.0.a.b.c.d.i i e.1.f.g.h.i.j.k.l.m.n.o.p.q.3 r. s.$ t. u.v.w. x.y.z.A.B.C.D.E.F.G.H.I.J.K. ", +" L.<.M.1.N.W h O.P.Q.R.S.T.U.V. ] W. . . X.$ Y. . . . . Z.`. +.+ ", +" ++@+#+$+%+&+*+=+-+;+>+,+'+)+!+ . . . . ' $ ~+ . . . . # $ {+ ", +" a d ]+^+/+(+_+:+<+ [+}+ . . . . |+$ . . . . X.$ Y. ", +" 1+2+3+4+ $ 5+ . . . . + $ . . . . ' $ ~+ ", +" 6+$ 7+ . . . . 8+$ . . . . |+$ ", +" # $ 9+ . . . . . . . . . . . . 0+a+b+2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . c+$ ", +" X.$ @ . . . . . . . . . . . . . . . . . . . . d+$ e+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ! $ f+. . . ", +" g+$ h+. . . . . . . . . . . . . . . . . $ i+ . . . . a+b+2 . . . . ", +" . . . . j+$ k+. . . . . . . . . $ l+ . . . . $ - . ", +" . . . . . . . . m+$ n+ . . . . 6+$ o+ . . . . $ i+ ", +" . . . . . . . 8+$ . . . . p+$ q+ . . . . $ l+ ", +" . . . . a+b+ . . . . r+$ g+ . . . . 6+$ o+ ", +" $ - . . . . s+$ X. . . . . p+$ q+ ", +" $ i+ . . . . t+$ u+ . . . . . . r+$ g+ ", +" $ l+ . . . . . . . . . . . . v+$ w+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . x+$ s.. ", +" 6+$ o+ . . . . . . . . . . . . . . . . . . . . g+$ y+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . s.$ z+. . . . . . . ", +" 6+$ 9+ . . . . . . . . . . . . . . . . . A+$ . . . . B+$ C+ . . . . . . . ", +" . D+$ r+. . . . . . . . . . E+$ . . . . % $ F+ ", +" . . . . . C+$ s.. . . . . m+$ . . . . 7+$ ", +" . . . . . . . Y.$ > . . . . 5+$ . . . . E+$ ", +" . . . 9+$ * . . . . G+$ . . . . m+$ ", +" % $ H+ . . . . I+$ . . . . 5+$ ", +" 7+$ . . . . J+$ . . . . G+$ ", +" E+$ . . . . K+$ L+M+ 0+. I+$ ", +" m+$ . . N+W. O+P+ Q+R+S+T+U+V+W+X+Y+Z+Z+`+ @.@+@@@#@$@%@&@*@=@-@;@>@,@'@)@ ", +" 5+$ . W. !@~@{@9 ]@^@/@(@V |.h h W W W W h h |._@}.:@<@[@}@|@1@2@3@4@5@6@2.k _@W h h |.j %+7@0.8@9@o 5@0@a@b@++c@d@e@ ", +" G+$ f@g@h@i@j@k@f.1.h W h f j Y l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@A@B@C@D@E@F@G@H@H@I@J@J@K@L@M@N@O@P@Q@R@S@T@E.U@V@W@X@Y@Z@2@`@N.e.Z +._. ", +" #.#+#@###` Y X f g V b.$#%#&#*#=#-#;#>#,#'#)# $ !# . . . . ~#{# ]#^#/#(#_#:.:# ", +" <#[#}#|#V W W h 1#:.2#3#4#5#6# . . $ K+ . . . . $ a+ ", +" 7#8#m e.W 9#0#a#T.b#c# d#W. . . $ e# . . . . $ !# ", +" f#j i g#G@h#i#j# . . . . $ k# . . . . $ K+ ", +" l#m#n# b+$ . . . . $ o# . . . . $ e# ", +" $ a+ . . . . $ o# . . . . $ k# ", +" $ !# . . . . $ p# . . . . $ o# ", +" $ K+ . . . . $ }+ . . . . $ o# ", +" $ e# . . . . $ q# . . . . . . . . . . . . . $ r# ", +" $ k# . . . . . . . . . . [+$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . s#$ }+. . . . . . . . ", +" $ o# . . . . . . . . . . . . . . . . . t#$ 2 . . . . . . . . . . . . . . . . . . . . u#$ q#. . . . . . . . . . . . . ", +" $ o# . . . . . . . . . . . . . . . . v#$ . . . . [+$ . . . . . . ", +" $ r#. . . . . . . . . . . . . o#$ . . . . t#$ ", +" w#$ }+. . . . . . . . . x#$ . . . . v#$ ", +" . . . 2 $ q#. . . . . y#$ . . . . o#$ ", +" . . . [+$ . . . . + $ . . . . x#$ ", +" t#$ . . . . ) $ . . . . y#$ ", +" v#$ . . . . z#$ . . . . + $ ", +" o#$ . . . . j+$ F+ . . . . ) $ ", +" x#$ . . . . 9+$ * . . . . z#$ ", +" y#$ . . . . A#$ > . . . . . . . . . . . . B#$ C# ", +" + $ . . . . . . . . . . . D#$ E#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . s+$ F#. . . . . . ", +" ) $ . . . . . . . . . . . . . . . . . . G#$ H#. . . . . . . . . . . . . . . . . . . . . . . # $ I#. . . . . . . . . . . ", +" z#$ J# . . . . . . . . . . . . . . . . . K#$ L# . . . . r+$ M# . . . . . . ", +" N#$ F#. . . . . . . . . . . . $ O# . . . . P#$ Q# ", +" . . R#$ w+. . . . . . . . $ S# . . . . T#$ L# ", +" . . . . p+$ U# . . . . V#[+ . . . . $ O# ", +" . . . W#$ t+ . . . . G+$ . . . . $ S# ", +" P#$ Q# . . . . ; $ X#Y# . . V#[+ ", +" T#$ L# . . W.Z# `# $.$ +$@$#$$$%$&$*$z@=$-$-$;$>$,$+@'$)$!$~${$]$^$/$=+($ _$:$ ", +" $ O# N+<$ [$}$|$1$2$3$4$[@5$_@h W W W W W W h |._@6$:@7$#+8$A 1@1@1@4.8$9$Y g h W h _@5$0$3.n 4.a$b$c$d$e$X+7.f$g$ ", +" $ S# h$i$j$k$2@ .k W W W g e.X k l$`@ ...m$n$o$p$q$*.r$s$t$u$v$w$A@V+4+x$V+V+y$z$*$A$B$C$D$E$F$G$H$S@I$E.J$K$L$M$N$O$s P$k j Y o@Q$( ", +" R$S$T$5@` Y X f i U$l@o@V$W$X+X$,@Y$Z$`$ %.%+% $ k# . . . . @%#%$% %%&%*%=%-%;%B >% ", +" ,%'%)%!%~%W W W l@{%]%^%/%(%_% . . = $ . . . . $ :% <% ", +" 7#[%2.f W }%|%1%2%3%4% 5%N+~ . . & $ * . . . . $ k# ", +" Z+5$2.6%7%8%9%0%a%b% . . . . # $ & . . . . = $ ", +" c%d%e%n# W#$ B+ . . . . $ k# . . . . & $ * ", +" $ :% . . . . :%9+ . . # $ & ", +" $ k# . . . . $ k# ", +" = $ . . . . :%9+ f%g%h%i%j% ", +" & $ * . . k%l%m%h%n%o%p%p%q% ", +" # $ & . . r%r%s%t%u%v%w%x%y%z%A%B%C%D% ", +" $ k# E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%l%j% ", +" :%9+ U%V%V%W%X%Y%Z%`% &.&+&@&#&$&%&&&*&=&-&;&>&,&m% ", +" '&)&!&~&{&]&^&/&(&_&:&<&[&}&&&|&1&2&3&4&5&6&7&8&9&0&a&b& ", +" c&d&e&f&g&h&'&i&j&k&l&m&n&. o&p&q&r&s&t&u&v&w&x&y&z&A&B&-&C&D&E&F&G& ", +" H&I&J&K&L&M&N&O&P&Q&R&S&. T&U&V&W&X&r&o&Y&o&Z&`&u& *.*+*@*#*$*%*&*%&**=*-*j% ", +" ;*>*,*'*)*!*~*{*]*^*/*(*_*:*<*[*}*_*|*1*2*3*4*5*Z&Z&Z&6*7*8*9*0*a*b*c*d*e*f*e*g*h*q% ", +" i*j*>*i*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*T&z*/*A*B*C*D*4*E*F*G*H*I*J*K*L*M*N*K*O*P*Q*Q*f*R*Y%S* ", +" T*U*V*i*W*X*Y*Z*`* =.=+=@=#=$=%=&=*===-=;=>=,='=)=_*)=!=~=H*{=]=^=/=(=P*P*_=(=:=:=<=K*O*O*O*O*Q*[=}=|= ", +" 1=2=3=4=U*1=5=6=7=8=9=0=a=b=c=d=e=f=g=$=h=i=y*j=k=l=m=n=o=p=q=r=s=t=u=v=(=w=x=v=y=z=z=(=w=w=<=<=K*A=P*P*O*B=a*|=C% ", +" C=`%D=E=F=3=G=H=5=I=J=K=L=M=N=O=P=Q=R=S=T=U=V=W=X=Y=Z=y*`=m= -.-+-@-u=#-$-%-%-%-$-&-&-*-*-y=y=z=z=(=w=:=<=K*A=K*O*O*f*=---q% ", +" ;->-,-'-)-,-!-~-{-]-^-/-(-_-:-<-[-}-5=|-1-2-`%,->-3->-4-5-6-7-8-s=9-0-a-b-c-d-e-R&f-f-g-h-i-i-*-y=v=y=z=z=z=(=w=_=<=%&K* O*j-k-l- ", +" m-n-V=m-$=o-p-q-r-s-t-1=u-v-w-x-y-/&z-~-A-h=>-B-p-2-p-S=2-3-C-D-E-F-a-a-0-G-H-H-0-I-a-J-e-f-f-K-L-i-=*=*M-y=y=y=z=z=(=w=:=K*K* N-O-P- ", +" Q-m=R-S-T-e=U-V-W-X-Y-Z-`- ;.;+;@;#;$;@;%;5=&;T**;=;-;;;`%>;,;';);!;~;0-{;F-F-];G-G-H-H-0-#-#-^;R&f-f-K-$-i-%-&-*-v=y=v=z=z=z=w=w=:=<=:= /;(;P-_; ", +" T&:;==<;[;T=};|;1;2;N&3;4;5;6;+;Z%]*7;8;9;$;0;a;b;b;c;5=d;e;f;g;h;i;j;k;k;l;m;j;n;!;o;F-p;];G-G-H-H-b-a-#-e-R&K-f-f-f-q;&-r;s;y=y=z=z=z=(=(=w=t;d* :=u;v;m%w; ", +" x;y;W&!=z;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;I&T;N;>*j*1=U;V;W;X;Y;Z;`; > >.>+>@>m;#>#>!;!;F-!;F-];G-G-H-0-0-0-#-$>e-R&f-K-K-i-i-&-r;M-v=v=z=(=e*%>d*&>*>=>->;>>>s%,>g% ", +" Y&'>7*)>!>~>q={>]>^>/>(>_>:><>[>}>|>e&1>2>d&'&)*)*a&3>4>5>6>7>8>9>0>a>Y;b>c>d>e>e>f>g>g>h> =+>+>@>m;m;#>o;!;F-F-];G-G-H-0-0-0-b-#-f-f-f-K-K-K-i-i>z=b*/;j>k>l>m>n>o>p>h*_;j%j% ", +" u&`&5*q>r>s>n=D-t>u>v>w>x>y>z>A>B>C>D>E>F>G>H>I>J>K>J>P;P;I&L>M>N>O>P>Q>R>S>S>S>T>U>U>6=6=V>W>Z;g>X> =.>m;Y>m;#>j;F-F-l;Z>];G-H-0-0-0-`>a-R&f-f-K-$- ,.,P*#-+,M>@,g&I%#,V%r%k% ", +" $,%,&,*,=,v&-,;,>,,,',h*),W%!,~,{,],^,/,(,_,:,<,[,d&},|,1,J>2,3,4,5,R>6,8=8=7,Q>Q>i;Q>S>S>T>T>6=8,6=W>Z;9,X>.>.>+>m;m;0,#>o;o;F-F-];G-G-0-0-0-I-#-$>=*x=*-a,o*b,c,(,x>d,e,f,G% ", +" 7&A&g,A&g,h,i,%;j,k,l,X-m,n,o,p,q,r,d,s,t,u,/,v,w,x,y,z,K>c,A,B,C,D,E,O&F,G,H,G,I,J,7,K,7,Q>i;L,S>T>b>6=6=6=M,g>9,9,N, =@>+>m;m;j;!;!;F-p;];G-0-H-0-b-O,];P,Q,R,S,T,r%I%U,v,U, ", +" 9&8&r>g,V,W,X,Y,Z,~ `, '.'+'@'l%#'$'%'&'*'*',&='*',&-'>>;'>',''')'!'~'{']'^'/'/'D,('G,_'J,7,Y;Q>Q>i;i;S>T>T>b>6=6=8,g>e>e>h>.>@>m;m;m;#>#>:'k;<'G-F-m;E-['}'|'c,,&(,*'[,1' ", +" 2'3'4'5'6'7'8'9'o%0'k%h*f,V%a'--b'c'd'u%U%G%e'f'g'h'i'j'k'l'm'n'o'k'n'n']']'p'/'{'('G,H,I,7,Y;Y;Q>i;R>q'T>T>6=6=6=6=8,g>g>9,9, = =j;r'G-s'm;t'u'O-v'~*)*e&w'/,|,x' ", +" 9&y',&z'A'B'C'D'_;E',>--f%l%F'G'v%H'I'b'J'K'L'M'N'O'P'k'Q'Q'[>[>O'n'o'n']']'p'p'{'/'D,H,H,I,I,7,7,K,R>i;i;S>T>U>6=6=6=8,f>d>R'S'k;g>+,T'U'V'W'X'K>P;x'I> ", +" 0&Y'Z'`' ).)j%_;_;j%+)@),>#)$)%)&)*)=)-);)>),)>)N'N'')Q'Q'Q'[>k'k'k'o'n'^')')'l'p'D,('G,H,I,J,7,Y;Q>K,q'S>S>S>6=f>d>))!)b>(-~)u-4=b;{)X'])^) ", +" /)h,()_):)<)[)})q%|)1)2)*)3)4)=)5)=)6)6)7)8)7)>)>)N'N'')Q'Q'Q'[>O'k'o'n']')'p'p'/'D,H,H,H,J,J,7,K,i;i;i;q'M,c>9)0)a)b)c)d)e)f)a;e)g) ", +" h)i)l-h%j)|)k)l)m)n)o)p)q)r)s)5)5)t)u)u)v)v)v)w)w)N'')x)y)x)Q'z)O'k'o'n'^']'p'p'p'/'D,('G,J,J,Y;7,K,L,Y;A)Q,U'`%B)C)d)D)E)U* ", +" /)F)G)H)I)J)K)L)M)N)O)P)Q)R)s)s)s)5)u)=)6)7)8)w)w)>)S)y)y)Q'Q'Q'O'O'k'o'n']'^'p'p'{'H,I,I,H,5,a>I=T)U)G=V)W)X)/&Y)/& ", +" Z)`) !.!+!@!#!$!%!&!*!=!=!s)R)k,5)=)6)6)6)v)w)w)-!;!N'y)Q'Q'Q'O'O'k'k'n')'>!>!D,p',!{-W;'!)!>-!!~!{!]!`% ", +" /)X&^!/!(!_!:!)N'x)Q'x)Q'O'n')'l'n'2!3!'!-;4!5!>-6!2-2- ", +" i)7!8!9!0!a!b!c!d!*)|!|!|!=!R)s)k,k,e!t)6)v)v)v)w)f!-!g!')h!i!k'Q'j!O-k!l!k=j=>=m!e= ", +" i)/)n!o!p!q!r!s!s!t!u!*)|!|!R)=!k,5)v!t)6)=)w!v)w)-!x!y!;!z!|;A!)=B!==k=*=m= ", +" C!D!E!F!G!H!I!s!u!u!|!*)|!=!R)s)k,5)J!=)6)v)v)w!3!K!L!M!N!M!O!O!== ", +" P!Q!R!S!T!I!U!s!V!*)|!*)|!=!R)s)W!5)X!Y!Z!f=~>`! ~.~!=T&T& ", +" C!X&+~@~#~$~U!s!s!%~%~&~|!*~M;=~-~;~`&>~v&5*'>'> ", +" ,~'~)~!~~~{~]~^~s!/~(~_~:~<~[~%,B&>~o& ", +" }~|~1~$~2~3~4~G*5~6~A&7~5& ", +" C!8~9~/)/)0~9&a~b~ ", +" i),~h)/)c~ ", +" ", +" ", +" ", +" "}; diff --git a/src/Mod/Ship/Icons/Ship.xcf b/src/Mod/Ship/Icons/Ship.xcf new file mode 100644 index 0000000000..9775afde24 Binary files /dev/null and b/src/Mod/Ship/Icons/Ship.xcf differ diff --git a/src/Mod/Ship/Icons/Ship.xpm b/src/Mod/Ship/Icons/Ship.xpm new file mode 100644 index 0000000000..7297f4ca6f --- /dev/null +++ b/src/Mod/Ship/Icons/Ship.xpm @@ -0,0 +1,431 @@ +/* XPM */ +static char * Ship_xpm[] = { +"32 32 396 2", +" c None", +". c #2C2C2C", +"+ c #3A3A3A", +"@ c #585857", +"# c #161616", +"$ c #000000", +"% c #363636", +"& c #333333", +"* c #B3B3B3", +"= c #B4B4B4", +"- c #949494", +"; c #565653", +"> c #141414", +", c #080807", +"' c #585858", +") c #878787", +"! c #9F9E9F", +"~ c #9F9F9E", +"{ c #8F8F90", +"] c #6B6B6B", +"^ c #101010", +"/ c #737373", +"( c #4C4C4C", +"_ c #B1B1B7", +": c #9090C0", +"< c #A7A7B2", +"[ c #87878E", +"} c #4F4F52", +"| c #191919", +"1 c #656565", +"2 c #D1D1D2", +"3 c #D1D1D1", +"4 c #CECECE", +"5 c #CDCCCC", +"6 c #CCCCCC", +"7 c #CCCCCB", +"8 c #CDCECD", +"9 c #BDBDBD", +"0 c #424242", +"a c #373737", +"b c #0A0A0A", +"c c #241414", +"d c #0E0C0C", +"e c #929393", +"f c #383738", +"g c #9B9B9A", +"h c #A0A0AF", +"i c #2929E4", +"j c #2525E5", +"k c #3F3FD7", +"l c #5B5BC8", +"m c #535368", +"n c #686866", +"o c #C8C8C8", +"p c #C8C8C7", +"q c #C7C6C7", +"r c #C6C6C6", +"s c #C5C5C5", +"t c #C4C5C5", +"u c #C3C4C3", +"v c #C3C3C2", +"w c #BCBCBC", +"x c #595959", +"y c #A6A6A6", +"z c #969696", +"A c #0B0B0B", +"B c #0D0707", +"C c #894646", +"D c #1C1A1A", +"E c #525252", +"F c #6C6D6C", +"G c #A3A3A2", +"H c #A3A296", +"I c #8E8F98", +"J c #6F6EA5", +"K c #5354AF", +"L c #373753", +"M c #8D8D8B", +"N c #C5C5C4", +"O c #C2C2C2", +"P c #C1C1C1", +"Q c #C0C0C0", +"R c #C0BFBF", +"S c #BFBFBF", +"T c #BEBEBE", +"U c #B1B2B2", +"V c #404040", +"W c #ABAAAA", +"X c #797979", +"Y c #2A1212", +"Z c #662828", +"` c #3D403F", +" . c #B5B5B5", +".. c #6B6A6B", +"+. c #4A4A4A", +"@. c #9A9A9A", +"#. c #909090", +"$. c #8B8B8A", +"%. c #898A86", +"&. c #84837F", +"*. c #3D3D3C", +"=. c #9E9E9E", +"-. c #BFBFBE", +";. c #BDBEBD", +">. c #BBBBBB", +",. c #BABABA", +"'. c #B9B9B9", +"). c #B8B8B8", +"!. c #999999", +"~. c #BABAB9", +"{. c #ABABAB", +"]. c #292929", +"^. c #381212", +"/. c #4C1514", +"(. c #535656", +"_. c #717171", +":. c #919090", +"<. c #818181", +"[. c #4E4E4E", +"}. c #4B4B4B", +"|. c #B1B1B1", +"1. c #B8B7B8", +"2. c #B6B6B6", +"3. c #B6B5B5", +"4. c #B4B5B4", +"5. c #B2B3B2", +"6. c #5C5D5C", +"7. c #AFAFAF", +"8. c #ADACAC", +"9. c #5B5B5B", +"0. c #410C0C", +"a. c #3E0707", +"b. c #525555", +"c. c #9C9C9C", +"d. c #2D2D2D", +"e. c #757575", +"f. c #474747", +"g. c #484848", +"h. c #9F9F9F", +"i. c #B3B3B4", +"j. c #B2B2B2", +"k. c #B0B0B0", +"l. c #ADAEAD", +"m. c #ADADAD", +"n. c #B0B1B0", +"o. c #1E1E1E", +"p. c #ACABAC", +"q. c #AAA9A9", +"r. c #A8A8A8", +"s. c #5D5D5D", +"t. c #290202", +"u. c #281010", +"v. c #272828", +"w. c #767777", +"x. c #505050", +"y. c #1F1F1F", +"z. c #5E5E5D", +"A. c #A4A5A5", +"B. c #B1B2B1", +"C. c #AEAEAE", +"D. c #AEADAD", +"E. c #ABACAC", +"F. c #AAAAAA", +"G. c #A9A8A8", +"H. c #ABABAC", +"I. c #7B7B7B", +"J. c #2B2B2B", +"K. c #A4A4A4", +"L. c #A6A5A6", +"M. c #888888", +"N. c #0E0E0E", +"O. c #101312", +"P. c #7E8080", +"Q. c #5E5E5E", +"R. c #242424", +"S. c #555555", +"T. c #7F7F7F", +"U. c #A4A3A4", +"V. c #B3B3B2", +"W. c #ACACAC", +"X. c #A9A9A9", +"Y. c #A8A7A7", +"Z. c #A7A6A7", +"`. c #A7A7A7", +" + c #A8A8A7", +".+ c #A5A5A5", +"++ c #A2A2A2", +"@+ c #222122", +"#+ c #7E7E7E", +"$+ c #A3A3A3", +"%+ c #9B9B9B", +"&+ c #050505", +"*+ c #6E6E6E", +"=+ c #A7A7A6", +"-+ c #989898", +";+ c #A5A4A4", +">+ c #A7A7A8", +",+ c #A5A6A7", +"'+ c #979A99", +")+ c #818383", +"!+ c #757878", +"~+ c #757979", +"{+ c #878A8A", +"]+ c #A3A5A5", +"^+ c #828282", +"/+ c #A0A0A0", +"(+ c #232323", +"_+ c #939393", +":+ c #A5A6A5", +"<+ c #A2A3A2", +"[+ c #A2A1A1", +"}+ c #A1A0A1", +"|+ c #939292", +"1+ c #636262", +"2+ c #554D4D", +"3+ c #634C4C", +"4+ c #755555", +"5+ c #936464", +"6+ c #9F6868", +"7+ c #9B6060", +"8+ c #804A4A", +"9+ c #5C3737", +"0+ c #1D1616", +"a+ c #A1A1A1", +"b+ c #010101", +"c+ c #151516", +"d+ c #707070", +"e+ c #9D9E9E", +"f+ c #8C8D8D", +"g+ c #8B8888", +"h+ c #726A6A", +"i+ c #6D5959", +"j+ c #866261", +"k+ c #C18B8B", +"l+ c #D79696", +"m+ c #D18C8C", +"n+ c #CB8180", +"o+ c #C57575", +"p+ c #BF6B6A", +"q+ c #BB6161", +"r+ c #B95958", +"s+ c #9C4544", +"t+ c #2E1212", +"u+ c #6F6C6C", +"v+ c #A0A1A1", +"w+ c #575757", +"x+ c #0C0C0C", +"y+ c #9C9D9D", +"z+ c #7A7272", +"A+ c #876F6F", +"B+ c #977070", +"C+ c #C28C8C", +"D+ c #D59595", +"E+ c #D08A8A", +"F+ c #C67D7D", +"G+ c #C07272", +"H+ c #BC6969", +"I+ c #B85F5F", +"J+ c #B35656", +"K+ c #B04C4C", +"L+ c #AB4243", +"M+ c #A63939", +"N+ c #591B1B", +"O+ c #6A2121", +"P+ c #542323", +"Q+ c #585A5A", +"R+ c #191515", +"S+ c #706262", +"T+ c #A58080", +"U+ c #B58383", +"V+ c #CE8F8F", +"W+ c #CD8989", +"X+ c #C17372", +"Y+ c #B45656", +"Z+ c #AF4C4C", +"`+ c #AB4242", +" @ c #A73A39", +".@ c #A3302F", +"+@ c #9F2626", +"@@ c #8E1A1A", +"#@ c #2C0808", +"$@ c #91191A", +"%@ c #2F0200", +"&@ c #90C6FB", +"*@ c #8BBFFB", +"=@ c #94CBFC", +"-@ c #AFEFFB", +";@ c #7DABA0", +">@ c #3C2521", +",@ c #C88484", +"'@ c #C57C7D", +")@ c #C17273", +"!@ c #B86060", +"~@ c #AB4343", +"{@ c #A73939", +"]@ c #A32F2F", +"^@ c #9B1C1D", +"/@ c #961313", +"(@ c #96090A", +"_@ c #3C0202", +":@ c #4E0202", +"<@ c #300000", +"[@ c #3E5378", +"}@ c #7EABF9", +"|@ c #84B5FC", +"1@ c #96CDFB", +"2@ c #B2F2FA", +"3@ c #C4FFFA", +"4@ c #2E3FFD", +"5@ c #3346FD", +"6@ c #2A3AFD", +"7@ c #161EFE", +"8@ c #1B25FD", +"9@ c #1F25B4", +"0@ c #7C6196", +"a@ c #AA6075", +"b@ c #AC5763", +"c@ c #AD5155", +"d@ c #AD4645", +"e@ c #A83938", +"f@ c #A3302E", +"g@ c #A02624", +"h@ c #9B1C1B", +"i@ c #971311", +"j@ c #930A09", +"k@ c #900300", +"l@ c #900505", +"m@ c #660007", +"n@ c #00000D", +"o@ c #200112", +"p@ c #597F88", +"q@ c #6E97FD", +"r@ c #384CFD", +"s@ c #394EFD", +"t@ c #2D3EFD", +"u@ c #151DFE", +"v@ c #1821FE", +"w@ c #3C52FD", +"x@ c #6388FC", +"y@ c #9CD6FB", +"z@ c #D0FFFA", +"A@ c #AEEEFB", +"B@ c #749FFF", +"C@ c #3F5DFF", +"D@ c #4165FF", +"E@ c #525AE3", +"F@ c #6153C4", +"G@ c #672D8D", +"H@ c #6C1B6A", +"I@ c #722164", +"J@ c #75225E", +"K@ c #731D57", +"L@ c #701653", +"M@ c #690E52", +"N@ c #5F0050", +"O@ c #562086", +"P@ c #11108D", +"Q@ c #2330BE", +"R@ c #344AE1", +"S@ c #4E6BFF", +"T@ c #4E6BFD", +"U@ c #597AFC", +"V@ c #6184FC", +"W@ c #7099FC", +"X@ c #8BBEFB", +"Y@ c #95CCFB", +"Z@ c #5B7CFC", +"`@ c #1C26FD", +" # c #121AFE", +".# c #9ED7FB", +"+# c #81B4FF", +"@# c #6893FF", +"## c #6997FF", +"$# c #6695FF", +"%# c #6390FF", +"&# c #618DFF", +"*# c #608DFF", +"=# c #618EFF", +"-# c #6391FF", +";# c #6898FF", +"># c #6B9AFF", +",# c #5171ED", +"'# c #90C4FF", +")# c #7EABFC", +"!# c #729CFC", +"~# c #6287FC", +"{# c #4761FD", +"]# c #070AFE", +"^# c #6084FC", +"/# c #9AD2FB", +"(# c #A2DDFB", +"_# c #8ABDFB", +":# c #2B3AFD", +"<# c #A9E8FB", +"[# c #B9FCFA", +"}# c #BAFEFA", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" . + @ # $ $ $ $ $ ", +" % & * = - ; > $ $ , ' ) ! ~ { ] & $ $ $ ", +" ^ / ( = _ : < [ } | $ 1 2 3 4 5 6 7 6 8 9 0 a b ", +" c d e f g h i j k l m n 4 o p q r s t u v w x y z A ", +" B C D * E F G H I J K L M N O O P Q R S T 9 U V W O X $ ", +" Y Z ` ...+.@.#.$.%.&.*.=.-.;.w >.>.,.'.).).!.+ ~. .{.]. ", +" ^./.(.y _.f :.) <.[.^ }.|.).1.2.3. .4.* 5. .6.1 4.7.8.9. ", +" 0.a.b.c./ d.e.f.| g.h.9 i.* j.|.k.7.7.l.m.n.o.@.p.q.r.s. ", +" t.u.v.w.x.y.% z.A.).B.C.D.m.E.{.F.F.G.r.H.I.J.k.K.L.M.N. ", +" O.P.Q.R.S.T.U.V.W.q.X.r.Y.Z.`.Y. +`..+++{.@+#+$+++%+y. ", +" &+*+W.=+-+;+X.>+y .+K.K.y y ,+'+)+!+~+{+]+^+].$+/+$+J. ", +" (+_+:+U.$+<+[+}+/+h.=.|+1+2+3+4+5+6+7+8+9+0+_.a+/+0 b+ ", +" c+d+h.a+/+++e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+$ ", +" x+f.- y+w.z+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+$ ", +" R+S+T+U+V+W+F+X+H+I+Y+Z+`+ @.@+@@@#@$@%@$ ", +"&@*@=@-@;@>@,@'@)@H+!@Y+K+~@{@]@+@^@/@(@_@:@<@[@}@|@1@2@3@ ", +"4@5@6@7@8@9@0@a@b@c@d@e@f@g@h@i@j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@", +" z@A@B@C@D@E@F@G@H@I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@Y@Z@`@ #", +" .#+#@###$#%#&#*#=#-#;#>#,#'# )#!#~#{#]#^#/#", +" (#_#:#<#", +" [#}#", +" ", +" ", +" ", +" "}; diff --git a/src/Mod/Ship/InitGui.py b/src/Mod/Ship/InitGui.py new file mode 100644 index 0000000000..01d08f55cd --- /dev/null +++ b/src/Mod/Ship/InitGui.py @@ -0,0 +1,42 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +class ShipWorkbench ( Workbench ): + """ @brief Workbench of Ship design module. Here toolbars & icons are append. """ + from shipUtils import Paths, Translator + import ShipGui + + Icon = Paths.iconsPath() + "/Ico.png" + MenuText = str(Translator.translate("Ship design")) + ToolTip = str(Translator.translate("Ship design")) + + def Initialize(self): + # ToolBar + list = ["Ship_CreateShip", "Ship_OutlineDraw", "Ship_AreasCurve"] + self.appendToolbar("Ship design",list) + + # Menu + list = ["Ship_CreateShip", "Ship_OutlineDraw", "Ship_AreasCurve"] + self.appendMenu("Ship design",list) + +Gui.addWorkbench(ShipWorkbench()) diff --git a/src/Mod/Ship/Instance.py b/src/Mod/Ship/Instance.py new file mode 100644 index 0000000000..be4481ed8d --- /dev/null +++ b/src/Mod/Ship/Instance.py @@ -0,0 +1,669 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +import time + +# COIN +from pivy.coin import * +from pivy import coin + +# FreeCAD +import FreeCAD,FreeCADGui +from FreeCAD import Part, Base, Vector + +# Ship design module +from shipUtils import Paths, Translator, Math + +class Ship: + def __init__(self, obj, faces): + """ Creates a new ship on active document. + @param faces Ship faces (Part::Shape entities). + """ + self.faces = faces + # Add uniqueness property to identify Ship instances + obj.addProperty("App::PropertyBool","IsShip","Ship", str(Translator.translate("True if is a valid ship instance"))).IsShip=True + # Add main dimensions + obj.addProperty("App::PropertyLength","Length","Ship", str(Translator.translate("Ship length (Lpp) [m]"))).Length=0.0 + obj.addProperty("App::PropertyLength","Beam","Ship", str(Translator.translate("Ship beam (B) [m]"))).Beam=0.0 + obj.addProperty("App::PropertyLength","Draft","Ship", str(Translator.translate("Ship draft (T) [m]"))).Draft=0.0 + # Add shapes + obj.addProperty("Part::PropertyPartShape","Shape","Ship", str(Translator.translate("Ship surfaces"))).Shape = Part.makeShell(self.faces) + obj.Proxy = self + self.obj = obj + + def onChanged(self, fp, prop): + ''' Print the name of the property that has changed ''' + # FreeCAD.Console.PrintMessage("Change property: " + str(prop) + "\n") + if prop == "Length" or prop == "Beam" or prop == "Draft": + fp.Shape = Part.makeShell(self.faces) + + def execute(self, obj): + ''' Print a short message when doing a recomputation, this method is mandatory ''' + # FreeCAD.Console.PrintMessage("Recompute Ship\n") + obj.Shape = Part.makeShell(self.faces) + + def lineFaceSection(self,line,surface): + """ Returns the point of section of a line with a face + @param line Line object, that can be a curve. + @param surface Surface object (must be a Part::Shape) + @return Section points array, [] if line don't cut surface + """ + # Get initial data + result = [] + vertexes = line.Vertexes + nVertex = len(vertexes) + # Perform the cut + section = line.cut(surface) + # Filter all old points + points = section.Vertexes + nPoint = len(points) + if nPoint <= nVertex: + # Any valid point + return result + for i in range(0,nPoint): + disp = len(result) + flag = 0 + if not Math.isAprox(points[i].X,vertexes[i-disp].X,0.0001): + flag = flag+1 + if not Math.isAprox(points[i].Y,vertexes[i-disp].Y,0.0001): + flag = flag+1 + if not Math.isAprox(points[i].Z,vertexes[i-disp].Z,0.0001): + flag = flag+1 + if flag > 0: + result.append(points[i]) + return result + + def discretize(self, nS, nP): + """ Discretize the surface. + @param nS Number of sections + @param nP Number of points per section + """ + self.obj.addProperty("App::PropertyInteger","nSections","Ship", str(Translator.translate("Number of sections"))).nSections=nS + self.obj.addProperty("App::PropertyIntegerList","nPoints","Ship", str(Translator.translate("List of number of points per sections (accumulated histogram)"))).nPoints=[0] + self.obj.addProperty("App::PropertyFloatList","xSection","Ship", str(Translator.translate("List of sections x coordinate"))).xSection=[] + self.obj.addProperty("App::PropertyVectorList","mSections","Ship", str(Translator.translate("List of sections points"))).mSections=[] + nPoints = [0] + xSection = [] + mSections = [] + # Get bounds + shape = self.obj.Shape + bbox = shape.BoundBox + x0 = bbox.XMin + x1 = bbox.XMax + y0 = bbox.YMin + y1 = bbox.YMax + z0 = bbox.ZMin + z1 = bbox.ZMax + # Create a set of planes to perfom edges sections + planes = [] + dz = (z1 - z0) / (nP - 1) + for j in range(0,nP): + z = z0 + j*dz + rX = x1 - x0 + rY = y1 - y0 + planes.append(Part.makePlane(4*rX,4*rY,Base.Vector(-2*rX,-2*rY,z),Base.Vector(0,0,1))) + # Division are performed at x axis + dx = (x1 - x0) / (nS - 1.0) + for i in range(0,nS): + section = [] + x = x0 + i*dx + xSection.append(x) + percen = i*100 / (nS-1) + FreeCAD.Console.PrintMessage('%d%%\n' % (percen)); + # Slice the surface to get curves + wires = shape.slice(Vector(1.0,0.0,0.0), x) + if not wires: + if (i != 0) or (i != nS-1): + msg = 'Found empty section at x=%g\n' + msg = Translator.translate(msg) + FreeCAD.Console.PrintWarning(msg) + FreeCAD.Console.PrintWarning('\tThis may happens if a bad defined (or really complex) surface has been provided.\n') + FreeCAD.Console.PrintWarning('\tPlease, ensure that this section is correct, or fix surfaces and create a new ship.\n') + nPoints.append(0) + # Desarrollate wires into edges list + edges = [] + for j in range(0,len(wires)): + wire = wires[j].Edges + for k in range(0,len(wire)): + edges.append(wire[k]) + # Slice curves to get points (Length based) + points = [] + for j in range(0,len(edges)): + for k in range(0,nP): + aux = self.lineFaceSection(edges[j], planes[k]) + if not aux: + points.append(Vector(x,0,z0 + k*dz)) + for l in range(0,len(aux)): + points.append(Vector(aux[l].X, aux[l].Y, aux[l].Z)) + # Sort section points at Y direction + aux = [] + for j in range(0,len(points)): + aux.append(points[j].y) + aux.sort() + for j in range(0,len(points)): + section.append(Vector(points[j].x, aux[j], points[j].z)) + # Store points + nPoints.append(len(section)) + for j in range(0,len(section)): + mSections.append(section[j]) + # Save data + for i in range(1,len(nPoints)): + nPoints[i] = nPoints[i] + nPoints[i-1] + self.obj.nPoints = nPoints[:] + self.obj.xSection = xSection[:] + self.obj.mSections = mSections[:] + +class ViewProviderShip: + def __init__(self, obj): + "Set this object to the proxy object of the actual view provider" + obj.Proxy = self + + def attach(self, obj): + ''' Setup the scene sub-graph of the view provider, this method is mandatory ''' + return + + def updateData(self, fp, prop): + ''' If a property of the handled feature has changed we have the chance to handle this here ''' + return + + def getDisplayModes(self,obj): + ''' Return a list of display modes. ''' + modes=[] + return modes + + def getDefaultDisplayMode(self): + ''' Return the name of the default display mode. It must be defined in getDisplayModes. ''' + return "Shaded" + + def setDisplayMode(self,mode): + ''' Map the display mode defined in attach with those defined in getDisplayModes. + Since they have the same names nothing needs to be done. This method is optinal. + ''' + return mode + + def onChanged(self, vp, prop): + ''' Print the name of the property that has changed ''' + # FreeCAD.Console.PrintMessage("Change property: " + str(prop) + "\n") + + def __getstate__(self): + ''' When saving the document this object gets stored using Python's cPickle module. + Since we have some un-pickable here -- the Coin stuff -- we must define this method + to return a tuple of all pickable objects or None. + ''' + return None + + def __setstate__(self,state): + ''' When restoring the pickled object from document we have the chance to set some + internals here. Since no data were pickled nothing needs to be done here. + ''' + return None + + def getIcon(self): + return """ + /* XPM */ + static char * Ship_xpm[] = { + "32 32 396 2", + " c None", + ". c #2C2C2C", + "+ c #3A3A3A", + "@ c #585857", + "# c #161616", + "$ c #000000", + "% c #363636", + "& c #333333", + "* c #B3B3B3", + "= c #B4B4B4", + "- c #949494", + "; c #565653", + "> c #141414", + ", c #080807", + "' c #585858", + ") c #878787", + "! c #9F9E9F", + "~ c #9F9F9E", + "{ c #8F8F90", + "] c #6B6B6B", + "^ c #101010", + "/ c #737373", + "( c #4C4C4C", + "_ c #B1B1B7", + ": c #9090C0", + "< c #A7A7B2", + "[ c #87878E", + "} c #4F4F52", + "| c #191919", + "1 c #656565", + "2 c #D1D1D2", + "3 c #D1D1D1", + "4 c #CECECE", + "5 c #CDCCCC", + "6 c #CCCCCC", + "7 c #CCCCCB", + "8 c #CDCECD", + "9 c #BDBDBD", + "0 c #424242", + "a c #373737", + "b c #0A0A0A", + "c c #241414", + "d c #0E0C0C", + "e c #929393", + "f c #383738", + "g c #9B9B9A", + "h c #A0A0AF", + "i c #2929E4", + "j c #2525E5", + "k c #3F3FD7", + "l c #5B5BC8", + "m c #535368", + "n c #686866", + "o c #C8C8C8", + "p c #C8C8C7", + "q c #C7C6C7", + "r c #C6C6C6", + "s c #C5C5C5", + "t c #C4C5C5", + "u c #C3C4C3", + "v c #C3C3C2", + "w c #BCBCBC", + "x c #595959", + "y c #A6A6A6", + "z c #969696", + "A c #0B0B0B", + "B c #0D0707", + "C c #894646", + "D c #1C1A1A", + "E c #525252", + "F c #6C6D6C", + "G c #A3A3A2", + "H c #A3A296", + "I c #8E8F98", + "J c #6F6EA5", + "K c #5354AF", + "L c #373753", + "M c #8D8D8B", + "N c #C5C5C4", + "O c #C2C2C2", + "P c #C1C1C1", + "Q c #C0C0C0", + "R c #C0BFBF", + "S c #BFBFBF", + "T c #BEBEBE", + "U c #B1B2B2", + "V c #404040", + "W c #ABAAAA", + "X c #797979", + "Y c #2A1212", + "Z c #662828", + "` c #3D403F", + " . c #B5B5B5", + ".. c #6B6A6B", + "+. c #4A4A4A", + "@. c #9A9A9A", + "#. c #909090", + "$. c #8B8B8A", + "%. c #898A86", + "&. c #84837F", + "*. c #3D3D3C", + "=. c #9E9E9E", + "-. c #BFBFBE", + ";. c #BDBEBD", + ">. c #BBBBBB", + ",. c #BABABA", + "'. c #B9B9B9", + "). c #B8B8B8", + "!. c #999999", + "~. c #BABAB9", + "{. c #ABABAB", + "]. c #292929", + "^. c #381212", + "/. c #4C1514", + "(. c #535656", + "_. c #717171", + ":. c #919090", + "<. c #818181", + "[. c #4E4E4E", + "}. c #4B4B4B", + "|. c #B1B1B1", + "1. c #B8B7B8", + "2. c #B6B6B6", + "3. c #B6B5B5", + "4. c #B4B5B4", + "5. c #B2B3B2", + "6. c #5C5D5C", + "7. c #AFAFAF", + "8. c #ADACAC", + "9. c #5B5B5B", + "0. c #410C0C", + "a. c #3E0707", + "b. c #525555", + "c. c #9C9C9C", + "d. c #2D2D2D", + "e. c #757575", + "f. c #474747", + "g. c #484848", + "h. c #9F9F9F", + "i. c #B3B3B4", + "j. c #B2B2B2", + "k. c #B0B0B0", + "l. c #ADAEAD", + "m. c #ADADAD", + "n. c #B0B1B0", + "o. c #1E1E1E", + "p. c #ACABAC", + "q. c #AAA9A9", + "r. c #A8A8A8", + "s. c #5D5D5D", + "t. c #290202", + "u. c #281010", + "v. c #272828", + "w. c #767777", + "x. c #505050", + "y. c #1F1F1F", + "z. c #5E5E5D", + "A. c #A4A5A5", + "B. c #B1B2B1", + "C. c #AEAEAE", + "D. c #AEADAD", + "E. c #ABACAC", + "F. c #AAAAAA", + "G. c #A9A8A8", + "H. c #ABABAC", + "I. c #7B7B7B", + "J. c #2B2B2B", + "K. c #A4A4A4", + "L. c #A6A5A6", + "M. c #888888", + "N. c #0E0E0E", + "O. c #101312", + "P. c #7E8080", + "Q. c #5E5E5E", + "R. c #242424", + "S. c #555555", + "T. c #7F7F7F", + "U. c #A4A3A4", + "V. c #B3B3B2", + "W. c #ACACAC", + "X. c #A9A9A9", + "Y. c #A8A7A7", + "Z. c #A7A6A7", + "`. c #A7A7A7", + " + c #A8A8A7", + ".+ c #A5A5A5", + "++ c #A2A2A2", + "@+ c #222122", + "#+ c #7E7E7E", + "$+ c #A3A3A3", + "%+ c #9B9B9B", + "&+ c #050505", + "*+ c #6E6E6E", + "=+ c #A7A7A6", + "-+ c #989898", + ";+ c #A5A4A4", + ">+ c #A7A7A8", + ",+ c #A5A6A7", + "'+ c #979A99", + ")+ c #818383", + "!+ c #757878", + "~+ c #757979", + "{+ c #878A8A", + "]+ c #A3A5A5", + "^+ c #828282", + "/+ c #A0A0A0", + "(+ c #232323", + "_+ c #939393", + ":+ c #A5A6A5", + "<+ c #A2A3A2", + "[+ c #A2A1A1", + "}+ c #A1A0A1", + "|+ c #939292", + "1+ c #636262", + "2+ c #554D4D", + "3+ c #634C4C", + "4+ c #755555", + "5+ c #936464", + "6+ c #9F6868", + "7+ c #9B6060", + "8+ c #804A4A", + "9+ c #5C3737", + "0+ c #1D1616", + "a+ c #A1A1A1", + "b+ c #010101", + "c+ c #151516", + "d+ c #707070", + "e+ c #9D9E9E", + "f+ c #8C8D8D", + "g+ c #8B8888", + "h+ c #726A6A", + "i+ c #6D5959", + "j+ c #866261", + "k+ c #C18B8B", + "l+ c #D79696", + "m+ c #D18C8C", + "n+ c #CB8180", + "o+ c #C57575", + "p+ c #BF6B6A", + "q+ c #BB6161", + "r+ c #B95958", + "s+ c #9C4544", + "t+ c #2E1212", + "u+ c #6F6C6C", + "v+ c #A0A1A1", + "w+ c #575757", + "x+ c #0C0C0C", + "y+ c #9C9D9D", + "z+ c #7A7272", + "A+ c #876F6F", + "B+ c #977070", + "C+ c #C28C8C", + "D+ c #D59595", + "E+ c #D08A8A", + "F+ c #C67D7D", + "G+ c #C07272", + "H+ c #BC6969", + "I+ c #B85F5F", + "J+ c #B35656", + "K+ c #B04C4C", + "L+ c #AB4243", + "M+ c #A63939", + "N+ c #591B1B", + "O+ c #6A2121", + "P+ c #542323", + "Q+ c #585A5A", + "R+ c #191515", + "S+ c #706262", + "T+ c #A58080", + "U+ c #B58383", + "V+ c #CE8F8F", + "W+ c #CD8989", + "X+ c #C17372", + "Y+ c #B45656", + "Z+ c #AF4C4C", + "`+ c #AB4242", + " @ c #A73A39", + ".@ c #A3302F", + "+@ c #9F2626", + "@@ c #8E1A1A", + "#@ c #2C0808", + "$@ c #91191A", + "%@ c #2F0200", + "&@ c #90C6FB", + "*@ c #8BBFFB", + "=@ c #94CBFC", + "-@ c #AFEFFB", + ";@ c #7DABA0", + ">@ c #3C2521", + ",@ c #C88484", + "'@ c #C57C7D", + ")@ c #C17273", + "!@ c #B86060", + "~@ c #AB4343", + "{@ c #A73939", + "]@ c #A32F2F", + "^@ c #9B1C1D", + "/@ c #961313", + "(@ c #96090A", + "_@ c #3C0202", + ":@ c #4E0202", + "<@ c #300000", + "[@ c #3E5378", + "}@ c #7EABF9", + "|@ c #84B5FC", + "1@ c #96CDFB", + "2@ c #B2F2FA", + "3@ c #C4FFFA", + "4@ c #2E3FFD", + "5@ c #3346FD", + "6@ c #2A3AFD", + "7@ c #161EFE", + "8@ c #1B25FD", + "9@ c #1F25B4", + "0@ c #7C6196", + "a@ c #AA6075", + "b@ c #AC5763", + "c@ c #AD5155", + "d@ c #AD4645", + "e@ c #A83938", + "f@ c #A3302E", + "g@ c #A02624", + "h@ c #9B1C1B", + "i@ c #971311", + "j@ c #930A09", + "k@ c #900300", + "l@ c #900505", + "m@ c #660007", + "n@ c #00000D", + "o@ c #200112", + "p@ c #597F88", + "q@ c #6E97FD", + "r@ c #384CFD", + "s@ c #394EFD", + "t@ c #2D3EFD", + "u@ c #151DFE", + "v@ c #1821FE", + "w@ c #3C52FD", + "x@ c #6388FC", + "y@ c #9CD6FB", + "z@ c #D0FFFA", + "A@ c #AEEEFB", + "B@ c #749FFF", + "C@ c #3F5DFF", + "D@ c #4165FF", + "E@ c #525AE3", + "F@ c #6153C4", + "G@ c #672D8D", + "H@ c #6C1B6A", + "I@ c #722164", + "J@ c #75225E", + "K@ c #731D57", + "L@ c #701653", + "M@ c #690E52", + "N@ c #5F0050", + "O@ c #562086", + "P@ c #11108D", + "Q@ c #2330BE", + "R@ c #344AE1", + "S@ c #4E6BFF", + "T@ c #4E6BFD", + "U@ c #597AFC", + "V@ c #6184FC", + "W@ c #7099FC", + "X@ c #8BBEFB", + "Y@ c #95CCFB", + "Z@ c #5B7CFC", + "`@ c #1C26FD", + " # c #121AFE", + ".# c #9ED7FB", + "+# c #81B4FF", + "@# c #6893FF", + "## c #6997FF", + "$# c #6695FF", + "%# c #6390FF", + "&# c #618DFF", + "*# c #608DFF", + "=# c #618EFF", + "-# c #6391FF", + ";# c #6898FF", + "># c #6B9AFF", + ",# c #5171ED", + "'# c #90C4FF", + ")# c #7EABFC", + "!# c #729CFC", + "~# c #6287FC", + "{# c #4761FD", + "]# c #070AFE", + "^# c #6084FC", + "/# c #9AD2FB", + "(# c #A2DDFB", + "_# c #8ABDFB", + ":# c #2B3AFD", + "<# c #A9E8FB", + "[# c #B9FCFA", + "}# c #BAFEFA", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " . + @ # $ $ $ $ $ ", + " % & * = - ; > $ $ , ' ) ! ~ { ] & $ $ $ ", + " ^ / ( = _ : < [ } | $ 1 2 3 4 5 6 7 6 8 9 0 a b ", + " c d e f g h i j k l m n 4 o p q r s t u v w x y z A ", + " B C D * E F G H I J K L M N O O P Q R S T 9 U V W O X $ ", + " Y Z ` ...+.@.#.$.%.&.*.=.-.;.w >.>.,.'.).).!.+ ~. .{.]. ", + " ^./.(.y _.f :.) <.[.^ }.|.).1.2.3. .4.* 5. .6.1 4.7.8.9. ", + " 0.a.b.c./ d.e.f.| g.h.9 i.* j.|.k.7.7.l.m.n.o.@.p.q.r.s. ", + " t.u.v.w.x.y.% z.A.).B.C.D.m.E.{.F.F.G.r.H.I.J.k.K.L.M.N. ", + " O.P.Q.R.S.T.U.V.W.q.X.r.Y.Z.`.Y. +`..+++{.@+#+$+++%+y. ", + " &+*+W.=+-+;+X.>+y .+K.K.y y ,+'+)+!+~+{+]+^+].$+/+$+J. ", + " (+_+:+U.$+<+[+}+/+h.=.|+1+2+3+4+5+6+7+8+9+0+_.a+/+0 b+ ", + " c+d+h.a+/+++e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+$ ", + " x+f.- y+w.z+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+$ ", + " R+S+T+U+V+W+F+X+H+I+Y+Z+`+ @.@+@@@#@$@%@$ ", + "&@*@=@-@;@>@,@'@)@H+!@Y+K+~@{@]@+@^@/@(@_@:@<@[@}@|@1@2@3@ ", + "4@5@6@7@8@9@0@a@b@c@d@e@f@g@h@i@j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@", + " z@A@B@C@D@E@F@G@H@I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@Y@Z@`@ #", + " .#+#@###$#%#&#*#=#-#;#>#,#'# )#!#~#{#]#^#/#", + " (#_#:#<#", + " [#}#", + " ", + " ", + " ", + " "}; + """ + +def sections(obj): + """ Returns the discretization points of sections, with the advantage + that is a list of nSections lists, with the points. + @param Ship object + @return Sections points + """ + histogram = obj.nPoints[:] + points = obj.mSections[:] + sections = [] + for i in range(0, len(histogram) - 1): + sections.append([]) + for j in range(histogram[i],histogram[i+1]): + sections[i].append(points[j]) + return sections diff --git a/src/Mod/Ship/Makefile.am b/src/Mod/Ship/Makefile.am new file mode 100644 index 0000000000..ed2efda8dc --- /dev/null +++ b/src/Mod/Ship/Makefile.am @@ -0,0 +1,61 @@ +# Change data dir from default ($(prefix)/share) to actual dir +datadir = $(prefix)/Mod/Ship + +data_DATA = \ + InitGui.py \ + ShipGui.py \ + Instance.py + +nobase_data_DATA = \ + Icons/AreaCurveIco.png \ + Icons/AreaCurveIco.xcf \ + Icons/AreaCurveIco.xpm \ + Icons/DataIco.png \ + Icons/DataIco.xcf \ + Icons/DataIco.xpm \ + Icons/DiscretizeIco.png \ + Icons/DiscretizeIco.xcf \ + Icons/DiscretizeIco.xpm \ + Icons/HydrostaticsIco.png \ + Icons/HydrostaticsIco.xcf \ + Icons/HydrostaticsIco.xpm \ + Icons/Ico.png \ + Icons/Ico.xcf \ + Icons/Ico.xpm \ + Icons/OutlineDrawIco.png \ + Icons/OutlineDrawIco.xcf \ + Icons/OutlineDrawIco.xpm \ + Icons/ReparametrizeIco.png \ + Icons/ReparametrizeIco.xcf \ + Icons/ReparametrizeIco.xpm \ + Icons/Ship.xcf \ + Icons/Ship.xpm \ + shipCreateShip/__init__.py \ + shipCreateShip/Preview.py \ + shipCreateShip/TaskPanel.py \ + shipCreateShip/TaskPanel.ui \ + shipOutlineDraw/__init__.py \ + shipOutlineDraw/Plot.py \ + shipOutlineDraw/Preview.py \ + shipOutlineDraw/TaskPanel.py \ + shipOutlineDraw/TaskPanel.ui \ + shipAreasCurve/__init__.py \ + shipAreasCurve/Preview.py \ + shipAreasCurve/TaskPanel.py \ + shipAreasCurve/TaskPanel.ui \ + shipHydrostatics/__init__.py \ + shipHydrostatics/Tools.py \ + shipUtils/__init__.py \ + shipUtils/Math.py \ + shipUtils/Paths.py \ + shipUtils/Translator.py + +CLEANFILES = $(BUILT_SOURCES) + +EXTRA_DIST = \ + $(data_DATA) \ + $(nobase_data_DATA) \ + CMakeLists.txt \ + README \ + ship.dox + diff --git a/src/Mod/Ship/README b/src/Mod/Ship/README new file mode 100644 index 0000000000..4ebdbd41ce --- /dev/null +++ b/src/Mod/Ship/README @@ -0,0 +1,10 @@ +* Authors +--------- + +Jose Luis Cercós Pita + +* Introduction +-------------- + +FreeCAD-Ship is a free module for FreeCAD oriented to aid ship design providing most common tools (Outline drawing, hydrostatics, ...). + diff --git a/src/Mod/Ship/ShipGui.py b/src/Mod/Ship/ShipGui.py new file mode 100644 index 0000000000..2059565bfe --- /dev/null +++ b/src/Mod/Ship/ShipGui.py @@ -0,0 +1,65 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +from PyQt4 import QtCore, QtGui +import FreeCAD, FreeCADGui, os + +class CreateShip: + def Activated(self): + import shipCreateShip + shipCreateShip.load() + + def GetResources(self): + from shipUtils import Paths, Translator + IconPath = Paths.iconsPath() + "/Ico.png" + MenuText = str(Translator.translate('Create a new ship')) + ToolTip = str(Translator.translate('Create a new ship in order to work with them')) + return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip} + +class OutlineDraw: + def Activated(self): + import shipOutlineDraw + shipOutlineDraw.load() + + def GetResources(self): + from shipUtils import Paths, Translator + IconPath = Paths.iconsPath() + "/OutlineDrawIco.png" + MenuText = str(Translator.translate('Outline draw')) + ToolTip = str(Translator.translate('Plot ship outline draw')) + return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip} + +class AreasCurve: + def Activated(self): + import shipAreasCurve + shipAreasCurve.load() + + def GetResources(self): + from shipUtils import Paths, Translator + IconPath = Paths.iconsPath() + "/AreaCurveIco.png" + MenuText = str(Translator.translate('Areas curve')) + ToolTip = str(Translator.translate('Plot transversal areas curve')) + return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip} + +FreeCADGui.addCommand('Ship_CreateShip', CreateShip()) +FreeCADGui.addCommand('Ship_OutlineDraw', OutlineDraw()) +FreeCADGui.addCommand('Ship_AreasCurve', AreasCurve()) diff --git a/src/Mod/Ship/ship.dox b/src/Mod/Ship/ship.dox new file mode 100644 index 0000000000..ad7a274a71 --- /dev/null +++ b/src/Mod/Ship/ship.dox @@ -0,0 +1,3 @@ +/** \defgroup SHIP Ship + * \ingroup WORKBENCHES */ + diff --git a/src/Mod/Ship/shipAreasCurve/Preview.py b/src/Mod/Ship/shipAreasCurve/Preview.py new file mode 100644 index 0000000000..8f2d7eba15 --- /dev/null +++ b/src/Mod/Ship/shipAreasCurve/Preview.py @@ -0,0 +1,78 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +# FreeCAD modules +import FreeCAD,FreeCADGui +from FreeCAD import Base +from FreeCAD import Part +# FreeCADShip modules +from shipUtils import Paths, Translator + +class Preview(object): + def __init__(self): + """ Constructor. + """ + self.reinit() + + def reinit(self): + """ Reinitializate drawer. + """ + self.obj = None + self.clean() + + def update(self, draft, trim, ship): + """ Update free surface 3D view + @param traft Draft. + @param trim Trim in degrees. + """ + # Destroy old object if exist + self.clean() + # Set free surface bounds + bbox = ship.Shape.BoundBox + L = 1.5 * bbox.XLength + B = 3.0 * bbox.YLength + # Create plane + x = - 0.5 * L + y = - 0.5 * B + point = Base.Vector(x,y,0.0) + plane = Part.makePlane(L,B, point, Base.Vector(0,0,1)) + # Set position + plane.rotate(Base.Vector(0,0,0), Base.Vector(0,1,0), trim) + plane.translate(Base.Vector(0,0,draft)) + # Create the FreeCAD object + Part.show(plane) + objs = FreeCAD.ActiveDocument.Objects + self.obj = objs[len(objs)-1] + self.obj.Label = 'FreeSurface' + # Set properties of object + guiObj = FreeCADGui.ActiveDocument.getObject(self.obj.Name) + guiObj.ShapeColor = (0.4,0.8,0.85) + guiObj.Transparency = 50 + + def clean(self): + """ Erase all annotations from screen. + """ + if not self.obj: + return + FreeCAD.ActiveDocument.removeObject(self.obj.Name) + self.obj=None diff --git a/src/Mod/Ship/shipAreasCurve/TaskPanel.py b/src/Mod/Ship/shipAreasCurve/TaskPanel.py new file mode 100644 index 0000000000..3a5dab2fc9 --- /dev/null +++ b/src/Mod/Ship/shipAreasCurve/TaskPanel.py @@ -0,0 +1,224 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +import math +# FreeCAD modules +import FreeCAD as App +import FreeCADGui as Gui +# Qt library +from PyQt4 import QtGui,QtCore +# Module +import Preview +import Instance +from shipUtils import Paths, Translator +from surfUtils import Geometry +from shipHydrostatics import Tools as Hydrostatics + +class TaskPanel: + def __init__(self): + self.ui = Paths.modulePath() + "/shipAreasCurve/TaskPanel.ui" + self.preview = Preview.Preview() + self.ship = None + + def accept(self): + if not self.ship: + return False + self.save() + self.preview.clean() + return True + + def reject(self): + self.preview.clean() + return True + + def clicked(self, index): + pass + + def open(self): + pass + + def needsFullSpace(self): + return True + + def isAllowedAlterSelection(self): + return False + + def isAllowedAlterView(self): + return True + + def isAllowedAlterDocument(self): + return False + + def helpRequested(self): + pass + + def setupUi(self): + mw = self.getMainWindow() + form = mw.findChild(QtGui.QWidget, "TaskPanel") + form.draft = form.findChild(QtGui.QDoubleSpinBox, "Draft") + form.trim = form.findChild(QtGui.QDoubleSpinBox, "Trim") + form.output = form.findChild(QtGui.QTextEdit, "OutputData") + form.doc = QtGui.QTextDocument(form.output) + self.form = form + # Initial values + if self.initValues(): + return True + self.retranslateUi() + # Connect Signals and Slots + QtCore.QObject.connect(form.draft, QtCore.SIGNAL("valueChanged(double)"), self.onData) + QtCore.QObject.connect(form.trim, QtCore.SIGNAL("valueChanged(double)"), self.onData) + + def getMainWindow(self): + "returns the main window" + # using QtGui.qApp.activeWindow() isn't very reliable because if another + # widget than the mainwindow is active (e.g. a dialog) the wrong widget is + # returned + toplevel = QtGui.qApp.topLevelWidgets() + for i in toplevel: + if i.metaObject().className() == "Gui::MainWindow": + return i + raise Exception("No main window found") + + def initValues(self): + """ Set initial values for fields + """ + # Get objects + selObjs = Geometry.getSelectedObjs() + if not selObjs: + msg = Translator.translate("Ship instance must be selected (any object selected)\n") + App.Console.PrintError(msg) + return True + for i in range(0,len(selObjs)): + obj = selObjs[i] + # Test if is a ship instance + props = obj.PropertiesList + try: + props.index("IsShip") + except ValueError: + continue + if obj.IsShip: + # Test if another ship already selected + if self.ship: + msg = Translator.translate("More than one ship selected (extra ship will be neglected)\n") + App.Console.PrintWarning(msg) + break + self.ship = obj + # Test if any valid ship was selected + if not self.ship: + msg = Translator.translate("Ship instance must be selected (any valid ship found at selected objects)\n") + App.Console.PrintError(msg) + return True + # Get bounds + bbox = self.ship.Shape.BoundBox + self.form.draft.setMaximum(bbox.ZMax) + self.form.draft.setMinimum(bbox.ZMin) + self.form.draft.setValue(self.ship.Draft) + # Try to use saved values + props = self.ship.PropertiesList + flag = True + try: + props.index("AreaCurveDraft") + except ValueError: + flag = False + if flag: + self.form.draft.setValue(self.ship.AreaCurveDraft) + flag = True + try: + props.index("AreaCurveTrim") + except ValueError: + flag = False + if flag: + self.form.trim.setValue(self.ship.AreaCurveTrim) + # Update GUI + self.preview.update(self.form.draft.value(), self.form.trim.value(), self.ship) + self.onUpdate() + msg = Translator.translate("Ready to work\n") + App.Console.PrintMessage(msg) + return False + + def retranslateUi(self): + """ Set user interface locale strings. + """ + self.form.setWindowTitle(Translator.translate("Plot transversal areas curve")) + self.form.findChild(QtGui.QLabel, "DraftLabel").setText(Translator.translate("Draft")) + self.form.findChild(QtGui.QLabel, "TrimLabel").setText(Translator.translate("Trim")) + + def onData(self, value): + """ Method called when input data is changed. + @param value Changed value. + """ + if not self.ship: + return + self.onUpdate() + self.preview.update(self.form.draft.value(), self.form.trim.value(), self.ship) + + def onUpdate(self): + """ Method called when update data request. + """ + if not self.ship: + return + # Calculate drafts + angle = math.radians(self.form.trim.value()) + L = self.ship.Length + draftAP = self.form.draft.value() + 0.5*L*math.tan(angle) + if draftAP < 0.0: + draftAP = 0.0 + draftFP = self.form.draft.value() - 0.5*L*math.tan(angle) + if draftFP < 0.0: + draftFP = 0.0 + # Calculate hydrostatics involved + data = Hydrostatics.Displacement(self.ship,self.form.draft.value(),self.form.trim.value()) + # Prepare the string in html format + string = 'L = %g [m]
' % (self.ship.Length) + string = string + 'B = %g [m]
' % (self.ship.Beam) + string = string + 'T = %g [m]
' % (self.form.draft.value()) + string = string + 'Trim = %g [degrees]
' % (self.form.trim.value()) + string = string + 'TAP = %g [m]
' % (draftAP) + string = string + 'TFP = %g [m]
' % (draftFP) + string = string + Translator.translate('Displacement') + ' = %g [ton]
' % (data[1]) + string = string + 'XCB = %g [m]' % (data[2]) + # Set the document + self.form.output.setHtml(string) + + def save(self): + """ Saves data into ship instance. + """ + props = self.ship.PropertiesList + try: + props.index("AreaCurveDraft") + except ValueError: + self.ship.addProperty("App::PropertyFloat","AreaCurveDraft","Ship", str(Translator.translate("Areas curve draft selected [m]"))) + self.ship.AreaCurveDraft = self.form.draft.value() + try: + props.index("AreaCurveTrim") + except ValueError: + self.ship.addProperty("App::PropertyFloat","AreaCurveTrim","Ship", str(Translator.translate("Areas curve trim selected [m]"))) + self.ship.AreaCurveTrim = self.form.draft.value() + +def createTask(): + panel = TaskPanel() + Gui.Control.showDialog(panel) + if panel.setupUi(): + Gui.Control.closeDialog(panel) + return None + return panel diff --git a/src/Mod/Ship/shipAreasCurve/TaskPanel.ui b/src/Mod/Ship/shipAreasCurve/TaskPanel.ui new file mode 100644 index 0000000000..8e03561851 --- /dev/null +++ b/src/Mod/Ship/shipAreasCurve/TaskPanel.ui @@ -0,0 +1,105 @@ + + + TaskPanel + + + + 0 + 0 + 260 + 256 + + + + Create new ship + + + + + + + + Draft + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 3 + + + 0.100000000000000 + + + + + + + + 24 + 16777215 + + + + m + + + + + + + + + + + Trim + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 1 + + + -45.000000000000000 + + + 45.000000000000000 + + + + + + + + 24 + 16777215 + + + + Deg + + + + + + + + + Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse + + + + + + + + diff --git a/src/Mod/Ship/shipAreasCurve/__init__.py b/src/Mod/Ship/shipAreasCurve/__init__.py new file mode 100644 index 0000000000..cbfb57d75d --- /dev/null +++ b/src/Mod/Ship/shipAreasCurve/__init__.py @@ -0,0 +1,36 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +# FreeCAD modules +import FreeCAD +import FreeCADGui + +# Qt libraries +from PyQt4 import QtGui,QtCore + +# Main object +import TaskPanel + +def load(): + """ Loads the tool """ + TaskPanel.createTask() diff --git a/src/Mod/Ship/shipCreateShip/Preview.py b/src/Mod/Ship/shipCreateShip/Preview.py new file mode 100644 index 0000000000..b4d9e39b9a --- /dev/null +++ b/src/Mod/Ship/shipCreateShip/Preview.py @@ -0,0 +1,130 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +# FreeCAD modules +import FreeCAD,FreeCADGui +from FreeCAD import Base +from FreeCAD import Part +# FreeCADShip modules +from shipUtils import Paths, Translator + +class Preview(object): + def __init__(self): + """ Constructor. + """ + self.baseLine = None + self.baseLineLabel = None + self.reinit() + + def reinit(self): + """ Reinitializate drawer. + """ + self.clean() + + def update(self, L, B, T): + """ Update the 3D view printing annotations. + @param L Ship length. + @param B Ship beam. + @param T Ship draft. + """ + # Destroy all previous entities + self.clean() + # Draw base line + xStart = -0.6*L; + xEnd = 0.6*L; + baseLine = Part.makeLine((xStart,0,0),(xEnd,0,0)) + Part.show(baseLine) + objs = FreeCAD.ActiveDocument.Objects + self.baseLine = objs[len(objs)-1] + self.baseLine.Label = 'BaseLine' + self.baseLineLabel = DrawText('BaseLineText', str(Translator.translate('Base line')), Base.Vector(xEnd,0,0)) + # Draw free surface + fsLine = Part.makeLine((xStart,0,T),(xEnd,0,T)) + Part.show(fsLine) + objs = FreeCAD.ActiveDocument.Objects + self.fsLine = objs[len(objs)-1] + self.fsLine.Label = 'FreeSurface' + self.fsLineLabel = DrawText('FSText', str(Translator.translate('Free surface')), Base.Vector(xEnd,0,T)) + # Draw forward perpendicular + zStart = -0.1*T + zEnd = 1.1*T + fpLine = Part.makeLine((0.5*L,0,zStart),(0.5*L,0,zEnd)) + Part.show(fpLine) + objs = FreeCAD.ActiveDocument.Objects + self.fpLine = objs[len(objs)-1] + self.fpLine.Label = 'ForwardPerpendicular' + self.fpLineLabel = DrawText('FPText', str(Translator.translate('Forward perpendicular')), Base.Vector(0.5*L,0,zEnd)) + # Draw after perpendicular + apLine = Part.makeLine((-0.5*L,0,zStart),(-0.5*L,0,zEnd)) + Part.show(apLine) + objs = FreeCAD.ActiveDocument.Objects + self.apLine = objs[len(objs)-1] + self.apLine.Label = 'AfterPerpendicular' + self.apLineLabel = DrawText('APText', str(Translator.translate('After perpendicular')), Base.Vector(-0.5*L,0,zEnd)) + # Draw amin frame + amLine = Part.makeLine((0,-0.5*B,zStart),(0,-0.5*B,zEnd)) + Part.show(amLine) + objs = FreeCAD.ActiveDocument.Objects + self.amLine = objs[len(objs)-1] + self.amLine.Label = 'AminFrame' + self.amLineLabel = DrawText('AMText', str(Translator.translate('Amin frame')), Base.Vector(0,-0.5*B,zEnd)) + + def clean(self): + """ Erase all annotations from screen. + """ + if not self.baseLine: + return + FreeCAD.ActiveDocument.removeObject(self.baseLine.Name) + FreeCAD.ActiveDocument.removeObject(self.baseLineLabel.Name) + FreeCAD.ActiveDocument.removeObject(self.fsLine.Name) + FreeCAD.ActiveDocument.removeObject(self.fsLineLabel.Name) + FreeCAD.ActiveDocument.removeObject(self.fpLine.Name) + FreeCAD.ActiveDocument.removeObject(self.fpLineLabel.Name) + FreeCAD.ActiveDocument.removeObject(self.apLine.Name) + FreeCAD.ActiveDocument.removeObject(self.apLineLabel.Name) + FreeCAD.ActiveDocument.removeObject(self.amLine.Name) + FreeCAD.ActiveDocument.removeObject(self.amLineLabel.Name) + +def DrawText(name, string, position, displayMode="Screen", angle=0.0, justification="Left", colour=(0.00,0.00,0.00), size=12): + """ Draws a text in a desired position. + @param name Name of the object + @param string Text to draw (recommended format u'') + @param position Point to draw the text + @param angle Counter clockwise rotation of text + @param justification Alignement of the text ("Left", "Right" or "Center") + @param colour Colour of the text + @param size Font size + @return FreeCAD annotation object + """ + # Create the object + text = FreeCAD.ActiveDocument.addObject("App::Annotation",name) + # Set the text + text.LabelText = [string, u''] + # Set the options + text.Position = position + FreeCADGui.ActiveDocument.getObject(text.Name).Rotation = angle + FreeCADGui.ActiveDocument.getObject(text.Name).Justification = justification + FreeCADGui.ActiveDocument.getObject(text.Name).FontSize = size + FreeCADGui.ActiveDocument.getObject(text.Name).TextColor = colour + FreeCADGui.ActiveDocument.getObject(text.Name).DisplayMode = displayMode + return FreeCAD.ActiveDocument.getObject(text.Name) diff --git a/src/Mod/Ship/shipCreateShip/TaskPanel.py b/src/Mod/Ship/shipCreateShip/TaskPanel.py new file mode 100644 index 0000000000..bee6c69648 --- /dev/null +++ b/src/Mod/Ship/shipCreateShip/TaskPanel.py @@ -0,0 +1,199 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +# FreeCAD modules +import FreeCAD as App +import FreeCADGui as Gui +# Qt library +from PyQt4 import QtGui,QtCore +# Module +import Preview +import Instance +from shipUtils import Paths, Translator +from surfUtils import Geometry + +class TaskPanel: + def __init__(self): + self.ui = Paths.modulePath() + "/shipCreateShip/TaskPanel.ui" + self.preview = Preview.Preview() + + def accept(self): + self.preview.clean() + # Create new ship instance + obj = App.ActiveDocument.addObject("Part::FeaturePython","Ship") + ship = Instance.Ship(obj, self.faces) + Instance.ViewProviderShip(obj.ViewObject) + # Set main dimensions + obj.Length = self.form.length.value() + obj.Beam = self.form.beam.value() + obj.Draft = self.form.draft.value() + # Discretize it + ship.discretize(self.form.nSections.value(), self.form.nPoints.value()) + return True + + def reject(self): + self.preview.clean() + self.close() + return True + + def clicked(self, index): + pass + + def open(self): + pass + + def needsFullSpace(self): + return True + + def isAllowedAlterSelection(self): + return False + + def isAllowedAlterView(self): + return True + + def isAllowedAlterDocument(self): + return False + + def helpRequested(self): + pass + + def setupUi(self): + mw = self.getMainWindow() + form = mw.findChild(QtGui.QWidget, "TaskPanel") + form.length = form.findChild(QtGui.QDoubleSpinBox, "Length") + form.beam = form.findChild(QtGui.QDoubleSpinBox, "Beam") + form.draft = form.findChild(QtGui.QDoubleSpinBox, "Draft") + form.nSections = form.findChild(QtGui.QSpinBox, "NSections") + form.nPoints = form.findChild(QtGui.QSpinBox, "NPoints") + form.mainLogo = form.findChild(QtGui.QLabel, "MainLogo") + iconPath = Paths.iconsPath() + "/Ico.xpm" + form.mainLogo.setPixmap(QtGui.QPixmap(iconPath)) + self.form = form + # Initial values + if self.initValues(): + return True + self.retranslateUi() + self.preview.update(self.L, self.B, self.T) + # Connect Signals and Slots + QtCore.QObject.connect(form.length, QtCore.SIGNAL("valueChanged(double)"), self.onData) + QtCore.QObject.connect(form.beam, QtCore.SIGNAL("valueChanged(double)"), self.onData) + QtCore.QObject.connect(form.draft, QtCore.SIGNAL("valueChanged(double)"), self.onData) + QtCore.QObject.connect(form.nSections, QtCore.SIGNAL("valueChanged(int)"), self.onDiscretization) + QtCore.QObject.connect(form.nPoints, QtCore.SIGNAL("valueChanged(int)"), self.onDiscretization) + + def getMainWindow(self): + "returns the main window" + # using QtGui.qApp.activeWindow() isn't very reliable because if another + # widget than the mainwindow is active (e.g. a dialog) the wrong widget is + # returned + toplevel = QtGui.qApp.topLevelWidgets() + for i in toplevel: + if i.metaObject().className() == "Gui::MainWindow": + return i + raise Exception("No main window found") + + def initValues(self): + """ Set initial values for fields + """ + # Get objects + self.faces = None + selObjs = Geometry.getSelectedObjs() + if not selObjs: + msg = Translator.translate("All ship surfaces must be selected (Any object has been selected)\n") + App.Console.PrintError(msg) + return True + self.faces = [] + for i in range(0, len(selObjs)): + faces = Geometry.getFaces(selObjs[i]) + for j in range(0, len(faces)): + self.faces.append(faces[j]) + if not self.faces: + msg = Translator.translate("All ship surfaces must be selected (Any face found into selected objects)\n") + App.Console.PrintError(msg) + return True + # Get bounds + bounds = [0.0, 0.0, 0.0] + bbox = self.faces[0].BoundBox + bounds[0] = bbox.XLength + bounds[1] = bbox.YLength + bounds[2] = bbox.ZLength + for i in range(1,len(self.faces)): + bbox = self.faces[i].BoundBox + if bounds[0] < bbox.XLength: + bounds[0] = bbox.XLength + if bounds[1] < bbox.YLength: + bounds[1] = bbox.YLength + if bounds[2] < bbox.ZLength: + bounds[2] = bbox.ZLength + # Set UI fields + self.form.length.setMaximum(bounds[0]) + self.form.length.setValue(bounds[0]) + self.L = bounds[0] + self.form.beam.setMaximum(2.0*bounds[1]) + self.form.beam.setValue(2.0*bounds[1]) + self.B = 2.0*bounds[1] + self.form.draft.setMaximum(bounds[2]) + self.form.draft.setValue(0.5*bounds[2]) + self.T = 0.5*bounds[2] + msg = Translator.translate("Ready to work\n") + App.Console.PrintMessage(msg) + return False + + def retranslateUi(self): + """ Set user interface locale strings. + """ + self.form.setWindowTitle(Translator.translate("Create a new ship")) + self.form.findChild(QtGui.QLabel, "LengthLabel").setText(Translator.translate("Length")) + self.form.findChild(QtGui.QLabel, "BeamLabel").setText(Translator.translate("Beam")) + self.form.findChild(QtGui.QLabel, "DraftLabel").setText(Translator.translate("Draft")) + self.form.findChild(QtGui.QLabel, "NSectionsLabel").setText(Translator.translate("Number of sections")) + self.form.findChild(QtGui.QLabel, "NPointsLabel").setText(Translator.translate("Points per section")) + + def onData(self, value): + """ Method called when ship data is changed. + Annotations must be showed. + @param value Changed value. + """ + self.L = self.form.length.value() + self.B = self.form.beam.value() + self.T = self.form.draft.value() + self.preview.update(self.L, self.B, self.T) + + def onDiscretization(self, value): + """ Method called when discretization data is changed. + Annotations must be showed. + @param value Changed value. + """ + pass + + def close(self): + """ Destroy all dependant objects + """ + +def createTask(): + panel = TaskPanel() + Gui.Control.showDialog(panel) + if panel.setupUi(): + Gui.Control.closeDialog(panel) + return None + return panel diff --git a/src/Mod/Ship/shipCreateShip/TaskPanel.ui b/src/Mod/Ship/shipCreateShip/TaskPanel.ui new file mode 100644 index 0000000000..9642e1bd22 --- /dev/null +++ b/src/Mod/Ship/shipCreateShip/TaskPanel.ui @@ -0,0 +1,299 @@ + + + TaskPanel + + + + 0 + 0 + 260 + 514 + + + + Create new ship + + + + + + + + + + + 128 + 128 + + + + + 128 + 128 + + + + + + + ../Icons/Ico.xpm + + + true + + + Qt::AlignHCenter|Qt::AlignTop + + + + + + + + + + 240 + 160 + + + + Ship data + + + false + + + + + 0 + 20 + 241 + 141 + + + + + 6 + + + QLayout::SetDefaultConstraint + + + + + QLayout::SetDefaultConstraint + + + 10 + + + 0 + + + 10 + + + 0 + + + + + Length + + + + + + + 3 + + + 0.010000000000000 + + + + + + + + + 10 + + + 0 + + + 10 + + + 0 + + + + + Beam + + + + + + + 3 + + + 0.010000000000000 + + + + + + + + + 10 + + + 0 + + + 10 + + + 0 + + + + + Draft + + + + + + + 3 + + + 0.010000000000000 + + + + + + + + + + + + + + 240 + 160 + + + + Qt::LeftToRight + + + Discretization + + + + + 0 + 20 + 241 + 101 + + + + + + + 10 + + + 0 + + + 10 + + + 0 + + + + + Number of sections + + + + + + + 50 + + + 500 + + + 50 + + + 50 + + + + + + + + + 10 + + + 0 + + + 10 + + + 0 + + + + + Points per section + + + + + + + 10 + + + 500 + + + 10 + + + 10 + + + + + + + + + + + + + + + + diff --git a/src/Mod/Ship/shipCreateShip/__init__.py b/src/Mod/Ship/shipCreateShip/__init__.py new file mode 100644 index 0000000000..cbfb57d75d --- /dev/null +++ b/src/Mod/Ship/shipCreateShip/__init__.py @@ -0,0 +1,36 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +# FreeCAD modules +import FreeCAD +import FreeCADGui + +# Qt libraries +from PyQt4 import QtGui,QtCore + +# Main object +import TaskPanel + +def load(): + """ Loads the tool """ + TaskPanel.createTask() diff --git a/src/Mod/Ship/shipHydrostatics/Tools.py b/src/Mod/Ship/shipHydrostatics/Tools.py new file mode 100644 index 0000000000..32ce25dc0f --- /dev/null +++ b/src/Mod/Ship/shipHydrostatics/Tools.py @@ -0,0 +1,104 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +import math +# FreeCAD modules +import FreeCAD as App +import FreeCADGui as Gui +# Module +import Instance + +def Displacement(ship, draft, trim): + """ Calculate ship displacement. + @param ship Selected ship instance + @param traft Draft. + @param trim Trim in degrees. + @return [areas,disp,xcb]: \n + areas : Area of each section \n + disp: Ship displacement \n + xcb: X bouyance center coordinate + """ + angle = math.radians(trim) + sections = Instance.sections(ship) + xCoord = ship.xSection[:] + areas = [] + vol = 0.0 + moment = 0.0 + if not sections: + return [[],0.0,0.0] + for i in range(0, len(sections)): + # Get the section + section = sections[i] + if len(section) < 2: # Empty section + areas.append(0.0) + continue + # Get the position of the section + x = xCoord[i] + # Get the maximum Z value + Z = draft - x*math.tan(angle) + # Count the number of valid points + n = 0 + for j in range(0,len(section)): + z = section[j].z + if z > Z: + break + n = n+1 + # Discard invalid sections + if n == 0: + areas.append(0.0) + continue + # Truncate only valid points + points = section[0:n] + # Study if additional point is needed + if n < len(section): + y0 = section[n-1].y + z0 = section[n-1].z + y1 = section[n].y + z1 = section[n].z + factor = (Z - z0) / (z1 - z0) + y = y0 + factor*(y1 - y0) + points.append(App.Base.Vector(x,y,Z)) + # Integrate area + area = 0.0 + for j in range(0, len(points)-1): + y0 = abs(points[j].y) + z0 = points[j].z + y1 = abs(points[j+1].y) + z1 = points[j+1].z + y = 0.5 * (y0 + y1) + dz = z1 - z0 + area = area + 2.0*y*dz # 2x because only half ship is represented + areas.append(area) + # Add volume & moment if proceed + if i > 0: + dx = xCoord[i] - xCoord[i-1] + x = 0.5*(xCoord[i] + xCoord[i-1]) + area = 0.5*(areas[i] + areas[i-1]) + vol = vol + area*dx + moment = moment + area*dx*x + # Compute displacement and xcb + disp = vol / 1.025 # rho = 1.025 ton/m3 (salt water density) + xcb = 0.0 + if vol > 0.0: + xcb = moment / vol + return [areas,disp,xcb] diff --git a/src/Mod/Ship/shipHydrostatics/__init__.py b/src/Mod/Ship/shipHydrostatics/__init__.py new file mode 100644 index 0000000000..55ed9aee58 --- /dev/null +++ b/src/Mod/Ship/shipHydrostatics/__init__.py @@ -0,0 +1,23 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + diff --git a/src/Mod/Ship/shipOutlineDraw/Plot.py b/src/Mod/Ship/shipOutlineDraw/Plot.py new file mode 100644 index 0000000000..155b6b0b62 --- /dev/null +++ b/src/Mod/Ship/shipOutlineDraw/Plot.py @@ -0,0 +1,95 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +# FreeCAD modules +import FreeCAD,FreeCADGui +from FreeCAD import Base, Part, Vector +# FreeCADShip modules +from shipUtils import Paths, Translator +from surfUtils import Geometry + +def Plot(scale, sections, shape): + """ Creates the outline draw. + @param scale Plane scale (format 1:scale) + @param sections Sections computed. + @param shape Ship surfaces shell + @return plotted object (DocumentObject) + """ + msg = Translator.translate('Performing plot (Scale 1:%d)...\n' % (scale)) + FreeCAD.Console.PrintMessage(msg) + scale = 1000.0 / scale + # Take positions + bounds = [0.0, 0.0, 0.0] + bbox = shape.BoundBox + bounds[0] = bbox.XLength + bounds[1] = bbox.YLength + bounds[2] = bbox.ZLength + xTot = scale*bounds[1] + 32.0 + scale*bounds[0] + yTot = scale*bounds[2] + 32.0 + scale*bounds[1] + xMid = 210.0 + yMid = 185.0 + x0 = xMid - 0.5*xTot + y0 = 297.0 - yMid - 0.5*yTot # 297 = A3_width + # Get border + edges = Geometry.getEdges([shape]) + border = edges[0] + for i in range(0,len(edges)): + border = border.oldFuse(edges[i]) # Only group objects, don't try to build more complex entities + border = border.oldFuse(edges[i].mirror(Vector(0.0, 0.0, 0.0),Vector(0.0, 1.0, 0.0))) + # Fuse sections & borders + obj = sections.oldFuse(border) + # Send to 3D view + Part.show(obj) + objs = FreeCAD.ActiveDocument.Objects + obj = objs[len(objs)-1] + # Create a new plane + FreeCAD.ActiveDocument.addObject('Drawing::FeaturePage','OutlineDrawPlot') + FreeCAD.ActiveDocument.OutlineDrawPlot.Template = FreeCAD.getResourceDir()+'Mod/Drawing/Templates/A3_Landscape.svg' + # Side view + FreeCAD.ActiveDocument.addObject('Drawing::FeatureViewPart','OutlineDrawSideView') + FreeCAD.ActiveDocument.OutlineDrawSideView.Source = obj + FreeCAD.ActiveDocument.OutlineDrawSideView.Direction = (1.0,0.0,0.0) + FreeCAD.ActiveDocument.OutlineDrawSideView.Rotation = -90.0 + FreeCAD.ActiveDocument.OutlineDrawSideView.Scale = scale + FreeCAD.ActiveDocument.OutlineDrawSideView.X = 420.0 - x0 - 0.5*scale*bounds[1] # 420 = A3_height + FreeCAD.ActiveDocument.OutlineDrawSideView.Y = y0 + 0.5*scale*bounds[2] + FreeCAD.ActiveDocument.OutlineDrawPlot.addObject(FreeCAD.ActiveDocument.OutlineDrawSideView) + # Front view + FreeCAD.ActiveDocument.addObject('Drawing::FeatureViewPart','OutlineDrawFrontView') + FreeCAD.ActiveDocument.OutlineDrawFrontView.Source = obj + FreeCAD.ActiveDocument.OutlineDrawFrontView.Direction = (0.0,1.0,0.0) + FreeCAD.ActiveDocument.OutlineDrawFrontView.Rotation = -90.0 + FreeCAD.ActiveDocument.OutlineDrawFrontView.Scale = scale + FreeCAD.ActiveDocument.OutlineDrawFrontView.X = 420.0 - x0 - scale*bounds[1] - 32 - 0.5*scale*bounds[0] + FreeCAD.ActiveDocument.OutlineDrawFrontView.Y = y0 + 0.5*scale*bounds[2] + FreeCAD.ActiveDocument.OutlineDrawPlot.addObject(FreeCAD.ActiveDocument.OutlineDrawFrontView) + # Up view + FreeCAD.ActiveDocument.addObject('Drawing::FeatureViewPart','OutlineDrawUpView') + FreeCAD.ActiveDocument.OutlineDrawUpView.Source = obj + FreeCAD.ActiveDocument.OutlineDrawUpView.Direction = (0.0,0.0,1.0) + FreeCAD.ActiveDocument.OutlineDrawUpView.Scale = scale + FreeCAD.ActiveDocument.OutlineDrawUpView.X = 420.0 - x0 - scale*bounds[1] - 32 - 0.5*scale*bounds[0] + FreeCAD.ActiveDocument.OutlineDrawUpView.Y = y0 + scale*bounds[2] + 32 + FreeCAD.ActiveDocument.OutlineDrawPlot.addObject(FreeCAD.ActiveDocument.OutlineDrawUpView) + FreeCAD.ActiveDocument.recompute() + return obj diff --git a/src/Mod/Ship/shipOutlineDraw/Preview.py b/src/Mod/Ship/shipOutlineDraw/Preview.py new file mode 100644 index 0000000000..cf615db05e --- /dev/null +++ b/src/Mod/Ship/shipOutlineDraw/Preview.py @@ -0,0 +1,126 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +# FreeCAD modules +import FreeCAD,FreeCADGui +from FreeCAD import Base, Part, Vector +# FreeCADShip modules +from shipUtils import Paths, Translator + +class Preview(object): + def __init__(self): + """ Constructor. + """ + self.obj = None + self.reinit() + + def reinit(self): + """ Reinitializate drawer. + """ + self.clean() + + def update(self, L, B, T, sectionsL, sectionsB, sectionsT, shape): + """ Update the 3D view printing annotations. + @param L Ship Lpp. + @param B Ship beam. + @param T Ship draft. + @param sectionsL Transversal sections. + @param sectionsB Longitudinal sections. + @param sectionsT Water lines. + @param shape Ship surfaces shell + @return Sections object. None if errors happens. + """ + FreeCAD.Console.PrintMessage(Translator.translate('Computing sections...\n')) + # Destroy all previous entities + self.clean() + # Receive data + nL = len(sectionsL) + nB = len(sectionsB) + nT = len(sectionsT) + if not (nL or nB or nT): + return None + # Found sections + sections = [] + for i in range(0,nL): + pos = sectionsL[i] + section = shape.slice(Vector(1.0,0.0,0.0), pos) + for j in range(0,len(section)): + edges = section[j].Edges + if pos == 0.0: + section[j] = section[j].mirror(Vector(0.0, 0.0, 0.0),Vector(0.0, 1.0, 0.0)) + edges2 = section[j].Edges + for k in range(0,len(edges2)): + edges.append(edges2[k]) + elif pos < 0: + section[j] = section[j].mirror(Vector(0.0, 0.0, 0.0),Vector(0.0, 1.0, 0.0)) + edges = section[j].Edges + for k in range(0,len(edges)): + sections.append(edges[k]) + for i in range(0,nB): + pos = sectionsB[i] + section = shape.slice(Vector(0.0,1.0,0.0), pos) + for j in range(0,len(section)): + edges = section[j].Edges + section[j] = section[j].mirror(Vector(0.0, 0.0, 0.0),Vector(0.0, 1.0, 0.0)) + edges2 = section[j].Edges + for k in range(0,len(edges2)): + edges.append(edges2[k]) + for k in range(0,len(edges)): + sections.append(edges[k]) + for i in range(0,nT): + pos = sectionsT[i] + section = shape.slice(Vector(0.0,0.0,1.0), pos) + for j in range(0,len(section)): + edges = section[j].Edges + if pos == T: + section[j] = section[j].mirror(Vector(0.0, 0.0, 0.0),Vector(0.0, 1.0, 0.0)) + edges2 = section[j].Edges + for k in range(0,len(edges2)): + edges.append(edges2[k]) + elif pos > T: + section[j] = section[j].mirror(Vector(0.0, 0.0, 0.0),Vector(0.0, 1.0, 0.0)) + edges = section[j].Edges + for k in range(0,len(edges)): + sections.append(edges[k]) + # Convert all BSplines into a shape + if not sections: + msg = Translator.translate('Any valid ship section found\n') + FreeCAD.Console.PrintWarning(msg) + return + obj = sections[0] + for i in range(1,len(sections)): + obj = obj.oldFuse(sections[i]) # Only group the edges, don't try to build more complex entities + # Create the representable object + Part.show(obj) + objs = FreeCAD.ActiveDocument.Objects + self.obj = objs[len(objs)-1] + self.obj.Label = 'OutlineDraw' + return self.obj + + def clean(self): + """ Erase all annotations from screen. + """ + if not self.obj: + return + FreeCAD.ActiveDocument.removeObject(self.obj.Name) + self.obj = None diff --git a/src/Mod/Ship/shipOutlineDraw/TaskPanel.py b/src/Mod/Ship/shipOutlineDraw/TaskPanel.py new file mode 100644 index 0000000000..a745263c63 --- /dev/null +++ b/src/Mod/Ship/shipOutlineDraw/TaskPanel.py @@ -0,0 +1,349 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +# FreeCAD modules +import FreeCAD as App +import FreeCADGui as Gui +# Qt library +from PyQt4 import QtGui,QtCore +# Module +import Preview, Plot +import Instance +from shipUtils import Paths, Translator +from surfUtils import Geometry + +class TaskPanel: + def __init__(self): + self.ui = Paths.modulePath() + "/shipOutlineDraw/TaskPanel.ui" + self.ship = None + self.skip = False + self.LSections = [] + self.BSections = [] + self.TSections = [] + self.obj = None + self.preview = Preview.Preview() + + def accept(self): + self.saveSections() + self.obj = Plot.Plot(self.form.scale.value(), self.obj.Shape, self.ship.Shape) + self.preview.clean() + self.obj.Label = 'OutlineDraw' + return True + + def reject(self): + self.preview.clean() + return True + + def clicked(self, index): + pass + + def open(self): + pass + + def needsFullSpace(self): + return True + + def isAllowedAlterSelection(self): + return False + + def isAllowedAlterView(self): + return True + + def isAllowedAlterDocument(self): + return False + + def helpRequested(self): + pass + + def setupUi(self): + mw = self.getMainWindow() + form = mw.findChild(QtGui.QWidget, "TaskPanel") + form.sections = form.findChild(QtGui.QTableWidget, "Sections") + try: + form.sections.setInputMethodHints(QtCore.Qt.ImhFormattedNumbersOnly) + except: + msg = Translator.translate("QtCore.Qt.ImhFormattedNumbersOnly not supported, will not used.\n") + App.Console.PrintWarning(msg) + form.sectionType = form.findChild(QtGui.QComboBox, "SectionType") + form.deleteButton = form.findChild(QtGui.QPushButton, "DeleteButton") + form.nSections = form.findChild(QtGui.QSpinBox, "NSections") + form.createButton = form.findChild(QtGui.QPushButton, "CreateButton") + form.scale = form.findChild(QtGui.QSpinBox, "Scale") + self.form = form + # Initial values + if self.initValues(): + return True + self.retranslateUi() + self.obj = self.preview.update(self.ship.Length, self.ship.Beam, self.ship.Draft, self.LSections,self.BSections,self.TSections, self.ship.Shape) + # Connect Signals and Slots + QtCore.QObject.connect(form.sectionType,QtCore.SIGNAL("activated(QString)"),self.onSectionType) + QtCore.QObject.connect(form.sections,QtCore.SIGNAL("cellChanged(int,int)"),self.onTableItem); + QtCore.QObject.connect(form.deleteButton,QtCore.SIGNAL("pressed()"),self.onDeleteButton) + QtCore.QObject.connect(form.createButton,QtCore.SIGNAL("pressed()"),self.onCreateButton) + + def getMainWindow(self): + "returns the main window" + # using QtGui.qApp.activeWindow() isn't very reliable because if another + # widget than the mainwindow is active (e.g. a dialog) the wrong widget is + # returned + toplevel = QtGui.qApp.topLevelWidgets() + for i in toplevel: + if i.metaObject().className() == "Gui::MainWindow": + return i + raise Exception("No main window found") + + def initValues(self): + """ Set initial values for fields + """ + # Get selected objects + selObjs = Geometry.getSelectedObjs() + if not selObjs: + msg = Translator.translate("Ship instance must be selected (any object selected)\n") + App.Console.PrintError(msg) + return True + for i in range(0,len(selObjs)): + obj = selObjs[i] + # Test if is a ship instance + props = obj.PropertiesList + try: + props.index("IsShip") + except ValueError: + continue + if obj.IsShip: + # Test if another ship already selected + if self.ship: + msg = Translator.translate("More than one ship selected (extra ship will be neglected)\n") + App.Console.PrintWarning(msg) + break + self.ship = obj + # Test if any valid ship was selected + if not self.ship: + msg = Translator.translate("Ship instance must be selected (any valid ship found at selected objects)\n") + App.Console.PrintError(msg) + return True + # Load sections (if exist) + self.loadSections() + msg = Translator.translate("Ready to work\n") + App.Console.PrintMessage(msg) + return False + + def retranslateUi(self): + """ Set user interface locale strings. + """ + self.form.setWindowTitle(Translator.translate("Outline draw")) + self.form.findChild(QtGui.QGroupBox, "AutoCreateBox").setTitle(Translator.translate("Auto create")) + self.form.findChild(QtGui.QGroupBox, "ScaleBox").setTitle(Translator.translate("Scale")) + self.form.findChild(QtGui.QPushButton, "DeleteButton").setText(Translator.translate("Delete all sections")) + self.form.findChild(QtGui.QPushButton, "CreateButton").setText(Translator.translate("Create sections")) + self.form.findChild(QtGui.QComboBox, "SectionType").setItemText(0, Translator.translate("Transversal")) + self.form.findChild(QtGui.QComboBox, "SectionType").setItemText(1, Translator.translate("Longitudinal")) + self.form.findChild(QtGui.QComboBox, "SectionType").setItemText(2, Translator.translate("Water lines")) + + def onSectionType(self): + """ Function called when the section type is changed. + """ + # Search section type + ID = self.form.sectionType.currentIndex() + self.setSectionType(ID) + + def setSectionType(self, ID): + """ Function that set the type section related table. + @param ID Id of the section to set: \n + 0 = Transversal sections \n + 1 = Longitudinal sections \n + 2 = Water lines + """ + SectionList = [] + if ID == 0: + SectionList = self.LSections[:] + elif ID == 1: + SectionList = self.BSections[:] + elif ID == 2: + SectionList = self.TSections[:] + nRow = len(SectionList) + self.form.sections.clearContents() + self.form.sections.setRowCount(nRow+1) + if not nRow: + self.obj = self.preview.update(self.ship.Length, self.ship.Beam, self.ship.Draft, self.LSections,self.BSections,self.TSections, self.ship.Shape) + return + self.skip = True # Avoid recursive call to OnItem + for i in range(0,nRow): + if i == nRow-1: + self.skip = False + string = '%f' % (SectionList[i]) + item = QtGui.QTableWidgetItem(string) + self.form.sections.setItem(i,0,item) + + def onTableItem(self, row, column): + """ Function called when an item of table is changed. + @param row Changed item row + @param column Changed item column + """ + if self.skip: + return + # Ensure that exist one empty item at least + nRow = self.form.sections.rowCount() + item = self.form.sections.item(nRow-1,0) + if item : + if(item.text() != ''): + self.form.sections.setRowCount(nRow+1) + # Ensure that new item is a number + ID = self.form.sectionType.currentIndex() + if ID == 0: + SectionList = self.LSections[:] + elif ID == 1: + SectionList = self.BSections[:] + elif ID == 2: + SectionList = self.TSections[:] + item = self.form.sections.item(row,column) + (number,flag) = item.text().toFloat() + if not flag: + if len(SectionList) > nRow-1: + number = SectionList[nRow-1] + else: + number = 0.0 + string = '%f' % (number) + item.setText(string) + # Regenerate the list + SectionList = [] + for i in range(0,nRow): + item = self.form.sections.item(i,0) + if item: + (number,flag) = item.text().toFloat() + SectionList.append(number) + # Paste it into the class list + ID = self.form.sectionType.currentIndex() + if ID == 0: + self.LSections = SectionList[:] + elif ID == 1: + self.BSections = SectionList[:] + elif ID == 2: + self.TSections = SectionList[:] + self.obj = self.preview.update(self.ship.Length, self.ship.Beam, self.ship.Draft, self.LSections,self.BSections,self.TSections, self.ship.Shape) + + def onDeleteButton(self): + """ Function called when the delete button is pressed. + All sections mustt be erased + """ + self.form.sections.clearContents() + self.form.sections.setRowCount(1) + # Clear active list + ID = self.form.sectionType.currentIndex() + if ID == 0: + self.LSections = [] + elif ID == 1: + self.BSections = [] + elif ID == 2: + self.TSections = [] + self.setSectionType(ID) + + def onCreateButton(self): + """ Function called when create button is pressed. + Several sections must be added to list + """ + # Recolect data + nSections = self.form.nSections.value() + SectionList = [] + L = 0.0 + ID = self.form.sectionType.currentIndex() + if ID == 0: + L = self.ship.Length + d = L / (nSections-1) # Distance between sections + start = - L/2.0 # Ship must have 0.0 at coordinates origin + elif ID == 1: + L = -0.5*self.ship.Beam # Ship must be in y<0.0 + d = L / (nSections+1.0) # Distance between sections + start = d + elif ID == 2: + L = self.ship.Draft + d = L / (nSections) # Distance between sections + start = d + # Calculate sections + for i in range(0,nSections): + sec = i*d + start + SectionList.append(sec) + # Paste into class table + if ID == 0: + self.LSections = SectionList[:] + elif ID == 1: + self.BSections = SectionList[:] + elif ID == 2: + self.TSections = SectionList[:] + # Print the table + self.setSectionType(ID) + + def loadSections(self): + """ Loads from ship object previously selected sections. + """ + # Load sections + props = self.ship.PropertiesList + flag=True + try: + props.index("LSections") + except ValueError: + flag=False + if flag: + self.LSections = self.ship.LSections[:] + self.BSections = self.ship.BSections[:] + self.TSections = self.ship.TSections[:] + # Load scale too + flag=True + try: + props.index("PlotScale") + except ValueError: + flag=False + if flag: + self.form.scale.setValue(self.ship.PlotScale) + # Set UI + self.setSectionType(self.form.sectionType.currentIndex()) + + def saveSections(self): + """ Save selected sections into ship object. + """ + # Test if previous section have been created + props = self.ship.PropertiesList + try: + props.index("LSections") + except ValueError: + # Create new sections list + self.ship.addProperty("App::PropertyFloatList","LSections","Ship", str(Translator.translate("Transversal sections position [m]"))).LSections=[] + self.ship.addProperty("App::PropertyFloatList","BSections","Ship", str(Translator.translate("Longitudinal sections position [m]"))).BSections=[] + self.ship.addProperty("App::PropertyFloatList","TSections","Ship", str(Translator.translate("Water lines position [m]"))).TSections=[] + # Save sections + self.ship.LSections = self.LSections[:] + self.ship.BSections = self.BSections[:] + self.ship.TSections = self.TSections[:] + # Save also scale + try: + props.index("PlotScale") + except ValueError: + self.ship.addProperty("App::PropertyInteger","PlotScale","Ship", str(Translator.translate("Plot scale (1:scale format)"))).PlotScale=250 + self.ship.PlotScale = self.form.scale.value() + +def createTask(): + panel = TaskPanel() + Gui.Control.showDialog(panel) + if panel.setupUi(): + Gui.Control.closeDialog(panel) + return None + return panel diff --git a/src/Mod/Ship/shipOutlineDraw/TaskPanel.ui b/src/Mod/Ship/shipOutlineDraw/TaskPanel.ui new file mode 100644 index 0000000000..0d41cbda2e --- /dev/null +++ b/src/Mod/Ship/shipOutlineDraw/TaskPanel.ui @@ -0,0 +1,277 @@ + + + TaskPanel + + + + 0 + 0 + 298 + 402 + + + + Outline draw + + + + + + 0 + + + QLayout::SetMinimumSize + + + + + + 142 + 24 + + + + + 160 + 32 + + + + 0 + + + 0 + + + + Transversal + + + + + Longitudinal + + + + + Water lines + + + + + + + + + 142 + 24 + + + + + 160 + 32 + + + + Delete all sections + + + + + + + + 142 + 256 + + + + + 160 + 350 + + + + Auto create + + + + + 0 + 30 + 142 + 27 + + + + + 142 + 24 + + + + + 160 + 32 + + + + + + + 0 + 70 + 142 + 27 + + + + + 142 + 24 + + + + + 160 + 32 + + + + Create sections + + + + + + + + + + 0 + + + QLayout::SetDefaultConstraint + + + + + + 128 + 256 + + + + + 128 + 16777215 + + + + true + + + true + + + 1 + + + 1 + + + false + + + true + + + true + + + + + + + + + + + + 128 + 72 + + + + + 256 + 96 + + + + Plane scale + + + + + 0 + 30 + 251 + 41 + + + + + + + + 16 + 16 + + + + + 32 + 16777215 + + + + 1: + + + Qt::AlignCenter + + + + + + + + 0 + 16 + + + + 1 + + + 1000000 + + + 50 + + + 250 + + + + + + + + + + + + diff --git a/src/Mod/Ship/shipOutlineDraw/__init__.py b/src/Mod/Ship/shipOutlineDraw/__init__.py new file mode 100644 index 0000000000..cbfb57d75d --- /dev/null +++ b/src/Mod/Ship/shipOutlineDraw/__init__.py @@ -0,0 +1,36 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +# FreeCAD modules +import FreeCAD +import FreeCADGui + +# Qt libraries +from PyQt4 import QtGui,QtCore + +# Main object +import TaskPanel + +def load(): + """ Loads the tool """ + TaskPanel.createTask() diff --git a/src/Mod/Ship/shipUtils/Math.py b/src/Mod/Ship/shipUtils/Math.py new file mode 100644 index 0000000000..f8c583bef6 --- /dev/null +++ b/src/Mod/Ship/shipUtils/Math.py @@ -0,0 +1,57 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +def isAprox(a,b,tol=0.0001): + """returns if a value is into (b-tol,b+tol) + @param a Value to compare. + @param b Center of valid interval + @param tol Radius of valid interval + @return True if a is into (b-tol,b+tol), False otherwise + """ + if (a < b+abs(tol)) and (a > b-abs(tol)): + return True + return False + +def isSamePoint(a,b,tol=0.0001): + """returns if two points are the same with a provided tolerance + @param a Point to compare. + @param b Reference point. + @param tol Radius of valid interval + @return True if twice point are the same, False otherwise + @note FreeCAD::Base::Vector types must be provided + """ + if isAprox(a.x,b.x,tol) and isAprox(a.y,b.y,tol) and isAprox(a.z,b.z,tol): + return True + return False + +def isSameVertex(a,b,tol=0.0001): + """returns if two points are the same with a provided tolerance + @param a Point to compare. + @param b Reference point. + @param tol Radius of valid interval + @return True if twice point are the same, False otherwise + @note FreeCAD::Part::Vertex types must be provided + """ + if isAprox(a.X,b.X,tol) and isAprox(a.Y,b.Y,tol) and isAprox(a.Z,b.Z,tol): + return True + return False diff --git a/src/Mod/Ship/shipUtils/Paths.py b/src/Mod/Ship/shipUtils/Paths.py new file mode 100644 index 0000000000..0ea1168ea0 --- /dev/null +++ b/src/Mod/Ship/shipUtils/Paths.py @@ -0,0 +1,55 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +import FreeCAD, FreeCADGui, os + +def modulePath(): + """returns the current Ship design module path + @return Module path""" + path1 = FreeCAD.ConfigGet("AppHomePath") + "Mod/Ship" + path2 = FreeCAD.ConfigGet("UserAppData") + "Mod/Ship" + if os.path.exists(path2): + return path2 + else: + return path1 + +def iconsPath(): + """returns the current Ship design module icons path + @return Icons path""" + path = modulePath() + "/Icons" + return path + +def getPathFromFile(fileName): + """ Gets the directory path from a file name + @param fileName Name of the file + @return Directory path. + """ + if not fileName: + return '' + i = 1 + try: + while 1: + i = fileName.index("/", i+1) + except ValueError: + pass + return fileName[0:i+1] diff --git a/src/Mod/Ship/shipUtils/Translator.py b/src/Mod/Ship/shipUtils/Translator.py new file mode 100644 index 0000000000..1fe7f61e8d --- /dev/null +++ b/src/Mod/Ship/shipUtils/Translator.py @@ -0,0 +1,30 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +import FreeCAD, FreeCADGui, os +from PyQt4 import QtCore,QtGui + +def translate(text,context="ship"): + "convenience function for Qt translator" + return QtGui.QApplication.translate(context, text, None, + QtGui.QApplication.UnicodeUTF8) diff --git a/src/Mod/Ship/shipUtils/__init__.py b/src/Mod/Ship/shipUtils/__init__.py new file mode 100644 index 0000000000..00b200f140 --- /dev/null +++ b/src/Mod/Ship/shipUtils/__init__.py @@ -0,0 +1,25 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +# Empty file to treat the folder as a package + diff --git a/src/Mod/Surfaces/CMakeLists.txt b/src/Mod/Surfaces/CMakeLists.txt new file mode 100644 index 0000000000..edf782c511 --- /dev/null +++ b/src/Mod/Surfaces/CMakeLists.txt @@ -0,0 +1,116 @@ +SET(SurfMain_SRCS + InitGui.py + SurfGui.py +) +SOURCE_GROUP("" FILES ${SurfMain_SRCS}) + +SET(SurfIcons_SRCS + Icons/BorderIco.png + Icons/BorderIco.xpm + Icons/ConvertIco.png + Icons/ConvertTo4SidesIco.xpm + Icons/Ico.xcf + Icons/IsoCurveIco.png + Icons/IsoCurveIco.xpm + Icons/SliceIco.xcf + Icons/BorderIco.xcf + Icons/ConvertIco.xcf + Icons/Ico.png + Icons/Ico.xpm + Icons/IsoCurveIco.xcf + Icons/SliceIco.png + Icons/SliceIco.xpm +) +SOURCE_GROUP("surficons" FILES ${SurfIcons_SRCS}) + +SET(SurfBorder_SRCS + surfBorder/__init__.py +) +SOURCE_GROUP("surfborder" FILES ${SurfBorder_SRCS}) + +SET(SurfConvert_SRCS + surfConvert/__init__.py + surfConvert/Preview.py + surfConvert/TaskPanel.py + surfConvert/TaskPanel.ui +) +SOURCE_GROUP("surfconvert" FILES ${SurfConvert_SRCS}) + +SET(SurfISOCurve_SRCS + surfISOCurve/__init__.py + surfISOCurve/PointTracker.py + surfISOCurve/TaskPanel.py + surfISOCurve/Preview.py + surfISOCurve/TaskPanel.ui +) +SOURCE_GROUP("surfISOcurve" FILES ${SurfISOCurve_SRCS}) + +SET(SurfSlice_SRCS + surfSlice/__init__.py + surfSlice/PointTracker.py + surfSlice/TaskPanel.py + surfSlice/Preview.py + surfSlice/TaskPanel.ui +) +SOURCE_GROUP("surfslice" FILES ${SurfSlice_SRCS}) + +SET(SurfUtils_SRCS + surfUtils/__init__.py + surfUtils/Geometry.py + surfUtils/Math.py + surfUtils/Paths.py + surfUtils/Translator.py +) +SOURCE_GROUP("surfutils" FILES ${SurfUtils_SRCS}) + +SET(all_files ${SurfMain_SRCS} ${SurfIcons_SRCS} ${SurfBorder_SRCS} ${SurfConvert_SRCS} ${SurfISOCurve_SRCS} ${SurfSlice_SRCS} ${SurfUtils_SRCS}) + +ADD_CUSTOM_TARGET(Surfaces ALL + SOURCES ${all_files} +) + +fc_copy_sources("Mod/Surfaces" "Surfaces" ${all_files}) + +INSTALL( + FILES + ${SurfIcons_SRCS} + DESTINATION + Mod/Surfaces/Icons +) +INSTALL( + FILES + ${SurfBorder_SRCS} + DESTINATION + Mod/Surfaces/surfBorder +) +INSTALL( + FILES + ${SurfConvert_SRCS} + DESTINATION + Mod/Surfaces/surfConvert +) +INSTALL( + FILES + ${SurfISOCurve_SRCS} + DESTINATION + Mod/Surfaces/surfISOCurve +) +INSTALL( + FILES + ${SurfSlice_SRCS} + DESTINATION + Mod/Surfaces/surfSlice +) +INSTALL( + FILES + ${SurfUtils_SRCS} + DESTINATION + Mod/Surfaces/surfUtils +) +INSTALL( + FILES + ${SurfMain_SRCS} + DESTINATION + Mod/Surfaces +) + diff --git a/src/Mod/Surfaces/Icons/BorderIco.png b/src/Mod/Surfaces/Icons/BorderIco.png new file mode 100644 index 0000000000..8f6f024148 Binary files /dev/null and b/src/Mod/Surfaces/Icons/BorderIco.png differ diff --git a/src/Mod/Surfaces/Icons/BorderIco.xcf b/src/Mod/Surfaces/Icons/BorderIco.xcf new file mode 100644 index 0000000000..0ecd7785b2 Binary files /dev/null and b/src/Mod/Surfaces/Icons/BorderIco.xcf differ diff --git a/src/Mod/Surfaces/Icons/BorderIco.xpm b/src/Mod/Surfaces/Icons/BorderIco.xpm new file mode 100644 index 0000000000..a27c8de99b --- /dev/null +++ b/src/Mod/Surfaces/Icons/BorderIco.xpm @@ -0,0 +1,1213 @@ +/* XPM */ +static char * BorderIco_xpm[] = { +"128 128 1082 2", +" c None", +". c #FF0000", +"+ c #005F00", +"@ c #006100", +"# c #00AF05", +"$ c #00B105", +"% c #000000", +"& c #009B03", +"* c #006600", +"= c #008C02", +"- c #00B005", +"; c #00A305", +"> c #006F01", +", c #B5B5B5", +"' c #B4B4B3", +") c #B3B3B2", +"! c #B1B1B2", +"~ c #B1B0B0", +"{ c #AFAFAF", +"] c #AEAEAE", +"^ c #ADACAC", +"/ c #ABABAB", +"( c #AAAAAA", +"_ c #007100", +": c #00AC04", +"< c #008403", +"[ c #BDBDBD", +"} c #BCBDBD", +"| c #BCBCBC", +"1 c #BABBBA", +"2 c #B9B9BA", +"3 c #B8B8B9", +"4 c #B8B7B7", +"5 c #B6B6B6", +"6 c #B5B4B5", +"7 c #B3B3B3", +"8 c #B2B3B2", +"9 c #B1B1B1", +"0 c #B0B0B0", +"a c #AFAFAE", +"b c #ADADAD", +"c c #ACACAC", +"d c #A9A9A9", +"e c #A8A7A8", +"f c #A6A7A6", +"g c #A5A5A5", +"h c #00A704", +"i c #00AE05", +"j c #00AC05", +"k c #009703", +"l c #C1C2C2", +"m c #C1C1C1", +"n c #C0C1C1", +"o c #C0C0C0", +"p c #BFC0C0", +"q c #BFBFBF", +"r c #BEBDBE", +"s c #BCBDBC", +"t c #BBBBBB", +"u c #BABABA", +"v c #B9B9B9", +"w c #B7B8B8", +"x c #B7B6B7", +"y c #B4B4B4", +"z c #B2B1B1", +"A c #B0AFAF", +"B c #ADAEAD", +"C c #AAA9A9", +"D c #A7A7A7", +"E c #A6A6A5", +"F c #A4A4A4", +"G c #008A02", +"H c #00B104", +"I c #00AD05", +"J c #00AA06", +"K c #00A105", +"L c #007101", +"M c #006000", +"N c #C3C3C3", +"O c #C4C3C3", +"P c #C3C3C4", +"Q c #C3C4C3", +"R c #C3C2C3", +"S c #C2C1C2", +"T c #C1C1C2", +"U c #BFC0BF", +"V c #BEBEBF", +"W c #BDBDBE", +"X c #BDBCBC", +"Y c #BCBBBB", +"Z c #BABAB9", +"` c #B6B7B6", +" . c #AFB0AF", +".. c #AEAEAF", +"+. c #ACABAC", +"@. c #A9A9A8", +"#. c #A8A8A8", +"$. c #A6A6A6", +"%. c #A4A5A4", +"&. c #A3A3A3", +"*. c #A2A2A2", +"=. c #008B02", +"-. c #00B305", +";. c #00A906", +">. c #00A505", +",. c #008303", +"'. c #C2C2C3", +"). c #C4C4C4", +"!. c #C5C5C5", +"~. c #C4C5C5", +"{. c #C5C4C4", +"]. c #BEBEBE", +"^. c #BDBEBE", +"/. c #BBBABA", +"(. c #B8B8B8", +"_. c #B4B5B4", +":. c #B2B2B1", +"<. c #B1B1B0", +"[. c #AAABAB", +"}. c #A4A3A3", +"|. c #A1A0A1", +"1. c #00B405", +"2. c #00A706", +"3. c #00A506", +"4. c #009404", +"5. c #006800", +"6. c #C2C2C2", +"7. c #C3C3C2", +"8. c #C5C6C6", +"9. c #C6C6C6", +"0. c #C7C6C6", +"a. c #C6C6C5", +"b. c #C6C5C6", +"c. c #C4C5C4", +"d. c #C3C4C4", +"e. c #C3C2C2", +"f. c #C1C0C0", +"g. c #C0BFBF", +"h. c #BDBCBD", +"i. c #BBBCBB", +"j. c #B8B8B7", +"k. c #B4B5B5", +"l. c #B3B3B4", +"m. c #B2B1B2", +"n. c #ACADAC", +"o. c #A8A9A8", +"p. c #A7A7A6", +"q. c #A3A4A4", +"r. c #A3A3A2", +"s. c #A1A1A1", +"t. c #9FA0A0", +"u. c #006700", +"v. c #007700", +"w. c #008601", +"x. c #009202", +"y. c #009D02", +"z. c #00AC03", +"A. c #00B503", +"B. c #00B404", +"C. c #00A806", +"D. c #00A306", +"E. c #009C05", +"F. c #007702", +"G. c #C2C2C1", +"H. c #C2C3C2", +"I. c #C5C5C4", +"J. c #C7C7C7", +"K. c #C8C8C7", +"L. c #C6C6C7", +"M. c #C5C4C5", +"N. c #BFBFBE", +"O. c #BABBBB", +"P. c #BAB9BA", +"Q. c #B8B7B8", +"R. c #B7B7B6", +"S. c #B2B3B3", +"T. c #AFB0B0", +"U. c #ABACAB", +"V. c #A6A5A6", +"W. c #A4A4A5", +"X. c #9E9E9F", +"Y. c #00A201", +"Z. c #00B302", +"`. c #00C202", +" + c #00C803", +".+ c #00C403", +"++ c #00C204", +"@+ c #00C004", +"#+ c #00BD04", +"$+ c #00BA04", +"%+ c #00B804", +"&+ c #00B504", +"*+ c #00AC06", +"=+ c #00A905", +"-+ c #00A406", +";+ c #00A006", +">+ c #009E07", +",+ c #008A05", +"'+ c #006500", +")+ c #C1C1C0", +"!+ c #C9C8C9", +"~+ c #C9C9C9", +"{+ c #C9C9C8", +"]+ c #C8C9C9", +"^+ c #C8C8C8", +"/+ c #C7C6C7", +"(+ c #B7B7B7", +"_+ c #B6B5B5", +":+ c #B1B2B2", +"<+ c #B0AFB0", +"[+ c #A8A9A9", +"}+ c #A5A4A5", +"|+ c #A2A2A1", +"1+ c #286F28", +"2+ c #276F27", +"3+ c #004700", +"4+ c #007D00", +"5+ c #009500", +"6+ c #00AC00", +"7+ c #00D003", +"8+ c #00CD02", +"9+ c #00CB03", +"0+ c #00C603", +"a+ c #00C303", +"b+ c #00C003", +"c+ c #00BE04", +"d+ c #00BB04", +"e+ c #00B905", +"f+ c #00B704", +"g+ c #00AE06", +"h+ c #00AB05", +"i+ c #00A606", +"j+ c #00A107", +"k+ c #009F07", +"l+ c #009B07", +"m+ c #009506", +"n+ c #007602", +"o+ c #C7C7C6", +"p+ c #C9CACA", +"q+ c #CACBCB", +"r+ c #CACBCA", +"s+ c #CAC9CA", +"t+ c #C7C7C8", +"u+ c #BCBBBC", +"v+ c #BABABB", +"w+ c #B9B8B9", +"x+ c #B1B2B1", +"y+ c #AEAFAE", +"z+ c #ADAEAE", +"A+ c #AAAAAB", +"B+ c #A8A8A7", +"C+ c #297029", +"D+ c #287028", +"E+ c #277427", +"F+ c #278627", +"G+ c #007200", +"H+ c #008600", +"I+ c #009A00", +"J+ c #00E100", +"K+ c #00E101", +"L+ c #00DE01", +"M+ c #00D102", +"N+ c #00CE02", +"O+ c #00C903", +"P+ c #00C703", +"Q+ c #00C404", +"R+ c #00C104", +"S+ c #00BF04", +"T+ c #00BC04", +"U+ c #00A206", +"V+ c #009F06", +"W+ c #009C07", +"X+ c #009907", +"Y+ c #009807", +"Z+ c #008906", +"`+ c #006801", +" @ c #C0C0C1", +".@ c #C8C9C8", +"+@ c #CACACA", +"@@ c #CBCBCB", +"#@ c #CCCCCC", +"$@ c #C9CAC9", +"%@ c #C9C8C8", +"&@ c #BFBEBE", +"*@ c #B5B5B4", +"=@ c #B2B2B2", +"-@ c #2A712A", +";@ c #297D29", +">@ c #289328", +",@ c #28AA29", +"'@ c #28BD28", +")@ c #27CC28", +"!@ c #27CD28", +"~@ c #27CF28", +"{@ c #00AA00", +"]@ c #04DA04", +"^@ c #00E400", +"/@ c #00E201", +"(@ c #00E001", +"_@ c #00CF02", +":@ c #00CD03", +"<@ c #00CA03", +"[@ c #00B205", +"}@ c #00A207", +"|@ c #009D07", +"1@ c #009A07", +"2@ c #009808", +"3@ c #009606", +"4@ c #008004", +"5@ c #006300", +"6@ c #CBCACB", +"7@ c #CDCECD", +"8@ c #CECDCE", +"9@ c #CDCDCD", +"0@ c #CBCBCC", +"a@ c #BBBBBA", +"b@ c #B7B6B6", +"c@ c #B5B4B4", +"d@ c #B0B1B1", +"e@ c #AEADAD", +"f@ c #ACADAD", +"g@ c #2A722A", +"h@ c #2A9F2A", +"i@ c #29BA2A", +"j@ c #29C62A", +"k@ c #28C729", +"l@ c #28CA29", +"m@ c #27CE28", +"n@ c #27D027", +"o@ c #26D127", +"p@ c #00AD00", +"q@ c #00E600", +"r@ c #00E401", +"s@ c #00DF01", +"t@ c #00CF03", +"u@ c #00CC02", +"v@ c #00C503", +"w@ c #00C103", +"x@ c #00BF03", +"y@ c #00B904", +"z@ c #00B505", +"A@ c #00AF06", +"B@ c #00AA05", +"C@ c #00A507", +"D@ c #009D06", +"E@ c #009406", +"F@ c #007803", +"G@ c #C6C7C6", +"H@ c #CACACB", +"I@ c #CFCFCE", +"J@ c #C8C7C8", +"K@ c #BAB9B9", +"L@ c #B6B6B7", +"M@ c #AFAEAF", +"N@ c #297529", +"O@ c #29BB2A", +"P@ c #29C82A", +"Q@ c #28C929", +"R@ c #28CB29", +"S@ c #00AF00", +"T@ c #00E500", +"U@ c #00DC01", +"V@ c #00C203", +"W@ c #00BA05", +"X@ c #009006", +"Y@ c #C4C4C3", +"Z@ c #C9C9CA", +"`@ c #CECECE", +" # c #CBCCCC", +".# c #C2C1C1", +"+# c #C0C1C0", +"@# c #BEBEBD", +"## c #BCBCBB", +"$# c #B7B8B7", +"%# c #B0B1B0", +"&# c #ADADAE", +"*# c #298E29", +"=# c #28C72A", +"-# c #27CF27", +";# c #26D326", +"># c #05DF05", +",# c #00DD01", +"'# c #00CC03", +")# c #00C504", +"!# c #00B805", +"~# c #00A705", +"{# c #C7C8C8", +"]# c #CACAC9", +"^# c #CBCCCB", +"/# c #BFBEBF", +"(# c #B3B4B3", +"_# c #AEAFAF", +":# c #ACACAB", +"<# c #29B029", +"[# c #28C82A", +"}# c #27CC29", +"|# c #27CE27", +"1# c #26CF26", +"2# c #26D126", +"3# c #00A900", +"4# c #00B705", +"5# c #009207", +"6# c #C5C5C6", +"7# c #CBCACA", +"8# c #C6C5C5", +"9# c #C2C3C3", +"0# c #BEBFBE", +"a# c #A8A7A7", +"b# c #298229", +"c# c #28C629", +"d# c #27CB28", +"e# c #26CE27", +"f# c #26CF27", +"g# c #25CF26", +"h# c #00A800", +"i# c #00A700", +"j# c #00DB01", +"k# c #00D802", +"l# c #00B605", +"m# c #00A106", +"n# c #007A03", +"o# c #B8B9B8", +"p# c #B5B6B5", +"q# c #28A829", +"r# c #28C829", +"s# c #27CA29", +"t# c #27CC27", +"u# c #26CC27", +"v# c #26CD27", +"w# c #26CD26", +"x# c #25CC26", +"y# c #00A600", +"z# c #00A500", +"A# c #00D902", +"B# c #00D701", +"C# c #00BE03", +"D# c #C8C7C7", +"E# c #C7C8C7", +"F# c #C5C6C5", +"G# c #C4C4C5", +"H# c #B9BAB9", +"I# c #B6B7B7", +"J# c #B0B0AF", +"K# c #ADADAC", +"L# c #287D28", +"M# c #28C429", +"N# c #27C829", +"O# c #27C928", +"P# c #27CA28", +"Q# c #26CB27", +"R# c #26CA26", +"S# c #25CA27", +"T# c #00A400", +"U# c #00A200", +"V# c #00D502", +"W# c #00AB06", +"X# c #009E06", +"Y# c #008404", +"Z# c #B9B9B8", +"`# c #B1B0B1", +" $ c #ABAAAB", +".$ c #AAA9AA", +"+$ c #A9A8A9", +"@$ c #A5A5A6", +"#$ c #28A329", +"$$ c #28C529", +"%$ c #27C729", +"&$ c #27C728", +"*$ c #26C927", +"=$ c #26C928", +"-$ c #25C926", +";$ c #25C826", +">$ c #25C726", +",$ c #00A101", +"'$ c #00D402", +")$ c #00C604", +"!$ c #00A307", +"~$ c #006C01", +"{$ c #C1C0C1", +"]$ c #AEADAE", +"^$ c #ABAAAA", +"/$ c #287728", +"($ c #27C028", +"_$ c #27C529", +":$ c #27C628", +"<$ c #26C628", +"[$ c #26C727", +"}$ c #25C727", +"|$ c #25C627", +"1$ c #25C526", +"2$ c #009F00", +"3$ c #009E01", +"4$ c #00D002", +"5$ c #008D05", +"6$ c #B8B9B9", +"7$ c #B7B7B8", +"8$ c #ADACAD", +"9$ c #A7A7A8", +"0$ c #27A028", +"a$ c #27C328", +"b$ c #27C428", +"c$ c #26C428", +"d$ c #26C527", +"e$ c #25C426", +"f$ c #25C326", +"g$ c #24C226", +"h$ c #009D01", +"i$ c #009C01", +"j$ c #00B604", +"k$ c #007703", +"l$ c #0B0B0B", +"m$ c #BDBDBC", +"n$ c #B5B5B6", +"o$ c #ACACAD", +"p$ c #A9AAAA", +"q$ c #A5A6A5", +"r$ c #A2A2A3", +"s$ c #A1A2A1", +"t$ c #277927", +"u$ c #27C228", +"v$ c #26C328", +"w$ c #26C227", +"x$ c #25C227", +"y$ c #25C126", +"z$ c #25C226", +"A$ c #24C026", +"B$ c #009B01", +"C$ c #009901", +"D$ c #00A805", +"E$ c #009C06", +"F$ c #009607", +"G$ c #006200", +"H$ c #C0BFC0", +"I$ c #ABACAC", +"J$ c #276E27", +"K$ c #27A428", +"L$ c #26C028", +"M$ c #26C128", +"N$ c #25C028", +"O$ c #25C127", +"P$ c #25C026", +"Q$ c #24BF27", +"R$ c #24BE26", +"S$ c #24BD26", +"T$ c #009801", +"U$ c #009802", +"V$ c #00C902", +"W$ c #008504", +"X$ c #BBBABB", +"Y$ c #B9BABA", +"Z$ c #A0A0A1", +"`$ c #9F9F9F", +" % c #278227", +".% c #26BE28", +"+% c #26BF28", +"@% c #25BF28", +"#% c #25BE27", +"$% c #24BB25", +"%% c #009602", +"&% c #009501", +"*% c #009502", +"=% c #00A904", +"-% c #00A005", +";% c #009504", +">% c #009204", +",% c #009104", +"'% c #007102", +")% c #BDBEBD", +"!% c #A2A1A1", +"~% c #A0A0A0", +"{% c #9F9F9E", +"]% c #26B027", +"^% c #26BC28", +"/% c #25BC27", +"(% c #24BB26", +"_% c #24BA26", +":% c #23B926", +"<% c #23B925", +"[% c #009402", +"}% c #00AF04", +"|% c #009803", +"1% c #007701", +"2% c #009407", +"3% c #B4B3B3", +"4% c #A9A8A8", +"5% c #A7A8A7", +"6% c #A4A5A5", +"7% c #A09F9F", +"8% c #9E9E9E", +"9% c #9A9C9B", +"0% c #269127", +"a% c #26BA28", +"b% c #26BB28", +"c% c #25BA27", +"d% c #25B927", +"e% c #24B926", +"f% c #23B726", +"g% c #23B625", +"h% c #009102", +"i% c #04B106", +"j% c #00A304", +"k% c #008F05", +"l% c #008104", +"m% c #B9B8B8", +"n% c #ACABAB", +"o% c #A5A4A4", +"p% c #A2A3A3", +"q% c #9D9E9D", +"r% c #9C9D9C", +"s% c #266E26", +"t% c #267426", +"u% c #26B728", +"v% c #25B828", +"w% c #25B827", +"x% c #25B728", +"y% c #24B727", +"z% c #24B626", +"A% c #23B526", +"B% c #23B426", +"C% c #008F02", +"D% c #008E02", +"E% c #00B204", +"F% c #008604", +"G% c #006D01", +"H% c #AAAAA9", +"I% c #A5A5A4", +"J% c #9C9C9C", +"K% c #266D26", +"L% c #259E27", +"M% c #25B628", +"N% c #24B627", +"O% c #24B527", +"P% c #24B427", +"Q% c #23B427", +"R% c #23B326", +"S% c #23B125", +"T% c #008D02", +"U% c #01BB05", +"V% c #007401", +"W% c #007E03", +"X% c #009206", +"Y% c #B3B2B3", +"Z% c #A9A9AA", +"`% c #A6A7A7", +" & c #A1A0A0", +".& c #9B9B9B", +"+& c #9A9A9A", +"@& c #258126", +"#& c #25B427", +"$& c #25B428", +"%& c #24B327", +"&& c #24B326", +"*& c #23B226", +"=& c #23B126", +"-& c #23B026", +";& c #22AF25", +">& c #008902", +",& c #007F04", +"'& c #AFAFB0", +")& c #ABABAA", +"!& c #A7A6A6", +"~& c #9F9FA0", +"{& c #9E9F9E", +"]& c #9D9D9D", +"^& c #9C9B9C", +"/& c #9A9A9B", +"(& c #99999A", +"_& c #256C25", +":& c #25A927", +"<& c #25B228", +"[& c #24B127", +"}& c #23AF26", +"|& c #23AE26", +"1& c #22AE25", +"2& c #22AC25", +"3& c #007002", +"4& c #B2B2B3", +"5& c #A5A6A6", +"6& c #A0A09F", +"7& c #9F9E9F", +"8& c #9A9999", +"9& c #999999", +"0& c #939693", +"a& c #259126", +"b& c #24B028", +"c& c #24AF27", +"d& c #24AE26", +"e& c #23AD26", +"f& c #23AC25", +"g& c #22AA25", +"h& c #008703", +"i& c #008602", +"j& c #05B00A", +"k& c #006A01", +"l& c #009106", +"m& c #AEAEAD", +"n& c #A4A4A3", +"o& c #A3A2A3", +"p& c #9D9E9E", +"q& c #9C9C9D", +"r& c #9C9B9B", +"s& c #999998", +"t& c #979797", +"u& c #979696", +"v& c #257925", +"w& c #24AD28", +"x& c #24AE27", +"y& c #24AD27", +"z& c #23AC26", +"A& c #23AB27", +"B& c #23AB26", +"C& c #22AB25", +"D& c #22A925", +"E& c #22A825", +"F& c #21A725", +"G& c #008503", +"H& c #007202", +"I& c #006400", +"J& c #007E04", +"K& c #AFAEAE", +"L& c #ABABAC", +"M& c #9A9B9B", +"N& c #989898", +"O& c #969696", +"P& c #246C25", +"Q& c #24A327", +"R& c #24AA28", +"S& c #23AA27", +"T& c #23A926", +"U& c #22A826", +"V& c #22A726", +"W& c #21A625", +"X& c #004A00", +"Y& c #009706", +"Z& c #006B01", +"`& c #AAABAA", +" * c #A7A8A8", +".* c #9C9D9D", +"+* c #9A999A", +"@* c #999898", +"#* c #979897", +"$* c #979697", +"%* c #959495", +"&* c #919392", +"** c #246B24", +"=* c #249126", +"-* c #24A927", +";* c #23A927", +">* c #23A827", +",* c #23A726", +"'* c #22A525", +")* c #21A425", +"!* c #219A25", +"~* c #004B00", +"{* c #009107", +"]* c #A1A2A2", +"^* c #A0A1A0", +"/* c #9B9C9B", +"(* c #9A9B9A", +"_* c #959596", +":* c #949594", +"<* c #939393", +"[* c #248025", +"}* c #23A627", +"|* c #23A727", +"1* c #23A626", +"2* c #22A626", +"3* c #22A426", +"4* c #22A325", +"5* c #219D24", +"6* c #217021", +"7* c #206820", +"8* c #008C05", +"9* c #A2A3A2", +"0* c #A2A1A2", +"a* c #A1A1A0", +"b* c #9F9E9E", +"c* c #9E9E9D", +"d* c #9B9B9C", +"e* c #969695", +"f* c #959595", +"g* c #939493", +"h* c #929292", +"i* c #247023", +"j* c #23A427", +"k* c #23A327", +"l* c #22A326", +"m* c #22A226", +"n* c #21A025", +"o* c #217622", +"p* c #216821", +"q* c #A09FA0", +"r* c #9D9C9D", +"s* c #939494", +"t* c #919292", +"u* c #236B23", +"v* c #239927", +"w* c #23A227", +"x* c #22A227", +"y* c #22A127", +"z* c #22A026", +"A* c #219F26", +"B* c #217F23", +"C* c #828282", +"D* c #A4A3A4", +"E* c #9FA09F", +"F* c #969796", +"G* c #949494", +"H* c #929192", +"I* c #909191", +"J* c #8F8F8F", +"K* c #236A23", +"L* c #238A25", +"M* c #239F26", +"N* c #229F27", +"O* c #229F26", +"P* c #218524", +"Q* c #838382", +"R* c #818282", +"S* c #808180", +"T* c #A8A8A9", +"U* c #9E9D9D", +"V* c #9B9A9B", +"W* c #999A9A", +"X* c #979798", +"Y* c #909090", +"Z* c #8E8F8F", +"`* c #237B24", +" = c #229E27", +".= c #229D26", +"+= c #218E25", +"@= c #216921", +"#= c #838383", +"$= c #818181", +"%= c #7F7F7F", +"&= c #006F02", +"*= c #A1A1A2", +"== c #A0A1A1", +"-= c #989897", +";= c #929393", +">= c #919192", +",= c #8E8E8F", +"'= c #8E8E8E", +")= c #227022", +"!= c #229B27", +"~= c #229B26", +"{= c #229225", +"]= c #216B21", +"^= c #718071", +"/= c #818182", +"(= c #A6A5A5", +"_= c #9D9D9E", +":= c #989797", +"<= c #929293", +"[= c #919291", +"}= c #909190", +"|= c #8D8D8D", +"1= c #226922", +"2= c #229626", +"3= c #229426", +"4= c #216E21", +"5= c #838384", +"6= c #818180", +"7= c #7F8080", +"8= c #7E7E7F", +"9= c #7D7D7D", +"0= c #A3A3A4", +"a= c #9E9F9F", +"b= c #999A99", +"c= c #989998", +"d= c #969697", +"e= c #969596", +"f= c #949393", +"g= c #929392", +"h= c #919191", +"i= c #8C8B8B", +"j= c #898A88", +"k= c #228D25", +"l= c #217222", +"m= c #838484", +"n= c #828382", +"o= c #818281", +"p= c #808080", +"q= c #7D7E7E", +"r= c #7D7D7C", +"s= c #9D9D9C", +"t= c #959594", +"u= c #949394", +"v= c #939292", +"w= c #8F9090", +"x= c #8E8F8E", +"y= c #8C8C8C", +"z= c #8B8B8B", +"A= c #8A8A8A", +"B= c #217422", +"C= c #848484", +"D= c #828283", +"E= c #818081", +"F= c #7E7E7E", +"G= c #7C7B7C", +"H= c #969595", +"I= c #959494", +"J= c #8F8F90", +"K= c #898989", +"L= c #858484", +"M= c #838483", +"N= c #807F7F", +"O= c #7C7C7C", +"P= c #7B7B7A", +"Q= c #7A7A79", +"R= c #9C9C9B", +"S= c #9B9B9A", +"T= c #929191", +"U= c #8F908F", +"V= c #888888", +"W= c #858584", +"X= c #828281", +"Y= c #7F7E7F", +"Z= c #7E7D7E", +"`= c #7D7C7D", +" - c #7B7B7B", +".- c #7A7A7A", +"+- c #797979", +"@- c #9A9A99", +"#- c #979898", +"$- c #949595", +"%- c #929291", +"&- c #908F8F", +"*- c #8E8E8D", +"=- c #8C8D8C", +"-- c #898A89", +";- c #878787", +">- c #858686", +",- c #858585", +"'- c #818080", +")- c #7B7C7C", +"!- c #7A7B7A", +"~- c #787878", +"{- c #9D9C9C", +"]- c #989798", +"^- c #959696", +"/- c #8A8B8A", +"(- c #868686", +"_- c #808081", +":- c #7F807F", +"<- c #7A7979", +"[- c #787979", +"}- c #777777", +"|- c #9B9C9C", +"1- c #949493", +"2- c #919090", +"3- c #8F8F8E", +"4- c #8C8C8D", +"5- c #898988", +"6- c #888787", +"7- c #828182", +"8- c #808181", +"9- c #7F7F80", +"0- c #7E7F7E", +"a- c #7D7D7E", +"b- c #7D7C7C", +"c- c #797879", +"d- c #777878", +"e- c #767676", +"f- c #969797", +"g- c #90908F", +"h- c #8D8D8E", +"i- c #89898A", +"j- c #7F7E7E", +"k- c #7E7E7D", +"l- c #7C7B7B", +"m- c #787877", +"n- c #757576", +"o- c #8E8D8D", +"p- c #8D8C8D", +"q- c #7A7A7B", +"r- c #787978", +"s- c #767576", +"t- c #757475", +"u- c #979796", +"v- c #898A8A", +"w- c #898889", +"x- c #787879", +"y- c #757575", +"z- c #747473", +"A- c #959695", +"B- c #939293", +"C- c #919091", +"D- c #8C8B8C", +"E- c #8A8989", +"F- c #878788", +"G- c #848585", +"H- c #787777", +"I- c #747474", +"J- c #737373", +"K- c #898888", +"L- c #878887", +"M- c #878686", +"N- c #848483", +"O- c #80807F", +"P- c #7C7D7D", +"Q- c #797A7A", +"R- c #787778", +"S- c #727272", +"T- c #888889", +"U- c #868586", +"V- c #848485", +"W- c #838282", +"X- c #777677", +"Y- c #767575", +"Z- c #747475", +"`- c #737473", +" ; c #717171", +".; c #8E8D8E", +"+; c #8D8D8C", +"@; c #8C8C8B", +"#; c #888788", +"$; c #797978", +"%; c #727171", +"&; c #707170", +"*; c #858685", +"=; c #828383", +"-; c #7F7F7E", +";; c #747575", +">; c #737372", +",; c #717271", +"'; c #707070", +"); c #6F7070", +"!; c #8D8E8D", +"~; c #8B8B8A", +"{; c #868786", +"]; c #858586", +"^; c #7A797A", +"/; c #747374", +"(; c #727373", +"_; c #707171", +":; c #6F6F70", +"<; c #6E6F6E", +"[; c #8D8C8C", +"}; c #8B8A8A", +"|; c #8A8A89", +"1; c #878786", +"2; c #7E7D7D", +"3; c #7C7C7D", +"4; c #7B7B7C", +"5; c #7B7A7A", +"6; c #757676", +"7; c #727172", +"8; c #717170", +"9; c #6E6F6F", +"0; c #6D6D6D", +"a; c #8A8B8B", +"b; c #888988", +"c; c #868685", +"d; c #757574", +"e; c #737273", +"f; c #727271", +"g; c #70706F", +"h; c #6F6E6F", +"i; c #6D6D6E", +"j; c #878687", +"k; c #848384", +"l; c #7C7C7B", +"m; c #767677", +"n; c #757474", +"o; c #6F6E6E", +"p; c #6D6E6E", +"q; c #868787", +"r; c #7A7B7B", +"s; c #757675", +"t; c #848383", +"u; c #828181", +"v; c #79797A", +"w; c #707071", +"x; c #6F6F6E", +"y; c #7B7C7B", +"z; c #807F80", +"A; c #7D7E7D", +"B; c #7C7D7C", +"C; c #7B7A7B", +"D; c #797878", +"E; c #030303", +" ", +" ", +" ", +" ", +" ", +" . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . ", +" . . . . . . . . + . . . . . . ", +" . . . . . . . + + + . . . . . . ", +" . . . . . . + + + . . . . . ", +" . . . . . . + @ + + . . . . . . ", +" . . . . . . . + + # + + . . . . . . ", +" . . . . . . + $ # + + + . . . . . ", +" % % % % % % % % % % % . . . . . . + + $ & * + + . . . . . . ", +" % % % % % % % % % % % % % % % % % % % % % % % . . . . . + = - ; > + + . . . . . ", +" % % % % % % % % % % % % % , ' ) ! ~ { ] ^ / ( % % % % % % . . . . . . + _ $ # : < + + + . . . . . . ", +" % % % % % % % % % % [ } | 1 2 3 4 5 6 7 8 9 0 a b c / d e f g % % % % . . . . . + + h - i j k * + + . . . . . ", +" % % % % % % % % l m n o p q r s t u v w x 5 y 7 z 9 A B ^ / C d D E F % % % % . . . . . . + G H # I J K L + + M . . . . . . ", +" % % % % % % N O P Q N R S T n U V W X Y Z v w ` , y 7 9 ...b +.( @.#.$.%.&.*.% % % . . . . . + =.-.- i j ;.>.,.M + + . . . . . ", +" % % % % % '.Q ).).!.!.~.{.).O R S m q ].^.| /.Z (.x 5 _.7 :.<.{ b c [.d #.f g }.*.|.% % % . . . . . + + + + + + + = 1.$ # j J 2.3.4.5.+ + . . . . . . ", +" % % % % 6.7.).~.!.8.9.0.9.a.b.c.d.e.l f.g.].h.i.u 3 j.` k.l.m.0 { ] n./ ( o.p.g q.r.s.t.% % % . . . . . + + + + u.v.w.x.y.z.A.B.-.- I J C.3.D.E.F.+ + + . . . . . ", +" % % % % o G.H.O I.a.0.J.J.K.J.J.L.a.M.).6.m o N.[ X O.P.Q.R., ' S.9 T.] b U.( @.D V.W.r.*.t.X.% % + + + + . . . . . . Y.Z.`. +.+++@+#+$+%+&+-.- i *+=+3.-+;+>+,+'++ + . . . . . ", +" % % % ].g.)+6.P ).9.J.K.!+~+~+{+]+^+/+b.I.N 6.m U ^.} t Z v (+_+y ) :+<+a b U.( [+D E }+&.|+1+2+3+3+3++ * 4+5+6+. . . . . 7+8+9+ +0+a+b+c+d+e+f+-.$ g+h+;.i+D.j+k+l+m+n++ + + . . . . . ", +" % % % % N.o G.N ).a.o+^+~+p+q+q+r+s+~+t+o+!.).'.T o ].[ u+v+w+Q.5 6 7 x+0 y+z+c A+d B+C+C+D+1+1+E+F+G+H+I+J+K+K+L+. . . . . M+N+9+O+P+Q+R+S+T+e+f+1.$ # j ;.2.-+U+V+W+X+Y+Z+`++ + + . . . . . ", +" % % % % @G.P c.9.t+.@+@@@#@#@#@q+$@%@J.9.).7.G.o &@[ | 1 v (.5 *@' =@0 { b c -@-@-@C+;@>@,@'@)@!@~@{@{@]@^@/@(@L+. . . . . _@:@<@P+.+++S+#+$+f+&+[@# *+J 2.-+}@k+|@1@2@Y+3@4@5@+ + + . . . . . ", +" % % % 6.).~.0.^+~+6@#@7@8@9@0@+@~+K.9.).O 6.o q ^.| a@v (.b@c@7 =@d@{ e@f@g@-@h@i@j@k@l@l@!@m@n@o@6+p@q@r@K+s@. . . . . t@u@O+P+v@w@x@T+y@f+z@$ A@j B@2.C@}@k+D@1@2@Y+Y+Y+E@F@@ + + . . . . . ", +" % % 6.Q !.G@^+$@H@#@8@I@9@#@+@~+J@9.!.N l f.q [ | /.K@w L@, l.:.9 M@z+c [.-@N@O@j@P@Q@R@)@~@n@o@p@S@p@T@/@(@U@. . . . . :@<@P+.+V@S+T+W@f+B.[@# I ;.C.3.U+k+|@X+Y+Y+Y+Y+Y+X@M + . . . . . ", +" % % % Y@!.9.^+Z@q+#@9@`@9@ #r+!+^+9.!.N .#+#q @###/.v $#` _.l.=@%#{ &#c ( -@-@*#j@=#l@R@!@m@-#o@;#p@6+>#K+s@,#. . . . . '#<@P+)#w@S+#+$+!#B.[@# j B@~#3.U+k+W+1@Y+2@Y+2@2@n++ + . . . . . ", +" % % % M.a.{#.@]#@@#@#@^#@@p+^+J.9.M.N l o /#[ u+u v w 5 y (#=@0 _#b :#/ d -@C+<#=#[#l@}#!@|#1#2#2#{@3#K+L+U@. . . . . u@<@P+.+V@S+#+y@4#B.[@# I J 2.3.}@k+W+1@Y+Y+Y+Y+5#M + . . . . . ", +" % % % 6#J.^+~++@7#q+H@p+]+{#G@8#).9#m o 0#[ t /.v $#5 y 7 x+0 M@b +.[.d a#C+b#c#[#l@d#)@|#e#f#g#h#i#i#,#j#k#. . . . . +P+.+w@S+T+y@l#B.[@g+j J 2.3.m#k+W+X+Y+Y+Y+Y+n#+ + . . . . . ", +" % % I.9./+K.!+~+~+~+.@K.J.8#{.N 6.f.q ].} u+u o#(+p#y 7 9 0 y+b +.A+d #.C+C+q#k@r#s#d#t#u#v#w#x#y#z#j#A#B#. . . . . +0+a+@+C#d+y@l#1.$ i *+J i+-+j+>+l+X+Y+Y+Y+3@5@+ . . . . . ", +" % % % !.9.o+{#{#D#^+E#0.F#G#O H..#o 0#W | t H#(.I#_+l.7 9 J#] K#U.( [+D g C+L#M#k@N#O#P#Q#Q#R#S#T#T#U#B#V#. . . . . P+v@a+@+c+d+!#z@-.- I W#=+i+-+j+X#l+X+Y+Y+Y+Y#+ + . . . . . ", +" % % d.!.8#b.9.L.o+9.!.I.).7..#f.U ].[ u+u Z#j.5 , 7 =@`# .] ^ $.$+$D @$C+D+#$$$%$&$*$=$*$-$;$>$Y.,$V#'$M+. . . . )$Q+w@S+T+W@f+&+-.A@I B@2.3.!$;+X#l+Y+2@Y+Y+~$+ . . . . . ", +" % % % P ).).!.!.{.M.).O H.6.{$U /#[ | 1 K@(.R.p#y 7 m.0 { ]$c ^$C B+f g q.1+/$($_$:$<$[$[$}$|$1$2$3$3$M+4$. . . . . a+b+c+d+y@l#1.[@# j =+~#-+U+V+|@1@Y+Y+Y+5$+ + . . . . . ", +" % % 6.R N N P O N '.6.m f.p 0#W | t u 6$7$` , l.) 9 0 ] 8$c A+d 9$$.}+&.1+1+0$a$b$c$d$d$1$e$f$g$h$i$t@N+. . . . . R+S+T+$+!#j$-.$ g+*+;.2.-+j+k+W+1@Y+Y+2@k$+ . . . . . ", +" l$% % m 6.S 6.6.G.S )+o q 0#^.m$i.u v (.R.n$y 7 =@0 { ] o$/ p$#.p.q$%.r$s$1+t$($u$v$w$x$x$y$z$A$B$B$C$u@<@. . . . x@C#d+y@l#z@[@# I B@D$i+D.m#>+E$X+2@Y+F$G$+ . . . . . ", +" % % p o )+o n @H$p N.].^.s i.u K@3 (+5 6 7 ) 9 T.] b I$( d e D g F *.s.1+J$K$L$L$M$N$O$P$Q$R$S$T$U$V$P+. . . . . T+W@%+&+-.$ i j ;.2.3.U+V+|@l+Y+Y+Y+W$+ + . . . . . ", +" % % % q q q q q /#].[ [ | t X$Y$3 (+5 , y 7 m.%#{ z+c / ( #.D $.W.&.*.Z$`$J$ %.%+%+%@%#%#%R$S$$%%%&%*%v@. . . . . $+!#4#1.[@# I =%-%;%>%,%X#|@X+Y+Y+2@'%+ . . . . . ", +" % % ^.].^.^.)%[ m$| i.t u v (.(.5 _+*@7 :+%#<+..b c ^$C #.f q$F r$!%~%{%J$J$]%^%/%/%/%/%(%_%:%<%[%x..+. . . . . y@j$1.[@}%|%1%+ + + + + 3@l+X+Y+2@2%M + . . . . . ", +" % % % | | X | ##Y a@u K@w+(.(+` p#y 3%) 9 0 a e@c / ( 4%5%$.6%&.r$s.7%8%9%J$0%a%b%c%c%d%e%e%f%g%x.h%i%@+. . . . 4#z@-.j%> + + + + k%X+Y+2@Y+l%+ + . . . . . ", +" % % t /.t X$1 Z Z v m%(+(+5 , y 3%=@z 0 { z+K#n%A+d #.D g o%p%|+~%{%q%r%s%t%u%v%w%x%y%y%z%A%B%B%C%D%c+. . . . . E%= @ + + + F%X+Y+Y+Y+G%+ . . . . . ", +" % % v 2 v v Z#o#(.(+(+L@p#c@y 7 =@x+~ { ] b I$/ H%#.D E I%&.r$s.t.8%r%J%s%K%L%M%M%N%O%P%Q%B%R%S%D%T%U%. . . . . V%+ + + + W%Y+Y+2@X%+ + . . . . ", +" % % (.$#j.w (+I#5 _+, _.' Y%=@9 0 { ] b c / Z%@.a#`%g &.*.|+ &`$8%r%.&+&K%@&#&$&%&&&%&*&=&-&;&= =.>&. . . . . + + + F.Y+2@Y+,&+ . . . . . ", +" % % ` 5 5 5 5 n$, y (#7 =@x+<.'&{ ] e@o$)&( @.B+!&E %.&.*.s.~&{&]&^&/&(&K%_&:&<&[&[&[&-&}&|&1&2&>&>&l#. . . . + + 3&Y+Y+Y+~$+ . . . . . ", +" % % % , , c@y y l.7 4&:.9 %#0 _#] b c / ( d #.D 5&}+&.*.s.6&7&]&r%.&8&9&0&_&a&b&c&c&d&|&e&f&2&g&h&i&j&. . . . + k&Y+Y+l&+ + . . . . ", +" % % (#3%l.Y%S.=@! z 9 0 { ] m&8$I$/ .$[+e D $.%.n&o&s. &`$p&q&r&+&s&t&u&_&v&w&x&y&z&A&B&C&D&E&F&G&H&. . . . . + I&Y+Y+J&+ . . . . . ", +" % % =@:+:+9 9 <.%#<+{ K&m&b c L&/ ( @.#.D $.g q.&.*. &7%8%]&J%M&(&N&t&O&_&P&Q&R&S&S&T&U&U&V&W&W&F.X&. . . . . + + Y&Y+Z&+ . . . . . ", +" % % % `#0 0 T. ._#K&B b f@c / `&.$+$ *D $.g F &.|+s.t.{&8%.*.&+*@*#*$*%*&***=*-*;*>*,*V&V&'*)*!*~*3+. . . . . + l&{*+ + . . . . . ", +" % % { { K&] ] B b 8$c I$[.d d #.e $.E 6%q.&.]*^*~&X.q%J%/*(*9&N&$*_*:*<***[*}*|*1*2*3*3*4*5*6*7*3+% . . . . + 8*,&+ . . . . ", +" % % b &#B b n.c U./ A+( H%o.e D $.g W.F 9*0*a*~%b*c*r%d*+&9&N&t&e*f*g*h***i*j*j*k*l*l*m*n*o*p*7*% % . . . . + F%G%+ . . . . ", +" % % c c +.+.U./ [.Z%C d #.D !&$.@$o%&.9**.a*q*X.c*r*J%+&(&@*t&O&f*s*<*t***u*v*w*x*y*z*A*B*p*p*C*% % . . . . + 4@+ + . . . . . ", +" % % / A+( H%d [+o. *D D $.5&W.D*&.9*s.^*E*{%8%]&^&.&(&@*N&F*_*G*<*H*I*J*K*L*M*N*O*O*P*p*p*Q*R*S*% . . . . . + n#+ . . . . . ", +" % % d d d T*#.9$D `%$.E g F n&r.*.s.~%`${%U*J%^&V*W*@*X*F*f*G*<*h*I*Y*Z*K*`* = =.=+=@=p*#=C*$=%=% . . . . . + &=+ . . . . ", +" % % D 9$D !&p.f q$@$%.F }.&.9**===~%`$8%]&.*/*+&9&s&-=F*_*G*<*;=>=Y*,='=K*)=!=~={=]=p*^=#=/=S*%=% . . . . . + M + . . . . ", +" % % % $.$.5&(=g W.F }.&.*.s$s.~%E*7&8%_=J%r&(*9&9&:=O&e*%*<*<=[=}=J*'=|=K*1=2=3=4=p*p*5=C*6=7=8=9=% . . . . + + + . . . . ", +" % % F o%F n&0=&.&.s$*.s. &q*`$a=]&r*J%.&+&b=c=t&d=e=:*f=g=h=Y*J*'=|=i=j=1=k=l=p*p*m=n=o=p=%=q=r=% . . . . + + . . . . . ", +" % % 0=o&*.r$*.]*s.Z$^*~&`${&8%s=r%.&V*+&9&@*t&O&e*t=u=v=h=h=w=x=|=y=z=A=1=B=p*p*C=D=R*E=%=F=9=G=% . . . . + + . . . . . ", +" % % 0*0*s.Z$s.~%t.`$`$8%U*]&J%.&.&(*(&9&N&t&O&H=I=<*h*H*I*J='=|=y=z=A=K=1=@=p*L=M=C*6=N=F=9=O=P=Q=. . . . + + . . . . ", +" % % % ~%~%~&E*{%b*8%]&r*.*R=.&S=+&9&N&t&d=e*f*G*<*g=T=}=U=,=|=y=z=A=K=V=@=p*W=5=C*X=p=Y=Z=`= -.-+-. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" % % {%a=8%c*8%]&q&J%/*.&/&@-9&@*#-$*O&_*$-u=<*%-h=Y*&-'=*-=-z=A=--V=;->-,-C=#=o='-%=F=r=)-!-+-~-. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" % % U*]&]&{-R=^&.&(*(*b=9&c=]-#-O&^-%*:*g*h*t*h=J=J*'=|=y=z=/-K=V=;-(-,-m=#=/=_-:-8=9=)- -<-[-}-. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" % % |-/*/*.&/&/&+&9&s&s&]-:=$*O&e=G*1-<*;=%-2-U=3-'=|=4-z=A=K=5-6-(-,-C=#=7-8-9-0-a-b- -.-c-d-e-. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" % % +&+&W*W*9&s&N&N&]-t&f-e*f*:*1-1-g=H*I*Y*g-3-h-|=y=z=A=i-V=;-(-,-C=#=C*$=p=j-k-O=l-P=+-m-}-n-. . . . . . . . . . . . . . . . . . . . . . . . . ", +" % % % 9&N&N&-=]-t&t&O&_*f*$-s*<*;=h*T=h=Y*J*'=o-p-y=z=A=5-V=;-(-,-C=#=C*$=p=%=q=r=)-q-+-r-}-s-t-. . . . . . . . . . . . . . . . . . ", +" % % t&t&u-f-O&^-f*%*G*G*<*h*h*%-Y*Y*J*Z*o-|==-z=z=v-w-V=;-(-,-C=#=C*E=p=%=F=r=G=.-<-x-}-e-y-z-. . . . . . . . . . . . . . . . . . ", +" % % ^-_*A-f*t=G*1-<*;=B-h*h=C-Y*J=x='=|=p-D-z=A=E-V=F-;-(-G-C=#=7-$=p=%=q=`=l- -.-[-H-e-n-I-J-. . . . . . . . . . . . . . . . . ", +" % % G*G*1-g*<*<*<=h*h=I*Y*Y*g-J*'=o-|=y=i=A=v-K=K-L-M->-L=N-D=C*$=O-%=F=P-O= -Q-+-R-}-y-I-J-S-. . . . . . . . . . . . . . . . ", +" % % g=g=<=h*h*%-h=C-}=Y*J*,='=|=|=y=y=z=A=E-T-V=;-(-U-V-C=W-C*S*p=Y=Z=r=O= -Q=+-m-X-Y-Z-`-S- ;. . . . . . . . . . . . . . . . ", +" % % H*T=h=h=Y*Y*w=J*3-,=.;h-+;y=@;z=A=E-w-V=#;(-(-,-C=#=D=/='-p=%=q=r=O= -.-$;R-}-s-Z-`-S-%;&;. . . . . . . . . . . . . ", +" % % % w=J=&-,=J*'='=o-|=y=D-z=z=A=--w-V=V=;-(-*;W=N-=;D=o=S*:--;Z=P-)- -Q=[-d-X-e-;;I->;,;';);. . . . . . . . . . . ", +" % % Z*'='='=!;|=+;y=i=z=~;A=--K=K-F-;-{;];,-C=#=D=R*$=p=%=j-Z=O=O=!-^;x-~-}-s-I-/;(;,;_;:;<;. . . . . . . . . ", +" % % |=|=4-[;D-i=z=/-};|;K=K-K-#;1;1;(-,-L=#=Q*C*o='-%=%=F=2;3;4;5;Q-[-R-e-6;t-z-(;7;8;:;9;0;. . . . . . . ", +" % % i=i=z=z=a;A=K=|;b;T-V=6-;-{;c;,-C=C=Q*D=C*$=p=:-8=q=9=O= -.-+-[-}-}-y-d;/;e;f;_;g;h;i;0;. . . . . ", +" % % A=v-i-K=K=K=b;V=;-j;(-(-*;,-C=k;#==;R*$=_-p=%=F=9=r=l; -^;+-~-d-m;s-n;`-J-,;8;);o;p;0;0;. . . 0;% % ", +" % % V=V=T-V=V=F-j;q;(-];,-W=C=m=#=n=C*$=8-N=%=0-Z=`=O= -r;Q-+-m-}-e-s;I-J-e;7;';);o;0;0;0;0;0;0;0;0;% % ", +" % % ;-1;M-q;(-(-*;,-,-C=m=t;#=C*/=u;E=p=%=-;F=9=P-)- -.-v;~-~-m;e-y-I-J-S- ;w;);x;0;0;0;0;0;0;0;0;0;% % ", +" % % (-U-*;,-W=G-C=m=#=#=n=C*$=$=p=p=%=-;F=a-9=O=y;.-Q-[-% % % % % % % % % % % % % % % % % % % % % 0;% % ", +" % % W=C=m=m=N-#=#=Q*X=o=$=E=p=z;%=-;2;2;P-O= -P=% % % % % % % % % % % % % % % % % % % % % % % % % ", +" % % #=#=n=C*C*$=$=6=6=p=p=%=0-F=k-9=b-O= -% % % % % % % % % % % ", +" % % $=$=$=8-p=p=p=z;%=0--;q=9=9=O=O=% % % % % % % ", +" % % p=p=z;:-%=%=j-F=k-A;9=3;O=% % % % % % % ", +" % % Y=Y=F=F=F=k-9=O=B;G=l;% % % % % % ", +" % % 9=P-9=`=O=O= - -% % % % % % ", +" % % 4;l- - - -P=% % % % % % ", +" % % C;.-.-Q-% % % % % ", +" % % $;D;% % % % % ", +" % % % % % % % ", +" % % % % % ", +" % % % ", +" E;% ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" "}; diff --git a/src/Mod/Surfaces/Icons/ConvertIco.png b/src/Mod/Surfaces/Icons/ConvertIco.png new file mode 100644 index 0000000000..d9fd46d224 Binary files /dev/null and b/src/Mod/Surfaces/Icons/ConvertIco.png differ diff --git a/src/Mod/Surfaces/Icons/ConvertIco.xcf b/src/Mod/Surfaces/Icons/ConvertIco.xcf new file mode 100644 index 0000000000..31ce091609 Binary files /dev/null and b/src/Mod/Surfaces/Icons/ConvertIco.xcf differ diff --git a/src/Mod/Surfaces/Icons/ConvertTo4SidesIco.xpm b/src/Mod/Surfaces/Icons/ConvertTo4SidesIco.xpm new file mode 100644 index 0000000000..488054321e --- /dev/null +++ b/src/Mod/Surfaces/Icons/ConvertTo4SidesIco.xpm @@ -0,0 +1,1398 @@ +/* XPM */ +static char * ConvertTo4SidesIco_xpm[] = { +"128 128 1267 2", +" c None", +". c #000000", +"+ c #00B5A2", +"@ c #00B4A0", +"# c #00B39F", +"$ c #00B19F", +"% c #00B09D", +"& c #00AF9C", +"* c #00AE9C", +"= c #00AC9A", +"- c #00AB99", +"; c #00AA98", +"> c #00BDA9", +", c #00BCA8", +"' c #00BBA6", +") c #00B9A6", +"! c #00B8A5", +"~ c #00B7A4", +"{ c #00B6A3", +"] c #00B4A2", +"^ c #00B3A0", +"/ c #00B19E", +"( c #00AD9B", +"_ c #00A997", +": c #00A796", +"< c #00A794", +"[ c #00A594", +"} c #00C2AD", +"| c #00C1AD", +"1 c #00C0AC", +"2 c #00BFAB", +"3 c #00BDAA", +"4 c #00BDA8", +"5 c #00BBA7", +"6 c #00BAA6", +"7 c #00B9A5", +"8 c #00B6A4", +"9 c #00B4A1", +"0 c #00AE9B", +"a c #00A795", +"b c #00A694", +"c c #00A493", +"d c #00C3AE", +"e c #00C3AF", +"f c #00C4AE", +"g c #00C2AE", +"h c #00C0AB", +"i c #00BEAB", +"j c #00BAA5", +"k c #00B7A3", +"l c #00B09C", +"m c #00AB9A", +"n c #00A996", +"o c #00A896", +"p c #00A593", +"q c #00A392", +"r c #00A291", +"s c #00C4AF", +"t c #00C5B0", +"u c #00BEAA", +"v c #00B5A1", +"w c #00B29E", +"x c #00B19D", +"y c #00A090", +"z c #00C3AD", +"A c #00C6B1", +"B c #00C6B0", +"C c #00C5B1", +"D c #00C5AF", +"E c #00BCA9", +"F c #00BCA7", +"G c #00B8A4", +"H c #00B3A1", +"I c #00AD9A", +"J c #00A391", +"K c #00A190", +"L c #00A08F", +"M c #00C7B2", +"N c #00C8B2", +"O c #00C6B2", +"P c #00C4B0", +"Q c #00BFAA", +"R c #00B7A5", +"S c #00AC99", +"T c #00A494", +"U c #009E8E", +"V c #00C1AC", +"W c #00C8B4", +"X c #00C9B4", +"Y c #00C9B3", +"Z c #00C8B3", +"` c #00B29F", +" . c #00AF9D", +".. c #00A290", +"+. c #00A18F", +"@. c #009F8E", +"#. c #00C7B1", +"$. c #00CAB5", +"%. c #00CBB6", +"&. c #00CBB5", +"*. c #00C9B5", +"=. c #00C7B3", +"-. c #00BBA8", +";. c #00BAA7", +">. c #00AA99", +",. c #00A895", +"'. c #009D8C", +"). c #00C0AD", +"!. c #00CCB6", +"~. c #00CAB4", +"{. c #009E8C", +"]. c #00CAB6", +"^. c #00CEB7", +"/. c #00CDB8", +"(. c #00CDB7", +"_. c #00AB98", +":. c #00A998", +"<. c #009E8D", +"[. c #009C8B", +"}. c #009A8B", +"|. c #00CFB8", +"1. c #00A695", +"2. c #00CEB8", +"3. c #00BEA9", +"4. c #00AD9C", +"5. c #00A393", +"6. c #009B8B", +"7. c #009989", +"8. c #00AB7F", +"9. c #009D8D", +"0. c #009888", +"a. c #00AA7F", +"b. c #009F8D", +"c. c #009B8A", +"d. c #009787", +"e. c #00A97E", +"f. c #00A97D", +"g. c #00B6A2", +"h. c #009A8A", +"i. c #009887", +"j. c #009686", +"k. c #00A87C", +"l. c #00A77C", +"m. c #00BF7D", +"n. c #00A67B", +"o. c #00A67A", +"p. c #00B09E", +"q. c #00A897", +"r. c #009889", +"s. c #009685", +"t. c #009484", +"u. c #00A57A", +"v. c #00BE7D", +"w. c #00BD7C", +"x. c #00A579", +"y. c #00A479", +"z. c #00A08E", +"A. c #009A89", +"B. c #009988", +"C. c #009687", +"D. c #009384", +"E. c #00BC7B", +"F. c #00B67A", +"G. c #00A378", +"H. c #00AC9B", +"I. c #009D8B", +"J. c #009585", +"K. c #009283", +"L. c #00C1AB", +"M. c #00B17A", +"N. c #00BB7A", +"O. c #00B77A", +"P. c #00A778", +"Q. c #00A277", +"R. c #00A177", +"S. c #00BBA4", +"T. c #00B5A3", +"U. c #00A292", +"V. c #00A379", +"W. c #00BA78", +"X. c #00B878", +"Y. c #00AC78", +"Z. c #00A075", +"`. c #009E74", +" + c #009C8C", +".+ c #009584", +"++ c #009383", +"@+ c #009183", +"#+ c #009081", +"$+ c #00A278", +"%+ c #00A178", +"&+ c #00B778", +"*+ c #00B978", +"=+ c #00B777", +"-+ c #00B076", +";+ c #009D73", +">+ c #009586", +",+ c #009182", +"'+ c #00A076", +")+ c #00AD76", +"!+ c #00B877", +"~+ c #00B876", +"{+ c #00B676", +"]+ c #00B576", +"^+ c #00B175", +"/+ c #00A274", +"(+ c #009C72", +"_+ c #00A17C", +":+ c #009483", +"<+ c #008F81", +"[+ c #008E7F", +"}+ c #00AC75", +"|+ c #00B776", +"1+ c #00B575", +"2+ c #00B475", +"3+ c #00B375", +"4+ c #00B174", +"5+ c #00A773", +"6+ c #009C71", +"7+ c #009A71", +"8+ c #009970", +"9+ c #009485", +"0+ c #009082", +"a+ c #008F80", +"b+ c #001C00", +"c+ c #009F75", +"d+ c #009E75", +"e+ c #009F74", +"f+ c #00AC74", +"g+ c #00B875", +"h+ c #00B675", +"i+ c #00B374", +"j+ c #00B073", +"k+ c #00AA72", +"l+ c #009C70", +"m+ c #00996F", +"n+ c #00986E", +"o+ c #008D7F", +"p+ c #008C7D", +"q+ c #005F00", +"r+ c #001E00", +"s+ c #00A573", +"t+ c #00A974", +"u+ c #00AD74", +"v+ c #00B074", +"w+ c #00B574", +"x+ c #00B774", +"y+ c #00B474", +"z+ c #00B273", +"A+ c #00B072", +"B+ c #00AF72", +"C+ c #00AE72", +"D+ c #00AB71", +"E+ c #00A06F", +"F+ c #00976E", +"G+ c #00976D", +"H+ c #00966D", +"I+ c #00AA97", +"J+ c #008D7E", +"K+ c #008B7C", +"L+ c #006D00", +"M+ c #007F00", +"N+ c #009200", +"O+ c #00A201", +"P+ c #00B302", +"Q+ c #039D0A", +"R+ c #003B00", +"S+ c #003A00", +"T+ c #00BA75", +"U+ c #00BA74", +"V+ c #00B974", +"W+ c #00B674", +"X+ c #00B573", +"Y+ c #00B373", +"Z+ c #00B272", +"`+ c #00B071", +" @ c #00AD71", +".@ c #00AB70", +"+@ c #00AA70", +"@@ c #00A36E", +"#@ c #00986D", +"$@ c #00956C", +"%@ c #009181", +"&@ c #006600", +"*@ c #007D00", +"=@ c #009500", +"-@ c #00AC00", +";@ c #00C100", +">@ c #00D201", +",@ c #00D601", +"'@ c #00D402", +")@ c #00D202", +"!@ c #00D003", +"~@ c #00CD02", +"{@ c #00CB03", +"]@ c #00BA73", +"^@ c #00B873", +"/@ c #00B773", +"(@ c #00B673", +"_@ c #00B473", +":@ c #00B372", +"<@ c #00AF71", +"[@ c #00AE70", +"}@ c #00AC6F", +"|@ c #00AA6F", +"1@ c #00A86F", +"2@ c #00A56E", +"3@ c #009B6D", +"4@ c #00946A", +"5@ c #00936A", +"6@ c #009269", +"7@ c #009F8F", +"8@ c #00998A", +"9@ c #008F7F", +"0@ c #008E7E", +"a@ c #008B7D", +"b@ c #00897A", +"c@ c #009900", +"d@ c #00B300", +"e@ c #00CE00", +"f@ c #00E100", +"g@ c #00E101", +"h@ c #00DE01", +"i@ c #00DC01", +"j@ c #00DA01", +"k@ c #00D801", +"l@ c #00D502", +"m@ c #00D302", +"n@ c #00D102", +"o@ c #00CE02", +"p@ c #003A01", +"q@ c #00B872", +"r@ c #00B772", +"s@ c #00B672", +"t@ c #00B572", +"u@ c #00B472", +"v@ c #00B271", +"w@ c #00B171", +"x@ c #00B070", +"y@ c #00AE6F", +"z@ c #00AB6F", +"A@ c #00A96F", +"B@ c #00A76E", +"C@ c #00A66E", +"D@ c #00A56D", +"E@ c #00A06C", +"F@ c #00956A", +"G@ c #009168", +"H@ c #009067", +"I@ c #008D7D", +"J@ c #008C7C", +"K@ c #008A7B", +"L@ c #00887A", +"M@ c #007100", +"N@ c #008E00", +"O@ c #00AD01", +"P@ c #00C801", +"Q@ c #00E301", +"R@ c #00E401", +"S@ c #00E500", +"T@ c #00E400", +"U@ c #00E201", +"V@ c #00E001", +"W@ c #00DB01", +"X@ c #00D902", +"Y@ c #00D702", +"Z@ c #00CF02", +"`@ c #00CD03", +" # c #02CB08", +".# c #00B871", +"+# c #00B671", +"@# c #00B471", +"## c #00B270", +"$# c #00AF70", +"%# c #00AA6E", +"&# c #00A86E", +"*# c #00A36D", +"=# c #00A36C", +"-# c #00A16B", +";# c #009B69", +"># c #009267", +",# c #008F66", +"'# c #008E66", +")# c #008B7B", +"!# c #008779", +"~# c #009C01", +"{# c #00C201", +"]# c #00D401", +"^# c #00DD01", +"/# c #00DF01", +"(# c #00E600", +"_# c #00E800", +":# c #00DC02", +"<# c #00D701", +"[# c #00CF03", +"}# c #00CC02", +"|# c #00C903", +"1# c #00B670", +"2# c #00B570", +"3# c #00B470", +"4# c #00B370", +"5# c #00B26F", +"6# c #00B16F", +"7# c #00AF6F", +"8# c #00AE6E", +"9# c #00AC6E", +"0# c #00AB6E", +"a# c #00A96E", +"b# c #00A66D", +"c# c #00A56C", +"d# c #00A36B", +"e# c #00A26A", +"f# c #00A169", +"g# c #009F69", +"h# c #009668", +"i# c #008E65", +"j# c #008C64", +"k# c #009080", +"l# c #00877A", +"m# c #008678", +"n# c #006400", +"o# c #00C301", +"p# c #00DA02", +"q# c #00E700", +"r# c #00EA00", +"s# c #00CA03", +"t# c #003900", +"u# c #00B36F", +"v# c #00B16E", +"w# c #00AF6E", +"x# c #00AD6E", +"y# c #00A96D", +"z# c #00A86D", +"A# c #00A76C", +"B# c #00A069", +"C# c #009D68", +"D# c #008D65", +"E# c #008A7A", +"F# c #008677", +"G# c #008600", +"H# c #00D802", +"I# c #00E801", +"J# c #00CC03", +"K# c #01C706", +"L# c #00B36E", +"M# c #00B06E", +"N# c #00AB6D", +"O# c #00AA6D", +"P# c #00A66B", +"Q# c #00A66C", +"R# c #00A46B", +"S# c #00A16A", +"T# c #009F68", +"U# c #009466", +"V# c #008D64", +"W# c #008B64", +"X# c #009282", +"Y# c #008477", +"Z# c #008475", +"`# c #4D0000", +" $ c #970000", +".$ c #750000", +"+$ c #520000", +"@$ c #300000", +"#$ c #0E0000", +"$$ c #00B501", +"%$ c #00D602", +"&$ c #00E200", +"*$ c #00C703", +"=$ c #00B26D", +"-$ c #00B16D", +";$ c #00AF6D", +">$ c #00AD6D", +",$ c #00AC6C", +"'$ c #00AB6C", +")$ c #00A96C", +"!$ c #00A86B", +"~$ c #00A36A", +"{$ c #00A269", +"]$ c #009F67", +"^$ c #009C67", +"/$ c #00897B", +"($ c #008578", +"_$ c #008476", +":$ c #008375", +"<$ c #A70000", +"[$ c #FF0000", +"}$ c #EA0000", +"|$ c #BE0000", +"1$ c #900000", +"2$ c #5E0000", +"3$ c #200000", +"4$ c #007700", +"5$ c #00D002", +"6$ c #00C803", +"7$ c #00B06D", +"8$ c #00AE6D", +"9$ c #00AE6C", +"0$ c #00AD6C", +"a$ c #00A96B", +"b$ c #00A76B", +"c$ c #00A56A", +"d$ c #00A369", +"e$ c #009565", +"f$ c #008B63", +"g$ c #008778", +"h$ c #008577", +"i$ c #008376", +"j$ c #008274", +"k$ c #1B0000", +"l$ c #F10000", +"m$ c #FE0000", +"n$ c #FD0000", +"o$ c #DF0000", +"p$ c #A00000", +"q$ c #640000", +"r$ c #270000", +"s$ c #00AB01", +"t$ c #00DB02", +"u$ c #00C603", +"v$ c #05BB0D", +"w$ c #003901", +"x$ c #003800", +"y$ c #00AF6C", +"z$ c #00AC6B", +"A$ c #00AB6B", +"B$ c #00AA6B", +"C$ c #00A66A", +"D$ c #00A469", +"E$ c #009E67", +"F$ c #009D66", +"G$ c #008D63", +"H$ c #008B62", +"I$ c #009786", +"J$ c #008374", +"K$ c #008172", +"L$ c #6F0000", +"M$ c #FC0000", +"N$ c #FB0000", +"O$ c #FA0000", +"P$ c #F80000", +"Q$ c #E00000", +"R$ c #A30000", +"S$ c #4C0000", +"T$ c #050000", +"U$ c #00D101", +"V$ c #00D901", +"W$ c #00C503", +"X$ c #00C303", +"Y$ c #003801", +"Z$ c #00AE6B", +"`$ c #00AD6B", +" % c #00AA6A", +".% c #00A86A", +"+% c #00A76A", +"@% c #00A669", +"#% c #00A569", +"$% c #00A268", +"%% c #00A168", +"&% c #00A067", +"*% c #009664", +"=% c #008A62", +"-% c #009788", +";% c #008173", +">% c #007F72", +",% c #040000", +"'% c #D50000", +")% c #FC0001", +"!% c #F90000", +"~% c #F90100", +"{% c #F70000", +"]% c #F60000", +"^% c #F50000", +"/% c #F40000", +"(% c #E50000", +"_% c #9A0000", +":% c #400000", +"<% c #00A401", +"[% c #00C604", +"}% c #00C404", +"|% c #00C103", +"1% c #00AC6A", +"2% c #00AB6A", +"3% c #00AB69", +"4% c #00A969", +"5% c #00A869", +"6% c #00A769", +"7% c #00A568", +"8% c #009C65", +"9% c #008F63", +"0% c #008E80", +"a% c #008174", +"b% c #490000", +"c% c #FC0100", +"d% c #F70100", +"e% c #F30100", +"f% c #F30000", +"g% c #F20000", +"h% c #F10101", +"i% c #B80000", +"j% c #420000", +"k% c #006A00", +"l% c #00CC01", +"m% c #00D501", +"n% c #00CE03", +"o% c #00C003", +"p% c #003701", +"q% c #00AA69", +"r% c #00A468", +"s% c #00A368", +"t% c #00A167", +"u% c #009D65", +"v% c #009864", +"w% c #008961", +"x% c #008679", +"y% c #008072", +"z% c #007E72", +"A% c #007D70", +"B% c #B90000", +"C% c #F50100", +"D% c #F30001", +"E% c #F30101", +"F% c #F20100", +"G% c #F10100", +"H% c #EF0000", +"I% c #EE0000", +"J% c #ED0101", +"K% c #440000", +"L% c #00A101", +"M% c #00C902", +"N% c #00C403", +"O% c #00C104", +"P% c #00BF04", +"Q% c #03BD0A", +"R% c #003601", +"S% c #00A968", +"T% c #00A868", +"U% c #00A768", +"V% c #00A668", +"W% c #00A266", +"X% c #009E66", +"Y% c #009B64", +"Z% c #009063", +"`% c #008273", +" & c #007E71", +".& c #007D6F", +"+& c #280000", +"@& c #F70001", +"#& c #F60100", +"$& c #F40101", +"%& c #F00100", +"&& c #EE0100", +"*& c #ED0100", +"=& c #ED0000", +"-& c #EB0100", +";& c #450000", +">& c #00C204", +",& c #00BF03", +"'& c #00BE03", +")& c #00BB04", +"!& c #00A667", +"~& c #00A567", +"{& c #00A467", +"]& c #00A367", +"^& c #00A066", +"/& c #00A166", +"(& c #009E65", +"_& c #009B63", +":& c #009A63", +"<& c #008A61", +"[& c #008861", +"}& c #008879", +"|& c #008275", +"1& c #008073", +"2& c #007B6F", +"3& c #9B0000", +"4& c #F90001", +"5& c #F40100", +"6& c #F20001", +"7& c #F00001", +"8& c #EF0100", +"9& c #ED0001", +"0& c #EC0001", +"a& c #EB0001", +"b& c #EA0101", +"c& c #E90001", +"d& c #E80001", +"e& c #460000", +"f& c #00A801", +"g& c #00C203", +"h& c #00C004", +"i& c #00BE04", +"j& c #00BC04", +"k& c #00BA05", +"l& c #003501", +"m& c #00A466", +"n& c #00A366", +"o& c #009F65", +"p& c #009C64", +"q& c #009462", +"r& c #008960", +"s& c #008760", +"t& c #007C6F", +"u& c #007B6D", +"v& c #007A6C", +"w& c #150000", +"x& c #F60101", +"y& c #F40001", +"z& c #F00000", +"A& c #EF0101", +"B& c #EC0000", +"C& c #EA0100", +"D& c #E90100", +"E& c #E70001", +"F& c #E70101", +"G& c #E40100", +"H& c #AB0000", +"I& c #007A00", +"J& c #00CB02", +"K& c #00CA02", +"L& c #00C802", +"M& c #00C304", +"N& c #00BA04", +"O& c #00B805", +"P& c #00A465", +"Q& c #00A365", +"R& c #00A165", +"S& c #00A065", +"T& c #009A64", +"U& c #009D64", +"V& c #008D61", +"W& c #008576", +"X& c #007D71", +"Y& c #007C70", +"Z& c #007B6E", +"`& c #007A6D", +" * c #00796C", +".* c #010000", +"+* c #7D0000", +"@* c #EB0000", +"#* c #E80100", +"$* c #E70000", +"%* c #E70100", +"&* c #E60100", +"** c #E40101", +"=* c #E30100", +"-* c #E30101", +";* c #DD0000", +">* c #770000", +",* c #00B801", +"'* c #00BD04", +")* c #00B904", +"!* c #00B604", +"~* c #03B60B", +"{* c #003401", +"]* c #009C63", +"^* c #009363", +"/* c #008962", +"(* c #009963", +"_* c #009962", +":* c #009762", +"<* c #00875F", +"[* c #00786B", +"}* c #0C0000", +"|* c #E30000", +"1* c #EE0001", +"2* c #EC0100", +"3* c #E80101", +"4* c #E60000", +"5* c #E40000", +"6* c #E20101", +"7* c #E10101", +"8* c #E00001", +"9* c #E00101", +"0* c #AC0000", +"a* c #1A0000", +"b* c #008F01", +"c* c #00B705", +"d* c #00B505", +"e* c #00B305", +"f* c #003001", +"g* c #002100", +"h* c #009B88", +"i* c #009A62", +"j* c #009862", +"k* c #009861", +"l* c #009060", +"m* c #00855E", +"n* c #00776A", +"o* c #00766A", +"p* c #630000", +"q* c #EC0101", +"r* c #EA0001", +"s* c #E90000", +"t* c #E80000", +"u* c #E60101", +"v* c #E50100", +"w* c #E10000", +"x* c #DF0100", +"y* c #DE0001", +"z* c #D00000", +"A* c #006800", +"B* c #00B704", +"C* c #00B504", +"D* c #00B204", +"E* c #008C02", +"F* c #008860", +"G* c #009361", +"H* c #009961", +"I* c #009761", +"J* c #009760", +"K* c #00895F", +"L* c #008C7E", +"M* c #007F71", +"N* c #00786C", +"O* c #007669", +"P* c #D40000", +"Q* c #EF0001", +"R* c #E20000", +"S* c #E10001", +"T* c #DE0101", +"U* c #DD0100", +"V* c #DD0101", +"W* c #DC0001", +"X* c #D90000", +"Y* c #740000", +"Z* c #00A102", +"`* c #00A903", +" = c #007401", +".= c #00945F", +"+= c #00845D", +"@= c #00845C", +"#= c #007E70", +"$= c #00786A", +"%= c #00756A", +"&= c #007568", +"*= c #590000", +"== c #E10100", +"-= c #DF0101", +";= c #DB0101", +">= c #DA0101", +",= c #D90101", +"'= c #930000", +")= c #007A01", +"!= c #00B804", +"~= c #00B605", +"{= c #009C03", +"]= c #006300", +"^= c #00865E", +"/= c #008D5F", +"(= c #009660", +"_= c #009560", +":= c #00955F", +"<= c #008E5E", +"[= c #009280", +"}= c #007A6E", +"|= c #00796B", +"1= c #007469", +"2= c #007468", +"3= c #020000", +"4= c #CD0000", +"5= c #E90101", +"6= c #E50001", +"7= c #E20100", +"8= c #D80000", +"9= c #D70001", +"0= c #BD0000", +"a= c #2E0000", +"b= c #00B103", +"c= c #00B405", +"d= c #009803", +"e= c #006100", +"f= c #00895D", +"g= c #00955E", +"h= c #00875C", +"i= c #00825B", +"j= c #007569", +"k= c #007467", +"l= c #007367", +"m= c #007165", +"n= c #5C0000", +"o= c #E50101", +"p= c #DC0101", +"q= c #D80100", +"r= c #D60100", +"s= c #D50101", +"t= c #CC0000", +"u= c #4B0000", +"v= c #009002", +"w= c #00B404", +"x= c #009702", +"y= c #006000", +"z= c #00945E", +"A= c #00915D", +"B= c #007166", +"C= c #030000", +"D= c #CF0000", +"E= c #E30001", +"F= c #DE0100", +"G= c #DB0100", +"H= c #D90100", +"I= c #D80101", +"J= c #D70101", +"K= c #D60101", +"L= c #D50001", +"M= c #D40100", +"N= c #D30101", +"O= c #D10000", +"P= c #007101", +"Q= c #00B205", +"R= c #009903", +"S= c #00835B", +"T= c #00845B", +"U= c #00935E", +"V= c #00935D", +"W= c #008B5C", +"X= c #00815A", +"Y= c #00776B", +"Z= c #007266", +"`= c #006F64", +" - c #5B0000", +".- c #DD0001", +"+- c #DA0001", +"@- c #D80001", +"#- c #D40101", +"$- c #D30001", +"%- c #D20001", +"&- c #D10100", +"*- c #D00101", +"=- c #00A904", +"-- c #00B105", +";- c #009F04", +">- c #00925D", +",- c #00935C", +"'- c #00845A", +")- c #008059", +"!- c #007064", +"~- c #006E63", +"{- c #000303", +"]- c #D20000", +"^- c #EB0101", +"/- c #E20001", +"(- c #DC0100", +"_- c #DA0100", +":- c #D90001", +"<- c #D20101", +"[- c #D10101", +"}- c #CF0100", +"|- c #CE0000", +"1- c #000200", +"2- c #009102", +"3- c #00B005", +"4- c #00AF05", +"5- c #00A105", +"6- c #006500", +"7- c #008F7E", +"8- c #008F5B", +"9- c #007F59", +"0- c #007164", +"a- c #007063", +"b- c #006E62", +"c- c #006D61", +"d- c #6A0000", +"e- c #E40001", +"f- c #D70100", +"g- c #D30100", +"h- c #D20100", +"i- c #CF0101", +"j- c #CD0101", +"k- c #C80000", +"l- c #3B0000", +"m- c #007B01", +"n- c #00AE05", +"o- c #00AD05", +"p- c #00A604", +"q- c #008D5A", +"r- c #008859", +"s- c #007F58", +"t- c #007366", +"u- c #007265", +"v- c #D40001", +"w- c #CE0101", +"x- c #CC0101", +"y- c #C20000", +"z- c #2D0000", +"A- c #00AC05", +"B- c #00AC06", +"C- c #00AB06", +"D- c #00A905", +"E- c #007201", +"F- c #008A58", +"G- c #008258", +"H- c #007D57", +"I- c #00796D", +"J- c #007368", +"K- c #006F62", +"L- c #870000", +"M- c #E60001", +"N- c #DA0000", +"O- c #CB0101", +"P- c #CA0101", +"Q- c #009E05", +"R- c #00AA06", +"S- c #00A906", +"T- c #00A806", +"U- c #007D02", +"V- c #008758", +"W- c #007D56", +"X- c #006F63", +"Y- c #1D0000", +"Z- c #DF0001", +"`- c #C90101", +" ; c #C70101", +".; c #B70000", +"+; c #008903", +"@; c #00A705", +"#; c #00A706", +"$; c #008503", +"%; c #008456", +"&; c #007D55", +"*; c #008977", +"=; c #007267", +"-; c #006D62", +";; c #E00100", +">; c #DE0000", +",; c #D70000", +"'; c #C80101", +"); c #C50201", +"!; c #007602", +"~; c #00A506", +"{; c #00A406", +"]; c #009104", +"^; c #007C55", +"/; c #008156", +"(; c #007B55", +"_; c #007C6E", +":; c #380000", +"<; c #C70102", +"[; c #C50101", +"}; c #006700", +"|; c #00A206", +"1; c #009605", +"2; c #006200", +"3; c #007A54", +"4; c #007B54", +"5; c #B20000", +"6; c #C60101", +"7; c #C40101", +"8; c #009B06", +"9; c #009906", +"0; c #007A53", +"a; c #007953", +"b; c #007065", +"c; c #4E0000", +"d; c #D00100", +"e; c #C80201", +"f; c #C60201", +"g; c #C30101", +"h; c #BE0301", +"i; c #009005", +"j; c #006C01", +"k; c #007852", +"l; c #CA0000", +"m; c #DB0001", +"n; c #CF0001", +"o; c #C30201", +"p; c #C20101", +"q; c #C20102", +"r; c #006E01", +"s; c #670000", +"t; c #DB0000", +"u; c #D60001", +"v; c #D10001", +"w; c #C10102", +"x; c #C00102", +"y; c #8F0101", +"z; c #007650", +"A; c #0F0000", +"B; c #CA0102", +"C; c #C40201", +"D; c #C10101", +"E; c #C00201", +"F; c #BC0201", +"G; c #BB0101", +"H; c #540000", +"I; c #8C0000", +"J; c #BF0101", +"K; c #BE0102", +"L; c #BC0101", +"M; c #BB0202", +"N; c #BA0101", +"O; c #B60000", +"P; c #2A0000", +"Q; c #330000", +"R; c #C00101", +"S; c #BD0201", +"T; c #BC0102", +"U; c #BB0201", +"V; c #B90202", +"W; c #B80102", +"X; c #9E0001", +"Y; c #090000", +"Z; c #C80102", +"`; c #C20202", +" > c #BF0102", +".> c #BE0201", +"+> c #BD0101", +"@> c #BC0202", +"#> c #BB0102", +"$> c #BA0201", +"%> c #B90102", +"&> c #B70101", +"*> c #750101", +"=> c #BE0101", +"-> c #B70102", +";> c #B60102", +">> c #B40102", +",> c #3F0000", +"'> c #160000", +")> c #C20201", +"!> c #BF0201", +"~> c #BD0202", +"{> c #B80101", +"]> c #B70202", +"^> c #B60201", +"/> c #B50201", +"(> c #B30201", +"_> c #A50001", +":> c #100000", +"<> c #960000", +"[> c #C60102", +"}> c #C10201", +"|> c #BD0102", +"1> c #B70201", +"2> c #B30101", +"3> c #B20201", +"4> c #7A0001", +"5> c #B80202", +"6> c #B60101", +"7> c #B50101", +"8> c #B40202", +"9> c #B10201", +"0> c #B10102", +"a> c #AF0102", +"b> c #360000", +"c> c #140000", +"d> c #B90101", +"e> c #B90201", +"f> c #B40201", +"g> c #B30102", +"h> c #B20102", +"i> c #B10101", +"j> c #B00101", +"k> c #AE0201", +"l> c #9C0101", +"m> c #0A0000", +"n> c #A40000", +"o> c #C30102", +"p> c #B80201", +"q> c #B50102", +"r> c #B00102", +"s> c #AF0202", +"t> c #AE0202", +"u> c #AD0102", +"v> c #6B0001", +"w> c #660000", +"x> c #BA0202", +"y> c #B20202", +"z> c #B10202", +"A> c #B00201", +"B> c #AE0102", +"C> c #AC0201", +"D> c #AA0001", +"E> c #2B0000", +"F> c #B50202", +"G> c #AD0202", +"H> c #AC0101", +"I> c #AA0202", +"J> c #940100", +"K> c #070000", +"L> c #BA0000", +"M> c #C70201", +"N> c #C00202", +"O> c #B00202", +"P> c #AB0202", +"Q> c #AA0101", +"R> c #A80102", +"S> c #5D0101", +"T> c #7B0000", +"U> c #AC0102", +"V> c #AA0102", +"W> c #A90202", +"X> c #A70102", +"Y> c #A40101", +"Z> c #260000", +"`> c #B30202", +" , c #B20101", +"., c #AF0201", +"+, c #A80201", +"@, c #A70201", +"#, c #A70101", +"$, c #A60202", +"%, c #850101", +"&, c #C90000", +"*, c #AD0201", +"=, c #AB0201", +"-, c #A90102", +";, c #A70202", +">, c #A60101", +",, c #A50201", +"', c #A40201", +"), c #510000", +"!, c #A10000", +"~, c #B60202", +"{, c #AC0202", +"], c #A50102", +"^, c #A30102", +"/, c #9C0100", +"(, c #170000", +"_, c #720000", +":, c #A30202", +"<, c #A20202", +"[, c #A10202", +"}, c #740101", +"|, c #C90102", +"1, c #BF0202", +"2, c #BE0202", +"3, c #AE0101", +"4, c #AB0101", +"5, c #A90101", +"6, c #A40102", +"7, c #A30201", +"8, c #A10102", +"9, c #A00202", +"0, c #9F0202", +"a, c #390000", +"b, c #B10001", +"c, c #9D0100", +"d, c #880100", +"e, c #5E0101", +"f, c #4A0000", +"g, c #350000", +"h, c #240000", +"i, c #220000", +"j, c #1C0000", +"k, c #630101", +"l, c #790101", +"m, c #9F0102", +"n, c #8E0100", +"o, c #080000", +"p, c #C60001", +"q, c #C40202", +"r, c #B70100", +"s, c #6C0001", +"t, c #430000", +"u, c #290000", +"v, c #130000", +"w, c #060000", +"x, c #5C0101", +"y, c #AF0100", +"z, c #8F0000", +"A, c #2F0000", +"B, c #980001", +"C, c #660101", +"D, c #B50000", +"E, c #3C0000", +"F, c #3A0000", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" . . . . . . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . . . . . . . . + @ # $ % & * = - ; . . . . . . ", +" . . . . . . . . . . > > , ' ) ! ~ { ] ^ # / % & ( = - _ : < [ . . . . ", +" . . . . . . . . } | | 1 1 2 3 4 5 6 7 ! 8 { 9 ^ / / & 0 = - _ _ a b c . . . . ", +" . . . . . . d d e f d g | | | h i 3 , 5 j 7 ! k + 9 ^ / l * ( m ; n o b p q r . . . ", +" . . . . . g f s s t t t s s d g | | 2 u u , 6 j ! 8 { v ^ w x & ( = - _ o < [ q r y . . . ", +" . . . . } z s t t A A A A B C D s } } 1 2 u E F 6 ! G k + H $ % & * I - ; n < [ c J K L . . . ", +" . . . . 1 } z d D B A M M N M M O B P s } | 1 Q > , 5 ) R k + @ ^ / % * ( S ; n a [ T J r L U . . ", +" . . . u 2 V } e s A M N W X X Y X Z O C D d } | h u > 5 j 7 ~ + 9 # ` .& ( S ; _ a b T q ..+.@.. . . ", +" . . . . Q 1 } d s B #.Z X $.%.%.&.*.X =.#.t s g | 1 u > -.;.! R { ] ^ w % & * = >._ ,.b [ q K +.@.'.. . . ", +" . . . . ).} e D A =.Y $.%.!.!.!.%.~.Z M A s z } 1 u > , ' 7 ! { v @ ` % & ( = ; _ : b c q r L U {.'.. . ", +" . . . } s t A Z X ].!.^./.(.%.$.X N A s d } 1 2 u , ' 7 ! { 9 ^ ` / & ( ( _.:.o b [ q r K @.<.[.}.. . ", +" . . } f t #.Z ~.].!./.|.(.!.$.X =.A t d } 1 2 > , 6 7 ! 8 + H w / * * = - :.,.1.[ q r +.@.{.[.}.. . . ", +" . . . f t A Z *.%.!.(.2.(.!.&.W Z A t d | V 2 3.F 6 7 G k v H ` x & 4.= ; _ o b [ 5...K @.<.[.6.7.. . ", +" . . . P B Z Y ~.%.8.&.!.%.$.Z M A P d } 1 i > -.6 7 ! { 9 @ ` % & ( S - _ : b p q r +.@.9.[.}.7.0.. . ", +" . . . C M Z X $.a.a.a.$.X Z #.t s d | 1 Q > 5 6 7 G { 9 ^ w % * ( m - _ a b T q r +.b.{.[.c.7.d.. . . ", +" . . D A O N W X e.e.f.N M t s d } 1 2 u > -.6 7 ~ g.9 ^ / % & ( m >._ o [ c q K L b.'.6.h.7.i.j.. . ", +" . . . t A #.Z Z k.f.k.l.B P d z | 1 Q 3 , 5 j ! ~ + H ^ / l * I S ; _ a [ T q K L b.'.6.h.7.d.j.. . . ", +" . . s t t C A l.k.m.n.o.z z | 1 h u > -.6 7 G { + ^ ` p.l * = >.:.q.a [ c q K @.<.'.6.h.r.d.s.t.. . ", +" . . . e s s t t u.v.w.u.x.y.).h i > , ' 7 ! k g.9 ^ $ % & 4.= ; _ ,.< [ c r y z.<.[.6.A.B.C.j.D.. . . ", +" . . } g d d e u.u.E.F.x.G.G.Q 3 , 5 6 7 R k + H # / % * H.= >._ : b T q r K @.'.I.c.7.0.C.J.D.K.. . ", +" . . | } | } L.y.M.N.O.P.Q.R.S.F 6 7 ! k T.9 ^ ` % & * H.- ; o < b p U...y b.{.[.h.7.d.C.J.t.K.. . . ", +" . . 1 1 V 1 | V.P.N.W.X.Y.Z.Z.`.7 ! ~ { ] ^ # / % * ( = ; _ : a [ c r K L <. +6.h.7.d.j..+++@+#+. . ", +" . . . 2 2 2 2 $+%+&+*+X.=+-+Z.`.;+~ { + 9 ^ $ x & * = - ; o a b T q r y @.<.I.6.h.r.d.>+t.K.,+#+. . . ", +" . . u u u u 4 '+)+!+~+{+]+^+/+;+(+_+v ^ ` x .* ( = ; _ o < b c U.K L b.'.[.h.7.0.j.J.:+K.,+<+[+. . ", +" . . . , , , , Z.}+~+|+1+2+3+4+5+6+7+8+# / % & ( = - ; o ,.b [ q U.K @.<.'.6.h.B.i.j.9+++K.0+a+[+. . ", +" b+b+c+`.c+d+e+f+g+h+1+i+i+4+j+k+l+m+n+& & * I - >._ o a [ c q ..L b.{.I.6.7.0.d.>+t.++,+#+[+o+p+. . ", +" q+q+q+q+q+q+b+r+s+t+u+v+w+x+h+w+y+i+z+A+B+C+D+E+F+G+H+( = - I+o a b p q U.K L <.I.[.6.7.i.j.J.:+K.,+#+[+J+K+. . ", +" q+q+q+q+q+q+q+L+M+N+O+P+Q+R+S+T+U+V+g+x+W+X+Y+z+Z+`+C+ @.@+@@@#@$@$@; :.n a a [ q r ..L @.<.I.6.h.B.d.s.t.++,+%@a+[+J+K+. . . ", +" q+q+q+q+q+q+&@*@=@-@;@>@,@'@)@!@~@{@R+R+]@^@^@/@(@X+_@:@Z+`+<@[@}@+@|@1@2@3@4@5@6@,.b b p q r K 7@b.'.6.}.8@0.j.J.t.++,+#+9@0@a@K+b@. . ", +" q+q+q+q+q+&@M+c@d@e@f@g@g@h@i@j@k@l@m@n@o@{@R+R+p@q@r@s@t@u@:@v@w@x@[@y@}@z@A@B@C@D@E@F@6@G@H@T q r K z.U '.I.6.7.7.d.j.t.D.K.#+a+[+I@J@K@L@. . ", +" q+q+q+q+M@N@O@P@i@h@g@Q@R@S@T@U@V@h@W@X@Y@'@n@Z@`@ #R+S+.#+#t@@#@###w@x@$#y@}@z@%#&#B@D@*#=#-#;#>#H@,#'#K L @.<. +6.h.B.d.j.J.++++,+#+[+o+p+)#b@L@!#. . ", +" q+q+~#{#)@]#k@X@^#/#U@R@(#_#(#R@g@/#:#j@<#'@)@[#}#|#R+S+1#2#3#4###5#6#7#8#9#0#%#a#B@b#c#d#d#e#f#g#h#,#i#j#@.<.'.[.6.8@0.d.j.t.D.K.0+k#[+p+K+K@b@l#m#. . ", +" . . . . . . . . . . q+n#o#)@l@<#p#i@V@U@R@q#r#q#S@U@V@i@j@<#'@)@Z@`@s#R+S+t#3#u#5#5#v#w#8#x#0#0#y#z#A#c#=#d#e#f#f#B#C#i#D#L b.<.'.6.8@0.i.C.9+D.K.@+<+9@[+p+K@E#L@!#F#. . . ", +" . . . . . . . . . . . . . . . q+q+G#)@'@H#j@^#/#g@R@q#I#(#T@g@/#^#j@Y@'@)@Z@J#s#K#p@t#L#L#v#M#w#w#x#9#N#O#y#P#Q#R#d#f#S#f#B#T#U#V#W#U {.[.[.c.7.0.C.>+.+++X#,+a+o+I@J@K@b@!#m#Y#Z#. . ", +" . . `# $.$+$@$#$. . . . . . . . . . q+q+$$'@%$X@:#h@V@&$T@S@R@U@g@h@i@X@Y@'@)@[#}#s#*$S+t#=$v#-$w#;$>$,$'$O#)$!$P#R#~${$f#B#B#]$^$V#j#<.{.I.6.h.7.0.d.s.J.:+K.,+k#[+J+p+K+/$L@!#($_$:$. . ", +" . . . <$[$[$[$[$}$|$1$2$3$. . . . . . . . q+4$>@l@H#j@i@/#V@U@U@g@V@/#^#W@H#%$m@5$o@J#6$*$S+t#-$7$;$8$9$0$N#)$a$!$b$c$d$d$f#B#T#]$]$e$W#f${. +[.h.8@0.d.j.J.t.++K.#+a+[+J+K+K@b@l#g$h$i$j$. . . ", +" . . k$l$[$[$[$[$[$[$m$n$o$p$q$r$. . . . . . . q+q+s$l@%$X@t$^#h@/#/#/#h@^#W@X@<#l@)@5$`@{@6$u$v$w$x$y$9$0$z$A$B$a$!$C$C$D$d$f#B#T#]$E$F$G$H$<.'.6.6.8@0.0.I$>+t.++@+,+a+[+J+a@K@b@L@!#F#_$J$j$K$. . ", +" . . . L$[$[$[$[$[$m$n$M$N$O$O$P$Q$R$S$T$. . . . . q+M@U$l@Y@V$t$i@i@i@:#i@W@V$<#l@m@n@Z@}#s#*$W$X$w$Y$Z$`$z$A$ %.%.%+%@%#%d$$%%%&%]$E$F$*%H$=%[.6.}.h.0.-%I$J.t.++K.,+#+a+o+p+K+K@b@l#m#h$:$j$;%>%. . ", +" . . ,%'%[$[$[$[$n$n$)%N$!%~%{%]%^%/%(%_%:%. . . . . q+q+<%m@l@%$V$X@j@j@V$X@X@Y@l@'@n@Z@`@s#|#[%}%|%Y$Y$1%2%3%4%4%5%6%#%7%d$$%%%&%E$E$F$8%9%=%'.[.h.7.B.i.I$>+t.++++@+#+0%[+I@K+K@b@l#g$h$_$:$a%K$>%. . . ", +" . . b%[$[$[$m$n$c%N$!%P$P$d%^%/%e%f%g%h%i%j%. . . . . q+k%l%m@l@l@Y@Y@H#Y@Y@m%'@m@n@5$n%J#|#*$W$X$o%Y$p%p%q%q%4%6%6%#%r%s%$%t%&%E$F$u%8%v%=%w%6.c.7.7.d.j.s.9+++K.X#%@a+[+J+a@K@E#L@x%m#Y#i$j$K$y%z%A%. . ", +" . . . B%[$m$n$M$O$O$!%P$d%]%C%D%E%F%G%H%I%J%i%K%. . . . . q+q+L%n@)@m@'@l@m%l@'@m@)@n@[#o@J#M%6$u$N%O%P%Q%p%R%S%T%U%V%7%r%r%W%t%&%X%F$8%8%Y%Z%w%6.h.A.B.d.C.>+.+++++,+#+a+[+J+K+K@b@L@!#m#h$_$J$`%y%>% &.&. . ", +" . . +&O$m$M$N$O$!%P$@&#&^%$&f%g%l$%&&&*&=&-&}$i%;&. . . . . q+L+l%5$n@n@n@)@n@)@5$5$Z@~@}#s#6$u$}%>&,&'&)&p%R%T%!&~&~&{&]&W%^&/&X%(&u%8%_&:&<&[&h.7.0.d.j.s..+D.K.,+,+#+9@J+p+K+K@b@}&m#h$_$|&j$1&>% &A%2&. . . ", +" . . . 3&n$M$O$4&P${%]%^%5&f%6&7&%&8&I%9&0&a&b&c&d&i%e&. . . . q+q+f&~@n%[#[#!@Z@[#n%`@}#{@M%*$u$}%g&h&i&j&k&R%l&!&~&m&n&n&W%/&o&o&u%p&Y%:&:&q&r&s&7.0.d.j.J.t.++K.@+,+<+[+J+p+K+K@b@l#!#($_$Z#j$K$>% &A%t&u&v&. . ", +" . . w&=&O$!%!%{%x&^%y&E%D%G%z&A&I%*&B&C&D&d&E&F&(%G&H&3$. . . . q+I&J&J#`@`@J#`@~@J#K&|#L&*$W$}%M&h&i&j&N&O&R%l&l&P&Q&R&S&p&T&T&U&p&Y%:&:&:&V&s&0.d.C.s.J.t.++++,+%@k#0%J+p+K+K@b@L@!#($W&i$j$`%y%z%X&Y&Z&`& *. . ", +" .*. . +*!%P$d%]%C%5&e%D%h%%&H%&&=&B&@*b&#*$*%*&***=*-*;*>*T$. . . q+q+,*|#M%K&s#s#s#|#6$6$u$N%N%>&o%P%'*)&)*!*~*l&{*]*^*H$H$H$=%/*:&_&:&(*_*:*<*<*C.j.>+J.D.++X#,+#+a+[+0@I@K+K@E#L@!#m#h$_$:$`%y%>% &.&t&u& *[*. . ", +" . . }*|*{%d%]%^%f%g%h%%&H%1*=&2*@*C&D&3*F&4*(%5*6*7*8*9*0*a*. . . q+b*u$*$*$*$*$*$*$W$N%}%g&|%h&'&'*)&)*c*d*e*f*g*=%=%=%h*[.6.w%:*i*_*j*k*l*<*m*j.9+.+:+K.K.,+<+a+[+J+p+K+)#b@L@!#m#h$_$:$a%1&y%z%A%t&Z& * *n*o*. . ", +" . . p*{%#&^%/%g%G%l$z&&&1*q*a&r*s*t*F&u*v*|*|*6*w*x*y*;*z*;&. . . q+A*g&}%N%}%N%}%N%M&>&>&o%'&i&j&)&)*B*C*D*E*b+b+w%[.[.6.}.}.F*G*H*k*I*J*K*m*>+t.:+++++X##+k#9@[+J+L*K+K@b@b@!#m#h$_$:$a%;%>%M*X&t&Z&`&N*[*o*O*. . ", +" . . ,%P*5&f%D%F%7&Q*1*1*q*B&r*}$3*3*E&v*G&=*R*S*9*T*U*V*W*X*Y*.*. . . q+q+Z*>&>&>&>&O%O%O%h&P%i&'*)&N&)*c*C*`* =q+b+b+h.h.h.h.7.B.<*l*I*J*I*.=+=@=:+:+++@+,+#+k#9@o+J+p+K+K@/$L@!#m#h$_$:$j$;%y% &#=t&Z&u& *$=n*%=&=. . ", +" . . *=/%f%6&z&7&1*I%=&2*}$c&d&%*4*(%v*=*-*==Q$-=T*V*W*;=>=,='=}*. . . q+)=,&P%,&,&P%P%i&'*j&)&N&!=B*~=d*{=]=q+q+. . . 7.0.0.i.-%^=/=(=_=:=<=@=[=++K.,+,+#+a+[+J+L*p+K+K@b@L@!#m#h$_$:$j$;%y%>% &.&t&}= *|=n*%=1=2=. . . ", +" . . 3=4=g%l$%&H%I%=&@*b&c&5=t*$*4*6==*7=7*9*x*T*V*U*;=>=,=8=9=0=a=. . . q+q+b='*j&'*'*j&)&N&N&)*!=B*~=c=d=e=q+q+ . . d.d.I$d.j.m*f=:=g=g=h=i=K.X##+#+a+a+J+J+I@K+K+K@L@L@!#m#h$_$:$j$1&y%>% &.&2&`& *N*n*o*j=k=l=m=. . ", +" . . n=l$z&8&1*=&B&a&}$s*3*&*o=o==*7=w*9*o$y*y*p=;=>=,=q=9=r=s=t=u=. . . q+v=N&N&N&)*)*O&!=!=!*d*w=e*x=y=q+q+ . . j.>+s.J..+@=h=z=z=A=i=i=0+#+<+9@[+J+L*a@K+K@b@L@l#!#m#h$_$:$a%;%y%>% &Y&Z&Z&`& *n*o*%=2=l=B=m=. . ", +" . . C=D=H%I%J%B&@*C&c&%*$*(%(%E=-*6*S*9*x*F=W*;=G=H=I=J=K=L=M=N=O=n=. . . q+P=c*!=B*B*~=!*!*w=c=e*Q=R=y=q+ . . t.t.:+:+++S=T=U=V=W=X=9@k#a+[+J+J+p+K+K@K@b@L@}&m#m#_$Z#|&j$;%y%>% &A%t&Z&`& *Y=n*j=2=l=Z=m=`=. . ", +" . . -H%=&9&@*@*D&#*F&&*(%=*-*7=w*-=-=F=.-;=+-,=@-@-K=L=#-$-%-&-*-2$. . q+q+=-c=c=c=c=e*e*Q=----;-]=q+y= . . ++++K.K.K.i=i=>-,-'-)-0%[+J+J+p+p+K+K@b@L@L@!#m#($Y#_$j$j$K$y%z%X&.&t&Z&v& *$=o*j=1=k=Z=m=!-~-. . {- ", +" . . ,%]-0&-&^-r*D&d&&*(%G&|*/-==x*x*T*V*(-;=_-:-I=J=L=L=$-N=<-[-}-|-S$. 1-q+2-Q=Q=Q=------3-4-5-6-q+q+ . . @+,+,+,+#+7-X=8-8-9-9-o+I@p+J@K+K@b@L@L@l#m#m#h$_$:$|&a%y%y%>% &.&t&Z&`&|=Y=n*%=1=k=Z=m=0-a-b-c-. . ", +" . . d-^-a&C&3*$*&*(%v*e-R*==Q$-=T*V*(-;=_-H=8=f-'%s=N=g-h-*-*-i-j-k-l-. q+m-4-3-4-4-n-n-o-p-k%q+q+ . . . #+<+a+0%a+9-q-r-s-K+a@K+K+K@E#L@L@L@!#m#F#W&Z#:$|&`%K$y%M*X&A%t&Z&v& *[*o*o*j=2=t-u-!-!-b-c-c-. . ", +" . . }*;*}$s*3*$*4*G&G&-*S*7*-=T*V*W*G=+-,=I=J=K=v-N=N=[-*-*-i-w-j-x-y-z-q+&@A-o-B-A-A-C-D-E-q+q+ . . a+[+[+[+0@s-F-G-H-K+)#K@E#b@L@l#!#g$($h$_$:$|&j$;%y%>% &X&t&t&u&I-N*[*n*%=2=J-l=u-m=`=K-c-c-c-. . ", +" . . L-s*d&%*M-v*=*R*R*7*9*y*V*p=;=N-X*I=f-K=s=M=g-<-[-*-i-j-x-x-O-P-0=q+q+Q-R-R-S-S-T-U-q+q+ . . J+J+L*p+a@H-V-W-W-E#b@L@L@l#g$g$m#h$_$:$J$j$`%y%>%>% &A%Y&2&`&`& *Y=o*o*1=k=l=B=0-`=X-c-c-c-c-. . ", +" . . Y-5*%*4*o=5*|*7*w*-=Z-V*V*G=>=_-@-J=K=s=#-N=<-&-*-i-w-j-O-O-P-`- ;.;q++;@;#;@;#;$;q+q+ . . K+K+K+K+K+W-%;&;*;L@L@!#!#g$F#h$_$_$J$|&j$;%y%y%z% &A%t&Z&`& * *n*n*j=&=J-=;u-m=a-~--;c-c-c-c-. . ", +" . . . p$&*6=G&=*7*7*;;x*>;(-;=>=+-q=f-,;s=M=$-<-[-*-i-w-j-x-O-P-`-'; ;);q+!;~;~;{;];y=q+ . . K@K@/$b@b@^;/;(;!#x%m#m#F#h$_$i$:$:$j$;%1&y%>% &A%.&_;Z&I- *[*[*o*%=2=k=l=u-0-!-b-b-c-c-c-c-c-c-. . ", +" . . :;v*G&-*R*S*;;T*F=(-(->=,=q=J=J=L=s=#-$-[-*-i-w-j-x-O-P-`-';<;);[;q+};|;|;1;2;q+ . . L@L@L@L@L@(;3;4;m#($h$W&_$_$:$J$j$;%;%>%>%M*X&Y&t&Z&Z&`& *$=n*o*O*2=l==;B=!-!-b-c-c-c-c-c-c-c-c-. . ", +" . . . 5;=*|*7*9*-=T*V*p=G=H=:-@-J=K=M=N=N=[-*-i-w-j-x-O-P-`-';<;6;[;7;q+q+8;9;};q+q+ . . !#g$m#!#m#3;0;a;h$_$_$:$:$j$a%;%1&y%>%M* &A%A%t&Z&`&I-[*[*o*o*j=2=l=Z=m=b;!-K-c-c-c-c-c-c-c-c-c-. . ", +" . . c;6*S*;;-=F=V*p=;=>=,=f-J=K=s=#-N=%-[-d;i-w-x-O-P-P-e;';f;[;7;g;h;q+i;j;q+q+. . . m#($F#h$W&a;k;_$:$:$J$j$;%;%y%y%>%M* &X&A%t&_;`&`& *. . . . . . . . . . . . . . . . . . . . . c-. . ", +" . . T$l;8*x*y*.-p=m;>=,=I=f-K=v-M=N=[-*-*-n;w-j-x-O-`-';'; ;6;7;o;p;q;q+r;q+q+. . . . W&_$_$_$Z#k;k;J$`%`%;%1&y%>%>%M*A%A%A%t&Z&u&. . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . s;8*T*U*V*t;>=,=H=J=u;s=M=g-<-v;*-}-w-j-x-O-`-`-';6;6;[;g;p;w;x;q+q+q+y;3=. . . . :$:$J$j$j$z;z;K$K$y%y%>%M* &#=A%t&t&Z&. . . . . . . . . . . ", +" . . A;'%y*U*;=G=,=@-J=u;'%s=N=<-[-*-i-w-j-x-O-B;`-';6;6;C;7;p;D;D;E;q+q+F;G;H;. . . . . ;%;%;%;%y%y%y%>%>%M*M* &A%A%t&t&. . . . . . . ", +" . . I;W*(-m;,=:-J=9=s=s=#-g-[-&-i-w-j-x-O-P-`-';<;[;[;7;o;p;x;J;J;K;L;M;N;O;P;. . . . y%y%>%y%>%>% & &#=#=A%Y&t&. . . . . . . ", +" . . Q;(-;=>=,=I=J=K=L=N=N=%-*-i-w-j-x-O-P-`-e; ;6;[;7;g;D;R;R;J;S;T;T;U;V;W;X;Y;. . . . z%z% & & &#=A%t&.&2&_;. . . . . . ", +" . . . .;>=,=@-J=K=#-N=N=<-*-*-}-j-j-O-P-`-Z; ;6;[;7;g;`;D;R; >.>+>@>#>$>%>&>&>*>. . . . . A%A%A%Y&t&t&Z&Z&. . . . . . ", +" . . q$H=I=,;K=v-v-<-[-[-*-i-w-x-O-P-`-`- ;6;);7;o;p;D;R;J;=>S;L;G;$>%>->&>;>>>,>. . . . . 2&Z&Z&Z&Z&u&. . . . . . ", +" . . '>P*f-r=K=#-g-<-[-*-}-j-j-x-P-`-';';6;[;7;g;)>D;R;!>.>~>L;G;N;V;{>]>^>/>(>_>:>. . . . }=`&`&`&. . . . . ", +" . . . <>J=s=M=N=h-v;*-i-w-j-x-O-P-';'; ;[>[;g;p;}>E;J;J;|>+>#>$>%>W;1>;>/>>>2>3>4>. . . . . |=[*. . . . . ", +" . . c;K=#-N=<-v;*-i-w-j-x-O-`-';'; ;[;[;g;g;p;R;J; >+>L;U;G;N;5>1>6>7>8>(>9>0>a>b>. . . . . . . . . ", +" . . c>]-#-<-[-*-*-w-w-j-O-P-`-'; ;6;[;7;o;q;x;x;.>=>L;F;G;d>e>&>6>;>f>g>h>i>j>k>l>m>. . . . . . . ", +" . . . n><-<-[-i-i-j-j-O-B;`-'; ;6;[;7;o>p;w;R; >K;+>L;U;$>5>p>]>q>f>2>h>0>r>s>t>u>v>. . . . . . ", +" . . w><-&-i-i-w-j-O-P-P-`- ;f;[;7;g;p;D;R;!>=>+>L;$>x>e>{>&>6>q>f>y>z>A>a>k>B>C>D>E>. . {-. ", +" . . +&[-*-i-j-j-x-O-`-';'; ;6;7;g;)>w;R;J;=>~>L;G;$>d>W;->;>F>>>(>3>0>A>a>G>G>H>I>J>K>. . ", +" . . . L>i-w-j-x-P-P-`-M>f;6;C;g;p;D;R;N>=>+>L;G;N;V;W;]>6>f>(>h>i>A>O>t>t>u>P>P>Q>R>S>. . . ", +" . . T>w-j-x-O-P-`- ; ;6;7;7;p;}>R; >J;+>T;G;N;d>{>&>^>/>f>2>y>0>A>s>t>C>U>I>V>W>X>Y>Z>. . ", +" . . ,>j-x-O-P-`-'; ;[>[;7;p;D;D;J;J;.>S;G;#>%>p>->;>F>f>`> ,z>A>.,G>G>U>V>W>+,@,#,$,%,C=. . ", +" . . m>&,x-P-P-'; ;6;[;7;g;p;D;J;=>K;|>#>G;d>{>W;;>/>q>2> , ,A>a>B>*,C>=,I>-,R>;,>,,,',),. . . ", +" . . !,O-`-'; ; ;[;[;g;g;w;R;J;K;@>L;$>$>p>&>~,7>F>8>g>3>i>a>t>*,{,P>V>-,+,@,$,],',^,/,(,. . ", +" . . _,P-'; ; ;6;[;o>p;D;R;!>=>|>L;G;%>d>->]>~,7>>>h> ,A>r>t>*,C>{,I>W>+,#,>,],',:,<,[,},. . . ", +" . . u=|, ; ;[;7;g;p;D;x;1,2,S;L;G;N;e>{>]>^>7>>>`>9>O>O>3,G>U>4,I>5,W>;,$,],6,7,<,8,9,0,a,. . ", +" . . P;';6;6;[;7;g;D;D;!>=>~>T;G;U;e>5>]>^>7>b,c,d,_,e,f,g,h,i,Y-'>'>'>'>j,g,S$k,l,y;0,m,n,o,. . ", +" . . m>p,6;[;q,o;p;R; >=>K;T;L;N;r,<>s,t,u,v,3=. . . . . . . . . . . . . . . . . . . w,Z>S$x,. . . ", +" . . y,[;7;g;q;D;E;J;.>B%z,2$A,o,. . . . . . . . . . . . . . . . . . . . . . . . . . . . . #$. . ", +" . . z,7;g;p;D;+>B,C,g,o,. . . . . . . . . . . . . . . . . . ", +" . . +*g;D,>*E,}*. . . . . . . . . . . . . . ", +" . . L$F,,%. . . . . . . . . . . ", +" . . . . . . . . Y;. . ", +" . . . . . ", +" . . ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" "}; diff --git a/src/Mod/Surfaces/Icons/Ico.png b/src/Mod/Surfaces/Icons/Ico.png new file mode 100644 index 0000000000..cd1a6149e2 Binary files /dev/null and b/src/Mod/Surfaces/Icons/Ico.png differ diff --git a/src/Mod/Surfaces/Icons/Ico.xcf b/src/Mod/Surfaces/Icons/Ico.xcf new file mode 100644 index 0000000000..d17f5f74d5 Binary files /dev/null and b/src/Mod/Surfaces/Icons/Ico.xcf differ diff --git a/src/Mod/Surfaces/Icons/Ico.xpm b/src/Mod/Surfaces/Icons/Ico.xpm new file mode 100644 index 0000000000..0cd4c24025 --- /dev/null +++ b/src/Mod/Surfaces/Icons/Ico.xpm @@ -0,0 +1,749 @@ +/* XPM */ +static char * Ico_xpm[] = { +"128 128 618 2", +" c None", +". c #EDECEB", +"+ c #EFEEEE", +"@ c #ECEDEC", +"# c #EFEFEF", +"$ c #000000", +"% c #EAEAEB", +"& c #EBEBEA", +"* c #E8E8E8", +"= c #E1E1E1", +"- c #DBDBDB", +"; c #D7D6D6", +"> c #E6E5E6", +", c #E9E8E8", +"' c #EEEEED", +") c #ECECEC", +"! c #EBEBEB", +"~ c #E9E9E9", +"{ c #E9E9E8", +"] c #E5E6E6", +"^ c #D7D7D7", +"/ c #B2B2B1", +"( c #A6A6A6", +"_ c #B7B7B7", +": c #D1D0D1", +"< c #ECEBEB", +"[ c #00B5AA", +"} c #00B4A8", +"| c #00B3A8", +"1 c #00B1A8", +"2 c #00B0A6", +"3 c #00AFA5", +"4 c #00AEA4", +"5 c #00ACA2", +"6 c #00ABA1", +"7 c #00AAA0", +"8 c #EAEBEA", +"9 c #E2E2E2", +"0 c #B6B6B6", +"a c #979898", +"b c #999999", +"c c #BCBCBC", +"d c #D8D9D8", +"e c #EFF0EF", +"f c #00BDB2", +"g c #00BCB1", +"h c #00BBAF", +"i c #00B9AF", +"j c #00B8AE", +"k c #00B7AC", +"l c #00B6AB", +"m c #00B4AA", +"n c #00B1A7", +"o c #00AFA4", +"p c #00ADA3", +"q c #00A99F", +"r c #00A79E", +"s c #00A79C", +"t c #00A59B", +"u c #E3E3E2", +"v c #B0B1B0", +"w c #999898", +"x c #949495", +"y c #00C2B7", +"z c #00C1B6", +"A c #00C0B5", +"B c #00BFB4", +"C c #00BDB3", +"D c #00BDB1", +"E c #00BBB0", +"F c #00BAAF", +"G c #00B9AE", +"H c #00B8AD", +"I c #00B6AC", +"J c #00B4A9", +"K c #00AEA3", +"L c #00A79D", +"M c #00A69B", +"N c #00A49A", +"O c #D7D8D7", +"P c #959696", +"Q c #A0A1A1", +"R c #DFDFE0", +"S c #00C3B8", +"T c #00C4B8", +"U c #00C2B8", +"V c #00C1B7", +"W c #00C0B4", +"X c #00BEB4", +"Y c #00BAAE", +"Z c #00B7AB", +"` c #00B0A5", +" . c #00AEA5", +".. c #00ABA2", +"+. c #00A99E", +"@. c #00A89E", +"#. c #00A69C", +"$. c #00A59A", +"%. c #00A399", +"&. c #00A298", +"*. c #EAEAEA", +"=. c #C6C5C5", +"-. c #9C9B9B", +";. c #9A9A9A", +">. c #959495", +",. c #B5B6B6", +"'. c #E6E6E6", +"). c #00C5B9", +"!. c #00BEB3", +"~. c #00B5A9", +"{. c #00B2A7", +"]. c #00B1A6", +"^. c #00A098", +"/. c #DADBDB", +"(. c #A8A8A8", +"_. c #9B9A9A", +":. c #989898", +"<. c #9E9F9F", +"[. c #D8D8D8", +"}. c #E5E5E5", +"|. c #00C3B7", +"1. c #00C6BA", +"2. c #00C6B9", +"3. c #00C5BA", +"4. c #00C5B8", +"5. c #00BCB2", +"6. c #00BCB0", +"7. c #00B8AC", +"8. c #00B3A9", +"9. c #00ADA2", +"0. c #00A398", +"a. c #00A198", +"b. c #00A097", +"c. c #B6B5B5", +"d. c #989998", +"e. c #9C9D9C", +"f. c #959596", +"g. c #BDBDBD", +"h. c #00C2B6", +"i. c #00C7BB", +"j. c #00C8BB", +"k. c #00C6BB", +"l. c #00C4B9", +"m. c #00BFB3", +"n. c #00B7AD", +"o. c #00ACA1", +"p. c #00A59C", +"q. c #00A49B", +"r. c #009E96", +"s. c #E4E4E4", +"t. c #BABBBA", +"u. c #9C9C9C", +"v. c #9E9E9E", +"w. c #9B9B9C", +"x. c #AAAAAA", +"y. c #DCDCDB", +"z. c #00C1B5", +"A. c #00C8BD", +"B. c #00C9BD", +"C. c #00C9BC", +"D. c #00C8BC", +"E. c #00B2A8", +"F. c #00AFA6", +"G. c #00A197", +"H. c #009F96", +"I. c #E4E5E4", +"J. c #B9B9B8", +"K. c #A0A09F", +"L. c #9D9D9D", +"M. c #9F9F9F", +"N. c #D8D8D9", +"O. c #00C7BA", +"P. c #00CABE", +"Q. c #00CBBF", +"R. c #00CBBE", +"S. c #00C9BE", +"T. c #00C7BC", +"U. c #00BBB1", +"V. c #00BAB0", +"W. c #00AAA1", +"X. c #00A89D", +"Y. c #13A79E", +"Z. c #03A097", +"`. c #009D94", +" + c #9F9FA0", +".+ c #A2A1A1", +"++ c #A0A0A0", +"@+ c #D0D0D0", +"#+ c #00C0B6", +"$+ c #00CCC0", +"%+ c #00CABD", +"&+ c #26ABA4", +"*+ c #10A39C", +"=+ c #009E94", +"-+ c #AEAEAE", +";+ c #A1A1A2", +">+ c #A2A3A2", +",+ c #A0A1A0", +"'+ c #D2D2D3", +")+ c #00CABF", +"!+ c #00CEC1", +"~+ c #00CDC2", +"{+ c #00CDC1", +"]+ c #00CBC0", +"^+ c #00ABA0", +"/+ c #00A9A0", +"(+ c #46B5AF", +"_+ c #63BCB6", +":+ c #009E95", +"<+ c #009C93", +"[+ c #009A92", +"}+ c #D3D3D4", +"|+ c #A8A7A7", +"1+ c #A5A4A4", +"2+ c #A4A5A5", +"3+ c #A2A2A2", +"4+ c #A3A3A2", +"5+ c #D7D7D6", +"6+ c #00CFC2", +"7+ c #00A69D", +"8+ c #0BA59B", +"9+ c #9DCAC7", +"0+ c #2DAAA2", +"a+ c #BABABA", +"b+ c #A7A7A7", +"c+ c #A6A7A6", +"d+ c #A5A6A6", +"e+ c #A3A3A3", +"f+ c #DEDEDE", +"g+ c #00CEC2", +"h+ c #00BEB2", +"i+ c #00ADA4", +"j+ c #00A39A", +"k+ c #06A29A", +"l+ c #9FCBC8", +"m+ c #8FC4C1", +"n+ c #17A39B", +"o+ c #009B92", +"p+ c #009990", +"q+ c #CACACA", +"r+ c #AEAEAD", +"s+ c #A9A9A9", +"t+ c #A8A9A8", +"u+ c #A4A4A4", +"v+ c #B6B5B6", +"w+ c #00CCBF", +"x+ c #47B2AC", +"y+ c #CCD3D4", +"z+ c #9EC8C5", +"A+ c #16A19A", +"B+ c #00988F", +"C+ c #DEDDDD", +"D+ c #AFAEAF", +"E+ c #ABACAC", +"F+ c #ACACAB", +"G+ c #A9A8A8", +"H+ c #A7A6A6", +"I+ c #CDCDCE", +"J+ c #23A9A1", +"K+ c #B5CFCE", +"L+ c #D6D6D6", +"M+ c #BFD0CE", +"N+ c #93C6C3", +"O+ c #3FABA5", +"P+ c #1C1D1D", +"Q+ c #1D1D1D", +"R+ c #292929", +"S+ c #DBDBDA", +"T+ c #DADADA", +"U+ c #C7C6C7", +"V+ c #ADADAD", +"W+ c #AEAEAF", +"X+ c #ACACAC", +"Y+ c #ACABAB", +"Z+ c #ABABAB", +"`+ c #A9AAA9", +" @ c #A5A5A6", +".@ c #D0D0CF", +"+@ c #00B9AD", +"@@ c #00B6AA", +"#@ c #019F95", +"$@ c #56B4AE", +"%@ c #C5D0D0", +"&@ c #D1D2D2", +"*@ c #CDCDCD", +"=@ c #D2D2D2", +"-@ c #D0D2D2", +";@ c #C0C0C0", +">@ c #D3D3D2", +",@ c #CBCCCC", +"'@ c #BEBFBE", +")@ c #B0AFB0", +"!@ c #B1B1B0", +"~@ c #B0B0AF", +"{@ c #ABAAAB", +"]@ c #AAAAAB", +"^@ c #A6A5A5", +"/@ c #B5B5B5", +"(@ c #D0D1D0", +"_@ c #D5D6D5", +":@ c #009F95", +"<@ c #049D95", +"[@ c #73BAB7", +"}@ c #CCD1D1", +"|@ c #C8C8C9", +"1@ c #C2C2C2", +"2@ c #C2C3C3", +"3@ c #C1C1C1", +"4@ c #B8B8B8", +"5@ c #B4B4B4", +"6@ c #B4B4B5", +"7@ c #B3B3B3", +"8@ c #B2B2B2", +"9@ c #B1B1B1", +"0@ c #AFAEAE", +"a@ c #ADAEAE", +"b@ c #ACACAD", +"c@ c #AAA9A9", +"d@ c #BBBCBC", +"e@ c #D1D1D1", +"f@ c #00B0A7", +"g@ c #00A89F", +"h@ c #059C94", +"i@ c #7ABEB9", +"j@ c #BDCCCC", +"k@ c #CBCACB", +"l@ c #C2C1C1", +"m@ c #BBBBBB", +"n@ c #B8B9B8", +"o@ c #B8B9B9", +"p@ c #B4B5B5", +"q@ c #B3B4B4", +"r@ c #B2B3B3", +"s@ c #B0B0B0", +"t@ c #AFAFAF", +"u@ c #AAA9AA", +"v@ c #D3D3D3", +"w@ c #00A096", +"x@ c #059B92", +"y@ c #29A69E", +"z@ c #ACC8C7", +"A@ c #D2D1D1", +"B@ c #CCCCCD", +"C@ c #C4C4C4", +"D@ c #C0BFBF", +"E@ c #BBBCBB", +"F@ c #B2B3B2", +"G@ c #AEADAD", +"H@ c #ADACAD", +"I@ c #00ACA3", +"J@ c #009D93", +"K@ c #009B91", +"L@ c #00968E", +"M@ c #3CA7A1", +"N@ c #8EBFBD", +"O@ c #BDCCCB", +"P@ c #C1C0C0", +"Q@ c #C4C3C3", +"R@ c #C6C6C6", +"S@ c #BAB9B9", +"T@ c #ADACAC", +"U@ c #C8C8C8", +"V@ c #020B0A", +"W@ c #00B5AB", +"X@ c #00A299", +"Y@ c #009A91", +"Z@ c #00978E", +"`@ c #00958C", +" # c #04958D", +".# c #1B9B93", +"+# c #353535", +"@# c #414141", +"## c #464646", +"$# c #CECECE", +"%# c #C4C4C3", +"&# c #B1B2B1", +"*# c #C9C9C9", +"=# c #00BFB5", +"-# c #009C94", +";# c #009B93", +"># c #00968D", +",# c #00958B", +"'# c #00938A", +")# c #009189", +"!# c #009088", +"~# c #CCCCCC", +"{# c #B1B2B2", +"]# c #ADAEAD", +"^# c #CBCCCB", +"/# c #009890", +"(# c #00958D", +"_# c #00948B", +":# c #009289", +"<# c #009188", +"[# c #BFBFBF", +"}# c #CCCBCB", +"|# c #CFCFCE", +"1# c #00948A", +"2# c #008F88", +"3# c #008E86", +"4# c #CDCECE", +"5# c #BEBEBE", +"6# c #B7B7B8", +"7# c #B6B6B5", +"8# c #B3B2B2", +"9# c #B1B0B0", +"0# c #AFAFB0", +"a# c #00998F", +"b# c #00988E", +"c# c #00948C", +"d# c #008F87", +"e# c #B9B8B9", +"f# c #B6B7B6", +"g# c #B4B3B3", +"h# c #B2B1B1", +"i# c #ADADAE", +"j# c #ACADAD", +"k# c #C0C1C0", +"l# c #008D86", +"m# c #008C84", +"n# c #C3C4C4", +"o# c #B9BAB9", +"p# c #B0B0B1", +"q# c #CBCBC9", +"r# c #00AA9F", +"s# c #00928A", +"t# c #008D85", +"u# c #008B83", +"v# c #B7B8B7", +"w# c #B7B7B6", +"x# c #B1B0B1", +"y# c #C5C5C5", +"z# c #00968C", +"A# c #C5C6C6", +"B# c #C0C1C1", +"C# c #BABBBB", +"D# c #BABAB9", +"E# c #B8B7B7", +"F# c #B7B6B7", +"G# c #B5B4B4", +"H# c #B3B2B3", +"I# c #B1B1B2", +"J# c #ACADAE", +"K# c #009F97", +"L# c #009991", +"M# c #009389", +"N# c #008F86", +"O# c #008E85", +"P# c #008B84", +"Q# c #008981", +"R# c #BCBBBC", +"S# c #B9B9B9", +"T# c #B8B8B9", +"U# c #00938B", +"V# c #008D84", +"W# c #008C83", +"X# c #008A82", +"Y# c #008880", +"Z# c #C4C3C4", +"`# c #B7B8B8", +" $ c #AFAFB1", +".$ c #00A499", +"+$ c #008B82", +"@$ c #00877F", +"#$ c #C1C2C1", +"$$ c #B9B8B8", +"%$ c #B5B5B4", +"&$ c #B4B4B3", +"*$ c #B2B1B3", +"=$ c #009087", +"-$ c #008780", +";$ c #00867E", +">$ c #C2C3C2", +",$ c #B9B9BA", +"'$ c #B2B1B2", +")$ c #008A81", +"!$ c #00867D", +"~$ c #C0C0C1", +"{$ c #BFBEBE", +"]$ c #BEBDBD", +"^$ c #BDBCBD", +"/$ c #BFC0C0", +"($ c #C1C3C2", +"_$ c #009C92", +":$ c #009288", +"<$ c #00847D", +"[$ c #00847B", +"}$ c #BBBBBC", +"|$ c #BAB9BA", +"1$ c #B6B6B7", +"2$ c #B3B3B2", +"3$ c #BFC0BF", +"4$ c #008982", +"5$ c #00857E", +"6$ c #00847C", +"7$ c #00837B", +"8$ c #BEBEBF", +"9$ c #BDBCBC", +"0$ c #BCBCBB", +"a$ c #B3B4B3", +"b$ c #00877E", +"c$ c #00857D", +"d$ c #00837C", +"e$ c #00827A", +"f$ c #B7B6B6", +"g$ c #00978D", +"h$ c #00837A", +"i$ c #008178", +"j$ c #BFBFBE", +"k$ c #BDBEBC", +"l$ c #00978F", +"m$ c #008980", +"n$ c #008179", +"o$ c #007F78", +"p$ c #C1C1C2", +"q$ c #008E87", +"r$ c #00817A", +"s$ c #C2C2C1", +"t$ c #C0BFC0", +"u$ c #BDBEBE", +"v$ c #BBBBBA", +"w$ c #B9BABA", +"x$ c #009D95", +"y$ c #00867F", +"z$ c #008078", +"A$ c #007E78", +"B$ c #007D76", +"C$ c #C3C3C3", +"D$ c #BBBABA", +"E$ c #009A90", +"F$ c #008279", +"G$ c #007E77", +"H$ c #007D75", +"I$ c #C0C0BF", +"J$ c #BFBEBF", +"K$ c #BBBABB", +"L$ c #00887F", +"M$ c #00827B", +"N$ c #008079", +"O$ c #007B75", +"P$ c #BABABB", +"Q$ c #007C75", +"R$ c #007B73", +"S$ c #007A72", +"T$ c #C3C2C2", +"U$ c #BFBFC0", +"V$ c #BEBDBE", +"W$ c #BCBBBB", +"X$ c #00857C", +"Y$ c #007D77", +"Z$ c #007C76", +"`$ c #007B74", +" % c #007A73", +".% c #007972", +"+% c #C3C4C3", +"@% c #C5C5C6", +"#% c #BEBFBF", +"$% c #007871", +"%% c #BCBDBC", +"&% c #C4C5C4", +"*% c #C6C6C5", +"=% c #007770", +"-% c #00766F", +";% c #C3C2C3", +">% c #008C85", +",% c #007F77", +"'% c #007872", +")% c #00766E", +"!% c #C8C7C7", +"~% c #C7C6C6", +"{% c #C5C5C4", +"]% c #C2C0C1", +"^% c #B3B3B4", +"/% c #007E76", +"(% c #007870", +"_% c #00756F", +":% c #00756D", +"<% c #C9C8C8", +"[% c #C5C4C4", +"}% c #007A74", +"|% c #007971", +"1% c #00746E", +"2% c #00746D", +"3% c #C7C7C7", +"4% c #008881", +"5% c #00756E", +"6% c #00746C", +"7% c #00736C", +"8% c #00716A", +"9% c #C8C9C8", +"0% c #00716B", +"a% c #C6C7C7", +"b% c #CACBCA", +"c% c #C9C8CA", +"d% c #007771", +"e% c #00726B", +"f% c #006F69", +"g% c #007670", +"h% c #007069", +"i% c #006E68", +"j% c #000303", +"k% c #007169", +"l% c #007068", +"m% c #006D67", +"n% c #AEAFAE", +"o% c #00736B", +"p% c #00726A", +"q% c #A9A9A8", +"r% c #CFCFCF", +"s% c #C5C4C5", +"t% c #007973", +"u% c #00736D", +"v% c #006F68", +"w% c #B0AEB0", +"x% c #00726C", +"y% c #006D68", +"z% c #007C74", +"A% c #00706A", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" . + @ # ", +" $ $ $ $ $ $ $ $ $ $ $ % & * * = - ; > , ' ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ) ! ~ { { ~ ] ^ / ( _ : ~ < ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ [ } | 1 2 3 4 5 6 7 $ $ $ $ $ $ 8 9 0 a b c d e ", +" $ $ $ $ $ $ $ $ $ $ f f g h i j k l m | | n 2 o p 5 6 q r s t $ $ $ $ u v w x ( ^ 8 ", +" $ $ $ $ $ $ $ $ y z z A A B C D E F G H I l J | n n 3 K 5 6 q q L M N $ $ $ $ O ( b P Q R * ", +" $ $ $ $ $ $ S S S T S U V V z W X C g E Y G H Z [ J | n ` .p ..7 +.@.#.$.%.&.$ $ $ *.=.-.;.>.,.'. ", +" $ $ $ $ $ U T T T ).).).T T S U V z B !.!.g F Y H I l ~.| {.].3 p 5 6 q @.s t %.&.^.$ $ $ /.(._.:.<.[.}. ", +" $ $ $ $ y |.T ).).1.1.1.1.2.3.4.T y y A B !.5.6.F j 7.Z [ 8.1 2 3 4 9.6 7 +.s t N 0.a.b.$ $ $ * c.d.e.f.g.'. ", +" $ $ $ $ A h.|.S 4.2.1.i.i.j.i.i.k.2.l.T y z A m.f g E i n.Z [ } | n 2 4 p o.7 +.L p.q.0.&.b.r.$ $ s.t.u.v.w.x.y. ", +" $ $ $ !.B z.y S T 1.i.j.A.B.B.C.B.D.k.3.4.S y z W !.f E Y G k [ J | E.F.o p o.7 q L M q.%.&.G.H.$ $ $ I.J.u.K.L.M.N. ", +" $ $ $ $ m.A h.S T 2.O.D.B.P.Q.Q.R.S.B.T.O.).T U V A !.f U.V.j n.l m | {.2 o 4 5 W.q X.#.t %.a.Y.Z.`.$ $ $ 9 0 +.+++e.@+u ", +" $ $ $ $ #+h.S 4.1.T.C.P.Q.$+$+$+Q.%+D.i.1.T |.h.A !.f g h G H l ~.} E.2 3 p 5 7 q r #.N %.&.&+*+=+`.$ $ - -+;+>+Q ,+'+ ", +" $ $ $ y T ).1.D.B.)+$+!+~+{+]+P.B.j.1.T S y A B !.g h G H l J | E.n 3 p p ^+/+@.#.t %.&.(+_+:+<+[+$ $ 9 }+|+1+2+3+4+5+ ", +" $ $ y T ).O.D.%+)+$+~+6+{+$+P.B.T.1.).S y A B f g F G H I [ 8.{.n .4 5 6 /+X.7+t %.&.8+9+0+<+[+$ $ $ - a+b+c+d+e+-+f+ ", +" $ $ $ T ).1.D.S.Q.$+{+g+{+$+R.A.D.1.).S z z.B h+6.F G 7.Z ~.8.E.].3 i+5 7 q @.#.t j+&.k+l+m+n+o+p+$ $ f+q+r+s+t+b+u+v+f+ ", +" $ $ $ l.2.D.C.%+Q.$+$+w+Q.P.D.i.1.l.S y A X f U.F G H l J } E.2 3 p o.6 q r #.$.%.&.G.x+y+z+A+p+B+$ $ C+q+D+E+F+x.G+H+|+I+O ", +" $ $ $ 3.i.D.B.P.P.Q.)+P.B.D.O.).T S z A m.f E F G 7.l J | {.2 .p ..6 q L #.q.%.&.G.J+K+L+M+N+O+P+Q+R+ S+T+U+V+W+V+X+Y+Z+`+ @-+.@L+ ", +" $ $ 4.1.k.j.A.B.B.B.C.j.i.).T S y A B !.f U.F +@k @@J | n 2 o p ..W.q @.t N %.a.b.#@$@%@&@*@=@-@;@}+>@,@'@)@/ !@~@D+V+X+{@]@^@/@(@_@ ", +" $ $ $ ).1.O.D.D.i.D.j.1.2.l.S |.z A m.C g E Y H k [ 8.| n ` 4 9.o.7 q L t q.%.a.b.:@<@[@}@|@1@;@2@3@g.4@5@6@7@8@9@)@0@a@b@E+c@H+d@e@ ", +" $ $ T ).).3.1.k.O.1.).4.T |.z A W !.f U.F +@7.l [ | E.f@` 4 5 W./+g@L p.N %.a.H.:+`.h@i@j@k@l@m@n@o@_ _ p@5@q@r@9@s@t@-+V+E+u@b+;@v@ ", +" $ $ $ S T T ).).T l.T S |.y #+W X f g h G H Z @@J | 1 2 3 i+5 7 q X.s t N &.^.w@:+<+o+x@y@z@A@B@C@D@a+m@E@4@/@5@7@F@s@t@0@G@H@{@(.=.A@ ", +" $ $ y U S S S S S U y z A A m.C g E F G n.Z [ 8.| n 2 4 I@5 W.q r #.q.%.&.a.H.`.J@K@p+B+L@M@N@O@P@Q@e@v@R@S@/@5@7@8@9@~@t@G@T@x.T@U@e@ ", +" V@$ $ z y V y y h.V z.A B m.!.D 6.F G H Z W@J | E.2 3 4 I@6 7 @.s M $.X@&.^.:@=+<+Y@p+Z@L@`@ #.#+#@### $#%#4@0 /@5@7@9@s@t@-+a@x.&#*#.@ ", +" $ $ A A z.A z #+=#A m.!.!.D 6.F G j k l m | | n 2 4 p 5 7 q r L t N &.a.b.:+-#;#Y@p+Z@>#,#'#)#!#$ $ ~#3@4@_ /@5@r@{#9@s@W+]#x.0 ^#$# ", +" $ $ $ B B B B B X !.f f g E V.F j k l [ J | 1 ].3 4 5 6 7 @.L #.q.%.&.^.H.:+J@o+Y@/#Z@(#_#:#<#!#$ $ $ q+[#4@_ 0 /@q@8@&#s@t@-+c@m@}#|# ", +" $ $ !.!.!.!.h+f D g 6.E F G H H l [ ~.| E.].F. .p 5 7 q @.s M N X@a.b.:@`.<+Y@p+B+>#`@1#:#<#2#3#$ $ 4#U@5#4@6#7#c.5@8#9@9#0#-+]@5#q+ ", +" $ $ $ g g g g 6.E h F G j H k Z @@J | | n 2 o p 5 6 7 @.X.#.t %.X@a.H.:+`.;#Y@a#b#>#c#'#:#!#d#3#$ $ ~#R@c e#4@f#0 5@g#8@h#s@i#j#k#k@ ", +" $ $ E F E V.h Y Y G H k k l [ J | E.n 2 3 4 9.6 W.q @.L t N %.&.b.:@=+J@o+p+B+Z@(#_#'#<#!#3#l#m#$ $ q+n#c o#n@_ 0 /@7@8#9@p#W+s@1@q# ", +" $ $ G i G G +@+@H k k I @@J J | E.{.2 3 4 p 5 6 r#@.L M $.%.X@a.b.:+J@<+o+p+b#>#`@1#s#<#!#3#t#u#$ $ U@2@d@a+4@v#w#0 q@r@9@x#-+7@y#*# ", +" $ $ H 7.7.H k k l [ [ ~.} E.E.n 2 3 4 p 5 6 /++.L L t %.&.&.b.H.:+J@o+Y@a#Z@z#_#'#<#<#d#3#t#u#$ $ $ A#B#d@C#D#E#F#,.G#7@H#I#J#F#y#U@ ", +" $ $ Z l l l l W@[ J } | E.{.].F.3 4 p I@^+7 +.X.#.M $.%.&.a.K#:@`.;#[+L#B+>#`@_#M#<#!#N#O#P#u#Q#$ $ y#;@R#m@S#T#_ 0 /@5@r@/ -+S#=. ", +" $ $ $ [ [ J J J 8.| E.{.n ].2 3 4 p 5 6 7 q @.L #.q.%.&.a.w@r.`.J@o+p+p+Z@>#_#U#:#!#d#3#V#W#X#Y#$ $ Z#[#c m@S#T#`#f#,.p@7@h# $m@y# ", +" $ $ } | 8.E.| E.1 n n 2 3 4 K I@5 6 /+q r L #.$..$X@a.b.H.:+-#o+Y@a#Z@>#`@'#'#<#!#3#l#m#+$Q#Y#@$$ $ C@#$5#g.c a+S@$$_ v+%$&$*$9@g.%# ", +" $ $ E.E.E.n n ].].F.3 4 K p 5 ..6 7 +.@.L #.t N %.&.b.H.:+`.<+o+L#B+Z@>#_#U#:#!#=$3#m#u#X#Q#-$;$$ $ >$3@[#g.c a+,$n@_ ,./@5@'$g#;@C@ ", +" $ $ $ f@2 2 2 ` 3 4 K p p 5 6 ^+/+g@@.L #.t N %.&.a.b.:@:+`.o+L#B+b#L@c#U#:#)#2#N#3#m#X#)$Y#@$!$$ $ $ 3@~${$]$^$m@a+S#4@f#,.5@8@/@/$($ ", +" $ $ 3 3 4 4 4 K p I@5 5 6 q q @.r #.M t N %.&.G.K#r.=+<+_$K@p+B+L@(#,#'#:$<#d#l#V#W#X#Q#@$;$<$[$$ $ ;@3@[#5#g.}$C#|$4@_ 1$/@2$7#3$3@ ", +" $ $ p i+K p 9.5 o.6 W.7 r#+.r L #.t q.N 0.a.G.b.:+=+J@;#Y@p+B+Z@z#`@1#:#<#=$3#t#m#u#4$Y#@$5$6$7$$ $ [#P@;@8$g.9$0$|$S#_ 0 /@a$E#;@ ", +" $ $ 5 5 ....o.6 6 /+q q @.L #.#.p.N %.0.&.G.K#r.=+-#<+Y@L#B+Z@>#`@_#'#:#!#d#3#t#u#X#Q#-$b$c$d$e$$ $ $ [#;@;@[#]$c R#a+,$n@f$0 a$S#{$ ", +" $ $ 6 W.7 r#q q +.@.L L #.#.q.j+%.0.a.G.w@:@:+`.;#o+L#B+B+g$(#_#'#)#<#d#3#t#P#X#Q#Y#@$!$6$h$e$i$$ $ g.{$B#k#D@j$k$0$a+S@n@_ 0 /@m@]$ ", +" $ $ q q q g@@.r L L #.M t N .$0.&.a.b.H.:@`.<+;#[+Y@B+l$g$`@_#'#:#<#!#d#l#m#u#X#m$-$;$c$7$e$n$o$$ $ c '@3@p$;@5#g.c m@a+S#`#0 1$C#c ", +" $ $ L r L #.s s M p.$.N %.%.0.a.a.b.H.:+`.`._$Y@p+a#b#g$(#_#'#'#)#!#q$3#V#u#X#Q#-$b$c$6$7$r$i$o$$ $ $ C#8$#$s$;@t$u$g.m@v$w$4@_ 1$v$0$ ", +" $ $ $ #.#.#.t t q.N %.%.&.&.a.b.w@r.:+x$<+o+K@p+p+Z@>#z#c#'#s#:$<#d#3#t#P#X#)$Y#y$;$<$d$e$i$z$A$B$$ $ a+3$C$l@k#[#'@^$c m@S#e#_ F#a+D$ ", +" $ $ N N N .$j+%.%.&.&.a.b.K#H.H.`.-#<+o+Y@E$a#Z@L@(#,#'#M#<#!#d#3#t#u#X#Q#Y#@$;$c$6$h$F$z$o$G$H$$ $ a+I$Q@1@;@;@J$g.c m@K$4@_ 4@S# ", +" $ $ j+X@&.X@&.&.a.^.G.K#H.:@:+J@J@o+[+Y@p+B+Z@>#z#,#U#:#<#<#!#N#t#m#u#X#Q#L$;$c$6$M$e$N$o$G$B$O$$ $ $ a+k#C@C$l@;@/$5#g.c P$S@4@4@4@ ", +" $ $ a.a.a.^.a.b.b.H.H.:+`.`.<+o+o+K@L#p+B+Z@>#`@_#'#:#)#<#2#3#t#m#u#X#Q#-$@$5$6$[$e$i$o$G$B$Q$R$S$$ $ v+,$T$y#C$1@3@U$J$V$c W$|$S#_ 4@ ", +" $ $ $ b.b.K#w@:@:+:+`.-#`._$o+K@Y@p+B+Z@L@z#`@_#'#M#<#<#=$q$t#m#u#X#Q#Y#@$5$X$d$e$F$z$A$Y$Z$`$ %.%$ $ 5@C#+%@%C$>$3@;@#%5#g.E@t.S#_ v+ ", +" $ $ :@H.:+=+:+`.-#<+_$o+[+E$p+B+B+L@>#(#`@U#'#:$<#!#d#3#O#V#u#X#)$Y#@$;$c$6$7$F$z$o$G$H$Q$R$.%$%$ $ q@%%&%*%n#C$1@3@[#]$g.d@K$,$0 5@ ", +" $ $ `.`.`.<+_$;#o+K@K@E$p+a#l$B+>#>#c#,#1#:#:#<#2#d#3#t#m#u#+$Q#Y#@$;$c$6$7$r$N$z$A$B$Q$`$.%.%=%-%$ $ 5@]$R@R@C@Q@;%k#D@#%5#^$c S#/@5@ ", +" $ $ <+_$_$o+[+[+Y@p+a#a#l$Z@L@>#(#_#1#'#'#:$!#=$N#3#t#>%u#X#Q#m$@$;$c$6$7$r$n$o$,%Y$Q$`$ %'%$%-%)%$ $ 5@[#!%~%{%C@>$]%p$;@t$5#g.4@^%5@ ", +" $ $ Y@Y@Y@Y@p+a#B+B+l$Z@Z@z#`@,#1#1#M#)#<#!#=$N#l#t#m#u#X#4$Y#@$;$c$6$7$e$n$z$G$/%Q$`$R$.%(%=%_%:%$ $ /@3@<%R@=.C@[%C$ /@5@ ", +" $ $ $ p+B+B+b#l$Z@Z@>#(#`@`@_#'#'#:#<#<#!#d#3#t#>%m#u#X#m$Y#@$;$c$6$7$e$n$z$o$G$H$Q$}%.%|%=%_%1%2%$ $ $ ]#,.C$|@3%y#C@ r@o# ", +" $ $ Z@Z@g$Z@>#>#`@c#_#_#'#:#:#:$!#!#d#d#t#t#V#u#u#X#4%Y#@$;$c$6$7$e$N$z$o$G$H$O$ %.%'%=%-%5%6%7%8%$ $ V+_ R@9%U@3% 4@9@ ", +" $ $ >#(#z#`@,#_#1#'#'#s#:#<#!#!#2#N#3#t#>%P#u#X#Q#Y#-$@$;$c$6$7$r$n$z$o$G$Z$`$`$ %.%=%-%_%2%7%0%8%$ $ -+|$a%b%c% c I# ", +" $ $ _#_#1#1#'#'#s#:#<#<#!#!#=$d#3#t#t#m#u#X#X#Q#Y#L$;$;$6$[$M$e$n$z$o$G$B$Q$`$ %.%d%=%5%2%7%e%8%f%$ $ r+%%q+B@ m@s@ ", +" $ $ M#M#s#:#:#:$<#!#<#!#d#q$3#t#t#m#m#u#X#Q#4%Y#@$;$5$<$6$e$e$i$z$A$Y$H$Q$`$S$.%(%g%5%1%6%e%8%h%i%$ $ j% -+[#,@ R@F@s@ ", +" $ $ )#<#<#<#!#!#!#d#N#q$l#l#V#m#W#u#X#Q#4%Y#-$;$;$c$6$7$M$r$z$z$o$G$H$Q$`$ %|%d%=%_%1%6%e%8%k%l%i%m%$ $ ~@3@~# *#%%n% ", +" $ $ $ !#2#d#q$d#3#3#t#t#m#P#u#u#X#)$4%Y#Y#@$;$!$X$[$7$M$F$i$z$,%Y$B$Q$`$S$.%$%g%-%5%2%o%p%h%h%i%m%m%$ $ q%9@m@3%r%}#s%c V+n% ", +" $ $ d#3#3#3#O#t#V#m#u#u#+$X#)$Q#Y#-$@$b$5$c$6$7$M$e$n$z$o$G$Y$Q$Q$R$t%'%$%=%_%2%u%7%p%8%f%v%m%m%m%$ $ 7@-+V+v s@X+X+ ", +" $ $ t#t#>%m#P#u#u#+$X#)$Q#Y#Y#-$b$b$;$c$6$7$h$e$F$z$o$o$G$B$Z$O$ % %.%d%-%-%1%6%7%0%k%f%v%m%m%m%m%$ $ 7@w%F@ ", +" $ $ u#u#u#u#u#X#Q#)$m$4%Y#@$@$b$!$c$6$6$h$M$e$n$z$z$A$G$B$Q$`$ %.%.%=%=%5%:%u%x%p%8%l%i%y%m%m%m%m%$ $ ", +" $ $ X#X#4$Q#Q#Q#m$Y#@$y$;$;$!$c$6$d$7$7$e$n$N$z$o$G$B$H$z%`$t%.%$%$%g%_%2%6%7%p%k%h%i%i%m%m%m%m%m%m%$ $ ", +" $ $ Y#Y#4%Y#Y#-$y$@$;$5$c$X$6$6$7$h$e$n$n$o$o$,%Y$Z$Q$`$`$ %.%(%=%-%)%2%7%x%0%h%h%i%m%m%m%m%m%m%m%m%$ $ ", +" $ $ @$b$;$@$;$;$!$c$c$6$6$7$7$e$r$n$N$z$o$,%G$B$B$Q$`$ %t%$%$%g%-%5%2%7%e%8%A%h%v%m%m%m%m%m%m%m%m%m%$ $ ", +" $ $ ;$5$!$c$X$c$6$6$7$7$h$e$n$n$z$z$o$,%G$Y$B$Q$z% % %.%$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ m%$ $ ", +" $ $ X$6$6$6$[$7$7$h$F$F$n$N$z$o$o$,%B$B$B$Q$`$R$$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ 7$7$h$e$e$n$n$i$i$z$z$o$,%G$/%B$Q$Q$`$$ $ $ $ $ $ $ $ $ $ $ ", +" $ $ n$n$n$n$z$z$z$o$o$,%,%G$B$B$Q$Q$$ $ $ $ $ $ $ ", +" $ $ z$z$o$z$o$o$G$G$/%/%B$Z$Q$$ $ $ $ $ $ $ ", +" $ $ A$A$G$G$G$/%B$Q$H$O$z%$ $ $ $ $ $ ", +" $ $ B$B$B$Z$Q$Q$`$`$$ $ $ $ $ $ ", +" $ $ O$`$`$`$`$R$$ $ $ $ $ $ ", +" $ $ }% % % %$ $ $ $ $ $ $ ", +" $ $ |%$%$ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ ", +" j%$ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ $ $ $ $ $ $ $ $ $ $ $ ", +" $ $ $ ", +" $ $ $ ", +" ", +" ", +" "}; diff --git a/src/Mod/Surfaces/Icons/IsoCurveIco.png b/src/Mod/Surfaces/Icons/IsoCurveIco.png new file mode 100644 index 0000000000..3e5dd8f9d8 Binary files /dev/null and b/src/Mod/Surfaces/Icons/IsoCurveIco.png differ diff --git a/src/Mod/Surfaces/Icons/IsoCurveIco.xcf b/src/Mod/Surfaces/Icons/IsoCurveIco.xcf new file mode 100644 index 0000000000..6c05b2c4f0 Binary files /dev/null and b/src/Mod/Surfaces/Icons/IsoCurveIco.xcf differ diff --git a/src/Mod/Surfaces/Icons/IsoCurveIco.xpm b/src/Mod/Surfaces/Icons/IsoCurveIco.xpm new file mode 100644 index 0000000000..6c45b48106 --- /dev/null +++ b/src/Mod/Surfaces/Icons/IsoCurveIco.xpm @@ -0,0 +1,1280 @@ +/* XPM */ +static char * IsoCurveIco_xpm[] = { +"128 128 1149 2", +" c None", +". c #FF0000", +"+ c #005F00", +"@ c #006100", +"# c #00AF05", +"$ c #00B105", +"% c #1E1E1E", +"& c #212121", +"* c #242424", +"= c #262626", +"- c #252525", +"; c #222222", +"> c #009B03", +", c #006600", +"' c #1B1B1B", +") c #050505", +"! c #000000", +"~ c #171717", +"{ c #008C02", +"] c #00B005", +"^ c #00A305", +"/ c #006F01", +"( c #1D1D1D", +"_ c #4C4C4C", +": c #1F1F1F", +"< c #B5B5B5", +"[ c #B4B4B3", +"} c #B3B3B2", +"| c #B1B1B2", +"1 c #B1B0B0", +"2 c #AFAFAF", +"3 c #AEAEAE", +"4 c #ADACAC", +"5 c #ABABAB", +"6 c #AAAAAA", +"7 c #141414", +"8 c #007100", +"9 c #00AC04", +"0 c #008403", +"a c #232323", +"b c #030303", +"c c #A8A8A8", +"d c #787878", +"e c #8B8B8B", +"f c #B6B7B6", +"g c #B9B9BA", +"h c #B8B8B9", +"i c #B8B7B7", +"j c #B6B6B6", +"k c #B5B4B5", +"l c #B3B3B3", +"m c #B2B3B2", +"n c #B1B1B1", +"o c #B0B0B0", +"p c #AFAFAE", +"q c #ADADAD", +"r c #ACACAC", +"s c #A9A9A9", +"t c #A8A7A8", +"u c #A6A7A6", +"v c #A5A5A5", +"w c #010101", +"x c #00A704", +"y c #00AE05", +"z c #00AC05", +"A c #009703", +"B c #1A1A1A", +"C c #C1C2C2", +"D c #C1C1C1", +"E c #C0C1C1", +"F c #C0C0C0", +"G c #BFC0C0", +"H c #BFBFBF", +"I c #BAB9BA", +"J c #898A89", +"K c #7A7A7A", +"L c #B9B9B9", +"M c #B7B8B8", +"N c #B7B6B7", +"O c #B4B4B4", +"P c #B2B1B1", +"Q c #B0AFAF", +"R c #ADAEAD", +"S c #AAA9A9", +"T c #A7A7A7", +"U c #A6A6A5", +"V c #A4A4A4", +"W c #008A02", +"X c #00B104", +"Y c #00AD05", +"Z c #00AA06", +"` c #00A105", +" . c #007101", +".. c #006000", +"+. c #0C0C0C", +"@. c #C3C3C3", +"#. c #C4C3C3", +"$. c #C3C3C4", +"%. c #C3C4C3", +"&. c #C3C2C3", +"*. c #C2C1C2", +"=. c #C1C1C2", +"-. c #BFC0BF", +";. c #BEBEBF", +">. c #BDBDBE", +",. c #9D9C9C", +"'. c #737373", +"). c #A5A5A4", +"!. c #AFB0AF", +"~. c #AEAEAF", +"{. c #ACABAC", +"]. c #A9A9A8", +"^. c #A6A6A6", +"/. c #A4A5A4", +"(. c #A3A3A3", +"_. c #A2A2A2", +":. c #008B02", +"<. c #00B305", +"[. c #00A906", +"}. c #00A505", +"|. c #008303", +"1. c #020202", +"2. c #C2C2C3", +"3. c #C4C4C4", +"4. c #C5C5C5", +"5. c #C4C5C5", +"6. c #C5C4C4", +"7. c #BEBEBE", +"8. c #BDBEBE", +"9. c #9F9F9E", +"0. c #B8B8B8", +"a. c #B4B5B4", +"b. c #B2B2B1", +"c. c #B1B1B0", +"d. c #AAABAB", +"e. c #A4A3A3", +"f. c #A1A0A1", +"g. c #00B405", +"h. c #00A706", +"i. c #00A506", +"j. c #009404", +"k. c #006800", +"l. c #080808", +"m. c #C2C2C2", +"n. c #C3C3C2", +"o. c #C5C6C6", +"p. c #C6C6C6", +"q. c #C7C6C6", +"r. c #C6C6C5", +"s. c #C6C5C6", +"t. c #C4C5C4", +"u. c #C3C4C4", +"v. c #C3C2C2", +"w. c #C1C0C0", +"x. c #C0BFBF", +"y. c #BDBCBD", +"z. c #757575", +"A. c #9D9D9D", +"B. c #B8B8B7", +"C. c #B4B5B5", +"D. c #B3B3B4", +"E. c #B2B1B2", +"F. c #ACADAC", +"G. c #A8A9A8", +"H. c #A7A7A6", +"I. c #A3A4A4", +"J. c #A3A3A2", +"K. c #A1A1A1", +"L. c #9FA0A0", +"M. c #006700", +"N. c #007700", +"O. c #008601", +"P. c #009202", +"Q. c #009D02", +"R. c #00AC03", +"S. c #00B503", +"T. c #00B404", +"U. c #00A806", +"V. c #00A306", +"W. c #009C05", +"X. c #007702", +"Y. c #C2C2C1", +"Z. c #C2C3C2", +"`. c #C5C5C4", +" + c #C7C7C7", +".+ c #C8C8C7", +"++ c #C6C6C7", +"@+ c #C5C4C5", +"#+ c #BFBFBE", +"$+ c #BDBDBD", +"%+ c #BDBCBC", +"&+ c #ADAEAE", +"*+ c #747474", +"=+ c #B7B7B6", +"-+ c #B2B3B3", +";+ c #AFB0B0", +">+ c #ABACAB", +",+ c #A6A5A6", +"'+ c #A4A4A5", +")+ c #9E9E9F", +"!+ c #006D00", +"~+ c #007F00", +"{+ c #009200", +"]+ c #00A201", +"^+ c #00B302", +"/+ c #00C202", +"(+ c #00C803", +"_+ c #00C403", +":+ c #00C204", +"<+ c #00C004", +"[+ c #00BD04", +"}+ c #00BA04", +"|+ c #00B804", +"1+ c #00B504", +"2+ c #00AC06", +"3+ c #00A905", +"4+ c #00A406", +"5+ c #00A006", +"6+ c #009E07", +"7+ c #008A05", +"8+ c #006500", +"9+ c #C1C1C0", +"0+ c #C9C8C9", +"a+ c #C9C9C9", +"b+ c #C9C9C8", +"c+ c #C8C9C9", +"d+ c #C8C8C8", +"e+ c #C7C6C7", +"f+ c #BCBDBD", +"g+ c #BBBBBB", +"h+ c #ABABAA", +"i+ c #A0A0A0", +"j+ c #B6B5B5", +"k+ c #B1B2B2", +"l+ c #B0AFB0", +"m+ c #A8A9A9", +"n+ c #A5A4A5", +"o+ c #A2A2A1", +"p+ c #286F28", +"q+ c #276F27", +"r+ c #004700", +"s+ c #0D500D", +"t+ c #056205", +"u+ c #007D00", +"v+ c #009500", +"w+ c #00AC00", +"x+ c #00C100", +"y+ c #00D201", +"z+ c #00D601", +"A+ c #00D402", +"B+ c #00D202", +"C+ c #00D003", +"D+ c #00CD02", +"E+ c #00CB03", +"F+ c #00C603", +"G+ c #00C303", +"H+ c #00C003", +"I+ c #00BE04", +"J+ c #00BB04", +"K+ c #00B905", +"L+ c #00B704", +"M+ c #00AE06", +"N+ c #00AB05", +"O+ c #00A606", +"P+ c #00A107", +"Q+ c #009F07", +"R+ c #009B07", +"S+ c #009506", +"T+ c #007602", +"U+ c #C7C7C6", +"V+ c #C9CACA", +"W+ c #CACBCB", +"X+ c #CACBCA", +"Y+ c #CAC9CA", +"Z+ c #C7C7C8", +"`+ c #BCBBBC", +" @ c #BABABB", +".@ c #B1B2B1", +"+@ c #AEAFAE", +"@@ c #AAAAAB", +"#@ c #A8A8A7", +"$@ c #297029", +"%@ c #287028", +"&@ c #277427", +"*@ c #278627", +"=@ c #007200", +"-@ c #008600", +";@ c #25A825", +">@ c #00E100", +",@ c #00E101", +"'@ c #00DE01", +")@ c #00DC01", +"!@ c #00DA01", +"~@ c #00D801", +"{@ c #00D502", +"]@ c #00D302", +"^@ c #00D102", +"/@ c #00CE02", +"(@ c #00C903", +"_@ c #00C703", +":@ c #00C404", +"<@ c #00C104", +"[@ c #00BF04", +"}@ c #00BC04", +"|@ c #00A206", +"1@ c #009F06", +"2@ c #009C07", +"3@ c #009907", +"4@ c #009807", +"5@ c #008906", +"6@ c #006801", +"7@ c #C0C0C1", +"8@ c #C8C9C8", +"9@ c #CACACA", +"0@ c #CBCBCB", +"a@ c #CCCCCC", +"b@ c #C9CAC9", +"c@ c #C9C8C8", +"d@ c #BFBEBE", +"e@ c #BCBCBC", +"f@ c #BABBBA", +"g@ c #AEAEAD", +"h@ c #B2B2B2", +"i@ c #2A712A", +"j@ c #297D29", +"k@ c #289328", +"l@ c #28AA29", +"m@ c #28BD28", +"n@ c #27CC28", +"o@ c #27CD28", +"p@ c #27CF28", +"q@ c #00AA00", +"r@ c #21DE21", +"s@ c #00E400", +"t@ c #00E201", +"u@ c #00E001", +"v@ c #00DB01", +"w@ c #00D902", +"x@ c #00D702", +"y@ c #00CF02", +"z@ c #00CD03", +"A@ c #00CA03", +"B@ c #00B205", +"C@ c #00A207", +"D@ c #009D07", +"E@ c #009A07", +"F@ c #009808", +"G@ c #009606", +"H@ c #008004", +"I@ c #006300", +"J@ c #0F0F0F", +"K@ c #CBCACB", +"L@ c #CDCECD", +"M@ c #CECDCE", +"N@ c #CDCDCD", +"O@ c #CBCBCC", +"P@ c #BBBBBA", +"Q@ c #908F8F", +"R@ c #807F7F", +"S@ c #B0B1B1", +"T@ c #AEADAD", +"U@ c #ACADAD", +"V@ c #2A722A", +"W@ c #2A9F2A", +"X@ c #29BA2A", +"Y@ c #29C62A", +"Z@ c #28C729", +"`@ c #28CA29", +" # c #27CE28", +".# c #27D027", +"+# c #26D127", +"@# c #0BB00B", +"## c #03E603", +"$# c #00E401", +"%# c #00DF01", +"&# c #00DC02", +"*# c #00D701", +"=# c #00CF03", +"-# c #00CC02", +";# c #00C503", +"># c #00C103", +",# c #00BF03", +"'# c #00B904", +")# c #00B505", +"!# c #00AF06", +"~# c #00AA05", +"{# c #00A507", +"]# c #009D06", +"^# c #009406", +"/# c #007803", +"(# c #060606", +"_# c #C6C7C6", +":# c #CACACB", +"<# c #CFCFCE", +"[# c #C8C7C8", +"}# c #BBBABA", +"|# c #BAB9B9", +"1# c #B5B5B6", +"2# c #818181", +"3# c #8D8D8D", +"4# c #AFAEAF", +"5# c #297529", +"6# c #29BB2A", +"7# c #29C82A", +"8# c #28C929", +"9# c #28CB29", +"0# c #00AD00", +"a# c #00AF00", +"b# c #22B722", +"c# c #00E500", +"d# c #00C203", +"e# c #00BA05", +"f# c #009006", +"g# c #1C1C1C", +"h# c #C4C4C3", +"i# c #C9C9CA", +"j# c #CECECE", +"k# c #CBCCCC", +"l# c #C2C1C1", +"m# c #C0C1C0", +"n# c #BEBEBD", +"o# c #BCBCBB", +"p# c #B7B8B7", +"q# c #9F9F9F", +"r# c #B0B1B0", +"s# c #ADADAE", +"t# c #298E29", +"u# c #28C72A", +"v# c #27CF27", +"w# c #26D326", +"x# c #23E223", +"y# c #00DD01", +"z# c #00CC03", +"A# c #00C504", +"B# c #00B805", +"C# c #00A705", +"D# c #C7C8C8", +"E# c #CACAC9", +"F# c #CBCCCB", +"G# c #BFBEBF", +"H# c #BABABA", +"I# c #9E9F9E", +"J# c #AEAFAF", +"K# c #ACACAB", +"L# c #29B029", +"M# c #28C82A", +"N# c #27CC29", +"O# c #27CE27", +"P# c #26CF26", +"Q# c #26D126", +"R# c #11AE11", +"S# c #01E102", +"T# c #00B705", +"U# c #009207", +"V# c #C5C5C6", +"W# c #CBCACA", +"X# c #C6C5C5", +"Y# c #C2C3C3", +"Z# c #BEBFBE", +"`# c #858685", +" $ c #8A8A8A", +".$ c #A8A7A7", +"+$ c #298229", +"@$ c #28C629", +"#$ c #27CB28", +"$$ c #26CE27", +"%$ c #26CF27", +"&$ c #25CF26", +"*$ c #00A800", +"=$ c #00A700", +"-$ c #23B323", +";$ c #00D802", +">$ c #00D602", +",$ c #00D002", +"'$ c #00B605", +")$ c #00A106", +"!$ c #007A03", +"~$ c #B8B9B8", +"{$ c #B7B7B7", +"]$ c #B5B6B5", +"^$ c #727272", +"/$ c #A0A1A0", +"($ c #28A829", +"_$ c #28C829", +":$ c #27CA29", +"<$ c #27CC27", +"[$ c #26CC27", +"}$ c #26CD27", +"|$ c #26CD26", +"1$ c #25CC26", +"2$ c #00A600", +"3$ c #06A706", +"4$ c #05DB06", +"5$ c #00BE03", +"6$ c #C8C7C7", +"7$ c #C7C8C7", +"8$ c #C5C6C5", +"9$ c #C4C4C5", +"0$ c #B9BAB9", +"a$ c #B6B7B7", +"b$ c #979796", +"c$ c #7B7B7B", +"d$ c #287D28", +"e$ c #28C429", +"f$ c #27C829", +"g$ c #27C928", +"h$ c #27CA28", +"i$ c #26CB27", +"j$ c #26CA26", +"k$ c #25CA27", +"l$ c #00A400", +"m$ c #26AF26", +"n$ c #00AB06", +"o$ c #009E06", +"p$ c #008404", +"q$ c #111111", +"r$ c #B9B9B8", +"s$ c #B1B0B1", +"t$ c #969696", +"u$ c #ABAAAB", +"v$ c #AAA9AA", +"w$ c #A9A8A9", +"x$ c #A5A5A6", +"y$ c #28A329", +"z$ c #28C529", +"A$ c #27C729", +"B$ c #27C728", +"C$ c #26C927", +"D$ c #26C928", +"E$ c #25C926", +"F$ c #25C826", +"G$ c #25C726", +"H$ c #05A205", +"I$ c #03D505", +"J$ c #00C604", +"K$ c #00A307", +"L$ c #006C01", +"M$ c #C1C0C1", +"N$ c #A9A8A8", +"O$ c #287728", +"P$ c #27C028", +"Q$ c #27C529", +"R$ c #27C628", +"S$ c #26C628", +"T$ c #26C727", +"U$ c #25C727", +"V$ c #25C627", +"W$ c #25C526", +"X$ c #009F00", +"Y$ c #009E01", +"Z$ c #25AC25", +"`$ c #00CE03", +" % c #008D05", +".% c #161616", +"+% c #B8B9B9", +"@% c #B7B7B8", +"#% c #ADACAD", +"$% c #7E7E7E", +"%% c #919191", +"&% c #A7A7A8", +"*% c #27A028", +"=% c #27C328", +"-% c #27C428", +";% c #26C428", +">% c #26C527", +",% c #25C426", +"'% c #25C326", +")% c #24C226", +"!% c #009D01", +"~% c #039D03", +"{% c #05D008", +"]% c #00C902", +"^% c #00B604", +"/% c #007703", +"(% c #2F2F2F", +"_% c #BDBDBC", +":% c #BBBCBB", +"<% c #ACACAD", +"[% c #A5A6A5", +"}% c #A2A2A3", +"|% c #A1A2A1", +"1% c #277927", +"2% c #27C228", +"3% c #26C328", +"4% c #26C227", +"5% c #25C227", +"6% c #25C126", +"7% c #25C226", +"8% c #24C026", +"9% c #009B01", +"0% c #25A725", +"a% c #00A805", +"b% c #009C06", +"c% c #009607", +"d% c #006200", +"e% c #C0BFC0", +"f% c #BCBDBC", +"g% c #ABACAC", +"h% c #7D7D7D", +"i% c #919091", +"j% c #276E27", +"k% c #27A428", +"l% c #26C028", +"m% c #26C128", +"n% c #25C028", +"o% c #25C127", +"p% c #25C026", +"q% c #24BF27", +"r% c #24BE26", +"s% c #24BD26", +"t% c #009801", +"u% c #059A06", +"v% c #05CA07", +"w% c #008504", +"x% c #BBBABB", +"y% c #B9BABA", +"z% c #989898", +"A% c #777777", +"B% c #A0A0A1", +"C% c #278227", +"D% c #26BE28", +"E% c #26BF28", +"F% c #25BF28", +"G% c #25BE27", +"H% c #24BB25", +"I% c #009602", +"J% c #009501", +"K% c #22A323", +"L% c #00C304", +"M% c #00A904", +"N% c #00A005", +"O% c #009504", +"P% c #009204", +"Q% c #009104", +"R% c #007102", +"S% c #0D0D0D", +"T% c #BDBEBD", +"U% c #B5B5B4", +"V% c #ABAAAA", +"W% c #A2A1A1", +"X% c #26B027", +"Y% c #26BC28", +"Z% c #25BC27", +"`% c #24BB26", +" & c #24BA26", +".& c #23B926", +"+& c #23B925", +"@& c #009402", +"#& c #0D970E", +"$& c #01C404", +"%& c #00AF04", +"&& c #009803", +"*& c #007701", +"=& c #009407", +"-& c #BCBBBB", +";& c #B9B8B9", +">& c #B4B3B3", +",& c #A7A8A7", +"'& c #8F8F8F", +")& c #A09F9F", +"!& c #9E9E9E", +"~& c #9A9C9B", +"{& c #269127", +"]& c #26BA28", +"^& c #26BB28", +"/& c #25BA27", +"(& c #25B927", +"_& c #24B926", +":& c #23B726", +"<& c #23B625", +"[& c #009102", +"}& c #23BA24", +"|& c #00A304", +"1& c #008F05", +"2& c #008104", +"3& c #BABAB9", +"4& c #B9B8B8", +"5& c #ADADAC", +"6& c #ACABAB", +"7& c #717171", +"8& c #9C9D9D", +"9& c #9D9E9D", +"0& c #9C9D9C", +"a& c #266E26", +"b& c #267426", +"c& c #26B728", +"d& c #25B828", +"e& c #25B827", +"f& c #25B728", +"g& c #24B727", +"h& c #24B626", +"i& c #23B526", +"j& c #23B426", +"k& c #008F02", +"l& c #1D9A1E", +"m& c #00B204", +"n& c #008604", +"o& c #006D01", +"p& c #B6B6B7", +"q& c #B5B4B4", +"r& c #AAAAA9", +"s& c #838383", +"t& c #888889", +"u& c #9C9C9C", +"v& c #266D26", +"w& c #259E27", +"x& c #25B628", +"y& c #24B627", +"z& c #24B527", +"A& c #24B427", +"B& c #23B427", +"C& c #23B326", +"D& c #23B125", +"E& c #008E02", +"F& c #008D02", +"G& c #10BF14", +"H& c #00A903", +"I& c #007401", +"J& c #007E03", +"K& c #009206", +"L& c #B3B2B3", +"M& c #A9A9AA", +"N& c #A6A7A7", +"O& c #A1A0A0", +"P& c #9B9B9B", +"Q& c #9A9A9A", +"R& c #258126", +"S& c #25B427", +"T& c #25B428", +"U& c #24B327", +"V& c #24B326", +"W& c #23B226", +"X& c #23B126", +"Y& c #23B026", +"Z& c #22AF25", +"`& c #269A27", +" * c #009C03", +".* c #007F04", +"+* c #B3B4B3", +"@* c #AFAFB0", +"#* c #A7A6A6", +"$* c #959596", +"%* c #9C9B9C", +"&* c #9A9A9B", +"** c #99999A", +"=* c #256C25", +"-* c #25A927", +";* c #25B228", +">* c #24B127", +",* c #23AF26", +"'* c #23AE26", +")* c #22AE25", +"!* c #22AC25", +"~* c #008902", +"{* c #088C09", +"]* c #01B606", +"^* c #007002", +"/* c #B2B2B3", +"(* c #A5A6A6", +"_* c #868685", +":* c #9A9999", +"<* c #999999", +"[* c #939693", +"}* c #259126", +"|* c #24B028", +"1* c #24AF27", +"2* c #24AE26", +"3* c #23AD26", +"4* c #23AC25", +"5* c #22AA25", +"6* c #008703", +"7* c #008602", +"8* c #23B927", +"9* c #009702", +"0* c #006A01", +"a* c #009106", +"b* c #A4A4A3", +"c* c #A3A2A3", +"d* c #9C9C9D", +"e* c #9C9B9B", +"f* c #999998", +"g* c #979797", +"h* c #979696", +"i* c #257925", +"j* c #24AD28", +"k* c #24AE27", +"l* c #24AD27", +"m* c #23AC26", +"n* c #23AB27", +"o* c #23AB26", +"p* c #22AB25", +"q* c #22A925", +"r* c #22A825", +"s* c #21A725", +"t* c #008503", +"u* c #208321", +"v* c #006400", +"w* c #007E04", +"x* c #101010", +"y* c #AFAEAE", +"z* c #ABABAC", +"A* c #939393", +"B* c #9A9B9B", +"C* c #246C25", +"D* c #24A327", +"E* c #24AA28", +"F* c #23AA27", +"G* c #23A926", +"H* c #22A826", +"I* c #22A726", +"J* c #21A625", +"K* c #004A00", +"L* c #0B650B", +"M* c #009706", +"N* c #006B01", +"O* c #AAABAA", +"P* c #A7A8A8", +"Q* c #848484", +"R* c #9A999A", +"S* c #999898", +"T* c #979897", +"U* c #979697", +"V* c #959495", +"W* c #919392", +"X* c #246B24", +"Y* c #249126", +"Z* c #24A927", +"`* c #23A927", +" = c #23A827", +".= c #23A726", +"+= c #22A525", +"@= c #21A425", +"#= c #219A25", +"$= c #004B00", +"%= c #236023", +"&= c #009107", +"*= c #A4A5A5", +"== c #A1A2A2", +"-= c #9F9FA0", +";= c #767776", +">= c #949594", +",= c #248025", +"'= c #23A627", +")= c #23A727", +"!= c #23A626", +"~= c #22A626", +"{= c #22A426", +"]= c #22A325", +"^= c #219D24", +"/= c #217021", +"(= c #206820", +"_= c #008C05", +":= c #A2A3A2", +"<= c #A2A1A2", +"[= c #A1A1A0", +"}= c #9F9E9E", +"|= c #9E9E9D", +"1= c #9B9B9C", +"2= c #6F6F6F", +"3= c #959595", +"4= c #969695", +"5= c #939493", +"6= c #929292", +"7= c #247023", +"8= c #23A427", +"9= c #23A327", +"0= c #22A326", +"a= c #22A226", +"b= c #21A025", +"c= c #217622", +"d= c #216821", +"e= c #A5A4A4", +"f= c #A09FA0", +"g= c #9D9C9D", +"h= c #797979", +"i= c #939494", +"j= c #919292", +"k= c #236B23", +"l= c #239927", +"m= c #23A227", +"n= c #22A227", +"o= c #22A127", +"p= c #22A026", +"q= c #219F26", +"r= c #217F23", +"s= c #828282", +"t= c #A4A3A4", +"u= c #9FA09F", +"v= c #7E7F7E", +"w= c #949494", +"x= c #929192", +"y= c #909191", +"z= c #236A23", +"A= c #238A25", +"B= c #239F26", +"C= c #229F27", +"D= c #229F26", +"E= c #218524", +"F= c #838382", +"G= c #818282", +"H= c #808180", +"I= c #A8A8A9", +"J= c #9E9D9D", +"K= c #9B9A9B", +"L= c #999A9A", +"M= c #979798", +"N= c #8D8E8D", +"O= c #909090", +"P= c #8E8F8F", +"Q= c #237B24", +"R= c #229E27", +"S= c #229D26", +"T= c #218E25", +"U= c #216921", +"V= c #7F7F7F", +"W= c #006F02", +"X= c #A1A1A2", +"Y= c #A0A1A1", +"Z= c #9B9C9B", +"`= c #989897", +" - c #969796", +".- c #949495", +"+- c #929393", +"@- c #919192", +"#- c #8E8E8F", +"$- c #8E8E8E", +"%- c #227022", +"&- c #229B27", +"*- c #229B26", +"=- c #229225", +"-- c #216B21", +";- c #718071", +">- c #818182", +",- c #A6A5A5", +"'- c #9F9E9F", +")- c #9D9D9E", +"!- c #9A9B9A", +"~- c #989797", +"{- c #919291", +"]- c #909190", +"^- c #226922", +"/- c #229626", +"(- c #229426", +"_- c #216E21", +":- c #838384", +"<- c #818180", +"[- c #7F8080", +"}- c #7E7E7F", +"|- c #A3A3A4", +"1- c #9E9F9F", +"2- c #999A99", +"3- c #989998", +"4- c #969697", +"5- c #969596", +"6- c #949393", +"7- c #7D7E7D", +"8- c #808080", +"9- c #8C8B8B", +"0- c #898A88", +"a- c #228D25", +"b- c #217222", +"c- c #838484", +"d- c #828382", +"e- c #818281", +"f- c #7D7E7E", +"g- c #7D7D7C", +"h- c #9D9D9C", +"i- c #959594", +"j- c #949394", +"k- c #939292", +"l- c #8F9090", +"m- c #8E8F8E", +"n- c #8C8C8C", +"o- c #217422", +"p- c #828283", +"q- c #818081", +"r- c #7C7B7C", +"s- c #202020", +"t- c #969595", +"u- c #959494", +"v- c #8A8B8B", +"w- c #898989", +"x- c #858484", +"y- c #838483", +"z- c #7C7C7C", +"A- c #7B7B7A", +"B- c #7A7A79", +"C- c #9C9C9B", +"D- c #9B9B9A", +"E- c #929392", +"F- c #929191", +"G- c #6E6E6E", +"H- c #888888", +"I- c #858584", +"J- c #828281", +"K- c #7F7E7F", +"L- c #7E7D7E", +"M- c #7D7C7D", +"N- c #9A9A99", +"O- c #979898", +"P- c #949595", +"Q- c #929291", +"R- c #878787", +"S- c #858686", +"T- c #858585", +"U- c #818080", +"V- c #7B7C7C", +"W- c #7A7B7A", +"X- c #989798", +"Y- c #959696", +"Z- c #8F8F90", +"`- c #8A8B8A", +" ; c #868686", +".; c #808081", +"+; c #7F807F", +"@; c #7A7979", +"#; c #787979", +"$; c #767676", +"%; c #9B9C9C", +"&; c #949493", +"*; c #919090", +"=; c #8F908F", +"-; c #8F8F8E", +";; c #8C8C8D", +">; c #898988", +",; c #888787", +"'; c #828182", +"); c #808181", +"!; c #7F7F80", +"~; c #7D7D7E", +"{; c #7D7C7C", +"]; c #797879", +"^; c #777878", +"/; c #767675", +"(; c #0E0E0E", +"_; c #969797", +":; c #90908F", +"<; c #8D8D8E", +"[; c #757576", +"}; c #7F7E7E", +"|; c #7E7E7D", +"1; c #7C7B7B", +"2; c #787877", +"3; c #757574", +"4; c #8E8D8D", +"5; c #8D8C8D", +"6; c #7A7A7B", +"7; c #787978", +"8; c #767576", +"9; c #757475", +"0; c #737474", +"a; c #8C8D8C", +"b; c #898A8A", +"c; c #898889", +"d; c #787879", +"e; c #747473", +"f; c #727373", +"g; c #727171", +"h; c #959695", +"i; c #939293", +"j; c #8C8B8C", +"k; c #8A8989", +"l; c #878788", +"m; c #828383", +"n; c #787777", +"o; c #727172", +"p; c #0B0B0B", +"q; c #929293", +"r; c #898888", +"s; c #878887", +"t; c #878686", +"u; c #717070", +"v; c #80807F", +"w; c #7C7D7D", +"x; c #797A7A", +"y; c #787778", +"z; c #706F70", +"A; c #868586", +"B; c #848485", +"C; c #777677", +"D; c #767575", +"E; c #747475", +"F; c #737473", +"G; c #707070", +"H; c #6F6E6F", +"I; c #8E8D8E", +"J; c #8D8D8C", +"K; c #8C8C8B", +"L; c #888788", +"M; c #79797A", +"N; c #797978", +"O; c #707170", +"P; c #6F706F", +"Q; c #6D6D6D", +"R; c #848483", +"S; c #7F7F7E", +"T; c #747575", +"U; c #737372", +"V; c #717271", +"W; c #6F7070", +"X; c #181818", +"Y; c #8B8B8A", +"Z; c #868786", +"`; c #858586", +" > c #7A797A", +".> c #747374", +"+> c #707171", +"@> c #6F6F70", +"#> c #6E6F6E", +"$> c #8D8C8C", +"%> c #8B8A8A", +"&> c #8A8A89", +"*> c #878786", +"=> c #7E7D7D", +"-> c #7C7C7D", +";> c #7B7B7C", +">> c #7B7A7A", +",> c #757676", +"'> c #717170", +")> c #6E6F6F", +"!> c #888988", +"~> c #737273", +"{> c #727271", +"]> c #70706F", +"^> c #6D6D6E", +"/> c #89898A", +"(> c #878687", +"_> c #848384", +":> c #767677", +"<> c #757474", +"[> c #6F6E6E", +"}> c #6D6E6E", +"|> c #868787", +"1> c #757675", +"2> c #848383", +"3> c #828181", +"4> c #707071", +"5> c #6F6F6E", +"6> c #848585", +"7> c #7B7C7B", +"8> c #313131", +"9> c #807F80", +"0> c #090909", +"a> c #121212", +"b> c #7C7D7C", +"c> c #7C7C7B", +"d> c #7B7A7B", +"e> c #797878", +"f> c #070707", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" . . . ", +" . . . . ", +" . . . . ", +" . . . ", +" . . . ", +" . . . ", +" + . . . ", +" + + + . . . ", +" + + + . . . ", +" + @ + + . . . ", +" + + # + + . . . ", +" + $ # + + + . . . ", +" % & * = = - - - - = ; + + $ > , + + . . . ", +" & - ' ) ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ~ ; + { ] ^ / + + . . . ", +" ( = ~ ! ! ! _ : ! ! ! ! ! < [ } | 1 2 3 4 5 6 ! ! ! ! ! 7 + 8 $ # 9 0 + + + . . ", +" % a b ! ! ! ! ! ! ! c d e f g h i j k l m n o p q r 5 s t u v ! ! w % + + x ] y z A , + + . . . ", +" ( B ! ! ! ! ! ! C D E F G H I J K o L M N j O l P n Q R 4 5 S s T U V ! ! ! a + W X # Y Z ` .+ + .. . . . ", +" a +.! ! ! ! @.#.$.%.@.&.*.=.E -.;.>.,.'.).L M f < O l n !.~.q {.6 ].c ^./.(._.! ! - + :.<.] y z [.}.|...+ + . . . ", +" = 1.! ! ! 2.%.3.3.4.4.5.6.3.#.&.*.D H 7.8.v '.9.0.N j a.l b.c.2 q r d.s c u v e._.f.! ! = + + + + + + + { g.$ # z Z h.i.j.k.+ + . . . ", +" l.! ! ! m.n.3.5.4.o.p.q.p.r.s.t.u.v.C w.x.7.y.R z.A.B.f C.D.E.o 2 3 F.5 6 G.H.v I.J.K.L.! ! & + + + + + + + M.N.O.P.Q.R.S.T.<.] Y Z U.i.V.W.X.+ + + . . ", +" = ! ! ! F Y.Z.#.`.r.q. + +.+ + +++r.@+3.m.D F #+$+%+&+*+A.=+< [ -+n ;+3 q >+6 ].T ,+'+J._.L.)+! w + + + + + + + !+~+{+]+^+/+(+_+:+<+[+}+|+1+<.] y 2+3+i.4+5+6+7+8++ + . . . ", +" ; ! ! 7.x.9+m.$.3.p. +.+0+a+a+b+c+d+e+s.`.@.m.D -.8.f+g+h+'.i+j+O } k+l+p q >+6 m+T U n+(.o+p+q+r+r+s+t+, u+v+w+x+y+z+A+B+C+D+E+(+F+G+H+I+J+K+L+<.$ M+N+[.O+V.P+Q+R+S+T++ + + . . ", +" a ! ! ! #+F Y.@.3.r.U+d+a+V+W+W+X+Y+a+Z+U+4.3.2.=.F 7.$+`+ @c '.^.k l .@o +@&+r @@s #@$@$@%@p+p+&@*@=@-@;@>@,@,@'@)@!@~@{@]@^@/@E+(@_@:@<@[@}@K+L+g.$ # z [.h.4+|@1@2@3@4@5@6@+ + + . . . ", +" % ) ! ! 7@Y.$.t.p.Z+8@9@0@a@a@a@W+b@c@ +p.3.n.Y.F d@$+e@f@L i+z.g@[ h@o 2 q r i@i@i@$@j@k@l@m@n@o@p@q@q@r@s@t@u@'@v@w@x@A+^@y@z@A@_@_+:+[@[+}+L+1+B@# 2+Z h.4+C@Q+D@E@F@4@G@H@I@+ + + . . . ", +" J@! ! m.3.5.q.d+a+K@a@L@M@N@O@9@a+.+p.3.#.m.F H 8.e@P@L 0.Q@R@h@h@S@2 T@U@V@i@W@X@Y@Z@`@`@o@ #.#+#w+@###$#,@%#&#!@*#A+B+=#-#(@_@;#>#,#}@'#L+)#$ !#z ~#h.{#C@Q+]#E@F@4@4@4@^#/#@ + + . . ", +" (#! m.%.4._#d+b@:#a@M@<#N@a@9@a+[#p.4.@.C w.H $+e@}#|#M 1#2#3#b.n 4#&+r d.i@5#6#Y@7#8#9#n@p@.#+#0#a#b#c#t@u@)@!@*#A+B+y@z@A@_@_+d#[@}@e#L+T.B@# Y [.U.i.|@Q+D@3@4@4@4@4@4@f#..+ . . . ", +" g#! ! h#4.p.d+i#W+a@N@j#N@k#X+0+d+p.4.@.l#m#H n#o#}#L p#f +@*+q#r#2 s#r 6 i@i@t#Y@u#`@9#o@ #v#+#w#0#w+x#,@%#y#!@x@A+B+y@z#A@_@A#>#[@[+}+B#T.B@# z ~#C#i.|@Q+2@E@4@F@4@F@F@T++ + . . ", +" = ! ! @+r.D#8@E#0@a@a@F#0@V+d+ +p.@+@.C F G#$+`+H#L M j O I#z.r J#q K#5 s i@$@L#u#M#`@N#o@O#P#Q#Q#q@R#S#'@)@w@x@A+B+=#-#A@_@_+d#[@[+'#T#T.B@# Y Z h.i.C@Q+2@E@4@4@4@4@U#..+ . . ", +" & ! ! V# +d+a+9@W#W+:#V+c+D#_#X#3.Y#D F Z#$+g+}#L p#j O l `# $4#q {.d.s .$$@+$@$M#`@#$n@O#$$%$&$*$=$-$y#v@;$>$]@,$/@z#(+_@_+>#[@}@'#'$T.B@M+z Z h.i.)$Q+2@3@4@4@4@4@!$+ + . . ", +" ) ! `.p.e+.+0+a+a+a+8@.+ +X#6.@.m.w.H 7.f+`+H#~${$]$O l 5 ^$/$q {.@@s c $@$@($Z@_$:$#$<$[$}$|$1$2$3$4$w@*#{@B+,$z@E+(+F+G+<+5$J+'#'$g.$ y 2+Z O+4+P+6+R+3@4@4@4@G@I@+ . . ", +" & ! ! 4.p.U+D#D#6$d+7$q.8$9$#.Z.l#F Z#>.e@g+0$0.a$j+D.l n b$c$K#>+6 m+T v $@d$e$Z@f$g$h$i$i$j$k$l$l$m$*#{@]@^@y@-#A@_@;#G+<+I+J+B#)#<.] Y n$3+O+4+P+o$R+3@4@4@4@p$+ + . . ", +" q$! u.4.X#s.p.++U+p.4.`.3.n.l#w.-.7.$+`+H#r$B.j < l h@s$+@c$t$u$v$w$T x$$@%@y$z$A$B$C$D$C$E$F$G$]+H$I$A+^@y@z@A@(@J$:@>#[@}@e#L+1+<.!#Y ~#h.i.K$5+o$R+4@F@4@4@L$+ . . ", +" % ! ! $.3.3.4.4.6.@+3.#.Z.m.M$-.G#$+e@f@|#0.=+]$O l E.o 2 A.z.N$S #@u v I.p+O$P$Q$R$S$T$T$U$V$W$X$Y$Z$^@,$`$z#(@_@;#G+H+I+J+'#'$g.B@# z 3+C#4+|@1@D@E@4@4@4@ %+ + . . ", +" .%! m.&.@.@.$.#.@.2.m.D w.G Z#>.e@g+H#+%@%f < D.} n o 3 #%$%%%s &%^.n+(.p+p+*%=%-%;%>%>%W$,%'%)%!%~%{%/@z#]%(+F+_+<@[@}@}+B#^%<.$ M+2+[.h.4+P+Q+2@E@4@4@F@/%+ . . ", +" (%! ! D m.*.m.m.Y.*.9+F H Z#8._%:%H#L 0.=+1#O l h@o 2 3 <%A.*+^.H.[%/.}%|%p+1%P$2%3%4%5%5%6%7%8%9%9%0%-#A@(+F+:@:+,#5$J+'#'$)#B@# Y ~#a%O+V.)$6+b%3@F@4@c%d%+ . . . ", +" .%! G F 9+F E 7@e%G #+7.8.f%:%H#|#h {$j k l } n ;+3 q g%6 h%i%T v V _.K.p+j%k%l%l%m%n%o%p%q%r%s%t%u%v%_@F+:@d#<+I+}@e#|+1+<.$ y z [.h.i.|@1@D@R+4@4@4@w%+ + . . ", +" g#! ! H H H H H G#7.$+$+e@g+x%y%h {$j < O l E.r#2 &+r 5 6 z%A%v '+(._.B%q#j%C%D%E%E%F%G%G%r%s%H%I%J%K%;#:@L%<+I+}@}+B#T#g.B@# Y M%N%O%P%Q%o$D@3@4@4@F@R%+ . . ", +" S%! 8.7.8.8.T%$+_%e@:%g+H#L 0.0.j j+U%l k+r#l+~.q r V%S T A%t$V }%W%i+9.j%j%X%Y%Z%Z%Z%Z%`% &.&+&@&#&$&:+H+[@[+J+'#^%g.B@%&&&*&+ + + + + G@R+3@4@F@=&..+ . . ", +" * ! ! e@e@%+e@o#-&P@H#|#;&0.{$f ]$O >&} n o p T@r 5 6 N$,&'&h%(.}%K.)&!&~&j%{&]&^&/&/&(&_&_&:&<&P.[&}&<+5$[+J+'#T#)#<.|&/ + + + + 1&3@4@F@4@2&+ + . . . ", +" ! ! g+}#g+x%f@3&3&L 4&{${$j < O >&h@P o 2 &+5&6&@@s c T _.7&8&o+i+9.9&0&a&b&c&d&e&f&g&g&h&i&j&j&k&l&I+}@J+'#L+1+m&{ @ + + + n&3@4@4@4@o&+ . . ", +" & ! L g L L r$~$0.{${$p&]$q&O l h@.@1 2 3 q g%5 r&c T U ).s&t&K.L.!&0&u&a&v&w&x&x&y&z&A&B&j&C&D&E&F&G&}+'#T#1+H&I&+ + + + J&4@4@F@K&+ + . . ", +" ! ! 0.p#B.M {$a$j j+< a.[ L&h@n o 2 3 q r 5 M&]..$N&v (.t$z.O&q#!&0&P&Q&v&R&S&T&U&V&U&W&X&Y&Z&{ :.`&L+'$)# *I@+ + + X.4@F@4@.*+ . . ", +" ) ! f j j j j 1#< O +*l h@.@c.@*2 3 T@<%h+6 ].#@#*U /.(._.*+$*I#A.%*&***v&=*-*;*>*>*>*Y&,*'*)*!*~*{*]*g.&&@ + + + ^*4@4@4@L$+ . . ", +" - ! ! < < q&O O D.l /*b.n r#o J#3 q r 5 6 s c T (*n+(._.K._*s&A.0&P&:*<*[*=*}*|*1*1*2*'*3*4*!*5*6*7*8*9*..+ + + 0*4@4@a*+ + . . . ", +" ! ! +*>&D.L&-+h@| P n o 2 3 g@#%g%5 v$m+t T ^./.b*c*K.O&t$'.d*e*Q&f*g*h*=*i*j*k*l*m*n*o*p*q*r*s*t*u*..+ + v*4@4@w*+ . . ", +" x*! h@k+k+n n c.r#l+2 y*g@q r z*5 6 ].c T ^.v I.(._.O&)&!&'.A*B***z%g*t$=*C*D*E*F*F*G*H*H*I*J*J*X.K*L*.. + + M*4@N*+ . . ", +" - ! ! s$o o ;+!.J#y*R q U@r 5 O*v$w$P*T ^.v V (.o+K.L.I#!&2#Q*R*S*T*U*V*W*X*Y*Z*`* =.=I*I*+=@=#=$=r+%= + a*&=+ + . . ", +" ! ! 2 2 y*3 3 R q #%r g%d.s s c t ^.U *=I.(.==/$-=)+9&u&'&;=<*z%U*$*>=A*X*,='=)=!=~={={=]=^=/=(=r+q$ + _=.*+ . . ", +" +.! q s#R q F.r >+5 @@6 r&G.t T ^.v '+V :=<=[=i+}=|=0&1=z%2=3=g*4=3=5=6=X*7=8=8=9=0=0=a=b=c=d=(=! ! + n&o&+ . . ", +" = ! r r {.{.>+5 d.M&S s c T #*^.x$e=(.:=_.[=f=)+|=g=u&Q&**h= $t$3=i=A*j=X*k=l=m=n=o=p=q=r=d=d=s=! ! - + H@+ + . . ", +" ! ! 5 @@6 r&s m+G.P*T T ^.(*'+t=(.:=K./$u=9.!&A.%*P&**S*Q*v=$*w=A*x=y='&z=A=B=C=D=D=E=d=d=F=G=H=! x* + !$+ . . ", +" ! ! s s s I=c &%T N&^.U v V b*J._.K.i+q#9.J=u&%*K=L=S*M=N=*+w=A*6=y=O=P=z=Q=R=R=S=T=U=d=s&s=2#V=! ! + W=+ . . ", +" B ! T &%T #*H.u [%x$/.V e.(.:=X=Y=i+q#!&A.8&Z=Q&<*f*`= -.-2=O=+-@-O=#-$-z=%-&-*-=---d=;-s&>-H=V=! ! * + ..+ . . ", +" - ! ! ^.^.(*,-v '+V e.(._.|%K.i+u='-!&)-u&e*!-<*<*~-t$4=V*z.t&{-]-'&$-3#z=^-/-(-_-d=d=:-s=<-[-}-h%! .% + + + . . ", +" ! ! V e=V b*|-(.(.|%_.K.O&f=q#1-A.g=u&P&Q&2-3-g*4-5->=6-7-8-O='&$-3#9-0-^-a-b-d=d=c-d-e-8-V=f-g-! ! + + . . ", +" 1.! |-c*_.}%_.==K.B%/$-=q#I#!&h-0&P&K=Q&<*S*g*t$4=i-j-k-Q*d l-m-3#n-e $^-o-d=d=Q*p-G=q-V=$%h%r-! ! & + + . . ", +" s-! <=<=K.B%K.i+L.q#q#!&J=A.u&P&P&!-**<*z%g*t$t-u-A*6=x=v-7&$-3#n-e $w-^-U=d=x-y-s=<-R@$%h%z-A-B-! ( + + . . ", +" a ! ! i+i+-=u=9.}=!&A.g=8&C-P&D-Q&<*z%g*4-4=3=w=A*E-F-]-m-G-e n-e $w-H-U=d=I-:-s=J-8-K-L-M-c$K h=! ! . . ", +" ! ! 9.1-!&|=!&A.d*u&Z=P&&*N-<*S*O-U*t$$*P-j-A*Q-%%O=Q@$-'.`#e $J H-R-S-T-Q*s&e-U-V=$%g-V-W-h=d ! ! . . ", +" ! ! J=A.A.,.C-%*P&!-!-2-<*3-X-O-t$Y-V*>=5=6=j=%%Z-'&$-3#d V=`-w-H-R- ;T-c-s&>-.;+;}-h%V-c$@;#;A%$;! = . . ", +" .%! %;Z=Z=P&&*&*Q&<*f*f*X-~-U*t$5-w=&;A*+-Q-*;=;-;$-3#;;z-K w->;,; ;T-Q*s&';);!;v=~;{;c$K ];^;$;/;! (; . . ", +" - ! Q&Q&L=L=<*f*z%z%X-g*_;4=3=>=&;&;E-x=y=O=:;-;<;3#n-e 8-[;H-R- ;T-Q*s&s=2#8-};|;z-1;A-h=2;A%[;3;! ! . . ", +" & ! ! <*z%z%`=X-g*g*t$$*3=P-i=A*+-6=F-%%O='&$-4;5;n-e $F=^$R- ;T-Q*s&s=2#8-V=f-g-V-6;h=7;A%8;9;0;! ! ( ", +" ! ! g*g*b$_;t$Y-3=V*w=w=A*6=6=Q-O=O='&P=4;3#a;e e b;c; ;G- ;T-Q*s&s=q-8-V=$%g-r-K @;d;A%$;z.e;f;g;! - ", +" ! ! Y-$*h;3=i-w=&;A*+-i;6=%%i%O=Z-m-$-3#5;j;e $k;H-l;R-G-m;Q*s&';2#8-V=f-M-1;c$K #;n;$;[;*+'.o;7&! J@ ", +" p;! w=w=&;5=A*A*q;6=%%y=O=O=:;'&$-4;3#n-9- $b;w-r;s;t;S-u;v;p-s=2#v;V=$%w;z-c$x;h=y;A%z.*+'.^$7&z;! ! ", +" & ! E-E-q;6=6=Q-%%i%]-O='&#-$-3#3#n-n-e $k;t&H-R- ;A;B;'.z-s=H=8-K-L-g-z-c$B-h=2;C;D;E;F;^$7&G;H;! ! s- ", +" - ! x=F-%%%%O=O=l-'&-;#-I;<;J;n-K;e $k;c;H-L; ; ;T-Q*s&E;M;U-8-V=f-g-z-c$K N;y;A%8;E;F;^$g;O;P;G-Q;! = ", +" ( ! ! l-Z-Q@#-'&$-$-4;3#n-j;e e $J c;H-H-R- ;`#I-R;m;p-$;A%+;S;L-w;V-c$B-#;^;C;$;T;*+U;V;G;W;G-Q;Q;! X; ", +" ! ! P=$-$-$-N=3#J;n-9-e Y; $J w-r;l;R-Z;`;T-Q*s&p-G=2#A%z.};L-z-z-W- >d;d A%8;*+.>f;V;+>@>#>Q;Q;Q;! w ", +" ! ! 3#3#;;$>j;9-e `-%>&>w-r;r;L;*>*> ;T-x-s&F=s=e-U-V=d '.=>->;>>>x;#;y;$;,>9;e;f;o;'>@>)>Q;Q;Q;Q;! ! ", +" ! ! 9-9-e e v- $w-&>!>t&H-,;R-Z;_*T-Q*Q*F=p-s=2#8-+;}-^;^$z-c$K h=#;A%A%z.3;.>~>{>+>]>H;^>Q;Q;Q;Q;! ! ", +" (#! $b;/>w-w-w-!>H-R-(> ; ;`#T-Q*_>s&m;G=2#.;8-V=$%h%d G;c$ >h=d ^;:>8;<>F;'.V;'>W;[>}>Q;Q;Q;Q;Q;Q;! * ", +" ~ ! H-H-t&H-H-l;(>|> ;`;T-I-Q*c-s&d-s=2#);R@V=v=L-M-z-A%2=x;h=2;A%$;1>*+'.~>o;G;W;[>Q;Q;Q;Q;Q;Q;Q;Q;! a ", +" & ! R-*>t;|> ; ;`#T-T-Q*c-2>s&s=>-3>q-8-V=S;$%h%w;V-c$A%2=d d :>$;z.*+'.^$7&4>W;5>Q;Q;Q;Q;Q;Q;Q;Q;Q;! x* ", +" - ! ;A;`#T-I-6>Q*c-s&s&d-s=2#2#8-8-V=S;$%~;h%z-7>K x;^;8>! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! Q;! ! ", +" - ! I-Q*c-c-R;s&s&F=J-e-2#q-8-9>V=S;=>=>w;z-c$A-! ! ! ! ! ! ! X;- = = * & % % a = a 7 ! ! ! ! ! ! ", +" a ! s&s&d-s=s=2#2#<-<-8-8-V=v=$%|;h%{;z-c$! ! ! ! ! 0>- s- - a>! ", +" & ! 2#2#2#);8-8-8-9>V=v=S;f-h%h%z-z-! ! ! ! ! q$- ", +" : ! 8-8-9>+;V=V=};$%|;7-h%->z-! ! ! ! ! & s- ", +" % ! K-K-$%$%$%|;h%z-b>r-c>! ! ! ! B : ", +" & ! h%w;h%M-z-z-c$c$! ! ! ! l.- ", +" * ! ;>1;c$c$c$A-! ! ! ! x*& ", +" = ! d>K K x;! ! ! ! % ", +" - ! N;e>! ! ! w = ", +" ; ! ! ! ! b = ", +" p;! ! f>a ", +" ! f>- ", +" s-: ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" "}; diff --git a/src/Mod/Surfaces/Icons/SliceIco.png b/src/Mod/Surfaces/Icons/SliceIco.png new file mode 100644 index 0000000000..c5f29a85c3 Binary files /dev/null and b/src/Mod/Surfaces/Icons/SliceIco.png differ diff --git a/src/Mod/Surfaces/Icons/SliceIco.xcf b/src/Mod/Surfaces/Icons/SliceIco.xcf new file mode 100644 index 0000000000..c6c0510f20 Binary files /dev/null and b/src/Mod/Surfaces/Icons/SliceIco.xcf differ diff --git a/src/Mod/Surfaces/Icons/SliceIco.xpm b/src/Mod/Surfaces/Icons/SliceIco.xpm new file mode 100644 index 0000000000..64a796a3fe --- /dev/null +++ b/src/Mod/Surfaces/Icons/SliceIco.xpm @@ -0,0 +1,865 @@ +/* XPM */ +static char * SliceIco_xpm[] = { +"128 128 734 2", +" c None", +". c #008F00", +"+ c #009100", +"@ c #008700", +"# c #007800", +"$ c #007700", +"% c #009900", +"& c #007B00", +"* c #007500", +"= c #007400", +"- c #007F00", +"; c #008D00", +"> c #008000", +", c #007900", +"' c #009F00", +") c #009000", +"! c #007D00", +"~ c #007600", +"{ c #008100", +"] c #008A00", +"^ c #008E00", +"/ c #009300", +"( c #009E00", +"_ c #00B200", +": c #00D600", +"< c #009400", +"[ c #00A100", +"} c #008800", +"| c #007A00", +"1 c #008300", +"2 c #00A500", +"3 c #00C000", +"4 c #00EA00", +"5 c #00FF00", +"6 c #009D00", +"7 c #007C00", +"8 c #008900", +"9 c #00E700", +"0 c #00FD00", +"a c #00FE00", +"b c #009C00", +"c c #00A700", +"d c #007300", +"e c #00A000", +"f c #00C200", +"g c #00F400", +"h c #00F700", +"i c #00FA00", +"j c #00A300", +"k c #007000", +"l c #00C100", +"m c #00DF00", +"n c #00E900", +"o c #00EF00", +"p c #008200", +"q c #008500", +"r c #007100", +"s c #007E00", +"t c #00AE00", +"u c #00CA00", +"v c #00D400", +"w c #00D700", +"x c #00DE00", +"y c #00E800", +"z c #00F600", +"A c #008C00", +"B c #008600", +"C c #007200", +"D c #008400", +"E c #00A900", +"F c #00BE00", +"G c #00C500", +"H c #00CC00", +"I c #00DA00", +"J c #00ED00", +"K c #009200", +"L c #00AD00", +"M c #00B700", +"N c #00C600", +"O c #00D800", +"P c #009800", +"Q c #00A800", +"R c #00BA00", +"S c #00D100", +"T c #00F200", +"U c #00B500", +"V c #00D500", +"W c #00FC00", +"X c #00EE00", +"Y c #00A200", +"Z c #00C900", +"` c #00EB00", +" . c #00F300", +".. c #00FB00", +"+. c #008B00", +"@. c #00E300", +"#. c #00F100", +"$. c #02FF02", +"%. c #03FF03", +"&. c #05F805", +"*. c #00BF00", +"=. c #05FF05", +"-. c #01FF01", +";. c #000000", +">. c #2DEC2D", +",. c #2DEC2C", +"'. c #2CEB2C", +"). c #2BEA2B", +"!. c #2AE92A", +"~. c #BDBDBD", +"{. c #BCBDBD", +"]. c #BCBCBC", +"^. c #BABBBA", +"/. c #FF0000", +"(. c #2AE82A", +"_. c #29E829", +":. c #C1C2C2", +"<. c #C1C1C1", +"[. c #C0C1C1", +"}. c #C0C0C0", +"|. c #BFC0C0", +"1. c #BFBFBF", +"2. c #BEBDBE", +"3. c #BCBDBC", +"4. c #BBBBBB", +"5. c #BABABA", +"6. c #2CEA2B", +"7. c #C3C3C3", +"8. c #C4C3C3", +"9. c #C3C3C4", +"0. c #C3C4C3", +"a. c #C3C2C3", +"b. c #C2C1C2", +"c. c #C1C1C2", +"d. c #BFC0BF", +"e. c #BEBEBF", +"f. c #BDBDBE", +"g. c #BDBCBC", +"h. c #BCBBBB", +"i. c #BABAB9", +"j. c #B9B9B9", +"k. c #2BEB2B", +"l. c #2BE92B", +"m. c #28E728", +"n. c #C2C2C3", +"o. c #C4C4C4", +"p. c #C5C5C5", +"q. c #C4C5C5", +"r. c #C5C4C4", +"s. c #BEBEBE", +"t. c #BDBEBE", +"u. c #BBBABA", +"v. c #B8B8B8", +"w. c #29E728", +"x. c #C2C2C2", +"y. c #C3C3C2", +"z. c #C5C6C6", +"A. c #C6C6C6", +"B. c #C7C6C6", +"C. c #C6C6C5", +"D. c #C6C5C6", +"E. c #C4C5C4", +"F. c #C3C4C4", +"G. c #C3C2C2", +"H. c #C1C0C0", +"I. c #C0BFBF", +"J. c #BDBCBD", +"K. c #BBBCBB", +"L. c #B8B8B9", +"M. c #B8B8B7", +"N. c #28E829", +"O. c #27E728", +"P. c #C2C2C1", +"Q. c #C2C3C2", +"R. c #C5C5C4", +"S. c #C7C7C7", +"T. c #C8C8C7", +"U. c #C6C6C7", +"V. c #C5C4C5", +"W. c #BFBFBE", +"X. c #BABBBB", +"Y. c #BAB9BA", +"Z. c #B8B7B8", +"`. c #B7B7B6", +" + c #2BEB2C", +".+ c #2AEA2A", +"++ c #27E627", +"@+ c #C1C1C0", +"#+ c #C9C8C9", +"$+ c #C9C9C9", +"%+ c #C9C9C8", +"&+ c #C8C9C9", +"*+ c #C8C8C8", +"=+ c #C7C6C7", +"-+ c #B7B7B7", +";+ c #B6B5B5", +">+ c #2CEA2C", +",+ c #C7C7C6", +"'+ c #C9CACA", +")+ c #CACBCB", +"!+ c #CACBCA", +"~+ c #CAC9CA", +"{+ c #C7C7C8", +"]+ c #BCBBBC", +"^+ c #BABABB", +"/+ c #B9B8B9", +"(+ c #B6B6B6", +"_+ c #B5B4B5", +":+ c #2AE929", +"<+ c #C0C0C1", +"[+ c #C8C9C8", +"}+ c #CACACA", +"|+ c #CBCBCB", +"1+ c #CCCCCC", +"2+ c #C9CAC9", +"3+ c #C9C8C8", +"4+ c #BFBEBE", +"5+ c #B5B5B4", +"6+ c #B4B4B3", +"7+ c #04F204", +"8+ c #CBCACB", +"9+ c #CDCECD", +"0+ c #CECDCE", +"a+ c #CDCDCD", +"b+ c #CBCBCC", +"c+ c #BBBBBA", +"d+ c #B7B6B6", +"e+ c #B5B4B4", +"f+ c #B3B3B3", +"g+ c #B2B2B2", +"h+ c #26E526", +"i+ c #C6C7C6", +"j+ c #CACACB", +"k+ c #CFCFCE", +"l+ c #C8C7C8", +"m+ c #BAB9B9", +"n+ c #B7B8B8", +"o+ c #B6B6B7", +"p+ c #B5B5B5", +"q+ c #B3B3B4", +"r+ c #B2B2B1", +"s+ c #29E929", +"t+ c #C4C4C3", +"u+ c #C9C9CA", +"v+ c #CECECE", +"w+ c #CBCCCC", +"x+ c #C2C1C1", +"y+ c #C0C1C0", +"z+ c #BEBEBD", +"A+ c #BCBCBB", +"B+ c #B7B8B7", +"C+ c #B6B7B6", +"D+ c #B4B5B4", +"E+ c #B0B1B0", +"F+ c #28E729", +"G+ c #C7C8C8", +"H+ c #CACAC9", +"I+ c #CBCCCB", +"J+ c #BFBEBF", +"K+ c #B4B4B4", +"L+ c #B3B4B3", +"M+ c #B0B0B0", +"N+ c #AEAFAF", +"O+ c #C5C5C6", +"P+ c #CBCACA", +"Q+ c #C6C5C5", +"R+ c #C2C3C3", +"S+ c #BEBFBE", +"T+ c #B1B2B1", +"U+ c #AFAEAF", +"V+ c #ADADAD", +"W+ c #2AE829", +"X+ c #25E425", +"Y+ c #B8B9B8", +"Z+ c #B5B6B5", +"`+ c #B1B1B1", +" @ c #AEAFAE", +".@ c #27E526", +"+@ c #26E525", +"@@ c #C8C7C7", +"#@ c #C7C8C7", +"$@ c #C5C6C5", +"%@ c #C4C4C5", +"&@ c #B9BAB9", +"*@ c #B6B7B7", +"=@ c #B0B0AF", +"-@ c #AEAEAE", +";@ c #ADADAC", +">@ c #ABACAB", +",@ c #27E527", +"'@ c #26E425", +")@ c #B9B9B8", +"!@ c #B1B0B1", +"~@ c #AFB0AF", +"{@ c #ADACAC", +"]@ c #ABAAAB", +"^@ c #28E627", +"/@ c #26E527", +"(@ c #C1C0C1", +"_@ c #B2B1B2", +":@ c #AFAFAF", +"<@ c #AEADAE", +"[@ c #ACACAC", +"}@ c #ABAAAA", +"|@ c #AAA9A9", +"1@ c #27E727", +"2@ c #25E325", +"3@ c #B8B9B9", +"4@ c #B7B7B8", +"5@ c #B3B3B2", +"6@ c #ADACAD", +"7@ c #AAAAAB", +"8@ c #A9A9A9", +"9@ c #A7A7A8", +"0@ c #24E324", +"a@ c #084808", +"b@ c #BDBDBC", +"c@ c #B5B5B6", +"d@ c #ACACAD", +"e@ c #ABABAB", +"f@ c #A9AAAA", +"g@ c #A8A8A8", +"h@ c #A7A7A6", +"i@ c #C0BFC0", +"j@ c #AFB0B0", +"k@ c #ABACAC", +"l@ c #AAAAAA", +"m@ c #A8A7A8", +"n@ c #A7A7A7", +"o@ c #A5A5A5", +"p@ c #BBBABB", +"q@ c #B9BABA", +"r@ c #ADAEAE", +"s@ c #A6A6A6", +"t@ c #A4A4A5", +"u@ c #BDBEBD", +"v@ c #B1B2B2", +"w@ c #B0AFB0", +"x@ c #AEAEAF", +"y@ c #A6A7A6", +"z@ c #A5A6A5", +"A@ c #A4A4A4", +"B@ c #25E526", +"C@ c #25E424", +"D@ c #23E224", +"E@ c #23E223", +"F@ c #B4B3B3", +"G@ c #AFAFAE", +"H@ c #AEADAD", +"I@ c #A9A8A8", +"J@ c #A7A8A7", +"K@ c #A4A5A5", +"L@ c #A3A3A3", +"M@ c #A2A2A3", +"N@ c #25E324", +"O@ c #04E804", +"P@ c #B9B8B8", +"Q@ c #B2B1B1", +"R@ c #ACABAB", +"S@ c #A5A4A4", +"T@ c #A2A3A3", +"U@ c #A2A2A1", +"V@ c #B9B9BA", +"W@ c #B1B0B0", +"X@ c #AAAAA9", +"Y@ c #A6A6A5", +"Z@ c #A5A5A4", +"`@ c #A1A1A1", +" # c #9FA0A0", +".# c #25E525", +"+# c #24E424", +"@# c #23E324", +"## c #23E122", +"$# c #B3B2B3", +"%# c #A9A9AA", +"&# c #A9A9A8", +"*# c #A8A7A7", +"=# c #A6A7A7", +"-# c #A2A2A2", +";# c #A1A0A0", +"># c #9F9F9F", +",# c #22E122", +"'# c #B1B1B0", +")# c #AFAFB0", +"!# c #ABABAA", +"~# c #A8A8A7", +"{# c #A7A6A6", +"]# c #A4A5A4", +"^# c #9F9FA0", +"/# c #9E9F9E", +"(# c #9D9D9D", +"_# c #23E123", +":# c #B2B2B3", +"<# c #A5A6A6", +"[# c #A5A4A5", +"}# c #A0A09F", +"|# c #9F9E9F", +"1# c #9C9D9C", +"2# c #24E325", +"3# c #24E223", +"4# c #23E222", +"5# c #B2B3B3", +"6# c #B1B1B2", +"7# c #AEAEAD", +"8# c #AAA9AA", +"9# c #A8A9A9", +"0# c #A4A4A3", +"a# c #A3A2A3", +"b# c #9D9E9E", +"c# c #9C9C9D", +"d# c #9C9B9B", +"e# c #21E021", +"f# c #AFAEAE", +"g# c #ABABAC", +"h# c #A3A4A4", +"i# c #A09F9F", +"j# c #9E9E9E", +"k# c #9C9C9C", +"l# c #9A9B9B", +"m# c #99999A", +"n# c #23E323", +"o# c #21E022", +"p# c #ADAEAD", +"q# c #ACADAD", +"r# c #AAABAA", +"s# c #A9A8A9", +"t# c #A7A8A8", +"u# c #9C9D9D", +"v# c #9B9B9B", +"w# c #9A999A", +"x# c #999898", +"y# c #24E224", +"z# c #AAABAB", +"A# c #A1A2A2", +"B# c #A0A1A0", +"C# c #9E9E9F", +"D# c #9D9E9D", +"E# c #9B9C9B", +"F# c #9A9B9A", +"G# c #999999", +"H# c #989898", +"I# c #22E222", +"J# c #22E021", +"K# c #20E020", +"L# c #ADADAE", +"M# c #ACADAC", +"N# c #A8A9A8", +"O# c #A2A3A2", +"P# c #A2A1A2", +"Q# c #A1A1A0", +"R# c #A0A0A0", +"S# c #9F9E9E", +"T# c #9E9E9D", +"U# c #9B9B9C", +"V# c #9A9A9A", +"W# c #979797", +"X# c #24E323", +"Y# c #20DF20", +"Z# c #ACABAC", +"`# c #A5A5A6", +" $ c #A09FA0", +".$ c #9D9C9D", +"+$ c #969696", +"@$ c #959595", +"#$ c #21DF21", +"$$ c #A4A3A4", +"%$ c #9FA09F", +"&$ c #9F9F9E", +"*$ c #9C9B9C", +"=$ c #969796", +"-$ c #959596", +";$ c #949494", +">$ c #A8A8A9", +",$ c #A3A3A2", +"'$ c #9E9D9D", +")$ c #9B9A9B", +"!$ c #999A9A", +"~$ c #979798", +"{$ c #939393", +"]$ c #1FDE1F", +"^$ c #A4A3A3", +"/$ c #A1A1A2", +"($ c #A0A1A1", +"_$ c #999998", +":$ c #989897", +"<$ c #929393", +"[$ c #22E022", +"}$ c #A6A5A5", +"|$ c #A1A2A1", +"1$ c #9D9D9E", +"2$ c #989797", +"3$ c #969695", +"4$ c #959495", +"5$ c #929293", +"6$ c #919291", +"7$ c #909190", +"8$ c #20DF21", +"9$ c #1FDF20", +"0$ c #A3A3A4", +"a$ c #9E9F9F", +"b$ c #999A99", +"c$ c #989998", +"d$ c #969697", +"e$ c #969596", +"f$ c #949594", +"g$ c #949393", +"h$ c #929392", +"i$ c #919191", +"j$ c #909090", +"k$ c #8F8F8F", +"l$ c #20E021", +"m$ c #A0A0A1", +"n$ c #9D9D9C", +"o$ c #959594", +"p$ c #949394", +"q$ c #939292", +"r$ c #8F9090", +"s$ c #8E8F8E", +"t$ c #21E121", +"u$ c #1FDD1F", +"v$ c #969595", +"w$ c #959494", +"x$ c #929292", +"y$ c #929192", +"z$ c #909191", +"A$ c #8F8F90", +"B$ c #8E8E8E", +"C$ c #8D8D8D", +"D$ c #20DE1F", +"E$ c #1EDD1E", +"F$ c #9C9C9B", +"G$ c #9B9B9A", +"H$ c #929191", +"I$ c #8F908F", +"J$ c #8E8E8F", +"K$ c #8C8C8C", +"L$ c #9A9A9B", +"M$ c #9A9A99", +"N$ c #979898", +"O$ c #979697", +"P$ c #949595", +"Q$ c #929291", +"R$ c #908F8F", +"S$ c #8E8E8D", +"T$ c #8C8D8C", +"U$ c #8B8B8B", +"V$ c #8A8A8A", +"W$ c #1EDE1F", +"X$ c #059A05", +"Y$ c #9D9C9C", +"Z$ c #989798", +"`$ c #959696", +" % c #939493", +".% c #919292", +"+% c #8A8B8A", +"@% c #898989", +"#% c #1FDF1F", +"$% c #1DDC1D", +"%% c #9B9C9C", +"&% c #949493", +"*% c #919090", +"=% c #8F8F8E", +"-% c #8C8C8D", +";% c #898988", +">% c #1FDE20", +",% c #1DDD1E", +"'% c #969797", +")% c #90908F", +"!% c #8D8D8E", +"~% c #89898A", +"{% c #888888", +"]% c #878787", +"^% c #1FDD1E", +"/% c #1EDD1D", +"(% c #017501", +"_% c #939494", +":% c #8E8D8D", +"<% c #8D8C8D", +"[% c #868686", +"}% c #1CDC1D", +"|% c #004C00", +"1% c #979796", +"2% c #8E8F8F", +"3% c #898A8A", +"4% c #898889", +"5% c #858585", +"6% c #1DDC1C", +"7% c #1CDB1C", +"8% c #959695", +"9% c #939293", +"0% c #919091", +"a% c #8C8B8C", +"b% c #8A8989", +"c% c #878788", +"d% c #848585", +"e% c #848484", +"f% c #838383", +"g% c #1EDC1D", +"h% c #8C8B8B", +"i% c #898888", +"j% c #878887", +"k% c #878686", +"l% c #858686", +"m% c #858484", +"n% c #848483", +"o% c #828283", +"p% c #828282", +"q% c #1EDC1E", +"r% c #1CDA1C", +"s% c #888889", +"t% c #868586", +"u% c #848485", +"v% c #838282", +"w% c #808180", +"x% c #1CDC1C", +"y% c #1BDA1B", +"z% c #020A02", +"A% c #8E8D8E", +"B% c #8D8D8C", +"C% c #8C8C8B", +"D% c #888788", +"E% c #818182", +"F% c #818080", +"G% c #808080", +"H% c #1BDB1B", +"I% c #1B901B", +"J% c #000600", +"K% c #898A89", +"L% c #858685", +"M% c #858584", +"N% c #828383", +"O% c #818281", +"P% c #7F807F", +"Q% c #7F7F7E", +"R% c #1BDB1C", +"S% c #8D8E8D", +"T% c #8B8B8A", +"U% c #868786", +"V% c #858586", +"W% c #818282", +"X% c #818181", +"Y% c #7F7F7F", +"Z% c #7F7E7E", +"`% c #7E7D7E", +" & c #1DDB1D", +".& c #1BDA1C", +"+& c #8D8C8C", +"@& c #8B8A8A", +"#& c #8A8A89", +"$& c #878786", +"%& c #838382", +"&& c #7E7E7E", +"*& c #7E7D7D", +"=& c #7C7C7D", +"-& c #8A8B8B", +";& c #888988", +">& c #888787", +",& c #868685", +"'& c #7E7E7F", +")& c #7D7E7E", +"!& c #7D7D7D", +"~& c #7C7C7C", +"{& c #7B7B7B", +"]& c #1CDB1B", +"^& c #878687", +"/& c #848384", +"(& c #808081", +"_& c #7D7D7C", +":& c #7C7C7B", +"<& c #7A797A", +"[& c #257225", +"}& c #868787", +"|& c #838484", +"1& c #828382", +"2& c #808181", +"3& c #807F7F", +"4& c #7E7F7E", +"5& c #7D7C7D", +"6& c #7A7B7B", +"7& c #797A7A", +"8& c #797979", +"9& c #848383", +"0& c #828181", +"a& c #818081", +"b& c #7C7D7D", +"c& c #7B7C7C", +"d& c #7A7A7A", +"e& c #79797A", +"f& c #787878", +"g& c #7D7D7E", +"h& c #7B7C7B", +"i& c #787979", +"j& c #828281", +"k& c #807F80", +"l& c #7B7B7A", +"m& c #04FD04", +"n& c #818180", +"o& c #7E7E7D", +"p& c #7D7C7C", +"q& c #7D7E7D", +"r& c #7F7E7F", +"s& c #7C7D7C", +"t& c #7C7B7C", +"u& c #7B7B7C", +"v& c #7C7B7B", +"w& c #7B7A7B", +"x& c #797978", +"y& c #797878", +"z& c #021902", +"A& c #00BD00", +"B& c #00CF00", +"C& c #009700", +"D& c #00D000", +"E& c #00DC00", +"F& c #00E500", +"G& c #00F500", +"H& c #00A400", +"I& c #00B400", +"J& c #00E400", +"K& c #00F900", +"L& c #00B100", +"M& c #00C400", +"N& c #009600", +"O& c #00E600", +"P& c #00B000", +"Q& c #00B800", +"R& c #00C300", +"S& c #00B300", +"T& c #009500", +"U& c #00E100", +"V& c #00BB00", +"W& c #00F800", +"X& c #009B00", +"Y& c #009A00", +" ", +" ", +" ", +" ", +" ", +" . + @ # $ # ", +" % . & * = = $ - ; > , ", +" ' ) ! ~ ~ $ & { ] ^ / ( _ : < ~ ", +" [ } , # # # | ! - 1 + 2 3 4 5 5 5 5 5 6 * ", +" [ } # , , , , # # 7 8 [ 3 9 0 a a a 5 5 5 5 5 5 b * ", +" c ^ 7 | & 7 & $ = d $ @ e f 4 g g h i a 5 5 5 5 5 5 5 5 5 5 b * ", +" j } , ! - - , = k k $ @ e l m 9 n o h 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" 1 7 p q 1 , r k d s / t u v w x y z 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" 8 A B | C r ~ D < E F G H I J 0 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" K K 1 ~ d C $ { . e L M N O J 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" P . ! * = = # > A P ' Q R S T 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" ( A , ~ ~ , 7 { } A + ' U V W 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" e B # # # , & ! s D < E G n a 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" ; , , # $ ! A 2 N X 0 0 0 a 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" A 7 Y Z ` T .z ..5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.+.@...5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.. g 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 $.%.&.*.*.*.*.*.*.*.*.*.*.*.=.-.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 $.;.;.;.;.;.;.;.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 -.;.;.;.;.;.;.;.;.;.;.;.;.*.>.,.'.'.'.).).).!.!.*.*.*.*.*.*.$.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 ;.;.;.;.;.;.;.;.;.;.~.{.].^././././.>.'.'.'.'.).).).!.!.(._._.*.*.*.*.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 ;.;.;.;.;.;.;.;.:.<.[.}.|.1.2.3.4.5././././.>.'.'.'.6.).).!.!.!._._._.*.*.*.*.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ ;.;.;.;.;.;.7.8.9.0.7.a.b.c.[.d.e.f.g.h.i.j./././.>.'.'.k.).).l.!.!.!._._.m.m.*.*.*.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" ;.;.;.;.;.n.0.o.o.p.p.q.r.o.8.a.b.<.1.s.t.].u.i.v./././.'.'.'.).).).!.!.!._._.w.m.m.*.*.*.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" ;.;.;.;.x.y.o.q.p.z.A.B.A.C.D.E.F.G.:.H.I.s.J.K.5.L.M./././.'.'.).).).!.!.!._._.N.m.m.O.*.*.*.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" ;.;.;.;.}.P.Q.8.R.C.B.S.S.T.S.S.U.C.V.o.x.<.}.W.~.g.X.Y.Z.`./././.'. +).)..+!.!._._._.m.m.O.++*.*.%.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" ;.;.;.s.I.@+x.9.o.A.S.T.#+$+$+%+&+*+=+D.R.7.x.<.d.t.{.4.i.j.-+;+/././.>+).)..+!.!._._._.m.m.m.++*.*.*.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" ;.;.;.;.W.}.P.7.o.C.,+*+$+'+)+)+!+~+$+{+,+p.o.n.c.}.s.~.]+^+/+Z.(+_+/././.).).).!.!.:+_._.m.m.m.++++*.*.*.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" ;.;.;.;.<+P.9.E.A.{+[+}+|+1+1+1+)+2+3+S.A.o.y.P.}.4+~.].^.j.v.(+5+6+/././.).).!.!.(._._.m.m.m.++++++*.*.7+5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" ;.;.;.x.o.q.B.*+$+8+1+9+0+a+b+}+$+T.A.o.8.x.}.1.t.].c+j.v.d+e+f+g+/././.).!.!.!._._.m.m.m.++++++h+*.*.5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" ;.;.x.0.p.i+*+2+j+1+0+k+a+1+}+$+l+A.p.7.:.H.1.~.].u.m+n+o+p+q+r+/././.).!.!.s+_._.w.m.m.++++++h+*.*.*.5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" ;.;.;.t+p.A.*+u+)+1+a+v+a+w+!+#+*+A.p.7.x+y+1.z+A+u.j.B+C+D+q+g+E+/././.!.!.!._._.F+m.m.++++++h+h+*.*.&.5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" ;.;.;.V.C.G+[+H+|+1+1+I+|+'+*+S.A.V.7.:.}.J+~.]+5.j.n+(+K+L+g+M+N+/././.!.(._._.m.m.m.++++++h+h+h+*.*.5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.;.;.;.O+S.*+$+}+P+)+j+'+&+G+i+Q+o.R+<.}.S+~.4.u.j.B+(+K+f+T+M+U+V+/./.!.W+_._.m.m.m.++++++h+h+X+*.*.*.5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ ;.;.R.A.=+T.#+$+$+$+[+T.S.Q+r.7.x.H.1.s.{.]+5.Y+-+Z+K+f+`+M+ @V+/././.!._._.m.m.m.++++.@h+h++@X+*.*.5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ ;.;.;.p.A.,+G+G+@@*+#@B.$@%@8.Q.x+}.S+f.].4.&@v.*@;+q+f+`+=@-@;@>@/././._._.m.m.m.++++,@h+h+'@X+*.*.*.5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.;.;.F.p.Q+D.A.U.,+A.p.R.o.y.x+H.d.s.~.]+5.)@M.(+p+f+g+!@~@-@{@]@/././._._.m.m.^@++++/@h+h+X+X+X+*.*.5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.;.;.;.9.o.o.p.p.r.V.o.8.Q.x.(@d.J+~.].^.m+v.`.Z+K+f+_@M+:@<@[@}@|@/././.N.m.m.1@++++h+h+h+X+X+2@*.*.*.5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 ;.;.x.a.7.7.9.8.7.n.x.<.H.|.S+f.].4.5.3@4@C+p+q+5@`+M+-@6@[@7@8@9@/./.m.m.m.++++++h+h+h+X+X+2@0@*.*.5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 a@;.;.<.x.b.x.x.P.b.@+}.1.S+t.b@K.5.j.v.`.c@K+f+g+M+:@-@d@e@f@g@h@/././.m.m.++++++h+h+X+X+X+X+0@*.*.*.5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 ;.;.|.}.@+}.[.<+i@|.W.s.t.3.K.5.m+L.-+(+_+f+5@`+j@-@V+k@l@8@m@n@o@/./.m.m.++++/@h+h+X+X+X+0@0@0@*.*.5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 ;.;.;.1.1.1.1.1.J+s.~.~.].4.p@q@L.-+(+p+K+f+_@E+:@r@[@e@l@g@n@s@t@/././.++++++h+h+h+X+X+X+0@0@0@*.*.*.5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 ;.;.t.s.t.t.u@~.b@].K.4.5.j.v.v.(+;+5+f+v@E+w@x@V+[@}@|@g@y@z@A@/././.++++++h+h+B@X+X+C@0@0@D@E@*.*.5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 ;.;.;.].].g.].A+h.c+5.m+/+v.-+C+Z+K+F@5@`+M+G@H@[@e@l@I@J@s@K@L@M@/./.++++,@h+h++@X+X+N@0@0@E@E@*.*.O@5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 ;.;.4.u.4.p@^.i.i.j.P@-+-+(+p+K+F@g+Q@M+:@r@;@R@7@8@g@n@o@S@T@U@/././.++h+h+h+X+X+X+0@0@0@E@E@E@*.*.5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 ;.;.j.V@j.j.)@Y+v.-+-+o+Z+e+K+f+g+T+W@:@-@V+k@e@X@g@n@Y@Z@L@M@`@ #/./.++h+h+.#X+X++#0@0@@#E@E@##*.*.-.5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 O@;.;.v.B+M.n+-+*@(+;+p+D+6+$#g+`+M+:@-@V+[@e@%#&#*#=#o@L@-#U@;#>#/./.h+h+h+X+X+X+0@0@0@E@E@E@,#*.*.*.5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 ;.;.C+(+(+(+(+c@p+K+L+f+g+T+'#)#:@-@H@d@!#l@&#~#{#Y@]#L@-#`@^#/#(#/./.h+h+X+X+X+0@0@0@E@E@_#,#,#*.*.5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 ;.;.;.p+p+e+K+K+q+f+:#r+`+E+M+N+-@V+[@e@l@8@g@n@<#[#L@-#`@}#|#(#1#/./.h+X+X+X+2#0@0@3#E@E@4#,#,#*.*.&.5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 $.;.;.L+F@q+$#5#g+6#Q@`+M+:@-@7#6@k@e@8#9#m@n@s@]#0#a#`@;#>#b#c#d#/./.X+X+X+N@0@0@0@E@E@E@,#,#,#e#*.*.5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 ;.;.g+v@v@`+`+'#E+w@:@f#7#V+[@g#e@l@&#g@n@s@o@h#L@-#;#i#j#(#k#l#m#/./.X+X+2#0@0@n#E@E@,#,#,#o#e#*.*.-.5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 ;.;.;.!@M+M+j@~@N+f#p#V+q#[@e@r#8#s#t#n@s@o@A@L@U@`@ #/#j#u#v#w#x#/./.X+2#0@0@y#E@E@E@,#,#,#e#e#*.*.*.5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 $.;.;.:@:@f#-@-@p#V+6@[@k@z#8@8@g@m@s@Y@K@h#L@A#B#^#C#D#k#E#F#G#H#/./.X+0@0@0@E@E@E@I#,#,#J#e#e#K#*.*.5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 ;.;.V+L#p#V+M#[@>@e@7@l@X@N#m@n@s@o@t@A@O#P#Q#R#S#T#1#U#V#G#H#W#/././.0@0@X#E@E@E@,#,#,#e#e#e#Y#*.*.$.5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 ;.;.[@[@Z#Z#>@e@z#%#|@8@g@n@{#s@`#S@L@O#-#Q# $C#T#.$k#V#m#x#W#+$@$/./.0@0@E@E@E@,#,#,#o#e#e##$Y#*.*.*.5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 &.;.;.e@7@l@X@8@9#N#t#n@n@s@<#t@$$L@O#`@B#%$&$j#(#*$v#m#x#H#=$-$;$/./.0@E@E@E@_#,#,#,#e#e#e#Y#Y#Y#*.*.5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 ;.;.8@8@8@>$g@9@n@=#s@Y@o@A@0#,$-#`@R#>#&$'$k#*$)$!$x#~$=$@$;${$/./.0@E@E@E@,#,#,#o#e#e#Y#Y#Y#]$*.*.-.5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 ;.;.n@9@n@{#h@y@z@`#]#A@^$L@O#/$($R#>#j#(#u#E#V#G#_$:$=$-$;${$<$/././.E@E@,#,#,#[$e#e#e#Y#Y#Y#]$*.*.*.5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 ;.;.;.s@s@<#}$o@t@A@^$L@-#|$`@R#%$|#j#1$k#d#F#G#G#2$+$3$4${$5$6$7$/./.E@_#,#,#,#e#e#e#8$Y#Y#9$]$]$*.*.5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 %.;.;.A@S@A@0#0$L@L@|$-#`@;# $>#a$(#.$k#v#V#b$c$W#d$e$f$g$h$i$j$k$/./.##,#,#,#e#e#e#l$Y#Y#Y#]$]$]$*.*.-.b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 ;.;.0$a#-#M@-#A#`@m$B#^#>#/#j#n$1#v#)$V#G#x#W#+$3$o$p$q$i$i$r$s$/./.,#,#,#t$e#e#e#Y#Y#Y#]$]$]$u$*.*.*.b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 ;.;.P#P#`@m$`@R# #>#>#j#'$(#k#v#v#F#m#G#H#W#+$v$w${$x$y$z$A$B$C$/./.,#,#[$e#e#e#K#Y#Y#D$]$]$]$E$E$*.*.b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 ;.;.;.R#R#^#%$&$S#j#(#.$u#F$v#G$V#G#H#W#d$3$@$;${$h$H$7$I$J$C$K$/././.,#e#e#e#8$Y#Y#Y#]$]$]$E$E$E$*.*.b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 %.;.;.&$a$j#T#j#(#c#k#E#v#L$M$G#x#N$O$+$-$P$p${$Q$i$j$R$B$S$T$U$V$/./.e#e#e#e#Y#Y#Y#]$]$]$W$E$E$E$*.*.X$* ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 ;.;.'$(#(#Y$F$*$v#F#F#b$G#c$Z$N$+$`$4$f$ %x$.%i$A$k$B$C$K$U$+%@%/./.e#e#l$Y#Y#Y##%]$]$W$E$E$E$$%$%*.= * ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 ;.;.%%E#E#v#L$L$V#G#_$_$Z$2$O$+$e$;$&%{$<$Q$*%I$=%B$C$-%U$V$@%;%/./.e#e#Y#Y#Y#>%]$]$]$E$E$E$,%$%$%*.= * ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 ;.;.V#V#!$!$G#_$H#H#Z$W#'%3$@$f$&%&%h$y$z$j$)%=%!%C$K$U$V$~%{%]%/./.e#Y#Y#Y#Y#]$]$]$^%E$E$/%$%$%$%*.= (% ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 ;.;.;.G#H#H#:$Z$W#W#+$-$@$P$_%{$<$x$H$i$j$k$B$:%<%K$U$V$;%{%]%[%/./.Y#Y#Y#Y#]$]$]$W$E$E$E$$%$%$%}%*.= |% ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 $.;.;.W#W#1%'%+$`$@$4$;$;${$x$x$Q$j$j$k$2%:%C$T$U$U$3%4%{%]%[%5%/./.Y#Y#Y#]$]$]$u$E$E$E$$%$%$%6%7%7%= |% ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 ;.;.`$-$8%@$o$;$&%{$<$9%x$i$0%j$A$s$B$C$<%a%U$V$b%{%c%]%[%d%e%f%/./.Y#]$]$]$^%E$E$E$g%$%$%$%7%7%7%= |% ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 ;.;.;$;$&% %{${$5$x$i$z$j$j$)%k$B$:%C$K$h%V$3%@%i%j%k%l%m%n%o%p%/./.]$]$]$]$E$E$E$q%$%$%$%7%7%7%r%= |% ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 ;.;.h$h$5$x$x$Q$i$0%7$j$k$J$B$C$C$K$K$U$V$b%s%{%]%[%t%u%e%v%p%w%/./.]$]$]$E$E$E$/%$%$%$%x%7%7%7%y%= |%z% ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 ;.;.y$H$i$i$j$j$r$k$=%J$A%!%B%K$C%U$V$b%4%{%D%[%[%5%e%f%o%E%F%G%/./.]$]$E$E$E$q%$%$%$%x%7%7%7%H%y%I%|%J% ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 ;.;.;.r$A$R$J$k$B$B$:%C$K$a%U$U$V$K%4%{%{%]%[%L%M%n%N%o%O%w%P%Q%/./.W$E$E$E$,%$%$%$%$%7%7%7%R%y%y%I%|%J% ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 $.;.;.2%B$B$B$S%C$B%K$h%U$T%V$K%@%i%c%]%U%V%5%e%f%o%W%X%G%Y%Z%`%/./.E$E$E$E$$%$%$% &7%7%7%.&y%y%y%I%|%J% ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.C$C$-%+&a%h%U$+%@&#&@%i%i%D%$&$&[%5%m%f%%&p%O%F%Y%Y%&&*&=&/./.E$E$q%$%$%$%6%7%7%7%.&y%y%y%y%I%|%J% ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.h%h%U$U$-&V$@%#&;&s%{%>&]%U%,&5%e%e%%&o%p%X%G%P%'&)&!&~&{&/./.E$$%$%$%$% &7%7%7%]&y%y%y%y%y%I%|%J% ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.V$3%~%@%@%@%;&{%]%^&[%[%L%5%e%/&f%N%W%X%(&G%Y%&&!&_&:&{&<&/./.,%$%$%$%x%7%7%7%R%y%y%y%y%y%y%I%[&J%;. ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.{%{%s%{%{%c%^&}&[%V%5%M%e%|&f%1&p%X%2&3&Y%4&`%5&~&{&6&7&8&/./.$%$%$%7%7%7%7%R%y%y%y%y%y%y%y%I%[&J%;. ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.]%$&k%}&[%[%L%5%5%e%|&9&f%p%E%0&a&G%Y%Q%&&!&b&c&{&d&e&f&f&/./.$%$%7%7%7%7%R%y%y%y%y%y%y%y%y%I%[&J%;. ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.[%t%L%5%M%d%e%|&f%f%1&p%X%X%G%G%Y%Q%&&g&!&~&h&d&7&i&;.;.;.;.;.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.= [&J%;. ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.M%e%|&|&n%f%f%%&j&O%X%a&G%k&Y%Q%*&*&b&~&{&l&;.;.;.;.;.;.;.;.;.*.*.*.*.*.7+m&O@*.*.*.*.*.*.*.= |%J%;. ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.f%f%1&p%p%X%X%n&n&G%G%Y%4&&&o&!&p&~&{&;.;.;.;.;.;.;.;.$.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 -.X$|%J%;. ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.X%X%X%2&G%G%G%k&Y%4&Q%)&!&!&~&~&;.;.;.;.;.;.;.$.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.G%G%k&P%Y%Y%Z%&&o&q&!&=&~&;.;.;.;.;.;.;.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.r&r&&&&&&&o&!&~&s&t&:&;.;.;.;.;.;.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.!&b&!&5&~&~&{&{&;.;.;.;.;.;.-.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.u&v&{&{&{&l&;.;.;.;.;.;.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.w&d&d&7&;.;.;.;.;.%.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.x&y&;.;.;.;.;.-.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.;.;.;.;.;.-.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.;.;.;.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 ;.;.;.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 z&;.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.^ #.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.) h 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" A D A&B&x T a 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" ; ~ r ! C&U D&O E&9 z 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" | > s # d k d > 6 f F&n J G&0 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" H&} , | & & # * d 7 ) I&J&z h K&0 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" e D # , , , , # s + L&E&5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" c K & # # , 7 > 1 A Y M&o 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" N&s $ * $ & 1 A K 6 U w 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" P ; & = = $ { . ' j t M&O&0 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" . ) > * C r # @ 6 P&Q&R&I g 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" } } s d k d s P S&Z D&x .5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" +.& > D { ~ r r s T&M v E&U&` i 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 b * ", +" 6 7 & - s # C k $ } 2 H 4 ` o z 0 5 5 5 5 5 5 5 5 5 5 b * ", +" H&@ # & & | $ * = - T&V&O&h W&i W 5 5 5 5 5 5 b * ", +" X&s , , , , , | 7 } j Z G&5 5 5 5 5 b * ", +" H&) & $ $ $ & > 1 8 Y&R F&5 ( * ", +" 6 } $ ~ * # p +.C&p , ", +" C&+ 7 = d ~ , ", +" ; ^ 1 ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" "}; diff --git a/src/Mod/Surfaces/InitGui.py b/src/Mod/Surfaces/InitGui.py new file mode 100644 index 0000000000..299866b7cd --- /dev/null +++ b/src/Mod/Surfaces/InitGui.py @@ -0,0 +1,41 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +class SurfWorkbench ( Workbench ): + """ @brief Workbench of Ship design module. Here toolbars & icons are append. """ + from surfUtils import Paths, Translator + import SurfGui + + Icon = Paths.iconsPath() + "/Ico.png" + MenuText = str(Translator.translate("Surface tools")) + ToolTip = str(Translator.translate("Surface tools")) + + def Initialize(self): + # ToolBar + list = ["Surf_IsoCurve", "Surf_SliceCurve", "Surf_Border", "Surf_Convert"] + self.appendToolbar("Surface tools",list) + + # Menu + list = ["Surf_IsoCurve", "Surf_SliceCurve", "Surf_Border", "Surf_Convert"] + self.appendMenu("Surface tools",list) +Gui.addWorkbench(SurfWorkbench()) diff --git a/src/Mod/Surfaces/Makefile.am b/src/Mod/Surfaces/Makefile.am new file mode 100644 index 0000000000..6557f97c06 --- /dev/null +++ b/src/Mod/Surfaces/Makefile.am @@ -0,0 +1,52 @@ +# Change data dir from default ($(prefix)/share) to actual dir +datadir = $(prefix)/Mod/Surfaces + +data_DATA = InitGui.py \ + SurfGui.py + +nobase_data_DATA = \ + Icons/BorderIco.png \ + Icons/BorderIco.xcf \ + Icons/BorderIco.xpm \ + Icons/ConvertIco.png \ + Icons/ConvertIco.xcf \ + Icons/ConvertTo4SidesIco.xpm \ + Icons/Ico.png \ + Icons/Ico.xcf \ + Icons/Ico.xpm \ + Icons/IsoCurveIco.png \ + Icons/IsoCurveIco.xcf \ + Icons/IsoCurveIco.xpm \ + Icons/SliceIco.png \ + Icons/SliceIco.xcf \ + Icons/SliceIco.xpm \ + surfBorder/__init__.py \ + surfConvert/__init__.py \ + surfConvert/Preview.py \ + surfConvert/TaskPanel.py \ + surfConvert/TaskPanel.ui \ + surfISOCurve/__init__.py \ + surfISOCurve/PointTracker.py \ + surfISOCurve/Preview.py \ + surfISOCurve/TaskPanel.py \ + surfISOCurve/TaskPanel.ui \ + surfSlice/__init__.py \ + surfSlice/PointTracker.py \ + surfSlice/Preview.py \ + surfSlice/TaskPanel.py \ + surfSlice/TaskPanel.ui \ + surfUtils/Geometry.py \ + surfUtils/__init__.py \ + surfUtils/Math.py \ + surfUtils/Paths.py \ + surfUtils/Translator.py + +CLEANFILES = $(BUILT_SOURCES) + +EXTRA_DIST = \ + $(data_DATA) \ + $(nobase_data_DATA) \ + CMakeLists.txt \ + README \ + surfaces.dox + diff --git a/src/Mod/Surfaces/README b/src/Mod/Surfaces/README new file mode 100644 index 0000000000..dba2de4ec1 --- /dev/null +++ b/src/Mod/Surfaces/README @@ -0,0 +1,11 @@ +* Authors +--------- + +Jose Luis Cercós Pita +Alicia Lapique + +* Introduction +-------------- + +Surfaces is a module to work with surfaces, providing GUI for tools implemented at python API, and more complex tools. + diff --git a/src/Mod/Surfaces/SurfGui.py b/src/Mod/Surfaces/SurfGui.py new file mode 100644 index 0000000000..615d90e222 --- /dev/null +++ b/src/Mod/Surfaces/SurfGui.py @@ -0,0 +1,78 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +from PyQt4 import QtCore, QtGui +import FreeCAD, FreeCADGui, os + +class IsoCurve: + def Activated(self): + import surfISOCurve + surfISOCurve.load() + + def GetResources(self): + from surfUtils import Paths, Translator + IconPath = Paths.iconsPath() + "/IsoCurveIco.png" + MenuText = str(Translator.translate('Get ISO curve')) + ToolTip = str(Translator.translate('Get ISO curve from surface')) + return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip} + +class SliceCurve: + def Activated(self): + import surfSlice + surfSlice.load() + + def GetResources(self): + from surfUtils import Paths, Translator + IconPath = Paths.iconsPath() + "/SliceIco.png" + MenuText = str(Translator.translate('Get surface slice')) + ToolTip = str(Translator.translate('Get surface intersection with coordinates planes')) + return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip} + +class Border: + def Activated(self): + import surfBorder + surfBorder.load() + + def GetResources(self): + from surfUtils import Paths, Translator + IconPath = Paths.iconsPath() + "/BorderIco.png" + MenuText = str(Translator.translate('Get border')) + ToolTip = str(Translator.translate('Get edges from objects')) + return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip} + +class Convert: + def Activated(self): + import surfConvert + surfConvert.load() + + def GetResources(self): + from surfUtils import Paths, Translator + IconPath = Paths.iconsPath() + "/ConvertIco.png" + MenuText = str(Translator.translate('Convert to 4 sides surface')) + ToolTip = str(Translator.translate('Convert a surface (or couple of them) into 4 sides surface')) + return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip} + +FreeCADGui.addCommand('Surf_IsoCurve', IsoCurve()) +FreeCADGui.addCommand('Surf_SliceCurve', SliceCurve()) +FreeCADGui.addCommand('Surf_Border', Border()) +FreeCADGui.addCommand('Surf_Convert', Convert()) diff --git a/src/Mod/Surfaces/surfBorder/__init__.py b/src/Mod/Surfaces/surfBorder/__init__.py new file mode 100644 index 0000000000..78c0107839 --- /dev/null +++ b/src/Mod/Surfaces/surfBorder/__init__.py @@ -0,0 +1,51 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +# FreeCAD modules +import FreeCAD +import FreeCADGui +from FreeCAD import Base +from FreeCAD import Part + +# Qt libraries +from PyQt4 import QtGui,QtCore + +# Main object +from surfUtils import Geometry, Translator + +def load(): + """ Loads the tool. Getting the border don't require any + option, so can be executed directly without any task panel. """ + edges = Geometry.getBorders() + if not edges: + wrn = Translator.translate("Can't get any edge from selected objects") + FreeCAD.Console.PrintWarning(wrn) + return + obj = edges[0] + for i in range(0,len(edges)): + obj = obj.oldFuse(edges[i]) + Part.show(obj) + objs = FreeCAD.ActiveDocument.Objects + obj = objs[len(objs)-1] + obj.Label = 'Border' + diff --git a/src/Mod/Surfaces/surfConvert/Preview.py b/src/Mod/Surfaces/surfConvert/Preview.py new file mode 100644 index 0000000000..faf8c7f64f --- /dev/null +++ b/src/Mod/Surfaces/surfConvert/Preview.py @@ -0,0 +1,82 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +# FreeCAD modules +import FreeCAD,FreeCADGui +from FreeCAD import Base +from FreeCAD import Part +# FreeCADShip modules +from surfUtils import Paths +from surfUtils import Geometry +from surfUtils import Math + +class Preview(object): + def __init__(self,U,V): + """ Constructor. + @param U Part::topoShape object that contains the U direction edge. + @param V Part::topoShape object that contains the V direction edge. + """ + self.objU = None + self.objV = None + self.U = U + self.V = V + self.buildObjs() + self.setProperties() + + def buildObjs(self): + """ Builds objects to show. + """ + Part.show(self.U) + objs = FreeCAD.ActiveDocument.Objects + self.objU = objs[len(objs)-1] + Part.show(self.V) + objs = FreeCAD.ActiveDocument.Objects + self.objV = objs[len(objs)-1] + + def setProperties(self): + """ Set colour of lines and width. + """ + self.objU.Label = 'U direction' + self.objV.Label = 'V direction' + # Get GUI objects instance + objU = FreeCADGui.ActiveDocument.getObject(self.objU.Name) + objV = FreeCADGui.ActiveDocument.getObject(self.objV.Name) + objU.LineColor = (0.0,0.0,1.0) + objU.LineWidth = 5.00 + objV.LineColor = (1.0,0.0,0.0) + objV.LineWidth = 5.00 + + def clean(self,Destroy=True): + """ Erase all sections from screen. + @param self Auto call object. + @param Destroy True if the object must be destroyed, False otherwise. + """ + if (not self.objU) or (not self.objV): + return + FreeCADGui.ActiveDocument.hide(self.objU.Name) + FreeCADGui.ActiveDocument.hide(self.objV.Name) + if Destroy: + FreeCAD.ActiveDocument.removeObject(self.objU.Name) + FreeCAD.ActiveDocument.removeObject(self.objV.Name) + self.objU=None + self.objV=None diff --git a/src/Mod/Surfaces/surfConvert/TaskPanel.py b/src/Mod/Surfaces/surfConvert/TaskPanel.py new file mode 100644 index 0000000000..172160e9d2 --- /dev/null +++ b/src/Mod/Surfaces/surfConvert/TaskPanel.py @@ -0,0 +1,637 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +# Standart libraries +import math +# Import FreeCAD modules +import FreeCAD as App +import FreeCADGui as Gui +# Import Qt libraries +from PyQt4 import QtGui,QtCore +# Import surface module utils +from surfUtils import Paths, Geometry, Math, Translator +# Import tool utils +import Preview + +class TaskPanel: + def __init__(self): + """ Class constructor, that loads the user interface and set + minimum data as empty values. + """ + self.ui = Paths.modulePath() + "/surfConvert/TaskPanel.ui" + self.objs = [] + self.edges = [] + self.faces = [] + self.surf = None + self.preview = None + + def accept(self): + """ Method called when accept button is clicked. + @return True if all gone right, False otherwise. + """ + if not self.surf: + return False + App.Part.show(self.surf.toShape()) + objs = App.ActiveDocument.Objects + obj = objs[len(objs)-1] + obj.Label = 'Surface' + self.preview.clean() + return True + + def reject(self): + """ Method called when cancel button is clicked. + @return True if all gone right, False otherwise. + """ + if self.preview : + self.preview.clean() + return True + + def clicked(self, index): + pass + + def open(self): + pass + + def needsFullSpace(self): + return True + + def isAllowedAlterSelection(self): + return False + + def isAllowedAlterView(self): + return True + + def isAllowedAlterDocument(self): + return False + + def helpRequested(self): + pass + + def setupUi(self): + """ Setups the user interface taking and storing all controls. + """ + mw = self.getMainWindow() + form = mw.findChild(QtGui.QWidget, "TaskPanel") + form.nU = form.findChild(QtGui.QSpinBox, "nU") + form.nV = form.findChild(QtGui.QSpinBox, "nV") + form.deg = form.findChild(QtGui.QSpinBox, "deg") + self.form = form + # Initial values + if self.initValues(): + return True + self.retranslateUi() + # Connect Signals and Slots + QtCore.QObject.connect(form.nU, QtCore.SIGNAL("valueChanged(int)"), self.onNUV) + QtCore.QObject.connect(form.nV, QtCore.SIGNAL("valueChanged(int)"), self.onNUV) + QtCore.QObject.connect(form.deg, QtCore.SIGNAL("valueChanged(int)"), self.onNUV) + return False + + def getMainWindow(self): + """ returns the main window """ + # using QtGui.qApp.activeWindow() isn't very reliable because if another + # widget than the mainwindow is active (e.g. a dialog) the wrong widget is + # returned + toplevel = QtGui.qApp.topLevelWidgets() + for i in toplevel: + if i.metaObject().className() == "Gui::MainWindow": + return i + raise Exception("No main window found") + + def initValues(self): + """ Setup initial values. """ + # Objects to work + self.objs = Gui.Selection.getSelection() + if not self.objs: + msg = Translator.translate("4 connected edges and at least 1 surface must be selected (Any object has been selected)") + App.Console.PrintError(msg) + return True + if len(self.objs) < 5: + msg = Translator.translate("4 connected edges and at least 1 surface must be selected (Less than 5 objects selected)") + App.Console.PrintError(msg) + return True + # Separate edge objects and face objects to work with them separately. + if self.getEdgesFaces(): + return True + # Ensure that closed edges given + if not self.isClosed(): + return True + # Sort edges (as connect chain) + if self.sortEdges(): + return True + # First surface draft + if self.getPoints(): + return True + if self.createSurface(): + return True + # On screen data + self.preview = Preview.Preview(self.edges[0],self.edges[1]) + msg = Translator.translate("Ready to work\n") + App.Console.PrintMessage(msg) + return False + + def retranslateUi(self): + """ Set user interface locale strings. + """ + self.form.setWindowTitle(Translator.translate("Convert to 4 side surface")) + nUString = Translator.translate("Points at U") + self.form.findChild(QtGui.QLabel, "nULabel").setText("" + nUString + "") + nVString = Translator.translate("Points at V2") + self.form.findChild(QtGui.QLabel, "nVLabel").setText("" + nVString + "") + self.form.findChild(QtGui.QLabel, "degLabel").setText(Translator.translate("Surface degree")) + + def onNUV(self, value): + """ Answer to nU points or nV points modification events. + @param value Changed value. + """ + if self.getPoints(): + return + if self.createSurface(): + return + self.form.deg.setMaximum(self.surf.MaxDegree) + + def getEdgesFaces(self): + """ Returns two arrays filled with the edges and faces selected. + @return True if error happens. False otherwise + """ + self.edges = [] + self.faces = [] + for i in range(0,len(self.objs)): + objFaces = Geometry.getFaces(self.objs[i]) + if not objFaces: + objEdges = Geometry.getEdges([self.objs[i]]) + if not objEdges: + msg = Translator.translate("4 connected edges and at least 1 surface must be selected (Any edge found)") + App.Console.PrintError(msg) + return True + for j in range(0, len(objEdges)): + self.edges.append(objEdges[j]) + else: + for j in range(0, len(objFaces)): + self.faces.append(objFaces[j]) + if len(self.edges) != 4: + msg = Translator.translate("4 connected edges and at least 1 surface must be selected (More/less edges not allowed)") + App.Console.PrintError(msg) + return True + return False + + def isClosed(self): + """ Returns if the edges objects are a closed curve. + @return True if a closed curve can be built with edge objects. + False otherwise + """ + edges = self.edges + for i in range(0,len(edges)): + edge = edges[i] + vertex1 = edge.Vertexes + count = [0,0] + for j in range(0,len(edges)): + if j== i: + continue + vertex2 = edges[j].Vertexes + for k in range(0,2): + if Math.isSameVertex(vertex1[0],vertex2[k]): + count[0] = count[0]+1 + if Math.isSameVertex(vertex1[1],vertex2[k]): + count[1] = count[1]+1 + if count != [1,1]: + msg = Translator.translate("4 Edges curve must be closed") + App.Console.PrintError(msg) + return False + return True + + def sortEdges(self): + """ Sort the edges by their connection points. Also gives if + an edge is ill oriented (thir connection point is the end + point, not the starting point), with True when is good oriented, + and False otherwise. + @return True if error happens. False otherwise + """ + edges = self.edges + self.edges = [edges[0]] + self.direction = [True] + Vertex = self.edges[0].Vertexes[1] + for i in range(0,len(edges)-1): + for j in range(0,len(edges)): + if self.edges[i] == edges[j]: + continue + Vertexes = edges[j].Vertexes + if Math.isSameVertex(Vertex,Vertexes[0]): + Vertex = Vertexes[1] + self.edges.append(edges[j]) + self.direction.append(True) + break + if Math.isSameVertex(Vertex,Vertexes[1]): + Vertex = Vertexes[0] + self.edges.append(edges[j]) + self.direction.append(False) + break + return False + + def getPoints(self): + """ Get points that will make the surface. + @return True if error happens. False otherwise. + """ + # Discretize the edges using nU,nV + if self.divideEdges(): + return True + if self.samplePoints(): + return True + if self.getSurfacePoints(): + return True + while self.redistributePointsU(): + continue + while self.redistributePointsV(): + continue + return False + + + def divideEdges(self): + """ Get points along the edges. This method only divide the + edges into nU/nV parametrically equidistant points. + @return True if error happens. False otherwise. + """ + # Get curves from edges + curves=[] + for i in range(0,len(self.edges)): + curves.append(self.edges[i].Curve) + # Get number of divisions at U,V + nU = self.form.nU.value() + nV = self.form.nV.value() + # Get points at U direction (length parameter will used) + vertexes = self.edges[0].Vertexes + u = curves[0].parameter(App.Base.Vector(vertexes[0].X, vertexes[0].Y, vertexes[0].Z)) + uEnd = curves[0].parameter(App.Base.Vector(vertexes[1].X, vertexes[1].Y, vertexes[1].Z)) + du = (uEnd - u) / (nU-1.0) + Points0=[] + for i in range(0, nU): + knots = curves[0].KnotSequence + point0 = curves[0].value(u) + Points0.append(point0) + u = u + du + vertexes = self.edges[2].Vertexes + u = curves[2].parameter(App.Base.Vector(vertexes[1].X, vertexes[1].Y, vertexes[1].Z)) + uEnd = curves[2].parameter(App.Base.Vector(vertexes[0].X, vertexes[0].Y, vertexes[0].Z)) + du = (uEnd - u) / (nU-1.0) + Points2=[] + for i in range(0, nU): + knots = curves[2].KnotSequence + point2 = curves[2].value(u) + Points2.append(point2) + u = u + du + # Get points at V direction (length parameter will used) + vertexes = self.edges[1].Vertexes + v = curves[1].parameter(App.Base.Vector(vertexes[0].X, vertexes[0].Y, vertexes[0].Z)) + vEnd = curves[1].parameter(App.Base.Vector(vertexes[1].X, vertexes[1].Y, vertexes[1].Z)) + dv = (vEnd - v) / (nV-1.0) + Points1=[] + for i in range(0, nV): + knots = curves[1].KnotSequence + point1 = curves[1].value(v) + Points1.append(point1) + v = v + dv + vertexes = self.edges[3].Vertexes + v = curves[3].parameter(App.Base.Vector(vertexes[1].X, vertexes[1].Y, vertexes[1].Z)) + vEnd = curves[3].parameter(App.Base.Vector(vertexes[0].X, vertexes[0].Y, vertexes[0].Z)) + dv = (vEnd - v) / (nV-1.0) + Points3=[] + for i in range(0, nV): + knots = curves[3].KnotSequence + point3 = curves[3].value(v) + Points3.append(point3) + v = v + dv + # Store points arrays + self.EdgePoints=[Points0,Points1,Points2,Points3] + # Ensure that is good oriented + for i in range(0,4): + if not self.direction[i]: + self.EdgePoints[i].reverse() + return False + + def samplePoints(self): + """ Builds a set of points between the edges points. The points + are a smooth interpolation between edges points in order to + project it over the surface. + @return True if error happens. False otherwise. + """ + # We will advance in V direction, getting point columns, so two + # points columns are knowed from U starting and end curves + startU = self.EdgePoints[0] + endU = self.EdgePoints[2] + endV = self.EdgePoints[1] + startV = self.EdgePoints[3] + self.sample = [startU] + # Take two guides from the starting and end U curves. All + # sample points will be interpolated with this guides + Guide0 = startU[len(startU)-1] - startU[0] + Length0 = Guide0.Length + Guide0.normalize() + Guide1 = endU[len(endU)-1] - endU[0] + Length1 = Guide1.Length + Guide1.normalize() + # Loop over columns + for i in range(1,len(startV)-1): + # Get the guide + Guide = endV[i] - startV[i] + Length = Guide.Length + Guide.normalize() + # Loop over points of the column + points = [] + points.append(startV[i]) + for j in range(1,len(startU)-1): + # Get deviation at starting U + v0 = (startU[j] - startU[0]).multiply(1.0 / Length0) - Guide0 + # Get deviation at ending U + v1 = (endU[j] - endU[0]).multiply(1.0 / Length1) - Guide1 + # Get factor + factor = float(i) / len(startV) + # Interpolate + v = (v0.multiply(1.0-factor) + v1.multiply(factor) + Guide).multiply(Length) + points.append(startV[i]+v) + points.append(endV[i]) + self.sample.append(points) + # Append last points column (end U curve) + self.sample.append(endU) + return False + + def getSurfacePoints(self): + """ Get the points of the surface. Here sample points will be + projected into the surface, getting another surface with nU,nV + knots. + @todo Support trimmed surfaces. + @return True if error happens. False otherwise. + """ + surf = self.faces[0].Surface + self.uv=[] + self.points=[] + self.surfacesID=[] + for j in range(0,len(self.sample)): + points=[] + uv=[] + surfacesID=[] + for k in range(0,len(self.sample[j])): + UV = surf.parameter(self.sample[j][k]) + umax = surf.UKnotSequence[len(surf.UKnotSequence)-1] + umin = surf.UKnotSequence[0] + vmax = surf.VKnotSequence[len(surf.VKnotSequence)-1] + vmin = surf.VKnotSequence[0] + uv.append([UV[0],UV[1]]) + uv[k][0] = max(min(uv[k][0],umax), umin) + uv[k][1] = max(min(uv[k][1],vmax), vmin) + point = surf.value(uv[k][0], uv[k][1]) + points.append(point) + surfacesID.append(0) + self.uv.append(uv) + self.points.append(points) + self.surfacesID.append(surfacesID) + + for i in range(1,len(self.faces)): + surf = self.faces[i].Surface + for j in range(0,len(self.sample)): + for k in range(0,len(self.sample[j])): + UV = surf.parameter(self.sample[j][k]) + uv = [UV[0],UV[1]] + UV = uv[:] + umax = surf.UKnotSequence[len(surf.UKnotSequence)-1] + umin = surf.UKnotSequence[0] + vmax = surf.VKnotSequence[len(surf.VKnotSequence)-1] + vmin = surf.VKnotSequence[0] + UV[0] = uv[0]/(surf.UKnotSequence[len(surf.UKnotSequence)-1]) + UV[1] = uv[1]/(surf.VKnotSequence[len(surf.VKnotSequence)-1]) + ru=abs(UV[0]-0.5) + rv=abs(UV[1]-0.5) + surf2 = self.faces[self.surfacesID[j][k]].Surface + UV2 = surf2.parameter(self.sample[j][k]) + uv2 = [UV2[0],UV2[1]] + UV2 = uv2[:] + umax2 = surf2.UKnotSequence[len(surf2.UKnotSequence)-1] + umin2 = surf2.UKnotSequence[0] + vmax2 = surf2.VKnotSequence[len(surf2.VKnotSequence)-1] + vmin2 = surf2.VKnotSequence[0] + UV2[0] = uv2[0]/(surf2.UKnotSequence[len(surf2.UKnotSequence)-1]) + UV2[1] = uv2[1]/(surf2.VKnotSequence[len(surf2.VKnotSequence)-1]) + ru2=abs(UV2[0]-0.5) + rv2=abs(UV2[1]-0.5) + point=surf.value(UV[0],UV[1]) + point2=surf2.value(UV2[0],UV2[1]) + dif= math.sqrt((point[0]-self.sample[j][k][0])**2+(point[1]-self.sample[j][k][1])**2+(point[2]-self.sample[j][k][2])**2) + dif2= math.sqrt((point2[0]-self.sample[j][k][0])**2+(point2[1]-self.sample[j][k][1])**2+(point2[2]-self.sample[j][k][2])**2) + nU = len(self.points) + nV = len(self.points[j]) + deltaU = 1/(2*nU) + deltaV = 1/(2*nV) + if ((ru < deltaU) and (rv < deltaV)): + uv[0] = max(min(uv[0],umax), umin) + uv[1] = max(min(uv[1],vmax), vmin) + self.uv[j][k]=uv + point = surf.value(uv[0], uv[1]) + self.points[j][k]=point + self.surfacesID[j][k] = i + elif (dif2 > dif): + uv[0] = max(min(uv[0],umax), umin) + uv[1] = max(min(uv[1],vmax), vmin) + self.uv[j][k]=uv + point = surf.value(uv[0], uv[1]) + self.points[j][k]=point + self.surfacesID[j][k] = i + return False + + def redistributePointsU(self): + """ Redistributes the points of the surface (U direction). + @return False if all points are right placed. True otherwise. + """ + #Redistribute columns + for i in range(0,len(self.points)): + sumdif=0.0 + difs=[] + # Compute distances between points + for j in range(1,len(self.points[i])): + vdif=self.points[i][j]-self.points[i][j-1] + dif=vdif.Length + sumdif=sumdif+dif + difs.append(dif) + # Loop over point distances + for k in range(0,len(difs)): + # If not the same surface for each point, UV + # redistribution is not valid, so 3D points must be + # edited (more effort and worst convergency). + if self.surfacesID[i][k] != self.surfacesID[i][k+1]: + if difs[k]>=(2*sumdif/len(difs)): + point1 = App.Base.Vector(0.0,0.0,0.0) + point1.x = self.points[i][k][0]+0.33*(self.points[i][k+1][0]-self.points[i][k][0]) + point1.y = self.points[i][k][1]+0.33*(self.points[i][k+1][1]-self.points[i][k][1]) + point1.z = self.points[i][k][2]+0.33*(self.points[i][k+1][2]-self.points[i][k][2]) + point2 = App.Base.Vector(0.0,0.0,0.0) + point2.x = self.points[i][k+1][0]-0.33*(self.points[i][k+1][0]-self.points[i][k][0]) + point2.y = self.points[i][k+1][1]-0.33*(self.points[i][k+1][1]-self.points[i][k][1]) + point2.z = self.points[i][k+1][2]-0.33*(self.points[i][k+1][2]-self.points[i][k][2]) + moved = False + if(k != 0): + self.points[i][k] = point1 + surf1 = self.faces[self.surfacesID[i][k]].Surface + uv = surf1.parameter(self.points[i][k]) + self.uv[i][k] = [uv[0], uv[1]] + self.points[i][k]=surf1.value(self.uv[i][k][0],self.uv[i][k][1]) + moved = True + if(k+1 != len(self.points[i])-1): + self.points[i][k+1] = point2 + surf2 = self.faces[self.surfacesID[i][k+1]].Surface + uv = surf2.parameter(self.points[i][k+1]) + self.uv[i][k+1] = [uv[0], uv[1]] + self.points[i][k+1]=surf2.value(self.uv[i][k+1][0],self.uv[i][k+1][1]) + moved = True + if moved: + return True + continue + # If same surface for each point, UV + # redistribution is possible, with better convergency + # and less computation effort. + if difs[k]>=(2*sumdif/len(difs)): + uv1 = [0.0,0.0] + uv1[0] = self.uv[i][k][0]+0.33*(self.uv[i][k+1][0]-self.uv[i][k][0]) + uv1[1] = self.uv[i][k][1]+0.33*(self.uv[i][k+1][1]-self.uv[i][k][1]) + uv2 = [0.0,0.0] + uv2[0] = self.uv[i][k+1][0]-0.33*(self.uv[i][k+1][0]-self.uv[i][k][0]) + uv2[1] = self.uv[i][k+1][1]-0.33*(self.uv[i][k+1][1]-self.uv[i][k][1]) + moved = False + if(k != 0): + self.uv[i][k] = uv1[:] + surf = self.faces[self.surfacesID[i][k]].Surface + self.points[i][k] = surf.value(self.uv[i][k][0], self.uv[i][k][1]) + moved = True + if(k+1 != len(self.points[i])-1): + self.uv[i][k+1] = uv2[:] + surf = self.faces[self.surfacesID[i][k+1]].Surface + self.points[i][k+1] = surf.value(self.uv[i][k+1][0], self.uv[i][k+1][1]) + if moved: + return True + return False + + def redistributePointsV(self): + """ Redistributes the points of the surface (V direction). + @return False if all points are right placed. True otherwise. + """ + #Redistribute rows + for i in range(0,len(self.points[0])): + sumdif=0 + difs=[] + # Compute distances between points + for j in range(1,len(self.points)): + vdif=self.points[j][i]-self.points[j-1][i] + dif=vdif.Length + sumdif=sumdif+dif + difs.append(dif) + # Loop over point distances + for k in range(0,len(difs)): + # If not the same surface for each point, UV + # redistribution is not valid, so 3D points must be + # edited (more effort and worst convergency). + if self.surfacesID[k][i] != self.surfacesID[k+1][i]: + if difs[k]>=(2*sumdif/len(difs)): + point1 = App.Base.Vector(0.0,0.0,0.0) + point1.x = self.points[k][i][0]+0.33*(self.points[k+1][i][0]-self.points[k][i][0]) + point1.y = self.points[k][i][1]+0.33*(self.points[k+1][i][1]-self.points[k][i][1]) + point1.z = self.points[k][i][2]+0.33*(self.points[k+1][i][2]-self.points[k][i][2]) + point2 = App.Base.Vector(0.0,0.0,0.0) + point2.x = self.points[k+1][i][0]-0.33*(self.points[k+1][i][0]-self.points[k][i][0]) + point2.y = self.points[k+1][i][1]-0.33*(self.points[k+1][i][1]-self.points[k][i][1]) + point2.z = self.points[k+1][i][2]-0.33*(self.points[k+1][i][2]-self.points[k][i][2]) + moved = False + if(k != 0): + self.points[k][i] = point1 + surf1 = self.faces[self.surfacesID[k][i]].Surface + uv = surf1.parameter(self.points[k][i]) + self.uv[k][i] = [uv[0], uv[1]] + self.points[k][i]=surf1.value(self.uv[k][i][0],self.uv[k][i][1]) + moved = True + if(k+1 != len(self.points)-1): + self.points[k+1][i] = point2 + surf2 = self.faces[self.surfacesID[k+1][i]].Surface + uv = surf2.parameter(self.points[k+1][i]) + self.uv[k+1][i] = [uv[0], uv[1]] + self.points[k+1][i]=surf2.value(self.uv[k+1][i][0],self.uv[k+1][i][1]) + moved = True + if moved: + return True + continue + # If same surface for each point, UV + # redistribution is possible, with better convergency + # and less computation effort. + if difs[k]>=(2*sumdif/len(difs)): + uv1 = [0.0,0.0] + uv1[0] = self.uv[k][i][0]+0.33*(self.uv[k+1][i][0]-self.uv[k][i][0]) + uv1[1] = self.uv[k][i][1]+0.33*(self.uv[k+1][i][1]-self.uv[k][i][1]) + uv2 = [0.0,0.0] + uv2[0] = self.uv[k+1][i][0]-0.33*(self.uv[k+1][i][0]-self.uv[k][i][0]) + uv2[1] = self.uv[k+1][i][1]-0.33*(self.uv[k+1][i][1]-self.uv[k][i][1]) + moved = False + if(k != 0): + self.uv[i][k] = uv1[:] + surf = self.faces[self.surfacesID[k][i]].Surface + self.points[k][i] = surf.value(self.uv[k][i][0], self.uv[k][i][1]) + moved = True + if(k+1 != len(self.points[i])-1): + self.uv[i][k+1] = uv2[:] + surf = self.faces[self.surfacesID[k+1][i]].Surface + self.points[k+1][i] = surf.value(self.uv[k+1][i][0], self.uv[k+1][i][1]) + if moved: + return True + return False + + def createSurface(self): + """ Generates the BSpline surface. + @return False if all gone right. True otherwise. + """ + # Create a (1 x 1) plane with (nU x nV) knots + self.surf = App.Part.BSplineSurface() + nU = len(self.points) + nV = len(self.points[0]) + for i in range(1,nU-1): + u = i / float(nU-1) + self.surf.insertUKnot(u,i,0.000001) + for i in range(1,nV-1): + v = i / float(nV-1) + self.surf.insertVKnot(v,i,0.000001) + # Reposition points of surface + for i in range(0,nU): + for j in range(0,nV): + u = i / float(nU-1) + v = j / float(nV-1) + point = self.points[i][j] + self.surf.movePoint(u,v,point,i+1,i+1,j+1,j+1) + # Reaconditionate surface + self.surf.exchangeUV() + deg = self.form.deg.value() + if (deg > 1) and (deg < self.surf.MaxDegree): + self.surf.increaseDegree(deg,deg) + return False + +def createTask(): + """ Create a task panel. + @return Task panel. + """ + panel = TaskPanel() + Gui.Control.showDialog(panel) + if panel.setupUi(): + Gui.Control.closeDialog(panel) + return None + return panel diff --git a/src/Mod/Surfaces/surfConvert/TaskPanel.ui b/src/Mod/Surfaces/surfConvert/TaskPanel.ui new file mode 100644 index 0000000000..73c66e916f --- /dev/null +++ b/src/Mod/Surfaces/surfConvert/TaskPanel.ui @@ -0,0 +1,107 @@ + + + TaskPanel + + + + 0 + 0 + 307 + 268 + + + + Convert surface + + + + + + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600; color:#0000ff;">Points at U</span></p></body></html> + + + + + + + 4 + + + 10000 + + + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600; color:#ff0000;">Points at V</span></p></body></html> + + + + + + + 4 + + + 10000 + + + + + + + Surface degree + + + + + + + 1 + + + 25 + + + 3 + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 15 + + + + + + + + + + + + + diff --git a/src/Mod/Surfaces/surfConvert/__init__.py b/src/Mod/Surfaces/surfConvert/__init__.py new file mode 100644 index 0000000000..7990a70ea1 --- /dev/null +++ b/src/Mod/Surfaces/surfConvert/__init__.py @@ -0,0 +1,37 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +# FreeCAD modules +import FreeCAD +import FreeCADGui + +# Qt libraries +from PyQt4 import QtGui,QtCore + +# Main object +import TaskPanel +from surfUtils import Paths + +def load(): + """ Loads the tool """ + TaskPanel.createTask() diff --git a/src/Mod/Surfaces/surfISOCurve/PointTracker.py b/src/Mod/Surfaces/surfISOCurve/PointTracker.py new file mode 100644 index 0000000000..44abf85a44 --- /dev/null +++ b/src/Mod/Surfaces/surfISOCurve/PointTracker.py @@ -0,0 +1,88 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +# FreeCAD modules +import FreeCAD as App +import FreeCADGui as Gui +import Draft +from FreeCAD import Vector +# Qt library +from PyQt4 import QtGui,QtCore +# Pivy +import pivy +from pivy import coin +from pivy.coin import * +# Module +from surfUtils import Paths +from surfUtils import Geometry +from surfISOCurve import Preview + +class PointTracker: + def __init__(self,view,task): + self.view=view + self.task=task + task.tracker = self + self.callback = self.view.addEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(),self.mouseButton) + self.callbackMove = self.view.addEventCallbackPivy(SoLocation2Event.getClassTypeId(),self.mouseMove) + + def mouseMove(self, event_cb): + event = event_cb.getEvent() + surf = self.task.surf + if not surf: + return + # Get screen point + screen = event.getPosition() + ctrl = event.wasCtrlDown() + # Get snapped object if exist, else the screen point will used + point = Gui.Snapper.snap(screen, ctrl) + + def mouseButton(self, event_cb): + event = event_cb.getEvent() + if event.getState() != coin.SoMouseButtonEvent.DOWN: + return + surf = self.task.surf + if not surf: + return + # Get screen point + screen = event.getPosition() + ctrl = event.wasCtrlDown() + # Get snapped object if exist, else the screen point will used + point = Gui.Snapper.snap(screen, ctrl) + if not point: + point = self.view.getPoint(screen[0],screen[1]) + # Get the nearest surface point parameter + uv = surf.parameter(point) + uv = [uv[0], uv[1]] + uv[0] = uv[0] / surf.UKnotSequence[len(surf.UKnotSequence)-1] + uv[0] = max(0, min(uv[0], 1)) + uv[1] = uv[1] / surf.VKnotSequence[len(surf.VKnotSequence)-1] + uv[1] = max(0, min(uv[1], 1)) + # Set it into the task panel + self.task.setUV(uv[self.task.dirId]) + + def close(self): + # Switch off snapping + Gui.Snapper.off() + # Remove callback (Program crash otherwise) + self.view.removeEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(),self.callback) + self.view.removeEventCallbackPivy(SoLocation2Event.getClassTypeId(),self.callbackMove) diff --git a/src/Mod/Surfaces/surfISOCurve/Preview.py b/src/Mod/Surfaces/surfISOCurve/Preview.py new file mode 100644 index 0000000000..2df6a982a7 --- /dev/null +++ b/src/Mod/Surfaces/surfISOCurve/Preview.py @@ -0,0 +1,125 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +# FreeCAD modules +import FreeCAD,FreeCADGui +from FreeCAD import Base +from FreeCAD import Part +# FreeCADShip modules +from surfUtils import Paths +from surfUtils import Geometry +from surfUtils import Math + +class Preview(object): + def __init__(self): + """ Constructor. + @param self Auto call object. + @note Start it as unactive + """ + self.obj = None + self.reinit() + + def reinit(self): + """ Reinitializate drawer. + @param self Auto call object. + """ + self.clean() + self.obj = None + + def update(self, surf, direction, uv): + """ Update the 3D view printing curve. + @param self Auto call object. + @param surf Surf where get the curve. + @param direction 0 if u direction, 1 if v. + @param uv Curve uv index, between 0 and 1. + @return Curve from object (as Part::Feature). + """ + # Errors + if not surf: + return None + # Get curve + if direction == 0: + curve = self.getU(surf, uv) + elif direction == 1: + curve = self.getV(surf, uv) + else: + return None + # Draw at 3D view + self.clean() + Part.show(curve.toShape()) + objs = FreeCAD.ActiveDocument.Objects + self.obj = objs[len(objs)-1] + self.obj.Label = 'surfISOCurve' + return self.obj + + def getU(self, surf, uv): + """ Get U curve from object. + @param self Auto call object. + @param surf Surf where get the curve. + @param uv Curve uv index, between 0 and 1. + @return Curve from object. + """ + # Errors + if not surf: + return None + if (uv < 0.0) or (uv > 1.0): + return None + # Get UV data + knots = surf.UKnotSequence + id0 = knots[0] + id1 = knots[len(knots)-1] + # Get curve + curve = surf.uIso(id0 + uv*(id1-id0)) + return curve + + def getV(self, surf, uv): + """ Get U curve from object. + @param self Auto call object. + @param surf Surf where get the curve. + @param uv Curve uv index, between 0 and 1. + @return Curve from object. + """ + # Errors + if not surf: + return None + if (uv < 0.0) or (uv > 1.0): + return None + # Get UV data + knots = surf.VKnotSequence + id0 = knots[0] + id1 = knots[len(knots)-1] + # Get curve + curve = surf.vIso(id0 + uv*(id1-id0)) + return curve + + def clean(self,Destroy=True): + """ Erase all sections from screen. + @param self Auto call object. + @param Destroy True if the object must be destroyed, False otherwise. + """ + if not self.obj: + return + FreeCADGui.ActiveDocument.hide(self.obj.Name) + if Destroy: + FreeCAD.ActiveDocument.removeObject(self.obj.Name) + self.obj=None diff --git a/src/Mod/Surfaces/surfISOCurve/TaskPanel.py b/src/Mod/Surfaces/surfISOCurve/TaskPanel.py new file mode 100644 index 0000000000..72dba46a02 --- /dev/null +++ b/src/Mod/Surfaces/surfISOCurve/TaskPanel.py @@ -0,0 +1,168 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +# FreeCAD modules +import FreeCAD as App +import FreeCADGui as Gui +# Qt library +from PyQt4 import QtGui,QtCore +# Module +from surfUtils import Paths, Geometry, Math, Translator +import Preview +import PointTracker + +class TaskPanel: + def __init__(self): + self.ui = Paths.modulePath() + "/surfISOCurve/TaskPanel.ui" + self.preview = Preview.Preview() + self.tracker = None + + def accept(self): + if not self.obj: + return True + self.obj.Label = 'ISOCurve' + self.close() + return True + + def reject(self): + self.preview.clean() + self.close() + return True + + def clicked(self, index): + pass + + def open(self): + pass + + def needsFullSpace(self): + return True + + def isAllowedAlterSelection(self): + return False + + def isAllowedAlterView(self): + return True + + def isAllowedAlterDocument(self): + return False + + def helpRequested(self): + pass + + def setupUi(self): + mw = self.getMainWindow() + form = mw.findChild(QtGui.QWidget, "TaskPanel") + form.direction = form.findChild(QtGui.QComboBox, "direction") + form.uv = form.findChild(QtGui.QSlider, "uv") + form.uvText = form.findChild(QtGui.QDoubleSpinBox, "uvText") + self.form = form + # Initial values + if self.initValues(): + return True + self.obj = self.preview.update(self.surf, self.dirId, self.uv) + self.retranslateUi() + # Connect Signals and Slots + QtCore.QObject.connect(form.direction, QtCore.SIGNAL("activated(QString)"), self.selectDirection) + QtCore.QObject.connect(form.uv, QtCore.SIGNAL("valueChanged(int)"), self.onUVSlider) + QtCore.QObject.connect(form.uvText, QtCore.SIGNAL("valueChanged(double)"), self.onUVText) + + def getMainWindow(self): + "returns the main window" + # using QtGui.qApp.activeWindow() isn't very reliable because if another + # widget than the mainwindow is active (e.g. a dialog) the wrong widget is + # returned + toplevel = QtGui.qApp.topLevelWidgets() + for i in toplevel: + if i.metaObject().className() == "Gui::MainWindow": + return i + raise Exception("No main window found") + + def selectDirection(self): + self.dirId = self.form.direction.currentIndex() + self.obj = self.preview.update(self.surf, self.dirId, self.uv) + if not self.obj: + msg = Translator.translate("Can't get the curve from selected object") + App.Console.PrintWarning(msg) + + def onUVSlider(self, value): + uv = self.form.uv.value() + uv = uv/(float(self.form.uv.maximum())) + self.setUV(uv) + + def onUVText(self, value): + uv = self.form.uvText.value() + self.setUV(uv) + + def setUV(self, uv): + self.form.uv.setValue(uv*self.form.uv.maximum()) + self.form.uvText.setValue(uv) + self.uv = uv + if not self.surf: + return + self.obj = self.preview.update(self.surf, self.dirId, self.uv) + if not self.obj: + msg = Translator.translate("Can't get the curve from selected object") + App.Console.PrintWarning(msg) + + def initValues(self): + self.obj = None + self.dirId = 0 + self.uv = 0 + self.surf = None + self.selObj = Geometry.getSelectedObj() + if not self.selObj: + msg = Translator.translate("1 surface must be selected (Any object has been selected)") + App.Console.PrintError(msg) + return True + self.surf = Geometry.getSelectedSurface() + if not self.surf: + msg = Translator.translate("1 surface must be selected (Any face object found into selected objects)") + App.Console.PrintError(msg) + return True + msg = Translator.translate("Ready to work") + App.Console.PrintMessage(msg) + return False + + def retranslateUi(self): + """ Set user interface locale strings. + """ + self.form.setWindowTitle(Translator.translate("Get surface ISO curve")) + self.form.direction.setItemText(0, Translator.translate("U direction")) + self.form.direction.setItemText(1, Translator.translate("V direction")) + + def close(self): + """ Destroy all dependant objects + @param self Main object. + """ + if self.tracker: + self.tracker.close() + +def createTask(): + panel = TaskPanel() + Gui.Control.showDialog(panel) + if panel.setupUi(): + Gui.Control.closeDialog(panel) + return None + tracker = PointTracker.PointTracker(Gui.ActiveDocument.ActiveView, panel) + return panel diff --git a/src/Mod/Surfaces/surfISOCurve/TaskPanel.ui b/src/Mod/Surfaces/surfISOCurve/TaskPanel.ui new file mode 100644 index 0000000000..68898bb05e --- /dev/null +++ b/src/Mod/Surfaces/surfISOCurve/TaskPanel.ui @@ -0,0 +1,65 @@ + + + TaskPanel + + + + 0 + 0 + 307 + 268 + + + + Get ISO curve from surface + + + + + + + U direction + + + + + V direction + + + + + + + + + + 0 + + + 10000 + + + Qt::Horizontal + + + + + + + 0.000000000000000 + + + 1.000000000000000 + + + 0.010000000000000 + + + + + + + + + + diff --git a/src/Mod/Surfaces/surfISOCurve/__init__.py b/src/Mod/Surfaces/surfISOCurve/__init__.py new file mode 100644 index 0000000000..7990a70ea1 --- /dev/null +++ b/src/Mod/Surfaces/surfISOCurve/__init__.py @@ -0,0 +1,37 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +# FreeCAD modules +import FreeCAD +import FreeCADGui + +# Qt libraries +from PyQt4 import QtGui,QtCore + +# Main object +import TaskPanel +from surfUtils import Paths + +def load(): + """ Loads the tool """ + TaskPanel.createTask() diff --git a/src/Mod/Surfaces/surfSlice/PointTracker.py b/src/Mod/Surfaces/surfSlice/PointTracker.py new file mode 100644 index 0000000000..6eb9d79251 --- /dev/null +++ b/src/Mod/Surfaces/surfSlice/PointTracker.py @@ -0,0 +1,71 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +# FreeCAD modules +import FreeCAD as App +import FreeCADGui as Gui +import Draft +from FreeCAD import Vector +# Qt library +from PyQt4 import QtGui,QtCore +# Pivy +import pivy +from pivy import coin +from pivy.coin import * +# Module +from surfUtils import Paths +from surfUtils import Geometry +from surfSlice import Preview + +class PointTracker: + def __init__(self,view,task): + self.view=view + self.task=task + task.tracker = self + self.callback = self.view.addEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(),self.mouseButton) + self.callbackMove = self.view.addEventCallbackPivy(SoLocation2Event.getClassTypeId(),self.mouseMove) + + def mouseMove(self, event_cb): + event = event_cb.getEvent() + # Get screen point + screen = event.getPosition() + ctrl = event.wasCtrlDown() + # Get snapped object if exist, else the screen point will used + point = Gui.Snapper.snap(screen, ctrl) + + def mouseButton(self, event_cb): + event = event_cb.getEvent() + if event.getState() != coin.SoMouseButtonEvent.DOWN: + return + # Get screen point + screen = event.getPosition() + ctrl = event.wasCtrlDown() + # Get snapped object if exist, else the screen point will used + point = Gui.Snapper.snap(screen, ctrl) + if not point: + point = self.view.getPoint(screen[0],screen[1]) + # Set it into the task panel + self.task.setR3(point) + + def close(self): + self.view.removeEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(),self.callback) diff --git a/src/Mod/Surfaces/surfSlice/Preview.py b/src/Mod/Surfaces/surfSlice/Preview.py new file mode 100644 index 0000000000..4191a6c52d --- /dev/null +++ b/src/Mod/Surfaces/surfSlice/Preview.py @@ -0,0 +1,100 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +# FreeCAD modules +import FreeCAD,FreeCADGui +from FreeCAD import Base +from FreeCAD import Part +# FreeCADShip modules +from surfUtils import Paths +from surfUtils import Geometry +from surfUtils import Math + +class Preview(object): + def __init__(self): + """ Constructor. + @param self Auto call object. + @note Start it as unactive + """ + self.objs = None + self.reinit() + + def reinit(self): + """ Reinitializate drawer. + @param self Auto call object. + """ + self.clean() + self.objs = None + + def update(self, surf, direction, r): + """ Update the 3D view printing curve. + @param surf Surf where get the curve. + @param direction Slice plane normal vector. + @param r Absolute position at Slice plane normal direction. + @return Curve from object (as Part::Feature). + """ + # Errors + if not surf: + return None + # Get curve + curve = self.getSlice(surf, direction, r) + # Draw at 3D view + self.clean() + self.objs = [] + for i in range(0,len(curve)): + for j in range(0,len(curve[i])): + Part.show(curve[i][j]) + objs = FreeCAD.ActiveDocument.Objects + objs[len(objs)-1].Label = 'surfSliceCurve' + self.objs.append(objs[len(objs)-1]) + return self.objs + + def getSlice(self, surf, direction, r): + """ Get surface slice. + @param surf Surf where get the curve. + @param direction Slice plane normal vector. + @param r Absolute position at Slice plane normal direction. + @return Curve from object. + """ + # Errors + if not surf: + return None + # Get curve + curve = [] + for i in range(0,len(surf)): + curve.append(surf[i].slice(direction, r)) + return curve + + def clean(self,Destroy=True): + """ Erase all sections from screen. + @param self Auto call object. + @param Destroy True if the object must be destroyed, False otherwise. + """ + if not self.objs: + return + for i in range(0,len(self.objs)): + FreeCADGui.ActiveDocument.hide(self.objs[i].Name) + if Destroy: + FreeCAD.ActiveDocument.removeObject(self.objs[i].Name) + if Destroy: + self.objs=None diff --git a/src/Mod/Surfaces/surfSlice/TaskPanel.py b/src/Mod/Surfaces/surfSlice/TaskPanel.py new file mode 100644 index 0000000000..bdaa7c7692 --- /dev/null +++ b/src/Mod/Surfaces/surfSlice/TaskPanel.py @@ -0,0 +1,217 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +# FreeCAD modules +import FreeCAD as App +import FreeCADGui as Gui +from FreeCAD import Vector +# Qt library +from PyQt4 import QtGui,QtCore +# Module +from surfUtils import Paths, Geometry, Math, Translator +import Preview +import PointTracker + +class TaskPanel: + def __init__(self): + self.ui = Paths.modulePath() + "/surfSlice/TaskPanel.ui" + self.preview = Preview.Preview() + self.tracker = None + self.dir = Vector(0.0,0.0,1.0) + + def accept(self): + if not self.objs: + return True + for i in range(0,len(self.objs)): + self.objs[i].Label = 'SliceCurve' + self.close() + return True + + def reject(self): + self.preview.clean() + self.close() + return True + + def clicked(self, index): + pass + + def open(self): + pass + + def needsFullSpace(self): + return True + + def isAllowedAlterSelection(self): + return False + + def isAllowedAlterView(self): + return True + + def isAllowedAlterDocument(self): + return False + + def helpRequested(self): + pass + + def setupUi(self): + mw = self.getMainWindow() + form = mw.findChild(QtGui.QWidget, "TaskPanel") + form.direction = form.findChild(QtGui.QComboBox, "direction") + form.r = form.findChild(QtGui.QSlider, "r") + form.rText = form.findChild(QtGui.QDoubleSpinBox, "rText") + self.form = form + # Initial values + if self.initValues(): + return True + self.retranslateUi() + self.form.rText.setMinimum(self.bound[4]) + self.form.rText.setMaximum(self.bound[5]) + self.setR(self.r) + # Connect Signals and Slots + QtCore.QObject.connect(form.direction, QtCore.SIGNAL("activated(QString)"), self.selectDirection) + QtCore.QObject.connect(form.r, QtCore.SIGNAL("valueChanged(int)"), self.onRSlider) + QtCore.QObject.connect(form.rText, QtCore.SIGNAL("valueChanged(double)"), self.onRText) + return False + + def getMainWindow(self): + "returns the main window" + # using QtGui.qApp.activeWindow() isn't very reliable because if another + # widget than the mainwindow is active (i.e. a dialog) the wrong widget is + # returned + toplevel = QtGui.qApp.topLevelWidgets() + for i in toplevel: + if i.metaObject().className() == "Gui::MainWindow": + return i + raise Exception("No main window found") + + def selectDirection(self): + if(self.form.direction.currentIndex() == 0): # XY + self.dir = Vector(0.0,0.0,1.0) + self.r = max(self.r, self.bound[4]) + self.r = min(self.r, self.bound[5]) + self.form.rText.setMinimum(self.bound[4]) + self.form.rText.setMaximum(self.bound[5]) + if(self.form.direction.currentIndex() == 1): # XZ + self.dir = Vector(0.0,1.0,0.0) + self.r = max(self.r, self.bound[2]) + self.r = min(self.r, self.bound[3]) + self.form.rText.setMinimum(self.bound[2]) + self.form.rText.setMaximum(self.bound[3]) + if(self.form.direction.currentIndex() == 2): # YZ + self.dir = Vector(1.0,0.0,0.0) + self.r = max(self.r, self.bound[0]) + self.r = min(self.r, self.bound[1]) + self.form.rText.setMinimum(self.bound[0]) + self.form.rText.setMaximum(self.bound[1]) + self.objs = self.preview.update(self.face, self.dir, self.r) + if not self.objs: + msg = Translator.translate("Can't calculate section") + App.Console.PrintWarning(msg) + + def onRSlider(self, value): + # Get r at [0,1] interval + r = self.form.r.value() + r = r/(float(self.form.r.maximum())) + # Expand to real interval + dr = self.form.rText.maximum()-self.form.rText.minimum() + r = r*dr + self.form.rText.minimum() + # Set value + self.setR(r) + + def onRText(self, value): + r = self.form.rText.value() + self.setR(r) + + def setR(self, r): + self.form.rText.setValue(r) + self.r = max(self.form.rText.minimum(), min(self.form.rText.maximum(), r)) + dr = self.form.rText.maximum()-self.form.rText.minimum() + r = (r - self.form.rText.minimum())/dr*self.form.r.maximum() + self.form.r.setValue(r) + if not self.face: + return + self.objs = self.preview.update(self.face, self.dir, self.r) + if not self.objs: + msg = Translator.translate("Can't calculate section") + App.Console.PrintWarning(msg) + + def setR3(self, r): + if(self.form.direction.currentIndex() == 0): # XY + self.setR(r.z) + if(self.form.direction.currentIndex() == 1): # XZ + self.setR(r.y) + if(self.form.direction.currentIndex() == 2): # YZ + self.setR(r.x) + + def initValues(self): + self.objs = None + self.dir = Vector(0.0,0.0,1.0) + self.r = 0.0 + self.face = None + self.selObj = Geometry.getSelectedObj() + if not self.selObj: + msg = Translator.translate("At least 1 surface must be selected (Any selected object)") + App.Console.PrintError(msg) + return True + self.face = Geometry.getFaces() + if not self.face: + msg = Translator.translate("At least 1 surface must be selected (Any face object found into selected objects)") + App.Console.PrintError(msg) + return True + bound = self.face[0].BoundBox + self.bound = [bound.XMin, bound.XMax, bound.YMin, bound.YMax, bound.ZMin, bound.ZMax] + for i in range(1,len(self.face)): + face = self.face[i] + bound = face.BoundBox + self.bound[0] = min(self.bound[0],bound.XMin) + self.bound[1] = min(self.bound[1],bound.XMax) + self.bound[2] = min(self.bound[2],bound.YMin) + self.bound[3] = min(self.bound[3],bound.YMax) + self.bound[4] = min(self.bound[4],bound.ZMin) + self.bound[5] = min(self.bound[5],bound.ZMax) + self.r = max(self.r, self.bound[4]) + self.r = min(self.r, self.bound[5]) + msg = Translator.translate("Ready to work") + App.Console.PrintMessage(msg) + return False + + def retranslateUi(self): + """ Set user interface locale strings. + """ + self.form.setWindowTitle(Translator.translate("Get surface slice")) + + def close(self): + """ Destroy all dependant objects + @param self Main object. + """ + if self.tracker: + self.tracker.close() + +def createTask(): + panel = TaskPanel() + Gui.Control.showDialog(panel) + if panel.setupUi(): + Gui.Control.closeDialog(panel) + return None + tracker = PointTracker.PointTracker(Gui.ActiveDocument.ActiveView, panel) + return panel diff --git a/src/Mod/Surfaces/surfSlice/TaskPanel.ui b/src/Mod/Surfaces/surfSlice/TaskPanel.ui new file mode 100644 index 0000000000..20b7029ef7 --- /dev/null +++ b/src/Mod/Surfaces/surfSlice/TaskPanel.ui @@ -0,0 +1,70 @@ + + + TaskPanel + + + + 0 + 0 + 307 + 268 + + + + Get surface slice + + + + + + + XY + + + + + XZ + + + + + YZ + + + + + + + + + + 0 + + + 10000 + + + Qt::Horizontal + + + + + + + 0.000000000000000 + + + 1.000000000000000 + + + 0.010000000000000 + + + + + + + + + + diff --git a/src/Mod/Surfaces/surfSlice/__init__.py b/src/Mod/Surfaces/surfSlice/__init__.py new file mode 100644 index 0000000000..7990a70ea1 --- /dev/null +++ b/src/Mod/Surfaces/surfSlice/__init__.py @@ -0,0 +1,37 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +# FreeCAD modules +import FreeCAD +import FreeCADGui + +# Qt libraries +from PyQt4 import QtGui,QtCore + +# Main object +import TaskPanel +from surfUtils import Paths + +def load(): + """ Loads the tool """ + TaskPanel.createTask() diff --git a/src/Mod/Surfaces/surfUtils/Geometry.py b/src/Mod/Surfaces/surfUtils/Geometry.py new file mode 100644 index 0000000000..687fe3cdd2 --- /dev/null +++ b/src/Mod/Surfaces/surfUtils/Geometry.py @@ -0,0 +1,174 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +import math +# FreeCAD +import FreeCAD, FreeCADGui +from FreeCAD import Base +from FreeCAD import Part +# FreeCAD ship +from surfUtils import Math + +def getSelectedObjs(): + """ Returns the selected objects list + @return Selected objects list + """ + return FreeCADGui.Selection.getSelection() + +def getSelectedObj(): + """ Returns the first element of the selected objects list + @return Selected object. None if errors happens + """ + objs = FreeCADGui.Selection.getSelection() + if not objs: + return None + if not len(objs): + return None + obj = objs[0] + return FreeCAD.ActiveDocument.getObject(obj.Name) + +def getEdges(objs=None): + """ Returns object edges (list of them) + @param objs Object to get the faces, none if selected + object may used. + @return Selected edges. None if errors happens + """ + edges = [] + if not objs: + objs = FreeCADGui.Selection.getSelection() + if not objs: + return None + for i in range(0, len(objs)): + obj = objs[i] + if obj.isDerivedFrom('Part::Feature'): + # get shape + shape = obj.Shape + if not shape: + return None + obj = shape + if not obj.isDerivedFrom('Part::TopoShape'): + return None + objEdges = obj.Edges + if not objEdges: + continue + for j in range(0, len(objEdges)): + edges.append(objEdges[j]) + return edges + +def getFaces(obj=None): + """ Returns object faces (list of them) + @param obj Object to get the faces, none if selected + object may used. + @return Selected faces. None if errors happens + """ + if not obj: + obj = getSelectedObj() + if not obj: + return None + if obj.isDerivedFrom('Part::Feature'): + # get shape + shape = obj.Shape + if not shape: + return None + obj = shape + if not obj.isDerivedFrom('Part::TopoShape'): + return None + # get face + faces = obj.Faces + if not faces: + return None + if not len(faces): + return None + return faces + +def getSelectedSurface(obj=None): + """ Returns object surface (the first of the list) + @param obj Object to get the surface, none if selected + object may used. + @return Selected surface. None if errors happens + """ + faces = getFaces(obj) + if not faces: + return None + obj = faces[0] + # get surface + surf = obj.Surface + if not surf: + return None + return surf + +def getBorders(objs=None): + """ Returns the borders of all selected objects as edge array + @param objs Objects to get the edges, none if selected objects + may used. + @return Borders + """ + edges = [] + if not objs: + objs = FreeCADGui.Selection.getSelection() + if not objs: + return None + if len(objs) < 1: + return None + for i in range(0, len(objs)): + faces = getFaces(objs[i]) + if not faces: + continue + for j in range(0, len(faces)): + edgList = faces[j].Edges + for k in range(0, len(edgList)): + edges.append(edgList[k]) + return edges + + +def lineFaceSection(line,surface): + """ Returns the point of section of a line with a face + @param line Line object, that can be a curve. + @param surface Surface object (must be a Part::Shape) + @return Section points array, [] if line don't cut surface + """ + # Get initial data + result = [] + vertexes = line.Vertexes + nVertex = len(vertexes) + # Perform the cut + section = line.cut(surface) + # Filter all old points + points = section.Vertexes + nPoint = len(points) + if nPoint <= nVertex: + # Any valid point + result + for i in range(0,nPoint): + disp = len(result) + flag = 0 + if not Math.isAprox(points[i].X,vertexes[i-disp].X,0.0001): + flag = flag+1 + if not Math.isAprox(points[i].Y,vertexes[i-disp].Y,0.0001): + flag = flag+1 + if not Math.isAprox(points[i].Z,vertexes[i-disp].Z,0.0001): + flag = flag+1 + if flag > 0: + result.append(points[i]) + return result + diff --git a/src/Mod/Surfaces/surfUtils/Math.py b/src/Mod/Surfaces/surfUtils/Math.py new file mode 100644 index 0000000000..f8c583bef6 --- /dev/null +++ b/src/Mod/Surfaces/surfUtils/Math.py @@ -0,0 +1,57 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +def isAprox(a,b,tol=0.0001): + """returns if a value is into (b-tol,b+tol) + @param a Value to compare. + @param b Center of valid interval + @param tol Radius of valid interval + @return True if a is into (b-tol,b+tol), False otherwise + """ + if (a < b+abs(tol)) and (a > b-abs(tol)): + return True + return False + +def isSamePoint(a,b,tol=0.0001): + """returns if two points are the same with a provided tolerance + @param a Point to compare. + @param b Reference point. + @param tol Radius of valid interval + @return True if twice point are the same, False otherwise + @note FreeCAD::Base::Vector types must be provided + """ + if isAprox(a.x,b.x,tol) and isAprox(a.y,b.y,tol) and isAprox(a.z,b.z,tol): + return True + return False + +def isSameVertex(a,b,tol=0.0001): + """returns if two points are the same with a provided tolerance + @param a Point to compare. + @param b Reference point. + @param tol Radius of valid interval + @return True if twice point are the same, False otherwise + @note FreeCAD::Part::Vertex types must be provided + """ + if isAprox(a.X,b.X,tol) and isAprox(a.Y,b.Y,tol) and isAprox(a.Z,b.Z,tol): + return True + return False diff --git a/src/Mod/Surfaces/surfUtils/Paths.py b/src/Mod/Surfaces/surfUtils/Paths.py new file mode 100644 index 0000000000..bd236d9e5a --- /dev/null +++ b/src/Mod/Surfaces/surfUtils/Paths.py @@ -0,0 +1,55 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +import FreeCAD, FreeCADGui, os + +def modulePath(): + """returns the current Ship design module path + @return Module path""" + path1 = FreeCAD.ConfigGet("AppHomePath") + "Mod/Surfaces" + path2 = FreeCAD.ConfigGet("UserAppData") + "Mod/Surfaces" + if os.path.exists(path2): + return path2 + else: + return path1 + +def iconsPath(): + """returns the current Ship design module icons path + @return Icons path""" + path = modulePath() + "/Icons" + return path + +def getPathFromFile(fileName): + """ Gets the directory path from a file name + @param fileName Name of the file + @return Directory path. + """ + if not fileName: + return '' + i = 1 + try: + while 1: + i = fileName.index("/", i+1) + except ValueError: + pass + return fileName[0:i+1] diff --git a/src/Mod/Surfaces/surfUtils/Translator.py b/src/Mod/Surfaces/surfUtils/Translator.py new file mode 100644 index 0000000000..917c02377f --- /dev/null +++ b/src/Mod/Surfaces/surfUtils/Translator.py @@ -0,0 +1,30 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +import FreeCAD, FreeCADGui, os +from PyQt4 import QtCore,QtGui + +def translate(text,context="surfaces"): + "convenience function for Qt translator" + return QtGui.QApplication.translate(context, text, None, + QtGui.QApplication.UnicodeUTF8) diff --git a/src/Mod/Surfaces/surfUtils/__init__.py b/src/Mod/Surfaces/surfUtils/__init__.py new file mode 100644 index 0000000000..00b200f140 --- /dev/null +++ b/src/Mod/Surfaces/surfUtils/__init__.py @@ -0,0 +1,25 @@ +#*************************************************************************** +#* * +#* Copyright (c) 2011, 2012 * +#* Jose Luis Cercos Pita * +#* * +#* This program is free software; you can redistribute it and/or modify * +#* it under the terms of the GNU Lesser General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * +#* the License, or (at your option) any later version. * +#* for detail see the LICENCE text file. * +#* * +#* This program is distributed in the hope that it will be useful, * +#* but WITHOUT ANY WARRANTY; without even the implied warranty of * +#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +#* GNU Library General Public License for more details. * +#* * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +#* * +#*************************************************************************** + +# Empty file to treat the folder as a package + diff --git a/src/Mod/Surfaces/surfaces.dox b/src/Mod/Surfaces/surfaces.dox new file mode 100644 index 0000000000..7d90bc1aec --- /dev/null +++ b/src/Mod/Surfaces/surfaces.dox @@ -0,0 +1,3 @@ +/** \defgroup SURFACES Surfaces + * \ingroup WORKBENCHES */ +