#!/usr/bin/python
# -*- coding: utf-8 -*-

# Copyright (C) 2014 - 2019 Rod Engerstad


import Tkinter as tk
import tkFont
import tkFileDialog
import tkMessageBox
import os
import sys
import time
import subprocess
import logging
import logging.config
import logging.handlers


def install_language(domain):
    import gettext
    localedir = os.path.expanduser('~') + os.sep + '.pzl/PROGRAMS/locales'
    fr = gettext.translation(domain, localedir=localedir, languages=['fr'],
                             fallback='True')
    fr.install()
    _ = fr.gettext # French


class Sgg(object):
    """
    Game globals
    """
    SOLVE = 0
    HINT = 1
    symbol_count = 9


class SettingsB(object):
    """
    Set and update all user controlled values and most other constants
    For globals in code which does not have access to Settings use Sgg.
    """

    nonexclusive = 'N'

    def __init__(self):
        self.gray = '#C0C0C0'
        self.grey = '#dfdfdf'
        self.green = '#82c026'
        self.white = '#ffffff'
        self.black = '#000000'
        self.red = '#ff0000'
        self.entry_box_bg = self.green
        self.entry_box_fg = self.white
        self.entry_box_highthick = 1
        self.wentry_box_bg = self.white
        self.wentry_box_fg = self.black
        self.wentry_box_highthick = 1
        self.score_box_width = 3
        self.clock_box_width = 6
        self.tick_interval = 5
        self.original_entry_box_width = 5
        self.original_wentry_box_width = 10
        self.original_list_box_width = 21
        self.original_square_size = 48
        self.entry_box_width = self.original_entry_box_width
        self.wentry_box_width = self.original_wentry_box_width
        self.list_box_width = self.original_list_box_width
        self.square_size = self.original_square_size
        self.value_font = None
        self.candidate_font = None
        self.counter_font = None
        self.filemenu_font = None
        self.letter_font = None
        self.letter_surface_font = None
        self.code_font = None
        self.dic = {}
        self.candidate_height = 16
        self.value_height = 24
        self.candidate_minsize = 10

        self.value_font_size = -25
        self.candidate_font_size = -10
        self.filemenu_font_size = -20
        self.counter_font_size = -20
        self.letter_font_size = -25
        self.letter_surface_font_size = -10
        self.code_font_size = -12
        self.max_time = None
        self.title = PzlG.app_name + ' ' + PzlG.version + '          '
        self.help_text = None
        self.tooltip_text = []
        self.alg_text = []

    def get_tooltip(self, message_index, alg_index):
        text = ''
        title = self.title
        if message_index != 1 or alg_index is None:
            text = self.tooltip_text[message_index]
        else:
            text = self.alg_text[alg_index]
        return text, title

    def set_fonts(self):
        """
        Set the fonts.
        """
        value_weight = 'normal'
        candidate_weight = 'normal'
        counter_weight = 'normal'
        filemenu_weight = 'bold'
        letter_weight = 'normal'
        letter_surface_weight = 'normal'
        code_weight = 'normal'
        family = 'times new roman'
        self.value_font = tkFont.Font(
            family=family,
            weight=value_weight, size=self.value_font_size)
        self.candidate_font = tkFont.Font(
            family=family,
            weight=candidate_weight, size=self.candidate_font_size)
        self.filemenu_font = tkFont.Font(
            family=family,
            weight=filemenu_weight, size=self.filemenu_font_size)
        self.counter_font = tkFont.Font(
            family=family,
            weight=counter_weight,
            size=self.counter_font_size)
        self.letter_font = tkFont.Font(
            family=family,
            weight=letter_weight,
            size=self.letter_font_size)
        self.letter_surface_font = tkFont.Font(
            family=family,
            weight=letter_surface_weight,
            size=self.letter_surface_font_size)
        self.code_font = tkFont.Font(
            family=family,
            weight=code_weight,
            size=self.code_font_size)

        self.do_scaling()

    def do_scaling(self):
        inc = 0.1
        mult = int(self.dic['font_size'])
        factor = 0.8 + mult * inc
        size = self.value_font_size
        self.value_font.configure(size=int(size * factor))
        size = self.candidate_font_size
        self.candidate_font.configure(size=int(size * factor))
        size = self.letter_font_size
        self.letter_font.configure(size=int(size * factor))
        size = self.letter_surface_font_size
        self.letter_surface_font.configure(size=int(size * factor))
        size = self.code_font_size
        self.code_font.configure(size=int(size * factor))
        self.square_size = int(self.original_square_size * factor)
        self.candidate_height = 16
        self.candidate_height = int(self.candidate_height * factor)
        self.value_height = 24
        self.value_height = int(self.value_height * factor)
        self.candidate_minsize = 10
        self.candidate_minsize = int(self.candidate_minsize * factor)
        self.entry_box_width = int(self.original_entry_box_width * factor)
        self.wentry_box_width = int(self.original_wentry_box_width * factor)
        self.list_box_width = int(self.original_list_box_width * factor)


class Egg(object):
    """
    Edit and display globals
    """

    DELETE_CANDIDATES = 0
    ADD_CANDIDATES = 1
    SET_GUESS = 2
    COLOUR_CANDIDATES_CAUSE = 3
    COLOUR_CANDIDATES_EFFECT = 4
    UNCOLOUR_CANDIDATES = 5
    HIGHLIGHT_ERROR = 6
    UNHIGHLIGHT_ERROR = 7
    APPLY_SHADING = 8


class MyLogger(object):
    """
    Log events and exceptions.
    For exception logging need to initialise MyLogger to a global
    and wrap the main program in a try block:

    ----------------------------------------------------------
    def main():
       my_logger.logger.info("Program started")
       do stuff
       my_logger.logger.info("Success!")

    my_logger = MyLogger("log.txt", "INFO", "Main")
    try:
       main()
    except:
       my_logger.logger.exception("Unhandled exception during main")
    ----------------------------------------------------------

    See http://www.blog.pythonlibrary.org/2012/08/02/python-101-an-intro-to-logging/
    file_name - log file
    level - what to report: DEBUG, INFO, WARNING, ERROR, CRITICAL
    app_name - program name for messages

    We use a rotating pair of files, always writing to say log.txt but
    having log.txt.1 as the previous file, switching when log.txt reaches
    500000 bytes.
    """

    def __init__(self, file_name, level, app_name):
        dict_config = {
            "version": 1,
            "handlers": {
                "fileHandler": {
                    "class": "logging.handlers.RotatingFileHandler",
                    "formatter": "myFormatter",
                    "maxBytes": 50000,
                    "backupCount": 1,
                    "filename": file_name
                }
            },
            "loggers": {
                app_name: {
                    "handlers": ["fileHandler"],
                    "level": level,
                }
            },
            "formatters": {
                "myFormatter": {
                    "format":
                    "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
                }
            }
            }
        logging.config.dictConfig(dict_config)
        self.logger = logging.getLogger(app_name)
        #start debug
        #ch = logging.StreamHandler(sys.stdout)
        #self.logger.addHandler(ch)
        #end debug


class PzlG(object):
    """
    Globals
    Get os.
    Set paths.
    Init Logger.
    """

    @staticmethod
    def get_program_list():
        program_list = []
        for name in PzlG.program_names:
            if name != 'pzl_launcher' and name != 'pzl_installer':
                program_list.append(name)
        return program_list

    @staticmethod
    def get_library_list():
        program_list = []
        for name in PzlG.libraries:
            if name != 'pzl_launcher' and name != 'pzl_installer':
                program_list.append(name)
        return program_list

    logger = None
    version = 'pzl 28.0'
    app_name = ''
    app_data_path = None
    app_saves = None
    this_os = None
    about_text = None
    PY3 = sys.version_info > (3,)
    program_names = ['ajs',
                     'akari',
                     'arrowsudoku',
                     'binary',
                     'boggle',
                     'bridges',
                     'codeword',
                     'fillomino',
                     'follow_123',
                     'futoshiki',
                     'gol',
                     'hidato',
                     'hitori',
                     'jigsaw',
                     'jigsawsudoku',
                     'kakuro',
                     'marupeke',
                     'masyu',
                     'minesweeper',
                     'numberlink',
                     'nurikabe',
                     'othello',
                     'pzl_launcher',
                     'pzl_installer',
                     'ripple',
                     'scrabbler',
                     'shakashaka',
                     'shikaku',
                     'skyscrapers',
                     'sokoban',
                     'sudoku',
                     'suguru',
                     'sumpuzzle',
                     'targets',
                     'tetrofit',
                     'wordladder',
                     'wordwheel']

    libraries= ['ajs_data',
                'arrowsudoku_data',
                'binary_data',
                'follow_123_data',
                'hitori_data',
                'jigsawsudoku_data',
                'marupeke_data',
                'masyu_data',
                'numberlink_data',
                'nurikabe_data',
                'pzl_lib',
                'shakashaka_data',
                'skyscrapers_data',
                'sudoku_data',
                'ripple_data',
                'targets_data',
                'tetrofit_data',
                'wordwheel_data',
                'wordladder_data',
                'sudoku_model',
                'dawg']

    def __init__(self):
        operating_system = 'linux'
        if sys.platform.startswith('win'):
            operating_system = 'windows'
        elif sys.platform.startswith('dar'):
            operating_system = 'mac'
        PzlG.this_os = operating_system
        path_name = sys.argv[0]
        app_name = os.path.split(path_name)[1]
        dot = app_name.find('.')
        if dot == -1:
            dot = len(app_name)
        PzlG.app_name = app_name[:dot]
        data_directory_name = PzlG.app_name.lower() + os.sep
        package_name = '.pzl'
        PzlG.home = os.path.expanduser('~')
        path_name = PzlG.home + os.sep + package_name + os.sep
        skins = path_name + PzlG.app_name + os.sep + 'skins'
        if os.path.isdir(skins):
            PzlG.skins = skins
        else:
            PzlG.skins = None
        pictures = PzlG.home + os.sep + 'Pictures'
        if os.path.isdir(pictures):
            PzlG.pictures = pictures
        else:
            PzlG.pictures = PzlG.home
        try:
            os.mkdir(path_name)
        except OSError:
            pass
        PzlG.app_data_path = path_name + data_directory_name
        PzlG.app_saves = PzlG.app_data_path + 'SAVES'
        try:
            os.mkdir(PzlG.app_data_path)
        except OSError:
            pass
        try:
            os.mkdir(PzlG.app_saves)
        except OSError:
            pass
        PzlG.path_name = PzlG.home + os.sep + package_name

        PzlG.PROGRAMS_path = PzlG.home + os.sep + package_name  \
            + os.sep + 'PROGRAMS'

        log_file_name = PzlG.app_data_path + PzlG.app_name + '.log'
        PzlG.logger = MyLogger(log_file_name, "INFO", PzlG.app_name)
        PzlG.logger.logger.info("Start program " + PzlG.version)
        self.make_about()
        install_language(PzlG.app_name)

    def make_about(self):
        PzlG.about_text = PzlG.app_name + ': http://pzl.org.uk' + \
            '\n' \
            "Copyright (C) 2021 Rod Engerstad" +\
            "\n" +\
            "If you find a bug in this program or have an idea for its " +\
            "improvement, please contact the author via the website.\n" +\
            "This program is free software; you can redistribute it and/or " +\
            "modify it under the terms of the GNU General Public License " +\
            "as published by the Free Software Foundation; either " +\
            "version 2 " +\
            "of the License, or (at your option) any later version. " +\
            "\n" +\
            "This program is distributed in the hope that it will be " +\
            "useful, " +\
            "but WITHOUT ANY WARRANTY; without even the implied warranty " + \
            "of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  "\
            "See the " +\
            "GNU General Public License for more details. " +\
            "\n" +\
            "You should have received a copy of the GNU General Public "\
            "License " +\
            "along with this program; if not, write to the Free Software " +\
            "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, " +\
            "MA  02110-1301, USA."


class Preferences(object):
    def __init__(self, dic):
        self.dic = dic

    def load(self):
        try:
            input_file = open(PzlG.app_data_path + 'preferences.txt', 'r')
            my_input = input_file.readlines()
        except IOError:
            return
        for record in my_input:
            term = record.find(' ')
            if term != -1:
                my_key = record[0:term]
                term += 1
                my_entry = record[term:-1]
                try:
                    self.dic[my_key] = my_entry
                except KeyError:
                    PzlG.logger.logger.error("load_preferences " + record)
            else:
                PzlG.logger.logger.error("load_preferences " + record)

    def save(self):
        try:
            output = open(PzlG.app_data_path + 'preferences.txt', 'w')
            for item in self.dic:
                if self.dic[item] is not None:
                    record = item + ' ' + self.dic[item] + '\n'
                    output.write(record)
        except IOError:
            PzlG.logger.logger.error("save_preferences ")


class EditPair(object):
    """
    An EditPair is a datum, candidates pair which are part of an edit.
    """
    def __init__(self, datum, candidates):
        self.datum = datum
        self.candidates = candidates


class UserEdits(object):
    """
    Actions performed by user stored as datum, candidates, indel
    datum and candidates are stored as EditPairs.
    If we get an undo command we reverse the actions.
    Indels are flags: Egg.DELETE Egg.ADD Egg.SET_GUESS
    """
    def __init__(self):
        self.edits = []
        self.changed_datum = set()
        self.apply_ops = []
        self.undo_ops = []
        self.show_error_ops = []
        self.unshow_error_ops = []
        self.shading_ops = []

    def add(self, edit):
        """
        Erroneous edits applied to the puzzle AFTER the edit has been made
        """
        pair = edit[0]
        datum = pair.datum
        candidates = pair.candidates
        indel = edit[1]
        if indel == Egg.SET_GUESS:
            del_candidates = datum.other_candidates([])
            for candidate in del_candidates:
                edit_pair = EditPair(datum, [candidate])
                self.edits.append([edit_pair, Egg.DELETE_CANDIDATES])
            edit_pair = EditPair(datum, [])
            self.edits.append([edit_pair, Egg.SET_GUESS])
        elif indel == Egg.DELETE_CANDIDATES:
            edit_pair = EditPair(datum, candidates)
            self.edits.append([edit_pair, Egg.DELETE_CANDIDATES])
        elif indel == Egg.ADD_CANDIDATES:
            edit_pair = EditPair(datum, candidates)
            self.edits.append([edit_pair, Egg.ADD_CANDIDATES])

    def add_op(self, edit):
        pair = edit[0]
        datum = pair.datum
        cell_id = datum.index
        candidates = pair.candidates
        indel = edit[1]
        if indel == Egg.SET_GUESS:
            guess = candidates[0]
            apply_op = Egg.SET_GUESS
            wop = WidgetOps(apply_op, cell_id, guess, candidates)
            self.apply_ops.append(wop)
        elif indel == Egg.DELETE_CANDIDATES:
            apply_op = Egg.DELETE_CANDIDATES
            wop = WidgetOps(apply_op, cell_id, None, candidates)
            self.apply_ops.append(wop)
        elif indel == Egg.ADD_CANDIDATES:
            apply_op = Egg.ADD_CANDIDATES
            wop = WidgetOps(apply_op, cell_id, None, candidates)
            self.apply_ops.append(wop)

    def got_data(self):
        ret = False
        if self.edits:
            ret = True
        return ret

    def undo(self):
        """
        Unroll the edits and note changes in changed_datum
        """
        self.changed_datum = set()
        self.undo_ops = []
        for edit in self.edits:
            pair = edit[0]
            datum = pair.datum
            candidates = pair.candidates
            indel = edit[1]
            if indel == Egg.ADD_CANDIDATES:
                for candidate in candidates:
                    datum.del_candidate(candidate)
                self.changed_datum.add(datum)
            elif indel == Egg.DELETE_CANDIDATES:
                for candidate in candidates:
                    datum.add_candidate(candidate)
                self.changed_datum.add(datum)
            elif indel == Egg.SET_GUESS:
                datum.unset_guess()
                self.changed_datum.add(datum)
        for datum in self.changed_datum:
            self.undo_ops.extend(self.get_ops(datum))

    def get_ops(self, datum):
        ops = []
        cell_id = datum.index
        for candidate in range(Sgg.symbol_count):
            if candidate in datum.candidates:
                apply_op = Egg.ADD_CANDIDATES
                wop = WidgetOps(apply_op, cell_id, None, [candidate])
            else:
                apply_op = Egg.DELETE_CANDIDATES
                wop = WidgetOps(apply_op, cell_id, None, [candidate])
            ops.append(wop)
        apply_op = Egg.SET_GUESS
        if datum.guess is not None:
            wop = WidgetOps(apply_op, cell_id, datum.guess, [])
        else:
            candidate = ' '
            wop = WidgetOps(apply_op, cell_id, candidate, [])
        ops.append(wop)
        return ops

    def get_colour_ops(self, errors):
        self.show_error_ops = []
        error_op = Egg.HIGHLIGHT_ERROR
        text = ' '
        for cell_id in errors:
            wop = WidgetOps(error_op, cell_id, text, [])
            self.show_error_ops.append(wop)

    def get_uncolour_ops(self, errors):
        self.unshow_error_ops = []
        uerror_op = Egg.UNHIGHLIGHT_ERROR
        text = ' '
        for cell_id in errors:
            wop = WidgetOps(uerror_op, cell_id, text, [])
            self.unshow_error_ops.append(wop)

    def get_undo_ops(self):
        self.undo_ops = []
        for datum in self.changed_datum:
            self.get_datum_updates(datum)

    def get_datum_updates(self, datum):
        cell_id = datum.index
        undo_opa = Egg.ADD_CANDIDATES
        undo_opd = Egg.DELETE_CANDIDATES
        for candidate in range(Sgg.symbol_count):
            if candidate in datum.candidates:
                wop = WidgetOps(undo_opa, cell_id, candidate, [])
                self.undo_ops.append(wop)
            else:
                wop = WidgetOps(undo_opd, cell_id, candidate, [])
                self.undo_ops.append(wop)
        undo_opa = Egg.SET_GUESS
        if datum.guess is not None:
            wop = WidgetOps(undo_opa, cell_id, datum.guess, [])
            self.undo_ops.append(wop)
        else:
            wop = WidgetOps(undo_opa, cell_id, ' ', [])
            self.undo_ops.append(wop)

    def get_shading_ops(self, datum):
        cell_id = datum.index
        shading_op = Egg.APPLY_SHADING
        wop = WidgetOps(shading_op, cell_id, None, [])
        self.shading_ops.append(wop)

    def reset(self):
        self.edits = []
        self.changed_datum = set()
        self.apply_ops = []
        self.undo_ops = []
        self.show_error_ops = []
        self.unshow_error_ops = []
        self.shading_ops = []


class WidgetOps(object):
    """
    Widget operations:
    An operation, and a list of options:
    guess, colour,  list of candidates
    These are created by Model when the data changes
    but need to be passed through a Board function
    which sets the colours for the cell and the special cases of
    "colour candidates (effect)",
    "colour candidates (cause)", "highlight error".
    """
    def __init__(self, operation, cell_id, guess, candidates):
        self.cell_id = cell_id
        self.operation = operation
        self.guess = guess
        self.colour = None
        self.candidates = candidates


class Editor(object):
    """
    Edits performed by algorithms; either when solving the
    puzzle of when executing a hint.
    changed_datum is used to record which datum have changed!
    and guess_set to record if a guess has been set! (and hence
    whether it is worth/necessary to apply simple_filter)
    """
    def __init__(self, mode):
        self.mode = mode
        self.guess_set = False
        self.best_score = 0
        self.algorithm = None
        self.effects = []
        self.causes = []
        self.changed_datum = set()
        self.deleted_candidates = 0
        self.show_ops = []
        self.apply_ops = []
        self.update_ops = []
        self.abort_ops = []

    def reset(self):
        self.best_score = 0
        self.algorithm = None
        self.effects = []
        self.causes = []
        self.changed_datum = set()
        self.show_ops = []
        self.apply_ops = []
        self.update_ops = []
        self.abort_ops = []

    def set_mode(self, mode):
        self.mode = mode

    def add(self, causes, effects, algorithm):
        """
        Sent causes and effects as EditPairs.
        If solving append the effects.
        If hinting save cause and effect if currently the best score.
        """
        if self.mode == Sgg.SOLVE:
            self.effects.append(effects)
            self.algorithm = None
        elif self.mode == Sgg.HINT:
            score = 0
            for effect in effects:
                candidates = effect.candidates
                score += len(candidates)
            if score > self.best_score:
                self.best_score = score
                self.effects = effects
                self.causes = causes
                self.algorithm = algorithm
                self.make_ops()

    def make_ops(self):
        """
        DELETE_CANDIDATES = 0
        ADD_CANDIDATES = 1
        SET_GUESS = 2
        COLOUR_CANDIDATES_CAUSE = 3
        COLOUR_CANDIDATES_EFFECT = 4
        UNCOLOUR_CANDIDATES = 5
        HIGHLIGHT_ERROR = 6
        UNHIGHLIGHT_ERROR = 7
        APPLY_SHADING = 8
        We need operations for:
        1. showing the hint show_ops
        2. applying the hint apply_ops
        3. not applying the hint abort_ops
           ie if a user event occurs we abort the hint.
           So we need to undo show hint.
        """
        self.show_ops = []
        self.apply_ops = []
        self.abort_ops = []
        show_op = Egg.COLOUR_CANDIDATES_EFFECT
        abort_op = Egg.UNCOLOUR_CANDIDATES
        for effect in self.effects:
            cell_id = effect.datum.index
            wop = WidgetOps(show_op, cell_id, None, effect.candidates)
            self.show_ops.append(wop)
            wop = WidgetOps(abort_op, cell_id, None, effect.candidates)
            self.abort_ops.append(wop)

        show_op = Egg.COLOUR_CANDIDATES_CAUSE
        apply_op = Egg.UNCOLOUR_CANDIDATES
        abort_op = Egg.UNCOLOUR_CANDIDATES
        for cause in self.causes:
            if cause:
                cell_id = cause.datum.index
                wop = WidgetOps(show_op, cell_id, None, cause.candidates)
                self.show_ops.append(wop)
                wop = WidgetOps(apply_op, cell_id, None, cause.candidates)
                self.apply_ops.append(wop)
                wop = WidgetOps(abort_op, cell_id, None, cause.candidates)
                self.abort_ops.append(wop)

        # now add ops for applying the hint
        for effect in self.effects:
            datum = effect.datum
            cell_id = datum.index
            candidates = effect.candidates
            apply_op = Egg.DELETE_CANDIDATES
            # going to delete effects, will that set the guess?
            remaining_candidates = list(datum.candidates - set(candidates))
            if len(remaining_candidates) == 1:
                # its a set guess so remove all candidates
                candidates = list(datum.candidates)
                wop = WidgetOps(apply_op, cell_id, None, candidates)
                self.apply_ops.append(wop)
                apply_op = Egg.SET_GUESS
                guess = remaining_candidates[0]
                wop = WidgetOps(apply_op, cell_id, guess, remaining_candidates)
                self.apply_ops.append(wop)
            else:
                wop = WidgetOps(apply_op, cell_id, None, candidates)
                self.apply_ops.append(wop)

    def got_data(self):
        ret = False
        if self.effects:
            ret = True
        return ret

    def apply(self):
        """
        What to do with the saved edits.
        If solving, delete the affected candidates, taking
        note of their datums in changed_datum.
        If hinting, delete the affected candidates and
        take note of the cause and effect datums.
        """
        if self.mode == Sgg.SOLVE:
            self.deleted_candidates = 0
            for pairs in self.effects:
                for pair in pairs:
                    datum = pair.datum
                    candidates = pair.candidates
                    for candidate in candidates:
                        ret = datum.del_candidate(candidate)
                        if ret != -1:
                            self.guess_set = True
                        self.deleted_candidates += 1
                    self.changed_datum.add(datum)

        elif self.mode == Sgg.HINT:
            for pair in self.effects:
                datum = pair.datum
                candidates = pair.candidates
                for candidate in candidates:
                    datum.del_candidate(candidate)
                self.changed_datum.add(datum)
            for pair in self.causes:
                datum = pair.datum
                candidates = pair.candidates
                self.changed_datum.add(datum)

    def get_update_ops(self, datum):
        cell_id = datum.index
        undo_opa = Egg.ADD_CANDIDATES
        undo_opd = Egg.DELETE_CANDIDATES
        for candidate in range(Sgg.symbol_count):
            if candidate in datum.candidates:
                wop = WidgetOps(undo_opa, cell_id, None, [candidate])
                self.update_ops.append(wop)
            else:
                wop = WidgetOps(undo_opd, cell_id, None, [candidate])
                self.update_ops.append(wop)
        undo_opa = Egg.SET_GUESS
        if datum.guess is not None:
            wop = WidgetOps(undo_opa, cell_id, datum.guess, [])
            self.update_ops.append(wop)
        else:
            wop = WidgetOps(undo_opa, cell_id, ' ', [])
            self.update_ops.append(wop)


class MultipleEntry(object):
    """
    Create and manage multiple EntryBoxes
    """
    def __init__(self, settings, frames):
        self.callback = None
        self.settings = settings
        self.box = []
        """ how I'd like to do it
        for item in range(len(frames)):
            ebox = tk.Entry(frames[item],
                            width=sizes[item],
                            font=fonts[item])
            ebox.bind('<Return>', self.fetch)
            ebox.grid(row=0, column=0)
            self.box.append(ebox)
        """
        # nb must stop this resizing so use unscaled size!
        width = self.settings.original_entry_box_width
        highthick = 0
        fg = self.settings.white
        bg = self.settings.entry_box_bg
        ebox = tk.Entry(frames[0], width=width,
                        highlightthickness=highthick, bd=0,
                        insertbackground=fg,
                        font=self.settings.counter_font,
                        fg=fg, bg=bg)
        ebox.bind('<Return>', self.fetch)
        ebox.grid(row=0, column=0)
        self.box.append(ebox)
        width = self.settings.wentry_box_width
        highthick = self.settings.wentry_box_highthick
        fg = 'black'
        bg = self.settings.wentry_box_bg
        ebox = tk.Entry(frames[1], width=width,
                        font=self.settings.counter_font,
                        relief='sunken',
                        insertbackground=fg,
                        highlightthickness=highthick,
                        highlightbackground=self.settings.white,
                        highlightcolor=self.settings.white,
                        fg=fg, bg=bg)
        ebox.bind('<Return>', self.fetch)
        ebox.grid(row=0, column=0)
        self.box.append(ebox)

    def fetch(self, event):
        texts = []
        for box in self.box:
            text = ''
            try:
                text = box.get()
            except:
                pass
            texts.append(text)
        self.callback(texts)

    def add_callback(self, func):
        self.callback = func

    def write_box(self, text, box_index):
        self.box[box_index].insert('end', text)
        self.box[box_index].update_idletasks()

    def read_box(self, box_index):
        text = self.box[box_index].text.get()
        text = text.upper()
        if text.find('XYZZY') != -1:
            pass
        return text

    def clear(self, box_index):
        self.box[box_index].delete(0, last='end')
        self.box[box_index].update_idletasks()

    def add_letter(self, letter, box_index):
        self.box[box_index].insert('end', letter)
        self.box[box_index].update_idletasks()

    def delete_letter(self, box_index):
        word = self.box[box_index].get()
        letter_index = len(word) - 1
        self.box[box_index].delete(letter_index)
        self.box[box_index].update_idletasks()

    def colour_box(self, colour, box_index):
        self.box[box_index].configure(bg=colour)
        self.box[box_index].update_idletasks()


class EntryBox(tk.Frame):
    """
    Create and manage an EntryBox
    """
    def __init__(self, parent, settings):
        self.callback_func = None
        self.settings = settings
        self.bg = self.settings.entry_box_bg
        fg = self.settings.entry_box_fg
        bg = self.bg
        tk.Frame.__init__(self, parent, relief='flat',
                          bg=bg)
        self.grid(row=0, column=0)
        width = self.settings.entry_box_width
        highthick = self.settings.entry_box_highthick
        text = tk.StringVar()
        self.box = tk.Entry(self, width=width,
                            font=self.settings.counter_font,
                            textvariable=text,
                            relief='sunken',
                            highlightthickness=highthick,
                            highlightbackground=self.settings.green,
                            highlightcolor=self.settings.white,
                            insertbackground=self.settings.green,
                            fg=fg, bg=bg)
        self.box.grid(row=0, column=0)
        self.box.text = text
        self.box.update_idletasks()
        self.text = ''

    def keyboard_event(self, event):
        return self.key_despatcher('key', event.keysym)

    def activate(self):
        self.box.bind_all('<Key>', self.keyboard_event)

    def deactivate(self):
        self.box.unbind_all('<Key>')

    def add_callback(self, func):
        self.callback_func = func

    def key_despatcher(self, event, key_index):
        if key_index == 'Return':
            text = self.read_box()
            text = text.upper()
            self.callback_func(text)

    def write_box(self, text):
        self.box.insert('end', text)
        self.box.update_idletasks()

    def read_box(self):
        text = self.box.text.get()
        text = text.upper()
        if text.find('XYZZY') != -1:
            pass
        return text

    def clear(self):
        self.box.delete(0, last='end')
        self.box.configure(bg=self.bg)
        self.box.update_idletasks()

    def add_letter(self, letter):
        self.box.insert('end', letter)
        self.box.update_idletasks()

    def delete_letter(self):
        word = self.box.get()
        letter_index = len(word) - 1
        self.box.delete(letter_index)
        self.box.update_idletasks()

    def colour_box(self, colour):
        self.box.configure(bg=colour)
        self.box.update_idletasks()


class ClockBox(tk.Frame):
    def __init__(self, master, parent):
        self.master = master
        self.settings = master.settings
        bg = self.settings.green
        fg = self.settings.white
        tk.Frame.__init__(self, parent, relief='raised', bg=bg)
        #self.grid(row=0, column=0)
        width = self.settings.clock_box_width
        self.label = tk.Label(
            self,
            bd=0,
            highlightthickness=0,
            bg=bg,
            fg=fg,
            width=width,
            font=self.settings.filemenu_font)

        self.label.grid(row=0, column=0,
                        pady=8, sticky='NSEW')

    def set_text(self, text):
        self.label.configure(text=text)
        self.label.update_idletasks()


class MyClock(object):
    """
    A clock for ticking.
    Needs a rewite!
    """
    def __init__(self, master, box):
        self.master = master
        self.box = box
        self.settings = master.settings
        self.ticking = False
        self.start_time = None
        self.tick_interval = self.settings.tick_interval * 1000
        self.max_time = self.settings.max_time
        self.count_down = False
        self.finished = False
        self.callback = None
        self.elapsed_time = 0
        self.tick_start = None
        self.time_left = self.max_time
        if self.max_time is not None:
            self.max_time = int(self.settings.max_time)
            self.count_down = True
        self.show = True

    def init_clock(self):
        self.start_time = time.time()
        self.time_left = self.max_time
        self.ticking = False
        self.elapsed_time = 0

    def stop(self):
        if self.ticking:
            self.show_time()
            self.ticking = False
            self.finished = False

    def restart(self):
        if self.ticking:
            delta_time = int(time.time() - self.start_time)
            self.elapsed_time += delta_time
            time_left = self.max_time - self.elapsed_time
            text = self.time_text(time_left, 1)
            self.box.set_text(text)
        elif self.start_time is None:
            self.start_time = time.time()
            self.time_left = self.max_time
            self.elapsed_time = 0
            self.tick_start = time.time()
            if self.count_down:
                text = self.time_text(0, 1)
            else:
                text = self.time_text(0, 0)
            self.box.set_text(text)
            self.ticking = True
            self.tick()
        else:
            self.tick_start = time.time()
            self.ticking = True
            self.tick()

    def tick(self):
        """
        Tick every settings.tick_interval seconds
        """
        if self.ticking:
            now = time.time()
            self.master.after(self.tick_interval, self.tick)
            if self.count_down:
                self.time_left = self.max_time - (now - self.tick_start)
            self.show_time()

    def time_text(self, time_in, time_format):
        if time_format == 0:
            text = str(time_in)
        else:
            minutes = int(time_in / 60)
            seconds = int(time_in % 60)
            text = repr(minutes).rjust(4) + ':' + repr(seconds).zfill(2)
        return text

    def set_show(self, show):
        self.show = show

    def show_time(self):
        elapsed_time = int(time.time() - self.start_time)
        if self.count_down:
            display_time = max(0, self.max_time - elapsed_time)
            if display_time == 0:
                self.finished = True
                self.ticking = False
                if self.callback is not None:
                    self.callback()
        else:
            display_time = elapsed_time
        text = self.time_text(display_time, 1)
        if self.show:
            self.box.set_text(text)


class ScoreBox(tk.Frame):
    """
    Create and maintain a score_box
    """
    def __init__(self, settings, parent):
        self.settings = settings
        bg = self.settings.green
        self.box = None
        tk.Frame.__init__(self, parent, relief='raised', bg=bg)
        #self.grid(row=0, column=0)
        width = self.settings.score_box_width
        self.box = tk.Label(
            self,
            bd=0,
            highlightthickness=0,
            bg=bg,
            fg=self.settings.white,
            width=width,
            font=self.settings.filemenu_font)
        self.box.grid(row=0, column=0, pady=8, sticky='NSEW')

    def my_update(self, score):
        self.box.configure(text=score)


class Flasher(object):
    def __init__(self, widget, master, settings):
        self.widget = widget
        self.master = master
        self.settings = settings
        self.ticking = False
        self.count = None
        self.max = 20
        self.to_fg = self.settings.black
        self.tick_interval = 200
        self.was = self.settings.white
        self.fg = self.to_fg

    def tick(self):
        """
        Tick every settings.tick_interval seconds
        """
        if self.ticking:
            self.widget.configure(fg=self.fg)
            if self.fg == self.to_fg:
                self.fg = self.was
            else:
                self.fg = self.to_fg
            self.count += 1
            if self.count == self.max:
                self.ticking = False
            self.master.after(self.tick_interval, self.tick)

    def flash(self):
        self.ticking = True
        self.count = 0
        self.tick()
        self.widget.configure(fg=self.was)


class ScreenShot(object):
    """
    Code for taking a screen shot of the current program.
    For example after each step in a sokoban animation.
    Requires import subprocess.
    Caller supplies program name and a base filename.
    Snap adds a counter to the filename and creates a png file.
    The actual screen shot is made using imagemagick import function
    which requires to know the window id, which we get using
    subprocess.check_output calling xwininfo.
    The call to imagemagick is made using subprocess.call.
    NB had a lot of trouble creating an animated gif from the
    screen shots, but it turned out that it was simply due to
    using *.png in the imagemagick convert call: convert picked up
    the png files in the wrong order, so when I spelt out the order
    the gif was OK. Standard, but failing, call is:
    convert -delay 40 -loop 1 -dispose 0 *.png ani.gif
    """
    def __init__(self, program_name, filename, state):
        self.program_name = program_name
        self.base_filename = filename
        self.counter = -1
        self.state = state

    def snap(self):
        if self.state:
            self.counter += 1
            filename = self.base_filename + str(self.counter) + '.png'
            ret = subprocess.check_output(["xwininfo",
                                           "-name", self.program_name])
            items = ret.split()
            item_count = len(items)
            for item in range(item_count):
                if items[item] == "Window" and \
                        items[item + 1] == "id:":
                    window_id = items[item+2]
                    ret = subprocess.call(["import", "-window",
                                           window_id, filename])
                    break


class ColourRamp(object):
    """
    Set the range of colours used to show word counts
    """
    def __init__(self, base_colour):
        self.colours = []
        if base_colour is not None:
            self.colours.append(base_colour)
        self.length = None
        self.generate_ramp()

    def dec2hex(self, my_int):
        return "%X" % my_int

    def hex2dec(self, my_hex):
        return int(my_hex, 16)

    def generate_ramp(self):
        start_hex = 'FF811B'
        my_int = self.hex2dec(start_hex)
        end_point = my_int
        my_hex = 'FFF5EB'
        my_int = self.hex2dec(my_hex)
        while my_int > end_point:
            self.colours.append('#' + my_hex)
            my_int -= 2580
            my_hex = self.dec2hex(my_int)
        self.length = len(self.colours)


class GreyScales(object):
    """
    Set the range of gray scales to possible number of owners
    """
    def __init__(self):
        data = list(range(130, 256, 25))
        data.reverse()
        self.colours = ["#%02x%02x%02x" % (v, v, v) for v in data]
        self.length = len(self.colours)


class OpenFileI(object):
    """
    Handle interactive file opening
    """
    def __init__(self, master, init_dir, filetypes, write, title):
        self.my_file = False
        self.filename = ''
        top = tk.Toplevel(master)
        top.withdraw()
        if write:
            open_opt = 'w'
            filename = tkFileDialog.asksaveasfilename(initialdir=init_dir,
                                                      filetypes=filetypes,
                                                      title=title)
        else:
            open_opt = 'r'
            filename = tkFileDialog.askopenfilename(initialdir=init_dir,
                                                    filetypes=filetypes,
                                                    title=title)
        if filename:
            self.filename = filename
            self.my_file = open(filename, open_opt)


class MButton(tk.Menubutton):
    """
    Menu button with extra callbacks
    """

    def __init__(self, frame, image):
        tk.Menubutton.__init__(self, frame, image=image)
        self.callback = None
        self.button_index = None
        self.active = False
        self.bind("<ButtonRelease-2>", self.command)
        self.bind("<ButtonRelease-3>", self.command)
        self.bind("<Enter>", self.command)
        self.bind("<Leave>", self.command)

    def command(self, event):
        if event.type == "7":
            self.active = True
        if event.type == "8":
            self.active = False
        if event.type == "5" and self.active:
            mouse_index = event.num
            if mouse_index == 2 or mouse_index == 3:
                self.callback(self.button_index, mouse_index)

    def enabled(self):
        self.configure(state='normal')

    def disabled(self):
        self.configure(state='disabled')


class TButton(object):
    """
    Used for candidate buttons
    """
    bg = '#9AB87C'

    def __init__(self, square_index, candidate_index, frame, text,
                 font, bd, bg, fg, relief, highlightthickness):
        self.callback = None
        self.active = False
        self.square_index = square_index
        self.candidate_index = candidate_index
        self.bg = bg
        self.widget = tk.Label(frame,
                               bd=bd,
                               bg=bg,
                               fg=fg,
                               relief=relief,
                               font=font,
                               text=text,
                               highlightthickness=highlightthickness)
        self.widget.bind("<ButtonRelease-1>", self.command)
        self.widget.bind("<ButtonRelease-2>", self.command)
        self.widget.bind("<ButtonRelease-3>", self.command)
        self.widget.bind("<Enter>", self.command)
        self.widget.bind("<Leave>", self.command)

    def command(self, event):
        if self.widget.cget('state') == 'normal':
            if event.type == "7":
                self.active = True
                relief = tk.RAISED
                self.bg = self.widget.cget('bg')
                self.widget.config(relief=relief)
                self.widget.configure(bg=TButton.bg)
            elif event.type == "8":
                self.active = False
                relief = tk.FLAT
                self.widget.config(relief=relief)
                self.widget.configure(bg=self.bg)
            elif event.type == "5" and self.active:
                mouse_index = event.num
                self.callback(self.square_index,
                              self.candidate_index,
                              mouse_index)

    def set_text(self, text):
        self.widget.configure(text=text)

    def hide(self, bg):
        # next line added 2017-07-31
        self.set_bg(bg)
        self.widget.configure(text=' ',
                              bg=bg,
                              relief='flat')

    def set_bg(self, bg):
        self.bg = bg

    def colour_bg(self, bg):
        self.widget.configure(bg=bg)
        self.bg = bg

    def colour_fg(self, fg):
        self.widget.configure(fg=fg)

    def relief(self, relief):
        self.widget.configure(relief=relief)

    def swap_colour(self, old_bg, new_bg):
        bg = self.widget.cget('bg')
        if bg == old_bg:
            self.widget.configure(bg=new_bg)

    def get_widget(self):
        return self.widget


class IButton(object):
    """
    Toolbar buttons (with image)
    """
    def __init__(self, frame, image, button_index):
        self.callback = None
        self.active = False
        self.button_index = button_index
        self.widget = tk.Label(frame, image=image,
                               relief='raised')
        self.widget.bind("<ButtonRelease-1>", self.command)
        self.widget.bind("<ButtonRelease-2>", self.command)
        self.widget.bind("<ButtonRelease-3>", self.command)
        self.widget.bind("<Enter>", self.command)
        self.widget.bind("<Leave>", self.command)

    def command(self, event):
        if self.widget.cget('state') == 'normal':
            if event.type == "7":
                self.active = True
                relief = tk.FLAT
                self.widget.config(relief=relief)
            elif event.type == "8":
                self.active = False
                relief = tk.RAISED
                self.widget.config(relief=relief)
            elif event.type == "5" and self.active:
                mouse_index = event.num
                self.callback(self.button_index, mouse_index)

    def set_image(self, image):
        self.widget.configure(image=image)

    def get_widget(self):
        return self.widget

    def set_state(self, state):
        if state:
            state = 'normal'
        else:
            state = 'disabled'
        self.widget.configure(state=state)


class Toolbar(tk.Frame):
    def __init__(self, settings, image_dic, parent):
        self.settings = settings
        self.image_dic = image_dic
        tk.Frame.__init__(self, parent, relief='raised')
        self.length = self.image_dic['length'][1]
        self.buttons = [None] * self.length
        self.grid(row=0, column=0)
        self.callback_func = None
        self.consistency_index = None
        self.make_buttons()

    def make_buttons(self):
        for key, item in list(self.image_dic.items()):
            if item[2]:
                image = item[0]
                button_index = item[1]
                button = IButton(self, image, button_index)
                button.get_widget().grid(row=0, column=button_index, fill=None)
                self.buttons[button_index] = button
                if key == 'consistent':
                    self.consistency_index = button_index

    def add_callback(self, func):
        for button in self.buttons:
            button.callback = func

    def do_thumb(self, key, state):
        image = self.image_dic[key][0]
        button_index = self.image_dic[key][1]
        self.buttons[button_index].set_image(image)
        skip = [self.consistency_index, 0]
        for key0, item in list(self.image_dic.items()):
            if item[2] and item[1] not in skip:
                button_index = item[1]
                self.buttons[button_index].set_state(state)

    def thumbs_up(self):
        key = 'consistent'
        state = True
        self.do_thumb(key, state)

    def thumbs_down(self):
        key = 'inconsistent'
        state = False
        self.do_thumb(key, state)

    def do_hint(self, key):
        image = self.image_dic[key][0]
        button_index = self.image_dic[key][1]
        self.buttons[button_index].set_image(image)

    def hint_on(self):
        key = 'hint_on'
        self.do_hint(key)

    def hint_off(self):
        key = 'hint'
        self.do_hint(key)

    def do_game(self, state):
        for button in self.buttons[1:]:
            button.set_state(state)

    def game_on(self):
        state = True
        self.do_game(state)

    def game_over(self):
        state = False
        self.do_game(state)

    def key_state(self, key, state):
        try:
            items = self.image_dic[key]
            button_index = items[1]
            self.buttons[button_index].set_state(state)
        except KeyError:
            pass

    def key_on(self, key):
        self.key_state(key, True)

    def key_off(self, key):
        self.key_state(key, False)


class MenuItem(object):
    """
    Data for one settable item and its menu entry
    """
    def __init__(self, text, choices, choice_type, names, name):
        self.text = text
        self.current_choice = ''
        self.choices = choices
        self.choice_type = choice_type
        self.names = names
        self.name = name


class Menu(object):
    """
    create and manage file menu
    """

    def __init__(self, settings, menu_frame, image):
        self.settings = settings
        self.menu = None
        self.menu_frame = menu_frame
        self.callback_func = None
        self.mbutton = tk.Menubutton(self.menu_frame, image=image)
        self.mbutton.grid(row=0, column=0)
        self.configure()

    def configure(self):
        self.menu = tk.Menu(self.mbutton, tearoff=0)
        fg = self.settings.black
        for menu_index in range(self.settings.count):
            menu_text = self.settings.menu_items[menu_index].text
            menu_name = self.settings.menu_items[menu_index].name
            choices = self.settings.menu_items[menu_index].choices
            choice_names = self.settings.menu_items[menu_index].names
            choice_count = len(choices)

            if choice_count > 0:
                submenu = tk.Menu(self.menu, tearoff=0)
                for choice_index in range(choice_count):
                    choice = choices[choice_index]
                    choice_name = choice_names[choice_index]
                    current_choice = self.settings.dic[menu_name]
                    my_state = 'active'
                    if self.settings.menu_items[menu_index].choice_type \
                       != self.settings.nonexclusive \
                          and choice_name == current_choice:
                        my_state = 'disabled'
                    submenu.add_command(
                        label=choice,
                        state=my_state, foreground=fg,
                        command=lambda larg2=choice_name,
                        larg1=menu_name:
                        self.set_option(larg1, larg2))
                self.menu.add_cascade(label=menu_text, menu=submenu)
            else:
                choice_name = ''
                self.menu.add_command(
                    label=menu_text,
                    command=lambda larg2=choice_name,
                    larg1=menu_name: self.set_option(larg1, larg2))
        self.mbutton['menu'] = self.menu

    def set_option(self, menu_name, choice):
        if choice != '':
            self.settings.dic[menu_name] = choice
        self.callback_func(menu_name, choice)
        self.configure()


class LFWidgetB(object):
    """
    Used for scrabble and codeword
     """
    def __init__(self, parent, square_index, big_text,
                 big_font, small_text, small_font,
                 bg, fg, labelanchor, relief, bind, size, func):
        self.callback = func
        self.square_index = square_index
        self.bg = bg
        self.fg = fg
        self.board_active = True
        self.active = False
        self.bind = bind
        width = size
        height = size
        label_frame = tk.LabelFrame(
            parent,
            bd=0,
            relief='flat',
            highlightthickness=0,
            bg=bg,
            fg=fg,
            width=width,
            height=height,
            labelanchor=labelanchor,
            text=small_text,
            font=small_font)

        label_frame.grid(row=0, column=0, sticky='NSEW')
        label = tk.Label(
            label_frame,
            bd=0,
            highlightthickness=0,
            bg=bg,
            fg=fg,
            text=big_text,
            font=big_font)

        label.grid(row=0, column=0)
        parent.configure(relief=relief, bg=bg)
        self.frame_widget = parent
        self.lf_widget = label_frame
        self.label_widget = label

    def my_destroy(self):
        self.lf_widget.destroy()
        self.label_widget.destroy()

    def set_big_text(self, text):
        self.label_widget.configure(text=text)

    def colour_bg(self, bg):
        self.frame_widget.configure(bg=bg)
        self.lf_widget.configure(bg=bg)
        self.label_widget.configure(bg=bg)

    def set_relief(self, relief):
        self.frame_widget.configure(relief=relief)

    def activate(self):
        self.board_active = True

    def deactivate(self):
        self.board_active = False


class ViewB(tk.Toplevel):
    """
    Stick blobs on the screen and respond to callbacks
    """

    def __init__(self, master, settings):
        tk.Toplevel.__init__(self, master)
        self.protocol('WM_DELETE_WINDOW', self.master.destroy)
        self.title(string=PzlG.app_name)
        try:
            if settings.dic['resizeable'] == 'True':
                self.resizable(True, True)
        except KeyError:
            self.resizable(False, False)
        self.settings = settings
        self.image_dic = None
        self.control_frame = None
        self.outer_frame = None
        self.top_frame = None
        self.entry_box = None
        self.menu = None
        self.clock_box = None
        self.score_box = None
        self.board = None
        self.number_frame = None
        self.toolbar = None
        self.menu_bar = None
        self.images = SGImage()
        self.clock = None

    def make_image_dic(self):
        """
        image, button_index, start
        """
        dic = {}
        dic['start'] = [self.images.start_sudoku, 0, True]
        dic['hint'] = [self.images.hint, 1, True]
        dic['hint_on'] = [self.images.hint_on, 1, False]
        dic['consistent'] = [self.images.consistent, 2, True]
        dic['inconsistent'] = [self.images.inconsistent, 2, False]
        dic['show_solution'] = [self.images.smiley, 3, True]
        dic['length'] = [None, 4, False]
        self.image_dic = dic

    def do_layout(self, root):
        bg = self.settings.green
        self.outer_frame = tk.Frame(root, bg=bg)
        self.outer_frame.grid()
        bg = self.settings.green
        self.control_frame = tk.Frame(self.outer_frame,
                                      bd=2, bg=bg, relief='raised')
        self.control_frame.grid(row=0, column=0, sticky='EW')
        self.menu_bar = tk.Frame(self.control_frame, relief='raised',
                                 bd=1, bg=bg)
        self.menu_bar.grid(row=0, column=0, sticky='W')
        self.menu = Menu(self.settings, self.menu_bar, self.images.file)
        self.toolbar = Toolbar(self.settings, self.image_dic,
                               self.control_frame)
        self.toolbar.grid(row=0, column=1, sticky='W')
        self.number_frame = tk.Frame(self.control_frame, relief='raised',
                                     bg=bg)
        self.number_frame.grid(row=0, column=2, sticky='NS')
        self.entry_box = EntryBox(self.number_frame,
                                  self.settings)
        self.score_box = ScoreBox(self.settings, self.number_frame)
        self.score_box.grid(row=0, column=1, sticky='NSEW')
        self.clock_box = ClockBox(self, self.number_frame)
        self.clock_box.grid(row=0, column=2, sticky='NSEW')
        self.top_frame = tk.Frame(self.outer_frame, relief='flat',
                                  bd=1, bg=bg)
        self.top_frame.grid(row=1, column=0)
        self.board = None

    def add_menu_callback(self, func):
        self.menu.callback_func = func

    def add_toolbar_callback(self, func):
        self.toolbar.add_callback(func)

    def update_score_box(self, score):
        self.score_box.my_update(score)

    def clock_stop(self):
        if self.clock is not None:
            self.clock.stop()

    def clock_restart(self):
        if self.clock is not None:
            self.clock.restart()

    def clock_init(self):
        if self.clock is not None:
            self.clock.stop()
            del self.clock
        self.clock = MyClock(self, self.clock_box)

    def about(self):
        title = self.settings.title
        text = PzlG.about_text
        self.show_message(title, text)

    def help(self):
        title = self.settings.title
        text = self.settings.help_text
        self.show_message(title, text)

    def xyzzy(self):
        title = self.settings.title
        text = 'Nothing happens'
        self.show_message(title, text)

    def non_unique(self):
        title = self.settings.title
        text = 'Not unique. Will load randomly selected puzzle.'
        self.show_message(title, text)

    def unique(self):
        title = self.settings.title
        text = 'Unique. Please continue.'
        self.show_message(title, text)

    def do_tooltip(self, message_index, alg_index):
        text, title = self.settings.get_tooltip(message_index, alg_index)
        if text:
            min_size = 30
            size = len(text)
            my_text_list = list(text)
            for _ in range(size, min_size):
                my_text_list.append(' ')
            my_text = "".join(my_text_list)
            self.show_message(title, my_text)

    def show_message(self, title, text):
        tkMessageBox.showinfo(title, parent=self, detail=text)

    def thumbs_up(self):
        self.toolbar.thumbs_up()

    def thumbs_down(self):
        self.toolbar.thumbs_down()

    def hint_on(self):
        self.toolbar.hint_on()

    def hint_off(self):
        self.toolbar.hint_off()

    def game_on(self):
        self.toolbar.game_on()

    def game_over(self):
        self.toolbar.game_over()


class Square(tk.Frame):
    """
    Draw a box with candidates and answer
    """
    def __init__(self, parent, settings, datum, colour,
                 square_index, row, column):

        def make_frame(parent, bg, width, height):
            bd = 0
            relief = 'flat'
            frame = tk.Frame(
                parent,
                bd=bd,
                relief=relief,
                highlightthickness=0,
                bg=bg,
                width=width,
                height=height)
            return frame

        self.settings = settings
        bg = self.settings.white
        tk.Frame.__init__(self, parent, relief='raised',
                          highlightbackground=self.settings.black,
                          highlightthickness=1,
                          bd=1, bg=bg)
        self.grid(row=row, column=column)
        bg = colour
        fg = self.settings.dic['text_colour']
        width = self.settings.square_size
        candidate_height = self.settings.candidate_height
        value_height = self.settings.value_height
        candidate_minsize = self.settings.candidate_minsize
        height = candidate_height
        if datum.guess is None:
            answer = ' '
        else:
            answer = datum.guess + 1
        top_frame = make_frame(self, bg, width, height)
        top_frame.grid(row=0, column=0)
        top_frame.grid_propagate(0)
        height = value_height
        middle_frame = make_frame(self, bg, width, height)
        middle_frame.grid(row=1, column=0)
        middle_frame.grid_propagate(0)
        height = candidate_height
        bottom_frame = make_frame(self, bg, width, height)
        bottom_frame.grid(row=2, column=0)
        bottom_frame.grid_propagate(0)
        middle_frame.columnconfigure(0, minsize=width)
        label = tk.Label(
            middle_frame,
            bd=0,
            highlightthickness=0,
            bg=bg,
            fg=fg,
            text=answer,
            font=self.settings.value_font)
        label.grid(row=0, column=0)
        label.grid_propagate(0)
        value_widget = label
        candidate_widgets = [None] * 9
        bd = 1
        text = ' '
        font = self.settings.candidate_font
        relief = 'flat'
        highlightthickness = 0
        for candidate in range(5):
            top_frame.columnconfigure(candidate, minsize=candidate_minsize)
        for candidate in range(5):
            text = ' '
            if candidate in datum.candidates:
                text = candidate + 1
            button = TButton(square_index, candidate, top_frame, text, font,
                             bd, bg, fg, relief, highlightthickness)
            button.get_widget().grid(row=0, column=candidate)
            button.get_widget().grid_propagate(0)
            candidate_widgets[candidate] = button
        for candidate in range(5):
            bottom_frame.columnconfigure(candidate, minsize=candidate_minsize)
        for candidate in range(5, 9):
            text = ' '
            if candidate in datum.candidates:
                text = candidate + 1
            button = TButton(square_index, candidate, bottom_frame, text, font,
                             bd, bg, fg, relief, highlightthickness)
            button.get_widget().grid(row=0, column=candidate-5)
            candidate_widgets[candidate] = button
        self.value = value_widget
        self.candidates = candidate_widgets
        self.frames = [top_frame, middle_frame, bottom_frame]
        self.update_idletasks()

    def value_colour_bg(self, bg_colour):
        self.value.configure(bg=bg_colour)

    def value_set_text(self, guess):
        text = guess
        if guess != ' ':
            text = int(guess) + 1
        self.value.configure(text=text)

    def my_update(self, update):
        """
        jobs:
        1. set guess
        2. hide candidates
        3. colour candidates (effect)
        4. reveal candidates
        5. colour candidates (cause)
        6. uncolour candidates
        7. highlight error
        8. unhighlight error
        18. apply shading
        DELETE_CANDIDATES = 0
        ADD_CANDIDATES = 1
        SET_GUESS = 2
        COLOUR_CANDIDATES_CAUSE = 3
        COLOUR_CANDIDATES_EFFECT = 4
        UNCOLOUR_CANDIDATES = 5
        HIGHLIGHT_ERROR = 6
        UNHIGHLIGHT_ERROR = 7
        APPLY_SHADING = 8
        For Kakuro, when making some changes we must also
        update the overall cell colour.
        """

        def inherit(colour):
            for child in self.winfo_children():
                child.configure(bg=colour)
                for grandchild in child.winfo_children():
                    grandchild.configure(bg=colour)

        operation = update.operation
        colour = update.colour
        candidates = update.candidates
        guess = update.guess

        if operation == Egg.SET_GUESS:
            self.value_set_text(guess)
        elif operation == Egg.DELETE_CANDIDATES:
            for candidate in update.candidates:
                self.candidates[candidate].hide(colour)
            inherit(colour)
        elif operation == Egg.COLOUR_CANDIDATES_CAUSE:
            for candidate in candidates:
                self.candidates[candidate].colour_bg(colour)
        elif operation == Egg.COLOUR_CANDIDATES_EFFECT:
            for candidate in candidates:
                self.candidates[candidate].colour_bg(colour)
        elif operation == Egg.ADD_CANDIDATES:
            for candidate in candidates:
                text = candidate+1
                self.candidates[candidate].set_text(text)
            # make sure guess is not set
            self.value_set_text(' ')
        elif operation == Egg.UNCOLOUR_CANDIDATES:
            for candidate in candidates:
                self.candidates[candidate].colour_bg(colour)
            self.configure(bg=colour)
            self.value_colour_bg(colour)
        elif operation == Egg.HIGHLIGHT_ERROR:
            self.value_colour_bg(colour)
        elif operation == Egg.UNHIGHLIGHT_ERROR:
            self.value_colour_bg(colour)
        elif operation == Egg.APPLY_SHADING:
            inherit(colour)
        else:
            PzlG.logger.logger.error("update_square error")


class TextSquare(tk.Label):
    """
    Make our own text button.
    """
    def __init__(self, parent, settings, square_index, fg, bg, text):
        self.settings = settings
        self.square_index = square_index
        self.callback = None
        self.active = False
        font = self.settings.value_font
        width = 2
        height = 1
        tk.Label.__init__(self,
                          parent,
                          bd=1,
                          relief='raised',
                          highlightthickness=0,
                          highlightbackground='gray',
                          bg=bg,
                          fg=fg,
                          font=font,
                          width=width,
                          height=height,
                          text=text)
        self.grid(row=0, column=0)
        self.grid_propagate(0)
        self.add_bindings()

    def my_destroy(self):
        self.destroy()

    def add_callback(self, callback):
        self.callback = callback

    def add_bindings(self):
        self.bind("<ButtonRelease-1>", self.command)
        self.bind("<ButtonRelease-2>", self.command)
        self.bind("<ButtonRelease-3>", self.command)
        self.bind("<Enter>", self.command)
        self.bind("<Leave>", self.command)

    def command(self, event):
        mouse_index = None
        if event.type == "7":
            self.active = True
            relief = 'sunken'
            self.config(relief=relief)
        elif event.type == "8":
            self.active = False
            relief = 'raised'
            self.config(relief=relief)
        elif event.type == "5" and self.active:
            mouse_index = event.num
            self.callback(self.square_index,
                          mouse_index)

    def colour_bg(self, bg):
        self.configure(bg=bg)

    def set_text(self, text):
        self.configure(text=text)

    def my_update(self, updates):
        fg = updates[1]
        bg = updates[2]
        text = updates[0]
        self.configure(bg=bg, fg=fg, text=text)

    def get_fg(self):
        return self.cget('fg')

    def get_bg(self):
        return self.cget('bg')


class SGImage(object):
    """
    Images
    """

    def __init__(self):
        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AGqzAG62A2+2BXC3B3G3CXK5Cni7FXi8FX2+Hn+/IH/AIoLAJorENIzENpDH
QJDIQJTJRZfKS5jLTZ/PWaDPWqTRYa3Wcb3djc7mrc/ortDmrNjrvN3uxP/+/wAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/942ChgsGDCBMqPGiBg8B/FhZInEixosWLFgZe3MjRIsGOIDkWDFkxQQKQBklKTBDAgYMA
JzemJJlAQYebHRTEtDgzZACcOAPIrEATAtCbEBBc7NkRgYOjHRwo5Um0JIKrWBH8PBoAwc6JTBcU
YCAhgtmzECIAjQBBAoMCFZkW2AC17tENcMFWXZCAgd2/OBko0DsRgQTAgCVMXdATgVrEdiMsbnz4
woABFyDjlExYIoIJGoQuCJBZM2eJTBEcoDhAc4fTjPcuUM3aNezGEzCIJn3UMuajt/ca7nChwG+g
F3aXvhm88OG/A2rjVNx59nO70Se2nj55b1/AySXyPw48GLXsuYAxHDiQASheimHHlj17VgKFqxTK
us1bfWKCrABOldVXqEWk0oENHXigQwYq2FFGAhG00IQUNiRQQAA7
""")
        self.file = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AGSxAG+3BXC3BXC3CHG4B3K4CnO5DHS5DXa6EXi7FHm8Fnq8GXy9G329HX6+
IYC/IYLAJoPBKYTBKYnDNInFNJDGPZHIQpbKSZ/OWaDPWqTRYajTaKjUaa3Vca/WdbTZe7TZfbrd
iL7ekMDfksfjoMfkoMnjocnkoMvlpMzlp8/ortHortHnsNTps9rsv9rswd3uxODuyefz1unz2er0
3ez13u324e/35PH35vX67ff68Pn79f7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9g9FBg8GDCBMqPNgBhsB/HSRAmEixosWLFzsMxMix40WCHi1KkBgSQsGSEB4gQPCApEeD
JR9AgAGDQcuQMEMW2MGDh40CLjnm9BigZ08CJYd2JGA0R4GkGiwyCBAAAQSJBWj0jAF0IoIAAhgE
VcqAQ08UAcQiaHHWKoMCKnpmEEtRaQGjPSkUSBCiZ4e3FvDq6DpRaYIReHmIAIChpwUAJRJ/YFBR
KYQCF2zgxeGgZwKeRmlUIFw4qlQBEtgmxosCAgG6lU1fVFmgAw68NDgIYClUNsWRDgrU1hxaN8uR
Fy1LYICaxWrWwWHX9S0Bs1ajnD2D7imjgtXYFROIb0g8grFjACgkU55e8S5evXz9AhZMmqxZHmjV
qi6RAMLbFXKtV5pUVH132XVckfRVWBZZhhFTPTkFVUlFGfUUTr5xtFNPPwWFkYOzSUCTAzJhiJJK
vCXVAUosUtRQiy06tCKMIWkkEEEL5ahjQwIFBAA7
""")
        self.start_boggle = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AGizAGq1AG21AnC3BXK3CXK4CnS5DXa5EHq8GH29G4LAJpLIQqTRYa3Wcd3u
xO724vn89v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9c9CAgcGDBRkkXGiQoUIHAv81UECxosWLGDM2GJixo0eMBD+K9FhwpMmLBi8WGCCApcuW
MF8OGFAAJQOLBx5E2Mmzp0+eD2pWTFlRwM+jRwdYJErRKNKnOwUsvVmxAFSoBqZeNJCgq9evYL1m
1WqxgICzaNOqRSt0KFWKBXRe/RmUbNO5SKW6teh0QYEDC3b6BSz4b+AIeikyVeAUAEUAOx0rgBxB
MuXEChY71bv5LmLPmDXvTHA2wejSpwWY/ry3KN6jod8yfv0zNt/ChCMMPrw7qt3ZlR9HFh58su/W
oJMD53xcsWynpFWnXh19tW3XtHtehwsh+04IbTPLJVZgdq35tOHFn1yfeSJ7kw0cvDcJ0f38jhsF
EjzIv79///EJFBAAOw==
""")
        self.start_codeword = image
        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AGu0AGy1AW62BHC2BnC4BnG4CXK5DHS5Dna6Eni7E3i7FHm8FXu9GX2+HX+/
IIC/IYK/JoDAI4LAJoTBKobBLYvENJHHP5LJQpXKR53NVKPQX6TRYajTaa3Wca7WdLDWdbfbg7nb
hbvdiLzdjcDfksLglsThl8XhmsfjnsjjoMnkos3mqNPpstXruNjrvNztxODvyeHxzun02uv03PH3
5vr79/r89v/+/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9e9Fhg8GDCBMqPNjhhcB/HShImEixosWLFzsMxMix40WCHkN2LCiypEWDJi8mIJBA4skN
KSVIbADAxA0RCS6iTPkAQIYbQG8c0AnT5IEGMoICpfDgZUmaKZQGHeoUo0QKDgBokBrUQgOiViU8
OPCABtcbJgB8BYsxQYEVZ2U0oIpxp0UCHM7eyAAgpF2KCU6cTbvW49+JBLi+mGvysITEUlWwbFy0
YgIWZz+oFen48YizNiociOCybmWLCRLEONviQE6OnSf2xKC3w2a2HWmKAE2hMMXYqBPAOEv39+mQ
AC5wZVrVJE0QSotPBN4xtYsbKl5XpO7xwGTcMf12FQhfsiF5kQ7Hn+eoUSDBhfDjNxQYEAA7
""")
        self.start_futoshiki = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AFmsAGWyAGiyAGq0AG21Am+3BXC3BnK4CHa6EXi7FHq9GXy9Gn29HX+/IIC+
IoLAJo/GPpjKSZnMT53NVKDQXKTRYarTa6rUaq3WcbDXdrLXeMXim8nkosvkpNjsu93uxOfz1+32
4Pv8+fz8+v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9+4ChgsGDCBMqPIjhg8B/GB5InEixosWLGAZe3MjRIsGOIDkWDEmyosGJBFKqXMmypcqJ
Jx8QIEGzps2bOGsSkBhzZs6fP3c+6EkTAAEDR5MiXao0JQCaQomS2OmyKlWoPCtI9JkSaE6kWIdq
lQnVp1ebCLhm3VqWZoi0HLwqUCuW7VSfBxw8CCCXrtSuU7eGAOrA71iuPjkEIBDhJgibDQzbBez2
poWUE2imDfvXbE6hChJQUGCA8+G2ND1AiEszggKKryWTvatTAYIDGTQguCgbMU0LryUqCG6xd9sN
BkoaD0wgQcnZUU+TMGq16tPAdWefPRvd7nav3bdWHh+fEubY5yQrRERPsiF7kg7Xv9+YUSDBhfjz
NxQYEAA7
""")
        self.start_jigsaw = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AGq0AG62Am+3BHW6D3a6EXe6FHe8FHi7FHm8Fnq8GHy9G3y+HH6/IIC/IoLA
JofCL4zFN6TRYanUa6vUba3Wca7WdLDXd7bagbjbhL/ekcDfksPhl8XhmsbincrjpMvlpczkp83l
qNDmrdPps9PotNTps9Tptdbqudrsv9ztwt3uxOn02u314Pn79f///wAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9U0EhgsGDCBMqlGCQggqB/yg4mEixosWLGC0MxMix40WCHkN2LCjSAYEBAwg0EGlQpAIU
KmJCWOmxpccEGFzodHGCQEibHXHudEHCZ80IIRNcGFr0J9KbS3c2PZo0qs6pHYFyVJBTqtGsTykm
IECWbAAKQ0MEKEs2gUWtCTiE+ED3AwcWQ1twqPshBAe3FIEqQDu0sOGhEhQEDqvAwuHHhRMvpjgY
smUXkicKJnz5cGYHWglo4ECadIYVeeXOpashAU3QYScmGEv7bNq1bAFPhsr0K0etGJX2dlp1ONWb
Xa/6xgj8olCvxJEP7RndowIRJLI/eP07dke23H9LFyxJfqLD8uUfjkfvkQJEggrjyz/oUGBAADs=
""")
        self.start_kakuro = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAKUwAGu0AG62A3C3BXG3CXG4B3G4CXO5DHa6EXm8FXq8GX2+Hn+/IIC/IoHAI4LA
JoTAKofDL4fDMIjDMYnEMozFOJLIQpPIRJTJRZbKSpnLTprMUJzNU5/PWKTRYafTaa3Wca7XdLTZ
fbfbgrndhsPhmM3mp83lqtTqt9nrvt3uxN7uyO/24/D45vT46/b67/b68f//////////////////
/////////////////////////////////////////////yH5BAEKAD8ALAAAAAAgACAAAAb+wN8v
Bep0PMckcpk0Op2flPAHcliv2KxW+/gMt+CwNvURm8OfzjmsaC+yxrXiQD9YFZXPp6LAxs0EFCct
LSYPCQ8wijASb1Z/VgwHfVZ0KouLDxiYGZQOkAwSKhsAAgMimJgVFZgYnpAKHIsvqamrra9qd5u1
vbeLrlewvL22rMC5VwrExYu/isGPug7Lzca4wtPV1s7H0Mm73N3Y0srMmCwmJiuKEt4w0Z/aGbUv
EgB0BA8dB8zxoA5SjQDgyQGDNv7AWVlAIAQKEnPAbPuWTUuCAwkYsElYcU2WifAUegyHrONIkhTL
nbxDb1EnkycXSMAEwZG8lcry7CkICaccggRt4JTBaSYKUTNShh7V4kUImSdQo0o1EkVIEAA7
""")
        self.start_minesweeper = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AFutAGKvAGWyAGizAG21Am+2BHC2BnG3CXC4B3G4CXO5DHW5Dna6EXm8FXm7
GHu9GXy9Gn29HX+/IIC/IoHAIoLAJoTBKIvFNY/HPZHHQJLIQpXKSJjLTprMT5rMUJzNU5/OWaHQ
XKTRYafSZqvWb63WcbDWdrHZebTYfrbagLrchsDflMDgksrmptbquNztxOLwz+by1O/35fH36PH4
6fT57ff68fj78vn79fr89/7+/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9e1FChMGDCBMqPFjihcB/JSxYmCBRIkWLFSdmvKjRQomBGTtilCiB40iOFF+QGMnSggQD
Gy4YuGjSQoWKBTfqZCBCh88bEiSERGnBYEWaFSVc8MlUx0yWHI2GxMggRlOfIkoeDSmVqMQEVq9+
ENqSotSWLpc2rWFgqsiuGSUkQIDAQIIWMV6IAEAXQQKhF28WFTFUwoYZa2fUuNFUxtiKgs9qNHC1
8tW2JiVLpGy5c9uRkilyVrGicwkXPj9n1GyBs4YAnQWQ8ImAJesEPjdwrmzgBG2dmidIyI3AM4rU
WwdP5azb8wefCaayFi4ct+W/CaITZT2RonUdLFIwbmVA0atyt96ZChBQA/rQ1YTdfmXq14b7sufR
f6/v3nx+t/slYJ8O0eHHXUUBDniASKDFJ1+AjBH4XkUHSlQcbd9hdpJEFUrEQAZBCbcBA/JRGFGJ
JMWFokQNreiiWw6d+OKLHwlE0EI45tiQQAEBADs=
""")
        self.start_sokoban = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAIQTAG63A3K4CXW6Dni8FX2+HoC/IoLAJorENJDHPpLHQZbKSprMT6TRYa3Wcbnd
iMLglsThlsvkpd3uxP///////////////////////////////////////////////////yH5BAEK
AB8ALAAAAAAgACAAAAXz4PdJDWOeaKqejSR+jSHPdG3fzXjvvE32QF4pSKyZikjDcUdoOp/Owm1J
IxgWiqx2m10YrEZGTTopm8/oiUFKo8oIi7TcvADP3F9F+XF4TCIICQ4TfH4TCnYyeAR6EwcAB4cB
AQWOkGWIYTWMe31/gYOFmIlKYlWNc2mZbaYznISegIKwhqt3rW+Nj5EKk5W7o5qnnX6yoZ6HpIuo
qWe2irh5xJ+zosnCrrqXvZSWkdesm42ixrTB4VVxzWh12DJk62dr7m9XXPcKXqSlNwVQ/1GmREvC
Aw/BHQYP2mAQQ2GPFg57uGgYsUYOESRWaNzYQkQIADs=
""")

        self.start_sudoku = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AG22AW+3BHC2BXG3CXC4B3G4CHO5DHW6DnW6EXi7E3i7FHm8Fnq8GHy9G329
Hn6+IIC/IYHAI4LAJoPAKITBK4bCLofEMYjDMYnDNInEMYvENo3FOZDGPpHIQJTJRpbJSKLQXqPR
YKTRYabTZqjTZ6jTaa3Wca/WdrHXebHYd7LYebTZfL/ekMDekN3uxOn01/L56fr89/7+/gAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9c1EChEERCEWMSMiw4cKFJlwI/GdigsWLFiNEoLCRAsePHzdq9JhiIMaTE0aKDOkxggWN
LzW6qIgSo0qPHGNqFPmSggkQNU+O5Cgygk2iERYGFbozJgWmL5UutelyZAOjF4tKnZpV44QAHT4w
YJCx6lauFiFEOABDhtsLEMomFYH2JIQGbt22YBBX7dy6J/Hm3XsSBF3AFwPEyHsBpWHEDJ5OOICQ
QuTCh7mC7YAgLoALHA5cxvhYc14ZEwC0fTvaYumpF06vOHCaMOnMQRnEzju7NtnbU58SOJ168du4
wGtCWM4RgYgSyyeDKDHhN0aENQNQuHDAs3cKor8ieb+O2yLbvBBUowfwIi+F8RaxY4RA4XQKCLJp
52VhPX55CLu5hcIEsiHg20nyYRTAaRcAwKCDeXHQ2gQJYsRACitcQNaFGZKFwAkrbNCff7nxddFY
46FYU4WIccVii0uJQBOMXEVEI1oSzXgjSiZMNFNDQAYJZEQCBQQAOw==
""")
        self.start_scrabbler = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AG63A3K4CXW6Dni8FX2+HoC/IoLAJorENJDHPpLHQZbKSprMT6TRYa3Wcbnd
iMLglsThlsvkpd3uxP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9k9CAgcGDCBMqPNhAgsB/DQxInEixosWLDQZe3MjRIsGOIDkWvFiAgMmTKFEWuGjQIgED
CxTInElT5gIDLyu2pLhygs+fQINOMLCS4s6JBBYIXfpzQc6JRyUSUODzAYKaMxE88KngqcSoOKlO
QDAg5ckBCLh6NQB2qk+yZk2iVauTQUW3E6xilamVrlG7FPEyFdq17l2xg4MW/ns4MeG1bcU+OLA1
AoIEDvJS9gsVMFKxBwAcmKAgQIACE0KPJg3Zs1TJmy1j1ryVteHAiB1z/uo6bNXYlzNPrr24c+PU
okmbRq16N9veeIdPkC18s23GuHUDLc77uHTqtJ1HP/bZvPRp5Ku5P/cOfLb068YDK9Xu0+ntiT3p
Dy0KNeJdmHvVdNNaBjREUlxx8UeRQ/6F5GCBDxG00IQUNiRQQAA7
""")
        self.start_sumpuzzle = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AGOxAGWxAGq0AGy1AG62BHC3BnG4B3G4CXS5Dna6EXi7E3i6FHm8FXq8GXy9
Gn2+Hn+/IIC+IoDAIoLAJoXCLIvFNozFN5zNU53NVKTRYa3Wca/WdrLXebLYerTZfrnbhL3djc3m
p9LostXpttbqutzswt3uxOHwzOby1Onz2ev03uz13/H46PT57Pn79Pn89vr9+Pz8+f7+/gAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9M6Ehg8GDCBMqPLjBhMB/GihMmDhRIsWLGDNO3DBQo8ePGQmCnGCgwMiMBS9apGhAhowD
EiUqiADSIEaYDiQWcHlgYoQCJhTUzHBRwQgZDnLufDnhJwqeKzHapKjghcukS3sWeCqDAoSPUykW
YOGSggIPGhwoWOFygoOhGcfKAKGggIcDDirIcDsybFEOJWHIgFHAwQGafYlOLFmg8IICgl3KKBzV
49SWki8ciCx5cs7EE5e6vHChc2fKcCdCcBChdQESpiWjtqz4ouGfR2N7rkwxrEQHC2RUcFAgt8sT
IVzOllrbrQLJWkW4XBHArvLPzCnSdElYrHTqPz9ceq8c1oGHwQUQh5aOIr313Rf9HtCwQGMB9u7P
e47fnK/H+zK095N+6fXW30gACvheTxP5ddIECbp31AhCTeDggwkGEIBgFCB2IYbStdDWWw0e+CCE
uflX4on2eUABib1pwKJGrKFkwownOiQjjiBp8BBBCwUppAYO/RMQADs=
""")
        self.hint_on = image

        image = tk.PhotoImage(data="""
R0lGODlhIAAgAKUzAGOxAGWxAGq0AGy1AG62BHC3BnG4B3G4CXS5Dna6EXi7E3i6FHm8FXq8GXy9
Gn2+Hn+/IIC+IoDAIoLAJoXCLIvFNozFN5zNU53NVKTRYa3Wca/WdrLXebLYerTZfrnbhL3djc3m
p9LostXpttbqutzswt3uxOHwzOby1Onz2ev03uz13/H46PT57Pn79Pn89vr9+Pz8+f7+/v//////
/////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5
BAEKAD8ALAAAAAAgACAAAAb+wN/PtMkYj8ik8qgxCX+biXRKrVopVYpmaO16vybN11swjCeazDii
mGApB5nMTMVOjWOFqRCRxmUFbg5wVXhdcHIofBN/BRQODjIjbXdqXhAUiYGNkHIvlFKGXg4TcisK
DhoeCpkyLIFUoqOlFQ4HHgUKIK6wsZZrBw4FMDIwZRygvmeCBXJyxgvCBWWVZ4/Nzs8HF9l0slfC
2dkX3M6w33Xh4nIkfBERDhDVh+rrI3zBVujMciEn2fccVJARzc28dNhwBVghR8QmZ6iUIZTzgc9C
GQ6nDJMzoU+oX/xk4IpQAAXGXh03eiD1kYq6kSVPdlmg4YDElHJgmsw46+ZEH50yl81TMEISn5g8
hbbsmAlGgAA7USoVRUpOi6BKD06oajRrIZBbKeDyWkhMFXhkqzRJu8yJWbZdtggJs6Su3SZCggAA
Ow==
""")
        self.hint = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AGu1AG21AXC2BnG4CXO5DHa6EHi7E3i7FHm8FXq8GHy9Gn2+Hn+/IIC/IoLA
JoTBKYbDLYnEMorENIzGOpHIQZPIRJTKRpXKSJjLTZrNUZ/PWaTRYarUa63Vca/XdrDXdrHXeLPZ
erPZfLTafrXZgbjbhbvdicDgksfinsjjocnkodXqt9bqutnrvtjsutrtv9rtwdztw93uxOr02vD3
5f///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9k9Fhg0GDHA5uSIhQocMPMgT+6+CgosWLDy5WfMDRQUaPHT8M1EiypMWMHTc6IGiypcaP
HFF+2ODSYoMFCxqQTOnRgUGXDQoEcHDhgoMABRi87Pjgp8kBEVjUmEqVRYQBOl/6pEmSgQAXVMNS
dTFA6UaUTi8yKCC2LdUCWVWmtTjArd0aQ1U25UoXLNUMIsKCyBBWxoCTWy8uiBC2w4AAfl0EGPAh
bIS4ey8WkEr1woIDJaaSOLDgQlgWBeTyPSrWMeSpKyZ3EJvXY1qdbS/MpsrBtFgHOjOmLX23eI0L
ZjNXJG7cLnKLtx24nfEBAwYRNNwCBzk3QNsJAUh/jw7gO2ztxBYL+J06YAGDBQVIO1hQd2xq6KsX
U9UQIEAEESqg8MFR5FEVwQIXzeXAADJMdYIKdqlgwlSGaaSgAwI0F5YAJF24loY1JNXhahZ51eBd
MgQQV4IkXgQVZ6dd1dKFaglFlFFImWUSjSTdlFNNFW1AEZBEXtSBDEUmudJESgLZgUQEOSTllFIe
KVBAADs=
""")
        self.smiley = image
# sokoban image
        image = tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AFutAF+vAGqzAGu0AGy1AW+3BXC2BnC4BnG4CXO5DHS5DXa6EHm7F3i8FXq9
GXy9G32+Hn+/IIC/IoDAI4LAJoTBKYnEMovENJHIQZPIRZTKRpXKSJrMT5rNUaDPWqTRYarUa63V
ca/XdrHXeLPZerXagLjbhb3ejMHgksTimcXinM7nrNPpstXqt9bqutnrvtjsutrtv9rtwdztw93u
xOby1er13e724PL46vX57ff68vj69P/+/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9oxHig0GDIA4mRKiQocEQNAT+C0GhosWLGDNSqMCRIwURAzWKHHmxAgWCJFNa7GiSQkGV
FCRAgCAhpUmDJCMsIEBhwwYKBBZEwNixYsKRCCy44MG0qQsLCDTe/KAxgoEXTbM2fWFgaEWPFI5i
1Km1bNMGNVdSwInRgNm3PHh+NUr1IgKsTTuQyDqiQ1YaUeeyrQjBQtYQCAjgfUEAgYisFrzSvbhg
adMNEBqYYFqiAYQNWV00EFy3IgGtiBUzZdE4hFa5kyvWLLvBdVMQoLViHPwZrm8eGySLpdD799vg
FgfPNm4W43CgWVXkeJtDhY6mBi4OprAAL48ABCCEj2Bho8YKEA0QBLjO40XgitsLN1VBIAIEBAsQ
eI5AoETTyNqVVtEBNDSFQngXQUDACU3RcMBuAlbkVlM5cNBYYh6wx1R2EGZEllY23FCWUBltZ5FV
BcJFAwFpdShSUpaFBtVIJo61U08/BSWZRjVqJBNNMH1AEUxEVgRRkUVGNCSSJIUgEUEHRSnllFNC
JFBAADs=
""")
        self.happy_smiley = image

        image = tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AGezAGqzAGq0AGy1AG+2BXG3CXG4CXO4DHS5Dna6EXi7FHm8FXq8GXy9Gn2+
Hn6+IIC/IYHAI4LAJoPAKYTAKofDMYjDMo3FOY7GPJDHP5LIQpbKSpnLTpjMTp/PWKPQYKTRYajU
aarUbKzVbq3Wca/Xdq/YdrLYebTZfbrbh7zdir3ejsfinsnjocrjpMzlp8/ortHor9LosdXpt9br
udvtwd3txN/vyuLvy+Hwzeby0+fz1+714fj78f7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9s0EChMGDCBMqPEjChsB/JChImEixosWLFSlQMDEQo0eLDhAYgHCR4MeTDj748OHgYsGT
HxHwWDkDgUWDMD0iWOkjh82KOHNaVGCCJ4yfFIMKpRiAp48RLYGCWMp0htMEF5UKDcDC6Q2kSacK
TYBAh1OWGLViDElAxVmWAAKQlUqRggIECBQYUJAAhdW3PZzaQKq0r9MRKN4qXmmBpISgJN+6XfwW
68SgDji8paH4BQcPoD2ACBD1sVgHG97+pewUQ1TMqc+uZr1Sh2XYqmk7VaFAIm7Zb0mMGE48xQfC
p2M7nb34Bmm6ElDn1u0aunTgusGannh9+VkJGDJIWLCAAYP27dE1n+W8WIMCxzfFQqjwtutiG5az
ipWA4IXTFwpQtkFp8VWEgAMZZBASBAhIlFECBN5EwkUOwCcBBBhmaCFGDVFFlUMTeggTCQ8RtNCJ
KDYkUEAAOw==
""")
        self.consistent = image

        image = tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AGezAGq0AGy1AG+2BnG3CXG4B3K4CXO5DHS5Dna6EXi7FXm8Fnq8GXy9Gn29
HX+/IIC/IYHAI4LAJoPAKYTAKIfDL4nDM4rENYzFN4vFOI3FOY/GPZPIQ5bKSpnLTpjMTp3PV6PR
YKTRYajTZ6nUa6rVbKzVbq3WcbHXdrDYd7LYebTafbbagLvdir3ejcfincjjn8vlpczlqM/ortHo
sNXpt9brutvtwd3txODvy+Hwzeby0+jz1+714/j78f7+/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9w3FChEGDI0QkXKiw4UKGJ3AI/HdigoSLGDNq3CiBgkePJwZyHElyI0GMEyw20AihpUsI
Gz+CFHExpQEJFy48uGnAYsYJChr43GiwpgEZP5L+gLFAqdOkHYRi/Cih6AQIFZ4u1aoUhwKOFBJe
bOBBqw2uSTkseJDRY1WaEx50MPu0Qc4HEy5ouKlRrIQGc5/SQPuUb8e3EuIGdnqWsFINbC+Gpfl3
sdLBjn/kECD1olW5dJ+iIEHiBGkRLET0vOgXsFbMmZO6WOAZLuinjWP/4LFa7ASyr3Un3RC56N+y
uLnK8HBQoQDatS/C1OpC+I+v0S8qSOGUBHfhFzAahb+4oECDBgUWLEgB26kPpzhWIy7ZwICB6nUB
CFAgf35J7QbwUBdMGo3330UCwOBUDoaJR9mBGAnQHnYZGQihBAJ0t1KFD14owXqXQeeghxkZoJQO
/flHogE9JEUDhZ6dQCJGDYiQVAMQDCVBRDPSaB+BGUkkY48khSQQQc0lqeSSBkUkUEAAOw==
""")
        self.inconsistent = image
# futoshiki images

        image = tk.PhotoImage(data="""
R0lGODlhJAAQAKU3AFlZWV9fX2FhYWdnZ2lpaXFxcXJycnZ2dnd3d3h4eHl5eXt7e319fX5+fn9/
f4GBgYuLi5SUlJeXl6GhoaOjo6SkpKioqKmpqaqqqq2trbKysrW1tbi4uLm5ubq6usLCwsPDw8bG
xsjIyMzMzM3Nzc/Pz9nZ2dra2tzc3OPj4+Xl5ebm5urq6uvr6+3t7e7u7vDw8PT09PX19ff39/z8
/P39/f7+/v///////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACwA
AAAAJAAQAAAGksCbcEgsGo/IpHLJTNpur9ft2azanh8AADSlVpHU2GIhTDRkQu93+LRtEKPuTXTo
pNfpZ6pggU3vLxUGLHJ4EwQtNUg1KwIZX1QtDxJ3R1QQEFJ/SjMaCiFrHgwcNJtFTyYMGGhXTK0u
FA4qppsXBCpta20oAR+FNzMDEZV4mwkOikMnKb/FmyQlbMTORFRq1E1BADs=
""")
        self.lt_1 = image

        image = tk.PhotoImage(data="""
R0lGODlhJAAQAKU3AFlZWV9fX2FhYWdnZ2lpaXFxcXJycnZ2dnd3d3h4eHl5eXt7e319fX5+fn9/
f4GBgYuLi5SUlJeXl6GhoaOjo6SkpKioqKmpqaqqqq2trbKysrW1tbi4uLm5ubq6usLCwsPDw8bG
xsjIyMzMzM3Nzc/Pz9nZ2dra2tzc3OPj4+Xl5ebm5urq6uvr6+3t7e7u7vDw8PT09PX19ff39/z8
/P39/f7+/v///////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACwA
AAAAJAAQAAAGk8CbcEgsGo/Im024TDqNzebtlFJKn8gmqUScDSJMbFaYcNSGzQtBtbxi26jAx0pc
mhgYGf1pW7ooDipKSTMaCiFiQx4MHDSDYzctDxJhR00QEC+VYhMELWdHNSsCGYl1SykFFjCPSy8V
Bix7poM2GwgjdCIHHZu0lTELC2QNeo+/RX03HwAAILPIljcvmm7R19jZQQA7
""")

        self.lt_2 = image

        image = tk.PhotoImage(data="""
R0lGODlhEAAkAKU3AFlZWV9fX2FhYWdnZ2lpaXFxcXJycnZ2dnd3d3h4eHl5eXt7e319fX5+fn9/
f4GBgYuLi5SUlJeXl6GhoaOjo6SkpKioqKmpqaqqqq2trbKysrW1tbi4uLm5ubq6usLCwsPDw8bG
xsjIyMzMzM3Nzc/Pz9nZ2dra2tzc3OPj4+Xl5ebm5urq6uvr6+3t7e7u7vDw8PT09PX19ff39/z8
/P39/f7+/v///////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACwA
AAAAEAAkAAAGl8CbcEgsGo02YfJYnJ2YxOQgBSVeIrflMWkiZKu3GUP1rWowNi3y1lLIwMlHqLy9
TST0dcqbRxZacDcbFjVqSDEIMIELI2BCHwt9Ri8AkpOVhkwgCZZRNw0ijlkyBy+OSR0VhaIGK6c3
LAJKVUkZEJ1DSRAeuF8vDC6iNxwUaY40Dii9SSoBokkfnJlFSQ4kzzUlz7PCQkEAOw==
""")

        self.lt_3 = image

        image = tk.PhotoImage(data="""
R0lGODlhEAAkAKU3AFlZWV9fX2FhYWdnZ2lpaXFxcXJycnZ2dnd3d3h4eHl5eXt7e319fX5+fn9/
f4GBgYuLi5SUlJeXl6GhoaOjo6SkpKioqKmpqaqqqq2trbKysrW1tbi4uLm5ubq6usLCwsPDw8bG
xsjIyMzMzM3Nzc/Pz9nZ2dra2tzc3OPj4+Xl5ebm5urq6uvr6+3t7e7u7vDw8PT09PX19ff39/z8
/P39/f7+/v///////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACwA
AAAAEAAkAAAGlcCbcEgsCm1Ho/I0UypTgxvSmYxcqEQkwSTFIlWMJlZqw2jGQ5mi1aUiQ4+2+yaZ
yJVTQurubBWmXjUWG3xKMAgxgFgjC4VFSAsfaF0AL2hIlWNICSCTIg2ORC8HMopGNjUVHaFDKwaa
QgIsrEgQGbQ3HhCsQi4MlqZZNhQcsCgONJMBKrgJksFFJA68QiU10I9Jk5NBADs=
""")

        self.lt_4 = image
        image = tk.PhotoImage(data="""
R0lGODlhJAAQAIAAAP///////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACwAAAAAJAAQAAACFoSPqcvt
D6OctNqLs968+w+G4kiWUwEAOw==
""")

        self.blank_1 = image
        image = tk.PhotoImage(data="""
R0lGODlhEAAkAIAAAP///////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACwAAAAAEAAkAAACFoSPqcvt
D6OctNqLs968+w+G4kiWUwEAOw==
""")

        self.blank_2 = image

# scrabbler images
        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AGy1AG+3BHK4CnO5DHS5DXa6EXi7E3m8Fnq8GHy9G36+Hn+/IIC/IYLAJofC
LYjDMYvFNJLHQ5HIQZPJRJTJRpXKSJrLT53NVaDPW6PRYKTRYabTZqjTaa3WcbPZe7bagbnchrrb
iLvdib3djN3uxOLwzenz2e324vX67f///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9I9FBg8GDCBMqPNiBhMB/HRw0mEixosWLFzsMxHiRgQIFDDhaJCiygQIBARxUqOAggAAF
DSRiLMhRQYAOJlLo3GmiQ4ACHA1adLAgAIedSJP6XCCTotCKDAKUSJriwoQTSUsEWGDxKcUAKKh6
EFBgAlUUWyt6bSCVaooPBxRUcKtVrQaKCjS4fRt3rtsOB5zenRhgbwoQcc3uDSB4ooIOhhErUPwX
ZoOnAnLulRzBsAkBEp8WNjwiseEUjC/fXfDgdOkFlN0+4CpUrusDrE9XgFnb794RQA/o3btbdYPc
pwWEFDCc6mzjbE/rFMBVAAa3qTFrPl0ApgDISD9PaXz6WLrO7gUsKLXsdbT5mFRTQ29w4Kh5txws
z2c79T7Suo1VBJZ/OqHFVYAC9meeVgw0td9XzRmmgXx21XTTdjz5pF9XHZR0UkortfRSSQ2VRJFH
IJk4kUMdqujiRBoJRNBCNNbYkEABAQA7
""")
        self.clock = image

        image = tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AGWyAGmzAGm0AG21AW62BHC3BnG3CHK4CXO5DHS5DXa6EXi7FHm8Fnq8GXy8
Gn2+HX+/IH/AI4C+IYHAI4LAJoTAKIfEMInENI7GPJDIP5HIQZXJR5jLTZnMTJ7NVqDOWKHPXKDQ
WqPQXqTRYavVb63VcbHXebPYerPZfLXafrbagLjahbrch7rbiL/ej8DfksThmsbincrko8rkpszk
p9TpttfqutfrvNjrudztwt3uxN7vyODuyeLwzePw0eTx0ubx1en02ev03Oz13ez24PT57ff78vn8
9vr7+Pr8+Pz8+f///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/900EixIiDCBMmNKhwRIgSOgT+K1GhYoSKFjFexFhhgUaOFUoMzMhx48aPMxKUzKiDIsiT
KzuWWLLBYwWYFQqSNAkSYwIcS5ZAgBDzYE+OEBYkSLCgaYGgQQvwrGh0Z8cCHF7g4NGjxgsTUJcA
kQqyKsgCKMKqVetCZcaqJhMYWUsXKgebVEeUJHCkrl+hDzCajbAgxt+/CTaa7QhVx4gIBCInyADE
r4nAFeAySDsEAoEHmCs84Lt2SIjPgvVWTFBEhoCLUyuojQE58EmzDGIQONox7RLTBBaEfqv6IgOS
GB8UADJjNObYmVUfjUC4wIUaBRKEPgnhtnSYSiGsuei7w+1NjglU2I4OUmkCEkPChiAKM0IBFUvM
m11QwIMOugWABMFS/6mAV1UQkOAXDwBkl0ABBWQwA1SJpYbRU4cNMcRcYcVg00WDJXAYXUcQANNi
EGAwYlhFaPfRYhUksMKKS6hQwHMWntVDWDUAUcQRRTDnQQF4lSUdRxhGZcCDSy1AFG/s9dRdUECY
B2VZLvW0QAhLoFDklRhBBGUBOlggAZg9RZSllmeiyZFIArXU0Jx0IgSRQAEBADs=
""")
        self.swap = image

# sokoban images
        image = tk.PhotoImage(data="""
R0lGODlhEAAQAPf/AOdxIOd0KOl1K+52Kup5Lex5LOp8Mut9NOx6MO1/OPF7LfZ8Kvd/Lvh6Jvh9
K/x/LvN+MPWBNPeFOPeIPPuFNv6HN/iFOf6JO/SKRPSNR/aPTPqLQfqNQvuMRPaST/2QRv6SSvOT
VPWSUfWWV/OXWfSWWPKYWvaaXPiUUvmWVfqncPuygv/Dlf3JpvzKqPXPtf/PsPbTu//Vtf/Xvfve
yvvfzP/gyf7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAQABAA
AAhzAP8JHPgPxgyCCAmyAAFCRsKELT58oPGQoI0WKla0sFFR4IQPHzFM6PhvQoUJJiOQfEBigoQS
D0g6EBEhgggFJBuQgACBhEqSJBQoKEFSIIoBBFAU/YfCQAIRS1EQMAC1aAYBBjwsxQAgQIalNF7E
oIgwIAA7
""")
        self.man = image
        image = tk.PhotoImage(data="""
R0lGODlhEAAQAPf/ACuIvi2Kvy+LwDGLwDCMwTWPwjuUyD+ZzkGZykaaykWdzkqezkGe00We0Uqf
0Uqgz0Sg00ik10+k0laizVekz1qkzlWi0Fep11Oo2F+z3l6y4Geu12e032ux2Gi133Kx1oe924i+
26DO6aHQ6qbQ6KbT7KjS66rV7K7V67LX7LXZ7bfh+Lri98/m9Mrp+c3p+NPn8tLp9tTp9dTs+d7u
9+bx+e/4/fP4+vD4/fT4+/X6/Pr8/f7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAQABAA
AAiJAP8JHEiwoEGBK1YcPKjBw8KCLjBccPFwoAcMGBwuvDGjxAMSIx6cmHFjoIwIDBg8eNBA4IEH
DlJGmPFvRIIDKWgQpJHiQAISA1EkSGDwwc+CKgwQHdjAAIqDCSYQtLDUoIAQMobKCCHgYAsBYAUE
CABWhkERYD8I/AAWaMENFWoQrDGhQ8WHAQEAOw==
""")
        self.case = image
        image = tk.PhotoImage(data="""
R0lGODlhEAAQAPf/AHKoI3WsI3WsJHmqLnqvLHqtMHmyJHyyKH65JoG9J4SzPYS0PYa3QYi2QYXC
KIbFKIrKKYrMKovMLY7RK5DTK5PLRJTLRJfMRZTAVJzGX5nIUp3LWJ3MWKHNX6PTWqHFaqPKaaHB
cKbGeKnPcarJfq7OgbfUi7jUi7nWjr/UocDfksrfrMHgksbhnsbkmMzhrtLhu9LhvNXnudXpuNfo
v9jqv9jsu9TiwNnqwdroxdzpyeLuz+Dr0uHt0OLs1OTt1+jz2ev13PD35fT47fb58vz9+v7+/gAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAQABAA
AAjWAP8JHAikho0gAxMOZBGBwoSHEVwoFGhhggcaQoTQ8DDBgkILEXL8A9KiBZB/NSJ4FMhQpIYI
Dh5E0PAvxwQWAh94+KfhAQ2BMB7Q7JDgn48EOXYkqPFvxIh/NBzsyPHgx4uiKBD8AxETxD8EKP4l
eLGiqAmtGRw4yPDVhNgVOhDoyIHAxz8MGP7tQJAjRwId/wx4ZWDArlECDf6FMCCwROF/CgwMIGBA
wb8fBkoMLADgJAwSJGAYBVAg4ZABAEIY9hECwIAhE0UAmE1bxMSEN1KkuDExIAA7
""")
        self.bay = image
        image = tk.PhotoImage(data="""
R0lGODlhEAAQAPf/AENDQ0VFRUlJSU1NTVFRUVVVVVlZWV1dXWFhYWVlZWlpaW1tbXFxcXV1dXl5
eX19fYGBgYSEhImJiZSUlPb29vn5+fz8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAQABAA
AAihACdAgCCB4MCDDx4weCBBwkIGECEqmEjxAAMIESMqYEBxokWMER9s5LhRwYGPEB9QsABhpUoL
DE4qAMnAgoWXD2zGPDCT4kAFCS0+OECAAFCKOm2+VFD06ESlSS0wHeDUYsyNPBUM2FqS50oGKxWE
HSDAokkFUdFSOCCg7E6jTCcO4CkAgFuiRAls3dq2rgCjefe2JdsWAIADIjvyPMlYZkAAOw==
""")
        self.wall = image

        image = tk.PhotoImage(data="""
R0lGODlhEAAQAMZJAOdxIOd0KOl1K+52Kup5Lep8MvF7Lfh6Jvh9K/N+MO1/OHKoI/x/LvWBNHmq
LveFOHqtMPeIPHqvLP6HN/SKRHmyJPSNR4SzPf2QRn65JvWSUfaST/6SSoi2QYa3QfiUUoG9J/SW
WPOXWYXCKIbFKIrMKqHBcPqncJnIUpTLRI7RK6bGeKPKaaHNX/uygqPTWq7OgbfUi7nWjv/Dlf3J
psHgkvXPtcrfrP/PsMbkmPbTu8zhrv/Vtf/Xvdroxfveytjqv9zpyf/gyeLs1OLuz+Tt1+jz2ev1
3PT47f//////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////yH+
EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAfXgH+Cg0Y4PUeDiYM1JTMcHDwl
OYqCKSovNBgYPy8qKYopJT5CNCcuNEJAJZ+CjD5/ERixFBF/Pio1giQvfygRExG/DSh/LSB/QyA+
RCAMIhEPIQwjRD4kRTvHMhkIGg0NGgYZMn8gOzfHMRkHIgkJIg0ZMeU3QRlBPhlDIgYGIUQZfPgA
EeRPBRZ/PFT4MIDABwkd/pioIAhGhSF/LnwooEDDhT9FKsAYBGGBkT8fCBTQgGwBhERIHCwwYUFA
gQ0mFjhAQmnFAgoAAlhYsIJSoh82dPygFAgAOw==
""")
        self.bay_man = image

        image = tk.PhotoImage(data="""
R0lGODlhEAAQAMZJAC2Kvy+LwDuUyD+ZzkaaykGe00We0Uqf0Uqgz3KoI0ik11aizVWi0Fqkznqt
MFOo2Fep13myJH65Jmeu116y4Gux2IG9J3Kx1mi134XCKIbFKJTAVIrMKqHBcIi+25nIUpTLRJzG
X47RK5DTK6PKaaHNX6PTWqnPca7OgaDO6aHQ6qbQ6KbT7L/UoarV7K7V67LX7LXZ7cHgksrfrMbk
mMzhrrfh+NTiwNfov8/m9Nroxdjqv8rp+dzpydjsu9Tp9dTs+eLs1OTt197u9+jz2ebx+ev13PT4
7fP4+v//////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////yH5
BAEKAH8ALAAAAAAQABAAAAfRgH+Cg0Q7PkaDiYMyHCM2NiIcNIqCICImOBQYOCYiIIogHDp/PA8Q
PH87HJ+CjKMfGA8PGB9/OiIyghomSEAsCCsqCC5ASCUWfz8KBQUICAYnJwMIB8wKQDUqBAMwQyQZ
GiRDMAMEKzUzFi8EBH8hGRkhfwjmFjM9Ej0xAu0bG38GBLzQYaHHnwgk/hBYEERQEAbtOkQQhCJC
kAAefrD74SGAkAgoBjnIEaBkAAAASv5wkOhIipIXBF0oueKIogkNiiTYmaDIggqUBt1o0eIGpUAA
Ow==
""")
        self.bay_case = image

        image = tk.PhotoImage(data="""
R0lGODdhEAAQAIAAAP///////ywAAAAAEAAQAAACDoSPqcvtD6OctNqLsz4FADs=
""")
        self.passage = image

# sokoban big images

        image = tk.PhotoImage(data="""
R0lGODdhIAAgAIAAAP///////ywAAAAAIAAgAAACHoSPqcvtD6OctNqLs968+w+G4kiW5omm6sq2
7gubBQA7
""")
        self.passage_big = image

        image = tk.PhotoImage(data="""
R0lGODlhIAAgAOeWAB5/tx+BuSSEuimHvSaIwCmIvS2KwDGMwC2OxjaQwzmSxTSTyjaWzUCXyTmZ
zWybJkGYyj2b0EqZx22hIEibykiezUGg03ahNEif0FOeyUqg0HGmIkSi1lWgzHKpIkil11Gl1F6j
zEio3U2o2HivJICqPnewJFao1U2q3WKmzXixJIKsRlmr11Ot3Vqs2YWxQ365JmWv2oa1P42xWIG6
KYC7Joy0Toi4QnWw03Gx14G+KILAJ465T4TALG223nm11oXEKHi22ZW8WozCPZS/VIjHKXa74pTB
VInJKYO62ZXFTX694Iu925zFXo7QKo7RLKHFbI7A25DTK6fEfJ7KXJHWLJDE4qjJeJTG4q/Ih6TP
Y6jNbqLRXaTQY5XI5qfSaJ7J4rDOg7HOh6vScpTN7LbOkqzVbaTM45/O6LbQkaHP6LjRlZvR7ajO
5bPYe7zSnLnWjanS6r3Ylr/YnLPU58DYnLLV6bXY7L7fjsfaq73a6srdrrvc78vhqcjg7sfh78jj
8dLos9bmwNnow9zozNXn8tXo8t7uxtjr9uLs1ODuyuLt0dzt9+Hu9uby1OLw+Onx3ejy9+jy+O/1
5u724/b58f//////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////yH5BAEKAP8ALAAAAAAgACAA
AAj+AP8JHEiwoMGDCBEKwmOGC5cxeAQlnCjQ0RcgSKQ4IcNGSkYgYxRRLFipCxCNVTyiECEFpRMk
XSqN/DeoyJOUQIa4UdOiRRw3Q046cdJD5MRAQIYW0eJIIAoWLFBUNDkUSKCEg5Ii0TFoIJ+nUfUM
HKQDiRMgXQ1WquFxiEyBg1CcmHuiRdp/lYZk1PGWIBUkW99SUgLowwkOHE58+KOEksBKZZFQKZjV
SY1FAgnVQOICBAgjRjzHQELD6CK2NQ4RbIJkxxiBkGAgMcQBBAdEjGpzYIQEBiSBWzA2GVhJNoxJ
jwCpseKDgwYQLgS60DBCgw8ragA9mmT8LRojLiL+RLCAAYPz5xH+9OnzJ4KG9xrKYxDvYokagVbc
w4c/370KHTqoEF8EHGCw33sReCEQEWdEQMF7DsSwBBh8IKICEBgCoYIhfICxRAwRQAChGkcIdAMQ
cSxQAQQR3HGDQHLAkCEQMMhhoh4MYEABA3EA8eI/Mmh4xwIQQLDAGQLBIaMOGMIAh0BtEGmkHRfK
IBAPO6ggiB5SLoDFP4mYsAMQTKqQyD9ndHmHICrswINAUNSgQh3//IGAAxAoYMU/WZgAAwwehPEP
Fgs00IABfPzzBgw1QCHQHCrUIIRAhRjgAJFwXXFFWhA0sMABgAgkBAxzwuZBDRsMhIMCC+CAUA7+
CygQxEAb1ODBbwK9QGoaAsWawBk2nDlQIjaAccACFAgkhgowvEDQHqdOMMk/BiRgwB8qeGBHAgvY
4YEKfhigAAH/TLIBoHsUVIIKKrxgiLgFbODHoQkcYAAEf2xggL2NrMBuCQYlMgGgbRRgbwcGH6Cw
wgUgbC8dHsAwgbAFrTGBCj/su/ABAxyQQMcK72tAEipssEZCU2wgwQEGF1CAAEj+A4YALjOcwQZT
UFSGAAMYMEAAUeSRyCSTJJIHEwEMYLAAZYwkCc0C4KACCR5M8MAEG2zwLQ4BvDwTHQCkIMkFE3jw
rQkmfFv1BZGEAIBYFEliyECEZDHDBQ88cMENDFkQMlAhkswkOEUBAQA7
""")
        self.bay_case_big = image

        image = tk.PhotoImage(data="""
R0lGODlhIAAgAMZ+AOBmFuhqF+puHOxuGuRzJ+xyIWybJmqdIPB3Ju94J22hIPF5KeV+OvJ8Lnah
NO5+M+aAPHGmIvl/L3KpIuiDQPWCNXapLeeISXitKfiGOnivJICqPuiKS3ewJHixJPmJPoKsRvmK
QfyKPuyPUPqNRYWxQ/CRUH65Joa1P/2RSYG6KYC7Joy0Tv2TTIi4QoG+KJC1WILAJ465T4TALPya
V42+Q4XEKJW8WozCPfKgaZHATZS/VIjHKZTBVInJKZzFXo7QKo7RLKHFbPurdaXFdJDTK6fEfJ7K
XPatfZHWLPayhPC0jK/Ih6TPY6jNbqTQY6rOdfi1ifG3kKfSaPK4kbHOh6vScrbOkrbQkfa9lrjR
lf2+krzSnPPCobnWjf7Dm7/YnMDYnMPaob7fjsrdrsvhqdHhuPfVv9Dksv3XvtLos9bmwP3bxdno
w9vnyf3dyNzozN7uxuLs1ODuyv/k0uLt0f/p2+by1Onx3fvu5e/15vP46v717/b58f///////yH5
BAEKAH8ALAAAAAAgACAAAAf+gH+Cg4SFhoeIiGtjSB8fX2NriZOCd1M2PjQiLS0iW0U2VnOUhX1P
NkVAdB8prSkfQElAPk99pH9tPEFJoHasriI4qEBAM6OTajbEPE13f0MfIiISb393p8Q2aoltyj4v
bYRpSFF8hG0vPkA24YZ9K0U+OLZsJB8ZIiT6ISEkbH99cPgo8sJWoSM+vhmUkE8fCWnSSEgQ1Ced
jyOFugFZUUcQnAoQITqKJuFYHXgr4hD64SOGFUF4TlTAJyJDCJuORCw4gUeQE0w/BvU54eOEHkEu
fEjIsCCD06dNJfioIUgP0RMGy7zgoUMQmq0VFkSZ+bQCEgkLipoRpONbGUH+UGzY8CLohw0VCyQo
qcC379kFK2wE/eNFLhRBO2ysWPvnBA8PC8T29RvZQ1FBZlb46IHUhgdnfzzE4BNZSYPJC5BEduFZ
UB0PNlwIQuHZWR/YMhIkULIA9ZIECGTE8GDrDmwUgoR7kPRngg0MDx5kWdCgeoMFXUzkwBBjgqA1
omUIErLCQ5jkKzqEo0Ld+oIsuDysEP+Hy4kVQgSBkX9DkBj5LPzBXmQEUvEHCyd4IIYgNyR43h94
TLBCBINYUB4RVCSwQAEFLJAAFUTIZ8EgEawwQU+ClJAgFt9NcIIGVHRIwQgbUiHhBMxV4cEJJRBC
hoQKHFWfizEmMGMCBVC3oUIEXFQVwQkTkFHIBh540CNmEcRYwIwcUhEBY3+AUOUGhsihAJT9DSIF
h1wmSQgMLiogxyFaKODBBCDsIYgUA2w5wgACGPjHHiVM4EEEWiRiRAQeaHDAFX8sIcAAEHBQQKB/
YHGAoREYQckVBnRwpwFLBEApBwIEagCjHRgAKSluOBCBoZIKwACqAVDRaAQOuHHLIFw4oECptl4g
QABSKOBAk78WAkceBADQxRkAEMAEHM1mS0ogADs=
""")
        self.bay_man_big = image

        image = tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AENDQ0VFRUlJSU1NTVFRUVVVVVlZWV1dXWFhYWVlZWlpaW1tbXFxcXR0dHl5
eX19fYGBgYWFhYmJiY2NjZGRkZWVlZmZmZycnKCgoKioqLGxsdPT09TU1N7e3uLi4ubm5unp6e3t
7fLy8vX19fr6+v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/ADVUGEiwoEEJFSQoTMgQoUIJAh0wmMhAIsWLGCci0MgAgUcGCCWKrEjy4kaOGz+qRBAyo0uO
KBkY6OiRZQWLI18icJCyJ82aEG6WzJgyZsefNW1afGnyqIGkNZ8iCOrSgUKeHSFIoMkAAgSZUA0E
zVnxQ4kSISR2ODsCAoK1JUY4kGqgLtWjGyWcPXsBwt4SFxz8vYCgrmGqS7sO9ru372DDdQtQPdnR
gdm4bi+3RaB5ruECkitQPLmzQmCPDgZCkDpQZmTQoWNu9PrTa+GnXj/DDk268uW0BjoXgDuCwe4B
BayinPr35mDBeyvsLjBAK9fZzaGfdR6dOvUB1UX33twYgm1H4ZoZIF8/wGrRmiBv1rVpvIABhAhA
g9+vXGpSB57VNZEBsHVE4H7gCeAeUm+dFUJ+GzgIoYMG7CfAhe5Bxdh2DDTXYXQJXqigBFEVtmEJ
EmhXQgUINDeAiBeCFBYC5cVlXI0lGHdZCQi8eCEAIxZ2m4CtIWdAkQPcxyKMQAIA0lOQETgdexaK
CECTQHY1pJSwrfddiDBaKYCTq+l23JdV/jjmlWx29VqX3iHI5Jhrrnmlm9Pph6CPYdLJZpsQdLmn
hXyq+eehDmDg1aIOQNAogJBGOtKkJFUQEAA7
""")
        self.wall_big = image

        image = tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AGqdIGybJmyfIW2hIG+kI3CjIXCiJ3GmInKpInSqI3SrJHetI3atJHapLXiv
JHitKXahNHyqNn6qPHewJHixJHq0JHy2JXuyKnyzKn65Jn+8JoCqPoC7JoG9JoG6KYC4L4G+KIS/
K4S9L4a1P4K6MIK4NYS7MIOtQoKsRoWxQ4m1SYu0TYy0Toi4Qou5Ro2+Q4u5SI65T42xWI+2WJG/
TJC1WJS/VJW8Wpa8X5q7aYLAJ4TCJ4LAKITCKITALIXEKIjHKYnJKYrMKozOKovAPYzCPY3EPY7Q
Ko7RLJDTK5DTLJHWLJHATZXFTZTBVJvGWZzFXp7KXKLRXaHFbKTPY6jNbqXFdKfFe6fEfKrOdajJ
eKTQY6XRZKfSaKzVbavScrPYe6/Ih6/OhLDOg7HOh7HOiLbOkrnWjb7fjrbQkbjRlbzSnL7XmL/W
nb3Ylr/YnMDYnMPaocfaq8rdrsfgosrkpMvhqczirM/jsNDkstPmt9Tmt9HhuNTmutLos9brt9nt
vdbmwNvnydnow9noxNvtwtztw97uxtzqyNzozN/uyeDuyuHuzeHr0eLt0eLs1OXy0eby1Onx3ez0
3+724+/15vH26vP46vP47PT57fb58fj78/j69fr89/v9+f7+/gAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP8JHEiwoMGDCBEGQuNFipQvaAIlnCgwUpcfQZIcWbIkScYfXxZRLKhpyw+NHYOoTILySJAt
mkb+GwQESccfRcDU8ROoDpgiJ48c8SFyop8fQoFQiYQwkkmhP/wkHIQ0CIhBIweBCHLkB1aDmjh4
LBJT4KAvRTx4KPLl6z9NRTKCKEswisq5Aik1wciSZZAfTSgJ1LQ1SJSCVI9wcCQwEQeVQTKUAJEB
YxAPRR2J5XCIIJQgOr4IlJThL4g4BOl4wJhBksAqGKEM1FQ6QyWBLf4yQUhDR5AXAivVLmsHBJDd
//IYLzHbjh26JSLzEcjEqh2BWX78OCMQyg8PeQTm/6EAAgSF8Mk5/JD974z2LAJt/OAw/V8GIBSC
U9CuncLtfxREJhAfjzmB2w8UMAWgDi0I5EZl/GXgxoH5/ePIfg3+MwKCTGmyXwwCnVEZCNplwN0/
MehAQUyR7DeCQClSINE/CPzwgECPTKDDDyRS8IhAD+iAgECBUKADiP9MwQEFcMDIwQRfhTFBBhkg
MIZZFHCA5BoZcDCFQG9keYNAcWTJwkCDaKGFWyxkQAFq/9zgZpP/SIIABwcM1MCSViBkRZYNDHQA
Bwi4JlAKbqZBJAIZOMDCjwM9wsKdCMxIBgUZpEDQHHcO8N8ajFKAQAQ44BABAhR4cMAawR1Q5RwF
bZtAAQWaDngAo25iOusB9f2DwqwbGPTIAFWOOVAaEgxwwAEDSKDoQDUwOgCkBakxgKgoXFKQJIYO
dEkKqB6gRkJYHECBAwCYMVEaAISLBUVmBDCBqAHkIMcjlVTyiBw5BGDuBAGoO5IgENx6LgIDBKCs
wQ4cAIEgMg20BgQDIIDqBBOgijAErEZcUCJhyABBAAFAIEMYiXis8kgBAQA7
""")
        self.bay_big = image

        image = tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AB5/tx+BuSKCuiSEuieIvymHvSmIvS6KvjCMvyaIwCqKwC2KwC2OxjGMwDKP
xDSOwjaQwzaRxTGSyDOVyjSTyjSVyjaWzTmSxT6VyDmZzT+ZzDqc0j2b0D6d0kGXxkCXyUGYykOZ
zESazEaczUqZx0ibykiezUGd0USe0Eif0FOeyUGg00Gg1USi1kqg0Eui1Eil102h0Eio3U2o2E2q
3VWgzF6jzFGl1Fao1VOr2lOt3Vmr11qs2Vuu3V+w3WKmzWWv2m+x12223nGx13Ww03O02Hiy1Hm1
1ni22Xi733a74n694IO62Yu9247A24vB4IrE5I7G5JDE4pTG4pXI5pTN7J7J4p7M5p/O6JvR7aDL
46DO56TM46HP6KjO5afV7qnS6qvX77HT57PU57LV6bXY7Lna7Lvc773a6rzb7bzd7rjd8b3e8cfh
78jg7szj78Xi8cjj8c3m9NPn8tXn8tXo8tXp9djr9tvt99zt9+Hu9uLw+Ojy9+jy+Oz0+fH3+vT5
+/f6/Pv9/v7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP8JHEiwoMGDCBMqXMjwX5UsDSMOpCFDYsQuOnSAsciQxo4dNDgqPOMRJBqRCGngWIlDB0qD
cWDgaNECB4w2LwnyuHFDiRKeQHIKrNPiRos7eYq2yMNxT5wuUoS0cHGDh0AeLma4ECKlS5w9B7Eo
4cGBw4oUKaZS5YDzXxsOLuK6QJuiLI8lXQRKgStXbl24BOdyaJGib1wOVAZy4VAibgYgS6ycuWOw
zhkrS4BwAOE4L0EwFEyA4FAmIhoLKUpY2GiwDAUQIChwYejldWwyCdHYpjBFIZfdpRW2YZABxAUp
CKdQ+PBhwZmGdBZkeI0QxAcKDeJIJHKBAhGEQyhckUBiUTyE2QetNKBQwuICCAvakoFAAfc/Nwsu
JJBYJ7+B+81B0MACIOC0wIB6ROSFAQPWwGADEEJogIMDjhHREQdG2EABDUDAIYQHLsBERCQ0wKAB
BgyAnhUDoCihChENUMACBQTghEFNBFAAgwM01EeLA3yXEBEBpNjQGAD80AdDfNgAwEkL9VGHRXQs
KZREAQEAOw==
""")
        self.case_big = image

        image = tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AOBjEeBmFudqF+hqF+hrGOhsGupuHOxuGutwHuxwH+RzJ+R0KOxyIe10Iu51
Je94J+58L+V+Ou5+M/B3JvF5KfN7LPJ8LvR9Lfl/L/R/MeaAPOmCPvKAMvWAMvWCNfWEN/eEOfyE
NPiGOvmHPf2GOPmJPv2IOvyKPueISeiDQOmFQOiKS+mLTOqMT+yPUPmKQfqNQvqNRfyNRf2RSf2T
TPCRUPyaV/Kgafesevatffurdf2sdvutevWwg/ayhPCzivC0jPi1ifu4ivG3kPK4kfO6lfS5kva7
lva9lv2+kvfBnf7Dm/PCoffVv/3Xvv3aw/3bxf3dyP/k0v/p2/vu5f7z6/717/728f748/77+f78
+v7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP8JHEiwoMGDCBP+y1GixBKFEA3aOEGDxokkETNKKTGj44wSGSNO4ejxRMiIOkqcOIEhysmI
TnIEsfISIZQYJUSciMHzxYsYUGoOxLCTZ4yVK2NgECrQA1KkDVUuZepB5wkRL7A2PEGB6T8MIiiI
GEtW7FShHigEqUrWQw4MXZlSwODDg927b+MKpaD2Ll6+TK3w9WHBL4UcgJk+eOCDgmEgDyZ4lSAB
CQULmC1QYFLjhleBRC5npoDk88DQfFMTMQ36AQUGDCg8WM2aSOwULl7TNm37Ae4HDHZ/ts0AN2zh
XofANh6c9b8hB4q7OGAAOVMgBg5oWMGgunMgA7SvHzDgnTV2AxHGD7AuFDx6FAYGDHFORUEAJk0C
KHD+OSAAOw==
""")
        self.man_big = image

# minesweeper images

        image = tk.PhotoImage(data="""
R0lGODdhFAAUAIABAJnMzP///ywAAAAAFAAUAAACEYSPqcvtD6OctNqLs968+68VADs=
""")
        self.hidden = image

        image = tk.PhotoImage(data="""
R0lGODdhFAAUAIQVAAAAABwAADkAAHEAABobG44AAIwbG09QUcM1NsY5OWpqbKJqbNtqbPdqbONx
cf9xcfaFhrm6vPK6vPDU1+7v8v///////////////////////////////////////////ywAAAAA
FAAUAAAFoeA0SVRpRmZqTg1EpodKQVApQU3zlvHa1raci0c49IRAGw6xADidgQJjkDRJEIWB4Ako
ZBmy0mJQSGyjg7QiTAEIEg+HwJt2hg9OgYNed/YoEUYET3NZA1xFByg8UIZeW34yeF2OWZB/KWh1
AmQFW2x8hHQLMixTh1ycBQg7JTkDDApcTgsILS8sEAZJB4lKOSW5VRSYFBLAxjeSbMwli2whADs=
""")
        self.bad_flag = image

        image = tk.PhotoImage(data="""
R0lGODdhFAAUAIQTAHgAAIsAAJ8AAL8AAN8AAP8AAFlaW3d3eXd4eZGSk5WVl7KztbKztrOztra3
ucnKzNDR1NjZ2+7v8v///////////////////////////////////////////////////ywAAAAA
FAAUAAAFZqAkjmRpnqQSoRJ0vMh7QAjELgGh68Ey34KCUChY1FiN4LAgaBxRC+Ww+EMxpETG87QA
DL5fgM+GiijOaNWWZVqzSe63qCpPreoih2HvwPtLCXuCBg8sCjKIiAonERCOj5AQd38jIQA7
""")

        self.flag = image

        image = tk.PhotoImage(data="""
R0lGODlhFAAUAN0AAP///4CAAAAAAP7iSOqzJPvYQAQKCeKxLPXKNu24KffROv3gRvC9LOOpNvnW
QP3oUO24J/jQOvnCMP/IKPvQNuiuNPXGM//pSf/cP//gP//pQf/4SP/3SPK8I/HALtijMfG9MfzD
LOq2KfTPOeCvLP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACUALAAAAAAUABQAAAarwJJw
SCwajYGk8lhMci6DR4GSZJYCgqzg8dAKAkcsYAzIkstgophsPqPVgnNbnr5u4u55WZIOXPBygGUH
fQMDgnoCCQR9C4Zej1oeCYRCARiOhoYFnAoICAkQlVcaBQucpwURESMKDAQTFXUBGQ6cBgYODp6v
CQl1VxgKCgYRFgafBgQQH7JNFBYIrwS4BAQdDcBDARMhIBCL1iLZVkkSJAfp2dphSlVW8EdBADs=
""")
        self.hint_symbol = image

        image = tk.PhotoImage(data="""
R0lGODlhFAAUAN0AAICAAP3hSP3oUPvYQAAAAOqzJEM0EPfQOf3wWeKxLP3gRu24KfXKNvrJNPC8
LO24J+OpNv/IKPnCMP/cP/PPOf/4SPHALv8CAP/2Vf/pSfjXQeiuNPvQNvjQOoAAAP3vWPbFMvzn
UP//UfK8I//gP/zDLPG9MdijMf/3SOq2Kf/pQeCvLP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACwALAAAAAAUABQAAAbHQJZw
SCwajYCk8lhMojIBwYCTZLIAFQxCwA0EBhPAESBCIAgELnrAFhOxZoKZK/gQKIeGWwjA0AVpgAIB
BxQRe1gff2khaYQMIBJuABl/ggEEAQoNDRYJk16hUaIBDRILBZMKpKEKAxoHFguffBOromwDBwwM
Cw+0VyoDrsMABgYAeA4FERuIJBpsHQYeHgYMywsLe1cTBwcD0xcXBssPJ85NHCDYxsgFBSMQ3EMA
ESUmD6jwKfNWSRJWJBg4j94YJVWsKDwSBAA7
""")
        self.hint2_symbol = image

        image = tk.PhotoImage(data="""
R0lGODdhFAAUAKUvAAAAAAMDAwQEBAUFBQgICAwMDBEREhMTEyQlJSYnJzAwMDY2Nzc4OEBBQUpK
S1RVVllZWVtcXWNjY3Fyc3d3eXp6fHt7fX5+foGCg4aHiIeIiYyMjIyNj5CQkqGipKioqq+wsrOz
tra3ubi4u8/Q09LT1tPU1trb3tvc393e4d7f4ubm5ubn6unq7e7v8v//////////////////////
/////////////////////////////////////////////ywAAAAAFAAUAAAGjkCXcEgsGo8uDHIp
fDCHpyGL5CChnp2QCxQBeBUZF0p0bFUSBq9akGhcjxa13JtAlgqAywoyF4SNE14bLxJzAApvLiYe
HgheAwQBhgAcHiOKjI6TcpWXQwubciRGH6FeESxGKQyhBiBIcZt1RyoUFqxyBRYVWkYaKi4pHwsH
CxMlLi0dUU9OT0fOz0WeSEEAOw==
""")
        self.mine = image

        image = tk.PhotoImage(data="""
R0lGODdhFAAUAKUzAAAAAAwAABIAABcAACMAACYAAAkJCS8AADIAAEAAAEwAABISElUAAF4AAGEA
AGQAAG8AAHIAAHgAABoaGnsAAH4AAKEAAKcAAKoAAK0AALwAAMEAAMQAAMoAANAAANMAANYAANkA
ANwAAOgAAOoAAO0AAPMAAPYAAP8AAFE3OFJSUlVVVaBoaqSkpKqqqvSfofOlp/DW2fb29v//////
/////////////////////////////////////////////ywAAAAAFAAUAAAGn0CUcEgsEmHGIYeT
RCGbl0vzmYxOh5YM6oQ5AL4PDcrkEVJRF4biywYIGI6yk/hp2wGE4bkBWLhadwEWZkMeAwATMzJ3
AAokc0IRXwYrKowAG04dDAwFl3YJDClDkp9smVQWAaYABSCQQgSsEYRDdZ95tUK3l7mwHhUoJQyH
XwgSKCMUj1QeJkMbEBAYIkMhzE1oUkkwL97f3yws4OAxQQA7
""")
        self.red_mine = image

        image = tk.PhotoImage(data="""
R0lGODdhFAAUAIAAAO7v8u7v8iwAAAAAFAAUAAACEYSPqcvtD6OctNqLs968+68VADs=
""")
        self.count_images = [None] * 10
        self.count_images[0] = image

        image = tk.PhotoImage(data="""
R0lGODdhFAAUAKUgAAAA/wcI/wgI/woK/g8P/hER/isr/S4u/TEx/DEy/DY2/Dc3/Gdn+W9w+XBw
+XV1+Xd3+Xd4+IyN96Gh9qan9qeo9qip9rO09dPU89fY897f8+bn8unq8urr8uvs8u3u8u7v8u7v
8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v
8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8iwAAAAAFAAUAAAGQ0CQcEgsGo/IpHLJ
VH46HU8TVABYAYlp4IqdKiYYa7YpBYmnQysCLTyz3Wj4VN6kM+1HjmZvPew1ShVcg0oUg1xsSUEA
Ow==
""")
        self.count_images[1] = image

        image = tk.PhotoImage(data="""
R0lGODlhFAAUAMZTAACIAAGIAQKJAgOJAwWKBQaKBgeLCAiMCQmMCQuNCw6ODhKQEhWRFRuUHCCW
ICKXIiiZKSubLC6cLy+cLzGdMTKeMzafNzigOTyiPT2iPj+jQUGkQkSlRUWmRkmoSlOsVFqvW1+x
YWGyY2KyZHK5dHS6dni8en2+f4jDi4rEjJPHlZPIlpvLnqTPp6XPqKzSr63TsK/Usa/UsrrYvb7a
wr/bw8XdyMbeycfeysjey8rfzczg0M7h0tDi1NTk19bl2dfl2tnm3Nnm3drn3tvn393o4d7o4t/p
4+Dp5OHp5eTr6OXr6ebr6efs6+jt7Ovu7+zu8O3v8e7v8v//////////////////////////////
////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////ywA
AAAAFAAUAAAHaoBSgoOEhYaHiImKi1EzKiYoSIuCLR0AlwAIIpMalwMEAZcUUIoaBys7SjGYMJOE
GJcjroMZlySzgg4ADU24ugAsvpcbvroWSbMXuhTCABJDsx+XD0bV1UuKmNqXIdnbmN2JEePk5Ca4
ioEAOw==
""")
        self.count_images[2] = image

        image = tk.PhotoImage(data="""
R0lGODdhFAAUAMZeAIiIAIiIAYmJAomJA4qKBIqKBYuLB4yMCYyMCo2NC42NDI6ODY6ODo+PEJCQ
E5CQFJOTGpOTG5SUHJWVH5aXIpiZJ5qaK5ubLpycL5ydMKCgOaSkQaeoSqurU6usVKysVK6uWa6u
Wq6vW7CwXrCwX7GxYbKzZbO0ZrS1abW2a7a2bLa3brq6d7q7eLy8ery9e7y9fL2+fsHCiMLDisLD
i8PDjMbHk8fIlsvLnszNoc/PqNDRrNHSrdHSrtLTsNfYvNnawNrawtrbw9rbxNzcxtzdx93eyd3e
yt7ey9/gz+Dg0OHi0+Hi1OLi1eLj1uPk1+Tl2eTl2+Xm3enq5unq5+rr6Orr6evs6uvs6+zt7Ozt
7e3u7+3u8O7v8e7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v
8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8iwA
AAAAFAAUAAAHgIBegoOEhYaHiImKil1WNywkKUFci14zCACZmRddiysAAgcQBJkHTootG0VaXlAB
mTGVhCGZHbKDGZkvlTwMCwWZObI6mg4otzsKCaQAIFu3WEQDmTK3gj+ZBtZeTpkBiidDhBaZD4oA
ARwpLh+aIoqvmppCiz4qEgkBBxs224uBADs=
""")
        self.count_images[3] = image

        image = tk.PhotoImage(data="""
R0lGODdhFAAUAKUzAIgAiIgBiIkCiYkDiYoEiosHi4wIjIwKjY8Qj5EWkpIYk5UflpYhl5orm5wu
nJwwnZ4znp81oKA3oaRBpaVEpqpPq61Xr7RotrVqt7ZtuLdvublyu7p1vLt4vbx5vr5/wMCEw8GF
w8mYy8yfz9Co0tKs1Na42di729vD3t/M4+TX5+nj7erl7ern7uvo7+zr8O3t8e7u8u7v8v//////
/////////////////////////////////////////////ywAAAAAFAAUAAAGT0CZcEgsGo/IpHJJ
BDg9zCHFCYBGZQDB8zqdbKOAD7YanbbG1iUgI/wqF+s2Wc1gydNI5wXDd0YwSlSCVIGDgkotiYpO
HGdXaI93kZCTSEEAOw==
""")
        self.count_images[4] = image

        image = tk.PhotoImage(data="""
R0lGODdhFAAUAMZNAP8AAP8BAf8CAv8DA/8EBP8GBv4ICP4KCv4LC/4MDP4NDf4SEv4TE/0WFv0W
F/0ZGv0bHP0fH/0iIvwtLvwvL/wxMfs0NPs8Pfs+P/pCQvpJSvlTVPlaW/hdXvhfYPhmZ/dqa/dx
c/d1d/Z6e/Z8ffZ9fvZ/gPZ/gfaAgvaDhfaEhvWKjPWOkPWRk/WSlPSVl/SanPSdn/SfofOjpfOn
qfOoqvOqrPKytPHCxPDN0PDU1vDV1/DX2fDY2vDZ3O/a3e/d4O/f4u/h5O/i5e/l6O/m6e/n6e7p
7O7q7e7r7u7s7+7t8O7u8e7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v
8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v
8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8iwA
AAAAFAAUAAAHdYBNgoOEhYaHiImKikxJjo9JS4s0AJWWACCLNZeWmYqUAA0RoxEkmpU1i4WbAKmq
g6wBlQcfqqycPos2FzlEPyyVATeKSIUKlR6vgyuVEMqCJpUSijVFg0cDlSmKCQ8nLyIVlQxA3JwA
DqowHA0GBAwlP8+qgQA7
""")
        self.count_images[5] = image

        image = tk.PhotoImage(data="""
R0lGODdhFAAUAMZeAIgAAIgBAYkCAokDA4oFBYsHB4sICIwICYwKCo0LC44PD48QEI8REZIXGJMZ
GpQbHJUfH5YgIJYhIZglJpgmJ5opKpssLZwuL50xMZ40NJ40NaA4OaRBQaRDQ6VDRKZFRqhLTKhM
TalNTqpRUrJjZbZrbLZsbbdub7p1d7x6e75/gb+Bg8KHicKIisSNjsWOkMWPkciVl8iXmcmZm8yf
ocygos2ipNCoqtCpq9CqrNKtsNe5u9i7vti8v9m+wdrAw9rBxNvCxNvDxdzExt3IyuDN0ODP0uHR
1OLS1ePW2OTX2eTY2uXZ3OXa3ebc3+bd4Ofe4eff4unj5unk5+rl6Orn6evo6uvo6+zp7Ozq7ezr
7u3s7+3t8O7u8e7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v
8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8iwA
AAAAFAAUAAAHeoBegoOEhYaHiImKi4yLWEZEUo1eHwCWl0iLUpecmYlMBwABV4M6UYoslhiTgg6W
RD4xNUeMCZY9A5YGS4sBnJwkir63ThCWCooFliCDEZaKCpYlgxzPiSKWIYMS1ogvlguCO5YEiyiW
AqGWNYtWw5cmXY1TMy4+VYeBADs=
""")
        self.count_images[6] = image

        image = tk.PhotoImage(data="""
R0lGODdhFAAUAKUzAAAAAAEBAQICAgQEBAUFBQoKCg4ODhISEhMTExUVFRUWFhcXGBgYGR8fHysr
LC0tLjAwMDEyMjIzMzM0NDo6Oz8/QFpaW11eX15fYGBhYmNjZWlqa2tsbYaHiYmKjIuMjZCQkpSV
l5WWmJqbnba3ubi5u7m6vMDBxMHCxMPExtbX2dvc397f4t/g4+fo6ujp7Orr7uvs7+3u8e7v8u7v
8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8iwAAAAAFAAUAAAGScCZcEgsGo/IpHLJ
PMKe0KiSAahaq4zp9ZptCg3VkVdYPbjGpGpqPLNUY+NPNcGGVDXsaoS9qoLYElVsJ1UDbApVHnkA
BS1sTUEAOw==
""")
        self.count_images[7] = image

        image = tk.PhotoImage(data="""
R0lGODdhFAAUAMZcAAAAAAEBAQICAgMDAwUFBQcICAoKCgsLCwwMDA4ODhAQEBISEhMTExQUFBYW
FxkZGhoaGx4eHh8fHyEhISIiIiMkJCUlJiYmJyoqKywsLS0tLjExMTEyMjU1NkFCQklJSkxMTVRU
VVVVVltcXV5fYF9gYWJiZGNjZWtsbWxtbm1ub3NzdXR0dnh5ent8fXx9foKChIyNjo2Oj46OkI+P
kZGRk5KSlJOTlZeYmpqbnZydnp2dn6Gho6mqrKqrraysr62tsK6usa+vsbm6vMDBxMHCxMPExsXG
yMjJy8vLzs3O0dPU1tXW2NbX2drb3tvc39zd4N3e4eHi5eLj5uTl6OXm6ejp7Onq7err7uvs7+zt
8O3u8e7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v
8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8u7v8iwA
AAAAFAAUAAAHiYBcgoOEhYaHiImKi4yJW0cuLkdbjT8Al5hAi1UPlwQElw9ViiqXKIIplyqKJ5c8
gjyXJ4pFAgAaghkAAUWLJrK/ACWMWRWYABJZi1oklwYGlyNaihYAA0aCRgMAF4oFAByEGwAFiqAQ
ylxYnQSKDJcwgi+XDYpJCMeXCEmLQfkAQhqpW7IEC6JAADs=
""")
        self.count_images[8] = image

        image = tk.PhotoImage(data="""
R0lGODdhFAAUAKU7AAAAAAEBAQMDAwUFBQYGBgcHBxERERISEhwcHCcnJysrKywsLC4uLi8vLzQ0
NDc3Nz09PUlJSUpKSk5OTlJSUlVVVWJiYmNjY2VlZWdnZ2pqanl5eYCAgIKCgoWFhYeHh4mJiYqK
io+Pj5GRkZOTk5eXl5ubm5ycnJ2dnZ+fn6CgoLm5ubq6ury8vMjIyMnJydTU1NXV1d7e3t/f3+Pj
4+Tk5OXl5ezs7O/v7/r6+v7+/v///////////////////ywAAAAAFAAUAAAGf8CdcEgsGo/IpHLJ
bDqfQ51ws2AwFBehFHlLGQaUyiEgoilZAABG6EmblK20RdhJo5SrdEb4SaeULwkAEjI2Gn5LOA4A
BQUCiEhbLSQkJxGQR1tEIJhNHJ1GLw0JI0IhaSVKMRMACCYqEAAULklbFAAEAwAPOTuaSDUwwjAz
SEEAOw==
""")
        self.count_images[9] = image

#launcher label
        image = \
            tk.PhotoImage(data="""
R0lGODdhlAAhAOfKAIG/JoK/J4LAJoLAKIPAKIPAKYTAKYXALYTBK4XBLIbBLobBL4bCLofCLojC
MYjCMorCM4fDMonDM4rDN4nENIzDN4vENYvEOIzEOY3EOozFOI3FPI7FPI7FPY/FPo/GPpDGP5DG
QJHGQZHGQ5HHQpLHQ5PHRJPHR5LIRJTIRZXISJXISZbISpfJTZjJTpjKTpnKUJnKUpjLT5rLUprL
U5vLVJzMVZzMVpzMV53MWJ3NWZ7NWZ/NWp/NW6HNXqDOXaHOX6POYKLPX6TPY6TPZKXPZKPQY6XQ
ZqbQaKfRaajRaqjRa6nRbKvRb6nSbarSbqvTcKzTca7Tda/Tdq3UdK/Ud6/Ueq/VebDVe7HVe7DW
erLWfrPWf7TXgbXXg7bYhbfYhbfYhrjZh7jZibjZirrZjbnai7rajLzaj73aj73akLzbjr7bkb7b
kr7blL/clL/clcLdmcLdmsPem8TenMTencbeoMXfnsXfn8bfoMffo8fgocfgosjgpMngpsjhpcrh
qMvhqsziq83irc3jrs7jr87jsM/jsdDkstDks9HktNHktdPkuNLlttPlt9TlutTlu9XlvNTmudXm
vNbmvdbmvtbmv9fnwNjnwtnowtnoxNvpxtzpyN3qyt7qy+Dqz+Dr0OHr0eHr0uLr0uLs0+Ls1ePs
1uPt1+Xt2eXu2ubu2ubu2+fu3Ofv3Ojv3ejv3unv3+nw4Orw4erw4uvw4uzw5evx4+zx5O3x5u3x
5+7x6O/x6e/y6u/y6+/y7PDy7fDz7fHz7vHz7/Lz8PL08fP08vT08/T19PX19fb29tbW1tbW1tbW
1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW
1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW
1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1iwAAAAAlAAhAAAI/gCTCRxI
sKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihyZ7JWAkyhJqlzpEdggLCgFsJxJ8+Ku
mDVz6nRoDOfOn0AL+gxKdOdQichmFSvKdOLRh8j8ZBDQYFLTkANiymyUw8GDHWd+EaSjVesUgk8P
jtICYwIBCiJGaGhzktDAVmpiZDCwgYaZWwSFlU3WyEUCFYYEDoqhgMOSUweRWZJSQ8KFHWR2FfT1
JsYDBSKoUBFgKeIoPDHTnASAEgSngWsEFODiZ9GVmHnQpkyIjMtJCm3gQDgpRNcMF70EZnJwUomd
GycZhBp4TFScmIRYo4wERmuC6QR9/iE5uaFNmwgCKlgVeEuEABhq5iDRDkliMK1gXAUThOCkB14C
+XaHQK1IgJIRyOh2kkJwoOSIQImghEZBL6BkSjKnoLRDQb/ElEEYQKBEgQBJtNECSj4UJMVJBqwi
kCEnWUCLQE4IIMFSAlHSgACNSHRMTFEQZAZKYggUhQPCJFMMdCdhUItQuyG0AkoAJpMLSiIUNOJJ
gCiJUgUF/YjSH8l8EpMZyqHUAEGNoJTEQLiglIVAFpzUxisDISLAIU6htAlBoKB0g0B87CFQGSgB
cIlBaRGE3kmwCOQLShEUVIgFCyyhi5dRDhQTYPehhGcywBwVBUpTlKIqJSjBIFAJ/jF94EQfrsgC
TJ8nPTmQLigtUJAmAaBExkGNDpQESogIhAlKShiEjDGw6EEEA2nFlGAy1nraqQllaXWAQHZ0C0AV
OEYU060D9YKSCQTl0gFKNJSroEwJwcLCSSpQUokKJ5EwKkGSyHASDoBUG+VRR3mA0hgKIXPHjmWh
KVFMFw40CkpODITMeCc5oIpAS6gx70K6QIESARbUAIdYBfmBUh3PGrygQAh3OgRKTRgkCimHuvLL
I1/wQO1JJ+AqQBsEIXqSIgPxgZ1ApQjwxcgJMTLBSY0kqRAIKCXHSkzyYntwp0cRgpIDmw70Cwo/
0NyDMQP5csZJLBgdQWnJXLLA/klLDETKAagKVEwPAogsONgJYVAWAA10QMQjBe19EiXJeBETLMMM
VAzixMSUeTLDxAS3QMfkgBILqAiUyg0GiEIziegmA8tJYRh9hAAehOBm2sNMGR0hiOBhw0lyJGPM
H7ehtEUhCOneLbIEHXvSACUY0AVKGmBwzPFWxCTGKmLEtMUmm2whvh/HCKRLETGBkEIAClD+ugAT
eJGHGCgIYIPW5qKEjB06cAAJlMCngZjkeSchk2DKcgGEdKIGCBRACwiiiyts4AAsiAIokJEHGSjg
Bn9aoFYCURYrdK8s8tpEE17ggAiwID/zalIO/BC2hxRLJL84g+S6pYCrkOSGcCG5nQDqoDldsOEk
rvJhSJARk/TNRHK6GkgsTlIGJYJkF5KISSFmcS2VMOEkRPCEL4ZBC0jgQABB4J8VOZKVsniBJcVw
QwyCtZoKPOESXVwjR1TFRz7aoibFwEUqYFFDPRrykIhMpCIXychGOnInAQEAOw==
""")
        self.pzl_label = image

# akari
        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AGiyAGq1AG22Am+2BXC3BXC3CHG4B3G4CnK4DHS5Dna6EXi7FHi8FXq8GHy9
Gn29HX6+IIC+IYG/JYDAI4LAJoPBKYTBKYbCLonDMojEMovGN4zFOY/GPJHHP5LJQ5PKRJXJRZbK
SJfLTZjLS5jLTJjMTZrMUJ3NVJ/PWKPRX6TRYabSZajTaKnUaqvVbq3Vca/WdLTZfLbagrzei7zd
jMDfk8HflMHhlcbincjjn8jioMnkocvlptHnsNTpttnsvtnswNztwtztxOHwy+by0+v03e724+/3
5PD35vH36Pb57/f68vr79/v9+vz9+/7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9E/JChcGDCBMiZIGChcEXQgT+e2GBgsWLGDNqpFDxIoyBGzNWjBAhJEcLKCkQNInRAQcO
Dlh6VCGy48UJEp48GVESo82LBjUmmPAzgk4QDiqilHBAY1CMA4aESKCUQs4nSFFacBABSYGMTy0y
EKKTA4OKDhKUZWDRgQOdTw7YDEshggW4IRzIjYFDRwwNA5LCNZEUKM2WV3UcKAIXbhIHLHSOoIqR
blsNON423qzBIeXKhzPq3fyEyWYHZ52GtohyMVwiDgYMSEBWp5IBPy0GTUlhgmCdRAJXlDDAB9wO
McEe5sr1gAy4DiRkPAD3xoEI0ZMHjcChMQ24AzQa40CiU0djFkm3d4f7vXT4jAaOlG+sIv3hCCFA
gNAQAy4D6TcNUJ0F+oUAYFjMOaABXEIAAFUPcIHAAHY9UWCZRQMkweABBhhQAITgbWQZSgyo1RgS
8jW2lYiroZQACj7cRVqEL2hQGGg+JTBCeQ4oMSMFL+hEwY26rebAjjptNUAHNuSggw0hDMCACXDl
Rhd1OrmFFpYrUsDAekfIZRhGJT2h5UVGPRFChQyAcJtyGUVwAIAWTZBmVhelpZpMFl01ApEhqfAC
n0OywAKhQAqBqFuIRjQoooS+IBFBClVq6UEQCRQQADs=
""")
        self.start_akari = image

# bridges data

        self.bridges_number = [None] * 10
        self.bridges_red_number = [None] * 10
        self.bridges_green_number = [None] * 9
        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AGmzAGq0AG21AG+3BHK5CnS5DXa6EXi7E3m7Fnq8F3q8GX2+HoLAJoPAKITB
KYbCLYnDM4nFM5bKSqPQX6TRYabRZK3WccnjocrkpMzlqNHor9PptNTqtNjrvNrsv9vtwd3txN/w
yuDuyeHwy+Pwz+bz1ef01+jz1+jz2On02fL35/X57v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9A2FhAoWDCBNSMLhQ4cEJFkAI/GehgcWLGDNq3Ghh4MaNBgx81EhwJEYAJkwAMHmxIMsG
AECwYAFiJUuDLGPOnOnB5kicIwXI3DmTg8+NQDceOEGUaIgCPyl8XBBhgoSrWK9SeBB15IKvBgoA
IFDAwFeTSS8a4GqxwAMMKTE8gHqRLsa0MDlUWAATQ1MWGFYumNAzY1oAfiUsKOD3L+ACCySwMIrx
4EUAGWZKMADB8c4HBiTT9GkZpoadEhh7nomBgGgWKi1aNjBU84AUq1mkcE10hUicBlQQlXA79wkA
r1ms4AsUwAjUqldjKPA6doOkOllsfpAbtGgQAi4eevagfXHjv9MjTz6K1zkFvojRCyYc/q7UjG7r
vk1xQq7dBgdohFdGYIlFlll8NZCgYfdtBIFVWWE1AQRdfVQAbo6l8B+DJmVHVE1oNfiRh6PdJOKI
IswkwlEfQfQSTCmkwOJHEb3YQEg2SlSRjS92JBBBDgUpJEIRCRQQADs=
""")
        self.start_bridges = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhGAAYAPf/AF9eXmJhYWhoaG5ubnV1dXx7e4OCgomJiY+Pj5CPj5CQkJSUlJmZmZ6dnays
rq6usLGwsrOztLW1t7q6urq6vL29wb/AxcHBwcHBxsbGx8PEycbGysbHzMfIy8fIzcnJy8nJzc3N
zs3N0c7P1M7Q1NDR0tHS1dTU1tXW2dbX3NfY3NjY29nZ3dvc393d3tvc4N3d4d7f5N/g4t/g5ODg
4uHi5eTk5eHi6OPk6eXl6ebn7Ofo6+fo7ejo6unq7e3t7urq8Ovs8Ozt8e3u9O/w8u/w9PLy8vHx
9fX19fPz+PP0+fT1+fX2/Pf4/fr6+vn6/fv8/v7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAYABgA
AAj/AP8JHCiQhgsTJli4oEGwoUMTK24UKZLkyBEgLFg4bHjjBI2JSZI0iSIySREWMTb+OygRZJIo
I19WjKGxIY0VNH60RBLyZRSYJl+4aNjhxY0cP35MROJihcyfSYCcIHjCY5GkSn90YMCA58uRRW50
GFh0Yo6rNyQsWLs0JMkbJgp2uGFyoom1Cw4sUOoyyg0WE/6dGEEXyUQLBw40SJx0YhGeRUwE7lCC
Yl0aHYpMMGAAq+MjRV5o+KfhRJEoFA0nlVCgwA+kfMOaGNthhGXDE3tIIEDgNVadHS0I1nDacW4I
AgbABk7jxQgJ/2hkMEHSOJAHAgS8znGDRgwXIzRAj/9XYQSSJtYfBAhwQ6dBhCMqjP1XYnqUHjyK
ACnyAECAH825MFgH4hEkXwx+3cBDDzdkUMIN3w2mQQYVVEAQDeW9ENoNHHL4AgsmjNABhQ84dEIF
GpjwFwsfIhSiBhZUUOJGLkxQgQcjjADfCB5oUEEGM6r0TwY2amCkBhhUKEFgQhI0gQQVPvlABk1W
WWVAADs=
""")
        self.bridges_number[1] = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhGAAYAPf/AGFhYWVlZWhnZ2xsbHJxcXR0dHh3d3h4eICAgIeGho2NjZOSkpWUlJiXl52c
naCgoKWkpaioqa6trq6usLGxsbOztbS1tre3ubq6urq6vL6+v729wb/AxcDAwcHBxsXFxsPEycXG
ycbHzMfIy8fIzcnJysnJzczLzMzMzs3N0c7P1M7Q1NDR0tHS1dTU1tXW2dbX3NfY3NjY29na3dvc
393d3tvc4N3d4d7f5N/g5OHh4uHi5eTk5eLj6OPk6eXl6Obn7Ofo6+fo7enp6unq7evs7u3t7+nq
8Ovs8O3t8e3u9O/w8+/w9PHx8vDx9fX19fPz+PP0+fX1+fX2/Pf4/fr6+vn6/fv8/v7+/gAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAYABgA
AAj/AP8JHChQh4wWB23oIMiwoQwZPZw4gSJRiI0aDRnqaJFDIpQpU7CAnHIExsKMNWTocCLEyROQ
IrGIdHKxoQ4XOoQYkfjkZcifU2jaYEgiR04jSElYkCDhg5OQInu0IOjCRUchWCM02LrVgY6YNEkM
HGHDyZGWGBoowODiQ4MFEWBO6aGiIImVEo1AUPDgyU4JChRMeYmlRwwM/1yoEBJUYo67SHU0SNDg
iRMmQVts+EeCxZHGFSM7QIAAg8TTMUD8A8HiqeW8RlooOHAAghOkEqWqJqHi6WmJGw4UKCABKVIh
QTZ+SAzCCZbXTiIMGFCAxHEjPXrksKHCwj8dH1rMmHRiIYD5CRvSs9DR46IKEN7/beg918kAAPjz
4zdSo4XiDWL9w8IHMGDhBA736YffAUJURcIHFBAEoA2F/XabEz0I4R8IH2yw3EA6zFeWDThkl50N
MbTwHggbSNCQCxiQ0EIPMNhgAwwt5PjeBxhMkNE/NWAAoAoq6KgCCSy2+ONAPG4AwpNPpmfBZksS
hMGUG1zZVJVcchkQADs=
""")
        self.bridges_number[2] = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhGAAYAPf/AF5eXmJhYWVkZGlpaW5tbXBvcHR0dHh3d3t7e3x7e3x7fH59fYB/f4KBgYmI
iI6NjZSTk5SUlJmYmJubnZybnJycnaGhoqqpqa6usLOysrOztLW1trq6urq6vL6+v729wb/AxcC/
wMDAwcHBxsXFxsPEycbGysbHzMfIy8fIzcnJysnJzczMz83N0c7P1M7Q1NDQ0dHS1dTU1tXW2dbX
3NfY3NjY29nZ3dvc393d3tvc4N3d4d7f5N/g5ODg4uHi5eTk5eHi6OPk6eXm6ebn7Ofo6+fo7enp
6enq7e3t7urq8Ovs8Ozt8e3u9O/w8+/w9PHx8vHx9fX19fPz+PP0+fX1+fX2/Pf4/fr6+vn6/fv8
/v7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAYABgA
AAj/AP8JHCjQR44YN2Lo8EGwocMZM4I0kdIkSpQmOm44bOhjho8mTqZcubLlypQpTW7w2Piv40eQ
J7dMKSkzSpAcDn3ECIIESZKJMUmWRKlDR0MVOnj+TCKDQwgVTUqSjKIkBkEZMoIkSYLEBwYJYCVM
sDFzy5YnPFQMRNqkyc8NECBsIDEBgoQmMacEsdpSRRCUbSc82LBVhQMIOaTENBKDwz8ZLv5SbOJD
xtYZFhw4OCLliWKMjlW4aHKFIsUkQRw0YNAAw88nE5vEKPGvhAy8J9sm8cFAgW8Ft3+2nf1PdNS2
k91KUXHgAIStqPeGeFwiqucmFR7E2Jq6gIInRnz4p9DhYkNLEjFkti0QwIERpgUKONjNI4eLEub/
fXAhZYuRJhMEEIB3AgYgg0ExxODCByQIBAN6/hmhRIAAVFiACgZBpgJ+BH2QAg9bBBGEEjyUEIIL
SRQVgwwlkMBBgwP5sJ8OTyQloogZKVhCCR/kd9UHJex0ww05JnifixiwlAMHHrrggpEupMDjB0my
JJCLQO5Ywggf9PiBlQ1xsEGXYmIAI5hoWhkQADs=
""")
        self.bridges_number[3] = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhGAAYAPf/AF5dXWJhYWdmZm1sbHJycnd2d3l5eXx7fH19fYGBgYSEhYiHh4iIiY6OjpCP
j5GQkJSTk5aVlpmYmZybnJ6enqGhoaampquqqqurrKyrq62tra6usLOztbS1trm5ubq6vL6+v729
wb/AxcHBwcHBxsbGx8PEycbGycbHzMfIy8fIzcnJy8nJzc3Nz83N0c7P1M7Q1NDR0tHS1dTU1tXW
2dbX3NfY3NjY2tna3dvc393d3tvc4N3e4d7f5N/g4t/g5ODg4uHi5eTk5eHi6OPk6eXl6ebn7Ofo
6+fo7enp6unq7evs7+3t7+rq8Ovs8O3t8e3u9O/w8+/w9PHx8vHx9fP09vX19fPz+PP0+fX1+fX2
/Pf4/fr6+vn6/fv8/v7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAYABgA
AAj/AP8JHCgQiA4ZMnTsGEKwocMbMoZAgZJlIpIdOxw2BBIRipUsWbZ8AZkFiQ2GGoHcAMIEShSQ
W0SKzEKlR8aNMoAgYcIkysuQX2RWxNiQxcKdUJhYsaLDw4ygX75QQSKD4IwZQJIykQhFhwQJG0KK
/AJlCIuBJnZM5MkTiAUHECxUBDlySNV/QFgMqbiWiYUGDRxY8GiFSpYvVEP8m/Fir8eJHRIEXiDB
ysSlFWUoZjGDYkUrJRIkKCEhAQQrLS9DsWHin4nOIFcfODBYwgEHbFMfkdGaBQwoZK0kKECgAYQD
BQpIuMF2yJAZIhabGPLF8oDr2LF72Dqkh44XHfCmnR0JJcSGDRc2FAhQYINOIAZnmNgg0AOMw1zX
LghwYKtBGTOoYEIJAsFQggxkpQYFEhIA0AATO+jAGAsl0DdQCCz0kIVzSEjERFYYyRCDCiWEQOBA
QGDYAxQ79OCcczvYIMMLJphgnkMzhKBCRDZgJCNCNJbggYUONaUjDDAA+YKAIdyo0UBChlDjlE12
oNiTDXlgZQhabnAilmCGGRAAOw==
""")
        self.bridges_number[4] = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhGAAYAPf/AF9eXmNjY2VkZGloaG9vb3FxcXV0dHh3eH18fIODg4aGhomJiY2MjY+PkJCP
j5KRkpaVlZiXl5qZmZ2dnZ+foKKioqOjpKampqmpqa6usLOzs7OztbW1t7i4ubq6vL29vr29wb/A
xcHBwcHBxsbGx8PEycbGysbHzMfIy8fIzcjIysnJzc7Nz83N0c7P1M7Q1NDQ0dHS1dTU1tXW2dbX
3NfY3NnZ2tnZ3dvc393d3tvc4N3d4d7f5N/g5OHg4uHi5eTk5uHi6OPk6eXl6ebn7Ofo6+fo7enp
6unq7e/v7+rq8Ovs8O3t8e3u9O/w8+/w9PLy8vHx9fT19fPz+PP0+fX1+fX2/Pf4/fr6+vn6/fv8
/v7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAYABgA
AAj/AP8JHCjQR44YNWLoCEKwocODQZo0iRKliZIbNxw29BHDx8QqVbaEBNnkhg+N/3zM8CgR5EiR
VZrwyOGQow8jSZpIkVLlis8tQGPq0NFwxcImSYL4kCEjxowcOX5WMRKDINMgSZFmgDCBKwQJM64A
baJjxcASOiQmSRoBglu3E3yAFBlERsEVQaRIbCLDgYMcUHYKnhtER4d/MlwEqUIxSocFC7pO6JBX
J88mMQ6vkNGEMUUKCkInCO0gokS9Okr8K8F5S+coEA4s6LCiwoEEFPRKLBJD9YoXTVxTrIsV64ID
B6SsDVI3BOISQbZE2ZmBQg6cQSAMONCEuQ8dLjikokQrsvuAAQuSFMlBAH0SHzNllMggsMOLkEWa
NAgQQPYA/i58F4MMKZRAgkAvkBCDa0UEsQAAEAIwAAkCurACCfQNBMIKPFTBHF8dcECCUjrEAMOF
IBw4kA8b8kAWczDqcEMMLpRQAggZWgVCCjEEgZGMMQRZIwkd5NhQDh3s+MILQrpQIAghGKkRkSDY
aCUIIHBwGEoNhQiCCCFmoCKXZJYZEAA7
""")
        self.bridges_number[5] = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhGAAYAPf/AF5eXmNiYmZmZmhoaG5ubnNycnR0dHt7e3x7fH19fYKBgYeHh4mIiI6Njo+O
kJCPkJGQkZSTk5SUlJmYmJ6dnqGgoaenp6urrK6trq6usLCwsbOztbW1t7i3t7m5urq6vL6+v729
wb/AxcHAwcHBxcbGx8PEycXGysbHzMfIy8fIzcjIysnJzc3Nz83N0c7P1M7Q1NDR0tHR1dTU1tXW
2dbX3NfY3NjY29nZ3dvc393d3tvc4N3d4d7f5N/g5ODg4uHh5eTk5uHi6OPk6eXl6ebn7Ofo6+fo
7enp6unq7uvs7u3t7urq8Ovs8O3t8e3u9O/w9PHx8vDx9fX19fPz+PP0+fX1+fX2/Pf4/fr6+vn6
/fv8/v7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAYABgA
AAj/AP8JHCiQiA4ZNmTgEEKwoUMZOoQwkUJRShIcOBw2JDKDiBEpVqxg4SLSykWGGnV0XEIxJJaR
I61I6ZFxY0chS5hMkTLlJReYWJjg8NGwBY4lRpbkJNLCQwkbIrlwsSiD4IwZEnMuaTGha1cOU6LO
VDGwhQ4maJfImACBQgkMECC0CEtSSNV/REwIoTgRw4MJSpdUYOABS08uRmSE+DfjhRGZFBkwqMCB
QgUPPqZM7MnEhod/LWAwCSlFiILTqBVAILKTp9AS/0q8YDJVig8EuCeAqIDbAlrNak2Anj3VipAC
BiBMUfqgAAIpSyQKmQF7hokkXDQzKUBgApPoEwgUsZhChAjGFxzwlpBBEqQDAQNmLNFRQAADJgZ1
vDCR/p8HGJwxIcMAAgiAAIEClICRfi+EQNY/MKzHBVJMmEAAABgK4IFBjbVQggYEeaCCD1gIIRET
L3jQghFE2NCYCSaEANtARHjwAg5SLGSiED5gJMMLKpTgAYgNzeCgDELYgBEONcjwowkieNCfQzp4
4CAMMDj5ApAxvqURQUKGAOOYIYTAwWdfNiRlmVJiMGOacMYZEAA7
""")
        self.bridges_number[6] = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhGAAYAPf/AGBfX2VkZGlpaXFwcHh3d3t6en5+fn9/gIWFhYyLi4yMjJKRkZSTlJeWlpiX
l56dnaOjo6KipKalpamoqK6usLOztbS1trq5urq6vL28vb29wb/AxcDAwcHBxcXFxsPEycbGysbH
zMfIy8fIzcnJy8nJzc3Nz83N0c7P1M7Q1NHR0tHS1dTT1NTU1tXW2dbX3NfY3NjY29nZ3dvc393d
3tvc4N3d4d7f5N/g4t/g5ODg4uHi5eTk5eHi6OPk6eXl6ebn7Ofo6+fo7enp6unq7e3t7urq8Ovs
8O3t8e3u9O/w8+/w9PLy8vDx9fX19fPz+PP0+fT1+fX2/Pf4/fr6+vn6/fv8/v7+/gAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAYABgA
AAj/AP8JHChQB40VK2TQ0EGwoUMXLnokSRJlYhIZMhw21OEiRxIlUaJcERkyCQyGGnOs6FHkY0iS
V6ZU7EHDoY4VOoZYdBJyysgrIy+iHKhCxpCjSZw0ccJTZMyRPVYQbLEySZEiHhw80PpgKwQlQJP0
KDHwg4yJLS04WLuWwVodJKMWLCHR4k0XLVpAYMDgQs8rQlZo+NcCRY8oTtAWYdkiQQIITpRErij4
X4kWFCsmvtqDAYIEVyeCTPLiw78PmEMutVrkggEDHq4asRhkhekSKJJcodiENQICCJIc5VzkxgoP
hEf0uJJ4dYkBAy4UGTJ9SI8cNFBY+KfD7MjVSSAImBCgg/MQHQZRfKAg8EIKJ1fqJjEAwIDVHudl
IEThAfm/FB6ssFtLRggAAAOL9aCDfi2U4AF7A2lQwg1R9MASBQ6ssNiCK7TwgQca+FeQhDdcZKGF
Mhi3gnofaADhVBqMsBIMGMnwwn4fXvBiQzRcsMEIKKSwHwojtOiiRgR5cIEGHzTZpAYaWDAYkg1d
IKUGVlIgIpVcchkQADs=
""")
        self.bridges_number[7] = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhGAAYAPf/AF5eXmJiYmhnZ2hoaG1tbXRzc3R0dHp6enx7e318fIGBgYWFhYmIiIyLi4+O
jpGRkZSTk5WUlJmYmJqanJycnqCgoKurrK2tra6usLCwsbOztbW1t7m5urq6vL29vr29wb/AxcHB
wsHBxsXFxsPEycbGysbHzMfIy8fIzcnJy8nJzc3Nzs3N0c7P1M7Q1NDR0tHS1dTU1tXW2dbX3NfY
3NjY2dna3dvc393d3tvc4N3d4d7f5N/g5OHh4uHi5eTk5eHi6OPk6eXm6ebn7Ofo6+fo7enp6enq
7e3t7urq8Ovs8Ozt8e3u9O/w8+/w9PLy8vHx9fX19fPz+PP0+fX1+fX2/Pf4/fr6+vn6/fv8/v7+
/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAYABgA
AAj/AP8JHCiwBw4YMHDQAEKwoUMaMIAwYUKFCZQkNmw4bNgDRo+JVKhY0SKSCkaGGw8CQcIkSkgr
I0dSgZLRYY8YPZCwbBlSS0ySTGoSbIEDSJEiOmGM4KACiE+fVIrAIBgjok6dGyg8oCCBgoqeWpwA
UTGQhI2JOkc8eIBhhFYJSHpSATL1X4+mFSdiaPAgCpIYDRqocElFC90P/2K0AELFycQNDBZwiIFh
AYMaUZy4DMrhn4oYFCtGAdJAwYIFCRZQcOxEMxMYJP6RAB0SihMOCXLrVoCjyEQmUmOrcMFEC9oD
BRr0iKIiQYG+SFYCiTEiMQmnLnEQIMBBJ5AHBA40rCkCBIiNFhvsmiUploCABitxFCCwAEmPjLAz
COTgIophJhQEEAABCQggoAk96EBDDCaMUN0/LowAg3FIFBEgABgO8IF5MLygAgnpDfSBCjvMJVEP
JIzQAhL4vdDgB4gN1MOIOwRVXnkZ2QBDCyiQ8AEGDsXwAQoR0ZDjDAi1QAIIHACZEgcgoNCCC0ny
6OMITm4k0FIfkOCllzBu0JmWDXGwAYxmtkXmmmwKFBAAOw==
""")
        self.bridges_number[8] = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhGAAYAPf/AF9eXmJiYmdnZ2loaG1tbXBwcHV1dXx7e4OCgomJiY+OjpKRkpWUlZmYmZ2d
naCfoKGhoqKipKSjpKWlpaioqKyrq66usLOzs7OztbS1trm5urq6vLy8vL29wb/AxcDAwcHBxcXF
xsPEycbGysbHzMfIy8fIzcnJysnJzczMzs3N0c7P1M7Q1NDR0tHS1dTU1tXW2dbX3NfY3NjY2tna
3dvc393d3tvc4N3d4d7f5N/g5ODg4uHi5eTk5eHi6OPk6eXl6ebn7Ofo6+fo7enp6enq7e3t7urq
8Ovs8O3t8e3u9O/w8+/w9PLy8vDx9fX19fPz+PP0+fX1+fX2/Pf4/fr6+vn6/fv8/v7+/gAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAYABgA
AAj/AP8JHChwhw0XLmzY8EGwocMZM3woUSLFiZIhNGg4bLjDxY6JUqRQoYIlpJIYDDfamPFRyZOQ
JKVgoSJFSQ6NHF/sGGJESZKXIUtiKakkY8MVC4fwVLIDRYgXRmSSdDLEBcEXLnwY2WokRIOvDRyc
EDmUSQ4UA0XQmKjECIoGDBxoiMCgwYugUnxY/dfUR82JERIw4PogQQSgWKp2+PdihV8nSZgwSGDB
CM8MCRK4ZFLTxWIULyjWfMIAQQLLRBogQLDjCcWTIv6JCG2SiYYDBwwzwH1gbVsiLmKjWKEEC0XX
DgwoX25gh2UlekMwNuEDi2smPlBosBBBQ4MCBpIYp/GRcUUGvmpLMnkSgYCBrS4MBBi8w+AKERYE
amDxBIvEDgEEYEACBAQwgA070IDQCiFI9w8LIbhgXE8OAGAhAASg4MNBLziV30AdoJBDXhLZoEEG
KBiRkQsviBBCBw4WFGIORflgI3kr3idCBx9e1YEJWcmQEQ0xLOjidhv9Y6IHJqzAwoIrmLAjj0kO
FIIGHYigpZYddJDBYlUSdGKXJ1oQY5hoJhkQADs=
""")
        self.bridges_number[9] = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AJECApUCApkCAp0CApkLC5kNDZ0JCaECAqIHB6UCAqcODqkBAa4BAa0ICK0M
DLEBAbIGBrUBAbQHB7EICLcJCbYNDbkBAbkFBb0BAbwGBroPD70ICL0PD7oREbkWFrwREb0UFL4Y
GLweHr4hIrc0NLA5Ob45ObFAQLZAQL9ERLhOTrhUVMEBAcUBAccFBcAMDMUMDMkBAcoGBs0BAc4K
CsMREccTE8YaGsUeHtEBAdMGBtUAANEKCtMODtUODtkAAN0AAMIiIsAkJMIsLMYsLMopKcMzM8o5
Os86O9QrK9UtLdovL9E/P9k8POEAAOQAAMVAQMNMTMVOTstBQcpHR89AQcxFRcBUVNJLS99AQNBR
UtNUVdVfYcx0dNVnZ9loadhrbNR0dNt0ddp8fOpISOhRUeBjY+Zra+xvb+twcOl0dOt/f+15ebKx
sbSzs7S0tLi2trq4uL69vc+CgtaAgNSJidyAgNqJidOQkNaWltmQkNyQkN+ensG/v9qhod2goOqE
hOCRkeWXl+Cfn+mamvOTk/CVleWkpOKrq+epqe+jo++oqO+vr+Ozs+aysua0tOW6uuqwsOm0tO+z
s+u6uuy6uvC1tfO5ufa5ufa+vsPCwsXFxcnJyc3NzdHPz9LS0tXV1dra2tza2t7e3unBwevHx+3B
we3Hx+3OzvnLy/jMzPTS0vbV1eLi4uTk5Ojl5erp6ezp6e3t7ffj4/fm5vHu7vjh4fnl5fvp6fnt
7fHw8Pb29vn29vz19fr6+v36+v7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP8JHEiwoMGDCA+2iRNKV69esELFaZOw4r84sIDhYhTIjh1BjGYBgwXHYsE2tXopsmLBAouW
FjhwsMIIIkWTm4BJIuKShc+fFnAcqWCEFDA5FjkBG9PzJ4scPnNYuPGlBoU9vTYl3NTLS0+oOcKK
/VlETIgIYYDFUbi05c+wO3gsWcIjrE8sXypE2PPr5sBNsEg1FbvkErDDwCwtgcrhy5YIDVDBKhin
F0+XYrP0Qoy4FxOoTLgEiWACmN9/tRRFwMwiLi7EmDIhxgW1xhYrERZImiywDbAUg3OcQUzGiZMy
iM1ArWLlwwIppgXKwbUac44dhoGlcvLEuKrDkqAW/zkyYkGDXGv/hWq0OmrrXIcLcTde6DBtFjeI
jMhN6pPAWntU99R1iK1hnHFrIOZTDUGUt4AfvAFDh4BP8YAYGsb98EMaiElVQwgfRHBAILoIJOEC
7UFFA2JpaKghh4dJxcIHGiywAIkC6RJIBAKGtRkwa/yww5CAHNaLTxXoZeMfvK2HYntPsXKYIkMO
qchhrLxkQW4LHNCfQJvM0gCPbrFAiH115cADfMAI0hKPNiqQS0n/+JaCjTCxwARijCSRhCSIHbEl
jwcccEV0OSJygI0CAsoZYogM2uUBApDCm0Bw9ELCooxGwEF2nEmiZKGUooDoQLWQQiqnNkoxCCmk
DH8ShY2LUiqAAqi4YpBvdQiwqo3A0jqpAMQKgMepBMkBTBfFrlprob4WK8AcwNB5UE51ECDttgIE
4G0ABByLVEVxAENKCd+mq+4JqFRrUp0ZNaICAekCEEABK0Ay0mkmtZFRLqT4gQcefpACHyz8vttb
HJ/AoosusHgykcIUKxwQADs=
""")
        self.bridges_red_number[0] = image
        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AJECApUCApkCAp0CApkLC5kNDZ0JCaECAqIHB6UCAqcODqkBAa0BAa0ICK0M
DLEBAbIGBrUBAbQHB7EICLMPD7cJCbYODrkBAbkFBb0BAbwGBroPD70JCboREbkWFrwREb0UFL4Y
GLweHr4hIrc0NLA5Ob45ObFAQLZAQL9ERLhOTrhUVMEBAcUBAcAMDMUMDMkBAc0BAcMREcUREcYa
GsUeHsoQEM8QENEBAdUAANcNDdkAAN4AANgLC9sPD90PD9IQENYQENkQEN0WFsIiIsAkJMIsLMYs
LMopKcMzM8o5Os86O+EEBMVAQMROTstBQcpHR89AQcxFRcBUVNJLS9JOTtBRUtNUVdhUVN1UVNVf
Ycx0dNVnZ9loadhrbNR0dNt0ddp8fOJHR+NSUuJUVOZUVOlUVOt6eux9fbKxsbSzs7S0tLi2trq4
uL69vc+CgtaBgdSJidyAgNqJidOQkNaWltmQkNyQkMG/v9qhod2goOqAgOCRkeWkpOKpqeerq+Oz
s+aysua0tOW6uuqxseq0tOu6uuy5ufWnp/OoqPGvr8PCwsXFxcnJyc3NzdHPz9LS0tXV1dra2tza
2t7e3unCwuvHx+3Bwe3Hx+3Ozvvb2+Li4uTk5Ojl5erp6ezp6e3t7ffj4/fm5vHu7vjj4/jm5vvp
6fnt7fHw8Pb29vn29vzw8P329vr6+v36+v7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP8JHEiwoMGDCA+maUNpFCtWqCS5SZOw4j82o16FIsQHDhw+hDKOYmOxYBpUrPwocZGhZUsX
LqD4eTWKYklGrwgdacmip08WNZRkSFLpVRuLjV6F4ckChtOnPWt0AfHgzitGCRmx4pKh51MYOMBC
RQImxIMvrI4aTKOUp1MccOOGdcqiShcXC6zaHMho1KUHXsHG3bHnFCK4Tl90ufLAQiVPBduw2tlV
8I7LaF5p9oGYxRItRB6YeLX3H6o+DypbFoJIs2YhiGHYuCLlwQNAkAWyTeEW7A40rFxv3tE5ihQQ
C5yQFugmVGqvcMUId+2DeFgWSJQUWdDgFMl/kgjZ/64Ml4xmTa2Hx6ZxpMiDBZceCRx1J7VqHD7Q
mOFhhrp1GCzIQEQI3PmR2ytw2NeUZTvwR11sLLgQglkL0IGKQAiO19Ngl/X3WmwtgWDBAgvwcaFp
fIx3Hw6XmadZEJ1FaMF7C+SRmySALGAfeXG5+EoQdLHQkm0LHFAJJAIxEkoDtin4FA4+2gCgkBk0
eUB33+2mo0uqwYCFazb0NOR7BxwwxXICoeJHmVsyxcKXmsngEpEHIIAAbgSxwQoJZR6go4JVuMYS
nXYiUAKaA/lVp51+kriABX5UAgeJfRZKQCa5EcRWHIV22melhQYgKh2IEuTGK1sgEECnrIaqKgJv
vFfy3UE40fHqqp2uKqqoBJDqhkVtvFJJCbsWa+wJmcha0j9pePIKICoQUCwAARSwwiCveFJaSc2+
ckoledBBRx6VnJLttsvq1gYknqCCiiePtIFuuvQiFBAAOw==
""")
        self.bridges_red_number[1] = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AJECApUCApkCAp0CApkLC5kNDZ0JCaECAqIHB6UCAqcODqkBAa4CAq0ICK0M
DK0YGLECArIGBrUBAbUGBrEICLcJCbYODrkBAbkFBb0BAbwGBroPD70ICLYXF7oREbkWFrwREb0U
FL4YGLweHrUkJL4hIrc0NLA5Ob45ObFAQLZAQL9ERLhOTrhUVMEBAcUBAcAMDMUMDMkBAc0BAcEQ
EMcTE8YaGsUeHswREdEBAdAFBdYAANMJCdkAAN4AANQREdMaGtAdHdUdHdgQEN8fH8IiIsAkJMIs
LMYsLMopKcMzM8o5Os86O9IhIdQkJOEAAOQAAOILC+IbG+QaGuQsLOY1NcJGRsVAQMROTstBQcpH
R89AQcxFRcBUVNJLS91GRt9OTtBRUtNUVd9aWtVfYcx0dNVnZ9loadhrbNR0dNt0ddp8fOJZWeBd
XeVubutubuxvb+Vycuh8fO54eLKxsbSzs7S0tLi2trq4uL69vc+CgtaAgNSJidyAgNqJidOQkNaW
ltmQkNyQkMG/v9qhod2goOuOjuCRkeecnO2SkvGFhfCSkuWkpOKrq+erq+2iou6kpOOzs+aysua0
tOW6uuqxseq0tOu6uuy5ufGurvK2tvSxsfW2tvG5ufK/v8PCwsXFxcnJyc3NzdHPz9LS0tXV1dra
2tza2t7e3unBwevHx+3Bwe3Hx+3OzvLKyvPNzfTIyPTNzffV1ffZ2fnT0+Li4uTk5Ojl5erp6ezp
6e3t7fbi4vfm5vHu7vri4vnm5vro6Pns7Pzs7PHw8Pb29vn29v329vr6+v36+v7+/gAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP8JHEiwoMGDCA/SwYOqlzFjw0zhoZOw4j88w5L5qnSoT59DlXwl63XHYkE6DgtxueCC5YUL
HD5wcZQMF0WToJJhSsKypYufP4ssuaAkVTI8FkMl6/MS6IwZLqD+tHHmAwc+yUAlBGWMTM+nYMP+
TKLmg4Q1RxUaY+p0Ro4fYNzEYdPkqQsvZzhIwHpzIKheqZqC5WHIWLLDhz01cRHjjJgLFlLhKogn
2ZGvbjch3qwRiAsmZEhIQJGs779hhXpGzcEGsaw5cDghhuQChxguEhZEmiyQTjIrgt1mOuwrypMn
PTQnCwZ1CxezWEoLBLVLAuYciQ4regLl+KLDxqAm/1kyYoGFYEj/mYpkneXTHD2mUOHefUqww7Gg
2khSJHcqUgL1cogEEvz0Xg8IHvfEFLIgNgZUNBQh2gKF8JbMGu0ZmAN8PSBXhUiHQWIXDR98sMAC
fwwjkDF8LGBdVAci+MZmIkoVEwcNLHCIiqcNmOF7OQwxHGJygPUTBxbkRiFv67n4IoxANHhYMF8Y
2dIFSh7w33S7NEBgU7XNgpgnQFj5EoEnKhBMSf/4ZsWJL7GEyGazxGKnnUyhucABXUgn0DCNHHCi
dTQYxhlnWO55gACSEXSHMSYIeuIHh3K2y4kHLKqCnwMBlmmmC5BgxaiklvpApgIIoEArthjkGx8C
fGsq6Ym0CopqqgL8wSlBeSRTBq6y2orqorjqkQybB+XERwG4NotrANAGUICueVhUWSonRKvttim0
cqxJbeKSTCQsFKAtANK2QElNpplEh7jBpELIH38Qksp9NoGrEB6k4DLMMLiMMpG+BOsbEAA7
""")
        self.bridges_red_number[2] = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AJECApUCApkCAp0CApkLC5kNDZ0JCaECAqIHB6UCAqcODqkBAa4BAa0ICK0M
DLEBAbIGBrUBAbQHB7EICLcJCbYODrkBAbkFBb0BAbwGBrsICLoPD70ICLYdHbkSErkWFrwREb0U
FL4YGLweHr4hIrc0NLA5Ob45Ob8+PrFAQLZAQL9ERLhOTrhUVMEBAcEFBcUBAcAMDMUMDMkBAc0B
Ac8HB8MREccTE8YaGsUeHtEBAdMHB9UAANQHB9MICNEODtkAAN0AANwJCdITE9AbG8IiIsAkJMIs
LMYsLMwkJMopKcMzM8o5Os86O9giItgkJN0vL9U2NtszM9s0NOEAAOIHB+QAAOENDeUJCeQzM+ky
Muk/P8VAQMROTstBQcpHR89AQcxFRcBUVNJLS9pLS9BRUtNUVdZeXtxVVdVfYcx0dNVnZ9Rra9lo
adhrbNR0dNR7e9lwcNt0ddp8fOJkZOd5eeV+fuh9ffB4eLKxsbSzs7S0tLi2trq4uL69vc+CgtaA
gNSJidyAgNqJidOQkNaWltmQkNyQkMG/v9qhod2goOmBgemJieCRkeyamvCKivCWluWkpOKrq+er
q+Ozs+aysua0tOW6uumysuq0tO6xsem6uuy5ue++vvKiovGoqPSsrPC1tfSxsfO/v/S/v8PCwsXF
xcnJyc3NzdHPz9LS0tXV1dra2tza2t7e3unCwuvHx+3Bwe3Hx+3OzvTCwvHLy/jDw/TS0vfU1PnT
0+Li4uTk5Ojl5erp6ezp6e3t7ffj4/fm5vHu7vni4vnm5vzk5Pvq6vns7Pzu7vHw8Pb29vn29vz2
9vr6+v36+v7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP8JHEiwoMGDCA/m8aNL2DNmyXT1yZOw4r8+yZ4Rm9RozpxGmI49E8bHYsE8wph5QvHCQsuW
Fjx8mTSSoklTzzAhcfnyhc8XOZhYWPLqWR+Lp57NscDzBQ0aTn/iaBNCw6BnpRKaYraG59OvYH0m
idMhwhujCpU2fapDhxMoT3Q89TmmzYYIhp7ZHGiqVyymTtkuIvas8LFHPqDSaGMmQoNXvQr2YXbE
Kw0fpAprLnxrCFQwZ4pEQKGXoDBPEbzqWKSZ2Kdcmh1BlWEmTIQIlCILzPNsBWC2hJ/ZsmIlSCjD
cl+ACeNhQZfS//wQS+2T7afCW4hbeaR5rhImZRsc/zv6jxWm1C7ZBhEixMoVLXiYFSaVHAcSEhEW
vFIlUJgh9F+1FUQQVwSnGRRzyVBEDgssoIhuzwRym2o6DJjFZoXZkWAHzS1ASDICPQPHhIHRUOF6
kHgSinyFkeGTBh54kF8jwgiUTCMTpsfWiQNCwWIoPlmggQQNJqIbK5QsgF51doTiSFtQZvbMLTDl
t8AB+wlkCjANKAlYEprRYaKJwf1lwW0NKnBMSf/wtoKSSwZ3DBpERHFcYXGcedsBB4gB3T/JSHJA
g+idgeFmtWiAJp8CxKKbQHwwUwKfhEbABoubYSLjlYyq8Gd/sfBJaYMdwEHJK7EYgkKDgx4ggAAK
zHWyi0G8BSKAqIM2qOuVnL76KiGfDuTHM2r4imurjLrq6x/PsHkQToEU4Ou0vgZgbQAFAOuHRX08
84oJ14YrbgqzNGtSm708QwkLBYQLALYtXPJML3udm0e6x7ySCCGEJPKKSPSeq1AfqvSSTDK9pDKR
wAwLHBAAOw==
""")
        self.bridges_red_number[3] = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AJECApUCApkCAp0CApkLC5kNDZ0JCaECAqIHB6UCAqcODqkBAa4BAa0ICK0M
DLEBAbIGBrUBAbQHB7EICLcJCbYODrkBAbkFBb0BAbwGBroPD70ICLoREbkWFrwREb0UFL4YGLwe
Hr4hIrovL7c0NLA5Ob45ObFAQLZAQL9ERLhOTrhUVMEBAcUBAcUGBsAMDMUMDMkBAcoGBs0BAcwG
BsIQEMcTE8YXF8YaGsUeHs0UFMkaGtEBAdUAANMPD9oAANwBAd4MDNYQENYVFdIYGNYcHNkQEMIi
IsAkJMIsLMYsLMopKcMzM802Nso5Os86O849Pd8jI9wnJ+ENDeAnJ8VAQMRISMROTstBQcpHR89A
QcxFRcBUVNNBQdJLS9tBQdhOTtBRUtNUVdhUVN5dXdVfYcxkZMx0dNVnZ9loadhrbNR0dNt0dd1x
cdp8fOFFReVKSupUVOxVVehYWO16erKxsbSzs7S0tLi2trq4uL69vc+CgtaAgNSJidyAgNqJidOQ
kNaWltmQkNyQkMG/v9qhod2goOCRkeWkpOKrq+erq+Ozs+aysua0tOW6uuqxseq0tOu6uuy5ufSq
qvWsrPCwsMPCwsXFxcnJyc3NzdHPz9LS0tXV1dra2tza2t7e3unBwevHx+3Bwe3Hx+3OzvfX1/nR
0fjV1eLi4uTk5Ojl5erp6ezp6e3t7ffj4/fm5vHu7vji4vnm5vnt7fzt7fHw8Pb29vvy8vn29v32
9vr6+v36+v7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP8JHEiwoMGDCA/W0fMJVq5ctT7pqZOw4r88sHjFYnTIj59DjGLxgoXHYsE6DhFhsWCBBUsL
LzhgScRrFUWTl3gxUtKShc+fLEBo2cAEFK88FjHxctOTBQ2nNJ763FEGxIY/uS4lvJQLDUufUWnw
4BHWpxI2IB7wyYXUYJ2lPcOOHVvkC5GoLLyo2fBgEK+bAy/BAvVVLg8gPN7k0kiWhQw1Yh5MGMWq
YJ5cPMGKRQxEyixeoIfgfVLmyAMTfwnWQvTg59zDU0yBBm2ELI0aYrBIeLBo1cC3K1tGPQwESKXZ
tG2z6IKFw4Irqf/pifUg7lwgdJAnb7zkCZIHDXKV//zXiVF1zYfhzJa9/SkIJUgWLAC1SSCsQdWF
i/UMutKc2bXhVcMRaS1QiG//8MJHflD5cApop0zxX3J4vQACCPIdUotACjLo1HG85BIFEBPyMoRy
G3AwwQMLHAKLQLUc8sB5LICh3WLInXKDTxtsMIF8BwrUySILMNiGdkjy0oVLFsy4wAH0CXSJKw3M
yFITOCap0Y5NsriAArOM91YK8r3kkwxhkTHbDkx2+SQX0f1TSyIHyOfhT2PMVsNLLB5wgACgICgQ
HrmQUKedZrIABWi5uFnnnyjEaR8ofvopn51FWmHGCPI9KoAACpCSilu89CFApYde2umTf34qACCS
DmWkBy9nuIrqo36e6qoAe/Ay3kE59UHArsQKEMCxARAAqx4W5cELKCUgK+20J5Diq0n/1LEKL4uo
QIC0AARQwAqO1AQYttryMgsohQACSCGgfGYTtgrlsckqtdSyiiZ5nEvvvxUFBAA7
""")
        self.bridges_red_number[4] = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AJECApUCApkCAp0CApkLC5kNDZ0JCaECAqIHB6UCAqcODqkBAasFBa4BAa0I
CK0MDLEBAbIGBrUBAbUGBrEICLcJCbYODrkBAbkFBb0BAbwGBrsJCboPD70ICLoREbkWFrwREb0U
FLsaGr4YGLweHr4hIrc0NLA5Ob45Ob88PLFAQLZAQL9ERLhOTrhUVMEBAcUBAcENDcUMDMkBAcgF
Bc0BAcMREccTE8YaGsUeHs8WFtEBAdUAANUFBdcKCtkAANwAAN0ICNAVFcIiIsAkJMIsLMYsLMop
Kc4qKsMzM8o5Os86O9chIdMqKtghId4uLtc6OuEUFOgpKecwMOo9PcVAQMROTstBQcpHR89AQcxF
RcBUVMlcXNJLS9pHR9BRUtNUVd9cXNVfYcx0dNVnZ9loadhrbNR0dNpzc9t0ddp8fOFEROVFReNK
SuhFReZWVuBcXOZmZuVubuh9fbKxsbSzs7S0tLi2trq4uL69vc+CgtaAgNSJidyAgNqJidOQkNaW
ltmQkNyQkN+ensG/v9qhod2goOqGhu2GhumIiOuPj+CRkeCXl+qbm+ybm++dnfOVleWkpOKrq+er
q+ylpeOzs+aysua0tOW6uuqxseq0tOu6uuy5ufKzs/C3t/O9vfS/v8PCwsXFxcnJyc3NzdHPz9LS
0tXV1dra2tza2t7e3unBwevHx+3Bwe3Hx+/Jye3OzvLMzPfIyPbNzfjKyvHR0fbS0vPb2+Li4uTk
5Ojl5erp6ezp6e3t7fbj4/fm5vHu7vni4vjm5vrr6/nt7f3v7/Hw8Pb29vvx8fn29v3y8vz29vr6
+v36+v7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP8JHEiwoMGDCA/SyaMK2LJlwFDhoZOw4j88wJwFm8SoT59Fl4Y5A3bHYkE6DiNlwYABBsuW
ILBMcraLosk8yy4hkdCyJwyXI6BQSALKWR6Lo5z1YfnzZ40aTWGMMAOCQqBlohKKWiam59OnO3Z8
/YkEjQgJZ5zhUbhsacuvYeOGfQqjC1UJgZzZHCgK2CqmMJ46+VTLlmHDtSLVkGHmiwQKq3YVxLPM
CFOwiJxp3ry5CQwoYkpQQKGXoLFIPJ2GLcp58zIdMGyAySJhwSXJAuk4YwG4RthlmiG5GT6cCd0s
WkBI2FL6X55gqVU/2UxFypQoP36EJZuixAIHy0r+/0NViedb33Faa47VRizUEUhK1F5lSqCxQOYD
+36kfvMcujYM4d0CheDWVn6B7RDLZsPQEgxnXkC1wQjKHbCIMQItw8cC0T2liGaI+ADED29s1slP
G4DgwQILXGjfIhIg6NsOPmSX3Q6daDaMSxhsUBuBuJHHYXQwwJGIHHLtwJ8zy/D44wH0CSSKLw7E
yBQSm8EBVg21rMdSjCwqMIx4urHA4ksyAKcRFDXo0MhmaGAQowQHHMDcXsZIcgCL5vXRn2a1+Fhb
nQJERtAdy5iwJ58YMNJfLGctUOcBAqzQ3EB+TbroAikMUosvt1TCBYt7UiqAArDkYpBufAigKYuw
kmwqqakCCPDHpQTl4cwYtbr66qSu9iqAHs6Id5AozvBRgLDMChDAswEUcOtRFeHhzConQKvttirA
UqxJ/9CxizOVtFCAtgBE6wImNO0FrrjODLNKIX/8UcgqItUErkJ4mLKLMcbsUspE+xa8b0AAOw==
""")
        self.bridges_red_number[5] = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AJECApUCApkCAp0CApkLC5kNDZ0JCaECAqIHB6UCAqcODqkBAa4BAawGBq0I
CK0MDLEBAbIGBrUBAbQHB7EICLcJCbYODrkBAbkFBb0BAbwGBroPD70ICLwNDboREbkWFrwREb0U
FL4YGLweHr0iIrc0NLA5Ob45ObFAQLZAQL9ERLhOTrhUVMEBAcUBAcAICMAMDMUMDMkBAc0BAcMR
EccTE8YaGsUeHswQENEBAdMHB9UAANUMDNkAANwBAdUdHdkeHsIiIsAkJMIsLMYsLMopKcMzM8o5
Os86O9IkJNQtLdkpKdksLNUwMNoyMt00NNo6Otg8POEAAOAICOUKCuQYGOIiIsVAQMRHR8ROTstB
QcpHR89AQcxFRcBUVMhbW9JLS9lCQtBRUtNUVdVfYcx0dNVnZ9loadhrbNR0dNt0dd1xcdp8fNx7
e+JDQ+RPT+dXV+xdXeFmZuplZed2duh1dbKxsbSzs7S0tLi2trq4uL69vc+CgtaAgNSJidyAgNqJ
idOQkNaWltmQkNyQkN6YmMG/v9qhod2goOeNjemJieCRkemQkOGlpeWkpOKrq+erq++hoe2kpOOz
s+aysua0tOW6uuqxseq0tO+zs+u6uuq+vuy5uey8vPCgoPavr/Wxsfa1tfK/v/a/v8PCwsXFxcnJ
yc3NzdHPz9LS0tXV1dra2tza2t7e3unBwevHx+3Bwe3Hx+3OzvTDw/LOzvbNzfjGxvnJyfHS0vXR
0fXb2/jS0vjc3OLi4uTk5Ojl5erp6ezp6e3t7ffj4/fm5vHu7vni4vjm5vrp6fnt7fzs7PHw8Pb2
9vvy8vn29v3x8f319fr6+v36+v7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP8JHEiwoMGDCA/aMbSqGDRoy1bpsZOw4j89wKYZy7Toz59FmYxNK5bHYkE7DiV1uXDBBcsL
Lz50eTSSosk90zYNacnThcsLQZBcMOJqmh6Lpqa16elixoymPl2IOPOhAqBppRKWmmaGpU+nYMH6
JLJGhIQ0RhUqldCy6YwccJk8+eHUJxiqEq7aHFiq2Ka2bnMAkQRtmmFecp6+ODNGwgNXwArqgbaz
pdMcT5IZ3myY0VMkZIJIODFt779ljbw2zcFDpGFboQobjjIjxJguEhZMiizQzrQtbL/mqLM5jhQp
VmQr8smlywcJWUoL1DOsQvDLtQx/kkKlipQ5u2bR/3ZBBImQBQ+SHf23KlPwrzw2h7q1WZQbuE9t
EBGS21UqgcsssoBXTjHB2YHT0PGUCyEEIcICCxzCGzR9SPDeDFEcmIxmm4XxVAcimHXAIssINI0f
FraFIWdw+OADHLJl4tMFH1gA4SLFALhIim01sZknLvqQgyeGJeNSB9ZBKKFAq0yyAFtt4bCZInDB
pYhh0LhkYW4H+CdQKcNACKVPuBhWSw5vzSCKmSxZCKECyZT0j29bHMCjC2tsJokSSSSy2VJbHnCA
F9IB+MgBYrL0QnYITqNLB24KKsAmvAmUBzQlICqmBCFsgiAu50kg6AECpFDoQH6NqimEWxSyiSuN
fHsB4QKSCqCALL4Y5JsfAqg666+I1iqAAIGcShBOZQzbq6+j9qqsAHxMI+dBW/lBwLPYChDAtgEQ
UOweFukxjSsmcGvuuSjIIq1Jc2Y0yQoEmAtAAAWwYMk0wJhmkh0ZJePKIYEEcogrmuXLrkJ6pALM
MssAg8pEB0d8cEAAOw==
""")
        self.bridges_red_number[6] = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AJECApUCApkCAp0CApkLC5kNDZ0JCaECAqIHB6UCAqcODqkBAa0BAasLC60I
CK0MDK4TE7EBAbIGBrUBAbQHB7EJCbcJCbYODrkBAbkFBb0BAbwGBroPD70ICLoREbkWFrwREb0U
FL4YGLweHrQlJb4hIrsuLrc0NLA5Ob45ObFAQLZAQL9ERLhOTrhUVMEBAcUBAcAMDMUMDMkBAc0B
Ac4FBcsJCcMREccTE8YaGsUeHtEBAdYAANYEBNAICNoAAN0AANkMDNMWFsIiIsAkJMIsLMYsLMop
KcwoKMMzM8o5Os05OdI5OdswMN84OOEAAOQAAOUGBuIYGOcrK8VAQMROTstBQcpHR89AQcxFRcBU
VNJLS9BMTNdKSt5KSt9PT9BRUtNUVd1UVNVfYcx0dNVnZ9tjY9loadhrbNR0dNt0ddp8fOBAQOJU
VONcXOhzc/B6erKxsbSzs7S0tLi2trq4uL69vc+CgtaAgNSJidyAgNqJidOQkNaWltmQkNyQkMG/
v9qhod2goOmGhu+MjOCRkeufn+6dneWkpOKrq+erq++treOzs+aysua0tOW6uuqxseq0tOu6uuy5
ufW6uvS/v8PCwsXFxcnJyc3NzdHPz9LS0tXV1dra2tza2t7e3unBwevHx+3Bwe3Hx+3OzvfExPbM
zPjExPnQ0Pnd3eLi4uTk5Ojl5erp6ezp6e3t7ffj4/bl5fHu7vjj4/jm5vrp6fnt7fHw8Pb29vn2
9vzy8v329vr6+v36+v7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP8JHEiwoMGDCA/GsfNJlq9dtz7ZiZOw4j86u3zNalRIj55CjWb5kkXHYsE4t3wJstIBg0uX
HTxUUbRLFkWTl3w1QoLhhc+fPocs6ZBElK86FjH5WtPT54ynUH3qOOOhwh5flxJe2lWmKdQdYHdE
RaJGRIQ0vuwoXOp1Rti3Yme82EI1wp9dNwdekgWqrQ8vXwK7CfxFjBgmMc6EiVCBVKuCdXwVaTvI
l+XLmH0xYTJmSIQUvvL+uyXI5Qu3Ow5lXr0FR5grESI0eiwwji8rpp/ucFLplG/fGS2bsvHCyhUP
C6qEFmhnVgSvYH9If/IkypTgqYQ8RbKkRAQItpD+/+vU6LnTsNTTo7K8q4nYFzmQEFmwANQmgbL+
PMfwVfoP6nBc9kZcL9wwhFkLCEKbL3jsd1p0O/wnRXCm/ACWXDGIIAJ9fNwiEIMOPhihdIRcxsaF
csVUQQQLFCKLQLcUEltb0QURXCUo+tRBBxXQFwhtnTCyQIi67eDGZV/EJZdLsS1wgH0CXQLLAzP2
BNUMi1hmi5IvvMTiAgrYUtI/trFA30tOzWCLZYY85ZOXLB6gxXIwJnIAfSEicZkZP3np5AECgEKb
QBidcCeeLm1x2RJwOumkACvQORBfB1R66AImWAZLj1/eCagACpCyikG25SGApYdCQMID9Hn6qQAC
8GYhKUF2+EIGrKei+iegrwpwhy9jHpRTHgTgaiyuASQbAAGyqlVRZKCgoOy01KpACrAmkdmKL4y0
QMC0AARQgAuP+NKKaCbFsa0toATCBx+BgLLmudkqVMcmrdxySyua1IFuvQAnFBAAOw==
""")
        self.bridges_red_number[7] = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AJECApUCApkCAp0CApkLC5kNDZ0JCaECAqIHB6UCAqcODqkBAasFBa4BAa0I
CK0MDLEBAbIGBrUBAbQHB7EICLcJCbYODrkBAbkFBb0BAbwGBroPD70ICLUbG7oREbkWFr0SEr0U
FL4YGLweHr4hIr4lJbc0NLA5Ob45ObFAQLZAQL9ERLhOTrhUVMEBAcUBAcEICMAMDMUMDMkBAc0B
AcMREccTE8YaGsUeHtEBAdUAANcFBdEJCdgBAdEdHdccHNgVFcIiIsAkJMIsLMYsLMopKcMzM8o5
Os86O9MiItQiItMqKtcvL9ksLNwrK9cwMNE6OtsyMtg/P909PeEAAOQBAeUeHsVAQMROTstBQcpH
R89AQcxFRcBUVMZSUtJLS99DQ9hISNBRUtNUVd5dXdVfYcx0dNZhYdVnZ9RpadloadhrbNN3d9R0
dNt0ddp8fOFeXu1WVutcXONlZeZhYeRlZe5qarKxsbSzs7S0tLi2trq4uL69vc+CgtaAgNSJidyA
gN+GhtqJidOQkNaWltmQkNyQkN6cnMG/v9qhod2goO+IiOCRkemVleyRke2Wlu6amvGenuWkpOKr
q+erq+Wvr++pqe2uruOzs+aysua0tOW6uuqxseq0tOu6uuq/v+y5ufCkpPOvr/avr/K1tfWwsMPC
wsXFxcnJyc3NzdHPz9LS0tXV1dra2tza2t7e3unCwuvHx+3Bwe3Hx+3OzvPFxfXBwffHx/HNzffL
y/XOzvbY2PnW1vja2uLi4uTk5Ojl5erp6ezp6e3t7ffi4vfm5vHu7vjj4/nl5frq6vnt7fzt7fHw
8Pb29vn29vzx8f329vr6+v36+v7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP8JHEiwoMGDCA/e4dPKGDRozFrtuZOw4r89xqYh48Qo0BtGnJBNM6bHYsE7zKBJ4nLhwouW
F2CE4FIJWjCKJk9N40TEpc8XLy8EOXLBCKxpeyyimvam5UsaL2hABfriRpoQFQpBO5XwFDQ0PqVK
zSF2ahE3IiSwQaqQqVOxOXL4iOKEB1mgYdJskFBoGs6Bp4x9cho17pxe0xJDu5QEKow1YyQ4gBWs
4B5oPV2ObZS4c+JkUaBCKRNEAgq/BJlJkuCyMJjOyUjd6owLao0xXCQs4FRZ4J1pVwjTyME5sZUq
VRZ1TgJ0C5cQC7qg/scHmQTWUYdH+oy8ipzOS6AS/zlSYoGDZEn/tcKEHehwOp0txbEjcloyHlBv
ECmhG9Yqgcwwcp1mw/VQi2eewSHVCzUEIcICC0jSGzRvsNbacEDggmBnc0zFgQgPLjAIMwJN88cC
7UlFSme8RGKJZ1MAxUEIFujGiDEACmghUEl0FkoPQDoBTWKXvMRBBbotkEhv66HYXhidTRFXXC9O
s0tQSR7gn0CnEOPAgC5B0ZmCZNFw4DS4tHQdhAokU9I/v60AIUwwJPMZGT4sUdw0gVxwnQQHHCDd
X8xUcgCEFp6xYWfEhLBmoAJ80ptAekBjwqGISpDGkAjiwt8CgR4ggArTDSRYqJgu0AEblcDyySFe
QH14qKgCKEDLLwb99ocAqELoq6yg0iqAAIOUShAf05gxLK+9hsrrsgL0Mc2bB+n0RwHQZitAANwG
UECxfFi0xzSwnNDtueimQMu0JsEZzDSYsFDAuQB428Im09zU7kB3vJsMLIkMMkgisNip774n7bFK
MMwwE4wqEyEssUkBAQA7
""")
        self.bridges_red_number[8] = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AJECApUCApkCAp0CApkLC5kNDZ0JCaECAqIHB6UCAqcODqkBAa4BAa0ICK0M
DLEBAbIGBrUBAbQHB7EICLcJCbYODrkBAbkFBb0BAbwGBrkPD70ICLoREbkWFrwREb0UFL4YGLwe
HrgjI74hIrc0NLA5Ob45ObFAQLZAQL9ERLhOTrhUVMEBAcEEBMUBAcAMDMUMDMkBAc0BAcMREccT
E8UaGsUeHs8VFc8aGtEBAdEMDNQODt4AANUREdMaGtIdHdcZGcIiIsAkJMIsLMYsLMogIMopKcMz
M8o5Os86O9gkJNopKdE0NNQyMtQ4ONs0NNk+PuEAAOQAAOQyMuU4OMVAQMROTstBQcpHR89AQcxF
Rc1PT8BUVMVQUNJLS9tPT9FSUtNUVdtZWdVfYcx0dNVnZ9loadhrbNR0dNt0dd50dNp8fOdAQOJS
Uu1oaOZxced+fuxycrKxsbSzs7S0tLi2trq4uL69vc+CgtaAgNSJidyAgNqJidOQkNaWltmQkNyQ
kMG/v9qhod2goOuNje+MjOCRkeuQkOqWluqbm+2ZmfCOjvOVleWkpOKrq+erq++kpOOzs+aysua0
tOW6uuqxseq2tu23t+u6uuy5ufOqqvWrq/K0tPO7u/e7u8PCwsXFxcnJyc3NzdHPz9LS0tXV1dra
2tza2t7e3unBwevHx+3Bwe3Hx+3OzvbLy/nLy/bS0vLZ2fnS0vjZ2eLi4uTk5Ojl5erp6ezp6e3t
7fbj4/fm5vHu7vni4vjm5vrp6fnt7fzu7vHw8Pb29vvy8vn29vz19fr6+v36+v7+/gAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP8JHEiwoMGDCA/KsYOKV7JiwkzZkZOw4j87t5L1smQozR5DlnQl41XHYkE5vIxB0mKhpQUX
FjR42OLI2C2KJkElyzSkJUwXPy3USELhyKpkdiyGSpaGwkugMmS4kAq0xpgOGvgk+5RQ55inU6PK
yCEWKBE1HSKgQaqQqc+wOeIC0UGWqpczHiLoSYZzICheqd5GzbEEErBkGhEBkfriDJgIFFrdKmgn
Wc+Xg9sYQ8w5GTAoUp2MERLBBF+CwgYJJrwZcS9ZnIEBcTEDjJYICyzhGignWYrViji7iRJlyuFk
iKRm0eJhQZfT/+70igB27CzEnqJIIU4IMTCzSURA/waW9J8pS9Qxjz3OiDjxOJxn1yAiZMGCVKQE
8gKUHi4sxK+4x8MmnDFBmwgdUHDAIJP9k8waC6zWHWKbsEHFIp054cILNaS1ACDCCGSMHhFQB5UM
QBzXWWcGykSBfSAKJAx//U2VwxO9rNhZETFZ8OICgjRoSiQLlFidDkq8wYkrncCBCGLGwGQBbgsc
gJ9AoOjSgJFPiYEYInXJ8F8ylrRUon0KAFPSP72lYJ9LLqjB2Rcy3JAIZ2BMWeIBBzzXlzCOHGBf
ejW0pmOZZ/IpQCoNClSHMSQIOmgEWxjKmSUa4MbnAQKgAN1AgG0q6QIiANKKLrE40oV9gnIqgAKt
1HNiUG96CCCqfbiyWqWrAgjQx6cE3ZEMGb3aeuumthYrAB7JrHmQTnoQoOy0AgRgbQAE/HqHRZWl
UsK14IZ7QivNmsRmRpGoQAC4AARQwAqUJHOTubxlBEwqgvTRhyCpHDYvvSfZQcotwghzyygTAayw
SQEBADs=
""")
        self.bridges_red_number[9] = image
        image = \
            tk.PhotoImage(data="""
R0lGODlhGAAYAKUrAE6JLlCOL1aYM1qgNWCqOWWzPGu+P3PCSYDHWofKY4vMaZ7UgaDVhKfYja3b
lLDcmbTenbbfoLjgo7vhpr3iqcXltMbmtcfmt8rnus3pvs/qwdPrxtTsx9btytftzNnuzdzv0t/x
1uHx2OPy2+b03+n14uv25ez25/D46/P58Pr8+f//////////////////////////////////////
/////////////////////////////////////////////yH5BAEKAD8ALAAAAAAYABgAAAb+wJ9w
KPRwLhcNx0NsOi+ZT6l0MplGGo2z+cF4pqdTSiU+lTSd7e8oBZ9U43e1o216Mh5SGxV+q+BmGxxN
FBsfICQkUygcGXJ/JyMYRBheJYmKJBQJCXxvYyUfFEOFUyCXHw0Iq4thZB8XRRQfZlMXqwgHCIpu
Kh8aDj8YFbQoUxAHBwrJiVMlfCUXwRQWVLUeFCUOBgaYziYlGxI/EhglKlTGiQ0FBSSIvKEXoxQV
1sZTIQ0EBO+Yel0gCJNwzlk+BgIGwAPoYUOFBj88TLhAxuCIBQIEvAPxwUMHDhUkQPzxoAKKFBYX
BAjwQY8RJBUejPphYaKKECJKjCixAEBjABINOQyjIJKIzA6+PogI8WGChQ8fh0mY8OABEQ8lN4T7
wJXrBg0XKlCgusAJhgcSLvzS8BVJWAkQHpTdwsGBzAoVYIqV8GDCXDU/JtiVQFhChKoNggEm4qBB
1cYLJiyePDkIADs=
""")
        self.bridges_green_number[1] = image
        image = \
            tk.PhotoImage(data="""
R0lGODlhGAAYAKUrAFSQMFeWMVyfNWOrOGexO2++P3TBRnzEUYPIWYfKYI7NaJPPb5fRdJzTe6DU
gaHVgqXXh6rZjrDclbPdmrvhpMDjq8fmtcrnuMvous3pvM/qwNDqwdbtyNftytnuzdvvz97w0+Ly
2eTz2+bz3un14uv25e736O/46vL57vP68Pz+/P//////////////////////////////////////
/////////////////////////////////////////////yH5BAEKAD8ALAAAAAAYABgAAAb+wJ9w
KPxsMEfOh8hsbjYgk+kkFXE6TeYH85GeUikVODXSLLOdTVdkQoHFKrHp2vxkPiKSFOUO+1NzHEwV
H3gkhxURDg4UJmFiIBhEGXcmIpcNCZqaCh9wcxVDFRwmI2wSCQcSGRQJCA1vKSAWRYRSJiQMBwso
eg4HByluKiAbEj8ZFiKAUh+Ehx8JBgkoJiWAGBM/FRcjzFXQCgUFErdSGxQ/FBeO1VKHGAcEBAy4
eiaR6RUWjuYmEwQGDHBw6JCIEFvSsTKhwp2JBgIEDKhgkAQIEB84WIjw4wMFDHJMRAhA8sGEkxc+
gLhigQLHHxP4yTIhAIDNmzZJdMCQbEJlqB8XKGhQYcJDTZw2CYigVIECBCI+ORDzpweECJ4UKExI
N+RDTFIcPFy8yOFIS60OmmSQUAEDCA0cOGjAQPeshAdZfnSQ4NOChboWmp5Mm1cIBb5ZE5+MoK0w
EQmMJ0Bm5Lhy5SAAOw==
""")
        self.bridges_green_number[2] = image
        image = \
            tk.PhotoImage(data="""
R0lGODlhGAAYAKUsAE2KLlGQMF2lN2SxO2a1PGq9P2y/QHTDS3rFUoHIW4bKYYnMZYvNaJHPcJ/V
gqjZjq7clbHdmrLenLfgornhpL7jq8bmtcfnt8rouszpvM7qwM/qwdLrxNXtyNbtytjuzdrvz9vv
0OPz2+Xz3un14ur25Ov25e336O746vL57vX78/z+/P//////////////////////////////////
/////////////////////////////////////////////yH5BAEKAD8ALAAAAAAYABgAAAb+wJ9w
KAR5MBxMB0RsOjWaUClVOp1KHY6zCdKASiaUSrVSoVAlzmf7637B5xWqLD+FPE4QJjQakaZxZGVo
HR1NFR18fyQZEBIVJWVkJyMYRBkZISQkIyAOCqAKCxtzKysmHxVDiCUlfw8JCQ8UCwkKJXEoIZZt
FSForQsID5sVBwkeKXEiGBA/GRa/VCUgGZsaDQcHIikmyljOFRYlKlRUJCEHBgUGDn8mUyUYFD8U
GbhnrSQgBQT+BPf+tJr3Q1ykVtNcpagwYECCTeh2SXhGIZK3EgwQYNiUTgABEyJAgOhg4UEbChjk
tBIQYBsjAQIO7PvgwQIFkz8iWEixQkR1iQUBAngMGiCDEQwYLESg9+MCyp4iRgAFQFVABSPQKtwk
EqHChxUh+HygIMECiUIYMlCgAIFpEZ0dTCQKGzZL0rURcF5auocDB7tIbbJ1wMYDhK4WLAS2oDVC
BMJshLBdupbCBMcPIkRuAiFzhM4O3G4ezSYIADs=
""")
        self.bridges_green_number[3] = image
        image = \
            tk.PhotoImage(data="""
R0lGODlhGAAYAKUpAE2ILVGQMFqgNV+pOGOvOma1PGy/QHLCSHvGVHzGVYHIW4fLYpbRdpvTfp/V
gqjZjq3blLHdmrXfn7nhpLziqL7jq8bmtcjnuMrouszpvM/qwdXtyNbtytjuzdrvz9vv0OLy2ePz
2+n14ur25Ov25e336PL57vX78/z+/P//////////////////////////////////////////////
/////////////////////////////////////////////yH5BAEKAD8ALAAAAAAYABgAAAb+wJ9w
KPRwMBjO5kNsOjWYz2hkmoY2G2fTE6WaTCfU1xTSMLUejUc0In1P4bCp1MluMZ6QSERyg1FxVVhN
FUt6IyJfHBAZgCgoJSEYRBkZHogiUiMcCwsOYGEoIx8VQxMbU3t7HgwJCgxVX2Ifkz8eFR9VqSIM
CAgJDF4lJiiSET8ZFrlUUw8GvwcLumMjGMcVGV5UFAYGFAsGCiZsU1UaEz8T2V8jGgUFwQsFCark
IBjoFRYjoiYGBAMQKChAgMACDao+fMggAdmED2JGCJhIkSKETB86cLDwwNapiBEcOGjggEAAAg7y
eDCSYYIDIRAsENOU6kCAApmMYMhQYQJpBSEWKGAQRW5EiAUAEIjYwCFZBQovh0So0MGEwhBSRFzC
guHC0wg/h3iY2mHEhg4KFW6AYmHChJBOMkyNogELFCRtKUCI6mTRVAsW8FroGQGuliF6I7hdXPjB
scNNIDiOINlBWMiYMwcBADs=
""")
        self.bridges_green_number[4] = image
        image = \
            tk.PhotoImage(data="""
R0lGODlhGAAYAKUuAE6LLlOTMFeaM12lN2SxO23AQXHBRnTDS3zGVYLJXITKYIjLZIzNao7ObJHP
cJ/VgqjZjqzbk7HdmrXfn7bfoLnhpLziqL7jq8bmtcfnt8rouszpvM7qwM/qwdLrxNXtyNbtytju
zdrvz9vv0OLy2ePz2+Xz3ur25O336O746vH57PL57vX78/z+/P//////////////////////////
/////////////////////////////////////////////yH5BAEKAD8ALAAAAAAYABgAAAb+wJ9w
KBSBNB3NZ0RsOo+j0wmFOpk8HmdTpBFNV6tWGHzyiLQ/EccrBY/Fq1MI5OSKSlKVasXqt/5xHx9N
F0tSIyIbGxocICB+KyUaRIpRUScPCQyaCQscLH8nHxdDFR9ShwoJq6sMImBiIxtFFyMqqBsICCAp
er6wIx8RPxsYIytUKBEHB5sMEbYnenEawxcbJ8hUDQbdBd0Il9KiFT8V2C3ZKAkEBxEXDgQFDbdS
JBrlFxgn6VSylicOECBQb4SsCcQqjGiBQs+DBiDwjEgggMAJgyI+YICQxpSYiwIEHDhBAsQAkSdE
zNlQ4YGQCBjCkDiBIECAdgJsYsioYcNuhQoWhGCwoCEdiREHACgFIMACTwwXLLgcIuFCiBUGT2yI
AMECog8aMkSVEHSIiKohRBlc+8GDBgwVKkiYSqmqhhFY2mrYC9dCBLpNQESoigEDX6hyJwDW4ldC
3McSJEAYhqYJVwkUuD4oW7mz5yAAOw==
""")
        self.bridges_green_number[5] = image
        image = \
            tk.PhotoImage(data="""
R0lGODlhGAAYAKUrAE2KLlSWMVeaM1uiNl+pOGCrOGa1PGy/QHTDS3vGVHzGVYbKYYzNapDPb5jS
eZ7UgaHWhajZjq3blLHdmrXfn7nhpLziqL7jq8PkscbmtcjnuMzpvM7qwM/qwdLrxNbtytjuzdrv
z9vv0N7x1OLy2eXz3un14u336PL57vX78/z+/P//////////////////////////////////////
/////////////////////////////////////////////yH5BAEKAD8ALAAAAAAYABgAAAb+wJ9w
KBx9NB2NR0RsOjUfUelEPZU8HmdztBmRTihUSiVGXZnaT9dEDafGY9QJlN12RaaSXAxXva8hTRge
JiQmeSMYEhYdYioqVhpEGxtSeSYYC5qaEW6QIBdDGB8lpSYaCwoMFg8KChhhZCKSPyMVIlRTrQuH
Jg0IEimOJBoTPxsZJHJUCAgNEQwNEiFmYCklHRI/GBl6ciIH4eIHCiPLZh4WPxbdkCchBvELEw3x
DqVmpxXb7WAiBAUUoDikgICBEyakiNigbkOFEmRKERiwoETCBQMIoBgxAkuGCLUsaCADJkEAARtM
fCAQAEEJIx8yVAD5Q0IGMaU0CAgQwMB5zgAWsMTMMCHUjwwiVRQqUWEAgKcBJBhBhsECBCISLoRI
IUJKiQwSMJAY0QFZhQoT1A0ZYdPDiSVdRYTAoiHDBQsSrjbZUFSDiA5YPHDQULcCBQk0nXyQUDRD
BsKOL6BlpYUI3glnM0+YEEFb5SaINyN+oPaz6dNBAAA7
""")
        self.bridges_green_number[6] = image
        image = \
            tk.PhotoImage(data="""
R0lGODlhGAAYAKUoAE6LLlicM16oOGSxO2m7PnHBRnjET4HIW4TKYIzNapLQcZ/VgqjZjq3blLHd
mrXfn7nhpL7jq8bmtcjnuMrouszpvM7qwM/qwdLrxNbtytjuzdrvz9vv0OLy2ePz2+Xz3un14ur2
5Ov25e336PH57PL57vX78/z+/P//////////////////////////////////////////////////
/////////////////////////////////////////////yH5BAEKAD8ALAAAAAAYABgAAAb+wJ9w
KNxkKBRMZkNsOi0WTihEmoYwGGdzY9mERCTSSRwOXZjaDYUD+obJJ1OVk3GqNx5rKWwan8ZXaEMT
GB6GISUjJXticWMcFEQVayEgIBAICZkJmgoifyEcEUMQGFNtDAiqqgeqG2SQRRFSVmoWFRUKBwcN
fCceFA4/FRIcJCWnIGwVBgYKJSLQVcE/ERVUVciWHAcFBpZTYCEWED8Q12GKlSANBAQQlh9WHRTl
ERIhJ1Qj6wUDBSEMbQOhod6wWSeQqYsgQEADEB4geuBgRAKDHxtKjVEXQkGAABu2edhQEcICIQ0k
lDhBKwQBAAQqcRiJAYkECOV+3KSgr81fhwAADiijWLNCBJNEHETQQIIDmwUIKCjbUBSng5xFlGq4
4tQphoIUbkJwcLJJBaVrLmDBYMEmzgZlnWRo8OCeBJsSjjogq4UIhAZXcVp1wEBY3yYNCjtIvADr
4cePgwAAOw==
""")
        self.bridges_green_number[7] = image
        image = \
            tk.PhotoImage(data="""
R0lGODlhGAAYAKUsAE2KLlKRMFaZMleaM1qgNWCrOGWzPGe3PWy/QHHBRnTDS3jET33HV4bKYYvN
aJ/VgqHWhajZjq3blLHdmrXfn7nhpL3iqb7jq8bmtcjnuMrouszpvM7qwM/qwdLrxNbtytjuzdrv
z9vv0OPz2+Xz3un14ur25Ov25e336PL57vX78/z+/P//////////////////////////////////
/////////////////////////////////////////////yH5BAEKAD8ALAAAAAAYABgAAAb+wJ9w
KAx9NJpPR0RsOjsakcmUMqFIHo+zGdKEpqmUaiVOYZnbo6hEDavG4xQq6wxtQiV2O7WCk010RBgf
IiMjeRoVEhcifX0pIxpEG1F5eREODA4NDhdhKysnIhdDFR5TeRUMDA8VmQ0lnykikj8hjFVTDwsM
KSUbCwuen7QTPxsYIiknUxEKCRIbDwkKHcthgBI/FxttVCILCAkJBwkOzCcnVYk/Fd1hKCcSB/T1
CB8jUyaRFdsYJitQGSiwIESKCwcK9CqxRsSGfg8bhflAgICEPCIYEDBwYoQIER4wRLBliowoAgIW
rPlQgECCEiGyJIIgRAIGPlIcBAhA4IBygJ0WjHTYYKFCvx8YKmgIWGKETgBQB0wAqSHDhQojh0y4
AGKWlBBGMZSQmaHoBGNDQmwFAejjxyweNGC4OuGBkw1bo3SAywFJUgoS7KaRQOECBgx+51aYUEHw
FiGKGBs1ejaCtsdNJEQ4q7kV5s+ghQQBADs=
""")
        self.bridges_green_number[8] = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AG62A262BXC2BXG4BnG4CXO5DXS5DXW6EXm7Fnq8GHy9Gn2+Hn6+IH/AIoC+
IoC/JYDAIoLAJoPAKIfDL4jDMIvFNYzFOZLIQZTJRaPQYKTRYabSZajTZ63WcbHXeLHYd7HYeLPZ
fLTZfd3uxPL56fz9+/7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9G9FBg8GDCBMqPNhhhMB/HSRInEixosWLHQZe3MjR4ggOHUNyLCiyZEWDJlNKQHlRAQOK
LmG+vMiy4gAMGAy8NHABwwEFEm76nEmx5kQDJpKaUABAqQkJTZVKcHBSQ0UFGJyCdPqBgVMQQIta
hZlVqVWnHiR8DTvRqAQISJUydQqVLlWxFiEcMBhzLwcHQP0CtuhW4gALFnQGpZAY6ADGiqtajJt0
rtSoSadKJqtVrdKuazdPxOr0rNK0ofFWpLwU81PXmlVT1KuBg4LAtQcbyM227diKABg4ACAxeFCq
A14mJ/z7qNMEA0goZRB9OvOKDMom1eCAq1elYEVLTCStdCt4z0nDy3Y+HbZrCkQlFgYMAoQEoAk+
gKCAXz//6xcloMBdEghIlIE0NadSR4UtSFNEDobUUIQhOQQhhRZlJBBBC3XoYUMCBQQAOw==
""")
        self.start_shikaku = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AG62A262BXC2BXG4B3G4CXO5DXS5DXa6Enm7Fnq8GHy9Gn2+Hn6+IIC/IoC/
JYDAI4LAJoPAKIbCLYjDMInEMYzFOZLIQpTJRaTRYabRZajTZ6nTa63WcbHXebHYd7HYeLPZfLTZ
fd3uxPL56fz9+/7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9E8EBg8GDCBMqPMhBhMB/HCJInEixosWLHAZe3MjRoggNHUNyLCiyZEWDJlNGQHlRAQOV
FFlWHHDhgoEGMFdimPgygoESQEsoyClTooILQUtoGKqyaISjSZfCdBphQFKmTXdWZJDAoEujPUVS
rUqhgoGXBixcOBCWI9WfQRUASBoBZ0enUIOCTNoB60a8SIPu5Ov34turc4PWDUmVK4alQw88boC1
bUytFQEwaABAouaqOAdEoHDW4uGgCQaMCMpANWvTmCUyCAwUQ4OkHhgQPhn7KW2lEfgGD9qXt0W4
QBkkBhpheQkKlqlS7tDhaYQEHjpQGIpde2GdGxMoJLB7/atE8ZYljs1pnP3diO5HiojP0SF8+hQz
CiS4sL//hgIFBAA7
""")
        self.start_suguru = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AGu0AG21AW+2BXC3BnC4B3G4CHK4DHS5DXa6EXe7FHi6E3m8FXq8GXy+G329
HX+/IIC/IoHAI4LAJobCLYrEM4nENI3GOpHIQZTKRpnLTpzNVJ/OWqTRYanTaa3Wb63WcbHXd7HX
ebbaf7fagbnbhrrciLzdir3ejcPhmcjjoM7mqtLostXpttbquNrsv9rrwNztwt3uxN/vyeHwyubx
1PL46PT57vb68fj89v7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9i/GBg8GDCBMqPPghhsB/HyZImEixosWLFz8MxMix40WCHkN2LChy4oIFECRI9GgwpIMD
CE6ckDAAQcqOLTG+PMCBRo6fOWyccDAAJcacFRcM0PACqFOgNkQ4IHARqUkUT7NmXUnRqoQFKbSK
zbHCgUWvCAgM8GBjbFAPA2qe5VARQQwOcQdUWJF1RYUBajXIWFDR6gCgJxAAPiDiJ4gBBwgcIAGU
cFe6FA87fWEBMgHJevk6tTzRsFYcGRw4uNA2K2kJpsUe0Kz1dezatF0Xxjwx91OlY23zphnc9+jd
FY1XVv5TePLiwZFnhi4WgfSJCFSIBa71xYHrE79rSf9tfMWE7+AnPkj7YXTuEQcOPKg63CLRCzNy
KM5BI4Ncjl5d9NIAvR1gFkv1lSQSBx8o6KAEDT2ooEMNSuiRRgIRtNCGHDYkUEAAOw==
""")
        self.start_hidato = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhNgA2AMZFAGaxAmizAWq0AG21Am61BHC2BXG3CHC4B3G4CHO4DHS5DXa6EHe6FHi7Enm6
Fnm8Fnu7GXq8GHy8Gn29HH69IIC+IoC+JYDAIoLAJoPAKYbCLYjDMYnEMozGOY7FPaPRYKTRYqXR
ZanTaavVba/XdLLYebPZfbTZfrXZgLnbhrnchrzcib3djsDfj8Hgk8PglsTimc/nrdDnrtHosNfq
u9nrvN7uxuDuyeby0ujz1ev13ez13+/24+/35PH46fT57Pb68Pr89/v8+P3++/7+/v//////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////yH5
BAEKAH8ALAAAAAA2ADYAAAf+gH+CgywnhoeIiYqLjIgsg5CCHBwWGBiVl5aZmhadl5WenaCgn5mh
nRyRmqusraKlp6OfobChgxyzorq7vL2+v6+pf7jAxcbHnsKjyMzNon8sls7TzIXSutLZm9e1Gqez
psuvGIbiree1pQYDCrHhubqG157o9asLRPkK9py78vDaMNGjQCGCt1H48hVYhoFCLWzkTphD54kg
ERDtRinIR2ThJ4IdKMTyd2IepnoWOnDEeI9jgVUFfBBpuIrXv10BuWHgeHFfp40KQcXkKBKeqJvj
7FEAmg9jp4QdKw3NdyKCOHrlcvGztJQniQgYItiYUWPfAJlUEbCyWRLgJoH+2brmg2GVwoABCyxE
4HnC59WjbSHaA9U1BQKCFm6cWBjhRFpZvCwhpbdV0wKwFucOwKAgRQu159ia3CqrYWaOMDZHsGrK
JFaJWiuvOs0ztaUICHIjYIfhYLzAEOG+3USbJxEYChoTEcI8n4Fek0+i5FrceE/HxheKjl25uvW+
KaxvhpgV5/Btpq1bv1GAgoYNGuK/F7ldcD2CFNQbtzFAl0iCRnUS3VbeGXfDZmHtE9o45QVHCnX5
5YPWev1hgAALPlQ40m+jcYMJfhydAMAANOzXn14s5IPDeH8JCBxlrZx2gloWMEXEgZpEIANHK67F
IGzmnSKjRxQUwNGBsgz+AANHOWgIHZBJcRJBhESggIAnU/F3ijdKctSDX/VFSV2IoGEwFY7odHmR
Q65ZEN1JID52yZlOPjRADCK0Y5RkUI4TJxF9ZZLliemIosEC9AXo5otwUjmjJnTKtiCHAMl4pVRo
IVkoQ5CZ12BFVBr2yaDflNrahoC5RsEIHAEgVKYsbgpOp2HSA1VBdsEq6WAkdXgBUECEhJaWnW5K
CqoudtiQjfmguStKP7Z5CQUI8KRpqcW+Qmuve1aylBBE8PcOtg+N66lE5rGigAYKPssPW9TEe8yb
8tYrGQv15tvLI/RgC9mstD50LKcWCNJvwLRoi7A5C0vi7sOVCfOHQAsih5OtvwPPGskk/sICcLkj
mWuBxJHYUEgjKKfcCAs22ABJIAA7
""")
        self.big_hint = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AGq0AG22AW+2BXC2BXG2CHG4B3G4CXO5DHS5DXa6EHi7E3i7FXm8Fnq8GHy9
Gn29HX6+IIC/IYG/J4DAI4LAJoLAKIrENIzFN4/HPZDGPpDIPpLJQZXKRpfKSpnLT5rMUJ3OVp/P
WKHQWqPRX6TRYabSZajSZ6jTaarUa6rUbK3VcbHXerTZfLbagbjbg7nbhbrdib3djMLglMThmMfi
nsrjpMvlpMzmp83mqNPotNTottjsvtrswd3txN7vyOPwzeTy0eXy1Onz2ur02+v13e313+334vH4
5/X58Pj78fj79Pr8+P3++/7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/966GChMGDCBMeNGGCREMSKnwI/KeiAoWLGC9W2MjRYsaPF1UM9Aiyo0mQIH1UzGiyJUeU
GQuSrNDAgM0GDRxEcEkSpEGSBmIYIfIjhwwSEAQkgNAS5s+LDVo0mUqVqo0LAhyc9EnCY4MeVcNO
PYKhwNaMTyk4CCG2bQ8BTDdyJdmAgw0bOYK0pepAq1y0XTM6wJnAQIEGKIi0reC3Z1qMLRsMqKA3
rIGOGB9XMDBAwAADOjc6KDAi7BEBLy+mjdBA8dQeLhwY2FkhwYWwKhqkTttgh9vBGxt4CDv579Pa
rtuOuFyhAI6qK3R7TOtg+N4mKJgXqLoE9fSuHnVCzaTR9oJWA+SpVqBN4SfJCIMTCAAhFvXOqiy0
qgbPs2bYEFptR9UOBmTGX3ADNGAWTbdR1cNlCeRAFRLMtXdgUFMt4ZcAP1SFWgIxeCiXe4yhQFyJ
VTHlAAlVMVcBiQYkNxUHEEDQ4Ix90UdVXC/yZ0BlVGkQWlUeOACBjlPR1iNHDiDZRHcbDVCVVvBV
RQBHJNZWWhMPMqnjCNIh9qSQWB7IGGcJmCQbaB2t2diLFfEk55wbqdADnXi61ANFefZZgUgCEaTQ
oIQeZKdAAQEAOw==
""")
        self.start_fillomino = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AGu1AGy1AW+2BHC3BnG3CHC4B3G4CHO4DHS5DXa6EHm7FXm8Fnq8GHy9G329
HX6+IIC/IYDAIoLAJoTAKojDMonEMorENY3FOo/GPZHIQZXJR5fKSpjLTZvNUZ7OVaDOWaHQXKPQ
YKTRYajTaKrVba3Wca/XdrHYd7LYeLTYfbzdi8binMnjoczlqNLosNXquNnrvtntwN3uxN/vyOHw
y+Xx0ujy1+n02er03O324e/35PL56vP47fb68fn79fr89/r9+P7+/gAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9k1FChMGDCBMqPFhChsB/JSZImEhRgkSLEzJetFixYomBFDVqxNhxZMeKBE+GVHmyQIGO
BSuK3MhyooMgQRxUNFiz50QIF3BmgHCRp8yMPw8oPdARgoMKOCs4gDDRqEqnO3DeYEDxwASgOC8Q
ZWp1pYQCONP6CHA2rdu0B8pWdEDibZAQDtDaTVtALsUAPuzmeMkgQwUOODlU0MDVrwQHGtLmcCtV
AgQGUINUYEBVguMDM9KSYJFWBlPLQYNc2CnipFO3BzLj5DyRwWzWJxmsKH0gQI+0K7hOLHCaot8A
bjc4cFDCLduacpk7H+42hXCVcpGnVSH8wIvpLMs6o0AMd7kDBhPcdnBA03hrigVqpLVxoYP9DhV+
48wRoH3V95ZJsNeAmrF3klUJtEDgXjAUhxt1bvkg4YQSvnXdgwyk4BYDARxA3If9ubVCAge+p51W
L6nkm1sp4ubABm59oJNKDojglggzuvdYCOCxdGIQJ+T430Te4aSBkCdBhtMMDlZVAkUJeIgkjQQo
pVJDPmWpkkNPaunlRwIRtNCYZDYkUEAAOw==
""")
        self.scale = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AF+vAGKwAGeyAGizAGq1AG21AW+3BHC3BnC4B3G4CXO4DXS5DXa6EXi6FXm8
Fnq7GHq8GHy9G32+HX+/IIC/IoDAI4LAJoTBKobCLonEMorENY3FOY7GPZLHQ5jLS5vMUJzMUp/P
V6HPW6LQX6TQX6PQYKTRYabSZKjTZ6nTa6vVbq3Wca/WdbDYdrPZerPZfLTZfrbZgbnchbndiL3d
jL7ekMDfk8PhmMXhmcfinsfioMzlptTptdXrudjsvdztw93txODvy+Xy0ubz1ejz2Ov12+r03O72
4e/25PL35/D45fP56vP57PX57vj69Pr89vz8+v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9A7LChMGDCBMqPLgCiMB/Ky5YmEixosWLEiuuGHixo8eJEShYJPixJEUGIDYo0GjCgkQK
EyjIlDlxpk2QMKJEAWKAokGQFzJOvBAhgtCKFBj00BnFBgOJPydsYEo1Rk6qTBlEEEG1p4WfFiIY
wGpAawAmVEUYmGBhLFMLEy6AtcBgB9ULbCNwoCrDAUgUTEV+bTkxLl+/bakyOUBRAVOvc9s+YbrY
pQMdVENOdOtDAVTCEx3MuCsyQoaqfifsjTIiwsTIMqnOSH2a6ZGVDG7oZPwa9Ga0jy0osEvVr9sg
K3tbdCDjbmKsMBTUVoF4sEUKEajeUOABa5QiAXDosUyu3CKCI1QB8NA5hGoA9uStL7+qM3uUISBk
61zh2qfvk1ShF0UMbmHFgEWRNVaEd2IJgVUR8cm3XAtYKXFABCpAV115FzlGFQx+echUfxUl2Fh7
I06kABBMKYHARSaGlqFOR7wY1ghM9QXjfxWJCCJFBWqGII8n6rThilE8wduQH1GQgQkgkDiUCRuw
tWNJ2Bl1UQRWwriCSWB21FCYZFLk0JdlgrmRQAQt5OabDQkUEAA7
""")
        self.start_wordwheel = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AGq0AG21AW62BHC3BXC4B3G4CHK4DHS5Dna6EXi7E3i7FHm8Fnu8Gny9G36+
Hn+/IIC/I4DAI4LAJoXBKojDMorEM4vENY/GPZHHQZHIQZLIRJTJRZXJSJjLTJzNUp3OVKLQXqTR
YabSZarTa6nUaK3WcbLYe7PZfLTYfbfagrjchbzdjb/fksLfk8HflMTim8binMnlo8rkpc7lqdHn
sdLosdXqttzuw93uxN/vyODvx+DuyeHvzOHxzePw0OXy0+nz2ez24PH35/H45/H46vT67vj89P39
+//+/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9w1EihIiDB0MoXMiw4cISOAT+KzFBgsWLGDNq1Fhi4MaMEyqKlBDyowSCGis6UKDAwIAA
MAkMMGBAwQOSHENoVBAAwwocQ5AIHToExwoMARRUxKgw44AUQ6NKjZoiwFKLTS8a4DG1q9QdBq5m
tWjAq9mhBpjqvPjAwlmvFhyozegyBI63SHCECJB27kUFPALIDOBgQ4gTKlScELHBgWADAXAo8Gtx
gNAYGwLMJGCAc+fOASysEEqAsgQCUofYcHGiRIkTLmgAkWr14lgJCmbgnTpjsu21FwOc2D30RICM
tx9kDjDirlkcI2A2No26quakG0CMGAFiA8/BI5D0ycUKXIJloTM8QH5JQDB7Di+G1iaPsexUHzZi
xLCxw8jU8RIkNwFxUU0g128ZtWQDcTTUhBxwExgwBEwKnMBVVz6cwFMAQfhGX3BC7cUXYRd00MEF
jg3wkgdCzRdgeecJ9UJmLhFg40sXsBDVAKYpEF9qPNhggw5BSfWChy9mFEAMBCIRw3GmkXVBkWcN
cQGAH2bkmAUvCDGVEC9YQNhGIZRg0gMtBdCWBQ/wZZNJEJmU0QM3yXlRRGbaqSdGHQlEkEOABvpQ
RP8EBAA7
""")
        self.start_wordladder = image
        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AFqsAFytAGe0AGu1AG21Am62BHC2BnG4B3K4CXS5DXa6EH29H36+IIC/IoLA
JpPIQprMUaTRYa3Wcd3uxOPwz+724/v9+f7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9myAhgsGDCBMqPChhgsB/EhxInEixosWLEgZe3MjRIsGOIDkWDEmyosGJCRSoXMlSZQKS
Jx0kuECzpk2bL0HGLHCzZ80CIXfSLEC0aFEBQ4NGkMjzAoQFFhk8SKpzqYOmPm8CrSoxQYWsNivk
7BhTJtEANAMYJTqWrFWKTbfKbElXwdiyE+MyaIAVLM2ceJnSNCDRgF+bWwNfzbrWKNILid/mzfo0
6lTIEhU3DWDAANrDVDVT9QpabGbJgjF3bdz4LurFqufWZenaol6+oP+etj24cG7Von2yJvo4ssUE
FHxWrig19GuZCTp7/m0cJOnDph1EiBgywXCjYxuWEhzvwCF38h0zCiS4sL37hgIDAgA7
""")
        self.start_nurikabe = image
        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AG21AG63BHG4CHO5DHW5D3q8GH6+HoC/IYLAJobDLo7GO5DHPpbKSJjLTKTR
YabSZajTZ6jTaa3Vbq3VcbHXebPZesrkpN3uxOLwzejz2Oj02fP67P///wAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9uzDBgcGDCBMqPDjhgsB/ExIgmEixosWLFycMxHjxgAEDBzhaJCgSgYEBARIwYJAgwAAD
JQtalGgygIQMHHLqzDAhAEyMBjsGcKCzqFEHAQ7QpBi04oEAGIxK1YkhqcWmFANsmMqVwwarTB1U
hNq1a9WKWA0QLdtVQoGwWdmyDQDX5AS5ZSf8bDoAJ1cLDRpY6JphwMSmAboqGDCAwAAFXekiCKr0
L2MKFBgPnpogZFADDLg2IFAhZwUCDbgygPk59NQGA0pzqDAg9dTVk8VWnmrhcuYBm6V2zj0xMdfF
jR9HPiwWQd+ugAUTNkzcLt6uepnHvT5VcnUEBSBwUDfqtm7xqOM5nDVffCv3r0rZn79eNSTa5haH
ykUKFL9FAzb5VVQGEvjEkQMTlHRSSiu19FJMF5REkUcgSTiRQwlaqOFEGglE0EIghtiQQAEBADs=
""")
        self.start_othello = image
        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AFusAGayAGu0AG22AW+2BHC2BnG4BnK4CnO4DHW6D3W6EHi7FHm8Fnu9GXu9
HHy9Gn2+HYC/IoHAI4LAJovENpLJQpTJRZnMTqLQX6TRYafSaKnTaqnUaKrUbK3WcbPZerTZfL7e
jsbhm8nkoMvkpdXruN3txN/vyeXy0uby1Ov03e313+314O/25PD46P///wAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9M+EhQwYOCBMqXMgwg4cTAv95mECxosWLGDN+GJixo0eMJyZ+HNmxIMmTFw1ihMAAAsqM
Ki0qsDDCw4CXKTNYhJDhhU8UNzsqGIDAZU6LCHwqBZoRgQmfGRgcrVhA6dKgFRWMsDohgsWYFCGA
sPoT6wQEK6x2MEoRLMUBIsi+YEoRQQu1bCe4fRuXLF20eL/qxAhXLlPASjtIrbi3YmG/Aw6kTZy3
seO+VlEAmOxzreCPj62WQKF2cdvBHkPL7VwZdWrMqz0zdr2TJcsAIVZ3Nq2XNsUCFzpwEM7BAmey
sk9jNOBCt+7kvS9CwOD8Oe+9ED5Uj9165Xa50BtDOKBwokWLFefTo1/fIkXe6CsVIJhPv759jJZx
whSpf6QHE/2RZIJEAXrkQUQEGaTgggw2uOB/AgUEADs=
""")
        self.start_arrowsudoku = image
        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AHO4DHW6DnW5EHy9G329HYC/IoDAI4LAJoTAKo7GO5TIRZfKS5jKS5nMT5rM
UKTRYajUaa3WcbjbhMLfldvtwN3uxP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9qxDhwQMIBxMiXJjQoEOHESoI/BcBwYGLGDNq3LgxwkCOIENuJLjRIoKTKE8eUMmy4wON
BQbInEkz5gCbMQtYxGgw44ADDRQ0WEC0qFGjDQ4M2Hmg58UCByxInUq1atUDUC86RTCggdWvXxss
1fryYlewaKeK5VlWqde0aBf8JHtx5wQJePPq3Zt3AtOmbc/CBetgLOC6giEEAABBqmLGjhc3tiB3
p1O3UhXIVJB5c+cBnCkb3io4QYAACaSaRq36dGrRlgO/pRAholSCti3griC1Mt2Vggdb9X3Y7Fvh
VYmTfvt4cvPIkGH/xmxBM+jPoa2HVl6W69vVr8G3U2YtvTj13bdr89atvvfowA6QWxUb26f8qnOn
YxXwV2RdAVnp91QBBBZo4IEEbnSZfwxmtGCDDT4QAYQUHhBRhRBKNCGGInkkEEEPhSjiiAZFJFBA
ADs=
""")
        self.start_jigsawsudoku = image
        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AG+3BHC4B3S5DHi7FHm8Fnq8GXy9G32+HX+/IIC/IYLAJoPAKITBKYbCLYrE
M4zFNozFOJDHPpHIQJXJSJnMTp3OVp/OWKLPXqHQWqTRYabRZafSaKnUaK3VcbHYd7DYeLXZfbnc
hbvdiMLglt3uxP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9I9Ehg8GDCBMqPNiBhMB/HRZInEixosWLHQZe3MjRIsGOIDkWDEmyosGSKBecTHmgZceV
JQk4KJFBQIONMCkeuCizhM+aNy3mlHggAoGKPX3+tCk0Q8UDMyUclZhU6dKmTyX4lLqgqtWfUycO
PaB1K4CZX7+GlTi27M+0XxfspDiWAty7Cwpg1Wn3bly9eycSyODXal6cTnUSLlyiK8exHBg7fpxY
cIfCFgKAHOuBMVfKSEEwLiFhAGiKBESMJj03MNURq0s4SHBxrAURHQpesEBhggQIDho0INDaZOWJ
B4gTb8kcAYIEtE+nDDl0Os6I1kE2zA7SIXbuFjMKCSS4sLz5hgIDAgA7
""")
        self.start_ajs = image
        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AFqsAGKxAGWyAGm0AG21Am+2BG+4BnC2BXG3CnC4B3K4CXO4DHS5DXW6EHi7
FHm8FoC/IoLAJoTAKaTRYa3WcbDXdrPYerTZe7nbhLvch7rcib7djb7ekMPhmMXhmMfincrjo8rk
o8zlps7mq8/nrNHnr9Pps9Xptdfqutjsvtztw93uxOPwzuPw0Oz03e314vL36PH45/P46/P47Pb5
8Pf79Pn78/r8+Pz9+/7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9W0FhgsGDCBMqPEhhhcB/FCREmEixosWLFykMxMix40WCHkN2LCiypEWDJlNGQBkSgsuX
Ill2bCCRooQGIWVibCAjh8+fOQ7UxKjz4oGfFSrA8GnAY1GLR18MaNBgQIgcTTs+rXiUBtUGBlhg
dTqh482fJkr8zMpxK8UGJID6ZIFTa1mLL12CBeATgIEGeSFcLErTqE+hFm+evDuRp9zHkINW1Hk0
smWmkxlHMOBTgYEDoA3wzeH38wHRTCHUlFnV54OsVAf4nFq3dY4BCCiybEBDLtUXkEE/VjCRJecc
ITS4Pp5Dg3Kmxzs8z2o8B4oBBirkeJ0jBu0BJrByYg6BXTn1u5xXYMewnTONv1VXiM9BwoCBDmNX
oveJ4sPynyH4B51PJVyV324tAOVVAyk89sJvQD1YHGNg2fdXYxZaWFuGdemnkkkTUPBhSQ2NKJJD
IprIkUYCEbTQizA2JFBAADs=
""")
        self.start_hitori = image
        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AGmzAGq0AG21Am62BHC3BnC4BnG4CXO5DHW5Dna6EXe6FHi7FXm8Fnq7GXu9
GXy9Gn2+HX+/IIC/IoHAI4LAJobCLYjDMYzFN47HPZLIQpTJRpvNUJ/OV6HQXaTRYavVba3Vca7V
dLXaf7bagLjbg7nbhrrdiMPhlsXhm8nlo8vlpszlp83lqNLps9bpuNfrvNnsvdrswNztw93uxOLw
z+Tw0efy1+nz2uv03fD35vP56vX57/b78vr89/z9+f7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9mwHCg8GDCBMqPBhihsB/ICpQmEixosWLF0MMxMix40WCHkN2LCiypEWDIR8YeGByIsqL
EikQ4PCDhoKWLytKfDCgxY8fOAzEFJmzogELP3/WMDBR4lCMRSlEGFAi6U8aAxQoMMCAwYOnFYsy
UJDDalIUKtKqKIFhwNeLOR/QNEvXrAahJz1QLFC3r1UTTMPqnRgBg9/DHxgIrshzRt0PI0aIGOHY
6k2KUSkM6GC2xoCuDhwUQHpWscvBFseW/WkjMEUDIJLqwEshM8UBJn4GBavAKgHMqDEe/eHicsUB
voGHjGDAOMUHGqwWUN6SME8dSWEYt13hgYIH4MODU4/AoYdVDG9rB6cYgfThpDNcq8f4wMP7pDwG
5KVv/74L/fthFMFhOrBQgXzUCUfAggwy2FwEHNlWHVQgTFgSCDNYKJJDFWrIEQgPEbTQiCRiKFBA
ADs=
""")
        self.start_numberlink = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AGeyAGmzAGq0AG22AW+2BXG3CXG4CHK4DHS5Dna6EHe7FHm8Fnq8GHy9Gn2+
HX+/IYC/IoDAI4LAJobCLojCL4jDMYnENI3FN5HIQZPJRpTJRZ7OVqDPW6DQWqHQXaTRYaTSZKjS
aKjUaa3WcbXZfrbbgbnchr3di73ejcHfksLglsbinMrjpMzlqNDordLostTptdbquNjqu9jrvdrt
wd3uxODvy+Lwzuby1e/24vL36PH56fT57fb68fj79fn89Pv9+P7+/gAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9qzHiwwcRBxMaXMiwocERNQT+GyGhosWLEiZk3FhRo0aMIwZitOhxpMmNHgmevFiSI0uQ
H1a27FixgUmPHWKufFnxgIkGEEheNLhzpoQDKYLwIIDRI9GdGB9UCEL1xAGTOaFiJEC1awWbNCUg
HLnggNmtNbp2Zcoy68UFJn78uHG1Zge1XWOwtfjU4gG1E4I+SIBX7YYFJPv2/OE1KIEchdUm6BhB
sQQDjKlWXHAistocBiREmGD5QOYgFR789Qx4dGWdFjF3tdhAg4YKSanikIABw4QGEUa79Xs6dcUH
g0N0hXHgQfCMoy3L1oyxgXKqMCZ/FD1h+GKvDy5ans+LmKbGsRenBxk5nmqMutsleD+6o6sGsBUT
mOjqorxQ9BYlMMNye0FAAA9dkVBeS5Y1cFdXIxCQQAIEtKBWeCYBaBFXavGwAgt4zQAfShJYJkED
U7FG1WQnaWjRAhqo+AB+I5lYUwM2FNaCATTWCNtIEBywgAgnmMDBASzu9AFFUDWwwAI9rgSRVlRi
FBGTVWoVkkAEOeTllwtBJFBAADs=
""")
        self.start_masyu = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAKUmAG62A262BXC2BXG4B3G4CXO5DXS5DXa6Enm7Fnq8GHy9Gn2+Hn6+IIC/IoC/
JYDAI4LAJoPAKIbCLYjDMInEMYzFOZLIQpTJRaTRYabRZajTZ6nTa63WcbHXebHYd7HYeLPZfLTZ
fd3uxPL56fz9+/7+/v//////////////////////////////////////////////////////////
/////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5
BAEKAD8ALAAAAAAgACAAAAb+wN9PxMEYj8ik8qgRCX+ciHRKrVqvnOF1y7USu2BuMdxlXI3k9BR9
VZinCgU1vmVTG4bLxRBh5Pd9A3p8VnZwJYglAAmJJQOMiQOFGFUJHY0MGI0UmokXclSGEQqXiQ0a
jRWdiBdva5R3EY0ACo0GtYmEobBzDBoYCaMKGBpuDAoaxQ2TVwARDZIRztJwoMyViSMAB7Zhogke
mKslFtZ1vFKkjRGonq7nVQwUjQMNjQfe6OkRHR4MDXI6dOiTr1kgKQAVLCuIDdGIaGoifAuXKOKr
KuoSUXhHRpS8bhZFjaIgkAHHjvqkHDMXUaTFMylfFooiswsHETW7OKGZs0oKFiFElggdelNIEAA7
""")
        self.start_ripple = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AHK4CnK4DHS5C3S6DH+/IIHAI4PBJ6TRYa3Wcd3uxP///wAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAjGAP/9S4DggMGDCBMqPIgggcB/CAxInEixosWLCAZe3MjRIsGOIDkWDEmyosGSAACUPAmSAAAF
CgAQCMmSo0uYMGWCrHnxJs6cMznyrOjzJ1ChBzYWNXr04lCJS5k2NZmU6EupTHVStYoVq9aJQ692
laqSIk+xY8marSoRbVqjZSWGfZt1K8Woab/KZTsRr9ega3u6JQs4sOCxeg0fJoy0I97Edm2ihRxZ
8tTGJFOu5FuSZsTOJRuCLunw82iRDwkuXM26ocCAADs=
""")
        self.start_tetrofit = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AGezAGu0AG22AG+3BHC2BXK4CXS5DXa6EHi7FHq8GH2+HX6+IIC/IoHAI4LA
JoXCKofCMInEM4rENY3FOZDHP5HIQJPJRJTJRZzNUp3NVKLPXaHQXaTRYajTaK3WcbDXdrHYeMDf
ktDor9Pptdbqt9jru93uxODvy+HvzOLwzez23u724fr89vr9+f///wAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9M+GBg8GDCDl02NBBocOGDTl8MCHwn4cHDjJq3LgRI8ePHwZ+HMkRo0kHJzESJMkyJcqX
JguynEnTIM2bI22S9IiTo86SDhLw5MhgAcufGjFG6BBg5IMIExgM1YhUY4IKLlAcQACzwAoXLjYI
/VgV5QKsYD8EGFsgBdgMY31yGHkVrF0IBRy0fRt3Y1kHZ+3aJVEgAAq+Ux2UfcAAreC3JBCTnfux
7uPLcBP/DXz5cebJHxk77ixZLt3RpD+b/sj5socSpf1S7tj4sooEhmNTnb3Rst0NTfe6UC07dGsR
BBKgFE58N90LLlhEyKvRK1gNfZ1/ZDAhxNqhDCJUMKhgNCfvjQyUj0w/82/Po+fft48vnyQHD/Vx
ejCR/yZF/P2R5EFFBCVk4IEG7idQQAA7
""")
        self.start_gol = image
        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AHa6EXm8Fnu9Gn2+Hn+/IIC/IoDAI4LAJoTAKYbDLYfCMYrEM47GO5HIQJPJ
RJbKSprMT5vMUaTRYafSaKvUbq3VcbfchLvdi7/ekMLgl83lqNHor9XpttrtwN3uxP///wAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/981BBgsGDCBMqPFjBg8B/FRIcmEixosWKCDIeQECxwsCLIENS5JgxI0GRKEeSrFgwpcuN
G0safIlyJcWZNEWSlCkhZ82KOC8WCEA0QAGKRY1O3JkxaMUCDDJcuJAhwdEEGCxYwGB1KdCeFwVU
+ED2gwMCAiKU/fCAgMqmYC0KmLDWgQACD+oK8HozbsW5evHqlRgTLkjAZe0KTnwUZt/DdBPfzSv5
LQKnFBGTVUx5swDCXyEH7mz280XMEzWXXuwZJOoDqjkPPu03c2TPrEuDfhz29mrSZ13XTk0hMITZ
Fl8TcMBBgwYOEgss8LBhQwcFIV8fIACgOwCKBbx/JM8+3Cd58y+1ow+9HqWECu1RNowv0iF8+hY9
CiS4sL//hgIFBAA7
""")
        self.pause_gol = image
        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AHy9G3y+HILAJoPAKITBKZrNUJ7PV5/OWKPRYKTRYanUaa3Wcd3uxP///wAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAjyAP/9Y6AgAYKDCBMqXIjgwAIGAv8tGECRooCLGDNq3HhRwcCKIDmK5DiAwUSQFUeqvDigIMqU
L2PKRJBA5gABNnMOoGkTp86ZNX8KBclTJoCjSJMetVk0JgIDB6JKlRrUaVWQAAw02Mq161YDAKzG
zOq1bAOwYl8CKGDWa4GwL5tiZduW69u0KMnW/QoXpdyKa/duvRv3KmC6ewn7NUxR7160hccirquY
KOMBgQVXrvi3sVbBkFEmuOy4bmiQo20qoDm6dWsFNlMbVUo79uWhtnHjlq37J+/eOROcBJ7zIXGd
EIcfR7kgoknX0KNLH/1QYEAAOw==
""")
        self.stop_gol = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AGu1AGy1AG63BnC2BnG4CXS5DXa7Eni7E3i7FHm8Fnu9Gn6+H3+/IIHAI4LA
JorDNYvFNY3FOJTKRqPRXqPRYKTRYavVa6rVbazUbq3WcbHYebTZfbjbhLrdh8fjoMnjoN3uxODu
yeLwze724v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9A5GhgsGDCBMqPJghhMB/GRxInEixosWLGQZe3MjRIsGOEhkoSJBAAQOQDgp2TBAAwgUO
HC5ACJCgo8GNCQx4IMGzJ08PBmpevGkxgAafSHtqCDC0QtEQSaOSCMG0ItGJAaAmHTEiKlWrTicm
OOpTRIQABAgEiCACqQahEq86SIC0QoCTDPAGqIAUroOrBj74rEDAgYIAEiQEUOCAAN+eHwxMvBqg
LFMCZHlqKBygbc+qf8MygOAzAoOxSd8yiOATwsnQEhVc8HlZ6gAHlXteYAx7boeeIwgwkCBVAgMC
XXl2EEo0AQfgBBQQjypBAfKeHJiHlU3bwQDbuH3ujI4rmnRP06jdJljd+jVly40zk9iM2zNP0IAF
9yRseEBiAjU55lNkk4UlEV0+TbCYAyIxGMAEfVEkV3o9mYWWWmypJ6GBEmUVFVdegUbeU1Il9RVY
FxlVolIiFohTAjtF5QFJG8llEUsuwSQTTTZFBJJIJJmEUgYgoGRkRSBAdOSRGQlE0EJQRkmkQAEB
ADs=
""")
        self.start_binary = image
        
        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AGOxAGaxAGizAGm0AG21Am+3BXC2BnC4B3K4CnO5DHS5DXa6EHi7E3i7FHm8
FXq8GXy9Gn2+HX+/IX/AI4C/IoK/J4DAI4LAJoPCKYXBKobCLYnEMIrENY3GOZDHQJLIQpPIRJjL
S5nMTJ7OWKHQW6TRYabSZanUaq3Wca7WdbDXdrTZfrXZgL/fjsDfkMHglMnjoszlp9Lns9TotNbq
uNrswNzuwt3txOHwzOby1ufy2Onz2ur02uv13O725fD45/L46fj79Pn89fv8+P7+/gAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9u4GihAmDCE0oXMhwocGDKGwI/Iciw4WLFi1e0Hixo0eMIFUM9MiR48eTHTnaQHHSpEmU
IDdeUFHiY8aOEGCi1Fiips4NJB7oJNnxYMuLEjoQKaHgJUyLPXdekLCBCBEWApzavGj0p1UiMATI
jHmy60cICgQ8+ErkhoAJEA4oWEBhq9mOAkzgGDKELREeAloQARJjwoKXZi0a+OG3sQAdX1kUMHlX
AOPGbGkc8LvicFGfFyCUYDuDht8XAlDguGw19OeOClgLUACBLQoDoRcIUPF1htCLUS8q+HriAYSq
Vkco+CjgxlexwGtmgADiawYJSa2CaEoSQoivOaNfp4QgAvxUpRl+n1VqNUPdC8EpsCfSoS6F6VpF
f10u/qKArzJkdcF7KAnAg1VDFNBRcBcsYJpVKMymwIQUUijAC1+1oB6DFNTGlg48hChiiJCxxV9/
Fz0wGmYsahceisKR0CJmIKgH43gKrHADDjz26CNBCLy4IGgfPVDhkRMuIKRHDA7l5ElNPiklfCxN
aSUKN1hp5Q0UafkkChMR1NOYZJZpJplYChQQADs=
""")
        self.start_follow_123 = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AGmzAGi0AG21AW62BHC2BnC4B3G4CXO5DHS5DXa6EHi7FHm8Fnq8GH2+HX6+
IILAJoPCKoTCK43FOpDHPpHIPZTJRZvOUp3OVaDQWqTRYa3Wca/XdLXafrjbhLrch73ei73fjsLg
k8rkpdLnstXptdfru9fsvNjrvN3uxODuyuDwyuPwzuTx0ubz1ej01+nz2un02uz13u314fD25PH4
6fj78/n79v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9Q6Ehg8GDCBMqNIhBAwqB/zRAeECxYoQIFTNSxKixooaBHS9afHCx5EaSHR8QTElSJEeL
GF9qLJjypcyMNzMaZGmSZcucO31mdOCAp8ygPh0cSCBBQoIDDWB2RJpyAYQYN7LeiAFhAU6UGKlq
bEBBq9kbEqKiXPtAbEWlZlesMCtAakW3FBtw0FpBgIALWjWonZohJYQDLrLSqPtAAI2sLg5sLHkR
b2OtIhJMTCBCKwGWlg9o7eD1wQIQnidTtpxAK4fSCzpolZyStWvYsrMWAF04pQCtIGCH0MqYMMsD
NrKSODDxQImsNmgbT5mABHEHDX5nHZGAN8sGFbSuUiCaOCuFBhOn+y5/9kaK3d59EpjRPkbx2r19
CsBwQkaMEhfch59QeT211GA+WUYggQoumGB+DkaYgQYRVviAQxZG+BCFGQr1kUAELSTiiA4JFBAA
Ow==
""")
        self.start_targets = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AG22AW+3BHG4CXS5DXa6EXi7FXm8Fnq8GHy9G36+Hn+/IIHAI4LAJoPAKITB
KYbCLYjDLojCMo3GOpDHQKTRYa3WcbzcirzdjL/gkcLflcThmcfjoN3uxOPxzuXy1Ov13O314fD4
5/P46/7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/941CBgsGDCBMqPFiBg8B/FRpInEixosWLFQZe3MjRIsGOIDkWDEmyosGSKBucvJhAQEcB
BjaurGhgwocGCSwqIBAiQ4CLMycakDCiqIKcExUIKDpiw0+TFCommMDUKFKlVUdoiEkxaAMBILKO
SEB2qViXXaNSTOBA7NgAbiMgnei1QUy3biFwTXvxLl6mDvby7dvg7wgHc6FyJIvXLse6SeG6NZBY
8UWsf4/KVFsRs2HNFuu2NFwV9GCJDhoQcNugrVignCUKCCE2sAHXVT2gpRvb7oWsiCXeBq7AMsUA
GAAL9jvCsfHjv+VaZOsBQmWJkO0KuC5xZ3HYKUtmGA9vMiJ5kA3Pg3RoXr3FjAIJLpxPv6HAgAA7
""")
        self.start_marupeke = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AGq0AG+3BHC3BnK4CXS6Dna6Eni7E3i7FHm8Fnq8GHy+HH+/IIC/IoLAJorE
M4/HPJHIQKDPW6HQXKTRYaXRZK3WcbPZfbjbhbnchr7ejb7ekcLglcXimcnkoMvkpc7mqc7mrNXq
tt3txN/uyOHwy+Pw0OXy0ujz2Or13O724fH45vP47Pf78////wAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAj/AP/9G1FBAgUKExIqVCiB4cKGEyqMEPivQoMGDi5q3HgxY8eNHi9W+CeC40eTJ02GJIgSZUiN
LzdWmACzpc2aGxFyjHnTpk6VGxEICEDUQMuQP20iCNGiaQsPCmxmbLiT4wAVTluQGNAzKdABKbKS
MHrTK84GA1CIHcBggNsBRpHSvJk26wgAElikSKFi60eqNw2odXp3Q9YWAnLOtVmXMIAMhxNrNGsA
LtwFjZvehZxV8kWvBkKMECHCBAQAgzU/jqx444DDF1DbXd25tcbXWS3IdszZqecGXnE71Z26xWbW
kxejPUx8du+mkjMmdM18t+rniG1fFN60OW/kn5VzdG/h/Tpy6eKrFz+eNYD25bmtG6fte+P027AB
rMh6AgCHwwDYpxwCGnjQQQcgOIDABCB04AEIESDwAAgGenABAgJyhIABHCLAQAMKcMhhVAuIaEBU
9lnU04omVVASizBeJEJFMbI4kkAizLTQjjz2GNGM/wQEADs=
""")
        self.start_skyscrapers = image

        image = \
            tk.PhotoImage(data="""
R0lGODlhIAAgAPf/AHy9G3y+HILAJoPAKITBKZrNUJ7PV5/OWKPRYKTRYanUaa3Wcd3uxP///wAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ACH5BAEKAP8ALAAAAAAgACAA
AAjyAP/9Y6AgAYKDCBMqXIjgwAIGAv8tGECRooCLGDNq3HhRwcCKIDmK5DiAwUSQFUeqvDigIMqU
L2PKRJBA5gABNnMOoGkTp86ZNX8KBclTJoCjSJMetVk0JgIDB6JKlRrUaVWQAAw02Mq161YDAKzG
zOq1bAOwYl8CKGDWa4GwL5tiZduW69u0KMnW/QoXpdyKa/duvRv3KmC6ewn7NUxR7160hccirquY
KOMBgQVXrvi3sVbBkFEmuOy4bmiQo20qoDm6dWsFNlMbVUo79uWhtnHjlq37J+/eOROcBJ7zIXGd
EIcfR7kgoknX0KNLH/1QYEAAOw==
""")
        self.start_shakashaka = image
