# File: karel.py
import atexit
import copy
import importlib
import inspect
import io
import math
import os
import random
import ssl
import sys
import threading
import time
import tokenize
import urllib.request
# Original file: pgl.py
"""
The pgl module implements the Portable Graphics Library (pgl) on top of
Tkinter, which is the most common graphics package for use with Python.
"""
# Version information
PGL_VERSION = 0.95
PGL_BUGFIX = 0
PGL_DATE = "20-Jun-21"
# Conditional imports
try:
import tkinter # pylint: disable=import-error
try:
import tkinter.font as tk_font # pylint: disable=import-error
except Exception:
import tk_font # pylint: disable=import-error
except Exception as e:
print('Could not load tkinter: ' + str(e))
try:
from PIL import ImageTk, Image # pylint: disable=import-error
_image_model = "PIL"
except Exception:
_image_model = "PhotoImage"
spyder_flag = False
try:
import spydercustomize as customize # pylint: disable=import-error
spyder_flag = True
except Exception:
try:
import sitecustomize as customize # pylint: disable=import-error
spyder_flag = True
except Exception:
pass
if spyder_flag:
try:
sys_clear_post_mortem = customize.clear_post_mortem
def patched_clear_post_mortem():
customize.clear_post_mortem = sys_clear_post_mortem
try:
if tkinter._root is not None:
tkinter._root.mainloop()
except Exception:
pass
sys_clear_post_mortem()
customize.clear_post_mortem = patched_clear_post_mortem
except Exception:
pass
# Class GWindow
class GWindow(object):
"""
This class represents a graphics window that can contain graphical
objects.
"""
# Public constants
DEFAULT_WIDTH = 500
DEFAULT_HEIGHT = 300
MIN_WAKEUP = 20
# Constructor: GWindow
def __init__(self, width=DEFAULT_WIDTH, height=DEFAULT_HEIGHT):
"""
The constructor takes either of the following forms:
GWindow()
GWindow(width, height)
If the dimensions are missing, the constructor creates a
GWindow with a default size.
"""
try:
tk = tkinter._root
tk.deiconify()
except AttributeError:
tk = tkinter.Tk()
tkinter._root = tk
self._window_width = width
self._window_height = height
self._tk = tk
self._tk.protocol("WM_DELETE_WINDOW", self._delete_window)
for w in tk.winfo_children():
w.destroy()
self._canvas = tkinter.Canvas(tk, width=width, height=height,
highlightthickness=0, background="white")
try:
self._canvas.pack()
except:
pass
if spyder_flag:
def cancel_topmost():
tk.attributes("-topmost", False)
tk.attributes("-topmost", True)
tk.focus_force()
self._canvas.after(0, cancel_topmost)
self._canvas.update()
self._images = { }
self._timers = [ ]
self._base = GCompound()
self._base._gw = self
self._event_manager = _EventManager(self)
self.set_window_title(_get_program_name())
self._event_loop_started = False
self._active = True
if not spyder_flag:
atexit.register(self._start_event_loop)
def __eq__(self, other):
if isinstance(other, GWindow):
return self._canvas is other._canvas
return False
# Public method: close
def close(self):
"""
Deletes the window from the screen.
"""
self._delete_window()
# Public method: event_loop
def event_loop(self):
"""
Waits for events to happen in the window.
"""
self._event_loop_started = True
tkinter._root.mainloop()
# Public method: request_focus
def request_focus(self):
"""
Asks the system to assign the keyboard focus to the window, which
brings it to the top and ensures that key events are delivered to
the window.
"""
tkinter._root.canvas.focus_set()
# Public method: clear
def clear(self):
"""
Clears the contents of the window.
"""
self._base.remove_all()
# Public method: get_width
def get_width(self):
"""
Returns the width of the graphics window in pixels.
"""
return self._window_width
# Public method: get_height
def get_height(self):
"""
Returns the height of the graphics window in pixels.
"""
return self._window_height
# Public method: add_event_listener
def add_event_listener(self, type, fn):
"""
Adds an event listener of the specified type to the window.
"""
self._event_manager.add_event_listener(type, fn)
# Public method: repaint
def repaint(self):
"""
Schedule a repaint on this window.
"""
pass
# Public method: set_window_title
def set_window_title(self, title):
"""
Sets the title of the graphics window.
"""
self._window_title = title
self._tk.title(title)
# Public method: get_window_title
def get_window_title(self):
"""
Returns the title of the graphics window.
"""
return self._window_title
# Public method: add
def add(self, gobj, x=None, y=None):
"""
Adds the GObject to the window. The first parameter
is the object to be added. The x and y
parameters are optional. If they are supplied, the location of
the object is set to (x, y).
"""
self._base.add(gobj, x, y)
# Public method: remove
def remove(self, gobj):
"""
Removes the object from the window.
"""
self._base.remove(gobj)
# Public method: get_element_at
def get_element_at(self, x, y):
"""
Returns the topmost GObject containing the
point (x, y), or None if no such object exists.
"""
return self._base.get_element_at(x, y)
# Public method: create_timer
def create_timer(self, fn, delay):
"""
Creates a new timer object that calls fn after the specified
delay, which is measured in milliseconds. The timer must be
started by calling the start method.
"""
return GTimer(self, fn, delay)
# Public method: set_timeout
def set_timeout(self, fn, delay):
"""
Creates and starts a one-shot timer that calls fn after the
specified delay, which is measured in milliseconds. The
set_timeout method returns the GTimer object.
"""
timer = GTimer(self, fn, delay)
timer.start()
return timer
# Public method: set_interval
def set_interval(self, fn, delay):
"""
Creates and starts an interval timer that calls fn after the
specified delay, which is measured in milliseconds. The
set_interval method returns the GTimer object.
"""
timer = GTimer(self, fn, delay)
timer.set_repeats(True)
timer.start()
return timer
# Public method: pause
def pause(self, delay):
"""
Pauses the current thread for the specified delay, which is
measured in milliseconds. The pause method periodically checks
the event queue to update the contents of the window.
"""
n_cycles = delay // GWindow.MIN_WAKEUP
for i in range(n_cycles): # pylint: disable=unused-variable
self._tk.update_idletasks()
self._tk.update()
time.sleep(delay / n_cycles / 1000)
# Public static method: exit
@staticmethod
def exit():
"""
Closes all graphics windows and exits from the application without
waiting for any additional user interaction.
"""
sys.exit()
# Public static method: get_program_name
@staticmethod
def get_program_name():
"""
Returns the name of this program.
"""
return _get_program_name()
# Public static method: get_screen_width
@staticmethod
def get_screen_width():
"""
Returns the width of the entire display screen.
"""
return _get_screen_width()
# Public static method: get_screen_height
def get_screen_height():
"""
Returns the height of the entire display screen.
"""
return _get_screen_height()
# Public static method: convert_color_to_rgb
def convert_color_to_rgb(color_name):
"""
Converts a color name into an integer that encodes the
red, green, and blue components of the color.
"""
return _convert_color_to_rgb(color_name)
# Public static method: convert_rgb_to_color
@staticmethod
def convert_rgb_to_color(rgb):
"""
Converts an rgb value into a name in the form "#rrggbb".
Each of the rr, gg, and bb
values are two-digit hexadecimal numbers indicating the intensity
of that component.
"""
return _convert_rgb_to_color(rgb)
# Private method: _delete_window
def _delete_window(self):
"""
Closes the window and exits from the event loop.
"""
try:
self._active = False
try:
for timer in self._timers:
timer.stop()
except:
pass
tkinter._root.destroy()
del tkinter._root
except:
pass
# Private method: _start_event_loop
def _start_event_loop(self):
"""
Starts the event loop if it wasn't run explicitly.
"""
if not self._event_loop_started:
self.event_loop()
# Private method: _rebuild
def _rebuild(self):
"""
Rebuilds the tkinter data structure for the window. This
operation is triggered if a global update is necessary.
"""
self._canvas.delete("all")
self._base._install(self, _GTransform())
# Define camel-case names
eventLoop = event_loop
requestFocus = request_focus
getWidth = get_width
getHeight = get_height
addEventListener = add_event_listener
setWindowTitle = set_window_title
getWindowTitle = get_window_title
getElementAt = get_element_at
createTimer = create_timer
setTimeout = set_timeout
setInterval = set_interval
getProgramName = get_program_name
getScreenWidth = get_screen_width
getScreenHeight = get_screen_height
convertColorToRGB = convert_color_to_rgb
convertRGBToColor = convert_rgb_to_color
# Allow British spelling
convert_colour_to_rgb = convert_color_to_rgb
convert_rgb_to_colour = convert_rgb_to_color
convertColourToRGB = convert_color_to_rgb
convertRGBToColour = convert_rgb_to_color
# Class: GObject
class GObject(object):
"""
This class is the common superclass of all graphical objects that can
be displayed on a graphical window. For examples illustrating the use
of the GObject class, see the descriptions of the
individual subclasses.
"""
# Constructor: GObject
def __init__(self):
"""
Creates a new GObject. The constructor is called
only by subclasses.
"""
self._x = 0.0
self._y = 0.0
self._sf = 1
self._angle = 0
self._color = "Black"
self._line_width = 1.0
self._visible = True
self._parent = None
self._tkid = None
self._gw = None
self._ctm_base = _GTransform()
# Public method: get_x
def get_x(self):
"""
Returns the x-coordinate of the object.
"""
return self._x
# Public method: get_y
def get_y(self):
"""
Returns the y-coordinate of the object.
"""
return self._y
# Public method: get_location
def get_location(self):
"""
Returns the location of this object as a GPoint.
"""
return GPoint(self._x, self._y)
# Public method: set_location
def set_location(self, x, y):
"""
Sets the location of this object to the specified point.
"""
if isinstance(x, GPoint):
x, y = x.get_x(), x.get_y()
elif isinstance(x, dict):
x, y = x.x, x.y
self._x = x
self._y = y
self._update_location()
# Public method: move
def move(self, dx, dy):
"""
Moves the object on the screen using the displacements
dx and dy.
"""
self.set_location(self._x + dx, self._y + dy)
# Public method: move_polar
def move_polar(self, r, theta):
"""
Moves the object on the screen the distance r in the
direction theta.
"""
dx = r * math.cos(math.radians(theta))
dy = -r * math.sin(math.radians(theta))
self.move(dx, dy)
# Public method: get_width
def get_width(self):
"""
Returns the width of this object, which is defined to be the width of
the bounding box.
"""
return self.get_bounds().get_width()
# Public method: get_height
def get_height(self):
"""
Returns the height of this object, which is defined to be the height
of the bounding box.
"""
return self.get_bounds().get_height()
# Public method: get_size
def get_size(self):
"""
Returns the size of the object as a GDimension.
"""
bounds = self.get_bounds()
return GDimension(bounds.get_width(), bounds.get_height())
# Public method: set_line_width
def set_line_width(self, line_width):
"""
Sets the width of the line used to draw this object.
"""
self._line_width = line_width
self._update_properties(width=line_width)
# Public method: get_line_width
def get_line_width(self):
"""
Returns the width of the line used to draw this object.
"""
return self._line_width
# Public method: set_color
def set_color(self, color):
"""
Sets the color used to display this object. The color parameter is
usually one of the CSS color names. The color can also be specified
as a string in the form "#rrggbb" where rr,
gg, and bb are pairs of hexadecimal digits
indicating the red, green, and blue components of the color.
"""
rgb = _convert_color_to_rgb(color)
self._color = _convert_rgb_to_color(rgb)
self._update_color()
# Public method: get_color
def get_color(self):
"""
Returns the current color as a string in the form
"#rrggbb". In this string, the values rr,
gg, and bb are two-digit hexadecimal
values representing the red, green, and blue components.
"""
return self._color
# Public method: scale
def scale(self, sf):
"""
Scales the object by the specified scale factor.
"""
raise Exception("Not yet implemented")
# Public method: rotate
def rotate(self, theta):
"""
Transforms the object by rotating it theta degrees counterclockwise
around its origin.
"""
self._angle += theta
self._update_rotation()
# Public method: set_visible
def set_visible(self, flag):
"""
Sets whether this object is visible.
"""
self._visible = flag
self._update_visible()
# Public method: is_visible
def is_visible(self):
"""
Returns true if this object is visible.
"""
return self._visible
# Public method: send_forward
def send_forward(self):
"""
Moves this object one step toward the front in the z dimension.
If it was already at the front of the stack, nothing happens.
"""
parent = self.get_parent()
if parent is not None:
parent._send_forward(self)
# Public method: send_to_front
def send_to_front(self):
"""
Moves this object to the front of the display in the z dimension.
By moving it to the front, this object will appear to be on top of the
other graphical objects on the display and may hide any objects that
are further back.
"""
parent = self.get_parent()
if parent is not None:
parent._send_to_front(self)
# Public method: send_backward
def send_backward(self):
"""
Moves this object one step toward the back in the z dimension.
If it was already at the back of the stack, nothing happens.
"""
parent = self.get_parent()
if parent is not None:
parent._send_backward(self)
# Public method: send_to_back
def send_to_back(self):
"""
Moves this object to the back of the display in the z dimension.
By moving it to the back, this object will appear to be behind
the other graphical objects on the display and may be obscured
by other objects in front.
"""
parent = self.get_parent()
if parent is not None:
parent._send_to_back(self)
# Public method: contains
def contains(self, x, y):
"""
Returns true if the specified point is inside the object.
"""
if isinstance(x, GPoint):
x, y = x.get_x(), x.get_y()
elif isinstance(x, dict):
x, y = x.x, x.y
bounds = self.get_bounds()
if bounds is None:
return False
return bounds.contains(x, y)
# Public method: get_parent
def get_parent(self):
"""
Returns a pointer to the GCompound that contains this
object. Every GWindow is initialized to contain a
single GCompound that is aligned with the window.
Adding objects to the window adds them to that GCompound,
which means that every object you add to the window has a parent.
Calling get_parent on the top-level GCompound
returns None.
"""
return self._parent
# Abstract method: get_type
def get_type(self):
"""
Returns the concrete type of the object as a string, as in
"GOval" or "GRect".
"""
raise Exception("get_type is not defined in the GObject class")
# Abstract method: get_bounds
def get_bounds(self):
"""
Returns the bounding box of this object, which is defined to be the
smallest rectangle that covers everything drawn by the figure. The
coordinates of this rectangle do not necessarily match the location
returned by get_location. Given a GLabel
object, for example, get_location returns the
coordinates of the point on the baseline at which the string begins.
The get_bounds method, by contrast, returns a rectangle
that covers the entire window area occupied by the string.
"""
raise Exception("get_bounds is not defined in the GObject class")
# Protected method: _update_properties
def _update_properties(self, **options):
"""
Updates the specified properties of the object, if it is installed
in a window.
"""
gw = self._get_window()
if gw is None:
return
tkc = gw._canvas
tkc.itemconfig(self._tkid, **options)
# Protected method: _update_location
def _update_location(self):
"""
Updates the location for this object from the stored x and y
values. Some subclasses need to override this method.
"""
gw = self._get_window()
if gw is None:
return
tkc = gw._canvas
coords = tkc.coords(self._tkid)
offx = 0
offy = 0
gobj = self.get_parent()
while gobj is not None:
offx += gobj._x
offy += gobj._y
gobj = gobj.get_parent()
dx = (self._x + offx) - coords[0]
dy = (self._y + offy) - coords[1]
tkc.move(self._tkid, dx, dy)
# Protected method: _update_color
def _update_color(self):
"""
Updates the color properties. Some subclasses need to override
this method.
"""
self._update_properties(fill=self._color)
# Protected method: _update_visible
def _update_visible(self):
"""
Updates the visible property.
"""
if self._visible:
self._update_properties(state=tkinter.NORMAL)
else:
self._update_properties(state=tkinter.HIDDEN)
# Protected method: _update_rotation
def _update_rotation(self):
"""
Updates the rotation angle for this object. Subclasses that
support rotation need to override this method.
"""
raise Exception("Rotation not yet implemented for this class")
# Private method: _get_window
def _get_window(self):
"""
Returns the GWindow in which this GObject
is installed. If the object is not installed in a window, this
method returns None.
"""
gobj = self
while gobj._parent is not None:
gobj = gobj._parent
return gobj._gw
# Private abstract method: _install
def _install(self, target, ctm):
"""
Installs the object in the target, creating any tkinter objects
that are necessary.
"""
raise Exception("_install is not defined in the GObject class")
# Define camel-case names
getX = get_x
getY = get_y
getLocation = get_location
setLocation = set_location
movePolar = move_polar
getWidth = get_width
getHeight = get_height
getSize = get_size
setLineWidth = set_line_width
getLineWidth = get_line_width
setColor = set_color
getColor = get_color
setVisible = set_visible
isVisible = is_visible
sendForward = send_forward
sendToFront = send_to_front
sendBackward = send_backward
sendToBack = send_to_back
getParent = get_parent
# Allow British spelling
set_colour = set_color
get_colour = get_color
setColour = set_color
getColour = get_color
# Class: GFillableObject
class GFillableObject(GObject):
"""
This abstract class is the superclass of all objects that are fillable.
"""
# Constructor: GFillableObject
def __init__(self):
"""
Initializes a GFillableObject. Because this is an
abstract class, clients should not call this constructor explicitly.
"""
GObject.__init__(self)
self._fill_flag = False
self._fill_color = ""
# Public method: set_filled
def set_filled(self, flag):
"""
Sets the fill status for the object, where False
is outlined and True is filled.
"""
self._fill_flag = flag
self._update_color()
# Public method: is_filled
def is_filled(self):
"""
Returns True if the object is filled.
"""
return self._fill_flag
# Public method: set_fill_color
def set_fill_color(self, color):
"""
Sets the color used to display the filled region of the object.
"""
rgb = _convert_color_to_rgb(color)
self._fill_color = _convert_rgb_to_color(rgb)
self._update_color()
# Public method: get_fill_color
def get_fill_color(self):
"""
Returns the color used to display the filled region of this
object. If no fill color has been set, get_fill_color
returns the empty string.
"""
return self._fill_color
# Override method: _update_color
def _update_color(self):
"""
Updates the color properties for a GFillableObject.
"""
outline = self._color
if self._fill_flag:
fill = self._fill_color
if fill is None or fill == "":
fill = outline
else:
fill = ""
self._update_properties(outline=outline, fill=fill)
# Define camel-case names
setFilled = set_filled
isFilled = is_filled
setFillColor = set_fill_color
getFillColor = get_fill_color
# Allow British spelling
set_fill_colour = set_fill_color
get_fill_colour = get_fill_color
setFillColour = set_fill_color
getFillColour = get_fill_color
# Class: GRect
class GRect(GFillableObject):
"""
This class represents a graphical object whose appearance consists of
a rectangular box.
"""
# Constructor: GRect
def __init__(self, a1, a2, a3=None, a4=None):
"""
The GRect constructor takes either of the following
forms:
GRect(width, height)
GRect(x, y, width, height)
If the x and y parameters are missing,
the origin is set to (0, 0).
"""
GFillableObject.__init__(self)
if a3 is None:
x = 0
y = 0
width = a1
height = a2
else:
x = a1
y = a2
width = a3
height = a4
self._width = width
self._height = height
self.set_location(x, y)
# Public method: set_size
def set_size(self, width, height=None):
"""
Changes the size of this rectangle as specified.
"""
if isinstance(width, GDimension):
width, height = width.get_width(), width.get_height()
self._width = width
self._height = height
gw = self._get_window()
if gw is None:
return
tkc = gw._canvas
coords = tkc.coords(self._tkid)
tkc.coords(self._tkid, coords[0], coords[1],
coords[0] + width, coords[1] + height)
# Public method: set_bounds
def set_bounds(self, x, y=None, width=None, height=None):
"""
Changes the bounds of this rectangle to the specified values.
"""
if isinstance(x, GRectangle):
width, height = x.get_width(), x.get_height()
x, y = x.get_x(), x.get_y()
self.set_location(x, y)
self.set_size(width, height)
# Override method: get_bounds
def get_bounds(self):
"""
Returns the bounds of this GRect.
"""
ctm = self._ctm_base
lctm = _GTransform(tx=self._x + ctm._tx,
ty=self._y + ctm._ty,
rotation=self._angle + ctm._rotation,
sf=self._sf * ctm._sf)
p0 = lctm.transform(0, 0)
bb = GRectangle(p0.get_x(), p0.get_y())
bb.add(lctm.transform(self._width, 0))
bb.add(lctm.transform(0, self._height))
bb.add(lctm.transform(self._width, self._height))
return bb
# Override method: get_type
def get_type(self):
"""
Returns the type of this object.
"""
return "GRect"
# Override method: _install
def _install(self, target, ctm):
"""
Installs the GRect in the canvas.
"""
gw = target
tkc = gw._canvas
self._ctm_base = ctm
lctm = _GTransform(rotation=self._angle + ctm._rotation,
sf=self._sf * ctm._sf)
p0 = ctm.transform(self._x, self._y)
if lctm._rotation == 0:
self._rep = "Rectangle"
p1 = ctm.transform(self._x + self._width, self._y + self._height)
self._tkid = tkc.create_rectangle(p0._x, p0._y, p1._x, p1._y,
width=self._line_width)
else:
self._rep = "Polygon"
coords = self._create_rect_coords(p0._x, p0._y,
self._width, self._height, lctm)
self._tkid = tkc.create_polygon(*coords, width=self._line_width)
self._update_color()
self._update_visible()
# Override method: _update_rotation
def _update_rotation(self):
"""
Updates the points for this GRect after a rotation.
"""
gw = self._get_window()
if gw is not None:
if self._rep == "Rectangle":
gw._rebuild()
else:
tkc = gw._canvas
ctm = self._ctm_base
lctm = _GTransform(rotation=self._angle + ctm._rotation,
sf=self._sf * ctm._sf)
p0 = ctm.transform(self._x, self._y)
coords = self._create_rect_coords(p0._x, p0._y,
self._width, self._height,
lctm)
tkc.coords(self._tkid, *coords)
# Private method: _create_rect_coords
def _create_rect_coords(self, x, y, width, height, ctm):
p1 = ctm.transform(width, 0)
p2 = ctm.transform(width, height)
p3 = ctm.transform(0, height)
return [ x, y,
x + p1._x, y + p1._y,
x + p2._x, y + p2._y,
x + p3._x, y + p3._y ]
# Override method: __str__
def __str__(self):
return ("GRect(" + str(self._x) + ", " + str(self._y) + ", " +
str(self._width) + ", " + str(self._height) + ")")
# Define camel-case names
setSize = set_size
setBounds = set_bounds
getBounds = get_bounds
getType = get_type
# Class: GOval
class GOval(GFillableObject):
"""
This graphical object subclass represents an oval inscribed in
a rectangular box.
"""
# Constructor: GOval
def __init__(self, a1, a2, a3=None, a4=None):
"""
The GOval constructor takes either of the following
forms:
GOval(width, height)
GOval(x, y, width, height)
If the x and y parameters are missing,
the origin is set to (0, 0).
"""
GFillableObject.__init__(self)
if a3 is None:
x = 0
y = 0
width = a1
height = a2
else:
x = a1
y = a2
width = a3
height = a4
self._width = width
self._height = height
self.set_location(x, y)
# Public method: set_size
def set_size(self, width, height=None):
"""
Changes the size of this oval as specified.
"""
if isinstance(width, GDimension):
width, height = width.get_width(), width.get_height()
self._width = width
self._height = height
gw = self._get_window()
if gw is None:
return
tkc = gw._canvas
coords = tkc.coords(self._tkid)
tkc.coords(self._tkid, coords[0], coords[1],
coords[0] + width, coords[1] + height)
# Public method: set_bounds
def set_bounds(self, x, y=None, width=None, height=None):
"""
Changes the bounds of this rectangle to the specified values.
"""
if isinstance(x, GRectangle):
width, height = x.get_width(), x.get_height()
x, y = x.get_x(), x.get_y()
self.set_location(x, y)
self.set_size(width, height)
# Override method: get_bounds
def get_bounds(self):
"""
Returns the bounds of this GOval.
"""
return GRectangle(self._x, self._y, self._width, self._height)
# Override method: contains
def contains(self, x, y):
rx = self._width / 2
ry = self._height / 2
tx = x - (self._x + rx)
ty = y - (self._y + ry)
return (tx * tx) / (rx * rx) + (ty * ty) / (ry * ry) <= 1.0
# Override method: get_type
def get_type(self):
"""
Returns the type of this object.
"""
return "GOval"
# Override method: _install
def _install(self, target, ctm):
"""
Installs the GOval in the canvas.
"""
gw = target
tkc = gw._canvas
self._ctm_base = ctm
lctm = _GTransform(rotation=self._angle + ctm._rotation,
sf=self._sf * ctm._sf)
p0 = ctm.transform(self._x, self._y)
if lctm._rotation == 0:
self._rep = "Oval"
lctm = ctm.compose(_GTransform(sf=self._sf))
p1 = ctm.transform(self._x + self._width, self._y + self._height)
self._tkid = tkc.create_oval(p0._x, p0._y, p1._x, p1._y,
width=self._line_width)
else:
self._rep = "Polygon"
coords = self._create_oval_coords(p0._x, p0._y,
self._width, self._height, lctm)
self._tkid = tkc.create_polygon(*coords, width=self._line_width,
smooth=1)
self._update_color()
self._update_visible()
# Override method: _update_rotation
def _update_rotation(self):
"""
Updates the points for this GOval after a rotation.
"""
gw = self._get_window()
if gw is not None:
if self._rep == "Oval":
gw._rebuild()
else:
tkc = gw._canvas
ctm = self._ctm_base
lctm = _GTransform(rotation=self._angle + ctm._rotation,
sf=self._sf * ctm._sf)
p0 = ctm.transform(self._x, self._y)
coords = self._create_oval_coords(p0._x, p0._y,
self._width, self._height,
lctm)
tkc.coords(self._tkid, *coords)
# Private method: _create_oval_coords
def _create_oval_coords(self, x, y, width, height, ctm):
n = 16
dth = 360 / n
r1 = width / 2
r2 = height / 2
coords = [ ]
for i in range(0, n):
theta = math.radians(i * dth)
pt = ctm.transform(r1 + r1 * math.cos(theta),
r2 - r2 * math.sin(theta))
coords.append(x + pt._x)
coords.append(y + pt._y)
return coords
# Override method: __str__
def __str__(self):
return ("GOval(" + str(self._x) + ", " + str(self._y) + ", " +
str(self._width) + ", " + str(self._height) + ")")
# Define camel-case names
setSize = set_size
setBounds = set_bounds
getBounds = get_bounds
getType = get_type
# Class: GCompound
class GCompound(GObject):
"""
This graphical object subclass consists of a collection of other
graphical objects. Once assembled, the internal objects can be
manipulated as a unit. The GCompound keeps track
of its own position, and all items within it are drawn relative
to that location.
"""
# Constructor: GCompound
def __init__(self):
"""
Creates a GCompound with no internal components.
"""
GObject.__init__(self)
self._contents = [ ]
# Public method: add
def add(self, gobj, x=None, y=None):
"""
Adds a new graphical object to the GCompound. The
first parameter is the object to be added. The x
and y parameters are optional. If they are supplied,
the location of the object is set to (x, y).
"""
if x is not None:
gobj.set_location(x, y)
self._contents.append(gobj)
gobj._parent = self
if self._gw is None:
gw = self._get_window()
if gw is not None:
gw._rebuild()
else:
gobj._install(self._gw, _GTransform())
# Public method: remove
def remove(self, gobj):
"""
Removes the specified object from the GCompound.
"""
index = self._find_gobject(gobj)
if index != -1:
self._remove_at(index)
gw = self._get_window()
if gw is not None:
gw._rebuild()
# Public method: remove_all
def remove_all(self):
"""
Removes all graphical objects from the GCompound.
"""
while len(self._contents) > 0:
self._remove_at(0)
gw = self._get_window()
if gw is not None:
gw._rebuild()
# Public method: get_element_at
def get_element_at(self, x, y):
"""
Returns the topmost GObject containing the
point (x, y), or None if no such object exists.
Coordinates are interpreted relative to the reference point.
"""
for gobj in reversed(self._contents):
if gobj.contains(x, y):
return gobj
return None
# Public method: get_element_count
def get_element_count(self):
"""
Returns the number of graphical objects stored in the
GCompound.
"""
return len(self._contents)
# Public method: get_element
def get_element(self, index):
"""
Returns the graphical object at the specified index, numbering
from back to front in the the z dimension.
"""
return self._contents[index]
# Override method: get_bounds
def get_bounds(self):
"""
Returns a bounding rectangle for this compound.
"""
x0 = self._x
y0 = self._y
if len(self._contents) == 0:
return GRectangle(x0, y0, 0, 0)
x_min = sys.float_info.max
y_min = sys.float_info.max
x_max = sys.float_info.min
y_max = sys.float_info.min
for gobj in self._contents:
bounds = gobj.get_bounds()
x_min = min(x_min, x0 + bounds._x)
y_min = min(y_min, y0 + bounds._y)
x_max = max(x_max, x0 + bounds._x)
y_max = max(y_max, y0 + bounds._y)
x_min = min(x_min, x0 + bounds._x + bounds.get_width())
y_min = min(y_min, y0 + bounds._y + bounds.get_height())
x_max = max(x_max, x0 + bounds._x + bounds.get_width())
y_max = max(y_max, y0 + bounds._y + bounds.get_height())
return GRectangle(x_min, y_min, x_max - x_min, y_max - y_min)
# Public method: contains
def contains(self, x, y):
"""
Returns true if the specified point is inside the object.
"""
refpt = self.get_location()
tx = x - refpt._x
ty = y - refpt._y
for gobj in self._contents:
if gobj.contains(tx, ty):
return True
return False
# Override method: get_type
def get_type(self):
"""
Returns the type of this object
"""
return "GCompound"
# Public method: __str__
def __str__(self):
return "GCompound(...)"
# Override method: _update_location
def _update_location(self):
"""
Updates the location for this GCompound by
rebuilding the entire window if the component is installed.
"""
gw = self._get_window()
if gw is not None:
gw._rebuild()
# Override method: _update_rotation
def _update_rotation(self):
"""
Redraws the window on rotation.
"""
gw = self._get_window()
if gw is not None:
gw._rebuild()
# Override method: _update_visible
def _update_visible(self):
"""
Redraws the window on set_visible
"""
gw = self._get_window()
if gw is not None:
gw._rebuild()
# Override method: _install
def _install(self, target, ctm):
if self._visible:
lctm = ctm.compose(_GTransform(self._x, self._y,
rotation=self._angle, sf=self._sf))
for gobj in self._contents:
gobj._install(target, lctm)
# Internal method: _send_forward
def _send_forward(self, gobj):
index = self._find_gobject(gobj)
if index == -1:
return
if index != len(self._contents) - 1:
self._contents.pop(index)
self._contents.insert(index + 1, gobj)
gw = self._get_window()
if gw is not None:
gw._rebuild()
# Internal method: _send_to_front
def _send_to_front(self, gobj):
index = self._find_gobject(gobj)
if index == -1:
return
if index != len(self._contents) - 1:
self._contents.pop(index)
self._contents.append(gobj)
gw = self._get_window()
if gw is not None:
gw._rebuild()
# Internal method: _send_backward
def _send_backward(self, gobj):
index = self._find_gobject(gobj)
if index == -1:
return
if index != 0:
self._contents.pop(index)
self._contents.insert(index - 1, gobj)
gw = self._get_window()
if gw is not None:
gw._rebuild()
# Internal method: _send_to_back
def _send_to_back(self, gobj):
index = self._find_gobject(gobj)
if index == -1:
return
if index != 0:
self._contents.pop(index)
self._contents.insert(0, gobj)
gw = self._get_window()
if gw is not None:
gw._rebuild()
# Internal method: _find_gobject
def _find_gobject(self, gobj):
n = len(self._contents)
for i in range(n):
if self._contents[i] == gobj:
return i
return -1
# Internal method: _remove_at
def _remove_at(self, index):
gobj = self._contents[index]
self._contents.pop(index)
gobj._parent = None
# Define camel-case names
removeAll = remove_all
getElementAt = get_element_at
getElementCount = get_element_count
getElement = get_element
getBounds = get_bounds
getType = get_type
# Class: GArc
class GArc(GFillableObject):
"""
This graphical object subclass represents an elliptical arc. The
arc is specified by the following parameters:
- The coordinates of the bounding rectangle (x, y, width, height)
- The angle at which the arc starts (start)
- The number of degrees that the arc covers (sweep)
All angles in a GArc description are measured in
degrees moving counterclockwise from the +x axis. Negative
values for either start or sweep indicate
motion in a clockwise direction.
"""
# Constructor: GArc
def __init__(self, a1, a2, a3=None, a4=None, a5=None, a6=None):
"""
The GArc constructor takes either of the following
forms:
GArc(width, height, start, sweep)
GArc(x, y, width, height, start, sweep)
If the x and y parameters are missing,
the origin is set to (0, 0).
"""
GFillableObject.__init__(self)
if a5 is None:
x = 0
y = 0
width = a1
height = a2
start = a3
sweep = a4
else:
x = a1
y = a2
width = a3
height = a4
start = a5
sweep = a6
self._frame_width = width
self._frame_height = height
self._start = start
self._sweep = sweep
self.set_location(x, y)
# Public method: set_start_angle
def set_start_angle(self, start):
"""
Sets the starting angle for this GArc object.
"""
self._start = start
self._update_properties(start=start)
# Public method: get_start_angle
def get_start_angle(self):
"""
Returns the starting angle for this GArc object.
"""
return self._start
# Public method: set_sweep_angle
def set_sweep_angle(self, sweep):
"""
Sets the sweep angle for this GArc object.
"""
self._sweep = sweep
self._update_properties(extent=sweep)
# Public method: get_sweep_angle
def get_sweep_angle(self):
"""
Returns the sweep angle for this GArc object.
"""
return self._sweep
# Public method: get_start_point
def get_start_point(self):
"""
Returns the point at which the arc starts.
"""
return self._get_arc_point(self._start)
# Public method: get_end_point
def get_end_point(self):
"""
Returns the point at which the arc ends.
"""
return self._get_arc_point(self._start + self._sweep)
# Public method: set_frame_rectangle
def set_frame_rectangle(self, x, y=None, width=None, height=None):
"""
Changes the boundaries of the rectangle used to frame the arc.
"""
if isinstance(x, GRectangle):
width, height = x.get_width(), x.get_height()
x, y = x.get_x(), x.get_y()
self.set_location(x, y)
gw = self._get_window()
if gw is None:
return
tkc = gw._canvas
coords = tkc.coords(self._tkid)
tkc.coords(self._tkid, coords[0], coords[1],
coords[0] + width, coords[1] + height)
# Public method: get_frame_rectangle
def get_frame_rectangle(self):
"""
Returns the boundaries of the rectangle used to frame the arc.
"""
return GRectangle(self._x, self._y,
self._frame_width, self._frame_height)
# Override method: set_filled
def set_filled(self, flag):
"""
Sets the fill status for the arc, where False is
outlined and True is filled. If a GArc
is unfilled, the figure consists only of the arc itself. If a
GArc is filled, the figure consists of the
pie-shaped wedge formed by connecting the endpoints of the arc to
the center.
"""
GFillableObject.set_filled(self, flag)
style = tkinter.ARC
if flag:
style = tkinter.PIESLICE
self._update_properties(style=style)
# Public method: get_bounds
def get_bounds(self):
"""
Gets the bounding rectangle for this object
"""
rx = self._frame_width / 2
ry = self._frame_height / 2
cx = self._x + rx
cy = self._y + ry
start_radians = self._start * math.pi / 180
sweep_radians = self._sweep * math.pi / 180
p1x = cx + math.cos(start_radians) * rx
p1y = cy - math.sin(start_radians) * ry
p2x = cx + math.cos(start_radians + sweep_radians) * rx
p2y = cy - math.sin(start_radians + sweep_radians) * ry
x_min = min(p1x, p2x)
x_max = max(p1x, p2x)
y_min = min(p1y, p2y)
y_max = max(p1y, p2y)
if self._contains_angle(0):
x_max = cx + rx
if self._contains_angle(90):
y_min = cy - ry
if self._contains_angle(180):
x_min = cx - rx
if self._contains_angle(270):
y_max = cy + ry
if self._fill_flag:
x_min = min(x_min, cx)
y_min = min(y_min, cy)
x_max = max(x_max, cx)
y_max = max(y_max, cy)
return GRectangle(x_min, y_min, x_max - x_min, y_max - y_min)
# Public method: contains
def contains(self, x, y):
"""
Returns true if the specified point is inside the object.
"""
rx = self._frame_width / 2
ry = self._frame_height / 2
if rx == 0 or ry == 0:
return False
dx = x - (self._x + rx)
dy = y - (self._y + ry)
r = (dx * dx) / (rx * rx) + (dy * dy) / (ry * ry)
if self._fill_flag:
if r > 1.0:
return False
else:
t = __ARC_TOLERANCE__ / ((rx + ry) / 2)
if abs(1.0 - r) > t:
return False
return self._contains_angle(math.atan2(-dy, dx) * 180 / math.pi)
# Override method: get_type
def get_type(self):
"""
Returns the type of this object
"""
return "GArc"
# Public method: __str__
def __str__(self):
return ("GArc(" + str(self._x) + ", " + str(self._y) + ", " +
str(self._frame_width) + ", " +
str(self._frame_height) + ", " +
str(self._start) + ", " + str(self._sweep) + ")")
# Override method: _install
def _install(self, target, ctm):
"""
Installs the GArc in the canvas.
"""
gw = target
tkc = gw._canvas
lctm = _GTransform(rotation=self._angle + ctm._rotation,
sf=self._sf * ctm._sf)
p0 = ctm.transform(self._x, self._y)
if lctm._rotation == 0:
p1 = ctm.transform(self._x + self._frame_width,
self._y + self._frame_height)
if abs(self._sweep) >= 360:
self._rep = "Oval"
self._tkid = tkc.create_oval(p0._x, p0._y, p1._x, p1._y,
width=self._line_width)
else:
self._rep = "Arc"
style = tkinter.ARC
if self._fill_flag:
style = tkinter.PIESLICE
self._tkid = tkc.create_arc(p0._x, p0._y, p1._x, p1._y,
start=self._start,
extent=self._sweep,
width=self._line_width,
style=style)
else:
self._rep = "Polygon"
if self._fill_flag:
coords = self._create_arc_coords(p0._x, p0._y,
self._frame_width,
self._frame_height,
self._start, self._sweep,
True, lctm)
self._tkid = tkc.create_polygon(*coords,
width=self._line_width,
smooth=1)
else:
coords = self._create_arc_coords(p0._x, p0._y,
self._frame_width,
self._frame_height,
self._start, self._sweep,
False, lctm)
self._tkid = tkc.create_line(*coords,
width=self._line_width,
smooth=1)
self._update_color()
self._update_visible()
# Override method: set_filled
def set_filled(self, flag):
GFillableObject.set_filled(self, flag)
gw = self._get_window()
if gw is not None:
gw._rebuild()
# Override method: _update_rotation
def _update_rotation(self):
"""
Updates the points for this GArc after a rotation.
"""
gw = self._get_window()
if gw is not None:
tkc = gw._canvas
ctm = self._ctm_base
lctm = _GTransform(rotation=self._angle + ctm._rotation,
sf=self._sf * ctm._sf)
coords = self._create_arc_coords(p0._x, p0._y,
self._frame_width,
self._frame_height,
self._start, self._sweep,
self._fill_flag, lctm)
tkc.coords(self._tkid, *coords)
# Override method: _update_color
def _update_color(self):
"""
Updates the color properties for a GArc.
"""
if self._fill_flag:
outline = self._color
fill = self._fill_color
if fill is None or fill == "":
fill = outline
self._update_properties(outline=outline, fill=fill)
else:
if self._rep == "Oval":
self._update_properties(fill='')
else:
self._update_properties(fill=self._color)
# Private method: _create_arc_coords
def _create_arc_coords(self, x, y, width, height, start, sweep, fill, ctm):
"""
Creates an array of coordinates for an elliptical arc inside the
bounding box with the specified start and sweep values. The ctm
parameter represents the local transformation.
"""
n = max(3, round(abs(sweep) / 30))
dth = sweep / n
r1 = width / 2
r2 = height / 2
coords = [ ]
for i in range(0, n + 1):
theta = math.radians(start + i * dth)
pt = ctm.transform(r1 + r1 * math.cos(theta),
r2 - r2 * math.sin(theta))
coords.append(x + pt._x)
coords.append(y + pt._y)
if fill:
pt = ctm.transform(r1, r2)
center = [ x + pt._x, y + pt._y ]
coords = center + coords[0:2] + coords + coords[-2:]
return coords
# Private method: _get_arc_point
def _get_arc_point(self, theta):
rx = self._frame_width / 2
ry = self._frame_height / 2
cx = self._x + rx
cy = self._y + ry
radians = theta * math.pi / 180
return GPoint(cx + rx * math.cos(radians), cy - ry * math.sin(radians))
# Private method: _get_arc_point
def _get_arc_point(self, theta):
rx = self._frame_width / 2
ry = self._frame_height / 2
cx = self._x + rx
cy = self._y + ry
radians = theta * math.pi / 180
return GPoint(cx + rx * math.cos(radians), cy - ry * math.sin(radians))
# Private method: _contains_angle
def _contains_angle(self, theta):
start = min(self._start, self._start + self._sweep)
sweep = abs(self._sweep)
if sweep >= 360:
return True
if theta < 0:
theta = 360 - math.fmod(-theta, 360)
else:
theta = math.fmod(theta, 360)
if start < 0:
start = 360 - math.fmod(-start, 360)
else:
start = math.fmod(start, 360)
if start + sweep > 360:
return (theta >= start or theta <= start + sweep - 360)
else:
return (theta >= start and theta <= start + sweep)
# Define camel-case names
setStartAngle = set_start_angle
getStartAngle = get_start_angle
setSweepAngle = set_sweep_angle
getSweepAngle = get_sweep_angle
getStartPoint = get_start_point
getEndPoint = get_end_point
setFrameRectangle = set_frame_rectangle
getFrameRectangle = get_frame_rectangle
setFilled = set_filled
getBounds = get_bounds
getType = get_type
# Class: GLine
class GLine(GObject):
"""
This graphical object subclass represents a line segment.
"""
# Constructor: GLine
def __init__(self, x0, y0, x1, y1):
"""
Initializes a line segment from its endpoints. The point
(x0, y0) defines the start of the
line and the point (x1, y1) defines
the end.
"""
GObject.__init__(self)
self._x = x0
self._y = y0
self._dx = x1 - x0
self._dy = y1 - y0
# Public method: set_start_point
def set_start_point(self, x, y):
"""
Sets the initial point to (x, y),
leaving the end point unchanged. This method is therefore
different from set_location, which moves both
components of the line segment.
"""
self._dx += self._x - x
self._dy += self._y - y
self._x = x
self._y = y
self._update_points()
# Public method: get_start_point
def get_start_point(self):
"""
Returns the point at which the line starts.
"""
return GPoint(self._x, self._y)
# Public method: set_end_point
def set_end_point(self, x, y):
"""
Sets the end point in the line to (x, y), leaving the start point
unchanged.
"""
self._dx = x - self._x
self._dy = y - self._y
self._update_points()
# Public method: get_end_point
def get_end_point(self):
"""
Returns the point at which the line ends.
"""
return GPoint(self._x + self._dx, self._y + self._dy)
# Overload method: contains
def contains(self, x, y):
"""
Returns true if the specified point is inside the object.
"""
x0 = self._x
y0 = self._y
x1 = x0 + self._dx
y1 = y0 + self._dy
t_squared = __LINE_TOLERANCE__ * __LINE_TOLERANCE__
if _dsq(x, y, x0, y0) < t_squared:
return True
if _dsq(x, y, x1, y1) < t_squared:
return True
if x < min(x0, x1) - __LINE_TOLERANCE__:
return False
if x > max(x0, x1) + __LINE_TOLERANCE__:
return False
if y < min(y0, y1) - __LINE_TOLERANCE__:
return False
if y > max(y0, y1) + __LINE_TOLERANCE__:
return False
if (x0 - x1) == 0 and (y0 - y1) == 0:
return False
d = _dsq(x0, y0, x1, y1)
u = ((x - x0) * (x1 - x0) + (y - y0) * (y1 - y0)) / d
return _dsq(x, y, x0 + u * (x1 - x0), y0 + u * (y1 - y0)) < t_squared
# Override method: get_type
def get_type(self):
"""
Returns the type of this object
"""
return "GLine"
# Public method: __str__
def __str__(self):
return ("GLine(" + str(self._x) + ", " + str(self._y) + ", " +
str(self._x + self._dx) + ", " + str(self._y + self._dy) + ")")
# Override method: get_bounds
def get_bounds(self):
"""
Returns the bounds of this GLine.
"""
x0 = min(self._x, self._x + self._dx)
y0 = min(self._y, self._y + self._dy)
x1 = max(self._x, self._x + self._dx)
y1 = max(self._y, self._y + self._dy)
return GRectangle(x0, y0, x1 - x0, y1 - y0)
# Override method: _install
def _install(self, target, ctm):
"""
Installs the GLine in the canvas.
"""
gw = target
tkc = gw._canvas
self._base_ctm = ctm
p0 = ctm.transform(self._x, self._y)
angle = ctm._rotation + self._angle
ctm = _GTransform(rotation=angle, sf=ctm._sf)
deltas = ctm.transform(self._dx, self._dy)
x1 = p0._x + deltas._x
y1 = p0._y + deltas._y
dp = ctm.transform(self._dx, self._dy)
self._tkid = tkc.create_line(p0._x, p0._y,
p0._x + dp._x, p0._y + dp._y,
width=self.get_line_width(),
fill=self._color)
self._update_visible()
# Override method: _update_points
def _update_points(self):
"""
Updates the points in the GLine.
"""
gw = self._get_window()
if gw is None:
return
tkc = gw._canvas
ctm = self._base_ctm
p0 = ctm.transform(self._x, self._y)
angle = ctm._rotation + self._angle
ctm = _GTransform(rotation=angle, sf=ctm._sf)
dp = ctm.transform(self._dx, self._dy)
tkc.coords(self._tkid, p0._x, p0._y, p0._x + dp._x, p0._y + dp._y)
# Override method: _update_rotation
def _update_rotation(self):
"""
Updates the points for this GLine after a rotation.
"""
self._update_points()
# Define camel-case names
setStartPoint = set_start_point
getStartPoint = get_start_point
setEndPoint = set_end_point
getEndPoint = get_end_point
getType = get_type
# Class: GImage
class GImage(GObject):
"""
This graphical object subclass represents an image from a file.
"""
def __init__(self, source, x=0, y=0):
"""
Initializes a new image by loading the image from the specified
source, which must be the name of a file containing the image, a
URL that holds a remote image, or a two-dimensional array of pixels.
"""
GObject.__init__(self)
self._source = source
self._image_model = _image_model
if _image_model == "PIL":
if isinstance(source, str):
if "://" in source or source.startswith("data:"):
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
with urllib.request.urlopen(source, context=ctx) as req:
self._image = Image.open(io.BytesIO(req.read()))
else:
self._image = Image.open(source)
self._image.load()
else:
width = len(source[0])
height = len(source)
ba = bytearray(4 * width * height)
for i in range(height):
for j in range(width):
argb = source[i][j]
base = 4 * (i * width + j)
ba[base] = (argb >> 16) & 0xFF
ba[base + 1] = (argb >> 8) & 0xFF
ba[base + 2] = argb & 0xFF
ba[base + 3] = (argb >> 24) & 0xFF
self._image = Image.frombytes("RGBA", (width, height),
bytes(ba))
self._photo = ImageTk.PhotoImage(self._image)
else:
if isinstance(source, str):
self._photo = tkinter.PhotoImage(file=source)
else:
raise ImportError("get_pixel_array requires the " +
"Pillow library")
self.set_location(x, y)
self._sf = 1
# Public method: get_bounds
def get_bounds(self):
"""
Returns the bounding rectangle for this object
"""
photo = self._photo
return GRectangle(self._x, self._y, photo.width(), photo.height())
# Public method: get_pixel_array
def get_pixel_array(self):
"""
Returns a two-dimensional array of integers containing the pixel data.
"""
if self._image_model == "PIL":
image = self._image
width = image.width
height = image.height
else:
width = self._photo.width()
height = self._photo.height()
pixels = height * [ [ 0 ] ]
for y in range(height):
pixels[y] = width * [ 0 ]
if self._image_model == "PIL":
data = image.convert("RGBA").getdata()
i = 0
for i in range(height):
for j in range(width):
rgba = data[i * width + j]
p = rgba[3] << 24 | rgba[0] << 16 | rgba[1] << 8 | rgba[2]
pixels[i][j] = p
return pixels
# Override method: scale
def scale(self, sf):
"""
Scales the GImage by the specified scale factor.
"""
if self._image_model != "PIL":
raise Exception("Image scaling is available only if PIL is loaded")
self._sf *= sf
gw = self._get_window()
if gw is not None:
gw._rebuild()
# Override method: get_type
def get_type(self):
"""
Returns the type of this object.
"""
return "GImage"
# Override method: _install
def _install(self, target, ctm):
"""
Installs the GImage in the canvas.
"""
gw = target
tkc = gw._canvas
pt = ctm.transform(self._x, self._y)
x = pt._x
y = pt._y
ctm = ctm.compose(_GTransform(rotation=self._angle, sf=self._sf))
img = self._image
rotation = ctm._rotation % 360
if ctm._sf != 1:
w = round(img.width * ctm._sf)
h = round(img.height * ctm._sf)
img = img.resize((w, h), Image.LANCZOS)
if rotation != 0:
w = img.width
h = img.height
img = img.rotate(rotation, expand=True)
if rotation > 0 and rotation <= 90:
theta = math.radians(rotation)
y -= w * math.sin(theta)
elif rotation > 90 and rotation <= 180:
theta = math.radians(rotation - 90)
x -= w * math.sin(theta)
y -= h * math.sin(theta) + w * math.cos(theta)
elif rotation > 180 and rotation <= 270:
theta = math.radians(rotation - 180)
x -= h * math.sin(theta) + w * math.cos(theta)
y -= h * math.cos(theta)
else:
theta = math.radians(rotation - 270)
x -= h * math.cos(theta)
self._photo = ImageTk.PhotoImage(img)
self._tkid = tkc.create_image(x, y,
anchor=tkinter.NW,
image=self._photo)
self._update_visible()
# Override method: _update_rotation
def _update_rotation(self):
"""
Updates this GImage after a rotation.
"""
gw = self._get_window()
if gw is not None:
gw._rebuild()
# Static method: get_red
@staticmethod
def get_red(pixel):
"""
Returns the red component of the pixel.
"""
return pixel >> 16 & 0xFF
# Static method: get_green
@staticmethod
def get_green(pixel):
"""
Returns the green component of the pixel.
"""
return pixel >> 8 & 0xFF
# Static method: get_blue
@staticmethod
def get_blue(pixel):
"""
Returns the blue component of the pixel.
"""
return pixel & 0xFF
# Static method: get_alpha
@staticmethod
def get_alpha(pixel):
"""
Returns the alpha component of the pixel.
"""
return pixel >> 24 & 0xFF
# Static method: create_rgb_pixel
@staticmethod
def create_rgb_pixel(a1=None, a2=None, a3=None, a4=None, **kw):
"""
Creates an RGB pixel from the arguments. The kw dictionary allows
clients to name these parameters to override the conventional order.
"""
if a4 is None:
a = 0xFF
r = a1
g = a2
b = a3
else:
a = a1
r = a2
g = a3
b = a4
if "alpha" in kw:
a = kw["alpha"]
if "red" in kw:
r = kw["red"]
if "green" in kw:
g = kw["green"]
if "blue" in kw:
b = kw["blue"]
return a << 24 | (r & 0xFF) << 16 | (g & 0xFF) << 8 | (b & 0xFF)
# Public method: __str__
def __str__(self):
if isinstance(self._image, str):
return "GImage(\"" + self._source + "\")"
else:
return "GImage()"
# Define camel-case names
getBounds = get_bounds
getPixelArray = get_pixel_array
getType = get_type
getRed = get_red
getGreen = get_green
getBlue = get_blue
getAlpha = get_alpha
createRGBPixel = create_rgb_pixel
# Class: GLabel
class GLabel(GObject):
"""
This graphical object subclass represents a text string.
"""
# Constants
DEFAULT_FONT = "13pt 'Helvetica Neue','Helvetica','Arial','Sans-Serif'"
# Constructor: GLabel
def __init__(self, text, x=0, y=0):
"""
Initializes a GLabel object containing the specified
string. By default, the baseline of the first character appears
at the origin.
"""
GObject.__init__(self)
self._text = text
self._font = self.DEFAULT_FONT
self._tk_font = _decode_font(self._font)
self.set_location(x, y)
# Public method: set_font
def set_font(self, font):
"""
Changes the font used to display the GLabel as specified by
font, which has the form family-style-size,
where both style and size are optional.
"""
self._font = font
self._tk_font = _decode_font(self._font)
self._update_properties(font=self._tk_font)
self._update_location()
# Public method: get_font
def get_font(self):
"""
Returns the current font for the GLabel.
"""
return self._font
# Public method: set_label
def set_label(self, text):
"""
Changes the string stored within the GLabel object, so that
a new text string appears on the display.
"""
self._text = text
self._update_properties(text=text)
# Public method: get_label
def get_label(self):
"""
Returns the string displayed by this object.
"""
return self._text
# Public method: get_ascent
def get_ascent(self):
"""
Returns the maximum distance strings in this font extend above
the baseline.
"""
return self._tk_font.metrics("ascent")
# Public method: get_descent
def get_descent(self):
"""
Returns the maximum distance strings in this font descend below
the baseline.
"""
return self._tk_font.metrics("descent")
# Override method: get_width
def get_width(self):
"""
Returns the width for this GLabel.
"""
return self._tk_font.measure(self._text)
# Override method: get_height
def get_height(self):
"""
Returns the height for this GLabel.
"""
return self._tk_font.metrics("linespace")
# Override method: get_bounds
def get_bounds(self):
"""
Returns the bounding rectangle for this object.
"""
return GRectangle(self._x, self._y - self.get_ascent(),
self.get_width(), self.get_height())
# Override method: get_type
def get_type(self):
"""
Returns the type of this object.
"""
return "GLabel"
# Override method: _update_location
def _update_location(self):
"""
Updates the location for this GLabel from the stored
x and y values. This override is necessary to adjust for the
baseline.
"""
gw = self._get_window()
if gw is None:
return
tkc = gw._canvas
coords = tkc.coords(self._tkid)
offx = 0
offy = self.get_height() - self.get_ascent()
gobj = self.get_parent()
while gobj is not None:
offx += gobj._x
offy += gobj._y
gobj = gobj.get_parent()
dx = (self._x + offx) - coords[0]
dy = (self._y + offy) - coords[1]
tkc.move(self._tkid, dx, dy)
# Override method: _install
def _install(self, target, ctm):
"""
Installs the GLabel in the canvas.
"""
gw = target
tkc = gw._canvas
self._ctm_base = ctm
pt = ctm.transform(self._x, self._y)
dtm = _GTransform(rotation=self._angle, sf=self._sf)
ctm = ctm.compose(dtm)
dp = dtm.transform(0, self.get_height() - self.get_ascent())
x = pt._x + dp._x
y = pt._y + dp._y
baseline = y
if ctm.get_rotation() == 0:
self._tkid = tkc.create_text(x,
baseline,
text=self._text,
font=self._tk_font,
fill=self._color,
anchor="sw")
else:
try:
self._tkid = tkc.create_text(x,
baseline,
text=self._text,
font=self._tk_font,
fill=self._color,
angle=ctm.get_rotation(),
anchor="sw")
except:
raise Exception("GLabel rotation requires tkinter v6")
self._update_visible()
# Override method: _update_rotation
def _update_rotation(self):
"""
Updates this GLabel after a rotation.
"""
gw = self._get_window()
if gw is None:
return
ctm = self._ctm_base
ctm = ctm.compose(_GTransform(rotation=self._angle, sf=self._sf))
self._update_properties(angle=ctm.get_rotation())
# Override method: __str__
def __str__(self):
return "GLabel(\"" + self._text + "\")"
# Define camel-case names
setFont = set_font
getFont = get_font
setLabel = set_label
getLabel = get_label
getAscent = get_ascent
getDescent = get_descent
getWidth = get_width
getHeight = get_height
getBounds = get_bounds
getType = get_type
# Class: GPolygon
class GPolygon(GFillableObject):
"""
This graphical object subclass represents a polygon bounded by line
segments. The GPolygon constructor creates an empty
polygon. To complete the figure, you need to add vertices to the
polygon using some combination of the methods add_vertex,
add_edge, and add_polar_edge.
"""
# Constructor: GPolygon
def __init__(self):
"""
Initializes a new empty polygon at the origin.
"""
GFillableObject.__init__(self)
self._cx = None
self._cy = None
self._vertices = [ ]
# Public method: add_vertex
def add_vertex(self, x, y):
"""
Adds a vertex at (x, y) relative to the
polygon origin.
"""
self._cx = x
self._cy = y
self._vertices.append(GPoint(x, y))
# Public method: add_edge
def add_edge(self, dx, dy):
"""
Adds an edge to the polygon whose components are given by the
displacements dx and dy from the
last vertex.
"""
self.add_vertex(self._cx + dx, self._cy + dy)
# Public method: add_polar_edge
def add_polar_edge(self, r, theta):
"""
Adds an edge to the polygon specified in polar coordinates. The
length of the edge is given by r, and the edge extends
in direction theta, measured in degrees counterclockwise
from the +x axis.
"""
self.add_edge(r * math.cos(theta * math.pi / 180),
-r * math.sin(theta * math.pi / 180))
# Public method: get_vertices
def get_vertices(self):
"""
Returns a list of the points in the polygon.
"""
return self._vertices
# Public method: get_bounds
def get_bounds(self):
"""
Returns the bounding rectangle for this object.
"""
x_min = 0
y_min = 0
x_max = 0
y_max = 0
for i in range(len(self._vertices)):
x = self._vertices[i]._x
y = self._vertices[i]._y
if i == 0 or x < x_min:
x_min = x
if i == 0 or y < y_min:
y_min = y
if i == 0 or x > x_max:
x_max = x
if i == 0 or y > y_max:
y_max = y
x0 = self._x
y0 = self._y
return GRectangle(x0 + x_min, y0 + y_min, x_max - x_min, y_max - y_min)
# Public method: contains
def contains(self, x, y):
"""
Returns true if the specified point is inside the object.
"""
tx = x - self._x
ty = y - self._y
crossings = 0
n = len(self._vertices)
if n < 2:
return False
if self._vertices[0] == self._vertices[n - 1]:
n = n - 1
x0 = self._vertices[0]._x
y0 = self._vertices[0]._y
for i in range(1, n + 1):
x1 = self._vertices[i % n]._x
y1 = self._vertices[i % n]._y
if (y0 > ty) != (y1 > ty):
if tx - x0 < (x1 - x0) * (ty - y0) / (y1 - y0):
crossings = crossings + 1
x0 = x1
y0 = y1
return (crossings % 2 == 1)
# Override method: get_type
def get_type(self):
"""
Returns the type of this object.
"""
return "GPolygon"
# Override method: _update_location
def _update_location(self):
"""
Updates the location for this object from the stored x and y values.
"""
gw = self._get_window()
if gw is None:
return
tkc = gw._canvas
coords = tkc.coords(self._tkid)
oldx = coords[0]
oldy = coords[1]
coords = self._create_coords()
dx = coords[0] - oldx
dy = coords[1] - oldy
tkc.move(self._tkid, dx, dy)
# Override method: _update_rotation
def _update_rotation(self):
"""
Updates this GPolygon after a rotation.
"""
gw = self._get_window()
if gw is None:
return
tkc = gw._canvas
coords = self._create_coords()
tkc.coords(self._tkid, *coords)
# Override method: _install
def _install(self, target, ctm):
"""
Installs the GPolygon in the canvas.
"""
gw = target
tkc = gw._canvas
self._ctm_base = ctm
coords = self._create_coords()
self._tkid = tkc.create_polygon(*coords, width=self._line_width)
self._update_color()
self._update_visible()
# Override method: __str__
def __str__(self):
return "GPolygon(" + str(len(self._vertices)) + " vertices)"
# Private method: _create_coords
def _create_coords(self):
ctm = self._ctm_base
ctm = ctm.compose(_GTransform(self._x, self._y,
rotation=self._angle, sf=self._sf))
coords = [ ]
for pt in self._vertices:
tp = ctm.transform(pt)
coords.append(tp._x)
coords.append(tp._y)
return coords
# Define camel-case names
addVertex = add_vertex
addEdge = add_edge
addPolarEdge = add_polar_edge
getVertices = get_vertices
getBounds = get_bounds
getType = get_type
# Class: GPoint
class GPoint:
"""
This class contains real-valued x and y fields. It is used to represent
a location on the graphics plane.
"""
# Constructor: GPoint
def __init__(self, x=0, y=0):
"""Initializes a point with the specified coordinates."""
self._x = x
self._y = y
# Public method: get_x
def get_x(self):
"""Returns the x component of the point."""
return self._x
# Public method: get_y
def get_y(self):
"""Returns the y component of the point."""
return self._y
# Public method: __str__
def __str__(self):
"""Returns the string representation of a point."""
return "(" + str(self._x) + ", " + str(self._y) + ")"
# Public method: __eq__
def __eq__(self, other):
"""Returns a Boolean indicating whether two points are equal."""
if isinstance(other, GPoint):
return self._x == other._x and self._y == other._y
return False
# Define camel-case names
getX = get_x
getY = get_y
# Class: GDimension
class GDimension:
"""
This class contains real-valued witdth and height fields. It is
used to indicate the size of a graphical object.
"""
# Constructor: GDimension
def __init__(self, width=0.0, height=0.0):
"""
Initializes a GDimension object with the specified size.
"""
self._width = width
self._height = height
# Public method: get_width
def get_width(self):
"""
Returns the width component of the GDimension.
"""
return self._width
# Public method: get_height
def get_height(self):
"""
Returns the height component of the GDimension.
"""
return self._height
# Public method: __str__
def __str__(self):
return "(" + str(self._width) + ", " + str(self._height) + ")"
# Public method: __eq__
def __eq__(self, other):
if isinstance(other, GDimension):
return (self._width == other._width and
self._height == other._height)
return False
# Define camel-case names
getWidth = get_width
getHeight = get_height
# Class: GRectangle
class GRectangle:
"""
This type contains real-valued x, y, width, and height fields. It is
used to represent the bounding box of a graphical object.
"""
# Constructor: GRectangle
def __init__(self, x=0.0, y=0.0, width=0.0, height=0.0):
"""
Initializes a GRectangle object with the specified
fields.
"""
self._x = x
self._y = y
self._width = width
self._height = height
# Public method: get_x
def get_x(self):
"""
Returns the x component of the upper left corner.
"""
return self._x
# Public method: get_y
def get_y(self):
"""
Returns the x component of the upper left corner.
"""
return self._y
# Public method: get_width
def get_width(self):
"""
Returns the width component of the GRectangle.
"""
return self._width
# Public method: get_height
def get_height(self):
"""
Returns the width component of the GRectangle.
"""
return self._height
# Public method: is_empty
def is_empty(self):
"""
Returns True if the rectangle is empty.
"""
return self._width <= 0 or self._height <= 0
# Public method: add
def add(self, x, y=None):
"""
Adds a GPoint or x/y pair
to this GRectangle.
"""
if isinstance(x, GPoint):
x, y = x.get_x(), x.get_y()
elif isinstance(x, dict):
x, y = x.x, x.y
if x < self._x:
self._width += self._x - x
self._x = x
elif x > self._x + self._width:
self._width = x - self._x
if y < self._y:
self._height += self._y - y
self._y = y
elif y > self._y + self._height:
self._height = y - self._y
# Public method: contains
def contains(self, x, y=None):
"""
Returns True if the specified point is inside the
rectangle.
"""
if isinstance(x, GPoint):
x, y = x.get_x(), x.get_y()
elif isinstance(x, dict):
x, y = x.x, x.y
return (x >= self._x and
y >= self._y and
x < self._x + self._width and
y < self._y + self._height)
# Public method: __str__
def __str__(self):
return ("(" + str(self._x) + ", " + str(self._y) + ", " +
str(self._width) + ", " + str(self._height) + ")")
# Public method: __eq__
def __eq__(self, other):
if isinstance(other, GRectangle):
return (self._x == other._x and
self._y == other._y and
self._width == other._width and
self._height == other._height)
return False
# Define camel-case names
getX = get_x
getY = get_y
getWidth = get_width
getHeight = get_height
isEmpty = is_empty
# Class: GTimer
class GTimer:
"""
This type implements a timer running in the window. This class supports
both one-shot and interval timers.
"""
# Constructor: GTimer
def __init__(self, gw, fn, delay):
"""
Creates a new GTimer that calls fn after the specified delay.
"""
self._gw = gw
self._fn = fn
self._delay = delay
self._repeats = False
self._after_id = None
gw._timers.append(self)
# Public method: set_repeats
def set_repeats(self, flag):
"""
Determines whether the timer should repeat.
"""
self._repeats = flag
# Public method: set_delay
def set_delay(self, delay):
"""
Sets the delay time for this timer.
"""
self._delay = delay
# Public method: start
def start(self):
"""
Starts the timer.
"""
tkc = self._gw._canvas
self._after_id = tkc.after(self._delay, self._timer_ticked)
# Public method: stop
def stop(self):
"""
Stops the timer.
"""
if self._after_id is not None:
tkc = self._gw._canvas
tkc.after_cancel(self._after_id)
self._after_id = None
# Private method: _timer_ticked
def _timer_ticked(self):
self._fn()
if self._repeats and self._after_id is not None:
tkc = self._gw._canvas
self._after_id = tkc.after(self._delay, self._timer_ticked)
# Class: GEvent
class GEvent(object):
"""
This type is the abstract superclass for all events in the graphics
package.
"""
# Constructor: GEvent
def __init__(self):
"""
Creates a new GEvent object. This method should
not be called by clients.
"""
# Public abstract method: get_source
def get_source(self):
"""
Returns the source of this event. Subclasses must override this
method with an appropriate definition.
"""
raise Exception("get_source is not defined in the base class")
# Class: GMouseEvent
class GMouseEvent(GEvent):
"""
This class maintains the data for a mouse event.
"""
# Constructor: GMouseEvent
def __init__(self, tke):
"""
Creates a new GMouseEvent from the corresponding
tkinter event tke.
"""
self._x = tke.x
self._y = tke.y
# Public method: get_x
def get_x(self):
"""
Returns the x coordinate of the mouse event.
"""
return self._x
# Public method: get_y
def get_y(self):
"""
Returns the y coordinate of the mouse event.
"""
return self._y
# Override method: get_source
def get_source(self):
"""
Returns the source of the mouse event, which is always the
root window.
"""
return tkinter._root
# Define camel-class methods
getX = get_x
getY = get_y
getSource = get_source
# Class: GKeyEvent
class GKeyEvent(GEvent):
"""
This class maintains the data for a key event.
"""
# Constructor: GKeyEvent
def __init__(self, tke):
"""
Creates a new GKeyEvent from the corresponding
tkinter event tke.
"""
keysym = tke.keysym.upper()
if len(keysym) > 1:
underscore = keysym.find("_")
if underscore > 0:
self._key = "<" + keysym[0:underscore] + ">"
else:
self._key = "<" + keysym + ">"
else:
self._key = tke.char
# Public method: get_key
def get_key(self):
"""
Returns the character that triggered the event. The return
value will be a single-character string for normal keys and
the name of the key enclosed in angle brackets for special
keys like .
"""
return self._key
# Override method: get_source
def get_source(self):
"""
Returns the source of the key event, which is always the
root window.
"""
return tkinter._root
# Define camel-class methods
getKey = get_key
getSource = get_source
# Class: GState
class GState:
"""
This class implements a simple record type that allows clients to
define and maintain attributes. The purpose of this class it to
allow callback functions to share state with the calling environment.
Although the closure of the callback function makes it possible to
read the contents of variables defined in the caller, Python's
implicit declaration rule makes it impossible to reassign new
values. Having this class makes it possible to avoid introducing
the nonlocal declaration.
"""
# Constructor: GState
def __init__(self):
"""
Creates a new GState with no fields.
"""
pass
# Override method: __str__
def __str__(self):
s = ""
for key in sorted(self.__dict__):
if not key.startswith("_"):
if len(s) > 0:
s += ", "
s += str(key) + ":" + repr(self.__dict__[key])
return "GState(" + s + ")"
# Private function: get_screen_width
def _get_screen_width():
"""
Returns the width of the entire display screen.
"""
return tkinter._root.winfo_screenwidth()
# Private function: get_screen_height
def _get_screen_height():
"""
Returns the height of the entire display screen.
"""
return tkinter._root.winfo_screenheight()
# Private function: convert_color_to_rgb
def _convert_color_to_rgb(color_name):
"""
Converts a color name into an integer that encodes the
red, green, and blue components of the color.
"""
if color_name == "":
return -1
if color_name[0] == "#":
color_name = "0x" + color_name[1:]
return int(color_name, 16)
name = _canonical_color_name(color_name)
if name not in COLOR_TABLE:
raise Exception("set_color: Illegal color - " + color_name)
return COLOR_TABLE[name]
# Private function: convert_rgb_to_color
def _convert_rgb_to_color(rgb):
"""
Converts an rgb value into a name in the form "#rrggbb".
Each of the rr, gg, and bb
values are two-digit hexadecimal numbers indicating the intensity
of that component.
"""
hex_string = hex(0xFF000000 | rgb)
return "#" + hex_string[4:].upper()
# Private function: exit_graphics
def _exit_graphics():
"""
Closes all graphics windows and exits from the application without
waiting for any additional user interaction.
"""
sys.exit()
# Private function: get_program_name
def _get_program_name():
"""
Returns the name of the program.
"""
name = None
try:
stack = inspect.stack()
i = len(stack) - 1
while i >= 0 and name is None:
code = stack[i].code_context[stack[i].index]
rf = code.find("runfile(")
if rf >= 0:
start = rf + len("runfile('")
finish = code.find("'", start)
name = code[start:finish]
else:
i -= 1
if name is None:
i = len(stack) - 1
while i >= 0 and name is None:
if stack[i].filename:
name = stack[i].filename
else:
i -= 1
except Exception:
return "Graphics Window"
if name is None:
return "Graphics Window"
name = name[name.rfind("/") + 1:]
dot = name.find(".")
if dot != -1:
name = name[:dot]
return name
# Private function: canonical_color_name
def _canonical_color_name(str):
result = ""
for char in str:
if not char.isspace() and char != "_":
result += char.lower()
return result
# Private function: dsq
def _dsq(x0, y0, x1, y1):
"""
Returns the square of the distance between two points.
"""
return (x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0)
# Private function: decode_font
def _decode_font(name):
"""
Parses a font string into a tkinter Font object.
This method accepts a font in either the Font.decode
used by Java or in the form of a CSS-based style string.
"""
font = _parse_js_font(name)
if font is None:
font = _parse_java_font(name)
return font
def _parse_js_font(name):
"""
Attempts to parse a font specification as a JavaScript font.
If the parse succeeds, parse_js_font returns the font.
If the parse fails, parse_js_font returns None.
"""
name = name.lower().strip()
family = None
size = -1
weight = "normal"
slant = "roman"
start = 0
while size == -1:
sp = name.find(" ", start)
if sp == -1:
return None
token = name[start:sp]
start = sp + 1
if token == "bold":
weight = "bold"
elif token == "italic":
slant = "italic"
elif token[0].isdigit():
size = _parse_js_units(token)
if size == -1:
return None
else:
return None
families = name[start:].split(",")
if len(families) == 0:
return None
for family in families:
if family.startswith("'") or family.startswith("\""):
family = family[1:-1]
# // Add code to test for existence of font family
return tk_font.Font(family=family, size=-size,
weight=weight, slant=slant)
return None
def _parse_java_font(name):
"""
Attempts to parse a font specification as a Java font.
If the parse succeeds, parse_java_font returns the font.
If the parse fails, parse_java_font returns None.
"""
components = name.lower().strip().split("-")
family = components[0]
weight = "normal"
slant = "roman"
if components[1][0].isdigit():
size = components[1]
else:
size = components[2]
if "bold" in components[1]:
weight = "bold"
if "italic" in components[1]:
slant = "italic"
return tk_font.Font(family=family, size=-size,
weight=weight, slant=slant)
def _parse_js_units(spec):
ux = len(spec)
while ux > 0 and spec[ux - 1] >= "A":
ux = ux - 1
if ux == 0 or ux == len(spec):
return -1
value = float(spec[:ux])
units = spec[ux:]
if units == "em":
return round(16 * value)
elif units == "pt":
return round(value / 0.75)
else:
return round(value)
# Private class: _GTransform
class _GTransform:
def __init__(self, tx=0.0, ty=0.0, rotation=0.0, sf=1.0):
self._tx = tx
self._ty = ty
self._rotation = rotation
self._sf = sf
def __str__(self):
return "{{tx:{} ty:{} rot:{} sf:{}}}".format(self._tx, self._ty,
self._rotation, self._sf)
def get_tx(self):
return self._tx
def get_ty(self):
return self._ty
def get_rotation(self):
return self._rotation
def get_sf(self):
return self._sf
def transform(self, a1, a2=None):
if a2 is None:
x0 = a1.get_x()
y0 = a1.get_y()
else:
x0 = a1
y0 = a2
if self._rotation == 0:
x1 = self._tx + self._sf * x0
y1 = self._ty + self._sf * y0
else:
ct = math.cos(math.radians(self._rotation))
st = math.sin(math.radians(self._rotation))
x1 = self._tx + self._sf * (x0 * ct + y0 * st)
y1 = self._ty + self._sf * (y0 * ct - x0 * st)
return GPoint(x1, y1)
def compose(self, transform):
return _GTransform(self._tx + transform.get_tx(),
self._ty + transform.get_ty(),
rotation=self._rotation + transform._rotation,
sf=self._sf * transform._sf)
# Private class: _EventManager
class _EventManager:
CLICK_MAX_DISTANCE = 2
CLICK_MAX_DELAY = 0.5
DOUBLE_CLICK_TIME = 0.5
def __init__(self, gw):
self._gw = gw
self._down_x = -1
self._down_y = -1
self._press_handler = None
self._release_handler = None
self._motion_handler = None
self._drag_handler = None
self._key_handler = None
self._click_listeners = [ ]
self._dblclick_listeners = [ ]
self._mousedown_listeners = [ ]
self._mouseup_listeners = [ ]
self._mousemove_listeners = [ ]
self._drag_listeners = [ ]
self._key_listeners = [ ]
self._down_x = None
self._down_y = None
self._down_time = None
self._last_click_time = None
def _press_action(self, tke):
self._down_x = tke.x
self._down_y = tke.y
self._down_time = time.time()
e = GMouseEvent(tke)
for fn in self._mousedown_listeners:
fn(e)
def _release_action(self, tke):
e = GMouseEvent(tke)
for fn in self._mouseup_listeners:
fn(e)
if abs(self._down_x - e._x) <= self.CLICK_MAX_DISTANCE:
if abs(self._down_y - e._y) <= self.CLICK_MAX_DISTANCE:
t = time.time()
if t - self._down_time < self.CLICK_MAX_DELAY:
for fn in self._click_listeners:
fn(e)
last_click = self._last_click_time
self._last_click_time = t
if last_click is not None:
if t - last_click < self.DOUBLE_CLICK_TIME:
for fn in self._dblclick_listeners:
fn(e)
self._last_click_time = None
def _motion_action(self, tke):
e = GMouseEvent(tke)
for fn in self._mousemove_listeners:
fn(e)
def _drag_action(self, tke):
e = GMouseEvent(tke)
for fn in self._drag_listeners:
fn(e)
def _key_action(self, tke):
e = GKeyEvent(tke)
for fn in self._key_listeners:
fn(e)
def add_event_listener(self, type, fn):
tkc = self._gw._canvas
if type == "click":
if self._press_handler is None:
self._press_handler = self._press_action
tkc.bind("", self._press_handler)
if self._release_handler is None:
self._release_handler = self._release_action
tkc.bind("", self._release_handler)
if fn not in self._click_listeners:
self._click_listeners.append(fn)
elif type == "mousedown" or type == "press":
if self._press_handler is None:
self._press_handler = self._press_action
tkc.bind("", self._press_handler)
if fn not in self._mousedown_listeners:
self._mousedown_listeners.append(fn)
elif type == "mouseup" or type == "release":
if self._release_handler is None:
self._release_handler = self._release_action
tkc.bind("", self._release_handler)
if fn not in self._mouseup_listeners:
self._mouseup_listeners.append(fn)
elif type == "dblclick":
if self._press_handler is None:
self._press_handler = self._press_action
tkc.bind("", self._press_handler)
if self._release_handler is None:
self._release_handler = self._release_action
tkc.bind("", self._release_handler)
if fn not in self._dblclick_listeners:
self._dblclick_listeners.append(fn)
elif type == "mousemove" or type == "move":
if self._motion_handler is None:
self._motion_handler = self._motion_action
tkc.bind("", self._motion_handler)
if fn not in self._mousemove_listeners:
self._mousemove_listeners.append(fn)
elif type == "drag":
if self._drag_handler is None:
self._drag_handler = self._drag_action
tkc.bind("", self._drag_handler)
if fn not in self._drag_listeners:
self._drag_listeners.append(fn)
elif type == "key":
if self._key_handler is None:
self._key_handler = self._key_action
tkc.bind("", self._key_handler)
tkc.focus_set()
if fn not in self._key_listeners:
self._key_listeners.append(fn)
else:
raise Exception("Illegal event type: " + type)
# Constants
__LINE_TOLERANCE__ = 2
__ARC_TOLERANCE__ = 2
# Color table
COLOR_TABLE = {
"aliceblue": 0xF0F8FF,
"antiquewhite": 0xFAEBD7,
"aqua": 0x00FFFF,
"aquamarine": 0x7FFFD4,
"azure": 0xF0FFFF,
"beige": 0xF5F5DC,
"bisque": 0xFFE4C4,
"black": 0x000000,
"blanchedalmond": 0xFFEBCD,
"blue": 0x0000FF,
"blueviolet": 0x8A2BE2,
"brown": 0xA52A2A,
"burlywood": 0xDEB887,
"cadetblue": 0x5F9EA0,
"chartreuse": 0x7FFF00,
"chocolate": 0xD2691E,
"coral": 0xFF7F50,
"cornflowerblue": 0x6495ED,
"cornsilk": 0xFFF8DC,
"crimson": 0xDC143C,
"cyan": 0x00FFFF,
"darkblue": 0x00008B,
"darkcyan": 0x008B8B,
"darkgoldenrod": 0xB8860B,
"darkgray": 0xA9A9A9,
"darkgrey": 0xA9A9A9,
"darkgreen": 0x006400,
"darkkhaki": 0xBDB76B,
"darkmagenta": 0x8B008B,
"darkolivegreen": 0x556B2F,
"darkorange": 0xFF8C00,
"darkorchid": 0x9932CC,
"darkred": 0x8B0000,
"darksalmon": 0xE9967A,
"darkseagreen": 0x8FBC8F,
"darkslateblue": 0x483D8B,
"darkslategray": 0x2F4F4F,
"darkslategrey": 0x2F4F4F,
"darkturquoise": 0x00CED1,
"darkviolet": 0x9400D3,
"deeppink": 0xFF1493,
"deepskyblue": 0x00BFFF,
"dimgray": 0x696969,
"dimgrey": 0x696969,
"dodgerblue": 0x1E90FF,
"firebrick": 0xB22222,
"floralwhite": 0xFFFAF0,
"forestgreen": 0x228B22,
"fuchsia": 0xFF00FF,
"gainsboro": 0xDCDCDC,
"ghostwhite": 0xF8F8FF,
"gold": 0xFFD700,
"goldenrod": 0xDAA520,
"gray": 0x808080,
"grey": 0x808080,
"green": 0x008000,
"greenyellow": 0xADFF2F,
"honeydew": 0xF0FFF0,
"hotpink": 0xFF69B4,
"indianred": 0xCD5C5C,
"indigo": 0x4B0082,
"ivory": 0xFFFFF0,
"khaki": 0xF0E68C,
"lavender": 0xE6E6FA,
"lavenderblush": 0xFFF0F5,
"lawngreen": 0x7CFC00,
"lemonchiffon": 0xFFFACD,
"lightblue": 0xADD8E6,
"lightcoral": 0xF08080,
"lightcyan": 0xE0FFFF,
"lightgoldenrodyellow": 0xFAFAD2,
"lightgray": 0xD3D3D3,
"lightgrey": 0xD3D3D3,
"lightgreen": 0x90EE90,
"lightpink": 0xFFB6C1,
"lightsalmon": 0xFFA07A,
"lightseagreen": 0x20B2AA,
"lightskyblue": 0x87CEFA,
"lightslategray": 0x778899,
"lightslategrey": 0x778899,
"lightsteelblue": 0xB0C4DE,
"lightyellow": 0xFFFFE0,
"lime": 0x00FF00,
"limegreen": 0x32CD32,
"linen": 0xFAF0E6,
"magenta": 0xFF00FF,
"maroon": 0x800000,
"mediumaquamarine": 0x66CDAA,
"mediumblue": 0x0000CD,
"mediumorchid": 0xBA55D3,
"mediumpurple": 0x9370DB,
"mediumseagreen": 0x3CB371,
"mediumslateblue": 0x7B68EE,
"mediumspringgreen": 0x00FA9A,
"mediumturquoise": 0x48D1CC,
"mediumvioletred": 0xC71585,
"midnightblue": 0x191970,
"mintcream": 0xF5FFFA,
"mistyrose": 0xFFE4E1,
"moccasin": 0xFFE4B5,
"navajowhite": 0xFFDEAD,
"navy": 0x000080,
"oldlace": 0xFDF5E6,
"olive": 0x808000,
"olivedrab": 0x6B8E23,
"orange": 0xFFA500,
"orangered": 0xFF4500,
"orchid": 0xDA70D6,
"palegoldenrod": 0xEEE8AA,
"palegreen": 0x98FB98,
"paleturquoise": 0xAFEEEE,
"palevioletred": 0xDB7093,
"papayawhip": 0xFFEFD5,
"peachpuff": 0xFFDAB9,
"peru": 0xCD853F,
"pink": 0xFFC0CB,
"plum": 0xDDA0DD,
"powderblue": 0xB0E0E6,
"purple": 0x800080,
"rebeccapurple": 0x663399,
"red": 0xFF0000,
"rosybrown": 0xBC8F8F,
"royalblue": 0x4169E1,
"saddlebrown": 0x8B4513,
"salmon": 0xFA8072,
"sandybrown": 0xF4A460,
"seagreen": 0x2E8B57,
"seashell": 0xFFF5EE,
"sienna": 0xA0522D,
"silver": 0xC0C0C0,
"skyblue": 0x87CEEB,
"slateblue": 0x6A5ACD,
"slategray": 0x708090,
"slategrey": 0x708090,
"snow": 0xFFFAFA,
"springgreen": 0x00FF7F,
"steelblue": 0x4682B4,
"tan": 0xD2B48C,
"teal": 0x008080,
"thistle": 0xD8BFD8,
"tomato": 0xFF6347,
"turquoise": 0x40E0D0,
"violet": 0xEE82EE,
"wheat": 0xF5DEB3,
"white": 0xFFFFFF,
"whitesmoke": 0xF5F5F5,
"yellow": 0xFFFF00,
"yellowgreen": 0x9ACD32,
"color.black": 0x000000,
"color.darkgray": 0x595959,
"color.gray": 0x999999,
"color.lightgray": 0xBFBFBF,
"color.white": 0xFFFFFF,
"color.red": 0xFF0000,
"color.yellow": 0xFFFF00,
"color.green": 0x00FF00,
"color.cyan": 0x00FFFF,
"color.blue": 0x0000FF,
"color.magenta": 0xFF00FF,
"color.orange": 0xFFC800,
"color.pink": 0xFFAFAF
}
# Check for successful compilation
# Original file: scanner.py
# Class: Scanner
# This class uses Python's tokenize package to build a token scanner
# that is similar to the TokenScanner used in the portable library
# framework.
class Scanner:
def __init__(self, input=""):
self.set_input(input)
def set_input(self, input):
if isinstance(input, str):
self._source = io.StringIO(input)
else:
self._source = input
self._tokenizer = tokenize.generate_tokens(self._source.readline)
self._saved_tokens = [ ]
self._last_token = None
def has_more_tokens(self):
token = self.next_token()
self.save_token(token)
return token != ""
def next_token(self):
if self._saved_tokens:
if self._saved_tokens[-1].get_token_type() == tokenize.ENDMARKER:
self._last_token = self._saved_tokens[-1]
else:
self._last_token = self._saved_tokens.pop()
else:
pytoken = self._tokenizer.__next__()
self._last_token = Token(pytoken)
return self._last_token
def save_token(self, token):
self._saved_tokens.append(token)
def get_last_token(self):
"""Returns the last token read."""
return self._last_token
def get_token_type(self, token):
return token.get_token_type()
def verify_token(self, expected):
"""Checks that the token appears next in the input stream."""
token = self.next_token()
if token != expected:
if token == "":
msg = "Missing " + mark_code(expected)
else:
msg = "Found {} when expecting {}".format(token, expected)
raise Exception(msg)
# Constants
WORD = tokenize.NAME
NAME = tokenize.NAME
NUMBER = tokenize.NUMBER
STRING = tokenize.STRING
OPERATOR = tokenize.OP
NL = tokenize.NL
NEWLINE = tokenize.NEWLINE
COMMENT = tokenize.COMMENT
INDENT = tokenize.INDENT
DEDENT = tokenize.DEDENT
EOF = tokenize.ENDMARKER
# Class: Token
class Token:
def __init__(self, pytoken):
self._pytoken = pytoken
def __str__(self):
if self._pytoken.type == tokenize.ENDMARKER:
return ""
elif self._pytoken.type == tokenize.NL:
return ""
elif self._pytoken.type == tokenize.NEWLINE:
return ""
elif self._pytoken.type == tokenize.INDENT:
return ""
elif self._pytoken.type == tokenize.DEDENT:
return ""
else:
return self._pytoken.string
def get_python_token(self):
return self._pytoken
def get_token_type(self):
return self._pytoken.type
def get_start(self):
return self._pytoken.start
def get_end(self):
return self._pytoken.end
def __eq__(self, other):
return str(self) == str(other)
# Constants
WORD = tokenize.NAME
NAME = tokenize.NAME
NUMBER = tokenize.NUMBER
STRING = tokenize.STRING
OPERATOR = tokenize.OP
NL = tokenize.NL
NEWLINE = tokenize.NEWLINE
INDENT = tokenize.INDENT
DEDENT = tokenize.DEDENT
# Original file: codevector.py
"""
This module exports the CodeVector class, which implements an expandable
code sequence.
"""
# Class: CodeVector
class CodeVector:
"""
This class implements an expandable code array in which each instruction
is a 32-bit integer. The instruction codes are defined as constants
in the SVMOp class.
"""
def __init__(self):
"""Creates an empty code vector."""
self._code = [ ]
self._labels = { }
self._label_refs = { }
self._int_refs = { }
self._string_refs = { }
self._label_count = 0
self._source = None
def add_word(self, word):
"""Adds a 32-bit word to the code vector."""
self._code.append(word)
def add_instruction(self, op, addr=0):
"""Adds an instruction to the code vector."""
self.add_word((op << 24) | addr)
def get_current_address(self):
"""Returns the address of the next instruction."""
return len(self._code)
def new_label(self):
"""Returns a label used for internal references within the code."""
label = "#" + str(self._label_count)
self._label_count += 1
return label
def define_label(self, label):
"""Defines a label as the address of the current instruction."""
self.define_symbol(label, self.get_current_address())
def define_symbol(self, label, value):
"""Defines a label so that it has the specified value."""
self._labels[self.create_module_label(label)] = value
def is_defined(self, label):
"""Returns True if the label is defined."""
return self.create_module_label(label) in self._labels
def get_label(self, label):
"""Returns the value of the label."""
module_label = self.create_module_label(label)
if module_label in self._labels:
return self._labels.get(module_label)
else:
raise Exception("Undefined symbol " + label)
def label_ref(self, label):
"""Creates a reference to the specified label."""
module_label = self.create_module_label(label)
if module_label in self._labels:
return self._labels.get(module_label)
else:
refs = self._label_refs.get(module_label)
if refs is None:
refs = [ ]
self._label_refs[module_label] = refs
refs.append(len(self._code))
return 0
def string_ref(self, s):
"""Returns a reference to the specified string."""
refs = self._string_refs.get(s)
if refs is None:
refs = [ ]
self._string_refs[s] = refs
refs.append(len(self._code))
return 0
def int_ref(self, n):
"""Returns a reference to an integer."""
refs = self._int_refs.get(n)
if refs is None:
refs = [ ]
self._int_refs[n] = refs
refs.append(len(self._code))
return 0
def get_code(self):
"""Gets the array of integers corresponding to the code."""
self.resolve_references()
n = len(self._code)
array = [ 0 ] * n
for i in range(n):
array[i] = self._code[i]
return array
def set_source(self, source):
"""Sets the source for the code."""
self._source = source
def get_source(self):
"""Gets the source for the code."""
return self._source
def set_module_name(self, name):
"""Sets the module name."""
self._module_name = name
def get_module_name(self):
"""Gets the module name."""
return self._module_name
def create_module_label(self, label):
"""Adds the module name to any label beginning with a dollar sign."""
if label.startswith("$"):
return module_name + label
else:
return label
def resolve_references(self):
for label in self._label_refs:
if label in self._labels:
refs = self._label_refs.get(label)
value = self._labels.get(label)
for addr in refs:
self._code[addr] = self._code[addr] + value
else:
raise Exception("Unresolved reference: " + label)
for s in self._string_refs:
start = len(self._code)
refs = self._string_refs.get(s)
array = bytearray(s, "utf-8")
shift = 24
word = 0
for b in array:
word |= b << shift
shift -= 8
if shift < 0:
self._code.append(word)
shift = 24
word = 0
if shift == 24:
self._code.append(0)
else:
self._code.append(word)
for addr in refs:
self._code[addr] = self._code[addr] + start
for n in self._int_refs:
start = len(self._code)
refs = int_refs.get(n)
code.append(n)
for addr in refs:
self._code[addr] = self._code[addr] + start
@staticmethod
def get_string(code, addr):
"""Gets a string stored at addr in the code array."""
array = bytearray()
index = 0
shift = 24
finished = False
while not finished:
b = (code[addr + index] >> shift) & 0xFF
if b == 0:
finished = True
else:
array.append(b)
shift -= 8
if shift < 0:
index += 1
shift = 24
return array.decode("utf-8")
# Unit test
# Original file: codewindow.py
"""
This module defines a simple CodeWindow class, which implements a
scrollable code viewer as an independent tkinter window. This
implementation is limited to a side-by-side geometry with a
graphics window.
"""
# Class: CodeWindow
class CodeWindow(GWindow):
"""Implements a scrollable code window."""
# Implementation notes: CodeWindow
# --------------------------------
# Unlike most constructors, this function does not call the superclass
# constructor because the code needs to defer the display. Inheriting
# for GWindow ensures that all the methods are present, but the code
# must explicitly assemble the internal state so that it behaves like
# a GWindow.
def __init__(self, gw, width, height=None):
"""
Creates a new code window that will be positioned to the
right of the GWindow gw, although the window does not
immediately appear on the screen. Clients should create
the CodeWindow first, set any display parameters such as
font and line spacing, and then call set_code to display
the window. If height is not specified, it is set to
match the height of gw.
"""
if height is None:
height = gw.get_height()
self._gw = gw
self._window_width = width
self._window_height = height
self._family = CodeWindow.DEFAULT_FONT_FAMILY
self._pointsize = CodeWindow.DEFAULT_POINTSIZE
self._spacing = CodeWindow.DEFAULT_SPACING
self._left_margin = CodeWindow.DEFAULT_LEFT_MARGIN
self._top_margin = CodeWindow.DEFAULT_TOP_MARGIN
self._keywords = { };
self._base = GCompound()
self._base._gw = self
self._highlight = None
def set_code(self, code):
"""Sets the code and displays the window."""
if not isinstance(code, str):
code = "\n".join(code) + "\n"
self._compound = self._create_code_labels(code)
self._create_window()
self.add(self._compound)
def set_font(self, font):
self._font = font
def set_spacing(self, spacing):
self._spacing = spacing
def add_keyword(self, keyword, color=None):
if color is None:
color = CodeWindow.KEYWORD_COLOR
self._keywords[keyword] = color
def set_highlight(self, linenum):
self.clear_highlight()
self._highlight = self.create_highlight_box(linenum)
self.add(self._highlight)
self.ensure_visible(linenum)
def clear_highlight(self):
if self._highlight is not None:
self.remove(self._highlight)
def create_highlight_box(self, linenum):
if linenum in self._linemap:
start,end = self._linemap[linenum]
x = start - 2
w = end - start + 4
else:
x = self._left_margin
w = 5
y = self._top_margin + (linenum - 2) * self._spacing + 4
h = self._spacing
box = GRect(x, y, w, h)
box.set_color("Red");
box.set_line_width(2)
return box
# Private methods
def _create_code_labels(self, code):
compound = GCompound()
self._font = "bold " + str(self._pointsize) + "px " + self._family
self._ufont = None
if self._family != "Monaco":
self._ufont = "bold " + str(self._pointsize) + "px " + "'Monaco'"
self._linemap = { }
space = GLabel(" ")
space.set_font(self._font)
self._cwidth = space.get_width()
scanner = Scanner(code)
prev = -1
while scanner.has_more_tokens():
token = scanner.next_token()
ttype = scanner.get_token_type(token)
if ttype == Scanner.STRING:
color = CodeWindow.STRING_COLOR
elif ttype == Scanner.NUMBER:
color = CodeWindow.STRING_COLOR
elif ttype == Scanner.COMMENT:
color = CodeWindow.COMMENT_COLOR
elif str(token) in self._keywords:
color = self._keywords[str(token)]
else:
color = CodeWindow.CODE_COLOR
if ttype in CodeWindow.VISIBLE_TYPES:
row,col = token.get_start()
x = self._left_margin + col * self._cwidth
y = self._top_margin + (row - 1) * self._spacing
if row != prev:
if prev != -1:
self._linemap[prev] = (start,end)
start = x
prev = row
lines = str(token).splitlines()
nlines = len(lines)
for i in range(nlines):
line = lines[i]
if self._ufont is None:
label = GLabel(line)
label.set_font(self._font)
label.set_color(color)
compound.add(label, x, y)
x += label.get_width()
end = x
else:
parts = line.split("_")
for i in range(len(parts)):
if i > 0:
label = GLabel("_")
label.set_font(self._ufont)
label.set_color(color)
compound.add(label, x, y)
x += label.get_width()
label = GLabel(parts[i])
label.set_font(self._font)
label.set_color(color)
compound.add(label, x, y)
x += label.get_width()
end = x
if i < nlines - 1:
x = self._left_margin
y += self._spacing
row += 1
if prev != -1:
self._linemap[prev] = (start,end)
return compound
def _create_window(self):
gw = self._gw
width = self._window_width
height = self._window_height
cwidth = self._compound.getWidth()
cheight = self._compound.getHeight()
tk = gw._tk
self._tk = tk
gwc = gw._canvas
gwc.pack_forget()
frame = tkinter.Frame(tk, width=width, height=height,
highlightthickness=0)
border = tkinter.Canvas(tk, width=1, height=height,
highlightthickness=0, bg="#000000")
cwc = tkinter.Canvas(frame, width=width, height=height,
scrollregion=(0, 0, cwidth, cheight),
highlightthickness=0, background="white")
hbar = None
if cwidth > width:
hbar = tkinter.Scrollbar(frame, orient=tkinter.HORIZONTAL)
hbar.pack(side=tkinter.BOTTOM, fill=tkinter.X)
hbar.config(command=cwc.xview)
vbar = None
if cheight > height:
vbar = tkinter.Scrollbar(frame, orient=tkinter.VERTICAL)
vbar.pack(side=tkinter.RIGHT, fill=tkinter.Y)
vbar.config(command=cwc.yview)
self._window_width = width
self._window_height = height
self._canvas = cwc
self._active = True
bounds = "{}x{}".format(gw._window_width + width + 1, height)
tk.geometry(bounds)
tk.resizable(width=0, height=0)
gwc.pack(side=tkinter.LEFT)
border.pack(side=tkinter.LEFT)
frame.pack(side=tkinter.LEFT)
cwc.pack(side=tkinter.LEFT, expand=True, fill=tkinter.BOTH)
if hbar is not None and vbar is not None:
cwc.config(xscrollcommand=hbar.set, yscrollcommand=vbar.set)
elif hbar is not None:
cwc.config(xscrollcommand=hbar.set)
elif vbar is not None:
cwc.config(yscrollcommand=vbar.set)
self._hbar = hbar
self._vbar = vbar
def ensure_visible(self, linenum):
"""Ensures that the specified line is visible."""
if self._vbar is None:
return
h = self._compound.get_height()
y = self._top_margin + (linenum - 1) * self._spacing
start,end = self._vbar.get()
top = start * h
bottom = end * h
if y < top or y > bottom:
start = max(0.0, (y - self._window_height / 2) / h)
end = min(1.0, start + self._window_height / h)
self._canvas.yview_moveto(start)
# Constants
DEFAULT_FONT_FAMILY = "Monaco"
DEFAULT_POINTSIZE = 18
DEFAULT_SPACING = 20
DEFAULT_LEFT_MARGIN = 6
DEFAULT_TOP_MARGIN = 18
VISIBLE_TYPES = {
Scanner.COMMENT,
Scanner.WORD,
Scanner.NUMBER,
Scanner.STRING,
Scanner.OPERATOR
}
STRLIT_COLOR = "#006600"
COMMENT_COLOR = "#009999"
KEYWORD_COLOR = "#CC6600"
BUILTIN_COLOR = "#993399"
ERROR_COLOR = "#FF0000"
CODE_COLOR = "Black"
DOCSTRING_COLOR = STRLIT_COLOR
STRING_COLOR = STRLIT_COLOR
NUMBER_COLOR = CODE_COLOR
# Original file: exp.py
"""
This package defines a simple expression hierarchy for Python.
"""
# Class: Expression
class Expression:
"""This abstract class forms the top of the expression hierarchy."""
def __init__(self):
"""Common initializer (not called by clients)."""
self._start = -1
self._end = -1
# Abstract methods
def eval(self, ec):
"""Evaluates the expression in the evaluation context ec."""
raise NotImplementedError("No eval method defined")
def get_type(self):
"""Returns the type code for this expression."""
raise NotImplementedError("No get_type method defined")
def is_operator():
"""Returns True if this expression is an operator."""
return False
# Public methods
def set_bounds(self, start, end):
"""Sets the boundary markers to the (row,col) pairs start and end."""
self._start = start
self._end = end
def get_start(self):
"""Returns the tuple (row,col) of the start of this expression."""
return self._start
def get_end(self):
"""Returns the tuple (row,col) of the end of this expression."""
return self._end
# Generator methods
# Implementation notes
# --------------------
# The eval_generator method returns a generator that implements a
# postorder walk on the evaluation tree. On each call, the generator
# returns a tuple consisting of the expression and its value.
def eval_generator(self, ec):
"""Returns a generator that calls back on the each subexpression."""
yield from self.eval_step(ec)
def eval_step(self, ec):
v = self.eval(ec)
yield (self,v)
# Static methods
@staticmethod
def eval_args(args, ec):
actuals = [ ]
for arg in args:
actuals.append(arg.eval(ec))
return actuals
# Constants
CONSTANT = 1
IDENTIFIER = 2
COMPOUND = 3
OPERATOR = 4
FUNCTION = 5
# Class: Compound
class Compound(Expression):
def __init__(self, fn, args):
Expression.__init__(self)
self._fn = fn
self._args = args
def __str__(self):
s = ""
for arg in self._args:
if len(s) > 0:
s += ", "
s += str(arg)
return str(self._fn) + "(" + s + ")"
def get_type(self):
return Expression.COMPOUND
def get_function(self):
return self._fn
def get_args(self):
return self._args
def eval(self, ec):
fn = self.get_function()
actuals = [ ]
for arg in self.get_args():
actuals.append(arg.eval(ec))
return ec.apply(fn, actuals)
def eval_step(self, ec):
fn = self.get_function()
actuals = [ ]
for arg in self.get_args():
for e,v in arg.eval_generator(ec):
yield (e,v)
actuals.append(v)
v = ec.apply(fn, actuals)
yield (self,v)
@staticmethod
def create(fn, *args):
return Compound(fn, args)
# Class: Constant
class Constant(Expression):
def __init__(self, value):
Expression.__init__(self)
self._value = value
def __str__(self):
return str(self._value)
def get_type(self):
return Expression.CONSTANT
def get_value(self):
return self._value
def eval(self, ec):
return ec.eval_constant(self)
@staticmethod
def create(value):
return Constant(value)
# Class: Identifier
class Identifier(Expression):
def __init__(self, name):
Expression.__init__(self)
self._name = str(name)
def __str__(self):
return self._name
def get_type(self):
return Expression.IDENTIFIER
def get_name(self):
return self._name
def eval(self, ec):
return ec.eval_identifier(self)
def get(self, ec):
return ec.get_value(self._name)
def set(self, ec, value):
ec.set_value(self._name, value)
@staticmethod
def create(name):
return Identifier(name)
# Class: EvalContext
# Implementation notes: EvalContext
# ---------------------------------
# In the Java implementation, EvalContext is an interface and therefore
# only specifies the methods. This class provides a simple implementation
# that is used in the unit test at the end of this file. Other clients
# can either extend this class or implement the same methods.
class EvalContext:
def __init__(self):
self._symtab = { }
def get_value(self, name):
"""Returns the value of the identifier in this context."""
return self._symtab.get(str(name))
def set_value(self, name, value):
self._symtab[str(name)] = value
def is_defined(self, name):
"""Returns True if the identifier is defined in this context."""
return str(name) in self._symtab
def eval_constant(self, exp):
"""Evaluates a constant expression."""
return exp.get_value()
def eval_identifier(self, exp):
"""Evaluates an identifier expression."""
return self.get_value(exp.get_name())
def apply(self, fn, actuals):
"""Applies a function to a list of evaluated arguments."""
return fn.apply(actuals)
# Class: Value
class Value:
"""This class implements a type-value pair."""
def __init__(self, type, value):
self._type = type
self._value = value
self._properties = None
def __str__(self):
"""Convert this value to a string."""
if self._value is None:
return "null"
if self.is_integral():
return str(self.get_integer_value())
return str(self._value)
def get_type(self):
"""Returns the type of this object."""
return self._type
def get_value(self):
"""Returns the value of this object."""
return self._value
def set_property(self, key, value):
"""Sets a property for this value."""
if self._properties is None:
self._properties = { }
self._properties[key] = value
def get_property(self, key, value=None):
"""Returns the specified property for this value."""
if self._properties is None:
return value
return self._properties.get(name, value)
def is_integral(self):
"""Returns True if the value is equal to an integer."""
if self._type == Value.INTEGER:
return True
elif self._type == Value.DOUBLE:
return float.is_integer(self._value)
else:
return False
def is_numeric(self):
"""Returns True if this value is numeric."""
return self._type == Value.INTEGER or self._type == Value.DOUBLE
def get_integer_value(self):
"""Returns the value of this object coerced to an int."""
if self._type == Value.INTEGER:
return self._value
elif self._type == Value.DOUBLE:
if not float.is_integer(self._value):
raise Exception("Illegal integer")
return int(self._value)
else:
raise Exception("Illegal integer")
def get_double_value(self):
"""Returns the value of this object coerced to a double."""
if self._type == Value.INTEGER or self._type == Value.DOUBLE:
return float(self._value)
else:
raise Exception("Illegal double")
def get_string_value(self):
"""Returns the value of this object coerced to a string."""
return str(self._value)
def get_boolean_value(self):
"""Returns the value of this object coerced to a boolean."""
if self._type != Value.BOOLEAN:
raise Exception("Illegal boolean")
return self._value
@staticmethod
def create_integer(n):
"""Creates an integer value."""
return Value(Value.INTEGER, n)
@staticmethod
def create_double(d):
"""Creates a double-precision value."""
return Value(Value.DOUBLE, d)
@staticmethod
def create_boolean(b):
"""Creates a Boolean value."""
return Value(Value.BOOLEAN, b)
@staticmethod
def create_character(ch):
"""Creates a character value."""
return Value(Value.CHARACTER, ch)
@staticmethod
def create_string(s):
"""Creates a string value."""
return Value(Value.STRING, s)
# Constants
ASSIGNABLE = "$ASSIGNABLE"
BOOLEAN = "$BOOLEAN"
CHARACTER = "$CHARACTER"
DOUBLE = "$DOUBLE"
FUNCTION = "$FUNCTION"
INTEGER = "$INTEGER"
LONG = "$LONG"
OBJECT = "$OBJECT"
REF = "$REF"
STRING = "$STRING"
VOID = "$VOID"
Value.TRUE = Value(Value.BOOLEAN, True)
Value.FALSE = Value(Value.BOOLEAN, False)
Value.NULL = Value(Value.REF, "null")
Value.UNDEFINED = Value(Value.VOID, "undefined")
# Original file: pglapp.py
"""
This module defines the structure of an application that runs
using the Portable Graphics Library.
"""
class PGLApplication(GWindow):
"""
This class is the root of a hierarchy for applications that
run in a PGL GWindow.
"""
def __init__(self, width, height):
"""Creates a new PGLApplication object."""
GWindow.__init__(self, width, height)
self.add_event_listener("click", self.mouse_click)
self.add_event_listener("mousedown", self.mouse_down)
self.add_event_listener("mouseup", self.mouse_up)
self.add_event_listener("mousemove", self.mouse_move)
self.add_event_listener("drag", self.mouse_drag)
self._current_obj = None
def run(self):
"""Runs the application."""
# Subclasses override this method
def add_control_strip(self, controls, x, y):
"""Adds a control strip containing the specified controls."""
self._controls = { }
for name in controls.split("+"):
cname = "PGL" + name + "Control"
control = importlib.__import__(cname).__dict__[cname]()
self.add(control, x, y)
x += PGLApplication.CONTROL_SEP
self._controls[name] = control
def get_control(self, name):
return self._controls[name]
def mouse_click(self, e):
obj = self.get_element_at(e.get_x(), e.get_y())
attr = None
if obj is not None:
attr = getattr(obj, "click_action", None)
if attr is None:
obj = self
attr = getattr(obj, "click_action", None)
if attr is not None:
attr(e)
def mouse_down(self, e):
obj = self.get_element_at(e.get_x(), e.get_y())
attr = None
if obj is not None:
attr = getattr(obj, "mousedown_action", None)
if attr is None:
obj = self
attr = getattr(obj, "mousedown_action", None)
if attr is not None:
attr(e)
def mouse_up(self, e):
obj = self.get_element_at(e.get_x(), e.get_y())
attr = None
if obj is not None:
attr = getattr(obj, "mouseup_action", None)
if attr is None:
obj = self
attr = getattr(obj, "mouseup_action", None)
if attr is not None:
attr(e)
def mouse_move(self, e):
obj = self.get_element_at(e.get_x(), e.get_y())
if self._current_obj is None and obj is not None:
self._current_obj = obj
attr = getattr(obj, "mouseenter_action", None)
if attr is not None:
attr(e)
if self._current_obj != obj:
attr = getattr(self._current_obj, "mouseexit_action", None)
if attr is not None:
attr(e)
self._current_obj = None
attr = None
if obj is not None:
attr = getattr(obj, "mousemove_action", None)
if attr is None:
obj = self
attr = getattr(obj, "mousemove_action", None)
if attr is not None:
attr(e)
def mouse_drag(self, e):
obj = self.get_element_at(e.get_x(), e.get_y())
attr = None
if obj is not None:
attr = getattr(obj, "drag_action", None)
if attr is None:
obj = self
attr = getattr(obj, "drag_action", None)
if attr is not None:
attr(e)
# Constants
CONTROL_SEP = 65
# Class: PGLControl
class PGLControl(GCompound):
def __init__(self):
"Creates a new control."""
GCompound.__init__(self)
self._icon = None
self._icons = { }
self._listeners = [ ]
def set_name(self, name):
"""Sets the name of this control."""
self._name = name
def get_name(self):
"""Gets the name for this control."""
return self._name
def add_action_listener(self, listener):
"""Adds an action listener to this control."""
self._listeners.append(listener)
def remove_action_listener(self, listener):
"""Removes an action listener from this control."""
self._listeners.remove(listener)
def fire_action_listeners(self):
"""Fires the action listeners for this control."""
for listener in self._listeners:
listener()
def set_state(self, state):
"""Sets the state of this control."""
self._state = state
if self._icon is not None:
self.remove(self._icon)
self._icon = self._icons[state]
self.add(self._icon)
self._icon.send_to_back()
def state_changed(self):
"""Called when the controller state changes."""
pass
def execute(self):
"""Executes this control in the context of the current controller."""
self.fire_action_listeners()
def update(self):
if self._updater is not None:
self._updater.update(self)
def set_updater(self, updater):
self._updater = updater
def set_active_icon(self, icon):
if isinstance(icon, str):
icon = self.create_image_icon(icon)
self._icons[PGLControl.ACTIVE] = icon
def set_disabled_icon(self, icon):
if isinstance(icon, str):
icon = self.create_image_icon(icon)
self._icons[PGLControl.DISABLED] = icon
def set_pressed_icon(self, icon):
if isinstance(icon, str):
icon = self.create_image_icon(icon)
self._icons[PGLControl.PRESSED] = icon
def set_rollover_icon(self, icon):
if isinstance(icon, str):
icon = self.create_image_icon(icon)
self._icons[PGLControl.ROLLOVER] = icon
def create_image_icon(self, url):
image = GImage(url)
image.scale(PGLControl. ICON_SF)
return image
def mouseenter_action(self, e):
"""Called when the mouse enters the interactor."""
if self._state == PGLControl.ACTIVE:
self.set_state(PGLControl.ROLLOVER)
def mouseexit_action(self, e):
"""Called when the mouse exits the interactor."""
if self._state == PGLControl.ROLLOVER:
self.set_state(PGLControl.ACTIVE)
def mousedown_action(self, e):
"""Called when the mouse is pressed in the interactor."""
if self._state in { PGLControl.ROLLOVER, PGLControl.ACTIVE }:
self.set_state(PGLControl.PRESSED)
def mouseup_action(self, e):
"""Called when the mouse is pressed in the interactor."""
if self._state == PGLControl.PRESSED:
self.set_state(PGLControl.ROLLOVER)
def click_action(self, e):
if self._state != PGLControl.DISABLED:
self.fire_action_listeners()
# Constants
ACTIVE = "ACTIVE"
DISABLED = "DISABLED"
PRESSED = "PRESSED"
ROLLOVER = "ROLLOVER"
ICON_SF = 0.2
CONTROL_SIZE = 279 * ICON_SF
# Original file: filechooser.py
# Version: 0.6 (17-Jan-21)
"""
The filechooser module implements a simple wrapper for the filedialog
class in Tkinter, which is the most common graphics package for use
with Python.
"""
try:
import tkinter
try:
import tkinter.filedialog as tkFileDialog
except Exception:
import tkFileDialog
except Exception as e:
print('Could not load tkinter: ' + str(e))
# Function: choose_input_file
def choose_input_file(dir=".", title="Open File", initialfile=None):
"""
Opens a file chooser for selecting an input file.
"""
try:
tk = tkinter._root
except AttributeError:
tk = tkinter.Tk()
tkinter._root = tk
tk.withdraw()
filename = tkFileDialog.askopenfilename(parent=None,
initialdir=dir,
initialfile=initialfile,
title=title)
tk.update()
return filename
# Function: choose_output_file
def choose_output_file(dir=".", title="Save File", initialfile=None):
"""
Opens a file chooser for selecting an output file.
"""
try:
tk = tkinter._root
except AttributeError:
tk = tkinter.Tk()
tkinter._root = tk
tk.withdraw()
filename = tkFileDialog.asksaveasfilename(parent=None,
initialdir=dir,
initialfile=initialfile,
title=title)
tk.update()
return filename
# Define camel-case names
chooseOutputFile = choose_output_file
chooseInputFile = choose_input_file
# Check for successful compilation
# Original file: mvc.py
"""
This module implements the model-view-controller (MVC) pattern.
"""
# Class: Model
class Model:
"""
This abstract class defines the interface for a model in the
MVC pattern. Subclasses override the methods to support specific
controller models.
"""
def __init__(self):
"""Initializes the model."""
self._views = [ ]
def __str__(self):
"""Returns a string version of the model."""
return "<" + self.__class__.__name__ + ">"
def reset(self):
"""Resets the controller state for the class."""
def step(self):
"""Executes one step in the execution of the model."""
def is_finished(self):
"""Returns True if the execution of the class is complete."""
return False
def is_callable(self):
"""Returns True if this model supports call/return operations."""
return False
def get_stack_depth(self):
"""Returns the current stack depth for the model."""
return 0;
def add_view(self, view):
"""Adds a view to this model."""
self._views.append(view)
def remove_view(self, view):
"""Removes a view from this model."""
if view in self._views:
self._views.remove(view)
def update_views(self):
"""Updates all views that are monitoring this model."""
for view in self._views:
view.update(self)
# Class: View
class View:
"""
This class defines the interface for a view in the MVC pattern.
Most clients will not extend View but instead define a new class
that implements the update method.
"""
def update(self, model):
"""Updates the view for the specified model."""
# Class: Controller
class Controller:
"""
This class is the base class for implementing the controller
component of the model/view/controller (MVC) pattern.
"""
def __init__(self):
"""Creates a Controller object."""
self._controls = { }
self._step_hooks = [ ]
self._finish_hooks = [ ]
self._error_handler = None
self._speed_control = None
self._target = self
self._timer = None
self._cstate = Controller.INITIAL
self._fail_on_errors = True
def set_model(self, obj):
"""Sets the model for this controller."""
self._model = obj
self._timer = self.create_timer(0, self.timer_action)
self.set_speed(50)
def set_target(self, target):
self._target = target
def get_target(self):
return self._target
def get_model(self):
"""Returns the model of this controller."""
return self._model
def add_control(self, control):
"""Adds the control to the list of controls for this controller."""
self._controls[control.get_name()] = control
control.set_controller(self)
# self.add_change_listener(control)
# if control.get_name() == "Speed":
# speed_control = (Adjustable) control
# speed_control.add_adjustment_listener(speed_listener)
# set_speed(speed_control.get_value())
def get_control(self, name):
"""Gets the control filed under the specified name."""
return self._controls.get(name)
def set_state(self, state):
"""Sets the controller state."""
self._cstate = state
def get_state(self):
"""Returns the state of the controller."""
return self._cstate
def set_fail_on_errors(self, flag):
"""Sets a flag indicating whether errors should simply fail."""
self._fail_on_errors = flag
def get_fail_on_errors(self):
"""Returns the setting of the fail_on_errors flag."""
return self._fail_on_errors
def get_state_name(self, state):
"""Translates a numeric controller state code into a state name."""
return Controller.STATE_NAMES[state]
def is_active(self):
"""Returns True if the controller is in an active state."""
return self._cstate in Controller.ACTIVE_STATES
def start_action(self):
"""Triggers a "start" action."""
self.start(Controller.RUNNING)
def stop_action(self):
"""Triggers a "stop" action."""
if self.is_active():
self.stop(Controller.STOPPED)
def step_action(self):
"""Triggers a "step" action."""
self.start(Controller.STEPPING)
def call_action(self):
"""Triggers a "call" action."""
if self._model.is_callable():
self._call_depth = self._model.get_stack_depth()
self.start(Controller.CALLING)
else:
self.start(Controller.STEPPING)
def speed_to_timer_delay(self, speed):
"""Converts a speed into the corresponding timer delay."""
if speed > 90:
return 0
return int((Controller.SLOW_DELAY +
(Controller.FAST_DELAY - Controller.SLOW_DELAY)
* speed / 90.0))
def speed_to_cycle_count(self, speed):
"""Converts a speed into cycles to execute before yielding."""
if speed < 90:
return 1
return min(Controller.MAX_CYCLE_COUNT, 1 << (speed - 90))
def get_timer_delay(self):
"""Returns the timer delay for the current speed."""
return self.speed_to_timer_delay(self._speed)
def get_cycle_count(self):
"""Returns the cycle count for the current speed."""
return self.speed_to_cycle_count(self._speed)
def set_speed(self, speed):
"""Sets the speed for the controller."""
self._timer.set_delay(self.speed_to_timer_delay(speed))
def get_speed(self):
"""Returns the speed of the controller"""
return self._speed
def signal_error(self, msg):
"""Signals the occurrence of an error."""
if self._fail_on_errors:
raise Exception(msg)
self.set_error_message(msg)
self.set_state(Controller.ERROR)
if self._error_handler is not None:
self._error_handler.error(msg)
def set_error_handler(self, handler):
"""Sets the error handler for this controller."""
self._error_handler = handler
def get_error_handler(self):
"""Returns the error handler for this controller."""
return error_handler
def get_error_message(self):
"""Gets the error message that caused the ERROR state."""
return self._error_message
def set_error_message(self, msg):
"""Sets the current error message."""
error_message = msg
def timer_action(self):
"""Executes a time step."""
try:
self.step_target()
except Exception as ex:
self.signal_error(str(ex))
def stop(self, state):
self.set_state(state)
self._timer.stop()
def start(self, state):
self.set_state(state)
self._timer.start()
def get_call_depth(self):
return self._call_depth
def set_speed_callback(self, speed):
this._speed = speed
if self._timer is not None:
self._timer.set_delay(self.speed_to_timer_delay(speed))
def step(self):
model = self._model
old_state = self._cstate
model.step()
self.execute_step_hooks()
if model.is_finished():
self.execute_finish_hooks()
if self.is_active():
if old_state == Controller.RUNNING:
if self._cstate == Controller.RUNNING:
self._timer.start()
elif old_state == Controller.STEPPING:
self.stop_action()
elif old_state == Controller.CALLING:
if model.get_stack_depth() <= self._call_depth:
self.stop_action()
elif self._cstate == Controller.CALLING:
self._timer.start()
def step_target(self):
old_state = self._cstate
self._target.step();
self.step_complete(old_state);
def should_keep_running(self):
if self._cstate == Controller.RUNNING:
return True
elif self._cstate == Controller.CALLING:
return self._model.get_stack_depth() > self._call_depth
else:
return False
def step_complete(self, old_state):
if old_state == Controller.RUNNING:
if self._cstate == Controller.RUNNING:
self._timer.start()
elif old_state == Controller.STEPPING:
self.stop_action()
elif old_state == Controller.CALLING:
if self._target.get_stack_depth() <= self._call_depth:
self.stop_action()
elif self._cstate == Controller.CALLING:
self._timer.start()
def add_step_hook(self, fn):
"""Adds a callback function that is run on every step."""
self._step_hooks.append(fn)
def remove_step_hook(self, fn):
"""Removes a previously added step hook."""
if fn in self._step_hooks:
self._step_hooks.remove(fn)
def execute_step_hooks(self):
"""Calls all the registered step hooks."""
for fn in self._step_hooks:
fn()
def add_finish_hook(self, fn):
"""Adds a callback function that is run when the model finishes."""
self._finish_hooks.append(fn)
def remove_finish_hook(self, fn):
"""Removes a previously added finish hook."""
if fn in self._finish_hooks:
self._finish_hooks.remove(fn)
def execute_finish_hooks(self):
"""Calls all the registered finish hooks."""
for fn in self._finish_hooks:
fn()
# Factory methods
def create_timer(self, delay, callback):
return IntervalTimer(delay, callback)
def create_timer_listener(self):
return TimerListener(self)
def create_speed_listener(self):
return SpeedListener(self)
# Constants
INITIAL = 0 # The controller has not yet started
RUNNING = 1 # The controller is running
STEPPING = 2 # The controller is running in single-step mode
CALLING = 3 # The controller is running until the a return
STOPPED = 4 # The controller is stopped at a breakpoint
FINISHED = 5 # The controller has finished a process
WAITING = 6 # The controller is waiting for some event
ERROR = 7 # The controller has encountered an error
ACTIVE_STATES = { RUNNING, CALLING, STEPPING }
STATE_NAMES = [
"INITIAL",
"RUNNING",
"STEPPING",
"CALLING",
"STOPPED",
"FINISHED",
"WAITING",
"ERROR"
]
MAX_CYCLE_COUNT = 10000
SLOW_DELAY = 500
FAST_DELAY = 5
# Class: IntervalTimer
class IntervalTimer:
"""This class simulates an interval timer."""
def __init__(self, delay, fn):
"""Creates a new interval timer that calls fn() every delay ms."""
self._timer = None
self._delay = delay
self._fn = fn
self._running = False
def start(self):
"""Starts the interval timer."""
if not self._running:
self._timer = threading.Timer(self._delay / 1000, self.step)
self._running = True
self._timer.start()
def stop(self):
"""Stops the interval timer."""
self._running = False
self._timer.cancel()
def step(self):
"""Runs the callback function on each timer tick."""
self._fn()
if self._running:
self._running = False
self.start()
def set_delay(self, delay):
"""Sets the delay for the interval timer."""
self._delay = delay
# Unit test
# Original file: parser.py
"""
This module defines a general-purpose parser.
"""
# Class: Operator
# Defines the default constructor for subclasses but is not called
# directly by clients. The Parser class includes several methods
# that define operators.
class Operator(Expression):
def __str__(self):
return self._op_name
def is_statement(self):
return False
def set_prefix_precedence(self, prec):
self._prefix_prec = prec
def get_prefix_precedence(self):
return self._prefix_prec
def set_infix_precedence(self, prec):
self._infix_prec = prec
def get_infix_precedence(self):
return self._infix_prec
def set_associativity(self, assoc):
self._associativity = assoc
def get_associativity(self):
return self._associativity
def get_type(self):
return Expression.OPERATOR
def is_assignment_operator(self):
return False
def set_name(self, name):
self._op_name = name
def get_name(self):
return self._op_name
def prefix_action(self, p):
raise SyntaxError("Illegal use of operator " + str(self))
def infix_action(self, p, lhs):
raise SyntaxError("Illegal use of operator " + str(self))
def unparse(self, p, args):
raise NotYetImplemented("No implementation for unparse")
def apply(self, ec, args):
raise NotYetImplemented("Not implemented in the base class")
def eval(self, ec):
raise NotYetImplemented("Operators cannot be evaluated")
def is_operator(self):
return True
# Constants
LEFT = 0
RIGHT = 1
# Class: Parser
# This class defines a simple recursive-descent parser driver.
# The parser structure was developed in 1974 by Eric Roberts
# and Greg Nelson and has proven to be extremely useful in
# the years since. It is much less cumbersome to use than
# most parser-generator systems and makes it very easy to
# write simple actions for standard languages. The parser
# algorithm is described in more detail in "Programming
# Abstractions in C" (Addison-Wesley, 1998).
class Parser:
def __init__(self):
self._scanner = self.create_token_scanner()
self._operators = { }
def parse(self):
exp = self.read_e(0)
token = self.next_token()
if token != "":
raise SyntaxError("Unexpected token: " + token)
return exp
# Parses the next expression from the parser input stream. The prec
# argument specifies the prevailing precedence read_e will return if
# it encounters an operator whose precedence is lower than prec,
# using the associativity of the operator to break ties. Since most
# clients will want to read a complete expression without stopping at
# any operator, the usual call is read_e(0).
def read_e(self, prec):
exp = self.read_t()
token = self.next_token()
while self.takes_precedence(token, prec):
op = self.get_operator(token)
if op.is_statement():
raise SyntaxError("Illegal context for " + str(op))
exp = op.infix_action(self, exp)
token = self.next_token()
self.save_token(token)
return exp
# Reads a single term from the parser input stream. A term may
# consist of an identifier, a parenthesized subexpression, or a
# prefix operator form.
def read_t(self):
token = self.next_token()
if token == "":
raise SyntaxError("Unexpected end of line")
ttype = self._scanner.get_token_type(token)
if ttype == Scanner.WORD or ttype == Scanner.OPERATOR:
op = self.get_operator(token)
if op is None:
if ttype == Scanner.OPERATOR:
raise SyntaxError("Undefined operator " + str(token))
exp = Identifier.create(str(token))
exp.set_bounds(token.get_start(), token.get_end())
return exp
if op.is_statement():
raise SyntaxError("Illegal context for " + str(op))
return op.prefix_action(self)
else:
exp = Constant.create(eval(str(token)))
exp.set_bounds(token.get_start(), token.get_end())
return exp
def compile(self, exp, cv):
raise Exception("No compiler defined in the base class")
def define_prefix_operator(self, name, op, prec):
"""Defines a prefix-only operator."""
self.define_operator(name, op, prec, 0)
def define_infix_operator(self, name, op, prec, assoc=Operator.LEFT):
"""Defines a infix-only operator."""
self.define_operator(name, op, 0, prec, assoc)
def define_operator(self, name, op, prefix, infix, assoc=Operator.LEFT):
"""Defines a prefix/infix operator."""
op.set_name(name)
op.set_prefix_precedence(prefix)
op.set_infix_precedence(infix)
op.set_associativity(assoc)
self._operators[name] = op
def remove_operator(self, name):
"""Removes an operator from the operator table."""
self._operators.pop(name, None)
def get_operator_table(self):
"""Returns the operator table."""
return self._operators
# Implementation notes: get_operator
# ----------------------------------
# The get_operator method returns a copy of the operator in the table
# so that the start and finish offsets from the token are recorded.
def get_operator(self, token):
"""Returns the operator associated with token or None."""
op = self._operators.get(str(token))
if op is None:
return None
if isinstance(token, Token):
op = copy.copy(op)
op.set_bounds(token.get_start(), token.get_end())
return op
def get_scanner(self):
"""Returns the scanner used by the parser."""
return self._scanner
def set_input(self, input):
"""Sets the input for the scanner."""
self._scanner.set_input(input)
def has_more_tokens(self):
"""Returns True if the scanner has more tokens."""
return self._scanner.has_more_tokens()
def next_token(self):
"""Returns the next token from the scanner."""
return self._scanner.next_token()
def save_token(self, token):
"""Saves the token on the input stream to be read again."""
self._scanner.save_token(token)
def get_last_token(self):
"""Returns the last token read."""
return self._scanner.get_last_token()
def get_token_type(self, token):
"""Returns the token type."""
return self._scanner.get_token_type(token)
def verify_token(self, expected):
"""Checks that the token appears next in the input stream."""
token = self.next_token()
if token != expected:
if token == "":
msg = "Missing " + mark_code(expected)
else:
msg = "Found {} when expecting {}".format(token, expected)
raise SyntaxError(msg)
def takes_precedence(self, token, prec):
"""Returns True if token has greater precedence than prec."""
if token == "":
return False
op = self.get_operator(str(token))
if op is None:
return False
newprec = op.get_infix_precedence()
if newprec == prec:
return (op.get_associativity() == Operator.RIGHT)
return (newprec > prec)
def create_token_scanner(self):
"""Creates the scanner for use with this parser."""
return Scanner()
# Class: PrefixForm
class PrefixForm(Operator):
def __init__(self):
Operator.__init__(self)
def prefix_action(self, p):
rhs = p.read_e(self.get_prefix_precedence())
exp = Compound.create(self, rhs)
exp.set_bounds(self.get_start(), rhs.get_end())
return exp
# Class: PrefixOperator
class PrefixOperator(PrefixForm):
def __init__(self):
PrefixForm.__init__(self)
def apply(self, ec, args):
return self.apply1(ec, args[0].eval(ec))
def apply1(self, ec, rhs):
raise RuntimeError("Unimplemented operator '" + self + "'")
# Class: InfixForm
class InfixForm(Operator):
def __init__(self):
Operator.__init__(self)
def infix_action(self, p, lhs):
rhs = p.read_e(self.get_infix_precedence())
exp = Compound.create(self, lhs, rhs)
exp.set_bounds(lhs.get_start(), rhs.get_end())
return exp
# Class: InfixOperator
class InfixOperator(InfixForm):
def __init__(self):
InfixForm.__init__(self)
def apply(self, ec, args):
return self.apply2(ec, args[0].eval(ec), args[1].eval(ec))
def apply2(self, ec, lhs, rhs):
raise RuntimeError("Undefined operator '" + self + "'")
# Class: NofixOperator
class NofixOperator(Operator):
def prefix_action(self, p):
Operator.__init__(self)
exp = Compound.create(self)
exp.set_bounds(self.get_start(), self.get_end())
# Class: Statement
class Statement(Operator):
"""This class is used as the superclass for all statements."""
def __init__(self):
Operator.__init__(self)
def is_statement(self):
return True
# Class: Module
class Module:
"""
This class represents an ordered collection of entries, each of
which is a tuple of a type name and an associated expression.
"""
def __init__(self):
"""Creates a new Module object."""
self._name = None
self._entries = [ ]
def to_string(self):
if self._name is None:
return ""
else:
return ""
def set_name(self, name):
"""Sets the name of this module."""
self._name = name
def get_name(self):
"""Gets the name of this module."""
return self._name
def add_entry(self, type, exp):
"""Adds the entry formed by the type code and expression."""
self._entries.append((type,exp))
def get_entries(self):
"""Returns a list of the entries in this module."""
return self._entries
def get_entries_by_type(self, type):
"""Returns a list containing entries of the specified type."""
array = [ ]
for entry in self._entries:
if entry.type == type:
array.append(entry)
return array
# Unit test
# Original file: svm.py
"""
This file implements the Stanford Virtual Machine (SVM).
"""
class SVM(Controller):
"""
This class implements the Stanford Virtual Machine (SVM), which
interprets a stream of 32-bit integers as instructions in an
environment that can be supplemented with library code.
"""
def __init__(self):
"""Creates a SVM object."""
Controller.__init__(self)
self._globals = { }
self._properties = { }
self._code = None
self._console = None
self._source = None
self._program = None
self._trace_flag = False
self._step_mode = SVM.BY_INSTRUCTION
self._call_hooks = [ ]
self._return_hooks = [ ]
self._stop_hooks = [ ]
self._statement_offset = 0
# self.set_error_handler(SVMErrorHandler(self))
self.define_class("Core", SVMCoreClass())
self.define_class("Global", SVMGlobalClass())
# self.define_class("Console", SVMConsoleClass())
self.reset()
def reset(self):
"""Resets the SVM to its initial state."""
self._value_stack = [ ]
self._frame_stack = [ ]
self._exception_stack = [ ]
self._event_queue = [ ]
self._cf = SVMStackFrame()
self.set_state(SVM.INITIAL)
self.set_pc(0)
def run(self):
"""Runs the code currently loaded into the SVM."""
if self._code is None:
self.set_state(SVM.INITIAL)
else:
self.set_state(SVM.RUNNING)
while self.get_state() == SVM.RUNNING:
try:
self.execute_instruction()
except Exception as ex:
self.signal_error(str(ex))
def stop_action(self):
"""Triggers a "stop" action."""
Controller.stop_action(self)
self.execute_stop_hooks()
def step(self):
"""Executes one step of the virtual machine."""
if self._code is None:
self.set_state(SVM.INITIAL)
else:
if self._step_mode == SVM.BY_INSTRUCTION:
self.execute_instruction()
else:
self.execute_instruction()
while (self._code is not None and self._pc >= 0 and
self._pc < len(self._code)):
state = self.get_state()
if state == SVM.ERROR or state == SVM.FINISHED:
break
self.execute_instruction()
if ((self._last_instruction >> 24) & 0xFF) == SVMOp.STMT:
break
self.execute_step_hooks()
def is_callable(self):
"""Returns True if the controller accepts CALL instructions."""
return True
def get_stack_depth(self):
"""Returns the call stack depth."""
return len(self._frame_stack)
def set_step_mode(self, mode):
"""Sets the step mode."""
self._step_mode = mode
def get_step_mode(self):
"""Returns the setting of the step-mode indicator."""
return self._step_mode
def execute_instruction(self):
"""Executes the next instruction."""
if self._code is None:
self.signal_error("No program")
elif self._pc == SVM.ERROR_PC:
self.signal_error("Illegal return without a function call")
elif self._pc >= 0 and self._pc < len(self._code):
self._last_instruction = self._code[self._pc]
op = (self._last_instruction >> 24) & 0xFF
addr = self._last_instruction & 0xFFFFFF
ins = SVMInstruction.get(op)
if self._trace_flag:
print("(" + str(self._pc) + ") " + ins.unparse(self, addr))
self._pc += 1
ins.execute(self, addr)
else:
self.set_state(SVM.FINISHED)
def get_last_instruction(self):
"""Returns the last instruction executed by the virtual machine."""
return self._last_instruction
def set_state(self, state):
"""Sets the controller state."""
Controller.set_state(self, state)
if state == SVM.WAITING or state == SVM.FINISHED:
self.process_events()
def set_trace_flag(self, flag):
"""Sets the trace flag for the SVM."""
self._trace_flag = flag
def get_trace_flag(self):
"""Gets the current value of the trace flag."""
return self._trace_flag
def set_console(self, console):
"""Sets the console attached to the SVM."""
self._console = console
def get_console(self):
"""Returns the console in use by the SVM."""
return self._console
def set_source(self, source):
"""Sets the source string for the parser."""
self._source = source
def get_source(self):
"""Gets the source string for the parser."""
return self._source
def set_statement_offset(self, offset):
"""Stores the offset in the source for the current statement."""
self._statement_offset = offset
def get_statement_offset(self):
"""Returns the offset in the source for the current statement."""
return self._statement_offset
def get_source_marker(self, index):
"""Returns a source marker for an index in the source string."""
if self._source is None or index < 0:
return None
start = self._source.rfind("\n", index) + 1
finish = self._source.find("\n", start)
if finish == -1:
finish = len(source)
return SVMSourceMarker(source[start:finish], start)
def set_code(self, code):
"""Sets the code array that represents the program."""
self._code = code
if self._cf is not None:
self._cf.set_code(code)
def get_code(self):
"""Gets the code array that represents the program."""
return self._code
def get(self, addr):
"""Gets the word at the specified address in the code array."""
return self._code[addr]
def get_string(self, addr):
"""Gets a string stored in the code array."""
return CodeVector.get_string(self._code, addr)
def set_pc(self, addr):
"""Sets the PC to the specified address."""
self._pc = addr
def get_pc(self):
"""Gets the current PC value."""
return self._pc
def push(self, v):
"""Pushes an SVM value on the value stack."""
self._value_stack.append(v)
def push_integer(self, n):
"""Pushes an integer Value on the stack."""
self._value_stack.append(Value.create_integer(n))
def push_double(self, d):
"""Pushes a double Value on the stack."""
self._value_stack.append(Value.create_double(d))
def push_boolean(self, b):
"""Pushes a Boolean Value on the stack."""
self._value_stack.append(Value.create_boolean(b))
def push_string(self, str):
"""Pushes a string Value on the stack."""
self._value_stack.append(Value.create_string(str))
def pop(self):
"""Pops the top item from the stack as a typed Value object."""
return self._value_stack.pop()
def pop_integer(self):
"""Pops the top item from the stack as an integer."""
return self._value_stack.pop().get_integer_value()
def pop_double(self):
"""Pops the top item from the stack as an double."""
return self._value_stack.pop().get_double_value()
def pop_boolean(self):
"""Pops the top item from the stack as an boolean."""
return self._value_stack.pop().get_boolean_value()
def pop_string(self):
"""Pops the top item from the stack as an string."""
return self._value_stack.pop().get_string_value()
def exch(self):
"""Exchanges the top two elements on the stack."""
x = self.pop()
y = self.pop()
self.push(x)
self.push(y)
def roll(self, n):
"""Rolls the top n values on the stack up by one position."""
values = [ ]
for i in range(n):
values.append(self.pop())
self.push(values[0])
for i in reversed(range(1, n)):
self.push(values[i])
def copy(self, n):
"""Copies the top n values on the stack."""
for i in range(n):
self.push(self.peek_back(n - 1))
def get_value_stack_depth(self):
"""Returns the number of elements pushed on the value stack."""
return len(self._value_stack)
def peek_back(self, k):
"""Returns the element on the stack k elements from the top."""
return self._value_stack[-k - 1]
def get_current_frame(self):
"""Returns the current stack frame."""
return self._cf
def push_frame(self):
"""Pushes a empty stack frame onto the frame stack."""
self._frame_stack.append(self._cf)
self._cf = SVMStackFrame()
self._cf.set_code(self._code)
def pop_frame(self):
"""Pops the top stack frame and makes it the current frame."""
if len(self._frame_stack) == 0:
self._cf = None
else:
self._cf = self._frame_stack.pop()
if self._cf is not None:
self._code = self._cf.get_code()
def get_argument_count(self):
"""Returns the number of arguments field from the frame."""
return self.get_current_frame().get_argument_count()
def get_nargs_count(self):
"""Returns the number of arguments from the NARGS instruction."""
if self._pc < 0 or self._pc >= len(self._code):
return -1
ins = self.get(self._pc)
if ((ins >> 24) & 0xFF) != SVMOp.NARGS:
return -1
return ins & 0xFFFFFF
def check_signature(self, name, sig):
"""Checks that the arguments match the specified signature."""
n_args = self.get_argument_count()
if n_args == -1:
return
n = len(sig)
if n != n_args:
raise Exception("Wrong number of arguments to " + name)
for i in range(n):
if not self.check_arg_type(self.peek_back(n - i - 1), sig[i]):
raise Exception("Type mismatch in call to " + name)
def check_argument_count(self, n_args, n_params):
"""Checks that the number of arguments and parameters match."""
for i in range(n_params, n_args):
self.pop()
for i in range(n_args, n_params):
self.push(Value.UNDEFINED)
def set_global(self, name, value):
"""Defines name in the table of global variables."""
self._globals[name] = value
def get_global(self, name):
"""Gets the definition of the named global variable."""
return self._globals.get(name, Value.UNDEFINED)
def get_global_integer(self, name, def_value):
"""Gets a global definition of an integer."""
if self.is_global(name):
return self._globals.get(name).get_integer_value()
return def_value
def get_global_double(self, name, def_value):
"""Gets a global definition of a floating-point number."""
if self.is_global(name):
return self._globals.get(name).get_double_value()
return def_value
def get_global_boolean(self, name, def_value):
"""Gets a global definition of a Boolean value."""
if self.is_global(name):
return self._globals.get(name).get_boolean_value()
return def_value
def get_global_string(self, name, def_value):
"""Gets a global definition of a string value."""
if self.is_global(name):
return self._globals.get(name).get_string_value()
return def_value
def is_global(self, name):
"""Returns True if the global variable is defined."""
return name in self._globals
def call(self, n):
"""Call the function or method closure on the top of the stack."""
fn = self.peek_back(0)
type = fn.get_type()
if type != "SVMMethod":
self.execute_call_hooks()
self.pop()
if type == "FunctionClosure":
fc = fn.get_value()
receiver = self.get_current_frame().get_receiver()
self.push_frame()
cf = self.get_current_frame()
cf.set_self(receiver)
cf.set_return_address(self.get_pc())
cf.set_frame_link(fc.get_frame())
cf.set_argument_count(n)
code = fc.get_code()
if code is not None:
self.set_code(code)
self.set_pc(fc.get_address())
elif type == "MethodClosure":
mc = fn.get_value()
receiver = mc.get_receiver()
c = SVMClass.lookup(mc.get_type())
m = c.get_method(mc.get_method_name())
self.get_current_frame().set_argument_count(n)
m.execute(self, receiver)
elif type == "SVMMethod":
m = fn.get_value()
self.get_current_frame().set_argument_count(n)
m.execute(self, None)
elif type == "Class":
c = SVMClass.lookup(fn.get_value())
m = c.get_method("new")
self.get_current_frame().set_argument_count(n)
m.execute(self, None)
else:
raise Exception("Illegal function call")
def post_event(self, closure):
"""Posts an event closure on the event queue."""
self._event_queue.append(closure)
self.process_events()
def set_property(self, name, value):
"""Sets a named property for self SVM."""
self._properties[name] = value
def get_property(self, name):
"""Gets a named property for self SVM."""
return self._properties.get(name)
def define_class(self, name, c):
"""Defines a class for self SVM."""
SVMClass.define_class(self, name, c)
def check_arg_type(self, v, type):
if type == "B":
return v.get_type() == Value.BOOLEAN
elif type == "D":
return v.is_numeric()
elif type == "I":
return v.is_integral()
elif type == "O":
return v.get_type() == Value.OBJECT
elif type == "S":
return v.get_type() == Value.STRING
elif type == "*":
return True
raise Exception("Illegal type code: " + type)
def process_events(self):
state = self.get_state()
if state == SVM.WAITING or state == SVM.FINISHED:
"// Process event queue"
def set_stack_base(self, offset):
"""Sets the base stack offset for the current stack frame."""
self._cf.set_stack_base(len(self._value_stack) - offset)
def restore_stack_base(self):
"""Restores the stack base to the value set in the frame."""
if self._cf is None:
return
base = self._cf.get_stack_base()
while len(self._value_stack) > base:
self._value_stack.pop()
def push_exception_frame(self, addr):
"""Pushes a exception frame."""
self._exception_stack.append(ExceptionFrame(addr,
len(self._frame_stack)))
def pop_exception_frame(self):
"""Removes the top exception frame."""
self._exception_stack.pop()
def raise_exception(self, ex, v):
"""Throws a runtime exception in the SVM."""
"// Implement exceptions"
def pstack(self):
"""Prints the contents of the stack, starting at the top."""
if len(self._value_stack) == 0:
print("")
else:
v = self._value_stack.pop()
print(str(v) + " ", end="")
self.pstack()
self._value_stack.append(v)
def unparse(self, word):
op = (word >> 24) & 0xFF
addr = word & 0xFFFFFF
ins = SVMInstruction.get(op)
if ins is None:
return str(word)
else:
return ins.unparse(self, addr)
def list(self):
"""Unparses the contents of the internal code array."""
self.list_code(self._code)
def list_code(self, code):
"""Unparses the contents of code as instructions."""
n = len(code)
for i in range(n):
line = "(" + str(i) + ") " + self.unparse(code[i])
if (code[i] >> 24) == SVMOp.END:
break
print(line)
def add_call_hook(self, hook):
"""Adds a hook procedure called before any call instruction."""
self._call_hooks.append(hook)
def add_return_hook(self, hook):
"""Adds a hook procedure called after a function returns."""
self._return_hooks.append(hook)
def add_stop_hook(self, hook):
"""Adds a hook procedure called when the controller stops."""
self._stop_hooks.append(hook)
def execute_call_hooks(self):
"""Executes the call hooks registered for self SVM."""
for hook in self._call_hooks:
if callable(hook):
hook()
else:
hook.execute()
def execute_return_hooks(self):
"""Executes the return hooks registered for self SVM."""
for hook in self._return_hooks:
if callable(hook):
hook()
else:
hook.execute()
def execute_stop_hooks(self):
"""Executes the stop hooks registered for self SVM."""
for hook in self._stop_hooks:
if callable(hook):
hook()
else:
hook.execute()
# Constants
ERROR_PC = -999
BY_INSTRUCTION = 0
BY_STATEMENT = 1
INITIAL = Controller.INITIAL
RUNNING = Controller.RUNNING
STEPPING = Controller.STEPPING
CALLING = Controller.CALLING
STOPPED = Controller.STOPPED
FINISHED = Controller.FINISHED
WAITING = Controller.WAITING
ERROR = Controller.ERROR
# Class: SVMFunctionClosure
class SVMFunctionClosure:
"""
This class defines a structure consisting of a code vector, an
entry address, and a stack frame.
"""
def __init__(self, code, addr, frame):
self._code = code
self._addr = addr
self._frame = frame
def __str__(self):
return "FunctionClosure@" + str(self._addr)
def get_address(self):
return self._addr
def get_code(self):
return self._code
def get_frame(self):
return self._frame
# Class: SVMMethodClosure
class SVMMethodClosure:
"""
This class defines a structure consisting of a receiver, a class
name, and a method name.
"""
def __init__(self, receiver, class_name, method_name):
self._receiver = receiver
self._class_name = class_name
self._method_name = method_name
def __str__(self):
self._receiver = receiver
return self._class_name + "." + self._method_name
def get_receiver(self):
return self._receiver
def get_class_name(self):
return self._class_name
def get_method_name(self):
return self._method_name
# Class: SVMClass
class SVMClass:
"""
This class defines a package that can be loaded into the SVM.
"""
def __init__(self):
"""Creates an SVMClass object."""
self._methods = { }
def get_method(self, name):
"""Gets the method with the specified name."""
m = self._methods.get(name)
if m is None:
raise Exception(name + " is not defined")
return m
def define_method(self, name, m):
"""Defines a method for this class."""
self._methods[name] = m
def init(self, svm):
"""Initializes a class."""
fn = self._methods.get("_init")
if fn is not None:
fn.execute(svm, None)
@staticmethod
def is_defined(name):
"""Returns True if the class has been defined."""
return name in SVMClass._classes
@staticmethod
def lookup(name):
"""Looks up a class by name."""
c = SVMClass._classes.get(name)
if c is None:
raise Exception(name + " is not defined")
return c
@staticmethod
def define_class(svm, name, c):
"""Defines the named class in the context of the SVM."""
c.init(svm)
SVMClass._classes[name] = c
svm.set_global(name, Value("Class", name))
SVMClass._classes = { }
# Class: SVMMethod
class SVMMethod:
"""This class represents the superclass of all built-in methods."""
def execute(self, svm, receiver):
raise Exception("Not defined in the base class.")
def is_constant(self):
return False
# Class: SVMConstant
class SVMConstant(SVMMethod):
def is_constant(self):
return True
# Class: SVMCoreClass
class SVMCoreClass(SVMClass):
def __init__(self):
SVMClass.__init__(self)
self.define_method("FALSE", Core_FALSE())
self.define_method("TRUE", Core_TRUE())
self.define_method("UNDEFINED", Core_UNDEFINED())
# self.define_method("INFINITY", Core_INFINITY())
# self.define_method("NaN", Core_NaN())
# self.define_method("NULL", Core_NULL())
# self.define_method("this", Core_this())
# self.define_method("set_receiver", Core_set_receiver())
# self.define_method("display", Core_display())
# self.define_method("select", Core_select())
# self.define_method("assign", Core_assign())
# self.define_method("list", Core_list())
# self.define_method("array", Core_array())
# self.define_method("object", Core_object())
# self.define_method("length", Core_length())
class Core_FALSE(SVMConstant):
def execute(self, svm, receiver):
svm.check_signature("Core.FALSE", "")
svm.push_boolean(False)
class Core_TRUE(SVMConstant):
def execute(self, svm, receiver):
svm.check_signature("Core.TRUE", "")
svm.push_boolean(True)
class Core_UNDEFINED(SVMConstant):
def execute(self, svm, receiver):
svm.check_signature("Core.UNDEFINED", "")
svm.push(Value.UNDEFINED)
class SVMGlobalClass(SVMClass):
def __init__(self):
SVMClass.__init__(self)
self.define_method("get", GlobalGet())
self.define_method("set", GlobalSet())
self.define_method("is_defined", GlobalIsDefined())
class GlobalGet(SVMMethod):
def execute(self, svm, receiver):
svm.check_signature("Global.get", "S")
svm.push(svm.get_global(svm.pop_string()))
class GlobalSet(SVMMethod):
def execute(self, svm, receiver):
svm.check_signature("Global.set", "S*")
value = svm.pop()
key = svm.pop_string()
svm.set_global(key, value)
class GlobalIsDefined(SVMMethod):
def execute(self, svm, receiver):
svm.check_signature("Global.is_defined", "S")
svm.push_boolean(svm.is_global(svm.pop_string()))
# Class: ExceptionFrame
class ExceptionFrame:
def __init__(self, addr, depth):
self._addr = addr
self._depth = depth
def get_dispatch_address(self):
"""Gets the dispatch address for this frame."""
return self._addr
def get_stack_depth(self):
"""Return the stack depth at which this frame was declared."""
return self._depth
# Class: SVMStackFrame
class SVMStackFrame:
"""This class represents a stack frame for the SVM."""
def __init__(self):
"""Initializes a stack frame."""
self._symbol_table = None
self._stack_base = 0
self._frame_size = 0
self._arg_count = 0
self._return_address = -1
self._link = None
self._code = None
self._self_ref = Value.NULL
self._receiver = Value.NULL
def set_frame_size(self, n):
"""Sets the number of locals for the frame to n."""
self._frame_size = n
self._locals = [ None ] * n
def get_frame_size(self):
"""Returns the number of locals for the frame."""
return self._frame_size
def set_argument_count(self, n):
"""Sets the number of arguments supplied for this frame."""
self._arg_count = n
def get_argument_count(self):
"""Gets the number of arguments supplied for this frame."""
return self._arg_count
def set_stack_base(self, base):
"""Sets the stack base for the frame."""
self._stack_base = base
def get_stack_base(self):
"""Gets the stack base for the frame."""
return self._stack_base
def set_code(self, code):
"""Sets the code array being executed by this frame."""
self._code = code
def get_code(self):
"""Gets the code array being executed by this frame."""
return self._code
def set_return_address(self, addr):
"""Sets the return address for this frame."""
self._return_address = addr
def get_return_address(self):
"""Gets the return address for this frame."""
return self._return_address
def set_source_file(self, filename):
"""Sets the name of the source file."""
self._source_file = filename
def get_source_file(self):
"""Gets the name of the source file."""
return self._source_file
def set_local(self, k, value):
"""Sets the value of the local at index k."""
self._locals[k] = value
def get_local(self, k):
"""Gets the value of the local at index k."""
return self._locals[k]
def declare_var(self, name):
"""Declares a named variable in the frame."""
if self._symbol_table is None:
self._symbol_table = { }
self._symbol_table[name] = Value.UNDEFINED
def is_declared(self, name):
"""Checks if a variable has been declared."""
if self._symbol_table is None:
return False
return name in self._symbol_table
def set_var(self, name, value):
"""Sets the value of a named variable."""
if self._symbol_table is None:
self._symbol_table = { }
self._symbol_table[name] = value
def get_var(self, name):
"""Gets the value of a named variable."""
if self._symbol_table is None or name not in self._symbol_table:
return Value.UNDEFINED
return self._symbol_table.get(name)
def set_frame_link(self, frame):
"""Sets the frame link field."""
self._link = frame
def get_frame_link(self):
"""Gets the frame link field."""
return self._link
def set_receiver(self, value):
"""Sets the receiver field."""
self._receiver = value
def get_receiver(self):
"""Gets the receiver field."""
return self._receiver
def set_self(self, value):
"""Sets the value of self."""
self._self = value
def get_self():
"""Gets the value of self."""
return self._self
# Class: SVMInstruction
class SVMInstruction:
def __init__(self, name, code):
self._name = name
self._code = code
def get_name(self):
return self._name
def get_code(self):
return self._code
def execute(self, svm, addr):
raise Exception("Not yet implemented")
def unparse(self, svm, addr):
return self._name
def assemble(self, cv, scanner):
cv.add_word(self._code << 24)
@staticmethod
def lookup(name):
if SVMInstruction.INSTRUCTION_TABLE is None:
SVMInstruction.initialize_tables()
return SVMInstruction.INSTRUCTION_TABLE.get(name)
@staticmethod
def get(code):
if SVMInstruction.INSTRUCTION_TABLE is None:
SVMInstruction.initialize_tables()
return SVMInstruction.CODE_TABLE.get(code)
@staticmethod
def initialize_tables():
SVMInstruction.INSTRUCTION_TABLE = { }
SVMInstruction.CODE_TABLE = { }
SVMInstruction.define(END_Ins())
SVMInstruction.define(VERSION_Ins())
SVMInstruction.define(PSTACK_Ins())
SVMInstruction.define(STMT_Ins())
SVMInstruction.define(HALT_Ins())
SVMInstruction.define(NOP_Ins())
SVMInstruction.define(PUSHINT_Ins())
SVMInstruction.define(PUSHNUM_Ins())
SVMInstruction.define(PUSHSTR_Ins())
SVMInstruction.define(PUSHFN_Ins())
SVMInstruction.define(POP_Ins())
SVMInstruction.define(DUP_Ins())
SVMInstruction.define(EXCH_Ins())
SVMInstruction.define(ROLL_Ins())
SVMInstruction.define(COPY_Ins())
SVMInstruction.define(ADD_Ins())
SVMInstruction.define(SUB_Ins())
SVMInstruction.define(MUL_Ins())
SVMInstruction.define(DIV_Ins())
SVMInstruction.define(IDIV_Ins())
SVMInstruction.define(REM_Ins())
SVMInstruction.define(NEG_Ins())
SVMInstruction.define(EQ_Ins())
SVMInstruction.define(NE_Ins())
SVMInstruction.define(LT_Ins())
SVMInstruction.define(LE_Ins())
SVMInstruction.define(GT_Ins())
SVMInstruction.define(GE_Ins())
SVMInstruction.define(JUMP_Ins())
SVMInstruction.define(JUMPT_Ins())
SVMInstruction.define(JUMPF_Ins())
SVMInstruction.define(DISPATCH_Ins())
SVMInstruction.define(TRY_Ins())
SVMInstruction.define(ENDTRY_Ins())
SVMInstruction.define(THROW_Ins())
SVMInstruction.define(NOT_Ins())
SVMInstruction.define(AND_Ins())
SVMInstruction.define(OR_Ins())
SVMInstruction.define(XOR_Ins())
SVMInstruction.define(LSH_Ins())
SVMInstruction.define(ASH_Ins())
SVMInstruction.define(CALL_Ins())
SVMInstruction.define(CALLM_Ins())
SVMInstruction.define(CALLFN_Ins())
SVMInstruction.define(RETURN_Ins())
SVMInstruction.define(LOCALS_Ins())
SVMInstruction.define(PUSHLOC_Ins())
SVMInstruction.define(POPLOC_Ins())
SVMInstruction.define(ARG_Ins())
SVMInstruction.define(VAR_Ins())
SVMInstruction.define(PARAMS_Ins())
SVMInstruction.define(NARGS_Ins())
SVMInstruction.define(VARGS_Ins())
SVMInstruction.define(PUSHVAR_Ins())
SVMInstruction.define(POPVAR_Ins())
SVMInstruction.define(PUSHFRM_Ins())
SVMInstruction.define(POPFRM_Ins())
@staticmethod
def define(ins):
SVMInstruction.INSTRUCTION_TABLE[ins.get_name()] = ins
SVMInstruction.CODE_TABLE[ins.get_code()] = ins
SVMInstruction.INSTRUCTION_TABLE = None
SVMInstruction.CODE_TABLE = None
class SVMStringInstruction(SVMInstruction):
def __init__(self, name, code):
SVMInstruction.__init__(self, name, code)
def assemble(self, cv, scanner):
s = eval(str(scanner.next_token()))
cv.add_word((self.get_code() << 24) | cv.string_ref(s))
def unparse(self, svm, addr):
return self.get_name() + " \"" + svm.get_string(addr) + "\""
class SVMVarInstruction(SVMInstruction):
def __init__(self, name, code):
SVMInstruction.__init__(self, name, code)
def assemble(self, cv, scanner):
token = scanner.next_token()
cv.add_word((self.get_code() << 24) | cv.string_ref(str(token)))
def unparse(self, svm, addr):
return self.get_name() + " " + svm.get_string(addr)
class SVMAddressInstruction(SVMInstruction):
def __init__(self, name, code):
SVMInstruction.__init__(self, name, code)
def assemble(self, cv, scanner):
token = scanner.next_token()
ttype = scanner.get_token_type(token)
if ttype == Scanner.NUMBER:
cv.add_word((self.get_code() << 24) | int(str(token)))
elif ttype == Scanner.WORD:
cv.add_word((self.get_code() << 24) | cv.label_ref(str(token)))
else:
raise Exception("Illegal argument " + str(token))
def unparse(self, svm, addr):
return self.get_name() + " " + str(addr)
class SVMOffsetInstruction(SVMInstruction):
def __init__(self, name, code):
SVMInstruction.__init__(self, name, code)
def assemble(self, cv, scanner):
token = scanner.next_token()
ttype = scanner.get_token_type(token)
if ttype == Scanner.NUMBER:
cv.add_word((self.get_code() << 24) | int(str(token)))
elif ttype == Scanner.WORD:
cv.add_word((self.get_code() << 24) | cv.get_label(str(token)))
else:
raise Exception("Illegal argument " + str(token))
def unparse(self, svm, addr):
return self.get_name() + " " + str(addr)
class SVMNameInstruction(SVMInstruction):
def __init__(self, name, code):
SVMInstruction.__init__(self, name, code)
def assemble(self, cv, scanner):
name = ""
finished = False
while not finished:
token = scanner.next_token()
if token == "\n":
finished = True
else:
name += str(token)
scanner.save_token("\n")
cv.add_word((self.get_code() << 24) | cv.string_ref(name))
class ArithmeticInstruction(SVMInstruction):
def __init__(self, name, code):
SVMInstruction.__init__(self, name, code)
def execute(self, svm, addr):
rhs = svm.pop()
lhs = svm.pop()
if not lhs.is_numeric() or not rhs.is_numeric():
raise Exception("Illegal to apply " + get_name() +
" to " + lhs + " and " + rhs)
lhtype = lhs.get_type()
rhtype = rhs.get_type()
if lhtype == Value.INTEGER and rhtype == Value.INTEGER:
x = lhs.get_integer_value()
y = rhs.get_integer_value()
svm.push_integer(self.apply_integer(x, y))
else:
x = lhs.get_double_value()
y = rhs.get_double_value()
svm.push_double(self.apply_double(x, y))
def apply_integer(self, x, y):
raise Exception("Illegal types for operator")
def apply_double(self, x, y):
raise Exception("Illegal types for operator")
class ComparisonInstruction(SVMInstruction):
def __init__(self, name, code):
SVMInstruction.__init__(self, name, code)
def execute(self, svm, addr):
rhs = svm.pop()
lhs = svm.pop()
lhtype = lhs.get_type()
rhtype = rhs.get_type()
if lhtype == Value.STRING and rhtype == Value.STRING:
s1 = lhs.get_string_value()
s2 = rhs.get_string_value()
svm.push_boolean(self.apply_string(s1, s2))
elif lhtype == Value.INTEGER and rhtype == Value.INTEGER:
x = lhs.get_integer_value()
y = rhs.get_integer_value()
svm.push_boolean(self.apply_integer(x, y))
elif lhs.is_numeric() and rhs.is_numeric():
x = lhs.get_double_value()
y = rhs.get_double_value()
svm.push_boolean(self.apply_double(x, y))
else:
v1 = lhs.get_value()
v2 = rhs.get_value()
svm.push_boolean(self.apply_object(v1, v2))
def apply_integer(self, x, y):
raise Exception("Illegal types for operator")
def apply_double(self, x, y):
raise Exception("Illegal types for operator")
def apply_string(self, x, y):
raise Exception("Illegal types for operator")
def apply_object(self, v1, v2):
raise Exception("Illegal types for operator")
class LogicalInstruction(SVMInstruction):
def __init__(self, name, code):
SVMInstruction.__init__(self, name, code)
def execute(self, svm, addr):
rhs = svm.pop()
lhs = svm.pop()
lhtype = lhs.get_type()
rhtype = rhs.get_type()
if lhtype == Value.BOOLEAN and rhtype == Value.BOOLEAN:
v1 = lhs.get_boolean_value()
v2 = rhs.get_boolean_value()
svm.push_boolean(self.apply_boolean(v1, v2))
else:
x = lhs.get_integer_value()
y = rhs.get_integer_value()
svm.push_integer(self.apply_integer(x, y))
def apply_integer(self, v1, v2):
raise Exception("Illegal types for operator")
def apply_boolean(self, v1, v2):
raise Exception("Illegal types for operator")
class END_Ins(SVMInstruction):
def __init__(self):
SVMInstruction.__init__(self, "END", SVMOp.END)
def execute(self, svm, addr):
svm.set_pc(-1)
class VERSION_Ins(SVMOffsetInstruction):
def __init__(self):
SVMOffsetInstruction.__init__(self, "VERSION", SVMOp.VERSION)
def execute(self, svm, addr):
if addr != SVMOp.SVM_VERSION:
raise Exception("Incompatible SVM version")
class PSTACK_Ins(SVMInstruction):
def __init__(self):
SVMInstruction.__init__(self, "PSTACK", SVMOp.PSTACK)
def execute(self, svm, addr):
svm.pstack()
class STMT_Ins(SVMOffsetInstruction):
def __init__(self):
SVMOffsetInstruction.__init__(self, "STMT", SVMOp.STMT)
def execute(self, svm, addr):
svm.set_statement_offset(addr)
svm.restore_stack_base()
class HALT_Ins(SVMInstruction):
def __init__(self):
SVMInstruction.__init__(self, "HALT", SVMOp.HALT)
def execute(self, svm, addr):
svm.set_pc(-1)
class NOP_Ins(SVMInstruction):
def __init__(self):
SVMInstruction.__init__(self, "NOP", SVMOp.NOP)
def execute(self, svm, addr):
pass
class PUSHINT_Ins(SVMAddressInstruction):
def __init__(self):
SVMAddressInstruction.__init__(self, "PUSHINT", SVMOp.PUSHINT)
def execute(self, svm, addr):
svm.push_integer(addr)
class PUSHNUM_Ins(SVMInstruction):
def __init__(self):
SVMInstruction.__init__(self, "PUSHNUM", SVMOp.PUSHNUM)
def assemble(self, cv, scanner):
numstr = str(scanner.next_token())
if numstr == "-":
numstr += str(scanner.next_token())
cv.add_word((self.get_code() << 24) | cv.string_ref(numstr))
def execute(self, svm, addr):
s = svm.get_string(addr)
if s.find(".") == -1 and s.upper().find("E") == -1:
svm.push_integer(int(s))
else:
svm.push_double(float(s))
def unparse(self, svm, addr):
return "PUSHNUM " + svm.get_string(addr)
class PUSHCH_Ins(SVMAddressInstruction):
def __init__(self):
SVMAddressInstruction.__init__(self, "PUSHCH", SVMOp.PUSHCH)
def execute(self, svm, addr):
svm.push(Value.create_character(addr))
class PUSHSTR_Ins(SVMStringInstruction):
def __init__(self):
SVMStringInstruction.__init__(self, "PUSHSTR", SVMOp.PUSHSTR)
def execute(self, svm, addr):
svm.push_string(svm.get_string(addr))
class PUSHFN_Ins(SVMAddressInstruction):
def __init__(self):
SVMAddressInstruction.__init__(self, "PUSHFN", SVMOp.PUSHFN)
def execute(self, svm, addr):
cf = svm.get_current_frame()
code = svm.get_code()
closure = SVMFunctionClosure(code, addr, cf)
svm.push(Value("FunctionClosure", closure))
class POP_Ins(SVMInstruction):
def __init__(self):
SVMInstruction.__init__(self, "POP", SVMOp.POP)
def assemble(self, cv, scanner):
cv.add_word(SVMOp.POP << 24)
def execute(self, svm, addr):
svm.pop()
class DUP_Ins(SVMInstruction):
def __init__(self):
SVMInstruction.__init__(self, "DUP", SVMOp.DUP)
def execute(self, svm, addr):
svm.push(svm.peek_back(0))
class EXCH_Ins(SVMInstruction):
def __init__(self):
SVMInstruction.__init__(self, "EXCH", SVMOp.EXCH)
def execute(self, svm, addr):
svm.exch()
class ROLL_Ins(SVMOffsetInstruction):
def __init__(self):
SVMOffsetInstruction.__init__(self, "ROLL", SVMOp.ROLL)
def execute(self, svm, addr):
svm.roll(addr)
class COPY_Ins(SVMOffsetInstruction):
def __init__(self):
SVMOffsetInstruction.__init__(self, "COPY", SVMOp.COPY)
def execute(self, svm, addr):
svm.copy(addr)
class ADD_Ins(SVMInstruction):
def __init__(self):
SVMInstruction.__init__(self, "ADD", SVMOp.ADD)
def execute(self, svm, addr):
rhs = svm.pop()
lhs = svm.pop()
lhtype = lhs.get_type()
rhtype = rhs.get_type()
if lhtype == Value.STRING or rhtype == Value.STRING:
svm.push_string(str(lhs) + str(rhs))
elif not lhs.is_numeric() or not rhs.is_numeric():
raise Exception("Illegal to apply " + self.get_name() +
" to " + lhs + " and " + rhs)
elif lhtype == Value.INTEGER and rhtype == Value.INTEGER:
x = lhs.get_integer_value()
y = rhs.get_integer_value()
svm.push_integer(x + y)
else:
x = lhs.get_double_value()
y = rhs.get_double_value()
svm.push_double(x + y)
class SUB_Ins(ArithmeticInstruction):
def __init__(self):
ArithmeticInstruction.__init__(self, "SUB", SVMOp.SUB)
def apply_integer(self, x, y):
return x - y
def apply_double(self, x, y):
return x - y
class MUL_Ins(ArithmeticInstruction):
def __init__(self):
ArithmeticInstruction.__init__(self, "MUL", SVMOp.MUL)
def apply_integer(self, x, y):
return x * y
def apply_double(self, x, y):
return x * y
class DIV_Ins(SVMInstruction):
def __init__(self):
SVMInstruction.__init__(self, "DIV", SVMOp.DIV)
def execute(self, svm, addr):
rhs = svm.pop()
lhs = svm.pop()
lhtype = lhs.get_type()
rhtype = rhs.get_type()
if not lhs.is_numeric() or not rhs.is_numeric():
raise Exception("Illegal to apply " + self.get_name() +
" to " + str(lhs) + " and " + str(rhs))
if lhtype == Value.INTEGER and rhtype == Value.INTEGER:
num = lhs.get_integer_value()
den = rhs.get_integer_value()
if den != 0 and float.is_integer(num / den):
svm.push_integer(num // den)
else:
svm.push_double(num / den)
else:
svm.push_double(lhs.get_double_value() / rhs.get_double_value())
class IDIV_Ins(ArithmeticInstruction):
def __init__(self):
SVMInstruction.__init__(self, "IDIV", SVMOp.IDIV)
def apply_integer(self, x, y):
return x // y
def apply_double(self, x, y):
return x // y
class REM_Ins(ArithmeticInstruction):
def __init__(self):
SVMInstruction.__init__(self, "REM", SVMOp.REM)
def apply_integer(self, x, y):
return x % y
def apply_double(self, x, y):
return x % y
class NEG_Ins(SVMInstruction):
def __init__(self):
SVMInstruction.__init__(self, "NEG", SVMOp.NEG)
def execute(self, svm, addr):
rhs = svm.pop()
if not rhs.is_numeric():
raise Exception("Illegal to apply " + self.get_name() +
" to " + str(rhs))
if rhs.get_type() == Value.INTEGER:
x = rhs.get_integer_value()
svm.push_integer(-x)
else:
x = rhs.get_double_value()
svm.push_double(-x)
class EQ_Ins(ComparisonInstruction):
def __init__(self):
ComparisonInstruction.__init__(self, "EQ", SVMOp.EQ)
def apply_object(self, x, y):
return x == y
def apply_integer(self, x, y):
return x == y
def apply_double(self, x, y):
return x == y
def apply_string(self, x, y):
return x == y
class NE_Ins(ComparisonInstruction):
def __init__(self):
ComparisonInstruction.__init__(self, "NE", SVMOp.NE)
def apply_object(self, x, y):
return x != y
def apply_integer(self, x, y):
return x != y
def apply_double(self, x, y):
return x != y
def apply_string(self, x, y):
return x != y
class LT_Ins(ComparisonInstruction):
def __init__(self):
ComparisonInstruction.__init__(self, "LT", SVMOp.LT)
def apply_integer(self, x, y):
return x < y
def apply_double(self, x, y):
return x < y
def apply_string(self, x, y):
return x < y
class LE_Ins(ComparisonInstruction):
def __init__(self):
ComparisonInstruction.__init__(self, "LE", SVMOp.LE)
def apply_integer(self, x, y):
return x <= y
def apply_double(self, x, y):
return x <= y
def apply_string(self, x, y):
return x <= y
class GT_Ins(ComparisonInstruction):
def __init__(self):
ComparisonInstruction.__init__(self, "GT", SVMOp.GT)
def apply_integer(self, x, y):
return x > y
def apply_double(self, x, y):
return x > y
def apply_string(self, x, y):
return x > y
class GE_Ins(ComparisonInstruction):
def __init__(self):
ComparisonInstruction.__init__(self, "GE", SVMOp.GE)
def apply_integer(self, x, y):
return x >= y
def apply_double(self, x, y):
return x >= y
def apply_string(self, x, y):
return x >= y
class JUMP_Ins(SVMAddressInstruction):
def __init__(self):
SVMAddressInstruction.__init__(self, "JUMP", SVMOp.JUMP)
def execute(self, svm, addr):
svm.set_pc(addr)
class JUMPT_Ins(SVMAddressInstruction):
def __init__(self):
SVMAddressInstruction.__init__(self, "JUMPT", SVMOp.JUMPT)
def execute(self, svm, addr):
if svm.pop_boolean():
svm.set_pc(addr)
class JUMPF_Ins(SVMAddressInstruction):
def __init__(self):
SVMAddressInstruction.__init__(self, "JUMPF", SVMOp.JUMPF)
def execute(self, svm, addr):
if not svm.pop_boolean():
svm.set_pc(addr)
class DISPATCH_Ins(SVMInstruction):
def __init__(self):
SVMInstruction.__init__(self, "DISPATCH", SVMOp.DISPATCH)
def execute(self, svm, addr):
svm.push_frame()
svm.get_current_frame().set_return_address(svm.get_pc())
svm.set_pc(svm.pop_integer())
class TRY_Ins(SVMAddressInstruction):
def __init__(self):
SVMAddressInstruction.__init__(self, "TRY", SVMOp.TRY)
def execute(self, svm, addr):
svm.push_exception_frame(addr)
class ENDTRY_Ins(SVMInstruction):
def __init__(self):
SVMInstruction.__init__(self, "ENDTRY", SVMOp.ENDTRY)
def execute(self, svm, addr):
svm.pop_exception_frame()
class THROW_Ins(SVMInstruction):
def __init__(self):
SVMInstruction.__init__(self, "THROW", SVMOp.THROW)
def execute(self, svm, addr):
v = svm.pop()
svm.raise_exception(Exception(str(v)), v)
class NOT_Ins(SVMInstruction):
def __init__(self):
SVMInstruction.__init__(self, "NOT", SVMOp.NOT)
def execute(self, svm, addr):
v = svm.pop()
type = v.get_type()
if type == Value.BOOLEAN:
svm.push_boolean(not v.get_boolean_value())
else:
svm.push_integer(~v.get_integer_value())
class AND_Ins(LogicalInstruction):
def __init__(self):
LogicalInstruction.__init__(self, "AND", SVMOp.AND)
def apply_integer(self, x, y):
return x & y
class OR_Ins(LogicalInstruction):
def __init__(self):
LogicalInstruction.__init__(self, "OR", SVMOp.OR)
def apply_integer(self, x, y):
return x | y
class XOR_Ins(LogicalInstruction):
def __init__(self):
LogicalInstruction.__init__(self, "XOR", SVMOp.XOR)
def apply_integer(self, x, y):
return x ^ y
class LSH_Ins(LogicalInstruction):
def __init__(self):
LogicalInstruction.__init__(self, "LSH", SVMOp.LSH)
def apply_integer(self, x, y):
if y < 0:
return (x & 0xFFFFFFFF) >> y
else:
return x << y
class ASH_Ins(LogicalInstruction):
def __init__(self):
LogicalInstruction.__init__(self, "ASH", SVMOp.ASH)
def apply_integer(self, x, y):
if y < 0:
return x >> y
else:
return x << y
class CALL_Ins(SVMInstruction):
def __init__(self):
SVMInstruction.__init__(self, "CALL", SVMOp.CALL)
def assemble(self, cv, scanner):
token = scanner.next_token()
ttype = scanner.get_token_type(token)
if ttype == Scanner.NUMBER:
cv.add_word((self.get_code() << 24) | int(str(token)))
elif ttype == Scanner.WORD:
next = scanner.next_token()
if next == ".":
name = str(token) + "." + str(next)
cv.add_word((SVMOp.CALLM << 24) | cv.string_ref(name))
else:
scanner.save_token(next)
cv.add_word((SVMOp.CALL << 24) | cv.label_ref(str(token)))
else:
raise Exception("Illegal argument " + str(token))
def execute(self, svm, addr):
svm.execute_call_hooks()
svm.push_frame()
cf = svm.get_current_frame()
cf.set_return_address(svm.get_pc())
cf.set_argument_count(svm.get_nargs_count())
svm.set_pc(addr)
def unparse(self, svm, addr):
return "CALL " + str(addr)
class CALLM_Ins(SVMNameInstruction):
def __init__(self):
SVMNameInstruction.__init__(self, "CALLM", SVMOp.CALLM)
def assemble(self, cv, scanner):
token = scanner.next_token()
if scanner.get_token_type(token) != Scanner.WORD:
raise Exception("CALLM requires a class and method name")
scanner.verify_token(".")
name = str(token) + "." + str(scanner.next_token())
cv.add_word((SVMOp.CALLM << 24) | cv.string_ref(name))
def execute(self, svm, addr):
cf = svm.get_current_frame()
cf.set_argument_count(svm.get_nargs_count())
name = svm.get_string(addr)
dot = name.rfind(".")
if dot == -1:
cname = self.receiver_class(svm)
else:
cname = name[:dot]
mname = name[dot + 1:]
c = SVMClass.lookup(cname)
m = c.get_method(mname)
m.execute(svm, None)
def unparse(self, svm, addr):
return "CALLM " + svm.get_string(addr)
def receiver_class(self, svm):
n_args = svm.get_argument_count()
return svm.peek_back(n_args).get_type()
class CALLFN_Ins(SVMInstruction):
def __init__(self):
SVMInstruction.__init__(self, "CALLFN", SVMOp.CALLFN)
def execute(self, svm, addr):
svm.call(svm.get_nargs_count())
class RETURN_Ins(SVMInstruction):
def __init__(self):
SVMInstruction.__init__(self, "RETURN", SVMOp.RETURN)
def execute(self, svm, addr):
svm.set_pc(svm.get_current_frame().get_return_address())
svm.pop_frame()
if svm.get_current_frame() is None:
svm.set_pc(-1)
svm.execute_return_hooks()
class PUSHLOC_Ins(SVMOffsetInstruction):
def __init__(self):
SVMOffsetInstruction.__init__(self, "PUSHLOC", SVMOp.PUSHLOC)
def execute(self, svm, addr):
svm.push(svm.get_current_frame().get_local(addr))
class POPLOC_Ins(SVMOffsetInstruction):
def __init__(self):
SVMOffsetInstruction.__init__(self, "POPLOC", SVMOp.POPLOC)
def execute(self, svm, addr):
svm.get_current_frame().set_local(addr, svm.pop())
class LOCALS_Ins(SVMOffsetInstruction):
def __init__(self):
SVMOffsetInstruction.__init__(self, "LOCALS", SVMOp.LOCALS)
def execute(self, svm, addr):
svm.get_current_frame().set_frame_size(addr)
def assemble(self, cv, scanner):
nlocals = 0
while True:
token = scanner.next_token()
if token == "\n":
break
cv.define_symbol(str(token), nlocals)
nlocals += 1
scanner.save_token(token)
cv.add_word((get_code() << 24) | nlocals)
class ARG_Ins(SVMVarInstruction):
def __init__(self):
SVMVarInstruction.__init__(self, "ARG", SVMOp.ARG)
def execute(self, svm, addr):
cf = svm.get_current_frame()
name = svm.get_string(addr)
v = svm.pop()
cf.declare_var(name)
cf.set_var(name, v)
class VAR_Ins(SVMVarInstruction):
def __init__(self):
SVMVarInstruction.__init__(self, "VAR", SVMOp.VAR)
def execute(self, svm, addr):
cf = svm.get_current_frame()
name = svm.get_string(addr)
cf.declare_var(name)
class PARAMS_Ins(SVMOffsetInstruction):
def __init__(self):
SVMOffsetInstruction.__init__(self, "PARAMS", SVMOp.PARAMS)
def execute(self, svm, addr):
nparams = addr
nargs = svm.get_argument_count()
if nargs != -1:
svm.check_argument_count(nargs, nparams)
svm.set_stack_base(nargs)
class NARGS_Ins(SVMOffsetInstruction):
def __init__(self):
SVMOffsetInstruction.__init__(self, "NARGS", SVMOp.NARGS)
def execute(self, svm, addr):
pass
class VARGS_Ins(SVMInstruction):
def __init__(self):
SVMInstruction.__init__(self, "VARGS", SVMOp.VARGS)
def execute(self, svm, addr):
args = SVMArray()
nargs = svm.get_argument_count()
if nargs != -1:
for i in range(nargs):
args.add(0, svm.pop())
svm.push(Value("Array", args))
class PUSHVAR_Ins(SVMVarInstruction):
def __init__(self):
SVMVarInstruction.__init__(self, "PUSHVAR", SVMOp.PUSHVAR)
def execute(self, svm, addr):
cf = svm.get_current_frame()
name = svm.get_string(addr)
while cf is not None:
if cf.is_declared(name):
svm.push(cf.get_var(name))
return
cf = cf.get_frame_link()
if svm.is_global(name):
svm.push(svm.get_global(name))
else:
raise Exception(name + " has not been declared")
class POPVAR_Ins(SVMVarInstruction):
def __init__(self):
SVMVarInstruction.__init__(self, "POPVAR", SVMOp.POPVAR)
def execute(self, svm, addr):
cf = svm.get_current_frame()
name = svm.get_string(addr)
while cf is not None:
if cf.is_declared(name):
cf.set_var(name, svm.pop())
return
cf = cf.get_frame_link()
if svm.is_global(name):
svm.set_global(name, svm.pop())
else:
raise Exception(name + " has not been declared")
class PUSHFRM_Ins(SVMInstruction):
def __init__(self):
SVMInstruction.__init__(self, "PUSHFRM", SVMOp.PUSHFRM)
def execute(self, svm, addr):
raise Exception("Not yet implemented")
class POPFRM_Ins(SVMInstruction):
def __init__(self):
SVMInstruction.__init__(self, "POPFRM", SVMOp.POPFRM)
def execute(self, svm, addr):
raise Exception("Not yet implemented")
# Unit test
# Original file: svmops.py
"""
This file defines the operation codes used in the Stanford Virtual
Machine. This file appears in this package to eliminate dependencies
between the parser and the svm package.
"""
class SVMOp:
# Version for compatibility check
SVM_VERSION = 4
# Operation codes
END = 0x00; # END
VERSION = 0x01; # VERSION n
PSTACK = 0x02; # PSTACK
STMT = 0x03; # STMT index
HALT = 0x04; # HALT
NOP = 0x05; # NOP
PUSHINT = 0x10; # PUSHINT int
PUSHNUM = 0x11; # PUSHNUM num
PUSHCH = 0x12; # PUSHCH ch
PUSHSTR = 0x13; # PUSHSTR str
PUSHFN = 0x14; # PUSHFN addr
POP = 0x15; # POP
DUP = 0x16; # DUP
EXCH = 0x17; # EXCH
ROLL = 0x18; # ROLL n
COPY = 0x19; # COPY n
ADD = 0x20; # ADD
SUB = 0x21; # SUB
MUL = 0x22; # MUL
DIV = 0x23; # DIV
IDIV = 0x24; # DIV
REM = 0x25; # REM
NEG = 0x26; # NEG
EQ = 0x30; # EQ
NE = 0x31; # NE
LT = 0x32; # LT
LE = 0x33; # LE
GT = 0x34; # GT
GE = 0x35; # GE
JUMP = 0x40; # JUMP addr
JUMPT = 0x41; # JUMPT addr
JUMPF = 0x42; # JUMPF addr
DISPATCH = 0x43; # DISPATCH
TRY = 0x44; # TRY addr
ENDTRY = 0x45; # ENDTRY
THROW = 0x46; # THROW
NOT = 0x50; # NOT
AND = 0x51; # AND
OR = 0x52; # OR
XOR = 0x53; # XOR
LSH = 0x54; # LSH
ASH = 0x55; # ASH
CALL = 0x60; # CALL addr
CALLM = 0x61; # CALLM name
CALLFN = 0x62; # CALLFN
RETURN = 0x63; # RETURN
LOCALS = 0x64; # LOCALS vars
PUSHLOC = 0x65; # PUSHLOC n
POPLOC = 0x66; # POPLOC n
ARG = 0x67; # ARG name
VAR = 0x68; # VAR name
PARAMS = 0x69; # PARAMS n
NARGS = 0x6A; # NARGS n
VARGS = 0x6B; # VARGS
PUSHVAR = 0x6C; # PUSHVAR name
POPVAR = 0x6D; # POPVAR name
PUSHFRM = 0x6E; # PUSHFRM
POPFRM = 0x6F; # POPFRM
# Original file: EditWorldControl.py
class EditWorldControl(PGLControl):
def __init__(self):
PGLControl.__init__(self)
self.set_name("EditWorld")
self.set_active_icon(EDIT_WORLD_ACTIVE)
self.set_disabled_icon(EDIT_WORLD_DISABLED)
self.set_rollover_icon(EDIT_WORLD_ROLLOVER)
self.set_pressed_icon(EDIT_WORLD_PRESSED)
self.set_state(PGLControl.ACTIVE)
EDIT_WORLD_ACTIVE = ("data:image/png;base64," +
"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")
EDIT_WORLD_PRESSED = ("data:image/png;base64," +
"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" +
"YII=")
EDIT_WORLD_ROLLOVER = ("data:image/png;base64," +
"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")
EDIT_WORLD_DISABLED = ("data:image/png;base64," +
"iVBORw0KGgoAAAANSUhEUgAAARcAAAEXCAYAAACH0wDUAABLUUlEQVR4Xu2d" +
"ebsT1fK23+//DX7nOCuDCoqIiszzoIIoggiiAg4goAyCIh7zprp3dta6n+qu" +
"7qQz7d19XfcfrKFWVa1aD0nvpPP/PhsM/l9PT09P10hDT09PTxdIQ09PT08X" +
"SENPT09PF0hDz+bj2LFjgw8++CBj27Ztg//7v/8LeeWVV2Tu/v37B1yjZ/Mh" +
"DT0bCzvoduApCovknXfe6QVoEyANPatJm1cby8roVRBj61lNpKFn+bH/9e0g" +
"8nBuVHrBWU2koWf5mKWY7Ny5c7Bnz56MM2fPFpw9c2adH2/dKrg15Mzw34Q2" +
"DK7VBZaH/i3VaiANPYvHbrB29RZnJB4mAJ9//nkhDn/++efgf//7n/Lvvxn/" +
"DtuIzCGw8b9/re1/g1s/3hpcunxpKFpnCnHY+c5O8XUSerFZXqShZzHYTU4e" +
"nKbYATMBOXr0aCEiN2/eHNy5c2fwzz//dM/znOf/5HB81P/b778Pbgz9PT30" +
"27A4pnmVZqLM3PYsBmnomR/2Py4PRxPs8O3bt29w/vz5we/Dw8kDO1M6Fhf2" +
"j8ZYXJcuXSoEc9JXcf29msUiDT2zxd7ytP2fORWTO3duDw/fczmkc2NO4kJS" +
"sWmbP8Pyzr3omS3S0DMb2v7va28PcjEhegDnwoLEhXNuD9/2WX5MdNuITf+2" +
"aX5IQ093tPnwmh2QI0eODq5evTb4++/nQ/6u57ny/PnzWsQGeA5ov1iDYwRb" +
"J8HWTeB8+tjET9o0frl9e3D69OlWQmP3ubhnPd0hDT3T0+ZViv3P+9VXXw3+" +
"+OMJDqZzqLIDpvCQErEBePBpf5nFJeXq1atDoT4iua7CBIl72DM90tAzOU1F" +
"xf48fO7cucFvv/1WfSh5oIh38J2D2ubQ8uDT/qqIy2jcH3/8UQj3nvebfeam" +
"F5lukYae9jR5Kb5t69biZfvtX35pdiilnwdM4SElYgPw4NP+qonLOK7nhZBb" +
"/rdtjf8D6EWmG6ShpzlNRMVentvLdB4qHgA5lNLPA6bwkBKxAcRHbw2OERAH" +
"Dj7n08cmftKmgPEmLim3f7nd+G1T/1emyZGGnphmonJ4cP/+vcGzZ38V/CU8" +
"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" +
"r1qafnAuRRqawIXt5wbooM8sktuBTad4p6P0pSth6cUFrLU3EZhnz56xaaZX" +
"eW/nVBHbqoqLfXeQZ5wa0ARpaIK9/+Pi9v0jOqnMIrkd2Kwo3snpVlh6cQFJ" +
"X53AzFtY0uvSpa9WVlzsr8Dp2W76XSIiDU2huLz15pvFh+pSPtr7Uc5HOXuB" +
"jB+yF4Q2gv69H+0VPoooYklgP9Y8cGD/4MGDyYXlq4sXxaas6eRKxgQ2NDft" +
"iWyqD4Q+e37Xc+rkSRGYeb0Vqrtu3rwZxMXcsS7z8cxtkV+eF/YHNtg/7Wdb" +
"UqShKbzh89KLL/biMsRe1U0rLF4csqaTKxkT2NDctCeyqT4Q+uz5XY+tkwqM" +
"3byd5LL5JgjXr1/PmGY/c4Gh78wd61LjJKwB6Q9ssH/L1i2LFxfv6wD2l6TN" +
"LC5dCYsXh6zp5ErGBDY0N+2JbKoPhD57ftczWssExj5/wlcx0fXLL78UP91C" +
"uykHhntrQtPmMj9Onjw1qI6LuWNd+nFm+eV5YX9gI+3zbuTW/VxrhDS0gY68" +
"9tprm1ZcuhQWLw5Z08mVjAlsaG7aE9lUHwh99vyuJ12vjQDYfn3yySeN1vTe" +
"etVdKizeGswd67I6zvX88rywP7CR9m3Z0t2rFkMa2sCHSBn2CMzNJi7TCstF" +
"CIsXB9dknsr80rd6G1xzEiKb6gOhz57f9YzWslcXTQXAXq3s33+g0Zr2qqap" +
"XbtKYbFXQlFczB3r0o8zyy/PC/sDG6N271XLpDdyR0hDW+iQ/Srjh0PRMT74" +
"8MOMD8nauHU+9HDmZTYA+5sgfuT9dXHYpySnEZYvv/yyeOnJuD8YxpIS+VT6" +
"BTvIjY6PbbYlWtNiTRGfHWijqv/bb79let3r559/zuKu48SJE62F5cTxExWx" +
"g8L3aiROzvdsSD9A/kftXb9qMaShLd6rl3ffeac4pAyMG6eH2sOZl9kA7G+C" +
"+JH3V8XRlbB4h4xFEvlU+gU7yI2Oj222JVqTxS0+O9BGVX+T7wrZfn388b4s" +
"7iqmERY/dlD4Xo3EyfmeDekHyL+17Z7BqxZDGiaBjo1evTAwbp4eag9nXmYD" +
"sL8J4kfe78XRpbB4h4xFEvlU+gU7yI2Oj222JVqTxS0+O9CG1398KARNrjNn" +
"zrr5JNMKix87KHyvRuLkfM+G9APk39r4tIMuXrUY0jAJ5iSds1cvDIwbqIfa" +
"w5mX2QDsb4L4kfczjmmF5eLFXFi8Q8YiiXwq8ws7yI2Oj222JVozituDNrz+" +
"Jm+J7O1QVT5TuhAWP3ZQ+F6NxMn5ng3pB8j/niH//e9/s7M7yfeIPKRhUigu" +
"9pWAPR/sydkzAWsJWIf9baG9JjaTGOwTjNMIi71i2bOnwZqzINqPqL/AfE9h" +
"fxe0X+Pu3btMtVzHjx8PYttTjGkrLIVdx9Y8+ACwP8rl1m35Lyl29arFkIZJ" +
"8V5avbf7vQbFGtBWCCJor4nNzoWlwZqzIBKPqL+gvli7of0a0WUiEMW2asJi" +
"TCMu9heiWb1qMaRhGigu9iSraEND2gpBBO01sdm5sDRYcxZE4hH1F1QXa3e0" +
"XyO6bty4URvbKgqLMY248Pefu3zVYkjDNISvXiTwBrQVggjaa2Cze2GJ15wJ" +
"kXhE/QXziKPdGrY/0WX3ZKpiW1VhMSYVl1m/ajGkYVooLvap3fd37y4ZBpRi" +
"j8hMWR+XsHu3jUt4f3ctnP++tYXkfqXz7YNGv//+O+ur8XXhiwtrfpndMfbn" +
"vwzGCegjc1fkryaOknofdL4D/aCNYM1ofhMbjNsecRBd165dg53Stv3SZZtv" +
"T9vYo8eOOj4pEiv8ltrlePZLXpzcYA7XHM3bOoPPtRBpmBbv1cvbb71VBsXk" +
"VQSewg2T5EUbYG0hKIRk/g8//MD6anyNhKX0i0UAGCegj8xdkb+aOErqfdD5" +
"DvSDNoI1o/lNbDBue0BTdHniMqmwuPvpILHCb6ldjme/5MXxA3O4ps3Z9e67" +
"ckZXQlwMOv3iiy8Odr/3nibPCZxwwyR50QZYWwgKIZk/6SuXVFhKv1gEgHEC" +
"+sjcFfmriaOk3ged70A/aCNYM5rfxIbGvZvpl4viMo2wuPvpILHCb6ldjme/" +
"5MXxA3O4ps3hEw1mISyGNHSB97kXexkmyXMCJ9wwSV60AdYWgkKADfueRxuB" +
"obCUfrEIAOME9JG5K/IXxBH5oPMd6AdtBGtG85vY0LhjcbH9G80/dvTYVMLi" +
"7qeDxAq/pUY4nv2SF8cPzOGa9i6CZ7OLT+N6SENXMADjnXd2Dt57b1fCew1I" +
"xzed0zW7ig8xNRGYC59/7sx32AXYD3YB9nfBLNaYxGb7ObsaPcPFPiBnv3TZ" +
"VlhsTtv9mgiswTzssjYgNmqwLxXzJq7Bs9sV0tAlDMJejrUXiuUQlyYCUwjL" +
"roY+tixWFhr7u2AWa0xis/2cXcXvEEXX1atXJxMWW6Plfk0E1mAeKCxtxcX7" +
"cqK9y+C57Qpp6BLv5q79BGw7oVgecakTmHVh6cUlYxKb7efsGly48Dm3ZKor" +
"Exaj5X5NBNZgHigsbcTFfqGDZ9Hgme0SaegaBmM3d3ftenfQXCiWS1xKgfkw" +
"E5hMWHpxyZjEZvs5peh3dYmwGC33ayKwBvNAYWkjLvO6iZsiDV3j3dy17x29" +
"++67hchkWBt4991dOcNxGcWYFIxHv6zp2FAfwFBA7MN3JjCfD4VF+j12me8J" +
"9BNx7Rq2ZQQ+e4RxcDxz08gG48gRm0VbCvt1jK4J1tb68ccfqROtLxOWw4cP" +
"N9iPBj7ChuYKa0TQB9qrwHsHMaubuCnSMAsYmPH22287yVOYKG6IbCjHo1/W" +
"dGyoD2CtmMdC4YwhMqc+LhZR5LNHGAfHMzeNbDCOHLGJQ6n9OkbXBGtrnTh5" +
"klrR6qoSFn8/GvhIO5IrrBFBH2jP4Z133p3rTdwUaZgVDO7ll192kqcwWdwQ" +
"2VCOR7+s6dhQH8BaMffiYjCOHLGJQ6n9OkbXBMl69nvQk1x1wuLvRwMfaUdy" +
"hTUi6APtOdi7BJ49eywrz+cskIZZ4b00s8Dz5ClMFjdENpTj0S8b5thQH0BS" +
"zL24MI4csYlDqf06RtcEyXqTvHqJhMXfjwY+0o7kCmtE0AfaA9u3vylnruvv" +
"D9UhDbOEgRr21yP7SRJj504Ha094ZydYm7tuIxrvEdlgf+qfwfE7dyq0EWCf" +
"CcqBH4zBiYPYD16lsL+RPRkDP6U/R3zgeM+moHZTvvvuO+pH5WXCcujgIbEh" +
"iI+EPsZ+Kvl81oQH54xs7dixY2Fvh0ZIwyzxfuvIEmB/JrOEyKE1mMxgk8Px" +
"HpEN9qf+GRxPYenFZR3xgeM9m4LaTbFPqv7222/UEbnWhcXxUxAfCX2M/VTy" +
"+awJD84Z2eJPshrWzjM5S6Rh1liADNruv1i7HFqDyQw2ORzvEdlgf+qfwfEU" +
"ll5c1hEfON6zKahd+mhf2aj7wFwmLI6fgvhI6GMDP4V8PmvCg3PMzuuvvy5n" +
"bJ5vh0ZIwzzw/uZuCZFDazCZwSaH4z0iG+xP/TM4nsLSi8s64gPHezYFtev5" +
"aOLhXSIsjp+C+EjoYwM/hXw+a8KDc7x7mwbP4DyQhnnB4A27ARUfXJBtToPx" +
"HpEN9qf+GRxPYenFZR3xgeM9m4LarfLx/LnzsbA4fgrhePrYwE8hn8+a8EjH" +
"79jx9sLvs6RIw7ywP4cxCZYY+/yL3YxaZydI+zzajh+yE+zYYRuVAJs6vgN2" +
"2joJ7F8WmIuhrykyPgS5LuCYdtCn0U+8mrAcOHBAxvvQJ4LxrDsPzumAtA7t" +
"0+88UyZaPHvzQhrmifcSzu6/ZAlsu0Ftx+/wxAKFBJs6vgN6cUngmHZ4PpnA" +
"NBcWgz4RjGfdeXBOB4xq8PXXXpOztIj7LCnSMG+YEMMejbmewLYb1Hb8Dk8s" +
"UEiwqeM7oBeXBI5px/Q+GfSJYDzrzoNzOsDqb5vzoG2DZ23eSMMiYFIMe1VT" +
"JLDtBrUdv8MTCxQSbOr4DujFJYFj2jG9TwZ9IhjPuvPgnA6whz8t032WFGlY" +
"BFX3X7Zv2z54a5i8nLdz3s6xZOdY2xiOL6BNIfeBNt9++60Mse9AG9IPmzre" +
"1snhGCJrIFcSt+c3EB9APF+JxzDuIA4PrpnkqYA+BDUg9j0bAvZQ1iBY8823" +
"lu4+S4o0LArv/osJjH2CtxcXXVMK0xlDZA3kSuL2/AbiA4jnK/EYxh3E4cE1" +
"kzwV0IegBsS+Z0PAHsoaJFmvQlgWfZ8lRRoWiff5F0tgLjDYRCmS6g3xDlgB" +
"bQrc9NxmdKA8aEP6YVPHozCdMUTWQK4kbs9vID6AeL4Sj2HcQRweXDPJUwF9" +
"CGpA7Hs2BOyhrEHG69kfPnhWDJ6pRSINi4bJUoHBJkqRVG+Id8AKaFPgpuc2" +
"owPlQRvSD5s6HoXpjCGyBnIlcXt+A/EBxPOVeAzjDuLw4JpJngroQ1ADYt+z" +
"IWAPZQ1SrvXqK6/KGVk2YTGkYRlg0gxTahOYWbAdsD9i2vld2WjLZlnTZTtg" +
"/zIy9POVl/XVvWHf2+M5WjTSsCwweYa9bZKEd8C0BT/t/K5stGWzrOmyguLy" +
"+mv6naFlFRZDGpYF7xvUsxKYaQt+2vld2WjLZlnTZcXExfsyojGvBz9NgjQs" +
"E1UCY4lm8qdh2oKfdn5XNtqyWdZ0WSFx8Z4mZyzLn5yrkIZlw3vAt2Gf4t22" +
"bftg+/ZtGfYn7ZTtgP2dYOumsH+brb09I56zPWd7Du2VNkn9GpobrCk+KVH+" +
"IxhDifrWZg/FHnwsCG0y/9syaE/nT4Kuab819J///Efqf9mFxZCGZcQSyeSO" +
"BCba5LiIOgCFJ/3bbG0KQTSHhZZDe6VNUr+G5gZrik9KlP8IxlCivrXZQ7EH" +
"HwtCm8z/tgza0/mTkK9ZJSzL9FmWOqRhWWkqMNywuIg6AIUn/dtsbQpBNIfF" +
"nUN7pU1Sv4bmBmuKT8q0h4wxlKhvbfZQ7MHHVRAXq+tVFhZDGpYZ70N2hv2Z" +
"umqT4yLqABSe9G+ztSkE0RwWdw7tlTZJ/RqaG6wpPinTHjLGUKK+tdlDsQcf" +
"l11cTFhY46smLIY0LDuVAvPSy4OtW7YO2ZKxZevWjHIM2LqlFtrYUrSN2Wp2" +
"U2h/izeH5Da4ZjTeh3MAcqXzm5Db3GKxpmxtkH8iaxDGwv72iJ8dwFw0yXdV" +
"fa+asBjSsApUvUV66cWXZAOlaFjIRTGzWHNoQ4UCRUL7Vlwyh+Q2uGY03odz" +
"QINij8lt8kBJHE5uBFmDMBb2t0f87ADmIsp31Uf6V1FYDGlYFaoE5oUXXsg2" +
"UIqGhVwUM4s1hzZUKFBYtG/FJXNIboNrRuN9OAcExd6M3CYPlMTh5EaQNQhj" +
"YX97xM8OYC7q8l0lLPZ2ibW/KkjDKlH1Z+pUYKRoWMhFMbNYcWBgQ4UChUX7" +
"Vlwyh+Q2uGY03odzQE2xNye3yQMlcTi5EWQNwljY3x7xswOYi6p8e99uNlbh" +
"z811SMOqUfVBO7vTbh+Xtg8gRWwB7H/jjS0A/VsA+2cAffb9BvSTcLzEvSWc" +
"s2VLDvu7gX6xvz1T55L9BfV+2jr2HyFrdyMIiyENq0idwNidd24qiQurvkia" +
"FVq30Gffb0A/CcdL3FvCOb24pFT7aXVZJSzL+l2htkjDKsNNGmHvZ3Xjx8SF" +
"VV0kBY0KrVvos+83oJ+E4yXuLeGcXlxSfD/tBq33GZaNJCyGNKw63KwR9r+E" +
"bn5JXFh+kazTqNC6hT77fgP6SThe4t4SzunFJUX99H5mdQRredWRho1A1WcF" +
"qt4mxYWlRZLRqNC6hT77fgP6SThe4t4SzunFJWXs42uvvV75NmgjCoshDRsF" +
"+xMeN3CE/e/x2uuvrfM6eO3118F4rD+ecP7rxe/KpFix1WHf/M6wthTPD7Fj" +
"bWM4Xm0Ga3pgDtcUmKvM31Hs9BXrIJc6njh+wg/apN9R3NKfxGFvy6veBq3q" +
"Z1iaIA0bCe9XBUbY/yLVYmHFl4JClPGE863YWLx6qPIDFhSv54fYwQHhHLEZ" +
"rOmBOVxTYK4yf0ex01esg1zqeOL4CT9ok35HcUv/WhxVf2Y2NsJfhOqQho0I" +
"N3WE/W/yyquvSDFSGKQQZTzhfCs2Fq8eqvyABcXr+SF2cEA4R2wGa3pgDtcU" +
"mKvM31Hs9BXrIJc6njh+wg/apN9R3Ox/9dVX3d8TGsEa3YhIw0YlepuUFiOF" +
"QQoRsF/n64HggSJR8dKHwg+xgwPCOWIzWNMDc7imwFxl/o5ip69YB7nU8cTx" +
"E37QJv2O4k77NuvbICING5nobZJtvP2Ps5yYbyns71kor7xa1E/dTduN/jaI" +
"SMNmoOqvSYa9R5bCWQp6cVlmrG6qXq0YrMHNgDRsFqq++GjYe2V7acsCWiy9" +
"uCwjVid191Y209sgIg2biaqvDYxYrrdKvbgsG3V/CTLsi7Wsuc2ENGxG6m72" +
"jkTG/oca8QoZClDKy6+8rCTzfV4Beb+sIeN1TtTPONj/chFLziuvmC9jJM5o" +
"fOBD4Qdt0i/aCNZ4WfJgvuVriA2JfTw2egu0mV+tpEjDZoZFkmLFZEVVFDNZ" +
"O/C9uOgcGR/4sMzi8tLLL9W+BTI20neDpkUaNjtVz4gZYcXFwyAHH4Xb5ICs" +
"F32VEHANGa9zon7GwX49YI5YCMH4wIdlFZcXXqz+K5Cx2f4S1ARp6Clp8lap" +
"FxcbQ4LxgQ/LJi62z/1boMmQhp4cFhOxVzL2dsk+iLeO/Ru8+OJLGfa83zpe" +
"fCmH9rL1KrFxKewPcPySMQEad5M4pvS7A6K3P0b/FqgeaehRordKIjI8QL24" +
"rIy4NBGVVX6u7TyRhp5qordK6yIzfCnNQ6SHrJ5eXKbwuyX2n0ITUenfArVD" +
"GnpiJhEZPWT19OIyhd8N6UVltkhDT3OaiIzdDCzfMr2QYTcKM6wthf0d8OIL" +
"L2a88CKwtozYhgloCsdHcH4jG8gVc6v28rj++9/6m7Qj+rc/0yENPe1pck/G" +
"+O9//zMs7lJoogMj/R1AYdhM4mKC0uRVitGLSjdIQ8/kNBWZ0auZugMjB6oD" +
"KAybQVwsz01epRi9qHSLNPRMT1ORMdaFpheX5jYCcXmhhaAYm/07QLNCGnq6" +
"wz4HYTcDWcxVFEKzxn/sgKT8J8cEicgYIP20wfH0ocB8G8M5tGkx1QJ7hU0S" +
"rTGihaAY/edUZos09MyGugdVeYwP3+jgBMLgjQHSTxscnx7cdSAEXEd8cgSl" +
"I3EZ2WDu6uhfpcwPaeiZPXXPkqlifCArhKE4bBAPIP20wfGFmBAIAdcRnxxB" +
"mVBcJhETo7+XshikoWe+NPlztsfooG1kcZlUTAx7O9q/7Vks0tCzGNren/HI" +
"D64jFoBCIONFWGYkLmhjXG3Yv39/LyhLgjT0LAdt/uK0menvoSwv0tCznPRi" +
"U9I/N2V1kIae1WCSm8KrSC8mq4s09Kwu9upm0hvEi8buN/VvcTYW0tCz8bCb" +
"xcvytsr86G+6bg6koafHBCCFb8Hs1RHH0EZPjzT09PT0dIE09PT09HSBNPT0" +
"9PR0gTT09PT0dMH/B8oeOZTT9IgAAAAAAElFTkSuQmCC")
# Original file: ResetControl.py
class ResetControl(PGLControl):
def __init__(self):
PGLControl.__init__(self)
self.set_name("Reset")
self.set_active_icon(RESET_ACTIVE)
self.set_disabled_icon(RESET_DISABLED)
self.set_rollover_icon(RESET_ROLLOVER)
self.set_pressed_icon(RESET_PRESSED)
self.set_state(PGLControl.ACTIVE)
RESET_ACTIVE = ("data:image/png;base64," +
"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" +
"Mv5xLiq3aqYkcM7rKwmZv9d+L6U0VW7zq990ey1a4MLyXmBPWbzREC5RcIEF" +
"suHmXNEXxCxcSwBCn/rsgUb9XosWuKD3goqDC4Dk/Q5CZnUFN6WLMClNAETf" +
"+uzWOv1eiza4oPeSTwE4ABilgptv57FAviUfwTKq8AC4oiL5d0SpwYXlvdw0" +
"Pai4lJrKNbI5LPqcsv/pPJo11IPz/0hazfx6s65V5rpHCbSFrITKKLnOd9eQ" +
"3KQdx+JtYmSTgug+kD2+WcBuOLbMmteiOmkuNbjQC0mBYHFfhAvCxfW0vI9v" +
"Ey7CBd4QpeW1aIUL03upQbggXDwAS7OfcBmeoteiHS6JvReEC8LFojRzp7hN" +
"uAaXtL0W7XCJmrX7YCNbD1ASOeaBJkqcPOjjo+oSW6asmvj15P6vQalcZ0md" +
"3/EYLlO2JG8r6fZWsAnVPmXNa9HptaQCF5b38pt6hAvCxY10/idC/rNeT1vZ" +
"Cpd75pTfo7peP6cKF5b3ctUUQu7/GuGCcLE79Z4h5NU2tp34BJdfVaXvtaQG" +
"F9a8l1tqEC4IF3vTsj5CHl8QbSe+wOU39enMxjUGF5b3UpxYBwFe7zSHUgrn" +
"3EcpjeuQLePtdj+GQZM222lHdH/cN6dcMvnfO6c8iJvGcCh1uLD2OIIVxREu" +
"CBdrhkGnCXl5eXrtaRtcWJucJVmvJTO4RAV3YQtYhAvCJevU3B0sOZBme9oE" +
"l7tmmQniGoMLa3h05ZTAPUO4IFyy8lag3iba0ya4XGsoiGsULqzgLmxFAq/D" +
"7qXVUK57aM3hiHP8vQzxjuGVya1zg0KeHAmdQ9eL01ay/TFulVuxlZrtEnbE" +
"6eOy/lCxVck+Z9oBr8wG9kzctIK4RuESFdz97SyEC8LFTPpmgJAxixLe+I7C" +
"5e7ZZoO4xuHCCu5eU4VwQbikmwbPF+rYrunGdxQuMEpIuqG81XCJCu7ChSNc" +
"EC5pQGXi5hibyAlcbmPsnKj7+yEr4BI1PIKtI8F1i1QDJdn/dUhDGTDHp1SZ" +
"XJfmPN9caRdUOgcJGf+NYH9QSqXPk5bRIK9iWSNmsodDaQdxM4MLa68jaAB4" +
"TYZwQbgkgQrUJfImziFc6C1ZQaMazYHFOFxAoxiLAV9TiXBBuMi//VnSW6jD" +
"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" +
"6M3GfVu4AAAAAElFTkSuQmCC")
RESET_PRESSED = ("data:image/png;base64," +
"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" +
"1iH2jf1L6o1yEZJLUTBZLvTCA382y+XRbRnK5YWdhT88cbOHwd4U2CORr/fb" +
"C5uzvfINnylRL2qfN/f4UdJWouxNXo8kvOBdAL+boWBu6J/y+FZ9flDb6T8z" +
"ijzzIi2WqQ0pnOgGyeWyGzMekHtRLqpYuSHbCwXkb6tc4PvustGLtFzg3Zuu" +
"ygUGQ1YDEaQmXS+US2Qei9dkJ5hjfWqpXJ7tzEAuwlMii+SSVdTCLRaUi9QY" +
"yFIwx6IXC+USNjVKVS6Dqwl5fU+Qv1C8vtsPa3tYmiwCaQqWic539eZsBh+s" +
"C0DeMm3wOaz2ZrQNa//XVaShoM+ZZdjtpzS/8unZ9O/1/YPlEj1fAsdztB9r" +
"f54+n9Ig9xIpqagFPmTtqlxgEGTx0NWKDQpONJQLUy7A9WXZ9PFzrXbKZcEW" +
"uamRlFwe7nBTLqszukM06QE1JxnKhU8uwHe76e/n35XZKZdn3tUol7W73JRL" +
"FlEL5KlELCgXIbmsWK//QhKIXiyRCyCz7sLcYTI13xpRS8i63eG8xmCdDvZQ" +
"cBwDZftzq/7BdlI3vXUX7Q+ePmSmKdEfuqhYqP9i8tsy+f7g6fOk52DUMdOa" +
"xNddpD7T6qJchmWw0Hf/iyiXrDnnUr19/uWv2ymXB9rEp0ZSr7N0US4/+kV2" +
"VzCUS3Y86o3pf9Acsc58wj65/LlTg1zW7HRPLo+t13/1+lMrysUUeo7V2/+X" +
"3GCfXIDB1QrlQq+3DK8tvKXqc3b5eUWU3Rww0hAtg6/8XfxW863J8ferrxdX" +
"e4rmqaB/ZPKg+0e43hLj4CSNd48gUlrVIt5WaxWMd6kx1LXtzkax6EXsXbkt" +
"bsrlyxo/V/HDX3CWE+WiVS4zVui9wAyZbp9cFm5JUS7Lt7knlwUv6h1U01eg" +
"XEyUC/z2Q43rbmdfYp9cnn03RbkErvoOyOXiG/RHLSgXM+WiO3pZ/rZdcgH6" +
"bUxBLn29RF/e6eclisD2XX6Y20Og96HzfGlXPKw8dd4pmLYiplx0W9JtsZMN" +
"q61YaTLbmqOczPZnjJmXd/LlKwJXHl3l/S+N0cutY6i2U1iPqHOK55yLY2xd" +
"CnKBRF2TyzyNUyIYtEInHcolE7lMW6F3amSbXOjPvcY9TMf9vlxI1DW5wJUj" +
"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" +
"Yo9c4ITXNUYmrbJLLnNaFMiF/jjauE32ygUYoXn9BWQ2cx3KxUa5/OuJ+sYI" +
"z9g1SS4QZCSWCx29lNfYLRfgYo3rL2Vz/XmjXOyQy++n6hsjP7nIPrmMq2O/" +
"3lJYLsDSdjGWUIjuz3VMm5+lNNT+J2tYf/lVr5C60OVk1Y1RDxWItrWKPpXJ" +
"Q7jtEqAragFumaq+z1ntLdO2pfsP47wNLSyXB9rsl8u9Ka+/wDrLknaUi41y" +
"6TtX79R5Xo19cum9MSW5zGi2Xy6QZvmy9ObQ09ehXGyVi867iudcl06fpymX" +
"BVv411uE5VJR74ZcgF+lsP4CV76oeqBczJaL7qilOFZsksuUBoVyof9DMKjK" +
"HbksUbz+ArKKqwfKxVy5wPRE51oLRLhp9XmachlJ3UEeWJVALmHRy/1eaLSo" +
"LZzFDBa1+1kscUxU3rxlKGVutZr1l6+fSpU5jBTrEZtvTJqLJDChDMw82ikY" +
"+V6k+SluyE9V2yduK470ittE1luk5AKfcXRFLsCwh5Jfhe58FeViq1zGP6P/" +
"4UrI0za53NMqNiWSksuYOrfksjjhlav3PZwdjnIxUi4na/5rCEy/FrXZJ5fJ" +
"DSnIhRZMWaV7clkkuf5SDG9RLnbK5epy/VHLTVPslIvoeouUXIC5Xoi0cAsH" +
"bQwk0oA1n1Kk0gxhdpXY+gusswjlIVpOmbZT1BaxZUijj5O2nUQZxj6tXyxf" +
"OlHxGFFxDrbxtZ/oeou0XKY2uCcXYMiD/Osst7+CcrFVLnAh+dKJ+uVyVbmd" +
"crm7RXxKJC2X0XVuygW4sCd7kPSak8IJgnLRJpcfXahfLHBBAqnZKJdJ9SnK" +
"JWzdxVW5AN+PWX8B+aRygqBctMjlqvJs3uvDNW4MlcvQav4/KyaWCwDvdbhv" +
"M8UWP/D2ulKY+0twnwLoNO+KWH/52qlddZEoA90WrLYR3Z+n/UX7Q6btVKTJ" +
"agvW/lFlvH5KNmKBsTSrSryezLblaRsF/SUTtSSSC/wVwFW5AAMfDA6QKWtR" +
"LrbKpcec7N5G+MuecvU0QS68nxFJJBe49UTfinJZLsAFJesvMDgjOx3lYrRc" +
"Rj+dzZsIY6MWS+Qyuk6DXLimRo7JZUHX+gtIJrbTUS7GyiVLsQBXlsvXM2u5" +
"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")
RESET_ROLLOVER = ("data:image/png;base64," +
"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" +
"SZQAAAAASUVORK5CYII=")
RESET_DISABLED = ("data:image/png;base64," +
"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" +
"ep4lLxdMd2mrXIaHR5xfv8yPv3z79i3yRcVyyY9cTM3fgg2fF9gkl+7u7trl" +
"QhdHu3v3rrVyAVNTZsdffv365X1UyXKxTy4nJyfG6oiYN/mXCxoZNctFehx9" +
"+7bVcgHr6+bGX+bm5mJdVCyXfMhlYWHBWB358uWLdXJBI0M3vaVWLqqu0cuX" +
"L8PpF+l/KSLv3y/Q/1Im7jklyP77+/vpf+G6vianQxMvXd7I+/Qr0OTNy9qJ" +
"Wz7aOhDhmP5+ESndUjr7I6A+t6lWS+XD1ZrLS7rmarx+FHnlL4vbbiMjymPo" +
"2HLBEo62y2VwaMhrjqY5zqJMB8sl93IxPXUH3n61TS7Xrl2L1CWKLZeuri7r" +
"5YJ4TL59m1ofGtMAslzslIuJVm1l2/y0mUx5GZTLs+fPI4+3xJZLa2trIeQC" +
"1tbXU5mTQ3UBslzyLxfTrZZKXbFJLvfb25OTC/2G4NatW4WRS3/Cdyq8zxJ0" +
"AbJc8i0XdE9MjrWghassj5zLpYk8Qcbk/VXLRdV66e3t9cZeVPT39RP6BPrc" +
"i0QgIByBfkJfvwj5nZ5TioMPjIQnMf6CcZbQOKvQpFOKe79ItLwT81suD03e" +
"Kss4ev5GqSOR0hETmldyvRTPiykmTW44XyLpilQPwss0Uvn9rR90vCXotf+q" +
"5dLR0VEYuQCsFVTrXQgfSbJc7JQLvvkyveGctsml+2l3rC5RVXK5c+dOoeRS" +
"651rZmZGH2eWS27lsre3Z1Qs6H4lli6Dcok6zUIsudCX6TD9QtHkguP29veS" +
"a96yXKyQi6nJoPwbFrW3US50KRHdeEskuQTNqfvixQunt1cE//PTq+FFb69A" +
"74sokDA056S/v+hV4P4fb0DGGX/5dvjt4nhdHM8R95HjIebFC1XcBXr19L6o" +
"iSTKTHueCPHWx0FXz2TwaYbpDa0WMa3hZaq7vpTErkf0+lGUofv/uOMtVcsF" +
"4y5FkwvApD1Rx1kwZSDLxU65vHr5yujTocq2tLRopVyePHkSu0tUtVxaWloK" +
"KRewurqqrSSYhEqs/CwXm+Ty+fNn42I5/0jxpZVyifOxYmy50HGX69evF1Yu" +
"IGyQD/KRKz/LxRa5LC2aH2e5qDdSWu2QC11dMexjxdhyUbVeMK8DZqcLp5cQ" +
"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")
# Original file: LoadControl.py
class LoadControl(PGLControl):
def __init__(self):
PGLControl.__init__(self)
self.set_name("Load")
self.set_active_icon(LOAD_ACTIVE)
self.set_disabled_icon(LOAD_DISABLED)
self.set_rollover_icon(LOAD_ROLLOVER)
self.set_pressed_icon(LOAD_PRESSED)
self.set_state(PGLControl.ACTIVE)
LOAD_ACTIVE = ("data:image/png;base64," +
"iVBORw0KGgoAAAANSUhEUgAAARcAAAEXCAYAAACH0wDUAAA1l0lEQVR4Xu2d" +
"6d8kV3Xf/T8lNmBJWCwSO2K1AQmzGcxOWMTq2IADwdiQyEASkDRaZqTRhka7" +
"BiQxQkgwYgaDwSCxmCXgmATljd/lVaVP99Mz1d/fqTr31tJd3X3v5/N9Mfcs" +
"99S9t37TVdVP9e+drqrfKxQKhaGRjkKhUBgC6SgUCoUhkI5CoVAYAuko7Aef" +
"e7Sqlnzioap6692rXHS0qv7dF2OedrXGfuC+s7mXcPzC7iMdhd3BTmo70e2E" +
"pyhskktuPStArLmwO0hHYfuwkzTn08ZUWX4KKp92dgPpKEwf+1/fTkSenLvK" +
"UnA4D4VpIx2F6TGmmLz4pqq6+LZVPvT1BR9+8CzX/mjBNY+dtc95cMEy9pIa" +
"HGsIbB5sPjhHhekhHYXNYzdYh7rEWYqHCcFff3MmDjOBOPGvVfXoEw7/d5Vv" +
"P6HQhzm+bXEO185E6bOzg/vwrI43zT6JvOQmrbULRWymi3QUNoPd5OSJk8p5" +
"V80E5FhVveu+xacIE5Cbf1ZVJ3/XzrcinnCgD6F/wF2/qqqrf7T6CciOh8eY" +
"ionyaWd+C+tHOgrrw/7H5cmRgp18b5z97//xRxYn5/LEPvkEsL4WRBjIEw70" +
"IfTvwu8Wx/V3p2aC+dWqetZ1Ogcp2L2a0868F9aDdBTGxS55cu+f1MXkpp8u" +
"Tj6PXRIX5jwjNvd1+2Rj837aWY/CeEhHYXjsSUfuPRS7PLB7JPPLmyecE85h" +
"l8WFdhNZE1sT3RyxsXUoT57Wg3QUhiPny2t2grxzdgnwhe9W1SP/R3kY0N6F" +
"MOfvHOgT5CT0H4obflJVHzyRJzR2n4trVhgO6Sj0J+dTyp/dVVV/++2quv9f" +
"9ISpM8ZJGuaksExYXOqYQJtQc66bsMvU8mlmeKSj0J1UUbHHwx+bfaS/45d6" +
"YjQxxkka5qSwbIm4LDHBNuF+1TFdA48iMsMiHYU8bDOm3KB91pHFx3b7+M6T" +
"IIUxTtIwJ4Vly8Sljgm5zb+tA9eGFJEZBukopJEqKu+YfTz/fMN9lBzGOEnD" +
"nBSWLRaXOibwqZdN5SlTd6Sj0E6yqHylqo79oqoe+t/j8A0H8fktcGKy4hNy" +
"0J85BfMJ4BjMEdldZnmP/byq3v+1tJvARWTykY6Cj4kKN5zH2KKyhCeUd1Lx" +
"RKc/CeMTctCfOYUDAWmDYzBHZHep5f/Kr2cik/ikqYhMOtJRUKIbtbYp7X9A" +
"+59wvmG5kUeAJ5R3UvFEpz8J4xNy0J85hYMTvA2OwRyR3YXjzPq+8ps0kbFP" +
"rtwjBUU6CmeJvqdim/ADJxb/83Gjjg1PKO+k4olOfxLGJ+SgP3MK9XlrgGMw" +
"R2R34Tg1m4nMRx+Ob/6W78m0Ix2F+BLIROXS2SeVe/9nVT34rwPx20wY7+Wg" +
"neT6jwFr8GBMwNd/uwrtLg1jfupkVV0YiEx5suQjHftOdAk0uKgs4eaOYLyX" +
"g3aS6z8GrMGDMQFDisuSv3q4/XKpXCop0rGvRH+h/MrZR+Bb/1k33WBwc0cw" +
"3stBO8n1HwPW4MGYgDHExfrunV3+vv0rujfqlL/EPot07BvRo2X73+qy7zib" +
"bWi4uSMY7+WgneT6jwFr8GBMwFjisuTyH5RLpRSkY5+IXtD0vgcWf+r/tf/V" +
"zgMdYI6IlHj6bALWRHL9PZgjgvEejCH0N2x/tF0q7fuLq6RjX2j7tPKKWxev" +
"ZWzbWDkb04M5IlLi6bMJWBPJ9fdgjgjGezCG0H/JLT+rqtffqXuoDvfeviAd" +
"u07bkyD7X+iTJ9M3VurG9GCOiJR4+mwC1kRy/T2YI4LxHowh9Cdf/H77pdI+" +
"vudXOnaZtsug5SUQN1XKxqJ/CswRkRJPn03AmkiuvwdzRDDegzGE/k3YPuLe" +
"WrJvl0nSsas0XQbZpxV7K/19/9KM/el+HdqF3zik+LT5jwHHJPRPIJyrlDHg" +
"E+YESf49xxBqua7+4exTzGHda0u4N3cV6dg12i6DLrpx8bpE2Sgge+PxBPJO" +
"ItoJ/ceAYxL6JxDOVcoY8AlzgiT/nmMIyHfHL6rqdS33YvbhMkk6dom2y6D3" +
"PpC+kbI3Hk8gI8WnzX8MOCahfwLhXKWMAZ8wJ0jy7zmGwOM6OLa/eEj33pJd" +
"v0ySjl2h7TLov5zO20jZG4+b7GCjhT5t/mPAMQn9EwjnKmUM+IQ5QZJ/zzEE" +
"Hlft2Ox3mdpu9nLv7grSsQtw8Za88IbFi4LsD9NW+DWI7AHHf6PQR+CYQ8Ax" +
"gjppl3weUUxkH4DwOByOA9o5htgJ/RFz++wy6bV36J5csouvcpCObcYWiIu2" +
"5D33O4vvbAJ3o9AewM2etOE55hBwjKBO2iWfRxQT2QcgPA6HdYvL0ucjX9e9" +
"uasCIx3bSpOwnHuoqj5zyln4YBO02gO42ZM2PMccAo4R1Em75POIYiL7AITH" +
"4bApcTGu+mFVXXBY96qxS69xkI5tpOmPDhsvg0jDJmi0B3CzJ214jjkEHCOo" +
"k3bJ5xHFRPYBCI/DYZPiYthlku1P7tldEhjp2DaangjZwt3688XrEfpyz6+B" +
"9fVExsi0ezCGRP6Rfe6TOReMHwKOQcSfNW+obo8336t719iFJ0nSsU00Cctr" +
"7lgIy1CbJHdjpiBjZNo9GEMi/8g+98mcC8YPAccg4s+aN1R3E00Cs+3viJGO" +
"baHpUbMt1NCbJHdjpiBjZNo9GEMi/8g+98mcC8YPAccg4s+aN1R3G+++X/fy" +
"tguMdGwDqcIy1CbJ3ZgpyBiZdg/GkMg/ss99MueC8UPAMYj4s+YN1R3x14/o" +
"nl7Cc2AbkI6p0yQsH39EN8hQmyR3Y6YgY2TaPRhDIv/IPvfJnAvGDwHHIOLP" +
"mjdUdwq7JDDSMWWahOVjD1fV3b9cYH/Z3BvLU4d2kuKf4tPH34shkX9kT/C5" +
"+1eriD+gf0oMxxQ7oX9KTC7M741BewOXf3/xFQru820TGOmYKp6w2AJ8+tGz" +
"wlLEJSDyj+wJPrlCQf+UGI4pdkL/lJhcmN8bg/YWdkFgpGOKeG/kt4m3BagL" +
"SxGXgMg/sif45AoF/VNiOKbYCf1TYnJhfm8M2gPsXb0vcL4Lsy03eaVjaniP" +
"m5fCYgtQxKUlhkT+kT3BJ1co6J8SwzHFTuifEpML83tj0B7xq4XAeJ9gtkFg" +
"pGNKeMJi2G/I3P7LBfbejFbMJ8C+LVkntBMnp8CYiA7xyzk5MzcB4XE5yBj0" +
"4RikNl7qmALGIDKG40MkJhM5TgfGsIYmu71C0xOYqX/RTjqmQtPfCtWFxV0w" +
"wgV0kI0V2YmTU2BMRId42cwB4XE5yBj04RikNl7qmALGIDKG40MkJhM5TgfG" +
"sIY2uwkMzwVjyn8qIB1ToElY7HeZwwUjXEAH2ViRnTg5BcZEdIiXuQkIj8tB" +
"xqAPxyC18VLHFDAGkTEcHyIxmchxOjCGNUR2+/1qnhNTFhjp2DRNr6V8092L" +
"CQ8XjHABHWRjRXbi5BQYE9EhXuYmIDwuBxmDPhyD1MZLHVPAGETGcHyIxGQi" +
"x+nAGNYQ2n/ZLDBTfF2DdGwaTprxxpmwHPv5gtsyWca1xdNnDNYxJscgkX9k" +
"HwKO0QXmvO0Xq9B/CDhmZPd8huIdX9VzZIoCIx2bhJNlvPyW1YnlAkZwYWj3" +
"fMZgHWNyDBL5R/Yh4BhdYM59ExfD/sPluWLwnNok0rEpvC/JPf9oVR39yeqk" +
"cgEjuCi0ez5jsI4xOQaJ/CP7EHCMLjDnPoqLMXWBkY5N4D1y9oTF4AJGpMTT" +
"ZwzWMSbHIJF/ZB8CjtEF5txXcTHsPOG5M5VH1NKxbrwbuPZM//Pfq6pb/rmq" +
"vvwzYH1jwzEJ/ddBQg02X3VSYlphvJcjsm+ClJpSfKYGa55x3Y+r6pmH9Rya" +
"wu8iSce64aQY9lsvg50gXeCYhP7rIKGGIi4HpNSU4jM1WPNB3V/4np5DBs+1" +
"dSMd68S7z/Jndw98gnSBYxL6r4OEGoq4HJBSU4rP1GDNtbov/ZqeS5sWGOlY" +
"F033WY78eOATpAsck9B/HSTUUMTlgJSaUnymBmtG3ZfcpufUJu+/SMc68O6z" +
"nHOoqj73D1V180/bsd92rnPzz1aJ7B4SQ+gfQH93DNoJ/YH4eyAHYU5Cfy8m" +
"tKMm2jkP7lwRxnBMxtO/Vk9qXZKTY6bkZAxzBmMyPzn8eFU941o9tzZ1/0U6" +
"1gEP3vjIQzr5HpzwaEFo95AYQv8A+rtj0E7oD8TfAzkIcxL6ezGhHTXRznlw" +
"54owhmMynv61elLrkpwcMyUnY5gzGJP5Pew/aJ5bBs/BdSAdY+PdZ3nDXYuJ" +
"4eR7cMKjBaHdQ2II/QPo745BO6E/EH8P5CDMSejvxYR21EQ758GdK8IYjsl4" +
"+tfqSa1LcnLMlJyMYc5gTOZ3mfm99wE9xzYhMNIxJm91vvTzvKOLj3Mpi9Fl" +
"QWj3kBhC/wD6u2PQTugPxN8DOQhzEvp7MaEdNdHOeXDnijCGYzKe/rV6UuuS" +
"nBwzJSdjmDMYk/ldDnwvPqbn2rrvv0jHmPBg7T7LZbOPcTf89ICfxNwIaN8E" +
"N/50lbcdr6qX3lzI5a3HdW73mT57/Zof+fdf7H4nz8uxkI6x8C6HPvz16qyw" +
"7JC42InCYy2k8fo7dX73lb57/bLv6PwaPDfHQjrGwHs/y6tmH9tWhKWIS+GA" +
"IjALhtjr9mmQ82u3J3iOjoF0jAEPzi6H7M1aRVwKTRSBGW6ve5dHPEfHQDqG" +
"xvuy3Jlr6z0RF7sktP8tCj7eHikCM9xe/xvne2XreMG3dAwND+q511fV9T9e" +
"YH90VWfZ3wZjIq5/fBXaXR/AGiL/l0Bc7AQqrb15l87G6+505n8IsIZiJ4E/" +
"99R8XwXk+ksNHhzj8QWvdAR87Ju70jEk3k3cT52sHTjgxHgwJoKTT7vrA1hD" +
"5F/EpVtbq8BgDcVOAn/uqfm+Csj1lxo8OMbjC/7b9xa3Izi3PGeHRDqGwtso" +
"3CTZk+vERHDyaXd9AGuI/Iu4dG/evvH2Tm+whmIngT/31HxfBeT6Sw0eHOPx" +
"s7zlXp3XMV/uLR1DwYMw1bzqhzhwwInxYEwEJ5921wewhsi/iEu/thaBwRqK" +
"nQT+3FPzfRWQ6y81eHCMx1dZ581d6RgC7+dX/8N9VXX4sQ48vsqRx1aJ/MXu" +
"IDmZgzg56rz4piIufVujwNyh65G9fk4MoT/XWKC/MwbtYQ7aHY7YODWiHJ/8" +
"ls7pWDd3paMv3l88203c+eR2AZMlC0aCyfWQnMxBnBx1irgM05oE5rV3rq5H" +
"9vo5MYT+XGOB/s4YtIc5aHfIFRfjtXfonI7xywHS0RfvJu5nTx1MbhcwWbJg" +
"JGFyieRkDuLkqFPEZbiWIjDZ6+fEEPpzjQX6O2PQHuag3aGLuFzxg/Xc3JWO" +
"PnifWt58T21yu4DJkgUjCZNLJCdzECdHnSIuw7ZIYLLXz4kh9OcaC/R3xqA9" +
"zEG7QxdxMd51n87n0J9epKMP/NRi6vil7y/+iKozjwHa10FmDUVchm9NAvOa" +
"O3T+J0O0byL7yDx95Ju70tEHFjrIwm94AeZk1lDEZZy2dQIT7ZvIPjLee3eH" +
"/PQiHV3xnhDZW7F4QNlseAHmZNZQxGW8tlUCE+2byL4Gxvz0Ih1dYYGDLfYE" +
"FiC3hiIu47atEZho30T2NfDOr+o8DvVnAdLRBe9Ty3/9TlUd+mE79qW6Ff7J" +
"IcWnxiEg8QkwB+smjH/RjUVcxm6NAnN7pXvCWbMIrukooM7Izhq9OnP37n//" +
"x6o658rVORzqey/S0QUu8J/ergfhwYnhZKZMOOHkSnwCzMG6CeOLuKynpQoM" +
"1ysFrukocP8Gdtbo1Zm7d83H+83pIT69SEcuXT+1GJwYTmbKhBNOrsQnwBys" +
"mzC+iMv6WorAcL1S4JqOAvdvYGeNXp25e9d8xvr0Ih25cFFTP7UYnBhOZsqE" +
"E06uxCfAHKybML6Iy3pbJDBcrxS4pqPA/RvYWaNXZ+7eXfqN8elFOnKwk4YF" +
"feyRqrrynxbYNwFXsL46tHsEMcuxmsaM7CljkCsB7RcVcVl7axKYV9/urK+z" +
"xtE+idbcJRhzCFgXob9wUNsXZp9e/nDgTy/SkQMX0v7HblugTpMdxISbIrCn" +
"jEGiBSzispmWJTBc02CfRGvuEow5BKyL0F+o1We/08654zmfg3Sk4i1k/VOL" +
"t0CdJjuICTdFYE8Zg0QLWMRlc83bl67AcE2DfRKtuUvmvuoC6yL0F2r1fdb5" +
"tYA+73uRjlRYhJ1Q0QJ1muwgJhozsqeMQaIFLOKy2ZYkMFzTYJ9Ea+6Sua+6" +
"wLoI/QXUaHPEeeO5n4p0pMIC3n3/4u+IcrBfAKhDu+dD6B/yAwf69KSIy+Zb" +
"k8BccpvuIW8fRfYUmCOC8V344g+A9dWgP8+FT57UOet6Y1c6UvBu5H7+u07h" +
"AeGBOz6E/iEUliIuO9tyBIZrGNlTYI4Ixnehr7gYT7tmdb66/gysdKTAxXr1" +
"bU7RCYQH7vgQ+oc4kyk+PSniMp2WKjBcw977DPEpML4LQ4jLUDd2pSMFDvzB" +
"E07RCYQH7vgQ+oc4kyk+PSniMq2WIjBcw977DPEpML4LQ4jLZ07rXHX5a2np" +
"iOA3cu3ZuBScSHjgjg+hf4gzmeLTkyIu02uRwHANe+8zxKfA+C4MIS4G97BB" +
"LYiQjggO+Ia7qup//OMC+xpxG0u/Jn/aPRhDIn/aPZ+Q77XzwhuKuEyxNQnM" +
"xbc5axyQsocin752z4fQnzT5e2+qoxZESEcb3uL8p29qYU00HUiT3YMxJPKn" +
"3fMJcQSliMt2NG8PG7LGASl7KPLpa/d8CP1Jk/9l/6BzZPuYmtCGdLTB11g+" +
"+zq/sCaaDqTJ7sEYEvnT7vmEOIJSxGV72gec/5VljQNS9lDk09fu+RD6kzZ/" +
"+0THeaImtCEdbXAg+wW3psI82g7Es3swhkT+tHs+IY6gFHHZnua9SF7WOCBl" +
"D0U+fe2eD6E/afN//wmdJ2pCG9LRhKf2n5ot0he+l8F3O8AcJPKn3aNLTAtF" +
"XKbdPHHhGgrRHqE9xaevfQg4BuAfM+Z850U6muBivOxmp9AIp/gQ5iCRP+0e" +
"XWJaKOIy7VbEpQbHAPYTupwrakMT0tEEB7B3b0qhEU7xIcxBIn/aPbrEtFDE" +
"ZdqtiEsNjgE+/ojOFbWhCenw8BbjUyedQiOc4kOYg0T+tHt0iWmhiMu0m7ef" +
"uYZCtEdoT/Hpax8CjuHASyO7RUKN8JAOD/4t0fnXLH42hPw9yLV34e+/u0qu" +
"PQmLq0M7eEERl0k3T1y4NwnXOLJ7MIbk+nsx3KuRf2Q3Xnrz6lylvkRKOjy4" +
"EPZD1iwgpdDI3oVIPCJ7EkVcdqoVcWkeg3bjz+/R+aJGeEiHBxO/9wEtIKXQ" +
"yN6FSDwiexJFXHaqFXFpHoN246MP63xRIzykg3gL8ZlTWkBKoZG9C5F4RPYk" +
"irjsVPP2NPcm4RpHdg/GkFx/L4Z7NfKP7Eu63HeRDmKvuasnvfDI4qdD5pxe" +
"5bKAM3E5YIwQxidwGaCdY0T+z8cfd26ruPBeG9nW4/LERdZ0gH0lcB8B2gXm" +
"c+BxEPoT+i/n4pXQgZT7LtJBuAj2k5lnijm9CieL8ECSwBghjE9AJpNgjMi/" +
"iMu0WxGXZui/nIu3Hdc5O+3oRR3pIExor7M8U8zpVThZhAeSBMYIYXwCMpkE" +
"Y0T+RVym3Yq4NEP/5VzYHyhzzqLXX0pHHW8RPv3tWjF2wDU4WYQHkgTGCGF8" +
"AjKZBGNE/kVcpt28fS1rOsC+EriPAO0C8znwOAj9Cf3rc3E+/nDZ1v+0oxtL" +
"pKMO77dccGTxlqoznFrls7mcToAxQGoI4lfqP4A+zBH6gyIu026euPRdc8bP" +
"c5xqR3IA+ntwTMkRHQfjW3gF9MA47ejGEumow0T2swMrxfJAczmdAGOA1BDE" +
"c7JTJjz0B0Vcpt2KuNRgfAtvzbzvIh11mOjSEyiWB5rL6QQYA6SGIJ6TnTLh" +
"oT8o4jLtVsSlBuNb+HjmfRfpWOItAAuVA83ldAKMAVJDEC/H4PgwR+gPirhM" +
"u3l7u++aM36e41Q7kgPQ34NjSo7oOBgfwO+7DCIuT5kl/btvr/K3INt+ahXa" +
"vRwhQU7xt37zq4MYwnjyvCIuk27c2wbXMFpz2mUPeTAmGIPQv0tMZJeagbe3" +
"qR2huHBjWVIWEhUa2k+tQruXIyTIKf7Wz0lEDGE88RZgGxv3ANnW4yri0myX" +
"mgF/7rXty3TSsYTvy7UfPmMhUaGh/dQqtHs5QoKc4m/9nETEEMaTIi7TbkVc" +
"mu1SM6C4GNSOUFyYoIhLe446RVym3Yq4NNulZnDp13TuqB3Z4nLpA1pIVGho" +
"P7UK7V6OkCCn+Fs/JxExhPGkiMu0WxGXZrvUDD6W8WY66WgSlw8+WFV/82gm" +
"JwHtQzDCGJ8+uQrtEc+9fjdOwn0SlzH2keQk9O9C35yI//SjCmM4d01PjKTD" +
"cCffGSSk74GnMMIYRVwWrYhLT5iT0L8LfXMinsLiicsFh1fnrun1C9Jh8GdE" +
"LBkHSKLvgacwwhhFXBatiEtPmJPQvwt9cyKewuKJy4tuXJ07+zMhakijuHBT" +
"2cnCAZLoe+ApjDBGEZdF4z4g23pcRVya4yksnrhcckznjxrSKC4MvHiW7D9/" +
"K4GTgHYC/09+S5GYTJjPxcauwboiGF/EZdrNExfuG66x2AH3gLePsu3OOIKT" +
"p0/dEu/keFPiO3WlwxMXS8YBXIKiBPjLSU//DjCfS21yGye4BcYXcZl2K+Jy" +
"FhnTAzH2TifOHzUkWVwsGQdwCYoS4C8nPf07wHwutcltnOAWGF/EZdqtiMtZ" +
"ZEwPxp3U+fOeGImweOJiv7omA3hERRH4y0lP/w4wn8vBxLZOcAuML+Iy7VbE" +
"5SwypgfjTur8dRaXT3xz8Zq7XCyuDu2E/vOYbwU4eYZGagp4zvW7cRLuk7hw" +
"DXPX3GOIHH0ZqwbOX5K4eBPftajcA6P/PIZiQpw8QyM1BRRxmXbz9jjXMHfN" +
"PYbI0ZexanjOdavzV8SlI1JTQBGXaTdvj3MNc9fcY4gcfRmrBoqL90W6Ii4J" +
"SE0BRVym3bw9zjXMXXOPIXL0ZawaKC62F6globg849rFDd2PP+xg/TXsj5rq" +
"0P9jhP4JMIfYAWugfyeYE3gTv41tn8RF1ngNyF7dIrw9Ti0JxcWSzBM6JxEH" +
"lMmCP4VB/BNgDrED1kD/TjAn8CZ+G1sRl3GRvbpFeHucWiLiwg1VxMWBOYE3" +
"8dvYuBfIth5XEZf+8GdGirg4/p1gTlDEZdqtiEt/KC7e6y5DcXn2dVX10dkJ" +
"81ffyMficmD8HOuvwzFArn3uE9WRWYPN2S6chNwLZFuPyxMXrmG05qHd8Yn2" +
"WViDA2M4BpEx6cN88F/yJ1/WOaSWhOLyJ7f6RaUghQcwfo711+EYINc+94nq" +
"yKyhiMu0WxGX2pj0YT74L+kkLhcdXQ0o4lJl11DEZdqtiEttTPowH/yXdBIX" +
"BhRxqbJrKOIy7VbEpTYmfZgP/kvelvDTrqG4/PFMof7jQzO+4WD9GfwloD2F" +
"vjn+8hsOmTkj/2cVcZl088SFayhw7xP6J8B9KHZAe6rPClHdtDf4pPxudBEX" +
"IzNn5F/EZdqtiEuNyN7g00lc7H2Y9YAiLkrkX8Rl2q2IS43I3uBjusA5pJaI" +
"uHBDvfimjEEDsifCoW8OLmgRl+bGvUC29biKuNSI7A0+g4jLs45kDBqQPREO" +
"fXNwQYu4NDfuBbKtx1XEpUZkb/AZTFw+8vWq+rCD9a/w4CqRf2T3+LDlrePk" +
"ac2JGr06Cf0lJ7A524WTkHuBbOtxeeLCNec+4xpzT0i8A3NE9k4EdYl/Asxh" +
"vPyW1fmzr7BQS4q4pORgDHOCIi7TbkVc8mAOg+Jie4FaIuLCiS/iov6SExRx" +
"mXbjHje45txnXGPuCYl3YI7I3omgLvFPgDmMC509Ti0JxeW8q5oHYBG5BxbZ" +
"PbjozEEYzxq9Ogn9JSco4jLtxj1ucM25z7jG3BMS78Ackb0TQV3inwBzGIOI" +
"i/HBE1X1oQcV61/B+urQTujvgZjcGj5kMTVon/sQxBDGE2/it7Htk7jIPgKy" +
"B0aA+5D7KgXWKdTye3udNc3hOCf8PU4tKeKCfN6EE8YTb+K3sRVxOYvsgRHg" +
"PuS+SoF1CrX83l5nTXM4zgnd4594qIiL2Oc+BDGE8YQTv60nYRGXs8geGAHu" +
"Q+6rFFinUMvv7XXWNIfjzPqeds3q/NmcUktEXAxv4qWog0GiIlqhvwdicmuQ" +
"yWN+5PMmnDCeFHGZdiviUgN21jSH45zQ+essLu/8alW9/2sOJwDtAZeeWIX2" +
"MbjUgT4RjOdxXFDEZdLNE5e+e1ninRzcJ7SHML/lsbw1JGYkOH+dxeWNd2vy" +
"OTxY2gN6T3YHuBhdFoTxPI4piYt3Ik0Bu0bfVPPmpO9elngnB/cJ7SHMb3ks" +
"bw2JGYH3DPlD9PZiGA4whwdLe0Dvye4AF6PLgjCexzElcbFmJzLXdJPYH8f+" +
"2/9jletrRVz6YR82OH/UkGRxeenNOsAcHiztAb0nuwNcjC4Lwngex9TExU5k" +
"/rX7prAXOW9SWKwVcelHylvoGsWF19oXHK6q9z6gvC8TxhP6z2PuX4V2wpwp" +
"MAfJrcHmqz5/mxYXa3ZC24nNTbFObPzHfsfK1t88ceEaZu8RB/HJ3EfvM586" +
"tFvOgMhf7KhxDmJecpPOHzWkUVz4MfrcQzqAV1gE4wn95zGZC8KcKTAHya1h" +
"iuJizU7sTQrMrY+xos20Ii4tdtQ4BzHe/qaGNIqLN/kcwCssgvGE/vOYzAVh" +
"zhSYg+TW4E3+VJqd4FzbdWB7airN299cw+w94iA+mftoquJyPr7j4v0IfaO4" +
"GJz8P79HB2FhEYwn9J/HZC4Ic6bAHCS3himLizXv5BqTTT4Z8pp3/FzD7D3i" +
"ID6Z+2iq4sK58x5DZ4nLq2+vqnffH3AfoJ3k+ntEOSK7RxBjj+Lq0P+ZExcX" +
"a7z0HYtNPxnymicuXEOuOe3vAeLv7ROSOaYLx6zV1FRXG6yZ+zv1SVGWuLzo" +
"Ji1ECA5cyPX3iHJEdo8gpm3yjW0Ql3U8QZrCkyGvFXFphjVzf7/uDp07akco" +
"LvxxtOcf1UKE4MCFXH+PKEdk9whi2ibf2AZxsTbmE6SpPBnyWhGXZlgz9/eL" +
"btS5o3aE4sLH0XbCsBAhOHAh198jyhHZPYKYtsk3tkVcrI31BGkqT4a8VsSl" +
"GdbM/W0fMurz5r3eMhQXbwHe9dU83nnfKrQT+xsm8i6LqxPE0E7o78YEY0b2" +
"Z2yRuFgb+gnSlJ4Mea3T3saayx7innD2xTqI6uI5GfnzWJ9x7eq8NT2GbhUX" +
"gwtgP+HIg2mDB0I74YG6BxvE0E7o78YEY0b2bRMXa94J14WpPRnymnesXEMB" +
"ay57iHvC2RfrIKqL52Tkz2N90hWr89b0pChbXC4+pgfTBg+EdsIDdQ82iKGd" +
"0N+NCcaM7NsoLtb6PkGa4pMhrxVxqRH414/Vvo7CeaNmdBaXi27Ug2mDB0I7" +
"4YG6BxvE0E7o78YEY0b2bRWXPk+QpvpkyGtFXGoE/vVjtb8x5LxRM5LFhRvt" +
"j67Wg2mDB0I74YG6BxvE0E7o78YEY0b2bRUXa12eIE35yZDXirjUCPzrx8oX" +
"z9u6UzOSxcVbhLfcW1Vv/4rPOwJy/b2Ytx8HsDM+BeYgkT/t3k2vbWq5T5Cm" +
"/GTIa96+fsfxVaJ9RrgHPBiTC/ONkZP2ug/vtzR97T9JXAwugv2MIwdnEU3k" +
"+nsx0aIzPgXmIJE/7dsuLtZSnyBN/cmQ14q4NOekfenz+jt1zqgVRDoIEz73" +
"eh28qVCS6+/FRIvO+BSYg0T+tO+CuFjzTsI62/BkyGvecRVxac5n/S/JvN+S" +
"JC78Mt05h3TwpkJJrr8XEy0641NgDhL5074r4mKt6QnStjwZ8loRl+actC99" +
"cu+3JImLtxBvmH1Eeuu9CRwPyPWf8RZAewjH9MbtaX/6DomL9wRpm54Mec3b" +
"07KmJHMPJPu0wfguMGdHcu+3JImLwYV42ewjkhyEh1PkCrn+x4u4bKLVnyBt" +
"25MhrxVxyeM1GX+sWEc6PJj4OddVehAeTqEr5PofL+KyqbZ8grRtT4a8VsQl" +
"jxcnvtaSSIeH3He5stKD8HAKXSHX/3gRl0223/wbe7azFXHJg/u57Y8V60hH" +
"E1yM191ZVW++px37unAd2gn9Xe5d5c0RzjhExohgDcj3dLwGcFfEZVeaJy65" +
"a0x/2udk7kXmJPT3YmhnDdFx0d/gXHm/C+0hHU1wAPtTACkMhAce+LtwciKc" +
"cYiMEcEakK+Iy7RbEZezRP6pPyPiIR1N8BubT73KKQyEBx74u3ByIpxxiIwR" +
"wRqQr4jLtFsRl7NE/nZ/lXNFbWhCOprwvu8QXRqFBx74u3ByIpxxiIwRwRqQ" +
"r4jLtFsRl7O0+dv7cp90+eo82dcSqA1NSEcbXJDnHV0U0JU3Adrn3AVoD0gZ" +
"gz4kt4anFXGZdPPEhWs4BLKPMukb74K9/CZQ9+36lGiJdLTB9+r+4ZVO8Rkk" +
"TV7miU1SxqAPya2hiMu0WxGXs7SJC1/XOqq4eIvyiludA0gkafIyT2ySMgZ9" +
"SG4NRVym3bx9zDUcAtlHmfSNd0kUF++Lcynfyq0jHREc8FnXOQeQSNLkZZ7Y" +
"JGUM+pDcGoq4TLsVcTlLk7i88AadI2pBhHRE8O9M7IbPG+7qyJ2A9nXBOgj9" +
"A/hzl0VcptU8ceGa2ysG6nCN6e8R5hgD1kF7IuddtTo/KX+oSKQjBS6M/WAa" +
"i0tioInoDesg9A8o4jLtVsSlnVcd0/lJ/eJcHelIgQPbKwZYYBIDTMQgsA5C" +
"/4AiLtNuRVzasXc2cX6oASlIRwp2Y4eD229Js8iQASZiEFgHoX9AEZdptyIu" +
"7dhT4PrcpP4tEZGOVLg49kts9qW6Oq8ld6xivzu7AuI9ohyR3YMxQnAc5Hx8" +
"m7mIy7SaJy5cQyJ7JnNPuDkCewqsQ+wgsntvnLP54vmfgnSkwj8HMLUTISDB" +
"gTLeI8oR2T0YIwTHQYq4TLsVcWm2X4g3zhk891ORjlS8Pwcw1SviUsRl6q2I" +
"i2/3buTa3uW5n4p05MBC7KQq4lLEZeqtiItvv6DnN3KJdORgJw2LefmXqyIu" +
"RVwm3Yq4qN371NL1Ru4S6ciFBdmvMv7p7fuNzUERl+k2T1y4hvvG0J9aDOnI" +
"xfv0Yr8py+L3iSIu025FXFZ5pfP74H0/tRjS0QUWtu+fXoq4TLsVcVnl2T1e" +
"CNWGdHShfHpZpYjLtFsRl7NccltV/QFeCNXl74g8pKMrXKxnXrsoPItjysW3" +
"rcIYsTOHExMS5WCN4KlFXCbdPHHhmkZrTjv3QBIWV4d2Qn+nrsjOur3vtXT9" +
"0hyRjq7wRVKGvdyXB9MKJ8KbLCB25nBiQqIcrBEUcZl2K+KywJ4QjfWpxZCO" +
"PnDB7E1WXIRWOBHeZAGxM4cTExLlYI2giMu0WxGXBfz9Z2OoTy2GdPSh96cX" +
"ToQ3WUDszOHEhEQ5WCMo4jLtVsRl/E8thnT0hYtmXyh71a0+9gisDu2ezyuP" +
"gSAH/Wn3YM5c7GdXirhMt3niEu0TrnEK2TmCve2RPcYB3vdahvzUYkhHX7xP" +
"Ly84qpPgTQTtnk+0ABIfbBoP5syliMu0276Ly8tu0eM3eC73RTqGgEU/5Yqq" +
"esWX44mg3fOJFkDig03jwZy5FHGZdtt3ceH+NIb+1GJIxxB433u58HA8EbR7" +
"PtECSHywaTyYMxcuXhGXabV9Fhe7iuCxD/FtXA/pGAoegGFfrLMbvDvHLavw" +
"5cZFXKbVPHGRNd0E2Ed//GVgfUBytPDyW/QmrrE8Z4dGOobCW0A76XjAO8Et" +
"qxRxmXbz9qas6SbAPhpaXLwfObO9WT9vh0Q6hsS7uWs/AcuD3npuWaWIy7Tb" +
"PorLi27UYzbq5+vQSMfQ8GCefMXi4xkPfqux46lRxGXabR/FhXvSGOMmbh3p" +
"GBrv5q79FIk9DjORWeFm5WXkloDAX8ZkfIKdsOZzD+kxF6YN15RwjWWPcN85" +
"ey+COVMIx7zZ/ybuWDdx60jHGPDAjBfeqBMlC8iJ8yaPBP4yJuMT7IQ1F3HZ" +
"PrimhGsse4T7ztl7EcyZQjTmS25a703cOtIxBt7H0HOv0omSBeTEOZMnBP4y" +
"JuMT7IQ1F3HZPrimhGsse4T7ztl7EcyZQjSmXSXwWHN/UL4r0jEW3s1dO/CV" +
"yeICcuKcyRMCfy7OfIECH9oJay7isn1wTQnXWPYI952z9yKYM4W2MZ/j/HLi" +
"0H8/1IZ0jAkP1LCfjrSPbo3cDHLtQ5A5hr0j4+nXgGsDIn/auzCFnLn+Xgyh" +
"fwe4hrlr7vFSQHs4Bu0JLMe66Ab/cmjsm7h1pGNMvN86sgmwx2QysU0TnGsf" +
"ggHGsC8Q1glzRvYubCCnnGCBf1IMEP8EwhiOQ3sCvcegPYHlWPxJVuOSW9cn" +
"LIZ0jI0dIA/aLiNkYpsmONc+BAOMUcTl4AQL/JNigPgnEMZwHNoT6D0G7QnY" +
"OPZJjOfYOi+HlkjHOuBPwRruR1NvgnPtQzDAGEVcDk6wwD8pBoh/AmEMx6E9" +
"gd5j0J7Ac5yXbRs8B9eBdKwLHrzh3n/hBObah2CAMYq4HJxggX9SDBD/BMIY" +
"jkN7Ar3HoD3Avt6x6fssdaRjXdjjME7C71++uBFl92BSMf86tHfC8tShvQMX" +
"AdrHgGMS+hP6ezBmDMYYMzcn/Qn9PcIY7Lvcvf2UCdxnqSMd68R7PH3OIZ20" +
"NnIXIIkiLknxKTmGYIwxc3PSn9DfI4zpIS5Pm8h9ljrSsW44IfNJuUYnr4mc" +
"BUimiEtSfEqOIRhjzNyc9Cf09whjOoqL9/V+g+faupGOTcBJMezGFCfRI3UB" +
"sijikhSfkmMIxhgzNyf9Cf09wpgO4mIvf7LbCTx/PvdoEZc57v2XLy1+ZtIm" +
"r5UbVnkhOboK/ecwJ4n8aU8gqa5Mf/oQ+stxEPonwPnPtXeCdaeAHLlzJf4O" +
"2cfKHLB7Y9orZHnubPI+Sx3p2BTe/RcTmOdzwgkXgHBBuKAGc5LIn/YEkurK" +
"9KcPob8cB6F/Apz/XHsnWHcKyJE7V+LvkH2szAE7x/OEZdP3WepIxybxvv9i" +
"E9gqMFwAUlsQd9MYzEkif9oTSKor058+hP5yHIT+CXD+c+2dYN0pIEfuXIm/" +
"Q/axMgfs9fGa/n6N59QmkY5Nw8kKBYYLQGoL4m4agzlJ5E97Akl1ZfrTh9Bf" +
"joPQPwHOf669E6w7BeTInSvxd8g+VuaAfTkWXwA/RWExpGMKcNIMe0T9vOsd" +
"joJc+4znHl2F9gj78l8d2uegDo4pOVg3Yf4OMeGYzD8AMmYXojoj+xbjvVHO" +
"sL/b43m0aaRjKnDyDJtYTna4kSL79Xqi0x6RdMKgDo4pOVg3Yf4OMeGYzD8A" +
"MmYXojoj+5bi/c3QVIXFkI6p4P0FtSsw0UaK7NfriU57RNIJgzo4puRg3YT5" +
"O8SEYzL/AMiYXYjqjOxbSJOwrOvFT12QjinRJDA20WcmPtpIkf16PdFpj0g6" +
"YVAHx5QcrJswf4eYcEzmHwAZswtRnZF9y/DeJmdM5ZFzE9IxNbwXfBvnX7P4" +
"Hox92a6O9dUR+xEHJ64NyRnYPRgjBDUyX1JOwPgUWJfYQa49BeYg9Hex2msw" +
"B5F4QP+hsN8asq9kcP9PXVgM6Zgi3jtglgITLbLYedImbCwiOQO7B2OEoEbm" +
"S8oJGJ8C6xI7yLWnwByE/i41YZmquDQJy5S+y9KGdEyVJoGxv0NqW2TZBDxp" +
"EzYWkZyB3YMxQlAj8yXlBIxPgXWJHeTaU2AOQn+XmrBMUVzsP85tFhZDOqaM" +
"9yU7w75Q1LTIsgl40iZsLCI5A7sHY4SgRuZLygkYnwLrEjvItafAHIT+LjVh" +
"mZq4mLBwj2+bsBjSMXWaBOacK6vqwsMORwDtng/p658Skwvzdxmjb7yXg+T6" +
"ezEjYH9JXId21kR/IvFODoH+R5q/ILdtwmJIxzbQdIlkLyW+IFpA2j0f0tc/" +
"JSYX5u8yRt94LwfJ9fdiRiAUB9REfyLxTg4B/vZFUe7pbRUWQzq2hSaBedLl" +
"EJiUBacP6eufEpML83cZo2+8l4Pk+nsxIxCKA2qiP5F4J4dQ820SlnX87OpY" +
"SMc20fSYekVgUhacPqSvf0pMLszfZYy+8V4OkuvvxYxAKA6oif5E4p0cwszn" +
"giP+Xzcb2/C4uQ3p2Daavmhnd9rtSdIzr13FvpBE6CMcBrA/4zBA/pQxcv2l" +
"Jqcugf5AanB8hGAMyQlo93xI5D/EehCJj+bBi3Hs9h8h9+4uCIshHdtIm8Cc" +
"f7UuKOGiC8FGGmIz5/pLTU5dAv2B1OD4CMEYkhPQ7vmQyH+I9SASH82DF1PD" +
"/uNrEpap/q1QLtKxzXCRltj1bNOCc9Fdgo00xGbO9ZeanLoE+gOpwfERgjEk" +
"J6Dd8yGR/xDrQSQ+mgcv5gB7IuR9h2WXhMWQjm2Hi7XkyVfoYnPRGwk20hCb" +
"OddfanLqEugPpAbHRwjGkJyAds+HRP5DrAeR+GgenBjD+5nVJVN47+2QSMcu" +
"0PRdGPvf4o+u1gXnphCCjTTEZs71l5qcugT6A6nB8RGCMSQnoN3zIZH/EOtB" +
"JD6aB/jbF+OaLoMM7uFdQDp2Be+dvEvsfw+75l1if2Vdp27zyPWfx1y9Cu2k" +
"yxgRzElS/OkzBtGYtHeBOSOieNrrPvYN8n/fcBm0rd9hSUE6dgnvVwWWPOmK" +
"5o3BjUNy/ecxRVySicakvQvMGRHF07708X4FcckuPBFqQzp2ES7qEvvfxG6u" +
"eZuijVz/eUwRl2SiMWnvAnNGRPG02+W397vNS3bt/oqHdOwq0WVS28Yh3Ei0" +
"exRxSScak/YuMGdEFF+37etlEJGOXab1MunyxSs07X+cSWK11aHdI4qhndDf" +
"i6E9om+8R5ecUQztxPG3T8FtN213/TKISMc+0PQ0ybBrZNk4UyDa3B5RDO2E" +
"/l4M7RF94z265IxiaCfwt6/wN31aMfbhMohIx77Q9IePhj2yti/ecQNtlGBz" +
"u0QxtBP6ezG0R/SN9+iSM4qhnRz4nXtV+72VfboMItKxTzT92cAS+4j7VG66" +
"TdGwuVuJYmgn9PdiaI/oG+/RJWcUQzu5evHFTO6ZOvaHtdxz+4R07CNtN3sN" +
"20R2k27JeeSqmHp8CuEYtDswJ6E/OdfqBucFiL+TN4Q5D7WT6z+PIVGOg+Mx" +
"nnxl+yXQPn9aqSMd+4pdE3OT1LFLJbsfk7IxPWSzBoRj0O7AnIT+xE4kcl6A" +
"+Dt5Q5jzUDu5/vMYEuW4anGp/Pstl0DGLv1tUF+kY99pekfMEru+ls2Jjekh" +
"mzUg2vxid2BOQn9iJxQ5L0D8nbwhzHmonVz/eQwJckSXQPv2JCgF6SgsiC6V" +
"7H7MmU2KjenBzRoRbX6xOzAnoT851+oG5wWIv5M3hDkPtZPrP48hTg77pGLr" +
"XC6BuiEdhbNEl0qGfZKxx5D2Rbwz2L9J3T7jnCtWoZ3YC8j7wpwRjPdyRPZt" +
"pe0J0JJyCdSOdBSU6FLJsGvxMyJDYXHEo4jLNEkRlW1+r+06kY5CM9Gl0orI" +
"EGziIi7TwdYrRVTsEmgfvwzXFekoxCSJzOw6/cmzDVvEZbqYqERPf4qodEc6" +
"CumkiIzdDLT/Fe1pQw72Sog2TLhCnLy9CcaQOkkQPwgcA9h6NL1msk65/OmH" +
"dBTySbknY9iGThUanqSEJ4yLk7c3wRhSJwniB4FjzLCnPimCYhRRGQbpKHQn" +
"VWTs04x9HHdPvgN4khKePC5O3t4EY0idJIgfhIPcJih/8KX2R8l1iqgMi3QU" +
"+pMqMkbTZRNPUiInqQdPuiEIxpA6SRA/BDafqYJi7PvfAI2FdBSGw74H0fZ6" +
"BzL/RGNic/DJZoUD2xI7gYj4ALEzB/1ZgwNjmJNjCl5OwrrIQVyOoBjleyrj" +
"Ih2FcfjAfbq527ATZXn5NAcnlJyAng8QO3PQfzl2C4xhTo4peDkJ6zpgOUec" +
"uzbKp5T1IR2F8Wl7l0wTZ8TmADkBnRO56aRszEH/2gnfBGOYk2MKXk5S888V" +
"E6PcS9kM0lFYH/bdiZTH2R5nhKblROaJL3bnJJ6SuJi9i5gYdjlaLns2i3QU" +
"NkPu/RmP5aeb+r2bbRCXet1dxWTJB+4rgjIVpKMwDXKeOO0zNk/l27PTRDoK" +
"08NOniI2C+x+VRGT7UA6CtPHTq4uN4W3kSIm24t0FLaT5aebrjeIN43db1pe" +
"4hQx2Q2ko7Bb2IlqN4unclllddhN1yIgu490FPaL5SeFOiYAdXgJZp+O6MMc" +
"RTwK0lEoFApDIB2FQqEwBNJRKBQKQyAdhUKhMAT/H9+0TO4h343IAAAAAElF" +
"TkSuQmCC")
LOAD_PRESSED = ("data:image/png;base64," +
"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" +
"lcoU/H9uNGmzOVkzaAAAAABJRU5ErkJggg==")
LOAD_ROLLOVER = ("data:image/png;base64," +
"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" +
"RK5CYII=")
LOAD_DISABLED = ("data:image/png;base64," +
"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" +
"RU5ErkJggg==")
# Original file: RunControl.py
"""
This class represents a control that doubles as a run and pause button.
"""
# // Implement the Pause side
class RunControl(PGLControl):
def __init__(self):
PGLControl.__init__(self)
self.set_name("Run")
self.set_active_icon(RUN_ACTIVE)
self.set_disabled_icon(RUN_DISABLED)
self.set_pressed_icon(RUN_PRESSED)
self.set_rollover_icon(RUN_ROLLOVER)
self.set_state(PGLControl.ACTIVE)
def execute(self):
self.fire_action_listeners()
# Images
RUN_ACTIVE = ("data:image/png;base64," +
"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" +
"AAAASUVORK5CYII=")
RUN_PRESSED = ("data:image/png;base64," +
"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" +
"AAAAAElFTkSuQmCC")
RUN_ROLLOVER = ("data:image/png;base64," +
"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" +
"SUVORK5CYII=")
RUN_DISABLED = ("data:image/png;base64," +
"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")
PAUSE_ACTIVE = ("data:image/png;base64," +
"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" +
"l5n9kAvkArnUVS70OIrufouxXKavh1wgF8ilrnKhdwydyUX+tOtvVkEukAvk" +
"Ule5TJOOtpy4KoVcVJu6j+wQ4g8fqHmUwTS86po/7JSwiJNNg4nT9Hdd3j6a" +
"z6CkdHXz+OhOCbnsjf97+0hO5TgSpG/T5nK5uH7mpC8bkkWcSWHk/Za4x/61" +
"5KJaGtFnHCEXyAVyqZdc7t9itiSyksu1ayEXyAVyqZtcbun1IBf5YbqxKyEX" +
"yAVyqZtcTPdbtOSi2nd5oDFFmrtDg50MpuEbPCIx1xSdfKb93TIfi3MalJSu" +
"dvtphMm1HLptbopNH0jbT3zk2xLT/RYtuaiWRrf1Qi6QC+RSF7ncs9l8SWQt" +
"l2u6IBfIBXKpi1xu7vEol8i+ywrIBXKBXOoil0lr9F9WNJaLavZy3xYhHt6e" +
"zEMSpuGV7AjzMIerdJPyIMepyAcXJ133t8P5DEpKV1k3GvVZyHLIdb+D7zem" +
"bazVtw37ok4fMc4HUxc6bS6PfdV3oZ3KhV4FgFwgF8il2nLR/YxIKrnQrafW" +
"BH7dDrlALpBL1eVC+6ve5SJ/bkRnaQS5QC6QS3nlQufljmkLj3l639C5XFRL" +
"o+u6gwzYMkdCGW6rhIc05jCkzYNWvhrxvjmcz6CkdF22YRnL4QOt/u3xep3x" +
"NEeiNaztXSIrucjn6l65AnKBXCCXqsplckeGclE9rXtHH+QCuUAuVZOL6sE5" +
"nadyreWiWhpN64JcIBfIpWpyuXFdulmLlVzkA6Row+eBrZZskdiaE1sYMkpz" +
"0aF8BiWlq1tuevW+FdU1i3KSy+uNdO9X5FEF1+aR8KZ9RieOLPqVZTzj281f" +
"VEwtl7gPpkEukAvkUg253NVv/+Ccc7nQ5wYgF8gFcqmGXOjMprRLImu50MaO" +
"6lvSkAvkArmUXy50F9jmXSInclHNXuhLbPRQXSv3ymwOc5/MFh4uDjYNjWsi" +
"MOWIpKmRb1U+X/8op0H5kV493adZ33mXQ6e9TPtAJLxhn3DVV7l8mKYh/646" +
"cS7p20Re5CK/DkC2g1wgF8il3HKZ2ulmSZRKLqrXAch6kAvkArmUUy6qjdyk" +
"z7V6k4tqaTRhFeQCuUAuZZXLlA53s5bUcpEPkSJmvA+5QC6QS9nkopq12G7k" +
"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" +
"TkSuQmCC")
PAUSE_PRESSED = ("data:image/png;base64," +
"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" +
"AAAASUVORK5CYII=")
PAUSE_ROLLOVER = ("data:image/png;base64," +
"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")
PAUSE_DISABLED = ("data:image/png;base64," +
"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" +
"W9WQC+SSFbnQAq3pGZYiiaVwcgkSDP2VgFwgl7TlYvrMalb3Y4FcQjwL4zdN" +
"glwgl6Tl0tra5jsNKqJYCisXvz15fz0P4/71aG1r/UUbo7WtjdEqhOe0adB3" +
"ZbxQZwuC3vxWaGWY8qHF06qgnaPFKaRpgp3D09TgdWUsO88rz5dal6a6CDzf" +
"1KZa+7C6i1JXV+nTtNxvGpTXZ1hKLRe/rwp4p0mQC+SStFz8bjMX5Y5QaeUi" +
"rcPQX5OWGy2QC+QSu1xu3Lhh/J5QkadBpZSLzTQJcoFc4pJLWadBpZWLzTSJ" +
"Gp7+4mSTFsYNkCVablT6T9CibdGnQaWWi3Q3qfoZE8gFhIX6jd9opSzTIMhF" +
"ePGx+qVHGtpCLkCC+knQ2kqZpkGQi8VrA9mcKkEuWRytBPUferG2zNdXqeVi" +
"s9hblQz9harSwnEF5KW5pVmnWaKFoR7X0mhuEc8R42Ro51fKotLS0qygl1UI" +
"L+Shko+QdSelYawrloZeLl7232GlKVCZRyuQS8hb1tXb1tSpIJfyyqWpuSlw" +
"ClS0d4MglzrtEeNdj4FcyieXhsaGwH5RtjtBkEvCUyXIpfhyoXbGFAhyqftU" +
"qTqSoekSPYj3C/o/o7GxSaFJoLFJRYvTm54vjYymcJjyFjIOvdw25agx3zEg" +
"TX8wBYJc6jJV0iQDueRWLjZSyfO+tpBLTqdKvyTjDqUhl/zIhf4o2EgFUyDI" +
"JZOSgVyyJxdIBXLJtWRoMfByytSgQAuFCo2MhvhpbGhUaGhkNHDkOBorv/0m" +
"fJ4awsfB6orXrR6fWq7r14MXaTH9gVxytSZzOZq55nbu65BLCnIhodiMUiAV" +
"yCXXkqmOZiCX5OVC9WwzSoFUIJdCSUYRDeQSm1waQggF7wBBLrl9MTJoewej" +
"aK64RheIl2sqJCSOFoYhxsHDXzdxTYGfo+fpWjDXda5zpDR+1ZG9UPCcCuRS" +
"io2q/ERzzSsZyEVLoxpHmHrFKAVyKe1eMqJsSiyXKDLBWgrkgtvZEWVTZLlE" +
"lUn12RRMeyAXEGF9Jnh0cy1fcmG/1VIHNP1Ef4JcQEx3nMoM1lAgFwDZxAL2" +
"TYFcQAYXhSETALmAyKObqAvEaUPrTZjiQC4gh4vFWZlWUT6w6Aq5gBKPgLzw" +
"KRiNjngY1BuAXAAAkAsAAHIBAADIBQCQPP8PTKOxDveSSHEAAAAASUVORK5C" +
"YII=")
# Original file: SaveControl.py
class SaveControl(PGLControl):
def __init__(self):
PGLControl.__init__(self)
self.set_name("Save")
self.set_active_icon(SAVE_ACTIVE)
self.set_disabled_icon(SAVE_DISABLED)
self.set_rollover_icon(SAVE_ROLLOVER)
self.set_pressed_icon(SAVE_PRESSED)
self.set_state(PGLControl.ACTIVE)
SAVE_ACTIVE = ("data:image/png;base64," +
"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" +
"EuLSrzB2KkNc7iYJjJe7nn0E3vsNPYdSXwtQFX2wzlr+x3eqat8PupGH6pb4" +
"vkGKT4N9QLXf48zrl8db8trcKyEu/QpjpzKEuEhpFZjLq+ozj+mcUzB/HTv3" +
"j7WHmP/0J//yb4vxNsdf6rkXVdEHLu5f3KonYcGF4WKmLDjh4qr2e4S4jEPJ" +
"wtipDCUuUlYSGOavY+f+sfYQ85/+iu/bvzld4uxFVeTS96xF4MJwMVMWnHBx" +
"Vfs9QlzGoWRh7FSGFBcpvQWG+evYuX+sPcT8p7/i+8OdvaiKXLigqWctAheG" +
"i5my4ISLq9rvEeIyDiULY6cytLhIaRMYyTPmXmsuO3buH2sPMf/pr9jzG+Ls" +
"RVXkYL0i8KKHq+ry7y+QJwGXkLomtFs4beq+2vpss58R4jIKJQtjpzKGuEix" +
"BEbyrC13S3C5A/0Ve2P78uzs5Y8Ln72oihy4kKLS1kbmRLIW22nTJh6ePcRl" +
"HEoWxk5lLHGRwn+4myIugvxOO9eOez4HVZGK9YRp86zF2uieUJg4bdrEw7OH" +
"uIxDycLYqYS4dNDYW18wfi1glfe9qIpUOAhZxLaNbE0kebGdNl6fbfYQl3Eo" +
"WRg7lRCXDrC/3nirXj/u/VRURSocwPvvXXyPKAf5BYAmtFs+hP4u31sQ4jIO" +
"JQtjp7JucWHOtqFytQdf+R6Qugb0r/dDzacetdeP+z8FVZECF1D40pPGwB3c" +
"iRs+hP4uIS6jUrIwdiohLh19QFyEU67AHHr+DKyqSIEH7423GINOwJ244UPo" +
"7xLiMiolC2OnEuLS0YchLqVu7KqKFNjxR44Yg07AnbjhQ+jvEuIyKiULY6cS" +
"4tLRhyEunz+q17DPt6VVhQefyJXPxtWAE3EnbvgQ+ruEuIxKycLYqYS4dPRh" +
"iIu1PwRqgYeq8GCHb72jqv7Xvy2Qx4i7qP3a/Gm3YBvi+df1r7pueR4hLsNQ" +
"sjB2KusUF8kzLxf72i0fQn/S5m+9qY5a4KEqurCebfnv39YDa6NtIm12C7Yh" +
"nn9dH+IyDiULY6cS4tJOm/8l/6rXUeZGTehCVXTBt6e95Gp7YG20TaTNbsE2" +
"xPOv60NcxqFkYexUQlza6fI/5xa9ltSELlRFF+xIfsGtbWAWXROx7BZsQzz/" +
"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" +
"zck6bWgnXYsUJcqqZdvF5XmXLc+v7ZOibHE555CeTBecCO2EEzUn67ShndR+" +
"IS5RhijbLC7yOAo1gZrRW1zOuF5PpgtOhHbCiZqTddrQTmq/EJcoQ5RtFhf5" +
"jiE1gZqRLC78adc/PaAn0wUnQjvhRM3JOm1oJ7VfiEuUIco2iwtfan/KgRXE" +
"xbqp+867qurd99i8xyHX32rz7rsB7GzfRohLlCGKJS6tuZwJc3iImLQ3fXi/" +
"pe2x/yRxESgu8jOO7JyDaCPX32oT4hJlymVbxeUvb1+el0CtIKqCMODLrtGd" +
"tw2U5PpbbUJcoky5bKu4nJV5vyVJXLhYJ+zTnbcNlOT6W21CXKJMuXC/bIu4" +
"5N5vSRIX677LW2enSOfdlcDdDrn+M94JaHfZ6+uF+Np4iEuUEoXiInmWk99W" +
"rq4EY/Yk935LkrgIFJfXzk6R1CQsjEEuket/d4hLlGmXbRSXN2V8WbGJqrBg" +
"4JdeXelJWBgDXSLX/+4QlyjTLtsoLq9OfK0lURUWXLATLq/0JCyMgS6R6393" +
"iEuUaRfulW0Qlxfi/mTXlxWbqIo2qFxvub2q3vH1buRx4Sa0E/qb3LXMOzyM" +
"foQQlyhDFEtcvFxMzX/6W21o535Q+8fxF7j3rd+FtlAVbbAD+SqAGhhwJ+74" +
"m3BxPIx+hBCXKEOUbROX1J8RsVAVbchHT80O/mS/MTDgTtzxN+HieBj9CCEu" +
"UYYo2yYucn91cHHhz40I3qWRO3HH34SL42H0I4S4RBmibJO4yPtyn3fp8nzk" +
"+4bUhjZURRcUl5dfuxhAX94OaJ9zB6Ddoa2PU0JcogxQKC6SZ8y9VNpydyWw" +
"n94Omr59PyWqURVd8L26f3y5MfgMkhYvxCXKBpVtEhe+CnZQcbGe1n39zcYE" +
"EklavBCXKBtUtkVcrAfnUp7KbaIqPNjh6VcbE0gkafFCXKJsUNkWcXnVdVpc" +
"qAUeqsKDL5CSGz5vvaMntwPaB4Q/SRniEqVEobicfGDxugKBOTgIhfbUSfsh" +
"kglfVCSqIgUqmvxgGgeXRKGF6EOIS5QhyjaIyxsOLc9BSH1wromqSIEdy9fK" +
"OcAkCixEX0JcogxRtkFc5J1N3OPUgBRURQpyY4edy29Jc5AuBRaiLyEuUYYo" +
"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")
SAVE_PRESSED = ("data:image/png;base64," +
"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")
SAVE_ROLLOVER = ("data:image/png;base64," +
"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" +
"86/rQ1zmQ8nC2LmEuKTp8j//cr2WfX4OoCpSyP/5sKPf/0RVfey6NB8H8idk" +
"nRgxZuXjX25T9/WY49pzCXEZh5KFsXNZpLhIntU5x/1AVO5mwDZ9UfsD9t/a" +
"pz2fPs+8qIoUPGB7vkAPhKiFoJgQI8asqMWbEuIyH0oWxs4lxCWN2h+wy/+7" +
"cz2pDSlURQp2IO/e5ECIWgiKCTFizIpavCkhLvOhZGHsXEJc0qj9AfvFH9Lr" +
"mXtppCos5OCwA++SaHPgQIkJMWLMilq8KSEu86FkYexcQlzSqP1h+PDSSG6R" +
"UCMsVIUFF+xeB1XV1f9eI38l0kTZAe0WjOnhtp/2vdtz23MKcRmHkoWxc1mk" +
"uOx23EYeXjuB+c/czM3d1h6axt7RBzHa9GWP57fnlPsSKVVhwYMlf2TNhbAW" +
"Q9kB7RaM6eG2n/Yd4jIfShbGziXEZTasv+GhRlioCmJ9BX32ZXohrMVQdkC7" +
"BWN6uO2nfYe4zIeShbFzCXGZjTf9O72mOfddVAWx7re877N6IazFUHZAuwVj" +
"erjtp32HuMyHkoWxcwlxmQ2JO+S+i6og8pq7ZtCdD6uqD37BRv5SpIsPfrEb" +
"+m+2Aa5d4jRQ9im7hrjMhZKFsXNZpLhIniVz1YH+Jt4ecvaD237qt+9L2vPK" +
"ue+iKggP1LZzjQFO4aAIJ0LoX0+sqw9ldxazbhfiMh9KFsbOJcTlVnq3n/qd" +
"8ka9rtQKoiqaWPdb5HWWaoBTOCjCiRD61xPr6kPZncWs24W4zIeShbFzCXG5" +
"ld7tp37yA2VrXakZ2eJi3W/5g08ZA5zCQRFOhNC/nlhXH8ruLGbdLsRlPpQs" +
"jJ1LiMut9G7f8L3nQe25yVypGdniYt1vef/nG3yumw8A2skHPm9gxOkTUzEd" +
"+6OPbc8txGUcShbGzmWR4iJ5pnJwysy5jPYWff27ePqL9dpur7Ru1KiKlhGB" +
"Dj6nCnEpUEJchhXGziXEJd+/i5PfoNd2e6V1o0ZVtIwIdN7lVYhLgfKLX7b7" +
"XmUu+0g5GDuX7TdVcyurLC6XGL8z6rrvoipqrPstLWEJcZmpWK+wCMojX5nO" +
"s6yyuAh83qWIuNzpaVX1ns+0uRKUtls+fXnPp9vU9Y86pj2/eYvLOl0aLRJ5" +
"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" +
"oAT/H4eNiRkiCdUdAAAAAElFTkSuQmCC")
SAVE_DISABLED = ("data:image/png;base64," +
"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")
# Original file: SpeedControl.py
class SpeedControl(PGLControl):
def __init__(self):
PGLControl.__init__(self)
self.set_active_icon(SPEED_ACTIVE)
self.set_disabled_icon(SPEED_DISABLED)
self.set_rollover_icon(SPEED_ACTIVE)
self.set_pressed_icon(SPEED_ACTIVE)
needle = GPolygon()
needle.add_vertex(0, SpeedControl.SHORT_DELTA)
needle.add_vertex(SpeedControl.SHORT_DELTA, 0)
needle.add_vertex(0, -SpeedControl.LONG_DELTA)
needle.add_vertex(-SpeedControl.SHORT_DELTA, 0)
needle.set_filled(True)
needle.set_color(SpeedControl.NEEDLE_COLOR)
self._listeners = [ ]
self._rotation = 0
size = PGLControl.CONTROL_SIZE
self.add(needle, size / 2, size / 2)
self._needle = needle
self.set_speed(50)
self.set_state(PGLControl.ACTIVE)
def set_state(self, state):
PGLControl.set_state(self, state)
self._needle.send_to_front()
def mousedown_action(self, e):
if self._state in { PGLControl.ROLLOVER, PGLControl.ACTIVE }:
self.set_speed_from_point(e.get_x(), e.get_y())
def drag_action(self, e):
if self._state in { PGLControl.ROLLOVER, PGLControl.ACTIVE }:
self.set_speed_from_point(e.get_x(), e.get_y())
def set_speed(self, speed):
speed = max(0, min(100, int(speed)))
range = SpeedControl.MAX_ANGLE - SpeedControl.MIN_ANGLE
angle = SpeedControl.MAX_ANGLE - range * speed / 100
self._needle.rotate(angle - self._rotation)
self._rotation = angle
self._speed = speed
self.fire_speed_listeners()
def set_speed_from_point(self, x, y):
range = SpeedControl.MAX_ANGLE - SpeedControl.MIN_ANGLE
x -= self.get_x() + self.get_width() / 2
y -= self.get_y() + self.get_height() / 2
y = -y
if x != 0 or y != 0:
angle = (math.degrees(math.atan2(y, x)) + 90) % 360 - 180
angle = max(SpeedControl.MIN_ANGLE, angle)
angle = min(SpeedControl.MAX_ANGLE, angle)
speed = 100 - (angle - SpeedControl.MIN_ANGLE) / range * 100
self.set_speed(speed)
def get_speed(self):
return self._speed
def add_speed_listener(self, listener):
self._listeners.append(listener)
def remove_speed_listener(self, listener):
self._listeners.remove(listener)
def fire_speed_listeners(self):
for listener in self._listeners:
listener()
# Constants
NEEDLE_COLOR = "White"
LONG_DELTA = PGLControl.CONTROL_SIZE / 3
SHORT_DELTA = PGLControl.CONTROL_SIZE / 14
MIN_ANGLE = -120
MAX_ANGLE = 120
# Images
SPEED_ACTIVE = ("data:image/png;base64," +
"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" +
"gtzq/wFey2EufhX6mAAAAABJRU5ErkJggg==")
SPEED_DISABLED = ("data:image/png;base64," +
"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" +
"nicv02dntHqKyLESy83TjFMP13MijjfJhf45HR4esjQYQnt9MsZXasNPweLi" +
"tdLeSSqlWGZmZxti+RRygaQplwb1v9VqNWUUQ50acsmfXFZXV4LffntnSCMb" +
"uUQJhu54Qi45utV8bXExuoEzkgudd/js2enQF3LJl1xotPLo8ePwWGQoF4Ik" +
"VzbBlEosi9euyQ2cgVz4+asrK5BLTuRCH6+ntmiObEPjkbFcCCpb6BcWCrjL" +
"XWnEQg1DDZZHuZgvCMilHXIJi4UWlzbIhfIpk2BKIRb6zs7Hjx/NfGJ8BGd8" +
"YmRfhk/1fDnO6aTQxp8YWcaEdvkLu+tYJMEUWizUAPfv38+840Eu5ZcLl8zH" +
"HAkGckl5R34KPDVAOzse5FJ+ubQT6t+mZ2GKsshbyNvN1mKBXCCXEgjGNIIp" +
"gmAK+RzLzz//HLx//6EBbYMQRfO4KD58eK9gc44CndPCBxPvJT6oaOez3w1p" +
"vKf6KvBy8di8j8ScB4Of90GAx/79e3c+RCPFwSYWYXmH9hktzw9iH9Dy1Prh" +
"CbSFpkkweX/QrnDvCrWKBXKBXLKWS1gZ0pRLUzBFe1WgUGLZ3Ng0iCFduVjJ" +
"BnKpnFx4v0lbLgT9Yy2SYAqzLeXCwkLjospSLtYjGcilknJR+kgGcqH8wgST" +
"x+0aCrHR0/T0dPDbb7+1j3cq9HRnKz7ySCPNPJbh3TsVm3i3te1zGP+w3fTy" +
"JphcySXsyUQatUAukEuueZdd/JeWlgqxZWYhvoBI0AY7kAvkkmu5vEs//rQ/" +
"kbTzIeTi+M3mto5eIBfIxaWPpBj/jY2NwnyjOtffFeIcPj8M3r59y3jHcP39" +
"bb2Tv1Ohv7Wgp8F4p/Lurc7bd28Z7yLRyyDVy5COcA6vt02stNgJ8HrL9TKV" +
"862CFCsbXOuq9REtdqY6RMfKOc/63y5evGh1reThu0i5XWcxvrS1dANygVwK" +
"Ipe33uWyHfENpDyuv+R6ncX02P/Lly8hF8ilknKxHbXkZf0l1+ssYa+cQy6Q" +
"S9Xksr29Het6aef6S+7XWUyjl6Nffw2O37xp8IZzLGBzzhs3jhl2xxwz+PHH" +
"Cm+OVY4t8uVpuJbBHD/1HPrEaStSOaX0TtJ8oyC2D89Xqpcpdloabm2sx/rY" +
"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" +
"9XCMnUzNApdz4sbKjN+6bfoncV9uQxljXIPOZTTkYWpbyAVysTxn07tcapBL" +
"peRy5coVyAVyCT/Gt1xqkEuO5LLpVS4XLlzw890iyKWsctmEXCCXWHLx9lG0" +
"paWlYH1jXWNjnbHB2YhET3NDg74Ip6ClISHnoeXJ68HqKaVprq8QG+c89HiL" +
"7aO0lR5bm3rIsXODdpSXEMsZpx48j41opDJZ1ZW3EZW1hQ0BY8ylepyWL6SP" +
"bNjUnZdz3Z9c6ANJkEuJ5HKaJ+QCubjLZXV1VZPL7OxsPLnQo76QS0nkouQJ" +
"uUAu7nKhwYb06L+1XEZGRiCXMshFy7MNclmHXIouF5v3ikLlwl8BoE81rq2t" +
"ObO+tq4QJw3gk3WV9TUV6fiCtOE6A+3uFxpsxJYL3bNuPbG7uxtygVwgF9CA" +
"BhvSA3ShcjE96wK5QC6QCyB6e3vFj9CHysW07nLt2jXIBXKBXIDVbWgnuUxP" +
"TwerKysqqyorDH78ysrqKXQ7a6XxtxZMaWh5rKpIabTk2cyXo6WhIaSxomJK" +
"g9dDO0esd3RsV1f4+auGWDjGyoBYTpaGqU3N9XDJI7p9tD5iQO+bjn1Ai4sh" +
"D63s0f1O/N3Y5rxehvaK6Id6347ue/MLdneKnORC211CLsWQy2m9CiWXFcil" +
"AHKZm5tLLhf+cTRa5IVc8i8XpV6Fk8sK5JJzudAgI7FctNvRFy96lcvKCuTi" +
"Wy5avQoplxXIJcdy4XeSTdtbinIx3TFaXl5OyJLKksrSso6Y5pIAO37JgFYu" +
"qdxCmYz1EMql14vFx6JMWr20PNVz9DjEwLVeNu3H67Kkovej6HqaSdZ3Y8VO" +
"ilWcWLJzEl8/wvEX64MMm9vQkXKhdwW4XOgTjpBLHuWyXDq5LEMuuZRLZ2en" +
"1Z2iSLmYFnWnpqYgl9zJZbm0clmGXHIlF3ocxeaFxVhyGRoa8isXdhFBLq5y" +
"WS69XJYhl9hy8d1+o6Oj1ou5olz4p12bcyz6UBqJhqzlNlWCXPzJZbkycuGC" +
"gVyykQtd3ySUy5cvB/wGD3Hu3Ln4cjEt6pqgd49ooWdwcCiYnJwM5ucX6tKp" +
"V7AunlbobwpLNxpyimSJYUqjBZ6nXgaLPDSWVFzLbEI4Ryv70hk3Gn9b0uBp" +
"inWX6sV/X5LzoI3FWpHiYKqHVu6wmIXQGqulJbtYJcXY35b0dkuUx5Jjmjb9" +
"rM7164vBzMx0fcAw2Ngbl65nm+s+7LF/K7mYpka20MIPCWdocDAYr0vq6txc" +
"uBggF2u5nHXmCsplCXJJKhd6wpYGAIN1kdD1yRdoXYhab0lVLmE0Rzj02vZ0" +
"3ZaQi71c1M5cUbksQS5WadZ/m7s617ibMzg4qN1C9oHkDlEuprmWbygPmtdR" +
"EOYaIxzIRSp3leWyBLloadLucPQPO2x9xDfSeouVXGzXXXxAQ7SZ2ZlgsT4H" +
"DOe6wnWG9Pv1RQM8jUUGT5OdL5XxBPUYvRyLKkqZ9eMX63/TkOousGiBXncG" +
"K5Me/4h6nrLICPn9RxquZTbFTyuXUE+bevB+ZF2vH+jnh0NTlCRTHFek9RYr" +
"uaQxNQpjdGxUEEsF5RLW2SGXU8FALtkLhkZLhZHL2KiNWComl6jODrmcXYSQ" +
"y5lgZmYyEYyNN6zkkvYcjqZeJ/+BIJdwIJeo3yGXs/hOT02ner1GvazoLBfT" +
"e0a+oEUoeqz4hEUD14ARPVaL9b+3kjzNNMqZPM3k9fSTRh7qEYZpE21fmL4L" +
"HVsuaU2N6Elf6YKBRCAXyCVfgrFZb3GSC916SlcskAvkArkUQTC2zrCWC98k" +
"xr9Y0uzgkAvkUk25EPQeoK9rl9439C4XX1MjEgs9gtxgXmVhfv7stx8szC8o" +
"zC8w5hns9wUGT/8kDw7Lk5VTK4NWpnkRXiZeTqlMC4a6aecsqOixYcdoeRjS" +
"YPF2jZ3eHgvO5dLKEHJ8aB+Zt+gXWr9ifUaIrakeNv0iMlbG41rbIryedN35" +
"uH6lR/5jy4Xvq+tKT09P45FkyGVeKw/k4l8up/0FcvEmGBdfOMklydO6mlhC" +
"5MIFU2a5qJ0VcklDLqbjyyiXBQu5JBWMzVO5seUSd2pEYqG3ovUGrK5c9M4K" +
"uaQlF2O5KyoXKtdF9jnWNEYtseRi2kBKEgvN065evRrMzanQ35Izx4iRxhzD" +
"e5nmPNU1osweyj3HuJpXnOt90gZK3xNw76t6m+vxTLlPGNuQ5Vmvy+zMbOO6" +
"9P2iYmK5uDxQR48h05caTysOuUAubZRLq2CqLJc4grF9cC6RXGynRiQW2pRG" +
"qTjkArm0WS5NwVRdLq6CieOJWHLpE+ZsJJYJJhbIBXLJi1z4RVZVuRAz9ZmI" +
"tNRh+y6RF7lEjV46O+piGZ8I5mbnGmstKnOMWZG5ORXtd4b0O5WLMysxxxDq" +
"IZXZjJAmZ86AFgtej1kVqQz8+Dmb+LIyaOfbxHs2Ej0P3j7R7XHWJvZ9Ua7X" +
"bIz+rv6u90uLvi7EV7o+6JzxifGgo7Mj8sXiTOUS9jrAyPBIaHDiyGW24HKx" +
"Ewvk0h65zBZWLrMe5SIJJq4jYsvF9DrApb5LkcGpmlzsxQK5tE8us5DLD0ZG" +
"R4xb0GYuF9PUqPd8bypymS2gXNzEArm0Vy6zhZLLbEpy6bvUF/sNaO9yMW0i" +
"NTY6Vnm5xANygVzaJ5fJqUlvC7le5GIavZBwZmZmGtCnQ1RmFGYY9EwMhz7W" +
"dIZ+zsw0YyYGlE8rvFxSuVvqOBMKP0/9XctDK5McCz0NlWkBqYxx6iHFzqpN" +
"tTYWYqf1K5u6RiPWy1BO7TheDu36mI7sS41yC311JrIPThuusZOymO4AJxm1" +
"eJGLafRCn4CsolxmIBfIpYBymZjwP2rxIpeo0Yt/uUznVi4zkAvkkrJctD7h" +
"SS6mlxldtlZIVS5ho5eqyGUGcimhXKYrIZepqemAb6US5z2i1ORiGr3Q5yOn" +
"pqYcmTYw5RcKKEc8h8F+n2Zox0+7l3NaIE7dp6dVvMe2VKTU/9pWD3N96MPz" +
"vh6aS00upo2kxsfHIRfIpQQXZTnlQu/+pTVq8SoXWllOPnqBXCCXYvzHL0M9" +
"0hy1eJWLn9EL5AK5QC5Z1CPtUYt3uZhGL729vfWKTPxgUmViQoHepOZMTqio" +
"v09o8DTP8o4iulxKGUznT8jQ7T4FoZ5ambQyGmIj5sHLxFHPN9VVO0Yqg5CH" +
"sQ15noZ+4RI7Ux5aOqycYW181s+kehvKwWOh1Vsvt1oGU7tH9NUJU7xO8jI9" +
"jetz1OJdLmGjl8HBKynJZTJbuYSdD7lURi5NwWQhl8mU5DI6Nur1BcXM5GIa" +
"vXR1ddWDOZ6OXCYykkvU+ZBLpeRivIg9y2UiRbmYNojyPWpJRS5hz71cqg/D" +
"UpPLRMpykc6HXConlwl2IfuUy0SKcrkyeCWVp3Ezk0vYZlL0aUla4A1lzMD4" +
"mErk7+M5YcyAUNfxYjDGyGeZxiz6Be9XjHa0V8r9gEYnpmWLtByQmlxM3zii" +
"4Vi6chmDXCAXyCUE08uJSfZraZtcwhZ3L1++DLlALpBLxgwPD2eyiJuZXEzT" +
"I1rcHRsbg1wgF8iF1SHNGGW1iJupXEyLu/TkLr3YODo65oFRhbEfhP4+psOP" +
"kRhjSL+PGeo6phGdpk0eYp7O9ZbjTbc1FXyUO2GaUr1jtbl4viE+Wj1YLH/8" +
"fczYHyxiPWbXN01vPae1iJupXMIWdwcHB1OVy1kng1wglyzlMuYklzCx+JIL" +
"3UTJchE3c7mYFne7u7tTl8uYRSeBXCAX/3IZy41caJaQ9IPyuZZL2OLuyfQI" +
"coFcyiiXMVEuYwJJ5XJ5YMDLN59zL5ew6RHdPaKhWyjDwwrD9b+1Qt9JamV4" +
"ZFhhhBgeCadxjJonray3opdrmMHLbMonOg2xXlqZhuU0HMutx27EHWN8o3Av" +
"p8RwDJzzZP0yTqy0eEt9ZliOb7M+g0NDxulQ2ou4bZOL6VtHFIDhqMbxIZcw" +
"wYRdZJAL5FJwuXQZPtFKn23N8nrPVC6E6bu0tP6SulzqDA0OBX0X+05vy0Eu" +
"kEvacqH+Tv2b1jnon2sWcrlw4UJbp0Ntk0vYp2ApIGnI5fLlgUbanZ2d2tPC" +
"kAvkkrZc+IVO/ZC2IaHbw0PDQ97lYrrtnNXdoVzIhXYWt15/cZTL4NBgY68K" +
"kodpznm2Yn4RcoFcUpcL9emwPtj8J3ex3hep3yaVy1A9jXavs7RdLoTpPQcK" +
"DD3/MjQ0FMEwY6jRgPTfgJ7+jWrIVmiIGprHMMP1dwuG62VvRT5exa7caqys" +
"0igDsdpH71fJOUkr6p+caVRD20/a9AHehqb+n/U6Sy7kEnZ7muanUoMN0tpJ" +
"XU709K9tw/FGTNQ5IRfIxSFN06P3NtB5zbUaSS4kpTyss+RGLmG3pylQvKFo" +
"dELPxbiMTsIwpQ+5QC5pycU0SneF+v2Fer8d6O/X2tC00Xa71llyJZew9Rda" +
"mKKg0eiEL8YmpbGYBrlALhnJ5cqVQa/9l0brdF2QtOifbp7WWXIll7D1l7Ro" +
"ruu0coVTH4YqDDKuRMPTP+GKyhUBdjx1UAVDubU8hTx4mjbn6/VlaWj1YLHm" +
"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")
# Original file: StepInControl.py
class StepInControl(PGLControl):
def __init__(self):
PGLControl.__init__(self)
self.set_name("StepIn")
self.set_active_icon(STEP_IN_ACTIVE)
self.set_disabled_icon(STEP_IN_DISABLED)
self.set_rollover_icon(STEP_IN_ROLLOVER)
self.set_pressed_icon(STEP_IN_PRESSED)
self.set_state(PGLControl.ACTIVE)
# // Update state_changed
# Images
STEP_IN_ACTIVE = ("data:image/png;base64," +
"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" +
"/jnvbwAAAABJRU5ErkJggg==")
STEP_IN_PRESSED = ("data:image/png;base64," +
"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" +
"anMJQH8L+njAn9fTai7n3jxic5FgTBDCm7hnjzBGDFCbSz9ym/S+r5yuQ21E" +
"5mbdPdTmEoD+FvTxgD+vp9VcXoffkZY/E2L/ENRAS+r8yoM6QQhv4p49whgx" +
"QG0uw6S3SWojMjfr7qE2lwD0t6CPB/x5Pa3m8rbgO0ZqQKCj/Kzjl++bni8Z" +
"fPkEMPyGYLwIjOFR4u/5ePZc3jJic2n5d3/YNJ8+rHOlROfxm7+n40+N5GQd" +
"YbAvOU9rrsvap6Ak5weOj9hcJBgTTAEnOp9sbS6mPZcpmosgt0nv+bLO1xKd" +
"R20uvn0KSnLKdzqxR7CHCGpAoKMEY4Ip4ETnk63NxbTnMlVzEeQ26cyLdU4h" +
"Oo/aXHz7FJTmZI9gDxHUgEBH+dU1Bp8CTnQ+2TU3F3nZLwdziDcD2i08H8+e" +
"y/+6QB+usfl94zZpaG1TanPx7VNQmpM9gj1EUAMCHb94YvE1d7mIXwrthPq5" +
"z33A8JuSN/2R3pSVfn5ldpv0rtltUt/1+uJ9Xdrxf7qG5iI5Wd+pOgHtEcaI" +
"sSxT1cAewR4iqAGBjqVF5U6M+rlPbS5bh9wmvejixrxetbmslqlquCDw19Fq" +
"QKjN5TS1uZQj7yZde1t3PWtzWS1T1VCbywjU5rIc89ukL51ez9pcVstUNYzS" +
"XF5+8+KBrnzFnYf8UVOKZyfUz5HcCZ7PdaJJoJ3xzLkltjfU5rI0cpt0xluN" +
"dU5YV3NhHZPCvezt1THgXifUW9DnxEjNRYJEi3APvgP1czApz8e9YMZCDWlq" +
"cxmPf/sHTfOJW431/l5tLuZeHQPudUK9BX1O1OZiXzBjoYY0tbmMy6/8RtO8" +
"44t6zWtzMfRjwL1OqLegz4yL8POu7CG1ubQMaGpzGR/rNqk2F0M/BtzrhHoL" +
"+pzQzcX6ukvVWNhcXnGgaT43S/DZ7+YjfjnQf46MpzAHyLXPNQN1vO4avSkr" +
"4/BvZrdJ19y6WPN/sobmIjm5P07tE2ffuXZDM7TP5vsQ0N+CPsxBVE5qGA/6" +
"lrcGfiBNNRY2l7cetouKoAp3oP8cGU9hDpBrn2sG6qjNZVr+/uw26e1frM1l" +
"vg8B/S3owxxE5aSG8aBvKWou8kqlNpfT1OYyPX9jdpv0d5+qx6emNhdtV/Gg" +
"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" +
"AABJRU5ErkJggg==")
STEP_IN_ROLLOVER = ("data:image/png;base64," +
"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" +
"AABJRU5ErkJggg==")
STEP_IN_DISABLED = ("data:image/png;base64," +
"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" +
"Jj93hLGU4y9e5ObCWtfcUn/sF20IkFcflGPH2r1iJAMGFx479s7g1q1byk0Q" +
"zRPI37yp6JqbAbFOweQqUIeS2uy+/pYTVwTj9OCaMffv3+fZmvrx9OnTgd38" +
"bPJBclMT92+//Ub1M3+YzVs3b5Y4OWsEcdws6iCFayQXHfZvftAn5fTpU/01" +
"F1OmTtySBIfzBPJy6ClfrNFgU2KdgslVoA4ltdl9/S0nrgjG6cE1Y2bRXOxh" +
"P89x9+6XtT5Ibmrizs1F5RcDfVIuXPiwv+ZiytSJW5LgcJ5AXg495Ys1GmxK" +
"rFMwuQrUoaQ2u6+/5cQVwTg9uGbMrJqLPf7666/Bo0cPXR8kNzVx5+ai8ouB" +
"PvmwR7CHtG4uN25cd5y4JQkO5wnk5dBTvlijgabEOgWTq1Bdb6/t28FM+Srh" +
"q+FYFZV3+ApwXkht+nDNGPv+llk/ysukz9P8M7eynyW5uaj8YqBPPuwR7CGt" +
"m4t9xV0rboJPbgJnTQR1EsoLbXyol7FXRvKj/cMuk+yb7Ov25+bwIFcZjS+q" +
"udC/TT+HdVCF861grVq8VSg/A+I46mu/SYY9gj0kN5cWMrm5dH/YZdLDhw/d" +
"/cnNpQLlZ0AcR33tN8ns378/N5d2PtTL5OYy+WP96Xrx8mg1n7m5VKD8DIjj" +
"qK/9Jhk2F++NdNJYcnNJZXJzme5RXCbdubOZz9xcKlB+BsRx1Nd+kwybi/e9" +
"LtJY2Fxef/31wfUbNwY3rl9XbqTYh5qq3Lhu68Zw3vR2RnQQyqfQ5xIbH1PV" +
"d/feXdZkfnR82GWS/fqAVxOjPfj111+5bOYPs1lfy811o/MOI911NoDmJtBX" +
"nAHUOHWKzY1zsQnlHbvA5Pbt3zd9c9k37FDmBINyk1UEO4bJ4rwG2gLRQSif" +
"Qp9LNHkjcnPp77G+vl68spKby4YOwPMS6ivOAGqcOsXmxrnYhPKOXWByEzUX" +
"vvU/N5fcXPp82GWS/QZObi6sW5NJz0uorzgDqHHqFJsb52ITyjt2gcnxZ0Zy" +
"cyk2TP32kjciN5f+H6PLpNxcUnheQn3FGUCNU6fY3DgXm1DesQtMjs3F+7rL" +
"uLns2zf4+OOPty3286f5MZvHkydPipuDludFNRfud6Ydb7/9dtInDPaSsLmY" +
"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" +
"OwAAAABJRU5ErkJggg==")
# Original file: StepOverControl.py
class StepOverControl(PGLControl):
def __init__(self):
PGLControl.__init__(self)
self.set_name("StepOver")
self.set_active_icon(STEP_OVER_ACTIVE)
self.set_disabled_icon(STEP_OVER_DISABLED)
self.set_rollover_icon(STEP_OVER_ROLLOVER)
self.set_pressed_icon(STEP_OVER_PRESSED)
self.set_state(PGLControl.ACTIVE)
STEP_OVER_ACTIVE = ("data:image/png;base64," +
"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" +
"7urvsKqzFlmEctbEvF04N0DpRzDmJTXGKgtMffYSPeY1YxQXabKmLjik5611" +
"/pCXOw7ad/DhxPsuqqPGut/CRNVAUzkYgDZA5eDYqzEYOvTh6s+47ltcFtM0" +
"OWNpy9uFcwOUfgRjblJjyByvqsDUZy+RY95krOJSt9tbLpM4d8zLHQftHfi8" +
"S5bi8vMzp5+4Y5m/AcnyO5eh3PLhAp9yUB77Z4cfAcoD/OcKfsRMCstn7orP" +
"FeeWUD+C5yNV3tS5Z0XfJH/qx/r4ekxx1ipxmsfbmk/SNrdt8k/IPuzg5XhB" +
"f9dNXdVRwy8rilMm4iXqyicoLnJAtrH98N+GLzRC/Qiej1Q5db674pu869ak" +
"iJ1/yJ4ri665teQsJoQ/99r1MJ3qqOH7cuWHz5iIl6grL8Wld9v7QPpcUZ9Q" +
"P4LnI1VOnU/fNc1ZwaY1OSPnXFl0za0lZzEhLC4Ca4dbXOigFJf1aV95Qs9T" +
"ZK6oT6gfwfORKrd0zjvEGShNmqxtKb6cr6759eQsJuSkL49QXE66QSfiJerK" +
"S3FJboe+r+coOlfUl/9+TW7rgefjlHu7c2ROlo4gvkrTTc7qpPhyvtrm15Oz" +
"mJAPJbyZTnW0FZf33VhVf317IrcBynPgxPjWFhUXWUjySwLmuCNgbqZo8lIm" +
"xk1mJ3+5z1Sa3W799s48ce48sEY+fruGNqwNbZ8YqQ6BnxQJDBDCWdxZcGJs" +
"U3G58YmOcUfA3EzRchaXcx+i99KaTda6PKav5q8LrBEWFqu4nLB3uTa0vX5B" +
"dQj8GRFxxgAhnMWdBSfGthQX+a/dOe4ImJspWs7iIjz8LCOU1mxydps051gj" +
"LCxWcXnlecv1Qb4mxBrSWlz4MfTLztEBQjiLOwtOjG0pLtc86ow7AuZmipa0" +
"0NtojOEf72aE0qw2v0ziPFpgjbCwWMXljZfoKxvWkNbiQsM3zJz931sD3AYo" +
"J9D/6K0aZZPIo1tQXH7wb3pcnLsQ8DFFO+fBvMdTKGcvsSb/WP/uDj1/TT4q" +
"+66BWjPGunlr8J26qsMqLuKMAUycpBTQZ2HJsRi3obhc9U09Ls5dCPiYoo1R" +
"XPaXey/hJpdJ+x/Uc1jTp7jIO51YI1hDwsVFnDGAiZOUAvosLDkW46YXl5/+" +
"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" +
"RK5CYII=")
STEP_OVER_PRESSED = ("data:image/png;base64," +
"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" +
"mjjtjeKwePTpYsRQ0CYRlbNBrfvh3aWxDA0bDGsf2UeePIKKSQaIQeiTMamv" +
"9v4W8gLNvA1GDXgw4JsPVtXXvjVD3kbc4tttvgaoT/mULd+dMRwfXg6WjosR" +
"t5WDgaXz7s+WB7djIXV9+Tu36s31s9YwUa72EPW31rh3Dzg+lNyAOoQ+idLf" +
"4qLbVqC5/L+jVWfxvEJQn/IpW747Yzg+vBwsHRcjbisHA+qUxrIYpg2G62et" +
"YaKce+h4I2vg7QH6cOUG1CH0SZT+FlceW3BzOXVPO5jcIvUVzysE9Smf0vBv" +
"xnB8eDlYOi5G3FYOBk35Z24ujWVRSJ0v+lxgDRPl3EO/8cgZsrZd+4A+6cOV" +
"G1CH0CdR+g3OnfM9L2qgDwaSX3DrK55XCOpTPqXh34zh+PBysHRcjLitHAxq" +
"mWy+8oxlsZgNhuvmrTHk3EPSWOpYb7piZtO1B47vE/hw5QbUIfRJlH6DS48s" +
"sbl86s7ZB57CHHOg/hAwhoVnQzmhvsVE71OTxvLLpbEsBTn0nzrUXo9ejPXr" +
"o24uNY8/Od3HUnByPHF3+8ynvOdFDXTBxvLyG3UiLsccqD8EjGHh2VBOqG8x" +
"0fv3j5aKF5aFNPbjDYZrSIz164PNRfiNRyQ2tGXgzFN+351nf/JP9QcLNdAF" +
"A8h3bzIRl2MO1B8CxrDwbCgn1DeQv2TcfIXF85g/2loTriHhGlIOrOYiyBXT" +
"G66I+VgKzjw/dnQJzSX5lsiaCKH+EDCGhWdDOaE+kM3FTVdYHmeca6wh4TpS" +
"DrqaS830NsmwWzqBefLWaPJP9QcLNdBF0/kzrqmqq45pvgiuuruNJ6e/CMqn" +
"J2fMzLgteub5iUPr9crQv5pcyv/hyTNef8U2zfk2x094/kxX7NZlnpLnuz7d" +
"vWYWXHPKZf6MQ0TnE5PbjC9KPCNm3z6aUts1YF7E02cMyoWX3dhuLvKq8eQ/" +
"qkcQNWDBqxb5IWsmYCbqFIty+ougfHpyxsyM26JnnpFNt0zkOYQ0h9ddYdQq" +
"AG3e+ZlZw/l3K/586ZcfWlWfPGivmYU37+g6S2N73eXVWjWX829un//o1Ysa" +
"sKDjiw/rBMxEnWJRTn8RlE9PzpiZcVt0zFMOLTfXKvD3HjxrAJd9Xdenr5YW" +
"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")
STEP_OVER_ROLLOVER = ("data:image/png;base64," +
"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" +
"x+LWD2j2hrafX1ADAv9GRJwxgEVq4tSnPArxWwfyzdJc5FW7USvOG7U2qdkL" +
"UxxDNhfh699ghHLUD7m6lSasatgG1gj3j8VfPqzZH+RrQuwhrc2Fb0PfYR8d" +
"wCI1cepTHoX4rQP5ZmkunzoHteK8UWuTmr0wxTF0c5HbwnL4x+w2iXW0wBrh" +
"/rGI/SdGNTAbhOF9DwrhH46N4N2AcgL91x6bjvIJNsN/Bf3gR2tzlfrUYO2i" +
"QG2mOOQt85TzJai5Qn7ZVYxSDuuQtS8PxBv1w5pgrS1Y//2MP0hkD4luLuKM" +
"AUyQuJIT6LNxxKB8gs3QXORX9tUJzwG1meIYo7nIGw7liDt+9vO1en2yVj+s" +
"CdbagvV/4iua/aFXc3nSK3QAEySu5AT6bBwxKJ9gozcXWRyzufKE54DaTHGM" +
"0VxkLtd9l5HK0XWcc+HW2tVhrS1Yfxljj7DeMVKNxWou8q9rDGCCxJWcQJ+N" +
"IwblE2z05iI/PjWbK094DqjNFMdYzWVRXxTdyMfsNukD8/pVsNYWrL+MsUdE" +
"NRfrMy6veuf8Z+4Ux3Qjdr0RPzUYQ+UElvEX51MO+fV1mQfrwnnOdFAr2pAp" +
"jved2p2jOp+cgyV/5/zhYznSDvmnSa6ZLI7RPSKquVifcWlbzDzphIs5i9oi" +
"sxaaygls5OYiD3KrebAunOdMB7WiDZniGKu5CJdeWY9UjrZDbq3lU7xt6yaZ" +
"tXNwuweX5rKhm8sFl22dB+vCec50UCvakCmOMZvLGec2QpXDOK69PoQ3H7+1" +
"ZlwzWRyjm4v1QbrSXJb4+MTZW+fBunCeMx3UijZkimPM5iK3jOVoP+Q2iOec" +
"ayaLY3RzsX7XxW0ut9w9hMOOnv/EnYc8+K3jyadgmf6AK/WQL4qxhl1w7ofL" +
"easD/SmO95yCnDLgvOr89OeMWA6piXxK16o360eoPwPrSPT++EEDNJc/3juU" +
"5rKAQ/7PmfXz4Ny5KKg/xTF2c9mo53es45rr5+8ItdWb9SPUnzFUc+FH/0tz" +
"Wcwhi4T18+DcuSioP8UxdnM5+yuMuLqH1IL1SamlpT/DaC47PL40lw3bXC66" +
"QtfPg3PnoqD+FMfYzeXTX2bE1Tvqt0EkpZaW/oyI5mL93KXfXNYuf17y1hBe" +
"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" +
"QmCC")
STEP_OVER_DISABLED = ("data:image/png;base64," +
"iVBORw0KGgoAAAANSUhEUgAAARcAAAEXCAYAAACH0wDUAABE6ElEQVR4Xu2d" +
"e5vUVNa33+//DZ4ZAQUbUEEQERBEWwHFA4giDoI4clKQgyAeh3HqrZXq6sq+" +
"fytZSVUqVdW9c133H70P67TXXp2kKqn/99lg8P8ymUyma6Qhk8lkukAaMplM" +
"pgukIZPJZLpAGjLbjw8++GDw1ltvJezbt2/wf//3fyEvvviizD116tSAOjLb" +
"D2nIbC1so9uGZ1FYJK+//nouQNsAacisJm3ONpaV8VkQfcusJtKQWX7sv75t" +
"RG7OrUouOKuJNGSWj3kWk4MHDw6OHj2acP7jjws+Pn9+kzu3bxfcHnJ++Deh" +
"DIO6usDikC+pVgNpyCweu8Ha1SXOuHhYAfj888+L4vDHH38M/v77b+V//0v4" +
"37CNyBwCGX//z9r+Hty+c3tw5esrw6J1vigOB18/KLZOQy42y4s0ZBaD3eTk" +
"xmmKbTArIO+//35RRG7dujW4f//+4L///W/3PE95/t8Ujo/6H//88+Dm0N6P" +
"hnYb5scsZ2lWlBnbzGKQhkx/2H9cbo4m2OY7efLk4OLFi4Ofh5uTG3audFxc" +
"2D8eY35duXKlKJjTnsXlezWLRRoy88Uuedr+Zy4Xk/v37w0333PZpL3RU3Eh" +
"5WLTNn6GxZ1rkZkv0pCZD23/+9rlQVpMiG7AXlhQceGce8PLPouPFd02xSZf" +
"NvWHNGS6o82X12yDrK+/P7h27frgP/95PuQ/9TxXnj9/XovIAM8B5Rc6OEYw" +
"PSVMbwnOp41N7KRM48d79wYfffRRq0Jj97m4ZpnukIbM7LQ5S7H/vF999dXg" +
"119/w8Z0NlWywRRuUiIyADc+5S9zcSlz7dq1YaFel1hXYQWJa5iZHWnITE/T" +
"omIfD1+4cGHw+PHj6k3JDUW8je9s1Dablhuf8leluIzH/frrr0XhPvpms+/c" +
"5CLTLdKQaU+TU/F9e/cWp+33fvyx2aaUfm4whZuUiAzAjU/5q1ZcJn49Lwq5" +
"xX/f3vgfQC4y3SANmeY0KSp2em6n6dxU3ACyKaWfG0zhJiUiA4iNng6OEeAH" +
"Nj7n08YmdlKmgPFWXMrc+/Fe48um/CnT9EhDJqZZUXlv8OjRw8Fff/1Z8Kfw" +
"V8J4XPX4lL+KOSky5k8AHTL/z5S/PKiXOoLxtJE6R1j7hMhu9jO2orPQ++fg" +
"4cOHgw8//LDRTeBcZNojDZlqmHAe6++lRaW6WKQbIB6fohtMN5FsfOiQ+djk" +
"UiicYiE6gvG0kTr7LC5jfvnll1xk5oA0ZJToRq0lpSXno+F/Qn8TO8mNDRCP" +
"T9ENpptINj50yHxscikUTrEQHcF42kidiyguBcNxvzx71qjI5HsyzZCGzITo" +
"eyrjovJs+J+vfhM7yY0NEI9P0Q2mm0g2PnTIfGxyKRROsRAdwXjaSJ2LLC5j" +
"rMh89tmFwd69e2XNy+TvydQjDZkRTCQWlXPnzg2ePn1aPGGc2Qr8CUbtX375" +
"ZVhkmDuZEdKw3YkugXJR2ar4xWXMZ599Vnu5lC+VFGnYrkRPKL/55puDBw8e" +
"SNJltgr1xcWwfyrvvfee5EaZ/CT2BGnYjkT/ka5evSqJltlqxMVlzHfffZcv" +
"lRogDduJ6AVNZ8+dHfz85OfB77//Dn5L+G3YFvJbCmX8/hv5PeG3Qs8EmW/t" +
"0BFjc8qgnz4UfnAOCXTADw+J92+IBWVSJ+Vh/og03uJnIMP0nj17tvZSabs/" +
"gS0N24W6pDhy5EjxWsbKZC/aSptaEtMBG4AymOySzEx2B+qIKW9QZz59KPzg" +
"HBLogB8eEu/fdGPX6qQ8zB+Rxlv8DGSMddsb/06cOCE5VIa5t12Qhu0AF3+M" +
"FZwvvvhCE4vJXrSVNrUkpgM2AGUw2SWZxSaFOmJGG6R6kzrIHBLogB8eEu/f" +
"/I1dqZPyMH9EGm/xM5BBG27cqL9U2o7v+ZWGrUzdZZCd4trbzrwNIMletJU2" +
"tSSmAzYAZTDZJZnFJoU6YtINIv30ofCDc0igA354SLx/q9/YopPyMH9EGm/x" +
"M5BRZcPZs+ckt8Zst8skadiqVF0GWfvXX39dPJ4/T579+izh12fk1xQbk6Ay" +
"O0dsmB36/axoC3iWspBYAPrB/vJa3rp5c7B3bU1ybQxzc6siDVsRLu6YAwcO" +
"DO7du6eJMgckOXNxqWbFi4vx+NGj2nsx2+EySRq2EtFlkCTIHJHkzMWlmi1Q" +
"XAqG7Z988onk3pitfpkkDVuFRV8GEUlOJqJs7AVsKLFhdui3FBKPLVRcDPsd" +
"qbqbvczdrYI0bAW4eGNee+21wY8//lg8Yp/yLOUZYD+wBxfL/PJMeVaMq0Zs" +
"4vyhHSnWRtIxlBnq5HjRafGAbZw3a783BtDvtus1gnrRT52luLmxow0Wr9L4" +
"R8PLpOPHj0tOjtmKr3KQhlXGFoiLNubMmTOaEJWJBdgPcnEpMWu/NwbQ77br" +
"NYJ60U+dpbi5saMNFi/OGcr5+OOPJTe3aoGRhlWlqrDs2rWr+DEtSYbaxALs" +
"B7m4lJi13xsD6Hfb9RpBveinzlLc3NjRBosX52zIunnz5mCt4tOkrfQaB2lY" +
"RaoeOqy+DCJMLMB+kItLiVn7vTGAfrddrxHUi37qLMXNjR1tsHhxTkmeXSZZ" +
"fjJnt1KBkYZVo+oTIVu4hw8eFE+yJjxx4JinT0Da/+QJsLYST588UQIdTwD7" +
"Y3kxYmeI2kEZod2UOY0fbec0GK9+cA0DHJkKY0GeDk6fPi25a2yFT5KkYZWo" +
"KizHjx0bFRYvsZgkbqJoEpTJxaVMYDdlTuNH2zkNxqsfXMMAR6bCWJDRuKoC" +
"s+rviJGGVaHqo+bT77xTn1hMEjdR/CQYk4tLmcBuypzGj7ZzGoxXP7iGAY5M" +
"hbEgk7H2gQNzedULjDSsApWFZfgfIEwsJombKNVJYOTiUiawmzKn8aPtnAbj" +
"1Q+uYYAjU2EsSDr+4sWLktNjuAdWAWlYdqoKiy1MsUhRYjFJ3ESpT4JcXMoE" +
"dlPmNH60ndNgvPrBNQxwZCqMBeH4rVVgpGGZqSos9rvL9kRzI544cMy24Qlg" +
"//x5MtRLOCZki62nvenOvkLBPF+1AiMNy4pXWGwBLl++LItTCxNxCyTj9OTi" +
"sqxshQIjDcuI90Z+C7wtABclhIm4RZJxOnJxWWYsv73vwqzKTV5pWDa8j5un" +
"LiwGE3ELJWN7cnFZdqrOYFahwEjDMuEVFsN+Q+bR48cF9t6MWmxMiUePHymP" +
"Hic8fmzzJrBfgDzOL6BdgvlSQuajX+ab7lFMJtAuxMLm1ED5Ix2A89hPEDvK" +
"b0ThSzVRHIwoFqIT0A/K96AM2sA1Htt/48YNt8As+xftpGFZqHpWqFxYcnFJ" +
"iTaVxMLm1ED5Ix2A89hPEDvKb0ThSzVRHIwoFqIT0A/K96AM2sA1LvtgBYZ7" +
"wVjmRwWkYRmoKiwfffhREvBcXFIYG7ULsbA5NVD+SAfgPPYTxI7yG1H4Uk0U" +
"ByOKhegE9IPyPSiDNnCN6Yf9Y+WeWOYCIw3LAINn2MOJXsBlwQiTyFl0Jook" +
"KxOJMIk8aJeA5JL5TD7ON92MD+1CLGxODZQ/0gE4j/0EsaP8RhS+VBPFwYhi" +
"IToB/aB8D8qgDVxj+mG+VRWYZXxdgzQsGgZtXFgePnzYDQ8cOIZg/IOHKTJ+" +
"CuYhsy192PDA4leC/QVt12cZoM1ztHt9fV32yDIWGGlYJAyWcfjwYQnuTDAB" +
"miQBxs9jE85DZlv6sCEXl26oes0I99QikYZF4X1J7tVXXy3ex8LAzgQToEkS" +
"YPw8NuE8ZLalDxtycemOZS8w0rAIvI+c51JYDCZAkyTA+HlswnnIbEsfNuTi" +
"0i22T7h3luUjamlYBAyOfaZ/7dq1wU8//eTwIOHBsK3MTw+AzFcePHiQQpnQ" +
"KTxIeVDYlSJ2YQ5RG0hsRzSHfrNf5yu0k9Bv6XehnT8l0E/KbAJ1qA0pjBXh" +
"eB/qBMyRBvPv/vDD4OWXX5YCswy/iyQNfcOgGPZbLxpYP8CSNOECKUwUkeks" +
"aoIkuyJ2YQ5RG0hsRzSHfrNf5yu0k9Bv6XehnT8l0E/KbAJ1qA0pjBXheB/q" +
"BMyRJvOHuq9dvy57yOBe6xtp6BPvPsvJkyedoFYHWJImXCCFiSIyuaCklOij" +
"ZFfELswhagOJ7Yjm0G/263yFdhL6Lf0utPOnBPpJmU2gDrUhhbEiHO9DnYA5" +
"0mT+RgzOnfN/o5p7rk+koS+q7rPcvXvXCWp1gCVpwgVSmCgikwtKNhZ4kuyK" +
"2IU5RG0gsR3RHPrNfp2v0E5Cv6XfhXb+lEA/KbMJ1KE2pDBWhON9qBMwR5rM" +
"L8Xh6FtvyZ5a5P0XaegLBsHus3zzzTeD+/fvp9xLuQc4Pup3gQ7pD7gH2O+P" +
"uQc4/l7C/XsplOfppQwdX2+DxKWITTrHfmu7TGRnJG8k8366hkTshF6RqXPU" +
"LsoIxks/Y60yiPjJMfCbNtCOO3fuLNX9F2noAzpvfPzxxxpcL8DBgkT9LtAh" +
"/QF1C149pn4DSKIGm9bTSxk6vt4GiUsRm3ROLi7jfsZaZRDxk2PgN23w7LB/" +
"0NxbBvdgH0jDvPHus7z99tvVi8EABwsS9btAh/QHRAvuj6nfAJKowab19FKG" +
"jq+3QeJSxCadk4vLuJ+xVhlE/OQY+E0bXDuGtp89e1b22CIKjDTMk7eca8JX" +
"XnllcPvO7erFYICDBYn6XaBD+gOiBffH1G8ASdRg03p6KUPH19sgcSlik87J" +
"xWXcz1irDCJ+cgz8pg2uHRvrcPToUdlrfd9/kYZ5QmftPsvVb64Ofrz344gf" +
"Y+79eC+B/Yvg3r0U9k/DPcD+6bB4lWnbPwfGa1+GY5aSLmJVL0NygHHyYrXR" +
"fuv2Lff+C/fkPJGGeeFdDp3/+Hx9oBxycZmF+mSO++cAN0tH8Zs/XcSqXobk" +
"AOPkxarUZ/+4uef6LDDSMA+897O8+eabcaAccnGZhfpkjvvnAHOgo/jNny5i" +
"VS9DcoBx8mKF/nfffVf2nt2e4B6dB9IwD+icXQ7Zm7UYCAmUQy4us1CfzHH/" +
"HGAOdBS/+dNFrOplSA4wTl6snP5FXR5JQ9d4X5azaloViIhcXGahPpnj/jnA" +
"HOgofvOni1jVy5AcYJy8WDn99vM73IN9vOBbGrqGTtmnQz/cvVtw94eUH374" +
"IcQe1EqBHJNbYqxropPzf9Axd39I+KGwbQJ1yHgP8SO1O7KBNku/p4P9AeIX" +
"Y1v4Tx3pHJVJG9RXIr4C0cH+JgQyhNBPxM7xizZIbJBnAuU5dlTpsNsQ3Ivc" +
"q10jDV3i3cT98osvNgMTJa6HLDpkRAus821RMCZYdOqQ8R7iR2p3ZANtln5P" +
"B/sDxC/GtvCfOtI5KpM2qK9EfAWig/1NCGQIoZ+IneMXbZDYIM8EynPsqNJx" +
"/fq37i8IcM92iTR0hXcT98SJE0lgosT1kEWHjGiBdb4tCsYEi04dMt5D/Ejt" +
"jmygzdLv6WB/gPjF2Bb+U0c6R2XSBvWViK9AdLC/CYEMIfQTsXP8og0SG+SZ" +
"QHmOHXU6Tp8+LXtyni/3loauoBNWNW9+/30SmChxPWTRISNaYJ1vi4IxwaJT" +
"h4z3ED9SuyMbaLP0ezrYHyB+MbaF/9SRzlGZtEF9JeIrEB3sb0IgQwj9ROwc" +
"v2iDxAZ5JlCeY0eko8+bu9LQBd7Pr77//vuDO3dugzshtwH779wG7G9EO7to" +
"0+3bKRzfF7SDdnJ8CGPbhW8N5Nk3tsuwfyHAbsZaxjssYj2o89KlS7I353Vz" +
"Vxq6gMbv379/IxDtNrEXHPa3DbZPO7to0zSJNg9oB+3k+BDGtgvfGsjLxaUC" +
"xq6BXk/n8ePHpcDM45cDpGFWvJu4V65c2QhEu01cFZyElsH2aWcXbZom0eYB" +
"7aCdHB/C2HbhWwN5ubhUwNg10Ovp/Pe//z3YuXOn7FPu5VmRhlmhwe+8804p" +
"EO02cVVwEloG26edXbRpmkSbB7SDdnJ8yEZM7965O9h88dWDB8X9BBnblAbr" +
"lYtLBYxdA71VOu02Bfdq12cv0jALPGux6vjdd98Nbt26NeL27ZRbZGNcmduA" +
"c9gPHbeHMsqI/IJIZkok8/Yt05vCMZTJ/tumpwT7Zb5jl2DxKGFy7ElaKxhP" +
"nz4d/Pbbb4M//vhjMM3x119/FfNNjv0C4f37Pw28NdW4OEie0H+OZxw0/kRl" +
"Asmj+vnsL8YEfnjrkdpAGsgE7C+zZ88eKTDc07MgDbNAQ+3aLg0WA0M0ABJg" +
"zmE/dDQLdiQzJZLJJPOSkTLZP4/iYv+x7OcorAA8f/6c9WEuh+l59uxZ8ROp" +
"dsajcXGQPKH/HM84aPyJygSSR/Xz2V+MCfxYdHHx3rvb5dmLNEyL9wmRvRUr" +
"DRYDQzQAEmDOYT90NAt2JDMlkskk85KRMtnfVXH5aXhmYsXEziyW4RgXG/td" +
"n1FcHCRP6D/HMw4af6IygeRR/Xz2F2MCPxZdXIx5nr1Iw7TQQDlrMSQwRJ2X" +
"AHMO+6GjWbAjmSmRTCaZl4yUyf5Ziot9/6HPs5Npj7///rsoNPZcTRp/QN+D" +
"9WLsPVQmkDyqn8/+YkzgxzIUF+93p7m3p0UapsE7a/nX1auDmzdv1vM9+V4J" +
"56R8D27eNBllIM+BMr4fziujMhsQ+SVQBvtTLDkfP/558Oefy3GG0vZ4/vw/" +
"w4L4ZHjpdEd8ax075sRNh6GcMm3j3domD9ip/akO8YHjHZnR+Bvf3pBPjrr6" +
"3os0TAMLy7Fjx1xHBAaXC+YtmsxJYWFonTQ3VcYyFxcrKnaWYmcBW+Wwsxm7" +
"P7PpZ9vYMSduOthmLdE03lPb5AE7tT/VIT5wvCOzyXjvN6e5x6dBGtpSddbi" +
"OkIYXC6Yt2gyJ4WFoXXS3FQZy1hctmJR4bFZZNrGjjlx08E2a4ko3kJbmzxg" +
"p/anOsQHjndkNhk/r7MXaWgLC8v4rMV1hDC4XDBv0WROCgtD66S5qTKWqbiM" +
"i8p2Op798svg7p07zWPHnLjpYJu1RFW8K2m9ng6wU/tTHeIDxzsym46fx9mL" +
"NLTBe5v/xYsXhov174J///t7YG1toYyU74djysh8s6OMI0PmBP2tdRZ6Z2Qo" +
"4/5P9wf//e9/ufe2xWF+28fZo3jUr880jHN2krvoL3JtAvuXhTA3K7h+/Xrn" +
"Zy/S0AYWlgMHDmCBukgCykgJgymbXGXInKC/tU4nWdtgZyu///4799u2PP78" +
"88/i06W69ZmG7V5cDPuddu5p7vk2SENT7Ms2NKR81pKLC+CYhjx58oT7Kx/D" +
"w+Jy8+atgbc+05CLy78HX3/9tezpWd73Ig1NoRE8a8nFBXBMgF0P57OV+sPO" +
"YuwdJYzdNGjuor/Ita1dXAzvVgf3flOkoSk04MwHZwY3vvsu4bsb9dz47kaC" +
"PYdEbti4MjKnLapDoJ2A/dRBGwtEjrVN+K6EveRnu95baXtYnOyBytr1QKwL" +
"ovXZyOGmuewhOkmko4EfnEOZbf289IW+74V7vynS0ASvul375poYSscJHZdN" +
"bnIkGJzTFtUh0E7Afuqgje6iSpKM+Pnnn7l/8tHgsE/Q7IzCXQ9nU4brs5HD" +
"TXPZQ3SSSEcDPziHMtv6aWP4SMC0PwMrDU1gYbFi4zlGxwkdl01uciQYnNMW" +
"1SHQTsB+6qCN7qIiSewU9vfffuOeyUeLwy6TigLD9XA2Zbg+GzncNJc9RCeJ" +
"dDTwg3Mos62fNubtk2/LyQNrQBOkoQlU/NFHH7mO0XFCx2WTmxwJBue0RXUI" +
"tBOwnzpoo7uopQSxa13bGPmY/bDLJHsnT7IezqYM12cjh5vmsofoJJEO5hXn" +
"D+Ecymzrp4356spXUlymeVpaGiL4jdzinS0VjtFxQsdlk5scCQbntEV1CLQT" +
"sJ86aKO7qBvJYTduc2Hp9mCB4YYcbexgfTZyuGkue4hOEulgXnH+EM6hzLZ+" +
"jsfZBzQsMKwFEdIQQYVvv/324Ntvvy24DsbtE64D9q8m6jf9dHy9/m3x5Gy+" +
"cTufw+JqvzYocZ8SXeP2dCGjL7yvmrAWREhDHZ7Czz//fNOgOHjBhltR1G/6" +
"qb7mwtLP0VWB0TVOaaInkrFMXL16VfZ62x+wl4Y6+BpLu0QqGxQHr37DrSrq" +
"N/1MfbVLr1xY+jkszvYNZ65ZW3SNU+wVn4atLfuaylg2jh49KgWGNaEOaaiD" +
"ik6fPp0YEwevesOtMuo3/Zz4asmX77H0e3RRYHSNU6ywjHXZk9zsbyJj2fjw" +
"ww/7KS7eU5NfXr48uHb9eiX2MFSZa9euBdgYcP1aPRwPmdeBjp/Yuwn7AWVe" +
"L9omcPxIx7XBtze+nfoF2PmY7bBN/+23NyrXMM6besbFZXw8fvRIxnA/SN4g" +
"t2nDdWsDkrvcHwR5KTYAPszY5jsv0lAFC8uhQ4ccx1IYTAZbUeckOITjuaBA" +
"x0/snXdx+eXZL0kC5qPfwwr7uMBwDeO8qYfFxQ5rszOATZncE8wb5DZtYGHp" +
"o7jY77tz77M2VCENVVDB+vq641gKg8kFUdQ5CQ7heMjkAun4ib3zLC6PHj9i" +
"7uVjAYc98OitYZw39XjFxY7xJVkhk3uCeYPcpg0sLH0UlwsXLvZfXL788kvH" +
"sRQGkwuiqHMSHMLxkMkF0vETe+dVXOxHs/KxPMe9e/dlDeO8qaequIwPexcN" +
"94PkDXKbNrCw9FFcDF4a2S0S1gcPafDgs0S7d+8efPPN1eKnQ8pcHbaV+ebq" +
"NwlXizET2E95TYh11vdPqzfhqsmdUPbRFnyVPhn69ddfBw+HG8Eov5m+7G+5" +
"/aeffio2js1bFT/NTntMoC43CXPmKjD/o8PG2GbdnBfkJm2gTkNy0eSUQW7K" +
"+Kh/iN0CKe//pi+RkgYPnrXYz4bk4lKiprg0SbpFHnYf4uHDRwP7iQ5Znymw" +
"V0Zawfnll+W+v2R+23/qqtwkzBlu8qbrbIWtiHWD3KQN1NlXcbGfZGYNYI3w" +
"kAYPCj579syG8akRbYPFfsprQqyzvn9avQkVxcX++y/j8ddffxUFwL7+nSTr" +
"ht2b6zMjdupvepb1E7JHw6JalZuEOcNN3rS4jA8r6FFu0gbq7Ku4XLhwob/i" +
"cuXKVxvGp0a0DRb7Ka8Jsc76/mn1JjjFxZ7TWLbLBNsA9gNr48Rjosr6dIhd" +
"Qi3j2Yx9U9rLTcKcYezaFhc7isuk69cqc5M2UGdfxcWY5r6LNBB7zV1Z6N69" +
"ewf/+te/NriacHXYVmYyboOrgP1dMIWO0O7W468Onj5dno1kSWwPSKqd9dBP" +
"z9eon+vx7Y0bg6dLVGTsrKqRHwHTFBc7isuk4dr4OtP95YL4ih/hfqjfw2O7" +
"jhw5ktSBJvddpIHwrMV+OqSpYeJI6GgHTKEjtLvleHu36zIc44f3aF9T6Kfn" +
"a9Qv63HVNsTVwc1bt5bm96vv378f+xEwbXEZHw8fPhSZ3F8uiK/4wfgHOjh/" +
"HIv33nsvqQMGawWRBkKBZ86caWyYOBI62gFT6Ajtbjl+GTaNvdHOTmdpWxvo" +
"p+dr1C/rsVFcxtimWvRhRfjGt9/W+xEwa3Gxw2Ska+YUE4L4ynow/mJ7/R4e" +
"x8IeUGYtYK0g0kAo8PLly40NE0dCRztgCh2h3S3GL3qzbJ6tNPS9DvpJX70x" +
"7Jf1QHGxMXbJtuj7U1aMa/0I6KK42GFxmFzCOsWEIL6yHoy/2F6/h8uxsK+g" +
"lGtB9JS0NJTh/Za1vXsHV77+esKVK8DaJnwtXElIZA35+usrCuYQsQEyadOV" +
"r21Mish0xqTj6deIq8PFWeQmsV8LsJcKTeJnMa1GYxOvRzRG1kNIdY5tsUf8" +
"F/1rB/altImfwZrD719/fUZxMx0PHjyQWDH2XvyjXGa/zHcZrRHvu0RnL9JQ" +
"hoLeOnYsdS5KHCF1LAyUFwzKIFwAWaA44Own6tcIS4hFHbYxrw7/M3lJUYXG" +
"Jl6PaIysh5DqpE2PHz+ma70dpnviZ7Dm8Lvr4mLHs2e/FmcTVevjxT/KZfbL" +
"fJfR2rz77rvzKy7nPvwwdS5KHCF1LAyUFwzKIFwA2MRgewFnP1G/RizqrGWc" +
"hBK7jaSoQmMTr0c0RtZDSHXSpkUXmPHZS7jm8HsexcWO4tvE33/vro8X/yiX" +
"2S/zXUbrcvFiu+eMpKGuuNCxMHGE1DHKU6fS8R5ig9gINoJcF3D2E/Xr68EP" +
"d39gXvRy2BnLZKMidhtJUYXGJkXlaXyln+shpDppU2HX14srMOOzl3DN4fe8" +
"isv4KC6TEHsv/lEus1/mu0zWht93Yc2Yqrjs2LFj8NVXX7XkMmD//LFviD57" +
"9mzu/P3338yHuR9WWGzB6fNWwZ5ZWsRhN2e5vhF9nLWankWv9yuvvJIUl7fe" +
"qr6pKw1jbFJZiAmlopjFFxdbkK142Mfdi060Plj0Td5lO6yI2U/RME59wbpQ" +
"92U6aRjD9+WaUCqKycVlXoe9hIi+bkWsgPZxVrBqh52RM1Z9wOJisHaExYUC" +
"cnFZnuPevXvi51bG/lPnQ49FXCadO3eu++JiQqkoJheXrg97kxp9nBb77zdv" +
"7Bun1DsNJisfevR9mdTmCWlpqCouH310fvDll5cTLn/5ZYK9sDvB2krIePYP" +
"50R8edn0TLhc2DGBNm6l4mKJZF82s9gylqN4qv8JiF0fh/3aQaq3lB/Oerpj" +
"NuxfhscqlvWw4jvaR/VrLmA895sHawNrR+viQiMKQ5jckhRm/AQZz37HEcLg" +
"bKfiYl/rH8eWsdwOxcVk5aP6sFy3j/vr1lxAjnC/eaytrSW1oer1C9Jg8GdE" +
"TBiNKAxhcktSmPETZDz7HUcIg7Ndiov91y7HlrHcDsXFsMvCfFQfdnZbxLxi" +
"zQXkCPebx4EDB5P6YI8JsYZUFhfeEbaPoWlEYQiTW5LCjJ8g49nvOEIYnO1S" +
"XO7cuZPElrHcLsXFLgvzER+jy6Sq+JZAjnC/eRw92uwTI2kwOPHo0TcHX3zx" +
"hXIJRP0E4y9dUnTOpYBU5jK+/azt8eeffzp+emhM69ajj8NeDnXJ1nYD2iA2" +
"NsCeYM5HfFju201Yxq8e5pRy6tTJ7oqLCVMjvogThf0E41lYcnEZHfaKSPXT" +
"Q2Natx59HPMoLjeGMvPR7Hj+/HkRL8awGuaUcubMB90VFxOmRnwRJwr7Ccaz" +
"sOTiMkqOkS/000NjmoBY9nHMo7gY0e8E5SM97G17jKEPc8qHNYI1pHFxuXjx" +
"gmPEF3GisJ9gPAtLLi6j1x+OfKGfHhrTBMSyj2NexeWHHxbzoOgqH80uk5hT" +
"PqwRrCGNi4u94q4Rl8Dnl4AzJ4IyCceDVS8udgOTPlVxCUTx7+OwnxdJbLx0" +
"KYE2udi4MsM2+wAgH+2O+/fua2yDHKkawxrBGpKLy5IfdiOX/tSxnYqLkW/s" +
"Njvs0tq+xXvJyYEoR6rG7N+/PxeXVS4u9g4P+lPHdisud+/epbp84LB7U/b+" +
"GSss8ywu3hfppLDk4rI8x61bt8SfOrZbccnfeak/7AHXcVGZd3Hx3usihYXF" +
"5eWXXx5cuHhxcPHCBeViij3UVObiBZs3gf0mtzUig6Tjnz59ypivzGEPe27G" +
"F7GUtXDiaa8lrKOP49q1a7U5wRzy4JqXfbBT/nykR/Hx83c3iv0gsUSOcP8w" +
"Rzxs3L79+2YvLvuGFapIVCeZxXAmQS4uUx/2df8kvtyUXAsnnkwK0scx7+Ky" +
"qus7r8Mugy4P/ylNigViiRzh/mGOeExdXPjV/1xcFnPYqxaT+HJTci2ceDIp" +
"SB/HvIuLnfrnY3T8+OM92Q8SS+SIjtc8ITaOPzOSi8sKHY8fP0rjy03JtXDi" +
"yaQgfRzzLi72zNV2P0bfwv1uGBtb93Q/SCyRIzpe84R4xcV73WVcXPbtG3z2" +
"2Wcry6oWF3s5NX3pmj4Oe1kU9XaJyd/Oh53h2nd+GJd588YbbyR1wmAtCYuL" +
"CaHgVWJVi4t9A5W+dE0fRy4u8zvs/T6MR19MVVzsTCUXl8Uf9rAifemaPo5c" +
"XLo/xg8jMhZ9MlVx4YRcXBZz5OLSnO10LOoyiLz33ntdFJfDg08//WTwiccn" +
"5FOQ9pucMp98+mmKzP908KnNmwH72rNdYnTJs2f6o1hd869//SuN1Sf1sSyA" +
"71wvju/jsC+6JXYXazqBNo7yCnkg/SmM3Tywp4qZB2X++PMPut75YXoYG645" +
"kdjJnkM82V+Qyvh02Nbkd6O3fHGhzRYYxdoncE7oB/plfjGm3i/KiHSwv4Ay" +
"YQPH93H0UVyYR4wD/R6R5oDIJNBBnjyd3+s37TLo2+vXNS5OHhGJHW1v5Gcq" +
"Y+riYu/DzMUFmJwSMh79Mr8YU+8XZUQ62F9AmbCB4/s4cnGZ7bDLIHsVwihH" +
"EBcnj4jEjrY38jOVYfGa6p4LPy06ePBgsRhU4C6yOJ/2c4HFCZkfBy+CNjOp" +
"cnGZ75GLy/SHXQalOYK4OHlEJHa0vZGfqYzOiot9elQktwcNE+fTfi6wOCHz" +
"4+BF0GYmVS4u8z1ycWl/2GWQPfBJPyQuTh4RiR1tb+RnKqOz4rJ3797Bxx9/" +
"3IzzKec/TuH4qH8k8zyo10FUntJ6DvsbcR6wH0yjU/w6n8DxfRx2Y7qsM4x1" +
"QctYTUMU35b9T550U1zsMsieFhd9lSBWYQ4QyouxdTt0+LCchLCW5OLiyAjn" +
"sL8RLRd1Gp3iFxMrHd/HkYtL88PeTyN6QhCrMAcI5cXYurG4NHq2yMjFJZjD" +
"/ka0XNRpdIpfTKx0fB9HLi7xYZdB14aXQaKjEYhVmAOE8mJs3awuzFxc7IEk" +
"Cq9EHKtPpKh/JNMCVqZeB1F5Sus57G9Ey0WdRqf4xcRKx/dx5OJSf9hlkL0A" +
"qzoWEYhVmAOE8mLM1k6Ki2E/Qn/e4aOPPgqwMWXQfx7IeGdOS84D9nuEftJu" +
"Ij6cd8bMiqNDqJ/Tx2G/Xax2RER+dEDL9dCcSJmmuNgT3dRTa6MH5wipndwP" +
"ROeXdJV05uLyUcPgyZzAT9pNxIfzzphZcXQI9XP6OHJx0cMug+yxCOoQaKMH" +
"5wipndwPROeXdJV0srh88MEHubiw3yP0k3YT8eG8M2ZWHB1C/Zw+jlxc0sMe" +
"JbB3olC+C2304BwhtZP7gej8kq6Szj179iQ1gjUkF5cKQj9pNxEfzjtjZsXR" +
"IdTP6ePIxWVyhJdBhDZ6cI6Q2sn9QHR+SVdJJ2sEa0jj4rK+vj449+GHwofk" +
"3LkU9oNzH54Djo5zQGRExDrIhx+a7SXgVySTNo6ATPa31kF5HK92kz4OKy7i" +
"a4lz5msAc0BiEfU7iA4nnklsOR46635DaXwZxPU5Z7aWoExCvwpoF20PZDAn" +
"KK9KJmsEa0jj4nLy5Ekxyl00GCr9QIIN+SPngciIiHUQDSYWIJBJG0dwkdDf" +
"WgflcbzaTfo4tntxscsgezVnoZNrZLaWoExCvwpoF20PZDAnKM+TeebMme6K" +
"i33Vl0a5iwZDpR9IsCF/5DwQGRGxDsJg0q9IJm0cwUVCf2sdlMfxajfp49jO" +
"xcUugxKdXCOztQRlEvpVQLtoeyCDOUF5nkw72WCNYA1pXFzsSWka5S4aDJV+" +
"IMGG/JHzQGRExDoIg0m/Ipm0cQQXCf2tdVAex6vdpI9jOxaX8WWQ6OQama0l" +
"KJPQrwLaRdsDGcwJyvNkNnmuqLK48BGAtbW1wdmzZ0POAfZnlos+jsuXL4ve" +
"ebOIPBwXF7sMsgf72L+V4GtZWhUX+8y6PHHXrl2iwGMRi5qZnj6O7VRc7NWk" +
"bN+K2MlGuT54X6CrLC4GKxMVeCxiUTPT08exXYrLVj9bKbN79+6kNng/Qt+q" +
"uLzzzjuihCxiUTPT08exXYrLdoK1gbWjdXGxU58zw8ulMh98cKaeMyn2EVYZ" +
"u/xKOKOcAZQZyoBNtMG1QwhkWFsJna9+yJzQb/SbTMAxYgN09nHYm+rbxKFR" +
"LOAX10dyxEFiF5LqUJsV2s28oY6w30F0il02pjm0gfl96uSp7ouLve5SHEPA" +
"BToOGDw6OnI2hTJDGbCJNrh2CIEMayuh89UPmRP6jX6TCThGbIDOPo5cXMpY" +
"2wTqCPsdRKfYZWOaQxuY3ydOnJi9uPDH0V599VV1DAEX6Dhg8OjoyNkUygxl" +
"wCba4NohBDKsrYTOVz9kTug3+k0m4BixATr7OHJxKWNtE6gj7HcQnWKXjWkO" +
"bWB+20nGzMVFPo5++WV1DAEX6Dhg8OjoyNkUygxlwCba4NohBDKsrYTOVz9k" +
"Tug3+k0m4BixATr7OHJxKWNtE6gj7HcQnWKXjWkObWB+20lGuS54r7cMi4vB" +
"CvX+++/Xs56y/n6Kjl9PWH9fkTkEOgWMp00ju0xPGc6L+qnD8SOwS0BspF9s" +
"csYEOvs4Ln3xBWIdw/VZX08Rv8VPxsVD9daTzqeNOt5B7GzZ74E5knccT0Qn" +
"45T6+vLwJKNcE6o+hm5dXOwnHMW4GkPDBcjFpZpcXCasp4jf4ifj4qF660nn" +
"00Yd7yB2tuz3wBzJO44nopNxSn194YUXkprAmjF1cTl69KgaV2NouAC5uFST" +
"i8uE9RTxW/xkXDxUbz3pfNqo4x3Ezpb9HpgjecfxRHQyThNfT73zTlIPOi0u" +
"Bw4cUONqDA0XIBeXanJxmbCeIn6Ln4yLh+qtJ51PG3W8g9jZst8DcyTvOJ6I" +
"TsZp4uvrhw51V1z4DMFLL72kxtUYGi5ALi7V5OIyYT1F/BY/GRcP1VtPOp82" +
"6ngHsbNlvwfmSN5xPBGdjNPE1734BNle3s+a0bi4GKxUp0+fLu69eKy/tw6s" +
"bcJ7w02S4MgQ1sF7Nq8E+qmTiHxPh9DSbpnvEMyh3evWVkLme8BuyuzjsB/4" +
"KtvEHBGbO4Cxos556GVsp16zGiivmUzsF8oE7C8wPUN4v6Xqa/9TF5fDhw+r" +
"8k1DuYgwvO0mLeYABgv91ElEvqdDaGm3zHcI5tDu9kllclK7KbOPIxeXCZzT" +
"FsprJhP7hTIB+wuGek683fzLc1MXl1deeUWVbxrKRYThbTdpMQcwWOinTiLy" +
"PR1CS7tlvkMwh3a3TyqTk9pNmX0cubhM4Jy2UF4zmdgvlAnYXzDUw1sknRQX" +
"fpnOXr8gyjcN5SLC8LabtJgDGCz0UycR+Z4OoaXdMt8hmEO72yeVyUntpsw+" +
"jlxcJnBOWyivmUzsF8oE7C8Y6tm7N/0pkeh+S6PiYrBi2Wvu3n333cHp0ynW" +
"VuZ0wLunTyecfrcJkBHoZP+7ZiehDPglMjE/snFEOoYyGAvapNiYANGR0sfx" +
"+cXPRW8CbXbsZiwZK/YTyitk2rwSlCnjRSbGWxtgHomfMift1/kNaGBXHczT" +
"IleH7W3vtxjS4MHiYvddCkMC57kghIGgUz6QEehkP5OmgDLgl8jE/MjGEekY" +
"ymAsaJOSJqKL6Ejp48jFZYL4KXPSfp3fgAZ21cE8NY4fP57sf4M1wkMaPCh4" +
"//79I0MC57kghIGgUz6QEehkP5OmgDLgl8jE/MjGEekYymAsaJOSJqKL6Ejp" +
"48jFZYL4KXPSfp3fgAZ21cE8Ndo8rFhGGjx432Xnzp0jQwLnuSCEgaBTPpAR" +
"6GQ/k6aAMuCXyMT8yMYR6RjKYCxok5ImoovoSOnjyMVlgvgpc9J+nd+ABnbV" +
"wTw1+OuKdQ8rlpGGKli57L0O9na6ek4D9hOObzInMy19HPabPYne08Cxqw9O" +
"A/b3wUJsmCL+3Pv2hDbrg4c0VEEF9igAjVDaFgqObzInMy19HLm4VLMQG1rG" +
"v+nPiHhIQxX20VNZgf1NQ5S2hYLjm8zJTEsfRy4u1SzEhpbx50vj5lJc7FSI" +
"SuJLo7aFguObzMlMSx9HLi7VLMSGFvG3r5zwI2j7Mh1rQxXSUAeLi31b99Sp" +
"kyVOJZwEp4bGJiRzTw7HKPZC4DKUedLaylCn2OTpINA5bEugDYTjHWgXbaBM" +
"9rsgnlF/H8dnn13A+iD2jEOj+JXk2RrBL8aO40dzoBN2cTz7Q52FXIwRP+oR" +
"G50xYieh3eZ7grVNKI89+Pp0nxKNkYY6eIq0c+dOBJALhmDDEQm+A4NBmRpM" +
"6BSbPB0EOrmgtIFwvAPtog2UyX4XxDPq7+PIxaU0RvyoR2x0xoidhHab7wnW" +
"NqE89uW19K1zcy0uBpUdOXKkFEAuGIINRyT4DgwGZWowoVNs8nQQ6OSC0gbC" +
"8Q60izZQJvtdEM+ov48jF5fSGPGjHrHRGSN2EtptvidY24TxuGPHj0lhMRtY" +
"D+qQhggqtLOZSQC5YAg2HJHgOzAYlKnBhE6xydNBoJMLShsIxzvQLtpAmex3" +
"QTyj/j6OXFxKY8SPesRGZ4zYSWi3+Z5gbRPG41478JoUF9aCCGmI4NORdsPn" +
"7bffbsgJwP5p6EDmCcD+1tCmKeyCTfbIexkZ71JvQx/Hp59+4thRbZPLjOtz" +
"wuIHRCaQ8Y7cFPpl62TrNoH9KmN58D4dZi2IkIYmlJUa9vVgGuczj+B2IJPJ" +
"xf7W0KYp7IJNubiUYH8AC0UuLvW8+eabctbS9ItzZaShCVRsPzdAA33mEdwO" +
"ZCKxpL81tGkKu2BTLi4l2B/AQlEUiwAZ78hNoV+rW1zs2UHucdaAJkhDE+z6" +
"j8rt+SMaqcwjuB3IRGJJf2to0xR2waZcXEqwP4CFoigWATLekZtCv1a3uNin" +
"wOW93fRZIiINTWFxefWVVwb2pboyx08cTzmecgLI+CEnQCgj6D9x/IRwPKLw" +
"pQT7qbOB3YR2sl90OrGSMYGMGzduzJ319XXHjmqbfLvrkdjJeumctjpVB3Dm" +
"xDrSfs3LdDxt8OyQ/kAG+2f9bksZaWgKb/js3LEjF5exzgZ2E9rJftHpxErG" +
"BDKocxoimWoDoc2e3fWITlkvndNWp+oAzpxYR9qveZmOpw2eHdIfyGD/2t61" +
"xRcX73EA+yQpFxe12bOb0E72i04nVjImkEGd0xDJVBsIbfbsrkd0ynrpnLY6" +
"VQdw5sQ60n7Ny3Q8bfDskP5ARrnPu5Fb93OtEdLQBhqye/fuXFxMRwO7Ce1k" +
"v+h0YiVjAhnUOQ2RTLWB0GbP7npEp6yXzmmrU3UAZ06sI+3XvEzH0wbPDukP" +
"ZJT71ta6O2sxpKENfImUYa/AzMVF4RhCO9kvOp1YyZhABnVOQyRTbSC02bO7" +
"HtEp66Vz2upUHcCZE+tI+zUv0/G0wbND+gMZ43bvrGXaG7ljpKEtNMh+lfHY" +
"sOgYbx07lnCMbIzb5JiHMy+RAdjfBLEj7Y/8eOuY+VoP/bLCXEb7jyWoToUy" +
"GBsdH8tsS6Qz8tuDMuJ++IVYevGMoA5Cv33fQWF7NeIn53sypB8g/uP2rs9a" +
"DGloi3f2cuj114tNSse4YLqpPZx5iQzA/iaIHWl/5IcssAP94iJrfylBHL9o" +
"08guyEFsdHwssy2RzshvD8qI++EXYunFM4I6CP32fQeF7dWIn5zvyZB+gPhb" +
"25E5nLUY0jANNGx89kLHuGC6qT2ceYkMwP4miB1pf+SHLLAD/eIia3+aJKpT" +
"oQzGRsfHMtsS6Yz89qCMuB9+IZZePCOog9Bv33dQ2F6N+Mn5ngzpB4i/tfFt" +
"B12ctRjSMA1mJI2zsxc6xgXTTe3hzEtkAPY3QexI+yM/ZIEd6BcXWfvTJFGd" +
"CmUwNjo+ltmWSGfktwdlxP3wC7H04hlBHYR++76DwvZqxE/O92RIP0D8jw75" +
"5z//mezdaZ4j8pCGaWFxsUcCjr51NOXoFGwEYBP2t4XymsgM/TAZJTi+mIMx" +
"IqMHxKaW/QV9+NGxDvpV6dvq8RZgfxTLvfvSX1Ls6qzFkIZp8U6t3jjyxuwL" +
"2rYQRFBeE5lhYmIBOb6YgzEiowfEppb9BX340bEO+lXp2+oxS3GxT4jmddZi" +
"SMMssLjYm6xmXtC2hSCC8prIDBMTC8jxxRyMERk9IDa17C/ow4+OddCvSt9W" +
"j1mKC3//ucuzFkMaZiE8exHHG9C2EERQXhOZYWJiATm+mIMxIqMHxKaW/QV9" +
"+NGxDvpV6dvqMW1xmfdZiyENs8LiYt/affPIkRFDh8rYKzLLbI4rceSIjSvx" +
"5pFaOP9NawtJ7RIZR6ytTNpPP2jTyK5Uhn38l0A/AW0UnWZLSz9og853oB2U" +
"EeiM5jeRoX4H0IaCVIesF5B+sUkRX2G3yOR49ktcHDtoK3SO5+2dw/daiDTM" +
"inf28tqrr46cYvAqHE8WnYvG4EULYG0hSATKwAKyn37QppFdTAJAPwFtFJ1m" +
"S0s/aIPOd6AdlBHojOY3kaF+B9CGglSHrBeQfrFJEV9ht8jkePZLXBw7aCt0" +
"2pzDhw7JHl2J4mLQ6B07dgyOvPGGBs9xnHDBJHjRAlhbCBKBMrCA7KcftGlk" +
"F5MA0E9AG0Wn2dLSD9qg8x1oB2UEOqP5TWSo3wG0oSDVIesFpF9sUsRX2C0y" +
"OZ79EhfHDtoKnTaHbzSYR2ExpKELvO+92GmYBM9xnHDBJHjRAlhbCBKBMrCA" +
"7KcftGlkF5MA0E9AG0Wn2dLSD9qg8x1oB2UEOqP5TWSo3wG0oSDVIesFpF9s" +
"UsRX2C0yOZ79EhfHDtoKnXYVwb3ZxbdxPaShK+iA8frrBwdvvHG4xBsNKI9v" +
"OqdrAhsOH05hv8dhwH5wGLC/C+ahYxqZ7ecE6+PQWkfL9ZoK6KCNh60NiIwa" +
"7KFi3sQ1uHe7Qhq6hE7Y6VjbJJgmcbonsCEXl0qmkdl+TrA+Dq11tFyvqYAO" +
"2sjC0ra4eA8n2lUG921XSEOXeDd37Sdg2yTBNInTPYENubhUMo3M9nOC9XFo" +
"raPlek0FdNBGFpY2xcV+oYN70eCe7RJp6Bo6Yzd3Dx8+NGiaBNMkTvcENuTi" +
"Usk0MtvPCdbHobWOlus1FdBBG1lY2hSXvm7ilpGGrvFu7tpzR4cOHSqKTIK1" +
"gUOHDqcMxyUUY8pgPPpFpyNDbQCHzY4S7PeQOfV+HR62JQQ2e4R+cDxj00gG" +
"/UgRmUVbGfbrGNUJGFuLTxna6MQ7QtejgY2UE9igcQC0gfIq8K4g5nUTt4w0" +
"zAM6Zrz22mtO8BQGigsiC8rx6Bedjgy1ATCZ2e8hc+r9YhJFNnuEfnA8Y9NI" +
"Bv1IEZnYlNqvY1QnYGwtPmVooxPvCF2PBjZSTmCDxgHQBspzeP31Q73exC0j" +
"DfOCzu3atcsJnsJgcUFkQTke/aLTkaE2ACYz+z1kTr1fTKLIZo/QD45nbBrJ" +
"oB8pIhObUvt1jOoEjK3FpwxtdOIdoevRwEbKCWzQOADaQHkOdpXAvWe/O8b9" +
"OQ+kYV54p2bmeBo8hcHigsiCcjz6ZcEcGWoDYDKz30Pm1PvFJIps9gj94HjG" +
"ppEM+pEiMrEptV/HqE7A2Fp8ytBGJ94Ruh4NbKScwAaNA6ANlAf2739F9lzX" +
"zw/VIQ3zhI4a9umR/SSJcfCgg7WXeP0g2Ji7KSMa7xHJYH/ZPoPjDx5UKCPA" +
"vhOUAjvog+MHsR+8KsP+RvJkDOyU/hSxgeM9mYLKrbWxCZRBwvG0sYGdQjqf" +
"OeHBOWNZBw4cWNjl0BhpmCfebx1ZAOxjMguIbFqDwQwWORzvEclgf9k+g+NZ" +
"WHJx2URs4HhPpqBya21sAmWQcDxtbGCnkM5nTnhwzlgWf5LVsHbuyXkiDfPG" +
"HKTTdv/F2mXTGgxmsMjheI9IBvvL9hkcz8KSi8smYgPHezIFlVtrYxMog4Tj" +
"aWMDO4V0PnPCg3NMzp49e2SP9Xk5NEYa+sD7zN0CIpvWYDCDRQ7He0Qy2F+2" +
"z+B4FpZcXDYRGzjekymo3Fobm0AZJBxPGxvYKaTzmRMenOPd2zS4B/tAGvqC" +
"zht2AyreuCBZnAbjPSIZ7C/bZ3A8C0suLpuIDRzvyRRUbq2NTaAMEo6njQ3s" +
"FNL5zAmP8vgDB15b+H2WMtLQF/ZxGINggbHvv9jNqE0OgnKfR9vxQw6CAwds" +
"oUpApo7vgIOmpwT7lwXGYmhrGRkfglgXcEw7ZrfJoE0E45l3HpzTAeU8tG+/" +
"c09Z0eLe6wtp6BPvFM7uvyQBbLtAbccf8IoFEgkydXwH5OJSgmPaMbtNBm0i" +
"GM+88+CcDhjn4J7du2UvLeI+Sxlp6BsGxLBXY24GsO0CtR1/wCsWSCTI1PEd" +
"kItLCY5px+w2GbSJYDzzzoNzOsDyb5/zom2De61vpGERMCiGndUUAWy7QG3H" +
"H/CKBRIJMnV8B+TiUoJj2jG7TQZtIhjPvPPgnA6wlz8t032WMtKwCKruv+zf" +
"t3/w6jB4Ka+lvJZiwU6xtgkcX0CZQmoDZb722qsJIt+BMqQfMnW86UnhGCI6" +
"ECvx27MbiA0gnq/EY+h34IcHdZbiVEAbghwQ+Z4MAWsoOgh0vvLq0t1nKSMN" +
"i8K7/2IFxr7Bm4uL6pTEdMYQ0YFYid+e3UBsAPF8JR5DvwM/PKizFKcC2hDk" +
"gMj3ZAhYQ9FBSvoqCsui77OUkYZF4n3/xQKYFhgsoiRJ9YJ4G6yAMgUueioz" +
"2lAelCH9kKnjkZjOGCI6ECvx27MbiA0gnq/EY+h34IcHdZbiVEAbghwQ+Z4M" +
"AWsoOshEn33wwb1icE8tEmlYNAyWFhgsoiRJ9YJ4G6yAMgUueioz2lAelCH9" +
"kKnjkZjOGCI6ECvx27MbiA0gnq/EY+h34IcHdZbiVEAbghwQ+Z4MAWsoOshI" +
"10svviR7ZNkKiyENywCDZliltgIzD/YD9kfMOr8rGW3ZLjpd9gP2LyNDO1/c" +
"pWf3hj23x320aKRhWWDwDLtskoB3wKwJP+v8rmS0ZbvodFnB4rJntz4ztKyF" +
"xZCGZcF7gnpeBWbWhJ91flcy2rJddLqsWHHxHkY0+nrx0zRIwzJRVWAs0Az+" +
"LMya8LPO70pGW7aLTpcVKi7e2+SMZfnIuQppWDa8F3wb9i3effv2D/bv35dg" +
"H2mX2Q/Y3wmmtwz795nu/QnxnP0p+1MobyST1OvQ2ECn2KRE8Y+gDyPUtjZr" +
"KPJgY0Eok/Hfl0B5On8aVKf91tA//vEPyf9lLyyGNCwjFkgGd1xgokWOk6gD" +
"kHjSv890sxBEc5hoKZQ3kknqdWhsoFNsUqL4R9CHEWpbmzUUebCxIJTJ+O9L" +
"oDydPw2pzqrCskzfZalDGpaVpgWGCxYnUQcg8aR/n+lmIYjmMLlTKG8kk9Tr" +
"0NhAp9ikzLrJ6MMIta3NGoo82LgKxcXyepULiyENy4z3JTvDPqauWuQ4iToA" +
"iSf9+0w3C0E0h8mdQnkjmaReh8YGOsUmZdZNRh9GqG1t1lDkwcZlLy5WWJjj" +
"q1ZYDGlYdioLzM5dg71re4esJazt3ZswGgP2rtVCGWtF24S9JrcM5a95c0gq" +
"gzqj8T6cAxArnd+EVOaa+Vpmb4P4E9FB6Av72yN2dgBj0STeVfm9aoXFkIZV" +
"oOoSaeeOnbKAkjRM5CKZmawplKGFAklC+ZZcMoekMqgzGu/DOaBBssekMrmh" +
"xA8nNoLoIPSF/e0ROzuAsYjiXfWV/lUsLIY0rApVBeaFF15IFlCSholcJDOT" +
"NYUytFAgsSjfkkvmkFQGdUbjfTgHBMnejFQmN5T44cRGEB2EvrC/PWJnBzAW" +
"dfGuKix2ucTcXxWkYZWo+pi6XGAkaZjIRTIzWbFhIEMLBRKL8i25ZA5JZVBn" +
"NN6Hc0BNsjcnlckNJX44sRFEB6Ev7G+P2NkBjEVVvL2nm41V+Li5DmlYNaq+" +
"aGd32u3r0vYFpIg1wP6XX14D6F8D7J8DtNm3G9BOwvHi91o4Z20thf3dQLvY" +
"356ZY8n+gno7TY/9I2TuboXCYkjDKlJXYOzOOxeVxIlVnyTNEq1baLNvN6Cd" +
"hOPF77VwTi4uZarttLysKizL+qxQW6RhleEijbHrWV34CXFiVSdJQaNE6xba" +
"7NsNaCfhePF7LZyTi0sZ3067Qet9h2UrFRZDGlYdLtYY+y+hiz8iTiw/STZp" +
"lGjdQpt9uwHtJBwvfq+Fc3JxKaN2ej+zOoa5vOpIw1ag6rsCVZdJcWJpkiQ0" +
"SrRuoc2+3YB2Eo4Xv9fCObm4lJnYuHv3nsrLoK1YWAxp2CrYR3hcwDH232P3" +
"nt2b7AG79+wBk7H+eML5e4rflSljyVaHPfmdYG1lPDtEjrVN4HiVGej0wBzq" +
"FBirxN6x77QVehBLHU8cO2EHZdLuyG/pL/lhl+VVl0Gr+h2WJkjDVsL7VYEx" +
"9l+kulhY8pVBIsp4wvmWbExe3VTpBguS17ND5GCDcI7IDHR6YA51CoxVYu/Y" +
"d9oKPYiljieOnbCDMml35Lf0b/hR9TGzsRU+EapDGrYiXNQx9t/kxZdelGRk" +
"YZBElPGE8y3ZmLy6qdINFiSvZ4fIwQbhHJEZ6PTAHOoUGKvE3rHvtBV6EEsd" +
"Txw7YQdl0u7Ib/a/9NJL7u8JjWGObkWkYasSXSaVk5GFQRIRsF/n64bghiJR" +
"8tKGwg6Rgw3COSIz0OmBOdQpMFaJvWPfaSv0IJY6njh2wg7KpN2R3+W+7XoZ" +
"RKRhKxNdJtnC23+c5cRsK8P+zEJ58aUif+pu2m71yyAiDduBqk+TDLtGlsRZ" +
"CnJxWWYsb6rOVgzm4HZAGrYLVQ8+GnatbKe2TKDFkovLMmJ5UndvZTtdBhFp" +
"2E5UPTYwZrkulXJxWTbqPgky7MFa5tx2Qhq2I3U3e8dFxv5DjXmRDAtQmV0v" +
"7lJK831eBGm/6JDxOifqpx/s31X4kvLii2bLBPEzGh/YUNhBmbSLMgIduyQO" +
"ZluqQ2SI75Ox0SXQdj5bKSMN2xkmSRlLJkuqIpnJxobPxUXnyPjAhmUuLjt3" +
"7ay9BDK20rNBsyIN252qd8SMseTiZpCNj8RtskE2k76qEFCHjNc5UT/9YL9u" +
"MKdYCMH4wIZlLS4v7Kj+FMjYbp8ENUEaMiOaXCrl4mJjSDA+sGHZioutc74E" +
"mg5pyKQwmYidydjlkn0RbxP7G+zYsTPB3vdbx46dKZSX6KvExpVhf4Bjl4wJ" +
"UL+b+DGj3R0QXf4Y+RKoHmnIKNGlkhQZbqBcXFamuDQpKqv8Xts+kYZMNdGl" +
"0maRGZ5KcxPpJqsnF5cZ7G6J/VNoUlTyJVA7pCETM02R0U1WTy4uM9jdkFxU" +
"5os0ZJrTpMjYzcDRJdMLCXajMMHayrC/A3a8sCPhhR3A2hJiGVZAy3B8BOc3" +
"koFYMbYqL/Xrn/+sv0k7Jl/+zIY0ZNrT5J6M8c9//mOY3KNCE20Y6e8AFobt" +
"VFysoDQ5SzFyUekGachMT9MiMz6bqdswsqE6gIVhOxQXi3OTsxQjF5VukYbM" +
"7DQtMsZmocnFpbmMoLi80KKgGNv9GaB5IQ2Z7rDvQdjNQCZzFUWh2eAftkHK" +
"/CPFChKRMUD6KYPjaUOB2TaBcyjTfKoF8gqZJNIxpkVBMfL3VOaLNGTmQ92L" +
"qjwmm2+8cYLC4I0B0k8ZHF/euJugEFCP2OQUlI6Ky1gGY1dHPkvpD2nIzJ+6" +
"d8lUMdmQFYWh2GwoHkD6KYPji2JCUAioR2xyCsqUxWWaYmLkeymLQRoy/dLk" +
"42yP8UbbysVl2mJi2OVovuxZLNKQWQxt7894pBvXKRaAhUDGS2GZU3FBG/1q" +
"w6lTp3JBWRKkIbMctPnEaTuT76EsL9KQWU5ysRmR35uyOkhDZjWY5qbwKpKL" +
"yeoiDZnVxc5upr1BvGjsflO+xNlaSENm62E3i5flssrsyDddtwfSkMlYASjD" +
"SzA7O+IYyshkpCGTyWS6QBoymUymC6Qhk8lkukAaMplMpgv+PxEoEFbef8ra" +
"AAAAAElFTkSuQmCC")
# Original file: KC.py
"""
This module defines the constants for the Karel package.
"""
class KC:
NORTH = 0
EAST = 1
SOUTH = 2
WEST = 3
DIRECTIONS = [ "NORTH", "EAST", "SOUTH", "WEST" ]
INFINITE = math.inf
PLUS1 = -1
MINUS1 = -2
BLANKB = -3
SIMPLE = 0
FANCY = 1
CWINDOW_WIDTH = 650
GWINDOW_WIDTH = 550
GWINDOW_HEIGHT = 675
WORLD_X = 10
WORLD_Y = 10
WORLD_WIDTH = 500
WORLD_HEIGHT = 500
ERROR_DIALOG_WIDTH = 500
ERROR_DIALOG_HEIGHT = 150
ERROR_DIALOG_COLOR = "#FFFFCC"
ERROR_MESSAGE_FONT = "18px 'Helvetica Neue','Sans-Serif'"
ERROR_MESSAGE_DX = 6
ERROR_MESSAGE_DY = 6
ERROR_BUG_SF = 0.25
ERROR_BUG_X_FRACTION = 0.05
ERROR_BUTTON_SF = 0.45
ERROR_BUTTON_Y_FRACTION = 0.7
FRAME_VIEW_X = WORLD_X + WORLD_WIDTH + 20
FRAME_VIEW_Y = WORLD_Y
FRAME_VIEW_WIDTH = 650
FRAME_VIEW_HEIGHT = 650
FRAME_WIDTH = 600
FRAME_HEIGHT = 400
CONTROL_X = 32
CONTROL_Y = WORLD_Y + WORLD_HEIGHT + 10
CONTROL_SEP = 61
SCREEN_WIDTH_MARGIN = 20
SCREEN_HEIGHT_MARGIN = 60
WORLD_EDITOR_X = WORLD_X
WORLD_EDITOR_Y = CONTROL_Y
WORLD_EDITOR_WIDTH = WORLD_WIDTH
WORLD_EDITOR_HEIGHT = 80
LEFT_MARGIN = 10
RIGHT_MARGIN = 10
TOP_MARGIN = 10
BOTTOM_MARGIN = 10
COMPONENT_SEP = 10
LEFT_NUMBER_MARGIN = 16
BOTTOM_NUMBER_MARGIN = 15
DOUBLE_WALL_THRESHOLD = 24
CROSS_THRESHOLD = 11
NUMBER_THRESHOLD = 15
NUMBER_FONT = "10px 'Times New Roman','Serif'"
RESIZE_BG_DX = -2
RESIZE_BG_DY = -10
RESIZE_BG_DW = 4
RESIZE_BG_HEIGHT = 12
RESIZE_DY = 3
RESIZE_BG = "#FFCCFF"
RESIZE_FONT = "12px 'Times New Roman','Serif'"
TICK_FRACTION = 0.20
WALL_FRACTION = 0.30
WALL_TOLERANCE = 0.15
MAX_WIDTH = 50
MAX_HEIGHT = 50
TOKEN_TRACE = False
MAX_TRACE_SPEED = 80
BEEPER_FILL_COLOR = "#CCCCCC"
APPLICATION_BACKGROUND = "#CCFFFF"
MARKED_COLOR = "#666666"
INFINITY_SYMBOL = "\u221E"
MULTIPLY = "\u2A09"
BEEPER_FONT_FAMILY = "'Times New Roman','Serif'"
BEEPER_BORDER = 1
MIN_FANCY = 20
MIN_BEEPER = 4
MIN_LABEL = 15
KAREL_FRACTION = 0.50
KAREL_LABEL_DELTA = 0.15
BEEPER_FRACTION = 0.70
SIMPLE_FRACTION = 0.70
BEEPER_LABEL_FRACTION = 0.5
BEEPER_LABEL_DX_FRACTION = 0.05
BEEPER_LABEL_DY_FRACTION = 0.35
BEEPER_LABEL_MAX_SIZE = 20
BEEPER_LABEL_MIN_SIZE = 6
KAREL_INSET = 7
BODY_OFFSET_X = -0.20
BODY_OFFSET_Y = -0.33
BODY_WIDTH = 0.60
BODY_HEIGHT = 0.80
UPPER_NOTCH = 0.15
LOWER_NOTCH = 0.10
SCREEN_OFFSET_X = -0.07
SCREEN_OFFSET_Y = -0.05
SCREEN_WIDTH = 0.30
SCREEN_HEIGHT = 0.40
SLOT_WIDTH = 0.15
FOOT_WIDTH = 0.08
FOOT_LENGTH = 0.20
UPPER_ANKLE = 0.08
LOWER_ANKLE = 0.08
SELECTED_BORDER_COLOR = "Blue"
SELECTED_BORDER_WIDTH = 2
WALL_TOOL_SIZE = 32
KAREL_TOOL_SIZE = 32
BEEPER_TOOL_SIZE = 32
EXIT_TOOL_SIZE = 32
TOOL_SEP = 6
TOOL_Y_DELTA = 8
TOOL_MARGIN = 20
TOOL_X = 8
TOOL_Y = 3
LABEL_SEP = 5
WALL_TOOL_LENGTH = 16
WALL_LINEWIDTH = 4
DISK_SIZE_FRACTION = 0.7
DISK_CORNER_FRACTION = 0.15
DISK_MASK_X_FRACTION = -0.02
DISK_MASK_Y_FRACTION = -0.08
DISK_MASK_WIDTH_FRACTION = 0.35
DISK_MASK_HEIGHT_FRACTION = 0.2
CROSS_SIZE = 10
WALL_CROSS_SIZE = 12
CROSS_LINEWIDTH = 1.5
EXIT_CHECK_FRACTION = 0.65
CHECK_LINEWIDTH = 3
ARC_DX = -0.05 * KAREL_TOOL_SIZE
ARC_DY = 0.13 * KAREL_TOOL_SIZE
ARC_RADIUS = 0.28 * KAREL_TOOL_SIZE
ARC_ARROW_SIZE = 0.18 * KAREL_TOOL_SIZE
RESIZE_TOOL_SIZE = 46
RESIZE_DY = 4
COLORS = [
None,
"Black",
"DarkGray",
"Gray",
"LightGray",
"White",
"Red",
"Pink",
"Orange",
"Yellow",
"Green",
"Cyan",
"Blue",
"Magenta"
]
# Original file: KarelCodeWindow.py
"""
This file creates a continuous code viewer for Karel.
"""
class KarelCodeWindow(CodeWindow):
"""
This class extends the Karel application window to implement the
tracing features.
"""
def __init__(self, gw, width):
"""Creates a new KarelCodeWindow object."""
CodeWindow.__init__(self, gw, width)
for keyword in KarelCodeWindow.KAREL_KEYWORDS:
self.add_keyword(keyword)
# Constants
KAREL_KEYWORDS = { "def", "if", "else", "while", "for", "in", "range" }
# Original file: KarelWorld.py
"""
This file defines all the classes in the Karel system outside of the
graphics library.
"""
# Functions: Directions
def left_from(dir):
return (dir + 3) % 4
def right_from(dir):
return (dir + 1) % 4
def opposite(dir):
return (dir + 2) % 4
def adjacent_point(pt, dir):
x,y = pt
if dir == KC.NORTH:
return (x, y + 1)
elif dir == KC.EAST:
return (x + 1, y)
elif dir == KC.SOUTH:
return (x, y - 1)
elif dir == KC.WEST:
return (x - 1, y)
else:
raise KarelException("Illegal direction")
# Class: KarelWorld
class KarelWorld(GCompound):
def __init__(self, width, height):
GCompound.__init__(self)
self._world_width = width
self._world_height = height
self.resize(10, 10)
self._kpoly = None
self._klabel = None
self.init_karel()
self._number_squares_flag = True
self._display_one_flag = False
self._monitor = None
self.set_speed(0.50)
def move(self):
"""
Moves Karel forward one square. If Karel is blocked by a wall,
executing this method raises a KarelException.
"""
if self.check_wall(self._kx, self._ky, self._dir):
raise KarelException("Karel is blocked")
x,y = adjacent_point((self._kx, self._ky), self._dir)
self.set_karel_location(x, y)
self._kpoly.rotate(0)
def turn_left(self):
"""Turns Karel left 90 degrees."""
self.set_karel_direction(left_from(self._dir))
self.trace()
def turn_right(self):
"""Turns Karel right 90 degrees."""
self.set_karel_direction(right_from(self._dir))
self.trace()
def turn_around(self):
"""Turns Karel around 180 degrees."""
self.set_karel_direction(opposite(self._dir))
self.trace()
def pick_beeper(self):
"""
Picks up a beeper from the current square and places it in
Karel's beeper bag. If there are no beepers on the current
square, this method raises a KarelException.
"""
nb = self.get_beepers_on_corner(self._kx, self._ky)
if nb < 1:
raise KarelException("No beepers on this corner")
cb = KarelWorld.adjust_beepers(nb, -1)
self.set_beepers_on_corner(self._kx, self._ky, cb)
nb = KarelWorld.adjust_beepers(self.get_beepers_in_bag(), +1)
self.set_beepers_in_bag(nb)
self.trace()
def put_beeper(self):
"""
Takes a beeper from Karel's beeper bag and puts it on the current
square. If there are no beepers in the beeper bag, this method
raises a KarelException.
"""
nb = self.get_beepers_in_bag()
if nb < 1:
raise KarelException("No beepers in bag")
cb = self.get_beepers_on_corner(self._kx, self._ky)
cb = KarelWorld.adjust_beepers(cb, +1)
self.set_beepers_on_corner(self._kx, self._ky, cb)
self.set_beepers_in_bag(KarelWorld.adjust_beepers(nb, -1))
self.trace()
def front_is_clear(self):
"""Returns True if Karel is not facing a wall."""
return not self.check_wall(self._kx, self._ky, self._dir)
def front_is_blocked(self):
"""Returns True if Karel is facing a wall."""
return self.check_wall(self._kx, self._ky, self._dir)
def left_is_clear(self):
"""Returns True if Karel has an opening to its left."""
return not self.check_wall(self._kx, self._ky,
left_from(self._dir))
def left_is_blocked(self):
"""Returns True if Karel has a wall to its left."""
return self.check_wall(self._kx, self._ky,
left_from(self._dir))
def right_is_clear(self):
"""Returns True if Karel has an opening to its right."""
return not self.check_wall(self._kx, self._ky,
right_from(self._dir))
def right_is_blocked(self):
"""Returns True if Karel has a wall to its right."""
return self.check_wall(self._kx, self._ky,
right_from(self._dir))
def beepers_present(self):
"""Returns True if there are any beepers on the square."""
return self.get_beepers_on_corner(self._kx, self._ky) > 0
def no_beepers_present(self):
"""Returns True if there are no beepers on the square."""
return self.get_beepers_on_corner(self._kx, self._ky) == 0
def beepers_in_bag(self):
"""Returns True if there are any beepers in Karel's bag."""
return self.get_beepers_in_bag() > 0
def no_beepers_in_bag(self):
"""Returns True if there are no beepers in Karel's bag."""
return self.get_beepers_in_bag() == 0
def facing_north(self):
"""Returns True if Karel is facing north."""
return self._dir == KC.NORTH
def not_facing_north(self):
"""Returns True if Karel is not facing north."""
return self._dir != KC.NORTH
def facing_east(self):
"""Returns True if Karel is facing east."""
return self._dir == KC.EAST
def not_facing_east(self):
"""Returns True if Karel is not facing east."""
return self._dir != KC.EAST
def facing_south(self):
"""Returns True if Karel is facing south."""
return self._dir == KC.SOUTH
def not_facing_south(self):
"""Returns True if Karel is not facing south."""
return self._dir != KC.SOUTH
def facing_west(self):
"""Returns True if Karel is facing west."""
return self._dir == KC.WEST
def not_facing_west(self):
"""Returns True if Karel is not facing west."""
return self._dir != KC.WEST
def update(self):
self._get_window().repaint()
def trace(self):
pass
# // Fill in
def get_current_corner(self):
"""Returns a tuple of the current (x,y) location."""
return (self._kx, self._ky)
def resize(self, cols, rows):
self.remove_all()
self._cols = cols
self._rows = rows
self._map = [ [ KarelWorld._Corner() for y in range(rows + 2) ]
for x in range(cols + 2) ]
self._kx = 1
self._ky = 1
self._dir = KC.EAST
for x in range(0, cols + 2):
for y in range(0, rows + 2):
self._map[x][y].wall_west = None
self._map[x][y].wall_south = None
self._map[x][y].color = "None"
self._map[x][y].beepers = 0
self._map[x][y].bpoly = None
self._map[x][y].blabel = None
self._map[x][y].cross = None
self._map[x][y].bg = None
def init_display(self):
if self._number_squares_flag:
width = self._world_width - KC.LEFT_NUMBER_MARGIN
height = self._world_height - KC.BOTTOM_NUMBER_MARGIN - 2
self._x0 = self._x + KC.LEFT_NUMBER_MARGIN
else:
width = self._world_width - 2
height = self._world_height - 2
self._x0 = 2
fixed = GCompound()
border = GCompound()
self._y0 = self._y + 2
self._sqsize = int(min(width / self._cols, height / self._rows))
self._width = self._cols * self._sqsize
self._height = self._rows * self._sqsize
bsize = self._sqsize * KC.BEEPER_FRACTION
labelsize = int(bsize * KC.BEEPER_LABEL_FRACTION + 0.5)
labelsize = min(KC.BEEPER_LABEL_MAX_SIZE, labelsize)
labelsize = max(KC.BEEPER_LABEL_MIN_SIZE, labelsize)
self._labelsize = labelsize
for x in range(1, self._cols + 1):
self.set_wall_in_compound(border, x, 1, KC.SOUTH)
self.set_wall_in_compound(border, x, self._rows, KC.NORTH)
for y in range(1, self._rows + 1):
self.set_wall_in_compound(border, 1, y, KC.WEST)
self.set_wall_in_compound(border, self._cols, y, KC.EAST)
for x in range(1, self._cols + 1):
for y in range(1, self._rows + 1):
cx = self._x0 + (x - 0.5) * self._sqsize
cy = self._y0 + (self._rows - y + 0.5) * self._sqsize
cross = GCompound()
line = GLine(-KC.CROSS_SIZE / 2, 0, KC.CROSS_SIZE / 2, 0)
line.setLineWidth(KC.CROSS_LINEWIDTH)
cross.add(line)
line = GLine(0, -KC.CROSS_SIZE / 2, 0, KC.CROSS_SIZE / 2)
line.setLineWidth(KC.CROSS_LINEWIDTH)
cross.add(line)
fixed.add(cross, cx, cy)
self.add(fixed)
for x in range(1, self._cols + 1):
for y in range(1, self._rows + 1):
cx = self._x0 + (x - 0.5) * self._sqsize
cy = self._y0 + (self._rows - y + 0.5) * self._sqsize
bg = GRect(self._sqsize, self._sqsize)
bg.set_visible(False)
bg.set_filled(True)
self.add(bg, cx - self._sqsize / 2, cy - self._sqsize / 2)
self._map[x][y].bg = bg
ksize = self._sqsize * KC.KAREL_FRACTION
kpoly = KarelWorld.create_karel_polygon(ksize)
self._kpoly = kpoly
self.add(kpoly)
klabel = GLabel("")
self._klabel = klabel
klabel.set_font(str(labelsize) + "px " + KC.BEEPER_FONT_FAMILY)
self.add(klabel)
self.set_karel_location(self._kx, self._ky)
self.set_karel_direction(self._dir)
self.update_karel_label()
self.add(border)
def reset(self):
pass
def get_cols(self):
return self._cols
def get_rows(self):
return self._rows
def out_of_bounds(self, x, y):
return x < 1 or x > self._width or y < 1 or y > self._height
def get_beepers_in_bag(self):
return self._beepers
def set_beepers_in_bag(self, n):
self._beepers = n
self.update_karel_label()
def get_beepers_on_corner(self, x, y):
return self._map[x][y].beepers
def set_beepers_on_corner(self, x, y, n):
self._map[x][y].beepers = n
bpoly = self._map[x][y].bpoly
blabel = self._map[x][y].blabel
bsize = self._sqsize * KC.BEEPER_FRACTION
if bpoly is None:
bpoly = KarelWorld.create_beeper_polygon(bsize)
bx = self._x0 + (x - 0.5) * self._sqsize
by = self._y0 + (self._rows - y + 0.5) * self._sqsize
self.add(bpoly, bx, by)
self._map[x][y].bpoly = bpoly
blabel = GLabel("")
self._map[x][y].blabel = blabel
labelsize = self._labelsize
blabel.set_font(str(labelsize) + "px " + KC.BEEPER_FONT_FAMILY)
self.add(blabel)
if self._kpoly is not None:
self._kpoly.send_to_front()
self._klabel.send_to_front()
bpoly.set_visible(n > 0)
if n <= 1:
KarelWorld.set_beeper_label(bpoly, blabel, self._labelsize, "")
else:
KarelWorld.set_beeper_label(bpoly, blabel, self._labelsize, n)
def set_beepers(self, n, delta):
if delta == KC.INFINITE:
return KC.INFINITE
elif delta == KC.PLUS1:
if n == KC.INFINITE:
return KC.INFINITE
return n + 1
elif delta == KC.MINUS1:
if n == KC.INFINITE:
return KC.INFINITE
return n - 1
return delta
def paint_corner(self, color=None):
if color is None:
color = self._color
self.set_corner_color(self._kx, self._ky, color)
def get_corner_color(self, x=None, y=None):
if x is None:
return self._map[self._kx, self._ky].color
return self._map[x][y].color
def set_corner_color(self, x, y, color):
sq = self._map[x][y]
sq.color = color
if color.lower() == "none":
sq.bg.set_visible(False)
else:
sq.bg.set_color(color)
sq.bg.set_visible(True)
def get_paint_color(self):
return self._color
def set_paint_color(self, color):
self._color = color
def check_wall(self, x, y, dir):
if dir == KC.SOUTH:
return self._map[x][y].wall_south is not None
elif dir == KC.WEST:
return self._map[x][y].wall_west is not None
elif dir == KC.NORTH:
return self._map[x][y + 1].wall_south is not None
elif dir == KC.EAST:
return self._map[x + 1][y].wall_west is not None
raise KarelException("Internal error: Illegal direction")
def set_wall(self, x, y, dir):
self.set_wall_in_compound(self, x, y, dir)
def set_wall_in_compound(self, compound, x, y, dir):
sqsize = self._sqsize
wx = self._x0 + (x - 1) * sqsize
wy = self._y0 + (self._rows - y) * sqsize
if dir == KC.SOUTH:
if self._map[x][y].wall_south is not None:
return
wall = GLine(wx, wy + sqsize, wx + sqsize, wy + sqsize)
self._map[x][y].wall_south = wall
elif dir == KC.WEST:
if self._map[x][y].wall_west is not None:
return
wall = GLine(wx, wy, wx, wy + sqsize)
self._map[x][y].wall_west = wall
elif dir == KC.NORTH:
if self._map[x][y + 1].wall_south is not None:
return
wall = GLine(wx, wy, wx + sqsize, wy)
self._map[x][y + 1].wall_south = wall
elif dir == KC.EAST:
if self._map[x + 1][y].wall_west is not None:
return
wall = GLine(wx + sqsize, wy, wx + sqsize, wy + sqsize)
self._map[x + 1][y].wall_west = wall
else:
raise KarelException("Internal error: Illegal direction")
wall.set_line_width(2) # // Adjust for size
compound.add(wall)
def clear_wall(self, x, y, dir):
if dir == KC.SOUTH:
if self._map[x][y].wall_south is not None:
self.remove(self._map[x][y].wall_south)
self._map[x][y].wall_south = None
elif dir == KC.WEST:
if self._map[x][y].wall_west is not None:
self.remove(self._map[x][y].wall_west)
self._map[x][y].wall_west = None
elif dir == KC.NORTH:
if self._map[x][y + 1].wall_south is not None:
self.remove(self._map[x][y + 1].wall_south)
self._map[x][y + 1].wall_south = None
elif dir == KC.EAST:
if self._map[x + 1][y].wall_west is not None:
self.remove(self._map[x + 1][y].wall_west)
self._map[x + 1][y].wall_west = None
else:
raise KarelException("Internal error: Illegal direction")
def init_karel(self):
self._kx = 1
self._ky = 1
self._dir = KC.EAST
self._beepers = 0
def set_karel_location(self, x, y):
kx = self._x0 + (x - 0.5) * self._sqsize
ky = self._y0 + (self._rows - y + 0.5) * self._sqsize
self._kpoly.set_location(kx, ky)
self._kx = x
self._ky = y
self.update_karel_label()
# A hack until I figure out what is wrong with repainting
dummy = GRect(0, 0)
self.add(dummy)
self.remove(dummy)
def set_karel_direction(self, dir):
rotation = (dir + 4 - self._dir) % 4
if rotation != 0:
self._kpoly.rotate(-90 * rotation)
self._dir = dir
self.update_karel_label()
def get_text(self):
result = ""
result += "Dimension: ({}, {})\n".format(self._cols, self._rows)
for x in range(1, self._cols + 1):
for y in range(1, self._rows + 1):
if self.check_wall(x, y, KC.WEST):
result += "Wall: ({}, {}) WEST\n".format(x, y)
if self.check_wall(x, y, KC.SOUTH):
result += "Wall: ({}, {}) SOUTH\n".format(x, y)
for x in range(1, self._cols + 1):
for y in range(1, self._rows + 1):
beepers = self.get_beepers_on_corner(x, y)
if beepers != 0:
if beepers == KC.INFINITE:
s = "INFINITE"
else:
s = str(beepers)
result += "Beeper: ({}, {}) {}\n".format(x, y, s)
kx = self._kx
ky = self._ky
dir = KC.DIRECTIONS[self._dir]
result += "Karel: ({}, {}) {}\n".format(kx, ky, dir)
beepers = self.get_beepers_in_bag()
if beepers == KC.INFINITE:
s = "INFINITE"
else:
s = str(beepers)
result += "BeeperBag: " + s + "\n"
s = (str(self.get_speed()) + "00")[0:4]
result += "Speed: " + s + "\n"
return result
def load(self, filename):
self.remove_all()
with open(filename) as f:
finished = False
lines = f.read().splitlines()
first = True
for line in lines:
line = line.strip().lower()
if line != "":
self.load_line(line, first)
first = False
self.trace()
def load_line(self, line, first):
def scan_point(args):
finish = args.find(")")
if not args.startswith("(") or finish == -1:
raise KarelException("Missing parentheses")
args = args[1:finish].split(",")
return (int(args[0].strip()), int(args[1].strip()))
def scan_direction(args):
dir = args[args.find(")") + 1:].strip()
if dir == "" or dir == "east":
return KC.EAST
elif dir == "west":
return KC.WEST
elif dir == "north":
return KC.NORTH
elif dir == "south":
return KC.SOUTH
else:
raise KarelException("Illegal direction")
def scan_beeper_count(args):
if args == "inf" or args == "infinity" or args == "infinite":
return KC.INFINITE
else:
return int(args)
def dimension_cmd(args):
ncols,nrows = scan_point(args)
self.resize(ncols, nrows)
def karel_cmd(args):
x,y = scan_point(args)
self.set_karel_location(x, y)
self.set_karel_direction(scan_direction(args))
def wall_cmd(args):
x,y = scan_point(args)
dir = scan_direction(args)
self.set_wall(x, y, dir)
def setcolor_cmd(args):
pass
def speed_cmd(args):
self.set_speed(float(args.strip()))
def beeper_cmd(args):
x,y = scan_point(args)
n = scan_beeper_count(args[args.find(")") + 1:].strip())
self.set_beepers_on_corner(x, y, n)
def beeperbag_cmd(args):
n = scan_beeper_count(args[args.find(")") + 1:].strip())
self.set_beepers_in_bag(n)
colon = line.find(":")
if colon == -1:
raise KarelException("Illegal command: " + line)
cmd = line[:colon].strip()
args = line[colon + 1:].strip()
if cmd == "dimension":
if first:
dimension_cmd(args)
self.init_display()
else:
raise KarelException("Dimension must be first")
else:
if first:
self.init_display()
elif cmd == "karel":
karel_cmd(args)
elif cmd == "wall":
wall_cmd(args)
elif cmd == "color":
setcolor_cmd(args)
elif cmd == "speed":
speed_cmd(args)
elif cmd == "beeper":
beeper_cmd(args)
elif cmd == "beeperbag":
beeperbag_cmd(args)
else:
raise KarelException("Illegal command: " + line)
def set_speed(self, speed):
self._speed = speed
def get_speed(self):
return self._speed
def set_monitor(self, monitor):
self._monitor = monitor
self.update_karel_label()
def get_monitor(self):
return self._monitor
def update_karel_label(self):
if self._monitor is None:
self.set_karel_label("")
else:
self.set_karel_label(self.get_beepers_in_bag())
def mousedown_action(self, e):
x = e.get_x() - self._x0
y = e.get_y() - self._y0
if self._monitor is not None:
pt = self.get_click_corner(x, y)
if pt is None:
self.check_for_wall_click(x, y)
else:
if pt.get_x() == self._kx and pt.get_y() == self._ky:
self._monitor.set_dragging_karel(True)
self._monitor.set_dragging_started(False)
self._monitor.corner_action(pt.get_x(), pt.get_y())
def mouseup_action(self, e):
if self._monitor is not None:
self._monitor.set_dragging_karel(False)
def drag_action(self, e):
x = e.get_x() - self._x0
y = e.get_y() - self._y0
if self._monitor is not None:
self._monitor.set_dragging_started(True)
pt = self.get_click_corner(x, y)
if pt is None:
self.check_for_wall_click(x, y)
else:
self._monitor.corner_action(pt.get_x(), pt.get_y())
def get_click_corner(self, x, y):
x -= self.get_x()
y -= self.get_y()
sx = (x + self._sqsize / 2) / self._sqsize
sy = self._rows - (y + self._sqsize / 2) / self._sqsize + 1
tx = round(sx)
ty = round(sy)
if tx < 1 or tx > self._cols or ty < 1 or ty > self._rows:
return None
if (abs(sx - tx) > 0.3 or abs(sy - ty) > 0.3):
return None
return GPoint(tx, ty)
def check_for_wall_click(self, x, y):
x -= self.get_x()
y -= self.get_y()
sx = (x + self._sqsize / 2) / self._sqsize
sy = self._rows - (y + self._sqsize / 2) / self._sqsize + 1
tx = round(sx)
ty = round(sy)
dx = abs(sx - tx)
dy = abs(sy - ty)
ncols = self._cols
nrows = self._rows
if dx > KC.WALL_TOLERANCE and dy < KC.WALL_FRACTION:
if tx > sx:
tx -= 1
if tx >= 0 and tx <= ncols and ty >= 1 and ty <= nrows:
self._monitor.wall_action(tx, ty, KC.EAST)
elif dy > KC.WALL_TOLERANCE and dx < KC.WALL_FRACTION:
if ty > sy:
ty -= 1
if tx >= 1 and tx <= ncols and ty >= 1 or ty <= nrows:
self._monitor.wall_action(tx, ty, KC.NORTH)
@staticmethod
def create_beeper_polygon(bsize):
bpoly = GPolygon()
bpoly.add_vertex(0, -bsize / 2)
bpoly.add_vertex(bsize / 2, 0)
bpoly.add_vertex(0, bsize / 2)
bpoly.add_vertex(-bsize / 2, 0)
bpoly.set_filled(True)
bpoly.set_fill_color(KC.BEEPER_FILL_COLOR)
return bpoly
@staticmethod
def create_karel_polygon(ksize):
kpoly = GPolygon()
kpoly.add_vertex(-ksize / 2, -ksize / 2)
kpoly.add_edge(ksize / 2, 0)
kpoly.add_edge(ksize / 2, ksize / 2)
kpoly.add_edge(-ksize / 2, ksize / 2)
kpoly.add_edge(-ksize / 2, 0)
kpoly.add_edge(0, -ksize)
kpoly.set_filled(True)
kpoly.set_fill_color("White")
return kpoly
@staticmethod
def set_beeper_label(bpoly, blabel, labelsize, label):
if not isinstance(label, str):
if label == KC.INFINITE:
label = KC.INFINITY_SYMBOL
elif label < 0:
label = "\u2212" + str(abs(label))
else:
label = str(label)
blabel.set_label(label)
x = bpoly.get_x() - blabel.get_width() / 2
x += labelsize * KC.BEEPER_LABEL_DX_FRACTION
y = bpoly.get_y() + labelsize * KC.BEEPER_LABEL_DY_FRACTION
blabel.set_location(x, y)
def set_karel_label(self, label):
kpoly = self._kpoly
klabel = self._klabel
labelsize = self._labelsize
dir = self._dir
if not isinstance(label, str):
if label == KC.INFINITE:
label = KC.INFINITY_SYMBOL
elif label < 0:
label = "\u2212" + str(abs(label))
else:
label = str(label)
klabel.set_label(label)
x = kpoly.get_x() - klabel.get_width() / 2
x += labelsize * KC.BEEPER_LABEL_DX_FRACTION
y = kpoly.get_y() + labelsize * KC.BEEPER_LABEL_DY_FRACTION
if dir == KC.NORTH:
y += labelsize * KC.KAREL_LABEL_DELTA
elif dir == KC.EAST:
x -= labelsize * KC.KAREL_LABEL_DELTA
elif dir == KC.SOUTH:
y -= labelsize * KC.KAREL_LABEL_DELTA
elif dir == KC.WEST:
x += labelsize * KC.KAREL_LABEL_DELTA
klabel.set_location(x, y)
@staticmethod
def adjust_beepers(n, delta):
if n == KC.INFINITE:
return KC.INFINITE
return max(n + delta, 0)
@staticmethod
def get_main_frame():
for i in range(100):
frame = sys._getframe(i)
if frame.f_globals.get("__name__") == "__main__":
return frame
raise KarelException("Imports too deeply nested")
@staticmethod
def get_source_file():
return KarelWorld.get_main_frame().f_globals.get("__file__")
@staticmethod
def get_world_file():
filename = KarelWorld.get_main_frame().f_globals.get("__file__")
return filename[:filename.find(".")] + ".w"
@staticmethod
def get_main_function():
main = None
filename = KarelWorld.get_main_frame().f_globals.get("__file__")
with open(filename) as f:
for line in f:
line = line.strip()
if main is None and line.startswith("def "):
main = line[4:line.find("(")].strip()
elif (line.startswith("if ") and
line.find("__name__") > 0 and
line.find("__main__") > 0):
main = None
return main
#
# Implementation note: _Corner
# ----------------------------
# This private record class holds the information for each corner in the
# following fields:
#
# color # String indicating the color
# wall_south # GLine for the wall or None
# wall_west # GLine for the wall or None
# beepers # int for the number of beepers
# bpoly # The GPolygon displaying a beeper
# blabel # The GLabel displaying a beeper label
# cross # The cross-hatch at the center of the square
#
# The bpoly and blabel fields are maintained separately and not combined
# into a GCompound. Changing the visibility of a GCompound requires
# redrawing the entire window.
#/
class _Corner:
"""Private record class for each corner."""
class KarelException(Exception):
def __init__(self, msg="KarelException"):
Exception.__init__(self, msg)
# Original file: KarelErrorDialog.py
class KarelErrorDialog(GCompound):
def __init__(self):
GCompound.__init__(self)
frame = GRect(KC.ERROR_DIALOG_WIDTH, KC.ERROR_DIALOG_HEIGHT)
frame.set_filled(True)
frame.set_fill_color(KC.ERROR_DIALOG_COLOR)
self.add(frame)
bug = GImage(KarelErrorDialog.KAREL_BUG)
bug.scale(KC.ERROR_BUG_SF)
x = KC.ERROR_DIALOG_WIDTH * KC.ERROR_BUG_X_FRACTION
y = (KC.ERROR_DIALOG_HEIGHT - bug.get_height() * KC.ERROR_BUG_SF) / 2
self.add(bug, x, y)
label = GLabel("")
label.set_font(KC.ERROR_MESSAGE_FONT)
x += bug.get_width() * KC.ERROR_BUG_SF + KC.ERROR_MESSAGE_DX
y = KC.ERROR_DIALOG_HEIGHT / 2 + KC.ERROR_MESSAGE_DY
self.add(label, x, y)
self._label = label
ok = GImage(KarelErrorDialog.OK_BUTTON)
ok.scale(KC.ERROR_BUTTON_SF)
x = (KC.ERROR_DIALOG_WIDTH - ok.get_width() * KC.ERROR_BUTTON_SF) / 2
y = KC.ERROR_DIALOG_HEIGHT * KC.ERROR_BUTTON_Y_FRACTION
self.add(ok, x, y)
def set_message(self, msg):
self._label.set_label(msg)
# Images
KAREL_BUG = ("data:image/png;base64," +
"iVBORw0KGgoAAAANSUhEUgAAAYwAAAGMCAYAAADJOZVKAACAAElEQVR4Xuy9" +
"B3RUR57vP2/f7r7zztk977+7b9/bN2MkMkitDEJkMNlgMAYDNthgbBxxxDlH" +
"xjl7HMYzztk4Z5KkzrlbOSAkkARIAgECgRAgfv/6FW5Zqmp137597+17pfqe" +
"8zmeKVr31k31rfirP3gB/iAQCAQCQTS4BIFAIBAIwsElCAQCgUAQDi5BIBAI" +
"BIJwcAkCgUAgEISDSxAIBAKBIBxcgkAgEAgE4eASBAKBQCAIB5cgEAgEAkE4" +
"uASBQCAQCMLBJQgEAoFAEA4uQSAQCNQmWFUFxdu2wY7vvoXAW29C1eefQbCw" +
"AIqqq4H9rUA/cAkCgUCgJME9eyHw5Sbw3XIjFEybACXjM8GbPgTsKeeAefSf" +
"wELA/+L/92UMBceYVLCtXA7+774T5qEzuASBQCCIl6DLBb4XXwDHovOgIGM4" +
"eNIGU1MoJGwe+UfYQtgahlA6/tZL/sY6IRs8L78EJXv3CfPQAVyCQCAQyMX5" +
"xuvgWDgPCjNHgDk1CfJH/Qm2j+rbICKBf4N/byHHsU7OBb/bLUwjwXAJAoFA" +
"ECu+xx8Fe04KaUGcI8scpOBMHwr+998TppFAuASBQCCQQnFtLbg3Pga2rFF0" +
"/IEt4JUGu7IcpOUS/OUXYRoJgksQCASCSJTu3Amexx4B+/gsYhSDYNtIeV1O" +
"csAuKuvEMVBCzIrNl0B9uASBQCDoC+drr4I1Nx0KRg+iYxNsga4FOCDuWLZY" +
"GEYC4BIEAoGApbSoCJyzpoItdRBXgGsNtma8acngEdNuNYdLECSW4t31ENy2" +
"Fdx/eQXcd9wGvlUrwL7oPLCQj9U6byY4ly4C77q1YHv8UfC8+Qa4t2+DotJS" +
"8eEIVKG4cQ+47rkLbGmDoXDUnzTrekIinQtbN9bpE8R7rzFcgiAxBEnB77ju" +
"arBPGQeWtCFgNyXTOesFo8JjHX0O/U1BajLYxprAOvdccN1wHbj++iYU1TeI" +
"D0kQN+4PPwDr1Dwwp5xDxynYQlsNQlNpneSczqwRsJX8b/Y3od9ZTMng/fpr" +
"8a5rCJcg0B73NevIyz8YtpGPQ86HiX9DIX9fmDIILOnDwLlwLgTfelN8TAJZ" +
"2C6/jBhFkqz3UQ44AworQk5TElgm54Lvr29A0c8/gy2l7y6w7eT3rhuvF++4" +
"hnAJAu0IlJSAc2IOHcSL1PyWC9bSCtKGgv3Ky8HvdIoPSxAV/9YtYMlNpy1Y" +
"Nd7JnqAZYaFfmJoEjrwMwIpTsMfiPM/zz4Ejpe984N/bZ0yCoj17xbutEVyC" +
"QBvcWzbTlgB2O/X1QcQLHhf7ejFWj9WUTFod88D9xutQtFNMSRTwuB97BGzp" +
"Q2lNX613EsF33pk2GCx5meC87mpwf/QhlIUp9O2Lz6d5Yf++17HIN+S327m/" +
"FagDlyBQn4DZDLacFNpXy34AaoG1MRy0pF1W47PBefsGKK6sFB+a4A+BYBA8" +
"i+bRVdpqdEGFzIeOS2QOB9elF4P/k4+hqKYm4vtnyRwR1bhwHMP/4QcRjyNQ" +
"Di5BoC5FzS3gOH8ObYqzL7+WYMvDTmqTzptvgNIwtTvBwCD4/fdgyRrJvR9K" +
"gIU9thAspJLinjIOPK++AiV1uyS9a8Vbt9JWcTTDwDEO2wP3STqmIH64BIG6" +
"uJ9/DpymZO7FTwR0pgl2D5ACw7vxMQju2i0+vAGE+7lnwZE2WNEFeHgsOrsv" +
"NRnsk8aCff21ENy8Oeb3yv7IQ1AwOnq4ETQk9+qVMR9fIA8uQaAuVlI4K/mB" +
"KoXLlEyn9LpIIRKuP1nQfwiSWj52C3nSh3DvgRyw4oEm4SLmY8vLpDOXfJ9/" +
"BsVxhCS3LlkIWyV8J9it65g9TfZ5BLHBJQjUAwO1xRKkDWtPckNDywHPVUCa" +
"+I7JueD54gvxEfZDin0+MJOKgRLjZ6Eup2DOaHCsWAq+b74BXOjHnjNWiqqq" +
"wDY+iztfOPA6zHlZcZ9TIA0uQaAe5tx0ya0LbI5bll5AF07hwB5tnkv8WyVw" +
"mJLAvnwJlIktM/sNfrOZLoZTwiwQbFU4Lr8UKhQwiZ4Evv8eCk2DufOFg1aq" +
"MoYren5B33AJAnUIWq2kyT5EUmsBf2NPTYLgr7/SDyFgMYP9oQfotNhC8nFY" +
"U5Pph6JmlNBQN4OP1B59zz4DpfuaxEdpZN76K50hp5RZIG7yjtpeekHx98Lx" +
"6MNgjrBgj8U/NhWqG0R0Ay3gEgTqgB9BtDnlIbCwtqWcA9ZXXuY+gqDHA743" +
"Xwfr/Fl0JW6oi0st40BwxzP77GngITU/Nj8C/YNTqO2ksqL0lFlcVGclFRn2" +
"fPFinTsjpm+leFw67KivVzwfAh4uQaAOhRdfFFPtDld/W598IuJHUFJWBr67" +
"7wQcSMfZTmq2ODDsCE5ztKxbGzFPAn1hveoKOq2VfZ5KgO9z4PprFH0f6Nqg" +
"7FGS32NqGHnEMHaLGX5awCUYmXe3b4f1Dz6kO+579FEonJzLveyRwNg6Wy9b" +
"Cbc+8yx3PJZ7H3sMPlt/HfyUmwFmE06TlBeTKhr4cZpHnwObx5jgifXr4aYw" +
"eRH0Bt9J9j3VgsrmFnBeuFDVEB9oGJ61lyl6ff5XX6Gta/ZcfYHvuTVjOFSK" +
"LlNN4BKMDH6gf/jDH3THf/7jf4cvh/MveyTwI38vNwv+6X/+T+54ffF//uM/" +
"YP6gP8FjwwbBlrRhdL2HGmEecGzDmjYE7h+WBEn/9v9x+RD8zh+Tk2Hj2+9o" +
"WphhuHv7zCmqxSgLQaPKYrj9MHmQi/m8mTTf7Ln64uyg9whF8yDoGy7ByCxe" +
"vYb7YPXAxMHJ8HNKEveyR+PtlKHw3//pn7jjReN/kL9J+9//AdcMHgTfpQwG" +
"T6o622jiGMrXacNh3tDBXB4Ev6OlaQTKysBKWrNSxwDigYbZnzVVsesq2V1P" +
"FxKy54kE5qEge7RieRBEhkswMnptYVwyYTwUZo7gXvZIYAH/xqD/4I4VK/9C" +
"WihXDRsMW0gtDPc1UNo0cJrw9pRBcHdGGnduwe9oYRqBHTvoeJYWZoHgeXBN" +
"B5sPuTie2BgxOm046B7fU8crlgdBZLgEIxPOMB566KGE87dbb4GCtNhW1aJh" +
"bM5JhWc3buSOJ4enyHE+vWwVbMf9mEkBr2Shgnn1pSXDpplT4bn77uXOPRCZ" +
"Nm0a9y6qahpOJ6mUnDWLWArceKDvUPowxa7Hcu4k7hzRoCu9F8xRLA+CyHAJ" +
"RoY1DPxw9aC9v/4C5rSh3MseDfeksdBev5s9XFw60dIMje+/B/7zZtLNapQq" +
"XM5OBR4EbvLRt2z+lT3tgFR+fr4mpuEuLIQCjaMfI3T8QCHD8Hs8YE0fGvP7" +
"iBGYnVderkgeBNHhEoyMXg2j2VwIlozh3MseDde4DGgrK2MPp4hOHjoEjR9+" +
"AIG8DEUHR0NRcHe98Rp7ygEptU3DFwhAAXm3tDYLBN+ZYK5JkevAPerzJQQb" +
"ZBHRarWFSzAyejWMAz4fWLNHcS97NJw5o+GA08EeTlGdPHIESm69iU7HxbUW" +
"bB7kgAWJMzUJiq9YA6fI8Qe61DINf1ERjQqrZPdiLOBzLhqTApV1dXFdB+Jc" +
"gCH/+XNEw2ZKBt9fXo37/AJpcAlGRq+GcbSmBly5adzLHg17xjBo2rKZPZwq" +
"Ouj1QtmaVdQ4lNgFEP8ej+M9fy4cJAXbQJfSpuEpLKS7zWk5ZsFCWxjZI6G0" +
"vFzWNYQI2O1QKKPLFrGQ97Xoqy/jOr9AOlyCkdGrYRyr3w2eCdKib/Ykn9Qe" +
"9377NXs41dR1/DgdfwgsnAtuhcY3cGaWc1w6NP3yM3u6ASelTMNns4E5AWMW" +
"LPh+BDKHQTDOLVJdT2wEq8zV6Gg0eD/YYwrUgUswMno1jM6DByE4dzr3skcD" +
"I3bufu9d9nCqC7upqshH7MoYSgslJYwDYxlVk2MOdMVrGsHKSjBnjUy4WSD4" +
"XvjTh4AvP77V7IVT8+jgNXv8aODsPNvEMVC0c2dc5xdIh0swMno1jDOnT0Pp" +
"8gtjLngLU5Og5uUX2cNppraSEvAvnk8jh8YbagSv3UJaG5X33wMn29rYUw0o" +
"yTWNYEUFnTyRqDELFnymPtMgcGzaFDHfkSgqyAdfurQoziw0LMj82bLPLYgd" +
"LsHI6NUwUMGr1sb8oeMeGJWPPUIc5wx7OM10pqsLdr70Athz02iAQzaPsYKm" +
"UbJmFRxtqGdPNaAUq2kUBQJgJbXpRI5ZhMOVOgg8778XNs9SsF2yLKZQID3B" +
"SRqu9dfKPrcgdrgEI6Nnw6h+5qmYuxGwmV5+z5200E60jtXWQtGlK86GU5cx" +
"m6XXdREj9M6YBIdIC2YgS6pplO3eDbbpE2J+f7QADaz0+WdlFdq4haslVf7+" +
"9ri/h/2Zp2WdWyAPLsHI6NkwmrdvA2uMYQ/ox3jtOjh9/Dh7uISp9rVXwZM1" +
"Iu4uKsQ9PgsO+/3sKQaUpJiGddF8RVp3aoCVGv9998gqtJ0PPyi7dYGYidkE" +
"yXfFHlegHlyCkdGzYRzdVQfuzOExG0Zw5TI6CK0n7beYwT93OqnhnROXceD1" +
"+fMyBvwMqr5M48m3/gaWSy+mrbpY3hstQcPwbrhZVqGNQRJpGH8Z4P1wjlVm" +
"0aBAOlyCkdGzYaAck8bG1K1AC9SFc6GztZU9VMLV0dIM5bfdQrsU5Cy4CoF/" +
"a8OV4W++zp5iQIk1jX//13+F19JGgS11kG7NAkHDsF92ScwFt3vTJiiMozsK" +
"vw3Lwnkxn1cQH1yCkdG7YRTfciNdzMa+/H2BH4V7ah50NDexh4pLXSdPQltp" +
"KXTsb2H/KSZ1dXZC0w/fgytrRFymga0UiykZap59ij3FgFLINDA8/ROZJjCn" +
"xh4SX2vQMMyL5sdccLvXxT4JpCfYRef68+Mxn1cQH1yCkdG7Yez77hvwpw2W" +
"XGOkcZnyMuH43j3soSILZ1WdPg1dJ07AyaNH6YB1008/wk7ygbkWnQe+CdlQ" +
"kjkM6l56gf1LWcLpt66JYyA/BjNkQdPAAmTnKy9BJ8n3QBWaxqz/9a/0XsTT" +
"3acVWAHaNjk3poK7qLoaCrNHy65k0AWDGUMhWFQU03kF8cMlGBm9GwZ241jS" +
"hkguCOiHMSEL2nfuZA/VW8QgOg8dgiOVlXR8Yd+HH0DVQw9A8WWXgIMYjm9M" +
"CnhMybRWhtA1EeS/wUsvVmwGVvu+vVCy9jLa5Sb1+sKBBUHV3XdAp44G+rXU" +
"PtJis5NKRSxdl4kEja1gcmx7YnheeB4ccbSeaDfmuPSYzilQBi7ByOjdME6T" +
"gt01f3ZMTXFX9ihqBD115uRJOFpXC3tJi6XyiY1Qtf4a8M6bAY5xGWAmhoSr" +
"qi2jzzn7MfdxLvzozGNM0NXR0evY8Qhnc9U88xQ406WbIgs1M1KYlK67HDqI" +
"CQ4kHbDbwEGet9yadyLAQWtvjC2MAvKexmOI2KpxX3tVTOcUKAOXYGT0bhjY" +
"EqjBkBsm6bUrG6ltNn7zFbRs3wY7Hn0Y3EsvAO+UXDrYjCuwcU3DVhm1evy9" +
"nRTMUVsvMrT3889oFFX2nLGAixZLrlgNJ9vb2cP3S7Xv3gWuqXkxP8dEg4bh" +
"ycuQXHh7SOsXF/uxx4kFP2mF+r/9VvI5BcrBJRgZ3RsGUavbRUN+SC4YSG0T" +
"Yzo5U86h3UhK7V2Bx8AAg7Wv/4XNoiLCrjH7WFNcNUnstiglrScch+nP6mxr" +
"g8CKpbRVyN4DvYOG4c5Nk1x4W8dnS3/3w4Ctr8KsUVDSuEfyOQXKwSUYGSMY" +
"BobEcE0bH1O3gxIGEQ7srvJdchGbRcV0qLgYfOfNPNsKCnP+aNC59sTUcGyk" +
"8/Bh9vD9RmU330DHmNR6zmpCn1HmcEkBAH2bNtGotPFcJ75L9tUro55LoA5c" +
"gpExgmHglNaK66+Oq+atFHRmUuYINouKqqNpH/guPL97sJ3NQzTwb7B7qvjS" +
"FXCiH45pVD38YExTrfUGPh8cpPeTygH7PbLYLlrM/X2s4LvgevONqOcSqAOX" +
"YGSMYBiounffod1S7MegNfixW1OTaUtAVXV1gW/pIhoahc2DVHBVefGVl/er" +
"MY29338LThn7WOsC7BoihTeNC2ZKBle0PTEK8sGSGfs2xSyW7FHgc7sjn0ug" +
"GlyCkTGKYbTjhkp5GdzHoDVYUOFKYrXGMViVXHcVWGRulBPqniolrbNOnYVK" +
"kaPDpaXgHJ8VV3++GuB9xtZvCNwAy0paELgqG7cZtk7IBtu8meC79iowP3Af" +
"BD/8AIpLSqIW4I6bb6Cmz54vFuhEjUXnRT2XQD24BCNjFMNABS67JKZxDDXx" +
"X7GazZ4qOn3s2NlwIjL7sc8aXBJdX3JCh+FSpAqnH3vOnyt7lzmlwAFragq/" +
"rc/xEEP2ZY+EgsyRYJk+ATyrV4Hjvruh5O9vgefHHyHockFpQ2PMBXbpjh1g" +
"zYw/YCV23dn/vDHm8wuUg0swMkYyjL0//gAukz4GOr0zJsNpjbp6cDOpyjtv" +
"A+to+QH18snf4jqNkwquIdFS/jWrNB+3CAX5w/tOw2qQlmVgXBoUjMsE28UX" +
"QeCJjeD85hso8fuhuKlZ0ULZde/dZ8Pih8mXVGgLM30o4CZS7PEF2sElGBkj" +
"GQbKlpepi8Fv11gTHAoE2Oypqoo7NtDNlNi8SMVKWhqVd98BJw0WRmTna68q" +
"NjU6Krg40zQYzBnD6RoP28J5YLvtVih+9x3wk+fNfj9qkU/yEHfrgnwnlvNm" +
"aZZnQXi4BCNjNMPY8exT4IxzEZMSYKGy5+sv2eyprqp776IFP5sfKWCBG8gY" +
"AjsMtE/4vi2bwZoxTBOzoBMa0odB6Y8/QtGevQkraK23b4g7PDv+LU479n/8" +
"UcKuQ3AWLsHIGM0wjjc2gCd7FPeBaA3OdKlKQMGLYxq4BkHumAaCq92rHn+U" +
"PbTudKJpH7g03DUP76cjbTAEEtiFg0EGrRnxz4zC1olD7H2hC7gEI2M0w8A1" +
"GWXXX53wFb64gA/32T6ViBXVZ85AcNUK2es0EAyNXvvyi+yRdaXiK9aALY4u" +
"ODngc/3isUcTVtBab70ZtitgkA5y3+wP3Jew6xD8DpdgZIxmGKjmzb9CQYq8" +
"bhmlwNlajok5cHzfXjZ7msl/8VLZ23ViDRQ3Ydr3zVfsYXWhmpdeoF2Pcg1R" +
"LtiaeXH2TG6PcC0IlJeDZVxG3GMXCEZ4LnI4NL8GAQ+XYGSMaBjHmvaBd+YU" +
"RT6seHBnjaCbKiVKuA2tf+ki2es00PS8OaOhpSCfPXRC1bx1Cy3wtDYLBO/J" +
"g0n/xe0RrgXOJ5+Q/Sx7gq0k+5KFmuZd0DdcgpExomGgqp95ioY8YD8WLcHu" +
"ksaPPmSzpqmO1NSAZ9p42eaJNWqc73/Q62EPnRDhAk3vuRNlX48SbMrNhHP+" +
"+EfNTQNDziixzqiAmI7n5Zc0y7cgMlyCkTGqYRxrqAcPqR0nohYawkE+zOJr" +
"17FZ01ytfj/Y41jkhX/nzMuEtooK9tCa6vSJE1Bx+610pTSbRy35Kn0E/Onf" +
"/o1+D1qZhuPO2xUbr8GIx0FSkWDPIUgMXIKRMaphoIqvu0p2H74SYEGLYR/0" +
"oJbCAroJlNwaKi6K850/l3b3JUp7v/kKCokJyzU+pfhyxJ9g6L/8S/c3obZp" +
"lFdWQjBnlCKVH2wxuq68XLW8CmKHSzAyRjYMbGXgTnXsR6MlzrTBcKx+N5u1" +
"uHWGcKyujk2OqF1//xvdJIrNoxTolFJTEhStvYw9rCY6TApNV478PauVxExa" +
"awtNqb2+CzVNw7FyhWLXjWt0AiLQoK7gEoyMkQ0DVXr7rXQKIfvhaAEWsnRD" +
"pXfeZrMlW0fKyqBy42PgmnMuFKYPg67OTvYnferMqVN0X3JcZ8HmVSrYYitd" +
"fy17aFWFe6S7Zk1VrNCMl0JcZf3sM72+C7VMw79lMx3gZ/MgB1zZbV0wR9H8" +
"CeKHSzAyRjeM9l11Zz/wMB+QFmCcoaLrrmazJUloBh0HD9IBZ1xIZ5+cC4HM" +
"YXR9BR1XIAVJc4wzmE4cPgz+hXNlF750tTMxnJqnnmAPrZqq/vw45Cewa5EF" +
"J1PsfvtvUFBYqLpp2FavVGTdBeJNHwyBX35RLG8CZeASjIweDAOD653C8Nuk" +
"phmrMJhe6bXrNA9M1xOcOy9VXceP0700Gj79BMpvvQlck8aCL3M4DQWB0yFD" +
"Ae+w4EbjqHnlJfYQUXV09y468InHY/MqFVyjgWMKagvN0po1MmGGHw5LKmk1" +
"EhPD9zI/P1810/Bv3aJYZQfff+u8mXHnSaA8XIKR0YNhNH78EQRnTIKyK1ZD" +
"+QP30kJy/7at0F5bC6fa2mh/fiQ1bd8GlvRh3EekFXZSuB6pqmKz1S1sSbS6" +
"nFD58INQcuH5YMtJITXqQfQjx0HKSIOdgavWsoeTpAN2G5hNybILI7owkeSz" +
"rayMPbRiwvuCIcsTafbhwFla5TdcC12/BWlUyzRwj4x4TL0nOFnA88UXceVH" +
"oA5cgpHRg2H4V63oLjix8MA4TdgPjwO4ToyHM3sa+EjTvebJP8Oe776l/fwn" +
"W1vh9G9/jzXBklXLuY9IK7BGuvv993pd0ylS2BywWaGStCIs5BrwN1g4RDIH" +
"FtotNWc67eOPVWfOnIFdb74O7rTB3HGlgn3i9rxMGr9KDVUQA03Eau5o0AWN" +
"F8yHDlJZCUlp0/B98D4Nl86eWw40btSUcVBUt0tWXgTqwiUYGT0YhjU3vc+a" +
"VqiLBrtnEOy68WcMhdJJOWCfNLZ7T4p9uDrYlJi9MraQvBffciN0tLRAyw/f" +
"0em+1rFpNFpoKN6T3Hx5J+ZAW3U1c8ek6eTx41C0ZpXs4H2hbjH/4gWK7/2x" +
"32IGL3mOoeerJ7AAxnfr+IEDvfKspGmYSetNbuuPBfc6cT30QMx5EGgDl2Bk" +
"Em0Yx/c0gi87tjno+NtfCaXnTug+DnZbBS+5qE/jURuc0WQbkwou3JqTFLKx" +
"tib6AkN7N2/f9vsNi1FoNtgFxh5XKngN2Noru/1W6DodatPFp46WZvDNSnxo" +
"l77AFkahaQgca2xgs66IabjuvF3R99RGvp/iHTskn1+gLVyCkUm0YTRt2Uxr" +
"4rEWrlgoe5dd2OtYuC4D91JOREGE55Q7MykS+SlJUPf3t3pdZ6xq/PpLcJJ7" +
"jJsDsceXijk1GRo+eB9i7xzjVf3nx6FgtDLdMWrhIUaN407hFI9pBJxOOsjP" +
"nk8u2AK03Xpz1PMKEgeXYGQSbRi4p4ScLhPs+6548D72cFD10P3gUKhvWA9g" +
"TRSvCUOax6OKe++Ku8/cmz0S2nfuZA8dkzBYY2Ha0ISYeix404fAni8+Z7Pf" +
"LbmmYV1/rWKD/HgPcTYbew6BvuASjEyiDcN78VI6uMp+DNHAxXp7vtrEHg6O" +
"kgINu4b0XiBJBQuXoosvgs7Dh9lLjUm4b4d71hRZ9zoEtqBcE7Kho7mJPbwk" +
"YZeWb+kixQpMNXGS96s6ylqUWE3DX1gA7sz4N0cKgbHMxJ4X+odLMDKJNIzT" +
"nZ3gnT5BVuGOITmOlJezh6QzinY88lBcq531BBbSzslj6e5z8Qr3EYlnVTEd" +
"zyCFfWDFUjgpY+OoHS88B05TYvcxkQq2eoNXrmEvgVMspmGeOUUxs8T8WcaY" +
"ErqVrEAaXIKRSaRhtNfVgltGxFn8ffHkMXTwNJzaG+rBkafMRjR6wJYxDA4r" +
"tB6i9Pqr415ZjHP+d258LKZussOlpWBJH8odS69ggWyb/vukikiSYhrOhx6g" +
"M/zY88gF981wkRYQ+z0L9AeXYGQSaRh7f/2FLi5jP4ZoYLeKe9ZUOH38OHvI" +
"bu148fm4tjDVExh+pOnnn9hLlCW6CjyOWVMIGrHZNBj2529nDx9WuK2ud8lC" +
"Qxk4tuxwMajU6AORTKOoqoreLyWnEFvHZYCfVCLY71mgP7gEI5NIw6h5+UVZ" +
"s2WwW6T48ku7V+KG02lSSLmm5skaUNcbztQkqLjvbvYSZWv3e++CLc4uO7qr" +
"W246HCWtuUjCNsiezz+jBSZ7DD2DhXvR2BQ4WlPDXlKfCmcao1NT4ac5MxQ1" +
"S7z3jjtuE2ZhELgEI5Mow8CVyNV3bJDVPYL9wDue2EhcIfK6AIxTZDfF3oLR" +
"G9ii8ixewF5eXAqsXBb3hj20n3/hXPIY+n4OGNrFaUDjxpapP30wNEtsRYXU" +
"0zT+4R/+AS4fPVJRs8R8ObJHQUl9gzAMg8AlGJlEGQbuR12yYoksw8CQIQ24" +
"NWqUPvSuU6eg4pYb465N6wFcnIVdO0qpndScLRnD4l47grVdnLLbl2qefSpu" +
"Y0oU2JLd+dqr7CVFVcg0/tc//zNsGp2s2CI9NAu8l65HHxZmYSC4BCOTKMPo" +
"PHQIKq5YDY7MEVCYcjbOktTCCwdPm7duYQ8ZVkerqsAxLl3RLgGtwbxbSUER" +
"S/dINGH8rerHHqED2Oz5YsVJnmHzls1ckEi897iTXDwLBhMJtoqKb72JuSpp" +
"QtN4JiOVrn1RahwN3wPnhGxhFgaDSzAyiTIMFHZXtFotsOPZp6FoxVKwklq0" +
"Jy2ZdjnhxxHuQ8N0DN19uKSEPVyfwpXFGNCQPZZRwPvgI/el9q032UuLS7hm" +
"xTkxhztfrGDB6pw2Hk70iL2EXY6+xfPjWveRaLAS45w/u8cdky6MYKB0dyju" +
"puf/4nNhGAaDSzAyiTSMnsL9MI43NkDzN1+D/5JldL0ALs7DAqfn7BI0DNf4" +
"LGirrGQP0adOd3TQtQxGbmXgfZC7UVMk1bz0AliImYYz51jAGWlB0mIMCcOZ" +
"YMuR/Z2RoOMYxAhxvVAs6mxtBc/Ucdzx4gHNy7b4fGEWBoRLMDJ6MQxWpw8f" +
"ht3vvE3DTNuZ1bEFpsF0EVosatq2FXw6jY4qFeuksexlKSIbMWAlzBT713Fj" +
"qM6DB8E3Z7oix0w0nlxT2CCEkVTx4P2yxuYigQPnvk1ivwsjwiUYGamGgaEl" +
"4iGWvalZNf/8E1h6zDTBGvGO33ZEi0Xlt91CwynEW5tOBDRuEDHOTibkthLa" +
"++3XdN+MeO/LNlJIOrJGQhm5zxhym/13PYPXjmNoWJPHwW4red9wHUbxzMnQ" +
"FmFzLFYHLGawZo5Q1CzxWBhCh/12BcaASzAyUgzjYFER3SnOt3CeLEoWzeM2" +
"GIpFx/Y0gntaXvegOI5x+C44L+I6jHDCGEh4HKVmrWgJFmi4x3dTjC0rKcKl" +
"ad6LFis23mBOTVK0wFQDvJ9IaJ8VX/oQGhQRW0YVd90O9aR1ixtgHdu9i71d" +
"fQo3mnKRv1cq/AeCebQTMw96vcIwDAqXYGSkGEbd23+ng8ZYCMjBTmr1u959" +
"hz2sZGHrpPz6q3vN5ceQIriXRqxq/OxTGgKd/TCNANbad778IntJiggLR2dG" +
"4ra51YqQSWCYDi95h+wzJsGOhx+A/Vu30AoFFvpnTp2KOmU7nMrvu1vR8B/d" +
"02g33CLMwsBwCUZGimGUP3i/7FlG9KUnNc795kL2sDFp55uv95oCih9m86+/" +
"sD+LqpMdHRBctVz3NeCwkBZW8Oor2EtSRJ1HjkBw5TLDLbDrC3y+2CJFk8Vo" +
"AjiJwokbXC2YA+X33kWnAXce2M/eBtnCMTLs1lNyjIx2j41LF2ZhcLgEIyPF" +
"MMrWX0P7p9kXWir5pEZ38uBB9rAxqdXvp/3joX52rCUGLr+M/ZkkHS4vB2vG" +
"cMOZBuY3sOg8xbdLDQk3WlJyVbJWhN4Jugc5qUjYiTnYskeDd94MqLzpeqh5" +
"5SU4sH0bdCgQ8TeccFDcPUXZWVEIdkH6PvpQGIbB4RKMTDTDwMKp+KILZC++" +
"wo/ZmpMS16B3SN7Z03rVgHHdBs73l6Nd77xNC5d4B3q1BA3DOyknpkHYWHTq" +
"+HHwzJpiiHuCNXkcK6B7vKeT1kOuCXwXng81Tz8Je7//Fo6Qe3SCtCCUXB0f" +
"Tvhel918g+wWeF9g68guptH2C7gEIxPNMDr2t4D33Imya+P4YXvnTO91TLkq" +
"vfuObsM42787CA7YbezPJCtw2SWKDlBqAe4dfsBqYS9FMdW99y5YdT6TDPPm" +
"HmsC96J5UEtaDwfdLhpqhkpmBUKuWjb/CgXkfsn9PvoCW3ren34ShtEP4BKM" +
"TDTDOFhaCvbcNO6FlgoO2sntOmK1nxSULtPZ/b/p7BFybJzzLlcd+/aCfZyx" +
"9s0wpyRB/YcfsJeiqOyTxuh2LAOflXvJwqiBJ7UQVqYC5F5JDWkjBXyvsWvt" +
"wwlj4blPPxWG0Q/gEoxMNMNoLsiXvfENvvy4WrvqsUd6HVOusO5oG5vW/YFi" +
"4eGcOZn9mWTh8XZhqG8DzZrCro/qhx84O5NHJTVs+pzumc6eWw/QjY0m57JZ" +
"1lxdpCUTuOgCxaYih8B3ezNpXQz53//BbcIkMCZcgpGJZhh7N30BhanyQzyg" +
"Yez9+stex4xHpTet7/WRunJGQxtpBckVbulafMVqw6zNMBPDCCy/ELqOHWMv" +
"RTHh1FJL7u/GrDdspAJzsq2Nzbamqnr4QShQeNwCK1geUnlZ8Mf/6v4ehWkY" +
"Hy7ByEQyDFxJvevF58Fqkh9EDTf/aauu/v1Li1MYEiSQMbS7j92cmgz1GOo8" +
"Dp1obQXX2FQu73oEC3FbXiYcI3nG3eDwGSkOab3U4o6FCq4pUAp87oGs4XDQ" +
"72cfo2Zq3raVC1ejBFgRsi1dBP/jn/+51zcpTMPYcAlGJpJhYNC1its3yC44" +
"6MdNCmIcK1BKWLO0ZI3qrv1uJ7W8sg0305ZCPMKuN49BFq7hgGj57bdC9aMP" +
"Q/UjD6lC8XVXQb4Coc+VBt8pDBkebyVBro417QP3zMmKj/Fg96otJ4VGYQ63" +
"c58wDePCJRiZSIbReewY+Jcvievj8EwaQ6PFKiU0sZJ1l9N4Unh8NA7/eTOh" +
"o6WZ/WnM2vn8s2CPo/tNK7DQpPGOyD1QCz3PHsP3seyeO9nHp4mCV66he5Ow" +
"eYoXvN/Vjz/afR5hGv0HLsHIRDQMur3mONmGgYvr3KQwj7f230tnzkDD238D" +
"y28FO9bMzBnD4XAwyP4yZmHXFMao0mvfveAsON7kXnQe+/hUVyUp0HEygNJT" +
"jvF43ukT4DQTG02YRv+ASzAykQwDa+2FpiH0A5Uz9RQNo+S6qxSfG7/f7QZz" +
"+u/dR7hRzZ4vN7E/kyU8tmuMMcYzBipo6I6JOdwOf2pqzw/f0ynNapiFL3NY" +
"n2MywjSMD5dgZCIZRvuuOihauohuC2lOHwqezOF07QM2n5HQegj2IwiBhlHz" +
"zFO/v/0KCVfwBufP6jYxakzXK7e50O533wF/j4F1gb6gNfKxJmivq2UfnSrC" +
"rXFdk3NlVZoigdeB8aewKzSShGkYGy7ByEQyDJwxc+rQIRriGeMvHfjpB6h9" +
"9WUou+ZKsE/NA/+4NDpjCRfnYaGNXVc9C1kcD9ij4JTaniq7aX33JjU0Iu64" +
"DOhSaKwEa66VD9xLr0uYhv7AZ4Lxog447OyjU0X+FUvpdGY2H/GCla7i5RdC" +
"5+HD7Ck5CdMwLlyCkYlkGBF15gzdzKctGKQ1cpxVg90EPeem0w/i+muUHcP4" +
"Tbs//YR2EYTO5SDmdLi4mP2ZbHUePw7eBbMVX5glUAacwVX79t/Zx6a4yu6+" +
"g1Yc2PMrgS1rBLTGENpGmIYx4RKMjGzDCKOOvXvAPen3vbOxJlicTT4KFWqC" +
"9FxjUrq7xZzko6585CH2Z3EJDciRm6Z4V4QgfjACcvn997CPTFHtIoaEgQ3V" +
"aGViaxz34YhVwjSMB5dgZJQ0DFTNs0/1amXgAKV71hTFByjxeJ5F87pnNOHA" +
"vG36BPZncavhg/dpOA41Cg2BfLA7smzdWlVaryjc2RC3aGXPqwTY8vbMnQGn" +
"ZUbSFaZhLLgEI6O0YZxqbwfv1HHdBSz+Fxf+1b31JvvTuIXHxEVcoVaGJTUZ" +
"2muVHwgt3XCz4UKh93dwf5aixQvg5KFD7OOKW+31u8E+IVuV6dU0bHnmcFm7" +
"RfaUMA3jwCUYGaUNA9X0y8/gNp2NKosfCf7XNTUPOuPcRIlVe0M9DRyIXUZ4" +
"DhsxDzWMCRVYsVTXi9kGGvjMXZPH0pl8SgoXmfouWkwXRrLnVAIreUfj2d++" +
"p4RpGAMuwcioYRgo/8VL6cyp0IeCMZ9qX3qB/Vncss+Y3D0wjYWIf80q9ieK" +
"6MT+/eCYNNYwQQoHArac0XDA52MflWxhFIHSq9Z2t1rZ88ULjluUrrscTik0" +
"mw8lTEP/cAlGRi3DOFJWBrbM37dBpU3xCTmKb5O587lnSGvm99lSWOvEdRpK" +
"C8dMWgoLwNpjm1hBYskfPQiafv6JfVSyVX7X7XQquBrPl7ayx2Wo0mUqTEPf" +
"cAlGRi3DwIin1Q/eB+YeAewcpOaGW2gqqTZiTAWjf9/xzJoxDJq2bWV/pph2" +
"vPoy7fpSo1ARxIbNlAz1f31DkYHvujdeA7NJflTmSOCuk770IbD3h+/Z0yom" +
"YRr6hUswMmoZBurgb9NSQx8OFuq4GdOJ/S3sT2XreGsrOKbmdQ9Q4t4dNS8+" +
"z/5MUZXfeZtqfdwC6djIs8ZKSby77zVv3QLu7JGqTZ/GYIWV993NnlZxCdPQ" +
"J1yCkVHTMFA7HnmoV78/jjeUXHMl+zPZwoBtlbfdQqe+dh//ysvh9PHj7E8V" +
"E3ZPFa+7nG4XyxYOAu1A0y5avZKOPcjVQa8XrNmjVFugiXn0XXg+nFE4nlpf" +
"EqahP7gEI6O2YZwiBbdjfGZ3CwC7cnBDpiZSq1NKDZ98DAW/dX2dHSvJjnva" +
"YjQd27cXfPNniZlTCYTuITElV3bloNXnA3dehuxozNHA/LnJu4h7XGgpYRr6" +
"gkswMmobBmrPV5vAm9Z7mq1/2WIunLNctQaDYOsRYdaZPgRanQ72Z4qrrbwc" +
"7GNNXEEh4MFC2YyBKxUsnLFykJ+aDJ0y1mK07ayhIcXZYyqJOTUJ6hWaQhur" +
"hGnoBy7ByGhhGCjfRRf0Kixw17imn35kfyZLuAd18QXzu/ugMfbPjif/zP5M" +
"FTV++zXY04eqssirv4CTBCruvweatmyGqqeegLLrrgL/+XNoFGSMp1RAClYs" +
"XLG1hsaC91LKpAL8jTdjKBz0etjHElEdBw5A4MLzu7sxlYa2okmLt+SG69hT" +
"ayphGvqASzAyWhlGq9sF5rSh3YU6jmt4ly6CLoVaGRUP3tfdtYAFj+u8mexP" +
"VFPjZ5/SAk+tQVOjg4vV9n33Ta97hiaP3YbYEmz44nOoe+4ZKL3xehrw0Zw1" +
"EgI5o8FlSqJreXAcAGcasSZCW6ppg6H+g/d7HTuSujo7IbBmFZ2xxx5PCfCY" +
"DmIWwRVLadSDREuYRuLhEoyMVobRdfIkDUneM84U7gWwj9TQldB+mxUcpt+7" +
"vbBb6riCe4lH1JkzsPvvb9GNnNgCRHB25lqkAJR0OLirixbmuGd7R3MTtBcX" +
"Q+OXX0D1ww+C5/y5UDRlLN1oCEO0oIlgKwRNBM2kXOJ2rV2nToFn8QJVZ7jR" +
"zZ3yMuFYYwN7+oRJmEZi4RKMjFaGgTrg8YA9e1T3x0Wn2eamxT0tEoWG5MrL" +
"6A4Tgqt1d73zNvsz1YTh0MvWXwP5KnVzGBnbWBMcqapib1lMwvEuXPSGaxnK" +
"7r2LbtGKMcswNIx74Tz255xOk9p+8dVXqB5I0pI2BJo3/8qePuESppE4uAQj" +
"o6VhoCoeuJfWEPGjRbDGWPXERvZnshS89ipae8TjYreU75Jl7E9U1amjRyF4" +
"yUXd18cWJgMRGq343ElwTIVZa2c6OuhueM1RFmqi2ZRtuJmOpbD5UxI0ox0b" +
"H1M8MrNSEqaRGLgEI6O1YWCh6mBmFmFMoKMKBJHDmh3uABgqrM0Zw2k3h5bC" +
"3dNwBphDRLel4LhSycVL4aSEXeXUUtmtN9FFfmqNMYUqPsG1l0GXRust5EqY" +
"hvZwCUZGa8NANX76Sa+NabAbp/ruO9ifxSzcohX3Hg/NssExBYycq7U6Ww+A" +
"d8Zk1eb3Gwnc6Kjilhvpdr+JUNF1V6u+VgZn/3nmTFdsAofaEqahLVyCkUmE" +
"YeAgsX/Jwu4PmS7AIq2MQ0VF7C9jVtHa1d2Dmrhngtq7svUlDL7omjRmwE+3" +
"xY2OKjc+xt4e1YWL+SruubNXLDM1oAtFc9NUXyiqtIRpaAeXYGQSYhhELfnb" +
"6VqM0IeH89bLb7+V/VnM2kNaLz1DduCufEotEIxVOGXUMSaF1kAHavdUQWqy" +
"Yvs/SBU+b3yXtJi1Zk4bAvu+/1a34xaRJExDG7gEI5Mow8CNakqvWE1roKGP" +
"z04+vqM7drA/jUmHSc3emjmi+5ju8ZnQVlHB/oyq6+hRWjM8unMnHPL7odVq" +
"gSPV1TQNd3JTohA4FAjQrT7V7hbRK9b0oTQsvGYirdfAymV0l0c2L0qCU3o9" +
"pmSo+9tf2RwYSsI01IdLMDKJMgwUrtB1ZQ7vrn1j8951/lz2ZzHpRGsrBBYv" +
"6B4/yE9JIjXA72hBcurIEWj67hsoufF6cM6eBsEJWWBPHwKW0efQbiwEZzhh" +
"mmtMKrhnTobS9dfQGjJu29mFJ5AxqInXackYNiC7p9xjU+FInJUAqcKps/5L" +
"LtLEnDGaQMXtG9gsGFLCNNSFSzAyiTQMVPEN13V/4HSVbGoSNH61if2ZdJEC" +
"veqh++lgKx4Tx0c8SxZCcNVyKCQ1fV9aMjUF7CYKt3o4lA/8N7pOBA2EFA6e" +
"7FEQuOgC2PXm63CoqirmQdy9335NV7qz5+rveKeNpzPj1NaJpn1QdOWaXrs8" +
"qgWNiHz5pWwWDC1hGurBJRiZRBvGiQMHwDsuvdeUR8+MyXFNw2z8+Sco7DE+" +
"gh84gq2OcAYhFTQ2hymZBjosu/kGOGAxS+62wt/Vv/M2uDOHxZUHI4EtKue8" +
"GeytUFyHq6shuGieqiu4Q2BIG/+i86CTvLf9TcI01IFLMDKJNgxUw8cf0dg+" +
"oY8yP2UQ1L71JvszScIYRRW330qPwX7sSoHmhuaD/fPBq9bCcYnbzqJpYLiL" +
"QNaIAWEaeJ+KVA7A1xoIgHdSTq+xMLXA68HoxG1xrlrXs4RpKA+XYGT0YBhY" +
"yHvOm9kdzRZrpp5ZU2lMoViEay4wPIgW3RJIaEW5N2c0NH7wPg1PIkW4f4c1" +
"fRh3vP4GPs+av7zCXr5iavV6wZmbptqCvJ7gO4lhPw76/Ww2+p2EaSgLl2Bk" +
"9GAYWPPGIISWHt1InrTBdLxAik4c2A81jz4ETvI38XY7yQHP50kfQrup2nfu" +
"ZLPHiXZPvf03ul2t1nnVCrwuL3keuP2pGsI9Vpzj0jUZ4EazQINvsZjpubXa" +
"PS+REqahHFyCkdGDYaBwm03/8iXdtUX8L26d2dnayv6UKvTRYlC7wAXzaQht" +
"9kPXGrrid0outFgtTG7Dq/7dd8DXI5RJf8OVMQyO7t7FXnbcqn78UbARs+25" +
"9a+a4Ln2fPap5PGq/iJhGsrAJRgZvRgGCgtaO2llhApQnLpYcutN7M+6dbi4" +
"GNy5abqbrurIGhE1IF5IjZu+AF/W71OL+wvY0stPG8Jeblw6cfQolFx/jeqr" +
"t0PgM8EYVDuff5bNyoCRMI344RKMjJ4MA1VEQ1CfrTnS/Q5MyWEX3h2wWcGe" +
"qd/BY+xuavr+WzbbYdX40Yf091r0xWsFnSE1Zzp7qbJ1vKUZgiuX0U2V2HOp" +
"AZ1SjWst7rubzcqAkzCN+OASjIzeDANnHLnHmnp1TRVdenGvdQ8HXU6w5/ae" +
"iqs3sHvKkjEc9psLe1xdeHXB2e4pK/l9fwkjgqZfcvMN7KXKUsuWzeCbPZWu" +
"h9Hi3uB7haHKsetL6KyEaciHSzAyejMMVP07f+9VkyxMI7X13zalOVa/G5x5" +
"mbrrhgoH3X0texS0SDANHJM55PPRloYWA7lq4yHPT+qkhb6ERlr36ss01IuW" +
"kX+tqUlQdedtmofG17uEaciDSzAyejSM4/v3g2fWlB57dJ9DV9aeOn4cPHNn" +
"GKpAxRqxOy8DDkucu99WWgr2MSmaFpBKg9fsSx8C+7dvYy9PsnBfCYw2i9v4" +
"ssdXE4xwXHzZJdCpwep0I0qYRuxwCUZGj4aBwn593As69CEXpA0B15xzDbmb" +
"He5jXrR6peQQGQdcThoaPRFThJUAu3QKRg+i4TrkCE3Tv3gBnfSwVcOWpCVl" +
"EO3+PNXRwWZJqIeEacQGl2Bk9GoYGKLav3Bu98ccWl3NfuRGwWFKhp0vPMde" +
"Zp/CQhO3NrWqvAe1GuCzcoxLh5NHjrCXFVXYHWkbm0ZbkVpet51UTorXXiYr" +
"zwNRwjSkwyUYGb0aBmrf5l/Bmz6UzpZiP3AjgpF528rL2cvsU7gGBbd71SJG" +
"kpLQfbwXzIGTMdTUcR1OybXr6O6LWk9mwC5PDE6JC0CFpEuYhjS4BCOjZ8NA" +
"FZNCRKtQH2qDLSTnrKnsJUYU7huCNV8s1Njj6RVryjlQtv5aSaFScKxiv8UM" +
"zoljaBeUlq0KBKMaYzj8zoMH2awJSZAwjehwCUZG74ax57tvwZuWrHlBEo54" +
"u8XwGrCrpeblF9nLjKiTR49Cxa03gcsgazXoYrdnnooaAr6jaR/UPLGRxmjC" +
"VdtaPmM8F+7IV7rucuiMIzKykDCNaHAJRkbPhoGhGLzzZuimkMxPTQb71Ly4" +
"TANxTR4LR+t3s5cbUac6O6HhvXdJjXhQ3OdXGzTFxi8+Zy+hl3CatHvWFChM" +
"GZSQ5+tKGwzlxISlTkQQiixhGn3DJRgZPRvG7s8+pTNXtKx59gX2ywcWzqVd" +
"F7Zx6XEV2uaUJKh9/S/s5UbXmTPQTApaR9bIhBSyUsF9rlsK8tncU3Vi+Pm7" +
"76Db8bJ/pwX4LuE7VXbTemEWCkuYRni4BCOjV8PAvvvggtm6MAtkO6nZ1/wW" +
"U2i/ywlWU7LsQhvNxnXuJDjZR2DFaGq128A+IZuOa+jl/vTEOiYVDpWU9Mpz" +
"14kTcMBcCC7SQsOZX+zfaMHZcB+DoPyu23vlTUg5CdPg4RKMjF4No2XrFt3s" +
"GUH7u8ea6L7eIe145kk6VZb9rVSwS2R//vYeVxyb2nfvgqJLltGw6uyxEwkW" +
"yt5zJ8KxxobuvB4qKoLy66+GQtKy0nq6bAgaopw8r7pXXupxF4XUkDCN3nAJ" +
"RkaPhoGza6pJLbAQF26F+fi1hHZhkEKunAlC13HwIPgWz5cdooSGQl+ysNcx" +
"Y1XHoUNQ+dADumpp4ErpkuUX0jEX7PIpvedOGqYeFy/KbZHFC94ba9oQaPjw" +
"A/JydbG3UUgFCdP4HS7ByOjRMI7t3QN2HcWLMpsGQycpnFk1mQtprCj291LB" +
"2UQYGyteYcwmHDdgj58IsLut6LqrYd9PP4IrV/sFeOFwZ42EPZ9/xt42IZUl" +
"TOMsXIKR0aNh7PvmK7rjHvvhJwIHDpDeexebxW7VPPc0OEjBH2uhiL93khZU" +
"+f33sIeMSSePHYNWjwfcs6Zy50gU21OTqRmy6VqDLS/H+Cw45Haxt01IIwnT" +
"EIahuoJXrNZNgEEnqZ2276pjs9gt7OAIXHIRMZbYu4Wwi8Y2aSx7SMlqyd8O" +
"xSuX0Qi37LG1gnb3EHPo2RpMVNdTCDrmRPLkXTgP2ior2dsmpLEGumlwCUZG" +
"d4Zx5gxYSCEdz7RVpbCQGmrFhpvhzKlTbC57qWPfXrCNSY25C422MjKGwX6n" +
"gz1kRLXX1NCIqjbSCtue4PuExh689iooTBuScKNAqFkQ8w6sXgkn29rYWyeU" +
"IA1k0+ASjIzeDKPpl58hkD4k5tq6GphJzf2A3cZmMaz2fPE5nYXDHiMa23Gj" +
"nmeeZA8XVhhye9df3wA7MRk9bLREDY8YRavXC+U3Xk8HttnfaA3G3SpZdzl7" +
"64R0oIFqGlyCkdGbYZTeeRstDNmCQGtwtk9g+RLokhhA7+Tx41B29RUxtzLw" +
"PEVrV7OH6yVc8Y7xlopXLAG/jqbRomF4ckbBsT2N0LZjB7jGJX4XRGyZOnLT" +
"6SrufaTyget5hPSjgWgaXIKR0Zth4D7QGFeILQi0xpyaBA2ffsJmL6JwrMOZ" +
"mxZTdF0sYAPzZkBHcxN7OCo0i53PPwOWzJG6mHHUEzoGkzWqu8uu/uOPwGNK" +
"jun61QBN20xaOzhzzLNwHuz5+sveN1UooRpopsElGBk9GUbH/hbwklpqogtF" +
"2g8+ITtq8LxwaiSFk8skPVgiFroOYjK4/wUr3CK0aO1lujDQcGBt3jpxTK88" +
"B65cQ2d/sb9NJOaUQTRKcEthAZ2kIJR4DSTT4BKMjJ4M44DbRSOISi1s1YD2" +
"y5PWxa5332Gz16fQWI7U7qTjC24MThjjDC975nBo3rql1zFxfYaHtLZwADeR" +
"9yMSaHa+VSt65Rv3lLCNy9CVyeH9w1aHN30IBC+9GA56vaKrSgcaKKbBJRgZ" +
"PRlG/Ref0a092Q9eS7Cgs0/MgTNd0uqiOMMJYxPZc9PBaUqWVVBixNaGHtFd" +
"W60Wajx6GNiOBA4wh1tHsmfTF2Ax6WMdTU/wXmK3niNrBFTccC0c9vvYrAtp" +
"rIFgGlyCkdGTYVQ//2zCZ9o4UwdB42efslnjdIC0CEpWLQdb5oi4w15gf3vt" +
"b3tkYJRXe/aomAfPtQYLX68pCer+/hZzZ86GdsGBfD1fAx0cJ/e5+s7boPPA" +
"AfYShDRUfzcNLsHI6MkwSjbcLKuGrhRY6FvHZ8OJ/fxWnWfOnKH7jO/fshl8" +
"582k4xTs38vFknIOVN17F7S6nBAcM1rXrYoQmEecscV2pYV0tHYnOHJGc3+n" +
"J/Aa8H0zZ42Cxk8+hlPk+QolRv3ZNLgEI6Mnwyi7/uqELkTDrqEdGx/jBruP" +
"1NXCblKTds+eRsOAYCGj5EwgrO165s2AAp1E55UKRso9umNHr3vVU7s+/oje" +
"L/bv9Abd6yRjKJSvuxwO+UQ3VaLUX02DSzAyejEMnD5aec062JrAbgw77uNQ" +
"VNSdpyOVlTRKLe6QZzPJG5+QCg6Ux9OtpTVYyG5PSYq6TqX0pvW0m0/vrSbM" +
"H67sx8i65aS1dzJMsEkh9dUfTYNLMDJ6MQzs9y5bszJhhoEFYPH119C8tBHT" +
"KLliNTgyR9AWj5EKcq2g3Xc4pfYMWn3fwn273VPG6WIxphTwunBMyjdzMhxy" +
"OdnLEdJA/c00uAQjoxfDONXeDiUrltCVz+xHrDa0dpmaBLWvvQrFV18B7vQh" +
"tJtIyW6n/gYWrJ5li+Hskr3Iavz8MyhMVW7MRwvooHjaYNj558fFFNwEqD+Z" +
"BpdgZPRiGKePHYPSi5cmxDBC2IlR4GZJeu8+0QO4PqTijg20KzGacCV48RVr" +
"dLXRk1TwOj2L5sHBGANECsWv/mIaXIKR0Yth4LqHiqvWJqxLCjFaYZZIcJbY" +
"rjdeYx9jn8J4UzYDTBcOB67dcOaMhtrf9nQX0k79wTS4BCOjF8NAVSV40Fsg" +
"HYcpGZp//IF9hBG1l/zemzbYkMaMecaFisWXXUzD2QtpJ6ObBpdgZPRkGDit" +
"NpFdUgJp4PgFblvbc0aZVJXdfAPYdBZrSipnZ1L9CTwzJsMhj5u9NCEVZWTT" +
"4BKMjK4M4/57Er7SWyANS246HN29i32EUYUxslwYb8vAFQPsorJnjYS6v77B" +
"Xp6QijKqaXAJRkZPhlHz2qvCMAwArkfxz58VdkW8FO397huwGmyRIgttZaUk" +
"QclVa+HkkSPsJQqpJCOaBpdgZPRkGLjhDa62Zj9Ogb5AUy8nBSVOhY5VuN4G" +
"w3AUpiVuH3IlwZlfwRVLaZReIW1kNNPgEoyMngzjSHk5uDOGGXJQdCCBLYyq" +
"B+9jH19UHaqshJJr14E1NSkhiyHzVWq94tRb78zJcNDvZy9ZSCUZyTS4BCOj" +
"J8PA+fqOvExDTr0cSBSkhI9S25dOk+eKe4W4xmfR/n/2eFpA43Utmgf5acrv" +
"Fx8KYugca4J933/LXr6QSjKKaXAJRkZPhoFyL1lomDASAxVz2lDYt2Uz++jC" +
"6kRLM/iXLyEmMyghrYoQGBG4+pEH6Tay9hR1Ylvh9eFmWI0ffsDeBiGVZATT" +
"4BKMjN4Mo+blF8GqUteBQBk8eRnQvnMn++h66fTJk1D/6Sdgzxmti73ILcQk" +
"Ku+8jeat+LqraTcS+xsloHu0Zw2H3W+9CV0ytvgVil16Nw0uwcjozTCwHxj3" +
"WUh0ASMID92WddaUvuMrnTkDR0pLoWzd2u6xCj08SzSMKmIYOOiOA9TumZPp" +
"gDX7OyXA68XQ75UP3kf3ZRdSX3o2DS7ByOjNME6TAsc+PkuMY+gUNAD/2svY" +
"x/a7urpo7dqdpq8tWqlh3HMnNQxU8/ZtYM0Yzv1OSXDGX8XtG+jYnJD60qtp" +
"cAlGRm+Ggap++EFwqNRlIJAP1pxxlfbu999jH1kvte/dQ2vwiRyzYMHWTu2z" +
"T/faHAv3OlF7AaGNnLfqoQeokQqpLz2aBpdgZPRoGAfsNrDrrIYqOGsYGPpd" +
"SkiQ+o8+BHNqsi66oxBqGM881cswukgh7p09TfXWrC8tGaofeai7dSOkrvRm" +
"GlyCkdGjYXQcOADuWVNUr/0JYoNumpQzOuqmSSEFVy7TzYw3ahhPP8lvv7tj" +
"B/jGpatuGg5TElRiOHjRPaWJ9GQaXIKR0aNhoDCUtAgToi/QwAPrLmcfVZ86" +
"1lAPwbEpumhloGHUkXeKNQzU3q+/1CTCQGFKEux49OGweRBSXnoxDS7ByOjV" +
"MFo9brBnj+I+OkFiwELflzYY9mz6gn1UEbXrrTfpugf2eFpjMSVDw9/+GrZ1" +
"dPrECSi74TrVZk31xEXu4a43X4euMPkQUl56MA0uwcjo1TBQJWsvE91SOgG7" +
"o2wZw6CztZV9TBGF02/dC+Yk/DmGDAM36gqn9l114J6Sy/2d0qDxluSMhD1f" +
"bWKzIKSSEm0aXIKR0bNhNH73LdhUWpUriA0ci/BceD50yeiD3/PjD2BNT2yw" +
"wfzRf4KGTz9hs9ZLLdu2git9iOqbeNEV4cR89333DZsFIZWUSNPgEoyMXg3j" +
"WGMDeKaN19XUzIGMlRh33Ssvhe3SiaYz5G+CCW4tbifnbvjiczZrnCoff1ST" +
"DZ7wvcbYUwfdLjYLQiopUabBJRgZPRoGmoX3vJl0S0z2QxMkhsL0YXDQ52Mf" +
"lWS1794F9swR3HG1oiA1Gfb+9CObrbByL5xHgwmyx1AaNFDvzClwTGz5qpkS" +
"YRpcgpHRm2G0N9SDd/4scOhgoFRwFqydB0ghGuv4Bava1/9CYzgloosR999o" +
"zt/OZims2kpLwU5q/1q0brFSVHTZJXD6+HE2G0IqSWvT4BKMjJ4MA2uh7ql5" +
"omWhM7aPPgeqn/wz+7hiFgbj81xwHt0Xmz2H2phJ62a/y8lmqU/VvfEanYqr" +
"hbnZUgdB8XVXsVkQUlFamgaXYGT0YhjHScvCM32C6guoBLGBBaYrawQcLilh" +
"H5ksHfJ5aXh0LWrvPbHkpMD+YJDNTkQFVi7X7H00kxb1bpz2K6SZtDINLsHI" +
"6MEw0CywG0qENdcf2JfvXXYh+8hkCVc5dx46BKXrr6GzlthzqYljfBYcrq5m" +
"sxRRp44eBXuu+qvAQzjR1Bx2NhtCKkoL0+ASjEyiDQO7obyzp6q2P4FAPqHF" +
"es0F+exji6iujg44sb8FDvn9sPf772Dnm69D3ZN/hvKb1kNg+YVgzctQfepq" +
"T7A14z13Ihzfu4fNalQd9HrAkjFckxYRHQSfNwNOHjnCZkNIRaltGlyCkUmk" +
"YRwjZuGaOEaTGSmC2KHbjs49l31sVLS1QEyhrbwcmn75GWqeexr8V18B/qWL" +
"wDtjEt04yZo+DMymwTTsRv5o5BzNaus9wcI+eP4cWYP22BVnGWPSLN9YcSoj" +
"xiqkrcKZBqKEaXAJRiZRhkEHuGdM7r9mgQWMRoWMWuCeFk19bMWKs9lKiZk4" +
"U5NoVyJOVMDB7M0j9bFhUk+2kXesbOVyOBXDTCT8be1LL0BR9kjueGqC9w83" +
"EBMrwbUXln2sYWBLY0ttbVymwSUYmUQYBrYsPOfN1GSBlNZgYYldC67pE8A+" +
"LoP7d6NAV3ZfMB+6TpxgH1+3AqRFgdeqN4NgwRZGyVVr2ez3KZxN5VuyEJym" +
"JFqAs8dTGzync0wqjaQrpI36amG8u317XGaBcAlGRmvDwJg9rql5/XKAGwtO" +
"JzFB7/lz4UhFBRRfeD6t3bK/MwKFuNDt26/Zx9dLuGudJUHrKmIBox6X3H4r" +
"m31Opzo6oPz+e8BB9yFP7PuJRlx+7TqaJyF1paZZIFyCkdHSMKhZTByjWX+w" +
"1njTBkMlKZhwH+dTx45B6UUXGNMwyPMJkrxL6cIxG6AVhWMnOzCsSQQd9vsh" +
"MAc3U9LP87KakmFfFNMWik9qmwXCJRgZrQwDzcIze5oqG+pglwMWCtaMYXS6" +
"phYzWnqCtUEnqZXiYq/QTge450HZmpWGMwy6DSsxvv02a6/n15d2PPMkOFP1" +
"HSASB91xtlY4dR49CnWv/wXcWSN0V5Gh79WEbOg8cIDNtpAC0sIsEC7ByGhh" +
"GNQs5kxXbcwCQ1eXbbgZ9lstUHz9NVBoGkKNSe1CDAd6sXAtuvRiaPV42MuG" +
"wNrVuiuEIoH3C6+p7N672EvpU7hJkiVd+4V4UsFrcpBndJC0IMJp17vvQGnG" +
"UNXfFTnQLk5ixmXrr2WzLRSntDILhEswMmobxtG6WtoNVajwQi38mLAw9mSP" +
"goaPPuzeL/l0Zyc1Dv/i+eBNH6y4cYTO605NAt+C2dCyZXOf8+bL7r5D8wVq" +
"8YDPyHnuJDhF7qFkYSTalct0OyaFz8uba4KOPgL8YaBLX+YwRd8RJcF82U3J" +
"sOfrL9msC8mUlmaBcAlGRk3DoGMWk8eqUsvGmrB90tiIM0kOWszgX7YYzClJ" +
"dPpuvIUCHgPjC3lmTYWmH74D6OpiT9lLNa+8ZJguKXxG2FI4XFzMXkZEYejy" +
"fd98BRadBovEbh3bhGw2273kXXpBQuJbSYUuPCQt9JNtbWzWhWKU1maBcAlG" +
"Ri3DOFZXB5655yoeSBALNnNqMpTeeL3kCJ8Yv6jyoQegePECsGWPpovJsBsL" +
"a9RYoIQD/81CzlOI6wyyRkJg/iwov/cuaCUmJFV7vvuWxghir0GPYD8/7qMu" +
"Z7+LozU1dAqxHrul8Fl6lixis9xLe774HJzkfWD/Vk+YyXuIW7sKyVcizALh" +
"EoyMGobRXlcL7nMngVXBMYtQ/3ph5kjY88nHpHIfuXYfTl3EYA4XFcG+n3+C" +
"xtdehfINN0PR6pXgWzwf3OfNBBepxXkvmE/T8N9qX3gWGkjtudXtgtPt7ezh" +
"ouqQzwfuDP12dyCYN5xCWrRymaRZUeGEazVwnYMeu9+w5VD9zJNslnvpWP1u" +
"GpxQj4YXgq7tmTKOhlwRil2JMguESzAyShsGmoUjL1PxFdw4YO5dMAfaa2vZ" +
"U8oTMRwc98BWCgaZw+Y+gv8b0+iYiAxT6qnOgwfBNSaVuxY9gQWRfUI2nCR5" +
"jUf1n34CVtJyY4+fSNAMcdX0vigbJ+E06JIbrlP8nVUaXFVfRyo6QrEpkWaB" +
"cAlGRknDQLPARXlYCLEvu1yw1oddSBV3bIDTp0OTVo0jK6kV6rUgwu49a+YI" +
"6GhuYrMds3BQ2amzNRl07+y0IXRgO5rqP/4ICkiBzB5DT9BxJtJiFWMZ0pVo" +
"s0C4BCOjlGHQMYs50xWdLYNdWq5JY6D+g/fZ0xlGxeuvVWXQP16oWWSNpIED" +
"Yx+1CC//Fat1ZY5YcbHkprHZDCtsuToxim6Y4+iF7mnPN9/AZl8ojPRgFgiX" +
"YGSUMAz82HA2lJIzTSzYr75qBZ2Wa2Sh2blN2uzcFgs46N/42adsduNSS2EB" +
"eNIG6+Za8X0suuZKyYboX7NK1+MYCN5b3NAKZyAK9S29mAXCJRiZeA2jfedO" +
"cIxTbpMZ/CBwoVX1Exslz4LSs6iZpg3hrjORYBTa3Z9+wmZVEdkm5+qmleFJ" +
"S4bdb73JZrFP7fnmK7BptC1rPGBsrPJ77mSzL/Sb9GQWCJdgZOIxDJxO6Tp3" +
"omIFBJ0CmZcJTT98z57K0LKOz1LMUOPh7JTkJNj93rtsFhVTzUsv0EWN7LkT" +
"Aa7CP+hxs1nsUzjRQe+zpUK4JmTT70+ot/RmFgiXYGTkGga+rO6ZkxUbs3Cn" +
"D4Hiyy+FI5WV7KkMLwxbolZYlFjAhXm4Kl5NdezdAxbSokp0oYvnt5HKx7Gm" +
"fWwWI6rykYcMsftjaF3GmThn8vUn6dEsEC7ByMgxDDQLnDobb7gPbPrjh41d" +
"ULv+8oqstQ5GUNN334DLlLiFYbSbjxhy4+efsVkLKwx2dzrCPhiRhGsyMFSI" +
"0gs2YwXXlpSuvQxOxfhOYRernkOFhMBWvWvWVDh57Bh7CQNSejULhEswMrEa" +
"BjULhbpY0HDsY03Qkr+dPU2/Em4YZc0elZBaN54T423h3hVS5ZyaB/6JOWA/" +
"dyJ4ll9I94hoePdtaN66BdrKyuDkgf10i1aErlXB1eE9VojXf/gBrQGzedES" +
"XERY++rLPa5KmjDKsGvBnLgrQ1pgJ/f4QAyRB/qr9GwWCJdgZGIxDIzb5Jk5" +
"Oe6Pia6tIC970drV0NHSzJ6m3wmDExZdskyV0O6RoLvmzZhMQ6PEInNu+tkV" +
"4DgtFUOkELDr0WNKgkD2SAjmpdN9rl1zzoUgqcVX3HMn1JEW4r4vN9GZUnVf" +
"f0UMcjSXHy3B7rd9xODkaNdbb9LCmD2m3sBWnO/ipWz2B5T0bhYIl2BkpBoG" +
"HbOYFt9OeaF55AVpQ+jsFYwsO1BU++LzNF4Te0/UgE69JIW7f9mFsqZfWvIy" +
"+2wN4bER7BJBQ6H/xZYiKWCdpJC2ZQyji8u2j9bmWvvCN2287MpIW2kpWDJH" +
"9nkP9ALmDzdZwhbsQJQRzALhEoyMFMOgweXGmuKeDYUFC8aYwm6NgaYDbhfY" +
"s0dx90RpsBDBcBg1jz4Mp2Vu7xnJMKQQz98qAc62C159BXtZkoX3LbhqhSLd" +
"rmqDrb+y++9hL6HfyyhmgXAJRiaaYRypqgLnxJy4wn1gAYJRX8vJRyx3MNXo" +
"wjUl/nkzVC1MaSjvrBFxT5uN1zASCbZ+bKQlt++Xn9nLkiQ6NnP6NJ0enJ/g" +
"VpJUPJPHwukBNPhtJLNAuAQjE8kw0CywRSB3BXeoH9yekwI1f3kFumSEzu5P" +
"qnj8UVXGMegU0tRBEFw0Dw5I3Fo1koxsGPRekPdNasXk5OHDcJi0eJu2bIa9" +
"H7wPVQ/eB0WXXQI2uhhV+WelNNQg0wbT/A8EGc0sEC7ByPRlGG3YshifFZdZ" +
"4FRS38J50FZS0vupD1BhGG2lw53TgHSkRl1x521wIs6IsyEZ2TAcKedA6d13" +
"dF8LbvCEwtUKGIn4UHEx7P38Myh/8H4ovXINeGdOAXtuOt3W14L7pJC/x65X" +
"I3RHhcAZYVX33d19zf1VRjQLhEswMuEM40h1NdjHpMTVDWUlNd6SW26E431s" +
"XzpQ5bv0YsVaGVioO3NG0wCCoGAkXyMbhi9jKBxmKih1f38L/OfNBGduGt19" +
"Eddo0Jl+BjKFSKC5BRbMhhMHDvS67v4ko5oFwiUYGdYwnrjxRnBNkR8PiPaj" +
"k0Js11/fYJ+5EFGrww4BUqjF08rAAqKAtCqKlixUJTyEUQ0DTcCzeAF7ObD7" +
"/ffAbxoEm8P8TX8An5UlcwQcCgbZS+8XMrJZIFyCkelpGMn/9I/wY8ZI2VNn" +
"sQvKv3wJHPR62Wcu9JvowrB5M2S1MtBkaMj38VlQi2NCuMmTCjKqYTjI+9f4" +
"ycfd3VAhYVeUOXt0XC1mvYNbAeNOlHK22NWzjG4WCJdgZEKGgWbx1fD/J2tR" +
"HhYuaBbVjz8KJw8dYp+5EKN9P3wPlhgXhtExIfI3/kuW0QWUasqIhoGtLtfk" +
"XGgPsyYBTRrHeORWhIwAfrcl11wJp3H1fT9RfzALhEswMmgYg4lZfE3MQk4N" +
"DLuubNmjYO83X7HPWyiM8IPe9+3XYI4h5DkW3u6c0dAY40ZSXR0dcKKtjRaY" +
"bK07koxoGPnEDCrv2NBnML6WgnzIT01cPC+1od8heW4Yy6s/qL+YBcIlGJk7" +
"16+H94f835hbFnRtBWkG+y88X7l9tvuxcH5/W1ERlF2xmkbmZe9nX2BBGFyz" +
"Ctrrd7OHjCxiELWvvASe3DQoveE62PvJx7SPu7O1lf0lJyMahi1jOOx32NlL" +
"6daJ/S104NtIs59iAVug3szh0FZRwV664dSfzALhEoxKgLxcP6QNi3nq7Nl9" +
"FZJh59NP0jhJQpF1tLoaqm67BWxZo6gxxzLgjYZRcfcdMbUQUPj7kuuvodNM" +
"8ZwYEdhMClX//Fk03Hrjp5/A8YZ69s+oLOMyDGUYOB5UtHpl1J31Kh68D7b3" +
"424pZ+og2P3uO+xlG0r9zSwQLsGI+MvLwZI9KubZUPhx+sZn0dk+sRZiA00Y" +
"K6v6yT/TghrnyrP3Uio4DbTo0oujFoi91NUFzjnTuWOhEWChaSGG7yDP30sM" +
"pPrpJ+i4SKgzx0Ker5EMA3cQlFKzPuj1gDV9KPf3/QWsGASvWstetmHUH80C" +
"4RKMhr+sDMzj0mMaswh1QRWvWAIdMW5KM9DUdfw4tG7fBvZJY+jGSbG0KMJB" +
"V8yTwsC3ZCFdmSxFuA8ETrWMVPDjcenCP3Jsb/oQsE3IgbJ77oTCLPVjXikF" +
"DmQHr13HXn6fss+cEvGeGBkaBHLKOPaSDaH+ahYIl2Ak0CwKyUsldYObUHgP" +
"7CPe8efH4dQAilkTq7DF1Wq1QPmVa8BKavBoyPGaRYjQc/BdcB5dMR5NR6uq" +
"wGFKklw44vGxtSn1vdADeG02YopH66SPoe16521wpQ5S7LnoCTqTjrQaO/a3" +
"sJeta/Vns0C4BKOA3VCFuekxFQoO8nFhPKlY91QYaDpWW0sjpFpJARbrBIJY" +
"wO4pz+xp0NHcxGahlxq//AJ86YP7ZcEYwpaaBDseeSimrlGs8Jiz9B+6XA74" +
"rJ2mZGiNYR/zRKu/mwXCJRgB2g1FCrNYuqHMpHAKrFmlWIyi/qqdzz8D1vRh" +
"Md3beKBdD+PSI5pG1eOP0gFv9m/7C3Sq8eSxcLR2J3vpUVV2xwZw9tN7g63Q" +
"epX3bVdKA8EsEC5B7/hKSqAwL0vyADcWSFhTrn3hOfYZC/0mXD3c8tOP4J0x" +
"mRbMWtbk8VzYSrTkpsEhv797sLqnPEsv0DRPWoMtrZrnnmEvW5IwGCZu9sQe" +
"sz+A324lqSzoXQPFLBAuQc/4SkuhYNJYyd1QGHrCt2A27Bd7Bfeppm1bIXDJ" +
"RbTQQRNORMEcGgi3E9OgwQcZmcek9ts1B3jPPXNnwCmZOzbi3hGeRfMkV6CM" +
"BJ0pFcMkgERoIJkFwiXoFR92Q+WkSIpbhIHZrCmD4IdFC+giJyFexxsbILB6" +
"JdiIUehlrwTsmrFmDIM9333bK5/OzOEJMTK1oQPdaYPj25b0zBmoe+M1OrWY" +
"Pb7RwUpC0arl7BXrRgPNLBAuQZeQZrc5a5TkfnUXKXTuzM7kdtwb8CKFC+6W" +
"V//6X8CRNVLy/dQSNAZcPd7wW991i7mQBuLrb4ZBZwGR66p99WXmIcWuQ4EA" +
"3XaYPYfRwYpfydKFNByM3jQQzQLhEvSGv6gIzBPHRG1ZYG0No1x+lTESJv3X" +
"/6UPTxjG78JxisZNX9BNdtwxTFGNB3xm2D/PpkcDC1OLKRnqP/4Iat98Peqz" +
"NyLY3eJfsVSReEm4qDJIjqXFM9USfA/8c6fTd1dPGqhmgXAJegLHLMzjs6KO" +
"WdDwHsQsPl04Hwb/+791P0BhGGfVsvlX8F14Pt13Qsn1FH2BBZc95RzwzJ8F" +
"wUsvhgIZpkEX4ZGWoo08f/bfjA7ef9xn5SBpGSil2r+9RTf6UvvZao13+gRJ" +
"McO00kA2C4RL0As4dRZX90YbzMN/945JAd+WzXBDmB33BrKw5ll56020n3xb" +
"lPuoFPg8sD+9+omNcPr0aTi6cyc4J2RzvxuonO2KSqKtJyWFXY0WA61ql4p3" +
"ah506mT3vYFuFgiXoAf8xcVQmBN9W1WsuTrOnwPFO3bQB8buuDfgDePECSie" +
"PVWT3dmwVYHPAxdGYpyjnqr/5GMaioX9m4EIhi4pv/3WXvdHkrq66CZTpzs6" +
"aBfNyYMHob2lBdpramgstOZffwH7uRO58xkdvRiGMIuzcAmJxh8MQiGOWfTR" +
"DYU1NKzF4sC2/f57ez0sYRi8cEe8aMYbL3RKbNZIqHnskT5DOZRhS0fjNR56" +
"A2fu4RTmSGu5T7a10ZlhbaWl0FJYAA3ff0f3Dql74TmovPsOKFl3OfiXLATH" +
"lHGkRTESguPSwJc1go5LsefrD+jBMIRZ/A6XkEjomMVYU59mgWCANgyE5//p" +
"J+5hCcPg5V+9Mmq3XjzgWIV3wZyoW9lirdi/eAE1DfYYAwF8Bu5ZU6PGziom" +
"huAcn0VnPeEYjtk0GCxpQ8CcmgRmcu/wOFgBCIEG3J9NGA3jxIH97G3STMIs" +
"esMlJAo/MQsLhs6OULjRnbgWzoPS+oawD0sYBq8SUrNXY9EbHrMwJQl2kFZF" +
"l8RFZ0crK8E2JrXfzeaRgn1MCm01RBM+r4Fqqix0ltScxM2SEmbBwyUkAl8g" +
"AObcvkOU04HU9KHgueO2iA9KGAavqqef6PO+yuGsUZwDvnkzoDl/O3u6qKr/" +
"4H1Sa+5/i8z6As3RkTkCGr//jr0VYbXr/fdo91J/bjVIBe+Bj7TK2utqz25u" +
"puF6DGEW4eEStIaOWUzI7nPqLJoF9tf6fv456oMShsGr/rNPabdRvAUQXRuB" +
"MZ8yhtGNlLCvXY5wn+qqe++i3Y7x5knvoLnayP1q+vEH9jb0qfbdu+hYB3us" +
"gcp2ci9c2AW9dBHU3Hc3jVx8bFcde9sUlTCLvuEStMT/2wrucAuz6Fx1UtC5" +
"li+Boto6SQ9KGAav5u3bwJ0W30ppWksmH66XtCqOlJfTGTvxCP/af/FSakDx" +
"5EvP0DAnpFW87/tv6Qp7qcL90n0Tc/rtfZED3ks034LRg2jr1DU2FQLk/dnz" +
"+Wcx3VspEmYRGS5BK3ykZWHJ7HvMAvdtdj/9ZEwPSRgGr4N+P3hJLVduAUQX" +
"4ZGCr+rRh9lDxyXsl8YpuGoOyCcSjNHV8OEH7GVLkveixXRyB3tMwVlCMyWx" +
"QmnNy4Ddr74MJw8dirsiI8wiOlyCFvi8XijMy+QKC3wRMJSEZWoeePNjf0jC" +
"MHhh/28gZ1TMazHQyHGsAvfJPqBStN+2sjJwGGzP7WiEuqF2v/8ee7mSVb3x" +
"MdqiY48t6A2WF/ie4q6DOKus9rln4GhNDXs7JUmYhTS4BLXxFRXRnfLYqbP4" +
"8AMZQ8Fx7VVQ0tAo6yEJw+CFq71tpCUntVA+a9p/AmvGcKh77VXVo/02//wT" +
"2EkBu1WFmVxaQ9cHjUmFli2b2cuMSS2ksiRmSkkH31kaSoaYLE5J3vn4ozGN" +
"sQmzkA6XoCa+4mIwh9nNDf+/gxQa3k8+jusBCcMIL3P2KK41F47QuJFn7rlw" +
"uKRE8f7hvrTnq03gTR/C5cdIoCFbclLgoNvFXl7Mwlqyb2wqdw6BNOhC0rxM" +
"WhmJJmEWscElqIXP5wsbojwfF+JNmwDFbnfcD0gYRng550zn7jsLjfabNgQq" +
"H7yP/XN19Zsp7frbX4lZGbMbBkOi4EyetooK5uLkCYPtuaaNl2TygvDQsTdT" +
"MlTcsQFOtDSzt5hKmEXscAlq4KdjFlm9ZkNhAWY1JYPnpvWyu6BYhGGEl+/i" +
"pVEX77kyh8Peb79m/1QTHdu7B0qvuVJWKPREg6uvcZOf9oZ69rJkC3fRK1mz" +
"KuzsQUFs4OSBwPxZ3K6bwizkwSUoDR2zyB7da8wCCy9r1kjwf/apog9HGEZ4" +
"lW64OWJtFZ+HfXwWHG9uYv9UdR2rqwPvrCk0PD2bL73jNCXDjo2PxdRfLkmk" +
"1VVFjjuQDAPLB5xmTfd37/G/cbKG3Bl+3cfGymnmCNj53NPk1p4RZhEHXIKS" +
"0M2P0ob26g7B7UBxE5/i0lLFH44wjPCqeflF8Kb2XSDTvZMvugA6cWqihjoc" +
"CIB7Yo7kAXm9gPnNT0mSPW1Wiho+/ojGkWLP3R+hWxSQ9w9nlu169x2oeekF" +
"KCGVHPcF88E/LQ8s5D7gO4r3PR7zMJNnlr92Nfzjf/tvwixkwiUohc/tBvMY" +
"U7dZ4EtRmJoMtquvVO3BCMMIr3pSsHnT+i588NlU3nU7XTSmlfYXFoAta1TE" +
"rjIsIPRmJnivfHOmwcFgkL0kRXXAbqMRgNnz90ewNVFx603sLaDC7VmPNTZA" +
"w2efQvH114Bv5mQoNA2hU74jvTt9gef6bMp4GPJ//lOYhQy4BCXAdRbmvMzu" +
"8A90kc24dPB8/rmqD0YYRnhhaApf+pA+a2eFqUlQ98Zr7J+pIuwSaHjn7zQC" +
"a+Rusj/R1qkexjVC8/1xI6qqe+7UJNx2+6468EzJ5fLSH8FCvHT9tZKCWHa2" +
"HoCmn3+CqrvvAFv2aHDK2G7YSszmq8zRkPaf/ynMIka4hHih3VC/7ZQXmqbp" +
"WDAHiqqrVX8wwjDC65DXA4GsEX0aBgZ2bIpz7YAUnSYtmKoH76NdDJE+cswn" +
"dsdgnureehPcxNAStU4D84IFmiM3Hfb+9CN0xbmaWLKIsbrmz4p4n/oLeH/L" +
"brhOkmGEdObkSTpZYscTG+m7EmtrAyskBdMmKDbhZqDAJcSDz+8HMyl8Qg/P" +
"SWpkjnvv0uyBCMMIr459e+n05b4KHw9pDbZhjCgVhbvF4RRHHCjuy7hC4AB4" +
"5WOPdP/trnfeBkcC+vPxfmH8osDK5WejpcoUFoSBK1ZTykgLpYoUcg1/f4uu" +
"P2ne/Cu0Oh3QVlJyNiprSzOcam+nhlFy0/qEGaWWyDGMnsL4Zt6F8+h709c7" +
"Hg7sAXHOn61Z+dQf4BJk43TSFdw0/DWG9xifBT6FZ0FFQxhGeOEsnsK0342c" +
"xTNrCnR1dLB/pphONDdBcN3l4MVd4frIA4JG4iStiSLy2279tk6j4aMP6cy6" +
"SN1YSoI1UM/UcVD/3ru0Gy1eleFMsN9m/oRmAmFIC29aMvgyhtHwLcFcE5RO" +
"yoHCzJFgIyaOCy7ZfPVH4jWMkHaT1qhj7O/jptHA9w2n3aJplDW3aFpWGRUu" +
"QQ7Ysigcm0anr2H3gX3lCiipqND8AQjDCK/TpMZq7SNmE340/jWr2D9RTFj7" +
"w3nwUqaIYo3Pt2A2dLS2soeh25riWIx9TKrqodHx+N4L5is2VoF5t8+exp2n" +
"J3g9CE4jxQIPjTHc8+qPKGUYeJ9b3S5wz5gsORIy/gbfTd8lF2leXhkRLiFW" +
"6OZHpPZKZ0GRJqH/macSduOFYYRX5/Hj4JozPWwBZCY1rB3PP8v+iSLqIC0L" +
"19Q8Sa0CbP24xmVE3ZXuRNM+cEzM6XP/FKXArijX+XPp/gunFRi38K9cTvcl" +
"Yc8jUM4wQrL98gt8nDGKth6kmAaST/Jg33BLwsouo8AlxAROnc0YTrugMHZL" +
"4IcfEnrDhWGE18kTJyCwchlXcOPH5DAlw77Nv7J/oog6SOHuGp/JfZzhMKcm" +
"Q/2777CHCCsMZe1fslD1GVRY83SZksAxfQI0fbkJOjEQo8xd34JrVwvD6AMl" +
"DaPnorxH/vjvMVUsPOlDwPv/t3fm31FV2R7v1/3T+xtaCZNARjIAYQYFFARE" +
"BAQUFbShRURwaNsBEdFWwAknaAVBpUWfQytCN2hLQmoeUlMqISEJEMKQBJkE" +
"mSH73X2g6HDOvVW3KjXcU9nftT7L5a665w6hzveeaZ8PV6e0DjM6QkA3djuY" +
"+mQrP6gMcD40Eyp27Ur5gybDUBcOOFc9No9NJ+R/JGXZna/sJZAAnVPKxZaN" +
"1tgJwvqRs25kq9GjEQ5CVz25kKWXUWs5xQu8PjRarEwcAwqgfukSOO71svUB" +
"0aj62afJMDSIl2HwK7j/9w9/gPd7ZOh+sWAZKHI6g89sTnldZlSEgB7YbCil" +
"ZWHL6QKuv68yzMMlw1AXLsirfXERWHF6apsfCPaX24cW81+Pm3DsJHj/PWF/" +
"sFhZuG4fxUwtWuE0XRyUxjUdegc6YwWNIzShAxcclk8cBwc3fc/6zfWo/o3l" +
"imFor7bvyMTDMHizCPHVli1gHzlUaF1rgS8f7oEFEGxqNky9ZiSEQEQ8HrbQ" +
"yzOoEHxOp6EeKhmGuvBteM/bbwiGgWtkAsoPNVHCCqBGaQWEyxPlyu4Euz94" +
"jz80KuG4h7N/fsJNgwf3X3COGAxNX38VcZX8vvXryDA0aK9haJlFaFFesHE/" +
"WxsWrqXbFjQNx/QphqrbjIIQCIfLZGJTG21TJxnyYZJhaKi1FQ5u+AwsWRnX" +
"fhT4xowz2nCNQ8J0+TLsXbGMpXHgf5QhsJV6qraWPzJqnWluutKayYx+5W+s" +
"4DNEk3IrpucYWAT7lNY23otaa6lpy2baFEmD9hhGJLMIUVGynf1b0/tvw6z8" +
"VtzrPjZkPZdKhIAW7h07wDF8oKG6oHjIMLR1aPMPbG1B2x+FTTGMU3V1/Ffj" +
"qoaP17AZKPwPEsHK1ja4b9yyvV46cwYa160Fd1FmwqfetiVkHGbsrirKgoq5" +
"s6GJWzl/1G4DC7UwVInVMNAs/keHWYRwLF/G9sjgz68Gy+DcLw8q9jWqltVR" +
"EQJquBSzsN86HPwG64LiIcPQ1uGyHbCjzWpprOT8g4rY3guJVNPmTWxgnf9B" +
"Ijilt1KpXC+dO8cfFruU1hSumsa1H+ZM/dMq4wW+waIxW5S3Wf+4W+HQl1+w" +
"yzq5axfbVZL/PhGbYThWfQDzR9+m2yxCOMaPFl6ctMBpubZ5D4ctr6MhBAQs" +
"FvBI8tDIMLR11H1lCnTox4DTDT13jY/LKuZwarGYWf8x/2NEsKtqn9IiSIRw" +
"L3NMkc26IXRWEInAqbTiHIox73plKZRqGGdHR49hYDcfzow7uPFzKBvWn6Xr" +
"3zjrgajMgrF1q+608TgpxJ/XFXxKa1Eop4MiBNpSUVcH3q/+T5qHRYahreNV" +
"VWDtk3Ptx4D96ZgIMNH7dp+sqWEL8vgfI1KW203YCS3eatn+M3jGjAALN+Cf" +
"LEIrt/F5J7u1IwvhDOPCsWNweEcpy05rL84Dd07GlUXCyjHr7p8RnVlcxTLr" +
"fnY8fx1q4N/MMbBQd9npjhCQGTIMbf3WuA9cQ/pdG/TDGT6Y/C7RLYwzTYfA" +
"c/NA4YeIuIcPgNNx3NpUS+d+OQx73nwd3IU9WcuKKm5jgYbBpzf/bfdu2L3y" +
"LfCOHXU1zf0fmfGG/nb4/+uvGkY0ZoEE9zWCQ6PVqwbu2e5OYQYLIyEEZIYM" +
"Q1tnD7eAb/Qt1wzDUdgLjric/NfirounTkHFhDHCjxCvw3P/PfzXEyZM7oGV" +
"EO7iZo0yqymRWNAwqp9cCLgU8pjbBd5Z94EFM0jgrDKNqbAhw4jWLEK4lizW" +
"vZAS/63YlZetwN6GmM6VTggBmSHD0BbORKqYdAfrz2d5mwYVwamGvfzXEiLv" +
"tElCBY1vbbgVZyq0d/UHbHEW5j7jr4tIPqxCVlqbzjEjwJPXVXeiSvtbb8Zc" +
"gVcePATmgp66//6YjcD17jsxny9dEAIyQ4ahrcvnzsHOmTOuGUZg8oSEpQTh" +
"hfs6tP1hYrcCDkYfcTr4ryZNuO1n3eLnwaJUGpgyhbqpUgt2N0UzFRq/W7lu" +
"bbsqcMfiRWEXlbaFjUMNoLEMISAzZBjhVTnvz8ww8B9/EPdQTvD4RUh1ry+7" +
"bqYSmoe5KIv/WtKFK+CP19RA5YJHwZ3XjRmp3gqLSC3xMAxfeTmU5evfc8Sh" +
"tDJ8HXwxnxCQGTKM8Ao+9Tgzi5LMTrD73ZX8xwnTwe//yRa1hSpjnOWC/dRG" +
"Em5jWz72VjBnJW+lOBE78TAMxD5tsuY4CQ92lZUNKW73OWVGCMgMGUZ41b2x" +
"AkpwNXJuV2jatpX/OGE6YrexLVbRMBBMpdG44TP+a4ZQ06bvwH/HaDZXn4zD" +
"uMTLMNzr1+nulsJ/u5j7zP3NN+0+r6wIAZkhwwivPWs/Yobh7JMFp3bv5j9O" +
"mNjspPwe11oYdsWwcKqrUYVZdnFvDhzopC4qYxIvw0AshZlC+VrgS4Rj/G1x" +
"Oa+MCAGZIcMIr4M/bGLJ+axD+vEfJVS41gOTVl5Jm6H84EYM5r9iPCnXXBpF" +
"sjoiucTTMKwPz2ZTe/lzaGHO6w44/sGX0xEQAjJDhhFeR91usOMGMbPu5z9K" +
"uMz9C9j4CQ4c1ix6lv/YkLKPGi5UFoQxiKdh4DYN2NXEn0ML3L7X/uYbcTm3" +
"bAgBmSHDCK9fq6vBX9ADalOw/qF8ykT2to7ZQn8p2c5/bEgFn1wIDp2Lu4jk" +
"Ek/DQMr65eneZIlNsZ18Z9zOLRNCQGbIMMIL1x5U9MuBIzYr/1HCVf3iCyz7" +
"p6mgJ/y2r4H/2JA68PVXLHkgX2FoEVpwRuMeiSfehmF/bJ7ubil88Snr3QP8" +
"lZVxO78sCAGZIcMIL1zt7R7WHy6eOcN/lHA1fLwW/DkZ4McFgydO8B8bUqcb" +
"9rKcW3rGMXYoxuKeNIGltMCKJx3XdOA96XkWySDehlG+ZQvbt50/jxaOnM7g" +
"+WJj/M4vCUJAZsgwIsv/8J/4UFLU8tOPEMjrCrv+9jL/kWGFK+Fx61e+suBh" +
"GU2Vyga7/C6fPs2mDHunTwaXcizuN44pSLAbwyiVrV7QIDCFC27J7CzOA9fE" +
"cWDKNcaeHtEYRmVzCwTttrDfraqvB/PViRn8udTA8zvnzglbZjoiBGSGDCOC" +
"WlvZhkapEE6txUr1wLdf8x8ZVhfPnoXycbfpy22kmML+b7667vgz+xth/+Yf" +
"oPalF8E36Q6wFvYCl2Ka2ALBCsdorRC8FjQ27DrEle+2vjmwc+5sOKAYIGYV" +
"RgN1jxgsHJcK9BhGZTAIztdXgHNwHzCNGRn2u4ht7K2694VnOyz2y4tYZroh" +
"BGSGDCOCFMPAnFKp0CWl8sU0DL9WVvIfGVa4aU/144+xnfv4CoMHd3Gre+sN" +
"vgim1suXWXcgdnEdK9kOdcteBd+dY9kbrSenMzMQrKSTbSB4Lpam5er5ffnd" +
"wTG4L+x6cREc3f4znDl4gP3d2so/c0ZSr1GLcIYRsFrB8cC9YCvKhFLlvvDe" +
"rH/+k+p322J/YqFSbuS/NYLPwIubK/l8EctNJ4SAzJBhGFetFy+C/6EHVDfJ" +
"MawUg21cv05XJYL7luMOf9HowqlTcNzjgd3vvws+5dk4bx4INsVEcOUxpvbG" +
"86IRsQpaZ/oKLUJlYEWL5eI5rHndwa2cMzB7FjR8+gmc3rOHmVs41b/3ju6V" +
"0YlEzTAqTWVgu2u8MO6E3w3o2c/iow+hNIp7QyPyr/0ocrlphBCQGTIM4+qy" +
"YhhNWzbzYcOr+cdtbByCryx4sHUQbOf+HpgK8tyRX+DXmhrWdVe74jWo+utT" +
"UKO8Hfun3Mm6g3DTKceAfNiRlSFcgxbYfeJUjq1d8CjsXLwIGpRKDvd4j2W1" +
"/THljdqacyXNC3+eZIImUPXJOlZZe77+CmxjRrI3frXuQ9z3wv9t5HQeTvxb" +
"53YVjtcCN+OyPTQzYrnphBCQGTIMgytJ2XHjqRPBINj6ZEccDMVsvMFJ41nX" +
"UyKEXYlY9vmjR1nXlmf6ZN17leObcM2SxXyRMcs2qEg4R7LBv4d93G1gGzmU" +
"JYzENRRqJoYx7PZz2+0RK/ZgVRVYirKEMrRgaUJwf3GVstIVISAzZBikeOvM" +
"oYPgvXVYZMNQ8I4cAmebm/giEqL6N68kkuSvQw2sTOOZDqZm6RL21q5WQScT" +
"NMxIfxe8Rn9RL6isr9dVsZuGFAtlaMFmx+X3gGBzi66y0wEhIDNkGKR4C9/s" +
"A9On6HqbtxfnwYmaGr6IhKj5Pz+BLbeL7krbmds1bgsmT+P+8HnddJ87leA1" +
"Bvr31l+h3zc9qvvCtP0+5W8ulJOmCAGZIcMgJULBvzyhyzCsBb3gsN3GH54Q" +
"XTh2DKw6s6xiBYgp5fd99ilfTMxyTxynOl5gNPAaS/rm6q7QrQsf050ihJWP" +
"g+9bt+ouX3aEgMyQYZASob0fr2HrLPjKggcHopu2/ps/PGHCSjtSl8y1a1Mq" +
"Qc+UiXwRMevgd9+CKycjqrfxVIAVunnMCN0VuuO9d9g0Y733heW7V72vu3zZ" +
"EQIyQ4ZBSoSaS0vAoaMLBivlxji+xUcSboiF2X8jXRfCBn/758P5I0f4YmLS" +
"mQP7wa6Uh7PD+HMZCWxhlM95SHeFXrHpezb7Sc8zZeUr37UuWay7fNkRAjJD" +
"hkFKhHCFs62wl1BZ8FiyOkGDUonjXuHJEM7gskeRHNGitICa45QpGNdr7Hrx" +
"BV1rVFIJzhArf/kl3RV6pc+nGIb+e0LD2LFgvu7yZUcIyAwZBilRsg4bELH7" +
"B1eE73rq8aQuTjQVZka8rhC46rkmjrm8cOtda/5NwnmMBO5zYVt/Zb2GHgIt" +
"h8GiY91NCGyNlDy+QHf5siMEZIYMg5Qo+WbPitj9gpVH4N6pcCmJ2YD9D97P" +
"prjy16IGrhqvvOduuHj6NF9MzPJMnqDbsFKBG9N3/OtfUVXojuI8+EmlLDWw" +
"y8s0f15U5cuMEJAZMgxSolT/7ko20yhS33b56Fvg3MmT/OEJ0/4vNoJdp2Fg" +
"xe4a0jdu02tRptWrwJoV+bmkArwmb2FPqHa5oqrQ3UOLdRsGPlP3w7OjKl9m" +
"hIDMkGGQEqHfGveBc0i/iC0MlsivMJNNeU2WTu/dywbk+WvRwpTdma3hiIdK" +
"S0vZ72xDYQ7ry+fPlWpYevacruCv3x1Vhe5STJ8vSwtsVZY++XhU5cuMEJAZ" +
"MgxSvHXh9GnwzZjG9oXgKwseNIwdmTeyVODJEtuz4+ZButcOYGtgL2bVbefA" +
"fMgskP5duoC7oKdwrlSDhmHqmwv+AwejqtC3jx/NBsv58tRg03YXPRdV+TIj" +
"BGSGDIMUV7W2wr7VH4BZZ6I/7ALx5XWFI2U7+JISJhxgr1rwqO43fDQW79S7" +
"4GI70ty3NQvkD7//PawaVAxWnV1jyQINwzFqWNSVuenBB3TfCz53x/JlUZ9D" +
"VoSAzJBhkOKpE14PlClmoXdQF6eYesaMYPtIJFMN69eBSef0WqxEy3K7wXml" +
"ZRKLeLMIseHLL8EysChit10ywSy9jrvviroyt85/JKoWhmfdx1GfQ1aEgMyQ" +
"YZDipbOHW8Be3FvXDmzYssA9GKofmcOOS7aOWMxg6a1/emt5Tmc4vP1nvpiI" +
"0jKLT0pKWIXp+PDvYMrUZ1zJgHVJDR8Iri+/gMDOnborddvCx3QbBpsZF+Wg" +
"uswIAZkhwyDFQ5fOn4fgtEm63pax9eHr3Q1qX30lqesv2gpbNO5h/YVr0wKn" +
"4VY9+zRfTFhFMosQtrGjhPOlElx7gnuSW/rmgPXOceBcugT8EXbJ8yx7VZdh" +
"4IuCs3d3COw/ELa8dEIIyAwZBikeqlv+Ghu85isIHjQUS25X2P+PDWzzo1Sq" +
"fNpk3bvy4XVblQpUr/SaBVJRXw+e3pHTqKQKlupdMZCyQUXgePopqLDZhHvw" +
"vr5cl2Hgy4JtQKFwfDojBGSGDIPUXh22mMFR0DPiuAXrH1cq3V9+/g9fREqE" +
"u/PpmcmFsMH5/Jt07a8ejVmEcK56H2xZkQ03VeD9M7PH1OR5XcHULw+cinl4" +
"t26FioOHwKe0FrGriT+OB483zZim+RzSESEgM2QYpPbozOEW1rUTbtyCjVco" +
"lYnv9pFwrLycLyJlwi1Xbdn6t07FCrHuvXf4Yq5TLGbh9XrBMftBXdl9jQA+" +
"L2x1YOXvzO0CZsU8EP57amDXnmftGs1nkY4IAZkhwyC1R55Jd7ANcfiKoS2Y" +
"7C8w6z6297aRhMkAywoiJ0gMgZVk+eQJfDHXFItZ2Ja9Bpb8HrpbOkZEz7gV" +
"gkYTKOoFVdXVms8jHRECMkOGQYpV1YsXgSnCtqMm5a25at7DbDGf0YRbw1r7" +
"ZAvXrAVLmzEgH04f2M8XFbVZVNbUgP32USz5In+edIWNhYwYovo80hkhIDNk" +
"GKRY1LxtK5hztLc7Zf3dOZ3ZOEGqB7fVhJW++7ZbdL8ds4R52Z1h54JH4fyv" +
"v15XVjRmEWw5DM7X/gZmpSxcj6D1/NIRHKPBsRr+maQ7QkBmyDBI0QqnpLqG" +
"FWum1sDK1d0vBw798D1/qCF08eRJKL9rPGsd8deuBo6/OIf0heat/4bW1uvt" +
"Lxqz8Hz3HVhHDWOtrkgTBNINvF9TbjfweTzCc0l3hIDMkGGQopV32iTNvanx" +
"jd05qA/8WlHBH2YI4biFd8qdmtffFsy+imYRmDEVflPJdRWNWdhn3qe0KvSv" +
"gE83cFKEfcpE4bl0BISAzJBhkKIRbnGKOYPUulLYHtgjh8CpvXv4wwwj/+xZ" +
"bKaO2vW3hRlf/k1Qq7F5kl6z8GzaBM7iPFZepHOqgQajt9vMyGC6GNfGz8kw" +
"ZIcMg6RXTf/aAi5MC85VYFipWbJuhJ0L56ckzYcetV68CLue+ytrWUSquC2Z" +
"N7L8VkftNr4YJj1m4a2qAsfcOeDM7RpzhY/TeMvyuoPprvFsJpqsrRO2WC+G" +
"hIbpghCQGTIMkh6drK8H56Ai1UrLkdMZ6lcsg8vtyOaaaNUuXRJ5nQOu5s7q" +
"BLUvLtKcAqzHLFyvK62wfrkxz4AKrVsxD+sPXlMZK7fs6afAbuCFfVpgtx4u" +
"9PNs2UKGkQ6QYZAi6eLZs+CfdZ/Q74/mUapUbI2ffsIfYijVr3wLnIqp8ZUZ" +
"fy/+4jxo+XEbf/g16TELywMz2LoTvny9hMzCNXMGVLUcvq6Stb/wPBsw548x" +
"MuxeFjzaYc0CEQIyQ4ZBiqQ9q95X3hKvn0KLacntfXOh2SBpPtR0WaHhw9VQ" +
"nqu9mju0gVPF9ClhN3HSYxZI6dBi3fts8OAYkK0oE7wr39auYDEFR25XzRlq" +
"RoLl3+pgeaPUEAIyQ4ZBCqemLZvB1GYzJKx4sUIsH3cbHAsE+K8bSpjgEBMd" +
"apkFjhFY83vCnnfeDtudptcsEO/NA4Xz6AEH4i0TxoJfR9pvt9IKcgwsZGMt" +
"WvdmBCx53aF829aI95PuCAGZIcMgaenX2lqw9cm+Nm6B/dGYP8g/fTKcT+Ie" +
"3LEI80Thm7jamAuCpuceMwJOKfeIU221FI1ZIL5BRVFV4jjd1JbVCfwvv6Ra" +
"nhaB3bvBMmmC5oy1VILXg/fkfu/dqO4pXRECMkOGQVLThZMnIThjKhujCFUE" +
"uOFR1fxH+K8aTicqKsCUnaGZEBF32tv52Dy4dOYMf+h1itYscMzB0y9XdwXO" +
"zKK4N/h++lG1PD24X3iOrRqPdSZWIsAV3dbnnon5ntINISAzZBgkNe1+6w02" +
"ToEVAL6lm5W39YbVH/BfM5yOOh1gzuum2sePs5a8w4pZV1UkRWsWSHBvA7jz" +
"ewjn5cHKHRfxuWfOgGDjfs3y9BJQWlOWieOYEeJ96zWseHMlHUwXcK5Y3u57" +
"SieEgMyQYZB4NZeWgKt3d1YJsAytfbLh0Pf/NGROqLY67vGAvX++0LJg6wCU" +
"yrTyT7Pgt927+cMExWIWiG/nzoizsbArrKz3TeD+9JOwZcWCZ8NnYBpYBO7s" +
"jJgXCsZCaFzLlNcdfB10cV44hIDMkGGQ2urMoYPgKspiFQEbFC7uDb/V1Rne" +
"LM4c2A/OwX1Vu2Zwu9F9az6E1kuX+MMExWoWiAcz0IZZe4HX5hjaD4IJTu/t" +
"XPMRmAszde2AFw9wwN4xfjRUKv9O+GshyDBIaapLZ8+C586xrGLD7ijvuFs1" +
"F7AZSTgW4bz1ZqGCxJaGe3h/OObz8Yeoqj1mgezcujWsYeD0XbtSmfPHJQrr" +
"0iVgH1jIDBOfhdYEgFjAfyO497dVeblwvfpK0u5JRoSAzJBhkFCXW1uh5pWl" +
"YMrsBBalgqmYOwfOHz3Kf81wOnfkCDM5NAvsGkGwcsRU5HXPPwPnjx/nD1FV" +
"e80Cqfx0PTMMra4gW98cCNTW6i4vXri/2Aj2h2ay1uJ2lbGdSITuB7udrIrp" +
"4YQC24gh4Fi+DCr2NiT9fmRDCMgMGQYJdbhkO5tt4+/dDfa89QZcOn+e/4rh" +
"dE4xg8C0ydctlMNppo5+uWz9SLjpsm0VD7NAfO+sBIdGC4N1Rz3y56jKizdB" +
"xawchZmahtbWIHBVP67SRiP25nYBZ2EvKBs+ENx/exkCTicEDzWl9F5kQgjI" +
"DBkGCddUYNeCLbcrHPz2G/5jQwoNrXLubDbVN1TR4QC9b/pkuMBtcBRO8TIL" +
"xLF4kWqXFFbAjpwuUKFjUV4iCTa3gCOvW0TDwBZa2cih4F6yGAKrV4HPbk/p" +
"dcuOEJAZMoyOrUvKW3j57SPB1ScLWrb/zH9sSF04dw6qn3oCXNmdrs7QuYHt" +
"i737zRVRDc7H0ywQy2PzVA0DW0DmCWNjKjOe+Pc2COM8ariybgRbAmZxdVSE" +
"gMyQYXRcYeVa95cnIDhhDJzw+/mPDavKhfPBlp3BzMKp/Dc45U44YjHzXwur" +
"eJsFUnrvVDZjqG3li9eIebh8ihnz3082VXabLsNw53QG95dfpPx60wUhIDNk" +
"GB1Xjf/YAMF5D8P5Eyf4jwyr2mWvsjTlOOPHmp0BdS+9yMYyolEizAJx3TFa" +
"6O7BbjLTzYPaVW688G/8PGIqEfzMndcN/Nu2GeKa0wEhIDNkGB1TZ1uaoXbF" +
"aywFiAzCAezGDZ+B+eoU0bLePaAphj3DE2UWiHvUMJZvq20F7MjOAO/a5E2l" +
"DYfrnZW6DMNT0BOqnQ5DXHM6IARkhgyjY+p04z62z4Us2v/FRnDldGaD3GyP" +
"beX6o1UizQLBNQ9tK2OWUqUoGyoSvFBPL6bnnom4PS1esymnC1Tt2mWIa04H" +
"hIDMkGGQjK6GT9aDXTELS243aPx4TcSkgWpKtFkg1sLM6ypfbAlZ586JW/nt" +
"xfbwbNUcW21hizaV1pt/X6Nhrlt2hIDMkGGQjKymzZvYPuLltwyG4zHuv5EM" +
"s0DMypt528oXFw96vv8+rudoD57pU4QuMx6WGLF/AQQOHjLMdcuOEJAZMgyS" +
"UYUGgYvwMKV6NNNl2ypZZoG0TXrIEh4OHxj3c7QH6+gRYbujQoZhV8yZP5aI" +
"HSEgM2QYJCPqmMsJ7gm3w8GNn/Mf6VYyzaKmvv7aIkKslHFwufz99+J+nvaA" +
"mWx5g+BBw3Aqz50/logdISAzZBgkownXVNS+/BKc3LWL/0i3kmkWyE5TGdiz" +
"r6wNwdYFLiTkv5NqSvN7CgbBw1KCPDDDcNcuM0JAZsgwSEbShePH4YjVAtAa" +
"aydU8s0CCWzeDPasKyvPcaW0ffmyhJ0rFmoU87UW6DCMXjeA7dG5hrp22REC" +
"MkOGQUonpcIsENwQCbcmxUrXktfNcHtDBOx25bqubIoVDlPmjeBa9Kyhrl12" +
"hIDMkGGQ0kWpMgvEvvJttsbBhNlyZz+Y8PNFi+c/P7FtdnmD4MFtXv0rjNU6" +
"kh0hIDNkGKR0UCrNAil77dUrhpHdGXybNiXlnNHg2Pi5YgYZgkG0BafcunK7" +
"QPDjNYa7fpkRAjJDhkGSXak2C8T1xIIrU2lHDIFgU3PSzqsHXyAA1gEFYTdP" +
"ws9wzwvXqvcNde3pgBCQGTIMkswyglkg7tkPsimptiWLk3reSHg9HrbTHu7P" +
"zpsEDtCz5IhKq8j54P2AGyzxxxPtRwjIDBkGSVYZxSwQ69RJYMFNkgyUg8n1" +
"4zaw9clm+3GoLdjDLjTL4L7gM9Bq9HRECMgMGQZJRhnJLBDzyKFgu3dqSs6t" +
"hlt5DrgWBLvJeKPAlhDu2+5+6gnDXG86IwRkhgyDJJuMZhaI45ZBUGG1puz8" +
"bfGXloC5MFNINIjmsaPXjeAYMQQCBtjQqaMgBGSGDIMkk4xoFohl/iMpPX8I" +
"/6efgLeo13Vmgd1RlswbwJzfE2wvv2SI6+xICAGZIcMgySKjmkXNgQNQ5XKl" +
"9BoQ76oP2AB221YFTpV1ZncC+z13Q6CyMuXX2BERAjJDhkGSQUY1C6Pg/nC1" +
"YBYsTQOj+LoAAAJuSURBVElBD3AbLAliR0MIyAwZBsnoIrMIj3vtGnDn/XcV" +
"N9vCNqsTOKdNhqr6enpGKUYIyAwZBsnIIrMIj/OVpWC/unETtihwqqxtSD9w" +
"bvycno9BEAIyQ4ZBMqrILMJje+6vYMrsdG2qrC07A9x/eZKejcEQAjJDhkEy" +
"osgswmNfsRysWZ3YVNmSXjeAY2gxBEu207MxIEJAZsgwSEYTmUV4LIueA4di" +
"FuZefwRT75vA+fwz9FwMjBCQGTIMkpFEZhGesrlzWKoPZ3YGOKZOAp8BpvMS" +
"4RECMsMbRsg0CCLZDBs2TPi3SGbxXzyz7lNaFTeAO/8mwDUX/OeEMRECMqNm" +
"GARhFMgsrvLQA+DKyQBMclhVXU3PRCKEgMyQYRBGhcwCfhfY1wi+uyeCszgP" +
"XGtpYyMZEQIyQ4ZBGBEyC/hdcG8DOEcMBv+TC6Gy5XCHfx6yIgRkBn+YaBoE" +
"YRTILBSzUAzCPXcO4F7c/GeEXAgBgiCIeOJfvw6CjfvJLNIAIUAQBEEQaggB" +
"giAIglBDCBAEQRCEGkKAIAiCINQQAgRBEAShhhAgCIIgCDWEAEEQBEGoIQQI" +
"giAIQg0hQBAEQRBqCAGCIAiCUEMIEARBEIQaQoAgCIIg1BACBEEQBKGGECAI" +
"giAINYQAQRAEQaghBAiCIAhCDSFAEARBEGoIAYIgCIJQQwgQBEEQhBpCgCAI" +
"giDUEAIEQRAEoYYQIAiCIAg1hABBEARBqCEECIIgCEINIUAQBEEQaggBgiAI" +
"glBDCBAEQRCEGkKAIAiCINQQAgRBEAShhhAgCIIgCDWEAEEQBEGoIQQIgiAI" +
"Qo3/ByN6Uaz4wUyFAAAAAElFTkSuQmCC")
OK_BUTTON = ("data:image/png;base64," +
"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" +
"gg==")
# Original file: KarelFrameViewer.py
"""
This file creates a stack frame viewer for Python Karel programs.
"""
class KarelFrameViewer(GCompound):
"""
This class acts as a view for the model/controller combination
supported by the KarelVM class.
"""
def __init__(self, width, height):
"""Creates a new KarelFrameViewer object."""
GCompound.__init__(self)
self._width = width
self._height = height
self._frame_dx = KarelFrameViewer.DEFAULT_FRAME_DX
self._frame_dy = KarelFrameViewer.DEFAULT_FRAME_DY
self._frame_width = KarelFrameViewer.DEFAULT_FRAME_WIDTH
self._frame_height = KarelFrameViewer.DEFAULT_FRAME_HEIGHT
self._frame_stack = [ ]
self._last_frame_displayed = None
def push_function(self, code, baseline, width=None, height=None):
"""Pushes a frame containing code whose first line is baseline."""
if width is None:
width = self._frame_width
if height is None:
height = self._frame_height
self.push_frame(CodeFrame(code, baseline, width, height))
def push_frame(self, frame):
"""Pushes a frame onto the stack but doesn't display it."""
x = len(self._frame_stack) * self._frame_dx
y = len(self._frame_stack) * self._frame_dy
frame.set_location(x, y)
self._frame_stack.append(frame)
def pop_frame(self):
"""Pops a frame from the stack."""
if len(self._frame_stack) > 0:
frame = self._frame_stack.pop()
def clear(self):
"""Clears all frames from the display."""
self.clear_highlight()
self.remove_all()
self._frame_stack.clear()
def update_frames(self):
if self.get_current_frame() != self._last_frame_displayed:
self.clear_highlight()
self.remove_all()
frame = None
for frame in self._frame_stack:
self.add(frame)
self._last_frame_displayed = frame
def set_frame_size(self, width, height):
self._frame_width = width
self._frame_height = height
def get_frame_width(self):
return self._frame_width
def get_frame_height(self):
return self._frame_height
def get_current_frame(self):
if len(self._frame_stack) == 0:
return None
else:
return self._frame_stack[-1]
def set_highlight(self, line):
cf = self.get_current_frame()
if cf is not None:
cf.set_highlight(line - cf.get_baseline() + 1)
def clear_highlight(self):
cf = self.get_current_frame()
if cf is not None:
cf.clear_highlight()
# Constants
VISIBLE_TYPES = {
Scanner.WORD,
Scanner.NUMBER,
Scanner.STRING,
Scanner.OPERATOR,
Scanner.COMMENT
}
KEYWORDS = { "def", "if", "else", "while", "for", "in", "range" }
DEFAULT_FONT_FAMILY = "'Monaco','Monospace'"
DEFAULT_POINTSIZE = 18
DEFAULT_SPACING = 21
DEFAULT_FRAME_LEFT_MARGIN = 6
DEFAULT_FRAME_TOP_MARGIN = 18
DEFAULT_FRAME_DX = 10
DEFAULT_FRAME_DY = 20
DEFAULT_FRAME_WIDTH = 400
DEFAULT_FRAME_HEIGHT = 300
DEFAULT_VIEW_LEFT_MARGIN = 6
DEFAULT_VIEW_TOP_MARGIN = 6
STRLIT_COLOR = "#006600"
COMMENT_COLOR = "#009999"
KEYWORD_COLOR = "#CC6600"
BUILTIN_COLOR = "#993399"
ERROR_COLOR = "#FF0000"
CODE_COLOR = "Black"
DOCSTRING_COLOR = STRLIT_COLOR
STRING_COLOR = STRLIT_COLOR
NUMBER_COLOR = CODE_COLOR
class CodeFrame(GCompound):
"""
This class implements one frame in the frame stack.
"""
def __init__(self, code, baseline, width, height):
GCompound.__init__(self)
self._code = code
self._baseline = baseline
frame = GRect(width, height)
frame.set_filled(True)
frame.set_fill_color("White")
self.add(frame)
self._gci = CodeImage()
self._gci.set_code(code)
self.add(self._gci)
self._highlight = None
def get_code(self):
"""Returns the code for this frame."""
return self._code
def get_code_image(self):
"""Returns the CodeImage object for the frame."""
return self._gci
def get_baseline(self):
"""Returns the baseline for this frame in the source code."""
return self._baseline
def set_highlight(self, line):
if self._highlight is not None:
self.remove(self._highlight)
self._highlight = self._gci.create_highlight_box(line)
self.add(self._highlight)
def clear_highlight(self):
if self._highlight is not None:
self.remove(self._highlight)
class CodeImage(GCompound):
def __init__(self):
GCompound.__init__(self)
self._family = KarelFrameViewer.DEFAULT_FONT_FAMILY
self._pointsize = KarelFrameViewer.DEFAULT_POINTSIZE
self._spacing = KarelFrameViewer.DEFAULT_SPACING
self._left_margin = KarelFrameViewer.DEFAULT_FRAME_LEFT_MARGIN
self._top_margin = KarelFrameViewer.DEFAULT_FRAME_TOP_MARGIN
def set_code(self, code):
if not isinstance(code, str):
code = "\n".join(code) + "\n"
self._nlines = code.count("\n")
self._font = "bold " + str(self._pointsize) + "px " + self._family
self._ufont = "bold " + str(self._pointsize) + "px " + "'Monaco'"
self._linemap = { }
space = GLabel(" ")
space.set_font(self._font)
self._cwidth = space.get_width()
scanner = Scanner(code)
prev = -1
while scanner.has_more_tokens():
token = scanner.next_token()
ttype = scanner.get_token_type(token)
if ttype == Scanner.STRING:
color = KarelFrameViewer.STRING_COLOR
elif ttype == Scanner.NUMBER:
color = KarelFrameViewer.NUMBER_COLOR
elif str(token) in KarelFrameViewer.KEYWORDS:
color = KarelFrameViewer.KEYWORD_COLOR
else:
color = KarelFrameViewer.CODE_COLOR
if ttype in KarelFrameViewer.VISIBLE_TYPES:
row,col = token.get_start()
x = self._left_margin + col * self._cwidth
y = self._top_margin + (row - 1) * self._spacing
if row != prev:
if prev != -1:
self._linemap[prev] = (start,end)
start = x
prev = row
lines = str(token).split("\n")
for i in range(len(lines)):
x = self.add_token(lines[i], color, x, y)
if i == len(lines) - 1:
end = x
else:
x = self._left_margin
y += self._spacing
if prev != -1:
self._linemap[prev] = (start,end)
def add_token(self, token, color, x, y):
parts = str(token).split("_")
for i in range(len(parts)):
if i > 0:
label = GLabel("_")
label.set_font(self._ufont)
label.set_color(color)
self.add(label, x, y)
x += label.get_width()
label = GLabel(parts[i])
label.set_font(self._font)
label.set_color(color)
self.add(label, x, y)
x += label.get_width()
return x
def create_highlight_box(self, linenum):
linenum = min(self._nlines, linenum)
if linenum in self._linemap:
start,end = self._linemap[linenum]
x = start - 2
w = end - start + 4
else:
x = self._left_margin
w = 5
y = self._top_margin + (linenum - 2) * self._spacing + 4
h = self._spacing
box = GRect(x, y, w, h)
box.set_color("Red");
box.set_line_width(2)
return box
# Test program
# Original file: KarelParser.py
"""
This abstract class defines a Karel parser using Python syntax.
"""
TRACE_TOKENS = False
class KarelParser(Parser):
def __init__(self):
Parser.__init__(self)
self.init_parser()
self._statement_stack = [ ]
def next_token(self):
trace = TRACE_TOKENS and len(self._scanner._saved_tokens) == 0
token = Parser.next_token(self)
ttype = self.get_token_type(token)
while ttype in { Scanner.NL, Scanner.COMMENT }:
token = Parser.next_token(self)
ttype = self.get_token_type(token)
if trace:
print(token)
return token
def init_parser(self):
self._block_operator = KarelBlockOperator()
self._statement_operator = KarelStatementOperator()
self._def_keyword = KarelDefKeyword()
self.define_operators()
self.define_statement_forms()
def create_token_scanner(self):
return Scanner()
def define_operators(self):
LEFT = Operator.LEFT
RIGHT = Operator.RIGHT
self.define_operator("(", KarelParenOperator(), 0, 110, RIGHT)
self.define_prefix_operator("not", KarelNotOperator(), 100)
self.define_infix_operator("and", KarelAndOperator(), 30, LEFT)
self.define_infix_operator("or", KarelOrOperator(), 20, LEFT)
self.define_prefix_operator("corner_color_is",
KarelCornerColorIsOperator(), 110)
self.define_prefix_operator("random", KarelRandomOperator(), 110)
def read_module(self):
module = self.create_module()
while True:
token = self.next_token()
ttype = self.get_token_type(token)
while ttype == Scanner.STRING:
self.verify_token("")
token = self.next_token()
ttype = self.get_token_type(token)
if ttype == Scanner.EOF:
break
if token == "import":
token = self.next_token()
self.verify_token("")
module.add_entry("import", Identifier.create(str(token)))
elif token == "def":
self.save_token(token)
module.add_entry("function", self.read_function())
else:
raise SyntaxError("Unexpected token: " + str(token))
return module
def read_function(self):
token = self.next_token()
start,_ = token.get_start()
if token == "def":
fn = self.read_function_entry()
token = self.next_token()
self.save_token(token)
end,_ = token.get_start()
fn.set_bounds(start, end)
return fn
else:
raise SyntaxError("Illegal top-level definition")
def read_function_entry(self):
name = str(self.next_token())
self.verify_token("(")
self.verify_token(")")
self.verify_token(":")
self.verify_token("")
body = self.read_code_block()
token = self.next_token()
pos = Constant.create(Value.create_integer(0)) # // Update pos later
self.save_token(token)
fn = Compound.create(self._def_keyword,
Identifier.create(name),
[ ], [ ], body, pos)
return fn
def define_statement_forms(self):
self.define_statement_form("if", KarelIfStatement())
self.define_statement_form("for", KarelForStatement())
self.define_statement_form("while", KarelWhileStatement())
self.define_statement_form("paint_corner",
KarelPaintCornerStatement())
self.define_statement_form("set_paint_color",
KarelSetPaintColorStatement())
def read_statement(self):
token = self.next_token()
ttype = self.get_token_type(token)
while ttype == Scanner.STRING:
self.verify_token("")
token = self.next_token()
ttype = self.get_token_type(token)
if ttype == Scanner.EOF:
raise SyntaxError("Unexpected end of input")
self.save_token(token)
start,_ = token.get_start()
pos = Constant.create(Value.create_integer(start))
op = self.get_operator(token)
if op is None or not op.is_statement():
token = self.next_token()
exp = Compound.create(Identifier.create(token))
self.verify_token("(")
self.verify_token(")")
self.verify_token("")
return Compound.create(self._statement_operator, pos, exp)
self.next_token()
return Compound.create(self._statement_operator, pos,
op.prefix_action(self))
def read_code_block(self):
statements = [ ]
token = self.next_token()
ttype = self.get_token_type(token)
while ttype == Scanner.STRING:
self.verify_token("")
token = self.next_token()
ttype = self.get_token_type(token)
self.save_token(token)
self.verify_token("")
token = self.next_token()
ttype = self.get_token_type(token)
while ttype == Scanner.STRING:
self.verify_token("")
token = self.next_token()
ttype = self.get_token_type(token)
if ttype != Scanner.DEDENT:
self.save_token(token)
while True:
statements.append(self.read_statement())
token = self.next_token()
ttype = self.get_token_type(token)
while ttype == Scanner.STRING:
token = self.next_token()
ttype = self.get_token_type(token)
if ttype == Scanner.DEDENT:
break
self.save_token(token)
return Compound.create(self._block_operator, *statements)
def compile_function(self, fn):
args = fn.get_args()
body = args[3]
cv = CodeVector()
self.compile(body, cv)
if len(args) == 5:
cv.add_instruction(SVMOp.STMT,
args[4].get_value().get_integer_value())
cv.add_instruction(SVMOp.RETURN, 0)
return cv
def compile(self, exp, cv):
type = exp.get_type()
if type == Expression.CONSTANT:
self.compile_constant(exp.get_value(), cv)
elif type == Expression.IDENTIFIER:
self.compile_identifier(exp.get_name(), cv)
elif type == Expression.COMPOUND:
self.compile_compound(exp, cv)
def compile_constant(self, value, cv):
type = value.get_type()
if type == Value.DOUBLE:
cv.add_instruction(SVMOp.PUSHNUM,
cv.string_ref(str(value.get_value())))
elif type == Value.INTEGER:
n = value.get_value()
if (n & 0xFFFFFF) == n:
cv.add_instruction(SVMOp.PUSHINT, n)
else:
cv.add_instruction(SVMOp.PUSHNUM, cv.string_ref(str(n)))
elif type == Value.STRING:
s = value.get_string_value()
cv.add_instruction(SVMOp.PUSHSTR, cv.string_ref(s))
else:
raise SyntaxError("Illegal value: " + str(value))
def compile_identifier(self, name, cv):
cv.add_instruction(SVMOp.PUSHVAR, cv.string_ref(name))
def compile_compound(self, exp, cv):
fn = exp.get_function()
type = fn.get_type()
if type == Expression.OPERATOR:
fn.compile(self, exp.get_args(), cv)
else:
self.compile_call(str(fn), cv)
def compile_call(self, name, cv):
tag = cv.new_label()
cv.add_instruction(SVMOp.PUSHSTR, cv.string_ref(name))
cv.add_instruction(SVMOp.CALLM, cv.string_ref("Global.is_defined"))
cv.add_instruction(SVMOp.JUMPT, cv.label_ref(tag))
cv.add_instruction(SVMOp.PUSHSTR,
cv.string_ref("Function " + name + " is undefined"))
cv.add_instruction(SVMOp.THROW, 0)
cv.define_label(tag)
cv.add_instruction(SVMOp.PUSHSTR, cv.string_ref(name))
cv.add_instruction(SVMOp.CALLM, cv.string_ref("Global.get"))
cv.add_instruction(SVMOp.CALLFN, 0)
def read_t(self):
token = self.next_token()
if token is None:
raise SyntaxError("Unexpected end of line")
ttype = self.get_token_type(token)
if ttype == Scanner.WORD or ttype == Scanner.OPERATOR:
op = self.get_operator(token)
if op is None:
self.verify_token("(")
self.verify_token(")")
return Compound.create(Identifier.create(token))
if op.is_statement():
raise SyntaxError("Illegal context for " + str(op))
return op.prefix_action(self)
else:
raise SyntaxError("Illegal condition " + str(token))
def define_statement_form(self, name, op):
self.define_operator(name, op, 0, 0, Operator.LEFT)
def parse_constant(self, token):
ttype = self.get_token_type(token)
if ttype == Scanner.NUMBER:
if str(token).find(".") >= 0:
return Constant.create(Value.create_double(float(str(token))))
else:
return Constant.create(Value.create_integer(int(str(token))))
elif ttype == Scanner.STRING:
s = eval(str(token))
return Constant(Value.create_string(s))
else:
raise SyntaxError("Illegal constant: " + str(token))
def push_parser_context(self, break_label, continue_label):
sc = KarelParserContext()
sc.break_label = break_label
sc.continue_label = continue_label
sc.next_label = None
self._statement_stack.append(sc)
def pop_parser_context(self):
self._statement_stack.pop()
def get_statement_depth(self):
return len(self._statement_stack)
def set_next_label(self, s):
self._statement_stack[-1].next_label = s
def get_next_label(self):
return self._statement_stack[-1].next_label
def get_break_label(self):
return statement_stack[-1].break_label
def get_continue_label(self):
return statement_stack[-1].continue_label
def create_module(self):
return Module()
# Constants
class KarelAndOperator(InfixForm):
def compile(self, p, args, cv):
tag1 = cv.new_label()
tag2 = cv.new_label()
p.compile(args[0], cv)
cv.add_instruction(SVMOp.JUMPF, cv.label_ref(tag1))
p.compile(args[1], cv)
cv.add_instruction(SVMOp.JUMP, cv.label_ref(tag2))
cv.define_label(tag1)
cv.add_instruction(SVMOp.CALLM, cv.string_ref("Core.FALSE"))
cv.define_label(tag2)
class KarelBlockOperator(Operator):
def __init__(self):
Operator.__init__(self)
self.set_name("BLOCK")
def compile(self, p, args, cv):
for arg in args:
p.compile(arg, cv)
class KarelDefKeyword(PrefixOperator):
def prefix_action(self, p):
return p.read_function_entry()
def compile(self, p, args, cv):
cv.add_instruction(SVMOp.PUSHFN, cv.label_ref(args[0].get_name()))
class KarelForStatement(Statement):
def prefix_action(self, p):
token = p.next_token()
ttype = p.get_token_type(token)
if ttype != Scanner.WORD:
raise SyntaxError("Missing required variable name")
p.verify_token("in")
p.verify_token("range")
p.verify_token("(")
token = p.next_token()
type = p.get_token_type(token)
if type != Scanner.NUMBER:
raise SyntaxError("Missing repeat count")
count = p.parse_constant(token)
p.verify_token(")")
p.verify_token(":")
p.verify_token("")
stmt = p.read_code_block()
return Compound.create(self, count, stmt)
def compile(self, p, args, cv):
count = args[0]
stmt = args[1]
tag1 = cv.new_label()
tag2 = cv.new_label()
tag3 = cv.new_label()
p.push_parser_context(tag3, tag2)
index = "i_" + str(p.get_statement_depth())
max = "n_" + str(p.get_statement_depth())
cv.add_instruction(SVMOp.VAR, cv.string_ref(index))
cv.add_instruction(SVMOp.VAR, cv.string_ref(max))
p.compile(count, cv)
cv.add_instruction(SVMOp.POPVAR, cv.string_ref(max))
cv.add_instruction(SVMOp.PUSHINT, 0)
cv.add_instruction(SVMOp.POPVAR, cv.string_ref(index))
cv.define_label(tag1)
cv.add_instruction(SVMOp.PUSHVAR, cv.string_ref(index))
cv.add_instruction(SVMOp.PUSHVAR, cv.string_ref(max))
cv.add_instruction(SVMOp.LT, 0)
cv.add_instruction(SVMOp.JUMPF, cv.label_ref(tag3))
p.compile(stmt, cv)
cv.define_label(tag2)
cv.add_instruction(SVMOp.PUSHVAR, cv.string_ref(index))
cv.add_instruction(SVMOp.PUSHINT, 1)
cv.add_instruction(SVMOp.ADD, 0)
cv.add_instruction(SVMOp.POPVAR, cv.string_ref(index))
cv.add_instruction(SVMOp.JUMP, cv.label_ref(tag1))
cv.define_label(tag3)
p.pop_parser_context()
class KarelIfStatement(Statement):
def prefix_action(self, p):
exp = p.read_e(0)
p.verify_token(":")
p.verify_token("")
s1 = p.read_code_block()
token = p.next_token()
if token == "else":
p.verify_token(":")
p.verify_token("")
return Compound.create(self, exp, s1, p.read_code_block())
p.save_token(token)
return Compound.create(self, exp, s1)
def compile(self, p, args, cv):
tag = cv.new_label()
p.compile(args[0], cv)
cv.add_instruction(SVMOp.JUMPF, cv.label_ref(tag))
p.compile(args[1], cv)
if len(args) == 3:
tag2 = cv.new_label()
cv.add_instruction(SVMOp.JUMP, cv.label_ref(tag2))
cv.define_label(tag)
p.compile(args[2], cv)
cv.define_label(tag2)
else:
cv.define_label(tag)
class KarelNotOperator(PrefixOperator):
def compile(self, p, args, cv):
p.compile(args[0], cv)
cv.add_instruction(SVMOp.NOT, 0)
class KarelOrOperator(InfixForm):
def compile(self, p, args, cv):
tag1 = cv.new_label()
tag2 = cv.new_label()
p.compile(args[0], cv)
cv.add_instruction(SVMOp.JUMPT, cv.label_ref(tag1))
p.compile(args[1], cv)
cv.add_instruction(SVMOp.JUMP, cv.label_ref(tag2))
cv.define_label(tag1)
cv.add_instruction(SVMOp.CALLM, cv.string_ref("Core.TRUE"))
cv.define_label(tag2)
class KarelParserContext:
def __init__(self):
self._next_label = None
self._break_label = None
self._continue_label = None
class KarelParenOperator(Operator):
def prefix_action(self, p):
exp = p.read_e(0)
p.verify_token(")")
return Compound.create(self, exp)
def infix_action(self, p, lhs):
p.verify_token(")")
return Compound.create(lhs, Expression[0])
def compile(self, p, args, cv):
p.compile(args[0], cv)
def unparse(self, p, args):
return "(" + p.unparse(args[0]) + ")"
class KarelPaintCornerStatement(Statement):
def prefix_action(self, p):
p.verify_token("(")
token = p.next_token()
if token == ")":
p.verify_token("")
return Compound.create(self)
if p.get_token_type(token) != Scanner.STRING:
raise SyntaxError("paint_corner requires an argument")
p.verify_token(")")
p.verify_token("")
return Compound.create(self, p.parse_constant(token))
def compile(self, p, args, cv):
nargs = len(args)
if nargs == 1:
p.compile(args[0], cv)
p.compile_call("paint_corner", cv)
cv.add_instruction(SVMOp.NARGS, nargs)
def unparse(self, p, args):
if len(args) == 0:
return "paint_corner()"
return "paint_corner(" + p.unparse(args[0]) + ")"
class KarelSetPaintColorStatement(Statement):
def prefix_action(self, p):
p.verify_token("(")
token = p.next_token()
if p.get_token_type(token) != Scanner.STRING:
raise SyntaxError("set_paint_color requires an argument")
p.verify_token(")")
p.verify_token("")
return Compound.create(self, p.parse_constant(token))
def compile(self, p, args, cv):
p.compile(args[0], cv)
p.compile_call("set_paint_color", cv)
cv.add_instruction(SVMOp.NARGS, 1)
def unparse(self, p, args):
return "set_paint_color(" + p.unparse(args[0]) + ")"
class KarelCornerColorIsOperator(Operator):
def prefix_action(self, p):
p.verify_token("(")
token = p.next_token()
if p.get_token_type(token) != Scanner.STRING:
raise SyntaxError("corner_color_is requires an argument")
p.verify_token(")")
return Compound.create(self, p.parse_constant(token))
def compile(self, p, args, cv):
p.compile(args[0], cv)
p.compile_call("corner_color_is", cv)
cv.add_instruction(SVMOp.NARGS, 1)
def unparse(self, p, args):
return "corner_color_is(" + p.unparse(args[0]) + ")"
class KarelRandomOperator(Operator):
def prefix_action(self, p):
p.verify_token("(")
token = p.next_token()
if token == ")":
return Compound.create(self)
if p.get_token_type(token) != Scanner.NUMBER:
raise SyntaxError("Illegal argument to random function")
p.verify_token(")")
return Compound.create(self, self.compile_constant(token))
def compile(self, p, args, cv):
if len(args) > 0:
p.compile(args[0], cv)
p.compile_call("random", cv)
cv.add_instruction(SVMOp.NARGS, len(args))
def unparse(self, p, args):
if len(args) == 0:
arg = ""
else:
arg = p.unparse(args[0])
return "corner_color_is(" + arg + ")"
class KarelStatementOperator(Operator):
def __init__(self):
Operator.__init__(self)
self.set_name("STMT")
def compile(self, p, args, cv):
cv.add_instruction(SVMOp.STMT, args[0].get_value().get_integer_value())
p.compile(args[1], cv)
class KarelWhileStatement(Statement):
def prefix_action(self, p):
exp = p.read_e(0)
p.verify_token(":")
p.verify_token("")
stmt = p.read_code_block()
return Compound.create(self, exp, stmt)
def compile(self, p, args, cv):
tag1 = cv.new_label()
tag2 = cv.new_label()
p.push_parser_context(tag2, tag1)
cv.define_label(tag1)
p.compile(args[0], cv)
cv.add_instruction(SVMOp.JUMPF, cv.label_ref(tag2))
p.compile(args[1], cv)
cv.add_instruction(SVMOp.JUMP, cv.label_ref(tag1))
cv.define_label(tag2)
p.pop_parser_context()
# Original file: KarelVM.py
"""
This module implements the extended virtual machine for Karel.
"""
class KarelVM(SVM):
def __init__(self):
SVM.__init__(self)
self.define_builtin("move", KarelMove())
self.define_builtin("turn_left", KarelTurnLeft())
self.define_builtin("pick_beeper", KarelPickBeeper())
self.define_builtin("put_beeper", KarelPutBeeper())
self.define_builtin("front_is_clear", KarelFrontIsClear())
self.define_builtin("front_is_blocked", KarelFrontIsBlocked())
self.define_builtin("left_is_clear", KarelLeftIsClear())
self.define_builtin("left_is_blocked", KarelLeftIsBlocked())
self.define_builtin("right_is_clear", KarelRightIsClear())
self.define_builtin("right_is_blocked", KarelRightIsBlocked())
self.define_builtin("beepers_in_bag", KarelBeepersInBag())
self.define_builtin("no_beepers_in_bag", KarelNoBeepersInBag())
self.define_builtin("beepers_present", KarelBeepersPresent())
self.define_builtin("no_beepers_present", KarelNoBeepersPresent())
self.define_builtin("facing_north", KarelFacingNorth())
self.define_builtin("not_facing_north", KarelNotFacingNorth())
self.define_builtin("facing_south", KarelFacingSouth())
self.define_builtin("not_facing_south", KarelNotFacingSouth())
self.define_builtin("facing_east", KarelFacingEast())
self.define_builtin("not_facing_east", KarelNotFacingEast())
self.define_builtin("facing_west", KarelFacingWest())
self.define_builtin("not_facing_west", KarelNotFacingWest())
self._function_names = { }
self._function_bounds = { }
self._function_code = { }
self._app = None
self._world = None
self._frame_viewer = None
self._code_window = None
self.set_step_mode(SVM.BY_STATEMENT)
self.add_stop_hook(self.stop_hook)
self.add_call_hook(self.call_hook)
self.add_return_hook(self.return_hook)
def import_turns(self):
self.define_builtin("turn_right", KarelTurnRight())
self.define_builtin("turn_around", KarelTurnAround())
def import_paint(self):
self.define_builtin("paint_corner", KarelPaintCorner())
self.define_builtin("set_paint_color", KarelSetPaintColor())
self.define_builtin("corner_color_is", KarelCornerColorIs())
def import_random(self):
self.define_builtin("random", KarelRandom())
def set_world(self, world):
self._world = world
def get_world(self):
return self._world
def set_app(self, app):
self._app = app
def get_app(self):
return self._app
def define_builtin(self, name, method):
self.set_global(name, Value("SVMMethod", method))
def init_model(self, gw):
self._gw = gw
self.set_model(self)
def create_timer(self, delay, callback):
timer = GTimer(self._gw, callback, delay)
timer.set_repeats(False)
return timer
def define_function(self, name, fc, bounds):
self._function_names[fc] = name
self._function_bounds[name] = bounds
def get_function_name(self, fc):
return self._function_names.get(fc)
def get_function_bounds(self, name):
return self._function_bounds.get(name)
def set_function_code(self, name, code):
self._function_code[name] = code
def get_function_code(self, name):
return self._function_code.get(name)
def set_frame_viewer(self, viewer):
self._frame_viewer = viewer
def set_code_window(self, window):
self._code_window = window
def speed_to_cycle_count(self, speed):
"""Overrides more complex mvc.py definition."""
return 1
def signal_error(self, msg):
"""Passes an error back to the application."""
self._app.show_error_dialog(msg)
def stop_hook(self):
if self._frame_viewer is not None:
self._frame_viewer.update_frames()
line = self.get_statement_offset()
if line is not None:
self._frame_viewer.set_highlight(line)
if self._code_window is not None:
if self.get_stack_depth() == 0:
self._code_window.clear_highlight()
else:
line = self.get_statement_offset()
if line is not None:
self._code_window.set_highlight(line)
def call_hook(self):
if self._frame_viewer is not None:
if self.get_state() in { SVM.STOPPED, SVM.STEPPING }:
name = self.get_function_name(self.peek_back(0).get_value())
code = self.get_function_code(name)
bounds = self.get_function_bounds(name)
if bounds is not None:
start,end = bounds
self._frame_viewer.push_function(code, start)
def return_hook(self):
if self._frame_viewer is not None:
if self.get_state() in { SVM.STOPPED, SVM.STEPPING }:
self._frame_viewer.pop_frame()
def clear_viewer(self):
if self._frame_viewer is not None:
self._frame_viewer.clear()
if self._code_window is not None:
self._code_window.clear_highlight()
def clear_highlight(self):
if self._frame_viewer is not None:
self._frame_viewer.clear_highlight()
if self._code_window is not None:
self._code_window.clear_highlight()
class KarelMove(SVMMethod):
def execute(self, svm, receiver):
svm.get_world().move()
class KarelTurnLeft(SVMMethod):
def execute(self, svm, receiver):
svm.get_world().turn_left()
class KarelTurnRight(SVMMethod):
def execute(self, svm, receiver):
svm.get_world().turn_right()
class KarelTurnAround(SVMMethod):
def execute(self, svm, receiver):
svm.get_world().turn_around()
class KarelPickBeeper(SVMMethod):
def execute(self, svm, receiver):
svm.get_world().pick_beeper()
class KarelPutBeeper(SVMMethod):
def execute(self, svm, receiver):
svm.get_world().put_beeper()
class KarelFrontIsClear(SVMMethod):
def execute(self, svm, receiver):
svm.push_boolean(svm.get_world().front_is_clear())
class KarelFrontIsBlocked(SVMMethod):
def execute(self, svm, receiver):
svm.push_boolean(svm.get_world().front_is_blocked())
class KarelLeftIsClear(SVMMethod):
def execute(self, svm, receiver):
svm.push_boolean(svm.get_world().left_is_clear())
class KarelLeftIsBlocked(SVMMethod):
def execute(self, svm, receiver):
svm.push_boolean(svm.get_world().left_is_blocked())
class KarelRightIsClear(SVMMethod):
def execute(self, svm, receiver):
svm.push_boolean(svm.get_world().right_is_clear())
class KarelRightIsBlocked(SVMMethod):
def execute(self, svm, receiver):
svm.push_boolean(svm.get_world().right_is_blocked())
class KarelBeepersInBag(SVMMethod):
def execute(self, svm, receiver):
svm.push_boolean(svm.get_world().beepers_in_bag())
class KarelNoBeepersInBag(SVMMethod):
def execute(self, svm, receiver):
svm.push_boolean(svm.get_world().no_beepers_in_bag())
class KarelBeepersPresent(SVMMethod):
def execute(self, svm, receiver):
svm.push_boolean(svm.get_world().beepers_present())
class KarelNoBeepersPresent(SVMMethod):
def execute(self, svm, receiver):
svm.push_boolean(svm.get_world().no_beepers_present())
class KarelFacingNorth(SVMMethod):
def execute(self, svm, receiver):
svm.push_boolean(svm.get_world().facing_north())
class KarelNotFacingNorth(SVMMethod):
def execute(self, svm, receiver):
svm.push_boolean(svm.get_world().not_facing_north())
class KarelFacingSouth(SVMMethod):
def execute(self, svm, receiver):
svm.push_boolean(svm.get_world().facing_south())
class KarelNotFacingSouth(SVMMethod):
def execute(self, svm, receiver):
svm.push_boolean(svm.get_world().not_facing_south())
class KarelFacingEast(SVMMethod):
def execute(self, svm, receiver):
svm.push_boolean(svm.get_world().facing_east())
class KarelNotFacingEast(SVMMethod):
def execute(self, svm, receiver):
svm.push_boolean(svm.get_world().not_facing_east())
class KarelFacingWest(SVMMethod):
def execute(self, svm, receiver):
svm.push_boolean(svm.get_world().facing_west())
class KarelNotFacingWest(SVMMethod):
def execute(self, svm, receiver):
svm.push_boolean(svm.get_world().not_facing_west())
class KarelPaintCorner(SVMMethod):
def execute(self, svm, receiver):
world = svm.get_world()
if svm.get_argument_count() == 0:
color = world.get_paint_color()
else:
color = svm.pop_string()
x,y = world.get_current_corner()
world.set_corner_color(x, y, color)
class KarelSetPaintColor(SVMMethod):
def execute(self, svm, receiver):
svm.get_world().set_paint_color(svm.pop_string())
class KarelCornerColorIs(SVMMethod):
def execute(self, svm, receiver):
world = svm.get_world()
x,y = world.get_current_corner()
color = svm.pop_string().lower()
svm.push_boolean(world.get_corner_color(x, y).lower() == color)
class KarelRandom(SVMMethod):
def execute(self, svm, receiver):
if svm.get_argument_count() == 0:
p = 0.5
else:
p = svm.pop_double()
svm.push_boolean(random.random() < p)
# Original file: KarelWorldEditor.py
"""
This module implements the world editor.
"""
class KarelWorldEditor(GCompound):
def __init__(self, app):
GCompound.__init__(self)
self._app = app
self._bg = GRect(KC.WORLD_EDITOR_WIDTH, KC.WORLD_EDITOR_HEIGHT)
self._bg.set_filled(True)
self._bg.set_color("White")
self.add(self._bg)
self.init_editor_tools()
self._dragging_karel = False
self._dragging_started = False
self._setting_size = False
self._size_text = ""
def get_app(self):
return self._app
def get_world(self):
return self._app.get_world()
def init_editor_tools(self):
self._tools = [ ]
x = KC.TOOL_X
y = KC.TOOL_Y
self.add_tool(WallTool(x, y, True))
x += KC.WALL_TOOL_SIZE + KC.TOOL_SEP
self.add_tool(WallTool(x, y, False))
x += KC.WALL_TOOL_SIZE + 2 * KC.TOOL_SEP
self.add_tool(BeeperTool(x, y, 1))
x += KC.BEEPER_TOOL_SIZE + KC.TOOL_SEP
self.add_tool(BeeperTool(x, y, KC.PLUS1))
x += KC.BEEPER_TOOL_SIZE + KC.TOOL_SEP
self.add_tool(BeeperTool(x, y, KC.MINUS1))
x += KC.BEEPER_TOOL_SIZE + KC.TOOL_SEP
self.add_tool(BeeperTool(x, y, 0))
x += KC.BEEPER_TOOL_SIZE + KC.TOOL_SEP
self.add_tool(BeeperTool(x, y, KC.INFINITE))
x += KC.BEEPER_TOOL_SIZE + 2 * KC.TOOL_SEP
self.add_tool(KarelTool(x, y))
x += KC.KAREL_TOOL_SIZE + 2 * KC.TOOL_SEP
self._resize_tool = ResizeTool(x, y, self)
self.add_tool(self._resize_tool)
x += KC.RESIZE_TOOL_SIZE + KC.TOOL_SEP
self.add_tool(ExitTool(x, y))
self._selected_tool = None
self.set_selected_tool(self._tools[0])
def click_action(self, e):
if self._setting_size and KC.MULTIPLY in self._size_text:
self.set_size_complete()
tool = self.find_tool(e.get_x(), e.get_y())
if tool is not None:
tool.tool_action(self)
def set_size_complete(self):
x = self._size_text.find(KC.MULTIPLY)
cols = int(self._size_text[:x])
rows = int(self._size_text[x + 1:])
self.get_world().resize(cols, rows)
self.get_world().init_display()
self._setting_size = False
def set_selected_tool(self, tool):
if self._selected_tool is not None:
self._selected_tool.deselect()
self._selected_tool = tool
if tool is not None:
tool.select()
def get_selected_tool(self):
return self._selected_tool
def wall_action(self, x, y, dir):
if not self._dragging_karel:
tool = self.get_selected_tool()
if tool is not None:
tool.wall_action(self, x, y, dir)
def corner_action(self, x, y):
tool = self.get_selected_tool()
if self._dragging_karel:
world = self.get_world()
if x != world._kx or y != world._ky:
world.set_karel_location(x, y)
if isinstance(tool, BeeperTool) and not self._dragging_started:
nb = world.get_beepers_in_bag()
if tool._beepers == KC.PLUS1:
nb = KarelWorld.adjust_beepers(nb, +1)
elif tool._beepers == KC.MINUS1:
nb = KarelWorld.adjust_beepers(nb, -1)
else:
nb = tool._beepers
world.set_beepers_in_bag(nb)
elif tool is not None:
tool.corner_action(self, x, y)
def set_dragging_karel(self, flag):
self._dragging_karel = flag
def set_dragging_started(self, flag):
self._dragging_started = flag
def key_typed(self, e):
if self._setting_size:
self._resize_tool.key_typed(e.get_key())
def add_tool(self, tool):
self._tools.append(tool)
self.add(tool)
def find_tool(self, x, y):
x -= self.get_x()
y -= self.get_y()
for tool in self._tools:
tx = tool._x
ty = tool._y
tw = tool._width
th = tool._height
if x >= tx and x < tx + tw and y >= ty and y < ty + th:
return tool
return None
class MapTool(GCompound):
def __init__(self, x, y, width, height):
GCompound.__init__(self)
self._x = x
self._y = y
self._width = width
self._height = height
self.set_location(x, y)
def tool_action(self, editor):
editor.set_selected_tool(self)
def select(self):
pass
def deselect(self):
pass
def wall_action(self, editor, x, y, dir):
pass
def corner_action(self, editor, x, y):
pass
def set_selected(self, state):
pass
class WallTool(MapTool):
def __init__(self, x, y, create_wall):
MapTool.__init__(self, x, y, KC.WALL_TOOL_SIZE, KC.WALL_TOOL_SIZE)
self._create_wall = create_wall
frame = GRect(KC.WALL_TOOL_SIZE, KC.WALL_TOOL_SIZE)
frame.set_filled(True)
frame.set_color("Gray")
frame.set_fill_color("White")
self.add(frame)
self._frame = frame
wall = GLine((KC.WALL_TOOL_SIZE - KC.WALL_TOOL_LENGTH) / 2,
KC.WALL_TOOL_SIZE / 2,
(KC.WALL_TOOL_SIZE + KC.WALL_TOOL_LENGTH) / 2,
KC.WALL_TOOL_SIZE / 2)
wall.set_line_width(KC.WALL_LINEWIDTH)
self.add(wall)
if create_wall:
wall.set_color("Black")
else:
wall.set_color("Gray")
line = GLine((KC.WALL_TOOL_SIZE - KC.WALL_CROSS_SIZE) / 2,
(KC.WALL_TOOL_SIZE - KC.WALL_CROSS_SIZE) / 2,
(KC.WALL_TOOL_SIZE + KC.WALL_CROSS_SIZE) / 2,
(KC.WALL_TOOL_SIZE + KC.WALL_CROSS_SIZE) / 2)
line.set_line_width(KC.CROSS_LINEWIDTH)
line.set_color("Gray")
self.add(line)
line = GLine((KC.WALL_TOOL_SIZE - KC.WALL_CROSS_SIZE) / 2,
(KC.WALL_TOOL_SIZE + KC.WALL_CROSS_SIZE) / 2,
(KC.WALL_TOOL_SIZE + KC.WALL_CROSS_SIZE) / 2,
(KC.WALL_TOOL_SIZE - KC.WALL_CROSS_SIZE) / 2)
line.set_line_width(KC.CROSS_LINEWIDTH)
line.set_color("Gray")
self.add(line)
def select(self):
self._frame.set_color(KC.SELECTED_BORDER_COLOR)
self._frame.set_fill_color("White")
self._frame.set_line_width(KC.SELECTED_BORDER_WIDTH)
def deselect(self):
self._frame.set_color("Gray")
self._frame.set_fill_color("White")
self._frame.set_line_width(1)
def wall_action(self, editor, x, y, dir):
world = editor.get_world()
if self._create_wall:
world.set_wall(x, y, dir)
else:
world.clear_wall(x, y, dir)
class BeeperTool(MapTool):
def __init__(self, x, y, beepers):
MapTool.__init__(self, x, y, KC.BEEPER_TOOL_SIZE, KC.BEEPER_TOOL_SIZE)
bsize = KC.BEEPER_TOOL_SIZE
self._size = KC.BEEPER_TOOL_SIZE
self._beepers = beepers
if beepers == 1:
label = ""
elif beepers == KC.PLUS1:
label = "+1"
elif beepers == KC.MINUS1:
label = "\u2212" + "1"
elif beepers == KC.INFINITE:
label = KC.INFINITY_SYMBOL
else:
label = str(beepers)
bpoly = KarelWorld.create_beeper_polygon(bsize)
self._bpoly = bpoly
xc = KC.BEEPER_TOOL_SIZE / 2
yc = KC.BEEPER_TOOL_SIZE / 2
self.add(bpoly, xc, yc)
blabel = GLabel("")
self.add(blabel, xc, yc)
labelsize = int(bsize * KC.BEEPER_LABEL_FRACTION + 0.5)
blabel.set_font(str(labelsize) + "px " + KC.BEEPER_FONT_FAMILY)
KarelWorld.set_beeper_label(bpoly, blabel, labelsize, label)
def select(self):
self._bpoly.set_color(KC.SELECTED_BORDER_COLOR)
self._bpoly.set_line_width(KC.SELECTED_BORDER_WIDTH)
def deselect(self):
self._bpoly.set_color("Gray")
self._bpoly.set_line_width(1)
def corner_action(self, editor, x, y):
world = editor.get_world()
nb = world.get_beepers_on_corner(x, y)
if self._beepers == KC.PLUS1:
nb = KarelWorld.adjust_beepers(nb, +1)
elif self._beepers == KC.MINUS1:
nb = KarelWorld.adjust_beepers(nb, -1)
else:
nb = self._beepers
world.set_beepers_on_corner(x, y, nb)
class KarelTool(MapTool):
def __init__(self, x, y):
MapTool.__init__(self, x, y, KC.KAREL_TOOL_SIZE, KC.KAREL_TOOL_SIZE)
size = KC.KAREL_TOOL_SIZE
self.add(KarelWorld.create_karel_polygon(size), size / 2, size / 2)
r = KC.ARC_RADIUS
arc = GArc(size / 2 - r + KC.ARC_DX, size / 2 - r + KC.ARC_DY,
2 * r, 2 * r, 15, 120)
self.add(arc)
arrow = GPolygon()
p = size / 2 - r / math.sqrt(2)
arrow.add_vertex(p - KC.ARC_ARROW_SIZE / 2 + KC.ARC_DX,
p + KC.ARC_ARROW_SIZE / 2 + KC.ARC_DY)
arrow.add_edge(KC.ARC_ARROW_SIZE, 0)
arrow.add_edge(-KC.ARC_ARROW_SIZE, -KC.ARC_ARROW_SIZE)
arrow.set_filled(True)
self.add(arrow)
def tool_action(self, editor):
editor.get_world().turn_left()
class ResizeTool(MapTool):
def __init__(self, x, y, editor):
MapTool.__init__(self, x, y, KC.RESIZE_TOOL_SIZE, KC.RESIZE_TOOL_SIZE)
frame = GRect(KC.RESIZE_TOOL_SIZE, KC.RESIZE_TOOL_SIZE)
frame.set_filled(True)
frame.set_color("Gray")
frame.set_fill_color("White")
self.add(frame)
self._frame = frame
self._editor = editor
world = editor.get_world()
text = str(world.get_cols()) + KC.MULTIPLY + str(world.get_rows())
label = GLabel(text)
label.set_font(KC.RESIZE_FONT)
self._label = label
x = (KC.RESIZE_TOOL_SIZE - label.get_width()) / 2
y = KC.RESIZE_TOOL_SIZE / 2 + KC.RESIZE_DY
self.add(label, x, y)
self._editor._size_text = ""
def select(self):
self._frame.set_color(KC.SELECTED_BORDER_COLOR)
self._frame.set_line_width(KC.SELECTED_BORDER_WIDTH)
self._editor._setting_size = True
self._editor._size_text = ""
self.update_size_label()
def deselect(self):
self._frame.set_color("Gray")
self._frame.set_line_width(1)
self._editor._setting_size = True
def key_typed(self, ch):
if ch == "x" and KC.MULTIPLY not in self._editor._size_text:
self._editor._size_text += KC.MULTIPLY
elif ch.isdigit():
self._editor._size_text += ch
elif ch == "" and len(self._editor._size_text) > 0:
self._editor._size_text = self._editor._size_text[:-1]
elif ch == "" and KC.MULTIPLY in self._editor._size_text:
self._editor.set_size_complete()
else:
return
self.update_size_label()
def update_size_label(self):
label = self._label
label.set_label(self._editor._size_text)
x = (KC.RESIZE_TOOL_SIZE - label.get_width()) / 2
y = KC.RESIZE_TOOL_SIZE / 2 + KC.RESIZE_DY
label.set_location(x, y)
class ExitTool(MapTool):
def __init__(self, x, y):
MapTool.__init__(self, x, y, KC.EXIT_TOOL_SIZE, KC.EXIT_TOOL_SIZE)
frame = GRect(KC.EXIT_TOOL_SIZE, KC.EXIT_TOOL_SIZE)
frame.set_filled(True)
frame.set_color("Gray")
frame.set_fill_color("White")
self.add(frame)
check = KC.EXIT_TOOL_SIZE * KC.EXIT_CHECK_FRACTION
short_check = check / 3
long_check = 2 * check / 3
line = GLine((KC.EXIT_TOOL_SIZE - check) / 2,
KC.EXIT_TOOL_SIZE / 2,
(KC.EXIT_TOOL_SIZE - check) / 2 + short_check,
KC.EXIT_TOOL_SIZE / 2 + short_check)
line.set_line_width(KC.CHECK_LINEWIDTH)
self.add(line)
line = GLine((KC.EXIT_TOOL_SIZE - check) / 2 + short_check,
KC.EXIT_TOOL_SIZE / 2 + short_check,
(KC.EXIT_TOOL_SIZE + check) / 2,
KC.EXIT_TOOL_SIZE / 2 - short_check)
line.set_line_width(KC.CHECK_LINEWIDTH)
self.add(line)
def tool_action(self, editor):
editor.get_app().editworld_action()
# Original file: KarelApplication.py
"""
This module implements the user interface for Python Karel.
"""
class KarelApplication(PGLApplication):
"""This class runs the Karel application."""
def __init__(self):
"""Creates the KarelApplication object."""
PGLApplication.__init__(self, KC.GWINDOW_WIDTH, KC.GWINDOW_HEIGHT)
cw = KarelCodeWindow(self, KC.CWINDOW_WIDTH)
self._code_window = cw
world = KarelWorld(KC.WORLD_WIDTH, KC.WORLD_HEIGHT)
self._world = world
svm = KarelVM()
svm.init_model(self)
svm.set_app(self)
svm.set_world(world)
self._svm = svm
self.add(world, KC.WORLD_X, KC.WORLD_Y)
self.init_control_strip()
if self._world_file is not None and os.path.exists(self._world_file):
world.load(self._world_file)
self._speed_control.set_speed(world.get_speed() * 100)
else:
world.resize(10, 10)
world.init_display()
self._editor = None
self._error_dialog = None
self._error_showing = False
self.load(KarelApplication.get_source_file())
self._frame = KarelApplication.get_main_frame()
loader = self._frame.f_globals.get("__loader__")
self._main = KarelApplication.get_main_function()
self.add_event_listener("key", self.key_typed)
def get_world(self):
"""Returns the world used by this application."""
return self._world
def init_control_strip(self):
"""Initializes the various controls."""
x = KC.CONTROL_X
y = KC.CONTROL_Y
self._load_control = LoadControl()
self._load_control.add_action_listener(self.load_action)
self.add(self._load_control, x, y)
x += KC.CONTROL_SEP
self._save_control = SaveControl()
self._save_control.add_action_listener(self.save_action)
self.add(self._save_control, x, y)
x += KC.CONTROL_SEP
self._run_control = RunControl()
self._run_control.add_action_listener(self.run_action)
self.add(self._run_control, x, y)
x += KC.CONTROL_SEP
self._stepin_control = StepInControl()
self._stepin_control.add_action_listener(self.stepin_action)
self.add(self._stepin_control, x, y)
x += KC.CONTROL_SEP
self._stepover_control = StepOverControl()
self._stepover_control.add_action_listener(self.stepover_action)
self.add(self._stepover_control, x, y)
x += KC.CONTROL_SEP
self._speed_control = SpeedControl()
self._speed_control.add_speed_listener(self.speed_changed)
self.add(self._speed_control, x, y)
x += KC.CONTROL_SEP
self._editworld_control = EditWorldControl()
self._editworld_control.add_action_listener(self.editworld_action)
self.add(self._editworld_control, x, y)
x += KC.CONTROL_SEP
self._reset_control = ResetControl()
self._reset_control.add_action_listener(self.reset_action)
self.add(self._reset_control, x, y)
self._world_file = KarelApplication.get_world_file()
def run(self):
"""Runs the application after everything is loaded."""
if self._main is not None:
self._svm.set_code_window(self._code_window)
# viewer = KarelFrameViewer(KC.FRAME_VIEW_WIDTH,
# KC.FRAME_VIEW_HEIGHT)
# self.add(viewer, KC.FRAME_VIEW_X, KC.FRAME_VIEW_Y)
# viewer.set_frame_size(KC.FRAME_WIDTH, KC.FRAME_HEIGHT)
# self._svm.set_frame_viewer(viewer)
sys.exit()
# Implementation notes: load
# --------------------------
# This function tries to parse the file being read by the loader.
# If any syntax errors occur, this function raises a standard Python
# SyntaxError after assembling the appropriate file components.
def load(self, filename):
"""Loads the source file and returns True on success."""
try:
self.load_source_file(filename)
return True
except Exception as ex:
kp = self._kp
token = kp.get_last_token()
if token is None:
raise ex
pytoken = token.get_python_token()
msg = str(ex)
filename = KarelApplication.get_source_file()
lineno,colno = pytoken.end
text = self.get_source_line(filename, lineno)
raise SyntaxError(msg, (filename, lineno, colno, text))
def load_source_file(self, filename):
"""Processes the source file in a couple of passes."""
with open(filename) as f:
self._source = f.read()
if len(self._source) > 0 and self._source[-1] != "\n":
self._source += "\n"
if self._code_window is not None:
self._code_window.set_code(self._source)
self._lines = ["1-based-dummy"] + self._source.splitlines()
self.compile_source()
self.save_code_lines()
last_dot = filename.rfind(".")
if last_dot != -1:
root = filename[:last_dot]
else:
root = filename
self.set_window_title(root)
def get_source_line(self, filename, lineno):
with open(filename) as f:
return f.read().splitlines()[lineno - 1]
def compile_source(self):
"""Compiles the source into SVM code."""
svm = self._svm
kp = KarelParser()
self._kp = kp
kp.set_input(self._source)
lines = self._source.splitlines()
self._module = kp.read_module()
cv = CodeVector()
main = KarelApplication.get_main_function()
cv.add_instruction(SVMOp.PUSHSTR, cv.string_ref(main))
cv.add_instruction(SVMOp.CALLM, cv.string_ref("Global.get"))
cv.add_instruction(SVMOp.NARGS, 1)
cv.add_instruction(SVMOp.CALLFN)
cv.add_instruction(SVMOp.NARGS, 0)
cv.add_instruction(SVMOp.HALT)
fns = { }
for type,exp in self._module.get_entries():
if type == "function":
args = exp.get_args()
name = str(args[0])
body = args[3]
fns[name] = cv.get_current_address()
kp.compile(body, cv)
end = exp.get_end()
if end < len(lines):
while end > 1 and (lines[end - 2] == "" or
lines[end - 2].startswith("#")):
end -= 1
cv.add_instruction(SVMOp.STMT, end)
cv.add_instruction(SVMOp.RETURN)
elif type == "import":
lib = str(exp)
if lib == "turns":
svm.import_turns()
elif lib == "paint":
svm.import_paint()
elif lib == "random":
svm.import_random()
elif lib != "karel" and lib != "exportkarel":
print("Unrecognized library: " + lib)
cv.add_instruction(SVMOp.END)
code = cv.get_code()
for type,fn in self._module.get_entries():
if type == "function":
args = fn.get_args()
name = str(args[0])
closure = SVMFunctionClosure(code, fns[name], None)
bounds = (fn.get_start(), fn.get_end())
svm.define_function(name, closure, bounds)
svm.set_global(name, Value("FunctionClosure", closure))
svm.set_code(code)
def save_code_lines(self):
"""Stores the source lines for tracing."""
for type,fn in self._module.get_entries():
if type == "function":
args = fn.get_args()
name = str(args[0])
start,end = self._svm.get_function_bounds(name)
finished = False
while not finished:
line = self._lines[end - 1].strip()
if len(line) == 0 or line.startswith("#"):
end -= 1
else:
finished = True
lines = self._lines[start:end] + [ "" ]
self._svm.set_function_code(name, lines)
# Implementation notes: load_action and load_file
# -----------------------------------------------
# This implementation defers the actual load dialog so that the action
# exits, thereby allowing the event loop to proceed. The actual dialog
# is displayed by load_file.
def load_action(self):
"""Implements the LoadWorld control."""
timer = GTimer(self, self.load_file, 0)
timer.start()
self._load_control.set_state(PGLControl.ACTIVE)
def load_file(self):
"""Displays the LoadWorld dialog and then loads the world."""
pathname = choose_input_file()
if pathname is not None and pathname != "":
self._world_file = pathname
self._world.load(self._world_file)
self._speed_control.set_speed(self._world.get_speed() * 100)
# Implementation notes: save_action and save_file
# -----------------------------------------------
# This implementation defers the actual save dialog so that the action
# exits, thereby allowing the event loop to proceed. The actual dialog
# is displayed by save_file. On Mac OSX, save_file generates a warning
# in the console window if the file already exists. Although there are
# several postings about this problem on the web, I've been unable to
# find a fix.
def save_action(self):
"""Implements the SaveWorld control."""
timer = GTimer(self, self.save_file, 0)
timer.start()
self._save_control.set_state(PGLControl.ACTIVE)
def save_file(self):
"""Implements tha actual SaveWorld dialog."""
pathname = choose_output_file(initialfile=self._world_file)
if pathname is not None and pathname != "":
with open(pathname, "w") as f:
f.write(self._world.get_text())
def run_action(self):
"""Implements the Run control."""
self._svm.clear_highlight()
self._svm.start_action()
def stepin_action(self):
"""Implements the StepIn control."""
self._svm.step_action()
def stepover_action(self):
"""Implements the StepOver control."""
self._svm.clear_highlight()
self._svm.call_action()
def editworld_action(self):
"""Implements the EditWorld control."""
if self._editor is None:
self._editor = KarelWorldEditor(self)
if self._world.get_monitor() is None:
self._world.set_monitor(self._editor)
self.add(self._editor, KC.WORLD_EDITOR_X, KC.WORLD_EDITOR_Y)
else:
self._world.set_monitor(None)
self.remove(self._editor)
def reset_action(self):
"""Implements the Reset control."""
self._svm.reset()
self._svm.clear_viewer()
if self._world_file is not None and os.path.exists(self._world_file):
self._world.load(self._world_file)
self._world.set_speed(self._speed_control.get_speed() / 100)
else:
self._world.resize(10, 10)
self._world.init_display()
def mouse_in_world(self, e):
"""Returns True if the mouse event is in Karel's world."""
x = e.get_x()
y = e.get_y()
return (x >= KC.WORLD_X and x < KC.WORLD_X + KC.WORLD_WIDTH and
y >= KC.WORLD_Y and y < KC.WORLD_Y + KC.WORLD_HEIGHT)
def mouse_down(self, e):
"""Responds to a mouse-down event."""
if self._error_showing:
self.remove(self._error_dialog)
self._error_showing = False
elif self.mouse_in_world(e):
self._world.mousedown_action(e)
else:
PGLApplication.mouse_down(self, e)
def mouse_drag(self, e):
"""Responds to a drag event."""
if self.mouse_in_world(e):
self._world.drag_action(e)
else:
PGLApplication.mouse_drag(self, e)
def key_typed(self, e):
"""Responds to a key-typed event (used only in resizing)."""
if self._world.get_monitor() is not None:
self._world.get_monitor().key_typed(e)
def speed_changed(self):
"""Callback function for when the speed is changed."""
self._svm.set_speed(self._speed_control.get_speed())
def show_error_dialog(self, msg):
"""Displays an error dialog with the specified message."""
if self._error_dialog is None:
self._error_dialog = KarelErrorDialog()
self._error_dialog.set_message(msg)
x = (KC.GWINDOW_WIDTH - KC.ERROR_DIALOG_WIDTH) / 2
y = (KC.GWINDOW_HEIGHT - KC.ERROR_DIALOG_HEIGHT) / 2
self.add(self._error_dialog, x, y)
self._error_showing = True
@staticmethod
def get_source_file():
"""Returns the name of the file being loaded."""
return KarelApplication.get_main_frame().f_globals.get("__file__")
@staticmethod
def get_world_file():
"""Returns the name of the corresponding world file."""
filename = KarelApplication.get_main_frame().f_globals.get("__file__")
return filename[:filename.find(".")] + ".w"
@staticmethod
def get_main_function():
"""Returns the name of the first function."""
main = None
filename = KarelApplication.get_main_frame().f_globals.get("__file__")
with open(filename) as f:
for line in f:
line = line.strip()
if main is None and line.startswith("def "):
main = line[4:line.find("(")].strip()
elif (line.startswith("if ") and
line.find("__name__") > 0 and
line.find("__main__") > 0):
main = None
return main
@staticmethod
def get_main_frame():
"""Returns the frame in which the load is happening."""
for i in range(100):
frame = sys._getframe(i)
if frame.f_globals.get("__name__") == "__main__":
return frame
raise KarelException("Imports too deeply nested")
# Define the builtin commands
def move():
_ka.move()
def turn_left():
_ka.turn_left()
def pick_beeper():
_ka.pick_beeper()
def put_beeper():
_ka.put_beeper()
def front_is_clear():
return _ka.front_is_clear()
def front_is_blocked():
return _ka.front_is_blocked()
def left_is_clear():
return _ka.left_is_clear()
def left_is_blocked():
return _ka.left_is_blocked()
def right_is_clear():
return _ka.right_is_clear()
def right_is_blocked():
return _ka.right_is_blocked()
def beepers_present():
return _ka.beepers_present()
def no_beepers_present():
return _ka.no_beepers_present()
def beepers_in_bag():
return _ka.beepers_in_bag()
def no_beepers_in_bag():
return _ka.no_beepers_in_bag()
def facing_north():
return _ka.facing_north()
def not_facing_north():
return _ka.not_facing_north()
def facing_east():
return _ka.facing_east()
def not_facing_east():
return _ka.not_facing_east()
def facing_south():
return _ka.facing_south()
def not_facing_south():
return _ka.not_facing_south()
def facing_west():
return _ka.facing_west()
def not_facing_west():
return _ka.not_facing_west()
_ka = KarelApplication()
# Add the builtins to the calling environment
__builtins__["move"] = move
__builtins__["turn_left"] = turn_left
__builtins__["pick_beeper"] = pick_beeper
__builtins__["put_beeper"] = put_beeper
__builtins__["front_is_clear"] = front_is_clear
__builtins__["front_is_blocked"] = front_is_blocked
__builtins__["left_is_clear"] = left_is_clear
__builtins__["left_is_blocked"] = left_is_blocked
__builtins__["right_is_clear"] = right_is_clear
__builtins__["right_is_blocked"] = right_is_blocked
__builtins__["beepers_present"] = beepers_present
__builtins__["no_beepers_present"] = no_beepers_present
__builtins__["beepers_in_bag"] = beepers_in_bag
__builtins__["no_beepers_in_bag"] = no_beepers_in_bag
__builtins__["facing_north"] = facing_north
__builtins__["facing_east"] = facing_east
__builtins__["facing_south"] = facing_south
__builtins__["facing_west"] = facing_west
__builtins__["_ka"] = _ka
_ka.run()