pygtk2tutorial/0040755000117200001670000000000010227357011012665 5ustar finlayfcfpygtk2tutorial/pygtk-tut-changelog.html0100644000117200001670000005112110227357010017444 0ustar finlayfcfAppendix C. ChangeLog

Appendix C. ChangeLog


        ============== 2.4 ==================
2005-04-13  John Finlay  <finlay@moeraki.com>

        * pygtk2-tut.xml: Set version number and pubdate.

        * Copyright.xml: Update date.

        * Replace gtk.TRUE and gtk.FALSE. Fix misc. other deprecations.

2005-03-31  John Finlay  <finlay@moeraki.com>

        * ComboBoxAndComboBoxEntry.xml: Convenience function is
        gtk.combo_box_entry_new_text(). (brett@belizebotanic.org)

2005-02-28  John Finlay  <finlay@moeraki.com>

        * GettingStarted.xml (Stepping) add print statement to destroy
        handler for illustrative purposes. (Rodolfo Gouveia)

        ============== 2.3 ==================
2004-12-24  John Finlay  <finlay@moeraki.com>

        * pygtk2-tut.xml: Set version number and pubdate. Add revhistory.

        * UIManager.xml: Add.

2004-12-13  John Finlay  <finlay@moeraki.com>

        * MovingOn.xml: Remove reference to WINODW_DIALOG (Jens Knutson)

2004-12-08  John Finlay  <finlay@moeraki.com>

        * DragAndDrop.xml Patch from Rafael Villar Burke

2004-12-01  John Finlay  <finlay@moeraki.com>

        * Scribble.xml Patch by Rafael Villar Burke.

2004-11-29  John Finlay  <finlay@moeraki.com>

        * ComboBoxAndComboBoxEntry.xml Patch by Rafael Villar Burke.
        * TimeoutsIOAndIdleFunctions.xml Patch by Rafael Villar Burke.

        * AdvancedEventAndSignalHandling.xml Add parameter tags to function
        and method defs. Patch by Rafael Villar Burke.

2004-11-20  John Finlay  <finlay@moeraki.com>

        * ColorButtonAndFontButton.xml: 
        * SettingWidgetAttributes.xml: Fix xml tags. (Rafael Villar Burke)

2004-10-31  John Finlay  <finlay@moeraki.com>

        * ExpanderWidget.xml
        * GenericTreeModel.xml
        * CellRenderers.xml Fixes by Rafael Villar Burke.

2004-10-28  John Finlay  <finlay@moeraki.com>

        * TreeViewWidget.xml Fixes by Rafael Villar Burke.

2004-10-24  John Finlay  <finlay@moeraki.com>

        * ContainerWidgets.xml Many fixes by Rafael Villar Burke.

        * MiscellaneaousWidgets.xml Many fixes by Rafael Villar Burke.

2004-10-13  John Finlay  <finlay@moeraki.com>

        * PackingWidgets.xml ButtonWidget.xml Fix typos per kraai
        Fixes #155318.

2004-09-20  John Finlay  <finlay@moeraki.com>

        * TextViewWidget.xml Minor fixes by Rafael Villar Burke.

        * ActionsAndActionGroups.xml Add.
        * NewInPyGTK2.4.xml Include ActionsAndActionGroups.xml

2004-09-12  John Finlay  <finlay@moeraki.com>

        * TreeModel.xml (sec-ManagingRowData) Minor fix. Patch by
        Rafael Villar Burke

2004-09-08  John Finlay  <finlay@moeraki.com>

        * ContainerWidgets.xml (sec-AspectFrames)
        (sec-Alignment) Fix link to Ref manual.

2004-08-31  John Finlay  <finlay@moeraki.com>

        * DrawingArea.xml Rewrite portions based on patch by Rafael Villar 
        Burke.

        * DrawingArea.xml Add missing literal tags.
        Patch by Rafael Villar Burke.

2004-08-21  John Finlay  <finlay@moeraki.com>

        * ColorButtonAndFontButton.xml Add.

        * NewInPyGTK24.xml Include ColorButtonAndFontButton.xml.

2004-08-19  John Finlay  <finlay@moeraki.com>

        * Scribble.xml (sec-DrawingAreaWidgetAndDrawing)
        Update example description.

2004-08-16  John Finlay  <finlay@moeraki.com>

        * CellRenderers.xml Add cellrenderer.py example program section

        * Credits.xml Credit Steve George for cellrenderer.py example
        program.

2004-08-15  John Finlay  <finlay@moeraki.com>

        * CellRenderers.xml (Activatable Toggle Cells) Add info about
        setting the toggle from a column. (#150212) (Steve George)

2004-08-13  John Finlay  <finlay@moeraki.com>

        * TreeModel.xml Clean up Adding TreeStore rows section (Joey Tsai)
        Add missing text in Large Data Stores section.. (Joey Tsai)

2004-08-08  John Finlay  <finlay@moeraki.com>

        * TreeModel.xml
        * CellRenderers.xml
        * GenericTreeModel.xml
        * TreeViewWidget.xml
        * NewWidgetsAndObjects.xml Minor rewording and addition of tags.

2004-08-06  John Finlay  <finlay@moeraki.com>

        * ButtonWidget.xml Fix errors in examples.
        * DragAndDrop.xml Fix anchor.
        * MenuWidget.xml Fix typo.
        * PackingWidgets.xml Fix typo.
        * MiscellaneousWidgets.xml (Dialogs) (Images) (Pixmaps) (Rulers)
        (Progressbar) (Label)
        Fix faulty wording and errors (All thanks to Marc Verney)

2004-08-04  John Finlay  <finlay@moeraki.com>

        * DrawingArea.xml Update example to use rulers and scrolled
        window.

        * pygtk2-tut.xml Bump version number and pubdate.

        ============== 2.2 ==================
2004-08-03  John Finlay  <finlay@moeraki.com>

        * ComboBoxAndComboBoxEntry.xml Add.

        * EntryCompletion.xml Add.

        * ExpanderWidget.xml Add.

        * NewInPyGTK24.xml Add.

        * NewWidgetsAndObject.xml Rearrange and make as a chapter.

        * pygtk2-tut.xml Add NewInPyGTK24.xml. Update date.

2004-08-02  John Finlay  <finlay@moeraki.com>

        * MiscellaneousWidgets.xml Change Combo Box to Combo Widget to avoid
        confusion with new ComboBox widget. Add deprecation note.

2004-07-28  John Finlay  <finlay@moeraki.com>

        * Credits.xml Add PyGTK section with credit to Nathan Durst and 
        Alex Roitman.

        * FileChooser.xml Create.
        * NewWidgetsAndObject.xml Add include for FileChooser.xml.

        * NewWidgetsAndObject.xml Create.

        * pygtk2-tut.xml Add NewWidgetsAndObject.xml file. Bump version
        number and set date.

2004-07-20  John Finlay  <finlay@moeraki.com>

        * TreeViewWidget.xml (sec-ManagingCellRenderers) Fix title.
        More detail on set_sort_column_id().

2004-07-12  John Finlay  <finlay@moeraki.com>

        * TreeViewWidget.xml (sec-CreatingTreeView) Fix faulty capitalization.
        (thanks to Doug Quale)

2004-07-08  John Finlay  <finlay@moeraki.com>

        * Adjustments.xml AdvancedEventAndSignalHandling.xml
        ButtonWidget.xml ChangeLog ContainerWidgets.xml
        DragAndDrop.xml DrawingArea.xml GettingStarted.xml
        ManagingSelections.xml MenuWidget.xml
        MiscellaneousWidgets.xml MovingOn.xml
        PackingWidgets.xml RangeWidgets.xml Scribble.xml
        SettingWidgetAttributes.xml TextViewWidget.xml
        TimeoutsIOAndIdleFunctions.xml WidgetOverview.xml
        Update files with example programs.

2004-07-06  John Finlay  <finlay@moeraki.com>

        * examples/*.py Update examples to eliminate deprecated methods
        and use import pygtk.

        ============== 2.1 ==================
2004-07-06  John Finlay  <finlay@moeraki.com>

        * pygtk2-tut.xml Bump version number to 2.1 and set
        pubdate.

        * TreeViewWidgets.xml Revise the treeviewdnd.py example to
        illustrate row reordering with external drag and drop and
        add explanation.

2004-07-03  John Finlay  <finlay@moeraki.com>

        * TimeoutsIOAndIdleFunctions.xml Update descriptions to use
        the gobject functions.

2004-06-30  John Finlay  <finlay@moeraki.com>

        * TreeViewWidget.xml Extract the CellRenderers section into
        CellRenderers.xml.

        * CellRenderers.xml Create and add section on editable
        CellRendererText.

        * TreeViewWidget.xml Extract the TreeModel section and put into
        new file TreeModel.xml. Add detail to the TreeViewColumn use of
        its sort column ID.

        * TreeModel.xml Create and add section on sorting TreeModel rows
        using the TreeSortable interface.

2004-06-27  John Finlay  <finlay@moeraki.com>

        * TreeViewWidget.xml (Cell Data Function) Add filelisting example
        using cell data functions. Add XInclude header to include generic
        tree model and cell renderer subsections.
        Fix typos and errors in links. Fix bugs in example listings.
        Add section on TreeModel signals.

2004-06-22  John Finlay  <finlay@moeraki.com>

        * Introduction.xml Add note about pygtkconsole.py and gpython.py
        programs do not work on Windows. Thanks to vector180.

2004-06-14  John Finlay  <finlay@moeraki.com>

        * DragAndDrop.xml Fix signal lists for drag source and dest.
        Add detail to the overview drag cycle. Add detail about signal
        handler operation.

        * DragAndDrop.xml Add small example program dragtargets.py to
        print out drag targets.

2004-05-31  John Finlay  <finlay@moeraki.com>

        * GettingStarted.xml Change wording in helloworld.py example
        program - delete_event() comments confusing. Thanks to Ming Hua.

2004-05-28  John Finlay  <finlay@moeraki.com>

        * TreeViewWidget.xml (TreeModelFilter) Replace 'file' with 'filter'.
        Thanks to Guilherme Salgado.

2004-05-27  John Finlay  <finlay@moeraki.com>

        * TreeViewWidget.xml (AccessingDataValues) Fix store.set example
        column number wrong. Thanks to Rafael Villar Burke and Guilherme
        Salgado.
        (CellRendererAttributes) Fix error. Thanks to Doug Quale.
        (TreeModelIntroduction)
        (PythonProtocolSupport) Fix grammatical and spelling errors.
        Thanks to Thomas Mills Hinkle.

2004-05-25  John Finlay  <finlay@moeraki.com>

        * Introduction.xml Add reference links to www.pygtk.org website
        and describe some of its resources.

        ============ 2.0 ==============
2004-05-24  John Finlay  <finlay@moeraki.com>

        * TreeViewWidget.xml Add beginning of tutorial chapter.

        * Introduction.xml Add reference to gpython.py program.

        * pygtk2-tut.xml Bump release number to 2.0.

2004-03-31  John Finlay  <finlay@moeraki.com>

        * MiscellaneousWidgets.xml Fix bug in calendar.py example causing
        date string to be off by one day in some time zones. Fixes #138487.
        (thanks to Eduard Luhtonen)

2004-01-28  John Finlay  <finlay@moeraki.com>

        * DrawingArea.xml Modify description of DrawingArea to clarify that
        drawing is done on the wrapped gtk.gdk.Window. Modify GC description
        to clarify that new GCs created from drawables. (thanks to Antoon
        Pardon)

        * UndocumentedWidgets.xml Remove the section on Plugs and Sockets -
        now in ContainerWidgets.xml.
        
        * ContainerWidgets.xml Add section on Plugs and Sockets written
        by Nathan Hurst.

        * pygtk2-tut.xml Change date and version number.

2003-11-05  John Finlay  <finlay@moeraki.com>

        * Introduction.xml Add reference to the PyGTK 2.0 Reference Manual.

2003-11-04  John Finlay  <finlay@moeraki.com>

        * ContainerWidgets.xml
        * RangeWidgets.xml
        * WidgetOverview.xml Remove reference to testgtk.py since it doesn't
        exist in PyGTK 2.0 (thanks to Steve Chaplin)

2003-10-07  John Finlay  <finlay@moeraki.com>

        * TextViewWidget.xml Change PANGO_ to pango. (thanks to Stephane Klein)
        * pygtk2-tut.xml Change date and version number.

2003-10-06  John Finlay  <finlay@moeraki.com>

        * GettingStarted.xml Change third to second in description of signal
        handler arguments. (thanks to Kyle Smith)

2003-09-26  John Finlay  <finlay@moeraki.com>

        * ContainerWidgets.xml Fix text layout error in frame shadow
        description (thanks to Steve Chaplin)

2003-09-19  John Finlay  <finlay@moeraki.com>

        * ContainerWidgets.xml
        * layout.py Use random module instead of whrandom in
        layout.py example program (thanks to Steve Chaplin)

        * PackingWidgets.xml
        * packbox.py Use set_size_request() instead of set_usize() in
        packbox.py example (thanks to Steve Chaplin)

2003-07-11  John Finlay  <finlay@moeraki.com>

        * ContainerWidgets.xml Fix link references to class-gtkalignment to
        use a ulink instead of a link.

        * ChangeLog Add this change log file

        * pygtk2-tut.xml Change date and add a version number. Add ChangeLog
        as an appendix.

pygtk2tutorial/sec-PanedWindowWidgets.html0100644000117200001670000001741710227356763020115 0ustar finlayfcf10.7. Paned Window Widgets

10.7. Paned Window Widgets

The paned window widgets are useful when you want to divide an area into two parts, with the relative size of the two parts controlled by the user. A groove is drawn between the two portions with a handle that the user can drag to change the ratio. The division can either be horizontal (HPaned) or vertical (VPaned).

To create a new paned window, call one of:

  hpane = gtk.HPaned()

  vpane = gtk.VPaned()

After creating the paned window widget, you need to add child widgets to its two halves. To do this, use the methods:

  paned.add1(child)

  paned.add2(child)

The add1() method adds the child widget to the left or top half of the paned window. The add2() method adds the child widget to the right or bottom half of the paned window.

The paned.py example program creates part of the user interface of an imaginary email program. A window is divided into two portions vertically, with the top portion being a list of email messages and the bottom portion the text of the email message. Most of the program is pretty straightforward. A couple of points to note: text can't be added to a Text widget until it is realized. This could be done by calling the realize() method, but as a demonstration of an alternate technique, we connect a handler to the "realize" signal to add the text. Also, we need to add the SHRINK option to some of the items in the table containing the text window and its scrollbars, so that when the bottom portion is made smaller, the correct portions shrink instead of being pushed off the bottom of the window. Figure 10.6, “Paned Example” shows the result of running the program:

Figure 10.6. Paned Example

Paned Example

The source code of the paned.py program is:

    1	#!/usr/bin/env python
    2	
    3	# example paned.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk, gobject
    8	
    9	class PanedExample:
   10	    # Create the list of "messages"
   11	    def create_list(self):
   12	        # Create a new scrolled window, with scrollbars only if needed
   13	        scrolled_window = gtk.ScrolledWindow()
   14	        scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
   15	
   16	        model = gtk.ListStore(gobject.TYPE_STRING)
   17	        tree_view = gtk.TreeView(model)
   18	        scrolled_window.add_with_viewport (tree_view)
   19	        tree_view.show()
   20	
   21	        # Add some messages to the window
   22	        for i in range(10):
   23	            msg = "Message #%d" % i
   24	            iter = model.append()
   25	            model.set(iter, 0, msg)
   26	
   27	        cell = gtk.CellRendererText()
   28	        column = gtk.TreeViewColumn("Messages", cell, text=0)
   29	        tree_view.append_column(column)
   30	
   31	        return scrolled_window
   32	   
   33	    # Add some text to our text widget - this is a callback that is invoked
   34	    # when our window is realized. We could also force our window to be
   35	    # realized with gtk.Widget.realize(), but it would have to be part of a
   36	    # hierarchy first
   37	    def insert_text(self, buffer):
   38	        iter = buffer.get_iter_at_offset(0)
   39	        buffer.insert(iter,
   40	                      "From: pathfinder@nasa.gov\n"
   41	                      "To: mom@nasa.gov\n"
   42	                      "Subject: Made it!\n"
   43	                      "\n"
   44	                      "We just got in this morning. The weather has been\n"
   45	                      "great - clear but cold, and there are lots of fun sights.\n"
   46	                      "Sojourner says hi. See you soon.\n"
   47	                      " -Path\n")
   48	   
   49	    # Create a scrolled text area that displays a "message"
   50	    def create_text(self):
   51	        view = gtk.TextView()
   52	        buffer = view.get_buffer()
   53	        scrolled_window = gtk.ScrolledWindow()
   54	        scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
   55	        scrolled_window.add(view)
   56	        self.insert_text(buffer)
   57	        scrolled_window.show_all()
   58	        return scrolled_window
   59	   
   60	    def __init__(self):
   61	        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   62	        window.set_title("Paned Windows")
   63	        window.connect("destroy", lambda w: gtk.main_quit())
   64	        window.set_border_width(10)
   65	        window.set_size_request(450, 400)
   66	
   67	        # create a vpaned widget and add it to our toplevel window
   68	        vpaned = gtk.VPaned()
   69	        window.add(vpaned)
   70	        vpaned.show()
   71	
   72	        # Now create the contents of the two halves of the window
   73	        list = self.create_list()
   74	        vpaned.add1(list)
   75	        list.show()
   76	
   77	        text = self.create_text()
   78	        vpaned.add2(text)
   79	        text.show()
   80	        window.show()
   81	
   82	def main():
   83	    gtk.main()
   84	    return 0
   85	
   86	if __name__ == "__main__":
   87	    PanedExample()
   88	    main()
pygtk2tutorial/sec-Statusbars.html0100644000117200001670000001475210227356762016500 0ustar finlayfcf9.8. Statusbars

9.8. Statusbars

Statusbars are simple widgets used to display a text message. They keep a stack of the messages pushed onto them, so that popping the current message will re-display the previous text message.

In order to allow different parts of an application to use the same statusbar to display messages, the statusbar widget issues Context Identifiers which are used to identify different "users". The message on top of the stack is the one displayed, no matter what context it is in. Messages are stacked in last-in-first-out order, not context identifier order.

A statusbar is created with a call to:

  statusbar = gtk.Statusbar()

A new Context Identifier is requested using a call to the following method with a short textual description of the context:

  context_id = statusbar.get_context_id(context_description)

There are three additional methods that operate on statusbars:

  message_id = statusbar.push(context_id, text)

  statusbar.pop(context_id)

  statusbar.remove(context_id, message_id)

The first, push(), is used to add a new message to the statusbar. It returns a message_id, which can be passed later to the remove() method to remove the message with the combination message_id and context_id from the statusbar's stack.

The pop() method removes the message highest in the stack with the given context_id.

The statusbar.py example program creates a statusbar and two buttons, one for pushing items onto the statusbar, and one for popping the last item back off. Figure 9.9, “Statusbar Example” illustrates the result:

Figure 9.9. Statusbar Example

Statusbar Example

The statusbar.py source code is:

    1	#!/usr/bin/env python
    2	
    3	# example statusbar.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	
    9	class StatusbarExample:
   10	    def push_item(self, widget, data):
   11	        buff = " Item %d" % self.count
   12	        self.count = self.count + 1
   13	        self.status_bar.push(data, buff)
   14	        return
   15	
   16	    def pop_item(self, widget, data):
   17	        self.status_bar.pop(data)
   18	        return
   19	
   20	    def __init__(self):
   21	        self.count = 1
   22	        # create a new window
   23	        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   24	        window.set_size_request(200, 100)
   25	        window.set_title("PyGTK Statusbar Example")
   26	        window.connect("delete_event", lambda w,e: gtk.main_quit())
   27	 
   28	        vbox = gtk.VBox(False, 1)
   29	        window.add(vbox)
   30	        vbox.show()
   31	          
   32	        self.status_bar = gtk.Statusbar()      
   33	        vbox.pack_start(self.status_bar, True, True, 0)
   34	        self.status_bar.show()
   35	
   36	        context_id = self.status_bar.get_context_id("Statusbar example")
   37	
   38	        button = gtk.Button("push item")
   39	        button.connect("clicked", self.push_item, context_id)
   40	        vbox.pack_start(button, True, True, 2)
   41	        button.show()              
   42	
   43	        button = gtk.Button("pop last item")
   44	        button.connect("clicked", self.pop_item, context_id)
   45	        vbox.pack_start(button, True, True, 2)
   46	        button.show()              
   47	
   48	        # always display the window as the last step so it all splashes on
   49	        # the screen at once.
   50	        window.show()
   51	
   52	def main():
   53	    gtk.main()
   54	    return 0
   55	
   56	if __name__ == "__main__":
   57	    StatusbarExample()
   58	    main()
pygtk2tutorial/sec-ExpanderWidget.html0100644000117200001670000001421210227356776017253 0ustar finlayfcf16.5. Expander Widgets

16.5. Expander Widgets

The Expander widget is a fairly simple container widget that can reveal or hide its child widget by clicking on a triangle similar to the triangle in a TreeView. A new Expander is created using the constructor:

  expander = gtk.Expander(label=None)

where label is a string to be used as the expander label. If label is None or not specified, no label is created. Alternatively, you can use the function:

  expander = gtk.expander_new_with_mnemonic(label=None)

that sets the character in label preceded by an underscore as a mnemonic keyboard accelerator.

The Expander widget uses the Container API to add and remove its child widget:

  expander.add(widget)

  expander.remove(widget)

The child widget can be retrieved using the Bin "child" attribute or the get_child() method.

The setting that controls the interpretation of label underscores can be retrieved and changed using the methods:

  use_underline = expander.get_use_underline()

  expander.set_use_underline(use_underline)

If you want to use Pango markup (see the Pango Markup reference for more detail) in the label string, use the following methods to set and retrieve the setting of the "use-markup" property:

  expander.set_use_markup(use_markup)

  use_markup = expander.get_use_markup()

Finally, you can use any widget as the label widget using the following method:

  expander.set_label_widget(label_widget)

This allows you, for example, to use an HBox packed with an Image and a Label as the Expander label.

The state of the Expander can be retrieved and set using the methods:

  expanded = expander.get_expanded()

  expander.set_expanded(expanded)

If expanded is TRUE the child widget is revealed.

In most cases the Expander automatically does exactly what you want when revealing and hiding the child widget. In some cases your application might want to create a child widget at expansion time. The "notify::expanded" signal can be used to track changes in the state of the expander triangle. The signal handler can then create or change the child widget as needed.

The example program expander.py demonstrates the use of the Expander. Figure 16.11, “Expander Widget” illustrates the program in operation:

Figure 16.11. Expander Widget

Expander Widget

The program creates a Label containing the current time and shows it when the expander is expanded.

pygtk2tutorial/sec-GtkData.html0100644000117200001670000000346110227357005015646 0ustar finlayfcfA.3. GtkData

A.3. GtkData

  disconnect(data_obj, data)
pygtk2tutorial/sec-Images.html0100644000117200001670000006353510227356762015555 0ustar finlayfcf9.6. Images

9.6. Images

Images are data structures that contain pictures. These pictures can be used in various places.

Images can be created from Pixbufs, Pixmaps, image files (e.g. XPM, PNG, JPEG, TIFF, etc.) and even animation files.

Images are created using the function:

  image = gtk.Image()

The image is then loaded using one of the following methods:

  image.set_from_pixbuf(pixbuf)
  image.set_from_pixmap(pixmap, mask)
  image.set_from_image(image)
  image.set_from_file(filename)
  image.set_from_stock(stock_id, size)
  image.set_from_icon_set(icon_set, size)
  image.set_from_animation(animation)

Where pixbuf is a gtk.gdk.Pixbuf; pixmap and mask are gtk.gdk.Pixmaps; image is a gtk.gdk.Image; stock_id is the name of a gtk.StockItem; icon_set is a gtk.IconSet; and, animation is a gtk.gdk.PixbufAnimation. the size argument is one of:

 ICON_SIZE_MENU
 ICON_SIZE_SMALL_TOOLBAR
 ICON_SIZE_LARGE_TOOLBAR
 ICON_SIZE_BUTTON
 ICON_SIZE_DND
 ICON_SIZE_DIALOG

The easiest way to create an image is using the set_from_file() method which automatically determines the image type and loads it.

The program images.py illustrates loading various image types (goalie.gif, apple-red.png, chaos.jpg, important.tif, soccerball.gif) into images which are then put into buttons:

Figure 9.5. Example Images in Buttons

Example Images in Buttons

The source code is:

    1	#!/usr/bin/env python
    2	
    3	# example images.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	
    9	class ImagesExample:
   10	    # when invoked (via signal delete_event), terminates the application.
   11	    def close_application(self, widget, event, data=None):
   12	        gtk.main_quit()
   13	        return False
   14	
   15	    # is invoked when the button is clicked.  It just prints a message.
   16	    def button_clicked(self, widget, data=None):
   17	        print "button %s clicked" % data
   18	
   19	    def __init__(self):
   20	        # create the main window, and attach delete_event signal to terminating
   21	        # the application
   22	        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   23	        window.connect("delete_event", self.close_application)
   24	        window.set_border_width(10)
   25	        window.show()
   26	
   27	        # a horizontal box to hold the buttons
   28	        hbox = gtk.HBox()
   29	        hbox.show()
   30	        window.add(hbox)
   31	
   32	        pixbufanim = gtk.gdk.PixbufAnimation("goalie.gif")
   33	        image = gtk.Image()
   34	        image.set_from_animation(pixbufanim)
   35	        image.show()
   36	        # a button to contain the image widget
   37	        button = gtk.Button()
   38	        button.add(image)
   39	        button.show()
   40	        hbox.pack_start(button)
   41	        button.connect("clicked", self.button_clicked, "1")
   42	        
   43	        # create several images with data from files and load images into
   44	        # buttons
   45	        image = gtk.Image()
   46	        image.set_from_file("apple-red.png")
   47	        image.show()
   48	        # a button to contain the image widget
   49	        button = gtk.Button()
   50	        button.add(image)
   51	        button.show()
   52	        hbox.pack_start(button)
   53	        button.connect("clicked", self.button_clicked, "2")
   54	
   55	        image = gtk.Image()
   56	        image.set_from_file("chaos.jpg")
   57	        image.show()
   58	        # a button to contain the image widget
   59	        button = gtk.Button()
   60	        button.add(image)
   61	        button.show()
   62	        hbox.pack_start(button)
   63	        button.connect("clicked", self.button_clicked, "3")
   64	
   65	        image = gtk.Image()
   66	        image.set_from_file("important.tif")
   67	        image.show()
   68	        # a button to contain the image widget
   69	        button = gtk.Button()
   70	        button.add(image)
   71	        button.show()
   72	        hbox.pack_start(button)
   73	        button.connect("clicked", self.button_clicked, "4")
   74	
   75	        image = gtk.Image()
   76	        image.set_from_file("soccerball.gif")
   77	        image.show()
   78	        # a button to contain the image widget
   79	        button = gtk.Button()
   80	        button.add(image)
   81	        button.show()
   82	        hbox.pack_start(button)
   83	        button.connect("clicked", self.button_clicked, "5")
   84	
   85	
   86	def main():
   87	    gtk.main()
   88	    return 0
   89	
   90	if __name__ == "__main__":
   91	    ImagesExample()
   92	    main()

9.6.1. Pixmaps

Pixmaps are data structures that contain pictures. These pictures can be used in various places, but most commonly as icons on the X desktop, or as cursors.

A pixmap which only has 2 colors is called a bitmap, and there are a few additional routines for handling this common special case.

To understand pixmaps, it would help to understand how X window system works. Under X, applications do not need to be running on the same computer that is interacting with the user. Instead, the various applications, called "clients", all communicate with a program which displays the graphics and handles the keyboard and mouse. This program which interacts directly with the user is called a "display server" or "X server." Since the communication might take place over a network, it's important to keep some information with the X server. Pixmaps, for example, are stored in the memory of the X server. This means that once pixmap values are set, they don't need to keep getting transmitted over the network; instead a command is sent to "display pixmap number XYZ here." Even if you aren't using X with GTK+ currently, using constructs such as Pixmaps will make your programs work acceptably under X.

To use pixmaps in PyGTK, we must first build a gtk.gdk.Pixmap using gtk.gdk functions in PyGTK. Pixmaps can either be created from in-memory data, or from data read from a file. We'll go through each of the calls to create a pixmap.

  pixmap = gtk.gdk.pixmap_create_from_data(window, data, width, height, depth, fg, bg)

This routine is used to create a pixmap from data in memory with the color depth given by depth. If depth is -1 the color depth is derived from the depth of window. Each pixel uses depth bits of data to represent the color. Width and height are in pixels. The window argument must refer to a realized gtk.gdk.Window, since a pixmap's resources are meaningful only in the context of the screen where it is to be displayed. fg and bg are the foreground and background colors of the pixmap.

Pixmaps can be created from XPM files using:

  pixmap, mask = gtk.gdk.pixmap_create_from_xpm(window, transparent_color, filename)

XPM format is a readable pixmap representation for the X Window System. It is widely used and many different utilities are available for creating image files in this format. In the pixmap_create_from_xpm() function the first argument is a gtk.gdk.Window type. (Most GTK+ widgets have an underlying gtk.gdk.Window which can be retrieved by using the widget's window attribute.) The file, specified by filename, must contain an image in the XPM format and the image is loaded into the pixmap structure. The mask is a bitmap that specifies which bits of pixmap are opaque; it is created by the function. All other pixels are colored using the color specified by transparent_color. An example using this function is below.

Pixmaps can also be created from data in memory using the function:

  pixmap, mask = gtk.gdk.pixmap_create_from_xpm_d(window, transparent_color, data)

Small images can be incorporated into a program as data in the XPM format using the above function. A pixmap is created using this data, instead of reading it from a file. An example of such data is:

  xpm_data = [
  "16 16 3 1",
  "       c None",
  ".      c #000000000000",
  "X      c #FFFFFFFFFFFF",
  "                ",
  "   ......       ",
  "   .XXX.X.      ",
  "   .XXX.XX.     ",
  "   .XXX.XXX.    ",
  "   .XXX.....    ",
  "   .XXXXXXX.    ",
  "   .XXXXXXX.    ",
  "   .XXXXXXX.    ",
  "   .XXXXXXX.    ",
  "   .XXXXXXX.    ",
  "   .XXXXXXX.    ",
  "   .XXXXXXX.    ",
  "   .........    ",
  "                ",
  "                "
  ]

The final way to create a blank pixmap suitable for drawing operations is:

  pixmap = gtk.gdk.Pixmap(window, width, height, depth=-1)

window is either a gtk.gdk.Window. or None. If window is a gtk.gdk.Window then depth can be -1 to indicate that the depth should be determined from the window. If window is None then the depth must be specified.

The pixmap.py program is an example of using a pixmap in a button. Figure 9.6, “Pixmap in a Button Example” shows the result:

Figure 9.6. Pixmap in a Button Example

Pixmap in a Button Example

The source code is:

    1	#!/usr/bin/env python
    2	
    3	# example pixmap.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	
    9	# XPM data of Open-File icon
   10	xpm_data = [
   11	"16 16 3 1",
   12	"       c None",
   13	".      c #000000000000",
   14	"X      c #FFFFFFFFFFFF",
   15	"                ",
   16	"   ......       ",
   17	"   .XXX.X.      ",
   18	"   .XXX.XX.     ",
   19	"   .XXX.XXX.    ",
   20	"   .XXX.....    ",
   21	"   .XXXXXXX.    ",
   22	"   .XXXXXXX.    ",
   23	"   .XXXXXXX.    ",
   24	"   .XXXXXXX.    ",
   25	"   .XXXXXXX.    ",
   26	"   .XXXXXXX.    ",
   27	"   .XXXXXXX.    ",
   28	"   .........    ",
   29	"                ",
   30	"                "
   31	]
   32	
   33	class PixmapExample:
   34	    # when invoked (via signal delete_event), terminates the application.
   35	    def close_application(self, widget, event, data=None):
   36	        gtk.main_quit()
   37	        return False
   38	
   39	    # is invoked when the button is clicked.  It just prints a message.
   40	    def button_clicked(self, widget, data=None):
   41	        print "button clicked"
   42	
   43	    def __init__(self):
   44	        # create the main window, and attach delete_event signal to terminating
   45	        # the application
   46	        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   47	        window.connect("delete_event", self.close_application)
   48	        window.set_border_width(10)
   49	        window.show()
   50	
   51	        # now for the pixmap from XPM data
   52	        pixmap, mask = gtk.gdk.pixmap_create_from_xpm_d(window.window,
   53	                                                        None,
   54	                                                        xpm_data)
   55	
   56	        # an image widget to contain the pixmap
   57	        image = gtk.Image()
   58	        image.set_from_pixmap(pixmap, mask)
   59	        image.show()
   60	
   61	        # a button to contain the image widget
   62	        button = gtk.Button()
   63	        button.add(image)
   64	        window.add(button)
   65	        button.show()
   66	
   67	        button.connect("clicked", self.button_clicked)
   68	
   69	def main():
   70	    gtk.main()
   71	    return 0
   72	
   73	if __name__ == "__main__":
   74	    PixmapExample()
   75	    main()

A disadvantage of using pixmaps is that the displayed object is always rectangular, regardless of the image. We would like to create desktops and applications with icons that have more natural shapes. For example, for a game interface, we would like to have round buttons to push. The way to do this is using shaped windows.

A shaped window is simply a pixmap where the background pixels are transparent. This way, when the background image is multi-colored, we don't overwrite it with a rectangular, non-matching border around our icon. The wheelbarrow.py example program displays a full wheelbarrow image on the desktop. Figure 9.7, “Wheelbarrow Example Shaped Window” shows the wheelbarrow over a terminal window:

Figure 9.7. Wheelbarrow Example Shaped Window

Wheelbarrow Example Shaped Window

The source code for wheelbarrow.py is:

    1	#!/usr/bin/env python
    2	
    3	# example wheelbarrow.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	
    9	# XPM
   10	WheelbarrowFull_xpm = [
   11	"48 48 64 1",
   12	"       c None",
   13	".      c #DF7DCF3CC71B",
   14	"X      c #965875D669A6",
   15	"o      c #71C671C671C6",
   16	"O      c #A699A289A699",
   17	"+      c #965892489658",
   18	"@      c #8E38410330C2",
   19	"#      c #D75C7DF769A6",
   20	"$      c #F7DECF3CC71B",
   21	"%      c #96588A288E38",
   22	"&      c #A69992489E79",
   23	"*      c #8E3886178E38",
   24	"=      c #104008200820",
   25	"-      c #596510401040",
   26	";      c #C71B30C230C2",
   27	":      c #C71B9A699658",
   28	">      c #618561856185",
   29	",      c #20811C712081",
   30	"<      c #104000000000",
   31	"1      c #861720812081",
   32	"2      c #DF7D4D344103",
   33	"3      c #79E769A671C6",
   34	"4      c #861782078617",
   35	"5      c #41033CF34103",
   36	"6      c #000000000000",
   37	"7      c #49241C711040",
   38	"8      c #492445144924",
   39	"9      c #082008200820",
   40	"0      c #69A618611861",
   41	"q      c #B6DA71C65144",
   42	"w      c #410330C238E3",
   43	"e      c #CF3CBAEAB6DA",
   44	"r      c #71C6451430C2",
   45	"t      c #EFBEDB6CD75C",
   46	"y      c #28A208200820",
   47	"u      c #186110401040",
   48	"i      c #596528A21861",
   49	"p      c #71C661855965",
   50	"a      c #A69996589658",
   51	"s      c #30C228A230C2",
   52	"d      c #BEFBA289AEBA",
   53	"f      c #596545145144",
   54	"g      c #30C230C230C2",
   55	"h      c #8E3882078617",
   56	"j      c #208118612081",
   57	"k      c #38E30C300820",
   58	"l      c #30C2208128A2",
   59	"z      c #38E328A238E3",
   60	"x      c #514438E34924",
   61	"c      c #618555555965",
   62	"v      c #30C2208130C2",
   63	"b      c #38E328A230C2",
   64	"n      c #28A228A228A2",
   65	"m      c #41032CB228A2",
   66	"M      c #104010401040",
   67	"N      c #492438E34103",
   68	"B      c #28A2208128A2",
   69	"V      c #A699596538E3",
   70	"C      c #30C21C711040",
   71	"Z      c #30C218611040",
   72	"A      c #965865955965",
   73	"S      c #618534D32081",
   74	"D      c #38E31C711040",
   75	"F      c #082000000820",
   76	"                                                ",
   77	"          .XoO                                  ",
   78	"         +@#$%o&                                ",
   79	"         *=-;#::o+                              ",
   80	"           >,<12#:34                            ",
   81	"             45671#:X3                          ",
   82	"               +89<02qwo                        ",
   83	"e*                >,67;ro                       ",
   84	"ty>                 459@>+&&                    ",
   85	"$2u+                  ><ipas8*                  ",
   86	"%$;=*                *3:.Xa.dfg>                ",
   87	"Oh$;ya             *3d.a8j,Xe.d3g8+             ",
   88	" Oh$;ka          *3d$a8lz,,xxc:.e3g54           ",
   89	"  Oh$;kO       *pd$%svbzz,sxxxxfX..&wn>         ",
   90	"   Oh$@mO    *3dthwlsslszjzxxxxxxx3:td8M4       ",
   91	"    Oh$@g& *3d$XNlvvvlllm,mNwxxxxxxxfa.:,B*     ",
   92	"     Oh$@,Od.czlllllzlmmqV@V#V@fxxxxxxxf:%j5&   ",
   93	"      Oh$1hd5lllslllCCZrV#r#:#2AxxxxxxxxxcdwM*  ",
   94	"       OXq6c.%8vvvllZZiqqApA:mq:Xxcpcxxxxxfdc9* ",
   95	"        2r<6gde3bllZZrVi7S@SV77A::qApxxxxxxfdcM ",
   96	"        :,q-6MN.dfmZZrrSS:#riirDSAX@Af5xxxxxfevo",
   97	"         +A26jguXtAZZZC7iDiCCrVVii7Cmmmxxxxxx%3g",
   98	"          *#16jszN..3DZZZZrCVSA2rZrV7Dmmwxxxx&en",
   99	"           p2yFvzssXe:fCZZCiiD7iiZDiDSSZwwxx8e*>",
  100	"           OA1<jzxwwc:$d%NDZZZZCCCZCCZZCmxxfd.B ",
  101	"            3206Bwxxszx%et.eaAp77m77mmmf3&eeeg* ",
  102	"             @26MvzxNzvlbwfpdettttttttttt.c,n&  ",
  103	"             *;16=lsNwwNwgsvslbwwvccc3pcfu<o    ",
  104	"              p;<69BvwwsszslllbBlllllllu<5+     ",
  105	"              OS0y6FBlvvvzvzss,u=Blllj=54       ",
  106	"               c1-699Blvlllllu7k96MMMg4         ",
  107	"               *10y8n6FjvllllB<166668           ",
  108	"                S-kg+>666<M<996-y6n<8*          ",
  109	"                p71=4 m69996kD8Z-66698&&        ",
  110	"                &i0ycm6n4 ogk17,0<6666g         ",
  111	"                 N-k-<>     >=01-kuu666>        ",
  112	"                 ,6ky&      &46-10ul,66,        ",
  113	"                 Ou0<>       o66y<ulw<66&       ",
  114	"                  *kk5       >66By7=xu664       ",
  115	"                   <<M4      466lj<Mxu66o       ",
  116	"                   *>>       +66uv,zN666*       ",
  117	"                              566,xxj669        ",
  118	"                              4666FF666>        ",
  119	"                               >966666M         ",
  120	"                                oM6668+         ",
  121	"                                  *4            ",
  122	"                                                ",
  123	"                                                "
  124	]
  125	
  126	class WheelbarrowExample:
  127	    # When invoked (via signal delete_event), terminates the application
  128	    def close_application(self, widget, event, data=None):
  129	        gtk.main_quit()
  130	        return False
  131	
  132	    def __init__(self):
  133	        # Create the main window, and attach delete_event signal to terminate
  134	        # the application.  Note that the main window will not have a titlebar
  135	        # since we're making it a popup.
  136	        window = gtk.Window(gtk.WINDOW_POPUP)
  137	        window.connect("delete_event", self.close_application)
  138	        window.set_events(window.get_events() | gtk.gdk.BUTTON_PRESS_MASK)
  139	        window.connect("button_press_event", self.close_application)
  140	        window.show()
  141	
  142	        # Now for the pixmap and the image widget
  143	        pixmap, mask = gtk.gdk.pixmap_create_from_xpm_d(
  144	            window.window, None, WheelbarrowFull_xpm)
  145	        image = gtk.Image()
  146	        image.set_from_pixmap(pixmap, mask)
  147	        image.show()
  148	
  149	        # To display the image, we use a fixed widget to place the image
  150	        fixed = gtk.Fixed()
  151	        fixed.set_size_request(200, 200)
  152	        fixed.put(image, 0, 0)
  153	        window.add(fixed)
  154	        fixed.show()
  155	
  156	        # This masks out everything except for the image itself
  157	        window.shape_combine_mask(mask, 0, 0)
  158	    
  159	        # show the window
  160	        window.set_position(gtk.WIN_POS_CENTER_ALWAYS)
  161	        window.show()
  162	
  163	def main():
  164	    gtk.main()
  165	    return 0
  166	
  167	if __name__ == "__main__":
  168	    WheelbarrowExample()
  169	    main()

To make the wheelbarrow image sensitive, we attached the "button_press_event" signal to make the program exit. Lines 138-139 make the picture sensitive to a mouse button being pressed and connect the close_application() method.

pygtk2tutorial/sec-IdleFunctions.html0100644000117200001670000000700510227357001017067 0ustar finlayfcf19.3. Idle Functions

19.3. Idle Functions

What if you have a function which you want to be called when nothing else is happening ? Use the function:

  source_id = gobject.idle_add(callback, ...)

Any arguments beyond the first (indicated with ...) are passed to the callback in order. The source_id is returned to provide a reference to the handler.

This function causes GTK to call the specified callback function whenever nothing else is happening.

The callback signature is:

  def callback(...):

where the arguments passed to the callback are the same as those specified in the gobject.idle_add() function. As with the other callback functions, returning FALSE will stop the idle callback from being called and returning TRUE causes the callback function to be run at the next idle time.

An idle function can be removed from the queue by calling the function:

  gobject.source_remove(source_id)

with the source_id returned from the gobject.idle_add() function.

pygtk2tutorial/sec-WidgetStyles.html0100644000117200001670000001544210227357000016753 0ustar finlayfcf18.5. Widget Styles

18.5. Widget Styles

The following methods get and set the style associated with a widget:

  widget.set_style(style)

  style = widget.get_style()

The following function:

  style = get_default_style()

gets the default style.

A style contains the graphics information needed by a widget to draw itself in its various states:

  STATE_NORMAL        # The state during normal operation.
  STATE_ACTIVE        # The widget is currently active, such as a button pushed
  STATE_PRELIGHT      # The mouse pointer is over the widget.
  STATE_SELECTED      # The widget is selected
  STATE_INSENSITIVE   # The widget is disabled

A style contains the following attributes:

  fg          # a list of 5 foreground colors - one for each state
  bg          # a list of 5 background colors
  light       # a list of 5 colors - created during set_style() method
  dark        # a list of 5 colors - created during set_style() method
  mid         # a list of 5 colors - created during set_style() method
  text        # a list of 5 colors
  base        # a list of 5 colors
  text_aa     # a list of 5 colors halfway between text/base
  
  black       # the black color
  white       # the white color
  font_desc   # the default pango font description

  xthickness  #
  ythickness  #

  fg_gc       # a list of 5 graphics contexts - created during set_style() method
  bg_gc       # a list of 5 graphics contexts - created during set_style() method
  light_gc    # a list of 5 graphics contexts - created during set_style() method
  dark_gc     # a list of 5 graphics contexts - created during set_style() method
  mid_gc      # a list of 5 graphics contexts - created during set_style() method
  text_gc     # a list of 5 graphics contexts - created during set_style() method
  base_gc     # a list of 5 graphics contexts - created during set_style() method
  black_gc    # a list of 5 graphics contexts - created during set_style() method
  white_gc    # a list of 5 graphics contexts - created during set_style() method

  bg_pixmap   # a list of 5 GdkPixmaps

Each attribute can be accessed directly similar to style.black and style.fg_gc[gtk.STATE_NORMAL]. All attributes are read-only except for style.black, style.white, style.black_gc and style.white_gc.

An existing style can be copied for later modification by using the method:

  new_style = style.copy()

which copies the style attributes except for the graphics context lists and the light, dark and mid color lists.

The current style of a widget can be retrieved with:

  style = widget.get_style()

To change the style of a widget (e.g. to change the widget foreground color), the following widget methods should be used:

  widget.modify_fg(state, color)
  widget.modify_bg(state, color)
  widget.modify_text(state, color)
  widget.modify_base(state, color)
  widget.modify_font(font_desc)
  widget.set_style(style)

Setting the style will allocate the style colors and create the graphics contexts. Most widgets will automatically redraw themselves after the style is changed. If style is None then the widget style will revert to the default style.

Not all style changes will affect the widget. For example, changing the Label (see Section 9.1, “Labels”) widget background color will not change the label background color because the Label widget does not have its own gtk.gdk.Window. The background of the label is dependent on the background color of the label's parent. The use of an EventBox to hold a Label will allow the Label background color to be set. See Section 10.1, “The EventBox” for an example.

pygtk2tutorial/sec-ColorSelection.html0100644000117200001670000002434710227356762017272 0ustar finlayfcf9.13. Color Selection

9.13. Color Selection

The color selection widget is, not surprisingly, a widget for interactive selection of colors. This composite widget lets the user select a color by manipulating RGB (Red, Green, Blue) and HSV (Hue, Saturation, Value) triples. This is done either by adjusting single values with sliders or entries, or by picking the desired color from a hue-saturation wheel/value bar. Optionally, the opacity of the color can also be set.

The color selection widget currently emits only one signal, "color_changed", which is emitted whenever the current color in the widget changes, either when the user changes it or if it's set explicitly through the set_color() method.

Lets have a look at what the color selection widget has to offer us. The widget comes in two flavors: gtk.ColorSelection and gtk.ColorSelectionDialog.

  colorsel = gtk.ColorSelection()

You'll probably not be using this constructor directly. It creates an orphan ColorSelection widget which you'll have to parent yourself. The ColorSelection widget inherits from the VBox widget.

  colorseldlg = gtk.ColorSelectionDialog(title)

where title is a string to be used in the titlebar of the dialog.

This is the most common color selection constructor. It creates a ColorSelectionDialog. It consists of a Frame containing a ColorSelection widget, an HSeparator and an HBox with three buttons, Ok, Cancel and Help. You can reach these buttons by accessing the ok_button, cancel_button and help_button attributes of the ColorSelectionDialog, (i.e. colorseldlg.ok_button). The ColorSelection widget is accessed using the attribute colorsel:

  colorsel = colorseldlg.colorsel

The ColorSelection widget has a number of methods that change its characteristics or provide access to the color selection.

  colorsel.set_has_opacity_control(has_opacity)

The color selection widget supports adjusting the opacity of a color (also known as the alpha channel). This is disabled by default. Calling this method with has_opacity set to TRUE enables opacity. Likewise, has_opacity set to FALSE will disable opacity.

  colorsel.set_current_color(color)
  colorsel.set_current_alpha(alpha)

You can set the current color explicitly by calling the set_current_color() method with a gtk.gdk.Color. Setting the opacity (alpha channel) is done with the set_current_alpha() method. The alpha value should be between 0 (fully transparent) and 65636 (fully opaque).

  color = colorsel.get_current_color()
  alpha = colorsel.get_current_alpha()

When you need to query the current color, typically when you've received a "color_changed" signal, you use these methods.

The colorsel.py example program demonstrates the use of the ColorSelectionDialog. The program displays a window containing a drawing area. Clicking on it opens a color selection dialog, and changing the color in the color selection dialog changes the background color. Figure 9.13, “Color Selection Dialog Example” illustrates this program in action:

Figure 9.13. Color Selection Dialog Example

Color Selection Dialog Example

The source code for colorsel.py is:

    1	#!/usr/bin/env python
    2	
    3	# example colorsel.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	
    9	class ColorSelectionExample:
   10	    # Color changed handler
   11	    def color_changed_cb(self, widget):
   12	        # Get drawingarea colormap
   13	        colormap = self.drawingarea.get_colormap()
   14	
   15	        # Get current color
   16	        color = self.colorseldlg.colorsel.get_current_color()
   17	
   18	        # Set window background color
   19	        self.drawingarea.modify_bg(gtk.STATE_NORMAL, color)
   20	
   21	    # Drawingarea event handler
   22	    def area_event(self, widget, event):
   23	        handled = False
   24	
   25	        # Check if we've received a button pressed event
   26	        if event.type == gtk.gdk.BUTTON_PRESS:
   27	            handled = True
   28	
   29	            # Create color selection dialog
   30	            if self.colorseldlg == None:
   31	                self.colorseldlg = gtk.ColorSelectionDialog(
   32	                    "Select background color")
   33	
   34	            # Get the ColorSelection widget
   35	            colorsel = self.colorseldlg.colorsel
   36	
   37	            colorsel.set_previous_color(self.color)
   38	            colorsel.set_current_color(self.color)
   39	            colorsel.set_has_palette(True)
   40	
   41	            # Connect to the "color_changed" signal
   42	            colorsel.connect("color_changed", self.color_changed_cb)
   43	            # Show the dialog
   44	            response = self.colorseldlg.run()
   45	
   46	            if response -- gtk.RESPONSE_OK:
   47	                self.color = colorsel.get_current_color()
   48	            else:
   49	                self.drawingarea.modify_bg(gtk.STATE_NORMAL, self.color)
   50	
   51	            self.colorseldlg.hide()
   52	
   53	        return handled
   54	
   55	    # Close down and exit handler
   56	    def destroy_window(self, widget, event):
   57	        gtk.main_quit()
   58	        return True
   59	
   60	    def __init__(self):
   61	        self.colorseldlg = None
   62	        # Create toplevel window, set title and policies
   63	        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   64	        window.set_title("Color selection test")
   65	        window.set_resizable(True)
   66	
   67	        # Attach to the "delete" and "destroy" events so we can exit
   68	        window.connect("delete_event", self.destroy_window)
   69	  
   70	        # Create drawingarea, set size and catch button events
   71	        self.drawingarea = gtk.DrawingArea()
   72	
   73	        self.color = self.drawingarea.get_colormap().alloc_color(0, 65535, 0)
   74	
   75	        self.drawingarea.set_size_request(200, 200)
   76	        self.drawingarea.set_events(gtk.gdk.BUTTON_PRESS_MASK)
   77	        self.drawingarea.connect("event",  self.area_event)
   78	  
   79	        # Add drawingarea to window, then show them both
   80	        window.add(self.drawingarea)
   81	        self.drawingarea.show()
   82	        window.show()
   83	  
   84	def main():
   85	    gtk.main()
   86	    return 0
   87	
   88	if __name__ == "__main__":
   89	    ColorSelectionExample()
   90	    main()
pygtk2tutorial/ch-Contributing.html0100644000117200001670000000462610227357004016621 0ustar finlayfcfChapter 26. Contributing

Chapter 26. Contributing

This document, like so much other great software out there, was created for free by volunteers. If you are at all knowledgeable about any aspect of PyGTK that does not already have documentation, please consider contributing to this document.

If you do decide to contribute, please mail your text to John Finlay (finlay@moeraki.com). Also, be aware that the entirety of this document is free, and any addition by you provide must also be free. That is, people may use any portion of your examples in their programs, and copies of this document may be distributed at will, etc.

Thank you.

pygtk2tutorial/ch-SettingWidgetAttributes.html0100644000117200001670000001147410227357001020776 0ustar finlayfcfChapter 18. Setting Widget Attributes

Chapter 18. Setting Widget Attributes

Table of Contents

18.1. Widget Flag Methods
18.2. Widget Display Methods
18.3. Widget Accelerators
18.4. Widget Name Methods
18.5. Widget Styles

This describes the methods used to operate on widgets (and objects). These can be used to set style, padding, size, etc.

The method:

  widget.activate()

causes the widget to emit the "activate" signal.

The method:

  widget.set_sensitive(sensitive)

sets the sensitivity of the widget (i.e. does it react to events). if sensitive is TRUE the widget will receive events; if FALSE the widget will not receive events. A widget that is insensitive is usually displayed "grayed out".

The method:

  widget.set_size_request(width, height)

sets the widget size to the given width and height.

18.1. Widget Flag Methods

The methods:

  widget.set_flags(flags)

  widget.unset_flags(flags)

  flags = widget.flags()

set, unset and get the gtk.Object and gtk.Widget flags. flags can be any of the standard flags:

  IN_DESTRUCTION
  FLOATING
  RESERVED_1
  RESERVED_2
  TOPLEVEL
  NO_WINDOW
  REALIZED
  MAPPED
  VISIBLE
  SENSITIVE
  PARENT_SENSITIVE
  CAN_FOCUS
  HAS_FOCUS
  CAN_DEFAULT
  HAS_DEFAULT
  HAS_GRAB
  RC_STYLE
  COMPOSITE_CHILD
  NO_REPARENT
  APP_PAINTABLE
  RECEIVES_DEFAULT
  DOUBLE_BUFFERED

The method:

  widget.grab_focus()

allows a widget to grab the focus assuming that it has the CAN_FOCUS flag set.

pygtk2tutorial/sec-Toolbar.html0100644000117200001670000004233310227356764015745 0ustar finlayfcf10.11. Toolbar

10.11. Toolbar

Toolbars are usually used to group some number of widgets in order to simplify customization of their look and layout. Typically a toolbar consists of buttons with icons, labels and tooltips, but any other widget can also be put inside a toolbar. Finally, items can be arranged horizontally or vertically and buttons can be displayed with icons, labels, or both.

Creating a toolbar is (as one may already suspect) done with the following function:

  toolbar = gtk.Toolbar()

After creating a toolbar one can append, prepend and insert items (that means simple text strings) or elements (that means any widget types) into the toolbar. To describe an item we need a label text, a tooltip text, a private tooltip text, an icon for the button and a callback for it. For example, to append or prepend an item you may use the following methods:

  toolbar.append_item(text, tooltip_text, tooltip_private_text, icon, callback, user_data=None)

  toolbar.prepend_item(text, tooltip_text, tooltip_private_text, icon, callback, user_data)

If you want to use the insert_item() method, the only additional parameter which must be specified is the position in which the item should be inserted, thus:

  toolbar.insert_item(text, tooltip_text, tooltip_private_text, icon, callback, 
                      user_data, position)

To simplify adding spaces between toolbar items, you may use the following methods:

  toolbar.append_space()

  toolbar.prepend_space()

  toolbar.insert_space(position)

If it's required, the orientation of a toolbar, its style and whether tooltips are available can be changed "on the fly" using the following methods:

  toolbar.set_orientation(orientation)

  toolbar.set_style(style)

  toolbar.set_tooltips(enable)

Where orientation is one of ORIENTATION_HORIZONTAL or ORIENTATION_VERTICAL. The style is used to set appearance of the toolbar items by using one of TOOLBAR_ICONS, TOOLBAR_TEXT, or TOOLBAR_BOTH. The enable argument is either TRUE or FALSE.

To show some other things that can be done with a toolbar, let's take the toolbar.py example program (we'll interrupt the listing with some additional explanations):

    1   #!/usr/bin/env python
    2
    3   # example toolbar.py
    4
    5   import pygtk
    6   pygtk.require('2.0')
    7   import gtk
    8
    9   class ToolbarExample:
   10       # This method is connected to the Close button or
   11       # closing the window from the WM
   12       def delete_event(self, widget, event=None):
   13           gtk.main_quit()
   14           return False
   15
 

The above beginning seems should be familiar to you if it's not your first PyGTK program. There is one additional thing though, we import a nice XPM picture (gtk.xpm)to serve as an icon for all of the buttons. Line 10 starts the ToolbarExample class and lines 12-14 define the callback method which will terminate the program.

   16       # that's easy... when one of the buttons is toggled, we just
   17       # check which one is active and set the style of the toolbar
   18       # accordingly
   19       def radio_event(self, widget, toolbar):
   20           if self.text_button.get_active():
   21               toolbar.set_style(gtk.TOOLBAR_TEXT)
   22           elif self.icon_button.get_active():
   23               toolbar.set_style(gtk.TOOLBAR_ICONS)
   24           elif self.both_button.get_active():
   25               toolbar.set_style(gtk.TOOLBAR_BOTH)
   26
   27       # even easier, just check given toggle button and enable/disable
   28       # tooltips
   29       def toggle_event(self, widget, toolbar):
   30           toolbar.set_tooltips(widget.get_active())
   31
 

Lines 19-30 are two callback methods that will be called when one of the buttons on a toolbar is pressed. You should already be familiar with things like this if you've already used toggle buttons (and radio buttons).

   32       def __init__(self):
   33           # Here is our main window (a dialog) and a handle for the handlebox
   34           # Ok, we need a toolbar, an icon with a mask (one for all of
   35           # the buttons) and an icon widget to put this icon in (but
   36           # we'll create a separate widget for each button)
   37           # create a new window with a given title, and nice size
   38           dialog = gtk.Dialog()
   39           dialog.set_title("GTKToolbar Tutorial")
   40           dialog.set_size_request(450, 250)
   41           dialog.set_resizable(True)
   42
   43           # typically we quit if someone tries to close us
   44           dialog.connect("delete_event", self.delete_event)
   45
   46           # to make it nice we'll put the toolbar into the handle box,
   47           # so that it can be detached from the main window
   48           handlebox = gtk.HandleBox()
   49           dialog.vbox.pack_start(handlebox, False, False, 5)
   50
 

The above should be similar to any other PyGTK application. Just initialization of a ToolbarExample object instance creating the window, etc. There is only one thing that probably needs some explanation: a handle box. A handle box is just another box that can be used to pack widgets in to. The difference between it and typical boxes is that it can be detached from a parent window (or, in fact, the handle box remains in the parent, but it is reduced to a very small rectangle, while all of its contents are reparented to a new freely floating window). It is usually nice to have a detachable toolbar, so these two widgets occur together quite often.

   51           # toolbar will be horizontal, with both icons and text, and
   52           # with 5pxl spaces between items and finally,
   53           # we'll also put it into our handlebox
   54           toolbar = gtk.Toolbar()
   55           toolbar.set_orientation(gtk.ORIENTATION_HORIZONTAL)
   56           toolbar.set_style(gtk.TOOLBAR_BOTH)
   57           toolbar.set_border_width(5)
   58           handlebox.add(toolbar)
   59
 

Well, what we do above is just a straightforward initialization of the toolbar widget.

   60           # our first item is <close> button
   61           iconw = gtk.Image() # icon widget
   62           iconw.set_from_file("gtk.xpm")
   63           close_button = toolbar.append_item(
   64               "Close",           # button label
   65               "Closes this app", # this button's tooltip
   66               "Private",         # tooltip private info
   67               iconw,             # icon widget
   68               self.delete_event) # a signal
   69           toolbar.append_space() # space after item
 

In the above code you see the simplest case: adding a button to toolbar. Just before appending a new item, we have to construct an image widget to serve as an icon for this item; this step will have to be repeated for each new item. Just after the item we also add a space, so the following items will not touch each other. As you see the append_item() method returns a reference to our newly created button widget, so that we can work with it in the normal way.

   71           # now, let's make our radio buttons group...
   72           iconw = gtk.Image() # icon widget
   73           iconw.set_from_file("gtk.xpm")
   74           icon_button = toolbar.append_element(
   75               gtk.TOOLBAR_CHILD_RADIOBUTTON, # type of element
   76               None,                          # widget
   77               "Icon",                        # label
   78               "Only icons in toolbar",       # tooltip
   79               "Private",                     # tooltip private string
   80               iconw,                         # icon
   81               self.radio_event,              # signal
   82               toolbar)                       # data for signal
   83           toolbar.append_space()
   84           self.icon_button = icon_button
   85
 

Here we begin creating a radio buttons group. To do this we use the append_element() method. In fact, using this method one can also add simple items or even spaces (type = gtk.TOOLBAR_CHILD_SPACE or gtk.TOOLBAR_CHILD_BUTTON). In the above case we start creating a radio group. In creating other radio buttons for this group a reference to the previous button in the group is required, so that a list of buttons can be easily constructed (see Section 6.4, “Radio Buttons” earlier in this tutorial). We also save a reference to the button in the ToolbarExample instance for later access.

   86           # following radio buttons refer to previous ones
   87           iconw = gtk.Image() # icon widget
   88           iconw.set_from_file("gtk.xpm")
   89           text_button = toolbar.append_element(
   90               gtk.TOOLBAR_CHILD_RADIOBUTTON,
   91               icon_button,
   92               "Text",
   93               "Only texts in toolbar",
   94               "Private",
   95               iconw,
   96               self.radio_event,
   97               toolbar)
   98           toolbar.append_space()
   99           self.text_button = text_button
  100
  101           iconw = gtk.Image() # icon widget
  102           iconw.set_from_file("gtk.xpm")
  103           both_button = toolbar.append_element(
  104               gtk.TOOLBAR_CHILD_RADIOBUTTON,
  105               text_button,
  106               "Both",
  107               "Icons and text in toolbar",
  108               "Private",
  109               iconw,
  110               self.radio_event,
  111               toolbar)
  112           toolbar.append_space()
  113           self.both_button = both_button
  114           both_button.set_active(True)
  115
 

We create the other radiobuttons the same way except we pass one of the created radio group buttons to the append_element() method to specify the radio group.

In the end we have to set the state of one of the buttons manually (otherwise they all stay in active state, preventing us from switching between them).

  116           # here we have just a simple toggle button
  117           iconw = gtk.Image() # icon widget
  118           iconw.set_from_file("gtk.xpm")
  119           tooltips_button = toolbar.append_element(
  120               gtk.TOOLBAR_CHILD_TOGGLEBUTTON,
  121               None,
  122               "Tooltips",
  123               "Toolbar with or without tips",
  124               "Private",
  125               iconw,
  126               self.toggle_event,
  127               toolbar)
  128           toolbar.append_space()
  129           tooltips_button.set_active(True)
  130
 

A toggle button can be created in the obvious way (if one knows how to create radio buttons already).

  131           # to pack a widget into toolbar, we only have to
  132           # create it and append it with an appropriate tooltip
  133           entry = gtk.Entry()
  134           toolbar.append_widget(entry,  "This is just an entry", "Private")
  135
  136           # well, it isn't created within the toolbar, so we must still show it
  137           entry.show()
  138
 

As you see, adding any kind of widget to a toolbar is simple. The one thing you have to remember is that this widget must be shown manually (contrary to items which will be shown together with the toolbar).

  139           # that's it ! let's show everything.
  140           toolbar.show()
  141           handlebox.show()
  142           dialog.show()
  143
  144   def main():
  145       # rest in gtk_main and wait for the fun to begin!
  146       gtk.main()
  147       return 0
  148
  149   if __name__ == "__main__":
  150       ToolbarExample()
  151       main()

Line 142 ends the ToolbarExample class definition. Lines 144-147 define the main() function which just calls the gtk.main() function to start the event processing loop. Lines 149-151 arrange to create a ToolbarExample instance and then enter the event processing loop. So, here we are at the end of toolbar tutorial. Of course, to appreciate it in full you need also this nice XPM icon, gtk.xpm. Figure 10.8, “Toolbar Example” illustrates the resulting display:

Figure 10.8. Toolbar Example

Toolbar Example
pygtk2tutorial/ch-NewInPyGTK2.2.html0100644000117200001670000004475110227356773016312 0ustar finlayfcfChapter 15. New Widgets in PyGTK 2.2

Chapter 15. New Widgets in PyGTK 2.2

Table of Contents

15.1. Clipboards
15.1.1. Creating A Clipboard
15.1.2. Using Clipboards with Entry, Spinbutton and TextView
15.1.3. Setting Data on a Clipboard
15.1.4. Retrieving the Clipboard Contents
15.1.5. A Clipboard Example

The Clipboard object was added in PyGTK 2.2. The GtkClipboard was available in GTK+ 2.0 but was not wrapped by PyGTK 2.0 because it was not a complete GObject. Some new objects were added to the gtk.gdk module in PyGTK 2.2 but they will not be described in this tutorial. See the PyGTK 2 Reference Manual for more information on the gtk.gdk.Display, gtk.gdk.DisplayManager and gtk.gdk.Screen objects.

15.1. Clipboards

A Clipboard provides a storage area for sharing data between processes or between different widgets in the same process. Each Clipboard is identified by a string name encoded as a gdk.Atom. You can use any name you want to identify a Clipboard and a new one will be created if it doesn't exist. If you want to share a Clipboard with other processes each process will need to know the Clipboard's name.

Clipboards are built on the SelectionData and selection interfaces. The default Clipboard used by the TextView, Label and Entry widgets is "CLIPBOARD". Other common clipboards are "PRIMARY" and "SECONDARY" that correspond to the primary and secondary selections (Win32 ignores these). These can also be specified using the gtk.gdk.Atom objects: gtk.gdk.SELECTION_CLIPBOARD, gtk.gdk.SELECTION_PRIMARY and gtk.gdk.SELECTION_SECONDARY. See the gtk.gdk.Atom reference documentation for more information.

15.1.1. Creating A Clipboard

A Clipboard is created using the constructor:

  clipboard = gtk.Clipboard(display, selection)

where display is the gtk.gdk.Display associated with the Clipboard named by selection. The following convenience function creates a Clipboard using the default gtk.gdk.Display:

  clipboard = gtk.clipboard_get(selection)

Finally, a Clipboard can also be created using the Widget method:

  clipboard = widget.get_clipboard(selection)

The widget must be realized and be part of a toplevel window hierarchy.

15.1.2. Using Clipboards with Entry, Spinbutton and TextView

Entry, SpinButton and TextView widgets have popup menus that provide the ability to cut and copy the selected text to and paste from the "CLIPBOARD" clipboard. In addition key bindings are set to allow keyboard accelerators to cut, copy and paste. Cut is activated by Control+X; copy, by Control+C; and, paste, by Control+V.

The widgets (Entry and SpinButton) implement the Editable interface that has the following methods to cut, copy and paste to and from the "CLIPBOARD" clipboard:

  editable.cut_clipboard()
  editable.copy_clipboard()
  editable.paste_clipboard()

A Label that is selectable (the "selectable" property is TRUE) also supports copying the selected text to the "CLIPBOARD" clipboard using a popup menu or the Control+C keyboard accelerator.

TextBuffers have similar methods though they also allow specifying the clipboard to use:

  textbuffer.copy_clipboard(clipboard)

The selection text will be copied to the Clipboard specified by clipboard.

  textbuffer.cut_clipboard(clipboard, default_editable)

The selected text will be copied to clipboard. If default_editable is TRUE the selected text will also be deleted from the TextBuffer. Otherwise, cut_clipboard() will act like the copy_clipboard() method.

  textbuffer.paste_clipboard(clipboard, override_location, default_editable)

If default_editable is TRUE, the contents of clipboard will be inserted into the TextBuffer at the location specified by the TextIter override_location. If default_editable is FALSE, paste_clipboard() will not insert the contents of clipboard. If override_location is None the contents of clipboard will be inserted at the cursor location.

TextBuffers also have two methods to manage a set of Clipboards that are automatically set with the contents of the current selection:

  textbuffer.add_selection_clipboard(clipboard)
  textbuffer.remove_selection_clipboard(clipboard)

When a TextBuffer is added to a TextView the "PRIMARY" clipboard is automatically added to the selection clipboards. Your application can add other clipboards (for example, the "CLIPBOARD" clipboard).

15.1.3. Setting Data on a Clipboard

You can set the Clipboard data programmatically using either of:

  clipboard.set_with_data(targets, get_func, clear_func, user_data)

  clipboard.set_text(text, len=-1)

The set_with_data() method indicates which selection data targets are supported and provides functions (get_func and clear_func) that are called when the data is asked for or the clipboard data is changed. user_data is passed to get_func or clear_func when called. targets is a list of 3-tuples containing:

  • a string representing a target supported by the clipboard.
  • a flags value used for drag and drop - use 0.
  • an application assigned integer that is passed as a parameter to a signal handler to help identify the target type.

The signatures of get_func and clear_func are:

  def get_func(clipboard, selectiondata, info, data):

  def clear_func(clipboard, data):

where clipboard is the Clipboard, selectiondata is a SelectionData object to set the data in, info is the application assigned integer associated with a target, and data is user_data.

set_text() is a convenience method that uses the set_with_data() method to set text data on a Clipboard with the targets: "STRING", "TEXT", "COMPOUND_TEXT", and "UTF8_STRING". It uses internal get and clear functions to manage the data. set_text() is equivalent to the following:

  def my_set_text(self, text, len=-1):
      targets = [ ("STRING", 0, 0),
                  ("TEXT", 0, 1),
                  ("COMPOUND_TEXT", 0, 2),
                  ("UTF8_STRING", 0, 3) ]
      def text_get_func(clipboard, selectiondata, info, data):
          selectiondata.set_text(data)
          return
      def text_clear_func(clipboard, data):
          del data
          return
      self.set_with_data(targets, text_get_func, text_clear_func, text)
      return

Once data is set on a clipboard, it will be available until the application is finished or the clipboard data is changed.

To provide the behavior typical of cut to a clipboard, your application will have to delete the selected text or object after copying it to the clipboard.

15.1.4. Retrieving the Clipboard Contents

The contents of a Clipboard can be retrieved using the following method:

  clipboard.request_contents(target, callback, user_data=None)

The contents specified by target are retrieved asynchronously in the function specified by callback which is called with user_data. The signature of callback is:

  def callback(clipboard, selectiondata, data):

where selectiondata is a SelectionData object containing the contents of clipboard. data is user_data. The request_contents() method is the most general way of retrieving the contents of a Clipboard. The following convenience method retrieves the text contents of a Clipboard:

  clipboard.request_text(callback, user_data=None)

The text string is returned to the callback function instead of a Selectiondata object. You can check which targets are available on the Clipboard by using the method:

  clipboard.request_targets(callback, user_data=None)

The targets are returned as a tuple of gtk.gdk.Atom objects to the callback function.

Two convenience methods are provided to return the Clipboard contents synchronously:

  selectiondata = clipboard.wait_for_contents(target)

  text = clipboard.wait_for_text()

15.1.5. A Clipboard Example

To illustrate the use of a Clipboard the clipboard.py example program tracks the text items that are cut or copied to the "CLIPBOARD" clipboard and saves the last ten clipboard entries. There are ten buttons that provide access to the text of the saved entries. The button label display the first sixteen characters of the saved text and the tooltips display the targets that the entry originally had. When an entry button is clicked the text window is loaded with the associated saved text which is editable. The button below the text window saves the current text window contents to the clipboard.

Figure 15.1, “Clipboard Example Program” illustrates the clipboard.py example program in operation:

Figure 15.1. Clipboard Example Program

Clipboard Example Program

The example program polls the clipboard every 1.5 seconds to see if the contents have changed. The program could be changed to duplicate the complete set of target contents and then take ownership of the clipboard using the set_with_data() method. Later, when another program sets the contents of the clipboard, the clear_func will be called and it can be used to reload the clipboard contents and retake the clipboard ownership.

pygtk2tutorial/sec-OptionMenu.html0100644000117200001670000000342510227356777016443 0ustar finlayfcf17.2. Option Menu

17.2. Option Menu

pygtk2tutorial/sec-TextViewExample.html0100644000117200001670000001735110227356766017442 0ustar finlayfcf13.7. A TextView Example

13.7. A TextView Example

The testtext.py example program (derived from the testtext.c program included in the GTK+ 2.0.x distribution) demonstrates the use of the TextView widget and its associated objects: TextBuffers, TextIters, TextMarks, TextTags, TextTagTables. Figure 13.2, “TextView Example” illustrates its operation:

Figure 13.2. TextView Example

TextView Example

The testtext.py program defines a number of classes in addition to the application class TestText:

The color cycle display is implemented by using text tags applied to a section of text in a buffer. Lines 109-115 (in the __init__() method) create these tags and lines 763-784 (do_apply_colors() method) apply the color tags to a section of text two characters at a time. Lines 202-239 provide the methods (color_cycle_timeout(), set_colors() and cycle_colors()) that produce the color cycle display when enabled. Color cycling is enabled by setting (line 220) the foreground_gdk property of the individual color_tags (which also sets the foreground_set property). Color cycling is disabled by setting the foreground_set property to FALSE (line 222). The colors are periodically changed by shifting the start_hue (line 237)

A new Buffer is filled with example content when the Test->Example menu item is selected (the fill_example_buffer() method in lines 302-372). The example buffer contains text of various colors, styles and languages and pixbufs. The init_tags() method (lines 260-300) sets up a variety of TextTags for use with the example text. The event signal of these tags is connected to the tag_event_handler() method (lines 241-256) to illustrate button and motion event capture.

The TextView wrap mode is set to WRAP_WORD (line 580) and the TextView border windows are displayed by setting their sizes in lines 587-588 and line 596-597. The left and right border windows are used to display line numbers and the top and bottom border windows display the tab locations when custom tabs are set. The border windows are updated when an "expose-event" signal is received by the TextView (lines 590 and 599). The line_numbers_expose() method (lines 1079-1116) determines whether the left or right border window has an expose event and if so calculates the size of the expose area. Then the location of the line start and the line number for each line in the exposed area is calculated in the get_lines() method (lines 1057-1077). The line numbers are then drawn in the border window at the location (transformed by line 1109).

The custom tab locations are displayed in the top and bottom border windows in a similar fashion (lines 1013-1055). They are displayed only when the cursor is moved inside a range of text that has the custom tab attribute set. This is detected by handling the "mark-set" signal in the cursor_set_handler() method (lines 999-1011) and invalidating the top and bottom border windows if the mark set is the insert mark.

Movable widgets are added to a View with the do_add_children() method (lines 892-899) which calls the add_movable_children() method (lines 874-890). The children are gtk.Labels that can be dragged around inside the various windows that are part of a TextView widget.

Likewise, widgets are added to the TextView windows of a View and the Buffer by using the do_add_focus_children() method (lines 901-949).

pygtk2tutorial/sec-ProgressBars.html0100644000117200001670000002703110227356761016752 0ustar finlayfcf9.4. Progress Bars

9.4. Progress Bars

Progress bars are used to show the status of an operation. They are pretty easy to use, as you will see with the code below. But first lets start out with the call to create a new progress bar.

  progressbar = gtk.ProgressBar(adjustment=None)

The adjustment argument specifies an adjustment to use with the progressbar. If not specified an adjustment will be created. Now that the progress bar has been created we can use it.

  progressbar.set_fraction(fraction) 

The progressbar object is the progress bar you wish to operate on, and the argument (fraction) is the amount "completed", meaning the amount the progress bar has been filled from 0-100%. This is passed to the method as a real number ranging from 0 to 1.

A progress bar may be set to one of a number of orientations using the method:

  progressbar.set_orientation(orientation) 

The orientation argument may take one of the following values to indicate the direction in which the progress bar moves:

  PROGRESS_LEFT_TO_RIGHT
  PROGRESS_RIGHT_TO_LEFT
  PROGRESS_BOTTOM_TO_TOP
  PROGRESS_TOP_TO_BOTTOM

As well as indicating the amount of progress that has occurred, the progress bar may be set to just indicate that there is some activity. This can be useful in situations where progress cannot be measured against a value range. The following function indicates that some progress has been made.

  progressbar.pulse()

The step size of the activity indicator is set using the following function where fraction is between 0.0 and 1.0.

  progressbar.set_pulse_step(fraction)

When not in activity mode, the progress bar can also display a configurable text string within its trough, using the following method:

  progressbar.set_text(text)

Note

Note that set_text() doesn't support the printf()-like formatting of the GTK+ 1.2 Progressbar.

You can turn off the display of the string by calling set_text() again with no argument.

The current text setting of a progressbar can be retrieved with the following method:

  text = progressbar.get_text()

Progress Bars are usually used with timeouts or other such functions (see Chapter 19, Timeouts, IO and Idle Functions) to give the illusion of multitasking. All will employ the set_fraction() or pulse() methods in the same manner.

The progressbar.py program provides an example of the progress bar, updated using timeouts. This code also shows you how to reset the Progress Bar. Figure 9.4, “ProgressBar Example” illustrates the resulting display:

Figure 9.4. ProgressBar Example

ProgressBar Example

The source code for progressbar.py is:

    1	#!/usr/bin/env python
    2	
    3	# example progressbar.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk, gobject
    8	
    9	# Update the value of the progress bar so that we get
   10	# some movement
   11	def progress_timeout(pbobj):
   12	    if pbobj.activity_check.get_active():
   13	        pbobj.pbar.pulse()
   14	    else:
   15	        # Calculate the value of the progress bar using the
   16	        # value range set in the adjustment object
   17	        new_val = pbobj.pbar.get_fraction() + 0.01
   18	        if new_val > 1.0:
   19	            new_val = 0.0
   20	        # Set the new value
   21	        pbobj.pbar.set_fraction(new_val)
   22	
   23	    # As this is a timeout function, return TRUE so that it
   24	    # continues to get called
   25	    return True
   26	
   27	class ProgressBar:
   28	    # Callback that toggles the text display within the progress
   29	    # bar trough
   30	    def toggle_show_text(self, widget, data=None):
   31	        if widget.get_active():
   32	            self.pbar.set_text("some text")
   33	        else:
   34	            self.pbar.set_text("")
   35	
   36	    # Callback that toggles the activity mode of the progress
   37	    # bar
   38	    def toggle_activity_mode(self, widget, data=None):
   39	        if widget.get_active():
   40	            self.pbar.pulse()
   41	        else:
   42	            self.pbar.set_fraction(0.0)
   43	
   44	    # Callback that toggles the orientation of the progress bar
   45	    def toggle_orientation(self, widget, data=None):
   46	        if self.pbar.get_orientation() == gtk.PROGRESS_LEFT_TO_RIGHT:
   47	            self.pbar.set_orientation(gtk.PROGRESS_RIGHT_TO_LEFT)
   48	        elif self.pbar.get_orientation() == gtk.PROGRESS_RIGHT_TO_LEFT:
   49	            self.pbar.set_orientation(gtk.PROGRESS_LEFT_TO_RIGHT)
   50	
   51	    # Clean up allocated memory and remove the timer
   52	    def destroy_progress(self, widget, data=None):
   53	        gobject.source_remove(self.timer)
   54	        self.timer = 0
   55	        gtk.main_quit()
   56	
   57	    def __init__(self):
   58	        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   59	        self.window.set_resizable(True)
   60	
   61	        self.window.connect("destroy", self.destroy_progress)
   62	        self.window.set_title("ProgressBar")
   63	        self.window.set_border_width(0)
   64	
   65	        vbox = gtk.VBox(False, 5)
   66	        vbox.set_border_width(10)
   67	        self.window.add(vbox)
   68	        vbox.show()
   69	  
   70	        # Create a centering alignment object
   71	        align = gtk.Alignment(0.5, 0.5, 0, 0)
   72	        vbox.pack_start(align, False, False, 5)
   73	        align.show()
   74	
   75	        # Create the ProgressBar
   76	        self.pbar = gtk.ProgressBar()
   77	
   78	        align.add(self.pbar)
   79	        self.pbar.show()
   80	
   81	        # Add a timer callback to update the value of the progress bar
   82	        self.timer = gobject.timeout_add (100, progress_timeout, self)
   83	
   84	        separator = gtk.HSeparator()
   85	        vbox.pack_start(separator, False, False, 0)
   86	        separator.show()
   87	
   88	        # rows, columns, homogeneous
   89	        table = gtk.Table(2, 2, False)
   90	        vbox.pack_start(table, False, True, 0)
   91	        table.show()
   92	
   93	        # Add a check button to select displaying of the trough text
   94	        check = gtk.CheckButton("Show text")
   95	        table.attach(check, 0, 1, 0, 1,
   96	                     gtk.EXPAND | gtk.FILL, gtk.EXPAND | gtk.FILL,
   97	                     5, 5)
   98	        check.connect("clicked", self.toggle_show_text)
   99	        check.show()
  100	
  101	        # Add a check button to toggle activity mode
  102	        self.activity_check = check = gtk.CheckButton("Activity mode")
  103	        table.attach(check, 0, 1, 1, 2,
  104	                     gtk.EXPAND | gtk.FILL, gtk.EXPAND | gtk.FILL,
  105	                     5, 5)
  106	        check.connect("clicked", self.toggle_activity_mode)
  107	        check.show()
  108	
  109	        # Add a check button to toggle orientation
  110	        check = gtk.CheckButton("Right to Left")
  111	        table.attach(check, 0, 1, 2, 3,
  112	                     gtk.EXPAND | gtk.FILL, gtk.EXPAND | gtk.FILL,
  113	                     5, 5)
  114	        check.connect("clicked", self.toggle_orientation)
  115	        check.show()
  116	
  117	        # Add a button to exit the program
  118	        button = gtk.Button("close")
  119	        button.connect("clicked", self.destroy_progress)
  120	        vbox.pack_start(button, False, False, 0)
  121	
  122	        # This makes it so the button is the default.
  123	        button.set_flags(gtk.CAN_DEFAULT)
  124	
  125	        # This grabs this button to be the default button. Simply hitting
  126	        # the "Enter" key will cause this button to activate.
  127	        button.grab_default ()
  128	        button.show()
  129	
  130	        self.window.show()
  131	
  132	def main():
  133	    gtk.main()
  134	    return 0
  135	
  136	if __name__ == "__main__":
  137	    ProgressBar()
  138	    main()
pygtk2tutorial/ch-UndocumentedWidgets.html0100644000117200001670000000702310227357000020121 0ustar finlayfcfChapter 17. Undocumented Widgets

Chapter 17. Undocumented Widgets

Table of Contents

17.1. Accel Label
17.2. Option Menu
17.3. Menu Items
17.3.1. Check Menu Item
17.3.2. Radio Menu Item
17.3.3. Separator Menu Item
17.3.4. Tearoff Menu Item
17.4. Curves
17.5. Message Dialog
17.6. Gamma Curve

These all require authors! :) Please consider contributing to our tutorial.

If you must use one of these widgets that are undocumented, I strongly suggest you take a look at the *.c files in the PyGTK distribution. PyGTK's method names are very descriptive. Once you have an understanding of how things work, it's not difficult to figure out how to use a widget simply by looking at its method definitions. This, along with a few examples from others' code, and it should be no problem.

When you do come to understand all the methods of a new undocumented widget, please consider writing a tutorial on it so others may benefit from your time.

17.1. Accel Label

pygtk2tutorial/sec-TextMarks.html0100644000117200001670000001022610227356766016263 0ustar finlayfcf13.5. Text Marks

13.5. Text Marks

A TextMark indicates a location in a TextBuffer between two characters that is preserved across buffer modifications. TextMarks are created, moved and deleted using the TextBuffer methods as described in the TextBuffer section.

A TextBuffer has two built-in TextMarks named: insert and selection_bound which refer to the insertion point and the boundary of the selection (these may refer to the same location).

The name of a TextMark can be retrieved using the method:

  name = textmark.get_name()

By default marks other than insert are not visible (displayed as a vertical bar). The visibility of a mark can be set and retrieved using the methods:

  setting = textmark.get_visible()

  textmark.set_visible(setting)

where setting is TRUE if the mark is visible.

The TextBuffer that contains a TextMark can be obtained using the method:

  buffer = textmark.get_buffer()

You can determine whether a TextMark has been deleted using the method:

  setting = textmark.get_deleted()

The left gravity of a TextMark can be retrieved using the method:

  setting = textmark.get_left_gravity()

The left gravity of a TextMark indicates where the mark will end up after an insertion. If left gravity is TRUE the mark will be to the left of the insertion; if FALSE, to the right of the insertion.

pygtk2tutorial/sec-GtkHandleBox.html0100644000117200001670000000362110227357007016641 0ustar finlayfcfA.14. GtkHandleBox

A.14. GtkHandleBox

child-attached(handle_box, widget, data)

child-detached(handle_box, widget, data)
pygtk2tutorial/sec-GtkItem.html0100644000117200001670000000351110227357006015670 0ustar finlayfcfA.12. GtkItem

A.12. GtkItem

select(item, data)

deselect(item, data)

toggle(item, data)
pygtk2tutorial/sec-Viewports.html0100644000117200001670000000770710227356763016352 0ustar finlayfcf10.8. Viewports

10.8. Viewports

It is unlikely that you will ever need to use the Viewport widget directly. You are much more likely to use the ScrolledWindow widget *see Section 10.9, “Scrolled Windows”) which in turn uses the Viewport.

A viewport widget allows you to place a larger widget within it such that you can view a part of it at a time. It uses Adjustment object (see Chapter 7, Adjustments) to define the area that is currently in view.

A Viewport is created with the function:

  viewport = gtk.Viewport(hadjustment=None, vadjustment=None)

As you can see you can specify the horizontal and vertical Adjustment objects that the widget is to use when you create the widget. It will create its own if you pass None as the value of the arguments or pass no arguments.

You can get and set the adjustments after the widget has been created using the following four methods:

  viewport.get_hadjustment()

  viewport.get_vadjustment()

  viewport.set_hadjustment(adjustment)

  viewport.set_vadjustment(adjustment)

The only other viewport method is used to alter its appearance:

  viewport.set_shadow_type(type)

Possible values for the type parameter are:

  SHADOW_NONE
  SHADOW_IN
  SHADOW_OUT
  SHADOW_ETCHED_IN
  SHADOW_ETCHED_OUT
pygtk2tutorial/sec-TooltipsObject.html0100644000117200001670000001617610227356761017312 0ustar finlayfcf9.3. The Tooltips Object

9.3. The Tooltips Object

Tooltips are the little text strings that pop up when you leave your pointer over a button or other widget for a few seconds.

Widgets that do not receive events (widgets that do not have their own window) will not work with tooltips.

The first call you will use creates a new tooltip. You only need to do this once for a set of tooltips as the gtk.Tooltips object this function returns can be used to create multiple tooltips.

  tooltips = gtk.Tooltips()

Once you have created a new tooltip, and the widget you wish to use it on, simply use this call to set it:

  tooltips.set_tip(widget, tip_text, tip_private=None)

The object tooltips is the tooltip you've already created. The first argument (widget) is the widget you wish to have this tooltip pop up for; the second (tip_text), the text you wish it to display. The last argument (tip_private) is a text string that can be used as an identifier.

The tooltip.py example program modifies the arrow.py program to add a tooltip for each button. Figure 9.3, “Tooltips Example” illustrates the resulting display with the tooltip for the second arrow button displayed:

Figure 9.3. Tooltips Example

Tooltips Example

The source code for tooltip.py is:

    1	#!/usr/bin/env python
    2	
    3	# example tooltip.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	
    9	# Create an Arrow widget with the specified parameters
   10	# and pack it into a button
   11	def create_arrow_button(arrow_type, shadow_type):
   12	    button = gtk.Button()
   13	    arrow = gtk.Arrow(arrow_type, shadow_type)
   14	    button.add(arrow)
   15	    button.show()
   16	    arrow.show()
   17	    return button
   18	
   19	class Tooltips:
   20	    def __init__(self):
   21	        # Create a new window
   22	        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   23	
   24	        window.set_title("Tooltips")
   25	
   26	        # It's a good idea to do this for all windows.
   27	        window.connect("destroy", lambda w: gtk.main_quit())
   28	
   29	        # Sets the border width of the window.
   30	        window.set_border_width(10)
   31	
   32	        # Create a box to hold the arrows/buttons
   33	        box = gtk.HBox(False, 0)
   34	        box.set_border_width(2)
   35	        window.add(box)
   36	
   37	        # create a tooltips object
   38	        self.tooltips = gtk.Tooltips()
   39	
   40	        # Pack and show all our widgets
   41	        box.show()
   42	
   43	        button = create_arrow_button(gtk.ARROW_UP, gtk.SHADOW_IN)
   44	        box.pack_start(button, False, False, 3)
   45	        self.tooltips.set_tip(button, "SHADOW_IN")
   46	
   47	        button = create_arrow_button(gtk.ARROW_DOWN, gtk.SHADOW_OUT)
   48	        box.pack_start(button, False, False, 3)
   49	        self.tooltips.set_tip(button, "SHADOW_OUT")
   50	  
   51	        button = create_arrow_button(gtk.ARROW_LEFT, gtk.SHADOW_ETCHED_IN)
   52	        box.pack_start(button, False, False, 3)
   53	        self.tooltips.set_tip(button, "SHADOW_ETCHED_IN")
   54	  
   55	        button = create_arrow_button(gtk.ARROW_RIGHT, gtk.SHADOW_ETCHED_OUT)
   56	        box.pack_start(button, False, False, 3)
   57	        self.tooltips.set_tip(button, "SHADOW_ETCHED_OUT")
   58	
   59	        window.show()
   60	
   61	def main():
   62	    gtk.main()
   63	    return 0
   64	
   65	if __name__ == "__main__":
   66	    tt = Tooltips()
   67	    main()

There are other methods that can be used with tooltips. I will just list them with a brief description of what they do.

  tooltips.enable()

Enable a disabled set of tooltips.

  tooltips.disable()

Disable an enabled set of tooltips.

  tooltips.set_delay(delay)

Sets how many milliseconds you have to hold your pointer over the widget before the tooltip will pop up. The default is 500 milliseconds (half a second).

And that's all the methods associated with tooltips. More than you'll ever want to know :-)

pygtk2tutorial/ch-TextViewWidget.html0100644000117200001670000002036510227356766017111 0ustar finlayfcfChapter 13. TextView Widget

Chapter 13. TextView Widget

Table of Contents

13.1. TextView Overview
13.2. TextViews
13.3. Text Buffers
13.3.1. TextBuffer Status Information
13.3.2. Creating TextIters
13.3.3. Text Insertion, Retrieval and Deletion
13.3.4. TextMarks
13.3.5. Creating and Applying TextTags
13.3.6. Inserting Images and Widgets
13.4. Text Iters
13.4.1. TextIter Attributes
13.4.2. Text Attributes at a TextIter
13.4.3. Copying a TextIter
13.4.4. Retrieving Text and Objects
13.4.5. Checking Conditions at a TextIter
13.4.6. Checking Location in Text
13.4.7. Moving Through Text
13.4.8. Moving to a Specific Location
13.4.9. Searching in Text
13.5. Text Marks
13.6. Text Tags and Tag Tables
13.6.1. Text Tags
13.6.2. Text Tag Tables
13.7. A TextView Example

13.1. TextView Overview

TextView widgets and their associated objects (TextBuffers, TextMarks, TextIters, TextTags and TextTagTables) provide a powerful framework for multiline text editing.

A TextBuffer (see Section 13.3, “Text Buffers”) contains the text which is displayed by one or more TextView widgets.

Within GTK+ 2.0, text is encoded in UTF-8 which means that one character may be encoded as multiple bytes. Within a TextBuffer it is necessary to differentiate between the character counts (called offsets) and the byte counts (called indexes).

TextIters provide a volatile representation of the position in a TextBuffer between two characters. TextIters are valid until the number of characters in the TextBuffer changes; i.e. any time characters are inserted or deleted from a TextBuffer all TextIters will become invalid. TextIters are the primary way to specify locations in a TextBuffer for manipulating text.

TextMarks are provided to allow preservation of TextBuffer positions across buffer modifications. A mark is like a TextIter (see Section 13.4, “Text Iters”) in that it represents a position between two characters in a TextBuffer) but if the text surrounding the mark is deleted the mark remains where the deleted text once was. Likewise, if text is inserted at the mark the mark ends up either to the left or right of the inserted text depending on the gravity of the mark - right gravity leaves the mark to the right of the inserted text while left gravity leaves it to the left. TextMarks (see Section 13.5, “Text Marks”) may be named or anonymous if not given a name. Each TextBuffer has two predefined named TextMarks (see Section 13.5, “Text Marks”) called insert and selection_bound. These refer to the insertion point and the boundary of the selection (the selection is between the insert and the selection_bound marks).

TextTags (see Section 13.6.1, “Text Tags”) are objects that specify a set of attributes that can be applied to a range of text in a TextBuffer. Each TextBuffer has a TextTagTable (see Section 13.6.2, “Text Tag Tables”) which contains the tags that are available in that buffer. TextTagTables can be shared between TextBuffers to provide commonality. TextTags are generally used to change the appearance of a range of text but can also be used to prevent a range of text from being edited.

pygtk2tutorial/sec-WidgetDisplayMethods.html0100644000117200001670000000662310227357000020422 0ustar finlayfcf18.2. Widget Display Methods

18.2. Widget Display Methods

The methods:

  widget.show()
  
  widget.show_all()
  
  widget.hide()
  
  widget.hide_all()
  
  widget.realize()
  
  widget.unrealize()
  
  widget.map()
  
  widget.unmap()

manage the display of the widget.

The show() method arranges to display the widget by using the realize() and map() methods.

The hide() method arranges to remove the widget from the display and also unmaps it using the unmap() method if necessary.

The show_all() and hide_all() methods arrange to show or hide the widget and all its children.

The realize() method arranges to allocate resources to the widget including its window.

The unrealize() method releases the widget window and other resources. Unrealizing a widget will also hide and unmap it.

The map() method arranges to allocate space on the display for the widget; this only applies to widgets that need to be handled by the window manager. Mapping a widget will also cause it to be realized if necessary.

The unmap() method removes a widget from the display and will also hide it if necessary.

pygtk2tutorial/sec-Calendar.html0100644000117200001670000004253410227356762016055 0ustar finlayfcf9.12. Calendar

9.12. Calendar

The Calendar widget is an effective way to display and retrieve monthly date related information. It is a very simple widget to create and work with.

Creating a gtk.Calendar widget is as simple as:

  calendar = gtk.Calendar()

The calendar will display the current month and year by default.

There might be times where you need to change a lot of information within this widget and the following methods allow you to make multiple changes to a Calendar widget without the user seeing multiple on-screen updates.

  calendar.freeze()

  calendar.thaw()

They work just like the freeze/thaw methods of every other widget.

The Calendar widget has a few options that allow you to change the way the widget both looks and operates by using the method:

  calendar.display_options(flags)

The flags argument can be formed by combining either of the following five options using the logical bitwise OR (|) operation:

CALENDAR_SHOW_HEADINGthis option specifies that the month and year should be shown when drawing the calendar.
CALENDAR_SHOW_DAY_NAMESthis option specifies that the three letter descriptions should be displayed for each day (e.g. Mon,Tue, etc.).
CALENDAR_NO_MONTH_CHANGEthis option states that the user should not and can not change the currently displayed month. This can be good if you only need to display a particular month such as if you are displaying 12 calendar widgets for every month in a particular year.
CALENDAR_SHOW_WEEK_NUMBERSthis option specifies that the number for each week should be displayed down the left side of the calendar. (e.g. Jan 1 = Week 1,Dec 31 = Week 52).
CALENDAR_WEEK_START_MONDAYthis option states that the calender week will start on Monday instead of Sunday which is the default. This only affects the order in which days are displayed from left to right. Note that in PyGTK 2.4 and above this option is deprecated.

The following methods are used to set the the currently displayed date:

  result = calendar.select_month(month, year)

  calendar.select_day(day)

The return value from the select_month() method is a boolean value indicating whether the selection was successful.

With the select_day() method the specified day number is selected within the current month, if that is possible. A day value of 0 will deselect any current selection.

In addition to having a day selected, any number of days in the month may be "marked". A marked day is highlighted within the calendar display. The following methods are provided to manipulate marked days:

  result = calendar.mark_day(day)

  result = calendar.unmark_day(day)

  calendar.clear_marks()

mark_day() and unmark_day() return a boolean indicating whether the method was successful. Note that marks are persistent across month and year changes.

The final Calendar widget method is used to retrieve the currently selected date, month and/or year.

  year, month, day = calendar.get_date()

The Calendar widget can generate a number of signals indicating date selection and change. The names of these signals are self explanatory, and are:

  month_changed

  day_selected

  day_selected_double_click

  prev_month

  next_month

  prev_year

  next_year

That just leaves us with the need to put all of this together into the calendar.py example program. Figure 9.12, “Calendar Example” illustrates the program operation:

Figure 9.12. Calendar Example

Calendar Example

The calendar.py source code is:

    1	#!/usr/bin/env python
    2	
    3	# example calendar.py
    4	#
    5	# Copyright (C) 1998 Cesar Miquel, Shawn T. Amundson, Mattias Gronlund
    6	# Copyright (C) 2000 Tony Gale
    7	# Copyright (C) 2001-2004 John Finlay
    8	#
    9	# This program is free software; you can redistribute it and/or modify
   10	# it under the terms of the GNU General Public License as published by
   11	# the Free Software Foundation; either version 2 of the License, or
   12	# (at your option) any later version.
   13	#
   14	# This program is distributed in the hope that it will be useful,
   15	# but WITHOUT ANY WARRANTY; without even the implied warranty of
   16	# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   17	# GNU General Public License for more details.
   18	#
   19	# You should have received a copy of the GNU General Public License
   20	# along with this program; if not, write to the Free Software
   21	# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
   22	
   23	import pygtk
   24	pygtk.require('2.0')
   25	import gtk, pango
   26	import time
   27	
   28	class CalendarExample:
   29	    DEF_PAD = 10
   30	    DEF_PAD_SMALL = 5
   31	    TM_YEAR_BASE = 1900
   32	
   33	    calendar_show_header = 0
   34	    calendar_show_days = 1
   35	    calendar_month_change = 2 
   36	    calendar_show_week = 3
   37	
   38	    def calendar_date_to_string(self):
   39	        year, month, day = self.window.get_date()
   40	        mytime = time.mktime((year, month+1, day, 0, 0, 0, 0, 0, -1))
   41	        return time.strftime("%x", time.localtime(mytime))
   42	
   43	    def calendar_set_signal_strings(self, sig_str):
   44	        prev_sig = self.prev_sig.get()
   45	        self.prev2_sig.set_text(prev_sig)
   46	
   47	        prev_sig = self.last_sig.get()
   48	        self.prev_sig.set_text(prev_sig)
   49	        self.last_sig.set_text(sig_str)
   50	
   51	    def calendar_month_changed(self, widget):
   52	        buffer = "month_changed: %s" % self.calendar_date_to_string()
   53	        self.calendar_set_signal_strings(buffer)
   54	
   55	    def calendar_day_selected(self, widget):
   56	        buffer = "day_selected: %s" % self.calendar_date_to_string()
   57	        self.calendar_set_signal_strings(buffer)
   58	
   59	    def calendar_day_selected_double_click(self, widget):
   60	        buffer = "day_selected_double_click: %s"
   61	        buffer = buffer % self.calendar_date_to_string()
   62	        self.calendar_set_signal_strings(buffer)
   63	
   64	        year, month, day = self.window.get_date()
   65	
   66	        if self.marked_date[day-1] == 0:
   67	            self.window.mark_day(day)
   68	            self.marked_date[day-1] = 1
   69	        else:
   70	            self.window.unmark_day(day)
   71	            self.marked_date[day-1] = 0
   72	
   73	    def calendar_prev_month(self, widget):
   74	        buffer = "prev_month: %s" % self.calendar_date_to_string()
   75	        self.calendar_set_signal_strings(buffer)
   76	
   77	    def calendar_next_month(self, widget):
   78	        buffer = "next_month: %s" % self.calendar_date_to_string()
   79	        self.calendar_set_signal_strings(buffer)
   80	
   81	    def calendar_prev_year(self, widget):
   82	        buffer = "prev_year: %s" % self.calendar_date_to_string()
   83	        self.calendar_set_signal_strings(buffer)
   84	
   85	    def calendar_next_year(self, widget):
   86	        buffer = "next_year: %s" % self.calendar_date_to_string()
   87	        self.calendar_set_signal_strings(buffer)
   88	
   89	    def calendar_set_flags(self):
   90	        options = 0
   91	        for i in range(5):
   92	            if self.settings[i]:
   93	                options = options + (1<<i)
   94	        if self.window:
   95	            self.window.display_options(options)
   96	
   97	    def calendar_toggle_flag(self, toggle):
   98	        j = 0
   99	        for i in range(5):
  100	            if self.flag_checkboxes[i] == toggle:
  101	                j = i
  102	
  103	        self.settings[j] = not self.settings[j]
  104	        self.calendar_set_flags()
  105	
  106	    def calendar_font_selection_ok(self, button):
  107	        self.font = self.font_dialog.get_font_name()
  108	        if self.window:
  109	            font_desc = pango.FontDescription(self.font)
  110	            if font_desc: 
  111	                self.window.modify_font(font_desc)
  112	
  113	    def calendar_select_font(self, button):
  114	        if not self.font_dialog:
  115	            window = gtk.FontSelectionDialog("Font Selection Dialog")
  116	            self.font_dialog = window
  117	    
  118	            window.set_position(gtk.WIN_POS_MOUSE)
  119	    
  120	            window.connect("destroy", self.font_dialog_destroyed)
  121	    
  122	            window.ok_button.connect("clicked",
  123	                                     self.calendar_font_selection_ok)
  124	            window.cancel_button.connect_object("clicked",
  125	                                                lambda wid: wid.destroy(),
  126	                                                self.font_dialog)
  127	        window = self.font_dialog
  128	        if not (window.flags() & gtk.VISIBLE):
  129	            window.show()
  130	        else:
  131	            window.destroy()
  132	            self.font_dialog = None
  133	
  134	    def font_dialog_destroyed(self, data=None):
  135	        self.font_dialog = None
  136	
  137	    def __init__(self):
  138	        flags = [
  139	            "Show Heading",
  140	            "Show Day Names",
  141	            "No Month Change",
  142	            "Show Week Numbers",
  143	            ]
  144	        self.window = None
  145	        self.font = None
  146	        self.font_dialog = None
  147	        self.flag_checkboxes = 5*[None]
  148	        self.settings = 5*[0]
  149	        self.marked_date = 31*[0]
  150	
  151	        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
  152	        window.set_title("Calendar Example")
  153	        window.set_border_width(5)
  154	        window.connect("destroy", lambda x: gtk.main_quit())
  155	
  156	        window.set_resizable(False)
  157	
  158	        vbox = gtk.VBox(False, self.DEF_PAD)
  159	        window.add(vbox)
  160	
  161	        # The top part of the window, Calendar, flags and fontsel.
  162	        hbox = gtk.HBox(False, self.DEF_PAD)
  163	        vbox.pack_start(hbox, True, True, self.DEF_PAD)
  164	        hbbox = gtk.HButtonBox()
  165	        hbox.pack_start(hbbox, False, False, self.DEF_PAD)
  166	        hbbox.set_layout(gtk.BUTTONBOX_SPREAD)
  167	        hbbox.set_spacing(5)
  168	
  169	        # Calendar widget
  170	        frame = gtk.Frame("Calendar")
  171	        hbbox.pack_start(frame, False, True, self.DEF_PAD)
  172	        calendar = gtk.Calendar()
  173	        self.window = calendar
  174	        self.calendar_set_flags()
  175	        calendar.mark_day(19)
  176	        self.marked_date[19-1] = 1
  177	        frame.add(calendar)
  178	        calendar.connect("month_changed", self.calendar_month_changed)
  179	        calendar.connect("day_selected", self.calendar_day_selected)
  180	        calendar.connect("day_selected_double_click",
  181	                         self.calendar_day_selected_double_click)
  182	        calendar.connect("prev_month", self.calendar_prev_month)
  183	        calendar.connect("next_month", self.calendar_next_month)
  184	        calendar.connect("prev_year", self.calendar_prev_year)
  185	        calendar.connect("next_year", self.calendar_next_year)
  186	
  187	        separator = gtk.VSeparator()
  188	        hbox.pack_start(separator, False, True, 0)
  189	
  190	        vbox2 = gtk.VBox(False, self.DEF_PAD)
  191	        hbox.pack_start(vbox2, False, False, self.DEF_PAD)
  192	  
  193	        # Build the Right frame with the flags in 
  194	        frame = gtk.Frame("Flags")
  195	        vbox2.pack_start(frame, True, True, self.DEF_PAD)
  196	        vbox3 = gtk.VBox(True, self.DEF_PAD_SMALL)
  197	        frame.add(vbox3)
  198	
  199	        for i in range(len(flags)):
  200	            toggle = gtk.CheckButton(flags[i])
  201	            toggle.connect("toggled", self.calendar_toggle_flag)
  202	            vbox3.pack_start(toggle, True, True, 0)
  203	            self.flag_checkboxes[i] = toggle
  204	
  205	        # Build the right font-button 
  206	        button = gtk.Button("Font...")
  207	        button.connect("clicked", self.calendar_select_font)
  208	        vbox2.pack_start(button, False, False, 0)
  209	
  210	        #  Build the Signal-event part.
  211	        frame = gtk.Frame("Signal events")
  212	        vbox.pack_start(frame, True, True, self.DEF_PAD)
  213	
  214	        vbox2 = gtk.VBox(True, self.DEF_PAD_SMALL)
  215	        frame.add(vbox2)
  216	  
  217	        hbox = gtk.HBox (False, 3)
  218	        vbox2.pack_start(hbox, False, True, 0)
  219	        label = gtk.Label("Signal:")
  220	        hbox.pack_start(label, False, True, 0)
  221	        self.last_sig = gtk.Label("")
  222	        hbox.pack_start(self.last_sig, False, True, 0)
  223	
  224	        hbox = gtk.HBox (False, 3)
  225	        vbox2.pack_start(hbox, False, True, 0)
  226	        label = gtk.Label("Previous signal:")
  227	        hbox.pack_start(label, False, True, 0)
  228	        self.prev_sig = gtk.Label("")
  229	        hbox.pack_start(self.prev_sig, False, True, 0)
  230	
  231	        hbox = gtk.HBox (False, 3)
  232	        vbox2.pack_start(hbox, False, True, 0)
  233	        label = gtk.Label("Second previous signal:")
  234	        hbox.pack_start(label, False, True, 0)
  235	        self.prev2_sig = gtk.Label("")
  236	        hbox.pack_start(self.prev2_sig, False, True, 0)
  237	
  238	        bbox = gtk.HButtonBox ()
  239	        vbox.pack_start(bbox, False, False, 0)
  240	        bbox.set_layout(gtk.BUTTONBOX_END)
  241	
  242	        button = gtk.Button("Close")
  243	        button.connect("clicked", lambda w: gtk.main_quit())
  244	        bbox.add(button)
  245	        button.set_flags(gtk.CAN_DEFAULT)
  246	        button.grab_default()
  247	
  248	        window.show_all()
  249	
  250	def main():
  251	    gtk.main()
  252	    return 0
  253	
  254	if __name__ == "__main__":
  255	    CalendarExample()
  256	    main()
pygtk2tutorial/sec-TheoryOfSignalsAndCallbacks.html0100644000117200001670000001426110227356757021647 0ustar finlayfcf2.2. Theory of Signals and Callbacks

2.2. Theory of Signals and Callbacks

Note

In GTK+ version 2.0, the signal system has been moved from GTK to GLib. We won't go into details about the extensions which the GLib 2.0 signal system has relative to the GTK+ 1.2 signal system. The differences should not be apparent to PyGTK users.

Before we look in detail at helloworld.py, we'll discuss signals and callbacks. GTK+ is an event driven toolkit, which means it will sleep in gtk.main() until an event occurs and control is passed to the appropriate function.

This passing of control is done using the idea of "signals". (Note that these signals are not the same as the Unix system signals, and are not implemented using them, although the terminology is almost identical.) When an event occurs, such as the press of a mouse button, the appropriate signal will be "emitted" by the widget that was pressed. This is how GTK+ does most of its useful work. There are signals that all widgets inherit, such as "destroy", and there are signals that are widget specific, such as "toggled" on a toggle button.

To make a button perform an action, we set up a signal handler to catch these signals and call the appropriate function. This is done by using a GtkWidget (from the GObject class) method such as:

  handler_id = object.connect(name, func, func_data)

where object is the GtkWidget instance which will be emitting the signal, and the first argument name is a string containing the name of the signal you wish to catch. The second argument, func, is the function you wish to be called when it is caught, and the third, func_data, the data you wish to pass to this function. The method returns a handler_id that can be used to disconnect or block the handler.

The function specified in the second argument is called a "callback function", and should generally be of the form:

  def callback_func(widget, callback_data):

where the first argument will be a pointer to the widget that emitted the signal, and the second (callback_data) a pointer to the data given as the last argument to the connect() method as shown above.

If the callback function is an object method then it will have the general form:

  def callback_meth(self, widget, callback_data):

where self is the object instance invoking the method. This is the form used in the helloworld.py example program.

Note

The above form for a signal callback function declaration is only a general guide, as some widget specific signals generate different calling parameters.

Another call used in the helloworld.py example is:

  handler_id = object.connect_object(name, func, slot_object)

connect_object() is the same as connect() except a callback function only uses one argument and a callback method, two arguments:

  def callback_func(object)
  def callback_meth(self, object)

where object is usually a widget. connect_object() allows the PyGTK widget methods that only take a single argument (self) to be used as signal handlers.

pygtk2tutorial/sec-WidgetsWithoutWindows.html0100644000117200001670000000511010227356760020674 0ustar finlayfcf5.2. Widgets Without Windows

5.2. Widgets Without Windows

The following widgets do not have an associated window. If you want to capture events, you'll have to use the EventBox. See the section on the EventBox widget.

  gtk.Alignment
  gtk.Arrow
  gtk.Bin
  gtk.Box
  gtk.Button
  gtk.CheckButton
  gtk.Fixed
  gtk.Image
  gtk.Label
  gtk.MenuItem
  gtk.Notebook
  gtk.Paned
  gtk.RadioButton
  gtk.Range
  gtk.ScrolledWindow
  gtk.Separator
  gtk.Table
  gtk.Toolbar
  gtk.AspectFrame
  gtk.Frame
  gtk.VBox
  gtk.HBox
  gtk.VSeparator
  gtk.HSeparator

We'll further our exploration of PyGTK by examining each widget in turn, creating a few simple example programs to display them.

pygtk2tutorial/ch-Introduction.html0100644000117200001670000002376010227356756016650 0ustar finlayfcfChapter 1. Introduction

Chapter 1. Introduction

Table of Contents

1.1. Exploring PyGTK

PyGTK 2.0 is a set of Python modules which provide a Python interface to GTK+ 2.X. Throughout the rest of this document PyGTK refers to the 2.X version of PyGTK and GTK and GTK+ refer to the 2.X version of GTK+. The primary web site for PyGTK is www.pygtk.org. The primary author of PyGTK is:

who is assisted by the developers listed in the AUTHORS file in the PyGTK distribution and the PyGTK community.

Python is an extensible, object-oriented interpreted programming language which is provided with a rich set of modules providing access to a large number of operating system services, internet services (such as HTML, XML, FTP, etc.), graphics (including OpenGL, TK, etc.), string handling functions, mail services (IMAP, SMTP, POP3, etc.), multimedia (audio, JPEG) and cryptographic services. In addition there are many other modules available from third parties providing many other services. Python is licensed under terms similar to the LGPL license and is available for Linux, Unix , Windows and Macintosh operating systems. More information on Python is available at www.python.org . The primary Author of Python is:

GTK (GIMP Toolkit) is a library for creating graphical user interfaces. It is licensed using the LGPL license, so you can develop open software, free software, or even commercial non-free software using GTK without having to spend anything for licenses or royalties.

It's called the GIMP toolkit because it was originally written for developing the GNU Image Manipulation Program (GIMP), but GTK has now been used in a large number of software projects, including the GNU Network Object Model Environment (GNOME) project. GTK is built on top of GDK (GIMP Drawing Kit) which is basically a wrapper around the low-level functions for accessing the underlying windowing functions (Xlib in the case of the X windows system). The primary authors of GTK are:

GTK is currently maintained by:

GTK is essentially an object oriented application programmers interface (API). Although written completely in C, it is implemented using the idea of classes and callback functions (pointers to functions).

There is also a third component called GLib which contains a few replacements for some standard calls, as well as some additional functions for handling linked lists, etc. The replacement functions are used to increase GTK's portability, as some of the functions implemented here are not available or are nonstandard on other unixes such as g_strerror(). Some also contain enhancements to the libc versions, such as g_malloc that has enhanced debugging utilities.

In version 2.0, GLib has picked up the type system which forms the foundation for GTK's class hierarchy, the signal system which is used throughout GTK, a thread API which abstracts the different native thread APIs of the various platforms and a facility for loading modules.

As the last component, GTK uses the Pango library for internationalized text output.

This tutorial describes the Python interface to GTK+ and is based on the GTK+ 2.0 Tutorial written by Tony Gale and Ian Main. This tutorial attempts to document as much as possible of PyGTK, but is by no means complete.

This tutorial assumes some understanding of Python, and how to create and run Python programs. If you are not familiar with Python, please read the Python Tutorial first. This tutorial does not assume an understanding of GTK; if you are learning PyGTK to learn GTK, please comment on how you found this tutorial, and what you had trouble with. This tutorial does not describe how to compile or install Python, GTK+ or PyGTK.

This tutorial is based on:

The examples were written and tested on a RedHat 9.0 system.

This document is a "work in progress". Please look for updates on www.pygtk.org.

I would very much like to hear of any problems you have learning PyGTK from this document, and would appreciate input as to how it may be improved. Please see the section on Contributing for further information. If you encounter bugs please file a bug at bugzilla.gnome.org against the pygtk project. The information at www.pygtk.org about Bugzilla may help.

The PyGTK 2.0 Reference Manual is available at http://www.pygtk.org/pygtkreference. It describes in detail the PyGTK classes.

The PyGTK website (www.pygtk.org) contains other resources useful for learning about PyGTK including a link to the extensive FAQ and other articles and tutorials and an active maillist and IRC channel (see www.pygtk.org for details).

1.1. Exploring PyGTK

Johan Dahlin has written a small Python program (pygtkconsole.py) that runs on Linux and allows interactive exploration of PyGTK. The program provides a Python-like interactive interpreter interface that communicates with a child process that executes that entered commands. The PyGTK modules are loaded by default. A simple example session is:

  moe: 96:1095$ pygtkconsole.py
  Python 2.2.2, PyGTK 1.99.14 (Gtk+ 2.0.6)
  Interactive console to manipulate GTK+ widgets.
  >>> w=Window()
  >>> b=Button('Hello')
  >>> w.add(b)
  >>> def hello(b):
  ...     print "Hello, World!"
  ... 
  >>> b.connect('clicked', hello)
  5
  >>> w.show_all()
  >>> Hello, World!
  Hello, World!
  Hello, World!
  
  >>> b.set_label("Hi There")
  >>> 

This creates a window containing a button which prints a message ('Hello, World!') when clicked. This program makes it easy to try out various GTK widgets and PyGTK interfaces.

I also use a program that was developed by Brian McErlean as ActiveState recipe 65109 with some mods to make it run with PyGTK 2.X. I call it gpython.py. It works similar to the pygtkconsole.py program.

Note

Both of these programs are known not to work on Microsoft Windows because they rely on Unix specific interfaces.

pygtk2tutorial/sec-GtkMenuShell.html0100644000117200001670000000371210227357006016671 0ustar finlayfcfA.9. GtkMenuShell

A.9. GtkMenuShell

deactivate(menu_shell, data)

selection-done(menu_shell, data)

move-current(menu_shell, direction, data)

activate-current(menu_shell, force_hide, data)

cancel(menu_shell, data)
pygtk2tutorial/ch-TimeoutsIOAndIdleFunctions.html0100644000117200001670000000755610227357001021327 0ustar finlayfcfChapter 19. Timeouts, IO and Idle Functions

Chapter 19. Timeouts, IO and Idle Functions

Table of Contents

19.1. Timeouts
19.2. Monitoring IO
19.3. Idle Functions

19.1. Timeouts

You may be wondering how you make GTK do useful work when in main(). Well, you have several options. Using the following gobject module function you can create a timeout function that will be called every "interval" milliseconds.

  source_id = gobject.timeout_add(interval, function, ...)

The interval argument is the number of milliseconds between calls to your function. The function argument is the callback you wish to have called. Any arguments after the second are passed to the function as data. The return value is an integer "source_id" which may be used to stop the timeout by calling:

  gobject.source_remove(source_id)

You may also stop the timeout callback function from being called again by returning zero or FALSE from your callback. If you want your callback to be called again, it should return TRUE.

Your callback should look something like this:

  def timeout_callback(...):

The number of arguments to the callback should match the number of data arguments specified in timeout_add().

pygtk2tutorial/sec-TextBuffers.html0100644000117200001670000006032310227356765016604 0ustar finlayfcf13.3. Text Buffers

13.3. Text Buffers

A TextBuffer is the core component of the PyGTK text editing system. It contains the text, the TextTags in a TextTagTable and the TextMarks which together describe how the text is to be displayed and allow a user to interactively modify the text and text display. As noted in the previous section a TextBuffer is associated with one or more TextViews which display the TextBuffer contents.

A TextBuffer can be created automatically when a TextView is created or it can be created with the function:

  textbuffer = TextBuffer(table=None)

where table is a TextTagTable. If table is not specified (or is None) a TextTagTable will be created for the TextBuffer.

There are a large number of methods that can be used to:

13.3.1. TextBuffer Status Information

You can retrieve the number of lines in a textbuffer by using the method:

  line_count = textbuffer.get_line_count()

Likewise you can get the number of characters in the textbuffer using:

  char_count = textbuffer.get_char_count()

When the textbuffer contents are changed the modified flag in the textbuffer is set. The status of the modified flag can be retrieved using the method:

  modified = textbuffer.get_modified()

If the program saves the contents of the textbuffer the following method can be used to reset the modified flag:

  textbuffer.set_modified(setting)

13.3.2. Creating TextIters

A TextIter is used to specify a location within a TextBuffer between two characters. TextBuffer methods that manipulate text use TextIters to specify where the method is to be applied. TextIters have a large number of methods that will be described in the >TextIters section.

The basic TextBuffer methods used to create TextIters are:

  iter = textbuffer.get_iter_at_offset(char_offset)

  iter = textbuffer_get_iter_at_line(line_number)

  iter = textbuffer.get_iter_at_line_offset(line_number, line_offset)

  iter = textbuffer.get_iter_at_mark(mark)

get_iter_at_offset() creates an iter that is just after char_offset chars from the start of the textbuffer.

get_iter_at_line() creates an iter that is just before the first character in line_number.

get_iter_at_line_offset() creates an iter that is just after the line_offset character in line_number.

get_iter_at_mark() creates an iter that is at the same position as the given mark.

The following methods create one or more TextIters at specific buffer locations:

  startiter = textbuffer.get_start_iter()

  enditer = textbuffer_get_end_iter()

  startiter, enditer = textbuffer.get_bounds()

  start, end = textbuffer.get_selection_bounds()

get_start_iter() creates an iter that is just before the first character in the textbuffer.

get_end_iter() creates an iter that is just after the last character in the textbuffer.

get_bounds() creates a tuple of two iters that are just before the first character and just after the last character in the textbuffer respectively.

get_selection_bounds() creates a tuple of two iters that have the same location as the insert and selection_bound marks in the textbuffer.

13.3.3. Text Insertion, Retrieval and Deletion

The text in a TextBuffer can be set using the method:

  textbuffer.set_text(text)

This method replaces the current contents of textbuffer with text.

The most general method to insert characters in a textbuffer is:

  textbuffer.insert(iter, text)

which inserts text at the textbuffer location specified by iter.

If you want to simulate the insertion of text by an interactive user use the method:

  result = textbuffer.insert_interactive(iter, text, default_editable)

which inserts text in the textbuffer at the location specified by iter but only if the location is editable (i.e. does not have a tag that specifies the text is non-editable) and the default_editable value is TRUE. The result indicates whether the text was inserted.

default_editable indicates the editability of text that doesn't have a tag affecting editability; default_editable is usually determined by a call to the TextView get_editable() method.

Other methods that insert text are:

  textbuffer.insert_at_cursor(text)

  result = textbuffer.insert_at_cursor_interactive(text, default_editable)

  textbuffer.insert_range(iter, start, end)

  result = textbuffer.insert_range_interactive(iter, start, end, default_editable)

insert_at_cursor() is a convenience method that inserts text at the current cursor (insert) location.

insert_range() copies text, pixbufs and tags between start and end from a TextBuffer (if different from textbuffer the tag table must be the same) and inserts the copy into textbuffer at iter's location.

The interactive versions of these methods operate the same way except they will only insert if the location is editable.

Finally, text can be inserted and have tags applied at the same time using the methods:

  textbuffer.insert_with_tags(iter, text, tag1, tag2, ...)
  
  textbuffer.insert_with_tags_by_name(iter, text, tagname1, tagname2, ...)

insert_with_tags() inserts the text in the textbuffer at the location specified by iter and applies the given tags.

insert_with_tags_by_name() does that same thing but allows you to specify the tags using the tag name.

The text in a textbuffer can be deleted by using the methods:

  textbuffer.delete(start, end)
  
  result = textbuffer.delete_interactive(start, end, default_editable)

delete() removes the text between the start and end TextIter locations in textbuffer.

delete_interactive() removes all the editable (as determined by the applicable text tags and the default_editable argument) text between start and end.

You can retrieve a copy of the text from a textbuffer by using the methods:

  text = textbuffer.get_text(start, end, include_hidden_chars=TRUE)

  text = textbuffer.get_slice(start, end, include_hidden_chars=TRUE)

get_text() returns a copy of the text in textbuffer between start and end; undisplayed text is excluded if include_hidden_chars is FALSE. Characters which represent embedded images or widgets are excluded.

get_slice() is the same as get_text() except that the returned text includes a 0xFFFC character for each embedded image or widget.

13.3.4. TextMarks

TextMarks are similar to TextIters in that they specify a location in a TextBuffer between two characters. However, TextMarks maintain their location information across buffer modifications. The TextMark methods will be described in the TextMarks section.

A textbuffer contains two built-in marks: the insert (cursor) mark and the selection_bound mark. The insert mark is the default location for the insertion of text and the selection_bound mark combines with the insert mark to define a selection range.

The built-in marks can be retrieved by using the methods:

  insertmark = textbuffer.get_insert()

  selection_boundmark = textbuffer.get_selection_bound()

The insert and selection_bound marks can be placed simultaneously at a location by using the method:

  textbuffer.place_cursor(where)

where is a textiter specifying the location. The place_cursor() method is needed to avoid temporarily creating a selection if the marks were moved individually.

TextMarks are created by using the method:

  mark = textbuffer.create_mark(mark_name, where, left_gravity=FALSE)

where mark_name is the name assigned to the created mark (can be None to create an anonymous mark), where is the textiter specifying the location of the mark in textbuffer and left_gravity indicates where the mark will be located after text is inserted at the mark (left if TRUE or right if FALSE).

A mark can be moved in the textbuffer by using the methods:

  textbuffer.move_mark(mark, where)

  textbuffer.move_mark_by_name(name, where)

mark specifies the mark to be moved. name specifies the name of the mark to be moved. where is a textiter specifying the new location.

A mark can be deleted from a textbuffer by using the methods:

  textbuffer.delete_mark(mark)

  textbuffer.delete_mark_by_name(name)

A mark can be retrieved by name using the method:

  mark = textbuffer.get_mark(name)

13.3.5. Creating and Applying TextTags

TextTags contain one or more attributes (e.g. foreground and background colors, font, editability) that can be applied to one or more ranges of text in a TextBuffer. The attributes that can be specified by TextTag properties will be described in Section 13.6.1, “Text Tags”.

A TextTag can be created with attributes and installed in the TextTagTable of a TextBuffer by using the convenience method:

  tag = textbuffer.create_tag(name=None, attr1=val1, attr2=val2, ...)

where name is a string specifying the name of the tag or None if the tag is an anonymous tag and the keyword-value pairs specify the attributes that the tag will have. See the TextTag> section for information on what attributes can be set by the TextTag properties.

A tag can be applied to a range of text in a textbuffer by using the methods:

  textbuffer.apply_tag(tag, start, end)

  textbuffer.apply_tag_by_name(name, start, end)

tag is the tag to be applied to the text. name is the name of the tag to be applied. start and end are textiters that specify the range of text that the tag is to be applied to.

A tag can be removed from a range of text by using the methods:

  textbuffer.remove_tag(tag, start, end)

  textbuffer.remove_tag_by_name(name, start, end)

All tags for a range of text can be removed by using the method:

  textbuffer.remove_all_tags(start, end)

13.3.6. Inserting Images and Widgets

In addition to text a TextBuffer can contain pixbuf images and an anchor location for widgets. A widget can be added to a TextView at an anchor location. A different widget can be added in each TextView which displays a buffer with an anchor.

A pixbuf can be inserted by using the method:

  textbuffer.insert_pixbuf(iter, pixbuf)

where iter specifies the location in the textbuffer to insert the pixbuf. The image will be counted as one character and will be represented in a get_slice() return (but left out of a get_text() return) as the Unicode character "0xFFFC".

A GTK+ widget can be inserted in a TextView at a buffer location specified with a TextChildAnchor. The TextChildAnchor will be counted as one character and represented as "0xFFFC" similar to a pixbuf.

The TextChildAnchor can be created and inserted in the buffer by using the convenience method:

  anchor = text_buffer.create_child_anchor(iter)

where iter is the location for the child_anchor.

A TextChildAnchor can also be created and inserted in two operations as:

  anchor = gtk.TextChildAnchor()

  text_buffer.insert_child_anchor(iter, anchor)

Then the widget can be added to the TextView at an anchor location using the method:

  text_view.add_child_at_anchor(child, anchor)

The list of widgets at a particular buffer anchor can be retrieved using the method:

  widget_list = anchor.get_widgets()

A widget can also be added to a TextView using the method:

  text_view.add_child_in_window(child, which_window, xpos, ypos)

where the child widget is placed in which_window at the location specified by xpos and ypos. which_window indicates in which of the windows that make up the TextView the widget is to be placed:

  gtk.TEXT_WINDOW_TOP
  gtk.TEXT_WINDOW_BOTTOM
  gtk.TEXT_WINDOW_LEFT
  gtk.TEXT_WINDOW_RIGHT
  gtk.TEXT_WINDOW_TEXT
  gtk.TEXT_WINDOW_WIDGET
pygtk2tutorial/sec-Layout.html0100644000117200001670000001753310227356763015623 0ustar finlayfcf10.4. Layout Container

10.4. Layout Container

The Layout container is similar to the Fixed container except that it implements an infinite (where infinity is less than 2^32) scrolling area. The X window system has a limitation where windows can be at most 32767 pixels wide or tall. The Layout container gets around this limitation by doing some exotic stuff using window and bit gravities, so that you can have smooth scrolling even when you have many child widgets in your scrolling area.

A Layout container is created using:

  layout = gtk.Layout(hadjustment=None, vadjustment=None)

As you can see, you can optionally specify the Adjustment objects (see Chapter 7, Adjustments) that the Layout widget will use for its scrolling. If you don't specify the Adjustment objects, new ones will be created.

You can add and move widgets in the Layout container using the following two methods:

  layout.put(child_widget, x, y)

  layout.move(child_widget, x, y)

The size of the Layout container can be set and retrieved using the next methods:

  layout.set_size(width, height)

  size = layout.get_size()

The final four methods for use with Layout widgets are for manipulating the horizontal and vertical adjustment widgets:

  hadj = layout.get_hadjustment()

  vadj = layout.get_vadjustment()

  layout.set_hadjustment(adjustment)

  layout.set_vadjustment(adjustment)

The layout.py example program creates three buttons and puts them in a layout widget. when a button is clicked, it is moved to a random location in the layout. Figure 10.3, “Layout Example” illustrates the starting display of the program:

Figure 10.3. Layout Example

Layout Example

The layout.py source code is:

    1	#!/usr/bin/env python
    2	
    3	# example layout.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	import random
    9	
   10	class LayoutExample:
   11	    def WindowDeleteEvent(self, widget, event):
   12	        # return false so that window will be destroyed
   13	        return False
   14	
   15	    def WindowDestroy(self, widget, *data):
   16	        # exit main loop
   17	        gtk.main_quit()
   18	
   19	    def ButtonClicked(self, button):
   20	        # move the button
   21	        self.layout.move(button, random.randint(0,500),
   22	                         random.randint(0,500))
   23	
   24	    def __init__(self):
   25	        # create the top level window
   26	        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   27	        window.set_title("Layout Example")
   28	        window.set_default_size(300, 300)
   29	        window.connect("delete-event", self.WindowDeleteEvent)
   30	        window.connect("destroy", self.WindowDestroy)
   31	        # create the table and pack into the window
   32	        table = gtk.Table(2, 2, False)
   33	        window.add(table)
   34	        # create the layout widget and pack into the table
   35	        self.layout = gtk.Layout(None, None)
   36	        self.layout.set_size(600, 600)
   37	        table.attach(self.layout, 0, 1, 0, 1, gtk.FILL|gtk.EXPAND,
   38	                     gtk.FILL|gtk.EXPAND, 0, 0)
   39	        # create the scrollbars and pack into the table
   40	        vScrollbar = gtk.VScrollbar(None)
   41	        table.attach(vScrollbar, 1, 2, 0, 1, gtk.FILL|gtk.SHRINK,
   42	                     gtk.FILL|gtk.SHRINK, 0, 0)
   43	        hScrollbar = gtk.HScrollbar(None)
   44	        table.attach(hScrollbar, 0, 1, 1, 2, gtk.FILL|gtk.SHRINK,
   45	                     gtk.FILL|gtk.SHRINK, 0, 0)	
   46	        # tell the scrollbars to use the layout widget's adjustments
   47	        vAdjust = self.layout.get_vadjustment()
   48	        vScrollbar.set_adjustment(vAdjust)
   49	        hAdjust = self.layout.get_hadjustment()
   50	        hScrollbar.set_adjustment(hAdjust)
   51	        # create 3 buttons and put them into the layout widget
   52	        button = gtk.Button("Press Me")
   53	        button.connect("clicked", self.ButtonClicked)
   54	        self.layout.put(button, 0, 0)
   55	        button = gtk.Button("Press Me")
   56	        button.connect("clicked", self.ButtonClicked)
   57	        self.layout.put(button, 100, 0)
   58	        button = gtk.Button("Press Me")
   59	        button.connect("clicked", self.ButtonClicked)
   60	        self.layout.put(button, 200, 0)
   61	        # show all the widgets
   62	        window.show_all()
   63	
   64	def main():
   65	    # enter the main loop
   66	    gtk.main()
   67	    return 0
   68	
   69	if __name__ == "__main__":
   70	    LayoutExample()
   71	    main()
pygtk2tutorial/sec-MessageDialog.html0100644000117200001670000000333210227357000017023 0ustar finlayfcf17.5. Message Dialog

17.5. Message Dialog

pygtk2tutorial/sec-GtkCalendar.html0100644000117200001670000000400310227357005016477 0ustar finlayfcfA.5. GtkCalendar

A.5. GtkCalendar

month-changed(calendar, data)

day-selected(calendar, data)

day-selected-double-click(calendar, data)

prev-month(calendar, data)

next-month(calendar, data)

prev-year(calendar, data)

next-year(calendar, data)
pygtk2tutorial/ch-ButtonWidget.html0100644000117200001670000002263210227356760016576 0ustar finlayfcfChapter 6. The Button Widget

Chapter 6. The Button Widget

Table of Contents

6.1. Normal Buttons
6.2. Toggle Buttons
6.3. Check Buttons
6.4. Radio Buttons

6.1. Normal Buttons

We've almost seen all there is to see of the button widget. It's pretty simple. You can use the gtk.Button() function to create a button with a label by passing a string parameter, or to create a blank button by not specifying a label string. It's then up to you to pack a label or pixmap into this new button. To do this, create a new box, and then pack your objects into this box using the usual pack_start() method, and then use the add() method to pack the box into the button.

The function to create a button is:

  button = gtk.Button(label=None, stock=None)

if label text is specified it is used as the text on the button. If stock is specified it is used to select a stock icon and text label for the button. The stock items are:

  STOCK_DIALOG_INFO
  STOCK_DIALOG_WARNING
  STOCK_DIALOG_ERROR
  STOCK_DIALOG_QUESTION
  STOCK_DND
  STOCK_DND_MULTIPLE
  STOCK_ADD
  STOCK_APPLY
  STOCK_BOLD
  STOCK_CANCEL
  STOCK_CDROM
  STOCK_CLEAR
  STOCK_CLOSE
  STOCK_CONVERT
  STOCK_COPY
  STOCK_CUT
  STOCK_DELETE
  STOCK_EXECUTE
  STOCK_FIND
  STOCK_FIND_AND_REPLACE
  STOCK_FLOPPY
  STOCK_GOTO_BOTTOM
  STOCK_GOTO_FIRST
  STOCK_GOTO_LAST
  STOCK_GOTO_TOP
  STOCK_GO_BACK
  STOCK_GO_DOWN
  STOCK_GO_FORWARD
  STOCK_GO_UP
  STOCK_HELP
  STOCK_HOME
  STOCK_INDEX
  STOCK_ITALIC
  STOCK_JUMP_TO
  STOCK_JUSTIFY_CENTER
  STOCK_JUSTIFY_FILL
  STOCK_JUSTIFY_LEFT
  STOCK_JUSTIFY_RIGHT
  STOCK_MISSING_IMAGE
  STOCK_NEW
  STOCK_NO
  STOCK_OK
  STOCK_OPEN
  STOCK_PASTE
  STOCK_PREFERENCES
  STOCK_PRINT
  STOCK_PRINT_PREVIEW
  STOCK_PROPERTIES
  STOCK_QUIT
  STOCK_REDO
  STOCK_REFRESH
  STOCK_REMOVE
  STOCK_REVERT_TO_SAVED
  STOCK_SAVE
  STOCK_SAVE_AS
  STOCK_SELECT_COLOR
  STOCK_SELECT_FONT
  STOCK_SORT_ASCENDING
  STOCK_SORT_DESCENDING
  STOCK_SPELL_CHECK
  STOCK_STOP
  STOCK_STRIKETHROUGH
  STOCK_UNDELETE
  STOCK_UNDERLINE
  STOCK_UNDO
  STOCK_YES
  STOCK_ZOOM_100
  STOCK_ZOOM_FIT
  STOCK_ZOOM_IN
  STOCK_ZOOM_OUT

The buttons.py program provides an example of using gtk.Button() to create a button with an image and a label in it. I've broken up the code to create a box from the rest so you can use it in your programs. There are further examples of using images later in the tutorial. Figure 6.1, “Button with Pixmap and Label” shows the window containing a button with both a pixmap and a label:

Figure 6.1. Button with Pixmap and Label

Button with Pixmap and Label

The source code for the buttons.py program is:

    1   #!/usr/bin/env python
    2
    3   # example-start buttons buttons.py
    4
    5   import pygtk
    6   pygtk.require('2.0')
    7   import gtk
    8
    9   # Create a new hbox with an image and a label packed into it
   10   # and return the box.
   11
   12   def xpm_label_box(parent, xpm_filename, label_text):
   13       # Create box for xpm and label
   14       box1 = gtk.HBox(False, 0)
   15       box1.set_border_width(2)
   16
   17       # Now on to the image stuff
   18       image = gtk.Image()
   19       image.set_from_file(xpm_filename)
   20
   21       # Create a label for the button
   22       label = gtk.Label(label_text)
   23
   24       # Pack the pixmap and label into the box
   25       box1.pack_start(image, False, False, 3)
   26       box1.pack_start(label, False, False, 3)
   27
   28       image.show()
   29       label.show()
   30       return box1
   31
   32   class Buttons:
   33       # Our usual callback method
   34       def callback(self, widget, data=None):
   35           print "Hello again - %s was pressed" % data
   36
   37       def __init__(self):
   38           # Create a new window
   39           self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   40
   41           self.window.set_title("Image'd Buttons!")
   42
   43           # It's a good idea to do this for all windows.
   44           self.window.connect("destroy", lambda wid: gtk.main_quit())
   45           self.window.connect("delete_event", lambda a1,a2:gtk.main_quit())
   46
   47           # Sets the border width of the window.
   48           self.window.set_border_width(10)
   49
   50           # Create a new button
   51           button = gtk.Button()
   52
   53           # Connect the "clicked" signal of the button to our callback
   54           button.connect("clicked", self.callback, "cool button")
   55
   56           # This calls our box creating function
   57           box1 = xpm_label_box(self.window, "info.xpm", "cool button")
   58
   59           # Pack and show all our widgets
   60           button.add(box1)
   61
   62           box1.show()
   63           button.show()
   64
   65           self.window.add(button)
   66           self.window.show()
   67
   68   def main():
   69       gtk.main()
   70       return 0
   71
   72   if __name__ == "__main__":
   73       Buttons()
   74       main()

Lines 12-34 define the xpm_label_box() helper function which creates a horizontal box with a border width of 2 (lines 14-15), populates it with an image (lines 22-23) and a label (line 26).

Lines 36-70 define the Buttons class. Lines 41-70 define the instance initialization method which creates a window (line 43), sets the title (line 45), connects the "delete_event" and "destroy" signals (lines 48-49). Line 55 creates the button without a label. Its "clicked" signal gets connected to the callback() method in line 58. The xpm_label_box() function is called in line 61 to create the image and label to put in the button in line 64.

The xpm_label_box() function could be used to pack xpm's and labels into any widget that can be a container.

The Button widget has the following signals:

      pressed - emitted when pointer button is pressed within Button widget

      released - emitted when pointer button is released within Button widget

      clicked - emitted when pointer button is pressed and then released within Button widget

      enter - emitted when pointer enters Button widget

      leave - emitted when pointer leaves Button widget
pygtk2tutorial/sec-FileSelections.html0100644000117200001670000001370410227356762017251 0ustar finlayfcf9.14. File Selections

9.14. File Selections

The file selection widget is a quick and simple way to display a File dialog box. It comes complete with Ok, Cancel, and Help buttons, a great way to cut down on programming time.

To create a new file selection box use:

  filesel = gtk.FileSelection(title=None)

To set the filename, for example to bring up a specific directory, or give a default filename, use this method:

  filesel.set_filename(filename)

To grab the filename text that the user has entered or clicked on, use this method:

  filename = filesel.get_filename()

There are also references to the widgets contained within the file selection widget. These are the filesel attributes:

  filesel.dir_list
  filesel.file_list
  filesel.selection_entry
  filesel.selection_text
  filesel.main_vbox
  filesel.ok_button
  filesel.cancel_button
  filesel.help_button
  filesel.history_pulldown
  filesel.history_menu
  filesel.fileop_dialog
  filesel.fileop_entry
  filesel.fileop_file
  filesel.fileop_c_dir
  filesel.fileop_del_file
  filesel.fileop_ren_file
  filesel.button_area
  filesel.action_area

Most likely you will want to use the ok_button, cancel_button, and help_button attributes to connect their widget signals to callbacks.

The filesel.py example program illustrates the use of the FileSelection widget. As you will see, there is nothing much to creating a file selection widget. While in this example the Help button appears on the screen, it does nothing as there is not a signal attached to it. Figure 9.14, “File Selection Example” shows the resulting display:

Figure 9.14. File Selection Example

File Selection Example

The source code for filesel.py is:

    1	#!/usr/bin/env python
    2	
    3	# example filesel.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	
    9	class FileSelectionExample:
   10	    # Get the selected filename and print it to the console
   11	    def file_ok_sel(self, w):
   12	        print "%s" % self.filew.get_filename()
   13	
   14	    def destroy(self, widget):
   15	        gtk.main_quit()
   16	
   17	    def __init__(self):
   18	        # Create a new file selection widget
   19	        self.filew = gtk.FileSelection("File selection")
   20	
   21	        self.filew.connect("destroy", self.destroy)
   22	        # Connect the ok_button to file_ok_sel method
   23	        self.filew.ok_button.connect("clicked", self.file_ok_sel)
   24	    
   25	        # Connect the cancel_button to destroy the widget
   26	        self.filew.cancel_button.connect("clicked",
   27	                                         lambda w: self.filew.destroy())
   28	    
   29	        # Lets set the filename, as if this were a save dialog,
   30	        # and we are giving a default filename
   31	        self.filew.set_filename("penguin.png")
   32	    
   33	        self.filew.show()
   34	
   35	def main():
   36	    gtk.main()
   37	    return 0
   38	
   39	if __name__ == "__main__":
   40	    FileSelectionExample()
   41	    main()
pygtk2tutorial/ch-MiscellaneousWidgets.html0100644000117200001670000003054210227356763020313 0ustar finlayfcfChapter 9. Miscellaneous Widgets

Chapter 9. Miscellaneous Widgets

Table of Contents

9.1. Labels
9.2. Arrows
9.3. The Tooltips Object
9.4. Progress Bars
9.5. Dialogs
9.6. Images
9.6.1. Pixmaps
9.7. Rulers
9.8. Statusbars
9.9. Text Entries
9.10. Spin Buttons
9.11. Combo Widget
9.12. Calendar
9.13. Color Selection
9.14. File Selections
9.15. Font Selection Dialog

9.1. Labels

Labels are used a lot in GTK, and are relatively simple. Labels emit no signals as they do not have an associated X window. If you need to catch signals, or do clipping, place it inside a EventBox (see Section 10.1, “The EventBox”) widget or a Button (see Section 6.1, “Normal Buttons”) widget.

To create a new label, use:

  label = gtk.Label(str)

The sole argument is the string you wish the label to display. To change the label's text after creation, use the method:

  label.set_text(str)

label is the label you created previously, and str is the new string. The space needed for the new string will be automatically adjusted if needed. You can produce multi-line labels by putting line breaks in the label string.

To retrieve the current string, use:

  str = label.get_text()

label is the label you've created, and str is the return string. The label text can be justified using:

  label.set_justify(jtype)

Values for jtype are:

  JUSTIFY_LEFT # the default
  JUSTIFY_RIGHT
  JUSTIFY_CENTER
  JUSTIFY_FILL # does not work

The label widget is also capable of line wrapping the text automatically. This can be activated using:

  label.set_line_wrap(wrap)

The wrap argument takes a TRUE or FALSE value.

If you want your label underlined, then you can set a pattern on the label:

  label.set_pattern(pattern)

The pattern argument indicates how the underlining should look. It consists of a string of underscore and space characters. An underscore indicates that the corresponding character in the label should be underlined. For example, the string "__ __" would underline the first two characters and fourth and fifth characters. If you simply want to have an underlined accelerator ("mnemonic") in your label, you should use set_text_with_mnemonic(str), not set_pattern().

The label.py program is a short example to illustrate these methods. This example makes use of the Frame (see Section 10.5, “Frames”) widget to better demonstrate the label styles. You can ignore this for now as the Frame widget is explained later on.

In GTK+ 2.0, label text can contain markup for font and other text attribute changes, and labels may be selectable (for copy-and-paste). These advanced features won't be explained here.

Figure 9.1, “Label Examples” illustrates the result of running the example program:

Figure 9.1. Label Examples

Label Examples

The label.py source code is:

    1	#!/usr/bin/env python
    2	
    3	# example label.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	
    9	class Labels:
   10	    def __init__(self):
   11	        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   12	        self.window.connect("destroy", lambda w: gtk.main_quit())
   13	
   14	        self.window.set_title("Label")
   15	        vbox = gtk.VBox(False, 5)
   16	        hbox = gtk.HBox(False, 5)
   17	        self.window.add(hbox)
   18	        hbox.pack_start(vbox, False, False, 0)
   19	        self.window.set_border_width(5)
   20	
   21	        frame = gtk.Frame("Normal Label")
   22	        label = gtk.Label("This is a Normal label")
   23	        frame.add(label)
   24	        vbox.pack_start(frame, False, False, 0)
   25	  
   26	        frame = gtk.Frame("Multi-line Label")
   27	        label = gtk.Label("This is a Multi-line label.\nSecond line\n"
   28	                             "Third line")
   29	        frame.add(label)
   30	        vbox.pack_start(frame, False, False, 0)
   31	  
   32	        frame = gtk.Frame("Left Justified Label")
   33	        label = gtk.Label("This is a Left-Justified\n"
   34	                             "Multi-line label.\nThird      line")
   35	        label.set_justify(gtk.JUSTIFY_LEFT)
   36	        frame.add(label)
   37	        vbox.pack_start(frame, False, False, 0)
   38	  
   39	        frame = gtk.Frame("Right Justified Label")
   40	        label = gtk.Label("This is a Right-Justified\nMulti-line label.\n"
   41	                             "Fourth line, (j/k)")
   42	        label.set_justify(gtk.JUSTIFY_RIGHT)
   43	        frame.add(label)
   44	        vbox.pack_start(frame, False, False, 0)
   45	
   46	        vbox = gtk.VBox(False, 5)
   47	        hbox.pack_start(vbox, False, False, 0)
   48	        frame = gtk.Frame("Line wrapped label")
   49	        label = gtk.Label("This is an example of a line-wrapped label.  It "
   50	                             "should not be taking up the entire             "
   51	                             "width allocated to it, but automatically "
   52	                             "wraps the words to fit.  "
   53	                             "The time has come, for all good men, to come to "
   54	                             "the aid of their party.  "
   55	                             "The sixth sheik's six sheep's sick.\n"
   56	                             "     It supports multiple paragraphs correctly, "
   57	                             "and  correctly   adds "
   58	                             "many          extra  spaces. ")
   59	        label.set_line_wrap(True)
   60	        frame.add(label)
   61	        vbox.pack_start(frame, False, False, 0)
   62	  
   63	        frame = gtk.Frame("Filled, wrapped label")
   64	        label = gtk.Label("This is an example of a line-wrapped, filled label.  "
   65	                             "It should be taking "
   66	                             "up the entire              width allocated to it.  "
   67	                             "Here is a sentence to prove "
   68	                             "my point.  Here is another sentence. "
   69	                             "Here comes the sun, do de do de do.\n"
   70	                             "    This is a new paragraph.\n"
   71	                             "    This is another newer, longer, better "
   72	                             "paragraph.  It is coming to an end, "
   73	                             "unfortunately.")
   74	        label.set_justify(gtk.JUSTIFY_FILL)
   75	        label.set_line_wrap(True)
   76	        frame.add(label)
   77	        vbox.pack_start(frame, False, False, 0)
   78	  
   79	        frame = gtk.Frame("Underlined label")
   80	        label = gtk.Label("This label is underlined!\n"
   81	                             "This one is underlined in quite a funky fashion")
   82	        label.set_justify(gtk.JUSTIFY_LEFT)
   83	        label.set_pattern(
   84	            "_________________________ _ _________ _ ______     __ _______ ___")
   85	        frame.add(label)
   86	        vbox.pack_start(frame, False, False, 0)
   87	        self.window.show_all ()
   88	
   89	def main():
   90	    gtk.main()
   91	    return 0
   92	
   93	if __name__ == "__main__":
   94	    Labels()
   95	    main()

Note that the "Filled, wrapped label" is not fill justified.

pygtk2tutorial/sec-SteppingThroughHelloWorld.html0100644000117200001670000003004310227356757021466 0ustar finlayfcf2.4. Stepping Through Hello World

2.4. Stepping Through Hello World

Now that we know the theory behind this, let's clarify by walking through the example helloworld.py program.

Lines 9-76 define the HelloWorld class that contains all the callbacks as object methods and the object instance initialization method. Let's examine the callback methods.

Lines 13-14 define the hello() callback method that will be called when the button is "clicked". When called the method, prints "Hello World" to the console. We ignore the object instance, the widget and the data parameters in this example, but most callbacks use them. The data is defined with a default value of None because PyGTK will not pass a data value if it is not included in the connect() call; this would trigger an error since the callback is expecting three parameters and may receive only two. Defining a default value of None allows the callback to be called with two or three parameters without error. In this case the data parameter could have been left out since the hello() method will always be called with just two parameters (never called with user data). The next example will use the data argument to tell us which button was pressed.

  def hello(self, widget, data=None):
      print "Hello World"

The next callback (lines 16-26) is a bit special. The "delete_event" occurs when the window manager sends this event to the application. We have a choice here as to what to do about these events. We can ignore them, make some sort of response, or simply quit the application.

The value you return in this callback lets GTK+ know what action to take. By returning TRUE, we let it know that we don't want to have the "destroy" signal emitted, keeping our application running. By returning FALSE, we ask that "destroy" be emitted, which in turn will call our "destroy" signal handler. Note the comments have been removed for clarity.

  def delete_event(widget, event, data=None):
      print "delete event occurred"
      return False

The destroy() callback method (lines 28-30) causes the program to quit by calling gtk.main_quit() . This function tells GTK+ that it is to exit from gtk.main() when control is returned to it.

  def destroy(widget, data=None):
      print "destroy signal occurred"
      gtk.main_quit()

Lines 32-71 define the HelloWorld object instance initialization method __init__() that creates the window and widgets used by the program.

Line 34 creates a new window, but it is not displayed until we direct GTK+ to show the window near the end of our program. The window reference is saved in an object instance attribute (self.window) for later access.

    self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)

Lines 41 and 46 illustrate two examples of connecting a signal handler to an object, in this case, the window. Here, the "delete_event" and "destroy" signals are caught. The first is emitted when we use the window manager to kill the window, or when we use the GtkWidget destroy() method call. The second is emitted when, in the "delete_event" handler, we return FALSE.

    self.window.connect("delete_event", self.delete_event)
    self.window.connect("destroy", self.destroy)

Line 49 sets an attribute of a container object (in this case the window) to have a blank area along the inside of it 10 pixels wide where no widgets will be placed. There are other similar methods that we will look at in Chapter 18, Setting Widget Attributes

    self.window.set_border_width(10)

Line 52 creates a new button and saves a reference to it in self.button. The button will have the label "Hello World" when displayed.

    self.button = gtk.Button("Hello World")

In line 57 we attach a signal handler to the button so when it emits the "clicked" signal, our hello() callback method is called. We are not passing any data to hello() so we just pass None as the data. Obviously, the "clicked" signal is emitted when we click the button with our mouse pointer. The user data parameter value None is not required and could be removed. The callback would then be called with one less parameter.

    self.button.connect("clicked", self.hello, None)

We are also going to use this button to exit our program. Line 62 illustrates how the "destroy" signal may come from either the window manager, or from our program. When the button is "clicked", same as above, it calls the hello() callback first, and then the following one in the order they are set up. You may have as many callbacks as you need, and all will be executed in the order you connected them.

Since we want to use the GtkWidget destroy() method that accepts one argument (the widget to be destroyed - in this case the window), we use the connect_object() method and pass it the reference to the window. The connect_object() method arranges to pass the window as the first callback argument instead of the button.

When the gtk.Widget destroy() method is called it will cause the "destroy" signal to be emitted from the window which will in turn cause the HelloWorld destroy() method to be called to end the program.

    self.button.connect_object("clicked", gtk.Widget.destroy, self.window)

Line 65 is a packing call, which will be explained in depth later on in Chapter 4, Packing Widgets . But it is fairly easy to understand. It simply tells GTK+ that the button is to be placed in the window where it will be displayed. Note that a GTK+ container can only contain one widget. There are other widgets, described later, that are designed to layout multiple widgets in various ways.

    self.window.add(self.button)

Now we have everything set up the way we want it to be. With all the signal handlers in place, and the button placed in the window where it should be, we ask GTK+ (lines 66 and 69) to "show" the widgets on the screen. The window widget is shown last so the whole window will pop up at once rather than seeing the window pop up, and then the button forming inside of it. Although with such a simple example, you'd never notice.

    self.button.show()

    self.window.show()

Lines 73-75 define the main() method which calls the gtk.main() function

    def main(self):
        gtk.main()

Lines 80-82 allow the program to run automatically if called directly or as an argument of the python interpreter. Line 81 creates an instance of the HelloWorld class and saves a reference to it in the hello variable. Line 82 calls the HelloWorld class main() method to start the GTK+ event processing loop.

    if __name__ == "__main__":
        hello = HelloWorld()
        hello.main()

Now, when we click the mouse button on a GTK+ button, the widget emits a "clicked" signal. In order for us to use this information, our program sets up a signal handler to catch that signal, which dispatches the function of our choice. In our example, when the button we created is "clicked", the hello() method is called with the None argument, and then the next handler for this signal is called. The next handler calls the widget destroy() function with the window as its argument thereby causing the window to emit the "destroy" signal, which is caught, and calls our HelloWorld destroy() method

Another course of events is to use the window manager to kill the window, which will cause the "delete_event" to be emitted. This will call our "delete_event" handler. If we return TRUE here, the window will be left as is and nothing will happen. Returning FALSE will cause GTK+ to emit the "destroy" signal that causes the HelloWorld "destroy" callback to be called, exiting GTK.

pygtk2tutorial/sec-EventHandling.html0100644000117200001670000004073010227357004017054 0ustar finlayfcf24.2. Event Handling

24.2. Event Handling

The GTK+ signals we have already discussed are for high-level actions, such as a menu item being selected. However, sometimes it is useful to learn about lower-level occurrences, such as the mouse being moved, or a key being pressed. There are also GTK+ signals corresponding to these low-level events. The handlers for these signals have an extra parameter which is a gtk.gdk.Event object containing information about the event. For instance, motion event handlers are passed a gtk.gdk.Event object containing EventMotion information which has (in part) attributes like:

  type
  window
  time
  x
  y
    ...
  state
    ...

window is the window in which the event occurred.

x and y give the coordinates of the event.

type will be set to the event type, in this case MOTION_NOTIFY. The types (in module gtk.gdk) are:

NOTHING                a special code to indicate a null event.

DELETE                 the window manager has requested that the toplevel window be
                       hidden or destroyed, usually when the user clicks on a special
                       icon in the title bar.

DESTROY                the window has been destroyed.

EXPOSE                 all or part of the window has become visible and needs to be
                       redrawn.

MOTION_NOTIFY          the pointer (usually a mouse) has moved.

BUTTON_PRESS           a mouse button has been pressed.

_2BUTTON_PRESS         a mouse button has been double-clicked (clicked twice within
                       a short period of time). Note that each click also generates a
                       BUTTON_PRESS event.

_3BUTTON_PRESS         a mouse button has been clicked 3 times in a short period of
                       time. Note that each click also generates a BUTTON_PRESS event.

BUTTON_RELEASE         a mouse button has been released.

KEY_PRESS              a key has been pressed.

KEY_RELEASE            a key has been released.

ENTER_NOTIFY           the pointer has entered the window.

LEAVE_NOTIFY           the pointer has left the window.

FOCUS_CHANGE           the keyboard focus has entered or left the window.

CONFIGURE              the size, position or stacking order of the window has changed.
                       Note that GTK+ discards these events for GDK_WINDOW_CHILD windows.

MAP                    the window has been mapped.

UNMAP                  the window has been unmapped.

PROPERTY_NOTIFY        a property on the window has been changed or deleted.

SELECTION_CLEAR        the application has lost ownership of a selection.

SELECTION_REQUEST      another application has requested a selection.

SELECTION_NOTIFY       a selection has been received.

PROXIMITY_IN           an input device has moved into contact with a sensing surface
                       (e.g. a touchscreen or graphics tablet).

PROXIMITY_OUT          an input device has moved out of contact with a sensing surface.

DRAG_ENTER             the mouse has entered the window while a drag is in progress.

DRAG_LEAVE             the mouse has left the window while a drag is in progress.

DRAG_MOTION            the mouse has moved in the window while a drag is in progress.

DRAG_STATUS            the status of the drag operation initiated by the window has changed.

DROP_START             a drop operation onto the window has started.

DROP_FINISHED          the drop operation initiated by the window has completed.

CLIENT_EVENT           a message has been received from another application.

VISIBILITY_NOTIFY      the window visibility status has changed.

NO_EXPOSE              indicates that the source region was completely available when parts
                       of a drawable were copied. This is not very useful. 

SCROLL                 ?

WINDOW_STATE           ?

SETTING                ?

state specifies the modifier state when the event occurred (that is, it specifies which modifier keys and mouse buttons were pressed). It is the bitwise OR of some of the following (in module gtk.gdk):

  SHIFT_MASK  
  LOCK_MASK   
  CONTROL_MASK
  MOD1_MASK   
  MOD2_MASK   
  MOD3_MASK   
  MOD4_MASK   
  MOD5_MASK   
  BUTTON1_MASK
  BUTTON2_MASK
  BUTTON3_MASK
  BUTTON4_MASK
  BUTTON5_MASK

As for other signals, to determine what happens when an event occurs we call the connect() method. But we also need to let GTK+ know which events we want to be notified about. To do this, we call the method:

  widget.set_events(events)

The events argument specifies the events we are interested in. It is the bitwise OR of constants that specify different types of events. For future reference, the event types (in module gtk.gdk) are:

  EXPOSURE_MASK
  POINTER_MOTION_MASK
  POINTER_MOTION_HINT_MASK
  BUTTON_MOTION_MASK     
  BUTTON1_MOTION_MASK    
  BUTTON2_MOTION_MASK    
  BUTTON3_MOTION_MASK    
  BUTTON_PRESS_MASK      
  BUTTON_RELEASE_MASK    
  KEY_PRESS_MASK         
  KEY_RELEASE_MASK       
  ENTER_NOTIFY_MASK      
  LEAVE_NOTIFY_MASK      
  FOCUS_CHANGE_MASK      
  STRUCTURE_MASK         
  PROPERTY_CHANGE_MASK
  VISIBILITY_NOTIFY_MASK
  PROXIMITY_IN_MASK      
  PROXIMITY_OUT_MASK
  SUBSTRUCTURE_MASK

There are a few subtle points that have to be observed when calling the set_events() method. First, it must be called before the X window for a PyGTK widget is created. In practical terms, this means you should call it immediately after creating the widget. Second, the widget must be one which will be realized with an associated X window. For efficiency, many widget types do not have their own window, but draw in their parent's window. These widgets include:

  gtk.Alignment
  gtk.Arrow
  gtk.Bin
  gtk.Box
  gtk.Image
  gtk.Item
  gtk.Label
  gtk.Layout
  gtk.Pixmap
  gtk.ScrolledWindow
  gtk.Separator
  gtk.Table
  gtk.AspectFrame
  gtk.Frame
  gtk.VBox
  gtk.HBox
  gtk.VSeparator
  gtk.HSeparator

To capture events for these widgets, you need to use an EventBox widget. See Section 10.1, “The EventBox” widget for details.

The event attributes that are set by PyGTK for each type of event are:

every event             type
                        window
                        send_event

NOTHING
DELETE
DESTROY                                    # no additional attributes

EXPOSE                 area
                       count

MOTION_NOTIFY          time
                       x
                       y
                       pressure
                       xtilt
                       ytilt
                       state
                       is_hint
                       source
                       deviceid
                       x_root
                       y_root

BUTTON_PRESS
_2BUTTON_PRESS
_3BUTTON_PRESS
BUTTON_RELEASE         time
                       x
                       y
                       pressure
                       xtilt
                       ytilt
                       state
                       button
                       source
                       deviceid
                       x_root
                       y_root

KEY_PRESS
KEY_RELEASE            time
                       state
                       keyval
                       string

ENTER_NOTIFY
LEAVE_NOTIFY           subwindow
                       time
                       x
                       y
                       x_root
                       y_root
                       mode
                       detail
                       focus
                       state

FOCUS_CHANGE           _in

CONFIGURE              x
                       y
                       width
                       height

MAP
UNMAP                                  # no additional attributes

PROPERTY_NOTIFY        atom
                       time
                       state

SELECTION_CLEAR
SELECTION_REQUEST
SELECTION_NOTIFY       selection
                       target
                       property
                       requestor
                       time

PROXIMITY_IN
PROXIMITY_OUT          time
                       source
                       deviceid

DRAG_ENTER
DRAG_LEAVE
DRAG_MOTION
DRAG_STATUS
DROP_START
DROP_FINISHED          context
                       time
                       x_root
                       y_root

CLIENT_EVENT           message_type
                       data_format
                       data

VISIBILTY_NOTIFY       state

NO_EXPOSE                            # no additional attributes

24.2.1. Scribble - Event Handling

For our drawing program, we want to know when the mouse button is pressed and when the mouse is moved, so we specify POINTER_MOTION_MASK and BUTTON_PRESS_MASK. We also want to know when we need to redraw our window, so we specify EXPOSURE_MASK. Although we want to be notified via a Configure event when our window size changes, we don't have to specify the corresponding STRUCTURE_MASK flag, because it is automatically specified for all windows.

It turns out, however, that there is a problem with just specifying POINTER_MOTION_MASK. This will cause the server to add a new motion event to the event queue every time the user moves the mouse. Imagine that it takes us 0.1 seconds to handle a motion event, but the X server queues a new motion event every 0.05 seconds. We will soon get way behind the users drawing. If the user draws for 5 seconds, it will take us another 5 seconds to catch up after they release the mouse button! What we would like is to only get one motion event for each event we process. The way to do this is to specify POINTER_MOTION_HINT_MASK.

When we specify POINTER_MOTION_HINT_MASK, the server sends us a motion event the first time the pointer moves after entering our window, or after a button press or release event. Subsequent motion events will be suppressed until we explicitly ask for the position of the pointer using the gtk.gdk.Window method:

  x, y, mask = window.get_pointer()

window is a gtk.gdk.Window object. x and y are the coordinates of the pointer and mask is the modifier mask to detect which keys are pressed. (There is a gtk.Widget method, get_pointer() which provides the same information as the gtk.gdk.Window get_pointer() method but it does not return the mask information)

The scribblesimple.py example program demonstrates the basic use of events and event handlers. Figure 24.2, “Simple Scribble Example” illustrates the program in action:

Figure 24.2. Simple Scribble Example

Simple Scribble Example

The event handlers are connected to the drawing_area by the following lines:

   92       # Signals used to handle backing pixmap
   93       drawing_area.connect("expose_event", expose_event)
   94       drawing_area.connect("configure_event", configure_event)
   95
   96       # Event signals
   97       drawing_area.connect("motion_notify_event", motion_notify_event)
   98       drawing_area.connect("button_press_event", button_press_event)
   99
  100       drawing_area.set_events(gtk.gdk.EXPOSURE_MASK
  101                               | gtk.gdk.LEAVE_NOTIFY_MASK
  102                               | gtk.gdk.BUTTON_PRESS_MASK
  103                               | gtk.gdk.POINTER_MOTION_MASK
  104                               | gtk.gdk.POINTER_MOTION_HINT_MASK)
 

The button_press_event() and motion_notify_event() event handlers in scribblesimple.py are:

   57   def button_press_event(widget, event):
   58       if event.button == 1 and pixmap != None:
   59           draw_brush(widget, event.x, event.y)
   60       return True
   61
   62   def motion_notify_event(widget, event):
   63       if event.is_hint:
   64           x, y, state = event.window.get_pointer()
   65       else:
   66           x = event.x
   67           y = event.y
   68           state = event.state
   69
   70       if state & gtk.gdk.BUTTON1_MASK and pixmap != None:
   71           draw_brush(widget, x, y)
   72
   73       return True

The expose_event() and configure_event() handlers will be described later.

pygtk2tutorial/sec-CellRenderers.html0100644000117200001670000012125710227356771017075 0ustar finlayfcf14.4. CellRenderers

14.4. CellRenderers

14.4.1. Overview

TreeViewColumns and CellRenderers work together to display a column of data in a TreeView. The TreeViewColumn provides the column title and a vertical space for the CellRenderers to render a portion of the data from the TreeView data store. A CellRenderer handles the rendering of each row and column data within the confines of the TreeViewColumn. A TreeViewColumn can contain more than one CellRenderer to provide a row display similar to an HBox. A common use of multiple CellRenderers is to combine a CellRendererPixbuf and a CellRendererText in one column.

An example illustrating the layout of two TreeViewColumns: one with two CellRenderers and one with one CellRenderer is shown in Figure 14.2, “TreeViewColumns with CellRenderers”:

Figure 14.2. TreeViewColumns with CellRenderers

TreeViewColumns with CellRenderers

The application of each CellRenderer is indicated with a different background color: yellow for the CellRendererPixbuf, cyan for one CellRendererText, and pink for the other CellRendererText. Note that the CellRendererPixbuf and the first CellRendererText are in the same column headed by the "Pixbuf and Text" header. The background color of the CellRendererText rendering "Print File" is the default color to show the application area in a single row.

Figure 14.2, “TreeViewColumns with CellRenderers” was created by the treeviewcolumn.py program.

14.4.2. CellRenderer Types

The type of CellRenderer needed is determined by the type of tree model data display required; PyGTK has three pre-defined CellRenderers:

CellRendererPixbufrenders pixbuf images either created by the program or one of the stock items.
CellRendererTextrenders text strings, and numbers that can be converted to a string (including ints, floats, booleans).
CellRendererTogglerenders a boolean value as a toggle button or a radio button

14.4.3. CellRenderer Properties

The properties of a CellRenderer determine how the data will be rendered:

"mode"Read-WriteThe editable mode of the CellRenderer. One of: gtk.CELL_RENDERER_MODE_INERT, gtk.CELL_RENDERER_MODE_ACTIVATABLE or gtk.CELL_RENDERER_MODE_EDITABLE
"visible"Read-WriteIf TRUE the cell is displayed
"xalign"Read-WriteThe fraction of free space to the left of the cell in the range 0.0 to 1.0.
"yalign"Read-WriteThe fraction of free space above the cell in the range 0.0 to 1.0.
"xpad"Read-WriteThe amount of padding to the left and right of the cell.
"ypad"Read-WriteThe amount of padding above and below cell.
"width"Read-WriteThe fixed width of the cell.
"height"Read-WriteThe fixed height of the cell.
"is-expander"Read-WriteIf TRUE the row has children
"is-expanded"Read-WriteIf TRUE the row has children and it is expanded to show the children.
"cell-background"WriteThe background color of the cell as a string.
"cell-background-gdk"Read-WriteThe background color of the cell as a gtk.gdk.Color.
"cell-background-set"Read-WriteIf TRUE the cell background color is set by this cellrenderer

The above properties are available for all CellRenderer subclasses. The individual CellRenderer types also have their own properties.

The CellRendererPixbuf has these properties:

"pixbuf"Read-WriteThe pixbuf to render - overridden by "stock-id"
"pixbuf-expander-open"Read-WritePixbuf for open expander.
"pixbuf-expander-closed"Read-WritePixbuf for closed expander.
"stock-id"Read-WriteThe stock ID of the stock icon to render
"stock-size"Read-WriteThe size of the rendered icon
"stock-detail"Read-WriteRender detail to pass to the theme engine

The CellRendererText has a large number of properties mostly dealing with style specification:

"text"Read-WriteText to render
"markup"Read-WriteMarked up text to render.
"attributes"Read-WriteA list of style attributes to apply to the text of the renderer.
"background"WriteBackground color as a string
"foreground"WriteForeground color as a string
"background-gdk"Read-WriteBackground color as a gtk.gdk.Color
"foreground-gdk"Read-WriteForeground color as a gtk.gdk.Color
"font"Read-WriteFont description as a string
"font-desc"Read-WriteFont description as a pango.FontDescription
"family"Read-WriteName of the font family, e.g. Sans, Helvetica, Times, Monospace
"style"Read-WriteFont style
"variant"Read-WriteFont variant
"weight"Read-WriteFont weight
"stretch"Read-WriteFont stretch
"size"Read-WriteFont size
"size-points"Read-WriteFont size in points
"scale"Read-WriteFont scaling factor
"editable"Read-WriteIf TRUE the text can be modified by the user
"strikethrough"Read-WriteIf TRUE strike through the text
"underline"Read-WriteStyle of underline for this text
"rise"Read-WriteOffset of text above the baseline (below the baseline if rise is negative)
"language"Read-WriteThe language this text is in, as an ISO code. Pango can use this as a hint when rendering the text. If you don't understand this parameter, you probably don't need it. GTK+ 2.4 and above.
"single-paragraph-mode"Read-WriteIf TRUE, keep all text in a single paragraph. GTK+ 2.4 and above.
"background-set"Read-WriteIf TRUE apply the background color
"foreground-set"Read-WriteIf TRUE apply the foreground color
"family-set"Read-WriteIf TRUE apply the font family
"style-set"Read-WriteIf TRUE apply the font style
"variant-set"Read-WriteIf TRUE apply the font variant
"weight-set"Read-WriteIf TRUE apply the font weight
"stretch-set"Read-WriteIf TRUE apply the font stretch
"size-set"Read-WriteIf TRUE apply the font size
"scale-set"Read-WriteIf TRUE scale the font
"editable-set"Read-WriteIf TRUE apply the text editability
"strikethrough-set"Read-WriteIf TRUE apply the strikethrough
"underline-set"Read-WriteIf TRUE apply the text underlining
"rise-set"Read-WriteIf TRUE apply the rise
"language-set"Read-WriteIf TRUE apply the language used to render the text. GTK+ 2.4 and above.

Almost every CellRendererText property has an associated boolean property (with the "-set" suffix) that indicates if the property is to be applied. This allows you to set a property globally and selectively enable and disable its application.

The CellRendererToggle has the following properties:

"activatable"Read-WriteIf TRUE, the toggle button can be activated
"active"Read-WriteIf TRUE, the button is active.
"radio"Read-WriteIf TRUE, draw the toggle button as a radio button
"inconsistent"Read-WriteIf TRUE, the button is in an inconsistent state. GTK+ 2.2 and above.

The properties can be set for all rows by using the gobject.set_property() method. See the treeviewcolumn.py program for an example using this method.

14.4.4. CellRenderer Attributes

An attribute associates a tree model column with a CellRenderer property; the CellRenderer sets the property from the row's column value before rendering the cell. This allows you to customize the cell display using tree model data. An attribute can be added to the current set by using:

  treeviewcolumn.add_attribute(cell_renderer, attribute, column)

where the property specified by attribute is set for the cell_renderer from column. For example:

  treeviewcolumn.add_attribute(cell, "cell-background", 1)

sets the CellRenderer background to the color specified by the string in the second column of the data store.

To clear all attributes and set several new attributes at once use:

  treeviewcolumn.set_attributes(cell_renderer, ...)

where the attributes of cell_renderer are set by key-value pairs: property=column. For example, for a CellRendererText:

  treeviewcolumn.set_attributes(cell, text=0, cell_background=1, xpad=3)

sets, for each row, the text from the first column, the background color from the second column and the horizontal padding from the fourth column. See the treeviewcolumn.py program for an example using these methods.

The attributes of a CellRenderer can be cleared using:

  treeviewcolumn.clear_attributes(cell_renderer)

14.4.5. Cell Data Function

If setting attributes is not sufficient for your needs you can set a function to be called for each row to set the properties for that CellRenderer using:

  treeviewcolumn.set_cell_data_func(cell_renderer, func, data=None)

where func has the signature:

  def func(column, cell_renderer, tree_model, iter, user_data)

where column is the TreeViewColumn containing cell_renderer, tree_model is the data store and iter is a TreeIter pointing at a row in tree_model. user_data is the value of data that was passed to set_cell_data_func().

In func you set whatever properties you want on cell_renderer. For example the following code fragment sets the text property to display PyGTK objects as an ID string.

  ...
  def obj_id_str(treeviewcolumn, cell_renderer, model, iter):
      pyobj = model.get_value(iter, 0)
      cell.set_property('text', str(pyobj))
      return
  ...
  treestore = gtk.TreeStore(object)
  win = gtk.Window()
  treeview = gtk.TreeView(treestore)
  win.add(treeview)
  cell = CellRendererText()
  tvcolumn = gtk TreeViewColumn('Object ID', cell)
  treeview.append_column(tvcolumn)
  iter = treestore.append(None, [win])
  iter = treestore.append(iter, [treeview])
  iter = treestore.append(iter, [tvcolumn])
  iter = treestore.append(iter, [cell])
  iter = treestore.append(None, [treestore])
  ...

The resulting display should be something like Figure 14.3, “CellRenderer Data Function”:

Figure 14.3. CellRenderer Data Function

CellRenderer Data Function

Another use of a cell data function is to control the formatting of a numerical text display e.g. a float value. A CellRendererText will display and automatically convert a float to a string but with a default format "%f".

With cell data functions you can even generate the cell data for the columns from external data. For example the filelisting.py program uses a ListStore with just one column that holds a list of file names. The TreeView displays columns that include a pixbuf, the file name and the file's size, mode and time of last change. The data is generated by the following cell data functions:

    def file_pixbuf(self, column, cell, model, iter):
        filename = os.path.join(self.dirname, model.get_value(iter, 0))
        filestat = statcache.stat(filename)
        if stat.S_ISDIR(filestat.st_mode):
            pb = folderpb
        else:
            pb = filepb
        cell.set_property('pixbuf', pb)
        return

    def file_name(self, column, cell, model, iter):
        cell.set_property('text', model.get_value(iter, 0))
        return

    def file_size(self, column, cell, model, iter):
        filename = os.path.join(self.dirname, model.get_value(iter, 0))
        filestat = statcache.stat(filename)
        cell.set_property('text', filestat.st_size)
        return
 
    def file_mode(self, column, cell, model, iter):
        filename = os.path.join(self.dirname, model.get_value(iter, 0))
        filestat = statcache.stat(filename)
        cell.set_property('text', oct(stat.S_IMODE(filestat.st_mode)))
        return
 
 
    def file_last_changed(self, column, cell, model, iter):
        filename = os.path.join(self.dirname, model.get_value(iter, 0))
        filestat = statcache.stat(filename)
        cell.set_property('text', time.ctime(filestat.st_mtime))
        return

These cell data functions retrieve the file information using the name, extract the needed data and set the cell 'text' or 'pixbuf' property with the data. Figure 14.4, “File Listing Example Using Cell Data Functions” shows the example program in action:

Figure 14.4. File Listing Example Using Cell Data Functions

File Listing Example Using Cell Data Functions

14.4.6. CellRendererText Markup

A CellRendererText can use Pango markup (by setting the "markup" property) instead of a plain text string to encode various text attributes and provide a rich text display with multiple font style changes. See the Pango Markup reference in the PyGTK Reference Manual for details on the Pango markup language.

The following code fragment illustrates the use of the "markup" property:

  ...
  liststore = gtk.ListStore(str)
  cell = gtk.CellRendererText()
  tvcolumn = gtk.TreeViewColumn('Pango Markup', cell, markup=0)
  ...
  liststore.append(['<span foreground="blue"><b>Pango</b></span> markup can'
' change\n<i>style</i> <big>size</big>, <u>underline,'
 <s>strikethrough</s></u>,\n'
'and <span font_family="URW Chancery L"><big>font family '
'e.g. URW Chancery L</big></span>\n<span foreground="red">red'
' foreground and <span background="cyan">cyan background</span></span>'])
  ...

produces a display similar to Figure 14.5, “CellRendererText Markup”:

Figure 14.5. CellRendererText Markup

CellRendererText Markup

If you create pango markup on the fly you have to be careful to replace the characters that are special to the markup language: "<", ">", "&". The Python library function cgi.escape() can do these basic conversions.

14.4.7. Editable Text Cells

CellRendererText cells can be made editable to allow a user to edit the contents of the cell that is selected by clicking it or pressing one of the Return, Enter, Space or Shift+Space keys. A CellRendererText is made editable for all rows by setting its "editable" property to TRUE as follows:

  cellrenderertext.set_property('editable', True)

Individual cells can be set editable by adding an attribute to the TreeViewColumn using the CellRendererText similar to:

  treeviewcolumn.add_attribute(cellrenderertext, "editable", 2)

which sets the "editable" property to the value contained in the third column of the data store.

Once the cell editing completes, your application should handle the "edited" signal to retrieve the new text and set the associated data store value. Otherwise the cell value reverts to its original value. The signature of the "edited" signal handler is:

  def edited_cb(cell, path, new_text, user_data)

where cell is the CellRendererText, path is the tree path (as a string) to the row containing the edited cell, new_text is the edited text and user_data is context data. Since the TreeModel is needed to use path to set new_text in the data store you probably want to pass the TreeModel as user_data in the connect() method:

  cellrenderertext.connect('edited', edited_cb, model)

If you have two or more editable cells in a row, you could pass the TreeModel column number as part of user_data as well as the TreeModel:

  cellrenderertext.connect('edited', edited_cb, (model, col_num))

Then you can set the new text in the "edited" handler similar to this example using a ListStore:

  def edited_cb(cell, path, new_text, user_data):
      liststore, column = user_data
      liststore[path][column] = new_text
      return

14.4.8. Activatable Toggle Cells

CellRendererToggle buttons can be made activatable by setting the "activatable" property to TRUE. Similar to editable CellRendererText cells the "activatable" property can be set for the entire CellRendererToggle set of cells using the set_property() method or for individual cells by adding an attribute to the TreeViewColumn containing the CellRendererToggle.

  cellrenderertoggle.set_property('activatable', True)

  treeviewcolumn.add_attribute(cellrenderertoggle, "activatable", 1)

The setting of the individual toggle buttons can be derived from the values in a TreeModel column by adding an attribute, for example:

  treeviewcolumn.add_attribute(cellrenderertoggle, "active", 2)

You should connect to the "toggled" signal to get notification of user clicks on the toggle buttons so that your application can change the value in the data store. For example:

  cellrenderertoggle.connect("toggled", toggled_cb, (model, column))

The callback has the signature:

  def toggled_cb(cellrenderertoggle, path, user_data)

where path is the tree path, as a string, pointing to the row containing the toggle that was clicked. You should pass the TreeModel and possibly the column index as part of user_data to provide the necessary context for setting the data store values. For example, your application can toggle the data store value as follows:

  def toggled_cb(cell, path, user_data):
      model, column = user_data
      model[path][column] = not model[path][column]
      return

If your application wants to display the toggle buttons as radio buttons and have only one be set, it will have to scan the data store to deactivate the active radio button and then set the toggled button. For example:

  def toggled_cb(cell, path, user_data):
      model, column = user_data
      for row in model:
          row[column] = False
      model[path][column] = True
      return

takes the lazy approach of setting all data store values to FALSE before setting the value to TRUE for the row specified by path.

14.4.9. Editable and Activatable Cell Example Program

The cellrenderer.py program illustrates the application of editable CellRendererText and activatable CellRendererToggle cells in a TreeStore.

    1   #!/usr/bin/env python
    2   # vim: ts=4:sw=4:tw=78:nowrap
    3   """ Demonstration using editable and activatable CellRenderers """
    4   import pygtk
    5   pygtk.require("2.0")
    6   import gtk, gobject
    7
    8   tasks =  {
    9       "Buy groceries": "Go to Asda after work",
   10       "Do some programming": "Remember to update your software",
   11       "Power up systems": "Turn on the client but leave the server",
   12       "Watch some tv": "Remember to catch ER"
   13       }
   14
   15   class GUI_Controller:
   16       """ The GUI class is the controller for our application """
   17       def __init__(self):
   18           # setup the main window
   19           self.root = gtk.Window(type=gtk.WINDOW_TOPLEVEL)
   20           self.root.set_title("CellRenderer Example")
   21           self.root.connect("destroy", self.destroy_cb)
   22           # Get the model and attach it to the view
   23           self.mdl = Store.get_model()
   24           self.view = Display.make_view( self.mdl )
   25           # Add our view into the main window
   26           self.root.add(self.view)
   27           self.root.show_all()
   28           return
   29       def destroy_cb(self, *kw):
   30           """ Destroy callback to shutdown the app """
   31           gtk.main_quit()
   32           return
   33       def run(self):
   34           """ run is called to set off the GTK mainloop """
   35           gtk.main()
   36           return
   37
   38   class InfoModel:
   39       """ The model class holds the information we want to display """
   40       def __init__(self):
   41           """ Sets up and populates our gtk.TreeStore """
   42           self.tree_store = gtk.TreeStore( gobject.TYPE_STRING,
   43                                            gobject.TYPE_BOOLEAN )
   44           # places the global people data into the list
   45           # we form a simple tree.
   46           for item in tasks.keys():
   47               parent = self.tree_store.append( None, (item, None) )
   48               self.tree_store.append( parent, (tasks[item],None) )
   49           return
   50       def get_model(self):
   51           """ Returns the model """
   52           if self.tree_store:
   53               return self.tree_store
   54           else:
   55               return None
   56
   57   class DisplayModel:
   58       """ Displays the Info_Model model in a view """
   59       def make_view( self, model ):
   60           """ Form a view for the Tree Model """
   61           self.view = gtk.TreeView( model )
   62           # setup the text cell renderer and allows these
   63           # cells to be edited.
   64           self.renderer = gtk.CellRendererText()
   65           self.renderer.set_property( 'editable', True )
   66           self.renderer.connect( 'edited', self.col0_edited_cb, model )
   67
   68           # The toggle cellrenderer is setup and we allow it to be
   69           # changed (toggled) by the user.
   70           self.renderer1 = gtk.CellRendererToggle()
   71           self.renderer1.set_property('activatable', True)
   72           self.renderer1.connect( 'toggled', self.col1_toggled_cb, model )   73
   74           # Connect column0 of the display with column 0 in our list model   75           # The renderer will then display whatever is in column 0 of
   76           # our model .
   77           self.column0 = gtk.TreeViewColumn("Name", self.renderer, text=0)   78
   79           # The columns active state is attached to the second column
   80           # in the model.  So when the model says True then the button
   81           # will show as active e.g on.
   82           self.column1 = gtk.TreeViewColumn("Complete", self.renderer1 )
   83           self.column1.add_attribute( self.renderer1, "active", 1)
   84           self.view.append_column( self.column0 )
   85           self.view.append_column( self.column1 )
   86           return self.view
   87       def col0_edited_cb( self, cell, path, new_text, model ):
   88           """
   89           Called when a text cell is edited.  It puts the new text
   90           in the model so that it is displayed properly.
   91           """
   92           print "Change '%s' to '%s'" % (model[path][0], new_text)
   93           model[path][0] = new_text
   94           return
   95       def col1_toggled_cb( self, cell, path, model ):
   96           """
   97           Sets the toggled state on the toggle button to true or false.
   98           """
   99           model[path][1] = not model[path][1]
  100           print "Toggle '%s' to: %s" % (model[path][0], model[path][1],)
  101           return
  102
  103   if __name__ == '__main__':
  104       Store = InfoModel()
  105       Display = DisplayModel()
  106       myGUI = GUI_Controller()
  107       myGUI.run()

The program provides editable cells in the first column and activatable cells in the second column. Lines 64-66 create an editable CellRendererText and connect the "edited" signal to the col0_edited_cb() callback (lines 87-94) that changes the appropriate row column value in the TreeStore. Likewise lines 70-72 create an activatable CellRendererToggle and connect the "toggled" signal to the col1_toggled_cb() callback (lines 95-101) to change the appropriate row value. When an editable or activatable cell is changed, a message is printed to indicate what the change was.

Figure 14.6, “Editable and Activatable Cells” illustrates the cellrenderer.py program in operation.

Figure 14.6. Editable and Activatable Cells

Editable and Activatable Cells
pygtk2tutorial/sec-TextIters.html0100644000117200001670000005017410227356766016302 0ustar finlayfcf13.4. Text Iters

13.4. Text Iters

TextIters represent a position between two characters in a TextBuffer. TextIters are usually created by using a TextBuffer method. TextIters are invalidated when the number of characters in a TextBuffer is changed (except for the TextIter that is used for the insertion or deletion). Inserting or deleting pixbufs or anchors also counts as a TextIter invalidating change.

There are a large number of methods associated with a TextIter object. They are grouped together in the following sections by similar function.

13.4.1. TextIter Attributes

The TextBuffer that contains the TextIter can be retrieved using the method:

  buffer = iter.get_buffer()

The following methods can be used to get the location of the TextIter in the TextBuffer:

  offset = iter.get_offset()			# returns offset in buffer of iter

  line_number = iter.get_line()			# returns number of line at iter

  line_offset = iter.get_line_offset()		# returns iter offset in line

  numchars = iter.get_chars_in_line()		# returns number of chars in line

13.4.2. Text Attributes at a TextIter

The PangoLanguage used at a given iter location in the TextBuffer is obtained by calling the method:

  language = iter.get_language()

The more general method used to get the text attributes at a TextIter's location is:

  result = iter.get_attributes(values)

where result indicates whether the given values (TextAttributes object) were modified. The given values are obtained by using the TextView method:

  values = textview.get_default_attributes()

The following attributes are accessible from a TextAttributes object (not implemented in PyGTK <= 1.99.15):

bg_colorbackground color
fg_colorforeground color
bg_stipplebackground stipple bitmap
fg_stippleforeground stipple bitmap
riseoffset of text above baseline
underlinestyle of underline
strikethroughwhether text is strikethrough
draw_bgTRUE if some tags affect the drawing of the background
justificationstyle of justification
directionwhich direction the text runs
fontPangoFontDescription in use
font_scalescale of the font in use
left_marginlocation of left margin
right_marginlocation of right margin
pixels_above_linespixels spacing above a line
pixels_below_linespixel spacing below a line
pixels_inside_wrappixel spacing between wrapped lines
tabsPangoTabArray in use
wrap_modemode of wrap in use
languagePangoLanguage in use
invisiblewhether text is invisible (not implemented in GTK+ 2.0)
bg_full_heightwhether background is fit to full line height
editablewhether the text is editable
realizedtext is realized
pad1 
pad2 
pad3 
pad4 

13.4.3. Copying a TextIter

A TextIter can be duplicated using the method:

  iter_copy = iter.copy()

13.4.4. Retrieving Text and Objects

Various amounts of text and TextBuffer objects can be retrieved from a TextBuffer using the following methods:

  char = iter.get_char()		# returns char or 0 if at end of buffer

  text = start.get_slice(end)		# returns the text between start and end iters

  text = start.get_text(end)		# returns the text between start and end iters

  pixbuf = iter.get_pixbuf()		# returns the pixbuf at the location (or None)

  anchor = iter.get_child_anchor()	# returns the child anchor (or None)

  mark_list = iter.get_marks()		# returns a list of marks

  tag_list = iter.get_toggled_tags()	# returns a list of tags that are toggled on or off

  tag_list = iter.get_tags()		# returns a prioritized list of tags

13.4.5. Checking Conditions at a TextIter

Tag conditions at the TextIter location can be checked using the following methods:

  result = iter.begins_tag(tag=None)	# TRUE if tag is toggled on at iter

  result = iter.ends_tag(tag=None)	# TRUE if tag is toggled off at iter

  result = iter.toggles_tag(tag=None)	# TRUE if tag is toggled on or off at iter

  result = iter.has_tag(tag)		# TRUE if tag is active at iter

These methods return TRUE if the given tag satisfies the condition at iter. If the tag is None for the first three methods then the result is TRUE if any tag satisfies the condition at iter.

The following methods indicate whether the text at the TextIter location is editable or allows text insertion:

  result = iter.editable()

  result = iter.can_insert(default_editability)

The editable() method indicates whether the iter is in an editable range of text while the can_insert() method indicates whether text can be inserted at iter considering the default editability of the TextView, TextBuffer and applicable tags. The default_editability is usually determined by calling the method:

  default_editability = textview.get_editable()

The equivalence of two TextIters can be determined with the method:

  are_equal = lhs.equal(rhs)

Two TextIters can be compared with the method:

  result = lhs.compare(rhs)

result will be: -1 if lhs is less than rhs; 0 if lhs equals rhs; and, 1 if lhs is greater than rhs.

To determine whether a TextIter is located between two given TextIters use the method:

  result = iter.in_range(start, end)

result is TRUE if iter is between start and end. Note: start and end must be in ascending order. This can be guaranteed using the method:

  first.order(second)

which will reorder the TextIter offsets so that first is before second.

13.4.6. Checking Location in Text

The location of a TextIter with respect to the text in a TextBuffer can be determined by the following methods:

  result = iter.starts_word()

  result = iter.ends_word()

  result = iter.inside_word()

  result = iter.starts_sentence()

  result = iter.ends_sentence()

  result = iter.inside_sentence()

  result = starts_line()

  result = iter.ends_line()

result returns TRUE if the TextIter is at the given text location. These methods are somewhat self-explanatory. The definition of the text components and their boundaries is determined by the language used at the TextIter. Note that a line is a collection of sentences similar to a paragraph.

The following methods can be used to determine if a TextIter is at the start or end of the TextBuffer:

  result = iter.is_start()

  result = iter.is_end()

result is TRUE if the TextIter is at the start or end of the TextBuffer.

Since a TextBuffer may contain multiple characters which are effectively viewed as one cursor position (e.g. carriage return-linefeed combination or letter with an accent mark) it's possible that a TextIter could be in a location which is not a cursor position. The following method indicates whether a TextIter is at a cursor position:

  result = iter.is_cursor_position()

13.4.7. Moving Through Text

TextIters can be moved through a TextBuffer in various text unit strides. The definition of the text units is set by the PangoLanguage in use at the TextIter location. The basic methods are:

  result = iter.forward_char()			# forward by one character

  result = iter.backward_char()			# backward by one character

  result = iter.forward_word_end()		# forward to the end of the word

  result = iter.backward_word_start()		# backward to the start of the word

  result = iter.forward_sentence_end()		# forward to the end of the sentence

  result = iter.backward_sentence_start()	# backward to the start of the sentence

  result = iter.forward_line()			# forward to the start of the next line

  result = iter.backward_line()			# backward to the start of the previous line

  result = iter.forward_to_line_end()		# forward to the end of the line

  result = iter.forward_cursor_position()		# forward by one cursor position

  result = iter.backward_cursor_position()	# forward by one cursor position

result is TRUE if the TextIter was moved and FALSE if the TextIter is at the start or end of the TextBuffer.

All of the above methods (except forward_to_line_end()) have corresponding methods that take a count (that can be positive or negative) to move the TextIter in multiple text unit strides:

  result = iter.forward_chars(count)

  result = iter.backward_chars(count)

  result = iter.forward_word_ends(count)

  result = iter.backward_word_starts(count)

  result = iter.forward_sentence_ends(count)

  result = iter.backward_sentence_starts(count)

  result = iter.forward_lines(count)

  result = iter.backward_lines(count)

  result = iter.forward_cursor_positions(count)

  result = iter.backward_cursor_positions(count)

13.4.8. Moving to a Specific Location

A TextIter can be moved to a specific location in the TextBuffer using the following methods:

  iter.set_offset(char_offset)			# move to given character offset

  iter.set_line(line_number)			# move to start of given line

  iter.set_line_offset(char_on_line)		# move to given character offset in current line

  iter.forward_to_end()				# move to end of the buffer

In addition, a TextIter can be moved to a location where a tag is toggled on or off by using the methods:

  result = iter.forward_to_tag_toggle(tag)

  result = iter.backward_to_tag_taoggle(tag)

result is TRUE if the TextIter was moved to a new location where tag is toggled. If tag is None then the TextIter will be moved to the next location where any tag is toggled.

13.4.9. Searching in Text

A search for a string in a TextBuffer is done using the methods:

  match_start, match_end = iter.forward_search(str, flags, limit=None)

  match_start, match_end = iter.backward_search(str, flags, limit=None)

The return value is a tuple containing TextIters that indicate the location of the first character of the match and the first character after the match. str is the character string to be located. flags modifies the conditions of the search; flag values can be:

  gtk.TEXT_SEARCH_VISIBLE_ONLY		# invisible characters are ignored

  gtk.TEXT_SEARCH_TEXT_ONLY		# pixbufs and child anchors are ignored

limit is an optional TextIter that bounds the search range.

pygtk2tutorial/sec-TreeSelections.html0100644000117200001670000003233110227356771017266 0ustar finlayfcf14.8. TreeSelections

14.8. TreeSelections

14.8.1. Getting the TreeSelection

TreeSelections are objects that manage selections in a TreeView. When a TreeView is created a TreeSelection is automatically created as well. The TreeSelection can be retrieved from the TreeView using the method:

  treeselection = treeview.get_selection()

You can retrieve the TreeView associated with a TreeSelection by calling the method:

  treeview = treeselection.get_treeview()

14.8.2. TreeSelection Modes

The TreeSelection supports the following selection modes:

gtk.SELECTION_NONENo selection is allowed.
gtk.SELECTION_SINGLEA single selection is allowed by clicking.
gtk.SELECTION_BROWSEA single selection allowed by browsing with the pointer.
gtk.SELECTION_MULTIPLEMultiple items can be selected at once.

You can retrieve the current selection mode by calling the method:

  mode = treeselection.get_mode()

The mode can be set using:

  treeselection.set_mode(mode)

where mode is one of the above selection modes.

14.8.3. Retrieving the Selection

The method to use to retrieve the selection depends on the current selection mode. If the selection mode is gtk.SELECTION_SINGLE or gtk.SELECTION_BROWSE, you should use the following method:

  (model, iter) = treeselection.get_selected()

that returns a 2-tuple containing model, the TreeModel used by the TreeView associated with treeselection and iter, a TreeIter pointing at the selected row. If no row is selected then iter is None. If the selection mode is gtk.SELECTION_MULTIPLE a TypeError exception is raised.

If you have a TreeView using the gtk.SELECTION_MULTIPLE selection mode then you should use the method:

  (model, pathlist) = treeselection.get_selected_rows()

that returns a 2-tuple containing the tree model and a list of the tree paths of the selected rows. This method is not available in PyGTK 2.0 so you'll have to use a helper function to retrieve the list by using:

  treeselection.selected_foreach(func, data=None)

where func is a function that is called on each selected row with data. The signature of func is:

  def func(model, path, iter, data)

where model is the TreeModel, path is the tree path of the selected row and iter is a TreeIter pointing at the selected row.

This method can be used to simulate the get_selected_row() method as follows:

  ...
  def foreach_cb(model, path, iter, pathlist):
      list.append(path)
  ...
  def my_get_selected_rows(treeselection):
      pathlist = []
      treeselection.selected_foreach(foreach_cb, pathlist)
      model = sel.get_treeview().get_model()
      return (model, pathlist)
  ...

The selected_foreach() method cannot be used to modify the tree model or the selection though you can change the data in the rows.

14.8.4. Using a TreeSelection Function

If you want ultimate control over row selection you can set a function to be called before a row is selected or unselected by using the method:

  treeselection.set_select_function(func, data)

where func is a callback function and data is user data to be passed to func when it is called. func has the signature:

  def func(selection, model, path, is_selected, user_data)

where selection is the TreeSelection, model is the TreeModel used with the TreeView associated with selection, path is the tree path of the selected row, is_selected is TRUE if the row is currently selected and user_data is data. func should return TRUE if the row's selection status should be toggled.

Setting a select function is useful if:

  • you want to control the selection or unselection of a row based on some additional context information. You will need to indicate in some way that the selection change can't be made and perhaps why. For example, you can visually differentiate the row or pop up a MessageDialog.
  • you need to maintain your own list of selected or unselected rows though this can also be done by connecting to the "changed" signal but with more effort.
  • you want to do some additional processing before a row is selected or unselected. For example change the look of the row or modify the row data.

14.8.5. Selecting and Unselecting Rows

You can change the selection programmatically using the following methods:

  treeselection.select_path(path)
  treeselection.unselect_path(path)

  treeselection.select_iter(iter)
  treeselection.unselect_iter(iter)

These methods select or unselect a single row that is specified by either path, a tree path or iter, a TreeIter pointing at the row. The following methods select or unselect several rows at once:

  treeselection.select_all()
  treeselection.unselect_all()

  treeselection.select_range(start_path, end_path)
  treeselection.unselect_range(start_path, end_path)

The select_all() method requires that the selection mode be gtk.SELECTION_MULTIPLE as does the select_range() method. The unselect_all() and unselect_range() methods will function with any selection mode. Note that the unselect_all() method is not available in PyGTK 2.0

You can check if a row is selected by using one of the methods:

  result = treeselection.path_is_selected(path)
  result = treeselection.iter_is_selected(iter)

that return TRUE if the row specified by path or iter is currently selected. You can retrieve a count of the number of selected rows using the method:

  count = treeselection.count_selected_rows()

This method is not available in PyGTK 2.0 so you'll have to simulate it using the selected_foreach() method similar to the simulation of the get_selected_rows() method in Section 21.2, “Retrieving the Selection”. For example:

  ...
  def foreach_cb(model, path, iter, counter):
      counter[0] += 1
  ...
  def my_count_selected_rows(treeselection):
      counter = [0]
      treeselection.selected_foreach(foreach_cb, counter)
      return counter[0]
  ...
pygtk2tutorial/sec-DetailsOfBoxes.html0100644000117200001670000001761110227356757017221 0ustar finlayfcf4.2. Details of Boxes

4.2. Details of Boxes

Because of this flexibility, packing boxes in GTK can be confusing at first. There are a lot of options, and it's not immediately obvious how they all fit together. In the end, however, there are basically five different styles. Figure 4.1, “Packing: Five Variations” illustrates the result of running the program packbox.py with an argument of 1:

Figure 4.1. Packing: Five Variations

Packing: Five Variations

Each line contains one horizontal box (hbox) with several buttons. The call to pack is shorthand for the call to pack each of the buttons into the hbox. Each of the buttons is packed into the hbox the same way (i.e., same arguments to the pack_start() method).

This is an example of the pack_start() method.

  box.pack_start(child, expand, fill, padding)

box is the box you are packing the object into; the first argument is the child object to be packed. The objects will all be buttons for now, so we'll be packing buttons into boxes.

The expand argument to pack_start() and pack_end() controls whether the widgets are laid out in the box to fill in all the extra space in the box so the box is expanded to fill the area allotted to it (True); or the box is shrunk to just fit the widgets (False). Setting expand to False will allow you to do right and left justification of your widgets. Otherwise, they will all expand to fit into the box, and the same effect could be achieved by using only one of pack_start() or pack_end().

The fill argument to the pack methods control whether the extra space is allocated to the objects themselves (True), or as extra padding in the box around these objects (False). It only has an effect if the expand argument is also True.

Python allows a method or function to be defined with default argument values and argument keywords. Throughout this tutorial I'll show the definition of the functions and methods with defaults and keywords bolded as applicable. For example the pack_start() method is defined as:

  box.pack_start(child, expand=True, fill=True, padding=0)

  box.pack_end(child, expand=True, fill=True, padding=0)

child, expand, fill and padding are keywords. The expand, fill and padding arguments have the defaults shown. The child argument must be specified.

When creating a new box, the function looks like this:

  hbox = gtk.HBox(homogeneous=False, spacing=0)

  vbox = gtk.VBox(homogeneous=False, spacing=0)

The homogeneous argument to gtk.HBox() and gtk.VBox() controls whether each object in the box has the same size (i.e., the same width in an hbox, or the same height in a vbox). If it is set, the pack routines function essentially as if the expand argument was always turned on.

What's the difference between spacing (set when the box is created) and padding (set when elements are packed)? Spacing is added between objects, and padding is added on either side of an object. Figure 4.2, “Packing with Spacing and Padding” illustrates the difference; pass an argument of 2 to packbox.py :

Figure 4.2. Packing with Spacing and Padding

Packing with Spacing and Padding

Figure 4.3, “Packing with pack_end()” illustrates the use of the pack_end() method (pass an argument of 3 to packbox.py). The label "end" is packed with the pack_end() method. It will stick to the right edge of the window when the window is resized.

Figure 4.3. Packing with pack_end()

Packing with pack_end()
pygtk2tutorial/sec-GtkStatusBar.html0100644000117200001670000000364210227357010016702 0ustar finlayfcfA.20. GtkStatusBar

A.20. GtkStatusBar

text-pushed(statusbar, context_id, text, data)

text-popped(statusbar, context_id, text, data)
pygtk2tutorial/sec-RadioButtons.html0100644000117200001670000001577610227356760016767 0ustar finlayfcf6.4. Radio Buttons

6.4. Radio Buttons

Radio buttons are similar to check buttons except they are grouped so that only one may be selected/depressed at a time. This is good for places in your application where you need to select from a short list of options.

Creating a new radio button is done with this call:

  radio_button = gtk.RadioButton(group=None, label=None)

You'll notice the extra argument to this call. Radio buttons require a group to operate properly. The first call to gtk.RadioButton() should pass None as the first argument and a new radio button group will be created with the new radio button as its only member.

To add more radio buttons to a group, pass in a reference to a radio button in group in subsequent calls to gtk.RadioButton().

If a label argument is specified the text will be parsed for '_'-prefixed mnemonic characters.

It is also a good idea to explicitly set which button should be the default depressed button with:

  radio_button.set_active(is_active)

This is described in the section on toggle buttons, and works in exactly the same way. Once the radio buttons are grouped together, only one of the group may be active at a time. If the user clicks on one radio button, and then on another, the first radio button will first emit a "toggled" signal (to report becoming inactive), and then the second will emit its "toggled" signal (to report becoming active).

The example program radiobuttons.py creates a radio button group with three buttons. Figure 6.4, “Radio Buttons Example” illustrates the resulting window:

Figure 6.4. Radio Buttons Example

Radio Buttons Example

The source code for the example program is:

    1	#!/usr/bin/env python
    2	
    3	# example radiobuttons.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	
    9	class RadioButtons:
   10	    def callback(self, widget, data=None):
   11	        print "%s was toggled %s" % (data, ("OFF", "ON")[widget.get_active()])
   12	
   13	    def close_application(self, widget, event, data=None):
   14	        gtk.main_quit()
   15	        return False
   16	
   17	    def __init__(self):
   18	        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   19	  
   20	        self.window.connect("delete_event", self.close_application)
   21	
   22	        self.window.set_title("radio buttons")
   23	        self.window.set_border_width(0)
   24	
   25	        box1 = gtk.VBox(False, 0)
   26	        self.window.add(box1)
   27	        box1.show()
   28	
   29	        box2 = gtk.VBox(False, 10)
   30	        box2.set_border_width(10)
   31	        box1.pack_start(box2, True, True, 0)
   32	        box2.show()
   33	
   34	        button = gtk.RadioButton(None, "radio button1")
   35	        button.connect("toggled", self.callback, "radio button 1")
   36	        box2.pack_start(button, True, True, 0)
   37	        button.show()
   38	
   39	        button = gtk.RadioButton(button, "radio button2")
   40	        button.connect("toggled", self.callback, "radio button 2")
   41	        button.set_active(True)
   42	        box2.pack_start(button, True, True, 0)
   43	        button.show()
   44	
   45	        button = gtk.RadioButton(button, "radio button3")
   46	        button.connect("toggled", self.callback, "radio button 3")
   47	        box2.pack_start(button, True, True, 0)
   48	        button.show()
   49	
   50	        separator = gtk.HSeparator()
   51	        box1.pack_start(separator, False, True, 0)
   52	        separator.show()
   53	
   54	        box2 = gtk.VBox(False, 10)
   55	        box2.set_border_width(10)
   56	        box1.pack_start(box2, False, True, 0)
   57	        box2.show()
   58	
   59	        button = gtk.Button("close")
   60	        button.connect_object("clicked", self.close_application, self.window,
   61	                              None)
   62	        box2.pack_start(button, True, True, 0)
   63	        button.set_flags(gtk.CAN_DEFAULT)
   64	        button.grab_default()
   65	        button.show()
   66	        self.window.show()
   67	
   68	def main():
   69	    gtk.main()
   70	    return 0        
   71	
   72	if __name__ == "__main__":
   73	    RadioButtons()
   74	    main()

The code is fairly straight forward. Lines 63-64 make the "close" button the default widget so that pressing the "Enter" key when the window is active causes the "close" button to emit the "clicked" signal.

pygtk2tutorial/sec-GenericCellRenderer.html0100644000117200001670000000353110227356772020202 0ustar finlayfcf14.12. The Generic CellRenderer

14.12. The Generic CellRenderer

pygtk2tutorial/images/0040755000117200001670000000000010227356743014145 5ustar finlayfcfpygtk2tutorial/images/prev.gif0100644000117200001670000000166010006075703015575 0ustar finlayfcfGIF87a#÷„Œ!Œ!)”)1œ1BœBJ¥JR­Rkµks½s„½„ŒÆŒ”Δ¥Î¥­Ö­ÆÞÆÎçÎÖïÖçïçï÷ïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,#•)H° Áƒ*\Ȱ¡CƒH|ð°b‚P±¡‚( @‘":ü(P`DÀ@ œ4À‘¡ Œ¤€‚  ÐÀÓž>A,J¨‚¡$ õ(u Uœ0Ùð"A zh@’#X‡¤A¢@ H˜@W¥ß¿€; ;pygtk2tutorial/images/toc-blank.gif0100644000117200001670000000013710006075703016471 0ustar finlayfcfGIF89a ³€€€€€€€€€ÀÀÀ€€€ÿÿÿÿÿÿÿÿÿÿÿÿ, ðɇ¦½8Ûª»§`%‚_Æ•¨tf;pygtk2tutorial/images/toc-minus.gif0100644000117200001670000000151310006075703016534 0ustar finlayfcfGIF89a ÷„„„ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ, 08P€Áƒ*L¨PÆ64‘¢1:ܘPàÄ?V"A‚;pygtk2tutorial/images/caution.gif0100644000117200001670000000201710006075702016257 0ustar finlayfcfGIF87a÷!!11BBZZcckkss{{„„„„sŒŒŒŒsŒŒŒ””””s””{œœœœsœœ{œœ”œœœ¥¥¥¥c¥¥œ¥¥¥µµµµZµµcµµµ½½½½cÎÎÎÎÎÖÖÖÖÎÖÖÖÞÞÞÞ1ÞÞ9ÞÞBçççç1çç9çççïïïïï÷÷÷÷÷÷÷÷1÷÷÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,ôuH° Áƒ_Ä@È ‰6DHB $N$ø¢Á 4>pиña (e|ˆ¸QGE(YÀéaäD`ÊèP 8j’,XÑEJt@ÃP?MºeH›œL)ƒ‚€%¸ªd)ð¥Ø üäJC¨Ž¨geŒp`-[ tÄààÆYÌ«b 16|ø‹ÀÁÙÜûÁoÊ "ؕтd‚‰=àHÉ)UDF¸W4Ê  „•áÂÂ热-—X«ÂöÆÄ‹¹B¾Ý²åÎÄ'†Æ¡:ùo ·Ä ÂùÀ€;pygtk2tutorial/images/up.gif0100644000117200001670000000163210006075703015244 0ustar finlayfcfGIF87a#÷„Œ!Œ!)”)1œ1BœBc­ckµk„½„ŒÆŒ”ΔµÞµÆÞÆÎçÎÖïÖçïçï÷ïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,##H° Áƒ*\Èpàƒ DhÀ`„† €Œˆ@ ƒ €D(’d ,(°`¥Á–KF@Pò›qîÌ©P‚Bàó¨Ã "0P“ÀƒTrL€ jNjjMÈs¬B|4˶m€;pygtk2tutorial/images/home.gif0100644000117200001670000000174310006075702015552 0ustar finlayfcfGIF87a#÷Œ!Œ!)”)1œ1BœBJ¥Jc­cs½s„½„ŒÆŒ”Δ¥Î¥µÞµÆÞÆÎçÎÖïÖçïçï÷ïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,#È%H° Áƒ*\Ȱ¡C4p ÁA24 @`42D@` Pè ‚J F`á I“(%X°`Ì@p@Ê ÈXAPŸJ``@ :H€:µä­¼)ðäÖœ\ €EÙ $Pµ6-Yå‚`U{¶«„« ‹Ö”&d õ@HˆAAÁˆ+^Ì!A‚Œ.Îla³„°Š\ͺµë†;pygtk2tutorial/images/important.gif0100644000117200001670000000207110006075702016632 0ustar finlayfcfGIF87a÷)))999BB1BBBJJJRRRZZ)ccccRccckkBkkkssR{{{„„„ŒŒŒŒ9ŒŒ{ŒŒŒ””Z””Œ”””œœZœœcœœ{œœœ¥¥c¥¥„¥¥”¥¥œ¥¥¥­­!­­9­­k­­{­­„­­Œ­­¥­­­µµJµµRµµŒµµµ½½½½Z½½„½½œ½½½ÆÆÆÆZÆÆÆÎÎsÎÎÎÖÖÖÖRÖÖcÖÖkÖÖÖÞÞÞÞ!ÞÞ1ÞÞ9ÞÞRÞÞÞçççç!çç)çç1ççZççcçç{çççïïïïïï1ïïBïïï÷÷÷÷÷÷1÷÷9÷÷J÷÷÷ÿÿÿÿÿÿÿÿ!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,þ·Hp‰Aƒ*ܲĆˆ ""BÄae!A+3,|Ò¤cG,à°È0ƒ‡$WRªT©CƒˆŠ ­dˆÑd¥Í”ML¸ˆ9Ó& |Üܰs Ž5WR@AR•M< ¸$J› ˜rSG 8Pܼ"i'c9,Ù""ÈØLd‹ÇOW¾`ÂØ+D2ÜÍ«2$þ<öG+ Æ;ÖÈ;$3¾ùÄÂ%ŠElqÁõæ 9æÞ¬»¥Ç‡±Ìá b­•:nB`jà‡M,0жö@؇/nò… 7µ ½)R¡ˆ „ó0r¡ 5žŒ}Â"ƒ ’­ET@A¤=‘*¨X‹žª ø'ÒO;pygtk2tutorial/images/warning.gif0100644000117200001670000000203410006075703016262 0ustar finlayfcfGIF87a÷!)1BJRZks{„Œ””{{œRRœZZœ{{¥¥99¥JJ¥„„¥””¥¥¥­­11­””µµ))µŒŒµœœµ¥¥µµµ½½­­½µµÆÆÆÆÆÆÎÎÎÎ))ÖÖ))ÖÖÖÞÞÞÞçç!!çççïïïïï÷÷÷÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,þyÈCŒƒâ Èp`Š6Dœ¸a‡… аp#‡ÇQ\̈#E…Ž Sæ@q#ÁPªL‰"ƒK"NªìðÀ…J–SpT9‚@€2C^”!éÇðù3Œ 3shÀ@Œ™7 ÀðÕÄœz {5kŒdeKvæŒÌ‹5+‚öŽÍšC ‚ûÎÑ€ªJºYg0@€,ŠSjˆêuf 8@ ˜Ùa@€3T¾˜ ƒGèÑ;¨P}¡µ@NNIã2C"tïÎñÂ͸ag}Q;ãmÑ7fDŸ>£…oçu˜À½;w ¶ ;pygtk2tutorial/images/note.gif0100644000117200001670000000205610006075702015565 0ustar finlayfcfGIF87a÷  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ,þÿ HðœAƒ*Ø«¥R:[˜ð1F¥¬{Çñœ1J”&R<÷ÐÅÎ(ÕZø®ÔÊ“[öªHi&L‚5 :+u³b)“öL¸S`Q‚ÆzÕRÚËÛA„ÿJ‹êí5k¥ÕræÍš3F„ F¤tnë9© · <—Ò˜³9M½u élF²ßQ£E‰”=5k-5öޤ·»Sîáz˜Ò¿wÖ=ëQb½sTö¸$eJ{Jq\³Ç«±=@žýWËšÀZ!×lž3ƦÂR±Æ<-%3!c[BŽ*òŸÓã'{ÙÆšxèÎá¯yýǨøÀ^” Süj l¿ÃÄŠQî9o;µ6‡‰$HÜÚ;pygtk2tutorial/images/next.gif0100644000117200001670000000170410006075702015575 0ustar finlayfcfGIF87a#÷„Œ!Œ!)”)1œ1BœBJ¥JR­Rc­ckµk„½„ŒÆŒ”Δ¥Î¥­Ö­µÞµÆÞÆÎçÎÖïÖçïçï÷ïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,#©+H° Áƒ*\Ȱ¡Ã‚L(!âć %pQ† "8T@€€À(¦>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ,êÿ HðœAƒ*xÎX)J¥"BtvoaÂ{½&ž»·±!%JÎ,2„èM¤3ˆïQêUQä¿s¥j)TÙK!Ìs W&tVªåÀ{{B¬ÁY°TI†¥ˆ¼7‚¥yF•¹Ð›Ñ…*‰^UÈhϪ k…„é“`Ö”xŽÒËž )åH»vä[¨?ÇÐ]ØömÝ÷ôªåëö&VÁ½¹ý'öð^…¥Bþ³êxpBÀ#ÏD¬°WÍVñ2 ±g-O¼z3&™ £ÖkQ«ÐÙk‘ý='Û˜ËÉ”=x"m‹çŠŒ|ü_@;pygtk2tutorial/sec-CommonRangeMethods.html0100644000117200001670000001210710227356761020065 0ustar finlayfcf8.3. Common Range Methods

8.3. Common Range Methods

The Range widget class is fairly complicated internally, but, like all the "base class" widgets, most of its complexity is only interesting if you want to hack on it. Also, almost all of the methods and signals it defines are only really used in writing derived widgets. There are, however, a few useful methods that will work on all range widgets.

8.3.1. Setting the Update Policy

The "update policy" of a range widget defines at what points during user interaction it will change the value field of its Adjustment and emit the "value_changed" signal on this Adjustment. The update policies are:

UPDATE_CONTINUOUS

This is the default. The "value_changed" signal is emitted continuously, i.e., whenever the slider is moved by even the tiniest amount.

UPDATE_DISCONTINUOUS

The "value_changed" signal is only emitted once the slider has stopped moving and the user has released the mouse button.

UPDATE_DELAYED

The "value_changed" signal is emitted when the user releases the mouse button, or if the slider stops moving for a short period of time.

The update policy of a range widget can be set by passing it to this method:

  range.set_update_policy(policy)

8.3.2. Getting and Setting Adjustments

Getting and setting the adjustment for a range widget "on the fly" is done, predictably, with:

  adjustment = range.get_adjustment()

  range.set_adjustment(adjustment)

The get_adjustment() method returns a reference to the adjustment to which range is connected.

The set_adjustment() method does absolutely nothing if you pass it the adjustment that range is already using, regardless of whether you changed any of its fields or not. If you pass it a new Adjustment, it will unreference the old one if it exists (possibly destroying it), connect the appropriate signals to the new one, and will recalculate the size and/or position of the slider and redraw if necessary. As mentioned in the section on adjustments, if you wish to reuse the same Adjustment, when you modify its values directly, you should emit the "changed" signal on it, like this:

  adjustment.emit("changed")
pygtk2tutorial/sec-UpgradedHelloWorld.html0100644000117200001670000001614310227356757020074 0ustar finlayfcf3.2. An Upgraded Hello World

3.2. An Upgraded Hello World

    1   #!/usr/bin/env python
    2
    3   # example helloworld2.py
    4
    5   import pygtk
    6   pygtk.require('2.0')
    7   import gtk
    8
    9   class HelloWorld2:
   10
   11       # Our new improved callback.  The data passed to this method
   12       # is printed to stdout.
   13       def callback(self, widget, data):
   14           print "Hello again - %s was pressed" % data
   15
   16       # another callback
   17       def delete_event(self, widget, event, data=None):
   18           gtk.main_quit()
   19           return False
   20
   21       def __init__(self):
   22           # Create a new window
   23           self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   24
   25           # This is a new call, which just sets the title of our
   26           # new window to "Hello Buttons!"
   27           self.window.set_title("Hello Buttons!")
   28
   29           # Here we just set a handler for delete_event that immediately
   30           # exits GTK.
   31           self.window.connect("delete_event", self.delete_event)
   32
   33           # Sets the border width of the window.
   34           self.window.set_border_width(10)
   35
   36           # We create a box to pack widgets into.  This is described in detail
   37           # in the "packing" section. The box is not really visible, it
   38           # is just used as a tool to arrange widgets.
   39           self.box1 = gtk.HBox(False, 0)
   40
   41           # Put the box into the main window.
   42           self.window.add(self.box1)
   43
   44           # Creates a new button with the label "Button 1".
   45           self.button1 = gtk.Button("Button 1")
   46
   47           # Now when the button is clicked, we call the "callback" method
   48           # with a pointer to "button 1" as its argument
   49           self.button1.connect("clicked", self.callback, "button 1")
   50
   51           # Instead of add(), we pack this button into the invisible
   52           # box, which has been packed into the window.
   53           self.box1.pack_start(self.button1, True, True, 0)
   54
   55           # Always remember this step, this tells GTK that our preparation for
   56           # this button is complete, and it can now be displayed.
   57           self.button1.show()
   58
   59           # Do these same steps again to create a second button
   60           self.button2 = gtk.Button("Button 2")
   61
   62           # Call the same callback method with a different argument,
   63           # passing a pointer to "button 2" instead.
   64           self.button2.connect("clicked", self.callback, "button 2")
   65
   66           self.box1.pack_start(self.button2, True, True, 0)
   67
   68           # The order in which we show the buttons is not really important, but I
   69           # recommend showing the window last, so it all pops up at once.
   70           self.button2.show()
   71           self.box1.show()
   72           self.window.show()
   73
   74   def main():
   75       gtk.main()
   76
   77   if __name__ == "__main__":
   78       hello = HelloWorld2()
   79       main()

Running helloworld2.py produces the window illustrated in Figure 3.1, “Upgraded Hello World Example”.

Figure 3.1. Upgraded Hello World Example

Upgraded Hello World Example

You'll notice this time there is no easy way to exit the program, you have to use your window manager or command line to kill it. A good exercise for the reader would be to insert a third "Quit" button that will exit the program. You may also wish to play with the options to pack_start() while reading the next section. Try resizing the window, and observe the behavior.

A short commentary on the code differences from the first helloworld program is in order.

As noted above there is no "destroy" event handler in the upgraded helloworld.

Lines 13-14 define a callback method which is similar to the hello() callback in the first helloworld. The difference is that the callback prints a message including data passed in.

Line 27 sets a title string to be used on the titlebar of the window (see Figure 3.1, “Upgraded Hello World Example”).

Line 39 creates a horizontal box (gtk.HBox) to hold the two buttons that are created in lines 45 and 60. Line 42 adds the horizontal box to the window container.

Lines 49 and 64 connect the callback() method to the "clicked" signal of the buttons. Each button sets up a different string to be passed to the callback() method when invoked.

Lines 53 and 66 pack the buttons into the horizontal box. Lines 57 and 70 ask GTK to display the buttons.

Lines 71-72 ask GTK to display the box and the window respectively.

pygtk2tutorial/sec-TreeViewColumns.html0100644000117200001670000001646310227356771017441 0ustar finlayfcf14.5. TreeViewColumns

14.5. TreeViewColumns

14.5.1. Creating TreeViewColumns

A TreeViewColumn is created using the constructor:

  treeviewcolumn = gtk.TreeViewColumn(title=None, cell_renderer=None, ...)

where title is the string to be used as the column header label, and cell_renderer is the first CellRenderer to pack in the column. Additional arguments that are passed to the constructor are keyword values (in the format attribute=column) that set attributes on cell_renderer. For example:

  treeviewcolumn = gtk.TreeViewColumn('States', cell, text=0, foreground=1)

creates a TreeViewColumn with the CellRendererText cell retrieving its text from the first column of the tree model and the text color from the second column.

14.5.2. Managing CellRenderers

A CellRenderer can be added to a TreeViewColumn using one of the methods:

  treeviewcolumn.pack_start(cell, expand)
  treeviewcolumn.pack_end(cell, expand)

pack_start() and pack_end() add cell to the start or end, respectively, of the TreeViewColumn. If expand is TRUE, cell will share in any available extra space allocated by the TreeViewColumn.

The get_cell_renderers() method:

  cell_list = treeviewcolumn.get_cell_renderers()

returns a list of all the CellRenderers in the column.

The clear() method removes all the CellRenderer attributes from the TreeViewColumn:

  treeviewcolumn.clear()

There are a large number of other methods available for a TreeViewColumn - mostly dealing with setting and getting properties. See the PyGTK Reference Manual for more information on the TreeViewColumn properties. The capability of using the built-in sorting facility is set using the method:

  treeviewcolumn.set_sort_column_id(sort_column_id)

sets sort_column_id as the tree model sort column ID to use when sorting the TreeView display. This method also sets the "clickable" property of the column that allows the user to click on the column header to activate the sorting. When the user clicks on the column header, the TreeViewColumn sort column ID is set as the TreeModel sort column ID and the TreeModel rows are resorted using the associated sort comparison function. The automatic sorting facility also toggles the sort order of the column and manages the display of the sort indicator. See Section 14.2.9, “Sorting TreeModel Rows” for more information on sort column IDs and sort comparison functions. Typically when using a ListStore or TreeStore the default sort column ID (i.e. the column index) of the TreeModel column associated with the TreeViewColumn is set as the TreeViewColumn sort column ID.

If you use the TreeViewColumn headers for sorting by using the set_sort_column_id() method, you don't need to use the TreeSortable set_sort_column_id() method.

You can track the sorting operations or use a header click for your own purposes by connecting to the "clicked" signal of the TreeView column. The callback function should be defined as:

  def callback(treeviewcolumn, user_data, ...)
pygtk2tutorial/sec-Rulers.html0100644000117200001670000002175710227356762015624 0ustar finlayfcf9.7. Rulers

9.7. Rulers

Ruler widgets are used to indicate the location of the mouse pointer in a given window. A window can have a horizontal ruler spanning across the width and a vertical ruler spanning down the height. A small triangular indicator on the ruler shows the exact location of the pointer relative to the ruler.

A ruler must first be created. Horizontal and vertical rulers are created using the functions:

  hruler = gtk.HRuler()    # horizontal ruler

  vruler = gtk.VRuler()    # vertical ruler

Once a ruler is created, we can define the unit of measurement. Units of measure for rulers can be PIXELS, INCHES or CENTIMETERS. This is set using the method:

  ruler.set_metric(metric)

The default measure is PIXELS.

  ruler.set_metric(gtk.PIXELS)

Other important characteristics of a ruler are how to mark the units of scale and where the position indicator is initially placed. These are set for a ruler using the method:

  ruler.set_range(lower, upper, position, max_size)

The lower and upper arguments define the extent of the ruler, and max_size is the largest possible number that will be displayed. Position defines the initial position of the pointer indicator within the ruler.

A vertical ruler can span an 800 pixel wide window thus:

  vruler.set_range(0, 800, 0, 800)

The markings displayed on the ruler will be from 0 to 800, with a number for every 100 pixels. If instead we wanted the ruler to range from 7 to 16, we would code:

  vruler.set_range(7, 16, 0, 20)

The indicator on the ruler is a small triangular mark that indicates the position of the pointer relative to the ruler. If the ruler is used to follow the mouse pointer, the "motion_notify_event" signal should be connected to the "motion_notify_event" method of the ruler. We need to setup a "motion_notify_event" callback for the area and use connect_object() to get the ruler to emit a "motion_notify_signal":

  def motion_notify(ruler, event):
      return ruler.emit("motion_notify_event", event)

  area.connect_object("motion_notify_event", motion_notify, ruler)

The rulers.py example program creates a drawing area with a horizontal ruler above it and a vertical ruler to the left of it. The size of the drawing area is 600 pixels wide by 400 pixels high. The horizontal ruler spans from 7 to 13 with a mark every 100 pixels, while the vertical ruler spans from 0 to 400 with a mark every 100 pixels. Placement of the drawing area and the rulers is done using a table. Figure 9.8, “Rulers Example” illustrates the result:

Figure 9.8. Rulers Example

Rulers Example

The rulers.py source code is:

    1	#!/usr/bin/env python
    2	
    3	# example rulers.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	
    9	class RulersExample:
   10	    XSIZE = 400
   11	    YSIZE = 400
   12	
   13	    # This routine gets control when the close button is clicked
   14	    def close_application(self, widget, event, data=None):
   15	        gtk.main_quit()
   16	        return False
   17	
   18	    def __init__(self):
   19	        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   20	        window.connect("delete_event", self.close_application)
   21	        window.set_border_width(10)
   22	
   23	        # Create a table for placing the ruler and the drawing area
   24	        table = gtk.Table(3, 2, False)
   25	        window.add(table)
   26	
   27	        area = gtk.DrawingArea()
   28	        area.set_size_request(self.XSIZE, self.YSIZE)
   29	        table.attach(area, 1, 2, 1, 2,
   30	                     gtk.EXPAND|gtk.FILL, gtk.FILL, 0, 0 )
   31	        area.set_events(gtk.gdk.POINTER_MOTION_MASK |
   32	                        gtk.gdk.POINTER_MOTION_HINT_MASK )
   33	
   34	        # The horizontal ruler goes on top. As the mouse moves across the
   35	        # drawing area, a motion_notify_event is passed to the
   36	        # appropriate event handler for the ruler.
   37	        hrule = gtk.HRuler()
   38	        hrule.set_metric(gtk.PIXELS)
   39	        hrule.set_range(7, 13, 0, 20)
   40	        def motion_notify(ruler, event):
   41	            return ruler.emit("motion_notify_event", event)
   42	        area.connect_object("motion_notify_event", motion_notify, hrule)
   43	        table.attach(hrule, 1, 2, 0, 1,
   44	                     gtk.EXPAND|gtk.SHRINK|gtk.FILL, gtk.FILL, 0, 0 )
   45	    
   46	        # The vertical ruler goes on the left. As the mouse moves across
   47	        # the drawing area, a motion_notify_event is passed to the
   48	        # appropriate event handler for the ruler.
   49	        vrule = gtk.VRuler()
   50	        vrule.set_metric(gtk.PIXELS)
   51	        vrule.set_range(0, self.YSIZE, 10, self.YSIZE)
   52	        area.connect_object("motion_notify_event", motion_notify, vrule)
   53	        table.attach(vrule, 0, 1, 1, 2,
   54	                     gtk.FILL, gtk.EXPAND|gtk.SHRINK|gtk.FILL, 0, 0 )
   55	
   56	        # Now show everything
   57	        area.show()
   58	        hrule.show()
   59	        vrule.show()
   60	        table.show()
   61	        window.show()
   62	
   63	def main():
   64	    gtk.main()
   65	    return 0
   66	
   67	if __name__ == "__main__":
   68	    RulersExample()
   69	    main()

Lines 42 and 52 connect the motion_notify() callback to the area but passing hrule in line 42 and vrule in line 52 as user data. The motion_notify() callback will be called twice each time the mouse moves - once with hrule and once with vrule.

pygtk2tutorial/sec-RetrievingTheSelection.html0100644000117200001670000002542510227357002020755 0ustar finlayfcf21.2. Retrieving the Selection

21.2. Retrieving the Selection

Retrieving the selection is an asynchronous process. To start the process, you call:

  result = widget.selection_convert(selection, target, time=0)

This converts the selection into the form specified by target. selection is an atom corresponding to the selection type; the common selections are the strings:

  PRIMARY

  SECONDARY

If at all possible, the time field should be the time from the event that triggered the selection. This helps make sure that events occur in the order that the user requested them. However, if it is not available (for instance, if the conversion was triggered by a "clicked" signal), then you can use 0 which means use the current time. result is TRUE if the conversion succeeded, FALSE otherwise.

When the selection owner responds to the request, a "selection_received" signal is sent to your application. The handler for this signal receives a gtk.SelectionData object, which has the following attributes:

  selection
  target
  type
  format
  data

selection and target are the values you gave in your selection_convert() method.

type is an atom that identifies the type of data returned by the selection owner. Some possible values are "STRING", a string of latin-1 characters, "ATOM", a series of atoms, "INTEGER", an integer, "image/x-xpixmap", etc. Most targets can only return one type.

The list of standard atoms in X and GTK+ is:

  PRIMARY
  SECONDARY
  ARC
  ATOM
  BITMAP
  CARDINAL
  COLORMAP
  CURSOR
  CUT_BUFFER0
  CUT_BUFFER1
  CUT_BUFFER2
  CUT_BUFFER3
  CUT_BUFFER4
  CUT_BUFFER5
  CUT_BUFFER6
  CUT_BUFFER7
  DRAWABLE
  FONT
  INTEGER
  PIXMAP
  POINT
  RECTANGLE
  RESOURCE_MANAGER
  RGB_COLOR_MAP
  RGB_BEST_MAP
  RGB_BLUE_MAP
  RGB_DEFAULT_MAP
  RGB_GRAY_MAP
  RGB_GREEN_MAP
  RGB_RED_MAP
  STRING
  VISUALID
  WINDOW
  WM_COMMAND
  WM_HINTS
  WM_CLIENT_MACHINE
  WM_ICON_NAME
  WM_ICON_SIZE
  WM_NAME
  WM_NORMAL_HINTS
  WM_SIZE_HINTS
  WM_ZOOM_HINTS
  MIN_SPACE
  NORM_SPACE
  MAX_SPACE  END_SPACE,
  SUPERSCRIPT_X
  SUPERSCRIPT_Y
  SUBSCRIPT_X
  SUBSCRIPT_Y
  UNDERLINE_POSITION
  UNDERLINE_THICKNESS
  STRIKEOUT_ASCENT
  STRIKEOUT_DESCENT
  ITALIC_ANGLE
  X_HEIGHT
  QUAD_WIDTH
  WEIGHT
  POINT_SIZE
  RESOLUTION
  COPYRIGHT
  NOTICE
  FONT_NAME
  FAMILY_NAME
  FULL_NAME
  CAP_HEIGHT
  WM_CLASS
  WM_TRANSIENT_FOR
  CLIPBOARD

format gives the length of the units (for instance characters) in bits. Usually, you don't care about this when receiving data.

data is the returned data in the form of a string.

PyGTK wraps all received data into a string. This makes it easy to handle string targets. To retrieve targets of other types (e.g. ATOM or INTEGER) the program must extract the information from the returned string. PyGTK provides two methods to retrieve text and a list of targets from the selection data:

  text = selection_data.get_text()

  targets = selection_data.get_targets()

where text is a string containing the text of the selection and targets is a list of the targets supported by the selection.

Given a gtk.SelectionData containing a list of targets the method:

  has_text = selection_data.targets_include_text()

will return TRUE if one or more of the targets can provide text.

The getselection.py example program demonstrates the retrieving of a "STRING" or "TARGETS" target from the primary selection and printing the corresponding data to the console when the associated button is "clicked". Figure 21.1, “Get Selection Example” illustrates the program display:

Figure 21.1. Get Selection Example

Get Selection Example

The source code for the getselection.py program is:

    1	#!/usr/bin/env python
    2	
    3	# example getselection.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	
    9	class GetSelectionExample:
   10	    # Signal handler invoked when user clicks on the
   11	    # "Get String Target" button
   12	    def get_stringtarget(self, widget):
   13	        # And request the "STRING" target for the primary selection
   14	        ret = widget.selection_convert("PRIMARY", "STRING")
   15	        return
   16	
   17	    # Signal handler invoked when user clicks on the "Get Targets" button
   18	    def get_targets(self, widget):
   19	        # And request the "TARGETS" target for the primary selection
   20	        ret = widget.selection_convert("PRIMARY", "TARGETS")
   21	        return
   22	
   23	    # Signal handler called when the selections owner returns the data
   24	    def selection_received(self, widget, selection_data, data):
   25	        # Make sure we got the data in the expected form
   26	        if str(selection_data.type) == "STRING":
   27	            # Print out the string we received
   28	            print "STRING TARGET: %s" % selection_data.get_text()
   29	
   30	        elif str(selection_data.type) == "ATOM":
   31	            # Print out the target list we received
   32	            targets = selection_data.get_targets()
   33	            for target in targets:
   34	                name = str(target)
   35	                if name != None:
   36	                    print "%s" % name
   37	                else:
   38	                    print "(bad target)"
   39	        else:
   40	            print "Selection was not returned as \"STRING\" or \"ATOM\"!"
   41	
   42	        return False
   43	  
   44	
   45	    def __init__(self):
   46	        # Create the toplevel window
   47	        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   48	        window.set_title("Get Selection")
   49	        window.set_border_width(10)
   50	        window.connect("destroy", lambda w: gtk.main_quit())
   51	
   52	        vbox = gtk.VBox(False, 0)
   53	        window.add(vbox)
   54	        vbox.show()
   55	
   56	        # Create a button the user can click to get the string target
   57	        button = gtk.Button("Get String Target")
   58	        eventbox = gtk.EventBox()
   59	        eventbox.add(button)
   60	        button.connect_object("clicked", self.get_stringtarget, eventbox)
   61	        eventbox.connect("selection_received", self.selection_received)
   62	        vbox.pack_start(eventbox)
   63	        eventbox.show()
   64	        button.show()
   65	
   66	        # Create a button the user can click to get targets
   67	        button = gtk.Button("Get Targets")
   68	        eventbox = gtk.EventBox()
   69	        eventbox.add(button)
   70	        button.connect_object("clicked", self.get_targets, eventbox)
   71	        eventbox.connect("selection_received", self.selection_received)
   72	        vbox.pack_start(eventbox)
   73	        eventbox.show()
   74	        button.show()
   75	
   76	        window.show()
   77	
   78	def main():
   79	    gtk.main()
   80	    return 0
   81	
   82	if __name__ == "__main__":
   83	    GetSelectionExample()
   84	    main()

Lines 30-38 handle the retrieval of the "TARGETS" selection data and print the list of target names. The buttons are enclosed in their own eventboxes because a selection must be associated with a gtk.gdkWindow and buttons are "windowless" widgets in GTK+2.0.

pygtk2tutorial/sec-Arrows.html0100644000117200001670000001354510227356761015620 0ustar finlayfcf9.2. Arrows

9.2. Arrows

The Arrow widget draws an arrowhead, facing in a number of possible directions and having a number of possible styles. It can be very useful when placed on a button in many applications. Like the Label widget, it emits no signals.

There are only two calls for manipulating an Arrow widget:

  arrow = gtk.Arrow(arrow_type, shadow_type)

  arrow.set(arrow_type, shadow_type)

The first creates a new arrow widget with the indicated type and appearance. The second allows these values to be altered retrospectively. The arrow_type argument may take one of the following values:

  ARROW_UP
  ARROW_DOWN
  ARROW_LEFT
  ARROW_RIGHT

These values obviously indicate the direction in which the arrow will point. The shadow_type argument may take one of these values:

  SHADOW_IN
  SHADOW_OUT   # the default
  SHADOW_ETCHED_IN
  SHADOW_ETCHED_OUT

The arrow.py example program briefly illustrates their use. Figure 9.2, “Arrows Buttons Examples” illustrates the result of running the program:

Figure 9.2. Arrows Buttons Examples

Arrows Buttons Examples

The source code for arrow.py is:

    1	#!/usr/bin/env python
    2	
    3	# example arrow.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	
    9	# Create an Arrow widget with the specified parameters
   10	# and pack it into a button
   11	def create_arrow_button(arrow_type, shadow_type):
   12	    button = gtk.Button();
   13	    arrow = gtk.Arrow(arrow_type, shadow_type);
   14	    button.add(arrow)
   15	    button.show()
   16	    arrow.show()
   17	    return button
   18	
   19	class Arrows:
   20	    def __init__(self):
   21	        # Create a new window
   22	        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   23	
   24	        window.set_title("Arrow Buttons")
   25	
   26	        # It's a good idea to do this for all windows.
   27	        window.connect("destroy", lambda x: gtk.main_quit())
   28	
   29	        # Sets the border width of the window.
   30	        window.set_border_width(10)
   31	
   32	        # Create a box to hold the arrows/buttons
   33	        box = gtk.HBox(False, 0)
   34	        box.set_border_width(2)
   35	        window.add(box)
   36	
   37	        # Pack and show all our widgets
   38	        box.show()
   39	
   40	        button = create_arrow_button(gtk.ARROW_UP, gtk.SHADOW_IN)
   41	        box.pack_start(button, False, False, 3)
   42	
   43	        button = create_arrow_button(gtk.ARROW_DOWN, gtk.SHADOW_OUT)
   44	        box.pack_start(button, False, False, 3)
   45	  
   46	        button = create_arrow_button(gtk.ARROW_LEFT, gtk.SHADOW_ETCHED_IN)
   47	        box.pack_start(button, False, False, 3)
   48	  
   49	        button = create_arrow_button(gtk.ARROW_RIGHT, gtk.SHADOW_ETCHED_OUT)
   50	        box.pack_start(button, False, False, 3)
   51	  
   52	        window.show()
   53	
   54	def main():
   55	    gtk.main()
   56	    return 0
   57	
   58	if __name__ == "__main__":
   59	    Arrows()
   60	    main()
pygtk2tutorial/sec-ExampleRcFile.html0100644000117200001670000001314010227357003017000 0ustar finlayfcf23.3. Example rc file

23.3. Example rc file

# pixmap_path "<dir 1>:<dir 2>:<dir 3>:..."
#
pixmap_path "/usr/include/X11R6/pixmaps:/home/imain/pixmaps"
#
# style <name> [= <name>]
# {
#   <option>
# }
#
# widget <widget_set> style <style_name>
# widget_class <widget_class_set> style <style_name>

# Here is a list of all the possible states.  Note that some do not apply to
# certain widgets.
#
# NORMAL - The normal state of a widget, without the mouse over top of
# it, and not being pressed, etc.
#
# PRELIGHT - When the mouse is over top of the widget, colors defined
# using this state will be in effect.
#
# ACTIVE - When the widget is pressed or clicked it will be active, and
# the attributes assigned by this tag will be in effect.
#
# INSENSITIVE - When a widget is set insensitive, and cannot be
# activated, it will take these attributes.
#
# SELECTED - When an object is selected, it takes these attributes.
#
# Given these states, we can set the attributes of the widgets in each of
# these states using the following directives.
#
# fg - Sets the foreground color of a widget.
# fg - Sets the background color of a widget.
# bg_pixmap - Sets the background of a widget to a tiled pixmap.
# font - Sets the font to be used with the given widget.
#

# This sets a style called "button".  The name is not really important, as
# it is assigned to the actual widgets at the bottom of the file.

style "window"
{
  #This sets the padding around the window to the pixmap specified.
  #bg_pixmap[<STATE>] = "<pixmap filename>"
  bg_pixmap[NORMAL] = "warning.xpm"
}

style "scale"
{
  #Sets the foreground color (font color) to red when in the "NORMAL"
  #state.
  
  fg[NORMAL] = { 1.0, 0, 0 }
  
  #Sets the background pixmap of this widget to that of its parent.
  bg_pixmap[NORMAL] = "<parent>"
}

style "button"
{
  # This shows all the possible states for a button.  The only one that
  # doesn't apply is the SELECTED state.
  
  fg[PRELIGHT] = { 0, 1.0, 1.0 }
  bg[PRELIGHT] = { 0, 0, 1.0 }
  bg[ACTIVE] = { 1.0, 0, 0 }
  fg[ACTIVE] = { 0, 1.0, 0 }
  bg[NORMAL] = { 1.0, 1.0, 0 }
  fg[NORMAL] = { .99, 0, .99 }
  bg[INSENSITIVE] = { 1.0, 1.0, 1.0 }
  fg[INSENSITIVE] = { 1.0, 0, 1.0 }
}

# In this example, we inherit the attributes of the "button" style and then
# override the font and background color when prelit to create a new
# "main_button" style.

style "main_button" = "button"
{
  font = "-adobe-helvetica-medium-r-normal--*-100-*-*-*-*-*-*"
  bg[PRELIGHT] = { 0.75, 0, 0 }
}

style "toggle_button" = "button"
{
  fg[NORMAL] = { 1.0, 0, 0 }
  fg[ACTIVE] = { 1.0, 0, 0 }
  
  # This sets the background pixmap of the toggle_button to that of its
  # parent widget (as defined in the application).
  bg_pixmap[NORMAL] = "<parent>"
}

style "text"
{
  bg_pixmap[NORMAL] = "marble.xpm"
  fg[NORMAL] = { 1.0, 1.0, 1.0 }
}

style "ruler"
{
  font = "-adobe-helvetica-medium-r-normal--*-80-*-*-*-*-*-*"
}

# pixmap_path "~/.pixmaps"

# These set the widget types to use the styles defined above.
# The widget types are listed in the class hierarchy, but could probably be
# just listed in this document for the users reference.

widget_class "GtkWindow" style "window"
widget_class "GtkDialog" style "window"
widget_class "GtkFileSelection" style "window"
widget_class "*Gtk*Scale" style "scale"
widget_class "*GtkCheckButton*" style "toggle_button"
widget_class "*GtkRadioButton*" style "toggle_button"
widget_class "*GtkButton*" style "button"
widget_class "*Ruler" style "ruler"
widget_class "*GtkText" style "text"

# This sets all the buttons that are children of the "main window" to
# the main_button style.  These must be documented to be taken advantage of.
widget "main window.*GtkButton*" style "main_button"
pygtk2tutorial/ch-TreeViewWidget.html0100644000117200001670000004665110227356772017067 0ustar finlayfcfChapter 14. Tree View Widget

Chapter 14. Tree View Widget

Table of Contents

14.1. Overview
14.2. The TreeModel Interface and Data Stores
14.2.1. Introduction
14.2.2. Creating TreeStore and ListStore Objects
14.2.3. Referring to TreeModel Rows
14.2.4. Adding Rows
14.2.5. Removing Rows
14.2.6. Managing Row Data
14.2.7. Python Protocol Support
14.2.8. TreeModel Signals
14.2.9. Sorting TreeModel Rows
14.3. TreeViews
14.3.1. Creating a TreeView
14.3.2. Getting and Setting the TreeView Model
14.3.3. Setting TreeView Properties
14.4. CellRenderers
14.4.1. Overview
14.4.2. CellRenderer Types
14.4.3. CellRenderer Properties
14.4.4. CellRenderer Attributes
14.4.5. Cell Data Function
14.4.6. CellRendererText Markup
14.4.7. Editable Text Cells
14.4.8. Activatable Toggle Cells
14.4.9. Editable and Activatable Cell Example Program
14.5. TreeViewColumns
14.5.1. Creating TreeViewColumns
14.5.2. Managing CellRenderers
14.6. Manipulating TreeViews
14.6.1. Managing Columns
14.6.2. Expanding and Collapsing Child Rows
14.7. TreeView Signals
14.8. TreeSelections
14.8.1. Getting the TreeSelection
14.8.2. TreeSelection Modes
14.8.3. Retrieving the Selection
14.8.4. Using a TreeSelection Function
14.8.5. Selecting and Unselecting Rows
14.9. TreeView Drag and Drop
14.9.1. Drag and Drop Reordering
14.9.2. External Drag and Drop
14.9.3. TreeView Drag and Drop Example
14.10. TreeModelSort and TreeModelFilter
14.10.1. TreeModelSort
14.10.2. TreeModelFilter
14.11. The Generic TreeModel
14.11.1. GenericTreeModel Overview
14.11.2. The GenericTreeModel Interface
14.11.3. Adding and Removing Rows
14.11.4. Memory Management
14.11.5. Other Interfaces
14.11.6. Applying The GenericTreeModel
14.12. The Generic CellRenderer

The TreeView widget displays lists and trees displaying multiple columns. It replaces the previous set of List, CList, Tree and CTree widgets with a much more powerful and flexible set of objects that use the Model-View-Controller (MVC) principle to provide the following features:

  • two pre-defined models: one for lists and one for trees
  • multiple views of the same model are automatically updated when the model changes
  • selective display of the model data
  • use of model data to customize the TreeView display on a row-by-row basis
  • pre-defined data rendering objects for displaying text, images and boolean data
  • stackable models for providing sorted and filtered views of the underlying model data
  • reorderable and resizeable columns
  • automatic sort by clicking column headers
  • drag and drop support
  • support for custom models entirely written in Python
  • support for custom cell renderers entirely written in Python

Of course, all this capability comes at the price of a significantly more complex set of objects and interfaces that appear overwhelming at first. In the rest of this chapter we'll explore the TreeView objects and interfaces to reach an understanding of common usage. The more esoteric aspects, you'll have to explore on your own.

We'll start with a quick overview tour of the objects and interfaces and then dive into the TreeModel interface and the predefined ListStore and TreeStore classes.

14.1. Overview

A TreeView widget is the user interface object that displays the data stored in an object that implements the TreeModel interface. Two base tree model classes are provided in PyGTK 2.0:

  • the TreeStore that provides hierarchical data storage organized as tree rows with columnar data. Each tree row can have zero or more child rows. All rows must have the same number of columns.
  • the ListStore that provides tabular data storage organized in rows and columns similar to a table in a relational database. The ListStore is really a simplified version of a TreeStore where the rows have no children. It has been created to provide a simpler (and presumably more efficient) interface to this common data model. And,

The two additional tree models stack on top of (or interpose on) the base models:

  • the TreeModelSort that provides a model where the data of the underlying tree model is maintained in a sorted order. And,
  • the TreeModelFilter that provides a model containing a subset of the data in the underlying model. Note this model is available only in PyGTK 2.4 and above.

A TreeView displays all of the rows of a TreeModel but may display only some of the columns. Also the columns may be presented in a different order than the TreeModel stores them.

The TreeView uses TreeViewColumn objects to organize the display of the columnar data. Each TreeViewColumn displays one column with an optional header that may contain the data from several TreeModel columns. The individual TreeViewColumns are packed (similar to HBox containers) with CellRenderer objects to render the display of the associated data from a TreeModel row and column location. There are three predefined CellRenderer classes:

  • the CellRendererPixbuf that renders a pixbuf image into the cells of a TreeViewColumn.
  • the CellRendererText that renders a string into the cells of a TreeViewColumn. It will convert the column data to a string format if needed i.e. if displaying a model column containing float data, the CellRendererText will convert it to a string before rendering it.
  • the CellRendererToggle that renders a boolean value as a toggle button into the cells of a TreeViewColumn.

A TreeViewColumn can contain several CellRenderer objects to provide a column that, for example, may have an image and text packed together.

Finally, the TreeIter, TreeRowReference and TreeSelection objects provide a transient pointer to a row in a TreeModel, a persistent pointer to a row in a TreeModel and an object managing the selections in a TreeView.

A TreeView display is composed using the following general operations not necessarily in this order:

  • A tree model object is created usually a ListStore or TreeStore with one or more columns of a specified data type.
  • The tree model may be populated with one or more rows of data.
  • A TreeView widget is created and associated with the tree model.
  • One or more TreeViewColumns are created and inserted in the TreeView. Each of these will present a single display column.
  • For each TreeViewColumn one or more CellRenderers are created and added to the TreeViewColumn.
  • The attributes of each CellRenderer are set to indicate from which column of the tree model to retrieve the attribute data. for example the text to be rendered. This allows the CellRenderer to render each column in a row differently.
  • The TreeView is inserted and displayed in a Window or ScrolledWindow.
  • The data in the tree model is manipulated programmatically in response to user actions. The TreeView will automatically track the changes.

The example program basictreeview.py illustrates the creation and display of a simple TreeView:

    1   #!/usr/bin/env python
    2
    3   # example basictreeview.py
    4
    5   import pygtk
    6   pygtk.require('2.0')
    7   import gtk
    8
    9   class BasicTreeViewExample:
   10
   11       # close the window and quit
   12       def delete_event(self, widget, event, data=None):
   13           gtk.main_quit()
   14           return False
   15
   16       def __init__(self):
   17           # Create a new window
   18           self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   19
   20           self.window.set_title("Basic TreeView Example")
   21
   22           self.window.set_size_request(200, 200)
   23
   24           self.window.connect("delete_event", self.delete_event)
   25
   26           # create a TreeStore with one string column to use as the model
   27           self.treestore = gtk.TreeStore(str)
   28
   29           # we'll add some data now - 4 rows with 3 child rows each
   30           for parent in range(4):
   31               piter = self.treestore.append(None, ['parent %i' % parent])
   32               for child in range(3):
   33                   self.treestore.append(piter, ['child %i of parent %i' %
   34                                                 (child, parent)])
   35
   36           # create the TreeView using treestore
   37           self.treeview = gtk.TreeView(self.treestore)
   38
   39           # create the TreeViewColumn to display the data
   40           self.tvcolumn = gtk.TreeViewColumn('Column 0')
   41
   42           # add tvcolumn to treeview
   43           self.treeview.append_column(self.tvcolumn)
   44
   45           # create a CellRendererText to render the data
   46           self.cell = gtk.CellRendererText()
   47
   48           # add the cell to the tvcolumn and allow it to expand
   49           self.tvcolumn.pack_start(self.cell, True)
   50
   51           # set the cell "text" attribute to column 0 - retrieve text
   52           # from that column in treestore
   53           self.tvcolumn.add_attribute(self.cell, 'text', 0)
   54
   55           # make it searchable
   56           self.treeview.set_search_column(0)
   57
   58           # Allow sorting on the column
   59           self.tvcolumn.set_sort_column_id(0)
   60
   61           # Allow drag and drop reordering of rows
   62           self.treeview.set_reorderable(True)
   63
   64           self.window.add(self.treeview)
   65
   66           self.window.show_all()
   67
   68   def main():
   69       gtk.main()
   70
   71   if __name__ == "__main__":
   72       tvexample = BasicTreeViewExample()
   73       main()

In real programs the TreeStore would likely be populated with data after the TreeView is displayed due to some user action. We'll look at the details of the TreeView interfaces in more detail in the sections to come. Figure 14.1, “Basic TreeView Example Program” shows the window created by the basictreeview.py program after a couple of parent rows have been expanded.

Figure 14.1. Basic TreeView Example Program

Basic TreeView Example Program

Next let's examine the TreeModel interface and the models that implement it.

pygtk2tutorial/ch-Scribble.html0100644000117200001670000000567010227357004015677 0ustar finlayfcfChapter 24. Scribble, A Simple Example Drawing Program

Chapter 24. Scribble, A Simple Example Drawing Program

24.1. Scribble Overview

In this section, we will build a simple drawing program. In the process, we will examine how to handle mouse events, how to draw in a window, and how to do drawing better by using a backing pixmap.

Figure 24.1. Scribble Drawing Program Example

Scribble Drawing Program Example
pygtk2tutorial/sec-Events.html0100644000117200001670000001421410227356757015606 0ustar finlayfcf2.3. Events

2.3. Events

In addition to the signal mechanism described above, there is a set of events that reflect the X event mechanism. Callbacks may also be attached to these events. These events are:

  event
  button_press_event
  button_release_event
  scroll_event
  motion_notify_event
  delete_event
  destroy_event
  expose_event
  key_press_event
  key_release_event
  enter_notify_event
  leave_notify_event
  configure_event
  focus_in_event
  focus_out_event
  map_event
  unmap_event
  property_notify_event
  selection_clear_event
  selection_request_event
  selection_notify_event
  proximity_in_event
  proximity_out_event
  visibility_notify_event
  client_event
  no_expose_event
  window_state_event

In order to connect a callback function to one of these events you use the method connect() , as described above, using one of the above event names as the name parameter. The callback function (or method) for events has a slightly different form than that for signals:

  def callback_func(widget, event, callback_data ):

  def callback_meth(self, widget, event, callback_data ):

GdkEvent is a python object type whose type attribute will indicate which of the above events has occurred. The other attributes of the event will depend upon the type of the event. Possible values for the types are:

  NOTHING
  DELETE
  DESTROY
  EXPOSE
  MOTION_NOTIFY
  BUTTON_PRESS
  _2BUTTON_PRESS
  _3BUTTON_PRESS
  BUTTON_RELEASE
  KEY_PRESS
  KEY_RELEASE
  ENTER_NOTIFY
  LEAVE_NOTIFY
  FOCUS_CHANGE
  CONFIGURE
  MAP
  UNMAP
  PROPERTY_NOTIFY
  SELECTION_CLEAR
  SELECTION_REQUEST
  SELECTION_NOTIFY
  PROXIMITY_IN
  PROXIMITY_OUT
  DRAG_ENTER
  DRAG_LEAVE
  DRAG_MOTION
  DRAG_STATUS
  DROP_START
  DROP_FINISHED
  CLIENT_EVENT
  VISIBILITY_NOTIFY
  NO_EXPOSE
  SCROLL
  WINDOW_STATE
  SETTING

These values are accessed by prefacing the event type with gtk.gdk. for example gtk.gdk.DRAG_ENTER.

So, to connect a callback function to one of these events we would use something like:

  button.connect("button_press_event", button_press_callback)

This assumes that button is a GtkButton widget. Now, when the mouse is over the button and a mouse button is pressed, the function button_press_callback will be called. This function may be defined as:

  def button_press_callback(widget, event, data ):

The value returned from this function indicates whether the event should be propagated further by the GTK+ event handling mechanism. Returning True indicates that the event has been handled, and that it should not propagate further. Returning False continues the normal event handling. See Chapter 20, Advanced Event and Signal Handling for more details on this propagation process.

The GDK selection and drag-and-drop APIs also emit a number of events which are reflected in GTK+ by signals. See Section 22.3.2, “Signals On the Source Widget” and Section 22.3.4, “Signals On the Destination Widget” for details on the signatures of the callback functions for these signals:

  selection_received
  selection_get
  drag_begin_event
  drag_end_event
  drag_data_delete
  drag_motion
  drag_drop
  drag_data_get
  drag_data_received
pygtk2tutorial/sec-DNDProperties.html0100644000117200001670000000774510227357002017017 0ustar finlayfcf22.2. DND Properties

22.2. DND Properties

Drag data has the following properties:

  • Drag action type (ie ACTION_COPY, ACTION_MOVE).

  • Client specified arbitrary drag-and-drop type (a name and number pair).

  • Sent and received data format type.

Drag actions are quite obvious, they specify if the widget can drag with the specified action(s), e.g. gtk.gdk.ACTION_COPY and/or gtk.gdk.ACTION_MOVE. An gtk.gdk.ACTION_COPY would be a typical drag-and-drop without the source data being deleted while gtk.gdk.ACTION_MOVE would be just like gtk.gdk.ACTION_COPY but the source data will be 'suggested' to be deleted after the received signal handler is called. There are additional drag actions including gtk.gdk.ACTION_LINK which you may want to look into when you get to more advanced levels of drag-and-drop.

The client specified arbitrary drag-and-drop type is much more flexible, because your application will be defining and checking for that specifically. You will need to set up your destination widgets to receive certain drag-and-drop types by specifying a name and/or number. It would be more reliable to use a name since another application may just happen to use the same number for an entirely different meaning.

Sent and received data format types (selection target) come into play only in your request and received data handler functions. The term selection target is somewhat misleading. It is a term adapted from GTK+ selection (cut/copy and paste). What selection target actually means is the data's format type (i.e. gtk.gdk.Atom, integer, or string) that is being sent or received. Your request data handler function needs to specify the type (selection target) of data that it sends out and your received data handler needs to handle the type (selection target) of data received.

pygtk2tutorial/app-GtkSignals.html0100644000117200001670000001030510227357010016372 0ustar finlayfcfAppendix A. GTK Signals

Appendix A. GTK Signals

As PyGTK is an object oriented widget set, it has a hierarchy of inheritance. This inheritance mechanism applies for signals. Therefore, you should refer to the widget hierarchy tree when using the signals listed in this section.

A.1. GtkObject

  destroy(object, data)
pygtk2tutorial/ch-Adjustments.html0100644000117200001670000001377610227356760016471 0ustar finlayfcfChapter 7. Adjustments

Chapter 7. Adjustments

GTK has various widgets that can be visually adjusted by the user using the mouse or the keyboard, such as the range widgets, described in the Range Widgets section. There are also a few widgets that display some adjustable portion of a larger area of data, such as the text widget and the viewport widget.

Obviously, an application needs to be able to react to changes the user makes in range widgets. One way to do this would be to have each widget emit its own type of signal when its adjustment changes, and either pass the new value to the signal handler, or require it to look inside the widget's data structure in order to ascertain the value. But you may also want to connect the adjustments of several widgets together, so that adjusting one adjusts the others. The most obvious example of this is connecting a scrollbar to a panning viewport or a scrolling text area. If each widget has its own way of setting or getting the adjustment value, then the programmer may have to write their own signal handlers to translate between the output of one widget's signal and the "input" of another's adjustment setting method.

GTK solves this problem using the Adjustment object, which is not a widget but a way for widgets to store and pass adjustment information in an abstract and flexible form. The most obvious use of Adjustment is to store the configuration parameters and values of range widgets, such as scrollbars and scale controls. However, since Adjustments are derived from Object, they have some special powers beyond those of normal data structures. Most importantly, they can emit signals, just like widgets, and these signals can be used not only to allow your program to react to user input on adjustable widgets, but also to propagate adjustment values transparently between adjustable widgets.

You will see how adjustments fit in when you see the other widgets that incorporate them: Progress Bars, Viewports, Scrolled Windows, and others.

7.1. Creating an Adjustment

Many of the widgets which use adjustment objects do so automatically, but some cases will be shown in later examples where you may need to create one yourself. You create an adjustment using:

  adjustment = gtk.Adjustment(value=0, lower=0, upper=0, step_incr=0, page_incr=0, page_size=0)

The value argument is the initial value you want to give to the adjustment, usually corresponding to the topmost or leftmost position of an adjustable widget. The lower argument specifies the lowest value which the adjustment can hold. The step_incr argument specifies the "smaller" of the two increments by which the user can change the value, while the page_incr is the "larger" one. The page_size argument usually corresponds somehow to the visible area of a panning widget. The upper argument is used to represent the bottom most or right most coordinate in a panning widget's child. Therefore it is not always the largest number that value can take, since the page_size of such widgets is usually non-zero.

pygtk2tutorial/sec-AdjustmentInternals.html0100644000117200001670000001314010227356760020327 0ustar finlayfcf7.3. Adjustment Internals

7.3. Adjustment Internals

Ok, you say, that's nice, but what if I want to create my own handlers to respond when the user adjusts a range widget or a spin button, and how do I get at the value of the adjustment in these handlers? To answer these questions and more, let's start by taking a look at the attributes of a gtk.Adjustment itself:

  lower
  upper
  value
  step_increment
  page_increment
  page_size

Given a gtk.Adjustment instance adj, each of the attributes are retrieved or set by adj.lower, adj.value, etc.

Since, when you set the value of an adjustment, you generally want the change to be reflected by every widget that uses this adjustment, PyGTK provides a method to do this:

  adjustment.set_value(value)

As mentioned earlier, Adjustment is a subclass of Object just like all the various widgets, and thus it is able to emit signals. This is, of course, why updates happen automagically when you share an adjustment object between a scrollbar and another adjustable widget; all adjustable widgets connect signal handlers to their adjustment's value_changed signal, as can your program. Here's the definition of this signal callback:

  def value_changed(adjustment):

The various widgets that use the Adjustment object will emit this signal on an adjustment whenever they change its value. This happens both when user input causes the slider to move on a range widget, as well as when the program explicitly changes the value with the set_value() method. So, for example, if you have a scale widget, and you want to change the rotation of a picture whenever its value changes, you would create a callback like this:

  def cb_rotate_picture(adj, picture):
      set_picture_rotation (picture, adj.value)
  ...

and connect it to the scale widget's adjustment like this:

  adj.connect("value_changed", cb_rotate_picture, picture)

What about when a widget reconfigures the upper or lower fields of its adjustment, such as when a user adds more text to a text widget? In this case, it emits the changed signal, which looks like this:

  def changed(adjustment):

Range widgets typically connect a handler to this signal, which changes their appearance to reflect the change - for example, the size of the slider in a scrollbar will grow or shrink in inverse proportion to the difference between the lower and upper values of its adjustment.

You probably won't ever need to attach a handler to this signal, unless you're writing a new type of range widget. However, if you change any of the values in a Adjustment directly, you should emit this signal on it to reconfigure whatever widgets are using it, like this:

  adjustment.emit("changed")
pygtk2tutorial/sec-GtkColorSelection.html0100644000117200001670000000360110227357010017711 0ustar finlayfcfA.19. GtkColorSelection

A.19. GtkColorSelection

color-changed(color_selection, data)
pygtk2tutorial/sec-UsingItemFactory.html0100644000117200001670000000363610227356764017602 0ustar finlayfcf11.3. Using ItemFactory

11.3. Using ItemFactory

Now that we've shown you the hard way, here's how you do it using the gtk.ItemFactory calls.

pygtk2tutorial/sec-TreeModelSortAndTreeModelFilter.html0100644000117200001670000004414110227356772022463 0ustar finlayfcf14.10. TreeModelSort and TreeModelFilter

14.10. TreeModelSort and TreeModelFilter

The TreeModelSort and TreeModelFilter objects are tree models that interpose between the base TreeModel (either a TreeStore or a ListStore) and the TreeView to provide a modified model while still retaining the original structure of the base model. These interposing models implement the TreeModel and TreeSortable interfaces but do not provide any methods for inserting or removing rows in the model; you have to insert or remove rows from the underlying store. The TreeModelSort provides a model where the rows are always sorted while the TreeModelFilter provides a model containing a subset of the rows of the base model.

These models can be chained to an arbitrary length if desired; i.e a TreeModelFilter could have a child TreeModelSort that could have a child TreeModelFilter, and so on. As long as there is a TreeStore or ListStore as the anchor of the chain it should just work. In PyGTK 2.0 and 2.2 the TreeModelSort and TreeModelFilter objects do not support the TreeModel Python mapping protocol.

14.10.1. TreeModelSort

The TreeModelSort maintains a sorted model of the child model specified in its constructor. The main use of a TreeModelSort is to provide multiple views of a model that can be sorted differently. If you have multiple views of the same model then any sorting activity is reflected in all the views. By using the TreeModelSort the base store is left in its original unsorted state and the sort models absorb all the sorting activity. To create a TreeModelSort use the constructor:

  treemodelsort = gtk.TreeModelSort(child_model)

where child_model is a TreeModel. Most of the methods of a TreeModelSort deal with converting tree paths and TreeIters from the child model to the sorted model and back:

  sorted_path = treemodelsort.convert_child_path_to_path(child_path)
  child_path = treemodelsort.convert_path_to_child_path(sorted_path)

These path conversion methods return None if the given path cannot be converted to a path in the sorted model or the child model respectively. The TreeIter conversion methods are:

  sorted_iter = treemodelsort.convert_child_iter_to_iter(sorted_iter, child_iter)
 child_iter = treemodelsort.convert_iter_to_child_iter(child_iter, sorted_iter)

The TreeIter conversion methods duplicate the converted argument (its both the return value and the first argument) due to backward compatibility issues; you should set the first arguments to None and just use the return value. For example:

  sorted_iter = treemodelsort.convert_child_iter_to_iter(None, child_iter)
  child_iter = treemodelsort.convert_iter_to_child_iter(None, sorted_iter)

Like the path conversion methods, these methods return None if the given TreeIter cannot be converted.

You can retrieve the child TreeModel using the get_model() method.

A simple example program using TreeModelSort objects is treemodelsort.py. Figure 14.9, “TreeModelSort Example” illustrates the result of running the program and adding six rows:

Figure 14.9. TreeModelSort Example

TreeModelSort Example

Each of the columns in the windows can be clicked to change the sort order independent of the other windows. When the "Add a Row" button is clicked a new row is added to the base ListStore and the new row is displayed in each TreeView as the selected row.

14.10.2. TreeModelFilter

Note

The TreeModelFilter is available in PyGTK 2.4 and above.

A TreeModelFilter object provides several ways of modifying the view of the base TreeModel including:

  • displaying a subset of the rows in the child model either based on boolean data in a "visible column", or based on the boolean return value of a "visible function" that takes the child model, a TreeIter pointing at a row in the child model and user data. In both cases if the boolean value is TRUE the row will be displayed; otherwise, the row will be hidden.
  • using a virtual root node to provide a view of a subtree of the children of a row in the child model. This only makes sense if the underlying store is a TreeStore.
  • synthesizing the columns and data of a model based on the data in the child model. For example, you can provide a column where the data is calculated from data in several child model columns.

A TreeModelFilter object is created using the TreeModel method:

  treemodelfilter = treemodel.filter_new(root=None)

where root is a tree path in treemodel specifying the virtual root for the model or None if the root node of treemodel is to be used.

By setting a "virtual root" when creating the TreeModelFilter, you can limit the model view to the child rows of "root" row in the child model hierarchy. This, of course is only useful when the child model is based on a TreeStore. For example, you might want to provide a view of the parts list that makes up a CDROM drive separate from the full parts list of a computer.

The visibility modes are mutually exclusive and can only be set once i.e. once a visibility function or column is set it cannot be changed and the alternative mode cannot be set. The simplest visibility mode extracts a boolean value from a column in the child model to determine if the row should be displayed. The visibility columns is set using:

  treemodelfilter.set_visible_column(column)

where column is the number of the column in the child TreeModel to extract the boolean values from. For example, the following code fragment uses the values in the third column to set the visibility of the rows:

  ...
  treestore = gtk.TreeStore(str, str, "gboolean")
  ...
  modelfilter = treestore.filter_new()
  modelfilter.set_visible_column(2)
  ...

Thus any rows in treestore that have a value of TRUE in the third column will be displayed.

If you have more complicated visibility criteria setting a visibility function should provide sufficient power:

  treemodelfilter.set_visible_func(func, data=None)

where func is the function called for each child model row to determine if it should be displayed and data is user data passed to func. func should return TRUE if the row should be displayed. The signature of func is:

  def func(model, iter, user_data)

where model is the child TreeModel, iter is a TreeIter pointing at a row in model and user_data is the passed in data.

If you make a change to the visibility criteria you should call:

  treemodelfilter.refilter()

to force a refiltering of the child model rows.

For example, the following code fragment illustrates a TreeModelFilter that displays rows based on a comparison between the value in the third column and the contents of the user data:

  ...
  def match_type(model, iter, udata):
      value = model.get_value(iter, 2)
      return value in udata
  ...
  show_vals = ['OPEN', 'NEW', 'RESO']
  liststore = gtk.ListStore(str, str, str)
  ...
  modelfilter = liststore.filter_new()
  modelfilter.set_visible_func(match_type, show_vals)
  ...

The program treemodelfilter.py illustrates the use of the set_visible_func() method. Figure 14.10, “TreeModelFilter Visibility Example” shows the result of running the program.

Figure 14.10. TreeModelFilter Visibility Example

TreeModelFilter Visibility Example

By toggling the buttons at the bottom the contents of the TreeView are changed to display only the rows that match one of the active buttons.

A modify function gives you another level of control over the TreeView display to the point where you can synthesize one or more (or even all) columns that are represented by the TreeModelFilter. You still have to use a base child model that is a TreeStore or ListStore to determine the number of rows and the hierarchy but the columns can be anything you specify in the method:

  treemodelfilter.set_modify_func(types, func, data=None)

where types is a sequence (list or tuple) specifying the column types being represented, func is a function called to return the value for a row and column and data is an argument to be passed to func. The signature of func is:

  def func(model, iter, column, user_data)

where model is the TreeModelFilter, iter is a TreeIter that points to a row in model, column is the number of the column that a value is needed for and user_data is the parameter data. func must return a value matching the type for column.

A modify function is useful where you want to provide a column of data that needs to be generated using the data in the child model columns. For example if you had a column containing birth dates and wanted to provide a column displaying ages, a modify function could generate the age information using the birth date and the current date. Another example would be to decide what image to display based on some analysis of the data (say, a filename) in a column. This effect can also be achieved using the TreeViewColumn set_cell_data_func() method.

Usually within the modify function, you will have to convert the TreeModelFilter TreeIter to a TreeIter in the child model using:

  child_iter = treemodelfilter.convert_iter_to_child_iter(filter_iter)

Of course, you'll also need to retrieve the child model using:

  child_model = treemodelfilter.get_model()

These give you access to the child model row and its values for generating the value for the specified TreeModelFilter row and column. There's also a method to convert a child TreeIter to a filter model TreeIter and methods to convert filter model paths to and from child tree paths:

  filter_iter = treemodelfilter.convert_child_iter_to_iter(child_iter)

  child_path = treemodelfilter.convert_path_to_child_path(filter_path)
  filter_path = treemodelfilter.convert_child_path_to_path(child_path)

Of course, you can combine the visibility modes and the modify function to both filter rows and synthesize columns. To get even more control over the view you would have to use a custom TreeModel.

pygtk2tutorial/sec-UIManager.html0100644000117200001670000010743510227356777016164 0ustar finlayfcf16.7. The UIManager

16.7. The UIManager

16.7.1. Overview

The UIManager provides a way to create menus and toolbars from an XML-like description. The UIManager uses ActionGroup objects to manage the Action objects providing the common substructure for the menu and toolbar items.

Using the UIManager you can dynamically merge and demerge multiple UI descriptions and actions. This allows you to modify the menus and toolbars when the mode changes in the application (for example, changing from text editing to image editing), or when new plug-in features are added or removed from your application.

A UIManager can be used to create the menus and toolbars for an application user interface as follows:

  • Create a UIManager instance
  • Extract the AccelGroup from the UIManager and add it to the top level Window
  • Create the ActionGroup instances and populate them with the appropriate Action instances.
  • Add the ActionGroup instances to the UIManager in the order that the Action instances should be found.
  • Add the UI XML descriptions to the UIManager. Make sure that all Actions referenced by the descriptions are available in the UIManager ActionGroup instances.
  • Extract references to the menubar, menu and toolbar widgets by name for use in building the user interface.
  • Dynamically modify the user interface by adding and removing UI descriptions and by adding, rearranging and removing the associated ActionGroup instances.

16.7.2. Creating a UIManager

A UIManager instance is created by the constructor:

  uimamager = gtk.UIManager()

A new UIManager is created with an associated AccelGroup that can be retrieved using the method:

  accelgroup = uimanager.get_accel_group()

The AccelGroup should be added to the top level window of the application so that the Action accelerators can be used by your users. For example:

  window = gtk.Window()
  ...
  uimanager = gtk.UIManager()
  accelgroup = uimanager.get_accel_group()
  window.add_accel_group(accelgroup)

16.7.3. Adding and Removing ActionGroups

As described in Section 16.1.2, “ActionGroups”, ActionGroups can be populated with Actions by using the add_actions(), add_toggle_actions() and add_radio_actions() convenience methods. An ActionGroup can be used by a UIManager after it has been added to its ActionGroup list by using the method:

  uimanager.insert_action_group(action_group, pos)

where pos is the index of the position where action_group should be inserted. A UIManager may contain several ActionGroups with duplicate Action names. The order of the ActionGroup objects is important because the lookup of an Action stops when the first Action with the given name is encountered. This means that actions in earlier ActionGroup objects mask those in later ActionGroup objects.

The actions referenced in a UI XML description must be added to a UIManager before the description can be added to the UIManager.

An ActionGroup can be removed from a UIManager by using the method:

  uimanager.remove_action_group(action_group)

A list of the ActionGroup objects associated with a UIManager can be retrieved using the method:

  actiongrouplist = uimanager.get_action_groups()

16.7.4. UI Descriptions

The UI descriptions accepted by UIManager are simple XML definitions with the following elements:

uiThe root element of a UI description. It can be omitted. Can contain menubar, popup, toolbar and accelerator elements.
menubarA top level element describing a MenuBar structure that can contain MenuItem, separator, placeholder and menu elements. It has an optional name attribute. If name is not specified, "menubar" is used as the name.
popupA top level element describing a popup Menu structure that can contain menuitem, separator, placeholder, and menu elements. It has an optional name attribute. If name is not specified, "popup" is used as the name.
toolbarA top level element describing a Toolbar structure that can contain toolitem, separator and placeholder elements. It has an optional name attribute. If name is not specified, "toolbar" is used as the name.
placeholderAn element identifying a position in a menubar, toolbar, popup or menu. A placeholder can contain menuitem, separator, placeholder, and menu elements. Placeholder elements are used when merging UI descriptions to allow, for example, a menu to be built up from UI descriptions using common placeholder names. It has an optional name attribute. If name is not specified, "placeholder" is used as the name.
menuAn element describing a Menu structure that can contain menuitem, separator, placeholder, and menu elements. A menu element has a required attribute action that names an Action object to be used to create the Menu. It also has optional name and position attributes. If name is not specified, the action name is used as the name. The position attribute can have either the value "top" or "bottom" with "bottom" the default if position is not specified.
menuitemAn element describing a MenuItem. A menuitem element has a required attribute action that names an Action object to be used to create the MenuItem. It also has optional name and position attributes. If name is not specified, the action name is used as the name. The position attribute can have either the value "top" or "bottom" with "bottom" the default if position is not specified.
toolitemAn element describing a toolbar ToolItem. A toolitem element has a required attribute action that names an Action object to be used to create the Toolbar. It also has optional name and position attributes. If name is not specified, the action name is used as the name. The position attribute can have either the value "top" or "bottom" with "bottom" the default if position is not specified.
separatorAn element describing a SeparatorMenuItem or a SeparatorToolItem as appropriate.
acceleratorAn element describing a keyboard accelerator. An accelerator element has a required attribute action that names an Action object that defines the accelerator key combination and is activated by the accelerator. It also has an optional name attribute. If name is not specified, the action name is used as the name.

For example, a UI description that could be used to create an interface similar that in Figure 16.4, “ActionGroup Example” is:

  <ui>
    <menubar name="MenuBar">
      <menu action="File">
        <menuitem action="Quit"/>
      </menu>
      <menu action="Sound">
        <menuitem action="Mute"/>
      </menu>
      <menu action="RadioBand">
        <menuitem action="AM"/>
        <menuitem action="FM"/>
        <menuitem action="SSB"/>
      </menu>
    </menubar>
    <toolbar name="Toolbar">
      <toolitem action="Quit"/>
      <separator/>
      <toolitem action="Mute"/>
      <separator name="sep1"/>
      <placeholder name="RadioBandItems">
        <toolitem action="AM"/>
        <toolitem action="FM"/>
        <toolitem action="SSB"/>
      </placeholder>
    </toolbar>
  </ui>

Note that this description just uses the action attribute names for the names of most elements rather than specifying name attributes. Also I would recommend not specifying the ui element as it appears to be unnecessary.

The widget hierarchy created using a UI description is very similar to the XML element hierarchy except that placeholder elements are merged into their parents.

A widget in the hierarchy created by a UI description can be accessed using its path which is composed of the name of the widget element and its ancestor elements joined by slash ("/") characters. For example using the above description the following are valid widget paths:

  /MenuBar
  /MenuBar/File/Quit
  /MenuBar/RadioBand/SSB
  /Toolbar/Mute
  /Toolbar/RadioBandItems/FM

Note that the placeholder name must be included in the path. Usually you just access the top level widgets (for example, "/MenuBar" and "/Toolbar") but you may need to access a lower level widget to, for example, change a property.

16.7.5. Adding and Removing UI Descriptions

Once a UIManager is set up with an ActionGroup a UI description can be added and merged with the existing UI by using one of the following methods:

  merge_id = uimanager.add_ui_from_string(buffer)

  merge_id = uimanager.add_ui_from_file(filename)

where buffer is a string containing a UI description and filename is the file containing a UI description. Both methods return a merge_id which is a unique integer value. If the method fails, the GError exception is raised. The merge_id can be used to remove the UI description from the UIManager by using the method:

  uimanager.remove_ui(merge_id)

The same methods can be used more than once to add additional UI descriptions that will be merged to provide a combined XML UI description. Merged UIs will be discussed in more detail in Section 16.7.8, “Merging UI Descriptions” section.

A single UI element can be added to the current UI description by using the method:

  uimanager.add_ui(merge_id, path, name, action, type, top)

where merge_id is a unique integer value, path is the path where the new element should be added, action is the name of an Action or None to add a separator, type is the element type to be added and top is a boolean value. If top is TRUE the element will be added before its siblings, otherwise it is added after.

merge_id should be obtained from the method:

  merge_id = uimanager.new_merge_id()

The integer values returned from the new_merge_id() method are monotonically increasing.

path is a string composed of the name of the element and the names of its ancestor elements separated by slash ("/") characters but not including the optional root node "/ui". For example, "/MenuBar/RadioBand" is the path of the menu element named "RadioBand" in the following UI description:

  <menubar name="MenuBar">
    <menu action="RadioBand">
    </menu>
  </menubar>

The value of type must be one of:

gtk.UI_MANAGER_AUTOThe type of the UI element (menuitem, toolitem or separator) is set according to the context.
gtk.UI_MANAGER_MENUBARA menubar.
gtk.UI_MANAGER_MENUA menu.
gtk.UI_MANAGER_TOOLBARA toolbar.
gtk.UI_MANAGER_PLACEHOLDERA placeholder.
gtk.UI_MANAGER_POPUPA popup menu.
gtk.UI_MANAGER_MENUITEMA menuitem.
gtk.UI_MANAGER_TOOLITEMA toolitem.
gtk.UI_MANAGER_SEPARATORA separator.
gtk.UI_MANAGER_ACCELERATORAn accelerator.

add_ui() fails silently if the element is not added. Using add_ui() is so low level that you should always try to use the convenience methods add_ui_from_string() and add_ui_from_file() instead.

Adding a UI description or element causes the widget hierarchy to be updated in an idle function. You can make sure that the widget hierarchy has been updated before accessing it by calling the method:

  uimanager.ensure_update()

16.7.6. Accessing UI Widgets

You access a widget in the UI widget hierarchy by using the method:

  widget = uimanager.get_widget(path)

where path is a string containing the name of the widget element and it's ancestors as described in Section 16.7.4, “UI Descriptions”.

For example, given the following UI description:

  <menubar name="MenuBar">
    <menu action="File">
      <menuitem action="Quit"/>
    </menu>
    <menu action="Sound">
      <menuitem action="Mute"/>
    </menu>
    <menu action="RadioBand">
      <menuitem action="AM"/>
      <menuitem action="FM"/>
      <menuitem action="SSB"/>
    </menu>
  </menubar>
  <toolbar name="Toolbar">
    <toolitem action="Quit"/>
    <separator/>
    <toolitem action="Mute"/>
    <separator name="sep1"/>
    <placeholder name="RadioBandItems">
      <toolitem action="AM"/>
      <toolitem action="FM"/>
      <toolitem action="SSB"/>
    </placeholder>
  </toolbar>

added to the UIManager uimanager, you can access the MenuBar and Toolbar for use in an application Window by using the following code fragment:

  window = gtk.Window()
  vbox = gtk.VBox()
  menubar = uimanager.get_widget('/MenuBar')
  toolbar = uimanager.get_widget('/Toolbar')
  vbox.pack_start(meunbar, False)
  vbox.pack_start(toolbar, False)

Likewise the lower level widgets in the hierarchy are accessed by using their paths. For example the RadioToolButton named "SSB" is accessed as follows:

  ssb = uimanager.get_widget('/Toolbar/RadioBandItems/SSB')

As a convenience all the top level widgets of a type can be retrieved using the method:

  toplevels = uimanager.get_toplevels(type)

where type specifies the type of widgets to return using a combination of the flags: gtk.UI_MANAGER_MENUBAR, gtk.UI_MANAGER_TOOLBAR and gtk.UI_MANAGER_POPUP. You can use the gtk.Widget.get_name() method to determine which top level widget you have.

You can retrieve the Action that is used by the proxy widget associated with a UI element by using the method:

  action = uimanager_get_action(path)

where path is a string containing the path to a UI element in uimanager. If the element has no associated Action, None is returned.

16.7.7. A Simple UIManager Example

A simple example program illustrating the use of UIManager is uimanager.py. Figure 16.13, “Simple UIManager Example” illustrates the program in operation.

Figure 16.13. Simple UIManager Example

Simple UIManager Example

The uimanager.py example program uses the XML description of Section 16.7.6, “Accessing UI Widgets”. The text of the two labels are changed in response to the activation of the "Mute" ToggleAction and "AM", "FM" and "SSB" RadioActions. All the actions are contained in a single ActionGroup allowing the sensitivity and visibility of all the action proxy widgets to be toggled on and off by using the "Sensitive" and "Visible" toggle buttons. The use of the placeholder element will be described in Section 16.7.8, “Merging UI Descriptions”.

16.7.8. Merging UI Descriptions

The merging of UI descriptions is done based on the name of the XML elements. As noted above the individual elements in the hierarchy can be accessed using a pathname consisting of the element name and the names of its ancestors. For example, using the UI description in Section 16.7.4, “UI Descriptions” the "AM" toolitem element has the pathname "/Toolbar/RadioBandItems/AM" while the "FM" menuitem element has the pathname "/MenuBar/RadioBand/FM".

If a UI description is merged with that UI description the elements are added as siblings to the existing elements. For example, if the UI description:

  <menubar name="MenuBar">
    <menu action="File">
      <menuitem action="Save" position="top"/>
      <menuitem action="New" position="top"/>
    </menu>
    <menu action="Sound">
      <menuitem action="Loudness"/>
    </menu>
    <menu action="RadioBand">
      <menuitem action="CB"/>
      <menuitem action="Shortwave"/>
    </menu>
  </menubar>
  <toolbar name="Toolbar">
    <toolitem action="Save" position="top"/>
    <toolitem action="New" position="top"/>
    <separator/>
    <toolitem action="Loudness"/>
    <separator/>
    <placeholder name="RadioBandItems">
      <toolitem action="CB"/>
      <toolitem action="Shortwave"/>
    </placeholder>
  </toolbar>

is added to our example UI description:

  <menubar name="MenuBar">
    <menu action="File">
      <menuitem action="Quit"/>
    </menu>
    <menu action="Sound">
      <menuitem action="Mute"/>
    </menu>
    <menu action="RadioBand">
      <menuitem action="AM"/>
      <menuitem action="FM"/>
      <menuitem action="SSB"/>
    </menu>
  </menubar>
  <toolbar name="Toolbar">
    <toolitem action="Quit"/>
    <separator/>
    <toolitem action="Mute"/>
    <separator name="sep1"/>
    <placeholder name="RadioBandItems">
      <toolitem action="AM"/>
      <toolitem action="FM"/>
      <toolitem action="SSB"/>
    </placeholder>
  </toolbar>

the following merged UI description will be created:

  <menubar name="MenuBar">
    <menu name="File" action="File">
      <menuitem name="New" action="New"/>
      <menuitem name="Save" action="Save"/>
      <menuitem name="Quit" action="Quit"/>
    </menu>
    <menu name="Sound" action="Sound">
      <menuitem name="Mute" action="Mute"/>
      <menuitem name="Loudness" action="Loudness"/>
    </menu>
    <menu name="RadioBand" action="RadioBand">
      <menuitem name="AM" action="AM"/>
      <menuitem name="FM" action="FM"/>
      <menuitem name="SSB" action="SSB"/>
      <menuitem name="CB" action="CB"/>
      <menuitem name="Shortwave" action="Shortwave"/>
    </menu>
  </menubar>
  <toolbar name="Toolbar">
    <toolitem name="New" action="New"/>
    <toolitem name="Save" action="Save"/>
    <toolitem name="Quit" action="Quit"/>
    <separator/>
    <toolitem name="Mute" action="Mute"/>
    <separator name="sep1"/>
    <placeholder name="RadioBandItems">
      <toolitem name="AM" action="AM"/>
      <toolitem name="FM" action="FM"/>
      <toolitem name="SSB" action="SSB"/>
      <toolitem name="CB" action="CB"/>
      <toolitem name="Shortwave" action="Shortwave"/>
    </placeholder>
    <separator/>
    <toolitem name="Loudness" action="Loudness"/>
    <separator/>
  </toolbar>

Examining the merged XML you can see that the "New" and "Save" menuitem elements have been merged before the "Quit" element as a result of the "position" attribute being set to "top" which means the element should be prepended. Likewise, the "New" and "Save" toolitem elements have been prepended to "Toolbar". Note that the "New" and "Save" elements are reversed by the merging process.

The "Loudness" toolitem element is appended to the "Toolbar" elements and appears last in the merged UI description even though it's not last in its UI description. The "RadioBandItems" placeholder element in both UI descriptions combines the "CB" and "Shortwave" toolitem elements with the "AM", "FM", and "SSB" elements. If the "RadioBandItems" placeholder element was not used the "CB" and "Shortwave" elements would have been placed after the "Loudness" element.

A representation of the UI description used by a UIManager can be retrieved using the method:

  uidesc = uimanager.get_ui()

The uimerge.py example program demonstrates the merging of the above UI descriptions. Figure 16.14, “UIMerge Example” illustrates the unmerged and merged UIs:

Figure 16.14. UIMerge Example

UIMerge Example

The example program uses three ActionGroup objects:

  • Action objects for the "File", "Sound" and "Radio Band" menus
  • Action objects for the "Quit", "Mute", "AM", "FM", "SSB" and "Radio Band" menus
  • Action objects for the "Loudness", "CB" and "Shortwave" elements

The "Sensitive" and Visible" ToggleButton widgets control the sensitivity and visibility of only the second ActionGroup.

16.7.9. UIManager Signals

The UIManager has a couple of interesting signals that your application can connect to. The "actions-changed" signal is emitted when an ActionGroup is added or removed from a UIManager. The signature of the callback is:

  def callback(uimanager, ...)

The "add-widget" signal is emitted when a proxy MenuBar or Toolbar widget is created. The callback signature is:

  def callback(uimanager, widget, ...)

where widget is the newly created widget.

pygtk2tutorial/sec-TablePackingExample.html0100644000117200001670000001517710227356757020213 0ustar finlayfcf4.5. Table Packing Example

4.5. Table Packing Example

The example program table.py makes a window with three buttons in a 2x2 table. The first two buttons will be placed in the upper row. A third, quit button, is placed in the lower row, spanning both columns. Figure 4.4, “Packing using a Table” illustrates the resulting window:

Figure 4.4. Packing using a Table

Packing using a Table

Here's the source code:

    1	#!/usr/bin/env python
    2	
    3	# example table.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	
    9	class Table:
   10	    # Our callback.
   11	    # The data passed to this method is printed to stdout
   12	    def callback(self, widget, data=None):
   13	        print "Hello again - %s was pressed" % data
   14	
   15	    # This callback quits the program
   16	    def delete_event(self, widget, event, data=None):
   17	        gtk.main_quit()
   18	        return False
   19	
   20	    def __init__(self):
   21	        # Create a new window
   22	        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   23	
   24	        # Set the window title
   25	        self.window.set_title("Table")
   26	
   27	        # Set a handler for delete_event that immediately
   28	        # exits GTK.
   29	        self.window.connect("delete_event", self.delete_event)
   30	
   31	        # Sets the border width of the window.
   32	        self.window.set_border_width(20)
   33	
   34	        # Create a 2x2 table
   35	        table = gtk.Table(2, 2, True)
   36	
   37	        # Put the table in the main window
   38	        self.window.add(table)
   39	
   40	        # Create first button
   41	        button = gtk.Button("button 1")
   42	
   43	        # When the button is clicked, we call the "callback" method
   44	        # with a pointer to "button 1" as its argument
   45	        button.connect("clicked", self.callback, "button 1")
   46	
   47	
   48	        # Insert button 1 into the upper left quadrant of the table
   49	        table.attach(button, 0, 1, 0, 1)
   50	
   51	        button.show()
   52	
   53	        # Create second button
   54	
   55	        button = gtk.Button("button 2")
   56	
   57	        # When the button is clicked, we call the "callback" method
   58	        # with a pointer to "button 2" as its argument
   59	        button.connect("clicked", self.callback, "button 2")
   60	        # Insert button 2 into the upper right quadrant of the table
   61	        table.attach(button, 1, 2, 0, 1)
   62	
   63	        button.show()
   64	
   65	        # Create "Quit" button
   66	        button = gtk.Button("Quit")
   67	
   68	        # When the button is clicked, we call the main_quit function
   69	        # and the program exits
   70	        button.connect("clicked", lambda w: gtk.main_quit())
   71	
   72	        # Insert the quit button into the both lower quadrants of the table
   73	        table.attach(button, 0, 2, 1, 2)
   74	
   75	        button.show()
   76	
   77	        table.show()
   78	        self.window.show()
   79	
   80	def main():
   81	    gtk.main()
   82	    return 0       
   83	
   84	if __name__ == "__main__":
   85	    Table()
   86	    main()

The Table class is defined in line 9-78. Lines 12-13 define the callback() method which is called when two of the buttons are "clicked". The callback just prints a message to the console indicating which button was pressed using the passed in string data.

Lines 16-18 define the delete_event() method which is called when the window is slated for deletion by the window manager.

Lines 20-78 define the Table instance initialization method __init__() . It creates a window (line 22), sets the window title (line 25), connects the delete_event() callback to the "delete_event" signal (line 29), and sets the border width (line 32). A gtk.Table is created in line 35 and added to the window in line 38.

The two upper buttons are created (lines 41 and 55), their "clicked" signals are connected to the callback() method (lines 45 and 59), and attached to the table in the first row (lines 49 and 61). Lines 66-72 create the "Quit" button, connect its "clicked" signal to the main_quit() function and attach it to the table spanning the whole second row.

pygtk2tutorial/sec-PackingDemonstrationProgram.html0100644000117200001670000003461310227356757022022 0ustar finlayfcf4.3. Packing Demonstration Program

4.3. Packing Demonstration Program

Here is the code used to create the above images. It's commented fairly heavily so I hope you won't have any problems following it. Run it yourself and play with it.

    1	#!/usr/bin/env python
    2	
    3	# example packbox.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	import sys, string
    9	
   10	# Helper function that makes a new hbox filled with button-labels. Arguments
   11	# for the variables we're interested are passed in to this function.  We do
   12	# not show the box, but do show everything inside.
   13	
   14	def make_box(homogeneous, spacing, expand, fill, padding):
   15	
   16	    # Create a new hbox with the appropriate homogeneous
   17	    # and spacing settings
   18	    box = gtk.HBox(homogeneous, spacing)
   19	
   20	    # Create a series of buttons with the appropriate settings
   21	    button = gtk.Button("box.pack")
   22	    box.pack_start(button, expand, fill, padding)
   23	    button.show()
   24	
   25	    button = gtk.Button("(button,")
   26	    box.pack_start(button, expand, fill, padding)
   27	    button.show()
   28	
   29	    # Create a button with the label depending on the value of
   30	    # expand.
   31	    if expand == True:
   32	        button = gtk.Button("True,")
   33	    else:
   34	        button = gtk.Button("False,")
   35	
   36	    box.pack_start(button, expand, fill, padding)
   37	    button.show()
   38	
   39	    # This is the same as the button creation for "expand"
   40	    # above, but uses the shorthand form.
   41	    button = gtk.Button(("False,", "True,")[fill==True])
   42	    box.pack_start(button, expand, fill, padding)
   43	    button.show()
   44	
   45	    padstr = "%d)" % padding
   46	
   47	    button = gtk.Button(padstr)
   48	    box.pack_start(button, expand, fill, padding)
   49	    button.show()
   50	    return box
   51	
   52	class PackBox1:
   53	    def delete_event(self, widget, event, data=None):
   54	        gtk.main_quit()
   55	        return False
   56	
   57	    def __init__(self, which):
   58	
   59	        # Create our window
   60	        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   61	
   62	        # You should always remember to connect the delete_event signal
   63	        # to the main window. This is very important for proper intuitive
   64	        # behavior
   65	        self.window.connect("delete_event", self.delete_event)
   66	        self.window.set_border_width(10)
   67	    
   68	        # We create a vertical box (vbox) to pack the horizontal boxes into.
   69	        # This allows us to stack the horizontal boxes filled with buttons one
   70	        # on top of the other in this vbox.
   71	        box1 = gtk.VBox(False, 0)
   72	    
   73	        # which example to show. These correspond to the pictures above.
   74	        if which == 1:
   75	            # create a new label.
   76	            label = gtk.Label("HBox(False, 0)")
   77		
   78	            # Align the label to the left side.  We'll discuss this method
   79	            # and others in the section on Widget Attributes.
   80	            label.set_alignment(0, 0)
   81	
   82	            # Pack the label into the vertical box (vbox box1).  Remember that 
   83	            # widgets added to a vbox will be packed one on top of the other in
   84	            # order.
   85	            box1.pack_start(label, False, False, 0)
   86		
   87	            # Show the label
   88	            label.show()
   89		
   90	            # Call our make box function - homogeneous = False, spacing = 0,
   91	            # expand = False, fill = False, padding = 0
   92	            box2 = make_box(False, 0, False, False, 0)
   93	            box1.pack_start(box2, False, False, 0)
   94	            box2.show()
   95	
   96	            # Call our make box function - homogeneous = False, spacing = 0,
   97	            # expand = True, fill = False, padding = 0
   98	            box2 = make_box(False, 0, True, False, 0)
   99	            box1.pack_start(box2, False, False, 0)
  100	            box2.show()
  101		
  102	            # Args are: homogeneous, spacing, expand, fill, padding
  103	            box2 = make_box(False, 0, True, True, 0)
  104	            box1.pack_start(box2, False, False, 0)
  105	            box2.show()
  106		
  107	            # Creates a separator, we'll learn more about these later, 
  108	            # but they are quite simple.
  109	            separator = gtk.HSeparator()
  110		
  111	            # Pack the separator into the vbox. Remember each of these
  112	            # widgets is being packed into a vbox, so they'll be stacked
  113	            # vertically.
  114	            box1.pack_start(separator, False, True, 5)
  115	            separator.show()
  116		
  117	            # Create another new label, and show it.
  118	            label = gtk.Label("HBox(True, 0)")
  119	            label.set_alignment(0, 0)
  120	            box1.pack_start(label, False, False, 0)
  121	            label.show()
  122		
  123	            # Args are: homogeneous, spacing, expand, fill, padding
  124	            box2 = make_box(True, 0, True, False, 0)
  125	            box1.pack_start(box2, False, False, 0)
  126	            box2.show()
  127		
  128	            # Args are: homogeneous, spacing, expand, fill, padding
  129	            box2 = make_box(True, 0, True, True, 0)
  130	            box1.pack_start(box2, False, False, 0)
  131	            box2.show()
  132		
  133	            # Another new separator.
  134	            separator = gtk.HSeparator()
  135	            # The last 3 arguments to pack_start are:
  136	            # expand, fill, padding.
  137	            box1.pack_start(separator, False, True, 5)
  138	            separator.show()
  139	        elif which == 2:
  140	            # Create a new label, remember box1 is a vbox as created 
  141	            # near the beginning of __init__()
  142	            label = gtk.Label("HBox(False, 10)")
  143	            label.set_alignment( 0, 0)
  144	            box1.pack_start(label, False, False, 0)
  145	            label.show()
  146		
  147	            # Args are: homogeneous, spacing, expand, fill, padding
  148	            box2 = make_box(False, 10, True, False, 0)
  149	            box1.pack_start(box2, False, False, 0)
  150	            box2.show()
  151		
  152	            # Args are: homogeneous, spacing, expand, fill, padding
  153	            box2 = make_box(False, 10, True, True, 0)
  154	            box1.pack_start(box2, False, False, 0)
  155	            box2.show()
  156		
  157	            separator = gtk.HSeparator()
  158	            # The last 3 arguments to pack_start are:
  159	            # expand, fill, padding.
  160	            box1.pack_start(separator, False, True, 5)
  161	            separator.show()
  162		
  163	            label = gtk.Label("HBox(False, 0)")
  164	            label.set_alignment(0, 0)
  165	            box1.pack_start(label, False, False, 0)
  166	            label.show()
  167		
  168	            # Args are: homogeneous, spacing, expand, fill, padding
  169	            box2 = make_box(False, 0, True, False, 10)
  170	            box1.pack_start(box2, False, False, 0)
  171	            box2.show()
  172		
  173	            # Args are: homogeneous, spacing, expand, fill, padding
  174	            box2 = make_box(False, 0, True, True, 10)
  175	            box1.pack_start(box2, False, False, 0)
  176	            box2.show()
  177		
  178	            separator = gtk.HSeparator()
  179	            # The last 3 arguments to pack_start are:
  180	            # expand, fill, padding.
  181	            box1.pack_start(separator, False, True, 5)
  182	            separator.show()
  183	
  184	        elif which == 3:
  185	
  186	            # This demonstrates the ability to use pack_end() to
  187	            # right justify widgets. First, we create a new box as before.
  188	            box2 = make_box(False, 0, False, False, 0)
  189	
  190	            # Create the label that will be put at the end.
  191	            label = gtk.Label("end")
  192	            # Pack it using pack_end(), so it is put on the right
  193	            # side of the hbox created in the make_box() call.
  194	            box2.pack_end(label, False, False, 0)
  195	            # Show the label.
  196	            label.show()
  197		
  198	            # Pack box2 into box1
  199	            box1.pack_start(box2, False, False, 0)
  200	            box2.show()
  201		
  202	            # A separator for the bottom.
  203	            separator = gtk.HSeparator()
  204	            
  205	            # This explicitly sets the separator to 400 pixels wide by 5
  206	            # pixels high. This is so the hbox we created will also be 400
  207	            # pixels wide, and the "end" label will be separated from the
  208	            # other labels in the hbox. Otherwise, all the widgets in the
  209	            # hbox would be packed as close together as possible.
  210	            separator.set_size_request(400, 5)
  211	            # pack the separator into the vbox (box1) created near the start 
  212	            # of __init__()
  213	            box1.pack_start(separator, False, True, 5)
  214	            separator.show()
  215	    
  216	        # Create another new hbox.. remember we can use as many as we need!
  217	        quitbox = gtk.HBox(False, 0)
  218	    
  219	        # Our quit button.
  220	        button = gtk.Button("Quit")
  221	    
  222	        # Setup the signal to terminate the program when the button is clicked
  223	        button.connect("clicked", lambda w: gtk.main_quit())
  224	        # Pack the button into the quitbox.
  225	        # The last 3 arguments to pack_start are:
  226	        # expand, fill, padding.
  227	        quitbox.pack_start(button, True, False, 0)
  228	        # pack the quitbox into the vbox (box1)
  229	        box1.pack_start(quitbox, False, False, 0)
  230	    
  231	        # Pack the vbox (box1) which now contains all our widgets, into the
  232	        # main window.
  233	        self.window.add(box1)
  234	    
  235	        # And show everything left
  236	        button.show()
  237	        quitbox.show()
  238	    
  239	        box1.show()
  240	        # Showing the window last so everything pops up at once.
  241	        self.window.show()
  242	
  243	def main():
  244	    # And of course, our main loop.
  245	    gtk.main()
  246	    # Control returns here when main_quit() is called
  247	    return 0         
  248	
  249	if __name__ =="__main__":
  250	    if len(sys.argv) != 2:
  251	        sys.stderr.write("usage: packbox.py num, where num is 1, 2, or 3.\n")
  252	        sys.exit(1)
  253	    PackBox1(string.atoi(sys.argv[1]))
  254	    main()

A brief tour of the packbox.py code starts with lines 14-50 which define a helper function make_box() that creates a horizontal box and populates it with buttons according to the specified parameters. A reference to the horizontal box is returned.

Lines 52-241 define the PackBox1 class initialization method __init__() that creates a window and a child vertical box that is populated with a different widget arrangement depending on the argument passed to it. If a 1 is passed, lines 75-138 create a window displaying the five unique packing arrangements that are available when varying the homogeneous, expand and fill parameters. If a 2 is passed, lines 140-182 create a window displaying the various combinations of fill with spacing and padding. Finally, if a 3 is passed, lines 188-214 create a window displaying the use of the pack_start() method to left justify the buttons and pack_end() method to right justify a label. Lines 215-235 create a horizontal box containing a button that is packed into the vertical box. The button "clicked" signal is connected to the PyGTK main_quit() function to terminate the program.

Lines 250-252 check the command line arguments and exit the program using the sys.exit() function if there isn't exactly one argument. Line 253 creates a PackBox1 instance. Line 254 invokes the main() function to start the GTK event processing loop.

In this example program, the references to the various widgets (except the window) are not saved in the object instance attributes because they are not needed later.

pygtk2tutorial/sec-CheckButtons.html0100644000117200001670000001413210227356760016727 0ustar finlayfcf6.3. Check Buttons

6.3. Check Buttons

Check buttons inherit many properties and methods from the the toggle buttons above, but look a little different. Rather than being buttons with text inside them, they are small squares with the text to the right of them. These are often used for toggling options on and off in applications.

The creation method is similar to that of the normal button.

  check_button = gtk.CheckButton(label=None)

If the label argument is specified the method creates a check button with a label beside it. The label text is parsed for '_'-prefixed mnemonic characters.

Checking and setting the state of the check button are identical to that of the toggle button.

The checkbutton.py program provides an example of the use of the check buttons. Figure 6.3, “Check Button Example” illustrates the resulting window:

Figure 6.3. Check Button Example

Check Button Example

The source code for the checkbutton.py program is:

    1	#!/usr/bin/env python
    2	
    3	# example checkbutton.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	
    9	class CheckButton:
   10	    # Our callback.
   11	    # The data passed to this method is printed to stdout
   12	    def callback(self, widget, data=None):
   13	        print "%s was toggled %s" % (data, ("OFF", "ON")[widget.get_active()])
   14	
   15	    # This callback quits the program
   16	    def delete_event(self, widget, event, data=None):
   17	        gtk.main_quit()
   18	        return False
   19	
   20	    def __init__(self):
   21	        # Create a new window
   22	        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   23	
   24	        # Set the window title
   25	        self.window.set_title("Check Button")
   26	
   27	        # Set a handler for delete_event that immediately
   28	        # exits GTK.
   29	        self.window.connect("delete_event", self.delete_event)
   30	
   31	        # Sets the border width of the window.
   32	        self.window.set_border_width(20)
   33	
   34	        # Create a vertical box
   35	        vbox = gtk.VBox(True, 2)
   36	
   37	        # Put the vbox in the main window
   38	        self.window.add(vbox)
   39	
   40	        # Create first button
   41	        button = gtk.CheckButton("check button 1")
   42	
   43	        # When the button is toggled, we call the "callback" method
   44	        # with a pointer to "button" as its argument
   45	        button.connect("toggled", self.callback, "check button 1")
   46	
   47	
   48	        # Insert button 1
   49	        vbox.pack_start(button, True, True, 2)
   50	
   51	        button.show()
   52	
   53	        # Create second button
   54	
   55	        button = gtk.CheckButton("check button 2")
   56	
   57	        # When the button is toggled, we call the "callback" method
   58	        # with a pointer to "button 2" as its argument
   59	        button.connect("toggled", self.callback, "check button 2")
   60	        # Insert button 2
   61	        vbox.pack_start(button, True, True, 2)
   62	
   63	        button.show()
   64	
   65	        # Create "Quit" button
   66	        button = gtk.Button("Quit")
   67	
   68	        # When the button is clicked, we call the mainquit function
   69	        # and the program exits
   70	        button.connect("clicked", lambda wid: gtk.main_quit())
   71	
   72	        # Insert the quit button
   73	        vbox.pack_start(button, True, True, 2)
   74	
   75	        button.show()
   76	        vbox.show()
   77	        self.window.show()
   78	
   79	def main():
   80	    gtk.main()
   81	    return 0       
   82	
   83	if __name__ == "__main__":
   84	    CheckButton()
   85	    main()
pygtk2tutorial/sec-GtkWidget.html0100644000117200001670000001003010227357005016206 0ustar finlayfcfA.2. GtkWidget

A.2. GtkWidget

show(GtkWidget, data)

hide(widget, data)

map(widget, data)

unmap(widget, data)

realize(widget, data)

unrealize(widget, data)

draw(widget, area, data)

draw-focus(widget, data)

draw-default(widget, data)

size-request(widget, requisition, data)

size-allocate(widget, allocation, data)

state-changed(widget, state, data)

parent-set(widget, object, data)

style-set(widget, style, data)

add-accelerator(widget, accel_signal_id, accel_group, accel_key, accel_mods,
                accel_flags, data)

remove-accelerator(widget, accel_group, accel_key, accel_mods, data)

bool = event(widget, event, data)

bool = button-press-event(widget, event, data)

bool = button-release-event(widget, event, data)

bool = motion-notify-event(widget, event, data)

bool = delete-event(widget, event, data)

bool = destroy-event(widget, event, data)

bool = expose-event(widget, event, data)

bool = key-press-event(widget, event, data)

bool = key-release-event(widget, event, data)

bool = enter-notify-event(widget, event, data)

bool = leave-notify-event(widget, event, data)

bool = configure-event(widget, event, data)

bool = focus-in-event(widget, event, data)

bool = focus-out-event(widget, event, data)

bool = map-event(widget, event, data)

bool = unmap-event(widget, event, data)

bool = property-notify-event(widget, event, data)

bool = selection-clear-event(widget, event, data)

bool = selection-request-event(widget, event, data)

bool = selection-notify-event(widget, event, data)

selection-get(widget, selection_data, info, time, data)

selection-received(widget, selection_data, time, data)

bool = proximity-in-event(widget, event, data)

bool = proximity-out-event(widget, event, data)

drag-begin(widget, context, data)

drag-end(widget, context, data)

drag-data-delete(widget, context, data)

drag-leave(widget, context, time, data)

bool = drag-motion(widget, context, x, y, time, data)

bool = drag-drop(widget, context, x, y, time, data)

drag-data-get(widget, context, selection_data, info, time, data)

drag-data-received(widget, context, info, time, selection_data,
                   info, time, data)

bool = client-event(widget, event, data)

bool = no-expose-event(widget, event, data)

bool = visibility-notify-event(widget, event, data)

debug-msg(widget, string, data)
pygtk2tutorial/ch-AdvancedEventAndSignalHandling.html0100644000117200001670000001776410227357001022113 0ustar finlayfcfChapter 20. Advanced Event and Signal Handling

Chapter 20. Advanced Event and Signal Handling

20.1. Signal Methods

The signal methods are gobject.GObject methods that are inherited by the gtk.Objects including all the GTK+ widgets.

20.1.1. Connecting and Disconnecting Signal Handlers

  handler_id = object.connect(name, cb, cb_args)
  
  handler_id = object.connect_after(name, cb, cb_args)
  
  handler_id = object.connect_object(name, cb, slot_object, cb_args)
  
  handler_id = object.connect_object_after(name, cb, slot_object, cb_args)
  
  object.disconnect(handler_id)

The first four methods connect a signal handler (cb) to a gtk.Object (object) for the given signal name. and return a handler_id that identifies the connection. cb_args is zero or more arguments that will be passed last (in order) to cb. The connect_after() and connect_object_after() methods will have their signal handlers called after other signal handlers (including the default handlers) connected to the same object and signal name. Each object signal handler has its own set of arguments that it expects. You have to refer to the GTK+ documentation to figure out what arguments need to be handled by a signal handler though information for the common widgets is available in Appendix A, GTK Signals. The general signal handler is similar to:

  def signal_handler(object, ...., cb_args):

Signal handlers that are defined as part of a Python object class (specified in the connect() methods as self.cb) will have an additional argument passed as the first argument - the object instance self:

  signal_handler(self, object, ...., cb_args)

The connect_object() and connect_object_after() methods call the signal handler with the slot_object substituted in place of the object as the first argument:

  def signal_handler(slot_object, ...., func_args):

  def signal_handler(self, slot_object, ...., func_args):

The disconnect() method destroys the connection between a signal handler and an object signal. The handler_id specifies which connection to destroy.

20.1.2. Blocking and Unblocking Signal Handlers

The following methods:

  object.handler_block(handler_id)

  object.handler_unblock(handler_id)

block and unblock the signal handler specified by handler_id. When a signal handler is blocked it will not be invoked when the signal occurs.

20.1.3. Emitting and Stopping Signals

The following methods:

  object.emit(name, ...)

  object.emit_stop_by_name(name)

emit and stop the signal name respectively. Emitting the signal causes its default and user defined handlers to be run. The emit_stop_by_name() method will abort the current signal name emission.

pygtk2tutorial/sec-MonitoringIO.html0100644000117200001670000001124610227357001016700 0ustar finlayfcf19.2. Monitoring IO

19.2. Monitoring IO

You can check for the ability to read from or write to a file (either a Python file or a lower level OS file) and then automatically invoke a callback. This is especially useful for networking applications. The gobject module function:

  source_id = gobject.io_add_watch(source, condition, callback)

where the first argument (source) is the open file (Python file object or lower level file descriptor integer) you wish to have watched. The gobject.io_add_watch() function uses the lower level file descriptor integer internally but the function will extract it from the Python file object using the fileno() method as needed. The second argument (condition) specifies what you want to look for. This may be one of:

  gobject.IO_IN - There is data ready for reading from your file.

  gobject.IO_OUT - The file is ready for writing.

  gobject.IO_PRI - There is urgent data to read.

  gobject.IO_ERR - Error condition.

  gobject.IO_HUP - Hung up (the connection has been broken, usually for
                   pipes and sockets).

These are defined in the gobject module. As I'm sure you've figured out already, the third argument is the callback you wish to have called when the above conditions are satisfied.

The return value source_id may be used to stop the monitoring of the file by using the following function:

  gobject.source_remove(source_id)

The callback function should be similar to:

  def input_callback(source, condition):

where source and condition are as specified above. The source value will be the lower level file descriptor integer and not the Python file object (i.e. the value that is returned from the Python file method fileno()).

You may also stop the callback function from being called again by returning zero or FALSE from your callback. If you want your callback to be called again, it should return TRUE.

pygtk2tutorial/sec-FileChoosers.html0100644000117200001670000002252110227356776016730 0ustar finlayfcf16.6. File Selections using FileChooser-based Widgets

16.6. File Selections using FileChooser-based Widgets

The new way to select files in PyGTK 2.4 is to use the variants of the FileChooser widget. The two objects that implement this new interface in PyGTK 2.4 are FileChooserWidget and FileChooserDialog. The latter is the complete dialog with the window and easily defined buttons. The former is a widget useful for embedding within another widget.

Both the FileChooserWidget and FileChooserDialog possess the means for navigating the filesystem tree and selecting files. The view of the widgets depends on the action used to open a widget.

To create a new file chooser dialog to select an existing file (as in typical File->Open option of a typical application), use:

  chooser = gtk.FileChooserDialog(title=None,action=gtk.FILE_CHOOSER_ACTION_OPEN,
                                  buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,gtk.STOCK_OPEN,gtk.RESPONSE_OK))

To create a new file chooser dialog to select a new file name (as in the typical File->Save as option of a typical application), use:

  chooser = gtk.FileChooserDialog(title=None,action=gtk.FILE_CHOOSER_ACTION_SAVE,
                                  buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,gtk.STOCK_OPEN,gtk.RESPONSE_OK))

In the above examples, the two buttons (the stock Cancel and Open items) are created and connected to their respective responses (stock Cancel and OK responses).

To set the folder displayed in the file chooser, use the method:

  chooser.set_current_folder(pathname)

To set the suggested file name as if it was typed by a user (the typical File->Save Assituation), use the method:

  chooser.set_current_name(name)

The above method does not require the filename to exist. If you want to preselect a particular existing file (as in the File->Open situation), you should use the method:

  chooser.set_filename(filename)

To obtain the filename that the user has entered or clicked on, use this method:

  filename = chooser.get_filename()

It is possible to allow multiple file selections (only for the gtk.FILE_CHOOSER_ACTION_OPEN action) by using the method:

  chooser.set_select_multiple(select_multiple)

where select_mutiple should be TRUE to allow multiple selections. In this case, you will need to use the following method to retrieve a list of the selected filenames:

  filenames = chooser.get_filenames()

An important feature of all file choosers is the ability to add file selection filters. The filter may be added by the method:

  chooser.add_filter(filter)

In the example above, filter must be an instance of the FileFilterclass.

The left panel of the file chooser lists some shortcut folders such as Home, Filesystem, CDROM, etc. You may add a folder to the list of these shortcuts and remove it from the list by using these methods:

  chooser.add_shortcut_folder(folder)
  chooser.remove_shortcut_folder(folder)

where folder is the pathname of folder. The filechooser.py example program illustrates the use of the filechooser widget. Figure 16.12, “File Selection Example” shows the resulting display:

Figure 16.12. File Selection Example

File Selection Example

The source code for the filechooser.py example program is:

    1   #!/usr/bin/env python
    2
    3   # example filechooser.py
    4
    5   import pygtk
    6   pygtk.require('2.0')
    7
    8   import gtk
    9
   10   # Check for new pygtk: this is new class in PyGtk 2.4
   11   if gtk.pygtk_version < (2,3,90):
   12      print "PyGtk 2.3.90 or later required for this example"
   13      raise SystemExit
   14
   15   dialog = gtk.FileChooserDialog("Open..",
   16                                  None,
   17                                  gtk.FILE_CHOOSER_ACTION_OPEN,
   18                                  (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
   19                                   gtk.STOCK_OPEN, gtk.RESPONSE_OK))
   20   dialog.set_default_response(gtk.RESPONSE_OK)
   21
   22   filter = gtk.FileFilter()
   23   filter.set_name("All files")
   24   filter.add_pattern("*")
   25   dialog.add_filter(filter)
   26
   27   filter = gtk.FileFilter()
   28   filter.set_name("Images")
   29   filter.add_mime_type("image/png")
   30   filter.add_mime_type("image/jpeg")
   31   filter.add_mime_type("image/gif")
   32   filter.add_pattern("*.png")
   33   filter.add_pattern("*.jpg")
   34   filter.add_pattern("*.gif")
   35   filter.add_pattern("*.tif")
   36   filter.add_pattern("*.xpm")
   37   dialog.add_filter(filter)
   38
   39   response = dialog.run()
   40   if response == gtk.RESPONSE_OK:
   41       print dialog.get_filename(), 'selected'
   42   elif response == gtk.RESPONSE_CANCEL:
   43       print 'Closed, no files selected'
   44   dialog.destroy()
pygtk2tutorial/sec-TextEntries.html0100644000117200001670000002175110227356762016620 0ustar finlayfcf9.9. Text Entries

9.9. Text Entries

The Entry widget allows text to be typed and displayed in a single line text box. The text may be set with method calls that allow new text to replace, prepend or append the current contents of the Entry widget.

The function for creating an Entry widget is:

  entry = gtk.Entry(max=0)

If the max argument is given it sets a limit on the length of the text within the Entry. If max is 0 then there is no limit.

The maximum length of the entry can be changed using the method:

  entry.set_max_length(max)

The next method alters the text which is currently within the Entry widget.

  entry.set_text(text)

The set_text() method sets the contents of the Entry widget to text, replacing the current contents. Note that the class Entry implements the Editable interface (yes, gobject supports Java-like interfaces) which contains some more functions for manipulating the contents. For example, the method:

  entry.insert_text(text, position=0)

inserts text at the given position within the entry.

The contents of the Entry can be retrieved by using a call to the following method. This is useful in the callback methods described below.

  text = entry.get_text()

If we don't want the contents of the Entry to be changed by someone typing into it, we can change its editable state.

  entry.set_editable(is_editable)

The above method allows us to toggle the editable state of the Entry widget by passing in a TRUE or FALSE value for the is_editable argument.

If we are using the Entry where we don't want the text entered to be visible, for example when a password is being entered, we can use the following method, which also takes a boolean flag.

  entry.set_visibility(visible)

A region of the text may be set as selected by using the following method. This would most often be used after setting some default text in an Entry, making it easy for the user to remove it.

  entry.select_region(start, end)

If we want to be notified when the user has entered text, we can connect to the "activate" or "changed" signal. Activate is raised when the user hits the enter key within the Entry widget. Changed is raised when the any change is made to the text, e.g. for every character entered or removed.

The entry.py example program illustrates the use of an Entry widget. Figure 9.10, “Entry Example” shows the result of running the program:

Figure 9.10. Entry Example

Entry Example

The entry.py source code is:

    1	#!/usr/bin/env python
    2	
    3	# example entry.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	
    9	class EntryExample:
   10	    def enter_callback(self, widget, entry):
   11	        entry_text = entry.get_text()
   12	        print "Entry contents: %s\n" % entry_text
   13	
   14	    def entry_toggle_editable(self, checkbutton, entry):
   15	        entry.set_editable(checkbutton.get_active())
   16	
   17	    def entry_toggle_visibility(self, checkbutton, entry):
   18	        entry.set_visibility(checkbutton.get_active())
   19	
   20	    def __init__(self):
   21	        # create a new window
   22	        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   23	        window.set_size_request(200, 100)
   24	        window.set_title("GTK Entry")
   25	        window.connect("delete_event", lambda w,e: gtk.main_quit())
   26	
   27	        vbox = gtk.VBox(False, 0)
   28	        window.add(vbox)
   29	        vbox.show()
   30	
   31	        entry = gtk.Entry()
   32	        entry.set_max_length(50)
   33	        entry.connect("activate", self.enter_callback, entry)
   34	        entry.set_text("hello")
   35	        entry.insert_text(" world", len(entry.get_text()))
   36	        entry.select_region(0, len(entry.get_text()))
   37	        vbox.pack_start(entry, True, True, 0)
   38	        entry.show()
   39	
   40	        hbox = gtk.HBox(False, 0)
   41	        vbox.add(hbox)
   42	        hbox.show()
   43	                                  
   44	        check = gtk.CheckButton("Editable")
   45	        hbox.pack_start(check, True, True, 0)
   46	        check.connect("toggled", self.entry_toggle_editable, entry)
   47	        check.set_active(True)
   48	        check.show()
   49	    
   50	        check = gtk.CheckButton("Visible")
   51	        hbox.pack_start(check, True, True, 0)
   52	        check.connect("toggled", self.entry_toggle_visibility, entry)
   53	        check.set_active(True)
   54	        check.show()
   55	                                   
   56	        button = gtk.Button(stock=gtk.STOCK_CLOSE)
   57	        button.connect("clicked", lambda w: gtk.main_quit())
   58	        vbox.pack_start(button, True, True, 0)
   59	        button.set_flags(gtk.CAN_DEFAULT)
   60	        button.grab_default()
   61	        button.show()
   62	        window.show()
   63	
   64	def main():
   65	    gtk.main()
   66	    return 0
   67	
   68	if __name__ == "__main__":
   69	    EntryExample()
   70	    main()
pygtk2tutorial/sec-Notebooks.html0100644000117200001670000003306610227356764016311 0ustar finlayfcf10.12. Notebooks

10.12. Notebooks

The NoteBook Widget is a collection of "pages" that overlap each other; each page contains different information with only one page visible at a time. This widget has become more common lately in GUI programming, and it is a good way to show blocks of similar information that warrant separation in their display.

The first function call you will need to know, as you can probably guess by now, is used to create a new notebook widget.

  notebook = gtk.Notebook()

Once the notebook has been created, there are a number of methods that operate on the notebook widget. Let's look at them individually.

The first one we will look at is how to position the page indicators. These page indicators or "tabs" as they are referred to, can be positioned in four ways: top, bottom, left, or right.

  notebook.set_tab_pos(pos)

pos will be one of the following, which are pretty self explanatory:

  POS_LEFT
  POS_RIGHT
  POS_TOP
  POS_BOTTOM

POS_TOP is the default.

Next we will look at how to add pages to the notebook. There are three ways to add pages to a NoteBook. Let's look at the first two together as they are quite similar.

  notebook.append_page(child, tab_label)

  notebook.prepend_page(child, tab_label)

These methods add pages to the notebook by inserting them from the back of the notebook (append), or the front of the notebook (prepend). child is the widget that is placed within the notebook page, and tab_label is the label for the page being added. The child widget must be created separately, and is typically a set of options setup within one of the other container widgets, such as a table.

The final method for adding a page to the notebook contains all of the properties of the previous two, but it allows you to specify what position you want the page to be in the notebook.

  notebook.insert_page(child, tab_label, position)

The parameters are the same as append() and prepend() except it contains an extra parameter, position. This parameter is used to specify what place this page will be inserted into; the first page having position zero.

Now that we know how to add a page, lets see how we can remove a page from the notebook.

  notebook.remove_page(page_num)

This method takes the page specified by page_num and removes it from the widget pointed to by notebook.

To find out what the current page is in a notebook use the method:

  page = notebook.get_current_page()

These next two methods are simple calls to move the notebook page forward or backward. Simply provide the respective method call with the notebook widget you wish to operate on.

  notebook.next_page()

  notebook.prev_page()

Note

When the notebook is currently on the last page, and next_page() is called, nothing happens. Likewise, if the notebook is on the first page, and prev_page() is called, nothing happens.

This next method sets the "active" page. If you wish the notebook to be opened to page 5 for example, you would use this method. Without using this method, the notebook defaults to displaying the first page.

  notebook.set_current_page(page_num)

The next two methods add or remove the notebook page tabs and the notebook border respectively.

  notebook.set_show_tabs(show_tabs)

  notebook.set_show_border(show_border)

The next method is useful when the you have a large number of pages, and the tabs don't fit on the page. It allows the tabs to be scrolled through using two arrow buttons.

  notebook.set_scrollable(scrollable)

show_tabs, show_border and scrollable can be either TRUE or FALSE.

Now let's look at an example. The notebook.py program creates a window with a notebook and six buttons. The notebook contains 11 pages, added in three different ways, appended, inserted, and prepended. The buttons allow you rotate the tab positions, add or remove the tabs and border, remove a page, change pages in both a forward and backward manner, and exit the program. Figure 10.9, “Notebook Example” illustrates the program display:

Figure 10.9. Notebook Example

Notebook Example

The source code for notebook.py is:

    1	#!/usr/bin/env python
    2	
    3	# example notebook.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	
    9	class NotebookExample:
   10	    # This method rotates the position of the tabs
   11	    def rotate_book(self, button, notebook):
   12	        notebook.set_tab_pos((notebook.get_tab_pos()+1) %4)
   13	
   14	    # Add/Remove the page tabs and the borders
   15	    def tabsborder_book(self, button, notebook):
   16	        tval = False
   17	        bval = False
   18	        if self.show_tabs == False:
   19		    tval = True 
   20	        if self.show_border == False:
   21		    bval = True
   22	
   23	        notebook.set_show_tabs(tval)
   24	        self.show_tabs = tval
   25	        notebook.set_show_border(bval)
   26	        self.show_border = bval
   27	
   28	    # Remove a page from the notebook
   29	    def remove_book(self, button, notebook):
   30	        page = notebook.get_current_page()
   31	        notebook.remove_page(page)
   32	        # Need to refresh the widget -- 
   33	        # This forces the widget to redraw itself.
   34	        notebook.queue_draw_area(0,0,-1,-1)
   35	
   36	    def delete(self, widget, event=None):
   37	        gtk.main_quit()
   38	        return False
   39	
   40	    def __init__(self):
   41	        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   42	        window.connect("delete_event", self.delete)
   43	        window.set_border_width(10)
   44	
   45	        table = gtk.Table(3,6,False)
   46	        window.add(table)
   47	
   48	        # Create a new notebook, place the position of the tabs
   49	        notebook = gtk.Notebook()
   50	        notebook.set_tab_pos(gtk.POS_TOP)
   51	        table.attach(notebook, 0,6,0,1)
   52	        notebook.show()
   53	        self.show_tabs = True
   54	        self.show_border = True
   55	
   56	        # Let's append a bunch of pages to the notebook
   57	        for i in range(5):
   58	            bufferf = "Append Frame %d" % (i+1)
   59	            bufferl = "Page %d" % (i+1)
   60	
   61	            frame = gtk.Frame(bufferf)
   62	            frame.set_border_width(10)
   63	            frame.set_size_request(100, 75)
   64	            frame.show()
   65	
   66	            label = gtk.Label(bufferf)
   67	            frame.add(label)
   68	            label.show()
   69	
   70	            label = gtk.Label(bufferl)
   71	            notebook.append_page(frame, label)
   72	      
   73	        # Now let's add a page to a specific spot
   74	        checkbutton = gtk.CheckButton("Check me please!")
   75	        checkbutton.set_size_request(100, 75)
   76	        checkbutton.show ()
   77	
   78	        label = gtk.Label("Add page")
   79	        notebook.insert_page(checkbutton, label, 2)
   80	
   81	        # Now finally let's prepend pages to the notebook
   82	        for i in range(5):
   83	            bufferf = "Prepend Frame %d" % (i+1)
   84	            bufferl = "PPage %d" % (i+1)
   85	
   86	            frame = gtk.Frame(bufferf)
   87	            frame.set_border_width(10)
   88	            frame.set_size_request(100, 75)
   89	            frame.show()
   90	
   91	            label = gtk.Label(bufferf)
   92	            frame.add(label)
   93	            label.show()
   94	
   95	            label = gtk.Label(bufferl)
   96	            notebook.prepend_page(frame, label)
   97	    
   98	        # Set what page to start at (page 4)
   99	        notebook.set_current_page(3)
  100	
  101	        # Create a bunch of buttons
  102	        button = gtk.Button("close")
  103	        button.connect("clicked", self.delete)
  104	        table.attach(button, 0,1,1,2)
  105	        button.show()
  106	
  107	        button = gtk.Button("next page")
  108	        button.connect("clicked", lambda w: notebook.next_page())
  109	        table.attach(button, 1,2,1,2)
  110	        button.show()
  111	
  112	        button = gtk.Button("prev page")
  113	        button.connect("clicked", lambda w: notebook.prev_page())
  114	        table.attach(button, 2,3,1,2)
  115	        button.show()
  116	
  117	        button = gtk.Button("tab position")
  118	        button.connect("clicked", self.rotate_book, notebook)
  119	        table.attach(button, 3,4,1,2)
  120	        button.show()
  121	
  122	        button = gtk.Button("tabs/border on/off")
  123	        button.connect("clicked", self.tabsborder_book, notebook)
  124	        table.attach(button, 4,5,1,2)
  125	        button.show()
  126	
  127	        button = gtk.Button("remove page")
  128	        button.connect("clicked", self.remove_book, notebook)
  129	        table.attach(button, 5,6,1,2)
  130	        button.show()
  131	
  132	        table.show()
  133	        window.show()
  134	
  135	def main():
  136	    gtk.main()
  137	    return 0
  138	
  139	if __name__ == "__main__":
  140	    NotebookExample()
  141	    main()
  

I hope this helps you on your way with creating notebooks for your PyGTK applications.

pygtk2tutorial/ch-MovingOn.html0100644000117200001670000000662210227356757015722 0ustar finlayfcfChapter 3. Moving On

Chapter 3. Moving On

3.1. More on Signal Handlers

Lets take another look at the connect() call.

  object.connect(name, func, func_data)

The return value from a connect() call is an integer tag that identifies your callback. As stated above, you may have as many callbacks per signal and per object as you need, and each will be executed in turn, in the order they were attached.

This tag allows you to remove this callback from the list by using:

  object.disconnect(id)

So, by passing in the tag returned by one of the signal connect methods, you can disconnect a signal handler.

You can also temporarily disable signal handlers with the signal_handler_block() and signal_handler_unblock() pair of methods.

  object.signal_handler_block(handler_id)

  object.signal_handler_unblock(handler_id)
pygtk2tutorial/sec-AspectFrames.html0100644000117200001670000001362310227356763016717 0ustar finlayfcf10.6. Aspect Frames

10.6. Aspect Frames

The aspect frame widget is like a frame widget, except that it also enforces the aspect ratio (that is, the ratio of the width to the height) of the child widget to have a certain value, adding extra space if necessary. This is useful, for instance, if you want to preview a larger image. The size of the preview should vary when the user resizes the window, but the aspect ratio needs to always match the original image.

To create a new aspect frame use:

  aspect_frame = gtk.AspectFrame(label=None, xalign=0.5, yalign=0.5, ratio=1.0, obey_child=TRUE)

label specifies the text to be displayed as the label. xalign and yalign specify alignment as with gtk.Alignment widgets. If obey_child is TRUE, the aspect ratio of a child widget will match the aspect ratio of the ideal size it requests. Otherwise, it is given by ratio.

To change the options of an existing aspect frame, you can use:

  aspect_frame.set(xalign=0.0, yalign=0.0, ratio=1.0, obey_child=TRUE)

As an example, the aspectframe.py program uses an AspectFrame to present a drawing area whose aspect ratio will always be 2:1, no matter how the user resizes the top-level window. Figure 10.5, “Aspect Frame Example” illustrates the display of the program:

Figure 10.5. Aspect Frame Example

Aspect Frame Example

The source code for aspectframe.py is:

    1	#!/usr/bin/env python
    2	
    3	# example aspectframe.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	
    9	class AspectFrameExample:
   10	    def __init__(self):
   11	        window = gtk.Window(gtk.WINDOW_TOPLEVEL);
   12	        window.set_title("Aspect Frame")
   13	        window.connect("destroy", lambda x: gtk.main_quit())
   14	        window.set_border_width(10)
   15	
   16	        # Create an aspect_frame and add it to our toplevel window
   17	        aspect_frame = gtk.AspectFrame("2x1", # label
   18	                                       0.5, # center x
   19	                                       0.5, # center y
   20	                                       2, # xsize/ysize = 2
   21	                                       False) # ignore child's aspect
   22	        window.add(aspect_frame)
   23	        aspect_frame.show()
   24	
   25	        # Now add a child widget to the aspect frame
   26	        drawing_area = gtk.DrawingArea()
   27	
   28	        # Ask for a 200x200 window, but the AspectFrame will give us a 200x100
   29	        # window since we are forcing a 2x1 aspect ratio
   30	        drawing_area.set_size_request(200, 200)
   31	        aspect_frame.add(drawing_area)
   32	        drawing_area.show()
   33	        window.show()
   34	
   35	def main():
   36	    gtk.main()
   37	    return 0
   38	
   39	if __name__ == "__main__":
   40	    AspectFrameExample()
   41	    main()
pygtk2tutorial/sec-ManipulatingTreeViews.html0100644000117200001670000001307010227356771020623 0ustar finlayfcf14.6. Manipulating TreeViews

14.6. Manipulating TreeViews

14.6.1. Managing Columns

The TreeViewColumns in a TreeView can be retrieved singly or as a list using the methods:

  treeviewcolumn = treeview.get_column(n)
  columnlist = treeview.get_columns()

where n is the index (starting from 0) of the column to retrieve. A column can be removed using the method:

  treeview.remove_column(column)

where column is a TreeViewColumn in treeview.

Rows that have child rows are displayed in the TreeView with an expander arrow (see Figure 14.3, “CellRenderer Data Function”) that the user clicks on to hide or reveal the child row(s). The column that the expander arrow is displayed in can be changed using the method:

  treeview.set_expander_column(column)

where column is a TreeViewColumn in treeview. This method is useful when you want the first column to not indent. For example, Figure 14.7, “Expander Arrow in Second Column” illustrates the expander arrow in the second column:

Figure 14.7. Expander Arrow in Second Column

Expander Arrow in Second Column

14.6.2. Expanding and Collapsing Child Rows

All the rows displayed in a TreeView can be programmatically expanded or collapsed using the following methods:

  treeview.expand_all()
  treeview.collapse_all()

These methods are useful if you want to initialize the TreeView display to a known state. Individual rows can be expanded or collapsed using:

  treeview.expand_row(path, open_all)
  treeview.collapse_row(path)

where path is the tree path to a row in treeview, and if open_all is TRUE all descendant rows of path are expanded; otherwise just the immediate children are expanded.

You can determine if a row is expanded using the method:

  is_expanded = treeview.row_expanded(path)
pygtk2tutorial/sec-GtkAdjustment.html0100644000117200001670000000356710227357010017116 0ustar finlayfcfA.22. GtkAdjustment

A.22. GtkAdjustment

changed(adjustment, data)

value-changed(adjustment, data)
pygtk2tutorial/sec-WidgetNameMethods.html0100644000117200001670000000503210227357000017666 0ustar finlayfcf18.4. Widget Name Methods

18.4. Widget Name Methods

The following widget methods set and get the name of a widget:

  widget.set_name(name)

  name = widget.get_name()

name is the string that will be associated with the widget. This is useful for specifying styles to be used with specific widgets within an application. The name of the widget can be used to narrow the application of the style as opposed to using the widget's class. See Chapter 23, GTK's rc Files for more details.

pygtk2tutorial/sec-ToggleButtons.html0100644000117200001670000002062710227356760017141 0ustar finlayfcf6.2. Toggle Buttons

6.2. Toggle Buttons

Toggle buttons are derived from normal buttons and are very similar, except they will always be in one of two states, alternated by a click. They may be depressed, and when you click again, they will pop back up. Click again, and they will pop back down.

Toggle buttons are the basis for check buttons and radio buttons, as such, many of the calls used for toggle buttons are inherited by radio and check buttons. I will point these out when we come to them.

Creating a new toggle button:

  toggle_button = gtk.ToggleButton(label=None)

As you can imagine, these work identically to the normal button widget calls. If no label is specified the button will be blank. The label text will be parsed for '_'-prefixed mnemonic characters.

To retrieve the state of the toggle widget, including radio and check buttons, we use a construct as shown in our example below. This tests the state of the toggle, by calling the get_active() method of the toggle button object. The signal of interest to us that is emitted by toggle buttons (the toggle button, check button, and radio button widgets) is the "toggled" signal. To check the state of these buttons, set up a signal handler to catch the toggled signal, and access the object attributes to determine its state. The callback will look something like:

  def toggle_button_callback(widget, data):
      if widget.get_active():
          # If control reaches here, the toggle button is down
      else:
          # If control reaches here, the toggle button is up

To force the state of a toggle button, and its children, the radio and check buttons, use this method:

  toggle_button.set_active(is_active)

The above method can be used to set the state of the toggle button, and its children the radio and check buttons. Specifying a TRUE or FALSE for the is_active argument indicates whether the button should be down (depressed) or up (released). When the toggle button is created its default is up or FALSE.

Note that when you use the set_active() method, and the state is actually changed, it causes the "clicked" and "toggled" signals to be emitted from the button.

  toggle_button.get_active()

This method returns the current state of the toggle button as a boolean TRUE or FALSE value.

The togglebutton.py program provides a simple example using toggle buttons. Figure 6.2, “Toggle Button Example” illustrates the resulting window with the second toggle button active:

Figure 6.2. Toggle Button Example

Toggle Button Example

The source code for the program is:

    1	#!/usr/bin/env python
    2	
    3	# example togglebutton.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	
    9	class ToggleButton:
   10	    # Our callback.
   11	    # The data passed to this method is printed to stdout
   12	    def callback(self, widget, data=None):
   13	        print "%s was toggled %s" % (data, ("OFF", "ON")[widget.get_active()])
   14	
   15	    # This callback quits the program
   16	    def delete_event(self, widget, event, data=None):
   17	        gtk.main_quit()
   18	        return False
   19	
   20	    def __init__(self):
   21	        # Create a new window
   22	        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   23	
   24	        # Set the window title
   25	        self.window.set_title("Toggle Button")
   26	
   27	        # Set a handler for delete_event that immediately
   28	        # exits GTK.
   29	        self.window.connect("delete_event", self.delete_event)
   30	
   31	        # Sets the border width of the window.
   32	        self.window.set_border_width(20)
   33	
   34	        # Create a vertical box
   35	        vbox = gtk.VBox(True, 2)
   36	
   37	        # Put the vbox in the main window
   38	        self.window.add(vbox)
   39	
   40	        # Create first button
   41	        button = gtk.ToggleButton("toggle button 1")
   42	
   43	        # When the button is toggled, we call the "callback" method
   44	        # with a pointer to "button" as its argument
   45	        button.connect("toggled", self.callback, "toggle button 1")
   46	
   47	
   48	        # Insert button 1
   49	        vbox.pack_start(button, True, True, 2)
   50	
   51	        button.show()
   52	
   53	        # Create second button
   54	
   55	        button = gtk.ToggleButton("toggle button 2")
   56	
   57	        # When the button is toggled, we call the "callback" method
   58	        # with a pointer to "button 2" as its argument
   59	        button.connect("toggled", self.callback, "toggle button 2")
   60	        # Insert button 2
   61	        vbox.pack_start(button, True, True, 2)
   62	
   63	        button.show()
   64	
   65	        # Create "Quit" button
   66	        button = gtk.Button("Quit")
   67	
   68	        # When the button is clicked, we call the main_quit function
   69	        # and the program exits
   70	        button.connect("clicked", lambda wid: gtk.main_quit())
   71	
   72	        # Insert the quit button
   73	        vbox.pack_start(button, True, True, 2)
   74	
   75	        button.show()
   76	        vbox.show()
   77	        self.window.show()
   78	
   79	def main():
   80	    gtk.main()
   81	    return 0       
   82	
   83	if __name__ == "__main__":
   84	    ToggleButton()
   85	    main()

The interesting lines are 12-13 which define the callback() method that prints the toggle button label and its state when it is toggled. Lines 45 and 59 connect the "toggled" signal of the toggle buttons to the callback() method.

pygtk2tutorial/sec-DrawingAreaWidgetAndDrawing.html0100644000117200001670000003162010227357004021613 0ustar finlayfcf24.3. The DrawingArea Widget, And Drawing

24.3. The DrawingArea Widget, And Drawing

We now turn to the process of drawing on the screen. The widget we use for this is the DrawingArea (see Chapter 12, Drawing Area) widget. A drawing area widget is essentially an X window and nothing more. It is a blank canvas in which we can draw whatever we like. A drawing area is created using the call:

  darea = gtk.DrawingArea()

A default size for the widget can be specified by calling:

  darea.set_size_request(width, height)

This default size can be overridden, as is true for all widgets, by calling the set_size_request() method, and that, in turn, can be overridden if the user manually resizes the the window containing the drawing area.

It should be noted that when we create a DrawingArea widget, we are completely responsible for drawing the contents. If our window is obscured then uncovered, we get an exposure event and must redraw what was previously hidden.

Having to remember everything that was drawn on the screen so we can properly redraw it can, to say the least, be a nuisance. In addition, it can be visually distracting if portions of the window are cleared, then redrawn step by step. The solution to this problem is to use an offscreen backing pixmap. Instead of drawing directly to the screen, we draw to an image stored in server memory but not displayed, then when the image changes or new portions of the image are displayed, we copy the relevant portions onto the screen.

To create an offscreen pixmap, we call the function:

  pixmap = gtk.gdk.Pixmap(window, width, height, depth=-1)

The window parameter specifies a gtk.gdk.Window that this pixmap takes some of its properties from. width and height specify the size of the pixmap. depth specifies the color depth, that is the number of bits per pixel, for the new window. If the depth is specified as -1 or omitted, it will match the depth of window.

We create the pixmap in our "configure_event" handler. This event is generated whenever the window changes size, including when it is originally created.

   32   # Create a new backing pixmap of the appropriate size
   33   def configure_event(widget, event):
   34       global pixmap
   35
   36       x, y, width, height = widget.get_allocation()
   37       pixmap = gtk.gdk.Pixmap(widget.window, width, height)
   38       pixmap.draw_rectangle(widget.get_style().white_gc,
   39                             True, 0, 0, width, height)
   40
   41       return True
 

The call to draw_rectangle() clears the pixmap initially to white. We'll say more about that in a moment.

Our exposure event handler then simply copies the relevant portion of the pixmap onto the drawing area (widget) using the draw_pixmap() method. (We determine the area we need to redraw by using the event.area attribute of the exposure event):

   43   # Redraw the screen from the backing pixmap
   44   def expose_event(widget, event):
   45       x , y, width, height = event.area
   46       widget.window.draw_drawable(widget.get_style().fg_gc[gtk.STATE_NORMAL],
   47                                   pixmap, x, y, x, y, width, height)
   48       return False

We've now seen how to keep the screen up to date with our pixmap, but how do we actually draw interesting stuff on our pixmap? There are a large number of calls in PyGTK for drawing on drawables. A drawable is simply something that can be drawn upon. It can be a window, a pixmap, or a bitmap (a black and white image). We've already seen two such calls above, draw_rectangle() and draw_pixmap(). The complete list is:

  drawable.draw_point(gc, x, y)

  drawable.draw_line(gc, x1, y1, x2, y2)

  drawable.draw_rectangle(gc, fill, x, y, width, height)

  drawable.draw_arc(gc, fill, x, y, width, height, angle1, angle2)

  drawable.draw_polygon(gc, fill, points)

  drawable.draw_drawable(gc, src, xsrc, ysrc, xdest, ydest, width, height)

  drawable.draw_points(gc, points)

  drawable.draw_lines(gc, points)

  drawable.draw_segments(gc, segments)

  drawable.draw_rgb_image(gc, x, y, width, height, dither, buffer, rowstride)

  drawable.draw_rgb_32_image(gc, x, y, width, height, dither, buffer, rowstride)

  drawable.draw_gray_image(gc, x, y, width, height, dither, buffer, rowstride)

The drawing area methods are the same as the drawable drawing methods so you can use the methods described in Section 12.2, “Drawing Methods” for further details on these methods. These methods all share the same first arguments. The first argument is a graphics context (gc).

A graphics context encapsulates information about things such as foreground and background color and line width. PyGTK has a full set of functions for creating and modifying graphics contexts, but to keep things simple we'll just use predefined graphics contexts. See Section 12.1, “Graphics Context” section for more information on graphics contexts. Each widget has an associated style. (Which can be modified in a gtkrc file, see Chapter 23, GTK's rc Files.) This, among other things, stores a number of graphics contexts. Some examples of accessing these graphics contexts are:

  widget.get_style().white_gc

  widget.get_style().black_gc

  widget.get_style().fg_gc[STATE_NORMAL]

  widget.get_style().bg_gc[STATE_PRELIGHT]

The fields fg_gc, bg_gc, dark_gc, and light_gc are indexed by a parameter which can take on the values:

  STATE_NORMAL,
  STATE_ACTIVE,
  STATE_PRELIGHT,
  STATE_SELECTED,
  STATE_INSENSITIVE

For instance, for STATE_SELECTED the default foreground color is white and the default background color, dark blue.

Our function draw_brush(), which does the actual drawing on the pixmap, is then:

   50   # Draw a rectangle on the screen
   51   def draw_brush(widget, x, y):
   52       rect = (int(x-5), int(y-5), 10, 10)
   53       pixmap.draw_rectangle(widget.get_style().black_gc, True,
   54                             rect[0], rect[1], rect[2], rect[3])
   55       widget.queue_draw_area(rect[0], rect[1], rect[2], rect[3])

After we draw the rectangle representing the brush onto the pixmap, we call the function:

  widget.queue_draw_area(x, y, width, height)

which notifies X that the area given needs to be updated. X will eventually generate an expose event (possibly combining the areas passed in several calls to draw()) which will cause our expose event handler to copy the relevant portions to the screen.

We have now covered the entire drawing program except for a few mundane details like creating the main window.

pygtk2tutorial/sec-Dialogs.html0100644000117200001670000001114710227356761015721 0ustar finlayfcf9.5. Dialogs

9.5. Dialogs

The Dialog widget is very simple, and is actually just a window with a few things pre-packed into it for you. It simply creates a window, and then packs a VBox into the top, which contains a separator and then an HBox called the "action_area".

The Dialog widget can be used for pop-up messages to the user, and other similar tasks. It is really basic, and there is only one function for the dialog box, which is:

  dialog = gtk.Dialog(title=None, parent=None, flags=0, buttons=None)

where title is the text to be used in the titlebar, parent is the main application window and flags set various modes of operation for the dialog:

  DIALOG_MODAL - make the dialog modal
  DIALOG_DESTROY_WITH_PARENT - destroy dialog when its parent is destroyed
  DIALOG_NO_SEPARATOR - omit the separator between the vbox and the action_area  

The buttons argument is a tuple of button text and response pairs. All arguments have defaults and can be specified using keywords.

This will create the dialog box, and it is now up to you to use it. You could pack a button in the action_area:

  button = ...
  dialog.action_area.pack_start(button, TRUE, TRUE, 0)
  button.show()

And you could add to the vbox area by packing, for instance, a label in it, try something like this:

  label = gtk.Label("Dialogs are groovy")
  dialog.vbox.pack_start(label, TRUE, TRUE, 0)
  label.show()

As an example in using the dialog box, you could put two buttons in the action_area, a Cancel button and an Ok button, and a label in the vbox area, asking the user a question or giving an error, etc. Then you could attach a different signal to each of the buttons and perform the operation the user selects.

If the simple functionality provided by the default vertical and horizontal boxes in the two areas doesn't give you enough control for your application, then you can simply pack another layout widget into the boxes provided. For example, you could pack a table into the vertical box.

pygtk2tutorial/sec-ComboBoxAndComboboxEntry.html0100644000117200001670000005202510227356775021212 0ustar finlayfcf16.2. ComboBox and ComboBoxEntry Widgets

16.2. ComboBox and ComboBoxEntry Widgets

16.2.1. ComboBox Widgets

The ComboBox replaces the OptionMenu with a powerful widget that uses a TreeModel (usually a ListStore) to provide the list items to display. The ComboBox implements the CellLayout interface that provides a number of methods for managing the display of the list items. One or more CellRenderers can be packed into a ComboBox to customize the list item display.

16.2.1.1. Basic ComboBox Use

The easy way to create and populate a ComboBox is to use the convenience function:

  combobox = gtk.combo_box_new_text()

This function creates a ComboBox and its associated ListStore and packs it with a CellRendererText. The following convenience methods are used to populate or remove the contents of the ComboBox and its ListStore:

  combobox.append_text(text)
  combobox.prepend_text(text)
  combobox.insert_text(position, text)
  combobox.remove_text(position)

where text is the string to be added to the ComboBox and position is the index where text is to be inserted or removed. In most cases the convenience function and methods are all you need.

The example program comboboxbasic.py demonstrates the use of the above function and methods. Figure 16.5, “Basic ComboBox” illustrates the program in operation:

Figure 16.5. Basic ComboBox

Basic ComboBox

Unfortunately, the GTK+ developers did not provide a convenience method to retrieve the active text. That would seem to be a useful method. You'll have to create your own similar to:

  def get_active_text(combobox):
      model = combobox.get_model()
      active = combobox.get_active()
      if active < 0:
          return None
      return model[active][0]

The index of the active item is retrieved using the method:

  active = combobox.get_active()

The active item can be set using the method:

  combobox.set_active(index)

where index is an integer larger than -2. If index is -1 there is no active item and the ComboBox display will be blank. If index is less than -1, the call will be ignored. If index is greater than -1 the list item with that index value will be displayed.

You can connect to the "changed" signal of a ComboBox to be notified when the active item has been changed. The signature of the "changed" handler is:

  def changed_cb(combobox, ...):

where ... represents the zero or more arguments passed to the GObject.connect() method.

16.2.1.2. Advanced ComboBox Use

Creating a ComboBox using the gtk.combo_box_new_text() function is roughly equivalent to the following code:

  liststore = gtk.ListStore(str)
  combobox = gtk.ComboBox(liststore)
  cell = gtk.CellRendererText()
  combobox.pack_start(cell, True)
  combobox.add_attribute(cell, 'text', 0)  

To make use of the power of the various TreeModel and CellRenderer objects you need to construct a ComboBox using the constructor:

  combobox = gtk.ComboBox(model=None)

where model is a TreeModel. If you create a ComboBox without associating a TreeModel, you can add one later using the method:

  combobox.set_model(model)

The associated TreeModel can be retrieved using the method:

  model = combobox.get_model()

Some of the things you can do with a ComboBox are:

  • Share the same TreeModel with other ComboBoxes and TreeViews.
  • Display images and text in the ComboBox list items.
  • Use an existing TreeStore or ListStore as the model for the ComboBox list items.
  • Use a TreeModelSort to provide a sorted ComboBox list.
  • Use a TreeModelFilter to use a subtree of a TreeStore as the source for a ComboBox list items.
  • Use a TreeModelFilter to use a subset of the rows in a TreeStore or ListStore as the ComboBox list items.
  • Use a cell data function to modify or synthesize the display for list items.

The use of the TreeModel and CellRenderer objects is detailed in Chapter 14, Tree View Widget.

The ComboBox list items can be displayed in a grid if you have a large number of items to display. Otherwise the list will have scroll arrows if the entire list cannot be displayed. The following method is used to set the number of columns to display:

  combobox.set_wrap_width(width)

where width is the number of columns of the grid displaying the list items. For example, the comboboxwrap.py program displays a list of 50 items in 5 columns. Figure 16.6, “ComboBox with Wrapped Layout” illustrates the program in operation:

Figure 16.6. ComboBox with Wrapped Layout

ComboBox with Wrapped Layout

With a large number of items, say more than 50, the use of the set_wrap_width() method will have poor performance because of the computation for the grid layout. To get a feel for the affect modify the comboboxwrap.py program line 18 to display 150 items.

        for n in range(150):

Run the program and get a time estimate for startup. Then modify it by commenting out line 17:

        #combobox.set_wrap_width(5)

Run and time it again. It should start up significantly faster. My experience is about 20 times faster.

In addition to the get_active() method described above, you can retrieve a TreeIter pointing at the active row by using the method:

  iter = combobox.get_active_iter()

You can also set the active list item using a TreeIter with the method:

  combobox.set_active_iter(iter)

The set_row_span_column() and set_column_span_column() methods are supposed to allow the specification of a TreeModel column number that contains the number of rows or columns that the list item is supposed to span in a grid layout. Unfortunately, in GTK+ 2.4 these methods are broken.

Since the ComboBox implements the CellLayout interface which has similar capabilities as the TreeViewColumn (see Section 14.5, “TreeViewColumns” for more information). Briefly, the interface provides:

  combobox.pack_start(cell, expand=True)
  combobox.pack_end(cell, expand=True)
  combobox.clear()

The first two methods pack a CellRenderer into the ComboBox and the clear() method clears all attributes from all CellRenderers.

The following methods:

  comboboxentry.add_attribute(cell, attribute, column)

  comboboxentry.set_attributes(cell, ...)

set attributes for the CellRenderer specified by cell. The add_attribute() method takes a string attribute name (e.g. 'text') and an integer column number of the column in the TreeModel to use to set attribute. The additional arguments to the set_attributes() method are attribute=column pairs (e.g text=1).

16.2.2. ComboBoxEntry Widgets

The ComboBoxEntry widget replaces the Combo widget. It is subclassed from the ComboBox widget and contains a child Entry widget that has its contents set by selecting an item in the dropdown list or by direct text entry either from the keyboard or by pasting from a Clipboard or a selection.

16.2.2.1. Basic ComboBoxEntry Use

Like the ComboBox, the ComboBoxEntry can be created using the convenience function:

  comboboxentry = gtk.combo_box_entry_new_text()

The ComboBoxEntry should be populated using the ComboBox convenience methods described in Section 16.2.1.1, “Basic ComboBox Use”.

Since a ComboBoxEntry widget is a Bin widget its child Entry widget is available using the "child" attribute or the get_child() method:

  entry = comboboxentry.child
  entry = comboboxentry.get_child()

You can retrieve the Entry text using its get_text() method.

Like the ComboBox, you can track changes in the active list item by connecting to the "changed" signal. Unfortunately, this doesn't help track changes to the text in the Entry child that are direct entry. When a direct entry is made to the child Entry widget the "changed" signal will be emitted but the index returned by the get_active() method will be -1. To track all changes to the Entry text, you'll have to use the Entry "changed" signal. For example:

  def changed_cb(entry):
      print entry.get_text()

  comboboxentry.child.connect('changed', changed_cb)

will print out the text after every change in the child Entry widget. For example, the comboboxentrybasic.py program demonstrates the use of the convenience API. Figure 16.7, “Basic ComboBoxEntry” illustrates the program in operation:

Figure 16.7. Basic ComboBoxEntry

Basic ComboBoxEntry

Note that when the Entry text is changed due to the selection of a dropdown list item the "changed" handler is called twice: once when the text is cleared; and, once when the text is set with the selected list item text.

16.2.2.2. Advanced ComboBoxEntry Use

The constructor for a ComboBoxEntry is:

  comboboxentry = gtk.ComboBoxEntry(model=None, column=-1)

where model is a TreeModel and column is the number of the column in model to use for setting the list items. If column is not specified the default value is -1 which means the text column is unset.

Creating a ComboBoxEntry using the convenience function gtk.combo_box_entry_new_text() is equivalent to the following:

  liststore = gtk.ListStore(str)
  comboboxentry = gtk.ComboBoxEntry(liststore, 0)

The ComboBoxEntry adds a couple of methods that are used to set and retrieve the TreeModel column number to use for setting the list item strings:

  comboboxentry.set_text_column(text_column)
  text_column = comboboxentry.get_text_column()

The text column can also be retrieved and set using the "text-column" property. See Section 16.2.1.2, “Advanced ComboBox Use” for more information on the advanced use of the ComboBoxEntry.

Note

Your application must set the text column for the ComboBoxEntry to set the Entry contents from the dropdown list. The text column can only be set once, either by using the constructor or by using the set_text_column() method.

When a ComboBoxEntry is created it is packed with a new CellRendererText which is not accessible. The 'text' attribute for the CellRendererText has to be set as a side effect of setting the text column using the set_text_column() method. You can pack additional CellRenderers into a ComboBoxEntry for display in the dropdown list. See Section 16.2.1.2, “Advanced ComboBox Use” for more information.

pygtk2tutorial/sec-ColorButtonAndFontButton.html0100644000117200001670000002473010227356775021266 0ustar finlayfcf16.3. ColorButton and FontButton Widgets

16.3. ColorButton and FontButton Widgets

16.3.1. ColorButton Widgets

A ColorButton widget provides a convenient way of displaying a color in a button that can be clicked to open a ColorSelectionDialog. It's useful for displaying and setting colors in a user preference dialog. A ColorButton takes care of setting up, displaying and retrieving the result of a ColorSelectionDialog. A ColorButton is created using the constructor:

  colorbutton = gtk.ColorButton(color=gtk.gdk.Color(0,0,0))

The initial color can be specified using the color parameter or set later using the method:

  colorbutton.set_color(color)

The title for the ColorSelectionDialog that is displayed when the button is clicked can be set and retrieved using the methods:

  colorbutton.set_title(title)

  title = colorbutton.get_title()

The opacity of the color is set using the alpha channel. The following methods get and set the color opacity in the range from 0 (transparent) to 65535 (opaque):

  alpha = colorbutton.get_alpha()

  colorbutton.set_alpha(alpha)

By default the alpha is ignored because the "use_alpha" property is FALSE. The value of the "use_alpha" property can be set and retrieved using the method:

  colorbutton.set_use_alpha(use_alpha)

  use_alpha = colorbutton.get_use_alpha()

If "use_alpha" is TRUE the ColorSelectionDialog displays a slider for setting the opacity and displays the color using a checkerboard background.

You can track changes in the selected color by connecting to the "color-set" signal that is emitted when the user sets the color. The signal callback signature is:

  def color_set_cb(colorbutton, user_data):

The example program colorbutton.py illustrates the use of a ColorButton. Figure 16.8, “ColorButton Example” shows the program in operation.

Figure 16.8. ColorButton Example

ColorButton Example

16.3.2. FontButton Widgets

Like the ColorButton, the FontButton is a convenience widget that provides a display of the currently selected font and, when clicked, opens a FontSelectionDialog. A FontButton takes care of setting up, displaying and retrieving the result of a FontSelectionDialog. A FontButton is created using the constructor:

  fontbutton = gtk.FontButton(fontname=None)

where fontname is a string specifying the current font for the FontSelectionDialog. For example the font name can be specified like 'Sans 12', 'Sans Bold 14', or 'Monospace Italic 14'. You need to specify the font family and size at minimum.

The current font can also be set and retrieved using the following methods:

  result = fontbutton.set_font_name(fontname)

  fontname = fontbutton.get_font_name()

where result returns TRUE or FALSE to indicate whether the font was successfully set. The FontButton has a number of properties and associated methods that affect the display of the current font in the FontButton. The "show-size" and show-style" properties contain boolean values that control whether the font size and style will be displayed in the button label. The following methods set and retrieve the value of these properties:

  fontbutton.set_show_style(show_style)
  show_style = fontbutton.get_show_style()

  fontbutton.set_show_size(show_size)
  show_size = fontbutton.get_show_size()

Alternatively, you can have the current font size and style used by the label to directly illustrate the font selection. The "use-size" and "use-font" properties and the associated methods:

  fontbutton.set_use_font(use_font)
  use_font = fontbutton.get_use_font()

  fontbutton.set_use_size(use_size)
  use_size = fontbutton.get_use_size()

Using the current font in the label seems like a useful illustration technique in spite of the inevitable changes in size of the button but using the selected size doesn't seem as useful especially when using really large or small font sizes. Note if you set "use-font" or "use-size" to TRUE and later set them to FALSE, the last set font and size will be retained. For example, if "use-font" and "use-size" are TRUE and the current font is Monospace Italic 20, the FontButton label is displayed using Monospace Italic 20; then if "use-font" and "use-size" are set to FALSE and then the current font is changed to Sans 12 the label will still be displayed in Monospace Italic 20. Use the example program fontbutton.py to see how this works.

Finally, the title of the FontSelectionDialog can be set and retrieved using the methods:

  fontbutton.set_title(title)

  title = fontbutton.get_title()

Like the ColorButton, you can track changes in the current font by connecting to the "font-set" signal that is emitted when the user sets the font. The signal callback signature is:

  def font_set_cb(fontbutton, user_data):

The example program fontbutton.py illustrates the use of a FontButton. You can set the "use-font", "use-size", "show-size" and "show-style" properties using toggle buttons. Figure 16.9, “FontButton Example” shows the program in operation.

Figure 16.9. FontButton Example

FontButton Example

pygtk2tutorial/sec-GtkButton.html0100644000117200001670000000357610227357006016260 0ustar finlayfcfA.11. GtkButton

A.11. GtkButton

pressed(button, data)

released(button, data)

clicked(button, data)

enter(button, data)

leave(button, data)
pygtk2tutorial/index.html0100644000117200001670000011512210227357011014661 0ustar finlayfcfPyGTK 2.0 Tutorial

PyGTK 2.0 Tutorial

John Finlay

Version 2.4

April 13, 2005

Revision History
Revision 2.4April 13, 2005
Update example programs
Revision 2.3December 24, 2004
Add more PyGTK 2.4 widgets
Revision 2.2August 3, 2004
Add new PyGTK 2.2 and some PyGTK 2.4 widgets
Revision 2.1July 6, 2004
More TreeView
Revision 2.0May 24, 2004
First release for PyGTK 2.0

Abstract

This tutorial describes the use of the Python PyGTK module.


Table of Contents

1. Introduction
1.1. Exploring PyGTK
2. Getting Started
2.1. Hello World in PyGTK
2.2. Theory of Signals and Callbacks
2.3. Events
2.4. Stepping Through Hello World
3. Moving On
3.1. More on Signal Handlers
3.2. An Upgraded Hello World
4. Packing Widgets
4.1. Theory of Packing Boxes
4.2. Details of Boxes
4.3. Packing Demonstration Program
4.4. Packing Using Tables
4.5. Table Packing Example
5. Widget Overview
5.1. Widget Hierarchy
5.2. Widgets Without Windows
6. The Button Widget
6.1. Normal Buttons
6.2. Toggle Buttons
6.3. Check Buttons
6.4. Radio Buttons
7. Adjustments
7.1. Creating an Adjustment
7.2. Using Adjustments the Easy Way
7.3. Adjustment Internals
8. Range Widgets
8.1. Scrollbar Widgets
8.2. Scale Widgets
8.2.1. Creating a Scale Widget
8.2.2. Methods and Signals (well, methods, at least)
8.3. Common Range Methods
8.3.1. Setting the Update Policy
8.3.2. Getting and Setting Adjustments
8.4. Key and Mouse Bindings
8.5. Range Widget Example
9. Miscellaneous Widgets
9.1. Labels
9.2. Arrows
9.3. The Tooltips Object
9.4. Progress Bars
9.5. Dialogs
9.6. Images
9.6.1. Pixmaps
9.7. Rulers
9.8. Statusbars
9.9. Text Entries
9.10. Spin Buttons
9.11. Combo Widget
9.12. Calendar
9.13. Color Selection
9.14. File Selections
9.15. Font Selection Dialog
10. Container Widgets
10.1. The EventBox
10.2. The Alignment widget
10.3. Fixed Container
10.4. Layout Container
10.5. Frames
10.6. Aspect Frames
10.7. Paned Window Widgets
10.8. Viewports
10.9. Scrolled Windows
10.10. Button Boxes
10.11. Toolbar
10.12. Notebooks
10.13. Plugs and Sockets
10.13.1. Plugs
10.13.2. Sockets
11. Menu Widget
11.1. Manual Menu Creation
11.2. Manual Menu Example
11.3. Using ItemFactory
11.4. Item Factory Example
12. Drawing Area
12.1. Graphics Context
12.2. Drawing Methods
13. TextView Widget
13.1. TextView Overview
13.2. TextViews
13.3. Text Buffers
13.3.1. TextBuffer Status Information
13.3.2. Creating TextIters
13.3.3. Text Insertion, Retrieval and Deletion
13.3.4. TextMarks
13.3.5. Creating and Applying TextTags
13.3.6. Inserting Images and Widgets
13.4. Text Iters
13.4.1. TextIter Attributes
13.4.2. Text Attributes at a TextIter
13.4.3. Copying a TextIter
13.4.4. Retrieving Text and Objects
13.4.5. Checking Conditions at a TextIter
13.4.6. Checking Location in Text
13.4.7. Moving Through Text
13.4.8. Moving to a Specific Location
13.4.9. Searching in Text
13.5. Text Marks
13.6. Text Tags and Tag Tables
13.6.1. Text Tags
13.6.2. Text Tag Tables
13.7. A TextView Example
14. Tree View Widget
14.1. Overview
14.2. The TreeModel Interface and Data Stores
14.2.1. Introduction
14.2.2. Creating TreeStore and ListStore Objects
14.2.3. Referring to TreeModel Rows
14.2.4. Adding Rows
14.2.5. Removing Rows
14.2.6. Managing Row Data
14.2.7. Python Protocol Support
14.2.8. TreeModel Signals
14.2.9. Sorting TreeModel Rows
14.3. TreeViews
14.3.1. Creating a TreeView
14.3.2. Getting and Setting the TreeView Model
14.3.3. Setting TreeView Properties
14.4. CellRenderers
14.4.1. Overview
14.4.2. CellRenderer Types
14.4.3. CellRenderer Properties
14.4.4. CellRenderer Attributes
14.4.5. Cell Data Function
14.4.6. CellRendererText Markup
14.4.7. Editable Text Cells
14.4.8. Activatable Toggle Cells
14.4.9. Editable and Activatable Cell Example Program
14.5. TreeViewColumns
14.5.1. Creating TreeViewColumns
14.5.2. Managing CellRenderers
14.6. Manipulating TreeViews
14.6.1. Managing Columns
14.6.2. Expanding and Collapsing Child Rows
14.7. TreeView Signals
14.8. TreeSelections
14.8.1. Getting the TreeSelection
14.8.2. TreeSelection Modes
14.8.3. Retrieving the Selection
14.8.4. Using a TreeSelection Function
14.8.5. Selecting and Unselecting Rows
14.9. TreeView Drag and Drop
14.9.1. Drag and Drop Reordering
14.9.2. External Drag and Drop
14.9.3. TreeView Drag and Drop Example
14.10. TreeModelSort and TreeModelFilter
14.10.1. TreeModelSort
14.10.2. TreeModelFilter
14.11. The Generic TreeModel
14.11.1. GenericTreeModel Overview
14.11.2. The GenericTreeModel Interface
14.11.3. Adding and Removing Rows
14.11.4. Memory Management
14.11.5. Other Interfaces
14.11.6. Applying The GenericTreeModel
14.12. The Generic CellRenderer
15. New Widgets in PyGTK 2.2
15.1. Clipboards
15.1.1. Creating A Clipboard
15.1.2. Using Clipboards with Entry, Spinbutton and TextView
15.1.3. Setting Data on a Clipboard
15.1.4. Retrieving the Clipboard Contents
15.1.5. A Clipboard Example
16. New Widgets in PyGTK 2.4
16.1. The Action and ActionGroup Objects
16.1.1. Actions
16.1.2. ActionGroups
16.2. ComboBox and ComboBoxEntry Widgets
16.2.1. ComboBox Widgets
16.2.2. ComboBoxEntry Widgets
16.3. ColorButton and FontButton Widgets
16.3.1. ColorButton Widgets
16.3.2. FontButton Widgets
16.4. EntryCompletion Objects
16.5. Expander Widgets
16.6. File Selections using FileChooser-based Widgets
16.7. The UIManager
16.7.1. Overview
16.7.2. Creating a UIManager
16.7.3. Adding and Removing ActionGroups
16.7.4. UI Descriptions
16.7.5. Adding and Removing UI Descriptions
16.7.6. Accessing UI Widgets
16.7.7. A Simple UIManager Example
16.7.8. Merging UI Descriptions
16.7.9. UIManager Signals
17. Undocumented Widgets
17.1. Accel Label
17.2. Option Menu
17.3. Menu Items
17.3.1. Check Menu Item
17.3.2. Radio Menu Item
17.3.3. Separator Menu Item
17.3.4. Tearoff Menu Item
17.4. Curves
17.5. Message Dialog
17.6. Gamma Curve
18. Setting Widget Attributes
18.1. Widget Flag Methods
18.2. Widget Display Methods
18.3. Widget Accelerators
18.4. Widget Name Methods
18.5. Widget Styles
19. Timeouts, IO and Idle Functions
19.1. Timeouts
19.2. Monitoring IO
19.3. Idle Functions
20. Advanced Event and Signal Handling
20.1. Signal Methods
20.1.1. Connecting and Disconnecting Signal Handlers
20.1.2. Blocking and Unblocking Signal Handlers
20.1.3. Emitting and Stopping Signals
20.2. Signal Emission and Propagation
21. Managing Selections
21.1. Selection Overview
21.2. Retrieving the Selection
21.3. Supplying the Selection
22. Drag-and-drop (DND)
22.1. DND Overview
22.2. DND Properties
22.3. DND Methods
22.3.1. Setting Up the Source Widget
22.3.2. Signals On the Source Widget
22.3.3. Setting Up a Destination Widget
22.3.4. Signals On the Destination Widget
23. GTK's rc Files
23.1. Functions For rc Files
23.2. GTK's rc File Format
23.3. Example rc file
24. Scribble, A Simple Example Drawing Program
24.1. Scribble Overview
24.2. Event Handling
24.2.1. Scribble - Event Handling
24.3. The DrawingArea Widget, And Drawing
25. Tips For Writing PyGTK Applications
26. Contributing
27. Credits
27.1. PyGTK Credits
27.2. Original GTK+ Credits
28. Tutorial Copyright and Permissions Notice
A. GTK Signals
A.1. GtkObject
A.2. GtkWidget
A.3. GtkData
A.4. GtkContainer
A.5. GtkCalendar
A.6. GtkEditable
A.7. GtkNotebook
A.8. GtkList
A.9. GtkMenuShell
A.10. GtkToolbar
A.11. GtkButton
A.12. GtkItem
A.13. GtkWindow
A.14. GtkHandleBox
A.15. GtkToggleButton
A.16. GtkMenuItem
A.17. GtkCheckMenuItem
A.18. GtkInputDialog
A.19. GtkColorSelection
A.20. GtkStatusBar
A.21. GtkCurve
A.22. GtkAdjustment
B. Code Examples
B.1. scribblesimple.py
C. ChangeLog

List of Figures

2.1. Simple PyGTK Window
2.2. Hello World Example Program
3.1. Upgraded Hello World Example
4.1. Packing: Five Variations
4.2. Packing with Spacing and Padding
4.3. Packing with pack_end()
4.4. Packing using a Table
6.1. Button with Pixmap and Label
6.2. Toggle Button Example
6.3. Check Button Example
6.4. Radio Buttons Example
8.1. Range Widgets Example
9.1. Label Examples
9.2. Arrows Buttons Examples
9.3. Tooltips Example
9.4. ProgressBar Example
9.5. Example Images in Buttons
9.6. Pixmap in a Button Example
9.7. Wheelbarrow Example Shaped Window
9.8. Rulers Example
9.9. Statusbar Example
9.10. Entry Example
9.11. Spin Button Example
9.12. Calendar Example
9.13. Color Selection Dialog Example
9.14. File Selection Example
9.15. Font Selection Dialog
10.1. Event Box Example
10.2. Fixed Example
10.3. Layout Example
10.4. Frame Example
10.5. Aspect Frame Example
10.6. Paned Example
10.7. Scrolled Window Example
10.8. Toolbar Example
10.9. Notebook Example
11.1. Menu Example
11.2. Item Factory Example
12.1. Drawing Area Example
13.1. Basic TextView Example
13.2. TextView Example
14.1. Basic TreeView Example Program
14.2. TreeViewColumns with CellRenderers
14.3. CellRenderer Data Function
14.4. File Listing Example Using Cell Data Functions
14.5. CellRendererText Markup
14.6. Editable and Activatable Cells
14.7. Expander Arrow in Second Column
14.8. TreeView Drag and Drop Example
14.9. TreeModelSort Example
14.10. TreeModelFilter Visibility Example
14.11. Generic TreeModel Example Program
15.1. Clipboard Example Program
16.1. Simple Action Example
16.2. Basic Action Example
16.3. Actions Example
16.4. ActionGroup Example
16.5. Basic ComboBox
16.6. ComboBox with Wrapped Layout
16.7. Basic ComboBoxEntry
16.8. ColorButton Example
16.9. FontButton Example
16.10. EntryCompletion
16.11. Expander Widget
16.12. File Selection Example
16.13. Simple UIManager Example
16.14. UIMerge Example
21.1. Get Selection Example
21.2. Set Selection Example
22.1. Drag and Drop Example
24.1. Scribble Drawing Program Example
24.2. Simple Scribble Example
pygtk2tutorial/ch-WidgetOverview.html0100644000117200001670000001506710227356760017135 0ustar finlayfcfChapter 5. Widget Overview

Chapter 5. Widget Overview

The general steps to using a widget in PyGTK are:

  • invoke gtk.* - one of various functions to create a new widget. These are all detailed in this section.
  • Connect all signals and events we wish to use to the appropriate handlers.
  • Set the attributes of the widget.
  • Pack the widget into a container using the appropriate call such as gtk.Container.add() or gtk.Box.pack_start() .
  • gtk.Widget.show() the widget.

show() lets GTK know that we are done setting the attributes of the widget, and it is ready to be displayed. You may also use gtk.Widget.hide() to make it disappear again. The order in which you show the widgets is not important, but I suggest showing the window last so the whole window pops up at once rather than seeing the individual widgets come up on the screen as they're formed. The children of a widget (a window is a widget too) will not be displayed until the window itself is shown using the show() method.

5.1. Widget Hierarchy

For your reference, here is the class hierarchy tree used to implement widgets. (Deprecated widgets and auxiliary classes have been omitted.)

gobject.GObject
|
+gtk.Object
| +gtk.Widget
| | +gtk.Misc
| | | +gtk.Label
| | | | `gtk.AccelLabel
| | | +gtk.Arrow
| | | `gtk.Image
| | +gtk.Container
| | | +gtk.Bin
| | | | +gtk.Alignment
| | | | +gtk.Frame
| | | | | `gtk.AspectFrame
| | | | +gtk.Button
| | | | | +gtk.ToggleButton
| | | | | | `gtk.CheckButton
| | | | | |   `gtk.RadioButton
| | | | | +gtk.ColorButton
| | | | | +gtk.FontButton
| | | | | `gtk.OptionMenu
| | | | +gtk.Item
| | | | | +gtk.MenuItem
| | | | |   +gtk.CheckMenuItem
| | | | |   | `gtk.RadioMenuItem
| | | | |   +gtk.ImageMenuItem
| | | | |   +gtk.SeparatorMenuItem
| | | | |   `gtk.TearoffMenuItem
| | | | +gtk.Window
| | | | | +gtk.Dialog
| | | | | | +gtk.ColorSelectionDialog
| | | | | | +gtk.FileChooserDialog
| | | | | | +gtk.FileSelection
| | | | | | +gtk.FontSelectionDialog
| | | | | | +gtk.InputDialog
| | | | | | `gtk.MessageDialog
| | | | | `gtk.Plug
| | | | +gtk.ComboBox
| | | | | `gtk.ComboBoxEntry
| | | | +gtk.EventBox
| | | | +gtk.Expander
| | | | +gtk.HandleBox
| | | | +gtk.ToolItem
| | | | | +gtk.ToolButton
| | | | | | +gtk.ToggleToolButton
| | | | | | | `gtk.RadioToolButton
| | | | | `gtk.SeparatorTooItem
| | | | +gtk.ScrolledWindow
| | | | `gtk.Viewport
| | | +gtk.Box
| | | | +gtk.ButtonBox
| | | | | +gtk.HButtonBox
| | | | | `gtk.VButtonBox
| | | | +gtk.VBox
| | | | | +gtk.ColorSelection
| | | | | +gtk.FontSelection
| | | | | `gtk.GammaCurve
| | | | `gtk.HBox
| | | |   +gtk.Combo
| | | |   `gtk.Statusbar
| | | +gtk.Fixed
| | | +gtk.Paned
| | | | +gtk.HPaned
| | | | `gtk.VPaned
| | | +gtk.Layout
| | | +gtk.MenuShell
| | | | +gtk.MenuBar
| | | | `gtk.Menu
| | | +gtk.Notebook
| | | +gtk.Socket
| | | +gtk.Table
| | | +gtk.TextView
| | | +gtk.Toolbar
| | | `gtk.TreeView
| | +gtk.Calendar
| | +gtk.DrawingArea
| | | `gtk.Curve
| | +gtk.Entry
| | | `gtk.SpinButton
| | +gtk.Ruler
| | | +gtk.HRuler
| | | `gtk.VRuler
| | +gtk.Range
| | | +gtk.Scale
| | | | +gtk.HScale
| | | | `gtk.VScale
| | | `gtk.Scrollbar
| | |   +gtk.HScrollbar
| | |   `gtk.VScrollbar
| | +gtk.Separator
| | | +gtk.HSeparator
| | | `gtk.VSeparator
| | +gtk.Invisible
| | +gtk.Progress
| | | `gtk.ProgressBar
| +gtk.Adjustment
| +gtk.CellRenderer
| | +gtk.CellRendererPixbuf
| | +gtk.CellRendererText
| | +gtk.CellRendererToggle
| +gtk.FileFilter
| +gtk.ItemFactory
| +gtk.Tooltips
| `gtk.TreeViewColumn
+gtk.Action
| +gtk.ToggleAction
| | `gtk.RadioAction
+gtk.ActionGroup
+gtk.EntryCompletion
+gtk.IconFactory
+gtk.IconTheme
+gtk.IMContext
| +gtk.IMContextSimple
| `gtk.IMMulticontext
+gtk.ListStore
+gtk.RcStyle
+gtk.Settings
+gtk.SizeGroup
+gtk.Style
+gtk.TextBuffer
+gtk.TextChildAnchor
+gtk.TextMark
+gtk.TextTag
+gtk.TextTagTable
+gtk.TreeModelFilter
+gtk.TreeModelSort
+gtk.TreeSelection
+gtk.TreeStore
+gtk.UIManager
+gtk.WindowGroup
+gtk.gdk.DragContext
+gtk.gdk.Screen
+gtk.gdk.Pixbuf
+gtk.gdk.Drawable
| +gtk.gdk.Pixmap
+gtk.gdk.Image
+gtk.gdk.PixbufAnimation
+gtk.gdk.Device

gobject.GObject
|
+gtk.CellLayout
+gtk.Editable
+gtk.CellEditable
+gtk.FileChooser
+gtk.TreeModel
+gtk.TreeDragSource
+gtk.TreeDragDest
+gtk.TreeSortable
pygtk2tutorial/sec-GtkCheckMenuItem.html0100644000117200001670000000356210227357007017462 0ustar finlayfcfA.17. GtkCheckMenuItem

A.17. GtkCheckMenuItem

toggled(check_menu_item, data)
pygtk2tutorial/sec-KeyAndMouseBindings.html0100644000117200001670000000666410227356761020211 0ustar finlayfcf8.4. Key and Mouse Bindings

8.4. Key and Mouse Bindings

All of the GTK+ range widgets react to mouse clicks in more or less the same way. Clicking button-1 in the trough will cause its adjustment's page_increment to be added or subtracted from its value, and the slider to be moved accordingly. Clicking mouse button-2 in the trough will jump the slider to the point at which the button was clicked. Clicking any button on a scrollbar's arrows will cause its adjustment's value to change step_increment at a time.

Scrollbars are not focusable, thus have no key bindings. The key bindings for the other range widgets (which are, of course, only active when the widget has focus) do not differentiate between horizontal and vertical range widgets.

All range widgets can be operated with the left arrow, right arrow, up arrow and down arrow keys, as well as with the Page Up and Page Down keys. The arrows move the slider by step_increment, while Page Up and Page Down move it by page_increment.

The user can also move the slider all the way to one end or the other of the trough using the keyboard. This is done with the Home and End keys.

pygtk2tutorial/ch-NewInPyGTK2.4.html0100644000117200001670000015072310227356777016315 0ustar finlayfcfChapter 16. New Widgets in PyGTK 2.4

Chapter 16. New Widgets in PyGTK 2.4

Quite a few new widgets and support objects were added in PyGTK 2.4 including:

  • Action, RadioAction, ToggleAction - objects that represent actions that a user can take. Actions contain information to be used to create proxy widgets ( for example, icons, menu items and toolbar items).
  • ActionGroup - an object containing Actions that have some relationship, for example, actions to open, close and print a document.
  • Border - an object containing the values for a border.
  • ColorButton - a button used to launch a ColorSelectionDialog.
  • ComboBox - a widget providing a list of items to choose from. It replaces the OptionMenu.
  • ComboBoxEntry - a widget providing a text entry field with a dropdown list of items to choose from. It replaces the Combo.
  • EntryCompletion - an object providing completion for an Entry widget.
  • Expander - a container that can show and hide its child in response to its button click.
  • FileChooser - an interface for choosing files.
  • FileChooserWidget - a widget implementing the FileChooser interface. It replaces the FileSelection widget.
  • FileChooserDialog - a dialog used for "File/Open" and "File/Save" actions. It replaces the FileSelectionDialog.
  • FileFilter - an object used to filter files based on an internal set of rules.
  • FontButton - a button that launches the FontSelectionDialog.
  • IconInfo - an object containing information about an icon in an IconTheme.
  • IconTheme - an object providing lookup of icons by name and size.
  • ToolItem, ToolButton, RadioToolButton, SeparatorToolItem, ToggleToolButton - widgets that can be added to a Toolbar. These replace the previous Toolbar items.
  • TreeModelFilter - an object providing a powerful mechanism for revising the representation of an underlying TreeModel. This is described in Section 14.10.2, “TreeModelFilter”.
  • UIManager - an object providing a way to construct menus and toolbars from an XML UI description. It also has methods to manage the merging and separation of multiple UI descriptions.

16.1. The Action and ActionGroup Objects

The Action and ActionGroup objects work together to provide the images, text, callbacks and accelerators for your application menus and toolbars. The UIManager uses Actions and ActionGroups to build the menubars and toolbars automatically based on a XML specification. It's much easier to create and populate menus and toolbars using the UIManager described in a later section. The following sections on the Action and ActionGroup objects describe how to directly apply these objects but I recommend using the UIManager whenever possible.

16.1.1. Actions

An Action object represents an action that the user can take using an application user interface. It contains information used by proxy UI elements (for example, MenuItems or Toolbar items) to present the action to the user. There are two subclasses of Action:

ToggleActionAn Action that can be toggled between two states.
RadioActionAn Action that can be grouped so that only one can be active.

For example, the standard File->Quit menu item can be represented with an icon, mnemonic text and accelerator. When activated, the menu item triggers a callback that could exit the application. Likewise a Toolbar Quit button could share the icon, mnemonic text and callback. Both of these UI elements could be proxies of the same Action.

Ordinary Button, ToggleButton and RadioButton widgets can also act as proxies for an Action though there is no support for these in the UIManager.

16.1.1.1. Creating Actions

An Action can be created using the constructor:

  action = gtk.Action(name, label, tooltip, stock_id)

name is a string used to identify the Action in an ActionGroup or in a UIManager specification. label and tooltip are strings used as the label and tooltip in proxy widgets. If label is None then the stock_id must be a string specifying a Stock Item to get the label from. If tooltip is None the Action will not have a tooltip.

As we'll see in Section 16.1.2, “ActionGroups” it's much easier to create Action objects using the ActionGroup convenience methods:

  actiongroup.add_actions(entries, user_data=None)
  actiongroup.add_toggle_actions(entries, user_data=None)
  actiongroup.add_radio_actions(entries, value=0, on_change=None, user_data=None)

More about these later but first I'll describe how to use an Action with a Button to illustrate the basic operations of connecting an Action to a proxy widget.

16.1.1.2. Using Actions

The basic procedure for using an Action with a Button proxy is illustrated by the simpleaction.py example program. The Button is connected to the Action using the method:

  action.connect_proxy(proxy)

where proxy is a MenuItem, ToolItem or Button widget.

An Action has one signal the "activate" signal that is triggered when the Action is activated usually as the result of a proxy widget being activated (for example a ToolButton is clicked). You just have connect a callback to this signal to handle the activation of any of the proxy widgets.

The source code for the simpleaction.py example program is:

    1   #!/usr/bin/env python
    2
    3   import pygtk
    4   pygtk.require('2.0')
    5   import gtk
    6
    7   class SimpleAction:
    8       def __init__(self):
    9           # Create the toplevel window
   10           window = gtk.Window()
   11           window.set_size_request(70, 30)
   12           window.connect('destroy', lambda w: gtk.main_quit())
   13
   14           # Create an accelerator group
   15           accelgroup = gtk.AccelGroup()
   16           # Add the accelerator group to the toplevel window
   17           window.add_accel_group(accelgroup)
   18
   19           # Create an action for quitting the program using a stock item
   20           action = gtk.Action('Quit', None, None, gtk.STOCK_QUIT)
   21           # Connect a callback to the action
   22           action.connect('activate', self.quit_cb)
   23
   24           # Create an ActionGroup named SimpleAction
   25           actiongroup = gtk.ActionGroup('SimpleAction')
   26           # Add the action to the actiongroup with an accelerator
   27           # None means use the stock item accelerator
   28           actiongroup.add_action_with_accel(action, None)
   29
   30           # Have the action use accelgroup
   31           action.set_accel_group(accelgroup)
   32
   33           # Connect the accelerator to the action
   34           action.connect_accelerator()
   35
   36           # Create the button to use as the action proxy widget
   37           quitbutton = gtk.Button()
   38           # add it to the window
   39           window.add(quitbutton)
   40
   41           # Connect the action to its proxy widget
   42           action.connect_proxy(quitbutton)
   43
   44           window.show_all()
   45           return
   46
   47       def quit_cb(self, b):
   48           print 'Quitting program'
   49           gtk.main_quit()
   50
   51   if __name__ == '__main__':
   52       sa = SimpleAction()
   53       gtk.main()

The example creates an Action (line 20) that uses a Stock Item to provide the label text with mnemonic, icon, accelerator and translation domain. If a Stock Item is not used you'll need to specify a label instead. Line 22 connects the "activate" signal of action to the self.quit_cb() method so that it is invoked when the Action is activated by quitbutton. Line 42 connects quitbutton to action as a proxy widget. When quitbutton is clicked it will activate action and thereby invoke the self.quit_cb() method. The simpleaction.py example uses quite a bit of code (lines 15, 17, 31 and 34 to setup the accelerator for the Button. The procedure is similar for MenuItems and Toolbar ToolItems.

Figure 16.1, “Simple Action Example” shows the simpleaction.py example in operation.

Figure 16.1. Simple Action Example

Simple Action Example

16.1.1.3. Creating Proxy Widgets

In the previous section we saw that an existing widget could be connected to an Action as a proxy. In this section we'll see how a proxy widget can be created using the Action methods:

  menuitem = action.create_menu_item()

  toolitem = action.create_tool_item()

The basicaction.py example illustrates a MenuItem, ToolButton and a Button sharing an Action. The MenuItem and the ToolButton are created using the above methods. The basicaction.py example program source code is:

    1   #!/usr/bin/env python
    2
    3   import pygtk
    4   pygtk.require('2.0')
    5   import gtk
    6
    7   class BasicAction:
    8       def __init__(self):
    9           # Create the toplevel window
   10           window = gtk.Window()
   11           window.connect('destroy', lambda w: gtk.main_quit())
   12           vbox = gtk.VBox()
   13           vbox.show()
   14           window.add(vbox)
   15
   16           # Create an accelerator group
   17           accelgroup = gtk.AccelGroup()
   18           # Add the accelerator group to the toplevel window
   19           window.add_accel_group(accelgroup)
   20
   21           # Create an action for quitting the program using a stock item
   22           action = gtk.Action('Quit', '_Quit me!', 'Quit the Program',
   23                               gtk.STOCK_QUIT)
   24           action.set_property('short-label', '_Quit')
   25           # Connect a callback to the action
   26           action.connect('activate', self.quit_cb)
   27
   28           # Create an ActionGroup named BasicAction
   29           actiongroup = gtk.ActionGroup('BasicAction')
   30           # Add the action to the actiongroup with an accelerator
   31           # None means use the stock item accelerator
   32           actiongroup.add_action_with_accel(action, None)
   33
   34           # Have the action use accelgroup
   35           action.set_accel_group(accelgroup)
   36
   37           # Create a MenuBar
   38           menubar = gtk.MenuBar()
   39           menubar.show()
   40           vbox.pack_start(menubar, False)
   41
   42           # Create the File Action and MenuItem
   43           file_action = gtk.Action('File', '_File', None, None)
   44           actiongroup.add_action(file_action)
   45           file_menuitem = file_action.create_menu_item()
   46           menubar.append(file_menuitem)
   47
   48           # Create the File Menu
   49           file_menu = gtk.Menu()
   50           file_menuitem.set_submenu(file_menu)
   51
   52           # Create a proxy MenuItem
   53           menuitem = action.create_menu_item()
   54           file_menu.append(menuitem)
   55
   56           # Create a Toolbar
   57           toolbar = gtk.Toolbar()
   58           toolbar.show()
   59           vbox.pack_start(toolbar, False)
   60
   61           # Create a proxy ToolItem
   62           toolitem = action.create_tool_item()
   63           toolbar.insert(toolitem, 0)
   64
   65           # Create and pack a Label
   66           label = gtk.Label('''
   67   Select File->Quit me! or
   68   click the toolbar Quit button or
   69   click the Quit button below or
   70   press Control+q
   71   to quit.
   72   ''')
   73           label.show()
   74           vbox.pack_start(label)
   75
   76           # Create a button to use as another proxy widget
   77           quitbutton = gtk.Button()
   78           # add it to the window
   79           vbox.pack_start(quitbutton, False)
   80
   81           # Connect the action to its proxy widget
   82           action.connect_proxy(quitbutton)
   83           # Have to set tooltip after toolitem is added to toolbar
   84           action.set_property('tooltip', action.get_property('tooltip'))
   85           tooltips = gtk.Tooltips()
   86           tooltips.set_tip(quitbutton, action.get_property('tooltip'))
   87
   88           window.show()
   89           return
   90
   91       def quit_cb(self, b):
   92           print 'Quitting program'
   93           gtk.main_quit()
   94
   95   if __name__ == '__main__':
   96       ba = BasicAction()
   97       gtk.main()

This example introduces an ActionGroup to hold the Actions used in the program. Section 16.1.2, “ActionGroups” will go into more detail on the use of ActionGroups.

The code in lines 9-14 sets up a top level window containing a VBox. Lines 16-35 set up the "Quit" Action similar to that in the simpleaction.py example program and add it with the gtk.STOCK_QUIT Stock Item accelerator (line 32) to the "BasicAction" ActionGroup (created in line 29). Note that, unlike the simpleaction.py example program, you don't have to call the connect_accelerator() method for the action since it is called automatically when the create_menu_item() method is called in line 53.

Lines 38-40 create a MenuBar and pack it into the VBox. Lines 43-44 create an Action (file_action) for the File menu and add it to actiongroup. The File and Quit menu items are created in lines 45 and 53 and added to menubar and file_menu respectively in lines 46 and 54.

Likewise a Toolbar is created and added to the VBox in lines 57-59. The proxy ToolItem is created and added to toolbar in lines 62-63. Note the Action tooltip must be set (line 84) after the ToolItem is added to the Toolbar for it to be used. Also the Button tooltip must be added manually (lines 84-86).

Figure 16.2, “Basic Action Example” displays the basicaction.py example program in operation:

Figure 16.2. Basic Action Example

Basic Action Example

A proxy widget can be disconnected from an Action by using the method:

  action.disconnect_proxy(proxy)

16.1.1.4. Action Properties

An Action has a number of properties that control the display and function of its proxy widgets. The most important of these are the "sensitive" and "visible" properties. The "sensitive" property determines the sensitivity of the proxy widgets. If "sensitive" is FALSE the proxy widgets are not activatable and will usually be displayed "grayed out". Likewise, the "visible" property determines whether the proxy widgets will be visible. If an Action's "visible" property is FALSE its proxy widgets will be hidden.

As we'll see in the next section, an Action's sensitivity or visibility is also controlled by the sensitivity or visibility of the ActionGroup it belongs to. Therefore, for an Action to be sensitive (or visible) both it and its ActionGroup must be sensitive (or visible). To determine the effective sensitivity or visibility of an Action you should use the following methods:

  result = action.is_sensitive()

  result = action.is_visible()

The name assigned to an Action is contained in its "name" property which is set when the Action is created. You can retrieve that name using the method:

  name = action.get_name()

Other properties that control the display of the proxy widgets of an Action include:

"hide-if-empty"If TRUE, empty menu proxies for this action are hidden.
"is-important"If TRUE, ToolItem proxies for this action show text in gtk.TOOLBAR_BOTH_HORIZ mode.
"visible-horizontal"If TRUE, the ToolItem is visible when the toolbar is in a horizontal orientation.
"visible-vertical"If TRUE, the ToolItem is visible when the toolbar is in a vertical orientation.

Other properties of interest include:

"label"The label used for menu items and buttons that activate this action.
"short-label"A shorter label that may be used on toolbar buttons and buttons.
"stock-id"The Stock Item to be used to retrieve the icon, label and accelerator to be used in widgets representing this action.
"tooltip"A tooltip for this action.

Note that the basicaction.py example program overrides the gtk.STOCK_QUIT label with "_Quit me!" and sets the "short-label" property to "_Quit". The short label is used for the ToolButton and the Button labels but the full label is used for the MenuItem label. Also note that the tooltip cannot be set on a ToolItem until it is added to a Toolbar.

16.1.1.5. Actions and Accelerators

An Action has three methods that are used to set up an accelerator:

  action.set_accel_group(accel_group)

  action.set_accel_path(accel_path)

  action.connect_accelerator()

These, in conjunction with the gtk.ActionGroup.add_action_with_accel() method, should cover most cases of accelerator set up.

An AccelGroup must always be set for an Action. The set_accel_path() method is called by the gtk.ActionGroup.add_action_with_accel() method. If set_accel_path() is used the accelerator path should match the default format: "<Actions>/actiongroup_name/action_name". Finally, the connect_accelerator() method is called to complete the accelerator set up.

Note

An Action must have an AccelGroup and an accelerator path associated with it before connect_accelerator() is called.

Since the connect_accelerator() method can be called several times (i.e. once for each proxy widget), the number of calls is counted so that an equal number of disconnect_accelerator() calls must be made before removing the accelerator.

As illustrated in the previous example programs, an Action accelerator can be used by all the proxy widgets. An Action should be part of an ActionGroup in order to use the default accelerator path that has the format: "<Actions>/actiongroup_name/action_name". The easiest way to add an accelerator is to use the gtk.ActionGroup.add_action_with_accel() method and the following general procedure:

  • Create an AccelGroup and add it to the top level window.
  • Create a new ActionGroup
  • Create an Action specifying a Stock Item with an accelerator.
  • Add the Action to the ActionGroup using the gtk.ActionGroup.add_action_with_accel() method specifying None to use the Stock Item accelerator or an accelerator string acceptable to gtk.accelerator_parse().
  • Set the AccelGroup for the Action using the gtk.Action.set_accel_group() method.
  • Complete the accelerator set up using the gtk.Action.connect_accelerator() method.

Any proxy widgets created by or connected to the Action will use the accelerator.

16.1.1.6. Toggle Actions

As mentioned previously a ToggleAction is a subclass of Action that can be toggled between two states. The constructor for a ToggleAction takes the same parameters as an Action:

  toggleaction = gtk.ToggleAction(name, label, tooltip, stock_id)

In addition to the Action methods the following ToggleAction methods:

  toggleaction.set_active(is_active)
  is_active = toggleaction.get_active()

set and get the current state of toggleaction. is_active is a boolean value.

You can connect to the "toggled" signal specifying a callback with the signature:

  def toggled_cb(toggleaction, user_data)

The "toggled" signal is emitted when the ToggleAction changes state.

A MenuItem proxy widget of a ToggleAction will be displayed like a CheckMenuItem by default. To have the proxy MenuItem displayed like a RadioMenuItem set the "draw-as-radio" property to TRUE using the method:

  toggleaction.set_draw_as_radio(draw_as_radio)

You can use the following method to determine whether the ToggleAction MenuItems will be displayed like RadioMenuItems:

  draw_as_radio = toggleaction.get_draw_as_radio()

16.1.1.7. Radio Actions

A RadioAction is a subclass of ToggleAction that can be grouped so that only one RadioAction is active at a time. The corresponding proxy widgets are the RadioMenuItem and RadioToolButton.

The constructor for a RadioAction takes the same arguments as an Action with the addition of a unique integer value that is used to identify the active RadioAction in a group:

  radioaction = gtk.RadioAction(name, label, tooltip, stock_id, value)

The group for a RadioAction can be set using the method:

  radioaction.set_group(group)

where group is another RadioAction that radioaction should be grouped with. The group containing a RadioAction can be retrieved using the method:

  group = radioaction.get_group()

that returns a list of the group of RadioAction objects that includes radioaction.

The value of the currently active group member can retrieved using the method:

  active_value = radioaction.get_current_value()

You can connect a callback to the "changed" signal to be notified when the active member of the RadioAction group has been changed. Note that you only have to connect to one of the RadioAction objects to track changes. The callback signature is:

  def changed_cb(radioaction, current, user_data)

where current is the currently active RadioAction in the group.

16.1.1.8. An Actions Example

The actions.py example program illustrates the use of the Action, ToggleAction and RadioAction objects. Figure 16.3, “Actions Example” displays the example program in operation:

Figure 16.3. Actions Example

Actions Example

This example is similar enough to the basicaction.py example program that a detailed description is not necessary.

16.1.2. ActionGroups

As mentioned in the previous section, related Action objects should be added to an ActionGroup to provide common control over their visibility and sensitivity. For example, in a text processing application the menu items and toolbar buttons for specifying the text justification could be contained in an ActionGroup. A user interface is expected to have multiple ActionGroup objects that cover various aspects of the application. For example, global actions like creating new documents, opening and saving a document and quitting the application likely form one ActionGroup while actions such as modifying the view of the document would form another.

16.1.2.1. Creating ActionGroups

An ActionGroup is created using the constructor:

  actiongroup = gtk.ActionGroup(name)

where name is a unique name for the ActionGroup. The name should be unique because it is used to form the default accelerator path for its Action objects.

The ActionGroup name can be retrieved using the method:

  name = actiongroup.get_name()

or by retrieving the contents of the "name" property.

16.1.2.2. Adding Actions

As illustrated in Section 16.1.1, “Actions” an existing Action can be added to an ActionGroup using one of the methods:

  actiongroup.add_action(action)

  actiongroup.add_action_with_accel(action, accelerator)

where action is the Action to be added and accelerator is a string accelerator specification acceptable to gtk.accelerator_parse(). If accelerator is None the accelerator (if any) associated with the "stock-id" property of action will be used. As previously noted the add_action_wih_accel() method is preferred if you want to use accelerators.

The ActionGroup offers three convenience methods that make the job of creating and adding Action objects to an ActionGroup much easier:

  actiongroup.add_actions(entries, user_data=None)

  actiongroup.add_toggle_actions(entries, user_data=None)

  actiongroup.add_radio_actions(entries, value=0, on_change=None, user_data=None)

The entries parameter is a sequence of action entry tuples that provide the information used to create the actions that are added to the ActionGroup. The RadioAction with the value of value is initially set active. on_change is a callback that is connected to the "changed" signal of the first RadioAction in the group. The signature of on_changed is:

  def on_changed_cb(radioaction, current, user_data)

The entry tuples for Action objects contain:

  • The name of the action. Must be specified.
  • The stock id for the action. Optional with a default value of None if a label is specified.
  • The label for the action. Optional with a default value of None if a stock id is specified.
  • The accelerator for the action, in the format understood by the gtk.accelerator_parse() function. Optional with a default value of None.
  • The tooltip for the action. Optional with a default value of None.
  • The callback function invoked when the action is activated. Optional with a default value of None.

You must minimally specify a value for the name field and a value in either the stock id field or the label field. If you specify a label then you can specify None for the stock id if you aren't using one. For example the following method call:

  actiongroup.add_actions([('quit', gtk.STOCK_QUIT, '_Quit me!', None, 
                            'Quit the Program', quit_cb)])

adds an action to actiongroup for exiting a program.

The entry tuples for the ToggleAction objects are similar to the Action entry tuples except there is an additional optional flag field containing a boolean value indicating whether the action is active. The default value for the flag field is FALSE. For example the following method call:

  actiongroup.add_toggle_actions([('mute, None, '_Mute', '<control>m', 
                                   'Mute the volume', mute_cb, True)])

adds a ToggleAction to actiongroup and sets it to be initially active.

The entry tuples for the RadioAction objects are similar to the Action entry tuples but specify a value field instead of a callback field:

  • The name of the action. Must be specified.
  • The stock id for the action. Optional with a default value of None if a label is specified.
  • The label for the action.Optional with a default value of None if a stock id is specified.
  • The accelerator for the action, in the format understood by the gtk.accelerator_parse() function. Optional with a default value of None.
  • The tooltip for the action. Optional with a default value of None.
  • The value to set on the radio action. Optional with a default value of 0. Should always be specified in applications.

For example the following code fragment:

  radioactionlist = [('am', None, '_AM', '<control>a', 'AM Radio', 0)
                     ('fm', None, '_FM', '<control>f', 'FM Radio', 1)
                     ('ssb', None, '_SSB', '<control>s', 'SSB Radio', 2)]
  actiongroup.add_radio_actions(radioactionlist, 0, changed_cb)

creates three RadioAction objects and sets the initial active action to 'am' and the callback that is invoked when any of the actions is activated to changed_cb.

16.1.2.3. Retrieving Actions

An Action can be retrieved by name from an ActionGroup by using the method:

  action = actiongroup.get_action(action_name)

A list of all the Action objects contained in an ActionGroup can be retrieved using the method:

  actionlist = actiongroup.list_actions()

16.1.2.4. Controlling Actions

The sensitivity and visibility of all Action objects in an ActionGroup can be controlled by setting the associated property values. The following convenience methods get and set the properties:

  is_sensitive = actiongroup.get_sensitive()
  actiongroup.set_sensitive(sensitive)

  is_visible = actiongroup.get_visible()
  actiongroup.set_visible(visible)

Finally you can remove an Action from an ActionGroup using the method:

  actiongroup.remove_action(action)

16.1.2.5. An ActionGroup Example

The actiongroup.py example program duplicates the menubar and toolbar of the actions.py example program using the ActionGroup methods. In addition the program provides buttons to control the sensitivity and visibility of the menu items and toolbar items. Figure 16.4, “ActionGroup Example” illustrates the program in operation:

Figure 16.4. ActionGroup Example

ActionGroup Example

16.1.2.6. ActionGroup Signals

Your application can track the connection and removal of proxy widgets to the Action objects in an ActionGroup using the "connect-proxy" and disconnect-proxy" signals. The signatures of your signal handler callbacks should be:

  def connect_proxy_cb(actiongroup, action, proxy, user_params)

  def disconnect_proxy_cb(actiongroup, action, proxy, user_params)

For example, you might want to track these changes to make some additional changes to the properties of the new proxy widget when it is connected or to update some other part of the user interface when a proxy widget is disconnected.

The "pre-activate" and "post-activate" signals allow your application to do some additional processing immediately before or after an action is activated. The signatures of the signal handler callbacks should be:

  def pre_activate_cb(actiongroup, action, user_params)

  def post_activate_cb(actiongroup, action, user_params)

These signals are mostly used by the UIManager to provide global notification for all Action objects in ActionGroup objects used by it.

pygtk2tutorial/app-CodeExamples.html0100644000117200001670000001463410227357010016706 0ustar finlayfcfAppendix B. Code Examples

Appendix B. Code Examples

Table of Contents

B.1. scribblesimple.py

B.1. scribblesimple.py

    1   #!/usr/bin/env python
    2   
    3   # example scribblesimple.py
    4   
    5	 # GTK - The GIMP Toolkit
    6	 # Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
    7	 # Copyright (C) 2001-2002 John Finlay
    8	 #
    9	 # This library is free software; you can redistribute it and/or
   10	 # modify it under the terms of the GNU Library General Public
   11	 # License as published by the Free Software Foundation; either
   12	 # version 2 of the License, or (at your option) any later version.
   13	 #
   14	 # This library is distributed in the hope that it will be useful,
   15	 # but WITHOUT ANY WARRANTY; without even the implied warranty of
   16	 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   17	 # Library General Public License for more details.
   18	 #
   19	 # You should have received a copy of the GNU Library General Public
   20	 # License along with this library; if not, write to the
   21	 # Free Software Foundation, Inc., 59 Temple Place - Suite 330,
   22	 # Boston, MA 02111-1307, USA.
   23	
   24	
   25	import gtk
   26	
   27	# Backing pixmap for drawing area
   28	pixmap = None
   29	
   30	# Create a new backing pixmap of the appropriate size
   31	def configure_event(widget, event):
   32	    global pixmap
   33	
   34	    x, y, width, height = widget.get_allocation()
   35	    pixmap = gtk.gdk.Pixmap(widget.window, width, height)
   36	    pixmap.draw_rectangle(widget.get_style().white_gc,
   37	                          True, 0, 0, width, height)
   38	
   39	    return True
   40	
   41	# Redraw the screen from the backing pixmap
   42	def expose_event(widget, event):
   43	    x , y, width, height = event.area
   44	    widget.window.draw_drawable(widget.get_style().fg_gc[gtk.STATE_NORMAL],
   45	                                pixmap, x, y, x, y, width, height)
   46	    return False
   47	
   48	# Draw a rectangle on the screen
   49	def draw_brush(widget, x, y):
   50	    rect = (x - 5, y - 5, 10, 10)
   51	    pixmap.draw_rectangle(widget.get_style().black_gc, True,
   52	                          rect[0], rect[1], rect[2], rect[3])
   53	    widget.queue_draw_area(rect[0], rect[1], rect[2], rect[3])
   54	
   55	def button_press_event(widget, event):
   56	    if event.button == 1 and pixmap != None:
   57	        draw_brush(widget, event.x, event.y)
   58	    return True
   59	
   60	def motion_notify_event(widget, event):
   61	    if event.is_hint:
   62	        x, y, state = event.window.get_pointer()
   63	    else:
   64	        x = event.x
   65	        y = event.y
   66	        state = event.state
   67	    
   68	    if state & gtk.gdk.BUTTON1_MASK and pixmap != None:
   69	        draw_brush(widget, x, y)
   70	  
   71	    return True
   72	
   73	def main():
   74	    window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   75	    window.set_name ("Test Input")
   76	
   77	    vbox = gtk.VBox(False, 0)
   78	    window.add(vbox)
   79	    vbox.show()
   80	
   81	    window.connect("destroy", gtk.mainquit)
   82	
   83	    # Create the drawing area
   84	    drawing_area = gtk.DrawingArea()
   85	    drawing_area.set_size_request(200, 200)
   86	    vbox.pack_start(drawing_area, True, True, 0)
   87	
   88	    drawing_area.show()
   89	
   90	    # Signals used to handle backing pixmap
   91	    drawing_area.connect("expose_event", expose_event)
   92	    drawing_area.connect("configure_event", configure_event)
   93	
   94	    # Event signals
   95	    drawing_area.connect("motion_notify_event", motion_notify_event)
   96	    drawing_area.connect("button_press_event", button_press_event)
   97	
   98	    drawing_area.set_events(gtk.gdk.EXPOSURE_MASK
   99	                            | gtk.gdk.LEAVE_NOTIFY_MASK
  100	                            | gtk.gdk.BUTTON_PRESS_MASK
  101	                            | gtk.gdk.POINTER_MOTION_MASK
  102	                            | gtk.gdk.POINTER_MOTION_HINT_MASK)
  103	
  104	    # .. And a quit button
  105	    button = gtk.Button("Quit")
  106	    vbox.pack_start(button, False, False, 0)
  107	
  108	    button.connect_object("clicked", lambda w: w.destroy(), window)
  109	    button.show()
  110	
  111	    window.show()
  112	
  113	    gtk.main()
  114	
  115	    return 0
  116	
  117	if __name__ == "__main__":
  118	    main()
pygtk2tutorial/ch-RangeWidgets.html0100644000117200001670000001250410227356761016540 0ustar finlayfcfChapter 8. Range Widgets

Chapter 8. Range Widgets

The category of range widgets includes the ubiquitous scrollbar widget and the less common "scale" widget. Though these two types of widgets are generally used for different purposes, they are quite similar in function and implementation. All range widgets share a set of common graphic elements, each of which has its own X window and receives events. They all contain a "trough" and a "slider" (what is sometimes called a "thumbwheel" in other GUI environments). Dragging the slider with the pointer moves it back and forth within the trough, while clicking in the trough advances the slider towards the location of the click, either completely, or by a designated amount, depending on which mouse button is used.

As mentioned in Chapter 7, Adjustments above, all range widgets are associated with an Adjustment object, from which they calculate the length of the slider and its position within the trough. When the user manipulates the slider, the range widget will change the value of the adjustment.

8.1. Scrollbar Widgets

These are your standard, run-of-the-mill scrollbars. These should be used only for scrolling some other widget, such as a list, a text box, or a viewport (and it's generally easier to use the scrolled window widget in most cases). For other purposes, you should use scale widgets, as they are friendlier and more featureful.

There are separate types for horizontal and vertical scrollbars. There really isn't much to say about these. You create them with the following methods:

  hscrollbar = gtk.HSscrollbar(adjustment=None)

  vscrollbar = gtk.VSscrollbar(adjustment=None)

and that's about it. The adjustment argument can either be a reference to an existing Adjustment (see Chapter 7, Adjustments), or nothing, in which case one will be created for you. Specifying nothing might be useful in the case, where you wish to pass the newly-created adjustment to the constructor function of some other widget which will configure it for you, such as a text widget.

pygtk2tutorial/sec-GtkCurve.html0100644000117200001670000000352310227357010016054 0ustar finlayfcfA.21. GtkCurve

A.21. GtkCurve

curve-type-changed(curve, data)
pygtk2tutorial/sec-RangeWidgetEample.html0100644000117200001670000002760610227356761017672 0ustar finlayfcf8.5. Range Widget Example

8.5. Range Widget Example

The example program (rangewidgets.py) puts up a window with three range widgets all connected to the same adjustment, and a couple of controls for adjusting some of the parameters mentioned above and in the section on adjustments, so you can see how they affect the way these widgets work for the user. Figure 8.1, “Range Widgets Example” illustrates the result of running the program:

Figure 8.1. Range Widgets Example

Range Widgets Example

The rangewidgets.py source code is:

    1	#!/usr/bin/env python
    2	
    3	# example rangewidgets.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	
    9	# Convenience functions
   10	
   11	def make_menu_item(name, callback, data=None):
   12	    item = gtk.MenuItem(name)
   13	    item.connect("activate", callback, data)
   14	    item.show()
   15	    return item
   16	
   17	def scale_set_default_values(scale):
   18	    scale.set_update_policy(gtk.UPDATE_CONTINUOUS)
   19	    scale.set_digits(1)
   20	    scale.set_value_pos(gtk.POS_TOP)
   21	    scale.set_draw_value(True)
   22	
   23	class RangeWidgets:
   24	    def cb_pos_menu_select(self, item, pos):
   25	        # Set the value position on both scale widgets
   26	        self.hscale.set_value_pos(pos)
   27	        self.vscale.set_value_pos(pos)
   28	
   29	    def cb_update_menu_select(self, item, policy):
   30	        # Set the update policy for both scale widgets
   31	        self.hscale.set_update_policy(policy)
   32	        self.vscale.set_update_policy(policy)
   33	
   34	    def cb_digits_scale(self, adj):
   35	        # Set the number of decimal places to which adj->value is rounded
   36	        self.hscale.set_digits(adj.value)
   37	        self.vscale.set_digits(adj.value)
   38	
   39	    def cb_page_size(self, get, set):
   40	        # Set the page size and page increment size of the sample
   41	        # adjustment to the value specified by the "Page Size" scale
   42	        set.page_size = get.value
   43	        set.page_incr = get.value
   44	        # Now emit the "changed" signal to reconfigure all the widgets that
   45	        # are attached to this adjustment
   46	        set.emit("changed")
   47	
   48	    def cb_draw_value(self, button):
   49	        # Turn the value display on the scale widgets off or on depending
   50	        # on the state of the checkbutton
   51	        self.hscale.set_draw_value(button.get_active())
   52	        self.vscale.set_draw_value(button.get_active())  
   53	
   54	    # makes the sample window
   55	
   56	    def __init__(self):
   57	        # Standard window-creating stuff
   58	        self.window = gtk.Window (gtk.WINDOW_TOPLEVEL)
   59	        self.window.connect("destroy", lambda w: gtk.main_quit())
   60	        self.window.set_title("range controls")
   61	
   62	        box1 = gtk.VBox(False, 0)
   63	        self.window.add(box1)
   64	        box1.show()
   65	
   66	        box2 = gtk.HBox(False, 10)
   67	        box2.set_border_width(10)
   68	        box1.pack_start(box2, True, True, 0)
   69	        box2.show()
   70	
   71	        # value, lower, upper, step_increment, page_increment, page_size
   72	        # Note that the page_size value only makes a difference for
   73	        # scrollbar widgets, and the highest value you'll get is actually
   74	        # (upper - page_size).
   75	        adj1 = gtk.Adjustment(0.0, 0.0, 101.0, 0.1, 1.0, 1.0)
   76	  
   77	        self.vscale = gtk.VScale(adj1)
   78	        scale_set_default_values(self.vscale)
   79	        box2.pack_start(self.vscale, True, True, 0)
   80	        self.vscale.show()
   81	
   82	        box3 = gtk.VBox(False, 10)
   83	        box2.pack_start(box3, True, True, 0)
   84	        box3.show()
   85	
   86	        # Reuse the same adjustment
   87	        self.hscale = gtk.HScale(adj1)
   88	        self.hscale.set_size_request(200, 30)
   89	        scale_set_default_values(self.hscale)
   90	        box3.pack_start(self.hscale, True, True, 0)
   91	        self.hscale.show()
   92	
   93	        # Reuse the same adjustment again
   94	        scrollbar = gtk.HScrollbar(adj1)
   95	        # Notice how this causes the scales to always be updated
   96	        # continuously when the scrollbar is moved
   97	        scrollbar.set_update_policy(gtk.UPDATE_CONTINUOUS)
   98	        box3.pack_start(scrollbar, True, True, 0)
   99	        scrollbar.show()
  100	
  101	        box2 = gtk.HBox(False, 10)
  102	        box2.set_border_width(10)
  103	        box1.pack_start(box2, True, True, 0)
  104	        box2.show()
  105	
  106	        # A checkbutton to control whether the value is displayed or not
  107	        button = gtk.CheckButton("Display value on scale widgets")
  108	        button.set_active(True)
  109	        button.connect("toggled", self.cb_draw_value)
  110	        box2.pack_start(button, True, True, 0)
  111	        button.show()
  112	  
  113	        box2 = gtk.HBox(False, 10)
  114	        box2.set_border_width(10)
  115	
  116	        # An option menu to change the position of the value
  117	        label = gtk.Label("Scale Value Position:")
  118	        box2.pack_start(label, False, False, 0)
  119	        label.show()
  120	  
  121	        opt = gtk.OptionMenu()
  122	        menu = gtk.Menu()
  123	
  124	        item = make_menu_item ("Top", self.cb_pos_menu_select, gtk.POS_TOP)
  125	        menu.append(item)
  126	  
  127	        item = make_menu_item ("Bottom", self.cb_pos_menu_select,
  128	                               gtk.POS_BOTTOM)
  129	        menu.append(item)
  130	  
  131	        item = make_menu_item ("Left", self.cb_pos_menu_select, gtk.POS_LEFT)
  132	        menu.append(item)
  133	  
  134	        item = make_menu_item ("Right", self.cb_pos_menu_select, gtk.POS_RIGHT)
  135	        menu.append(item)
  136	  
  137	        opt.set_menu(menu)
  138	        box2.pack_start(opt, True, True, 0)
  139	        opt.show()
  140	
  141	        box1.pack_start(box2, True, True, 0)
  142	        box2.show()
  143	
  144	        box2 = gtk.HBox(False, 10)
  145	        box2.set_border_width(10)
  146	
  147	        # Yet another option menu, this time for the update policy of the
  148	        # scale widgets
  149	        label = gtk.Label("Scale Update Policy:")
  150	        box2.pack_start(label, False, False, 0)
  151	        label.show()
  152	  
  153	        opt = gtk.OptionMenu()
  154	        menu = gtk.Menu()
  155	  
  156	        item = make_menu_item("Continuous", self.cb_update_menu_select,
  157	                              gtk.UPDATE_CONTINUOUS)
  158	        menu.append(item)
  159	  
  160	        item = make_menu_item ("Discontinuous", self.cb_update_menu_select,
  161	                               gtk.UPDATE_DISCONTINUOUS)
  162	        menu.append(item)
  163	  
  164	        item = make_menu_item ("Delayed", self.cb_update_menu_select,
  165	                               gtk.UPDATE_DELAYED)
  166	        menu.append(item)
  167	  
  168	        opt.set_menu(menu)
  169	        box2.pack_start(opt, True, True, 0)
  170	        opt.show()
  171	  
  172	        box1.pack_start(box2, True, True, 0)
  173	        box2.show()
  174	
  175	        box2 = gtk.HBox(False, 10)
  176	        box2.set_border_width(10)
  177	  
  178	        # An HScale widget for adjusting the number of digits on the
  179	        # sample scales.
  180	        label = gtk.Label("Scale Digits:")
  181	        box2.pack_start(label, False, False, 0)
  182	        label.show()
  183	
  184	        adj2 = gtk.Adjustment(1.0, 0.0, 5.0, 1.0, 1.0, 0.0)
  185	        adj2.connect("value_changed", self.cb_digits_scale)
  186	        scale = gtk.HScale(adj2)
  187	        scale.set_digits(0)
  188	        box2.pack_start(scale, True, True, 0)
  189	        scale.show()
  190	
  191	        box1.pack_start(box2, True, True, 0)
  192	        box2.show()
  193	  
  194	        box2 = gtk.HBox(False, 10)
  195	        box2.set_border_width(10)
  196	  
  197	        # And, one last HScale widget for adjusting the page size of the
  198	        # scrollbar.
  199	        label = gtk.Label("Scrollbar Page Size:")
  200	        box2.pack_start(label, False, False, 0)
  201	        label.show()
  202	
  203	        adj2 = gtk.Adjustment(1.0, 1.0, 101.0, 1.0, 1.0, 0.0)
  204	        adj2.connect("value_changed", self.cb_page_size, adj1)
  205	        scale = gtk.HScale(adj2)
  206	        scale.set_digits(0)
  207	        box2.pack_start(scale, True, True, 0)
  208	        scale.show()
  209	
  210	        box1.pack_start(box2, True, True, 0)
  211	        box2.show()
  212	
  213	        separator = gtk.HSeparator()
  214	        box1.pack_start(separator, False, True, 0)
  215	        separator.show()
  216	
  217	        box2 = gtk.VBox(False, 10)
  218	        box2.set_border_width(10)
  219	        box1.pack_start(box2, False, True, 0)
  220	        box2.show()
  221	
  222	        button = gtk.Button("Quit")
  223	        button.connect("clicked", lambda w: gtk.main_quit())
  224	        box2.pack_start(button, True, True, 0)
  225	        button.set_flags(gtk.CAN_DEFAULT)
  226	        button.grab_default()
  227	        button.show()
  228	        self.window.show()
  229	
  230	def main():
  231	    gtk.main()
  232	    return 0            
  233	
  234	if __name__ == "__main__":
  235	    RangeWidgets()
  236	    main()

You will notice that the program does not call the connect() method for the "delete_event", but only for the "destroy" signal. This will still perform the desired operation, because an unhandled "delete_event" will result in a "destroy" signal being given to the window.

pygtk2tutorial/ch-Credits.html0100644000117200001670000000507210227357004015543 0ustar finlayfcfChapter 27. Credits

Chapter 27. Credits

27.1. PyGTK Credits

Thanks to:

  • Nathan Hurst for the Plugs and Sockets section.
  • Alex Roitman for the FileChooser section.
  • Steve George for the example program illustrating editable CellRendererText and activatable CellRendererToggle.
pygtk2tutorial/sec-GtkNotebook.html0100644000117200001670000000350410227357006016554 0ustar finlayfcfA.7. GtkNotebook

A.7. GtkNotebook

  switch-page(noteboook, page, page_num, data)
pygtk2tutorial/sec-TextViews.html0100644000117200001670000003731110227356765016306 0ustar finlayfcf13.2. TextViews

13.2. TextViews

There is only one function for creating a new TextView widget.

  textview = gtk.TextView(buffer=None)

When a TextView is created it will create an associated TextBuffer and TextTagTable by default. If you want to use an existing TextBuffer in a TextView specify it in the above method. To change the TextBuffer used by a TextView use the following method:

  textview.set_buffer(buffer)

Use the following method to retrieve a reference to the TextBuffer from a TextView:

  buffer = textview.get_buffer()

A TextView widget doesn't have scrollbars to adjust the view in case the text is larger than the window. To provide scrollbars, you add the TextView to a ScrolledWindow (see Section 10.9, “Scrolled Windows”).

A TextView can be used to allow the user to edit a body of text, or to display multiple lines of read-only text to the user. To switch between these modes of operation, the use the following method:

  textview.set_editable(setting)

The setting argument is a TRUE or FALSE value that specifies whether the user is permitted to edit the contents of the TextView widget. The editable mode of the TextView can be overridden in text ranges within the TextBuffer by TextTags.

You can retrieve the current editable setting using the method:

  setting = textview.get_editable()

When the TextView is not editable, you probably should hide the cursor using the method:

  textview.set_cursor_visible(setting)

The setting argument is a TRUE or FALSE value that specifies whether the cursor should be visible The TextView can wrap lines of text that are too long to fit onto a single line of the display window. Its default behavior is to not wrap lines. This can be changed using the next method:

  textview.set_wrap_mode(wrap_mode)

This method allows you to specify that the text widget should wrap long lines on word or character boundaries. The word_wrap argument is one of:

  gtk.WRAP_NONE
  gtk.WRAP_CHAR
  gtk.WRAP_WORD

The default justification of the text in a TextView can be set and retrieved using the methods:

  textview.set_justification(justification)
  justification = textview.get_justification()

where justification is one of:

  gtk.JUSTIFY_LEFT
  gtk.JUSTIFY_RIGHT
  gtk.JUSTIFY_CENTER

Note

The justification will be JUSTIFY_LEFT if the wrap_mode is WRAP_NONE. Tags in the associated TextBuffer may override the default justification.

Other default attributes that can be set and retrieved in a TextView are: left margin, right margin, tabs, and paragraph indentation using the following methods:

  textview.set_left_margin(left_margin)
  left_margin = textview.get_left_margin()
  
  textview.set_right_margin(right_margin)
  right_margin = textview.get_right_margin()
  
  textview.set_indent(indent)
  indent = textview.get_indent()
  
  textview.set_pixels_above_lines(pixels_above_line)
  pixels_above_line = textview.get_pixels_above_lines()
  
  textview.set_pixels_below_lines(pixels_below_line)
  pixels_below_line = textview.get_pixels_below_lines()
  
  textview.set_pixels_inside_wrap(pixels_inside_wrap)
  pixels_inside_wrap = textview.get_pixels_inside_wrap()
  
  textview.set_tabs(tabs)
  tabs = textview.get_tabs()

left_margin, right_margin, indent, pixels_above_lines, pixels_below_lines and pixels_inside_wrap are specified in pixels. These default values may be overridden by tags in the associated TextBuffer. tabs is a pango.TabArray.

The textview-basic.py example program illustrates basic use of the TextView widget:

Figure 13.1. Basic TextView Example

Basic TextView Example

The source code for the program is:

    1	#!/usr/bin/env python
    2	
    3	# example textview-basic.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	
    9	class TextViewExample:
   10	    def toggle_editable(self, checkbutton, textview):
   11	        textview.set_editable(checkbutton.get_active())
   12	
   13	    def toggle_cursor_visible(self, checkbutton, textview):
   14	        textview.set_cursor_visible(checkbutton.get_active())
   15	
   16	    def toggle_left_margin(self, checkbutton, textview):
   17	        if checkbutton.get_active():
   18	            textview.set_left_margin(50)
   19	        else:
   20	            textview.set_left_margin(0)
   21	
   22	    def toggle_right_margin(self, checkbutton, textview):
   23	        if checkbutton.get_active():
   24	            textview.set_right_margin(50)
   25	        else:
   26	            textview.set_right_margin(0)
   27	
   28	    def new_wrap_mode(self, radiobutton, textview, val):
   29	        if radiobutton.get_active():
   30	            textview.set_wrap_mode(val)
   31	
   32	    def new_justification(self, radiobutton, textview, val):
   33	        if radiobutton.get_active():
   34	            textview.set_justification(val)
   35	
   36	    def close_application(self, widget):
   37	        gtk.main_quit()
   38	
   39	    def __init__(self):
   40	        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   41	        window.set_resizable(True)  
   42	        window.connect("destroy", self.close_application)
   43	        window.set_title("TextView Widget Basic Example")
   44	        window.set_border_width(0)
   45	
   46	        box1 = gtk.VBox(False, 0)
   47	        window.add(box1)
   48	        box1.show()
   49	
   50	        box2 = gtk.VBox(False, 10)
   51	        box2.set_border_width(10)
   52	        box1.pack_start(box2, True, True, 0)
   53	        box2.show()
   54	
   55	        sw = gtk.ScrolledWindow()
   56	        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
   57	        textview = gtk.TextView()
   58	        textbuffer = textview.get_buffer()
   59	        sw.add(textview)
   60	        sw.show()
   61	        textview.show()
   62	
   63	        box2.pack_start(sw)
   64	        # Load the file textview-basic.py into the text window
   65	        infile = open("textview-basic.py", "r")
   66	
   67	        if infile:
   68	            string = infile.read()
   69	            infile.close()
   70	            textbuffer.set_text(string)
   71	
   72	        hbox = gtk.HButtonBox()
   73	        box2.pack_start(hbox, False, False, 0)
   74	        hbox.show()
   75	
   76	        vbox = gtk.VBox()
   77	        vbox.show()
   78	        hbox.pack_start(vbox, False, False, 0)
   79	        # check button to toggle editable mode
   80	        check = gtk.CheckButton("Editable")
   81	        vbox.pack_start(check, False, False, 0)
   82	        check.connect("toggled", self.toggle_editable, textview)
   83	        check.set_active(True)
   84	        check.show()
   85	        # check button to toggle cursor visiblity
   86	        check = gtk.CheckButton("Cursor Visible")
   87	        vbox.pack_start(check, False, False, 0)
   88	        check.connect("toggled", self.toggle_cursor_visible, textview)
   89	        check.set_active(True)
   90	        check.show()
   91	        # check button to toggle left margin
   92	        check = gtk.CheckButton("Left Margin")
   93	        vbox.pack_start(check, False, False, 0)
   94	        check.connect("toggled", self.toggle_left_margin, textview)
   95	        check.set_active(False)
   96	        check.show()
   97	        # check button to toggle right margin
   98	        check = gtk.CheckButton("Right Margin")
   99	        vbox.pack_start(check, False, False, 0)
  100	        check.connect("toggled", self.toggle_right_margin, textview)
  101	        check.set_active(False)
  102	        check.show()
  103	        # radio buttons to specify wrap mode
  104	        vbox = gtk.VBox()
  105	        vbox.show()
  106	        hbox.pack_start(vbox, False, False, 0)
  107	        radio = gtk.RadioButton(None, "WRAP__NONE")
  108	        vbox.pack_start(radio, False, True, 0)
  109	        radio.connect("toggled", self.new_wrap_mode, textview, gtk.WRAP_NONE)
  110	        radio.set_active(True)
  111	        radio.show()
  112	        radio = gtk.RadioButton(radio, "WRAP__CHAR")
  113	        vbox.pack_start(radio, False, True, 0)
  114	        radio.connect("toggled", self.new_wrap_mode, textview, gtk.WRAP_CHAR)
  115	        radio.show()
  116	        radio = gtk.RadioButton(radio, "WRAP__WORD")
  117	        vbox.pack_start(radio, False, True, 0)
  118	        radio.connect("toggled", self.new_wrap_mode, textview, gtk.WRAP_WORD)
  119	        radio.show()
  120	
  121	        # radio buttons to specify justification
  122	        vbox = gtk.VBox()
  123	        vbox.show()
  124	        hbox.pack_start(vbox, False, False, 0)
  125	        radio = gtk.RadioButton(None, "JUSTIFY__LEFT")
  126	        vbox.pack_start(radio, False, True, 0)
  127	        radio.connect("toggled", self.new_justification, textview,
  128	                      gtk.JUSTIFY_LEFT)
  129	        radio.set_active(True)
  130	        radio.show()
  131	        radio = gtk.RadioButton(radio, "JUSTIFY__RIGHT")
  132	        vbox.pack_start(radio, False, True, 0)
  133	        radio.connect("toggled", self.new_justification, textview,
  134	                      gtk.JUSTIFY_RIGHT)
  135	        radio.show()
  136	        radio = gtk.RadioButton(radio, "JUSTIFY__CENTER")
  137	        vbox.pack_start(radio, False, True, 0)
  138	        radio.connect("toggled", self.new_justification, textview,
  139	                      gtk.JUSTIFY_CENTER)
  140	        radio.show()
  141	
  142	        separator = gtk.HSeparator()
  143	        box1.pack_start(separator, False, True, 0)
  144	        separator.show()
  145	
  146	        box2 = gtk.VBox(False, 10)
  147	        box2.set_border_width(10)
  148	        box1.pack_start(box2, False, True, 0)
  149	        box2.show()
  150	
  151	        button = gtk.Button("close")
  152	        button.connect("clicked", self.close_application)
  153	        box2.pack_start(button, True, True, 0)
  154	        button.set_flags(gtk.CAN_DEFAULT)
  155	        button.grab_default()
  156	        button.show()
  157	        window.show()
  158	
  159	def main():
  160	    gtk.main()
  161	    return 0       
  162	
  163	if __name__ == "__main__":
  164	    TextViewExample()
  165	    main()

Lines 10-34 define the callbacks for the radio and check buttons used to change the default attributes of the TextView. Lines 55-63 create a ScrolledWindow to contain the TextView. The ScrolledWindow is packed into a VBox with the check and radio buttons created in lines 72-140. The TextBuffer associated with the TextView is loaded with the contents of the source file in lines 64-70.

pygtk2tutorial/sec-GtkMenuItem.html0100644000117200001670000000362710227357007016526 0ustar finlayfcfA.16. GtkMenuItem

A.16. GtkMenuItem

activate(menu_item, data)

activate-item(menu_item, data)
pygtk2tutorial/sec-EntryCompletion.html0100644000117200001670000001624010227356776017477 0ustar finlayfcf16.4. EntryCompletion Objects

16.4. EntryCompletion Objects

An EntryCompletion is an object that is used with an Entry widget to provide completion functionality. As the user types into the Entry the EntryCompletion will popup a window with a set of strings matching the Entry text.

An EntryCompletion is created using the constructor:

  completion = gtk.EntryCompletion()

You can use the Entry method set_completion() to associate an EntryCompletion with an Entry:

  entry.set_completion(completion)

The strings used by the EntryCompletion for matching are retrieved from a TreeModel (usually a ListStore) that must be set using the method:

  completion.set_model(model)

The EntryCompletion implements the CellLayout interface that is similar to the TreeViewColumn in managing the display of the TreeModel data. The following convenience method sets up an EntryCompletion in the most common configuration - a list of strings:

  completion.set_text_column(column)

This method is equivalent to the following:

  cell = CellRendererText()
  completion.pack_start(cell)
  completion.add_attribute(cell, 'text', column)

To set the number of characters that must be entered before the EntryCompletion starts matching you can use the method:

  completion.set_minimum_key_length(length)

The example program entrycompletion.py demonstrates the use of the EntryCompletion. Figure 16.10, “EntryCompletion” illustrates the program in operation.

Figure 16.10. EntryCompletion

EntryCompletion

The example program starts with a small number of completion strings that can be increased by typing into the entry field and pressing the Enter key. If the string is unique it is added to the list of completion strings.

The built-in match function is a case insensitive string comparison function. If you need a more specialized match function, you can use the following method to install your own match function:

  completion.set_match_func(func, user_data)

The signature of func is:

  def func(completion, key_string, iter, data):

where key_string contains the current contents of the Entry, iter is a TreeIter pointing at a row in the associated TreeModel, and data is user_data. func should return TRUE if the row's completion string should be displayed.

The simple example code snippet below uses a match function to display completion names that begin with the entry contents and have the given suffix, in this case, a name ending in .png for a PNG file.

  ...
  completion.set_match_func(end_match, (0, '.png'))
  ...
  def end_match(completion, entrystr, iter, data):
      column, suffix = data
      model = completion.get_model()
      modelstr = model[iter][column]
      return modelstr.startswith(entrystr) and modelstr.endswith(suffix)
  ...

For example if the user types 'foo' and the completion model contains strings like 'foobar.png', smiley.png', 'foot.png' and 'foo.tif', the 'foobar.png' and 'foot.png' strings would be displayed as completions.

pygtk2tutorial/sec-GtkInputDialog.html0100644000117200001670000000371510227357007017220 0ustar finlayfcfA.18. GtkInputDialog

A.18. GtkInputDialog

enable-device(input_dialog, deviceid, data)

disable-device(input_dialog, deviceid, data)
pygtk2tutorial/figures/0040755000117200001670000000000010227356744014345 5ustar finlayfcfpygtk2tutorial/figures/fileselection.png0100644000117200001670000003225310050344475017672 0ustar finlayfcf‰PNG  IHDR¿|Ð "? pHYs  ÒÝ~ü4]IDATxÚíë—G¦ÕšY[ò’`@ì¸[Ɔ–ŒÑÍF’e£‹a|‘½VK†± fÀØÆ 36˜Ý±-<‹/ ÖåœhõÁ}cÝÕÕž³ûv?ì9ûa00ì¶8U—æØÿÂÝ™Q™u¯|Þ]'*+3»*+ò©÷¿ÈÈuë2j$Vãièfëz®ÆÛ6ßÌú ­:ðNw>’m?ë“7HþÔáo·£_Ëú,k®oãÛÉöÉÖ·»dj]ë=»‘;i4ª6¿ÇŽžz]}?ÉG{}þ=®eÑêꪪ_ºté¥ÿ¶œX¾ÿNT^}ñïßõmÛ\^ö¯ þË–_úÁÛ/Fò¢U‘uQ^yE[ó•K/5oR^|åg]”—ÿáÝ—þáÝ_])/{çû?|'®_ ÜÄ./',{ûéü²(/Dz¼xaù¥ oŸ¿°|áÂò¹óïˆJ`¹¼¦oÛ¼tþGïžû§å,åíŒë‡ïáí³—ÃÊÛq‰êç¦ÞUµ%“ËÁû1Ë«Súùײ•³ÓÑãëerúÝèñµßÇOߎë˜üIuò'•œenE”ÏÖ*½-ç«V&_¯8‹ç%U~üß/«ú='Ÿ´ðö^ ýÞ}÷Ý@å“@]Z¿—õç¿÷œ€×º?šm”?®?®Ÿ•?ú㹦We>.³ë®š]·a&g¹ú'MOß7»îý³âñê÷Ínü“èQ• ïÿ©x¼êý%õú̆÷ÏÅ•ù«þd&^sv㦙k6Ïnl.×l™«×çE]{šP>8#ʆ?UåšÍêOE¹úê>íXá#s¢lÜ:{õ¶ZÑêÓ›·ÏnÙ6+ŠXyzËœu–Í›üØlÒ ªÄëLoºvæc³[Fg7g/[Ææj•3[®ŸÝ|C­|àúUE¼´)^²íúÙí7̉Gg/E¯~r6wùè'dezÛ§f·Þ8#Eùhüh—¤å²Ô6ß3û‘½³[wψJ½Ìkõ¦¯6=ºgvlï\SÙ7?¶zÇÍÓ£7Ïî/ݼ˜¯ŒÞ²8ö™ÒØÁ…±ƒ‹­–ò㶲þ4°ì¼­´óXy×Ѳx?VÞyd1z .ãGU}×çe¼þxãîôòÁÑÓ}Ë—jd•néZ^^>sæŒIÏÆ"o¡ö"èùr3=G®N…ÝkžWG®ž‹ñ7°Ž6ƒ€e¦ÆÊMÚ®ñÓ-­>^ý¡9ƒw×üé´ Á´2}ÕÖ¼ Ûçt^µ}öÛ ­©ƒìƒ6—Ê»DbJ„5-s¹!¨$±oÛõÓµÇdºmŸÝ>>gÁ.¡ø‘wÓtTñ7·õ¦¹ZÝEºí{ç’ pïÜu{jì“•ûæwÜ<#ËØ- Šh;n)GP3çç`̯šp¶ãPÙ‰¹kÙ —ÄÊ×ݺ˜y£·Õ*bó·•%ó?Q$=£§Éhs¾´óŽEsµÏ—vþùâ®;Ë;ï*e-›®Ÿè3ÊsgžUFQè3é)˜¿7¼ç–ÝÄŒñ·ÎB›tvž"W¸æ}Ò Ö,Þ†-É€Û21nÓ¼ªëEmxõ‡fLfÄŸXã‡çtüÉ"žÖ]ø>:W§ä´ôzºõSK6¥[¿&üI 3˜cÓ‚n›Òð·åÂýÍÇ%Ñný„éuêyJójÓYŸiošU0™wR_mZ"O÷€Íø+g0}ºaüÌRõü%Þj!õ2~xq×í‘链o×ñ¥¯'ëú’¨X8sBPw‚NW( 8~ç¢ Ú®»E10·ëÎP ~òÞÅ÷•wý§Å½÷–EÙ}_YVŒ²çÄ‚xÜvéµÕ=õI£Òàž®IÏçŸ>¤«T÷ž/¾òŽÇJnÜÜŽòAéç¨VÍ& 7ÊÆGìžð€[çûd%Ðú©¢׊ûEÄ¿9©gÂï65Â.8íà`vö¥zÀ:Îæ¢’`ý¶ß8³ý¦9å kõOϤF¾v‘ÖïÚz,<ºO°/‚ 5˜ÊÁ²3–îoô@IP,1,¡*b52Ç ‚Ëi( àè­%YiÝêÄõ]w¼á‡àŸ_jzÚDÃhÛØ¦ müÎ×ò¦…ã÷,î<p§¾}'´ú}KK1Oï/ï=Yò”íã"rOr,µ÷rùÒ;úšzJ²¦ô›6{Ï_]Ö'±­s[ZBYð•Œoˆun 2*ö‰"v¨ê5´m‹Ìà¦m3nêm6‘uQi|Ê'fŠm\Ö¶Š=`¾ø#×ÏËžÁ­ŸñDÁ[?1¾ùèqçL »ÙÖKs÷_(þÖ¯îs{@Y®«yÀrÜ è]" íN@‰3;ÂuaqÉÕ ˜H´l(鹦˜¨:@=òÑóÌ™3!C(š¼ç«Ë:ãêpœN0€ÓŠžzð«gÀëñ€’€F´«ü 3 o2ý;l^‚Cßµó&þ>>³9(®SÏ¢áö›0°2J«(¹u|Z”í»šýÝMsκ±ÎÖgTò¤¶p÷|x\'àŒ™‰(!8çKqè°KèÌùʰW{úFõRó!oë,DîÏeU¿^Ä£¡L´-ž¿0*ÏXÃ\‚Ñ 5†—’€±|CÃî%O–ý÷.Åf°™b9(WÞsÿÂÍ'øö}aio3 Ã˾/.îpißC‹¢ì}°´íÆ=ϼð¼ÎDƒ˜b‰£NÏåååœÞSºË(ù~é’ø¯/_6œ íõjŒÛV«¨ì‡ÚaRïžþêæ?û©@ž¾‰DäªZa´±CkjBýic}Me«e¶W<ÊúZó€4HT>|ýL¾€×²‡ÓÛošwôè™ñïœ#ó«ãïÓ3Ûw»Ò »}™þê09ÂM-;êño’ûó/iZ~¸Õ"ð7þÙÅ]iŒKO ]ŠBà´˜7µ£0ŠÝm& F>1fŸÄ_ľ{uêùñ×dk!ðB>Ø ái|ûóAð¡eÙ/ÊÃbáâÁ‡Õo}¸,í¢/ßö© Ý{*Vêµýbr¿§Z”â=#–Î_XŽPXO}è\3ìžÌŠ(ª%‚‰1§Yà8’]Õx·yt^ƒ^wTjÛÞ 8-ìž(‚›êXŒ™‰+5ðÕë5RKŠÅ•é”h7KÄ"ÝœJl•=€¶+Ü=›5vðºý3×Ý2kd}°»¥l€rôæ×£zD±…TÌ™ð€™Žzô|1oj°¼ëöÅÜ‘¯í“K) |’˜‹~®…‡À[)‘ƒK£Û‚â£rˆ{š×Ù3± y·ç å=§e% üBÉ  ,‡ÒŠ`ßáO>•[¿\«xÊáGÊöB'=ubªŠ0›éô ôž2Qui¹NO-}l¬X‹jwL«ºð­6ìdÝè\«Pe?KL6U¶ß0×´PòKC›bâêÚ{’tj‰þª¨(F ý|õ\‡ >µ$ª|ÚèœwúÁú0À( ¬:þFuF#gFo™1r»e ,°ØÇ§gHܯÖûõ®=\Êå>y{iç‘Zߟ‘Ø Çb4 Æ•Nu|.ÏØè´ó!Fi{—vÝ«Bà²ð€I¹`;¢âîûjiƒû&E ´~õ5dü»ßò€ˆŠ‰vŒ,V¨/4Ù·¿^I2}z9ø`©^_:øå¥TöéåÀ—KÎå·~Í]?ZŽ*Y²^Zڶ甼äçÙÌ~Oua’xÕ×ï9²n}vïÙØ×Ù|ÇD^”B™Ö³ÀkMf0Š‚ ;ã_9ú_ãZÓ•u6`g¿**úXhY¢'+bçµJŽªÞ¼ð½ÏŸž¶ àØþYQþô(XsyŽ€M¯î/]·¿,Ó ~ºyw ¾Z=ïøçú† z8•wãi#¢ÔKêLã (Ó F8œÄÄhá½KÒ€SIÞÝñK:ëuÕcØÈï›v÷4Ï /Ê*Ö@ù`Ù6€û^Ðè–^n{¨fëxm`€C€[’h;ôh" ýåðWãÍO/Ç[‹é©1ñ÷†ý´û@½ç¥XYÇ{žû§eu5ˆnúê ùfè¨$wÿÍ;6±LŸ\(¢]Ï«öBéï¢W…×ÛYc•‘ õЬËq0j8ôŽ}³²P@àu¡Ã_ôäÆÅÀ,°n³_²Ð¸ä¶;Ò »°2.»§ão<4A\Š Xö x_yü¾ò®ˆwKÒÐIº%uÿË•õ ˆ…½¥g¶Ë âË&wùd¬-|x1“ô”pÆÕÊ_–+…OŒ­â­_/°^–dåøcÚÂÇKÇþzÑ(G¿Q:^¯íŸpÒSO»Ó³mÞSvDÞóâ²oÿ©qMˆFÀ÷döCT¢¾¸×/zµžQq®ác>¾×„EìäuouÎÛE¯H®®®*–E …Ë»e!Z­núâzYwfùL)$òM#à’€ÆP˜,®°æǽ¤O“ž,ãŸðçs•LL€4°dD¾ÊšyaǨÀÆ8˜ÖËþ8¼õn õDp#ˆ›Ò _* swè+å Ài6ð€7 `‹åðc5Æ|¬FÀ¦"8xôë¥#—ŽcIϦ¡Z~üɲóUUŽ«QŽÆetßI™oOÖ(´ßS£íÙ‹oëÙñ’Ì «ìp4æS¯%„Ãõ({Ï´3敯 nß;'h(ŠÚdtϬìa¸3¶Z…ö:×Ô&µ%1åSµP„Éj”ª¼ÊMؽè¿(‰"–Dx ˜'²`&‚›ûþÌk<‚™6p!u„ nôÎü¼ Iƒìn1§8Â{ý<0ÕèÉ$‰Û'~¡$ŠÄßÞKátGÇ_*øòBS7ß#¡L¬Pl^:ôÕ²ÃåEeÁ¼C_Õû%o}¢lãO0NÂîHŒÂ£O” }bñØ_5¡ÍCºãÍXÔ‰)¶Ò ¨—;þFi!iµ£ñã±§¢rÇÓâD6"wQ92b©¥œ»º–>ʽ¶,ó2òU¹mó‚9sL A«NÀ¸×¯¬÷÷ùò!úÄ)Ûú(7§‰— ü)ê5ÒÁ·—=#Ÿ-XÊw)ˆ‹€%Wη”<â/ñš¹&Šý¹=ü¥ìO€ÈäP˜ñû–vÞ—xHÐh˜´KA<ÃeRX¢slñZ󱑖Ã_êÉ…ï2ƒFZ#)ËÐ ˜;w†¤y‰ÂœŽBU<^Ò àñÇË'øx#Ú=úäbŠÅóR2‰kÊ7—b.IÚåèß–Ž=½•æåw?]ŽË¢*’žÑÈË3ŽkÄr•jo¿÷”9÷½¶<Ú 8Ý4:l@Œ§°)Û›u€tÎÉ`–®»u)œÆëSÂøcÛÀ¤°žßðL“:7LV¯gøûÔ‰¥¦‘€^Oï+T!p&îIÎß|z)0Ýáé.½ù/þY oÏÃMÜû%á—`·d“QÄÂI‰à XßöÐW•Ì—ýˆÊ×þ–n}â gث̠¨y|ÉÁ¾GËQ‰ `-ÂM¢^Zä{쯗ÚFÀØ-*F¼KâàS‹Gž•r´äé¼{¾]#à]O•äÓßYº÷™7N|·|Ïwvâ»ÿóžï¾XÆ>`Xú½ÿZ#aB}×eí÷œüIÅ´Þ‹á2TÝF?`x' $àxÆ/‰kÖ3!¹FÀ,Õ/)gîç å8˜(Û{"[Ø+‰£Ð9¨%{™XÔ3áIãáøWfE}_¾8"Ξðu³Òî´ý]H,|ø±%›}z‡àÁ'Äれ‚“Š  êl±´È¾£õÇcSNò€ £5»$¨wâ©EÝ ðEìû/åמùál*Ïýüžç~?•±ÛdäþŽœ9ÉžNI/Ͼðw²Òï)ƒ÷3/'`H‘!³œ AÆÈv'`þ™2R/Ê ›”ä¤X9&€1,áø=‹ã÷•o¼oI›Ý@½7B—E50ƒ T‰cc‰qK!®pïì–të§gõ¡ÎF' ÁGñ4òT˜¬Çˇ¿º”y>E¾ÎŽ?=4>b¥A>ûX<ÞHqØQpRbÄQž\°úûBM_ù~³TÃßSÙŠp‚ÇŸZ0B`aïy¦ÁŒÈ»«^¹û™õÏþüÄó’ƒQEÕÓ˳¿hzú½7SËŽÛO+ôeš^Ò³vQ{¦Ù‘^€ˆž)ƒKj$`£SïH0 åšG× ·žVƒuÚ4Œrmœ–ÉêYãæ,ðî£aî/Gα™qI½~o(¶Ú÷eÙ¨sðæä4H„?W¤µ¾?Ÿ Hz8¢`çP£C0þ²”d?ûÄë—ÝÞñͨ„Óðsß’!p×bÞãëè<þtY&Lþ„ ¼ëÛM°FÀØÞåâÝÝÏüü®dÞù_ÿùîg–‚9tõê%ÚÉ÷Þ¼û{ožxá!(ŒËÏŒ%§¿÷‹SßÿyRÙyô¤4‚“"ë³#›ÞSã¢Sé÷±jµ{N>¹yìtÊ–4/™Ø´cbËÇOoº~"©|à† Ï«vÙvýÛn8¥ÊV±D{ê,i¬3ñÑl?Ýý"ÿï¶Ožl^>±íÆÓÛo:µíS([oE8,t)<ïI«*¦øÞôÌCOÏäw ·øž9é)ƒ5» ê òñ‹Ö{£|8=[õžÅýøIï3ÓVúSÏ´w›ú’ö–´ï =»MÏðs¬s^Æyæøwm÷žáŸ=pÖîµÞ]@»>>žÝ¦gÒ¹Ñ bvîEjl˜ïеrÀs|üVîºá|«òÕL&´]ï zBϾóžõªí¥sû=ÃOõ¤ã“ÊZïV¾²v}Å©ûžÐ³7ô”ÿKš•²q÷uþ#ç’¶œc­ãC¿‰kÒ[J:8žƒ–t|ä&âßõöÇC?݉ÐÅÑp ýfÍü@OèÙmzêgunzªöm Ðnô)Ä Iÿ+ÇiÜz†PÒùÞ’Î|ÏñÉ}´ÛNÏð7£ß§×9EKà¼-ö?’H]É{c^è ={“s7~ùõŠs¡óp¢Ð05jéïüÿ+«-m/=CŽƒ¬Ën¬c ûø3ɰ÷„žÎ¯ÃxU}|ùmê«©oM}ÑFn|Rù³ê?€Ðõiän M>UÎ4„žF è<-“ˆé9Q»æ=Cèfœçú&vÅÉÇ'éðvúã«Ájvg‹Ÿ›ÎC$óòÆjê?„ö?Õ÷ã9€Ðõ)= 4(C¡Ÿªq«…º7LònI¤0ÎO'vûžÎóÜC%îßaO¼§jþ_AÃ~Ú¼KýP!‡Bí-d\0ô„ž=¦§j¾:Jô(ÌIÀ@zÚäMÚ[Oè™ô6 ””ß1~dôO¿gà¯`j\’ãPèÞ“È =Õ/¿3&M=+½§‘­J:ë2¥:”5²ýT/ôŽŽ•䩽ý@Og‡x&zMÈH%µýP@OèÙzê¿öFîÂÅ’‰žF|—ÚãÙ"A:7bÉÿŒ§*‰”ÕÛö$kdx½Ô¯Ãù úS‹ê°ø…þNÈ¡ñžYûÛ²Ÿ¶_ÈÔ“ÑòíºÌ´'?õ«ÔÇ'ù?»çÒ£î´4è ={@Ïu j/br\Ózúß§>4Ç^³·Óåûøö÷îÏtëŸÚþ¼lOÖõiäžµ½¦šŽO’|'a×¼§gž¡£g'b…À‰—’Ln> =¡gÏ"÷ÞÞÜÕéãò]mÒÃêZùhý°·NÏVÞC'~D3ízBÏŸ%¤›2N*þsøTÌ;s¨N¡¤Ù‘ôÌLÏÞ‹Õ6_ÜÖià”é+ÓWÆ{BO¼gÑñÁÇÏ×CbÐû =óÓób!¥ðÁÇnMNNêO§¦¦tz曥 Aψžë &ý’ü¤¯¯3Ä*·ïù*áôÌIÏ6Þ"bP¢¶|Ãh†2zÕ?àÚ€kuuµÅÛÛ!è™Ç{Môp Gß·1™|+­½sã‘ÑÓšpD³hj´˜@瀞xOÔ=ïBœ"£ˆ¦¦¦ºOO=¡'ìÈ]@0ß;žz"è¹î[¡'‚žh`è™cÐBÈluêêIã¤N§ —CO=Q_Ó30»’:øµœ?{A<ÒÞPÛ[Çé¹!¯ôáô¢®­®E%L´7ÔÃöÖ z®!”ÜíÖ\­\IÍÓ€ö†ºßÞºDÏÔ.*’§”lEfkh£Ií*i¹êá’[‘ÕÆöÖzú;km¤ÙáÈrߺ2¼53w„Ó³ ¹4|ôLmo½ôž4èÂf9EÅOOµò^í+ÍSg¢'?ºÈOÏ|í­/èéoè4ý¡T ÷t^iÞŠ÷Dг]í­ï艠§Ý”åÍÖ¡'ê(=³¶7è‰ú”žž¹ŽrÓ“>"ÔÆöÖmz ¢oÎÌí=sM}‘#÷L¿Êörçù@‹‚žmioݦgê†ÐsXÕJÎÝðŒáôÔã/Zjo{ë%=å[4L²^1œ‚½šr¯ÒÒÒ2Ú{ŠöÉ ¬®®mÉÓÞԘ礥?eXèKo6©íM¿3`_Ð3)†Ò—øê$)ž¢hôk#‚Û[R‹¢á=>´O#÷Tz¸Lêºâö C@O½5‡Ükȹ«ÈËÙÞ쥜©±¾}½Jz†··ÔÄcWé)š¦ áýô´OƒÔŒDzfîÁ3ªÙh'ImL?%hEE£gŽéEÃ{êfÓ†,‘ûÐÐS~¹²5gšôÁÞ§Þ±å÷žDîÐó7¿þm`é‹Kö? É ûà\Í~ AäÒFsäÜ“~›È© g=SÛÃ`Œ–gäóðÑóüÙ ºsÌÚ®RçXÊ!{~„÷ì_zúo¨]‰E#bïéù~“F&9Û[àÙ“à4‡Oâ;rz¢"hjjªkó{¦žQI¬Ô9Lñž]¢§áhyüæ‡{Ïô ioD-h€#w @%¿Äc¼§~â¬÷ÚTï“/zö˜ž¢ír'?d@î=;ÚÞ÷ùî÷nšƒDÏ‘‘‘ðñ¨hXeÌ­¥çpÚKÏÔöf¼ÿSÏ;Gƒ¨A¢§ŒÎ¸“²µººê¾Ça ôLmo´Fî©9x‘;B¡wˆmGäÞ ÐôÄ{¢ÂÑÓnoÆuÊÆ£¾rÒ:Æ«úK²—AO¼'fï™ÄÍ$JÚëx6GÐz¢á¤g+C–ˆp^O9WFгô4º–h|´æNÓS¯øm2‰ž²¹ê{p®Œ g¼'ÖÜQz:Á¹{¬+‘;ôì1=iy¨ÓôÔÇl®eÏÙ¯&mŽ 'ôDCØï™©áÙ¯ÚÝMŒm‚žÐ—ž6=vR_™v ={FOÕi…¨¯FË#è9ÞÓH\"Z3ôDÐ3½5;{å­z"èIkFÐAO艠'‚žÐAOD{z2tŽÖ =ôÌ@O ‰ '‚ž9½'E]¦§þ:ÏV@z®Ñï‰ðž™D†žÐ‘žsË{–{ž"èÙ‘;Q<­¹çsË{æ“_cRdèÙ·ÞzÒš;=·¼>¿gUm>BOèÙïô¤9Òš;DÏðûp@Oè9HwæPâö„´æõ{:ã÷¤ÈzBÏóž´EZsÿdüÐ$k={ï=™n­õåÜòzâ=ô¤½!艠'Wj"è :ôDÐ3ÿÜòkL2 '‚žÌP‡ '‚ž\玠'‚žÌ'BxO=¡'‚žuž­:Û2aôì=WcñE¢.{O5ÇRna gŸzÏ?òz†ÏJÓzËI¬–Æ =‰ÜÑÐ3ë,!ž9AœOù¡'ôDC¹K?èᦌè3Í·äœ AÏ~¤'ôl}nùµ´Ù‘3Ñ“Ùê g/¯Ô4êöÉþmôlïÜòž%º¥BÏþ¢§ý3®–è9zZ-ôìÜÜòúý·œÈzöQä®7Yýg‚žíÍõ‘Xv)é÷AÏnŒ÷ ŒÊ¡'ôdvd=½'ô¤5CO=sÒ3ÐÒè¡g{¯s7Ær0´zjÎ=|M=³Ž÷Dh¨èi\w =i;ÎN{øÈ½ sÞ è‰ÐÒ>""w=¹Îõ=í+ÖZ䅞Р=+•JÛ#w( =¡'*œ÷Tûét{ƒ°Ðz¢!¡§À™Ú\6ÈÔö–»5#”iÕÐz¢÷ž²½Ò3·ä è =ÑÒ3u–5Ù‡>’s&yÃi:§bbfOè =ÑðÓÓz{f¨Kå&ÞzBO4¨ô¬T*“““²]U«Uµçˆ%ç¬Æ©3ÌÚ“{BOèÙ¿ôô[£—Šì'ÞSϹû³FwÝð¯=¡gÿÒ3i3Íz†dDûiËÜòDîгé)ûïý·„M½Þz¶qnyÝ÷/²cy} =»MϤ;Ã8o“@…ž!ô¬T*ÕjÕÙÞœ?´©WsÒð ç€ÑÓ^§½×,£aí÷\Ëx­‘ß@Oè9ðôôßÂhzz®5ÞSÏ9› í ¿÷TS&óû=ûçZ£NlŽ g«ôTýñÆ:Ðz†÷{ÊŠ ÑÒ¡¶Ó“ö† '¢5§ÐÓÈ­ws†:=¡'*ï¹Ö|­ã4ôDÐ3½]É‘ž¹³Fˆö=QAéY•é®pd‡hoДžþûù#wZ#í z"¼gž¬‘>¬˜ƒO{ƒž¨èôLš¡N^yaϲæX~­>— ßô„žhxè)ÆëWjz®5Ò ¦g¢9ÿS=¡'NïÒÞœzÓzy¬(‚žÐ ?=í¬‘1‰çZØ ðžÐz¢a£gµZ Ïùo¼aÌïEä=¡'*÷\óÞ×(_ÖHJvzBO4œÞÓÈ¥^©HC  =¡'rïI{CÐÑšûˆžÒ{â@¡'ôDCBOyU»šÙÎ1Ç‚žz¶!k„ôDÐÓMOyK8a9ñžz"è™-çN{CÐÑš3Ü™C]ç®î G{CÐAÏü9wåz"èÉxO=ê=õÛrÐÞôDг/¼'=Ðz¢âÒÓ˜%DN/G59gñÌ”l÷¨‚Wè =ÑÐÒS.iö9{ÆO}eçÊzBOT”ÈÝÃA=×´9•¥c¥1COè‰ DOãvoF%‰žú5K´aè =QáèiLrl{OÕêôž¶Q¥¯zBOTz&Í-/‘ª›Pg_§þ*ßô„ž¨@‘{%LŒ'ô„žz"ÚôDГö† '¢5CO=iÍz"è =ôDÐz"è‰hoÐAOÚ‚žˆÖ =ô¤5#艠'ôDÐAO艠'¢½AO=sÌâœU^Õ“*zBOTDï©sSŸ­NM¶”4  zBOT\z:¤ÎÓ¤;Ñz¡'ôDÅ¥§sžã5×8 'ô„žz:p¹æCÞs=¡'*=»;Ãy'diºÐS/"@ž¨X‘;BxO=;BOî·==å·oýz"è鿦AO`:ĪV«ù¼§`(ôDÐOZèö¦w_Êö–ióJ¥=ô‘Åmo„ŠÇ³?<î(ñžz"Ú[KíÍo?¡'*=ýÆÓÙ+І£½I¶ØÞ 'Â{æ`úö&!«·7ú=ôÌÃJp9¬ííbšd»’½¥ÐAOT8 縦u_Êö¶.LDôÌgåtvÎ}bE‡¦½eÚ\åë¡'Â{¦Ð3 ¾ s Û[¦¬‘>b‰~OTz:§ï´'–wN5oL™lÌQOæ½AOTïiÏGg„äÎ ëôÕ¸iG1Û›0›Ð‘žúM8lï™:Õ¼s¦dUaГ};ÞAÏ ¹åRí<%ƽÄSÅJ¼çP¶7gž]戠'*h¿§þT'``än¿dc G{³Ñ‰÷D…¦§'k$šzƒbú=‹ÓÞltêí*5á=ÑPEîejo6Üðžz¶$xÒÞ '‚žÐ“ö=­™û!è‰hͦg8(Aj¡Ú[êKr ôDCHO}Æ•, É¢¢>T¾/Î-öìÙ5æXBÃDÏÔY=Þ“CŠBZNÏBOÔ_ôTó-¦Ú‡$ìCC¦.™b®Åm¡'ê=í;ÄúÏ“¬³6 !“äW+ ÿ¹Íñ_ 'ž^|„ÚÒyHRè‰zIÏ|½øÕʱùÙž”!.â+>öBÎmcu´·z¢^Ò3|´ÑÞ²&Ðàê7¿þ­,oýëoÄãÚj¶V×9AOÔUz*õN z0%v",ÉZÆ-t¬îN©‘uë1ûÖïC=S:-Ò“¬ê÷~Ï|#–äæ©($é4Ð’_Ÿâfží¾d‡žúo¾}ÈW“6Ošp  +=€‚ž¨ˆô4Â%¿÷´[³Ñ\'''¡çÐӳʼnæ '`z&Ý)a%ùJͬ“ÝB¢á¦gO¾wè‰úÂ{èT4Ð{ŠuFFF g‘é™ûÐ *=(Õ9 ç‚Â#w¼'Þz¢âö{†w`ýá¹~OèI¿'ôDŒXJÏÉíOÙ#rîÐ ˜ª•+-ÒSèÍÅÎ3Á =åUF²’µÙ´8ÉôDýâ=³^kdàO öµFΓz÷üÝ¿þ›î=Õ×ÝÃï½ô”sá ¹+üù'Xšššò_k”:E“Ú\íð"%Eîáß{¿ÓSÍbËEÄÈ#{~ÏÜwJ06WÕ Éåáÿõ•ä×÷Ö[oô Üp`¼§øI_ã[(ÀêøË±aŽÍi–äLߦ'ºï#z"(=@Éݬ“¢¢Ÿ¡”ÑËi7›ž|ïÐ d[Y°ë·Ÿ »0¡¡g熠BmlHêßUcqü‡ƒ›½ýE,Š÷ä„Aõ/=ýY:¶ºƒ°¶ÿG">„PǽgÛùØCrM„P¿DîÝŸ ØBÃ@O„‚ž)Ñnްw |"f!Ôz:'¸Õ_ ÜI¦õCv•õ# GFFh+¡NÑS_Ó¹UVz¶åãµ…ž!Ô%zª W‡‘^‘uiQuÔSçBµÜÀœý>í$½%i–Å«ú&ÎÕÀ+B¨³‘»A4ùÚ8sÆéI+x¸¶âêiÕ7¯&ý÷ý{þ/Bz¶3ç®p£ßéPgm0u»ê§§ê…TLô¿§óU¶×³‰MO}9$„ gÛ"wýþˆ!l2𧈦c4‰žNü…ÐÓùªÜ›î‘Sé©!=óÓSOL{‚tOänÑfVݒЙÚQ ÓÓî– ¡'Bz椧ÞáhXògüOõsZKã]yÞÒŠ·K4•ž8P„ gú=ýÓß:‡‚ÒGfÆ»y€ä¿Ëñ‰Bг%zf¥Lê:­  ‡ˆê_zÚf !„ gº§ƒ›¡ÁUx„ÚÎû¹#„ÐhjjªÛôäöÓ¡!¸ƒ|ààÛLOn6hU*•ÕÕÕ.ѳZ­Šÿ=BC Á4¼'BµDO©m×AO„Þ³½'hF '='''€[]]åû@AÏ ï)+*÷¯+èKô§ú£ñÔ¹aÒ>Cþ Bõ=ìó3.‰núSÈþüÜLú/!ÔwÞÓ™Ú¹€ ½‚ŠôE]>&yOã¿ÈÎç?M]‚BýKO…¼&-I¢§Žàð}ª~Xè‰ÈÈÝÃJ}‰"¯Ó¢ôT< ÿ/!ÔwÞ3)]“A;{<“RIsª–ëæT+Y#„ÐDî9”oó¬[AO„ÐÐSwš£g‹ÿ!4ܪV«k¹ÎÑø¡yÏŽ_çî¤'PC 4=«±ºGÏöΟ:E~¦»€„ì!Ä=9º¹K„MNNöÜxbxBír ©þ¬#w$n×/V!Ô…ĵýHO„êŸ@z"Nƒ‚š&¹D?ÎR{‰ÛŸ=w󀞈X¬Ÿ—~0Ï¡È×6 'Büœ ¼'B€#KX*_-FÛøa¡'~|y¨¯çƒËCO„BUÌ¡Áêæ² P’7ªP‚ž¥Ð³ÈF)u…ÂŽ‡žAO·<R«ø]žøÅü]žuž—ë•+µç•j?ç^B¦¡è=«ñQ©TǪRïní‡#& ôD¨ƒô´‡OVª&C¡g.]éù‘žuÖ{F™ûJºÏêCžö=£ƒWûº¢[QuÐz2z"ÔqzêÜt1ôrÃ¥6<)ôLÁbêôDh¼§ËWãóÿßWú~ìd_Eî7oˆËÆk¶lܸå*ùTÚÒJµ7Gz"ÔUz:g‚3-4=õ.ãu#ë~ùÛŸÿêwoŠòæÿ)ÍþìÇ¢L.œÅ{"4ÌôtžiÂxÖöiú¨?¼çi<7+ÿï7š²<÷Ê3Сa¦§8~÷­§g7N ñôWGï– +#è÷\±~`þ]ºr°Kã9ùú‰Î‹¯×èÙÏ=ê8=/¯üARò—Ç$(¯¨Sèÿ>ôuIÏLçÖÑŽ­ŒŽì=«M¿WœÆ3öž=%4'çÎã=*Lä>TÚO° t ž>{ÓÞ$zÊÕZ¹žÚhÖýtÍ{G RŠ"£¬Kzš‘û–«œ$ê É¼œ]‡ž =Gbû)¦rgwôœ&v˜ŸÉ]ª…zZ¿oéÙdÖcmØtµ€ã5›6Ô½ç†ÿõo¿Äüñëg=ýžâÍ4åšêoÞ¨´~µôD¨Kô\©÷rª"}¨8ë£m.+ &ÏmçdXQY1NcÏÓ‘‘‘>¦g#„—NókõP4,iÓ£Ò{Ê~Ï/œyôÿçgŸ´éi?ÇS("w„Œž2 ÿÕÑŠžÆ bÐçæ ˆ är›³ýGÏF_gEK¯¿ù¿ç…µ<ù•‰‰GNO<"'L1¿þô£Ïÿ; ¿üuI¼ ù¬¦ö¶t€@O„z@O­Çå„ìýÔO{ûºCã Òû.ÕykxLgèš´~ÿxÏø _Ö]§ŠÍUœ~±T«Ì.F)£oÿÝ“Ç>wÈNéý›žÈz"4ôŒÑù5=lÑÎŽæ«e.'Ù(ƒzê{ï<íƒÈ½Ö¹)ùØ(õ!J²œ»xæ¡Ç:vÇÁz¾è²ß{™"è‰ÐÀÐS¹Îs{o•“’Gõ=‡šOÇ`O'ø<‘xÒ r–¾öžÕ†ëœù—ÙÆS•—^}þᯞ:ø¹Ïè®SlždØmhÊCÑú²Ð¡ÎÒ3'ÿ‰Ë‘:¿f·û=“6·;ìô0\Ïé¤0–«§ý™5R] ‚‰wáîs¯½h@³–aÿÁ·O=rï¡£µ€½Z¹’é ©ŽF,!4ôüå‘» §)ígœs__;¥+&M s”4ÂF_M_§]ówÄÒ5›"€Nξ܄ιóϽòÌăwºmoŒÎ+ñgüCÖ«ŒÔÅ{"4‘ûˆ°~ëT`yŸý¼b(§™êÎäLÝ-/¡V‰9Ðû *Š€æ™Wžyò©GRëè4•Óu&]h=zê}šê¤• ù¢}ŸdmþàÚ‡ô¬Ý¾…‚’'¿x æÕïÛPŸ˜nƒ Ø…ëŒê•6~Rè‰PÑ3é|V“ûêƒuV\£>={H}u èéÒå ÷Ü['fm¡Ì/ÙG‰ù=Jï¹’¾v­9LM¢•Í¡'‚ Å=ö$&Åüžµß_ð€pÄ 'BAO„‚ž!=BzBO„‚ž!=Bz"„P¡èÉZ„R’7”Wœ|î̳xO„"rG¡ÎH„ãÐ!„Úí=———¡'B…г6a¨¤ç¥K— 'Bùé)P™¹#„²•Òï‰BÈ/=eB(=B%éÌ™31;ׯ[¾ôŽ@©(g^x^V( …â)ëF y7g„jýæÆÿËr–¥Ï"IEND®B`‚pygtk2tutorial/figures/treeviewdnd.png0100644000117200001670000002642310051060056017356 0ustar finlayfcf‰PNG  IHDR0ë1‡¿,ÚIDATxÚíOhdÅÚÆ^0à]ôB°Á»È€‹ ÞE\$0 ta@ÐFf˜…ÉuaÂ,fÂ,¼ô”Ö…´‚—¾.$™ÅÜÅÌb˜¸ø„ÚÅ@ ^h øAf!L.ü|yn}]ê:9§ÿ%Ýý{`†ªÓçTÕ9]¿óVUº&rÅ©÷çsùêÔû ‹ú¿ï!„Јê÷DM„hLÿáîUÙÿç;åó ]X\o|yuïÏæ»[8Žž«Wüý”¤žy®îó®ñð?«ïø>aPt€ ¡¸½|óææôîÖ¿ïl/ïnÝþi{yïðÎ/»[Õ™¯Û;¬Î|ûäÞamõû§«3õ.ÖVë;?¾éN}0ûóõÆÃƒÙƒÌ>¸ö¿Ûæ¾~píèîQãèîï¿ÿvØ È…Åwn§pÇqê'7§¿¼ZÞØ^¾ñEe0=ó8\ýè®®nî0©ãÍ'B4êbî’ß<Ö¼¤óêŒ.ïü‡‹Í¢Ü{¹é?¾Y[uóÉüóuyãa@^þ,ž;Ÿ»üÙzc±üîíÒR»Ü·ÿqrî{ÕNrߺ²V)Ô¯ÔÛç¾qÙr¯”7ÂܹÚI¹+…KùëGís_{íäÜ¿?Ú>÷Õç/åW ´²Ÿ=÷•g,÷ƒ'Úå^(YîZå£éö¹/=U¨Ÿ”ûÉìæt»Ü/Ô×ñÜÅòzãÓÛåž_xî‘“s?½}®=™Å©Ï_ß^&—ܬ¹öÔµËÕ·,öÝ)<š}ò zæq»ºÎæcò¿C¬! ûÝ"y/"HóÝÛƒ³ht¹í¾'ƒÓðËí+…þ¡q¥Ð/4&åÆáw¡É=­ÜöhÔÓû–ùa€HENƒ“ß3ÛÕ}@*îüÿ¹F lº¦ fïÜ- GñÜ4hŒå5ˆÑxxÿã×Ú¡±=ü’sOBã+ÏtŽÆ“Àixë&¦Œ¡ÑréîÉím®žÉµJûï‘ú«väiöÌÉWŸ«]üu®ú|NþÜ#¡ÏçäÝ_]u÷¯«»õ4uWˆxl%E£º±à%Í hmŽã…0?˜Í H½SÝµÒÆÐ¨cj«?¾Ùx¨”ƒÙÿÝ~p-6I+`¨«õѨ«HÙÐØ.×P]œÚ;üöIWyšç?ºûkÍ¡+|»ìŠ)u-ø l½ˆã¹ýCc?‡[éÐÉíu®=Wö]h÷Ô©ßPÿdrÏÜ[4ú=sòÕ;Cc“ý¹z é¯Þ[hÂ3~¤A£ï~!4MÚ) ¿ÿ®n4| Ó1ՙ­ > W ×JKk•¿?ZZÚ^¾ýÓޡÆcQ©{ó©k-–;A㥼¥«Ìnû›Çj«ÖÅWöU©ìïnÝù¥:S¨¿WuQl¯Ðè·ždÒPO2Gu&’ÜÞ£Ñf"Û?±1ŠT9@&õÌý@£ß3wÆ…d4&‡Lgáêm©Á7e„7 ¹iÐ8Ÿ{áqÒâÁµ¬€´Õ ýÕv€<ø—¤>%üȶ ‡Š{b€ìl‘N}ç?;˜u+²nÞÜÝÒÙ;ҕĽKZŠ"`¿ ª… n/ûh´sîº:67ÝõñéÒUÞxpÍ"W]¥¼qã‹Ý-?¦Æê;?_·òÛ1úìæôퟪ3,Ò!—Ü~/ÒIî™ûF¿gî† q(Xêöêª{oѨ«G©e²±µ ’Ѩ%¶½ˆ ÏDú€¼P:AºXÐÞÚ„–fTWñA˜ Ètíöð‡sߺ²RHþzXÙŠS›Ó·¾«ÎXôi1èÕ+Ý#!J2:¦9P|0»Þ0ì)*-o|yÕ­$~l-Ôéx‹¡Ý4Ìkx.N©^jgZ+‰ tÔVu¼"]éKnÿé¤é™{‹F¿gN¾z8¤™æê±ÑĬW÷ëÞ+4êêmi£çMjúôPth<~y fª£o¤ —äíÙþAZ¤•<¹»ež‚–Žw8 iç·h¯‰ÆãWoæ–74$ë_Kªª=þÙ¹šáSàœÏYiG§žVÌÛy„.¥ØÖ*ª…Êài nm¶ÞÑÝùÜk¯]Ê lþytæò†Eºn™õ¿ïXdie+-}õáö²Ò5,¬W•‚ ‡5²\á­}®æ)°¬¹/=Õ„_,Wð;ž{~AXMÊuÝ_˜kƒfä’›5WϤ{M û û¾·žM€LÛ3wŰgN¾º›hËvõô\è-•Ò×=È×Zÿ¸2íœÎÐRQ]²·‡6cÁð˜ ]tÕìèÝ‘6 w7ù…€4pjÐ2¼n,·5‚4t…ŸÒì³6°iÑ’ƒ–¢½æ §_ž½Í´yfæbÃ9H˵խö úgÞ^¾ó‹‹ã¿vqã‹íeÅ‘a¬=/å5(Ú.×ðl¹ÛËÙs ÉI¹6kïïa®Zé¤ÜÏ_ßÝj—ë K.¹Ùrõ\µbÕoè¥ÙOo2Þ3—7>ݾãÙ‚–Íé¯>´æäž9ùêá[0« Ý_½[ -#ë»I7…På[©G$É5gÖ„Mq7s ›Ó..´/! ›ƒ¥ëêÌë;J/-}yÕº{áM‘ßq ù¹¾;¬¶Ï­­Þ{¹ñÐýM- Ò¢ríÍQŸ­ì+ÅŸ³Tuu‡Éfyþhׯ]½ Tͯ™Îl䥼-¥ñcÙÖE:¦ êp}@ê¡IïZo©)ÐOêZ êï©Guèîaus v÷Û1›Óš?ˆ 0úWÔñá™}oFK¶|æxÉ-7hÙœokÌ´zù3ˆ:só/#·†VÌ <ÿZ®Ì6È£å6þЫ+ssð³µ5ìxAHgë«3 Qír­5­v’kÏšœkTû»pR®:8rÉíenü» Ñ,?Åò4{æñ¼z)D;@êÑIãÂÏ0æZ¼ÒY®bQ˵®¤×¹¶Ð)–kݹ䞥ÜöýF§×3çÕ£€”¦ávWë¾c³\gÓm}Úéän/“Û}®Í2’Kîðäú€<­žy<¯Þ:©Æ|û{ynϤÍÚ²ÇñqwÈÓì™ÇóêmYZúhº85x÷99?9õÇ?Çñ±wõЧÛ3çÕåÇ~¬\k2ýqÞæ*©ßB¡>ÈmP|œ>Å©¿?ºVé‡û?h²Oû‡dd˜‹ã8Žã¹ø’ È~À@â8Žã#ÈÞ^ @â8Žã@â8Žã@â8Žãòÿ=v‰ã8Ž) 'HÇq|¬9‘(‰ã8Ž 'R딩ϖ7>™--%‡À{‡·²-™’«÷§ÜÄÄù…é¯Î/lNßøbs:ëµpÇq霉²@†ŸªÎ|óØÞ¡vöÊ5W8Žã@zRœÒ¯HÇq9Ö€ÔnÑÛË7onNŸ›œzÿÜä¥ü[W u‰ã8 Ç1­U®Ô×*] Çq=@êÈî}ˆ‡XÏ/üõÖù…¹Úìý¹€Äq}Ѐ©¥4Å©ëGë0·:óí“Õ_ p’Qç¶©´µ¬ë«­q$€Äqg7¡ÙÍC3…ùjþí|u{Y˜ñã›õÚê÷OWg˯>¿X¶?Û87™uë í0¹»uë»íe‰ã8ÎäÍAÖwî½\[½”û†I‹&u¶Éù?ÏLÎ/,¾ôÔ|ÎÓ£n®ö̽ %-ØÑU’CæpÕ+Žã8 ù%Çq@HÇq@HÇq@HÇq@HÇq@HÇqY@öêÇ~pÇq|D9BõMCA"„Bý€D!„$B! B!‰BH94úíðä„dsKäḛ̂ߤa¬ËÞá׿íú÷1LA!yj€T§œ|äîÖíŸv·¬p®¥IïeÓ7ÚÖÍç’ÓÓ×å,ã@ŽZÇÑîéE@Ž cGöK¥¥¦KKk•+u×ܱô³È×|ýàš_B9ÚŠ=½È¡äöòÍ›ÛËó¹ç™ÏMLüé ‹¯<³°¨c\ºir~rjr~­ò^u­K÷Ï\ÞøôÅòƹɩ÷ÏM抹gsÅÍé_lN§Gì\íâ¯sµpà4L×y*û_^­ìŸ_øë­ó *ÕJáÝÛ+…Î`_ß¹÷r}G5U¯æßÎWu¤¢çíe»%“óžùãzž«%U†î#H×’O}znRçÏ5WT}Ó<Äiê’þ©ð#¤ùÜ ÏçüR¹'¡9“êßW k{J+û{‡w~Ù;Ô"W«úתÎ|ûduæBé™{JºJ¾ú—÷òÕô-µ´Â›ŽQ Ó·aòÓ‹€@ `úz«Rzmõû§k«EîÌÖêœë«ë u‹Š¥¬ëñSüxKÝ“ßyÅÒýºèœr¿»O_—£»G£»êþ§Ö# a‡(ÌÞÿø`V%T­»¤Òý¡l×}N’ïrÖº¤{*¬åuÌJáö b)³ÿ:˜Õ}÷ë®Ï oõßÔW¨8¥ç¡PëJ¡®ÏêÿsµÙûsµÖ;®¬¯>t/XµÕ.ÖVU~Á/Þ”V¯YºŠZ>}ÆžR„äÒïtZQa€é~¼¨Î(ö®JŸUw™&=Vuµ—òoÿãR>}]v·n}·»¥& ­+Ôgøc¯æ îþZ;º+ä§ŒÍZ—4O…¢"¥èÎúG§>x¢8¥Ïÿ¬J⿹RY\¬üùëå ÞNw\(Õu}wвOÅZ ³Òú/UYÛ0ö”" ‡~²W€lM7T„àŒ©Pãr¡îwRÉé±’,–_}~±,O_fu¸ˆk×ní©á\uÙáÂ¥n©¡HE`j x¦dÖº¤y*tcW×°§Î;§Ȱ´> KKŸÌ––HÿnúɆ/UÝ”6kÆžR„$€l“îG'ÍÊJ5<åÇñô¤’hÈ ¬ÅÊfƒ¢~ºŸù×j<üùzãa»ã­£ŒÕ®3@j@Òýj¾]=}¬ÙZ¶´uIóTt“uHÁOmÞ÷4ê¾´YÚ0é)E@Ž õî¾ÇÒÃ3h-Ÿë†Ž<úsêÎÜåñn.LÕÅ¡EвY4¿ÌšÃó—]øgPü§Ïªä:Rç~í4ûåÎi±N¬µ;¤ß¹«*›‚SéþI_—,O…fõlöÎ-ƒÒ¬ž½jh¶/œÕë ÒÔ9™ùO‹€—ÜÝ—6}&?¥È¤¿¤ÂŸŠ¥û%<4<¨%ÉeЪÂ6±tÿeÑRe?vV Œ)ø96c2¿e’[ûø‘6i±šÆÊ Z]iV±†ÏLšZ$ßAÇäXüÔ\7™§h&\fK=w1Ùq{-Æçâ8€=¤ß¦Iv_)ØßGºAf[ÿ)¨hW‹nF££zq™ÝÖ(îneý : †Ã°±ôaw÷C÷?Ö)Øà¤ lVg쇆%ÒJS‹Q½ƒ8ŽHÇq8Žã8 qÇq|ù;B!Ô7H„B@"„B!„!„€!„dg€Ôª3ß}±¼qnrêýs“¹bîÙ\qsúÆnÿú4ˆ«]üu®ûéçþzëü‚Õ·²¯\ýX¶ê²Þ¸~´Þð?›+>þj®¨ÜÁ|ª¾óã›nƒåPõ{/×wÔžŠiòÕüÛùªZF1zúûåGHó¹ŸÏMÎÿyfr^%q÷è·ÃÖö¯ìyµ²nò©OÏMênªŽ{‡w~Ù;Ô½“o/Û#è_«:óí“Õ™ ¥gî](é*ùê_ÞËWuÎôñ\úÒ o:F%L߆ÉÏB@¶t7˜:uvJ¯­~ÿtmµ³ÒÙ:\s½qõ`½¡ÎWûÔëHup~Фu‚~¦¯Þ¹±R(ÔߺR¨ë!Dך«ÍÞŸ«)½¶úÃÅÚªºïA~*Öþ¶÷ÅÑ]uåz™hmCƒ_ȓ‰ŽQi•r0{ð¯ƒYÝÝ ÿœÂ›@nwqJ5RMõYý߯£»zõùêC÷꣺«ü‚_ü줴z%ÒU4¼Ÿ¾ cÏB@¶¤ßµµbÏÐÕ ýxQ]^ì>”>ë£(–®EÊ-N}ðDqJ]¤â<¥\Ê_þìR~ŸŠÕqwëÖw»[jÁ2 “ï—¢"¥¨Íý#U*¿üîŽXIüWW*«‹ÒËŸ¿^ÞðçíÔB©®ë»ƒ–}*Ö•V/%µaì¹BÈßÓã­{@¶¦ÛÛzΘ õ7.ê~WK÷ÑÛxøóõÆCÅŠ…¨‹Ôœ>;ÈOÅê(xhP±ÝÝiÈäû¥¶õŸ _öÔ™cçô–Ödié“ÙÒ’¹X~õùÅrèáløºÓMi³¶aì¹BÈS¤–“æ~ ¥ÁÄÓMþ0à¤t¥(’ xù©Pê¦ÃXMèÍA&߯Îb²Î)øùqsÖ¯V÷¥ÍÒ†IÏB@vH½¡‡ïݱôð Z1è:»æÜ®îƒD¦žät¨Ó-â°È&ìÄýù³ÁJøôÛJóg:^í£Å&úlöשY=‹eW ïÞnÎêÝÿØfõ íá¬^g€Ô¦Î©ÈÌ¿ž@kîK›¾ “Ÿ„€ìþ ,–î—PÕ2-¬H.ƒÖ.úàINoŽÓàgsaˆ[ejRiOëSJwKQüaFk7µ’ÿ¡Nß¶Óß/·.Ô`f]hg€ôc5­¤õká5g7c-ÐMiÓ·aòóƒR7©x"\ýK- \TtÀ¨›6ç!9¢€ô;²4éÃ. *¾Ñp¥ºu áêøúu߆£úü  ‡òÊútšµR——&}ØåÿÐ?´¨õŸþìê¦ GõùA@²›B! BH‰B@H„B@"„!„€!„€D!„$J-6ÚE¡‘dºÍ§PSúñ¼Øþ…ã ýP{®˜{6Wô /–Ž#µ›G(í¨þt\,½—MßxØn‰öé²ßÒ¹ ‡úíÓXúx¶Õi=™ÈSdÖ “{¥ÒÒGÓ¥%íó—&@ö[áÖZ±tí Ù¿gãlê´žL„d_©ó´ŸöÏÓÞ~:Æ¥kgGÛ÷QûêÅÒý3—7>}±¼¡}5ø¶9}ã ·gdÄÎÕ.þ:W ýtíS¨óû»Òkûb÷.|OAÅ:ÚáAå·«ì«‹×Ùä:Og€t;¾ðxºÓ´XuæÛ'«3Ú_SgÓ6ÔªQÖû›¾œj+ÿާ>x¢8KµU}çÇ7ë; ‹/=eûGÚñr¥tVÓ^µ¿ð¦cô$è'ÎÕzz–òÕüÛùªŽ×Jš'!9”€tÛÚW]]’Òk«ß?í67ÎAº3[שsj_xu…þ¾óê†ü?þPWåwd±tuLêúýîceS·«ÎÚßöYÛ$ ´ú¿ö¦ÏHAÅÊà¶¶Y-£6Ißb®îgs{jmC-øùû¦»¿”3M¶•î‹ §Ý6üÁy÷’¬5íUûköTWQÙ„C½¸´Ö×Êà2öd" ‡~ëì:¤ý¨cнw‡Òg…¨4éê.…Á²Pãrë1~ÙüîUS¥ÝýµææÕ›úóIé©BGúq­¤K¨HßbÊUu~ß]WneN;+gg€T-Ü&ÆI›ye­i¯Ú_Ѷ+­=!î©hζÆ{2#5Ù+@¶¦Û;uˆ˜„7¿ÃJN÷ãH!Y¦Ö> ý#»¤ê;Rƒ„êdÓ·Xié“ÙÒ’°¡,t@8Íýí´œRƒØ.%)ÆÊZÓ~´¿î¾fÛ=EÇ™üd" d4݇N𡱮SCU~<Oo¾ï_(ÍüÏ…’†O˯½¶X>-@v™%µ˜ ®9lÎîïéEI¤YkÚöêÂqž­c!IO&BrÄ©÷èðí8–žAëú\—ÔŒtuR]›–E„]^˜îÏ8jŽM3‹ê^Ã8£€Ô,Wk;4¶¬޽ݜ»ÿ±ÍYi“çöÂókªxÅo7aÀºLw»-gz@úsZ8£«*þkSÖšö®ý›m¥9H=EºZ°£9éð%#|2cH‹?§K÷K(ˆ*ª ‡=Ã2h…¡Ùü#céëëGëpîGQ‚Þëýîµ€TŠ[ ÒúèØ*Jë:Ó¬¢LÓbƒ–#éH¹[ŒÓœ[M³–³3@Jz}ñWÕÆV±f­i÷í¶•žjÿê.²´’ ±'!ÉOÍe@oé­?‚‹¥†úý¥¨2 ºÈ²9P<ÚO&BòLt÷~w“&@¢þIªŠ5ä+4j¬B2O&B²ÇÒÀTÖŸ ÓÜ’:¦4飤ÎZ õOB£@èÏj ­†ÇáÉD@"„B!„!„€!„$€D! $B! BH‰B@H4´b`„ÐØ2ÝæShÜ•~“/„€ñÝš.-i7¾4é@v¯Qúáx¾)@vHíoçïϧøtŒK×>…¶oŸv¿‹¥ûg.o|úbyC»÷効gsÅÍé_¸=#ÓtFsµ‹¿ÎÕÂA`?]?'mõ­ì+Wðª.Ú-Òÿ¬~rZ¹ƒù”v@ŒÝåj7Dµd|Dính[ §ÙÝ0ùκ«ÛmëÅùjþí|UgP,dÖòTö¿¼ZÙ×Þª£ZR»Hê ‘‡Û\k+lí‘©«hãe3|¢©ó»§QWo–Ö?CòS¾ Éñ\ú k‘æ~¥ù! SÒm?k_-uJ¯­~ÿ´Ûª7kéÎl‘ΩÝÛÕéøÛëkï§HJQ×àwaº¶Éõ7Lt-íÿ®tm>¬NmŸŠµ¿6QÒ1Ú#ÂÖÓ~îX«©î”ÛØR´›„ÚY-œþκ«[÷*x´ÞAj”GhÑ ¿Õ¶ÚSŸÕÿý–tw\/XÍM¹ÕÂ*§¿£®¥×&£—ÕÂoa‡;sòSµ íÔI‹ùµPÉÓܯäoB2 ý/|kÑܾ3@úñ¢:‚Ø{n(}ÖGQ,])>Š”[œúà‰â”:u‘J¹”¿üÙ¥ü ?«£ÚÁm½ëãð¸èHµ¤Ÿ«kù¥Jsgw·n}ç®.X¦dgåÑý#wuk1¥—7>½¼áÏ™©Í…R]×w ûT=Ç_MìŠ:&ŒŒÃ§:kzuýZ¤¿_Éß „dWs½dkº½Ã†àŒ©Pãr¡vsaº^aFoÍzƒÖ»¹: L鳃üT¬Ž`t÷1é_-›ÔŸºÈôwVºúÚ=I€ì¾<> ýφ€,-}2[Zœg‡îÉÆê®ÖV«§HÎi™µ ý¸ƒéïWò7!yæé£å¤C…ÀãÇñt“?x%8)])ŠäÂÞA~ê¤2i€®³ø#ùÎúñ“ßžòd÷åIHÇγ>ÕÔ #õØÜjx†¬eèÇL¿’¿)ÈRï­áÛh,=<ƒÖѹ. -¹™¡&HÔ•øàIN÷‡:ÝÒ{ß»6fkðŸ>ý¶òç µpã`öþdzêÔZ_#4ƒeêJáÝÛÍ,;^Àg°’ï¬æ´TZÝ-QÉý#ãs—'= ÕJ:§¢"ÿil|ì…×ò᤹XÕ]w$gøTg-Cx¯»o±ô÷+ù›‚€ì1 ý%þÌV,Ý/¡º mi¹Ar´¢ÏOrzë ÕñhÌ­25©´§õ)¥»M)¾ñךž´ŠÕŽL³2ÍÕ]ÓÙ|0¨$êjOZÅÚIyÒÒ“4(ê—Ö-DjÎnÆêî^k¬^ú”^hôdúÑ[ì©ÎZ†ð^wÓܯäo Bò”j®›¿$Ó[v8äKG½“uÐ.R9yàÍûÅ7ȤÿõN“Žº‘èshQ]­"-ý­4\÷‹o CH eý±.Íå¨#H“Žº‘ÿ3 þpŸÖd&ÿÙ :›÷‹o ìæB@H„B@"„!„€!„$€D! $B! B!‰BH„B@"„B!„!„€!„Î* E¢î@"„@NôA!„ЈD½€D!4R€d!„€!„€D!„$B!Ô/@¦_­ B]™!„Ð2†I†XBÈL2‰B@²H!„€!„$€D!„Ò’Ý<BHvó@!„â€Æúç=d÷ã¿8Žã8~v@â8Žã8€ÄqÇñR“¥8Žã8Þ[׌àв·S²þuBeõ£Çö×”Ž {û›½:'Žã8Þ?ô¶Çÿ*@HÇq9Þ€L¿í€Äq @¦ÙUc¬™u_.‰ã8>J€ìló©dgWHÇñÑdÖí‹G±ß»8Žãã È ˆ $Žã8$C¬ÌAâ8ŽHæ YÅŠã8 YÅÊßAâ8ŽHþ@â8Žã²3@*¥{÷¯Û«sâ8Žãýð~ôØ#È „B¨§z@ª8Žã8Þb@²Õ Ìf:Ì÷à|Ð`z›’¯.Þï%´Noƒ¦·8€Ä$ŽH@âÇ$ q‰ã8€Äq‰H@Ò8€Äq‰H@â8€Ä$ ‡Á7§o|±9=]sX—a©€ÄO £ÔŒ[­U~Õ@fðòƧ/––.”ž¹w¡49?959¯:NÎÿyfrþBiæ.”6§¿ú°²?,ÊJáòg—ò*çîÖ­ï¶—$ G»¨ìþzyãB鯷Î/„µ8¿`é›Ó_^­ìŸe@êÛ][ýöÉêÌòRþúQyc>÷Ö•µJèÃȕ»·W ÊML¬7®¬UÜùñÍúNuæ›ÇöËŸÌ––¶—oÞÜœ„XÉsÅÇ_Íå…ú— u‰ÈQíª3_ÿ¶w¨R§®­7ê;?\¬­ºÜoŸÜ;Ô·f{Ùºò³ ÈÎ06@Šn!ûÚüžziéË«»[¡ õШ.k•+õµJ7о KKöV¨ºè«ÒÙ×£¶joj‚€äß$©‡ÃÁqÿ!v_;Cøõ87ùÔ§ç&u¶r¡ësM3š #‰3 G«°oº†‚ÏMN½nRVd«Kú’wSk•YˆšÏ½ðø|ί{XÂcY¯¥϶\\oô#‚ @êÊÚɆŠûšÙÞã|ÏWÛß*¹n§Í´ëî•¢ÜtoÄ6¤‡C_¥¯UlIïS£Úè[_œ²HÔ¢± %•JÈT”\ßùñM‡Øô%ï¦Öþ·5Ø1Œ¥¿–ÆÏ\9›} €ì ‚´7wÛ -}=lÞb½¡…E{? ]·MÇëñÕ@ÁÂâ+Ï,,Îçž{d>ûz¤¿+…wnØlJ’Zßd$>Îä¨õ1 0.†³ke-y7µV}Ó[ÃZ§¿–ŽÔptÿæ ÇúJ¨.†–KùξZ9¦·›ä!нÃÛ?ín…oR1,e½z“ÒUÚ ½Ú奼­n8€½ Ù-Æ2PY9³–¼›ZÛ·µ²¾ §dúki×Õ±AjP@v°†Í¾n]®ÁÃeÛ¨·þï„І,4å®÷A1w#ìZ§¯¢?‘® gåêo])ÔïMúÛ©²i %éëÑ|·²G@â¬b@f ¹:së*V»ºV'øS-éKÞM­Ý‘¿ª .ÝP§6ñë¢HQx“õZþKV]¨,nvËdGíÅ)›ânýû!ádañ¥§æs±ÉjÿÔ´¿FK7UM¬#˯>¿°¨wåºu§6ä¢Ç(ë×CÃ&ÉoÁzŒÜ¬Fûa‰çßA{ ¬êÌZÔÖÂrËáߦ)y÷µv«X›3£:r>×\ÅêÖL¼W])(×_Z˜þZÔÕ¢­Én$ÎOÍáÇûÒÛH@âÇ$ q‰ã8€Äq‰H@â8€Ä$ i |¸©Sãx?@â> ùFàýîmzÈ „"ð€ó-@ƒQ™¼Od¯œ7ÇqÜ÷~Ó'UX¨4˜ŒíÙëÌ¿#„BžúAœ>14þ—ŒéÙWVÂqÇ[2ðtxÔ>&ý @â8Žã£ HŸw>ÛÒÇdËþ¹~½ÇqÇåƒYãó® “GYé„BhT•LÀÿéæ­ ir*IEND®B`‚pygtk2tutorial/figures/treeviewcolumn.png0100644000117200001670000001645110050344475020117 0ustar finlayfcf‰PNG  IHDR½vB ÙSðIDATxÚíOh×öÇýAý-¼TÐßÂ…,Þ[8Ð…Y¼šWhE»¨ Њf›,l·‹Ød‹,^P jA)$¨];‹`uì,‚Å+¨Ðê" B ê"`A ö"`-²ð¯ß÷íeÎèÎŒïHK²Î…œ¹£¹wîŸÏ=çÌ̹©‰â俲9È™‰tÍû›2¥I“&MÎÉ0äôílçʆ08òW¶üñA©²so¾¼z&{þe6Wh~wm{w¸äæºÊã!9Æ”8ÎÇ¡tI"F¢'åé2²ÇBLuááÃµÌæú÷Oª ›ëŸW¶wŸü¾¹^›zúj{·6õã›Û»õ¥ÿü­6ÕØøù|}©±ñ˧æþ¯Ÿ56ZÓ¿]oî·¦[ß¶¦÷Vþ¨Bî=Ý[ioµ›í­ƒƒW»~ÜdsóŠ“*U&!%n8êÖ2ß]+¯VÜ­ìÍ8‡ÒÛ[,RB']Ú 3EþðºW¤‘µ)oäÏ罪<ûÀ“¿|Z_jî{•3ò·ë”Í}wÜÌL\¾ShæÊŸ?.Íå^ú¹WjÁ¹¯.Wò«òª{®þÉåÅü\úZ+8÷ÂäÞ8œûÑ?çÒ‹ù/ß¨ìØ¹gK¾=—^®ÜÊç¾:ßX®|=½– Ê}÷T®\hÞ~/(÷Lö×råâä7W¦ÖñËEkå²òà´qÃɆéäð£çãV:¯&¡“’”ÄMÒM@.ºáæòâd¯  Êh šëínA³˜WÐÈÜ{óÝÿ64lÉÅüAíÌ‘cㆫúÑLu9ÎÇ­ôÜÐ@é¢Zu4MК~ñÕá¸ápùüq°¾Ó=hf&zMð?W'hÂ0 šÍõ^¯/UvÜ­.šÁ"h Ío>Îv…ê~{«÷+ÊË•àv¦.¤Ý rœG—~®~þ幺-g&(ßyÍ–3”½—Î{—å†Ý»,ÝåÞ©¾¤ü.aT…ö[XȪ¸t€¿9:+Ùšv7¦¿~ÖšvqVÕ¦~>ßÜO 4‹ù0Ðlïþøf}ÉXÈnïÚ ÁäYËðœÒìw×ÌD’S‘Æ]hÂôþà€m²¹þôU}©5ýGuo…£‚‰¾ôckš-·\ï÷V ¶F7uFkÀD j .3Ð…ƒ©ÃÇyA#ÇytéÝÆ›_É”÷ÒqƒÁDGQ4hd¸€FJY º—ÜqCziv1½]š5È#”ùÆç Mê AúNhèÁ M´ Ã:ŽÍ}k0¬ Ñ þ•ïŸlï¶·PgÖPê;ü›ç»Vý ñaœ‹H€Nm & Ú­Ê¿7ןü^›Ê7æ,WÂ|RaåJÜØ½ã xp‚µ?ö`˜¶kp5ΓçÝͲhÐD/çÃPzn8Ô˜aw@t%\@33ñî)âÆTbo%nŒz óŠf”·êp¢"·Ðd.%õcµ>~^›âº-F4Hý¢¼zÿææºMqšHck;Ç3110!©ÒcEmo½¬›såËwüÓ²¹ÿ⫽êA4X¥mCƒ )¯av¹…æ­Ly•Ór-óè§Ú¯Àš°=¥>(ë°½ ”Ô—~ù´¹Ï#üÛÓË6×Y7Þ;1Íö¤fû*4Ë«în®=É ¯ßllØ=è×n<¤šã¸Žì;é*¶ÛÊÝU=Γç½Ì²ð™Å…¼×Òyïý KÅ }…u@Ü&ˆ ›õâ*ÂMçoåÅToMcrnïr ñ®yžL•f¡dƒW0°`)agæWj~/Œœº%4£ÊŽô…lîÒË• ©H³ ŽU—r©íÞüZ† yï<îM¹ƒè•jÒÍæ.^]ÌtžÞ!õ8˜® ôN¡)ÍI‰lé¦ ÇMçqYÙ¿R«ë*vçýçÑ¥ÛÆ‹KéavCÜÒå½÷ 4,=7X“EÕôîˆ1 é,žë‡—7´·¥ä ±CáÆËÅj¼\Ù[ñt xmó|fÄég ~ÿds Çïß4ë'Í®áþ3/\€é³Hž931ÿX¹Úð¯ØœºÕ˜!lgN*ÖPÞ‹44 ×•»–yüÜ_®¹¦'|®Ì:PB¶wxÆ‘&´Ì`BâÆÔÍkyš0FïÀ©ÑhBB¿0F.ú}oåL:Z§«Ø`…W JaÍý¸ñ÷{{Ëhmcƒ}!ܸŽóÞcóèÒƒ"^é¿sÜýÞCp³·â™ÇÕ ÜhlÜÐêv‘aÚÉÅšF/ŒÄ²¯šR ω¨ ¹œILP×5)Íò¦=Ì(L*yGö”žÜjˆûÊ•9½9¤SS K‡ÆQ] Açù‰re¿vp°V¼2ž…m®ûkë¹%ä½0±M‚î¿â•í{g¹Ò—$ûWž46ø~ÈãnÂÇyyõ›K³qÔµÌý›k—q]ºíšpÁëÐ{éI(¸AF\Ò÷R Þ¼7"Q2›ÃС•¬Ý  áù6nk\¶FwPÌôë”|~är& húZºŒ1âèy!z°þ§&ΤYgO9÷Â5^œ¬.à‰’,&OuÚ™©?D=‹¥Pï¾x¸ðPšsí^ ÚüxÂqzޤvc0\[ƒ³{m¾¹N‡ºì;j ~Üxµ‚ÑZœ”½/¥ÁMÔ8;Ù(³9NøÃǹKéqõ©þ–žÄ½à†Ù|=9®JÙh¸KÜ"a’ƒšBe' 72—278NOŠÉå‹Þ0X`Lm®sªóo?¶:Ϥ¾€#x^ã•‹üŒÙbO'ó˜Žäżgàx¸ÁT„™cÏå‚0¬L¹œ¢²Dx4P“/ßð/ç{¹2àÈßR#“NnºÏy}º«ù7=5ÔÌK¡0ßxæJoÑÙ’çĵï‘ÇÙƒ¬R7”}·\ñ»Š÷V<÷°ñŽ…ޱèqÞÝdó¦ÜaãÜ¥ô¸†[KvBwwá­&a»Ú• aaËk­ ã~Ü`­¶Ï Ón(1×2œ0Ru§“’SîX¬Û˜NágÒ-jt«Êx9-éñPb\¼ò^¤vÃÜðri4yåÎ¥q/Òj6{„4pdm½:CK‚v#õy§õ¥gà&œIÔJ4˜çzÆÄƒÈ#b‚¿¢éd¦JJð¶Kç“Á|áÝ Ê5× .—nZ^YšZf*"×üÆ s}æò13Ë‚‰dÞ]ò›ohIÞ…i SòLc(Á¿&¯,ïÑÓnL.Ï—÷EE^Ùn+å b–Jƒ›AŽóñ,=7æ¢GS‰ Üxëùa˜è-/Î…åBiT.¦¥‹É£¹n¹Á½ïáfpã|†Ýî]»Ýû¢,¯Þ~_áÿýÑ™l*õ?ÿÝ:’G˜«¸‰¡Ýð·åÕ¯§ý ÇH¨ÅÉ/ß0//ó:Œ$Ö ,’À¹æý›•áÔâÞoX¿ Cm{Ñn†ù¾¤\®\m,Wøñg‰¡iæÐSh^k-W71´›°îgÄ0ùM–ÝLÅÉ' Í“30d´Ù¬•o>.¯¾uòôm˜6^ls5t vj¾qñj¾á2Däñ·NNþ+]ã^‡%º‰ ÍëíB3]û¿+éE=޵ šXÇÎÕ§_œ«óˆ&rsýÑOˆSóö³³%Ü×™lº–¾dê–n¸›â™,VZÖŸ%²§âö޼;¶É\úÒþéÝw3ü÷E ÈCI¡>ŠžÉøÁîcÆžGÜ4f.Ý9 (Ùl™c¨Ýps‰\ù£æÊì$nFeN36(!ÅÉ 6õl±^ّ䎛î´ž)‡H¡ HÑûT[ÜKeõd—ó8»÷ˉÁi´vݳ¾ÄɆIhÎ!òø[~ÅÛ]ï J»ì} uãùd¶äŒ·ÑcÆžG¥Y”K·€=V±¬&ã‘ ß »œûæTPX´h>Q§e‹AÍ}øv66àä`2CgêßgK\Ò¸±58 ÓèÁµ ÒzX"¢ÿ{¿íŒ±–n84ÙÚØ ~-#eºÖ ¾¸½ã^Ûþâf¯›™ƒ¾æ™ü•û˜±çÇ!—v.À<žÍ½‘¤×ÙGF»a7÷ns²Ë ű"¹w<#§2’kÒ¸¡íMu”+dnÂ뀩rÛëRr¸a‰šQo$ûÕ;G£Ý ö¾zÓn¼;r3a󈣋n6Gí›­×É=’¾wÜÐf¦ÏÂLã÷Own‚Õ4ÒƒcCDvpw¸‘O‚h0Fß—ËСLJk¬Ôn8\’À [›%rU¹œopé[Å*õ›)}«8AI½8éWõ›)•úÍÔXK„\õªÝ¨TíFqÓgIåQ¾u­ÚJÕnTßo¦ôoý»»¿7Š5¦Tªv£rиáß*UöWʨ­1º=Ø7ܤ4iÒ¤)2õU»á9G+Q¦ÊÁȃƒ^¯/©]©¸Q©¸Q©¸QܨTÜ(n7*7*7*7*Ç7›ëŸ‡{ª™«¸Q©¸QÜô„ šÖtëÛæ>£Pò3ùÞ¡£“Pq£2 ¹½{û=3CG7Lí­v³½Uš½ý^¡‰˜/üûÞ|qr1¥f‚Nu§ùÿ÷ð!*ÍP^ôs„¹:u3nª 7N`ç&ÄßóGÁæŽ2ÜÞ…¹Ú(4m¸Œ$nöVöž6÷«¸Ð”Ðáü¶8‰#ÅIù7³–$ß( ¡§Rn”JÝ›G3½¬··Œäæ2R¬Nà㆛Ò,bœa„:L¡öÖ“ßkS”<Â\œ¹\ܬenœ(NFŸ¹·òøymŠˆyí¦8y+³\™KÏ?È7´ñ\ÊßykxòÝSæo쌃Ø÷ïŸ>WG¼‰¢­é¤RT÷VÌ:/ ¿ù•¬)wJ@L¿TŠ¡M^Qf©+!Z*…øo©7–±ïžúƒ¢³\D‡Spô7{+~BpU¢äóÇá(a.Ïä¯ä´,¯"Rß['k‘[ô¬e®·ýµ6uo~-C]‰1ý°b^kùÏ4d¡OÍL`Éæ°ûˆËä,¯¢¶o”»•¡D”Uhö7îÚ{ 7ˆ5¿½‹À—h¸Ó·ÓµöÖËúÞJsÿÅWµ©ÆÆ¯ŸmïÖ—ž}P]“µ©ŸÏ¯e°ŸŽÙoÓ_Š$1•j}Ûš²/¾B®¬)6*3@Awmhï)ÀDI Ý¿éa‘e J~ý¬¹ï¿&áÅ·¼2Óþ†_)DúƒBÁx ¿b bKäšàRÒ°âNìÚÔ7¯e Í‹WçÒÔ†¸òSÚª/}wÍ ÓùànuÁMÀksýV¦¼Ê‰Êãõ%üí‚”kîˆëpô¸‰ÛÃM¾qé‹\ÙÄph¢#åZæáÃÒ,õ£ Üxû7¥R¯v£†,s¥.#k*ub‹‰°`.ôÃ뇔ÜÍ’Qþå5%˜äñ'¿c5Vˆô7ÔÜÔþ§¯üºLØ´lMSc¢÷°à#€€$„¬÷$÷¨Â5Þa®¬õlï~=Yãj†Ð$$"Ý œh¯ u.wÜÄmলÃ=ú ×ì­¼¬·¦]4)q³vSÝi7.L¤&žICŒ¸ÁÆxA’MvMÅÍpi7.žçÂÆ 1N¶\ùüË™ [V¾|ï1…]Ó7ô7ÑlÉ7Þ=•ÍÑ‹‹›~i7q[`¸áž„p—fñ8Ûk¸‚††öKv÷Ïw#Ñ µê/lþ–îçÃÐ+n†Ñw'q˜ïF¢Ø2:VoN$þ–º†ËTï7û7Íôkî?|¸¹Þû¶¿¸‰ÛÀ x—fñ|ª54ؼ¨ŽaÞLÑqödŠgF#;û7058¼/›foŽÄÓo×;}7Š›A=™‚÷-êÉÔb>Ë•O.Ï¥¹EM°ö$}1Ô5¤W…Æ—DC/¸!à$ìÇÅ<õèN  nâ¶ÀpÃí»ZÓTñšß³¶w·wŸ¾ªìDK>—o帽wCÇOÜß»‘ n0s>ÝÀòL…O—x&%1ôè'(ꊛA¾wCÃêléôí8ïÝøw¯Ç²Äóé•gr:Á¨ñïQe\Âý4¦8¥Í>hÜ`×gÝø<èèŸL¹·ÀÀÞ*î%ÅyͯÛ7“ƒÑ r\Þ*CƒJýDSq£¸QÜ(nF7|\-Ç*Ç 74Á¤óX¥âF?ÑTÜè¤UÜ(nT*nT*nT*nT*n7*7ŠÅJÅJÅâFq£Rq€›êÂ÷OºµïÑOŠ•ŠÅM¬œSk_lצøI$#’XŠ•ŠÅM Ü ¤V{+Z4ø$²ºÀï›×tt*nT*nbãºLuŸtæ¯æ!:3çM•ŠÝ#Aqã€SˆnSœD|âln¢ÈxÀ.¸a¤û6J†øTy|pÃÞåWÔÑç Àåa¡Æm„cˆD½ùóŸ³DàQãÇqà “Œª§¸/ܯ_p„aÃÍðì‘p¬p4Ý↑h¨ÙŸ\Ú¸qÙYáï9…ºx„!»KåzAÔe)¼Î/Ÿ66G›lnúŹ:wÁŸÂp㲯À™,âQבƒ9 ÍK_Ì¥e)¼Nc#*Hø°í‘0æ¸,äS*7Ü<û“œ{*\¸€¸ga¸qßY‘ßüfÝØŒ ˆÁíÿ-¥€ nv“{*äÊðý…áÆ}_ÆÐ“fÃt1¬Ô¹:$ù[ ­=Æ7ÀJ˜ŒBn±boðÂsÜwVà™"D|LþèÅÇ}_>™ Ò¡ø”Š»ªu>¥•=Æ7xÍOÊí]n¢o«Ô·Šõ#§=Âá.[®eðˆúL6s_q£Rq£¸‰À 6êíÇ>S¸¾âF¥âFq£áµT*nT*nT*nT*n7*7ŠÅÊáÆ¦ÑNŠ•ŠMŠÅJÅâFq£Rq£iØqÓ]RܨTÜ(nºÄKµ Gq£Rqã–°ɱÂÍ\úz=.^]®Ø2.nΖ²³±Áø{HŒ!€¡ ßTܨTÜD¥ÎϘ‡;‘6IŒšÒìw×”¨Sv‡›è¨7`¾ºvÇMtbt>ÜŠ¾ž×yÝN †Ú²#%«L7‡Œ€ÿÆâã¶BIOàÍuŒŽd—ó]?å©ìØuEÜ„ŽDOnäIòÔ¸¸Éæ¼W0¼Oò¬³[Ü0Ч̧QÆÀæLÄAØõx>»°[ç5R/WPÙ=n8~lÜÓÕl”ˆ1mÈsw7©XŠûÂjîR7Å͵7”2* „Ît+ƒðH z­åEƱëÎÀ ŒæÇZ„&Ïñ6á3‘ý®Ô×§T&‹&n=dÎÁ¿*Íb p_³BÓöõ¹¿«Ùpc€ §™NÞ`¬™å Æ@¿pã®ÝÐ)A—ï+]CÓÊ"7sÜØ.gv áRše|<$|G^^•¸‰^ËÆ h1€H:þ_qkî£ÀZa¸aØ-êG2;cªv3Œ¸iîc p_V"€Ñ”ä¯Îd1êKØ$ÚŒûúoÄ ~$7&ª/a $­Ý¸à†=¡¬¼;"’óëâÆ4=â×Ðì¢ÝP‘Œîçô†Îa¾FçcØG [g‰öÝØš‘<Î0`Š›aôÝœœÁྫྷ ¶Î­/Øš‘.½à&|Wn_ãŠb‹`e´))éÃâ¢~¬p#ÃkùÔÙËö" “ÖÜA<¶vƒßvëg‰Æ ÅÍpj7®†m4DãÆ†H¿pÓ/톶q“+#l»-9›Ž!n$8$”ÍA[šk•[*xT}„6Dåë’as|ßâfÜ}7ン0sW̲±pK_ ͨ  HÉ\#Í+@ÅÉ' Mº¸Ü´›Áâ†æ›î65¾¸¡ù& ´£Ä —vú˜ò ì2Bû€¹\ò9ãŽ!nª hDÂb. wÔ¹lÎHxõåß°±g&èíç‘òêí÷Ê«|qpÃýè–¶}=*?n°@bOKŒÛ×s4O¦Î#âÒ¸ºa1CÜðÆjS&úæ:ŽT(©øñfþÍFÇÊéç‘pܨwÜhë÷ñC<ퟙÀ†ô±ÏL¼{ªS¾órqι:åô‹³%ʳ¥©ŸÉò­ÅâF“â¦âòÆMï)üA¸JŦ±ÇMÒR'¡âF“âFq£Rq£Iq£Rq£iDq§_’ÂUªT™œLz.G«,)ù® tÂbâô"ye]4iJ:%1í¹š¿8Ãè]p“„d…ì ¥*Uªì¯Ôì&[þâ _w¦4_©z ’âF¥JÅMÜ-Aã#Œü„Žžä$ß9g~œñ±ÄN8TwŸ9sΙÏ3ŸyÎóY'FÿY Tè „çþIVGþµ÷ Ò‚€*7ˆåÔFÅRƒ -(‚¤Ê ¢ñ—‚­$í,dy}«èg4~k¬ŸeO鑱nC9#Ï2敱’ýlW³Ü1gIÚu/·•÷…í*—{>ÿYkæóÿI›ÿ¥öÓ¶KŸEpÌF¸œñ@TU&·É2ëuÆÕ‘tùñãÇ?f¿•!uôÛçSG½g^øÎ{f¹ÏűàWpe°nݺuëÖÁmGbóÛ’Èú“]>±Æõ”"¬7€òoáÖýª¾Æo+»…ÀVÁ-Ú8TB§JÝØØo å@uWjiÉV¹cRnÉÊúÂç?Ÿÿ•ö“9ÿ˧°åŽm¥W¤4Q6–_GƱ i.|ýS²ðu¹C\ 2ñ™×2q—°õœKXÉór,²êÝ·²ª;°ýw ÖmYËZ7x…V¸ i4~ôe‰å˜•©æf_n ï¡ÅØ"4ÆúáûO3û Ìz¬Ê Òö³Ü~¬[ÎÒ¶¥}ˆbo³uy–ùÀ~]Ê¥b|þ—¾îkiþ/‰\ûó¿üw,׋%Æ\îCÜ.oþ³FÐ͉õ:»Êù¿_V _çå•%Í™øÝ·2q—Ðx’SçÕ‰¬:w"«º[Ïqê¼RȪ¹±¬êiw_ô´Ó„ì¨æ51íÛjnT´¶ÑöXõÅú‡›vûYªIù$€e´«}Q®ˆ¥z©m=ΕԳñ³òZËçÿÚ›ÿtŠªÌçýÎÿr Ù(¸vÛ*ölÜóTe—“ƒƒ£Þ@Ò –mrù;`þ*Vû­U=èXëAév’±cèuêûbÖ~ZIc/¬úb=þðG™^ÞšRX¡õ”íÐj³¾ÖÆò´–Ób`Ö}7öÔØýÙiÛÖcEŸ·|þ[õ¥œkWûùov]à6Ÿÿµœÿ¥Úo=Ù¯u©™`%Ø0îy ‰4jo®DšÞsGš†'>èžX¾³D{Ï¢½£¹ ÇGsµîñ“…qÏ¥KãžÊ>—£ Õ”p Žn—¸õÿ&à_1í–I»A¿¥ÝÞŒ?O$Œ?ñä~²fó2úMª6úíýÚºì%ÍÇÙìE'ËmÏ8æÖdÂ<~l=zfWœË1¶Çšˆ“5³ÐA–šYÏNÛ¶+³Ñ õ}>ðù¯ï;ŸÿOòü§­Yl¸’ùOŸálóß<ÒL+Y\r”?öÃåü1`‰ËýW¾¾Ü·;†öýªch©ÊÃ×ýÎÄægÔÑÞÁæh¯ =ã¤þÎ7Gú;WãYæý¹ ó~UV³ªL `hû—î¼ßÎûëYrCÎÆrÁ2Û+;;Y3K#àߎop×ÿö ’²rÕo,û— ìõ³¼ª®¦Õ´„Üa=Ú,g,·Íì­*K«³d©Ÿ½žrç6ŸÿËÑr?Dm濵þÕL†Á‚òf`ùÂŒ•žÿ•ú]”?rlc[©S»xƒå,å´Ä Ø`éªñ¦nMDÊ-ϱT÷L|8}õ`2ƲŸ£¶€Kõ×A#L´¸‚y¨Ô ’Eþa},{ýFXǺ¬÷[·ÄºÖcÈ2ÚÖ­e9Ö\ZC? Km,cn=ÖòÚY¬ß~°¡õua)Ãç?Këeþ—0ûÙEæ‘Hºø%êl=ª+=ÿÍæñÚRâöø.­<{DÙ)m¿uKȳqÛf¢Î4¬Úå¶™]ZSn”ÚX?ûhЮ ËX÷Èxl¹cÈçÿZ˜ÿFÙY[)ƒ$4'Žå)bÍ õ>ÿ­uóÆÞie‘ˆX³~ÌÙÈ1íŠW¶M‡ sarlmN¿e¢ÎÖ·p–ÈYõ¯¼¾[;>Y¹±€<§Á—¶‚C/¿Ð1ä>Õ…û!íƒ%ÅÈÆ éJ¿r + ·á~jX}=©Ðw{S!£ï„*æT9«Þ=’U]–·]¼~lÞ/+7Ÿ©4$îù ¿¬\‚ÔãxýG øÒÖ@и?«Þ9’U­{WÍõªOÀyÈþ¹g_Ú’FXßìYâdìqDë3VF_hgaia¹ÛåŽFe7ÈÊÚÆ^›uÌ’…êa=2å/vº`­-—ÂZU¹#f]Ÿÿ´¾—×¶R:ccIcÜ”å¼Õγv·­ÇÊúÛ¥œÿôe¥GŒmyhyóŸejùôºÜm³G oFåõñf¸ýúzAQeë϶àÞÚ‚ LÀ£¬kFeáàš&CÓ‹$58ôÒÖà'°í¬'à6¸_Ô{ÓµI‚Ë&¥BÓ{RÅ’P:÷9àžŸ‰L…¾Ý‘ iÏBbA úz:Ót¦ýÉæ{þ$ù-¼C{wu ‚/nDµeÕ쉬jÝ*Ú~Øw´çi{Dl±Gì‘ ^{ĸÒzëÞY_c{XfQ­>+kárô‹å¯¦šÚX^ö±¼¶&Á~ã/÷†j<¯uT¬Üxí\Ö£ÁÒ÷réËWV{«È=,u²ÌöºõU eM&¬éŸÿ´sYKßWbþÓ=¬âšl¢óÒ—*š×L'îõ2ÿÍÜWJ÷‹S/=ÿiËÙäô¨°Õr@ÉíŒ$ÄÆx3íÛ²ìº2ªMÀmHþh%ó៦óaTG›´Á‹Èe>üS •Y¾z´tVóM#4ˆÚ2pßRXõ½[ZÀm“±«ßNÆØ?áQ+3&Ë Ø£¥-Iƒ5=*7jÈ~Û.7¦b«AÉþâ˜=bgö›û‹þÊÈ ûM”Ö»¥[÷ºÜÑ.7Þf=ÚåŠ ¬Ç–vF>ÿ­[U_óʼn«Ó\ËíòµÎµŸÿ¥œ¶qÜ׬§,´Õ|ØrIË5°D¬õ#`¥¦×¦'Ê4J ÷7Àä¥|Â$—¶J »z+^¼Á‚{w‚eׄ­r‡ž¿ê%ÀH€xìË»ñ˜7úÂ^oÒMýu [\‚;þüUw<n‚€š]Ÿºķ&c·v$‹ítž¿ê¢ 7 E…4˜(þ·8èŒeÖ“+þg>ªÅ³ü¬0ïðâ¼?ã˼–ñ ä¶žu yá{t”\BF£eåæYÉzæ.e=jxá°6ž•ÿ)¥ÊYunWVu$o8ÆýîÀÖ î@ܲè]×‘á ª±…¼Z!¬l~Ï^n=•ÅÞwø÷·É¿£2ú.þÌnÆmM« ß²D(ÉsY×C£,g)wíŒìtÇzܬ ­å–¡{™¥_´³X_AúYÔ¹‚¬„% ÀB^••°:—cA—¢{/'4ŠtÆQ\öÜ/H ¢Mbi‰õ>ÿ­çF½ÏºË/K$n™÷‹ÍæŒ$åäãÍ[[ªÖ3siæ¿Ñ2ÏÚSÜ,âkÜC¶ÐªžR#l}–r÷„˜=2­­ zNAcì¹èë<û(û³@ „Ä”0\ f]2¿½7‡:Ý|8Kì-ö\8(FÄ1’ ¥ö¤B™øw{3qH¬!Ɇd×õÞDË !†'F^ž€ŽË=Ž×ÞéqÀýåÖ3šûä½Ñ"Iíë<üi_§ñ,Ú>5Øp¶uÐR¿;ú.º½7Jø¦¶$|‚dk$IüÛ‡’(+Þ +Ƴdâ™×2ñ„ïæ3 ¼Øpñ\†hÜÕÕì½«æ ¢sͼ–)#ŠìlÿÄp ®*£ã±/ïÄ+$îp^Usvchu²”!GÞèël ÚO¶ñ[kŠP͹¬kf'—ËQ?˘°P"ö1_Ú±"KVvuŒe”0€‡)%¬Ê J> €:§„]BãIg¢9Ù|¯9é‹îºíOºG·3á¶uIh$A\(aå†*çÃ?ÄæýYõû÷sþL<óZ:žðMm™òMù¾Ý‘ð b€û\¤Ñ•µ¹š^óùÏ2&µ™ÿ´âl‰å«oUékÁâ%Ì6÷ªis5½6öŽ&{YÎE‹+[o“ÇÒ¾-¿~sa†¶6=¥^eÔ™£>Á¯`­`M«¿[ÃúÕ3Ë«êr믾dõ½+÷ÆVÙÍrioìd QduN «²š5£Èpé³?Ùü½?)FÄgB /äPå¾'Á7-òå/>£M‚-iUYŒ4ØPe5[Ç=—.Mx†'Ά&TYÍ H÷y•ŸÿÕ öó¿ºÄæ‘WzÍÕŸ‘}LXG€m$Yç¿5]Úù¿#Ì^~9®ÍÑî©+ê,¶pâµ:¡„•œ:×4ê\Í­t%©^57ÚrÛY=Á*·þÊâˆì#V=ùSe(®x˜š÷«2 EV³äÃêp›$ÇÕ@Œ¸„ ^øï‚;– Åc_Þ•AÚ¸Ï ãÐKKRÙåóŸ½þåšÿåâʯ‚QË&E`ˆr¯…±¤U=ÕŒýØ¥}ÔauЮ KIëši" ã·äQœ:s,8u®HêìHl~[—öÖUQ[Ž›ñÒžqù^›V)\ÚÖGF /(ù°*+7²ª;ÐxÒ™èJ¿þ»®4)xSÂSÌû¦PÂ?¥T9^ŠÌ—ðŒW|ÑÆ“6)Ò4Ø<41ÿYjfIö2õ>ÿ—.Þ\ú¼ìÓå‘»XÉZØÓY³ÕÀ>æìW¡2¢ÌrÆRµ•–ppê̱àÔ¹V0F«ÿ!^ªøÙÒ–§[}Œ°z½ãÒ¶™½ååžE•NÏûňИ‡gÍG;†öîj fÕÜX>œU¸¢Êó~åF%/=”‚œ+7r~%<ÚùÌN1mFIlq&Œe\‚£[üÉmg‰HÓ`s´wxâ\`x‚$ÐË¡»åó¿š3.U •Ñ\V¢\ e?ïò0XÛ¹ZæÿRÄÅË=›ÕPš(SµÎÑîÁÝÑîr;ÀÁÁQ |+WëL–¨,ê¶|¯n—ö_Y ´‘YªóVÓe»i=œÎ‡©Aœ÷Ç_ùSì° .1"+·÷B©Û ¬ CMóƒ+YU ÿpqh¬i“\BãI—àHlp$l’­Ñ&!  v´h8~p%Ϊ¹±œ?çÏß(Èbä¹}.ÁÙDdÚ‘[ìIÜuÛ‘8Ó;Ø<<1<ñAçð„Ù¸Ï@h¤ûÐóù¿væ¿1jXŽTƒ¥fº\ýC { «ÿ«·îY^ãÊç?K”·üø7;E¶>–Ö*³ôî§ 6?~üøñã\sn,×L~-+_=•ædó=6§Žjà²m=çn«u+ê ëÖ­[·nÝøöÿ0¾½3óÚ;òï4¿½7o}ö×ÝúìRE­Ë,Gt­šsUӞ募ÑhÇrôˆ¥Uªœ» Þûýè}GÂuÒ%ÈÊÔz²!”±2cÞŸ+7æýöHƒ€Ùà$gbËÛÎ$ʈc_ ›ô´h“`Ê'Ô6smD2tkG24åKíÉÄÅÈ–·ÝA\öˆ="¶RphÏOîÀ™Þ³:æóŸ½=õ;ÿ«“O”KæªOv"¸+¬÷/åü_©¥~Õœ«šö°Ä›Íj ¢Îœ:sÔ uÎ™¬u[jY¹ñŸ²Ò»éÐýÙ©3Ü_½F“e¿õ¹–ª~ö³,U¤­²Û;–*šXÎu «¦nnH울tIV”0N~¤Êù9AVn@¡…*C GÂÑíH8Î7œ A\‚d“K¶ 4žƒ¹R ¡§ÑÐÉ~2¿;Ëù{DlbęظÏ&u¦_ÜØœ<Õ4è?Ó;š»plÜ#Foø¢ô¾óù¿¶æùŠ[¼g©Iyõ#À¾Çz¿¾Lù‹)+ɰ9u,Ef¯§²H3Ë2Á ³ rppÔ3´Gómc|ˆÜSnTÉX­ë¸Teg1¶Óºå´qc“ʶ­¯{ßi½£Å&5Øm…nÊùð½ÁL<¾sDViA™÷{®“΄'à:é`z)”ß¶dA  «sY•òªŒdðÊ.(ª ÀB± ÿ¬dòXɆ%IÀ£ð'$ÙC/¿Ð1äH4ˆùp>üÕ¬šU³'æý£¹+_ËJ¤ñØ|xV÷<ô'¡€„e„ùü¯÷ù/”pP!i5%2 ºû/¹‡åì´ÞÑzAî/W˜a}ÌËÐÒƒ³ø[–/ÐjþÓ3ÒöÓÊÚúú²\qmys©†1A7§Îk ´Û6í[ëÛm¹7{ò[k­$KÍÖ”‚…p°Ð –H £‘úÂù£m³ô=«Þ=’‰d5[}Q×I›d4ØUÙØvÖp&žÛg¶PF!E†Û:*lI ò˜@CWÓh32 44­ƒÒ¨“¾ÜÿÕƒ„ïèù·GÏ«²:‡&òù¿ºç?]sLëlÑh+¹‡F¶Ìé)­†RTÒ¸Ÿ}nT3O¬ÇÄØªÒ5Ó¨¿‘ÂÒÇÄ|4J¥û6^eÂm}:Ké³1A7§Îk ,?ÄÖd‚%=e½ßºåÞÚ¤“6zìí·®Ízd¬ÛiÝ#¶«Ð(F2ñ;G2q˜-Õ%l;ë ra®T’yD‘‹47¯Ê0öl$ÐÚOL£!6Æ¡­É4ùÙ|ù…¶ KØ$%¬ÜP²rcAV|ÑW=AÚ°Óì¦Î2søü§ÅºÍ+7ÿÍÒ\“Û4²e¤­42g%¥—§‹¬Á|Ü´5[a5o'hcRú‘Àì[+êO#Ál¤–6nV½ÐF­æˆ›‘~=i6Æ›á6§Îkì1Hv]#íœñ¼´ò•Å«Œ5³œËzŒ}d9{,­šH$ a².Yª×B£=2<ñÉcý0öÜ•>p +m<·Ï)E aÉ´9ÖÅžÉm]º™6ÿì lm º›ß$gbã>1’?Låê¬üJ˜Ïÿµ9ÿK $Œû­è{$ÞŒêë¡“NÖØ³YÍ´¶±x¬æ¿‘ÔšµÇú‘ƒì-­×VãP>ÁÕ°Yzmò[k‚N>ŒiÏ…{Dî1Æ›ù2AŽºË2ÁµäÂ1:ÿÑááqIlù…ÖT¢še‚ì°~©j­¦­ì,,ÛKÛ’rk`/_MûY4Ž,ß²µV¹1ïw&¶âÁÀÖ@°¯óÕ7A›$¸lÒ¸çÒ¥qO>üÕ|šÊÑëg\BÑxnÃýä"BíòA|,ê‹f¿0Æ›çý¹±y¿/ê½é‹¦ã·_NÇ{7ù24f\,X͵æó¿ç¥yYÊ% ”YK=$½3[kk†`Ïå›ì#VîYh׎vÆê[Rn ,Î Õ ÇÊ’ÎZ·¢rô8ßéëZ¾ú?UÆ/ÚO0Ëmž,I;/ËYŒÛÆÚ¬÷[ï)·†êéKeµY?{œÒ¸G oðŠ‘|D¹1/ƒôÆ}îÀðħÅc}ò«oä.éÀ.i—¤Døü_kó¿C4ëÈ.n ÒÎb<ÖØB–yeŒjÓúbÝ‹Òckl¤ÒÆ™öˆÂr½¬ÏRº×¥³êÉ1]ŒQ:¶¾Å™Ü6úlp­3Çš¯‚Û8f .úÑ7þ@{ i&ýhÉo1Fµ!ÒŒ·T×F¶d©ÁÐŽY%‹¥Xô£Ö碵–EÇYn´•edØKZGÑh½.—NYïgÑãÒoÀóç.Ìûiƒ×&€#Ф."D9ÿò7òa@Œ@CâKzqÀO‡†ŸC¹EV½{$«¦BÓ{R¡L|æµL¼ /(ÙØzÖí{18:p 8[’ÿˇcýW¿Ç&<_=˜òeâ÷Þ‡‹€Qg>ÿŸ¬ù_jé›U lÚåÒÄÝlési¥ ´³Ts½–~þ³Ùí•7ÿW°”ŽÙê1†ÍüŽFÇѷ䆞-4šSçºFÓúmCžö)ß­©PõµUxvØ’Zz‚KY´m|Mþ¨Ù$myQ6–W ºll‰‘Ä O/zÒìÌV?Æ=Ö7oíè²þ@³Ó8ëö°œ‹ýX–q`¿‘÷³Üþiµ±Ó/ëq`#U ¢ ÍûS{â1U~˜*È4Ý1´wWÇÐÑóSGÏ;[œ H£³ê½Á¬:ïÿáʼRê|ø§T>Œ¶¸’Ãoçýó‘\&~{o&žUïɪ0–ì<ÿ¢ÈéWu¦¡v ÿë}þÓTŒDÖ:öl”Xï7Ò_XÚØFkZÌJ¬ÙFɺ ­~#ÙÕ¼Ùý‹o¦ QÌ)/K¿èQêR”—ÕüŽv¬¶ÍÚû¸Ùž2¨3$OÖŸžK—býìur,-â±/ïÆc#¯þ¦kÆÓ¾ãšo^O»÷ϾÁŽ‘¯tÍLù¦¶$|µnéÒNhýO¢ª6C„˜„>ÞL kõm¨ X_5>ÿí\}óŸæà[Š$YE”é#CÖfEµ%µÛÉBâYF‰õªY[òÑ£ìÆÇÚQÆý4I ­ÍVnºW†ùc =݉ñšÒÛŒïã´ü‚ek‡.îŽv‚{_Ë=–cùp¦÷l`xbxâƒÎá‰ã³¿Ûxôüèýs?ÿ(^Š×rþWæýIÇ­wR!AlàXõ®)žÀŽ/\‚1¦›Žß~=IŒ£òîá|m:Ï ò!¢|ˆ([ñØt<óz&€–RCM³;€Eë¦ã·‘z±þÝ@Z–e‚ì1Hku# Ú»~‘]ûX®z²ÜoËmËöñg¿åÖFÛ£½jRÂ7µ%á‹ØÇÁ—weÿ1o<Ž„ã g>ðx£ÞEVƒì½^Žë»rc éB ôg\Í5ÊVåµÂcŒ·ÕLÖ_ꙸÐâIÖ¯DÙc`Ƴk`ƒ·iåYza¬¿úH!­GÖ-·î˵¨LA˭ܰÓI…¾Û‹þâºÒ/m•D2 ÷‹Ç΄Ù<à dâb‚4áùó†¬i; O\ùJVFsŸ]’•qÏ¥KñØhnâ£X?ü„ñ㡉Ï.MÆÎô~úQ<6îùêA:ž‰Ï_  7ˆÎ„ ‰-.AŒlÜçL’ÐXúïbAQåyÿüXVµGÔlÎ/Fȇ©Á.FŒãÏçÿ“>ÿ+MèmŸ¶– ˜-­t¹­5ZDŸ6ƼuÜjþ›=À˜Ë3ØbÛ´3š ÍmÚ\€QI¤\Û#í½~Q°1åýfó”7á»ùLÂG~"ÏÎr± Ð5ÓýnÏ&øÚ.}íÖóÉøçWÿíòáÉØW&cgzÏÎô’ÇLx®|ëßþñ{£÷áQ]3ݧ{6õ8^§Ç‘˜ú/‰£÷?üíðÅÐØ;3á9HÝàÂx.I|ik xýÇ/ÿÏäç°æ,£aÜÃ:ÿéäÛºæòȱYbs㵦µ¤ôÈkEÖLfeð½¾HňØ"FÜ_¸ä§±¢þƒ߄ƌ*ç®™×þ¡k–™ò¥ö¤B9ÿ÷ïçüý‡'ú;Qìsã>g¢+ýê›]éËýW¾šŒ‘5=$~ô¼;àþØHøníH… ­t ›ßv&R!¸çaJ•‰ûÄÈ”ï›- _ÂwsCÂF»Ò¯è Ï•‰g^ËÄËm-;Bç|Ùß)‰{~ò'Ɉ¯~˜Ê‡e·¿3}à@WºÜúÉõï°Í,GUv–êú›hs²ùž?)FpÝJé/¦ÂÚ?0=!ÖÆÉE{ªiì}«5­Ó—7×L›-O¬.ê ÿN‰-o;ðóòáÏ>»|XÛêò"4Æ—†ì·m–šiQ·Ên´³°—,·UÖ-dɱP(vÂÇ2þ´– 4 Ò¼ÿÞûh$ÐÞèÆ}ª¬„¿LÇÕb¾À¥ölž÷+áW²ªMRçæýE•Á]·‰ÇK[½ÑàPK¤Ëž€=òŒý5eâ3¯gâbD¿ü—Ïë’kgþÓÕÏú³”Êg+-u^Ú˜‘>š³PbÞ²Ì ÚQFXÇ¡­£à,ä›V3ËXG²­Éwé¶–(cÒúYa®´Æ‚ ¸G£uVÂÊ Eoðƒ—æçÕBëü´‘‡«žf Í%‹9Ïí‘\on&7~p î·G6î³G@ÜQ¸R[˜khæFsŽj„«¾¨ø¢bdã>g#”+@*ÆöâÏx®JZËgbóÛ.pÛì[x#b‰+Ê…=òŒy¯BÛ)(ϰ>ªŒ^o»Áö ¥\ßò{iвjÐG!‘MÇo¿l®Q&}šI_çÛEM³Fmª™.Ö| C°%pÛ¤=óà4X­³•²­Tã·Ö1!ëšËmµžÏZÉ®¬l”hg±~mmE³&ì=²n§YÍ ¢MJø¦6'†à‚?òÛ¶àž‡þ¤Ï¿cW>™ ÜÞ™‰§Bs'²qU.Ì[£-L. ´Š"?LåÃPtáLlð ’3"¶ØÂ®à¶³NÉ[ìQ ‚{ *D>è÷\Ÿ$&îÎúæ6g}"4¤‹ÒúËçÿZ›ÿtE2­4:Uê}i0¹ÇzœqßéI:X®;Ë mĬ<Êy<0ŽFé7­=fæt´¶ÏH»RÖ³ÅúŠÓf…Qñ¼,Zg{S·œÿÁ-Ÿ÷ÏåÃŽ„ã •Þ¹„-o;ðg7Ú=¸;Ú=tqä¿]$?Á7J¢[ìä'úpu5WŒ©X©u«kí‚RX<6H*¬žÙi“”ðÃi%L¶Öä1†?‘&}Ü3ñÑ„g¹¯Qõ×w)aNè5Çfò }ÌX›ÜÂ&™×Aþ\–ŠF“Ññå‰ä¡6VòB–E)Ëó Ëú•.ËŸv¦õÔº_ì­2Ž­§,$Œý…¾uÉÊ^£mÁ%FR¡ï^¦¯1p&Ä{Òè£ç_=$‰=ŽÀV_´9¹y@œ‰qÞ¥6IÍæü¨s󋟧çýÎDƒ] »„ ^U½7‰®ô‹}QIl¾ç ø¢î]tð0;?ˆ¨YU.VpAjùü_kó¿T¤Ó<~\*†ªï#M>Q*ˆ•x T4šåÊZÇqÍëa$Ð#÷Æ^5[K/̯)í Òè,ýŒVßÌCüUt7h³È4žËB›“Þ›Þ¨#±ùmGbhb¤shî‡sÜséÒ¸§chß‹mTU®?ÙÒàOBú;– Ï!r PÞkCQ“€á‰‘W‡'à’»¾ƒS¡1XÞ&-ekaD$¿½7‡ç::ö»t®ráOîyØœ„Ä+ÖõÛX?|½3s”©NcîëüíDcxâƒÎÑÜ©¦÷Ügz‘üá´*Ãí ϧ{ ÒºškTýõ…˜*ÊrðO%°¢ªt ´ž›™ÇÁ=´ú@%Y„Ú%ƒ¶ªd¥Æ£ôë`öW¥,GÑÎeMbÊÕYŸ‘½/´V±”'ÁÒ Z YúÈ>žå½æ†¿`öH:žy-Ì#¼‚)¯$îºí‹‡Z~á‡ö<ôF;†ö<ôEÛ‚Í÷<¶àžŸ<_tÇ.¡E.0D’UçNdUpä›e†ðù¿–ç?[;ë«I£Œ4”–X/e+ÕG–ci£ÇBLYF©ôQôq°º¦tºùy­{Ƕ ÑH¦KÏ3iÄ29l4ˆŒoûýèý¬zçH&û÷îêi ¾¸±-•¯´ã᫺ØáO?ß.ýÓÍßKÏB¯âÀþ¯G ATF»O;"£¹Oþ8îéyå•®™G÷é®4Š^Vd¥¼ÖB’zªé}ÿ™ÞþƒG¾ …ÎL…ÎƒŠ‰o¤ñôßDÃs'…H“úÅç¤gƒCû^dÓmC=?8z>ÚýÞöHc2tkGÂ×¶ÿå_vŒ GçW^éšIø¦¶Lù\Bã?»„ê®Qµ×¢k¦ó7]3©PæµL·pÚŒ1Û‹þÀH ´Ñ¡¥ÖÃ*êL§Ú¸Nò¨Òo?– ÕܘÙoÉK#ai;í ‡4°ß¢¬)W¹1`–8 b¿^´ýpOΟ» „ó&‹k kÑÚ‚‚üˆ £s¹3ĸ‡Ïÿµ?ÿi±ÆRQUóq+•(Äúá¤Ü8½ñØjfˆ±åÖñ{–£¬hw©zÌÏkv¥h{ŒäÞú±‡%­?—Ù2Áuðék™ƒékF‘Tâz£Þ­Öa¥ûâÜõ¿ýÓ×”¾þ#Ôº]VpÙ¶žs·e wßÊLZ—ÿèððø”oÇXs ÿœ›d®†e8“Iá,#p¤‡*k5ÍlõËCM¶Vcð¾qº¯ ö¦0Öß@+C¸.Þ%ÿNá_hÇÈ+¯tŒˆ‘Æ–ÄjdFX+íÈ2,%­Ë” ëzÊíu¹-gmöö° {«Œ{”ðƒ+éøåÃcdž/Ï$`Šl¸D{1Éöœ*äB¶ /&ßžSeU^ÈWó è$£Õ:7Ø€Ï0—aϦîw{6 ’ã ³6óù_M¯Wßüg×%Wö7EWÓÒZÂÒBö1)wž”wº˜½%xþ³ô”m<ÙQîu±î5ý:Âހϫ>w&~çHVEþhÕ¶Ž4´Eš\ÂÖ³.“æµ R’¡UŸ#­ÝšK;fh÷Ðj6¶‡¦±^°¿êeW‚a¬‡å57û«pöªõkeö^³ÇØX^R³ï§ía‰®U&Û@õ`“’¡Û{“»ª¯àÁ|øÁ•|X•Ð&4¦õ”Ïÿµ?ÿËIMI–سu«h†Ê"Ó,ó„uþ[;:ӵ׿mcSr[õ”®N¦]ý~šh„Ö~ºHÃ{¦_G|ï†Ûeg¬7@ÐðÜI[x.;øýwóÓ‚Ôðœ°ßÞõ/:¾ýÂïÏß¼8u^Sèq¾9Ò×Õ3¯ÛB»Ñ†ÖÅbœÖ—DåMsû•W¾‹(ohOs FÉ- ÅX¢•,/ig4–1¶“V†¥6ëxK ¦šV±D|Ùǹ²×¸åG 7xÅ´xÄLmatÕ€ñfá†k6h8\|i¥õ6Ú|þÓÎòdÍ3‡rÅV×¢T´»Ü‘dŸ±ú³hûEë)K´Þ8búÑ6‹(³Ä¹­£ÂVcËæ¹aÝZZ´çÂQg¸gÕSgot×mot\“ð·‹_ €çÁEà¤ymŠjÝŠúE57E–Û<ËÍ Üú­oó´³WÖ†rIËZßÒ¬ãj,´Œ}äË¡‰ ¢=’‰ßveü€@¢ÁŽÛŒ ’àÒzk°/–³m>ÿ­ÏUûùO§S¸¼5í£[α”d¤a=ë1a}0`±R¤ßê*”²´£_kšKk²K룵„øM›3«ž:ssøü§õ”Ví¨Jæ)2}lO[réç?]»l~,Ý"M?ztÇbZ pˬ+¯ït ’°Çßx,­wæ—½<­¥ÎBrgšymô…ƒx.,«¯3G­`MãŒe¬c,·XvâH«ý(–[­föžÒÆÊš|ÐÆ–½§,uZ·„…ØimÒ¢â¹ä‡ÓY +7è^¹Æ±âóyç?=ÅÞ¦§P¶&UåŽmô¬úK£‰¥¶YÆÙz›ÜÃríX~yŒcÎ:ÿÍâèä(Y_ «3–aZ;­£éƶ‘‘cZûiÑecIšTƒ4§ãÔ™ƒcM…"acÿ_Ú› ;I¢kµ¢•¬,FÈ2>ÆÖ–KÓY¢ªÖgÑ–\bdÞo°Ò|¨Ë…<p Œ‘³ÏI>ÿ—wþ—ÊÁfÞ~£çC©¾/×ü/Eëi½(çÑÔ¼†ÊÞ!å Öc^ùü7ÒM³o­‰µuÌØúmí(ë+H‹[Ó¨0y±¦E¹Ö™£îýŒkÝŠÕ vm‹±Ü{Ô§Ü–°œ‘]ßÉR²r­aù=bgö1'Ë[Ï„ojK˜5Uª1§Ê™Ü̱L¡Ñ…%{tÏÿ¥œÿ4_^6 «9Ý¡©Z«s²<Ë(wFYkM|—¦NZÎ<Úõ²^Gž…®'¦×X§¾v z©ÙB»ú,ce<#­Gf}i9uæ¨#¬[·nݺuµnÅêûí“˵ñ[v*i},Ë«d–3²Ó¦rÉõˆ±¿öer·­ûB¶D[fÃN{$šy-©æÃʆ|x©’f/àÁùÞ®Ì÷‚˜pD„m‹°Œ ŸÿK?ÿKQ[óoY“ ÷òÏëhq¹§,(¬ez¸æRé`¬i.íj–7ÿm “]k²n%¡‘þ¸Uºd©$)æ#†P"› ÌX– p ÈòÕÏÁ±Üp Ûκ„åûK1æ„0f$¿e¹µKV³¿²³³ÔÀ^‚¥§•݆Ë=ª²¾/XήÊ®dÕ@ð¥mÞèðÅÁÝÃÉoW&› Ùà#0ö 6l’Íe“æýóæý}¦ú*a\‚À&±Œ'Ÿÿì­*oþ³Å2+ëÅÒ¢Ü+UMÕÏ7ó’K‘å,¥÷³Œju¹­ÛL+f>'æ­*g&£ýÒ:GbóÛ’˜óÿ¾¬Xh1"¶ˆK€çjNíþ¾9U}mµBfræ5zòðêaMšá_q¹®2ZÀ¢í«ŒRTuc9# –vd¬{ÁÞGkõ*{›éñ­Ü…t<ܻ˟$ t­¨³~8­„çýßÎûû|#›ßÖ&ß¶VÊòùÏÒ£rûXùü§)–È¢ùü§SZ«–6ž]MÜêì¬4N?´ò•=•77JÑÖÒ×zùæùœFš¡`cŒT)á¹*E—ðöïOîùIûƒÈÁ±º+7òá•ÿÛ¡Å›­±T1³jÈb5mc?Ke„²š±*·KEkª JøÁ•t<8ôÒ6D W†: ’àÂËqÔ¬ZL»izÏiRÂêœ="Hv:•[¹cÎç?Þ_Šv°S=–c«)_ýü_Ú«ÃÞ¶Jj+gÜÊ=–%b]ÞµX¾ùPÙ#G¥%!ŠðÖëiw_ô´Ã[òr‹4888Êù·i-Ò c`ä6„ñvbܦ©ñXê1ÂXÒú¼Öígo'­…å–¤V†–cÙ¯ËheX®—#!¶x±þ/ï$|}¾é;ÈÖ³jér&>óZ&>îùäãžÐر\hŒ$Íì‚>ÿ­[X^IÃ2ºŽ–Ör«ú+-o5ÿµFi´ëÅ2s¬¯­fë¶™×ct¥°sÚì¢_/ÚÙõ­53…4Fµi0–´:/ÝÓøǺ´ž’o*XJjϾ(Øɯan_>üÙg—ƒe†ÿÛRKA88V6é¯MZîNH—á6IšëGÏWMì¶2,wß+Z°×ÉÒÂåÐP²”WeåFVu¶ž#ÑîÓí¶Gì-öHõQg˜R;ϼžŽgâ·÷fâ™øÝ#™¸*/(‚$H¼ÎB£1*›+‹&òù_ùügZ° 6ʉR³¼Ög©g9F¯rIF¥o!*‹ñW2JEaYÚVÙuaGeoEØëÔn´‹JÒhŽÚÂZ˜QÙÏqõ/¦ËmI5ZCÕÓZ®š1dùÖºË!'¨†š«²:—£¥„/nô'¡ÄÎ%lp p :›Qä™×3qU@`^@—# ¢=R.%-÷Š[÷—ÏÿÊ^¬[“¹Jæ9dÈŠ®±õk©þšª‘dTFI˽âÖçªF´ÃÞ«3e3? ë>Z—ÁµÑç’ëô±«ò×rVV¦šš+»iUö³¸Tíd¯ ߨ2qU†Ñò6ƒ¶õçB5T>åö¨\TC#–v¦±”äóåçeàó¿Ü1¯lþ£_§‡©y?úuRç”° ‚äOº”›PhDï©A´GØàE¿]|þ/-Öòü/ǥìôïÿÒ1«Òó¿Ô"Kë¶Uß;«^/gìn[=•zÜ*Õ#"êl\›o=|+óSR«×[Ëñʵú˜ËÏâr\…rË—;>ËýC\M_Øûµ#Ïç?Ÿÿ,àóiGŒÏózÊ'£,´©z"µæ=ÉÊ‹ÍWúˆRîÁó¿R‘õþRõ`ºLîyʺKÚ¨ƒùÐ '™õð±ÿ@T¿m]³uËiãÀÒfë£ÕcÜc=zFë¡ÅÒB–Q²ž',õÏn½mÝr–ëËç?KËiãÀç?YžÏöñ1ÖÆç¿õž•žÿôeR$y"{¤ŸR &Èh(m|Œg!÷—žÿfi¢õ½3½ò橳XÍÿRKÓ¬G ô¶õ;¥Åx}­æ?}„ßšïÑÖÌ2£ÌûRjI+^£o1i&÷< U2)A XÿÐÀmëŸ ëí)¶mýCIk û)Ë~ZOÙ£ån³ÔSÙQÖã\ÍÍŒåjZ|¹‘›êI‰|þ³œ—VžÏë³ðùÏçÿòÎ3‚E£wFÚÄBòhÇÒ(8m?x±Ójç¿3¶Ü8Æ17o }ÌËÐsGÏú²i«6«ùfôB©ôáÁê!ÄÚµCc6n¯cYx¦Ž5ëµ$Œ_éòãÇ?~¼ÜNýöùÔQóž©õrppppppppÔ+É ×­[·nÝ:¸-FÿY¢.l0´sþïßÇ _ÿ”,| ÷«×¦Ôë+3LÊqå†r|eÎÅÁÁÁÁÁÁÁÁQÏXJ†‰!Fö͘4ÃoÈÃiÎË…¯(­f[,äks^ŽzÃJ0RõºrôôµÌÁô5O»ûŸ<íÆôSµŽÕ"u†YQ¼ùIG¤é=w¤ixâƒÎá‰Z·eµ‚!ÇÊ`ÜséÒ¸~VSÂ%8º]BràÖÿ› ójCñ†F°aL£jÄåþ+__î‡ÛCû~Õ1´´åUf¨²B>¬Üȇeåæ3²2ï¿78ïWe5«Ê4ذGžÙiHbKƒ$ÂìVe_&@SA  « ŠÚYv ̘÷ç. öWØÚŠP¦ ò”ïÖŽ)L–›ÿ4CÁŒ .A²Gì-öH øÒÖ@Ð[´ù ëg 9888888Ö ü¿5;%y&$Ç$çd)c Í2A‡NÚ‰áÚ‰Ë-ÏŽxìê·ñؼÿ‡Ø¼ßÝsÛu&žÛçL@5Ì|à‡+óhx$ª9ËÊ`Ü3ñá¸GèÆ+ô÷w¾ ú—bÂñÜÄGã95¤fÕ;àîvš…Ý››d{Á&‚?¥ Á\"·/—Á…› Xëqâààààààà`…‘…VÍ2Aö$–Ö³f÷K Hšá¶?é½éO¡á$(Æk]É­÷\I € hÊ]˜÷ËÊY™÷ÏÍûé¯ Iâî{’è ì¸ê ”:/k ÉPjO2” }÷r*”ÿˇɈxgúÀÎ4Œšƒ8hqUþ)¥ÊÑÞAííqtŸîq£¼0N}y7›÷ÿpŪal˜=ÊÛõ'›¿÷'ýç›·úÏ>à$@\¸c£G°DP¦÷¤B0> ûâî¼éú¢Þ›¾(˵+·ž¡‰MÀñ‘Ä=%1úno*ÔãxãtcùæGýòÏr™g5aܧأÎÖ§¶nzõñf—°í"ˆCšHøn>“ðÁxª±|AVç òåþØW—ûUùaJ•»Ò‡ºÒ΄£Û™ˆÇ¾zAbJ;#{ ß­ ¤§ðØ@ð¥m`ÇÐË/t y£Ï_õ©¡$îù ›o .Aêq¼þŽi†€RHŽ;†‚/v u¥_9Е.È?MäÉØW&c,£—U⦅Uá¶7ºã o Ê É.ì‘Ù#ð¼pî‡e–»HšÝ­çÜ%r8888888ž°3Ìj¸hQë¬MíXZgÜ&ï}¡MžŒ]ý–¨ î}¡-¨‚E¥òÃÿJSùŽ¡—¶v %CއÉPJšSR"|+•'r·žOä\ý[\ý’øâFI´G6xí‘L<óZ&®*jVU<‚û¬Gp&Äï wxókîp6vg!˪wŽdUØqU¯_P`¯!šÞ‘ ¤€zikpÈÏÚ0 îŠn¾éŠ‚(pDX{áO‹Ø#âi{„6°/và½iùðÃÆ|X•æUÙ&=³Ó&åÃùT> À—ôq+Èj¶ ƒ‰…fP\ºg“—M²s!ap„!Ý·'6ì³'‘=©@dxâžH…¾Ý‘ ù;NûL#Á ÊRÔ£õ6I¸g“X`Ÿ~«,ì´ˆþâKS[‘—’Ç ÊšÓA*¼´%Ë|¹_Üw¥ƒ/v¥]‚ë¤KȪ÷³j¬ÿÊW±~ÔÕ‡Óh˜`\3Ú;òj´7»±/>(á‡ÓJ˜v.ö ´î){i%òáWòáÑÜ…c£¹ÑÜÇÍÉÊÿ”´¼¯4Q&ë|˜*u,Y?¤ï¨¶ ^T[>üÓ Ôcl?{H·Üà/ u.C°a„5-^>Òl„3±yÀ™èzi ÂçÃùEñ†Ù°S,5H¸Cç|:O~ú“Í÷üIZýì5Ø#Ï,’ÂynlÞ–²rsƒ¬@rÙ×ùúïú:»Ò¯¾Ù•v&ì-Î2D ¸ ÝÚ‘*!´€Zd4ª˜j“²×Ë]DeT¸²£ˆDÜhWA^P lAlxi«Ⱬ·Pü5Ü»+,»¶0 ÌrT<öåx êŒÅˆØ‚HmV½{$«‚8 îL<t& ò‚ì”]'² M}$HII $…ï…$<.˜ƒjã"­œI`{Økp‡Ÿßá'ÀH¸¤Ï}a¯7 I!$¾.aË€K¤ ^Ar‚KÈÁXuVÛ•U ÇŽ\V¨¹`ý¨ýðõA*”y=BB£šWòó @:>w"w ›è‹ýáæïýáùþy×|ÜÞ›ó‰Ýó ¨¢¤ ; FÙ!õä ^A ÐCŸºķ&c·v$‹WÜxþª;Pˆ.Ü, !Ša ݡ篺C p$Ê©'Wü¯âùÉÁÁÁÁÁÁ±*ÁÀ ÕØB^5!Á‹Âm’£’(Á+ÂÅÿ€ÖœN'Ø€èJ>áb8øYi=¬PeuN•¡pÒhø™óçÆr~wÀý‰;î} $µpi$ÇÉЭèØ„ïÛ Ÿµk { Þ¨÷¦7 ½ hݼÜÿÅ­ËýPïKêl`¬Zì‚t¹?~÷r?M:‚¢Úö{$á›ÚœðÍû¿ÞïOîºâå©PjO©(2¤ûp‰ž;°ãª;>Â:e嫲’ }·-׃}^JøÁ%|¹ÿ³K—ûá6Ü{m}^otÇUo´úz8888888ž$”æŸdi#e)cÍKIsºub¤ñŸ%æJ™}”ýÇÙGµ%ü ¦„¡ßB­ÚÀÁÁÁÁÁÁÁÁQ¨-3„g÷ îúß¾AÈ–‹Õh— ùZ·€ƒƒƒƒƒƒƒƒƒƒDQ°Q}JŽ'U9lpppppppppp< 0I‰Bz!×ÏúÁ·¥ì¬988888888Ö< 3üªFÌð´A:l4%ŽŽ¾=ut4לË5“û¡ëBs²ùw?àààààààààX+˜òMmI…:3¯½Ó™!9p:~{o:ÆÀ_ƒ1Hš‹)QjÝ`ŽzGU‰¸9888888888ž,A"n޵ M6AnNÇÁÁÁÁÁÁÁÁÁA×:sppppppppp0Auæ‚ 4Qg.Øàààààààààà°wØàààààààààà(o†Û\°ÁÁÁÁÁÁÁÁÁÁAlpppppppppp0Á°L… 98888888888H@Ò ·T¹ADÿààààààààààà AjjÝŽú…&ê\ëÆppppp<é•ÿ)+µnÅêƒ$¶üBkÝ ŽJÀç|e¨‡9Ï©3G…Ïm=çi‡Û6B-oTÎÃ=ðiM0”„ÇäÒõX×OÖ#‰wßJ_«õqpp”‡ÞM‡>è?XëV¬<~üøñãÇÙÂÝ·2“µn Gåàsžµó\°ÁÁ„þƒ˜ Rk3Y#E¦‘f’4 4 i6Ö3¶žó´);üt8±æà¨_Àd­[±ôX·nݺuëªï¬§Ö½áXJð9ÏROmûÂEtÍl=çig‰ÓP –˜Úzj$¬pÑKÂX„õQÖ0’ø”Œ‰µ±ŒKàÄšƒƒc¹ÀãÄOÖÞœçÔù $ÊäžÊbÆäžrk ¹¹1c²ŒµØÃØëzŒÛFäü[ÏyÚÉz N¦988888ž\pÁÆŽ‘­ç<íÆè/ k»L‚ü–%êLÂÆí6Rp––Ðê¤Qyc=JXÿÈ!F8™æààXz4­ß6äiŸ}t§ŸÿÂp<X-sžl¡‡ §ÑÕ"}ív{úÚüîùÑùÝä'ú~!@`ÿ¾_ö÷uù²¯³pý§dáº?Ù|ÏŸlÛ¿÷—mûkÝŽåÅÐÅÁÝÑn’„%vÞøùú΄ó g¢ïà‘ÿÕ·*”Ú‚{_h Îï¾wf~7œÉÎÄ–g¢kæÕC]3dé3Ýï:ÎtçÿË/\/d ׃C{w‡ºf^ÿmÉžM‡>èÙ”óçÆrþü±bùcò_ý ÿž;¡†çb}W¾ŠõÕºï«O©rƒÈB8V({Úõ”‹F|!hô”…@Û(êdZyÚ±,0ÆŒYÆ,qkò[§òìFò-Xî1ÂZìal=çiw&8æ¨GÐ^=÷§B©¿K…ÚöïûuLjo°ùßýÓþé=‘žõ_ù:ÖÏRge°G6î³GSŽnÇù ¿ÍLμž™Ìù¿?çïJ¿úfW€;‘Æ…Hc&>óz&cÒµiŽ•ƒ#áxÙĖITå‡)íƒ}&gâ™×3ñŽ‘WÓ5cذ¤ñŒÕÏy¡uƒWhí̼z¨3#´ .¡Î䎡½/t ¥Bß½¬­¹9õ·›S° „/ºë¶/J–QŽ?ˆ)Ç'<Ÿ~4á9>ûêñYX³»íù«î¶Çkïô8†'ν4ûqãø,,‘ ¥ö$Cð¯ÀŸÜuÛŸ­À Zá·Þ¨÷¦7:îùtϸ§¬&±·|ÍÌyH 9u®1šÖëÝ0Ø#ÇÆ…zv‚d[놭ó‰;í[#¶Î Hse¦µÐšFË¥¼ÖK i-gCò(*ß .‚Fg œFs, ú|~. àÍ[•Õ9UvÞüçöTèH%)‰ûÄÈ”ï›- Ÿ+ízÓ•nN6ßó';AU²Àë?Ê?_ÿ’c9|ãm9ìiw<íãÛ?Þ1¾=8|à@pØxþª; Lo ÓÃtOô·â}àLïûÍgza=Yc‡-'zœoŽôuUSC/à©›Ía:ç/pôüïÒGÏ÷ué)RIö™,F6îsªJøÁÿTv>:p°k§u–jΓˆõ]º뛌}õ`2–Ø~ó½ÄvÀIôm¶ðýûÙB¤é¤-Ò”šK©©9WÄåuEÜ·ý½û"à|èU°<Œj“õÛ#b‹=¢Œ((#à8àøÒ^—µ1ça¼™Sçš¡iýÖs¾AüoDǬ% ì`‰/„µç-vk-Û¨>êÌ’Ê›V¿µTƒK¼ÜØ#¬Wà—z(ߺG/û?þùG²…¹œFsT ¨û ÷¾¿­l%{>üÕ|X˜khæFsŽj¢_¾¨ø¢bdã>g#q©ú"Ù[$;èÛ@G¼@„Œ õåŽõå‚àÀ €/ /+Ÿ}vY ÏË…çFÇþ<:x4ñÎÀÑØÞ›œ ÇÎèt¬ìÕÀX{™ÕêÆ9Å ßÍg¾>pô܇ûÙgò¼ÿÞûó~1"æÄ âÊöhÂýÉ{îhï`s´750µ95à˜Ú<€DJðÝ˸{Œ»Á$`²+óúí®LÛþ}{Úö§'oƒô¤[ÄŒÀÅ‚$·¦òaq“øßÄMËÑ‹µ1ç¹`£fhZ¿õœÚºŒuJvêY®ä€Å¡™E¢@F¾içb©‡u¶¦¿,!ÆÖÚ˜i:˸•²±‘fí“?VªA¸l›<íÙÂ÷ƒœ@s¬”âlNæü¹ ó~ò;—°åmg¾ ^üÛè€ µXhî¶ ¸„œ?÷i΃Aðît¼´-Ð/m pìGI}sQÚvÕŽ:s¬$ ™n}6ð_Û|£³c™Ñó=ŽîS=ö™ë¿´3&)cÿ¯26ƒk@+aåŠã. iÏ´…ç’?ÞZHþ(N‰â˱mÁ7¶'f>}}bÀõÞDêç„ïÖŽ„O-‹añT(µ'òŽïùâËu^ÐD kÂ8–zºl–`okcÏ•i|°?åFáF Á,qÊó54]ÑQD¼ Ò/Â+7}w¹(—|ãÍÐd Æ›‘RsAÀest{Úáv¶ð Æi4ÇòR‡ôùÛ{3q1.>´'#c§ÿ!2|` *ãO¶4ø“Ž„ã G"=v3È'•pXŒlØ)F”ðƒ+JX•”‚ —gÁÅRÞ¨ûw@6ì¬ôW,[˜;‘-ÀèZ®97–kÞ?òêðþ@ð¥[Ú˜:´îr·m=ënSŽ?œVއÆÞ™ õ8Þ8Õã —Ö¬ßÔ³]WýjîÏþ~þøì©¦w§šüŸ7ÿÉØ/´œõ ,3Ùö€æ$ ÏÆú¯~ë_܆ÆÞ™9 e!>òŒÕÏy8Û»fºÏuÍœ¿?òêùûjPý+5˜kÎesͰ 9“§¼Þ0åmNí¾×œR¯«sêõqϧ{š'vßk..ûO‰-â©Îƒ¯ý®ó੦ÿ!œjòÞ|Çÿù¼ÿûÁyÿ¸ç“ïÆ=£âØ—£âÊ\—Õ8ç5¾Îª¼Ò/ ž`ÒLsj(¶ö¸0úHm欓¡X;Ãòçïß}+}mè"þŒvãÏZ±ÞèÝ·Ò×ÈOw²Ë6h`W6“ÛšÇ!“xóBžØVð§fO—Mláî˃¾ÎßNô8N5½ï?ÓÛðÈ—¡±Ðù©æ!XDAŠþôÃñíP'êŸnþ^zÖÓ¾ãšo0°ÿÀ+Á‘t<óz&ËwÍtþ¦k&ʼ†öTÿtó÷þièDënßqÍÝ£hãÛ?~o|;Yrxb¤sxÂÖj—l­®õ®“®õ.aëY—0tqäÕ¡‹µcsЈB}ˆÕˆÇë¿ëJ7'wÞôFá܆¿«,3>FOÿM¤1C8VÖêÒ·¥’p‰ÂÚŸó+SÏR 6˜Ð´~빞M lÀ,3m9ž²|¯`ùšŸNÇá7³8]®GÌûñuqÙ¶žó´“ñf­“M€AF‘i IÐd¸¼Ë¦Üð´g b Ÿ3õµê3ÀÁAŸó«ÁwØ “fÚò>k a\2HƒY¤™ÓåÕ…láî[ékÀ.ÐxR¿œ$ÍÆx³µŒŠo&Õ׿²=¸âiÏ6î㳈£þ ‰-¿Äµ{ãà0‚ÏùÕ,Ø(¦DáfhZ¿õ\ÿAý^Ú°ÊÒF[‹ÀIójG¶0w"}­” „µ²™&ç0«Oë á²å.ð¤*å€Ì&È&Гfkƒ¹ÊùÑdèØÙGwßJÔz$8–@Ãm—mcSX–…ƒÆHse%VpÙîO{¶°åmþHÆÁÁÁÁÁQ ä2Á§¸Ã óH3--¡ -ùv)Ì>ºûVbg­G‚cià²9ºÍ¢¼ÙƒXú›Hƒ=ÒL–4ª¨ÖÕï²eOð4G)à`© q‡"šÖo=€Nˆ îË,žFؤÙGwßšüÀÎZGµp&Ýžv”¥A*žÈ”8 ³BX«ŸK§éÖâgJIxÞ;G<íÙ¶³<ÍQ;¬ ûª•ÔËÖº•€ÏùÊPË9s<óe‚’æðœùw4¯ ëÖû!4¤™cÙ[<í‹þŠ ©×…FU.šÓJ×-ºûÖåõî9Gå°GÄO;úsj°ãk ÿ¦JË@¶°O_ƒ‰µÑ>ks:# i.Ìé÷“hRÎÁß;qÔÖª]׺uëÖ­[W}ï`=µî ÇR‚Ïy–zjÛÍ2Á'9êŒãÍFÊK“aãÐå98]^í°G—§½(s’AÒ?|jé²µ`ƒ†l,ä0Òèâ¶ÁûÙ¨o&Kjöe°'´ËvûeO{¶°ã {æàXð81Ç“†µ1ça˜ n?¡ætMë·ž‹4™GsÏ E!¶•ðÙà¤yõÂ&5Ø=í6Ip! «.›/…R c6ÁrRj“êgÚÂAi¶R6/îWèû]¶Ôßñåƒ0ê\ôu®ucVzÒLó¾ ½j·~o3qtž}t÷­ñíµî7G¥ð´“ñ]2$–d¨² -äñÜ€Zg._¶a„6™6K–A£EŒ.³.7tÙníàšƒceÑ´~Ûÿ»ãx’°Zæ<Ž:«òD›Öo=w¦€r’’ÐbÏ4Â]Ð,(ä¤yµÂÓÀ‚‚–ýd”^]qBæ¤Ù¿¨ƒUYh% ôÒ@›L›f³~Ô88V;H±ZÈG5X]ské ¢Îƒcmy‹`ƒ,C’æÑûµî'+TYÃtë†mÒB^lÅgMD‚¡¾ø©_&ˆ«Ôë ´.½oº6™6$ÍF!G‰˜4±Ÿv,$Ü|!Çò‚FêŸLppT†Õ;çáþ‰ ÎMë·žžÀ¶Y¾@·N¦-XF¬!iºXës”†*?œö´«òÃiß Ú?±ÐÆ› ‹ò •„¦2[)€‰éÒFId Ž70&ÓnÓ’{³8u˨s¸l7þ³¾Î*ƒ¬|õ@V:FöýºcÄÓ¾ãšoþp{Ú½ö ¶íß÷뎑)ßÍg¾Jë¿ñŸ²¢„\Qµ룾 S¾[;R¡ú¿E‘ÈLμ–™lëlkë°Ÿz.h?ekµ¹l­¾3»¾ó™òþyÔ7[¸ûV¶°ÎÎ)g·sªÖ½ÑcöÑþô5Úg­[·•›Ï$|½›Þx·g“op×wþi8?›Ö»/zÚýÓ-OKÏön:ü?Ÿ 7õºšU¯we:ueÈÙîO5ïOÁ¿…rKBXÿu¬dWãœ'ÍéÖx6ALšµUs”›/P»ÍIsýC +7<íª¬Ü€¤Æ’UYOˆÉ3ž¤výÕzÔBZgt¬Ð € AÙÆòõ%ÓfQ6“ #ÍdŒÙê×`-èœÿÞûó~x3îÚ÷bp(90µ9±þpË?~õÃäçGÏù²¯SÄ{¤²³@ÇÖL<{"«Öª§Æ6x£îOÜñíÿ²zädmû÷þ²mãÍ‘Gþø±üñÂõŸ’…ë]éWt¥û÷ý:°ßek<é²¥¯ÝnO_3~‡IbKO ROÍÍõn:ôAï&ot×m2þùÕ[—ÿÄäÀ­ç;‡/¾·ýL·7úüÞh­Û»2XPh î}¡-8¿ûÞ™ùÝp¶;[œ‰®™WuÍ”_þEÌïžßM~Öº×õ,ØPå§Öj6ALš!hêdÒ£@I}RjÉà죻oE»kÝcs(áW<í4ã½Z­v™$Í yA*Èú¤/Íb¬Ú®=¯z“òåF¶à:©×@“FušOË*&‹óÚO—íË»«Ÿ@Ïûsc¹¢e` øò mAAÚ°]_Gbã>gæ¬òFw|áÇŽæ>þã¸FÂ`¬Ú7ØüïþéXÿ¥K±~X¦kæµèÙ·{6u¿Û³éTÓi'Z  #j0úKÖlÜ÷Œæ><<šƒÑ¸)ßÔ–„¯š6¤B™×2ñ®™Îßho«Y5{"«vͼñnÏ&w‡užj:í<ÓKΠتxìË»ñ< ÜcLî@ëi%×kÞï¶¼íо;Þè ·½Q{>Þ4Øp·=ÕÝF~ªò‚¢Ê ßÔæ„oøâÈ«Ã<ÀQ€oBN5ýÑ}¦÷èù·GÏ÷užèq8Ž7œ XFŒlØ)F¼Ñ]·½Qø-Yí¯#Jý]*ßÁ9ìŸÞóéÙXÿ•¯Ñ_{É•œóBë¯ÐÚ™yõPgFh\B+œÛC{_èJ…¾{ÕÌ^’„=²qŸ=â˜rt;¦ÈÏZψz)ÈlXÛQgúhAËXê(Nšë9îJV¢ .h.£Ê¤G#©Z†ÿF55ذqh< ȇ1ì°¡_PXN*“j“iCof³ï‘iÒ¬©AYÙ-¼QïMoÔÛ´ó_½3á7ºÂý¯½Óéi ¶4H¢#±åmtó6ÂØvÖ%ÄWþ;,^ÛżyG&NwFš‚à‚ñíŸüaô~Ø<`ôþØïGï7Ïîºí­¬µž+_ÇúÇ/~üÞh·+ê:銂 TY¦|·6¦tgXPèšé~·g“$¶4HÂøµžÈù•óþ`ì@c—$ô ëßÞ1òÊ+]3™øí—3qw`ÇîÀøöÿpþ¾;àþÄì¬ôzE»ßÛíöíùÆ?Ö7úÛ©¾QwÀý‰;0š;6š›üüê¿™çd]ÈгéÓ=›†/žU‡/ŠÃb‹8¼Œ‹<ý2DÂ7µ%á`á0Ý1|1`H”[ù×aì-¢ ͼ´­mS¤ñ„qöý*°3ϼž¹Ø6öò…Ž9otç¿zU{ä¹ 3Ñ5Óýçž%]‚ë$z`[É9o„¬ÜX•æäî{ÍÉjJøæè˜Çµã˜ÇÕ™~õPg¾±Y¾k½6æ<ÉÖ^Ô¹iýÖs£9J%:!aÜoŒC >Í‘ÆZ÷•C¬zï}O» €÷På§EUˆÄ%bDÍ‹üìÐ+ Ëh y谡ʶÅzPy=ÆZ Š AGçÊR¢T5…_¤¯!ofcŒÙÒ£X²äQ.ÛÕo=íÙÂÞêU—V "—úáøö‰¡+_Å“ÊÝ—c§¦ßÝq*äzvóÛ.¾âïqtŸîJ Rƒˆ®rs²ùž? hUVçTÙ©lpù”ðÃiUàoÁÀÒ¶õèù#ñ£çÝ÷ÿq‹€Æ¥nÔ/µ'ÊÍ|ÿ›ÜLÿÎÃÿ¥'H4ì}ïšxõÍ®Üxÿ'uôGxTèü‘/û;¥¡=¿ò(øW#€v%ü0•ƒ ¹ØÎ *Ù’/ºãª/*Žl<$Ž$„©- á̦÷?8³)8tàApȵ}óï]&â“S®?ºO¹œ>ç3N_ðò¾;ÁËK{]*CóÍ‘¾®jjèk!uó¼?#ØÀ˜#!¶8Ë&Íä_G,~uG<¤Ž©3ªì:¼ùÎí©Ð-JRðm’™ò}³%ᤠ^{þíX—t¥]oºÒð\+9çIÄú.]ŠõMƾz0Kl¿ù^b;àdù%¯ÿ(ÿ|ýGUV³ª,‡o¼-‡=í}|ûÇ;Æ·‡.˃åZšóð.ßPëf,%ô¤™Ý+ƒF¬mGá‰K"SÏȪÙžöâµ*Né§Eø"Í‹>":JÐ(˜±j–·Gà2AÁ¯9u† ´`Z‡‘æbJ”ÂÊ þÒ"ÇÆòäCµùÒC—íÊמöla߯V3îL8êþê5õoÕxì«/e%êyo.êI¾ý4:ÿÃßgÌ„çÒ¥Xÿ¸gâ£qŒH©òÔ:¶|­„/XAÜÑåhC>œ»0ï34ß:Ïí‘\on&7~p íß å·—ó ©×¦Ôëý{wö_ÞþÙï/o—ì/>'ÙãŸùâŸC!JG´óPGt²õ‹[“ÅDpÉ`¤é¤-Ò”ìNíNÖÑ»Áµ‘Y­zØ#ÏxÑ6çpeÞOJ5  ˆ‚\äj\FFþuäÃ?\ɇ…¹†fan4wáø¨&æê‹z/*F6îs6Îûï½?ÏT€÷¯Ìœ'1áþä½ w´w°9Ú›˜ÚœpLm0W°””ì- ’t€m #^ HBFúrÇúrApà@pYz±væ<â kN°AËhM”á­‚F µ±çÙGwß Wøâ•c©Uïñ´“Äņá„–mO¢È°¬QëLþkA¤‚Ô дÞõ?´Þó`~TŒbôH=±âYh]Pl’z½A,È+u.ŽOa×íô5—mj‹yo4’mtƒ¦µv HB£ ¥½ z~¤v†•“Ï„‹½ÏªwŽdÕðܱ¡ð\B”_ºžt$¶üÉ™˜òÝz3•–•¿)ï¥ä‚R|Oæü¹ óL³d©ÛöH‘²|IŒ& ô¼~,vô:>rxü¸’W$úno*¤L+ÿ®LKÇ[¤ãp ã¥mŽá¾³/ ÷uÄ:¯tÄÈ£úù_ýÁ½»AwÛöOÜm+Ùfø“ÍHNðì¸çã÷&\a­3MëÝ•pÓúmCf†bÎoœ=JØ~ÚÙ“ó#áG±†"iF O!i†ºV#–-4ßÃI¼É+nêgjE_«ž4»lŸ~´ÚBmâ™Þ³á ¸TH•N£™‰ìdìO&cÞèΛh]¿Vn Y1ïp%ç‡ñ°ÉØ—w'cèØ{ï# oÆùðƒ+ZZ ÷§ã·÷fâ™xæõLüèØïfBL1ã¥j‰æ¤÷¦7êHl~Û‘šéš ÇaÜséÒ¸§chß‹me‡¤àb)rlË…;°õ¬;{pB[®ËýW¾ºÜOj:SG§÷¤ŽÂå\}¿èë¬ì¼+ dÄfþYëÖ-`Œ¹¯ó·=Žá‰úFspA*\®Š²·ªsª¬„¸Âö`éO¶4ø“Ž„ã G"4v,žS§Ñß üK³š½d¹ýª~Îg s'²…®™îw»fŽÏ¾“9> %¹æÜX®~–[’,·á·Ã#¯O‚/m ,OÀ™‚Õ8çÉwÎkÈ×ÙÚÇ6ó=³î¾¥}æXdâ·_ö´CÒLŠ.Hi„H‚¢ÎP°é2ùmÒlDµûçwßéw$æwgÿÑ‘˜ß}ïŒCó2Q0-¤…¼MReR̃¢ÎµÃlaÏO˜@ hG@¿§¸m™r…Ìe¸:`ˆ-bdÞÿý`V…7Nß`ó÷ÈM6°ﮎgâ¹}ÎÄèýs<àJÿàо_‚#‡ºfû¼ñ'›ïù“îÀó_¸Á‘ÎEC(H BcïÌ„çÈ5ûpÿ©¦÷ýgzûù24:?0bú…Yª6hÑ 0¾}ì÷£÷³ê#™8tØ€ãÐ|qc[*JËgèã==*»Râ©AñÔäç_üÛäç—û?»t¹ßÖj—l­ÎoœÝÎo`Ô0vøÒg±Ã°|yoÂÚûB)z×$ÄúáøvH»ýÓÍß#ø—’Žg^ÏÄÙK–Û£êç|*Ý9h.Ù»Éù³Çù ùYnIÿtó÷þi[ë3^[«»}Ç5w»/ê½é‹Žoÿø½•µª\sžÌ&¸NŒ4þ³$*á¹’•Ç?~üØø¤4'›ïÕŸ«bÓú­çàÍÀh-G[ägŒFŸUâÀÕ½XH…à7H‘I¹²„C~Ìäâ-䆩3Ö.ë•ÍH—¬¥àMëw\C†e³îô;¸N›@ƒˆf‘ó›-GQÉü±.»„Åú6„V¤xVåyÿ÷ƒæ+—í«zñ{®Aã~˜:g ¯ÿ®^ø8êp >´ú‚w¢Z·héOX“øðÆRŽÒÚQ‘>yàs¢æü”ojK*Ô™yíÎ ÉÓñÛ{ÓñÖgý×­ÏB¶\tØX;Zg˜¶€%ó€uÚmížÙGwßÒzIr,¦|·vxÚ ,Ò5ÒAYИĘ‹ÌvU¶I?+‚¤uØÉ£T€;ZDk7krØ(ȶbŒYhÔ.ʼn¸±á]ƒ¨Êh™à‚"HµX&¨G¶ðâÆô5äÊLË8¨ï»Ù·´óêø%©æ…`=GD8Öžœ9Æÿ9 VËÕ$³ ®bs:o¦EŽKÌác!8i®¦|7ŸÁ1fi® ÒPzÔÍÛ>4é— >­sÕ€ˆ‚„méô‹1l4£¨ó¢Hƒx ft‰Æ Õ\;d /mM_ƒÎ¦ŽÎïg$i6÷„vÙ><ìiÏÔëOájù™æàXÛà‰« ˜!ªò*OÄm\ðgÌh£lÓj«§5¶kS¾ÿéi'I3ùIJ)´v ŠÑ&ÍFK!ðµûY#¤cFÑ0íÉk#Ö‚€MJ_ËDjæ¦õÛ†`âb휱ŸÞr%4†R X#$Ðd Æ›Õëµk+˜ä Tôe ]6’f5[ºŽÕU¥iýÖs¤-êLû–&íçx¼y©!+PkÛ`ÈpyüÆ\z’±^™–¡¨3Ü&}á÷¸ftÅU¹A,ÈxBÓz×ÿÈZh€´Y ïQeõ:ª\;_g+@'f—íÒ%së:I†•´Ë6ÒéiÏOð¨‡k#³;ÖÆœ'6ÖTJÔ9ºŸù­1 IsWºÖ}X;¨¬Å‹óôrxÁV N/Bæç3[8ˆ©ªþܤ«íM~dÂäoöÑ~”vÇžæwß;ãè"åv²7Ú~‘-©7d ¤¯i­åŒ¤™F—M¾Uô{88*ÁZ]ú¶T.uX{às~e꩚DܵmJ¹07·`ñr.’é¡Z÷ru#»ú­V†A’W3q…ÖruÖë•@hRÚa3Pd}¢ä’ä4éK )Q ñß}§ß KjÏ‹¢vb•¶¾õ kºŒ®ˆù·V.Û ßÓž- $jý“DZZ°V}88hàs~u¡¸L°ÖÍ(Ƹ2-S ¹ÇúX¸(pe-Á×býW¿5ú.#Š %vb€!ÛЗÒxN’àâH6® ›„e°6TB•ìHžÛ¬õÇ érAÆgAíDÖx„,Ä®‹Ž·ÓY×# œËöñ±ó†ut¹Œ=k2ã Çr@[~!‰k5öÆÁaŸó«Q<¥5ùª_4­ßz.áÓ7Ÿ$Á´e‚äë¬åc½`æ'R\¡‘[ä‰\FVlº’x.‰#Á茈¼Â-(ä2AÕVeIEGÙ$ý•GrdrŽêDÛ0ò [b#þF´$ï7.jÄÉPVÇ#ü¡±%Çy.yŠËvÚY¯Ù¡888888X@ÊJŸ"}sWhù­— j·y¼¹\Lx.]ò´ÃOÒ­“Z<þ0rŒÒe£rúX,*oöhƒé5"¸æq\[Q†ñ´ˆöjÅí¼™´ƒŒ‹Cd²ÍÆ>µÎdkWœ596~ËXf(äàààààXÝÀZgVA"no¶¶™£Eš°^JÈa† ÏÇô´ÃOÚ› mŠl’6Y‹Œ>4’]„‘’|Ø$”¸þFI_",7ØñÕÇ1l2’Ï)HYï'-HˆÔcZo“¡¬JX'åÖ”¤D©õǺl'm<öÌÁÁÁÁ±:¡qØ hP¬Ö £ÃÌ C¿¿Ài6&=‘ÄZ÷­~1š;¾¸àO~ZDãm.{!¢Ë"ú$ÉH}6 ÐBh$-ê°—4{ÀA$]q|åõQçMys· ãrFüÆ&!j¨µÏÓFÉÚ1P6Á_IJíä\¶³JÆA¹٘N¥XFÑokJþ?µî#G}bmØW­< ^¶Ö­à¨|ÎW†ZÍùÅMù¢¯sý 6LâÄÒ\nîÀ"’µî[}a4÷ááE÷ev®€q\HIõb4ƒ0 #&Ëïìú‚ÚLøúh½/3Úƒ½2PûÈšŸ°G~V »³VMŠ=0Ö.ïCßÛiÇ„ÜÌ÷ÚÅ”(þZ_×òuÏð*Жú‘Ñe“¬„”m+ôn:ôAÿÁZ·bu:3ðEf«|γ£Ös~!ØN] 6šÖo=—‰ãÓtÌöÞ¦‰:´ÙGwßòsÒ\Ähn¤ÓÓ><I3D1î+â§± _íR9rŸQÚ]5H!®Ñ5r_A+•1ýÅ×t!6~VI•ŸU?j•Íx.aJ¨¤M‚5cií£&Ö:ã3,*ª[›$´–ÊaYÈÞɤ¯icÌðSÓï)^Ê~£lãØpÙG)<^£XªÞÕúúp,=j=7— KÕ»Z_´\b•6Ì;A_H‚%ý¤âLïH'4•##ĈV.?ÂeÂÖHÒbhå†ý4ȼ}d­zM0ŠgkRmcœÚ³* ™\ê§ûêgŽ:#í²ÐH8cäPeÁ…“˜,(‚$HÈO]”‚ q Ïh0àË“†w‹x‹)¸ 2ðî×új— HˆY„äZZ½þ›Z÷ƒ£VàqbŽ' kcΓ‚ºwØ0J,Ĉշ4s:ë%†OÎôú=ígzÏ´ þ´b2êLÆžµNZ%²Q¡—v”T4¶ º,€ã¸6 §à¶I@“ÃOK»õ3áéÅúQ;±3JÄÝ0Hù?^zˆ¾%“­hç¤õà4+äìBZçÕ=߬Ý6Œe Ø£¸ßà¼ÁÅ«4õéëÜ´~ë9˜ÙèÜl\8FóÓ0+?ûèî[Þh­û·Ò8ÓûžÛÓI³y D…µQÐ}ÑGlÃè†),ö`6{ŒÑÓHR†A¾°™fÔ B°3®Ÿ<£y nA$uÆuÝšµ^Ñwµœl3¤ãšv®b‡ ÈN¬ìêŠãA¸A“¹¸_Ñ€Ë6ð —mpp˜¡iý¶!þ×Áñ$aµÌyìÍU×¾Îv1fr?¹M#ÓÖÛk§šÞs{Úá'Ú‡cÉZc’˜êíá ²ÙŒô8´¶\A6‹ÂÚ$­kÔL«²ÖÏr‰µ$Š:ÖëÃ%¡W´M—Eï]¬-O>6@‡ UÆ²Õ Gg‚(³Ä¤ßB)I V ™àਫkΣ»<u¾L6÷e62=ûèî[î@­û³¼8ÕtÒæi?ÕtÚ‰ÄÚ0V0Ã}$1Õ.žÇÍÇqQ]žåÕŠ7¤¹/d웡[¨—7&ÇÆç@°zóðóbßõ‰ØI»À‘žóyE“c¡Oî5ÜÚ¨3òuZW÷[¶púoÒ×п4b E¿MóÜ ‰2lÔS¾[;R¡ú¿Q=9 ] ~– |Î×V㜇Qç:uØhZ¿õÜÓSë~˜cöÑþô5Úg­[W€ËøéŸÞóéÙSM§gzkÝÆÊ¡^W³hÛO=´Ÿ‚sÞŸjþÞŸÊLμ¦]rÇþ×Q?Xs ëŽ:³bu¦;^*„ÆŽý‡§’f¸z$“žÚ%€Æx0¦{ø[½YçÓ‹b }*lDÁ±.™P‹˜zè³–Ž£ŒÂ!í›ü­^¢]Ƈ4O §¾Ö«X«Z†ŽÑÖ“.Ôf i|f2†­Õ|¯”HÇmÜ“×oÓ\¢90:Ó¯¾Ù•ÎÄ¿{9ÏÄo¿Lt"äü¹ óþThzO*Ú»«c¨Ö­^>,äìß÷ëÀþ¾Î#_öu®ÿ”,\÷'›ïù“mû÷þ²m?YºgÓ¡z6åü¹±œ?ì‡Xþ˜üãW?È?†çN¨á¹Xß•¯b}µîÇÒ`èâàîh7$[ék·Û“¡óSý£¹ ÇGs²rã?aâÕ‡€¶àÞÚ‚ó»ï™ß ç¼3±eÀ™èšyõP×Ìbɲþ:8ªÉsê’:“N,δÈ4úœ}t÷-—Pë^- BcïÌxÚ±Ò”HÞ!ªraqñ@•1e!ã»8Þl6žL¢:&ý7íúÈ«6꼘0ÅŽŽEÉP´õþh¥¤.öÝ®ÊzuÒz­3rÆf…Úv.(6 ÷·ž6Í n;–Çs ®fd ƒ»ñ’A4Júm#Q&·aJã'‡.aÛY—à¾pÛÍ™G”Ç=Ÿ]Šõ‚/n”DAÚ°ÍÏÑÜÇ÷ø§[ž–žõ´ï¸æô 6ÿ»:ÖéR¬ßú¼0n_m[ïO…R— Á¸8¬FûbýW¾Öž…V';2“3¯g&sþïßÏù»Ò¯¾Ù•†¿$‘Æ…Hc&>óz&£nÊñ1åø„çÓ&<ÇgÿQ=>+´ .¡ÕÝöüUw[ãµwzÃç^ž¨õæXz’Ð(HàK[A´o!_jW}Îy¡uƒWhí̼z¨3ç0œóC{_èJ…¾{ÕÌþ×Qëë³€xNƒ]•jÝ6°$ߦy6ÿxV1uî?8ð v_Æ"’À‘c £‰¢6꼘ìšHˆfçÅ)²© Ûa°5jK"#9ýøë“’ ˆÈ±þH«ÉFq\ÒmÃXg1q‰ Ö>BRƒh[Œ:㜅ú7¬c†%ô‰`ðâEm« ÖyQ¶±Ê² Ò@#Çd¦ÉBoɱuoŒ®tç›]éðܱ\x.Òxlsx'I‘/÷_ºt¹ÿL÷à›gºA7¸Žò¶u ñÀ•?Å‹×Äv12šûððh.2qº3Ò@°ÒP§U¹k¦ûÏ=›"'Ôˆ#8°ïW™xæõÌŶ±—/tÌy£;ÿÕ«º×I—0¾ýã?œ¿ï¸?qG;Ë?£*«Yâ­‘‚¶Ip 8 8‰g^ÏÄó‰üž|îñ'wÝö'A+ð‚VXÞõÞôFÇ=Ÿî©µ¸…§_^À÷0C#Ãsð±ÓŸlùƒ? $ É=\>V~ÎÓ +7d¥9¹û^s1¡û_‡÷Ì À{f/ˆ¾åklÎ×%u¦)YÍœð6-éIñf“¨u¯ÊCÿÁ#ÿ ‰10Á%$v³£È\}p QdTpiÍ× }Ä%͆G`50)T@¤ùiAZÐ,˜Ó»/ ¨Ý˜Ä¯&)´ Saë=:àÿIÊ…ZN¦ø6[NŠ’xiJ—ý‘ßÚcðdÅñ´«²m1U :»öŠ4رj\¿´Q€7î:Õ›U2ŠL‚ÜS˜ý¼°¤SáÐ#|i«$F¦O¨Œ{b_]îï¯ÿ®+=å»ùLÂÆžsÍÉ]·µV›ÍÉæ{þ$ DTYSe§²eÀ僷0þ TÓ*xó†5»oþƒs{*t ¤€ŽÄÆ}bdÊ÷Í–„Ï•v½éJ/¶gg¥ôÅxþª; Lo ÓÃtOô·â}àLïûÍHÏZÕ¹‚¬„N+a¸ÆíÈzì±ÅQF””pp¼WzœoŽôuUSC/à©› ý—ú]RÀÜ–½{'"Ÿ¼7áéùñuÐõù¸çÒ¥ OWúÕ/º¢`'ò¨ Ï¥K±þqÏÄGãSå‡)ul©Z•ÿp%æš…¹ÑÜ…ã£Iò[_Ô |Q1²qŸ³€¸ãÐ*¸„ÖËÊgŸ]V` ~tpìÏ£ƒGï M€Mà]°É™p¼áL‘ ^!F#p± I óᇩ|XÜ$þ7qÓò^¹RX™Õê‘ÆcóáÙÀ{ÿK`'ày°3³ýööLwϦ#_öìš8ÐÙ1Ô×yx¢¯³š³¬üœ'1áþä½ w´w°9Ú›˜ÚœpLmpLÁoÙÿ:@ ce®‹kcÎ#»…:£ÎÆ%_f‹Àð~úžÙGwßrÖu¼¹wÓïzÚQ4Q:ýB7L+Éx3I(É£ 2B 2'¸ÐcÉbº‘$driL@·IùéÅÅsÚÜ~°VM MI0IÇ1i&¡×¬k#¸ä2A³¥w…¢\äiÑèÝ€–@ëÛ¬•‚਼Q"„kÓ¦ã6¶nQçÙ•›U˃láÂïÓ×\¶×þAïŒA’fZúnRàA¾3á ­— Ž>{á¯'Ôxì«ÿ.+²rc!ዤO¼ìEçû¬zçHV Ï Ï%Dù¥ëIGbËŸœ‰)ß­7SiY¹ñÖ¦ Jñá3 _‚“ß¹„-o;ª¼ ¨rôÚàßF Æt¹Ç!ÐñÒ¶@G¼´-ÀQ°%œ¾è®Û¾¨ EZ“ðÝÚ‘ðI e1ð— ¥ö¤B¾¸÷=_¼¶QgŽåƒ;°ã w '÷êá®ô™ð¹Àp®¯óp{éu¡õ8ç!iÏ´…ç’?ÞZHþ(N‰â”±$Ë_è»jG×4ÙkÝ}Óô{h)QhKK'ï¨= ]îšÁ¤Y«¦%ÕÌz¥26åFÑM²×H°¡‰†Šè9‰iQç±h!g“Ђ9DšqúkbžÐ{‘úQÞ‘”j°å€4¾c0¶ybü¬hI³*›-$}E̵Πv2:®½:¸²ÍøØµjQQY:nš„ à FŽ¡v34öÎLh ®#÷i•°rÉæý®äüJøÁ%<ûòîd îÏùï½?O} A:~{o&õ‘GÇ~7ÒD¬ýÉ–Ò‘p¼áH„ÆŽåÂs¤Lž‘$p±”*?œ®.ñ2äZÈ Wn(Çáhô8Þ8ÕãpL9ºSâ)±E<Õ™~íwéSMÿC8ÕM¾ E׸ç“÷Æ=}o}Y] r9@³Z«gÛúÂ@V͞Ȫ²2µ%ás&oùƒõ9ç³…¹ÙB×L÷»]3ÇgßÉŸ…šæ\sn,× ?Éò,µ¾:z¬Æ9O^Ï:£Î´´Û,T¸^é2D×Ìkÿ€Ü—ÁƒÎ054öÍPe-A!ýƒ±3i+Pú ré^ܦf±ü€È{G8KN\‚Ûi“°+‚þ¡?‡-ª¥E\sQ‘ÇGÁ¨3<ƒùUÓzƒ m’ŽÛ$œ .ûCß¼탇~ôôÒÅvæQ:nòQ„ìú”jè 4\&?×"hÆs$i6ºA³xBsèÑãè|³+ oÆéWM¬è¼Ñ]·½Ñàо_‚#‡ºfû¼TÛxþ w 8ÒIØZéÑ×ùۉǩ¦÷ýgzûù24:?0:O–2’ØáO?ßÕŸþéæï‘›™às¢æü”ojK*Ô™yíÎ ÉÓñÛ{ÓñÖgý×­Ï:ÿBvÓ`LE±òГfš²™üÖ:]ëØsǤˆ†ê=.ðò8tr®@•1Í՛ʑÏ=Z㹂DÖ©÷£0Ra-i&G-¤?hI³~A!, _”©²Ö­ÑbsФ¤«†Ö»ÃØZmnBA"ÒŒªk­©I¦á¹Hý·àÒû:ÿR´I¼u®#×(ÈBë‚b“@p¬#Ç,Kåq‚n—mï/=íœ@Wÿ²²žc6,àWЕýðQ­g¬–«³h¯;s:ÚAÚ6YR[ÃÊÇ›;FöþÒÓ¾H#½ÁnæÞ€Ä(JŠÓDkÍãÌGë)2¤w8>Šö£B”Ô&‘ `${@vrhI3¦ãùiŶÍòói/šeD5“tYO¼0ÅGYýtÑeÑœF“¾ÎO/꿵#‰ÇBO¦Íôß°N›„6[X\d©u;q²m4«×…Æ‚ ü` ,„È®ü)} ’ÝÅñWð'‹g³Iâî,àX5·ŽZÿpÔè^¯Êu£u¶ŽÓ¶YÊ/'ZŸÝûKO{Ûþ½¿ô´«ºÅd„KF^ôJDmÒÏ í‘@«Á4ŠÛâ%IW D_ˆsyóE~˜2âˆ,¤ã°µ?+Hi­óå°cï túÄËñRE\§..®Ø ~Õ6¢ï6 ö¶_›ò/éÃÇŠÚ’>RëLêªÉ^C¢¯Í§¨1û#ÆûC“‰Ç¡T£u^ƒ`Y,XÜ“/ýÉÁÁÁÁÁQ¿¨K_gZ.@Ú~³é·—­Ï¾øc’€¢—þ×d»1¾ é#%5{xÐ-GqÍ—¦‘>(j é&àˆ,éjŒŽÀKúH HŸµ­Â}Ô¦õ^l¡ˆsì‘‘iÇró‘FùÿÈ3¢6`“8m§n1·áÓkšÍ õ°' Ò:cIl·.Œ»\ã¤0Жnme4¹F–Äׇæy9žt¬½ÌjÖXs¾ŽÆøœ1G KRî¥Fë³-O#1I: ·MR^ÛI¢¦ÊXVa–2Úèal.ÕÐÇJõ `d'‡c´XAFO ]o#y.ÔD›l‚‘âëd'v…š "4¿Cåõ®ÒÚ~‘Êo-A‡ªê…¼*Û¤;– Çh}¢8Zç 3­¿™Ö¶ý[ë½·-ª´±9z½ATe¡uA¤µ•M°8JÌÖrÓº9ÌÈ4ÆZ]ú¶Tb.ZX{às~eê©G— 2€Xm››€V»LËHKÁMB Wß"ÿtËÓžvÐÆhõú\z$a%Ìùpƒ¨Ê uÉP°ñ´¨ÊÈœN±&2ÿé]Šq¯ 2Œwb­3ö˜ Ũ²Á–v¤ÆŸK›''$2±¨öB£ÖµÉEpld$ 4Ù¼HÑlT!ÅÇ#ŒZkôî(Ö¦èuÌdÄ]páÑÖ/¬ÄyÍÒT¥ïÖ? ¡w fò›µÚbA–H3Lƒ¿ªu¯8j‹µê3ÀÁAŸó«šl‚õà°}9 ñ[㞥֒ú§÷üE»†· ä`+HʈµÂúýd«étŠ4›3«_OFµÑ\r Îð‡ÏN:u˜+̵{±R|T3ú’]ì ḇ§Êhw£ÿëE,d;Œé`PmÆý y 2™`‡ -¹Ç!ÚØ3®Së=‚Ú©]’ˆ"y¼ÄhA"ÍéÖ¢`Ãzi 1ºÌ´pSç'’Øò I\«±7#øœ_]X%ÙäŽe uI:|ƒÍÿîi÷OïúÎ7¨}”ÀŽÆÔZàÅvØýWëFl¬“$yZ”[ MY·°¾–<;­Ëø´B‹rÆMoŸG‰I/šÓi—ôikÕÊ0´â´ |ªÓÖ©/iPÛqü]¯ÉÆý2&Ü&kÆ ÆQß" X¤hL®Í5¨^.\›±gZrcNAš{_,ÈÁÁÁÁ±:@šç>%Hõwk·nµóF9}ñ zÿìi÷´ïúÎÓŽ²â‘öp¸Î‚ElÞÌæ þ[O|õuÂýȹ+’! ²VïÁLú9hÛéxAëï¡èSa—m´K _2áªQì£EÆ.PÒ oç‚‚q£Dâ¤ÄŘŸ¤Ïè7B.$Z›Òú ¯×:Ã>¢ã¡F³tO!·ÍŒäp6A]n¿âöBÞ¦KÄmì®IAôWMgf§Q9£ ­ ŠQ¯ ª¼µÎÅ‘˜CýÕ-øЕÐKiQ·6l88888¬Ñã|s¤¯«VêpRPoE/\bdþm1¢ØJ;¦ëÔ.\CFlÈBë¬ÏŠÔG,~0Ò)}»ÅDÜ Z‚‹Ü0 2ZÖDLéÌrבÊZb[Ô¶ÙÞážê–Ó)zcc›áËtä>¡õ/A4T{ÕŒQgrL´2 2©5òÁQ^m"n²N|i¨‡Î‡Ü—ÀÙµ ±p½ÑKjw3ïü0ƒ÷@­³Îœ. Ö¬3ðø˜Qꥷ¨ƒ?©µ޵ ’)ÔÆ¦!&i4Zx¥ßo²ÉÔß&v&n=Ÿ@‹ùP=ÚȨÖî öm ݈öäÉx§eßó¤~z±Ï2Ê\kÖú“ÇãäÞðßæ.¹ÓÖŽG^0’jàïI»7¬?6î)etˆµq\£ ÙWäzaV#’jÀÁø=Ž©kã÷Æ· ú–“^%¸N3I‰Þ‚,Zë)¦­}oŒo *sÎáààààà¨54QçZ7†„‘Ñ´’ÔD¾ 9pëùÄN¸íÜó1ŽH:^=H ¨­6öLê’ÑbDLsUY›Ÿ¥ìÖ._þ¨8¹7Vk&½‡q{ôy ±W46h@°I ¢ ä§ ¥¯Y†BÒ,Œ4›Q|mfD=7’(­KÔ.ã–díAÒ>~hãÙæWÎø~C¯}7K´nV‡MR¯P…ÖÅU:7Whô½9ÁeÖ¾mGipw Ê×·¬üyIöU/‚ ¥’oÉeIÕhˆäÀÍ¿JìôO·<--.¹ƒÐ&A®ÀXB€Åø¥?¹ˆMR[¬o ÒSÙ¸xN•µ‹Òð­£³qÙé[L ´² ¼0È:Ñ7b„?hÅ*z5é¢] ˆh.¹üù.“ý!å%ÚÑÆ×F?žd{ðµ[È£q6ϰ¨ŒbE:¼^Ú12'Šha%Ü^»)¸µ E”Éh¼™ëŠù·Oz7ú ÿ`­[±:ðøñãÇ×vQ8$Ðu"Ø Qn2ëo+AbçŸå¯ÿxó¯ä „°»/k“6CèRFçqÚmí(ö†kF$›”‹ ÉüÞ¨rÆËÔ´®Ú1!E#ˆtj#€Ú¬xZÇ mÿð±d[Hƒ?}Þ>$“À­2Kf¾HŽí( jyƒfÁ™¨œ°º[Ì#XÐŒv‘"ù0c¤øú%ƒ vÚcƒ!rŸ'“¥“Ë@Z×úÒ7úÂM¼‡¶ß¸]_¿B+‡Ç– =Ój¸„Ÿu’ˆ»˜žW€¾Lá[nàÊhôW?L~ÕÀ‹A{–0:B `FPÎ?,ØÐ“ ìÿ€ê5“@`Z†Ý‘mšH,öÁ0&Fµ‘ ­_5ôë€Gü¼¸GÌè ªMg¢g˜WXëL>èé¸OìĬ7§CÉ·±¬‚Ôdk ìŠ#–'EPOQ\ßÜåÃØNÜ*è ‚Ä$dD_?2kÖÚº<Ë~ŽZr¿bJ”zŠ:“”·H‚èùÉŒ{–&½ @·>»÷—mûµÁØBN¿˜ Ç’a*2ÍŠÖÑA_3 Øw™Ôþ¢o0´‚ ­£³^2b®¤¬B«uF%‘l÷][§VVA’{?†HDñ cý듘 c8˜Gl'9zèhì"HdVHø©÷±éˆœ6å8ª Fµ# €ÐÚ ¢”(À.Ï|¬5h¤™F‚Žzùåá¨/Lx>ýh4WëVppT‚¾ÎßN„ÎçÃÊ|¸ÖmáXJ+¦êDë a­i¦•YzÁ†5®ÿxõß&?‡Ûmû÷ýº°¨$¶ã¤Ö¤¸'.FIaJp»>»¡†ª.Ö¬ï;ÎJ€MBÖlš2‹2 Õàú¬]¨GÚ·aqkk›äP ]²-ì+ˆFÃ’6"Y·ùcƒYÖFX  d$/1&OÁu.äUY•±œ~Ñ$Ñ~;êyA›ß‘s ]ec›I½€&à…Þ¡¼¬ÅEüXë^qÔ š“/Üö'kÝŠÚ@²¿´-8\ëV”‡uëÖ­[·îúñÿsùp­ÛRSDÁíZ7c9€|ÔMÔÙHÍ”»¬{VNc:ùù•?‘4ºcn“©§Éd#ýE ×ô $0ºvØ$ì0ôµÚ¤Öä5Õ§ Ç l­c´6êŒ ï°~À%ŽØi¤ ãÅXŒ 4- úÖèœÛŒ´ÎZ7 1¢MÙÉ´ná ‚lÌSšk#úÚöÏ•‡¹ÍÓƒ¯u‚ñ‡Ö•F_†dspp°Zrdr§Ž'dÔù©Z7¢èÇß®H úv3·µ%(YšóœmÆÔ'Ú%Œz Ò“EDxð2A£Ã‘ZE!<˜M¯=þˆ[®]v©÷Á9& ¶Q||¼jˆñ“ãI.ø#{±èëL\;}Ên|Eô%`ã „@¡Ô´íµŽÇ¾¼uŒìûuÇHÓz÷EO;ü„{à·µn#Æ”ïÖŽT¨iý¶!O;¹,%üàŠÂU›k =Î7GúºjÝ +Äú.]Šõõ:ô:=m;®zÚäüYsGU¯«YõzW¦óPWÆ~ê¹ ý”­Õæ²µúSÍßûS™É™×Ð[‹láî[ÙÂ:K8§œÝΩZ÷»~$š ùº¡Î¤·»{ÍÆnA iý‚ân«m¯.þäãÛÇ·ú/£÷@¢Îˆ®!;6”?žPïïA& @OÍkÕÃHü€kÖf.ÄÚvbh];p;ÄG­õÓÈßCOôµÖ:ŒÅe…ÙœÎëzšÇ%äx@hmì´)fô?ä™z-¯ÄQç%šHu—mÛ&ýah™­â·kÃÍ…ÆÞ™ Ïu u¾Ù•N_»õ|r~Â=ý¾ æÆŽ×Çb8oÔý‰;0¾}â_Æ·“û¡ãl&ž=‘UkÝFŽ' YuîDV íÝÊÄ¿{97 .(´÷¾Ðœß}ïÌüîÂõŸ’…ëÎÄ–g¢kæÕC]3°œËÖxÒeK_»Ýž¾fü 8’Ä–†Z¤Y}¤º Î³ò™ÉRnÍäöòú:/Æ·ò‡ñíXuÀŧB$ w¨ÀL6 ¥ËZÿœ”kæ}±xv]ìµóg‚ãÅðÜzwdt<öâ0£M8Ψl˜eÔ_1bî]¨Ö 'Hé-º€ÆÛÞ¡±5,‘µc«Õ©/(¨×ÅtÜk•EÓiPОláN?Z3°z£³gzß÷Ÿé=zþí©£ç;Ó‡iÃNA‚ŸpÏñÙßeŽž?ÕôG÷™^%¬Ü@1]÷ð|üÇqºåiéYßà®ïüÓñØÕoµQêÑ.ãißqÍ7èlþwÿt¬ÿÒ¥X?Y2«fOdÕ®™7ÞíÙKÂO¸–I…2¯eâ]3¿A7Ú®™×þ}Û³©ûÝžM§šN;#Mð¨SM'm‘&ãø§÷üEz6Jý]*DöFµk}}88VŽŽþ.st4бwW ƒVFhÝàZ;3¯êÌ­‚Kh…wºŽ¡½/t ¥Bß½Œÿîì¸Ûž¿ên#?UyAQå„ojsÂ7|qäÕድîwý¿EWå:ñu&aL²m­{6e,_/ß~á÷£÷Ïß¿ðûÑûˆ’"¯h›©çƒ>©ŠÑB»@Ðìjj#º4(Š á„áÆÛ¤‚üôbjL{ÈH³ù2G-qG×µÖh!Gz’ò ²”þ[øoDƒ‹Q|ÂwÙ|$Œã¬M‰¡Onvv£NGͯÅÚ€Q¾bu&Áä³±*‘ðMmIøPèåÚ¨¦„mÁÀÖ@–DGaŒæ>yo47|q°ùLwWúÀŽ¡ÐØ±\xN ?œFsÚØvÖ%Ä?¿ò§ØáôµÛíɾÎ7Nõ8"M§ˆÔª²:§Ê]3¯ÿCÏ&›dsÙ¤ÄΛ%ÿËŸé>)Di-ßþÉà»2Fïý~ôþñÙcóáÙŽ¡à‹C—û¯ÞÒRù)ßÔ–„Ï& 6Éõþ«7Šêùøçï»îOÜZ_Ž'²rcAVš“»ï5[xÔ,äèÙôÆéžMÃϾ4|Q<%¶ˆ§jÝöú…&%J}8l@°¸dX‰4´Ëk©xfÁùû~?tEC—vIœF@,ÎÓºL`S¶‚¬%y¤àî×. Ô/¿3Dš¡5ŠÝb$^-Æy ۆ㸤[³6í‹1ÝŒ>E¹¶¥ú4+çJ4Ëøh–†¤¹H°©`6>´˜¹£`­óZ^&È’G°Ü£V?æýùE'WGbã>‘*Dq$6îs&ÐQ?\Ñú¿=äËÐyH@{ݧ{'C·v$‹1¤ædó=RŒˆ-b~ëLlp $½†¤<çÏ]Èù#¿Ÿ?> Ë£6lyµà‹%žqÊwóDúÇ=Ÿ~ë‡1u²Ÿ_A¶I?+¶¢tAK‘!ÌÏ!rIzEã³ëÉYR_§ªu`:¾XrÑ»yZÿloLé>©ü¦‘uÒ%¶NF’')µ66¾ö— ²÷Î(Õ0Ê6V?œ { ÒmçüVKërþWæýÆ£ ìLjԊLÁUùa Õ9á¹t)Ö 1aL:Öå+­T#çS©|%DÙAI_Ü(‰—û¯ÞŠõCÁ ŒrÁ˜t­¯Ç“ˆ ÷'ïM¸#M§‘¦ÔÀÔæÔÔ7KÂ%ƒ‘¦“¶HS´{pw´»Öm_ÀËiUDi)¸VtÆÅ‚¹ µ^,ÈŽ¡‹gÿ~èâÐųí6R^$«ÀKÓHJ‡–µá£›óZÒL&ÓF‹ùà¶>ÃvØ@ã¹èw‘7$Kq"D•`Wël­¹ây¤&[HÎM\?ºÀÃÄ%Y¿œQ;·Ñèé£ûhôZgòÁ@+q1êȵb¬r^[†k.Û¶!¨-Wª·É(ìZ¡Ë$üÉæ{þ$œ“±/¾½ÜO+9‹ßÇ`IrÏOôÄZ’íxÙȪwŽdÕðܱÿÏÞ?ûÒÐÅ¡‹ƒ»£Ý=Ž7Gzä±ŽÄÆ £H—¡ây©zÚ»+ŒÇ¾¼++ãžÏ.]î÷'÷<ô'I¢ÏÁÁ±2€¤9 Š*û§[žn-ºv OŒtM”êËo'zÐh/Öåk,i_ÚBê/‰-¿0³µ‚®ÐÁ£ÖW†îè¼zàisâi³µ>ãµßc¶íù—mûáHšÑð‚­${79¿qö8¿!?É:㱫·â1èö#Ù[${ {bY„*×I"núTÉô2Ö´xu“f#"ïmÏ‚n@cxîØDši.È(4Šì’Fr¤í^hhÓÄwI ‹è8JÁ €Ö,‘i´ôP•…F¼ ]Aë%2ÿÉzç œ&C›ÏÏ&Û‰Ä6n-X¬SŸ4Û¨Õ&„%ж=8Šo¦ä†#ð±Dpi“×@GçµiNg)–â„¶¿8¶÷kÝ«¥G ¸÷…@0Üû§‡¿ú€­ôc¡¿róµ]·½‹åuˆv£‡êh7àgð#Ø 61|ñOÒaÀ_aI—à:éÆ·Æ·ƒGà ¸¶XÉïÑÈ7'wÝöFgÁþ´æ,}‡'ú:û:·÷™´!çÏeÕ®ÀO:† pÞXföÑþô5ÀíZ_‘ÕˆeÉù§Ü8,׺g¥‘žÌ¼–ž¼F/ãn®áÇÃ?fZäw<ûêñìqðàx­»· £Î@7Àê(»•Y%[¦”_La”y4­Ïžp·Í>rD™uV;"§ÿ&<ž; "„Â& 4"*ƒH3I:iR[¸RÒ€`&Q ÿ‰MŒ¹Hˆ‘E£ÉÅv¤‘œ–¾d¤]†4TiÖ{< ‚ ?ò¡l‚Ø$£‚ <´IÈÉ:µQgÅ7ËGˆÚ¯d#º æ«.Û¶¡Ð9 xìhé¸Iq¯-)‹1ßÚTNËÊ¡)_$ý"?` –!r@Àìnµn™M°î¨u“Œ0RdrÍC£¨6»ºuÏ4DO³p;,ŸvFd›¤Ô"à”ààoq̸Á®µ®Ã‚ ”yÏV´œ#“ž@jQ¸—ŒõBJ"XñŒD#ú踙ֹH—µ.¤ÛFÄQ;iÆ 4ËÓSr½#5¹œQOa‚£qmÆ›QoõÛÆ‡#hôz­èÅØj•ˆõ_ý6s‹®“®$`_­ûETKCÙ‰#¸4Þ$ú:;:¢On¬:ì‡Ëó»kÝŠŠ·A²új88ê‚Ô@hë"ê<ûÈñFf²iý= _õi\2È"êxRi<6ž³€ógzOƒ3½ªŒ ™Ÿ;oh¬ëòpñ"@Ø[ 6à7Æ¥Šz©ƒÅ÷ IšmRAn E¢=­ÉÜ„$×G‹g´›S/óÖ»|£Îä˜hå(8ŠÎ[umÈ£ …ðLHš}…FU^›ætf)jÌ·!Œ%ÑžláNÿè”jTƒàÐÞAÀ Xë¶XÁpì¸û÷²ÔŸ+7òáêëáàààX*`Á†*ו9 š KRnó¨sÓúÛ/?&,GÏ›?z^ ±Ãôÿ_+cÐÊ*0áÓÚ½k£<|´v`e¬WÆÙ1Q†Ó‘¬S+öÀh26Œ[²¨r¨‡F‡ ô}B]â;Ù΂ mïàžES‡ zóýÆ2d4=|d wú‘U" ½›}а֭à(Ð#‚/wãXÛФD¤úlAK†RÜ&Ò©X«Ÿaª”+_sÝs)t¦u¦÷ý*8Ny­…q6µµv1Zx‡Ä¤3"cz/j­Þg=Ô{Ec—eE†Z"ˆéµ*Cé­í—ÑÝÙ8NX°±º´Î8ÞLKbb\ägíÙ\™¨ƒƒQ1ŽúÇR¥ çà¨QçºÍ&¨Çì£æ{æKiqeM—çÌ÷¯ÆÇ†Ú#8´ïW` ¸ïW ~1óOPeL@I2Z(Òbø Sd‰¬åfî˰.ìzB†¯&éuÉÆOÜmMÈ>ë§ÉEŠ()Œq9#öu^K°¦È,KóµîÇR@•W…9‰"Q£8leh‹M"ÖyšÖú=—àÐÞA‘Õ.¹#­ÜÈ¥Zs:ôi`’Jf´ÖuZ÷e$®xz±fS‰¦%dêlùÖ. #°fs‘‰Y„µxÆÖŶ¸LÐh~WpÙ¶ {ôý‚ÛÐTÎØkk›9nBÇÁÁÁÁ±¶@®àzÊÌ1·~1û¨åDìÙà°a¤ÅÅ’”ýÜgci¾´UÁ7‚Ø%Ç}µvoq _ôgôÄЋ‹PÒRŒ#Á¸Ô'áE¤³6›fƒ¶::“)Áµ±pLÇq&BHšq\o¯.XbZê-¸¾™ƒƒƒƒcm§DYE‚ 3Ð"ÊÔ=„Z#óPàg€¦õÿ‘Çž«C Øò I”Ä–_ø“ˆ¤.(HCŒ“ŒîËDò”Å&iç#¾‚ª¬5¹#³j!Ú’8êl¶àôŠÆ{͈¾Ö³%××h“ `Ch-åˆ\k¸lÛ†býdËñ§v4ô{Èh´±Ìêyçààààà`Φ\\&¸ÚnuÈNΚ.k Ò¼54“hZ?vœè¥$Ð87锼•‘j/õÓD‚E3Y¹¤Ïí¬Ög+4+O&÷¤uF¤EÁÍÉ7Ú|ÉEŠõsÒ¬õÄÀŸú‘*¥{VåláN_g­{¹4˜òÝÚ‘ 5­ß6äi¯u[88888jò¾·ª£Î$JäTôe ]þYÑË%KIÜó“?ÙœÜó“?‰öióü…ÚL„x1áÑa7ž Ë0Èò¸¤ŽRâ͸¤MZPl’mÑÌ® #aZ¤ˆøÌ4/.v¼^ßYÆ81ÍÃ:vNsÞ¨â±/ïÆc#¯þ¦kÆÓ¾ãšoR^O»÷ϾÁŽ‘¯tÍLù¦¶$|µj! `›Cc߄ƬËdÕ{ïϯ*çðê ^˜R¯ûSÍßûSpOht`*4*ç¿úA.þê¯c€§mÇUO›¶f5«^ïuéuÚOÙ[ì§àgב/û»È’•Õë»t)Öë‡ßÊù ²É²vö’´³;§¶ 8§º2¯¿Ó•É]u™õ䶤ºNÄmÙG{_ÈL–rn.c6ƒš iýH'=/5š“Í÷üÉædó=oRO䕈Jè¬h ¨Ù\Õ&âFǚŒqmzjýòÓ‚Ü d­¼}âó :É£ô(Èݹ¾à²m"OÐZh'$ÆÇò[íãA¶p§¿Ç±òý:Ó{60<Ñpà›ÐX øâFILì¼ñ³üãì£ÌÁô5ùÇ/ïL~Þãxý®´ ®úÒ@Äú¯~ÉÊWx¢øhÔ|ù…¶ Ü#+7dE²·4HšGéñíÿ2¾f©–ž¼½7­q îÙt胞MYujöQöDöQþø±üñ¾ÎÃfïOÊ­?«ÎȪÁ¡½»‚C™øw/gâ4?(ö’Æ–¾þ)Yø:vøÒg±Ã9ÿ÷ƒ9¿§}Ç5O{fò»½Üq™ƒ£:@©FQ°¡ä­^Ð’r“ÑåÂQ^ÑnRý¬—4­?àzyàîºíâ”(Ú °Œ -(4e­ sØÐ$÷qé;"µ‚ÆÙk—Éò0Í ù©Kë-Ò"¬‹5·ê³Öô¤™Ö~ZŠr» [Õ°²Èù\™÷Oœ O=ÿvâèùG÷©‡Ù¸O,z¶8Ž7œ‰@pï  7êýWo›U³'²j×Ìïöl‚‘iß`ó¿û§O5vžéµ6¯d?FˆGsÍùw}çŸf‰|ÃÜl¡±c¹ðœVn(aëò£¹ÿ8îñO·<-= #î°=±þK—HqjÜßúì‹Ï¡òžO?ŠõOùn>“ðù½ö Â~é{*”ú»T¨mÿ¾_wŒÀ³ø§÷üEz6Öåk³sAÑKeׯM}gv}ç;ÓwðÈ—}GscÇGs¾3Þ›¾3™øÝ#™¸?µç/þ”5ŤΟæÜX®yÂóÉ'ݳ©Çñú;=ŽäÀÔIì½ÿáo‡/†ÆÞ™ ÏÁ‡ X~|ûÇ8ßpâTv}]¶­ç\¶äÑ[Ï'B"8[¸óÖl¡¯óð§}Ñî÷¶G»Þ©Í ¯¹ˆ‹eþ ÇÕn²¹N6ÙœSÎnç”OTÖòÚBh\BkpèÀàŒÍ׺E«è®XtØXQg]6.„?¯,vdÜè=7=/?Ü_¸Þ¨ûcx£Eîð[ý’VÁàëL&ÇÖú:ë)""8Í "ãÚe‚(2­u­Veí¢F¬oF‰Qêã¡ÔeÛ6É‹73­ ™®òáü|1"ëHlÜçL°5åKíI…rþïßÏùû;Oôw¢øôÆ}ÎDWúÕ7»Ò—û¯|5[ªcž??zÞpì’ÐXjnÒ¯‰v¿çŽ4Æc_Þ•Hìhå¡JŒˆ-bD•Õ9Uv&¶ ¸Hvåž?<Ñ× ©¿/ê½é£"'ÔH#ì‹/ê½é(á‡Ó(æ I,é6¿íL¤B·v¤Bªü0¥ÊŽÄÆ}bdÊ÷Í"E­Ú°³º¿…laîD¶[K¶D[$ÑX¾k¦ó7]345pêèôžÔQ4\Aó^—ÙBöÄl!ÒxÚiìšyý®¨±®¬þÚ™x.èL¨²ùààà`Nâ¦Ê«>ê 1ûèõßéµ\´…ƒF[:–´Þдþ´“è•‚;àþØ%‹Tu1¶„U¸P Qj&£ÛZða$à!²Óƒ#;tR d4¶«•3&ÍÚ’ca¾ß,Æo¾ß&e wúazöZÀyÆ‹´×9îÛ²¹|—„„üÖ™x.häü¹ 9ÿRklÜg€2å%=Ž7‡{á9(ÞxpÅL¼1á¹t)ÖEPæë¿ò•V>AÂ&‰-fí$+š›ÿp%¤QFsŽæÈO_Ô{Ó#¬0,èuvŸîu¶>ûâs­ÏÊÊÍgdJ5`ïºf^=Ô5ë»ò•66l­EöžÙyÓ{ƒÐˆþê{oŽ ¥~WúÀ®4|HÈÄg^ËÄ+«¿¶˜÷ÏÍû‰Ío;–ìŠpp<™ ŸZ[Ï¢4s:ò[cI$±6’lhZâÿr½Rp¶u .aÛYg‚ÌMˆ>ŸÉÄ%h Ê0Èz°ZðG›ù´ ‚‹<Š:Ãýõiïè²m‚2Z<˜Q¦h–íZÀŸl¾‡´Ë㞉&<,GÙ#Ž7½ËùõdtÞ??–;Ž7ÌG5ÇV†£ç¦ú:íG7Ô­jÅYõΑ¬ž;öá¹Ñûg_º8tqpw´›$‚K—°åmgB•UŽvîŽv]ùïCÉO¸Ls©Îx~~ìØùyIÜó“$Ê?~õƒüãåÃW¾º|8Ü»+LMíI ï{18\Yýð=܆±sô w Òo­çy¹€ž!ãžK—Æ=Cû^ì¨ÙÃ-ÇZj6Ö fuŸ2=—›kæÔÁuϵ„Kpt&àÍíûYÁîÎZ3ŽHÃô%(ç*©ß‚áqzq6³Ózth•Ù}k¯u6‹ë÷Ð ؤÙÂ~Vmñr.„jÝá‰:Gs§šÞsŸé…Š[øªnOx>ýhÜ#+7þSVš“Þ›Þ(ŒÆ MŒtMÀÚ`ÜŽ6“ÞUsle€QÞ¡‹ïmvÃö“ß’‹çý®äü02=ûò.äüKccçO¶4ø“ðÁ-aÄrx^2öV/H†n¿œ Áhî”ïæ†)$ÓÕ÷È{æ…ï¼gÜí»ṓ6ôX2îùô£qKhüg—°T‹—.Oy¿Ù<åmÛØÖ¶ß&5ˆ6)Òx¢i¬uë88V7ÃE‡µD ­—ú±ÐeÚ6tÞ8ö«áÇt­h­(ºLº/ã±M#êÀØœ@ë3 7-Þ µÒ:»lÛ†àËeÕÒ›ÙféÇ,X’ìú Í$ŽžH=í~o{¤1ºµ#ákÛÿò/;F£ó+¯tÍ$|S[¦| Á«9¾}ì÷£÷³ê#™8,Ø¿wWÇH[ðÅmA¨N6;[5ÇV¸ ¯ó·:»4èTÚ÷«@°c¤óP×L`ÿW‚#þdó=Òxþ w 8Òy¨k¦ú6@;üé‡ãÛ¡˜Á?Ýü=òè€çMÇ3¯#yÔ§BàÊñ1å¸3ñÜ¢DVnnrÏC쯇µzkÀò“Ÿ_ý·ÉÏá’A[ë3^[ëðÄÙ—†'`„»úú=mîOÇ“ øÎÞ׉‘Æ–D%<÷O²uZä<4'j&^ŒÖ?+s ÍL—5G)Úf½·»fÖÚWçÚe‚:Çåâ~¡‘L­‰é"Ê}ˆÊÃc5Ï.#ÉDµiÎÞ \Þ´R§.Û¶!èl`<£qéÖL.”$¥Æm„láNÿÒ½”çà€ÑôÞM‡>è?ïDµnGid wßÊLºl[ϹÛàv­[ÄÁQ ¦|S[R¡ÎÌkïtfHœŽßÞ›Ž·>ûë¿n}VŒl=ÂûaE‹U|Ö:Äì£Ã™IäÊÌ’kиmMý|ä¹Ûfý{þÃQ;À[JøÁœK°u±‹3$Á ¢Vz!H¨2¢Ë¤Y!éÐŒ´Î¨Ògƒ”‚—ÂtÜ+’ëMOšd×DÁlÈæX°\ ˆÀIóò¡štß³îô§¯ÕºkÈ®Un¨uc–³ŽÄ3“ÈZŽtý,WÎQœ@×ÄÈÆ}H›‹l¹ŠÎ"I Éýª _Äd2> 6‰ô÷Ày Q$[Ûq+PÔÙ&j˜±ñ“fˆr%"ìéN i¦¿"稜þrpppÔ+òRƒ}Í9l˜cöÑ;™Ì¤6ã`q }YêRBJ¶Bý"¦õ‡>àèút“…Ÿº$)O œ²G GáäÞd=„¿Gë‚b“ÔëZºÔpÙ¶ ÁÅXì>ÖÄÚ˜p“fŽ'j1¸¶¤§àŽZ7ieÀ®`Öìϳ–' ßx—èz‚ mØ©c2‰Íæì0Ò,H'7Á i¤Š†%ábDü׃H'öÖXžD!.Û¶!¨ê¶Qˆ²¶ç°ÝæûÉ£H—ßÚ¥8áààààà¨7` ÊkVëlÄì£có™I”ÖD¯L-ßmƒÜC–Ç ›Ö¿öî¶ÙGŸüK8ê‚„ói•ÀØ­YkN‡t̤¯3ôî(ÈÈðywÀºl\ ¸æt˜4C,­åTŠôBµ\¨7s¬<ø‚3ŽzÄ"}~R"Έ@Ÿî6Ô9´*U¬“§@iÀÉE„¯þÆÝ6ûèÓá7ƒz‚y”V•!i†æt6ôg"KÚ4 5ô:‘ˆ»–.Û¶!#Í%cÃJ\™< Ònr?Ì„g檑-Üé÷rÒ̱¢àÞõ ¼ÞIÐŽ' ³Nþ?™É¦õÇ€ÞÃHˆM”Íy«ºÍË7­?ðŠ»möÑ¥Ï8®O ‡ ’4]¢IŠÜ`7Fš‘GGq»9l¨2ðƒ*]6\¶mLyÀh4š%; HšQ~5Ž•$¶üBy¼™ƒƒ£>ßN«òSú”Ofþbù ƒi,C:u@æ¬Êã=Më÷ýÚÝÖ´~ï/¹ºþPòª €šU5–mØìŽLèMùuÀmMÔ¹"@º\š4³×O+©¥Ôœ4sppppp¡.zp6ž¼¨3Ö‰»!i†„Ê3 i6©ÇR- iôKÿ•èzEAV³ùpA~˜Â‹!° ‡Öµ9CW¦uvÙ¶ ð÷ˆ«o­ù‘åŸÔÇfvÀ¨3¼ã?UëÆÔ( µ‹3™þ™R’f]gÜÆhZÿâsœ@×7 ²r#6æ&Ä^Ѻ´)­0Ý·ñí„0i&A[ÀDzÇF©Í¬<7spppppУÎðŽÿD 6HÌ>Ü5v4· #i¦¹sP­î¢Ìbɦõ-O»ÛšÖïù §ÑõŠ|X¹1ïχÄòaÒÞŽ\D(´.(‚¤^@•…VŸ¦ÁeÛ6äL¸lÛ†Hc8#ŒqbÁ’Ó"Ð6“Hv¶p§ß%Ôzt988888êHë €*?Eª78´¹­I3tç ASKk>ó–ß*4­ßõ'Ðõ|876ïŸ÷çÆæý‚„S¥À¥,*gHšõ{­…ìKýŒ%! †H³± z4ØÑÝõ)R»É1ûhä¿[­ò¦Å¤ß²ì!½¥1šÖ{ÿìnƒŸµ+ÌûscÆTØÐÛY —mÛKÀ¤Ù:NlcoÐTÑ$ÖÖÉI3GyÐ68Ì0ûèÃßf&ÍÜši iK õò zmæD¼i½û"'Ðõyÿ÷ƒYuÞ?w"«ª×ìp‘ "Ð4ã=FL‹i4ûò>3ªÍI3ÇÿßÞ‡¶uå‰?öh@îNA e±3 Ä!È4‹æ1“ÇF³3ìÈI¡v'líL¡qše5ÄÓe;¢ËfÝY¶uHÚ8…Lì¶q ÇΛ›ef‘‡Í"R,ó¬@:±jAóâ ëÁïcEWº÷\ÉV®l?P¡^]{tcýôÓïžSŽÇ^w¤ÚM?úøœ/"TÄî ¬ØsÌî9éÜŒÂ2€ÞòÔ¶>Âèê6¾óFÚ4ûí 2h–ï—}AUí²õ¾,±˜×(©Rµ`x.ÐS¼ F­³–ìbÚ:a®¬VU6Û+¤—Õ¹¸ðñ£M{·õ[å­×cƒœ†Ä¶¾`«¼Õ]ŽÛ}®Œ:‡r‹Ü>î f4°¹©œý_îšA1ìuǪu1m¹¸Iö‘âµËùZhjé{h:  “'¦b¬ÅõdÕE¶õ[—~Æ)º·* V­ùg*²ÎÅ 6ÒóS1бX ¹ùè˜a£lÓ®þ[az)¯œ¢XõóÒþŠÙ6¬rÛíÁ•*Œß"]Y2\–·öG‹‡¬Ö‹ÝgÉäÔuuZõÍéù©˜×ãÀZ’—u¶Ì°AÖ¹dÓ¾øÏÔHþÂÚÖ ítfÛp.ê°Í:Ó”ý`ö¾`ë¼eIéß~MNº¦‘Ë+Û©Þ‘âÜ3Ðù=ÈÝÏ.nß?=?ãk0+MfeÍ +@ÐÙÿ+& ýR ÷àÊÊš©l}y[_°UÞz=fÕ.ßÖl•A³ÜbáyÛÜV[\*žíhS£<#¡‚f*MÐ>¯»±vL?ºþr•Ðå­ X|ánIq •öþ\P(Ÿ;¸}ýæ¤gÃ…ye÷ ð¬™_ýeLò'¬{¼‡eëÒ}ÅrÙùu.\6ã^k™Ì7ËÏaB犘~ôû¿H8Ðî« :+6í˜Å üá]§(ÌFË ðÂýµR§MçŒ{bL${I†5h¶Þ·Õ—4[Ùéù©Øá2OHî2A!|üÌ[9ÙºåÁÖbÓÏV9«²žªŠg{NÔ½{›VÖb óÓÖû=›«+°ï–…Î#c? ߬T´j‡wÍ1÷¬šõ9¿Oéù©ØLØë1`ý1 ù™ì£Ö¹Ò¦}75"„ønvyíì#ÅóÍú—ªÊÜÃAû£uŠÀZu¿[äJTe :YsÕ«ëÌ+RçÛ·»‡¿:ù{U ~×0:o»vžŸŠ--ôMÐ €Güùi^krF< ÓÆ¿_JŽÖ}½9û…k¥ÎÿkÔ}Ý:÷ ®Ní¯•}Þ{›ª™ŽU}v¿€RȪŽZÿ²=Ù‚i8ïïЂ˂)Ù€Ú4Ïä&§¢ÖQM£†J‘ôô£Û{-órd²÷tfÏP…€u²{‰Ž*ÿj®~ÎXÕ{Øí~¼:ìÁ«Nž»ÔÀݽÄEgœ³Î2\N4P=ò&§#ëì­éG©©‘éGnÃ:Ë-«Št2¦ÖTùWì¯êYö×u=Kå^°aºåöl½VÎXÑ[kîÙ>þªIërár5UÉ4|9Æ?R«^¼Oš  '®åB(¿F@ìòêÔìJ¥–[è_N§óÜR ET³,»÷Ç~_gգ¬r6„b&<KÈÛâ½Õ¡ÖëÀ™  “' Ãh{@VjÈkå~¡¡þ¼Ñ:9o÷àµN£FYÕ7»R÷—Ük¦U-«Z°ï?ŸŠ¥FämñÞ€êà,dONÇ ÕÏ@‡,ëÛÕiçtu_÷™"ÜÙŸ[ê¢-úórHåÍcíþ¬:E™‡þRÛö‘œ7¦b©‘ùÒ†TÓ0 _@ˆZæu^]dØ9Kȩ̀¡³EUl`Ý_ÿASG©Yg{½²ûܪ3_•{¶ŽƒªoÙçÊw‡ì2k…?"sϵdW/@ÿöëÒB4Ù!JebÞ5Ô¶Ó9ëtJ2L×b÷éüJÍ=»Ï--Ãåì-X;äe‚ò>« ®öº½¿øºzv:…¥ÖÛ[Ö aÝ×ä³>w^Qùí¾ Œ~Õ¸½@!2ë…?²ÉÐ>¯;ƒJ¹rd*–Gr[d0]êï :!¬{µôr&׳÷Áú¨u»þš‚ª£“ìt}‚@€õMlp™àº²L[Ú¸­/Øê~‘Ÿ_»Ž¹¼ÅÀ%÷ÉÝt.Ô™N§'þ©XjD$VfÌÀj—×y!ãøXe=»pßLß/|4v 7›‡ä¾ˆ~àkÏ»_ò¨?ß…ÎT}Á(Yd +79iøXˆ*}—ÝBÌø]·iòôË-„F…±½M÷Ò‘–$Á1Xd±z6[ÂÓ鲚è°ÜŸ(«…6Û–¤ÇÃÖ°Z²Î€Šu5A–DŠe,‰(Ykk½î P½¬¯&hdnüÙÈx= Àê ìùV$`ßÞX·õƒüé«YMMMMMÍô£©ØÄ5¯û@NÞ Bx?ÃÆ¡‡ÏÇxÝ `õY\\\\\LÏßyC=Ÿû£Õ€¯Ð€j–—u®ž6ŽvÜÞ›Fë6Ÿj¬;yáÄØÉ þÍÿÔè÷G|$œl¹êmIîºÝÜëuŸX>²ÎJ$/lô7žjôË ùÜàùWÎ ™ FæhÇ‘_íõîº"\¬Y>²ÎÜ¥FS¯¦ÍPoó¯B½õcϪo—Aóx÷Íãݑ䞯½á¶]φ¢Í·U´Éܳ׽`eùK3lxÝÕG–gÜ; šë_«˜ùèÈÀL"ôû§!4G»¿‰DÄ·S.Ö,ÓÂ4ª(ëœ6ÓoWrùC3ý/µÿiSþ·Zû¿Rª­ÿA¼T©¾äÕ4Ÿ úe¦Yͣÿy0:ÜÞ·ï…h[sïŽ/BI‚fÀz gw¦Ö@ÓXȘ† sBØkšeÐŒîø"Ôë|g'…€µ6(Èüw&žù÷L<<¾ûax|©¦9°ÇN6÷îø"Ôè!h¬¹6|^w@uy¦ç;ÍžÞC¿un¨s¢c¸sŸô=ãOF»¿ SžX׸L@žúĦ㠉^ñîöžÍ–ÍI!DÀë¾àÓðL£V!øáP[ºLÐ4|Ϙ†×ª“å2A¯»T;Óð„¨¥XP[Èd œk)ÖÔdÁÆB¦ª&§ë»¼ŒVô%6Wö‚—‚•}Ïúß» ú_ÉÕõVwÿÌ?™Jö€µMÎëì ,MN·T´1ìUw½`­©©©©©©ñº¬n²ÊÙYÈáóv†H`Ï·"ôü7R#^ °ÖL?šŠM\óº¬n2h–YgfØ”dÖY–mÔZ 6äÉË:³$  ƒ‚ À€–¼Ë)ØŠc5AÀ€fØ´X²Î^w¨f ™ìÂ(lEÈ…Q|åͰadnüÙÈx}€®®†×ûv¦ç1)åy²`C!|B<Î:—÷ò^P9ò2A!ÊÎ:G{¾ ”³«‹/ „Œ—k-Yg2ÙZg&§”äÜKó:“qTd¾Yb!nÀEnIYg@5k¬ÛúA°Õë^àI«©©©©©™~4›¸V^ [žÚÖ×´×ëã€7–sæØÉD³?"„?âóúÐ(Ž9Ö•];bqqqqqÑëc“ ¿nU¢ålÁ†/`Ëš× úñÕkm«üR}¹%QjË›×Xo˜×(j!ãuŠòL£ÖëNÕo!ãp™ @• Þõeè´ÎžÉ7ŸOžðº¿k›/`>â¨6r^ê‘ÏÆ¾{åˆu»i|3nsñÌ¿Ïų[Ì´i„Nïº:M]ÙÉé–âæ2AÀú&ÃýE4Xn•è üU6Bkôo>Õ˜ ß;3ž Ï~<–á²¼•[¼îïÚf™œÎ4²k¤°þÈ 8±óÑ“.Üÿþ7‘€{XœÍþðÙh4žŒ´y÷íl¸ìu_Ö³…Œ?Rë09`½›‹O¾šmHÔ5ª?e üÛ¯_y½«ÞëþV—±ÐÍãÝ|‘¨œ´9u,mzÝ ,ͰA­3`ýš~4›¸ÖúòoŒ.].oÏ=[ƒfÓxpu&œÍ\,÷'òÑáëwF‡Ûû_ù»Îɦ½;®…NËö›ö6ÿGèt{ÿOöwNŽ…Æ6%B^ žý ýãòÒÙs掠÷oy*x¹i¯¼•[ä£ögÉóS~A²n—kø…N·ü1|k6|ïÌú(aIòXsÏö 95:wc.þΖ/_ï–a·~Ëï:=7;pâÝ£m?|6Hì¼ñ߯×ÓR&®__Ÿù¬«þÕ7;'ücŸÎkœ šv¼™:Ú¡@/§`ãÜЇGf»/¾9¿ÛÞ×ñzçÄĵ›Ï'OÈ[¹Ež™³10ëÞÚx÷íS£ÝßLÅïnÿðg÷뛎7$¼ÑJ{¼$Š×À[öܳ¬f–·2hž ϧM£ûâí •4φ\ Ÿú znèä…㉓ºê¾ÓUèyö¥@¼©>QÿZC"Ú¶ï…h[soóïš{åsf/½7ؾµçÛ‘ 2K-ó|ñO?ŽY_Eú2wØ9ùÓ¿ïÚ(·Úxø|ì€uÏ´™~;mvN¾ö/]e›òVn±î9Þ=þ?Ç»[_~éGíýòu÷vÿ¿È†áØÕÿÿêÐ'åÁí×§·[óµr»N‰?¸:ïÛ”ì6¹ê:p5ÿЙðû‡N^8>vòBÇÄO~ÒÖç|g§?"oå–_Lÿ—ùÚH`ß®h›õ6Ú¶oW´m8vé½+1"§FÇw§FgÂwßž zê_{¦§­¯ãõÖ¶™ðW§Õʼn¥âŸ…Œ­m/¾Ðª<÷ZÛ¢[£mrÏ„­dh.þàê\¼sòà/;'»/=Ú ìùV$àõˆ>¾@6Zö6`+ÌÈ{Tf£Ë 𥹸ܹ¸¸(êÄÅúij/•òÓvK²å^8)„Ø#zdàÛÙt¢1$C[qB|_äÍãÛ}áØõXG¤o÷_‡ûD¯øèýBˆ½™øÃñ¹xÂÛ4cÌnœ=?Þ9ô߃_zÇKý±þìndn,ùŠGžû׆íãÝ7ÅxB1.D}âÙ—=c¡?lJ„ý[Ï6yýV=kмô•#¼ð±ˆ7$ž;Ñ ω†ÇûúBˆ¤Bˆ^ñÍÒ=áˆÛ"j §D"m¦^M›Ã±_½we(Ù=vs¼[5£óLxîÆ\\ˆì¹èQõpéÌ|J\b&ü§«sq!ÄÏÅ„|t`öâ[³sñ‡g̻ѯ¼µõ3!„ÊÖÖ*Ÿe^gV¬;öjæJ¼Ê3=O7?³d̆g?ž Ëò ç5}úépl°iè£Á¦Fã©F¿i<7/ªöoHñl[}"Û¾[¹E£Óñ†„i,dL£÷àéïõì»Üÿ·}—­·òbÇŠ¼=kB~Ð|ïÌL¸¼_ûees²ûæŽdwÚ¼sL/h–ÂK¿ZøBŒ þ_W”ê#ãwF‡åžáäîoÂy_–ê"þÍu‘ûç_¸/·tN¾~¾k£ü]Âë‘~2|Ó`IÀºc]Å4Û/”—£¹¼]ydŽùhÇφºêÏ ï˜}gË»Á÷ÉàÕ4Þ2 y¨é× 6Éêdë¥Z3áWgÃò’¯‘áëwF–ÂúR' 'wê­OÔ¿VŸˆß=U׳e6»:Ý]ÓïÎM@Nîñ…“rÏî‹oÍÆïfâoeû#{2Ë:v®dhÛ9ùãm“ñO?¢´@SÖ1'»Çw§FåÂ(úA³$/E•§¾èL˹!y©<ëä­üeC^ ø‹é㉓==N™i™cÜþñ? ÜÏÄ gâ]öë£T™òµeiIâ¬GrUÐ,ïËKåµݼp"qòBïÁw·÷lNvßÜ‘µ¾üâÿhïÏÎè¼çd"4¶i,ÔèßüOþæÞ]·›{Ûú^úëh[{ÇáÎÉèË?ÙßÖ/óˆÁèóŸ£mý‡;'õûàøþÈàöKÿ:p_ˆ…Œi„oíùö6„Nïú2|ëÜPGßuÏá#¿þpp» ¬Ã·Z¾ÊÎò!{21šz55êõ;Yíd˜›ýæOFftøúìE{îdÐ,/î”e©ÑñÝ¥ÍVG;÷wÕ÷üe}ÏæÙ¡›šöîú2tZÞ^‰ }4Ø”ýMãpÑß4d`=¸ýWï^¸/³à±ÇþWþ,.k‘/`5õ‰­gÛúfÃwŽ Çg[f/ζXw42¿y`dZ,?6ðd4Ömý Øšž¿óFjde[¶ÁªKå>2h–ó=/ÿ’A¸“w9¡ÞrÆY¾w2¶©ÄùSYÂ!3úѶ}»"ÓXÈ10<÷8£ÿ§«™xÚüêÌLx.>sq&œýr_j´¼ y=°ž3r‹þ™3Û4ÞÝ‘úé›)k <1z{ßÄè6üè/°¡>±ýR[ŸÌ:û(جO:®rŸ-Om{z)È.3h^N®š0}-‘ᯠ ýßÀÌ!„qèzƒ1äøBˆ&ñ–Õð1*ö‰eÍË_ 30Ë0 ŸuÃXóžkž±UMù…ÿi¿BÜóºË`e  ƒñç¿Fý£¾e†È*œ{îäòæö¸}Ãþ¿lßÝ+·$JÞät²r% Ÿò•u6^ÀÚñ8€Þ:M1†·–.‹Œ‹ãb©læÊ‘O>¹r¤½ÿþöþì’(Š‚ ‡¥ÃâEÁõ³+Œ yõðLƒ6-\&¸µÎB°7àJÖ: !„Ï4rÿ°öÈy½îÖŸ?ò8MÖP¥}Pžššššš¯{ÕïqÁYg@5#ôà½ÇdÕŒPÎT‚oùMkÙã‚ ¯;T·lÁF­×ª[6ë\Ëe‚€›ÇYgËe‚lg½î°:h]&ØØt¼!1Þ=~&UÁ®˜†™¦tYþmgý3á{gf•h?Ýñy0š‰gndânûÉÕ© ôl¿m“e³á;džc×R&®©šôözV¶ÓòµZÆ¿÷UËx%«Qjdò§©‘ʵoxe˜ÞÞ¿{}bû¥¶>ë£KK¢è_,X<*/ìâlËæ‹³-•¬2q!D¼ñ§.ë5¦áËn\Èø#õ‰­g£¢)<Ö´÷Ê‘O>¹rD>* 6<6 "¬!¹|sÇ„²TÃBˆ…LAÁ†2÷œ+ÞMXÃèÊ ôþj¥KA°zÕEžn®‹T®ÖY’á²¼o/Ò"›{6šúÄÖ³ö‡…P…ÑÀZâ. ‘‹Š…ÈË:ËŠgd!“}BnKþýü†sAváKf¯FTícÅÂíùÏU÷Á©Íb­-oÝz¥7nní”ÒB9}VßwÖJŽ’ÞûåÞŽî» >Šå¿:ã“ý¡'«Þ˜äž»2ç¿SOÊygÕ½*6nÖ>8·ãt_þ}Ðï¹ýU¤Â×Ußw{ï–?Jùc•;:÷Ó;7|ù××ù}wÿüžäò,BÈҾ£+oT³Çžû«Ÿ{4»Ý©‡NÛÕû¨ZÓé³óûhoÁé(r?ìZ?nÕ­©îÛ©ÚÏ>ª³Å¹}>¸¿º÷Wq?öüvÜ>ÅÜGÀ}»ÞQ辊ë¿(ûv);-ᆰ5{OJ½¯:ýý—ÿŠ¥ö'·Eÿ¶œÿ7áqÖ9¿`Ãi í²ª?2åÿ©?8:ª £Ÿ•ëKya±ê¤_©öU#§&º÷Y=’¥·¯ΪF#÷ZÚ—Ý‘,÷kC©gB9ï©Ûù¯•r¤:ÏÒò܈üöƒ•r”Öë„°…[t¿†eŸUêWýðTïÝ´Ž¿ýQ·ªö/Ö¾Îû®û.ØÏüÏ U°ëüêª0ZïYú™N¸V¬ÕG¯û«ØÃèâÁ–~àëô\·þ¨^¥¼pVgLJ="÷/!:#à>’¥…ÛsuBs§}T´û£å…›:-»ïSé Û½'’~˹íNŸï¹=­g—Sª·°¹Öò 6ÜÂÄüi·8]Åý›P!{Xæ¼N®´ôðÑ­e½¬§{˜[~`WJ(_<°.6ù§W±¾–z,¥ŽLñ\¦Ó9£ÿu¢2ï`¹cU–9ï£~_tÃ8ýà>·¿*#èä¹.ºû”òU¡°µìxÚ³×ú9Úå(%8sz]ë3§cq>gÜsÉ…Ï-? uÜZý~9ç¹Kû­Àž‡¶rz´¼lºN¦YE?Psz®sOŠ=«¼À]ÿ«‚ó˜,§?¥ö3;ò¥eå—3n¥?ªZ÷±Ò”urÒöWÑ pÝû£Öë‡þªý ¹ÿÚc•RÂhÓ¨µNK—ÿç#Ò:ùg7×EUМÝß4 '¼ËŸOþÁ*|Vþ«Û?òï;‡>…=t ¤òßû£ªx…û«^¥pôò÷T‡nG¡÷*ù'Ûs ÿ¼ªC´\`äôÜÜ}Õ>öQµ£ê=µŽŒµ‡N½-FûçpÄþ:‹u»ó³rch}]ëØ:×ý€U¾…ϵnÉÇÔï—SkNg©u{!§v¬ãã|>”([·žöœk®Ï¹=­ï¾ýÓPÕBþ{íöZê¿«n_{ìÿ~‹ý+p~ÔùµœÅûï4Ρ°Î'£*[¬zE{ :­å?jÿìP…¶Ö-öçªÂGp\õÎêÖî÷Ýq+÷~꿊µç¹÷=ÿœ·¦Kœ¿Àäÿ+ȵìü¯Ìñ2A·ÊÜwôåü@oè‹gmÝ•“Õ/P·¦3å£~¯ó8o¢XŽP'ßYÝìÝòk”Õ#྽ø£åV!ÿ©}yÉNÊb…îÙ8õžÅ+•Ë=ÆRjp‹gʋէzyþ+B(ì›Ua ùhç6K¹oçž™ÎöÁù\*¥4Å­´Ã} U㣼ößW­ÛݿبKžD™}ûQ¨ÇÇ-Û]^)ÂrŠL*¡9oõþö«Ôü«]©¥Ë)¨–Sª±üž?vuFÙíËX±‚+ÕoN}®Í”:Ó™Ÿ{V}œ8UK»µiß®ÊæærÊÍÎÚ[p =­G “Tõ_'ÿíüZÅFÆy‹Ó‰ç”7UõYÎ9ÝÂ?|ÅrŠÅ?òötÊ,:ÿ¶ û«‚ÓvÝß+ìêžÿ…Ç¥ O‹¿#År™Îí«rÃNù6{o³í«[³gþÔ¿iX÷±^ œ;kÕ9Wç±u>ÿruöü®½'êÜ­ÕÊžÿnyM§€Þ-cmÍ@«z”¿ÝýÝtzEëk9—:h¶©ýQÕ3·\röˆì}Ö)&qê[aQ¢õ•Üeë³ì¹dë>NãïüwØÚ‚êß²jÕ¹gï‰ógk±üw©Ï²ªóYä<&n÷u~ ´Så­Ý[+þùîô^8å%ýl®[YB~ûöýuòÜÖ-îYg÷¶ª'útrØrÌÝÝž-.ü·ét¾åž¥Jòæzõÿ„ã³ VùQÖJtEXtsignatureb94dd476ac07cdf1b54fe303e7dde9b92c1e338e87779081d764261475c13296ò.F¼IEND®B`‚pygtk2tutorial/figures/buttonbox.png0100644000117200001670000010034010050344475017062 0ustar finlayfcf‰PNG  IHDRå@}úÔKW¿Ww}¿Ï¡)UWWWŸ:õ©oýÎ[^^ŒÊ—þ3üÎ]ùÊóÒ¡|îØò„å»òcúi©ûù¡ÿ”ßÂþ¾+–ïKOÞ&ᇫ—c%ÍÀÇTÎZèCwååÇô½*å'/ž¯V=Ëé?aÙRBŒÿ#'%ÇsŒdÁX477Ç–/_¾ÜõÝ鈴{J\£–öüWºÙå½Q·Ü=mt‡=-¤}û‚ {ÿÛ%å»QÓž}S{bÿT0ý·K{öOGM{C »ˆouýÍTÔw¸D’λåHÛxwO÷T×Ái.]¦ IéÐ÷.ø^pY%}ï]iÅúC‡´?-u¿>½ÿ é•¥ÿ}JuYHäS߸¤õ.Iúï éo^~Ñ)u;‚ ÆSwÏ{û{§I"ËûSš[:.ǰÏÞKLÇš™>,§žïO¿Z¦ï_v|ßsøˆçðÿp“…XSϯcÀ/'oo?YÖL=Ç|:ïòép¿Çà–ì#¾zГXŠØCí†Ö;wþxÇĺtéRÙôƒº>åÏ -Ï ¾•_б^5}ª_Jzôî?í/ø“þyŸÒLwÿIŸbeŸíOèrAѱ‚¢~#éþÏ{"Þ½·oÞ¿î³ý›~Tðg¶sŒ¤{þµöfŸ˜7ÿ˜”Jú…T8¿¿è>½T(¿~º¤þY¼@J÷~n€$ºÌ§¢Ïö)WJÛV܆|¼há±¢…ý1¥ÂÏ÷ k>]Ú_ôˆf*þÂ]ø³‡û>óH?I%KiþC}t¥û(yôXÉ£ýó¿ÐG^iúì£lY5Ýÿ…ˆ?åÏ-Y2P²¤_?Ý÷E¶ÍÀü/ŠïÎ_r¤ä‹GK*úcM¥•|ZXù· +XÖ÷À²£~éXé—†J—9•é/¹ø?Šø3¼¼pùðç«¥U §•#¥+1¥…«ø…¡òUËW9Ë׸ ¦2õ‹VK¯‹¿6²è)—j*3¶¦¨´!& FÕôô´Þ»—§bÝagg§Èëð*=ÝÅvAx½WàušGôxj$}êe®m#Èû§Ê•„Å}Až$¯fº·O•³óþ¬_ŸÅB"x-˜~%éîù}óJކ`j0‰0U#/M…ë)%b*ªŸ$¼r äµðÁ¾¢‡”¨-Tü)V%ÉÀeé¾²(´S9ÝÞp•‰b÷~ŽÂ÷=&òT¹fþc}lù3•ý÷ÎVüíƒØ•+% š«27zú²ëå:‡ø5Šwu€+¥V¹Œ÷ÁÂÂ\ÁnUWE°°å¢'GÊ¿êÔ§ª‘Töµá²?*_;LY~´fhQsÑŸ³•ÊôhÍpñCõƒ„iӮλ$ÿIŒœ,u¾ÖA’Öö„É—/_Vç5¹'7çAý×ÓJ6¹š„íÓÁî'C&·@nt“k+ŽNdÙÀjcÔ8v?Óäì}aæÚî(*0ZbÈê2æò¦5î«ÃSˆ×…÷éø\’î}dà3«ô¹2gûÖõh$[j1w~YhK8k4…hÛÿYöY{,ÌßÊ~Yþó¨`råDh;À˜+øÙè)ä‹~ɸ R¸ÚÅèÌsyáŠaÞ·ŠËÒ»C‘„È«®q·[öäð¢'ƒÌ]¼fDbn4˜.þjx- ©üß¶º”x%HÖmØfä#<¦%R×:ËÖ9ËŸv‘ôØÓ?¨\çRMuÎÊuÒ»%„ym0,LHÓGèÆì#|`YGü·ˆ¼îèè0òæýõž}S!Ú “÷ÓÁÁîÝÚg+ Øµ /] œe¯QC Òf÷¨aWZ£ˆ9å,Â)¶ ˆ*øæRàªáÕÉýì1㜠9ߣ<=‹#=¬NHÛæY–þ|¨¿ø‘c’“U·0´²XBê1‡û™GŽòñÐA´ƒÉ¥Ævþâ>õ ‡ËVépCé(R1÷ñ£AàééÒ /D·À27.6 ß¡à2‡úù•ñF¨A._5$%æRC!uÈêRXir…?›\P­:öV/ÉÀ]ôN²ÃZðÕNÕë]•†UÒzW…¼p_Y(ƒ/q®—§ß£Æ6–—ù5Ä_ó¼6 !ùΜTíG µÁð ÛR…×ÿQn,‘þzÏþi¯ìæ#éÎùpa´d„å-Å+Ù„z[²S‘ª*¶÷¿žq–xÛСý‘ŸDÒû>]ÒG^õ=/Ù€w¸…ñÙ[9˜›¨É¥©ô¨j`AH*––p™á Gcƒ |lüIß’Íì1’Ôã¼å}÷/ŽÇäªù±%guÒýRèV0¹,í—MîÀƒ÷ä샪›}I²¨Tÿ€qóóÕCñFr#\­jÄVµ? ábr­d&7·Á\Ã&W?Ÿ+8Ö÷ªýV¦kœåuA“ËtiQÔ†¶ âui½“¼V¬"¯¯VGpd¢‡Ó3.’&¸ ¥Òò}eaMÀÅ3ZK Óln¯Êkú–ò#QCÞüGTâ×FZÌDøëýÓ¼‡%»¢ö–® ý©É=Jޥ̥ „¼R`A¬%å×V’3cKL®ô§ _ÆbÕ:4!æ«êa‹£¶¸t rͱ¨´¥uhS)gu¸QkÏXH—8Ü…_  &)Œ ®Òׯ`~c¯=â¿RTaÕpÙWtµCš–V±R©_ýAK«º2LU²àŠÃÞʾx(hr9†.}zä±§ã1¹!z‰Ý`¾jGääÒNÁ –nŒØìñ¦—6 -mt’TùìpÉ^ëW*áKÞÒa&t ¡æyMÈNÖÓ?õxmÄ_SûL÷K¼z×Ái¾Ñ%/ &?é2[—ÿH×DêÔÞ²°#)]æW aß9y=YI9+}õª Ã~_fëßJ{(`‘„à– ±ƒ(~ O"µLUºFaxFúÜ£rR‰0wî+ûÛè­b©=㣠÷˘¾/2’+øÜùõEÆŽr•]í±R¹-dr…jÏâª7s1#üÀò`ˆöÁ*—6^GŒ˜\Em˜2 )#¹,ž+™Ü'œ=Ë’ir‡I*ûÚpt{F³Aªº FÊ£Væ Ë?qˆ¹Ôê ‰¬Ô15Å„¹šIõÓãjÌ}üÙÊ\š*š¤×êFçªFWµ¼ §!nY=•,¦íCÞSu¾ýu¸É¢‘~Ô°ÝòÛGáuxUnÏwðÐ4_uFvÅG(©½ø[ñQFäàÂç1†‡¨Ê̳˜¥¹ v9 ‡€ËðJW?,oZ#sVÚg¨•Ø1y%á/}Wb¥´Fç1¶ÒŠ2M.kE¾x46·›X1BÛ…-"[}¹ŒVš±OE¢3ŽæbAR¯Œ?… ’ÉUu¬±U¦ÉMT" ÚÆ47øê´$'°å¿) ÖžÑiÜáòñžª½5¤xkˆ,Ä”:ˆiûx“‹'¯>^«žfË+š$4WmÒLËŸÖyWÚ`“sþâ :‘ }^³@¶*¯yÓ§+| ÛF`wrüõ¹;´!v×\´Aز•XÚ;RÙ²k¡9â­5æQ+,ßûHÐöRȲÀ: /ÐõRAÆå\»ÁD,¶K>É¿%/ã·g¹íÁ€gµ-ðÞ÷oûî%‘„£Æ™»Pµ‰˜„ÑèÍ´"¹¥_Ö ,ðü E{‡x/^ֈdžhsZcV&/hÕ’Ek:6¬“ýªÓ`ôV °Ž‡å‘™†T¶ úÜaO À%Ëa°r˼Ûü3Ò®ªù\ý¶ÆÑÌìã,ðÒ¯¼ŽÐ¨µ·ÁÔ4¤EX­•ŒžŒ¤š\cý ”´¥À•’'˵ ·Uàß}p…ó¡•.#5f<ŽåXÄ ,Dm"Æ0”©Q˜$Ú>LúS¤ÃÛ*Ð&bq¶OjØ"#¹Zhj™á8Ü\A5ª@Ì,ñc‘n·â/‚[VDÖžU48:ùeí?G‚+6ºH ®WDXªjrF$D÷¹5€ºô½-ñ¿ËŸŠ`ôæ‘•Í.‰¤Í†hK“°~eóðŠ-ÃÕ/9µÒŠ¿t‘ת¿t®yq¤4y¼f¤f ”™¼­Öç5Ù’}VÓ__–kûëî×§‹Âý ŽrÀ=FQK.I~Väé1-ÂÒF "v®–[þ“@–ð—¹`¶Mp¡B^¨.°n¸aÏK7»¿BjÞ l–KëÍ´š+ªI{|Xn“;¤Öü˹pE¸‹„~ÚƒU.ZuF›åÆÒ÷A¬m“˜­NLËí²&eÊäO#Qf{ËôúA8 {[]/¼ndÑ_ŒÐf¹Œ³RZèpU™Úf8Žê24“IU *abc•aÜp…y÷Y—*s3«ês•&·jÓ°Òê œÕ²·ä³²É1àm‡´ÞZÙüƒà‹A°ê§5/ª§'_rI¯é|²Åùd«kM‹“O«_¦ ¥Ëõï]N–¿X¬ï¯cˆ‡Äç¯YÝåži¾fL4×b!ÄGiœ!„Î9¡ä•bßÌÿòžWÉeä•9+Ý3(v¥…PÕ™¼ ¹1ü‘§-YI_i`áÁeNâ»)F¥·ä 9 ­ð‚h~cv¸ñ\¸œ1BáPgß(&W7˜ ~0\F¢µUˆÚ>L«5˜êzaå£5á~ü™% %Àe!]Uì’•Q6¹K£E*„?À5ÏeÑbrUi»´16‡[ý —ŠÉ ­!VWßí 1_æ ΗÙÛ•/Ho n7*meàŽH`Õîê-ë‰n€=µ)W>¹ULA^G«lÄs]‰T ±Ú3‘°_qÆÝb!¾¾¼í]ü5±_o‚ý ä ?ⱆên‡«Eä`MšŠuU_£ÝtLFðÐ2¹#´ZŒ¦•Ïj—¾SÄV/˜ \eÐÀPx·Y2¹ú´]þÒ°ŽÉ ¦—‚fVésUÓ“:oÉýêr)ÉSZóJ0•VÙããuD{¾éi­1õTÛ_KMìä^æBÃm²=YŸ´ö!—§Ãì?xdšo v_eŸj—_#„(vùô›ßFé{fÀä~¾šùÜÍd¢« õñu*ºùjUÉ&wõˆÁ¨‚V·4ÞäÆQ]s0ÔäÖPœ!²„¬Këô:C “«_-ÏËÚój5B¨Œ†àŠkhÕk™ŽäÒ`B,ñ\eô6ÂÛª…z•iÅsŒ¹#¡@Ëd•›±ˆ­j¢a‡(À¥†÷eC&wuk¸”ÎO0¹:IÍÁ•¯„±«Fè¿{e˜l_÷Š«NzuÖ´“*¯ãˆ‡è÷²Qýˆj7™èñëXý5mòÆ‘é…áúJ?Zúx?kìõÀ—‡ô}kتT†°1I#r0—†Œ4W`ÛOÑáÊW8}bxÑê9™K­nÌsŸ‰£‰˜ÚGœ¡V·.i ›§ÁÆabœ¡Ö©ìQñ#qvöå*Т6ÂUOõNž¶,†Ë µØ• Bã0Æ\c+Ò– ùìqEmÔ–ajiX®=ûAÜö6dr‡„º2)‰õiC+þr˜Å4㹡¨Â“áƒq†£ú­aÕå¨i5yýÏ#„¡»O¶¹HZýŸ‡jÉŸJþ~µÍµVÆ.AíÚmAòÖ¶;×}{¤n‡«vÇh(_^ÒñºoŸ uí£d›¯ß“ºŒËÎ7jÿFº%¿`dŒ½ø>Bë*ãŸ/"~íø¾Gh.F;û†ìò8Çl”d¨~×^ãQC¡­ážf„o\úA:ºB¬ueêõlO»„6¹1¥ps…°WJ¬mhi¼Á\¾ÃÒ¯;ƒ-"}.klk¸’#b„]žP`axÅtÅÙ•/D6chŽ^{¶ò¯œ_yI%Œ+þÊ'g ¦¿9vÁ ¾ú­0sa™Û噫ÄîWÛ†ÿ¼m˜Ù[šy s pIZûíãJÈÖ´Ÿ`Ëuß>IÏßÐ6?”¾s¼v× #©nç‰Ú'KW…ýõôå)aÀ¼];UÇç›»óGÚkÑø(}Œ×ô#ª#ó±•ÒÐ}!²'ä¯iH„ìÎ1àU‹' #7ÆZé*£ØM¬„ñtPñgbíÃÄmä(­ ã~Å’â…ìãë#;JÄŽW¶À×¼)nå³ÃÆkÏ(—‰N$zËÛḭ2ª RþJr¾ÿîEÑá®Þ2±/m…oœqÛ†¾5²ÆPT!2µ ­msÕn#Vw˜‹- Õm2—XWÆV “F0ÏbÊߚ®í ä Âw­!K×uŒqÜq¢¦SJµ¯ŽÖ¼:Z+'¶@ÓºÎQÆkã äkòÒðu^Ç$É_^«vjä G$äÑBmä~±wBcà¸Âª-¤”¤f¹es‡ãó¹!·ëdmlMñzÛˆhÃ×ÊÚ³Š&)ÔµMXu¤ŽÚW«[ûyWJšˆñ–V¨4£M¤CÍ¢$©¹‚šÉ}R·¢LeûV—”´Ý«êŸªÁ\­èjúJ›ôÊÙ[Wpa»„Úuÿe¨î¿ŒÔjFi$AçݵœÉ5ÆYͤ­üSª{ídí«ÇIjxõdÃk'ì»OÚwŸxf7Y¥®QòZ¿çDùj{rç+ˆoNa yÍBZ.]Õ·×nh-*mˆšî]ñgáB»ÁíC Ï?ðLä6õ…Ô?ÔPøp½Vúô#?D^õ¶/zÄ^òˆý¾/4”È ÒòÃv¶,¤ùÜ2ûÈ}>s_Yƒj*)×|+ñt?Ùùìòr=I÷¿«þ¾Å %Kê“›î[ñçg¢m6ñya½”«/©°§-•FIõ¥§6=øxýÂe1~ªÊþàr;yå“r2‘mVGߌ&ã[㩚®¬WYùï´¶ÿüš»ÒO¬¤ õ‹VÙ¥´¦°UH‹¾Âýù•gØò£k‚ e_©W®$[†×åýÉ "1Á(_ñæ5ß'ùsXæ+'²¼+#³F}0sÓmfÓԨ̥§[ÍÖ gósð7æÇxB“;µ®roá¹­ó3V>cíL®!zc›üóù|^¯ßkzÉÇ™¦OA™?Ýq!ãòÈÊ‘ìñºˆã,x|Þdeùv­×»=>C§/¥Y§Ü?ëž®Çkãg‚þTƒ§*³—MÔ%Qµm´Vz|©â‹¼òóe:%~—õÇvµ¸3P„̤W…ioÃñq-³ž&E÷¶Ø³Åm<‡é/M¦•9GÞ&Ý_CA)x A^CAà5Ax ^C×Ax A^ƒ×Aà5A^C×Ax A×Aà5A^CAà5Ax­)ýѾÅQɘ†UÝ€~WÔÑÇù UrGyÇŒ6dE½Ò“ÏëX'_0£Ä§u`{`+Ó‰B­ïŽ!J“¿ÖÁhL„å§eJ5Äß!¿YŽõ°9ð‚,h®SÎëÄY£‰a>IE(#‰7€4p–‚ ÆCJøü©îAÀ¢ð‘˜Àªu„ùùùÂÞøiáÙÑ ìã÷¦:×°ÿ«ü¢$>˜|~X‚²†×J€*÷¸áe+µîªß+°8*ýõ»Î¯0¾“8îåŒbºÞÓÊkÁrÒòʘË6 Ö˜‚Lùº±ê>U÷¯QåÁð{#‡A¿Qçàù}2øªòZëðø'úl?ôO”i‚’ÃëNäƒBØŠ ‡µŸSÂNøÊPÅ«Àn.«®g濈}зøe#Gâls¢Œ‡¨ÒYyÏà¿—?6ò:77G3Ùápô@”s¢üL9¯ï„¤ã¯u¼­kVÂTg'lAé‚™IWòWË_ Áw}^«ºé¨F^õ– ¼`ÉÙï@”sš“•V^ ;jùô¦´œÆ©§´¥úþZk‡‚™5Âkaò'óG¥³[剈‡ (Ç”I^óÑt#þZ•°ª(+µ¢òš¯«T†Y´î"|¬FiÛóÝH0]+àAPŽU9f†×BHÁH…›P‘HCÌF>¢ uBM 2à úÂ2ÍMõŽú ì“oϧú["ó¿]ù+ ‚¿N²¿ŽõÞÂâhVœà#Êíã謘¬ÖÐl?ú­|Ðø‚r•×ú …SÅk¡Çv"VÝ¡‘}ÆÑ–Yÿ°£î0Í­§ÑX‚à¯Så¯ã0† Ž%b|eL7nÆ4ÂL4YJ½½½iåµrô;-fÁ¥ù-dTž*œ|DueÜ?þ‚rÆ_ÏÍÍéS%óñk‚ (;ê!‚ ð‚ ¼¯!‚Àk‚ 𼆠¯!‚ ð‚ ¼N¯ã˜–7¾Î Ié( œmpŸ‰tÁ‡ ¼6¯µFtŠo6[í Žï¡ßÁ2êà$ñõYOÊ ‚ ,’0žÎ%oÒx?€uRÆ Õ™àœ_©ï‘U³U8f~‚…XRuWÖ=ƒ¦BÅ“ÄÔñkÕ™’úКíÅHÀ$Ec¨8Ȇ œ±ÁgksñZÕ«N&LÍ¥3“€Ò´Fåµþl뤪¨UÍluò_a¯ö$5YG&âµêÀ:»°9·t&ýòªM6¦ °(g±ñr«N³ëÕž KçŽBwÂÏ£Ïk¯Úüg$s0K4e»‡°fnn.kxM‡våçPç}·@4%…ùÉ´T-¶êÜZZL42»˜r·Q'¢ÔÿváVD«4ùȶÁtÑ”cÊ&^"óÛ(¹ÆÜ®*ùp ªèL­«ÏkáS•»åÃ8ú¼V kð3RÆw¨e{,Û`ÂDñ~ÞZòþZ—ÊiõÿŒ:É:ï”ù*'DþägF7øíªF[«¢5j#‚r56m^^kůuâÂ[”­ì#|µ¡²5ã ye>W«æP0ÂZõüv0tAµq¥ÎŒì¨o„ ðÚì¼V%…NÿFÞê÷4âÎú U~0>Ä®ò+Àk¯³Œ×±bÎ8Fõ©ˆàï:#Xfã½.ùh::Bxm:^ÇÚé<&^'òY­$w`p‚Àëìö×q(ê°P)¢jT» A”ã¼NVëˆøö£nJ[k )×¹æ¯UU9 ªþÐNqCVŸQ¿ø† ð:—ã!&”9£"f¸Xð†$˜†t–DLI\ò›­ä›ª¼×ñËâ]c‘íÖÉvÂÐäþŠ9d;x~piÄëúd9ñ$Òbd°•·•'K¶³SoÙlWâ^g+¯3{nïUÏ‘B£>¼NC¶gómÒíóPú»)9à÷y²#Û3«¯“P‚ù«åGáÇ?IÖþÍrp€×ÎvOÔÁ=Az|Èvð:-%8=5±Òªr8àµyg +²µ60„ÒžY‹ ^'Ç_§ŠÑ&«+‡¿Î”èXšYší¯|||óæÿX»¶®õ[uþÜØè›'º÷ÜòRóòåË-)¯]WÓ±³³ïH?yëôÙS]ûöxCóV#^›ÌGû<~úç=…E6–l…ó >mË Ý6 8,Ò°1"‹yíó~skëêÕ« ÈkÃF{ã3õ=‡ºgffnÏþîöÙÀû3ÃÎo<[_¿®¦¬¬¬®fÝÊ•+7oÞ<99‰xxm ML‡` ´röôä(M£ç†û&É1ÔMÀ­eÄà¯äþ¸]­‘‡¡™Û@ë\ð}¯ŒŸ¯¬~¬!ðíÚ½÷¤kxWcmWcÍ­·ÿy–šéæÇµ›jj¶·µ Ø74¸\?¯Ákó?˜‡ùRPT@Hí \¤˜¦i×¾ö‚⻽^¿Kp<¼öý‚¿;²…ÈiF~”Ex}øuÇ–ç¿Ñ±aõX[Ó¿¼Ù7ër>œ¡" ³¿ HéÜè¯×?:¶$Ͼ ¨ySSíºš¾#ýÞ`°Ûm03“îWÀkøk½‹ÖI⣠¯Ï¼}’`ºgøàáÁA^Ëþ:ÍÝÓ³Ñ_Ën×Íÿ„‰omë¯zRjÕC îö°yN¯®ËË»+¥O*‰@³”×4'.¼µe£}osã­s£³¯oól^11xxüìéÇ]cçNÍüÒ{ýÊTàÛõU¶™*›óáyÅÅÅ íoýä|Joà5üuò®mŸty.Ÿ :ëƒaש«ÉVpxBñ¥Õ5$ 3õŒ5n!+ó#W"cçÁGLý˳Ú_¾y¢ñ©5Ö7¾:óìÒSw7•ØŠŠî-))™¿ ¤¢¢Â±©ffCÙìKkOýkÏ2[ëB›}C­rŒÁI7x ­W¤V‹Ù5Lý5atÿñÃÔ\ó¼ö*óÃû!Ûu~œÜö×Ê» E6µØ<¬w-®È×þ]BöjMãˆg3Ü[$râÿ½}ir¦Í>¶¬¨±(¿¨¨hóæÍ.—ëôÙSä§­X\ÖõpÑõŽÍ¿ßVKŒöÁöÖEKʾßOС°Ò™;‰.¼†¿Ö+O÷“W×$:$½عw;«o¤#òMDYÿC­I,-å¯#ûbøy‹-Ãz3Y>X¹B§Óf²f æ²Âc UKK‹T«x=0=è8Y¿¢hžÀúÔ©3/LL½3Mø0<èÜRU9ÑÖx{üdàý™“®áÊÊò®}{¦Þ¹ÌNŸÖYH$WÁkøë¸­Ÿ›Ò¹ùå&©é^ñÝ´_82Ô½çP'y÷›;[ÉzžøZE™ï—˜x„$Ûý5åSdÓļ¶KÊèù<§S*ëO»L–Ùm€ŸÜÙb¼öWU­¸ýϳ}¸4yÑù½®’’"⬠¬§¯LÑgD‚ˆm[[œ¯wKÍû>œ}óäÒe•Ûwlã›ôérÕ¯ÿ0^Ã_'$ ë“gˆ¿®ß´¾~Sý†çëÉ+ô‹/7mikÞõÝv‚ìS†íÏ50n¤('·Á–Õ7F˜k·*¯R…^ÑŒÎúS*3:5ìSüÊw­à¯-)' ¾þa€¸éÇ]ó”œ>{Š,óÛ´oÛ1r¬Ÿl6óKïÀÀÀçúÜö¶vÂkþ®)H+W¹/‚×ð×FaŒ{„âÔ|êwJ•Û¾ÓºækËï)´±¼j±ieaMÊAf­¿&ÎÍXLèIÖBÅ#Ù€äªê-M«G²ïÊ“¢ šÜæ5Í“µO×ÞŸùè£ÜW®^ü‡ó•KÊÉÏáyMÑs¨ûâ…·ggg=W¦wuî´Ùl;;£úkz›rUxĉ„¯á¯ E3)D(¬û]*˜–Ó~òÚÝÓÙøRãš§ªùÚHƒñ¤T6f¿Ñs{¹ÚÅÓ«ëά©åy-UúônTÊ•¬RW•úQoKùkBÞáAçìoR³ë ã½u_^±¤œ¬¹|ù2…u×kŽ–æßOŒ¬F·´´Þ½ÿ{‚¿VåµêʨÏFà5üu<ÏéAXsÝa”¼îÚßÑô‚½ê©ª`3>ï£ó:Y;›ýuð¦EaÝ]QM‹([Ö²`|ÄC‹QyͰ¨|× éË^^“âÚwäXS“=àõÞø‘svwóµ­ ]եͫ*·mmÙ¾c›cwGߎÖ_ï¿ñú.Ïî–S=Ýee_X¹²ÚårM½ó®—k‹ið,ñDÚŠ€×ð×*ÁÚgjºìé>¨äõ®}íöçk«WW³6!rñu+Ï“ª%IV±ËRpcžÜº]ôrùöäåç­~Jh‹­|Rf0ŽkU3òŸbëé“»ýõØ[ãµkë__s}CY`Såìî={/îïpéqý`úÇ£·Î:g´ÎlX4Qa³/y ïyögŸ9nìÒ¥)}Íg²rØáƒ!à5üµ:‹k6Öô 죌î> ±{à ëgk«WU†`íÎà8GYÝ>„ºi©Ý3¶±-vÔ8¬ñõ©¸V³—×/LØŸ®mXX<¶$o扂jîŸ}­ñÖ•©Û7foýÓ òz³§ãÚS%ÓËl òlŸZg7Ô?î/ã‰íÔ$Žiðþ:Šl…ójÖ¯!.›¤ÝNHÝúJ38kuÖç©)Üæ!Ù³yyw)=µ¾ÅÎÓŽ"È¶Š¯K;qÊ---ím­öE·繫æ]Û×øpæúïÏüÒ{õÊôÄ@ω/Û‹òlŸÌ+++kØh·oh ”ã,€×àuJüµ\’üB`ľ±–0ºàO¨ÞS\ÀüG„èƒ=%ÔÙé¯ÝÜ«°RÊÃüd´Òý¼Ç|v²;rá<áÂÀÀ@ÓF{iiéË¥Åݯ¶ ü­s°ÿðëŽ];Û›75-\0ßf³­XUÝu «v]Íö¶v÷OÆŸ)Ákøk¦>uæ@WVEêÐÄwüîÄ{±”¿¦7ÅP¦%mÐð¨9©ÚïFylŸoúÊÔð ³kßžïîÛÝ}èñ΋–”“TQQFðM0=A !õã_ZZ»¶ŽÀš¼Ž?™ÎR ^Ã_Ç ¡ÙMí…I~²©üµEæ+`<êííÍT¶“HÊuwyú½Ë?¿D\óOúÓï#ønoo'>ºcgç\.Wß‘þí;¶uvvX“ÍüÞ_d<ó3˜íàu2577ÇSCë&ëz¯ÚTü(ø î?Žã63ÏD‚ñ²T¹1 +Û„ SïLO†41H„èêÕ«fËv“”1ðÚŒþÚ´2‰¿¶Ž³6¯)ªR4ºYxÙ^§Éq°öž¬'¡ðëúðk~^*ö÷ñx1ß.üu¼ÐºÞ„Jàuòà@¶§-ÛÓöxÁQz²]Ék3LIžæl¯SR°è‘ôX@½½½ÂšŒóºÇ’Êà “ f»ÃáÐ)NÊ·zeñŸÊx¶›Áûƒ×ñknn./Åb™PäuveTg»u„xHÖó:…Ž&²î…üi‘&ÉBIwÙI‰ (w¢zuÚDY¶¼×A&½Aê߀_¯!‚¯!‚bçµVX¼† ‚¿ŽýP ‚,«lâõ‚ k‹ÂP«­Ž‰x AQ^«†°Ák‚ Œq™_ˆÚÞ¼¼Öj(ÈHûöÄ;¨î!¦¦õÂЬÖ…‚ Ddj­bŠº`ej'A9Âë¨|Œš1MÑ”Äçã_Šî×e=¯£21&3np”¯öèI,û 0 AP.ó:j€['–oÄ­+·W~ÊÈUFG̱ XC”í¼V{Èc.¾“2|¢Á VŽß¨º…‚ ¬äµþ»Fœ)¿M§È Ln8ݼºù;4xÅ"¹aÁ xnnΚÌÖ<ݸº“ISðš^´|Hô†*p[ê¶Ô¸çô¢¦·gðþ:½n¶ìö†ŸIå@’[xVõú~¡|€eáÊ ¯ æ¿|Öü™Šuàt§òöì—ǵŒœyÕhÆ»“xÁëTòÚçc˜Žz¦3ÒX°a¹#OŸ[x‹¬4ÿ#NwÌ—°Ç;>þ÷›7o®][÷Í­­çϾy¢{ÿÁ-/5WU}yñËj×Õtììì;ÒOÞ:}ö!W×¾=cccð×Ù¿ö"Ù”‰’Ú“vk† È8ÝQE0½zõêŽW;ÉkÃF{ÓF{ϡ_ݾ1û‡ÙßÞŸt65ÙŸYW[VVF°¾ò‰„ï“““àuv×7’ã?=9*§7Oþd¸ÿøáþöê&ÈæŸ£UmZŠ"$¸€cЏUßò¥Ñ[Ç}öqºãˆ5øîÙ³÷¤kxWcmWcÍ­øçYk¦›Ïj¿ñ|Mí‚Âö¶o;vì™õ .×pJO%xOÍB^d¡ ønkOà"!µc¨ûðàòºk_»Ìk£g”ÍY^gêöFN,“ÚOy-¯tgäG‰Æàtǡï;š75½º~õX[Ó­7ûoŽô|ôÁ Y˜ýmàæÇÙs£×7”-¾«ásÅdãÚu5}GúStÁëÔúkÆVÂeÂ볓£¬‡ºrŠÊk< ›Å_‡ÂÖ$Ç&·nï¯z2r s¿ôü´ºÆÌù‰Ó‡&.ŒmÙhß³ù¹[çFo¾±ÝûBÕÄàáñ³§GOŒŒ;5óKoàêtàÛõU¶™*›ëáyEEE íçÏ™ótƒ×ú »­{ ¯ß¤¤>ÜßÝ3|PÉk#Æ9‰ÏP¸€ãp=”ËšÉòXã–ÓkÖæåÝ^ç¯Gß<ÑøÔëÙ#3§+ šJl………%%%ó”TTT86Õ\[¿hö¥5¯{–ÙZÚìÆÇÇé#—Çg®Ó ^ë92žÅÔ_LKñÁC:þZ9?™WcfH\Àé¼€Yœš"›Yì ¬W×t,©ÔÉOÕÓšˆbmLÓ_<„ ûö¥É™6ûز{‹ò‰ƒÞ¼y³Ëå:}öÉÒKÊ».úMgóͶb´»w´.ZRÞw¤ÿÒ¥)úàåÕå5î³ ^'%îáçÍã˜òšbºgP~úÛ@˜¤Qyjµfø¯Óyûäfò¼Å&†ú\c3Yî~l…>¬Uÿ4ø´¤ºÛ‰Á¸'NwlÏU>)Û[[[¥ZÅëéAÇè†êây6ë3§Î^¼01õÎ4áÒð sKUåD[ãíñ“÷gNº†++wíÛKÞe×Fxk‘¯Š{ð-¤ÚE™ÎÍ/7±v{óŠ N½ä5I{u’w¿¹³5*¯ùi|µ&‡¯Sy»ÙSŽnÁôéÕu”ÚÔkçëæ¤ÏìœjÍÈÌ—þ¤ó“)ÇzîpºcF¶ÇSUUõ/ÿ4ûÑK“ßë*))™ü‡‰é+SôJ'hÚ±µÕùz÷í³®3¾tYåöÛø&}:&Lyö½ŠY¹ÁëdòZén(¬GÏû\¿©ž%h’^ܶ¥c÷v‚ìS†ÉJ!"Y8µÉ½ÞpÇûåÍËÏc°>³¦68°ŽO?áÎ#_N”1q«7êŸ^´IU<ĽhI91á5ñËÇO¸æöþÓgOÉÞ9¬ímí®>²ÙÌ/½¥<оm‡Ìk¿2ÆÎ2+Z¤Nðd׆\‹S­ô࡞ÁýÌV“Ôï”ÞÚöÖ5OUÛ çy#ð"bò€&=çŸm¦°>õ•µáÉë µ::_j\óµå¶{ BŸóóm{uxM6¯3r3ïÌj‰­V6Q5ãú!K6Ì©p­*ϵ‘0(Nwr§víêtÎ~üQàÙ™ ㎺ªKÊÉ‚i éz­ÃÑÒ<;9x†0º¥¥å3 JüM7Yö{}‰VÆ6•¯SÎk: uÖ´;Œœ ÷‡¶œºöw4½`¯zªŠ ƒ¸ys$<8«bíCÒ~»éƒuwE5-¢l™Þwøkv6ù›±085ãµò‘Yë‚ÇéN…¿î;ÒßÔdx½7~ä¼ùÝæk[í]եͫÛ¶µeûŽmŽÝ¯öíh½~¼ÿÆë»<»[~ä8ðhyÙŠUÕ.—‹xpý‡fþl’³Ìü5â!©æµŸ½ÞS\P³±¦ûÈÖb¥Þ¡ƒ»öµÛŸ¯­^]­ßGíùLuóÎzrkhòÚ_õ$YC.¶¨]Ò…ÓÊ@Ì`-œb¾NRØ üušüµÇ{þÜXíÚ:Ç××\ßPØT9»»9гçâþç‘×ß9§t€xçEKÊIª¬,'ø&˜ž¿ ¤zeÕÒe•µkë¬Éëèñ“¾àtQn³nð:B~¯‘®dÜñ½§ÀJº7ÇÇIâÎ|6i”N2# átÇí½èùºtiŠ€Û}Å3>>Þw¤Ÿ°{ûŽmÄGwìììÞÐår‘•dMGÇNë«?wÇz¢SñØ ^'¹¦Ú-.à82?| Üžà{rrÓÞ.™*8ÝÉ}œ aÔÍOHAXôî»ÓoOJº8A^¦Þy—2ŠÝ<¬¯c»C†‡›0ÁÉÜÒÛ3â!V>Ýʆ^|Н㸙¯L†‹ 8E§Û W&NwN7mý;šý¦:Ýàµ×`­‚ kw²p”€.àä!ÛŸñë§;-§Ûo˜îô4«·¯IžÒ5=–”e/`œnœn žîñ×y–/`œn‹ˆº1‹ŸnÖ½‹8ú\à5d5™ª×Rú†kYe¯Éɶ¡×-»z­sv­ ,¼¶àϧ—|VúkåY´Úyµ8¯­y[çWÃVkåâ!„{³y!…GÉlåµ2Ü.5©Äé„@mxmkœôìó×½½½ÖlÜcÙn$[r;s‡ê2dAe¯ï@Y[YÃk‚ ¼† Êú0·éxæ>Að×AYé¬Ák‚ økð‚ (yÎÚ¼&Üé‚ Ò‚¤%üuâwÕ=ÄÔ-í~ 7'‚bUVò:AØ%…•.Aàµh`ÙÔתˆŒ‰›Z;Iµµ7þ¥2‚ ìö×I§˜ Z_¡º^X÷á±Ó富N(M®«®ÜÞÈØÜQ­´2~ XC”ݼ¦SNmgpš;­Í’2KžÁ Vý-ñý:‚Àksùk¶[âFÙ²ò»ø9+•ŸU]™N±ü/R¾ ß AP¶òZÕ æ”­Tõ­töá ü,¿†Š|ŠÞ øwóóó•Ÿ6æ?Vþ.-^ÓC™—תãvÓï⦠qúª¿™ê»ª¤Öa«ò® µ™Nžó7¶ÉLbAÖ‘ÃáȾùµíVå©`·•Û3w,l@©µOƒ;WÞt¬ä¸òKY„þ‰±Û!(W577'¬Éšùe(R‰¶Ñ¨–GŽK¾‘‘i@YØwV²žßFØŒFôÃ;¯óÈÊ`œ‚ “Ç:L=?º¯ ÆÁë¨ñæ…ºA!ÂGÃ…cÓ?}XçÃÜà5×fä53•JíÕn',+ùH€Ë×ø)=¯~}#¿hµàÊ)yùÚH!üÂÿ~%` Aàuvûk!|¡Jy)·áãúf< »ePV†þOB,‚ œ¹Þs‡×I¨šùÈFL{SÝ•~ã¨GÙ… ‹0šÇ‹j€!ûx­ê4õéÉË!l™ˆoŘ|¥ÈS房¶%1á%Ai“Õã!ÙÈkÀ"ãŒÆ)€Àkð:j`F…ä>šÄ:H:Øá}èvȺ¼F)I5Ââ@ŽEÍ+ä xÛ6ï´šÈ%§ìðjÁ¬SÜhD(u°Màuœ¼¶ìùK°mɺôÏ–3YgñRg ^ƒ×±¼¤ðÚ‚eÖQúgJ^Çv(ôê"k,x«'J ¯XE ÛÜܲ¯Íâ¯}^7[v{=Œ’²_só—®üÆ/„ëYßß™Ç_'|nÅBø­pk?Y¿:)÷fsd_‰ rFPO¬ÙžÂ\¯ÁëìáµÏÇ0õŠÊHT!ÓÐñ+³B^ã¶‚IL$ëH.ÿýæÍ›k×Ö}skëùsc£ožèÞpËKÍUU_^üŲÚu5;;ûŽô“·NŸ=E®¨®}{ÆÆÆà¯ÁkðÚ›|¾‚"›2[xý„¿¬ìÖ^ëˆ`zõêÕ¯v’׆ö¦öžCÝ33¿º}cö³¿¼?3<èlj²?³®¶¬¬Œ`}å+ß'''Ákð¼Ž.rü§'GåôæÉŸ ÷?ÜÿÞÃCÝÙ^֪ϡ)Š˜á¡Þã¹êñé0=…·±D²1ƒYG ïž={Oº†w5Öv5ÖÜú8ð‡ž%°fºùñ,¡öÏ×Ô.(loûÖ±cÇžYßàr §:gÀkð:Kyíg$" ÅwX{ ©C݇×]ûÚe^½r’Û,ã¼&ÙÂ4(‡býÞȹêSª¸£´Ϻï;š75½º~õX[Ó­7ûoŽô|ôÁ Y˜ýmàæÇÙs£×7”-¾«ásÅdãÚu5}GúÓ™Kà5xeþš±•p™ðúìä¨ë¡n‡œ¢ò:·êÉ·OnÝÞ_õdäa¸¥g‘5kÍ|Ug<ë&.ŒmÙhß³ù¹[çFo¾±ÝûBÕÄàáñ³§GOŒŒ;5óKoàêtàÛõU¶™*›ëáyEEE íçÏå@ÖAàuŠ®:»§ðúMJêÃýÝ=Õ¼6bœ“ø¬šñúF‰Ë«kH¦kÜBV‚×:}óDãSk¬gtÎ4Vœ®(h*±–””Ì_PRQQáØTsmý¢Ù—Ö¾VìYfk]h³oh§Õ_g^§ÀY{¼<‹©¿&˜–â!ƒ‡tüµ0§[©ºœÕС¿åÌšÚþª§ètÀù2¬O­©éXRž~Þã5’E‰ˆ¿adK<„ ûö¥É™6ûز{‹ò‰ƒÞ¼y³Ëå:}ö9¼KÊ».úMgóͶb´»w´.ZRÞw¤ÿÒ¥)z³ô˜4Žœ¯Áë,àuÈöúy@ó8¦¼¦˜î”_‡¾Ç6&iT^BÊ…¬ãµòÉ€€8/?h±ékÜL–»+ª¹ 'ÝB ?ÊЙ…ãxRÉ"^kL޼µµUªU¼˜tŒn¨.žg#°>sêìÅ SïL“ëexй¥ªr¢­ñöøÉÀû3']Õ‹»öí%ï²ü4Âk#ó"×àuvñÚÍ{@©vQ¦sóËM¬ÝÞ¼â‚SoyMÒžCäÝoîlÊk~_­É!³Å_«ŽæÊ¢"$Y]s´ú)µñ%ÜQ±uvcú'Û­rûlñ×ä'TUUýË?Í~ôAàÒäEç÷ºJJŠFFF&ÿabúÊ-ä’Ù±µÕùz÷í³®3¾tYåöÛø&}:æ@™“^µ)§Ákð:Ëx­¬=§°=;@ìsý¦z– IzqÛ–ŽÝÛ ²O]&+…xˆ@dáJnA7Iô0¯×¬¥F[‘¥~[šªT‡9h@Ê?³$ëÜ‹–”^¿|ü„kþgï?}ö”ìÃÚÞÖîè#›ÍüÒ;00PúÈíÛvȼö+ÃJ,ÇXþk‘:Á^ƒ×™‡0ÈâÔA+=x¨gp?³Õ$õ;¥·¶}§uÍSÕ¶Ây”DÌžçpÉë µ::_j\óµå¶{ ˜äÒuxM6Ë ^S燚‚œ^]w&Ìëˆmx4«RF5£´xÍ糓ɦ¬óùvíêtÎ~üQàÙ™ ㎺ªKÊÉ‚i éz­ÃÑÒ<;9x†0º¥¥å3 JüM7Yö{}ÂÜ2æ¦s·¯Áëìæ5u‡:kÚFNÐûÃF[N]û;š^°W=UÅ…AÜ<’ó¨ŠéÜhj·WGkiTä`åŠÐ!¹½=5ôÕ_çD<ÄÛw¤¿©ÉðzoüÈyó»Í×¶Ú»ªK›W=¶mkËöÛ»_íÛÑzýxÿ×wyv·üÈqàÑò²«ª].ñàús|ÎH-vBþñð:7xíg¯÷Ôl¬é>²‡µØc©wèà®}íöçk«WWë÷‘±B{>ò½oÿ§ö3OJMAòCÏÝýUOj5»æÁM{?ªf‘V5£°òÏ,ó×ïùscµkë__s}CY`Såìîæ@Ïž‹û;œGz\çœþñè­³ÎÙ­3MVØ—<÷‰<{£}ì­qr)éßùè¹@}#x›¼¬„Å5ëý{#x= ÃúÙÚêU• Ö>OæO^yÍÚí1"Ó•}Ë×(*Ö¼RmBc|¥ùýõÅ oÛŸ®­/-[’÷þ*[`mÉìk·®LÝžýÝmy ‘›=מ*™^fëXgûd^QQ‘}CÃØOÇUs@uØá|¡=x#ñp¹—±"¹ìõkˆË&‰`𤖶fâ» ¬É[5SÒ;,˜'úv?‹Ÿ­,vh pí& ¼éKÛ|Û÷×o½5ÖÒÒ²ã•Vû‚¢á‡îvWÙ~µ¯5ðáŒÎþGŸçÊôÄ@Ïè²b{‘ë²²²†vÂë‹&‚ùé‹’“‚’XÁkðÚ¼ö²n¾ž«ÄDÛ7ÖFÏûT°ý5!5y5ÕD6&œ_F ~s–ûÌet»p¾ãÕξ¦öÒÒÒ–ÒâÛû 8û¿Þ»kg{ó¦¦ÒÏ•Øl¶«ª»tÕ®«ÙÞÖ~õª'ãù ^ƒ×fá5ÿØn+œWYUÉF¸6!}Ì<…Çç1o¹Ï`ÿF¢é+SÃή}{Hê>t€xçEKÊIª¬,'ø&˜ž¿ ¤zeÕÒe•µkë¬Éëèñ“¾à4Fî¬Î:¼NŽü^)$"õ–Aߨ{ZóI÷æ&›L7_ çRÎÇChÑ¢¿ñÒ¥)n÷Ïøøxß‘~Âîí;¶ݱ³³{ÿA—ËEV’5; ¬¯þÜkæ¤âq¼¯ÍÂëT##¹»5!¯å!°Ýœ—tÇ— ©FvÆû£Ó¬óq äy÷Ý鉷'%]œ /Sï¼K¯tó”að¼Î<¯•N$8peŒ%sb™†×4ùU µ9C"Y1µ¼Êô˜&˜q ¼¯Mç¯9‡ÇèDЄ†S}¿Æ]ÍŸÒóÜà5m•;šýÙ›ux´'z]p»ã¸ Úùl„N0ë‰ø™Ê©‡ÍkSúk¿áòéÖGyªs¼¯ã?RvéšK*)бxÖÅd@Ö™!8“ÃRnÞçËga%Èkd]Ü¡.YÁ_'º w”BBàurx­| ¡:°³ÎUdˆ0xmÁߎûVš/ù¬ôת‘ ž<(‰Ì5’¥ÀxHÆ ¥”ï”D–eõä …mØtÚžèãÎø²¥ó ¥fŸ¿îííµf#*Ëþpä-1e¯ï@Y[YÃk‚ ¼† Ê> ux¦ã5ªz ‚à¯!‚²ÒYƒ×Að×à5APòœµ)xñ ‚tăѼþ:”ó7(Ö3ÛHoI­mÐÓ‚ ŒËÔñäR2 þÝøãAPNñÚ8mceq¦HF\ !² ¯ £c§”¼ú9ôâå,¯Uá˜81Ù<²Œî–µQ¿ APîð:Öiå„Yû(L“2]|;!‡!|Pù[È2\6A¹À똜²rûäNªêˆ©%WõÝ<šùÃ3œB”ƒ¼ÎÏϧ¦•¾EYÉþÔâ5wóô¤®VX£t¾ü»ÊOQ|“CÒúva¥‘e‚ ,àµrÜnekQK>2™£“9üÓx ¥Ãk[ö¬‘«¼ê€$–9 fÈeÉI$ÁkWÑ«™c$sènnn™^CÙÍk¿÷A ïñ‡í¼ÂÂz|Üü™žx*²¬ûJ;¯ÝB>e°&3jÖ¥+sütÊÕˆ'?O|ù™äâ^C–ö×>ß/øh e´/sÍ R$wø¦Õ“Ö¬­-R9ä‡ÿýæÍ›k×Ö}skëùsc£ožèÞpËKÍUU_^üŲÚu5;;ûŽô“·NŸ=EÈÕµoÏØØü5x ^§Ö¾‚"›2Q¨ñ,K[‹±Ô!Éaýü^nšP hö{¥›–ÏmÍ`ÁôêÕ«;^í$¯ íMí=‡ºgf~uûÆìfxfxÐÙÔdf]mYYÁúÊ'V¾ONN‚×à5xZåå瞥iôÜðÀ GÿñÃŽ¡nÙbœ„O&êmÀŒ¼ŽGõùÅô+âþÉ1}0¥¼¦?œÀwÏž½']ûk»kn}øÃ?ÏX3Ýüx–Pûçkj¶·}ëØ±cϬop¹†SšKà5d^« Ñå Úç{ m§ß>á \ø¡„i’Øù×íJ^ëï9‰î;uH Åc‰³ökN…‘Ÿ_’‚!#y˜}øuGó¦¦WׯkkºõfÿÍ‘ž>˜¡" ³¿ Üü80{nôú†²±Åw5|®˜l\»®¦ïHŠ~2x Á_E¸Lœõ©‰„Ô=ƒÝÙ»þz›ÀëtvŸK’Èþ'·nï¯z’£³›®?½ºÆÌƒñ¦!s&.ŒmÙhß³ù¹[çFo¾±ÝûBÕÄàáñ³§GOŒŒ;5óKoàêtàÛõU¶™*›ëáyEEE íçÏ™3sÀk(»yMÌ5óƒ”×ÓŽƒòÂþ]ûŒúëlDqÙùùù„˧W× s5n¯Gß<ÑøÔëÙ#3§+ šJl………%%%ó”TTT86Õ\[¿hö¥5¯{–ÙZÚìÆÇÇi€Çg®Ì¯¡,ãu0újÆg+œ'øk‚é¾¾¤öPw§Ìk¹©ˆŸ/¯LªGíÇa$¦P+-YìдsÖK*ùoÀ&Òóª“bÍ´ôÄC²o_šœi³-»·±(Ÿ8èÍ›7»\®ÓgO‘X±¤¼ëá¢ßt6ßl«!F»{Gë¢%å}Gú/]š …› ͤš¬^CYÏëpdÙçæšÒú ˆ©}¦!Ž ¯a-/(ýµÐáP˜Ó›Ô }ÒÓĘòšºiëîŠjá«…iB£2H¼1D›;T9OS3‡V)·¶¶JµŠ×ÓƒŽÑ ÕÅólÖgN½xabêiÂ¥áA疪ʉ¶ÆÛã'ïÏœt WV,îÚ·—¼Ë*oä•pϯÁkøë 5¤^0>7¥ssKc¸é^ñÝ¡xÈ~òºçPgóËMßÜÙJÖ3¯¤sù s"'åÂK)’øf!Ù§ÖHÔ>õäÚ×v{ ÌÊߺT§VrZùg¬÷¹”‹<žªªªù§Ù>\š¼èü^WIIÑÈÈÈä?LL_™¢L'hÚ±µÕùz÷í³®3¾tYåöÛø&}:Fµð$2ùx e%¯YÆB… ¬ß>1zv€ØçúMõ,miùÆæ–¦·m騽 ûÔ…A²òžÂ™iÁæÉäÑ•Kò—yKdfõ×áO¾ÄëºÓkÖ2£­ó¢NOJŸîi†¨ÞÌôÿ4ÍÇ{Ñ’rbÂkâ—ŸpÍÿìý§Ïž’½sXÛÛÚ]}d³™_zJy }Û™×~eàˆ±˜¼²ÙYUI ²Ák(üµW¨W ¦ý=ÃY›— ÙöÖ5O­ ÂZ-ÂÿI¼jÖÆCü, k·Ž1×:*IB.)³ŽÞáÌÊkoíºš_ÏÌ÷ÏÄ…±Ê%åäKy^_º4Õs¨ûâ…‰ÙÙYÏ•é¯í²Ùl;w^³Á T Œ€ov‡‹)Ä^C9Îk ëcÃ#y‘º{:_j\óT5¹v3Cš¯¸üh`!;y-Áúü³ÍÌYŸùJ]^Þ]¼ûæ‡ÎP­\Rå‘W»&À`4)åýÑ}¾]»:‡³øpfæÂ¸£®jÅ’r²†`šCº^ëp´4ÏNŽÞŸ!ŒniiùÌ‚’ÓM–ý^ŸpGçˉÄÁkðÚŠ¼ær rÇç¶Î#°–z-+÷VÀzßþަìUOU)›ñÑFZúñëä";ÅHrSg}fuÍǪ$·+GE”5ª¼f}#YxD‡×t{xˆŽgÏ ¿î;ÒßÔdx½7~ä¼ùÝæk[í]եͫÛ¶µeûŽmŽÝ¯öíh½~¼ÿÆë»<»[~ä8ðhyÙŠUÕ.—‹xp6îŠ>šiΰûâ!àµÕý5ëÁHýõÚgÖ<ÚéÁCr0Djmm¾¶zuÐYS$ÉþÒ¯úÔ¯Åè¬à5í)Cœ54yí[¾†k‹íÖÿ8S0£d"kU3òŸâ}·ië pÏŸ«][çøúšëÊ›*gw7zö\Üßá<Òãú;çôGouÎhÙ°h²²À¾ä¼OäÙícodiö§ò·£¾¼¯#ÙíñHÈþz£o²J°~¶¶zUå=Å|@@ˆ‡èOå×™™×\»=?¿’µÅÖú]ÔVg¶T¤Á__¼ð¶ýéÚúÒâ±%yﯲ֖̾ÖxëÊÔíÙßÝ–¹ÙÓqí©’ée¶Žy¶OæÙ74Œýt\5Ç„ÌTmшö|à5x-JBö†5ÝGö£M0MÒ·^i®ÙXC`-õŽÑ§¡¬CÅoñXå5­u”Gæ£ùàÎ`&dÐ_¿õÖXKKËŽWZí Š†ºÛ]eûÕ¾ÖÀ‡3R8û}ž+Ó=£ËŠíE¬ËÊÊ6Ú ¯/^˜=ØÅ–WIì5^C¹Àkr²Àˆ}c-aô¼O‰£§†"~+XH­{Rè·»M[*RÜ'ÿÆ.œïxµs` ¯i£½´´´¥´ø@çöþcÎÁþï÷îÚÙÞ¼©©ôs%6›mŪê®]µëj¶·µ_½êÑyË`æ€×PVúkop´ë‚ʪJV¯ÈøŠ~¸sIÑcGfFvªû7M_™tvíÛCR÷¡Ä;/ZRNRee9Á7Áôü%Õ+«–.«¬][G`M^GŸ Ízá6[æ€×P¶òšNvÅ7‘Gñ+± /yƵèm*Bºih²&,3ƒ#e6søI.]š"àv_ñŒ÷é'ìÞ¾cñÑ;;»÷t¹\d%YÓѱ“ÀúêÏÝÞ{·¦â1¼†r„×|¸C¾Tü!7 ˜x4¹–†+-ý¼ëÁ<?0ãA¡Le{¼ðq9BXôî»ÓoOJº8A^¦Þy—2Š=‘[&x ^ƒ×F¯™¸©”þYBÒœ9Öô×±ßþÓT$ÀkÈR¼6õ3>xmÎÌ¡“/ÇŽf¿©2¼†²Õ_ËÃ;D%·Ûx $®*s¼ö‡œ£ß´¥"™ã7\TÜúå!#‘4ðJ‡æææÈkoooeäp8è‚jÉç¯vZ¤{,©¨£!"sÀk(âí áuž…¥Ÿ9¤H[0OøýtŠ53‡/9¬_%¹Ÿ×P ¥:#‰i›+@/!iˆPeµ²‰×ää×¹}}æü½ Š),žQüϧÅ)+ý5Š{ö’ æ¦ãÎÄC \xÈ(ófnðÙÊkƒáv(‹‚!¸Agýû–•ïdÊ«#ûüµ¥Ú„e¯´N“C–ųeXµá#dDÙÄë;AÖVÖð‚ ¯!‚²>Ìm:^£2‚ þ‚ (+5x A ^C%ÏY›‚×x‚ HG<á¯!‚²Cà5Ax ^C×Aà5x A^CAà5Ax ^CY‰×APªç4H¯1 9APæ4H¯!‚ øÓT¨à5APv¼† ¯!‚ ð‚ ¼¯!‚2#ýêGð‚ þ‚ ¯!‚Àkð‚ ¼† ‚Àk‚ 𼆠¯!‚ ð‚ ¼† ‚Àk‚ ¼† ¯!‚ ð‚ ¯!‚Àk‚ ÈܼVnul#ßÅoCÇöÎãõS>Ÿ/î;ÿEd?1}VòX÷Ax(¯ •”ÛçççÇŠà¸ïlYØê6±6êNbšš‚ (ÃþZ0°¼w|4{eoim¬ü¬à¯…¯S~ÿª;§—ßF5³˜¦Ðû“Öá©þýƒøé@ ¼îáD>¨ÊkúÊÞRòKÀ¥ª‡v¥¦Ð °ha”ç/ƒ¯Ž‘ס3yŒÐÿªëIŽõ@ÉüL¹¿¦_C¥G†9Q±@4þ&£êÁUCš,ÃÞ¢kxžª'º1xQ½ (ïXª¦žmp‚ Ë+­¼VE›¾SÖç5ï|é2ÏzÁ_ë¯Nˆ†Ý„ªâU¿Hˆ(ѯéF” Õi}4^«ÖïéÇVêDŸµ,­A^ëÄC´xíU«&5⯣Œ>Ç!²2¯õk°Rå¯(S‡«´½B|@ˆð0U¾…+cℌ:˜Q+3£Æ¯Yt%Yõ¨l„ øëÌð‚ ¯!‚Àkð‚ ¼† ‚Àk‚ 𼆠¯!‚ ð‚ ¼67¯3>–´p9ã_šæÃ‹ãÀ<ÂdõBÒ9Œl¾<)ÇwÞÒo·l¾×)Q‚Å1=%’ÿŠX¿.ñË#‹ ^«Ê Rš™Æˆ2Ã}²2u<ü–s5m $ǦS>‘oൔ§IìØô>â Þ’u<©èûn|­-Uïs©»H’¾çL= Äô½1q*·p‹ç›yyê2Ì3‡/¤ôàÆä˜Z&%=çKø^Õ/5’FŽßT'BëðÒQO•ó ñÜŒÏdð2Eß•¶HµEʺ²”Õf(»ò ¼Î¤50 ²ã>*Vìù]é —[Ƴ‹eNL¹”E&+ä›ÙyuRóø¤5õbâ{Ž:q°Öo¤#» /ÄýëØõGè6ξDŽ'Áð³±ýhM—ôr¢ü¢¸ ˜0'FF²Q9q¿.¾ïU-F²Îšù–e¼ægWIÖ ÓÊßÌÎä¢Åš8I˜ÌLÕıÛÌfް¬uèÿê/o;Ól’˜ÂĤI?HåT×ñeÕò-ûx­u¦… g£Î3ÀÏ d4¿ö½ª³§«Þ]U§YК2Xuúá`/¦ÊéÐøi‚•y¥5g‚òHT¬rέ‰âÈaŠN‹$ a¡ÂOãK£jNFÍ~^!ÕüaÅXø.ÕlÔºoE½íyRá¹í)çi2Rr,ßÌOñZu`­YhU§Q ®•ÑÊkIkÂåùÖß­ß½‘³D*÷£s… “£+³Qùn^¤ 2š•Tƒ™£?U¼ò[èogŸâ¿‹?qZ7 #óû°ìr8½½½d¾ÆQü„‰TïÂO6.¿¨eLëñ—Fʘ²„«‰àc„û¢PêŒLÎMwÅòœœÒhðÈs&ßâžìÜŒ¼¦­Ù”s¨+Ÿñ£>«ò]ÿƨ¼ ÎÝ¥3;»áó÷•¨N~µrš`–-äJà3G+ßx;ì‘epIÕ £êÝEù–ªÇÑ8ƒÖLDZevÅ4«4ŸJ‡%Üx ƒ8²QYtÉ×ѯÃGŠŒllœ››‹5d…2÷¢Î»]ù¦%ƒùij-Lý«|ÜPÎ55û”1#W—W{vsý¹}ϱkä\ø“d9Íóï¤ Å*‡¿ÇèÇúubyF2ÇÈÁèô•G!ÆTüŒ8;ÕG­¢«\ÚÛG%ˆÎÍ Ö2¦ê@_ä8ù'­ N6êD± ^›Ù˜o:#ùi.^ó—¥FZ0j^뀕Ý-ù¯Ö©YÒzxW t°[ºþ èFžø´x­œÍ^?ßTÝGÔ5q?ùSYl0sŒx1UÐÇj”á¯8x-ô›H<…ìR-cìqJùÈ(´ïŒÕ¾°'9 '!«•_D=DâWGå›NP!»ýµð°/<Ý(c…Q—”0R}NW= :%Cg·:®œG¿jëý’ª“Ê|ÆDê¨ bÊÊXZÁ¢u0üß9¬ð•œt%YcÜô܆ÏC¡ÊZ8fýr˜`6t*|nkÕ‘(+‡õÃ_:Y¤šÛª¼ÖªMÑ/9“o‰ä§IyÍžb­²éD'k´Úf²[…ðƒ=•U«}õ…ÖÓ½ê Ù`¾éjÔ\ÕÚ@y„Þ„•ÄV1qðZõãÉjÙ­5þ“uCYDã;5B]‚PÈu²(¦¬6ާÜÈ·8Š\6ůu~°VdMÈߨlUÎ4ñ6³ú牿KG=Iªß«Õ>$jÞªvR©/’p?ÜqâtK°c”j' ý¸¿‘lŒ›ÔªcQ V:Áî˜@ÀñlÔ©V5˜EÊÃ3Îk­¸­êš¬Î·Äïmfç5d<‹oI)åúÛX¤§{âÞ¥¼†bãµ5G)ÒA*Š_Rðl¯q¦S⯭<°œ܉?‹Ô‡«¼Æ™F<$µÏïI/~§6®bðg:U¼6>ÂC¸iýø2Š_RžTà5ÎtòyM0}Çªš››‹ïDu›;Ö®bðg:þÚR9©:ÔbRŠkh©™´Z7ã*¯q¦Áëø¥Úþ7¼¶`I¯Ákœéáµ/h7ÝŠwü¹šLH­ tƒ×à5x ^Ç|Ðz×ãËde¯i^)& tg¼¤×à5Ît.ÅCü–Ð3 IsTÞç¤q¯|,ìãÏÒl„Àkœ`S€¦ È¦LàuLòyÄl¼§ÐVP|7Å7?T!x ^ƒ×àulPÚ,§'Gi=7ÜüðÀ÷ Ì ²³‘×B6’<$9éê&ÔæŸ`ÒImð¼Æ™Î5M¸|zòMOà"åËáÁäu×¾v²>S ಑×r6ކ³q¨›ecšÃ à5x3Û¼–\¡CFŒÄëÁC»öí  ñy¼Ùšô4³ gãà!š“‘¼ö¦¿J¼¯q¦³ž×‚ï). ”é”aݯ ð:ªÜ”×ARd)wÍËTûHð¼ŽóL[d¸gJ%hTl]AñÝ¡E?Y–A³_~ßOajO‚·4·‡.Ÿ•Í5‡·=Gej4åTÔfÎFþ:7yÇ€ñ© ›sÖjRÆ(C8rO¡¾KaÏðAFU­5/¥Ö$œ9ï¯É}ŽÏ%²pæí“$ëè“ ËF[á¼Ð]SºqjMÈxmÚl„Àë”0³iâ!r㟗àƒÐ¹ùå&¾åYøA~¨{Ï¡Nòî7w¶ÆÄë$R&+xM3MÎÆ‚yÅR’W!7·„³1ØÇëÏÞl„rœ×>Ó¼ö ¡jJ™Ñ³Ä÷Õoªg‰p‡¤-mͯîÞNXsêÂ0Y)4lÐ ÿhŸ”“nN^³ŸFMH6ž<#fã‹$[¾A²±CÌF¿‘Û^"S_‚×àµ7‰ ´Ìˆ¿÷öXÓzÅC|܃OýNé­¶­kžªVV6‰‡$«Wˆ9yMJìqä°"³QŠ,mûÍÆ kvã4VJ<'Ákð:[Ü1‹ ^0©Î·?‘aMQÂBÕ”/ìÏîžÎÆ¿jZóµå¶Ây>E-¥Ð$«½¶iý5­T¤Ù(gÝåmOÊÆ—UïyR.åÇV H–‚×à5x’ &¥ùF-aÿñÃÁª0ÙbÓgÌ$víïhzÁ^õT•D7c„;*¯ù ´ÜnB³qà„ƒ¡Y¨¤¥ÙøËÆP… *êmÏÙVþ¼N¯i%k,5T<³c&á5eMÍÆšßß­ Ùµ¯Ýþ|mõjÞú•ãi5Dc³yå|{¾yŶµÏ¬í>²'x« —öke£j±ÏÒf‘üub@äÜŸÛëa””½‰[¼`|¿ÐzÆL]½hfy-ü.ŠlGÿÞX”(ólíò'*m…ó<>1 âóøSKYÄkÕl<™dƒy•ê,Íj^³‚—x\¼6¯}>†éÈ3kÃÌñ`‰÷I}ðj6¬&ö¤{·Ä´¾Ò\ûõuÕ«$Ê0X+ó*OMBSâœç5)W¬ëyÍú54I’ôͶ-â+VaÍMhNòaTeÚl(ɦִrÃ8æ/¯•òÓê e ÆÍ=àNªóo‹Öðõ:òP?ïSÁ1?ióádí?çý5C¶}c-a4ÍÆP*ÐÊ-{˜R‘”lä ”'¼Ž?CCZ¾yò'Ò¸ ý?ì!ϪBXÕ+'ESùk:"²tyå=Å‘?Óï ×åÔÄ(Iô×´&–EKè\YU™”QVRDí¤ÇCÐp@y²Àë<5{ð”ÚËã`¨Ž jüR`³×,4úEnfCËn“_&âµ¢TÈOo¿ˆ|Ë«ÙH~czxq»`0'Áë„®"ÚÜêld_†lg.ÅùìŒN-ßáüñÁEë6–ôº ÇCܺÙ"N®¦“ci¨PÉR ^ç0¯Ã§Vî%ü&%õáþ`ÛX×F.’$^H™æu Ë}JÙã=I7?Å5Õ YÊk¡eˆäp8Àë$\0<‹Ù8sR<$ÔëZÕ_›°lü5!Qû\õ:ñ{x»ÿ©¶G2gL)‹yíóÝSX` EY?ðÚ¸¡óó€´d¤ÑŽ|=Cßch .l’qAÑ/4ͼ¶Â`d4ã¨Ë ¯ý^_~^ÞÙÈ E¥®¹ŠzdE=¿ žnÄCb¶6|«jyô"›0.è¼â‚SokŽ ªÃk~ÜaúšñúFÖ/”¾eA%‘×sssÈFóZ|ªc3aöýð ÖãŸMPg^{ †DõÇ}qÛ–•qA# µß™ÐR+ßò¬§üü|Õ‘HñÓù–œWÅCä+Ý/L(JÛz Mž ièú^Çc±…8uðtêÜ9.hx@K:»m0›uñ+Kùˆ“”ŽÔª!H«ÅšÌÆëÈÓ!΄µ¡—êÓ°re"Íàuœ´ ”6vç CÐòkËm÷²þf~~ö<^'qÐ"ðÚ< ± ´š š‡×Rÿ~Öí¶øþ?óöÉÃÄx…gÂÜo†àµ^ác1kþ,’$Œi1.hèŽÍßÀ…ašU1m’ö!^ëÍÑ£ó{ÁëŒ?¦¤(~MÈÃ… CÖ©;¡(½~…k•u­q_Màulg”½ÞS\P³±FÐR1OJïÐAµqAÕó"+ÚóAàuÒ‘m6^ó äÑlî–Ö¼}BBQò£( U+¢¼Ó>ð3Pƒ×©âµršuZã‚Ò¡æT?˜ÄÄÍkkŽ^›ù¶—ô¼•Æxûk8°á¹ öçêë75° E;vïÐo8Àã[pc©¾Áëè×3E°ä²#´lik&¾›Àš¼eÐY›j\P€þ:‡y-:ø^E~6¹š8æàà,HrÃò§Üp`e|Ђ׮o vÌó\UhIH- âl&[ ^ƒ×àµ/²‰ƒcS‰LËË Öª3a*kžTy­:õx^ó![á<: ¥r\Pð ÌÂkµq 冯³&¹Ê9êø†ªÃ'0.óýݼhb*^û½>:È7.h òî ^ƒ×ÈÆÔ]È÷†gÂT¦{·ë7`íùLÍë¨Ì5ÕnÁkð¼V½¾hüšÍ„n•«h84ÑѬTJ¡àuÌR»ÒÏy2ç¼± xÓ¼ö«^‰Ê™0[_‘¬xb©0ìg:ï…O%>Ú8x4…b[~¯Æ0¡™½6ÀkðÚò¼v n‰§'ßpàž{çѶÁa$ø!Þ‚×àu”¢a“›·&÷ÔVäµI  ^çj6bBQoÏ·kåY<ÀkðÚœv;q^[­É@oo¯Uüµ4 ¨ ^ƒ×¹â¯ÑpÀñ«¹ðÚ< ¹cIÍÍÍÑ…$ÎW¢‡f¿÷>ßü×µêo¯á¯¡$ó:YÇu‹É¯q‚‘oYÃë¬Ë1ð¼Æ™¯ÁkóŠïÊ¡lÕ€«¼Æ™¯s‡×ë!ÌÜD•Òþ¼Æ™¯sß_ë°8‹BØà5x3 ^#^Cà5x × ‹=€×à5Î4xm•xŸVw‰üü|“ç9Âä¶¿†,Ák örÔŠÆÄkä[¦üµ|nùʹkrëöþª':“ëåôê­a6µDÇPN].!^ǦiѼca)‡ 4Âkä›Á|Ku<Äã“L4á2C3›™{¬q ]É£3îF#>YIG x ^Ƕ )…V>÷qÏW€|3¯%íóHsæ+uÄbS:“×·š$Xw,©Ô¹j¢=ëS¿økð:+çÛ5§bm‹|‹/ßR‘~Ù}œ‘Ý4Ñø³/‘?»+ªóòî2x¿‰zqÅw¯Áë”ÄC¬pæËCþŒ›×È·Œúk•qôóed³D½6?g·²ŠRy+ì6] ¯42N?+øqåöà5x 4oÈ?ÛöööÂ_§4ßÒ–yù¼¦‡'…œ=êa !®-D<©•ìfdç-üi0„^ƒ×àuJ ò-u ‰7ýüÅCkyXóÕëG*[æ-¶PÉ^…v„Âöð×àujyi:ãã5ò-³vr3?ë3kj•¼V}VЉ‡hùe×t?Ê„à5xm~í×XfŠgâÎX›ÁÆÑÜ*Óþ:÷ó-EÙÈ\3sÖríb­x¤Ëú?PYßhœ×ŒÔZÛ<ÉÍFL^•j£(Ú²*nF(Ë_ÒKdÆã!9Ÿo©ËFšK“[·ó€&¯ýUOžZS:<ÔÌg§€Å=„à5«fdŸb¶šC¦êéÓú™^«:í`¦ô,´‰uC´²^I!¯õÿÌ%^[!ßR“n¹¢ºéƒ•+øƒÉÏÿW¬}HrCY‹xˆ©^+=?O ®Y+¡Ÿ{PÝ,óÿ•üëOî•£å4czºÏ0¯-o©Îƽõ{¹¶ØÖ$eìê¬÷š1ˆ f£×Únµ2 ¼V &R§ÃL ‹*Òf,Ú¨l5E.*ƒ—JTƒ™ÒRä›Ùx|ìPk®'å±®†ªo±•I¹·¥“×–­çËpãgY‹×ÁGx¹vžï`v°²J¿70¥Å„ -³™]¼¶B¾¥”×2²ÝüýOø>OœAOãÛ$òÜ“ mMX«æ$xåÖœúÊZ¾ƒ™Áû!+ô‚mTv[`Û(žˆ³’×9Ÿo©ÏFJ£Ÿé§L¬õ¼¯ÁëX¸³fm¸ÏB>´nþ–m¯ó\©ÚÁŒo8µƒY6ñ:wó-mÙh$(¤ÚA&&^'wˆ¾$f#=0ð¼VYZ’ÝÞÝäq}ά^käúºŠ ¾/jXacóóÚšùf^geÒ‘Ô Ü†â¨P¯Íâ¯Ydz7¾7°0qÔçzÕ•tï?¦ÅþÏXçI¿¿¶Z¾Å—fžÚ<÷x&²z®»µê½Sýç Q¡Ã­¶òe«êL˜:=lSQ^ç”™où^çž¿VåuèD»õ½0mt¤å¾UKàgu6Iœ 3×xÍž:ácâ5ò ¼ÎU^ó}¸N­Qo"D«´¸¤Ú–5 †UÐép‹þ2w„Û ¸‡¿F¾×¹Âk·k:ú˜¯ ÆCTý²rjyåNtæW¯-êéMñTçxm~^Óai)¬ £¹™0ëȲÎXÂLiÜþçYBjª7nÜüø÷÷g›jjnÛÖ:00`ßÐàrýÀˆNi±D<þ:¼-µ\ÙLêÞï!°v›ç\‚×YÇk¾¼‘uøuG󦦎 «ÇÚšn½Ù?ër>œ¡" ³¿ HéÜèõ eã‹óì ŠÈÆµëjúÄÄHb̼¯Í‘‹µ›³'~ÖKZð„dèrFBoàu–úkÙ?»0¶e£½ë…¦?üäÄìëÛ<›«&{ÆÏž>qbøüO~4óKï‡WÞ |»>°Ê6Ses><¯¨¨è™¯7œ?÷VÙ”Fð:i¼ÿ{òLZ»¶N®ð}ód÷þƒ/¾È*|jvíâ+|:÷îÝ3>>îñy³è‚ÁbNM4úæ‰Æ§ÖÜ:7:{¤sæÙ¥§+ šJlÊ%%%ó”TTT86ÕÌlX4ûÒšÀ׊=Ël­ mõëí¤ò;‰÷HE`¼¯3Àk‚éÕ«W“ƒ–+|ž Vø\»vëw7nߘ½þ¿®…*|jÊÊÊÖ«ž¨Þ¼yËää¤êå^ƒ×1éðëodß¾49ÓöÌ[_*j,Ê'°&Âår@¾qÅ’ò®‡‹Í7Ûj;ºw´A ¹¦øËO¸•¼NúL†à5x †Uøì|¶F®ðù5­ð¹y3Xésã·³´Â§æ³Ÿnoc>®Œ[lð:;yQ;ÝÒòW¤Œý.˜tŒn¨.šgÛ¼ù?žþÑ™‹&¦Þ¹L.bš—WL´5Þ?IÊá›ÎáÊÊò®}{ß}÷]¶Ÿ¨¼f+ù¯NÐtƒ×àuF ŽÑ Ÿ±%Á ŸµO׃#]x¾ ŸKð:+ýµ›‚ÒMΪ—Wð›~}iò¢ëÿØ[RRD¬õå+A“kgÛÖçëÝ· Õ?œ!füñÇ+ÛÛ·±'<¥wf’…üü|Z¹BW²×Äí6x ^g€×“?Vøœ Uø–*|ŽŒ;5óKïõ+S\…Oy\mØh?nŒí!SíüÁëlއ¸i±Y´¤œ<Ì}ôA`êéÇ]ó”œ>{Š,ó›¶oÛáè#›‘ÒHïJy`{Û·¯)‹É+%¾©D6x ^g€×r…ÏWY…Ï™Ê{X…Ïg>ûg=Ï×Ê>_e>ö ¥*G®¡ˆŽRGsð:›y-— ·v]Màý™@ à¾â!Ö¡rI9ùÆkRÆÈµÓs¨›8îÙÙYïϧ;_ë°Ùl;;^ó…P›‡¸Àký°Ify.Ž9;~Hã!¡ ûزˆ ŸSg~$Vø|»^YáãñE}ú|j¤/bymÍ #ÁŽd©hBÈ;<èœým ðáÿºö³Ÿ®]¾â‹’5ï]ºL<8)c]¯u¼ÑÚ<;9N°NÝÒÒBÓäÈ]çÜRU)Uøüô„Tá3â”+|öp­núëXÖäu‚…5AmåKEyvÒ[üÜô6OØMnüMMö€×{ãGÎÙÝÍ3ߪïªz yUå¶­­ííÛ»;úv´^?Þãõ]žÝ-§zºËʾ°bU51ï¾û®–¿ÎŠxÆkC<$UUI>}¸4yÑù½.¹Âg˜ÀzúÊÝ€UøüavV®ðùáÒe•Ûw„+|ÈEB§7V^?ÊË##>Vއ¼-¥¹ø±£:n¬vmãëk®o(ûèù¥Ùž=÷wŒ9L\öôGouÞìþæÌ†E¶†Åä}"ÏÞ(UŸiÏg’â‡Ò^'×´Â'ðÿ^g>§Îœæ+|ˆ ÚÞÖªðq ,|¸tÛ+ÛU+|”C3­¼U8?WÝ´¾¡K_<$2ÃöíO×Ö—-É›y¢ °¶döµgÿåÊÔíÙßA,ÂÍžŽkO•L/³u,ȳ}2Oê߸¾ö—1:ˆ6·YƒrŸ¼Î¯¹ ßÄ…1¡Â‡úkZásãæ¬çÊ4ùyóÄ ­¢I*|Tã×––޾›©â'Ó“ Aã&N¹¥¥¥½­µþ³…·繫l×öµ~ôëkR£Ò_ºIy›è]Vl/Ê›÷‰¼²²²†vû†zRu¼m(¢u¡êÇ…ÒÉkáÛïX[ü‹¼Ž­ðùTá33saÜQWµbI9YséÒ…u×kŽ–æ›oÿTµÂ‡V©>jAœsgÐ_[ê™Tè'’DcÏ|`œ»p¾ãÕ¦öÒÒÒ–ÒâîWÛÉŸÎÁþï÷îüÎöæMM¥Ÿ+™W`[±ªºë@±äiÏs5óƒŽ%Ý_[9Hb¡ùÑ<Í}GúŸk Wø\Ûjïª.¥>Ûw¨Vø”­|bňÓÅyp¿~]¼à¯)Ç5âö8àu|ñëä‚&îl¤6õów‰9èÚ·‡¤îCì-)'©¢²œàÛf»‡˜ƒ«–/]VYW³ŽÀºvmÝèñ“‰ÇëÁkS=Àk£’+|êh…O`S%«ðqù’Ëþ¿OÞþ±kö@ë̆²‰ ›}I°Âç­Ÿœ¿té= k;ÌYëTøh=±æ¯ÝÜ+刟.„8ô™åòHó|B͹@¦¯L¹¯xÆÇljػwoÛ·_!>š<ü‘'9—ËEV÷@.-k²™Vz{{ÍÁk¿Î³”° -oÒ¨Èüó–)–¯ÕuñÂDýºšúÒâ·B>7^}ö?÷öÙà@"Á Ÿ{:ä|Bªð!&h|üïµÜþu› §Î"^³k#+ìL"ÅO˜Ö:‘“ëñIm®ß}÷ÝÉÉÉ·'þò:ñöÅKÿó2½ˆ2NjSúk¿‚¹~ÕmT‹¢Ê'x›¿¦>öE¬Â'ðáŒ\áãå+|lŸ”*|ìÏÔ?³~cÔ ­ß›‘ úM<øÂ /„Æ¡ý©bâÁ6ñà©3?êìÜEž÷ÅQ@}¹²&¾DLX—;ÓúI¯u ¤4æŸ×†F>qðÀ¡-/½¸¼:<0ò±#ÜL˜b¯³aü럑#æ+|tnè“+|»v¶Ó ›-\á³m[ûÕŸ»#‰ÿ…”¥ñëÈqhƒ¾ÿþûÒsÉ iDá¿sщé8´$÷ä‰'C¦ÆŸ Iõc a4ÒÈT°6¯ée¨Z gffXŒ¹F.[øV^àuðzúÊ«ð9pp?«ð© VøØä Ÿê¥Ë* tB>ÿgˆÒ>­¨HL€ŽÏ e–×ò8´{´&œý?ñ ?mhîÜMRx­9 ·ÞlY6ò™)MÍÏ„¹»)\ oÞ¼IKäÍg¹ù²¢@‚×Ù3­ðñþY¦åNŠÚ'O¯®r¬­éöIiÚ_óãÐ~üÑìo¿{+<í–翱öéšþ£} >Ž˜“×=ÉVoooéešxˆ›ðšŒüêúÕç_iÔù­ã¡y/ S¼Îªùv™A •—.½7õÎôÄÄ„TÛ#¿Ê‰¼'WøøÔžÅÜÆÍrF&1é¼Ví®’»”ŸŠo?éTÆyÍ* Y¼%Œì Œ|é£ÿbçgÂF¯³n¾]wOëüô» >½Æô©ÌòzôÍ“Q'¼V¿˜Ÿx°¡þ®†GY­Ÿ­×DNbzníéÌÛLÕ7ªÈÂÂB©@~ö~i`äçÄY¿ÞþÓŸþ¼Î¯-5ܽ’3qŒ¾ùÃÿ=­2홟&߸2<íZÕqhå~Fw ÅHµl%g¨('y- ŒÜT|—r&̽ó#/þâ¢XgÂô¦k`ä絋É,¯_~ùå7goüú:7ñà–Ó?:ó³ŸÇ¡ ŽC{kl”‡öÒÿœNîåë­¼ÎI^·´´#Xs#¿ù?Й0Oº†¹‘ÝàuZyÝc19ŽÌòºªªêÖ?ÝÇ¡ýÙPpZ—Ú8´¤ÖTòăÂ8´Ÿ[õò ãÓ4ÕíjÀë,â5ù7~tiò")óÃò’74SOp&L•é×çuúG¦Íe^çYUÊNíiãµ0ñà}Ÿ'$8æÆ¡õÒqhw¼Ò.\ÆÇ¡å{ù'¯s‘×îŋř0¹‘ƒýéL˜ÿ"Ⱦ~R I:02-xÔFxCAèHðŒ!<¥×µëêïÿêúõëî+­qh{'¤ãÐ*'Ì×'‹¿eÅăPfyMZWùêϯ( ¤ßË Œ<;û{®@îx­.œ5ÔIgÌM^KcYrb!-d§×»^ M<(C+M<(C;}Yzü¼<}iïíìmÙ2;yž\Eo¿ývKKËg>;_œxPw\Ca:+v¢…é¯Àk+óš51"VÀ9äš Œ¼"40ò%/70òìäøG¡‘K>wßIádÅ)ꤗà5.˜”_0)‡–Ÿx‡¶…‡öwÿ}§÷»Ò8´åååtâAÞƒëÎÿ©:/O|·jð:Çü5½mGÈhܲ2¢@~ôÈ‘ HæxM7xmtËÎÇ„Ê)‡Všxð×ë•Ç¡}CKlxð÷û[éătÚúg7Љ™'Š©z‡ • íC¬ÌkÖûŒÜóž Ô—GŒÜãú;:¦40òµõáÙÐÔ ?¦‘‘Q߈ & üõÅ üă¿ùóûn¾ÚxëÊ”bÚðăò8´ãñ݇Ì<ñ ”Y­Z å™0o]}çößÓùûÞÎ÷YüD¾j4îS] Ákð:ÉþZkÚkÿËç¹2}ñXxÚGËéă ?û‡‹|¡1ù8´(~YÄk®@Þ;ôHäÀÈÿè Œ\™HByùiÏïMl&LðŒ©y=vaœŽCûÜ3ʉ;wµ¿øœ8íö¶vý÷Óã¯s’×òL˜»3aö9²‘øü}¤@V=a´@¦§|‚׸`RÎkyÚ‘={w³‰Ë¾ÈÆ¡}PcÚ“¼*Àë\å5­À˜úù»ƒƒÃÊ™0¯Ð™HÓ  ^ƒ×Éä5‡ÖsÕÏÆ¡Ý¾c‡öÐßt:ú¯*Ìȸ†(~æçµ0¡—Äš«Ól&L¾@²™0·µ·ÑIgñÆÕÐ(Õ¼¯“Éka Yò'9ËSïLOrš~—žü÷ôŸ:…Ég¯c/Š*øVÈ©w‚%òêUO¬ N]?ðLšüµò²aµ7¡r¯2n*»$bò×Éb:xc¼Ö hÖ;8´ÔÅ.úg£²;^sÌõ‡^ýAœ‘¾©àuîÆCüúÈæØêVµçñ)Adƒ×¸`2௳(‹Àk3ðZ°¨(à5.••ÔÕZsÚTL<%Ñ_[°4ööö‚׸`¢ûkkŽ@›ô‰¡ýµ• ¤~71ð¼†TŽ(~÷ײ:¼¯!?dcÀ¼¯£ØL«Ùj?3ðšžkޏ)`Zø¼¯!?dcv ð¼Ö|ø²¬¹Fñ¯ÍYP³ž×PT©òŠ#ßñe£à„IûE ægÖðú¤¡¹¹9~ù–”|ÓÏFöYH®âtæ§yy %òÈ!ßÒVoe*?Ák/$ ÞhøeäXró¼† (™Ï(`túó¼† <òÇÃP;ù ^çJ”Ôå “ÄâÔw;]¬±Ñ¶g"[R¿uÓÆs£Yikkùöê«xyŠ5êʼnǡm¤ ¨hÏö¯È©±N£Vôv¢Ç%Úƒº¤³ýˆÛ³ö*ËF ko³ Q³Ë[ñ2Q”€éÌØ6c§¦ybP´ö%ó.á³ìı8ŽK1ªHߦkŽ5Qs¾Iüsãø³è ‹c9ÖÀÙéćÁÙÀG®qH2ŒÕ²ï"ÖWEq)›Qƒøz°žÓÆ(²m/Ÿ…šûk ¬çZ]ĘÑC‰¾qse^»èhÈÕÁÂÕ„‡жä>u‡ê®!¹¤Wª15~:“µú(i‘~@” ¼Âl•ÓXêr.q:ºœ‹ çB (ð¥ÃXàp-âz§{1ßu»°õn×R§c±Ã¹ Èp,ÕÎP¹î:ŒE08\ƨçgñ]—c·ÇzÇ2 zÆ"õÌpb3(Ù Çq-’—Ðf¾ØSWº¸£K. n¨_Ä+åzX ßU]äåB^»*4=ZÔ<Ìá¡à.÷Å)9zÜÖªÀLã9¨ùà%°Ž`³Ç,FɼÔíšëvÏr¹§»=ÓÝ®i.$&làšèâqÏr;sÜî9.¤<§Kç8]³]®ÙpËíÊs9ç`Á“G5¹@.WŽÛ9ÛãÂz‡3ï¹D¯\ì®Wzrî·w6œ±ìœEƒÌVñ’êù–ÇãÌäu¹ÜÓx]X ù'Xã I¢e\{¼Ë—ÏT®ä6PO œÑ&ßD{×4âá §+ßá\.¬¹¿œ‹kaL4Œ¡†1Ø0Æ@¢A­¶q8Ò¨WuŸn¹†1'šr%©Ë™†1+šr´òÌ4ƒÆ—䘊¤×ÄÞʦóDÃ1Ú0†Ù­k FjQƒ%‰Zà »–¶\Šê› e|¦7Þå\ÀVРÜK§‹¼&W‰òžÎrroVy¼†1$Üb†Cf$d†Ã -æ•+ÝþÚÿÚ²µá•W?zyË-¦-¯ÝzuÛ­-Û‰^»½uÇ'[vÞÙ²óÖÖ·¶í¸¹uçÍ×vÝܹ÷öûîÈóÇ;ö}¼óÀíU·Þ8€…U7w¼EtsGõŸ¹°÷ÈÇ@ŽÝÝw\ГŸ8y·êÔ§pF:õIõ¹;GÎ7Í_ôÛï[Ì–0Ì6±YBD[µmƒ˜6­ßUÏRõjL›ÁCæû5·ù.WZ(D§Øå.“QôRàF”Us‚þ1Œ~0D]ÝÕúÚºÚÚÚºöµuW߯ýÓ† Ç·oÿß¾¤'½þç=þ—|ÁÍä;à¦äG^ v©LéöJJ×-Éݶtê¾¥SW:÷|¥kßm]ûnéÞ[÷þpÞÒcà¶ž©Ûz ÜÚsÈ6 ¾C·÷±£ïˆí}Fmë—±½ßè×û~=uÌN ´ñ»‡LÜ34k/Ððì#¦ž½oä´L™9ÕcrfæîÏœ½'+K÷9ÿ¾Ô5ÂTÅœãVW/*®ÖÉ6Wñÿ5ܸ¾¾žÛÔ'æJÔ-`a½¬¯«©§q¬–õò××~°iÓv`¾Ç;×é\çØ£•*C‡eg‰Ë]êp­4³>° xÒ›7o6Úq@ãÚºÞ¯ýðù '¶lÿƒ/ùWîàkžÀŽ`§=ÁN»ýv&ÿdP°ë®”î{“Ý”ÒãÀ#}ª€~Òé‘~û»ö¯ê–z¨ûàªiU½†½ÙsèþÞë˜údíï;ú@¿Ìê¾cªŒ;:hâ‰AYÇ€†L9”–}|ØÔãC¦!Ì9”{2#ïLFÞ‰ô¹GÇÍßùèà¼D³M•/oÚ\‰´é¥ÊÊ’øØ¸yó&øŸh°¹’™ºióÆ•/UÚ¹%ðНe«>¾V¦ëe—«›6mæƒåv8 QÎŒRÖ$N¤]N î¸ÌÓ½ÊáÉÓ1ƒÃlßQSÛð~íŸ_xéäk;ßów~1Ðy7P°óö”®ÛP¶º½Â‚•Ü}{r÷ªÎ½ué‹Ô¹ß‘.ŽuI=ÒuÀ‘öz ¨×ˆã=Gê9ò@ïô7û¤ê—YÕo̾ÔñUƒ²Ž¤fLx:mò¹A“ΚrfðÔs@iSÏŒÈykxî…9Få]LŸs1=ÿPƼs§Æ?¾¯Ç°‚¿KÌ"¦ ú Of8 ñ*T9BReÆ,lêm"²ÁKnO}AzLêXùòfnf;>a.3“f^o>`¦'‰£ø Èœº=ù žð¬Z’jØ“³Ç_Ûõ^r—“»îLéörçî¿îÚë©G{wí]üh¿âž*z øU×~{ºô;òHßÃ]ªÇp¸[Úñ®ƒwr´çðc=†î9üH¯QÇzgTƒ0vGÿ1o ÉÚ9tòkD»@¤Ò²­!ÓÏ žvz茳#s/TÃrÎÏÀÎÈ?Ÿ1÷⨂ @㞸8vÁéI ÷÷10«©¿Q¹ùæT=š®SªŒÊ5·y`ÅcֻΘé}ãavQÖ0fJÎ(bÁÜ…RŒT0D‚Üí*ãT0 .¨ëF!g!O[)s5°o4Ì:÷¨Lê¶»S}]úìÿ¢{êó€Vï´Õ=ýæÑÛº¥îé1dgïáÏõùË~#7€shõK¯î?zûÀÌ ic™6î¹´ñ»†LÜ5rÊo?ÿ'@U PÝ{`Ž›U‘9ó7£f¼š1ûhzÎñѹ»ÇÌÙ6~Þæqó¶fÌ=8zÞ)УçÌZ¸cÒ¢·øÂØ%@ç&.9=u© fõVà-\­­­Á l´æ²nä–ö?eõ™œµÕ}GÍS˜±ôè˜)M¥|úDºQa¦s@A¢0çTתM ~J4•œù|sA7r|ƯP²% Ѱ‰Èº0ó8×ø}šnÄí¦|$!X ÄŽã³6ÙUõ^¯vI­~$õX×´“ÝÒ÷¾0”QÑwÔ«Foœ¾ø‡™:vKêØW†Žê/7Á\ ›¼ $,cú/GLÝôùšcgMœ] ˜eÎÞ5fÎîÏ¿7³ç•gÏ_÷HUÁ¬/ÃæÌE?À¦,Þ{÷9sÙ³3W¼p§Åœº|çô•ûg®Ù=}Íþì¢S“‹Îe™Sr°æcÿ¶þºÒµµïëA´j´Ç àdŽ“ºªCÒº=ã6 Ž1€Yn Èaæñæ»=+)XŒøY“ß16…ÙY£•ëX7rLÝ¿QÄÔÏo<²§úr÷›»§ê>\ÁãàB, »¾æ ¡ãŸþòŸfÚ„­C'mOŸò €jøÔ]@PÈœõË‘3vf“æ–MÎ/¨ÆÌÝ;f.b6íñ  Ï@àîÏZ´÷/!sæÒßN^²{êò}Ÿ¶˜Øô•Ûg®~ãNÈiË-~}ÆÚ}ÙÅ'§–Ÿ^z6¯¬zÀ˜ù€Ù•Úëš=«Ž‚k$Õµ.gñ®T²/™òqb0ƒ-»»D³-†Ñ 0s¸V8]ˆ „I1B¨4*ƒå,Á®Uä7"fÊ ·–))¬©­¿® 0ÛuðRïá[ ºê5üDÇú¤í?úuÀ D*uì¶´‰oŒ˜ük€gØäÍéS_‹åQ3vœŽ˜MÈû¸@ LSæ? Rõ9JÕÞ±óvÿ¥ÅÌY²nÖâõŸ·˜“—ìÌr—?7uÅö©Ë_f¯yeÆê]9E{òŠ+ó‹7r¹eû§—˜^q~fÅ™‚õ‡g-ݨc&Ü}ÁÓšf¶ºQa¦t#cæöä¹½«è=ŽöÝÛ½ÎåªàtHã ÈíýFG;äŒ0ÛsøJŸQ[{Ž:Ø3ýd¯ŒS}2Ž ³ósÀ,ë§àµÉÚh¹Ê˜þ+l\ÎÓ`Ÿ†ÏØ•1{?²òšUðÜ„‚>}`N~ì¹)ÿÀËZ¸ÒÂÝ÷Âæœee¹ËŸü4df/Û;eÙî/#æýˆ™¿fÃì5›I°¶Ï*Úq3dÎ+ß<¿¼ò´¯ØŸûÔéÜg.Îyú|ÁÓOxâ¦eÏ¢“ÝŠ:ˆY›>ˆÒ½1&Mt©û@øî9.ÏJ—«Èã.#hJÅ÷ ÂõQ3Ö²¹aÌ\ѹ+Pô­Ø0ÊD,{˜m:´ç𥙯õÎ8Ø;ód¯ÌÓýÇŸNË:øÉwæ°)›†fWÉ>j0}úVp¤OÿiŽ™óJúìêÌüÃãçm'Ð?püüW³žØ–½x38Y‹N^\õYÈüÊø4`™Ï#eL›z(mjõÀ)'O;;xê±3Ž@,œ>» (#ÿpzÞ™Qù§ÆÌ?’9¿jtÁ¾ Ct5~áщKOXzxÜ’SYËNN^^5ež©+ßœ¶úðÔÕ'fUƒÀÍ+Ú0§l÷ÌÒC3ʎͪ85«âÄì'OÎ}æМgNTs~ñÖœ_\˜ûìùÇq8mò`ÏÞ¿z}ã¦Íè7Ö^µ‹‰Q7²6Ó1Û¼ysŒCÑzDõm=u냀¯ïèçõÍu8—ƒœa0æ&ÀÐïwK}!Z‰Lûƒ=‹Ñ°-?Öš=SrVu¢üÀAO¤N<=hÊ…ÔÉçfŸK›tvÐÔ³ÃsÞ‘óÖˆœ ˜¶È?—žw.cÞ…‘óÎ*87ºàìØ'ÎŽ[pnì¢óY|vü² –Ÿ¿ì\ÖÊóà²O^}nêÚ S×ÂùÌŒ¢ƒŸ„A n›UvÌÕ¬'/å>ý6jÂgÎæýü@”÷«ßåýò|Á¯/.}þÄ Iö¬þZ%ûú­bÆ‘€·‰YŒœq<“¦²…Pa¶IóZ*˜òÅ$gàëÉТHæ®âì™Ñ†Qc{v¥îO€Ù›'kFL~cÈ”“i˜½½@h5ûw€Óð\¤QyG`€SÆ<<]øæ™"TDç&,½PM@´.`Ùk/L.º]tnzéEðg•Ó•WñFÞ“ÇÀ\T¨þVîÏÎ`su1ÿÙ sóÖc¿ýŸ¿ðû/ünù‹'‡d“œÕ!fÀ;=·®róñ9x–Ptá¦M”ô·ÏÓÓ ºœÉ§Ø·ùåJUŽÊƒ¸ç€nd3†.=KKÔ|Ãá)5Üœ»9ë“iëGXÎP7V>ý~zö¶áÓ ›vlÈ´c#sNÈ=9"çDFÞ) ôü™sOžwrtÁññ Î[xjÂâ3Ãt ÓÉ)…g ‘B*:5£ôìŒÒ3@³ÊÏÌ,?™ÿÔñ‚gå?}4ï™Sù?;3÷çg‘ž=[ðìÙùÏ[¸áí'^¸´è… ‹7œ[ñâÑaÙ±=îD«ŠPØ I›ŽÏÁcÆ ¾Fäõ# óôzÚY‰ÿ¶ÚS^FÆÔþy†s9ÂA"‰øú®¶lì7"`®b‡§DRèFÓÊ£­ªgÇ4ʦKQ¦÷£ _Ø´ïÈ™?dNß8&wOfî¾ôÜ}còß“_•™·o\Á~¦¬ùU“¼9iAUöâƒSWM&Ê^Z=eÉ›Ù˪¦®<8}5Ò̵HÓ×Vç”É)= 4§üðÜõGæ=uhþSÕóŸÚÿÄϪÀ¹xìçGöØãÏYðëcKž?µä¹“Kž?±|Ãée/ž*|étáÆãEª3f¢œ]©ÿ€×BT§—ã×e[Ömð&Q{|Õ¡Õ«ÜŠõ\Œèk4µ)òúô©K!ÀÞ†ÑAäØWT޾áF9s8×z¼«ÀBˆ cÆÂKªÈFySÆ/UnÙP¹ó±Å?ë>`~×K»ô_úHê2 Ÿ ZÞ5mE—Kz Y!høŠ^ÃVôQØcø2 î#–õµ¢×È½Ò {ŽZÞ=}9œûfö½¢W&Ó²¾ã ûO,L´iâ2 YËÓ&¦NZ1`òŠS– œº"u2žeÃyœ‡L/žS˜1kñ¸™ó.Õ7¾´ùUµùb3Ѻ*£ËÖ[MÔ„›ä;Kù.Tõ…fj|K÷nÚdµyy³zã ‡´sêýúúˆ™›õ¹ûìõ»]¥Êý'™#WèöÎV˜qئÓè°j8ˆŒnxvêÔ ÉÕM¢è'D. N²ðˆáîb¸±ÈÅçN†»“h‰”d8¼8C-±›øp΄îrëÁªÅ =Í¡óÇ~õnsÄ~ÿ<ÀÌp­fÌÜžrÄþCr–°—/c5Vzýàƒô Ó;OÆ Æ½as\'GSS“,6ßhüðFãGD7o|Äe®ç ëªe\~(ë?Te*ª^Ö47Š}(Û#55ÿY¿T„-o4«I666ê+‘õÖŠÄøQG36njlŠçˆV§é:´Æúëv,llj¼!<8ô-f^o>bæ^€9@%†Ê}0`RIœfè7ª]`›ÜèØÑü¯§‡xÐÿ£‡.g*¯ïB¿±X„˜)RÆ9òA|sX7fl– {9û÷ñ¯Â \ ”ÁIä?–±äŒKHºŽ”‘r¦û WA+ÿ›³?îÑØ„$1s*Vf½½¾yN÷*²\e,QŸ±ë¡$Œ`Ÿ²ØåYç7þ³ÿbÌ >+ ÈC,µ0c¤¥ ãk¨uaSþVNóõÿ­ÿµºÑ¡òýŒY?Ì]a²^æ BÌ\¾rå1â=ocæÄ|ßøoÌþ‹1Ã1¾ó,²:Âûð®w¸+˜X7zýE¤£0ë¸ßøùº©Ñ¦üßű_ßë«@ #ˆÈy¼’ŒÀ+ÉÓ§òÿ}åìÿÌ(wUJ‚Tê ¬szÊ V‘$q$wÎÃS9ÿZ·îCëF-²n­ Çž*°U½Z﮸ÏÍø ƒ¨D¸íg+í[¿«nµ>B¢¼„­¯ïñ­FûEd¼ ·o+J‡4q.ÿ“†§Ôá]͘©oxÚƒY<÷!Ã¬æææø¥2 ­KOÌ€ñí[‡ßvÂÝ|?FG{Ì<œq+Ñ"¿Ñ‰aùüëñ+G©1Q }k!8ˆú¶ ¾Œäœ}Ç7`¬PvT,ôf‰Z>40­/¹£ÃJÌjT|Æö Lè?%]`ÏÊ9âõ­C•è+'Ì0>ãw1Jγö¼ÔÖ[9¶éÖΪ GÔ)mÒæãèƒ(ÖÇÏÜvúr:´Gã0C9c݈hчräë+¯_ªGBó?Üׇy7Ñ¡¤áúõë­Š=»Ã‘¯ïÝÿúÞ7@ßÜÿÊß~…åø3“Ã0â5'ϤM­«³/¾j].cj»¢cj{>ˆÓ+ÐÝHHyÉ〠6t_»½à询|c0‹Q_p œj¿Ù?xð`"Ìîuï›ûß"6ؽûß|ù5€ô×{ßÂ9³ß½õûD˜µ¢Ätßj:Ä3‰™j¢Al¤M9k3·w¾?#ÌÐiDO”!hBpî½%_CÕZ§·Èá^Hš÷pr¦+“Dë‰ÇÍ&LÃöc9ãªÄ°iêFóí‹¿s8\÷ïóöÛ¿§[s;1ÓØ4úLlÕFûGƒA:ÎÆçAÕf ˆ¦>|å›TT…g|I# kݾ•¾@þC`¦ï,}mªž9¿ìxN55ý 1#9»ÿÕ×›¦'¥¶ü ‚ÕÂùÞ½¯uÌbfbëˆó´ÑÁ³Š‘x¥ÞuÌøh}tÔ”Äçýþy>ÿ·§DBSŽ×äöWð‡ê5(ÇWì¬QïÏÔßX<„=‹¯<|øp¹%p| tݨþ8à‡`ÆœRƒ¨»ÌM3=j£Å^xfÈd­È5$d匰oùMb7ÓÁÇ@Ö9NÀI€c0³D”IÖûªíÇ,¡"1s{× nG©p8ÀQ9c Eæ˜t#`¦ä¬¾Vü>ÈÄ,^çè Úƒ™ÔV ¦Iá7èŒ$p˜;Õ‡ñscò2íÇ ôa f:r(Å? fŽÞ”»Z N¢òA3ÖŒyeDEÊ)9cÌ⧉îC+±K„Y"ÝÈú1ƒÊß½õ¶Ûp|óÕ=]ΔnÔ­šö ëàn‚)’Êíºò2,Øí4…›Ð% ÅcÆß°²;£0{¨˜Z—3Ì7²÷!ÝŽbƒqBDsFÐoô®bDýÏÄLLßàº9i'fä@¢ß"Å›Âì÷oÿaŠšbF_9]›!`+²[JJ Òáj/fàÑ(FUþXöL÷õ¥P•Rè„+)/‹%f½`D­¶6l^(0©ïÈT›„»;3T!„ 1Ót¦°g¶ÀÛy°:rÌe;¿ÑúÞM‚’ÊÁ³­£e‹Y;¶rÆß¤bÊ‘>qf°–¤ÚR–62o¥^ÿšh¿ñásW ˜Ž™âE‡0ûë½o0®Ç„3#J7¶3&…\+˜qZ‡$òºú%”C‡ªô À+g>ÿ<Ê7 {&0“ˆ™Š´ÉÝï°¯¿›T‚NÅÑñ‡bh|„3Iz­D @r.Y‹Êûß‚nT¹+úfTø20“67»šOL8¬l’.gñ²u47þ(˜’æ±n”’3PŒn¿ðA\äî;\+.>‹±U¶IaÛìI”ߨByÌôTˆN:f´ó›¸ÜþT!ý­\{ßy677'ú²C]¶®3Ûó‰óBP¢¯KbüþØÏâÿN*šÚ~qÓºnäÌV‡¾2²“³ÙnßJpã=u–=c‰ÃÄÔ¾rЖœoLœ×¿n{nl¼¦Î‘‹%·|Â^Âà´ÚFCÜ·ÆŒþ\ µô^ÑgkQí•‚¥^·íû¯Ã¬róV°gþ êF·ßÊx°œ®,UUìMº½ø·LÊ©>H šwXÃøŒSoerÑ> w2÷Fƒ*75_‹o¯ÊÜÊ7ìÆ†ë×?àúæ¦kV}Ó˜è¥#b}Ð>jü&knñshB‰’ãp}ó5ý)L´ä¸ù‹ç^·û"çZ;1kÞ%å9IΔ۾¾ÛS¤¥³Êe^•ÀŒ~é³®þJ}Ýe— ´|ýE7nÔ57_¯·­¼AÔÔ|õ†,Cw¼…›£A ØÎGÛ>"þq7êð¡Mµ¶ƒ7 ,¯K¥“Eü0óò]~ðõ‹:øþÌ(W¯Aù…']Ñ;Oñ·Lh[†Óix\m×mséö.7’S»ånÇh¶-y(—Û¦Æå~È1ãIM8~LX¯ v°“þ4ÚGÿû¶D'g‹YMÌ7©({Š7Xñàeà§©^–3¬…2¡Xìò“ÅßÅ`|jù,ºÝj‹nªr$|ΡЭ––CT°ïÒ‚ÃFBŸÄ–£Æ¹É#‡$©»!»Êp\ƒøzž^lã–Û3&ÌÒú`cE*]žx<3΃`Ê>`I”áôU€ßÁU,s(€þ_sWÝÁžÁ†‚ù…ÃÍáÈ53Ò`Fê[¥Ú¶ EÂu¦yU^6$8K²Zоa3ñàa"­·Ö¾=SÕÇå`°˜s£©!^=>į“RæC  ¦ –Ï„9bw`½3J+r¦¸D¾‹é‰D`Z°­Ìð5Ó¼bš—Ó»fä$( iõz³È{Hú¥}ùDO Gþ1ß±ëx9v>Qçwcg¢Q$ò^Ä0¾¥Mßp¤(O2´×~ø—¬¶ñ™?i­×Ǿ} x‹$gÞ2/­2w°Üé/em ˜“ fn´î}[ ,vEþhšïh/cÚDqð²Íh‘wÅ ¿áó!ù}\EZ> x Z3³»Ô½ßo *ÌâH-Ô@Gli€5ÓÊÿ¤Å£ShsгüòP$Ò$îš50x(ÒÌ õã°2 Tn–3‰íîè1ÅM1&ö%ÔqþôÄ@À“ô^áóРDZtcC´ßØæO#Øû)6ñYp.ûúÊÛtÐoÊd‹r‘ !˜¾@@ÈxÆ!Æ øi„<}ö ôy(t|9æW¸å.¬Péψy5¾é£µ™&È‚íE}°1¯¡;pÆÅ³‡&™XK#sÖóv¸¦úÂ8ðˆ0nÿ`(ú´¸©ËŸé¹š®FM …À„Èå1ÕAnðVø¦p[àqx«îB%LÒ‰výkrÇ>D?èGÆÌ>>óœI÷óBK–†ø"jJ}µQº1|;³» %è˜ NMà¤ü†Ü°Wh=·`ͦùKg$„ÜäÊPøÏ°æHøj˜.Ù#Ey ߯ݾ Ä€±\’jjdÃ-“p‚‚;fwaX3Ô,å;Ê’A¥6&¸TИ·x·!ö^±;q+ðÜPÖ†ÉKäíEƒ£FU˜9œÖOît(ß=‹~;‰Û\ ˆ©K¥¨‘n´äL4’˜õÔìY´ndq!Ìpå-wü^d–¨BŸË5ƒsü'â5ìî;¨š)Ì”j2‰S~º Äüå»àÔÑÞüÅM¾-åàC(ÜßAÉæ9³«Õ˜¨œio‰9„{’¹Û:fhóÐH£¢}ìœ/){VW™6œž1î‡Åï¹µã77Õ/¿ ÌØž±3Ñ3‡d†×WAú… œF TŒþÐÊoô`|ö1iæl-îôp£´‚. ·|Û0 „׋¨8 Ô3•·|Ṩ6Y˜]B×#!fÂOÓ1ƒ2o|Ì åÞ 6>*F®%5¦ŽYŒœ¡>îeƒMßðmÆ,úWáê[ùñÔ˜´+þßÕâ›cÝÈrF‚$Ô!åA0X[G*±Ü©dÎW aaÖ 0ƒP_ð.rÔ 9{5f¨Î }(,&>G$ZîÈÔÃÝ–Ð=4? ‚‘kÌ_Òã–‘†˜”8nE$=:fÜõõoØFFjC¡?Ñ>ø\!‡˜yÕh*êø£œEav“æp]ÈæG®òž`{±ë •šœ]QÿRýF:ž¹ ÿ‘…†è!ÆTüi@• äû„=[Çî!ÆgZû wŒ!ÆÛR€—tc¿úºk.—X ^á ÖltyTb8ô ÔÂëk gòSÖ°gýh'î¢K†šœLrÀ±dD[ÁhÌ>¶îIÎêÙ¿G--¼f0®°'"lw­¸03Ÿ”$}LÂeKìzºÂŒý^X¬Õ%ï]!g.Þ¯òU [Ú¸éU Dwí»lܺ±ò ÃèLz 0ã|#þ˜D° ßÅpF„ÃÔÈIZ`# £³3XIH`&\ð5áÚœ…îÒ‚ë(C†‚G€6/Ú¡7§PXÑ¿hyð)é¥Bƒƒža3y(ð¬Ñ)EI>ˆôÅkeüPíÑKl0ÇoÒ´˜1!3hÝ×ø19f’vú†ÔÃü¬÷ /{ª4þ%Æ Äpñ‡ õŸ<ìõIPÙÏ02üþt9àâöHÌ6¸('çd=K´7Ä\Lšjn‰Ù‘,5s–=ùˆöyÃf½LRPÖCd.8OÑ caÊì’Ìhp Î9ÜËz†Eæ;jdþå}mLž?áÑP«C%™[Òóa•ͺ$RÕbÂu0åOZéñ‚*Cmæ_åö­ŸÀí[¡j¸€/¹ðŒõÐÏ5nO¡jÃg¸Eæ‚o¤¥„¡Ùß7NâZÏPÚŠýÁ¤”†áÌÐ2«m+9¢1ñR”¡M­å„®HÀ´»&ù2f YG• »í£_BEj?þî»q9ÜËJŽÑzà_Á¡Âúü¥Ù£Y ?ËÊ“Å<‹ós$g-s’RfyýËÁšÇè½ ° ß/ðÒÿPìõ?Ëð)‚Åd¥°=W2‘,¥X‹©”åŒý LzdLÍ×ì=²‹‚’è]ãó¯ô§3f+%€6ã‘ÛM˜Ža÷{¯­dLPõntYbyïZOç $dä”êïÀþLrSO93è®rÓÚ€šåÓRÞïÄe™ÅQÎZî8>`¦?°ŠØEŸ?+XoÉlS9«.ÔdîbÒg¥êå—’hþ—0´l¤TƃÉPºAò—Qà†Ù,|% {Á_L™Å˜QâàJ·0ñçHLv?>£C—£ùÓì²<ãÈ‘ðièOÔ·ÛÂk’H”UzZõàݸ9G¯."ïFÞUïb3‡á &ÏôV€X¯Û/@‚0eŽj¼þNA¡7á+cDeCàAü_/Úø6êbÝ寗”n¤ËuüÎÚ›TB˜åFàA˨âyý¨¦„O/ ±o,õwŒ‰Ê²}Ô8Ò.êãÄ–….Eå†3 EêâÚ4pŒ¬2ñ<~KÈŸ]Skb6sn°ly¸^tÀ4Ìñ „§_s‚I9௹ükÕî—ü6–©2»ì@àî)̘ÿ|—.+V˜Œ:ƒê"¡œÁ €”‘ç{Ö.û‚«‚Éy†ÑåûßAF™\Jæ¶páNK D3wÕ7TK%|ñ¾¶0ô EQŸ„âÞÐÃrX­/#ÚÃÈáÛª>æ[šÃÇ4¾èËÏŠ¢·a(ž³5¦6œ„ï<GRÐ=Ḃ¡;°|ÿatMJÉ÷$­"%xHÂb‰²^- 8 )dþ ©²øÏ™*vñ%´Bì kSx-[Ý8ƒ…Lò㆑°Á†¢Ÿ8÷ AA–NŸ,»µ³”†ÕÞžÜb¨Ø1Ý‚¢ ¥z9DK1>wqÄ<ËmÿĨgÙÕ'è«O@[WfC€E*û.ÉB‹퓎‰r7ø®u)»kü/‹VžbLƒ…Ñòïñ/-”¹+e×1˜ô8H[ 9¤@Ò <'Ï;—D5x™<3¹ÓLªÁx™2;)âlé ΂5Ô>¹SNrò¬””™| s’:åð°”é4ˆ"|JJ v¡§SM§œ$9?@”ëOÂG‹9Ð-ÕŒkø@<[3H“§IN·æÝ‹W„íås© ¬.óV‚‘ÜÉ•¨.cŒËîCØò_Ø,)…˜¦ ОÑS¾>·SðJKXì ¬†iž¤øc’V¹ƒPSè—j ì ¬€}|†ÿJ®'ZÅ#ˆî~Ñ \dk\åÞ䕨^’ ¡ŒC—yKýÜ—Z‚cæõòøü,9¶‡ÉÐ|x†‚ø–OõMZ­-AÌ–GVõX™´ÒíÃ`‹+¡@ÏÂq žW¡sƒ°@‘.d¬ôb|ín%.Ö ß¤mþ#l  Ö;O7¸ˆè(Zn‰H!ĥȉ(¤ ‚)º©Vü A‚"žðø0FñJM-jŒMP\BÙë/’ñ™´–šÁy­Ó·J< ¿Ÿ-á‘¡½?X¢?§A£Á4¸©'Bž²Öï/öùäÈ/à ó8¬¦ÔÜÔTy†Ð†jŠxnjþÜR4ðq°UJ>‚Pz™¿r(£omÊ•Ç'ã‹ÿ¤x5æ/…öî ô>¨¥Oî™îþ“¯O…¤Š¨gÐ<`8”PQîÙLO_™žTA­+­Ý'» óÓm€6“uª1ýåG«•Ô¦¥ €wI¥3w|I¸—ñ…ߊLùË—è(uìtÝxðÈšûW®` ¥'v3>ZZ#Ÿ%UìéÓÂ5ñ’^Ÿ²Xrd‹ÿô8 ´°q©'©Lç¿òS á«°s,Õ•²¾_´y‹—¢úœ4+¨ø®æd=›×¬©‘uŠSEò´èO èAÁõüí%‚J3ÑÏB7Pà)ò ÒŸÖy„A4 úŽQ`ë;C9{ ƒË³üröÎØ–(T„H|‹F×b·‘¯„ü‘R[ë¥ÆQXʽ;gSCÉŸŒ¡œ?q‚2ôäg@Â)²ŽïªÈrY åI}—ñ8˜wN^(ú&à¾Ü‹'•N”WŽìK~ÊM¸Òe©œ^ ÃrwÝæÙr_hÃ{.…ÏFÝyžr½ëÕf&­Gx$¯•!Q–Æ—²^ö­ðDËÃìæ©ê~¼Þ‹c} ï*žO0¹ºÀLxÆñÿI~–¡Ø­Gv1$ù[ª—”²NíkÔÌxBvƒ¥ñ3ã…Án‚.*Á»IëiI¼=×q^€úVpîŽáÖxÁü b½P܆7k*…7÷e~Å[µÛx@Ü= òSb'r¼"æ&³U·)r&øtܲѯÝË`ÐÚä?ïÿ†5\§§@Ïå ‹ãÝ!%L¬è €{_jÝÇe™ðw²T_•&:–¼ê¸Ôæ 0ÐDÙÒ™r”K6•ʪ¶‘Õ‘ù輞YÏ]äƒ`ÊS¨}À·èOJ0b9Ôx”B†G©w]¦1¯ÁƒøKxí¾$LÉ.ó_î-á³eã忽˭yKn*èmÔÖ­º«ôg´ðÅ"ªµáY–°AUíqKúÊô­Ê{3FšY%к *­‹3±¸/fÂÀÒZ¸2JµZúA –G¯6™°ÐÖS´'*C€y¬¼T‡ùoDû¦¥1:Dç,?Iáá·de½®¯Õcä¦^/ÿGìq=É#g¼ñE‚ ©\Z©õ’*xoÚb¯WœåØ–m’Enì¤ …º¦rõaÞtc#%úþSOÙÙ¨E’Ö±§£3°£ü7xO‰wÓš2‘vHô„çé:Aíb¾KSÑeÈ=gª|·eJ•·¢xÁQD¬f–*ý#­÷:´4^4Ú¼y!4ûä˜q=sŸAo4Bþ ÔH8Jtã¡[J%%€´¬¨Kh‡­×Ð-#fâ¢ø®‚%L9ºgÔqþ“ßA eÀ³9˜R0Bä›­³üCi{™Ëì)è-%†*ƒÂ¼±7LzJxVrN´ëÅv“Þ-û{eJçèšGÚE2öâֱϢ4~€æ¯¼/Ý%wª°¼ó¤r%º|œPÝ3”#ýˆ¦É‰ñ¨-ü4ŽkºÄŠ51¿%e·ƒü_o€½MJ~¸‰‹r`ñR&":Q;ÔM†Ô·é9+7alåNÑÍ ;JIÒ%ê=„Ç×¶|¬Åâ1UÀ¤b DE **¢ÝÚ(— ]üh›AÞÈ4N Iózï¤XÉ]¹ñþ`kÇšPÏH©ÀFÈ}†ÓQþÿ3"?„ÞËIEND®B`‚pygtk2tutorial/figures/checkbutton.png0100644000117200001670000000746310050344475017363 0ustar finlayfcf‰PNG  IHDR–¾}–ò pHYs  ÒÝ~üåIDATxÚíoS×Çc*-б‘ÐqÒµ 4$€HS~© l¢ XH²M-¢Ó6µ“@ ­Ò:b²m·B6­ƒ0ˆl‹ må±c&'ÿ Îνçùúú¾û~øùÅyçèèñì¼_¾Ÿ÷=çÜû®M]?¶ÍÓ.ÛB|-ÂëBÖ[‹m4§ i¯„¯„^ªs8涺Ú2¸èu¯¶¼¼|ë³ øÏÒ7ÿþœ¯þåÒ­/3Eÿ"{“¯ÜüÊð[·—qåÆŸÒìåLfæÏÜÿ²d¬p¿óµá3ÍÌüm_ÞžÕûÌCæw¤ï>ÌÜ{°~Ÿ/ïÍçî.ä`©ú¿VÐO]Ô}Äçë›mù|—ÐÚ3lz‰\6u/Řo‹2ß^ôú õ;cè;b/7°åöÆØöW ¯%ZžkhŽ¡7~¯è ­±]oEaɼƒy¸û~ô9¶<ÈýÐ[öÄšGÛzç™M}@òc†wÿ Ñ9šì*x÷™7´MòvHãGËf³™LÆM#¸Ü¬ƒ‹åÔõk*°H$âF‘â@pˆ[7Ò Oý¼Áiglûwþ„¾õíèNH´ãµùúp¬±e^@ÚýFÒwÛbRc{R˾ªƒEo>Ì8¤=G£Vö¥ö '÷%ºFãH¨s$qàƒÔu"Á–ïÆÁwµC;d³ÿƒ™žÂ{gÀ²iX¹¹êf{Ü›Nq<‚ö8â,*0¸YÜ©t‚+ì‹lÝö‡BI2'†êÕ9Îi95„' ÕøÆ‚,¦¢s15½-ˆi95е˜GN ¤§¨VL{ú‹bêŽw•Š Pu2IÅ‘zï™d¸c?´‹‹ì2ÂÓ 6ØÅÑ Ýq¸!l ’wÄYT`SSSnÒžPØÕékŸÿq#ÈhGÇdøË¯Äø®pÔñ˜·Í1ç^ï#^QLM¢ñJÄôýE©µ?Î9-r11oŠw>â„8-”‘$&ôî3É^ácÉæÎI¹õXdíÄ–ò.öæyˆŠ`ÓÕÂ7âæí%YLõ¯1Tò–¬Ó’š™æN†3H È ò¿,&&#®' ¨”ËN~”Âä$qZì>ÉÄ '¶r.´`ÙÄ¡©ë8—›Ìdn}ǽäÖÇ÷g¹:ý©&‡•VÏ– Ǜ}•ázZ`´Â,-ÁÑ`¹ûÍyÁ ØNMû¢‰¥(LK‡æY!Ätd µöÅ0à4˜”+–™xЃ¿ÊœTÑSГÁés½ï§É^îZ…y‹U£‰[ë=± Ö Ê‘áˆ™òY°µ½+lyù©QtÌdÃÅ2¯ ©9„’jl›ßÕm蘃?5¿ƒ<.ÄÔthNnQéí틊›·!X‡X‡bbÉIÊL“òœ€ÄD+g 1>›D<=|©d‹Á÷à"a`váñÔG`Ž»È´`eSo¹Ëa°=t•¤ä­ÿ\ z"9a‹ '¶Â$5œ Aoõ+"â!äbâá..‹©ûÄ£nL® †"&väç [)@‚åÀ ~=ã…v‰˜¦]¾C0bycQÍ QñϓŠÀŠD+€¢"/¤¥–}  z=1ä$CBNÒžáG­Ã˜ŸR]#)ô˜4EZâbZßÊÔºT^Éz AOæÓÀñÁ_ÆùõL`? k,åžVYÀÌ[Ú+ وћ³à°Î¶ò2ÔŠQõÎ×è<ñ Ç Á½ÐÔÓVVb’MˆI=è3¡˜0ˆ1T'KÊqðžÓ ’œœØÊùä †SbèW 8 ,ÁY¸îuÈaff>“¥is–…e¹¹WôÃX¸}.Ünt˜àOPA4Z@H-cfHŠ˜ÚRXé±1ˆcXA¬£ªd=Á]Jê>•è•+òsqÌL°‚Oô.¤'X9öë$® ~”ý_FŸ¯E¦x‡É.úL 2‹¬b…±Ã¥¹ÂXmzç^FS‹¤¤×{c{zÿ)‹Iôm bJå%1åø ¬ñâÐsB"9å•Z}¬îz&}ÒÀ{ŒîÐ…Dÿ…¸ 9!XHÈiôb¼ØÕ +ˆri‹K`ræ@<ÄíÙLi·)†)JŒœ¶ö HÏE9Ž„à„Ö)u›ŠÙÈT‹÷2z)X9ò¾Z1ôa¸Ë³rðy 'ží€f½—ǯ,ŠÈquºØ”V‹˲>1úZ…ªµ¢*:˜gfä1è0™ôRØa2ÆŠ ДŒºâ0Dqâd¼û')9â÷ÅžK€†Ðêiè|ñôKÐøñ’ŒÓÅ¢¿Âýr –£¿eþÎÇpç4#¶[G:Ü”6ž–/©ï>̴̈÷¨(âƒFÃ)¥t›´œ:O.–d¦ñ„ˆ{=?K‚$XbfBGN²˜03û0™é¸Äéø¥G£—ã#W ZÈ üÔljò xÛV‰OÝ·¾žrµÔϦÍ#ø¦Ó#‘ˆeÇÙÍh=*ŒÝËilPáÄ›qù)F§Ìi$UZ‘Ç¡v+=YO†ªŒrœ=.¦EîÏ…N²ž8§¸IÖ“Ä ŸþýcDÅüÚÚ†'ÄÌ—ŸÚÁC[É÷¾v¾’]äS‹Û¢’‘Ca÷æs2$Vé"TärßÃ!©³ÉBEž’!‰>=CIïÅ¡·$‹ •ý'ÓÐo’˜™ 1]Z,@Zd„.Çe1þ$)C—/OO?`Ï×óe5‚Hçî«kÑzvчD—Ó$`Ï´O1d1A¸3‹ Ғ̉ŽBr8_ô 9 þ")”Ä+½ЉééRQ\*ÓqSÐ?ý;àôoDÅüú7èÓ»F&Ä ö†>‡ô¼‹ LŒNº||Õ,O]lh›¾»•-wµsÕpÇxSÇDsçdx?[6uN6K>8®÷ž èÏÂRxz߸Î'!¡ïí7VZûÇÙʰÆ[$áÝïL”ƨˆ};¸béÙñú'ÎâÎ*g2ˆÃ€ˆÓ%ot¨¬Y=lÕÄãÙË»üM3K… `9[[YYÉåÖVWÖ¬7y¦î²Ê–¥»¶Y[͹²µÂrmuuµôböZ-nò ÷﬚ö^qy9…ãå6Ø\“[DkÆÇ.l¶ªk4ñ¦hS|§ðÒ’·UkÃÏ»–[U®§\Ó²D´—ºæ ƒû V€iFëFVMó!$’02FÀÈ#`dŒŒ€02FFÀ#`dŒ€°3§gâŒFFÀЦÌnð6;#àVɇ 0íÇØÀäÉB`”Ã($0VVT„ +xÞP(„W¹Å–A6+Ùýû÷gMö÷Ù°¬NÞ®¤3äù¼•g¯jsš¹Î¾X-7¥ö¼.?³_8}ibs‹× 0›o;¥Ÿdòù¼/5aqƸß=~U«f7˜öGì*ÌþN,÷b¬¶wsyyÝꆰ9ŽLåY»›¯0ä'³iÏÀÄ1±¥°–±¬Ë mÓÊX"YI ÛÓGý+$jÛ/I~S~Çþ¥¼b¾Í­¶’×1¶»øP{I67YÐs~*7À”hÓŽÊ;Ž/ÍAG(IKN(ÃüW{ê>Úd…‰_„¶¦´‘Íí©HÁj{ÇFÔ’¶Êa6;šu\{ aè{Ù),¯*L[ÜÃÑDî=kåò”äd¥0«ãˆ—ž™[ ¶fõÛÃVU¢UijÙ@d .ÀØ(O{9HÚS,X­öÃòÜd…aÑa.¨¬’„¶*±/%¬Ò(”jªðq¼¤ÎarÑ±Ä ØhÝM?¬j}U®dµšQ˜ãÿM¡­7bx¢¬N«ÕÆÚ÷«0ÞQ%…¹ù0Ú;ѯ&å¶Ã[ÍǤÁUXå­àæ ‹Ëç/¢ˆ°_VçiN „Ä ‰:1ó.nµ™r@«ßn)ë¦ôEÇôĹƌ€02FFÀ##`lcl…[¹Ýg—Û»?ŽM÷¹’ÃÖ°-ùm”-¥°êÜw,è9¬\¥Zm_á£ç=Gš Ì­GóE£•§.›öuÙÐöçª/ô9έǓRÄ 0›‡ÎKKKZ`AK›^4Ø“'OÜ(L;ÅÚÃönŽ#ðrÏ+ï(ÏØQ~࿆YÍüU>žï_†PfÆ[m#fÏiŸ^:!çßÜ©À„Äÿ¦­€9έǻØfûœÓ4·œ‹¹õöÓÜ”k0Çsó×2j ˜ãDR«vTæ†V8·>g=U[ƒîçÖ[%Ý ¿eT3!ÑfÚ,4(+‘'pš­r_‹w´÷{ÎëÜzí\qí×Èl¾ØòÂË9}ÕÀFaVí^îÜz¼ ü4OÍÓ"ÜâÀÄÄiy¾{Y!1gšåè&$zø2ÂS¾€ãoÏdÉZI•h?‘%¢|—ËCÑ‘+sn½ÈpÚT§Ôô>FŪ*LÌ­‡šP™XŸ}òÔ¯‘ǹÆV·¼‡åæ‹¿ó‹1·^6`q â’„„@BÈœY Y?±œÇã#ñ'Ž6ŽAÀb.Y @‡$<³yæ/ØgÚxÉÎÄ`ï8ØÞÝùmŸÉ“ñÚcçÙYßô¾Ý…šFı‰êù>ýMu«ª>õ¾oUµhh4"…„„G¿^ð m N£%ÐhÌùbxQ!2Ÿè<ç&ºSîg\Cˆîv ™§–„Ún¦…@Í7xk–{,¢[–”¼Þ[|š!4yóOím¿Õ¶üSsË ¤–f8~ÝÚ61«ö-NµvLh¯‚n´jéøZÛùÏí]7®ö~Ch¢«w¢S‡g:õÿÚ¥Ÿ ªS?Ñm˜è¤¨kà8Ó3ôûã7 kæ›}¤¬S¸†oÎ×·cSC¶Ù¥9üЍ¼×†-Øö™l%ÓÔÔÔ˜)gšœœœò/MNN_¸ kÑþã›Oþâ­+¿ØxùMW~¹é2Ò–ÐЦ°+[µ³ŠhÞ²C»%ªùÍaÑÍáqÚˆøV8F&à OÔF1Ú"“@Ú¦6:¹5š­Mm‹ãü==­=.£ž®ÏnGJäábp;˜‚®”<+¯”"ѧHtHiÒk™.­°7SÖË-Ög•€t\yŸ ¢5"©ô9 ©©;xnÝÍ6ç.g¢ž_\~êöä\žH·nÝ"ËÌ+é%566º‚¹xñ¢?¦ç¼ÃÝ ô-Úo¼ýeÈ[&ÚFÐЛ[¬on5ƒÞ³n µ¼f޸ͼ)׿Ë–æ­1á1–Ðshœ94ÞÇm‰HFPÓÎ2G²­QiÖhŽ%*Í•fŒÍ°€¢3ͱÙÖ.®øœaFîXR®#1×ÎÌ¿ÎÌw$‰q± ,© Ä–9ÒŠÇÓŠáèÈ(qäv¿²/’Yõ þºío¸Xj$RÃE\Î<õ<žG Fù††e\òhˆÏž„„®%ýŒn òÎä $ÿÍ ,æ‹z}KûØ…Ç0 !xq‘¦F80pÛèÖÐ8ë;tSX¢9Œa„châÀí`›£S­ s$Ç“…ÈÊ0¤xþ(À`퉹cƒÊ#—-¥ÐÆ)GHÒå×9Àƒ@’Q9+²?:¥úÙ n1Ð5þ7Üê2?êI0Àà§?D—x3wÊ‹q‚¹±)´e–ǶÁMÛu["t›#6E7ECca±ú0ºn[œq(Á öš`*áɃ;’uÑ)=±œÞØ4}tÚЬ}dš)öaFöAh$UlI‚Ø’Té[jdKÍ)²’GFÙo2H [–Â’­0ò”F¾ÊÊSÙE*ClZ5re¨—ýqàdIê% º#*ÿ/ ŒÅœoÐA ‡øüÕæÈÞÇÿ‹…Ç\Ø«ÃUŒy{¼îÑS,’ÑÎÐ#—&Î"üUŠ`<|Ž%e| ‚ =K<ÀPHûO…„Gž-6¦KÚ½Ä@_ázð ã–ôd– f–qʃL$£r<]aq•Öf°U«¤Z ¡Æ"Òx3œ€ÈxCí\ÈÌ`¯—æÖämo0sei1ÀÀÌjkd PÙe £÷‚¿ B´Ê£0È‚–4+ë5y£Åó˜ÔŽ¡÷³ö33?LÌü„Éý4™{ð€§=~…="ôã+ ò)â~¶xáË>0B8²¡‡¯1ðWÏÁ> &’Y>„ây¶b0_ÙŒ[ƒúKÉî+RM+è/¶sOkÉž&ȈöŠ÷™Êöã` ëÌ 8©¨»¨ü»ËàÇv²–ýÊðtv`ÝtvÄíµãÑbf7i–cp0°>GëzF˜ø«„ìfzvW<¯‡ÁÓþõ–!<þ °óºÒÄút‰–SÐÆ’a¾ `rdŸ‹Î! È+® ‚ƒQ4gW d)<Õ¸@=T nÁ-£F'¬î5çí퇮/Ùs©ü]LÁ“¬Î¨x¯é€98(ûÀ'•ï7Uº`ÊXGúŸû..ã6]žshƒÂþ]ÙâcLO·a‚žÞ†Öñ™º‡Ãùõq<Z@<‡3™yŸgI.=€8Ÿß †’.íþó Œ]`M•™ ŠKsËÀb²ÊM ˆÛ"EKN¥âä!’ TÃ\õ8_c‡"Õ´C_ç×öƒËî5æ¿;@„ôv߃³:h(®Ó°ª¢†Š[à·»­UiƒLåqSÕ±>§+»˜¾§Xø„-@`nOý› ŒùàYYO§a">»­ã¹ý^`,A;3ׄÖ0ßýá%L®ÚS$útéµÎÅGV‰Bzz±õ‡W˜@ÞúÀ(, >§‚àRõÁâƒ_cãÖØùµãÂZ Ìw )€±óàPÁAsÁAcѡ»]…LéёңfàV}¬óÏö_¦9Ñ›’[ùÜuV¶D0‹š.£îF7¤²¡îÄÈb¦îœoèî1~“Èë€%zßÊÌ5³D}¸`ñAl™°ÄÃ)†´B»`„#3ñJÛù¥ÍÜÒNn9, G3䣰þàWöqp†¬ªaþn›P5”§ÒI5⚫“pï8¿Öâíµ‰öI÷›dûtøüª®T|°§ðаø‡ä}çáaù¯t»Žvƒ¿ªVö¡EuB¯>Ñ«<9°ëäPÕi“æÔ5vžß+»õGXX,'ø/vIÝÊôx iÁKŽ1¯1¢r拆n½é÷lQ/Chgˆl°L\6|?$I-I/å;8Å£¸³’3å– ù0¬ñ-“Êa®rƒ žz üUŽf4§Æñ$¨ÔÚ„ûì¢ã¢öüƒvIMrpXò¾â¨ð¥ðð˜ô°½èèõ’£öòã#ò¬eŽ”Ÿ´•–Ÿ6+ÎX+ÎŒ)ÎÚ«Î]ßsÎÂʯ~JXÌņ9‹AÙÛαG0¾wšI0õfŒÏòî¶µ4‹¹9‰‡KÜbúÌHë’òð]à‘,G[¼l™ƒSò[Xpæíû‰™JD$Þn  ãàïµæxÔçÄ©ÀQrhœ]zxxì ‚’ßNÝù¬±[?rÀ Í]´>'÷ÉÍ«´ ;Ú¼J!æW "žãBñxp!öÜý¶|' x–Çø,căx”žº^vf¼äÔ˜üì8 ©øä:ðPžÿ `€v]ø]eýïvÕµ§Þ–,V!0þTÔ!~z”"‘½´à%`‚3¸šëXÏ`¨«žœ/XLc‡aäëÌÂætY_VI?!=¯Ü€«b€+ïƒÈÁUÀ±¯ìª BÕ HeïÆ•§îÏß3˜¿ÇW‹K²o°p¿±pÿ ¬×Î:¨fV‡@%‡‡@åGÍò#&˜\U)O‘'w1ªÎšÔç¬5Ÿ ã:7Zó¹ ¤ù¦iphl@eß…Áìj"ÆÜ¦<£¶×ë²ÆŸ>YBÂ}Ô…rsW0Ô;¾Ò¥d† —.46+k~½ƒQΨgTmOTÂɬŠ`á g*£Sª‘bÓ@j8Æ¥©è©ÕôT5£ŠK¯¦gPU“YÇU'd«¸Õq„’rT ~5K¸›)PÑ%T1ð£ ÄÎSƒXN1E*!à¬R v³ÅšYIÔ,±*½hoFÑ^ "”UüáÖâ™î= øãÊP û~8¶„¼ËS2¯ã××0f÷ˆ6ßÇx‹F{‡FÛîA!áD&Ì‹œ¿ yg.Ú@h.¿…Bˆæé¸a+mÃf\¨ Ê{ÐÛ³ ýÿ2Fˆ÷ï^¸Ÿñt>Py·Ï``¢vw¡4==íÌÞŸÆõŸHwœGRßÝûÓ]BdwÝñ.¸üνÿ@š¾ëùúî>ÜgîGBÅîÞûw²-÷îݛ߸ᅳ¾¨äö)®É+˜[DB³Øm˜kÒ‚—Sкž»¿ë§Éë=§]ûÑ{áû„æåñ[»µÂýž+—¶ÀøLs ›¾‡k1i®Ëܯ]|7ù;PÖCZ0;‚Y]0‹kðj:„@$ª£ûIqmX̺sek•þ¿ … ˜ ˜õŒa¡)IЕÁŒÿ¥°Ò®àòKû{’ÕI öj`Àø³Ç°Jæâ¬dPC–¼A²„¹lXø(¶z`–Sã¥Aõ¸OCžéïïGßÃZ“aá»úúúÖ ÿGS úY°n7tÍtÙÖCu[UWFõ$~6`…| Ÿ`|wër“v­*—ŽöQ­2ÿÁ¬N¬Ûªº2—G= ~¶Kf9cÓå&ƒÁŒïº¹Œ$—º-ǬÝ?qmÀP]*y­Ç†QØ–{´—.¦–wÿô@ êåd~ÍÀønÊ»?½õÖËÔò>Žù &Pu£Ž<÷aáÑ[’® ²ã¨³uÇG†Ú —®ñ=6ÉO_jCÈ'ëÞŠ¹ßgÚ™¼›µŒ1è+¾-Ú0ÞNº» èŒÇã’Gê±nînÐGÝ\zyͦË(¹|scùãOã=,ÆýÂ%Ôœ…z ¨îu^×1f™`ÜxcŒŒ K÷k}x0—]‰ÕC5>šç?#:°ÁŸü €[³Ç¹ßúZÇgÜ!ù3+ j¢NðÐr¶Bq,§nä}\.\0+·µØuûÒ¶d~²+ÿ•¦²„-™5߀Y/{eëªñA‹ñ`1÷¦ïƒ‚`ÜÓúz³V`Ð(YW½J3ƒ½¾{ºŸH}=¨ß-QÏûŸ§Êÿò䇒#´ß{ZµúPÓj€Y‘¿ q“ÿåýjÐÕ«õ-¤+fýÌÄ~J)0`ü¢ìë&‹œ,x+¨!¨ú,av÷gòÙŸ¯ÅSLLLL0ÁÁSÌÏLmzG¤¿¯,YÄÞdž/ÿ¦%XÞ½ü`øŽ!oïJ–÷ý:yÏ®lA0þüo~ –_øÿñL’`<¼zqÁ ±X0Áò‹Msƒþ%@ßÁÌ/óÝenÿ¹,d…ßÍÌû÷î2Hÿ m@ÃùËIEND®B`‚pygtk2tutorial/figures/images.png0100644000117200001670000010516710050344475016317 0ustar finlayfcf‰PNG  IHDRË ì$Ð= pHYs  ÒÝ~ü€IDATxÚí½k|Sç•ïÓóoÒ¹4¤i’ΜbÒK ÓÛ¡Å&t°L|£ñr° $ãÉЃo™ø–â )¾Æ SlIžÁ’܉oLÁ6“àKš`SÀ²§‰e{:ÁÎÌÓs>'d^œ¦/NÀÿµžµ÷£G{oɲ!‰ ûù,6¶¶¶¶uùê÷¬g=k-[¶Àš÷¦FO”” Ù´üAÛÙD2ª³ò¿h~àù¥ÿnÿÒ_xÙwÿ׬¼ÿ@¨]“|­ÙgOh˜”÷Ãê»§‰Ñ°Yb¢_P6ü–•ðÁ°ùÉïš…ß¶=üm˜~U¾÷á5¶€¬TÚŠ5Í”„ãvedc¥U& k¡ÄD“‘çCÀh××¢çe‹ÔÑ‚`¬|d=€Ò…¬ ÊÀÜÄþ&‡ˆE51ç%ší)ת8Gp&yÿ7R\¥/–ˆ‚4Е`Ї—x¢sl$ø§ gÑ&,08HìÕ°/¹Io†Oe±‰ôü[ÈŸÚ—ý±U!ýéG•Yïó¥ä}Gñæ—ì`ÁѰ9(J ‘"(Ai~i± >%-'•d BQ>üM»‘·_ù¦ó‘Ⱥ:hlç|“Ù·í_UÉïð¾’p—™> ‘ 'bR´•‘¶•kí̬ÁSòoßÅ¥+ô{ÀâüâQë¶³`§ÆŸŸ=-jV%ÃþÚ¹j£kA¬TÛê-AÙªÍN¿0}Ò ÊGãý"rõShr߬«ã«“ZWmuE$ùXäÖÖÈD˜¼ÇñÐ7SˆFŠ^,~ØNìp:ÅCnÎÝþ!J–””ãÀ5lÅ¡‹ÍG‘•~iø@Sðô¼u9yßW¬Ž_xƒ² †Þ_zØ .ÑþÂz+Š’@ù€,'EE©Ö˜þŒ†Þ|³ÙGQª@ù•oÚü»á/0"á^ù€¦¿cÈ(¦•J“ n{pu¬ oZÁÇÝLZ®Œl&EùÈwm¬m!ð­ü®kr20IZ*$§=ѺbCEÙÊLqoÝÐQ+ʰò1,Ɖ”ÜÔÊ 8¯"ý¬_ ïযµ„%9’«à†':‰‰ hjš|0³d‡? Ov<&y @ãç„Á>Q’ã2wú!¤O5ý ê‡høaç÷ûújØŠj·HL¸+€´©ø…?וŸÿ3îŽlòçÄÄÇ~Å~¯à£üüƒÈMÉAù¶GRm0ô&a¤ŠôÝÓtÿoZî…Ü)¸5I…Ñ·E cð¾Aв9(ű¶Â„»š5úà·ìä£ Ê©åµôŽÇU(üJÄ<¬T(JÙG &ø(¿Û¢tG>îã®I:FÒ•ßsùŒ Up ÊMí"ê-Úˆ’j·ã‚Í—}JÁ¸ùçó‹M® Ÿ ‹x0ï‡=ÅÀšè$E)ˆÇy •æÖÖ5^êÿ3üéÄ"Û>þ´#:µm›+r{+l#¶Ñv^\rú#,À½¨¢;u^†²†6˜p [í,5fr€¡LQ Zgrî-ùWNÞÿÕ?%›øªBN6qÏ#vÊ›øÁ\3>°Øq7(Êû¿hÐýÀ·´çp„‘x ´•| óÎíðí<$ š’_ÕÜÿ ¥›ç•€Nt@Õ”ä $Î?£>æ{.mŸãBÍ×#©wû·V¦(œ’ •“^²Ÿ1Ø18¡S‰;¹ÛQ­(ƒ4d%Pò­lèýó`A¹µUîÿ\KN¶Ì‹ÅÈ'˜¨:e8¶Š  láiÎÇùÍíŽÈt'·‡¿“z3Â.aëOæœú!ÄMŤì!ímа¾@à/}±¤²Î-ŠJ¸— 87w·7çh¾›ï'±Éc DöÑÉa$ŽûeDò'%nÞÿ—6:€ŽTLyãÎòy|v6“x¤ýø µ™”2íZ”´ƒ‰r’œ’´õv”âq¡Öx®Fí üª–À|xM³ZH>¼FrG*ì«áöÀ dÎÇ–”ô7$—GÙ­Áx$ÙþŸkHNß‘õ|ÖÂ=•<Ѧ¼·äšŒ‘«1ÄÞ¬H?;8?#©Ba¬Í÷¨™¨-<™œ$¥@@¥„o®‘fü)ÇÝ?p#' ”áÛý@PËÔ÷F¦·†g8E\’E§·Fã–Lì{í‰Rç¡o§Üú„åáWëNÿ~X¾k ëÖª;âæ±A0 æÐäX;ü.Hœ%t"‘e —9ù”7‡¦÷Hvð€S<ŒaQÝYþÍ&èûÌnûèÊf)f(rQ <¥A·<ô¶2PÚƒW”~-|a&Oàx'¾C—§¼¿«‰H ´ýñQƒ¯UÄ-Ì$˜>á¼Åq÷¢grÈ;Égr‚÷QúS—4K£ÆŸÈJê‹#n¥Sk&'XפࠤA÷M~V@$X0r†êòheÄQù¸DÉÀ¦äfÔ®EvdÔ-²Oí•ì­–KW~ -)¸~X" …¡I„•´$½˜"¹l\Ú$êJµÀDn†6ywúÂñ~15‡ÞPšäÁ>ƒ uˆ‰|ç¼öp˜U”$0A?Pš_'Ç•(l^¬ƒ’@éÒ¦á÷\ef )Á@ ùé?F2 ï’DhË£ÁÅ…ùÂQ1B_½©uõ&§ $ê™nêR¡(ÔôEz³™œ°8üŒ¬•ZRMÉ5[O» iÎi(ËÌp…„ôuPr…(êJµyɨ°gœ‘ÿÃEˆ]ù¸ŒËõ.% w8”{2„­Š€ëwú…£Ï];[Yǽ۱ÞàôµVØ>at)öGqûP8Æ…nQêZç%¬ˆæyü°!ËîY¸†õž«æ•1ežúÕ’6×"þ¦ ÎwŠXçø£Ù6P‹*ä•ã“ræM°4𯇍&¾¿DÌ9” ´ƒò^c㱓 ôa_k` Éo2Œ:ÐaÎå¤Ô÷uPúçc‹æ´¸4åÓ*Í\̱AÁLæPмs8t iIïñLN®ö3Öö7'ïäš­²Oói×µ¤`)óŒ²5ÚJCe+¥0îF#\ IE.‰˜œ¤p¯ÁèLGDjÚºØ ‚¢=±[è Є#á.ÚCÇDg;ŸØƒÛ»Çž z>J×$áò‰­ÑZº’±ò¤ÄÇ ™¤¾à‹~ÖµnÁcpµœœß$J.ÝÜã\ÿœKÄ"ç&ïÄd9€•þl3ÔäÜdvm2aGa¡§(DnÞº†é˜°\kRhÀíװܯQÓà׊±9uHWJo{E¥¨+Å¥¨:}ŽdäGIûÞ‹ý›sÀGØaÅPJ-EùÈ¢Öäm­4úÝšÊÅ…XW’œÜè\¬t„-PQ†i±’97U¡ãO9 M%ÈÉÕB„ùš­ œøZ9Š1CŠ¡w0NÉyÆà\Qf´<žá…¦z ÀS©!Ùø¥%Œ¬Ùàšd£Sß›Cì…Ztv ÑPK…¢TÛ¦ll¡1Ï[E8Ƙ…þ^u40*ß…÷îG‹Ù/uÀaoÏ´÷ár5ªxˆB)+†ò ˜é Ö+¹¦á²($5‰©‰KŠ%QÈùèG9WŠ3gÛ9yQûŒzÔ‘î†Û "it”s;þÖÛ¬[Xl6ðñ¾HOŒ0ß 19;qèíëmüÍ7{ã<ôFñ¸ùçaJ7eKà¹oUlvœ9ŸíQφ?/E›KŠ2Áü” \ø¸»E?™%ýû.‘˜3DjMyk¸#ýM|ƒÔM/DN¶úÅŸÑ;çÃpi¬mô˜Gg·jÂQä¦6(Ùvc¶CAIM#\nòÀ¦ýJ‹ÝçP Sa›äR>ä@kìøÞ¥ÞÂú‹Oõ79F!­jÍ ûo[,Oµ€3]nßÊ&žCt\òc$eøßó¡÷××Ú¸œÄ9™ïº8ÅÈsÿ u\\Qâ%>¶*X‰2V‹¡^[ÔXTÛמph,jÄØ ×êï;5ÖØpÆÌçµ”¸JMÿM‹¿•ÝšˆÄP!ƒ3JrIs5°wG JGžøtïå¤Âq.Q>žñóÀ  `ë34œ’ tSrP¶+å™ÞAÊ‡Ø OeÔ‡”5¡išß6>Àܲe¿k“&æ£LÉ[|®iv^‚Ài_nqØ-iXšÅ;Úè^!Ìä°Å‹ÁQ¹S¢ª Ê• 5oñV’“>5lë¼ÁçââŰùfrx`9¦\Æ£ R¯ãžÏƒé”iˆß`×,ªY ùvb«b&‡ÔA,Ñù¹îÅ_“£¹,ÇßZƒ‡§´¨‡ÞÁ8%½?ãŒØáREúNgc|gÑAB·8èD¥¶E=ײþ9樂 'aÜ³× +ýŠM³¶¢Ô@ä>eÇÇþg«? nÊu©wnÎuÅp&p"ãò ¬lI,t‘%v€Å´S'€%>ß¹Â*fº‚I‘Ê”KW>9¦ˆ SÜ„“ßdâEçÖòñÃZNxÔóàŠ ÊÓ8â`œã{A”+@‰°âL€v#!iÇÎ[Š ”grVý3@ò‹ V1nu…ù*Ê­Ì ÿÁ<39A†š?¾ˆ9î`fr2Z¢¢(£v¶r‡£ºÀè¦=%E©!¤Œ 4·³'(ýŽ»¹Ý:(¥‰ 7ÿÈášf—JW¶ÄüO‡ÁÜ–¹N0ÎDï]Ìà. düŸ?•ëð•- N dÜómj ŠÐ8‚yotÐÍxØ_ÔžPŒöTQuÔ–XÒAÐ ^ÂÒ6ãÓeñT[Š$[´_|H€¤\bß/aƒ×°ä(€ç³Ø'ü¬Øi§¼)&…HIÍy«ÊÅD)æÄEŸ£ÿtjJ)‚uÕ¦V¥¿8 ˜Õñ]“üZou´¹zMÎFßÛZ7ôæ‘ç4“#Îá,hÜM>4u£vSˆâÃs)0h—2¹Û9/.ª%EO¥8å½IAÉ=-±ÙŽØ.”’ãÒìš×Œƒwç¶(ÆÝ`($ œñ…N¢ˆÂ ­-þ„`\ PReœ\Š_ä=­¬ÃŸÅ—⽜°ÁSKœC 2Ó6í 6g‹p¿„]PC „ &e,CUŒÆ|§¡‹J?æ&䊡7 R#§ïf>Hwˆ>Êyçs4é–à”grjE44ƒ]¤¨a¦Ü”·æØœOïàm¬q¹.ÝÁ×&3îõc0ZRœ—£Í]A:%5C,ÉA9¯òN2E¹hP*fr—‹%¦¤(cò\AƒÒ•x@ ÊÄ牅?W°/ã IK¶%tÑÍ„ °èO`JÐd(¤­?K*m“ûm ¥ÔO|±,µ´#íÅö”ŠÎ”ŠöÔr´m°­hÛÆú«bR ®5c·ß Ü|à/ÊæÀ‡%$›—‡¦¶ûWjß¼EªúHº÷‹¡t×6­cRîÿ†-ÿf*u¾øõä¾.Ý„íäØOƆ헾‘ú•o¤=üõm}35{ø[ir?åá°4ѾúhšbÏm·¯®ÚÆû=š ÛW¥<ôWi};åvÙÕòÕί~ÈwR©ó`DêCá·Û"’yŸÎžº2"-”u4ìñ”OÒV®õyÆkÙÎÈd謈N Z¤=²nþcV¬K |¼†õ)+žHŧ°•OøÜÔ<ÆßCÙæÝùý´€§¬ÞŠ›LTØê©êÁ[0μN°Ì‚?˜G( «Xo{{«×-ªJÙ=·Z_ïžO£ ãÒk!·õ!Š:˜wU>í« ùÔ^™O´ráù‰º-ÛRlô/oÑH *2D؉´qø799911%Xxóx<ì<~N¾Ó39Äãñ<o!mJ<É¢{5îÒøo—ÞоŠãý=Ťçúý_ÿÔÔÄ'úÖk^‰gòãý¸s<\í‚ÏâžÅ39þñ]SP„ þEgëÅ\®üÀ©E}”çyûÅ/¼Ù“ž©`>‹ü”O*?só~Íò\S·ã›3>ßË;uQ¥yâK´èóó3/ú7l±_È@×ü‰ dqŸÏÅqdÜ÷S1¾Ð¿Zù‹è¹¥·F|¸ÜŸò~b§&ôâpPçß;͇ßv «7½éMozÓ «7½éMo:aõ¦7½éM'¬Þô¦7½éM'¬Þô¦7½é„Õ›Þô¦7°zÓ›Þô¦7°zÓ›ÞôvgvNozÓ›Þî¾F©³> ÂÞÍ CïÚ_æ;è}§«Õß5þj>Ž3{שONÞ%¯ù¼x¼=„Õ?µwUkhh¸ƒ¾?wÖÕ~6^»ä5§?S'¬Þn›6¡ŽNX°úkþéVw|¶½¿êïÏR~ßéj?¦q±NXÍ_bx–»„°óÅèVo þ éV'¬þšë^½éßåÕ~2©ïæ_Ç;ñ7X×°zÓ {{®V÷b}Üï??Òg¯Á_ªkX½é„Õ½º—@÷èMÿ–êW«V'¬NX½é„Õß;ý5× «7ýû£V'¬NX½éßRýjuÂê„Õ «7°ú{§¿æ:aõ¦3K'¬NX°zÓ¿¥úÕê„Õ »Ä K **–-+ ¹¹lYv·÷,è!Þdž(:÷8Xý‹{R2ø3«Øß;11®3kqW[Rî¬=Þ}ìdŸµ­ßqz¨íµ‘î7ÝýÞ —'†FgFÞžvO\óLÎNü :#¿¾êv_…º{ÝÎW‡ìÝððÚWzkë{,MÝ6{ŸËyÞyÊÝÞ…æ<5do¶€»ê^éç‚gÌ/uä•Yó_´ÉÖTP†[èý5G:¬ÿÐßÝ{yèÒôÄÄ´gúÚô¿ÏÎÎ^÷?ߟþë3Óÿgfúºçí«poÿ›žŽ_Œ:ÚúáàQðØ‚âæ¬\K–©ÖhªÌÈ®LßSlÌ®Ê2Uš÷×™ k ^hà•O…°ŸÕ…ŸyÂŽ{ØWΠ3²,„èã¡›h——yû ° ŽqÓS„  w…ÐÖ-ïq‡,þ¹„3‡ð7åƒì”NØE\í¾¼ãùEö’—œ•/wÔ6vý‡s¶¶!àì™×Ý=n@tøò  –Ù•1÷UìÝÎz [W¶ ö–AØÉ Ùjàüð,EÁ2'<#±µàÇÞƒ¬­â³ö•N§ë-¸x€û•+W¯¼w;ûŸ’MÿÇûžß\Ê ]é>7Ú~zÈî8zü à;¿Ü–ó¼Å°ÿX:¶$ÅP’±«4¶†@­q¥®auÂ.²Uܱ- ³òNˆÏ~3³.»'àŸ³‡øÀñ§¸3«.Cº<­‡ø;ü±n/duÂ.øj=†çªÌ¹µŒ³-•õÀÙ>Ò³ ?A!F»_›èô!sßœ€-ì„{®óÛ¨aë{,Ýû€ýä€Í5ŒÖÒ7kw[}S`k‘=§ÈÆ9Ë; lË_rÖý´ ˆ)ömÎÓÓ³ ^AÉâ–ì½PM!èáHÇ?½em¨ûYOIµ´°¹ðÓ°%©»òSÓó¶ç&l7An.Â~ÆÄìÝ@Øñ ¯¬ !âhZ•Ÿý•!!óî÷w ¿«ÜÿùƒF:O0g•l•NØE]-¡8 #kŒßA VÖwàþ˜­HÇÕhkç…Ö®!Œ`@^Àë)7$j]ÊØš†а@U`.<uk} ðŠZµH²‚¼%Îæ[ ² cá`ïƒò…óÊA/d¹âÝ4.Þœ|× „ötLÂÁx%MÝG^E/D‘}wn-ÈØ”ÅHØdsB’-Ù¼t4ì|Gñ qiXŽ›™+Óü]xm°ïõ~²ééiØÂNè\¹r… }xÉÎ;‡Ïpîµ>~t<“ãtsæÊ{|??< œ Õ§à<ðpº€þsôpïää¿Òñt“?„Ÿß9Ï?9F÷â%;ÇÏFªþdàµNØE\mÌ2ž6"gwá8:'·¡àWéÁNtÔ÷%[Ü  önÛÉn"¯­m+ìä~Xì0= ¯ªnUHW´ÀÌÅ`ë¾bÎ’ŒE¿ðËð,  A& ¡Gbdôêè¯ß{gÆ=qP Ñ·§°p ê^tø—ëÌW€2v-ür0 k¼Æ$b“ŒŸ"aák¢–®wg5Õ÷ÝBX7›k"5'BJœGbgÖ´Ü€]ü05Ú8ùCfffä=ƒðX~ÎMÏä„pþwŇós.…“Ò~à>»¤sâSCjˤžÄÃf¦é¯¾É|¸º— ø«¥Ÿ1x ³iKʦ-™±q ïF黋÷ì­EÎþذD¢­vVV;*»ªþÐOjiè–´ª}€¨Zu©ŠVÝ Çr”lF¼ÙÕxE{ÁÊñj.¶í{¡™[ZÑŠOшo?=zæuw¿§ÿÍ™¡¡+h—ÞÃÉ·±iò _B719 $—…} ¦¾!û¢Í|À’‘] ¿DXøcãvx&u?¬î%Xxƒ_B®aeÖL)ÀGb–C–E,b°D+IWYœÎ\‘NEXe,ž ^Â48\€‚Ëâ•ô½~Žïyýõ×Å'¥kczÙKv.{ADó/au?ìb¯6j˶¨-©Ñ1©ÈÙ$³ù{Ê@rk÷Z@ æ»2Ý$™Ñ\nÜ_iέ5Ö" ²¨XëÎ^î¼–Tµ—•·æ—;јS¶¹eŽüR‡•Õ̲€Ô\¾HXÙ ²·ä%ž¼¾ƒÐ)1`sôƒ>€¶w¹eÚºO³hP¯p³ãCæ M—TÕ'4¨5fWÁoFüvCL–r?EÂ.û¬´»Ô[!{ ø–à h%ú@S¡7gXãGrð)¤.–|¸êvNn\‹:Ttæâ3ÊN^¢* œÿ!pUüOÓ5ìâ®–ƒ&:&ƒY*Û¦EoA Å'µ©ÛL©éûRÓóÓÒqFžÂžÐWû£#àUqÈI`-®lC—³ü²“ˆT¶•vVwn‡ãK+ZK¶Â–;g™‹Àx-(nöQ²’ƒ¢ƒ»ƒk‘¶ Qm.6óvÊMÖò‹óÀVë«çmÎ_ùö¥VEPÉØ¥ aoi÷Ü:CBB´NuNØVVØÒ¤Mr0·& ðmïMÿ;QÕGŠ2g%¿‹<¡¢–Ï,ÞÅûä]%z*(Lw‰D†óðI-ñT|RŽß¥v‘³.“Ò¼â¦-é€×õÒÈ¢¾Ÿª–Ô8ùþ4 6+!Ùüô¶½YÃŒÞ'+q°ª½´êUØz!Kl…=Uè­¬;CRÁÇB aq}DX¯CÖâ á*wÒùKk:á$UG:j_é¬=~ œµ·^bÂ\ÃØ?‰;¯ÀPu¸ŸåE›©à(Ho lÚ³ ÛM±IF±Fá«aCÈXã;Ý£Ã#cðíè°¹,Ý=ŽŽ.‡Óew8m==í*˜Þ³,DÜ£6è™."¬‚}š}’´4ôÖªj/@ÐT¬" Å'·Š91¨ „Lñ~€ë§çÒ »èymÚ·tktL2à5bCjDTt¢ÿ:v|cã27=´5&&™AÒfî*À%R?ªË+´äþØV\f#¤D–•·"^‰ŒLº"^™­kìöÕ5õ𥒌ùg)–‹¯ø’œ¹åšª¶ƒÃšPÞ¢聾8ÕÆp“]Q] ¿ 8ßõô§Kðqx ®L4¹,€ÑŠòR0ƒÁPY^ÐÝÛÞÞeu¹ì6gƒ­±¦¦ºª¶º´¸¨ ¤È\xÀ 7u/Ám˜éâZOd¢è7i¥y“ 55)—Æš^ZM¶ò-¿0 ©¾7ŸD$,÷\Ö »à«•ÆÿÇÎOlF_B6*!|CÂú²s9›Iz6u{–­@Í{þXÞ 6œ¼)ZŠžV¼É– àMÙ¢Ÿ8‘°ÕuG‘}{`÷ŽâKá1¥í ÈúÄj_°sM…ÌQ+¨cªåŒàh “eCM}ð'lÖ¾Ú¦J)lkiÄÃÞ‚s@›;ÒS“Ó""V…c{,,, úa¬mÏô:€°mMNWƒ½µÁv¢ÁR_S[_ l —”çm¡_Y^u‹Žˆ»ÑKpC`Mõêo«ACar‰˜«–¨b\­Jrˆƒz…ï"˜KâüÕ|ÆÊ]Ã.ÚK-îi;F™’M]¿a;vCÚß߯gÀà^ lÚŽœ C¾Ñt [h!æX}æçm9Ç„¾¤mqŒÿ“Ÿ£êd jml¹—´Ð«º<¥]%ÀYQÒÒ„âæüŽc\Wá1ŒgÈm€'"#Ô"m¶–TuzÝÕ‡;J™_¸ B&ìꌜ°ÛMwaC´vÃU-""¶€×ĸØþ lGBÖÕÚlsY@ÆÚ-–úŠ:&f²¤g÷™öÀCâu »0?,½WSUá3UCqþ‚D¶Ò]!Õ2ÓÉëo:Ný«À/UM[î%(× »¨«¥õN R²›ÐñýDtlÀmÔÆ ìæ'w¢†M'²,*TPÔã†ëÁ‹?¶‹a}UñgM}'&…9‰ÑWvç”Ê æ§L~vUV;0Ìë ]Bm¹¯ë ðØ rÎ"jÙÓÁì}^Àz©a-û‚s_B@A»9¹Þ§£hÔ¿Evs±DX<2û%”±»î0ÂR»:;ž—g$­Š¢uMxDøckÖ|‡8 R: ^û;$Âöº:NÙÚNYÉK„%GÊØŠb"l~®Ñ¸7cÛÓi¡¡¡÷þÉ}111:a5);Íh- ¦B0Š¡NþP¨¾Éƒ4GñûšÊ”®A¾óºŽNØ^í=òÕJ©È2v•Âð!»u7)Y¯6&uÝ“©1O¢6éic殂¬ìb‰°`ÙU`3DÕ\™¼¦CD@Ì)ó¢íÐø¢÷ºÚ.tœuwôŽÁ¶½Ëíêr;]oa<ÀIæ¢e së~Æf±^鬬—cd  <%Ë›UŽóW,b.f·¹’p×®P‹Ûç-aM‡ðxCÉGØ¡áôôtbk kÐ!%K)ÙÇRÜ£ÙÓƒ@ØÎSN±N—Ýéj€­•ÖR_„ElEÉØü&„ìnƒÑ˜gùüŸ~~A½{5¬Úã©–¨š$Õ¢B¢r8rGAOBžß;(nq néûa'=nŠ™m''ÿÕ»{jrÒóI\mÆîâ´ô¢”g ²O1,K[†Œ„ÝœxÝœhŒß¶×z±4€;Œe‹Ébö×I^‚\$]V¶”*l˼ ÐÄU°¿¸Ð3àx­¿²{W»žÚžêèÂ% m›]ƒvW0·ÁŽÀEÔ¾ÜVUÝZ\Æ”l®”ø5ùYô«b¬nFKš%g)ÌFÔ‚åä1W3‚~æžÊLCåDØk×fòsŸŽŽ×j\Ï’vp XLNXò+ð*»bkìM ²Œ-ãS^ä+0 Àñ„§b–ÿùŸÿ“ûüL‚é„e ­9a¹ðô7<'JªïÕT²þâ Ôâñ<Ø`^-]Œèiï§ËÄýwš†õ›)Ü3© ÁWã¶f׌ÖÊ4”§ïd´Úf"Èb0,B69»E ŒM|ÆÌ Ë@æ%,±}Ì€wpFξh+¯î<ÖŒþ@êùaÏð%´ó¯ ]š–S·m_£ô\Z PFOBãìa6!V„3W”m€Í\áäUü3&ŒÄÚn‚ß Ø™²³˜®#¹ × "®'ó¹ª;€°Ì:26œšœ&êVØUA±®[·.z¤aŽÀÊ~Äkïôôù¡áîþ.Y2 ‰eœ=,û q_An‘¹ טcÊ MŒ‹%yoŽï °*/Z'Ö†ƒ øV-¢ýy`ÕðU™©Á}–AmJtì¨]=Š›·7‹¨æÕfe22¦ìÈÈÆoÇTä. 8-iéå+õ)óÆR5Z™ššžƒ‡m3%gägK³Ì/™ «Œu Ý€K(ðÔýö¬ûí«˜Ë…FGg³HÛ¡+”p ¿iÛóúdw¯»ýŸÜ”Ã8ËÄl@VZ¦µ«4u;êîØ¤ÝtÁÌŒ˜Zái#Ëb“#i[&l¹-M†¨¯/˜ ¬ÄÖ5ÞY­Çè?О FÝ£@U°îÞö¾ÁÏİ^BYÉ‚Œí8ecmp´*²5‡K(®€² c²@X0@-@Öd2éÖ/aâ‘£mÞAzV¶Qaš‡qw_Ç%h>]`W€è #dÅÉ.ñ´KŸ°˜¼Ê‹Èq¯&ÆÿãQ½Nz€Á"UÇo£Œõ—iÅæÙ ‘ä+` ˜%î‘Óa1ùŽÄÍU†}$ á ÛvÊŒÎî)3Ö¢à•N@dûéQ çy÷´Ûó;ÏÄïÆß¹Ê{ ðŠ6tåüð•þaÏëÃo‚¤–Q‹I¾ÇPÏ:û¤@Úîü›qàŸ]•öliÂöB „`ñ¼è8æºQ›”E ÃR2 HVƒ-Q + öƒ÷§¯L%¹t%¤’n…›¶F ‘”á ûÖð8žlzzî<%)ÙÎ Ûú¹ùdíÙc¯T×È‘[•åyÙ}æL"lþtbc£eÈÞ£Ö¯†UΟZ¤>ÀtÏž=”·E<3ìTkUNXM «žý÷ÇVQ¨ÎëU_ö8Ó5ù)eÕÌKúlÚ§fädã“%U³u·´v–l§'¸hô #ñÌ]©Û÷Jleâ1-=?3«Ø¸¿2ÿEKÕafz}ud)`¨êyûêÄ;³¨dGߣj4C—®[¤í…¡+Rê¬~)-aG×HÛÍÜÍ9ǘp.¡Ÿø=fç6$FÇࢠZ.!¡¯ÿ‡˜faÛ‡å#ñ÷¯Oƒ€ÈZÇ6Æze,Ðùî̈Û3@xu¾x=?t¶ƒ ¯}ýí¸‹-ÉØNiõwÈZêë@ÆÖÖâ ö‘ŒMIN¬¬. K­¨¨ºÛ Ëk *fºüM:©}£pb«˜FÆl³³³»eçõp)ª¹‚KífSˆw)äíÒ'¬ü§MtÈŽ‹¾Qx¼ão{noñ1‹Å"^-IìÔm9,ˉһH¶ ª&^Ÿ6JxMÏA¡º+?Ó ¸EÈÜm¸D)ƒQZYkª‹·Žw8Úúa¼²óºŽüØ:6:í–yúÖÐøùatÎÒÍa÷Ì…‹ï¡ß`ØÃ•ìé×Ǩä"@ö˜­_ZwKî‚ýG@AcrB¦da·^#¢6EDÅA‡P»iK&¨rºÂ¥ì‡Îa¯_'ÈFAi[a;;;Ѓ(`^qû/ƒ˜—€8Û?ÔÙ?ØÖÙë3çl7_}œeÙfÙÃW@2–MybP1ƒÖÝîØ±P›ôT"@644ÔŸ7öî%¬Zë)rµˆ#zê ,˜P…¦ž× N5¥î„ŸU ¶ŠD¾³4lwo{É¡RS¡)+×XYS *Õ4"ÕÖPkLO€¯;`êã ,F’x‰)(]Ó˜ÊK{ÆDÜ$¶&lÏA Óü•¡d§±Br,¤çÇoÛ‹3cIF‰_Û(ãµZð õ ¸©–"$êù·¨Þ—çÜ ¯.N¿5†Ç1Á6ƒì« ÖÇRvsžr[C×'§Ü.]Ï‹>Ù¸$cqíïºXäìúÍÐgÂ8»k)çÖ aîW$ì3Œ°Wf.C9[Á€­YÒ°cžsîÑaæ+èeÞØ6Ó…b¶û,FkÑ @¶í”4åE–-ñÂcËK‹Š òòÌ@X¸YVžŸ‘‘ –»qãÆ˜˜¨°°PÝK0a¹$ÔÄÐSJÈRm) +ú DÇ+G*‡¸Âu€­ó­J§ÅħPèß%NXÔì gðù6æf˜J u'òJä@ßø£ «Ë¦~TÁþŒUßÂŽ\rlW+‰hJo–§³dG*MX¥¤íeóE9Éù);ó2 HXа™Ï–yK³$e ^“Òñ!;òvî)ä•”Y*eÿ@ûÙ! )–y†˜,íl½‰x=ñŠ{ ëÁŒ¾†‘°ýž~$lÏkí§Gåâµ–†îòŸv€LÆ(®< z 0íÀÞØ8\4õ¨×$`+Bö»±áÑ ´îZ‚ùaI~ðþ4àUÔ°ÀÓwgF€°`ÓÓç9d=£d²¯``ØÝOJö‚DØ®ŒŠ= $í8eãJú.—UZßÅc+ÊËø"Zšï²:AP „MMNÈ&Ä¡’Ým4|f Ì„²Vü]aI¸é®õ'ŠÁ½YÙF)ŵïsMMx#4wg|Yé“v‹Š LÌ·Ü€sS\ÂàÏ몹|VqØ’žé¢ˆ+vàó<5?o¬jȯ¬/.9l®±åUÔ›a'W|£‡Þ<—±=öKö€ÝîÝ/¾/rœïäŽ]ÏdPW+ží‰¨íQQ©”…ãžb¨MÊ’8K3òlR>mg NÍ?‹Óô É»%GíSér&Yä/¦,(;x­=Þau¡€¥ò´ÀV)*ëË™}n”J…“€y[Â+˜ç×3@Ø‘‹ã`0ÈEä“uµa®BZ›€î‚CXúÐ\L9´JâÓM±I»£¶¤R›°µ1@؈µ›#¿· ¶\þÓ2ï{çuÚxä‰JíoâÔB_s5ª€ª`ï_—ð Û¡ÑþÙÙQ°×®âh;}mdzvQ{å­ñÉai¾Kæ,xe,[Ü€Lñº#²Òž)ɉɄѴäD$iJ°ŽçqDX2€lmuš°ôwÝ¥+[a¹Áø•^Y`:@Ø×úÅ÷^ñQ y° â«þm^Âj®e 9|ÀÃä‡%êeåÍEF®ùæRfE¸Í/3ú*Ù)¦=ø—=þx|vÅ2yÏ;BÂ8§*ëL-új#Oˆ\›<Ô˜båŠ2Ilæ ãLQÌ2În/ ïAL<Ã+Ûa1ý¸¾ òH+Ðñê —¼5ANU*I@ÖÛï†á?#ìèÛ>†„“f½xPâõ,«eðê°ÝÕw¬y@ZúU-§‚-¶dácΘ[–ÉØ€¬„Z$삽Í_/  PÍ0H/HWÒ°¤^gg§{ ½ÐaöŒÀþß^“ä-q–ô¬?Â’&V†…} Fú,÷lC¡­~oBgEèrÜ® ]ù •›ƒD–@ ;a üÈ*¤·"Ùî]K€ï=ûîQÙWUÄ뻼OŒ’Mˆ.‘°ìàw}ü¹WÔ±Sе­D 54ÕN€ÀnÍ~K'¶d K_Î’C¥ÆÜŒêÿð Hkq惆­=™†JvÿÎ’êbB'|¸|ø!°Š¯®ð%¿-W ç_³*|YD8a©„ b·±±¸¦‹œ­pº%Beqúè©ôÄ­LÀîÊÇõllÅO°T"¹€°g^AÛxíîuwö!(Ï"d°C8F.ÏÛWÀ8d°„מë³QZ‰€ m1§ βE_¸¦Ö€N ¸`ø+ØÄW£o$È.¨â|…`Ççq*ž…N¨°³LÀ¢}×'ª3nÉEpõ=àìû×ß#ò÷š‡‚ à&ca‡eo¬DXÊQÐÐX dD´~ëÑ0ßÊÚÊ¡rûÚ_^ÞÞeÍk2Œ» @ØÌÌ4",X||¬ÙlÇw¯6ð*,Ô‹œÊÊÞ­¨CeÅóaGØSŒ°Tß~Ò¾¼Ëݳºø 'Pd9˜×u°ôWÍövƒJ%õ l­n·NÁ¡,Súa3Mh;Í™°-(Ãì¥ð±^ùõPþð3§;ÿ`!ëèrˆƒSx­Æ'<â·=°CIóje¼®_õh°ÕߎÆ~x ð‘µiÍñ©È'0?÷†dž lb’‚p‰×þÚ¼B ñjíÁ4Z§XÃ×$ÑJÕ´ÚO£ga?’—ÅŒýݯžI4/a™€Eézz¤½‹:Ĭ1`ë’½±ÇÏ0ÈvIJ–As˜Ë±l +jÀ²2¦‘’OÃNÍò!FÚóß<ïŒV„Ü”˜†8EžÖ÷¯¿+obH,í§é¯?œþý‡³døÃ ;r”,wÈ2S8 Î:kªñ•µ¬ìÿÕÔ!¸ÞÿgËÁV¬XA €¤Æ½¸Ê+5%‰+Y°‚ܽúL—ÂK0EÞµØdºò=‚iØþs¼ì ïL×ùjGX®ëË!Ë8j/³­¿¿˜šk"`µ‚ ß•êi´;ÑK@?Qùe… ]Ë瘋öÔ4晟7‚¤ÍÊ5–”çwtµ÷€†È–°i\ƒÁ߯îÓ.kvº-)ñX|ÂÑÄøºøØÊ˜¨Òë«ÒSë ònËL×à˜¤d­QlKýõÒàš ÛÈèDÒ¶|)mB²9e‡™n™ ”Ùh×qۥѭŠU { ¯£]oµwžïèºEæa/1·À¯¯^ǧ~ë™øCe‡®À¬ˆ¬êú§a‚¬WƲµ^ è.8ôJwÈu J²´X³ßßø½›S·›ôß °Y¹]»Š[ù.ã5ý°\²ˆ˜C™t•eììȵknæ"@¶~ø‡k7çÞÿðÃa eñ@áééóÌW@ñ[`}€× ½Ùö^WI‘YÔ­«UiØ•__¹r%çlzzº­±&_XGKq™™)$f-õ5ä"€Á.ÿ¿# KÆâ«H5 XJYÛ²0{È=ð(î%à¾",ÿ“EëÏç0T³uÞ¨ƒ`²/.e‚Þé8Ýe.ÜŠ5ÿPN…Ål.5ª..9Tj;ieá®øëÅqY]6€/¼ÔùE…íEÅŽíñÛÓ:ÒSº¶¥APk{*¦6n]Í–õ¥që b"‹Ó:]ŽàšW‹‘LŒž8á¾.JÃ-/—ŠÝ,—<ÀØ, 3 º29û« ŠŽ“€¥<°Ž¶~Ò°äðf`Ù ;º†º{/÷ ¸û~9Ž ²$ca‹„e.‚ž³ÿ‚zuX2¯^Â2%KÅ\\Ù" •• ¦eì#ÈR¦…À>-dÎ]»v ~].WÃ+—ÜŽÕcßív3ð)[~X €¶2°¢ËõÚU°W¯¿sõêeæ=˜ÂÞœûà¿ÿð÷¿ÿ=A–”,©]òÆþ‹ä(@Wìù  a{ûÛ°]VƒáoE »jÕ*ÆÖG˜gÖËÙÐЯ‘O »ï€±¸¨ÀhB/@–â Ȳð"|4¬¦_h´–fW ·\b]¶Œ;Â4)t8d^1Ë5¬gr<†PØMu¹Õyfä@|˜ºÏ½ºôWÏ…„¸C–¨†Ý[ŒZ{~ÁKû€ž9EæÚúJøº¢÷ «½#7ߟ挋·þ Ð3Á‘mvæ;÷;R¬Ý»ÒzvevÒq»=¥=)¬uSBÃS›k·n*Þ5nXU™Az–’qph^-wª’%Æa9ZAô´1þÒR°´ä¬´äèÐÄWú³RéÙ¼ºü¯•/·^±ø6"–±•áõ-Øéhë#D¶÷Ž€Œíï÷dÏËJÖÃR¼5† gá^|TÛy°ÖvL»ÅQ‹ÕOöÙ‘°ƒ¼2MÍ+ÝpÙrye-•6•lLÒŽy«y+@ Dƒ×¶¶º®¥µrz:üƒë÷ý×÷~pý Ö?`³5ýMÂÂs&ìÿa.WîæµfG ¿½úÎÿù`ú:âÕ+´¹¹ë¿ÿDz|é—¨aGLJ.œæ^[£%1.6L«jCý4À(|JÑQÀðºÇ!rî…_…þ»Ã+® ¸Å™.š˜"7`´™±•ðJƒ}`u`'_t@>ókX: b:D-fýùDW€z5˜œ0m—þªY§Ëžp_Éa³17Ã|ÀXQ'±uèÍþcVkbjGrJwrjÿömýÛSϤ§ ìHëOÏìÛ•>`ÈèÏÎ6û³³`Ü Gö$¥t<•芋µ$˜"% ÝûT”,f|µ ´.– ù)è d)ºVŸ5Slç³…ÔIOÏgnü¬ìR£ ¦5ùE,~à° ¬u%ºa;OãôTg'KNÈàèÂíG: º{ÝY°¡7=îK¸¬vlT° |]祂²mCpN‚¬¬^% k{£Ë žÆòˆõ=Ò¬W©ÃÌB Ò³K¶ Yx™Y^Ó5À+òü»zmPâteÍÎoÞ„#¹…ýežÉTkSèYÁ@–G݉s\Ê«ï{È9@¨€BG°a¹—@A؉ɱ±ñ~yé:a‡/ôaqškc åçñúè*¯zQ»råJ±|y¹½©––x‘ŒÙÆL‚,ù èú?Wwa½«ÓB”@)Ì>)t*ãn.»GÌËE+7r \V)PQÆÊugåH£ìÝn§^'lˆ_Uë‹Â÷Ô¡WA—ów0÷Ãα?|‰–‹@QV)((3ƒtԺǤå[€×Îgvv$¦voO?÷lúðŽÌ‘ý¦ÑÂ’óÙ†¡l“;Û8º7ËmÊqï7 凘†ögj²@áî¤ø3É q ö¸ÍÙʸõ%1‘{×…e>¾Ê¸áQçñÚE×k¥KëµXÆ?LFE<¥-¤­œ±pÏžRœÔ¢”€?ªã% ØY°@X»ó @aË«}4¨ïd2–î/%9|¹í§Ïdûh‰×Lß/§¥L†¯»áp¤Õ5 =ÊužŒ{`Ñ?`eéºYØ%ßÂ:ÞLÃbÊÚýu”˜†R¦=S˜°='H?, ɯýUÿõÁ‹<Õ´ÿzÿ¾Ž®ÒîÞ37ÂÒWÕŸ†¥ZÜDIò½Î\›™…Oôyëû×§ßyÿú{ø=@öÿ^ÿ§àÈ‹î…Ù¯†õx¶. õbR‚ž¶ÊòÅ4âõÑGåÉ®0M {ÿŸ-§¤ˆFÃNkjá¦1ƒ¢ SŠÀŒ;IÃʎˈ·ü/ñ‚Ô ¬˜–$âUŠ'©Ü¾ˆ {N˜éš’lˆš¤Y~’ËìÌ`¯õ³ß7ͱïñ ž™¹"þ!ó.7˜ÐZ4±d5lOÏÀ«³K)-Û3@1Ý…ùÓ ¶Ù7ÏÏžîžíꜨ©Í5‹æ.Ì;Ÿkê3ªM… „íÞמ”Бcy2›·ñ sLxzÔªŒ¨B‡úzµ@L¤ærãþJ4Se:ås¡<[´è€eÕÊ0”1銇±:]Ç ^±ÐÖË–†nKc/ XW÷™vœÆ…X§†Z»†š(›]¿” ûê0AVš ;7J!ä·%÷+懭êèªâCœÃœ°RM„ ¯på?•ü°˜FöÅ&¬‰ð£Z"lƮҔ?lga0„Š5¼‚xå ½ v$ç=µ‡£ rS§g|{“©Z[£ ëOÊÞÂÓõ?ÌrÝzåÊ;Rgzè œEò~8 „UkXæ‡ý-FÅ^™™áy¶hš‹[ÇÙV%áUY¯"gïÿò—BC¿„MIN¬®‘" pÊkoqÖ°;“¦¿l'îøX *Mس#y€Î¼^‚rJÅ=\ººµ<§¢žµ…(•¬è@Åâ%©mÙ1|D¹)Eey40ªXâLV­%FØq!ˆ‡=gÛ:Ît("%ÛË+;·£+`¢Þruøüõ‰ñëÃÃWqfºÅé)*/Îó”äæOä厙€Â\ÆöïJ!_A×¶4gR›õŠ!olVÌꌵ+³Åé óF¿ß¼ySü.söWÁ` ™“÷2ù.ÓÒóžÎ¼«,kA2r¶ VÆk-W¯XJ–Mp1;Àñ*»_‡œ]d\2BË æì“\«B„sÔöƒ‘n•ŽwXÌë:ïj¢ýlá,†jÕÖ÷z¥ ®¡¢ÚEÅkY!Ŧ¼B jXV Þ`Í›y2pK^·ÛÝu*çƒë÷‰„› ¼’üÌH_ås/ó!ÀW+®,ÒË¢Ð'0ÍÖnaì•Ë¤М½>Áƒ´€ªss×¹vŠë@½Âñcnïd¹`ä¶:ÌOSH×+¥-Enþ¥ò`Y¶A³Æ¶FËFX_ ºŒ‘Fãßg?.ÌO)”,ðTí‡mV©Wµå#}’¢Ö‚,³ÝšîWÑ9  6„ÈË#F|¹ÆUÃÿ÷ÔþyÝj_ÁR[q ÀkJÑÁ©­äÀ«û…’Ù×ú®_ytd¶·{ú¤Ís¨j¼¼DÚ–• jËòGË@Æš† Í€°ég²Ó» )Ý©í)qq ®¸Ø†¸M•O®/ÙnŽ C»!Pk?y4ÀÕ‚zR|JC{ój©:7p§àaX½³UmŽËܼ9sSœ”4kÛNô$öbfB"lq™­ê³¦¾ ‹uÛOÛZúPlRO ½ú‹ó¼ZjOyh[ìÃÁ'‰¤LmÝÇm§ìÝdx˜½¯éd?¹b‰¼¢†­þ™ì`½ªjºa[¨ô¬¹°~ (A¸T—Y X‚Iü ö€M³³FWc( †¾QQQÓÓáâ]Ü'ÛÑåÏyüøq„½zyzeæºäÜ.Ð?3Й_œ?=ý&…jñ0Øÿûû«@Ø?ü~š‡Í .‚~FØa.`;m5,·l¤ÚQÀ=° Ô2 +6!. kb„5›wsÎRþ­Ôä4™‡Swaý)SÚ &+YM?ìx£$'¬¯>d ñn¸SU;¼úwÙ縖^(~ZŒl‘¦³Ôå¸ûð#d—ÎL¨ÂùĘ“Dè! ëï~yý½Ý×=u•ãGj§möwêj<‡Š=eE¥ÀÙü‘Ò|÷óûÎçú÷ûLé=¦L$ì®´Ží‰íIHXûƘò'1r+?vuæºU cw>f4%,ÈKÀ@Ù\ò–Ýb"d1‹Jab’aS|fôÌ<@JVr ¶$ëGUû $‹öx7Íq‘&%õÚöOÃ>õ`aÙúiöxj·÷À ‘гUmDÌÚãTQš7kª6»y8T]¦© {¤¾‹+—MtñÚ´XƒöÀqèäý¥°Ì’ÿ"þŠÌë%€ozGg­¦¿µâ`%iXàËû×Ãyëþ²5_»vÍß³ÐÒgb !uzfìÊô(Ïžx|oÜø}Ðãž! 釾ûûKÒ•Ôëo¯¾£•Ìåé½ÀJTV—DF®ÖôÈ1[>/î"Â~ñÏ–W×”Âe˜L&³ÄY#ù €°‰q±w°—Àw…ȸÈÊ f#SQÊ(”iâCLmê'Z ÄKRM]LQ ¯¢†•g½¦‚Lò „@\˜À#|—þš.ú¥ì?ÝáHNèÙ• £~°³ˆ××ûÇÆ«+§-Ǧ-žC¥/•]®(%ë.Ï)2Þ<´oÏÀþŒÁe‚†í4¤µïJiO‰o}*ÖöT hØÚ¸˜’¤õæÍ‘’+6jEú†Õ ºÚƒ‡5G:jëÛa Cþ‚ì ú0O•CšÁóXÇ'#dÑ!Ë ‹J6¯ ^²Ác½^æuÅâ†l—£mXœ›ò1©uèHubj헜նÊjpöhbW‚ìÉaq– ¶ÍNé„5 ,„€A¶øƒ9am€T€i~þf””[«ªZ«»*™)–Ò« ër¹®LGùÒS²Ž®ôñÎÚ}ÿÜÜ}š:ó¤”WÍ)cÖ»W.C ðš‘‘Jub@~ÈÐ] /ë"ã+¾Ôy .ÈðÚÞeRµÄÀ^¾Ü€; ¯ËÿüZ}€+hsÀÙ¼†¾Ó×t¡\µ>§€ìø„œ·‰¾Ã匕7¼ÚCîQãUaì… Q©Z¦Ÿ[¦"x³ \¸^qî+;œ›:GÁôô{êš1ó–<àq]wJ~XgAz`³3'_±^¯d»:§OÚ®´µ‚†õ­ƒ­»½#€×²°¡¢œ·ì „EkJ%Â:¶Ç¬mI±– 'à1[€×̨‡R£VÎ{µâ˜©î(Âñ¸ ó(P9?:‚µ$¦FmÙFé ) ¬wâ‹€˜Í—ç»ørЬ"Éiu)ñÚØËR tÐ UåáÖÒòf˜è¬xÑg«ªn­}^%Ëë85$-îj;Ï¢b%XSZnb4<<¯ÀꂌªÃ(Šk^9ºméüÞÍÎÎaÑÇzÃë`åÖ?°ìó|/<ª¶z9éÖ›*Â^›]vôèQÍgQ¬é"Âdi°ÿLF:¯xJvýÆhЬ0Ìy •%{wf”5î¹ Ls¡‹ ç,®2°5Zœ.;eï¦i®G}TsŽ‹â xûâ—¬ÙÐÐG€°Tô›rš¸» ' ÎyäÖš/¯„\O>J¥d§DÁË5¬>ïàÝÇ?âòÏ»RKÚEËèÅ Ë×€Q2—Æ@Õ5TÒÝËÙ‘=k`{ù9ì+`5+ã*ʉ‹AµK|M”X“Ž@Øq›õÊéÄkKӌˉl}¹nüHíxuÕèáRÏÁ’‘¯£/ v¸ÐØŸ›5°g÷þL°Žì4Ç®´ÖŒ$$,jØ˜Š§¢°yqá™Â26„¦­ †°âÎcMÝÖ–Ê¥B5Zs™†J°h”&aëîøä¬øg¤Šñ’Ä,##HQ`ÙqûŸ”Pë]yeí!ÝŠÊ´±·æ§ :‡ZQuR™îýè6ñ:^éB,6d›R®ƒö’‚ œNI Ëu¿;Š;Jª¥5(WQY7Ð3bmp›µŽ –°b¨€ÌYÏÄr Ò½üG]ÑþÂcVdÍõë³€E+YAî> *ùL©[@$  4)ú(oáôè•+o1(ÿŠãõü…ÞöÞÖ3½Žî³N*mp~+wutZ©`m »bÅ …¯€¼»wï¶RKÊó1E÷ ùp%8÷ue,<8®HyçjX/‘å†öFÈ2 0rÉ-fÕRHWqM×¼uKŽ‚7{¬•Mañ“ôŸW y•.í½'dÍš5ðN>AåÕÞ¡¯é˜2Lh•öš¸sªyÛv$vïJëßkª¢5X&¬ÇÆ¡€­;䩯ë®*¹|¨d´"o´Ì –ð:¸/ƒ4,à-=Þ–¼É¶eÎt%E¡— &Ì…„Ýöx°„åôJdAâº~C~lráÕ»jvKÏ +§…Ía³ù8¡”Ë<³å®Êêv¹‘nÌŽŸ:5 gÐ/QÓ>Óròê(€œæ5l® a ¢˜i륕¸m§‡(/EtµtG™Ü*C–…€Õ½ÒÃõ¯ý$γáJ‡¶QWûØ"ËíÝ++€z÷þÉ}=g|Àzs„¥¡ééqÏ•¡I4OU[_¹.š¨ºžð*@Œ„NZÊ6P¦pw`rØ© C£ý”rîªâd—T±{à ,=K¥º”ÀYZ&Ë=°°ýÜý ønÂC@½æ½HÝ T5 bUZPÖp¤«µùÎŽÖò×dÈî±?.V3%ÂÒŠ,u}`ñâé_ ÌL—Hç yi,E¿òð,¯).‚¨ H›,l#ŒJê<[긮¥¶â@íÞÖ}Ò C{а}?Üí±ÛÐjÇëkGêÑ3ÛñêJÀ«»<ß]Îü¥9@ØÂ=@Ø3¹ÿãôÐExu2 kÛ fI‰­Ýº °XãFô^Ö®XÐÕò0)©|@S7ÀœÜ"ìúÍŒ°YÁ«âì¦-™ãÒ¥•`,–+-cŸ¤g³«Ìûë‘rœ,›¹ê¶4œ9Ú€^×êŸuWÓp¾Ü•[pL ¨Ú],cº4ïùcÅe¶Ê—PÒ”ÅÔ+Ï0ÛÙ;Ôþ‹ R"JµÅ»äÞEÙK± RN7³@„…_À„½:¼¸x& ^y{Sé%¨¯¯ç’H3Ú„Os ˆ0¢gT”ì÷¸’%ÚFGGÀóvt9¸ìåQYCÃo°Úë³³—8^ű”‡»¶º”ýè*LJ@ù_¦ì¦WÉŸF%+«K€§äCªšÀ\ á2p$\ö¹¦+(È>.)Ù縜ª’ñ§Z201¡JIÉå§›çƒP²œ°ö{&„\„W¯(†—ò¹ß'”rµÁ{lc¿Ìð€;²gÍèÜc 'Á{ŠÜ1ÞÜÞWÔ¾ZRîK[ÃŽaAxvÒúö@·¢t=Z‡xe¢•ÔëhEÁ0²ÕDxí/0 åfœÉM'ÿ@»)ÅiHqâm»-ÏÄÖ<[6/.,ÃkÚÚG ¦Ôy®ö¦7“üBã”T—´ª•8X4[@Q&m3bȮ߰=|Cæˆa¯8g©ÌpÓÈu¼wî*ÅT–Ì0ÿEG-Sr•2·@ÙÊê}±·èØÍÙ_EÞ†Šj°Ýå|µŸå‹q÷xú¤dÞ”S†ç3$‡/uP·¶!Û»(ï ú ø½»víšÓé”{s™o<, ícj«ë@Á]›-öõÀ†ˆ„FÏë%À0†K«ËFyî ÈrGkߣ>€td ÊÎþöêôìf/”¦¹Tx=yú¬££Ó:Ð ç‘Ók­2Ã"ašc†­ Ì^E3›¤gá$É)‰_üòý-§ìŸM KÍú\øåT²ä.ð`,Áea®Ÿ+S¨×Ë"!R˜[˜Ñù¾ÇYΟJD÷À–áõ1þz•V2øÂNî…öÎòœqÙlÏ$aA“¾U]â¶€z­uW—â¤VyÁPE¨×¡rœÚ:ÿúΡðÚ'ðê0¥^­†Ä†ñ–[ë¶ÇV¦¬/IŠ›³:}ÍŠ” +âÿZIy¾¿Ë8nQæ*EÂöŽP¹lsXì}0ÊÎ/·÷cD•õ^›¶žUÉ&ÈFÅ’ß ™CVZ›”•ðô¾ÄgÌTQ†Š~çäÖæ?ß_v”)ÖÔb.×,SeVv)®Ûf¢|™»ž‡ƒóþ®ý‡] ÿ€]öÀbƒ7=ýçqqíÀ[^ÎRÞg®û’ŒQÞ9ƒât:ÿytÞh­îÞ3ÞXW_› §5]ž‰åss÷©§¹ÊŠXE}_®a¡:ˆ40’Úà£:…7VÑ7쥃iŠ¢%¶Êk |lÏ@' X^ÓÛÖhDfd¤ÂÓ)¼«V­­ ²´¶æ𴨸€kXêÀšï2ïÅé8Àñg9?¬fœl‹¬Â™®ðp¥­‰lb[馯2„eÁ¤Î5,l±î ‹O‘  (ÎŽôW©x»6rÈrÿ@įÇÞø™+ÚV”`âΩæÝÿúûŽxà+ûËòÝG*‡T U•æƒh}«,Ÿ:ÈÖÂ=’ze Ò¹?ðêÌN¼‚€=¶#4ì‘gÐ ›nØøxƆPòÀÖÙÖ¼ «=uv”ëøÇ! lCó ¹b÷h ¥‰I†'6³BÙ1¬86Bvkô÷ãy*nâ,M…mz*#&i'ÅÏJ©dÈ{`Â¥ @U–÷@.NeÀYïF,¡ˆþÙýzŒü'¥¤¿:}Óİl‡¬â÷Ð$§é˜ζ–âpi*Œ’ÒbÚ×&z^Ÿ„-æüîuÏKXغZ«TxŰÒâ2êÚª "×éj˜OÃâIˆŒ á+Æ}Ì-€³•e ìÈ{ÞÝÇÜ}þêǬ³lÇ)ÕšµÔWÇ€¤ìÊ€&:;[­µõ•ä­ª(D¼b•o µ¥°-ÎËý;S~®‘<¶ÄCšiÿŒvJôÉ2%‹îæ‡ ±IäzŒøcp1XŠæñí #lÈ2­Y²ÏM(ËáMµ€%olÃ+oør³kCò†HhšåÇ$œåñ°åKÒ뙧уå™D[z|‡)½»0«¯<ÿü!­e9`CEûÐ-PlFª‚z-0ô¦“ì>ô¸²ã]Ù @X‹1lmú¦Êg¢KR¢M[Vá’Ù+ÓÖ­L]÷pjLX0W+\cnìÓ#<­5flì®:Ò‘[Ôœeª…Q|ÂöÆÆ£”Äš ËecõÖD*àÊ]ë6§D³Z)Š˜›”-U—³ RpIübªÙ¬äŒ|£¹¼à…†ÊC6ÂkC£´¦ ÛâÂŒ\”‹ ;<<ív_Å"£XýqgÑu€µj=T~±ï—ãT3\ªFƒ‚wd^Â~øá‡@"ÏdªÂQê•>Ñ›b"Þ½²Bi€á\ý锚`^/|äû;†/ô.ÃQv|'Ü·),@–öXêk¤ê‡By. 'êçì$AwƒÊz·w¶à–ôÂCá<«Å„Üf³wU®„ý4£Eœ­¨(®8˜_ŠýÂâ ‰¶ƒ&Ä>›VàEJör“Ѷ'C©Â•HeAQ‘â.cE€Î5Úü[Ó܉ƹF»¦£Àw™ÖpS‰WPÂ+…mñ;½×Ã.› Øw€U}×k/ʱ¤'ºv§täfu!X©@[ôU¯Å»½êõyÂk¦„×½i„W›!Ö²3öhú_aK’0H kذ2mmè¶ï®L_YQd^ÐÕNz&μæSÿêØI–к¾§ô`g~¡M†¬T) *6f½¨–V=ø~âš'žŠðfìNå¶~£´]÷d*Zv/H»% Ë|¥ç€¶-x¾ð*­\@ßë9\ÊuR^'Æ û¦,ömÌÕ=ÂKÎ0Ô2mK&óWÚî{ËÓ70¯†½A{œ®,õ|×ôô²Ó¦,Cjÿ€†`|Âär¹®_¿®X5«^©L~,¥Õßp<~¢V„©è%½4{"T.Ì50:öKrœgE ¬ƒ¤^»;¯gz] aÛÏ:^®Öf ,A–\«¶FËÀ¸HÅl`KÒ˜¶j3¸S;p¦³v{¼Óâ4e¶åe[ÁH¥R» ÷€n(H' ;{ 3¯ûS˜€Mp<—€\Æøcé±µÛ£AÀæ%D˜c¯BÖþ÷Ô¨•ñ‘¡ýƒÝ ½Z>K“Emì­(ãjíñîªÃgKÊœX,ÀT)¥ÚBÈ2•#ÉØÈ'dÚ&FDm’äí÷±b†$&r±@yoÙ‘‰’Ÿ T+!ß³¿ª¸¬¹öˆSò½2ç˜õúíÎ7øJÜž"ìôÈ;³ž·±ê lÝ×F'7òŽÄ\f¿“Ê%L\sOà~àìy¦s°+!òì…ÀÊŽSÅZÞØP¾^VòÜ”fºÄTÜ_s)m±°d¬è+S ØõâÍžžvZ_À×qÁÎQ¸Î t’‹ ÛëjgŽ2›ËB-*.€›mg]„W+ñ”ns¹°…NI‘™œ° q‰Ÿ¥5]Á‡p‰°"OÕf ׆ ¯÷ð_Õ/زÆF1‘‘bøü•/^#9ay\9r‹æ¾Â³NØàœÆÆfvf°ãLnJǾ”Îý©í¦x§)ÌškÛß°kSÝô”Å­Ï}j ØôØG36<’þpüÚKÌšþzîYÒŠ‡ÇD×,{€œQe˜¢Vq)jug^™'¦Ì,Ëj:«-ˆ.W¤ÍÈïoŽØ±! ëcë6k÷©¼ö,ö•dvçäÕ•´#^›0G[#Kyaä´°LÃvvõœv÷¿Ž~X,L;9;ñ´éßünúßf¹]ùÍû3Ó×Á¦§1i3u Ž¿py}¯_VÉû¯qp km2ú*YE\` ^+Ë+Üc£AV‘¡Ï?P’hãýüÜš‡Q+‚•kX &€uÌ=Àj¼Á+pžÁ ®W[OJxE°6vt’u[á¦ý„Ô+@“bÅj—p¤’•WøÜd•ÄlDÄ* ,tîªJˆø¡iþaÄ‚ ü:÷ú <–ã&°7V*®),¬¶]ºÉ€ˆ†U_ëã7ÑÁŠþüâ©,`]£{hÏcü'äÆOÅPøp–oÖ—v5oŸòYƒ=Ý0Æ)j5lȶì€F·uíK¤‚b=›Âh›Ò–›Ö‘›†³[ ¯ÀV‹a<¶öÙXT¯IÑ…[7o‰0ÆEdnÃ9.FØîÞvªã¬ü׸ø»¢yµí½#ŽÓÜEÀ2³4É„}™- (²K‘U†’ägKRr€Œ`€N¤HXm˜n ÞñÝ©Ø"ØÚÍTK °†¾K^²áÚ­¦îf†WЭ`"^]rl'¬Tý{âwž½úÞÌ3Óÿ…H½òþ•ú?®OÿûA‡ „…ÃàøóçßÅb ¯»ûLÈKÀKdíç‡Ó¯_‘ü­7•S[Ýg“Õ[†‡‡oÞ¼¹Ð*2@@$ìè(Jù+²FÍVî+XõhØÈ˜”¨¤«8Á50xÊw‚ ñzºݯäEÂ2w Õá´ÙkŽÕWÀÁv§5ìábàì¡ê’Êj¤-9¼„­(ÃX‚ò|³ÙH±wpƒEcNrh’g a­bHlˆßä/nÿ´ÅX™†öËsDC¾ÇzñwØÂ•MJɸGú½&笈Wñ<"jNXE^?5•§ÓƒjUûÉhXhM/š,›`¤ß¼ ¹‰+Lèce¨Eàvýäm‚c?JW×^”®c¬ÄÖtÄkéÖÇó“# ’"sâ"[V'?ñ5`+˜qû&ÇÉÖîÞ3ðUw¿=²€§±P6à ðŠ`mì«k¨µô#aëÎW¶då®RkB²ySpv­øbþ¸ˆ¨8ÙcÀµñ‘ÑÈÜðuRµÚuO¦bɯ9Æý•yE •‡]”Ê€9šåd†Þ¢¯^à ":Î Ÿ~}ì\?«ë5:ÃЧ¤Xßýë3ÿùà• ;óï×=Óׯè(“ÊÒPEñygºucagkkkmuiGgíµÙe³W1âÌíÎgEºJ;ºÚ±îì|µf5 ÛyÊy¦×E2Võ-ÁïÅcákøàMˆ­AõÊ<DؾÁߨW¦ çá÷tY;˜Œµ¹,Àt+ü*j«W’£þ0ê [k$mKØ3 |yyBJÂÝ[ÍÛúXD¶*fºlË>'äq #{Å’0EP[;û9$ ‡ì¯þŸš<ªAMXwv¤b'Gªp†ÔªV¡g‰°—µ5ì” $Ç„d||„U¸#µ†”ÚôM`Ç2cpòjO<©ÔÖ= €Z› ÍžÔ¼7 :Çv1¼2ÇkeJTñöõ%Û#òâÂÍIᆤˆŒ˜U¤•½sg|p­¶3=§á‰äZ¶>W½ò ââ!X, ·¢¾«¢ö4. ¨;SYÝYt¨ [ê@%{à8A6ÓXšùl9 µ,0À(®¯]¿!ÇDl&»Ö?ÉŠÔ‚tÍ.1¨ Ϻ\ýN×문L€éVÇ? Uf)Ö•…ÄJÕ½˜C–ü­è+˜ž%Ô‚ÁÍÉ»691KXм ^1lö£í] ;5ç§Cá%­Ê ä-0Á‡­kÍŠÙvøWldì|;#,PÒd2)¾>Œ¬h» T1 Â"[YeYæh?}Vr¿vžj¢HX 'ÀØ.Ò°O~X—Ë "×RK À*Ë«êËlÈþ¤„¼¸§¢¸¢¼¬¼¢ 66l~nânñÃ’"#Âò™.uœ–aCÄÕV÷¨}²âˆ^änˆ \Å{Ï9Ø|Q–ŸASs_¹_ÙÀGáðá©íâœså›YMvQÏV°T #B syÄ7%×ËšôõHâ]pd€j†â­Û•š9û,Tª}nbP±B'[Ò­µ;¢+’­ë+·Gt3?A6õ‰Uˆ×µ+ÂVÞïÊÿúHjzjmu]G[çù7‡‚‰%°Ÿ”ðŠT­î+ý‰3TUµ—ì,=(ãµÈÆ2®6d™jɰÞÌž ^+a»\mVÓ&ⶤ²µÛåôÙ%æÜÊ’2KùOìK‡ÍÖÝì$zJºÕÙçCUV6‘ç„uµ 8».´ K06ÄìØ4hUB-lGßž{GŠ"èûå8ÆÃžåµÂ†ðë(}@ÆyÁ:)Oþ˜Iií<Á~BøGNŒïè´’¯ö-¥Œ]ã3C`èØÊçµzÚTS[è{íìt(¢µ@ÀÒÂ-»ÓÒvÊzü•Šêšªšš )¡V"lu©Â9[u°ŒMs}‘óàîñLPn ‹˜_Ã)½.Ñ5^%׿ЂÊC`jÊñª³b„–¢Ñ£¬—æ8OiÛ,SUm\Ïú‰%Ð,·3¥šÿùXûÎ;ïð7EtGð~O—³ÖÏdézäìöhÜÛÚyʬ$)²äéÈü­Ø°blVâšÂÄH°æ¤°Ì¸Õ `S_ýí‡ùkû…{ï[¾|yBRb푚Ž3íÁ¶áĹÚã½T¢å*+ÁBe¬¦B+€Õ”ÛÀkˆõX6,ÙL•†½XÅ‹J¶˜QÁDÊ“÷ü1\Kù\Žw€tõ)Ó°"OY9ÖiC_’qÉflí’ô,zW µ,* Dë°´ Ät¹¥" ÿ0d³÷z5„Ǩ˜ õ§4Ç(?Ž'Ì/,Ã'o==@C™ÀͰ°0Zm%x`ç}ØŸ—Hrc³.ôò¥±|qœê´›…F‹eesH­Öæ5@U)r땪ÚúCÄÖÚêbî(÷ ‹ÅlEqeyXÐÑ´Dó®òLÁû[N9 ×D’–g±Ò$¬8`'VÒ/ª¦ÃT$oÕK•pÝߥûî[fܰª81¢$yJ*}¬["L[VåÄ­Þ»9 ¶t¥ëÖ5ƧV·„eĬ¼Æ®]©^D®ÈÜ•Q[]×Ý{Fán¦:]7çæ<ÂÎ’ƒ­ù¥Ъ0À¨ŠžÖçªR %)è(£<°^K/”ªï*ÍȪ€‡ aˬ•ÕžL«®AÊquŒåfÅÌX,… ÊRŒlÅڈ׷DȺä°ì£7QÛìxCÊ0ÛØAI»+Ž8*傘Á ¾Ç› ÆÏuaJ(Ÿ!Ki(ù@u(\‡ E¯¢ä¸æ¼¨Ú3Àß}…çÝ×;¥øØÑuhˆ‘ˆ •JÃ’‹€ØJ_œôôtÖ.I½ötžîi‘¢²©òÔ¨T—„Ôfvæ8ŠÛu€WK} n6­´ÔWÔÖWÖÔTÐ|éV0¸ :5ly©Z³Ùz9D+¾ó“#ì”üÚà zã¢ûæÅ±›—FE›»¬Ü¼ášÔKsÄ8è(î Úkgë 9^ÙùÞÂ7Ë_ªàÞµ[¬ÿܲ¯õóÜZ"dçN¨W…Ù…í¼fr'üÕ,{¡4ÿ&¾7.²¢^˜•ÆÍü°µ_r^œ£waîâ(˜¿—àâ_$Íy ®a}œ¿;ºÚáÕ£—è°¯äÄEælF†š¶†aÂ-«ÍO®&Âf=¹ŠÖû“ÂŒO­JßòhƆЈ°W:~ìïýÂ}Tz¤¢¢Âår ó{€U¯s¥a>¨ÔL#«zMy„¥®”Û%&^*vÀ¶¸6æV•–7ót×Ò*,Š8… ÛåŒÜÚ~qeæ©_qÂR,Zø ùäê^R±Ÿ Z›êÄH^h`¸l¤šá€òê.ò&3kÇòˆLM—”[Ib/:ä6ú‘4Öã°UJÀP08͘—šÊ‘Rfç½`FÅzöUžÒ¥»Çñê«[†þVfv§…éÖ{ãqà©¥¾Û|Bšàª­A‹œ­öz@·Š´E'lEaMM"UÞ§®aÇ}ò’–  òDÊ»e¡×¤zð(‚΂âa ¯ C¹&$q«?õzî\¿¨dakŽ]«Êù+Éð‘ÿ¿ï2^’þ@¼‰Ä?–Ĭ i?BÔ²Åfj/°Ê_qSôS푚ööö·Þz+Èo;yN‘­Ï–[qÂ*ywB’Hº)>só“;¥lšר)poü¶½ðØü-µ¯tÁ°Ü©m§Ü§ÇhØÞÙ;ÔÙ{¡ý¬»½w3º"aÏË)/8dÂUIárçáÎI%gêX±â2[^Q…Ž‘“×°¯"ëGUð#a*D5ŽŽbK~‘í…f¶m€=9Ï[Ì…óÔšý ;4Ülí’f½(`WmyúGFß r‡£˧³Èë*¬)°ÊZÕâekS-xʾÔ0¼‚Õ©éz¤+ªWFÒºš2/Rk‘ž… `+ÑWPp¬ÞXñº;ÅJKúD}{i¢5äw^=ÃNä•°jö±„ùÉ}©ÊþsšUåÄY.`Å)vs÷Ý,"‡,Ÿý”.U5º·jý!þ¦Èø~õ¢ß)ýÀhE#kÂñš?‚'’½ ãòQzOÅ|€Á41: zÏ;q>g†çv¯ß°3ý·eýÅr0õbeá†OÔǽ÷޻⡛7Ç‚nÍÏ-¨­®éÚÓƒ!±¿íâpã[ ¬”|€åd¡ŒY”I€B¯Àx:¯mH…ƒááæ‚# aí¶>P ˜õ¬ûLïä™^O÷kg^é~ÍM±¨è'eÌå„mí¢¢[ŠÈf× TÝ«±WªèuØUô'V9,´˜Ô³_²tñ`†‚C wg>W%ϳᄹ’wîÁ{—&a±öW}%A–"«`ø†Ù[zÛ{zÚÉ-p~¨ÿü…nÉÍê]kwµ6Ó,–͉nR¬d ¯Ô­¯ã$=öJyëÀ­ »h¦Kîb굘‡ÀµXúÉVႸ¶õò ¿¬”©@vù3Rp8ø•4ldàMáá¸Ê–U‚é©èaáü|¿/dQ½ŠiŒ2D7kS¸V•žV¼2ÒŸ «†LþHsÒŒ©Z ‹ŸQsÙß·4ðª\Å4ßÕ}ºÇn·ƒê,x>·ÑŸ¯ÛʰЕ_t‚=ø—aáÏåËA¥²8/>ôÐC«¿½jÓ–ØmÛR÷ìÁdIÙ žIuƒÔa°jŸ†¸ô+ñ™½(Z“ ·fxWÄ’mØê“Lk]ril``$mG[§åx¾ÔåUðùƒ-…mÕ®7ÈÍn·šm'­.×Ï{Îüsÿ›}äü >6“7J!ódæ÷¶¤È`M”ÒµHZU^Ë¿²>ö»±_xxÊ.Ó¾¸ÂÛÉA\pÖÝý:¢R"A2^ý… Kó]è“=5ÔÞ‰nÙÎSüڂ! 2ÖÖ}¼K(Öý¬“Õ:D§*(YSÁQV~¦è `e|_bJXs'>m–âs™%É®ä%«a¡•Ih#·,¸¢•^ëuõõcfBÄq£Ã$é*á•<\œ’¬î°ärÍ1e¤&§äš9Li¿D^¯‡ªKdËü]ð§¢aµï’¢8™‡W‚Ê®Æ=±c š4Í/Ø*4:æOÑT<,¥‰±>ÉsŠ­HŸò'ÚÝ=Ȧ¹˜áÇôkˆW½Ž„HåDÂZý\3mÙZ[¶ˆ”»uŽ¿>ÒC.*TäGt0é|:¤å/y}†Ú>_ß_¸è±Y2ÍçyŠ‹sÁ|ÔV“¹âä2Oø€½04 ÀÅ_2¶å7Aó¾õËóÃr4]:ò]#;¾Ðo;§*‚õû[%¤Êõæàýð(¶Yóèã#×"dc’2²²K‹Ë-K‘2 a)++ål¥z`ÿϪ¨¬K»9›ŒùÞâ>YŒîbÀmvXlgjc5šÒ7ƒ’ÅÈò ûXãbòY)Gíüý UgŠ ù%EXøö€D-.* P’S•TjG§O ê\¶v‹ªv[OT{¥ëO«ù2-opëaŒÁ2™3ÒÓÿ‡Xz6**Š8 x¥È -@3ÔÂce÷ëÒÒ°„µÿꆂ¡Â”¢d’)7Ó–`á>1råÊ K{‚%ìoÂC!W¬ˆWï•° #çì¹sýÜ3`]v„W¶‡›"NyEj\|Óœ¨Où³ð¿Hûç¤Ñg6ÌnE™i¸(]žZÔòÒ*ßÓ~IC&[ùÄ?Xž^ákkÂ{}Y9µˆo)æõšÔ ­šË€]°w~=>ñk¿k‡¯Ô”²üjÅ¢öŠ«}â‰4’«‘ëH®Æxaºfýªp4¤jø÷""×A?lMtÄcëhÿªðM`p$0T$ˆÊ’2KM½Óv²ÛÑ֠亵ûõ!Èž~m„ËXµQaÍ›lÆlˆR( ë৸D"¿H 2“& y%¼ Ëy¢b拇ýt+:Ü®¿/¯(£é)Ô§YÜZÇø\–«õ8!ݯ5Œ¤/“n­;* RŠc…» CJr"¯à½b%Vå’‹t=ÿ8gqqãrMõ!xxy÷ÜÃóá}ª„½©­a¥/j£Pâßa’±>CÔyd¬ô@Ð}˜ªuî¦4Ä9bYW$—±î¦,Yâ,TÒ•ÂP]â\?† úFoBîϤ5ª|kø’­›š1­ŠñûqºIt0üÁK‡ ˆÅ¾ÖØ8'ú 4~¨X°-=\í‹Pü¥ôãG~sz¿š.Þ ¡†Lº©‰ «È,܇0¡^þä4Z€'⑌ˆ¥ú†QqÌ9àë‹!Ý\õhY$,œaKFÚv3@ã Ž8-¶–>ŒÊ:+Us!%Ëʺ(Ázš`úš·Ž,UéíŸ<×?NNÒ”^€Š6ÖÖ÷”Ww–V´Rö/г™ÆÙíYÕhñ±[Ò¢¶$aÁ– —@ ¯ªŠCµÕeVe•þö¦ZÑÓÊÍÑŠµa*Ë h†êpu%÷Ÿ¬ÔÄꇊßVÑoPY]¢r¿Þ£¸fÅ÷§¦aÕãY€£¶C iΟ³•!à#ñ°æË£ò Ûçlábu £ò®DXYÉ®%w*A–? »òÞ“Ël%é*ànzÅ,ý≋4æ÷æ$‡‰~lDt‹£v¹jÜY¬á¢wÒïÆE7¼,£'FèO0üÅ‚ß$|ê&Ÿ Fá)nðww2ˆ‹VŸÌ·ôv5Ëq«Ýôä3±”®%6Q¦­œkm"zZ×l\!óô;Ñ ae¶®_ým©O2vÓ–ôÔm¦¬ìM*JKQÌ6Ûº©<S¢çkc"I}©ŠÆ…°¢ ¼[, Ó/ùsQØv ±PÙÓÌ9ÛQú—äœez–R%$>³OÒ³LÒFmN‡Ÿ+>}/Ð@xì(¾Š$-9ìM ¸çDÝñW*䀺:ÌÞR°ÆÅ%„=úIÔÐЯÉ­¬p÷×¼dýšt¹{!^—¢— ùâˆ, äî&-øör h*FÀ++à ꥹÆ9P€ ¸Hëš5T—ëq©«"ÊÆX„æ„”,†^ùŽÓ­‚ƒxwÈ2«Q®þÍi{Y¸iPMyX«þ9‘_Šè`R°ÓpQ9Àç~[ÉÛ(®Ý¼42ר¤Ä±ð¼$ùåÁ„÷—/*åÒÏaÇë8ï/4ZëÓmšßö„í?¤¹ ø¤¿¥Ä¯J*}ø½ Ñ2gÉÖ0,õÉEù=òÛbEx8(Ù Cîž}è1¨Ã¹/ŒÅø-‘¤çF©CNѼ`}sÂ[eK(·…‰²Æ ²pæc'û0`–q–&ÁäD‹%†’”yð&>ƒ•ÆSrâ“KÚëÛâ1µ`M©<[U'Æ´2oiŸž"jeyÕªU«`>B•ºrõQYÔ êök±±Ñ…Ìt*ô½²èÀ€W¸„‹jH5°•¤h£÷›O^?ÒtŠ(.OpR¯`âì/× Œ€×ˆ€H~RЪŒ§ËÀº[”±p³yO¤Uð]º/IdA½)û7ŒBx±ÕàSÅ,M—ñÑ„"œóï¥Wà#«ÆTþGa=“’‹þ Ç?úd¼ÆÅTö¾c̳YQíÊÇÚ{ö•cF˜ôœÄ§Í,YA& –Šup£Ÿ >Fž¢€M6§¦çcfØb œÇfë¦eR<,v¤ƒ\Ã^‡ÿ ¨:<<Í·^Ï@¿‡/cx½L‰ ]@ÀZC„W£ [T¿¶y ÕÜI^‚å-øšCÍf# ê¹a‹Š²@Xivë¿ê•{f3v¤³ ²¥÷/\—²†•‚·.ÎIny*\òÒÊ0\üÈ}ù†BÐñ{)穳,Y½òÐ(€¬oÒ¬iYÉ~N؆îI½úˆY¦d .45G±P@7-aÔ*W ›<áVÕK•”ë@²Ö˔ՅŸ_rûz£PÎßsÜÀN=Ÿªæ—Û,–.{Ë`G×[íaÁàé0 e©Ù¾_Ž‹‰´Ï_fÛa /¹ýÒÁ’€•&0'¬KR¯–ý°…>èYª¥hwõႪÞ;rúµ‘;΢•%Ÿ¢\%¾`.‘Å,Hј˜(Qº ökŠØ,øæ.»µ¶4 ;NnŸ%L¾[…(£€YR¸#?»ŒƒßËcp äErQ=A¯0N'êd³¼ÞÒÏIeC¼J*(Y‰¹Öç"½—Ñ4Ƕ{Î{“Ö pÈ„•Š&`:ڡΕ~EÞôÜI^‚ Æì”ç+Y¤111áá‘«@ÌÆð.·šššÀÃÍÅwa)LÄ=wóæÅ9ØŽÞÄÌÐÒ·ºQ˜Sj¼i—cì|5­,o^ÁxÏ6U䀯Œqá}¯Šb–[–wå YEtd}~ ä›r¾‚A€lÿ?÷q%ËpÉ™«H#»†Ýcö¹9MˆËýHÚ)šß‹‚ºñ¦tdÓ ù±7øb8D£ýÆe\°¯ø ÔÊ7o QJ ¿mü-ãÁ=¬8ögÄËãyáÇ~ô"âU*rõ›ë`Ó×߼vÏ _òP•ÖÎSÃ$i)  ÖTpÔ€‰e+3öVÊuÈʳÌUy…X3¦¶¾Ýv’¥ƒa_N3¼J+^Ÿ”KHËg{z¤…¶ÀÓ!€þ¥+€WÉ'ËŠÅ‚£á<]§ÇPb»†¥"c^ë~Ö[ÌÀ}ò¼­}€²Ó’wB>íô§aƒo-]Mm§Ú-õÇê+€¶Ð9úʱ†£µgzþ±£Ëñq<ãÒ!ìidç.!dYB<)ÌÀ YÕ–ÜŽY'nÞø•„+ð±&RW^GK¾‰~Òs¯õÑÍò—*ø3ÊÝ#Fn) K×£r¸ >'Ì)|ÓÓïÑzY9áìtE•YÅïB–ýrÝèE°6~ä…x£ó/¾>ÔEŸ%+M/—…ß*ùáÞ°6ÚÏe½øÿÄ——{Œr؜îÂJUü&ÿõ­±™Ñ·‘°žß¼Ï˵¾7óç?g=Ó×FUß’ SÉ ÈpÊ®±ÏÊjÕ8˜vFp¿é~o‰öãnÜÉ.??óS#¬æ·”NÝ µâÒ/‚ŽD IÜÝ`¤°ó0O)k„OA-JË"U`­*?wîܤ¹/u‚W8ûÄÈÜeV,à„£ N(f½¼¸×›ù_¬ pq  ?wÂÍ!Ëœ°ï’VpàÌ\Á\´!¾W®.À®ÇÍKÀ3Âi°OÉÂàtÓ[ Ñ¸hœ}ðgZç(œƒøk½$ù–{ ˜uð3¦a©J ;:ù;аÀÖéÿ¸>{õ÷×f?œý_ׯüoÎLÿÜ…•±aØ~Á±$$s4"ÚŠk€óÁB IDATµyg¡¼‚`ÐA{¼£ÙÞïhë.ã¢XÁ-7‰6;ðÉpm‚ë<,ëf^‹±Q4rd%@ÓÚÙF6)w¤½¤ÚYzÈYRƒñ•õÝèuH‰¾^›8;81ðÖ@ön ìüÆÏùøg‡°Zžð¨Ks£¾…Ò¸Ï:{Ø´Åx#:¤E¹.Íã_¹BäRçroN°Â*T QËúÂÄ×n•¤ÝƒnÄA7fB81‚¾†9:Uå¡*z AÉJÏËu4UIK…Sì(YÑ—i:ç‹—Ù~LjwÁPÝÍ¢ýi{ùòœHXf#D|‘þbÙB­àUÀ_2ÒÎâÛAçàS|{~ø ÉX‚ìµÙë€×Ùÿýþïþ×õékÌþã:èÙñ‰«LϾG~ƒöÓR€,Ð 3·¢žµ”aM—š#¬ ,+$CŒ£V6I…å0»6ÕÑz¥“¬¦á°Ç~± ]q»¯ŽýE4èF5=ès:Ú€°ƒR)òê΢Ÿ8¥‚1UYÌÛ݈œµµ 9O³<2ƒïÀ?EÂjÖ_èzpm|bžbãS‹>µæ·cI–—_×|MG˜’åzþ +;¯§" {o. Q޵qøîÜÌ•÷Ä"ÛâL—H=â59FåÒ•u¸»`7ÜK3NÞ18wž6ÞTC–_ /¶È½±ôó û7ÂÕW !HW+ºVÑeÁvîiœóó@éÅà)]°Ú þ MzÔ©ª¦>“„Åõþò`œ¸E;{ýÚÿþ8 …>윞ù-ŠÙ‰k;³÷ deA‡T\ö  ¶U?í´4°Š2]:™ˆyú¬»“y])-!–ÞbK]QrnEcU©ÒZÑÿë÷à‘þY¸H ² c»†€àDØâÃíÌe«fa ýb*Ëx'¾l®aç)tõžéä¥?u {ÛÙª†)*Dñ¹äÐé[z._Î.¹Z³Þ×bÜ#æjò¢ö’T¹d”¦Å.{çÁø$ /ݪ–«/¸9øú}¯Ÿã÷JáPšQ¾ýª²OÖ—­’I%ÛäGIQV¢zvû ¯CöÀ ›Ÿ{üÜ9 ²0«‘µ@H/ÀS®HzóâœÏÒ²‹>k$ï­0'¸h¥t-ì‡A»ZÁgr ¼š”Èõ­wP3ÊS^ÓÓ³V³d³×gþóƒéŸe9 ˜ëèkvJÓ_(c«¥Øþš†ª³ek0ÆÖ·œ¯^°þC?Ü Ê·œ- ¢ß%/µ°R†íµ/wR­ÉSаtI¿¹ŠÎâ‰ßqÈbHY×çÐ]RÝAÉsŠÐ Š›%ÔVwÀÕïåœ]"^‚ÛXðX­^?­ÖòÊ~Í{yÍDœ“}µ´S'š¿â·x ¬¾õÏ}Ìw‰žYRp>ô¡›¶9ñ¦z1ÂHãÑ#!eö³zC¦x<)/íŹq¹˜_!‘¦¼.ùLXIb¹Ñ{©Vù'¦ÚDù¬6)½ÎÅ9ÿ<’?èÿÜjü3é%€O”Ó)點×PÏ’ÇlúßfiÖkö?%ÂÎüçì;ÿzuÄ3M„íì•’}¹£â¨$ÉÚþO£<¯¶X;¶®¾«ò'˜‹ÕŽm-)w Ë]ŇÀÄÚú !–dõÄ•k33×à’ ?>quä×W²ýžö³¸^žŽ§}¼î;ГÛ`~ûæ2;IZ®gïV?ìÔg™°þ4¶¿ß1?DFIk›[¦Ê\Åo–¿t¼™,LõœXt‹Ï­kEI£ry'AV’Ý­šã‹h…•:pâéhÍŸ+£Ð¸<Åñ$Ã¥ñ»—b³½+„Ù?ï‘Ò1oj~ŒÔ‘EŽž|³¦æu?Ý)„=Î+ã °†Æ«+oÓ<>ŽÍ/LÐðÜó6ÊFàHZnžékžß ‚û‡Ñëh>Ö™ï%DX¹êëŽñÌ÷ ì2¡¸áÀkƒÜ+.Òevƒ @Ùe)‡10œ Jv·Z“RWñÉœ°âL×2-ª}»FŸˆ×9ZÓÅý'Š«_ü)^ö“ù4ü°wm»›c î"Â.¢&¬¢ø6Ö+¼4'Ρq¬Ðtä”°_–R ÒÄ—âÌb¾…%T„ÝÍ5lÿ¹Í*RÁI¯ê'Cç|s~ü¿Ç:auÂê¯ùgFÃN.Ø]2/aÅÊÛRlsæbFUŠRð8OIhc3olÿ”â¹ëæ]iÇ÷ðPÕ^3øóÝʤ«ãÚƒ¼JSº†Õ «V'¬&)Æçu¬Æ+öÜ9oü€Ÿ qõ™E$ñ¾ ¯R Wð‰×¸£Àן{õø"¼õj×ö¤gJ3Q'¬ŽW°wa©Â¨z¬ì L7¼53óï¤aMœ¡Z³çž$­7wA“Q\údê x¸={-lýkRñé¦ü_Ò¸? ‡/Pðê„Õ «¿æŸ]//Ã,î„=tèEkÉxõ‰™çÇkN©iæèƒæ“꡹|°ÐôÁ«õù^ñ‰@Áœ0:auÂꄽË{ D^‚A·ÀîÏ Ž“ ÀSñÌbU¨:O¤BÖxå“Ê?_þ[¦èäžIYú·]'¬NØ@ÄçSL ¢§bd­±8ÿ®•wgb>ÿ¯äâdã}¯-àoôÌïàCðøyM…²êH8°:auÂêVoú·ô“»ÚO2~i¾—ÿÜâpS'ìÇBØ[:émi2k‰¿ï ¦èï®au «7ý[zÛšX{\‡ì'ó{£V'¬Þ9¼Ó½wùHK×°·ýÇ[ýù½몓è3ŒWMf-å÷]'¬NØO@ÃúókëVo h„§Ï@~X°·=æÄrîñˆÏòÙ~1CBB>!/AƒÞî¦Æ™u'^­Åb¹;ß5ÕÒ«qK>,ï¼¶üYî2|B~Øez»ûÚõ¾ëŸR±aõ×üvµÀs†·°zÓ›Þô¦7°zÓ›Þô¦VozÓ›ÞtÂêMozÓ›ÞtÂêMozÓ›NX½éMozÓ «7½éMozÓ «7½éMo:aõ¦7½éíÎoŠ:aõ¦7½éíSÕ°zÓ›Þô¦·Å5 èØØ˜_ÂêMozÓ›ÞÚˆªb+.-Ò «7½éMo·ÔÜn·æ~¥†åÇù{€Þô¦7½é-HàÊ„ Yæºé¦›nº-ΊK‹Ä›¥¥¥^ ‹˜ Ñ]ÔzÓ›ÞôvëMÂ)ÛüÿYš93NŸ1IEND®B`‚pygtk2tutorial/figures/wheelbarrow.png0100644000117200001670000003454310050344475017372 0ustar finlayfcf‰PNG  IHDRÊŽÿÎ…9*IDATxÚí} ”Õ¹nUŸ£ Ì ÌJ37ÝÐ4Ð4Ý †fA™DÅ(8ã¬1FED£FP4ÎY‚ïšáÞõ^L4š{ß]Y+“C’û’û]§úphºm Ípó®ö©ª·kÿÞµ«NõDq­Z¬¦ºz×ôÕ¿ÿýÿÿ÷ý†çÕâ-…·Zº¹éDÂpÝúDá:žk“ý®g»NC‹Ó€~ëy‡ÑaèWèt?¦'mþõ§•èÑí䜦„ixÎ ýì6ø·Iö»þÓpÝ ú­in®9™À÷î’¿:î¸ÇLôè<›ãæŽÓçƒAÿEc¶ä>ÁÏœvÝÅÙñÈ9§Ùs3ÒžÜßІþÐs²èWyž¹?f–þUËßé_yuèOÐåñë¡#·üæß,:#¸/~ÍʹW˜ÂñévïF¼ÐÕø—á….ýYÂðwºõè·øôö˜z¼÷DÂÊÇÉÍx!Ü xùС¯üSøtÂòÁ«ÙÄ@ä#l"Lj_ù@¡¯ÜÄû Bàe‰ûr²ô¯L<šS§»ž <†ïQîK=—r…x Az®ãFäÓ· ¼ðÃJ“ÇJ.Ùïf}úv.Kß“‹·ž/ö³ :yî¾ÁH3x5è £…Ÿ°Nš@½Óô™è×I±âdÉ‘òeØdÞ #óqè÷œFçÊ7cXä³wrŸ`d¨i^ÿ›8”… n9¦ƒW*x…äih-ºÍxùFX&/ £Œë›ÄÃt?:GÂPχ¶ M&þˆñüȬ…W=µLÄ’¡9Ô¬iö¬š€áÇ4â_¥u#gÈ÷)Qÿåeè8øigØÒ·‹÷X¤ÉU@à=öŽø1þ_™dò¡³M7^Ò}Ùô\ Cœ]¾Bfqøõ¤ÉÙÉjàåâ x`Y×±¨•Ƈþuœ:ðhìàÓƒ7â¸àw ßm&œ—ņ< –Œ“¦•þŠìï†ÃBc“§ QN2²=Î ›\yò+6¸?‡ Ü£ëqrGÑFöX€¿²ÁõdÙ5×Ë#ÛÄç&˰"ÎE?$v…ž{T¹†Tz§yàž ö}à‹Vü¶WÁ‹|ßN×Á/= üuá-žOÆÁ^Üã{±^îöÞM;x§tüvý‘•'LôqÁ‘轚xãXaóÌr w㔳ӻÀ‘x§ðé\콓1,A?ÎP˜-µU ô–j=q.]Æ‚Ynt09*¬êÚ")„LŸœò§ œ|4Ág×Ò|·zæÌˆübM ~ð¿-ð eѳsrG¡ýB‡˜pŒµÏåþRP€q`xe”˜* uÒýÊÈ<­8F¤’ ¼ü3:"ˆJ¿"št‘áåj\<}ÓsE Çñ#£öâVÁTEÏmÄZâÓøÏ¿J6…»=ÖåÂ&$å¿–º)H&˜€°ÏÑ€?â:~ï¡ðÒX¯ ™:üe‡À‹Ã4¯–Ü'ŠeRàå8õ1RòØtAx5ÈÑv89¦CVxá;õœîù|/²Ò‘àEçWÿÂáÖä)i­Ôs¦H’A3 ¨ñç¾¼ƒÓ><稅—Ór‚d*qV$œ©GA^©}à¡Hurl “£CÓMsãÖ"4Ÿˆ'G©âLŽ4óÍÜAži0“Â]c Xî–Îo–ýNä|9Ç„ê*’è0N9®"~ Rœ—¾¿T÷v¢–5|)Îb˜,E†]úVœF¾€÷ˆ%/= á’“%›œŽ3„—쀧Õ%^£% W:ͯ'!Û¸Dî!ëÄDìñ+e2ÌXØ2¼,"Á¦\FÀ{×&‚€¨“Þ. “¨K_’<¾‹Û‘ç¥1¡XÑ“:mà@¹¶åçÃB ® ŒŒGX8įVL¨§ÖŸËŽq=‘Ç„FíYlBû¬ÄÊ¢Ù™Ž€—âž§pù?ÒŠYGÕàÕæk ù[).bÙ©ö†Häl|–ذ¶*$ú¾pɃ@ŽwýF”"VËâf\°õª jÞP>Li狃GM¾Ÿ„4xL'ÖWa…^”—L·ï™´b …¿ê&G‘&ÒXà`b«çÀ‹»YºLkFZ¾¸,ª®”T(I!m 94™M6¹t&aô õˆt;(øI­ø b«ýðŠÈe¡ûæç¡°CG\{R졸ö40Ñ¥•íµ¬Ú2$ßknÀ±=µü†û¾qŽˆ2@²e±hÕ~hm‰ËkAanצµej‰N&jdž_ÕfiµŒ¼*Œ˜ø:^øRL)Á7ÉV+! Š0^VW!¬=ðbÖ‚¿žzPG•åU,h”k@’c‹óŒR¾Çªÿ2 øNšX&D¢&Íjÿ%ò¹t#ÃkVk‰Ù§â¿ÇÜáxðªí,x©L!þU9Ž÷‰ /œ[ÀI!âvØ]æÚGy©XE2¬ XÉ«òÄÌÖ©aU?°)"×ÁÂbØ$ñ33¡£Àà‘I–gØDݺçœP ¯ÉwÏůY:¯4]¶“zÓ:ØÅ˜ØBNº^!É [ÝeåØjx)D´fÂ2YÒšGíEZ7œ)ê„L!?¾*UЫ<:FžK «Šk–ÎK9HiÎD‚äÂHË üÐ!ðb«ÓÈ”v#‹öfH>NÀ«;®­Ð‰@>’[‹„Áƒ‡€iƒï‘Fð9Gô‚ SÈ“™BÉ„ž)$Šž¥úM-SH›ßl2Aƒ4²ÓȲòiÕ6àÕyq#2W§äøÔYï0º™$=ûE8©Œ¿‹+C­—óHœí/ðߟ_ûjæ0X J“’ÀV˜B-þš€#˜BÔ—àt^*SMNîe"1zZ¡@G&5?ø>šÉ±SᕊHȬ’ `žd<¹œ¤E[Q]ÙùÖËjµcÆÃs’ Cç‘,ŒOð‚œÜQS(‡)DêÀ#Ubþš²wýÈÄ¥£¥{'Í+i]‘Wèô”]xI\ uÁÌ}P ͱåœìЗlãÕåm LÀJÔ§áªCÕzQœ¿óãŒâP`ð³1: <»R•%‘ꤸW–M—©“¯8eÁ‘L!VíîÜ¡¸ñÞ çR9¤à§Vu,h55i¨èp¨L£ûm=)jd]]¿{²Yƒ1à¥dÐ\XÞýàåδ—K{-¶—³='`„Úã 寍ûcû4Vø7™ÛuG]Y·‹)KtHÝ&ew¦{ì!"l}–9üÑ»Oß~ÍC7\þæ«û¼Üq/Wq–nOœÖíÂeJ4û2vR?Ï_u‚i0ÂïÄvY6¿Î:a˜‚bpXvím%±“)\ÊqÈsìW¿õµk—þÏÇúûo~ýÊ®¸áªÚû°÷ßY/wý¶Í,<­¸¶$f²\Úi…3(­HxY1àeéßH§Pá…ö Sˆ&+”¨´ˆh‹E{ºr¢m¾aÇ~r÷m£N1–þÀÚÕ?yôá_=·÷ƒýO~ëê-¾ù€÷y#Y«+ºÜe„¶3fQMg–6u¼L!\ö/Ø)4I"K«5Ä(j×í¡ÒMÃì"N½{Ÿ5Þsñù ‡ô›jÛʦ½tͶ·}ð__zî×nÝwÿÞç‡}ÏÌIÇz%Ý@óçdÁ xi ¯´Ä,´aµ»zò[^„SÔIÒHy¢Ë‹-m¯¥9aßúúÍkªÊ†ÆÂqc/™]†@öþþÇ_½yÇ®{Ÿ¡é2QÿäF½ÕÉàH»{®¸c]UÔ}Åe ™Œ&ŠƒŠÙD€ç(øq /«ó\æKEÍ‘%kizaïîMK« c²alž0ö…Û^¾ó¦U¥ï»ùr„0ìõÛ@ìÅŠ3?~¯ÖÀK_'T'¬g¾› á“æ²ùÊ<ÚqKü ý˜õáŸÿï7ŸÜ}§×Òè#LL«ž¤Áèó£7]~Áôу‘1«9kä]ë×\¹jáý7\ŽihÿêR¾ÚTŒbèžY×–É1 ^ Zfãj4œì0¦¿¶¬ó %—m²>œØÏ¼õËë½–zP—"œÝyI˜»y=pÛÆ¹³'Æk–ߺeÝËO=üês½úü£^®Ñ™à¿·Ãÿø^qâ^2‡DRŸ JópE¨öÄ#òß<º˜–ì±?üì¥k¶Î;ÅøÎ"XàD‡PM@ª·‘wˆ0ôßÍ7o¹p”a¬*zÛ—ÜÿTEÑäók=ñÈ}ž_¾vDWGڪ⟭£ên’¢±ï×ht2n2¼rÙWvßî½ÿ³]ç­œbÏ?x§÷y6¨%%×ቲáÉ]÷Ý}ýξòíÃïÿâ±;¿zpß>ë£ßýø77¯Z9¯tê5ÛÖûÓ¥Cø€1ëü`÷ê•ó ŒÙû°0ÇŽtó¼Ï?ýð½÷\õ[o<ôÑGžyvý’e“FŽ2úì=wÜóÑÛïÖ½ÿáÛ_¿óÆ++fN^³|Ñþ½{„prÈ+˜jBO×Û$ÝsKQ9I§stõö,OÒI•Ž$ËÃmd4|ƒ©wé–­ˆbC#ß÷¤H'Ú¤PNª©ï uB ¼,NãñïÓ©ÿÞwž{þ¾»¼_þbÏêåU’?؇&«¡bTa×¾¥á©]÷"‹õö7ŽþþžynÝ’¥ã‹*JæL=aòè Ì_²¡zÑõë.úá˯ÙþæWï¾{Çõ7Ï›1}Ù‚¹>x2x²%ãL@•8®-È%@àâÔæ ZËïéfˆt%TÁ,V;È/‚@D>L@زV+X­¾Ê’ŠÏû£¨„Ã.‹º 5s.üª‘ÿo‡m‹õ·äíæ~ðê^„°ÿ÷ѯY»b~?ó½ú´ïžB½‹Ï?Aë–m[Y:úûÿÜ¿û›SKg/©,š=¯¸¼¢¸bÒèÉåSg]P½bcÕÊ •+6T-¿tÙùßq/š.k?üè½û–ΚY:¹ðªm{¹&Xkïæš‰¸Fˆè­ x€D¯%ë¹5’ f¢–ã¿û À.`þÈ¢º8†+lIÐÛsI d޶°'ÐXLñbFå.|§Öw°t^F½FéfLª¬R2¯,Ó@o„Š D“HÈT[\÷o¾ûÚ~4Kºïÿâî•‹W–LD€Ã!ôÕA¿õ-Ö WÿèàÁÚw߃53+fŽ›†ÀT1¥lVaqÕä²E³¦ {NÑÌ +—lž·ä¢ŠšÍój6V._W]ƒìÙ×vÞøã—_oþ£õÖÁï®­Y6b`Ÿ=ßÀ–,×è—J¸¢Uíˆdïd•¯ŸÔýšªDPœö¦dÌex‘$+-1*o«rvx) (Ê#Ãæ<õ¾Ð–ÄZ,dX¿˜1IKM‰Œ@H`BÃâ"ˆ\dGßw褩`©‹Œ?K¾Šü°»þò»n9¯fyÑÙ¯?û˜÷ù§OîºßŸ løý>vÇ]çÍ[0g\‚Ô¬ñÈtMŸ3®¸|ܤʳǭ˜6uÞð!kŠ&\:gæ¦iEÛÊ+.›;ÿÂÊšuU+øviͺ7ö¾˜þà·?|õ•’Q#¦÷ÍÝ' ¼Zþ†eºêx2¡QiÙ;AŽªñHóŽ-³€h•©É§Õwõ)–Þ'fdÛf‚rM 1—Ë}šãŸ„F!CäI$!×v,&ûаœ!íD„¯¹'}Rá„fCá¥2…”ž9þÅ+zRáœÊQ"%~Ø›ßÙ¿÷ëwýõw¿¼iMÍÌÃ~ðÊ‹?:øšÝ®Ùp²Ls §Pl+A²X[+JŠ×¾vÇuoÝtçª/=uÙ¦÷¹ÿ™K7ܽ¢æÊ%«Ð¹¡rÕºÊÕëªVa!{¶äòšÕo½üúþ]OLYX3ÑKûŸ't¢˜ÆÞ1Ù¿z©K*ׯECëäq0Þi0A2˜È"­ÄÌ„ÔvÅoŒå|ª(¼7‘­‡—-ÁJb‚‚ÆÂœ¢zÜT¦ZJ“µú"RD€ &2SR٠̲;”‹"œÐŒ^í(aË»Š‘¡F4…ÑçòÝïì}öþ;šÿム疽pï]ï8¸ªjÁ¬Â)eã‹Ê ‹+¦Ìò±UX<§pÒÌ1cg:sÞ™ý¾ZSöÌeç¾·ûî[W¼·û¾ß>ûØÏ¿qÛ+·|ëÊ›+n¬\!°UµÂwËü=+®Yùüó¢Y•#ú~|×nÿjá%³wL19¦ Ô¥_›h¥À”Öþ 6ƒÂHq¦QDHLU0ôŽ‘¾5²›”§‘XI€œçx^&ÀF਀N†Ã‹ÌsyŒ‹˜5êŸàÏ0IÈ΄—FýAûsr¹~øò·öÞvÃËwÜ<Ê0®Û°¡öÃß"G~íâ•È‘GÛìB4'•Ž/1tÞˆþ‹G÷«—ÿÖ/¿°}ã77¯~~ûæÿØÿèöÂÁÿróŽ_>¿÷Ù¯|esÅ97^pÑÝ_Þ†–“ë+—!¨m¨\½Û³-ËÖ¿sà;6]:ð”ÓäA¿÷‰wØgQK“c€,j€¶¢ì*(²8FiKÿ,#7Ÿ’¨¶´åV`qàx—(¸ 'Gõq:$I´v±3`²ª-¯ðW ·Ì7Ì0–‹X£&Yϰ`Èþä•ú¡ü´÷_ö¾.»~ùü±†1È0æ—Lëà?ýê'?½{çMUE¥>¶ÆM*5|îˆ7-›ûÔÖó¶yþè¾×–Mx`yåÎY…Ï|ù¼u£N_;zÀÓWmùÙ {öí}¯Ü~ó“Wm½ÿÒK6T-¹ ÊŸ+!ÂÞ~ýŸ·mºtÄ þ~Ú“\L{G¼½1>"3…X‘f ›“ü„-½nX"» fWÂPý)Ï(P`),)!e@dô€t4ÿ—ü`ä_ÑeÑ!òS ¦‰º¸Ä¾¥Öû¯ÿí•=å#N{îî¯,]ÂÀ–:ñƒ#w2# ­¯LEŻҪ‘uq‚zúºÍˆ#\&ßCš? ‰ÜÑå‰0§ÖË!Õ½úÔ»¯ÝúÊ5WL1Œ’3GT̘=vÀà=wÜÕü§Ôƒ×íDÖ«lÔ0„°ê‘ýkβ¾øì¥#NßTiØÅE£VŽ´xø©k‹ÎZ^<As]uÍúê•a+¾½ëÉ;o¸®¼lÏ p«¢kÔ´}‡ìè’$}ø†‹d9V$›È-*æ“ W¼*Œ…5Á/ØŒ<1'ÍÍsׂøu·é)ä6¼øÛþýá{vNŸv†aL>¦bêôêâk+«ë>xßþàýû¯½rîØ3ËG B³dåÈ•Ãûï\1¿zTßÝÛ×m/ŸôÂöõ®ÚxÏ¢ÒÅÃ’×/¯ztÇÆ¥ã†TŽVS2uiqé²ÒJìã¯FåÕ+ì{ñïýdú´Ñ s¢­æ(Ûš« ¸– ¯XÕ¶zA„w›ÇRZñ|â¶ULxÆkA¦žT-û0Q„}vx÷%k^ºfÇŒSû )rîøéUÓÊçM)­œ<í±;îüíÛ?zï¥oo¯Y<¬` QÁ’“Z¦PWM‘iïóìcWoþÞ¶‹·‰¦ÈâÂi_š¹àüêUçÏ_Q=©ìœ©å"ÏïÚóÁ;ïO¥ÐŒ‰LÚ÷ö>±ëº÷\vá¢qÃ_^2¡zÂÈãG¢jJ¦,-™ºeÅòû®»î½Ï|ðÎOÑ‚ôçïý´bFÙã<€=eñùðc}{†ñûÇR¹¡Œ6Ÿ M–u=Žx؈4.ÄÀÑaft#[Óã²% \É;gÓqp:´À’wùªU5=…ÐvŒ3…¸S·—RɈ %þËÞ³¤üW\<Æ_Bœ=¾¤º¨bÍüUçV.¯.ªœ]8}VaQUQéâYå­\}ëÖmï8ø›¿õ—?ýáoü=Úþü§?üùOÿ—üÛüñŸN|œ:þñ¡¦Ô!ë£ßì¸pÓä±#J§Žé¹g’û£A8[¥·B”A-1“½<*&(«c°¶ðj#òs‹ÓC¸ÚGAA(m#¡Dá’[Л E*Cz&ˆÞDì¥Äë)` qñ œø ´~׉ä +ù,ýæ½×?r^ š"ÇÆÈDߊ˧ÎZUU³¨lþâYóWU-]8«²²¤¼|jÙ¬ Ós6§pÊ‚i3jf–£9´|üÔ«7^rõÆ‹Ðvßµ7ÞºuÇ•›.Ú¼rÍèCû˜wÜz­ûù WÎß%æH“/5Œé«ð1Q±üù Ò„½Ý¦Ü‰‚„Ôã(ʱäì¨0íue²/n­š ôC4›)î‹ÔkÐV2…X^‰3…È´˜ÃD—6 Ët;®K.íý=óð–ów·rša 1ŒAɾ%…E¥K•U£ ¡Ê¯ž(.Ÿ3uVYaÉÌqÓü2Š¢²™gÓTÚJÇû?ûÛ ¬DÍ‚*¿ÌÛ Y+Ë S0¯M-úãÎ+¨÷’«*@#4ÐÓYʦ0xiÕøï4(:GÚ'‚ò÷@¯$Í}ÁÞDòRÈJã@"«è ¾ š‘d-©URq]-žAßÐçÙ·_~rÇì’MÆõ=m€aœn$ŠÂÆÏ?WO”VM«Àÿ–WL)›7eú´QcÏ0ðŒS§Ì˜X‚ ÞŒ EGž=¸OÿÅ ízðkÔÌ8Tø“gyB:hQüÔoØÚi¹ …iy©¯ô8¢ Y-1JhÓ4äI ª%úÔèdwx².ïqÄ=06MÞ‹IÖ¿/&ëœæN!§o?¼2{Qf qOýòº¼Ð÷ôYö®µË®(›¾t̘¡†18yjÿSO÷mØø’™ãKK g »…7ßJ0tî„IEÆ/Hô1Œ3EÛ™ý‡”—–>òÐý¦!^ÕÞ HWÒåÆŠÚçUUn ä´ ý‹Ô”¶§ò»AOÓ:ì’ga:œÚB‹<¶ü…ö©Tï‹}¼M´=ÐW«¦ £Ò}>ÐSH^ Óà“Õõ¾—0`ök_¿å²Y%&ŽŸqjŸuK–•L)N‰¾fß # ÑDY:¾ˆlÈJ›8Ô0/,Ÿ3Ü0ú"0òÜW/_êµ|Š‹õ\g•§‡U‰õè>q‚,ŠðFÆ©SÏèÒü'Ø­(­Ñocð’ Ê÷%ç¨ô.Æ™’sŒ²:à;³:On¿#s‘¾–½´bÆy#†UõëwNIɳOï½òŠ­¸Ü´ iô+8eÄ€ÌÄÐÄ©ÃIä¢-5zú©§œnÓ¦õMžrîò¥ï¾×ƒz¤yÛ•·‹#©Í”ÄÕöÕ>r×0]*ä¼VP©Zԯ愫# ~ôùÝËï¤4Ñgõ÷\¾aí¨!Ûf–ŒI$ö|ý~ﳿUÎ*A;­Oß~}’N)ègÅCW¹ýœê…C‡|i̘ӱõBÛi}OE{éù§^ùö.AFâZ„mÖ@¤›Ôõgf41HA$ýé,…‚¡t‰—øHj„Ý 114M.2ªJd H–,6SÈÓvZÓ÷ê ™ù?žyhӴ“ ‹Nësͦu fN=Õ0JŠÆ=ôÐÝŽóçÛ¿rUõŒÉ%Ãm./[1fä’A×MœˆæÇ>¸âÙÄvnÎÌé^îSAåQéVkmâêÓÀd&5W‡WÑúž„ú ØW›{ÒÂyv‡HxÖÊ==Óz>ºHl«Â¨¡T‡15´L!v²£!íB»È©wCš¾à%äÆy³–Œ;wÀ€…cG5Û7{,`M”Nnܺyl¹vÒäë‹K6†ŽßoÀ¨Aƒ¶ˆ»rÛ×ïæšÑ|En¬)Ï_xR¿ â8ûŽ]î¬m—ŠþÁp™Ï°g–¤"³wüb20ÖôP ciîÎÊ:kۅ”*ж D0…’IªíÒìØêRxÉgÏeKF;Ã0*ô+íSðƾ'¼–ãX¦ŸSÖê_}î±'î¿÷LÃXsæð«KJΦœÖ¯lü¤ c ‰ +7†VÖ‡ ?EØrö}’¤mLIÓà"çj`°ÝÌù ç7D– ÕþèºÎ7_{®°¿5“'ÆM—mČȌl]ŽÞ~Ëu}qvêi§2Œ‰ýúÍ)œ²pVåéf’Pƒ^|þi ^`á–d† ÊS¡_•¡#WÄ®œ\ë«-Š˜ÑëÅÐAXÐÀ&áü¸´ûšl³YÈ”3…ôð¢ªGÇYÐA(N²X)0l­ 4K=Æ’rÁºþµ:J>.ÀbÅ^IðÍvI¹D,xùtcO?|oéh[9¶ /Ÿa‘ݾ}‹é/'é……ã ¨˜0iD¢ÿyçÔŒ4ë`׃_ógR+ÍðM8iSïÒÁSÁU˜äoÈŒ •# ^&«Zf¯Ó¤Å[0s „Iiι<íÍ.¯žeö•Ìú¥Œ§I@ax5ikíS Sˆ„•!SˆîE{úÔÒbZìjI4µ±ëK 6 ´ tÚÃ~À '¤ÝìCÝ‹àuŠaNŸ8eÒȱƒŒ>£O?ãÜs–|ž nûÊ ^†Ïž+ÙC)4Àc›ä58¹£¦.Œ)µ  ¿N¿—è& |#+˜sdX¯Ó˜ ¢8 àÅ™:œH'*ýÝZ%²Óç$C¯”È7!³ä¥é•1…p}HFa!ãþBén¢¸§—`u3Oì¾ûš+6ïØ¶IÃÍt²ÏîÝCè×O3&–L3q^qù²ê%Ü»ôÑØähIm°p”»Ì¢•/æ¦0NdAǪ¨q&ö.w›¯1ÝÃÒÑqmÎ) Œ#ú Éáb1Y…ÀŒìbÚ ªâ8(þ¡â<ÕªrKK›ç¤xŸU¾ÖÅ}lºE±W ÁbÉDŒ$F"œ2^®iñÂy$1aÌ„Uç¬@Û„‘ȵ/0üXÒT\{µ²>µ—ü3PßK‰\"-C)ÝY%^ Ê¨Ò™àR€d¢ÆIÀ¤P€MÄŽ'‹YÒ’*J°–xdÍ(Õ²Q¬¶ `½`ÁZLjbèn¯¾gi‰ Èízè6“¦ƒ ú}N3ú$ý…zWÆöíÓ¿>2ž/Ã,\À¶áýR ØFTׂÙ·nœÄí±Y5ƒ/[;ŽC9±i’•òñ8û)m4Nû{*‚.F딘E¸Ï gžX]›stÁÖºt ©wë·oߌ É™x3Œ‚!ƒûчèïGß å.húÁ0fF;±z û;é¢öZ9'/¤{k¶¥–Rã/brz0¬ª”²¿.°ÓîFL¡öÀKón½õêaƒO3Y^håŠ%ûöí¦k‘±HëÖ1”¤!©+¢²>¿$BP’3 &)–° ï©ëTXeŸ³RÓM­è)$(ê"2 ö ›Ùûж.ÍÌ*Û²^®ñ±=wîzøZ͆í?“7‚^iªuW¥2|,½RýU»›OI-Sj~3/k(l²Ž°ÊàùÇf òhX˜¡îé9ÇöÛQ&wÀ\׌ºá¥|Q‘ä ‚¡àmgÅ*[z16oÔÈö5Ô¬g`Ý©? pfb½”õKh\{>ŽÐf¦ÿ6RmÕœÄ4”5a ±‹©ŽÜ@ï‹Ø!~…X°û…eŽÒ Ù=­ê)”‘žb2Ý$0ÑNE />9âïU˺±QÏ(lX“5$TT†ä§j‚ïvp#“<ßBìsqD‚Ž’BšÛ!›¶À=í‡ÊÜZmL j[Ó¼¢cé’VCU´˜ÓZÐ(mår#ÚÀÜáKïGjy;*ÿ4 )ƒÚÉ+OóÞ<­²òô  Þ‚r"£ƒ]lU[ºgyc–†ýýÁ€o8¶ÎÒ ¡aV*N9¦m/xß?mŽÒ–JÀuŠÑ¬°ªUoM“3uÃgú®ä±ô½ôL!Xö¯ÒhéÅ¥º—(f§®I£>!+˜*æULJê—}ôÇY4Јšo$êÚÒZïÞh'âtxc,Q s4¾ÖÑ-OO!Þ6Af QÒ‹#PÛ#MWÛ ~¬ü%4Ø›ÆÁÕŒ¦‘'ž3¢ `ÖçÇRå‚ùu¹´ô†¼ FðÇIÕà$.¤„uw!ËÉÒ\–Ò¿(ªeU)„+\›©Î ´¥”H¢R/Ù˜ ‚^Aç½Ò‡¬.A¾…r7”>¢T¬:ót+bYMhŽ#Ê?9»Ã°F¼”ܯãëI&T¡*¶Ž)dr¦æÇaxý ÁK•ëéѯŽð‰æ;Iì çÃåd©½ ’'RœÉqO˜ro"í%¯³‘4¬ÐU4øáñ'qJÆÚz a…™©ª’$…3D|®Þ…`%áknqbLŽ jÏ›ˆpëe‚™QÌÐ_À‹7JqOð0&¥B„h€u¹‚y@/å‰mñ‡}:ú^œ_$ˆÐ6k;%iÉåk,¤\ÀÓͰÞ_"Æ) fT*G ž$ª§(™Å€$ž ="”Ú¥ØRO!ÐçBÑåJÊB’hùÉY7 –©Ôª Ê‚rõ)(;(ZIÇáδ“–á¥ÝëÄëÒ ­7Mo‚=…\ÁÊÐá¼¼/àÅ*&4=…D€ª>lâ“Ù;6“î¥Çàð‡ç¨)£r@x©ìfçlÖé“7ÃR 6gˆäȹXS7ØKJa)ý‹06rYÏ@ù8­ÖS´»Z>î$)¤e¼Ú]ŒUÈ !\éúó¨Ø_¥u®½­“}ËʪÌÔ·áÌi>òÛ’ W£J¾@pX°€˜Ä©|.CŽs$'߈„W€’f Š´Pr’˜BþÆ&ïpx‰åºÒá[®¦§”>eIï¿ä=°[1ÀÞÞ áŒ¼šH2Øó`O!—·Â¨4‰ä›ó}$5a—Œî)T+wÙøXŠB¯yR=ÌÙo‡ø[XL_é¤öû$¡KKêÒãYÑAËà*vϱGëÔEáµÚÉìÐÉ‘ÉX†6êƒd±=•ƒ—-j®C[ }/õ0ÈÆ.ë‡-sHõ޾s‡H ÙáÂ¥¶N,®õo‡s]%ëeé rêDj!†õJqR[úš_‘ ï0“è×iÀɱ§oícEGíÑs#….$M‹§åP­‘bÁØèg®å9jˆká¬L‰ŽÛèW‘(ÅÐB;C¦#¹×mUþµÙ@Oê)D³ÂxO-è`xY²ó‹EÚ“~0ÇŽq‘AžuqÜt É#œhüÎÕ@m¡ŸI.þ†};8Qr&˜ÿÞ•ƒ¥Ûmà Jì‚C€+OÃ4&Ð=£Oê¶ëz Q¡E¾'ÏîiU!,ÂÖÞ…öxWD퉾¼Â§­—Ÿ³ÂxÖðØ8¢Lf‰Õ%¿‘×'ò3ªr)Ryc–Óy|] FDCÿR™!„®p2y´UÙà‹ñ»a5)=…LÑ€$Ãù€_À USê‹z›ŒáʘëX=~sH³ÖÚ]§ï%ÆaëD·I& V½æX8ÛÂ`[xZ0í§›DÁ4‘üdöäS!²t>™V³–Ñ0…ç¯ SÈ,µ³,ÞÁ:ªÄ/ÜRê/<²J æ´SGr(¢¢ï˜sY1‹T5ßÌ’ï%ûŒ£ØãdÉ8BUtrÜOÅ'*bÔæ1Z‰(µœ0̼G%…íSÏùÔüŽth¨÷l­€—Q 2*ÐZÐNšþ<ä3þ³ŸÞ •ãù_ÅêHl"%áC”ÙKîÔ¤Àâs“ ÇëAƒ™fØ®«ðJ3ý ÐSˆåˉ÷˜M¯ãUKA„Ÿè´œ K*¯ýCŸpuBNVƒ­ÁÈä/J“SÈ `iòÃËÕ mâcš852—(çÀ«uh0©Ú/2ë9iáÍ&„D˜Òá7Ó{áµ…ôÇa™ WúƒzÛ (§íD‚dz"Öv"ÝéD5„Ú( ROD¬%-/#à‚@¾fÈ9À*_€¹” ¤¼¢ûjÈ4¥H¸ÈÕåö?†é²B fåÓöH«}'´Éa‡R´½VM ñä’ì)”V($ðU²¸& Î9\0=c.ef¿Úp/¯¨þ‰ô9i©·”¤æM‘µª³‹ªfótcToGã\mÄ®¶@ÜqÂàÿÑÈiÚSH4âë}n;(\‘šË_­D¯ˆŸŠnǵùÎþ§ÁleKõøzUˆZý;Õ¼âÀ8ÚF‹!ÏÇ ø_@*š)”ËܸkoÚ‚g÷Té5 L£0“Ƚ²®LEÝÓ6ÂîeÑÎùiŠß H¸ö¦\Mšj;õ‘sQHHÿÄ©¥¦ êóÁ)íx±RAFÓ°ƒ=…˜hX“‡ãr^½!±­aïØjq‹ØÍx2 ˆ­ Y7‰D  5Ñ«¥ýqÄzø¸XºÜ”W PzDãðq®"ÖNâê¡ã°U'Z=æ´R¦§ž¥ç“Ç"­{ÕžBTƒTÕaïé¾à½ð&ç °å…ªpM¦50q¶fI0j4±¨>PÄŒ à->&ñ*Ì–&iM`c"{± ­egë͈qL‘SæÄORÎÇAý¹©QL!„Äü=…¼ÃR0­£*¥ºråȃ–Í ^þç.érÑçs4ø|L\Lç) >¨ N‚\mmo"-¼D^2£ëM¤¸cgá½Ù\Q%‘éq”áhr^†Nk,‘%”ñ˜,¥Máå9Üzé%¬SˆV?JI¡ gôìx½”L©h©{´*ûÆh:xñ40—}ƒ:aœÌ§ÿ cõ&â, œr²DhXSíä©Ôð lèK¬Oˆ¨}£¶…¿t@RH^7xÙ¬8;^lhÎk 2…¶2=›ŸÈåÓd—,I̪ßêa“H¦  @¥E8¬c¯&ǼÂdp!¼Hr‰¦€0áNvÜ_tr ÔÕMz‚j$Õ-EíCÆá“ ®o,r¤ƒ‡&p-¥ÜÆIKL!’‘ -$ìaƒ\D„«‰Â,*¤ÃËË~l“° l곂–ŸÂ)ÄãX®½FWœE2,èá“á}eƒ½€(ÑÎ6›ˆ¶kLHm>ÃÆ¡ô]ü³IY®J^ *^µA¦ÊéqvËgOÉÝ&(F¬ó€¬q€›„SLÛ…¶OæË*ÍúÜzm/ ]@„–‘aeõ£J÷5eî`)b*ù$[ôµöúÂ:.½Kú§'ǽtÍÉ#îÝ’[¤¥>ê’à‘­m{äÐõ{·5=|Âä–pW@¶ ‰Ë‡(NÊT¹‡ô‚:ÑW¦—ű÷ªê±ìóÙÆ‘y;¾€²µ`¦³ßŽ /žEÊy#jkI!t–îñí»Lãä«R.ÚꊶB/Ü È4`NóøØÇlwк^@f"DöH*†¥Ï¦i¨­ 4 Ÿã”ô†3*ÕB-ªÎ(ñä“//NO¡,©%O‰©žãàG7gÍZ¤¿´½€šMFäÒõÊ(Íc4ëqµÇI¡^úì¸'¢àÅÞçQ&íeä1ÿ]áOè|DÙYLµ±«\,áñ;Eé)$Q9褞îx¥†“ /”–œúõ‹ŽŽh\˜}mëdAŸ æ9 0s4ðÒ Ê™Œ"›>±twJÌý$Ã+%Ié{ eS¨‰ÃËíÙT˪‚’ %îyÎQìJ“#èdáÕ HÐ+D®§´•‰/^6l~ȉÍLÃA&õ' ¥·Yç}´yà•TÜ@ø8\…)ÔK”¡åÔM½hgç“Br/ Uâ–örZŽI¾‘|öŽ0û¨¯¤2ü"'×|òJ›OÀðêóŽÃëÆ2œ#Ž/)î¥j+N]hv¬GÆôEÇ2¼úƒ!"+TÑŠ¶G¨ öêqE¿ãtˆôˆ–d Ö6 ˜ ôk–šyaXiw˜ Pq þÓ¦ÀÉR1í,Ÿ &…¤ÛOµŠ”Á#!5mïÛЊµ°6GV°Þ)ðj%z> (¯y¯EÛl½êD+¥öRj½$Fצ¸b&ë’:^!=…˜B°?VO†`ÔKm/¼:îJZ¯ð™çdÀKïÔƒbèp¦P^×¾—šºÞ*Ír2áè)DÐFU˰n1èÿ%aÒ ðê*?µ“Ïk„©Õj{ %@Bƒ)¥4¡…7•U‘“B½ L_X¬…—¶§Oh¸€Bi´$Ì¢D_Àë‹-*0A ±£äã2,ϘQóq= )Ô’è½÷ÚŒÈR¸±ªÂËíñkÆ”O…‹Ùõx” 9Óg€@úßÊ/άŒ¥©¦Gc,¢XRVGÀ+âd€œNX—\c¢Wõòjõ¤Sµ`:›š4ˆ¾‡ñ‰k‚½Ã[{¦“­"»Ë=|ôJ;qcªrT›toGú+¼D‘ FZ#+3…ìž‚ž¼¹jZ¿¥••«&SQ -¥ éÖdBRùRÝ!uꬢ•IªXm†—lO©Èmì(xý}ˆ•°^ÄúIEND®B`‚pygtk2tutorial/figures/treeviewcolumn1expander.png0100644000117200001670000003522510054300171021714 0ustar finlayfcf‰PNG  IHDR䘮 s:\IDATxÚíwXUIž÷ûÝÙyvg¦w{æ}gvçÝ}'l˜}fzf:M‡Ñvk·9çÐæS ¢ˆ`@Á€¢QQÄ(Š9gmŠsO¿S¿ïܧ‹®{NŸË½ Ê÷óG=ö‚ôu)'üö·|нûôéË—9ò¼„ÑÑ—-{öáÒ¥% §M+ÝpêT_„‡W¸dIi†S¦mZË–ƒ­Yc¦VªÔ´iTÔ矬]k¦¾÷^ãÆãÇ·o´n™úî» ŽשӰaiifê;ïÔ«7zt—.!!ë×›©úS:aaÝ»‡†nØà.µví^½FŽÜ¸ÑL}óÍš5‡õó=zóf3õ7ªW ìßܸôt3õõ×?ýtР#"Ü¥þñU«öë7xðøñ™™fêþðñÇ~~C†Lš´e‹™úê«}Ô«×°aS¦dg›©¿ûz»†Ÿ:•©/jjÇ»ï}õ^õïߝߨ±›7›â¤¾îÙ³•UY¹Ò'M˜æ\Æ·l¬bE«åèe)N¥Ý'âYªQ£[·•+ÍÔªU;tX¼¸vm+Yjß~áºu{õ²–¥ üü’’ÜËÒìÙ[ËÒ̙͚ àN–Þ²ôÅÖ²Ô¦{YúóŸ7ž0¡]»!CRSÝËRDDÇŽV²T¿þ˜1Ö²T·nXX·n#F¸—¥:uFŒèÙ3,Ì,½õV͚ÆÙË’2V²ôÅ_QÂcö#̇JÍÈp/K}ûº—¥ßÿ^ÉÒС“'geÑL?«Ô?ü¡J•ž=GŒˆŽÎÉywå^–~ÿ{5 Ñß+]œ*WnÖlÊ”FÔ·o5sz*`ÆP6 [ÅŠV»qOLÙʦ . öâ¤^”åË«W·’¥Ž—,©U«G÷s)%KuêXÉRÛ¶Ö²ôÑGmÚ̙Ӹ±¿¿{YjÕÊYš<¹uëÁƒ‹ËRrrzú©S±±+VlßÞ¶m` ;Yzï½ï’¥ðð.]†w'Ko¿]·îȑݺYÏ¥ìd©V­àà>}FÞ´É,Õ¨1dˆ¿x¸{Yúì³Áƒ ˆˆÈÈÀÐçÚµ7îßǸõµ×ªU0ÀZ–>ùDÉÒĉîe©J•Þ½)Kå!ÕìÙg{Wj&Ý»·9φ8½óNƒááj=#%Å~YïÙZEûÚ«|¬ñ‰FUj‚÷µãÙõÚ­ž]¯ÝɳcjTÌk«XI´ê½ œtâSÁ¼‰Ë‚8%$|öY×®.YÚ¿ÿøñ‚'›l¹¹ûöåçÛÉR\\ýú}úXËR£Fþþî—øZµŠ‰iÚ´w¢•žž›{êî!:zÉ’}ûŠ/ñ©‘ZïÞ£FmÚô—¿òõ×£FÅÄlߎÔo>ï»w!`Åe©Q£ÈȆu·ÄYêÜ98ØJ–F²š-©ÔÐPÈR«VJ2“’6o>uêÂ…+WîÞ}ôèñã'OÔ½~ýõ;÷î=ztôè™3……J7lxóÍ5‚‚úö w7—ÒeIÆ«W¯]»}ûõ׫W4(2ÒJ–üý&Nt·Ä§d©OŸ  ¨(w²ôê«~¨yÊÎ >xððá“'öï¤j½û÷_TÑÒ{öÍ7k×~v²ôá‡={Z YÞzK-Y«áú޾-HU«ª]œœXEßÊ’ník/™,Ò«ÝJ–œ×îFœ Øà²—%½ œÈøLÐoâŠ`%NJ–Š¿Xjäžžîç²dI¯^AAóæá“€E ÂV­z÷ž:U™ì±c¿½óW¯žµ,Ík½óÔªÕ¬YV²ôþû-ZLŸ1oÞθ«Ã‡OœÈÏW{NÑÑ¥V­Ô\*&&!áÀ˜³÷Þ«WoøðwßUã¸Ï?W³%e²ñy#Kv;O ŒÛ©Sp°»¹ÔÛo׫g/Kaa=z¨§Î•ØÜ½[Tôèî?55=}ß¾‰ûö>|Á‚°°¨¨ÄĤ$õ~´lÙ«×Ô©;ê®­Ô_@€¹ó¤›°wß­_?$ÄzçiÂkY²ÞyR†)8¸¬wžîßWý‰§ÓßC=ìÖ- `Μ7ÞP;v/Þ\JïÙ×^Sƒ’g!KjçIõ¾;YÂ`¨gOµ“j:D¨ÅÿøxØ]œì­biÈ’nKf“íeÉ~ªPjw#Nø]˜`Nd è7Q xêQ­Z‡ |ôÑçŸÏ‹OB™†GÔâRPPµjíÛÏŸÔ*U”ĵk7oÞ¿ïò|øâÅ«WïÞÕïðá“' ž|xË–]».\@L^ÞÁƒW® çìÙ‹§§C&ÕþVd$„âv®Y³}û©S££-Ú¹óÒ¥‚‚{÷Ðz.\ºTX¨æ^'Oê³^Ó„éüMü­[ºC„ÞwºC„ÞVÞ¸qçÎÇ=}Šôà­[*öÞ½¢¢V¬X¿þØ1ó~Ô›xóæÒ¥ëÖ=zýú͛ܿ¯†S¦ÄÇïÝëÄ\ªáÑÓ§( í†7ðÕW•”vï¼j•ëüüóyóÔœ/'ÇõÔׯÁÍGíA¦¦>|¨J›0aÆŒU«&LˆÍËÛ»÷èÑ‚‚¢¢û÷?þ‹púô—_^¾¼páêÕ‡Y=ѪU7?~ó¦j\‹–:4<<.NÍã?Víòäɘ1³gïØán™Nµ0Öжû÷>|æÌøñꮬzö½÷41Bÿ¾ðöªqø“'·o«ù·þ}•g‡{«X²¤[Eol²•0ïkdzûV–P»qº/ÀЪÅ uóæmÛNœÐ߇cÇΜ¹vmÉ’¤¤¬,ÄŸoµà¦>ÇÅ‹÷î-^o“&aa³f-[æºÔ«è—/‡À¤§oÝzøpË–ýú-Z„ý•+ªÌ´´ÌÌýûýýGŽLLĵŸ|Ò¢Exx½z=zÄÇë»#Ê•\É|×®K—âÞÔ\h¨ŸŸÚ[BÌÅ‹j¶„üuê´oQ­ZëÖ'¶j5hëÙóó/_¾qCùø 2`€šéϨVÿƒƒ•à lƣ̥tqÒÛJ¾‡ß¿qãÐPµ¼9j”_¹rÆ!!Ÿ|Ò²åØ±zùÊ_14ôµ×ªVõóÓóüq³f£FÁ1Dý;wúƵj ¦¿W¸vøðiÓ²³£ÄÉ5s²¢oßÑ£SSÕµj‘T]Ûºµš'axDÎ!CÆ[¹wR½z+W~öY—.‹׭ۮݘ1'ΟŸ“£fÿ®;„»ŠùD•+7j4b„Ù2ï¿ß¨QX˜–ùðæMGÖ[øîÝ{÷¥‘‘z½zêoï¢EII‘#ÕÛ;hPDĆ æ×m¶³óTåÚ¯ß!QQ[¶·'*¬\¹iÓÈÈ6mÔ«²0+Wš!,’s«è½ ™VѾvH‚§µ;·É¾UçÏîFœî X[ôÔÙ¡d²„þÒÅ©Aƒ¾}W¯þ&LNnØÐß?%åÛñ«Wׯ߻·Ëê3'¤Ö«§ŒµZj[»V'¸Zµºt‰_µjÓ&×üÆŠ˜˜øøÍ›ãã““÷ìq’SÍ„&MÂR[~þ7æ£gÏ  ùó/_¾víεk32†A©_ßÏ/9÷\üó®SgøðåËׯwÍìëU:<üôiµ`ˆñþر3g®_¯\H®^…,©Ñë­[S¦ÌŸŸ‘qúô… 7oºæ"­[O˜ d n.±Á½}üqË–‘‘Œ—™©·¿2¦®™–úϧ  Úµ{ôX¾\õ—ëY”#êW_ýùÏ „†šÏ¨úkȵXê§ëÏþþû ®„ܵ†»5ËÁÿ])÷—躾víaÃÌx5ˆ >}ëV³œJ•êÔ €ë‡Yo¥JuëàZ½5ÔûW|YÏ*ìÛwäÈâïóÚµYY§OãZÌÞàýX½zçÎ *w’-[ÔG­–ÅT›«d¼qÃ\H´~"uÏNZ -o¶ðÛoש¬z69YïYüó€Y/ʉ]¶lóf'ooÕªíÚÍš¥·‰U;;I­\¹nÝÀÀiÓrrÌTõ>ߣ‡rÿQžºÉÉxϪÝèÄDü ‹dogžÖañœXEûÚÍ-'¢ˆ{ð¾öÒ˜¨ v7âtGÐÿ§×ɸÀ››@º8µh1hPjª+üâ‹oþþ&„·u¦¥éâ„O®iÓ’’Ú´ LKCþÂÂo‹SÛ¶AAiisæ¬\éZ¦X¼Xì¬ JTTl¬kÑÌ>g­Z;ÇÄ ÞeËÒÒŽÇUÇŸ9sù²kÙ'006¶J•–-'OFÎúõ{ôpý?¶kt¯>oçwX¯^·n³g«åD—™;vìôéË—çÏOHضmÚ´¸8—™ÀRÏŠëÖ8 ŒÎðáÊm!3sÏž#G\ž+W¦¦æåըѾ}TÔÀãÇoÙbö‚¹ß¼©‹™Š_»Ví1¸\Æ1s¾®*¾3Q¿þˆz¼Z€½sçÍ7kÕ =zöì¼<ìý_ÖkÕ*<Ül+³|«x%–ÅëýÆdªvøÌw¦Zµ-FŽDªÙjæôø±ž_OµºVífd<|¨®U{?.96,2rÕ*´ç®]¸ú´~ýN¢¢°ä{â„Zˆ3k´z"³epWÎ[²[·ÐP×[té’ê}ˆ¨U½kÖlÙr挓··Zµ¶m§O·o+§©£F1}º»Ô5Úµ›4I‰}ffóæªm[´PƒW aÕ"dR’ÚNME ,’½UôÔ4ƒ‚«è¤vOçj¾­½4žÝ8!¹dÓÕ’É”Y'õÿ=ë×[…ê—Ö­k×.(hÃĘâÔ±ãС®T„7nܾírOp‰“ŠW£§ôtµ]¬¶„Õ¢Šú£;&L˜?ÏžÙ³W¬P¿²·gO—.Æ­Y£îÚ•sÞ¼„„íÛ‘sæÌ¥KwíR¿S·¿^¯šm¸æ  àúue|Õ'ݸqïÞË–5oîï¿t©Ú[JOÿö²^HH‡ VõNŸŸ›;kÖŠ¢ÆÈÈØØÝ»õ•gc|¼¿X˜kŒ ú÷ ]´¨^½®]gÎĵÊi;'KŽÈsðàñã/.Z´fͱc11Ë—<¸xñÚµÇoß¾wï—_ž‡¾S¿Q|œŽrêÕëØqòd«òÄcßê ‰ŽÞ¶Í|'ëÖíÐaÒ$5qÍ#ÆŒY²D9ì߯öùRS6l8q1êw722Ô¿W¯_¿wïáÃçÎåç_¹rçN›6~~ÑÑøŸ|õ­Ü½[¿~ÇŽ“&9“ŸïZØŒŠš3gݺٳöïW~T®ƒ7 ýŸÙ(ùÇ™-ƒ'ÒwÝZµòó›1#--'çË/?oÞ²e™™ö-i~_³f-^œ‘¡Þ¨£GõïKoIûv¶KŠR³%w©õëwé­Þðìlå«,‰¼ªÔ´´–- HLTÞ°®x„°HöV±d¦8±ŠNj÷t Ñ·µÛ»Z”ìÙ݈²âJcÕ¼ ¬iêâÔ¹sHÈÆîBåèܵ눛6éñÅÅ©V­¡CÍk•¡)> ÖS•oØæÍ¹¹GªÕÿ‡ñHÊk«¨hÒ¤ùó³²Z¶ìßÙ²€e|­rNž—“Ó¤‰Ÿß’%(¹}û!C’“•¿qµ/X°bEv6>évíW­êÛwìØŒ ýY¾1ÁÁþþcÇffZÕ«Úµx½}ú„‡gdÀ› æ»mÚ(çìHìÇ4mêïïº[„Êwùò„„µkóò0ïQ¹ÿò7Ô|¢¨(/ïÀóçÛ¶0 6vÚ´ ÒÓ1ŽFNåÂPT¤„sËÈp:ݺÍÛ¦M¿~ ˜¦õ.\˜˜¸s' .vé¦LIKƒœ›}÷íqý°¿2mš;ÑjÑÂÏoΫz­âMq2ß+”¬ö<¶n…'›“ÿÀ š8qýúèè… 33Ñ: W©R£F£G¯Y“™éZÈ…Ë~XØÌ™¹¹ÊòÆ ,¦)—“£G/^½z÷nìTååíÛwú´êÍ¥K<)Äê%ñDæ«g|òDý'ßñãÊYCí vè0c†}KºÞ^åaõÕÔ®­¨×¾=MmÕÊß?66(hòäœ3µ}ûÀÀ¤¤^½ÔÐÐL…E²·Š³Oe ?äÄ*Ú×^2Q¬)x_;Á‰ sYBínÄ醀æ+Y‚«¢.NjÒ•å.ŒŒÌÎvŸºe ̇ª§bÁjРñãsrÔ–þˆȉÔ~ýÆËÈøâ‹ rrzô QÿEԦͤIj;wØ0,Faé©uëþý—,ÁUÈ©6ÿ'LPŽîrªßJØ´Ií¦lÝŠ«ªTiÞ<"µ×­Û¹óôéj±Ð•ª‡ÈƒÒôøoê?Þª^åG—– |ÃÔ~À!XRN´½{‡…­]‹›Åµþþʹåûù™š:lØÔ©¹¹½z……mØP§N§N3f`ÇùQ¦š ©ÿORmÕ½»º«† »w‰Ñsâï&Mz÷Ž‹Sõ¦¤„„LŸ¾}»þŒè‘>}BCW¯VK1Û·7mÚ§O\œr  ÂsµlÙ·ol,âô¾ÓËAªÿÎ;Ê©däÈ™3wì0ëíÕ+$$1©z¡–|§Ní×O †œ´äàÁ‘‘êß´¿ý}½û®ê£.]† IH0¿«vv–:bDr²Zt—ªœSÒÒô/Ô a‘ž­U¬˜µ»'\Œß‹-››x(èâ4tèÔ©Û·ë¡2—Åc\á”)¹¹j¼l•ºm[ppIS·nµNÛéÙZÅŠY;xÉ<Žý’Á³=0øÅÆì\¡¹ðÂ.y– J˜³ fù¿6ºày:sÚ,ü§PO°'2ÈgG1{ÄÃì>+q½b¨ ™" Ú ÆË€h”ßFNœÚr@Ð%ðßœ¡‰^C/›³L³¿ô'5sþ‡Aí#àmÁ³XÍœLqò´¿p-âãÜâ× 4%„<÷âdsYUX+XÝ.ž%X™0¤z¿¬c 3ôwÆÎfž•bö ziALö³'ˆ:žešðÂ*!IãçB¸€䪓€…A ôò±‹;Á€ÃI;ëýe5Ë1ŸnŸ€ø…‚sqò´¿ô_â×—£¿L )!ä¹'˜EœùáÄñ Go,§X™0S„¼'}ιšn‘F1æ"–È`ÜŸ­8u°p*`æQÇ‚¹®… ~_€«Å 3ä/àNпNÚÙ^H¬r¢|ó©”éiÙ¿W'B^Àe={2s$îÜ„ùJœp¶ãÿº4:™9 Ïvæ„%¸ÿ'`öGï ˜:¿8°´° …xÌ`ÌÀÒ',Á!^HïgNfQœ¡8ËM¸*Y€‹0ö ¿]°7"?b„’‰H0o°Ús‚éǸ~·€ |}÷¯/–†8AP±,‰îä €Ô_ ˜BrôE³–õÐxR}çO'” „£ÁN⇼§%fÛ½Ô¥;/˜}m¿ç䤿(N„PœŠ%—¦Æø0(³ø˜a‘ÊÞˆ à3¦ïx*N Ÿ`æÁ\Þ\ðgƒš•÷$ʷ⤃½%˜Zø­™>‡Ÿ¤81dÈ!CŠC† 2dHqbÈ!C†'† 2dÈâÄ!C† )N§ò¢G^¤'úê¯üå/DDlÙÂþeÈa‰Ó¨Q11Û·¯Y³eË™3gÏæçß¾=hÐøñÅÍPݺ½{'%¥§çå?ãÆíÛ>xððá“'‡|üøéÓ:uzöLLÔSÛ´ HM-*ºÿñ I“²³ñÎ8©9ŒŒ,Mq:tÊ”œœfÍ HIáÇÏ!ÅiŬY  6uêÖ­(gðà ²²ô< øù%'‡‡Ïž—W§N¯^‰‰5köè±jUfæÎ.œ—ËzVâdFDÌ›·sçÓ§jÙÇ>gHHtô¶m7oÞ¹S‘ÄÉ·ÕµkHÈÆ(³U«Áƒ×®E|Ÿ>£G§§CøOŸ¾páÖ-Ì¢ŠÏº¸|ý0gNݺ…†nܸÿñã§N?ófAAaáýû¦ltë6bÄÆûö;VPpöìÅ‹·oëÒ8dHTTv6rúù“ž~ôè™3……˜s_½ZXXT»kòìÙsäÈÕ«¸óì•+7n|Ú´mÛþ"˜;[º8aøÑ#µ†eÞ~ýÆŽu…׮ݼyÿ¾.„'† )N^‰–†°Ï¤/.Ù÷aROŸ>þÖ-Μ¼ Ç›;wçN,âaæYfHúþÓüùII‡c‰/..9ùða+qš>}éÒ}û¬vuÙ€œÜ¿¯ßÌœº8¡L8hdeíÞŸo†Xì¥81dHqòJœ`/\¸råîÝFüýW¯v^²óÝ)î9Ù‡-Z ´f JNOß±ãüùœœ={.^Ôó¬]›•uæÌñãj¶„%¾^½ÔŒÊJœ°Høä‰’¸± ¾I“~ýRRtÙ9ræÌíÛ7}®¬æS®='Ï“'ªÏë×ïÓ')‰ Rœ|,NmÛª…;Œ‹'MZ°`÷îæÍ\³F‹{ë—™Y£†òÓƒaÊË;xðÊl¶Ó[Ïû‹¥¨¯§ê¾—pCÀŒÊJœàhŽÿg‚«„‹±ºl4mÚ¿J Þ„¥K×­;v ·:uý:–û•«zíÚjÑïÒ¥‚‚{÷°À«hðΠ^Ä`6¦Ä?C†§¿íXÜ»§þå`™1%ì0}m‹^&–ïPBQуOžlß¾ÿåËN–ùNNBø³A 0¿ÑS]NjI---'çìY=ÕÊ[oâĸ¸Ý»á€…A}ž¤Ïi ‡„ȉy’þﺟ­[÷î½xoò_¼¨D ûdÈ›˜xèÞ=ÌÑi2ä̉!!ÂãÿÁ†ùq“&jF…÷°]»ßí…!CŠʼna9 ñ¿Vð¸ÃÂæmpx9s&?ÿÖ-¸À°­2¤8Qœ–Q§p,ÛâÇàã§ }‰!C†'ŠC† 2¤81dÈ!CŠʼn!C† ¾hâô5!„â#(N„B(N„BʼnBʼnB¡8B¡8QœˆÉ÷„L­Q–­Ä–''Ÿ‰S´€2 zêK¶è9‹„îÂÿ~,ø ìZOA_¼ä˜¡‚Þk‚UùHµ?Ã÷ÅÆI+•‡2 ©pâ”.¼!Ø‹Ó~Პ³½PC¸)<Ž /ªióoê]"xc"ÑGÙŒRœ)wâtZøoá”`/N¦é Þÿ%@Æ*š+½üÞˆÓR¡šð÷B}á©`5srr-r¢¯?~/ü\@ ëäŒð¾ý“ð¯Â\Á¬ñ¿~$Äø 0/ÿ‰(è%xZ×á5႟𕀜'„êÂ+Ê <<-“ŠS1î¯ ëý£²§ÖB¸1Óó¬sœðkáß„å%ÊW hÎÅé¿„T!W@üNÁ^œì¯½'@Цz ÿ èâ´I¸&à°Ä2cÖþŽpD~(´òÌÔ+ z žÖ…wuƒ€Ïìï¼·´Fo1¸H ¹ j_&Í¡8£¶zÂxÁüPMqÂÒßa3¡fÕ¢˜*Œ1ò½+TL‰òí¾ŽsqÒßô>â7 öâdm’ƒ{_°'sx” XÕŽòø[â§ ˜±ÙÅìëZ èñ•…Ž\ó¢ çÄpí‚ó2iæÅ©Î7Ø V·,üJÐo×ê¦ ‚„ø<¡¢-ô•†»7{NÎÅÉþZÃË‚Y»)N³̇ÚX$tR;j4sÎLqò¦.ÐDh( ‘S_Ò±–=—I3G(NnfN,@™gó#Ô™-À!ƒ® ˆ‡P!þPq:²ô¼àʃ8-ÌÙÌ»'ô;rb§9×î\œ¼¯ |$`Ï~æ4Z0gNöeÒÌŠ“Ç&Ït|€\éu½%`yP—=˜ 8ŽCÞæ ÿ!Ø y¾Ä C P8G`ñ Ë}xe·¸6G¸"ÀL#’æ½8y_v¹ð\Ûì0ao N ðA½ àݶwâ7Ëä;L(N>'85ÀëégB'¡PÐsÞNê»ví‹$Nˆ™/¼¬Õ÷Ì90(#âá\°BxWø¥à½8•¬.øÝ!ŽB‹½®ãBUៅ¬¼õœ”IʼnR’€ùD€÷ó¤Àö!„âDq"eÄ![Àž%\·?þ(Àc“mEʼnâDÊìî`Á Ë\?à¦ïSB(N'B!'B!'Š!„Š!„Bq"„Bq"„B(N„B(N„BʼnBʼnâDÊŽï ø9W¶FY¶[žTPqŠìi·BÏY$tp$ö¢áäN– Ý„?›¾¾Âù“Àþ0«_:¯88i¥²/ÓI_ãœ6~#¤\ˆŽ`ÇÁöâ„Óz.è9Û 5„›~©ú¨àä~"„Õ‚y@)m“Z²c8tÐï¾5Í'_‰“}ÿR.Ä ç„âµS‚½8™R¤ƒzqþ)dÌW$Å©¼‰f·ÕOŽCÐqp†ýQö×"'ÞŸœÕôs%èG¿G x‡q~NQš+˜µ#þ7„Ÿæú?½Oëš#¼&ü@ÀA…8–9OÕ…W”iuF”“2}%NÈÁ"N®Â—X–mî} ¹NÕÂ}â4/‚êäyiÊTœîø=éõ‚Þ=VâÔZ fzžUrŽ~-à ÂåÅéÅ'ß—*àãGüNÁ^œì¯½'@Цz 8IV§MŽêÀñ0.0Xfíï8—6Lø¡€Ã óÌþ+ z žÖ…÷ƒ€O§ã[Àéºh œÒ‹ÜL¿¹ j_fiˆ–Ö÷w…²lsoJ¸!@´ˆÇ³``„ÃQퟗ–¡ŒÄ #,¯>^0_Sœ°ô·F$àåÐ? ŒePÌ ^\Œõ0Þñ´³)NåSœô· o”óÓuí¯M`pï öâd¹«ÚQ>b`âK@ütA?]·duéàûŽ\ó¢ çÄð‚ó2ô/Ö6¾g€~ÍüxFoÚÁ›6÷¦„xáï’­ñï®rþ¼¤ÅÉùføBÁꃅ_ úMãZݬ@Ÿ'à…xE{T§çEœJïèw¼8îݬݧYFÖm,:©ÝùÑïÞך8ï 팜ú’&ˆ0ºw^fiÌœÌ˲ͽ)a’€ÅÏ&`½ÇþyI™ÎœX€2qLœùÁèÀ«Æ1”pU@<„ ñ‡Μ(NV×.Ìqñ£~ˆÞ%äÄî)r:¯Ý¹™ó¾.ð‘€E<û™ÓhÁœ9Ù—YÚâT–mî} Øú¾€^Éʔ鞓}÷˜Žú©¦(ÿ-˃ºìáå€ã8ä ÿ!Ø ʼnâ„a =œ#°x…å>|X¨Áµ9Âfñ4ïÍœ÷ua¿ϵMÀö–àÔ¿Ö ¾{'~³ÌÒ§²lsïKÀ€û?Ìð ¤ÂÊé–âô\Šœà™ó3¡“ w6Àã{òÃI}·àä~'`¹÷ƒý-Äèã5òâ‰bæ /k`F…Q0æè`Kñp.X!À; ~YÞ›¹’Õß0¤Âùh‘ ×u\À~Žº‡Ÿ˜•·ž“2KOœÊ²Í}Uä§‹„7 wž,Pœžq"¤üSˆùD€wþ¤Àö!„âDHq@€?–eà²ü¹ðG^ l+B(N„”ØÕÀ‚–¹~*ÀMß! „Pœ!„Š!„Š!„Bq"„Bq"„B(N„B(N'B!'B!'Š!„Š!îÁÁtøéU¶FY¶[žTPqŠìi·BÏY$tpló¢a8¢»¥€__Æù¹ï žžE¬p~à$°?¸ÁÄêWÉ+¥ñûÖÞ—‰p€!Žº0óààØQ‘{” qÂì8ØÂ^œp²Îe=g{'ÛÞð«ÒGû;Áár8\"‡#š o Ç´yƒ7õ–ìÈ ô{E>z ü‹S¤`æÁ!èÈCq"ÏLœp6Ž;;%Ø‹“)E:¨g•BÆ|Õ8ÝG?²ºâ¸ÒËï8-ª èÔC.ìÏs²¿9ñþ|,à„žŸ (A?¦=JÀ;ŒÓz0çž+˜µ#þ7æå1>-Ìõ"àU½Oëš#¼&à°p*ˆÙ ržª 8± eZçä¤Lû¾k$üV0ß½©ÐX0{ÐÓ»õm_;¯<Çâ„C‹ñÛÏëý•²§ÖB¸1Óó¬sœðk.JÖ8ØðC¡bŽÁK[–<'Ô–*ä ˆß)Ø‹“ýµXÚ…yš"è%àÔWÝ`mp¬Lm„™1kGÀ²a޲Äzùfÿ•½OëÂû¹>]œä‹o'á¢5p’,bp@sAÕ¾L'ý›"àoýü\œAŒ_‚׿e¤–ìn}ÕמÖNžKq ǫÌ××',ý­ ø¤õO#P”€W 0Æz¥Þœ7D‚ð Á”CJ”o^œ‹“þvár~®ýµI î}Á^œÌ!Þ«ÚQ¾¾„…x,)#~º`ž©êi] =‡ÍwàÚ€œ='†€xó—é¤qT#®ê, Êv‚Ùƒ%»[_õµ§µ“çRœœo†/¬n1Xø• ß4®Õ_5âó|ü¯h`Ê\ÊÃ>Óy¯…Þ㥱PŽiÇ»ƒ´ÍÚMqš%`>ÔFÀ‘“Ú==ðÛ›º@gS¡‘S_求¾”í¤Lçâ„!#ÚB‹ùGŽ`ö ¯î¶d}íiíä9ž9=°eâH7ó%Й-àB „%`‰ñ*Ä;ñ¸ÃÿP(ð…(½ÙRy§e‚9›9#`G ïrb÷9×î\œ¼¯ |$`aÊ~60Z0ç"öe:'Ö3pÊðï¬vx:sr~·%ëkOk'Ïñž“ýëk:>è'¢ü·,겇OŽã·yœSíŸ=‹„öžäÅ' kðØ0Ç2–€ðàÌ\\‹ñ>Ü£a¦3ç½8y_v¹ð\ØéÁ® æ+pj€_ëß‹½¿Y¦sqB ?I°]ïïÖ›¾ö´vRÄ N ðPú™'sfsLxO@~8©ïœì0•†“4y^ÄI_Ô}Y£ìï Gc GÄcÃ|…ð®ðKÁ{q*Y]ð%C*œ z]Ç…ªœþE°òsR¦sqÂßxÞ‚ýŒÐÓ»õU_{Z;yʼnò$cäÁ4¯„}M(N„”:„lû pÝÆ¾Èó¿sûšPœ)E°»ƒ+,ÝüT€7š¾÷IØ×„âD!„Pœ!„Pœ!„Š!„Š!„Bq"„Bq¢8B¡8B¡8Qœ!„Pœ);¾'è?ñIʦ•Øòä9§hÁþ˜v'¿^$tp|õ¢a8¶¹¥€__Æy3ï N΂K…n„Í_¬ÒÃù!–ÀÉñ :V¿“]qpÒJe_&JÀA8FÄ̃Ãtp°Å‹×ƒ8Ïç0À^á$*Ø=M¹^ðUÏö[(SqÂì8ØÂ^œpÚŠýKíœl{SÀ/ ìïŽÅ 9ü ~s§â:y¢aµ`þD?){“Z²c8tð.ùÖ4Sœ|+N‘‚™gƒ€§ ·X¼|!YØ!øªÞgû-”‘8áp?áuJ°'ûãþP/F 1_5N|)Ù1̧çEœ0ß­& ¯q:S°?#ÊþZäÄ;ù±€³š~. ýè÷(ßÎ$Ã<~®`ÖŽøß;ã¨L|®X?ø‰(è%xZŽWMø€Ã÷0;AÎBuáeZºä¤Lû¾k$üV0G¼©ÐX0{ÐÓ»õm_;¯ÝD?‚¿§îéw1UÀœòÿæé\ȉ7ίªCÙ| Ï@œpH3~XŸrÚ‹Sk!\€˜éyV È9Nøµ€ƒ — %3p8ØðCâô¢ŠŽïKrÄïìÅÉþZ,ãó›"è%à$VýƒÜ$ÀÜÀÔÂ4@fÌÚ±tƒsiÄ 8œ#h¬(Tô<­ ßæ"081ßNŒEkà”^Äà 悪}™Nú7EÀßú™¼8ë¿8®Û¤–ìn}ÕמÖnéBŸþ€MÛhÕnРÅ ôƒ‘Û{½µKû[(SqÂhÇ«ÌÇ3Å Kk„A>?ýõÅh%à±ñ±a\†å]Á¹iÃÙ¸¿œt9Åéù'ýÅ[êüt]ûk±+ƒ{_pþAb§ŸÑlÖŽòõ%,Äc™ñÓýtÝ’Õµ@Ðãq¨9\‡kr^ôœVâkr^¦“þÅ‘€¸ª³€T RÛ f–ìn}ÕמÖn/Q³œÒ‹3|!WcœVeÿ]`] ñk='Þ û=§ÒþJ]œœo\/¬n1Xø• ß4®Õ‚„ø<ê+Ø£2—ò°Ït^ÐS”@qzÞ÷œ|uô;ÞnÖn~04˜µ°0â¤vçG¿{_h"à $´3rêË8 VЗǔé\œ0 E;Ch1ÿÈÌôÕÝ–¬¯=­Ý9xvìCÞЧö½‰*ó{1s–å·ð fN,@™8æËì0Ù1”€é<â!Tˆwâq‡;Ǹ£PðÞ8Rœ*²8-ÌÙ 6´±KŠï'rbGÖSsà\œ¼¯ |$`aÊ~60Z0ç"öe:'e¬‘à4Ûß XAñtæäünKÖמÖ^2f ˜KÙ÷&–ÓKCœœ·Ï3vˆ°zÕLÇýTJ”ÿ–€åA]öðùÁqò6OÀ¦Ÿ½àá…àa‘ÐÞ3âDqrr-†Jx¯lc Kø´ô-nŒ÷á 3x|ÆÞ‹“÷ua— Ï…} ìš`¾§ŒÇ/øíøÍ2‹b°ˆøI‚•Iõþn½ékOk7Áp|„€Ý˜{XB¬÷ÀÕboÞ3öû‘w‹µ(Ü[iˆ“óöynÄ N ð&ú™'sfsL€×?òÃI}·àd‡ÉùÿTYñ–ûpvÈ£RIE'}¡øe Œ"1ªÅ8ƒ'82 ÛË+„w…_ Þ‹SÉê‚/RáÐdúw°ÿgxyYù¿9)Ó¹8áo<¯¾±oÕƒžÞ­¯úÚÓÚM° Ž|U€;îvŽ0¦EÕmì$Ú¯`ÿ†—Í·PîĉHÆÈ‚i^ ûºlmÏöÿöJÖ>'B|ÆëøØ[…ë6öEþ(˜ÿCØ×/ž8yß>'B|vw°`…¥›Ÿ ðFÓ÷S ûºl€/´Õ>•çö¡8B)wPœ!„Pœ!„Š!„Š!„Bq"„Bq¢8B¡8B¡8Qœ!„Pœ!„Š!„Š!„Bq"„Bq¢8B¡8B¡8Qœ!„Pœ!„Pœ(N„B(N„BʼnBʼnB¡8B¡8Qœ!„Pœ!„Pœ(N„B(N„BʼnBʼnB¡8B¡8Qœ!„Pœ!„Pœ(N„B(N„B(N'B!'B!„âD!„âD!„Pœ!„Pœ(N„B(N„B(N'B!'B!„âD!„âD!„Pœ!„Pœ(N„B(N„B(N'B!'B!'Š!„Š!„Bq"„Bq"„BÊDœÚ· JKûàƒV­bbÌMI!ÄW@YLÝyÉdìØ9sòòÌâD!¤4Ä *‰Ò…Ê8é™ô¬lJB!'B!'Š!„Š!„ŠʼnBʼnB¡8B¡8B!'B!'Š!„Š!„ŠʼnBʼnB¡8ByqÅÉþœ'_…q„BÊ ¥mùí§C“¥/¿T:æD¢¬Î|ò&DÉGBHù¡4¬½iù­déoªä\œJ#Ä ]"„RnxVZàFœt‰Ò'_'B¡8•žý7eÉ8eú^Tiï6!L#„Rn(o]kèÙó—¿„áo73§ —!„RÀ$ýïÿk‹èüH‡áIEND®B`‚pygtk2tutorial/figures/comboboxbasic.png0100644000117200001670000001701510103544635017655 0ustar finlayfcf‰PNG  IHDRxÎz•QíbKGDÿÿÿ ½§“ pHYs  ÒÝ~ütIMEÔ¨ù¢çšIDATxœí]ohGÚÿÅìÁ\XVà‚j¨D•¸|°8ˆJ^ˆŒb“ƒF¤Ð(hí 4vÞÆäCqz³sÐZ 4QäÀ…¸BxÊrH/ä° .V!¥kh@‚3há xò~˜ÕììÉ’-Ƕ²?‚³ÚÝ™ùí³ÏÌ<óÌ3Gä8(ì :¡@tPI<*‰W •¨x¿äÌÊ [nÍ“ˆ'OÿºÕ¢áAóÂØªï¸Y,† Qü¸tÂ~ð³øÃÄúðŸŒ\~›øþz„$&;ü¤˜¹×Lˆ'ËÖ2P8ž%ÔÂ]¨€Eˆ¼óû]Õ«Mtú8ázÒQ;Q‹rÑÑü¼dË¢ò"€ÒçJ‰JPgm#àåË—me—¹•ž¿»‰À"ùˆD@‘à“ˆH€D!D2>´â³ÂŽ«Ñ:2·Ò> „Ej¯¯8y­Zàóûå8‰J`,çþ± P €L˰¿:¥:¨D ¥5ó¼E™rЭªÒÔ4ý¬VÔèñ!õ— ûYþi51:^,©ì§º–Oþ>•/•Œ«뱡¸Z6n†^/à“âW„=½ÝBîKòÕÂwÑ¡÷äxHÏGœY×c€øÜY®)J@`¹leyÝÎòYåŸVãÃ&ËT¯q–BÕ³•BîKr^xIÛȽü¿—K]ey›8zÓ”Öä>¿¶E³×§ªM^ž GB&ËëñS#v–× –ÕW§ÆKªq•nUeÙOyR$ßNh’\’O|:ÃËìð+˯Ûß,4Oø&>þjž?qòÒà»ýÍ‚øt_ð»ÿyüÞM$‹,O|25ñÉ”³.N^¸8)”À"ÓT¯É²ŸR @î%þ^@§å²!Úåëñ“#¥çXΚ,Wµ²Ü º˜½½-³ìsIÞ˜åV’3–LÿqJdÀ…‹“®É™­ƒ‚XXf×'/OØXfi.œ¿`d!J´™,‹ÔĽPãÃq“åW-,¯åÇN§Šõ«ÕŠÙ²²² –¥É±Œö’O^šà,7LÎ~QöºÜJ0yiâöבeYXšB T¯"¶ªì 9:2õáÙÒ†š}R(–TY–gÎûeBH¥¢Õ€âZI]ËÏ\ž: ~4 ÑDÒµ1´²e–Y!›ÔÑÁ2¶Mžþj~úS®Éoß¹íL®e}’YÐÌWiC–Àwácb²w²FnÖ{åøP¤ð}iè7¡xD+¬©> ¹§¹’Z¦:]¸:5ý~"ö “<›JœŒ‰Lþy¾úïj|8^úÅl ‰$|æ’;³Û°,¹$÷ 7Ó®ÉÅïµQr²p3=yib{–ëÉ™ê|€"¦‰¾N>Û{†HÈÞÍ ¬›‰z“]‚ª×ä>¿F)ªÓ‰«ó³w²bï†jZyõû|i³V¦”øm‹Ê2‘å@¾T"!ˆ½ †K劑­ÊÄgäìVHÛ1$âñI€äƒä³Ò–üWM’cûä׿ÖO¡ÑÓë• DòÙdäö7 uìÝlý-þ®`|V :Uú”Rã'¥T¯â@z ݪ¦Î¥’§br/Q+E–PZ#™¹µ4~"rötÀøåyšVV” ¥TÐN–Bæžæ–,à RçR‰“qG!­uD³–Ó­ŽvŠ&?žv>=yþB#Š ‰&n_åí; ÍY&<# ä^™êÔ”A€ßOT65ñãaY&#§Ç/N©• O›/ä²OòãÏ,=ÊA‚¦UƒýA3«ºD‹…lÄ2€ì½ŒK!­É­c WmÓ,¹+Ë ©’®õÀ0Îó®¸å=gïÜnÊrÝ&Bˆq è”Âc'ã¯ä!uK G§?™ * €Øo¢ZE¿z%Ø…¢ªFéV54®éFVÆ Ø^Èõ$ük!Ý“7h9[MÈÞ¹½{»ùÓÍ ´Á×dmú\²`*k”úý ÒK~y:rÿ[ÌÜ[ò÷)Ù¬NŽÆ&><›ûW)ó(—§~ŸHÿ='÷ú&ÎÄ !”ÒrE+ÿ§V׌Ԩž£gß[¼¿äÊrò\ʵ¶:šŠq»—äLÎõj]}Ù»ÙÔIÙŇ®É%ÐᓈiUhék"bý>£M ¨‘7üÐ1ùçż`oó+Ð`¸¢ª3_—×(PZó÷–ž,—_”ý²?}?WZËW·ªÐa¹Q½F|~óýY ?ŸL´QHkòÛwÚ«£ƒ"g#»˜mB‘Ñ‚øØ÷¾–ÁßœR§ˆ!âZ¨N£Ãq 5Ò놌®wèX„ôúyO:ˆÝ”²ËBîorAuÔÚÏ‚›å^6Ô_¾q‡N™6` Žê”ôÊÍ~Šº¨Ž]r“ª„@j?}ýùzÝí¥"Kâ_;? ì²û›œýŸ¹—ÙŽ¦†eÀìù‘çÐ ‚¿‰ï²û˜ÜÄË—/~¾ÎþV>»Ãío8«—ÂÚ¢™hwæÐGæVÚ2¢®ÃhêO¥½,Ïk‡†DOÞXjtÉCŒE0†­ÃÃÞÃ#úÁ#úÁ#úÁ#úaï‰Ö·¿åuÀÞ]~¡.ßšÙþ¾× ûÑPÞXWŸå4­‘åÐÐH ?ØÁ2•7ÖýJÐa&ÝQV/Ôâ£Lâ£ÙÝgµK´G4ÕªÅ'‹¡ß&¢ƒ"ù(­V7Ë®&ÍÝ ød12šêÈËó÷)‘ÑÔîóÙ=$®¦Õ µ•»k[€À`„‰éõzÍIjE-=}¬miD"ÁãñàÛQ1­ëÕªV.=]Ö**Y ÆFSùGÅ'íí¡Ð°Å(¨óêyJ5H$4”°å`ùæLè· õû<Õid8x+ZݬeÍ6*ÀòÍ™N½T‹OÕÂ/«¹{ó`D‡‚ÁPÐxÒòJ3¿”û”ü·éà;±À›!"›,SZ+<ʆ†±·£ÕÍráAZV‚ͯúzIñQ†ôãç®â£Z@l4µ|s&rÊ¥òäר™ B|j1Wzºì$€ú}>rr¼¢®W–üý¡æðËþÈhÊß§´IcKà”ÆÏMåîͪƒ{n ±Ó“jiµüS±ôÏe"Ë·£¡cqH¨¾(A§r¯¿ZQB´_JÄ`é\¯Ò7dºEc£ ãû^›+õT¯‘7èîk BCq¿ôõ*ê÷…jEEÝÑɵ~9ÖqYn„¶CH‹E©^«n”J…åj¥;•¤ÿ¡ ®åÙ]²$o˜æ׫̑ônÃ/‡º¶ªþ˜·øò:ÁüuXCªSNtóâ½´OtDòÞŠÒ-ýsñËÐ>9&zË•_ŠûÕuÕ­ª;YPÝ,—þ¹ŠÈþò µ¸ÑÌŠKié5_‰k^%ÚëGW+åÒ³\µ¢RZ@·ªåÓÅþ0é•×W–ê—jܧ´ÑUv²ôt‰nU©^«Öß $€ÖìϦ@j”ÖÊê*¦Ó]¡®åI¯ìï3ÕB£â•_uÙk´'Ñ>BjZµøÓ*ÝÒØ|¥Ò %XN±Ó©Õ§Ë¹{×"‡†üËu½ðGF“¥•åܽyH•`¬? øn¼¸²Hõ1±¹ó÷•·"…o3¤W %h¥œ”‰Ÿ³»feŠdY‰œJZ*çZ€^ñQf/zN0wç1o Õ 5woþåË—#_Ûëgw{ÔWk cùÂÅÉø¹©Ä‰8c•Qê•^ºŠèЉ±=êï;ïu@¸aºJ¢2<¢_<¢_êè…Ëc¯²]ƒ\«œ'ѯv¢ƒûÙÛïðÑ G<Ÿ>?§:ÛH[ˆ÷o–ú• ‡J`B­n¨-NhyhŒO&Î$¢€Êq6µ?×(:’‡6À(†S©‡J” “âœî=EáYñè`x¯Ÿ²¿ÈÝ›WúãL–Y¬°[¤>vm[Ì_Ÿ?:.•H­ò™oÒÓšQ[ôz8$ôûÁu4à^¸ *•réÇÒØè$¤ÞOfÿnÑS—¦#‘Hê|ŠRºúlµÉI¹•¥4Ø(>+Ò-ªôÉ…ÿÍw¨Ž™ð8¥1t›#»¸¤mjGCf·AUÕ`}`égA~údtKs=éë­;µü»J$’ù›±V2‰Ê}ÝV|’3os<|ýnùqpÐ`6y.¹ø`éÊŸ,½ïÊf@@ ¸žäº#øf€êtîÆ!v“Ê|•–e¹²Y^}VìH“.ƒhèWìÔ¶:º²YN•žúd*u>%÷É (Äh‚OPU7ËÉs©£ƒaŸÓÕsãè`8óM&zþ®V«”ÆNÓ—&ãÃ1F¶Umâ¹1ui* ±ùov3t;&„ÄOÆ>Z  çVr³Wqx1ë.ØFcHlû87Al( »¸8u¹%7êv=7ÆF“—¦ƒo…bÃ1æpsH!¶„†ê·ßÆvƒCE L|”JßÌ\»>¯ª*Ý¢ªª.ÞÏ6ZóÕ®çF|8N™ÿëüa× – ¬[qo«¦§.OÍ]Ÿ]}–ùÝx8ÿ}2_(4ZËն熄ĩ„,Ëñ-¹idØfT ^™\·8f;=6vÚEâDæž®w2T*jòÌxKå8ذmyß#þÀ~Û•TUÍ­’gÎîg!:› ˜á¶{@fX(¥ 7æ”7»Á§Ô624Ývy÷c …B¡Ðö÷ðž¨:ö™ån‚Mopß»vV yh6×QÔ»wæÂ,ëŽ@¤Ñl ë¿ÛX`á¡9DY6%ÚvÊÃî!÷¹õŽÀÑñ°KØ& ‰^_9 O¨; ›Ôšë =¡î,lÚÃèuˆ“,:›·ŒÙåÚÃ.áÞ½ ÿ;–èEáèVWgchq7hEœE6E95rå3/h l“,w´¦:nÌýü|}}muúòdæo™ÜŠç=ã1šAóT«¹’8•àÜ@BTü¸QhŽò†:2:>©;ut‡+·ÓþÑÌ:ºƒñw¥R^ø:ùM$v"¶íÍÌÁcöêìØéD©TùÝxäÝ‹‰0÷åÂüõYèHž¿; ÇÝÉÜ?Äãâ÷«s7ÒW®ÎàโØfX$뀥%“ô̳ó_ÎU5êïóÏ]Ÿke 'ÑÁsð`”M_žŠˆ¼ɭ䩎Fw2÷–!;ƒ³_̞懆cÍ„I0oùL*hÉ$=ûÙLb4 ´VJ]šHžŸøx¢y’&þúÁ¯ýÚ–Ö5® 6%!Õ§H[ó³ ¡c¡ÔûÉù¯Ò.Dë5ܹ rµ …ºÃDXºÉˆ%Ü?º}©UUs…|@±W²¾V*•JSŸÛwlëࡪjñûâøèHw¸‚Ôe×£˜öèÖ;“—§††Âï%F´MmîFÚvÃÄG©kŸ¼4=}Ù º‰ƒÇÄ¥‰‘Óã“—&®ÏE"‘®q±YëŽ(ý [¨mä^¾|yˆvº¿p1z;Ü¢—Ú^#·’»pq’GÊä0]©9éÀº‚póûkº„ÒùÙƒé R·‘šF$©Þ·k#’ãÂÁt±V .­@]È=ìumlº€õg=šÎ@ì4:šÇÞ¥=Úƒ ‚'4%ÎøÑ‡NGXˆ„Ô-~´§¦;±MÜâG{jº3f³ÝYüh­@p%¥dñ£=´Q›~ðšÁNC²^‡m§×v¶µnbüh&ä^cØð #Ö2ÃÒb¹§ùÅ;™ÕJš¦A‚¢(áP¸»£ïbGÎ>ÃÒJ{˜¹“¹pñBäxlùÑߟ¯¯>˧¯ÏGÞ9(sÏ¢Ô˜aôò6 ZÛÔ®ýe~ê“©‰SlݽÜ+GŽG&>N±Dï‹ÌÝlìD<|,Š-=0Ý3œÛ²tßn,â {ÃÖ!®ÇÚV{ä yèÍâu@Ä .»´¾¶:ñajö ÓÍŶ-KWîÆ"jgÃm5“nÓÉ+³xr3+;÷¾`Þ”ÒÀ›AqŸ¶-KðÍ`úVfõÙª¶¥5rä8ìp¼Öý•¶éÞùßð¨lšñ:¢C1mSƒ°¤›{_,>XÊ.fƒÁ ݲ|(¶mYºx7Ñ Œ;ÐPÛT‹+bCC²w§ê¯¬òËOr“—&mwªÏÕ™Ïfò¹ï”7…gEgœ ¾- !¤ûvcásem‹½MUx·2×¾˜WU:(¥Ú¿]ü.4MPÞ¬h›Úã'T~©ßfÝ–¥+wcám ?øh…¿æYL]ž †2‹Ùìƒ,Ý¢ì:ùGŽGÆN'ÆÏ&E™ùl¦X,ŽMæŸæ$Ï_ „ß ²mYÈÒýìÌç×bCqrŸ<{u¦Q(¡C[ãˆÒ·5€{ê×qt0ìºWK×€ùu0o™º£¡íñìý{ÑÑÀÐÑpŒÊ÷¯Ï¶,âÈèÄ?zÏ-J¯Ï¶,âÈЂ îxžéÄYpðµà¶¾ˆ‡Ýƒ“iúuÀÚïÛßòuDníñ:yüô¸m§{pL„›n»­Ë2‹×ñóóõÕb~úòtæV¦QDô×bãg®œÝ™¥Tî•™5ŽM\¹ºg¸zw¨ªšü0> ‹&?Lñ Û¸^ˆ-!löh´ÙëüRž¹:K‰ 5rÏpzwPJ“¤|>_þin}mu^ˆlbÛÆ¥sµÞØTñNâGO^žÆåi¤—ÄÞd³ŠXz´ìêžáôîÈò•Jei1+Ë2q-&ÛÆ…k[ÕŽUzÿÀûy¿ŽÏݘsÚï¹g8½;*›¬ürضq9¼g 4¢‚n…nW-îgÃÕ»CéS¨ªÚîH®°F¸³Î°ˆƒ™ÀÕ=ÃÕ»#6UeæóÙJ¥L)-vWß™¡N£³Ñ?z‡ƒC×8Ü»#qf,6 ½;›$ÉÞÍ@§±ïEÇÒÝèX-ºAñ:ä8¬:åÐÅë8Pý:Äó<~ô®ÄÙƒ ¶ C»õûjëè.Ø»bühO¨;>Ù ð¥bgÓèK4ã–˜CpÏÝ ƒ¨/»â”RgühO¢;€ºàšMb§4ö¶I‹»<ÕÑ1XúvpÄö„ºSà%s ‹×·ÛX{–øÑ^¯£“ :°o ¦™Ô£¸³0ødЛ«Ç¾–­{`s¼#:‘œ®vqz âGo#ÔGÃæ¿Pxdt¼‰×Kó]pv¶GΡ©w6Ñ ±¸„¡5¡æ~ù•ïÀÄ¥†þ#¡Pv1»³«‡”•@©D)hÏn´¢â'â|ÖÕéÂQ,•’g“ìêütt(ŽDÑè¢ãêÑÁðò“å®qê€s ¬ ¥uº©N‹ÅbæN&Y®ß(@€Òs5}3ýp1»^\]-ä']ÂÄw“S‡¥¯ìÜðÆi®v÷ë0õéÔÄEÃÕ¨Q€þ7€Ì½lòÌx(r dÐMN¬ïLÍñ¡¹´¢ƒ\G‡Þ 埚e->X9=>ýÙŒ3\¢²wo«ÏK#¿ïäˆëÌw×8u€ M–ÆôÚíÞ-ܘ+ü«¹“AÝ…#óå¹ÔRΛ‡†bÙ{ÙÕb>r<’jÜ~v¨déx¡hûh«I ƒWþûʵ¿Ì—J¥f:€J¥\|V„¹Wtä6ó5` DèÞíp†%õArèÝÈä¥éбӅƒßV«Ñ™/fÃÇ£áHtùÉræKûÖ-]&ÎŒe€PP‹_@ˆŽÊ‹eϯcÇ0÷a©³ &Ñì2·éy£ðNi  ÿgKê<¸v¦0Ñ£ôï ½¦£MGtOit\–)@@ ô£ î=“tGÀõ˜]É6•Eë{²xØ%¸Ds®Í4âXÜîaö Ý–NwæV—(öTìuÐzlRbÛÙ·;,Âû‘eöWX6ÄYH0ÒÅá"·YóŽ¡h𢛔óI®'Aq@ÅŽ‰ õŒ[ê'ëÙµØÂãåæžmó¿°Òd°u0_G£bv»»•ŠêÅœ¤‘ŒÜ¡ –*ݘ"cÿ:JkÉØ_~ƒYN½u¬Eë·Ú Y¸?Âr•X9d¸f“Gž†~°qÍ FêýhF1‹ilÇkr*.œâÆò`sß0çÖ¨[ÍDj˜àÙÄ¿~žk%­Ô@Ì¡‰0¢ÁO>ô Žª o‹Pó`Éx¸Ä-Ñu¦êƒ™ú4ŒQUs7"aÑ>tûkàô â&VÕ¦à7³¶œD!ñµAˆiùý6Ñs›%t}1p¤xçå´WÄY;ÃL*léTWX|7-®Ž¹©Z «óQ%ø¥ú‹$ü3g¥ÄGT ¦æäй Þ=âiyõ„´DHk!ÅñPX `UT_¤® yÙ | õ3–/Ò*üABc(|øäš«]B6­+oE)5£ýûµÊ‹]cò›*È”XU[›Ã‡¹æçÌÕ%,µ5oÞV}qÁ„@·x?¯®­Í„ùt“tÿÏbkö¥sžIEND®B`‚pygtk2tutorial/figures/getselection.png0100644000117200001670000001163210050344475017530 0ustar finlayfcf‰PNG  IHDR„\ KвaIDATxÚí]ýSižwgÆñ]y H B ¯¼ ! ˆµ¬#·¾ÌŒ:££uÎ(ò2ŒB€äÅ^BxMNmí_°¿.ãìž‚Þ)0»·wUWW7wcaéÕ^3*}ßîš6îtBxyêS]O?ýò<Ÿþ¾öÚLJ(¾¾¾ä–sù¥Ï6ŸŸ¾O|{ ð) ¶ z <Ô:ÂÔ:µ… ÐÁÏÇg³/ÜíŠ/¹ê_æ“x4‡´‚yVf±ñ{ÿÞPÿµÁð‡Úš15µ¬«¿SÛ0VG –@]〡i P×4Vßü TnŽ5µ}ÛÔv‡ÄÍ[ºi¼Ó ¸õ TðzÇXKçcî4õöžoÆÞ?wXî!töOûï:îÍãn×ðDõ›C…§_â÷ëæøfg‰Q¾`Þ(è„NËÄÄÄóe|||‚C¹½Æ'¯]k¯5üáÝç±ñ+À;›n¼³ ¶_mÜZ³i{íæ†­~†-þ5[j7ù×l 4l ¬Ùx}GP_ˆa¯6`o½h?¿Î/Ì^nð0쎪Û-4GׇÄàà‰†½’†½ÒºPi]X|@Ô•r3JÞ*Û a+Rߥ·$“Dc”hÚeÚŽD­Á?üÀO6>ñàý{€¹Á2×'ŒÓÛ©ÅÝcéõûDA-•••ŽdTUUq‘$DÆý‰©k׌µ†±_¾Ý÷½^Ÿ½¿ØlywKÿ»[-€;ûßßÑ¿q§e“Ÿe“¿ù}¿ž-–í{ú¶ï±l êÝbl5ï ³ìðÍ~‚>?% ª?@ÔcÙ-˜ƒcû‚ã,Aq–`i°Ìš8°7y(,e˜O@6‘6®‰TÛªQjD”ieÂv$6ëvl¶=Fk$ät=ǰ»aÌUå€J¢Ðë0dÍ µOyå5–c+**ÐD³ô¡×É€ÂQâÉ0‚"Q@¼»µ8pøã4lô7o ´l 4#p;ç8°à-Qˆ‹¿¨'(®ÁÐàÀF`ˆPXB•] ¨­¢ÌÛ v¡f$8 hˆÓÄæØI¹¦ a.’ 3GM‚¦¶@À+ì%µC¬pŸF´uBÆB“+É@d”•ãd€F!À±Ó¼Å¿g³¿qs@ËæÀæ­AÍ;xíÛyÆ!ÝHÌæÀèö ˜ö Qϼ˜ƒ%!2SH|{h|+?é– ¥+"¥—ŸÒ@ˆB¤j¨‡„éVq†UœÙ/ÖXb³mqÚQ !6ÇŽs ³ÆåŽÈ ì¹¾3X”O%ƒ®É:UoÌÍlU9Ø .ª›<„zî‡x. ¦†ß~³ÅÏ0¯Žº6û7íØsã騳ç8 vÝŸß¼“ßrð°Fö#9ÿŒ…I«y’ö ‰™'é •v‡ÉZI 3/°' "VÝ*L‘êAPD‚ ¤‹b4vIöÀ¯°Dm“4§ÉЯ·Çëm²[B¡ /ìäÅäÑÉxÍÎs€*HÕxFõX6£K\hòŠ Ï%7àSW€Œ¦1Ü>ûYp“À3íâÝxò â_ÞÍ¿¸‡)8â‹™1ÿðßúGAÂöà˜6žG°¨ÌòÓXDüÅÐø–`™LBDR/Xf @¦,“©/KTebÕW?¼ÀDjc”º'F3B Ö˜%Ù½’ì¾Øìa‰ÖüxKÓ]èJÒ÷%é{S q$%[“‹ûTÅ7y1Z‚ŒáøÌ2‘Á®*èd ùt89´PM#îÚŒ+íõ-c~¼:dv…¶ƒ(àíâ7@ì´ €#OÔ"®™ùyîy–‡Ik`Òÿþ{ö ‹Li —[ùɶˆ‹HÑþ‘‘^)NoŽVw‰3â2-’ÝñÚöǯ0˜}@²®Yšc‘åtC=]C¡oM+4þ†ý@[’Zöýªí †ý†½XF2ÀÌÌOÑ8Š}‰ “>&¤òRà@(ÇPS ‹¢”&d"UCBõÌ>. #؃f±xmkrN«\Wó„ ·'ÔTU¤ƒË.T2¨’áTM!¶P”ݺ?þ€<â ›1ñÈhé¼Ã×£('i¨+Í—5†'¶D¥4‚)âR¿ªª¡.T¶G«M±é­ß¿ÄרÈko€S„GË9#]H. úNð‹i‡;aB÷Õ«‹j¿2ŠMò£ª’ŽÿÀ°Ô_ªŽ@£ö¸!ûxT€‰}'{²>삽g†³ÏBã‘37¢“³¢‘Á2:o©)ò*$(Õè=ɘÅA’ÑÜ5*m@Ñ2OÒ*3 qß³/V6À6FÙ¾©X} 7Ë`Ë£éu†ðŽ@br¬%Hr­Iú`‚ô‹©G{åG»•%x;à¿0,½´SY:¤,øO0'Ú€†§º¿Ÿß›s¶'ëìpÖ¹ÁÜó]p’¿ÏyS*+Ë]’·t®íƒ‰2è®­‡’dÌ‘Ñjþ6,¾q¬¢~ÊpXŠ-<¥f_¬º£lDê[ Ñ郸S¤iŒ×Ô‚_$ÑvÇj‡@$ëãóûP´ H(¼RÔ¯(jÚWl(6§–ôÉÙŠc}Ç[4¥ûKÛAT'‡U'5§z5§{@4gúsÏÞÊ;ÛšsÆxè¼%ëÓᬠC9Ÿõ~ÖzNKnÔ[AŸƒB#â³^¶Èàeå­ÆÞ? SÚ D@Y£pÅH¸r(Rm- ßZ@DÃDÆ¢/Nk–æ HuÃ*Çê LH.è/FѲ´ÐšPl‡` ¢EI øÀšvÜžZjOý«êäƒtØžJ?=œññˆæãaÍ9[æ'ÃÙ†ž̾0¨½h;„ãàeÛ‘Ïû„©¹” ï{&¸a"ãµ îƒqTGýt2˜²¶äŸ2´(›d˜úîB˜1—@µ‚{®X£Œ¢jl¶hg€UE$Öá ™þö¼l€¤#ö„‬x8¹ÄŽD8H+µ'F'í8NÙÔîÿxtÿ™‘Ìs£™çì™gF²Î\ pi4pyTwõwº«_öèêP´¢àù<0ÛÔì)hLYU’ ˜µªª*0¶•_VÐ3µ¨ŽïBÖ˜ðÄÐd²gm©Wa“ –× ¤7u—PSÆÁ{`–ƒJ ’ÙÓÛdU|ЊòwñúÛxâèð(â@V„çà¨5çÀFp`¥£©¥6ùq«ò¤€Mõ¡MyÚŠ8Ð|4Øp>ɺ0¢¹`².Úþã×¹W~¯\ý]îµß"PX6¥œ#nÛéШԺ[&*Hé9\…}>ÉpˆJX NFecÇÐãÒk$™]).³,s|v§LÛHÈ! 3&åšäúnàR‹ºÀCM= –Ù¤,éVÃaŽÒN@Æoº!P€=8pªGûQïÁ³½Ïõ€eä~j>tÞœ{¡7ï3úK}Ÿþb¡èªPXf=RŽãX™Yº î/Ж¡wâHÚQ骠,U• ´eU5¹Eò³üøù~ü<„€}@Dž¿ Ï?<7H˜$Ìݕˋ.‹òIðbóƒÅy°%G ¯´ D–O  TšÇO(Ï$& L)€­ %_Z@G”¢02í0* €ØŒ£±G€‰”ý9ÿtÿ!ܰӗHs#T½cÝAÝ‘çÓ²KµäN$ƒë z<ͲX“ð±,a×<ü||ý(î ° ßúîœÿs¾Û°aû\ã†m8P#~à¾$6ûlàˆ÷çàûžï; ( ¼[Ÿ[Šàαl¯]ñ¨Ä×wÊòÝ£ÉéÉ©¿>œú×I„ÉC•GÓ[h|SÓ›"ö:òˆ² :?œþ+øµ¦ÝÃäÔwèŽ'''ŽdzzzjÑeš(ÔúåÈÔäµ:ùrþty=ZÛ#¨Š“ÑÈéé¿pé79ÃÙÀ(×u§0ñAïÆ±§g¢’Á¨¦Üš ÷nΣ£<-ßMÍKÃ"É[¢²êÈ1šž\'cqd,O¡R5_g›Pfj t9år F![ãd,(ïÒ+ŠkUMú[MÆj“€QStƒÉ½?^_Jc¾NÆ:KM†[+ݽU¼{‰e¸a(.gÒ;d,2aàA0¼aöâ/ÍžA!gº9½Ö’ÁtÉ¥ðÒQè­‡Àd2‘Y>zÂj©ÈXµóÂ%ñç•ä Ód¬€šr9o±µD¬£û_$+ô{[2<ž8Žã÷¢šZN!^12¨ožØ'”©ƒÓ3Pëä<.&[ãôU™w•!yB’ –gÎ;dP1‡þì‡;ÝKm„['ÿtèL•ÇOº·òoô[Z2XFE½¶ÃÓÇô0’-“é[êŸô§Á¡'2¨—CC _Žl¡Š)*Ђ#²Û ¨)ަ „.Ý,$90ÊÞÈrBê™ܺ¨Ó®0äsá0*§“ÅäwS;¸6)Lô¹pW2è<1Y/.wµZ$ƒ®”˜ž&#¢$¦as!›;äÙœÞ*ûµX¸LdÌÎβ¨{öywÙçaQ>ž5º¼ .§"ÃRøXÆ–O2è —»Jujç™d‹]§3BÚR·È k<&i “Á$.“WÞÀéž“ûÄ4GLqJï¸%ܽ)&Ç~Q¦Ó² på#pêðQí?ËM®µœ}) ËúŒ)n J¦¸-ïpÚý؇ºw1¯oW;ËŦ<]J2ź tØ—wÐrjö™nÀ¥ñX³¹)ÏÂx–o-Ñߘ Ï­'Ëë)Ž+ §Ü\(´.Î'ÅeÒ{‰V¬ 2˜rynLè}¹„ˆ·Ñf¬Ú²LKu˜V‡,¾¾<«7VduÈRýœqEÃ'8×ÞêýÝyGð&ýó¯µ]–Рܥ_ÓË;ãì1ɇwÈ`Ч֋[¡Éºšz ÔÔzñ@JÖÉxÓ$c5ÿ7§µTЗ-_#šÖ%cÕIú~Æ:KZþ?ʺÍx£l†g}p½?{ê ×dx\î?pøÝzîý½LÆzñðXóßø['cU1ñ`| ‡‘\øRu¯û_êZ¯s©ÏÅަ†þkÎÅ¿«X¯s¨ÿ?¿uݱ ¯IEND®B`‚pygtk2tutorial/figures/aspectframe.png0100644000117200001670000001714110050344475017336 0ustar finlayfcf‰PNG  IHDRì O\Æ(IDATxÚí›ù[TWžÆ1K—¸‚ÅVPTAž£‚‚"JtFÓ£ÙÚlFÓm\€ÄA±X‹µt&3À<óÓĘîŽ`¦#bgz~œ~:ÓOf’¥æ{ΩºÜZÅ5š¼ïó>'ß{êÔ’ªo}ï©KPל9s¤qÖz((haPPpPPtPPÜÍ[y«ŽæŽt?œM-Ý1Ò½–;‚;ÊkföµtH^ÁáîH¯õãuFz=‚¿×3{û|Þ  AsátÐn¹¼gnM·Äž—·¢ëÓ×ãgÿÜÒü~Sã¿66œnhdnjüXÔMK“ÂòÃcÍŸ4¶œ!k>s¬…©>í]7rãvÖ­gšÞùøØñÓ­±ú8ù4™j~Èk[?buÛ¿‡ÇO·t|ÜÜ~ºåÄé¶Îß?yæDÇ'ÇO~ÂÇ3'd>Þyš™ —OÏ´]c×'¢vù´˜gî:íºét{×Çí=gÈmäÞÓm¢¹ÝeÏ›zOwöBî0͘¿#w™~oø´Ë|ö”ùl—»i¦{ø\×ЄÓÃgýÙø®çLïèD…™Š^ËY^³É~ËÇ5Ï]s8¦ý!àç†ééiÇU€œ˜˜˜xÂ¥ñññ‰Ùi||òÐ¡ÎÆ¦™;oÏ£s>ìËÎk|dþQò£ó™÷–(X½àÈÜE ó7Î_r”Æy‹ß^èªi||YóãÁM Cæ‡4,¤‚׋–7-\Þ´ ŒÌa4óöâІÅa¬^ÑÄÝÙÄqÌYD6…F7‡FÓØÃj>6ÍŒ±M!qn¦î†0õ±ðøcá ÇÂ4MäˆÄ–HM³"¡‰Ìjm39BÇ,j²B{,BוÒBŽ00G¥ãf3Ñ)Ç”©-äæVɪŒãÂê¬êì“ÜíšœY‘ÅfóŒšüNo« :ŠN%žÒžJ,:É\ÈE­_yÊPÜ\bôiCY¡¬‹œRÚIcòºS4f¬k ‰-þÞáŸø#ÿÀÏróþ³KgÇÏIóg'>—jù¼ÏÚCçλá±LZYWWç q}}ýl’[°Î!664~DÏ™;È=àí ¹}/0ÿbáÐ/7Ëý(÷¼%Có–°ñ±¥f^˜ç/tÁC…˜Éóƒ¹CL’ 1Í 3Ï_Îü¸bpñ óâ4R½(bhqäðâHÍäE¢XeZ*Æ3yIô/LÜ|Fi ‰ V™ÉKãÙªZ?ª1“ÇÂÍ¡Zf*ÂȦ°D§Iƒ ½™Üáz1šÉ+ C.›¹‡)CQi#QéÃä˜Ì‘˜¬Ñ˜,+÷¨’êÌ%/ârmª<»T“cólª§ã FU…QÇZÈñEÖÄb»»md-wR©][j§Q·Ö&l²Ìª[gKZoOZoÕ•3S‘Vn UmøÎáøtâsb¥¶þ0¹Ž«¶žÙU³y"GªKòõ‡ëÉî;3­•ˆô·Æ[~!&Í2áEÀae¤rS14wÉ€8$@ qòʤrj VAê¼Ð%Š!‚uIø ç•Ø5/e¼:aå…T33.åVš$j%XƒãM!ê"•Ym&‡' ‘ SnÓò„~Wm¦š  K6 :Ã’Äárý™b&:¹‡W†EM°F¦ ¹`e¤*3m±Y6e¦UŒVâR˜ašg‘fñ—m ÙB ±«)²iW;•ÃêôÚ1-çU8q­Í9–Y×1@=¬[gEr…-µÊ.œ]Õ®©àIÌ žå7¾@ˆA\[ë¯ ð˜w¡è%ÖgŸ}@<3ð|nbâ3¾ü‡ø45òd¿¤oþ²ÎùË:æ/5Î_Ú3o©I„+q¹ dÇêïd 3-’• n3OÖa«”¦K£Q½Ë¢:—E ŽéQº4¦?Xy*DÙîrÛòøŽøîàøžeª~‘¬aêa‘¬áÚadÔR¾’ÉêòL²&›(M.‹d%‹Xe°fX©Ù6)Y%ósÙw²ªx”Ê“U½Ò6›duÙ*%+‡u&Y¦ÎºÜ¢g°¾Çm7TÛÝGkÚfæÜM=Ú*9ÄÞ §TË¿ß%¼äá@b%ALé{Sw¹$žfIüÆa#ZQÃÊÃU¤¬yaHçâ°ÃW¾u, ;²0´uAH÷¼àþdy²¯œTóg' %«¥C‹¢ÌÂ"b—*åɬ{biÁw¢'–íN¼QÛÑÚy&8º™¦>u™òDxÜú–'@#㟉Uoùæª#$¶™Î®Âã|Ñ /E%¼¦Ð´Fª[•‰ûÁ‰‘Ú&j()J#´­tmÊ6MÒ3ª¤‰¼xëd‚8ÊÐä ×äΈd£2µ…hÓ¤½Fm@xÊ kXe°^æþŠr7Ó¤ÊêÕåÔ|šìÔ ¨ò†4ùÆäü7Ó öd>KìªóN©ó{iAúÊ=D*ÚÂãºÂvÎî!ÃÊCôD™«öç®ÙW°f7­O.îõØ ðݳrR©g\ºm”[„“Ý“uæd«Ò"ëYݪÌÔ°L¥pMc™JÉJøZ¤dåfÉš³Í&%+ÕÄ+Áê²Urö ù;ÇòþÁž·‹9—}õ®ÞHCå·7q€vÂ{e€vⳉ=±î>O+¦§§ofw"Hú±ƒ n3ž mû¬Ô³Fi~MùJDÊßðQ‘аBÓF¤FëX¶Q@Mj´¶).i/AL59>e?Ý…šTŠUêþ÷šƒXüŸïŽšô= é/‘”¬|g L§VÔ³ò¯þƒqÙÝb÷Š ‚•îH)K…¾àˆ–õkòúY"’ЏœQUž9±ÐHí¡IÑKPÒ¡º°ÿ¿p¤íË\ý›K×úb“®ÄDEΚýÙk\¹î¸|ÝAãߦÙh(íóÞ pmµz$«¬g­zÏ}ÀêÕ³:-OVyš¦óf u˨8t&ëv+ÏT{àdÍ{Ê’¿ƒ9¿´0X9©¹»,ùœ×ü]VnV£‘ÂU—¹ ¦@Uf ÑÙ9Ž4©Í­Uçõ‰• ]Á‚51ÿd|n¯*¿W]hŽ/I(ìO.¬¿ÄÚ€~šI*z‡Ö¯ìJ-îÌ^s˜èL^Ó/Í^»Ÿ¨e¯5%—P‘·î¼u/M;RËØOYe-éëZSÖËÛV}¹Ím7 Z ùžÔd™kÜ’U޳ʓ5ƒÙ-Y‰TJVJÓ¼'Ǥd•`•bUj£ÖÂ`åPJÉê<Ü)歅ϺyÕ c«¶•ì+~ѾîÅ~UfÕw3_—~±óúívüí„Äò$ön'ˆ` ã털Ëíì»’xâs‚¸½ç E©ØgUhO2du‡¢ôb‡52é$uԪƤ4|ù½ƒú˜ÔVÊãøô}”¯”…¬N{K›q–)3NÅeu]bhÖ«³ÛUÙ]½êÐä¼£Í9BܳŸ[óºµy'i2.wˆ½Ä;WêÄ鿺Д´²áKj MRÏJç[úbsZI3ÍëJ̺â!ÚVª Å݆bcFiÓW&’5ç©1²G²R¬æ=es¦é‹È×W²Ê•§éN‘¬Ö¼g¬DEvE[vU™V~5í 5T§WˆpõÚgµ§I€,YÓŸ°J±êLÖmö¬í6¶°Ý.KV»èY‰W–¦¿´y´­Vdu(Yå°–¼4&ä5¯Ž­Ùc#¯}ÍYsS±á•~Mî¦ïf vÞ/#à@ ÅJù}šŠÏ-¶ÛLⳟ2ˆÛ;LŸP¸Š®ønkiŤˆßb3(PÉÔ Äfõirš²›ÙÙUv7õ©ì*¿51¯“¬ÉëUå “ \]Q›¾¨¾÷Y¦ò}V–²EÍú¢£úUmú’>mñÅjjI«¡¤™ ±@ìJMÉe&"Õ­g-I.ëc^?"ÚCù`fy+!›^Þa(7¦nèJÛhä°vјQÝŸZ=J¦"£º/mÓ»Y› 6Ÿ(ÜÜš»¹3k³)«fÔ³guYÞ È{Vïde=ÀS¶™Ý€ÎVjäÉ*k[­òX•ÃÊ“u†N)YyÍ’uí«6ré;ÕÄ«×ì±K÷ÚÖì³­Ù;ƼÏ&\µwPSMOœó}bç}­˜?ˆËbÆã.übÇ5~nB@lø½*ã¸ëÚ€QêVÅoÎ_°²ÞUåŽÄå ³®òFTù&2Ô ˆ=,vRU0DŽ/W°ÃB“®¨__<¤-¶ˆ}V*X3PbÒ– %¿ëÚ®¤/}mÙ¨kËJ¼j×x^Pn¡€ÌŠ ¬ H¯̨ͨȨ¦XeÉZ=œN®Nß<’V3âb”êaFjÍHæ–Á̭挭Ãi[GˆÑô'FÝzV¾ÀbU–¬Ä(ñê¤ÓuŽåìYyÊæË“ÕÙ¸HÝé Ô‚glîÉjs%ë˜G3°z7Í[E¬:힬Vn‚õ}Åáº×™+Þx¿üÀåo|ÈF^lÚ?ªâS×׺Aì}U‹a’ˆÝ®Jûl\Ôb=Ù»ð~|{dö-&1‡˜Øu™ÿ Én—_uåaùÎëWò­â‹íʯkìþ¯ ýÜZjñ¸êÊ×µ=«˜aMªøÕÊÓÉ:ó ÖL²f:wXE¸º%kþ»GÏÊÍÛ€c;E«J§V6‰WYÏjÏÖRðÜèªÝöÕ¿zOÖ³ÎÀꙬ”¯R²Ê`•’µdŸÌa+Ûg_ÿÆo©¬Þ'|…épãáª8ô!óÁ®9`‰Ïßü­ b±ó ]ev¸î÷g¢– &Úêëëé$¬îÍZ5l’×ì&q–öÙ¸¸ÎçczûÆI|Ãëšé”â᳚|£üª+ö£«t!‹8»*°$Út«)Pm®dµñd5'®uí³ ³_°×Ú’<¯ pûK7e£Ý}ŸUú]ÀãÚgçš¶Ùs7€,z·žu»U´î»ÔÈZ¤žÕÛù>zV«v)Y Ÿµ‹BÊ`}Þ*aºú%+Y–¯V©g•’ÕéW¬k_•'ëX©Ë+yÃþßVpX×ø€LuŸÀý€0-?ø°áЇl”yc݇ÂO¶¨ó«ÅîìBâ:·ëÑäõM}«;¿Ûysâ^`ýB챫ì_Ÿ±»º¶žw?Ò5%¹OéVv%—t{[줖öÊhdWaSRÚRj¤:m}w—pzy7ß`uFEwvUŸËÔ¼öemêuÕ]¹›zÈ9ÕÝdQgo&w‘sŸèÉÙâòÖn¹ó¶õ1oï)Ún*ÚÞG.ØÞ[ød¹à©ž¢§ûV=Ý¿jGߪ=ÜTô­|º§hGwñÎþâ]¦Õ»zɬ Ãý¬~¦Æ’gûW?×G#w_é eϬ{Á\ú|ßúÝr—ÿJ¸ýîþŠ—M^q³k¦Ÿùµ¹7î¨xÕTµo€¼ù7C›öH®ù ÷þaf*X6d~â UÔ›¼KEÍbtK­•F—G$o?2FÞùÖPÊ*g;!k‚ÏúÛh»—’ÚqOˆÅ u7’õµuGÕ5TÔ<»6XY)óFÉ!±ÎØÁÑb&4®*Dµ14n£4J¦ÃpMå 5¹š»ÒuH®ˆH¨Th6*+‰Õ4F$TÓL„¶Š×Ì+Ä­3»)©:"©Ò¿7Ò©¯Tè*xíô ýÆè”jfC%3¯# •ܼHÛ‘Z!fhAlú&eZµ2­’¬ÊÜäËUާ1£2ž¬Îª¤)ó&2ÕqÙU*çÌŒ5¹ì&µ4“[IËÔy›é«Ÿ¬É¯¡š9¿Zb^VW‹[©Ð­ÞšÄü„OÁ™+×ýáÜçÔ ø¼øÝ o¼çgY{´%ÒãÐÃh'¤ŽÙwÍæâ‰9âïû z$(hnPТ  e.ËjùL°Ÿ[½½„Û£Å"W1kÏYÊÇEž~h±IŸ~ˆÛ£fÅBniåBþò2ÏqåöžZ8s¯‡0ϹÉZnóÞ~xóC.?<¦ž37hΣÒŠúý»Pùü-ÕÎ? ¼ÞÝÒAù†˜ñ¬55õ§É '/|ñù…ÿ ŸŸúóääŠZf6#æ}ÝÊî%/.ЃÐÊÛ°ôŸ»F§§¾`vÒ[·ìÑÄ!Ò/Ø»1õÅ…)1Ãê?^øÓù‹ÎõbFŒbRÜ…,¥•í½ŒžÅ£ðùPîèaúdÏONÑ(>ëÉÉIþß‹^ L]¸mMqÉg\Oçã‰ä[Èn—bJ|G‡7|>_Óç½é¸09uþnøb¼ÿ‡ý¼çÅëœÍ½ü½•7óž¸Äßûpqjòp+/iö’¿¼fÚS“î2Ë÷íÖÞvŸî|·7zŠó2d/Îú…÷Ý÷ø òó.^ø‰È÷»4+jÝÞ·[œ›y©?ŽîÄoóãÄ Äçtˆ}|/’Ý350Xì-˜š|0°šÝ?ªŸÎksÿ=a½µñN¼*êNÏß?âûbÁñ]…˜?Û¦¸x3_@w¦ ¢öþhïgýaáÿ5{¿owª¡ú1›ÿŸïÅ{ÓNb@|!öàø.B|k•¿ìNa÷ 4-BCr¿œLbCÐ-@ bĈ!@ ˆ!@ A€‚1ˆ1ˆ!C †1 †1bÄ Ä † @ A€Ä€Äˆ!C€C€‚1bbC † @ b@ bĈ!@ ˆ!@ A€‚1ˆ1ˆ!C †1 †1bºo!žšššå$Ý;ˆ‚Þ MègÑNLNNâ3€~|ˆoDyHû rú‘“8È%ŸÈz¬D$C÷Ä‚Eù]Ü]:ý¨íÄÔyr€'ðFy–”Cнƒøü…Ï}vÉ>a 4ý8wõÉÝ\tGtR7,5òXÌлýHþøk¹±þ'³žØ`_õ'ï.ÄÓŽë®Àùê³–f~D.=~àZn¬ÿ)­¿aËzg Ü!Pôh'°¿ù“üëÝ'w bùÐ]ä ƒh$pbݬˆõž&±\Ä'|‚{@ Í2‰ïÄÔ©Ä×?xü€Îæ' ôÐ}±.è„ ˆ¥vÂ;tǰt+~p†C<==ý#ôÄô@&1ÞnC †1 †1bÄ Ä † @ A€Ä€Äˆ!C€C€‚1bbC † @ b@ bĈ!@ ˆ!@ A€‚1ˆ1ˆ!C †1 †1bÄ Ä † @ b@ b@ bÄ Ä Ä † @ b@ b@ bÄ Ä Ä † @ b@ b@ bÄ Ä Ä † @ b@ b@ bÄ Ä Ä † @ b@ b@ bÄ Ä Ä † @ b@ b@ bÄ Ä Ä † @ b@ b@ bÄ Ä ñÔԔϕS“Éø` 8‰1„vúùB<99 ˆ¡R]]]÷.‰'§Î Ÿ¿ð¹˜‡·SËõ?Ïõ"‰åów báîÞ.ݧè_=·s’ëÖj¹±þg»þ^@쀠»¬»ÞNøØ…ð³Åvg÷.°þ§½~ö,݈!è^ C€‚1bbC † @ b@ bĈ!@ ˆ!@ A€‚1ˆ1ˆ!C †1 †1bÄ Ä † @ A€Ä€Äˆ!C€C€‚1bbC † @ b@ bĈ!@ ˆ!@ A€‚1ˆ1ˆ!C †1 †1bÄ >wî †~"I<55…w zð 1, † û\®>’Xº ‚îûn' è’ â9AÓŽë"ƒÇÏ%;1¿íZn¬Çú;¾þìħ3ÓqWmýaòªåÆz¬¿Këq†ýôÿ²ìùŠç‹IEND®B`‚pygtk2tutorial/figures/layout.png0100644000117200001670000001634410050344475016365 0ustar finlayfcf‰PNG  IHDR8HK?uü pHYs  ÒÝ~ü–IDATxÚíýsÅ™€-ç*`’Â$Ø2wHK6œõÏòG ’8,ɤ€"¹\© —»Ã)’ ¶ ÈqA¶S•‹ä}¥²_\A¸ÿ!g’_ðZü€lßcùzæéééé™]íJ+ûyêeè]í¶æÙ÷íîYyÆ:éð‰nºù’y|î§Vÿm”ã;2ž=¼«Ãx~ýSüÿm´ŸÕ8>ë‡×ü¡ñ~¨ñÆ3~D*ë»·#ÿck¾íؾ³ÑQß«z¦£î÷Ÿÿ¥Z¿÷f°±i/µ¨·z£–——u{qqñ_Tˆ_ýòrê]ÿyYÅÛïVßÉ uŒµçÝwÕžÏb;ÿcQm9¹øö{U‰_… çÍ´»Þ™¼lÝûιêÛg/©­Ä¹óALþ&Úæ‹Ëç~ó™<äìo«ïývQm›“ÓA¼wÁßN]Ò{’qv*±sjÑ|¸wÌû—Î}Põbæ³s\ÚaüΊ÷§Þ_ªóW$~·pE·“7͘^¸šv—ÿÀ/¦ÿ°4•/ŽŸxÕuš_¿±Öˆhj{ùòåÀUuûrn«jó¹´Ï¼yZ©µáKsVtüռר8+7¿$7UÜ6¿áöÙìè¸Mm?ØðÕ¹Û\ñå¯Ìš77mqÇís›:g¤}‡ìùZ®¸ãî¹Û¶ÅbK—#:ýý‹-÷ÎZ{îú›ùà®îd,xÛž¹¹ù¾Yitî˜ß²sNbóNuÓ‹m;ºPÛ(¶ï˜ß¶k. þvÆÞÿPíØºgvÛÃ3ÛæüXð·úæ\×^/zçUtÎ÷>2«¢ç‘’D÷pQ·í#±¸ï@ÐèÞ_ìÝ4‚{ÕˆîƒÅîƒè?\ì?RÙs´Ò´œŒ]GJýG‹úæîoF±çqµ-š{$:{O.‡çµZÍ/B]7†J„b™-êÄÄDž A?‘zŠ_iQ³õÛ4§"¸ùÕ¹4­¸Ã0MÅm[fMï0î2d›¹ýk izîmŸwJ¸yÛl†„©qï‚vgOÐè4lìì™ÉiH¨ô“†©ŸŠ®óž‡ι<Œb냳¡„óJ³í ñºž÷óÁžPBå›·œ¿gpN…V±{ïBïЂ¨Ø3<ÓóH9鞊û­FÜÃÞ娽߸Ë3­ •»ÿ`èÞᘊý‡ËJÂÝYÍ›»Øö?^й÷ø‡ö]O”ûŸ,†a¶½Ø¼cTÎÿ‰‰Óê|–0ÛÎðD]¼¤§'ÞÈ>Ò|ˆ(c…<ƒóyôO±EU9ór”Qß­ú9p6È–¡„’ú6}e!M´dèH~¢ L»{V·ƒ=_›¾>_3néš‘†äº»îÛœžÕ1AÞ‹G§mãï½FÂ@¯ý gŸ "cIoÁážž«VÆ‹ô›»ç¡YÝÞúp˜÷ç£h´»E¿ß÷xÉpF’a÷¾T ýå –Š - ^˜yïp bhc%”°Øç¥»²li0h÷=ê7/©èKd?qO…Ÿ½ iY—!dÿ3å¾§KƒO—­Ø¶sLÎgu2ç=ù?¯Öûå[ðqðÖ™š#J­˜þ)¶¨gΜÉ3¬53êÛÿq)CÂÛ7ÏÞ‘nàóɤçùöu» ’a$¡ç[çöy­_gh¦Ú™¬<­ÐršúÝÙ+AíØéˆx2œ %´ÃOéå¨Êu®ZTy¨8݉Št_!ŽRt—YsZúí¯ÄöÄêÏJJ]Zð*R-›«(5Sâžoþ÷n—„¡ŸF±ëX aÿ3Ť„V =Us|ظuO®a¡ªW¼7cØ%ippV<´†…®(‹Š±š3-þ®he´a¡Ÿ ý™î™Ñ™fZ—¬K-å YB>£4û°–‡ÅÁg:cødyð¹â Úž,+QWn]Íñªi4òÿ”7Þú¹cŒšg¾;–Qß«šÊ©§ºíîyc¸“pÓÖ˜uvÜ;»ÙHwª.MËŠÊ1‘Ð.'ÍL¤A)GïÙ™*ύ泇}QT¯a»a]° 3¤—MñöÚÉ0Ì„¿ {÷•S%42¡ž1Ǫ µýŒ Ó2aß¡RPmêŒ÷Xe÷Ñ­a4, L+&‡ˆRŽöyip÷Q[ÊÑ¡g*ƒÇKfêÛûL$áÀS¥<HÃ×ÏÏÅîz¡2ôBiÛCÏ&EÍÉ™Ód‡Õ‘2«"óAÖ3«=ª66ŠzxƒU’U ö[gÞ9ÿ™Y‘zþ8æHgô¬·LÀHöÓ6J{³‘½çé™ÕÏÓƒCñSgNË@µSJЮ´ŠžNFU¨¾©™!E¿ÀÃåjdèýª/røG†ÖEÏfHxÿ^¤û\S£:Fl­çiïá²é^8[+GͺTô3ælŠÖ©¶Îy*R ýd¨¬Ëȇþ]:×=›®¢ˆwoè¹JRÈñ’ïaIbðùâJ_,«­ÄÈ‹%Ýîzx¬)ulvVËxˆi©ÛzHbŒªwe®;‡Ïì•õçÎWƒŠTéwï‚(gÍÍè::ôó‹R}¯X'KÒðÚ;f}ç¶>à5d‚ÔªEãÙ/Ü¿|Ã+Mòžsûžy-^˜¯Ëìèrè¡VNmejT>Ÿ´“â¡jH2ôö„cBݶ=ÉÞÐñP͵Š@B%[_­1¡{‚ô1¯Ñÿ÷%kp蘃‘¼÷DÁ††/eLèK(ú –tÞx¶0oˆ„Cßö xÎNƒ’µj;â{˜#ß bÿw¢¶÷<4š!ª3µ6ETRc¬WetêÜz3ª)¶5^‘^—Y™-)«Š~3wíœÛÞÔ¨x¨U” R;鹜”¥ˆäë4ËÔà¦Q…ÊÑs>lh%jëLýT÷I-»74ͳ7ÌRŽšªÌ…ÊØ/L€•ÄBEÁ[¨Ð90œMΗ•jƘ0– Ë2õbZgV¡þͲڣÊÑþglë,µ„ÉÔwÏÎ)y/ÙÖ™p(i]ÌÉÊï–“âíÿnÑÛ¾T4wü'/}¿|àûA[nªí¶1õ½Xuˆª\ªKÔä‘ÙUœÔ×WeüIë˨ñ1êÙßVe’¦S{.Ö›u©)dB¯Ñ7W.rR%Ø“†oVà IƒæÊ„Ušê9R‘Pω[ÉÐ;r_YåCÕBT«Ø{ (m¥ŸwØþ¢ =w%W´8Ó`¸\Q… Uö嘛ɘµ-”fÇJi9К#M+Dc6>ëò01PpI8µ+‘‡a&Ló0VŠuqßF¾Sô£4òRåàKZÂJ Þ÷" ãQÆW‚8ôrÔîJß7ß<ã,}“®6QT3gü”XF]ôÉQ?2ê]6§dtJ4)QŲßV¶$=”BT¦güÒ4zWÉøIϼŒfë^ovÔËuž„±a¡Ê~J#+1‘HÂÞj£ÆrÔÐËô¾Š…°áíYÉa¡7 ÿwEš-a8h4ô«¤èW§:šÃB‘ðÈб|¨²Ü¿¼j$ÃW%%–ÍÊ®#.ñŽþ¸hïy­ôè©ÒÑSÕ8úZÅ߆qªpìTùØ©’ŠÞã«v™‘ó!y¦¬¢¯¹Õ;ë[] žëwTõu3¾öª½¹rؽ¯à_SÒ34ñ5Â9GêOV¬ù½f¨'NհЛ˜q͈&¢›õ ìsMÌx ú±+¹½é"S?=U³ëXAÊQY ÷î]þíÓ¥ä80Z¢ˆ ™ÔoØ•‡¾]J››9ô¼5GZ°Lˈì*ÔP´0òrQë§ÚÒxÔº†…¤»+ë­Þ#9ЂiÝc¯i#!•OyÛòS?-?ýzùøOÿ˜=#2™»„0û‚‡ÓoÈ‘ºQóK0õº-×â/߸.©µ±oÏlÐoC½Ð©÷—"÷­ÅúÔ‹¹ýjÓ\©×'*Öj¡’PF†æÖZÁKsNö%–ì£Ô¯QûŽ{«Ê@5&T¯6>8´¯,:Q©yåÚ€\¼æÊ~É… KBsF4}n&š‰ ¬{)]Â,f¨˜¬EUjçÀ—}--Ó’£Dɇ¯tÁ©L‹e¿Dúø©²’íÈ¿ci0L†Oþ¤$Éгñ§1 ŸzÝÛ>©oþì“à®Ó§EÏáè‚ûóì/Á(GLëœ_ˆqFcQùVYÖÐÕêω©ù+I õ5ÜÖ÷˜âßi*ÖX™tNW®}»ë‰r΋ה„»µf)™0H•ÎëEŸ¥A¥Zkjt8LŒrýZ˜ +µ×ëLèÌŠzþÓÎ~áN=gã’°tø•ò£¯TÂ1aV&4 Ñ ^ Ä;blMý¼|è§GU :ÜÓ¹ñTYI(™ðØ©‚)á“ c;OtüOD¼co|”´ñI½ÿÍ?Æã#%êrxñmÆwY’ˆu}¼®¢U?Ä=™”ƒKAv¾ü¹—Q•¨^,˜Ép÷¡¢7T¦©Ô®H­ï¦Ì”úW–]Ëô…œs3úòј–)ÙO¦g†þ¡¶dŸ6>ô®­yÞˇ{_('–ÍÑ ÙU¨¹ŒaE¿ä$µN(é!ߺÇìr4u2&YŽ:‡…‰Aý©F†Îd¨ô;þ“`dxüõÒÓ?«xʽþ?Ê´c¯œZ¦'C;|÷ŽM§ÞúÄjHŒ¿ùÉØ/U|<úöÇ£¿ø¨ÿÈXÎU™µÂ-jΤÆÏŸxµ³÷ä–žqwu›7uX‡…1*Í;F·ì»sçèœPmªÝùÀ¨´%ÔÒPû·íóC7ìØ¾s¼k×É®¾ñí»ÆÕ6-¶í“FöaÞý'Õ1ÛÍŽ®=£5±càä¶1+¶z‘Ü/Ñ58¾}p\Ú='{¼íXïàø}ƒcÒîï½x´'Œî¡ºmî·¢÷‘1Ž»FÆ’Ñ} jß¿?ÚiîO uLï¡1•Ðt¨›÷}CÚ'ýðw~c\…yXÏáÑ0Â=GÕÕa»)ñŒ8µ=iÞµûèxÐxt,~ÚOdŸóù¿)ÞØñºÀ¶Eµ&“šøç§VëÑ›ü‡­šû'©êùÛhùß‘ùTyž¼)¾«©[¬™¯ÁÑ'ùÞxûüU³Un֪ѯgýõ§åÚ-h/Çî]Î|¸æJ‚«W¯Öܳb®ÅžéÚÕ%¯‘sHs#ç—’jt¡Ý‡ËµžÉ±_\i%Òyh¨'jœ9{~9Çu¼ç/ê>»Î¾wNŹÉóçýigG^QóŸ²ußî_dø›\ZòÞÿRf'¨—çÔ2ÃLõôú\ñ»¶²33vÞK_---5~¢×ó)cZáü¡Ò{r—ê+gWXje˜&¯D¿õäÉߎ<|É'íyäQª¯ÔÁKŽ_ðµ”=_Ôû›uò|±”}^™]‘ýé£>¦ëù »&¢Öõ¡ÝQëé8ÿ—gþ ¥ÝXÆ›žžNž|k‹³¯œ§l³’|Î…¶í«<ý`Sóý®¼cW¡¯DÔ<¿G°>QåÕ·t«^nþã׋¨íÀMÐW ×)Jݺ»&¢:?hä•4’QWòq•§³Ú­C›rò5q„ì®oUùXëG´_Yo¡Ó í%ªNç|% fÔV|æÕ{¦®¯Œº’j-í±õvõºµæ;uŸó 7¬Q÷ÚfT©(ÍÖxFMvŸÙ#!ÉÆJ>;Í·±.ʹl¯j&“u1îj¸¯êzw2M•v^eÛ›qW²àli²IŠª×VšQÕ;ÑÏb.ï4ëÕ›ÏoM¾¥MÊ­ Q[ÑWΞqN€¯¯a‚³¯’Mé«¶£ZK¦úý®4£š9:Ù§+éPóÙjžÜëåäËy~Üâ}%óˆÎóªáþ¶í«s“çÍe’æŒQuCu«Ê×W⓱V_HªtÞ´2€d½ß|”´õéúʨ扨÷È;•†ó4JvBNQY§jzëìœÊyey+ç’Ùùú3bÕD­¹ìÔ„Œj©oµ“}v3ù{JÛZ'ý:-çDW:’c~%Kö•2dwï:-}Wù¼Z¾R¿²Œå™fÎúfýæÕ•9?ùÌÓѹMþþÖc–0÷ȤHšÆV_%Ÿùûj]ˆšýy´jçÕ*ô•¼$SÔŒ™…©©©•fÔœ£ÖŒGeüV¬L’ö„ëZÔì ëQºNN>PiŽAÒúj 'î«ÖWÉ^]µójò×gk®£ª_Vó3ª5¶L«I¬©ãŒ5ºCo¦ŒÚ”r.Ù9I××0Áú(iéyµ†ÃQ§k¡E5ÿm‹ú2ª9üM~ª56èÏhÜ$W\«PÖ[“ÒÎL#ÉÞ¾EúªÕç•5͹ú¢æü’ Ê½udT=iY³þ®«XÏÿó³–k}ë¥mKߦ_Xšó¼ZÛ5gý활ßËQõ¿×È·gä 'ûeåçD;¾i®Ljî™êüE¬»µ›õ¼’ןsÖWr¾9FU®:þ arŒZïÕ^-:)×QFM~9¶æêYž‹ìëMíÜWV'Ô|ï-:¯VsµÉË3J_+£6ü=µ¦ïoÏ“/ÏW"Ö°ôm“#JÜÊ}ÕªuÔ´¹µó0FÍÏ… ÒV#V9mnåïî¶ð‚‡é6Cym+ªù Û¡£Ú¿¯nµóªU¢Z“ÈíðÇæZñ•”¦œ|Ú˜öé(•Toå¾j‰¨zn£­&÷×íÓckþJ’s9+Ÿ3[¿´DÔuôþWáOL¬;è“6ìÃfŠ*Ì}‰ Î,Ú&‰‹º¬UU–g²?ZênÖ~òØz¬ÀÒQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQéVD@TD@T@TDETDD@TD@TDETDD@TD@T@TDETDD@TD@TDETDD@TD@T@TDET€ÕõêÕ«VQÚHÔ¥¥¥<µZ­"*Àj‹ª3§3µ*{ɨm‘Q§Ó¹pá‚)êââ¢(yzâ DX=Q7tttlHŒ °f¢~ú¿ÖqñâEó¦"ª P`mDýóÅ¿dXªE%£¬¥¨ÿô©åªÚ㵺x QÖ¬ô%£ * *¢"*¢¢ *¢ *¢"*¢¢ *¢ * *¢"*¢¢ *¢ *¢"*¢¢ *¢ * *¢"*¢¢ * *¢"*¢¢ *¢ * *¢"*¢ *¢ * *¢"*¢¢ *¢ * *¢¢ *¢ * *¢"*¢¢ *¢ *¢"*¢¢ *¢ * *¢"*¢¢ * *¢"*¢¢ *¢ * *¢"*¢ *¢ * *¢"*¢¢ *¢ * *¢¢ *¢ * *¢"*¢¢ *¢ *¢"*¢¢ *¢ * *¢"*¢¢ * *¢"*¢¢ *¢ * *¢"*¢ *¢ * *¢"*¢¢ *¢ * *¢¢ *¢ * *ÀMǹÉó ˆZ]¼$¢vtt *@eÔ‹ú”Œ °Ú\½z5™Q/^¼Hé ÐŽõFÈòòòZ *Àš‰jí\ZZJæ^ñQÚETKQåíôôtGG¢¬™¨ªâ­y˜•Œ °ÆU2§)ƒ ]Jß .Ȩí%ªÊ«NK Dµò*cT€öU JÅ5s‘QÚKTçÄ¢¬±¨ÙË3Ìú´QFµ®F"£´£¨Ó.¦¦¦t;UT¹dÉõêÒµlï-2–qnJòŸóÊ&“¿>+úå!oFUÏë,  n¥—®]»òæ·gòKTõ¤“““jkŹÉó*¤­>!’ÄMZü¡lª·ð̵Z­jQk~w.Ïwê ‰äÿCÄêD].Ô;<Ì›Q3¾’c=]Î#a%c!Õψц¢æ²6æH3E•ª<_Þ• ýŒí,ªù~©%jÎéõ¨ÅÅÅEÕ+7òù‘|ÐRQÿ|ñ/ÿô)†´IX)Ê›…MäÕ†13êÄ[gê5ãb\jæÕ*òç°”«Ò¡~΋ì[!jŒjæh½Âã¼€£ZQ;::p£ÍKßæ:ÒÈU.Š £®Õ’:cÔ¶ՙ̜ß/] Qåû8ˆÊd‘'£®vékM:#*¢5E½’òýÒU]žAÔÕ/}ÕÖ•YßvU'3ç·Y¦¦¦V[Ôäú¢®Â”/u]dÔ¤Ö÷K[+jÆâ¬þ¤GÔVëzáÂDmOQ•9¿_ÚZQ§SÐ_ŸÓ/bZ ¢¶mFÍó»k¾¨‹‹‹ZÔº¾;­1Úèj¦@Î|½r™íH½ÓudThõN"æÖœ¢êkök"ß_…–¢:Y~#ôöÍA~ÅDÕ'º¶•¥tœžxÑQ898ŸZG”QåFÃ1ñÖ™•<œÈõJ'ÜL‘ßùÕ{ÕœZÎ3Ñ p‹Ó˜&+’Ëèÿ_¶_ëܼUIEND®B`‚pygtk2tutorial/figures/drawingarea.png0100644000117200001670000004717210104353447017336 0ustar finlayfcf‰PNG  IHDR>C|v);NAIDATxÚíÝ?hcw¾ÿÿ½An¡"ÁlaÃ2¹… )l˜â®Ø…\±)"ÌŠI›)"ï±™bl\lÐvQRe AIì)kŠÁžb°§¸ $  dAS ذìbÁ.¦Ðožûþ¾Ÿó±,[þ;þó:ãsŽÎŸÏã|>ç£s®¤ËÉ¥3 ÒþÌ+4hРAƒ†¾‡Lã×ç ÝžòùKUÃÿøDÉ?îœðP[ûú£êüPþÚ¿ò…Ùö··W7”ǓˋJ¥R™L+i;¯h°Òþ2,=ih’Ûÿ'lw½6ùÇõÒ½{ ÙåÅûê¥åŇ¿ÔK«þ¹¼Ø~übu£1üäêêFsêÇ·í¥Ÿ®5§ZKOo´–Ú[ÿøSki}ôÙ\{k}tý›õÑÍ™ÿ«“›7g¶W¶ÛÛ+΋Ý|᣻å¥R©TžD&ѵ²w!ûííê|½t÷«ÚÚé”ö—aéÛ+¶t²GE8æÖæ‹üþõ°HÏÆ°-Þó§kaU~þCȧ7šSí­°ržÏæ,Û[A÷æ—ûýóÃÝÆæÒ7¿œmª~Xßmì‡eìÇÃŒýàÖt­ØºÕÚ{lu~·±¼ÉØÛë»kþñæd±÷Ø÷ߟ,Ndæ¶3ö½ß1ö“×zÈL?y­¶¶ÛØwßfì§o|ìH…±Óµ¿gwû?¿)¶öûùèBv·±¿cï±…êlû‹wvûÛ_õ;”·±w®÷[¸s½^êUÀi¬Æ÷ØßþŠvÁÝv+7z•WItP åüi”ö—mé6·¤°Wºë¸§Ã­]GM÷ls»ûØý¸ÝkìQ¸µ±‡ãöð·“ÅWÅía0vn÷+4öôÇrLî6ÖÎÐ^åF7ºVÃ;ð’¥ýe[z]ûÿß»¥nUìÓÙë£Ï?;*ºç‰ÛåÅï_oN-dï?ZÝ8,·\Ã^,nß}ûðÜîñÅæÖŠšÑ¶W„Óå»;·v.ô:C“m„Žî«,í÷^úXóڿƚݙK[þöWÝ™K[}éöÝ“ËíõÝ“Kïç»[UöJÜaŠU±í^; ¹*ýì€xsì\ r}ô èn¯°žÝÃæÌ¿šÛ+áßj-<ûq{8Œ?¸ÅØÃÔn“E¤ñypnR÷íÍídqyññ‹æTr cn{5&ï5Ö¹í=vn÷kGìÞwt:ãå¶wSóiÇamÎØ¾N—m¬ÏÓµÝÏ2«xìVÓÝ¿´?^n“¥ýÞK?·A™“Yz/nû_ú®èrÃÙn ïÍmrôÃm2“+a·‚îdqn»2>Ûþ{¶:¿ºñ䪳aÓt3s4nçήaäœ;»m÷¶=Ëwvw[Ûî¼½îu‘¸íF7yD §ËrgnÿžÝ혴2‡²n÷æå½Jû“à6YÚΚ½¹Ý»jw–¾ ºÖËËFtW¢nséß¿aèúJlÎ]I’E­¦Æ¡ÑEncØÆRë媄±†Š÷[{ðÃêÆúèÿÕ7g ³æÔÓí-«ÙÀnÎPÈÖK6‡…ìÃ_|ÎIN’Ø'©h ÿt­µD ²1lÜv×#m“Ÿ—¾þ¨^²Z»­kÛNn[:‡~{«W ¯ní”¶«?®—+ãñÖãÔMþ­ñÝ[ÒÆNd>n”^lß0 ó´ïUÿîoË‹Æ-K\ȶ–þñ'úø…mÞÞ²«QšßûiLî>h ¨ŒûñÒ¸]Ȳ¶Éýë7&þxs"ãýCãXC?r’GE²àKîÁÊ8ß4ìANoZl l¯„=;]ûäµÊx¯æbkk¶VœÌë£É ¯ä¹nt Õ›_N×l¿tïÑ¥ŽT{—ö'Ám²´?Š5½}±JÝQ—nßýx¹µ¥÷D׺G÷ÚÝ{sk]«RÓµ¢6yg×Åí•‘ ÍnV& w+‚ùÛéšá1‘¹Õ‚ êFö·Vœ1ÍlÛŠ{›Ceüë²vp'çlŸ[AoÅ+5§Ú𑬹£þm¬x ëæß‚ùXã³H^ “\Éζ­i1É¡o™ý›š›S?ÿ¡½e÷›í¯ll>¶}’ɽ¶$“EÛ;VÄ4àøE õæê¼] o»oóíÛ†{ß»kºÌÁê©Édã;»«Ü€°¿ªÎ{þ!Í@5ºØÎåÛ›Vcî^ÃäÝä„êöV¼!Öà´‹°äÖK^Ö$çÃ~i-Ù¥›wod%‹ãnticð†÷^{¡W+‚`»<©ú)í—Ûdi¿÷Ò»›sûYz¯–Ôƒ.=ùÝ‹[[ú®èÚ=Q«nïµéû‡Ö¹Ý¹xòe‘ðïÂ"F×j{ån膱1caš$ƃպ¬®™Kt×îÔ:Û^K°9xAìµ@«Ý^À1=Å¢Õk½eþ,åÿ&k´VDrŽuN^"äÒï¿?‘é¾P°u ìð×Kþ¹ºaŸÛ›xwn¿+ü雜¶­ÀϦoŠ~ÖÓêj^—½ûU½ÕÞ\¼Û–dYÕù»_ù_ÑYly‘%z½Ö>·Ú›mmKCݾW÷6÷û¾ÖäÛ}$„Zr¯¡2þííP<…oüõ^ò‚ÀöËPÞî“q$ô:*üêÎ=hŸÛ–éþÜæÜÏ‘àó GŽ¡~¦O^ÆÙÅS÷^à²Ã÷ur/Ø|¬æäýÎí¬±g¬)Þ×]r†ãßÑí·´?:´Ý¥ýÞK÷—[zÿÖ¯tý÷ènÎÄ?þí·“Ôá¸íF×`Û;“¥4ɱÉú¨-«Ýä_ÙôÞøêš½–bµ"ÛmV²FHãÖ eñê%æãK·»ÈÝõ’$äÉ¢Ó¦ï^çdw§ÚÚ½{V¤N­¶Ôë;ÚXc#¹­`Ûk]½[+«O'ëÙɥةÎÜ|Ýz?©gWÆ“Ÿ½¶¹ÕP»»èž¾WZ[ˆÿ-u_jÞ8oKOÞkçbu£ÿ£b·=۽ǭ¾þÅ;~i’œž±ÝÇóïu ˜ìHÕÿ^0Îm¹4˜//vog=ûcíx¶;»Ýc Úä'ÝÞ¥}uþÎuʃU®²ßý²tÿÒ~ï¥wß²ì{[‡£/ý$*–{ Ëˆƒ^ïe%ìËÇèÒiïÜ­à c—Ÿ\õæ¸z‰&>«IìÓ™Þ”êÅM¬àº³ÖÈüCM¦±†D*½¹Ïæi¤YµW·ÿF»Þ½ÎÖ$kŸXC¥5*‹BÍÏïvS9«±…-I“£ÍßÖß›yC&Bíîc¯µ²Ï“ëfóìE 5œö³Í»÷¾]@XÝ·ûH°v kXÞío¹@ñz<›¼_kÝñìo{¡á=¹†ýìYCq·é™O¯æb«×úåpÙk¹ýïo;a¹ÝÛÊ.k4ölåxö Óc[ÎôäçŽî^¥ýAɱÌŒ½ýKû~–~кõñ.ý$¾û.èÚh{´ÕA›Ç­Õ“èZãpï´îH;û¬VçïÝ£¡€{“ÉbÈ Ù^µ@ï, z»ÃG ’bkçR¸Y[£¹Òk*6ð95fj{ÉÏù¤:oë`ìu7*ZßÂîÏmݺ×9Y·5´‚ÕîGv7ªÛr»·¤u×òfRÛJÐb'ªýÛî%;U…ŽT»mI[–¯³wJZ^4ä kj¶6€~¶yrŸÉ"[Ào"„éÌÚݬžšÌb‹šºQm Ú:ØçÉîKv7·û¨XÈÚ%ÈÎ5ìuã y›cïÏ“÷á’ÍÈ…*Í¿ápT[Û†ßùàÖÎ^|ÞÏ^ ˜®­Yw°îcÃæ¬±g{ì‡,r<ï6ÖJ+¯ºÇZI»wi8r<û•öý,ý MÙÇ»ô½»hî»÷D×¾êI´æw¯ÄnèÚ²Wöúu¦šV¿LÞµíU?³¹ÙaDË:Úx!ti±š.÷DcöüÞ^¨y$ïùY“ޝyw¨Ž‹f./z­³Ý=µ­÷y¶ŽT¬Urú8­~*V {Íéö:cY[š‹é“ĽÖÊþv¶ÍšØ=ïd=Ò{ϲævéos¦·Ç†tos+Dì¯ú9ºþ:jÔæi¸c%ûŸÛòéMyýÖ)l·{´´1ì¶gw?’ŸÇ˲5´bYÛFò’¨{¹vi¸û^àöxÛ¶MnOû[›s÷‘£±g¬•6Vªô*?“èö*í­L>(·Þ¼¼i¿÷Ò‡=éßë(Kï^‡½ëÖýp»ºü™-àt¸µâ ‰®÷ýd¸§Hß×b‹®1;ÿŠnJV äд†Y»´¿õ†Êð+·ÐtIC.ó±úDr¹ñR’ŸòÚÎ5·±þX‰Ÿûó›v_g–kµ=_7볺í$!“óOþ­}’l 0<’cãu [Æ® ãµÚù·6Í9ÞSv!bÅ}¯mz,0p[/u¯•=*¤×‘Ðv)cK·'s³â,¹¯ml÷Z»û¨H6ÛZ±Ø½gùÖ\š06Þãáb.ÙìœL[VrÎ{/·Ÿ½àXa­º·³Æž±½Ïßd:º¯²´¿œKï®ÏôtVb7tí é'¥ó8–FÎõ†ôÖ[¾^¢SÕB–š}²ÁÖ;Xêáo­qµ×œÏëX  ƒ­­õ˥ث£›Üƒ¯r­4ölåx¦Üè}.$? 辺Òþr.½'º–§³ݯö£q’÷>žÇ¤Aò¤ÆÖKöïÊ8w(½u²ÙкDÑø™ü¥iòo÷ž³ÆÒ¤üªÇr!ÕZ²G”ØeÓYX+=c{•*It_Ui9—¾+º6Skï>ÙÅ'ïÆ%Ñ-€Šrï´“Ç{Õ†f^ëëhwmµ•Îo†µ5m åñ¦£û*Kû˹ô]ЭŒÿ=ËSxN;“è¦r©—ÿ)•J¥òÒJÚW[Ú_Î¥[îxáýö4ÙÆz²u~rÙÑ Aƒ ÎÕ`’&ßÚ›tÍÞkt¦Ñ=Í%*•J¥Ry¸4%…®R©T*•BWèž·´#DÛA©#M©ãMè*U*u¤)•BWèêÐT*u¤)…®ÐUúдG„ç ï¾/¤Ëo¼—.ÛOF*Ãÿ;RYÝxøËòbòoím6}*÷ŸÃ©œýÕlûöúlûpS*/O!8Ryû瑊v¤ ¦~óÅ`ª¶öííÚšŽ4åÉ¡[øäµÙ¶M³_ÉÆ‘)t•'„.‡ZeüóQ^œÀöüÒ|á~“/ å³ß å“kåXsôùHŦ·Ã×SÞÜéGWÿS*/O!X/ÝýŠ7S…gäNo~9‘I—Óÿ.ëHSžº¼¼—CPšõB7yUç¿x§2.t•§Ú“üé·}b¯‰¶O²Vt†é‹­?Þä)Z£ÏÇšýO©}¡#ÍPL¢«#My\Ç[cøñ‹ÕLã×göïnt»"5/+_AQX¨¾ÿ~¡jÉ«Eû[«ÇM7Ÿ¾Y°Æ½þ§Ô¾¸|Gu\{„õ Þ+Å1–l^Ö‘¦<®gÔnS Ùptu£Û}]pt_mW‹Wµô³ü­­(Ì42úµa²FÒëo“ 2{O™Å{nÐí§ËµÐU*•Jåé£Û­’jºJ¥R©T3º{W…®R©T*•Ç€nÿ?FºJ¥R©Tª#•ÐU*•J¥ÐºJ¥R©ºBWè*•J¥Rè ]¥R©T^ tëµ BW©T*•B·'º'ñŠ¡«T*•J¡» º«©—Ž7Ϻ‡{ °ÐU*•J¥ÐUMW©T*•BWè*•J¥R)t…®R©T*…®ÐU*•J¥ÐºBW©T*•B÷l¢kÕœzrµ1¬î|¥íëêü磕ñ^Ó,dï~µÕ¥˜RÇ•Rèž tmz;…tÀ]¼Â±µôÓµæ”ö¯RÇ•Rèž º~Ú|ñNe|¬9ú|¬iŸäÒ¿ýU.m›ü<•K ¤r™ÿZlÙØÉâGw'‹éòï¥Ë©Ü¿œâßYøôÍò€Íó^#é籬—îÝ[ÈåÿëÁPÞŽ‡L#óa¦Qÿ{VG‚Ž«“?®T ÝW†nÿǰ!ÓøõÇ™FmíÛÛµ5;Äísû½jºË‹Y^´ÏW7ýsyѯmþCsª9õã[jˆ¾(…ãÞGHsŠÚŒp…¾”åÅ?øi/¶>¸UlÙÉ ÃñâŽ{!•qæ|åʤ¯\©—˜O23 jœŠ³mí W'q\©,ºç Ýî;.ý ë'ÓÐ@4R±iSLÙ‰¡CóbŽ{!³íÛë³m»õ/üþ\º;«ów®Wçµ/t\Üq¥²Hè^ t“IsPc¸P}ÿýBÕî¬èм …cm‚Ïj$Ö §m®ãêÕW*‹„î¹G×®7­ãC²yÙ¯"ŸÞð¿®ÝjM×t _žÂ±µôôFsÊîÏå ï¾/X‘çÅ?3³£EûBÇÕIW*‹„îDwºöqc²hôÚë°`½ “}í5霵±×`ûô(…cò",—¦ÑÏæiée8ê´/t\Äq¥²Hèê‰TJ¥R©ºBWè*•J¥Rè ]¥R©T ]¡«T*•J¥Ðí£;ÃÞO¤Ò¡£T*•J¡«š®R©T*…®ÐU*•J¥ÐºBW©T*•BWè*•J¥Rè ]@J¥R©ºBW©T*•BWè*•J¥Rè ]¡«T*•J¡+t•J¥R)t/&ºz"•R©T*…®jºJ¥R©ºBW©T*•J¡+t•J¥R)t…®R©T*…îNt;Ç:˜VBW©T*•B·'ºG_JR+¡«T*•J¡+t…®R©T*…®ÐU*•J¥Ð=‹è^9±Aè*•J¥R誦«T*•J¡ûêЭÎñNe¼ØúãÍBu0õ›/S ÙïþV[ºJ¥R©ºÇŒîlûVkº–\°ÐU*•J¥Ð=ñæå“@WÃñ:O:µ”J¡{ŽÑÕ¡s¼h;œ4«gþJ¥ÐºBWèžhµ&J¥ÐºJ¡{‚uY­§R)t…®R誩z°R)t…®ÐÕ–Ñ÷R*…î±£;˜øË`*•ûÏáTÎæ“Ê¥^þ÷ïOÃ_¬n´«ˆÐU¬¡¾©R)t;'Wè ]¡«í ï®T ÝcF·×i/tUàj h;(•Bwt[K?]kNå ï¾/X“rºüÆ{éòlûöúl»ÿž–BWE­¾»¶‰R)t÷A׸kŽ>©´–~þCsjuãá/Ë‹vg·:çzu~ïû¸Gy"Õù}êÐé?«èr²¢EÛG)t/ºÍ©ßj {å»_-d“cyB±ÆcÍ£Ôt…®ÐÕ÷Õ¶R*…î’ý4ÈþÖ™ã/öé›åkp>Ê=]¡+tõMµÝ”J¡»dMǽNT{å_wòñ¾ð@èªHÚ†J¥jºK•ñ5Ý“xËÐUa**´=•JÝÓ]*¶>¸ßÓºBW?YèÝþé=h½v·izAR¥¥Ðº*/õ:Ÿ¯—ô ÝáۋރÞ=´BWè ]Ž—zÍÏÎs¶µ_NÝ$½ÝŸ¤îÛ±Ý]¨„®Ðº*"/ÙšŸÍW\h¿œtGª^ÐîMïQ{ñ¬ÒRè ]‘—bÍÏþÛ¥tD4º‡£÷ È{w§Ò/t…®ÐUy Öü|½ØQGÔI£Û pﻼ‡uï ©´ºG*°„®ŠÈ³¼æW^é ýr62Ô?Àý£ÛÏ_•“BW5]Ñua×ÿÊ™´/Ns_…ÞáÛÿ}_•“BWè ­ ¸þWÎä cé¬ýNwﻼÝèvãzÐ^Í*'…®ÐZð[ÝËö ŠÃÕt{u§êÝþî ]¡+tŕкB·ï)ûGw?zÕ…J螺oºBWGÑÅk^îʽÑÝû¹ÍÝoºBW誸½ªã Ýêáîéîý“¡xáW¿"Vè ]¡«NU:~.Qóòq »ÿ½Û^5]Õw…®ÐU¡©ú®ê¸B÷ØÐÝûÁBW詺*:E¯¸=k¿ÉîÿU'îîÍ΂V誦+t…®Ž™KAo?èözæÔá^{ ½#t…® PÑ«:®è=ºª× ]¡+tEï¥~µŸ ô“øpè Z¡+t…®è=q€u„\]~ã½ty"Ãñ¦³Xè Ý}е±v’Ý‹’Oo´–¬(´,¶þx³ØÒ–Q¥T©Î>ZO~ÞœúéZc¸<ðé›åd™ÓZúéZsêì”*J¡û ÐMåR©ÜXóÚ¿Æš6åXsôùX39v"óá_½hžmÏm϶3_œiØX+¾+ãœ`»_¼SOÎ3—þí¯réxcQßk¾ýóHe0õ›/S6O_Ûoo×Öz¡[/Ý»·Êÿ׃¡¼ýU¦‘ù0Ó¨Œÿ=¯Ïdñ£»“E›&•ûÏá—kÿï´¢á2œ$Õù;׫óCùìwCy¶Oeܶ@kéç?4§z3³í[­éÚK¦ÿ;]^È~÷·ÚÚêÆ£./Ú1cÇ@÷Q¤m~™Ñµ´ãʦ±ó±û,¦€žmÛQÑíjµ5ŽU+ ìb1¹D+mSñRˆù0ÊŠt9i6ŸäZ´+„éí,èõ}…®Ð=@M·1üøÅêF?5]+v›S?¾å§‡ÊâÝs°ƒÕà4 ½a“ d§¥ôv2Äsøtot¹šnNÙ©e„$ ·)‡åŇ¿,/&?I Éïr±ÓPôË‘Pëí¾@IîA+øl«Ú¶²Ëš\ú÷oäÒÉ­—<Š´Í/3ºv$ªïý®P5ØÃß¿¾ºÑëÒy¤Â·]ŽÛbåFwùckÙv\M×>nLm),1_o_úHeøG*G)ÁŒv+»ìÖŒ-ËÊ¡+tOµyÙNê²»Í-y…»Ûœ9ôí:Ô>é®oíneœSݦ©—›ÌLNì:ÚNxûÛbëƒ[ÅÖe»—i[ÀˆMÖ¦k~8Y´"¯w‘Êþí>º/Ôº—x™·ùe¾§k—¹4yõEáÞ7‰ŒO;—íhÌÞ};_èµÄdýÕJ/C„vî{]ùð%Xò’Âú¸„R´¶&t…k ƒv¥i'†]Ÿö:d{]«Ú©âK\9î¶{¡;Û¾½î›/PëêNkPMžœ4tTÂ5ì`ʾè§hæÝ»ÛK²>Úk&ïÒõw'þònó˃®]þ½g†q»w¿îc2‰î΢7t«S#³Ð=qtW7Bƒa²–ÓëDê]»ãÛ}•jóßûž®×’¹×]É^i= Õ÷ß/T½þw‘O«÷ÛÜ­Ù“½L{íA»ºï…´¶¹š—‡®ËÖÛÀ9üŸßÄ=?ŽŽîÑK0k¸¶Ïuá(t‰®qÕ}Y ÒPô.Káд;ÖØb‡Ý‡r?èÚƒÓî—Ø®Ý‰ñ)wG·µôô†ßû±+V+Ö“ AÖÈiéß1Ù¸j÷r.2¶¯­~Ùk+ž¬“Hw§•äômÎ=]»ClÛ¶û(ºÌÛ\èö®ßÁ刲RÅi¤LH¶TÝÖ`”?ÉŸÛÙÚ&j¡+tÜ{Ùî¾$§OvOHÞ—µ® vJxÞ'–ëS?ûE×ïÎ2ÿd?X¯³›C¯«Q+Ü­SOrÞ‹oju2[ÃdZûäb_±ZÓÍËq-6®ƒ†;UÉb®×ôÞËÖhÌ>ê>Š.ó6ºý£k7> Õwp)¼Ï|²ÓÓÑ›—Z‚%ËI›F½.,ºWNl8ûO¤ò°5cîÕaG©T*Oî’B¿*VM÷B={Ù~Xbõkº4níÊwJ¥R)t…kw;ìn¥?^€&»ßÙ«SÌùB׸¥Å`Êš­AÉš‹­éX·R©<ý´^ÙgçQ¸B÷Ð¥7¯íxïË­{úõå ÖÓOoR*•J¥Ð=ÁæeëvtP2…®R©T*…îѵ_:özŠÐU*•J¥Ð=tíqeÖ©}ï‡ð ]¥R©T ÝC¢kMÊv÷pÝ‹z¡ÛéÐ!«ÓyðÉJw:÷î…¤£S§óÝßH~$îÉ“‰:~ßÖép)àÉèN‡×t:ükH~ÆÞéðBºN‡¿'7ïtètÖépÏÛ“Y¿Uítø©'o=êth-ètè˜æÉïð:¶s§CßiO.Ñéð«¾N‡‹O:¸u:öX ŠJ¥Rèžst[{¢Pò‰KÇ®Ó ´1½pëôt^Ö<¦nÞ€®Ó ´1½ì§7 ëômL/Ü:½]§hczáÖé è:½@Ó ·No@×éÚ˜^ÐÕó•”J¥Ð=çèúó‡yrн-Ò:¯'ó8ÐåÉA^ é…[§hczYó˜^¸uz6¦hczÙ=N/ÐÆômL/Ü:½@Ó ´1½pëômL/ÐÆôÂ­Ó ´1½@Ó º¤NB¥R)tÏ1ºÉNõúÊ­nt·W¿X^Ü^ÞíÐõ„Þí•û²Û+ KÖÖ¶W w{z·W@דyn¯Ü¹^ß^]²<°½½Û+л½ºžÐ»½2·=]Û^]r²¸½½Û+л½ºžÐ»½róËbk{tÉBu{z·W w{t=¡w{åÝ·séíÐ%ÇšÛ+л½½Û+ ë ½Û+oÿ<”ß^]r0µ½½Û+л½ºžÐ»½òëÓåí¡«T*…®žHÕGMw{åû×áÖé è:½pëômLo@×é…[§hczºN/Ü:½@ÓÐuzáÖéÚ˜Þ€®Ó ·N/ÐÆôt^¸uz6¦7 ëô‚.ôê$T*•BWèö‰®Ó ´1½pëôt^ é…[§7 ëômL/Ü:½]§hczáÖé è:½@Ó ·No@×éÚ˜^¸uzºN/ÐÆô‚.ôê$T*•B÷Ü£kÏ¥²‡Aúƒé¶c¯p?:º›3O®./n΀.Y/mÎ@ïæ ôn΀®çƒjk›3л9ºdu~sz7g wst=¿þ¨<°9½›3 Kζ7g wsz7g@×ó“×&‹›3л9ºäDfsz7g wst=?º[¨nÎ@ïæ è’ùÂæ ônÎ@ïæ èz¾÷»±ææ ôn΀.9RÙœÞÍèÝœ]ÏÑ烩ÍèÝœ]2ÓØœÞÍèÝœ]K„J¥Rèž{t[{š= Òžºì¯ÀÛù¾Éƒ£ûã[pëômLo@÷á/@Ó ´1½ÝoomL/ÐÆôt?}hcz6¦7 ûç‡@Ó ´1½Ý÷ßÚ˜^ é è^ûÐÆômL¯ÐU*•B÷ ›|½]÷›.Š-~« Æñ{pŠîúèO×–×G¡w}ôÉÕzi}t=¿XÈ®Bïú(èzBïúèýGÕùõQÐõ¼ûUe|}z×GA×z×Gï\Ÿm¯‚®çç£ÓµõQè]]Oè]۞Ȭ‚®ç­V±µ> ½ë£ ë ½ë£7¿ÌÖGA×óƒ[¹ôú(ô®‚®'ô®¾ûöHe}t=ÿÆP~}z×GA×z×Gßþ9ÓX]Ïÿz.¯B¯NB¥R)tÏ1ºÉ—3[#süÅøŽ58ºN/ÐÆô­ÓÐuz6¦nÞ€®Ó ´1½pëôt^ é…[§7 ëômL/Ü:½]§hczáÖé è:½@Ó ºÐ«“P©T Ýsý“!šŽ{ý4ˆUÆû”cotþC@÷§k@Ó ·N/ÐÆômL/Ü:½@Ó ´1½pëômL/ÐÆôÂ­Ó ´1½@Ó ·N/ÐÆômL/Ü:½@Ó ´1½ Kê$T*•B÷ÂÖt+ãÇSÓåu¼—zÛ[ ë ½í­'WiÖ]²¶ÖÞ‚Þöô¶·@×zÛ[÷UÆÛ[ K–Ú[ÐÛÞ‚ÞöèzBo{ëÎõéZ{ tÉÉb{ zÛ[ÐÛÞ]OèmoÍm[í-Ð% Õöô¶· ·½ºžÐÛÞºùe.ÝÞ]’¦xèmoAo{ t=¡·½õîÛ¼0tÉÁT{ zÛ[ÐÛÞ]Oèmo½ý3Ü ]¥R)t/ø=]…xô{ºŒ…[§7 ëô²\§hczºN/Ü:½@ÓÐuzáÖéÚ˜Þ€®Ó ·N/ÐÆôt^¸uzÙV1½]§n^ é è:½pkôêTT*•B÷œ÷^.T»{/óô(«ã&› ûvC×éÚ˜^¸uzºN/ÐÆô­ÓÐuz6¦nÞ€®Ó ´1½pëôt^ é…[§7 ëômL/Ü:½]§hczáÖèÕ©¨T*…®~§»gM·µôlny±µºd½ÔZ‚^€'A×óÇ·jk­%èm-.Yo-Aok z[K ëùà‡ò@k z[K Kζ[KÐÛZ‚ÞÖèz~ýÑd±µ½­%Ð%'2­%èm-Aok t=?y­Pm-Aok tÉ|¡µ½­%èm-®çGwÇš­%èm-.É¥ ô¶– ·µºžïýn0ÕZ‚ÞÖè’™Fk z[KÐÛZ]K„J¥Rèê‰Tû¢ûü3¸uz6¦7 ûÓ5 éÚ˜Þ€îÃ_€6¦hczºßÞÚ˜^ é è~ú&ÐÆômLo@÷Ï6¦hczºï¿´1½@Ó+t•J¥Ðº}¢ÛœZÿfy±9½Í©gsõRs t=ŸÞXÈ6§ — ÖÖ<¡—7Uç›S ëùøEe¼9½Í)Ðõ„ÞæÔýG³íæèzÞýjºÖœ‚ÞæèzBosêÎõ‰Ls t=?-¶šSÐÛœ]OèmNÍmç Í)Ðõ¼ÕÊ¥›SÐÛœ]OèmNÝür¤Òœ]Ïn å›SÐÛœ]OèmN½ûv¦Ñœ]Ïß¿‘.7§ W'¡R©ºj^î]§hczáÖé è:½@Ó ·No@×éÚ˜^¸uzºN/ÐÆô­ÓÐuz6¦nÞ€®Ó ´1½pëôt^ é]èÕI¨T*…®¹/ºÿWè®´1½pëômL/ÐÆôÂ­Ó ´1½@Ó ·N/ÐÆômL/Ü:½@Ó ´1½pëômL/ÐÆôÂ­Ó ´1½@Ó º¤NB¥R)tõÈ}Ðm o>^^l Coct=¡·1üln!Û]²¶Ö†ÞÆ0ô6†A×zÃO®VÆàK–ÃÐÛ†ÞÆ0èzBocøþ£éZctÉÉbczÃÐÛ]Oèm ß¹^l5†A—,TÃÐÛ†ÞÆ0èzBocxn;—n ƒ.9Öl CoczÃ ë ½á›_åàK¦ÃÐÛ†ÞÆ0èzBocøÝ·Ó寰ÐU*•BWì Ý5áÖé è:½pëômLo@×é…[§hczºN/Ü:½@ÓÐuzáÖéÚ˜Þ€®Ó ·N/ÐÆôt^¸uz6¦7 ëô‚.ôê$T*•BWì]§hczáÖé è:½@Ó ·No@×éÚ˜^¸uzºN/ÐÆô­ÓÐuz6¦nÞ€®Ó ´1½pëôt^ é]èÕI¨T*…î%} dÿÇXÝØn//®n€.Y/­n@ïêô®n€®çóÏjk«лººdu~uzW7 wut=|«<°º½« KζW7 —G| ëùà‡Éâêô®n€.9‘YÝ€ÞÕ è]Ý]ϯ?*TW7 wutÉ|auzW7 wut=?ym¬¹º½« KŽTV7 wuzW7@×󣻃©Õ è]Ý]2ÓXÝ€ÞÕ è]Ý]K„J¥Rèê1ûÔtW7^lÀ­Ó ´1½Ýõo€6¦hczº?]Ú˜^ é è>ühcz6¦7 ûím éÚ˜Þ€î§omL/ÐÆôtÿühcz6¦Wè*•J¡{©yt—;åÅåEè]^Ün×KË‹ ë¹ùx!»¼½Ë‹ ë ½Ë‹ÏæªóË‹ ëùôFe|yz—A×z—Ÿ\}‰;èz>~1][^„ÞåEÐõ„^6âDfyt=ï~Ul-/Bïò"èzBïòâëùÂò"èz~>šK//Bïò"èzBïòâÜöHeyt=oµ†òˋл¼ºžÐ»¼xóËLcyt=?¸•.//B¯NB¥R)tõ;Ý>Ñuz6¦nÞ€®Ó ´1½pëôt^ é…[§7 ëômL/Ü:½]§hczáÖé è:½@Ó ·No@×éÚ˜^Ð…^„J¥Rèê‰TB·ÓÚ˜^¸uz6¦hczáÖéÚ˜^ é…[§hcz6¦n^ éÚ˜^¸uz6¦hczáÖéÚ˜^ é]R'¡R©ºBwtë%–ë%Ð%ë%Oè­—¶Û Ùz tÉÚZ½½õôÖK ë ½õÒ³¹Êx½ºdy ^‚Þz zë%Ðõ„ÞzéÉÕéZ½ºäd±^‚Þz zë%Ðõ„Þzéþ£b«^]²P­— ·^‚Þz t=¡·^ºs=—®—@—{Y{‡Þz zë%Ðõ„Þzin{(_/.9˜ª— ·^‚Þz t=¡·^ºùeº\/ ]¥R)t…n_èÒ…*ÐÐuzáÖéÚ˜Þ€®Ó ·N/ÐÆôt^¸uz6¦7 ëôÂ­Ó ´1½]§n^ é è:½pëômLo@×é]èÕI¨T*…®ÐÝ]~,è݉n§·No@×éÚ˜^¸uzºN/ÐÆô­ÓÐuz6¦nÞ€®Ó ´1½pëôt^ é…[§7 ëômL/èB¯NB¥R)t…î>è.dAדû¸ Yè]È‚.¹õ|±Q[ctÉêüBz²Ð»]Ï矕²Ð»]röez²Ð»]Ïßš,.d¡w! ºäDf! ½ Yè]È‚®çƒ Õ…,ô.dA—Ìøy ½ YÐõüú£±æBz² KŽT²Ð»…Þ…,èz~òÚ`j! ½ YÐ%3…,ô.d¡w! º–: •J¥Ðºû¢Ë ½@ÓÐít€6¦hczºëßmL/ÐÆôtº´1½@ÓÐ}ø ÐÆômLo@÷ÛÛ@Ó ´1½ÝOßÚ˜^ éºJ¥Rè^*t¯pH~Ú¯:¨­Aom t=¡·¶FÃrm tÉÚš'ô2MužéCn>®Œ3Ot=¡·¶ölnö%Ö ëùôÆt­¶½µ5Ðõ„ÞÚÚ“«™Úèz>~QlÕÖ ·¶ºžÐ[[»ÿ(_¨­®çݯréÚôÖÖ@×zkkw®Tjk ëùùèP¾¶½µ5Ðõ„ÞÚÚÜv¦Q[]Ï[­t¹¶½: •J¥ÐUMwŸš.(­ÓÐuzáÖé è:½@Ó ·No@×éÚ˜^¸uzºN/ÐÆô­ÓÐuz6¦nÞ€®Ó ´1½pëôt^ é]èÕI¨T*…®Ðí]§hczáÖé݉n§´1½pëômL/ÐÆôÂ­Ó ´1½@Ó ·N/ÐÆômL/Ü:½@Ó ´1½pëômL/ÐÆô‚.©“P©T ]¡»ºÕùçŸ-/VçA—¬—ªóÐ[‡Þê<èzr·:½¬¯euÞz™¦2Îô–åæCB/óŸm{BouþÙÜt­:ºäd±:½Õyè­Îƒ®'ôVçŸ\-¶ªó KªÕyè­ÎCout=¡·:ÿQ.]]rìemz«óÐ[]Oè屚CyÞàd9˜ªÎCouz«ó ë ½Õù¹ít¹:/t•J¥Ðº}¡ûln^ é èÒcy'½]§n^ é è:½pëômLo@×é…[§hczºN/Ü:½@ÓÐuzáÖéÚ˜Þ€®Ó ºÐ«“P©T ]¡»/ºÿøÜ:½]§n^ é݉n§·No@×éÚ˜^¸uzºN/ÐÆô­ÓÐuz6¦nÞ€®Ó ´1½pëôt^ é]èÕI¨T*…®ÐÝÝÊ8èz>›«—*ãÐ[]r![‡ÞÊ8O¡ªŒƒ®'÷q+ãÐ[]²2îùb£<À4$è’³mæCB/óŸ®y>ÿl²È: KNd*ãÐ[‡ÞÊ8èzþøV¡Z‡ÞÊ8è’ùBez+ãÐ[]Ï?Œ5+ãÐ[]r¤R‡ÞÊ8ôVÆA×óëS•qè­Œƒ.™iTÆ¡·2½¼Õ8]¶ÔI¨T*…®ÐÝݧ7ºÿøÐÆôÂ­Ó ´1½@ÓÐít€6¦hczºëßmL/ÐÆôtº´1½@ÓÐ}ø ÐÆômLo@÷ÛÛ@Ó ´1½BW©T ]¡Û'ºåŸÿ°¼X€ÞòèzBoyàùg Ùòè’µµòô– ·<ºžÐ[ a¹<ºdyÀz™f¶Íô!7Oט' ºžÐË:LdXŸOo[¬3 ºžÐ[xr5_(€®çã¹tyzË ë ½åûF*åÐõ¼ûÕP¾<½åÐõ„ÞòÀë™Fyt=?M—ËЫ“P©T ]¡»/º?]ƒ[§7 ëôÂ­Ó ´1½]§nÞ€®Ó ´1½pëôt^ é…[§7 ëômL/Ü:½]§hczáÖé è:½@Ó ºÐ«“P©T ÝKŠnÿO¤rt^ é…[§7 ëômL/Ü:½;Ñít€6¦n^ éÚ˜^¸uz6¦hczáÖéÚ˜^ é…[§hcz6¦tI„J¥R誦»OMw¶ýã[Ë‹³mÐ%ë¥Ù6ôζ¡w¶ ºžÏæjk³mèmƒ.YŸmCïlzgÛ ëÉ}ÜÙ6ôζA—œm{B/ÓLטÞr²È|HèeþOèeŠ-ÖDzPe=IèeýóOèm?¹šK϶A—{Y»†ÞÙ6ôζA×zgÛ÷ ågÛ K¦fÛÐ;Û†ÞÙ6èzBïlûÎõty¶-t•J¥Ðº}¡ûä*Ü:½@ÓÐýÇŸ€6¦hczºôXÞIo@×é…[§hczºN/Ü:½@ÓÐuzáÖéÚ˜Þ€®Ó ·N/ÐÆôt^Ð…^„J¥Rè Ý}Ñýþu¸uzºN/Ü:½@ÓÐuzáÖéÚ˜Þèv:pëôt^ é…[§7 ëômL/Ü:½]§hczáÖé è:½@Ó ºÐ«“P©T ]¡»ºÓ5Ðõ|rµ^š®Aït tÉ…ìt z§kOoÔÖ¦k ëùl®:?]ƒÞéè’•ñéôN×x Õt t=¹;]ƒ^vŠåtÍóÅÆd‘iHÐ%'2̇„^æ_ly>ÿ¬PeHÐ%óÖ“„^Ö?—öüñ­±&ß‘]r¤2]ƒÞéôN×@×óÁƒ©éôN×@—Ì4¦kÐ;]ƒÞéèZê$T*•BWèî‹îãÝï_Ú˜^¸uz6¦hczáÖéÚ˜^ é èv:@Ó ´1½Ýõo€6¦hczº?]Ú˜^ é è>ühcz6¦Wè*•J¡+tûDw²øèŸË‹“Eè,‚®'ôN|k!;Y]²¶6Y„ÞÉ"ôNA×z'‹Ï?«ŒOA—,L¡w²½“EÐõ„ÞÉ" Ë“EÐ%'‹žÐË4¦¹ù¸Øbž$èzB/ë/°>!ŸÞÈ¥Ygt=¡—ï8Ráû†|üb(Ï6!A×z'‹÷e“EÐõ¼ûUºÑuz6¦nÞ€®Ó ´1½pëôt^ é…[§w'ºÐÆôÂ­Ó ´1½@Ó ·N/ÐÆômL/Ü:½@Ó ´1½ Kê$T*•B÷R {å€CòkLdü°¼8‘]²^šÈ@ïDz'2 ëùäjmm"½Ð%«óèÈ@ïDt=ŸÍ•&2Ð;‘]rö%Ð;‘Þ‰ èzrw"½Ð%'2žÐË4ÅÓ[ªÌ‡„^æŸ/xB/ëK³>–cMÖ“„^֤⠽|Ç¡<ß×r0Åv ¡—í“ixBïDæþ£ty"#t•J¥ÐUM·š.lÀ­Ó ´1½Ýï_Ú˜^ é èþãO@Ó ´1½]z,ï¤7 ëôÂ­Ó ´1½]§n^ é è:½pëômLo@×é]èÕI¨T*…®ÐÝÝ{÷àÖé è:½pëômLo@×é…[§hczºN/Ü:½@Ó»ÝNnÞ€®Ó ´1½pëôt^ é…[§7 ëômL/èB¯NB¥R)t…î>è[ ëÉJ[Ð[l.¹-¶ ·Øzü¢¶Vl®ç“«Õùb z‹-Ð%+ãÅô[Oo”Š-Ðõ|67û²Ž ½Åè’Óµb z‹-žBUl®'÷q‹-è-¶@—,¶<_lªLC‚.™/0z™.íùü³±&ë@‚.9Ra=Ièeý‡òž?¾5˜â;’ KflzÙ>é²¥NB¥R)t…î¾èÞý* {ïÐÆôÂ­Ó ´1½@Ó ·N/ÐÆômL/Ü:½@Ó ´1½ÝNhcz6¦7 »þ ÐÆômLo@÷§k@Ó ´1½BW©T ]¡Û'º…êw[^,T¡·P]O¾@¡úà‡…l¡ ºdm­P…ÞBz UÐõ„ÞBõÇ·*ã…*è’åBz Uè-TA×z ÕçŸM× UÐ%'‹…*ôªÐ[¨‚®'ôª4,ª KªžÐË4ùÓ‡Ü|œK3Ot=¡—u©°>!ŸÞʳÎ$èzB/ß1Óàû†|ü"]f›]¥R)t…nè~{nÞ€®Ó ·N/ÐÆôt^¸uz6¦7 ëôÂ­Ó ´1½]§nÞ€®Ó ´1½pëôt^ é…[§7 ëômL/èB¯NB¥R)t…nŸè:½@Ó ·No@×éÚ˜^¸uzºN/ÐÆô­ÓÐuz6¦nÞèv:@Ó ·N/ÐÆômL/Ü:½@Ó ´1½ Kê$T*•BWèîƒn¾ðõGË‹ùè’õR¾½ùôæ  ëyÿQm-_€Þ|tÉê|¾½ùôæ  ëùäjy _€Þ|tÉÙ—Bo¾½ùèz>››,æ Л/€.9‘É 7_€Þ|t=¹›/@o¾ºd¾à ½L“K3½åX“ùÐËüG*žÐË: åYËÁëIB/ëŸixB/ß1]æû ]¥R)t…nèÞ¹·N/ÐÆôtïÝÚ˜^ é è~ÿ:ÐÆômLo@÷Ú˜^ é èÒcy'½]§n^ é è:½pëômLo@×é]èÕI¨T*…î%E·ÿ'Rå _¼·No@×é…[§hczºN/Ü:½@ÓÐuzáÖéÚ˜Þ€®Ó ·N/ÐÆôîD·Ó[§7 ëômL/Ü:½]§hczAzu*•J¡«šî>5Ý\t=ï\¯—rièÍ¥A—\ÈæÒЛKßýª¶–Kƒ®çýGÕù\zsiÐ%+ã¹4ôæÒ_”riÐõ|ruöezsiÐ%§k¹4ôæÒOoLsiÐõ|67‘É¥¡7—]²ØÊ¥¡7—æ)T¹4èzr7—†Þ\tÉ\ÚóÅÆX“iHÐ%G*̇„^æ?”÷|þÙ`Šu A—Ì4XOzYÿtÙR'¡R©ºBw_t? è~ñÐÆôÂ­Ó ´1½@Ó ·N/ÐÆômL/Ü:½@Ó ´1½pëômL/ÐÆôt; éÚ˜Þ€îú7@Ó ´1½BW©T ]¡Û'ºcÍ¿g—ÇšÐ;Ö]Oèk~ýÑBv¬ ºdmm¬ ½cMèk‚®'ôŽ5üPk‚.YkBïXzÇš ë ½cÍßš®5A—œ,Ž5¡w¬ ½cMÐõ„Þ±æóÏŠ­±&è’…êXzÇšÐ;Ö]OèkÒ°<Ö]r¬é ½L3Raú›‡òÌ“]Oèe2 Ö'äÓé2ë,t•J¥Ðº} ûé›pëôt^¸uz6¦7 ëôÂ­Ó ´1½]§n^ é è:½pëômLo@×é…[§7 ëômL/Ü:½]§hczAzu*•J¡+tûD×éÚ˜^¸uzºN/ÐÆô­ÓÐuz6¦nÞ€®Ó ´1½pëôt^ é…[§w'ºÐÆôÂ­Ó ´1½@Ó º¤NB¥R)t…î>èŽT>ymyq¤ºd½4RÞ‘ ôŽT@×óÎõÚÚHzG* KVçG*Ð;RÞ‘ èzÞT©@ïHtÉÙ—´AïHzG* ëùäêdq¤½#Ð%'2#è©@ïHt=ŸÍª#è©€.™/ŒT w¤½#Ðõä>îHzG* KŽT<¡—i†òLo9˜b>$ô2ÿLÃzY‡t™õºJ¥Rè Ý>ÐÛ†[§hczº_¼´1½@Óнwhcz6¦7 ûýë@Ó ´1½Ýü hcz6¦7 Kåôt^¸uz6¦7 ëô‚.ôê$T*•BWèî‹îíu¸uzºN/Ü:½@ÓÐuzáÖéÚ˜Þ€®Ó ·N/ÐÆôt^¸uz6¦7 ëôÂ­Ó ´1½;ÑítàÖé è:½@Ó ºÐ«“P©T ]¡»ºCyÐõœÛ®—†òÐ;”]r!;”‡Þ¡üç/¿îPt=ï\¯Îå™ÛPtÉÊøPz‡òw¿* åA×óþ£Ù—uHèʃ.9]ÊCïPþñ‹ÉâPt=Ÿ\È å¡w(ºd±5”‡Þ¡üÓ…êPt=ŸÍå Cyèʃ.™Kå¡w(ÏS¨†ò ëÉ}Ü¡<ôåA—Ê{¾ØL1 ºd¦Á|Hèeþé²¥NB¥R)t/ºW8ÄèÞjto¯mL/Ü:½@Ó ´1½pëômL/ÐÆôÂ­Ó ´1½@Ó ·N/ÐÆômL/Ü:½@Ó ´1½ÝNhcz6¦Wè*•J¡«šnŸ5ÝÁÔÇåÅÁô¦@×zSŸ¼¶L.Y[LAï` zS ë ½ƒ©¯?ªŒ¦@—, ¦ w0½ƒ)Ðõ„ÞÁÔƒ¦kƒ)Ð%'‹ƒ)èLAï` t=¡w0õã[ÅÖ` tÉBu0½ƒ)èL®'ô¦ž–K¦@—{Y_…ÞÁô¦@×zS4,¦@—LyB/ÓdLróqºÌ<…®R©ºB·tÿünÞ€®Ó ·N/ÐÆôt^¸uz6¦7 ëôÂ­Ó ´1½]§n^ é è:½pëômLo@×é…[§7 ëômL/èB¯NB¥R)t…nŸè:½@Ó ·No@×éÚ˜^¸uzºN/ÐÆô­ÓÐuz6¦nÞ€®Ó ´1½pëôt^ é…[§w'ºÐÆô‚.©“P©T ]¡»º™ÆGw—3 Ð%ë¥Lz3 èÍ4@×sn»¶–i@o¦ºdu>Ó€ÞLz3 Ðõ¼s½æ–œu_ê¯;kÏöWÉ{º^'†áî:±R©T*UÓ=µšîÓPÇͱæµñ²wš_ºÖäkSZ×§æÔ“«ábëƒ[ÅVc»ãk”No~9‘±{´v‡Ø×tí.µÕã­ÞÌ]^¿[ló·{Û:µ”J¥ò¡k]™¬ËÕ8 ¤d/Ü“ø®Ñ5”Ï~7”ïÿÎîÉ5/[g+[+ÃÒš­ÁÙzÛ”Ö÷ض•¥×€ùÛä:«¹4ÉÉémþ¶•tj)•JåÑÑí¿-ö£kõ<«}Ú'V‡³îNz"U?é5`듨•J¥Ryš5Ýþ¹=CÍËVúݹ¼ÈÝ_»L±dã¶P¥yïÑJ¥R©<æå~¸}…è†;¬ö#kp>®æå‹t·4‰¦¬AÞ.M¬Y÷h•J¥òìÜÓíÇ W€®u²Î>VWã§2c̓>ºA/'t•J¥R)tOÝä«„®R©T*…î±÷^?´ßÎÚ]¡«T*•J½eèØÐMv ²_‘Ú=ݽ»õÿD*:J¥R©Ô[†Nü‰T 4hРáC·5FãÉå¹DW×hJ¥R©18ù˜~Ëbë7‹-0k]»Ñ­T*•JåáÒî°ž>º&f·§»ô¼ªŒ{{y±;{¡›|Oòí°ÞCŒ—º[ƒóáÐ=ÞÛéþ:‡¿ÔKÊ‹ê<¢AÃy’í¬Ç;ÏW‹®éiô&ÞÝäDÉI»Ñµ¦ã^ ÂɶÝãýñ²@º<誙K©<ûͰ{ßÜ<ú£*.º{×t+ãÇSÓºJ¡«T ]¡»ï=Ýnù=݃þÄø èöÿê%$t•JåùB·ÿÓ ŽnòõqïeÞ/duÜÃõ^>è«—„®Rè*•Ýýhï¢{¿Ó=¹— $¡«T*Ï/º}¥üD÷$žHµ7º½¥…®Rè*•—Ý^e¾Ð]RMW)t•J¥jºç¾yY÷t•BW©Ô=ÝK‡îI<R½—•BW©ºê½|ªÔït•BW©ºúî©>Rè*…®R)t…î)=Ò6âÑSè^6tëÈQ*•'—ItwžÝä›®}ܘ,Ú߱ɱöD*»³Ûk£ìýDª+'0¤ËW4hÐpé‡sîéo,¥R©T*’çݽ߳{\©f¥R©Tžtž´h}U_Óåß|‘/ôCo¯wî%mÎz¯¤ 4h8éá$ë­·í­¿ñ7ÓèÝ“H[!õåS*•JåIç«2.B×jºÐ[¨ÚˆdeYè*•J¥RèÔµnn£šn¦1ð—B5Yëíøäryñþ£zI©T*•Ê“ËÓ饴Ûó¢»Ð õ]Ïä½^ 4hРAC?C’ØÿmâóÿõucP%¦ëýIEND®B`‚pygtk2tutorial/figures/menu.png0100644000117200001670000001733010050344475016010 0ustar finlayfcf‰PNG  IHDRÔ€ü£Ð®ŸIDATxÚíù[WºÇi²˜¨Q”Uvh–fé¦Ùš]#‹Êær¯q’<Ù“ÉbL2ƈ`Œ€eoÖ¦±œ%Á}îOwsg"˜;ͬ¿Üg晌䙛]ê~Ï9ÕÕEo4ˆ1êyŸïsòÖéªê†úø}Ï9UM||h( ©õ:îõñYåããïãîãëJÑTH”®ú½Q$Õbs¦úÁXîFaT‹ÍÃdaµÁIÁT,_ðüa‹?(½"«|÷ú,-Tbê ¹Ýq)Ì8…°¤˜».LžÿKkËDsÓ65žklzjj¤jþ€m66ýVêG{¢åæÖs'Zˆ4µ¢ç\Ë»ÐÍ÷OP5¿ûËÑ6Ÿ:×|êý'ϵœúð’SäUÒR‰=¤ý/–·´Ÿkéx¿µýýS]2µwJí9gµë‰Úz>`IGï‡í=ÿÍr¹Úzß'Iï‡ýçÔFå°)©Óð¡ƒôÿëþ=Ú^ãy¦ãyýȤ¸9:Õ;vž©oä£þÑóÒ¦+}Ôošš¯óg¦†Llßù̸@ä*]_Ä#GÌ ×çsÔ‚'tSSSvø¦l1999å]LNN®ëlnþØßýM÷¬8î{ÿ;h™|W¼}ïÊãÐ}+Iº÷Á·Ñ>ðPãʵMD~ÇW¯mZµ®‘åù7B«Wù_íߌd%Õê f¢àÆUAÇ×5® n‚Ö½³6´i͆Fÿðæ€ˆaP3òuáÍ‘-‘h›ý£H¾>℘Ǵ@±ÍP` S#w"8¡™)4¡•(± Oz7< mKX2iC“N "Õ­šÖpus„æ(RsŠÖ¶FdRf´+3OAñÙíñºeN¯ëJÈ&-¤ÊÓ«òºòÔ•\Ø©ŠºˆÐŸúxÒ¹Þå^ä±Îù¬§¾¾Þ¾††oœ’1Jà;¬‡·ÝÔîU¬Q¬–Ëç¡{Vï_=zÿCF¹V¬y`Ý(•ñA¿ÑýŒ¢ÖVú¡×³äԥAƇBG µ˜ÈæÚðѵáÆu6!_að ö‹^e”ÉÀ7ê¯4®‹3¢ Œ Š7'Œ&ƒUÆÀ$¢`ÕhPâ6ƒU(4e„(Õˆ6$u„¶F²© M3n …GdŒAQYãQÙg¢²ÍPtö™ -›k‰Î5ÇäYØ•gŠ+°Ä™•…&e…I¡)¡È¢*¶RÉ¢ÔÒ‰”­Ö$ª"sR)Qr…•ÊœRnN¯Ð*·}#M}‚k|¤¡ª§áœãŠK9c@¾O]ýaÇ9r„åaçÜ-|/u ´O^~«NúxßÊã@íÞ•Æ­Xm„d¨ /†Ú ?0gdº=À} €´+ü‡W$­2® Fk`„ù‰´)gLF›È&Øò‹2®†øEmÀ‹) ÖÈBâ J›ÊQA‰Ãà l¥ÑR!1nP„¨ ‹H3¢A‹Î¨ôñ¨tÂ+Ë“miË23ΙL&–Äæ›å„) Çã Æ7šmxÙ!KÜŒN‹Ù<‰œ™gvU˜R·[ÒªÎj«¬ºªþ„íÔù|^VFvéѸëÂÞ”QéPè56â!.à³w-ä|4>|™=è×ÄPƒ{­ô\¹N¿r}çêõm«×w@+×w¯ ЯèZxrM` „dU`ÇÊÀîÕÁúÕ!]ÐÚPÃÚÐA¿P=„DÙºˆ ÈöÀˆ6$6?3øG øGë¢zü£{ÖEHœ‰~7Š6 ~˜:QH"d -±4æd¬ N1Š~¦îOë ×ê#´áÚwQ7#´Ñ½ÃÑÄÌD?‹¢N“9Î8SÚlL™;Ÿg„bóÆEÈ(g1ÔÕâ ­HJì%m!„©JL$'`•ÌŒ¶„3PÅ8cJ­°Ð„p¦­þeZµ•)½zBLj­Ú‹®¶?,©JŸó€JÊåuP$©¡c>oÆ]Ò!òwñþq>2æ{³N9ÆgÌÏ\ß·:°mM𱙯„kß_~%Ì~%¬ : !ùòá_ß!¹öµ€}üÃßAU¿>¢Brõk a.rÔZZ@tÛì·B¸ò¥À蓬n(ƒãÚCâñ‰G7ÄwÃϨ¥Î’Fd®fl VÛŠfª!\3®1†¥‘¢Ijè`lFÏgß 3ß Wf¯]û^¸ò½«Š¢œI–&ÍZ7dqCØ9µ°%¾Ð€Í¤Í"dÔÆì®Æ cÆZU©UUFZXÚ<3£~¦gÔÏ ‘¶Jô˜3vNµôZsÚN3´v—E»Çš³»Cq¾ó“p‡…ÄKXé\|òc={#;âGŽÜˆó|ëº0Ù\Ô¼*`dUàðªÀî5ÁG¯~#¬ ;àörpä«Á¯~%„¿ƒ$,ê…¨Ø=_/lˆ~.(ú``Ô1ÐCc_ Š>Ž© ‰=âÝÅÆg( @-8¾õ_ß ÿ÷½¡j JŠ7%êÓš¯~'Ì~'Ĥ¼¦j UéC“ºÂTêÎ0µl…¦F¨Û#Õ'ц©;‰¥W놱…k Q0³Œ~¢ìQfiH”ºÞÝ©¤œã©¹¿ø×u!³ðÙ´‚ƒÉù͉ùƒÊ¼Ñ¸ÜøüøÂ¡¸"Ê%ÈTEƒ‰…C‰‡“‹Ç0ö¿z]ÈÚRŸZ2(ÑJL)öÁ³4qˆ–²mBª›ó¼ ¥ÓægŒ6Úšg¬Í ÒÖ˜2v™Ów[ìÚc‚´{Lº=}¡É;¤1Ÿ7žä>Ï¥Ï>ÆÃÉÑ#ê¹…oÑÎw¤»¥ã}¿F¿2,[ÚIœ,ò5ÿðÆõ‘þë#ºÖG詺£Þ yþËo…ÀØcëb;ÖÅôÄ´ÀÕ”τƽ<ó­"(®Ɔº))\u’À÷ƒ•|8<¹=D5Î"SÖf¿”šýQš·#5ı¨bÒߦ¥³;¨2žG L•ÍñY-ë òì!(1§™¹ó3ØXlÞ˜’ÔMCR~Ûµ„ô¢CÉEm‰…}ªB=’+?3TÚ’¶äâQÉÌuÒ“^Ò’VÒñÌrN¸6'¨KûU“Jš\f¡C4²ÔR$GJ'õ3‚W¥¢Õ“'“\´š]fíâjδeí5Cº}æ\*Ý>ká¾Á°”> mHL²•?i†Ëö—f¾žÊî¢Æ| ¾S]ç‚¢ZÙds}dÛì70¶H0DØ, º"#³¨!$a±¯_ûVŠëÄ| Œ;ø”ÉO~ cKzT±Y§m”F’°¤“xU¥}Eiámê6 ¦L{iö!!c¿2ãÐ M3ŸOÉ~E36[¯ÌéBÝ„ÁÆ’uGÁ_rNCZÁ!Й7©óá¨ø¼A`'Ÿ ŒÂÌd›Ž©Kˆ¥¥•t^¹.ä<|$g˹[ÀÞÒ¶Ô[‡¯Ì yeo唂¥™¥­€¯ âMM¹žØX™‰¨Â$ÑlœÕˆC4Z:Ít f¢‰9}§‰HŽM´ÔÒ2÷Z¡Œ½¦ìŸY™MæÜÇDåÂ,Íšû!Œ)÷Qk #’sÎã¦ü'­yTH6?9ž^õõ2Áç¼³‡²+ %0užÖØáÃÚ{çÍ&§$øÚõç‚bOÐ¥àÔ"Þ@’Сz+&éÅ/¿¢X]PLòAì€Á[BØŒ¸Zú£ñi¯Ì|'`34µ'4ÍÀÖÏB4#h#ÒºaWÉÙ¯¤æ¾ž’rŽ‚< Îu-€R»_[ðàC}‰YÂu!>¿–¶@“Q'KßøzF/µØª²¶…‡!mIdj‘Ægp5ÔЬ²ãêR”Uö¨ÂÎh¿œ#mZE¿¦Â³½ufNølNÈ©êɨϬ"^XPÝ”];,Ϙ¥aˆ–¹Óbó0"V1%eíµ2Î$Èr~faxÚ51K£"œÉd–TðŒµàsþÓ¦’§Ã´Û |þàí<ôãIðIè°Ü|æçÌîrÍv?¦e·³M.<¡50nóMXØaà,$I™t9ü ðÑ©@glÚA„dƒzB1 /Gk›#ÓÞ ™Ç1`«µtìÌÀ!¨žI¹ ¨¶iùu¤Èæë!âg…¯i ÊäÂŽäžԢæä˜ ÀÛHéÜ|” Vl€“é>˜³åâg%úüÒ7á‘ð0ù*¦œ)åV€Œtiåƒ@–µM¯«̯:•WÕžY5’Y5–WÕ]PÕº©¦é3AȬ5d×®BQ-à3¤‘ÒiŸ‘™m6@Jç#¶!Ú#ÄÕr11KË{Üb73ÉÒž˜ =5‘7¶3EÏX Ÿpf´›Ÿ›`Úô¼¥øçå/ +³ª¾ñ>iÁųóÉá“;ŸË²Ëèdû°»Ã&?–Že‡Üø˜O„¯£ÿæ›l|ªêŽJ®¿ú­•Ú©n‹RŸO×¾bµG"R»áaÊô:‘ÞÃî Dgôb3!çíXÝÆþ˜`ÿøìÞØlctöi¶¢û©G“òOBW‰Ÿ‡™aâ‰~ÍÆ:ÍÆzUò¦u1¨êþ;ܱx<¹ÄˆZú–f‡Ò‰teoëJßA§vkoFiûìuÑÃd³Nñ&v»~–_õ.ƒ,·²íŸ‚ «ê×Õrkõÿ+YµãYµcÿ˜ kN1øt»ºÝ¾M»šu{jŒ3i|–ý33,M¥I~O÷«–©ìJï"ñÊMXþu¾©©K€¯}àÃM+YEKQ†©»#ÔdÂÔC4TI[lú ”Ýúæ˜ÙÃÑYdÁV©3~ÚrN)óFÉÚ,&›ùÿøus@™7†I(]ž5þÆVð.«álê˜oŽa¾‰~íÃí©%}p2à°þy]ÐlÕ§nW—žþ8+íLÙjL-ùûœ€‘Yzyz™»ÁÉò¶ÿ'àÛaÔTNØFfgÓ«IÆgÕc„ÜÚîŒcþgÕŽèjûÁôAÈÙÓ—¹{Ö™¿»3gïXÎÞaP>2Ì\TOùøìqí™_: gO˜óŸ^’Ÿ¯ÍÏY¨¥?³±%—yË+Åû'Ðí·@¿jÞöòP|Nµ÷ð”›·ÔòñÔÿ>祖žíN}ø: FiOÒ[œä^g˜v~—õŽJ×€‘Y¼®+.»S©ƒ™*³Fáj y}ÊÜqñ®@ÞXBY?#Ëô6@\áéÄÂ> zb Mª’qJ~{+H*K~xœŽÉSJÇWFé©Ì²i[;P(Õåã+š,×T j·fTš3*GQ7ó«[sªº3+Ókΰ¥ IŸÁزwÂÀ«›Y{Œ»ÛŠv·æîéÌÛ;”µ÷Œnï邽†¢}ýPÁ>Cî¾ñüÇÆŠë„ ‘æžl*0ßÉl´=#r1?d~•¼@Î~Å"êe‚Ú’W̸¢^³@[Xª^VæVzó9?;²\‹ÌšôÈjî²Þá˜úýðï€s2¢LSŒnœ¬ŸéâsGaiÔÕÆèBš)6w46TvW`ÁfrñDR±…Í3lâIn”˜R·žIÙzF\žµåª2sRÙxJ]Ñ(?ƒé'Æjšòuù˜z»‰XÕH[eN¯¶Ð|œ.Ïš²vgÖÁÕ2jÇalšZq|Fæ»-™@m— Æ–¹gO¶Š–»ïLÁ¾‘‚}ÃyûÆÀc+ÿ1Ú\"ÔÍñ¢'Ç ÈrŸ°8ÕM‘6ÛpVòülbó ¹Ÿ•¼h‘lŒHt5°¨j[©Ê^ÿeÙëÛþjû›¿®8$ªæà¸Òæ|GêA’ç'MÈ#"nà›÷„ËÇ“,gûCÎð¹{ªEÚtðÈE9Ÿ/•Ýù_¯ñ÷°7`“c÷Ȇí”ýF§m--¶àLüFéy +½ãi»¡>ÿ®@j©…1'=¸ $¿+²ÍœVuVº1Àî @2?3ÛÅVÑlëgÒ|SŒ·`ˆÆ&ò‰§| Í6>#mžHØ)×ní‡ÒJ{©ú©h^!*½Ü®´ }æö>2Á¬dmvÍ@mskúed‰®¶7wWÎnQÈÙ¦nO_ÞÞA¢Gú ÷ nÜ7´iï ¨ýl`㣃ЦGû© n|¬*yÒ°ù‰!¢'гäÉ’§‡l,}v˜i볃åÏ”¿0ÌTñ<ÓPù CÛ_2R¶½l`í¶‡0Øöê0T±ßÀ’û‡«ŒT0TÿâtÍÁ1TLÖîzóô®_Œí<8¶ûMœ¬ö-hmÍ¡Ód¯Ö™¨Æ©Xnú·ó#Ç&{T³‰8ßäÔÇ‹}@øf‡ôIác/ÔÛ‚š¤”‹›¶„Ø)L¹®¡iûÎg‚¢ö®”iS ±œ)0¶*@¹ƒªŠj‡¤„Ê ñP5m+ÙfX"TÍÚPUe¨Š´t³’nÚq3¥24yZWBÿŽpª0›"5Õái•‘¦šåTRB^ŠN¯ŽÑVG§U¡Ë®UfÕ@±™Õ,QfUÙZ¢8›Øf¼®³N ¿–殕[IvȯŽË¯Ë¯ŽÏ«EnW^­ÔŸPP_°“äù•)›wÙ´G–ïyYË~á“:\¢ú:ç‡FÅ‹JKªs¿—¹Cù–΃Óz(»Ò(еó¹ü"‰}S!ï÷¥ß!Záã³ÆÇg½Mþb«ð·çR« òq’bŸmO¿¥K±faù®µ%6É7íùjÅjIkÄD±˜Öw‘ÂMîY÷ _ñ2É¯ã²æâW‡¼?Vá#=pï>œñ’×qùò§/}:}éÏLŸ þ+Ú‹—ÿö Ùü«Ô^ºô·‹—ÿB7]hÚYÓµKÖéò_œwþÄÖ.M®?Øå?AÓ—$ý™%¬ó—ðƒÿéâ§–ZÖ/µ§ÿˆ»±óÈÅ:qÉ^u·¿\ìØO.ê¼Í?%å2®Îe\£ééi7×îò¥ŽË4ä=Îo'í _œ÷H•ôålºxi"·oïæUüüÓ—þôn^ùT¦y?’<_ìoÐáW#ÿ„ì¥ù'¼Hµôó/°³ìÝ—w¿X/?Õ4ySχËás[vzxÿº@¾]'Ìy~òE|üeþQNçñ03ZpÆý“ˆ~<ÄpxÎÀ| A}Ñ3éœr~\¼ô£„+W[&ƒñö'½«¿y‡{¾ À'~ßxN&ù¿õÅêF޽q±| ŸéË?í‹äÊâPÄËÍ- É›zûõÒƒ¥ÞÂwõó™«Ÿ]#‰˜_—“Í™+ŸÛ:]îsóòoÞ÷‹™käCÎÌàG»Sà»t[À'ÅÂð±u>¶ fa`îÚ•/ YÚB_|võš-wˆ©S¿‡C¼ßyQ'qõÁf¬V«Ë¹Ô"ãSùµ¿Õqцì§Ðí Ÿ£óQøf)y³n/í,•'øf— Í2 ðMXî0ø.Þáð]µ9Ÿƒ‹Hý³Ÿ_sy±xe»I•Ú"nÏæ¦ß3ôË Ÿ»e9|òáz­Ç-| …ÂKøØS©l±ú_{Ö"3W®âpgPp*—UÕ]?‡ï6 6çèè]Øù.LN)\À7ËìGŽ…¿YÉ]’!¿í¶D;Ô/|Zö¾lg¹ãÊc¹d®@ÜÕ>"|7cµ…Çò”]—ðÍ~þ¥ä|îà»ÇfŠR‰d°2±£î±¹&^’vcçñ™ÔÁ'¹ ¼4³w¿Gv~‡O8ÿÓ.טÇ-ó1’–0puCΗ;H Èsg‡c¯:ï/‡ÛÝùYéww~yÎá»Ýà»>ç²Úä+»[Ÿ‡óSßµç¾;Àù|1¢úâÊç×Èõ&`4Éápv#Ïð±Yˆ,›¿Êá›÷0³^Y ¾êp~6FߋʟïOi•ŽÃ·|òeŸírÎs&i˜¿XøœNÈ6ª³õ‹å¨9Àç¡ìÎÐ'¾;Äù\N8¤RÙà“:ᘙ™q˜«JçaÀ±—ÜŸßgA¸gоÛ>[!s Ÿt±e@H¾nÄÆsÎ#å²¥ÄY…l¦ì>–³Ïé룸Æá»Ýᓯžx¹¨û“þåð Çp{í6‚O~‹ÃwûÀ7'\žvá|ž,X.4—îY:§þœÃwK‚ÝRZ>ûŸR(äðI(xÙ:ËÝ«K;ÃÒZ~{í'í|Ò·ye“ ˜™ZiàÊÑö¬ÕzÖ–»nÃÝ«K;ƒ÷íYë„”[,ø?>¿ñkÏí—Æ%øæææ.Ñï¹ú[-‹þŸÇyÕ#{züßÒ9œ’ÓpËœÏw1޾>=  õ÷÷ÓœlÊûo$§gµç±÷ëûzdŸÙÞW¼>§]|Ïû;ë¥ÔEÙeÊ~ZÞÜñ¯ ÜêóÜÈ9ïæýu‘øäÎÇË¥Åôå‹»W]—]é¯ÑsøxüØðqçãñ#‡Ç-[sq±Ôâò D?ú,dzzÑOµðà±,ä]ZÂ#U>><8|<8|ïË.‡Ïv/9W^çNù8Ï˲ËqàÛùl¾»¨ì.¶ê-j9Uwó-ß< ¬t.Yaü¦‡oÙ&Ks2ïÒçÝ=^Èỹ-­Rß%&Êá[o|èF¼Šù8|®ipv a®p÷Œ9|<8|<8|>>>>><8|<8|<çù ænÊ.…ùáù©ØN¬Ÿç<_Þ|áÙ./ÀÖx)Ûý¥ü‰Ò?ðõ‹“?¤&Ðs÷ìž½{÷îbwR xΜ¹s±X,€»|Ï9wˆÅ¢Z¼Øò£Ç­®ÇúñxÀw”6赩ØX±å'<¾xÒ‰új5Öm18ñ¶+à ý±aÓ…–Ç6Ÿ_XXøè_rÞ¾¨.ù¸¸ßù·ypìxwñÎorèÞµ:ÿ>¯tÈ?7ýÞ§ ã÷rã÷D{OtrrgüÓGØùä3áw;O>{duLÿ-õ¡ýÍÄüÝ9OŸXT–ŒOå>ù|Ú»Ó ¿oøƒÏM|¾Œ~ÿ?–¨?‘X›H¬ÜŸ[ÖéK®%†¾|ÿ¿– µ\,9}þн³òyjËk¥l3·8oRBÚbšonÞºHÅž˜¯¶fû±'æbOÌÄvê|G"öýÙ’ïüëÙ'¿':OÖé¼~zçg>·ãoEgG£ðº&Õëÿn¶î™hÑ©_×,ûœÝÙ;KÞØf{S{¢q߬Æ~hÚìw:¼¥+Þzd¦åHZöæ£F§Wxë1£íË@Û|\´-ýoïOvœÌh}ÿKª×µŒæCîÓEÃ6Àr¹½=rTøÆÆÆ‚H&}J¾EAÛΙø“ÐNÙ„‰Î”ÁÙÜŽïÏ%8=gu³.ÎL÷áL낪–iáàfŸÚ;§å jx~¦qßf<´Áj:”€v—Ño80C„5ž‘QÎL°Ð&ÍŽö\<Ì"yÄVó •³ö´h ×rvð¥,õ;^I¡ïJC[Ûv÷)ì à.ÈXœ»}3øK`}p÷òc×µ¡Cä¨ð•esqaÞ„ï㜠œSÏ ælÎvÖÎøs¶ã32g;› gO=ãÍ™ÓkŸ›=s+Ù®ç ÚX UÌ,=k:,IZçg»{T=k=ši>ò…¬g-½I£ÍzéYlj”[É;‡˜z(Üä,i£ö²]ÇÙL×™T×h3{GÄ>Z\„0JÂÞ$^ƒ‡Î°/‘ßE…ïæÍ›A”ÏTÑüsD›ÄÖœ›3Œ•n=CI«ß•ðѳ§ž™ssVOçum …³†=3nÎÚge=ssFJ¦è™)c¤dH›IXÚ œ jω”5`ëEhSÙý=ë8•†öÀ)›¶ö[)›-Ã÷ ¥Ú_Nœ=<,ZÛ»‡3]çSàçSMí£2^qV~Hkbdh1÷:)€j_$Ë/Ñä|ªu£Ôø7i¾ÂÙ_ý`Ö®J äL»)à Z”´Z2xHzö7-ffæúÁ®ûH¼¯&?£piµ[s g­Ýs&g?Ê8Tí¨°æc)5â¬ù¸gO©ù™¥gû_ræÔ3ÕŸM!g¿˜øò.,d€ÜéŒì⢠¢|ð,½,#ëä|AêjÚÖõÛ>EÏ`krІ‘¤^õ&mëO=›¨}.‰51Ws†N±¼-á:Íâà XYÑ3‘®éJÝv)°Û@w÷f/ìy"c3ÀÚ}Ü3tbÄÔ¦h~ìHÑ„€xaÇ9j"˜ZlõüDÈ[Ï9Ñï¾FÔ,Ïv_Êv^Êô\Ì44s¾±1OMò‘1‚Ïk–ÄK,)å-` &”eP>ÀÅÓóçžl0ÙªµP«õ.L È@Ûða=’·wZ«g‚']É "÷ôÁüLðð™C úˆ¢ ì¯Π%Î`¹Ñ1µMÒ³¬¿¤µžÈtœÈá c¨R H‰šÉ™”¦’e:‡Ó&jç-°Îe:Ï%ÅÃspa€W—Õ1—¼–íy=Ó÷ZÚð,v¾›·ÆMòˆ”&úÁ‹ù„]\ÈVÔÊ>{Q0åƒõï~š«7²zGÜœ¦­Þ™¨¡ŒQÜ„è„AGÎäÙ ê»Å ñ¨ ¼žî’l!gH!ا© Ñw…Nô=ýâL;µ± «ÚðâLˆšœ¨€^¡Óíݯ¥…¿ž¼z_ý9ë}5uütïOm‡‡|Q²±Rà“Sh)‹òdXÇïåm-‰ÚV)tZœ¡Rֶͤ Úˆ0Ú ;Ea#ÈPqÍ•;ç$=“ð’8CÈPØlàú¾oЦ”Rf–’9ÃI UÕ~’U‚¦ÁœQ ŒIŠ›+mÈ.¥lÎ$13Qx¥ íûéCp?Ïö¿•9þótß[Â;G¼àó¿cוŠô¸×Ä…d½Þ…Ž‹)8ⱚhÊ—[ëòYΤMÊÏäЙwM…3R5[Þ:UìDŠvt–ò³æž”—ž¬Ù±ØÂ>„Qè˜AsÐ1DZ0«*Ù &t:ÊOIÃ:‡“‚³³@ÞC*95zvÉ­jYBÍÄëu™3Õû~–¶úßÚTï»,¼÷rZ-|þsÈJØ- Ÿµë’E”ç¸Ã*Àר6'æ5Úf›Ú¦Ýù™¹ỄS™¨7McÕ‰™Öž˜ŸÑìÆž£‡˜± ÈÀáÌ-¡fwò¹‚¡…ø®=*€ÕäjXI(ö½b–X{º%MNѨPËú„Î>—kQ´½™rs&ü™þ·MàN¾-ù»éwR-=e »EáSÒÄpa7¬òÅ•œïAΞ?s¥hHê.IÒÌ,í°Yubè%ÛíâŒJ„ìÙcfŠu¤eжµ›° %7á!t|V5 ‡Kª=©À À1—f%Â¥Ux¤h–žùYÿ«€WU úJ~í±7D$íËäL ï; x Jœi}ðjšà»}ÓÀ)^ðU^ðùLµ(À9&†%L£Îóå¸-¨ä|Ò]ÆDš”œ™´‘žÉxA5 ‡Nœ§•õ¬¥?k€µ^p¦}grÂÕ°ckÛË"EKŒDͳ—¡“jOk¶6Ù¸è±S´´E›á%–q뙃­·4œüCŠôlàŠ'g¦ÿ*k·_/áižÿ¾žU`…·ƒåRíŽOå;§¥mÚ}4 Û툛IÇñë舙¥dY:Öiâe”™>GÓÛù™YR)9ák:§jÅq[À”Ð)i˜3nŠ© ;E³ ‚cÄÖY’4,,¶’T(œb–õ׳S¿JËx‘Ÿ|Ïá/^K]Ëð­cR^JØõŸ| G8¬ãzXïŒÝŸÊ¹ÏÚPò3e.M™¤µe¡ÖsÆQØõæ9Cót¨9€{5Õ­M 5L˔٠m)Ðû‹$B5ÅM¡mï¤d%£Hzê3:Ô’dY’´¡kéá÷ÒÃ×’g~=ýþ#gÿþÚ3ˆöô/Á‡®ÿÚ–ö‰òY'tÆŠrÖ .',Üç¶(ëÓ¼Ð×yå]ü½Œó|ÿ<‘X‘R4ïïO¹çÏhvÃNÿO¥œBàR¤gê‘ui¶–R4áRè,–¢e».¥z^ªäÔrÖÿ&&æ5zßNAáùâe+n^N ¾“µÓ29t^}è%iàÿ”’QίÓüÚWHÞ Î4~ë«áÛ_C‹ðyíPíé-”Êg@&!ìKôð6óÄqö‚y²†rè ÀêÌvHÓií/=tŸˆfÓ%çÙß)bÖ}6ís@]‰›=†w;KhœÉ)êVBÏÞÍÊ„ ^É˜Âæ:1h¾g†QäLÃïÛ1Tfkø¦ýphL 6të«Ó’ÞúzäÃ/Á;F"íÓ2ŠïÔQá£SLe}.ê§Ï_©k âµm¯Û;RÛv¼qïˆÛ›ÚGý}×¾Ñûá…Æƒ¶78Oý¦C#ÔZ~ªs¤á°h}¼Åö -=›˜ô=GFÀ[ŒÐ»ß{ËE¿ùØi‰âA®ž{aZðæþ ­/ŒBçÙp xk?´[Í%0ðý'G±#üEsaÇßâyæ¡\[Ý!»‡è¬O9í“x˜KrB_§ô1<ÎÊ©QÞ7ùƒÅÍÉQŸÏ}ÑMMÙ¯ú þÊx}PÑMÉÕ‚&ìÂÕ𶼼lu—¬Îš¼|uuÕù¬·--»—Y//þ–—‹­.oP^YdIù®Oµ¶É`;Ò{i6b<»$­±*¯ì58Ë«+å5i/GYÐô»†á ²§]û`‰†ÏwÿEÿJ›ZÓ®ãަؿ«zŽñUî—Çø”ë¬ýÀôß! ˆìšÏ¯×ùÙ–”͆‚¦Dæ|~äE”¨t·AØØ´:ì"mØ.3xla4ÏL„ ß6¶rØäääÄÄ= _ôâ”MWüc!à+T å l[Ñ æ‡Oáª\øœ1±U|nåKý9_λ³Úà£Óöuð}Çð±m¶òAÆH»<ý—R˜ùÖæ f¬3W3aM~»n­àÖÎ<›ü n-ïZßá1éÝå%¼;·|îÝÜ(4ÀÿÕdÎ|\Ù2¡æfwç6‚wSüÅW \þŒ+ˆ £ÒYnZ‹Õ ÔÅí%Ž—Ð;Zý‚üŽ ßö‚OÅBzHšGzELe#î­É¤ `7æÄ”áÛ^Ê'©×wòi?òB™'U7mø*z ©&´ñxÜ#¡”Â.ã·MàCò€ìǵ…‚•ˆACœYm[ q!´ÉoÿϹqX^Ã7ïÎmWp¸Ã®“ œ™  >J@羫‰Å9ìnCøÖå99Óe~š‚Ã]½’JYãÎ,Ý ¢”ð1†Õ]¡É“Ìl•vùðÛæÁIŸXÀV£ „#*_…}Þ¡[ÁÐð)ס±±•rÂçyѸ ÿ^ÙÊnN©ò¼„Ž/ bÛī׸ÒI¶’.ø qÝnä;°±•ÿº]66†ácccøØ>66†ácc+?|4[XìîœÂ´· 8A]eóØEÇ­Äï»…†«üÊêË{­¬]./”oXŒjnZìÛ•¾Â6 »ŠzÝiµÄ¸V±ùŒ Ý}±z”/à —6T¬E·Ò¿]…Oø&''‹ÞýOR (Z>CSMy^Øq+‘­êÌùÜç3+›4ÿ§\´A¬nãq+|Úÿé‚åðbÄåÕ%÷ÛÈæ~–Z¹£]ÍIÅÂaÜ´ßWû••Ü*ãS’òÑŠÁ-¬ËƒHâO÷÷ÿA†lKÃvÜ"|ß*‡/kGP îlÏë÷*ÿd©•—Ë¿uy¡²Y/I¨øJ7ùL‹¢™­5>QࣿIÅȹ ^˜¤Ðq‡]÷¸ÈK”Ýà5¬ØÂ§ªäzØq+ Ÿ;EÙ¢ã%ìâ:¸6Ž&ZîÑ‚Wâ¬ð„8Éù´¼ÒˤQ®Ì°mÜ|F‰FÕóáPTøø„„/nþ^iUóâYÃ}ª6ÿtD;™Kíï‡[ÜJÏù¢Ž[ÑjL+‡îguy3q‘ç‚ÀG µØ¥´Fb%‚,“+¨à9n0>qVyÖ' ¬†°ëNœÎWi§Z´‡{•‘­Ž‚#Ô<Ÿ;JÈ?Å¢VIÁ})ò…?.ÊÃN–üÏ\óO¥òE»‘Š=švÜŠK¨oZÉã¾ wN)åÓD>ÉJ´ÒàÛèq+:t•9>|2)ÃÇÆð1|l ÃÇð±1|l ÃǶMàã;@²•Ýð¨`qøØØ6Ââñ¸|¹\N>ç–­Œw£?ºòü˜È×ö±±ye{hÅÿ{ác+£ái>(jÅÿ ác+;|~ʧ Û&Á—Ïç>6V¾Ç7µì˜”Zá[f1|>6†¯²Œ…áÛ@åsã¥idþ¾ ƒH[sÜwÕ0N¾M±5>©‚áÛü”Ž©cø—uÿèèÌÔ´Ró \½zU›ÿ±1|e³_^½_üÿð?ÄEWoÆã(yd^«5›døŠ`ÕÈ·ä‘î5ãI©Vá·/bø*Ý>úð_ñëSp„¾—¤yÝ¿Ì_ð¼þ6£ZÃ:ÃÔ”“og¦f}Ž|ÈðyÝ Î}ëKZ¿’ïµÅð=NñÍÃüÏŸT¯…EïĪÜf´Šõá d sÈ]k{ ŽƒàoiuuyM[„‚oEw'B/ñ«¦âƒá TpÐ Äâ1ÊÿB)Ÿ|_íjŠòqØeøVNŸ"µ#!øÖÄ⿼zeee j^œˆ†Ö¿à åÕ¼nçÍÊ·íàSR«ááa;ÎÊ!Ø#2Ê‘Wû÷!òSt»UZÍý׬|ÛTù È"|J…AÅÇ;wxºŽáÛ ò¼.fÚ¾(ÀÏ´"ÜMz‹þ}0÷™ŸL@Ñ“IK—Òmx: Ã]½Ø¾Í@puyÍ¡R®ÿfcø6„?³µfy„#+å¦Â·msd¶ò‡§œET>fŽÃ.Ûv‚¯dcøØ¶j1WRÁÁü±E0†s>¶Ç†àäädø°±•ÃBÀ‡ÿÒηîg+»`x÷oþ¶Í¶"…ÀĶ¡ÊçwOfú7˜6¶ÒŒtÎmzåcòØÊb>ÁSøU&m(øŒ³ â±Üâ<<`gß8¿1v;c†ÙÊÇÆ¶qÿ4éñ„hþûâ`ñ(ÕKIEND®B`‚pygtk2tutorial/figures/paned.png0100644000117200001670000002710710050344475016136 0ustar finlayfcf‰PNG  IHDRά۸ж pHYs  ÒÝ~ü-ùIDATxÚíi“Çy 1°C$ue ÖœÁ% ¤ˆÓÄEá’L€€Hb@i)Z¶w-‘²|ì’ɱ@®IJZ w-ã°8×ZÓc)ñGìÒöb‡à Åb`z³*»³³óª¬êcºÏ/:ª««««ÝϼùfVÖ²e9JiÞuoä(?Cé‹úÀÏr}û!÷1š¾[ðèý+†r~òù_nù²½£˜}¨ø§’÷]^àøã_:î ÖÖ'ìø µy$Å¿˜ÝzN|ë:ñÔÖ‹Ê»Cù¿rŽýÖò°°° –¯_¿þÖßÎùâGyúÑ×ä›ÿýê[þGñ“¹ýkoþdîÇ?N–“Û_ 2Ò•Êe±™ZïˆäY†6°BìPíó͟ͽuîÚçæÞøéU±±\x+sKkñá§$Û\h‰7ßž{ëí/¼}íÂÛsññvüÆÿSì|îüÿ2÷îﮞÿù‡ç>§"]3×~\øûkñŸ»xõÜå¹ì¸t=j³øH_÷ü¥úÝóW®]xgNskì¸ØˆK×.jw/þâúÅ_üÛŸ!âÒ/æE\~ç¦\q%½ÕÕ7¸øÎü¥éÛ—gn]š¾ÙN\œi½;5Ÿã¹ÉÆ7.ýãK¿œo'.ÏÞ·'NýEm¡–›‡ÐôeŸô píÚµºmåH®Ï‰›•Ëg^û¡Ý²ßš1´|R.´ÆŒk¥C¿=½ì¾é¡û&—Ý_–妒…û¦Ó»ïØÛÔ7øÔä²OO }fú¾OOY1óÀ§’y«Ç'>£ß|`åÌ+§dÜ¿jJ¿÷ÞŒOþޏ±W>ð»ÓöÆ2î[ÓŒVË…‰•k¦W®²cÕCÓÆ²¸]õ¦ìøÜï¹×;¶ü‚¸XñðägG¦V O‰…•ÃSv¬™á|¨¹ÍÆ©•›Ü¡Z³1›gÖlžRñЧ֎Nëkd¬²W6bbÍ#Ók™rÇ£úÝÕ['…flóÅŒsýÈöi=†·ÿïáíÓëvM®ß99²{vdW9¹ýýŠXÞY·ëvWD$ë!×'·éöûËbûáÇK#{fGö”X÷xr+}xoÙ~T„¾~ý¾òº¥‘ýeëTäBtÌn9PÙr ´åpÅ£‡Êc‡* Ò(m9ZûJ%g”ÔòÊ‘ÓÊ`"ùË¡²<·ƒð¤©Ú³gÏÆ´˜ô]ü¨¡Ú$îŸ4㮕©%ë~´ãÓS‰4?3¡ ÑV¤/¤:Ã*üäªirù¾•“W®˜üäÊ)Ÿ3ã¾ßºïw&ïÿü„®K!Jµ¼j͔Ә†=åf-~üÂL¤(›‘>Ei1É \¢\±qråÆiu×ðãÚMÓÆ]¡H)ʦ¿8épâæ8c¶ú13zdjí£Ó†1ÜÞåÚÇLQÊ5âöaKšÂ•ëwO i¦¬Ô½™ÆzM”¾¨o#丷"ýX<ö—‡÷•tWÈ!ÍQ!ÍÕvbìHUSXoëQÓ‰[¿Zè–?(=YÙr¬ä‹Ñ'gí•+6žªÕîÎ]¿*t”?<ûª\P‹ñW9ûú™–»gϪW™ª››‹O‰ëYíOæô ´©.‡„û>5Ù¢ÂÖ»áIeš]6-éN6WMÔÚ*Óh?ÎxRÑ©ûœ~`õL#¯lÄCÓ™®¬³aU+a f” ·Š-ÕÆaK†ªÖµ˜ÑN0“ø¢ðãLî3¨K‚¶F#ùP„%›ŠTñ¥é5_š¬«pût ¯lzsû¤¡Ë‘4Á”Ñteº SK™Qê!Ö«•2Þ=çÊj=ñÜ[±óМeîÓ”£–lŽêÌ£ï&‘.fsË1¯1Çž,dÚŒ¯Udl?ùîö“â¶òX²\Ùq¢"ï&Ë_«ŠÛ5›Æk 5©£x}ÉÛž=ÅTí™3gbÊ»zVûæ¯êít3ÇüÔ¤7»Lå¨5՛˟´¶tdŽIÚhi±5µ4׬žùÄêIݘ÷¯ö5ÉX±fÒÐe Ý­›t…´ä&ÕšÂÆ!ÚòâvÅúÉ•\ fëš79òJín’<êÍðhKÖ]¹ztbíXKü¡G2ÓÌi»‘öãêÇ&í&ùº3#š7Åݺ.‰äîÙ ­ s=»­òB©eU-§-ú¶Œ¹.Õåè—]ÆLÒÆø3#yT¢´“Ðtå»3Ή~¥Ž/ž,KcÚŠLã]µ²u½¥íÏT¶?[R±í™_êw×ŽÖ "cuÖBEi¬)§îÍÈ"€þ*áâƒ|T=Å¡Z©á˜jrSµ?›ÓÕ©×›Íl´^ÄœñU'?ñùɨ¶ùšä%Dc\¥™B—råʵR‹¢5¡©–Ó ZÌ–ª¥Ö0[®ˆPj@…áæù*½îÏ1c*˜*Á´ —vÃ\šÔYâ\ýhŽ–¸c®ýÒ¤ÞO“͉pM³Q»œN—ÅÂÈΉu»¦5cV†wýÒ™ZÂÈ Äð>GÕR´Ðc¥ùD)I0–Ûl•{ÙH-ÇZ)šê-­õt³Ñ¯ŠFw¹cj9f)ßSe#µŒ‰d{MŽ1±M-Ÿ*ï|¦±ü\uûs•m_¯ˆ[JµJm¶[}Þ, Zý)R©¾—[.,,ˆGݵژ!-YíÏætŠ]éyebÛÏÙ¸ÿÁI­·GsrEkŽ™+]ít%M]|b¥hëò]—('DÈÜSWኇ'…“ýG§™"Á\±!äÊé­L'Wo˜T–TËnša›Q¬QW);O'¶ÝùBeÇ7Ë2ÖcCg³±~Fm°jdº%ël´¾u?ÊLS™T6ÀeÃ<éÿÙP÷fóÖmƧ.=+練LtY·g²pW T¬‘y¥öPM<$£ÙÿÓ2¢(Ø?^i4!RËak\Ѻ]Is}«ý@ÍÛú`ÌR¸ÑííêqµÊÞ_Ê]Ä”Æ ªpÔßQ¾åP5‰@ÓÓB7‹˜õâfK"™#©ÌÒ¥h‰‹&¹l•ëmp£Ï§ÞŸ~²´íérÞ:¦YÍÔŒ©Ç¶ÓÙMõfBÚP¤Þ6ÏÌ1Lө½\ ˆòq{ûÿ\Ý—DY½Z6Ö¨X³m\囲Á]¬ðjWô•¾ò®ðµ]Yu«vhÙòüYms_çþîª*t®4 Z±²Ù_¨·Óµö¸™`¦Ü•·N:ûÊu½¶¨¶áA™]Šÿ Õžìꑺ.Ú:Ýܲ± zÉ“•©ý r9nº¼~›Ñ$OF­§ÒœVÝ>‰þ¢;|T«ÕêåˆXÕª¬özJÞqµç>§w”KcгÑç#OõIµ•´ÄgVFä’ÖÀ£…TkQÔOãibcPQ²mŒQ]µ–e.©¼¹ú±Iµ,¤\o‰'Ü•ËâÑõ»“í…õÄ­H0岞B6×4£²¾ÑG”6ÉCmíð£B¦¿·§´nÏl@”V¦9ëìöÙr@»~°ly³_Á ´T]äÉÝ#¦7G¿ZRC‹Œ ¦cåxÓO5®H¶¸™fI¦“>KŠGwž¬ê}>Û²ÝÎØñlUºugžÆ¸[¯ß¨îø•VWVEÛÜY¯4Úæ¢1Þ\¶´èó£'ý,啣Ϙ©%«º4UìùNIÓGD¼T>ü½êáï•õ8ôg%y;²Ó¬ÕêtŽÊê`V›£€P,«•%’¬öòœÖi^¯o¦=<3vÊ)sÌF^©›±%—lY™¦¢Ê›õZªV ÔÛàò!Ù)¤o&)]¹.È ¦r¢X};rÿj¥*b&Úm,7Mº']n4´ó&–œ•+UPc¡ê+búFY:sÏÖ•³cûKñZŒ‰yôÝB'J¦çJ¦§úlŒ'1+u9ötÙîþö º %˜1ÕLï6YínÝ’N·nKº}ªz«|Û *ÁœÍÈ.Sc êrÜÿGŽ–øãß*·â)êY23UÆÜÿ§Óƒÿ©¤ßµ7¨7Þ¿]‘Nô嘆1}»äð¦0ã_ÌŠÛ#^! êuÆ‘¿2ÃV­QxÕG„û¸l;ûT«÷ƒÙÚí\­VSó¹Ëêc-SQN'›«‡ê¢|$ÍRS -ÊžŸ†“nŸ…ÆØ\C£R—JšjàzrFyšTê餒£r¨•r6Ò4‘¬ï¿aOê˜Ò,é‡Ö—ÌúÆÍaF³‘ÌÍO”2[ÜÎ6x IîhwgŽ1OyÒ<¥ÇÈ4Muså ¡ËªÖKÞrÂo襩¶A"A§cÚ,ez2GÙîÞñõw3OM—Î&¹êù SO0ë­òoU“hÈ1&:%èË%S‡ª 䂲¤Þ0×—÷kf<øb’Qº<$Ìïš~Tê´ãà÷Jn¥þeÉ–fîx¹|øeñK©XÌpåAu²C;Ýb¯½öZñÁ^‘Yíõ¹¦¶/¼3gŸÏc盲Íþàv}æd}àz’cNاú ïN,iN½±Ûì.O:|viƒÏ“ uû¨Gë%Π:¦UÕ${¢èä‰I0“:Šd”M“6ú|×+á“|’Ûc³õnŸ“Õ±4£tžíc4õêæm‰Û÷Öºd’B~£êBäí%/oÿÃz«|gC—zsÛª…¾ç…YCŽáö¸QñÜûÇi´f‘¾ìÒ"3•›íy±j[Òo{üÛÕ#/V¾èM££*sÌ£ÿ¥°áÑ¿Lnù78ürî8þJå©¿®ˆÛɲTmÆ`/ct­íM‘ÉÛè¹­>V!<¤LßIDzZ9áïߙֆa®ß=µÞèo¯Û§¥ûÛ9îRë%99ÒoLYâœMOõ©l=\=R;Têð©>®"f¨kÈš}cì¸!ÍŠ;¯Ô‹˜ f£(™ubOkú¹ãkåÀøJ£Ãg[«1Å£;žž•çül;ÝìÌIÜךlîÌÒ¥hoÿFÙ(bª&yx8QÒO7ØóB9F”dS<”³ÒnóÛ½XYïVô>Ÿ}/•똲UÞŽ+Mò! (rÌ#¯T¿2°ä¡ÿZJ·œ¢<öréø+b¡œz3‘æ‰TDÿþ¯žúÁ¯}qâûI<õƒ÷’å¿y_Ü*ÕªÓm3Q[Æ?E÷¦ç Ÿ(xïÙbykµ—~1ïÈF‹ ½l©`VÉŠÂ'ëÝp 4º¿<úå²0æX:‡ÛM0«²¸Ù"¾`¦iǡƭxb|vyô•Ò±4¯”q쯛º¡ùñ½€:ímŽ ‡¾ú«§~¯¾?r Q­œs+r~/ýŒ/ùc^.ßSÄÆ?<ûªšLNß•ù*meµ²† ŽïÒôMOîY•ãŠòÆðTšO´Œ+úËÙ/™%δ«GÜŽ~%v2Žz¹³ÞMähw;çãÐWÚÉæhjLÕí“wÔz}¥–cÆô•o³’Í "«ž¤Ò2æ7«²·g§UÁŒi˜ë9f|ÉÒÝuÞFŽ)T+uÙÚ7»Ë$îêáïT}Ùå¡—ÊGþ¬ªw”úvQ,©üÊ_U”1Ýfô$›_©ç˜Ê˜2Í|êûe˘١'¤Â˜º Eõ=¹p¬¾æ=÷ƯýÚ'Ï6—G<§ –wÆîÞ<Å­Ú¼SÞ&ªÍH9Kʘ£ÚТåÅ‹˜Ñç’>9ë›ÐHxSªsóñÒX:SÄ—N†¤iZo7[Î%/‘y¥iÉ´·GWd ÆÜåoŒ''ö˜uV'õ~ð¸3·"]­ò’¯vßísÄß3~8î¡@Õ2»%Þè/:ürUÚðHLŽùʬž`Ê"¦0f]—SÑ[ܶêÍ(ßÓïSËÿ-YâLËŸý?ÊŒ_{í}q{ÜãPç'^O6>ýÚû§_ÿÕøï¿ñ«ÓoþúÔß¾'TŒ/l0ß< ‘›EN.nªVÕ"Ói¹ÙSÏþùʑӽŽõã«6œ^±ñ”«6œZ¹iü³›N‰0ÒCl#>»áYqû¹ãn<½vÃsk6ˆ7Ÿ^;zú¡ôÖ›Ÿs¯o„÷‰žX³y\<å¡-Ön·ž^óÈ©Pdnà‰Õ[Ÿ5Ö¬}tÜÞlíÖÆò¶ñ±6n³Õ1²mÜoÞqzxÇøÈÎSëvËËz ï:e¬ébì_ÿø¸¸Õ#]ó¬±Òˆá½ãá "¢ñûN¯;pJ4´E˜Þv8~" ±°î‰ÓrÁcž;0¾åP3„%ÇŸÖ×Ô×7V:1zðTrûåú£áI¾#mV B{>sÆ­Z%ìe‹Íвþb¨2êBvC]ÿ?XÞ©Ïcq>ÖåÝ;–úˆÎ¡Þ1†ÚÙ¸{WHlóí iŸ¥~uWç…Ðo¤joæà†øwëÖ­›7o7Öܾ¹xÌÏÏM3Š[óEže<±ïhÉõ±ôñ[¸}sI Oæ‹üÏôîs¿ãûSìëÔx×7 ½åî~‡£T›SI7âÿ;ç»óÖôÝÎKnßC?M Ÿ eßšïî©—Oì2Óþ£Xÿ&Î/òG¤KEQ¾_û‡s«.„Ûšn‹/¡ÜÒü0ÅúˆdÂõŽnäúþwNëUíMèvVËÇ€jP-ªEµ¨ÕªxÕ^X*(³]8÷ö¹sçÎÿ삈s?=/qkþ¶ˆ.ªöÒ¥KË¡¾›óÇ„=“+z/,DÎŽ(ÏìnV+Ÿ0¸›IcJ³IÕê®ó«ÝõBÌ+ôs-UÜŠV­9÷Óó1Z‹ ª€{)1™Õª•vV‹jr ªr! Z£üjûÕt2«U½g>ö¨[Œÿ0èsœ][¶jÅfJµR ÆX…¾Ëj3§ÝU8§¬¶~€žeµr¶rçEw_µöSòžr¦ : ëN]ÏPí͈Zmáf}·T«?Ë®nÈ£7TxKHEµ™ êj¯\¹âT­:8]µa Û[Ê,]ZX^öRÏ‘õ4Þét€öU›K€½. ønÕ‚²¤zT•Ÿíâƒ-kcoÆÝ›Öx€Âªm¹±¶¼È‘Ò:Ukôß©DÕNKõR´á_ßÞ쬖Ê´£ZáÌj¤Ã¶én·˜\ÒT·ÎƒÐµNZkt±RC€N©VU2“ÔˆGyB¸ï¼k¤Ã zõ Õæš­¦_T{3º[Lå§výÁ¹7c{€HDS;\«Í{º4OÌUi/@·³ÚÈç.Ú‰¹Ýèrž€ P cë†j»žÕ éó<ÚïG?gÁ8Á^ˆôuÞíŠeµÎ+,Há,Úu@ñ³u“¼u¾(Ðòª]>ÕFöêEVÛ©ZmÌt‘Ó#Ägµrä’o°Wæ¯^gµâC—.ciìùÊ•+\Ú:…žÕÊÄN¨öƒ>ø§ÿ÷Ï2>ø¿ÿ$BÝU+“Û>pVP»¥Z.· ƒ‹Õ*ÕÚ’5¢w„Òo’Kø&· µÊGõ幦Ö\£nË׌5þ[¹åÌ-ËßU{· åÖWo¾®ZOa«6¬×ES­•¤ÈL ¶®¼üzE9ûÑÝÈ- ‚ DµC*«­ÙR“Ö›ý¸Ý¢±‡\Ò¼£ÉÝ!n²Z‚ >«_­±²–K¸Ú"£Ö”þGè• ˆTíò4C¼« ¨*-xj z1aa6U¡±±ÆŠ ’­~|7ºò@VKÄ`fµœ1¹Õó\iÌèÌ7WÑöNüÓU?c¥ù¬Zûe ‚ PmïTkôæËýøîÆ÷n9á˜-Eò+_Q¿• ô#!«%bPT{QlóËßܵSHuWže!4WýM­õ¡šSʲJÐHC—Û»•·Ò§bçN_·ªv¹~0þ A Ú>Uí?¤:»£eˆ5¡3•?ªÛÙþ]Y5]¨5îÞIýx¡õQ§4kr3#W•à,(J"¯zVå£ÚY-Aƒ;¡®Â¡¤°`·é>+µÒá;úÆFòëÜ›^Àµ 5#«Í?Œ TÛg‹©öxÃ}5½àï« 5k©ÿno,kÁõÎ7ÙÉ6dîMëìj*xHÓ´*õªâƒ2Y-A™ÕJ±ªÌѨ øï.Þ57vîM¯½Y”­BÞ1 A ÚESí•+Wô9,Ã.×3S½D Ù_?˜³J+—ÅÎõ‘[r¥Þ6Ô˜qµA  j/]ÖšäÆÙ†jE¹¯õïÈ|V½¨öêwŒÝŠÃˆ4FªíÇZm«1Ͷy«ï8ZÙ盉½Ìj¤½é>ï¸:¸î¸OKû˜³Å‚dÕZ £Ú­Ý6ô¥À©”ïØ:ö™Z—xcW(• ˆ%˜Õ6-ÙWcªŒƒ!«%BDõ75¥Ú[ó·}ªýçþ¥/²Zpkôœß=¾½«¯™5ž%•ÕÞV׋§G3{Ù/¼\„Á±Ò¹Þ·}×Û î'_¥»×WÌ­+¬ß?Ï»|¥  Zyí[Ÿj‹]2¼£ª]ÐsFþã`ðT«®1n«ÖÎgIµ-ísþã`0 7æ}Y­²í­uW/NžåÖ…>[Ïp©öF¢Ô[Rµw•(›3«ÔO;]&ÍÛû¬VÕ@“»£Ì‘ùöœÖc¸‹mÀÎjeêjdµ†mû¥€ öã¼›‰1<@ÞÍ;f@¾¢z]ý~Þ‚§V«T«ºÎYµBdÕ†-lo)ë Æ£¾½TÛ'™5 ¨j¥1û¨[LªÖ­ÈÌ»™ù©o{]Ó†»ù>@^Õ:ÇôKÁw«ŠÊñI®/?µeJV …U«$°³ZU40(œ¶Èª ä­¾íI®|?á½ÉRƒ3¥Eµ™Õ «öñ) yT¸kÔ ìõº¬b —³è©jovg–ž‰QL ÔV"7€{ ݘνm7‘¡µzÓ¹ªí“?J á€6bdµñnéºj‹%¡½¤³ lÿ¿ß{ÿ)ü?B/õÒÕöÿ/0æGů›rzw°‘8wå䜑Çä µmçUۇΚOéR Œ£»Z5_?ù?¢îªGÅzuºýhü]õŸHùºGg ¶núD@¹~<‘ÇÜÏïwé};õ¯_ûwÕ“ìÖà' ˜jû³t X䀄5ók€EPí=> €aýöÁò?‹5,·§ª]ÜŸbG~füV—’”—³èàw¯ª5Æôöò­fN%TñG¾ˆï)Ü»Y­=³W—Ú€öú°j}ta¤4g!÷I‚Œwî Õ:§,Ðç7Ð'1LcocOŠḣ “MýQ9ï¼õ½h`\çä ö³Œ[ßg>šyTÎ?-dÖ÷Šjõ©}FÐ}HHí‰À}û±æš°&s 5%ÓÝy÷øó£?ªÏƒºsW¨àÍjíÙú‰™Y13¹óml[^M´X‹˜7ÒqòR‘ì›7æC«EÌKI` ªÖPL áò©Vz0P‡Ñ´±±îÓ°Xkô»ÆÔŽê®‘„†XOØkYW(¬Z¸'²Ú¼ªÕ·1ú©2¯ˆ™Õ–¬EÏÿ§"fã\ø ( Zó®Ñ-næ;[ô¶GmÙ¯hàײʾ¾§dJÐwÀ¾GÃGþ¨`)«¶K…Â{$æÈ‡ÔÕÚ(WŽ@µ;[LÚÊpVG¼ÖqÚ³¯wü¼5cH Ú›ÅT²ˆ½äN­÷ínÕæVm¦‰ô ºdÃ>½bEÖ¨Ö;©¨¯Á#Žv’ÜÈæü ‚sP­™Õª¡¬íç†ñЉ™Ž «i2r€^«ÖÎ4}tNƒ =¥ŸàkO˜à<M;kLtPkY¥ïY? ß1Û›égF0,¦jc¼>ÅÀ¹&sð¿~r´Oôµ¸3µjqg Z Õ3Ñd*Õé¸ðä5mZ;«­ug:ʨ¶§ªuÎ kœÖ•7«ÍužnûI.ÓÀdµÆd+í|Ê®y&oôÍ~P³æèÊU@0¦¶TÛÕÚóÆÌù]óO;33¬mÀ®NG`O#ËtÐ;Õvª¤¿Ÿv²ÈðÞð1ô~@µ‹|ÅÜšëü…ލÜÀ%0ðªŸL p6D/Ï\¤™½j˜‰¦óäšÉPm'G ZÙ¹.èØ,s–ÅÌÝFî0þ¬„øë¨ªíØU|ç¶K$ÃO œh©Ú˜Í˜œúNµÎôОÄÀ˜OÀ©ËÀTaÕ:G›®jcvæëôEÁ8#À8V¿ œV“ÕÖ<'5ØÔü×jÌ, P €¾P­ÏnáÉ Œ¡Zyk¯Õúv«ŽÇY\\û _ ölá3n}I¥} o@µµèk€×²&+0²lT ý¨Ú€ì“8Ù-–KµªX( دKõú¥€àë‰òÍ9žÉPÏ‘ÃÝbçKÇt‹e¾.Àâ¨6œúÙ¶ï/’M¸çT €jQ-ª@µ¨Õ ZT‹jP-ªdWÍ@µ¨ÕvJµÎ‹Ô.±’D~\|t€jÉj±- ZT‹jMµ¾kÃf¤-p…ð\Ø—ÙUÌä]¥WYfѳ£-öZ…™Úá^W­ºnM§~íü [ûÿ² ™oª«oÁxõž©Ö÷º÷\!æÂ3µÖ‹3ê^Ö¯Së¼ä­¾Õ<Çõ=Ѹø|Eý7\ìò<úJýZ¼ÎÝÖZ/ÉžyÕ5çu€r]l-p1¡€1í7«®¸ qൌëÈùŽÐwÍ$燷”wëÞãhlÕêÒ”ßoßusâóÝ­e]LÌw5ÜÀã¯T¸è¤] 0.Fiÿ- ˜%,Ù˜ë¡9Óy}ËÌ+Wú4¿}æe42#¿a‰VÿO¼¬Öy›™cÖ\W´©™?³€ mõÛ;WÛøY 1ô]³Ý¾(¯nC{›ø²ŒÓ)rY¼„ú¿p6ÉïT>+¡ûþSì´×ÀøÖÿBD~Ú—Óß©ï3<ÕÆd—Fk=°Yd÷T±¬6ÆãáW‰LôÂʼJøYv_±·`?«Xòø›þóx–óéöTç[3>öŽ÷ôµjû§€ÐŽj}û×kÍá—kSµ¾‚­¡ðN|â |˜¾ÿÛeöËLÕú¾ÎT4¦^ÿŸ°TÓâ4‹u‹9Ÿ©Úb²³¥`”D´åâó]¼1µ‹p©×~éZkç’} ™í|®´sUßÛ4 Júof§ª…%¢Ú\„S³vvÒþne·žþÄvNÒíì ¾º {ê°ñ±,Ê«÷æsX"ªmçwåVà§Øñ_o7~ðFQäKt\ñýó÷¦{/¯ážSíÀ¥BÝËøŠíÓ)Çø]uO:}¥3ã`P- ÚÜ¿Ø6³°%ÿ« ¼ÁÂ6|OÉe´Eüä 4}Gµíœ›·A]ìãÈ5B;»ÙIü‰¶öš÷ð8ÇZµÿ¹éE¡˜•íÿGg‡XšYm±.²Ào#üܪ §<œ¡FÏ©#U39wáì,~ ‚6'C°G^w#ùEµ0ÀªUϲÏzª¹ÎF5&={ÓlÞyxP§1TÈ9Ô>$5 €‘sç,Ô"&+ðdÌŒÆd µè™jþSö»ˆ?5.üá;϶ˆœ°Â9¸Í˜8¶møbT‹?E `ñUëüNGžÅPË?¡bÌ9öa|mï$0cxàmàçêôB-ÿŒÅfÈü´óþÇùÆÒúÆëwÃÛø^=sBƒÌi+2ÿÊŽŠŠ-ô‘j}¿ÃÌôÇ—øZ”γÝ} ‘¯©Xà,µðNâ§ë9]¹ûÌ´ZÄÌyló>%p®pü©+…U›9EFÌÅÌ“ëÈja UóŠÉj³(dæžý£ÚLwDN¸“k¢ßÁ–Œ?þ\çCwPµÎ=#Fâ'”¾±- F!SÝ( Dª¶Í¹ªµç0,¶+g¹Ó7áèxƈ,W!æ¹mÂW‘=…Mà/Yá¯%@ïT[sõ<سnÛwóÎÙ3W·³^.JÚ5 }Ö‚ð»Èì„©eM¶ž¬ s¢ßÆv·^Ì'–«[¬æŸ×W¯ˆQmf½%þVmà…D _Tø^¶sÎR€ÌøÝ£Ks5ôæ`–êaÄœ4a‰dµ=û*Pwp÷Ƈ.âÇ8XÝñy§€¬¶Ûjèà©“íÿðw¦«ÎJsQÎIíÍG‡aÕöâ7Ó¥_šíý^þ¤—À<)¹Ž]ª½i4Ó 7¥û¼áŸyQ¯¥ÚJ-0á/¿:@µÝ½8y^¥öç<Ó5kE¼—}ƒ=»t¨™á 9 ’jí‘äÁ7¾“8}§«»µŸ¢[#æä´˜ó_#¯k9€·–çR»Îr~¼¾O»7ÙªìB+o;íšÀ_á=ø6Ž9!"æïJÍsÅC%ÐZÜé ÷sNTäŸ èkÕÆüÔkÁsœìëZç:Í?3£ô†ï„…À;Ê,&ØÇi\Ï1Ó§ñçA„Ÿ¨Ï†Uc„)À( Smä™—Nß9§é‹Ù¿sÆ/ßž3U›k:‚N©ÖÖh®<—¢À’U­óÊÛÅT›9¡Œ­¡@]¢{ªuNºê+¹Ú6 äN|M¼†À`"»e„ d;Ú·¥o^+[”vé3\@¤œ¹ áSûãÖüýQz»>æc4ÖÇ<Ñ.P´HÕÆ´Fu‡¶?T3|Y—ö¯yÓ-Õvò2Žy%Û&}¥6< €jûúâä¨ÕöDµö…¿-èð°-TÛÄyáÅðP{cþÏÕFeµ¾!´¾Ù ô °- Ú"„Ìd–3ôÕF©Ö¨Ì:˯™ól¡Z@µù²Ú˜d6 ÚNMù €jÉjÕvNµ5×tL†¨v‘Oa €¨6Jµ™“ÅàS@µQmÀ§¨Pm‡ ˆPmU‹dÕ2³ª@µ¨Õ ZT‹jP-ª@µ¨Õ ZT‹jP-ªEµ¨Õ ZT €jP-ªEµ¨Õ¢ZT €jP-ª@µ¨Õ¢ZT €jQ-ª@µ¨Õ ZT €jQ-ª@µ¨Õ ZT‹jP-ªEµ¨Õ ZT €jP-ªEµ¨Õ¢ZT €jP-ª@µ¨Õ¢ZT €jQ-ª@µ¨Õ ZT €jQ-ª@µ¨Õ ZT‹jP-ª@µ¨Õ ZT €jP-ªEµ¨Õ ZT €jP-ª@µ¨Õ¢ZT €jP-ª@µ¨Õ ZT €jQ-ª@µ¨Õ ZT‹jP-ª@µ¨Õ ZT‹jP-ªEµ¨Õ ZT €jP-ªEµ¨Õ¢ZT €jP-ª@µ¨Õ¢ZT €jQ-ª@µ¨Õ ZT €jQ-ª@µ¨Õ ZT‹jP-ª@µ¨Õ ZT €jP-ªEµ¨Õ ZT €jP-ª@µ¨Õ¢ZT €jP-ª@µ¨Õ ZT €jQ-ª@µ¨Õ ZT‹jP-ª@µ¨Õ Z>bT €jP-ª@µ¨Õ¢ZT €jQ-ª@µ¨Õ ZT €jQ-ª@µ¨Õ ZT‹jP-ª@µ¨Õ ZT €jP-ªEµ¨Õ ZT €jP-ª@µ¨Õ¢ZT €jP-ª@µ¨Õ ZT €jQ-ª@µ¨Õ ZT‹jP-ª@µ¨ÕÜcªT €jP-ªè‘jçççù°ÈjP-ªEµ‹ Ú¹¹9T Ð]Õ^¿~ÕtDµ"y•Rõ M2jµÐABª•y/tQµÐQÕ._6wýª¸#âìëgäAÑ©¨gµCCCÔ°ºìÿÔ‡ÏáËï6IEND®B`‚pygtk2tutorial/figures/progressbar.png0100644000117200001670000001306210050344475017373 0ustar finlayfcf‰PNG  IHDR¶×8:<¬ pHYs  ÒÝ~üäIDATxÚíoǙǹ ;éÝÉjî"ª *ʵcÙq`I¶aÉ2ÉnÿHj›ri+’žs¸¹»¦HH$MÒM,÷.MlÔ¢ä ä’§ï£–(æJν„‹XoÀTŸ™gwöÙÙ\R$ErŸVÃåp—Úùì÷yfvw˜HÔjFèZÃ0"Õ÷T6\/»Â>æc]dá_0ŒÿÏF _ÏH4´_‘FØv׫´2.Ëåååå÷]ôõßüzÉyù¡ðw?X‚å{rùþ%\ þÁÖÊ÷>þîo—°`½üصòýÙÒo.-Ï^*^úX^œ]ºt©8KüÒÿ,Áò·ŸÜœýýòÅOŠÒK°üè÷Eû¥ðÙÿ-~|¹øÑ•âÅ+ËPÀ¥×/~Vœ½Z¼4· KðOmÿì+èŸ^•……ÕË×n}:/ þÇÍOžù÷õ¬lÿ-—u¤ìª°>¢AûZ”à‹ª¬T„ÅWÓÞ÷Íë¾õjbkFø–«ðwó[„g¶X…ù¶¹üÁž…·ÍoýG—?øÐüý½™-ɹm}óèÝ}óßDø¶G2=΃Ca[ÿ|xj ÛRsb ¾ÓòäŽù¾ °Lî¢>'|ï<øÃ{3XH>1—š—nRà 2©&xÿAÓ*ìÏ¥Fͱ<,w¼ÿp–ƒ枉üîIÇ÷ü8?øãüîc&À·¥¦Ô‘/•JUüj*oÄ }uDfff¢úŠ‘’d"£¹ñ÷ І­²LØÚyÀ2±%)\1Ž(ôQ@ö».\–wÏ)ïÞqŽ|±´‡±¢¿=óÔ‘î°‹½Ì¼3íz93£öo鈋ňTZ^²ù°ˆLPîÿ¼ÌlíÑ¥ÂË„ˆ9·;(ô_£LôHz”åséDßà‚Û‡®)&db;pp0«tè?”ÓD8H¤‹—>LH@ü'…Ç9L >•Ý}Üæã™üÐ)søé|rg<ÆèÊßäèˆLOOGQKî–˜ï}XT׉þiÁ…EòóûûüDB:D7"|ô¤>·˜Ø±àˆ„­½ƒ*pXü`ï|ïãvìšïݗј°8 áCS·H Càap3‘SL(·E"+™ÈÔ‡Ng‡Ïdû­@ áëáŒÕÖÀ)NÛ;b° { Rø®úˆ"ˆO¥léžLT¿ÂM@ IUjËC©V2ѓɄW$þ!E&;]ÉDrÇ5O2áè„`Ò8¤H¸t¢l´þý:A<+tBSˆ ˆA»N8D¡0rÊÆâLNøiÇþÓ²|.ßk#¢šÄËDP{×€ý¢´;¨ M ïúç"Qúj[o½#¡"›¢™¼ìNZye· ÄC.8"a0Ê.©V‚Ù÷ "$»¹f'yTˆƒy@VB•nÂW8ä#8„N·H B$ö<•ÛãV dÂv!çòš'÷žÕ)-…H¼ ÉP‚âW´½ýÇ Qð"‚§¶qXë½TÕ¢"(Nº:[| Wö5’d‚F ˆ,C8À%кÀq ׸´ {ätb^ö÷`ï÷€†¾á ü‰yK-l‘ï:"‘/dzÛ ”0ªÞ”!µ„užÀAü™üÈ3 ÄuÁ”Ý@HLŒ<[pañ\nägæ˜í‘reI ¡ÁW‚Æ2´ ^ô# Do/$8Q«¢©ÔÿøwE§¯ñ4ó=šLØLXÍ:!šc‡FƒL&,PdÃ*K…ÀÂö!‰9Å„«@À‚ŒBEP'¤0ˆæŸ° ªÿ©˜À=ÒÀ:¡L+“8ey™ ö# ÿ\ÐLjþ‹yø±W*B/JÔÀŽˆj¦ @£êhmZY§HÍ^* 8RVìÐFjTvY¶Q‡8ge–NXd¨ÀA±€Ø!ÇÁ¬Eƒìˆ*î­—”bÜmd`àȃ(äkY=Žc.‘럲 „;»ÌÑÀaeù¡gsJ$ˆÑçrHÃøs Â_(²Ëã¿È~É<üR!9”Vˆà8dm‰…7jЕAé pæ=çý1]µ©H±$ê_ü¤¨z¡ÐµbNK&”HP ßAh¸÷ððˆÆM$€Q5H¥^ÚI¥¥{Ž€è|Rµ:Q^W!ƒn£†,è™ÄÈYSäSæþ)WàØODbôyK$4—49, ½,¡éBP§Æ7!‚•ƒ¡a+*"JEJÒªU@BŽL…°Õâá]:TEDBÌ$åuª’4äiÔ€¤R©µT=ŽA§¯!£Æ¤£ *vHD¨ŒŸl¬Þ‡(Kd!+°iÄг®S   …C/@9‡"1ö¢bìæø‹æØK|ü¼9ùrnò¼yôåüä+fj¿ž®ÒöóíÖQEª4Õªˆ¡å"—‹jp¢÷±Œƒ‚í@CフÊ$RÃ[òŽN¸s°Ž™2X§i¦êh¨2‹A ˆ’»+£0ØQCé„ÂÂ*Ëì H†âù¬Š*™ðê2a Æ‹¦bbò|€þJAºyôU‡(ü‡"ZbA{(á¹§—ª Dh~êÅ¥>¹^Â/43#ÙëtAáMЉ¾}úð¥»Óa:ñ‚ K¨KÑã8’£X8ÒÝ  &úcdzvà°°Ð.eÑÓþÖ± LÀrÌÎ'¨HèãE“ŽaÂöWt&„¿V…¬@d4±{¢ÚO ²m$]½páBíÞz4³W‹ö°„°ê&†>§4Ðˇ´áˬkdÂ#ATv©ò ÚÿÄS%˜8&!z8A2 +»œ2ÅòœÕ#õíqø1‘•îdã糊‰‰Í=ùr0Ò½&–“¿´|â¿ò°›ª8¦ŽxÛNT­ÕÚ÷ ïZÓÔ§GS,YÛúôjQ] u l“±K«l_Ý L Íá¨6b—»ÜÃ>##§®ëÿ^hÞwXbôg ÕÝû¹#v×Ã<üoyWà€|BB0ñªÎıÿÌ#“¯ål& “¯g¡püWæÉ_åO½™?ùÆŸO¾yãÄ_l?”VcY;½ªfôÐöÆ~  ÙKàèjd±à?ûÊv-ÔÂåGrxÝ Ç$¬åQq­KøO *d`Ô×½, Ÿ6‘lÛ±ó¹O\ìЙ™Dˆ„Äáçó^‘€“D,éq€¼ò¨“L@&qÝ%VÔ°€þz^IÅñ_š'^7oÞ?õß_báäÛ_ §Ž¤Õ•Þˆ×{é)~D»Nô¨ AJ]"ÆË¹÷²Ñq´·Þyû³…U¿k¾T—ÅqˆÂ;¤=0|é“Ù¥/BuB tdBö8œd}ô%«ëá—L8Ù¥µ”(LxDâ¨Í„¢ÁÍø‰·þ$ 3_ž¼p©ê°Óîd>âHdû ³'ˆM¨j½ÆA;¢!CÚšHÐdÂâ#ˆ{LÂ7™8ôs§¯(¨ìrô|®Bv qÄI¨dâÉ×  K*Þ¸qjZ1ñ'Ž™/OÌ|X€?=scê—éw¿Ø5™®éȇ] ŽX-âMI:"¸!ßÛLBüä™W·¥¦zží˜‚‚,ŸÃ‚å;ÓÝ;ÎjžÜ™î{l –XèÛ‘îœÒ}×9UNî’{Ïö=~V,ŸHÃÖЗ‡ҽûÎö O%‡Ï@™ú‡Ó)\î?›:pZ,m8 Vöœ¡+¡Ó‘=#—iÈ.±àös ÔÆÓÚð=GÒ»'Ò»Ÿ<'–éÁ'Ïb!üæ è­P­‡myzÚZ¢a¦ß·\à ņßݼFȽÊ]~à ]A;0jºù¹šJ]u¾Ýº1vc""²ÁVnÙ…•í­[ÂþÏoå-Rùk÷ÿŠ+Õ»ôƒ®ýŠO}­ÕÑv¤}Ã[+¸~Å»µºþ#¸;Ü‹þ•V?òVˆ5â¿P ‘Èßà¯Nó¯¸ÖT+Ô¾ÖªiÇQ¾üÚ÷øŠ/r+ÒA¬­m¢4X½Úϻڶì=‡ë€È*[ŒacDØ6F„acDØ6F„­ã,âÈ[©v´Ž­-¤ë©" ½RÀ¶YZ†m“rVFıËlmnÍ@„OµöÍB ­›„Èzì­MAi*"w¿ù®uüÛÛúš5{åÚí»Þú°ý»;wÕU¸óÍ·î•k¸AõqÃ0‘6Cü»ÿÿÖ?€|¡‰Î_>ŸÇ£ÔŽIz¬ñõªhðJ‘ï$"]¾Á¾õÇ‘zP¥Ê·ï(e¢…*Ò¦£ÌŒˆ+c×-AÁ«" #qWˆ|gT ñ\F¤ ÒU=툜»¬y*ÃK8NåÛw´\„iDÖîX3©–VÏy_bMŒ&@­v×óq„IÕÉç¯Ó£„eU™i]±šü«@›\”oßq* „Ö#ôƒ‰”aMw¨ˆaÓ@;biõ\š–Ša*îàJ¹fÒc­'Ï*Êœã®ÆUDDñÁ¦ QQÆ9õíPâjiÌ00iE&œš’šÍ8ÀI½Á:ˆˆ—F¤ÕU„& "Vhë𡠶ME•Ú¸–®ª2#Òª*B†¶ðÉzÒÀ]øP¾jïoí¨¡‹„q¸ê³¬Ù#ô*r­‘tµP(¨£‰E„ÓÕv:“ÍL¹ `¥ïF]…:¨"¾£ï­?$ψø—T†_ ¾Êã¥'Ÿ3Û÷Þ¼x"²Víe— ^, :k‹!ùتÈÚF®ê­U3¢]â DXEtDîÜÝ?0Hßò10Ó4U™©ŒH¹\NÄÛ‘ ˆ´QôeÛDb{¿ê<»E¾yɧÑ;ÊV¤uêʈlˆ’vÿ¢ÍˆÄÝ*RROD8Wå@ÃÆˆ0"œH1"l<Á76F„­Óá)\x š ˆðÌ"03JH‡ ç"lŒ#ÂÆˆ°1"lŒ#ÂÆˆ4z±‘oDŠ"üñi_V ÎA¤Ú¶TëEتEC„ïFAòSñ)sFdÓ†ˆ´Ì J.ÔÆ”HZ×Óý†D%FdóQ+ƒæwj9ï,VÍjÀ\^\xjÞš¥¨âg«Á“ˆh|ûJ¾‘%d NW[wòˆ oÕ !Úˆ¿*̈T‡ˆ6yDqqyñ/KP¸yóæââb8"A \UW3z£j5£O­‡Áß"“G0"lŒHõÏôòÅ6F¤º½‘:l…M÷¸ù6F¤¿GÃÆˆ„‘QÃýÌž8а1"lŒ#ˆÄ΢¤€ŒÃÁˆ°q akuDlmn GÄ0Œõö7íýøX3©öé\¶ÖÉXƒîáeDØ„áýÅÍS­ÕF×\j¾ÆÔˆ4IE wÒ±‹"À}ö±I†¯Ù¶K"Òì@ó°Ý‡V7‘¶Ö’ø n2"m=˜Èˆ0">ÿ‚wz’_ƒ÷}Ɉt,"ÚSÿA”‡Ì‡ÃˆÄ/˜Qщ'¼“Z1"±F$¼B»wï‘ZM"È„7±ŠÄ4]]õ›¨‚ÓÕXwzµéµÑŽ|ä‡GWÙXEØÚ‘»ÒDÔ•^V¶Ö4—ÙÚͰ¹Ãðº!Â÷‘óðØÚ‘!áG­bgÕI0"lŒ#ÂÆˆ°1"lŒ#ÂÆˆ°1"^DŠÅ"#¦)•J€ˆ‘èÒU¯³ÅÖ$$Ã¥"€Ì2›Ûüs66ÁØ£‚ ˜ÃáV#Q,-Á vvê3ïL;*ÂÆæ›·âòoä ð„‹–úIEND®B`‚pygtk2tutorial/figures/button.png0100644000117200001670000000574310050344475016364 0ustar finlayfcf‰PNG  IHDRƒQ~ ‚ pHYs  ÒÝ~ü •IDATxÚí]ÿoS×÷ˤ&]ÑÚuÄl«Ž@’R‘/°‚´$l1b'•Ú©ŠÓ@ªÖJëTb‡h·ñ¥h,„ÑØŽ´øÙýaô/!Ž+-vòÏÄÙ¹÷¼w|}ß_;/Ž!ïèèêr}ïûr>÷sι÷] ðFZ\~ÓÞ‰Ð4M±§ÜÀ¶Ôy[MÛÁþš9f«^Y]]½ýyôæç+P~ÁëL¿Ì3ý[ÎÔg·îänþcåÖü­»¬Žzû~îþW\<ƒò««÷æPïþsŨ,”õÎü*VîÍtžé³ù¯=zRx”*Î' óKE¨þk¹ðè?…óS×ê{»R©´£ýIrù´iÏ‚ÝßKÚ–@}é•Ä˯$YÙ‘$ýþkKm?L‚¶v&;‚Éö`rÿO˜¾úÓTG(¹?ÌËéŽC©ÎCI¦½©Î#I¦GMí_ìì‡2Ùu<>®‡†ÒP†Oš:jhïx´g<Û÷Ë hGxºî¬*ù|ÞZÏår±¹Y‰x<®Â;ñ·o®0ë·¦X¹/Ùº/ @ÙÖžhkOÌô¯%Z_O¶S@Gg m#ÖçºÔÑD‚=e¼•àH1Ó£–Xf T†Á™oXyNo?ÁŒÍ}›‹Ã3«(ÌSÐø˜Ø8¿î2„™8¿¢x}º‹=€•·ø]9'¾ÌÚ¾nå´î["0^çÊÐa2 —ÌúáE¦ÝIný=e<*pbY k$C èM=œ ½gÓ¨}¿Í莚H̪»‹Z‡@giHikS}ˆŒD,S 0ĉë7f¿øû*ãéKAƒ/ V z!ÆôBÀ#6^¨w< ¦ëWY :ð› hÿ¤~°wF´‘ŠÃ¡žŠCÄžTÁùnëǬClâ„ê¬áž.Ø Ìúð“D{ E€õƒÇX:‘°óB†Â-zÆtÃ!ΰF¦SiñEûVuúNH`òò¢»¯Š„;x6qB%ýÂg‚ç`HÜÉq,!?ûM~®àÀᄇƒ)1 „N0e.h˜•¡SéJd@‚3 ƒ#ç @ãà¤@ÿ+‰™L°gZe‚£Y¡tâ„»‡°AûJÁZ0¢xĉÒV9bßÏq˜ûøI£ä@ÅpAo/‚õéJbÞ⎬ÏJ“%v7&}F.„Ó1À‹¬äÖg:“A…Æ‘÷ôΣ|àí¸š: !„´äÛÝ(7)Å –'Ü}½\ŠeDÝhëM0½aq^Á\¨Äè\‚0ÀŒÎ]b6Œ‹$`F7½ùòBÀ?Ñ éû§u(ßÓ€“ï²öá8æ —Ì7µzm‘ÛG‚¨@}¤´Ó³8Aׂ[t%0 0£C&Úbvç^ˆµp/„ ÀÕ@׉ (çÁx!ÅÜúY F3B$¤0ÐÏÅé?øN1`0|ÀTzàísº ¨Š„a•8¡Zêà‹yÖÿÞÃgˆ†òBVŒéo8¢²ðŽÖ§H@<dŒèP]L—¸õ‘èˆÀú§Þgåè‡ú©K¼ñJ¶³ßÈb!ÓSD–¢Y‘@VS¢Ãqò""1ÊÚs"Ï¥N|k¥{sb2 ?ßNÙ€þGYÀ¦d}Åàv(‹$ 0Ð?³La`Žèý4XäCV²ÊÖ8~%ŠxÎ ÑÊîHÐÜÅTÈ{NPÿ» 9àà‘E΀”®*àÉèæV‰r!qú“õ ŠÃý—™/z'Ca`„óÀôB,Ôs–ÐñËúøUŽÄU½ëxÔ«ðK1†f·4DœéRĶþÑÃ8ñ¬þB2Z,Œž6XF*ô` ``œÓ ƒÁ Y1¢;Š  " ÀqGd@*=0ùœúpÊï‚<. ¬‚v/s'œ,Nûq˜üË·PžŸýoø´Äì_cøÚ*JHˆÛ«´5+mÊb»8ÄeW¬;"Qû;>¿Tt€vF/Ħÿ± b"”¥%ñPåj`ø÷iÑ N\ÉL\ËX1@&?Í0ës˜^ÿvòz õ((®™¿a£â]Ä+8"Q“0N¤Š•ßÒ½gtikºœ‰^Ìàj@Ü“–cæj +$˜Ó_]¶ Lþùi sOQ{Ç¢â¶ÿꮊíÚ^F‚r‘†¶Jü‚nç§®u„§¹F^ ±Jû¡HGwtÿÏ"ÝQÔ`ÏtðÈÌÁÞVáÚy4Âõ¢Y‰ÀŒë VºŽEÃýÑÐñHhp Öe=}s8 %jh$ 1&>i×(+RÁ)}æòRjMÃ)ƒ’‘öI”´­Ž£Öï-–ŸœÏh--¼ªY¾ékÒ3kÞ ¨õ°í²ÌÆ;Á‹®²^`ª&kòØõu‡žT+*®^X¯:¶<¼°.GñúFQY ëkÅ%$\ß™Œµag/éÑ×6ŠëÕ`¨bUXw›xuÜÅrÍ ±¢pýªæª ‰¢/;/>>¾øHøHøâ#á#á‹ÄžD«£ê/° M„?£U¦|ƒØæÀ &ÒFÎÂÂBã ØýÒZ6‰b•ýѽ"V÷€H¸» €p¤è ÷lxh('ü8á" â„'|¿$ziMÓ ¾ q¢®§ÿŸË'?uª5’”R8,p©Ê‰FçNö²V ‡®Õ·ö›-eصÜÉÆ4Ç9Kß=Ÿ¤µ6ºPJlDZu€½ËœpbÞy úÖ‹-P(nxfT,åÔÇ}¬å4ÂsÅ ‹lؾò£Öù¾ýذÎe§Ý`³Ä :Ïãt˜ƒŽ yë÷¥çQá=Ü·&Š;ýÚDœàW ðIûãV;·²/¿Zï…CÄb¬{’’5'ðj†TB„°G£Y&YABNÄ{JèÚrB$ŸÔSä®õRbra½Ôs' N”ìÁP9Öfµ¹À:á'ÉLVœ ©Ú(:[Zï~î„>¡Taúñä¨FÇUÍ–:œ¾-NCDóYmM1N¨Ü«ù9Á¢ñV©Ì€Øœ¬ñZl®*¶7“«º‘©cÛA‘lÔ‘hNp'hÑ'J ÜîF)‚a{ÛXªÂуY½þ$Æð:¼“8E\v;š.N$ Pù-6TB…SĦ ë±);]Ľ.Ūç†â;˜Fg^(PIN VÚâ´ÂzSm"Õ—Î6 'ÖÀAUý{+^-e©g~)Ù}NÛÝ“­¹ì‚4~O©ÖŠ\i4'üÏ×NØ`ÝŠ„펀7œ°æ*¾X9áB Ÿž‰‹šé›Ý^…¤™¿OìEiÒy'¿t:(~•²º2ÿ¼S#bFC½Ó‚)?¦Ò’!ðEAv _¼ZyøH¼pHX?ÐûR¬ü ï²ås¢Y–âÞ áïv4—wòñð#v³‹J쬎DÕÃU¾x9|NøHøbñNô¯`:"áKc¤ '|Ù9qúwƒ}$š‰f - ýoîÿ”µ¯Þj<Wüo?|iüqUDqèôýIEND®B`‚pygtk2tutorial/figures/spinbutton.png0100644000117200001670000002174210050344475017253 0ustar finlayfcf‰PNG  IHDRß4#oqŽ pHYs  ÒÝ~ü#”IDATxÚíû“ÕuÇwå*ƒ‰´q‚´²cíÊVB„•‘–• ­d—Aî e;Äå8àŠ±ãØ‰í´&ÁN9ä£ h©ìÀwç¬S)‚Ÿ„éÄ:Ìßñ'kw|fÕ"¥p¯‚¯=?ñÙnþ®í;¸PøÙU„oïçW÷i Nܳ,2 ÷ß³ÚÍ"¤ ß}«Ñ¼"ïψj:ùÉ;Ü¡°®¦Ó§;ð!”‘„¿é³×æž­¶É3$…ÝÌ—êG/ÔALG­bšùÊæÑG7÷ynººƒþ oz¼üNm›p:³ž ¼uëfD篚D7>þ©Ž"¶q\íP8±®´A ¤Ñ"‡@áÇ'¯í#R9øxbðirh…ðà=AŠ–0 ï_fî¿h’C"Iõ@öÎt« þì±£ŽÇ¾X›Ñù u‘ÃGp Ü §]Pé‰ú‰¯ªt]Mܽ„tzÞqµ2LRI7Y~å²ÍƒÛ61Ðyùòe팜û­›j*X¤ŠøÉŽGÞ DZrD‹_¾0×­‹ô§ë&7ĽGV)…“_PÓ €zäN:¾vª ˆŠ8»6yb]%qúäúåH Úâñqç>GinÝd›âN"ÑGa.߇]¨ò‹iɉRøÉÏp Õ ×Q»\%â{àlrxW8£VìT&Ôtrf€¸>©Tò\Îv@lÏoDŠøçk&9¬MŸª:]Õ]³Z¢#xøáŽ_ž±ûe»p"xß…*—À€ÅÊáÉ'€ÅëxÏò§2ø7Äg(ˆÆbÊ¡Ù5PÄÃ<: Ä3‚¡@2¿ÜŽÆqæ\ )T‚"ªbJ$åW ,ÞûõËT¯S ééúÉgŽÏù08¾„gÍ÷{¤ÓMÛD©#0Çö¬–(ðè& â”Ú‰ñAw^iRETâ¦Q$%cŸùÜ¢òýáT@¡9àªu‚ÍA¬£NÞ½®VÀbŠšÁŸjf2Œ¶Ylgð#ÌjPR™]Ã%*GÌ?X‹v——Í)Änj~“éb‡¿Ð39l§*HãLÄ6|¶èE1J³×N<°¨$äÒÉÅ*"M³—j‘ߨAš Ó™o4Ôtþëµ»B:i':ôÔtÒM(šô§K;;‹|âέ­åŸ¿xå7ÍÀåPpÐ]q³ÖñȇÖÁ]˜9².ä0ŽúbðÑ»»¿|\SÇÐ#Ȇº¹65«† ˜BùÃùˆË¼ö “Ã@®ªdÃsÅ*V޹¢Ã¶þ…N9,53¿ÜIà O}­ÞŸ‚2ôÎTÿÂü<Οúf‚¤¿¬‘gþªÆÒþûžòô¹è¦¡0äC§r¿°!£w…á ½×¸‚Ê[í2;Ð`7u–Q`ʼn©õ.»ýrÄ\J#sÇûï_CEÜéÈaT¨ay™bÍìì‚¶) +H¤š ±SZ¸Ð9ßå—I­¡Aƒ‘RؑÎ*7²X +,(DuÔÜqšäðTDN!JcHÞÜ·êĹoÓ‡ÿZ¥Íùï\Ÿÿv0`v)“¸SwÓt¡#TÅ—L¬Þ”Ó9>¶'v†ë¿xåÍfWõá‘®bJbÀÜG\ï½@y?;ó³kwˆBCµPÍc­ÒZˆ¹(v;þºA øÛmƒ3ÀœšŸ‰«¸éJír DŠx‘PˆâOðœ|æ:óÈ'Úž AT¾8ä¯Á@ÔR5¤0J"¦¹çkgž«ª©JûXLM'Šht2–b´s+4ßúÎf´¯7~ÛTq¡ Ê$Š)Tuþd¯¡/F±ñðCkH”T â&Än°ÃRsÄâ| „Pœ?U^V3è—Õ|_µ=Ó^Ø]XF¿Œä©tÐAµv—^7–—gµbŠ!ýÅuE$ˆg¾^í’ÃgDQ|øÙèg„àwêsßQ3 "¦óÏÕÂôÈóµ…ï5^Ø\ø^íð©ÅÜ´“ºx*œzЙ•vÞÄõ_¿Ú¤5ˆ¶+ÕLâý×Ð#vÏFNJ*m¿\?ôPW1pÔAT|Ca9 "Û¢ed˜Qi§=£€Só@Þn{æõÂ2-©…’vP¢,!q¡^^>…‹ &‡_[MrH¸dŠ8÷mÐÈÆÜó*ÕæŸ‹@ (|¾ ,*ÃÔhÏtÒù¿«M™èLTÄQÌ©`ÑA'”»³,ù—ÙQ;:»«lèjT§N¬²²rÁ‡i¤ØíŽib @…¢‚d(ŒX<×€%"ÌÌ„üAq k)‘*T°ÔÚ´ç©>Y·Èa§T»Al˜ýrÈbÁ.!ÔåñüóõGÄNMCi<ߦЖÍ-eR·Õ?²M°¼¯Êck”z-³7·¢õóö-ZwµÙìµÞဿó„¿–—ñ2”Q åås ¬ÁÑ*n¬ï—i˜È^¨tUܨˆp)qÖ$‡,.Ä%!…“í*L§Ÿ­’bJ•Èa5tÇ‘kf‘"¥ðÜß´µ0ÆÂîü õ…ö”Èáæ…Ö~PÕA\øOý¸6=·Ø§ÚxÿM@}ÔÆûk'ÒùÖ;Mãûåé‡Bï _6œihŠØ`‡ø~…UÜв3ƒ¿¸9ö%^qx,x§W9ETŽ˜úå ¼JàÉEƒ_Ž* yõMìT~3šyø›uc1%¤³ªSÀ5+øþnýÌw7aæ‘ç# /(Eü^ãÜ Áªˆ?h0 Ïý}à;L¢Jÿ´~ñ§ï]üÉ?þ³ß«™GúÞÔ™§PÌðî»?;¢ÜÀ+Mx÷è0,?Ñ‚TL­j;?æwE‰Êìꨕ·o;ê±®ÂûåÝN•M¤Ž‡ç7QD¨ÍV!#­ÄžéªµA 7» Ë–Z›(=Y·E‡š_åð™*qŽ‘á³5=:lÇ…f9œkSØ I©ûå ßïñÜ7ù1—ÃGTí±;=ö¿¿øòïTzì¥wafêì"Ò ¯pŒŸ ±ï{ÔšøÙ‘Úܶ2ü…¨Å~ÜôÒ+/âQzÕN¬n­¬·ðÓ/¨,ĺ›ÎÛ"‡á ½j×G__6ë @Tðuê®»‹)¡V9…Áûå6ˆè”gŸ!røLƒˆ ¥‚¬¼¬(<ý­*E Y• p %F¡ <•.´ñÜßV,âÂ÷눿|ñêv]§P¥Çòð‡ ‰ ÒÏß{l9˜N]›žèëछ€ÊúÔѯ–€Î(¨Møõq¤çÍ[ïÚ©èœÜ´Qñ‹*‡–±ÎcÄ'L5ØjúURkm)/+O9ý²^Ýå”»Qa§Wbšn³[»Jʃ +¶’J2"?Þ<ÏATrø.¸æÁw;8¾ü»G)‹/EùÕå÷‚$½ 3O/ÿ~éÕß©tôܼÎNúQ°ã‹¤ ÍðžŽÉò+—ý>/}ñâS/LL?½oê’OÚ{D¥EL_X¤?ܽ¤§É#K“3—T:xï%˜¡É¸ðÀ½Kî»tàø¢ºëø¥³K>ijviúÄ¥©pfjvqêT‚4ýàR0sféðé%5u'µÎ¡Ó‹ÑϳAšž_úüÕôiøÉ’úwêìÓÓ_¼th~QM,Ý»LgYTÓc —ÀG«í}¯MîÛ¾­O¨ ï†¹:ñ±è¥}’«–úw<ûQ™4ÊKÐn‹´c[“%ã±™O˜«î6xã}¬½xcÿã½7VÌ×ÌtÒʧV¼}&Û_mooÓ¥Û·]»ƒÙ&·oßnù]óö¶¶óím¯½|p;nç@Vm;Ün›#jo4‡Û–Ë¥o¥ÍØJo¤¼D‰“l·@'Ô4YéŒËë‡Æc\B§V4ÃU!¯Æí hê@we|Zô§NmnõAìηo'ɉvôííÿ §·}6¤×Ó¸E¬ø‹9ÁÓÑÙ£vЉeoYyv11¡SLè:Å„N11¡SLè:Å„No:=keÙjÛÛÛ)ªs{ÌCÁ1ô–ô–I;õs Þf÷έ_¯ïÄÒ^޾Р;¡?Y‘3ø‹-tŸ®¦¯¯g5öauœZb›aˆ;)s6:ÙíwÀäþ鉚c+•Ÿ³£ëˆ/w©o9nHg(¸ô'*nÏŸlÏÍ Ý9ü¥çGÆD;ûäâ}ä¦W:¯SR(4F5uìܽ˜Aée²uô£ …F²Ù °DÚU±L hé;ØþÃv§™uÓI%­€?):le¶º^Ò]!ÊÆÜîŠeg¹ÒidÈ(iFébÛêá‘fü ζ uÖô¸è÷éý@âÙûaƒ§Ó½ÅÒitÓT€~?QDÁfŒA3äVÊCCE'êÝE#ÐlGÒr•^*B¬}vN³ {“RÑÒéSñd”"½vݶšçQ3ÿ¸PùÌÊ|(ýëÐ v¾³³»Žä3“SðY§|tºo 5ÿ5árĆêÆKÆ¢¥ùLzkóÉgŸòï>ŒAE;c.™ñM½ZÓÝj¹ŒùÌYDýOa˜éìE;YÅ$|$VÏžy>K§þUdéµs<4z}Y@ÝË%c{Kú@³ èùé…†~äÓxéÒ-ñ1ö†Ìq î:¦‚ÒÉ.P&O¿-“)Ü fF‰·~óR??ý˧ûzú/It îŠØ!ñì:wBË*T/ vf•Ï^X„+œ‚NÿSp„ÎÅ¥“^‡[÷Tmè¨ô+™ç3)Ê5÷rFx ÆÌ':…âÒis‘©ãά*áúMgæù¤O¸?¯©•a®ï´!j¤îwijû”ŠèEóÔÎtµ(éNA÷ï%(ÙžõÔwG#(x™=Ã|ú\Ï K¢¶jV–/q™]4{;é—2ƦÉÅ¡3Û|z^OÛ I{l}'ž‚»\?`:iæõƧ Yö|ä]QÉèÈ;‡7)Ô»¢ ó™´`Uè<ºïÙ—ÌAÆÐ䳯_øŒ \t:é9äp×c¿“µÝuÉg/§`üB¹”µñol0ôù,Nc£]ûkE¤³¯îÆß» q>óÌ6Ë}ÄÒÄű²t…5ôcÒeÿj(Çéb™÷y´D;ÅD;…N1¡SLè:Å„N1¡Sè:…N1¡SLèLJ§˜X ˃Î]1±äÀLßéKjž_bÅ5¡SLè:Å nŽq„N1Ñθ­Ìý±u<Ÿ9ãj¥þ¼Wè̘NGG±½?¦;–›ÂB°+Öò¨Wê;½oÈÎêÃV÷)?bÙÆþÑ/:cE²Mõ>žFúB:0:þeöYß3v¾?ô ÊijwÌøæÔ8ÌmË>ðµ>8®¾ë:ß¶Û8»0¯rèèUlØÞ³ÃaàÍ)‹ðD}L– 6Î=ë@îásÈ- ³q _yÙ]ØtlŒ½–i f€LÚ6Ú½mxw›ˆ:¶+‚6±åãlè¤C•éǰdÏfÔBª¯ŽáÎN=T »2£bƒ*¤#'¹Òé(ãö¶²  FÝ7SÇé8Ø•êÅ/FªXq´3'Ï[M¨*ALèlIË ±‘£S×HýÕ%­TYµ… ŽÐÄX3oÜ„. íôâL_‹ŽqÁÆJ…¼Ð)ˆ›Nq£b%(³Ç–èsÛJÑN_zùW¬÷Âß ®°Ô(‰‰v E’L¡3=žŸÊKI?Ovrµ 4š–Äš9˜ÿ/ÂÏ.&ž]è,žvßÿˆNýë5Ÿ%b>ÆàB÷øÕ.4zÃËD_Klj¼¶ú5t´ŸlѳXž]²õ¶”-­}\ËÒÞ­%-1,Dê­ô¶„z«,ãÅ쫾«Ìîð;¢?¬U¶ M à¾Ð6-Ž+Ü?U:õV—ƆÂÒ*ÈdzëM¥™ÓLq5ê…l—whédŽØÆkUlÔN‰2Óyv]lí´ò÷N…«Q26ÈÔ/(mF,ž=E@¯_L}ª…zá}¤édák0ÉzžÁ«éð;«O’#pì.Í›LÚm¢8ñl #«¢U'—ï] RSt­X JúQìpì$ç2¥ÞëªíÄO'f1ÏŽµ*•J{´Ò¯äS_Î–Øø†Ÿ¶÷#ÿxÏùŸœi§Zg,/ÃJþ™-϶‰ö÷RÌ3òAbtÒg.¢t¼†f¼8]ÇŽÃuaÙú¶yæ\?4¥³ÐÚ‰()¹]îŒÃçÙY³§SÊù¹Ê*çÅòì"™:K|.,hçéd]«Òœ;ŠkBg¡={lÉÚF§gÈÔ'çcË9±4tbx¤öC•d[âø Ë±›ö‘ ohYyÂF§±õ•‘ξžµþ‚>6çeÒNF•q‰ñ§me¶„=¥ÐÎ ãÎ~Ÿµ1çìÉ’¸ÓöÜï„+zq•=e¡“ 2–šÎ~ŸµºÔ#Q*Òq‡kv8}Ûæì>­@e,¶6»:ûw¾ér®‡%eÕN¦…¶À±Cã&ůïLWk¨Ÿl_ÏÚ§Š2à~I[bÏîˆ;ÝWé¤o_Š©±ïÊ“j§þ¶&ÿˆËy±—¾TQ“U7и K'{¥Ù{m|¶g ¶±¦–=z}g)µ3¶F‰RÈþ2*DIk”ÒÕwæLgꜻ?(+}müP¾Ìt¿qa ]|îñÀßd:Þ•€NsÈ»"‡´Õ:î1®3:ÝÅh['ïÙKÉe¿kãKôaÀtð/¾g÷¬54VÔçO'Uý¬jj‹¥Ò¸'éÊôÂýi>6¶†ne¢seeEô2ÅôùG)½ç¼%=$±éËZ…ihlÿTÐ7™ÒÇvþqBÿZ]§¾›…~Ï.°fB•Ì"_IŸ¼‰g+® bB§Ð)&tŠ B§˜Ð)&t bB§Ð)&tŠ B§˜Ð)&t bB§˜˜Ð)&t bB§˜Ð9:cGEY©üôÄÇzÿê¶ŸîúìS¾¼.î1PÆÇöìÆu᜗<¯5;\ê£Áƒ§³R©è}IÒŸ7ÿ·©o«îë²:õÝÕG8Ž5|rØ~l½Pëû7þ‹Ýw¼ÑÅÈi§£Q)£“Áäãû¹o6ʘíDŒŽt±#˜»ëv_Æ䵸t¢|µÓv;õш™’é+°þ÷åtlcw‡Uz¿jžÃQÚÆñeO*ôhJiè´µÒwÐi„•©)ãRad$OWA}(ÛãatëÆm#ËÛ†›Ù.RÊçÙõ[Ž›ÝZ]Ÿà'ëš•É'þ«ïŽÈ˜6ž8e»WfÛÒÜ☖k\¢ö0²#~—’Nê‹ui´- dÝïêCXø$DÝ.cȧTÄ$V_¨?E#Ej¹µ“…€º°ár H£çÕ%ÖñHø8}ºðŽ ‚–ŒN½p`,ô=;°«—ŠX•+‘À†Œ ê¯Q„­*йxG i˧ÐY‚2{Šúð¤% ‡ba$êS».õ—%¦S!éÆÿÜÄyL»Î16Ýxp÷±œõï±ÒÑ \,Ó#[$* æn w?b=‡(íE¥<7÷¬ÉwoîØ‰¼|/.ÙÞƒl•Fß[ÒýÇö)¿¸tf{oÜ{ËðXžQA¬jšh ´“ß¹í2?ÛtʪWg©Jä»…È2ÑiãÆÁ“O«C'ó\FQ;ýÕHL´³dq§˜Ð9øvE>Yqßû~2,«ç¤FšNÏËG ÅÃkJèY:õ1ê*•оDÜœxö¼éÄ¡…Ý ßvvv$T:£îo”nܸáh¹AmlZ”Âzß{½ì¿8ç8êtªåËËËîvE±ŸTöÕlB®7×ÌJò“R…ǵ}g]䨴¸tâQb[½Å6Ö±}Öil ׊û¼²åÑ’ÎÖB¨¥}O·òôï£õsa_L»OÐxʱç(tè„O“ð™Ði»Ó´'[ì§{[öé;k½”Žo[»Ú@Ô§‹û…NN§ÚµJ0CyE:ÆÃr¼ß õåôww%¸&k×aTbÇþÙ[[Ž–³Õ‘?º³m]QèT’ »…¨p“Ñi¼vô~x¶ÎÑ…­¥µLOA§qIj:uîýéTŠ>«tsÿs: ž=Úûž1Ïöìîˆ ÛìêwÑØx—õØáãÙYÃ_êµQ],+©=»ãųgY*b?‘N]>™K56=ólS¦·n‘ær>¥"#z[×x¶Ä]²Ñ»rˆ=AÛ3Œ}RH©(ãñÆ>Á¤-Ôrk)akdgk źZÈþAè|i]ü†×ѹ;Œ}äºïÁî[¡µ“Ê®0de‚Ø‹3²^Eó¤ÐÚ9”q½mì"4Úz¤J<™`#t¦7m÷Àè4„N¡3×0ß祤3v¼‹¤eát­»wm÷QNg¢Nï…Îôtz^Jã0™ôÙžâ^–N;}®¹Ïu‹½VCåÙõV ú—äÆoËcǰ]zÇ€…Žò8[3:Ã!×IúüÄ^½g+Ïø 1„tú/ñ—^·B8TĶµÈ–ÎDKØYÄ‚kü¶ÁѵÇz´a+9: ` ™œØ†Ywt\£7vä÷>ÑI"'=÷Vw¿7©ÏsÂvk»Y]™BÓéè˜ÊÝ3‘û†9àk9;Gp·.7:¸¬âNã¹³Ñi3ú×¼)E§ypel §v¦Â>E«j·ÐÃ^/'n»ñIßLzîÙ1n¶cê•R;¯faЉDëë£Ëõ²7fžt^ÍÎܧã>A˜ïñ”³º2Å¢slHmdO¼Ç+#-†ÅŠkªï“^hJFgÑ*íú ­º~4^ G¶xöÁȤê#L… “VU Ùm“^h†Ä³ ‰‚ Q‘ÒDO¦Ð™ÙUÆÏÒØÇ¹ÆÏò±û¶:vk\.Ú)t&0ŸQY‹úGæÆÍá;k㘋B§Ð™¸ äø`Ù-PÕ;Tkl‹¡SèŒÑQÏöt±2ì9rõð*tf¬&Ú”BO[hÝk»Û6‰g:SJ¦QÃô–ïØL‡µÇm™>cÕ[ Bg–h²†MzÛE²¸‚Þ<šî¼eé@fXëM…Î,éÔ…µu•b7—%¡S¬†ms¢s4{GíZ:cE­_tÊKg±bi§|•#æo•Je`Ú)&æƒÛÇö…Nqëb±Åö•••<<»ÞÂ:ŸÓbe·<è¤CšŠ‰%·ïtëZÅÄbñð³&c:ÅÄ–¨L"tŠP¡S¬¸&tŠ J´¥(*f+¡'}k“¬cRyo$æ mÀž]èLZÅ6"¯Ö|ºœ: AäšÐYˆºùÌ@è,+»¶…C/·Bç`|·[,¡1§>6ʨ ­Ð9˜rhҢų ùU‘èCœ§sÓí£BgÞ>]ïF¡EúF´õŠhû)Ú)tf¯Æ…Žî»@\G°ã$¡³¸t¶ºûõ4öš4ÄÎ]èÌ»†()¶D;…ξk'ÅN§S©&ëtN<»Ð9€%¨ãÔ»S€J©Hè̵䞺æˆJ=ܯ‹„Îü"NÇÏlQ:…Îôh¦àÒ¸yÏÞw:Õ%–¯@ÄŒV©T½›‹vЉv†tJ7,bº"î³X¢ >³Vobb™[6Ú)€Šõ£ÒCz[víù$ò¶C,ÿ€ÒùòòKâÙņѳ‹‰ekð‘—Ð)VBíl6›B§Xq脯c#:·¶¶„N±"ЩP´zv1±AYLÜ)&VsÑ ^^L¬ˆtЉ Ö–——C6÷Œ5·n*TUZ~å2ÌH’4ð4ÙÇ¢¢»˜X1 üöQ‰CÑIEND®B`‚pygtk2tutorial/figures/treemodelsort.png0100644000117200001670000010653210054300171017724 0ustar finlayfcf‰PNG  IHDRÕÉ\Ï4@bKGDÿÿÿ ½§“ pHYs  ÒÝ~ütIMEÔ7³x0K IDATxœìy\ÕÿÿßsY.û& l"¢±ƒ.€¨™JŠ®¹iijf™~ú}>¥e¦ÙçK¹Ô‡ôcfi–K¸ –ô!ÍT\RdR–1APv˽¿?NN×;gæ.Ü™¹\ÏóÁC¹ï9sÎû=ç}ßÌ=3w^Tï± PPuœÁðpB‰Ê€d,Á0qò‡µSJÿ™€¨¿òX¡Ph;Ì•+W† ¢«“èŽSFQ<^…IÆ>9tÇ){”±ÏIÆÉXm>c±˜2]IKK£ÇPÎ?6;³‡ÈÈȶ¶6ÔÒÄÄdòäÉ`iiÙõ“”–––r¹¼¬¬ ­m·jÛ£?üðý{÷FŒáììÜÙÙYWWGQ”Vcíß¿ßÚÚºo߾حʓ$‘H>#r8­Æ¢ó˜{we#ÉX’±"Ž¥aÆb1åÞœ––†—Ne,*ãõìÙ“þ]"‘ôîÝ›nöå—_677GDD$%%ݽ{÷×_­®®¶´´1bD`` ``ccÓÔÔT^^îïïëÖ-SSSôžA ›››››ÛØØhkk†îÿèìì>>r¹|÷îÝ™™™èj;‚c,åè†VVVsæÌ±¶¶f„ %>|¨P(¼½½û÷ï_[[{õêÕ³gÏÚÚÚ0 ££ÃÛÛ;>>>>>¾©©)##ƒî¤µµ577×××·½½ýôéÓyyyýû÷ooo¿|ù2÷ÔpL™Î<Ç‚æ»khd&ÉX´#ÉX­8cY믜úü…eòäÉ*uÈæøøøˆˆˆ›7o¶··÷ë×ÏÉÉÉÛÛ[¡PTTT`hG©TêææöÇÈd²’’úS’B¡ÈËË€¨¨(WW×ÈÈHÈËËC#À!CœMLLP{ŽQh‡Çebb’••õí·ß9re<ÇXÊÑY[[EQŽŽŽèÚÊA8¢ýn‰ŠŠ233»xñbIIItt4EQööö J¥‰ÄÊʪ¥¥…îÄÔÔ4!!aäÈ‘h „„„¨¨(hkk£Û°Í sÒ»G‡šÅL6Žf*F’±$cµBøŒÅ‚¿þ“&M:~ü¸Š166–mTŽ1˜[-,,ärySSääääää ;²0òGïooïÛ·ogeeµ··»¹¹Á£‹hG+++¹\ŽÒˆÞ m277—+½u±C+7Š¢BCCCBBîܹsõêÕŠŠŠãÇ?ÿüóc)G§öà,Y²„y”,--ýüüòóóÜÝÝåryMMÍO?ýÔÒÒâèèØÜܬܡ™™zªü®Ü†mt{YYYAA¶ePPÚk8ŠG—€´Ú¤ 3ÙàèÑ£±±±ØöÌ>IÆ’ŒEfÆbÁ\£™4iÒ?ü ü’­%›m+² T Aׯ_gé¼½½ÏŸ?Ÿ••Õ§OúžG…BaccS__ߨØhggרØ666ôŸÜööö––ssst W¡P`‡V>›PöÖÍÍmüøñ;vì¸ÿ¾\.ç »»V­¡¡¡¨¨ÈÌÌìÁƒ7oÞìׯßÅ‹æÎkkk{àÀ•ï¨ý]ÃÑÙRmêÓ§ÛVîpÔnB(§™ ÇŸ4i’†}’ŒEŒ5ÀŒÅÂU`âĉ?þø#úEgwÙ²ÙÇÇç·ß~+((°´´ìÑ£Gkk«……ÖˆŽ¦B¡°··wppxðàò„gfffff4(;;‚‚‚P²²²Ó§OËd2™L†ÚsŒB»—žžîææfkk åååàêêJQÇX*ñZXX´¶¶VVVºººš™™©„7n(¿ôôô”J¥§OŸvttŒŽŽ>|øð¹sç<==ÑŸâ›7oš››×××@EE…——óØv%›¹Ñ¤qW²Y™‰'Ê:ŽÝÙú$K2VÃÆg,Öõš˜˜µmtËf©TwéÒ¥ììl™LfeeŽ5*ÏMTTT}}}ïÞ½•AAAr¹IÆ’Œ5ÀŒÅB@II‰†­±ÔÕÕ999u¥Olß¾ûͨn=euuuááá]IÚn¾qcÄËúý7­N¶±h^ï Ãq‘A`OôKý'k°kÆbÑOý5ÊCc [ܱ›ºû”uÑÿî¾±bÄ‹…Ô_cÆ×××X³™Ô_£Äˆ3‹)pÞKA &$i F€)¼ñÆwîÜA¯322EuIG´}Ôˆác|ièËš@QÔ®]»ѾèÛ\3gÎD[ 0coâŒ/"ÍÑWÆbÁ?‡²»‘‘~évž³a|1Ñ$4ú8t½+a0¾‰3¾ˆtF‹0þÇæ‚aBê/@ ˆ©¿ ¤þ ôp¡»ÐÅŒ%õ—`( T&%˜Ð]èzÆ’úK0”“˜”`‚ᣗŒ%õ— >Ìô%%˜`Èè+cÕÔ߆††%K–øùù 0à‹/¾`68zôè[o½õôÓOŸ;wŽ{/ÍzAÏ \0çõ>(6œ*Ú!£ÐjâH*êÝ%QUF_«FÿøŸÿüç½{÷²³³+**ž{î9ô°ašÊÊÊqãÆíÙ³Gùë1ؽ47ê†x.Xà‚9¯÷AµžH-1ÀŒ%©h˜©(X-â€ëü·¶¶6--í7Þ°²²ò÷÷Ÿ:uê×_­ÒfÉ’%ãÆS»—æF½D%ŠçB.Œó| ªU˜Úb€KRÑ`SQ˜ZÄ Wý-((@B)è%z¾½Ú±{indëÖ‡AyÎSà"ŠK:÷Ï•±"ºDRÑŽƒ&p­? ÙTôÒÖÖ‰÷qƒÝKs#[·UUU*—cÁEÏy \CDqIçþZ}S^ *cEt‰¤"Oƒê=c¹ê¯455¡_š››mmmwíÚµaÃ4hÐwß}§á^š9üQ.ÁܫݢxÎ_à Šóü Eq‡¬†–±b¹DR‘ãÀGÆr­?™˜˜äç磗¡¡¡IIIEEEEEEØ£À¶—æFnwQÙU{©QÏy \çùÃ}dÔú#nÆ’T4ðTÔü8ð‘±\õ×ÑÑ1>>~óæÍ---%%%©©©/¾ø¢Ú±{inTÛ¿&÷yˆâ9ß ï<ƒ*ï~GvïÞÝŃÀ÷¡3@—H*ò4¨Þ3@¡Pз°íÚµKùeqqq||¼­­­««ëûï¿Ï¼å­ÿþèŒÝÒÒÒÎÎîÂ… l{inÔ]»v©"Šçz œ‘(Îë}Pº7¶Ð°ÇA9-ÓÓÓAéLCËX’Џ$Ê ]ÌØ}Æ)ýŒG?:²*úÝîAËIIIÊtwŒ/"ÜÜÜ4|šuRR’Šš@LLLÕ£A†–±Æ7qÆ‘nt1cúóï‚XúK â@ê/@ ˆ©¿ ¤þ‚8à¿ÿ¦÷¯Ù F÷õœ #‹Hå±)úÂ’ºÔEŒ/"MÐ_Æb¾>‡©¿||ÍNº¯çl_DUº>Ø—ËÊÊ’J¥Lcxx8OA¹ººöêÕKÙ~:tèÎ;Ùœ—J¥´¼vvvvfffnn.ONŠ sÞÙb¿}û¶‡‡‡D"1772d:MÓ;Ø´ gú‰u ;›Ø–lñ”2wîÜqwwGž 0ù ...®®®t3©T€~ÏËË»téÒÙ³g ¼¼|ùòåßÿýàÁƒùvÕÐÐÛúo~~¾B¡ EëBCCsrrôÕ¹466N™2%%%Å××—6æää(Š¢—ÌÊÊRÞëÌ™3èoòÅ‹ Ezzº‡‡Ç÷ßmmmÐÑÑVVVPXXˆ5ò׊+>ú裒’ÚÒÖÖVTT”ššºqãÆ¯¿þšÍyšŽŽŽ—^ziË–-<•qÁÎ;Jìÿþ÷¿£££—/_¾cÇŽU«VÓ¦Mkjjš;wî§Ÿ~úÓO?íß¿ÿÒ¥Kh…zäÈ‘ãÇ_»víÒ¥Kß}÷]zß’’’äääµk×RU\\œžž¾zõjú]dd¤á\º½Õßàà`“¼¼<ô2??À€úê\[[•€+W®,]º4,,ÌÄÄ$;;5ËÍÍEKN»wïþðÃþùgú -T¡Jmbb>ÐÅÄÄdgg_¿~=88X"‘ 6ŒÍÈ+½{÷þóÏ?•-E=óÌ3èæ 6ç`Ù²e±±±Ê× ¶yG[UbÏËË«««5jEQ'Nüä“ON-¨dȼyó°~b]ÂÎ&›ó¤âüùóËËËËËËSSS îß¿AQÔ¸qãÖ­[wòäIåÆžžžÕÕÕôËþóŸ&L@«Ø~~~ÊÊípêÔ© ðá³a zÒ£·úëää4uêÔ?þ¸¥¥åæÍ›û÷ïŸ?¾¾:׉Db¡H¥RSSÓ=zÌš5ëƒ>hnn...þæ›o–,Y‚.ƒ¬X±¢½½ýÏ?ÿDumðàÁAAA~øaggç¾}û|||èKpuuuo½õVbb"º†5òAyy9ܹsgëÖ­ôG׳gÏÊd²ÆÆÆ}ûöEFFr8Ÿžž¾xñbžÜ¶y\ìýúõ³°°Ø´i“L&knnNKK:t(OŽ©dˆ»»;ÖO¬KØÙds^°T¤éÛ·¯T*ݺu«L&kiiùñÇ p÷îÝ;wÒË yyy'Ož¤+ƒD"‘*JóeŒ`>qª¯¿Ã‡ïÓ§Ìž=»OŸ>¨`ÉÉÉ...±±±o½õ–¸7?°‘’’Ò³gOww÷Ñ£G¿÷Þ{S¦L¹zõj[[Û+¯¼âöH$èÒ‡££ã§Ÿ~šššŠN=¶mÛæäääëëÛ¿ÿ””Ô'ÖÈ‘‘‘vvvaaa @—Úàµ×^svvöðð011ùæ›o8œ?vì˜ßvÆ3öž={=z455ÕÑÑÑÛÛ»³³sÿþý<®a†`]ÂÎ&›ó‚¥"‹‹ËÞ½{=êããÚÙÙ‰n‰‰‰éÝ»÷È‘#ƒƒƒiOÒÓÓmmméÛÎ( úfÒŒŒ 웚@žÿkøÐ™æææ¦É³€322’’’víÚ•˜˜ˆÚçååÅÄÄÐOÅÎÈÈ ïz&ðyþo3¶GŸ ÌÆäûÇ ¤þ‚8úK â@ê/@ ˆ©¿ ¤þ‚8úK â@ê/@ ˆ©¿ ¤þ‚8úK â@ê/@ ˆƒŽúÇLqS`‘A¬@,SÿX$„™F6Ýýû÷¿òÊ+!!!§Nâ/ìèl.aÃLî×P«{Ífä¦,1›ê6vްFlÖ ‘2š«¡·¶¶¾ù曾¾¾>>>o¿ý6‡ñ AGýc`ˆ›» ªX`¥d™úÇÀ"!Ì4²ÉèVTTÄÆÆæççó*7‹Í%l˜ÂÈýšè^³õ›l6Vu;GX#6넉HÍÕÐW®\YQQqõêÕ7nÌ›7µÄŸtÔ?†¸)°Ë ŠS –Mÿ˜)! 8]a6]Z ˆW°£cla #÷+:ê^9{”ôî›,1SuX$™±FfֱͻÞ#RAC5ô¡C‡îÛ·ïÌ™3Hô«ÿþp÷î]¦ñÉA÷GͯZµ*000..Ž.E2¨óçÏ÷÷÷ß³g-ƒ*H vÑ¢EAAA;wî‹‚Žõ—)nÊ&ƒ*XX6ýc¦„0›Ä–ÆŽ®bĆ)˜Ü¯ˆh¥{Í!†­_8d‰UT·±s¤ùÄ ‘²þ1¶V )¼%&&R•ÐÒÒòûï¿c|øl˜tõþ3ZÜT­ ªÀ`bÙôÊÂFq%„±£«±a )÷+Zé^s'ƒ~ÁÊ3U·±s¤ùÄ ‘²þ1¶V ÝÏÏr¶´´ÄùðÙ0ѱþ2ÅMÙdPÅ+‹Õ?œ„0›Q\ aìèL#6L!å~ÅB+Ýk¶dà¦,1Vu;GšOœqƒUC ó÷÷ß´iSggçÁƒ½½½û÷ï5Šâ³(è¨Ì7e“A 6X¦þ1à$„ÙŒX áÀÀ@ôÑ/..ÎÁÁ¡´´”§ °£cÌ0…”û5@°óŽ5òS–«º#¶‰Ãf`)£¡ºD"Ù½{÷åË—}||¶oßþõ×_›˜˜`øl ýc‚ ýãn Ñ?&úÇ`<úK â û÷/ #9ÿ%! ”~yô;9ÿ%A T_úKèö$½cl_$!- Ów——aR A0+ ë¿ ¤þ‚8úK â@ê/@ ˆ¹þF Bò÷…8MÏ¿üòK''§ÂÂBô+nŠ5Šˆq‹ÎjîIKKË¢E‹zôèáèèøÆopûµ¯F|±fÜ»‹†»9[sc‡õÞµ>Ƴ§ .¹¹X¯HüŸwžÞþÞ¸w ÷ëãÃBܿŭ_Ø·Ýòíö®»ý½që—E…>åÂá'3"©¹Éâ™aŸþëéíï[µp˜‡+)ƒ d×ú厖O Ôc_½ ëïÙ³gUÄܰâ¦X£X½è¬æž,Y²¤¼¼¼¤¤¤¦¦†%Á õÚì?_¬X´öçÒÊú׿ ¤( kDíú:÷äÛ«×ç:}¹òµY²îdÖõ»¯Í=,rŠj<{Ú(ë¨̸±ôÃS‹>ø9§¨záôÚ®â'6"‰„Ê)ªYùñ¯KÖ¼ßÐöÊôP¾ãB`€UŸe.ûèôÃÝò‰E}ý-//_¾|¹²%7]¹r¥²¸)ÖÈ£ãêP-((ÈÊʲ··Ÿ3gŽ•••¹¹ùĉ¯]»†k%:«ò|N$:»zõjeÑYÔГ;wîìÞ½ûÿþïÿLMMýýýk4Ü]mz8X\È­ê”+ŽþRâájÓÇÃk'«yñÁŸ}—÷WŽvu  …¬S^VÙÐÔÚ?ž-Ë.ªViY\^×Ù©Ë¥•õ´š;ÓOlD­er«Ú;:eòÜßk<{Ùò44·×7¶¡î–O,jêoSSSbbbrr2-r 8qÓœœ¬‘'§5ZtV¹Stvùòå;vìXµj•²è¬Š‘ St6++‹·°¸ÀzrñâE…B‘žžîãããááñý÷ßÖh˜šJÀÄDíàîbƒ5ZHM—͸ûØõ꺾½:^ü΂a³'ùâ9u\ÿÏ¾ÍæðßÍÅ:<¸WLTŸ/R¯ÖOlDÊýøõq¼Yñ€§p4dÖ³þ±£úº:Y‰ë†!ÃUårùÂ… gΜ‰†h°â¦X#/.kÆ+:«âIMM XZZ–––®]»vÞ¼yMMMX£(>ëªê¦Ö6ÙØa^f¦’˜(03•0æf’E3BÏçÜοqO¯*ï666·÷ór˜Ÿ\Wÿ°®þ![KG[iÜß„±ýZÊîÖ6S…õ&½5<¸Wp?ç¯ñ‘Z>úò· ¹U6–fë—E î%¢'ÅüᪿÅÅÅééé«W¯vrrBŸ¾###·nÝŠ!- , IDAT7Åù ‡ãݺu«ƒƒƒƒƒCLLŒæž ´—_~™¢¨™3g677b|ø,\²š¾>wЗ‡ó?øïÅ»³ú{;p¬ÌÖÜoÝv ïOÏ5·v,5ÐÃÕë'6LÔCÔ É£ú~ðß‹ü×?=¬÷¶ÕÏl[ýÌʇ°µ),­Ë-®Ù—^|â\ùÌgýxò¤»Ãuÿ™ŸŸŸ²Þ†››Û©S§‚ƒƒ¸iTT<7¥O•|{ÏMLL *UW®\Q½páú‹8ÑÙÄÄD¬; -:;zôhàStvñâÅܺŸXO ±±ÑÒÒ)k¡z¦‘ŸEáÚï÷®ý~|<ì EIe=Óxæjå‰seô.;ÞÿÞççoÝiäï^¶Ö–fEeu ä×ìý±XùÂ… Jj‡…ºÝ®n~ù½ÿaýĆ9Ðcò¨¾k·]lníà#Ä©K§.UhظöA«ƒ”?gº5\翉Dª>>þþþX£(>󇫉 emi63Æï\vºø£b|ÐÐÖ!“Ó? “É;å u}ëBums‡LÙÇDBIÍMº–V²®Pùõq4‘PRÓá!n7þ¸¯P(Øüd†éâd5?>èĹrSS‰½­ÔÞV̪çìh ¶Ò§‡õ¾vSˆEžîˆŽß¿HNN~óÍ7,--‘¸)›QD¶mÛöÕW_™ššÎ˜1cÓ¦M $:ûÊ+¯ 6 …éËþë_ÿZ¿~½T*;v,-:«b€ÀÀ@¤ügffvõêÕ¾}û¦¤¤,Z´ÈÝÝÝÊÊJ0ÑYÍ=9xð`RR’£££¯¯ojj*:áŃ1C½Fö”Ëå¿]ûóÛŠ8ŒÂPßÔ¾ù›¬éãý&ö•Éä×KjSöåÀ†7¢m-àuv*V§œ¯©k™èâhIQP\~ÿ¿ßçqtËŒ¨»©©d^|Ð<Bm„y2'6Õ ‡[HM:dòì¢ê}'Š9Z à¡ÁBô ‚‡þñÉbWþ&<áÐÏÿíªþ±ÏDfcòü@R AHý%q õ—@ ÄÔ_@òü_B·‡~¼!?îß¿/¶ âðð!ë—Å»9ÿ%q õ—@ D€"ë $Êž'õ—@ x«øAê/@ Éߥ˜Ô_@ŠùJýãÒÒR§Ç €7n̘1£ÿþžžžãÆ;þ¼~Ýצþ1ÍçŸNQT~~>z‰•:Æ*c[r ÄXO¨Ç€›7oª==ÿ–qT9Æv:˜‡‹M ›4«fÎ ÊdaÃLÖzÒ¤I>>>žžž‘‘‘?ÿü32¢gO»»»7îæÍ›ÈÈ!‹®¢ªþDð¸².úÇ™J$$$ !µ9sæ$%%—––Nž<ùÅ_Ô¿÷ƒÕ?F›~ùå—/¾øB¹1Vê«ÌlÉ1¯`}€ÜÜÜ;//¯kJÌœ9säÈ‘lÇÁ`›ìÄaŰù@+Ùl•D¨L[˜‚ÉZ¿óÎ;¿ÿþûü1aÂ$ “É’’’,XPQQ1xðàÄÄDä›,:SUÝÈQÕžÐMÿX*•<¢££ãÒ¥KÉÉÉpçÎwww$<`À$‡#Xýc@`OMMUnÌ”:fSf¶dˆo°òÌàêêÚë •JƒÑÑÑ‘™™™’’ÂvŒ¶é`.61l>ÐJ6[e7YØ0…”µŽˆˆ0333114hD"€âââÊÊÊiÓ¦™šš®X±¢¨¨(77—MYUžLÔ¬ÿbõi:::–-[¶aÃôàÝ5kÖLœ8qþüùþþþ{öì÷­laaAëûûûO™2%%%)¿Ñ ©ãE‹íܹóàÁƒ´Bp\\\{{ûæÍ›§OŸŽmÙÒÒÂ(<<œï™ž ûŠ+BBB¦OŸ®cGGÇK/½´eË''§ÆÆFìq0°óÎv¸ÊbØÂÀ«Þ»w/ú]e±“… ³²²›´|ÐÖÖVQQQXX¸mÛ6ô½½½¹$•J‘KÅÅÅõõõ*²èä®*OºèÓ¤¤¤¸ººÆÆÆ¢—ÎÎΗ/_~ýõ×=<<<<<ôï¯Æ0õ[[[çÌ™ó /Œ?^¥1Sê˜M!˜Ù’[h™?°ò̧Nš={vmmmhh¨Šªü'Ÿ|Ò«W¯„„¹\ÎvŒ¶éàP³VÃ6Ùl•d›,l˜BÊZÿùçŸüñG}dkk‹Ê¨ŸŸŸ­­íÎ;ÛÚÚèŠÌ”E¯¯¯ç®*Oºè£­%%%ÉÉÉk×®EW šššæÎûé§ŸþôÓOû÷ï¿té¯ËOjaêß»wïØ±c+W®¤¯l„„„lÞ¼+uŒUƶäZÖ/ÊúÇlòÌcÆŒ™4iRrròŠ+þñÐûÞ¸qãƒ>HNN¦(êúõëØãÀ‡Ïƒ5k1lÁ`“ÍV™A¶É†)¤¬µ··÷ÿûßÌÌLGGÇy󿀕•ú`1jÔ(t×ÙÙ™)‹UåICýcôòŸÿüç„ è5¦‚‚‚û÷ïGDDP5nܸuëÖq‹õ €Šþñ¼yóV¬XAoµ´´¼råJXXØ¥K—˜RÇ«V­†B0›(2VhYï(ëgffrË3÷îÝ©‹"–-[‹nS lmme>|æt°MS [0ÔÊf£ä˜,f˜·nÝae­)Š5j}åpìØ±cÇŽ€ììl‰D2dÈSSSYô‘#G8p€îA¥ª66=ô‹Í%¶0RóXì¼k• |À<òÌÑÙ$™™ †w¥¸Ïž=[ôdaŠ"ÀÊ•++**®^½zãÆ ¤”Á& þ$ñ— ½šú‹Õ4œÔ±ÝôéÓ---ÍÍÍÇwýúuAÂàÂøDg£££‘èìСC‘è,Ö%¶0UóXæ¼cÉ w˜G;:V’›`ØyXŠÛÅÅÅõÈÂE¾{÷î¾}ûÞÿ}{{{SSÓþýû»€úÃߟ°ÕÔ_ZÓi™ 5HêøwÞùæ›oÖ¯_¯"u|þüy€u€):K'èŠ+>ú裒’ô’[tÂÂBZ)ÙÇÇÇÃÃCEõR¿´µµ¥¦¦nܸ=œë6L#Ö<Ö ŽdÐ/Ø#¯vtZ’›`ØyÇùˆ±jժ͛7—••Ñ–¶¶¶7n=zôóÏ?G„¿|ù²B¡8yòä€ÓÒÒ”{PP2xlySMýÅjš§ÔñÑ£GOŸ>ýŸÿü‡×»Jw­ªªZ·nÝš5kìììúõëÇæ3̱æ±n°%ƒ~aË%îÑ•%™± †w!¥¸ÓÒÒ¦M›VWWEWU¦(rmm-XXXdgg¿ýöÛ¯¾ú*’àD¨¨;ó;jê/VÓ”CêxïÞ½7nD«ùˆ ‹twÑYŸ={ö\»vÍÉÉiúôéÀ"÷Ë ŒXóX7Ø’A¿°åÇè*’ÌØÃλ`RÜ0räÈñãǯ]»véÒ¥ï¾û.22E‘‘Â[bb"EQ ---¿ÿþ;j¬" þBirÿÃØ±cýõ׋/ MS¦ÔñÉ“'`ß¾}7n<|ø°òé°AA‹Î¢—Ü¢³4påÊ•¥K—@LLLvvöõë׃ƒƒ‘èl@@Ƴ§ÚžùÆÍÅzEÒàÿ¼óôö÷ƽ»h¸_'â6/>hý²¨À¾=è–o/¶uõØíï[¿,*ô)åNTÂa.57Y<3ìÓ=½ý½q«óp(pl »ÖÇ(ÿp´4b°RÇX‰ë¢¢¢‰'º¸¸ØØØ >üÌ™3<¹„«¾Œ•¸foÞ¼©’GÀÆ®w°ÆlªÆ ,ðööö÷÷ߺu+ê) ÎŸ·†Œšó_ õÚìGNÝÌ̾=k¢ÿks¾ói¦„¦Q¡P@@_§Ñáž‚x®ž×çúþ§ß7î¾j"¡&Dz¿6{ÀÒOõp°È)ªî¥|1ó`Æ›·î+0õ™þ §‡,]ÿWƒ?*§¨æËCùr¹â•顯L}7Eˆd«>Ëlhnפ¥±‚¤Ž·oß®¢þ›››«¢ÿÑG?~\&“mÞ¼yÚ´i<=·;­\VVÑ»wï)S¦¬[·nĈ‰dÕªU‰‰‰H|ˆiôòòB꜈uëÖ¡?*l±ë$`L¿üøã)ŠÂ`ÅŠ555………HÙÓÓsòäÉsæÌyï½÷öíÛ'“ɶmÛöâ‹/ÒºOjÎÝ]mz8X\È­ê”+ŽþRâájÓÇÃk'«yñÁŸ}—#ˆçêq´³¨kx¨P(dò²Ê†¦ÖøñlYv‘ê{¬¸¼®³S!—+J+늿ŒÌp°·>”]È­jïè”uÊs¯ñìe+LtØ@ ¡¹½¾± ýp·4V°úÇ€“¸¾}û¶‡‡’ñ2dˆ““O.1bS_fJ\cR©4ø™™™è!¼l±ë¬€1ÖxïÞ½C‡­\¹ÒÊÊ* `ÆŒ;w:ß>&jÎMM%`b"éÉÛ;:ÀÝŦª¦‰i¼SÓ¼löÀÝÇ®W×µðï¶FH/~gÁ°S¿UܾÛ=Øó³o³ÙZššJ\-={ÚŽðþ"õXHM™á`FYåß²‰~}oV<à1$ ˜õ¬åÝÆß®ýi8a ¬X±"$$dúôé´ñ¿ÿýïèèèE‹!Cž†fÄÔ?Þ»w/´µµ•••åççoÙ²…–À/½ôÒ–-[øûãÁVÀXÙxúôi…BŠ6…††¢ƒŒÔçÏŸïïï¿gÏž'öþB5ç¿UÕM­m²±Ã¼ÌL%1Q>`f*aÍÍ$‹f„žÏ¹ãž^kFåÝÆÆæö~^ó‚ëêÖÕ?dkéh+ã›0¶_ëCÙÝÚfŠ¢°á`½5<¸Wp?篩ö. }ùÛ…Ü*K³õË"‡ó¥=£wÜqèw‰kd qqq¹xñâ‚ ¼¼¼hÉ5½ÃˆMÿ˜)qÍfD|òÉ'½zõJHHàÉsn°ÆÊF¦Í_Elmm€S@½[ Œ¥(5õ·­½3e_ÎðP·µK#j´@CSÓhke>ÐßõùgýéË>ë—EMˆè£ShúÁBjúúÜA_Îÿà¿7îÎêïíðÊôP¶Æ5÷[·È{çÓsÍ­Kg ôpµÆ†ƒ=¨‡¨A“Gõýà¿ù;ë|zXïm«ŸÙ¶ú™•/akSXZ—[\³/½øÄ¹ò™Ïúñä‰Þ¡Å,8,]DEâãããwìØqþüù~ø!33ó…^Ðï ì@lúÇL‰k6#ܸqãƒ>HNNåË„Xc# )p@ss³‡€zw¡Ëû×SÿÙµßï]ûýøxØ+Š’Êz¦ñÌÕÊçÊè]v¼?þ½ÏÏߺӨCzÆ«—­µ¥YQYB¹Å5{,^8=„{… Jj‡…ºÝ®n~ù½ÿÑvåp°G#r ÇäQ}×n»ØÜÚÁ_D§.UœºT¡aãÚ­6RþœÑ;UUUô„Þ‹¯2HâòòòêêêFEQÔĉ?ùäžtŒ°íܹé=êËHâzß¾}Êý0Ë–-‹E·VÀXÅlbb’——ùùù ` ¨/^¼X„º†ö«Ó÷ß<\mLL(kK³™1~粫ÐUテ¶™œþ™LÞ)W¨ë›Gªk›;dò˜È>&Jjn2(еTi¡V¿>Ž&ÊBj:<ÄíÆ÷ [8Ì£áâd5?>èĹrSS‰½­ÔÞV̪çìh ¶Ò§‡õ¾vÓ€Ö‚4%1OÅWEâúõëgaa±iÓ&™LÖÜÜœ––6tèP>†ÆĦ¾Œ•¸Æ³³³ÓÓÓŪ\Xc¦ÑÉÉiêÔ©üqKKËÍ›7÷ïß?þ|¬€ºàè®g¬úóß1C½Fö”Ëå¿]ûóÛŠ8ŒE}Sûæo²¦÷›<ÚW&“_/©MÙ—Þˆr´µ€7^ÔÙ©Xr¾¦®enl ‹£%EAqùýÿ~ŸÇÑ-3ð>îv¦¦’yñAóà¯Ó¤wÒùÈê…Ã-¤&2yvQõ¾Å-ðPôR|Q?qqqfffW¯^íÛ·odddcc£……ÅäÉ“‘ŒwÏž==ú¯ýkýúõR©tìØ±û÷ïïúèLØJIIY´h‘»»»••­¾üÚk¯•——ËåòèèhZâkYìʹ  ;ôó‰þq÷‚èw1c]ûÇ1“çï‚8ç?Dƒ<ÛнÐ{Æ’úKòüuB÷‚ŒÅÔ_¢ÐE­.\pŸwh²*G t=f, Yÿ%q ë <`믛››¦P”B!æ—,|@QÔ¦M›4o¯•._¯ û„ÓÝ2Vþ±Vy'«oÆšV uiDW² ûÄÒ­2Võ Yÿ% úÇ`0hQõþHV‚±b ©b n ±REÓúKR™ ¢'Œèº¢$ŒFõ—¤2ADL’±>mÔ×_’Ê%yHÆtFàäQ_y# 7¢$ÉX‚Μ<­?„&耈iC2– ¤ ¥ô£éõ7’Э=aDw€Ð½ a(Æ=ÀZÜFš !’*âÁð¦ø2!ß¿ qÀ?ÿA«/>‚è9@2– ’˜ú«ÕcÞ‰ŠQ2xð`Í‹ž$c Ý+ci0õ—<  |' EQ»víÑ‚‘!zÆÒ uþ$ ~N$K04^Ù`yþ:@ x€<ÿ—@ D€<ÿ—@  Ь?‚(“ó_@ŠÇ!Èù/@ ðêò/äüWs¼¼¼.\¸ ‰‘@0HÆ$”òsxHýý‹?üÐÝÝýÚµkl :;;™·mcjqWÂÛÛ{„ çÏŸ×Úc“ ÉØnîþ³‹/ž{„¥¥¥n‰LGGÇþýû]\\¾ûî;aFܺukUUÕ­[·ÎŸ?ß«W¯W_}U˜q»)–––t–ÆÄÄÉX’±† 3cYï?³³³ z„°N ={ö\½zõ¡C‡Z[[iûõë×§N:nܸ!C†p•Ù±cGDDÄSO=¶oß>ŽqMLL<<<žyæ™úúzd)++›5k–¿¿XXØûï¿ßÑÑ1vìØ={ö@cc£··wrr2Èåò7nt=öî‚—————×€d,ÉXG%c±üµþÐð¡|3,¾ýöÛ—_~ù¹çž³°°8~ü82¶´´Ìž=û¹çžËÈȸrå ‡QÿãÇ¿òÊ+k׮巭­-++kÇŽsæÌ€ŽŽŽ9sæôíÛ÷Úµk?ýôÓO?ý´qãÆaÆ]ºt NŸ>mffvöìY(((J¥ýúõÓãAè^Œ%kõ_¨¬¬,((ˆ777OJJ¢?Ð>}º®®nÖ¬YʱF¢¢¢œœœš››{÷îýàÁl›Å‹»»»ûøøLž\¹r¥¼¼|Ù²efff½zõš={ö÷ßOgsFFƲeËrrrššš~ýõ×Ñ£GÎcœBB2Öh ÷ŸÁÞ½{«««}}}@.—+Š’’__ßÛ·oÛÙÙ™››+7ÆUøöÛo¿ýöÛ¾}û655±µÙºuk\\œL&‹‹‹;{öì’%K ººœQ—êêêaÆUVVÞºuëôéÓk×®=pàÀÅ‹ýõפ¤¤®ÇN莌íæüýGèI?ÿ•Éd{÷îýå—_nݺuëÖ­Û·oGFFîÝ»lmm;:: ®®µÇ•)..þÇ?þ±uëÖÿüç? .äÝÔÔtË–-¿ýöÛöíÛÀÕÕîÝ»‡¶Þ½{×ÕÕµW¯^½{÷þüóÏŸzê)‡Q£FýôÓOYYY#GŽÔÛQ tHÆvsûð¤×ß_~ùÅÚÚú©§ž¢-“&M:pà@GGGdd¤\.?tèPCCÃë¯¿Ž¶bÊÜ¿ª««kjj~øá¨¨¨àp _¿~ï¼óΆ òóó‡ Ò§OŸÏ>ûL&“ݹsç»ï¾›>}: 6lÏž=ãÇ€‘#Gîß¿?((ÈÞÞ^‡Ðm ÛÍyìæ¿'½þîÙ³gÒ¤IÊËRÏ>ûlmmmFF†——×G}´fÍšQ£F¡¬¬Q™ðððiÓ¦M›6-...""bàÀS§NåöaþüùáááK–,‘Éd{öìùý÷߃‚‚&L˜ðì³Ï¾ùæ›0|øðÎÎN”Í …bôèÑú:„îÉXc‚€‚‚ú:ò­[·¦OŸNžfM0222’’’8„²ôÖ­[3fÌ ¿ÄE2–`P°elϧ¦Ež¿C âCê/@ Ñ¿  ú "äù¿ 4¸¯þáë¯ÆÊ‚A@2–Ðí °õ—|G›Ð½ Kè.¨dªjýå~ZåÇßšðÔSOݺuKóöô­”LHÆ ë‹=G œûÆÞ+=®ü °³³Óp˜†††áÇkîׯ_ת½ò÷ƒf̘iHÆx¦‹ÛËÿ•Büú¯æU½uë–···Vž MŽé·7’±ÝàãaÓ ÀÙ76((=NIïzåçŒ3\û=çÚï9’±‡ÎX¶“_mëM} IDATŠröE¿Þ+9Ú.¥6ý„½½½¶¥-;¸ö{޶Tß< $c ‚ sÆ*_Ì ðßõ@÷Jëê!À#Ê•WT… Cƒ»òþµAåüWmê+W®°éú “î8eè&3FÖæÎ3ÑîRãw`þÃÒê w£{)•ÿ5ÞAû!XøëúÛ½’ãèÙøèaÌÚR[[«Ã^Ñm¢EPåÚï9^ß1úƒ¯±…I“Ñ(Q³VPØ_5ÛAû!Ôa ÷JŽ×ÖÖêpæKÓ•} ¢Ðí¦ ¸ö‹ãjŠò_!VñåqTÁR7`7(»,.âÌ]ˆ†z$l¡]¦è/WßÝîÍ̆\.‰ÄøKd4SöËï" oñä¥AñÑ¢Äv­òêÞ‡iMɱêêjTwt¦»¼™÷ìÙÓÔÔ´hÑ"¶›6m²±±Q«BhtqÆU8|ø0ÇÖ„„ {PnÉ´@=._¾þØ)°øuÀh*¯æ'¼b{ª†Ç×vÙ? é£òêŽ)àÞŠGŽ€øøx í*=¤¦¦VVVª´ñññ‰‹ãüØÈÉæÍ›ÀÝÝÝÕéééEEE...sæÌѰ“æææ––îÒ£P(Pƒû÷ïŸ;wîöíÛmmm&&&¶¶¶ÑÑÑ>>>šû|çΖ–¤®LJJ Ò£¥‘J¥‹/ּ箣ßúËýXíX(¯àСC(»˜UŒhaW¼PtXF7ä²Ë~=âx¥ÓzÂož´´4ôË‘#G”+&›ÙCddd[[jibb2yòd°´´ìúi2ªh–––r¹¼¬¬ ­m·jÛ£?üðý{÷FŒáììÜÙÙYWWGQ”Vcíß¿ßÚÚºo߾حÊeE"‘üBÈá´‹®¼ºíÎ?zxr S¥U^uK&º,Ð*÷¯g(…šçÿ¦¥¥¡RK_,*ïž={Ò¿K$’Þ½{Ó;üòËæææˆˆˆ‚‚‚¤¤¤»wïþúë¯ÕÕÕ–––#FŒ ¬lllšššÊËËýýýoݺejjŠª<*Á¹¹¹¹¹¹¶¶¶aaaaaa莥ÎÎÎ3gη··+{Ë6 Ý ®®N"‘„……™››+oâK9:wwwhnnÞ²eKRRS|›>,tÏåååGíѣǬY³šššöìÙ3lØ0??¿ÿýïÕÕÕÑÑÑè볟~ú©µµuDDDff¦L&5j”B¡ÈÌÌììì3fŒŸŸj³lÙ2Î6âââØ¬+Ÿ™ô‡QÖÜî¶Ô@)k·S½dYéUYuÐ2 fúâï%cÌùïsÏ=§üf`žÄÅÅ©ìÂ}†ÂÜZTTäëëÛÒÒrøðassó„„„ììì“'Oº»»›››3¨xy{{–––úùù•––úøøäçç£þsrrΞ=Û·oß &dee9sF.—8~ûí·k×®………9räáÇ …¢µµ•mÚaŸ’’’Ý»wøûû;99¡­c)GVXXhee•`mmÍ<ôï®®®R©ÔÛÛ»ÿþ7nܸzõêÝ»wmmm ÐÐÐàííÑÑÑqüøñŒŒŒ—^z íÕÚÚš››ëëë{íÚµÓ§O;::öïß?//ïòåËO=õ÷Ôè÷¤R¡P°Ê´´4MÆRÉ:3ÓøG?ï7ýݧßðµòË0Ê.(]v–æºÐåÔtû73@+X&Ož¬Ò2A»0-ñññ7oÞlooïׯŸ“““···B¡¨¨¨ÀÑŽR©ÔÍÍí?þÉd%%%ôçz…B‘——QQQ®®®‘‘‘——‡F,..€!C†8;;›˜˜ ö£Ð?>**ÊÄÄ$++ëÛo¿=räȃ¸ÇRŽÎÚÚ(ŠrttDË *áˆèþ?…BeffvñâÅ’’’èèhŠ¢ìíí  •J%‰••UKK ݉©©iBBÂÈ‘#Ñ@ QQQÐÖÖF·a›æ¤wŽ5‹™l6ë”ßoÔãÝ©k¥Ù­µÚµï‚_7×m,ê5Eÿ%Pßy‘òxú†µ[üõ7˜4iÒñãªßEŽe{Ÿp ÎÜjaa!—Ë›šš '''''Ù‘…i”?ªòÞÞÞ·oßÎÊÊjoowssƒG—ËÐŽVVVr¹>z/´ÉÜÜœvƒmhå@QThhhHHÈ;w®^½ZQQqüøñ矞c,åèÔœ%K–0’¥¥¥ŸŸ_~~¾ƒƒƒ»»»\.¯©©ùé§ŸZZZ›››•;433CQT~WnÃ6ºŠ½¬¬¬  Û2((HíUGÅ£‹–ZmR†™lpôèÑØØX¦]tµòjÿ‘¶‹Ð=p~öþ»6#jqÎËÛ©±–_ŸÓ“<…£þ8ÌúͤI“~øáå—º}˜enET¼BBBÐY=gSÅH÷àíí}þüù¬¬¬>}úÐwé* ›úúúÆÆF;;»ÆÆF°±±¡OÛÛÛ[ZZÌÍÍÑ] …;´òù¯²·nnnãÇß±cÇýû÷år9ÇXØÝµ:h EEEfff<¸yóf¿~ý.^¼ØÐÐ0wî\[[Û¨|SFíïŽÎV|Ѧ>}ú°måGí&„rš©püøñI“&©]Kt¿ÌÕMzÖvDÃóq½£iŸüœ`ó£gÜP\õ&Nœøã?¢_t~ƒ±Õ_Ÿß~û­  ÀÒÒ²G­­­X#zÿ+ {{{‡øøø(—˜àààÌÌÌÌÌÌAƒegg@PPjàááQVVvúôi™L&“ÉP{ŽQh÷ÒÓÓÝÜÜlmm ¼¼\]])ŠâK%^ ‹ÖÖÖÊÊJWWW333•ƒpãÆ å—žžžR©-ãFGG>|øÜ¹sžžžèäñæÍ›æææõõõPQQáååÅ<¶]©¿ÜhÒ¸+õW™‰'Ê:v×aNuùFïg~j;äù$QýÉ¢¾Gä»g Æa] ‰‰‰QÛF·ú+•Jãââ.]º”-“ɬ¬¬ÂÃñFåjU__ß»woecPP\.ÏÏÏ?räˆÍðáÃCBBPƒaÆ=x𠪪jĈJ×Ö®õSŸ¤7sw})»éɘ2Í>Š [)bÞêÀÞŠ{2ÿú¤«Û'û®ŸêªŽ«¿G <{:Ÿ®³î@ê¯1ãëëûd×_ |¾eµê[iÅPÓnÙ§L¹ÓN1 €ê½}ZÜÞ¦]ÿ¼Ò•QÔïk œwÿÝ ®Œ7˜Ê Ú_íG¡@³»ƒù3¨žŠ¯Ø5W‹ñ5jj o¼ñÆ;wÐ댌ŒÄÄDÍmŸzc4eàt¦¡¯ÏhEQ»víJLLDû¢ïÒñ»tÅEL'B¬ ÑM¯šî+,>è=ŠG­ðÏß¡ß$¢“‘‘~1—„áI\“ÐèãÀ@€Ê«ßÎ ¡¾ðnq׋¯†ƒü½¯æùg‚Áb¸¥–Ùy7«D¾¨ÀÓÒŠ>Q7¢ïW¤˜¿ýõטÔ_B·¤ûßnw¨ ì'ó†,¥æ«:Þ!¢áb1…žÔ_ÂßÃp ’–p^BÓ=Jþ޳âánÝU°n× Ö-ØÌ‚+øB„æðp%&¬±¨Ö®¶Ø½ÏcÅÞ-/c>ö§Gõ°0šiŽšúÛÐаdÉ??¿|ñÅÌG}ë­·ž~úésçÎq凉Ñ]â5",F½Š § G—+º½;±çnØ“/>Îòô—“m`†¢E@Zï  ,'¹ú?êõ÷ÛÙ/þµæ¨¹ÿáŸÿüç½{÷²³³+**ž{î9ôxlšÊÊÊqãÆíÙ³Gù›Zؽ47 K¼F¤‚Ũ÷Aõ~(´A‡wˆ>ÞÐêŽ#$ë Ìk]úÔ+ì=ó6&ÅÑ;þ–îpÿÖÖÖ¦¥¥½ñÆVVVþþþS§Nýúë¯UÚ,Y²dܸqj÷ÒÜÈí®(.ñ‘n#ƒòq4Ô¡óé ÿ¥Q#°Ÿ‡SîTîï#¢ûÉ£€gú¼ç2—jffiêÁ®ú[PP€¤}ÐK¤È ¶Gì^šuèœo—xŠÈ‡ÚX„Œ‘¿AyCë<—}‘ǃÔfDëÃ#ä‹ò¾«-Ó¬a”úñ‰ký ýÚØØ —¶¶¶Hn’ì^šuèœo—xЍªªJ¥àveÑSHÏ»>(‚ýÙÚ¢÷Z ô¢ È Õ‡™érž šëâÐûh·ƒ> Tþç¡kœYǪ¸ê¯455¡_š››mmmwíÚµaÃ4hÐwß}§á^š¹ÝÅ%þ"R.ÁÜÅW”ù¨®>†§º Ô§iÍ6ëVð{hÑ ¥í]FÏ•—½›.¤çcµþdbb’ŸŸ^„††&%%aßl{inävW—x•]µg¾¢ÄÈß  Ðî#ÓýàúHK¡?Lf’­¹~„ZÏUNë ¸n ¡²¼ c÷z†«þ:::ÆÇÇoÞ¼¹¥¥¥¤¤$55õÅ_TÛ#v/Í:tηK¼F][và5F>UÞýŽìÞ½?v7-=ø(@BùN~ŽòªOO…YÒåe8u‡U^¥³yÇäñਹÿ÷Ã?tvv8pàÔ©SW¬XÁ¼•jÔ¨Qþþþðâ‹/úûûÿñÇl{in4@—xH‹Qïƒòq4ºŒ6ï.Þ‰ÊïÌÆ¿ÎÍ„:ï¤Ô8ÄïÐÙtíKy³&Ÿ ć…B¡¢a8ÏüÎÈÈHJJRöð ÁèwssÓðùëIII*ú111=ŸJÀï õrî´©ë`Dؘ}ëyÑSbW[þÖv)½ n4=Bž?IxP~ ¢¦¦øóI_`(ÖèòT|W^Þ¯=úK0VØÞ?,ïÕ.¿ÝP¿Ü´Åz>Ü5(e7Ùúçq\Š…âñ¿ë¹ø2ÿ~ðþ7ŒÔ_‚£ÁûGo7ÍúÐãçqÊŸŽCèÕ£ÇoYÔc×ã¾ùk R F†–5—ß‘ô7/½i>¨fÊ<üx§¿²+úõ8UHý%|]íQé‘zìh¹jÑ%¯DYÒåš×%tÕÎE¯žÚ¢Þa|ýÕßCõ†º$ F¸Ê|ô€•Û3G!Ö›'"VÞ.5Ѻ &VÉÖt\LýíòCõº$ Ƹþì+ÀË /Ws½#Lhsû3N°ßY¦[]ØW A1õ׿ñyÿþ}±]GGG±]Ð3†};3} ƒ–•—Ggxàõ´] /ôÞ+ê}D²þK ¨TZ”õoc³Ý­%^°ü¬ðvƒÓ^R Oœïx‘{ø¾-Àֲ(¾>\t§â ¤þŒšÇÖT¬ø¶â ¿oPeŸ.jè ¤þŒ—¿ïêg„]ÁàÂиÂv߇~lR Æ„6§VQµºè¥‡>ôŠf ¿ó}1ÑvtL{R Fë½¹ŒV†C×½1¬Õ *¯!¹Û%ôˆšçÿÀ•+W dee5|øðââbd,**š8q¢‹‹‹ÍðáÃÏœ9ÓÜܼ¡D.¾”ò¥¶øêwÄQ­Æ¥¸½USe2ÙÔ©S—.]ÚÐÐ0tèЩS§Êårˆ_¸páÝ»wëêê¦L™2mÚ4™LZZWWçááñ /hã¥vTVVN˜0¡°°PùVå+VÔÔÔ>|xÆ ÇŽCö³gÏ=‚n|öìYea™L–””´`Á‚ŠŠŠÁƒ'&&¢0W®\YQQqõêÕ7nÌ›7¿ˆ4dݺuÕÕÕõõõ±±±‰‰‰À>A‹/¾{÷nUUUFFÆ»ï¾{èÐ!ÔÃ/¿üòÅ_ˆƒžP/YcXeWÍûPÓNþV‘ç Š!XýÑ8 >*¯Xh5ºFÕÔßëׯWTTÌž=ÛÔÔtÕªUYYYpûöm‰Dbnn>dÈ'''{{û9sæXYY™››Oœ8ñÚµk;ª5¯½öZLLŒ²åÞ½{‡Z¹r¥••U@@ÀŒ3vî܉6¹¸¸¸>YÊËË—/_þõ×_Ó»WVVN›6ÍÔÔtÅŠEEE¹¹¹wïÞÝ·oßûï¿oooojjÚ¿þ"Òèèh333“¡C‡J$`™ ššš}ûö­^½ÚÚÚ:88xîܹŸþ9”––.\¸055Uì8øzô/_oRJƒ¶½º82¥÷^º†«Ö.tÉx©5–¿»ê.•W ÔÔß¶¶6èèè+++@ØÿýïGGG/_¾|ÇŽ«V­:xð ò^gΜ1bŸŸ¯P(h±ËÐÐМœôûªU«6oÞ\VV†^655%&&&''ûøøÐ»···Ããa_¾|Y¡PœÕgZœæ±ï¨gôÑ £Îª+¸ÌzJÿÂv|ô¸þ'U't‹E“](P[íìì¶nÝúðáÃ7£7|HHˆ‹‹ËÅ‹,XàåååååEï’ššš‘‘ñÕW_iï´î466€ zikkÛÐÐiiiÓ¦M«««‹ŠŠJKK“Ëå .œ9sæ˜1c”w÷ó󳵵ݹsg[[[JJ ´··×ÖÖ€……EvvöÛo¿ýꫯ677 “ªªªuëÖ­Y³ÆÎή_¿~À2AèhØÚÚ¢½ììì–••ùøø@ÿþý‡ºbÅŠE‹ýùÏÎÏÏOMM}çwì—ãâââ5j´eË–½{÷0 44š7oîéé Ó§OG?¾¼¼üâÅ‹FvJHDDÄŽ;NŸ>íïï?iÒ$ÙA¾¾¾Pó›5›åàÁƒ¯¿þ:Bˆ{¦OLLŒÓu97C¯¡®«©ÔžY:îèöÄZòÖ ?ÿløðá\°õäÉ“‹¥OŸ>yyyÅÅÅ @9ríڵܵ mÛ¶­Zµêûï¿wši`ÑÑÑyyyÏ>û,œ9s¦k×®ü ¡¡¡………;vä?ÿ%888===::}:W?//oøðáA_àÕâ¾Úd9Ê\‰À=JþÖŒvMÞ};ÆŒyÍ`\&”_ßÎ@uá—Ú]Ô§^:†tÄ%¾QoT…A¢‹¨L r¤'‰Ä1ô#¼z˜•hШ†´ ÈIýz¤`Ê Ó_CÂ㉠ªQi ‡¿!Y‘;Äsì( èÓ/¤Èj˜þ2Nè#:Úæ–õÌr$òÞ´( Å*[EQûjÌ2ýe0tÓ]^ã[°á Ý¥ë½ÕE‡mÀô—Q/q'ÅAªNl±–$?º .u[ñ--ö¥Â_;Lõ ‡®„ þå7Má]°ÙêX’4*¨Û"´ÎA4·ÿ‚ .Ð2ýeÔUÔÅYnoI[TQh†— Úsí“ûÔ—XhŸ§^Ó_FAÃ¥m3 ”9~ \ƒ+üwžš‚Ô„ÈI*ò 3ýe¸)Øoº»ëÅh¯ÛAqfyXÀñ3rr@‰3jBÃ6¦¿Œ:Š[‰¥h¯[õ¹º3ÃÔŠ/5dݨí/Ó_FÝ­$ˆÒ#"Ýë^ '\î¶Á ~üWþùg)))óæÍ‹‰‰IOO—.”ȹ«N Œ…ùËËËgϞݱcÇÐÐÐ#FØóob³cóc ]r„+Ä&E.//Ÿ?~³fÍüüü^{í5¸|ù²ÓêÜ“æëˆ÷rÉÖ´wÀMz^‹N;LΠC³ôÀ¦%ë!D ¿×®]=zô™3g¸Äº…b9wõÀ)1àò[­ÖaÆåääÏŸ?Ÿ«)ÌjŒÍ,–ÙµäææÞ®+&E€… ^½zõÊ•+EEE\ÇÃÂÂNó˜2eJÿþý]Ö Z¸æâ ¢AîØ—ûlÔ÷ÆÆÕ´Èk\>þðÆor9wÓÓÓù9wuzì,—Àx÷îÝ=zôàJ¸üÇû÷ïçç?3f —¤† ²dÉà²;vŒKYÄ=RÝ)ÿñ¦M›rss6l(,´'µtAAAü’çž{Ž{Ó»wo.ëóíÛ··mÛ–““Ã%"ŠŒŒOOO.Ódgggddäææê:]\r…\k£tv¹Š‘c€«„MèãImHg_¼Mùñ/!Øœ»´ŒóÁ&0–ÈÌ‘™™Ù«W/Àf5Ææ?ÆêÑ#E,[¶lõêÕW®\±—“"geeÙl¶ÔÔÔˆˆˆÝ»wó-TTTüþ÷¿ÿøãOå¦PÊÍN÷ÚŽ[ˆ¯aQ!ÂknºzâØSç¾ijú+̹ûàÁZÆíˆ%0ËÌqàÀ£G~úé§€ÍjŒÍŒ-¤Þ#E¤§§ÇÇÇß»w¯K—.vU&E.**ooï‚‚‚+VÌœ9Óž™Ö®]4~üxWôÀÍ ÈÐNø¢éUk:aä/ACz¹#²‹‰Û¢¦¿Âœ»Ü >]Ä‹å?€¤¤¤uëÖqƒAÀf5Ææ?ÆRï‘" 4jÔ¨„„„eË–ÙC@‚¤È\†·Ù³g#„¦L™RVVf¿JyéÒ¥•+W&$$ò C ]öì£]‘j.¼ØçÃ^“9)7Õ`T$Ô dN µùg±±±N9wíÁYŠˆ%0~øð!6ÿqrròºuëþõ¯ÙùtìØpY…ùÅ Í@«V­œ2œò“"wêÔ,x IDAT JJJ¼½½¹>rñX¼xñèÑ££¢¢ wYGdgZ:ÝvÏ «Mp3¾½\ðÛd&A1#.Ü>†ÏS» µñ¯0çîÂ… i·#–À›ÿ˜»L·hÑ¢ŠŠŠÂÂÂÂÂBËj,Ì,VèB¸L£·oßNLL:t(W(LŠÜ£G¨¨¨U«VUVV&''GDDp—ಳ³SSS,XàºPƒtŠÃÖ®­H¼Ü|˜jPéòó¾$Ë©8)nDt3Èoyýíܹ3[;v¬¯¯oAAX¡ksî óçåå=~üxéÒ¥‘5€xVcaþc±BçããÛµkWîRà’"[,–½{÷feeùùù}òÉ'{öìáúxðàAŸº0íL—+ƒVì®»w7t€x×ÒT^À¡±s°üÇ&†å?Ë9 S›¾R©}õç,^5d~Ò ø ŒZ%ªÇî?fÔ ˜òº_ÓJ!›ç`dsª­Öø`Á‚—.]aaHHHFF†Ýþš5k¸•7n 6lëÖ­6áú ‡K`lÿøþûï#„°…ÀËEýóÏ?÷ëׯU«V&L0l14àŽRËGÚ7Ð]ÑU”M&jWeþcÀ%â½yófHHˆÅbiذaÏž=õKïxûöí–-[r uíÚÕ××W,ÿq¿~ý¸Uºwï¾sçNî½°ÐÓÓ“Ëyyy'Nœ8~ü8¼úê«:uAØÆØB±\Ô†í †Bê¶æº¥“H¬vñ-ñßeË–ÅÄÄLš4©mÛ¶\É_þò—çž{nþüùQQQ\æ4ÕÆ¥Y¾|ùÈ‘#gÍš¹cÇŽmÛ¶ ós­?~üøÚµkçϟ߸q#—CS¬£¢¢bñâÅ~ø¡™¼‹M`Ì/LKKsÊE””î ¦•-YÔÝ4ld5{IÁÚEjóañÆÄÄdeeÍ™3',,,,,LqY:wîܼyóüqÉ’%!!!!!!bùïܹ³fÍšÕ«W7iÒ$""‚[Š-䨰aC``àèÑ£uòœ ØÆüB±\Ô†í †îÒE¼7ª<—Ë#M¥7V çUD.²Ñ_Tû¿Jý&â-))7nÜæÍ›333:”‘‘ñòË/«3.MiiéK/½ôÉ'Ÿ>|8%%åĉóçÏËþ·¿ý-##ÃÏÏoæÌ™ÜRl!\¹r%!!aÅŠfÎ ŒM`ìTˆÍEmØb@‚—aW ²k°ò 6¯L˸Ý!øD°Ï”ìVžø ­ù7í‰xóòòŠ‹‹ €9räÚµkSSS5ÇröìÙû÷ï÷ë×!4dÈ÷ßÿÈ‘#ÑÑÑ\þc®Ž=ÿ1BhÀ€.\àÛþïÿþï°aø4q¦›ÀةО‹šûÈå¢6l1jpGµå£ÍyddßqmI5.ï›þÞ#P=þ&âm×®——×úõë­VkYYÙþýû{÷îMÏ×ZÚ´iãé陘˜hµZËËË¿ùæ›îÝ»cóÀ÷ßoµZKKK÷íÛ×§Oζ0//ïÈ‘#ÜZ¦›ÀXXˆÍEmت—G¸î+»ڔ׈1¯øÀ¿ù‘àc}Üa%CY%;Ú¡nõ;•ù…‰x[´hqàÀ={öøùù…‡‡WVV¦¤¤z¦„€€€¤¤¤DDDtéÒ¥²²rË–-€Ë úÓŸÚµk×¹sg7r°…©©©Mš4yæ™gømõíÛ·uëÖߺukîWÇ…`c …¹¨ ÛAõ†:#µBÔõȘ­ÁoE$X€_ 0‹Õû«p5åu”a–ÿØ´˜y†:¨å?î4E_GEqwµåü›Ï®ZyÙ0raX «(Ç*‰~`÷3„¸òJ8L£/†^XS±P~¶‚êA¬ÚºÎ¥L YÜNyõÆäÊ+·¢kÀ¸Äô—Áb£—<7fƒhŒ(X]Ç‘/¾:ÞÓ_F}Ã}µUñ~‰…|EË@õ3O¬°IŸ)`Ü~Ñ7Ô‹ ­‹ÚaúËp_ø_k‰$ÕUÁåÐ,&HdYµ V§¼9i^Î’YOYSjǼJvFg¼Í¦å3ôbõ¢XJ–äÇ:A5ž¤«¨îTYê¡÷—âÕ•ˆ/Ýñ1’¨ËÆ¿ †Àž¸:L|1 Ûþd\¬¶´qTQ1éBY´×8ñ@L ×"{â*vð’[Ö± 0F‚I¼BNT*/a{‚ƨԕ­dcúË`P'®Áõà0Ð+†½ ëJWgú˨«%ä™MÌ£­¸È9ãAéÓt¥Põj8Õî3Ó_FÝCÅ5#¬ »…àºsã¨ÜM‡°o j«¯¢)îÎô—QÇPvª¨jVÌÙ’k†”ÓqÊ£V1ìuX.¯¿!MgŽ‹ xúú’¿ï9}û—2±BŽÁ}ZM¾óÛŸüçÆÝRYãêx:~ddDhÓ† ÷Ö“ŠJkeUîŢР&z÷KØþÀò'Js/éšnOíÁ%ñÀoêG Á ñ—y@RkKöQYÕeâ XÀÃÃRa­zRQ -ß**Þ.*[ßmÛÁs…Ååšý“aWjþÛsú¤ÿpíæÝÒçz„þug¶„ÿ~Þ¡-š íþ÷=§À˳ÐOl7¾ñÀ^¡ck¿Ë×~Õ±Kô˜:"òÆÝ’Nß1`G¸„yG°Í^âFAa»H¿‡,ÐFvJq}a-Ü6Ÿ(ášÍU{ùPÕš2ãß[…¥[÷ {ªeø³ðT‹°°áS–ù“»dæÜ¾òoY*o ÿÓ§Õä¡àòõ_×|q[ç|A1äæ=±VMÑñ‡3w uÑPh)”ÝŽñCcó£|#c”WsÛ.þ1Ò2’ǬÆ_Q~þÃé‹¿œ¾ø D„4µÙlWn<ûéÆ?ÿó³}•Íï }÷³Ìë·KÔy(MXP“§½Ÿºðs±Í¹ùEIßäó/¬a±Ùàì•{}ºß,,›ýî¿°~b»×-dÌ€6+6f•=ªÐ£/ŠH?q-ýÄ5ÂÊ÷~}äÛØSWÜELji‡œz@µ³44WùÅaÍ]7@ïÇDd}ùü›!=<ÐÓÞOMÞñ?Ù·¸«:N…¿>|\a­²¿Àj­ª¬Òe@Qx¯¬ÂZ5<®µ‡y6ôèÞ9°€¨u¢ck? òòlÐ7&øÒïÛl61?…Ý ðo4k\Ô?ÿsµAKÓ&žM›¸œ5÷óß&žÿÓ§ÕéËFÄ‚LL½ÒSYœÎê hHª†HŒ¼ ]Ñ'j[ AíEB'£òãßA½Ãú÷­ªªúáô‡.HÃÒ'm?5ihÇ1ÛZ­Uç®ÜÛœ¾ö¬_/xíåî••¶w6d—¿4ºs€Ÿ7BõþßvçI˜ö¨uKŸ ,3ÇEÍ„(®Ž©žÌ‰íï;sûzyzTX«²/&ÿ3_¢¦+]צ¼vÈ{Š-(0«¿7JŠö’UTÒÖAþã#ùšc0¤°?ÿWkþãÎSu]D›êÛA`¸å§ø4k+·!u‘Mek’&ÙýÇ w§Ê.×e±çëÑÕ5íî“Ú¦×/âkitšD2½dúËpSê¡ìr¨œõ¤ª ™2%ëëX‰$eM—S­gúË`¸ T¯ø“<±Á5𫲶Þf47ˆ)fúË`˜ ÍwV£u’­½’Niœô:Ïn k™é/ƒa Ð šMи¼¦s—uߢšb5ýuz†¡¸ÿ¾«]p ~~~®v2$sê Úï.3bMõV\3æµÛV8ÑA]#ªí"lüË`¸ê±U ëèܾâyj1j"ÞzÏ¥P´.Ó_Ãi&yâ*ŠêÒ¤ŽDó t_góÕÿl:6,˜×KiáÕdúË`èŠrÐm6*Iƒ´Å×Èð.ÍûÖ$MI}’_›Ó_CÔûú')?GWeKçäÌëþc%3)O©ø:~búË`PAûQo¾A®bt¾7„À¼Þõˆ["šLÍô—ÁPŠ=R ”wC£Ÿ±Oÿrõü ×¶@Ô&ÕûLäŸ?ÉñÙgŸ!„Μ9Ã}|ðàA|||Ó¦Mƒƒƒ?úè#‰B=ÈÎÎ8p`Ë–-‡ rùòe(//Ÿ={vÇŽCCCGŒqáBõ#Ù.]º4yòäöíÛ‡††2$33S¬ð«¯¾Zºti\\ܱcÇì =|øpΜ9ááá‘‘‘‰‰‰úõH)))óæÍ‹‰‰IOO·bwAyyùüùó›5kæçç÷Úk¯I2”€èÝ E-s(¼œK%ª*p@ýšŠ‘jA¯€¯ M^Ê ¢UåË8ˆô÷Ûo¿ýûßÿÎ/Y°`ÁÝ»woݺ•––öç?ÿyß¾}b…Ô±Z­3f̘3gεk×zôè1}úôªª*«Õ:lذœœœ‚‚‚àààùóçs•§M›6cÆŒüüü‚‚‚1cƼòÊ+b…7nÜ6lØùóçm¶ÚÁ²eËŠŠŠÎŸ?ÿÕW_}øá‡Ô£Gê¸víÚèѣϜ9SUUe/Äî‚… ^½zõÊ•+EEEö-ƒ-d@]k(tÈD©£6꯶ qƒØp]{ÑÃÌ»$(((˜;wnjjj»ví¸’¢¢¢äääôôô§Ÿ~:::ú¥—^úì³Ïú÷ï/,œ0a‚R‡dÉÏÏ¿qãÆÄ‰4h°lÙ²M›6åæævëÖmÒ¤I\…!C†,Y²„{ûöí–-[Z,–† víÚÕ××W¬ðÕW_ujè—_~Ù·oßþýû5jÔ©S§É“'oÙ²e̘1Ô{¤Ž7Þxé»_žyæ™mÛ¶åääpÝŒŒŒ€Û·o rÐíj4ŸŒÕ˜Ú‰Zü)Ó˜ä ·–Ìø·¤¤d„ 6lhÛ¶­½0''Çf³uëÖûØ­[·S§Na e]VÁ“'O ¢¢5jùùùü ™™™½zõâÞ/_¾|äÈ‘o¿ýööíÛ?øàƒmÛ¶‰ 9sæŒÍfëÒ¥ ÷±K—.999Øš&» ²²²l6[jjjDDDHHÈîÝ»[ÈDòŠÑË>FUܰ“ £ôШѮ|;øêü#;7@ÎUåMÊ— ‘ÒߪªªiÓ¦½üòËC‡å——””@“&M¸>>><ÀÊ·¯œŽ;6iÒdË–-?Þ°aÔ(2ÇŽ=úé§Ÿr;wîܼyóüqÉ’%!!!!!!b…B¸5nܘûؤI“‡êÑ#Z`wAQQx{{¬X±bæÌ™¥¥¥ØBznz$$ü™©0Ôª¦UäôÙ 2¨6’õÙÂÚ&m@Ͱ×^OJÏ;wðàÁ×_!„€˜˜˜>úˆ;iåŽv(--mÚ´)¶Ð E4jÔhË–-{÷î0`@hh(4oÞœ[”””´nÝ:nXÇùðÒK/}òÉ'‡NII9qâÄüùó±…Ø†8ÿíÂTVVæãã£GILLôõõõõõ>ÿ€ì.ðòò€Ù³g#„¦L™RVVvþüyl¡Qý¨s þ;þxIÙøÌi”Œ æêˆq-9·)ã¾Tø*ð‰¨¶ºa¯C'¤ô·sçÎxÀÉ“'-Zëáá‘ÍUËÍÍíÑ£¶¤*}º&‡t€=ÿ·Î`ÿ¦iί§›ǤøLýáàК‘©§:ÂBR­ú’&eñÅ“UZ"(&5Îî?f0ø† ª)ÒQÞàz‘èÜh7&|'UDhLΆ2ËL ñ#7t¢pPË@bÎă_äðG¾"hþ5A€l6é–É·˜tÜ_‹åZ˜þ2ê9¤²KupV§! 5ÐÝšµW5Dc‰jjc8Àô—QPr¨ §¿Fâ>!z¿yb§2É”6@²PuO‘ýÆLî‰ÄI¦í">iÆ®F÷k^X³×ÕÚVíò€‘Bë²ËµôñþgúËpWäŽ>V3Ö`B}+æDáP—VßœÃBÔMJUÑØœóêL.#--MGëÂ#Å&µP¼TdkÄG?œ<´á\VÙ j·Ñ„*± òr0ýe¸dì,Y€š+hŠó>–)vܬâËíþqÑL:iˆÏgÈ-)R^ж5¤NÔ˜þ2\Ãúõëû÷ïOR³GbÏ•†ÆMí—á\-d²ÃX=¤8FÕà4’ü(±’.c^~1Ó_FÝ€?V¡2y@£òºZv9Œ?ÉЌܯ¦þÓ¢5)/ùE<¦¿ WAžt!´uëV±…â…6ÞÒ¦Wt7ñ­Ž'ÔøïjíUѾø`Иæ>«_5k1ýe¸ Âç?`Ë î†9s•Eý˜ÑU‚ç¸1\>测¿’óÍ3k]2æÕ:ƒFMþãË—/#G¸ç _¸paäÈ‘7îÛ·/?‘0]„ùíüãÿð÷÷·?M›êøÑ£GüãÛ¶mñÖ[oIÔ”hÈå`·¶Ó~ñÅá”ÖÚ 8›ÉéeB„N"à=ªÝÕîÙA<ñU²rú¬¦a ¨| …í®&ÿqXXØiS¦Lá.¤Œ7nîܹwïÞ-..ž0aÂĉµû'›ÿ˜[tüøq§ 5ØTǯ¿þúµk×~úé§K—.Íœ9S¬¦DCf@lkçææÞ®ÄwàÒZ»xUR¸:Mo”Öñß#³þP>>üû÷[´hqàÀ={öøùù…‡‡WVV¦¤¤¨3.‹0ÿ1lªc‹ÅÂ]…‹ˆˆØ´iÓ_|ááá!–™°!ãÛÚqqq>>>±±±]»výâ‹/¸ÊÂeZÌ*¾ H¹º¤!•4B.µSÝËê`†‚Í©dSÊ•ÒiQ u±üǦ…å?ËÜ2ú%}­EÕPVf‰Ž!Eóþ ñ•² eÛ4ìµãú³NÔP–Èú£¸RÁ*Ã^üB#ÃíÔšeúËpú> æàPúüm’|ª+ ‡í¬nЪ 1ÁgâçùÕ{=;L®AÏç¯#Éz‚‘Û:¦¹ý[$V¦È¾¤¤® BëÔW‚Ñ_’¨Ãêð¾Pt©Mr¤l*C`2‡T ðŸf\~ÝçEhÛ?T÷.ÿ2ÜwW9ã‹ÂÈ +9lÛ™,ü@ Ç61 ·IDATjGG47@û¢Ó_ƒ€ê“wLia©­°ˆ¼KêÇ£J×4jVUX0úL¸2BÈf3ûÌC†RBëׯ'¯¯(“…Ygøjƒ’øJXP ‘Ö.Ô~K)Æ<¹˜þ5UT[Ä%&¨Ã1Êz·[•Þ¬¡%“…à öu HQ;7/¨´¬ÞoÂa¯Ã¹‹?0Üûרè0{°Sùý"¶\ƒkÚÖ®¼Fù­«òÖ|búËps.éßo¼ë–²k´´æà#Vº*…Yà žÿ`îG²2LDÝüª8fZs½†*Å>YV/×ù ª-)½¨aJ/ѪԺFª¿uóˆbè†k¾04•Eð@\^#ê.ÀkÖ$ .*w*8[J-ÂW1m$Z•F×&Ò_&¾ ¸L‚ÅÄÔ‚É’ kÁ8ùslѶ©·4.å lÈë/_†jôûò(ÖX1]v~I™Ñ2ò¥«æz"ÞÉÞP–]r-W;æÕ;ÔË3€ýºÉëoÝœ°É0ƒ¿-V¡²²Rx£¶P––<ÂÃÇ –™™©Øc†y@À{®£òCU^p5º‹‘t[ý‰•Mjöœãöu|Š'=åÅZ ++ë?5x{{ShÎݨ¨¨HII øòË/i111ñÖ­[ׯ_ÏÌÌ úÃþ`L»nŠ···ý[:|øpÑzÆÉªþ_þqº’6dV5^p‘’‰5Évß)qR#²‹óÊ ,àããUƒ¡›†´´´-Z¼óÎ;ûöí{ô葽üܹs/¼ðÂ!Czöì)]ÈgóæÍýúõëСClllrr²D»!!!¿ûÝï¼nݺ>}úœ8qŽ=úÔSO?~Ξ=ëééÙ®];Š!ŠH"dºm8¾×[ ì²K¥)±ókéúŠÚF‚7²þÿ‹.QôNÖ¨ãÿ…7nœ={vܸq 6œ1c†=qôèÑâââ©S§ò+c xöÙgýýýËÊÊZµjõ믿bë,X° eË–cÆŒ™4iÒ{ï½'Ož¼zõêâÅ‹Ÿzê©   øøøÝ»wÛõ7--mñâÅ999¥¥¥ß}÷ÝÀÙÃç”!q(áïr\fŠ“Ô¢c÷0*¤¥ƒšƒN&¤¶·‚o‰‚N j±ùg””TXXضm[¨ªª²ÙlW®\iÛ¶íÍ›7}||6lȯŒ-tbçÎ;wîlÓ¦Mii©XÄÄıcÇZ­Ö±cÇ?~|áÂ…PXXÍ›7çêöéÓçÆׯ_?zôèŠ+víÚ•••õÝwß͘1C{ßë/¢GaméÖœ<âí:-¡œ,Ä€þlky/ŒûÔ÷ñ¯ÕjMJJúöÛo¯_¿~ýúõ›7oÆÅÅ%%%@“&MJJJ*** ¸¸˜«-䓟ŸÿÆo$&&~úé§sçΕn½Aƒüñ?ü°iÓ& €_~ù…[z÷îÝÀÀÀ   V­Z}öÙg:tðõõ0`ÀáÇO:Õ¿j[ÁíÑ>lÔgà‰ç"ìÑÒ®ÆÑ«–vi@ä¾Aâ‹7ÿ¡>óí·ß>ýôÓ:t°—Œ5j×®]qqqUUUûöí{øðá’%K¸¥ØB>÷ï߀¢¢¢C‡Àµk×$h×®ÝÛo¿ýᇞ9s¦gÏž­[·þë_ÿjµZoß¾ýå—_Nš4 úôé³cÇŽ¡C‡@ÿþýSRR¢¢¢š6mJo3¸#ÂS?§„úœò;[úé*È›æôøÙhø ©q +ZW²&‘Ýv ïL‚ߥú®¿;vì5j?:bĈ{÷¥………­^½zùòå àt°…|zõê5qâĉ'Ž;¶_¿~ݺu{á…¤}˜5kV¯^½.\hµZwìØqñâŨ¨¨aÆ1âü#ôíÛ·²²’Óß~ýúÙl¶ÒÚõƒ¼faßÊÔt*vx ÓÝ«ŠŠ*uCA¸¤Æ ²¾{ ÕþEÕÏž=kŸùpýúõI“&±ç¯3LBZZÚŒ3víÚÅ}K¯_¿>yòäÐ.. «S.W‚sÉÅQZYÔù€°ŸT^Sß0 ŒGìúƒA€’Ë7n€yœFÃ-eÊ«©QµةÓ_GÍÙa=õ]VÑ:þ.}BKNHf‡È8Âô—áž ÚWGüQaÝP^¥½p;ñÕnHùøµ¶ñ¾6Ço$© Ln ÷%§ö@u½ï'6w_míê¶•Ša`f²pbŦ¿ 7G Ï&ëõ@|qsh|†6”ñú+‘ô›Á0üãÀVûÕ—>œžº§¼r˜¨ÇZ&kGö$n‚3 J¼Ãè/{ªÃݨ ½aN …5ë0r½3˨_›òê~ÁM €ºm*gý­}¾1ü62$tèÐáúõëäõí“Å!9÷«Ûâ+ŽÆ3ušhiW4@¯Ê¨K¶€@ØCb^¾yz;ÿ ðññ!´÷ðáþ}ûRsQ?8wúüûƒ&OžûŠdu¾ ×+ÍbªŠæáÔD J.Õgü‹±Òk™üAÀׯ_×ࣞ¢çÃ¦ë•æ:"x1þ¦ JÍQ_âÆHï´ñ?ãNÁDO@,órTT÷0%Ž2ÆÁ}? ¿õ€$óq Þÿ†¡¹9Üó— »Új9»àä"rx!û¨¼EÇir$IhÌtÞGºwt’àž¡:÷ôZÄ]­§S¾Œ9ü!_AO¨‡w¥ô‘b3"f‘Ø{©Od‡j¥màXé#Á쬣˜ëä·Ž¢l+¶Íi…¤¬ÑmCm©rGäíT«°ðþ ÉëxŠaG`ƒh—²ý®5ÁO·’ÝZ3ºÆyAéé¤S&ªK$žÿ ZˆÙ±çÖˆì>™/–M¶CžÚs\EOÒr+ñÅöë33ÎðXòá3ÉówØAUç‘ÛÅò¿êìKÂGã 'b ÊjjA[+âÃ\ݾ=JL’…ÑÔ'¤³çŸÕO4~á™ÚjƒÎö3÷°×yXkd¨AËx‚–)¢qþÿ막#IEND®B`‚pygtk2tutorial/figures/frame.png0100644000117200001670000002324210050344475016135 0ustar finlayfcf‰PNG  IHDR8HK?uü&iIDATxÚíùwTUº÷‡!!óXIªR© •ªÌ $Ñ„ j·ØêrhdQZ‚!C2¡R1©!x½®û¼ëýéŠèm¼­€Ý÷Þ÷Ç»º}åj/ûm¡Þgï}ΩS§†TBl¿Ÿõ]g=uêÔ¤>>{ïs #"8‘‘‘Ê6lx(""&""=""KNO–*zß›S&c¦Éäï$=Ð]êý7_§ò¤«’ªJšïMJ OjQN­y¬æyB'ü#E’""’#"x’xÔµr3NU'È/úg™Á»Jõ+üßm8¡O(È{""î ÿs?MM¦MÐç÷ÌŒžóçþëhÛ{­‡ÿ÷á–Ó-‡Y”‚åЇþû·~¤lÅ~Í1mG?>|ôL둎´¡âÈÑÓmmgÚÚNÓMªÅ–î=L5OKÛ‡J}˜GÔmï|$öi?ÓzŒÂ –ލæ{ÎnÿPÚì´Tóð¤šíïø×#Ê]ÿJië:­ähçécÝë>£N§ß6tè˜ÎŸtöžñ¦ïãŽÞ3ê=½gºú>V ¥î”;ÝÑwº‹?JÔ´=~òã®3gÄV®àé”Îþ»N÷ }L9>Ì"Šî‘OÄM¶ÇöIïÈ'}ÃÿF¡‚Õ¶³šœàñÙi?¯ÍØYuzíŸjöPì,þûùñ¿?9qž2à`aÅħ¼>ËwžUê!ÇG«Ö¿ø#û,{nÜ ÍužizÀx 9þ¼WÔó2çÎ;çÎ]ܳ§çpëÿš3oû}¿8xïœC÷Ì=DÛûæ¶(µ&÷?pè>9÷K90s:ôÀÂÃ,Q‡æ/<<á!¥¦-Õó¤â¡˜V‘ù”Ø)꛼x ¶å¡„#óã[YZdi}0î0Õ â.ˆo‘CõÁ¨Ä–IÞ,J9“Ú“Üʶ¾‰Koãi׉ѵªC;i+öS—ٛţ÷Fì‰Ël¡ÄëÓ1”DÖìÖ#Kb«“sÚ(©F–$ãQ§›ÞIÍm£¤˜Ž¤äñ"Ð6%¯5­ðhºù(mÓ ðõË‘tŠùh†¥=ÃzTÇÒ® Ý¥/î4uŠe—uÊ:eÝ”ìruº(lgéqQ›ªz(ÆÅÚøï7U÷šªOHYÚÍR}"gIRSòª» –°ÔôR̵,êšRøHŸR³{ëûäœ(¬ë5¯8!jÚŠºdÅáØÌšï=žsç?¿pá¹ g)ÒÇ{–êóŸóÖz!åŸ#ƒÐÜܬuÿþýá´f•¨½-‡?¼ΡˆûF"çŒFÌœk§mÄÜJäoî™k£DΊ˜3xïƒ6Ê/æÛEîŸ?ò‹‡l22/Ê>/ÊFÛ¹ ©¶Í¶ñ›¾‰¦<cSÅ.±lÿ¼E#TÌåy ÞF™7"Š…I£" E-mJ¶-LµË±EˉJUߌNf[Ë¢ŒQy;Ì#ö+‰ÊŽ6Ø4‰ÑÛâ²íñ)¬6ŽÅgÛL¶¸\*”$æ°ðz81‡…Šä[rþ(ÛØR̬H,¥=´I2Ó–Ý›\hO¶Ø’Xì<ÞšîJ+Ë(žH+§BW:žQîÒ•95É(uf±Ld”ñ”:õ“Y•W°dV8³ªú%.oªÃ—A®•ý†¥NSÍ)S;·v2g¹‹ Û)×.S­#¿Î­Nn½S®<ÒN¶¿ÁßàÌ[ÉB…º.ZÙ—µúªÇóéùÏɇ}û÷Rš9¡k¡€¨÷íÛÎcE ”vâ±<äx‚êf™ ¢á·cõw{{i,:gÞ{~1ñ‹a’óÞí”û²“isæ³ë”Bɼ¨1Ê\J´°‘<´Ï‰%}C²ÙçÆ’]£´g£-30vX±q^Ì´‡ëÇ’0,”‹JT$TÇbgI%!}œ”·, ÒlQ:{”Î&²0}D 2¤=L¿ô!!)0¤_"‹ô‹3²$˜ìñ9#’{¹£Š‡´SÙOÆå˲Ùäxo&äÈ2WS YÈC®"/Ù:¦H¨+ϰ²èŠ˜„”Ìr‡ìž‹|K/uEX]NšMfV¹Ô à¡Ø¿ØÉ¬c[¯xTK7™–ãRGîr7EVNÂCµ,¹u§rI3nZ^ý¤T«’·Â%$,X9)¬S$ œ•Ž‚U.ŠµÑ­Nyã@¢qÍ÷7XG%|'vžÁ?ü4Ü …90fQó$-Ã?‹‡Õ»+ŒŽzþü%•&4•ô[prÎÂŽ9QmÄtÌ_ÔÅÝ3/zPé„þ-‘w?»o?´©%Íp^Âð¼ÚRǾ1“{£Sº¢“S¢Rº¢RŽG§õG§J펇Y—2íÓ y?ä}údtº]îR'\¨b0s„$äŽJîºc³{¨ÍP´ÁIB[œÉ°òf8,$ôvBU”¨tBIEÞ “½Ðîí„k€E,¢¦“‡rL/gQwB¥ê«ÜÜ´I9ªèë¡°ŽT”š¡$!ÓRÔK&²–Ld/S|skYd÷|%¬uP¸l§ë‚wB§¦Š›êýy+yBÂÕK“›BúÜò8‹Ö¹)Åë'‹Ö±º|Ý@²iú ë¼3» ,ÁÆ¢ŠBꇄ¾ªE ÿ!³ÐQÏžýbuÔö34¤fH>ÓþíUÏwß{hûíßY®ü?ϼ¸ãsãY3Tâ#!/æ«:¡Ü G©F‘‡¼+’ GD'T5=û¢´Þx]ó7ß{¾¹Êò?W=W®z¾þ»gQzGtÆI¥j¢—r %c³XÔ#Òã(5C‘Ä{²©÷ëï=éyoQA½‘Gn‰y£ñy#d©Ê7¥úuE3s5Í2êm†r”Z" G‹¨ŠŒe–°N(ÚÒýÔmP¹‹wÂÉ m°Ê¡tB¡·fÉJãÒjj†.Ñ RtåòøwB¹z%Ê™êݦNQS3Ì©wО¼•"¡Ú`¾ì¡µñÛ?–5.®"ϲÞl[¸ÎeYï)~r²è —õIwÅI¹«ŠtiF%7<×oFÔ ç>£„Õ;!VGŒŒT:*‰Úzìô‚øVò œßJ–&¦¬Iz):iÛ¢Äm wÏOì~ ±ÿ¡ÄއQ½0¥?*¥‡5@Þ£’û)Ñ©ÝÔ ¥uKIïŠIëŠIíáq v“gQZ5ÌE#Ì´t{lFW²þõoð$¶QAIÔïLÈ<—Ù›Ù“Ñc¦ÖkèÍ>ζ†ÞxÃñDãñ$JN_|öp¼ñd’±+)§=9·+9·;ÅÔlêIÌí§$å°›)¦.*zMC)yÇ¿ùÁc(|#ÝÜ‘R0VЛšßf>žbî¥Q(I˜o5C>L,åª["ëŠJ3ÃÑ >=P3'Tš¡Ü CdR Y…r’‡K™{™ÕÞ9!Ý•)¥KªÙ ¼Zk]¦G]¹¾3ÀPL ÕJ]‘¬k˜PFª¦Çœ* ½ÝϺvRÓ ™ŠÅkY¨ÒÖºÖÁ[¢”âuN±Ç²ÞAN'Ö'%O¹«žLÉ_suF¢^¸pA-jèá§¿¨B?¨$—˜šÒ„ö¦;*¼‹9êîæm]§$µÎ‹¢N•Úñ׫žDÝÆØÔ·£’Å$“Š= “£S:¾ýÞ“œ¹é뫞8ÝÁDÝnj¹¢ ƧŒM?@{¨NÊØAû“õ¿¥Ð½ YÍÑ™'(Tü?þ íÌ<@Fgô‹á(Y—fÜAæ$[âôñ†ÎDcORvrvµÖ´œ·’²{“'ÒóÐcSóZRr}ýƒçÊzïŠ=)¹ä¹¾`#m3óß0î¢#Ó [)™–½W®‘“;¿áÇgšßN1÷¤v²–×2­3¬­â©(zëÛ©–~õ´PtBfc‰Ã¿jš¡Ø)d˨th†SuBÍÂŒè„y5“¢jf4uÎr§Ü OùO•PW¤ÈÐzZH÷’„æU®¢¦I¥ï©#ôáz»YW¸Î!jѽZ>á*yÜÍû!‹¯ä ‡&á´-}Ê]ÂSú”³üiwåÓN– n–§iÛYý4‰ºZˆº_3}°¹6"¢ã±(uˆŽ9 Q·•¥`ßy%{ˆ2žQGeÿV}wíëiïù8:õˆXŒ¡§2Nw€º"K¥ž¤©`¬îèw?xþöƒ'1k™F6¦ê7¥^J1l"ýHËÖ¿þà¡Ç¦è·QAÑål¤»b³;ã³;˜$¦çt¦t¦-´3Éx(.»†¦4'LÌéÊÌc"¥äµR?d1õ$›ú©fä遼ÓMûu¹o‘Nºüݙ浒cÙEÖ—¾¹æI3w¦›ÛÿzÍó÷=&ËKß^óÐάÂ]__óè‹w‹·ó#Ûc,z#§hÛ×?zÒ¬Ç)$j^écÙ^ÚSP¾Ã\±ÍZ¹…3TôëÊ&D¨û©WGňTîx![¢z4„Ô ÅœP6Ð¥¬Íh$Ì«uçJÃQwþ£§D3d+1º(õ.ï’©jTHè»Rêæûê¬r“‡òÜ/Øœ…OÝbN¨nƒ¬®wó~¨H°û±¨jò$,Þ@q–l`¾ñ(…¨e¿f©xÖ]ùŒ»òYgÀ<üÌÀUíªÆÒÙœ£òUßãǺÏĤ·‘¥ Òl±™ïl»æ¡îD}é««žØ 6W¤HûSõ[ØéÄŒŽ„¬·ÒŒ;Ós¶¦›XKÏÙ¬Ëy™`l¥P¡ÏÝH!Íø@ô’ÜdþUvÁ‹ú‚Mä’.oOb^·X°¡ñjVÁ›L°<$!)DŽýåOZa;µ>eÿß~ôP¨H1§ajºù¨¡øœ’—òKž&?uÖ3o4mf²·Š‘ؤ¢¹ü5fiy'%¯ri©/;©/ï§W1W¾^Pù&iL…¥|kiõKß^÷÷òŽç`ñY•Q&$Û¤F<²Nª«®‘žÒ¬ŽÊµ‹Ú`NÍ_› ÕE'd~®”|›jNÈ$4?æVÏ ýû¡ˆX›Ðúø$|Ò(”Í©%*sBÖùœP´A%dõÀÒǽͰø—NÑ ‹åòï„¢*–?ã–?ã¨`[mfÉ‹“‹_pSªžw±-í¬yþd†¥1äõ,ÏÔsTfš!“4J‹³¬´ ªè°Ó]õ¢vžø$!£M,ÏÄf¶Ñ§?ÓôKr/9gWböAê‡1†”’u:Ó43L0ô¥æ´ÆbÐHŽÑ°“ d]‘Í»¿áÑì|±§+%ïï®1Ù„dHi*Vehr˜eÙù-‹î ÂP´;³x¯ÎrXgmO³ve½ýÝJfÑÛ$dVñ }ɱ¯®y®\÷|wÝó-‰W~"KÏ\¹Šì²~ …Û)Ìáª~cU¿yñ[$jvÕ åÿ^óX—ì ¨WxËýëuÏ7×=¦êþ *uµC,R Ö Õ¡NÈRÇç~Þ5RŸs†Ò"ÿœ°A³@êÌ—§…Òl°1H'l[èçl¡Eî„ÅkÜÛ ¤œÜ¥y ª º•NXô„zNHµ»DšºÔ3CÑ K7LR3,~ÊAÊQ¬xÊ¥ž Åp”¶¢Ý ëD-z£’ÅÏOª%”õó:I–.yžIHŠH¾è zùË®šMîå/ORAyxÛÖl™¬ÙâiØü1M G“Ø)ûš¦Z:©HâÓ¤óóÅCÔ ©êÊF¨òÖמËm4”·ë+ØõÜúr2ÐF¡B\´MãÒ¬ŠwõUcTryKæV1VÚôÊê(;O8žS}’d+XÚBMR°ôÝ×pçT÷ªß5TÛs—¤¾—[ãÈ«±[kÛ‹iµÔvy/Ý®í¡PW,¨=I]± nÂ\?L*VÔ¿M¢RAZëú,uƒuã*Ìõƒæ†qóÊÑÒ•e+¯×Çhº¢÷<ázi¨éí~òr¨¦ùvB¾@êmƒ\?ïü‹'ù¦´ÁŠgš9a NxN(Öfüç„Ë6ÉPnƒ¢²lu/ß,õ½ZžšÍŽZ¹®åãÒºm“ÞfH5iéÝz›¡‹Ä“ÂÝ«ÝÁÂ÷8¨6¼qJ´ÄÇvþ³Z<Ú6PvýÓª]¬ÚõþêïQ¨XµçƒùÝ¿¬ßí0,^G¢~zábÌ©|sÅ÷0ÍšoÃ(¢ C{¦ù­}êŽ*^%ô·mÔ¯jŽ:åwa•¡oߨYãâÞ,Ÿá¨ËÿkMùu3Õ©ËWBßï4q 幟z¥Ôû 唽|¶Ð-ÏÝÚ á v¶Š‚ǜʈT}žPÔÔ!IÑ’ÆQ~Bꄲ‡ê®è–{£X›Q¯Žª;¡KÝ ù©“÷ÃÀP½6Æ£\Eßó„nÍiÕ “¬û‰~¨ê„¬~Ñ;'¤ÚN¸ä7”‡7ºk7Nªû¡Ü Y˜Š[ÏÞâ`¦½æöŽBUuí«Niç«.ßfèªßá~DôÃ×ÙÃň”Ú`ÃŽ÷¸„Ô ß Ø Õ²a÷íñ¦a/åýÇ$ßçáwÑνï¯nþ€çŸy>x|/ï…¨á'… aŽ@opk¦|µèª/¯uÊåiï`Dmîû¨`i+_§ñ~ñ7oYŸ¹æ$KmðôÔ°/[ëØ PÌë©Pm•ýìû¾Ö½E <}<¬.^Ù/nZVŠm/»¹j dUyã *êmÙš“¼(_7X¹v H¤»Ê×õQ*`y¢_)*žì¯xb€åÉ~%åOöWþêäâ§«ø¶úéáeOT?5´tÕƒ´¡š²ì™áeÏÐvða)<¬^öì€ÈRžåÏyóÂÉš†½õó,TPj_’3¨®ë7ŽPê^¦ ±úå¡›G( |»bËe妑U/¬Ü4¤NÃæ¡Õ[m«^±=¶mXɪW4Û!)¯PVogµ:M;ì;FDÖ½i_»slÝ®‰µ;ÇÅVäñëß—²sŒŽY¿{œÇ0ë~§düñ½.oÝ>Çúæ *äŒ?±Ï©Ô”_îwn8èb90ùÜÛö‡ÙbÒ§>SWFõùÿ,Øç?GfÓ{Q=¹VTõ[C ´é}Íö4·®Z¿1^W“±&HVÇêX¨vo&öX¬~u\Öê€ÛxýÚªC{³›’¤¬áiJ4²‚o¥:%§I$Õ´6%GÜ\“ljJ6±š¶"ü.^ä6*µØ/¹¼XEIÍ[CIÉš¤–@w­¦¤ò­&é…M"©–5¹fI³®åÅ©H)\-ê+»™QÔ”i¥¬áiÒYWg­Ñ—®Õ—®Ï*iâ…CÙ:}i#¯51”5hë›ì²&=/²JÖdW4éåˆ:»|­Rû'«¼Q© •k•ò¬‘nV­ •ÅM"†ÅÒ‘4LU nÒV_µ–Ž1.^oZº>ùãömmöÁ¦9d8C_QÓÁa~Ñ<üZó­ñ 5"œ©‘âk4÷òßl^DDTDÄ"þïDÍx»("2†?O”tsQ?*tÍísszY¹€mïYÈŠ›IÀg¸Gd!¯}ö«âÝ9Ÿ½ŸˆùÚDʉo«y¬ÿöžµ‰TíŸa-"žP]«rï<–`¯ËЗ·—.ýQ_Tm?Wm¿¸üŸê="tØ¥Ëÿ©ÜÔäbðУ.†< ¬Ðûo5TþôùeöóªßØÁßs˜ ø â§~•ËRÞ¯¥B‰ØóÅÅ?*uÀ­:ñÏ.ýñ‹/ÙÛ[å-…¿7ó¥*ŸÿÒå?ª>Ò—}?ã_ðð».^š-ü^EKPQ/pDGÎk|I¡`V~†ÐÏ#î qÌÅ‹¾Ue¿æq¯êÇù’'4Þ?ÛÍìi~9~ï\ûn/²}—åú Êtߌú§õþgëÓþ§Bó—ê%BÿÕÔ¿I©¦ç‘_×GÔYtu†¢ª‡¾3û%«Ãÿèßž_} •ÜYfë=ÜÌóLÿwþ¥*·çg‹™¿çÛD…¨Ú¿àŒ>îõ'#ªÿ}óÃÂ/T¹µé»AÔ»ŠYúmÜZî„äwFoˆ Qoéo¢Þ•C_ðs`ºzܹÁí?@ÔŸû5ð *øŸ-ð÷Öÿ™Õï|6O·Ü=ƒ±©~‡áç~„©~ÆÀ9*D…¨õn5à•à ì÷‡f—Iúë¼bºHø¿z°OšzèOc˜ŸÕ/¤þ)ÂÝK.°¹sT¸ fÝÌ`Ï6ƒ§ ßÞÿ9˜Ù«ÌìÙ°˜fg`¦à¿G}—r€ø¼ütùÿŸ¶oCKP¿JÀ:Ø[½™º¢Šÿª¡‘þ ‡¾šOHø7•ZÓ5™r<øÒè©>Š!^4œ7¾ušwr‡Eõ øIˆêÿñý¹T7¨`.»KÓ“5=<àuÀí´:ªÿ!ôÎïC_p›½á@Vø”§ì¨þ&øË žA­JiCÿ‡ Ä£ü ÍNñú©þ/ZÀŸnÊ&7 ¢ªÿMõ?©9&ÌZ§Žöoùô÷÷‡îá·5MV¦¦fø‚)ÿ]Ñ0ƒu쀽Qóœþ¯(VžÂôœ~š_æ-µo ·Ÿ£š›TÌ VÇß©ãûƒìCïo¦ZBåfˆÏU°9ªfºp+t÷ 1òT -jø;ņx“t€ÿïó–‹ŠAàÏ Å–é®-ù‹§yÚ);g°ç VœKOkíw¢†¿P|[;*>¸?Ï%ß` *þÈÐÞªOW†)j1”?hZCß銬™‡c¯z”qÇD½|QºÆjºÿüøé.)\óœòfÀn8¢ª_T3j ½Túóލ7³ê«>L¹Š ¢‚»¨ý†sŽ}ÇÜž¨)ô"m˜gJ•Ã4Ç“nú‚Û7 žõ‡„öPãÿŒ%œÒöpNŸhFá\‡Œ9*øé­KMëÈ`—ÂO÷¿ á¼t˜o/œ¡uÀ§º¢Ò W÷ôÕ`‡ÝÌElWgðT³u Ýt¯×öºÜ3Ãïö_~ë^1üamÀïýiþb }ø Q€¨ˆ D…¨@TD¢BT *¢Q!*ˆ Q€¨ˆ D…¨@TD¢BT *¢Q!*ˆ Q€¨ˆ D…¨@TD¢BT *¢Q!*ˆ Q€¨ˆ D…¨@TD¢BT *¢Qˆ Q€¨ˆ D…¨@T *D¢BT *¢Qˆ Q€¨ˆ D…¨@T *D¢ *¢Qˆ Q€¨@Tˆ D…¨@T *D¢ *¢Qˆ Q€¨@Tˆ D@T *D¢ *¢Q€¨ˆ Q€¨@Tˆ D@T *D¢ *¢Q€¨ˆ €¨@Tˆ D@T *D¢Q!*¢Q€¨ˆ €¨@Tˆ D@T *D¢Q!*Q€¨ˆ €¨@Tˆ D¢BT *D¢Q!*Q€¨ˆ €¨@Tˆ D¢BT *¢Q!*Q€¨ˆ D…¨@Tˆ D¢BT *¢Q!*Q€¨ˆ D…¨@TD¢BT *¢Q!*ˆ Q€¨ˆ D…¨@TD¢BT *¢Q!*ˆ Q€¨ˆ D…¨@TD¢BT *¢Q!*ˆ Q€¨ˆ D…¨@TD¢BT *¢Qˆ Q€¨ˆ D…¨@T *D¢BT *¢Qˆ Q€¨ˆ D…¨@T *D¢ *¢Qˆ Q€¨@Tˆ D…¨@T *D¢ *¢Qˆ Q€¨@Tˆ D@T *D¢ *¢Q€¨ˆ Q€¨@Tˆ D@T *D¢ *¢Q€¨ˆŠ_7ˆ Q€¨€»QÔË¿¤àÀ]*êeDàîõâå/(ø¥Q€¨³!* {•10þ„)j__:*è¨\Ô=×h«ÄùùzºÏ‰ãqüݼÇ7nÜQ©jÒϹùzºÏ‰ãqüÝ|¿ ñ*õ-p«¨@TD¢BT *¢QDÔ .@T~j•ÄUDŒŒŒÜQ¦úî*ˆzîÂYŠÿ¡êýÁŽ ŽÇñ8¢âxÿu¼2 °˜tîܹfξý{)¨Q£¾jiϾ}~ØHi1‰×êý¨Q£¾­µŠÿM•ù™c±IEND®B`‚pygtk2tutorial/figures/actions.png0100644000117200001670000002443610123177173016511 0ustar finlayfcf‰PNG  IHDR6¤—IA pHYs  ÒÝ~ü(ÐIDATxÚíOhGÚÆ þÀÙà Ø=HàÃç ä°°‡äàC2l’ÐAR|°„¶ðaÍØ`3ÉÁŒ1óå`$Œ”ƒ‘t0V ÌB ³Ã,$09$È‚|H‡ôåÝgëëš©®šîž¿­yôCô;Ó]ÕUõ>ýVUWšª~|q¹©.™•LòµZ/Œ|sËßzí²XŸÌÛ¬…›U®[±]7“ütΞ*e}tÅß*ùu[—Ë_NÊÝh¶fsÓ÷ÜÖòÞbwÒ´Î=v[×Ó‹ùûçü­óÏìÖ\iþÙæ‚Ýzcgsa6u÷Œ¿õfÅmÝÞ€ë o]©moäkþVUÇZ;²°¿u_iv[%GQî•û>»ÊÈ]¾­ê†»^IT­;\}v·e}tÅßênƒîö+m¿0bó9.¿Äç4^W÷uÍž0ˆˆöÞoÃu¥ôçÏÿ_D§ª“o3I[²Ž?8>î,Ý·UÄ«4â\qæ(©j•£VwÃu'[—‚Ýê*}wÍ V'mVUÛím¡U;òoƒîÚªu»=ƒÛ«àÞfÕSeŠ«xÂð"Ú]¿=l×#ˆhg’FDUSGü+zuI¹-òégõšiE3°[庨è¦UR¥šA³UžO½foZÑìeËfÅø–ŸõúuO ÃZ?ó$°Ù*q€Ë  Çíg×첊ƒð·B\íV‘]´t+ÄÆß*ÑØöÆöÆïÉÜÈŸê‡~߉F9³ÍêNU++òí^µ.»ÕUúîšÓøÐ­ÆB\öW+S-Ôeµ·n·gp{x$·ÏiuÏ"R¯Œ‡Ñ^øm÷ugS7+RŽ­ÙÙëêW7óØx<ŠN…Ñ ÉòKbs²‚‹¨'Ÿ˜¡*:ÁT'Œªè› :¥².æ=ù4­zUn¶Ês¢44]ÓŠŠîo•çS‘O?«4l4]+ž@]VÏ¡4[ñ´®œ‘ͪº­Ò81bÖŠ.85šeZ•¸Ú­zçd£UâZ—UC‰M³јg…Sø”ˆœ|SjÑñ>R'^¡ì”µùœÁèþ­w]Wšý­J £Ü«Ö¥`·F¯J>mVw„ÕVÛÑR¢Y]mPÅ—¶ÖínûÊo´ãs<+j|]³' &¢”Ï0bæ¯ÁE´{×Õµ©ë¶%¢¶d™ò©3šˆšò)S!Ô(…çyîIØXY½ãÊzé´Ë*¿UÂìgõšiECãô³z »Ùª¶Û 4­ˆMÝV82Ó*OúÞT‘0ÖFùô³ŠkV#p~Vo|®Ù q…úY=4­ªãºX¹ëÖÑÄø÷¹Òhââ›|ͤeŠïãdOÒ\œÉæ>[./æWjø_Ö“XÐÿ^©ንñ×j[Âú¡J¹¤ß„pâøöÆË_¥žË,Y¸f¤¡8óÕ'Û¸ö2jO>ímñ•O›g𼊿Õ呼!!½ãWŸ„tbQ8ÝɈ0üèc7®ÛmꀈêOÁ“%î#Œˆªñ€ÆÉÍcíɧ½ØI·åÓn.Ÿ®Ø´]ùk4ù«_ªlî1FÔÖÓzDG¯â<ùÈ;|‹ùÑÄäÛÙòˆÔ¢Œ0ÇK\×<®_K:óR‹ó­ô"ãw·uQÄqˆ½ ̦=8?:o^I+À§¼÷ôÞ%]OCl~Ú•î {+¢­ýö`^×ÝQì–Ï®ŠhÐÞs[²‚‹(žõü^CþtNšzC«q&›¾¨‚ݪÞÐò³zow5[UÔ‹‘¹f«¬<â²b2”Ÿµqüôz“ ü¬ò¨á½cg³ªYÍVéÖ“QÕðVt Ú­êQ»5Wj¶V—þõ7‘L=¾y•A”àˆ.N¹Òg+Ëeufé¼Õ—2hœ…«‹¨Yº"Q|óHõHT‰¢ÿypݶ"Ú|D¨Vëëég_7žVµ ƒzw³1Gúq·Íâ>£Vë¿Âÿè:†<4§-jé·ªWî:é®Ïú°NØ–âjƒ­Ú¯»íË:hv¿áö9ï¸{VYÇJùºfO^D»ë·‡íº‘E´3É .¢ÁÈÒ_mÈ󚌙Éy.SDW'V¶Ôƒx>•õAìV¬¨égŪ%ò6ªŸUž¸ÝV•æf+f9Ê“oT«7s¯Ù*ñ‡÷ôêoŪ4¦#”þVY˜Íe•h1qXkmËÑâÌ£+ëéÒšt9êÑáljþYa¤¼÷íK5þÁQ=¼ÄR]*ï=^?”ÜáÝâÝÕ}*çÉ×ä ?5Š ¤H?3F—HUiC½E(ÎožÇÑ tÅñíï~ߟÄZ©Ò#R]*ÎȪª*ý×ßÐ ózd)±¦ºWúh+„çÄqYáS:½zéQ¢Ž8XI»šØ¥Vµµ— «ôÝ5'X´YUmwµw+ó·ªjk¿×.»Z·ZÏ(ªÏ±ù+ô ͦ' #¢½ðÛÃvÝ"ÚÉd…Q}ég¬Æ‰ª¬–óVÄÓërÕÑ;®¬ÞâÎ~V,¯e³âÌh~V,uíoU aûYÕr֪„iźµX0ÌfÅ⦫­ú[1I§•U&ù[Õ2è6ëjýɼ̉E.dL½H©È†7‰w|0‘GŸhƒ¹¦eĈ Hcm c–G¯ä;èHô?I\±2yö¢X™ûd^&àˆð æàû~çg‡ÚÞ(¢ò}5Ù‹S16)3i뇙¤DÀèâkìžU±lc·­žw™:T]ËbÜWj¾~Ÿ1WÁ(]Ð2²—¾»æ«“6«Þöý­­ÚQ”Úªu»=ƒÛ«x›X´º®¹¾¬ZLD{ç·‡íº>"Šy}&ñcœ¨³Ä™m×ÕET\†j$~û*H§œ¯ßÞÒbß9Á½cƒ,um·âº.+šŸUš=G.«82·u=mßC^ qYe¬.Š“n°vL4«¾Çr!Q”LÏ\I—VOÅŒy«n[q…¨3êO!Îà-:¯vÃÀøŸ’4±zßG§hãž8®Çͼ¨ï¨ÎUoã*ï ú^.ÈDWW€¸3XEHÏî•9&ªݳú®28:Ì»£¥¾¹Ë¨ºÑºÖ¹¬îúìj ­[™«…¢uÛ÷Sjí7ì>GäÓfuY÷„¨íƒæ·‡íº "*?ØŸ´±[̸¯è-û§ž"ÑÉ£Sº¶JkÒRÛ2­âX•|úY§ï©Žß°VyáAUt?«4ΨVq n«ínäkpF2²âg•˜ sý­êÍE?«¼qØÊ*nδΦ‚X%vñ³ÞÚw[eœO:Z]VÿßÊXºÁM+º¸ýŽ¡ë·îë"Ín«ž#]D!ÒöüÊ}–.n5‰ ñ42Üeä.ßVuÃ]¯P'm5ÖUŸU[p·”n´Ðè~CY]É~ÝfO9h~{Ø®Û$¢ò|:8DÁ“ žŽuJ+ïy•µÑŠf Ó÷!®ÍV‘^éŒb½±#V‰zý­’*·UI~³õfE—OÓŠ·ýüïÆJÍm•nRÛ„PÙ­â¸åÉ·³V% 2ÞÞ*Bå F8+“¿µût¥*lŽd ÷½YQ±²ûN®§e}`Y%¸¶%íKÅÓÝ(ßÖõÊU'Qc£´…VVwlÕ~Ým?ºW%;ûYåQCš(ŒÜ=S¶'IŠhÄ ”Ö¾ú¤´¦ž|M"îüùsYÕÓ“œAÑÚÖ›j[ÎÕú­ýÕºìþXÛBô,{4VÆ‘ë¸8©~‰¨Y7*ã?¼'Kš½ÿb, v/§f­ë^îPCP[`ÝÞØùi{ƒ"J’Ñ€®$Jœ7˜" ·‹´A8OFU蟈6[Ñ?ѽ±Û9µçNµvA%IŠh É´‰(žßÑYš,œ½–,¤*©éTn·—‘(:èr¥ë×s¥êÒ??¨.ù-âÔ©ê¿©N`äb1?ÿl1¯Gç67gÇ‘òÞ“ùòÎŒ´e’žÍ$õߢƒ]ÐcÙôÓ±,îÞ ‰("6¤M?^¹®0‚NQý$§¶:¼ŒÂ殺ôúBuIE¢/~lŒDƒç.Ž%N’Ñ>‹(:ß0âXZ{tEs÷à寻p"p½¹}ëé§ÖÓpsH'FòVëwŽT¯…ÀEækŸ­äk8ÆñåòÍÊr9šˆâ H4Žãþ bVNùaÚÏ)÷·;å[ÞûæVy/YHþÕ/èÀCŒ.·ø¾>%-HNýD4\¯ù¨™™ä¥Ó™$¼l=îÜÅ·ÄI’"Úá‰Ex:.¢pIKXá8@6;‹ÞÌr„ëÏ•®]ΕÔN "öëég_¯§Í™‘«{…QýÁ¢ñ›âš‘BÜ=3–¤‰E˜nÖº!*_^= žSw­ RFîÜ©ž’¿ÜLUP Bä¢å.¾%N’Ñ>G¢˜Ó‰Êæ>¾˜Í™„ãè÷Ë9Q¡“Mw¸ê!ÀÿnÃ!*—EDíß—Š»gÆ4ƒ4&*Žõ¸{¶±R|,èÀ4ëIœÚÔ‚–QØšÁÈ*$9lîâ[â$Ií³ˆêOÖªA¾¹jjŒçpÛDõµ°"Ú˜/.A·óàŒ‰bv.Ò‰ŽñÆã¸{rlõ$xN»‰ÚG|%_x ›»ø–8IRDû>±Hžâñœ®;Âåé¨{D2ÆÌÔ8R‚—4dô ã£ÙÜÕóÙœ9Þ6›š¾7›ÒÇÛ¯Åü™º"ßG 7:ÑMDu†{ŃFémb¢(ò®×üû†RÀqÜùà9u‰)£0#¾xýIÄq6®bÖvwîâ[â$IˆÙ¹p '}Ÿw}’E·oܦ‡Œ&Î?Rs)õ‘0¸`3bö›ù)n³©¹ÇÊeëqzI_®‚ÎÀh"ªGig¤3<MDA<4 ï!<<é  ] zŒ$§afçú—Qø_I9FFÍ÷Dƒç.Ž%N’Q’$I’$»/¢§"}byãN\îóîñN’$ÉH”$I’$)¢$I’$I¥ˆ’$I’$E”$I’$)¢$I’$y2DïÌ‘$I’äp²-=zuTÿã$I’$‡’ìÎ%I²IJ…Ã@–5»s)¢$IvEDÕºÖ'ÇÿùPD)¢Q’$)¢Q²·"ªW¸ÿO’$E”"J2%I’"J%ã‰Æ·y³$E”"J2uÈþ‘úã&±»$K*8—Ë7+Ëeܱ݃ï~ß=8I¥d¯ì$Úß<Q}çT}w^섊X±ûlû¿²Ý1lºŽšC%‰Æ ý6—§S߈»×wSÛzó‘Ýž$Â!âŽ-æoì,æ¡:[sÔ–æØ$ÜdÿóDDñˆGIíüðÞîAeüõ…ÊøöÆ‹·7 #÷ÏFP‡Ûù•.¢°V—^_Pg[ÌÏ?[Ìúž~öõzš"Jh$ª_ÏŒSÕÉ·SÕv¸\^©-—uÆ¥ð\˜ß™MÍ=žMM/¾™(¶SRøíæÂ·/7Nvµ†E½šMMß›MAP¡º#¢ƒUÓŠhyïÉ|yW„‹\£üªQD¦EDu«j£ÄRDÉŒDU|põ|"³\¾v9YX­:—ªF¦ï&Š3óÏ„7v¤+æfe,»Zÿle4±˜¿~ÝãµË£‰ÙÔÇS•‰âùGª'xŽ'-ŒÜ=SÁÿhœê;O$ g¯% hÒf¾lÒ¨‡ÓÔ;ôà.õøî×JURÓ©Š-^|B8s¥ë×s%¯ÈâÚRˆ‹ˆö>Á"Ñ—¿ª˜2›ûøb6‡#Ýø•[DõX¼¼÷ôAcüJ%û‰Öþ¼~ˆ§<ýÂJ>?[—=÷ØΕÚD±¼wkªZÞ»s4U]Oß=£ˆ#b(ŠÄN3É‹o’…°"ëé§ÖÓ-€ÊøïUÆ“…ä_Å…‰›S×’%Œë@£‰¨íÊ[iíÑåŽu÷ä^7²÷w¬!r'7ž?W9Å=„¸v£â"¢½Ïcð1QÔ@¤ W˾ÿb,‹J< uêW¦ˆâ ›dމ’‰¢£Z£K •WDô ùDÄ i„Xn.‘î¸'óÂonåkŠrd{ãÑj&™+]:­æÆ3צ;/<| aãîuCD‹ÀÑàéÛ$Ê1." 1p \dgK!>‘h¯óØþ+.ˆžñXÁkÿW¶î\ÔU|“•(¢dß"QÈ'„óXûàˆzN?MdÊ{Òy+ѧ’O%œOäk•qBP!´¹Ò‡gËè E¢8‚q)¨|SÕ÷_È–Ä”*úl–L/­Í?“1‰Vu)Í×®žWÑm|#Q}†¤ù*‚͵!†X­ßÚ_­c,SŸF¤K&œæ4ê#ˆxÜ´èoêeƒ/¢¼ãhû¦Ìà>@t;U qÑÞä1Øì\ñ˜†©±L©{\€Øg’—Ng’íüÊöŠ‹£c~²Þ‹F%û‰"²”¢‰Ú¤Ý&cÙ󒈥.ŸÌúáë »ÇÇÿÞ¬mÕ¶ž>˜M­§%~Åwòµ/†ÑÁŒDÕt q zthsmO(G ·X Pmÿ>W‰RDIŠ(E”Œýì\ÌËÕ7,SRšü«Z€¾0¢K)–ÄôÍKÏ› ÐFæeåÓÑÄDqò­¬‚$d$J%)¢Q2ö³sMbŽ.DÔ½2)S‡FX™hª*뉨Î[Ä—N/æA9’Í1¥ˆ’QŠ(yBÞu‹èlêÒéD&WºøF–AŸ|+/¨ˆLÊ.™$"ËLòêùårÊ’]Áºs‰RDIŠ(E”ŒY$ªo’ì^|K&ý!¶…ä_Ã0øb ”Š(I¥ˆ’1‹D;+ƈkMÂÊH”"JRD)¢ä‰ŠD) ¼c$E”"JRD'ã^u‰RDIŠ(E”d$JIà#)¢Q’‘(#QŠ(I¥ˆ’ŒD) $ïI%)¢ŒD) Q’"J%û‰®§Ÿ}½ž–e&Šx4‘IŒ$2x›ssáùóÍ…hgÆ -½Œ¤) ¼c$E”"Jö(-ï=™/ïáüØv»¶õ¯¿Õ¶@¬bMݰi¨þüyýДaœ­¶õæ£Ú#QŠ(I¥ˆ’1‹D뇿ܩÊ*BÉÂb~þÙbÞöÍÙÔÜãÙ6GÛŸ|ûEç2†8•’@%)¢Q2f‘(ºpqf÷úAúB€zLiBý¸Ù‹.b}ù@ˆ4#QŠ(I¥ˆ’±‰D #÷ÏFÔ™Ýñ¥XñÍâÌÃtq¦e$J%)¢Q2ö‘h4ůz#¢ŒD)¢$E”"Jh$ŠŽÙ°Ý¹èäH”$IŠ(E”ìÁì\‰/1]È=±VLAÂt$›V—^_¨.õ7%I’"J%{ôž¨þŠKaäî™Âˆß+.ò)­}õIiMÿ­ì šÈ¬Öoí¯Öw^þº{ Or‹(ÞCÅÕYÌ$I¥ˆ’±|OT˾ÿb,knÀ )5ùÄ ÛÑÄùG£‰íŸ¶7‚ˆèry¥¶\†”–Ö]i”gF¢$I¥ˆ’1ˆDݽ˜F”ª¤¦SÈäljúÞl q*‹‡$)¢Q’‘h AÅCèòíeóf% IŠ(E”ì[$ªW 8þO’$E”"JÆ®;—$IŠ(E”¤ˆ’$I:EôøD(¢QŠ(I’]Ña Ëš"jÑÊø?þ\'I’$Éá$#Q’$I’dw.I’$IRDI2VìÌvñ$Ë‘¤ˆ’dÀ|dQF¬xŒ%QÓ°*òDqüû‰¢¾ ûà7÷–¶E(Éx•#IRDÉ>³¶õæ£Ú„k c)GìÒƒzl9wÄùÖþ¼~—Ǭ†’ž´QDIŠ(‹ÔÛMVßÞŽ sÔß´QDIŠ(›H;ðäJׯçJXá%Èo§NU?øMu7îJëiÙ¶]?‚­ñpf¤-“üðl&©ÿ[Ä£ z,›~:–Å ítç.—oV–ËÈr„íâÌ—“Å™à 5HúƒÜ=}KAœg65÷x6$ Øi41ò÷ÑÎ_œy˜.Îà± »ƒˆ&ƒ˜~Ü6ìã„ä ¥cÞÉvÊ‘$)¢ä@[àÁÙ¡ŽM/¾™(bó;¿½zÄÅÃA«ØåÇ!HÑDg@ª¶7^ü¨¶ÕÃnµˆ˜‘ZCûc¢på8Rÿá=õ¶:~ƒwWI§îž; ØÐùÂÙ ¥¹ÒµËò¨ôúBu ÿ£¬ÃЍíî>ôÍ ‘wÈ- Ú/G’¤ˆ’7q Ü«­§Ÿ}½ž6EÈŒ\1¶Šx"šS6w–Uß”( )„;6çpFQäB¨t) ÛPÝéïÔÝk {ñec§½ˆŽCº°¹a§D#踓8ŽÇPÅ£rÝöË‘$)¢ä@]Žº[WŽÒ¿6BB”sl×)›"„møÐÙÙÙ¹8¿Þ «6™hg$OO§î^ð4è"ª³"ŠÒÁãW6÷ñÅlΤ¾b;åH’Q2Ä8–îÖÛ¥ÐMDÓãE0èvîÔ+.x€È×>Ë×ô¼´/¢½‰D;+¢ÁËK/õ¨·U½ŠRŽ$I%ûLÄX™ƒ«U# âÔ0v…1³lîêùlÎMMß“é$Þ¨^ªò—›©ÊbþÆŽL‘ï£Cò€±1}ZJXÕ:1œu&yét&ÙNw®ú•çÐMIk_DÃß=‰ê0Y©7"¼¼üÒ&yA.0( ©«íɤÛ/G’¤ˆ’}&dóráLõÅ0éŽÞŒ*üæ—Jלš¥Ù,E¤2{3šˆêq Ü=Ò WMD‘LÆQ#ÁBélwnØ»·\^©©iAæhk7D4xyÙÒă—~?õ)Wí—#IRDI’$I’"J’$I’Q’$I’¤ˆ’$I’$I%I’$IŠ(Iî[VJ:)W9©"IŠ(I¶SÉ>òªÞÅZ¬Ý¸.^fèÞNŸƒùÊDw?¶l´_Ùê^zÁêElƒ$E”Œ}%ât*BÂ’ ²Š,Þ˜»'$ÝÛé3¾"Ú{mÙvvŸ5k~«ÞI•ÞFeK$)¢ä QÛ"mqã+¢Ý`´}dÛÙ}Ö^»DPÝu$)¢dìEÔ¶^aäþ¹Âˆ¾o¥ÚÜ*ÊΑ¶®Ëà{—ºs‡TáêjÏ,¼%GñÝý4Ú>²íì>k«]úâÁW†"IŠ(ƒî\t$bIq,Jgîû¨VÜõvÜ„Üê»sß9ÒO0Âí¾éÎÖtEš±¹›.„Ás¤Ÿ3¾»Ÿ†ßG6ú¯LŃVÊ…$³ ’QòDN,B ×,~£w"j¯®ß9ÒŒ°{ž´zDh^{€ÝZ‚çÈ}θì~ª?¦ÙG¶_é«1ãQßD\®¶+gK$)¢ä‰êÎG‰ù–è®´•â;p¦èÌÔëjð#MÁ»ûfØÑG,’®ïQ$Gû—›äÝOÝS™Ì}dÛù•­;“‰ «x$bK$)¢ä‰E”7.»ÆãˆedËæôƒïÙíHÔ”+ŒSbd4xŽ‚‹è ï~ꦹl;¿j5â.õ ±,["I%OàÄ"DTpŽè|Ó;þ‡ÈaäRØÉ¸Wð#Ýc¢Avß .¢úâ·à9 .¢ƒ¹ûi´}d£î>kqÇ‹1R ˆ_QÊl‰$E”<"ªÇmè6„ ÃSqãdèÕz#ÃÌÎõß}Ó;\iÃhœ™ßà9Šïî§Ñö‘mg÷Y÷R( ¾'JRDI’$I’"J’$I’Q’$I’¤ˆ¶Q ø“$I’äp²"zÌ?üðÃ?Cöé°ˆ2x'I’$‡ú«hQ’$I’¤ˆ’$I’$E”$I’$)¢$I’$I¥ˆ’$I’$E”$Ø  ©ceW¬‹uƒõqÃ2È~,$IRDI2–Ô…Çæ\Ø¥ÄÈ*–¤{~,ËnÊ0ÎVÛzó‘ìˆÂ² IŠ(IÆŠØ– ;Ã,æçŸÙ7Vþ1ر$Èî1Ad/’$)¢$9Ð]¸h_»ßý¾{`û&¬æfg­¶Eóßè ]Äú¦`js7– IRDI2&,ŒÜ?'[Ž£}¹ãK±ªM¶¦‹3íˆ(#Q’¤ˆ’äŠ(~E%IŠ(I5Ñ1¶;ÀQ’¤ˆ’äSâKLrO,‚S0É&„եתKQ’¤ˆ’äнâR¹{¦0â÷Š‹|Jk_}RZÓ›Èüi<‘Y­ßÚ_­ï¼üu÷@Ÿ4äQ¼‡Š«³H’"J’±ž©ûôÁzz,ûþ‹±ì)ã)5ùÄ ÛÑÄùG£‰íŸ¶7‚ˆèry¥¶\†”–Ö]i”g’$)¢$ûÎ^L#JURÓ© dr65}o6…8•w‰$)¢$IT¬1„._Þ’¤ˆ’$I’$E”"J’axª£ÞO’¤ˆ’$I’$E”7—$I’¤ˆRDI’$I²w"Š“’$I’ä00„ˆÚÖöÄ)H’$Ir8¹ï\ïúTýðçÏ뇙ä‡g3I†ð$I’$é&óøø÷ƒÊøEÔܘ$I’$É}ËîL "J)%I’$Éàòé#¢º”f’—Ng’•ñÞ«Œóö‘$I’ÃF( ÔPŸEÔBDMAå‡~øá‡Ÿáüè’iòÿ·7Å9*,Ø­IEND®B`‚pygtk2tutorial/figures/base.png0100644000117200001670000001443410050344475015760 0ustar finlayfcf‰PNG  IHDRÔäoÆâãIDATxÚí›ûW”×½ÆÁ61&FQî3܆¹À003ÜïF1rQ¯=1Is4—ÆäcÚxIAT¹Ã s!i›¿ ëütjÌj#艶iìZmV²LNz¯s¾{ïwÞya`Å$=ëyÖ³öú¾{Þ™ç㳿û}‡  ®àà`yœ³~´4((4((.((1 µÞ"akf™ãö¯Ÿ#s/«¹Ô±3ÍG+¬èh?Gr‹z¶÷»ý__Å?‘'‚‚t æ–ÊEäYO¼füä¹/ݽã½øçæ¦þ³¡þ|}ƒdQ74~$Ïȓǚ.44_ ‘Üxüã†f6sŒMÇ?bEóùnQk¹pìOÏ7òZ>¤¢éäGlþä±ÓNœo>u¡©•Æó'NÌ}áÔé òxÂ[ˇ';˜OœùHäSS}R<Ôyž=Ôùqk÷á“=ç%SílåµÒmýOsÇÀï»þ@c§í¢ðÛÅû¨t88Öyö¢p—ý“îÁ‹òáLþ¤Û16Õ{†ÇúmØòòmú€Ø§tgè]öŒ»ž;wçó¬{¾àŒóÁ7æÕèèèØÜ4::~øp{Cão/ÙûÈâ£?Z|tÑ£ïýˆÂ<.üîâ%ïÒ(û±'>¾¼9äè“!K—•êÐFò¡G—†Õ/ md£pD#sd=yY„ì÷–E7.‹®i ‹=¦>F…px\Sx¡ñl\× Õš&rXb#9\#\OŽÒ‹44F%±Q•Ôch¢‘—|<ÆØ¤N‘¬2ãEc\Zs¬¹Ym9F¦"Îr<Î|,ÞÒ”`mNH?omÖfœÒfž ë³OésZµ¹§ÉúœÓ†l6’“ó;’óÛ Ó|:¥è 9¹ø43¼N]uƲ¦ƒœV2Å©kÛ­e]ieÜg,¥™e ašµ7<žÑ±OÙÇté"YúÈf¯Ç.úÏOù¸çù\ÿú—˜9räÈtøêêêæ’”‚Q_G}ÃïaØÙƒÛƒí^< ;èÑÞ?n{téà£OÚd?²tàÑ'–„ >¶‚l£bIˆMöã¡SÖ/9ÂF~Re_mQ Ò¸<šmËc—ÇÐh[ásˆº/$n`E¼mE|?EÁ¦ ÕÚVèl4†ë#ô¶Hƒ=Ü`‹L¶…™#’¢“ít™Ü•Ô¯N±«RmQÌv²ÊD£fTæÁh‹{j•Å›q–Ÿ5Ÿ=Ÿí$'dkr4’ó\ yNM¾‹ ŸóºB—®Ø©-rh ]ÌT9 Å®ä5nneÁœZ:bZç6r›˜ÆRæ” 7·ÓTîL¯è×®ÿÖãùdì }Ƶu5ä#\þ5}âr-PžSsäp€çÖÖÖ °œã_Ï iމ*’ïPM-£fÁ‹ûg‹—Ú”Vp&ÑæsØàcaÒèƒ,¬)qÙO&ÔBm¶eQ69gƒËÔvA›ìxæåqäg}a‰Œ0a‚ŒYÇiKžnŽ¡–jL³sÈl‘iÌQiýªÔ~•…Ìh‹2Ûsiöøô!æ¬!V–sŠ9g™ÂQ$8•„i‹†t…CI«œ^¼|%­¦I— ÙKœ9g>W8R7¸,Uï[«Ü9UÝQ† <ù|s\ÅGO#wÇs{.˨ü¢pîØˆqø|S´hlì2?}‚ÃwžM‘jKVô/]ÑN~<¤W3âlÆ0{,¬I$˳%á"Ò„YÍ9“ñ‘Æ c!¾0㇠ý"É„Ež‘Ãô Âúy’ÙÈT°è2Ù…#M6‘g‘¦A…™”jæØ ;9!ûÏ3É™&Ó!8ÓæM 3NžçLÃSMWä¦ÂPâƒÌ¸––\â`5ë}9ÌøÈ8#ªg©.^0άÕXªÝÂéÕ#R±ÙmÝäÊÙÜ­6V)áóo¨äZ¹J$ÕÕPÏ7—¾K~Šò]æþ”M¾5Ôû/ m©öøÊ¶ëÿ𬈨y"¼å™’6ožÉ‰u3DBÍk_¡$S½LM6("Mx…f@^7eÔ(ÛD˜ÑºÉ#m8‹2ڕ̉$£ c–Pvc$«-g¥uÓ<Èóìl|¦C,šlÝäI&€“ÁâKç7K5¶n2SáP¤šÃ¸Z‚ŒÇ˜/Õd"ÃĘ\êN.c#EÚ”0ãy–Fœñ<#K´m¤gÆ–B-}³Ó²ÅIdëV—u»;w[w´‘%ßÅÑOgÃBfNbé¼?ø”Ï ñF>Äkkï/ù‚ä ÇþÃgh³¹,¢ñ‰0;[1Ã[¾þ§'4ú¥èwŸŒj Qu{Ý¢n Q·®Œ=½2¶}EL/™ŠÐØ“¡±l24¾-”ñ ma ­äЄ3+ºDFÓv«ô­*CKTRkDR[”±‹¬Jn'G&õF%÷ˆZmêgyÆ ãyf´©¼ýC÷gĽœÅ‹Î,‹¥ ¶„µùnÆY®“Z4_¤)8Ó¯’:3 6n©?£T3ùš3iR‹fZ?"¯›S²–Nož Úøèœ‰1ƒÛºÉ‘±Õ™¾Íåóvٺݑ³½K•R)÷|sɤÙà €?|‚Ÿi/N3ÊVoVøæ|µíM­çC¢ê)É–E „ª›¿¹á‰MØþõ Ïõz"âÞ£}(Û{Æ¿G‡×o0G&!°ÈTÐáWßz¢kWÆ·Eh;ÔúwÄ9_ÞðÄ$Õ«’NEzDž©'¿ºéÑ›^¡ñË›ž˜”£ñiKÍç7=ê´v²Æ\÷½ujG oÿ£y—&›>$¶¢-󥫇yæÒäù•x%{·R¤KFDg¦ˆ4wJéˆHµä§ùa™‹·hd©¥² [:yž1¼6ºÈ|õ„Q’É©ÆFóV§u;K5Ú²žq’sžuæqç<ë.z¶WmúNá£6ыĨ¸ò'ïpÅùòÎ7в;ßä#øZÚ/DÄ7‹ž,4®énxþqË£Ò¼•ðÖuV¤æèßzÔÚ=1úqú翺á‰ÐŸ מ$†â’_Ñ_g§Ú)Ò^©;uæ—S_#ãŒG#“ϰÍdKkùú–ç·=zËžDóz.†Œ½_ÜöÄZÛȺôƒ_ÞòhÒ;µ¸,få®SXëM2c¾mÊNS®EžKä¦w]3lzz†þŒ·hlÝ4–;XŒ•9˜+R‹æåŒy“Ô¢ñ¥ÓÉ5/œé[ÌJ¼xaå‘–ùŒ›œñŒ#û97Aæµ3ï§’sŸwиê§ÝÑ©•ÿûðáû ÿeWN\¬V^vYÈžïPMÛ‰ÓBãÅ> TÓBl©u¯†i~®©'€Ô†ý‘º–H}³:é­øä×òÍMÊЬN>}J}]“²?ÎX¯JîP§'¼ŒéϬ»ôÖÝ_I–Uj«¸´oi½~ËC´Å[â­ÍÄYJÖ›)Ùo|Úœ®ÄìΔÜ:šÔf÷à”[Nùº†´nÊyƒ¬¸œ!P—X=M3î7KG|ýY…ƒÙÛ¥™+Yû?5îŒM,ɨ'£H3ov‰cË­H²!n–g™;D¤¹óv0„óžwçdÌráÌ}ÁQ°ËÏMÅê]=1éUÿ\ øüO°ìÊ­ä4Lý·5>øh }ÉGð긑xŒ¶¡Z;EÁgØ©;eh#øâûÔ)­‰×ytat¨2žN4×Ð e- êÔN–m·=ßÜñv_Þf'kÓkb¬í*«=.ó\bF;ͤäÔætm_Üô¤åí£ÃÏoyØ¥Ú‚Óô”ÔÂwôù½¾^ͯ?WÔhÅô¿º!sfR@–Zê]šÌ–tc½KîÏ|K§·Kœ‰þLDµh™[\Þ c+¦ì¬gÜ‚3²Üç\/FÛóiÜŒ3…² _v¾ì,xÉQòR¯ÚºÁwéÓ¹îC/€OFGÔà›~þì.Lò^ûdŒ–ݶ“b ÍáºHƒ"íÞ™©-*c+϶×4¦}Ä ±gnÔY÷C1–VUZg¼¹>Ñ|Èþ â/ÖÒAK'Ã+ë-]æ1mÆ)CNƒ!÷xbö€èÏô9gˆÚ´ü7 ú‚ ¼´Âšä‚VCA;ñGõõ;sñ;IE=rªÑöS´häiýÙ”]'7k×JI¬'s‹ÕSNµ´rnÅ®SaY¥ØuòÚá˳m.¶3ðîØÒ¹ÃÛ¢í`©–»Ã!"-ÿ—/ÌäHÛ9 {q$ mÃÅ/»Š^"àœ4®þÙˆðS¯ºÖ¼6R¾{@›Uõíà“/¸N>%|Êä›qÙtŠsÄÝáK£—å犧‚ŒÎI+éHY3h\ãH)éÏ\ûÞw<–’6"Ï´nX¹ßœvW@Z:ËX‹–Væ»+ _Ú횸ZKÍ·2Þ¢¹}]áµMröŽÑ¢å>7’çM5¶z*û³Ì|fêÒÉ8+Üé,Ø9DxÉyFx­þ™‹GË3/[J;×¾1²fïÌ{]ä§ßt®ßÓ§Ï­ž;|ÊûÔryì¿ >ÿK-z‡ctì Á×Öÿ1±%î ¨,½´3Ðe6²j 9õ‰9}qYìš-Äœ1÷]}î ùzr¾p‡!¿G›V_j*nÒöqæºRKzdŸßñd=}(kí;ÖµÍÆµý”a©ë†-ëz³Jýý®'mÝ€÷®€´n*ïAˇMë‚32™3yéý™DÛ´þÌ›jbËIö¶h"ÕÜœ°)‘Æzµ~ý™—¶—%ÎÈ"ϲiyF.ÙÍLœ=ý†Kò†%o8pûF$¿å"¯Ûçªzk@›·1@ÏçÿÝ‘…ºÈ¿ëÉ)û¥µ´=µtÀX:l,2—õe”wüí®'£¢Í\n—·iëÝÊþÌ›gNùúßHÒÌ›Y&q¶Í•ÉÌÂLqm8ÇÛŸåy·œ3î:©?[μ.¿uS¢ÍÛ¢1ÎJvSž¬ÞíRæYÉë.9Ƙ¥Ts ,n†Ú:Pöó‘õûµáÀ¯+JÞ´HëM¾Úº#DRàoš°¯ˆÌß”o¸\µ8Ÿìßlßj‘§eä\çãðuÚþ Ï9MäirÝÊòi³Éw~¯3±pX¾+ Üu²mÁÔ»ò~“€#Ȳ*ZÌå6)Ò*†Ì½%ò֟ɬî˨æ©ö¾¸¹î´éý™E\ES$™¼Èø7-2åÆSy ÍÛŸ±1_"lJ°å¿èCMŽ´UÜ«‰³×§,šb¤ “òl¯4rK¨É©Vú¶›8[÷‹‘ò¿bøÆÊƒ¿ä­?ôò†Ã’·tè |ð‰¬üí’š#‡gûÖ‰ QRWWG›ƒ#ïÔú“EÔì!±{à¯/à ü­å»J¾_T&-»g/ÒT“?Âï ŒaìëŠ ¶ò]y³)îAé×8ù–óý™¾¸áô»Ë9DØY*m´ÁdU@„eV;2ªÏ’Ó7ã`É÷Ü3\Eó¦šuÛ9ï]·¢?sKWÑžóÛr*Z4l„×N7kÑvQŒ¹‹_tÓêù¢ã)iËéò¶hSº´Õ»¢E“ÍÍ7FÄJZú&Ï3¶hRž±¾8+Ûç®Üÿë ç¬ü /Ûj‡?”\ók¹¨<ò!yËáa]¾´á `›ñ£TN*ëy­~Òu¾ˆO{—ÀüÌ ß´«‚n3øŽ´tŸû©¸‘š³ä¢Ž”U]æ’Þ´’®Ô54¦­é!§®9CûëºnîNK)¹››ÕéåÝÜÜRm©èÈÜЕSÕSÕ+ÆÜ곪»s6wçm"÷rózsgî–®¼­Ý¹Û|ÎÙÚ•»¹à™^á¢g{W=;P¼£·øÙîâçzV=ßK~êùnn*zWý´›\²«õÎ>æ]=4®Å®ž’—ú¼î-}e@xÝ+½å¯ÚËwW¼*ÜW¾»oÃظû×ïéãú×ûh+°þÍrÅÞ~QTî¨Úg߸¯¿úís›öŸ¥SŒ[œÛúöÙ-ûÏn;à $Û|ˆñÀ‘{IŽS 嚺† [^‰Hx:4a£pX<¹24¡2L³1LSE÷zrxb%9L;Ý4eØ­'Wso‡ªdr5ê¤j¹VZÄGc•thªV›6NsL 3¯+½£ä8suŒecÙ\-jn¹`%¤Wk¬Õ –*uÙ›µY›È‰™Õ¢ÐfUyGf×âPŸ³‰vÔ~QÁF^Ïì¼ì„‚j]Áf]Aµ>3Õ>ço–ç …›ô…[X]°Ñ´z«×ÛõV"/kUÙ.]©¡èHÿ—F¥’/©þós¬§-ßòëÐËx®rç1CòÍçLñ¿!Z´,(h%ÿ»••>‡NŸ ààAA!ÞóCîßÁ˦;ˆ[9³h¹·ðZyè«—/å!%¼L*‚ç3.z‚9x–:°´„yÖè¡Å|ô7Í?¼Hú˜´°µô§Cóyn ¯Ñ³«‚ÁÁsÐø$óÄäÇ'®O|veâ³ññ¿P!<1ùç+lò/|d¦™«Òä Ÿ¿•O§WŸå•¯øìï™°É?‘Ç'd& 1ùéýâºzí3yóòxuü4Òiâu”“ô,Vû=:ÛùJ‹ç^™¼æ¯¯±erbrr’}Rãã3~‚âÑÔ$×0üÞN>Ay pÊWªä?î ÃyÀ7Ãïp•ÛwÚ=ú9½ÝLÿ‚òÏ0ãËÎøè´×Qž#šúóLù]îûç¼ç¿áB¡0Û?ìªq®yÓÀOWÂ7ë²{¯·¸÷G2ù¿ÂLÐÈowmâ&úM'Ç' ¹è»ƒï¾?Àøš…QàW~xïûCEùšüŸð_ëwÿ—„ï‡ù¾ß+|€oÖÿ‘³ÏÜŸæÝø?À³æû;~ºêEöð=ø&'®NÞ'Fÿá» ø/‚ì£z8KÃÕ©»k³-Lçgƒ›À÷Pò ðýàრÀ>|àƒàƒøø ÀA€|ø ÀA€|ø ÀA€|ø À>À>ð>ðA€‚ø ðA€‚ø ðA€‚ø Àø À>À>ðAàƒ>ðAàƒ>ðAàƒ>ðA€ðA€|€|àƒ À>|àƒ À>|àƒ À>ð>ðA€ðA€|€|àƒ À>|àƒ À>|àƒ À>ð>ðA€ðA€|ø ÀA€|ø ÀA€|ø À>À>ð>ðA€ðA€|ø ÀA€|ø ÀA€|ø À>À>ð>ðA€‚ø ðA€‚ø ðA€‚ø ðA€|€|à|àƒ>ðAàƒ>ðAàƒ>ðA€ðA€|€|àƒ À>|àƒ À>|àƒ À>|àƒàƒøø ÀA€|ø ÀA€|ø ÀA€|à|àƒàƒŠ&''ô¯“|ãããø—‚\ÁÁÁÓá£)$ô='ßèè(àƒVÊU=ôÃîù h¡DMòððAÐw ï†#h‘ç.àƒ¾#^ºH|Ð÷ߨåQß²+bPVmm-ëjÈÒ jÔ ]ÏÐúf‚¹¥)Ô¨¾þ?›#̆ üŒIEND®B`‚pygtk2tutorial/figures/fontbutton.png0100644000117200001670000017205210112032716017240 0ustar finlayfcf‰PNG  IHDRÉ­¢¨Ä) pHYsKJòk{€IDATxÚìy|ÅõÀ'!Ç:„_äpT2¤Xn –Zh$®x ¥¬CÛÈ6r¸,sY¦„XåˆÅ ʱ´ÈᨠX†B$J‰…X´/¥™rH)‡”–Ô2Gc•#Þ”o.üûãy£•W»^ù’¼ïç”ÙÙ7ÇÎî¾}óæÍ[¼šÑQ ÙCˆÀ‘édŠÙû!)ú“§9ž ‚ ‚Lô‘cÎctð[ঙy”bö~F17íHÓ.S~hJrùò£ÙÏS”äh©çðÛ¢\·‘”¢”SKºÒoiþ)¢Úš>Ì{º×Šªjÿ‡ýýÚ;bxÄêßþe¬ÞÒtÒí–¦±. AAò¾ïƇ)S¦;e üÖGŽ9ÏfWR¹ÔÕGuÅT]Zö£¹HS:W{)ÃSjÕÛ¢$_»ò=’φµ’@aíÛ¸ã¾ÙNÙ³‰B¦/È­áCŸ•o^“©âãŒT®ÝŠ ‚ “…¤ÐýAR0ÙJWšl#“4¼7òèJK†'SZŸ‘ÔmÏ&B¨rÝ™T9üTXuåUáÙJ•$¨©}Úd–í·Zþá)š¹+ôÙÏʶªÞÛSô‘c®ctà з±÷ñì ëØ’ÿ›CµA9Ù³—¤ðŸdR0پŌTmE´’zþ”ÌKÌAó©ò Ê!„Üh9ÈÏ ëHÐ25¯¥O´Ë^Ý eêðº2ßìÙKH¯ç³—z=ù® ‚ ‚haú´|ב*@ð[n ”ÅQŠ4Eš_š>¸e ê’¥çÊë3¸t¥ßÙòKÊûD©žê}¢$G­ô¡êŸÅ·•r !ù²³¢µõh£‘R¿±áä¯á6Whc›‹½·bõž±zmöÅn›}ükî­½ïeom![¸¦uê/}Þ©ÏW"‚ ŸL'éÄúD!`^_0ï\G|Ù:G|të $SK) iXלü˜uŽ-^«z´{‹æb;¬Âæ¾Pi$¥k©›º#zéZúm´,¸ò<ÓÄnÝ÷ñPÝÑæzææ6ü®ô-½«Ò7²ü{ö"UR®Ÿ8Bv«Èäø—÷q<(¬uUËO¬«"U3Ž'U³{šÀ1£‡Þšè¡®ÿ3RG¯„’]3…’^ÏW†^Pµ»U¨›rw¿+pFªø|±\¥ú ‚ šB œð|ú;øm8ÚÈå+•¸g/!Ä<ðohÑ%Ôë#ÕPO+}K6׆[²çZ3ɬí`[&ü–+pZ”6iº\ùS’ÝÛU{é¹x²J[[zæ5Uª›R{ÕciQg¥êïT-ÃK>ŒÄjÃËCV.A^Ïggöz(æ°Ç(¦€)Ð0Ì!ú‚1TX€¹­.`n½°¥=4Öee–ûÔgs{hãŸ2ËÍW}AÑF®ÀIQzK*å”§ËÕSõG %Éêõɨªr…5÷Ò Qž’–æÈžSYiSwÈnÍL‘ÿÎ>M?TNu•Wšž½uÙâhé7-nêÎÙ¯Ef!„ü!7qCùMgdËvÈTB§nîHœ*?–8õ_/'N5¿1ÿ‡æ7ùúëlß@RÌoϘߙRùü^~¿÷°;ò°•Îms=óD›‹ßËëø½{“»ìMF¬¯±ÒѲcéhÔ댺ᇸkÿÆr×&Âï;ar) ·"†y†ˆTš·ö7Œ·6ê~÷¬¨ûÈÀÜ]GXßøÃ•¯Ïz£rš±`ù4£!rT—!Òj¿¾=ôùŸõ|þ´\“ÍÄ›l±›vÅvL3ÎÜ4Í8Í8å¨iÆ€yý¥sRè*M Ç=õÍß÷ÔôßQÇMÿXî½õÖFÝïßuŸÚfýé©mî ¶Ôø‚-|¥ð¯…Ð"±ÜíO~þÁÞ¤À‹å&…îåIaǼÿݲcž¼>‰SÉÄ©b?üewm"üïÇarÛ¾ÙûêûWÔ}dàÈ·•û¨"•3Í8íSå~€v=wØŸï~î0Cä¿2D §é¾S8ðÈŠX_{+b}1¶qí‹1ël cMA vÌÛvÏŽy…Ó//ܯª‚oÆCdƤCÌKJ9Ò¥,çë¯Å7ûðZg~ôÈüÆP5Z‚’Ö¡„hgUëIÐ4îüí¦‡;§çþp^OZQÛ›”æÜ›œz¨˜2ø·¨ZIÓANú¨øþ>7ÛQ¹éYê¥(­ñ—×V^böÖež+í¥ž‘öäà6fæ—÷Þ4ã×;§Ó5T’/ž¥iP©Þ‡úšsŸÀ)KÐúg³3GˆÞ«3sÅ8õ—ÏqêAaåø¿ìáx{ÔOt¬#^ÙìˆëØÂoëXHºß;;êt±n#DྼLà8ž{‡ãÍ6ãñf›Àíš)pë_oˆX!£;„IË-duß+d!]àúº.)toI FÊx‡‘ê¡?ßÕCsü߸Á›5L»M[{ÓÀè žb¹Uï;õ6û⻳õCRHîL ™ýpÁ‘ޏŽÕ¥c9þo Ùûê¿kfºJŸÈÖZ¸}w î‡ÔÍ™ý`¶}çóÀúÙxøý7ãa©„¨û½Q·Åk©°xµ—‹ 2y˜~¹,%G÷%«êhomå¿KîÌL‹ÒµåL;(º=ÈúJ¾àiðQ唡'ÍÕÏÕvÒµXdÕƒR©/±Úš«lyU+QÝÒ,。oI™*ž¶{šÀ©ÿ­°WÜS‘ó²§ ûé{*}¢œ~j°dðgUg×fB ˜9‹ÓÎ3ž$ǘ;ÖPÅÝé‡1:C¤ÈdˆHÕܘûÓbYÔ5Pûªâ•߯Š3ºò›¤€Ò¦^n¦œCn¦˜JŸí”JŸÍ~Æ—6;¨›IáÃ%…Ì2÷Þ–½»/ÜÞ]¦óC!û« ÙÌÒµôCº>Úúáô=ƒû!]«l¿ÕûÌ~]È™ÿëœD¤ÅÛNUX«×Rfõj/WLW?ªž¢„\²ú¹ê9µŸ;<™Ãëí59ØúGûˆ:8û'ךœý“=]Ë;Wù/¼IåïÓ‘ÿM¿‘µÕ!2íüW˪Ò}•y–šª$õòTJI«•Jkö¥eeKW?*÷‘•+²êª­\ùÓÚ®lÑäòÕKÌ®ÈåB äH“oë`´+¯öEÎÜÕÜLà†ŸY:8=­äõz¾Šˆa°¤*]CEµ¯×³ýGÙCeÍx2›b*¢Vn6f–fJ룶–ª—+=šå~H×'—~ÈÞ:å+¢ÔÓn­¹ÒfÛ·ßNÛ\·œÇ܉#bnizfYêåBºü¨\‚RË‘ž«¥Jµ•—«ôjToRžáõºº€ý#Ïýƒãg$Ïy/©‘ºÿÀ¥JûߤðŸÕƒ %“hÑèæTBêÓ©Ý.(]P%M‘þÖ®¤ÊZÉ‘+²J˿ԽT‡nW6[òð‚U)UZ˜¥EÂ0¦Óû¸í/¤ËM×-³Üt)b~õrÕª÷ƒ´>Ò~ J}(í‡>¾+¯¼\“ÍôS1Ô6ÇwVr<¸X¼'-Îî 4Ôë&ê¯C-¨¿~”^oJ/BõõÒ•Zšk[°´KÃþ‘KÃñ£Þ^%ÅzÏ£CI‘;Pi!ÞÔ›ûYljèž ežòªe‚[š3ý[Ù©ÅΪT®úYÚSÔ‚X©Ë{g¶–*©¶êŽZ~©[aåKÇü@ú¸}©>vÁ4 ùI=C¡ç^  ›ý'çØì9KóB<¢¢Cô„ÒÇKާS‚ÿˆ¨™Ü'>erGÈ«þáø—ßáx«pj»Uˆ†Þ˜ B%ÄdûöÏL¶>oßç$ŸfÊ()5ãI’"d×eé>Ù#„JÍœF¥À¾ƒõ‘oüHë³û"1(UÂÚunÂJܤƒ¸Ô±³”´]TjæÇTJô%í¸›ã“æž=I³àÙu¦°_Ñ„rwS„P©™»Äüb¹…‡é#òú@#äšûdëÏlýé»; i¶Ú<¿®j¹¾®*SŽ´LX‰›Ðé~H÷§Ž|â#…æ9Bs/Ù~Y/1RÅ)Š™rÅô1}Çö1âuß—"z#ëØ#˳»“Bf”BÈ ¨Ãþ!„lBf[Òe)¥ËK™òÊËRj¥(å—æ‘–•kÿH{CK ööö¼ty«å5—¦Häx¦_N<êoI!´ûDa˜Äá½Í3Kïÿ©ÊUÎðÎR’CÈé")ž›ý'õâ:©Ö‘CÛ=ÿÈP›µÊCA©y‹*…‘Rh¥-|•<§–”ìa¹”m¨J–NµÐTêr†êaõRÔST¬­p£Jÿf? ªªÍ~îÙé€ÿòsår”$K™! uÔâµ¼jñÒÑSgÑQÞÓûOÞÓæúÃém.ø éïÂc,^-Ò²µqF!t´l6Ï6×3ú6ïéíá=ÒIpVuÇΈºM¶ãŸ7ÙÊ¢'¯,*Jž!bõžºÂê…³âáä¿âᲨÅ[…^™åBýÁ¯Óå>ÿP›‹÷|UÌ{äõ1RÆC=Ã9t? ù:Ý. ³â/î‡tFêø_‰g­^ËL«7³õë¥eœ ÔPúB¥_NòùøÌòB•¡tT^–z ¥ý#m‘¼Ãë‡ß²VJ‘ª Ø?Ø?Ø?’%rr}³(µ+ýN4ÙŽwå¾õk¶³ÔßàJ¿÷$EÕ0Ûß¶dKMµv)—(Õ(ÏÏÜ<t ¹Ö‘-zߦÑî dI•æKUöì”KÐð_}ÑUöµ…åÒîJiï.õÅ[ê=,õd•÷žº¯íÀ.Y];ÿ}s×N1Qú¸ÉøÒ• ½•ŽªKHçä=ÿíå=:¶Ð c•%«ËQÊ3òí½!— Ô?Ã+EI²Üš˜ñPYÔ{X½ç³×­9øÐ;ÍAP¾zǧ>ÛYƒ%‡Cz>ź*~‘»*ž{ÛµçÑrݵ§çÚ‡êrr]êé¹¶bäwööÏÁÐ?#yþ¤“‡ø¾S— •£¥]¹Ö9׫<’:hïá\ß_ZFNºç¥»dIŽîNTƒ%gSÕ*…µÊmw+åM”6JI»ÒJêp÷Ó’?«µU~ù•òZn3)J (LâÈÏ‚tu¤jÜÀ_ùrÉpT.Gš_. Ôàt¥r³|}ªž%­Õ€-A&Gz4K¹TnéÒºIû3ËUPhQZNRè:6)$…îc“‚îJ©þ꽚qT6~”F‚¼]¹¦+]_¥*.-×]±½ƉRºÒÝ¡®pŒ]ÿ(µWéîSʯ%]Þê­˜ýsðŒ©%ùêO¡±?ZF¯ÒST©Ÿ©ÕVÞÆ,ÊœB?+¥ž_n3Ö"_ uÝ WäVmi‹´[²ÕO£g_á.ͯ¾"~¨²´Ç¢U@‹'«–åeJ­“×_é,ù25¥µô¤Rþýj«ÒÀ•A¥<Û(‘O?É}¤äÈ•iŠTN®éR™Ú󝿣{V†òª¡F3Ñýp:£ctemŒN¹EéüתÀë‚ÉV›lÃ-]ý*héá±îõë5Z×}ìäŒuÿŒu{ÇZ>ŽŸÑ?r9Jò•îåÑmïXÈ ú¶UJWz ««žYœ"4¼ëµÔ9×v ÏõK{ÿ¨÷•2ò@Qòî™G•¦¿•‚LIkÝÝ*[­räî Úv·RŠó*UL³‡ÖR>KkYÊKµ¤G÷«­¹}d¢ÕD?dºìa'}À)ùåꓤŽúòõ¥bÿ”i•£¥½ZÊ’Ëž¯5Ýd+5™lFªäC#•íe#Ï?o¥ÉfñZçöµÞUV¿.J×H®ŒEÿ¨3Z×}¬åŒEÿŒO{ÇG>Žu9¹¶W~®4].aìÚ;vò•Ì=JÊ–º­QI±Óâ¶1D[T'âµçÑâ°¡]ŽRº\ÚÐfµ¡ý;•c *å^ ~¥œZ¶EzÃXi}”-¯Z$ =@¹oå‘ÔsÊø¶zkšÞñÖAAwký‰îVðmU÷ïÌnÿ*€<§´x²j/]^uwBÉ´(«—¨Ýk6»i­Ô=n³ýP[ûûû?ìïO•õü>•ñMAšÊ¢ ÏÄÍ6'?Æ‚ù÷›*ò] A}¦L™rì”)Ò' ¥U‰êMU ©V¿?'.Ÿ{öòò¹úÈ1ç1:íË›”ÈM Ó¶Ä*{)#[¶•k•–CÖ²ª‘”•ãNÈÈä'Ù·åšD{¾k ‚ £Ç¿¼ãµçWRÚr]?ôþRJËžrIÑ’.-EI]VW"•b¸ªÇvUW͵ÄmU»FÙÎæ.Y‚ ‚ “¥CÚ=5•öš’UZ¤¥Å@Š<={¥-g‡Ú:5W?]¥­ä¥(-·R_†%σj+‚ ‚ ê;6eW ³)¸ÙB ¥2ªo:ëVZ¶lU:ª´{VvÉJjw¶ÅjZ¶rÈ.9›õZšgHµuæ-Cå@A™,()‘é帧r¤ÚR'å0Rr”¢ ÈKQ²¶fW‚•­¡ÙÕñlGÕÔnå}´ï}¥žž“µu×Cå@Aä@¼Esõ\¨m”šMKJáÓjs*¨–vk«|#u¥MÔ#ÔJ[«Ôjµ~Èå·’…AÉ‚Óp…¯Î‘ïZŒJVR5kb¶t¹´¡Ãûg“¬e—,u;«Ò¿RmµÛMŸ«liVD«}y„W\’… ‚ ÈAŠ’ª¤æ-ªm[×Á+ë•\iÊH¼ZÕk¥¶ÔI]eT—©^n¶RrÛ ›ÿ1ª­‚ ‚t¨M‚†‡«k®ú’)-›d?7³VÚu)Õ_ÞÒì. ÚJºÕÊ‘\QmEQ€÷l÷4»ÇŸJ É[“šwÞFñ‚÷|þ ï¸]¯h‹›8ÜR¶ë޽|¾Û{p°—'d¬¯éºÅQž_iY•ºJ*•©>}/¯ÛàR²Õb…U’£¾L{H/µy»ä Å䡸2m·è$€ £FsðÁý©¦Ú{Ú›j›jïßÜßò÷ò„„\Ïl ¹<Ý·žêéæø¿„"Ö|÷ ’bîØbîʵKT¹–ÞÄ<ÄÌM ÿjíϪªé¡›/5;‹˜¹?jeæ¦è1Þ“ïÖ¨ìå i,¹ûܦڒY¦¿˜—¸[¯ëq·æ»V“ %EJ}â[š[.S]%ÕªÔf«a®ñ”ä+y¬fWÜ•‚Rek’¹Š¯Ö.õÍ0n+2I[N8ôâ–á®oËØDáÄ%‰°ø÷Ýsa¥³Ô:õ—Qå÷7^–Pj‹®xÐY±þÝu§èÿžÍ{¬^K7d>¨ñ§Zü)O÷mI¶¤mÅ3/¶­ˆoxçÏÑ•&Û Ï™l£UJ"ü/’|Á‡fùSþ­¿}°y]tåßí‘úˆî, öÝ|÷Ä<»›´³ˆÑ+‹víüàgñ ¾uk/ô­ƒ<ØçZкQªRl×\ÃH)+µZÔ·ÿ––¨eÑ•ü¨ÒB4-«är´Ä@ËQúj+2"à1êé¾ÍÅ–Xל¢7•Ì:îYóø )òÇ(([p–yɉ?¶®ñ§~»ÂŸR’vD°.ЛÎ8ÞÔTÛÔÒT몾ö|wkùÜßT±¬bÙOçU®Û’\NRøàê¤%º[olötûSþÉŸrl¾ìg΢ŠeçÚ+×òž¯ê³©›Mµ¿65Õ:6×^æ,Rê}äˆ5†ü6ÙL[†«ÍOµ‡\•k/ü±zþº[oèË´¦@‹lË~º¤rm}ËÍ7{º¼5w±Å-[nô­Ó±søld´Ž|¸FËÎ9µbÙH&Çáó l– Sz7Ñ›ÎÜÍÌÕ"§ÓÚ9/bm,¹ë”¦Z»ïÂ[í¾±è¸¯›/96»ª–ïtê)fæ™â¨ƒK°ïÂý>ukà*Ã] O¸ÍÁÖjüƒC5Õþê'ÞZÞÃÉ{Ê¢eÓQéÑ£ÏÇu‹  ¾,ihŸWéQyéÊG•"¨o+ ¥tõ`Uj1Sågeº ¨ÇÁU± e‘Z[‘Q^Z®ê«_t·Z½ßû™ÙæßúÐ}Íë|ëø®·F)²é#lñ'²Å:öˆ¥:Vz®>¢o5D ˜m„\ßUgõžò^¦u^ ŽÍ—~×Yd²ÍÀd³ÙË“Œò×·\[[Wå[wß¼5íëŸ[ܶ")$ÍIÁY´üÚºj©°’6–xkªe‹oóyºà,¶øŽ7ØbÈc¤J^7ReÑ…gZ¼òs›ƒÜåO²º7 Y¢(ðÛîûé·mví=s'.I„]ÕWÿÉU­õ(ýÝ{þ­‘Ürn›Åûb“-äzæÏáP8ô–pÎòtßéðt)ã™FÊd;ž©|ˆƒPœE?¿ª®šŽÒ×ÒѶ™Ò@é£7J ™¦Ë]&8uxºo¿—-¡£'[½ž®›—Õ·Ô·\_Qß"–»5œ¢Õ½ÁǺ®úÚûÅœ ûYÌ0j44þTë* F ÜÑ™5éý'ï1D C„='ŒÍµk@¯Š_P!ªþðd««ªitêÝY‡dë[¸OG[©ÝË0¯ÿAÈe³ÿøŒlåòž¯º'ŸÚc…jßUž_}e}öá7¤Ã·~®’'ð Ñ>É"µ…(ý…/õ‰SçÑÂÝÚð–§»¡ë¦Cê[ì¾¥‹ì>‹×òW‹×H•>n²™m%MFÊfÿÑ|åWfÄú÷i17ÅåŸgZg•ëÙ߇\m+~x ´®êêp]UUü¢+q:zJ¹Õ #PÌßåWöLu·Þð7O7ü6RÅWè#r…r´àøWãx:ºpE¦ÍU>)õ‘y×MÆÛ±Iàáøoa:Zöy¶öðîsU_ýž»µ-¤F¯Õ1÷»çÆÜðÑÎèÎØ‘í®¯Š/]”¿>‡§øÖà ˜’& ÎTÜzª§ÛºÆò7qN©±ä޶d<ë,E)X•úâ$uEV}º<{žlµRú­eIÖÐ+úµld0TÀ,%ɹ)¦Ù6Ë•«Â9¨­Mµ÷]ЄÒfÿÑFÖ ®‰Æ7pÛ^<º}½SïH:âC &å%¨J‰ð–¹¹,Yð­[sŒ·|Œä¥_ê§Î#^´ÏÂñ†HQyæÃÑÓ}ó5žîú–•î% ð؂ףûáu™¯o­oŸ/¨cç~­c¥~x1÷Û·ÅÜ`•ª`ý[”Ý÷³ÞLKg§õ­Å1wŠî©JeL™%…Íí£&[)›©¶6Õú®l:õÕuÄ)æ[¡˜™gd¿Qw½"pm®gžhsyºnš]¯Øj)ð±®Þš_Õ±ÅÒ V)&›ùN“-¼þ¹ŽÐ Pˆ#Ö7O_tôÔYÊ/Qdt šÛ^ ¹’BפÀè˜=£ñÁÐXr÷¾¦Z‹÷´³-Y|‘9þCÄ*ÕI!õh¶É_ðd•:¨”EËŒc36à“/Þ¼*)ÐÑÓ"E/j¥Q=¹ˆXßêJ0Ó-ʽu¿Û•‹Ÿâ öŒž1Œ¬îœ¯>ï¡?^ÓC3º³:Ü#J9=Ý¿<Ž-I îè¡# ^Y^×Uñ‹¯wÄǧ¶êŠ‘š§deÌeº\ÝVš¢®˜ªGPo¯TŽºõW‹â«$YK¨[p‡·Ô‚æ`óEÍA˜´rêkzQu˜¦§}mösN¶Ù¥–3°8vZ{ÊÓ!^äà ßjJéàÅþF¾_à)/ ¾Áo Rj‹®lp L(C:üvý|µ³¨±dµa´¿ü@á“ú®AÍÁkstë,öðë¯dóõ ):ýâ ‡žûTœ¶–Na«?X#ÖÎ/Ò¯ïïË|ýÇܱy1·|R>êÞtRÔ]-Û!ÚMAe¬o½ñuO7£cÞdtž®†{<]Ò³@ým½°¾=”y-º÷‡©2ÛL‹µÇ€:uoÍèÎ>‚Ñ Ü¾; )dç¬Éö1Ö|p­?ån¹ö¯®*-–-¸›Ü­+;Ý­lñš…Þõ׌hy³XTÓ#ÖW_`â«q/OHÐüä#sùܳdæ†\ÏÝÉ¥¥Vî‹ £Ñӽ꿢­N¼¦/náxX‡.]÷ Ì®¸[W¾®¼Š®øC)à‘¬Ü37mõtKgo2ëóò>އt¸ÓA]=¤Ÿ|$`†¶ƒ½<€¥`öJ!9Òj?¢Íe²™a²I¯ÈH€Ï¿D8Ví>X_ëçøJßRªràÓ·‡þà™-•N뫳#V›½¼ÑÁ- *+XZz[d/O1ð†g¬uÍÉY×À1‹×º.Ó½žàé+÷5w(K>WGéÙ ù¥W_Lý =JŸKùÒü0‡wbî7:ÓŠÝ™j:8fÀݵ—„C0óãOýnGÀ å®p–ö;1êþ».b¥£e'g»¦ê}ˆwâZ¼‡×J8õ?_«ì8!¶úógxOÈÕöFÈåérÏw·PÌìâÓOû<ÕÈQ_ï¯uÑ•²ò'M—üz‡­¡öÄ’ËÏ.G›'î`™Êª¹vÉC×G9–z‰šÔÖˆõbñ6¨ô{e.~{"»îÔ–4·ý_È(}ìYÿVéQLoyÌ¿ÕHÏ6RŽÍ—8‹œzçN=¬]õoõ-k^çn½a‡§[;“-¹û›ÞZ§þrÖ©o[ñ‡5Rñ…ñp ôwqÿVÈéßúÛUþ­ ]«z2 ‘ãØ|™ÇYd¤ŒŒ‘‚ïËðú?nh[J–ÀMBKï±%«Ïo,¡£g>ÀèL¶á<¦;­oßsà ^W®j÷ÏÝ­ÿ—îNkRè~$EË_®àzQ¹ÖñwÇf§Þ1Õ‡»&PÚzqËVhc…ýœ“mvPh`v%äzòé€9æ~oE"\ÈvÅÀ µ=ôçŸr|Ìýö«17=cG¶W)¼>ÁûÙ©¯YíÔ×U-?Ü©—GZ%¸®úÚ{Ü­ž®›ÿán±ûìÇÙ}I!ùJR€úÀ§]Àüè[þ”=÷f{(E§Z{hP:­éî´6óomÝë¡Ôqˆ=,ªìž=žn“íøæ\z^ùà˜AGË,£gÅ„ûˆã_y!b•.çÝ~ybÀâéIaëTñ£jÅ–ÜUÇ–xkî)mª‰X;-ñVïÉ3³ÕS½·¥9¡ç+×Vï«\k¤NyÏHqÛ^ì ¯‡OD‹÷¤3,^¸ã¤‹,›ƒåO-j*\Á¦Ú{¯iª…+hõZk\¸:ï Ï‹O~èPd›jï+n¹sh±Ž…‰æ¦ÚÛ’ÍA¥¼§÷å^¨ãAóïo ¹ ¿Å{Ê{–aÆÖˆX;çE¬à¨#ÿ4í¡?z°‡ÖGô5†ˆ8ƒtÖJFg¶o2RŒî¿¦£Òç’x'žÿŠÚ¸x~æ{6æ~¿;–:;©÷yæ¹Ò;ñ’ëÅ;q´Æp.==A4Xpü›'D¬â‡Ði!z“Ôð‘/Ô¦ì‡ Ñ¯îɪ®,jÆ:ô‚§l5T_n¥=2«T²út¿¼uj6Zåy‰šÔÖ^ÏW†Þ¿ÉázJͼE[z}K}m}‹ÉfzÜd“Þêb:ø8¾Q,zù)ÃÓ†<NH œ>rÄ):¶Óúú ¯°‡1ºÚé¨ÔÌ{vÄzGäêª^ù‰»UîÕêØ|ÉßEëX=a"ÛUum¥«JÚŸŽ¸cŠ#Þæúã_2-‚#©3¬3‹å “Ûö—/¹m6ûâù6;X5ÄÉÓ3× 5y*¾ôgëX¹Xô¥þD¥<æÞ´ß~PÀPÅˤ*}¯TØ¡”ʲûνÕf—Ûx8±%[,XΚjXÌ–8õ×áˆC¥6Š™}uú»…ï„æ [|çþ¥]ê€ò½ p¼#~Agî®#ð ‡~î¡S÷РLÃ"3“í[!#e²Í¿!s‰ Ô¶®zåëuÕN½ãðª¸T™‹ºÛÄiͲè)ïÒQ8·¾åÚ§êªô‘cÿc¤à(L€zº~¹ÙÓUaÿñÅ«ÌèÎø2óŠƒ/ ,sê/{¼*33uU+‚uUð!ÍYW½âIWµ»åšuUCÍ¢˜Døÿйá“êÓÐuÓsõ-tôäÛé(Ô§eë£7‹Ÿj‘¯Ìà¶d}İÁatÌœÌZq|äÝÈþ%5›œ˜;~‹èRR=í™á*@r<]· ž.n[û”ðzér®pèÕÃ8žÑýà¢Ò­NÑ=sDw—¦Ú¦ ½µN}Íꪠ‡9þo—r¼¨`9/Ó¬¥·¥ù몯úÄUm³/ži³3:Ë_E¯ë^Ïö•½«wÁå¢r©c /-daÉ£Éfú»ÉV¥W•E¥sâ<és‹×âýîZ“MútŠX£_H®Î4ñêèXÝY:®2=m¯eÀÓ·‡îÑ÷Ðlñ­/²ÅŒî,šÑÁ€Ž-<«…¨ äA~:Jÿ-÷ ¸w@!Vòj…·’!rÄRñŽ«ôýô ;<¥DñN¼úOC߉é(1÷¦é‰0¼ïèè©+´õ¹ôŠg»¾¶®j´Æ°v`¡ü¦˜Cn¦¸s=]î}îwëužîñÙ:A{€}5 êÓÜÊŠÝðl«òså9Õ–ji}•-]iñ™R?¨Û€‡^p–MÁ…œšÔÖBöО ?B-ge¢ÕÚZÈþß²­×.d¬Ó{=½+{=p{ûS6øSþÔ÷ˆ­ÞSÞµzuìágeª)†H±fË–’’X;/÷j ”>~šháëõ|v¨ØoÑ0³nG¾RÈ‚R;>u9ÒIÒë…C¢×©š¢,} X½']ží5PWõóéiB‰ºß^ßiíœÝiuê«?rÄáº@{#ÖÎyV°·É—"Ìx:`¦˜©§‰ŸOJ- ˜Ûæ·¹(æÿNÕ±úˆþrCÄÓ}Ë©žnPæà“#³ÞúeÄ*WIÅë•¶‰2º3žY.Çsïq<|Öæ:uÇέDV¯õÅÑ‹‰ vzyrüso¶‡¤‹oÀ¢ Ÿ+ÒÅ.ðÙ6ÈœUÁÊìí#–*÷v§õÕÃ"ÖDøßS’‚#~áÛâ˜ïß·_¹Ë¢'µŠê»ô.àø—_çxF÷ýf«Ç¿vM§Uª˜ŠWöå2Ž-¸é‰c阄Eœ`vê/íˆÃѨ;º2bµÙú{»Ïf_<_ü Œ¹ßþ[çÀÄúð<>cîhuÚé´¸òuX£Áèþ¦'<—íÃF¼?3—;1êŽÞöjM»3eëó3—fö¹ò8œx#‡bfÌKÇ•Í~îQ6;¨æc±†-kê‡Î?Ôdº–%VÚwº’/ŸR Œ5<¥PÉZ¬~–šÊ«mï1u[¯\åÕ¤¶J'æàæ YËY™ôW÷ T4Sñ޲e¤¾Y`ˆÀ÷ÖÜkðÖøÖ=ðß:éßlkØ•Tg9ÚsCGj,düJT£S4ÿræªÿú³3{=`#YMòCÄÚyaĪèŸÓa‰Ï| XOÑfµê´¾ù݈µÒ·ìRGP>¡˜p(×H™ðê…„B¶ð»…¬/øàúæ §ëæó2—‘ ÜÞçûöߨTÅÀÔ¹Íþão0º\UŸˆõÕÙ+xFæþÚØË±þý¾¨Ɖ´t°ÂŠ”ßŽæØ¾+*‹žü‚8¥+íQiîSÑ‚~ö‘ƒ-—¯|±2º­ÉèÅ•o¶¸v(õŽã;Þ‡Ùý™À…C/ÝÂñ`½–Î-ˆµÝ±IY%{8rzz±ZY0³E0Jéèssÿ`ˆ¹_±Â‡“¯V˜–MÑß›ûG>L©'…­ÛS´ÔGÜ1|iˆ@ 7_ð¡Ãü©ú–úß‹#6³íÙ,ŽÿS}º·_nRîí6Wû?Ã!:zÒ3ÇLÌýÆ’´únyÕš%`Ü~ÏÚOh•5XmåøWþ±2:úâlWúDágÞ/æÉüPùþm ð‰/ňõï;£n›}Ñ‚á.žƒÏ3ømñZ¼eŠ#'æŽÕÄÜ&›9¨|wïNì´þÄܯåãlOËÌ>ü1¬ýN ”¡Øê´Q@JæGËØ2ò¸òœC/o’–®Åî›™?×M\år¤uS™ª}§.µ0^ÙìµZßlŽšÔV˜¤««ºê×N}sðÁü)ðR‚IOéžCà–.u´‡oÄxøÝsÄ]ˆê[o¸2½ C®–))²éœ0Ý/o58 ¯ðlVá¡Ud¨m¯§÷èÑÔ 1A¡Î¾à}m¾Í?¡žs ?`®ôU|¯"g¿a±Î©ÖÌ:ƒ[ÂøL¸ÀC3E§ÎM ÑoÿŠE| ˜l'Ï%>b"œžðåxn;Ç{º®oôtÉí1½žÞ½â¸‚Å13kÅä:Å,–ûï)IAÇêÎRži:Ñö žsÒc‰íÍâµ¼jñ¸‚%°”Í9ö—™j.Ü;bõžh3Ûà,p¹áø—Ë8^žLª"ÓÑž³zaŒIýÒáxU"¬cçx²½~8þ¥Ï9ÊJ„ÿùŸ¤ª¤Ôš j:,·Ïzy¯x•ån @8ôçÿr<8~ÀS êÖ|ÀÖ„ÑbõžÄ墶‚ÏeÄúö_bOj›Zåø—>ãøá! ˜ŸZÔæª«ª=)ÓûÐ9êÍB>×Ý-®C\UƒìmebÿX¼ þš]ÅéúqR £eîmB2{;bí<"b5RßîïPxÆB¬Vѵ戥â>X`ý…0pÒ Ò·Ç¿R)¹÷Ÿƒ¥„Óüí >#M¶žÕ©E9b—VÊÓÓýƒ>Tö+ÊReÎâ=ù]‹WŒ^¢¶×œˆõç£nh‘‘*þ“òÕŒºcë¢nC¤d¯˜Ê‚w¢˜Gz'îå)f¨;1}ÿšm¦ùâµ€{ Žª÷¹ú8þ@ a^®9¸¶J|†Cá=áüƒ|ìÈu‘ú$¾’r6<‹¬–Í´º¨GlUöµÍ^7mž»Z|mÕc»ª{Íæ«¾ee¤¾Å[óëÙlqÔý6±V,ûéß+ך—|·×º¦rí… ›áÛÔHß.;pýn,¹çGMµ®j·ÙÝên¹îz·J %ûbZé„G-,²åô¦3îcæÂêHÛ²Ê ûÚx8ñÈàÇÓЖK¨-xØÈ#Œœ@éc¬kRèº8kûÓ%•k+ì‹—UØë[VvŸ4´ª­TgÇæ‹{›cîÉå1=<à1vX9 éð…ÏX: ]Ñoˆæe›«ï¯Íë¤6 ðj…ß°lH{mát ºªÚCœz¥¸¼g»3}cÏzOÇÖUÕ|5Ü¥  pÀ7¹ž+õj•Z›€ˆõíÇD,Ïj… áPYô„ç,^xyƒ"".eóžæ­Õ±ÿ×VY]åOµ‡ž£Â!P|ÛCº7=e)-+½¨B•‡%¥?HÛÀú®8Xf$*4Ï¿IcH½oÅœ¯±Bh…ôó êø5Ç‹>‘Ù#¤ÆÜ±bnˆÝ Ù’ÆëÙŠ¡ŠÅ––EOý»6?ØwÙ’ÆO7[|ûõž.¥Ï©¢‹ µ\Ó ùñ{f¸sáê$…®Ï’‚ÝwÞy™ÞÏ:vî}Äî;Go³[¼§¼k´=Ç+8xñ‹6<ùZþ×¶îíkÏÏìmÞ³íÅ’'$ˆÏàO=¼ÒŸê¡?Fü4u3`-isÁòÙˆõõµ«Øÿ¿65Õ6ÕÞÛÔ,d³²Q÷ÛŒXCˆKàéf=žnBö^*ÞeáÐóo†CЇz‰·(Ç¿|4Ç3ºÓ™¾›ð¡"w-ºÓ4^îO5ï_Þ4D¾y•¶ ©Ôê]ðöPÖJP»Ã¡§;Ã!ˆ÷ %ÄßÝß«’;qMYc‰ú¨cu?Ô±pÇ¿læxˆÚaˆèk ø˜TïóÌ;ñÕÃÒwâªÿ*Gÿ»C£ÀYt¥ÙU )RCRËÖ‡føÖEݱ3bn1Èc—̰¨ztk¥|}µn²ªvV¶œ¹ªƒê‘Y¥¿µXj—’ms×á…åz›€¡6MÐíU=™ÀM!„CHÿ‡ýý©²žß§Ê¤â8¾ãnŽ—ï„LFŒóï7U$û¶\“h]ɰhÀÝzc½»T+unñžô:Zéûéi¶ ° luuUWÜìÔ›l ž·x­^ËL«7bí|4bí¡?Ùœ"Ö¿oŠº­^Ë V¯Éfn4ÙèèiX½Ò)Z1ÈQפбíÅhûz-_ê0Ñ!®`é†RN1ºêc'ÌM5¿ZÈ$x;½©ì?ô&ðl‹,xõ¹ŽmêÒ@•Ë"Äååø¿4q|}Ëuõu–6˜ýèã„oöqîW¹«JªØÁÒ@ÞóÙż§¾eµ¾¾…ÑðœÍîn½a³«Zà¾^CDœë³—Õߺ*§©Öƒ¥'`þý¹m.wËu¸[äñ)aÝ·?õèƒA3|ÒTÅ«wkýé)Ù> \ßëõðÿîõðžÞsx(p¶œ€Erê㔈 "öÒeߪŠ;õiE's<<ýtÈe³/>Îf—ªhPg0@JUܱ±*‹·`Ò\aÆ ¡ëîH} ø‘ƒ•7äúããáP}‹+VW%õØ–^YWUíÇN}YôŒ/Å$HwÄÏ9âRÇ0¤Õæzfa›ËÓUÿCw‹\ÑW¿ïáÄÅñ0ŒaP—mösO©°Ûì¶é6»|fF{»^8é&)™yàNìýï©o¹ƒ{¶n¸Ý—fÞ‰peéM?ø‚™k³/ælvpd’–®ÞçÚïD9ðôs®ðÕ9Æâ­1º@m!Šy ô‰Â@iU¢zSUBªÕÄÃïω‡Ëçž½¼|®Ž-^!Ž–´ª$n[ªî  žSÝßT~4{)¹;HUO¥ú«·HKFR7µžT–)oª­c§¶æ 1ül±˜btàÙ,Ï /€ü?û¸Ù€‡«·æ¾Ë½5 ¬ßYÕi‡ÿñl<ìˆW~TéS€‹h"w²sÖ²Ò8‚(q`«­úÈ1ç1º¡ÕGíŠi®ÊâPK©´«¿CçÔ¦”ko]öeÕYKOj?kj¦ˆé¸¯92‰€ð[v_å©v–’z’ÍÁµUÍAˆY˜ßÚ‚›Sïluê{èÔý=tŲY+–Á¾àw5M¶c®3RbPTXGÎ^^ôµetßוå¼ A­»L)‡a,M9"©’„Á{ke«¡RŠš»B® ­2=Vµ´NKŒUµüJ­ªø=-³r{Æi{P=`¢ßê5`êò§û"hnßüÂÒ0+p»çBȾ½__qGrH¾k Ñ+ÈMözBVB6B>#Û!ß ÅÄKÞ%8³1jtZß7ó¨–ø¬JGµÈÌ®¼f[ׯ¾ÛÖpâ eU’£¾UZô†ly¤ ©¶Žw{AíÀ2#ði³®)›"îíîªv?ãne‹=‹ÐÝAlhßRUž_ý¨ºÊ8:2³­ëW‹›-töR²YOÕË•Ë,Ayk\µMq³Yj‡T['G¸{AN*ì?¾šÑµ¯µ¶­€¿¥¡}ý?n[!Ý<AíÀb¬|×blѾ•4¿– üZΞÌtå¥Òç*«˜*/%·]¾†ÚŽA»¢¬æ¨)™Ä@¨ °§Âß‘)C€è?†ÀÈÉNTêX•üYs‹;”ýR}a“’õ ÔÏR¯ƒü\-ùÕ‚de¶ÕVAA:䋤éòœ€ú¿4ö£êS5µRÙst°"¨lÅԲ˗¼Çä%jÝ+[K³«òÙ6˜EµAAƒŽ\Wýk·’ÊS´ìz•þ­ì š– *¦Zò«É’Ÿ«eó[¹‚«E=zû\õe^ƒ`!°æ:ßµ@Aü e(-+úµœ%=Wþ[i¿(õþjûxÉk+b•-¤¿Ö Y™éêý©”~e/w¨~@µõ bÊ”)ÇN™’ïZ ‚ H>QWLµçÑ~T-Šª²—ª\•TßMJ=â©zÔUõ±²ï¹¥\7%iétm~®r]Óæ®I!ù¯¨;/c É;Uñ‹®pê‡wnÐüä#þT¾[€ä9ÈðÀ‘ƒ 9Ö×_‰¹Õ7wÕ±Å+ÄHÞZl¥£•G %uP~TM‚¶Õì»êK£†»u­Z/eÛxVI5'„ËÁÚêé¾õȦZíù‘ÉNïªÏîïYØKø—{=#‘ƒ#ç`G2TØ)-Û hÙè5»älGµGP –í,¥£ÙS2%KkŽj+‚ ‚ òh£ê~«òß„ އ*¦©…vRŠrš½&ZliÙèU^Ãl‘_å /–Z¹r•WnñÍ&ã¶"‚ r"_ó®¾Íiö}›¤ù³)ÁÒ²”ÊU—,Í#•<´z­l×”¦«ÇyÕ² —Zºz}²]ùu’¶ÕVAA:”¶N²OXg û/=ª®zÊKÑ"YžG]½–æ×²–V÷ƒÌ; hñjÍT•ŽÊk¥Ô3jnJåª; µ —dáÐK<ÇW,«ü·csm‘ëÿÜ­ù®‚ ¹Q>×ö£Êµ1÷{öD8ßu™X@Ÿ@ÿä».E“‹ìÊh6†¶Èª—¢<9är´L²««žJõW²’ª[‚³×D©¬¡"¹Žüº Ú:"ü©GVøSuUËwê}ë¼qoÍØ•Õi}ËuóžmgŽ,72ñAu-𹌄õY¤ÅËSž¢¾tI.M»§©š"˜Ë$»zN¥š+Mñk‰ n–æÑbIUßtÎP[;-öNKÄúÚ[«ô/ÅP‹´}‘œðžŸ œ!b¨Ñ±C“-OC7}èé¾õÈÆ’¤°õðïv#c‹ÉVrƒ‘òÖüz6[œïº “|n #a2>‹@o‘k5°­«<¿ºú¨eÙºj+Í/_æ•[ÔÕÌÿËsª…ý*ÎköÚ*)šCmO .'×ZIÏP[u¬îÛ:ÖdûÎt“Múw¤Ãg¸(M¸ÈÓý©'Þ ˜+×V/rÁd=ü ‡^èæx鹉püû‰°«úêîVÈa¢?×:6×ÞWW ¿Ý­7ìh, šŸ~¦Í))º'ÜC»[oØâéfæVü©rmåÚó«››ƒ^’¹_6´ˆã_-ŒX!?¤xºï¼”-å¯úÜÓ ¿=Ý· žîæà#M¸ïv&ã;fçÔŽ–Òá®_'wë ;ÄëÎñ/“ˆUšþBë*–Ùm™¶Ñí“íWèõô¾Üë{M~Òû¤|é}][´âéºji)·óu™P+©Lx2$…O~Ó“ƒZ©¥uJÏ wë-w²%òg‘XŸêEÎ"?J¥<£k|GQú©.Ž¢tfŽ¢G9:£èÑ_çYôjanÏ¢-+ó1Z@«1DŽî2DàoÛŠ§ÏËÜ5-µ4›„¡WÁ¥®IKѾJšgè€VCmˆ0t)ÙÔG-ž¾êÑÔåhÿ-—“á$À{øòñïWíü„žTJ É'… ùÉU!Wóº{V²ÅíëÛ¾(m[ñÄgþ­tô´K-^± v¾.pîÖ[gKì¾¥‹lö¶ë6ú·zkî<ÄÓÕT{ïùÍAx”h/=PÚrmó:øí­i¼£¡«*~ÞÒJ¤Ô·Þò/¶Ä9Vg¤ >þ­ýÇ·.b}ÛuË_]þÔï~0WúÎ?Ïîó­ó~ÅwZ;{bîDxËʤà­Y}„ø¥ËßA±ÅuUWÔ;õù¾“Ñ3¿ùyîcF{érÝY„ŽB~ø(}¤Æ·Žb ¤»ïœSì>m5ÎhŸ\ ¯ŸÅ{Ð~v¶{òHïkéßúÀoô¾6Ù¾s–ÕsÇΈºá¬ˆõíÅQ7ÅPÓ‰¹c$æ–Ö“ŸRŒ‘:æ†Èè¶Né¹a³3·ÐQŽuv¦ÒsÇ^º)†ZB1&›ùµlf‹ƒgtç(j^ç½Ô[±þýÁ£èͲ¢wÏQôtçpžEgôæö,º±n¢Žù¶®êQÒy²å×î ¦(gJV·›B¾ì5ÉÝŠ)¯¹R®\娗®þ[.GÅ·uÏ|í?²s ¿Û\Ïþ>‚[‘bf-¤;÷•£ëßF¬×w•À²GÚ °\ßÓ±s¿Ö±ëëâƒ`$€U/Eo §hG¼ò»¯{±Ž…úTØ|,£ ‡þ|Sæ ÿà²J_Yôä˜Õ+}aÜ—ç£GÚè‘ß1£½t-xºo»¥±Ädûö#åÔ_~»#žKÍß*Ñ>1^?«ßƒÒûÚ©¿¨R|1Ëïk‹÷ÄãL¶¨;þmÑZÙi}uvÄêˆ_tEU<Þ¼*)Àë¼ÓúÖò¨›Žž´ÛêºU#k:zÚët”÷ð[TUH‡^8ã¡-JçŽç³4¿Œç(ÒGô²öò9ŒŽã_z†ã-^ó&[<¼ù­£è´Yã;ФˆÏ¢oõçY”ÏÑ’]M*¶¨š­4Sòpö—Ê&9WOPí¶Õá)©ƒû0[¿åjÁÕ®òfU[§o1ÖÀ­–Τ¼5)ÔÕõ»[aú&& 'ïá_» ÍõìÕí¡€9Ô(þ5ÙJ=&›!¢¯Ñåp£*Ñëù,$*šð0êã„ÄÒuìlK!Ë{¶MÍ´d"†m_ÉÈHj̤'FÇbÌh/]˜Þí¡·ÝÝëñt¹+ë[¤GµÕüˆ¥£1Ú'&Ãëgõ{Pz_Ë_ê:Vw–x_[½ß9Ñdƒß)úóç{=Q÷{çÄÜv_…¡Â®Ùô‘˜;~U<u¿yBÌmñ.ø«%…cä£TFwÖÊ¢áPÇâN+ïÙñžÀE¬oÿ%æ¶ÙËïSV[yÏŽMãõ,Í/ùEG,-dSôçoò³­4l¤à·¶QôÝçÆw™Ï¢›œÃyås´hÙÿIý¨zdVíûK©/¢’æÑî™:´´\Ò•R´Dl•+ÇÚ½åu›–íRND;ëþ•°3I†ßŒÅkYhõZˆ…X‹…âw¥Í^ÿj¿Íc½m§×ÝFÖÿVCdÞJK9’ÔzºVR®*xpg%ÉѨg!{¤]|A¥'ÞÿÜëѱs¿Ö“ÀÖ|÷ëLîcfuAzÌ ®õ­óö±QÝŠ¹¯f仚O.²õóÃ7hëg9CÝן?ÓëѱºùTJ·bîÚBV_­¿GǼO>4"EWijŬ…c­µÌ·z#ÖN®“‹¹ß[‘àÙâÛîðt†,$9,ÜyëÝYFǖܵ´Éj ûÞg /xÖÖ«YÚ Ãåãõ,Œän•£mÍýZg6®7^c¤ôýû:Öo{òÊ)ºÂHý(:XžEò…Aƒ•'¨gæQõø£ê+è¥çÊ—4©ÛYçÊT‹Ÿ¨¼íêvS-ùµ,ÀÒ._~Õ²î’vÖü[[ÁK&N\Ãä[r·¿©Všn{éR¸% ‘#–ê3¾w-Þï>OGõýÙ:¶©ö¾ó|A˜^‘Ê-‹÷»!“ ¾†æ§Ž ¹¤¥´‡^ØÙì?¾[Ùž¡Þ'àòŸ‡K2áÙ˜Ñ_>xÌX^í1#–¾é¬¡F¬(«©Ö÷ïæ`]Õ7;õJÞ‡ï)ï¦kÞü·±ííWY;&ÛüÔîë—>‡löÅ56;¤›mæÕVo8ô‚ÀñŒîû³é(¤ÓQë)&¤›l¥«T–¹¦ÖÉGÑ1×ekÒs&²á·?õèƒAs…}ñ;bý•Ïgi~êý²û(#„LÓûS¸hè·Œ¢ßÍè`ŽFÇ¿ tZGw¥èÔâ(‚X7Úï‘\žE£ÿ.ƒµu%ièeRÊ!úÕ#­j_Ò$Ï£î ª%§––ªKÖ¢«»4 ?ʬ‚“ØYóomuÄ—ýÕ©§»q±·Ö©¿ìRÑcFlÒ®®9øÐFJºž‘ã_»¦Óʯês·ˆ ¦Ž!¤©¦ñ;lq't \åÚ‹×NÖUß°ÔÓºëFïæiª¹óxÏÀä ”â,Z~´«šŽ–}LGú‹OÎl‹ö>i,¹ë”¦ÚoÅîÈÙ˜yåRµ1³1#–ÞòöP#VN{èOçxðó§Ö}3`–¯ä8áB(fÚlBšj~]ê­éã„wÓ5·Û*׎ÅhŸhd»Êv[åÚ¡úyo¯øK´Nà„‹®ÕE1Ùîk×w\Õt´ljæ}mñ~'&¾ÈéèÂ>q×âýÞ“Öý¿-$—‰ÝÌÖÉGÑà1 ¨?7ݯ££àe(Ud•‹ûbb2Ôûå¶=]„½ÙlBYûíIñ·òÛá”w‡3ŠNx>÷QDHÿáâ(‚X7â=’}IÉåY£žEù-ƒµu«žºbª½U]Õ~4=™ž‹Wk®K¬Ôeí˪´¨¿j½7T)R¦BŽ!$¾!^ß1¤‡{èÿ”ôЉpbmÄêé¾õȦڎmá3CHHÀí¤%§·æÎK<]J_™Vï) :Úëá‡mß šŸ|ÄŸ:°GŽ9ÞÈ+,¯”z«ùE Ëd+Ù›¹˜&_x#€¡±9Ræg‘täÄÜ›¦'ÂÄSªÕ€>S¹ö¼§+×êØâ™sžÃ™òSånrw%™¹…ßÚÃQiþ¯}ê_‰\[§ÅF›)aÊ*™o+ÒóomÍÎCcæ×ˆÖœÈ Ž™P5z=Ûžà= °ÂoŠä6!«…ñE09Ûüö«±jwËŠkë. 3ÆZaðY4<””6­±Z•¢±j³}j÷1Õ’"—¬%]ݪ^CõS:ª%z€È!,ÅPÌ®+Nভ–ù¶¼ +‚ ˆP5ÀçOú;ßõµÖÝ/p ]7¿YߢlÉ9øÐ2ÁΙy––£êþ¦Ú'ýåuVOÉu{Ui X4Å4P³m— æH– t43ývpM¦¬JGØç8B¦ß«àÛšÿÅX‚ ÈXc¤Œ6R:>ßuA±#»V3ôæ¥òikñÜìVÃÌ£Z”T-á«”&ÐÕSF²ë•Àõ¯NçÜçÉŒr ʵr°‚+Êé_-p™GÓgeʇô]W®[ÿêÁÑÒg©l7€ ‚ 2yÉ>‡¬ÅŸ2{DÕl²ÒG‡Z>5ƒ•W©ê)¦ƒ4p¨È®ËÕ_t@Aä C}Ò<'ÛïìGµ-¥ÒrTËš}ù$;lLVø²©i•1SÂ`e4Óö)UOÓ÷ÒR2[$WU¥éiir+¯’uvï’… ‚ 2´Ä=Ú·u¨«KÓ¦ªJQ5ØÒ ¥TáËT¥>£€š2šY5ëi:%ûfr÷€ìŽêùsØ%«wÕg÷÷,$^’ è …äŽdxàÈ!d/Ÿþ=M—ïÚLpä #!וõJ~«ê{V¹în¥,Gª8î¹Nà(fúþ”Ì£ ˜fW:3•Åô*~©*,·ƒfž•–/Í)ªËR•,»ÓH6Ï×ÌsÓ¿‡ˆÛ @´³±"ÂÆ±‚2óBÙug¾ë ‚œ©o•©±Ó+Ĉ­_µó©N=n«”\c—溅©ºLíqRÅÉ}˜R—+…J­Ë>ù®åèðdŽV)À}ä˜ë]ŠþäiŽÏT^ÇpÕ±ºoëØ\ PÊ*‹•…Êb£+AA‰F¢=qs¢}ìä+mœ$WXs ³¯E=U:WÑ-]DªÔ*©‰R¯Ö´ú+]&%·w*ý–—;TM²ç”Ûw¥9§èØâÕŒŽ÷t¯M«­ƒ¿Q2Qß’@é¨<}úBzèîõÐtôû'cA9Ðéõðÿèõ(ÍîéšœÁˆ\m Kçàüã¿û”úĺ²´áç «ªèϺçºÌ Wr8:°$ .¤y‰9h^ªd6¾ºJ (©³òtŒZ€ ‚ ˆ–…àÒ<òü Q v *¬úÈ1çÙìpTIYT_靨_{P*íÁÿ•ÎÓ«ƒò°SÙKIcˆ2‡Znµ¿Ÿ¯SëŸÁK¬²Ya³“-JƒÜ_–ýNÒ]tÁa·­xú¼±ßÓYÇêÊGÛýAA±¤ÿT#dʹìWÀèn,`À@6v5U~+y²jÙt@½íÖáù¼j9k$~¢êSüõ¹žú—ÛS‡rZÈ^:è¨NJMçœÇ ‚ ‚ HžÛêH&èGâ N®ùs©³Öõø¹÷¨ÜU©D­‹Ã”$¨—> ¶Jý¤gÛÔ+½L~T)|o õsµ×D*_I¦z)ê%j)]{ýsý­½¹¢å:j¯¿–úäšämÔ.mämÉ­ßrqäW«³ô¡‰ã?÷‘LôñŸûë-×Ë^7õQšKÍsÿ“ýù¯Ýö–­OrówùøÏUuSï·\Ÿl¹”ž{+µJIÜ­ý6Ü…\Zì#ñ7U²¶f z%½âJ*¬Zý•cÉóÈý\¥d8 HA;+‚ ‚ 2ºè#Çœ—MóÌ$»³A†“€TUíïïÿ°¿¬««û—±zKÓI·[šòÙ…‚ ‚ +ã©M™2åØ)Sà·ÛA«í40ê¦èOž‡ú6îx§o#:¾Ú.th«ÀžM„2}ÁpÀ7|±ŽoënBAA”:øW„Ž‘htZtB©aTX[¼šÉºº;)@VuË+(²SÇ«rêHÐ@c†ÕõJJáHÉ ”ž+—)c'?;½žÏ^êõdöÏÈo`) mxý¯ÔKã)a|¤||j©ÉD®ÿè¶4_ùóÛŸíúŽn}òõ Ÿ8ù'Úõ͵&¿þÒý2òúìytø¥°Ë¦~¥—gIcÊÂB±©ù²³fvÓX|‹ç&“-ùU„-i>t[s0½1V$ÂÉ_'ÂlIÓØ’æ`ë¡ÍÁphã}áÐðúj(Fþ88˜ìý3Ùë?јhý9ꓯϤƒ‰p}¤úõ™~¹¶|óúê€þŽ$`¤ ?1RÑ•o]])Ý7”W›ùpÚò:ý^Š™&pû>l†ljns=ss› ~Wú–ÞUéS®Àž½„´¹6Ü¢5ÿôË ¸ÝÓ† ÜÛÁqüß¾äøú£¾ZàvÍ8B¦ÝFH!{(]È2:æDFg¤ŠÏìr BHI'œÙÇ U»§ U9KÐL½5ÑC Üîwn˜µÍŽÿóNq(ÔUÕ|UWEªf,'U³{šC˜è‰ßRAH¦BÈî|×A\hB-ê„Ù¤ÚŠ©¨éiÉ£ÑU`ß àYC8 HV¥éw°¼ºÙò‡p腛¡¤ðÁ×IÁêý^¡Õ[é[šªôUúÎY^é3Ù¾ý3“MÛqêÌxräuŠ€ù©ÏæöÐÆ?µ‡F.M ½ží?êõPLA1Å0s0L®` Ö|µAA‘‘›hzr 0Ô\2" h«nö*Vú–Ü)êΣ¥ž*ÑC§n7‚££ß?™ŽŠœL¬wÆh11f¤ˆgmMôÐÿÊJŽï¡?ßÕCƒêÆèÊÚÙöífÛPåj•u¿wvÔsoúAÌÝëùìÌ^h .<«­ŠŸsrUœãß=7"aBˆ p_^&pÞÚ{ÿê­uê/ŸãÔ²ºïflrÛÇm¡ ‡¸ÏáºG/Ú˜ Ù#_)dÝéßÊºÜæzæ‰6ȱ™%º[®û»%êŽuFÝ1÷ûcî^Oï˽¨­ÅûE¯Õk)³z¥Òà\Š9ì1Š©°/úI…]TIw_DýÁ¯é¨ÕûÝ—¬ÞöPûõí!&ç°––"‚ 2‘‹i®úž6;뀋Âcâÿ•öúÂÚª^hÖêúu®fa%ŒÔqSEåÌ\û’/±¾öVÄ Îòü}ܾT׿zö“6—Àõ$pŽxe³#nˆèk ‘pèÅçá>®ïStNJwR8jeÄúÖq+Ç¿t‹8o³ÿ蛽Òg_TéÒÝ ÏÙìâe˜¹‹bÔÕ8ë/8#U<ßHUú~vL¥Ï¿àHG¼ûßÂ>N‹ÓfgŽ\bÕûN=(¬ÿ—=¯cugéXhü†tPijժ¯[à8ž{‡ãͶÒ'Ì6P¦#Ö¿Þ±Š-=ãKËE…AA&Z—di×ë¤ÆMíˆ{e¥KiM¿Rõ¿öŠ{*ì¹ g©Kι0)DÝ›ÎÕ;»oɹvXaÔv#6Kqj~ÎâôÔüŒ' )d f*«q äŠ™µ[¼Ð`ÅT¿ ÙJüÆU…lÌk Ô™Ñ~£ƒþ±ÙÏøRTscî7N‹eQ[)æ›)¦*^ùýª8£;}£ÅTô6V+7×Q”ml¨“\䌖¬ÏXKS’3ÖòǺVcqõG.ÇÏDnÝļ^¡gÆBÎqi?+½ÖHË_-®Ÿ©´=×I¤ mm•¢]yžšKÈÌRµîžYJˆÕk.´zúÖ©wÄíq°Â&…îc“BÈz:ä›·sºØQ÷;tÔ “Ô`g…tÞóÕƒü KmÚ·Uà¶ß5XÂÚO½µáÐËMi |ïë#¤ˆÖDíƒU­Õ½žÿ>Øëñ§Z=þ”?õÄuþ¸+ôz¾Šd³1¥Þ¥•r©©ê,U7Á#6[)3žÌ¦˜æÎð^'Òƒœêùµ”¢.gð8Ì–¢¥æ¹ÖGKyéòj¯ÏHúV)ÿÈåho‘Rª÷§’|õ¥³”ƃö1¦¥«Ÿk?îø‘§|ühéŸñ?êo¨áŸ\Û>Ñž?J£(×sÍ©”g´ÆÏhåŸë¥=EûQ5œG5g&{®8ˆÒ*pÓŽí¬p,縭ê*iî «Ü(­~Ó)†È±¿6D*}KNMÐR5KÇz•n@³zOŒX½àÍ)ýKGOžMG•j&J˜v›š„ïŸLG!ŽœÕCxC-ÖSþ˜S"ûƒ‰ã#³9ÚUWuÉõuUŽøE/8â†È3 ‘lr¤7‰¼ô´r)­s¯§o—Øoàö æ™óbÚ>*­aZýÕ†4¿ÒÃN©J)R ê¥>‘§«¿–ä2åy´¼ åuPú­½-êGsý ¦çÚ·òVHÿjéO¥rÕÛ«ÞZ®—–Q—ëKH½]Ú¯—zÏ«÷›z}”doüh¹Žê%ª÷Ï7~&ûóGý³G},)«ýSJ^J®÷—–÷ÂHúG{~õë¥E¦öþÌõO3<54÷³¦ßK1„ìóˆA©“À4ðà̵ ùI=C¡ç^íŽ6û¹gÛ좴Ý!„̆ä™~9ñ ò1ÕBȾ!¢B ‡þôf8dˆµÃѱºrQ%M Ý?O °ôÇÑßeˆôq}Oöq®¸ÅÀÁäu”Ä_Œ*JýšŠÂ¹·ûOG13~B1FªôŸFŠ ![¡>¢„·î§˜(yç²(¡¢Ô[Ù$˜<ßþ™É!oìŒp¨cF8dñZ:-ÞB¶ðãB¶×Ó;¯×c¤Œ³ŒÅ|ÍS •š¹‹JÁRèþCRÐG ÓGùZ/é=!‚K .B“› s¿wdÌM¹guRî>õײÅÃïω‡Z!ö˜žBúøý²d­3¹O|ÊäŽWýÂñ/¿ÃñVáÔv« ½1/"„JÄgèóöñ}Þ™Aò) ‚úÛÇí;aÿµN üÛ/ŸÝ„P©™Ó¨”Àí»Kà’B÷òtKg”¥kã$}­•G ¤]z YÇÏPéŠ5‘\Iùáªm±]R™»;%é }¶ep‰ùUÛ(¯Ï@­tïôºŒ¤>Ò£ð{G,»|iNiYZäKef\Ù‘ä—ŒÅ:ëúS¡ä}žÑ?ª×kÙèÉõRÒÖdü(¦oüÈês ŸÉþüQìgYÍ¥µæóY—]š¼r¸¿r¬ÏHžÏJÏ yºüºh¯§R?+õ˜$ÝCzˆG]'B»O²(  ˜‡Eä™Ç§ÅõBJ’‰gàI+©°õÀ̇Ev¿“ÀÀ /½02"{ŠÍþ“slvø›-§T²RºÔÚ*Us¥ùg„œ¸¨û½Q7,‡‚éþýß™)Úd;þy“Íf_|·Í> 013¥XÆd¤Ž¹ÜH‰ç¾ø|8±vîˆX®ÿTe Q‚íúJŸ‘*þp°„·%X¼Öù/øÝ¹°¤©ÍõŒ¾Í^¤·s†X-›MGA¥†<¼ç«bÞ#WôéèΠ£`õŒX£7D¬=ôÖPMGOEGÁs¿CÇÜòËö;ÅkyÕâ9¼§÷Ÿ¼§Íõ‡ÓÛ\ðÒ-Þ…ÇX¼D‘,Ц„eé–r3Å´¹žH¹¥ÊµU™J£E{NH×~T]¹ö–ë%¿7sí¥žQ×ëÔ{,»þ–©ïA (¬é~Ζ§ü»ƒµD-uKÛ\Å]²¦¬¢˜)];?nêÚ™í4EÑšS]±˜!Â{þÛË{tì7 ul¶K"ýJ­ßÒúä*A©nò6Žn=µ”›kµ\/u9Jc@»œáõ›RM4½ìGp•‡7N´÷§ö6jOÞXy ¯¥J}5’;(W™#ég-OÑ‘Œ-}¥åܱZòŒVÿ(õ€RŸ oÄæZŸ‘´ýÀxþh¹ïÆ®uÚ%gÿŒäZ¼ž¹Ý§¼§·‡÷èØBƒŽ=A½gÒ@éÖ5'?f]£c‹W¤#¥# @ÊÔl Ðò5©¤"È›¡e¨ÁdŠi üãù€Ì‘ü–¤ÈKɨ¹L‚bݤùG©žõ‘¤KËÕR¥I%Kó(ÉTJÑR%9ZúVK‹äõ—÷âµÓ|•Õk¥$A{Jë“E¾B)£5>µŒ7í= cZúAK)Úó ï~^Šü¨–«“ëø‹ûk<ÇÏHúG^+-)Zä(Õd$çjÞNöçÒUPê7¥žÔþ~Ì8kT﯑ôR-5Qï+õû].sˆþÔðd“¦ËQ×ñrÕ'³k’ÒXR¯ÖßÖLAÚud¥ŠŽäëSz2üÀd~9†t…œ¹¦+•¢^¢ü2k©§ÒoíùÕKTêC%'¹d¥²”j•k•Z¡Þ3Ú믔žë¸^?«×_KÊɵÆn|ª§¨·B½EÚûY=¿4ö먥DùhWêC-rÔKTꥱ»¿´çÑ.Y‹„‰<~ÔËU'×ç­zéÿù£”S©ê­­«¥¯F·”R´?ÕKW—£^CõçXF~™†¦ÅΪ.A=}0™ ìýŒbnÚ~o×ý‘´ùåÅk±¿jAû#XúB’_fõÛUý––¿ê´jÃÌŸQ+Stêè:N„aŠ=âòB–ò8±Á¹µE?ÞU(}bn ´Œ=‚XöKÝË2ÔîÛÉ+óÝ‚h!E§jzèÚM+ÎM?+ìgWú¨ ³Už¨i êŠ8aµÀ‰¾¬ý« ¡˜]Ÿãæ®ð(êw;fzÓ™»™¹ðc]sZˆÞr=ýt¦E¾` ½|îÙGŠùÁv _<Ö5–¿Y×@:|'Á¹1÷{ÛaÇæ‹{›EyƒíŽÍ—šE%w°%òzB cîØbni}ÀÙ`¼zAáÓC§ZS4ü¶Ùmó+ì3óLqÕª>¢o5DÝY‡0:‹×ô¸i@a…'üvý|µ³¨±dµ-Ÿ« C?1²[[á(Ølà¹g…\ÏlÌöô[N¾{A|zèßü¬˜½`¨gEÌýÁÕ™šF8ôâŽDúWjµ•–{p>(fGŒ€E1{?£ø-pÓŽœ€Û ˜mÇ›ŒTxýs¡ñ ïü9º²®Ê¹Ñ©g^þÔº•sËÖß^åßZWµüp§ž-i|€-is=óRÈ^ÿBkûz›Ýö¨ÍÞôOñ§Äóä.ƒS*}•VúÚ\ípHšÞi휱0Ô­ŒÅkù«Å éÒÇѲÕd3ýT²‚Ld,^Ë«¯Å{ÒoåZÇß›á³,+JgJ÷o…ßþ­¿]åßÚеªÇÓ•ËcðÓ†÷l× œcó¥Î"§Þy…S]ùw{d«oYó:wë ;<ÝI!ykRëO›’wðiƒ cÅ{Ê»¹?+ä¨6ûæ3:Ðmà/·íÅ£Û×ëØ¹_ëX§þ²/qÈ©üLx¨öÀz&PÌt*3ÔSqÖ´#EWp'µÕU½òw«Ü«Õ±ù’¿§í„R-û˜ŽêØ9‹u¬ÀízEà ‘â•FŠ÷ìø\¬º”ú–k»ëªŒ”ñ#eõZ^µx®ï*c‹ï Øbø²z¿×n²ñžÞ{Ò^hrk‡|xýøLF'p} œÔ[%`~ª,䪊WþÏî“Z‘÷ל¿À™ØLÓÒ¶bÝ!R§¾æ §žã;Þ‡èMgœ[>·|îoªXÖüí žEÙ$¤ÐlOŒ½üà'Fv8þ••Ï.#exÚ‰¹ßÂN[JØñéCAƆi:BªâTØ}Uäb'†]¯+á?Ïâx¯¹©ßkŽÙÞ~1ænÙúp£oÐSeàs÷ÌìO ÓËæ.Žç.H?1ÈRÂÊ?’{=½+{=TwÁƒT·?õÄuþ¨ô“Øêµ«WÇ~–¡˜Bˆ.ß=† '#yV \“®ä+ÉMܺ Âë Kˆ¨Qd>¹Ü•žkõž¢;pŸ à p3gñn&+Ƙ@q[ÁÜíéö<ëéŽè¸•Q}dÞu†H§5öƒXœã9"z¦Žò%ÙIØ}?}ÒfwU_ó3w«±ª”5¹èÖ2B»uŽXª[—ï>CdôÔΜ{«æ¾—„*ï {xBÈÏçxnüUüæcþ4“‹n-;y¨'†‘úf!–ï†{ ½+)fæO&›ÕA6†zVd÷b‡^ØùSO¼lmÛú‡û¥:ê2Lo™Ï„{ Þ•RÏûɉÖ5N¢“À®+)V°¶2}üœ´À{ø¿ˆ“ø=ôçϤh.Óúã‰í¾b°ò7ó¼Ñ %“]£;ãKFG1WRLSí]§4ÕVÅ/¼#Ûd¸B ÜŽMÙ'™X$Âïž›7ÕÞwAsPœ€Kß¿àµÖ _ߟ6é¹Sð ÅôzR­™O¤Ì'Æ=íÙŸƒ§é(ý7:ªÙôwëí¥žnÞ³ýñyOB©,ýTv]@d4î³bðæ9wëužî†®›ß¬o‘®‘’ùL¸±yègÂÄ×@Ôã«HI/ÀÝf>L1k©­pñì¾¥?¶Ù+מ¿Ò±Ù¶¬²Â¾–ŽÒ×ÒQ“Íü “;¶º.Óv¸ñVµ+»Ót„Øì‹9›œ¦aµ <Ÿcóù+›!FA¾ûA¡)dugéØzëcIÁÝzíé¶®¡o¤7ç½mÙO—T®5D  ÿVß_›3l¥°^?™«zµ<1?ÀŽZñÔò@©À}ñ€ÀћθOŒŽOÂx8ñˆølµÉ1wŒàÓAÆžá>+ßéûl¨Mµ÷½Õ”G€ÏÑÌgBßqC?$ dŸGŒÛ «ôØ”þþþ}ýý©²žß§Ê¤8¾ãnŽ/‹.<3ÛwÀÁFmÑåw9‹L¶ž7Û¤NÓ‚ rj‹~¾ÓYd²•.Â'‚ ˆÌU%ª7U%¤šg<üþœx¸|îÙËËçê#ÆOlvBö\'ÚY¥Šìú¶ogˆ®ü,¾!_*Lúÿ7S§•ßõ»!‘|× A‘2Ï(ñ‰ñ²µÓÊÆïpáAE# b€ÔÆ*.Òš¶zL—dÝ ž" Ao×·ðõƒ cñŒÂ'‚ r h<‘ÚYÅ…Y_ïSk+ìÙ’Þòc4©«º*ènéõð/÷z´Ÿ5&w4>1$GÒgŤdo/!Œîì#²­ðò\^kNp °°B¤ ³Æ<ìÜ=Ö¥ 2qèïïÿ°¿?Ù·åšD»ühCò–^çh•5eÊ”c§L©#W÷ÂáIÀg‚ä |VL.Ô¯×Ph$ .Æšý8!³ëŠ!d:!„}cë$ oêø”… H¾Ðþ8îƒ/ÍèÚ?ð… ã >+&#¿ ¹#|"pwÈ,ˆÛJì5¶@AA(f:•™ñYE›ë¾Õ'º Œq$)Æ[w»ýùîAÆ–ªø%Ä©Ïw-AÉÀí!n23Û ì[öpù0!„캎 ´Ý‚ 0¼`1‚là³âÀCt î•õõNˆ-€j+‚  éK_H‚(ÏŠ©ªJ1{?#¹B„T[™(½xð…„ ˆ|V؈ŽSg‰Ñ[!ø¶¢ÚŠ HžÑò²Á’v¸Þ/p½î'ßuAÑdb>+BuëÝ¡ºZCmG­Á\ñ¯¹îAi¡ã«íB‡#Qý#QØxø¼ÂÆ‚òYá‚r:öý‡éX¢=qóx¯ÓŸ¸H­­û·x˜b`©F@$ÏLüýcÔU@‹÷¤3,^oÍÝo S¸h1S˜ïú"ÈÉÄ|V$…nI vŸýV»Ï¿Ìÿ¬!ä¡l9+ì?9¯Âî÷=üžßG5:‡j¨l^v^e³C¸x¦CˆV¼E¢ùnMþcô¯8ðpoWØ+ ­­‚ š”>Q(…¨ð·gáÖ_õ,4DôW"ŽÍ—>çØœï:"2ÞÔûWΩ÷Û*m÷Û*•òPå‡Î¡Ê«Õ›ªðÒ+}?û Òs¿ýjÌïvL+¬`m%dù¶6$ï˜áuÂ_Š9ÌRÈ*嬫ºæž.È™ïZ#r°£ï4\¨ï´û~v¡ÝÇ{zÏá3¶‹ì´tÚ;-Ö¦“«­M0-hè<ú*C§¿§ež¿Gš¦Ë Ë?-/„IFÈ VÞp[øšpä„ù¤Rº”æÀÚŠæ@IÁ·zJ `‚j%¯Hkr®ÙÞä„<ê’ÿ—&Ž/‹Ò«Ê¢ù®ËD¬­û-¬û}[A‘j«‹wÁ_-^yº‘:î“M×xxµ®1ßu-¦ëò]Araæ-â/ðTÅ´©öÞkšjú³–oøbß`[¶äMÛ2w˵ï¹[z¾ø¸·!¼þ¹£Âëk‹®˜Z[”ìÛ|i²ä0sñÌ\»¯òr»/Þþ¾;ÞÞSöŸ{ʆ[Oê‚l©&Ûñ.“-ºòŽèÊ¾Ž¶¾OWÃ{ž.wëÄÝ*ÏïOùñ§¸m/ÖpÛèhMãkAF ðˆm½°¾=(}¢?Pšï5{ymùDkëô{ ‘ú¶‚ò:|[aë0«×z í$¯žÏ•HZ¼'AG퉛ÄTaºË”áÿ¡c\ZÈÚìçTÅß¼È:vBáwOˆ¹Ã¡ð–6äKm¨îé¶ Éâ=é³²¨± d¹± Ù·ùÒD{Ð|ÄŸÒ&ó¥ÏÛ\„ìá atgM³Ù-ÞS¿¤£TùLBääøß ‡bîØ«´t®÷…†ê¬ÞSËè(†ê£˜p(¼1äJ„ß=':0MP-û˜ÑY½§vÒQPÖáõ&—©c\jˆØì‹çÛìÆ‚ù÷›*>:’}Ý·öÐAsð‘æ äÔGæ­4Rö%§Wútìÿ-Ö±„ôw Ç¿ô9ÇÇÜï±B‹d¬ÝíÇÇæóW:6;¦•Ž ?W–gßaù†dƒ»! )áW E} EFê[-F \8ªÙô‘pˆû(2RÅ·©Ô¢­áÔ"çÆKßqnÌVòô[s«©ð!„噩~·„牑úæFŠ÷l›Ê{H!¤!£]Å·§ØbKÓI^KS¾û9x™ŒÏ u‚¦u ‚&oí}ßõÖÆV¾µ$¶æmò]¯±fšn8geº ŒÛ.YZˆ¹ÿþTÄjovÜï¬Ð»æ¹ŒjM C)ÆTq\ÄØª{êÛ³©Ât—iÿyÓu„8âU¿­«JF?X• ›øÀÊfÅÌšUÈ:¨Ëî««bt?JØìÿ¢)‚sÓg³‡­ám<Çu¸„ÓpÅïêúHº\©ÌÆP`e³KÇJeî=Áf‡ß9>æ.3œÕÍ8›¿©j¬åŸ=Óë¡êIŠ!dú¯‰›#œ´¥Vï©o2º6Wèõ€Ùl3`²ÚcçUV%šœü.ž8á"KÑ©G{h?ýðq^«`v þ²è{ýÑÉ6{ŒÄH¤Jqê/_íìê!Ÿ¬é!MÎÕ¿ó€„n;§½°–BÈ@}ñªFgçþÓ³!>Vû‚h·>¢ÿ©!å4¬è®÷'…OÎJ:yÏg¤‡Î÷X@d&ï wðmï4HŽåÖpliدõõÐ/ê¡I7yt{k›ñÖJåÐѲÏé¨!~”ÉOÒ݉$M1RŒÔãm,g€æàCg6M¶Ò_šl|Š_ʧ!Og˯cuå:6ÇBdÔ˜¼Ï %@aõtÿòOwtÛÑmºÎÃ/Ôð k®PÇPŒÀ «ŽÂR !„P X^'ÚÚC§ö¦èTY÷mɸ•¶NGÃä|Òlñ.ü’Ž&Úÿyf""p»nÀꀳŒTñÎÎÙzW{­ÀíÙB8ÛNz=ÑhôˈŽfÊ>¡½\í‹$<`ÁXÿ²/J?¸:QB@IKBHCSŒ‘*¾ÃD@f$ðص\„öð„ðžÁ2£ÜßwtrP:zÊ»Œ.‰‰¤èÔ¿z!ÂEÙZÊñ\A8”¢?^“,ØÿñÖ2rúçLÒH{£‘J^” I!yk" ê.(¼‡ŸÍÛ¨æC+©!d7ñC~ª|vJ×´·7NxDð®ã=Û·öü6Ù¾MÌ6ªüÐ9T‚7íü¬3RÅÍFŽ0äÂ>°»³ÒHÅÈg¤‡ ÈØÑ±-übÛŠQê% ’‡)ì@éó¥VëIoY­MÎ5ßorÂâ °b \ßÓXõ»w«”TR˜(¸¾«Nèøê¡r‚ –:¤Êz~ŸÚïNîÖÖý€ïlí’+¦Ö.éÚùïÓ»v JŽ3p-·p-áP;?édâ GKZ~•àdß'÷%û›/îulnÙúÈ©-[ûî{»ôþ=8l®ƒ¡˜éÔà4á“ô¶®œö+¯Hm¢îØ1·­ri¹½™ãÿü»¶¤Õk=„n ‡þxiÀš­Á”±€!„’¸/cB†]Sàvl8ªrv¹®™²›ø!÷lß6 Ò ê2¥ÊŸ\&oܾµ·$È>áõ÷0º3j˜ˆÓ°â¶ú¾ê‹u|C8ôÇÏæ¤Ð]—2%|ù‘Xú€ü%|*;P®Ûâ=å]:jõžüíµo»·'N13Ϥ¼„Êt=g–¯5Ëë™Ù¢Y§ëXBön:,Þ“¿ ¡>:8š>º;)ÜÎG{=„H8ߣA&&ißV–¼¼·ÂË»ªë®rU3º3/ct6ûâ[lvckI½±ÕYtå§Î¢æ†ûŸon‡xQõq}|ÇèÎZÀè!Oâé¾ýfO·³ýò9ÎvgQ-í,"„ü…Š™òÅBvÙ˜û:æ6ؾÙ`wmv]çÚÁÖßÖý¸xÿOq¹XŠþï‹)ºÐ6gv¡-ÔýlI¨Ò“}]%ûÀi*ßýŒ iÀp$ÆÚÍ–Q&…¤Y|×W,;·¿b!$LH|Ã{Å7ÄÜÑOÄXàÝN¹1SN?é¿pÔ´ôIƒÀí!n2SL`ÍœEÅ|½“bùšBÈžë&H$)‰pâÑ¿Ófÿ齕>ø-WþÄïW‰ŽS”ŽB0]GÅÌ^@1BÇŽð D3Ê2¡CËL \ûS­«šƒ0MŸº?H vß5â %¤ò®ïË^>¢?Þ±Užs’½¹ÍtùS!×SoÌÖÎykf=w:ÒõíÍ˼öfiø<ùß|·c¢ ÝÊUü½ç:¸iG2ᬭàÙ™hßtf,nªX°ÉÒÄÑ/ü;ÜF‚„^ž?)ü§!)ð _É7ÐÂ÷g1º0 “6~¨V¯õº*Þt€*¬i"LY朢BÖêµÞ'ÊÔ±sŠ ­…ìQ7é#I¡ûÖDXà^àz£Û¾ì¡I”SÖ¦ïs7 [½§u”E=ÿ ßþÓ,12G7’ „B¶°AÇ Ì×–>Ú¤;îK³â&1¨I’ëÚ™ Bÿ ße³Ÿ}„Ý&íEA³Àíjêã ý6CÔý¤Ðõ¿D˜oøbße³Û¦W aòÇ'Û\ÐÛRÕYÝj‹ 'Z^*½GuôBöG_4’’åFÒÞ¶´·e=å~ñøËV‘jR5Â7|±o „Rx˜~ࣴ!Ù°¥!)õ£%„„é'ý$³‚ò:LëŽ ˜ýë> ¤Ó½„ØÉ2bϹ½‚ ¹ 5’€îjú*Џ}«¥NPm8¾ãýp(Ù–ìH ‰ð–«£Y6‰ìá ˜ƒKý)›}éJ{¤¡éÖ>6"tìú7iIDß=!ææø—?—¬jovD™ÍA›½bUU\I¦ŽèÎ20ŒnÑ1v}ç‘=–½=„¤Êz;yOˆªÇï"„ÔeJ¯J\ìv!„8Se=‰TYÀ¼Éo&dOJ’B7I ‰ö÷Äê«5›êš@æx® ,ÊŽý½±ÌÉ^ÙQWÕÄýÚÄ?óÄRª’9ç;©ë¬ÿ¼! .ɾ-×$âIs7ñ§nOH€}¬¨9hc**ì¾úŠU—²F¨ßðÅ}|ÇÿÉÝæâÉvÒ‹6W'Àë&ñ-ÞµxNx^àꪯ9­®Ú´Éü Ó&cA©'î™Üh$!à$°_yo× ¡¶6oÝíöB¶’ŒåD1#B$ +Ø÷çßïùì™:èù-ƒ=íg qe-«N¡WKeöz‚žÇ$2!Òê^” ëîýäA⥉‘ÒM׋ÀÚá,Ž ASë½ÍýnvRKèAÆŽÄEvü„ó ,&s'È»$Jˆd]2´ÝOZIsÉn‰{2eB¯=AâO‰§ï~ùç£W+‚Œ/ °‚'kruòµäjŠ)¸™b ×¾þÏßo_Ÿï:"‚Œ'û<é%YÓŽ8ÑÛuÚê I`2€1MMÀë4NÞ'ñtâÇù®‚ H¾.É‚ÿ ßì±¶<„ÛÚ~4õÐ_´ðáHA/RA™4Œ<²¢ì’E1»dÖÖ~´¶Ž71÷?.Šº !X‚ ‚ ã.U/a)Fà!°<‹bnöã„PÌ®KÐÚŠ ‚ 2$þžG\Í|×b0Œî¬C4%h~rÿ6õ£K]ÕUAw ñ2œ¹b­‘DßÖW‡ ¡˜];E+,ª­‚ ‚ CP[ôóç]Õù®E°þ*9-4$oÙéuŽVY°ÇX¹Š¸W†ÖHâæ®{$Ñ[XãçÛÚ¼cÆèu‚ “dß‚^_‚¸hwU¯cÛKulc -f GžÐî_;ñ÷ËÆžåà@Dl¥˜¯ÑÚŠ ‚ ‚䊙N N%u¶…ŠÙq%!Ò…YnsWAAä`@àö G>8B¦ß›Î9u!¨¶"‚ ‚t”Ì:îYó’|×b0b,X’5u!°õEµA$p½_àzÁ§-ßuAdt0W|Çk®((Ÿ.(‡”ŠeçöW,ƒ”d_×Cɾ\sŽR…u¼”W­‘öÇxœqIÄøz'!èÛŠ 2 \JŸ( ”V%ª7U% =ܾ&ÜFGO;…Žê¯Ö5ޤPdËçž½¼|.FˆDÉH¼ý}w<½êÃÑÈ9º()©ÞµóƒŸÅ7ŒMÉZ# €µ•=Ë)†b¦ì¤Û·ZàŽ´¶^N–N{§%ßuAd¢S±¬âÙŠeQwìð¨{äÒ¬^ËV/¬&ÎwË9ÐÐbUn‡H¢€“À”U3–d²èHTàH¨ç³ùXO®õq_]ÑÇå»W·þò _¬ã”r–|«§¤`²L;B=ƒ¦u ‚¦|×Ar£¼°üÓò 50µçöß°Â퇔æÀÚŠæÜ0åWØxø¼ÂFOË<’LPÁÚ*MO´'nN´WT.y­¢¤Á_HÉwO 29Kª–¿ù®)!i×´ò )Bm‚æÀ¢ 9T·ÞªSε»óà¶IøS¿;'Ûî Ê'…®…I!w©ùeæ-ù®‚h#=V;z;Žêè…ßí럛ҾÞëüõZ1:µÉv¼Ëd‹®|£#º²¯c§­¯ÃÓÕðž§ËÝz#q·j/Oèøj»ÐÁÌ]Ä3s)†ºbz~¼­g!Èô­{à]ߺ|÷ ‚ Èh[Å-^g>.zµN k+`³WmvgÑ•O9‹”mŠ3ʉº+²Ù$Àzö ©R@±›üUR‘“B÷Ï“‚Ô]ÚåpE\yY S=Ý“¼ÅéI:¾ÊЩÝî"Çî«<Õîó§üY7mk>ÔÚ„‡M9þ•[9>Eo §ho ;Ë[#õ 5”,7ä»­‚ £ Diÿ·gyÚÚ:óñ åÛê­¹gƒ·¦Õ½QÈ:‹®ü£³([®!„O)Ëi>tfs°}ý†Ú×{º®öt¹ª¯~ØUíO=6ߟJlxïžÄ›}1g³{kï=Î[+—ÐXr×%¾u÷Ç·ì(ÍÁ拚ƒCY‚S{%ìÆÆ’È‚Ž‘`#éYøÑ{= +}Kî¬ôi—æÔ×9õ‰pü7‰°ÔûTüp(|y8äˆ_x¬#.?·|nÅÝåsM6Ó“ êýrµÝrb-Íïn½±ÞÝZßRßXßY9)² j¯ ‡bõoÿ2V?<™2ùÑú‰¥Ö¦“«­M΢+?uùS-üÁI]0”œzk¨‡†ßÆ‚Òß¡’Š ÈŽîjúC¢â PÌŽØ„Š$@13¥˜@麺@)í¢ß¦]¡øzw(no^æµ7‹¹vSCÉa‹ï8œ-6U˜î2U”ѧý Œæö-æú·>üŽ+Õyè…T' +è@,;+$í„öL ·/f‹™ÂE›Ä ÖÊ¢ôª²hØö§ùa›½yI×GBV÷½B–$¤©ÖweSm]UÝÍuUP7ªüÐ˨ríýc²•šL¶²(m.‹úmþù~[)#envŸýS»O§×MÑéÉZò4Y g‚›ºÞN ž®†_yº!4!úNÃ…úN§±f¾ÓèK­=Û—bwÖ(í[¥m“­’TB*Ér,™Òëé]ØëžL™ü íЫµK®˜Z»¤kç¿OïÚi,(9ÎXÀµlܵ„Cí$ó|~/W–fˆÙ Bȳ„€g?ZX$¿4oÝÛŒâèS¿„8õZræckÖ‘"îµë’ô’¬] ÈÞ;¡ÔVð[-‹•…ÊbõþëWÔû©+Ÿr¦è²ïŸL—IóBŽU–B13~"†¥ÍH/?tŽ65QÑߥHS ÃFC¤×ÃoìõB4*› Æuô¾4§£·±ä®ù%æ 9hšló1Rþ­wJ¡½ÚûÇ©¿œsê]æ«v™}÷o÷u4›w6ѧ*Ñ>§ñUÛszIDATŽÿUæb²¤ðï.ÑÛê“ÙÒoìÒGRE[é"ÒOéWê‘ËT}[‘É€µu¿» ÅRt¶²’*g´eVd²nHrÉâ7 ü&ˆêZ•p|P• Íô"ÚlÜ\ÒlÜì­ùU“·&â}ýŒˆ—ÞtÆ?èMÒß(U—Û\ûF×î".â"†×‹n4¼N­.xZÍ”0õLI;Ù9]„ B:¶…_l[1ÊB½$A¢c]sðm¥˜]—P ¨ª7s $ÅL(µuÀ’º\|XÂ[ל\e]“™sÀ'¬pìëS~K"ÁÎ%M ¼'5- „„D+KÌýsìGßl°»6»®sm–Ö0UÖóÛTYRèþCR‹,§0¥ÌÛM©vòÂúÜ^6»; ¡Ê]N•;ª«f:ªýfÿ"¿Ù[ÓôŽ·Fé(×XPÒc,`K“l‰øˆo@Ýô§Z_õ§œú¶é†±‘‰ÖVd¢£ü¿!Ù°¥!Ù@H!„ØÄô€iÝqS ݇ôY^Bìd±+J†O\yYàVÔÑÛA:zÉ8†%Gk(fºÌùó–bùš¤wÌšþ8!„ìºdB-É’ci:évKSC—gQC—˜ª­Ú’¬‘S¹ö‚ŸW®…å•k—^¹vÇ‘NÆyºn¿ÞÓån­?ÑÝZ±lÉÕËØbv9[,Êž"¤ëãû¸ºê_̪«–F[ ˜ƒushÅúÿ††ù%ÔÐå~¼¡Ë·®ù»¾uNý¥Ï¥ vlk¿©c["œ˜ŸCLK¾{½i‰ÝWy§ÝÇïôçî:Z2›Ï_éØ,M ¥[Þ!‚ 0Ó ³9CNFn=¢LEˆO`Â8 ¨oc Û'aò J‰±@~–›Pq[AA&3Óuù®ÁDešN[>PXÅßÓŽ8ˆ-0# ‚ ‚LVL¶Ò'¬^#5o¾‘2Ró0RáÐsÉ6WR讓îaI1vß§VúŒTñ+&¬çI•}r_²¯=ôÜ}!WŠNýKŒÙ|°‘imÝûÅÜV<ŠÖVAAQ@Çê~¨c“¿wÇúÆ#~¦ï$dú¾L?TŠ¡ž$$)l¾.nÞÿ,[±`{=_þWà*ìKïζmP&Z-—“‘ýq[¹ À.YhmEA:­¯Æñ„H˜BˆSžGà„‹.ÆýƒDaÕÌ@´õ¤/¹M•V%ˆ‘ì&yÞÔ _ìÛj!„=$­¼î¸­­‚ ‚ yÇH}«ÕdW|×%ŸìWRcé%YÓÓQmEAÉ&Û Ï[½à 0?ùˆ?•ïåPR3Uدw¢“‚ ‚ È8’Ž6`ñš´z­^z&£óÓ®j Ü—1¡$ß5Ì/Ó"„bv]B!{®KÇ˜Ž¾­‚ ‚ ãÉž‹÷{OZ½tô‡‡Øì~óû¼µ‚Gxf ëAΞåéßÓï%„2KTdQmEA't윢BÖVYùyU2LžéÕQÂÌ Š™Y_0‡÷lßÚëÉwMóƒ7``IÖ~vÌBµA$op½_àzËçž½¼|®–}ã`ëãÈ‚ÈI‘Òí¦™ÔU]óO—®ñÐ3(†r,!U‰‹ÝN!{· ÅÍû¿ÕTkˆ|óa#E„b«\Zno&„|ž)§Ñsën÷I€b¦SÙ6wÝë’lg¡ÚŠ 2 ,ÊÓõ‘"›>âˆ;¦8â^ç¯×z¹Ë}ÜWWôád"‚L8šƒ÷ŸÏ– !¤›Œ V`HÝJ<Q(›h߯ïômlªùUgSMSí=íMµá¶ð5á¶|×AäÀ`ÏòÁ½N˜X ,:Õ8êy’}]%û`ZMÉþ1r&š%Zªô×Útrµµ ú$ß5¿ÞÐ6Z6_š{ô»XýÛ¿ŒÕC¯”Ï ”ÃoíÒ ô éé¶ )ß½…Œ.3oÁfŒvßÒWì>H¸Ó3—SÀ˜)/,ÿ´¼ÆRaãáó ÝþV 5ý—hOÜœh§cߘŽÁ4t}•¡3ß=€ 2¶HwÉà÷„ €4Í•+~v^å {ó2¯½9[®!V¯å «·cÛKulËw­Ç°ôT%ª7U ¨k©²žß§Êœ‘+æ9#úÒuº§ì?‹{Êò]Óñ@ãhF_Ø–û©m[|û+l±³¾v³Þåpé\ŽŠe•‘Šeñö÷I¼]›¤]wB©Ìw_!£GúšÂÝçé¾åHOwY”^Uµm[|¡-ã‰T>·âîò¹6ûâ-6{G ÃÖH•õÜ“*£7~&½‰bf:)†Ñ¹ŒÑIÏ:¾Ú.t0sñÌ\O¼á9O¼®~E{]=B¦;&_ë‚P0…‹¿ýÍ8ÀÓ»ê³û{ŽuÍÁ1bPÌ×$í$ð5™ ÖVÀf¯Úì΢+Ÿrñ _¬ã²åÚ#$êŽuÃ"é1èVOË<OIÁ·zJ ÀÂ)`kü Õ­w‡êäe$…îŸ'sÅw¼æ àr¸".‡¼,¹SžîIÞâô$ÁR"µ¸@­FÒcúNÃ…úN»ïgÚ}¼§÷>cÕ¡vKÏÈû­9°¶¢9 =W©PH€ºAJEå’×*rPð´–ÝûmSZzì[)zk8E;â½'î ÍßÞÅ'Âñß$Â`‹ÉUC&/õ­7–Õ·Â87-ùîõ¦%kg,bm^÷ÀÖæu`…œàh”º&OWÃGž.H‡{Ö©¯9é÷§ZgøS„Pd–q[Â!‡uŽíuŽÜj‰ ÈÁÎ^ü•ìÛrM¢}$ý=¸šã[ÿ W„›ùxæï ¤¶zkîÙà­)duo²Î¢+ÿè,Ê–khûYsð¡3›ƒíë7<оÞÓÕpµ§ËU}õîjê±ùþTbÃ{÷$6Øì‹9›Ý[{ïqÞZ¹„Æ’»Þh,ñ­»ÿ;¾uí럛Ҿ¾9Ø|QsPIÍUÔ ÆvccIdAÇÎÈ‚¾Ž¶¾Žž…½×³°Ò·ô®J_.=”ž { ¼›jヲ©Ö©¯Ñ9õÒÜ`é1ÙL[L6(ÚrµÝr2=Zýf²ï2Ù¢+ß舮„²<] ïyºÜ­7w«¼%îÖëÝ­õ-õõ-°&:j¯ ‡´+…ÚFKn½!p;gd‹™G1Ô93pMÉ?&¹^/äÀ ©æ¾EM5]}ÿ6tõõ6|ñqoC ôñ/¥•kÏ_^¹¶ÑØ8¿Ñ9“¿»’‹ @U•ÊÑG¾±KÅ”á©ÌR’Âó“‚ŽûµŽÍw‹™Œ¤·3˜ŒHUUÑòšþ=œ(fæ±(]W(¥]ôÛ´+_ïÅ•§€³Ãßq8[lª0Ýeª(£OûA-Ìí[.Ìõo}øÿVªóÐ ©N:@WÐX0vV,HÚ !í™n_Ì3…‹61…“€aÛŸæ‡möæedèúPRÈê~[ÈB‚„4Õú®lª­«ª»¹® êF•Z-Úf´àØ|þJÇfDzґ1GÈòì;,ßlp7 ¨¡û-=o'OWï<]„z¿¥ÇX3ßiô¥ÖžíK±Æ; ky¿1…‹3…¤‘Ò*µ‘úæFŠ÷l›Ê{H!$à =l«´m²U’JBH%™BŽ%Sz=½ µEªGËS?”Ò®S¶g-3Êré í¦•µ©à4jSsðaÒ¬#Wn¯#Mµ÷Ô4 ¦÷qÂZýžÑIàÀcð5µ4t»¥©Ž¯Û^Ç{º=xºHi Fê[%FŠò¶èN U^Sôg¦h}¤èl}D^†Žý¿ïêX¾hÛT¾Hzï(Ï* 2~4$ï˜1^1C”Höm! îj“ŠÙc§›IŽ©Ë ¡ò)ÅÜìÀM k+LéB$Âú–ë+ê[` úƒu²Š™ñÑ6–‘.™ÂSGÑß•ù:1D  ‘^ÿÖð¿ÂS¢b>¸‰pb~"l^bš—€ûA®ñ ¤«˜á¯Å{Ò/ÇsŽ—æÌÅÒ3:ýΰpÄYtå§Î"걥ʻ*Ë{8w`´œüŽÚhÙÝ™Ko@KÛV¬ÿsÛŠ€9X0[לúˆu äü†H‘Ý0š#à|µï ‡ ƒEð3R%¯)¶¤ñ›ìÀV0>ý©ÖWý)§¾fwæ Àè~R/z»ÂŸ‚ŽÍ—›óÝbA±EàÈQq[Å…Y_Ï8ˆ-0¡ÔÖ´[üË»ØbCD!â,ºb^z ¼O«5=tÏ¢ÚÑ_§¬²dS¯ -‘½Guôö®ú¼±w-³ÐQûÚeß°¯Í¥ƒ'¥OÌ ”F¬oE¬MÎ5Û›¾ÿö[z²Öj¿¥Ç6RőѢ¶èŠ©µEm+þpzÛŠ€iÝqS}˵ÿ«o‹k!Gy´ §7l•¶ûm•Ñú·ÖEëãíï»ãíV¯¥Æê…£V¯¥Lü=è$p áØ|q¯c³4ŽGÉ,Ó_Jfõz¶¯ìõ´­øÃCm+¤ù;¶µß$~²‚G5xÄÚ}•wÚ}¬ñN¿8×!ÅXp̵Ƃ–­|ݲÜlŒ³Ž¿É8Ë©¿ì™lj.‚ È„h[ù¸¸ öÇv9 dTºüÐ9Ty üø—°uÍÉUÖ5â‘ᬠ  –u.‰;—4-ðžÔ´€"„b ¤˜˜û:æ6ؾÙ`wmv]çʰ…€’”ºÿÀú¢k<¼Z×hJ™·›Ríä…õ¹ÙøOP„¾—÷VxyWuÝU®jFwæeŒnÀÒSPÒc,`K“l‰x?ôv¤Êz;yÏ~Kg4^¼‡ÿ§¸,Eÿ÷Å]h›3»Ðê~¶$Ô é¶ÌXP²ÜX0ì‚d¤G‚òh!d¿Ý+£7|Ä7Øîµ¿7àŠCß´¬»õ†:w«SïüS¯ï4”ë5!B'-ûWÉ1”þÎXÐÑÛA:z !6B!gæÏZ¹|§¡öc§ÁÙPKœ¢c@!¤¬¿¹ßÛ?j«ƒA&»n8BÈÃikëÌ;'¬“€ðkèò,jèRÊ3T®½àç•kaÊ»rí²Ã+×½t+EX´än­?ÑÝZ±lÉÕËØbv9[,•ÓÇm¡««þŬºj°µÀ_˜€­XÿßЊaTo°Ö˜Ñ1o2:ÇæKsl†)ÅLKÏÜ÷ Wk±ôä ôIUܱ±*No¢ß¦7YלZn]Ãè~btàÆ@o:ãô¦±¾jÙFKZµíØöÒµÙ½šƒÍç4!qÖñ7g)ã»FÊ·îþ“}ë´×Gn™ƒ¿ y¬{AA&#Ò=±DkëôÀM %Yê– P)Øþ; ;ÇXPJŒò³ä)J– Põê+Hfp™,5©øçάUC²aKC–_ì'DH?é'‹ ‰Ö¿E¢õûå6‰äöNÒzIéïŒDÝÒ3ZýŽþuÒù½„ØÉ2b×ÔíÖ¬\GË@o”,Êîø>Ú‹ì@Ù’²‘_/A.{ù|×`,™þ!„;ÅBNGø™~ïQ[AAmLÓå»c,Æ‚H³k'!„@ÊÔYlI‚ ‚ Èdâ»×j;j 5Hiëuغ6¾ç1Èn _nËw;òËÔƒãí¹nÿ±|WAAä@ )|tKR°ûìÏÙ}°·¢RΦj`ãØÇî³'ì>Çæ‹Cw¨;1ÖŽ˜¸õ€èíJ>¥t@!Æ[wgnzŒ ÈØQ¿„ˆÝêý+çÔû !÷ByV9§t‘7`õ~¯Ðê%E„!ö}œœhõÇcͶ¤· Ë"  ÚŠ ‚ ’ äb"üþžD6Nt=at\òÄC»?îô{ ¡˜]$ÓÃYT[AAƈhΖ4Ö°%±îØcÝFÖø]#kZWÚoÊ!Øâ8€“lî*ú¶Nh»d!‚ ‚ø@XF ;2êXÝQ:¶bÙ9;*–å»vùDt Hû³J#¹¢ÚŠ ‚ 2Fì9^[¾ ûOΫ°«/ä:—d‡+l4övEµAAdŒ˜þ¯l©–N{§~ÃÞ–óï›æ²(½ª,šï:çŠùzgzIÄH/ÏBµA$o©âf#Õ¼c†×©%?䄳òQÛã0Ù´×A6 öªtïŠeçöW,ƒðg…tgQ-í,‚ôÂÕG¾V¸ÒC+ÖÏß'/¢o+¸ H•WrF@%EMèØñ¾!~ïœD8 ois廦ƒëª{º-hJ„ß=':°ñ³ÉöíošlIaëáIAྌ¥7NÔžCòlï tU¢æº:CðRÝÿß5çDö³ßÂJ$Ñ[¢µ5ƒ)S¦;eŠÔt € ÊY“sõïŸxBmeÑ‘¨þÀ‘PÏvØ* RÆ¢>}ÜWWôåd[`«7kÓÉÕÖ&˜P€¶Ã¦p®´}ÜDj4­[4å».2|nßU—ÿ“ÄOèØ#—²UñËZ몒·ö±Åõ-7ö±Å6»m~¥é:eùúˆþxCÄ©¯Y]WUWµ"èn©o¹!áÙÍq¿Õ3 &¿5×Õ9ÄšBHY´ìcFWWuÍ<]`©…ÚZ¼–WiEO;CD¿ÍiòúWÅ/¹Þ©ið·*^uÅdAÆí1P'#{–BÈÌ;)Fê0á" ÍEA3ì竜k†@ˆÕkùÂêíØöÒCÛò]ë±ÔôŠeÏV,sêkzúÞU[í]ÕßßÿabÃ{÷$6°Åwβ…¯²ù®¯vfÞ’ï ÈHб³f²ŒŽ¹¥Âž*ë¾-Ù—ºþ—^ÿ;]Gˆ#^uQ]ïùtuŠn4ÞeðtûS}«©ÖH·ÚdctguÚìrÉC=I1Žø¥ÿ¨«ŠºcgÄÜÍÁµUÞÚ¦Ú_›Ø’‘Ô9h~¬¦98ðÛÔzos@êØ¢SöÐþÔÃû¼µ`QŽX#{9žÑýèälõTÇ¿äN=Ø„À2 2áööÐr¥@d¢!Æ G œÔÚ:á" ØìA›ÝYtåSÎ"¾á‹u|C¶\»)B¢îÄŠ¨»|îÙËËçJ%ÏßÓ2ÏßSRð­ž’°MB Ø#ÁB •Tä¤Ð»3–:V»®ˆË!/Knã”§{’·8=ICçÑW:œ¯ŸWصRï“ýßS4üvÄ/¸È§ÊugRŽÞúNÃ…úN[¥í~[¥¥é¤Û-MÒs›k+šÒ~P*ê ½Q^Xþiy!¤TT.y­¢Ršs$mÉd×£?‚dl±Ùm‹ì>°G:õËÿ]ß h{è¥ÏÃ!ÛË9ÔÑFJ×xxµ®1b}m'Dz‡'„÷lßÚ뉺£‹#V‹w±zå¥)ã³*?tUs¿wNÄ:>­K É[a.8PyÿÞ5Ñ.œ%¨òÙßÓ5‚’ 2á(ôÀø´AÉH¦cÀžåikëŽØ„R[½5÷lðÖ²º7 YgÑ•tªìÉ+<¥|¬9øÐ™ÍÁöõh_ïéj¸ÚÓ媾úaWµ?õØ| ,”6ûbÎf‡ÔäKn¢›j}ëîÿŽo]ûú禴¯o6_ÔÊ<Ø´­±„ÝØXYб3² ¯c§­¯£gáGïõ,¬ô-½KœžSö,†pÖ5§–[×€2šìÛ|©¸Q “íx—É]ùFGt%”ëéjxÏÓån½‘¸[åùÝ­7Ö»[ë[n:¤¾%² rRdA8Ô^Åêßþe¬~ämAÉN8Þr5ï?Ÿ-iªýU§»Íõ”ÇŸªô-]Téct?JˆVIŠ9ì›âì‡\Q¸›;y):Vw–Ž…€8ãÙ:ppê¯ ¹[löŸÞ[é³xOxÎâÍUÅü_»rÛAÔ÷ÇÚu‹è0A­­3óXŠ ”®« ”†\mo„\¹ª‰Lš›*Lw™*Ê¢§ý¦,*p}W œëÃGù·‚…’ŽÒ×ÒQÞÃÉ{²I¸}1[Ì.ZÌÂ_Pá?-‡´×¤Õ}O||7Õú®lªå¬`‰Ñ"'byíʈ¥¡ëæSºB®¶GC®’Y¦¿”ÌKj“sÍö&§ü%5‡R਑úæFŠ÷l›ªÜj[åÙ‡Û*A]†ô^OïÂ^ÏhµA$Rtê_=tÔ;#ê.‹þ=¦ÒîËDuMÇÎ)Êtࡘ٠(¢ÈW œÐ-pr'X@Ç¢à‡j«\Znons]þTÈõÔs§5²€ãs•&pÿ«H·ýÈ¥£±ð AƒPOá/!Óï7ËëR[ ÙÝ)Úë[®¯¨o‡TYÏïSeÚ¥PÌŒŸd{¸kŸêÒGôwé3µ†ˆa£!ÒëáÊÅr*2øà&‰ù‰°y‰9h^î¹Æ+pj?v:z;Žêèí۸㾠hzk›nòÖV®½à½ÊµÒü0q ¶œEW~ê,ò§[êOioõصA&?Óuâ¢+#õ­§M6©kSRøOCR€:úýYŒÒA…µz­/Ðј{‰ºå‹«á-W‹Áª,Þï>OGAaµûÎ:â£U{©=¸€¡®Ÿ™…laƒŽ¥˜Ã,…¬Éf¾Wtc+ßJ€¯ÐÁ¿Â7ØìçØ}p.´"_g™<ìYžŽÛ:u!³ëÑæ:¡ÔÖû•S¶ø—w±Å†ˆþCÄYtż´ÃÀîÎ|Ô¬‡îYÔC"úë”-©²îÛ²©×`õu³wÕ罫èh™…ŽÚ×.û†}- ‚W%ª7U%ØâÛ7°Å0¡GÁZ[tÅÔÚ¢¶8½mìz\ßríÿê[FÒ£×\’…L>ìÍçUV%Äuñ·ìô:ë¿hoH0º¦Íz=`óîá ˜ƒOúS:ö¨UúDؤðÁªD˜ã_.Ë6{±TÃmÏ¿ªƒåPuU×üÌÓsÇ~s¼–—¿·A[,Þï=iõ&…hA¬b8õ57×U%…ïM `8pê¯ì£¨>¾þÔ¿ö§ ˜©)BêõŸ7$ëý«.eeÑt‹J<‚ ˆé’,Ñ=`ê,BÀm`‚n7jY üø—°uÍÉUÖ5â‘ÙãlÓ°sI$ع¤iÁýsšBÞ!„b ¤˜˜û:æ6ؾÙ`wmv]çÚLy”B¨ I•õü6U–ºÿÊb–{-^˜L7¥ÌÛM©vòÂú¡" ƒ_i8ô§@8Äè˜Å{â£/ô¼N‚›Ÿ|;¸¹,J?#nÇ{øŠn°¨«Ð6gv¡-ÔýlI¨Ò“}ŸÜ—ì3s­±@K?@Y#iK&K²*s: 9 ` ÛÞa±—›«ßãæšƒÍ¯7¥O- ”Ò›N!ô&X4ÖÇmÿ}W·ö³êÖ&Êãï'VBÞ'«M6sÐd ­X¿3´‚Ä!1¥šèØBƒŽ×&^ˆ×ÜÁ?ÜÉÕÉ×’«…E}W ‹tìܯu¬­u1gkmª¹gNS é$„t‚£EUÂñAU‚6Ó‹h³qsI³q³·æWMÞšˆ÷õ3"^zÓiÿ¤7õ”ý‡ôhrÀèãúø‘µEŠcóŽŽÍŽ)ëȈ¼ °Økì¯3’O’}[®IŒh‡˜‰ô8>ðHGE@d22v±í‡‹ÖX³¢{9Jà™þ!„슉NBm…(¤JGYã~ÖÈößIØ<Æ‚b,Ÿ%OImyzcE{£Î±‚d†ÈÎR“úƒ&ç’ [’ ¤Hât½CH?é'‹ ‰Ö¿E¢õûå6‰dŒ%ËÓ:0‘vâ&Ê[Æu’ãH†8ú×}HWÈKˆ,#™A•ú_ž­kùpÛ¢^‚ ‚ £EǶð‹m+FY¨—$HtäbÔÉtØs”À2s¿åuBù¶"‚ ‚ /óõδòšþ GQmEA pg­¡¶£Ö‘v´l½ÙaZVÔä»ùDŒ^Œ%n=0ý!T[AAF…¤ðÑ-IÁî³?g÷%Âñߤ7|Î(µþTk¡rxʃ ŠÖ¯g‹VˆÛ a°&„o+‚ H~°Vù®‚,$û¶ѦXï_9§ÞO¹ŸBȳj=ðÉ}ɾڢ+/¨-êØöÒ‡ÛJÜßzµd‚ÜMv@Y¥˜™2(†ërômEA7`ßÊŠe?Þ[±¬eëÛZ¶Âòë|×k¢ *© °I¬¯w¢µAAdÜ€]-zçN=S¸hޏ)4"î`mÝ5[àíAßVAAq–[Á®–îÖúÝ­° Kc6Nor®ÙÞtº-‰Ë°¤›»‚ÍuæãhmEAL¦»L}wÜÔ·Q~´`Ñì EW¾uYt¥¥é¤9–¦|×7?ˆq¾–ØY¿ž-p³gÇÙnAAä`¶gW<ÊòŠÉwó‰¥5# ì˜8T[AAFˆÕ𒿤)ËÎí¯XF ßðÞGñ C-ÀšIç»Qa…ÐW{>¥Böt@Aâíï»ãÊÛ°«‚›Ÿ·UàHHà(fÊE‡ðsÅ%Y‚ ‚ Èa]t“¸Ý¿8B¦î °¿Nµ5ܾ&Üfm:¹ÚÚTP>+\P«ê ŸWØéZ¶GCAA&/b”Ö]—d.Ï‚ô<«­É¾®‡’}Ë*ž­XæÔ×ô:õ½«¶Ú» Lå‰ ïÝ“ØÀßq8[\Ⱦ^Èæ»3AA±bÿ2¬ý±Z¥a°ò¬¶¦èÿ¾˜p>vÄ/¸È§ÊugŠ+ìô† õ¶JÛý¶JKÓI·gƒh¬­h”|«§¤l´`õ÷´Ìó÷Hs‚í6T·Þª+/,ÿ´¼R**—¼VQ)ÍéIÞâô$ G_eèT—‰ ‚ ‚Œ.¢µUº$ëëâÑ<«­e±²PY¬,J¯*‹ZלZn]Ê(ìÕ«~®Év¼Ëd‹®|£#º²¯c§­¯ÃÓÕðž§ËÝz#q·Êó»[o¬w·Ö·Ô7Ö·DDNŠ,€¿±ú·«‡ À%ìÆÆ’È‚Ž‘ ³gáGïõ,¬ô-½«Ò—ß¾BA9°ÉTXw]Bø¶N' byíʈ¥¡ëæSºB®¶GC®’Yóî-™–TØ+öð•žÅ.ZÌê¯Ö5ÂQ#õÍ;ïÙ6•÷ÈKa‹o_̃íÔeHïõô.ìõ²ºï‰NMµ¾+›jA‘…øjPJ¾û AAä@F´¶¦wÉ’Ú_'„Ú 8 µ; ½GuôömÜñNßFP4½µM7yka_i~˜¸‡[΢+?uùS-õ§”äë#ú»ôÅ£† õÛ^z¨c["œ˜ŸÃkƒ­ÓÒiï´ä»‡AA&#{ymù(fוéßäSŠ‘¦Lи­`ã¬JToªJôõóúzjCW„kC„Å]}k—\1µvI×ÎOîÚi,8æ8cײq ×µ“phxå‚—é]D˜^¾á‹F¾ÁÝz£ÁÝj-û·=ÔCþCÐÁAA$7¦é´æœmIÇm'é„›nÉ»“ø•6ç7Á¢)uH•õü>U4?ùvÐ þ¯Î{øŠn)ú㿦h¾á‹u|CÈõìœ ÒµxÇJI•uß–*“ZUÁ1Àd3Ÿl²å·—AA¦ü—b2½Z!’À{Þtl¡AÇÆÃ‰âagQ-í,*\}äk…«a¥¿iÉw¯7-ÑG Ûõ‘ЊõsB+à,ðL­Š;6VÅéMôÛô&XÎÅè~btïIgX¼ô¦ÓþIoÒ^“>NHöquÕ¿˜UW 1àoÀ¬ ˜C+ÖÿW,AA ¤[ €W«ôhž`gÞ€i ˜H;qå-Ñ:Éq¤Sš0­;.` ô¯û0Þ ÍKˆ,#öŒS•6L”¾˜hý[$ZOê !õûÓmÿ«'‚ ‚ HÎh÷mq;Å"Ì8Š™ºCÜn‚_M %Y‚ ‚ ȈVßVëÿ†ha­­,‚ ‚ Èd66ª5ÔvÔ ‘ÒÖô°’rÂÆFð×åpE\Ž|·#ŸHC_‰›»Bú €… ‚ 2yI Ý’ì>ûsv_"ÿM"¬”w&…ä I!¹ó_w%wö6|ñqoC]UÝóuUùnG~ùz¶¥~ÃÖð{‚ÀBA™\ÔûWΩ÷Bî'„òl¶<Q’^Ü|=¾!Vß «8ü]5U˜î2UŒ¬{xB!É|÷ÆpI»€o+Åìt;ú¶"‚ ‚ŒëkoE¬ð;âž ‡`OPCçÑW:ÁÍ`d%L×å»#¬HàÄ…Yik+ú¶"‚ ‚Œ+½þ©ÞØóCUQLWß¿ ]}lñíØbÇæKÇfù†ö±k+DrEßVAAq¤€¡/XfäÔ_têá·#~Ñ{ޏÀõ]%p‰ðæ5Ê~±:Ô=#Fokkú7ª­‚ ‚ ã„Éfú©¸û¦À Ïg†Ó(fÖnqý‚Ö¸­ ¤ŠK²¨{D;+üÆ%Y‚äŽyÇ绂 ã¥é¤Û-M¦ÍæÃL›=Ý¿,ñtûˆøHÀüäwf#Uò†‘2U˜ #]˜5Ñз¼Zn÷QG1ÂNBnæ7¡˜ÝW¡ÚŠ È8[7绂 £ÄjM IsR€”ŠeçöW,#„„ ‰oø×¿âŒÇ\k,h_ÿüìöõ•kÏ_[¹¶ |_Pn²™Ï4ÙÚVüá¡¶„ÛóÝ–ü±û*B(æëë ­­Â%G¹`!2Îtl ¿Ø¶b”…zI‚DóÝ2Avâíï»ãÊÛÔÃvñ„qsûhý[Ë%[ÊÛ´”q # }%Ú\a‹×b¬Aø{Zæù{`§ øfÊwAA(æëéßé0X`…jk¸-|M¸ÍÚtrµµ© |V¸ ¦A}„t¥íцÇÿ·wþñmÕõþÿ7v:¼wé@I*Ó¦m*ì®Ap9\äz êÒ‰’fŠ6EØZÅÛFùÑ€ ) ¤0- mo[ån \Xƒ_\¢—t $½Mï›á¼K@X³+¬†æûÇ»gù¤§'¤?“m¯çã±Ãá“s>¿Î§ç¼Îû¼?ïå¦ýXéî¹–¹{|õßg¾úpóï® 7ç»oŽ„;Ôéhj ²¶@$ØäرɚÍ5Ôlvë'\ƉþrîÄ ©TêåT*ºë…;¢»¼e7Ÿì-+ñ–ì)ñ.T¹V_ÕëVßÐ_Þ;t€OOzœô˜…²›¡ú¤UBu~ûàøA•ªŒM·¶žðFÞã¶&ĉ¿&DÚwŽ^z¹s”‹ÆaÓeÆa{­ý.{-ͼãÏ®v W‘-–ì²´Â}èç$«j»kûÁvék¸óI_Cõê ¯®^MÇдOÔmæ¶µmæüöÀñCæúX$a)’ëò@Þ­­¶ˆ-`‹ØÂâ ¶°uû9ÕÖí}5}d…Õ;+Ùúzo²Õ¾yÓ3öÍî®o¾àîšh}}ßDkpç£ïîl(½ò„†Rm݉îû»ò'êåbØö^1c­QAûƒ;-ÜÙk}©õ¨]Ñàhƒw P#¶Rl·¾\ ¾­¡ª§¯ UµŽ_Nëx ià@SùJ˯ÊW’”¬¤üBgÁÀã¾`@‘'ïSd³ðár³@–WE~û÷Šl •Ú¡`@~-àKñ–Ýþ)oYméÄÏk|ŽnT©JŽ'Þ£Æ ![@°\¦†}.“k¢¹&”¡7ŸW†MÁݦ–†oîni}òÙ7X½ëÜÁê¸øêSq‘íeO³½¾†ö÷øÔ<Þþ“"‹aÛ{İiôýÓ(s2Æœô›Á[üªaÁ¼cÀb È'¬¤%¤™ )r*P°q[Éõ.zIm]t2~ð›“ñ†À•Á†cìeÆÌÂo1 Š<¹C‘ûnxðù¾8ØÆ|×ÌL›ëÛä0Àò>%+ÒòÜw"-4ùiêC?ç °Åž°õWþì¹þJò¥t»cãv‡Y(ßc\¥W½ê*%oWþ¬Øäø½úÞ± Ð ©Wª{ÀŠŸ2Æ; äY¶¼%&ƒw4}|4è*m]¥%·¾ïé’[iî¿eÓß²l2†L¡À¶«S+ëmuèÀ/ÿcè@Ò“|5é1íY³Ú´‡b¾Š#ÿ|¾8 ŽE£Á|w>ÈA:ìHOâ}Z1+ujÞhq³>K/ë³°AæfúK¢ ³ÓÙ°öÜÁ]lp`ÆÌïRw( ,ÿ“TrÁF©D›®MóãälŽ&›« ½’I @}[À±Â2CnÇ©‚•쬽uÅ©Œ RÑy÷m864îtL C ¦Êšù*kô–¦F¯ÖÔnzº¦–B"GGZD‰fûä»5ù«êá*Ü!H¼Ûd+ÀSþtcLqø:üÑàèôçØÔlÞôšÍ.ãWviɤɡCöÉ!çh]‡s”TÊwkòʼn÷0FîäÏJ)œ€–îæU-ÝL]óˆþ‘q1‰‹fá´7 Œ1Ÿš^å[ªò•”~WRÊZc­ùnÓRCR•d+ù³2vªó¬­KНÞ×á«G¤{Åw÷··¹»»ã]kºãž½ßù“gïàÎ]wîÌw—AZ.LOI»¨1ÒÞ®­KŠÕWµÂê3xK3xCÖ§ÿ)dm(½ò„†RSÈ´Û2 ¼Î,Ì¿”BbæHŠ|X™žB^­é}~zd+ÀAË*‘÷j_ŃõU„ªž¾*T5¸ó‰ðàÎuø”µ¶óÒj;ó]Ó…%×Hü”,U°'¼k+À’q?ÿÕˆ;é9pBÒCQä)Ý^{áÉöÚŽÞ»Nêè ë‚|×4_üý½ª`Í\1 ¾­KˆÅþ‡Å.HÅ÷-nOéd…hzäª&~AûãáÕªZ[•oÁ·`¡X­•Rj6_”ªÙL)±Éñ{c“†¶“·Úw|tpç@ÓÚèWÓžžaÚ£ÈÊ ŠÌ/h¼¡½¢}²¶¦'f!À0:ø¢{T™z©d㇥’pËÆÞp kaŒµ0Æöù¹qêßqˆja¥è­ooÍ´¼ÂÚ:/ŠŠŠ>TT´4«Y,eYGW[h Ê3ß-€–™# èÁÛ\Õ”‚ñm ¯ Ђfd*' BËQºvy4:+Ùúzo2ÏÁx'å7¯œ”çŸÏB•5·þ<¶ûmnP¿õ[v ô[ò]8‘“OþMNÎg›ï"×HDæ”,J)zEòì$@~5›k©Ùìïí8ÃßëºáŠs]7C'½, %lñŸ'lawd8ì.ñ–ì)ñ²v¶‘µÓ¹tÖÐ_~vè€Ä.`ÒüªrL0SÖäºA2¼k}Þº…1ÆXm¾ëÇø†øXdͳlMˆ¯<‘iß9zéåÎQÁyÒ*ÁI)ÆaÓeÆa;3]f'É0%ªKª_­ž AÎÎuMÛë|®tú\}5}í í]í ´xš _%H¾úï3_½ËÔ°Ïe¢séOb`ÛŽK¶uôßóíŽ~9)Ÿ-'펚~»cp`×¹ƒtdt0z}tÐUÚPæ*Uä·~£Èq1þqQÛ¢Ù–î«oÞWï-o;Ã[>°í¡l3…>ðkS(—²Þ­?—8G§áüwëÏšÚMO×Ôš…²"³àïó‹þ>>OÓ𶚆Ûv¾Øf‹Ø¶Õ¼kÿýïÚßV~ÛïÚÊ©¥þÞ»¯ò÷š…²›…ÚÎK¿¦ÆœëÞߥÝû›}Ž>瘲÷k1¥²æc×TÖÄ”XeLqë .#_‡ØäØ±É†ÒÆ;JCÖágCVêO—Ñõ9—‘®¸^oxb7º<±îDω݉¤gâsIÞµK‰T²ñ£™#a>Ðhœ¸á/wÅ7ä»e€…$•J½œJ-TnÇ›>šï´î*½Ä+­˜E6ϲ•d-"Þg‹XÅsª­bKeKMK¥Ý!bw˜‹+4kÏšzÿÐDQQ+*ÜùhÑàN©ä‚N5ò™Åþ‘&‹=Üü»¡p3Í×kwm¡Ýåî¹ö w«µ¹2œ Ü=×¶¸{ü½?jó÷z½Þ³¼^1 Ö‰HËs_‰´XìÍ»´ú‚¤´Ú3Úú¨g´±eÛ`cËÔ…dEÊü+˜mé݉îû»²á‰zÙ`ö•½nöY6­KZ6åRÖ»õ繟I÷çg?gw˜‹Ë¯ž©?£—5:G·\ózã?óïóO¥ËÿQž(ñ>\âµEl÷Ø"üYý÷žßÑO К;MM[¾q_Ӈ߱ÖáîzáŽè®–žoÕÒãS~(ûÛÌå’äíÚßH×~J©^}áåÕ«%ÿ\"HæV¯®¹½zµÝ±ñ%»c¨oÈ>Ô—°ÅïHØÄ‘>_¤X)H’Á6 øœé5£m“wwÛ¦ñCÑ?dª°›‡”¡7_P†¿ò˜âgmŒ±¶¥ñ@%6ùÒ5ÑÁùä€Ïà^1ŽÆÞ㫺Ϙjs-ßVZ¢uüúsZÇMšÊWZ~U¾²¼øÃñòâv×öƒí.Šg–Kn¼—$#e>x‹Y Ð¾Úã½eßÛè-³×Úï²×’ì£ô ÏĆ O0ðø-Á@BÜLˆÎmƒÎ/=á-«j?ë{UíròÉ9™{Y³éÏߦߟÿÅO9üНýÝ×uô»Œ®+]Æ™j~óÉÞ2Kå6K-ü‰ÙŠ<¹U‘»÷ß÷þîýdÙÃâ7ÅpÒ“ü«~ÏSÑ–"Õ¿Ø Є­˜2¾!¦xÆ[ÿä§³(g—±þ<—±;qïÝ mÎ%^Ã?•xi¿½ÁU{ Y¡ú¤UB5]¹õ- AZ.LO!Ç€´…•ÿµ d+AmÉ’:¹ûç'w“¬ñ5´_çkÈ}¡³îxךî8M¬LOIOÃÒîhÜV’>uÑ-#uÑɸ²f2Þ¸2Ø`Y£ ‘E­aÓ•'4l?´ïãã‡Ìŧn.–»v¿$wƒlöK¥¼ÿx†Á›,=pB²”µ2Ʀ>ñk#Ì¿ôÜËZŒþtŽÖù£µ›?SÛi-³~ÎZfwØìCãÉ; K=..Æ/ˆ‹V_Õ™VŸYø°Ï,0ÆžcŒ&“ñâ5!þϵI1Tj×嘲ãN\À¤‰dëëmÉVwϵ&w#°ùŽ@œý/‹çX/LÉ–ÕŸ•öÓÖÖ‚ðm´<÷HK0ð‹¾`@2Hë$C•oÝU>’Y$VúÇ~ö\ÿ˜-,>œ¹Ð-Œ–ô$‡’ÖÁ6²Ž¤'ùßêÇ脸ï× ±Ä^|J‰=°÷‘òÀ^J§¹öz^žZ$Ãg[$c쇪%Õ9zù ÎQçØfçdf鉞ٗ.¤VÉÀ»íÝÊZŒþ$7 a¬x0æö´œàö Ú¿0h_š‘@¢xS¨xSûzßYíëÉaÃ\\7{ËÛbÞr?ó3ÿ”„íNôü¦;á2Ö{f²'l{¿›°Å”øó1…ò!ÇK¢ò %1Èß9;WX[—ò•§?R¹)—#Çýá £»ò]_@~À½b>-½Çû³’…•†•g'ƒ·ÄdðŽ£]¥ ¢«´äÖ÷=]r+ÍY³l:ã[–MÆé 1¤]èÌ3Þú ϸsìË’s¬ßÒ»¾ßB¥nÔ¹»nTŸG¬ÛÏ©¶n— ÿ U¾³Î«ò‰#çý—8’{ Íŧ}Ó\L³æÝ=×2wyåG®3¯t¿òp¦`Ê,ý샳/äl.e-FÎÑËrŽ’“„ìâ]}Š6@µ›O®íì«ø·’¾ ÞÃxèÀàuê‡~ŠAK­pøkoqø½æ[º½fmΓ²›”·|}eã:‹¶}•ý}•!÷z:ǾØì£>ä·üò}`>är‹ÄC€{Å|8ZzOkaU÷ n+ µ>K/ë³°AæfúK¢ ³ÓY†wck¬õ¥ÖX+k¥oéG¬‚}–ÞÓû,}©Þ—ûÒ3|Œig²ë×Ц“ŸhFcÌ–êHùR&æ_zîe-l1eo*¦¸Œõoë emÍés¼6&–5:·±Ìée3´]]ÚÎ=½Eš‹‡&†ØÐÄ‘«¼/ómétV¸åYÆ-šGع²Þ•… ¿²C·K­= n£€Â÷ŠùPø½Ç[X)MÏb,ujÞ­­ p ©ÁÀ`]0à2~õìÜì»,,ü­³pn£€B÷ŠùPȽ§]b@ýå°C [ÁŠœ*UdúLŸ»ï/‹A¡ÝF…IáÜ+(¬¤3ºåÎ(-¥NŽdbäÜûÄÍßÐ;žŽ¤Å}(H屨{ï$gos-ßVP8PVŠ6ïºG5ŽÏ?_ãˆoøÓ ñ “C‡ì“CØÑ9ö¥}™S«)DfBŒ¯Jˆ7üå܉ä» òÏ^ÏÓž½ÆîÀÅðY*–ær9 (ßRÝ [æ…hò’Úº(¿¼Öÿ…?Ôú#îç~™š»AA-û+û.è¯l¿þ¹Öq:žŒG´È9-8¯_Ú\,—G|ÄVÆ„;T·Û 8¶9ž—[äÎÑ~¯“¿j—“¶°ø’t2쎜v³[c·Ša›(†Y5clJæVùÖ_Zåë«üë«dš)È*¹Z.ÎÞ;ñZÌU]++£åKS…ù¯Š 86 ðaù®Åtp Ð86î­ã×±–.Æcûc“/]Ýoʘiʯ4Îâ7Å6ɘùG2ü‹Cdáæß²ÐúùÜ— ³÷rƒ¤*¹ð‘[ÙŠB¢±nk¿»«‘meî ù®KÜ£(4p¯˜…Ù{zÒr!3E €õöÖt<J)zEŠR©ÔßR)Zyˆ?MNÝ.'má çWùòÝ(pôòN’±aë³ÿqÓäo^yŽ_\5¬^}áÕÕ«¡9üZ;+)Y`Q™]$̈­”‚X ÀÈ\%+Ù 5ô•ÖIàÄ{òK»*.Á»úïo­ÿâŸÔú[ǯ{tj.Þ1lÝóTÄíûÒ„s¬pÖá8VÑÚYùIZamõ÷n?ÍWOÒ¶áægW„Ö»»®ûGwWw¢»¾;±ô±Çª|g¬²Øû*þ}{_E¾{àø!mg¥´_²U‹Á»j£ÁëðÛ—Û”’ô$ŸLzhŸl´Ý‰oëNX·" Ž [‡×„¬wä“wÍæÏ¯©í¤tqäü·¥Õ¦‡wšè\çØ•®Ò¶òÛ/joЖKÇS>÷ £AçØ›3dË¥”êÕŸ¹®fsåCƒjŠ"¿1¢ÈTóö†;/Í\ý‚ò‰)±›b C¶Þ|_€ù3Û•½ÒÖV’°ds]D'=û¨Ët¥¿Ñ™=ˆnBLÔÇE_Ãû;ö RñWI Û>`ÛÉëa!:¦¿ràM}½?y¤»¾D(Yf¤±OÿoM©·Ì{¥×èh¾hŸ}}4øû‹¢½5=Ž`íÞ*ßú›ª”Zÿ>Yãð~`ñ5µ²ë>Ð2U" _ÖÃþÈöVùª~]å¶îa™Â1é9hPdçØÅ®,¥œñ*Ŷ½a ‡åßžòÔ±K™ƒÉÉß¼WN Rñ=‚²îé Y[;¹‘Eƒ¿¿($áma‹Y0ßl>ÐWñÓ¯wí·Ø-µøcIÆÌÅkï²ÔtÇïoêè[¼ë G.úMŸ\# ð.êþa‡ ÑvÑ}[©‘|жÁM[šÿìîaŒ¶Œ1&HÅŸ$ÑsÖƒU¾¾ºŸÞÔ7jô›BüY-]- -]»e­Å>zsЭôL^¤Èæmk¶›*"îgÎŒ„[–dÌ:ålƒwغgMÈêð;>Rëp‹ß~Æã®ØóR¤‚bÓ4=ü?&ç襮Z­gý¬Ž±72ÆkVK”“O5ËIEž\§Èæm¦Ó¥°Xº”gÏ YEïYUV¯×ê³úHø“¿|MN6Ö5íj¬ko¸ã7í JÅ[%J³œ|¦5d¶{Å0[ÏJY™-lÛ'ÒpßcÚžXl–Òp¦ú¶òûiËkA,îê«oÞWïð_t“êÀûSÛýŒ1ÆìÚ³J¼ÿø¿%^æ`k™oÂ3Ñ<áöß#ìíN<ð¯ÝaÞmõU1«Ïà=ùS¦2AZ±V쎿z½V 4UÉUOYä`à·ÊIùÀÂàNVÇ iKÌ,åß²”bõ­»ÕâKŒì¿(±:±>ñhü€¼ùé@hD>ð ? ì !k¨-d %~u‘œpŽn9ÙeœOýLwH; ä=’!HE$K?>×ÌB©b )òäVEöíº£Ä×,H+>«ªu-vÇÅ:üî¦kìîžÊñú†u¼*°þfK“±Âø‰´M÷­[¦—òÁâKq°2Ž”Ú!¿áÞ•Ý ‹RþÿÌ‚¡bÕ}¯­Áö†­\Nþò5YޏGnŠ;Öÿè·âzæ`I¦[g€ãïaLÞÞZ°S²rcê#>cL òE1l •Ú!wÏ÷*<{“žƒ«S¸’ž×NzÈ_–R$ƒøŸSâ™·¼ínoy­ÿâ¿ÖúõòWKÿ3]ʵïVŠþÄ߬¾þʾ ú+%Ã…§HµôóïÃý•;†M{e¿Ånð®Jªò—&c)ò[Oe®p,!HË…™I[XyŽjÙš¶† ÒŠó)°í¡«û*ùõ»Y9ïNiuå¦uŸ±n·o®­qtŽ£÷Gƒüñv‡ýÕ-ÁîHG-Ðæ?S)“§¿[)bøì]ª8– Òsjþ$Õý ÛÔ}‚"ÅFܦæpì¡È‡•éi|è«ÃÓ”YQ*•ú[*•°Åž°ñ?ÈÉ¡Ûå$MWš[U(’Àüæ€|²PŠŽ¾'×E·ŒÔEyå9|qÕh°zõ…WW¯6x+nuø©è•ôyàÛš}}¬ì`Í*€cÕÂ:}qWJÏ›l…ô™ð‚õÄ{SäÔ©´VVD€w  è|Ä&ÈVP ¤Ã]ñ1\Éæ Ù •ôòL³÷me ²,2Ë ¹É; ðñË»l¥ ù­ Ÿzº4Rþà¦SÖÖ†Ò¯=Ö´%ßµ8I¥R/§R…eºW« ½“¤‚­uY¾kp¼PHR•8¼B[þ–"“À ‘„]Îù¨^Ü,6ïL,N¾‚´\ÈLQäeU°ª6W²ooe ²daYÉâä«È‡•Ìu¿èY^+ßVø W¼‡+íÃÚ  }¥2=žd+(é°ƒ1²­ª–"¹b•,°èä¾JVÚ«•VÆ"Èç²,*³[%+Ó«5 œ@A.ª„M{¸ÂÚ ~q×é6WX[@Á¡Ú\‰··ÂÚ ÞæÊ˜UÖV°¨äI`f(’dëqDÂÿyÂ^è·ô®ï·ä»FÙˆF¯wºÃUÏ®®šm±Éñ{c“”µ:ßmŽOfŽ$ HË…Ì”ÌÉXäÛJÛÔ©‚tŒËV’,µ›/©í mw¼kMw¼ÐjµØ%6˜†L¦=¥×šöÔl®y¤f³sìKα…Ê?ÒòÜw"-|‹<±]žØ|òt÷|k“»§¶ó’µ}•?¹·¯r¶9tôßû|G?åà-o«ô–ó¿’-/þp¼¼˜¶Îè–?8£ ×ë¹B㡨¨èCEE´¥í‘Ô·ü‘Ú­iø[MÃtų—K¯.Õ%Õ¯V—W¯ WS%m'¯)iãlr6…šœz%VÖ|ÌWYCW\zó 2ÄŸÛfn[ÛfÎ^g~»Pçêõ3µ—Ú¨×^½ré^Ú²¨OæSgŸ¹ŸKý¯=†AåÇÏâŽiÈ E>¬d¦ðË 0vxE:vkÑ+Š|ŒËÖ˜ò§cJ iàw&Ú&=ÿ÷BÒ“ßZÅÅW£qQN>¹GNR­¯,݉îúî„Å^ùu‹}üо?4¹{â§“»ª”˜{3¦ð-Jˆñº„8Ÿ¥±®ñgu-]ߪiéŠ)±Ê˜ÒVîÝÝV^³ù¢·j6O«³Óî Ò3j4û*þ­¤¯‚ßš…ò=fan續®—Q¯½S/T—ì¨í¤özÆ[_ðŒS{K¼†ße^w‹ý£_°Ø3kRÓowÔ8jî¨q˜B7…Œ¡R»1Ätð–}/á-£ºQ_Qº ß#H|Íõr°ØË“™-奞ϼFçoμFÔ'vÇF·:f¬¾ªˆuÖGÈÚºü-E>Ž`¹ŒW<æ2ºY ›R/L Û¾*†cùä;?ÛÞá¶­ÞaÆXpqJ¡vGÇåý”â«¿cŸ¯Þ\|Ú]æbVÍ«^¨²›}ŽŽÆákÞlœj‘-¼á+¶0clß\óœh}}ßD+keŒµÎ-‡¡‰¡÷M0Æ^žéW[İE’ÕÁd5ÕY oØ&†c# Õ/ïÆpÕ°c¸*2òÜs‘ƒwõß Þ¤çÀ IO\Œg’­¦P©ÃbŒ=¢¦xƯÛîœ'­œ®¡+º†ŠÙÀºbÝIVÊI¹NNÚÂâ ¶°|à‰•ò¡ú¤UB5clc1ÿË®˜Ÿ?Ë,˜OÊ”žñÖ?yÆ}¦NcŸd¸ðuÉP#šÕÈrR>[Nò}^Õ~Ö÷ªÚY{•õPжU‰áºøw]ÆwƶkÖ4¶1nÌä~n¸ûùmán¦Óµ—¾PÛ þ.Ðkï°aÏа1vÄ:->µ^20Ævpím÷Œ#¦€1bd¦ËŒLiSÖ(mLÇÑŠþ"2êÖÏë¯òUí«òÕUm©{§sqŃæbs´‚™£ä0Ã6±~¶iª¯ê®^§Ja¢Òþ±ƒ•R»±në¯ë m'ÏÐF9ø¶¿åkpù]?qù(éU²2S;æ}[CÖðFÕbGTùÖ=0{»ÝÂB>¦d[Øœéc}»kûÁv—»çÚÝ=™½1üFÈJ¿Òv¡ÊM¶¾Þ›lå[dõUÕ¶]‡äŠ<¹U‘)¥ÊwÖÆ¥Þò¶o9YŰíçb˜Ò“ž ×Lß"îÈ j?&»ãùÅ Y‡C™£§£¯³¦£d%ÙüÛv® lãsÐ#ìŽô„§Ê%ym6]f¦É .Ë´óÍ”ÃÈYátÍ?žiËœ:¦ù™Öpsös«|Öí3]#oÙwnó–iÛ ÖÙÛ;)+œ”§µ÷dµDµÎq¨u¦ÑN/¹\åìVÿsx<’Ñÿæâò«Ío'awd8³Î$úiœ‹#ÿÜ+ŽÔú/þI­¿+ÞUÝ•gG)Ї´NŒ²•îîoosw‹‘sï#¼_ïϧ•b!믿­>Èé$=Ú­íßbm§sɯQžØý¸<¡Wòf£O«T–¶tíYä¦õ$S:†¨ÚsÉVJ-âkK[ê©üYý÷|²£ßÝÓ²ÎÝÃÛY úŒK¿ÒV[.=äÈËSÛR=¿ºõ·Ïd &EN=¬È|Ûi«½FZOÁ\ú–‡j›Ý PësÉKº –Ëm–ò_œ­ßäl‰Žœ$QÕÒÕÒÖÒeðÞo˜úT?œÉÚvGªÒ®ê󪀣‘æ»âQçµ…>óçzöÞø¼g/í»Œõ—‘—ž<^ó-Ý^sf_<”^럛ð¢—4^äUùÖ…Ôš“¸¤Q§•bÚs­¾ªjéSò±õõÞd«VŒæÞÞ>Kïé}Ó‡­¿ýúðÔx&gCÛÉ[ mG®Â4Q›LÙ=w—uO§ú÷¥×ÿÚWšØäرIiõIi5+ ßäI€w  ý4Glhzøú¦ö†;Û*í–µ•v_ý½wª~cd©";ŸVŠ [C·©Ÿ Oòœ OÍæ‹R™¾wäר´åš›¶ðéô8$¨zÅņcŠ»«åvw•î«oÞW¯ÈÊ®Ìn%qF“ŸÈ¾ewذ;ÈË÷ᣆ3”;r~£8B-²úÖÕê#!R7êÜ]7:l Ý:l•VºGZÍŸK¥T*õr*EžŽ”NgQ:¿åÏ%éS¹©²¿rS0ð¸ PKÉ{2£$";.í“l²oþÌ„}³Á[Òhð RñU‚DvÍîD÷ý™>—ûÇ–[ì}ÿ¾]õá«òužÚ'bØöšjƒÔÃeüÊK.#ïÈ·z[+kx)À_³Pöc³@­ É¢mïüñ–ûº¼å$/ìµö»ìµ¦PéUÒ¸¿`&ÙqGîV¥I )ð‡@½ ÐH«´W|¯Ò;ôÇÿ‹r™ö¹¦>zÓ+/þœ£NŸs4÷ÚföÕYßͱqqß7âºß ´VÀhðüÑ ½4mi|¡iKÒ“üï™,—Úsy«gmç?]Ûéî¹Ö”ùW?ÿöò¯Å’pS±Ä£èè¿·G}!¤+¨—ÏŒ²{_!ÂîÈïÓÂwzÿ«×høAîopDÄ‘ê•âÝ XùfæHúL_‹,¯Gl%A“Nèæë2]RÛ謋n©‹Ú5+Ô Ú)¼ƒ¬ñ ûÄ7„[ží ·è¤_£ÁÑE3¼Lí›/zÓ¾yJ ¤g$Ãèà‹îÑÁ–îæU-ÝT:íóSXÈÊ èÐúgV…Ö4îÜ1Ðèïó‹þ>³PöµžbøÜÿÊ”eα+Ìαˆû¹ßDÜ$sÕV7ìs™º÷ß÷þî) •ý3%/q¬>ëûßíaÙ´åëש½£÷®“;z©uä=É)¤ÖÌÂüëÅ^Ùo±Gw½pGtµÚ9zùCªh0…Œ_ΜîC6κè%µuQêÕ¤gâµ]bXìz7Ù*•\°Q*¡siËÿj ÛÞ°Í/Åè*ͯ¡ôªõ ¥ÔŠHó³çGšy 8b“¾36Ù_ÙwAeK׿ޥN¬)ñ®zB”e:µ˜^±¦ÆÉhÝ ç(ÙéÃ1½ ¹J¯\ã*å­Ë÷óbDWüåB48Z§þuˆásVf^‘aëï/ÖuNà­€IÕ†Ò+Oh(¥=×í¹%·žÒZr+Ù¿©½Z·ìí¥«Lóëùí´rüíPŸóß(øi”¼Í[ËL²»¢y6=¤>kÒËëB3ý-‡Ý‘Þ´FÅw,vz™§»D!DP€Ù@îdsM[^Ù*†m¢ú˜¤ÁôÑ|*ìÎ^ÏÓê§@Éð©QUNÑ2^Øù{Û/ñ÷òûI¨S?ÐÓƒŸöÉZC‚•R|õ?èP®’³´ï-¿mTN6N[äãÏÛ"üñ!ëð³iÁ”ô@¥Ç”BúùOÕżw]ñÙ{Œìµ¼Äá?Ëêã‘ø R‰÷‘%;èL~ué×oÙÍ'{Ëø²1eoJ­‰-,^oÓ•¡Úš™B7+BÖáSÒ=,~s¦èÅàÈþw#nëö³Î³n§~­ª#´^ï³ò|ho¸ýœö>…dSL‰Ý§¶š¾ dÖöù¯fJ1_ý÷ã¾zz’ É(ÆO_åÏÎPC†Mx&š3sãÿ ²3“ðÉKƒÿX785bµÖGÞ HVp²ôÓK#(=ÿZþ\šPÅå t«ïœ}™2.{{ÛÚ/ho ( ü–~Õ¾ lÛqÉÀ6þßF½Ñ¥^µl¾È<cX+.µýo üŸ2ÿ‚´žåMu×6ÕÑý‡R<{¿³É³Wë*…ïÀÇme¬ÀÈri^ù‘ëÌ+ÉBc ÿÕò–Ýv—·¬¯â§í«È¼¡OÍ^gŒ [Ÿý¯áŒÏÖ–šõOYjøüCÖÐêCQ2|jƒ*yyÏ6bjFsP(Ú×>Ò¨E|Åð¹W YŸîÍôå?«Ûé)Ú:h}מּª×ßÍÚÚ½ÿÇ7¨v\z“D&éLöæàÎÇ6wògi_Äð'ÎÎl5ÊJ ÛÞ«ÿ˜Ÿÿº™&‡M—5ZŸ`cÈtТëBÛö†;ÏÊ—ó‡êÖèIªndq¤ÞæCViíè!ëð!]o˪ö ÊŸ1ååO«Â«Ä[²=3À]µ\ê¬õ¦î”BÁÉrL)ø‰Ï·ò˜È–Oß=¦®š-þó„MïÜZíeµ~²¦S„ÁO„wVù,¿©šÚ,K{éÛÿ·Ã¿²j_ø¿P’}ü—Þ×V‹ž/²–îÄÏt'Ü=ײéÓ(Ó÷mÿ)eÚß;ýÕxËnT¯ýEtôßÇ2ýÝ ðÐFHOÌ*hÙêûò?8Çè†Kq ɶd¯½ðd{m\|%™iÃçnIKÀô'`É ­šöQ»êÙuÃUüãÖ3~}¥ú)\ŠŸËœ&•}ÂoÃà‡"+ýª<šXÖóíFõ±Dâ#»=Ï,˜¿gøÏßüÇtíq‚ÿHJ޹X׿Ø1à½9ÉÎ4~è×¢`RÚÚò¯ڲȆ”]ÔòðSè²Ûáôs˜>9L+kBÖß>›)iRoEó–·Ýí-× ©ùàk¸óI_yúRÜ\Þ†Z:+´ž?ž/=쿪J­¿¯v 0«ïŸJT9%Îßž9þ={½õ…–ÌrŸ9áuĘƼ£sóAG'¥%•ü¤}…°…?ñ£™líäÓ¸åë[ôÎå¿Ð£û€v„ØoÏŒn«m¯œüU{úõ2ÃAûzÀym¬†ì¯U¹;êDÜ‘úˆÛ,˜ÏÏts’“¿’Õz’üLçNÿ{§>1ŸöMs15Ö[Þv†·6WÀÑÀò@Z‰¥'f´l¥0æ´ –O€fôÓ4þø@S`‡êsÆËÖh0Z Rà}r3GÎ>(ŽÐ¯S+9{ªsôòÇ£üÿêÕ^]½šÎ¥:Ð*D4a‹±Îû×NM¨jÿøk»iÏšÕ¦=üÇtšêÁ[þjýßVëçm?ÒêOÞ.­¦²hÚ§<©ESýÃ-Ù ¾¥º¼%ß2xõ|øšÍM"žj þÏç¢Áõw‡BV²Ñ1¼ ¡}»”b 5†È²¥Úá~æS_ ¨]ž¿üRý€KQKùº©¹ ­8Oú-;Ô_Ig3üä0­ð¥‚à j)¦é¯¦ÕÖß{×Çü½”N6WòÍÝ6©}êíèï|¢£ŸìúIÏdüÈëÍЛ•¡Ñà‹ÏŒfxW“g$½2ÉÉ'·«ò%é™èHzèŠLêÎÍŸ©’dçå#m> ?]kE4ž)r¼ñ–·}Ð[NW‡þîøZÑ R•›ÖªÜDŽ4$Xû*ìRí—j{ïýn¦m¾cðÓ›hKùsös©VÙ{›¼¥µí¥¿Vjï`àñ긭òUõTùÔ±‘þÛáÇÉèþÊŸŸ˜9žcÊŸnWïQt¥øñÌ;ÄÅÄõqqjœk^3è‹DL‰=S¨O¨Ÿ©æt/ò–ݲ6Ó’Mw¦Ÿ4©5BŸ MÅyU[qÄ›œ^ µ¡ñ`ñÉ=’QôJz²;+•Jý-•ŠoØßßÀoû*þí̾ŠñChÝ5·m×þoõ÷RþÙaŒ¦Ö„ßú{;>ëï5xW—¼tŒY(ÿ³Yh÷|¥u¼±®ñ7u”NÛ*ßY—Wù&w¿q`r7ŸÎo©ø1A’ R\2 îlÜ©-—¶£»F¿=ºËá¯u8üÆPé׌!>J±;j~mwðù øå®¡TO¾VtŒÅ^ù}‹Ï‡ŽçË?Ý2~ˆÊåÛÎ÷@ݨs¬n4Üü¬'ÜLgQ»ôZÍ·]ÛRª[ösùÒé,—Ñõ„˨=ÆWß~ÀW¯½:´õ–yÍÞ2Êz&—riKõœ¸áµ'n­}>´^Ûº"t<ÕÿU¯Îth«ý•Æ¡Þ8ÉeË׊¶|ý¶íø×mÚriœçÒKt õ|*59>¹[¯&Ôí8¤ñL£ŽÆ•¶Î´¥1I¿R͵¥èõsö-õös»öß_Úµ?÷ž§>Ѷ—F2•EqÙÇå“}läò7H[ºÿðõ¤¿hþ¾Áß©ø¿ô\ú™F×ø¡?vŒÒþJ×n>ã[l±=–¶¤Çøý¹)º\¶¤-Sœòœ¸á/ñ üóײÜáðCkï®U÷iûá7þ":Yû1TNÝ.'má çÏ5»œ|òorÒeºÒßèŒM¾túö¯=¦¡ôk5mIiB2ÅF÷ù¥€sŒ–¸ ­ÿϧ2§"‘Õdz×sسwÊbJëWå u1…–uî~ÌͲäÖ÷=]r+ÙJw~ap'…—ÊwO…)4sñÚ»,5ÙÕZvE— ÃÖ=OEÜäâÈ+ÏÑà‹«FƒôeÛ²\£†°T!këQI,$XéÓ¡Ån·ØéÄwTS¼ú òá ê'HwWó w×ÜË[BÖPCÈJŸMù¡ÞòÛ›½å$XÉ=‚8š™¾èÀ²|WäЍÚÁ:.ï˜ œTÂNa%ŒÝÊZÙ­t ?IËejxiá"˜Îh0ú‰häi¥\É*eÆØ/Hòì8ðïO Èo=0WÔ%^3=\![k(2ƒg¼õûžqš¤È‡–+² ­<,HfÁ¼Ò,Xl–Û,6ÆØ=ó.nA (¹‘–çþi‰)±7c ÕÖb_g¶ØÍŧ½ß\ÌÛ2ï‚'Èšv -d+`äÉjg¦ËìŒÕ2úWàÐìø*v«šf(È1 ¨'-XÓÀ·ZÁJBöð A‚lï@¤…,d+(¦GP÷ßÞ 'P0œxc™ÖV5ªd+(0´ÖVÆ [À"óNrîç¦-¯­`QYf˜)U– ÓÓ´îéIZ­ (òaez/pù}DDÑ+éXü>cŒÐ*Y±É—®‰æ» _ðŽí§N¤‚­©TêåT*ßµù…¬¼„-zE‘ó,[%çÞ#`g8v™m$Ô©‚ÄØrÎI`™¡ œÀ±ÈÌ‘ô!¯V^¼²W  |,^¼^Q ¾­ÌèÛúŠ"3¶œ-“@wüþ¦Ž¾|w(|ȶJvÖ)ׂWÔôE”­.Ó•þFg¾ŽxÇÚO³ˆ²ñÀl" hk:S²À¢2s$AZ.LOã­­ÓS [@PäÃJ¶ßyñÊâ¶€cºW+œ@AÁ[X§ïC¶€![$ÈVP ð‚uºo+d+È3‚$,c,ÓÂ:Ýò Ù òŒ"+ï06“okZ¼"’w˜‹×Þe©Éw-ÀRSTTô¡¢¢ñCøÂ讹åP¾òôG*7å» ?ÌgäÌ=ßÖ¢W²ŽS°–áñƒœ|òorr¡rK¥R/§RùnX èUgiËÌæÛ Ù €Yƒ×žc›…}Õ™ Ù" @¶€„·¶¾“„lÃÌvVÆ–3ÈVP0ÌìÕJ@¶€AÏÚŠX8ΰn?ûëö\Ž 7?sF¸9ßõ=žá%,`à¸âÎîN lãÓù¯Ežð$5áQSÞˆ(²uûÙÃÖí¯K‹6’@Úa«dXH"ä ¡ìÁbcðÖªÈ,”Ýl ÅÅ}?Œ‹q1ñqQ‘•Ï)2mãâkÇÅ|×÷ØG– Œ1&\š^Ü•gºÃd+€†hhý×ÜÒÕµÿŸ£’!»$Um`*vÄ+XbÊÞ›T©šïº¿(òa…1Æ”‡f^Üuú*Y­… ÏØ—£AS¨Ø<ÓŒ`‚DêÐË7ºŒù®oa1lÝóTÄ ¿xÄ”?¼Sò]  …—ª¼„M*H­Z»¼fó/…`€R´6W^°*òkÇÅ5Þ3×ϲÁÀã/µ—½î«Ü´î3Öí”?íSú°uxMÈšï¾KAî“®IxLÿµ*hìÕlþüšÚNuÔ¹«rSmçÅŸ®í¤_µgÑ‘ôr§ÓÚTÖ퟈# 1Q<:*LŸ†Å§@¶Xtx›«V°FƒONxÚÊ_Øq“äÍ=çö†;/íèoÚòÜ=vǧ·K†Ðzùjùå#xâƒ;]Æ+&œ£‚$˜‹ç%P––7æ»G#$XënH4Öå"^çã$ÐÑÿãÃÝ wϵž½ÎѺ{££»"eáæpó³ÿn®õùÛÎQ™Ý‰žÖîÄLy¤¯rÄ=²<t÷\÷ž½}]?éÞo {L¡|÷èÒÃKÕéÑ[![, Z›+y¯Ò–k\œŒ)²»çÙÃÖÙ V²Euôw\ÞÑßÒõ­š–.—±¾Íe4xO¹Øà¥cèÁowl\kwTùª~]å£ôîăoôUŠ#ç¿-­&‹,Ù·M;všøRHd= 8Ç®¨t•RJCéU­M[ø#cJ즘BÇPž´¥þȈ;òɈ›ìsT.Õ$ÐôðîÌÒAîHí«xü} 1v“j§¤ôw“°ïÜÌXÒóÚ§&<÷ðÃa·"Ö—³IÏk'=í w ¶7´tµ ´tÕ^Zãð Ò{× ’ ­8_êF/¾Àáo¿þ™–®¶òÛÎnoHz>žôdæôÖ-êHv•^õ«ÔWûç½eû™ZìùîÑ¥D¸4½¯Ûš²­òFCéZääl+²þ®LýÀZë¿è*»#÷s+í±˜…àÎG‡ÛFw=ÿÿÂÍu®Ý.£·üV“·\{¼·Ü·Î×à2~óçèÀ¶— l““òÙr2üýEÑ "¿õ”";Ǿâq•KÂÅÅY|)çöúïoð–Q>IÏAƒ";Ç®(v•ºŒ®+]Æpóo¡õÝûý›;zÝ=ß~ó—ä/  ¼`Uä¿F&<ÆùfSH2l<]2H†ÏmwÐÖî¸øB»#ÐôÓ;šHžFƒ‘H4Hq ÞSž,ñ:üuWÖ8ââøcúèCÖgÎTNjö‰ݱWã°ÇÕ‘²†NÏtS™ðüß&<α/=æsw}óõÆ:Éð©÷H†|÷èÒ£<”í×´EÜV‹‚Æ ãW²ÂÎM°ž‰æ ëaŒõÌösª-lÛ'†c™—D§)Yö’Ùšô¼ñš"³fÆXFœNw×7ÝT'ù«N”üÌdz³NÆXgÒóFdÂ’Cÿ—¥ûKˆõ]ÝwÀà=åbÃT}øºÉɧšå¤"O®Sdó6Ó¦Šˆû™3#!ÆXŒ1c蔳 Þaëž5!«Y0¤2ß—°àáëÔ+‘1æ1…Œ362“1ÆXxêú¯/"HË~Ê슬\ÌB1å¿•˜hú™i ?ìõ"¶ÆÅWÆØ ¬ÇzßÕº¯Å:e»)ÄVfœÅØ(ýÚè)éNLxþï>e¯ý€ý´šŒ1Æts;v™ €õ¾tŠ6n+¬­­÷êb”Râ-Ù^2õ€Ÿíä•þʇMô™ÞÝsm‡go iàýô¦i¹YÐû5!¾ú õãovMR[Šï¤îÄ­Ý ~kõý{«Ïà5Ö³ƒ¬q‘ìÓs!éycD‘#îgÎ »#îðÙawØ=|š¾`%L¡Õcé±÷—}Ó?ý§Iˆ¯5«#“?‹h¬»ú©Æ:‹ý£0 α/ÍUJ/QùîÝ¥‡·¶j—uEÜV‹€Þt+²­ò~®¾ú?n Ï'À“>g¯ê«ÚWÙ?ÖŸ“q2¦üá1ų×sس·{¿¿Ùßëï½óß}õ.ãÕ¿É„Ko‚TQo±d }äûª½MýÄ?3f¡T1…yr«"ûêhòÕû{;/ó÷ªÛ»?ëïµ;è31¦dÍL¦`Ý÷ø¨Èï|™1òOÕ‡~MoÉ“5ì>-ìŽ)c»cJ.‚•Uk=cl0ðؽº/<ƒ IóüYD±´êÎb©{çŠîý”â»âŒãU¼Î·•Ÿ˜…H~‰^°j§[Ñ4,‹½äS%óúJvÍÆº­?p;úïùvw¢­üö‹ÚH8*ò#ŠLûý•?»¿¯’B %=É'UÛX\|íá„HÓkÿ±npJ^$Ä}?œn»Õó4Mm™”Åpå-bØ*µCž½ßÝé-'ë/‰ˆû™3U\1üÉÕ#ÉÊËOÓ¡š¨–cø¶Î ÉJçØÆÓc¦;Òᥖݔí<úuÙMtÝãâhð÷Ÿ‹iѰ;2ž›`%hÚMlo¸óÙŽ~šNG£Ž¶ý•ï4Ñd,š˜ÅOTyëÆh"W_E÷ÝÝû“ž‰;’Wé×¶6naìd¾{;hm®ŒÁÚ `¡%ô+íÓ4,JÉe ­ì´t5‡Zº|õ?x¯·,ì~NYk6þ·µ•›ªöZ·×v^¶Þ9²¯¶š…²ï™…*ßÙ¿¯ò9üÆî¨íüb³s̾¹¶ÆÑ)†Ï¿K [ì•_·Ø[c¹×fŽ÷UüÄÛ½Ÿ±ÔŠ,ŽœwQõjëö³oG:ú;ëüýü‘m]ÝW¡È“§+²8rÞj4ªÉh0z4kkvHb†¬¿ü‹œ û²œÌ´¶ò¶Õ4q1Q£ÁÈyÑ`L{$¦Dƒ‘óf#Xyë¾¶ÜeôÕ¿Ã[ÖøÉWû*iÔÑv é§?è«ô÷Þ}†¯žb\Ì”Gú*“¨í«xðÕ®ý1eïHLiÚÒ¼'3ZÅñÁôX­|JQ*•ú[*•°Åž°ñ'ÉÉ¡Ûå¤-¼á|õ €csñÚ»,5±É—®‰.lμ՛nEÇ`¥x®óŸž²C–æ†Ò¯=Ö´e>ýL×.•J½œJ-Æø™S!®|¶?WùþË_ëWd¥Y‘'<É''ŽX²ã=IOLùóãâ„çÏ{ãb4=)œ›`=àÇ ¥Ìï/ô$cÃÖgÿ+⮋n©‹òÊs4øâªÑ`õê ¯®^m UÜZ7š)^Ó ’€#—S¾òtKå&ƘÀæ(Xçc£…D>– éieg3«Û4|£Ä $ßI2«Üð˜l$¡LX%»‘÷s’ÙIl^‚uþ‹î#p™!Û¯Sq[KÒ)ÚHŒA¶È ól~è®Èy£»,›ª~S¹Éâ±¼i± A¡LH.†=co¡™Š$p5czvVLÉÀ1¤ü΄"“H…ÀÑÆTÜÖeŒÍI«dà‚õhfæe]amyGyhzÜV­«@êTAZ6\5쮊‹ÿ[ž£N`ÂcŒÎwSÀÑŽ ’VyÖ®¾dGíjõ(m¬ôþ2ƒ×ðQƒ×À Ì‘u4øâáh0ß Ç¤<™‡ý7› O6°mÇ%Ûj;/ÙQۙݷu*’@Òóæ`zEÝÃkc"+g‹²Š4Žv(®g¾k1wÈrúlu²Z[Õƒ¯Íw5,%G»ìù¢¨¨èCEEù®8б¶8~€ìä›å/16“ÙTkgÁÚªw2€c Ks#,zšSÏI ÃÚ Á –2˜NQžm¹"§¸­ï$óÝ,plAÓ´ÙTÛJ̼èÀÙÊk^~™!ßÍÇÖV='Æ;"[y'8 €ÅCOmê9 0ÆÉV=Í ÀÒ uHïO³¶B¼€ÅFOsêY[3" X²Àâ™!n+KÏŠË$áaÆ´þ¬*‘`gK ï*Pô£tô-9Åm E>¼2ßu‹ÇÑ~}»þG{ÿdBfÓ·~Ƙ"OnÍ w•)a3|[y–¿Ä˜)ôf EÜ#åÑE¬¬"+»gÖÔ`é0 7 qqï§ãâbäo±l¹Åžô$ÿ;éQÓ¦¬­å3Ÿ1]Â1ÆNclt×hÝè®ÌŒÒ¼†¼ [u*˱l‘Åè;ÑÁèõÑÁÅË_+XI";Ǿ,9Ç Þ²1»c&ßÖô¢ï:%kùKŒ%=I6“œÕ™»l\üßò¸˜°Åž°-^€œð0ÆÀ’žäK =©—¥Š¬ìUä…ª¿~»Šï$uöt¶ú,^{ ¡´ã‡®òBµw)ÇçbÔŸïó¥ÿ‹—?a UÜZ7ªÿûôè|J‘1´öîºQÆ–¿•k寤w;þí­Œi¥ðL9d?R/碞lu˜[žt<_·\ZºP=¦W®öÜì¹Ñ¯ÄÜJÌ^ó\ŽœO[¶¯r)e¶Wy¶5œ[ÏgÏ™¿¾sëÃùôgöR¦ßb2Ôþš½üñz!Q´¥óÇð9dÏ9Ûº,ú)Út½}mÍœ¿"3¦È‚TôÊÌ×+—²roEöÓû•'®Öœ±l5Ñ’½né_9uªzœÚ?³mËÜösïùùŸ•}?—Ëõz;ÄÙÖ!—k==®ræõÍÎlGföÍ­?ùšóã?—žÉµ&ÔŠ…ÿ¹ôá;IÆ2Œ¥ùÀlœ0Óƒ‡dA·ZJ¡-/7yøª^:ŸÁ‹E½³´¿f¬$jµ5äShŸræ.Ÿ³¶¥Ú<µ¹iÔJ íñÚrõZª'Ëø_µ%jç[§w|ª>›ÔÓ¦óu t>í¹ÙSôz;A–½m­ôÎÕîóçf/Q/½¾Ê^þÜì#$—>É^ºqè]k½6Ò–—h|>ݳ_#þxíM-»Ò;FÛ:þ­ÈÎ]êéå¦=^{ëŸùFŸùpÍ·:ÂT ™û#-÷Ç*üô³fz`ë=´´9dŒ¥N$zTgöÏl{&û5šËCT„Ì6Ÿ\ê3[i¨íóÙÖ$»ÏåoAÛçz¹ñ£HO"kÿÆß]Lë V½|rù{ÑŽOíø×»:Ùë?sM2Ç¿^mõRô®Qök·Ìðî=œ½ÙïØÙs˜y$Ÿ ¾¿ò7G­Œ£Úò¶I=qFÂQ›Î£w®VHéå¬} S­ø:kÛÅKUm¹Úò½¡Wº67¾´gíñZ¡¦'‚µGf—zzÒP¯E¹\Ç첿‚Z›wökÍ£×Û¹Ðì¥hÇß{z¯.Ùk¥•øÙû-ùÎïg‘zW0û+AÆ †Î‰Ïnaz9k묽ëÝ ´—Ï_+…ùcø_ùÜøs)…?^{$ß{Ú<³ Óìåf· gÇÙ­Î<Ù%Nösõ^ ²‰Èw{g¯C.¶s½ÖåÒ{z­Ë]Pæ.…³­èón/]³Í'w©=E;bõ®Z.Â4—žË_Gî/ÚþÉeìi[­—OöQ§7†s±8æ>þ³ \½ssùÊ‘» ÌÅL Wz._Éô^rôê:UNPMÍüã9»}‘"¼8Ën_Ô;—?&û¨ž¤Èn™ÓÖM¯]ÚÚꫵºi%…ž<Õ¶Q+µùüµòQ[ÛÜEÿ«žÍ5»VOöikËÿª×?z½§'Cù¶èYëµÖô\òçk>[{¼öi_ZôòÉnÉÖ»^z#J/Ï Y¦©­V¨Ípe³Úµ?‹?&»UUïc:_O-¼U@ïv™ý½¶EÚãs‘8z­¹}JÖæ3[ Öl-‹zÂ4›w.âin.¹|žÖ«Iö#s=ó·Åfï¥Ü¯cvá›»”ç{2» 5—gëZ0ŸOÛ¹Á\Æ^./T¹Èôܯ¶?³ÙVßM^g¿âz×.—#sÏmnëÜGÂÌùœ þÿxÖÊžìâƒÈ.õì…z6]B¯mºÞƒœGk Õ“nZ¨ør³[ˆ³ÛäôhvÏ`½¾Õ“w¹[UµµÒLÙ´­ÖJd½¶d÷§ÔöŒ^¯j?=ëå¯yÚWmÿg9ÑÖA/½ÞÓ~²ç¯—Ö «÷©]ÏÊËD½ÞÖŠ9þC?/vù}­àãÑ“¼¼¸ÌÅéH+|s¹ùjo”zeéÙgkší£.I”ÝÒ37Áª÷xÎ.Ôr·oå">²§çnQË.”³ 5m¹ÙÉEškKÏå5&—1™»@׫mvi5ŸÞž›`ÍeBôÚ¢×o¹×3Ý{Gœr‘;„ÞãŸ?Rk§Ô³3ñäâ/›Ýª§­¡öÈì÷ùcxý“nvë#õ§žÝŽ·­æòÙWO¢eï½´5Ñîç⤑Ýÿ˜÷6æsÐÖD›öžÏ.³Ò\D³^»rù¯w­õxƒ † »ôÒž®®´ÒAýö·»îÚÓÕ¹ç^qÅØh£áÃ/»,½:×\+¬°ß~o¼ûî—_ž^sÎå–ÛgŸM7ÝsÏ+®H¯Î1DzËîµWÙÕ=÷Üb‹½öºòÊô꯽Ì2»ï¾ÕVûìsÕU=]]j©ÝvÛzë}÷íéêì³/¹ä°aÛl³ÿþW_^m¶%–:t»í8àškÒ«¿úÕÿþïN;í°ÃA]{mzõ—¿\|ñwüýïGŽìéꬳ.¶ØöÛÿáÜÓÕ_übÑE·Ývç=ôºëzººÈ"C† zØa×_Ÿ^e–…Þj«]w=üðnH¯þüç .¸Å»ívÄ“'§Wgž¹ÑÇwßýÈ#}ÕW}µ}W7ß|÷Ý{ 1çê«S¡Æ|Ô˜CÏ=7jdÊéŒBhO'T2®P¨µ»ž9BæR$Ñ Úh£ Š%Ú†žqÆÒKo¾yOW]ô·¿=ýôr‰¶Ür[nY$ÑN>¹X¢­»îرE­!àN8a•U¶Ý¶H¢|™D;öØÕWßa‡ž%ÚškŽ]&ÑŽ<²èjC¢~x”hK.¹é¦çžËßùæ[uÕÃ+’hóλÊ*‡²þú»ìÒ³€ëY¢MMy•U:h£vÛ­‰¶üòem¹åŠ%ZCÞQ$Ñæ˜£!ѶÜrï½{pK/]&Ñ–Zª!ÑöÛ¯]í ƒzº÷—¿\l±v(’h³Îºè¢Ûm·ÓN‡R$ѶÙfذ†£^þ]¢m½õ°a£Fõ,ÑZhË--Ñ|ÕW{ûjÏ}p–Y °82D¡ÆÒ}啇 ™4©È¢öw%©3")*„öô(Ô^ÿ·'ú7)¯3EðœøÏB ‰Ö³€kH´tRÉ—hË.Û³m‘E6Øà´ÓÊ$Ú)§,¿|Ïmá…×]÷¤“V\qÈb‰¶òÊÛnÛ³­!ÑV]µgÛ–hG½æš¿ÿýTöøãO?ýÚk¯¾úÆï¿?ÿüe66$ZjcC¸¿øâ+¯¼õÖºëî´SO÷"ÑÖ[¯ÈƶòÊ#G^uÕ”)O=uúé]ôÐCiú¾÷«º—hûïÿ»ß ^,Ñ6Ùd=Ê$Ú{YàFŒØ|ó#z¾w™eöØ£L¢ ¾õÖ=ÛØr$Ú¶ÛDÛ~ûìùêT‰Ö³€4h‡vÜ±ØÆöŸ$ÚС‡zýõÔÈK/½úê»ïR#9­ÈÆæ©ÔW}µw¯6zèV[í²Ë¿ÛÈjs͵âŠûïߘ.¼°|ë³wBùÓNX$°h`±À Qÿé¼{|zѻǧç¼;&³)`G–ÝÖ¢ ˆESÄâ"ÍÄó¢\¨E‰vÏ=<òâ‹9NyS¦ÜsÏsÏ-µT3­± zÚiË.Û³DkØØþ“D‹9¹ï¾Ç{é¥T¢]}õ-·<ý4qžxâé§_½av.“hƒW‘hü}é¥×^{÷]žÒØà>¼ê6(÷¾ðÂK/½ñÆì³/³ÌÔÞ{ïý÷ÿö·òZ8ÿü+¯¼÷^¶A£àCÎ=wÃÆV”þÆï¼ói§yäé§ßygO6¶å—ßwß7.a{ïÝœD{÷Ý÷Þûàƒò÷z÷ÝÆ»÷,ÑvÝuÈ}÷íY¢-¹ä.»I´†€ÛyçvJ´ƒîY¢-ºèT‰–Öø¯~µÄ;í”ñ9­± ÚØ‚ñd髾Ú[­áŠPÔCN{ì±á†»íÖØåøwqÖp%š0! µ…ÐZ‰BùÓ›“hо§I´ü§÷ Ô>8Ä•K´X9 þWÄLüUäû¨5¶™®¹fÈ=ö8ãŒ-·6lìX&•>øðÿýþ¼ÕVGÙ°Çp@ÏÍK´2Oµ†mÒ¤8©ôÑ?þ?ƒ ˆC†ì¶Û©§ÿOzöÙ7ÞÀWruvÞù’K¥ôá‡zyüñÁƒåy×]=ôâ‹Ô"þ…^~ùwža7Þ˜ ¦×_ë­÷ß?è ±co¿ýµ×Þ|óý÷¹·Ñ¢ÎjÔØ±×\³ÚjÿÚÅ÷‹«gœqÁ·ÞÚ°)uÔ믿ñÆ;ïDٱ첿ûÝ '0©½Ë†zÖY= ©†÷‡ ¢ 2døð“OÞqÇýö›8ñÐCO9åDŒæLÿ1¼añÚ}w¤᯼òÚko½…en‰%Ö^{ÿýÓZ¸öÚžk! µXïü§Úçþý0A|/,gG1nÜw4¼»n¸¿XFç˜ã_‡ ®¹æ–[ž|’»?|ìØ+¯¼êªÉ“ï¿ÿùç_zé­·ï5|øškn»í¸qÇöÙwß½Î:C†Œ½ÙfC‡žxbCx}ðÁË/¿úê[oqFx¶Ùžj¤Ö£ÿûƒ>öØsÏMœxå•SÛmþᇟ|ò¥—Î;ïŠ+ðÇûÓŸþú×õÖÛqÇñãc “Î-·ÜyçcÝqÇý÷?ó á—_~à ÷ßßðæ?~ÖYžjiM­ºêöÛ_xá[o5ʾáMøî»i›Yrɵ×Þk¯†D+²±1µøª¯új{¯öÜtLµÜW=L£Z+Ñ¢B(zºÕ˜óô¢]¾ªOïÞ*‰ÆÓ{j|;„ åEŸ/Ζéã_¯‰(Ô–\²aú÷¿çž»ÔRS™éÕT¨Å« a7aÂË/¿öÚTÛÕ Ak­µï¾¿þucz9òøã¯ºŠðqã&N¼é¦…^}õýö;øà“NºùfÂ÷ÙçðÃ'N<üðqãn¿ýã1W[mß}G:õÔ)SbÌF8ã BÆŽ0áºë˜™Œ\p59„í¼wÜÿ‰?.ÔsÏ>û׿¾ñáË.»ÁÔðå:ðÀÁƒwÜñÜs öÙçŸõÕ†ì;úhÞ[WYdõÕ÷Þ»ÑñFâYQ¨{ÞySb|ë8æ˜+®(z—(¤xbCÐLµ¨¥¼úê믿ûnc+ù¤“~ó›ÕW?ì°˜NC* k°<|Î9—]v÷ÝG:í´Ûn‹9_pÁUW1b̘³ÎúãÓœ7Ä÷›o¦õNÉÌ;ïÊ+ï»/Çb›)/Ød“v:ñü»ürîZ{í†ýìí·ßy‡mø©)l½õ{L˜€Ån‰%-¹ñ.»í¶å–{ìqÎ9­ÒK/mØM§æ“£ÛoߨÊ$¤!ŽAV^yÏ=‡† ‹á¿ùÍÊ+ïµWc³xŸ}b‰5ÚÒˆ±$2ë½÷æwÅ÷Øc™e6Üðˆ#¦ZìÞ|ówØ~:tÔ¨©‡ bì»ïᇟ}vNO¡äcy6N¡²ûîG5yrÚ}ÕW}µÝWîÛm·Ë.ÞÃ#ÒyçÍ?ÿj«Ù0F\|ñK4lié_fç|…P_œ¥ ¡üéÈ£ªOÏ×'­UGùïÞƒP{K°ÿZõ @sËE¡¶âŠÛlsÁñïJ+5>`‘†7¶§ ©B­á34õêV[{nÃpÑE/¿ü¯MFÄÊ2Ël¶Ùøñçž{å•=V>%wܸqW_=nÜùçßygNÌE<ø¨£¢P;ê¨ÓN›<™£Ž:ùä+®À}ÞyWZi¯½¢PkÈ =÷d;pÎ.³Ì曟uÖ2ËlºéÉ'ÎfhcúßcÞ·aµûÇ?¦ÞÕØ@\n¹F ¤ï~ÖY—_þè£9ï²Øbë¯üñŸ¶‚‰'6Jüã[Ÿé_œë7ÝtĈ+¯LÓY|ñu×=º(ý4ú¦›Òržo>_õU_mïÕF:t=Ž:êÆÓ«‹,²ÖZ¼ùæý¾Q°Â ÿúÛ807q"ÿ3;—+„cDU#³ŽB(zê‚•#ÉCý§·Ã€ÅÓ{joŠøýÜ\'<1 µ5×ÜqÇK.)ÿÛðʺ袵ÖÚi§©g jLBœ‹lX8.»ŒøÑŒ‰pu†½ì²N8÷Ü©FãÇOštÓMESò¨Q'4ÕÒPsÉ%ûÛcމBm½õ~ÿûqãiLÏûÛµ×ÞrËã“Û(ÔÒmŸ}›eSm`XÔþ^ãÇï´Ó¡‡N|XÔ~õ«†Xi¥­¶?ñ­Gë®»Ë.—_ýÕÈaþ[/´Ðšk|ðÇí4éœRM}¹b-¿ü¦›6\ï÷Ùçškùw;McÓp¿ý¦ÚbúË-·É&cÆü˧mjx~ÎW\q³ÍÆŒIë½±í{Ì1 ·ýë®KÛÕ2Ël´ÑèÑ©lú×Õ£Žúýï>øúëÓ{7Üð8ùä†-í£°žNõM9ò¼ó–^zƒ FzôÑ?ÿùµ×_a…65Š­äG}òÉçŸOŸøïNý{7üç† Ûe—†[Z’ÿû¿ë®;rdÞÎW_Mø_þò ¯½F[êé¹+®¸çžù%?hÐzë}ô⋯µÖÞ{ï¹çÑGO™’–Õ Ak®¹÷Þ#FsŒ¯úª¯¶ïê>ûõÁ%—\ýÃk|©ñºëÖXcÇ/¾¸ñÅ€‹/nÌ­_Ü0pLšÔø`³íÅ3;—+„ª2–9 !çéUmx­}z;Þ½¡ÆåæÌ˜ÍI4Tjjoq]~yÑ߆wÔ¥—®·^C‚’ µõ×6ìŠ+â]|E,N„„7V×\ÓpÐnøk5¶«N:éœsn½õCN>ùÎ;ÇŒ9çœÆ/rÊwnºéî»_vY#×ScŽ{öÙ·ÜBÌ㎛0áÎ;’¸ûî˜+„Úb‹­³ÎG<÷Ü‹/¾õáC‡î¿ÿ™g.¼ðškzhjIqŸ}Æ»ð©Þf ï«ØsÏÑ£'Oþãï¿ÿ…?ä㎻øb6"g¯¾ú|à©W¯»nÊ”¼çž‡~þyœ¾ã»O}놧Qú.¼õA3yrãLÐÇí7'î±GÃlüøTÐðî«­Öðklê]{m¬…˜ÎÜs/¿ü{¤á¯—í¶[ã;þ×^ûæ›o¿Ý8ÝÈaã€ù)§l±Åw^Q-4,—7Ý„¤(ª÷†D»þú´]­²Ê[ŒÛ8YyýõñÄÎ;ï·ßgzè‰'^{íi§5ê¥áŒÏ=üml›^{íª«n¾ù ' ž|ò™g^ÿ3|ñ±kœ¾š8±q`å•W¦zžpÂ¥—uTÃÏ yÏ™¦%Cɧá¸4¼!…wݵñ峩oÅÁƒ‡ 9æ˜óϿ⊩~´Ò¢ô O{ÊøñçŸûíiOY~ù 75ª±sóÍi9/·Üo{Øa{ì1z´¯úª¯¶ïê¨Q +ZOWWXaãGnøOžÜ˜O™U/»¬qõ²ËÖZk‡&Nl|Pij8™ËBs2rBÎÓ«n³¶öéåÇš{÷„Qùªvì4§™`ß7 µßýn=®¼²èïÆï¹çUWÅ µ¥—Þu×ô®tÂŽWwÞùC®¹æÚk§Ly衆Ñûï7\£ÿùφgÛ;ïŒuòÉ7ܰúêÛnÛ8­ÙøšTQÌÃ?å”o\uÕ!C>Ì2¿ûÝqÇÙ8wàÇsñÅóÏßðZi¥-¶˜úŵhQk¼ã•Wžp„ S¦`í`[÷ù£7îúëÙÜl¤0v,o1lØGÜtÓŸÿüì³X¼rȘ1W^ÉwËâ»o°ÁС“&5:ù7¦ïÒði{ûíÑ£O?ýæ›ã»ükÚ>|›m8àºëÒSŸl°óÎç·í¶«i-¤Ó>÷ÜA~Ê)\ðàƒä³“»îzØaW^‰3lšó†ýìãµP^ïü]wÝw<óÌw<øàn $¾W9;ítÀ'ŽñÅ<ð±ÑF;ítÊ)óÍרx=ÿü«®º÷Þ©¿–{Ùeüã^{{ì”)Ï<ó—¿¼ú*Ž7ÞxÇO>yâ‰çœsÛmHÒÛn»ûî'žXa…M6™j—-/±¢p\ ²¯¸bòä‡nˆæ†_`Ãx̘Ë/ßd“Ýv;ï¼´œ×\sÈNh¸›nòU_õÕÎ_¥wsº<½Ê¼ÀHz•Ù¹\!ŒU%?Ê”£ÊŸÞœ@\JÔ:ê(ç$i¾Dãé=µW?ډƑ×(ÔÆØnèéïÈ‘=‡7þ2 7\­wÝõ߯^}c»jò䆨sObruûíW“ô7n¾ù{4>±Î:‡ÆÆ›ALxk¯½ýögœÁ]Ä4hu=´(fãðóµ×ò¬Æ¤;f ÷n¸á.»LšÔ°Hzjã®».æÿ7¿Ye•ýöÛn»ÆïB6äã7®¶ÚÖ[ŸrJ#å#âSÖX£‘ùï»é¦Ã‡_xáüó¯²JÃq¾‘·µÖÚvÛÓOïÞø Ç›nŠï2õ­¥WôÖÜKx|âÔ»WΪ7ßœÖÎ6Ûì»ïå—7¶çn¾™˜äç_W/», ço£ÆŽÅÒ†ßl³=ö¸ärÞð69’«i· ÙgŸK/%$Ö;W/¹d·Ý޽¡ÆÍü–{g2ñ¾ˆBm×]<ò–[â߯Túñ©8bÊ”ÿtõ¨£Š¯^|õæ›Ûuõ¦›Š¯~øM75&ø²«£Gßzkz•uRÃNVvµ1 ÷tµ±AÖüÕɓ˯6¦ÿÛnK¯6„Ý 7”_m8É–]=昞¯vXùÕë¯ÿOW=¶øjÃ6ÖŽ«×]W|õÐC¯½¶èjãwW;®§«©ÏYzïÞ{wÜí·÷”ò!‡\{í>û|ÑÕk®iîjc)rõվ꫾ھ«>ظÚsïæ(˳žfœýevî]…00ŸÞƒP{Y\g2ÁÏ2D¡vè¡§vï½uÿÞsOñÕSO­wõ°ÃʯŽ×·®Þ}wsW9¤îÕQ£Úqõ”SþóÕÓOoîê]wýç«÷Ý×mW/¿ü¦›žyf‡FŒ8í´ùæ[i¥#âÕÃ/»·ìêwúª¯új_½ZÆcŒ…š±qùcŒ±P³P³qùcŒ1jj".cŒ1j¹óó—…š…ˆËÇcŒé"¡6M‚…š…ˆËÇcŒée¡6M)j".cŒ1¦„Ú4ÙôšPK³2­øŽØ\ðc ½U¸äjUQçfÑ Bä$ñkññ ñ_b6q†ˆw*îÍå­~ )Ÿ¢V÷m±º˜,º¹ÛŸ#r¼òë«~šÆcò…Zý™®CBíÁï^=*âOœ&zW¨ÁXÑÍBíìØW<"ø}±;ÅÉâb‘¾Su²ª“B'…­îYA)] æÜ«Dwvû‡Ekë«~šÆcú­P‹á‰"yT$Òð«SïÏÄ71O9“ÙÿŠÿ÷‹r¡v“XX`ÇúºØL<%Ú!DÎ\MóYÄ‚»(›®î%¾/¦¼Ë¡"'…œúB¦o/¾)¾$¦#E;„ZzõIñ=A½~¡˜]P߇ âT}‹Ä¢âóBÒ<ï&h‡ÛŠÔúE2}ñ1Z”×W‘E-¿=sﱂ§|J,!z×:nŒ1jµ„¶;ĺb^ñ'QU¨=.eûˆó3"_¨!ø~(–EBI Y³¡ káL±íj-n»Š|ùacúxQ$šjˆžÛŽHÃÖ–OŽPCŒR×G‰Ï l–“ßû‹ü·À?ŒœL9í’/UEow·H r„ZÕöLL\aFøá!Û30…Ú)-¥×¶>™ÒxÀŒb'Quâgâü¢HŸÛœP‹¶ìIq $ïBHºÑÃ6yû„Z‘ÀBp0­²•Sª>Ž ¬"¸·µB&òß<í~,Dj› 67G,RËp¢È‹ƒ9Áƒ°ª½³\¨Å˜¤Ÿ¾uNšUÛsy][¨c&Ó´^óQƒá¯ô®³!X2â$Å‹\¤‰‰»=§ ›jØ¢°ùEÉ’cQ*ÚmQ+ç@­|‚¿V¤VŸ|‰__i>k l®jlSþÀ*†—$%†äÍ/í¢·À²•n’¶C¨±MIx‹õ-ji{¶P3Ƙ–µl)ÑJ×ÑSŸÑy™-Ñx.íÈ8¶–¢s4“þ@XζøÍ)ØÒ/ª 5¸D`/)òQcšÇžïÎÝѧ¿Ÿ¸‘ZGˆ«ß 6j©l?Qµ”*þñ^¬Ç BâÑ„óŸr Ï„#|‹Rȯ/òÆ)Ãè×n¡†ø¦Ä°„QS÷ ®bßŦˆüâ^¬ª·Šü· Mä 5r»@’B¡ÆçW¨wÚ?ÏŠŽÿi}•û¨å´g 5cŒé‡B-5«¸HÄ»vÑï*:,ÇIb”øbIĽX šj°Hã`#AŽpî“zE§ä>õ…yXM`ócÃŽø_käE¼—-fì—ø±ÕEj”öÁùG6‹Rȯ/JìW‚ÑŸ‰¢µB-‚pGvpþ1=3‹[R =iQ” =©úœúDR>œÁ\LÔj@>©©+Ey¥Yµ=[¨cL?jÁ%I'¿|ÖZüå}—OÎÒÂßB3Æ µ®jltâ‘Ã66~c`fQõD¡…ˆËÇBÍcŒ…Z ÀËçç‚Íš¯ ¾YÅ6–…ˆ…ZÿãHÑ»?äeŒ1ÆBÍBÄBÍåcŒ1ÆBÍBÍBÄåcŒ1ÆX¨ —1Æ µÞj§˜–þp„KÕåcŒ1¦Ûè“BmcŒ1Ƙ@¶¨cÌ@æg‚ߟpiù»ø›xQ .}ë],ÔŒ1¦8C¨¹4Œ~ìq²xO¼$Öü:Ñ?„…š…š1Æ´}àæ§Û\ÆÀõ‚Ùã÷øyº•«ï»ýÝBÍcŒ1ÆBÍBÍcŒ1ÆBÍcŒ1ÆBÍBÍcŒ1ÆBÍBÍcŒ1jjÆcŒ1jjÆcŒ1jÆcŒ1jjÆT‚6yW¸4ú"|ñœŸ¬qic,ÔŒéWÐò¯}%ÏÓŠë„kº‹#˜1ÆÔ'û¡P;Sl*~!®iÌÅ—Åñ/1æCbiÁORÁÏVT}úëb°àÇ.¾%¨€¢·-(¥ûD'eDʧůE*2¦É€ŸûˆwM”-åü AMÍ%.EµÏ½Ÿ r–èÝN{‘ø«è6¡VUjt&ÏE%ÖmÏêëB­“åì’é[­Åm£wáýP¨$.¤v¥Hc"°>CR,ÆäÇ'ŠÄâ@ñuQõéH´ÅÄÛáõ%q®ˆñ¯³‰ÞjgB(±§Ärâ;¢ü®rž¬?Žo¶“žç‹[E¼—ºø¼#^/>'ÝÖi»A¨½&òóЙq¿Èú‚«Ø{âU:$Û|o 6ãf_7µ÷ÄÍbf‘[U…C¥úSq„@žÝE×âYω¢˜Ïˆ8Õ/¬¡L“ä6^EƉ3Ç¢v€ Ã3œUÍÕ–b]AÛ¾ µH@Âï (XmcŒo‡Œ+Ês~9¼*˜~NĹS0©<,ê¯Gï¤ðˆ üñ‚(_ûž&˜6âAzñL‚)6z«¾ikÛ['Ë9¦ðÁÈÀK8òcâB~¸ú#±•`¯;:“ô®"ÿYÍ•@ÌÕ[¢N«ÈjUÛjy-P’ÌeH Âo”mÕÒÎiÍ<”UQù_%Xº1÷UQ§¶ªýä“j•…mëV¥ËÖ1æ ‚&5¯ å5+†ü§³­ÉÕtF@puy‘nÕuì/Òwá*¶Ãi ¸K¤r ÁÊÖ0«1¤"™H|lN<«ü̃1ÓI®9ð¨û¤HÏlVjäŠKjs¹B³²'d=±¯`ˆa@Ým,ÒɃ¶J|6EP~9Œ,{°¡N|WÄÁ®Î0÷´ ÿC«Þ¢I4}SÅD\,­)FŠ¢©·ê›¶¶½u²œ‹fÏ Â/1&ËcBpµ.ZnÑJóŸÕ\ Ä\ÕoùB­j[-¯…8W22Çù¨¹ÒÎiÍ<ååá^â¤Öëª-°Uí'œ´P«µõIg`ÝÛiLœtHbR‘T&åü§³aZdQ;AL“Mùf_û,jH" ‹‹"¡–oQ+ïœt†XæãEU‹Zý\•ÍñôjU¡ÆÆ–ÝæliÀʘ4ÿ$Xý¿"¼8/*øÒɃ֕zm¦ï’_¤ÉÊuÕpBhÕ0GäMY`ó`ÀÍRñ(]_¼,xÓè^]TzùoÚÚöÖùrNS`”H{\“«„Çí98I0æ?«U%P§Uä µªmµªGTœê—vkGžò§°hç†Æÿ"¡Ö\ ¬Ó~òÇI µø¨,b½QNª”±~á•ÿtº40­<ÖR4â÷ e ·3ßm*7l9é·VE8ll©Ú¡¢è^rHÌü­„r&ˆTvc¯Åš˜/ÔX™!F÷uò†ï^ø3ÎfÇ&"šúÓÉ/J {$álCÄwÉ/åPƒHðæ&žæ`Â`'Pγ˜Z˜†±é®,ʧުoÚÚöÖùrNSˆÓv”iÌrö˜rOú¬V•@VQU¨å·Õ:B­~i·vä)z nE„dž¢Ò«Óë´ŸüqÒB­²PcC¡C5à"ŠoPLµÄgOšöªOÇzO}²ÛwZzê³¶>‹$Ξ4höï›jרSàWÁT„m‰­\_ñÞxê“nÖ4)àSH=âßЪ’AðaÉØYàè7[T4qâ3¬§ ‰™a‚nFsyc­Ï’ JX $x ¬‰IçYÊ'˜çür`±ñCÁú˜ )n@ðÜòËßúŒç»±ˆÓZÒsÊEÏâ^V̼#“tùÔ[õM[ÛÞ:Yα ³ó@Ÿ%‡l„Å ,º¸Šw‹UFZ¬àLü©×Tù³ª–@Ñ„Z§UTÝúÌo«u„ZÕÒ®Ú6ªŽØb§ ð,ò?u¸· UÄöœvæ}oÍZ5Wq_> œA„aY\¾Neë§ZVöÑ®óœ_ m+ zñqpæ#,å%–NÙs z=‘–j1~ù³°0e¦–ì¢ÒËÓv´·Î”slÃÀ³pHýP‹¦.ê‹å+õÅÆYѩϜgå—@Q®ê´Š|¡Vµ­ÖjUK»jÛ¨:òåœmYfÚ6µvŽ Æ9ƒÙ\ lmûÉ'-ÔŒé5V¬ùüG:TÕaúl8Çärhm9°>&Z[bͽQ·•s_ùâ]ki_«0ík}ëËpjÆÔ‚CõlVb*Ç/­mT=·årè6°=°±Xþ±˜\ÎM¨uO«0jjÆ‚Ûèlà³²’¨êärèNøPBú1L—s„¯‹u懆:ù¬îo¦j«è†öc¡fŒ1ÆÓç±P3ÆcŒ±P³P3ÆcŒ±P3ÆcŒ±P³P3ÆcŒ±P³P3ÆcŒ…š…š1ÆcŒ…š…š1ÆcŒ…š1¦›àgŽÞ. “Cý…¾õ^ä6ÿWM=JX¨cú$}ë'\Lïò‚ØEô¿·ÛMtÃWòù¹ôëDQœôçä=JX¨UjgŠMÅ/ÄÕ"¹ ø²ø¢ þ%"Æ|H,-øÁâÏ#øQ—ªOGl&¾*Èɶ¢¹|¶ƒmÄ¢<æÿŠÑ"v³rø1œ´s¦|ZüZ¤]—8gˆÞ’üÞbyœô³i3´¥Ï9Kó>1M6»Š4'Cqîí+™‹D: õ•!¸3ÓRÑSŠJ¯“¤yèäTý˜W'škÿíUˆCßlnÜ›"xGÞ·›—Ojj-j‰ ©])Ò˜¬ÅßR,Æü™˜(>t§Å×EÕ§o –¯ ŒÉˆÂæòÙî¼Ëí"Ã/ ~Að.uÄSzoý”XN|Gt›PÚIŽP£ý|^Œ¯ŽŸ‹ü+‚VôÍÀ¢óCm_‚iÏíÎgÑSº¡”ÒB82=R07Õ©}Ž0_¬$hÌ#‹ª£Ä½‚˜ÂY|âÝX^’ù}Šqò»" \zSÙõûé1Ñ6 …Ú“bU`ÁÊ Æ¼Aмð$ å5Ä"ÿéÑÓ‚©ŽªeÃÊ•Á´j>Ûƒƒx\ÍPytÅtÈ;b;œ¶€»DÑ6bÊþ"λA¨!ÂúÚ¢´Šq(CBÊÏO1äÅÖÒÜDõgÀB¢>Bà™ó¦“o—žÆª*Ôx#ÚÕ¢j™“Ÿh“ œícÂô¢ÔÞ,„â(T.¡âˆD›¬jů*ÔÆ 8EL0…ð¾1Þ«ê»ç 5iE ú,ãg~éÝ()·PæË©vŒ*EB­ê¸Ç8À½Ñï¹UB-§­…`ÇÚPÔ©}ü‰™ÓßsF =ÒËßÝ"ÿ,m~Ÿb®'f,a–…,[ÕOÑ,;½õùÏh>eó.ºy2„ÑD.ļXPÜóŸÎ[p5NuT áé6ky>;Ãö‚Õ'9ÁnDW¬cé)¿‹! ò⢛…!; ZÎó"Æ/ªZÔŠÞ.çÝÙ fœ0˜N+¼"\pH¯Vj³ ,Äù¶´¢”ék©Ô`mš 5¶E°É±¢/ç µ¢÷jŸPc€Æ¶½jØìËó™óîùB¶W$ªNL¥ù¥Ç‚'g1ÓœE-T¡·¦iF¹Sߢ—dˆÔÖ µœ¶Z“v… ¬Ní³•S§UG ÞbQÁÈ6“ˆ‘ETíS«‰M ñ_íÖöÓÁÂBíc°%”¸ª‹vÀ^‚§QþÓa\†YDáEÛ©Eùì l¿’C¼¢ÞoŸP‹O/r®ï6¡† òç"N©Ú¡¢(eÞ”˜Efüòwg@dQQÔ®àþ Êßt‚H­VØ}‘}ùBVÄj{?Ñ¡ÈÄ5z: u›PÃÓŽ³ŠLUK)ÿÝ[eQÛW¤µòÒ£µç,fêø¨•*8)Ò4É)cש3±QȽ,írjömKíj ¶5ëÔ>Žt›²ü«Ž¯ˆ^kåñ«ö)Ûšì1~ÖI³¨ä±Ah¡Æ†&ÓE‰»àÑo€nŒÝˆøxê vQúùOgMÀ´ÁÇ8X…à`ø×%9ùì$<‡Í"kb;„àM`/¿;…Zå¬ðÊO}âÄiÄê“¶‡ÿPs%Æd޼mà…‰?Dù˜>±œí,ðÌcs„-Qº4ñYk¦ž—q`bÕ‹ÅÛ#Ædz@ ¶J¨±­ôtžE8Ò³w…ZZz,~(°„1-q• >®ìÓ|æ¿{Qм”p`û‰ñ {0cZ꣖Sz³‰óE;„Zù¨‚×ÚŒ‚VÊ›âYÅV N÷±g57±‰Oj9ñ92R°Ù·˜h­PÃû“þ޳NíÓz)OŽàǼ–nøæŒÈÓømê‚Ñ5=É[䨓ߧˆÏ >›…é¤NšEuÄõC¡ÆÆ…HjX}‰+H¶ §Ñ/+âÚ(ú¾ð-1†­¯ |Ôâ"ÿél3ñ­,žÎ”~×*?Ÿ!ºsÐâ ²|˜CærÞã6N£Ý)Ô€ZÅac…ÖÅT¿£– ”ª“gQ‡‰¢âIdÖ¯9¶çéä“üÇc%{ zAì¿éÀ´àc7 ñ1&2¢UB…ž%äGàsÛaœÏê]¡VTz ñ+ Æj·ˆ½2Ígþ»å¡(·ØH ,äþE§>sJ©ú ÂæFv9pùÀ&ÍR„·c ,¶Õ:ãï˜NùEÐ_.`ŠGê5숴f?•·ÕüÚÇŠ‰Šˆg6_*-ïeé(Ásç<—¹’Ì9å™ß§€o ¤>åÍ¥Yþ!ÿ21¦I˜òY=s.¯\°4¦Ï[…K¬HB±4EJö¿wd+#bU=5Í@ÀBÍSó yŸm ¸àöÛ_“Ñô¸š”{sö]Øxå]×&‚½ÐBÍS|AØa£_ÈàDXôº0ÆS¼-ÔŒ1Æcº 5cŒ1Æ 5 5cŒ1Æ 5cŒ1Æ 5 5cŒ1Æ 5 5cŒ1ÆX¨Y¨cŒ1ÆX¨Y¨cŒ1ÆX¨ÓÝð³Kü¶ KÃcŒ…š1]Dùò™V\':Ÿf;žnLï¶ µŽ µ3Ŧââj‘Æ\P|Y|Qÿc>$–ü`ñçü¨NšþhÁÝ'¢ídšR¾+ˆÿŽØL|UçmE'eDʧůE*2¦É€#ŠwM”-åü Á[Ï%.EµÏ½Ÿ r–èÝ.w‘ø«h­P#…3DÿžŠÊ*…r‹£‡e}ûÒô¢Âô¿ößÍ£M?j‰ ©])Ò˜¬ÅßÅP‹1&&ŠÄâ@ñuã_#f©P{_ÜWÀšb-Aü Ä’â5ñ7|ìdLj"€{J,'¾#êH‡'«¥£Ä‚÷}Vœ/nñ^êâóbŒx=p¼øœ8XtÛc¡Vg8¦_ é`¡f,Ôz«ýw~´éç[ŸåB-å<ñ ç·‰Ž­GÈâÇâq‘ µ"îÿ#^¼5ö¤{DïvŒ"p¬@$Õ‘HgîzIäÜÅè3‚æ[óíEѪò¡v³ˆo ÞåR1H‚¥p;‘ˆàùÅᢵBm” •~I|Sœ(ˆ³”ØFÄ{Y¨Ì(n„?*–Ó ÒÜA°°É—ªåe•³Æý‡.¾-ø ù¯„{~©b©%WŸ+jŠ˜SÄÜ‚wŸAŒ1Íü˜ü$ó‚…ß÷DZ†íH³¼LN¿ôý!‚RµýÔéYUkªj[¥_üDÐL]ìrЮXÌ7W×E° §<¿ ¤j¿Î/+L”IZƒ´™É"ÿé­í•å-°ïŽ6i{ÐB ËÝàl±€H·>ÙÄÄCb³™OÜ/ÞläŹ¡†Uovq®ˆÂ‘°}_`»êäF^*Þ7‹™E:(Wj ‘”êOÅÉ[t×é‚g='Šb>#â U¿dÞLä6^E¦ÓIùÀq€`*ƒN«„ÚU)̃š)‡8§ -X4 ¿BÌ$¸—Öû#±•  (÷®¢ªM1_:¤C罂Gá8¼ òK•·cd`ê%üvñª`P>UÄ¥SàÃ"?flWG‹¢²jGš9eÂXD{`ÿ¤`\Êo?­íYå5Õ\[ÅÝâA±—@*­'¸—}Æ.îͯ—¢àh’h%AŸEH¥£bN¿Î/+f[œp¢Ìå)Ük0çé­í•å-°ïŽ6i{ÐB¶ukµeë­óA‡™WòCèò"ÝVËjû |àbÓgÝF U\e%Ö~KtF¨AþSIÁU,‚Óp—Hå«ÅžpH7D 2‘øØœxVœŠq,Ïú%ƒGDzf³ªP#W mXgÛ½õɃ…Jì}´+&¤¸ð`k~¤ —Þ"¡LÛ ïtrè|Z0²ÎÆ’T.ŠJ5Ž<´ó8¶Œ,ä° O0Õ!Œòc²`#ÿ,)‹Êªiæ”I€ xC‘ß~ZÛ³Êkª¹¶JN¢Ð$· Â)aæBò륨ðšâYUGƒ¢~_V¸ÿØ*§ˆªOom¯,o}w´IÛ›·>ÿM—ëŠèÞNƒcâd¸!æÅ‚ÎöC‘ã8ŸnÌ! ΰÌÅ«¼/÷Æ¡ŠAðtC¶35$&ýÅE‘P«ï5E-0ð1Œb¢çêxQÕ¢Ö*_.†Z6ÇÓ«U…Ú¬Ën¾-­ji#‚Y·±P¡<Ó}°X_¼,xÓèr˹7®¼á$ÁÖÉ¡èû‹ Ørâ–Msž+ql¡_³ù²jXÇ«ÆLýeÓ\µ#ÍæÊ„gaûÉo?éYÔTý¶J:iK;FD¡–_/E%À¾Mδj¿Î)+BV›ÆajäO¢¹§·¯W¦-°¯6¤i¡ö1N±£Þ(H']ƒ²}Fü÷ à^ "ílø`™Kóƒ#…h>E´žÊ»Nú¨±q\ä¤ß÷vüá°±¥>j‡Š¢{É!1óÍÑåLé {-ÖÄüé›bt?ÑZ¡FkI×èECkz†fl™+‹§ÜJ±¯H­¸‰ëÑv ü>7ø‘´J¨á™D›d2+J-?&~*´U,Á„³µsÕŽ4›+“…[Šùí§3=+Ç¢VÔV›jùõRæ€tC­~¿ÎjHI6pÙáAˆÔyzûzeÚûúhc¡öšˆ':² ß ("ƉÿëEìåyH·>ñT(oØTèü|ŒƒU ލ?麰“B p#eH⽚jÓ=> Д `:d¼7žúdBÂtO ¬M©G<'ZU2>Ö÷; ÜŸ1³qC'>“Vê_[+0&T/°@äÇÖåôwZ2î1WíH³j™àOC Áo5¿ý´ªgåÔTÕ¶ZG¨å×KQ¿&^0îqÊžÙ*~ªj¿Îjä#| sFs£JûzeQ ìë£M¿j8¶Ó°HEB¢Þg‹“pªsYA¡Ç4Ù'žCP_XÂÊ·ÛŠ„ÚÁÙr±…Ã)_#ŸœÕºCü³#”‹„'³0öâD9M6 [¸Çâñsð"ŸAÁi—øiNØ¥¦Žñ;j©¸i ^ÓxyˆfÜ[Ð&c{N»è>‚·f"‰1ãª1ÇFZ%LÞp >G°‘Í©´˜ò‚á¦h †?ƒ ­Gòô$ï… Åï0:2Ç(*«œ¡“üÌ)È=i­j„0é®(è§´J˜ÏÊTÉvö ÖåÑÎsÕŽ4ËË„3}´ÆRŽõ¤ñsÚOýž•_SùmµŽP«Z/Eýš] ìX¼5}ŸfâTí×ùe‰"¯èü§·¶Wæ´À¾>Ú ‹š1„‹©ˆÏОùÄqß}/,.ÄkÙt¾ýôמeLjÆÔ‚ƒÙlV²M€ÇS8PõìO÷ÀJ‘m¦ò¤ÓÚöÓ¿{–1jÆtü0¼côÆ#‡“GéÙ¨¾^E[ZÆ´¯ýôïžeŒ…š1ÆcŒ…š…š1ÆcŒ…š…š1Æc,Ô,ÔŒ1Æc,Ô,ÔŒ1Æc,ÔŒ1Æc,Ô,ÔŒ1Æc,ÔŒ1Æc,Ô,ÔŒ1¦¾’_õ·,ýÖÆ5e,ÔŒ1¦í¤?Õì·î ÓŠøí¦jÊõb¡VÈ™bSñ qµHc.(¾,¾(ˆ‰ˆ1K ~Æ„øó~ê$M´àîUÓä'‡§)å»¢Ý ¥è響 9wEø‰˜x×$A9P&ŸÔÔ\ârQTûÜûÙ!g‰N–CÕ·ÄŽâ#ÑÜSh™±ÍP2Ÿ?üÀímšlvñ]ÒÚ¼@|[”ÿnc§çs‘ø«è†É¬þDؾ©kʱø’ ý|EÌ'®}K¨µXÓ»5U§^Úѻۗ‡v—m?j &R»R¤1CŠ¿‹¡‚)0Æü™˜(˜h?Н‹ŸÁn6Q$ÔrÒ|_ÜWÀšb-Ñ™.w† „{J,'¾#Êï*çI¸9J¼!0×?+ηŠx/åöy1F¼8^ hí.êôÁÓ‰C篚þ!Y¼¯ ä)žÂÏWs5?Ÿ9Ã+¥M›¼M´ª”ºmz~M4—fýÁºÎÓËÙSÐ~hKL?Œ~ün&õ2EX¨Y¨õn½tCæç¡}=·ß µ´ ‹„ZÊyâ"†O'Ò) [’‹'ÄV‡"¡–ŸfÊâ“tç…ZäXHª31#¹ë%‘sSÎgÍ·\î`c{Qt¦|ÞÄ9Y,%¶1&ònFq“àí˜bíËg:<ц±¢±øéäÓ‹Â B°¹n'ˆù¨XBL/¾)v,‡bš,íèõØöÒÉl” _c‹"ÍEùD˜?Ü—§€µ˜wÿ”XA°d*J“å ‹3ùõUç­|s îšAŒͽ?ñ¾°`ü=‘–pN΋Ú@Ñ|Ur¸ GðSñØ#YŒU-½˜Â"hÕÇ &ȯ žÅò>MáHññ5qºhUMÑÚz)ïÝur›_ƒåyÈ7òÛö=b1‹`†´PÃ^ÅäÙb‘n}²‰‰=† ÃfÃfÁýâMÁF^ܘ+j9i¦yf<»8Wtrm§Ø÷ÄÍbf‘ÊŽªBI”ø©8B”o´1ñ¬çDQÌgDì<í¶8"Ü7Ù§Åi‚NÝ{¯3 †•ñ‚ô™t;#•èLLjvËÙ|¡VBï` x+AåÆônòâðÀâçB‘¸W Ô Ã4ÓgùDÈøóª¨#Ôx/F'¦+ÂoEiÒÒšk?ͽ5oÊäwªˆËK&ª‡EþÛ½-˜ºŽåm#'çEm€eUZ÷ â?"G¼ ª–^ÌNнÄÄz‚ºc$a„LS ·2&³;ĘCÔ¯©”v×K¼·~n«Ö`ùX”3nTmÛÌw1Ì Z¨±Ñ¶Ž@Ã.#X‘ǘ7V ó R^C`ö\^¤ÛjEB­ã‡"ÇišÂÍIÓhÌ!ò‘©½ÈÞÖI‹ƒ>&èÅE‘P«ï“D‰ÑQ™hcùD›S¾E­UžRñMÉ!%“sh`°X_ †Øî«´yÒÇ—(Mï@ r¡/•.‹ ÖúE‹‡îj¤Lxº!x’ ”ŠR(pY6P,íhjEeR>¾a{ æŸE~~š{kF9l9«€“IþÛ‘fê=\”BNΛó…"?ô –šØ¿‘ UK¯(<%‰m»H¨Å…b«_S)¬—ú¹­ZƒùcQž‹¸däOsk¡ÖøÅ¡üFA:éŠí3â¿W÷Rtžœ4ñ¸Šáx5aoûgÇ)šbÙ8.rÒo‡$Â[ê£v¨(º—35t·[‚¤p°€.Š¥peã0¹b•d;£(µ¢µi©„8›CpZm‚v µxöup}‹Ç,R‹Zù€Ë¢ˆ6²‹bv§P£ôX¯99©óÖxPÑCYbå´Šò·Ã‡‰žíÊl¢ÅòsÞœP‹à¼±Àç©jéµO¨±UJ8¤~M¥t²^êç6¿;)Ô8‹ZOÙñcäÐBÍGÄÂ)2Š„['Äg_‹žmåyˆ[ŸUÓd¼wOÁ”O±l¯Ð…Èmsò…£œPc/Ÿ†‹uŠ)'qDC¼7žúdø@dþ”9^,Ÿò­XÖ£¬œŠÎ„î"x NñxcsÎɶV¨ÂÁ ¸ÐG¢K~kK c6Ù˜`û;Í7~r…ÒÀ­ z–Tœ¬Ë?D’¸ñ€ K,ú/>p„3¤ Ö„ã Ñy¡ÛƒþN‚%½¼fiuÞš*û XMâ'¶ä¢m8çíˆý·qr޳JL!?çU…ãOüV;!Œ<ñÌ{ý<4'ÔØŸa´ÜYp,‰ÜÖ¯©”öÕKÚ»ëç6¿‹òС†É€ñŸZã`Áü‚%V?j8¶ãDjlµ<[œ„3=,+¨Î˜&ب<ÎÔ`ß*ßn+òQËOs„à|Jù ¯Þj œXÁŒŒÝ%ÿKZt3 à<ûsð"Ÿ‡À–øiNØ¥TŽñ;j¬]:_>ål!&мˆâÁ´žË;âÃÇö};6ù )6ªú<å<}Á7Šî·1W{ zwÈ;J‰CE§>Ë\zm’…kð9‚­εûÔg¡Fû¡”ðˆ¥ÜHòY]àÌ^ÿ­™2WŒ®Œr¤ÃGvª¾g¸“cÿˆÖRÈÏyÕÚ¡]Í)hWÌ„°ì¯ÚfZ+Ô€Òæ)Ѹ~M•o‘·¶^ŠzwÜæ×`yZ+ÔânÞtʲò/Ó˰úÌß–2ƘVmàšî9˘}ŒñycºVx·Ë?AbŒ1jý>‚!Û»xø±72«°P3¦×À+~”ÒcªÂ×òz÷—Lsà3‡#²x-óc€lõZ¨cŒ1Æt)jÆcŒ1jjÆcŒ1jÆcŒ1jjÆcŒ1jjÆcŒ±P³P3ÆcŒ±P³P3ÆcŒ±P3¦»yLðóê. cŒñøi¡fLá10­¸N¸4ŒéÝñ³N+¾*øí µÿãL±©ø…¸Z¤1__Ä¿Dʉ¥?ï@üy?›KQû—Çü® þ;b3A•“çmE'»AʧůEÚI¦É m¾“eK9BðÖs‰ËEQísïg„œ%zw@¹H¤?öR !…3D÷  uj³NyzÊio‹µÄ7õøq¿èOS~7´¨îlÕ´É8—õ§ñ³ýñâ$ÁïxZ¨ý‰ ©])Ò˜¬¿Z?T ÅbÌŸ‰‰â#ñ8P|]ÄJ½G<Ÿ@œ÷Å}¬)‰¿XR¼&þ&œ<¢ Äžˉïˆ:ÒáIÁ æ(ñ†à}Ÿç‹[E¼—ºø¼#^/>'Ý6 ÷?¡V§6²%²ÛÞˆ4N°hdô[CÌ.l›éßm˜}º³dºS¨qï¢NúùÖg¹PK9O ‚cøtâ6ñÕ!ãâ£,ËçNñ?âÁ[c@üõn÷(Ç DRé€tæ®—DÎ]¬®>#h¾E1ØØ^­*jg1‹ø–à].ƒ!Ø$¶ép€ž_.êÔ‚~)ñ…!1æ£b 1½À‚²ƒ`zŽÏÂ~É{}J¬ Èsµ SÄÜ‚<Ì ØJ Nyy–—RyÎóKcVqœà.Ä(–æá‚px,êõs8JüX|IÃqþ!ÈÉ·?üüÁ¦¹6² o9ñ{«æ—@NÅÀÁÌ’/rJ <UK&æ¹P§%YÔò[l7Ÿw‹…Ålâ{"­ÇœÑé'‚{©åýEsýq@ 5,[tž³Å"Ýú-°ÇÐ8°ÙÌ'¢ñŸ'®-¨˜ÇEy>±ê±6=WDáHšXŒ¾/°]ur#/ro3‹mD¡Æ@C©þT!ÊËðtÁ³žE1ŸqXiÕÆà ¹W… 4ù+ÂC|su„k-ÃÍJÁÄ@K•ø#±• »R`WŸE|ú ƒá·‹æjóUÁ°uªˆË&€‡EsëÝœœç—Æ–b]AúôJ&¦ ÂïÔƒuó*A’&3ĹWpï#‚plc/ˆæZþF’ò˜½Û«–@yÅ=†Öø–ÈéÑù%P”‡æJ&æ–±ºNK(j9-¶;ÇϘ‡£EQÊÍNQ4×´PckfŠ_F°j‰1ot³y)cüg MÌkûè; Ôt¹¨BÒáqVê<‹FÌÕ“ƒEg„Zä?í\Å"8mw‰T®±¶XL`Ÿ`²§Æý~ÖL<‹mµrA˳~ÉàƒõI‘ž9ª:Ð+&Ú'D1M;$¼<5\e‹Ä.õKûÏŠý‘ÚO{\ÕÚd‹E6¹É|7ã`ÚœP+Ïy~iPÚ3 ®®'ö Üo îÚXÔÏazOaÁGѧ9"°”‹Årx %³íÝvXµÊ{(ï^u3.¿ŠÒl®dbnë·„r¡VµÅvÏø‰q„’Á|STÍN±š«o}þ3n°2Žîí T<.ÏļXP1x‹RÆÈ‡òÔȘKÝry_Þ"6⸒K7d;cQCaþ]\ µú^SÔ„Á(–ùxQÕ¢Ö*_.º%›ãéÕª [iXvómiE¥Ý7GÂr1Ó­ œaã&Wù[”÷¸òÚdb}Õ°4×jå9Ï/ ìÄü“`› ×Ä(“ô¢"æ›Ë!!È_d°à¤$Ó©”»È ¤™LÕíNlÿL99wuC;Ì/ª^P9áù%P”f«J¦NK(jÍÝ0~2椾éé›Ò¨Z jÿÁëâFA:©Öfû ï¨òAŠ—^Å;Ë\zÆÓ£QÑFxgN]•û?9é·Ã½8¬2©Ú¡¢è^rHÌ:›>‘ ‚7Åí:Úk±&æ4¬í/û‰:uÄr"5³Wµd`J×ëÍ ÍåµÉ‘BtÍÉš:2¨jiü@l!ð³!œ-ªMƒ;['õsH¯O-49çò‘Øöð’É)7Æ^¤')ä·Ìnk‡å%М c/%ZMbüüh΢–_2uZB;„Z7ŒŸøt2/°ëB8ÛÓñ‰ÍNå%S Z¨±¡Éú†BG6±·EBó2ñÙÕ,ÐïÄgUóϧ+–ñéìj—w'ÖlËò1ÖR8-2=ä¸j¶O¨NÍ4_Þ«9¡†0ÝSàå@×¥þp¤]HÄ{ã©O:[Ò¤€\¦ñãiUÉ øâ; cñO¤O'>kÇt+<¶ÖU ø!ŘLÿ påuÄ–"Ö\ÊSº´öøY†'<]0ÈÓαAÒÒR˜ò¡¹¹Ú$Ï?X‰¢,à˜NìeEåYGU-õ+ã¸T`Xgᇯ^«rj°˜d¤¢mÎTG9Çîì Ð_Ò“Ú)AZ8ÎEçÙ‹èÝvXµrzh çÇHÁ6[ü1~~ å¡~ÉÔo íjÝ0~2žÐ™[©p…Jë1t*Úú̯rÛ…Žíœˆ‰g.‰«O¶8 §³-+R“>çeæ4”¯ ,aq}CA“'¼p¹M× #'>ÊÅΉ|‰Š”9“‚{ò?;B¹äbêÅ–€ ×Èi²¡‰ãï‚—ÏÏ‹8”'+)𨥦Žñ;j©¸iØb§ ð,ò?–¸· MÆöœvûÞšá8Ƥç[=1³“¼ñ‰Œ1Yë3ÍÐ2ÙÈ+:SV>4שM»mžRÅa™z”—gýÅüÒÀg”øJ"á ÷LÖV 5F Ê–:¥dÎ8$p·˜SðŒx„°XÍñHËùBd9½Õ«–@~ýY€Å1ºÒ§§>sJ (uJ¦~Kh‡PëžñG `ÙŠÖ¾˜rþèT4ªä×)ø— ŒiLŸ¬tùüG:ycŒñø™Gå,ÔŒ©Ç­1¶cdzƒ)8·Ö9agŒ1?fù°Ëg¡fL-ð6`S6§‡øZRôW0Æãñ3Dª…š1ÆcL—b¡fŒ1Æc¡f¡fŒ1Æc¡fŒ1Æc¡f¡fŒ1Æc¡f¡fŒ1Æ 5 5cŒ1Æ 5 5cŒ1Æ 5cŒ1>ʹ4Œ…š…š1m‡ùŽ?Tì7M+¾*øî¹[ÎÀ¤è§ÄÝ¿}wLè‡BíL±©ø…¸Z¤1__Ä¿Dʉ¥?pAüy?‚AÌwÄf‚AúÛŠæòy»˜]|^ð܇Eg õr†(sŸˆ!üj[ù]ñgwYO ‰/‰Oˆ¯ˆùÄ5"-UÊç³BÎ}}¸¡Ä˜~úbþi·3‹ö½é7ÄI‚߬:açLö‰¿Šædé6¡Ö×û—ÉÚ÷¬td°Pû‰ ©])Ò˜¬ÅßÅP‹1&&ŠÄâ@ñuAÌ Ä’â5É©W5ŸÜ;ƒ8Q2DÌ"ÈO7 5 ôr„ÚžâÓâAs§¦øõ7r2Epu#^/>'j½ÅH±“hß›rï‚úcs©Ý›æ°ÎSŒ…ši÷ÈÇ„¾2J÷ó­Ïr¡–rž@wÇðéÄm"†cCÆ‘C¬>÷ˆúù$®ÆÀ ‚ð4WÝ&Ô–”êK¢H¨=+Øz@xåä ÷Aó-ЉìÃÆö¢hUù Ä—_c>*–Ó‹oŠ bÞ-³‰ï‰t@°Î-H q©?mQ‹„þ·i^*ª¦É½Ø2‰O‰K Ÿ7š,Úñ¦?ÜK-ì/Š&ìœü§÷“ìëÛ‰¢§ä×{N~°:ßü 5öf–%ùýúHññ5qº mxïe‰8£¸It¾M‡1¼¨Fò[]ÕÉ8†W­©ü~—RõYUËcý‹6œ` g‰g¥Ëò:ïó€ƒÙ„³Î˜ÀÕQâÇ‚ÝÒá}«¶á¢‘¡¹2ç}´P{_Pôg‹Dºõ9Z`¡Ð±Ù°w¿@äñDDÆ÷ÅwDù¦[Q>a\}Sþ– ¼3~{u„âà§buQ$ÔN„ ÚròƤÂ]ω¢˜Ïˆ8Ö/™wCüJ1Ê„ú¸ &Á‰­!¼)ÃÄ®âm„:ZM¯ ÇSqîLðl5Æ41MÄ+B-?͘Þ‹¾ÃÐI8÷Ä$eYlÃíxÓ¢>U.ÔÊó_~oœªÓ˜ùõžŸŸ{!îÅõ‚…\~¿f»Y°«€eš2§WÆZã^,3 $B'ûH¡–ßêê µüšªÚÂSòŸÕ\9Ï%{ dÊz‚{ÙSbflÕ{Å<à&ĽO‹:c\%h“´däÒ³j.jÍ•9ï; …Ú“buaæ1oTÒ¼‚”×oÖ„3Rå'”5+?Ÿ (¬ŠØÕFîÊ_=÷–PC„1 |RD‘ã°²!$ÿ”Öá"ç.:F¬£Vù"æ¢(&îÉE‚’mì\Á@Ãr¢h'XB°•?9ð]ÁT4IPþ :EB-?͘ŸØ7±µ¤­z¼ˆ>‹íxÓæ„ZyþëµüzÏÏSå†#ö¡rÁ”Ó¯Ÿ„_,µ˜’/Ä\S°‘Ýù>RG¨å·ºúB-¿¦ª¶ð”üg5WÎŒ!Q¦Ž{ áäù´Uïó€I¥¹”svØ0ˆð”ØfòÛpQÛh®Ìɉ·>?f4f ‰çA¨6”5ƒ1Âh lI7ž'Âhý*Ú¦,Ï'Ó'Æy\°q‡L;O»…mz5N$EB<“(Ï8%‡U!9y#WU-jå¢3l«92‘'3ݤNdé„©¯d:ûǪ`ëeÀb?M3 µü4s¦«Øª‹(ÓÛñ¦Í µòü×jùõ^µ<ùQÃö­¸­\u:¡ §}„º[_¼,hK9îÒíè#u„Z~««/Ôòkªj /"çYõË™§¤=â…Z«Þ+ÍCý10v`/ÄpÜß.¿ å¶N™[¨}Œ“E,¬é¤k/¦¼£â6e42#Úg“´~>ÙþÀ:‚Üi·Pc_–ô*òˆ·`UW$Ô°þ\ÄÎ@î彆‰ª>j‡Š¢˜# fþöP9Höt»¡ªµ`_ÁŠ ßò‰8ÛcÆ„ƒqs<…S´é »2¾•µü4ó…oÁöY|z;Þ´Û„Z~½Wj‘WÄÆÿ¤æ„1„Ç©‹âì±²è­>óO3†” µüV—SzåOϯ©ª-<‡¢gÕo“ùB­Uï•æ¡þ˜ÀŒœÚÉÒ6“߆›³¨•—ù€jlh¢Ž©f\q/"ã*ÆÉè[Ã*Ï6¬J4P>ÆjÆ¥GÝTGçäóÁ€BÇcµô[ñÏŽ€+1ŽÃ ß䇡mCñKÍì©P‹¾w¬öÒ8»¤8ü™àé$x 2ypW<õÉ@Ì–4w±¢ñ?hUÉ =)\DŸ´¨øéJ _6&hKØùh!ø(p²•ò¡ýðlÍÇÌÓ(X ÒBâ6©!L±œí,ðœ_ ŽéŠùiæ ©ÅDŒÓŽ7í¤PC¸DÔ"µœzÏÏ‚ ž[§ßÑ ð‹÷âƒXOÓd¯€Œ¶A{Ž"†ÿ±BÑŠbïë|!>®ßl¿²ÍG+jù­®ü½ržž_SU[xÑÖgγê·É|¡Vÿ½ŠòPL ¬Ç(ÃŒO!œ¥l~.ê”y?jlrž"žò $ªf¶8 §Ë-+¢M(îÇÏ!¨ÎFá£Õ1®‹|µ‹4Ù²¼C4—O*•çòU6¾¾†‹hg„vÁí¾LíøÏ­&hpEÒ4wEßQ£®ñ¤dˆ‰U†C ¸µ¦Û Ô+­øµt¢jHI4ÏÅ+‘oïŘMtJ7JOý`ÇU–Õp´ŠÅ‹ÁhEA«£µà¸z¾ˆ6ãé¤IžãG>óÓÌ¿EöÎv¼ig„ÚÞ‚öI‹-Š™_ï9ù!µ9©1nÂ4½—é' Ê“Ósw‰´¦¶LùU¿õߎ>²À6Æq¥xð¢üÔg~«+"çéUk*¿…§T}V6™/Ôê¿Wy¿¨3&`:á0m’»ÎôÎVmÃéÈP§ÌýËÆ 8ž˜hùLI¹¤®Ÿ°Ié˜Þ¥êמ°9å»%cêc¡fÌ€€£ûl[cÆgÛš4³Šªgs@œ!Ô\ }W¨a ÀŽž~ŒÀc¡f¡fL-ð¢`»“;þF|(ÇG¤Îƒk¡Ûài9'7©Áø!\cŒ…š…š1Æc,Ô,ÔŒ1Æc,Ô,ÔŒ1Æc,ÔŒ1Æc,Ô,ÔŒ1Æc,Ô,ÔŒ1Æc¡f¡fŒ1Æc¡f¡fŒ1Æc¡fLŸƒ_ ˆ¿«˜†tüü¿ ëZ3Æ 5céOJýÈô´"þ°z'©ú«‘Ƙ"òûrïözc¡Ö¤P;Sl*~!®iÌÅ—Åñ/1æCbiÁïÁó`Q˜¦”ïŠü˜o‹µÄ7Ïý¸_trNù´øµH'éi2àGâ]“eËû~BPSs‰ËEQísïg„œ%Úg÷š _äü+b>qh‡Pë]©d¡VŸ‹DÎ:õ¼µd×B~oê+ý®;뺯´·~(ÔR»R¤1XŠ¿‹¡)cò“ÒÅGâq øºx_ÜWÀšÉ•óu1N¼#xîbvÑÉã A%ö”XN|G”ßUΓ‚5âQâ Á6ß³â|q«ˆ÷RŸcÄëãÅçÄÁ¢µå³§@¶"èx´.~I“r˜",ÔLß*Ãväí5ÑmïÛ µÐÿ„ZwÖu_ioý|ë³\¨¥œ'¾!bøtâ6ñÕ!ãŠÒ¼SüxEÔy²ø”è-¡9V ’ê5¤3w½$rîB}FÐ|‹b"¡°±½(ê— òq‰XÌ¿w”ø±À‡ÝôDÑœP;AüRP#C ŒüçF[òRâ BІDüüâp‘߯Ž?_éççŸ4Y¼Ñ¯ ª¦@øOVÞãƒ×WvS–s1¤ùÜ‚§Ì Æ â <‹ô·ù)½ïb¸ø¶ø/AnYÀ”×KyÞKˆé9ÜA°°¬je!ë8Og¬[Aкª¶™¢é0†—¿ikû5ðS÷ ‹ÙÄ÷DšÛü˜õsUÔkòÛa;ê:,Êo“EoZ¿rr›ßÞ´PòEž-éÖçh=†¢ÄfÃfVÑ$Öì^犢|æÇ„[·½%ÔÞ7‹™Å6¢ŽP£ Qª?GˆÇEÑ] Ê<ë9Qó‡†ú%sš MD[þ½W $)›§ LüÍ µï ¦gºÖ'EÜöÍy.ǘ VÄgèLk$N&•(sÚbˆv……¹ùªÈÏL—Bo‰ª)°áþ ØK0ì®'¨÷ ­—{É3’èT—dLH‹"1Ñ\ ñ})IÂÄÄBÿ‚hnÝϨõ#±• „Ò@ì*š›¼I™Ñ˜ ’ðÛEÕ6“#ÔZe£Êi]¸µ|K-Šr•³~®ŠZÑÓ"¿¶¶®óÇ¢ªm²h|¨SuFN[Ô®,Úh[GÌ"–èñóAÑÏ+H™-H¶çÒô÷x¶Ñ1Šò™AINÊåK;„Zä?’¹ŠŸÖ´Ü%R¹ÆZ1Á–"Ò €L$>6žU~’NKL$`ý’ašóôrÞÔo¹,+òâ X¶6ùÏÅs‚'DN ¡Túsî*—õÏ Â/ùùirµjÉÇð›$L8ë„3‰2’‚Ó <¬Å“ø¡Æ©7²›K!¾/  ¶Ul3åãLŽPýhĘÀHÕÜäG{Æ–t<Ïo3j9­‹9õ‚É (Wù1ë窨Um‡­­ëü±¨j›,ê”@s#§…ZÖÖ'ÃÖº"º·Ó ™xp`'&CÕƒ‘65½²æ.wùÏÉv'V7ßÎï£ÇQ‚xqQ$Ôò-jåà ]…nË|¼¨jQ«Ÿ+@‘æŸEþ½ˆQ¬5,x¯:B-íð« ÖvùÏÅfœ/@‰9«À2oK+Ê?ÏMë+'ÿåeR'…¸9c#¢Pc0ź³j¸[=«~ 1Ï‹ H3 ¦™æj‡!å šÙ^&rîB”§«®YVuÈã*ùÏe)’n™•·VÿˆéýD¡Æ†áHŠüü¥Y?…|¡†¿m•ÅFÕ¨ŸB cÈÆ¯µvXÔöu,jÍ µ´ÍĘñÌ5=·µB-¿uáÆX„¥Ÿp¶ÉbòcÖÏU«Úakë:,ªÚ&ó…Z~ 47rZ¨ 564Ѽ=² ßš("N‰ßÀ`ý îXç}NL:Îï8/?ŸÐ»B-nÿшy¯æ„Ç58A‰§[KØfXqE|Ä{ã©O†6¶¤IUõˆgFkËgÁ&ïN ËÓé®x:bÇ&X ÐÒS„³5_G¨áSEûÁƒ'ÿ¹l.Ï((sNøÒSH§èéLL-xÆä·1ìÖÔøÎ‚<0Eå翨Lê§/Ô(à lq¡EÿåD0!ZŠÞ„USHsK¯‰'ÜÙ ¿¤'µ‹HóFjøý°©Ê؈Ý×þ:>jùB­¼Í÷ù‘‚Í_Ü*Òg¥ošO~ë¢Ö°nâŠÎXûMÌU~Ìú¹**ÿªí°µu?Um“ùB-¿ªŽœ9í­ 5Û9ëAjl,×lqN7^V¤‹x¥Ì!(VÎa ‹Ê}„à\UjzäÄŒ>EtƒPcˆ\D°¥‚«ò4ÙÐÐñºÃAûçáE>ƒ‚Ëv‘He”šB8Æï¨ñ³v”“í/FZ9çÜÐêñDó¦äØsÊœ'ª*Ô8‹D ´ðx.ÿ¹ÑbÊ–ñ9„?eùж Ö(óý éä'z1VÍš«ú)ä 5`ø^Qð^Œ!<—ÏÍsoAˉc]~ inY$Ì)mña±šÓ‹òFúˆÒ§µ×?õ™/ÔÊÛLl,؈NëñYEošCÕÖÅv$.êX7£Ò\åǬŸ«¢4óÛa;ê:,Êo“ùB­j äç6§½ù— Œ1]¿Äfº³ÍLŸ vk׋i-jÆ 5ã6cŒ…š…š1¦¾H×? dÜfŒ±P³P3ÆcŒ±P3ÆcŒ±P³P3ÆcŒ±P3ÆcŒ±P³P3ÆcŒ±P³P3ÆcŒ…š…š1ÆcŒ…š…š1ÆcŒ…š1æÿó˜xW¸4\2&~×övi¸?Z¨Y¨Óü3;0­¸N´¯dÆŠ¯Š_ ·ÀöÕ`»)ú)q—p_éj]*ÔΛŠ_ˆ«EsAñeÁ/Ûÿc>$øÝûÿÄŸG\/ªÆ|] ÿ%¾%¨€¢·-(¥ûD''û3Dyœ˜+BÖåw±–Š«Ø b!ñ%ñ ñ1Ÿ¸F¤µOi6@ÈY¢·Ê§Ý\$ÒŸÓÉþÞk‰o ÚíoÄý¢j~z«­æ ÖvL ß'‰÷Dçk¼wi_®b}uFB 4¡ÖI©Ô™þØ?j¹ µƒÄ‚Ô®iLdÓ‡âïb¨@`Ř?ÅGâq øº¨‰¶˜`šd2C”œ+b%³‰¾%Ô€2Éj{ŠO‹Cƒ>5õ'AN¦?/ƈ×NjωƒEÿjEÃ\ÎðG)ïÚíbv‘Ÿ“Þm«½;1æb`ÚJÛ—«˜òk¢Ýïn¡6„ZgÚ’…Úh EB-å<Áš8†O'n1[â,?æ‹ûPÚ8¶ƒ!Oˆ‹ÇEßjË Jõ%Q$Ôž˜Ä^9yCÆ}F”Û#‘}ØØ¨…v—áØù¨ÓO‰˃ò”Y–WR¾T2!X¶éðÇ燋ò§Ÿ,ÈsN9´¯­æ”1ï Äâ÷DùÄPµdR~"Hó bÁÕGÅbzår,Îo3å5ÞŽReQ4· ç3¶z‰Óª\åÔ`*¡°ÄßìT`ƒg©–öÍ#ÅÄ×Äé¢\¨´s–֔ɉ‚8K‰mD¼—üŒâ&Q^9Ϫ:Úä÷‘¾ÛëÔòтݶçá˜x_ ñ)Ôãíÿ8ÄÁ‚Ö˜š-Êky@ µ÷›•g‹DºõÉ&ö†l6lÀÅ¡œ˜¬¶É–Œø,šÈ›O—ËE‘$êf¡F—þ©X] µÓ!ˆ¶œ¼Ñå¸+vª”gDÎ:#Ô~$hWLx„ß.ŠÒÄÎÊðw„ˆW‘›q@̱¨ 4™0Êßk#“@yÌöµÕürˆ1jóWðUK&Ìa@§ l%¡…34ï*ª¶™:ˆüR}U0Áœ*ˆs§@ <,Z›«òL'×{!±¿ ÒÔ˜Voì¨`•ç­‹„ÚU‚e'‘&câ0š±@ÇÿgÜ[^&9ÏÊo9UûHÿèUk™'âxƒ¡#H½¢1v.ñ ØK°`[OÐß7èüZÐBíI±Ž@#/#XûƘ7Öó Rfcè ‘“mMÂÓ&ˆ€ˆ¶¨t«®o 5Dä“"Ф‡U!ù'­XoåÜÅIÌtˆiŸP‹í–ϱõN”XzªªPã}éöؽÊ߈¥ -ÛXQLÞ¨}m5¿èYH–a9CÕ’©:æà.]´ÀêF9Wm3u$Q~©²!Îâw‘ÉïŠ8 ×ÉU~ ¦“ëÓ‚{‡l9Eb(í³Ï Â/9[Ÿ,Qè/1æ[‚©:.]Ö#EÕò)zV~Ë©ÚGúGl®–Q´|«8,=…’‰r<5ÇÐSÐùµì­ÏF³9nïñ¬EF£¡³“ f°œ“mÐ"‹Ú bšlÊ7ûZ+DÆ‹¢©º\¨²“ ”b‡!ëuBþ,ròF®ªZÔZëOV.ÔŠÄSyˤK³™ž^­*ÔfØŒËW¨lwâ—ÆäWþîÔxûÚj~9~êcZ>1ä—Lsc­‚ðt³›cqs9¿ÍÔ‘DUK Īà4R?Wù5X4¹R>‹ œ(°]!+ËÛ˼ؗ‹žÂ¾–úŒíiL¦öõÅË‚2Ï?l‘ÿ¬œ–SµôþØ\-3ƒ#Ѹz—Èy ¥¦yŒH…Zy-[¨ýœé¤k,CxGåǤ»2ˆ¤]‚µ Í{ð ·3ßøa¿œþô*òˆ\Å©=jäÿç"6Dâp/kµa¢ªÚ¡¢(&öb¦[!Ý&Ô8÷š z,Áø8æ 5V·Xnöéé_lR¿"rÞÁ´}m5¿ðç ~£  ECNÉ´Ï¢¶¯H-jíjù¥Š? ‡{XŽVóɯÁ[mxc×Zy>Ùœ"a—>÷B¢½§(?œEÖ°·²È)ªÏÊi9UûHÿèUk9Úñ«Ã;s5ÑZ¡–SËZ¨±MÉäÁ„û'ûâQ`üd“‚øì¾³ZBûçÇ$e¬wñÔ'~x§¥§>{wë—X`iÜt<ºÜ†â—"n4¤B 8lTMãì"èðXàð#dPÀû_@A> Øhæ.<©öþ;³5\G¨!%Y¡î,ðöÃÁ9Kç!>“Aú ’˜ꎡ¯â0@ð,`ŸOˆiâkÅS2i[ÍO!¿8L»ÂÉÚÇ¥¡Ü'¦¨dZ壆/Ë0Fì»x½¤>j9m¦¨ÆsÈ/U÷ký(âi”|ý\å×`ÑÖg<ËÏXÄÈð‘–'»,6(F9RHŸBú„°8gä§=Žd‰µU‰ÒŽ£V9UŸ•Órªö‘þÑ«Ö2~ß”ù¥Ê¤»¢`´$>®ëç‹Vå*§ÓÉ•žSPŒ터,OËx#¬&q{+} ›×¸‡SJ”“7)p6>‹³üˆÅ|»rÕgå·œü>Ò?úcÕZfnJ¿Š…žËÎX}¡–SËþecútf†x>,R.‚»Ž€ð1…n.‡é³á¸Lï–js¹mw©vgvò«]ØòÝ9<.µª-õ_;°P3¦Kásl°ýÄF3ë<\nsŽ÷w'X¯ËÏ“„rpëê-:3…cçcÿ!§µ»åô]9n¡f¡fø.°AÏVž.+‰èÔÉÊûw9¸uõ|ç¬Ý?ÀÅ'BâçUÝrú_-[¨Y¨cŒ1f€b¡fŒ1Æc¡f¡fŒ1Æc¡fŒ1Æc¡f¡fŒ1Æc¡f¡fŒ1Æ 5 5cŒ1Æ 5 5cŒ1Æ 5cŒéVøÉ~Q×¥á:ê-ø uü5Ò4ÄÔ!þèVþG¿-ÔŒ1¦—é­º™VÄŸÐ6ÝVG$ýyò4Äm¯» ~|ý#1@…Ú™bSñ qµHc.(¾,¾(ˆ‰ˆ1K ~.ƒøó~Rƒ˜·‹ÙÅçqEy-x÷ûDý˜í¤Îåqb®á7àÊïŠ?âË:c‚XH|I|B|EÌ'®iíSæŸ r–hßJ´¹$‡ ¤XŒù31Q ‚?Н Œ™3ˆ!CÄ,"UÐLÛ³‰rù•³Û„Pz9BmOÁšãÁ CMñ[rädŠà.êqÍå¹ÿÙ^}}âoßR”²…Z÷×~²êd¿h­ ìB­wǨsÅ\b@ µ´) µ”óÄ7D ŸNÜ&b8¶:dÜ=‚'¾'ˆó‚ <¦ð„ø±x\ɯü˜Ý)Ô–”êK¢H¨=+0‰#¼rò†$úŒ ùÅDBac{QÔ/™æò £5‹î›¡Ÿ–öÂAâSbÁ2£jÌGÅbzÁÓw,EH4±"o'ª®V á½~"Hí8ÁðUõ1•õ¤p¤øøšHî:ç½bš,íhŸqÊy_ ï/"X’}KÎ¥¢¼$ã¤EÍ/åOŸUP’„¼!X6 „³Pdaù Èo-,0æ”'‹Ò±¢¹¶Z>’”×õRbïåg7‰n¨£ò~Q^VXë©Ço ~ žÂ”ÔÊóŸ3Úä µüöÀÏÒ/,04|Oä µéœ_Juê"¿-½Ë3b’È´P{_°­y¶X@¤[Ÿ˜+±ÇÐô±Ù°™u¿@„ñÄ7÷¾%'ÿ\ý•¸\ ü˜Ý,ÔhÖ?«‹"¡vš ”“7†oîzN”w’Ø!ë—Lsy†«â•Ñ€dIKéG‚öÉ@I8îù1±óg+Aùg(ßUT]û–‚¬#‘{‰/ˆõOß@гÒÈnØ¿±¡¾*š{/î±·æ¼ïÛ‚aú¯²$ˆwΔs€`bËñbÙRD¶øî„ß!˜&io9­…²eÂ;U%Æd];òÛjùHR^×ô;äutu¿BÌ$xÇn¨£ò~Q^V÷ BÜûŽÀ#krF›¡–ßbÉ-š³¨åÔH~)Õ©‹ªm)n-´P{R¬#ÐÅËVä1æ ‚n^AÊkÖ¯T!*Ë vµ‚øÇ ,Lé\:tþœ˜Ý/Ôa ¸ŸQ$Å8¬ùÉ?gÄŠ6ç.¦mb¦Ý¬9šËs ¢œCÑ Û?-$má91qà-’¶û Z{k…Z\G2¡Îö4á èôÇòø¼ übÑÜ{QæÍM!¼­:=XUÐ&™8±£ç´Ê! îû &NZ%°±Èo-ãËTÜE&¾+â4œßVóG›´®‘ÔLfq»¦)º§ŽÊûEyY=-¨Gi°QÌi½E£MŽPËoló‘sÌ"íjù¥T§.ª¶¥ü¹µ|lôÖçÿAu²*Å‚4ݒဘ 4JL£Ä§’0ðÎ,Näd1M¿91Ë7ûZ+ÔÆ‹ôjlÐEBå_â°>#äÏ"'o䪪E­\tæÓ\žƒqÚe{…’w¤Ëm(~)¢©9j€?+ž4Î.‚F?B:þx 2LsW<õÉÁ–4wáSH=â™ÑÚò©šg¶ xw´4¦UÂéüíjÔ>[lЪ±82åG_.&œ›´[¨aÕÆ’±³ M~ȯ¢²Ê_ä>+iòƒG&žaÈw¸ò”cNè_Loøå´@¬Jô©¸\aZeñYäùWÞZX\ýP`‰ad‹›’XòZ+ÔÊë::3`³¡â˜Ð=uTG Jâ7 cñ¾#Ê[oþh“#ÔòÛÐ&9dÀxˆ‹Q¾PãèÛÙlh.&Ò­ÏœRªSUÛ’…Z!l8rÚ‹Ôðc $®'Øâ$œ¦°¬ˆ6¡¸g<‡ p µ¸vgz _hã‹n¸4ö]¡Æ~üö‚ _%>y« ¦Ã4Ÿ©PƒÝDÑwÔ¨k<©Ab²­Ã¡\/ÓmPjŠ5_üŽë¡v”OÕ<³1‡/ùĉõÁY*NQµC¨‚|dÈ£Égz:roÁ•÷Áv 5 ·RJw‰3ÿ½ŠÊ*ÿ}£%~º-šŸô,J9Í nœÐL{VÊ "íMLL–|D¦9‹“òçMi·ç‹Ö µœºìˆLÆE; ½[GuÄíyNA{fÎ"sCyëÍmòO}æ·¶\9|€e+Ú¥r„åŒ,f+?ºù“B~)Õ·næ·% 5cÌ¢û¿ø†¿”/TL«ê MŽãëÈôÅþn¡fŒ±Pk> ÀF[B8p, Çóü_ô3Uë; Ö}¾1é:2ý¯¿[¨cú|7«?ëT|bp¢`é•DôÜ2í¨k<–Ò»ŽLêïjÆcŒ1]Š…š1ÆcŒ…š…š1ÆcŒ…š1ÆcŒ…š…š1ÆcŒ…š…š1Æc,Ô,ÔŒ1Æc,Ô,ÔŒ1Æc,ÔŒé&øzuü]Â4Ęîl«Æ 5 5ÓÏÉÿñcc€V¯ú“Ïíh«­Êgo½Q«ò0V|UðµúÜNŒ…Z¡v¦ØTüB\-Ò˜ Š/‹/ â_"bÌÛÅìâóbñ°¨úô·ÅZ⛂§ÿFÜ/bü‡ÄÒ‚¬ >yàG-ÚÝP¨—3DyœûD áwÐÊïŠ?dË ~‚XH|I|B|EÌ'®iùS2Ÿ r–hwY ¼×b µ‹DïþôS7ä¡U}°ó¿vZµeæç³~¿µN¾!Nüòc7ôâîüU\WuòÐ…ÚAâAjWŠ4&çCñwÁ‹"ÿĉ‚!bñ‘ÈúëbœxG| ÖÈÁÿgb¢àYÄ?P|]t³PòŸ#ÔöŸ‡š,5Åï©‘“)‚»( dôñzàxñ9q°hG)‘Ão¶Y¨õõÉØ%i¡V~ï‚ׄ[»{YkóÐÏ·>Ë…ZÊy‚u!÷ÒaÍDø ‚ðÛDý§Ÿ,>%bøt"} ¶:d\7 µå¥ú’(jÏ L÷¯œ¼!ã>#h¾E1‘}ØØ^­-¥sRûTÁ÷"Ç[+Ô°³.%¾ $Æ|T,!¦ˆÈ¢?ÖVÉA‚Ö¸‚`1ƒ½s¸ø¶à±t"ˆIHðv">‹… mƒžR4P¦á9%Pž‡ª%sËôœSEä—d~í4÷^å¥]Ô2ùAô…Ålâ{¢ªP;AüR°ÐbÀ,Éæ¼ ‹g6súK~nsžõÁ½´ºýEQYå×]þ›Ö/ÿQâÇ‚] žˆI¢¹VêñªãÕ€jï Šïl±€ˆ[ŸÈ#ÒySþ– ¼(WU…ÚF‚ Ù>Z` ¢Ú°±ý—n•v›PCìþT¬.Š„Úi‚D[NÞNÜõœ(ŠùŒˆÝ»µ¥D—CpÓºbÒRG¨½+”WÈ_¦ÇE´ðýHl%¡l w±.ˆO/`Ú €{!îEŒ²€ÉY¡Ž{À"ö©ò/¿ŠòÐ\ÉÄÜÞ,òË!¥¹’,¯æÞ«ªPÃyã[âhQÇ¢ö}ðe2ø¤ÀQáUÁ´Êâ‡{©&æÔ%’ŸÛªÏJGør¡V^wùOoUù_%è;„^w͵RWí¯´P{R¬#ØÄ\F èc'GƒcãÁ®6B~Ѫ"_¨!©È´Ún\W2[¥oˆnjˆ0&6†à(’bVx„äŸ2;\äÜE·'æ¢UåógÁЉD#œv’Šï:B b>!ŠbâP\$a±Юb]Ä^†U#¶ä§Ó–Vö ôù[ „Óòóãž_Ei6W21·UË!¥¹’,¯æÞ«ªPÃrLÎckoN¨EQó‹ .",SqV™ø®HÅJjçÎÉmÕgUjåu—ÿôV•3-<æ¿~;÷xU¼òÖçǶ!p{OÏï\*0/Ï,p %ýI¢¹§c}a³Œ&•vÖ7— òy± ëbæíŒP/Ò«±{ 5Bv¼Ñó"ÆaÈ&é““7rUÕ¢V.:«‚i”§ p‚ð¸¯#Ô°§æSÞ‘˜q{hÃq«½|Љ-™ÿ¼éL‚I¥ê@V5<¿ŠÒlUÉä—C­*IÒim 5&‰èËÛZµU¶žÅ–èªà²Rô”üÜV}VU¡V^wùOoUùcb˜K`°`6Ió_§{¼ª?^Y¨ey‰¥`VÅ>„à¨útÞ… ÁWDçFA:éÊ »¾Yíjlá)Ò«È#òåf*Ô°Gþ\ÄA8ÜK©U}ÔE19F@Ì£}ty”!1‘;J`XO·A)+Ö¦ñ;j|›­µ%ÙÖrû­é‰I«N}²`àM9%Ä÷öbL¤-ÃõEV=ÈÀGjs R£mÂâ'Þ»· cÿ-zÖ>köæè œž¢Ê)¢<Ô)™ªåR5…|ûAþ{å”vQËdã çw,ô¯ªB k=ç“9”Š­c5#!Žä狜m¾œÜæ?«µB­êÓë”?‹ªmuÆ.BIDATë úéŸ#¨ N›Öoç¯êWþecŒ1Ƙ.ÅBÍcŒ1ÆBÍBÍcŒ1ÆBÍcŒ1ÆBÍBÍcŒ1ÆBÍBÍcŒ1jjÆcŒ1jjÆcŒ1jÆcŒ1jjÆcŒ1mjíx êËBÍcŒ1¦Bí/-ee¡fLeøýS~eµÿ½¿6È.ý˜½1Æ 5cº”ü·î‹ì.øqâ„kÜtžiÅu¹5jjgŠMÅ/ÄÕ"¹ ø²àw쉉ˆ1o³‹Ï‹yÄâÝO] ÿ%¾%p'ì¤hXW”ÇÁCÊù• þÒbk‘¦¿™ üS;ÓŸåóè|w¢îx‹ÿŸŸ?+‰x×E⯢9¡Vµœ«R”Ã:Œÿ#Ú°ÛŽòì‹yè¯Ë¡ö•mÿ^¼ÁûFmP^Îý¯m÷C¡v¸@Ú•"y½øP°3T0Ň­™ĉ‚!bí­}: Ño‹ûėĹ¢3ÃLùBí ‘ó”CÄÏD §„¿-H“®˜Nü«‰Îw$rŽ}h_ñ” µ¼"& ®æ ¾U…Z~9wÃô@»KX Ì<ô׺h_ÙÌZ{Mäý¯”úùÖg¹TJ9O|Cr ÷á/Âoíxú‹«LÚ춃Dg†³å9|I´V¨Ý+¸ëiAø- ûK±¹ˆ÷.#NìB¬Ûhˆü{©;Þ«êv"nòó‹ÃE}¡Æ]Ø€ÉÉ§Ä ‚'æäÅ ­‚¶©ÔžQÜ$ž“>jÃrËèWÄñ"çK‰/‰1KˆéÅ7Å"ZdsJ)?ÿUË“Ñ#BÊ)ò?)Îù%“ó¬X¿,žsRÞRDWò†xbÁIø‚vËÈ>÷B‘n}æ/`ª–IþØh¡Öv¡ö¤XG°‰‰U†uqè䬫ØÕFÒ/ZiÕ:ÛC¤“NÏè}ìmjˆ°›Cy(jäpÚîñYtïµ!3‹óE”α÷Ö&ö-òÃàÛZ¡v„øªxB¥PµœÓnIKÛmyYfÄ ¢ùrAøšb¤HóÏÀp‰mûGþiP¶ÂÉOQ)ŽØÄ|NÄ«û ¦üRªšÿüòÌŸòK (ÍæJ&ÍmùËKrœÀ§çÉï ÄV~LFQj‡åqQ9Ôo‡­*Ûò”£Ô¤Ï†"¿držë7?eXйw=ã%ŒáƒwßX=·ÈG-_¨U-“ü±ÑB­£[ŸtE$Bêv}©À`Žh`‹ôÙ¾iÇÓ9ˆPdQÃÞI‹Za; Äó¢¾E ¨e6:Yå0ñ³®þj{ ì):/Ôbÿ“Hã|G0¡V5çj]$Ôn¬>©<\nñŠ1trº.ë€ßŠv?K[<õ‰ [Z'O}FlD"%[%Ô€í`R@ÂÆ«ñ\-n¡½û-.¼èÈ®ÁÔmÿ¡£D:Ü hðá(,XÍ3Ù\%:)ÔrrÃyklŸé)Ýtë3žƒÆÆŒ³öÈòwaÙÀV ÎÚœº¥g‘rÌ^A,uèƒn`jI=±ÊK©jþ«–'ç»Ù8f3ŽÑ ÆÏ/¢<´ªdê´7Þ⇷Æ[b²$ÆB“£pgwW“të³N;lUÙæ—!øô2œRòK¦ê³ª¦ŒM’?TDÙ„Ib>QþÜ"¡VÔÒðª9·Pk»Pck’35¤ÆÆ!Ñ{ƒMF —ñ¼a´]QýÈ#¾”Æf\»ŸÎy™nøŽZ*Ô`7ÑÜwÔ µJrZ›ez”’g5†gÆ?{t µ©)ÞŽaƒú-º½í$¶ðt°ØGpBŠ!¾N9çFù9Œ°’fz+ߌÄ}”r£_Â’&§8šÃ"ŠÕ3ÎË|Ù.}"r‡'²5St¶±¼”ªæ¿jyRïÈtZQtmNO}æ”@Qê—Lý…S抂±‘±çn|U«ÆÄ“wrlcDÌU«Úaý²-/C–¦œ^d9]Ęù%Sµ¾òSÆ9'ʸÔe%_¨•sQx~Î-Ô:jQ3ÆôX,† —†1ÆX¨cº,XCÓCcŒ±P3ÆôøQ¥Û1Æc,ÔŒ1Æc,Ô,ÔŒ1Æc,Ô,ÔŒ1Æc¡f¡fŒ1Æc¡f¡fŒ1Æc¡fŒ1Æc¡f¡fŒ1Æc¡fŒ1Æc¡f¡fLà·ðøùvçÊcŒ…š1]DÕŸ¸nüLòu¢{rÕÉ÷5f ·Òîìî§ýP¨)6¿W‹4æ‚âËâ‹‚ø—ˆóv1»ø¼˜G<,šK3'Ÿo‹µÄ7iþFÜ/:)#Öåq°ÁÄr~%ÒtêßE÷þ±¾Hë«ó\$þ*ºM¨¥y¨“«¥ÅÖ"½º™ 7¥»?‹ÿ—‹82ô'qÜù–fúV}u²•vgèßýt€ µƒÄ‚Ô®iÌëŇâïb¨øoAœ¿‰ĉ‚!bñ‘ÈO3?Ÿ¯‹qâñXC ;ÙU`¢ÈjgˆªÏªs5ò†¸I,"¹üe· :ýO¨"~&b8µómAúLQ1Îh±šxM´£dú÷àé­Ô—…š[r?ßú,j)ç‰oBî¤óž üAøm"?Íúù罚+ò’3ªÌ%Ú{ Úçz‚²˜Opo«ê+ç-ò[oÕ UB­óý´¹–™ÿFlZ¨=)Ö¬bYÇ£Öã0Êjò@]m„ ý¸¾ÌI³ŽPCüÑøÒ¦Ön¡†»Y|R°N*jŸÓp—HŸÕÜ]åBu<9oUÉL¤™úZUjLլƞ­Íù‚á€EEÎÔ\®AƒŸ%!3‹óE\1T](‰_.Ô☀|Œ½)ÿ}qU&ä9cî/èw´±Wš÷<‹Ewm,ê×.Ÿ¸XL|WÄI®ŽPC<ñ.¸y`íHå&ÛÖ<+§m“qŒü÷j®Ê[HNn©#B®„ãšB8Ïe̯ú^9#Cù[ä·Þª#@«„Zçûis-3ÿ:Ù*¼õù±Õ?“Jê¨Î@‰1–i†M™´ÂòÓ¬šO¶;ñK‹Ij„ì$˜¼ŸÝoQÛ^`dnUÉЩ¦éÕªBm5¬°9V«ªy8L¤“åCRs¹ú,Od¥ÈºÛLôWcUÊ!ƒ=EŽP+*IzSþûÒrI7ÅèïL$¬•‰ù'ÁÞ+{3“Ä¢"Š’úuÇñ‹U ÀÑ¢Už=”!oÁi&Á¤Bœ1‚gá¿[u:̯V•@U¡Sà®´5#â”ÜÚÜ–¿E~ë­:´JÖt¾ŸÖo™ùoÔîVa¡Ö¤ï[ÖÁÈ”:i–ç“·f`2è-wÎ(°,þ\àmÐÍB Y€ A«Jf‚H×RØV± æ 5V–¬÷­Í[Ÿl“M¢!©¹\«^Ò,؆ˆq6s ¶Aã¶T¡–ÿ¾å+u¬e”!?[|Ëg;†7b8f³£~Ýáé‚'\tè:ñ4#ÖA„5á‹t“4?WùïÕªèŒPkmnËß"¿õVÊs{ˆVØæ„Z;úis-³¹7jw«ÐBíÖ¦Èp0Ä 'Æ|@Ѐ°XeþV4—fN>1زªÆQñù„ÞjчÕv· 5¤$µÔ“ë‹¢U%ƒ¿u´³À“_%¤$UÍU„¡ŠÔXºÄ«ñì3®µÑnWG¨å¿/½¤<½øAËÁ÷…§ðÁR>TĘ…YôM©_w´ç œ+â²Ñ€÷-oiù[Ÿñ ;û¸|GÄ^Æçî§£)”×Zþ{U-Þj­ª¯œ·Èo½UG€"¾$F ¶ÅÍ µvôÓª-³Îµ¯Uô[¡ÆÖ$ã¤ÆV !q¯šíH©¤eEº±Hƒ #ñ4¾†&ÆÌO3'Ÿlš”Q¬w…ì&šûŽDÑÙª»˜ä躜¢JOª¶ ÄÇt&cVNñS{ ê:¶ç´óï#83È0c2å7—¼*qhÅ:í:åCRÕ\åO¤µ@?Âþ´¡ˆW뵪ïËÊ›ÏT¶5ÓÓd'ˆ´Í3Á0åÄ ÜVÕƒøŠ‚†ø¸WãùWÞÒr °qRŒK„°ñ9>ÅrˆkD^soÔn¡v† „{J,'¾#Êï*çI1­8J¼!(ÉgÅùâVï=P ŽÇˆ×NjωƒE«J¦Nžû:Ôo*Ð[ßcL?ßú¬*kÎß„Ü#Hç=Aø ‚ðÛD~Ì¢§Ÿ,>%ZõFíj‘c"©ŽPC:s×K"ç.,4Ÿ‡‰¢˜‡ll/Šú%Ó\žË…KNÈ‘ââkât‘Þ›óQ±„˜^`ßÝA°xˆi²` wÄÞŠq;Qô¦ƒDQüüŽäUcÛø¥=-ZõFí¶¨!‰Ø0Z\ µ|‹ZLL«6°¸:^Tµ¨ÕÏU<7'Ôb埾KNL $n-6nÁçç³UÄ¢·«Úb‹žEb£»Ýªà­‘{ÿ$Ø~E Ç9*±¨HE­1ÆX¨µ@Öäx‰['Ÿ¬þ«Æä]âîÛñFíjÀÆq‘“~;$þpØ«‰>j‡Š¢{É!1ñìLé¥yŽås ±ž#Ô¢tÀ”³Ü¢†•(µ¨uR¨½]k…ÚDA½Dw…"ðŸÛB,"gûxQg»Öc,Ô>Æ ‚µ;ÃôRbac> Ø8CT±nþ­¨ó K;îÉÏ'ô¡£þ=Í 5üüöxqf["ç÷…D¼7žúäÔ-îÞ¤À9P%Nñ­*™:yþ’)îl› 5>ðAÊ; 6ãhoù1_4N%Ó °8"GRµTôL'ò?zR?ÿíZ+ÔØŒþ¡À".™è‰ØÏY_°e—>xx+zj1Æ´[¨ÒR:*ÔØpä©}A‚H"&[œ„3e.+Ò-H&3¦¾ŒÅWÍø¸FÕ˜l‹”{}5÷F½%Ô˜\±1Ì$xßi²aRÄ? „q8I·(’³lƒÎ!Žñ;jDkK¦Nž÷Xø°­F‡÷T¨m•MçÔÃ/?æ#iˆo%ÛyE§>Sѳ· 5æôÍ¢øùyn­P#)¶¢àéô_"ðibž Há1A8Ò‡d÷ÔbŒiŸP›¦mø— Œ©%”s6ûâ·Êrò<}6œu›1ÆôW¡†í[J´ÒY¨c¡ÖçólŒ1jjÆü§‰œ_ÊÙßÎc,Ô,ÔŒ1Æc,Ô,ÔŒ1Æc,ÔŒ1Æc,Ô,ÔŒ1Æc,ÔŒ1Æc,Ô,ÔŒ1Æc,Ô,ÔŒ1Æc,ÔŒ1Æc,Ô,ÔŒ1Æ´„ˆ¿ —†±P³P3Ƙ~?!è[9ç§ÆâLaŒ…ZjgŠMÅ/ÄÕ¢ü®Ñ‚§ß'âÕ×Å`ñ_â[‚ªó1Qþ ößuÞ¨µ«uEyÞ.†”ó+Aü¥ÅÖ"M3ñyñ®ˆWÿ,(óDçË'åÓâעݿeY»H œŸrêOï[µö;óûªí(a 5c¡Öç…ÚAâAjWŠ¢ø×ˆÙD‘PCx-&ÞÄù’8WäÇ|_ÜWÀšb-Ñܵ[ˆLùBí ‘ó”CÄÏD ÿH|[&@*µWïHé›þ]<%–ßíËÃk¢ÎÔ;Ð~½?½oÕÚïÌ»·ã)jÆB­_m}–Ëš'ÄÅã"j/ŠOˆt¸ÙB ù1‹r{§øñЍúFíp—ß/‰Ö µ{w=-¿Eü·ø¥Ø\Ä{—'‰nj‘c¶À>EÌ-¾)fcEŒyXDÌ"°ÔòÜKE:áÍ3\ s±8~E/ˆIËäÞ/ŠíDÕ|’K ÚIy[}H,%¾ $gÊá­zßGÅbzÁ[ï ¢½–N?¤vœ`hûª E‹œÈ¬‚yC`åíâæëâh‘Ê—»Å‚åè÷DZž9m,¿=”—pöP$ÔF ÆsÆäÚ©Ú#òcæ—IÕ4ÐBíMÁ¦Ûå"ÆBí A8Ûš1ºÖ—E~Ì4ŸŠÙE´Ïu›Pc(ÿ©X]´V¨11=Äáu±‘`˜CÎÿÁ€Þ[ÛX雾'n3‹mW_ ЧŠ(Ö?%Øe)“#D|îgE‘P‹Â÷A8%ö‚(CùùŒ)°AOœ·DZbl^#VH,‘,œª µúïKOü‘ØJò¬@ì*b s‰Å^‚Ö¸žàÞ Ä|¢¼-m)¢›ÁY¹3¿ üA²3k?¶d\ѻ緱æÚCŽE-¿= µ«w12°`@(Wíù1óˤjû4f€ 5Ö X†iü(ÔM„soŒ÷V´ü˜i>÷xh1Ät§PC„!>>)x¯r¡Æ[O[À]">‹)*nþ"tη Rf(¼P0Yöî&ZÔolãÄçÄõbrE&×I‚ÒN=óÊ…VI¦Š!ûJQK§Õü|ÆÎå%Ææ5ñ±m7·‰Ãë¿/Îõ„?'Ò~Š˜ˆ)PGåK;J KUù›"÷g„ øö¼KMò³±HkŸ‰ø¸[½{~k®=äµüö³õIùЛëù1óˤjû4f€ 5DXŽ“;Û~‘ì,?f g“…õ÷ý¢Îfng„!; V«Ï‹úµØPØèd%Jù°îŒþjX/8d°§è]¡ß”ϰ²¸ˆBÖÅf誜'â§ésË…ÐZˆã™I¹pÉÏgÕ‰yŒ ~Χr„Zý÷¥ Ç–ã³±ÎD[þô´Ž9B )üI°‰Œ;öld ïˆIkŸº£•—g~ë†öPÔÎÙµ`Á¶ŽXAÔé91«–IþÓе÷ >™f°xYÐÒá†UÞù1c8¾kˆ:›¹j”ØÏEë 5,ÜËá ¶BbœMÄœ‚mÐÛE÷5Àç†Õv´à⫄׫ÿ¢”'ˆtð¤ÀZY.Ô"LöØ`»åÂ%?ŸU'æ‹Eº Tž2|ÑæQþĪï[nQæ•ZÔZ+ÔàßVüÆgC–ö8`ë-­}œ>#ØÀ%œÍÁ˜óü6Ö í!}S–¸©5®~ȉYµLš{º±P ‡ Šâ§§>ÙŒ‹g9±ô`!‹^eù1Ù¶«z*ª{„°‰É?2ÚbÅB­_ 5ü™8«EjlœRîýP$Ô8u•óµü˜#qÒM–V½Q»…ì&šûŽ0œÅ49#Æ$‘ž0e‹Â†¢w;R¹PCDba›ƒü3|¯("Ll8³ã“G HÕé ߈?ì@é†e»#-6CÈ "æsoAëŠ}-?ŸUXÙâ]p™Ç_3ÆÜG`bûsvñ‰­z_ÒA’›E§>Û!Ôp–Hûb ù·ûË7quÇfíg1ç9m¬j{(*á:í!}SÆO<ù¸‹œœ#p?à f~ ©Ú–rʤjš¼#rÍbÅBÍ¿L`L€ Ÿƒ)ÐÆ¸c¡f¡fLáH?ŽÆl²`_d“onùÔ˜q3ÆBÍB͘^¾ùÇv çø8`ýŒq3ÆBÍBÍcŒ1ÆBÍBÍcŒ1jjÆcŒ1jjÆcŒ1Í µv<õe¡fŒ1ÆÓ¡ö—²²P3ÆcŒ±P3ÆcŒ±P³P3ÆcŒ±P³P3ÆcL§á79øQ5 5 5cLá‡Ìã‹Ó·ÚáXñUÁ/I¸gµ›kET&/·|¡6M6½,ÔΛŠ_ˆ«Eù]£O¿OÄ«¯‹Á‚ŸXù–à[&1æ;b3Awú²ØV4³¼¸;ÓX‹žþiñkAƒÎÏ9¤ÃÍ$1ø¢ø„ |æ—‹¢ÚçÞÏ9K´ªLh'ùcWÑ COsõÒ×á½ÒVjR.íž®uÚá7ÄI‚_eí†zimÏê¶–Ö¾üä—[U‹Z¾Dë5¡v¸@Ú•¢(þ5b6Q$Ôh‹‰·q¾$ÎÄÜ@,)^˜L1Íü˜äêñ|B'»â‚¿‹§Ärâ;¢ü®rž¬3ŽoJæYq¾¸UÄ{ŸcÄëãÅçÄÁ¢“eÕSE7çÐB­ÛÊŠ1Ê¥×»í{¯ÝS/­íYÝÖÒú¢P+’k]ºõY.Ôž?‹T¨½(°è¤º…$È!1Uå…ž3¾E'eYÕ©ýXHª#øqhîzIäÜźÿ3"µqFØØ¨ÙΗÕRbÃ?3Š›DLíHññ5qºˆ)Ls‹oŠÛ%õ…w±beOÏ* T,!¦äjñ(O9Íìâ8ARËîpËóëâAÁS°¹Òg?%V,<š+Éœ4‹`aF«øB€œòÏÏí(ÁˆÇ"“ø' âð< {öv¢hºÊ/ƺEÄ,‚} R¸T47±Åp<Šh ßì|E°`«ÓkrZ)Ü-¾'Ò·ÈÉÃO÷ÒBöõë%¿òß(%¿^ŠÞ(¿ýä¿{NHóSµ•·çœ|ÖñQ+—h]-ÔÞlîÄM´T¨±v!ÛLL‡*aKîñSq„(_$ ÏzNÅ|FÄîÑy¡vš` ª´´™ALašÒ*ů&NÜ{§ ó?,ê 5Ü Hù-‘†“Ÿ‰­Ä‡›(ÃbÜ.J9ÍÖb]AýI1¿ üÁDByòru‰`Š"üvÑ\I–§YTžï r¸’`q¶ù´”žù¹½JðÊÙëE¹$*å%À.Ó*=:¦À©UBí^AÈ#‚8¸š¼ i®®sZi|ߣEQn›ËCœÑêÔKþÓóߨ¨îòë%}£ªí'¿Wæôˆ4?ùï’ÓžsòÙϤ͚uöò"ÝK…Ûš„soŒÏdmŒU>1iLTü ‚‰„Ž3nÎâ5²£`EÕZ«œ’,ù˜–W)Ÿi ¸K¤r Ìv3ö¤Û™HüÃÏ*?›ƒ\ˆ%ßy¡FÍRƒq‘°¦)ÊSöJøÅbœ`c«ääÀwE^›«î:[”‡ã[$i-”ò”S(쎄¬'öL-,ÃxÊÆ">%Ž!´Ø8J4W’åi½ =š˜X÷sÚU,¥ª¹M«¤V4Íç µòÀëô“yÚ>¡†x¥% Øââ§¹ÒËo¥Ìäá}Q”Ûæò/ÔZÕÚóߨ¨Lòë%}£ªí§¹^YÔ#Òüä¿KN{ÎÉç€jùàl¢q¡È¢†´Â¢_56¦hu¸MäÇ,z/Œ®qºê¼E I„Á|qQ$ÔêûBÑ…V˜à1su¼¨jQkŸ‡VNúx=®/^Ó‰è¾]4Ròñ)´Ull«€·¾E­|šŒrŠðtûWh†¹ª¾Øäˆÿ'mò”G-*â´ZžF‰æJ²<Í¢wÁ“2gQô¬ª¹eñÃqœuý¨¾P+/&{Zxú^­j„ð\Ú lÕHæJ/¿•’ò‹ò·h.ùB­U­=ÿÊK&§^Ò7ªÚ~ò{eN(*áœw©Óž´PCL¼Wñù%y†N&Qª!-PÔ4»ËH+RˆÆO¤á÷‹ü˜åC< ´w}Ôð°)rÒo‡$Â[ê£v¨(º—3ß@Ý¡†˜`èÁF¸²ÈéÌQ¬0(L” ¢¶~ëL“å5¬_©E-ß}_=sê%}£ªí'çÝó{DÑÖgλÔj<¥Î÷ÒªÒ2¡öcŒ1ÆÓR,ÔŒ1Æc,ÔŒ1ÆcL¯µöùýÓcŒéJâ L·Ñ¾ïÃB­µÙ*®1ÆÓ»vŽø]Óm´O™X¨Y¨cŒ±P3jjÆcŒ…š…š…Ú¿‘ÿ»ñjÆc,ÔL;„Z¾ð@B-¦i¡fŒ1ÆBÍô®PË‘_B¨¥ßÛµP3Æc¡fºA¨å+“~(ÔŠ~ÁBÍcŒ…šé¡V¤OlQ³P3Æc¡flQë=¡–Š…š1Æ 5cµ.j±h,ÔŒ1ÆX¨Ÿúì:¡–_jÆc,ÔŒ¿£f¡fŒ1ÆX¨Y¨õ_¡vJK‰Ï=ÅcŒé2,Ôº_¨µ£Æû¤P›ÆcŒüÓt%í«ñ>)Ô3ÆcŒ1-¥ÅBÍëªþ‡kÖ5k\³Æ5kz‹¶5ï‹÷'\³®Yãš5®YÓ[´Q¨ùÿþñ¿‡úÆ5k\³¦ 5ã¡Á¸fkÖ¸fM— 57& Æ5k\³Æ5kºT¨ Æ5k\³Æ5kºT¨¹1yh0®Yãš5®YÓ¥BÍxh0®Yãš5®YÓ¥BÍÉCƒqÍ׬qÍš.jÝ ù\F”Ç™(bH9?ÄŸ_¬!ÒôWŸ7‰xõBñE1ExhHk'åSb&qœÈ¹«¨áñ ñyñ ñ%ñsq”Hó¹ŸàÞÏ9@¸f{«‡¶ö®OŠoˆeŹÂ5›²–˜Y”ÇœGì,ÚQË9#½ØB­¼'–—q&ˆ:}üv±¿øµø‚`Lþ/ñKq¬è+£qË„Ú vÙe ,0xðqÇ¥û–E-¾×Á"Èï´Û‹E ¿Mü· ÍQ"Æa`$<4ä ”êEbAñuQgؽ@0ï$®·ŠKÄ¡‚ŽïÝF Äw×v Û ×lç{h«î¢íÑ6ÆŠ9²~¼pÍFÎäðTQÔû>'®­­åvŒ« µª}|S¼f†½BÜ"h3ää$ÑWFãrPY©ëaåqÀ'œpÛméß"¡Öýµ…ÄWÅU¢µÓÀ™‚».„Ÿ,¾,~"VñÞ߈=„‡†ªCÃ0A·¬3ì/¸+m!E0p|Zì Ê¥<Ä•Â5ÛÉÚ¾»°‘G \³)³‰Dzu‘Z\ÚQ_­1<Wjù}œ…1Ëf„Ws„Š ¹E[B-FŠQû¢Eí 1ƒX\´vÀHû5±» |CÁð´±`»„ø7 Ö‘42 9CÃÍ{ÆÛ+u†]61¤ÓNþ &‰¢»ö<ëRQ“¡§·&ƒîjíî¡í¾k}1pͦì%GÑf†­ë›‚ÅR;ê«#†GãªB-¿ÓZaäÌÉ[_{M¨u¿Eê§£¢ÓcõMì…²€t›ƒá‚¶Ì0û“òé‚’ÄóÉCCy ±µ`¸OïªZƒÈ5Ìãs ï .Cƒ>ñw<‹MÒ¢·À\OL$ k¶ó=´Î]å:ë~RpͦÐkð+¢×~¤øž`ùÚªújnİPkŸPËïã¿9ãj¤¯ŒÆ¶¨ý‡i ®}2.­Z¯ltâ\Œµ ËYôWÛ\pÈ€x ùCp1·hß°{ƒØ[°îÇ€ÏÕ}…-j}¥‡¶ï®µÅ·„k¶¼”X¾"˰¬ žÚW_1Âh̸—^¥TË…ZN5Ûåä­¯ŒÆ¶¨eM¬í~(˜t[5 Ð8¸wI±ˆˆqVXÑØ-r°õÐP^çˆ"·ÐvtB¼[°±’ïA‰Ùùmî¾%ÔÚ×CÛq˰o‹5…k¶ú,¹=H°”åD[»ë«ó#Fÿ«Y<Ì8nU>F_íª}œ{±ºm$ròÖWFc[Ô²¦@ÑZ5 öñ*Û \¥Ñ§k; ù(FrÄÊÍÕ íë&gˆ8%Dí0pÌ+8(ïçŒðPäT )pòˆé!ß1v µöõÐvø<Í)8Làc"9Ѓø Q´OwFX·jĘ5‹oË’ÛˆÀ›csq#»¹>އ7ßXàÚŒ«ç ¾™¿¥Ðý£±-j¦øhî+M€Ù6¦‰yŸÆ—žmaýM3*:å¡!ØEHñ‰„ï J¸j rh/C¤6uDœ¯ˆåDZã€áïE1 Ä/÷ð5 ×lïöÐVÝEïFœÑßóO [¨Ñ—É3 ×ò¶Ñ\}57bX¨•ÃgÚ<;Bôd7™JÝÿ›ëãH=ŠfØ_£™ƒ­ó³E_mQ3nÐ7®Y׬kÖ5kúÔ¢f<4׬kÖ¸fÍ€jnLŒkÖ¸fkÖt©P3ŒkÖ¸fkÖt©Póÿýã ôkÖ¸fM?jÆCƒqÍ׬qÍ 5ã¡Á¸fkÖ5k,Ôþ“Pû§éw¸f]³Æ5k\³¦·hP‹7´ïï)ÆcŒ1]F»UP¹™ìÿ$Ú_DŽ\ãjkÿ’²5µ1Æcºv(ŸTI´?ÿ¹‘‡ B­ÉÐ_Œ1ÆcºŒÞÒE=µ(×¢QÎBÍcŒ1jíÖB©DëA¨E¹–жöý½ÌcŒ1¦Ë茧~Ô]Q¢ 5èþï²1ÆcŒiW]Õ8ó›J4Âÿ‹³ÃæâÔîNIEND®B`‚pygtk2tutorial/figures/statusbar.png0100644000117200001670000002003410050344475017047 0ustar finlayfcf‰PNG  IHDRÔ€ü£Ð®ãIDATxÚíù[TWšÇÁžî$ÆÄEd+¡( Øª€¢ €BÙDÙ„q‰¦5鸤51V#H\XE¡6¨„*0é™þ 晟¦™î¨qº£æ‡ùefžÎDG'ÉÓódq¹ó=÷T].µQ £ç}¾Ïñ½§î½…u?¼ïy﹜ â-88Xh¶¿ Z$å[¯^Z;KEóûT~Á‰âÛH^.Ç—"Dûxõ£¼õ{j /_ýn  ZíÚ?2°óû_·“㊼Œ«³(hV×Ó‰BpTpÐ"ÈçŽsaÆÃ¸9ÙÃÜ•ËÿÞÕùa{Û?·µ^lm#‚#øbÑÎŽÎKbµuñ=|+øm¼¨ÓÑ}©ýìÅö³h/uô|¿ÃC|ç¿tžùÙ³uõ^ì컈öì¹Ïž»õŠZOõèœ:;øuz§«gð#Þ¹ØË¿Úgø×^ÃGPñÒ4™.B}Æ‹nýýæÝ¤³üQoþ£Þú'hÐzÒóÒY>!ÎÈUýèe*ƒíÁ÷¡OŒö«iü*u¨?lÿ¨ªþW÷pxÍâ‚>$»?ä@Ü|=¡W»zõê|W]våÊ•«Ù•+×hoÿ§ç^xëçÏþ™‡~¾˜ê¤›žéôâ¥mDËN/á[§¿¼ã¥ö%+[¡W´Qg1ÚÐvèÅÐÓÐË¡í/‡¶ò:õòšÖ¥ám!‘íЪÈΕíN?ºsU4Úö‰³ •t¬ˆn[Ó ­Œm‡VÅPµ†Æ¶­–u¬ŽoK mxBgd<qäg"å.MùÑ©]Qi]ŠN´âLTZG´¢s­²kmú‰²›JšÑ+Í< ɲze꾸¬~™ú\|ô$jdšsñ¹b%ä $åB‰ÚsDpx?¥`PQ¤ƒR‹Ý4 ,7(ÊôPj9i3ËÛVÆ”|ÏqŸ\ý ¹LŸ^†œ—Ì·õÚÏþi—{–ÇzúŸòF{Ž?î_KKK ‘’2ÊçkmûÈ[ô [ðseº†ÿn±õKF~ñ’UÐÏ—XÐ>¿|„ê…e#Ï/µ½°ÌJµ8ddqˆuJ+ÍÐóhC­ÐKá¶¥kFyÁÁ¦uiäȲ(ÛÒHër^p–F™á„D[—K 3ÚeÑÞ1¯Xk ‘ÚB¤ÖåqV´«d#¡2ëªx^r§B,km«­«ÍPx²-<ÅJZ‘Ö$[ÂÓFÖ(¬¼àŒ„+¬Q£D5&É—d9 µYã1j;Z(6gÂSÒ\G\ž]šoÉ·Kó&ˆòÉf¼v"±h’×D|ñ$D}(¥ìBr餼t2Ù)$/s$WL&U%W8Ò+u«¤¾ãáÃ5nni‚Žóæé㊠>e@¼OÓñc~Žmnn¦`ùÙÇÓ÷ ,€`JD#ß{Mº¶®KfgÏ-±B"Î,¯å‚¬T¿Xa}~åˆ 'g|»œ­Fk¦„ñâÈ‘¬‚–I¦k-.$Ú¼2Öº"´ñœÅ[ÁYh¡Ë]«äæ°ÛêTÚ°«S©f`Úx¥Ú$écDª1–Ê9iS9(g1±ì´[±yãhãˆìTñZ»‹³)¨(dî*sð6w¥TM(ª?PVOª«añUˆ|WxøÌŒôÒ£p¸û¤QáP`"ñßT—ßñè§Î({ƒ‡ï"’&¥mñ²¡—–÷¼´¢sÉŠîÅ!=KVô,^ÑÿÂr£{0 yVÏV/ |)¬oYDÿòˆ¾åáýË"–…ë–GVD „Dõ¬Šê‚à„Dõ­ˆî Y;¸\2Œ"1…H ¼LËcÌ4’…Ä™C⌡ñ†5²0Y_XB_xâ@˜Ü&×…ËÏ?q8,±mxZ$K1G¤ê Õ)&°–fsB†¨–f‰Ê°‰ãY´Ú!QŸ—f ËTñY#^ãPs†1>’Ѩ§uÄhÇJ.€0y‘=©h$¥ÈLT<¥–ÚRJGSJÇaÌÅ™hƒR*'¨Δ5‚3HQ3™^ó!°#Nݤ²v"§N!ß(†Ïs@%øâ<è$©¥ c¾@Æ]Â!âw ü9E>ˆ|Gšt(–„´Óxæ¾ù–ûÛ÷Ü×ßq_}Ç}ý-·tõ±Wõ-¦ys5h£ñÌæ fáçB%DZçWßá¨0ÉÑU’Sw¾åîâðﹿýÀ}óqðj¸ô7w¾ãB¥º•Ò¡Õq½aq·¿å™ÌDòfÜpX¢)"±/2©õ.öÿ»ûwç'Im‡bM·à@˜Õ"ÓF ij¨t}Lú‰Û÷¸µÆ(ijL»[$ãýñ)°rÍI¹]Ø_¦1Óx&¤Ë)'ß./tF²„B‡8ªÉK?g™egï<àÝzÈ}ñ€ST ¥VŒM‹j•vÏj&)gNÚ6‘žŒú @ RÔ;[E½C¹y"½a2»ÁžH"ßå+ö……Àuhêœ|âcý}£)Ä››çùè˜ÂwøØ ŠM/®´08 /4²veÔk!‘{Ã$o,„´¥áC$¤E ð²¡HDµ>Õv‹y+\zˆê¿åVÇœ„¤‡#âöþß=.F¾%:a_TÂ[1ÉûTXü™°øþˆ¤ÎÛßsûGÈ{ÀŸ!ÂIRº@^\Ú™âÍÅ¡Å{·~à$Š–ÄŒƒ_¯ô³‘ C”b 6cPš©‹É4ĨÌø§dþê>¯î“fYÕbÑæØ!™ÆŸc–åŒH5#2ÍQ¾51_§Ð¾÷>—”ß'ˆâ×Y‹íâYR±Ù)â[SK-©efZĶ2; lèQW¶Þ}ÈåTžPWž‚²*Û2*{•:eÕPFͨ²ÚeVfVÛ°™Qc˪³dՙѪêluvHU;œ]oÊn0«¬TªQ£9¯¡'2©œ|0&ù‚Ï?žðQ~ÜNŽñPÏ'|³Ž|Í}Quò¥€uyDÏ7$z½ubUt뚘fH—È¡w¿åä–G uˆ{BxCɹrmOHL÷*iOh\oh\?b[˜Œ¤ÎȄ֯àbSÞŒL:x“|›ÑI'#åí@ fDê@xª‘ŒÌø`žªNë@À“¥ŒËxG’Þ©mÒÌîoîs»Ï!\%d÷ȳOÞ½ÇAˆ‹²¬î¤Üöop^MÌí¹}ŸKÔtJ5VYÞzÒò[Y’–ôC©=Êâ>uñû_ßçTÅ'îÜç eq·¼ØŠx–QÖ{û!}ù€S–õC™åØÌ©hýò!—Va¥ñ ðÝyÈeWªª‡37 eV[€üÿ~ÈiêzA”[ß÷%ÇåÔ @pnñÊmèaêómŽ[¿ù8Ú¢-]vX·M¿nÛ`ñ¶³w9.6iÝ|&º¸Bïü .Ý_¨|ý¥ÝÙF>À×=ðñJIû¯ˆ:ƒ³74ú$à‹ˆ}måÚ>à…¼!}keLçʘ3Nf’„=è\ßOJÎShÂÂX¸¼oµÜDŠ€xKDâ9„º˜äßD¥öCqi‡¿¾‡¨vä‚YÚ‰¨´®H…Ñ98ã«ÎpÅPlÆ€LÕ ªHZT÷ŪMcñêÞ´œƒ€œÉs»"ï°2ïÝ´Ü#@'5¯)«`?àKѶËó»plšödBþ°¼`¯f7+Kºn=àT%dzַÜâQÓ”žøŠO—ê²Sš²&8f)edOMåq͆÷r64ÁWW¶aœiª{Æ.! –WÝA:ku|H³ð!m4«~HSß Œò6÷ç5ôÂÑ6tå6 ü•ã 6Ÿ,nh*ßÒ þ4[‡ó¶›AØ7·aûñ;<”ëwK_é®x¥õkŽû–ãî-|ä£u†gÚ€£7«Å·]yÌ7­Ú|—B$í´Ò[ßÜã+¿áGi /\vj•Löî@dÂÉð„ö;ßs1I‡c“€-І¼žÔs c¾{’cDZïêd ªN6€«8•Ú+QôÇ¥F¼!û *Z¤½å_ ðC´LrSƒY0—¨ˆUòܹ¦´!Q’»hùÃcÀKQp4½à0ðB›QðÖ]Dî™@RfÉ)Z ÀÏ.kÉ,ë¾Å;ªòÓ©eÆÔr=˜:™•ƒHˆmŠ sZ…-£²?§ª½ úDAM3˜ƒSXÝL#\V-I—–ap¦ª·ä×u€žÛ®xn@ÆjêFcncè´[{³·Zr¶h· ­ßÖQ¹¥iÓÖß⨂CÚ$òU½ÒRùÊ ®Ý¡+ÚeÂI*ÙVõËÓ_q\LZ¹ÕòéŸ[ZZ>Ïý¤]a(醩gY3Jè9T»¾Ý¿†Æv,[k‘ÚV˺_,¥%L8µ&¾gµ|ÅæW|s 942ù$"RdtjꀨÔÔ‰é;%Ê.É08|Råo1Dƒäê&À—’},I}`!žIÕ†Ø,+gäžÑFiP,ê€\s²ö µÛ8—gQ¦Û|è"êõ‡³KŽ’èÅÏh㥈Į°r«À!˜Å¦5E¥ ˆ'ÛbRO ¥&¤ iŸE)ûP ÜÂ0NÝ-UÆgŸA`CÕ _ÂÏ  º©Iy§HÉ©JÉm7¤äÌ;ŸoJÔžûÅö\\¾•Î  ÀÄ€ìI z ™‡d•žT—Ÿ7ŠÒ!ªÊÚÒËuzµMe yµbHQIðÊ®:‰!âøÀà,»zà¿r¨²k dV×¶®îɘ¹üÚ³ëjÛpÕI±Ùh&A¨¡#§AÁ/Þr:yÛmê펬Wˆàäí´•¼J†tëv: w¤Jwõ"°AppæŠ_žAF.zc¸øucùëgq¶’½NÍÞ3œÒ}#v«ÝÛIásù®‰#Ÿ¿ùªyJ»Â»¼ÒGæ1ò=àœ?Ü À×kú8:µËUoên“j 5J¡£³T‘iæØô¡¸Œnð'Ïi‘f™x¼F08“e÷Þâg€2%ï}Ä-dÌ ŸI5Và•¤íF$“å›1VÃ&Â[‚Ö./#72о@,,•“ ¨ t¦”Ùez’UùªŽ¢l=é=_ð÷Ò0J˪è¦9÷6á¬×;·ú,Pû+RpÍ ÁŽãpE5u$öäÔ÷«êÍ(¾äGf–A¹ ä%ZÃú³·Žª·Žæm='”¥¨:±OñŽÞÿÂ;G³w:²_µít`aì þXª/ø1_ñ.=Ú’×Ö½> •ï1`³ì KÙžá¿òû@÷ëþDî3¡§jß¹êƒØ,=8ýpüõ¹Íož|òìõtÌ|eánµ\»úo€ÏóVË£D¾ËBäë7,QvÓªñL¢èCÉ)ɦ³O®YÎó2ÕpBV"™<·‹ Ër.Û¶šÑx)5AîÉm+ðŠÏÓÇåжqùç´: üA«Ø%ŸÎ>§– ¥”š’ËÆ\dV Ñèý3Ue7’ijÅhZ¥1}£yS]­‡Ìr«Ï@pÔuF(«ÖÀ;zA€,§Á nÊlU5Zózò{3,ê­ã¨7s·µÛB홳},g§ tÝN]ñΨ`ÇàºWMÚWõåîËÝ=™»ÛÁk2o÷8RgÉëúò×z+vŸ©|­»jo?Pde{L¥ûmÅûÇ¡ò}Îúý#UûVÕÓ†f¨ò×Ã.g¨â-KÙÛöÒCö²·m›Þ64ìÁ¸P®.£ð5·xI»žÏŽÌ×Mf·MzD9×|ô¡ƒ€Ç|×ø‚£_gù£LÕOgÈTºÊ&UòØ9g¤šI™Æœ¢!w@sÏ!°ÅåÙ1JãgÆ@[¼Ö,Óš’‹ÏóœÙ宩t>ª:gÐáÌášå——&WŽ%•ÛÅSœ©cÊ*«ªÚ¢"7ÏlÕã™ÕÕc(TucªºÑŒzȆ!¿©jaTYçU è±e6Ú²GÔ[Ï«¶ŽçlGê„à@¹;ì¹;ÇÀx;B¢ZÞ.GÞîóÚݶü]ּݣù¯¡EOþë(ïWêî™(Þ3^¼çÛú}V·~ÿyª’7ÇÖœ(ykbýÁ1¢·'×´—)?h-{¼'z´Ù+ßq@Puäê£ÔÛö®^ Ÿ[ÁáõIòˆˆø¦=árí õéþ'|~žŽ¡›ÂA'|ÁÁÁsó9áÓ[ÿ$SŸy1Ù“^æ:5ö¸üI$MÔ)ùpœn¬›=¯!šP/¶Ó™Í¤õdf=¥l‚Î Ð7ѹΤJ;”¼ÁAg6é4”«uð³OŽ ^é‚êí(9eòB)el™È܆1Ù¤KªœîÒ¼:AÚ]|<›E5‡æ5™ ‚½Ð:^…û/¾9Y´_ƒjý „¶ƒœ³åUzh¢ä‰’CˆÞ™¨xw²ü7Jß½Pqäw•GÿjãÑßìŽ|¸á½ßUû}õ±É¿?bÅxT®©ࣗUxº—ß×S'| ¤¥¥ÅŸ§TŽ¿ßì¬øJ™¾‹×ý…óУæ¡ÚýôŠ3íêG/Ççêb4„ uWT³»²“©ôbRi"°ñÚdEB sˆŸÚ nx>µ!¯ JþÁis5eí„k–Ó¡¨')7O(¦sæBÍ®lWmu@ ,lAÛœ¨åì˜Ì~…€•=]d^y» ‚˜öWÎx¶÷ƒÂ=Õ ÷©Ip&ˆlî³¾éXÿÖb¼¦qƆ¶ôÐD»òß|XöÎä†Ã¿«<ò{"J›ËÙpì÷N5ý‘ËßÔü5M¶³&h6QøpA½>Ñ)îû³bÀÏ!~#õ ¿>FJÒ3à»ú—#Ç»çÿ¬mÇà,1_—T O-2ñŦ­Kä™Ge©Q±Þ@np”ˆOn¤éùRÀ]Êr¢RÏßEÃm(k¹æôkM9µFwñC´œÍFZ d7ÈÝÚÍâ4r·Aš-¦üíCÚmfí6´Cð v¡Þäg¨`'jOCÑ®a¨Úm*¤>œÝ¦â×QoQ‘"€jÏpÅ>‹ Ê½– ûÌ•{ÑéœyhxÃÛ—¨?\}ÈVuÈ\óÛó5GÆ ¤NhóáñúÃ£Ðæ÷õGuïÙ¡ú£öº#ã¼?¶¹ÉÕ5CÄohv ýûǶ“vI[Wó?Ãáç‘‚ÇlntMƒO<àƒÍÇßoji«ª#tíúµ› ’¼³‘jeÌ”O7WÅn\)…SEZ—VI7„Åo ‹Û¸FVÃk6ÑF$@5´ OÜžHZ~s¿9å87“7…'mD+(2¥ZäSg£ è´šHÅ&ŽØG¡$ŠVlZ›^£t*.«Nªª…b3k¨#UU‹çÝ”©keÙ5D.'N]-Í®q*g“[—[G%ÓðÊ­ârjá‹ûy¿&NS\¸9©h3ÚäÂFêÓM§*(ÿÓ§ÁòúШÿëëÿR7Ÿdgßûx¦xð wÝþħOþ†è¹  —ƒ‚V<‚–¹$ö=¼Üß«Î}^žY‹–º—¦ü%î>ù ©é ö¡E/NµÁtÏɦÐïé{êg¼¢x=Ç‹÷ñ~ðsAÁ? ^Dÿö'ëè׿ÍkÿlÏ9CäæިdàÍÓ×ëõdÃdÔLzƒyðÑeF«wùz꣓÷Ý|^:ý°Ð?(Úgpúþ¼|ìc0§:\ýètútgržaÁ'{†ÐêLf¡4šD-Ùß`÷ ¾ëØ!êð&áàåßÎ4`öwúÎý‡†èQ8‰ð¾b_oÄe28¯½R××ÍÏõ Üw;Î0èëübø¦=RåŸÕ@ˆ^4—ߤGùíû^#§üiÿÎúg›M˜~~¯›žsÎÇúú?ζaü‡ÜŸ‘Oü>Þ¼þƒïæu|ÄŸÿÄà›'Uä?ïm¯€¢>‘Ï]g þ¬øžX ‡ÎBœóIÁ å@èq{Ƀ3çožGóŸøTtþÇ!ešÄ…þ\|Ozä£=ÀÈéÌðá~&¢Ç‹ #]ñ*~S U{"{úìqüê>>øh(|S›®øGwCÉHÿóB óš¬ÝàGJ Ÿ×£ž¨hÄà[@øÜ¨rs諸¢ÁB'_` ”ç/È×xQˆ¦nùÝóÝó„un‰oa Ÿk¡Ç²×ob¼ôÙùÄNpp°ðŸÇ•?wƒÏë9½Ö~Ëmß3ŸÛ}J?»ù‡o¶/1{ú ¯)rFªüdç oŠ3ò›|™=)‡³JpÝ M_1L(œ=ó|‰Ù3Ÿ8ä¸e[¯Õ®Ÿû‚n´ =¢û|AŒ<ß…(9ýœ%Yߌs»^z”°qdÆ"ß·§]g ¾€"ŸŸ‡£Üî3c6ÿi—333f >f >fÌ|Ì|Ì| >fO*|t¹ £ÑÈàc6/&Ì5Ì"òq̘Í÷÷íû}e¶æ>º‚ƒÙ<ÚuÞ¨Ã"³'2òù_ýž³G4ú…€3ÃÇËÌæÑ<¿ køXš`6_÷Y|Ì~£s ¾ù,âØ‡ÀàûPcä1øžÐhÇÐdð±TËàcÆàcð1cðýämÆéÇ@Ö†cð=ëða È_¶» õYHÄs/ƒo@nËaùñÝ6龨r[¼Z|Ï·xÂ$ƒÏÿK¹¹-½ÃÛ q7XÓÿB†n¿O+ >Ÿã6?ðÝ𶸠×ÝÄ<¬oˆÖ£~ꃃoÖð C½³³Ÿ²xõS¼+ƒ/ øÄÀy=D¨nˆÖã›Ð9‡Å«|Ïô˜Ï­˜0‡Š‹bÿK¢ÏmÙ~ßSŸ° ´W(ýW»§]¯Õ®xìè9æ{úÖ5dðݘս:f >ƒÁÇŒÁÇŒÁ÷T{JÁÇhcð±´ËŒÁÇ왃®ÏG{nÞ¼ip™^¯Ÿò:(_,¶ÿ³¼ÿì"Ÿß%7xâ‹Åö–÷¾àà`¶¤ ³Ù¬ÿ3p3Ç„ë‰4ö]j̼ß=¸ùäé{3wøØ} fs¶›×?‡€]€t†Å!ÅØ²˜Çl¾à›õʤ,Ú1››ã²¸Âß(0™-,|l%Mf ´8i@ð±_Sfó9æs=7.Ôµ >f |Æ5HÓuôþ‹|Ì·Í Ÿð%0Ød…³Ç ‹|Ì|Ìž’"cfø‚ƒƒ|Ì´æ0˜ô,òÍzªÐsÿ¹M­Cm–vbÂóUñ>^÷gŃoŽ„~¸ÿó¸EAa}ÒY½»g(ÿI?ÞÁ"ßÜ“òlÿÈ<Àe©fDê©™Oáó Æ·ÝÜ`šñ$þa–zv²ö3Ÿ×…—…м.ì™eÁ÷µ¼•°®×S²V³°DäS¶nÚ³_à+ÔÎv!dz_io¶?ÌÓ´Vó3ù¼Þ~Ö$‘Ÿxõð§l­fßì:Å#<¯i7À$ýÃ'6·¥ë|Ï(|´¤¯eëg)ú@bá|egßOlÌçõë4<#ÐMÞ|E>?ðy¾*. ¨Ý˜åW$0ø~òðyýª !͹-Òí«Úõšvé’ó^K_§šq­fßÓ™výßÏ›óJÜlbÁç¾@渼¦Ú…ø‘žYXYäó DàyÍÿC.³=öÙ!’Ííú¤aqÎë!¾Î3‡/Veð1cÆàcÆàcÆlnã“àþ”œþIûÔ˜=¾È',œÆ"³…‹|3¯Ï÷ðáCö©1›çÈ·Èkä zÈ= ]W>½ŒMù_•œùÌŸÑ÷‘vyøh<¼|õ“@W"g>ógïÏeqHfÌÝ|ÌžøZZZ¼¯FÏ¾ŠƒÙÅ ­÷Ènjټ›ÚfH»Ì˜Í¯+× _=Âí=³oVpêVË嫟ç­¹¥ b>óÝ›×~ï÷cœ»/ÅüYùÔYäÞOpòñ…€ÿ¼=p8k+8¾IEND®B`‚pygtk2tutorial/figures/expander.png0100644000117200001670000001166610103544635016657 0ustar finlayfcf‰PNG  IHDR¥Bé˜]ô}IDATxÚí]?hTÙìûŠ)ö#XLð XD°x/¸àká€àná‹$»… :X(³Â.³a”y’I&’±Æâ-Ì c!ŒàÂl±€’bÁ¾ý½ŸçÝïι÷æÜ¹ó79üˆçÜ9¿ßùþœs¾;¯%n¦Ò±|âæTLþM:bûØg€bVR‰åØòǺü”6Ì—ÆR§þH¥s͇×6¶{G«K»G9§úô¯Bí­­Xþ?¼%°åWgWVÊÉjåñúêlµòôÍêìÆöúÛj¥6þüýÆvmüçÏ6¶ëó/Ž×Æk/OÕçk¯/6Öšï~ý¦±¶5ùÛæ»­É­mMî\ÿÏ*èÎóë»Ïv›»Ï>|x¿í†w*=³œOXº?¨„7g¹œ|x­¸´:»|¿´Ù¾:µï>cí :È? w lV¦ªüéS§JEkã¬^Ñ—§œ¦¼úÒ¡¯/Öç›ïœÆ)úÛ Òæ;sxOÅ.ßÍ5ÓÅoŸ²^¹__](eW^¹'ë_]žËLǯm—¼rÏžËÌen*mzåž=1ŸËÜ>â•;QøâX¦±Pº3YNzå~~8]Ì5Ïxå²×ùĽ «³ƒ—»xÆ+—ýõ«Túò]/x“¹Á¾Gõ‚¯Zí,M‚|ä£×àÝí!à:dï½€}é»\3Ø€½°ÏŸìoòÎ=˜ÀöÎeJÞ£Á9ò“Þ”Z½–䫃V{+¼®G¨TPmèÍlMþþãÞð†4vºx¥ækì»~ò<ØgOØ?$½s??œiøûŸŸ¤‹aÖ|÷ûª€ÿSû{´ýõêõ&Ì‘·rÞO¾ ®ýdýÔ'ë:Š‘þóNÅH£×ξËzýú.k7é;ÅóˆÛ…†¦Ðð›Ù“ pGk#@·&ýáM5¯•iÌ€ME½;ÀžŽïloyÞ°Iaeí\§4 ÖÐ;`ÃåéÝ#š<~³ áÌW¶ä«àÚÛ¶ÃÏÝ©ÝØæµ{ÂŽúÁÀ–C`lIe#èëZ3v°îl |/`)êvE]¹mZáÝmEmöÊå"è·€ºáÄWݶä«ö¸:ØÁâjj÷€7ˆú7ÂØS±ÏÞª;×ÃÁ›Ö!ÔXûíÆÖ$WG¨¬»Ï Ù3«³v®yïB9I0 ®ë'ë__ËP½T¾ÍÇëÛ,™oî\ÿ£¾û¬´¹²²±Íw0ˆ[“©ô¥ïJ”çdèÆÚ¯ßÀc¹ÛTû lêuƒ¹»ÏPr>²–Ýg(?Ÿ¸3Y\r ÚJµòÓ§õy iùÞ1öB\óöwÉLg «Ò&[ìZ“½ãÈ„u­óU7€-ù* Wûs2UÔÚÙ÷Λµû›®y¿ ;ÁÀ¦[ßܵF¿7AE†CJ! µ§>OFÌ4®ÔÔ¯6¶_o¬1½¸ôè{(H/Oak€§ýL™¬€xÔç_}ÙXã›Êшòц|‚’Ÿ B]lU>ÁÑc«¨_Ð%K†ý¼5¹:ûôMm\žÎ?¶YæV+Ïßׯ3oŸæš|S»ÅÞ²ùhHx³%åä“_WŒ€Ÿ2¨7×ÄÒYNzÍÑÕ†ú›sÌWí1·Ãâ{ñ•Iía ÎÖì´k¯ï¾ðfW»a éð‚7XÍ‹*x—6ç2ðœÓÝ%e²òŸ“¹—ï+É6wdœUJ¡…r»±-UP÷ÀllC±çÙ5Ê«\óÁLµBçœ!NJ–:Î9Êv/x£º-Ítªî„4{;ÑVåœ[Vþ£±åh@ ÷ÒX#ô”V3ÄÉÕÇ…fKð‘Jxûñg?,°•r¾7_×ÞÞ²ªú¥v½ Áú‚ °àŸ±‚Þ›ì(áM™`B)s(g”œê(`Úíʶ¤Í\\âo±yÏ6e þÖ-dEQ²£ê«Ú鑦2^sM2=]Á»Ÿ|u0k÷·*´7ð‚7d‘¢`qwJØ\#ñË…œT)n&dnðo½s•\uSø†+WóYpàÝ?¾:˜µû›´7Ð/„RõFáÊ]ÕÓWgŸ¿çŽ®’oæ¿5É]( k®ßÈÿ–T»_|u0k÷„7 ¥µÐÝê¥#JÂ;Ÿ€ÍÜ/:‡ã>v[2h´½‘Qðî'_ÌÚ=à]ÈþÌ'zO%¼G§Fþ³t_PÎiùê`ÖN:¢]r[ŽoSONY¯ýÛþýïƒIå­r™Î;j}†·¥–ZºoámW_K-ÿXém©¥–¿ôÞØ~ú¦ZÉ'nÊ'rÍk[ ¥…Ò•)nkƒ²=<âg'ØJo ï!Þ¼47—ùöé\¦]<“O—Ìàè½ ø)¹æ]ÜOúújºÈøU–Å-µðéÍ‹„.®‚ Éë‹ÕФ¸b“UWj8q ¨ó.Žf+½-¼ZzÏef–qåãÉ/´D0ÿüâK¾8îЗ§ÊI,{Lþx݉AD½Nüö‡–“Ë÷ËIsÖä›ü•…´¥C)½q/‡`«•jeý-¾äðä|ÕÁè@‘FÇ¥‹« \ÏÈÓų'RiÄÍš(¨ðt­A£¸Ñß^ ƒŸ|âö‘0%¼éï0ÿ¢â°½°Ò{hàåsg~ =YŸü}¢@x—“++Þðè{œþ3)ꤲ|2œ b³>}C i¿x&×ä…;u)/—îL²Mz÷f‘Õ)ö­ôûA¡eÊÑÑ䣣£P¤Wg Ù;“t¡A&ö c©‰‚CYíM_¥þþäèh¼ö·+ñÚtüò]Äf[:Ë>ËOÇ/}7§ào,L¸"zâÕDa,•|4–Š×â—â5Þt+¢_c)–Ï7u …¿Í5¯6J±|ì±¼†Oç¶R oK-dx§¹„º¼åKòU;”–Zjám©¥–'¼åû<â|Edp\ sÄia{Ô™óAœ0Þ”â… ž<ç‰k†=`\4“rx^W_ÓEuÙvï °<®'˜ÖÅ3<-ÏÖ²FÜp×ÈãÀì<]Ï« aÇ*¸µæ­Š> æýjoüzÚEx3Ä×eç Á`ÀGP9ˆ¤`zu£kðàég`u)íÇ™ùTšAšLÊáìгª®yÁ›¹,?,¼nAõåbªß`'[ó°0{ÇZó»Ü&­5oUôY0ïWØîiWàÍÛ<¸¡í¾ë£:€Ë|Çë;${G#k4‚Çã,ºªAÍÃ!ã1Äëõ»QìwËJO§p²)AÉÀ¾¨ˆ%{K s*B´·õèoÚ¥¶Å¿ýc~ÿŒc.¤ß]—ïsÁå,×eÞZ“VEŸó~…“žvÞR&ȯ…°;ÀP¸hd².u Pa]JÁÆÎžÉ”p)QøIîÙÞ2:n°µFGC@‚ΛWY©pv Þì>¨îNkýÃM׸p3ðÛ)GÀ/$“~Ö¯®°­5iUôY0ï—ù›æ=í ¼qUcc›v;,#Š1\ž~Ø<™;æ¦w|LK’TB©,”ð©#?¨˜À[ÅáTµj…7Y“#ÃU¼Sð¦Ä»túûæÊ9[Eµ“Z QÈx8^Ë}«§ X7 ÛZ“VEŸó~™¿iÞÓ.›1Oh3ÅUÄÈX¯€¦ÑÈÌ`¶7¼¡ Ìe‚Ã!ê“moº:Øw/8uÞšQ¢”è#fþé‚öœ^ü°剔S¼äHïö>´ÜZ½UÑgÁ¼_&oš/€=í"¼ ià–k¤c‡—ÞN4²NÁ›±5ý¤ÝŒ|\¾ –ÄöȵVN•´‘¢À›,Åñ”‰:oüH§aÍŸNب0Ö¤åéåîŠÚÚ°þ “Y0ï—é›p¹™ö´‹ðV+"¢Uëk§W°ÓhdÑáMóOn6(G‹£ºsÁ¢çY9Ï0èîxãœ*HiúcÕG`°¨7Û·Z P2CÿsRÒκÖüÞ÷²½éwh•<ÊGíXÈôwèæú\”ôC{’þšàºÌ[kÞªè³`Þ/ó7MzÚuxóoBE:Bübq™D#‹oZ/r±ðZw1IÒ.rô¨ô˜Z.Ò¥'ÛÃÕ]ÆSR¿m/Âm¼ö>ää,–s„ù+ÕN¤Ûða=çTwå3­\]•5ßõ5÷ÒûµÖ¼UÑg¡ÛûÞ=‚·¥&1gôEÐRKí¡Ô¡¡ˆèŠX®Npb[ù Z£Zj©…÷ÐP[ª41x˜ÇÆâ¶thà|¼S”Î0K-ÝO´ÛØ É#êdXâf*mr¿;áQ(Kþ`ûì»§xѱã츎åMáÝ j•K÷+횈å¸&Êñu D*Þ–Z:ÈðÖÃ09ˆn·TÔu¨wò,Ž¥–î'Ú¿•D«¶Pΰõ¿Gìcû ðC0+zlQâ7•þ/{6ÚuWNŠIEND®B`‚pygtk2tutorial/figures/actiongroup.png0100644000117200001670000002627610123672124017403 0ustar finlayfcf‰PNG  IHDR6¤—IA pHYs  ÒÝ~ü,pIDATxÚí}?h\×¶¾!,ȯ˜Âà{‹¨‘¸ ÅÍ@<$… ñpSXB…¬¸°„ G¸xflˆ™›ÂŒ1óRÉE°oadÆNqs!y…a.$0¯0ÈraŠúeÝ/û5³ÏÞsΙÿšo@â¬söÙÖ^ß^kï³÷‰|áâR&_øl³¼dþ7WJ™üñÇüñ7Á¿\êüù­f.uîƒRÿ/ÖqEð„Pfy©P‰ â±ùòÂËÅúNöïOksÏ÷ÿù§æÁ q6ÿÞ›åôNöÉϯ¢ãÃKO%‰ÄñÄè¶rð–yÒ 6l'Ô5Þ'nªl{õñƒáf*Rl\}õ|ßËi׉D"q\1°f~»G<‚m*=¡½O}–2_ý>þé-F!Ñ\ê³ÍÊöFõV¶6Wll6D”b”—¶š_Z_·•l±þÉ™­f)óíÕp©¾”¹»ê’–2.©¼·”q½7—º°âΕ‘Þþ(\*åõK7ª_-Hm´Keä—V÷ÖŠ¨I[ºrÇ/ÝÉ®ož—®ÞwK •Õû/¹¥—Ÿ<¼´œ¾~2\z¥æ—>~Ó_ºÙxü Ø—ëlÈâ>ë/òì—J‰’Ô•¿ž}mäoßNºá×+ÑIÓ»ã鳿/éíÂ¥þ>èï¿Ò÷K—ÍñÙ(6§õ½ÚÖµ[Â($:x»= ﵩôOt±¾ð2—reëèè·ý££Þ¢¿j "Òˆq 0èaRCŸwW]Òªtß³.)ºA¸Ôkx®ŒÝ>¼DÆ(Ä“Ê0 ].\zót¸TL•Áp)Œàõ“ɤb^Ã¥b¸w²†äâJA ÆÐÄ“ Ùˆ‘j½n4f_ï‘rø{ &+Ñå'Ék™´}}R Ú|ZçÖIŸ> $í)Æn¸¤þþ ‚Lb¢X¡O_‰Ú-¡ŸD‡e·'ç½`Ì?H?{îSgëÕ«ÿ:|ÖŠÿûÐ…r¿ _o°¾þâcó‰bô­Q«”-/CY¥„IÏÎlT¡¬¶ŠÞIž2F‘èºñ¥âO»J)Æò®Ú€© “Š1òKÅ; —ŠL&}Âp»¤ð·ÜÒÀ÷j•ŠÏÔIjh©]*T_Ж …_/Wð-â—È_þšô·Ú7\ÚI7>ÛôKE']Ò +>…¶ûzŠ¿%í¡ð]}ßo|VÉe¯ü%r‘è°ìö¤½ŒÙ²ú(Nct›­×_$!Ñź!ŒÚ\¾` AÐ'8úº‘~xJèÓ%=;ã{)K —šî&•î‡noK¥s%Š+•¶œs&cCæ–Š‰ “ŠÉÙR˜H·TÌ« Ç…IYwI…lÂ¥+w@>i»V©K*T~½{DÊIrÕ©DjÃW“[Á-õµ¾_s¢é¤Kj´ÝÝ:õ£ð>èï¡z·ß2ø­ ô.©Î•M®b ã“híö¤½˜€D{“­8$j:˜é$¸®èõuc¶l¥Ï0iÐ l)º[*ï…¢ÛRÉ•éíRŸÝÞ–¢ÛË –KŠù­0éùóAÆ•^X (°]*~€O  Ã&Ó쓊—ŠYüà‡·e㓟›íR¡MZZ ² —Š7ÖNx½B¤.õ窓åõÕ•[Ú¹ÜR_ëû5§uЖLcA®q{Н—™ꓺ{·ß2ø­ ,’ßæ´“z` á©×æâè ì¶ÿ½Ëé+5iÇÎØÛ÷ê·Ûel½ž„§b‘hÔl…e±=[ÑI4 O,Ž0Ê„ ˜ ÂExI£(ëZ1 O[ªU¹]*ãDé躶Š.•ñ©Ðg˜T:6ºn¸#PŸ40(íRŒÖ1rIM°U*3vq¥Á™Ù,[jÈÕ-ÕÁI˜ÌÁ¯…ôèß?ÑœÃg¨aC†lÚS†7.’-rKíëQÐÿ¬ï½AžÃ¥† ÃËÔU²VpK“놡O—Ô¯“º´=%™Ô×éêÝþ¾oìF76'B`ëÚ-a4í%}Æ!³p¾ˆN¢ý{¯æ¦nÞÛ‰º²eÓ§Æd$jÓ§,…0³Ÿ˜'ÁVe ®éûoù¤ò¬!æ0iÐ…l)::g˜4èØíRÓ±ýR¤-…oê—ÂÙRéKEâH[é3L*¦ÙÌÀ…Iƒù9s]“%Ò×Ò驹*ÓSg^† í”A6Æ# “Ú:cPü¼°ëÝ#Ro§<ÃSw•—4¼ž£¶‘¯}“kN'ôë3üK·4i/ëÜ}}¿“ÝðÛœÀûl„IMÊ×–09‰&¥ÏÁhoßëâ£(ôÙgO4œÉ£Ògtõ͘‘ æ–›ÍC•EYqEãl^èÓ- ºA¸Ôø—¶ ¹rK¥ë†I¥ccÄí–ŠÉ“йÁ,”[*¦*L 3.…Är[ŠUÝÿ¹öú‹Ãg‡Í£?~§ÀИŠreû»ï»Í‘š•o¸_4 a@i÷W GÖRM®z^)#&®·–HˆJ§ƒåø¹ªlßÿ¦õ)´Kc÷—Ï_qäøéûMjò«îýý©É´Ô•Ûê^{n­CŠð·èÚÐ÷ËÇ]µ9´ÚÅ|¤ÚÈÕýÞ7õÃgå¥{_Ö×u:X ݨÍý÷{¦ÕPŸš>eß[ýßOZçÓI£±n}v÷…(ýÈ%ÒÃ¥° ÐùøVÅe‘ÂâR­–0 ‰vGŸÉɬ=pþÞÞ“h'×®›ò&"QwÀ6î˜"‰Úô©IÔ(úhÒ§KÚ-}v"W—1ò2m]RÄ„êë…ÊÊImåÎVSLíá3qÜYÝ{ôccF¶y ¤»Q½v(«7/?‘¤õëggÖŠø±•6ΟߨŠßY¨”óú x¢ $\‡Î*ol5Ÿïÿ[}×ËKß^•/ðŒ÷iÂÂÐjÉìÿòèGs?h5­;|ö¦n®ç VJ™ÙüÂËb9ÁSðmz3éË*>Ó›ÛŸÞqçÖÔ³xŸv©í·è·ëÒÕæ~z§±+Ø<0ï•w‰nÈð(œ>A®QÒAAœ¸þøÁÓ_Å—’ÏWPÛ ÞòÒן>~€ü?útY†Àª„K})˜Ò_½+ê¢x»—aüÙÇ~¼·ß<ÕÕ#ˆèÙ“‡DÍ|@ëâ‚ö9ŒîèÓÝ Ü¤ßôé–&§OŸo…>µo 3*(Ì{ídµ£©Í½|i·VœžZx¹œFN&Œ‘¦M |ûº~—„éÖŠÒÖkEÌ)žñë/Ôéƒì%°¿œF~ZiIÒJ3ô&Dø|×Qjéë¦3é#'í¹Ý¨Ú¹½ (_—Ú¼]HÝE¢Bü‡Ï@öøQ_GhÑEŸzº5ùººõºäCX\­@Ôþ+RÀ*ý¡ÏdäŠé•~Òg|‹dÞ¶Î#p$¤Dà QŸÝŽF¢>·ïµËÕ}y{B¢íÕ>£“¨¦O='ª¸ç!ĤvšõÍa$Ÿû4Ý/lV¦Û™ÑÎsŸýŸE Á«{ù7!‰ T ã®Ãžð)1‡×:cÌçÙ´©}Ý~æu:šÃÒÇSâ§Ú¤(ªñte£HǾßuéGÏ-(Ç_ao‘ZµK‡¹XWm¸fFít4¹êt :¿Q½~²²-úpø ^8ÚÝžoîvfÔ·JÀß|}°Ÿ3£ÑWc„/³Ò–p°$ÚÙnæ{ýb?}ö•D£FÏ]ÙŠN¢ë…}†,5oõ6 ÞTÁ-5_h…Iƒ¯»Ú¥ÆëÅ×líRõû¤X &mÿ°¥Áâ‚0© 5‚oì\R³ª¹U*¿Ë¬ji}ý_5~•ñ/ÅÔ6~ùÜS\Ñæ^9’ÌjRÐ eV hC_oõDƒ”áÛ™ $·Ú·3tž®Û¾‚Õ&PùägÙ„ZZ¾¸ž ÖéÛéàºí7ã:Ö¦ús+uhr‹(Âá³vJF®ÂI7 ·§zðÅpk+ :Þk§ƒÚFÑO™ùÚ +[MOô볞։ÛS|}°Sÿõ÷}ñÔÝvÃosZ¿q¤²•±uí–0>‰ö×nOÚ{“ho²Det,[ˆ·Œ×d6N®ˆ™0ˆP'v¶ÔןÊþ n)vÔ “b×ù5L*ãq¿Ôä¹]ŠUŽ2òM* VîµKÅÃF¯áRìJcK±ïL¸´±û¯¿²,/Ýþh'[Ù–ðö·–Ó«÷KY\cæÒ`|e†¬6‡`©,¨iHððó}ÌA"bCR¸Õ@Ïæ…tʘ¥CYD¯Œ‡vß.<@Š÷BW5-áëC=;(¹­ÍÙË£ !ä___½ÿ|ßÎ-|½0GçÖÔF@ÕÕ½{_>~ ÉØ~»žÙáûZíO›Rëb q$Ÿît¾ÿ­5Ï MÞjsÿüScWûèqtÒ%5Úîë)þ^.5=ÔÕeÙÝ»Í~FImŽË^au4òl[Â8$:»=iïM@¢½ÌVÕ[?c7N¨²ÙÎÛ F¯U¨cpÝHƒÍäØ^Ë%EÊèaRlu.5a‡IÍ€%Š+5µ!ôcK±o-6 sI±y…-…w.…ïRÊÜûRV™"„k–ö4vżР¤ ŸX2ƒ…6š–̪Ñ+µ,ž²©y€9Kø[÷…‘ŸäGÈ»6§gÅ‹•5¥wWe1‹q´¯^åÛšŽ˜¤0òCú÷¿‘¹=¡x„bLÅã„¿%9Ô÷‡¥èjXn…xìÜb5€z%ÔkêJ–eÝ<¼½=·ak‡åY¡ÀÆ.Á¬›ñ³[ýf ºÓyúk}é OiÝØÉ>ýÕÀ1„2ó¾ÑuÒ%Õ}?\Ú©%é¡z·ß2ø­JpˆE§÷Ú›àË®ÅÑHtpv{ÒÞB¢X}g#FB½E¤ìz¯&Q1(¦“„« «·šwW»ag#H0Ä}r‚ÿÄÙêÚ-Å{}Rtƒ0©tw‰|R1s~éNÖ}2†÷|R™ïŒ*Å»Ä#‘å3 lƒ µŠ+˜™6H eÍŸ‚HÁl®œÂ¹46ip?ŒÁ‡4X¯(×õ=†>ÛÏE1÷ @Hu ö© ]!†åtX`SS%wÚ×ÖI®ìÜ¢öù3º>e™f4ϪßbÏejĬ[ë90b²õ=Úÿv§#4¬Ï«1A~ù¨5h,šÜYë|R¿>ûúBç^æë¡èÝîó”:Û ·ÍútI})kKˆ~4jv{ÒÞÛB¢òÀ«öãˆÿƒmÿÌ(A€ªlK0¤±kKå,CŸaR9Š”¸Rù8Á(z˜T:gR©¿ÔUÅŒ‘̬„IÅÛÚÀp©Ù-(LºÙè,3gK—ÓQ¤âõ†I¯¾òKe6N‚¢>iø³2“‡0¸-EXg| ‹í±ÔÈ,¡jlêgÃÒìü^äÙ/õו=—­žÛÛÈž»Z­/bMx_¼j30òëtÒ¥±>}6}ÁßSúÑC“Û #õY$÷{Û-!,ä¨ÙíI{o‰ÊR‘ÑA¨F‚k”VÝ ”µUŠn ‹ìA®íR¡^1‘I¤—ŸˆT¼Þp©äÊ/5”ß.½RÓôiKñM^xml6üÒ‡—Ü5 ¢rKÅpËÈ··RC TŒ/¢ (!ž†)\ª5&³¿²¡D°\XÌPš•±fåd§4]ïE®’–K{¤®d5¬Ì1_©O7Z=··‘Ž¿}v–¡†ß{¯ZVÎû´Î­“ÐØ$}¡“Ôß;õ_ßOnUÄ^ÉæaRjˆeh¯+C¢£e·' [H#îÑÁ`Û¿Àô„#Œ ‘Ø„g)E`Û€•ï˜1+6Zy£,Ÿ¬ :¸tp?êÞõ§;Ýó!,ä¨ÙíIÕ¯»¤«Œ BE¦rS™ßÿˆD"‘¨rÔìö¤a ‰Êr€ßÿˆD"‘H$F@’(‘H$‰$Q"‘H$I¢D"‘H$’D‰D"‘H$‰‰D"‘H$‰‰D"‘8$*›•Ë&¿ßÿ&çV²Áú/ÿÆ’²Å‰DâH‘艿òÒW 奇—þþôá%ûʨ!r¸X_x¹XÇçÏÈíTîÿÍMåæËsÿ˜/?¼ôÝwr–äx¨J4åkùýGêĉùò™óå~ ¡tIû§c®rMOeþszª”¹~²”™´'I¢ _PÙþúÓʶùÚ¿ó—ÏeïÍ€rF™D»/>nì‚8·šW_m5e‡UÙš\¼g9I±6‡R‹‘‰ÚºQ›ûámÙÒìÝG³y`ÿJjk]ÿJ ¶@*}Ëù $Q"‘$É”$ñóF“Dav‘7çñP…á‘h»ñ‰þùˆý.©»tB¨Ýô ’(‘HD™.ÅøÁÒTéÔ¹T)]K_L×`vé‰"@W¨œ?_¨Ô×ÿû½úz”gá§.Öß{c‚À(ÅZqõþZQ{ç.3g_Ç•êÞÝÕêRFÞr©OåRúYH‚žÍgïÍæQ{£F¢ðØ7}½”¹yº”APTמÝúQJêÒ±èm·tõõŸÞ©¯OôÑ­žhôÒc‹‰$Ñ!“(‚o˜q¬lßþȤù|ÿé¯Ï÷aD`þS};Ù{_îdaæOÌäm5¯š¯í…ÀDŸm¸Æõê•ÚF5‰"ä ×Q?ð˜Q¾• 3Êà ç¢}«{ß^­î¥J©¿„å1 b4Ýâ~½$-JIÃH4^E×|hf.õþ[¹^®‡¿tãÛâD"I´Ç ‹0:ŽN¢0I KHa8€Æm7ƒYåÓ_¨œû P1'-ÙïdﳓµKd{®¶ï—DõÀ¢õN1ÍÈ!jÏö¥Fia–›unG„)W 'ÑKê׺(mä/‰”üùJº}€/’KVºñmq"‘$:dOkAQùÂ'gòa8†ýqŽxT²iƒkáµ ƒhL^uß)&µgû4£4'*†zÔžk®÷`È‚¦­'QJê¨Em£¸šÉÐ*(9n鯷ʼnD’èIT¬AT£\¹fiL`p»÷DõŒZ\mÍOà— ì<:s¢X‹|"0Þzµ'õàÒ“è%í·'êžñ•ra8·tãÛâD"Itè ‹Ä`qºžw„ÉÓ¨ˆ2æÌÌ<r‚4dö ó£ùÂÙ™|Ážo[N_¼±œÖóm(×ZñòYº"÷#à àÉHT0Ì+"˜¥µ…Eð¢@(»ÖüzC+à:j>zIýs¢QÚ(ÎŒ/>²„Ÿ·ØÚî/Ýø¶8‘H‰Õ¹0 '}λ^dÑ9Ãòé©™Ûf-¥ž ƒ ¶=æ°•Ÿp[N¯Ü1&[û=æ#}y ‚ÉHT{i gä+'¡âDU}Nj7O¹ÎyEÙq <­‘žèäßeò4ꃸ»1m8Þ¹±ûâc·=N$ª ¤G!Ñ­æµÃ­¦}{×wމš#ÍqH¸ÃÑ´¸â zÐ<Žaǧî(©>B<ÙS®ÚóHRûÈt"q„ÀsLO-§?9“®Í—gn›0NôŽ'Šð‘6ͺK§J§Î¥J¥ÌÍÓæž(Ô¨¯Ãhê°Ì¥ö?`^ñ.PŽË_}qæ ŸœÉ´©…/î"Q ¼LP÷鯭AÝT)õÑÒÀSGíFÓúí‰B3Ñv­yëåSþÚ«¯ÿôŽÑ‡ÇýHO”8"žhóà—Ï›PPýbCŸŸmŠÉ^¹çfc¾\Ý»új±^Ý»v¸XßÉ^?iWD:_Š/çRg^¤JqI4ÂËémÔæ~x»63­çcv²÷¿ÙÉÎæ³÷fó Ãd$꺂vA$ ²}û#cP@!0Oþ}#{[c½ QÑ1ÔduïÌé©™ÛÓSÚÔÚ$ŠšAm€P!…©E Hs|I´Më7BO@äÆoŸv× qÞû²Ø¨Í…#D[¨|x*>‰Žš'Š+c¨ —òG!Q=¯ã'Q$q1ÆÈœ1†Ð%’qhž(<P)º¨‹J׊—Ÿ¬gó3·S%¥¦OPfóà§wžïýïÃÆnc÷Þ—Ë鬸¯¸§ØøäL|MOT/fÑÞ¡Ë´™õ¢øT\¿è¯ý4‰b± (D/#MÂИ™$A‘îË;ÅÐÁÿ=¨Y0Ú¹^‰¢K™[ÙRFÓíq"ѸšÖ?D®°œ:¬·M€ÇŒ–ÕùLöT§eéG°ZüN”8«s¡¾Pt˜•Âgžúó¡Ò»«‰^?Y¨½©Ëñà/ÿ&&àïOåúå'éîYNŸû@¾lû”t!A×—p£æ‰Nvu.·ý#‰Çî;Qø:1™o{¢²È¨Ø¨î]¼‘®íd/Þ9ª³3|“%HšD%€3=¤'J%‰‰Ä1öD1ë¦?q±‰S¯Ô• Ò5¡ÏÖ9Q?baHTÞ…¯Qeµ!=Q’(I”H$Ž­'êúÄEÓ'–×ËWžâeâ Qùú3î'.²ÙÂl^Èš:Az¢$Q’(‘HûïDmT‡Wl|x*U ö* ßlAo³ 7[)v/š/¿ûhzJ(9—Ò%‰’D‰Dâ{¢z6ÿë=ŒÒµSçdÛ¿`×ÜV*ÅÆ Á¶f" \Ýbƒ@Ù´AHtî²a› =Q’(I”H$Žýê\¬ËÕ–*MýÅl@_Êh*ŀ؀¾}ëy{úRfåÎl^¾1žš//¼”]鉒DI¢D"qìWç¾rœ_õ…BMÊÒ¡é)ìL´X—]HLð~çûo­r%_ 'J%‰‰Äcò¨ŸD—Óï¿%‡'Ÿy!Û /¼”T„&唉\ že.uvf£e£¯há\z¢$Q’(‘H3Oó£':üdó-Y|ô;Ù–R‰ƒÑ7[ 'J%‰‰Ä1óD{KÆðkm„”ž(I”$J$•':9”@$‰’D‰D’èˆz¢Ý#=Q’(I”H$Ò¥'J%‰‰Dz¢ôDI¢$Q"‘HO””@$‰’D‰D’(=Q’(I”$J$‡ê‰îdﳓ•mæËøt*7•™Êák·—¾ûîá¥d)ブAzÒ$Q’(I”H$È­îÝ]­î!}»ÝØý×_»@\­bOݸyhüòyóÀ¦a¤ÖØ}ñqc—ž(I”$J$ÇÌmüϵæì"”*­Wï¯]w.§Wî,§q8Ú«…—ë]Áà§Ò%‰’D‰Dâ˜y¢á"eÿþAz#@íSºˆP_·Ã¹ëíAÒôDI¢$Q"‘86žh)sót)cRöû—"Åå¥[ÙòR7$JO”$J%‰cï‰&#Q<5¥'J%‰‰ÄõD˜ÎEx”=Qb¿?:"‰‰Dz¢ø—X.ä_X)– a9’‹ëë?½S_®'J$‰’D‰D‾ÕŸ¸”2×O–2aŸ¸È¯²ýõ§•mý¬œ :•Ûj^}µÕ|¾ÿô×çûzÑŸDñ*ÞÎf&‰’D‰DâX~'ªgÅfóï>šÍÛpƒJí§@ŸXa;=5s{zêñƒ'??~…D7ª›*¨´²}û£Vz¦'J%‰‰Ä1ðDýÁ^,#J×ÒÓ5Ðärúâå4üT6I”$J$é‰F"Tì1„ï M6•€$J%‰CóDµQÇÿ‰$Q’(‘H»p.‘H%‰$Q"±§$zt¬$Q"‘$J$ö‘D'ÙÖDâ‘hm͉D"‘8™HO”H$‰D†s‰D"‘H$‰‰c…½9.žÈv$’D‰Äˆ'ùȦŒØñ[0BÓ°+ò|yîóe} ûèwÿ‘®M(‰ãÕŽD"I”8dlì¾ø¸± âÄÈØÊ§ô`¢GŒ‹9‹b|›¿|Þ<—aöCKMNÞH¢D’(q,|Ðà4Y}¼=–h¸y#‰I¢Ä±ñDqO¡rþ|¡‚]{¢< ?u±þÞn=•6˜ÓŠrl»¾‚£ñ2ò–K}x*—ÒÏâˆx„ góÙ{³yÐM8w£z¥¶QE)P"´ËK_-”—¢wÔ(ùR{úHA¤³œ^¹³œŽ’œ‰4=•ùÏé)¤_^º•-/aØ„Sð&£˜¾îÏÎqÂDÊ…Ö±k²›v$I¢Ä‘@c›/Ÿy1_Æáwagõˆ‰‡6›È0®ƒ’‘(R@®?xô£9V§ÕÂcFnA Ýω”ãJmÍ×füFWFɯjÏŸhˆr!5Pi¡rî*ýôN}ÿ£­ã’¨ë j ƒ}¸!ʺŢûv$I¢Ä‘[ ¿æU{c;Ùûßìdm²=W̭ŸHf”í“eÍâE!‡0ÇöÎd$ŠRhJSiÜŽêϯj¯“7ø—­A{!9\uápÃ^‘(fÐQ“¸ŽaÐø£òÞîÛ‘H$‰GaprÔfÝÊpm…ãØ­Q¶IÇð!ÙÛÕ¹H_‡aÍ!óBÝÌäéü÷ªö¢çA“¨¾³$ŠÖÁð+_øäL¾`£>N±›v$I¢Ä1@Ìci³Þ½/…pb2mÍOàÁ ìÜ«O\0€(6.¬º,Ý“è`<ÑÞ’hôöÒþ¥öz;éU’v$I¢Ä!#|,ÌÌÁÔšP1j˜»ÂœY¾pv&_°çD—ÓoÈr’`V/]ûó•tm­xù‰,‘û=`nL/K‰K¢Ú ÃÃXçRï¿•KuÎ5Oݦ´îI4~í‰W‡ÅJƒ!Ñèí–7) JI=§nŽœ“쾉D’(qȚĺ\S½Ù}ÀÐÛ^EØúR Í™UšíTÔ •Õ›ÉHTû10÷È'Ly2EY°ÇÌ âJoùqko£ºÙ0Ë‚ìÙÖ~hôörå ‰—®O½äªûv$I¢D"‘H$’D‰D"‘H$‰‰D"‘H%‰D"‘H%‰D"‘$J$ÆÁÁœ(9šçVò4M"‘$J<~Ê×ò“O ð)öhíÇ{ñ‘CÿNÍO)FçTTì»köþõµ²Öаý–ć.´fD’(q‚”›Õ [1Èî²ø’Ø?"éß  ãK¢ƒ9Û& ?z ¿‘r{£¿7¥5#’D‰H¢®ÍÛÆÕG_í7b‹ lƒ€ 7@¨þ<ãø3ìpd߃­$½ 5#’D‰$QçÆx¥ÌÍÓ¥Œ>ÏÒz•äDIWè2ú™¦þÒ!Wx»9Ëò%)ѸŸŠjOj»Yé£â\û7AŠmåÃv–¶@®P“´fD’(qBù$b«qlVgŸivâ NâÝêS;¢Ÿ(FñNåô—>òŒCß4F/‘Ns|OE5„'åÒábм=¼ÐyÆ{ñ,RÔ*RÌl.‘H%ŽøÂ"øpí6{'„aÎ÷t8ú‰’¶Ù{J§!Bûž´9â—è%ò§9.§¢‚ðìÚÃ!ífОgÄ0¬AhRlFH¢D’(qÂùb@Íì—„+]s¥¸ÁL­ÃÑO”´ÍnÜS9ãÎ>bót}vM”½Š¼ ý(ŸŠŠÒùOúv›DuÞà#¤¬OË¡5#’D‰=' /fFëuøˆrš‡ËèG?Q²ßž¨MW˜§Dè2z‰¢“èhžŠ 3©./5¢u‘(® X•Ûz°E%’D‰$ÑíM‚ 0Û§M$þÉ!ħMmô%ýs¢QNåŒN¢zpï-z‰¢“èhžŠŠVF­ºîÁ² -H×E¢)Û½D‰$Q"I4Ä;AØd`B‚'ŠQÆ, ¡ڠG9Q2ÎêÜðS9ý¥Ã{‘7,~±Ë½Dã{**(Ü?øÀ%{á•M¢ uÔ¤>–$J$‰‰D"‘H%‰D"‘$J$‰D"‘$J$‰D"I”H$‰D’(‘H$‰$Q"‘H$I¢¬"‘H$I¢D"‘H$’D‰D"‘H<$Š]={…l"‘8Ž8©–°ó†—Ø÷gìDªƒj꣫öÃĪر¹Å¾ Ø_Tï:\Œ¾{'÷ù$ÇDc íST_y÷(Æá ÝX˜¸çM²eëŠDºøEQlH âÄy8Î oÇ†ÔØ„ÚߨƒDl‡m“:¶G‰üw‰Äñ"Ñ~[BlñooÄßj-qÔc;Ó…q=K‰æR+w^ÚÉ>ú±±]uЄț>i|+ztÈžH$žD“YB NøÙ¨^©mTmiyéV¶¼ä:Ê~vŒ$ÚcÕÒ'Áÿ:|×ÅØªP9¾P±IvÝžüüø 8 GJéÓuàè%¨ Þ˜K}x*—ÒwB}‘š9JBÊþ ˆ6u,)ã8-ûN„bÌa[í%Bþõ±SÑËH$‡K¢ÝXBmp¢­-…‰rºj2;¦­%îÄÑ~Ʀáä]ß³ÇÕ^õ‘DµÒã1€;Ù{_îdQéÈç|ùÌ‹ùòVóÚ¡ ðÚ¨EeûöGæìFìŒ&·:Æ(ïÒÁ<…IrN‘£•õ»t6ú\‚}'rkq \h·ŒD"qX$Ú+Kˆm[¸èõþÓU{eÇ@ä°K;Ùûßìdµ+b?{¼íUHôᥧ¿Jô\W?øþ·æKi⪎^†™Eb¬ÇPhHCE2KІAs‚fì#¡]ºi[iOE«)ÝÛ1=#‹™QûÙãm¯z6'}äwa7î™™P í"†Ž0Bk(C¤ˆÚ#ð«çMÐÐ^]ÅSæžàsc|xEù èz´èVqI$jÏ"$+#‘HÌœh?,¡°x°˜î‰’íÞŽÙÖa$,vسÇÙ^õeaQ¯T4 AÀAo¶€¥FûØ£4 TÍÌž êDÑI9AØD§†+Q zÌRô16t1ã–‘H$~aQÿHÔøvòÓ+Bü$Ú½Ó¶ël±F³žþg«½é͈D"‘›-!‰rï\"‘H¥%$ò"‘H$I¢D"‘H$’D‰D"‘H$‰‰D"‘H%‰D"‘H%‰D"±/$Š=þY)D"‘H$úQŸŠs"_øl³¼dŸ I$‰D"ÑF0æ§oå o”2þ-׉D"‘H$‚%Á˜ÿG¢â‰ •ʉ(¤R"‘H$;Ó§òDA¢¥ 7åRï¿•K¹n%‰D"ñx#lfÜj^?¹Õl#Q!ÎB%ðGo*üñÇüMæOS¦ÿP|ýÞn.âÀIEND®B`‚pygtk2tutorial/figures/labels.png0100644000117200001670000010331410073152767016312 0ustar finlayfcf‰PNG  IHDR!fdPÚ€IDATxÚí}=ˆd×µî€ jð :ÜÝ &˜Á7è† Ô àº‘áª° H…hš fú)˜iŒ­ 6õn J‚+ú)03 ÄÌ ÌŒáv C lh‚øAßÀ0~ÐVà@Ïë}w¿³ªwí]kŸ}ΩSU_>FçœÞÿ?ëÛkíµ.¬nülg½3Ä¿5^à?þøã?þøã?þøküçs“ žâhÌ?Ýîö|êò]Í¿£'ÝÞ»Ò}á›nïàôã»ÇgDb[ðñ"‘H$‰D!»~7§äçUÈݧ4œÅ×½è?~xëÓOï_~üà??xëñƒÏþøðÖñÙç~ü`´ù›¿Ÿ6¿|îøìäÎï8Ú?úà 'wƾ~}üèô¯ÿûŒ=}þ¿Þ9ýëÓçŸþ¯§Ïÿå§ÿç¡à_~ó—Ÿ~ûëoO¿ýõwßýíl’Æt{7?9Ü ‰D"‘H$ÛŒšÆ@š½ùã»Ã{o}òGOš‘ŸW!÷oÜÁS&hŒüÏ$Af.Ëßþ ÈÒáhÙ;üà EQ¾úI_¿~rçô¯Eáþ×;ÀÓ¿VGcn|0ûí[ŸM{»³~ãƒƒÓøÛÞð­Ï×Óß¾ùž¼½=júíoïõ†oÃoûã¼·Ã{ÓÞ¾vCÞÞ}šþvûdÖÛ½~øíµk{ýÝÎ;ßÎçí»ÏLûÊ‹ñ·»½þ»Ï=©úíËWåí¿ýcúÛ­åí/.‡ßî…Þ¾t©?Î{ûïÏß¿œþöÇÏÎz{p~ÛÎzûþ¿¦¿½ÒýÑ÷rß~øjøíáÆ‡¯>¼Útù–où–oùöpãýö{Jh‡ÕÒ¦¦1âEL/$ç&äçUË©iÍÌ_Ó ߪ‚Æ”'0z“G`š§7o¼-oë$0Óß΋ÀÈÛÕ#0e(Jô¦yùê|ÌlzC÷|Ë·|Ë·zõÞ?š¾º#ïéÚh!š¡Z~^µÜ5Næÿß%Ô@Í4ÁÓçÿô?«ÔÆä˜¿üô›“o}ú×?ýÏ¿ü´Zƒn•Ü·¿®ŸÀÄô3ËH`楟)K`öú‹I`bo‘ÀäÑ›2fk0/Cz÷|Ë·|+ë¤ìGÓÖXgár^žt4fžòs<÷퓾Ù>ñqgø£ïù¸³ÌÏu×ù†ê®s·Ôê– “Wù¥(°c u€.Š¥&›ã|!Ÿ>ŸJc¾ýµ”¿jõ3ÙøËO·"2V¥™LY»æ Ìê!0å Ìf˜Yôf~&ôv¾¦zò3o³Lf$0|Ë·|Ë·m%0âbjúÚy#$_i—Ÿ«%0Z~Žç^ŽÀr{=¹‡Œ=÷©4F.îà"NœÀè&°º¸¾“Cc ²Te`'9&d³R^-Ã2MÝ©—ÀÄ ÌH`h`Æ·|Ë·|»oeö{hHÞ˜¤11ù¹£åçrÒ{œÀÄÕmÈ} ÿ¼ð; ^ ÙYÿñ³ 1®ùiµ4æ<Áà?úßÿC¼|{êþJrÿËOeûwE“ÁõnÞ¿ –9~ô_ï<}^DØIÑ ÂÞj³±á½_þüñM3B4†WüI`xÅŸ††où–oùvq¯øÇåç:Œ–Ÿs¤÷°ÄÅCnî¨{µ¹i \¡…: µ ânÔª 1Ó50=ž|úéñÙnçí±<¹ûTRšº›*rŸú—ª¤r竟Œ6ÿðÂø‘s{ðÛH H^ñu:’òàº(ÔNîà{ÑÌ8ýŒOcxÅŸWüyÅŸWüI`ø–où–oýŠ¿E~®–Àhù9ž»oÄeÉ=d?•š»®{U¹O¥1rÁÝY¶ÅšÞN]9Ÿ½àß…úÿ'ÖOÒ˜{Åp }awóˆõ‡ž>/¹» )h ºÂb·÷æ{ûGî¹´„×á½Oþãñçfî??ü@„éÝÎàú/þðž Ë?z‚Ü}ãHÈù2;Óµro5½™ö¶ !Õ¾½ÍH{»}2ëmA`¦¿u7dü·šÞÔñößþqú[ЛØ[G¦½-ˆDè-Ä}ÿ-èMõoqO,þV¨Bè-ˆÄô· 7ñ·è«} z{ëˆÄ´·‘H} z3ýí•nî[·1§¾»p¾å[¾åÛÕ~ ƒ£«éR»â¯ÿ 4Æ*?çS_~Žçî.€¤ån—Þ«åöºhÌ_~:ŒÆz}¿ñi Dð8B[¢iÌ´/E‚ám þJ¼‰ØôBdCÅó‡·~ó7§u Ç7ýä?ÞÂÐ?ŸònÇ/³6„«ú­åu½=z2í­ÐªÐ[®òo÷öú¡·B Íhö­è” î‡Þ Êô·{ýYoe<×ó·Óß‚°ÅßB_1ýín'üV(YîÛ‡·Òß é*ÿÚ›Ø[1Q˜öVÖÐ[¬*³ÞÊÖ{ûøAú[Gºø–où–oW÷íËW¡Ÿ¶ÆºcÜéòUAcÂòóðÞ‡¯J:i €û—ùs‘`gËÏñÜý«ú„2äç^‡ò#BcäE*ƒÌ)*?Icä¼?ŽÓHˆþÃKþ[1Χ™ D|/%wÏu >Q»Q#åÇ÷GOþóóã3§ùÕïŽÏðÜG¾ÓRQfáôƒëý1¨Âùúæ½½©ó­ˆìU¾ýUüíÁiø-hhFóoE‹2í-(Yì­h`Dd¯ã-èÿVŒóÞ‚fL{+„­¾·¢'I { Ìô·Bتë¨`Î[ÑÏ„ÞâÜqÚ[!{|Ë·|Ë·|ëLhïž.‰ÉÏ©B<°Û‘˜-?[rOÕÿT›{uŸBcðZ2?JU•#0PEi¾GMcNqyxOL¼ŽÏ4n||÷ñ}ù~xïã»÷/;úQ¤ 'úA*ŒÇ :|üàËçÜݹcóøt)gg©IʈQÙãÈÿž®çq¾/ð:¿¦¹oå.”³Ù·ÒnåÞBE[ö-nCÍë­P”2o ©ç­zÞ ÍH{ãÑV5ÿº»Ø[§²o…f¤¾Å _Þ[!0¡·ÐÞL{+¦˜|Ë·|Ë·|zßaáâÿ†ì—ŸË ñ…(?K~¶äžjÀVmîqçåê¤1¨j6|~!¦Ñå1Ô$$ôƒ¾Âü’¹kú¿ÿáø‘&3¸ÊÆ´”ä›ã3¹¸ Ð`ç( D=¼Åí¯lpýã»°¿ Ó˜þ±_Óœ·˜`±·N(¯ã-Döªß a‹½Å}’6½’9û­,‘åÞ‚f4÷´9þ†mÓß³ßô·BPg½‘höíÁio±Aæ½½™þ'‹ÓÞŠÎoù–où–oÃocû‘“¾Š'šÆ„ägH¹©Æ•Í–Ÿã¹—£O‚®^9¹ûeˆë,&BcäÏA3¢¿¦1Ý,Ó¬)ש1ì`õ® ½z× ?\Ê!ó0œéÊ7©Ý¿e(#ÍÉRIޏ¥3™²óø4­^.åÅz+Ħ­oElö-(nÙ·Ã{‹øbwú[™›³ß>¼Õ®·BØd ¬ö­¬Tyo±1ó-ßò-ßòm¹·á•ûþùçŽÆÌS~^ÍÜ4Æ%ÚL!¦Ñ4ùÑ–oÛðVNŽëx‹3i¾]Ý·²Ù4ûöèIÙ·rÀ·|Ë·|Ë·‹ö6&ç4f~òójæ¤1Àf án•4æàô£›«Cñ˱loÞâ[¾]Ž·r¿…où–où–oí-PÓ˜yÉÏ«™ûTƒDaåVoöú~‹¦1‡¸ O$‰D"‘H$¶™§ü¼š¹O¡1ƒë¿¸|¸Ñ[nƒ/‡÷þýùÁuÒb“q|Ô±ßIc¸z‰D"‘4fÊ6‰ßÑ“_–&i i q¾4füè/œÜ©jIc؃D"‘H\³³þ£ïí¬¯®ÿËúáÉßÿp´§1ÇgŸÿùñƒí“¾Ù>YÛù‡ÍµõÃg_Y?Üí¼ùÞnçô¯_¿>ù·§o÷þýË¿üùÑ<\ÿ·<ܸ¸¶ñ³ÎhmgmcmçpãÝg7î_þøîÑ“õCIéûëàôoN;£ºíþe@šuÓKî:M<¿Ò½üË‹kø¾?~ãíþXùðÖ§ŸÞ¿|¥ûÏ¿ºÒEjQçÍÎhpý—ËÖˆ¸ÜÚ÷·ïÿëàúöÉóÚ>Ñ3:ut…ðâÚ¥÷/®anjZuáÂ÷×/\Øëßüd¯¯¿ÇLÇ*ZRgÐáFñ=Òñ[Ìþ¥½5?øÕïÞÚ\ýjk ó÷J_æÐ®D"‘H$¹gÉÆG&rÁV-tââZ·÷Ò¥Ih’ÆEÁì¶Ry2Úüò¹ã3<±FÈLñ·ƒËøÑW?H~Øt!îìÝþû_b“î _y±ÛCšòïÞpk°ùÅÖ`RDaH“.'* í©›ÆXr×iB¤À_¤iô䎅 l"v¸ÜÑb®ý¥•ü¡7C}M¬Cs³ÜÌ¡1˜wGOd\AœuóZûè åÞ¿v£?Ö¦§·˜­zn"MŒöø :ƒpØÚíõo|°ÛAî¨ýK{k œ BáN«ÒÆpõ ‰Dâ¢Ë6 јï¼_ˆ¢h¤ÿÞ…fLêmöd3ö…Im²´¾›ÖÒà¬Ï!@@ ›ÜˆÀ\ô&ÝŒQY(÷ÉóÔB¼BøI\—q¶ýð–”YcgTR¡}Ç_ƒ¿rS=>shŒ¯CpB¶Ì)ûè 厲éyƒ9zØ?rsVfV€ÞðÚµÞ0¾¤Î Ý>'wdåqkÈG7žØ¿´·Æðž¬N®<…†¹Z£2®üñÇü-®lÓ±_ßßíÈù%ε€o "„6fˆSúmh³÷Ÿk£¿ јà Zˆ>§Û“sbÒ4Cc,¹Ç[ Ûûñ³;ë;ë‚§wŸœâÌÏ}„PE³6«Ssæ` Ï/˜oYGW(wèEÝáÅop|æ PÿðÂhZ\ÔT Û¶š´„J˜?ƒüv³|io |‰šV{7†«‘H$—O¶i?úúõ“;  zsµicätÖׯTKcŽÏ>û£³¹m%÷7é:hŒ=÷x ÀÚ†yÐJá<§³¼¤KS±®8:SR10Û>‘ÑëLÎd ÷Ç¢ zéæÏ M« s°io ÜHÁ—Zc°r4†«‘H$Icj¤1¡¢„ïÆ@\3ÚÐݘji Ä'šˆ!´F(ê 1öÜÃb®>ÃDRuDëátçÜÚ0-LA„4&•ÆØGW¼.0$sWöï>Ý?ru,Œ¯ü;l~ ËÎ ¹‚'¸ñâŽKÎ;‰io  6Ûƒ±«î8W ©4†«‘H$Icj§1NDaOeb@â<•‰éEÈSYFeN¨’í[8 '`ªá.Å–¡1¡Nší¹ë4qQoáqÈ[!jÀPyÝnéM "ËJcâ£.‡ÆØGW¼.N;áëoáµL~{ý·>›ôZ*aê Ò­op…=Ô’ñ/í­0í÷sŒÊ¸z‰D"‘4æ^U"‰ó¢1Īb§Te…H$‰DÊ6¤1D"§:ç i ‘H$‰¤1¤1D"iÌj  ãŽGU_‰D"‘H$!9Õ9‰D"‘H$’ÆÆ‰¤1D"‘H$‰¤1¡ˆDÒ"‘H$‰DÒ^±%Æ\Êæ|ÙÌèÊ)O;i g±î9XÅM'‰À³~(¬áâjÒ?0k“õåX%Y\SŸXLSGî¤1 Lcåzûäù?mŸàÉÎú¾·³¸r®¼×G¼jÄÌ"Šv¹É“&ðàôoN Q±‘"šÛÛ -€“È“;¿ÿá$›÷iÌñÙç~ü`ûä…o¶OtñÝΛïÉéûׯOþíÁéÛãý#¤ÏQ΋k?så?Üx÷™Ãû—?¾{ô¦Hß§X–ºçÓ{ ëÁß÷Ço¼Ýë/ÞúôÓû—õ©!2:΀—›Æ¬æì³Ô=Ž–1#sçàµmgr˜;×.½/&RÅÜ,7¶ËÍV¤p¸QäˆÕ@™POYê>K‹8{½B½;j·$«V}+°]c?9m…‚>Õ´êÂ…ï¯C³º×÷5WhÛÐ:Ÿ:Æâ#$õK{k<~ð«ß=¼µ5¸úÕÖ@Vï+]|™Ccqï(·Úë1‰’ËÌš,¹öØ>þS%¿gõóPK挖:jT®ý«u¤1Ò,+GOdëE÷à9ªçÜÇ C )·Äõ““;¾ÐoYæòÓt)ËV¡¿w‰ w{»aZÊF~q­Û{éÒäDš¤12mІn¸Ë›ŽÏðÜ7%‰\PG<ÇÄ@ ìÝþû_b"õ†¯¼Øí!Mùwo¸5ØübkZ÷|coa7ºdz㯠Þéë䎈XŒd pc-£ÇòҘ՜}–º‡r±<ÇæŠí5B¾þæšZþœÙêÖ¡ ¨û^ÿÆ»¤€:ú=•Z÷iXf½²kcrVàT?ùmÕ¿v£?ÖÆXµÐGºO‘&Öºø:Ÿ:Æâ#Äþ¥½5PNg8¨J³ˆ{G3Ú˜Ôض~–›éi4&´4_£Ye¨fÔ‘Æ4Jc|©·.àŽ6ûƒã3<Á`Bæ¨&óÓœf<#Lßð^ªEO$ bÿ]}â Äù¥¿½¡T~¾úÔVkip ¨Ï˜ÝYrZÝ«5*‹·p1º&G ¶ˆw€ˆÓ͇·$GQ±8.+YÍÙg©{~òÛ ½£[U(ëþ‘ëk©#Ú­7¼v­7Œ¯ó©c,>Bì_Ú[cxOFµ+OqZ_­QÙ¢ìÍИÔ8uïH™éi4&´4_£Ùe¨bÔ‘ÆÌùnL\ÒÛ¶(ï¶ÅiÐÅ5tgÎI¹4Ð… œ’BXÁ)l9ƒ'»9Ù‰‘Þð Z8”>¦¥~kY,|Áh²ŽÓ#KÝóiŒ½…C5íö~üìÎúκàÁéݧbö#§†xî#ÊÕ¹³ ³ÏR÷°Ù’uÌLnEB`´®µÚò§ÎÖx `äø=U®î¾hž¾^YiLÎ œJcâãÇÞVÚø“œò:±IMgfü‡F›˜X10k4i •°ª9¢×Ë—öÖÀ—¨iµwcqïhònŒ}¶Œÿ:$“Њ”3Zš¯QjÊ:Ò˜ 1çÍ‘µË™œÉ ÖË zéæ1„Ø¿´·îàK}¾Ó¦r4fq÷Žy]ñ¯À©{G¹™®uD!“?Zê¯Q.)7êHcZMc0¸Ý2Z \(õÊ RùiâoÝÂ-Æ`М`ðù hª3e¿³ÃwcŠ•³@MŒìuÏ)R[xÚF^˜÷ PD´Îç°|kÓ´$iÌ2;c3î&Œll(•§dê3³üò—¥1b{í.øŠÖ×mÃÒ Ó,Ñ­uO¹cY¯fÓ˜ü¸ZSE[†dîÊþݧÎÉhäºû¤KXvŒÅFˆýK{kháÕ9Úz&GxîÚt*içÞܵ¹xµ«=È­%ýÔض~¦Ít”·• ¯Öz¡É-u×ÈÞ¿ÕŽ:Ò˜VÓt-Î5µ"OÊ™µä§9¹åȰÃPƒ°‚t4S/¾DžÊdÚ;ï¢f-礜`d©{¾Q™½…ñ·X‚ñÞ?ü1‰i¥-– »ð'ó‚4f™f_±ÌV?Îí|?„9å/Gc´/ä¢ ÞBcÞRw›§2ûze5*ËY«¥1Uµ•;oöµôðZ†xPo}6éµ,TÂÔ1!©_Ú[`ÚÄÁ£²¶íú.J«½vû÷a•ºÛÇ¿}¦£´ègÌVÜ Ž{*Ë-u×ÈÒþuŒ:Ò˜ïæ«¨"— ›§1DâòÅ( ¶s„p,‰”mHcˆDNuÎA"i ‘4†H$’ÆÆ‰¤1DbØm4l©ÙÄœ±D$R¶i!‰u i ‘H$‰DÒ˜ZhÌwüñÇ_Í?Ò"‘H$‰¤1Ó"‘¸(‹B?HmðFO$‰D"‘4†4†H$áµo¶‘ØêKü9á’¹ª°vDÒ"‘¸À4›sÑ6'&Ãr÷ˆßª‹¾%ûõZµž]>LíA Ïw´/ É_ióý:ÊjíªòªcÕ×DÒ"‘Ø(Éß$,) èÞꜨÙÃÅ.z½V­g—S{Ðóí‹BcêkùêÇB㧪¼ê(35<¤1D"qáiŒDÞ>ÑQ´%¢°‹ }púη§ˆï‹·ˆŒèàñ-ak°ùÅÖ)Ä IZb'ëòì¬ÿè{;ë“Ë–ÄöÞ>¹úÕÖÑåQ|ôä㻳âµÛ…-<9Ü(Z—ý¸È©­j¯/bQ#*3jŠxᖸΩ)XJªW¼gNßï¡õÓ:¿^Äb^n¼ûŒkIˆ˜ˆq¾×¿ùÉ^_~‘ïNýÄŒÛÈŒ“¸à.b½ž/UöZV!;q‘Ô_øfûDÇn÷#©O~YÄ;Ç“ÔÆ[É>#,=Rn]²·Œ…FÆó*G9ОˆO4ûã7ÞžLÓ²ÂW[6"i ‘Hl©6BçÉßÿЩÝH*›\(…ý#ù­ÅðO €Š`SÇs,Up€mUS#—‚ˆhuИ‹k?ëŒPž½þv;ØöNîˆh˜“W¼¾H„ˆ2Ž8AˆÁ—;B¹§¦`)U¨^ñž…`|G›¿ýÁñYN½ˆqì_»Ñ÷†/_íöð㇠ºÍ!c¦ëÔ3$'GcWayö*d£1"ˆ£$Nü•'£Í/Ÿ;>Ãs¡y»Ô-³³þãgwÖuî£Mqg’¿N¦ÎÓÔIY—¬-“jTV­6FÕû—e,i’\n…§6†4†H$®„Q6QÙ0†÷ÂçîB0°yOÛìc[]H?€Mëèɇ¯º|}hõÑ­{µÓü|t3/¯x}õzxKRÐØMeüÀ‚ö,¥*Gc0fÊ•Š˜Š±øð¤7|åÅnoÿèöhÿHÏ 7ô†×®õ†~ï3Î?‰O¥1–qe3^š¾ YhŒ~"úä´Ú k©ûòü:V®„¡V²ÏˆÔ±¯Kö–™/Ñ4Oëüe„÷†¤1¤1¤1D"iÌÄ‚~¸%¾˜:t{r¾ Sø¹»¯‡)·ÕiA9N”§•¿.úÒbZ–z[@×÷àôîSWßnO΃}„X6ÅIKÁRªr4F™_/bq‚îDRÑ}ÁlLNýG›¢]¼¸†µBLk¶¸ýDOáoë¸c§1–UÈBc0gC·e@´œ)©äh¿W“ºN–›©=b_—ì-3_㧃öÆŒ4†4fIhLûVÇOµ›þ‹—ÆŸ}öÇÇüóÈYçî²Ýâܧ¿Uј ¸³ä  eK¿SOõ,›œqVZqÚ'¡gå¢ñ¤¦Ð ɯÑ‚Î@H Ìp—Ì™œ‰ÉP,mé÷ î! §ôÙ?L§š¡1öU¨ mŒ¬W…6Æ,ÅMË­“åfDjT§)Z¦m4Gfú†LÎ O$1 DüâNî°—íŽÿìBv;½ ØO…Ic¸(Ķ0†˜îDv±eÇÜÁ†áoÛz丿•íVo'94ÆmÕ¸¦,wTÜUW1*p_Φ1¨),×Ã9“orEšÈ×mç± ¯¡Vµ×wüèë×Å:_VBœïâ4]›·a{·¤¥`7ýzÙ{6¿^D ÂÌ™zÞ}ê´q¦¾'ã÷ þpãÑ3¸ëѺgsF{ØA…u*{7¦¨éäÝŒR™é¸òŽo@3ôFê:é·’}F¤öHʺdm™Ô½>4*‹ÿ<å Mè¥3Æ“–O]áCe#’Ƙh Yè2Ÿþ²*Ñ9ÇI¨ŸfŒ’Æ«¢1rÞ¶×Dz®­Ø0$[63è[`>¡Ïçü‘ƒ4aí0‡Æhóí5Èii@™f[” ßÃÀF_8öiŒöfƒZckÌiU{}Ñn0™Ðµv¦g¯Ìöì¥òë•Ú³ùõ"ÆÑÜCŸPˆÑÎk™üöúo}æ¼–…zæRÚo•Ö‹úó=g´Ï¢d±U(ÝS™ˆ¶®^²F…=•A–ÜQ»õóžÊìëd¨•ì3ÂÞ#©ë’½eì{}|Tø~Æâ’ ê‹V…¿2_þ±¯ð¡²Icf DLT /ÿ›nï¥KÎÒ1]Ü‘çvÇuhcšt¥j§1©ns-n -å'Y³¸¨ *´¸Æ¨D"‘ØN„Lâ»ÿ&Rb™Á7>ê4 ?N©­UGp0é‘#—ƤÚsçÓ˜º]©¦Ò˜Twq·†öòû­„ñ-DË6Tl“Õ•Õ˜¸\;—›ºGà²Åµüy‡n“úÚ9µËJcš ~m§1åVÑjKoûª’?†í+y“{VU­]nf•[yhTF$[Acò¤Zh „€Ð­lrúí´­ºØ&Ë?ÆäÔkZx\IÍ~kÅ’»ýn R€XŒ³C§Í˜}ŧkn»!º¸J‡>ã.ìõFêñªÆŒ ѿھóHiUSïÆT˜¸\;çÏ ”Ü××ÅçQµíœZ‹e¥1M¿¶Ó˜r«h}¥ õµ}UÉÃö•¼É=«ªÖ¶Ï¬üÚ‘ÆðXK]¾¶3Íù–§Úñi/OÝ4¦l€ÔXÚ²çµrbíŸý”Ûò¿Nׯ¸ÜãÊ}{îvƒþÕ–Í0‡°÷µ3çí¹AáL¡äD³?Í€6ô Ç’Êm[-î‡ÄˆþÐWÀ\ªnSU`âÔvΟ°ÅGɵ6t7¾vUÕΩµXMSmðëºiL}¥õ[&uUÉÃö•¼É=«ªÖ®N3»vKKcêsV¸ w(2LüÌg¹ZØÝYÖi‡4f¾4&5@ª%m(àì4KÜ‚…,qËm åêë¿Ê²Ž ‘(9¶-ŽÛsO™)Òz8qÇVgY™5ºøQ.ܰ3EsÛ§üüûE~/” ª[˜ÃánŒ¾‚–tmXâ lvñzÚ¨k:0qz;çÎ }”ઠA’“lwZ•ÕÓÎiµÈ§1¡¾Fîþó6ИªÆ˜=œwÎ*Zm¨îxËØW•ü1l_ɛܳR[;uœÛîÆ¤Õn…´1U9+¬Ã¥`ûÝjï¡ËÙú˪Dê—ŽÓDÀy¶3iŒMðš Õ‚6pvÒ/ŠçEDó_”£²ÔzYÂãêò#eüÕÎúyÿ6–ÜS ?Îøíâæ¤‘@aJ¡Ã;oZ8Zzë³IoZ¡‘ŸTWûÉÁ7Ú¢­ŠçÚïžØB£®ÉÀÄåÚ9g^hSík"Žþ¾îv¶×"ŸÆÄûZ‹eí¡1U1ûz•¿ŠVªÛÒ2–U¥ª1l_ɛܳì­:ÎC7‘òWÒ˜—|¡‰šãz¯Ž4S]ÆÛ:äH®ùî¬ã›r7ìî,ëÐÆ4ã¤2”{ªÓX’Äáцðz§£’ûq…í_"w¸d£g4hß0tT1Ñtm%Fžbr)å‡Ñ J—“·æ¬!\íaaí k›Ú’ñÈ6.…œOÂ_Æòj²Í›l±xÊÍΙûUÍ)K¢ßu[ážjÚ6n좉)NÀðýáFÑø+_¬O ٬ˠå=Ý2hÿÝÎôx𨵎Y7_Ó̼°@ûnm:¬KØõ0ª«¥¤1¤1D"iŒ) hß6l ؆'7'¹›ähŒ,ñؤÝ!y"[Âñž;3ë—:w?¾P*ÁÖñKßÃ=+äWˆ)Tx;L áj [ÝùŸ½Ícý A·ÂôXštg’–W“mÞd‹YÎbë œ3÷«˜SeFBUÚ˜ªÚ6Nc ¶â¯â¾+‹ Ž0ìõo|°ÛÁ8Ÿ¼›²Ù/ƒß2ˆìªã íµ 4¦îya€ê}{Pîu©oý'!!—ܨ,4‡Æ8WÔòó·sMctšú4K{ „¸lÿn\9ÏŸ‘§Ò}ÞmÞÕ«5 ع³·BP°‡pµ„…­ŠÆØ[2>ö,>Sój²Í›l1‹SwPàœ¹Ÿ?§Ê„ªhLUm§1hÉrB<îK¸ñÿÑÍiµ¶„löËà·Œç §‹ŠöÒ¥n4©=4¦îya€ê}íÅ”žK«¥”mHcˆDÒ˜„0 94Æ©Úe›œ¶”4ÛX(M,ëzó| ×äþYc93)Î"µ__-R§†pµ{ð˧1ö–ŒËHHÍ«É6o²ÅÊYÆW8gîçÏ©²#¡®»1åÚ6Õg¹Òjá>?ds8”³¤ 'tNÔ„3€ªüÙV5/,Ðã; ŒÓŸL'B9£”² iÌÜ.Ï-ÇÅhârÐ{Ð_ÿ9ê»1³Îho¬Ú˜âKXƒ,é“clÕÍИÔ®MÒ{KÆÆžk‡¸ÁFj^M¶y“-–/Ää×.gîçÏ©²#¡ “È8ŸÆÀ¸ÎE6“çU…l=Ç¢oÁ@´ýWü«öè¡–Gp[ÌΗ.MkIÒ˜VÓtäÖÑWdb¸ËLE ­¾\eCbCœ±‡Í·N¸‘­6ßîr°Üdp³&t7¦PôϺ3ýKm$à¶ •’SLwu²n“ÂÕ¾ù!Sã臵Mió1j'B'® ão!FLÆÚJË«É6o²ÅÂ)78gîW1§Ê«×LÛVMc ‰ë¤#rÒVù!›ã-ƒ\œ3hȧË~©kN“4&^Ø ‡îŒi§Ž|J{úZ œQJÙ¦F£OXáycòüUÎðýÃ[ËpQ)ŸÆ,¢ÓFâ2•Y€æÓoˆ;Ú‡•ÓÒH¾zü;ÿE¢Ðwþ‹ds {*›ý%Œ1´7$­#ª›Æ¤†pµoc~ÈÔ8úamS[r–×)˜aHŸ"—õ§²Ùy5ÙæÍ·X(åf‚çÌýªæTúH° pÍ´mµ4Fû­BûûÆH©!›ý2„ZÆQ”×nôÇZX•Ö¾æ4Icòç…=ºßûðoÖž¿ í"ƶv?JIcj¡1úÌ@w˜ílØê&¯>çž'w9Ž&S#Ü7ã^È+þÍ£6A9>‹] 'Ææbûdk‰ŒM”ƒÐ§Yt‰Dâ• 1€¹.Ea£{°±»É«Û¹gÜÉ]¾£ÉTÓŒÛM"iL}–8à€Òs§Vþ :1U숯®D"‘4Æ¢³ø$W䊿(µ™ˆ ¬ !Ф:Ǭ۹gÜÉ]µŽ&-4¦y·›DÒ˜j£Qô–×´éŽ!,÷ˆD"qYûx3>Áâá‰ãf]DâJ{*ƒÓÕéR ã(»›¼&{†Üùå8šL¥1͸$’ƉD"‘H$’ÆÌŒSñî3…»Æ4ç˜M:÷œ¦ý¨ÒÑd>©Ã½ ‘4†H$‰D"qåh ’Þë¿õÙ^w9&=•‰ .ÜãŠ|ªsÌ&{ú´!ßÑdµ4¦*§¢DÒ˜ö ®û“–9öˆD"‘²Í.Ã- .ïê¸10Ç’·½¡o jw“׌sÏ“»G“ÕÒ˜ªÜnIcÚsÕ’ J´F—‚Ûƒ‹Û;ío["‘H¤l3g£2"‘H“uŽ+D+ŽoP¶!XmûEíÅíÒ"‘H$a'‰¤130øÕ’‹úÖd´!XmûEíÅíÒ"‘H$a'‰ Cc<æ‘:n1Œ'}!¯ª¬vm âP!•6¤„‹‹ÔZä´ƒ_fhð¥v%‚²¹¨8³cºÏ«R¿D^‡Ò0[…™®vÕÚžÞ™4-ž.Ù2öˆD"‘HC$çLc˜Ò÷û‡+Î:°¬òª Éj¡1ˆï¤Ýä×"'…P™QB ¢WZÉr®?ß^H ¡‹'¬3B¾{ýìv@ Z{z'%\r™±G$‰DÒ"‘8£=ïÁ›„׸ÉMU!Yã4çßë‡ÐrÄݦÖ"'…øy?j ÁžÛß ©!t.¨Ð½ÀY žÃ!~{zÇ.¹ÜØ#‰D"i ‘Hœ›Q_ç÷ϵ_\›t_nõžgɧ10DzŸ…Ûk‘“Bü9Jë´"iÂú¼z!5„n<÷PðyõŽ=\rÎØ#‰DâJÓ˜&/V–s‹L$®ÂÄê ¯]ë q!U€¶‡dÓˆÎ0B°Úªj‘“B¨Ì¨õ•îå_^éâ†I·÷ҥɛ*íì…Ôº~îr#ÈiK,´¤ÉÞ±‡K®jì‰D"qiÌóÏz²jQmt"qÑÊœèY\CÇ­€r´=$«ån Ê![ÇJÊ©EN ñÛ¸+r|†»Rf­Çhg/¤†Ðu¹Èwù^îÆ |góî{¸ä´±ó68ZàJE$‰K«‰Ø©EU®NËј68Z%rªWKcp> íöþ„'åÌ™´èÉj÷T&'ââ¥Jáù0Dº,_ºXò9^»Jw;Ú‰ÒW¯Õ~ËØ[`–Ë{ùþâÚÆÏ:#ä"Žà7î_–ˆXë‡EÊp[’Ú¶þÖêñ8ቷvèoóÛûúà´øõBŽha?M?|³=ÄÛ>‘@ψŸ†/‘2¢™U•Wê¼°†Î½“3«0ØÆ“ªæ Ú*ôÜ>º,¥µÏ üÕnç·§­“(ÊVn•N–Ï MΑ0¯‘°4†H$ÖÔÆ„ðñƒÏþøø@þá™0‡Æ@ Çҿ׿ñÁn Ú¦|)›"DþÛŒ<m~ùÜñž‹0'Û§N³é‹ùåLmx_`ëE:ûG·ÿ^&Ô¢7|åÅn¥•÷†[ƒÍ/¶ù4&õ¬ÑÒÚþßV€Ø>* Ðèöw⎔aZšçûÚ’¾„¨qs2eñéÓ˜ry•›ñÀÐù£_BDýSýW£Íßü­pœSåÔÏqëÕ2ºRJkˆã䇗@ŸJO]\ËÓ ¦xë[.49G¼FÂ’Ó˜ïøã¿š¤1>jŸ„ذa”u%ržÆè²Á.ÙptsR4Œ©·Ù,'…³ý# °¥…BúZ¼2ZZ Þ2ZÇ¢Oaâå\§ˆðÍ{^4ÆÞÚzƒÏ@l¾€…Þ´„o¶§à\ù£Î»òјry•›ñÀÐù£ëž›Yç…¿©aþÔÏí£Ë^Zû¼@FBkŠçÝÞK—º=PŽªVlËØˆ÷x~hrŽ„6Œ„%¤1D"qQ…廃 R”ï[ƒâ´øâ6úR—Ùò%0dÇŒ_¿µ—3µR¶É‚ÆLz€œ?‰·¶ÿ·U ¶ DA»'û0­Iõ´O}zM+ítS.¯jç…öá™3zQrË úæ }tÙK›:/ÐkКâ\ßéÇrÝT56t(ðœÐä ó ¤1D"‘4¦ö+þˆÈÔ^»ÖÂtÁâÝBc`r€çZÀ²|9ëüïöhÚùŸÆØ[ ~kÛ:hL¼µ'µ¹ˆ-¹Ÿ†RúœÕ^#{ :„€Ö˜á¯BwcÊå•?/Bã$gôBÿc1 ¬oÚG—½´©óë?Vè`ª”³>ç ¿ÇóC“s$4?HcˆD"iLÁ ÍbTæ„§bSÄòí‹AHêuw1º8žFc wÜövþè¬/}kì¢ü!klãô[&µê£1–¶ m½~½f‰J±ÖžfnQMbKîè 'ÖËݤ~÷…B¿åí)8áOÄ&”Ä]ž–›K~isò*;/bBmþèu=+¹ãŠ3Ò„9©Ï©fNóªg])¥M›¨s-ÜtÉ u·¬®ù#9nFX.49GBU#4†H$’ÆÔBcôåò¸)œcÁàAû8Â3@ÊXÜáJq Õ§1Ú? Òôm÷í_:¿4"Ü;ß8²Ù„|ãø§ß2©-P±´mhëõë§1ñÖým~b{_è­ôaL‚ï-g½öÐbºFNK#k1•L-­}^Ä…ÚªF¯žY¨ʶ³òOU~†žÛG—½´öyá(Êk7úã8ýÓ7‘,m›?’}ý[NhrŽ„ªFi ‘H$aÔ Æ:X¡È‹Ò×ÚDçølöbFöX„NCkB”áäš-¶Ê#4†H$’ÆP\¦`G37„Ãbh-`¦ÓŠA‹¯1#YVĹ¾Åó\‹w,ârÒ"‘H³´×™ï.ö/‰MöËò庽 /®iôXnû,z udß@—È‘@CC$’ƉD"‘H$’ÆTy2$WM'RË~Ù\}—Éx#~Ž4†H$‰D"‘4&Ù+QBîÜö‰e°.sŽâ»ŽÒÆ;I—6$vûõ­O@O½Pm[‘ÆÆ‰D"‘H$YZ ¤•/7Ic¦yOêÇ…¡/IcHcx!žH$‰D"iL£4Ñà•~¯á›\G¸‘ö^€YâÛQÂsñnón)­Ýƒ8¢üÚ#><¦ã›Pi}±;T߀niC}!lkpõ«­ª9Oðuиz„÷tÔeCd_?Mw”Qì5]\£²fhŒEKf×ÝÙ¿LÕ[ÆG ÆÒÙ?º=ÚëcléíöD>>ÎÓŠ@yôDÄA<Ç ‚íÏ,ä‚u`5·®T};h0V Œ ´¼eÖÏA{ Ò±÷xJĆ2zxoŒ¢½þv;·h«Ô *‚R¯áÙ{¡ªJ$‰+AcpÒ†óu,”m»âïç¨u/¡eÛÈÊ×®õ†ïê£1ö6ÄI¾ÔÚlNÕÒ˜ã³b;Ô꬚žÏb t\öš’ÆäkÉìº;û—©zËøÔ:Ì<‡ }ÆnnÕN;YG¾HÂ(tAŽ„¿t©ÛƒºÊÁ+íúv‘Z¾ÇÜÇñ‡ýإО…w±xÛ±œ^¯œ¸ÛãÆóG7'÷µxi±X¢wÛ{¡ªJ$‰+AcàDçmØ®@ô¯#‡h ~TKc2,èZߢ…3§u)Ä8\Ê÷iŒ_ÚcoC½E9'Î"ðÉÙ§3Ò¨ŠÆ 5ð%ÎQlþÖë箤`¯)iL¾–Ì®»KÕòÙõ–)f™™¬ét“¯'ôç&Ò.Gî”}u¯¡§êÛõá…ÓwM£ízòÔ/§Û,§‡­¨–ÒâKùS{!†‰Dâ’ИÐKª>Ó‚Z\[÷:CŽ¢Ä,\¦ÄOÛ_ârÓ»–Ì®»KýÒ®·¬ƒÆäë ÃG*R#h¥°žTå¼~qÑ®AÕ7=Ð/N —–ô56! ¼ß_©=žjTfÏ®l…Ù!îÆ¸IÁ^Z×¶ò·¸Ð¯[RŸ¥jìí5B©rì ˆD"eÒ˜tšÑEèË 8ˆ«cTf×’Ùuw–/Sõ–õ•¥ê m4‚Ýk7úcž[§jPá«7<FVlçsL3…4ð¡þ²÷xŠn3m<ûZk|éÎÙKë<•ÁL¾GÊ;ëç=•Yz¡\üè^D"‘HC$rªs.B%Bùn‡­Ad¬"‘H$!9Õ9[Î)Ey#%"i ‘H$R¶!!Icˆ"LƒRÃÂWÍýô*{®#‰”mHcˆDNõÿþ’H$‰D"±ý¸r4†*ø¦Îå‚,âCÃÍ1ë;¯1lŸYßñÇüñÇü-ÔoÁhŒö‚où髱°ßÿmŽ:b =™Šðä\åŠkNÝË9&u”6>&uiCýè×·¾¯Æ‰D"‘H$®‚MJë´1×""BEµ›:Òl3 ¹ŽÍ׆5IcüÒ†úѯo}=NC$‰D"‘¸¢4Ñ'Ä/¾ ¥'.M]\çÐ9:¢ zƒöèå´19ij~úᳩ!zµÄ¡Óàï¹ Ú€Ž±pqmãg‘Žc€0gºµñ|·óæ{é‘B¥µGà¶´y¨´~?†êêqKêëÝ[ƒ«_m ƒ_’ƉD"‘H$®(qÁ¹$ò1ÄJ£2{›WKcìmˆ/á6€wcˆD"‘H$Ic²hÌy#«ÑfoxíZoãŸ|Oe©ijm:Âwª,K»=~@4 Ðù´íŠ¿Ÿ£Ö½„rŒ·yµ4ÆÞ†¸×„/µ6fo¤1D"‘H$‰¤1 Feî´¾+q™»ÉO‹4qîa.åÓ›œvƒaÜ)‚ÎÀ‰×’/j§1ÐEÀÅBµ½Œ”q/¦bZߢÊìmî—6‡ÆØÛP0çÄYîÕˆžÍ9 !‰D"‘H$™Acpñ†[Úü OÊ•å§ ì _y±ÛÃÉ=Dd&!ø¶²´[èQ^S¯u1Âs s™PôrˆÆìÝíõñWþ ¥Y7„ eD!e´ƒ3+œ7 ýSÛÜ/mImC˜ ¢„ X T‹Kcü6iOtb~{æ÷fµ½Öæh]D"‘H$!.-‚€xÀ˜ ®¥ATìžÜˆÕÎ,KÀY0 i!!!!‰D"i q©ÐiBDá.â_zÿâše,ë¦1–(C~PÒÒÒ"‘H$’ƉÄVÓ˜mLóAB5‚0‹=—(4Ÿª¿‡O9h‘¯‹Ý$Ï¡W´‡©u­â{¤rkaù²™ö õfjÝñ\r¿¸†ïqß/µF¤1D"‘H$!W‚ÆàKõßÖMcæ$TcüÚþ¸77 x‚[I©·›_l t©ô 4­9Ä[”Ó¦¶pÞAXßëßø`·ƒÜÑ>ö/›lϸ[y{Ýў)v£NzÁ^#¿<É¡qN$‰ÄÅB»lCC$®ùÎûÙïÆÀ;\™WP išœÀ‘†:î!eýðq‡Ý“4OBІÍíbaj}¢/v…s çFÂòe“íiÑ~Xê®É ÔQz¡7´×(Tžïøã?þø[ði ‘H“üeÝÚ˜y ô&÷åsÎá5<Ë!8Ȇ<´h›&-¡|íajãÞuË[¾l²=C´!¿î('üûÙkD£2"‘H¤lCS‹uÛ¶X^ÏåTo™WPq—fÛ'rWÄ™œÉ=þX40!C/oj˜Z?M«´[pË—M¶ç4·ò¹uwÚi´¼½F\CˆD"‘²M«iŒÎq¡¤Ü–ÚQf¯}ãlÒki §ú¢Ð˜ú‚„B¶‡^u™peÿîÓý£I¢%?}O&4 RÃÔºäNžàÆ‹3r+†åË&ƒ®ú½Y¶îšÂqLÈ${¸†‰D"e›…¡1¸6Š@¢¿¬J¤ö7]ßɬ=Mûß’Æ—•ÆÔ$O|ŸW³´¸2^ˆÚÎk™üöúo}6éµ,4 ìajýà³øWØC«_üËf‚®†z3µîÈoá¯Ìo–q !‰DÊ6 @c°™ÁfÝÿ¦Û{é’³«NµDÇs;›xwB‰ís·óæ{ýqÚí¥Gç ûòrnUé,•S}Õî§a$ûî’1B cã‰D"‘²Í’Ðü­6]ÐVÝ8YœôÓKcB[q§Œb@‚:â9ºÁî„tq¥IcrÆQÚ„‰4†H$‰DÒ˜9Ó˜|8§œ…óSçULR/•¶Æø—»»ÒEw–J$YnĉßôKý’H$‰DÊ6­¦10g‚!nh0 »˜Pýpûä…o¶ORiL¸„ˆnuBJg©œê¤1D"‘H$IcZDc@] "#·¾-3‹$ЗGÛ¦‰Ó»R:KåT'!‰D"‘HÓ"SxÅé 7©ÎŒ*$ƒöà¾nh ¤…Æàoµ ×yÑ»ÒEw–šê6—HC$‰D"‘²ÍÐü¦\:,]H,Þ?º=ÚëCÔ†öF_ Óü-È î®Ì‹Æ¤ºU]\g©©ns‰MÒ^:'¶ß‘:Öj8)ÁµÜõ%Ö½jYFT“‘ârÜ£3ÄB{ÆU3-¹¸Ne–„ƉÄ:¦úóO\ïvšÜ>),’Æäàúáú¿ˆËx„øýp“õåX]>qÓQ9Q³HcêëeÿPÕbNCCC$.¡6ÆøÒ²ÌÕæu¾¡c‰‹Ec|=v“õåX]>ã(¿—IcÚIcêÍIcHc¸¼‰ Icâ¡ZC‹,SÂ(Q{öƒ¯¼r wNš.JRZøWK˜ÚZÂÂjχ£ÍâÎ3.®]z_ Z¾~½lùñ\ÌkÝ÷’£˜ËJ (˜Í wäè§p¸QäˆSj=fB=•ºWßăH”éH`bÑJ› ^:l1œòW5ò‡ësŒ‚>Õ7̆ýà°èAwË7N7Lž;?™ic,>BR¿´·î¾Â匘~9£èá,4¢r´1ÍÔhÕ^ûûW(ˆy<ûžbŸÑ–µ+ß³nþø¯¶ÇIcˆDbKiL~PøÄÓAZáËN‡^µoÉùiº”SÿÆêÊ%5|-¶"l‡Ú¹¼¿¥–òÒwÿpGNˆÓñܨ ”Ÿ;Ô}¯ãƒÝR@ýžÊÝ‹m-à6Ty‚Òâù4ÓG«6ÆÞ†ù4¦î0Çýñk7úcxòĈYè#ݧHÓ¿ý"„·{©c,>Bì_Ú[å„8åÇO«CSŽÆ4Y£U x¯IÝSl;B¹µ+ÆT5þ«íqÒ"‘ØRÕê/²ÚÅ9–r,y9jôü4ˇ ×=ÈÒ¾Vû¥ß¿üòk ÊŒç8³×!§ù‰Xœ»”?º9­÷« Ý«5T΋a¾8^Ψ,Þ†ù4¦î0ÇèÝ ¨BY÷\_K]ðè"œt!¬„wsË‹û—öÖ€[Wžâl»m4¦É­ZÀë|“º§¤î†)kW©jüWÛã¤1D"qaîÆÄiŒšµ»sç9pöòZGšU…µÍåÂׂÀ¸³½éjNù5™L3FcB-€‘ã÷T~è^¤€ Fè·©4ÆÞ†u{¤´·U(ì2NyØ$bŒµàø³ëf&-¡V5GôÚbùÒÞø5mænL9ÓdV-àuUwcì{ŠeF—]»ÒhLUã¿Ú'Y€KWmv>Ko9¤1m£1ç¬F›8 †*<<§¦YUøW‹Ðœ¾ßþ٠/]:oo[þ|£…fló~îÕ†îv¢)z†rÚ˜Ô6l˜c 3b³í!Ã:*W,s$dè5,wŒù#Äþ¥½5`Í/õi4 ÚCcš¬Ñª¼®ãŠ|OIÝ Ë­]–píUÿj{|¥iŒžlmv»X4†Ä†4f^4 ±bŠE*õr4&?Íüð¯v¡ÙÖÝ„‘ ¥rë¡lú”+¿üeiŒXK»ë°rŸÁmÃÒ Óì¶sC÷N³//Æ@ÎݘÔ6l˜ãÉh`.H´sràDù…î>é–c±bÿÒÞZÔsn‘…ž‰žÁ]¼ÖõJ ²\©¯F xÚ¿ü æq£2ûžbÛÒÖ®ráÚóGK=NmÌ£jŬ:œ·.¡PÒ˜yÑ,…Ð*h3<)gT–Ÿf¹ð¯åhŒ=,,üäè+ÚúÜΗMsÊ_ŽÆhÏ?ÈE¼…„•œÐ½“Þ~dSwÞ~¤5ÂÞ~¬Feö6l˜ãÉÓÙóÁ£×2ÿ½õ٤ײP SÇX|„¤~io ˜KiOP^ýz¥Y®ŠÆÔW#¼í_~óø cßSì3Ú¾vå„kÏ-uô8iL)ç6än²7ŽíÑÆ4ã”Ø~C$.îÁ q±FÈ|ÇœûDâ2É6 LcR†ÜMBAVŸÇöИºÝ€Icˆ¤1DŽ6Œ%ÛÄ͉D"iÌÜhLªCػɺÝ8¶‡ÆÔí”HC\tÄ:€Ã¶1g„p,‰DÒ˜Š=)ù[·ÇöИªÜ€râ‘Æ‰D"‘H$’ÆÌ™ÆÔíÆqQhL“.öˆ¤1D"‘H$)ÛÆdјªÜØ-:iÒÅq±h ü ‘܉D"‘H$i©ÊÝ¢Ó˜&]ì‹ÆðÚ7ÛŠHlÛå~FNãjC¤lÓ:C$«êx’sѶɀ³‹Õ#~«.º`á׋Au—S{ÖÛó‹BcòWà|SGB­]_}Ë„åhÇÁ+WQÒ"‘S½äTÏ)š 8»èç ‹Ncüò3¨î²bjφBLÎk, ©¯5æ« Ÿº{i WQÒ"‘S=yªëP§0”ˆÂ.Ž2ÂÃÁ\oaN §ñmik°ùÅÖ)X -¡W¡hûDBÐ"²ʃïï¨*j'‡E ÀWa|kÆ[µÉP³ö,¥ Õ+5”0Cè6˜/âßµ0Ä&¸lñC@¢¿à@ßïYK0èªfA-«“Ƹë/|³}¢MÇýë“_fÕx’ZÂx+ÙgJNxîxì-c¡‘ñ¼æKcRWËjW¶ÐÈÄÜDjh ®9T5SHc’i ‘H¬«ÕÆ`i†G>· bá–e4Döäl¨–eÚzΰøjjäRQ¬sqmãgʳ׿ñÁnÛBÁæäUw¨ÙÔ,¥ ÕËJ7ëB·yì_»Ñ÷†âšÅÅC ñŒCÝ¿°èžÕ3Ñ :gÌûf¯N6#‚8JÒ¿ñ¶ˆÔòd´ùåsÇgx.¢änuGËàv¨ÎÝ£YnýL¿©=’²^Y[&U4o›6¦ÜjYíÊæ·ÕãŸýññÿoÑãz\åÏÒ˜óüñWó¯£2,XôÃçîB0°8NÛÔˇ^uξåçûC«Æè–ÜNóóÑͼ¼ê5›š‚¥TåhŒ>ïdÝy!F2Dp<é _y±ÛÛ?º=Ú?Ò3 ǽáµk½¡ß³©Á sfAŠAÎôÕÉBcôÐ'EC´Ú +§ûòüúV®„á0Ö™RUxîø¼Ž·L;iŒå‡)·ZV»²ùm¥}ä‚F‚噮ů!iÌ#z©"qQˆ{烊.¶aò?w÷õ0ù^ò°àäxÚ¦U }i1-K½Pm¨ÙÔì¾ SiŒJ˜!t›Gœ ;‘TÄ#ÃÀi¾h/®ae³Ÿ­¿gSƒAçÌ‚x,«“…Æ`.‡D:-gbŠrVá/uý,7Sª Ïíio™Eׯ䝖ù+[¨­00+ ‹k HÕŽCÒÒ"qIhÌñY¡ÎÖ玳ÎÝe™ÆùNy«¢1Ú¹9lúµ!GúݘóÄ-â—-[HŽ—j65…fh CèΘ᎙39“³ÞþX40ÚlÒïÙÔ`ÐuÐûêT…6FÖ±BãLìâBåÖÏr3¥ªðÜéÚ˜¢eÆä¯–ù+›Åù )…á¬xniã4†4†H\HÁTÁ]v,–9جä ⎿,êeÝý­,èZÉ¡1nKÆud¹£â®´ŠM¿ûr6AMaì§\Óį"Mäë¶íØÅÖP«6j65»Xé×ËÞ³ ¡;_„!™3½ûÔ4h£M}O&nèb 3 ÂŽ+¬«SÙ»1EM'ïÆ`ôÊ €+ïøb«>ÚH]?ýV²Ï”ªÂsOë)kË¤Šæ¡Q\üçuÓ˜üÕ2e Í57®Šæ|“:IcHcˆÄ…¤1r®¶×ÇÖ¢­ÕÐ#ä 4ô-POës8YGš0uÀrœzeÓÞœ–”iöVRá{§š/.û4F{ÔA­íÖÉ¡Vm2Ô¬={©üz¥ö,CèÎ ÝÉ=ô …øâ¼–Éo¯ÿÖgÎkY¨gíÁ ógÁ,J[Ò=•É¡†«—¬]aOe8þÜQ»õóžÊìëg¨•ì3%?¯ªî×¥ µLtœ»F¹{PŸ€žêɾڶ"!!‰D"‘HS#ñ…WçÌNâjŸÙp™#˜æ„ˆj3™æÝ|z[ùn.ó[•4†4†H$‰´!Icþ¿ÇúwŸq±#⢤ o'±ŠáËäÇù]x\ÿè.h(¾ÑÏ‘»øMO÷nª=Ú±œ’ˆRíMžãã¥õÛJ¢gtFúKW µ*âlÀã8Ê¿ãÚû»nÿ­´?thø²spúη§ð‰ŽZ lˆ“৉çîʸ|ïûª·Ô”4¦á2-¾t°Ê˜¿>Ô=ŠÊEØXôV]¬ƒ4fÕÖÒEœ•+Dcð:M¿ aæ±Aëv;…Ðé/jˆª Ñîd÷‹qšOc\ˆ"y®ƒâ¡ êÖÆXh Üκ(I×.hãiÎ T‹¹.QiOî€2‰(ïʺ¢K¥Û_hçùö¯žÆèXïŽØ Ò­”ÖOÓG“¿B¤vMeí5õ[ #94ÎëÆœ©Î³FÖ‹X-6i)°:S}–í\1¸’¬Z Æ,ùÎûÙîÆÈº‚øÙÌщQŠ'©-4Æ×'øÂý|i Ìêt¤ÛxLñji \ТõàWcgTĈu{>ÊoÝFeèqLïPM59n 6¿ØH¼ÛÞÐ^ÓP{~×ø/gª[ô{©º¸| gµy]Dj‰·­£,ãI¹šú¯×dŠ¨Û–¨Øº¾‡…wÛB«Š£ôò 渥 xëžœ/ZCG’Îi1_S -1Zx7à`eÆ:ïÚ¥ÿÛ•VJXUÛZÚ0¾Þ6£ÿ¯C`J›þÌ-¡Vµ¯cUiõÓלÐ\‹õµ=¯ü~ µ ÷ˆj÷ˆå›•+JcR»‹!_Ô bjÃ3 ±Ü™/Ñši‡­ÞBC¥EŠ:hÌÁéݧ®U»=‰×á# ¾Äôhæn SŒnOB"by ×ô|î(?âØkÚó†rSݮ߳k¨ò5œuä…aQF/ëÚ6ó7y&5÷”DYPNgÄ(OF›_>w|†ç".L£ ~ÊôQÓ½þv;±(ÿä—bR‹òã­¥ غ@Ú}Í'¾¬£Å0‹ñýþÑí¿—õ’#†nåÄqŽô!‹¿æ ´X!íë󬶵öc|½mFÿ_­ÀTnnêˆÃ¸œÑâ·jªBuZýx¦Í÷¸ Ï+¿_üßԶ呺â-Ó¬$1u!$DM§“ñ5pn§)6u ÄÐݘvИ"/­{ å(ÃWb™_»Öj·uЧã’ö-yN¤R/õé2…jiÌñY±Èê…fVMÏçŽ;<Ølì5]tc×ïÙ5TùÎ:òB­ýq’_ÓrºPe&E+è™±‰¦Î X»•í£›þ­?·2ÛË€•í k:‚QG‹i úÎ_É‘¶a-Tl@oãŽ'^ºÔíA-·>ûmkoÃø*ÔŒþ¿¬_Ðó?Œ¢rsSÀüÑâ·jªB•Zýp¦Î÷¸Ï+¿_BÈ=¢¾=b™f%iL‚ð µ/šÓiÚ-ˆËò ÎÒÜus9½s· Á6 šT-AÊØns‚Bߢʜ֥ X}ã—6‡Æà†Î3 ñ‰Ò›=J¨>çÄYDÑ8enU4­/q¾‚’`Áõ—$?wM‘‚½¦‹Ncìú=»†*ÿh Ž¼ ¯³ôTjîvƒ‘*fŠ¥„ñúêù’_¡;ëý±”hª€ñ_w‹isÞÑË$q¥•Ù ¢…]ÀiQ¬—ƒ-mkoÃÔÔyÑû¹oþÜÌ-¡VµÛ)Ô§Õ×=˜:×RïÆè¼ªZ3ãz*îÕ®xË4+Ic’»Ðù“‰„2ða™ÐÖNKsþ|Ñ>´‘Cª½ „ãâTo²­2ÊæˆB鉲AàÆ"«íSñÄ_¬ýÒæÐ˜I·×2¬uÛ:umQ/, ÚXkÉì4&ôÓFƒ\Ðz( ¦ZÆ?ñByðþʾc5]cÑïÙ5Tù[TyéU"®Oͽ:mÌíQŠ6F§ 3Gæc+[j0œ¼ÜQ(ÓT‹¥ÑŒmíqó7§ ~ÛÚÛpùhLþÜÌ-–U7n§PŸV?Es~®åИªÖL r¨jÅ[¦YIÓj£¦ã³˜Ò° §ÅUZä«õHvk]"±n£2‹~Ï®¡Ê×pÖ‘—KS„\ÖD X²µèŸš{§in}[ù‚0§ÞÑúdèœHTô£í~N¬ h }hâßTÕbù4µÃ w2- €­m­m˜OcBúä›cPN`ÊŸ›ù£%dTf·S¨C«?­ÓæZ¨¯SÖ·Ü53dTÆ="gH­‹8+Ic*F\JðC÷€6ô†Ò=Ó6¿êÑiBdãתªŠ®C$æOõTýž]—¯á¬#/ç…¦"æ"Íõó^hì¹ÏZÎ×K—Áé*EìNõT¦u’è/ßf=Ô2©eÀÉ+ò Õå·X4BÃk7úc‹ðšÓ¶–6̧1¡Q¤ï*4ï)n挿US×±¦jõSלø\‹÷µ%¯ü~™¦§â‘»G¤ÎÖEœ•¤1#¦– nX,èžyqJ"±ýFeDFQXtÄ<‹^‹mK$‰Œ³0FeD"§:ç i̲¢s×1Û×Û–H$IcHcˆDÒb£ç˜vï[«ƒ0ýJ ˜Ë¶%‰DÒÒ"‘4†H$‰D"‘4†4qYŒÓq¹tˆHϸ‘Õ|k“ƉD"‘H$i”Æhí–Ÿ¾¸i ëˆìÑžh!)±VÄç†ÙWº¡8uÓô~ŽÁ†ÅƒGµ“G—6ÔVp á}Šg¼úFi ‘H$‰DÒ˜Vkcì.çâ4âÇW«+¨#ͺ'9Wz“xÒ×{n]RÃYæçÕ ™æ[}z[ùNë!¤1Ô4²Å˜G8‘H$Yƒ Bâç{ûO ¬ÇOÐE«³×‡@¯½¡#ö|9mLNš@„È„—nxìFjƒëÖâí†8ÜH9^\–Ý>¹úÕÖñP|yô¤géý¹‹×üôˆ¡ÚÙã[ú(TZ¿­.®mü¬3Ò_"(X¨UX ÷QÄ"ðC ¢ý·ÒþСáKÒ˜f4oò(‚3/"‘H$©Æ¸Ð<"XCLÄsÝ(Oà Ó KX7ÊL¥1ùiº”åD_pŠX¹"j—ôaæ„–±ûâÚn§Ãä×e† Z5™>bcŸ§1ñ^¨[c¡1©}4-_<˜]¡ñ¿”˜¸.ºW~Ð]*ÝþóGm̼„9 yÁ™‘H$’ÆÔHcü“l-Vú%Ì«t\U?Bs*ÉOsšéšˆ³ˆÒj¿e¿Y]A¼.GO$n1žø»C4&Þ m 1©}T-#W´³jìŒ Ò‚¸ÑîoÏÇS¯ƒÆ¸¸Å¥XÇîÅ?.‡ûe¥ä~Dj7*DÇÒ„>ðþe? çH£®œæ*G ×Z4©¥ ¡½vÒe/9ׯm¡}Ìäç•ß ¬W~½ˆD"‘4&ënLœÆh½‡lí[¼…¦be9£²œ4Ñ—ˆ,Ø®º½—¯v{8RiŒßnH¢L¼.¦µá™…ÆXnŒø_º¼ ¡Í«5*³÷Qµ4æàôîSתÝÞŸÝY÷_Âm@Ýwc@S!Ðì¬K´Vj2€ ˆ/йâÉhóËçŽÏðÜw¿QÁhÿèöß¿@ ô†¯¼Øíáoåß½áÖ`ó‹­Aªæª*-h|üÄ5öÒ†EÌ\=aœÆX4¥©Ç+6maÚ˜ÉÉ+¿X¯üz‰D"iLC4F£l£ÍÞðÚµÞP_ÏñT–š¦öئÅÇTŸW¡vsñ­…„ˆ ìt2~ú8»uÚÙDµPºSŽÆT­)òÒº—PŽñ>ª–Æ8—´¿¯ãštß,T_ê³Oˆ³ÕÒüÛõ\×HÄšIÁZ>Ð!Ý&ZÇ‚öñÇD+Ü¿JÕ\U¥ḦÑ^ÚPîùzÂ8±hJíhצޙœ¼ò{õʯ‘H$’ÆÔNc 4¸Ó÷bYÇ2]ޯ䧉¿Eš81Å…cˆ5AÓÒn¸ë‚M¢Ò´[—国þv;Î AÎË]Û–¡18‰Mª–Æ eÜ#rÎ }‹6*³÷‘_ÚƒJ8Ñ„ž $ʵ¹ô5J¨…ZçÄY„~ÑË9£ ªh ´’Œ6}‰rê·!=˜Ÿ‚Ocìš«ª´ ©wct§–6~/®œž0Nc,sÓŽvmaê˜ÉÉ+¿X¯üz‰D"iLí4z ˜»hs&<)gT–Ÿ&Æ6 y±E!ËI˜¥Ýœÿ1’¤G¦ —Ø´ôM §¥‘²••´Y‘ݪ[ÓwÆ~¤!e”Í …ñ Ê–ÚG~ish̤Ûk>tÛ:³Ÿ¢^ Ú6]kÉªÔÆ¸Þ›¦Ì:©½=š¦)Gcìš«|-h>É)m¹ZØuuл¶0uÌää•ß ¬W~½ˆD"‘4†ØRÔÛÞñÙl½P^€Q° X#_­G²ßyàTŸu7:"Mp+ 1¦IjçÛÍtènL9“ª¹ÊÑ‚Æõ„`/mܨ,UO×=¦Òô©ESš¢-L39yUÕ ¬—½^ö1C$‰¤1ĆŽ!Tamè eÕâf}è4!¢‹p6’¯eŒqª—õTQXˆ"åõ§2ùÒiŠÄX%䩬±k®ªÒ‚†ô„v`׳M»WFO×=–»·¦…W‹3‹¶Ð>fòóÊéÖ«Ü·"‘H$!ÖŽ›Ä)çÅ5½aŸüwªW¡í„Óg¶‘H$Ic(B‰¤1Ä@˜Yœˆ‰D"‘HCŠH$!‰D"‘H$!9ÕIcˆD"‘H$R¶!YqL ¾9¯4ç[žü°žùå!!‰D"‘HC³¨{n7C_›M91=$R£u¾váÛÿr¾Ä†4†H$‰D"‘4†4f4$BÑWô—U‰Ô¾àŽXQ~Z„{ëߒƬ©¶=‰DŽp"‘H$!iÝF'ȈáÓí½tigßX¨ˆÿÜ©%ž€ š†ØO ?®Cƒ'ˆo ó¯J;ë“N¢%nâl *B:ê ©´.h¡ËBM‘2¢bûåÄsç¨Z¾÷#*Xʹ4æøL¢]0ÿâ¡3WÓÜ‘HC$‰¤1¤1K»¢=ñoˆÈx‹€•ˆú2¼÷á«î›|úÛúhŒ ñöñÝ£':̆¦Ä´>¹ƒš pñ¤Ý_" [ªð ]ZÒDU—¼¦•S þêþe)­¦aör.·6Ƶɿ?ŽümòêÐàÍW+H$!‰D"iÌ m„Çgçak°ùÅÖ 7¼v­7ÄÛý#¸{ÃW^ìöìT¤4Æ×¨èäƒë"#¢9wjìŒDã8ñ9gðãG_ýä䎒0!Ôäèúå•{C{9Ic,Z¸P+!€#4] @D1/§ÉI3U³—Ó&vßŵKï_\“ñ枀Âa|úA07~€òn5Å_ù}ªçtÇ’f½=lŸ\ýjk€ZãKw $Ç Uåeo{o‰D"i iÌ’Ól¨Øb!pc…@3/¡\‹}Û'/|³}’JcÂ%„q÷©ä"uïöÄ|ÎGè£R…W©»½—¯v{2ìåDî0ê³—“4Æ¢…ó[éñƒÂŒM ܘZ«f ùi¦jörÚÄ®ñë_»Ñ÷†2ªñ DjŒOÐoý· B–Š«[yöú7>Øí M”­œžô%AË[RÀ—  "“) aóiL¹¼R[ÀÒ›ÜãˆD"‘4f%h ¶[l–Môm™Y$A6i<mþöÇgmÓÆÄiÌј̉P‚vÈ¿¡ïuè¸æ©åÜÈ0nÈØËIcÑÂù­¤G/ÚÂhÎHÈO3U³—Ó&vÚ_“hn÷nö&Êéôº…¦×Þ³ðdX˜¿ºu&Uω·©íéf\Q )—Wj Xz“{‘H$’Ƭ)‘ÞЙFÈÙ\,íÁÉ¢3½xþO[ Áßâw¾4füèë×ö :9õtç¦# ŒÚ˱Oß8B:d}zã—gÞN ”ìå µr×m¾jwcâ4FŸôë‘ J>-gT–“fªf/§Mì¿Ñæ—Ï9z†Qó'ŒIÔ㵎 ÷–êÏ×sZRpÚ`ii¥NcÊå•Ú–ÞäG$‰¤1+DcðolÞ“&Ó…39yÝëc;wbYaا1ø[ˆ8Sœѧæ0ßB©€Îl#62C¹ã|íƒt B Ñ'Ùø[˜¯à-ü•ùº¥œñÖ𽟑ƄÒPMz'ßSYjš©š½œ6IÕLbÔÁÀ ·G4a¾A”½„š,òåë9í)€ð;mLQ~üUènL¹¼ì-@C$‰¤1D"‘4fŠ˜¿~½ Ü¸ÉP†Æä§™ªÙËi“Tͤ#êNëbOis,}OÆV‚àfˆ#üÒzùzN{ ¸ÍâœHI sFüÒæäeoT×Á‰D"eÒ"‘S}ái ù  ÓŽ%ð¤œQY~š©š½œ6IÕLÂ5ˆ¯×u^ËÏç­Ï&½–Yò"GÔοM”ªçôkmOºbÝNK#«SÎÏËÞöÞŒë`‰D"‘² i ‘È©N$®D,§¥9OÞ †H$IcHcˆDÒ"iÌœËgÙИÁÜÆùrÇÊ jI$‰¤1¤1D"i q¥îžq{¤ å³ ˜ÂÌíâÞ —£ˆD"‘² i ‘X#êÈ?¤1D"‘H$‰¤1Ä…4/)ü± Öö{ý›Ÿìvêh+Iy¯?å%!‰D"‘HCÓ:Jÿ!@Û¼†—/^WKcÚMlĉª¸p¿Uâ’^†B¥…ç+Dé±·RF.Úm+i ‘H$‰DÒÒ˜VÓ˜¸ƒÚ¶i]ª¥1pÿÚ΋³ˆ›..Y{C§™‰•öàTâìv$šDj[!ßcYi ¯J³—QçÌHäH ’ÆÆÔNcpÞ¿}òÂ7Û'îb«éÛí¼ùžˆÎölç#*@Ç5Y?B‚¤ï"¸2K|†í“çÿ´}‚';ë?úÞÎzUÚ{.Ðf †ZÑS"§wGBÇyˆkc¶+=ÏáùNßùöàt²e$eäØ~£# [~Ú$ϲ¥Õ!.«pY‡Ö”È‘ÖNá54ÚCω«IcB’•}œ¬Î,žoMIcVŠÆE˜ëÂ¥É“Ñæ—ÏŸá¹EX Ѹ(E(7\I§àÂíILk <ÇªŠÆÄsntNH‹kCÔÂÅŽâ—Ú/ðt„p7&NcPÀPk#6<¨Î´8²°ºØáçý,­BøKuèèÚ¬÷k›Ö”HÓNá•£#!g'²—dY÷‹¶Õ”4fÉïÆˆ‰¼zkê2y–Ù!;DcDï1Ù¿ñ|]‡£:ŸÆÄs TDà†Dcg$š™ÃwŸ™Ô{ØÜ¹”É×™øÏ±\"f…_Zè^Ö…n6c!ùð½?~ùhL\Ïp‡è+Ðr¬Ž41¡ô/(7´—Hmpý| v£EïªSÈÑšÚõ™¾æ6>ß«-ŽZdF»'Ø€± uš(!Z²¾:ÚGZª.ÝÒn8²Ù>‘ôÒÄ÷8ª»—ã½Yà\cË(uÇpi½íñYP÷Ø>Ü(æ>þÊ_ýR׿ öìã!?/{ äXpTµÅÇI“ûÅä: %âIΊ>’Û¹®ï°ZÞ¿,ý é=ùðU'ïå[ÄØGiÌJkcðMè„‹²~›Jcìç[³žWIcâ¹àî ¦k·'ñ"|Þ+¦k}4¦Ûƒ ï—;¤‡ÑÚ6Gc$÷å¦1q=›?*îÐ×°As¨5fö±—Ÿ¦ú{'Ȇ‘®É¬RïZ­>3¤¹Íék{úã×nôÇú°3+Ì5õßB`•ôG›õÕÑ&•éÓx»¡T|#UP;ümݽ<«÷¥0G Niñ¨\Ù,»R3c"#zg¯/·"1‘{¹õÁ/ƒ%ûxÈÏ+µr,8楩c¿À—˜ˆp¥ÿjòˆ³ÌŠºŽ²íÝþûè ¹yÛíáoq W¯–91©£Ž4f¥iÌ,mÌíÑtmLA*´¡ÔrМ(`ªäÇfñ,û­=ÆÈâ‚S(œ Oë_)'z=5ÍŒM–gÆ6Ýò{™hL\Ïæ =z±¬cëÍ.óÓ mTÐm–Ó1V«w­VŸÒÜæôµ½ WºîØž1§&Ú­Ô^»ÖÖ]ÇÔUÎÞ§ñvs«_QëÑ| œ¯Åäj âT¹²Yv¥fƶ^ë´a°¬ÃÓöAËú/C(ûxÈÏ+µr,8ÚCcò÷ ìÎnˆÙe”[1&u,…¬¢%ŒyÐ×|‹˜ÔQGû1çØy1µ|vŽs§ò5;A ! ChÌøÑׯËÙ†Ôúœ¼ê%Uß3A»ù5 ¡B\éê‘ïÓ”P›ÿ…jíÛo%,0½X\Oe9wcâ4F·¿Époí›áÙrÒtÌfä$ ãj÷r£º>½k¾>3ÕÆ½Ú2hªyãÌzôÆ?zâWÝu´Œ´ªûTÚ âê5­å ¢ùˆ§ƒq]UÙüçóÛz Ì_,)ØÇC~^©-#3´‡Æäïh[Ë­¹ü#d9’JcªZ…HcHcÎÙJÊr¶’²‘û¶’P)b¹iV(-4F+%5#oÑD›¢¶4uÊÐbÜêsKkãqòÎÆù¥-r”ì×­Š^Ó ¹„¼«‘ÆLÓ˜‰ðŠw(µó/^§¦©=¶éÓµœQ]VïZ†Æ¤ê3ë 1©epG9b`kl}HÑKßi³–ºëX…6&µOAwå8Æ?mÅ8ÔVéÍ·@<˜×¢¿ª*›ÿ¼ù±­i6„ÚüõÁž‚}<äçeoå£19û4TçCù+F34&uԑƉ™q`ÄvÓ¿ G!Û'8·Ó¶ÝîÚ±PÄrþÐÜö#)#—ú¦ú¢ÓP>·5jº»í24&?M§a+n4AÍlÛy½k9­iª>³“Z’¹ ÊÅñ6oЖßUÕѮ˵݉õ©¥Ýœá+ÜÈhÝQw÷¥¬WÍ·@XP–uÒzÉ|I-[h´ûϛۅˆ†^pÂ¥ôxþú`OÁ>òó²·@*Ic©;Qhü4³_¸1)탋ûH4{RŸ“»b4CcRGi ‘˜…  q›Ô;½þ[Ÿíõ!6Áô [2hL>¹ŠŸ’Æ µaê ýÃàI9£²ü4'kYʱÁ€š"ÔSörz×­iª>³Z“Zxãq'šÅ\v^˧Hf«ïB=§Žv]î,Oe³ûÔÞnèq]#w> ãU}RÞ\ èï!Þa.`åô×{ÙB£=ô¼î±­=_¡Žþ}‰üõÁž‚}<äçeoûxNc©;Qhœ4¹_èuíŒò쬇<••Y1š¡1©£Ž4†Hœ›Wu\ Õ1qR•)¼ßêD"±y]nó¨Ý“hš·:-ÀÈôÍŒÆê!準Ò"‘X’Ɖ‹¥Ë­áþgÀ0Vè‡Ôú´uY[€4f¾ã4†˜?êZGc¾ã?þjþ‘ƉDˆ.¬dap*}ëƒX¡³ïuÆCÛZ€¸ˆ£®u4†H$ÎIcˆD"‘H$.“ÄBC$rQ ‰D"‘H$!‰¤1D"‘H$‰¤1D"‘4†—wƒÁX7ÖáâSl‘ÙS9¡ëˆD"‘HC$[½(à /b.:ÁÕIø„©vÌ´m„䔊4†H$IcHcˆÄ…_ès9hŒtl5ê[¦T¤1D"‘HCC$.ð¢ Ñ·Ot”e‰þë¢#»Á9عJ”Ÿ~„à"B‚"}¤€8ë¾HŠÈ¾ºT‰bgÝæØñÓOű£ÄKF.ˆ'íGb¶ç…Ð¥[ƒ«_m ÄLËŨÎëgÅ?>K;^Ú‹k?s¥B;ï½=Þ?JíG¤pp* ÝŽ‡[jka3ñqk >Aûìv¦GG H™k‘H$’ƉÄÖjcD´…(ÙC°“'£Í/Ÿ;>Ãs‰Õ-BpüÌ[4wå„TˆÈ"Lû‚/R>zòñÝ£'ñËP(—“;xáätU×5 qq‚E”·ç5~ôÕONî@>Üx÷™ƒÓjµ©ÀÒ2Ó´1iýˆ’ ­‡v°—6¿©cFçb >AŒ 7 Qä]#"‘H$!‰-§1ZÈ‘wòîNúq>mϱœÇïùÆ‚–ØóBšþÙü¼hŒ¥eü'©ý˜OWòk‘3fì#!t79ö†¯¼ØíA#„ÔèƒH$IcˆDâhcnficŽÏ>ûãã.…ßüíø,~µ:‡Æ=æDÎàq¦žG!$/ÜÄ@šZѶ:SÔk´ùÛŸUKcRû±,]©¦ùcÆ>BibvèûE;ëB~¸n‰D"i ‘HlÝ¢¡ ׯÃw* !Õr7f±Ð¿ª´1!= „éá½_-¨Åׯ‡M¡×%÷ ¾¿~áÂÃ[òDcgtž$º[…ìwc,%·—Ç^Ç#.%Ô7V£ÉÜl~±5è _y±7´×(Tžïøã?þøã¯¶i ‘H4MõªhŒ/ k2ppz÷éÁ)Œ¾â7:ð%L¡º½?»³î#C(÷Tc)¹¥<ö:¦Ò˜Ã ‰‰X·÷òÕnfoö¡œ;ë‚öѨŒH$‰í”XHcˆD. è ¢ä&†ÿv´ùås£M¬£ÍßþàøÌNp[­©€¡”Náè tò%4©—Ú«¥1öòØëh§1 ‹®Íó7׿©5Â]ܱ׈4†H$‰¤1D"q…ÝŽˆ¹¸Y#ˆãÄa’„‹ã©d´GqÁ{˜hÜÅz¤0~ôõë'wp_š¹ËáÜ*'QÕÒ{yìu´ÓôžàÞr!ñéŸ n¹82IÁ^#Ò"‘H$’ƉÄXp6¿Ûyó=!3¢™ÁÜÇuðnï¥K;ëšBØÉ€6ŽBjÐüàÒ¹ŸrÌŸ€î:~±æÔMcRËc¯£]û!²ÛAŽ0ú‚™h§.9òÅ[ÐNßPÐR#Ò"‘H$’ƉąYˆD"‘H$IcˆD"i ‘H$‰D"i ‘H$!‰D"‘HCC$rQ ‰D"‘H$!‰¤1D"‘H$‰¤1D"‘4†H$‰D"%Ò"‘‹±n´¸Z®óÝ%W[òUsß¼ ­7¯±M$)±Æ‰\ˆ&<>ûìDÒúÛëßüd·cõêR—Æ,á©»õÚÐJ~IlˆD"i ‘H$YQÕ.™*ÎŽýá…“;Õ ‹Kcêhå£1mh%Ò"‘HC$Ic–œÆ ï½ÿ¯ƒëÛ'ÏÿiûOvÖô½õ¸ˆ/Z½þúᳯ¬®íüÃæÚðpãßþñp£m88}çÛƒÓÎèŸnwFOocm鮟O‹çWº—yq ß÷Ço¼Ýë/ÞúôÓû—¯tÿùWWºH­3ê¼Ù ®ÿâ²K3_“Óq!;$ŽÇ{Ím–¿úÝÃ[[ƒ«_m ¤•®tQw?MK+éÜNßï­®ÿËú!ô{mŒ½äöòØëHC$IcˆD"iÌRÑІ£'ß=zñϱÔú"éã…ÛñÙç~üÀÁõ““;'w~ÿÃÑf92pÿò/~ôD§àÄe¡ÓJ.+þêþe)¿”OîˆNtBÄ_×|uùshL~k”£1ñ^Cî ‡ï>spJÓÞJúo/®]zÿâ¾ÁüµÓ˜xÉíå±×‘4†H$’ƉDÒ˜%¤1¡wG΋¤£Íßþàø O ý€ˆY­„T!$“"òù’OÖnk°ùÅÖ 7|åÅÞpp]ê~áÂ÷×/\xxKrÔØâoÉor4&ÞkÃ{¾Z´Ûׯ‡ó²·ÒyŠÛ[íwc,%·—Ç^GÒ"‘HC$IcVânLœÆh͉˜m Ü ýÆÏ.®AÜ,Gc`‚S¢nïå«ÝÌB±_ònïÇÏî¬ï¬ œÞ}zp c3<÷¢p¾QYNk”£1ñ^CÝaôÏËÞJ¡ÜSiŒ¥ä–òØëHC$IcˆD"i iÌ”tÄh´Ù^»ÖÂÈ'• hk£Íßüíø¬œ@Œ;Њ=Ái½œëC·ÓŒ§²ÔÖðÛÜ×ó¤ÒÜBݵ¦Fn:{+5Ccìå±×Ïw;o¾·ÛÑ£‹H$IcˆD"iÌ Ñˆ×NÏPˆûG¸ÇR†Æ 5<Á}‰“;_>7Ú!ñé_rÜ—pÆH’ÂøÑׯŸÜÁM èv@0œ°+é£.ùFe9­„þw`–¦u;©4FS qÁ{˜h·ÜÅz¤`o¥fhŒ½<ö:êRá®D"‘4†H$’Ƭa€é—öÊ…'9Fer§¥Û ó!¤Œ ýº„ x e~}!ìÂÌ Tè.šËØË¡1ù­áhÏíÑ^uwiÅõ÷T£ôP´œø)XZ©“Z{iTF$IcˆD"i ‘H$‰DJ,¤1D"Ò˜²úþøã¯Ük‘H$!‰¤1D"‘H$)±Æ‰\ˆD"‘H$IcØôD"i ‘H$‰D"i ‘H$!‰Db]x|&nÖ-ˆDÒ"‘H³rNè‚–}šê›ãv•QzÖáX\/G_/k½ˆ¤1D"‘4¦µ§•ŸýQÂ>Z{ý›Ÿìvì[i;Ù:p9jZ7iC+-Ó¸ •«"Â}¶­Ìë‡ëÿ²~èBŽJ¸Òå÷ÛV¯ÕY{IcHcˆDÒâ”m²\øKˆz¾ §†ËQÓºiLZi™Æm¨œm>­÷Õ.i[½Vgí%!!Icˆ%i ¢žoŸ<ÿ§í<ÙYÿÑ÷vÖã'‚¢ÕÙë#nºŽ^¨ê6=Òç~ü`ûä…o¶OtöÝΛèë×SÊ Dg }¨‡IDATäû+ÝþÕ•.RëŒ:ovF8a-w.ž_ÓYÑëÏGš·Ôôñƒ_ýîá­­ÁÕ¯¶bs¥‹šúiÚÛ{púöxÿ'ÓÐÝY´1uô‘½ŽöÞ´—sÖ¸•¿ÅHÐ҈ߛñ~÷Ë©Kõ÷±¶±¶#3¢?ÎáÀƒÓw¾=8íŒþévg„ô‘Îàúìñ|qmãg®ýñ·ûG2Zêçþßn 6¿Ø ®Åd Ùí¼ñ¶k%h´[¹zÙ[̾V䬽u¬œDÒ"‘H³4ÛóÑ“ï=ÁfçXjý­ôñƒÂŒ ª;;”k¸'w~ÿÃÙf0²Ñ"ßþ‡<m~ùÜñžûÆoñržÜ‘“Klê"Ò¹ZCöKk|«¨iñ.^SäÁåpãÝgœ0ç§™Ú&xrqíÒû×ð æ¦ÆTÕGö:–£1ñrÎå/®¹q‹ñ HUјÐßæp×2¢mУ×WI9GkQí8÷ÿÔ´vòN‹¬r Þ~MÑ_9õ²´XêZQní­cåä^IC$Ic˜Æ„Nå±yû[éhó·?8>Ãl¥¤Ê™*É<¹ÁCXÁª½œe.\øþú… oIú;£éq\ðͯi9ñ.^Óá½_-¨Eqòê§™Ú&ÅÙ­Û7íwcªí#{Ëјx9CijcÃÒ›Uјü>ÍlI„lô¸ýFU4ÆÒ NC(úІѦø.ók=ÉýË"¬ãy·÷Ò¥n”£*£²P‹¥®åÖÞ:VNî•­ 1»w¾ÞÛYãíý#ÙèD"i iLºx=}+Õ'”b¨°5p§ørê ¡*^6”*$6aÓÕo-å<8½ûôà¢L·÷ãgwÖ}„pœ*øæÔ´œxg©©öì§Ú&~î©4¦ª>²×±‰—³Ü¸­›Æäp œ`–Öí½|µÛƒ‰Qó4ÆÒ ZCèëa4¢.½á+/v{Ð~ ­ìnBõ²·˜}­(·öÖ±rr¯¬ObñÊß;ƒëß}üÀGÒ"‘4†4¦£QÌ]F›½áµk½! ò´1·GÓÎãå„ö}³eg]¨]Îÿœ‹¯åÖÞ:VNî•uÓðMi¦Ðý‘þ”N$’ÆÆTEc š¸óÅBÄ„è`î} ï"å…w¼œ¸Ÿ€¿Å‰)Ä-hú†@£²¼š B´‚q LMôymªx§ECçVnMÈ ±»Â‹RÛ¤nc/½ŽMÒ”A_»‡˜«/Oë”-ý*'þ—³õ œœŽ‘Œ¼` ‡¿Âô…õTSí8÷¿tå"7­§d†Bƒ‡oR¯ø¹Û[,u­({„TýÊɽ’4†H$’ƬÁV˜Xhom œ¿ABþv,›1¶sœÂB¨ºK®1±¦¾šÊ)é^¢•32)nY”ï`è¢ýAäõS°·IÝ4&µ<ö:6Ccœa”cèô$çS¶ô{¨œø[´Œ¾Û3Â0»B©ðWÐu`Të³üTSÇ8µ*ZÞ§mýñk7úcûƒ¥^–K]+r4áu¬œDÒ"‘HC$Wúà€Q>æ‹Ð×i‘HC$IcZ*6åüêNu~Uµá*ôi̲ίù¶?tvÓ8"‘4†H$’ƉDâ;D¶ûÅ"V‹¸7£%IcˆD"i ‘H$‰DJ,¤1D"Ò"‘¸\œl·všÒ±ˆ¤1D"±âEH$‰D"±ýHC$ÿ¿ã?þøã?þø[¨i ‘H$‰D"‘H\2÷ߤ1D"‘H$‰D"‘4†H$‰D"‘H$IcˆD"‘H$‰D"‘4†H$‰D"‘H$®,ÑPÒñ‘H$‰D"‘¸(X7Gˆ«Xþ›ÀÀå™…Ìàmµˆ”érŽ?þøã?þøã?þåW/ð9BˆÀœþõÿñ;©i´F$‰D"‘H$.΋5L¡1(^h…i ‘H$‰D"‘HlžÆhV¢ ̣ɌOiêÃÇþóó‡·ˆD"‘H$‰Dbû±™ûóš•h¤1@\ß¹ÀüñÇüñÇüñ×øÏ§.ÿ/οv按(ÕIEND®B`‚pygtk2tutorial/figures/eventbox.png0100644000117200001670000001370210050344475016675 0ustar finlayfcf‰PNG  IHDRŽDØìš‰IDATxÚíyTTWžÇ_i4.È"ûVP@ÅU,ÅŽì’éÄH·Æ—“N'¸ÛmXU‘½(@ @{›3ÓÓÌœ>óÇœÓÆt;ÚéΙ™Î˜6޶³¸ñæ{ß­zœüú©üýIz‰“ûƒÓÏHÒ‚Ôý!™P·Íç6¹øçßg?ºtÀ°ah SntL ÛòåýØî£CO˦u0ø¦Ç-¢Âf½Kr^ÕˆÈOZ¾FË „V8h©(¡UÎWíªµ{÷N»u'¤…¼»Ž3%¤u ît ¦„$7)ÁCÅòŒ8í£ƒx<`ã§èãñ@’´³ÀC I²Î‚$k@’­ ÍÕ…å褹ý¡¹}1E-nAð* ÂˆXùt1µ² |h¦M„g1€‡¬ð* Ú³ ZeWÉáéZéÐbãXgërÄÆå¨KÝj׺5kOÙ¹kìÖšÀÂ9øh@È) \ƒº‰ÇÃûк°v/y³gD£»\ãÕíÓC½Ç7¶K’Ð*Q4)Zʼn­ÁÊv±R ìñSöQbc2öDdÕGd5Äeÿøú8KðähcrëP†>gã  ÏY6¡¸.¦´#®¬3©ìøg,W¦yq æErc›gXþ7ª}öÎ%N}gc¸¼JßDÄð™á!bø ¿uæäU@…TGÎ#ɦYœ“÷Q ò ØîâTu®õÎâ— \0üCßðÔzKU ü‡þá{nÞgƒ¢^“Dm—Ån›€¸¦€ø“ð•»ð¤·Â\u 6y'PÉS«€'$­!‚U|öþ¨œ†È܆„\‚*b}[ta ÉEU%Ê’j@R–Ô&o¨½Æ²€¡úR½bcgì˺øòUy‹‡ÕçªY ‚3ñxŒ°MƒjæsU=P9ûVs9‚Öůæî}öˇìíûì­{D â.ip9T²×}Â{‡WÝ@9bOP䛘fdñoDÄÿc¤b3%6"AÀ¬#S¾ªª Už¸ñWïIP¿ *2u‚[X¦.$‹(*·õö8{wœ½9ÎÞÀ$Š*£‹ÚcK:€œâJÜPN.«N(kLþNým–½ÍqJ*ïT|œt‰[R·´zÊ ¾fÙ ¨0|ƒˆF‡gŠÆ1bap–§FEg>~ÃÒY&Pá¹z¶`}]ãy¿*š&¸ª ÙKþÒ>Ò7ü¥oúÉ~ì%mô’6øÉö¿‰Ü‡A{48¾*4a7Pá tç!É‚•Íbe;ðH“!A¦i0ýħ¿•”½Y–„B³û¸NžÛx‹eÕE?€%N)>pecK4±¥mžª¸Ú/l/U«6¶¤mj¤¨ÒÊë“7w'm&œ·èÔ[ÛŒPqw4‘¥‰j T¦5…¨0WŒi&b’ Íç\EQ½½Ÿ rªå9­»äüI,ßå^á~ÜKvÜKÞè®ñ o Œ®E¸“Æï½AÝ)±â”4éH’x"LÕ(UU…©jÄJMHZPE¦U·É2I(Sd¿ Ñy‰œl=Éß ˜Âö,›Rz0¡´6 <±e­× žZåKI;îr^®ÈÜT‹ùI½ådú+ (dl®OÙکܪKÙÞŸµ­5 ¦ €géjïUÂtnZ¯â!Ñš·¹ŠGu¢å¼gÈ‘u’Nw©lH “ÿÐ7¢Æ+¢ÞG^ïÕâ{Ú?¶KÛwDhR…X¡ HÔ„©Ž|þ Q5†&7#¸]}ƨ»e™Ÿ?b£³«¥YH$äˆÏ9€ØDöFêh’ ’ä ï ¸Aª²j0À Dñd¾|4eSSòËÍ8˜ó½#¨™¹ù8ð@Ù¯´"c{wÚÎõ÷Ïäìh ˆ-0E5õµOÜݯ¢âã°Õ¤áß¹ŠxUËy¯ðZò$$ÓøÈÉœtû÷ ƒî>KÂBë—Рè+Ú®=d1 áY‰\À¨æú#ö²†¬&ifòì«ãldn½,·¨>ƒWQ»6Î^eÙ˜âö¨’y©Iv\A…) ûkœRË›“¾{:±¼3¥¼ñ3mnAˆC!{[³zÛ錽9Û›?eÙôÝ™¯þ,ýµþ¼]íF¨è\ň¦AEgY¦ãH¡/òɺpÞâ“õyõª¡K@U¯yAt-Î?¦…LBñûCö#Cˆ Iªá1È?Q<˜ Yܲ8€‰Ê:ŠÈ>žÛ&Ëé‘åt‡ç¶ ;ˆ(ê…à:q%MT ZâËÚ¢ËzÀ y¶bc7„ô—jÜÔåuÀ£*×$méMÜÜ“º¹C½ùTæ+u[ë'u{oöŽH½³ÊÙÕeîêOõLæëgò~ДPläUt®šõj…Ù[KÐâƒö|zÕÐ%¤ïã)Õ7¦ß7®±.(±ÞƒDŽ[ìiÅôBAª~Ê!N’Ö%ÍâÖL³È \Gž×!ËÕÊò»܈ȃjOd‰Ž¨´'ú…î˜2¨ŠÿÎ鄺¸qu å}Hä’ʵIåÕ–nÕæÓ„Ó–^f ­= ”¹£+cg—z§.m§.ó5]Æ«}ð!(ë}™¯õRö?Í{ëg¥?êñ+œ¿ÂMBÖÅAú’¯©Ÿ«¬[7ŸZ^‰ç'ÂùñªæÎÊ?á §þ@åY²Tªì ˜´×O×âˆtt±‡.Çѵ8TL'!]Tidi\‡è…>ªžØ—ú6 $”ëâ7õqù•N¹uJÙviBÚÎ3˜„8é2và=Òëg¨2ß<“»ûç¹oÿ’ìwÿ¼tw8±¨.\ü=]ÉæVµ‰,­”Sñ¨(Ó•r£2ž¯)ªƒù´õé6½WM|,fÙ«>ªƒ'O_(“ú9BI}!©ô)•ÿÄA’­›XÏÎ#ÎD³8ø¼ˆx¦Ÿð ODY¯ÏGˆˆâ!„ð$´ù ‘žŽfq)Ûá:©ß'x ÊFýªŽøÐÏÂrÞü|ˆàyû—9»¾~ß?åîùEÞÞ_BöõQT ýetá—¦c2£8$˜ãgÚÄ<ª©×¾&S :p´åôo¥ªŠÐä&™ºÙ ÆˆÌ&¤ ᙑ9-òÜ&ªÈõÍq…mq…-PB±AúI¨«Pâ‹-Êmª—Û±OÞÔ–²©RmjNÛÜΩ5å{mêW:Ô[Û3·udmkÏÙAÕš·K³þÕì‘&`úò_ë(|½³èG§‹ßêA”#ÚÝ•ìz@ˆêŽmá)E4Z3åLýãmƨèÃÁ鶉ËÚ{ b}éß»úf8ù”ïè³ÞÅ?ß9@/”ÝÄEDAî’"wIG0 ­÷+0(Ÿ—wxN!¼å^áù¾‘E~EÑ¥1Åœ …ÇAœ0ýÊbE‰P‰P‘DU–º§˜äì†/í%Ao¢½Æ‡öóKøÑ^N¸¦.#¹·²>¿hkÑ«¬úŒ>‘]Â0Ï1Ìó cË}™„—£^"AY/{N¶D"ÃK{Fdk^K8ñ/É÷UèÞ†™Û/µa–¬žFú:+ zž-cDK×Å<eAo•H$›ÁvedôòèØGG?.}22ò§Kc„F.ë Ш9Ñ:|Ù¨‰©¸Êsõ±ÿøÒe3{ªÆþÀï…¹òG®p…üÊèØ•ÑËc—/_^ØèèèØcÝøÏGŒQñ™àåÔ&L¯áÊØå±ýÁÉ<YyÍF#5ÅÁ™1yw„ÓÌ®ñ B% €Óz§é7ܪ£—ÇžžÍáôPÕ4sÕ3TßTS_Œµ ç{XMÂÝ(ÑLì®0òOÑŸ‰É‘Ë)Ê)ü¿Ã™h&s(Çí¯nv_ÙOª9ù.Þ×BÑšBïÄà8®¿ø| Œã¦±tÏÎȦ×ub³ð½ÙØD[×éû)u¹íbdsÁQÑd)e½ar&ƒa²™€ÏVc#DEÞ g˜&øÏ¡¤fäӚbø–0\¬ùÊq÷1LÈŸ%(D|"‡˜o¡2y·„A4,aRF’™0ÎxciXõ­ÌÙ¤vx›6_®aŠ™äK*bSΠÛ3¶Yl®ŸÅ“ûùXP1I†p‘ÀÏç>ñWâÀñM(ž$¦ðý”Òpý´fìHM;CM*û/ìqΊ;š D*ƒ»!}8É"6!¸#µON‘Íd f‘»UIlš+:mК‰#IB›ä&Ë6g3ËØ¦È\4ÛOb3˼Íì °YÄÙô4íç"@ÜS©¿Oa’ßk~¹%ÕŒó'aW¿pbÒ˜ü÷óó>ÈÇ»Žw\ „ˉ´l\Sͤ|”ü©bT š !š;£ÕNбDÎ>±`dÓRRcÎf±ÉÙˆMƒ}36ÍIh“x•Š´âm:R›zû¼Í†È[%Œÿ_üH[ä]$ÿ™±™fÉfÑd›‰$8Ùdª–ú ú«#SWbdl¿²5ôÓ¢ÍEò*šãatì¿tÄ„“>ç=…àÆDN·Ð?ÄL¾æÒÏ Q¡áš»¶ô]X0`:DŒVMܧØ#Ê=÷p0£&npú@ û$Õ矓m~eGmb˜x›h‚üÓù¶+&EòdzÅòxï6áÄ¢o*ºÒáüWËK±3ü”Ȱ ;ÃåÝi„h<]?-~D²„‹CO=*k>:™ñHO¤ÍEZœ¯OÍá#ö¹}0¿€çZðìùk0¿úâ_Iáö¯‰¬i2]M½ÁÉŠ³ÏÂì‚ æ1mÖcw!¾Û;?gúW-ߪï ¿¿gù»|Bxsüáˆõç2W‡œ|7{dôoÕØÓŽêòè·ß«®XñG¦pâˆõÃ4óóš?ûlÏhŒêÀ¡ýOª+3¿ø¹£{ì¨,zÕ“ðç•–CÇ̇Ƀ5ǤãÊÌqNr§iŒj ÷¿žx¯²•ñÐ̪‘B5{¯âÔîiøC—éË\‚Ï|ÆÙÀü˜ßàSü÷UßTSÿ±UsÕãÞ–4ݯœXóK(V6˜ñ?ÙYðž Îâo,=Æmpè"4¤—¥™žî¿ÌëLûû~³éçðĉ¦éÉÐh.=Ñ£1KØñ'ÕßÚ6ƒÿ´ó Õ“‰ ÁåÂЇÆÐèˬÿu­gåÅ)ëRÓôÎéìCùåáÛyw”Ù]ÍjW²þ|7ä‹ÑîÎÌÎÎ|ö™gfŸHVÒ7³Ihªñε\^ÿe‚7nÜ7EôÍ\š¬œ¾§~™ÐbbåU·µÌý/Ö2S¹³/çSµÕ~lnzéÇTW|;~Z-v£hW¯ŽhCÛ‡ÜÛq#p’(ÜLèö‹‰•…~ÜXØZüÇÖúöÞÿÝÞÛÞ{ú×ö^cúç·ÓNé—w’Súõ¬SjnþöQs³¹ùûgÍÍÖÁŸ7Z»³/¾Ü}ýïß»³û+ÿ·±¿røä¥søäõ¿Öá“W¯þÚkGL6yùë*5Œ^ºí¯:bÐÒÖ2¾]Ël,<|¸±ÐŸ¶=¹ûá¦ÍÈÑáÒ˜~vª1 U™¹Y¶g¬«Bå?ÿj´«®½ˆ¢öˆ™s.Ý^ËäòWl­{íýüz}'—¿úØ{ï§—ë;ùÚõ¦×Þ™êÅ‹µÕBsy×{ï…÷«ÅùÔÃí=¯½Ÿ©¤çS·Ž{ïýðt¹µX¸sÒkïTîƒKõ¥úÝLcÚkï¹c‹…¥ú½óÞ{¥ÆÊ­o>—½R‹³®%¸¿Ò6‚#Ì«U÷¶m[îHGçÉ„i¿ô.a#Í%.‚ž`¸\kxï\üÐ#p)4{—r+.‚ž¯fýºâbaÜàâW¸ƒùî~ƒ§wº·ÙÉÇ'w1û+ûO÷Wþçsã æSª†V'Ä ¹àé$¿ì¯¼t^½j¼øòðIt¸øÛ5€Ëò® 6ÿá”¶Ö~»uà —J:.ò4öÞk—pvÍÖúÓ¿Zõû_l­#züì8 ^ÝÁàÒQ¶íàÜ眳/çœlòܱl2¬FϪ§éwíf¾Á¹ÃL™hwëJQ06ó»íEé|ÔñœÈ&ÍBtB Ê› T–àá“©œ4²^ÁÅ{ïÇgªEU†ý§‡O0ÈÒýbÁÛ®™ÊÁ®ñƒ M~p‘'y0\ê;â7»«_i‡Á®ñƒ‹Ô¤ºÚøb:·íxábvr¿Ü»ƒ ´w¹ûÁÅ>w_ÄÀñ —vžu†‹®z!à( ëîmGŒØ á<2Ap ç‘=‚2ôÚ#cc¹è(dõ½zi‡yÐ$u5ŸÒkRÇŠXµúï:büÚv/ࢷíîzV' zlBîˆ/^eót2Ø:ÃEG 1p÷ꈩ¤¿»²½‡JlnþycE÷›%Né?ÿûaKy¼¥ ‡OôN ¸TÒß/;%‚‰‡\ÒÔ;-¦N½ì.˜T~Ýüþ­¼úP‰a×›¥’#½K¸`8Öž¦:~E¦fÒöÞ³S»³æT"öê¥Õ»ñÖú³SÒU¤&UšòwµxïüÆ‚¿5„»öã[Hóð‰”JêÇ)ÙàìUuÿ¬uP-ÞÿBž®r|cú׳êº Ë»õîܽÁm»pÑÛv”žå×½Û;y÷¹‡/Cg¸t@ ¦¬ün@Ø*†Kĸî^Õ}¤QJl4¦y·u€_¥CJ9åxti4}qè®eæS×›õàFÃ"éöðò`ï|jyw-“¯]yP[]ªß:Ž¿ë;°’ÌÁZ}çÑsé*²RKõ;'7 7×2Õ¢ PÎJ¬¤jñûåí=äb– A€ê`*Í»¯4sùkvðåò—¿®­bhÖ^Z±eü¾½'µ'ƒÊúŽ J]…tu/Ä æQžµÌã?ÔñR{‚Q©gkK¿ƒz¾úÔßÞ“ß’°î^›¶/\ÌNî—»90±ÉÝoL6wýÚã‚KÄ`´\õöXšÙÃÏ mG žBº¢1]}¬~AƒCiaAHcRÝ«wÐ$xºÖÎ,¶þÜVIˆÁVßyø°1¡ ¬'¤fZRH¿£{K*iu–èLU†ièöbõl­û• ×e¦ @:ÕiÎ9^CÈrË,-RÖó’ÁEµˆH¹«Ðµ’T™ÏSÖP(»’6¯ùêwçJÊ,ï;(¯;(¥ ’0ÔE:¨a Ûïá¤#ƦmGÇŠÙ¶ƒs÷r8tÎݾgÅÛ¯í¯Ý1rk•)ΕÛ\£ŽøP”ŠÍÒþ‹¨Ù‘ôßUC—®(ƒ§ôº*žª!†9‘HF¸naknÊ {ÑÄMÄ´çŽn&M\/¹ Ç*i¬:5K…á†^*3M”Á¬ñõ,ÕÍRyט”öͼàfö¯É﮸.×B¾ú T¯OìŹAw°½œf¾b×(k®Üúj–‹øÅ2£x«BLPÛ®ï|wE,£pN´[›¶œ»éj°A[.ÿÁ‰\>zî½0£/bÚWòu¦{”B˜ˆŸ"XÍ ?ˆëMØ_AÔ³úÒmeHùÕïøE9€åÙˆA“X õµÌ£çÊPÇSÎ`³ º] F»r*»Sª2à’nì_*àÏ-•n˜iB¥³•[â“j÷¹ TØëUZ7eX1H V›~½zý˜ˆA¾"é%G¾2lnꨰwÇ›Îl¸ÆUš2o¨TP¥ÿ®#Ưm‡í`èÞí<¨mÛäÖnŠ7÷^\{bº1»ƒ‹‰4G?mo r.ü#ºÏøGàVžñ}ˆÇD,÷oSâ•Ø„LýŠ×£kËìÎ"eÓ’ÚXµ'z'HÒÙZ_ËÈ^Ø f©Ä£áU*¹–öއ4á–®­Ê¹(!êGPÀ¿ƒ#Í.]ßyð­J~àÏ)ýþ™[¶ï®ˆ%"׋ôÍ~ט:zt«DÀ½½—Ë Îìï ~÷uˆ·· I@Ѷ#Æ»mw×ÁT7ëܶmr;(‹7÷`Grw×îªPÿ¸Ô,F‰:bð4óR™'’¿]g¡¾aZN\˜ºw OcµjYA²~D:€œå”~û¨uPhJU×ìÇßrŒT´tøÌΦf”º=¢ÏÔÀÿ‚g²]©nn­{¥)Çèi¶‚óeư kpL Jœ’tf©÷#R“ܰæt+Cwrãw1€©×ÀGòµ¿ƒH_l“µ××áÎ.émCP".p±¿T;qí*¸m«R8¸`I¾MÛν;´åòžVˆAý‹‰`ÅÈ$€6o?•JÄÄ„ùhƒSJ5Þ¹–jäòŸÉåÅ;Ó˜Vž‰¸%ÙÜÞcƒ R‰˜.g”|œAuô "Ø ¨T®î¥R©DL·ˆ™èjã¤R‰*•JÄ1T*•ˆ¡R©D «˜J%bz†$M¥R©1#f‚7nÜŒ-f+†7nÜø5H*•Jw/•J%bˆ*•JÄP©Ô‘FŒþVÑ ÿM¥RiÅôD *uD¬*•JÄ „ÓëEA„ •:ÖV Î’™ÍÍí½§mïá»HµÕ{ç«Å¥úµÆR}>uév¡©ëd"}3Õ`Ä*•VŒï—uÄ>yéì¯ /ýIi‰¿ è,Õ¯7—êPͤC¥ÒŠñ=Ò)ýòncÚ1øÜÚÆÂ?n,àÛI“‰Ó÷&´b¨TZ1VþÄèšMž;–MÒŠ¡RiÅø¹¿rëøbAõçÖ=bÄ#3ŸÂ”ü•@¡RGÔŠ±±/öW–wçS»³×ùšîô•ZøôZ0bäc&ø¦µ©´b¨Ô_Ý{øäÑóµ Pâ¥_Í.Õ[玥û+7Å*Q>§d‡%ùÏ×ÿ+'.´+B¥Ž¸³¿rÿ ùLš@ÄFu‹Ø:b Íϯš:bPR—’•dåkíJ+†Jq+&,bLÐl­?þCY.@ ,…Kª‘¾ M5RÓ÷”(Têˆ[1NéÎÉJº¾#‡Õ¥ú‰ ÊÁ§fÝŠ‘Õ1Êd"s¿]iÅP©#nÅt‡˜\Þ-ÖÂøùb\Þ{4™˜LLÿ4™˜Ê¹J P©´bÚ´ÐtK‚!R°»ÖÊTîÌo‚•ÙS9]iÅP©#nÅ”[²@k_L]ª{ÃŽ^›%Ø/@ÌLõìË©ÜLõÜ1¥ •:Öëb€.Šýº5P’a‘BÌ'fªs·§gª´b¨Ô±^Ý«f0¤’µ¼îê^[ÄÈ,’ŽÀeÎùøÌœC P©|GÉç%/ÄÀõ[ßù~¹¾“¯]¼˜¯)_Œx^`¿d“ÞŸs²É‹½CèP©cdÅÁˆÁ1À Â8ÌTg_ÌTÅ “jè– °’Ëz9›Ìå?¿®^’dS RÇΊq}.^ñbTŒ„n¸›©+2Otæ7×ÛkÅJ.év6™¯]þ:—‡ÒŠ¡RõN;«u€¹¤rëÆa¹%ÊLµ}ø \º-¹ò@ôêc%P¨TÆîý1µÕo>©çC±M`šWçk…¦¼XPh^oÚ)­*•VL_ÃS©T~G‰ßQ¢R‰v`*•ˆ¡CR©´b¨T*C+†J¥¦S[•/MåÞ{$o?»_˜©Nÿ4S•éj‰Œ×ÍE"T•™/.Þ)¹ ü¨TêZ1Xò T‹;ß„VÒ·ŽWÒØ[n-ïJ¨ðn¾* И°óûƒJz+„ >Ê-Cø>¤ &ð»iÅÌ9³/Ô ò Dù-4Ù ¨Ô‘²b08r£Àlïù¿¯ôóÛªµÕ{ç«Å(ˆ¡C¥Ž…ƒ÷Œìº´|žMEÉ“³z‡*•:¢VŒ¿Û6޲bä,Z1T*ÓÑ#^;_ŒìU¾˜7ƒøÝ˜ˆ Äl,¸]Å)ýòn˜'ÒÆÂÇk<9“•’•T#u)Õ¨ïf*éà®hs.T.ik}Î9ûrÎ…Å/8fΙ}1ç(ËKöΧ.Ý.4ãBŒ½c]^–ˆØ…æç× MÀ=øxX6ø(·\ éwÙ¯+ê¿›W¥¶ÁÉDúfªsAØÈÉŠXͰaYwW·aÓÞÆ$w¤/×5ŸjüþY{ʨÏd%ùÏdEúQxë~¬JR}0§åÆO&Ê-±e`Ýø7ny²áfÈ V]tkýÑóä‹Ûf6Pûs››¿}ä”ÐŒ²ÉNd“z÷0KØ;+Æ1ö×åo/Èõ.Õ¯5¤ùJÆ JŽ”ƒ‘Ô˜þùmÕ,j«÷Ϋ²u‡˜(µ @ äJ M¾váý\W!çkh“ÝÕm˜²IûO5Þ¹–j ¶ñ J‚ß WhÜ”'§ïM&;îÓÑÝ+Õ ¿ƒ<£fªxâ:0Å››¿¦ª²ZDã–c`éšjH÷§S¹e6PûsõoÓ#/J£÷ÛPöˆ±¿.ûá :¡nð0°¬ÉýUO`9먣Û&xþãw}xŽZB7î®ní˦_Ôm»–‡\ûcéÞùn}[œQj{¢âÖ*;âܱlR5îåÝr ÏŸ\^ì Saö› Ôþ\ ÏÞßq´VL˜ë’΀g2Tô麵.þ/À¸×·oZ1þƒ\€É¼Þþ#¦ÝŸå"F?ÒDŒ}݆-›^‡æ^ Áô½ããåé뤵î2Ôg ðK°¡h6PûsÅŠQM0xˆ1ˆ±¿®`VèsŽÂŠw 1l´óÅÈ^å‹qaä~ZTyô!Õà &l݇bcùv²bdÐjZ1DLÄ A/®>^,ÀÖ>£$ ÏØ™ê™ßÔÀƒ&ŒTsùÏäò2ZV·çš Ôþ\u¤Ü`”Aý. F²^)xÊ龆~"Æþº‚'݃±âçÊŵ{Í(ÁôÆÎB ð,¨argÄtWÛÝ!&lÝ"½%‡ñŸ-ßÏCÄ„ž´†³ 7U_Ÿ9Üoæ Ü8bõ¹Üt¿jsn»·ßõáÈlòÍÁ…î>´™ÁéÅŒ’ýuùù_ºkÒNå2÷'¦_i©.¯ o©1Ýï†ÇŒ bº«íî¶n»Q’6¦f”¤åûÍ(1|€ú¿î*Î]8D<«u+€J%b¨UžÃðhè3JT*C¥R‰*•JÄ1T*u¼³½'óY£º›J%b2a²ŒÿÝâÞMŽÞäb\KàÆYYWC†˜èЉ~Ëý¢–ô³1õ'rÊà#fðcÖô¢®üÊ0Èñt†1~‘Dú‰›·lFãÙ8Ȉ–˜5½¨«AhC€›˜,öVŒMj~·O<›µÁQKôÀú‘úËœÑ#¼—Á> ‰Í‘ÁˆAÇÆê^”D_¯¿™µ°8¹à\3M›¨(ó&¸®lJåW†¸Z…}îUœXc“Åî=î#¼àI¨¿ ý¢––K¸#}i<ÞÌŠáÅ¿ öQHl F ê @x'3: öêwD5)©3M›¨(óƦ®ìm“0VL7±i‚ÛpïâàĆû˜,vowáOW4t›³ìãMšW\^¼Þ¾±BÒÝ‘ÞWÚþ¦ìA¼_æ¬qOüÒ´‰Š2Œ1klꪈé.6Mpî]œØc“Å1ÝEx;ÃÚ/Ý„õÛ6 ‰}ì£Ø¶›¡ü°%õ»ƒ!!ÞW†É¥ë{Ì¿ºêbâŠMcƒ˜èyÅjÅØÅd±µbÂGxA7S¡£?ˆ‰+ÂKøç•…¤»#m®Ȇ‘¼½÷ø­uÓºŒÞu‡=fYWö¥ŠÛбM‡Ó9¯}1¶1YÂÄL±ð¢_˜ T.MÐ>ä²_Ô›Û=‹ì£ØißÍw5”Ñ»¿à꣉ž°]wxcÖ˜ue_ªà2DkQ=¯Í(Åd ?£Ô9‹ya*Z­ø´mº·_ÔûÛ%ÂKpì£ØŒÌ`„¹3¢áŽàê`?â¬è±Ý†%fM]Ù”*¸ Ñ[E4ÄDÍ‹ï(Q³†Êw”¨TƬ!bX¡T*•ˆ¡R©D •J%b/†J¥2^ #ƒ0ZÊ]o/Ú?Ãx1Œ–2ÄÑRˆÆ‹‘x1Œ–2˜ÑRˆÆ‹úx1Œ–2ÈÑRì¯×¦ صvï+‹¾xØè ´YÈß¾îkpƒßò‹ ¦ÓÊ`Æ‹ˆx1Œ–2¨ÑRl¯×¾ xÝÛ+*4?½\hækòœj9’;‡Çªž¯þ2G/bÁØL°0^Ì@Ä‹a´”ÁŒ–b½öm ¸ý_EúÕá}1¼ñŒÐíqV¾vñ¢W”Ÿ¸bÁôu Äx1QâÅ0ZÊ`FK±¿^û6`Þû+Òï>ìY Xð–ÞÛÂã¯,ã ®šì£Ãx1ÝÆ‹a´”ÁŒ–b½öm ¼óæ©¡ šæ÷Š’šb¹v¾õ.L_Ãx1ÑãÅ0ZÊàEK±½^û6`ç‹ º"Lƒe·%(Ìɦûez æg”/¦›x1Œ–2˜ÑRì¯×¦ Ø´öà+ÂãGÙø®ÏQÍ.ɶXðn'ñÆ‚á;JŒ–B¥ò%*£¥P‰"†J¥1T*•ˆ¡R©D C¥R‰j,`¼Þý¥1ªX†5Xï Þ–ÕXìd¿Ø/Þ¸*D •ˆbÅB&}e­êäx3U\a!–¾¶uX"Î1Ô¡A ŽT‹ÄdE#V šë ýbOØG]At ;Š…öÝüÚ!Þ= Q8Θ&6qmÌú´)ƒ bp®í:Q•—Þ~œ”ˆ‰ 1²ö4Õ, —¿žO™/e™±'` ØDÜØZw?Þ®¿$‰7˜ôÈ2öG/ç·‰ä=‡ML“àåðz}¢¶mÊbô5Çú»fD 3bt›EÅs“ ïOûÅž°¸¡¿­‹NÀ)øÈ8"¹DÄaÓ$1z}Ú—!:bt šo„1DL̈ñïAñMÂF]AÇÓßÜU/Ú½™»ý‘ÞQ3\+¦ó딽ŽiÒ‹¸*&b€c}P©;¶¡xß×&/"†ˆé!bt_†Þ¥Í#£D]Á«€ˆñ_Cô#M;HÚD³bºiÒ‹¸*Ñ­=¾>Û¥Û°D #bÄ› \­â‹QÝ)èÅpûˆP,7Mÿ:8ìì4£$pA™çSrEðìàõyüAœ ÚЫ˜&aâÚØ–!:bPºz{O¼`º‹šˆ!bbCŒ>ë¹!Óâ×ìl"n K#eÝtÇ/º­d¤]$\ÈúIÍ]ƒœ\þÃÓÙ¤îTîEL“°qmlÊ`ƒ3ھߺ!¤Õƒ$1DL}1T~=’­‚ˆ!b¨D u°ƒ‰ç£ý<(uД­‚ˆá T*•ˆ¡R©D •J¥1T*uÓ‹h&ý Â4,å§R9i=Ðv V£Ú^–J¥1b‚£™ØGN‰‹¤»È—ŸJ¥¬.rJôX$Ý!†V •:”ˆ 9%z,"†J#Ä„œ6ö C¥ÒŠ 9%z,óíd=æ C¥1b¼¢™„‹œ= ŽD l‘ÐãÝ#Æ/ JnþN¥RûŠ¿h&ö‘S¢Ç"A=OÐt½9Áˆ ŽÆb3…J¥ŽÔê^m¨T"†ˆ¡R‰˜áD c‘P©D •J%bˆ*•JÄP©T"†J¥R‰*•JÄP©T"†ˆ¡R©D •J%b¨T*CÄP©T"†J¥1T*•ˆ!b¨T*C¥R‰*•JÄ1T*u`óŠ7nÜ´ÍýHŒˆ!³©Tª|˜È ÝOÄP©T"†J¥1D •J%b¨T*C¥R‰"†J¥1T*•ˆ¡šÖVåK›S¹÷Må&&ÞJJ+©Nÿ4S­­~óImµÛŸò`´+³iòÛžD 3âºT¿Þ\ª(Õâ“•tsó׳N ZIß:^Ico¹µ¼»T›>Ò1¿DÎ/”5b ÍåÝí½9çÓËõS‰˜ÑPX6ø(·\ 9¥_ÞUv‡&ôßM+fΙ}1çà—D6‘NdçS—nš¼#ÃŽðÁ¤Ç„¹U‹ß/;%S‰˜ÑáŽ7¦ŸÚÞó;²1ýóÛê)T[½w¾ZŒ‚Z1£° Ñqãý ýP"f4´ÜºqXn™ßKÿLAg1T"†ÒŠñw»ÂÆQVŒœEÄP‰jG_ŒxUì|1²Wùb\¹N¾úŽ9¤"bˆ"†ú·+nW¯%ùÅC8 )l­?z¾± ®Ü™ª bp®îÙ¡1DÌÈjµˆu1™û“ Óý¿T¿úx±à5á}­±X€&雓‰…‡P‚ƒsÚîf*iÞ"†ˆ;­¤Å¹›jœ¸¬"…æç× M§ôëY.™£1Ô˜Tf”ê;²ÆWŸQ¢R‰*•JÄPû«±n¬O"†ˆ¡R©D •J%bˆ*•ÚÄ i*•J1ܸqãfl1 &8ŽL\ŠÀ6T*5^íuÿµ2MZîjƒAãS&Š"e~!˜·^l½è³fÿõƒËîì‹/wgC ¦Š™=©Tjt=ªí4º!DÄP©DŒM/6áâ4&nz§&L¥RãÕþøRubèpñEŒn¸qãÆÍÜL¬èúÿ<*ktdÄ IEND®B`‚pygtk2tutorial/figures/helloworld.png0100644000117200001670000000567310050344475017226 0ustar finlayfcf‰PNG  IHDRgF^Ó= ‚IDATxÚíœûSSwÀ³ÚÊúBP$¼„À<Ïðf‘W±E­3ºîXÛêØv œVˆPä!„gHíÌþ»¿­,®]"Ž`Ýþ¶3ÝêèèNw¬r÷ä~árÍóÞ˜QΜÉ|½œï½÷ûÉ9ç{¾ßx/ƒ‹‡‡ñIY~Ã`ìf0|Œ`ƒÅ`„’4×ü3ÁÂ?Apõ')qÚŒ½ Æ†ë…æH‰n¸"Á¦›ý¡¥å»æ¦¿45O_k™in¹Ö:ÝÜ:-»nÔk×ÿzýÆ-\g:zþÞ!Ÿi—Ïtöµ}`ºKq«kèv¯rÖ¨êÙÞÑÛý£7‹Ê?]±x)ƒÁê]Xÿ“ýÐìkÀVus³ÔN§»CMt:}]]w³ìÏ;½.íðººÃë+¯}Í{|d»}›vû5íõoò ” –ù„Ȇɇ_cFµÄ´Å·‚†$´±’:ÂvE {"Sº9©=\IWB¶ì@Xñ ƒ;[»ÄÜììmòqŠí¹¹9*ö`f͆dSßPgJ­±±‘ŠŸÔjk{ššo/O¯á{UïzìÚ¯ôòQzRîaªö*½C@¾á*?ΈGÉŒU>¢ô玄Õ†c 'ÂS¦Ø©ãœ¬Éh‰:>WîÍzÿœZ.ÒÆzP»m4Bêö hæÇ¥R)@ 'Ñ„ã|Š—‚®Q«—CH‚‹íÜ3¼ó€ò]_¥—¯bŸ?ðÙ¤BÈ…yùqÌ#Ê ®:ˆ§dÀ‹%Õˆ,÷ÛØ<5¯ ¨½Àoî’bÔ {F](Fê¾c~kg€Äð¯Ó58 •Œˆ¾[D ²D%¸ Ûuhp?S~ Hî8È|تƒ‘JÂŘñ#A‰êPÜÅX"MDª"6sèH–".WW0W æ— úFV‘©QI„%øÝ.t¯â¸¯!™Ó­ûÚõ齇dàb^~Š}ÝOžc~¬ŸÐ>låá¨2²¨OD‰W°¤ì¯ùyÍ?°øeb‰FX6xˆcJ %&Ã@¾o: ‘ã 7!_#ú¾5J¾†ç5D­¦^.3RkBQy ¸ýÙ ,8êfT“ÓÍäÈ™±}Añý!‰ƒ,þ@„hxE¦‹=^ÅDù5âÂÚG,ñ˜"¹\-*ïöç”Óõ5‹ÔlÜ99²$÷…ZÄäÌ`þëL_ËÙÙùiwKç´OÀ5æÖöó¯Xxì‰gËØãe,8^Êm‹8Ú)øæÑ ö×I[ŒD—; °Ä…5™%ÒG–\¡àW*Ò+šưegQƒÂÊÓ´Î"SƒTEö5dC¸6yÞs𝡼ÔÚºg ¶ðDæÞößeì+›ûiXB5€‹\\X‰éµ‰éŸ ³?²ŠÅå r @-«L*)oxˆa€LT5ôÃX1+4“”-j¶¨‘û¢ã„ 2gúš±^“Þh랆rÌ—¥‚¹2€ÓùtÙˆ,”×ÄNjXÜ”Ú8qíÓ,9£¥åòÔ€%äËyE p±¬÷¤™õ@MT5œzrð)†EÆ¥­Xñµ9Ý]PkÔˆ ‘ fniN­áŠQ3q1óî¨Át똯ÕÖwµ÷NŽ¡¹20öÆ“e,œWÍ:*gó{¡ þœ—þǧ«¸ØöÌ`üL.J*X’ÊPh¤}¨J;5ð ââ標ûjæ³ jøšÎ(¡]} ŒþÍ•G:TŒ ‘Íï‹H_ã¥ÁÏþ?/¿‡W(O.l”v@â‡D°r?h,:ñ4ħ•Yg†€Z47Í"53©©¼èE(ý¼Ö‹JX'²®:4±rYŒ¸ æÊHñ ÌI9 Éù_Cm‘PÐ.Æ/íù7äþJ ¿Rù†åœl*8%ƒFú•äœ1¯Å$å#Á²;!®`ËÖ¨‘q›PC•Ç*¶Bü•<Ò˜ èæ5 ÖÞ?ëJ(Ç‚“ÇÙ|å~Å8)íPÁÆdü¸ )ì:·°—[(hÀÀ§~Ä0Áñ>~¥J|Bø$§ÛsÎtçGs/Œ”|ÔõÌÒê5*•‘×»˜û&ZH9Õ×îÜj]Š[A¼6TÁ²Eê¨Ô¨Ô¾¨¬ÑØ< Ì• E±EªÄR•¸¼C\Ñ*<Þ s¥°J#þp<í´"óì€äÜ`öy¥äã±ü‹šâ‹},A…Sê5[›6óšI* þé<_»sfƒnåm¶àF˜h"̸®ÔÄdŽGgi¢ó´œü1X$%–Œ%”Ž%–ƒ Ž«UjáIð´6åì¤øìhÆ9MÎ- ˹4‘{i´øòPˆpcõŽîÒîÞ™Úɱ»b­ò°±çáL_«•vö¨¾LédìÔñhÉ'k"6w2¦TË-䕃j“*'xÇÇù''§AÈRÏMfœŸÊút2çâTîgS_h˪5!)<‡›¹«C¡Ae–GhäÆ:þ®ŽâžAÍîþÊÚ©Ô¾¯ÙÚÄ–x„vöªg9©=€,R2; ^[ -GȸÚÄ÷µÉUZÁ© à%:;)ú½6õœ6㣠à•}i 4÷òwEÕ*®ù¶¢n,T\õ|ýfhí¢AZû‘Ô¯BаJÍîL¯›3*Ní^MC[ÿèMž¤%NÒÇÍëçæõò zù%ƒü’~aY¿ð½AAe?”¯©'û¡“œ]Kd† . ]T»¬,º¬,«/«üR]U§K)ûe}êtµ8p ÔÐ.nƒ]¹"EÞ+m¸R×Ðô»Š?ø…äø†dÕ?ª„É)erŽ! ˆEZ_Ì=Ê;ÆN. O.”²q•‡ Ë"RJã2ËyEßÏ݃ £µ+‰viÙÑm×fcKøàÀ‚¯QúÅamUì‰ÿàòþÉuÝoT﵆±½—¤»ñhpõü­™îbx¼Ãðð4_?º³M.ܬQƒJo†,é–¸¿ð/Bõ¸Þ_ÿ|Iè¬,>0Ñ{ ÿœ×/êM¯¡×ëÜ* I„Îá‚|Ö‰!Áhɶ8ÔÅEd±„«ý3£“¬÷rÀÕ­R#G(¥séjâwTX¼‚ýëçkΠFWÞ>jމåÁ—t t)µy\·©9ÂËtüæ±l2o¼µºMÍ5kóÀ–c±Míµ§†½A‚þÏŠÝ!;šÁ`°VC»´@wEGý",áæ7ƒ» Ó¿!@ÖÛ/ßÔqqµW<ÕkAÍE›N<-:iÇÁÔܾ‡ã”µ»9ædj` 1Bf‡º[ âäTjit²¥µ¶Ý1›‡3:¸©¾†.6ž¬Ýâ«S³Mʱ3˜œ_¸ï†]ûÆÌ|h#±MÍÄÌ$Ó[ìnò…Y» =òqô˜{|ÀD66¤mX(´)ºî6.d±ºsâ¯î™ ,þC‘š53rö!“5ÿ¤r!;—ôn‹Pk~A~ö†:5‹7M„¤ j„ 8Ejnó5ZùÞ1j6Bò}ÍmÔLJ6ZjžÔ­·6Ì æþ¼f»P°8µ™G‰™yAoÛ%Égc_aæNj›¹f´»tw`…ëNjîý•—¶,7ΣÛÞlj[wŠöÔÐ7MP³=úÚ¢~ t«PÛbûk¯5X~n65¶ ©¡¸$hŸ™So“u3í7ƒš ÿ¿Y7×ÞåÔ¶ä¼iV<³‘ã\NÍ)%ÝÙÃö5—Ï¡o¡lSÛ¦¶Mm›Ú6µmÙ¦æX5³MÍIÔ<ž˜ÎA4^Væé±ñJ­mo‡šŸ—³øJ„-mo5BíR³øn2»]Þ{ôþ5«Ï‡Ú~q]jo’ýKÔÐãÏ<_ù¶®HÍÞKù:<¹Úÿ3Q•¸ž®IEND®B`‚pygtk2tutorial/figures/clipboard.png0100644000117200001670000011656510101633742017010 0ustar finlayfcf‰PNG  IHDRú8ÇAõòCÔ7"ذaÆmª—×¾#@0ù·šRAØ Ð bõlÈ PAàĨØY5ôËËË+ÒC¸™œ¸“ }5¶z_Ûg±aÃÆ¦ s+ùâIvÕ· 7“‘¿G7ùv‡ÃT/¯Yy ¸fÖ;É÷ª¡'‰d*¯=œ$@ÕÖCŸ¹?œ 'r9¸9]ȉ!ä—r!'€!„mæŸVÝ~6lØØd7“.' „ jßVfñ6ùör©.š&Ó|bÁkV¾ÁîCmvOž ÚãáTT€ª­grâLŽaÜ4C14ED£\Èé'T0Ƹ„Õ²Z*©¥Ò¢¢eyAî¨k+&ÑY—p¥¬õ‚…ˆM"êX\*Q]‹j‰¢¨fbÉ(* â¢Ât¯DdtbÑ Ê,ãn*.˜Ä½MEeAfÙ‘Ó‹o^´ûئâ+ƒ8ç1ˆ\SQþÓ$lý¹ºø,o‹¶¸ñÏ9Ž­+¼TB:›.'°½,³—]ÅÛäÛ•EEQ•¹Â,ñÁ9;ÔçëU+_m¬³z•ä$_>ÀN2Å×u “d¬ÕêÈò;rAh4îP@õ®”)Dã ¶q™êj)ãÎÄ¥’ÛͨK‰jÉÝ˪ªj)–ÔÛ *l/W•þýœ²Ø±xS”šXTú=zQöz|²R¬e–½‡ubÑ$ú|òÛš¸Ð * ²ßç“åºÈõIuñŒ¯‹oLâ@Pz)[‹¯^ð'ÄÀ‰¡ùº8š—¬EùϹÐI“ø¬.†O…óϤº8©‹Ïò¶h‹‰æCƒC’\W%U¡ºÜ8éDÁ‡Vgñ¶äv½þXç"&†ž}"jSûj §æ²_þïræþ4øW¬zãÓÂV¶>{õ¢ªâð… \)ým¿ÃÂCšÛúÔc%\_‰­/SÛúÉ †¢†ÎOT¯®ÈÖ«+´õû[Øz¥ÁÖå|fŠt˜Ÿ Øú·ÍmýÑu´õÁ5Ùz½xj¨ÁÖëMÿ6±#¶¸ÄÐç‘y©*–Š2»ß£ýÁVQpºVn¬·G¿‹k»àÃiêÆdëÛ\ÑïÆ ymB«qôlÀ5ucR_»«‡ýwöøÿ5'¾æ¬×{u4»¯9î1`§~jœ óúè?Æ@¸–4´|äÌ(LÝšª©Þj~OQTxÀï=Ⱥ) œ€1VÕ‰Ûd‘+ /˜ÞþÀ§UUÇï¦\]”qš_›×S]*¸¤QíéØÞÖwÓ¸ÃyýR‰¦(Ô…”7/˜Þ~½­O_½hxÄG. ¶¾w…¶^/m½§aæîñi…œ.ïá¦Æ½­­÷oš­?ÑÔÖ+Øú¦ÓümcGlqˆŸGò5[¯¼yá÷ñÚŸ•~öi°xÚz—Åí5˜m}'·[±oÇ&IBÍÖÀșѩ[“æÛ¡6»'~âÇÍ«£ ÝѦùNÐÜ=\›÷×m½ `ô\tòjÒ`ë`ä«‘Ô©z7YeÜãß…Bâoó“OçÔ’Êì¡<ûûK¥b=S‚ß\QÞ¼'0Ýl3—N-s¹zµ­K§{e.ºg©q^O0ziB§–þó‚éíÍÖ¯ŸKÇ`ëõc´…q7‹f[/wnëñMmý›l}³iþŸsÛÖÛâæŠÊ«9þX@ªý-àJ9kæ²ÑâtlëMnofëae·ž¶¿½†%Ù†ÐÝwâÌ! '²T}ôlt꺠·õµ.pÕžNÖˆœâBÂý\òv !ÚÕ…¤…’øT*ã#ž½~QUqäRW0ùžz$FOä…büFZUUŒ«V><ûrXZ(NÜÍ*JBÇ|Ác^w7U\T³ç2 —Y–û"Èö¸‚bQM=ŧ¤¾£(”yTðæ"—’à„èIž÷ùt+»`pß“+ù?æh7[ZR7ƒ—Ê´›õd_ÕÈå$CQS—£Éû9¹ÈFy­ÞôL>W˜¯5PM?žð#'JÞÏá%uìË1”¼—ŸJ¥¢’ÏLª*NÏä#'yéœzTÐL!€Ó%¿-r¬;r*Èõ¸UŒSDbÐÛOóÜ÷ílýJ¦ùÚúW¶­·ÅMÿœ œ¨»ïñR‰¢hÍ}o´xÛzdy{+[moO^›ˆ};fy{ƒEgoõówmo˜Îkß >Ð;s\Îz …kI}Ý#ߌl}êVªZw³Ù½<ûYÈ<Ì¡.šv3¨‹FÈ…ºhšbL¹±üfŽ|£ºÿ [x.±½îHÀ—JT TÅû<…ç×ë>æÅóENñò‚>wåÅ+9rŠø8Š¢á¿8ÿìÅè¥+#®PŠœ h ðdÅœ² ‡|c¾Üc1|6®¹} Kµ$Õ¨Ÿëc‡N<},EѹÄ'ùÂ$w7ðp‘Ïùâ¢*ÜKÉoe}½áA^«—ê¢üÙüÓy„ z*0<È‹…y„ 4àWä~Gîå˜Âæ¹YÞÃ5.+•©.”ø6Ât¡ÑËÒs)z:@!{©Öm±™­o¿T«·x+°õN‹Û]“¿$'¯&'¯'§® S7&§nLNÝšœº5ÜŽ¹¢ihaëk·ksví_Ð…ë€nʯý«3ÕWCS'¯'G¿‰N€ÔTínT/£ÑîkÑŠZ¢{úëW+ ËËꆘäÁ½4ᢨÙ[ãþC\cDšTÁÑKt7•½1î?Ä•¯ Ác^H\JKªð«Èñ ð©™®ÐÓ3"åt±{Yu »»©Ò¢Lw3¤ü‘ó‰ÒFGý¼›)àJ­›ˆÄ¥³T5ý“ß_ÔtýA˜“æÙ^n2#zö³ÑÓ!pBì‡$€ W`zFD~®_«uÑDùÈù+ pÌ€Ãgãä;Ý…”¿T­ŒÛþÄCXÖ=™ý‡9„ 3“Ÿ{%±/YßO?ëvÑ”¬‰Î¥Ù{Ô'¿­ŠÕy½Näù$Ykƈo^ð"±æ–â«ü`ƒ Î×ÅÚDÞJ¬Nä[ŠyIÒÄð©p]|žGlÑ;C§"ó5±T”Ù=ê’Ú`£L¯3C_Ë`¸ýÃæ·;œ®6·k5ÂÕ¬öF× 4.Éê3è½:ÄwO®bätZ>ucÒäÀibë«ï&½ L7S„¯t5Äà“™»c\)3¨ a\BNVKG]µô¥’›¢@)*ÌÇýªŠÀí¦°ªroìtÀMQr±Hò@ØžjnI-1n–éa( i"Ô”GN„ÕÛË•–Tä¬êí „õrû½da@üC |ꑊâ“<ÓÃr,k®×ËyªÊã2ÝÍhßÙ½ÕöÖ6¢µòÇ‚Z¥´Àð``x0@RÜÝ´8Ÿ§(Ô¢ì?ÊËoR”R”ùV¢8”4qA 3ˆC’,[‹o¤À@ q.0–^êÄ:ñÕ\h°.Êfñ¤AŒÌ½”ªâŸùЩ¨-Úb‡¢T•É{WJÕá­[ªm°xâ1s?g°EäRät$0À›,^£Á„VëºVÓho-çÖá¯FšÙ[³}7z=Ëü Ä$½€¬^m¦nMê[n®»¸â4~æÿ” r*€+¸Z2ªeÕUßj„ºUC'M×ÒŠK*0n±},‹*TÊá¼»› ž‰ “jŽÝ‚ÕÔpu)—¦h†eµgƘêaKX%MÐîaxÙ^º·Ÿû„ÇN'0{¨ÀƘíqxDÑá>s½Ê»Úª¯Ø>Nû®âR½UM(ÿ¥TS+]4L?½0ù$ï¦I程%Îã—…è¬.–¼ñ°^Tü‡yI/úÌ¢\6ŠÇtbQáD™?4Šouâ@]TŠrÀ žJr]:1$ÉRU\†öh‹+ÕEÙ˜WÞ)õ?gTûsk´xÍl=¤î `¶x·ë×Z¿XÞÞÌ‘¿…-n'ÆÊY:Ÿ>è|;TÄÄ€T0˜^IR·¦ÂgF ©­¯Ï‹ §¸&t‚çúØy©XÂeºËűn²p .Ý]õø$¶—xÈ>΃ÓEÞ±½ý¡zºøDô ‹O塤æÀé"sòÀQ/êr³=nðâ-UtêU9‘ôFöìgç"Åh¯ ã.—quº½¤’äÀ1?ÓÃa¬R…1HoäÒ;9ÅË‹jüûñÔÕDìËpøB‚‰6¯×U.×9l}¿Ÿ‹¬˜Xï§Kü}.àã†OðeŒ1 äu ÏI²ª*ÜÁþR©D2[ˆžþÒ_zÑ«hâ¢Ü^TšˆE™;ì•u¢ç°¿Aô5‹EÙoúå·u‘?Ê¿¨½m$þXÀmqÅbQöxüÚxÆS]tKµ Ï€úœ½ö£Å³¾ÝÒÖw~;¤nMÂ_´¨L,iú0LùÉ¿Îúì97y%i\˜µ¨4ˆ¥T½– rû=ÞáAÔ%,½’óóóc§w9 .”¾š€ ˆ¿Ï w34E¡.ª–~±žÞíÎ>}QÆ¥à1?Ä£ª8y/“z¥{ÙÔÌÜè ?úå°ø‡$<#ƒ|äó@üFÎPQêa¡\žÜÄÝL´;@Êÿ­©„1]ã*H|×ÀgûÓþ^Æó1;r~B.sçÇ<‘“¼ðh.v’Ô;ߢ^p•ëkeB{`n ¾sÊÿ…øÍLÈÇ…y„ªbᡨ.*l_é]¹šsIeÙºˆ‰Xª‹Û¯ÔÅ"×ç­‹ªIäZŠ[ˆ2wЫüe-ª‹²Ç,*uÑçñËJ©.æëbÑm±SÑsЯ”Jµ?g•¦©òÞ¤õoø‹Ðô½Líï´–§#–Ï`0ë~ïv óíšÛœØzWêN*ò·0¤¦Ó–·ëíx5f£+_?Ùw¶õXú«„—JeŒÍ¶¾ù+ "9Sw…‰;9¾ÑÁ]W«\Vä’Z¬†©8]4E±½ÜÜ"8]^Ÿ+ÿ$ N—ßÇOþsXUU~¸j^i7ÃõU}ÜyƒIÇPFN—"ËJQƸŒ‹éa†€Ò»’üçìÒ ÕË£ ÄÒ_ ®@y©´Òºjæ>dmî`&Th'¿VU•ÿ*æ?ʷͼ"Ò­'·¼fqòꪾŠyòë[òªDTßà¶2±Œô›ã ".£.[´ÅÍ ° fRùÂZ,ÞÐÉ¡­º˜{woÀ<µ×`ŽÊ¯Ý]w¾CyåukþeýB몑y,åÏ¡u*­Š |0àªjÍbæñ|þw´†¯_É«ѪDª•ØUq#[´ÅMMNf k´x[{»å¦*í‹yWmµ€*™N!p®¼âšùsu5íÖÎ!(¯Ï·.¥m<Ðz‰R±ÔØðu+y{Š.[´ÅM°F‹·µ·ëì;A3ë¯)¾pWhÚ/í@9_Ûæ´aÆ-û ¿F‹·…·èí¸%w‚ùR}©vyyY~U‹k9šË†‡c¥çAÚ°aãýƒfc§ï­ÀÜG¿Ž¥¤#’Û¥gR04¤?ºL“}ó%Ô²ß\3køØ>ç݆ F\üßñN²9ŽèצMXózÐÚ›iõŒ˜H#·±KaXÞȯd¦‡Ñ3Ù¶BÕ­¬w aŠGÛ)u‹É¢Ù5o0î {|ÐÖÖïëë·ÿ]õ¿ÛâcÑñ¡cóëÝ×·/_ȯè–U«êp8 ¿Vqcëz…ÛMÓý×ÿ‡Þ¸’õPÕø…¸å¥÷rTÄ/ÅÕÚiïôÜ †íµúõâEš5^¿|aÿ»ºõ?Žž­“Íœq¹\ÚÖ¤âBÑõ‘«aÈcÑá¨âÜ£¦úÄ­!›òˆ”µ+;ÿy|îéÜZ YÇ’WÖ¢ Á϶>¼bÓFE0 Ì[&w(ôÄ8Ð8Í×'êÅô$ –Ø)³Ômb÷ ø>÷¨Î¦}˜Åkojé‡éÀ‰€þ…ÔëñΊ³ä{0œ{6gH܉в°veÔE•íaWìyذ’WÔ¢‰klë;â[¹vëŒM¾#>¶¸6Ñ>ëa¥ÆÖ@‘|-Q›àÐÚÖC£Í²±"è¼À@@~%Š0ÿÇ<®`î—{X}äæ'àp8&~š ÷Ðã?Žçù7ÆÎÅææçˆHrfîgŽóÇ:´9šô\:Îïçú†q8úL5ßR0t¹\.—+0Îì’×’ûúö¹>rÑ{háv5r ~)Î0Œë#MÓÂÍV‰ ™4Ñ7DŸÓïó'¯%µF‘æ‹3¢ÃáЇúï…ß ÞÃ^zÍìe4Uõ·ôQU}_”q8Âma_ß>—Ë%ÜÄ‘¦iš¦32Ðûúö@ð³à•®€üJ>þ?ÇI×ÅÎÅȲ™>útsC %7k©á×7·ˆTáøÐ¡­dö2…ß ¼šŒœŽT¬]3*"§#É«IØ–X…ØL{©¥ëµ þ¨ÒfaÏîW ý“’;À¹ÝîìLÒ™ôÐàPèd(ý0 dš?48Dr wqFôûüD$Óùl.;þ³q?v>6öÝXþI>÷07ÿÇ<ƘàC'C/¤ !4nÉ€RÞ*åryòú¤!w€›+̕ߕãçãäÏOz.]ù¿+ù'ùò»²¢(C'‡š%š+2hbÙ‰Ÿ&À ÑoëQ¿†æ[BUÕÀ‰@ìl¬ôW)÷07rfD~%·¾ÝÐWfe’×“Ù‡Ùø…øèÙQá® IR`00þcÓØ‰×/_@ö×ìÅ^„ 8Î}Ì•Keé™”y˜‰_Š·Ö‡¤÷sýæ†èKnÑÒ¶-"UL^LÝK‘Ç8#Ò]´ïˆ¯¸P”ßÈ^vÙ¨ðz¼ò›ê¬k[Aof;4¹.{hâÞÑ¿|€¸ß½UÀð³ñ<™åedB'CCŸ Šóÿ™gDîGuWI#—žCÔÁ¦âÄåDàD€¼—J%qF,‹‘¿Gšå‹Å…âøÏã¤.¶—5dàñT7…—0[;°—¦hpÂÄÕ é¹„"7Z&6TÔNé¹”ø>‘º›jhTÍÏ=ÊaŒY–-üVÀKØÝíÎÍäZßnè+s™‰K n?ç;âà ׷Ûí÷ù 'Ô7Cá÷‚üFŽ_ŠƒÜnw䫈¶‰¦©>—žCñ‰Ø¬!í[ÚA‹<‡<‘Ó¼Tu&o&#_E@^€üp»jT ¡ò¹E9›³}ïÄâ›=9†Ð{ý”¿Î™ÓÖw¿³,~áé|x8¼t6èFÏEåW²üF&ó)·Û{˜“ßÊCŸÕ§Bæ¿“fp÷¸õ¢¼ £.ÔÂá«,(õS½Ìn ÉI®ÓNmt÷¸gs³W~¸Ò°ŸÛÏ 7ß§>ËÄä/ÉØùø}þÐÉPkM’7’ÜÎ`_:i¾RT@›ú}~ÆÍ´¾ÝÐWfèMI'ÏZ=ä·2¸ÝÕ*Ünw±Xl­IoтڶˆTºPèdH¸+x{srÂu¥BÎÙ}£b›Em®ÅX™yrÌñøZÊ«VeäËHürBã—âý½õP“¢ÒïñêÁ OçµG–øX$kñúÄ­!–0ÏîÕE5~)8 ƒ>8LÿšÎ>ÊÇýÁt3x ö`ùlŽ@`zh>µ‘þ”FÎŒ¤ï§SÓ©±ŒéÕžgK¥’ÿ¨?t*Ô,1úu´ü®\~Wžý÷l[M—ò™x¨[ÀüêÍö²¸‚SwRéLš|B'C­ ÙP°{ÉIjU=‹Å¢fúÛÜØ®!ëÒÒðépæAF¸)ÄðqsP\,Â.¤Éæ7˜ÃäÝpFŠ™noî›™cßQáI=–97#bŒµ˜Yñ±Èõ럢ŽKMW_ÐFÎŒ’âõ‰;ZC,axRºÝnn?7}oZsk†CÄçîùÄÓ¢Ô…:‰Tãñà„øå¸ô\ yž–ÁÝãùf¤¸PÄKØŠNª(‹ê¢š¹Ÿâå,üV€ PÅÕN^´LìDCC(ŠÊÜËÄ/Å-÷’ .4ÿǼô\ ÿÍH¬8`{ØÈ™ñ-‹E³µýf”´¢:ìÕNà;âc?fß' Å…¢pCÐVA[£mC:i©†f- B± 1Í‘BuSžC蹫FÅÜÓ9²ŠÖ¬w,ýõÐèä1㓸ûV¯WÍf÷þ£¼üF.˜&A¸ý¬ö ‰Eþûúú…‚÷°?y#9 òUäÊ÷‰yI"‰$gîQ.|:²¯¯_;F’¤ðáã'‚^Ÿ__¿øÄ¸C–åð—‘þƒÞþƒÞð—Æ¿1áNÊŒï?èõúüÚÿÄÏI¯Ïßïñö{¼Ó-õ0k¢oˆe™Ÿ”d¯Íå‰KG[¤m†øùxøoáé»Ó­³QÝTêV*ùKÒëóÆÎÅÀ .WÃÁö!qF„ 0,Cï¡jû>õ Ÿöõ{{ùÞó‰ÇÔ_Æåè?¢.ÚåúÈ•úWŠô¡eb'š˜âûÔ—¸œú|Èë†AO‘vñÇ…›í£BGÎŒ–þRšQ¤hîõ_ Ñ߆" Å2ïó‹…|èT(÷H¼xaŒéf’¿$%IRŠ û1«-Œã8N;H¬bgG5k®.•òOuQ Þtò›/ä‹Åbf:E¬³{/cÈàóùcÌì­ždF„@¸› Ÿâ8ŽøÐ-*z’o­‰%6y•[z.©ªêùă—pô\”;Àm•…Ý>šØù•œ{”3GX¦3éä/›„¾å£BYPÒ™ôfÖØë²CÞ’3Ç’=­ê»oíÌi±”ê?êÏ?É˲¬¿ÏÏä¨nJ|,jžº›îPu¦1< ¸¨ Ôj)¿¸¨‚••×0}?<9»×ö˸ÝLêΔüR ~6t| 8ÿt¾Yâô½ñí„¿Œ´ÕÄ›¤ªjä뽇f9/áìÃ-›ÅlMlÆ852¯O"„ô«¯-Ño£±zÕXî -Jhíº1SèèN³j‚6Ë”Wոĵ¤ÿ¨ŸôcàŸ›K‹JC¼×jAQ4Æ/aÔ…ŠoóR¾»Û ²,³¬Å4A~)Ç/Äóâ,ñðhž\ŸÏïóùÕ%5ñýxält®·Lþ"<üEu]„ô¶ÐÄ›<»÷}ê{ñlëÃOa;ib¸wÀbít“a 3Öˆ ¦³ -ý9úÝÕG总›b?fssê\žà¥ç®w°ÕðB••¶Uû}~pBòzR’¤è¹¸ ŽzÝnwür¢XT0ÆdV®,Ð+‹EuQÍ>Ê@ñ­R,*óOç¡T¥Íw,;ѤuC¶Cì¿ 6ÞW´¶õjÌŽ1[Û,þ¨Hˆø}~„”oq D¿ŽÄÎÇ[’P5þ}B¸›ú<ù* N Gøj@N”º#@û÷ö'½“žÃžÐÉÀÐp8p*ä÷ù¹\h8\.ãø÷‰þÃÞ~7÷('\M€eb'š´nÈŽÙR°ò+YÛ¥±nØÌ†¼/ÄŠ+€=N¶ôfÝàćF—N52ÇÝÀN¼ºÈœÍ„ªªÞÃþYq–mî©ßžšlAdÎJ >óÇ7_=‡Ã1+Îê×xÖˆ5ÄápäŸä}Ÿ®’²Y]Âm!v.Æô0ëîµØ¸’õPÕñŸÇÍ1ްkÆIüRõ‘Ëb-u¶TUkH©T¢(*u'µ¼¼<7?Îj™†XfCï™Õó|ây!½H\N „†O+Š2|zØwÄgè4C±³ÿž]^^^þï2ÛËF¿Ž.ÿwYQöcöâ?/êßò»²áF’®¼U,•×JnÖºNZDª˜¼>IuSËÿ]^^^žý÷,·Ÿ[^^VÞ*ТÏwÏ8)ýUå­bþ}×ÍÆ&.éÅfb=J)z›œÍ¤«¦»7@õòæ9¤t:»·ÿ]Ý¿zØ|÷˜Í-‹m¦³YU -xÏ[ôžE›WŽ“íɉo Ã^;ˆÜìØ©òÝ·8«¶u„¿•Âæ»7ÀÀlnYl3َ֛ͪD^«®µz6~³rvÅ8ÙfœøÍ gº7sßÒÍlýŽŽÙžhÆw¯•Ü‹éçJ¡ñ‰£.ÔšïÞ’«„0›¿–_³½¬øXÔÖøžàUU…N…E±LŒ~~]=m.s?ÓZ‚ÄåDôlôÊW.þób³º,un¦*Æ{¾R½ŽÐð‰Å_~3å×¥uáÓá¡Ï‡¼½f|·Û½ËÇÉâÄo±¬b1›n³Ú¿Õ®éR›ï¾5³¹e±–:[ªªÛŒ÷ÜfÀ¯²“ð7zœì N|ÃŽ*KŽþßVG“«‹Eû³öOæ^ýeÙæ»oÁlnY¬¥Î–ªê›iÉ{n3àëÕÛ¹ ø>Nv'¾>â¾udÔŠï^]ÜvçµïDˆ3Ù¡á‘e›ïÞæ@ÞN°ð-±Ñœøº«¶Ù¿Z²ÍjƒšfcS!=— ¿0ƪªn9ßý6ÑĆ%~äŒÑ¿”Τ73"eŽ“íÆ‰ß–ŒÇ–s|Í™Ó42ÇÆÎ–ó‰oCMlXÂfÀo†íƉßæmVPÅ4Æej9›FæØØqØ>|âÛG–°ðß4ºq ÓylˆÕé”Ù† 6llC謼uX™à×1[ó£ÙØxoxÌõ¨˜¾ll+e6öèÚ @¸öÅr‘È~+""@`'ÞKµÛ sßWˆELJ[°¥n_ß>Âî²Ð¥oÃá0„¯k,¡YW ·š¦û®?õìÆ•¬‡º¨Æ/XG.Ú£kã@|8†ãÈ¡ñ´BÐQcjŒ˜ë¦½‡YE/§î¥Ø>Îßä ¬|!O3ŒþËN„ÍwÛ€ïÞÌq¿öl–|›%Ÿ`í£kE ³ûê)﫳û•Ní¥?_Ð{óÇòœ¿œH\Nä7Œ¢'_ÈÓ{¶ø9aóÝöç»_l–|›%K Ÿ¿[Fßë/Ug÷+ÚsûûK)äS7&É÷fos@]T7³qœDÞƒžì¯[Kkóݯ/¹ž Þ’YÞò¹ÿ`¿ËåÒÞ´,›ÜŒ•l–üÞo–üõ] ËTÍöXUc1Ý=wV|÷šYoö¹×¥Lù>õ'x’8›Ëzy¨nÊÝãž¼:n(„ÿ"„.þïÅÒ_ÊÜÓ<̇ºÕME¿Ž”…XêÒ_õ/–Ù¸ýÜøÏ㥿E~ NûÇÉIQÔøãÚ–æŸÌúŽø¸ý,¡‹Jÿ+ePÒ\)jüû„»ÇMQ”¡ôŸôôØ|÷ëÍc®uT©T23Ëk2÷Øì¿ggÿ= é¥-›¼Ü’•ÞfÉ_Þ,ùë5ºÌX_¾{=½ã^õ_>ÀN¼¾¡÷W¾¿;;:ûk6÷Hœ›QRËCÃCÑ3Y’2wR£çbò«†m{sOóšNÅÎŽB†N…ÙÞ~奜,扉­|DVÙü>?²ÙÇ"r"ñ‰Ò³!®q«žACŒË“CCŸóOò²$Y¼d4×*yCHÝ"§Ã£gc%µçÎæ»7`-<æZGIÏ¥fÌò–=FÈ}G|äÕ§zSVz›%°äÃ:®†ÞccX›Õ2ha9ðúbŽãñÞÃ^P—Tq&§.a¦‡É?+aìîv‹Oš®åæŸæå7òع(8q3ç‡S÷,œ0–Ù|>1÷¹G¹±ŒÍÿg/•³E~€7Xp£†EuQ Ÿ^…V/Œy{£ßD1ÆóO۬˂¹™œÆwïùÄCøî33Û‡ïÞ{Ø9SÓ„[\z.õìïçúIìebò—¤ë#—ë#×ñÿ9ÞVKsC±-t&Õ‚YÞ ­Ç†)©%Ë&ë oQB3l-K>ù´`É7gX)K¾ªª¹G¹È—:k[°G—ÕèÚPX:s@·©Êฯb®¯lOÃ8+ª*r¢äM!ùK2ùKÒ{ØË¸›š32(µÈìaŠV4m–Ùü>q¡¨,(âc1òU˜íaó…‚øX 3ü4TŠ*B!4A ­H"MÑPZjó7ã»Ï>Êj™kÆw„èµ9ß½åí„<}?šNéwÒóü¬8[*•üGý¡S¡f‰Ñ¯£åwåò»òì¿gÛjB¸œßÈijܬØÖ:ƒŽYžˆ2Ë+)Œ›iÖä­ÂêÚ:êöt&M>š³¶:Aøt˜0ˆ™YòÁ]:ÑÕ6Ûa¼ÑGæàÆ]µZâ†ïªe{ܸ‚…«“©[ùN4Ù"}DÌ+(Šâî¶è\ËlŒ›q÷¸'®Žss4EóÇøô£ìüó¾&ñ¨n cŒ—Ê@žöf+ÙN+eQ¦ù¼†Àæ»_/s=VÁ,/ý)~/„ÿn͇N`³ä× Ù,ùz¬etµÎ¶.ÐÛtÐÍ÷ÁwO¾l¸¹ Y·;z>FÞnJ‹%òe ÿa?ÛËN\MB”¢"ÜÂ_XpÁ7ËÆûüÂíi²¼ÎóMß›æp4ÕtÚNÀûüà„ñŸ'¤?_„­‚-´"qó ÁÝãö{¼í{Ãæ»_ó¬„Y~èó!ïaïЩ¡Ô”5:Í’¯Wo7°äš¼êÑÕ,ÛFÀÌzoðçTAõò_dNö×´ö=I—þR^ÌÏNˆ»íeSwŒq/ZNãû´£ÈC¶Ò_ÊäÕq˜{š¯Æç\ünÌp£¥†“W'B¡©[Sà¬gÐG昫#ˆºç'/ζÌÙ<üw¹ôW jq[‰í£‰õ@àD€ Óë@”Å]뙣É!_Ì)Ú'¬Ú}¯™<Ëí;Óäî4]Î6ÜÅö²¹Æ e¿ÏO2h_,³@ø‹0y¹ÔåÒ2ëo´Ô0üÅPø‹!¨@i©`L{w-«€ì¯i¿Ï8Ü*HÏ%UU=ŸxðÞr¾ûm¢‰uaÉŸ¼>iHOgÒÉ_’›¦†=ºÌ9–”ëwØ~€*»ýxéÏù§sÄÖÇ.Ĺýœ9†lG`û°‡oMl¬#l–ümƒ›Þ@¢``I#‰6ß=”Jjì|\^‘ù}þô½T‡7N]Ÿ´\JÚ*löðí£‰u„Í’¿­`Ého ä9Nû4+¿ÏŸ²ºž¡Sm–Xmذacƒ`ˆ¯7‹ sìï+æÌ±aÆ ÛæY|3jÌê6+°&߈_Šo-}« 6vôd fdKjÌVÎqf—®l ‚``0’ß8fP6ll+´ÞÒÑ9,7Óè›.Õîèc4v"|G|l;qmb;ìæ·aÃÆFc6Öpv•–h‘YÝ7+kyyy-ªØÐƒü®Ékɉ«JQAÿ8NH¦Çøã‰éétätdä̈mîmØØ ˜Í­éKž0-Ï’Ì䪚ûîåWM·YÛèÚûw€›+ÌQÝÔÄO±s1SP¸#ˆ3"÷1‡1&D"mI mذ±Ëa¶ïzN4óÔ¾ïÞÆú‚?Æ@3ju 4™òÙ6÷6lØh ƒM·<Êʰ`ko³Ú<7…ä$×Ç©K 8F*sû±aÃFg°ä»Ó”¿ºT«¾©º ë#g6ã¸ÅÝ­{çÿ˜7¤hÇÏX’ðØK)6lØÐÃòl=/¦9Ó ¥·vÀå¶½·é 6lØØµ0cbˆÂ4äÙp¾{6lذ±îhk,iZšmîmذacç¡YdŽv9>ö²  6lì@XFæ€õiVmÎYµ6lذacƒ`¦¶¯}×_ÒQ¤Ù°aƃ»¦æ¦o0ñ óù€í̱aÆËÃÇ4.Òjך:sß ôÞ ôL&¢ôR¦÷ÍŸÄÕhÓE~p”fƒ4äGÓóZQôÞ ÍKÔ¾œ/ln#l¶üJÆx•‡$w„ŠéËîÄ.lþ{9žMh´ò†ƒM®[¨yx,9î‹T7%ÜË‘®-½Í’L]#ßãç#¼ž=7(ÏÒʳtd80röJòFÃAÞÓ™:ϧød¾X´‰Ý· ÄÇ¢ãÃ-`?Ý×·/_È·Ï·*hZQëGá·Âzé°.¥­±fÍn 4M÷ì_ƒjÖØ¸’õPÕø…¸å¥÷r<[ÂˆÙ¸Ó £Z],¦Õì>7“gÜôø¥HêØöyUZTã? ñï"á/¨ ¡.þ"øg$þƒPªÑÂ|½úN.án60à[k[wÈÉ'âcqGSçå¶ù.åÿ–[\]iÿ·.mÕ…¬½cçcã?Ï=[K!ëXòÊZTÀ` øÙÖ»¶v<Bq¬rWÓ›o³îå¢_…†y„Þ-c ñÉT âõ‰¡Ïx¨€ø¤ú“GNñò«âܼ¥EU|2>É[”e£9æžÍ€×ãg·Z—Õ#’†ìPl“þ_{7ª‹*ÛÃJ¾õÅêJ^Q‹&®M°}¬ïÈÖO·|<Ë®;§Ð|ˆèþ59s”eî™>Ƀ¢§©é\ëú³#C5|1ݨ‹Õ7¶õ|Â×Ðô¿ÄÐ ?EÑkmè.C0Œ‹ÍÍÏi;‡#s?sœ?îøÐ¡Ít¤çÒqþx?×Ï0ŒÃáÈ=2þ|ÒŸR0t¹\.—+0Î’×’ûúö¹>rÑ{hávua&~)Î0Œë#MÓÂÍV‰ ™4!š“†èsú}þäµd‹b-uv8?MÐ{hqF”_ÉÇÿç8Q;v.ÖÌu[ø½à=ì¥÷ÐÌ^Fkô\òõ{=^f/CRúö“ªñv|èˆ_ª: è=tê^ªmÿJ³z-ªþ4²Ž«‹ª¾C7:á¶°¯oŸËån âŒHÓ4MÓ™h‚}}û øYðÊW,Õ3t¯þ^}º¹? %[v¸¹ßÌ-"U8>tŒž­3w1{™ÂïH^MFNWÉ÷ùxÞh˜h/¬ØrÈ̳{aZTUš Ò{ƒWþßtáI~£´¨°9*jò¨Õ]ÂG>ç3òx ÷²‘/ëÒÔ]…l.;þó¸!1v>6öÝXþI>÷07ÿÇ<ƘàC'C/¤Š¢˜£®H„òV)—Ë“×' #ù]9~>N±ô\ºòWòOòåweEQ†N5K4WdЄ̋ ™øiœý6Ú¬Ø:“s¼‡½ÇŽssåRYz&ef4멇ªªØÙXé¯RîanäÌY[ãøðpxn~Ny[çüQ^|"@îQ9±wóÿ™Gqû¹¶ýo( *`V¯ó*̵˜»1y=™}˜_ˆžî ’$ã?G‹†×/_@ö×ìÅ^´TOß½fÂ>’ÞÏõ›ûS_²e‡wØ"RÅäÕÉÔ½yüˆ3"ÝEûŽøŠ Eùìõx[ ‚­Ï ËCÉ s|Ðm©5EæT u?—'µ…YßNh9Áç}^pB&Ó0Èü*‚xŸWKä z! Nð6h«Câr"p"@ÞjK¥’8#‹ÅÈß#Íò‹ÅâBqüçqòf{YCþOuSzF~š¢Á W'¤çBˆÜh™ØPQ;M¤çRâûDênŠˆ–ŶЙœ =—ä7rüRœàv»#_E„»³³Ü£ƘeÙÂo¼„ÝÝîÜL.÷(W\,FÿÞðÇé?ê''Ò¤¦ã—â…? x çå‚'Œ“GCÿ[–Vø½`V¯ó*̵Xd¸”àös¾#>Œ±p]p»Ý~Ÿ_U;ò)[ª§ï^ÔetËtñ‰hîO}6Ëï¼EžCžÈé^¤£’7“‘¯" /ÈP›enóñ¼Ñh™Ð`úhsÌ}îqÞ…×Wïµ¡ÏøÔ}±E`ÝM%¾‹$~R÷sx ã%œº—‹ÿ $¾‹Ðº^C](4èÏ<#_lýË{Ã)(ò‚ŒºP ·©² Ûcü«Ð ܼ‡½‘3õ¿yw{67+=—úö÷sý$JÄ21ùKÒõ‘Ëõ‘ëøÿo« AòF’;Ài¥–ŶЙüYÊoep»«]áv»‹Å¢EÛ‹ Œÿ~ŸŸq3ò™¢(ÃkŒ'SÈÜ£\ôë(ÛËŠODqF ßJýoUš¥zWa®Å ½E6[çÖhÑ{f«§O·ìO}¶Ú¶ˆTºPèdH¸+¨ªš{”ÓN¨†Znóñ¼ 0Ý“°K³'Gû·ÁܧîåBƒ ïn¡~uQÍÍ´Z°~šüyL¸•c1‡„éÜÔÕ‹ÑoB†l±³ÃãßG‡‡mOÎFéfÈä7²ù!Íô0ÕKVþ”FÎŒ¤ï§SÓ)ýy¹ü?+ΖJ%ÿQèT¨Ybôëhù]¹ü®<ûïÙ¶š$.'ä72ñó6+¶µÎÀîe@3RÅbQ3^ ÙzY\Á©;©t&M>¡“!Š¢TU%êi!n·›íe'~œðôRddò…r¥þ•"6–‰h?74Ä÷©/q91ôùPq¡hYlkœ0ûhVz.¹hçáB'C‰Ë¦<¡Ùdzê’Êìe\¹ü>¿ôLb{Ù©S±s1¶Õû ȩ¡ÁPsÔ‡Ö¥5Q¯EÉ_’­í…¹WÎzÏ Ëþ\Q=š¶È áSaw·[ïæŠ‹%o&aÛçNºq]`^°­Q'ÙÓ`ŸfµíAï ®ì𠨪Jï¡_¿|Í~¼yžÄm­‰‰` è9ä1˜ò` ù{dÞ¡µbÍãY~U}æMß|ŸXSj ïaúA:ò÷(¹]z&CCT/gÕ®cã®+@öiVï¤çRá·ÆXUÕè¹(w€Û* »}4±±£!¿’sr‘3FÿR:“náZwlÏñ¬¹1qk‰°Íwÿ^AUÕÈ×zÍr,^ÂÙ‡[öÒ¶}4±±£1NM§Ì±.!ýêëFc{Žg&Ò6Ùê½:úx|›ùýïSß‹g/¶Z €í¤‰ îÇØúm:Ûv<7²`;ú‡msoÆ ;,˜†Ck%ozxaúa>p2ÆpCôÞ Ë ñƒ±|a¾viõ¼ö®|ÖŽ_t•¶*9ý°!PÞ”^ÊäKäì„áa}Ð×ÅGÏM4cƒhÍæoN÷Œ@n&Oï ŠOæµrò‰õ„ÅÇó­ÏXØdî6lìnXžUkpâCC Ži©vüçÔÈÙ+ÁþO„’œÍÏLFÏÈv²µóÚkDù¯Ÿ¥çÃÉ›ññ|‡%7CæØl©N‘Ò©ëqù­â•$‹åÖlþúòÉÏL@`Àù29;NžpÊ¢ù&!\ñÇ<­K[;v.™{üR|› Û°±S`ÚcE¢-É%hdĬÎ÷̽RT¯ü¿éÄw‘è™ÝM˜fh÷z¸õåµ§)4t’e±ÔIÉ-ðDÏ'[äD]È{˜ËÜMPÝ(þÓzN±Ç/E˜nzäÛq¨@äï‰È—þ¨gË_wl9™{0 ì76Öf‹¯1ëÉ –Ø`îó…9#y=ÁúòÚË ÊØ…$BÀõvRr Ä¿‹Ð](vÁH†gBhhÏšnôX œ(uýbþyÿ‰QšF±³áö·lcl™»ïˆíc'®M´ÏjÆv°\›m<©@·¢Û`î‹„¼ÞŠi]xíG¾™ÐÜßÅÅRö_㌛ê¤äV v¡©«±ÌÂÁ¿oCÑ„õb¥ÐÔ&½Gˆíc"§CÒŸräK#iêúâ½!sœŽ$¯n¸ ï1šÄáX|×r6˜{7Uçº3`]xí§®Ž•ä,ñ§§ï$¼®ó’[Àëá¢_‡b’¥–~ae±äv·¡=±„ÁwÏqõ(`ù¥’ºŸã?õDϯîYÒ!Þ2w¯ÇK¨K6®¯lØØ h4åõZ-&§vÚI=gƒ¹÷û¼`Ip¿>¼öN0Ÿ¹Ñ¶dª›ÒOó«O‚ÞçÃt75z¾é‘ãô#1x¢Ó]Ëcem¬‡y3Ù=F«Éö2‘ÞêRžž×¾5ïf‹’B‰K‘Ä%‹¸uC™ñóáøùpëêÎbM5;]]H0ßÕ¬œÈ—¡È— „|Ñ3¡è™†”õ¤­@±ØžÌ=y=IQT±X,ã²F¿>6“¹“6ù~èó!ß'¾ÎÉÜõ¥ilé“?OêÕkQÅÜÓ9î×á6lØh\³éÚüÝp.¹a‡íî£HS¤´ùClývÆûCæ~3?o±ÚlÆ¡ñTÜhÙ«6Òd"›ï~`Å|÷Ûä ºlÎo6v)Ö—ïÞpª‰eÜ}}nØ^2³±yPâÁ·aÃÆÚ¡ó×ëµÉU¬€lFL›Šè·Ñö™lذÑj§—XNêõÇVWt±}V­ 6lìD˜¶Ô’Ä*Qš>*_3ý¶¹·aƉZ &ÒXºM„!݂љCï N]#1‘ôÞ`è$/\Ó_Mݺþꊹâ±oCñóÝ^·Ÿ%ŒÁ >žOÞNÏÍKªŠÁ ¬ÛÍqlêVœ”ÜìÆ†KNàö³ã—¢~ßv¥ÙI¨lÁ¾'ù•Ìô0„[{5Ø ·)vaWìÄ»ÞÐfôÄÄ[.Øâ*­t4»7³É¯Ž’72C_Å}Ÿpù¡$g_ϧ'¯Æ<‡êÛmšÝ¨¿ô¢b*òE0¢ÕaE¤ùëˆ}}ûòëƒ Úb«tְއ¬±¨f]!Ühšî?ؿլ±q%ë¡.ªñ Ö»;qÄnÈŒ¾w¯ùs4 ò¾º–Ûþhò¶lò¢´¨Æ.~‰ 3n œ@SȘ[)i0ã¦ÇüêÒ®;"ƒld])%ývCîQn 7Ñj_—nlA÷¿Òfš‹Z{GÅÎÇÆŸ{ÚžB|sJ^Y‹* hT¬[ˆ­±­Q›¿Ôm½Þ¥ƒuçXU]:mÌ}‡lòm!æ a+&;žŒd IDATý ‚çæ¥ä­tØÄµùÞcîÙl %ý†"’†lmíÝkoæÚKPU¶‡ÝÏÃêJ^Q‹&®M°},¡çÛZlíˆmF4° ÑAÚ%ò`hcî;g“×`ÉOž–Lú­ol¸Äÿ,6|*8~y×ÅóÁعØÜü\[Júãüñ~®Ÿa‡Ã‘{d¤l“þ”‚ Ëår¹\æÍ´ÉkÉ}}ûy½Fš¿gÆõ‘‹¦iBdß,±¡"“&DsÒ}N¿ÏŸ¼–lQ¬%•¿k¢S3õµë»ÑÌ×ߢoÍtÿæ34Ó²K PU}]†‡p[Ø×·Ïår 7qF¤iš¦é̃¦§{îëÛÁÏ‚W~¸Ò¢?MÐ{hÂP­AŸnî[CÉ–oî=s‹HŽ£gGµª™½Lá÷$¯&5²÷oÄ®i,yr@»D í#s:d“×`ɺŒLúœ'L³Aý2l Zùê%9ë9Ä:8âêýC6—%4zXRÒ‡N†^H/E1¯e‘ !å­R.—'¯_Ú¸Ü\a®ü®?'C\z.]ù¿+ù'ùò»²¢(C'‡š%š+2hB&Ô††Lü4Îj<¾e±–TþÚí-ˆþ Í´¬Ý’¯¿Eßéþ­zÌP‘9ƒ†ºÌª&¯'³³ñ ñѳ£Â]A’¤À``üǦ„Û¯_¾€ì¯Ù‹ÿ¼Ø¢ÂAœý>ãÞN’ÞÏõ›ûV_r‹Ÿ¦m‹H“W'S÷Räñ#Έtí;â#tª^ÞÇ»ŽÐ¦íPµægÕj—´ÐÌŽ1۲ɷïã@¸SŸlJó©Ôõ‹++Å ÂÏÅßç;<µü½‡’^œ‹ÅbäïMÏ@‹Å…âøÏãäH3-%Œ§º)¼„Ù^–œ2FS48aâê„ô\B‘-*j§ ô\J|ŸHÝMѲXK*­Ë«m›©Á’¯ß²o-éþ-{l¥ÌuYd¸”àös¾#>Œ±p]p»Ý~Ÿ¿Yi+h㥄çGÏ¢ªOŸˆ-zZþ4´ÈsÈ9ÁK˜œŽ¼™Œ|yA†Ú©Gï߈]WhÐQCíÐ.¡Ú—΢™œhêjìxÀznÒ ˜†0éã Dþ`{\ÁÊÊ×@Ø>&q)¿,ð>wp·“è)édÔ…Z8U•Øž¦ý&Ü’7’\§-†»{ܳ¹Ù+?\é?ØÏíç„›‚ïSŸebò—dì| ü>èd¨µ&ÉIî§ý [«Qù“<„Ê¿Þ"««m›©Á’¯_S¦!§Ý¿e­4ƒ¹.3ôÙl[£EÍVOŸÞºç[ghÛ"RêB¡“!á®à=ìÍ=Ê ×u~ €ó=±ëÙ…¨>ß7gäÙÐiðª™M¾,Ùáén*~>Âq¬p''œÈá% N`{ÜzZüf7Ê~Êæò᳉ü£äö‰Ý`ºr> êBòÙ|ª-ÓÀüFf?¶øû‘þ”FÎŒ¼–_³½¬øXÌ=¬NIøžàUU…N…E±LŒ~~]üfîgZkB¸œˆž^ùáÊÅ^lV—%•?™B¢²bѬ™zXòõ[æ´¤ûoÖcm»t3Ñy7ZõíŠ2t‚ðéðÐçCÞƒÞÀ@€<¸9(.Ýn÷{3b7zžý¾*ÜèÌÑÜúKµ¥·Yw¾ô6ËöÖŸKñóaCŠ>³–bþh&{hÏÝW¤4qÄÏ=´=\-n4×’»?>÷XØU¶¾“h0þNˆ_ŽKÏ¥ða@NdÈàîq|3R\(â%l÷&U‹EuQÍÜÏ9T¶ð[*@Q×WÝÚf™Ø‰&¨ éBQTæ^&~)NÌ·e±•?yU/‹úƒ-¯6k¦¡vÐñõCŠ MÝ?^ÂÝ¿eé+j–aô›Q"6ƒYÕU£ó6кç;É G³¡Ø…˜æH¡º)Ï! ô|ÿF캢Î@PsÝ€žúX£ÆD6‰ÂNAøoáé»m^­¨n*u+•ü%éõycçbà—˥πgD¨Ã2ô:ñ}Ãn5ß§¾áÓÃþ£~ïa/?À{>ñøú˸ýGÔE»\¹RÿJ‘?*ËÄN4‰ŸâûÔ—¸œú|¨¸P´,Ö’Ê_ß"óÕfÍ4×ÞŒ¯ß KºËÓWÔ,Cò—¤ö‚b UWŽÛh@ëžï$ƒM[ä„ð©°»Û­?Û2v.–¼™„÷qÄ®+´³ÇAÛTõ­¶zN6ßýÀŠùî+ ª*½‡~ýòu[‡ÆÆbûhbc»"zy ¦<Fþ 5»k£°Á#v]ùîP§½hˆ¸ƒCŸ¼سû÷Òs©ð[c¬ªjô\”;Àm•…Ý>𨨿_ɹG¹È£)Io˜Ä;qÄjT9 wìhœ Ð@´€wãá…ï1TU|¡÷Ð,Çâ%œ}¸e/mÛGÛãÔtÊa‰ûǘå-8b5LíÄZhØg«]µ7yáûÔ÷âÙ‹­Ö`;ibc›ƒ;Àq¶žÝv'ŽXý:-nX¶m8šjÌø`obÆ ;÷õàK½“GÛOK.Í=½7H³A_ç klôÞ ?‡Þ”^ÊæKÒKYÏ£}? †Ì† ¬'¿,4«ÎœŸÞôŒ‚ 6lì"h$9 óÔ#í”+Í·£yó­9Ó1z¦º&.>™/WL˜ñÉwý©)–Ю–Tœ{$ŽžOòG½ü1OÛü6:„ÃáÈ?Éû>] Ë`üR-&sy2©¯ºrœ˜ˆ@<ø¶¹·ÑÑo£»êd`6v j~z„‰§‚€X|²H[APuìØæÞ† 6v H(®MáÉtM7“¿:-ý©`ŒQâz™ø…ã¦ü¼¡üØ·¡øùˆF…àn?;~)ê÷qÐÈ{Lï †NòÂÕúdôÞàÜ“)¶—ññ|òvzn^RU N`ÝnŽcS·ìPMAe žûò+™éav»h+z~‹a¶uBÝÊ£_û*UÇŽ“ƒ-}÷Ê‚þêJøó€<Ÿ*ÉÙ¹ÇBìÜ0Õ…s=ù€Ž¯&~¾Þ§¥¼(¤†Š|c˜y æfòæôäÌÐWqß'\~F(ÉÙ×óéÉ«1Ï!{GÏf@|,:>\+µò*°¯o_¾`1vGá·ÂªooÖóÂm¦éþƒýkPÍW²ê¢¿`=Q³Û:B?‘× zu‚_sà šHni0÷²¢@hк8qS[¶2=78æo¶;?0à‰žO–yZJ‹jüáâw‘ØÙ0ã¦À 4…ü‡¹ØÙpçõ¾÷ »ŸÖ…õ~ ÑšU«°­ÌG¬½±ó±ñŸÇçž6å£Þä’WÖ¢ 'ëb{¶uD5ü¦6‘¯F[’t]"Öåi0÷~ç9ÄnçäÅ\ATðܼ”¼•7!ÑŒ¡»Pì¤>Q,ÌAÂ!ûhªV dôÍz¿Ñhͪ¿UX_­Ö^šº¨²=ìFxVWòŠZ4qm‚íc OßÖb{¶õY†­Nä Ò¸r«Ÿé;ÁwïñÁøØ7Céœè=:â=¿žŠqÇ–Uöyvèøg±áSÁñËFFäBSWc™‡ýñ³ä Ì캛µ€ÑëYï›Üç÷sý Ã8ŽÜ# Jœ` èr¹\.W0`œ‚Y2ÝÇ/ņq}ä¢iZ¸Ù*±¡"“&V} ~Ÿ?y-Ù¢ØÂïïa/½‡fö2šV‡#y-¹ÝGÓôô½éú;މŸ&è=´8#¶åúov–€V‚¡™ê¢ªÿ ¥9á¶°¯oŸËån âŒHÓ4MÓ™«`_ß>~¼òÕ•ê£O7wš¡äf½jTæ‘*:FÏÖ×ó˜½Lá÷$¯&5V{°™3¬/|©3ñõLÍÕãÄdä˜1þ"»?®vZU[-« äcgùÇóÖïáç‹âïóÉM'/8¦»©ÑóÕŸ÷q Ü©ÏC¥ùÿßÞׇ¶ud}û½Œ! \ Ü’@eˆÌ*±ù# y 2)Ä& ±Ha«l¡uh¬ 4Ñ›?ò()ô‘³F)4U”@ƒ]x‚Xå,öB{!¥z!% 4 A <† ì%yÿ˜¯s?ôa[þÌüÎÕܹ3gæÎ=sî™sS(\?ßn¥o0÷¥©R­VKþÉ›1 JKµµì•,ÛdÜMoéfº÷ûü`ÀØÕ±òOeB»Ð3ÑVQ+IÊ?•3—3…[öÓ³Øâý"¥Ô4Í™¿ÏÐEè §Š²ù‘÷#§NŸ¢”²…¸FTþ™ ™ðÞ0ÙFšsý7ÛK@”Ðü¸Û˜¹ ½м¡”æ¯ç@4õÜfÀåÈs!Þ.=*5ê4†æ½Ú²Eá½áä‰$]¤¥‡%ÈÝÈ%?J@åEØÓƒ­åÆ+„#þRe¢Å[àŸ×ËfS÷³OÊÙ+…Ù¹2]¤P­Õ‹ÅéÈÞ%,Õš»ƒ™ Éô—ùò“Æû`仫©âŸE‚Ûƒ£Ÿ Ž}3‘¾˜¯<¯‚”Òê–^céœ÷/*diâ™­¾¨€¹½aÈSþF¾_òc¥VÛŠÊ?•ûöôõ…úX Šgbî›\Ï[==oõüσ-%aÈ}› ½’ŠÀ³XöÚ—½’eÿ¢‘h0À‰Z=g 7ìqrËÏ uD£ ¼ï%àÖ2RææmÄÙ­›cò°ô&ÆÐ¬W[µˆUA¶‘Á£ƒù[ùz½^¼_”|ÀL~=Øš¶q$¨õXäÉ‘þ¾®k{á÷û}åçµÛg²Õ5JÁç#ñCÑ̹Ó¦#œ,N'Ng¦ï7ÜÚ´Ohô³á±¯¹,}6 ™ù›Åüá"]¤`€¹=à¦Ú×hŽ`o.RºHÉ6Ry^aO-Ãö 0Bã]a#¦ûØ¡XìP¬^¯§Î¦ V«UÏÄ‘OFF>ák6w'šK¹˜9=réËKç¿8ߨ.s§I-Z¸Yh¤+9ÿsÙTþíï%°6X¶<-;­e†v8‘úÃPÿžþø¡8Óq¡]!¨Í×€lÍ3¬8þÒù½•ÔìÇ¡€åræ˜Ûƒù«£³óÕ§“ ¿NVžŒç®Œ:ö Yøu’}6Õ$¥x7;û0OÁ§~4w*#}6S†ŽÄŠw³Õò8[˜}”Çdi´R;ÒÓåŸÊ‰ã qdlœüôdíE.RG̸dº¯Ï×%Ó}íEmæï3`Ïç íæïyž‰íH"Yõ|>ßĉô…4ó x?7·›É¹Ã´V«© -€ì•l`{ ò~ÄSþ– ÄRɽÀ‚Ú ï½N}zŠ]ÛŽ6®íÈã‰fÖ^ŒF-ŠŠBRçRÒ‘âëõ…÷†Y §lÍ3¬+´ ?­Biâ§fÄÜ4`dôÍóøz}…ï ¹orý‘þÔ™ÐÓÓƒ3BJS%° hýoû3—m‹ðžL÷/éË‘ÏGzü==oõ~(°ë™ØŽ$’UWš¹˜úÃPíEͳXBȃ‡ê‹õàŽ`Ï[=ÑH´ü„SȲn: ©ü›7Ð&U{ ä¾É1}Ñî6.mïmà@“Nk3FÃ8–ôâ‡TàuêL*w#z°µÊÐÇ=Z¡U÷â×û,_óÝo,™ïÞ‚z½îÛÿìé3ÏWéµÃªIÒÕÕõ ô v@{üÖñðÞ°C•Ä’J\ki6Ã`ë,ß=H:{¯°óêhFÌ-…òO噿ÏPJëõúÈ™‘Ð{¡õÒõGÕCå—Jñ~1ù±Ó¿4>1ÞqÇE¼±ƒM…Üp¯O¡ò»*¯NÓ@LM‡z½žü$éÛo†LºH'ï­ÛKÛHR¸YèßÓßñb5Ú¥´p»àް$„Œ~¾v ooì`£ÄjH¯OK¸b+‘,×Ö䛑ßG~~òózK°&’ Ÿ^Õò5Z"ô^(ôÞ¢´W oî`3€Z\­ãLQ˜–d?jigކ††Æ&…Å]óÌo£¾±âßÓºs:âî½x ©=;Î\Î}31]¼Úcz_e织¦DöîêBïšùë£M¸õ=éøcûÃm÷†††ÆV€tÍ‹ÍǹÇFÆçpþI-€eW÷2DoK¢`AþnÉ×ëËß)f÷ØHÐdæj­~ê\6ùi¦§8òÑàБ!düž×Ö0v¾ûŽÙ¯”Ž_CCCc Xœ3‡¨lUd Áäïíªûê‹êì“Jâh 9/ܶQ@xòÝ·CdÏ/ÿÊå¦áºË¥ã×ÐÐÐØb°ùîå÷´Ò“c€ ÍäΜv1ó·KõùºßT‹«•çUÉxÃ=ìÄŽžšy4 Ÿ"²gdI 'jõ:XÊ;ïé»oÇã‰ãqºH'§¦Ó—ósÿœ-|ßÖ—å[Ìfg6-ÏbrD4µÄ*n»Ö½…»ÅéÒ5¹AyäýPþ¶‹ãÍÎw¿ªDöË¡ã×ÐÐÐØ*ë´ÒeÏAQóŸìk¬v9ŇÓ=„„v«àË¡b…»%7×(æ»ï8‘ýÊéø5444¶¨Ðïò»Y*©,ŽËÅwß…;ÅÁ#66ŸÁÃÑÔ¹\qj:~ØÉòƒùî[ÙŸütìä§cøògswGèø5444¶,å½Q¶¼%fÝ5#æ¦À’15446$:Ɉ¹+ÎÝ8Êw/÷®Âé@ M¢ ¡¡¡± ¡Öi¥³^$‚Á;r`Ó€¦HÓÐÐÐØ|pzoÀæÒa|@sÀâî544446äJ¬°èäò,³î¹¥ïÞš\CCCCcSmXˆ |-)£0Åæku¯¡¡¡±ùÀcr®ƒûvd:€->G«{ M{Ä=#¿dÀßXÒøíòÝc.bÿŽ0àÙc[€|(’¨½¨³˜NO"ûé©kàIX øšpܳã†TûK‘Ä×ëKe.èP};¬uðêU~©· ÑüÕ›ë1HֻɒæÇÝ;þªÌnÉ‘ß]eÇRá:p{¢$Kæj5Ûç²òröézFXŸøC¼2WX¨LÎ>̧Πû¶‘Ðn³EÕˆjÙ’<{2ž9›Èݘ(iÞ„ÒÃR×t­}½ïì~gzÆ‹WUcÐÕÕ5ó÷™e_Þhäÿš÷ûý}{úV š7V¯dŒú|=}.íyj½ž‹öAù&V*ÎÀ©ñÙ?±˜ËŒÌ‰Šä勉ò·&ã‡"-¯Z6a}ªýö%ñûÈÐÑTçZÖ¸ÑÀèEKK]]z6Gñ~±¾UÂÆ‘ ßߎKõòß/)+¯"u6•½’}<Û:ëš”¼´Y?øÀÃ¥±)€íw©ô1p ±±–«î“Çb•_j³seX˜¯—Í%޶&¶\6a}ªýö%©¼¨ŽžË±ýnSù–˜}2 ýáþ¥ë-Ëò1` ÙPØ8Ráû»R­¼Šú|ÝÜn®†Gny%/©Ec_™»ÍÈû­íÔ lÅ342í8-þ2Õ½¹Û ÿ.Ä\+·( Žú|~œÁ›È~Y„õÍ©öÛ—$zèTm~aò‡l0ÐŒ‚cb >:“š›=;ÈRººº&îNŒìú.i¡”*Œì õƒÁ®®®â}§ï«üÿÊñžžžžžž¸Ó®É}{g÷;=oõøßöçÿšg‰é é`0ØóVßïÏßh–h«È% “œ5çŒF¢¹¯sMŠùÇLÿ¾~ÿÛþàŽ ”ª««+÷uîó¿ßûÎí&òwuuý÷˜ÿmiªäÎàªòKåàdRgR,ˆ —ÐÕÕ•ÿkþÝïôôôäoäKS%¿ßï÷û'~œh.­ûfuuu•–𱼿©•Ù\êóu,€£Š¥–ïì~>¸ôå¥vº_‹ÓÝ­s”Üf—º[Īèú®S§ÕÒ`pGpæ3»šKžàîâ5{.:¬Ü‘–'ÈqOä)õ*€ìnº;f}wí«BHµŸïõë×??ùž=}Æ.gg=yI""³_e#¿°Ïb|>_áfáõë׳s³`ð `î2§g¦Ïqž²°°à)?Ëz/4;7ûò_6ÊÀ¥ú÷ks§9òÉÈë¿®V«æ.óüç%@øwáŸË?g.f!Ã'†«Õêð‰áÈû‘ÒÚo–go8î/;Û¤Ì&’8ÐŽMJÂ9Š}ð·v»Îq!K¯þZmÔ:VòJº”Uqíú5_¯ïõ¿_¿~ýúÁß„Þ ½~ýºúkØ`X³çâõë×ÏžþÌþe.Ž>(Ž·ùoá·êwß^“—ONŒ@`gÜ·+îÛìŒvÊŸ"EÊÄåUË¢tFÎåÀ€þ}Kf!n—°¾ ªý’zy}%È\ÌÄÇÙÛèÂÂBiªT«Õ’jwTzXª½¨e¯d}½>0wšŽ ±1_¯.Rs§Y¯×ÀïóƒcWÇÊ?• !ìBÏD[E­$a(ÿTÎ\ÎnØOÏb‹÷‹”RÓ4gþ>Ci 7Pœ*ÊæGÞœ:}ŠRÊžy·ü<ç…Lxo˜l#20Ìüc¦ò¼’¾@ò£dþVÞQ;½м¡”æ¯ç@4e¥5—߬æ=ƒÑ¬ÌÆ’¸ÑR€%•¶¼®sTÞ.=*5j]ëæ·Ñ¢ðÞpòD’.Rö"•»‘K~”€Ê‹ °1¶fÏEgÝ8Ô Ì´G†<±»¡L\¾"$ÛÈà‘èí»¥Ìÿm7®qöI¹45;Ðß·Û$ÛH;„õžTû™+…ÌÙ¤”}’l ¶ðÏÊ‹ ÙFš¸;«/ª`nwŽf‰ü|îÛ\hwˆm.ϪxP|péËK}{úBï†ò7ò‘ßG<sßäRgSD6—„!÷m.ô^H>]žÅVkUÈ^É da, IDAT²<ÑH4à›£ô€=„nùäƒ×(ïÀ_+²XvP«Õ%Ö\-ÖLZûÍjMÊl"‰-XRi´Ùu,½IëVÒ¥¬ ² ÌßÊ÷ïë/Þ/æ¯#‹`¬Ýsñào\x#aªmkEÅ)À§Ä÷VdEvoêôp84èµ4êMd¿tÂú6©ö›Hòæ Ø¤‹”.R²TžWܛϰ]$+Ï+æ.‘]þ哟|Vyfî4KKÅ{܆ŠŠÅÅêõzêljðØ`µZõLùddä“vÉÄ݉æ’0d.fFN\úòÒù/Î7ªËÜiR‹n) Ú| Ìf#ù[6PÂÜa@­VcjK´–Òz7áE­ãe®1–Ýu-[בæ'N$†þ0Ô¿§?~(Îæ€Ð®Ôæk@`Íž‹N¯z¾G¹Ehƒ|êíÌYøuÒ±…,NYøu’íRkî &OÄýÛD#!É›ïé€ö÷úÌíÁüÕÑÙ‡ùêÓÉ…_'+OÆsWF›™8ª.|Ÿqþû{} ¿N2]ߎ$KÛ w£¢ð²Ø¾˜.ÿTNO1ˆ#C`{àä§'k/jt‘:±YµZ­>_Ÿ¸;•ç•Ú‹ÚÌßgÀŸÏÚÍßÃ<Û‘„l#¸!>ŸoâÎDúBš½h{?7·›É“Ì~¯Õj•çbÿz {%؈¼ñ”¿e±T‘÷#æ.3s9Ô^ÔòßæåR^›h&­ d™ûç\ù§râÄçY&Õ’ÊÄ8õé)ÖÌ&t*ÖsÙ]ײuKíRÏÅÅ !©s)é`ôõúÂ{Ã,ÐsÍž‹Î;s˜êgF=>Ë<<2“fÄÜH|˜¸}ëvó<¾^_áûBî›\¤?u&ôôôà „ÒT ,šAÿÛþÌeÛ–î‘ßG†O G÷Gû÷õÇÅ¿ G÷G_Ò—#Ÿôø{zÞê)üP`ÃÝ3±IÒgÓŽ†D~É\Ì ýa¨ö¢æY,!äÁÃõÅzpG°ç­žh$Z~Â7ˆ`q Üà2¼åoÙ@›T<¸ÿ üS¹Çß ‡f..m×û&Òº‘>—NK pÜ~VHµ¤21rßädä·®Û±|,·ëZ¶ni]Ú¨E$Ž%½ø¡¸LKIånä` Ÿ‹ÕެÇéÈ®W/z7«M€%ïfeA½^÷¿íöô™çûéÚaÕ$éêêzPz;°^Ý4ÖñðÞ°C•Ä’J\31:¼›•}“dÎSaûËcBÎ͈òO噿ÏPJëõúÈ™‘Ð{¡õÒõG ¨üR)Þ/&?vú—Æ'ÆÛôŒm@°8{;CQ<¾ÍÉ£ÕýÖA½^O~’ô¿í7C&]¤“÷Öí¥m $)Ü,ôïÙ|_Gk¬ (¥…Ûw„%!dôóÑuiå@nzŠ>¬%Ôþµ-&ZØ¢éo$"¿°=Ök Éð çÇwz/zoÕ×N×nîñ—DLDL D[÷›ÒÃþJ°ÇÝSƒ ·uZ÷˜×§8‚è$¾#ýÚW#‰ãñÊÓjê¿r³seJ!ôn0sa$ÚàãÛeàÛ*5 ô®™½0„Mðï<Ë_Uïkþ³¾cᛥ‡s¹¿ŽÏΕëu ˜@(d¾÷&DÕÐX#èíV›È¾}NågVø£*¦è©Aåjm[Ö}ß»-øè,7‰ãqú(<¯<¯–LJÇy«Ñe“àË”Ÿg Á /ù©wà×ĥ┯zîÛ‰¡Ò‘ß…¦§ò •Égsã×®¦Â{õŠâ–EúBzƒ7Þ~`µ±=¼ÂÝÚ º—,iD¢4HoþjFæTkõ@À`@8lú}ÞßR/›_"ðÅD=?‹€ø¡ðÈÙÜ‚úca¾žþ2þÏÉÔéD0àü>ÝJöøàå Ä–¤€ˆÄÄÙÇYñÌ’xòã“===r+…Ú‹ZÏ[=øc`O1ôö«%Iµ’&¬ñî«Dz!Ü5ŸÃõ6…UT÷™ Ƀ¤Òs…;ÅôåB#'ɲIð9,:;WÎ}?Î^)ÜHÿ9éßFRç®áÄÒÌ,XÔQÛÞØ’ð‘÷#ænsìë1ˆŠavèÉ{“”RùQÒø½ñøá8~ß÷Co?°X’T+iÂï.ÐqØYqp”÷àKÞ4ù·3ê³ÛÇq6óлf ×7ý¸rêlÎÜá3ƒAï‹—E‚¯*5‡~>6½èMLAzÈwWS÷fÆï©/ ÙL\eʺBSÀw„>y"™»š€ø¡xå— #«™ûçµh轤C)Þ+ÆÇq3³_eÝbèíÖwì1Û¼yfÏD†µÜ]`5€í‰Ôé˜S|g«¼:Q÷Øw_¼›ºH¥sWR¥{Ùñ›™éÇåäéÆU8/ÞÍVŸŒŸ?“Èÿu<ñqë/°y¥•Éð^sæQ³™¹?ùd0u.· Þ×È6ÅÆÇ 'üæ€çæì/ÿ÷eµZ::õz=~8ž:Zøm¡x¯xòã“•_ø§"cWÇ w #ŸŒ$?â#¡÷B³3³/ÿ÷eúl?Øù›ùÒT)‰º30“g²8™½’ :Úz¹ð²ü¤<ó¬X¿KO½8IdL Çqùî}½¾ú¼²¬«óuð½å‡%âçr¥^§±Hb™ ɼöLÆ6Ið1 È_9_úÇ\îÛf ™³ ¯ïÔY~ob‘äo*k«¯<Ï_O{}ÁÐûßÂoõ¥’à{¦ïfgæ !žÔü é³ œ2t$V¼›­–ÇÙÀì£<þ kCASÀc©–M?ûx–yí „Þ Ý¾s[:» 2Ÿ{øwá&…´I¯·pËß²°Ä±×Úõöå»—þzI…f㸠 |úd‹0Ghh´ê‹êøÄøšUWþ©\¯×ÿ ÓEºîÛlI4:ì¯g>b0(äÍgÎÐÛ›l1h øæùld-)Àôö« å¯çNƒRPÇÄ"ܺJ_[÷^Øœ„yš~CAo? ±ªô ÇáÍNÀKµ„:õU톂ÇÀôL[«+ž˜ž)ûÍ úm­†††ƒú¨ŠýŸÔJ£ž!!ÀWgNéáÜÂÒ¿6r\Uy^í?°´p½ÕÆòÚµ.•®‹¨ âÁW•_*’sëc=zxC`+-m)ãîí~æÄ§¥(BÜq÷C¦ËO—LK鸪ø·™ø¡v×Ëk׺TÚäªü_ó~¿¿oOߊE[»’1êóõô9ï¯í4Ïûjc5zXo!Ы=´˜åÎõ_§¡ôÁ"<så[@ê>~< C¦Ós0;WŽ9e†¡}‰ÂÝäoƒ¡!F6PœšŽH‚å¼ &§¦›¨{ÿŽÂÝbÿþdp÷PþN±ôhÎÜ3d††ä&$•çÕ¡ãé`hÈ 'Òó`Añþ´ü,Ëow·ˆŒ®ÎWãÇÓ~s€í©â°¥•§Õ¡ÓÁÝÁÝC¦‰ÇÊ¿WjRé²;#u6•½’}Üy¦Ö啼4–p âGâ«GØ>4Ï»ÞB`•°–C‹¹ãÙ…ŸHÛ_:ôÁ¡î‹w20~3“¹0²°H‡†Ó# Væ ßgN«<¯&OÄÃïš©³YJéè…\ör ÛU°°HË¿T£M?žÊ_ÿ>3úÙ`úB®p·4=•Žf¯NX0t~8ʾɚ}˜÷m##ò¦¶—¸t¹úxèÁD¶857û¤â°…²7)§ˆA~~\¨>Ì^i$^ËJ—Ý™Ôçëævs5ÂK–Wò’XÂǾ3w›Œ4j}±1ÉÍ7#Ï»ÞBÀµZrU–ÙïÌ]Ãu½`Mà[ K¿áRmijºNip{púqyÒ@¯¯ôhr->œ<žŽ†CloXç…§cûû›G¶¤Î ›»ƒýá>J!wy$ðõ‡Ctq¦—+/j£glg«áã̰ ñ§Lè]3}¦ÅÂÀè™Dì@˜}¯ëIY×D‰é™r­VÏ\L²}¸ÌíÁæâ5©tÙ‰ñÎîw`àƒK_^‚6hèñµ8ÝMçí(¹MzzK¸b!ÿ.låwgþ1¹«9ù »æyß2<ïz % ­BÆ\òØÆ>(¶u M¶7©ýV'änŒ³ýáPÓ´#{C3ÿ,§>óÞç¯x:~¨åø¶)Fe'â|ÐÆ#Á·}5ñr”º˜«¼¨¾I·Œ’dªyy(IjU0¶¢šˆ×¤Òew&Ƴ§Ï`ò&Ïq¾Mz –ÞêsÓyã’Û§§w¦³*®]½V¸S`ú¥4UòoóGÞÔ^Ô*Ï+ýá~Ð<ï[‹ç]o!ÐþÐê,äç² zÆ{Œ‚ˆØ±uóÝK˜f€Z¿’*|›fÿ⇣Pœš®/Òð^3ó—‚Çe”fÊ–¿Nì ‚àÙ€jµèõÀø½éü­báÛ´­¶ bħŽý‰×ËìÌÆX8N/=*5¢ófX ==«"y"Iù[|îF.ùQ*/* xk5ÏûVây×[4chuTèq 8̃/~Ê5[6!y0bVç ~ ß FÎåêæëÕUæe¾vy$we´85S¼?í¸júq9´+¸îÐè¾¹30vµTkõübâX¬ò¼zêÌXæ‹dtß2ùÔ¤„í#¶?ØîK}‘«Öêt‘N?.7¯e¥ËëÌ&X8N—tÞì¦ófh’¡%…7«‚l#ƒGó·òõz½x¿˜ü#z$,€öxÞû÷õ'?VJŠq¯—*÷íéë õ1òHÏÄÜ7¹ž·zzÞê9øŸ[2Î3xò¼;ŠmÖ-^<ïùqÿ4ÉÀ°¾<ïî.i âTQn!þ]˜m!0qobãl!°ŽC«ã`&<þdQõU-Åk¶Ò«ã|ýlðÔ™K”Ž&ŽÅ&ïfRò}‘Xìõe.&gçJÑ}ýýûBpþóá‘s¹ÙH¿ßGäUåre`…!˜ŒßÊŒüy,¸gˆ’8KŸIf¾ÊSJ3)H+¸ú¤Æ&Ü®¶%!śّsc}‘1H4ŠÞÌxŠ×N¥ËèÌ&¢.›†¾%wGø¾'CêßÓ?gÏvhWjóµ@  yÞ·Ï»ÞB`IC«ƒPz¾y!‘_Z±Oj öãPƒ:Õ}êt"ušû‘ƒÛƒ…ïm.?^‰sÊãþýI¹J0ä.9y;# 8cûÃò8y"ž<ÁãmÌA¶á­Dú\2íÚð¤eù€È>±´ÍˆFB2ÑÜí”ÄS<°³ŠzVºŒÎlIä}íʵZm 4ô’Î;w=çóùjµÚKú[-3`4b~ŠBRçR“ÿûÂ×ë ï Ï>ž‰Kž÷Â÷ŸÏ7÷¯¹ÈïU¸Ž¤A÷oóKô£§ò¼y?¸×'aØz€#Cò¼'?L²÷î&<ïÑÑÈû‘ؘg±ÍºÅÎóÎÖ¥òãôl ¹ÓtS·7¹¹Í3·?<Ü<ïíÜw Ï- 7¹Y6xd0#ïëõuv Ç Å6òÐjÙÀ%ï"à’P ÄɉÆCòÀ"¤ÉRí2Py^¹yÈj³Û¿ÑìùË¥¡oIç½4zúFÌï$Ž%½ø!2›:“ÊÝÈæyßb<ïz ¶‡VóÖ-,Ž ü“+î·aŠp{ÂŒ} ´“|÷ óõÚo ¡æVí0Úä»ßPˆ„÷†ÏÛ@| ù§äàÑÁµ–Fó¼¯ôK•¤ƒ|÷]qùI­<P ¶6¿Ãiþ^ŸÖõPù¥R¼_L~ìt ŒOŒ·¹\GPþ©<ó÷Ji½^×<﫵ßB`ƒÜÐ! ¹Q{˜Î#'¨'Eš†ÆÊA)-Ü.¸=¿„ÑÏ×n7`Íó¾ÚÐ[¬£$ÒuÃ>¡’áö˜¿ž8u4ß}lN¾ûƒÐ{¡Ð{뿈¢yÞ·Þ¨-Ú‚áÜÁ ìÌ9”™ö,ç´î׌ï¾p·dîŠ:Õ:«†††FG!]óì»*—®ç,˜l9—%:ØÒùðs©_®:®ª<¯ý1=û°Å‡|k‰e´kz¦<ð‡T“uìôå|æÂHâèÆ¢z^¼/CëÑäÊ/•àöàZ:O4V±ÃmÅ,tuu-üæÉˆ.Õ: ÄdJm_…¸0Yt¦æ»oˆþ=æäÎøzŒú|=ð/ék¯ ˆ®®.öÑàòЈL\Sów™šSßo@T~)7ÿ—¿Ñ[MÒ^*&dà*yŽäÂdŒjšï¾!ßýì“ÊÀRRf}ÿþ$$>Jg¯OxÊÜq¬øË¿t¤¬œ¶[SówäOÇEuœ_ßk¬ l÷R¿³({I®ÀÃwø.æšï¾!ß}ó2gå ð}&õé`üb-©ÀWNÛ­©ù;‚ò§ã¢:Î/‰ï5ÖTpæ~ E(Ž Ád˶šï¾!ß}ûe6“¹CX6xKÚn¨Ï×›Ù7g—fÌÚ̹Ìh»Ù÷~”Rºè½Q²£¨¥]]]“ÅIù±(c<Ÿ¸;qêô©Ácƒåryôìhö«l£ïcŸ=}ÖÕÕ5ù?“±C1ƽ?P|P›¯E÷G !ìk[Æ{ÎØÓ0Xz°7ÚÊ]Í Ÿžû×\ÿ¾þØþ.™Q´;2°¯]Z¶ˆU1=3¾¾våͨù£û¢Õ_«¾^Ÿû1ÆŸîëõý÷XêL*ùǤgŸ·¼¬"Çís‹ ^ÔüŽb=»ÅQ”<îà ’Ä÷-™S5xg·ÇBÔ³§-=Åç²`ÓòÀ yåÃ!bkrp/ÕJh¾ûö±<ü¢*ð–´ÝžEydhÊxÞšš¿Q"ÆÚPó·ÄJ&¾×XÜš½¥®¦â‘Ïb. תŸOÎÍw¿ ,‰¿Sh‡ Ü“¶»eQn´ÅxÞšš¿QâÚSó·DÕ›’Û!`ýÞŽ®‡Ã£n¸i/¾·"BË+°U\Íwß ,…•Ј Ü“Ë{-¡©ù75ûXÒ ÂÄ÷ËÀ³§?¿³»¯M]̺»“K[^ºnÔžVÈÌ×|÷ ùî1ñ½g™8Ñ“-áIÀ݈¶ûÔ§§bbƒÇ~åÑ&ÿx;ÐÔü°1¨ùqQ+á—oÔL|¯±<´¯ë«u®ôA9ë•øY~L›øî—Íw¿zXx#ÚîÜ79Çmò·MÍ¿1¨ùqQ+á—o8¨ìÄ÷« ¡Ä©økÓìÂƒÏølÐ|÷›Kã»ß8Tà›o5ÿŠÐJªu#¾ßlÀ|÷çÿoVþl„ÒÃÒÉO-üVuóÝûvťơ–‹2ä±Ë™³ø{}0læ Aù§r½^ÿ.L©ævoŒšÿÚugTñøÄx‹"ߘ·¯}©Ö˜ø~Ë ùKvsà ³âˆŸ‘;ÖR¡øù¶z}‹€pWžW!±ý±u¤ß\ØPÔüíöµ/ Ì×XVL_¡L{‡Ë”É}úÐIgΪà d[ta3n^¨¡¡á†ôÞø}þæ9hàÌìÀAÑ8ÎF©°šðï˜ü!ëɵÐZR¿9héãÓÐÐØDX¨¯ô3 ©Ó¥³ž9mq™€4¾32§ôpnaéxŽ«*Ï«ýÛ-¯ n¿³cù%­œPÐN…5à»_^øZä©'Ž LDDäØ#s$/|òD,sadv®œº«¼X ¤Ï&Çbù[Åôåüì£|°×WœšÎ\ÎOOåã'lWÀäÔtú,·î«óÕøñÂÌ?æâÂ…ï3Ž*ü;®]»:^­Õ3“æö`òÓ X»:ºÑ6HY_ܾ³¶ÓÐÐXF>I­Ü‡#‚/ûîQ ¥‹°]PÀw/½í ‹´_"{ydèh¬ü¤ýàÔìÃïÌÁøÑ”ßOò×ÓáÉü•4óËcýÂ"íߟ¬<.€þæö@öò)Ÿü õ x­‰3ûw „ß3óWÏß/}};~8–9—Ì|•/?­–îeµïžA/ÕjhlLtuuµùl²=—­îKKžq÷TEã4Š»gÜ™Ð,óÝã»Oî æþ2Úàdû|÷Œ&ž7£ž¯qêy²ô‡Css`—÷½T«¡±Ñ £æÛùZªãµ£ÈKnŃØð„sß[¶S[“KtŠï~5¨ç54444¨À6®²ØOu,5¾Ü¬œX­{ÉwïPÁ˜ï¾ð­‹"ÂÒL9÷UÊ™®¡¡¡ñ`I¬–+Ny>z—ɪÌ×ï~U©ç5444Öž»S­Ø… :×élÛBvJlaÈ |§ºg¼ð…»%0ÈäÝ ]|ÙIw<2:W®d¯Ž3¾ûÐn“ñݳÉ@^UœšnÉw¯ªÐÐÐÐØŠX/|8ì/ßí„;ñ-b[™³Ã$ Œï^r ktþkõz¨¡¡Ñ.]åëׯñR-Vôò±•Ä–ŒÌy7.Ý5Ð`…Vül`ݯ¾{ 7«m¢I]Ϭ{dÔƒˆÆQÖ=C'Õ½o[Çâ­†††Æ†µyg®yi¿³4a9Ìk/õ>t–"MóÝkhhh¬™ë•©réÉn׎Æa«¸l2è¤u¯¡¡¡ñ†cÍt½ˆ½@Ži×ËZ¼„«Õ½†††ÆæƒpÖ¸T¿4ö…«‡Egn•­CVH¬¿ñ±akhhtëòxŠP®ñùv\Nö©­‹D¡ôp.¼Ç\ª ÞqUåyuèéÙ‡í’8j*´–8ùñ©õACCÃ+Þƒp™À¡8îˆLGh&ûëT÷C¦'ÈF—¨îW5ç»w£9ùCvI5¾iXøMï ¡¡aRåàhöù`uùî\ÇìØ¿cà»ë£ùÛ%I‚?û¤"­ûÊÓjê¿rÓ3s„Çof ò¼šú"7ý¯2!$q4–9—ÊåÊè…\½Nñ— n™×¤ÛW¾ÞÀz‹ ¡¡±R,ïAîêêúî[oJJ°;ñ%‹Ž<`ð°î‹w2þã73Œï~h8ùî£ûBÉññ‰Rêl6==z!—¿’Ãv,,Òò/Õh¸™ýÒåBöò)ßÙÄÁR³O*J&Jãéþ=¡Ÿü>_åEÀ‚¡ãéØþñ[™ê|}àØ(!:ˆ§ÓgÉqðï`U»eÞŸ}id 7¨ÃG/ƒp<B“@LÌw¿@)㻀Ü_F‹çÚç»÷#Áï‡ÀN‚?=S®ÕꙋI¿Ï‚ÎdÎ%Ûß Å›Ù—í‹$Ìpbìë€ã·2?—+Á=CÑÃ#C‡cé3Éàö൯FÒr¡ýÉácqy¹[æå÷¥†††Æ^»ËO2]óÝoh¾{ 7Œ+ÿ»o¯5â»G” ¶c Íw¯¡±¡1óx®ÍM‘ÞÙÝ7ó¸óAh«T¬FGà0í1¯½Ã·|÷+æ»×Ø(Þ/Oôíégw__¸èXbffº³U”–êóm…'´#Rûz_ãVôVkqÍw¯ñfaìj.÷MîüŸGó_ç|>_m¾:ûxŽžÎÖròãS…Û…Hox%"QA}… · •Pcsáö£Ê̯¹Êó ”n±Dw,¦ûçÑÈojóÕÜ×¹ÑÏG“%}½>0 ÆÄÃá0T*•Ä“}áþþHôÒå1°ÞÙÝwûf!z Ö¿/Z¼W€Ä“—.ªH³èþØÜœÍã‘8‘€äGÉK—3ŠmS$†¹r91œ`ÇnyªÏ+Gúöô§…lžõæo¢b}{úû#щ»²Ìü·ùþ}Ñ™™ér¹5(ÂRºØö&Ô€Ï2kÏ—æWÒÐÐÐÐXUp½\žJÜÓ#s⿆ØÄe˶ƒè3-~JLï~ |å—âW÷üΪcv-JÄÙlé²RO1Pê/“ÜQ¯¬Ñ~âãŠóàæx6·Ú³-žEÙ/Q¢Ú[DÖ¡ÿÙíÇ‹@;æP¶A‚¬KˆAåB?AæDDNjßdQ¯…½Š"w+– ˆß”ârxNB瑵 i€—I(¹À²}t®š/Oáæˆ , ¢!Ä£?”xX%3qesô¨H÷îryeS9Y⑱íd-bõIÁ18m£Â~ÃÝ»c{æDW£Šäƒî q+Ø«sÂKxÛ†P<>Æh”Þ¸pçYd’»SÜ:ZädZˆ¥â땃^æ—aØz„wŠðæ¶2J_ƒgp~¿+ž•Y\(ºŽ{æú€ðvºJÙx™"œ”痒˶ Åg«ÉÉ —2È–ÊXUARQV ×G¢™€Š"@ð·‹TÔÅT?ÖÚè@¶„ À‰¼î*‡ÿ©´¹Ðþ€S¦˜Éd7²÷³ÿE|GØåÈ"Ù·¬Zdv¨üªÿŇ• £jüpñþQ" Ævq!*Ÿg7Ž•ã(§€ë6Vˆ Qù—c¥»êõúÌÕ6ùY`K‘¾lž ý†øn˜–+´ Í|éšçù‰\§•“%v£'H5!Õ—É¥Ÿuè1i¬ lÚVjg©(±Âu«Eüˆl`Œb‰/‘‚Ùg&ECøVë¬aï³BäzŸÈ¾P¨y…5µ‚°¹AÈCì“«o1åHýŽõµ DyV¼|°Iˆ 5Õ·¼œà³ø@ýTªçKªi‡^ 2Ýa=È Åp²+Ƭ2Ø‘Jk;æ|ìVÐEé™MÚUî’zªo[¢mÂê[åäµãÙ ÙÚ¢"V>8š ö‰¿{IÁjZ¨oõÜZ*ÑC¹óæ(-ïñWLÝTö{àïP+A¦bìš«ô—TI.›×v;¥‰Š4—ÒÅrØÉbQºÓ†À¦·cÚpØ×6m+[ŠT¹Í GµËªmjڥߕðXTôàœ„Õ³Êý/´³ê4‚ýo)=%2iä*¡ÔžÜôæ÷Ri¦¼”Án{2‰|†6‘–>žŒ…ñΧ¤¦™`JË‹'D¨WàŠ[š´\ËÛ½aâͤÀÂÜ9•ƒ§E:L„‚–ÙÜø¬4ÉTÐbÄÈi@Ùé¢^Š& µãW%d¾(¥ŒºÝÖÿìFá«d!øBW!j°IÕ"¥åe™ìi nW6EoWÄ}­º›^¶c·6ÃT=`¯ç"âiìc¥o˜$È¢çZžŽT9²Ü•™^ÊgÇTäg9»|»âÒ$¢mž^iT‚;ؼ~üÆ‹ŸŽ³ŽDlùªkÝwÚ]‹£L·¨îªÁî×–Ú+ëF¢âñ×82ÛÅsÔ¨êpK²ÜþW÷QH%LrDi¹9®uXlËýà(Sµ”‡¨³Q©½já¨aO”Amå(U‰àZKp4VyäÅ@Pùöz¥› Ž ÒUâ4ɱ­íh¢—_?Û9¶³Ô×èl5*- ø§cX"{K]‹ RìÓñ,'ºSIåHlG±B¤¦›:y‰§Î! ipàpÙ7+Mk×¼ªL¥¬¥“¹¡aŽ×]ùçLpæ´e“Éݬ·Ñ$°÷@™áØê” æ6‡A >>·{ú:ĈA¶žÝGá8û:'’Kèðx8«¶[ßø†É7·Á®ÌsGQL<{NeòËÀV«•ÏE%Ê5´ÜþWÖ´0L„m¥ÔŸÌc(–ýu^+_?‘“DúLÔ…ÂR&X×[\RaYS‘«-e;‹Þ}%ÍpiL!Šª]8â óüÂ;^ê"J–sV”Ü%ü3üÙ/ê@jGv!¶âAéttã½l|œ‡BÛ „BHK+õ€È~ÃzJº¶ÕOaËk]%K¦(]ºï±cG%r í¶>Õ(†Ø+…&ŽŠRUj/Meóz'PÂpO‹SlùR‹o‡ÃM3Paà‹1,Œz©ßy9À»Ý²énj×øÒð'ŽD@¾ä ²¹øeEtˇ\i›}*­H° `Pš)8¥’ìÞ¥³°žµ«<ŠœŒXSc•º,P•)µ6R£Ê…"ïÊ@b»«Wá 틽U®Þhôj"en»ÿ™zÔÿ lmÇ_ñ*•gÓÔ »Bλl4# Ó¶rΑ{o,þ÷ØdÀëÀxµYåʺg±¢'Èïöö`ÞQàœøXÎIÒlRýb Ô´+±Úì¥mÕœŠïê墑Ð…N_?´j {jp¬å]ÞÙFÇÃËÆ­½!.xiÍØ4»+A>T‘Mxùtó1o[ªÅl2c3;è]‹«ò¬Í„¤¾‘džxy~p|ŽÓÃcˆ¯jÍv­ò!…õ5@æJE:Æ¥[ûc/Ê”Š±ÍŒu»ïíFºí “'¾UØEãvcuì¶ë=ç0)­t  Á¤üMKÒŽ B}«D{cÛè~;™‚Pö;®þ¥©A*}qJFª°ÉŸÊk•óšÍBEJo& Aíh ðâ$× ]ÀÖN¹aó·€í1æo ä­PnBÃ׬,[djZRqi†tŸŒ5>žÔÒ.UJz¹Ñ±ÒÞ(›·Çæ½QwQˆ\˜Dz­2À•òcO™¥²ÓÁ$G£÷Ö¶rì¡Sêí©c•«Z÷D‚ó8òãŸnùùñ%Ô =îVúJ‰¹¼=àž3بCªß‘Ÿçi ›R,Îå¡ßAÕ4PÊn·»Ëïá—Çþƒ+}È‘tÉ{><]žt¤X•f`ã@oÿ¸M·"ý(_3=êu9ÓÝÕ©BH¶ A½~ªbQlµ 1l⹬F}¥ª°÷•mhº‹Gw…ÈÑ){MYÙv?ŒPúTÞPä§ø gïérê.u°×«þbG0„m zW-­Y…W£¸~Dµ¸}÷v‡;“H6Õ[xyÀ6‘(¿^¤Û#â]‘ïâW‰¬£í).©°ê™ˆøµ6›ÉæàF?mÈSö<¨.Û`V×âÇÄq‰'pž&Ù”µKé7)D ÑV’Ø€…e ¸~6è“Þy| ö˜Û­oTÒ?Î<êAàޖȯ*øî=óxeæ®]Y‹¨âÿ½&beXÄxePÃ"1º ÚÍn€E,`QòºÁêbã•ÅÒ­nËxì˜_øŠçDªÖ2^jXÆ+–Ÿ_ÂJ3^èY²Ô¼úËõ©ñʲº•ÆÎŠJ,0º^ ± ˰5¨Õ V7¯BÊÉÄ0ºÁ má‚1iѵ d³ÀÑd,­”ÍxÅÚN‰ì€(ŠRíe-BýoQÖ¨n‹Xº-Úm±YŸµº-@æ1Ä)‹k+–N ‹Ðn‹7³Û2€ÐnjX`¯ q‰ªˆ° Q&/ß  ¬Ë0ºy*úßb€Jljðt º-!1º-B»© ~Z„m¦IÁ2^´Û2º V#0x~B»Å¬ÓM 4V¡›òD0˜F·`°2 0 ›;¥t®AAˆ †¡~ŽG†5À¢`è* –¼Ð…,Rß,!kyÐOÃ"¯¸¦3^0^â¯J¡5^è”!/Á§Ü—ð*¸:cÙä)y¯‹¥7ù+•2«Ñ¡¸í;ÀÇ`Wú8¿­âÞ…ª-€åa§X~çY»T€¤’E©ŸRécámDz`?•—§º^` “Üè`ÿD¢ñŠgc‰»ê•¸¤ŒWÀ‹êèÚm/ÄŪVg™0F·½vÌ9–xï« ¶õ"ûB% —:ž ¡‹)ˆœ -eCø ìîà¸DÛËÇ>ìQQ~ì™AQST¸&ø…ø*é‰B,b~Bµ«æ€X£#EªÖáwCJ éþc¯“Ø!ƒßlj½ÿ©íE]Ø,Äa¹Kÿ¸CÚPLùÀûŸÜâ& ÝÜìô¶!¬<û«(d' ®¨‚bóÜÎà~')Xzò"˜{”»Ix0ø'Q²ÿ)÷ÞÈþWŸ8É»À†1—ଠùÎrPqAü*Vt߇7_šêÈCAVŠb§×^æQ‘ò}ß5ñ—ûÓœÙQ8Q¨õ ‚ —û‚ŠàK9›üÅÖº<Àe:Jv¤xöŸr¨ðcìWÁN!ät¬Äâ’mº^µm™¥!×¼¨‹Ç.µ‹œ|”J§ŠcAlîuì·±Yú–ùBq ïw¢½è@>€Å"s ÌÀWü¨T €¹ªAisÑØ[-Bn(¾œ§óÛÃݶK„K«E*ŸpÂýÝè1”‹`6—º^ÌOâ–ã’yNU•뮀jçO»œ×-¦Nv»sp\Ñ'ðÔe {ÿ‹qOÔÍFK^x …¨ú_ÜV0”ê‘k¤J/°2…FÎÓ¼ÿÁö ÈÕ*Yµ\øeé¬Eü6(0_|ïJDu|åY¸˜XÞá즣þ "”Þî6aj¥HŪ FÁs¾Pªl–Íò”š6ì rÇãŠ@d´ ‹—dk@›sƒÍyâ,È¿ $Øœûim¬(¤’%(§ªNN9ö ÃQ.G%ÚEwŠ[é;5»ý§zr]S‚Í?ƒ+uétGÉ8›mv±·EfcÚec5ª¹ô…)J ¯:z…NGÞvy­SËË 1ìÀpÌÞ뽨"¾¢ Ý2N'eÙ #ÔnGKJ?J«AÙÚÒÀÚ\¥Ô«º@ qÙ”X¼"ñlÈS„O6 ë×J`q¡¼yŽwY8ˆkñ, Œ&ûÛŒ”Av‚ w±= bÚ`µ+Ø…T6>EÄ­aÚÊ)⯀TÓRi¿SñÉ+zW°…Ó Xþ•)o©|T,©©•¾–ë·X$ÞoR`d„2%N…QÏ@µ—¤ùFä›´Ø.Mr©IÕZ¨]/Ël¨t¡8å\qEe:ãp@”é³qhsPÑDŽ ¬è-ƒ,AèM!5ÒÔ¸|ôׯ QýŒzq`8Þ°–Ç2KÍîzçPÊ×ý–`3ÆʹÁkJðPè2¿²6¼f¬ÖÕb_Ý‘‰’:ÅX€Í®v´:î@úÇ+›<7†÷ ×ÚRw{.íªu].-ÒþÂKÇ~vSY¾|¹©F óJ ‡ÿÄÞ~Û³b8R¡‹…6WÜDt"òŸÓ€ÔÝÒŠ^1å€èR`5¤¸¯DµäʤF”[úÎDl³ð‘Õóæ¿‹*?Ⱦ#{ÏýØ %r€b-Oı :¥ô‰˜ÀÉ4@e9Ô`áüµQö¸›ri -‘ +b91µõ?ðþg%ãÙ‚T`%²úÑ,ÂUðŒ²ú¥ñ΃jˆÐÎBSË ”¸4Ãyëì~¬Ùþ؇#/$.=ŽfbŸ9¤ZçŽ/CEjR‡f”Æ5Ed2H1)=.ç ûO ×åùB kD³‚¼×À²¹±C­ã¬@¥6t`mn³”ÁCáb=® ·OÞõzÚõŽùÀ18Ôº0 q ‡]³sµfˆ1€á°ßFšöŽptÀo­=d"¾ ¼ý6ìÙÇv=±§+ …Ý|XØuùbn3᥹­”»´÷¥Á‹|Ç"ÎDƳ«<ªw„“]šÏ¢.X-ô‚%Zª|ý6¾ü©Ì|»;^ÜéÄ—3Öæn3Ü9¨çJÌm¶ ÙEbdSôH€TÓÒê—úÝÝÿhŒR¥(±bö¾|KYDêM"•‹z*ÄB¢ Cæ³½ÿÙ“ƒ=0R£itƒr‚a‹U¼ˆð±(k·…ò³Âï$‚z 2Àñ$äPè2ÅQ’b¼ÉÂæüÁ“‡Ë?ƒçUs@¨ZÔR¥õì)J#‹§š¨GÀn>;f1ÆX±€s¢ÙÚ9OØ•²Ã~·-®:þÊ«ðƒ[á<@†9Ná²ShiÔ¶ªÎzÛUvQ2ÛJ…ãSJB§9/ØœWÇ\óåxiàWQö»Ã/­ot–JaÜÎ!³£LŠÒíbèæªYpT¾˜ G ŠÙÂŽ©O¥j#XßúÔSŒEù:ƒhÑ˽.¹È&oƒ|Û HŸª7i‹€t7óFIcPõ*DM`¼iöé{±åŒÔìÂ%"ç©ÍÞL¤ôåÐ'ª·ô?Òò²„†UÞ "|;¸@àßI)«G™º¶ÅRõr ß9˜f§ ô»ôï±®†!«”u£ {ÿËe^Y£\‘ý— ”¹*ŒSÕÿàÒæŽåS NÅMˆZIr¬¸šfÔ|à˜6PÉ\0"+Ò§Rý5Zh饴kdOÄ:]”Ž?€ªRG‡I.m9êÑ;}Ûç\‚cpØûØ‹âÔ¿^)ìU Í»âÒæ^&¼Tܶ)Á>ëxãrÀÜ·=¡®‡O†Øë"M{~ ]h»\oòœÝ›¯–]:Ý6ñ€×û„xùþ?¶O~|Ú»¨´IEND®B`‚pygtk2tutorial/figures/testtext.png0100644000117200001670000011134510050344475016731 0ustar finlayfcf‰PNG  IHDRxÌA6 pHYs  ÒÝ~ü€IDATxÚí½ûóÇu8sáŠìxmŠÉ†äÄ)Ù)9I+|*&)'–õ°ERNô Ç–]‰7+›¤"RÖ’íXåÚÄ€ÖÂË_¸ÊVö°â­¬½¿¬ ÁU![%QûOd“ª`zvfúNß3ݧOŸžé™;sï95@ÍwnOOOO÷çsÎéîÓY)y#›?³xÉ{Ý Ðã‰{‡<~py¬ új}oÏÛzÈÛúÈ>>AU¦ÍnÕ©ËØÊ ÊßZM¯6Uíé†ùTýb•MQ [oÔF¸õ² TƈRʜ߸qãKÿËuûø×¯##_·®üžçÁ³ô-_üâë¿þë¯é7¯ëã7~ãº9:¾ø›=oüõó­/ý柡™|ñË7¾øåëÁãK¯~ë×¾ü[íÕõO_ú­×9™èÄŒu‘¾ôZ}üúk›“/~µ9ùí×_ûê·¾úÕë¯ù¯¼özÔõ¨ã+ÿ?^ýoù~j? %èy|ùßµ'g^õìõ¯œ¹^ý?‡C—çÕ³öÚׯÃãÕsõa]Dßùúõ³¿[ÿïVýæëÿùÌïÞ>ó»7{_kþÿ‹wÎ\¼5äø 7æÐw`†g/Ý>ó{7Ïüû›g.ÿçúÿÇ?ú+|å¶Exõÿ·¾õ­5T‹-7®Wÿý¹>?õùW*ÌÍ]¨Žü{~OŸÀ#ÿž‹Ù÷\X9שã{Ï3ü-õA¥ù.˜ã-àø ?Ðüÿýç¿ïû×W¾÷.6'監Möýçá]ß÷ÖžÇ÷Þsüyi}ñ¼ðÿrý¿s\Â.úû.¾åð¥ú8r¡:¾÷èE}ÒçÞzäâ[^ˆ:îý«øñÖ:¼Ré‡6¿ÞSýÌ:.Á?ï=~Ñüo÷Z'ÇϽõíÞú#øqï;:yÇ…£?r±ú=ªŸê_ßy=ÞöÎsúäðžïþt©úÿ艋ø-ï¾xäÝz‡ßuÞ¾x2â8úžKÕÿ÷=\\8þðÅN^üᓎ5'ÕŸõñè¹ûüü±÷ž?þãW=z¥ú¿÷qì½Wÿ+Ç¿|üñ«ÄqÿøõǺ¿>uõØÓõÿôÓÜÿôAußùé'¯>øôÁƒO_yç3W|ö ÉñÐORljŸ $0ǽ÷Lµ¸zýúu>ÀF%î'•â®ÑÛ&€Ó§Os,“Q•ů·`à;Ë×-˜æcº}üÀ¾[€Þœ4Ç¥—¿¿îî¡oÑàûï½XüEˆÎ÷^°®XG} @pžÍ(¾¿å/Ÿw¯ȾðŽ\jqüÜ=GÎß{¤åêÿ5”ŸcÂ÷=Õ åèqâé¯]„pŒÂ4ÿøÁûÏÝûŽ‹÷þèů›ÿ vWÞóŽóæO¾õ¯oûÑ >¯±ûD©éÄõѲÿ˜¹^ÀÅêÏ ˆ#|ýÜkÈnû¹ÔÀwu\„Øý€Íï½L÷Ô'ã@C0à?üD Óm2ßq­ñ yƒØÝ=®Yh~ìÉ+Õÿ|¿ó}Wü‰ƒTð}â¹+ø¾ëo]Ó(lNzþí«õñ+ýŽ{Þñ¼ÆÕÓ§_©pRð=j¸ñzuòÊéÏÑ)á-Š­Cç€æcžb@E>L;bcüæõÄ¿åwkÐÿ¾Š ¾n´ïJ•¶´iò¸õtïFq^ãx?MüÞ Fûöß÷W.Bì†`]a·Iðïkµo¨zßá²5|›£t²×iÎÝû¶‹„ö½æ¿v‘ù+¦}G÷üðùÍŸíûž®þWÞqÞkÁÏmº«eWÀíCmG7ßѾþØúümQ˜þcÊk_ãòÃYðÝ&«Áº ßÇ>_w¥}kwaúþ÷Äiå˜B\[«á-k(¯þGõqèOrðЇN~èê#:xøÃïùÈ•‡?\èqäG^Ð8Y$Tÿüzì-ޝiæ §‚{Ýæ)6œ:uŠ3l-€/þÆëXï"ø £AÞs´ö­Áš€xGû>gøZ¡>b«ØÄ5dw´ï·7Ž åÞ¿zýS§üÁãÑx*éˆßóÀùJûîøL~ô¢‹ãÕÿ‡ß~Uºíëïìyذ~âÂÛÞÅužpÇðæø±s/ñÕp»µ~áGÏ7~±UºîÿW8O®&;\WI£Pó ÙïúʃO_9œ''â)Ä«ó‡ÞÿûˆÝsƒìˆÇôô ¾‡(à.|?ô3×lüáaÇ#¹úèÏ<üÑ+ôqôÄ‹ èÏ5škÇ íÞ1)ÍIPzßR!M1„®ðÅ/_‡è\ý´öœ ¾”êäÞsoù+¯Ò['vÃC§wTïÍQtÖ÷´è\¥‡`]ýyÏ‘¯ûü'Õ¯ð¤‚uëJð¨·~bÁ?pì<êàÞàõñsúÄÜb£[? qÔJ÷Û;À`z£>Cuõ¢8.ïK–üð‰sGŠözW8ÞQÏÿúÅ~îo‚e¼Áîúh´ïƒhÔnuó ¾uûZÇ7žò©>niè|¿óéƒw=mCvÄÛW÷÷ÆÓýþß÷zH‚wŽæ–¾?pðÐOoü?Ù'~ê²9¯ò©€»‚ïê@Aù= ¡v£³WÊ{¥³Ÿü™«AøŽ8>v€ GóàxDs}ÂÊç¾ð¯1ά©Žðåë._rAÜÒ»ë?難+«ô¯õ‰ÒüÞ£qÏI­tŸk¼0^­7ˆë'©®Téá•j[•¼Ißhß?tI+à.›+^ŒvŽÊøª€¾VäÆ}ï; iþ¯¯Å\ó+ª}CL‡Ú´«PC-Ûu›8Ç9wòmÎ :ViéãõŸ]¿6Ó…²qŸü½cÇ×þ“ó͸ÅÀ~Zû[H€þá'ÖNŽ?Õÿ0•û›¡Ëóê‰Öý}‚ÖµŸ zW®xTé+A(ÇÜ)Wó1ç0@¯Ñ¿º½ºB÷{7Ë#¹fãøG/W°ûÈók7'œÃJ\ýùÈ‹W»À}Íèáãï\}ôã×ýäAu<ò‰«GÞý³.Ъó>ÖÜP¥ÔóyÌ-z×ʹºrú §àSªÛ{Zf Qõ2U¦_zíº™‚bhωù³u§œ3õ×?eÐyýgƒÈæúÖ}ÎX!&Áfèò‡.UhŽº¿ëÄ~@×%1WÖ…¬ÎU ¯Üóö¸d×9ÿh­›W0}´IPåv¤xÄòÎæzó?T¨«™Ÿ<Ç%W7îï ì=béºP¬É'Àñ=ØâÀ÷ý•BÝøÁ-h¶|â¸&\ÞÇ øRLJ8ž¹9oF# !Û“æòƒÿ„5,ÉpóOèaÌ®Ü$&¨Õ?U–Òm]Y§láû=áxH®m@Ü‚ï\«søÙÿääÏ^Fúg´åduÞBö£?{¹ àõ£àäQçbøø¹+|WÀ­“Ÿ¼jΟàO~òÀœ?õñ«Gì…$þZ 'nèoúÅ0—Àfèk_½nœ'o­펫äp®5kÔÇb@%º‹×—* ¼×Ä/yÇ0[°†®’ÍÊúçI Ùç vÛ'5FZ¹®QÞÀ÷¸/×4°¨l/­'ü­olÿG”ëV%·½Þ}§”?†Á÷ñG¿ÞúOêÑK4“ÇñºhÈÖZv¿£úþ¾ï ·Þ8R.빃Aµš3ªy♫:Y”Ÿä@ößÙUÛ©ÑH€àQîïÖ¡†;·¾üÍðð]:OœãšO1?ùs'×*ü»­#Üü rñåõñħê“—®™+Ìã¾w?Oj $! ô& Llf£aí*Ö Ö°ö¥œk<-ˆ«¤>oÜÜ.jë+÷¶º6rcWÝ6î”ÁÁf«b_B&}¿ýDpÙ—ô‰ñ™hp?òàÅõ PÉÝ“šºð OªC'p![¬›¹«esrßÃ^È&µïó@o&ŸtÝÙ´#¥ ßÐýÝ™sòÀãÌ)(Gå²™|BûOŽ=yõƒ7}Ír¡Ôþl²£Fð5R_A5kô á?9ñSW{‚µëoà[#¸«€[*6í¯c@¬ê“æJ‹ì'?:ÁOÚäX;a>^»MÀýðǯD)àZïÖšøcŸ:à#õc/]±á¾{<ù÷¯5ÇUx<ñ àüç¯X¿>õ GN¾Põt ’TEnJÚÐXoVAOÑ‹“WñÀ&¯Wÿ××ÍDï |?gûvÞp\u`½9J·*¡cÈ ûúO[éÞÌ„þ$×…b]´ ÛñáFÝvœæ  ÙÁÁùfjŠrV>p²¦L£†Wçõrž÷^XkßäDo¸»Éª_éÉ':k—7S7¿ÿ ßþÔÁ±§/ÑI¿óär ñ­þÐSWz ]"ØÝWûÌõÆîzðo_Ÿ;PÀõaißÚÇ*ݾÉ'ÚmÝjÖµ§JõÙU²Ë'[—÷I€ø0ÐÙçB©Tïˆÿ ©¯iß·Áqí ü“höêàŸÄµo©­£î'_² 9xTØmþ·þ—®>ùËÕÿæxê3Õÿ—ÿå«ðbu<÷™«ÇO®]@Ÿÿü)Ôär@B€¦ñ”Žp£‘Øu_ù·×µÿDkßxëi'ˆà¯Ú(Ô…ö“h'x…æÆ¢5tB?ü®µ›YNiÍ|÷E¨›WWÖê“£]MÜœ¨Î•súD£ö±J?ù{ÁÍä“:ÁfòÉFäæâú­˜—ö8HéÎþ6· Ö7·Skâîœî Ž]˜ÿ»×[í›á?¡–ê´®•w={-¸ö2vA&”áì”À懯6:øÚbéàÄ«Ÿ|Ø­•ôG>\ÃtïKwô(×qKÖb¾ï“]÷7t‚?õñkL¯·¾‹ôœ`Ú÷Ž]MÜ…iïñ‹Õñøg®X`m¦?ó‹Ï~æªï¨Àý¹_¾úì?¼öì?¼JÇ}ѧ›ÇŽô ý®Æ0cЯž½Ž*Úæ¤Âw¾!þ¾Uº×ßÖþü-EÇÙÒÕ²}‡r=GEÃ÷±VéÖ8nà»b­PWÏÒÚt­­7ˆlzïM2Õ¹XOGÑC îš}Qÿ¯!wsý²gîà5b² uºSÌôA¸tžžO= ¥öŸ\ñ^BçÉ ¿[|IWûÆ<'AÏI‹ï—ÛÅ;W¢|ߎJþûë?[E[ÃqØÇíñ·Ô·³'ß󱫨JþÈÏ]«MµÆýÉ˾µ2þDÜqVÀQIuu›4Ç^L¿Ü~Èþûœshø®`ú'~é*㩟û•ÜÏüƒ+ð'ëWäø•ËÏýã«æx¦=yàÑçSèÆ:ì%€>c€0^=ûgG:è\B(‡v\ìüyr}¢ÑÙ̲°Û¨Þ&½oê7˜²À„îã'Y+ãï]'Ð+}t²‘¯Uz÷ú®Çk…]cú±Ç®˜ Á•ƒMÊêúÀ]ÞàrýÓSWõÿpFŠVÏÛëWQ\Ï´à»Ö¦â*g¬ÒwåÞU—}swÒwDZsÀ›.Ÿh´oþÜÁÀôpï;êh@ÿ²à°üçB®•Ÿ»òÈ'°ÌO^6îËCâÕÇÿn=˜ ý$>¯éø®PÛu|ÓÇ¿t ´ö¥X•Æ—r™Bí |pƱÎÂwu¼ÿÕ ^ýo:óxöW¯=û«WŸù§WŽ=Q»€¬1€ÞSzø·x§ž>½žëÿ…SCgݸ¾!“×¾~ýð{Î[êöÛN^ƒ™pèò\sñÜÆyÒœèØUÕŸp?ðÞ ÕayºpÆ'9KçûÍðÏ*«ýÅÉ–õ¢·p†š7á {XšÜþÝׯk—ÎkÕû÷^ÒÓºïïµ`¤*ÿÒùö<ƒ××|+3cÊw]+×Zp¿| 8?¼ 3ú`¥}QÀõÚKƒÔk þÛ—û^¶ð]A6:bÉ_:¯0c´lëù™Ëա稜|Ñëøöiå>M¼¾ÅѾõü“HÿI=ΉÀ±gú _ï6 :“O€<þh|ßAÏÉã¿|ù©Ï\þ›Ÿ¹b»¼©ñ¨üâµg¡>yæ—7N’ «áL˜¾LS«êÿôÚs-pW \•&îàõâõOÕÿÏýêå|öÀ`÷ÿÙFðý‹ƒêøà¿<øà¿øFãøãzøÏG"€ë7^wWë‹´T¦€×àEí¸“ÎüîÍãhx¾ÁO\µ½7|Cà©Ë?úôå‡Þ7(ll£›»s;J÷‰Hà‹wÌâÉ~m”÷‡~úʃêí?¹õqkåNò¥óC4ñGšµ—.‚×Ú÷'®Å"xwèòZËŽûåï_³æ“ØÇßc¹Pžø…úxê3×èqËêÿ§éà™_¼ÂоcÐ9 |³ŽgþÉeLé¾öìg/Cì®`&xÿg¯üÔg¯@í[Ã÷ÿy‹à]\þéþ‡ øþƒæX§ÿÀ¿øÆ‡>÷‡üÜøà+Xõù+áãøÓ›…`ã%ݳÂ^Hh€Ïá·èCßòÊéÏ x}=|æâ­€;… iÂ?ôÒyŽ¿›¹ŠEpëx÷O^ãL> Îä8Á úŸøà:òIõÿ_ÿ°åùý8íûCMÌÂÆ7]ÞQÓQ6NóJ=·5îß²tþ‘¿{Ðoñ2wð“µ{ÄhÖÖ”Áȹ(Wžøù·ã.ò¯X¾oã31Gß?ñKמýÌ5ïä“_¼Ö*àQíÅîÿéʳÿèJ*ø~ÿ?9x–í3‡Qºáñ¡ÿùê‡þåDÿçÿ{}¼ÁîŸþÜ|€„ìúþ“þSßøÐ©?üàç¿Á9*(JbÙYàGd€#²hìOÂ…ƒGÉšX𮊛>è¸S† W2§Z‹ãQÝ:͛ėÍÔobÆ7ÓÎwž„'¥<•³2ÞxKu&B :w°:~ü“•öMO *à‰€/±ßCàÛRÒáŸOüÂå ¬­±JßÑ øÕ®åÔÊŸûå«Ïýƒá£—푾›ÑKäxæŸ<÷O¯QþÙËøÕ«j=àZú5à?ùƒ~.”µþ/ÿÃÿÕ8þŽöMAüç>ýNãÅ/üáó_ü/üڢǃϼ CŒ^4*œ˜FÄÚù©~ôWÞzüEßqïý³®ÜsÿæÿÈãcÔ¯¼pÏ;žë¼PÕ <î}û‹ÖÎñƒ?òü_zÇ Gßþ±#?òÂÑw¼Pýu´·<ä/=ñâá/ÙqäÝÏSÇ»^ÔÇÑw­S~×GÑ”Gßõ| «øãðÃ/9Ùó8úð‹‘·|LŸÇýïyáþ‡_<Þ½xüäóÇ}ñø£Ï£Çý?þ±¾:| F:Ž=òÑúѽxüñx¬>ª“Gï=ö|uÜÿD]€êÿê¼óë/Tºðýï{±ú?ÉñÃïvûÓ«þèé=ôôG+Œ®Ž?ñ¼>©ÏŸ{þ<ú ê§.œžÖ€éÃRþ0CÎ;¼„;wYf\U«¹WÝz¯öÕðªÏ“f÷ûD¾€Ç­¤_£#¸ˆ ÿdû’¶¿Çq„-þ– L±RìÔ ó½¢ÃïBoœ¸Û­X5A©©:RÌa}Ðñ ÃQp‹'·oVÿ½Qý»yóf8ñíÛ¬<=É8ÀŠwkš»hyãVÏLuanÞ^HUÏÌ/5^uéWîWøTˆª„!ï©À„…é+øßâæÿ;±•Ÿªµ»M"¾Å¾aêÿέÛQŸ£~‘ªCÝd=úöÍ;£¶Õ €~ÝÍz4V}˶Z9ç-¢>ù¬ ï~,ñħò"V¶DV³úè""»*gÏžíO[ÁÜ‘4»-*•=õt˜Øw>o±ÞDDD’ ||±8؃rà;rxh>zëη‘îÝ_DdŠ2hæøFÒd·«œò«h$ƒI{SÁwìw¤EDD¶LLŠ…¼™;v‚oDàæÄJ.çA̲%¹ÝÈHƒ """Ó€;«T_L^nÎÖ£õÿ:ýÀ‡Â§ Øó×çÕs«“‰IËzMóú•äyîKÏ©“&-þ¢‘ •ßQDDd@}/(úú0Y`nV>Öƒ Þi,N‚ªæÜz|S˜~2Њ³Kè¹[ø`iÝ ô%Žeˆ*âëõ,""2G *鄾‰jîQ¸ìb^Ni=Ëg%D=ÈzÌвo,[^7•cþ4DeJ>¨ÜRibð•Ê-!ÌDϬS5ljQ ¿äûÉ÷çÀï(""²Á&.NEy~|Þ¨ÿꇺOéí¾€OA êÚæMuaŒªëR ¡”Õ…‰]ޝTð\×[UójÕ ,q•÷$\îf®‡‹S¹òDDD&%÷OÍ®Bµ~Êç÷÷©ÃIêÅRó™`!]—Sù©˜9õf•Ú+nÉc½4ƱƒV¬ÒDDDæE´ÇÖ€ íöe®S{$@³åŒáÕ}‹!~*=M©*È6µdfaö#Ù·aC5ɉ\DDd Nésýν»t•§qS˜I#Ðs>¥Ÿ ( -}6x{’ÚpgøÀl-vtËc©óLƒbiÿÒÀÁ|‘ uÓûP)‰ÓÃç10S0“?ë–3Š{Ë…°nÊàú¸Ý‰ªCÔ”|¥B¿ˆUÍ p0€pË ¾¶f÷¢{ ¨ˆˆˆÌ‹b=¿ÖÔš™Þ§±/庭nEŽ‚ÐA÷ÆIeFà¸%!}DDÄ•5w®N’ò¹ûiŒä@7IH˜m?v Òª´«·Fsr[ý!‘e@úð;öÄ1È¢ŠmþtcݤúÐãö$Ñ,’KŸm$„ˆÈàúõë[ Í“;8R/Cn‹,""2šV€¶ÎYÀŒ•²;ݲÝÙ%0ˆˆˆÈ`í:;K9sæLõÿ×*9ƒþþ¿éK—3_;+"""Ò}AÙ2¥±qVK+t¶.sž‰ˆˆˆ°±®O2íê§ v[ðéåm©T–u•seÁ‡X¯"""ùÊ—_ƒÇWë·­+¯½úU}òj#, `þ¯âf™çËýИ4k&”!QJ™sŠnܸ± €Ò¢ÿªEÒ¥yÃa2-RDD$<Ì{û M訯%ç+„ O]ä7³å[ðE¤e‹ˆˆpä«¿õÛœYûzØXÎWêþ²]@™E¾f…¬ýß²2ð“jÒ«nÊÜra^Ϻ$Tºä›?Ñd¾§d#ÍZDD„ïŠ%€]€Zä8°ºÈ«ÚÉ6nÃ"í•Uæ$0œ¡4_¬+‡'r%ÀÂߒű"""´ÿ§qø¸€FØÝ€k}7Z¼G ï¨êyg¡Vî(é+}/@ö$•öq«¬£¶#\3¤b%X¡·«Â '""²Ÿ€R ^Aƒ’í [çmqu¾£Å»@‹û+L7_)¿ÅÀ!ôOí,êG""""•  À ½îrÀnº€ "WÇ]?ò› C«¼h'áø°»ˆ& à¯r$q¾¡.MKúJ?cPd2»[Dd>€qqŽw‰îܦºøÛ\mxs²¡ã(à >óL×ñ:dž1^”-ŒÇ)³-€7¤q‹ˆˆð €PVvʨ^ÌÌúwWQ)Ï€­òós!1‘¡; •N¬Ÿhn±îåø÷K‘ñŪsw™¡ %ÓV5 ìèã@p÷Ï•5ÝsHôˆÜWVü"çQ¡ j ôoÛ)’Dd³b‘ùËk¯~UC»6 ‚Ò~*µ»3eÍAÑ‹üMl‚oÇ/RTá¡Æ4²*óÿXϵ´6 o¸.Á6æùí-Í~¥ý”7nšOã<úÎÍÛoø>ó¥Äo9µ*¼§ëD¶²iÏ"†@û™Dhðô4•Ö-ÏC8ÖÊö2ïùJâÎP  ± ¿öµ¯™“Úï­”À.}>ì†×ùûG)á&šKä>¹`jƒ^"Ay5"ÅæƒÜx#ïÏ’@¶ó&fPh±öÝD£!ü5‰í»H”Óï ¿'[fâ´pûf'’yÖ]HÈQ®+¤ŽÔÙWð^À«HËc¾k•ƒ(&âšš`°O4(Ö~R­Ëu¹¸ÖÊùv@*Ýœ°*ôEã¤æ?7˜æ<’ È8ý×Zl£Ô¯Ü‰ EfM‚8¤ºrˆ_Å:‚` ­{e ãVäÕßú Ó,ÀŽºÐ’Ê4Àg% %-£>ÓÖ€/7ø"±O4L0ÜA À¸1rk)É ®I„+Hðƒ¹~Ð!ÿ"••%rXtWÏäÝH*ÖR±¶â &“Aའôª·nš~žzº‘Xy-;¶i ·Bôöv=^0å p·è:Ä2çÅ1ÄÙÂð…¾EìÊŸó&å*Wv&+¸b1kW­— XOÑ«è¥c·`×€ ý?B;KjÍó§­þC[ÁÒèMzc1 >µBàÓu ­7¢'æ“Û­6LžùÓ”>N'0 úFc»€”¬Ï;c³™?< Èn”´jÕ¯¬à‰ü0VÄY•2=À`p>uǵ*8ý…S³#i@ÁotAÔóÐ R[¼Â!¤B§SB^»dc݈¾…É e]ZMi:%Œ–¬‹ÒNgr±Æ,sòjÈö/Ê»5Õ‡ƪv Á˜‰–§HÿT`›2uðmü\$¡˜…`pÒ'*y¶Ò w~œ‹ ˆß8. !@{{h ÀJc/š šVæZÁwÍ} §ðÄ[» ƶ Fañ*##SÕ; åNèÃ|C*>kCùm 4€nƈt«o¯í¯›w ÜïdÜò™¼Ñf?U© «ðLЖæ2 “¸€Ì¬&˜e½î¯.È À|DÇæŠ;Ñû‰(Xpo•ÁM ¤k«o¸„þõ…=ê‹ìtd‚à_?+ŽaŽ'È‹yØ÷‹c¸›}ܼˬ(­"€?ý?ÿ/æ `Ù[Bî‰À¦fõ%Ú°´ãTÛá£5¸ƒ«G<–'+†+Ág|XàŸŽhè4JÏЕµ«èLìY1×…aóú×·Ø ýk‚)‹,/Úº}ãÖÍÝîŒ;@ÚÐnÒ¹€¸ƒ8Õ¢1ˆ9 ÔÝ%Îižèí²JH<‘˜Ãjåo©ð®v’•¹K&ó±CA0—é¢{Ûù…l”-<·¯|ÿ«ÿõÄÓ"ô\f%ìžKvþð'ÿéOg7 ÔÕjEvC| ÷·< žžDÅWSÃËÖ_Ð’gÓÛ>½¼ú[_bÌË4‡ ¡â¯?КϴÂåVKÔS¶¨ÍÕÃ67Où¦ÏËô†Y>æÓ¦ÛW~ãöMÛÛ¶ÁvEã|1œjBnÎTÍjw `»N‹êé]@Bs3wÊ®ØH;>æÄî‡ÚQÕbÑoRÊ@ªÐ·[ÝEùnÊÓ7忉¼QsgS95¸«4š>aB)ëAJ,€ÅŒô'€1¨¯÷LÝž¸ÝBà#F oÉ|µ„àÆY³™ÝÈ ³5èjá‡5MÛ¼Cáò{–$e=г”B²pêѸU›F)x=÷¤ï\ïf> ˜¸ãlÓ°–Mil}¸ØD,‰Þ›’kÜãzÔî.¾`mIxÑ÷h¢ðü ªœ4Dü»~u®ƒ¿[ú¸Vá§ a@YÏ6½Hã9æCy;av/,+”Xª×¦·9dnÅìêC:X*pŸØˆ¥«­xɉ€Òð'ƒqI8Û×085ƒº_ÝÆ&v,Ú Tl™š4y›FuÕ|kü k%Ì…,0œRÇÚš0*$T?]Uk¤Ïs»•´Ê$€!`=¼B˜Q—9ŽáãWNò¶6 >¯ô ‡G€÷j. Õ¦Q^ Ÿ¹0Έµû©Æ,Ëü‹ ‡Ô>œiã{VpE(3¬¦o~?¤³J‹b(:GÞÁ¾òûjÆh:>âk=ªÅgcbÆ«U9œê3üaå µÔ»rà@N0ò—5¬wÌò̵ Æq EXaZ$t‰‹Àz †©ýq^€H4q8Ì|g7³fP2ˆ’7BMÖ Ý»çœ9sfHµÓpÐ&Ž­%+–J¢½»˜©k+(¿aFcd³ÈL,€="B‡õ…8¾…-.u øtCâÜ@Ǿ(Vœ2~!Ý™à@¿š¹Z…ËYšK„qF%4qˆ˜?±ÕbbD÷«”™àšd—-ÐPÕÁÊqãÂdVhk_å˜eÌÆçãÛi`Î`üBÖ!°û-q×ÑáC+ mæ–?Já"n':¤î´Üè:fº€n9Ñ’oÅDþq£ôÍ4mµ Ÿ ^ÔaœÍži«…hºÁãúp½ 2Aĸöµ™`9­PHDåtãÍ­ƒÿ üçl À2ÃÂëRçw…fA¦}: ”Ös-½Åqì"#ê v½7Ä7‡ÙRH£Æ¢bÜÓ±ø ? Z*"ÏÀj1*3Ô£ª¥÷· ª…n0n”¡~•CìQã¶_ #S9MýÔG'ÙÞ=kBTcåy^RqÌ4ÐÖÑŸ‡õ}ëJ>nÆ4P·ì8$]¡.ø¢ÝÒ×uƒ±‘ù0×»3ëüQ{å–’H§ëªGìO4 ¦»Q0Ó”œa ¢uF€É¿@TK|Cnž©ˆŠÓf 1ãò:M1hvtùàafþ@ Gæ}#. ÈËï©÷ÓY‡êCï°ÓÕËzðFY <Dõgkü )Ü£?sΚAÛ™]zpwPOÕX3L À aZ„÷¿Gµ05ëÞÕBøÇ|9¸pVW‚匪œlãëp@F>O5‹¼õŸ»@y†ÚmI 6Aú¸WÍIÂ÷U›2‡uã!ÍBþ?Ć8†ŠžÛÍ|ýÙÌçëÑ™Qo,3À2=2q+r(ºÓ/ú fðgÔ&XPµøJœ›øžE¼»;Á < [[9¾¡—º€@¿ gÆ tÅjÈœ401þ§2çqcÀðX ¹=Ü!€ê¼UÛ•¿ô&Áú§6±}Ýæ f>ìÅB°i`¸ã¨Üš·Ä®&–©¡ —Þk§ ñM%žÛoQÕôƒh3fXs€jì€l0P¥yå_ŸrÝÜîƒ{‚´=чã@a‚™Ð@9¨ÿltý¿²nì€÷Ø$8ä€c=X Àø=VhÔ*ü~}Æ· l`LQ3‰ D ÀP?RóBvóŠ*ê2P*^$¾H?’³*¤G›qŸ÷Y9%˜Hoì€ ÌýÜ^Ñ(à#ã"ÀØ NÊÍìV0¸6Ü[ ú£_ŬÞั\W>LcäúS® èç-ôÓ°]¥a.D[äôçñÔôî$ –ž2‘n[­ }µ!eæT ?šBÚ:Üú¾Q¦r”ëÎoú¿‹à%À %X^S—EzOµoQy¬ý9ßÁ½Q곬KkVÈ•xèðY³»¶HØîçÞX‘¹B¯?ZÅ#ù=úe冎‰":ˆ^¿ 4cû:¶#ÏÌ’$lð#Ñv[9Ôß‹¶§WÝþôéW ¦›`é4ø\@zœ kð8Í:€\_YÁ‰@pÐz±˜þS5ãÃ-²·À­ºC»y] Õ¯úúªì@;ejý|¥ëLÖ³d `gE7©i6„Yœ˜j‰ +½o•ㆂ8}útÆX„{×d ÞÈ­Ép0µ\‡OiþíÀ}C+0ИpZ”9ߢy½S _UWèY‘VΜ9 @*ŠF]-º¢DŒ OC’A`xQ9Sõ€Â£¡Ñ ”r  È­¡àæ|eM ]'h6¹×FC© ŸC¤M3«Áì˜w†ÑD\愈åw–j!ª¨ÇDþ¬;N¯¸¹Q³€Fä¸wsߤ ÚDX­>Ghƒòë—wm™4¦ @DD$q8’ ’‚Î7lÁÜØË»ý =wȦ ËÝ>²î¬ÿCÄ2`!€‰ÆDDÆ;‘iª.‹8Ô Má}À½öötE`ËĈÃêÐÄÀwíè–Î)"²Ccüœc(6xRòx.†þš´ñŽÓúîæ€í~ù¨h ¢Ô³\@ 't›3sEñ¨ÁK"£5E“3“ Ä$²w¸/L0¼>G¬Ãn4Ð(o¾Š£|}‹âµêVœPe(cB"""{*i—Ä[=ï XU&†¿ˆˆÈ²D,€4àŽt¢Yuc•ˆˆˆˆÌŠ’ÄšÝÓA`ÔÀÖ•ˆˆˆÌK¢BÞúÂsõvíš DhêZ¯þ§ˆˆÈ»€ø|°S~Ö»ñˆˆˆÈÌ€³sFp³¹=u¡Þ‚Ä™¸ç–GH7sb @DDDd&`v{¶Ànòl6‚†;fû6ëÞ£pЄ È!‘ù»€ j_PEè] ^äo¼ºãƒÀªÙ¢‡ÿG¼C"""sp¹$>ïËJàQ—l"„ô¥ ëÆeÑQÚãÑàëðßwÔš™¸Úgþ•ñø éÊ<0«„`–ïp¢òÑ—:§ˆÈÜhRÄ%3Ì«ýÚ½Žøº}ö‹Œ#H®ˆˆÈÒ]@F +¸ƒ½¾sÃâšµ7€É7‹sí ñûMYE#=k¡_yìP¦=rfŽqÆnö»§ G}ûùúûÝÈ™fênxÌ-¸‰voW*‰zâ '_õn$‹¨œÉ*¼w‹Ï÷%^a‚NÒgO À°¢èýU¢n„z®Ü4VJT…tÛâlujtJ,-ú^K÷»ôx_˜Òš¨6^9G²óAÖ7JRÿDþ©,€ Bl™²…Æ}óžf 5ÔèÍ|PôŠ›Òý½´ÜpDþÐv‰Ñ˜hIÌ•êõ}åtß­++%š!Zcn…À !$¡ÀOLÁˆ'òëÄ­Óíu°X´rÜ«o§¿£ÛÌ`+‡¨4s·tÕ13„ÿ›·ƒÈ*›K'0™õÕܺõõ,ŸÅ,¶/+·+ù*Ü—mltdI_>Àbö€ÃI’9ÚÓè×ûFKènÌ r•/_G ˆÒYA¼#°ÁóÝ ß‹ I„þDß#‚ ÒT8•£iÀzŠÏˆ,ýÁÌ}üT  Fw?Plså(OœôIT»¥j ™ äXBÃA|©. ¸¶-ÕÀVmÙP[Œ"€`1‚À´¢€Ðs-» }5b†Ø8š5Ìßw‹ÛW­J@× öþ@Äç0 €ÖFTå0KK¨ÕAäåÔÁUè]¨­lÌ4yÓlL+*6s‹A‰2ÀÙtræÌ}²Œ1€¨°AWlW!œï´ÚÅ!þ‚=Ö'°% ICߋփëŠáþÑ’|ƒcÞB?·‡‰Ëü§DjIÐÏEQ ÅÁà Jß›ÒäJS`TïŸkÃíÎpýiœWàOú ;þY$±w*>˜Ì †û‚. ¹\S}  ˆÙ·]\ëíâôΧaús¢nïèëÛC\@ÄÐ(Ñ–ÐÊ!üuÁ_Ñ’Ó· EÕØJ“2i·†|ž>ÌàC]_M,tøÆ™8. ¨Ëneþä² 8L7Öé‰áÇä. Ô &ÆfƒêFO¨Ætí.`_åDÝâsKë‹æGkL;Uåžht˜ gn sF>ƒh2z‚n±tÎè(š5¾–Áúd4Ùó‰©AN9t7 `2vp’EËxÓ^{d»•‰ŒÓ´k*äðwOXì¥Oæ—ߌ†Z¢©ƒŒ²˜æNü,úºûëÖ)!vÙäÞJ%øTû…Ùâí±.@±±_d‹Ü3F³áÀYe¢©¯°²ôùl5‚[³‘é[Øôe“-D–"[ït³ €„ƒÀ³ÒÎLžÛšäÛcÙˆK«üúç§÷Հɡ7|ík_#f.‰ˆÌ‚ÆÁ¦%g\—“-íQ9èïLIªÜΞ=kFeXED`¾ÚùcµÎT0$pMÐ[šê}'ö® ùÛrXÒ@ÕçêƒehÖš;½ÌÌ™sçêñÇsàÂ?t8h¤÷ØÓA`WOä,;"¦—dèšèÅ&3Í9[!B"B»F•æ á€XÁ #}Wad\4'gWÊÄ®\é}9óa|‚È%Y¥ÁOœüÑÈ0€ˆÀÜ-ì\ß ˆ> €ã¬'â+0Ã`¡i¬u˜¨Ðû}c5î™lqM_*XÀ].ou·ÄD·Ç4?õsqÀ·Õ 'èÕHïk¥§um+|.z»Y ŸkxŲTP;ÃÝÃ>T—ͺ ¾5ñ¾è‰&Q!€á"f“ÀÔàëçÂàÉð¢¥þs‚!ÔѽA¢,&$y_Óî-A ý„›È»´…a%Ö‹Ý]‚Ò˜|LiY9Û%€éC8ì…€¦q]44'ì±=$Éûún4 oÕ¼]Ägh%½úßuÍ»j8T·Ñ ]§œ[T£û»f„¯Z|Üã:!ПI`nÑ 1ŸÏ7¤$B®p1:#DÆCÿ´@Õ±¡ÂÅ Dö·´6íû¦%‹ŠG1÷ ç%G‚~;÷WØ1kôO«ÆÐQŽGvëW"qCŒô¾.,º˜à€ÏpÝôèC!cùJýE.Ü£™øÞæ}VæÅÏœ93ŸX’©ÚÏœí•9‡8‘ö—¶ (øå¢ör#²²¶F¹5Iøâ±‹°tV±wAQìÒ0Sxëv47ô¢5 (ê#üâÌÍÓ-‰*C’–™0ÿ­˜Yœõ=[/Œ@š•À>!`nˆF?jrÍb¤÷寋Ú)”€`·i‰m`4P Žß?ÑeG…¨æSb\o˜2è^0êâ¶ . €äØáÆä)»»²û…ºÝ€Ø—.Ø«­î”Ö9´ÁAÏYm @&¶¢4¸û&Ò{>û>+ºp„Þ£ȗþ°TÄ#¬q‰vîƒuw£Jβ·NJrS«$0Êš³¶­µúÄšž~[¢úvÁ´ê™¸Ý×Àh0C˜p©Í.@Õ2ÜNÞQ—7ÚôѺA°’Á.ŠFå@?O:™·Ãdè-Ì|¶E6¾â¹@Ôæõè•`„(ßææ4D/Ý2]!€É͹**ì Á×t÷=/C»·Yñk› ^X*w{K„µD·Ζ÷œF[œÐ;îêýÂVŒ˨G•Aâ ù~õåÕ¢Ñ ïØ©§T½9.šÉš©yPð‰.h\à„‰ @ðvzp zºñ± -“hç%¶FV{‰öoÐQ}„3àÁ¬mzxËìp Ϭ|f—·¶˜ï±€E´!UæKgÉ×¾ö5sŽ~WÂ(îA>¯_†¼W¿jAs€­Ÿ8¼<åÌ™3°0ÕFTa¤•DTÁì=à*ËLç$Ý΃î7ø¹û?ÚwP›8¨örÞŽO¨aÝBTH0xú‚üáú£ `Ç]@茈~•;”9œßƒ‚÷¢ö~rq_z^fn2âF¾çÇÕmZt‡·`·· ˆÙ2  : ‚:/§$L§]Ûn¥¡$þ"t¸ ¨ß€ñ`O¼GÈ`Q {“€ÈÐ _Z• ÅÜ!e›¾ÞDD„ö‘ÜÓ €EÒ#Côv¸rj $/ÛœëMDD@,o˜¹XÜ)ÉP$%/êþ.ÙnÐA¢Êæ‹ÕSFÃYV½‰ˆˆ€,›Ïîq„$YI›öíQo""BbL½xV®¶ñjYõ&"" °xÔÛy0¶ˆv „•¸ƒ®°-‡Ed®•Ý.o½ÞDD„Ä`p¢D‹ˆH8ho!€9Ü &É>ÈÒžDĤ¥dAo‚áî@÷0Ùv™9dL Á±ûa‰ô&¸!pB…x. óÎB"ËÂq_M>X1íwKHHni­iO"""I„³æ|ø&Ø®K|Å™¡¿hŸM™á»ÅC7ÌÁ@r«Gº½H’nov"¢mÏ\?Í<‹éû|i‹°û€ ‹,¨çCRO ”ÌÇ;+̇ÆÃ…MMbòr‰L@0¢ª»Ë¬€‰&€ 5°«èï{/>_¬ö³ökè¨+¡ñ>ÔZí‰%…uéàøÕWª“ƒcÿ­þ¿ºîiÅævo:O¡;­~.Ìíê±ÿÍß\©J[**+¼ljC]¤æE¼)­¬^̾ÄôÉлÐ;?½ÏÁ|쀄ˆ6’ÐÍ•(žo{¸!E÷¡³vœ6èa%ƒ×K0B[£uo?@ÿ¸ÐÃZ|¡ÑVyÀå}>ß9­k];ö_!ú˜€&€ÊAÊõëTé±;®ÝÿßÜÑ’·Å£^ãŠ~œRÓ *çc›¿s>.Q?´BçÓ器J—з¥qŽBLé NºÙ2Î.¡Á}â\>&îri›óAS‘M6î¯AÝÕ.Ö H¿! ÑÜá‡ÑŸÍíiPi5Àg´]TÉ퀩ïà½Ö‰þIc¨Ö¬-1ù#ÅPLcO7E5™ð À5&ZÅ¿ìä¦Ê øÈúZ™²`Ý·ïÕ} ÃÙñ†€6[}˜H7<ˆ/>Ü :8/Åa/tË "b»áÅ#øÒèé¬ir¥ Àiœz3uÅÜZU`;`õ7ˆõOdK=8þ_ æ*uW«áЧájìÖ‹RuÐS•>J°ƒ~ƒ¹–+Iû \Üoÿ,6îÅÕÓKÇɃ–Ów—«ò·~$°>Hí.+˜?]]¯dùºnhL@I*¹ž]xØ’ƒ°ÕÛ|!¶ê,É}å`C7z#ˆÖ÷Õ‚WÐ/Þ£¢‚~'t·>Nýû S!€ ÀõÍq6ž5MzÀ ÇŽÖ‹ƒ Uï 4 ¢9AG^×nœ¯É6ðxð {¹­iÌgÄàåQx% ªòè?ëJ.”¯SÝÁ\Я‰:O µ;äËTuaËa:y‚¤“ ã"èòÝN?ˆSFÍBI—æ<º·ú¾¸‹øy'±b !€©-€ ÿûv⽂jâ A^ZwFUcBñgÞh‘þ+€lw(˜Sl˹´& Õõ6çÿ²{y“6?¡"øq9.æà  Ñ1 Ôd2 ™…wïâÃM¬à#Wú‚îãˆZ%¼óÁJP^µ˜t˜0*è¦Ù8OŽÙʯåja4rb - WT‡4°ZC¬üctTt̰€µHЧ£®ª`VÈT_Ús– bÄúj˜˜Hç´<‚ÅfªÞh-ÑâhQA Ö$áâÔ3_3ð% †Ó-*Š"Z!€q§úü‰ÁÕeòËûŠ3*‹cœg¨ñöl®è<ý7HþAàŽG¨m”èàªL¾âÜîŽEÓodݨáÞò}é2w8ê¿›•!!tŠõ½PÅÓú¸Á¹+üAàêqî`´œ.4ô ÚÃà›ZCœsƱû¹˜ˆozÐzøz7Óïo:l»Ÿø¾hb×·FT¯e3Ó„ÒÀô‚Mo_’«öD¦™ ?ÒSÄ~Ö³ïч6’Y@;NflÖë2{)ý§Ç¦ñNšØâÓe!ؾX*dåÍP$\ýNÐÌáRXjJX$(¿B½8 `Ø!°\‘¦%°‹€Zx—^)P+" °×ª1ED¶ÖÌ„–IJðS8@D¾ìÐb,ºß³Xl)Ä €ˆˆˆˆ€€ˆˆˆˆ€€ˆˆˆˆ€€ˆˆˆˆ€€ˆˆˆˆ€€ˆˆˆˆ€€ˆˆˆˆ€€ˆÈ2ex¨"NûI`7 `WבÁÓõõ~/>çêÚzÙ`¦/ s‹+´© »³¡ïÒû)»Ú0„¦ Yî[!pŸ#kw\47:ÃYakª‚ÁnY­ÎÚÙ n>̬ßÖcÄS‚éw¾ç ¤‘Û·oÏÐ4Fó˜'½ÓaP›#r[´¹ÜÒ­|â•Ýš nИ°1ù8Õ×äÔØmf—XA`›0¤%-l˜PiÑÝw“ׯ<+­ßŽÞ±ø5‡íPh«Å×øevw¥£å¸·Œ]«ãå/@n6²D  wÃJî»(={Ó9D™ós¶€O)Ž­Ÿv¬°z¿{´náubb#uS†àîêÄ–ëÌöÆ©Ÿ…š¸„’ MÍjc@ÕpÏLlÊ~(P´ãÂJY:€æœð Ï'¬âq ã‰Ov!}n¬GMàk!®s’‘ž“•õ“»O½u zãxu2‡n)Óü/ÀPϤP̃è¦ã+Ò@Ï ìäD&ÄŸ> BƒÕ²õ]¨–W2ÆNGªaXH¦BÀñò3ÝÜ’&äxÍm¨K‡סáØ›û­‰òN1@ßÚŒg$Ÿ84½×H`¿¿&ãòu0·7¢W݇èúoøRºÓ=zuÕj"eÞˆïí|Ðì{}¨ Ó7úê &¦Ñø"ðO3}Ð*1 ÅÐ(@§GPÙôi²Ag:“ˆOt+¹ùCgNÚ-'û¦Ì¶í¾QðÅÑVäû­CÄÄëÐí öq´ðÁèf.0Š ÈíÃèwíVô^ÚRF§9»³ÚŠ¥d¡z‹Î®³%Hlœ.Axö}7ê2¸nŽùå+3ÿ¥8ö³c €é/â8‚8N˜(KŽcøÒöG((´’Î'Nv-¿µUóVǤÁl«BÓ]¯¨Ï~§}—Pû ð×Jથh{…þe—ÀǹÆ&=Úf9¯ƒ€ÈTùƒþ â‹@Åœè¢èÈáNA… ÖÏÀÑ…9õf}G÷‹0mÂkOhÁé¨ÝLô£` Ö‰åô j90·asoÞuK(l PÐäŽzu7K»G›2‡˜}>hp2çè‰=Ôd_'á(ÿ-`å£]ý¾)ü=ÀåN‰˜Ãéô”J˜_ª2–Ã})ÂßÈT{ƒ ,¡à‡ð5 Øs™fn,Du2_H0 $Ú©êɤ5 . ÝÌHßé”±m—£ª3U`ŽÂëáIå‚ó)ƒå·ˆ‡v3FÁ4ìàÓ  ßûtgùN,Ú ´uŽyA Å5$]-L‚¸åè¶7_µs³õ!€”40p˜PX|ê?=æã6&kà×_‚w´%{ m–ŒDWD;?s¤”¨Uø"ÆÏãK@þèDz˜¸œõåºA› íë`º€|/H·dŽm‡©’óth„?ìºC‰:A Àq´ ¾šº€ÜÐ(+$ž:Æ,.zb’>cËô3_£ž8eñ83Í9SÎ{„‚@WW¥mcÇ™˜òÍvmWÂ%âB ÿ‰£N°¬lŒþ«ÏŸëSœ‰9 ü>3êiΘÔmÑ<‰0 ´SU3GúÐsëV(9¶ö(Fò’±M@öØ‚æÅŽÊd¡õ37M3Uy$î”_§_„"!!€­µ`þ,U ܈ˆÄJ ]oÀ¶þõ¶?nPóÓ]ïÈB"}ŒîJ½ló$"2€*¹C£¿÷·nÞÞL€´è¸ÇˆˆÌ”*‹›>ŠÜ¹Òž”y^d9šL\@""""‹'ÿ±ò]¬ˆ!¨û ˆ¤‘àž‘"""Y¹š¾k V‚sz‡„DDDDæK¸³ô ú+½=w]@e~H\@"Ñ*|ÔO=’‰ˆˆ`ÐQü3ìÿ*M°>ë&€÷êõ†B"ãrƒ0ˆHZ  Ô­B<Æ +óg–# š1d©¬€È¤ 1ö¦Ç¾¥ª³ç¡‚õ+ñ*ñ·«O{ç¹¾±P‰ ¸ïûÚ¨—‘7 ¾ñeC¨l%ÀbÄ/¸WFCÂ'¢;•/­þ Â*·zÕ´êÃRÁ¥È`¥×ƒŸVÊã’i ‹ÁýÒ *ÆDþ Ùoÿ5ÍûƦ®ÀáŠ9o„1ÉdEL=´*EXp²Bæá†¼¥˜R[Bid<Ý<¸³àRpN1¦/Õl95õ¼oû§2ïLÑÿ¹wöHÌ-:“nv‘â‚›¸Ó@×ȾZs¹5ê›ûõgÒ·o $Âè1ð× îŸ Í'ŽÔ–Vmxeæ :¡¡“Íûv'ZÐdÙƒ·gbô%€à§$¬Ã¼û¹e%ð– €8ûÊò±ÌìEì\1ªÆ=ÄßâîäÛ‘œHÃŒó<pM~WŦç}ëC”Š þ´â+ûAƒ£h.¢Nª¬žº¾LOE…cÁëY†OH¬Øþ½©ÝÝibK¿‡[ªYWÜ‘^Ÿ¿nÆrÞwÖ¹ËþIy扣>åvbaG©Çʆ<¥µºc¿â #jÛæ†(z^¾o~dߎ(èî+A|â90Áç2+ÁØ.p#-k-z¿õ™ìÕ÷RÍûî n&º„Q8˜Ž¦´ž›ò€ òܦÁô^ð†ßßðý”tú›·÷žÒŽDÑC¢éùH»ÍP#`Híq:Á¶'‹#€󾑉"Ð8¨î½ë1Ü $¨e€1Ä ™ª(ÒÓ azm éq$}ý z\•ΓãBñ)³î¬$ߎۮî|Y"ë'X ËÁÁ[ÂÂð)°ô£ÅCGMé7òÙ .”û,!ô<ÕDRšÑ—õ½æ¨àNEç}ÿ1ïÛ?g²&úrÿ2Lœ;Þ§Ì;,"0•ÜnÄœCmvlB‘·ÐÇäÀAsW¹fÎG Nf2ÓÑQ:ë 5ß0ýF¨ŠS °¶jÜ„{аÃ\Jc~ô$0dÞwF.àÏõ,¨5_«¨eh\†6ŽßL@€ër1ŽÖ^Qô ™—A .©%3_ãó 'Ðo„ž+62úÍâÔ³JÑþ‘8 vÞ·âÍûîµ~¸ÏQ¶KÐ%f‚éB[#hÖðl”úÌÄk7¥5Rêºt¬é¡>0"œ'>o í»'à88Ò€R j%ÐîÔùyh Ô5O yÐÛ³ðMElšML½4Câ N`KÍ9PËÚ/Ï|_]%”h—8ƒÀLG¿¯¨(ú—ä¼#úJªa|˜3mîXCÜã@1n*d«Ð³Té‰J]øYAÂA LKÖ¦—n\XÏYŒö¢ 3Ý=gšô\O”-|n+B7RŠƒ?1ë &ó¥ìçA¦éŸðà{DD„–g”جÍ~þ÷X¸,Ù tQÇg| àš8AQ*Zã9[hÃ…Sá.m‹ˆ,ÃàÔxp!U”ës[ÛQE=bÔm{ï6|#âQ«N@D`wÖ +Z·ÕÛG…o‘$–„T‚ˆÀR JaŸÈìs®m!€Ùô{»Ûçbî¶À²A6*x»¨Mb,žnܸ!0O9{öì®B ½Ir,‚G W*H'B"»9  0¥Û‡ñäîcã… џˆíEƒZ™÷©€€–ª=ìp:ˆ4ÛõÝêîHL—¿÷ŽïFýîüØa   …˜ömZ†¶Opãi—äÞÌœQÂ5&Döt‹ÚA€(FcVoL‡[Ã)üs਽•˜ÿÖ½ëg? Ýá¹ôokì&6ú>š3g#q @ݧÅÄ( $ðn8âÓÙ2¡ÖJ–\ÓC ˆ¶Ä^Êt>Æ8°ýQÛæˆ@õ¿ê³Ó¯¢È"êÁŸÐd|”t‰´º—`W7gxŽ^ñ}°›ð)“’ó\±Ðm~Ñ â š›_õ]Dâ~. t6qûˆXýz]@§|àn¡›5b9± ý6LÑÌ™V‹/ÿ*¥»M1ýhN1¬jPÐác–†EÇ„}Œ‚îÉŒs˜~¢È¾ª"ï”`[¤_ÞLÐ8h~‚\BÔ”•?z½Ýåax‹¶!ÜÂû®À(O?Ÿ­CŸÿ4u…RÅ΀+#Eí–u["c¸€‚^Š]s¡'FóEÌÂnŸƒÅÂJ+O´ ¾‡Â‘ø«¹n8ɸð`æ‹B«…&·xÙ¸®C!&L Ž‹ÌvÍ„ª½> Àç&"n zç­Iµ.1­ë¢Ë%ÆEcôwÏñŸ“Y…ôÕ€)€ÏúÙC `[FƒP‹HoiJÈ\@>ìîA®µaùŽ,õÙï…Þt†–Ðò"Dùƒ&â êó±J.0CþcWÑá^„;n¡»Ñ `‹Kš¦ kzÓxmX^K©g®åŠÑ£¾¨ž˜·côzªº€ «ùN (Iæen½n‰¸ÃãÄÂi~ξë¾y±¾‚•¡…Üp½4ôÝÜæL[°Íi úÓç†<|N• ÀØ †BpÈ×*-ººÃFQÏE__ J£ìMœX“AƒÈ·ö8ÐïˆÞNT»ï"ÿs)™Ñ^…’É j‘TZ¿X?›‹˜²éÂn¿GÐ5FÌR¥'À)b…0¼Wø‚¡'Öÿhô!âJ3!•`5wª[0ôõ­çZõ ÈfK<Âý3øÌ Z]³µ ­³ƒÓ@û- Ž Æùe û çÿ'ûÇõ$÷ pÀ];fÔF: ŸˆÂpUZéNp`ÎçroG—M-Nl :[¾@V Faš§#h[³?·Oc}Aœ¯ïÇ"µÑÖûŽ Ñß—'ý,!€ ˜5À¾XW·ƒþÕüï5¨[¹ùˆ2£¡e‹z;÷$ÈHPs‡&«֬2ÏÖ˜>èÔcÓÇaÝMIƒ>ôø÷N9y+Ötè1LC$™¤5ßàz`&[š,sÄ"DY™ÅZDMFÅwZ„ h÷ƒÁ 1|QE91ãrLïXž„²?6y$$7L4aÁAf„º¤J^T"·œ˜&'€´. ·„=\@K™´Ô1€ëׯ뫺ÕjÐ!äÌ™3gE&!€Xð ÕBl%Æ`ƒŽk ”7¼â ãA`w\„ˆ¶ÝcX5ÿˆ‘mtô‚æõ嶈A`Nô°åYÙ$WÞŠE€~†££ =˜lì»¶HÒèhÇ%8µ}‘À|vr·— ‰È`= ºõåØ[D3˜ ‚á” ƒG!€)‡C᳤=‰Ìœ0†E-v@ç…/©ÀÝŽ­´k Ánܸ±Å9­‚8"KTÿÃUó-!÷E¶ýÉf»`»á€¶éøæpR¦þ_@JDXd7tÿ}sqÖüï _¢%€ ÏN~—i>ÐÔÍ@IÃÛPÈ °Èn³éðÈÏ&Ùáìîá ¿'!¼Ž8Ê]>Q¢¾ø`§‚1§“'ÕkÏT§VÛs‚n¯SéœMö=4]…©ÉŠ$Ü ('Éæ‡3ª¨jKõ¸WÕçªEÿm|×ÅÀ>Nã=·¢±ÉŠéœ¡>îYH'ÜøFfòÇš<*õ¿:ÚEÒ÷ØY·W°ROŒ\¯ÅâÈjÀ[Þ2ì­ H ¼“gU¨I:L@áMÙ)ç>„ØêõEt PTšÃÙÝq«¨`m¡ Ç* ý¢¬ò:s ógO,€½s¡ÛÁï,ì å[LáMš_½%xS¿MÖͼ˜Ó-J«ÀÅR?ÊV €ÞE|×À·õÕN€rÏUª†^ðV™§“ôµÔÂÙÍ-tþ)•j~RéHNYŸ2)"¹ÍïK¿Y®ªÿ¿]²v(›³°¿cpÇà€nqyŒ¦œ©KU$£pÅ6ô#eæƒÓ*5†ôI¥LЩùП}þõLõ€ÈS¡*¿/봓Û§[iç>µ#Sàuðg§6j/å3¾ÙPÓÀ¢]@ h‘…«âBuôǨòé!š¦¯ûRÙ©ðr¶ù?©"V@ÃS žÊ>¤ú½²?†P€Í @­€~y_Þùs<”WvƒF®\悞‹6 žÚÃ-¹ØÇi c¬›ÿ÷¶õ£è^ú„²»V1¼WœnPÝëªK Ѻj]цXŸbt¢+< ÜèŸ=• r2ò'åoK°IëóöJÇe£¿Lí€åÙå•À» H‘*?D³~êÿz2µz¼dN¨ÀóH™Õ^ E@1¤*žeàsò(_°_F¬JÛÚPí)ÏUÅ1ÂD¯{Pa0@$×é šŠª†žò¢³UŒÍŸ*àÌT»“Ò!ºpɧå¸íöx â4/Ÿ j/Л!S|æ±€öh%ð0lîQ«3 ±tB×Ô¨0ë€5t_A €î"ßí ±=Jyþ0 Ô]G}.Š<£HÎ[†"ê;ƽHNŽ€E^ø­÷™Eëö)\Ä¿/ï3×¶àðšrœ™6=s{ ·I£kÜ´úÒ!«9õ5R¿½èp€š7î ì€P辑1|>ÂpzË:Â<^|2Æ®þwO:3º½‹rÓǦ죚þK‚­¹ãFñïZI=¼®»Ÿ3¬BƒÀ<Ö9…c܇P <¥iOÄ;ËiCy‡”G§Âoš—Oº §i…I]ýé+¿òs€i“®@5W!!€$nSËŽmÆÄÚÅùL‡¿¢. €Y€L#µ jÒtl  ›§5 èM§¨Ó©Twýqõ P¸U–Ñ}RµäšNú è Kˆ÷k}µúS9ý1ÆÿQ+šG7 Â -üL­ †|P€î»gaó @ÍS©* Í^+rw @•œÖ‹Ø×¥=3Mùçª5ò ¦naP3Y;;hî[B ,’€~´OkJÝ[T«ˆã`+òEÓi×pà@P´z…v° HwU{{ž£JozyµÑ÷Ui3D×`¹õ1 @ùÜGõÉŠª …©ùúÄ”3ÿ”‚¯¿ú¿«ò»€j¬+ŸÏðò¼Bª§–ÏȞƯô_]P©Ô[EÉZc0'ÓrÀRY K9­±  À4T«jÿ¾Ø¾Añ% 0Ò@· AP ï":˜ §¦¹UÒCb¼:…‡ð9Ôÿ¯Ý÷ Ó£Z¸-é§3€õ…×ÐÂ,mÝ«Óÿ]¶èPî)"½=ëóÂVöóOÔWÚ‹¶#¬ýÂGtk©4ýÓ9b¢yf­ŸrÄ·@mô}ŽŸÆÜôPõ¥ }‰yÛ&ÉHtÚ̽À'èt[ãarBÚ+ŽRËÿ]‡¾£r!!€€öØL‚öq@V®„›“ó:es\*Mp•îDOØyÌ4êÍ|ê®ãa3ºÛv ÝÁàá[ |JáúÔwZ;àÛeöm£d©Ó_Y¾þ—ÛãÓùúä¥Ìh§ö{ukñWýgžëëfĸÈ7çvn ˆÛæ‚wïè§²3UF«ÿàPÙYðúí©ý³?‹ ëÛC™s¨ìWøÞüW{,}¿qÙ›#¶XßÙ'2{Ìп¨àÑÑ*Bó>³Î@—"ð=//š–f=„p€~«‰ºu¨©À¥*-¦¢X/ 0’èyÛ Äƒ¹@Šf”'ðÁ½Š”g¹©BMéÍ`¯­É*ú]Š77Ó„H«Â7´û21i§èhîÓ  w \¡O/ìáEëœéü uø`ïÕ èKÀQòMÖÀ CNeñÙ¨@$3ûÓ¤‚êÿZëWÞAˆ¬{äàœ9¸hòYSNq:^¬™¦jpÕY_ß8÷A{(:CSø#o lU,s!SO¡¾ àÜÿ#]Hß~´Õ³¢š>¥1¹£¾.Œ¾¼m…Ë7“½n{>Eøú9ŽAÔ5Q2?ôl?O¯ü}eö¾Nèàè÷ñ¨ÿÕk®ŠKT¨Âiìr¹c¾±4¼# 0ÆH‚í<õ=›Œš´9?ÉÀ|Q `«è¿ÆÜˆ,b€Þ¡xμü|ãö™Z·¸8â ×µXèH¤¯Æ8*]Ð×Sfîü 5±Ÿt½ÿ”+¦åÔ Ô]öU0û¯ã*÷ÅtEèõzЧÇkçÑo)†j*IO¯'å7[3u©9.tÚÃÄ_9ò±„fj¸ú>õå®~Rf<-¯þ?ÚWýáÀFç5£¾/­Önë¹8×^*3K¯/¼î:p  pMW6£¾ÛAÃq,¬¨¹lÞ¹ÄðBBûKö~¹Šk,ÓmŸŽB3„v!~WW\øï´Aú” —j:p•0Êœ0 §ŠN3Û¦+ . –™#¥^}w¢§-ÿ’ãbFu¨â +­ h«d18_Ù¶~†!wîº# °>ÐÁ>;«+£Ú_ `nqØ‹¶Àˆç‡[¹ÃSùGÚ1±ÓTà ­ÊA»ýÄásÑù ñ›•Í¥„„B-7Adæ‚ßW{Ϙ¥‚£›*¶´‘cÛj8j @Ño—è{eµðf*  ""²§"  """   """   """   """   """   """   """ °§R€ÿbᅵÒN¯†f¡øw«ˆ’¨dWþ’p…ªTÈuCRÖ¶)°þŽ‘Õ/7Ñj‹´ß/½¨ÄßN@ eãô…:PÃà#! Í0ɪéÁ¥ˆ® ÍŠ[5°ª»`Tl¹&’+jôwp÷óîÄ'€À åt>˜"T¿u°O—Èâ@3 ZÑê˜ù•Þ{¤Þ{V¹Ñ<9¼[°it7NP‘Õü^õΚê.’Ö·%Nod‘õ¾ÓlbœÊ”AóÿÛ‰®¡í_@` JÔ+¿ í=­Æ1ÈH_S/Sºˆ ŒlQ«:[å `ögÂy k#ªOçÈ/b@}O–¶a'ºë™Šve )+øvVôj³üŸRÁó5 «ÁÓí_@`j9Õha§2D»ÄU*ÇiΊ¨ :‘*O§…õðT/¢·ÓÑÿ[÷‡-€0hèOq€ÞKÇË.=Meþ   PýÉØ&€î‹±_Ù.X[†ÃVΞ©ÁÖG0×n|$$€²ŒÞ¼¿ÞÔö‡í?[ز°  [6šN;oþnó«èÁõ‚é*™Ã!NÚà~¶ÂÇÃ×ÀØ'9ô8ß;cU‡îgw1¬/<п=ž î×'ŠÛþ…„–å=êMøíèñ}#9O<=@^ë¥@”°AÉ»V! ”³¿MQûý7!Ì(ÜwBCxȲfÑ@{5ëQÙ¥»Y»óq~)¢ý lÍ pù©2{º>|P[%`6k`(Dtáî^ͶãÀžã=ù +S-¸. XÆ2¸ã*ê“Og„'UYðxå: ôŸ€ÖcºÙ7×GPq. vög-Áá«û2¸YaÐÚw=õt,vûÅÍ¡» áçA;RãH-î¯i $ƒ5 Ã+L—¨‹˜y‰Ìtt;Œ*í]Å3uɉþõ¥]@±`TÖM‚ï®­‡bƒõÊC/·4ãx„ˆi¼PÓ÷]÷ÙK6èÿ3`@Ü7Là’sÑg¬g<“µ÷¥Jwïq›Ïá ñóë‚ûrlœ@…Œ g‹¤¶åý €À„RÏõl: Ú©ôEز7Ãhjýº­w±¾èvƒ®V~Q7i2»ÐY€–¹. Í3 ·Þ±?6ZœhM]¸_oH€y; ñõŸfHüMÏ›CÔ•óm˜¸úΜëŠÂ3”ùSL–ЀjDÿ¹ùÜù¬ñ=ÿ#›,’hNt4¬ª¢>¢Û˜g.ÜãigýfdÚ ~}¢Â€Àì|>Ѐ[u£m_²´ûÊè"r£õ ¬Ð¨BpÍQgJœÓµò>^ÜC³òtaFa©öæ|}¢¸€Âæü4W W»'ä»-gt+×íÓ=wfÙ7æ‡ ¬« “Çó뚃­1kVhŒ€ Í6@Ý¿=Qä@õ“ÓJ Ÿåê›ü³ö删`þQ–n#oÎ ¿í[ÌˤÕs¼’ëÜ5¤{ˆêºø-_<¼Ã ä—€]¬: ½µÓ"ˬ©ñ÷ ú·'d…õÅüí ¨·¶Ý4èg/©ü%CÊf‚?r*úlwІ ÚdÀ®µeÃg³ ¼;%e ÇëZĹ9WíØ˜ÕÔ­ÃêBBÛÓúÕº/­û@ëm¡›dÝÖUŒNÞISt[|QÚp_´ýuƒ ÖЮ­žwùÀ††Ö,É>0â;ˆBC <¢p_oÔµ™¢Q=¨Ú{9+»qðP ŠrÝ õRµÐá1“onrº?•mgþgáž/¦²”ŸG5…+û¾"À©¢5Ž[s žFzRcª ¿oL4*!!€‰Ü>ˆ‘‹µE·o¨.ÖÒÿÙÅ»äpëæÀÔp8ý! 8«‰ê +Õqìï¼¹Ž¼já¢wªÆéféï)µªŽ!ßņËõOáHa°ÞžŸ _PQDà”5¬"²õ©ÿoæÐXŒ˜0cÜ;ÆÉ£&P1äO¡ªÒm› :TLß—…„¢0ÆKŠÑˆƒÓ{A¡ý£BÇæ-jœULm¨ÈÔù’â©Ôãhž˜Pô Tê®ÖAUÌ¿GéXï,(ÒØé|¨Â÷ ªñÿ J±ŠÖpõÈ0ê‚ÓØ‚séчV _™˜÷qr–äô6c—%%+ 0’Õ<;½½õ%“)»34>л®~]*V—1}¸àEã¡òI‹òî•AH ½ä*æx9ó¦Q^°œþðõ{õ N"ʈ"˜µÇ¬x3/«G°bÅ+‰»–¥;¸5´©ÌÑÄé-f°Ku´{¬.¬‡¿ª“De/4⯊ê¸Äžô¹Ö÷é¡ÝÙɧm˱Р»ÍÀò¹ òoö$†-IݤŸRμ†Ù‰€@œÿ§ŒŽöãéÈ´Ÿ¹¾·R‹ü^/eKkYí{M½Vo·ôËjKBBÑòJ6Ì[íöUÂÕVbÕ¿»Úµg¯Y¿l†S¥Èt@éX¬  ÌºJþ*EÅGaÀ¨HÏjé ùr¶Ø¢K/íz¦ÿSjæï" ×ÐÕzÍd‘vU±qØ0`fR±40òé©áÙšZ* ÐMiæ „€À¸NÏeêtã1Ê–¾—Z mj²(±ÍÔ’{à / 06ô;÷y–nÆe>Eg*Äk.DË-’g¨ªþuÆ­H@`K â:|T@yML¡˜ðO„þ§o9í$f ñÖK«Æi¥BBKlX}_«èñÓLªyžð¤ÜèJõxMNL‹Ñm3h¬šW’/¤‡ ì‚°tÐcW©ä½3§üj÷¿»Àb @ ŠÿdBZUûýÑwôõ…d  §1®ÆÉè[vÂ,ÊMlÖºëNß”SI»¬ Ü Pc͵g6'5o À~€Zþc @MøêÝiˆK 1!Žóhô§lû»<ƒY@,€Ã*Ñõû¡X!mgý±MÍÔ5!!€…€Â6™‘ÑØý³è§§-X‡ 5×¾! `ؼ{ª'š}\ÇÒ¿è9”Wš`§²±°ÉÚÜCñz~g·ú‹sÁtû~ `àÎeýÁôïåȹšèáq²ú¸€ÀP½Ÿ”³w )«¸gÙjx»…·âw­µÁ =ª”t`jžZõèÙfÃÕµúÛ½¼cI.»Pd—î0çðá´>«zkâŠ"ƒûÖ®î&ž}²Ö»ƒRÙ+E6.Ä¢?}:/_n¹çå vÔ Ë±ú,œŸ ²ò {¦jw§ûÐNÑVà"¨` _#0#(âáKa^ËÞq†%(^    ¬B!6U‡LçùîÄq-Ûrš½ 8ûa¡Z ÀÐÂ2uiãªVa /÷Q‡]*>neû%°i¥ë4ø…ÙËpé½0‰ÜƒÛ_Côï”AËÅŠénB˰Öûµf¾yˆ0¥r€î`,¨¥n®p?¿ïd<7~éæQj{Ë¢ßf5½ ÀòÈ\£[×Ô¨–à—#e¦ÿW8ôv]·zD#¬ÛÚË٦ɂ]øþ`…æ9àat€(¯HÀ_9)]!=Bÿ_”w“ØBó!€½¢,ÀZHœP„ÓØsüѶKj.Ŧ Ù7Ë|½ëœãÏ!3%TÅlO¦ƒ‡€æÓ~–§?“Pߢ 4U„7£7[ÛכֆƫÌЀ«IœR£õnäM+0ÝU®‰ŒÐW`UõŽ¢ê yîí&`iƒIèS]@ôzÀêž '-Hb쬠ÂǸÆÚu…·~*Pȉéâo7ù#œN°¡;ffi™W½E%†;TÇÛ2ļcv¡çx¥ Ò¥¶S~a½¿ñzgcenÂÄvõôûÚâ•#† 8{ÀÅËô H`š& …é#N¯¡Mm;™b»ïÖlÌΗþM|j~ÕMÄØ°T¡le»{[AÆÆ*³úx66ÐhÛw7-ÞÚÖ5´ËkÕ¦7 ¼Z;LÎÛózuƒüáyö4nØcÊv)ìZ°ÃC´'…C|`Þ§rôzÄóf­=6]úÝA¨h”GþDJÈ Æ«Ãôuœp˜—túÛJ’ë Íéäjgk]çSÕ‡ðõ¿ì™×Ë!Ñ# È,(„ge B¼= #†Í\ý³Œ%jÁ¤iú̦h)>d[g\+¦w|;®ª÷8 ¨Wü6G°Jª¯YiTk×yX¹Òô9çEw½G¦ÏÊDzò)ýUÄ6Þ­-SÀü©üXÿfC'֌@¿9P?5Š[«@?¾¼.–RÍÀ M‚˜L„fC*""4f8|RJ"±um·¾tq&[»¨g(dbÞôîOP¼' 3.¼*½:°÷ºãèï¥`׫Rwº=]æÚûïú…¾[æ„úB’sÄ*iÅÿ¦áÐ Ñý¸õùt> þ*f·K5”Ÿ„æm¸óùòòLJ+œ!ί"Cø(?vÔï'³×Å”ÂÞ¾• ·âM LP €Õ½yVÑ ¤Èœ! /@ÑÌó9Ÿ¾!±#Hî»CØùcg^°4gC˜vkÇʶŽ9ñGn2Ù¿ªì¬ùCÕA±v{¨_݃¾£Ú¥Ô@îØÁFTv•γAz`x`¹‰¨Q´PÐÊv½ZŠÀ·z¢Þ-‡ØKÙ½nŸðf™ÄY2 è‘`ú[gÁ¶&ù2xËVPÆU²¬rrŠÝïF¢>óSëM•‡‡ü óÐÚèìiœÌɼ›pýúuΔÐá@qCG×XÀ¨@*ÐHÈUå“çyoã^ÜŠ È*¼éÏPáõ¥×ü‘\Ëæ›AcàûV S7å㉌uߥ\E ›•õ¹*e踀O·µûúÿTöQË Ê꜉Åë"@*äÒêsoŸÀ4€UνÄ+ ·£{(öÆJ—Ñ/îËáÞ2ÐMOsZH¦)c6TÐãÀ„kÖõóT¦€K|/Щ2ӣЯ”–W ;&lïŒvW»}”!w5gÿK%ÐÃȺÀmD úZŠPkúYÞIfn„kÎSú|تÑÖ{À_SïAK JPW¡üFzE%ó >Ì2@,V0ï…Ž¯@dè2ÇËÌ<õŸ{03êq¾ùó‚‹•Æ2PÄ·@_8ˆ_À!â#¥Ê‹SjÕNB\@ú'…YÔ, —3ŸãH ΨÐ;w RüËfΆ62€ì.a(ú3cª\ú3-€mAHQê¤"XƒÂ>rrÿŒª–~ÆavpG¹€>æ¸þ‚EŠ"<1@ÄŽ È1êwªðÝ ÿš nhô¯þ?êèø„ HuŒ€ þúÞï*úEg ÐKÙšj(lxQBƒ-}’·CY×2È‘¾¨ÓgíÅ¥¸}\ŒàOV·5“@ºØ1Ø(¥’éOGùÀ矉Eaæ½±ƒç><…¯ìÖ-œxÊù”>ÏX+ßI´½å©ò€žI³AEå5%¨îOªƒïªëðQ˜È\7Ȱ™óc6lÔsDÀí››eÀk·~¾™ä%€|óg,€¼Èõÿ­Ý0Ì57;n˜Ì;&™ÄÅ4ÄM5³%¡@³€˜óšäMùÔ¤p—<’|ðÖ‘ÕH_RnyŠŽ‡GÕZ?(jÁ*ƒ3§B¼²¿(‰5gÄä³V(dØ4!gÐxµÄY@|×jï®…#4[d¯±q?ÖK>ñ‡ÛÖxÚGùG3ƒ´û=‘!ôr_°è×3Ýsãú/†+;Kz-g!X& Á0é=èÚO‘Œ…N‚ià)jyZrLL² €æ—M·2¯Á7d½õõÌGšUZÚÓϬ™èÐ@°ò?ò}w"ðÇÅZy3á‡9µ·CA$´Ryz/UÞØÖ\/¦‹|žÀ…ÊÆé¯¯àöÍAnŸè1€Åv¢-n‰¾{u»«ö¤»~:Ù)![BÊžÀ"“š â2™ˆˆˆˆ,še„DD„ö‘_„DD„Ä @D@DD`,™¬- "" ³€¼ô€F­Â;Ã:Vý¤Ív[@휾½0Jb¹ºwrž [ ,’èfA÷¥àæé»bÂí–$ívfI^nÿ;¼¨ôÍô—µÂY/”‚_¡ßgJ»qæ뿃¦€XCý ôÛ 5¶›YêÏ@}y2u›ÿwú!Eµ6RŸÞ¼˜UˆPÎÓéÇ–¿£mX¿ó‘÷ØßT`7 `»þ™`“õù¶eô¨ŸàÞ¼Ûµ’Àè¬?z@ß‹ii±ŸŒ¾kìZXDY‚Ëu§Æ"í¾nÊ 4›¶BÄîÊIöv§3&oŒvÛk¬ôîÎØIÀXlÁ’ DwÑ!ñ&·HU‹·:aÛúéMýlˆ~|‰úÌ•`ƒ^TföÈ<Õ,†áÔâV£åÒDÍ ¾]2Æ ,Æ二£ºX„êݘ{É¢ÉÒêÅ®Qï>t²­}-7½û¦´æîáKôʼnŸè‹i›âOÖÀàØ@(FyM™ýeztpÞ÷h÷'§a!€åÚýÐŽÍÑR]ånˆ»É7ÈI#H0Í‚~ òHÎ…ffÙ¢ÄVΨãyöÕs°T°© ÙG~ˆàƒßä8åwõz.ÓŸƒè›Ìžb==IsX¤@7(p&0Û íߣ­EQãl4)Kàèqha, [|ª³Úê>vÝÙ„þK«ä±(–Ü“k5òQ˜Ùäú@~ì¥B³&Ø}¸éjë¾öÍW'™*!Ú µß“ズÂ@ÐC;ãKqus…`Á +£wYßbˆ{Ð*¶•yÐq×Ïë¨ 6¾!ȱž‡T#g%ÈıÝY`G,D8ƒKQ*|ЊÏq/úrËâjÖîZÝö!;ZÂ(Ežxq×÷ü‰odp^™/Ì|ˆÊä;|è¶Ç/ ‚Ä›ZWŒj‚>õùšnïÏ|q΃NX† ¨Ç"à®uœx~*Ñ¥‰òp åŠNçü"-=ÌF?K.¨2Ó“—¢äð:G-æ„_S`ß‚ÑàÆX%ÄæÚ"&÷-U¬å>ÿ%¾FœÊœ~J›³üúï±Ê7IKµ*sŒî,°``ê>ïJÇùœ¿“TòÞΜ¸B¨í=€³Jƒ¿PhA\Ë™çeLOuü8QiçêD5W!‰:Š‘kb§ÄÀP /™ïÚËÔcµjïGõÞ] Éœ8Ä!‰!8e»I”=!!€Ñ•_¿"Px<ã}‚Ÿ&àAïQÛ„5ãûi`¨WÎP<çsŒ±5y+š3W ˆÌƘq/""  ² •9q)^ a/!!!€}|w!!!!!!!!!!J–BD@@DP[DD@ š€ÿí«eQ¬—ÿ ‰<÷rž·Eôð¾iž ÿT䨭ã¼JüM›w,TûîC^SX0­21|NÀ2 €¿ŒvH'T£ãšÿ}G/\àÞbÞXWN5yÃË' tO @mжøRjÞÅ›Oí‰~½Û>C4â¯Xû<P`}¾°ŠMpÛÂzßqKàå‚¢G ÏCÉ-øi–Å1»Íˆbì-Ä ‹Ij pï÷Ý‹@í܃÷'yw!€™Txþ,¶¢–rŠš•ùøï›ÜàX—|XáÇ«Õbä¦UL Oû ƒGUWò•äB;BYy(U² ÚF÷£8 Æyßê9ÏTfkÄjú:ôêåÍ£ÿu¦,ç4a0†ÄÜæßèÛél¤úáo/°'PX=9/W~lˆPºg©Þƾoz©·ò<T×zŒ`[u¨ˆš±*3¾œu¶*%4aô ¶:žŠ[wW¢H±[L ìÊ, µD33[kÄQÀïß8Tvæ|7í l ^WVÉ«ÿ Vf[Ye.,ØO‹­½J®U+sª’T¿¯îùv°žR˜Ò¿-LÃR:監ñÑy`"¦sáÌúmù²Üh©œÍJÅØ? @!Ú\Ç/1ØËa&1ĪSÃÏ+ÊkÊÝ[[ŽTÝÁì Üe¢^Ÿ:dGeš:˜oí:i=Z )çYÁ:)¢Pl8`ùf²¡9[.'q¹ãìä̯:N>B2 ˜çæ'Õí$ nfåãê’(xupA ¦„VQE9 4«½ïË€ . ÍR½ À˜/ ·áÊ~UÚ©4àž.vv[N¡L5*Vo9eLECTì¨{-—í…ç\Œ²?ˆ¢ ôQ9UÈMѦ´œ0EoȳÇcy€kžbÊ£ÀŸÁ2´fJ¸wÙ}L¹°pbÕÏ*<±”ÑÊ!àÇåàk*OQ â4 ”ÃQ vbðäBŸ2F(×vÀ{âߨ~BÍ Ëi“p !˜‰À^ìVOv)Áè¤]à(\´"P‰87 d48ª¸’¾"A QÀxBrVm9ƒb×UzÿF›”y`£ðÓÆ¡r=Ø›»Þ¿¬NŸU:.à*7±Å¾¯Ó§Ð”Ķõ=àOkñhnœ‰4´íB0MpxÖWÂ({B@,o·¬”5 }ܱӮûhÝ.}ZÞ—ëhhwÇʾxs÷½A:EjШ»ÆåB´¢\WI{ÜQPŸ6í©¢E* \m:C˜U¾.^æRŽSÈ»ˆ×H…› deH¾WãøÜ™~m&œÑ¹ùÚw‡8O4'¦Bz¼¬[™´å$°ïõ>åtTÕõÛâÎ}'% è| m^ âì#31© #,ÂF°x>€ïîIí-™I-z@].†Ï*5Ü1ÅÊðë´9ÃÌYºÍD'± И.€e¸D¹ªiÜœ»8ˆ&ãÔ£ÝyŸ=€Èȼ£ÅÌë@?ÿªÄ¸Í±ö4&t:}^ût2=}ÞK Luáx €GEa+’²rUi¾ø½¤YàdUÔ/¨ð!Ðö×'y«Gw+áЦ N›B‚Ú³Ü)ðA:½íˆ¨ïÍ|Kd´á…Õµ)’‡Š`=û¡°oºa,X€Æq”· ‚@Füª=éY¶é¹î9¼¨E;v̯:ú¡–ø2çCmT|òËéÖOðM…Ä4±¯éP”E²Ý-qQþÈ1îÿñÜ ¼±ª :‘’Yo}{cJŸ(™_¶ÖJ·÷hޝ>…ØMÈysilÏ>®h,&®VT©p9}‡ãÇ?4°—&Ç\¨Y+Þ+«Ñ 3œæ ¦Ì†f^H!!€ð°§«¢sNP ÅVŸ& á JHE<:—‰BÔ… €~åzè~r[„0–÷KA!!€¹vZtWÌ¥‹IDAT…¨ÞQa>™*'®º…š‹ÐúçƒþB;HÊÒË)íP9¡líëì}e»I»™{Á¯?Þo•ƒòm¸Žy¶Úrš³66å~Š€Xñf,àÌlÔ dí¨jI(à vTÄ$žÈΜ¤äBB‰ÕBº[CÄSŽd¢á6ÕBm¹ØK¬ºùÓ?,„ÀtpûöííÀØ-`xþtéüb¿÷®›#¿ÔükÞ÷‚½ßkx%/±mƒûb¸õ5ó¯>«^½•Â,K1ÜC"\Ö›&ÿjÓ¿¾ k7oÞÜ HBwU&°¾Ý=¦l|âõΤ‡Â¸ß(É×Y” 9vCÒ†@§ê¢°6%ì€á’rª™^D,Ù~»aDíC4Dz?ÈãÍœ_Œ„%¤ó'¢Œñ#÷{‘¨¬8?S–þ¾ãÅ™ˆz©ä{ÚxƒËÆ¿# @MÙ6×}X?l‡Ry»L>º¾,œšx¶oÀ¸ÇtPÌ:ínN¼& ³ØcC§ÛÆ8/‚’è|€Sçý虿NÍàfòœ½÷)ÕœÚßA`K›èýú!X_Ñèû©ì,¤»ûN» +X xÅŽƒå,?\œ‰>íÛ¾W@‹gå¬7B$QBNÍû:°ï.ësÐï‹&F³ ~/7¬&§ÙÐo1<º| „>¡[#Ý­Ð?ƒ61ñ]ÐÖânàÛ7ƵuˆæG—ÍWÕîãÒ‚áò\@Z…OõÎ%#Ò,l:Ä—ëÝ©Ð$¬”h«%úªtù]EÕw‹uÅUÁˆ·6P o)y†XåA3ô Ê,[ò¬Ïm}7—Yé2ÀÅÉß‚øLtk$nña1q‘~#‰vÕKggMZIBÿtÁÁõ…ì 'WÕ|® b«  ¡úÃLìšúó£I48ŸYŠÆU'Ôùà!¤¢ Š>Ââ ˆGt© pÓ%Dóº’h  Ë6ó`4› Ê`ùph¨%ZN" êbæV’×,å:÷ÐmÅ‚µäv%ô‰°oýg1Üû5y. & Õá!‰}.Ú>E]ƨ.L÷ "¦ú|Ç kÒ›Iñ Ƭg&|Ûú,¦¢ŠŽú¾'‡áeHULոǷ@ÉÛÂ̽‚r•Žƒ  ²€û¸}'¸÷·; ´7Xz9£®‰`žC´9Ž­ÍyPÐ÷Êñ›õxßäàCÓ‡Qó%˜ƒÅ©=rð½ JBü|¾ÇõÀ![9NB÷¢;ZÆtjÑç¾_‰-0£šý}Q«Âç ßñY@#1Ú|Ͱ›kWZ?£U°ñù2¤{‘ëÿ¡Ñ“èH(W}ŒxÁ`c²g4Ï`à—3 ÇwmûÃ9èî:邃Ӽvzú@𛦺±Î"߯QƒÀÖ-º?ú( Ã}YÊû³‘Þ Á˜ÓÀ}óÿæ)‹Ø”ƒ9ÇnŒð óþ1Í£'.gìäÑ™+ÂGN‡ªÂSÆ„Ø&$Tÿu•%i Ì óDØí†;—ØAtmHý óëçY-Ó”ÊèûáK"€1^2¤RT{ f²•&;Ϩ[Ó´Ø%ÔNø.Cj’bÑèæÙÑл$èÖÂAOбG GÅQ0ç¬a•{‚-Up$ Åæªh5ìvi‚Ä1Ÿ(Òáµ­Ö6Þ>¨ÄˆÃdw­‹8²‡ÉØÛnl¾}sÙMã `.ÂôVHÇó¹3×gÒdæÆj"""B³#yဪ5y±ôL©„?ñç̹SÂKŒ ·¾’»ó҂˾‚³0éØð-ù!&/ûàÞ^À m†>…¹î¦$CúÐ÷r"^lqº‘ˆˆ€Àè€â½°”þH,ÌeôÁòø@œÍÂ÷þJHñ,‹ˆì,pPžø‰¯¶[^ fy‚:¾»SBZXøVûfYÂ`¼>u •q”?øn:w<£ôD˜º€DñX¶àÛ§ÉiÇ‚þà °©918‰a¨ÞÚ\¥t6ó‹}"gXL!€Ýq4 r>KŸ’@¶à¾ˆˆÀ\6…_¨¢Ee·m*PŠÉ`àÛ¥Š8$î#©!€}$€ÛL`Ô“òP¦ª"æ›Ãú³JÐùS™ûëª\å è‚ÂÌã:Œ„ƒ“ÕÃ|*VêaŸ `$lÜGnȸçy¹2ÿ#Ðo3Ć3à-­yQ¸ˆìDÌP‘Ib˜7.1jñõ°E ”zØS š„ôPGGS>\ßÏõŸ0s¾Aü Ô¦@Ç(6‘§t=)Ì ¥úxfˆÁ^""ÝP7ª Äâ5æ. hĄ̈õÐû[H=ô« úö"ôd@Ž€¡l ë$xŽC” ˆ=@leÎél®B—ª»Ž”Ü{6a†×ƒo˜Ôèõ ²€a93–˜ì™ŽJ@¶ôZ0·Áú,ËËïWr} Hàpƒaoc™ AlDì»›ƒµáõôepcoLP3­Ö”Aêa²z1Øeáîï “õæËq„î+@68_êæßWëa&wîÊ2Ê2hÜD½[Cp§S«G¹º^T–Ó ˜\òF¬Žvé„~‹¨2¤­w—æÞezèQ" ÁpÁÐos`—$òbGÐôÀƿӸÿwÓ˜»j†é7œ“×c–ïÕ‰™£üþwd¸ý öC­²E¨ wèž>øáÌfR;\".î XVO’A`»æ™ X{rhç>ò]'ÈP0 _äv>-”(€  ¢zT°³*X¿ܘèŸPgL^©‡=©}Éýá{á² ‚MËË Ë]!Úñƒ|C+ î³òjHÁCņ4wèÉBàJ‘g°|µht9N½!ÃçB=oèÔ”áezØ¥zP‚w6¾ ¶Y¯l¤Aó¬ƒþø8°{ýþà'úú„°”™¤¡êöÅÓ×P‡¬ó'UÄ^“•Aêa·ëAD å;ãs®½ó83lU05ïõø+‡: ì1€Zß. 57¤îSN»žóo©©!€y€q÷1 ”A‡:“vº˜n­ ö,^gÒÀ}•^T\'®À½úß7`ÜAJ_Qës7ý;䨽w»Ð õ0·zñM,Ä\‚±Œ¹&mßõ…Z›Äk°\@ö@Ç7Þˆû>èÝý˜¡&Æ€•á ¤¤öЦŒü³G+U¢n¦°ÜŒÚnyÿ;. e[. À‹z(xÊþ1Yod>… ©‡½­‡½²ö—’ ö7¸»43ôk¾·­Û-D­^J8¶1ž¨ZÙÿ¸ÔƒJÛ²dC˜þÀG3éF¾×éER'a±g}ZÚ‰X Û 2–Ûù£œÛÚVl$¤H£xn‘$|¿´“äídþ ûŒkôk@=ïJ×Ù7scë€>p„áí¤J;Ù7ã@ö˜bÐxȾñáz|»ó´‚'Û"fÊqÅñ`}A@#ídq û ]Ü›4»"Qš¹`Áâz sßÄùÃÓ²Æ~e X,€í`qº$Ýœ¸«Ò‰(ç“e¢—l«$0œK0 À- ÜÛĺâÞbE¸ò:0zþyÛÂ)k/Ùe!æ|`wçÛÉ>g² A` †: ýÞm3ô ³ŒnLÓÞÕ†z´?ÅH´…9Æ{д§µH§|ûƒ'|Þ›N満Ð0ôsh'¥´“1ÛÉR,ÍÃÁp©³€R½³¯qD†¹ Â̤Û _Iôxš•IÞZ’$¯ãÛ6–Ÿ‰k×Çî¹Ö=§$D&©êdâvÒ¯$Ä °´“–ý‰öÅÖþÓûTŠLŒU¡ì ‹-¾à¶d²Éé ªÆÁ>er§ oyOàmÅs­V1I ÜbÎ`·3ûŒ‘ù”Kf^!û¼l$0ܯP| `äÕö™9*“ø“¸HNúžï8A<Œh&Š0“LTÚÉ ]@G]6X55A³ùj`š ß±L×ÿ«ÄߺúÖ;È×ðè`Ûk'“xˆ©±ídq°_@Â5oåàh<ƒš—*-°ŽUðã‘í¨ºKØñh I,h›Bâî®qYï5Œà5àƒÌJæŠîLZØu&wº¥;ˆÇéf„?**ÁØ^¿áóDö Dv[„Öà¨ÿ¯÷bÀQþÎô‘ZƒŒÕçeoo`+ƒN"Ó¯ÙA0|,Á£¡³÷æm©ï…ïÐOi_öç}›’Üñé–h—3—³gÏ ˆÄÂô •v±oŽ•s…: ç¤Ê¡p’•yn(äFôˆ+uÌ\`؇¯,0¯ ¯6”ç_%|¢Ÿ“VBbˆlWæçCÞ9 @)s­¤¯ºyn I"å‘7¦dJ!!‘Ú2 ä73£¦‡Sˆ¦&»”ù¡~ÅÈü€ŒÏÓE  €Àv, :+==0º @¸æ†U~‚z½‘Üra^Ϻ$T‡Í7¢É|OÉ#†vAÓÇç^óE­ 6n“/÷Üšå+á´òäP]rš:ÜäÏÍ^±~™@^{õ«=àú×5¬cï*9¬.òÖ'9BEÚ+«ÌI`ù‚º]¬+‡'r%ÀÂßênžCÀ™ûõÃÃZ9”Ê-6â¬ÙsczŽ¿E¶€Èœ-€?ùOº£ën#PxÔðŽªžwpj厒¾Ò÷d_ARi·Ê:j;Â%0@*V‚zKаôt¸kÛ­nÀBËV0›¸é LtOܧ»™4·~²ŠD”–øS¿ÈíF‚†ÿë­Â˜_ÍŽpï'‹Sá¾€ÕOB"x- àOþäOöÝ”[çmqu¾£Å»@‹û+L7_)¿ÅÀ!ôOí,êG.2HM\´2q8û\Ã…TË+…’ §`¨_ÈýÉÚ¤‚8´W¬—5×Ííè6OÚî ² €È4@Tü¨½(<ˆ\wýÈkl‚y¬ò¢„ãÃî"š€‚¿Ê‘Äù†º4-é+A@upè«ñAªÏtp±UŸ]|§=ø®o'–àë ÀWZߣƒWô»è§ Š 2%оMÓmw<Ð-g(Š¿ÝÁÕf€7G :Ž2 â3ÏtߨCæãEÙÂxœ2Ûxc " ¼Á`:DaÔDèaXƒ >’Ê–eoDß… @±D¶HVS¬vÕÍNŸ;kTïifý»«¨8+¼²^ wéÕÖ$ÔÐÒ±Ò˜^Uc¨œÒj¯Zþ@`:´3¬§PNbev¡Ü½b.À*"ÈR»„D¦!¥T0™n»L\8ÜýseM÷²¸·÷Õx ¢Æ ¸ã¥¾s@}ÓoèA3Âi°FYQž–ÖµxЇZLãêû¨÷ÝóõÿˆLl³Ÿukß}ÙgP†É¾X""""ûLÐŒ¶¬U!‘]&Ë€…DDDDvŸÌ<8 & """²û€ ˆˆˆˆì ÐÓ@eˆˆˆÈŽ[tdC!‘%€³˜œ9sÆœ ˆˆˆˆì”¼úê«Ö9âÀ®í """²oÀ– """"² 1A_‚ ‘ùË7†Ü. """²§bÀõë×õæDDDDDd§ Ï®ßx½úC9äCŽý9²<~ ADDDDdñ£ÄÍ…ÿb‘àJcÝÔ*IEND®B`‚pygtk2tutorial/figures/uimanager.png0100644000117200001670000002605110126461700017007 0ustar finlayfcf‰PNG  IHDR6¤—IA pHYs  ÒÝ~ü+ÛIDATxÚí]?h\Wö6xÁ‚üŠ) Ø-F bDRHàB‚ë!{H âa]XB…¤¸°„ [¸X36ÄLR˜q f6…‘\)…‘\+E³Àla˜…f ƒY‹€T¤Ð/g¿\Þ¹æ½7ÿ¥OàóΛ÷îŸsÏwϹ÷Ýs*›»~¯Êæ®­gÔÿÕ•BêÿøÇ?þñ'ø/“¸reµžI\þ Âÿ§«¸"xJ(³8“+Dñ³ÉâÔ›éêzú›—•‰ýþ¹~ÐKϾÿëlr=ýâ§½©ð¸¹ðò"‘HN oë`!{o™O‚Á†Í„Ú@¢ÊûÄM¥µ¯omoô·èP‘|íÖÞξg“:Þ9$‰ÄaÅÀšùíI´÷f4©ô”î}ºè³úâ÷ùOg1 ‰f×VJkËåéÊD¾¶R PªQœY­ùIuÉT²éêÇçWë…Ô×·ìR©|!õxÞ%-¤\Ryo!åzo&quÎ]*%}xÑ.•úú¥Ëå/¦¤5š¥2 òKË»‹y´¤){ä—®§ó÷ÏÙ¥óOÝÒ\iþéæ‚[zãÅæÂlòî»ôfÅ/ÝÞ€é‰.]©moäkv©Ò±Ö†,êoýïE™ýR©Qœ¶ò·³¯üýÛJ7üz%:©Fw4}ö%}xÑ.õAÿø•±_H¹lŽÏn„±9ïÕm]³% C¢½·Û'á½&•þá‰NW§Þd®bý¶tÔYô7 T$P1.ÃÀ&UôùxÞ%].Ë0ðýÖ%Å0°K¹ÚK¥¤öö)£M*Ó 0 9»ôþ9»TL•A»Fðî™xR1¯v©îõ´"¹¨RP‚24ѤB6b¤¯+™×ÛG<Ùþ^EñjtãEü–AÆí_Ÿ“6ŸÖ¹uÒ§ÏB'qGв.©ü‚ ãX†0VEèÓW£fKè'Ñ~Ùí“ó^0æ$Š?síS/ÖÞÔÞ?_5â7](÷»ðí· «K¯?Roq‘(fß:ê*eJ'‹PV6饱å2”Õ”BÑ[IíOÆ,C7ºTüiW Å\ÞÕ0U6©#¿T¼»TŒ`<)è†Û%…¿å–¾W£T|¦VREKÍR¡"ø‚¦T¨È~½}Ä“}¥‚o½FþÖ𷤿пvi+ݸ¶â—ŠNº¤Wç| m÷ÿ8Š;Bá#ºÆ¾ß2ø¬ ,’Ë^ùkä"Ñ~Ùí“ö^0fÃî£(Ñn±ÞÞŽC¢ÓUE•‰lN … OpôëJúáY¡O—ôÒ˜ï·x² 0»T ?›T††½)•ÁÔ(ªTØlRÌM*ƆÌ-i“ŠÉ™R˜H·TÌ« Ç٤ʬ»¤B6véÜ#P OÚ¬J*dã’ Ù¯·xrœRµªQ«Öðµdë^pK}½ïלp:é’*mw…VãÈ>ý#´Õèö[¿UÁ„Þ%ÕKe’«XÂè$Ú]»}ÒÞ ŒA¢)VUL \±+zuI™­éÓ& †)Å0pKå½PtS*¥RàY*óÓ`Ø›R {YÁrI±¾e“^¹dTéÕ¹€›¥âø¤0 0Ü6©˜f»t{ãå/õÙX?°ýäz³bòõ{B':iéR]*ÞX3áu ñd»Ô_ªVRÔ×ݾ¶òõB+©¯÷ýšÓ8i‹§± ר#Å7ÊÔõIÝ£ÛoüVÉosšI=°„ðÔ+QH´vÛÿÞÙäÍŠôckìì{õ·›ul¼‡§"‘hØbÙŠØ\¬ð$Ð'6G(eBLa”¢o.è(ʺ˜èÓ”êªÜ,•y¢  ]S E·Ke~*ôi“ÊÀÆÐµK1õIƒÒ,Ål]#—T…¥28±bUŠœZÍ2¥Š\ÝÒ£ÿý‰V¾Bë)©øµzè²ñ· E6ÍRxcv©œ h‘[j^ƒþßúÞ”Ù.Uéj _[µî·4¾n(útIý: ©KÛ1RâI}cPù—®ÑíûÊn´cs)4¶®Ù†#ÑNÒg2³óExíÞ{unjç½m‘¨«X&}êDMú”­j•"ðóó$ب¬Áu%½pÚ'•ß*b¶Iƒ!dJ1À08mÒ``7KÕÀöKA¦¾©_ CfJe¦l‰"m¤O›TL³Z³Iƒõ¹Í…Ñ‘‰ïr¥Ñ‘ó¯ó5˜uEæoÅgrKA6Ê#´IMQ(~žízûˆ'ÛßÛªÌþúúÛª¹£õ‘¯ãkN+ôë3üK·4î(k=~}c¿•ÝðÛœÀûlž„IK*Ê×-a|KŸ½!Ñξ×ÅGaè³Ëž¨ÉÃÒgxõ­¨™ Ö–ÏB•EYqEÇñ¬Ð§[ »Tù—¦ ¥rKeèÚ¤2°1ãvKÅdؤbn° å–Š©²IaæìRAl‡‰*Užå¯ÕÃWúuøšª­"úý"źúZ¿^œ‘O•ä™GG‡¯ë²kN®gž|V]:|\ÇÁªáöFuéçOßÞ†û J¡J($§¿›AT™e”Öž~UÛŠ÷d¬^×¶äþ#ÇŸÞVÐ%u¿¼]µƒÔWõ‚+ÚO(ï~ó²¶…qª·¤¿TJ-P~ìF+ÿzo ÷£MôÞG¿ÒuCí,µiO'•ƺõÙ=ÂŒ#—4ÌøµKa@®Ñ­ŠË"ÙâR–0‰¶GŸñɬ9pjoçI´•k×N}c‘¨;`uNDMúÔIT)ú`Ò§KÚ.}¶"W—1ò2¿lE®âÙ(:ùïæÛÛʳl&QøºA7ïWä"XÛú÷ß°nZÛÂUýÚÖî¼½½¹ðâ§ê®×~þtoJo!¿êR®4÷H®Ì=Z­Ëo_)Ú¾üAiÍ|cýà?wät˜ç?¨'ƒrÐ/êÉÏžµz26†€æñ„lîê\!5žz“¯¡Öz›`zÚá9òäâÌÎþ÷晴àŒ ½UQf¡ÒÊÄèÈÔùÒÚ×G¨ieâÇwk[‚õ\ÝÙÿö·êHĉë²z-co³®&._~²½¾óѧ{Ò6¼ôé² U±K})XÒ¿ú&¬°‹¢YìNz„ÑW»ñÞnóTHTŸA„/ü‰ð$ªÖ74¯a´GŸîaà$ݦO·4>}ú|ÓvéS¤B&)Âpë>Sx-r@ æuAu]=G®LW%LªB¸s°e{sUUû%ì?›Äsé?¸4ã2·{ï5ëÕ~};B¢ÍÍž>Ó¨NŸúš¨¾AÀ½qá´l,ò¯ŒúÖ0â¯}ªág[•iwe´õÚg¿WFMRĪ›Íµ{®¶çÈýXY w]ž#}T™PĦüK ÕKâz£‹êÐGaž,¾¬òžå¬¥]x£ùdñªÕý®¿ÒÚãyµ:hkU5ip¯}š5ÅøÒߢÈ^úWF¥ ê.—ïž)­ÕÞ|~ø _ËɪLÍiµöweÔ·KÀ?Ž|c°›+£áwcØ·Yé–°·$ÚÚnæ{ýb?}v•DÃFÏ]Å O¢˜ëÙ>C–€‚·ú6 ~¨‚[ª¾Ð²Iƒ¯»š¥ÊëÅ×lÍR9yÄ'Åf(›´qýÔ› lR™jߨ¹¤jWs£T>~—UÕèR|8oJƒ•Å··á£À 9|ÕL0¹’\·{¢vr žæzuéßSÁRiáÅ<Þ‹o#‰úžlúÐ៌¯ ‡¾øI³-‚O¯¯§š÷¯§ÅU[®šÏ1I´±§äL¢àÛÍÆ>BMõ> Vv¹¢1"ô_©ÀòÕ¹Õ:¨%Š^ùuÒ¯Ïú²Nԑ⃭Ưì‹ï¶~›Óø{ ••ieëš-atí®Ý>iïM¢)Vx•¹³ý ö"Ê|MÖ¢äŠÌË"Ô‰“-õë@ÌOå|·'jÚ¤8µD¾FµIeÆí—ª27K±ËQf¾q¥Áνf©øÁìÕ.Å©4¦çÎØ¥r0›[ªCy÷ÉgAÎF•ûmž«|­h÷Pm¤ëz޾‘§8óðâz룺¿8›œZHI„Ãö<«—Üöd„a›Ÿ,-¬èÒòî³g•‰úlÆ1=W©»lh §҆• 9Ʋ¶…ÍMø?ZÃ,[О%꨷U°F»ZßÞøö7Eÿð˜A®zÏê„]™øçŸk[ºFsÂé¤Kª´Ý7Rü£Ì.U#Ô5~emÛ=ºÕyFqmŽË^!€2›–0 ‰öÂnŸ´÷Æ ÑN+ ‰êG?ã4N¨²:Î[!f¯Ëe¨cp]IƒÃmR¯å’âÉ6)Žº¶KÕAØ6©š FQ¥ª5ä SŠskq`˜KŠÃ+L)N[µKáÙø¥Ø±|þüö¶LÄŸ37Ñ4“¥2ÜvϦÑ üE¹¢å÷¦Þ|®Þ+Ú%T$´¤o«A{ÚHTJbU”'‹W òÆÊ"|tYJÚDî×Û¾#6ø`Vß9,fWÝg– ~ŒxrÊ£m”JxÐ$–2ÈÖ¡êÒx+Ù2jôþÕ7vaŠ€¾0šN']R}ìÛ¥­ÆQœÚjtû-ƒßªI,Z½×<_4*‰öÎnŸ´÷ZH{óLÄñ Î"žìz¯N¢bÔ ±åU½‚«u™›Ûr#H0Ä9ÁŸ±AŽºvKñ^ŸÃÀ&•a஑O*FÐ/]O»3cÈaå>©|\GŠ#pvŒž CÿúSv±®§Õ!x]Áoq%-ª'û¯ãÉz¶ý~„LQkl·QP ¯a#Œº"+èþ7š%Gk‡2à(³ÐO°*ŸêùgÐ2X-úcP6•ãÈ,[c¶1ÊzRsM´1P,áY=# zŸôè¥Å1ô­5'¾NúõÙ7Z2ßÅèvçSjm7Ü6GèÓ%õ=Y·„°ƒf·OÚ{HT~°7åÂn¤˜ñ¿18öOÍ"äÑQÂS¥5™•×¶L©„}Ú¤’Š”¨Ò\I¤Pt›Tg\©¿ÔÕùŒ‘¬¬Ø¤7+"ÏÕ.Ý\pKWj­¥bæLél2ŒT|›ôÖž_*kuÊöIí¿•µ:„ÁM)Bܶëa°ù·Ø‹Oq$rm (s”«‡O]¥jU#[5·s£÷¯ÝÞGè_|ªÂ×çeMNˆ¼•nøõ :éÒXŸ>«±à)Ý¡ñ톒ú,’û½Í–rÐìöI{o‰ÊF‰ÁA¨f‚ðot”VÞ ”µQŠa [ðA®ÍR¡^1mq¤7^ˆT¼^»TJå—*Êo–Þ¬èôiJñÅž½5Vj~éæ‚»%a|ÝR1Ü2óí¬TQ‚¬÷D— Q”M Ãd—vÑòò«ËlPB`kÆÊ«S{Ñ£Ö7zKÊ®ÚúÁbþfE¾8yûzPˆ_¾Óú—±‰]»È‹O¯|: 3ZIýc°ÕøõýøVEì•b“ÊTC,Cs[),»}Ò°D1S Žý¥ñ!Œ ‘8ÈU>®@`V…^áÏ>{_*1ßòé B¦aïÈ^Q;±;:ãCXÈA³Û' HT¾ý’4(ÉŒ¤~ÿG$‰D a!ÍnŸ4l QÙ,ðû?"‘H$‰!$J$‰D"I”H$‰D’(‘H$‰$Q"‘H$I¢D"‘H$I¢D"‘H$ž•ìŒrÈï·¿IÖFvX·ñÍç¬){œH$‰ž ñWœùbª8³¹ðÍËͽ$æ•AC”pº:õfºŠÏŸQÚ‘ÌÿMŒd&‹ßM7ž=Û\U@ú | Jœ:5Y<ÿz²Ø)”^Óî阫^£#©¿ŽRwÏR'­Ç‰D’h̔־ü¤´¦f¾&ÂïüùS9™3 œA&ÑÚÖëj[ ÎÕú­½ÕºœŒ*GŠ‹÷,y+¨õ°©~‘¨©•‰ïß‘#ÍÞ{>žv¯¦¦Öu¯vÐh ¤’ [2­’D‰D’h(SÇÏL…ÙEÙ@œÇCúG¢ÍRÄ'ºç#v»¦îÚ ¡¶3.H¢D"I4eºHówK…³—…d%y=YÙí¥'Š]®tåJ®T]ú×û’¢¹õoá§NWßÿUQ‹ÅüüÓżî»ÌœyWÊ»çË»x2Ê–I|x6“Ћ)BÐãÙô“ñ,ZoÐHʦ_/¤îŸ+¤Õ[Ïìý05uéXø>ŠZ»êÒïV—”'úü‡FO4|톱ljD’hŸIÁ7¬8–Ö^TÏÜÙùËÎ>ŒÌ_ošo=ýä³õ4Ìʉ•¼ÕúCà5½˜È|íÚJ¾†+ `\_.߬,—ã‘(ž€RÁ@ã:Ú³2ÊÒ6£Üßp.ú·¼ûõ­òn¢ø«­œˆ`£Ó-î×·¤…©©D£õQx͇ffNg˜x¹"þÚ o‰$Ño,Âì8<‰Â$,!…á*´ÙXôf—#L®tùƒ\IeZ²_O?ýj=mÖÈô\Mß+*‰ê‹Æ;Å4£„h=Ó—¤EØnÖºAª^ž„¯©_ëÂô‘¿v*Rò—›É ô¾ H.^톷ljD’hŸ=QìiEesŸÏæL„áè÷Ç9âQ!Ȧ\5 °·6 ¢2yqHÔ}§˜T´žéÓ Òš¨zêÑz®µR܃) ˜¦ž„©©{¢¶¢j>#@« ä¨µÞ'I¢}&Q}f ¢äÆU[cƒÛ¾'ª¯¨E%ÑÆò~ Â΃³&ŠÝ¹('ã×ÑzÒ.= _Ón{¢î_©¦ƒQk7¼=N$’Dû¾±H fñ˜§ëëŽ0yºê"€Œ53µŽ…’à# YýÂúh6wi,›3×Ûf“×ïÍ&õõ6Ôk1ã…l]‘û„áFðx$ª0Ì+&"X¥´Eð¢@¨»®ø?Ú ½€ëhùð5õ¯‰†é£(+¾øüIÈ~6Þbj»¿vÃÛãD"It vçÂ4€œô<ïú&‹n7̶‡ŒŽŒ=T{)õ•0˜`Óc¶íü”€Ûlrî‘2ٺߣ>Ò—· Du/ ôŒrb‡ç ‘(“Ô$„É“~pâê>b˜šFÙkï£è+¾Rr¬Œšß‰†¯Ý0ö8‘H%‰D"‘Ø}=ëo(îØÕn0[-I$鉉D"‘H%‰D"‘$J%‰D"‘$J$‰D"I”H$‰ÄãA¢øfŽH$‰Ä“‰m‘èá«ÃúïÿˆD"‘H<‘Èp.qGÜd_‰\%»B¢ê äã†Gÿû#‰‰$Q"‘$J%‰í‘¨n†ýÿD’(I”H$Ò%’DI¢D"qØ<Ñá5ÙT’(I”H$Òêü‘z‚q‘]òx÷TgI¹?“TÛïÔGÁÎþ÷ïìì»îDRnÜÙ_ “ë™D‡EÓÙdõì¼È„ŠŒªzžÔv~åÊóŠº#!<­‘žè”ßeòtÔq·cÚÞ¹¶õú#·=N$ª¤‡!ÑÕúÃÕºy’½ëw‰ª”æHnb4-*B'AHDšGv|ꎚê)ÄãýÊÕzø-ž©™2H OT/挘K¶ƒËå•ÚrYÇaéÌ—Q óxT“Åó¯'‹íô”òÉš Êñ#QÌk®tåJ®”¬$¯'+~Ͼ÷|<‹v6ïÉ×®Îåk¸gðHt°4-º*ž"Þ ìÞ¯ZµžjÔ¶%’Dûà‰â‹ùKc#™åòå…ÕúÕ¹d¥º~ot¤83ÿTðÆ‹ñliífe<»Z¿¶2:²˜¿r%ÀËŒŽÌ&?>Ÿ¬LǪ0Nø Ž'Šð‘nšõ!(œ½œ(R÷Ï©{ÂP£~FS[Á\êþÌ+ÞÊqù+ƒO¢ ÎlîãóÙœnjá‹»H/Ô}ùKcP7QHüU´4ðT†‘DÛÑ´n{¢ÐLô]cÙ:ù+ëU—~|WéÃöÆóè‰Ä­üüiý ª¿XÑçµ1Ùsâ\©MË»·ö¦«åÝ;‡ÓÕõôÝ3 qE¤“E¡ØÉb&qþu¢•Dã!¼œÎv@eâûw*0ÓúzÌzúéWëéñlúÉxtD]WÐ/ˆ”Ö^Tóä?7²³-Ö CK–wÏ+Ê{8:¢›Z“DÑ2h *¤0µxž9¼$ÚŽ¦u¡' rå7‹OŒ»k7Þ¯ÌÖƒžgNgГA¶Ää‰îìûÛÎ>‚`X£‚±VëOâ}‚>áq‚A–› 񪀾ÂSâOèø Í­§ïŸË$@¨ÙÜû¿ªÕ¯n{¢Ý!QÀ({¢Ph((ŒÈÛÛo¿}{[_UBð¶´&Þ'üNP#Èr{ãËOr¥ýÇó‚_ßÊ×Ê•í‡A¨2s¼pZí'NOTL›n¼0ùÀÀFëuƒDá‹ÀÜ øi"úqXH„ç'L\$ªÓ$BÁhÖá÷DãkZ¿ñ’éêû¿NW1±kÿW®ÖÃÒ¬B÷$QbßË×*v¡‚hs¥ÏF'ÑAóDq³cL5`ô­üaHT_×ñ“(ž(ŒN§í(Ú„‡:š÷ Тu‘¨ZE/ˆ_¢o5:$OÓú‹X¡‡®¶ÿ+ëÁ#‡.‘D‰}óDa€`¦0(ÓÕ÷ž' ð)•÷ÙL™¸^Z›*k6â­êTš¯]SÞíðz¢úIóS—iƒY3¼%}‘N™0  =†é‚`ú’¾Ê8ø$Ší0øÎÏuZ í€6w‘(öâê›qމFÕ´î!Z-ï_é¡è'ʬO€Úù•ëõaŒ¬cJ]"‰ûæ‰Â³•bˆº¨t1ãÅb~<;ö0QYêô ʬüøîÎþÑÑ7k[µ­'ŸÍ&×Óâ¿âž|íãóÑIt0=Q}3‹îºL›Ú/ŠOÅeó‹þµŸN¢Ø, Ñ·&ahÔJ’ ŒHûõí ‰bêàÿTm˜mÈZ¯‹Dц…Ôƒt!¥Óíq"ѨšÖ=D©°:¬›=«—3Þ¯Z­(Ë8‚Õêìw¢$Q’h[ëPt˜•ÂgùËM¡ÒÇó‰Þ=“+ýZ•ôào>ðÍK¹~ãE²‚{f“—?/Ûþ”!$èúŽƒ¡÷ØÛݹ<ö8Ü£€HOÔ‚ðuxÄF€wµ>÷hºªHôÎa&ñöö÷ïÈvü?-æ«KwÏ$ Å™k+‰‚N¢òüD†DÁ¥ù ‰9 ˆôD[|â‚U7„‰\ô‰Å|Ó•MFùZy÷ú½de=}ýž¬Q]“à›lAÒIT8£#@z¢$Q’(‘$JbO«nú'.&qê;uåÀ„dEè³qMÔØX•wákTÙmHO”$J%’D‰C뉺>qÑéÛëå+Oñ2ñ…¨|ýõ9la<+› dO =Q’(I”H%ýw¢¦ª‡—¯}x6QÎ*²¶ ³ ¶ Rœ^4Y|ïùèˆPr&¤'J%‰I¢Ä!öDõÕPü_?Ã(Y9{YŽý NÍm¤R¼û§Î'ÊÐ-”C„D'¾“Û鉒DI¢D’(qèwçb_®ž°LQiâ¯êúBJ§Rˆ蛞7 /¤ægåÓÑ‘ÉâÔ9Iž(I”$J$‰‡~wîž#=HÔŸ „ š”­C£#8™hº*§¨à-üÎ §ó@¹’ÍÑ%‰’D‰$Qâ1ùNÔO¢³É §%yòù×r úÔù@EhR²Ldð,3‰KcËå0(}… çÒ%‰’D‰$Qây¢X=ÕâOß’ÍG¿“m!ñ×(þ°’(I”H%™'ÚY2†_k"¤ôDI¢$Q"I”x¬¥‹õëf8!býø@4=Q’(I”H%'ZHÝ?WH©'ûýK‘âÎẫtq¦¥'J%‰I¢Ä¡÷Dã‘(~Õ¥'J%‰I¢ÄõD˜ÎEx=Qb·?:"‰‰Dz¢ø—Ø.äßX)¶ a;’‹«K?¾[]ê¯'J$‰’D‰Db¾Õ?q)¤îž)¤lŸ¸È_iíËOJkúo%3èHfµ~koµ¾³ÿò—}}ÓŸDñ*ÞÎn&‰’D‰DâP~'ª¯Œgß{>ž5pƒJÍ_>±ÃvtdìáèÈöÆ‹Ÿ¶7Âèry¥¶\•–Ö^l¤gz¢$Q’(‘HOÔìÅ6¢d%y=YMÎ&¯ß›MÂOe÷DI¢D"‘žh(BÅCùöÒdS H¢$Q"‘Ø7OT7 Ãø"I”$J$‡.œK$’D‰D"I”Hì(‰ë?’(‘H%»H¢'Ù×Dâ "ÑÊÄ?ÿ\™ ‰D"ñd"=Q"‘H$Î%‰D"‘$J$v&]<‘ýH$‰‰!3ùÈ¡Œ8ñG0BÓp*òdqâ»É¢ž†}ð‡Š?¥ëJâpõ#‘H%ök[¯?ªm8q2ŽrD–,Ô#åÀ°˜³0Æ·~ðó§õƒa™àŒ0ôÔÉ)I”H%…d“ÕÓÛуaú[6’(‘$JOxr¥+Wr%œÚæ·ðS§«ïÿª‚ÀYiƒ5­0iÛõ+H‡'£l™Ä‡g3 ý·Hôx6ýd<‹ í„s—Ë7+ËeÔ5B@»8óÅTq&ü@ Sþ0­§§Äsf“sf“aÊ€œH£#©¿ŽàùÅ™éâ ¦MÈ „7†Àôëþ²!P/ôŽÙ’íô#‘H%"Œtl²xþõdÉïl¹zÄÄÃ@«C ä ×AHñHO@©¶7žÿ Òê![-„";»;Ï×ð*ɼ@;+yzù;ÕzáË “¨~g7H½ƒéW6÷ñùlÎD=b;ýH$’D‰C€XÇÒÍzû¾‰ñH´±<ƒ°s§>qÁ"_»:—¯éuiŸD{ã‰v–DÃ÷—î_ê^o+½ŠÓD"I”Øg„…•9˜Zµ*F kWX3Ëæ.esæšèlòú=ÙN¬ê%+¹™¬,æo¼ 2r? ¬éÛR¢’¨nÐaˆa¬3‰ §3‰v¹êWA7)­}ÞzâÕa³RoH4|ÙÊ&uA-°( ¯©«”sÒƒí÷#‘H%öA“Ø— cª¶€M0ô¦WaÛ_*¡9µK³™Š¤²{3‰ê~ Ì=Ê SDQlÆQ+Á‚¸ÒÙpnÔÖ[.¯ÔÔ¶ sµµ$¾¿\eAb⥷§¾åªý~$I¢D"‘H$’D‰D"‘H$‰‰D"‘H%‰D"‘H%‰D"‘$J$FÁÞd”̼•̦I$’D‰ÇOùþä|EŠ3Z»ñ^|äн  ƒù)ÅàdEŹ»êì__/ëZa;o9@|èBkF$‰Oòá°:å!á(9]_R»G$ÝË:¼$Ú›¬¨86åÑ€ð)WÞý{SZ3"I”xIÔuxÛ°úˆÃK¢ÝF1cpàÕ_f¤?à Gæ=8JÑ Z3"I”HuŒWHÝ?WHéù,UÒ«8%]¡Ëð9MýµC©ðv•ËòũѰgEU„'-€Ó¬ôTq®ó› űò¶“¥/P*´$­‘$J<¡á\qÔ8«3óAª“xƒLœ [=kGøŒ’6ˆ–•Ó_;øX(3’¾éD¾Fú3‡7+ª"<©—.Í›Ó ½Ìx/~ B…­Š'ôf5—H$‰|c|¸f°­Þ a¨ü‡Ï(išÝ¨¹PZMšÏ¤EÈY\Â×ÈÿÌaÉŠ Â3[IÚÕ¤Á^fÄ0­AhRF'D‰$Qâ çŠU«_®t­•âP3uŸQÒ4»Q³rF]}Äáézîš05Ú } ý gEEíü“'=I»I¢zÙà#¤¬gË¡5#’D‰'zM^Ì4<ŒÆëð%›‡Ëè‡Ï(ÙmOÔ¤+¬S"t¾FáIt0³¢ÂÃÆJªË‹EË€h]$Š+Vcç¶>Ù"‰I¢D’è”îM‚ °Ú§›Hü$‡ŸnjÃg”ô¯‰†ÉÊžDõɼ·ð5 O¢ƒ™½ŒVu݃mA Z®‹DR6?z!‰I¢D’¨Å;AØd B‚'ŠQÆ* ¡ºA“Q2Êî\{VNíð^” ›_Ìú†¯ÑðfE…û'Ø dn¼2I¤Ž–ÔóÑ’D‰$Q"‘H$I¢D"‘H$’D‰D"‘H$’D‰D"‘H$‰‰D"‘H%‰D"‘$J$‰D"I”B$‰D"I”H$‰D’(‘H$‰Ç‚Dqªg§@$‡Oª%l}à%Î=FŽ’¨SuÐLí`xÕÁy˜8C'v¢´8ç‹ê§†ößÞÉs>‰Äa'ÑÞXB3‹êž÷Œb$ohÇÂDÍ#t’-[[$zÔÆ_ÕÁÔ Nä‹@:'¼Rãj§öq¶Iê8R5òßI$‡‹D»m qÄ¿y£µDª;Ic;ÓŽ…qý–$Ú7Í$æm.¬§ŸÿPÛ ¯:èB”MO4¼ =8dO${O¢ñ,!~–Ë7+ËeSZœy.θRÙ÷ÒŽ‘D;¬:Pàï$øÃWQ=QÌ­r¥+Wr%3I²{îöâ§í @ )¥ôìƒz õToÌ$><›IèwB}ñ4•JBÊþŒ†D«6–'#–y'B1*ÙVsP~=íTø:‰Äþ’h;–P·?ÈhkJagÂdWgÇtk‰;‘ÚOÙ4dÞõýö¸Ú«.’¨®4À¨A àzúÉgëi4:Ê9Y<ÿz²¸Z¿s¨¼f jQZ{xQånDbgt¹™è³<¼KžàWX$WáI­¬¿KÒ†_K0ïDiÍÇðÈõ„ÆQëH$ûE¢²„Ѧ%kQïÏ®Ú);"‡]ZO?ýj=­»"æo·½ê‰n.¼üE¢ç‚¸²½ñíoõ—ÒDU}WV‘ÄXŸC¡#É*):Ý Rª¹„>ô&л¶‘öDQt5…§¨«`¼y—ªé%ÇuxáË啚 ãD­#‘Hì6‰öÆÂ…È׮Ω_ÁÈæ.es~[Ô);fZK½T6÷à8Û«¶Hꢫˆy¥åô0KßÀêÞv¦b³¹Ïgs&‚ŒýQ~DuPùŽŽŒ=ÑC¬í(%„:ªœÔ¥ºôã»*”µŽD"±{$ÚKKXHÝ?'c_œ¼}<ûÞóñ,¼À0DØY;¦¬–P8Ðüíñ¶WðDÍ`EoHT-§K<ª ïƒ5ƒQ—ÊM5)T§Sxû$Šò«U lÕóžðu$‰ÝöD{c õ]¸ˆNœÌ­—a6ø´oÇôY¬Œš¿=Þöªck¢ág^Q7vãN™Z•Ð.bè#4†2DЍ=¿úº)ºW†Dñ+uOð¹1>¼ £|Pt}¶èVqy>HÔ\EˆWG"‘Ø›5ÑnXBañ`=°Ü&$Û¾3­% HXlÛo³½êÊÆ¢N©h*‚€ƒ~ضaîcÎnÐ%P5µz*¨o O¢( Â&úÓp%LDŸ3‚ýóDÌ ]s̨u$‰½ßXÔ=U¾üé;Bü$Ú¾Óm/öÙb.V=ý¿=®öj [ ‰D¶@<†$ʳs‰D"I”–È,.D"‘H$’D‰D"‘H$‰‰D"‘H%‰D"‘$J$‰D"‘$J$‰DbWHgü³QˆD"‘Hô£žçT6wm¥8cfÐ$‰D"‘h"3›»{f{ãw½~¯ò¹N$‰D",©\Ð?HTçÔ®sN…h¢øý¬ï:ýÔ®]RÔ'ÏÞçÁ‰ŒŒÔŽaswDļˆˆ˜ˆˆôˆK`2y,SOvð»2o\²¤ï0ÛlB:¨3Ô v—qÎôk‘ÔÀ¤FtIáI ;òüеœ`Ï£›“f6~’xŒOz¾H±¦$O ûg2Í×õý¦”þ6œqOÄôˆŒ¸‹q3ˆäø®k¾ çÿ|¸õý–ƒÿó`ó™æƒ,Thµy<ü9”Í¿£›-‡Î<Ìr¨•E+>£Ýl9ô{ºyFDZåùþqݪ>§:ÞÜú;vב³-G)þ‚Ç_³ñ#¿;¤Ö,Thiû} /ZÛ~/ê÷Žþþð6ÒÒöoÚ4ª[ei?£å艞8{ìÄYùØÖñ¡nD;²tœ9ªÕ†ÐcEqì俳tžmë<«»>lã…–cRt#múã™¶®3tT£Ídãí=gEÚÔ£1òuä ~<øÃÏœø÷Žþ)ÇÎò|hšÎÁ?t üŽ4Ÿ Qw9ÏMšî¡ó¢èüc×ðN›Nz†Y‚ÜûÇ×Jïè…ž‘óþÚu®×}±Û}®{”Ïññs|œÇý}£gÖmyöû)½}¯]3}Sß$®ù~8ñœß8TΟ?!<ΟŸØ»·ã`Ëÿ¸oÖ wßûî¿Üw€r×½ïÞ}³¨•‘ûYä‘{ç4ß=û€’9ïPî™mÌÿÈ}ó›)³¤Ì]ppÎüwµšQ(ó¢šçD+s(ó¶Î‹iÑ27¶yvló\*D´š µfâ[”$4ÏŽ?0'¡evüÁ9 Íts~|ó¼¸ ΋{‡ º©%*±y~Ró¼Ät‰N=›Bi‰Ie¡ZrâÒ[)1-ñ‡è—Þ›yˆŽ¢6=Ò̸¬–XK¨Ðžfz΃ñ–ƒ ¹‡s%äµÈ‰çÇ´üéy­”äüÖ”ÜCT$å¢:Õú^Ší½TkkŠ­UwL³¦£I/>œVr8½äPš?‡yXb÷×bœfR2íGX‡3ü9"¥çHNy{vùQJN鱜²£¹m9Çr+O˜&¯‚E®s*ŽS]PÓi­=™_w2¯¶#·æCDL(¨ïä9©¤áKÚVÒV¢°¡Ã¾¬S¤x¹H7OgðtPì+:í«ºXXq’ŠâÕ'ùˆ\ó¬î([}haÖúo”7òGìíy‘çÔ7ë9z·+oÛ‹þZ~¿ëÇÍæ›Öô ºÇŸüâÅ‹4aÿ[ûôÆyë­·Âé$ãt6üÝ=÷ˆ¸{0âžÁÈû†¤ÐÍÁˆ{ØñþAqS¾+ò¾þˆûûÿeŽSäžyÎ{ç9ï›?D¹—×”{æ S´›|„eVÔ©YQó ÏZ0H…–û£³ÍŠrÞÏÆišsvô)~—söÂÁ9 ‡gÇ8ïe™3Ìãœ;0ká (X¨àõýjfÇ;g%ˆ#/æ%-Hqª…d^2Ë‚Ôa-Ñ)ÃÑ©NÊ~Å‚´^$áÔÚiVD¥÷Ge,´ Æd;E¢s”£Õq¹Ãñ¹Î¸œÁøœaJ\žS$¡ÀW0gå…ÕS0HÇÄ|% ICZ-ŸßŸ\äL.bG94¢&ÉæL,RCµ3¡¨?Ùî¤$– &— ';N%Ù<Ã<ì.*è®´²S¥§2ËFS§Y½h$}ÑHFÅhF…ۘ̊QË"·e§ÙÌr—¥zŒ’Uãá…G òñÀÔ¸²ë<©g#–Z7+ê]þAµ¶Ôæ4¸ –,󆌇ŽÖåc¬XîÇ•^ëJoáŠqëJŠWK!‹»Ð_¸‹Vyèh]å¶­ö¯ö®qÛÖ²Pa¨½ÅkFìk»¢-?ûæ{#75½½Ÿx«©©i_“Â>z·‹Š ­&Ä{Y7¢Þ×´W<$ØS„¡LŒC„Ù# ã¼¹¯ƒ–!Ôz¨a¹{ö0äîÙNÙ÷ÍuÞ?oH«y1Èã¼gîš5î‹$kÜ=ÌãäÑÕNaæ&ˆáûcE4›85ƒ(6‰qΉäºQ$¢„dnü@Tò0ׇ3*qh~¢3*Y³‰SH„©ÃQi§T8Õȵ’ù)ƒ¢ˆÊ¦D§ÓÑ©Oæ€8JréÉ‘m¢… BIÌ…–Äüá„‚aqŒÏ¤/˜8¬C¤UN5||@Ø!¡˜§Ð)4Á3$Õ,Ü/)…ì˜Zâa)a¾H±ŸGU%\"¥#JN‘D²ÊGÈ#™‹Ü"~},2‰¸KGV͘¥v\XÃ/Ž—VdñšîʨõdÕ“Æt¦0©ë]ä:’Dò<Ö¥^Ižà5KÞrwG€>L²Ê­W¹ V³š4a]ã¡#â9¶Õ.Q­õ°b­«èA¥øAcã¸c£W¤´q̾ÁS¶q¤rcO\îâǡwxøïbq$A]ßCÌ—fP§ÃŽ¦Æ¡ï5üçÂ…KÌ8ïýÛ¬¨ƒŠJôÍšß6kAë} ŽRæ.lŸÝ1+ºoVôÀ¬¨îÙÑ=TȾÍáQ|¡%¶oN\evl¯èAæÄ͉˜Û;7öÄܸ¶9ñ,óÛç&žœÐ?[mCHÌ L%JBƒ"óSXX—‘ÖÞ±0mP“…ÔŒ ,Lí¥¨ aQ §ê‹`=HÀ4.‘!Þw i=ˆˆ¢ ÞƒP‘7$w"¤цˆ_P»¡6 Üõ@ŠmHt"T¤³"Ð#C)EÃt¤9ì¨Þ%!ú­I–z*H"¤´²¡ŒEæHz%‹P‰Úƒø“Í‘]5–]ãÕwZ?Rå6t"c~‰Ôyrê½Ál’UïÉ^¬8"—©Áßw ’¿Ôm]汊â·í1Û O¡Ú}°Ú­†õ ¶.Ñ0ƒ¬tѱpæ?"GîMÔ¸ 7x…GìÇ…;H"t´72›èŽy}GËÑ3scZDë1;æÈWÿð}ýïËú¾ü‡ï«¿û¾ø›oVÌq’Åç_ûæÆ¡BëDD3BúP–3ÔÄôkµÖ†ÌK8qõï¾èä½Q)¬ÑHmÈ`trG|ê>ö…ÔĦ5-$ƒ¤ S‡²0mHêA†MûrÍçÿôÅeî‹Éì}Ç‚ôÁù™N ÕÑ™½ŸþÝ›ÙF_ Ê­hŒÝ‡¿ úÐÚõ&I$1ït_ÎhQÖ2J'B6 èDøºF·T1ô CKš}(µd˜7#IŽ­õÐÌ"z¹a6!}”»tYÂüÂ" B…¦†Ìj·Ö†è—0j?ÂlRË„’Sçf ¦ÝG¤–µ!y .©ñ¬\–±&%©Ç°´ˆ¡é Y¬Ðç¯ôˆD“?rY¬¥Fƒe;hX'Â$¢õ ¡£ÚD¸cŒŽÎM'[ÛÏÌOj™Ï–3ó’Þ£÷pBú“±©¿ŽNi‹I&‰tD% J¾ø‡/1}7ïDöQ'B‰Ïh"eħ¿Kùë?|_ðÎ(!ó-²…_S2žÿêf–¸¬ã¢‰É<™`iúü_¬¥%&«ÍŸÌÔM’³ö‹®‡=<·™’’÷&=ZÞ:RRò^'›\ýÆ÷õw¾¿}çËÈß—šß|•ßEI·½CÊ }ÐHVÑ Y…{¾øÖ—i}•Ž”tÛÛÌ,Tˆš–j;QÜb)n¢›ûkŸ}ëK)îÔ­eŠñEƒÂ5 …ƒ‰ÅäêAt{"º„ÕÅC¢ Iwœ…Ö‰Èû ÁöDD?BºÉªÓz­ð/a$ƒ(ã|B6ïAr©õ¨U¬¡)Cª-uìÞœ:—Ò†°ŠÇ` уx¬ËMTb]9^°b,¬m5Ô¨ËóÝcb[í²©qÐZfýXÙ“îƒÖ8†A¿5J6»x÷áïA[ÇÄ8 ªÍˆ˜Ã:® ¯N%¤.Eâæ¢mn*=ìåq—=ì¢PQùˆ·ú7Ëv/‹ZW>Bw¹«qªþ‘ž¸Â‡‚çœtÞJê>ÞÞ¯YC{ˆ®½#úqØCøµ6²ndÑ“_»víìãq¨Ç9Òñatê!Z°ÌO^˜ÞFÆIÎz&.ãjI˜Yø>ÕôþO±<”õY >c…ŠdËž¤¬×™ržIÍ},=ç—ôðج#´–¡ÁÔìg’sž£÷ðWô¶¼DƒbC$>çxJþž«ßú¨õ7DØ©™<'µ!ô$Ù»2 ^Ê(ØC:H³¾f)|îË _²íþâ;_Ší×é…û¾þÞ—Sôh†mùËRøBvÑÎÜ¢'¾ü– r,ÙÚNóóì»(ì±ßùrì/çÚwþ­/­øxZñ±¿~ë+°ï̳?k޾KÉë¹öçÅLKÙ;©ŽN­I,¢°Âáß«:¦–ó=¾«ZéÒõ é‹\Lt;/3ªl¾R'“]3Î1&ż+a X¶éAØ~ªº'B7s{¤ýÔ€s1滪Ë]"V©×°4#çeDM=ˆhFL÷DÏÑ(‹±B1íD´~D޼'B{"å›ý+ó6D,dÄZFê5ŒÑ Ö›¨G!‘r‘ínQD¸/¼jtµ»âîªG½Uº«wx«éø¨‹ÇmLÍŽáÅ^qä>ÅÔ8ºw}0ã° m"•9:ÝL²ªšú¹ªãGOœIo;#T|ý-ë¾äÿåÿìŸl$*£'Örœ Búˆ³HÌnúï,-û㲚S,¯P “^ðt†õ—붯¾ó%ä&•°^£àÅ„¼æäü2HfÁR‰Ø ¡‚TÂ9åD†m/3ŽõÛ=áÛ)E},ŃԀˆ¥ ïDŽk} iEºKX#ÍÁœ’S¶'ÓÑšá8òµ'ßû¾þÁ÷å¾4G›¸×V¾»pѯ¨È,ïÈ®ì²Vîûü{_vewvåIšF“é!4rõ{Ÿ­æÕ’æ#º7«Òå¿`¤Ú“S=®5 ÙÒéó“5dZ·?Õ°÷az^FœšQÏÈLÖƒh¡6d¹Ò€ˆø C¢œ¦ñw"!zmĥ޳ND´!…ëÜŽMcº=1""Š8´ýmgDœ¦‘;mŽØ)ÛêÖÜÁ·W]rÐðšæÈ=+¶‡ìA¶»Ä‘w"^Å;¼ ˆ«v‡›"n2‰üR´*.U",uQd­èjwÍc4ß]¿“¥îI–ú§<¢¨yÊ]·óô²'zSJo€qH4Fe„6Žn1¥{¸¶õsczœ×÷oë<›šwX\’”×F K–uwjþ»‰|“5± Ÿ4‘l=Á,Pô,Iä*Û i¢\åHvᳬû°5§ØZiuCãI…¢¿È±¿˜Qò.…d”Uò* *»­Å]é%-ŸÑó”´Ðê&¹¸‡BEzɱT{â‘Ò7˜Sì´*(Ý_¶‹3ì–².kù¾¿Òª¬ËRv’¾tQåË…•o~þ]Zy´¨úÕ«ŠSºé!ÅÕ/P„G(¶ªýä—¼š> M+®£ ¶-¯¶³ î°­î{Ý43·¶×ô:щ(*á}‡Øû0…L½[>5c¶“ªì‰¨6Ñ퉄µÂô!Nñ®vË=ˆbÕ“œ—¡c±á mÕÑø¾n\œ—§fBž—Qz“€=‘-.‡j±'¢x„̲Í[¶uÔ¸'" j=D„AöDÔT*{"L%Ô‰°›;¼šG¤ŽC©«é‘Û¡’ÚÇÆ˜;—{& ^W?æ©~Ü%ôAr¡¨ñ h6aÅ®%O-U⑳|ר²gY–ï_ö¬wÙ®‘µÏ¤WüüŸaœ·–;—=Žî!ÊàGçMWUòbJòW™î¹ªÀ}œãí=gS­ï‰s1IÇi1E )F»V•’le=‹Øæ°”ìc½FñqKÉ›lQS²‡¤^|$½èXfIë§´ø*î!¹|άñZVéÛÔz°7|é¾TG;ã8•lïKµ·§Û[?¥~ª´5«¬ÝR~<»üÈ_èfYŸ¥¢‹k­z[\öNONš°U¿AƒÙ½kÕ;Ì/½¹Ì)%Õ{ŠªØ½55EµïRWÓM¡‚$Ba#Õ”¢ÚæÏ¾÷åÖ P¨(ZüNAýÉüúÞÿG_¥áHIÃÛìÞúþ`û#¹Ô†40AP3ÂW1^ÿjE2ˆXш+D¬âZÕãìªv­j@KRdO„·!£EkÇÄ5©æ×˜­5FíDÖ»4YH}Ǹ2›ö#Ú†ˆt^FŽ¿ñï†(çwMvCÈ,Êö‡Ü¨¡~¤üç¬)££j¹©úŘ֌ðÚ-D„º-â®Ú1ªõ#U;\ZWBGjFä6ÄÐwøkÞ¡xýÍÈNê>¼ÙMYñÜeåó#þŠŒ³Í¸ú-¦qüK­`;ÇÒs =ÉÒ¹1=û Ä…_ßßÞÖ{&­äpR1;“\Üù)k=šSJº´35IìòöjI²ìo²µ’£9µädš½3«ì ŠÉè]ÍoIµ÷e–õ唦AÉ)?HEnÅ‘¬EÊÞ[­ [*{s+Û?ýŽ==–5)íÙ•NKe?µ*Ú I„zkíá¿qj†)µíTçVSŸ"D4’WÛA“é&=aaÃ{4ÁVßþ)9¥¡™ò—ï}ùuNŠ­¡í/Ì)N ÕŸñ%‹—õ-°/o§{mˆÅEeRÓ!÷#ò"ãîuŪ²'²Æc<;£\*bÖƒ°³3kÝâZÕRÖtˆ-1c÷¡;/#öDԎäÑöDäÕ ßñh׉Ør‹6D=§ëïAhÉS®ÚÄ¿ÂÃ%br^FÔj?Â×/"=ˆ?•;\úmI"uOx䤿1O­Ò˜¸Õ5Ž¿Ñõ ¬ Qo2ƒ<õ¾Ô†Œ-yÊKyD´!B²AŒáÜÂ)q%ÎTwŽÃ?;>í‡çøÀ‡¤ q.&ÙÑ“j?–æh§6$à³3Žцd—¥‚:Ò‡¥¢3»²‹»£?¯ª%¿ê@nÕQêPØHÅpnEW^e{®e¦zF†í€Ôœ¢õ -jluïRØê¦¦7»æ… 1n­keýHݵ!”œúÓQçÖέ(lh¥P!ꢆäÛ’“ºOÖ-ï³.¡PaSk*Šh/} ÙñÀá­ËOÙW¯ê+Z9"öAøÑ¼Q¯YëåW…xµÖC\'bz­já:uͨ¶'b×ÄaØ ŠVž*\5¢ø‚ŠU#âÚv^­(Z5X¸r”ù…ßË®øXëö_«ºÚ¥|4&xŠÖ¹ƒí‰˜ž£ÑöD´•KDl‚°‘’Íq­ªc+ëAʶ9¶yùy™€=Ýu"¢‰ÿÔÌÏ]ºS35Œ©k¢-g‚œš©’öDØñ±±u[¤&pDtµÿÍÅB7ŸðÔïô6<9¦Ó‡èD–òåÌiO„éãZžxÕ ¿AøšEk@ÜZD'²äY—lÖqðzÅ‹^}?â‹ü²êEf9䎕 JÞ_ùâû«_yÍËc¦’—ÇÖ¾:¶îµ}ðõÖ½ù›µo|°öõßRÖ¼Á"j\ÿúø¦×F„q¨¯Qõqޤûù翃Ç8Ÿ­iøgă7}þsþÈ>Üp÷qÞÜw¼Ëùy'øJçtFåévþE=/S5–äò Ÿß <cZ‹Ïõæ- ÷ó»ÊŠF÷ùÝÀ•‹á¼Œ[û¯Ø!ƒ˜öf5Û )\çHუòžˆ1ÊøùÔŒ7Øå!L›\Ô€”k]É»ò}«Iâ¿\UnLÔÝïD´”‰S3;Æ çe¼ºs4š,&k@Üêõ#aí‰PŸÂ[ÿ8DÝQR»Ó¥yd‰â?¢t%|!³l÷8;þjL·œ1ö þ µõð÷ /HGY1ªJTwŒ­4ô Z½âE÷š=ã¢Yõ²wõ+žu¯¯yý_™>„AD¡Ú„ä"å}vïƒ{»nïoÅqZSÖïûïöŽo~s$³îaÍ8Úg»÷¿ÕÄ£ÿü·V kìß¿_ì ›ÎÑ}F\3I䭷ޢDz«>GÎîRëÉ{œI?ʶ­ùÎqשsyµâÂÌêQþ©¯r­jí?53ùÕî4‡_$îçwÅΫzd—«ÚV½?Éõ©+]ì 4±–YãËÓ+DtW‹°S6ꞈhCä=‘PŸšÙàQ¯U×:cĸc“‡ÄÁ/ZU?>³ÍËÚ~H°D=/ãQ¯a»ªÚy™€S3úkUµ6Ä+IDî;¼ºAݶo7XRõ„Ô}<1&_'R󄛟úÕ–3î†'=f{"^Q+˾¢Ù„ цˆUÞƒßQÚ¶'²òùq­Yöų,h¢t"n—È/»D²R ¿éáˆÒŒPñà«¿¡N„¢ö ¬Q bb–7ü1Ͼ„M¨`Q×ìû`}Óoy~ãûÇ·î#ã(«*êG¤wê<“žw>oú–—åzJë!åäÁŒl gà#¶ÓÔÖsúw…‹›ó´?SÄþdQ~ÃɼúÛâ.Šú÷‡XŠxŒµˆ};–,eÛ(Ž•=<]<=öU]¥«ºéÈk«{«»•¿K´¶Ç±®Û¾¶«t KÙÚnQ#æÐ‘v—­ï©Üؘ)}Ú±ª±W Voê«ÞÔcšªÆnã`åæžª-ÝUõèR½­7`d[7 ¯+ê¦Ð„š‡ûk·÷×<ÜWËSÿKÃv“°ñ_ô×mï­ÛÞÝðhßâ‹wô-~´gÉJ¿^úh¯VÓœ†G{–>6ÈÓ¿ôñ^v4æñÞeõ‹°9÷.¦ãÎþ¥Oö-ßÙ¿|'ûx­”UO *yºõÓN:®|ªÕÏ ¬Þ5¸æY'…»Åqí3ƒëv9×>ÓOYóôÝdÅ®~q|ðW<ÎuÏ9©X÷Ü@è#Oÿº)k_bµ1ë_Üø²H?eó«ÎÆ×œ¯ÓjÅ4[^ÙªfËžÓìøêÈæ×G·¼á¢l~“EÔZ¶¾éfw©s6½1ºeï(MÛºÏE¥Œ¯Y~ööèöw=ÛßcÇw=;Þ}ì×NÛÒmߘlߘ_m¬{ƒ‹]˜ðÿ_øh_ÈÄ8âë5MŠÚAíozgoSóƒ[žŠÏ\“¹!xÖ‡™ØŒõ 3¤£6gQ›-ŽëD<ëxØäļ I¹s6&å6RÁÓ(j~W#å$4J¡›RòEµ£OÎ[¯ÕbN8u’•E) +IEr½>¥ÐŸÔÀZ»™Ê 1?ÕÞ˜jß@I/i¤„®ùä`µ(6d96[ì”,Kfic†cc†c½¥tSö¢M9›éhŒ¥¼1{ÑÆœòM9‹6f‡LŽY,åÄQÌÉ­Ü”]µ)·ª1»ª1dÍ KåF:æT+7‘ï²T­Ï®ÞÀB7«7äÔl¤{sk6³Ô6Rrx”‘ÀäÔ²˜Ö¹u[äñ¼Ú-þçäÇ‚†-”Â¥Û —nUcRÛ–l‘7kuñÒÍ%K˯;wñímæ_ØÒÕ´Òÿ…-þ~7އù<Ú_ð ÚãLí/$³?®~_DÄüˆˆ…‰ ÌÂë=ʉâYhžHž€9×]‹b¾ZÜ„DΟ½…ß¹¼f¼=WÊá¼_¦úžúÉÎÜ`ãÈ¿Á0ŒãÀ87×8w“~(VûLm8ÿÌ7¼pàƹã\ºå//-^,ãÌãL²Z™ø)WôÕ»»»ñÂçN1ÎO.À83pU¥­­nµEŒ`œeÝ'na`œ›¾ªÒým²Ÿö»ÌEWW^8ãÌ@ãÈouígõ“·<èqŒ3c£­°´Ÿ•(䛯&(œÝÒ=¿æ5ãóÃ8Æ™9Æ1*ÆhL•DÏcœfúמP.BŒ`œ;kUeÜ»¡qã’G·ð7uÒ-Ó‚©JéóÃ8Æ™áÆ Ö°hZ1í_Œ›ÍÁVU¡ ¤`ãÌLã˜^[¬ëeŒ6‘ ÝBL{Nù™'5ŽÎt0€qî¸GSFdd¤é™)Ýÿ˜nNã·op® À83ß8!¸á€˜Òµ`ãÌXãÜ‚¹BÇ(©[ÿlÆ11ÎOûÑpô8ƹÓ{Ý_þ11v.0€qf¬qÐããÜ,®ù~¸t…ý‘=¢«§“Òm@¿–þ|e¤«K÷=à…0ÎŒø‘EFDDª§£ol-'üùÁÁ‹`œÂírÒçÖüƒaÆq®G7Óy'Ou§9œù0 €qÆÀ8`Œ0ÆÀ80ÆÀ8ã`Œã`Œ0Æã`€q0À8çŽFû¿µ›˜˜¸Å¿Õ‰ËŸPð’ç6ÍmŒ`œ™ÀÇwËsÍ÷…~%ð7 `œÛú±ßêßâ• êqð+`çGY^™èêéį€qfŠ~ì·øj…À8èq`〷ª‚qŒ33¡i| ¦ºøºŽK~LgÂ8Æ™iÆouÝ=œWáFí…xÀ83¶Ç15Ž(ä›Ýdù’R˜nŽì‚}]ù±dœÎî“â!x½ŒsGGÔ²&È ´ø…ÎÆão€f1£Î47)_=€qfö>Ž®=‘û ݸ°ƒñõ’ÅdlsBˆI» Æ0ÎÕ㘎‡°’¤î Mú„¦…îùaãÜÑÆ ýÒÊ7å.&|ãè&Ã8Æ™±Æ1Ý5GwnkÒ‚Ô#?sèù—9XUg¦!>å0¥çRÈsU¦«*£ÅB·6ÆsU!Œƒ¿e`œÛµÇ¹u÷›aãÀ8?žz`ãÜÞÈ„Ñ8ºEнîÎøl“^µ¬]ãgö8ÓTLhƒLÉ8b2vŽŒ3s¸víZ˜j¸>éhÏsÝOãg¦õ8´l¡wu7‡ŠµœiÎï"‚ÌïVééé#ø•0Î y1øß§à §–sóæË¨#x±Œn:Ø0€qŒ0ÆÀ80ÆÀ8ã`Œã`Œ0ÆÀ80ÆÀ8ã`€q0Æq0Æ·,—9·ò·â&€qÆLLLà›0°ŒãÌÜ—ùv/Œƒ_‚Û¾k¯é-ŒãÀ8·=â¤xMo‹F /Œƒ_‚™ð2ßâÆéîî¿{8/ãÀ83Ö8b›6Øfíùæ‡q`=Δ—oF£ét&_ˆ(?D3^,¿3Ê8ºsCFSLóü´öð`Ïlê&Æqf¬qtwÝ ß!ŒãÀ8w–qD!ß4* Ĉè\äþH~Bq†^^[éžÆq`œ;Î8:ûhµvŠÝTRÁ%í åB7_3ŒãÀ8wÄ>ŽéòÊhÝÑË„þÝÓP0ŒãÜA=N0ã³’±EŠŒŒ¼ãèžÆq`œÛù”f±ŽqÂi^BÏ7îàhn2¶K0ŒãÌè­~íÚµI{mß×Ô>ڄЫ$ÍtS]UÑ7‰_6Æ™ NèU•¼1Lµ¦•ë8WæªÊøüèq`gf®ªÂ|Hˆ9áAž¬tuuÁ80Œ3C¤cú)ݵÅ!.5¦»¦ÿq§Ð—2£Çq`œõ2ëŒs?0)«$´¶`ãÜq=ÎÄåO(áÔrŒs.]™˜Ò|*>¹ô±üXù^Æqf`ÓEôtRº9!êî^eæ¤ó{zzä™Áæ‹'”ë€{aÆ™I/3þÎ1€qŒãÀ80ÆwøÃ£0À8`Œ€q`Œ€qÆÀ8ÆÀ8`Œ0ÆÀ8ã`€q0Æq0Æã`ã`€q0Æq0ÆãŒ€q0Œ€q0À8ãÀ8㌀q0Œ€q0À8`Œ€qðcÀ8`Œ€q`Œ€qÆÀ8ÆÀ8`Œ0ÆÀ8ã`€q0Æq0Æã`ã`€q0À8㌀qÆÀ8ÆÀ8`Œ€q`Œ€qÆÀ8ÆÀ8`Œ0ÆÀ80ÆÀ8ã`Œã`Œ0ÆÀ80ÆÀ8ã`€q0ÆãŒ€q0Œ€q0À8ãÀ8㌀qÆÀ8`Œ0ÆÀ80ÆÀ8ã`ŒÊ8—'®Pð#„ÏÄÄŒø±¹|ùr(ã\¼xQ3NdddÜ”^æ£óæ=L“óçÏëG‚­ª`šhk&ð£v7²qøŽMdĹ lâÐåFÕr0ó1ÿN˜ßq/ïp¸tx­ìƧ\ËÁ|ÌÇü;a~0Ô{ÿ?ÓY*“ ™c"IEND®B`‚pygtk2tutorial/figures/pixmap.png0100644000117200001670000000125510050344475016341 0ustar finlayfcf‰PNG  IHDR6FuIz/!PLTE{|z”•”ÎÎÎÍÐÌÐÎÑÖÖÖÖØÕØÖÙØØØþþþälî¶GIDATxÚ}•½n£@ÇWBç‚ WTèž´ÂU«9‘4W¥Údº+NŽüy„ÜE—“xÊÛÙ/’QÂâýù?3Ìì`ƾ°túÌnYÊùÈÑ{x«ï3Ų­¶|K–׿Ù¾ÐxAž~Õ´^GÔÚW^碦fí~…µC7×é´yñsÌøPåÝ•âi¶³¬«„3^:Ç”O¦(ùtºäG[!«˜ÉÅëÎ6§X¯â]ŸYQ1–8ÉÅÆ3Ìæ™©ïäóçèÙ»y]Uý]Ñôªriã¶`gQÔ¦o¯ë>îMK¹Y‘ñ¿üæH…~®Ø?ë$2dÕúA4ëO¤PvW} êza „·¤EŸÁŽª/%GÇ$þ¤Yè¬X’®7‘÷œîO¬óN)ÏJ,’‘â)bà=ÊËŠŒöbŸ]oøÙzGè䇓þ^äâY‰~ƒ9Ó~"j ²sèSÉ@±tJ7š½a­‘=ZbïF'}ÿ¤4lÚˆ—KÅK'Æ”Óò—ÙóQ¼iB&ÞVtÄžà¬ÎËa•AÜ¿€ ÿ ƒr­žV'WjfÙ–:}Ò7ây5^؇{âYHÍäl>Àž—¨·Êþ}·VÎÏ P"Æð ½¥ƒ§/¯ä{~>ÁŽø<{;*"¼.f,˜Â€IéÆ$œ¿*˜,pcÏŸ$}T³p?žíù”`vÀetê `£ÚÙ\}ekéµGëƒÿ`˜ú;ðû{µ74ܾ? »»Ó·Ç¯û¶ý̲¯~ŠÿéëZè]IEND®B`‚pygtk2tutorial/figures/notebook.png0100644000117200001670000003056410050344475016670 0ustar finlayfcf‰PNG  IHDR—:U†ˆj pHYs  ÒÝ~ü1&IDATxÚíû“Õ•ç»äˆá1³#ÄÌ ‡wPKH¨%`Ô’°%$1H³ lÔ‚ ð.ã׎ {ÌÄØ’‰ãÄF n±C¿®ê*6Àž¿a$µa# %ÿ@w³ÿ˪µ7óT:y_yóQUYÒ÷·+²nßÊÌÊÊúÔ÷œ¼yïÈHFÕbuŸš F ©m‚W´F®Qn7©5E·êÚóšg£…7²æZÖc×}Q™û]Ëó’šñºšcUµ@þoât­Õrn½–çPu7W+ônåzÊ;!×´¿_}9·{÷=j¯ýz­®®òòÕ«Wþ‹Öòæë¿wý«]^ÿì×]¯½=väK~þ‹«Qù§E.¿øEôøÆ/>“•\¸þ;bm`³åo[Êëo]y³³üæÛö6Öòó³W’ëùLK³óÉòΧçßY´–sç?“OÏþÏEWËd³+–UýKh9ÿî•ðÆžòö»Ÿž½°¨Ê¹÷®Ð‚µœ›ÔkÞ~oÑÓþìÿºÒm0yÕhðéù÷¯œÑ[Ú Þ}ñ—¢LN]ùåûŸF ÿº”¹Ì~19»Ü—òÅ…¹ÿûË™¥_Î}>ùë¥LåB}™—?õÒõÕëSèÊ•+mÑ“@]]T¿§åÓ?û©‚ËÈ—fr–[§£rËTí–éö²,·Luf¹2jIõ4£Ê-–2w‹½¾]n»ÃWn];M ·5ÑòŸ&Ê-¦×p¹íÏf£2=½kö–õs·l˜‘åÖÓwl˜½c㌿¬Û4»î?Τ–;¾÷tç—Û |ÉWæþxËÔºm³ºQ £’šc³„§M÷¦ Iµtù WYÿ@gù/f;Tšñ—˜D³ì•T‰‘4íG(½ò@æ¢ y+ C‡uúÜsˆÛÔH:Ü`ã£T$ gB¥±¯×MNÙ±õds×7Zêq÷“ͽ'¢²ç ½¬ßþ4S,œ ô¨Ð“õ%g^;íÉ_Y_b¡ØéÓ§CRiÒ‹½ñ‹Ï4*eßÖ¹ÿÕ¡ ±I>m‡i`©ÿÆ0šbEHêÄn)F)ÍTŠ'JbKQ‰Ã·sd)Û,.i]§2Á ­Óï‰Öß3m¥’Fü¯õ÷NoØ1óEkLéèq—»ǫ̈ÐL=ª’J¥vì/“QJE’;vkyÄÁ]²Ôƒ5Sc‡ê ¥sÊAœûþª¥-Ëàn×׆HGÏ×£bÖw°UW”fÊh‘Ìrnë¶•æ¬.)†KP¤Ù¢I3w¥gŽœEÄk*@sñH9©„EÚ;ӉݲQ)*Q*šù“J[ö3¼Z.IÝ7£¶.ªÚ ¿K"úX€õ¨N¥{«›žˆc7MOÌ“W2ý‘µì{¢å§’«ìû¦xút“ËÞgZê1ÅB^"SfæKR“e>Š9s&ä‚h‹½½˜Ì"MEn(¶K6¯4uë]ä•"ÐÄTrbH«qEjwÆæ(&T·zy>*­½{Zi”ˆ>m%²KSŠ>wÜú{Þß°mÊï‰LÓ¤x´þÞO;§;TšÍ”WŠá‚;‘cÚÓ åîÚ3•È(ížc$ÝÝ6J„¤f‰¥9‹¾Q’[ñhËá¦*’PüwÛXÝ{¸ÛvŠÎÈѲzô„lë4ïH'E¨òÆqua”t´ûIÝ( *5¢Òa͸Fœ´2ž¤’Yö%Ÿ¶ÚËÏÍï}®¥7ÜåÅ®.þ¾ Åü$Ñ^¢Ü±I[³ªQ€’/Q°ËéÅÈŽµ©÷Ú響ó©°KS}6ÌR3²Kk;TâJU®u®ße8ú嘎–©2ÂÓ¦iÆS{==ºkëîžãºâ¦Ö¬¹¤èµÛÛ/á«ojwÔB”ÌÞýKFmÄ¥Os2Ó‰ÝÂI÷M·a/kT"0E a&˜¦"íÛÜ âI©In{ñ_h³—%¹7l„_q#Tí8Ü”Fi,€D»Žµ¢ÔÒ‘èѸù‘ô¨Ì(ÕeÔ–ÄS·2Qb$•¬!›Ï7ÅFiüd]!IRiœ<6*I Ky¦!—c*Íï{¾Iûž›è¹ùCÏÕŠT9ø|óÀóóò©z<ðlƒ(–É‹q ™›bò%ašrçŸÊÛ«¯³ªˆÐçßYìd”º”Ñ ‘tFkb÷D•D¾Ò¿ÚY–¨2ÚxÚ6»vûl £)I¨µÛ¦‰DêÑôJ´f‚/¨µuH4§*×Í9/Ìe´HŒ§ô6…uœKÒ¨´5CM+’¼ rd»Û××êY{XDûÓ2M k É#«QÊ”ð‹ÔHÆe–b«  oÖSÑÞ“óz3·Úg«l×üçyB’,„‰!ó©*û¿5 Sö¿Ð8 žjå¡ÿÒ¤“b®XÃCJê‡PL…}ôBb¼*&/ðÖ‹æÅ´k”Šb2vSâÐLÒgÝ–é¶9Š*çÚHR•ífCª¬²QÚ>E•ì’â2ÇË1‰æ˜J”6ŠÍÝ5-pÛ8ö+I®ör ^PZí.GO7É-ÙÀèšd iwô¸eïœÈ(ÍmÙ;Õß¾R·Fp2^‹—µð­²ío»$ŠÝÈûhÑ™5ÇÄm8£Äý”Š«l©In¢Ò‘ÌV52¬KR©¥Â´ØÕM y¨½Ä–ä+ã57’\eüÔ<㩽ül“]R»<_—†È]êVî¤VøVãз›ÿf^+‡^”Oë´°a|¢”¼˜ÊJO*;ýkýÎtŠÕFÖdóbI_wî_¹ÿ¤ לDR7vë,3’îÚ>£ñ‘LP‡5s’; `­v+7í˜ê.ÇÞ‡Vµþ)Bz\ÿûm`­^ç+q/õ4j¼7Šà¢gÿÉÄu7­7ÀÖÎ5½’Ù-`_£Ý»2îD×ÔcTö‡%iŽO2—d/7¤Qr;£FXÉJ¾Å$Jf²ýÀtFF±àfÇ㙕ßhí²A'êðdKæ•:ËĦIÎ"7dæ³]é¤NDÆn(%‚ã@/N'EåÙ†4JÖ¢ìÒ¡g;ËßÊW"K•äQë¡›¿ÓÔxd%×Cß›?øýæ¡ïF Ö2:þtnб)+H19)^ìj¬`/öû¶{÷НiËÊéöǾ@xš‹ã¸©ÈIÝ?£%á˜bÛõÀœÂ“VÙ]° i.®¼Æ`R¶‹a¤oÞó+eâ’—Þš}ôËm²ËÒW®ŽH)T2zr›½%ãšV2vëd”™Ëx.a”‰Œ%¯¯7]ô‘.IU2ª8Ó¤xD±[jÈ&ºD.iü©&Gd†Üù#‚T"åÔq@ãÏèžÈtIÝšgšûžmYÃ7—K:ðlƒ©tð….e2“5:z^´›)¢’YRG¿Û-$Ÿý½ly°^L†–Òˆ™I±2½] 8{aQFmX×®¯R|×®´"é)Žà6u*i!6Sm÷DÜ‘TŠ(÷Z¢JÊ|_ïPI.hH¢5SMg¡ÉËQ{2S)n¨h”T€¦!iëÁVÜ åêÌíºî&{KîH:)ÂPê…6Kw¿jìüOóþIÚå6j3v|^&¹­Wܬ%ÆS¶Þ *=Ý ¿îÖŽÝžisŠŒÒžg»ÙnW IÇS2—´ÿ[¤"N½ÐŠŠ7ÍäG’â‘ å’Ñ\I¦Q:ð}I²óR‰Ë‘—,•ÇTùÑü£?Œ©Œî;Y0U¯Ø¤@á¡a¤Ìì~ŽþbçÞûLf‘C OšKjŒ÷·F´*²Hü_܈Mtí’íÒ=Îð½©Òñ^Ém9ÂS¯EOtX–D·It¡L»•ÄV껞ÏlŽŽ˜F©aä¹ÞŽKæu·¦I"Ùt|žú(eO'5¹“d\êb9¥ì~ê×!‘š=|<Ò¨”Z¸©7+»VbT¥ÿ®7kÇɼ¹$¥ïÒ“Íñ¸ù·<åä¼ÌdwÞFV{ŸÈ%q%ÊsïA\*ŒÚ6*•AŽž_hD×Úþf>°<ôb£ƒ¤ºëŠ•#ßiº’JŠJÇþ¶…c?øu~$Ê@}¹•¤OËŠ$e—•:F©m—Nü}ã‰W› ÿ[BωW#Id–¨åO?:qú#õÈ屟&žRÙòð)¦u©·/¡ê¯Zò0ê宯ô/FRê`?yíx+E½X<ÊXÇNÎ.—â’•ê;ÉœTF)[ìÆí1dÏ+åŠÝr#©Ýi °’ßEÝ&[ÖØ-0£¤X³ß×Éš]j´c±SòGš{Rlò#Iy¨#ßièáÛ÷šä•,¬y)À:½TgÊ?2Ã4’T›£±?âÍU޽\.)*l”R1ô˜F%ÕžatúÃã6‰B >|ü'ñÂÏ~sâµßªGk=<ÁpÈ4ŠaÖ—k é#!G¹ е“n™FIÔÜcD±N‚)ºw8¾í8ܼ÷/ëÖ®Iþ›Ý ¢DTrw$fÕ)—Dv=Þjÿ÷‰–véÍÞ-àD*Õ]Fi_@On¤{ÿºÉT> âÌ䑪Ñ*<_·à&È:µ‘ÒÀÈ.¥¥„3x:öýù£ÿ­y¬pì&/ÀùËÑ6âØ­ÉÉ£G^i§–¬å±K—4üÇÍã¯ÎSì^”KŠõ)$z¬ £¨Nœþ Q‰‹ÄÓãgè_?C•>q&®ÿ{êg¿=ùN¼þÑÄñc\ž~ý£G&èvŬƒzF°(Q–û(9HŒlÞk§CÆ6SÍŽ?õÒ£§¸¬Ûò´|Êeíæ k}X9¹îžSk· /wlŸPëZ¸sÛÄ]ÛNnÜ6¡Ê†íí²~ÛI^ÖÊúmO©ÇM;Nm;¹qìTjÙ´óéfíÆ;ôš ;&¨DOï;µáþ“áeãzÍ}¡-»e|Â_6î9e¯w¿dýî“ö<5:>!ËæÝ'yyËž‰Í{'F÷,·luÔoÞûÔæOnÞjëþ§GLPÙº‚—SË–‡N©bÖoÞ¯V{2YùTwù°½l94q÷ÃQÑê·~fôðÓ–öŸÒj6:™hp¸ýtìá‰]‡'€¬e×#Ω²ã¨þ”bCõMd‚ ®…„¨æÚ¤‘êRŒñYx>‚ô2͕Ѓ‰FnùŽg-ÿ ³Oñ°&Ó!¯øpR§­)åÖnŒs íSkÜÖ÷\ë×”d§˜ì”±œAŸ«¿•••åå/¸*~º¼´´´<Šö|eé óßÂáMW–Šîpnѧ“OK+ö ïkKPÖ·³Òƒ³²§úçÆqø<à;›ùh9yü»Ÿ©9QŒz`8)¾¯ñQøÜŠôê—wÚµ±»Boä õ”|ÌŸ³g¥_洯нûNª–êøXÛ—òÅ^‰>‰ÒÈXÊyèYIÖOV{kÝSλŸæѾƒòœt­ÊµiqÎtN›/V²~²9>z«‡¡XY^ ‚ ¨¯*=¢„ Å ‚@1‚@1P ‚ P ‚ ƒ Å Åt½ªZ½~M•ë ¡RTÅÔK._\X¸ô;U._¾L )jßð{Aè .ô•b•"(AC-º_ª[ZZÅ ‚Å Å@1ÅŠPŒüU£ØðŒnAP‚bµZ ^ ^ ‚àÅŠQL,ë¯äò»Ësw Ùoã㋟ÈfÊú©ÿjc×ö‚b}Ù±‚CHB(ö;& GVRZYb©Úüë×W Å´P´ÄÈT«Ÿð’ÛB  bE)&—yb‚n}\¡½Êt[=¥XÿÕ·i àû P,ODÉ~ÊRðH5&¹"¢ÅÞMYMÌ»cõkeQ¬w_û”±Õ«ˆóW*'%¹F—.]b/f_çª(ñ«Gy±>…ŒàA¢˜y‹¥Ì‹i\£4™rš„¢—+Òù‰9Œ×(5•H4ŽU‘ƒ@± “ qá†ãA=¢¬%Ü™jÓM´f‰“֯ו¹ mjÛrùØ·÷A7WDIxâL¿–ód÷e°YbvŸß¸òA½þÂËõ“íâšÒ“Ü@b Š‘“RþÈÕ%"S‘+ ìŠáéõš#"3¿íòQ‰Œ’„Žfpø)ÙO«“Óv@®‡¯íºÖïyï Šé^¬~q²LÁ‹JÖ›´ö!^삵7#JmYœYc60‘d¢‡ÝŸÜº•GÖ yê]Sï÷ BÚwÓüÅLDI ˇ³݆H1[’‚Ž<¬¦Í±š)Í1ÉVŠù½˜ë)çË4ZqüëÏëiõPê¿LŠU‹UönðŠ­®®jnHþ8(É,»‹2ôB3•ffÙB(ÆI1`º<ïž+Jµî bh€Ñbå(VJ8érgEVîÅ<‘f'kÀèɲy"JsÓ’b& Í$]ˆ­ƒ ŠPÌz!ëFëUƧò1ÕôÉ©S_~ÅRÃ:WvÌ•G³òËJ±Mk›µòQ‹4A4^L(Ͻ}^•³Jo£å|åüÙw¬õùV›Ï‹å¾ ¹\¬{DÖ×úÛ{þ‹^¯P(æ?ûJ1óG¾:Z½~miåó@ŠåƒBASÓ  hcW`( ¨jšœœ¬¢+˜ülvƒ)B"ÊA¢ ƒ P¬ç^LÙÇ?Q¥à•Mm¹GæÅ »žïî¢>85P ‚@±!È‹)2ºl(A X!Šõ3#fÝ(A XNŠ‘9⛺ih DÌ?œNŽâúƒ P¬“páeI´‚ïÈ0@1Åz5J¢,iÁxˆj뜕‰Á¬ã±´L»§*iØ~P ‚@±žPŒ¦)"Z)Ü\¾¸à‰(%¹¨%ý곟¦}Å +“b„!—AÓ’ñ#µÄH4¿$´¯_kムP¬ßãî¯ùÏçæš‰¬–f¸ºl«äž=ƒ PÌÝãA?ÅȲ¥Îªë™y¤½ô´€ P¬w^Ì:û¤éª$Èç@BD A Xÿî§k¾;¢ø¯ZÖºPÐõÜA XŸ(fWzxd^ÄŒòý æàtƒ P,ÅhÈ=I1—ÏHQŒÅ +!¢TQÆ ƒ P,ˆb½˜ #ó@(Öo/VA–bŠ…R¬È¼G½+ b)ZŠucÌAÐÍH±•••Êf÷QB(–!¢¬f‚ƒ P,”bÖþú®ñû†

ŠÑTáÃåÈ@1Åtõ:ÁOë/k+ båPL³NV'%+Ë2} bÎ °ü•™ð'áåY(A X 3—­•~y ½œ^Xd b(£XTéòkÚ«ü;ŠA(6àˆRy.¹¬>ƒ P¬¯ej¥Æ, $¹†¦}ó¼¶×‚ ›bœÞ2שY-3qÆ\3sdùŠA(–Í‹qØhm¦ —d–'¢Ôrm»\€bŠ•Q.wrÿü”¸æ åã܃ P¬B÷QZw€-ðÏÜ]ùA1ÅòË ºú²JNiCD A Xù+‚OªËºÚ"ÛÅ Ë#ÅÀ¬¼I(ªÁ}”Šõb+±òAª‚‚ x±åâ¼Å ë Å.Äšœœ¼P%Ñþ€bŠ-§®¥ÝokdìÀUbŠ¥ƒäȪ31¸¶'˜U‚@±t©—TmJpbÙå‹  bCI1x1ÅòPLyP ‚ a¥XŠA(6Ä%¥Æ@1Å QLvzðWJú\¾|¹¢vTùøâ'.TY×/A X9cñ2-PZY“£ÿ„¬§~j bý¦˜\掲Ýú¸B{•‹V býˆ(ÙOY#J ©Æ$WD´Ø»YŠA(Ös/æ¯üøâ'’kôxéÒ%öbø´ë¡ b=¤‡Sõ&‰C”&3CN§Ý‡ P¬çS–*Õ‹q¼©G”µ„;SmxãS®Å XDI$âL¿–Cv‚@±žSŒï¾.ep ¹’À®Š¥ÁŠA(vÝÓ¥+Sád™‚•¬76iíáÅ ËQÈòá¬G·a‚bŠ…R wƒC4ôy±r c±ÈÊA1ÅR´´´Ô£1-d|*SMŸlŠA(Qž{û¼*g•Þ:GËùÊù³ïXëó­ƒ P,H#UÕêõkK+ŸƒbŠ¥{±þ_f0X0¡–]‹A(VÅú<{(A ØÐPLy1¿Å +™b½èV/A X)&±Õ¥§$–¥¦Õ@1ÅòP,0gß‹¾² b=‰(ùîî‚cThc]à%bý£;¯â §!(A X SŽI›=„‡ETâ‰&µ¹Æ-Ö?2"(VY¥ŽõÖëí.--ß7ÏJ Ù‹©UÑÄ‘Öáªcº®ÑGyµÚ.‰EP¬š ü¶‡ã£GLÝÏAÁ«Å´¹¾åÌF<ÏÏçÆÓ庪†ƒúÆYèf¤˜Ù»BƒŽ µIvyZŽ(9®´^Í”ÿÅ*":…hŽd“å"ƒ7ÁFI»…¶\Zñ[ç|³{1kg&]DÒ™ë3Ŭ˹ý‘+”SõrýôÿµUÑSÉVOØXÊû‚n@Š™À²Î{Ä“vŒ.À‹UMÒªÐÉ#ÙÑh 4F(P´\©­Sn]’ˆ›ò´M³±²î@ ©¡›‹b”ð"Ç”š•W§—j£óåKó%ZŠ «NDiòBûþ›ü2a—Ú€—•™RœRÚÖ­<²nÈSŠbÙ ãÉåûWèéû Š *¢´ÆbeL¸°´˜ÑõÏÖÕSœZ7må¦ËŽ¥Ú4h()Fg‰¤X EêÛˆ= X¥(&3PZø©aË…¹ÔmÉd¿Ù8ЋÁ‚Á‹U¥(ŠUbá¥'df±áJ… £S®G^pE”@ØMA±>Ü×»Á‡bËÁÙ}?]¾ÉÜ––ìwÑS6Ö.&È×Rí÷bd(V)i‰ªe£CEº¡j½ÛÐwÿf¡X‘yzW@±Ê*¤)úÖƒbý ýja$Èzn”èbBVe5P¦Ýø›Pµ(¦>æÊf÷QVY!€ð´±†¢¥{7Z!Xv³D”ÕLðƒbC 5y ²xŒYFòµ€Ú K±²Æ§Î4$?wîw½ƒ P,ÅÂ}™vwdnœ¹¶ŠA(VŽËoR{ dÝ9ƃïÅ +9¢,8‡[Ö—ƒbŠ•C1Ùû¹8°¬÷Ë(A XÆ[X 6µ'a³E…\©ýW¤rÐÄÔ™@1ÅʤÙ%BôSŠYD·öH#kˆb¾ÛBFßÅ +3¢4Ã@¶f<§‘kÄjõ_óuRP ‚@±(¦Ç3b5SLÚ¾hØË—)Å–z±ƒ P¬¼ˆÒ3{ÈBb}ÍŽâì>b£˜œ D›¡ÒLáóÓ^ beRÌ 3e Œûa0¿¬ÃðËÙv‘݇ P¬#V+ºÉxÐdSî[ÍA1Å Q,œ>T’ì]ÉruúÅ ë‡33ôÖT}»gY–i–@1ÅzåŬý¿ŠßFŠA(–b4\Æz… eÉÓPbV]Å2SìüÙw0ACI±åδ£ræÑŠèÚõÿ·üÅ(A XŠ«æÔ!ˆ(!KYMH#ób™ºA »A X…òb¸F A"JP ‚@± {±ÄÜ‘qà™áþ¤N—ý¬sÄ©}Kƒ Pìz*PzgÖ._\ð¬^ ‚@±üs ›cl§V“V»óNÆO=3‰øoº„ƒ P¬Å̉?xd} FáÓ»©W]ºt y1ÅzN1mÝPåÕl¦Êš‘/q{9¥ˆlf¾–‡ð×òb b%PŒTèGó…XY&_Ë<Ò†Kå fA1ÅòPL¢Çt[Ýš……öÈúq^Œïâ6Ë1õkº&)§(&cUP ‚@±œãYÚ4îȉÚd{WšÌêé¬ ¬—@1ÅB)Æ2“úÄ2⋜€’kü¥ÖXRŒÌ—¼Ê‰ˆ‚@±¢^L㈢c‹“zJHjÓíâ‚I1y5@6Vk3'L’ìÓ†çÅ ËQf$èÞñ‚.P ªñ ×(!ØÝà’bràV묔þ±4@1Å|2GæñÏúA•™æd³6ö¯Anzuu•vƒ PÌ)EŠR†ÉÏ7¢ª$õv@1ÅÒ#Ê$*ëþpçÌ•ñ.!¢„ P,g^ÌÃ5“_ªÆLÏëBP ‚@±PŠUp$ÌA XÅ–––FªªÕë×–V>Å  Š(µÑÁ8Ÿ.?…ƒ P,g^ ãîC4³ô[XÅ >/Vµ98´Å Ë@±r»Jäú‹A(†¼A7=Ÿ/+˜¨W‘˜¤Ò;'›uÆÔ¶ bù)ælG҇ǢFµUy¦qÅ +-¢ä±XiP+‘ý”6è+WšÞM³o©#‘bŠ•C1-¢tMk$É儚CÔÄ0d_ ‚@±^SŒl”6Kˆ6ð´œvWÞHä!VþËšSÅ +D1ëälæmþy<™/sšqP ‚@±žçÅ4®¹¦øvM”›˜o¼VóéŠA(Vˆbì’ØyqM{žp0ËDßxÓ\›'ÒÅ Ëßw¿”[‘Ì-‹ôz]YYÅ K÷bùEÓVR)qpx1Å2D”²âv¬Ä{ËA1ÅB)V…[ÁA1Å92Oê´l båSlii©GcZä6wò… b¡%Í9tVé­s˜ ‚ a¢­«tQg1ÌA XŸ¼XHÂË {=Ô5¼b%P ×(!ÅRæt] Å +™b}îVŠA(V”b[ÚE}èߊA(–‡bˆéÃ,– båD”|§w‰ãU„¬ ƒ P¬4бó*d@Å +b4,µãP-sÇTÚœ7d¤f ÑäãîC(Ö×9y±À9̈×(!«ÅL`™ü¢kÚž®€bŠõ‰b”ð¢è2µ³«Š%Uÿ~úoê A1ÅʤXª_ œeÒì`»Á!ËC±¥¥%b!´ê[Q€Å +Ç‹ ¤(ƒŠA(D±>Ü×»Á!빫 Ë@1ÅB)Vy0bÙæ£T©ª0b)ZYYÁì!Ýe5ü b¡+k|j³ÿjÈ ý®irPL¹Kœdt³S,Ü—É–æülÅçƒ P¬/–5Þ,«}8Åè>‚@±œ7<æ0CVŠA(VÅÚƒÖjá7{['²ÔFI”c+æ¦Ø{gˆ‚K13]ÉñÅÚy.ÝÐzß8Wzî*Ï4èòb/V&Åhº#¢˜4SŠYD·öH#kˆbäÝ$Ñh:¥ðÔXž&''/@Ô_ kDiÆÖŒÇtµŽø*Íš\®`D¹ººz‚ ¾Ëß«iðÓÈⱚ)¦¹-“VS+e¥AÕŒ:‡jö…Dœ¨qÍ~}sa!$GŠA(ÖŠÉl—5¢”nKN}TÊLnb¡3ÃL ,î‡A\“ ¤)ûøâ'Ö]:Å ÀˆÕĦ|})àÅ ë!ÅÂo$¢ ÒŸËïÞøy±Þ}å(*67áÿlzúÉ•¸ŸýG˜k?‡.Ý‹+67ÉñéSv_/úÒ–øÕ-ò‘ô“ Öý¬àu@µŸµZ÷“>Üáz45®·úOÅ¡>>}¥)ùXîGb]§Cü_ g櫊ï°?Ím™„ Ù‡÷3Óú³nW¶< á›Ëôæ­*ð‡šå8åú Ô3GŸÜ{›ãSë…ÏP[€ë§=<ŽZ³…Ãbãµý ¼]Ö@;k­OWbq ·¡‹àþCú­ Ê=ÌMç R÷*uµ©§¢<¤9(ÙëHˆ7G }¥XÈNç8ü‘¸Öož—&¶-[)t(å$°¾Ùr÷³”µ´Þù^899©}Kùpåøæô"íÉ]†„À] ùˆù•i÷zLT‹üµÏäqü3ïI¦xg ^¬w=-Ü c¢6'?&¹õ¬Ÿ/k‡—×f.„ÈïÅ\«òlBîž«_RàgÑ WKët]h–ÇPný½÷ÞË‘4è©2mÔ ÷ƒbžOº\Š ×­+ëcȺŸ=²*Y÷Óõ1ñzÔwÛúáz>ñÝN=+ÔJ\›(‘b..˜y1UãI³j?Úþ‡d2í¹¬7~RP]VQ‹ßE±Á{1Ú]Z íCûµæ å™àßOëîioÐ\›çÄð¯j0¥õ#t1®§®(õD¡Ã'Ï6þÒÆëáÓQ±õøßOWTE»Ç»*¾z±Ÿæ¡H…”ÉVë§àÚ1ODéúÕI=Ôþà×ú]Ò¶NiSëF¹ÞµclT]‡ÝCùï:+$wäÎx~ð´¼!s¼òL [6ÿiæ?mÂÏØÁ\£Ô>xóý{~µLZ»R•üm‘GS{¹kO´IëoÖ8Ç~z¾.×àù~–µŸžü”t&˜¬º‹bæ×>ÓF®*õ¥ËDxŽdæëËæ©±Z~— ó³>õȘ„˼˜?¨®/œb.i§™Ú(ÐfcÏ¡öœ±• ˜ù®ä¯„'B¿•)žðóIî¶l`®Äoã¿Ö}ÐQ¹û)=YOåðwÇé!« „…ö^R)&WN¿sÖ/³È•xîÅ~z.ÊÌK`Ô`ž÷ZzÔÜŠz‰L3™-ͯPÅ<Á©vô<Áéµ,¾–ÔóŸ‡2]ºÎÔT”Lði¿y®ˆRûQ´nËü°¬ûl`¬ç†{j?gì ³ûfB1kv?ÐãÈ3ÉšÎ0ƒó,7óµæ j&†S÷30µÄ+7/i•»Ÿò$Ï•{mee÷­ç®+»o~…ü3¯lÈÐX[§¶-ŽƒÂ3ÜÙ}ë·Nfå]±¹çF”ÿåÿ£sŒÇ³ Y•ÿº™y¬B²û}Í‹eíßäït'ÿë¿lraØÓ1Gg¥Àý”áRÖƒc¥XøµêLû™»ŒÙ· ÷ôtª°FÖ§Døégv‰°ö´H]gjÿê}\wžx6Þw¹Œž‰Ö0d õ˜øO¤¡¹ÉsÛZjßýåà»)C¾ð®hΚàÈúrêX¿`½ÞO×ø¬Ù•,ß=aY•ïVÐR¾¥ÚÝQÅ¿íå„äïõZâ±rÝøë(“ýž€JÜ”ãÎ5ytúy¢ËÙ¹Þšk?CNÐ"Ý ËÚOWú9ü –j£Jùeòb¥€ Äï|)¯ÊôÅqÝ”ûVÿÀCTî½JÚ;0/Vî}½þa)¸¶ÒiÛ#_cî§™‹Íô¨¥uSÛPJˆ/À¹Ú9Ô%vL¯òЃ!Ç'ßþ—ò®ó a’zsá`FæI½õT;eKÌ8¤þFy¬rê~öîì,w?x\›ëPË£‘o@žÇrÞ{àCRZEF@²ŸA#”)ñ¿wºäÚ'/Ö»ùu˜bôT…ý•©ûÙÏ·@gÝ0î?ŽGÚ÷b½žEmb(&1Â~öó-`~ ›çøôœb˘Á‚ Á¥J›²Ÿù j û9ýÇ û7ðñ ¼^Åp&A4( ÆÐû A â5ìg#¸±OÏû‹!º„à%q|ªîÅ&‚QBbAù(†ìAU¦ØÕ«W¬Ô£“bAUVŠ#ÈAUP Ú£qÙqt :Ù½AаQ¬6²xõ³3¯VÏQPPP†«ŒÔ'„ hÈõÿÛèøHIÀIEND®B`‚pygtk2tutorial/figures/basictreeview.png0100644000117200001670000002027110050344475017676 0ustar finlayfcf‰PNG  IHDRÔ*²Ã5Ñ €IDATxÚí1hWþÇw`A®Ø"…»B†¹B†2¸¸H–¤ÈB ·$…%\X:–pa g6„½fHظ0’ #¥0’ c¹¸À$°) ÈÁ¦H©H… ÿï÷ÿÞcÞjvF³ÚYiGûùB~83³óÞ¼™÷™ßû½ÑûäÊcŸÎåë¸Z(êß¾A¡ *L6ÿß#ñ°{ÑgÕ¶¾¼\]ž(\øµP\jݽ¾¹“=»±ŠÅ&·zÚ_œÔㆡô0Û(°Ð!ÏÿñÚ܃+ã«_?^›ÛX}ôãÚÜæÎã_6Vë“OŸoîÔ'ÿõûÍÆÂw¯Õ'›ëß_h,4×ø ¹ÞÚû÷ßšëÛS?ÝlímOmµ=µ{ã?kfwŸîÞØ²ßÚòâÅóvðŠ—ï—ǰØÓm}ðéù_¿{½º¼6wÿ‹ÚÖñô¸a(}ÿ‰J7Æßˆïå©B*ÌùÍKA‘ÎÖ'U¼³ß_ªòìíÀþðAc¡µTÎÙŸnʶöºߥ;f¯<ê´w:wñ£¥V±zµ^™é´÷ÃkK­RóZ3jïb­Ô¼¾]]ï=ßøë¥ùÒl>jï{ïÙÞ›û÷¾û—Ùü|éÖ™ÚV§½ï¼n{?~¥ÓÞs•w^/5kŸŽwÞûÖ«¶÷³©•ñN{ßx¹X]jÝ~³ÓމŸc{?¿ó^»å±Ïß_›cïa{­%íujI=WÅêÁ'ÖŸº½uì ¯G¶Òu6‘àëwˆÐÉÀ× ò¢!ïZ3 yq@< yó¥hä ˆÑÈ›Í÷yQ{Z7ȳàLç» —eÔSçƒOžÎñ@ÇïqÃVzð9ä™#*Wóxš`{êç¾xä]ºcP»ò¨äuÚ›y›;ß½Ö\_›{ôc}²äæåõ‚¼R3ª+ò6V¿y©±à·Xvh-Ùi¯^iQON;øN²ÇÅ—~¾qá×ó°ÎÉþù7a;“í½t]»_nÔµû¥'¹v¹t#í“V®£n€_•$7 ½9VÂìöT·1¾í©ÿ¬íÞˆj¶öìÌå±//wz4ã‘7Kêå©,E1ô†w{oé~Ø+䩿I·…go·ö’ ï\%y¶79ê“ß_h®«å±Ûoֶ¿Uë¹·úã_ Úî·X·åöoïþ{òãeQª/Üo;#O¯¥¨ûë^áÁßãÒEžßãâK?ò‚žÞŸÒ£—¼ôŽà³¤ŠñÈó› ò|ëWBaÈîÁ·ý•ß|éæ~eFv±vëLefeüëÇ«AÛ"¿/ ä)Òwp`«Ç]ö0äuöò|P¾žuw]®ëÙƒâ_o©yåÑR«÷ao·øÐÕ©¹þ￵öäûÇTf>¿¶¥:ëÚÕò~‹iû øq>øün·×·]Ô5ªkï¯Æ%<¾¸×äù=îhý=yñ.Î ”Þ|šyю𠈯DäMçÞxYàs•ؽÑ-øìé{|êBB›ºŸɾgQ(~xm¾ÔXøáƒÖžÞÛ’jþµ9rC˜pžWÐ%voüÚØâw¿ˆµ­6w ƒ3¨æþ‘QÃ^]‘º™ïqø×ë£Vˆw3e¿UéÛSºÁ´¹þÓMwE6çµ{cmîésç‹Éº#ínú/êò½O6VýØ–›§3«—ﻎ­ûhç·gé_¿o,¨ž~‹é·Ý–[]¾{}eÜá)h1ܵýxsÇ÷L5¸Ž¢-~ ËêzíUT]ÖM ¹±…µjÔ‹'~r#¾Çõy~륿G÷q97½–®kOy*=|š6ŽºÝ6A<ò4åÜíä†>½‡Õm*3ö…”8ù€…âÅkÂÁlþZ³½}«Ç%ØrXŒÏbu÷ö¶ÆtÎýbÕÀ7_2 ´{ŽÂØùÕnºÝÎòÑÜy £êÌánìÈ:ÛbMÓ¯|?Î Š^﹊Ñ f@ ¼W|‹5 ]ƒ_ >&T®½ ܰT×b(œ/Ufî}â¶»8ÝgSÁGv¤u];ÃÁ#Õ’ª¡kkI{=”Ç,¢WŸÔc­+•ÇäýK^®ßò%u-~6w¾y©>iž» ¨5Ôþ~‹ùµJãó_Qú­ÕpcÕÿBMg¶g#˜Ü?Ï*]àKÚãz‡]¸ÇÅ—îYÝ•ž¼¿§K›ä×¾Ýí&¸8òÂàÓ2Þ†‡ºn0eÝÀË+‘gädhx«3èüæÙ·EAßųlPc´c,€îÆþñ~Ú=¾Àó²!¤|L{|Í×3OÓºÄÁÚêã꨽a¯ý·Ùô½Tÿóø\4ʆl›;Q]ºÝ7Œ;Ò Õ­“×'ƒøšßž )¨õÂ×âæÁÍ·UT.y¹þä•JÔ¯Aÿ%ßS´JWååµ×*ü íV€¹[7ûhÈSwõÁ§B´µÏŒ}ð-µ>¯.W—m2¡ºlÑ%Åøüé |вiò¡=²cÞŠ ?k[z‡k £oµÊc4©ît|³ù•qûBÍG¤€¢ºYœ±>)ÀsÇyáëµ½‹µ0øÜÞKwkó%ù³Á'Ä/µìƒ·W0dàPäQ^ž®T×î) h¯ð¤k€©I!ÕÜ÷Î|oNA}ÿŠÂ-Öm¹~ ·ß;C­¿]1YáÒ¯s¸ý¡®{¢ì~É쬭Ìwìô+yš‚¯^rá3Ë¿³Wiûv7×ãŽÖíƒÎXKRz·ÃêtKŸ69ÚµG‚O—ÚÈB¸ÀgÞV'{}ÛýÛ€â:yTŒOxÒ¤„á²ý#Í:_#ð Í«ÌÈ_ðgúú¤¾›SŒ¯3øTCë0«í_äY)nV×¢{‚‚CÞÁëU‡‘ÑÉã³ßjP¬ãÃàó÷ ŽŠ‹ù×¥a©°¢kw ß½ÖùH›ÍÔŸîùµuóÅAœÎo çA[„4ªÅ’—;›ÿø•µÁç2Îÿ äF£X¸]­ñ9˜ZKV—/U|×óÏož°.×_TS¿èyn¨{x‹/ýhÀ5뮫—ÒÃuˆ÷1“ /|ö3p<ÈÓ#îƒÏß•ñ$Vu|DFSþûÖÿ•ÿ©ÛbQ6w~7EœÓþíø" {Õý¬‹:x¹/øÚke[Ô%Â×¥‰u0ûÁù\ó¶þVupŸÑÜ«ú(RÖ~]úžÎ @¨þºRÿHÕ\±*ÿÌšLp“*ò7ílþ^¹ýZ¾`o7åZÍo“nÛªS­ü6‰³Î“5´¹Šô<wP¯´¨§7øèçäzÜp–>wÒã©D'ð©Ã'±z°ú·×fN£öj^õdöZGív¯>fo¿÷Æ?9 Àwr=n8KŸìñT"¼,•Ť,Õ?kóqGß»6wšö.ÖØ{{ÃÖßIõ¸á,½#øtR½û[¼UñÁWS8‹=ÍÖï${Üp–Þ|•™OÇí¯,ÛúàûïXì©¶zÚO¶Ç gé²#á%æÛÇÛÁìÒ „x‰f>µ|ši=˜®ÁÞ‹Åb±ƒ`E*À‡ÅbàÃb±€ða±XÀø°X,à|X,ðѸX,ðõÑ®Œßÿbe\uã¦b±Ø_uùö›¶RÅëÏÎUômºÎ9:ý»ÉÑés•Éž«Ø‚9µ­aŸ–Z,ßyÝþ.ÅZ#W~ùÝ\y©u}{©ÅÊÅf|ó¥+æK##¿ÍŒXg^¬)g’–šQªàêògS•%6ð yçS?Ÿ«hÁÅÍG?n¬êõ`Ë‹W—yd±ØÌ€O‰BôÛÅÚµ¦åCHZEý©°RØù~ÐlþâG–TÛ >mÑÞøíîo?~¥<>‹å%©œâ}QÞ_4&-ðù[|ðµû_qà‹.+|ñŸàx|Xlæb|;ýVƒÓ4<¾«õ¤_¿&ƒ¾Ãb|6Ì'ƇÅftV×§3Ìæ/Ý™Í+š&GÿVtžN1¾^Ib|ŠÐ-µlP¼±úðÛµ9Í™ød‹Õ𬮵‰|=fu±Ø ǧ!ªMLüïøråÜŸråBñ­W§sêðí³º†7«kG&™ÕÕ…> ±¹Ú³£þ„Ã ïø°Xþr‹Åb‹Å>,‹|X, ø°X,ða±XlÁ§c±Xì`Ú”Á7‚BQjà+/ß/a±Xìà[À‡ÅbàÃb±€ða±XÀø°X,à|X,ða±X,àÃv°K­Ïß_›+5¯5+3IŽ/V¯Ö+3õÉï^k®ï?Ùo½x±{ãׯþ“ÚÖƒ›;´'{bàëýÃÂáizµçbí³©•ñ$Ç yÍõÿ­µW¬^yT™™/Ý:SÛËc_^^›ãÆbOÌãóO¢£!O¿­.›¿³{c÷éî CÀþ“ÊÌÝëíO´=õŸ5ã|¥êò½O6VÃç¬m}ýØÎiÇ,µn¿¹2¾XûtÜÖRþéæö”¶[‰VVç3¨ƒ”¶4ž½ÝÚÓ1þöý'Ïw^¼ØX}úÜÖaî|¥ò £@¹±úÍK“‹=á¡nüõâåé ™À´6÷ø—ú䋆 Ý Òàå*…6²Ó9·¿Ú½1_úø•ÚV©y}»ºì`N{uülþÖ×~­l0ë ©íó%ûw·Ÿê¯ãýë’­.ßÿbc5|-X,öÄb|Qøë}`ëûVgä.F´¨H™†:2|NØhçßXL)ßÊïzÚkÕÙº_TmƒFïÅb±'6¹áŸ!­X^8Â@˜Z{?ÿc{jsÇ"exFÏ?§†É_}òû –ïí õA_«£ï0Ï ‹Ç‡Åè¬nºÓaphXêoWøß Hoî»zjoðùÞV:Ýâøhà+Vãc|$ƇÅÅç,a”(Ƨág¡xåQ;àôoEú4!b.š?UÌNÞ¢0ä®ãÏU[Mk$ŸUéþ¬®b‹òõ˜ÕÅb‡|nnÔæj5ëªi‡02üiaÂÍÒ ”qØÚê“6@VY–;[OL¾•ñ‡ßº©˜pLïø°XÀ—ÂwpX, ø°X,àËøô¡Iò?ùÂb±XþV‹Å>À‡ÅbàÃb±€ïð¼º!4ø|!ÀøB€ð!„àC>À×µìïsB€/cR›Ô'¿yÉHªÍ§Ï7w’/Í´RúÿÐܽ^ÛÊ•sÊ•' |8Q #!À7DàÈ’cîhà‹/EÚb+µ”š½TjŽNÿnrt:_Ï_Ì×+3ŸM¹µüÒR®üò»¹²ð§E±N÷½ÞX}ôãÆêî [‰'ÉñÇy/à8ð)’LÿÀ§n6ûóo¦s‚QsýÙÛÍuu¼µ9»i_ûã_6w¸×'{/àKAÍõ>h®Šo½Z(ŽNŽý÷¿ÿ·Úî ks¬ÍéùmÎÖ—~çuwdrOã|ã¯çç*“ÿ¯Ìè¸>ù¯ß×'ÏU^v®¢íjɨ3ÄßA·=¸^×ý½ð“ôfV')VßýK±êmlÉR—£Ãï6êÆ ©Ëi{cá»× IÀçʵ¡Puùó÷Û[2Ù€Ú:¼ŽÔ ëà vñ¸è«ÔìZÔ9µÅ²ÍmO CK­ëÛK­£y|®­ìê–áÙÞ$]ΡóðYMüàZ“':F°ó÷ʧÓ+¡ðùþJÑvµ|T¤,ªþ¾¿¦-:¿`ª+òmøÕ’äv ¾Þï|ÇÞµ-w¥‡nÕºŸÞ”-ºäŸ³“—ÌÀFAȈê:ƒCóÑÁ×~ÖÂa ê.h ªH™žQàóÏ©–øä³‡­_Kr»÷øz½ð Ç ˆú ¾v¬ÀµÇ•l¨Wºòè°¸Òñx|~Ý|O¥+ºö¸£¢¢ású¾s:G»ƒÝ‚¯÷{߉ŸàWÌH](ü%]ZàS'×÷ˆ•¨é”nfu?¼Ö>“(|Ë¿8l&1˜¸Pçt1>kEÁzñùÇ/Ö®5k¦ÊYÀW±6¡_1Ç0Ã-£«Vmå-úÑC¡6þ Qµu³±Á°ºŸ÷¾c—üŽ/~V·wð…ÃÞŠFùñ ãùŽÏÍêÚµGÍêö>77jgÖ`VÓad¨å…0aBÇwò:¶ŒÐ¦²Ê’u“¿uñÄäà+Ý:SÓ“Ž öã^ À‡2¯n¿ƒCð!À‡àCY“†‡Éÿä !À‡B€!„B>„|!øB€ð!„àC>À—ªÈ²†àˠȲF–5øH6”sýK6¤Õ\fó—îÌæ£þým,YÖâÅê,€o¨ÁwœYÖ”›BË.õ; YÖâE–5À—1e1ËZZ`"ËYÖYÖ2“e- ð‘e,k€œ™Ê²Ö;øÈ²ßzdY|dY;IÇŸe­wð‘e--ð‘e ðeÚãËR–µ¬x|dY#Ëàè_³¬¥ã#ËZçÚ’e ð‘e-eð…ÃÞG˲6Q¿7QPõg!µ%IÔ’,kQWG–5ÀÇw|¨k‘l>ø|è´‹,kð!„àC!À‡B€!„B>„|!øBð¨È²†àˠȲF–5øH6”sýH6¤…´ˆÖSÑ:"çS?Ÿoh½™t¯,kñbuÀ7Ôà;ž,kêfZÇØaȆÒÅê{ï«J]ÔŸk'ËZg‘e ðeL§#Ëš¤¥ü%ããE–5²¬>²¬e8Ëš4›¿øÑl^0=ìX²¬‘e ð‘s#ãYÖäÅâI®…,kñy²¬>²¬‚¤“Ͳ¦n¬Á²< d¿"ËZ:à#ËàË´Ç—½,kBž†“þà1‰È²–øÈ²ø2ãËV–5wëðò˜„ß&‹ñ‘e­smɲøÈ²–2øÂaïn³¬ùGF)ɵ“e-êêȲøøŽu-’ !À‡B€v‘e >„|!øBð!„àC!À‡B€!„B>„àK|,¸ˆRð¿(u›»K«°Ìæ/Ý™ÍkÉuþú¡öøÀ_Tû$‡—²Oha¥aËs†P†‡ºéâoxrwECð!4ðàKÓ» ð!”y𥅿áÉÝøÂ㋉‘ÎÜ]€!b|‘:­¹»B™_?fu‡-wàC(3àë߇,Ö»k¢0~o¢ rýamñዸ_ÿ†º!tÂàë·BhèÀGî.„ÐÐ!„B>„|!øB€ð!„àC>À‡|€!øBð¡ÎJžeMKciQ,eüк,çS?ŸohÍAÚ¡ßHÏž¦O¾È‚@ÕšÒ‚ V,Vß{¯X=W™üç¹ 2B'ìñu‹°£!o˜³¬IZ¦AççQFh †ºIpÖ‹—7ÌYÖ¤ÙüÅfóç~=ßàQFh À6²¬õ>ÕP^'k/#4pà cŽ,k½€OHU\OÞ(1B ¾t‘ŽÓeMÈÓÐÞÈ#„|éjx²¬éü‚¯¼W•ë[e„†|ÃeÍHòB€dC!À‡B§|dYC øBð!„àC!À‡B€!øBð>„à|!ÀøŽ¢çü­ B€/{ò¿Jþ«¨å°Ò-¥ÿ-¸¯U©µZ5 ¾!_ü_ ‡1w4ð%OH¤…³´rŒV‡ÖBªé^»Ÿ±Ä%?:Í"à|] I+÷ùÇô|êlJc¤î×\övsÝ­ú¬ÞµKlq¯ý×ùð_Ƥwr¡øÖ«¶îž½«eµ%Ü⳩%÷ø)¥ R÷Ð*ÉðjžHÔ‘ZrU5Œ¿v¥LšÎ½ñòtÎÏEç2ÀYÖúÏ~~¸òØÇ¯”Ç’€ƒ|xäÃ|'½ŸÕI”IÃÚ„ú$ɦ–|®ÜƒI‹ºP[‡×‘áÅñµbs8Ÿ\»5»R[´¶³0¤ vGóøÈ‡G><À7Ðqœðbôñ9>›Zðù9=³½Iºœ;CçásT>9_þýá…ìåÓuZ§º;ð‘|x€o ¢¶å®ôðÏM’,1Ÿ|š|РìhÑ%ÿœ<¾`6z fȈ‚£ÎàÓŽ>òáÀ7à_0 ê7øÚ±7>r×㳡btŒïÊ£Ãb|Çãñ‘¾Žñ)À¯·´ºPøKº´Àç2¨™Ü"V¢¦Sº™Õµ„Jþ¬®ð-_ï°YÝ`âB t1>kEÁzñ‘|x€o@%¿ÃŸã‹ŸÕí|á)E£üØÖñ|ÇçfuíÚ£fu{ùðȇøÐ‰´Pð!À‡àC§]äÃC€!„B>„|!øBð!„àC!À‡B€ïDE–5„_E–5²¬!ÀG²¡D˜ë_²!­ 2›¿tg6/õïocɲ%²¬>Àw¬YÖ”›BË.õ; YÖ¢ÁG–5À—Ae1ËZZ`"ËYÖYÖ2“e- ð‘e,k€œ™Ê²Ö;øÈ²ßzdY|dY;IÇŸe­wð‘e­à#Ëà˜Ǘ¥,kYñøÈ²†ß@Çø²˜e-YÖ:×–,k€,k)ƒÏâõ’em¢0~o¢ .êÏBjK’èYÖ¢®Ž,k€ïøP×"Ù|ð!øÐiYÖàC!À‡B€!„B>„|!øBð!„à;Q‘e !À—A‘e,kð‘l(æú‘lèø3{‘empî|¾ãɲvü™½È²68÷¾t:²¬IÝfö"ËYÖYÖ2œeMê&³YÖȲøÈ¹‘ñ,kÝfö"ËZü@ž,k€,k‡ éd³¬-³YÖú>²¬¾Ìy|Ù˲ÖKf/²¬¥ >²¬¾LÆø²•e-Ì^dY‹«-YÖYÖRŸ?Ä;Z–µ´2{‘e-êêȲøøŽu-’ !À‡B€v‘e >„|!øBð!„àC!À‡B€!„B>„àK|üI6BhHÁþ¢”džÜ]’†´~éɪÊ@Œ¯C]„:aðõ[€!4tà#wBhèÀ‡B€!„B>„|!ÀøB€ð!„àC>À‡|!øBð!„àC¡ßlþæ~uy:÷áµÅZØÒ”¡¬HÔ 3m$¬ÊÌÝë«a øBYŸ&üùì>ÿ ÿPš!øBð!„àC!À‡B€!„B>„|!øBð!„àC>À‡|€!øÚÁ¿N_ZV b±Øa°ý¦J¼÷?äµöŒ‘Iðµf_/Vgæ…Ðð¨$ S% yÿ#^rðõêBá%ï±Xìiµ'Å™àóñç;€‹Åf|áEçÛXçÿ¿0ûg•‹Åƒ=ž™Ÿc(ÞA„ÊŠâÉöÌâ\7ÕwQ2IEND®B`‚pygtk2tutorial/figures/packbox3.png0100644000117200001670000003676710227354655016604 0ustar finlayfcf‰PNG  IHDR®rÔŒ~n pHYs  ÒÝ~ü=©IDATxÚí}gxUW–¥¿ééžê\SUÓiª»§l—ír¶É("e!”sB(ç,PÎYB9!$$‰ ’HL0Î.§r6ŽåL÷hkÕû¸pÎyõd‚ ûüXŸ¾»î}÷ꄽ×Ù'ÝóðÃÆÆþþ*¼‡'Nœ8qâĉÓ‘|pölooÞ£‚3gΞmbÒÓ³yóÞ‰4>þ 7zÈØ8$dݺíÛ_yE‹ÝÝ;v\ÆááW_]¿~xøµ×zz€;w¾öZoï®]ŒŒŒŒŒŒŒ?ÂÃ/ÃGÃ_k=¸Ö³Ããß|¥q·!ÔJ Þ#ÊÁúúÖÖM›~ÚOGñòJNÖ¢·70%exØ×7%eçN?¿ÔÔ]»üüÒÒvíò÷OOßµ+ €000#cd$ €3222222^_ÔúYø_øbøeøhøkønøq­ggQxóJO”†÷"ssËË×­»¾hˆ(47÷ö®¬Œ‰)*Ú·ÏÝ=1qÇ`RÒŽ ººæçgeÕÖŽ{z&%íÜIÕ‹ª¡±±]BBaakë±cTQuhb¶¥EÆššÚÛ'%åç77=*²óæ98¤¦æå559"²óç/_žžž›ÛØ({ÖÌÌÉ)33;{íZÙ³ º¸¬™Hõõãã"»h‘«kNý¿‡‹ìâÅîîyy552ÖÜÜã°0-­ºúÐ!ëéY\œšZYyð È.]êåUZš’"g-,||**’’ÊËe¬¥¥Ÿ_UUbbYÙ"kmP[_R²¿ÈÚØÖ×ÇÆ‰¬­mPPCCt4Õ ‘µ³ ijŠŠ*,”±öö+V´´DFìÝ+²Ë–…†¶µ+{ÖÁ!,¬£#<>©©W^7/?«~/’ì›·mó÷×÷ÿffÊryE¬ìYWרØþþ  y)PmÜ,/A”ïŠkÖÈJucåÊìly½Šˆèî “×+ª“]]«VÉk¬®>ççO½- EEÉY´ÁèhyDû%Û.kÝúÛ¾În”–Ê솕•>›{•œ\Q!·uÞÞ¥¥©©UUúìdU•ìYØØôt¹…}ÎÌ”[oØöÕ«ëêd–_¿_€OÉÉihPû£¼<¹?‚/ËÏoj’±ðƒr?hjzÙ‡zyiYò¿ôËiiøfjÃÃ@ønss/¯òr­g7DÞ|r7¼W”†…sæÍŸ¯ú¬o¾ùöÛK—®/êÏTrê{÷º¸ÄÅ iÑÌÌÍ­ €ö®®ññÛ·ÓuBúÛÈÈÚ:!!7— X-ΙceG¢MÆÎkc“@ l|\dŒlm“’¨¢>,²$CSR¨aËX“eËÒÓaDÖÔtùòÌL’t‡‰ì¼yŽŽ«W§¥‘1Ù œsrRR.ç†ÍÌ\\òòH´íß/c]] ÊÊdìÂ…nnEE0¾"»h‘‡Gi) ·È.Yr¹Ù‹,Éýª*ˆ6‘]ºÔ×·¦&"‚•ÈZXøùÕÕ‘,Û³Gd--ýý×®…,Y+«ÀÀÆFr®»w‹¬µuPPs3d™ÈÚØ·¶Âm‹¬­mHH{;D›ÈÚÙ…†vv’\‘±+WvuAx‰¬½}XXw7zÞ"»lÙªU½½$€H”\Í:8DDlØàëKÂKd—/ŒÜ¸}w‘utŒŠêï‡üY'§èè-[`èEÖÙ96v`]8‘¥Öºm››[B‚Œýó84DÏÊX—ØØÁAÕ{cb¶nU}³“STÔæÍªÿ×Ñ12rÓ&D8d9Iùìã#ÏI‡ðpuQ öô¨Ê×Þ~åÊînUÝ zÕÕ¹/«“+V´·£« «Ï!!mmªúLm¡¥EÕ¨55©Ú‘¥e@@C‰T9ëï__¯j¿ÔökkUmßÜÜǧºZe7ÈæTT¨lÎâÅžžee*{µh‘»{q±ÊÖ‘%,,TÛI²¢*Kö97WeŸçÏwrÊÎVÙvX~•_05upÈÈPù{û´4•?22²³KNVù2òƒ‰‰¼ùÁ9sàaå^’ž…À…_Ö±ô÷Â…îîEE(#­O×/ *r÷¼ ðO¢©»{Ó¦ÑQÕg½þú»ï~ý5ð7€ï½÷õ×o¾ |ÿý¯¿~ë-·ßþàƒo¾þáÀ?üæ›wÞ!|÷Ý>Òá©SçνöšêQEcb¶m:9R•‚Ù·ÏÑ1:šXÂåË£¢¶m›=ÛÊ*)iõjj$¸¢Å™3ÍÍ££QYe¬…E\âp";k–¥eBBf&5N‘=ÛÚ:))#ƒúˆ"K ,55-"m"K3=&Cdíí³²ÈÜÈX‡5kȉ¬©©£cnn\A‘7ÏÉ)?SÆ:;ÆÄÊž?ßÅ¥¸‘]°ÀÕµ´4"‚""K%XQ±jE5D–„fUœÈ.^ìåUSºfÍè¨È.Yâí]WY&c}|Ö® &÷)²ææ¾¾ÄÊž]ºÔß¿¹ƒ#"kaÐÚêïOq)‘µ´ lkÊÈZYut˜ ˆÎÕ¬µupðºu"26$¤»ÛÓ“ÈÚØ„†öôP$OÆÚÚ®\Ù×çæAs5kg¶q#±²gííW­êÙeËÂ÷l!ù54$²‘‘ÔfeìŸÇÁAm{¿ò—#"¶n%+!ûeÝWÅÆÊXýÿÑåܱ¶¶¡¡½½îîò|Ö•‚¼ŒP‚^^$Rå¥ßÕ¥ª¨9ûªZ§ª“þþ--æ“Õv?¿¦&MUKQ±he!!$Ceí—ZèŠòºh‘§gu5µnYÛ_¸Ðã²ÑP‘53sw//Gü^n‘JJ"#IhÊ­YQQt´Üš‘,( K(góòT6–ºú99 4¢²ÞÑ”±dù33““å–^c;";gŽMJ b–SõVðtYYrOG^26VåagÍ"Jì•Ï¢ÍR^忯Äï¦.¥Î§Ã¿«DáO¥Cî¶÷B^±Ÿ^ŸõÞ{üí·†ˆÂeËÈ ©Ù—•QrÏ{{r-öövv„³fYY¥L¤ªªlmÃ÷nµµ]µjëV§žZ¼8*Š$ÝÁƒ¸¢Å§Ÿ^²$&†šŒ6ÍÜ<.Žšß";}º…EBb–";c†¥eRš½ÈΜimš I'²³fÙØ¤§ÇÅ•”Œ‰ìœ9vvYYt2ÖÞ~Ím{÷Šìܹ˖åä 'EÖÈÈÁ!/ýx»|yAAXXnîîÝ"klìäTTI'²¦¦ÎÎ¥¥™Ùyó\]ËË)ª12"cÝÜ*+iØn×.‘?ßݽºšb-4ðt5»`‡Gm-â4"kfæåU_OCœ2váBoÙE‹||šš[ÙÅ‹}}[Z0\"cýüÚÚhè„b6W³K–øû··Cˆˆ¬¹y``g'zØ"»tiPкu$€H”ˆlpðúõd¦EÖÂ"$¤·wùr2Ù"ki¹bņ ÔEÖÊ*4tÓ&j›21j„¦ªÖQ4TÆê¯±úk»þ–¢¿•[SCñNyûus«ªRµn² *Ë`jê⢶*&&NNÅÅ*‹dlìèXXˆQ¹­ËÏ'K({–ìdn®ÊŠ’ÍÎÆH×T­÷ìÙ¶¶4©Ffùõ{™3­¬’“³Ôç­dì´iK—’§#*cõyIò¡ÑÑš:ÿ>0¤ÿ7#Ò¾{Ù2jè"’Ü//7\Þr·½8Qx}?ËpQS®ëRÓ%!88`g‡ gc“‘X¹‡Br+W’\´(::=æˆXYÑ-‚EKd©¢ÇÅ!†'²$’’Hð‰,5?Y‹))$ød,5ûôt sˆ,‰ÅÌLÌÔY2(«W£O,²$sr“r67ƒ>"Kf.?³šD– hQ†¢D–ŒoI bx"kbâì\V†ØƒÈ’ѯ¬ÄàšÈ’X¬®Æì19[SƒhŠÈΟïáQW§›‡t5»`§gCܧȒƒljÂ@¤ŒõönnFôHd.ôñimENd-òõmoǰ‹È.^ìïßÙ‰x˜È’˜X·ýr‘%!²~= 9ÔÛKÆZÆ’”ìëCëY’’7R{”±$¼úûÿ{2}ôÑ'Ÿ|õî¿|Ï–-h³¸òÉ'ŸþÍ7¯¾úÖ[Ÿ~*þÚ•¿ºy3Z½ê½ª¯¢oذAõ‘¤Sç†.'É:ÉK¡»[U T‚]]ª$Á×Ñ¡*}ªmmº\Y½jiQÕ:ª“ê«¿¶“¤[»VÕR¨KVW‡ˆæTÛ ©©«kU•ªu›˜¸¸TT B/³*NN¥¥—Y$GÇâb•Í!{UXˆÁq™%$[±(³±d'UVtöl;»ìl ˬ7ÙgŒ±È-FæYʼ†•UZšÊkLŸN>bQæ­–.ML„—”y:sóøxD%å~06Vå%Ÿ|’|( :Ÿ«ó¿Ô*I¤¦¦BàÂ_Ãw£ÝÑ4°²2„ …7S‡èo``t4ÕL`LŒ ƒ‚¯ï{ñÿâ½âÿ‹÷^‹îš’(4ô³´Å Ííg½ÿþÅ‹†‰Â .Wm\}##êÑ,]²´Ôá–-TY£¢0WÃÂ"4tË->ñ±¨è"ûä“‹ÇÄ  ‰ìSOQ‚àÙ§Ÿ¦æ‡Æ)²Ó¦YX$'#þ'²Ó§S³GRdgÌ “å";s¦MVŒ‘ÈΚE¦ fNÎæä ?-²dóò`@Ev·ÂB_‘;wùòâbÌ¥Y##2눈¬±±³sy9b"K£²ËDÖÔ”\fËÉÙÚZOÏää;DvÞ<úz¸O‘?ŸÜ'&GËX/¯ÆFЇÑÜǫ٠H,Â勬™™O[†8EváB_ߎD­DvÑ"?¿ÎND¼d¬¿ÿºuè‹ìâÅ$qвDvÉ’GÄÊž57Þ°¢²g—. Ù´ÉÊŠœDá{ï½ÿþÇ?ðÀìÙ¾¾K—®X±y3Z«ö)Ý|pñâÛ˜„„È~Y÷,É;ù{áœTߌÆTÿ_äl‘Œ%9ˆ‘ y)tu©Jåëä$/}]ݠȢŒõöniÑ͸ku`0ƒSUŸwTµˆEY;"9¨f© bž¥ªý"î¨nû$UvË}d6‡ä "‹*{…È¢ÌÖ¡ëKcµT³ÙÙcQÙg•õ†mGWª~A¿O?Ry+ø2DU~ã`2öjJ4BjÑ¡ðƒh‰4v§óÝóçÓ€><;,a¢ðzÊAý:Äý£_þ8ý3Õ÷jåർwÊ¢ÐÏå µŸEÆÞ0Qˆ¨•®‡A• Sä)/O-Cu´°X±‚*:UåÔTZ_Fîaóf->þ¸™YTâ"Krpÿ~»xq\Uô±1‘}ê©%KÐ+YjœII±±Ô°E–vJ þ#‘¥^`z:â"K%3=W‘%c´z5rRÆÚÚfg¯\I&RdÉÌåæÂ€Š,‰Åü|_‘%ã[T„øŸÈ’X,)Á¬&‘¥^>¹|"K‚Š 8ëì\UEóðvìYWךÌÃYrcuup";ož»{}=­N¥éðW³w$9H‚OÆzz’$—/²ä¶[Z0ÏFdÉå·µaFÈR|¨£Q+ëç×Õ#²$%×­CËY’8ë×Ô‹ì’%}}0÷"KqGŠê$ÚæÍW‹B´VñYñΫïéï§g¯|Jõ^ÿ™þßžÕÿK>ä†ìY䤽=Y'Y)øú’d—— ¾övUùRé·¶ªêEøš›Ñ‘ÐW'e,ÕgêÞÈë3µ…úzU[ u«ä, ¾êjš+)c©…RwNÞ~Ið©Û> >êFÊíÙœâbŠ,ÊX|*{E¶./OeëÈN’TÙI²¢jkm•¥²Ïÿ£®¾Ü¶“åOKSù^ÉÉ*ŸBñ¿ÄD•?"/©öe:?HRRdŸxbáÂèhò¡W²h•𿉉$á—á£ml¨Ý™˜ïFxBëÓ …×Wê×!úßkˆÔ*Ÿëõ^ü§?N†¢»¦$ ÿüg. …0ÁZ¤ÅÅ´ÂþÔ/!×BƒA¨Žº~ÅÈ õ÷|þüˆˆädªèÚë:–Ä"Uå±1‘¥fCS†e,5¡¸8Ì™Y‹‰‰˜ª,²Ôt““£¢È(ˆ,‰Å´´ÈHê}Š,™ŒŒ Z´±{·È’¹Y½šâ££2ÖÆ&;›&}Œˆ,IÉœL —±¶¶yy|";k–½}A ·È’i..†ÑY2륥>>{Yr ååp6"KŽJÆ:;WWÓà­R¼š56vq©­U±$%ëëá\E–ÜgC–VÈXw÷ÆF8u‘¥HLs3­óY’’­­"KR²­ BDÆz{wt Õ@f}ø! Ý–•utœ<ùå—_}õÝwo¾ùNC{º’‚8}úùçß{﫯¾þúûïÿk2áNŠ»>L¨§CEõõ}}gÎüþ÷o¿ýÙgßO¤K—~øáÒ¥ÿú¯wßýðÃ/¿ÄæøeQêQýÅS55ëן>-Þ™’’›ÛÒ‚¯}ãwÞùì3LÀÔÆûû×®¥oxç>øòËï¿§÷ão\‡X´(  ¯æ<ã÷ñͰqqƒƒß~ûÝw?üÐÜÜßîœ6'IÒuwÓÿ‹8¢î ‘ŸÅÅ--GŽüñ—¿P›ŸccÇ¿þ:î§9ÍããÚ_îëÛ¾ýܹ·ß~ÿý/¾í•~K ­—•¾®æÈëjÕIkbâæ¶v-º(òÚ^W‡ê–"gÑÊhy“Œ¥ö[Y©j¿ÔQ,+ò*¹e()Á0´ÜªaaÌ"ÙÙ@,ª¬– ÉídN-‘³ÖÖkÖ`é›Ì>[Yee©ì3¬7Ä¢Ì/,]šš ±¨ò‹2Dቸ8†Vy«øx¹·Òïéà%“’HðÉž53‹Ž†”47‡L$D+›;×Þ‘T𣩋êÐ0Qx=åàTÄ™\ÿèïÓ?†ÿ¿S•ƒ×Yª @”€Z?ˆÌ¨ …WNF¦ Å—g¼QU»‘55%—ŸÈΛçéÙÖ†~¶ŒõòêèÐ-, +%$¿~øáðáãÇÏŸ?|ø™g^}×GFÆÆNž¤§ÚÛ½¼š›7m:}ÚÅ%$¤¸ØÓ3447÷éë¯?üð£>ýƒïmm[¶œ?_xå•×_ÿàƒ˜˜ÌLZ—UT”Ÿ_YÙÝmllmƒïÑJ½ßý޶Ázé¥×_¿xñôé Þ}÷·¿1ÃÍmÆ rÞâ×1úµªøÉAUŸ˜†HrsUýiš^­î‹Óu?~î\}1š®ŽÐ@³:ö@ÍUUª¸-p©©QEi€Œâ%4,ªc-˜SÅihP¯©IãA|HtpÙ2’ ªè  €j¯C”|þ9‰G52òö63[¾<- ×?ýô³Ï¾ü’Ìzd¤nQB{»ƒCHH]ÝÊ•YYo¿ýÞ{Ÿ~Šûx`Ö,oï?¼xñ«¯pÅÜœdÆï~gdDñžòrDŒ(“›K_ÕÙ©…ýý_ýÍ7ß¿d‰³sjê#Ì›F3ö®üÚG‘-9°˜˜?übl¸>ožMx8uᢣœ""zzpýÍ7)‡hr1°/¿$™ûÝDúþ{ÜW_ÿÐCsçš™ùú®[‡ÜóÙ/¤©&±±”Ÿþå—ß|C¶ô»ïhŸÔÄÄÚÚžžgŸ¥/øþû'Ÿœ??0òEl˜j޾¸2‰EuLšÄ¢ªÆRm¯¯WÕvÖG׃׿§Ø¿ªu#vH'aÈc‡4æ@VE;´·/,TWØÙåç«Ç:ô“è·¢úÇg,-33Õ±C}ãBähŠ‘ÜkÐr¤$ÕxÆÐTÞŠ|Yl¬ÊÓ]ŽÿÉc‡d7h‘ŠntNç1üMói6$ä –”A’g§ÍËh¶úè¨á¢ÐpyY|Yœ®C y¯þxä{¯8{íÿï”E¡!áYÃåàÇ* ±îŽP·Ü„b$ÆÆ99ƒÌ" ¤ ¶d”ÓÒè¤ „¯µHëŽiE-%Yj`´ ³"®fiÝ1MÝ¥>“ÈNŸNó<è«d¬¥ejj\5]‘%ƒB«ÏHÊXšªE&Cd±®-"‚"‹"K«’i¡ 夌Åj2s"K’ŽšÐ*?‘¥UɴЄ¤¤È’¤£…&ÔÛYšZVF†›Î>¹š¥í$**h yxXdiUrUâ"KÛXÐBŠ;ÊXŠuAJŠ,9W,4‘±´“fb‘ Y33OOšÔOñKs±‰ÈÒ† ´˜€¤¤ÈÒÊSÝB‘¥Ht³ÖDV+Èî¿Æ º®‹xý0™~ûÛ™3==ipgß> þRÛÿᇗ^úýï©•Ó߸ÿÞ{Ÿ~ÚÙùÒ%&ÖÉÄ™3ÝÜ-")©}/mÚB >¨mâ΋imñ=øì³/¾øê«Y³–,Y±‚VÝvuMõkIÐ]º„ë¿ýíôé®®ºß¡…&Úû)þçïß§•Å6 éâ…¯¾úúëøÃ}÷M›æâ‚ùpX³,æ$­,^¿Þð/ÄS;v8ðÚk`ióû††×^£µÕ6lß~òäý÷OŸîáA¥OóJ奯«´ÁŒ¥z…é ú꤬Ƣ>£ã¤j ê–BspU,Ú µP‹ö‹ŸªíCð©ìº r›SR‚¹ƒ*{µb…Üš‘­£…&«W«ídX˜ÜNÂÆ†‡Ëm,ìsd$uæU¶=:ZeùáhͲʧÄÇÓ`±Ê‘·Rû²¤$9«óƒ4,cɇ¦¥ÑÉ1¸Ï „LL,.¦íoH¢³ ßMžÒRø#øtCD¡!«Dyœª¹5ß+L.C Ñ]S…?f´^õYüÙg†‰B¬ä‚#Ô"ÃQT¤Û÷ˆÖ ÒÌ*Úª†b‡ºÍ9u+ž.㌴W6©Yj~IIXQ%²ôË))Xº/²³gÛØ¤¥QJÆÒ^M™™X%²4ßbõjüG"Kë¬×¬ÁV" qŒmDÖÄdùò¼cGCU[ ‘J-EÞŽ¨•­]Kk‡eÏR ­«Sµ_jû55ª¶ Uv{b±ˆÜ^•–ªìí¢Z\¬²uúí$±ùù*kl¼|yn®Ê>“mÏÉQÙv##ÚqVå°ß¡Ê§Ì™CûªüECSSU¾ŒöýMN¦¥$2?8s&í¿K>ôJ²6ÇÆ³À/Ã`ƒ'Ú†¦¸X·‘øeŸn˜(¼y:än{ï”Eáõý¬‹ …ºÃë.#\YU…M`¬©oM‡PEGã(9Ýaq4—khˆfÞèŽßINÎ̬®>|X{]ÇÚÚ¦¥axKÛoB,Ь±ñ²eYY*;×£ù‰,;’“ƒÙ"Kûéçåát`‘?ßÙ¹ €©eì‚tîMFYÖ¥¥8ÕTÆÒ½ŠÅ©$8?@déd‚ª*˜W‘ÕJB}D‘¥SIêëaÖE–NShhÀy "{ù$9ëïßÔDÑ9@g<ÈY œ‘ž>2"²––AAííX!²tòDg'ˆ,iAg–àÚ«Y›+֯ljÞ2VwZÆð°œííÅF$ Ÿ|òé§Ÿngç啞>0°wïK/áúÚµmm4Ñ{î\ÿ³g_zé£p½°°ªª»»¦¦»ûÄ ,ÂÀu__:G·³spð­ *)im=t‡n56nÜxî•£®h%½ËÏïøñ3gÞx×##32ÚÚ´wj¿vÛ¶±1]¤Mûµ--›7?÷®ŽîÛwâÍ—9zôìÙwßÅõ¼¼²²ÎNÜ‹qæÌ‹/~øá+¯¼ñÆÅ‹Ë–yy¥¥Ñâ”K—>úˆ¬ÉÛØH2K'C‘hXvëVñ mmé(øûß‹_ˆR@‘ŒÖIØŽ9{òÚÁaÕª¾>yÝ óN䥚Cq¸©×::綠]UŸQÛ)~¯¿¥ÈžE+S·A??:7HÞ~é;: …âprËPW§²°**›Cç$UV’¤“Ù+²fåå$éÔ–[}É­hI ŽÝ“[à¢"²Ï2 ëM‚Oeùss!øT^‚Oåq é¦ê­àé°•›ÊK"à"ûe;;ò¡ð¿tjü2|4þ\\|ù€»+=»!¢ðfê»í½S…×÷³.^üüsÃD!ÖBÉX¯] 9ˆs °M+6^´ÈÍ-//=½¶–NÄy‹—+ܼyt²ðêÕõõ‡‰Õqþ|GǬ¬ÌL:#RÆ:9­YƒŠ.²ÔìsrÒÒ¨‘ˆ,™Œ¼¼”j~"KÆ(??9YÎ’!+,LL¤þ–È.YâéYRO}ëåUV†«D–ή¨@NŠìÒ¥>>••ª¦K'“âìQœI}5ëçW[‹½¸D§Ã¼Š¬•—JrCÎâÌbê©‹,Î,¦ÐîÝ"‹3‹)º cé|ض¶à`ÚÑLŽJdqf1E5T,YLó–dlXXOŸ ‰,¼F, M‘¥©}}ˆâˆ, "o܈u\ùo!Q»þþûíÛ÷ì9}úá‡çÌñôD4:)©¢bß¾7Þ Ù,ݽûС ê꺺öïÇ ¼#GNœ8žŽJkl,/on}ùeÚjšî¾t Ë/Þ|ów>ùÄ×76¶½ÎnîëÓŠBZTáëK»”íÙCkœ¿ýöwÞ{ï£ìíCC[[ ÿZìÌGß¶o„é¥ÉôÞ{~øÅMMÛ¶Q¤ÓÅ…"ÓÅÅX+õÔnn¡¡ÅÅjjŒûq®8:FD¬_¨ÞKQ4__]NFGo܈/ùÝï(‚H‹¶mÓ~§øµ4mûv,PÀï³,)yøa##ÿûî{úi—‡¦5ÎԹªöË­Þǧºšf’È£rÄuSSНà]sæÐD??š§ýCò“NMJ¢8œîۀǎQü’Ä+ÍD$©JÝææ«KŸ¸å¥šCS2äµ.*ª¯f`ËX—ÈHu¥Ú¾~½ª¶«n)Ôʺº0xªnƒòêèÖÞ®jÝhû4—NÆÂn`ã•Í¡{™Í±·'!B>EmëT–ll]ÊŠ[SCKe¬­­¿UÂrË_QƒÈZ[ûø”•©¼| Y¬b‹ŠTÞŠ|YAÁš5rÖÂÂã @å%áaU,½·¤¾LôÝðì^Àãßj:än{ï¢ðر3gÞzK…ø¡ë‹ú߈*âêÑÖF=Œ°XëÅ脌]»CCëë©¢>|ùúȦÛÙùù45;†+Z›ŸßÔtô¨ÈÚÛûûçå569"²Ë––•åæ64ŒËØ  òòœœµke¬ƒCPPeevv}½Œ]¾<$¤ºÿ‘ÈÒÿ[[‹á9‘ur ­«£½Ð’±+W®]KåàA9ÛЀ!‘uv klLK#C&²®®áá--¡"ëæF%ˆ¡sÕÞŽÝöEÖÝ=:º³ÇÉ‹¬‡GttW„¦ÈzzÆÆ®_¹8"ëåG,¹9ÛÛ‹A9»aCt4EREÖÛ;>~ãFˆT‘õñILÜ´ gR‹¬¯oRR?brvËŠ—ìÙ#c““0çId¯ÜÆÈÈÏOˤ¥ á<ñÙÀ@ŰŒMO'–†ûelfæð0VqŠ,Z4–(‰¬~¼ü¬ú½X*c32ˆÕ÷ÿÒ©²œD^©òÓß?5upÂKû ß:…§¿$Á«¥-_œ¥«ªˆxÉëU¿ª^y{'$l܈x˜ª>cN›ª-èkG==*örT·_t#ÕmŸOÕvCeUôÙØ+œe/²..«V55!–¦¶“j6VnaŸåÖ¶¡ •_X³¦¾^Æê÷)ðGä­ôû2 ?H^RÎÂÃ66Ê}h``yù•_uÙw»¸„‡·¶âÌ0´xü[M‡Ümï½Bž:uáÂûïß:ˆ*‚Ì7œÐÃ#*ªµ=ŠÇìÝK†X‡ÎÎ!!UUÅÅ­­'N ïK¸èÐÉ)$¤¼œØãǵ×ÎÎ+VTUÉY—ÐÐêê––cÇdìÊ•µµÍͲgÝÜV­ª«#¡){ÖÝ}ÕªµkiW³£GEÖÃ#"¢±1'‡š®ŒŠjn¦æ'c==‘WÔ8EÖË‹Xô EÖÛ;:º½ñNÓÑ-yel\ܺuè׊¬¯o||w7úÄ26!¡·³^DÖÏ/1±·uCdýý“’úú0ŸFd’“7n$‡!cSRúûõ±›7“„•±AA©©[¶$$ÈÙàà´´¸ˆlHÍòé¦26#cÛ6¨’³™™CC11ä˜E–VYîØ±nÝÐÐóχ†Ò(–Fƒ—Ä’l¦É²giJþ®]ˆâÈØìì‘‹ ¤£YÈ&¬tÙ?xVÆb³Õ{õ3ý¿úÙ;Ávv <÷œ6?Iøcþ®ølW×ààÙ³[·ŽŽž=ûĦ¦¾¾664¾¡-Auùfd ªêFp0Õ’V²zEurëVÄÃT5VUŸõ·ýíÈß?9yÃUÔµPyûÕßöÉn¬_¯²>>úlŽ·wllg§Ú^ÅĨm~; VecÉ«í³‡GddS“ʶ»»‡‡74¨üù”úz•Oqu Sû#òe55*_?XX(÷ƒäC++ɇêžÕúYò¿ÕÕùùÍÍÇŽÁ#ÃG#† ß³’áÍáßáño5r·á¢ðܹW^ùä“[QEPÕ®vp„´ŸÓ¾}pt"ÈØL6íä46†áH˜iüÍÈx7#E2èÐ3ê£snÜüüľ4)¥¨ˆ6¥á÷ܹs§N½ôÒ /œ;ÇEܶm` ¿ÿìÙgŸ=qâæD Ÿþ¹çž}–KäV@(wÔΓ»'O´mE!##£ˆ×Ë;ßÒ‘B¼½»»««½‹üZòäÇ9ª]»†‡·msssuuvæ™jÞc@ÊËËÍ]½Úðo@Îß:.ŸóäÚóäüù³gOžtt\¾|Ù²¿™Lÿ4™ òósrpÇDrsÛ¹sÇŽÁA…ŒŒŒ7N/ÝÒ‘B…×Rð×)ȸÿ˜Hÿþïîînn..ŒíÞëaa+W®XÉ2c"MŸn6‘æÏGOýדÉð¬ÄWAbp'88(( òå™gNœÇííÍÍGŽ8#ýóŸ“{ÒF P¨øª#GÞ¿ÿ×ÈÈ®]º¡[QTÅÇÇÅÅÄ rèt3ÜQíÝ»kî|æ™ãÇžj‰L5þgø†—µö )êêz{{zººp}Ë–Í›7l¸u!µE@Û· mÙ‚+˜ª€_Õ“'Oœ8r¨¤¤¨(?×·nÝ´ H¬oœ'7.O0AwŠ]”òò²²âb|®œ8qìØ¡C¸ïÞÝ»wîdQÈÈxkâTm‹!Þêܹ3gžy†º¹¿úÂRwi¤P›¡@ÄÆ05½gÜyøðÁƒ{÷jï„ Ñö¶g‚€#y8mš ÒL5H “+q¸ÞÜÜÔT_/>EÅyò¤Ö àzSScc]®ìÛ·gÏ®]†¼¸FÕS?.R¨­ˆ¢£2¤Dnœ(œjYãÎââ¢"]Ò×!8~ªEòªgUµE@îß¿gLŒßDòöÞ¾}`@Œ$a&Ÿn¦Å€QÖ@ĆECÃyrãò¤¡¡¾¾¦ÆpQˆ{p¿ÅgQÈÈxëàTm‹!Þª¶¶¦¦²6áÂ…óçOŸæ9…º¾t©¹ù≴hÑÂ…ˆ:¨ kaaAAn®Ö°Â1@â©©nf!~•ÖXk£ ¨zâ c†Ð‰´`Ödc­¥êûUo§Û ÿáé§ ™˜ÿㆴÄÁtCJäÆ‰Â©–µþ_¾9¢Ðð¨˜!µE5®««³³µÕØØÈH7è€E }}½½ëÖážÔÔ””ÄD ÂZYYZZXˆ¸vm]]u5çÉÍÉ“þþM›z{q':–âй¶“ƒ¸8îß°¡··»›E!#ã­‰Sµ-†x+üæÿžL¼úøŠCÀžž´MƒþèQllLLd¤Ö°¢0‘þ¥iÉ’k…x/®£€È„ÿ"‹¸‚5††¼=ü_!‹Šº^‘B^;xP•Ÿ†”ˆöÎuë:;ÛÚpeÿþ}ûFGo\¤P,ëÛE^[ YTqúôÉ“Gº¸8;;:bþ™vîìÿœLÏ>{êÔ±c·òB“»!O°¯Ø_O&Qz.[foog§]h‚(~ùر#GdQÈÈxkâTm‹!Þ*??//;û/'“6d£Xr×E 1Cè¯&ÓÆ}}ÝÝÈŒÄc7/\Á<3Ì~[¹244$ÃO¸‚h²¸¦¦ºº¢BûvìÏ':0|UkkssC¢tAAþþô»ÿöox»V¾ t ãááîîêŠëȆcÀ³Ó˜3.3íPå (¾¿³³££¥åz9ïG&ÒË+" )\ÿÛÉ„Y[·Ò|ˆÙiæLñ°X¤²²¢¢¤D;À'^7¼¬§* Ue}sáµE5T ñÔIt´5íß'Ò¯mmM=Ut·‡8°w¯V~qžÜœ< ð÷÷õEÎ³Ž°8³–µnZ^}ÌÈxëo%m¸m1Ä[íÛ72‚q,UAwwþ|Z’zE ±fF“Ìზ••–iïDŒmΜٳgÍBÏû“ÉßßÏÏÇÃ.X‚`7‘ll®ž‹…¬Ú¥x»6ú%΋‚áÆ·i‡¡1¸‰w¡¯€…)0ëÓÆ´°ú² ÷Caå‘~YÿUíÚ÷)ĬA,|ùq%‚¯‚`½ï¾{ïýÍo´ƒeÚïŽŽŠ G˜]»‚[uݲžª(T•õÍ@†×Q!7h»GAAžàŠVRè‘YY4‘ÌÌp?rø7¿¡wb‚3çÉÍÌ8''GG‡¿›LX1¨€öN´Gq—…ŒŒ·&NÕ¶â­rssrV¯ÆØŠªªŠŠÒÒ»"Rxgït+ï'‡È 6ÄÁÔþ;»ébûU«ÂÂt+—ùœ_Γ['O0¸Œ-« ßg€]2##ã)dQxíßy-Ž [x$$ÄÇÇÄÜÙÍÀt"ïÙ3::<̈óäVË“¤¤Äĸ8ýg™°(ddd¼£Dáí‚X/|ë¿vãÎ>¾{Ðußw[ržÜŽy¢‘‘‘#…Œ7$RÈÈšóäöÊ…ŒŒŒwT¤PkÎøïkÿ›7 Î…ŒŒŒŒ<|ÌÈΛóó„E!###ãí aÂojçç!çÉš', o3Qx'Nœ8qºa‰Ý##ãm# Y222222222²(ddddddddddQÈÈÈÈÈÈÈÈÈÈ¢‘‘‘‘‘‘‘‘‘E!#########‹Bí&«ŒŒŒŒŒŒŒŒŒ×Ž×¾aþO, ÿ›'Nœ8qâĉÓuJ<|ÌÈÈÈÈÈÈÈÈÈs Y222222222²(ddddddddddQÈÈÈÈÈÈÈÈÈÈ¢‘‘‘‘‘‘‘‘‘E!#########‹BFFÆ»ïŒ}Å`i¹4Y2222^“(¼}¿Ûø³(ddddQÈÈÈÈÈ¢E!###‹BFFFF…, Y2222²(dQÈÈÈÈ¢‘‘‘‘E!‹BFFF…ŒŒŒŒ, Y222²(dddddQÈ¢‘‘‘E!###ãM…mm--3fLŸ>mÚ_M¦ŸM¦YiÆŒ®®ÎÎÖÖ÷ ÝÝ]]íí?Nر(ddddQÈÈÈÈx“DaeeEEIÉ_L¦¤¤Äĸ¸'Ž;t˜¶¦¦ºº¢bªßpòä‰GŽtt´·77k¯×ÕÕÖVVŽ><6Æ¢‘‘‘E!###ãO& ÏŸ?{öäÉŸO¦€__Õ~ÉÛûWé—¿¼páüùÓ§¯ýÛ`?GdQÈÈÈÈ¢‘‘‘ñ'…­­ÍÍ °cÛ· mÙ¢ºsÛ¶ÁÁÍ›qgggGGK‹~a§½.cHWþ×dòññööôdQÈÈÈÈ¢‘‘‘ñ'…YY™™ii°cúãÏ=wîÜ©S¸sõꬬôôk…)ddddQÈÈÈÈxÛ‹B<Å¢‘‘‘E!‹BFFÆ;D¶··¶652| wbЙE!###‹B…ŒŒŒwˆ(Dtð—é¿Ð¿ÐìÏþ ËS´ÂnݺÎζ6\Ù¿ß¾ÑQ…ŒŒŒ, Y222Þf[ÒTUUT”–bÓ™””ää„„gž9~üðáãÇ=xP»%MyyYYq±öÙ¿Lññqq11[·nÞ¼aÃì‰4s¦!¢ðo&6Äyùå_<žE!###‹BFFFÆŸxóêÆÆ††ººÇ{ôÑGÔZ9HCñ©˜˜è興¿œL÷ÝwソùMÿ¦M½½†ˆÂè訨ðpl‘]TTX˜—Ç¢‘‘‘E!###ãO, E|ñÅçŸ?{633##5õŸ'dŸ§§‡‡›Û3Ïœ81>~£¿ŸE!###‹BFFFÆŸXjñ….\8s¦¶¶¦¦²255991ñæ|?‹BFFF…ŒŒŒŒ·(ü©E!###‹BFFFF…, Y2222²(dQÈÈÈÈ¢‘‘‘‘E!‹BFFF…ŒŒŒŒ×SBZݾȢ‘‘‘E!###ã5á=wPâÒddddQÈÈÈÈÈÈÈÈÈÈ¢‘‘‘‘‘‘‘‘‘E!#########‹BFFFFFFFFF…ŒŒŒŒŒŒŒŒŒ, Y222222222²(ddddddddddQÈÈÈÈÈÈÈÈÈx;‰Â=“‰E!#######ãÝ# ¡ÿ$~ØØØßñdz‡'Nœ8qâĉÓ]“ ï»oÆ w÷?‰BÄžÉÄĉ'Nœ8qâtg'¨>(À+D!KCNœ8qâĉ§»SJD¡V.˜Lû'g'Nœ8qâĉÓí› è îD9¨…¢@äĉ'Nœ8qât»§ûïŸ1ÃÃ(ŠÂÿ€ãKY²éµIEND®B`‚pygtk2tutorial/figures/rangewidgets.png0100644000117200001670000002446510050344475017536 0ustar finlayfcf‰PNG  IHDR#‰NÅÂò pHYs  ÒÝ~ü(çIDATxÚ퉓Õ}Ç5ÄÅáK>t8aW²+ J‹„Œ„äXv¸%!¦pʤlBbã®­IÀ8•DÅfwËhŠwv–*cò?` \ Z­«Âj•ÿ%Ìæu¿îßüú]ýz¦»§gæû­W½oz{ú|Ÿ÷;úM÷ºuU Õú˜º|ô÷:u_çØèº¶TËãë…­–¶ÿ§Èó\éÿæÔ²ïg­ƒSÔ:œël©z:k`Ù–§V¸–EÍf“êËËË¿ü—¥ÔòŠ6çå¾üË—.·>¾´ôËU˯~¥Ìù€ê¯üÛe›”—_k•W^ã—_zõ2ÍLþ«U^oÕy.*/Ÿ_:ÇÊÙs—©>þúÒyeæëÐÏÓbÿ~ù쯗¨Ä—åÇs¿¹Âÿë.㓦2±Üšf)çÞ Êù Wd…Êø…¥7ÞåƒpºôÆo—'~»b,“o^ê³W³–©eε¨ò»QÞøeE–Épú›ùÖœ¿ñÌZ3h–͵µ¶[rË“––/GȉW¼µ¼$&–õ3¿xAp²î/f¨Ô>6KõëhþǦ×ÝèW>9#Ê Ÿœ»!˜Få¦OˆétbΆ™›6^¦–òñ³7~vÆVnø«on• [¬eã_R¹ ¦¾0-?®oÍŸÙ04³þ–é ÃDÅX6ÊÊΰì˜*;g6Þ:»eçìæ3Ÿß9³yÇœ¨å¶DÙz«:'(·Ïn¾}F–-w´êJÙ²wfó¨^æ6íÚ7=|ç¬,Ûîš¾kA)Û4deh=¨L”[µ¦aYº»>ü¥úðáQ¶ *ÛŽ4†î‰æP3w©ï:ÖØ}´1r¬±K+»/F•¯Fe×½ {¾¶H©l>Áðå+¹Jؽ¾´´äþ–²€ÀD%mllÌÇâóU¼B¤…¨ÔnH£|ŒAJ”ë?1­Ì¹iÃ\@‹dF£èÆõÓQ%Då㟙»ñ³s:N7}n–ƒt½ eó,‘³~ó´$µÜüW³Õ†¡9A×FÉiçÌúÓTàÙ1ó¹Ó›¾8-*›FLäh%æg– ÚªA%€Ù¶b„gϽÁt„´;i÷}ò゘ŽÜ7Ÿàê‘Æ®Gê{iÜùpPFZÓÍ;Oiþî\Ö¯ˆ…•¯4×>òÿŠJÚ™3g|œeëm§šŒ‡–ôü _’*Ò^ýLý+†8-=.LÚ´—_[ºÉäæEQÐg¦ aRõƒß¶–»¿’6à±±zÔÄ-[礑)£eä­é<ã4Ŧ;¿‡IsÜ"}z”ætí ‹ô‘ˆ‘$TDQT™Àl¹`ôôšÌ©Ûz{ËÓÛtGèÚÝ“¦%ª …FIôˆt7)˜Þ8Õ®ÌË9>)›!â^:KÒ(ÌXQ½;;Ba/¨|}‘ywõ$Eoq‹”ðââºêìiöGú{IZI¸y‚AÑáǃʑo1œ89OÖmPÝó]QæÃi¢l=ÙyzC¢¢ßK%#š§ÕÖ]מM“ËŸýõO?E’7gùu R3Éhˆ6Ì45/á˱T8ijv TK¡Q’Æ'2GæÉ.Qeèî:ciQÔe*¼É“;#-R#ÍÛò üVùr¼Œ(®Ý½uûÝ$3KÑrêÂú¢(‹¤d+`‡¾S¦O/|ª.¦‡ž^”•á줽x†E@麓(œ4nH¥Çg¶iË¡2Ù4a¯i̯» A’鄵D¤ôQË£cᓼ ÛéŽÀ|‘SÇA’q‘ôë$%LÚΰ‘ §nÛEidœX þÞ çD._³ù1-Á·d*±×ü+ÁÏÑEýž¬âÝ$½»;ù$$H K‹øyX†OaÖ!-ß`°H–b “æõH)ÁÌ“F´êF„'ÉÒ÷B„æÃiTŽ=]?öÔÂÑïÓ¨üpñØŽ?ÓSQ†÷ŸÈݦqŠÜ¤‘í‘©ÄmÚøä¿ƒ¤ÈƒàçöÈ‘£:U8KÜ£ãõí£¤i2J"¼»c ‰“»âÈ×°©‘5pŠ@z+LÓÍ›’à±w÷h#ˆ…ì)™»–gôtC”–;wzQ “’ %c¤º$ )éð÷tœeE˜# Uh‘~'ºçïbzø©y¢èøÓ˜¥H²}&ª§™ÏÖÿýÏÎoßoȈ´—Þ ¬“òn©”Œˆþ1ç8íµ©$K[M ñ–ïã$¦±šãFI.Æ}9i h~Ò¼’¸k-Àæ·f2~Z2^’ó…w'—‘ØpïŽîHÁñm%ùOòëdå¶äX¡QÊÐ!ÁÕÈà É0©n¾§$Ó )e^sê(RbþÞã I²$c$‡EaÒ=OšÑbö'Qç… ‘¤(2JOµJÕÓõã !$˜),ó÷>Kõ¨+Ç~¼ðѧsI$ÚîoÙ’(ò–˜nÅüÜrKËÑPã #òæ~)òñöÎ)·e)L’·b[íîbX&¼»àVÒ¡·´|ü-ºoËZóàÇí¢áBq¾ažGD·)ã†îKÜM²åîÂùÑWasïN5Pn§Ž%Qî|¼¾ùu',yÅHOºÃ$a¯&I?eéxl‘¸ýQ¬“R¢Üû i¬"ž­ –¾ò\@”(ÇŸküõë².ÊÏ5xnaûÝùdDÜË;VÒ¾M“°‰U¼ñæRÞ|#é&È‘r8m0Pƒwº¾?Nï‹2uæ¢GG‚²EáÇ…Cß]fÇ ÷îBu£”§ë’¥À©ûA=¨ü}ÃÓ"EåÙEQHG%HÏÍs»°ô£À.ÝZ$Y’ i8=V^x›—‡ÎDs†´HóÑO_áÃóih¿2¨_Îç_qü€×­¤eŠÓ䨖‰Ù«*W̯‹ïÏÎ'çDw“äíWõ‡lŽ{Ðê ¿oAši‚Ì·hãAwöò– “ôÄÿ1–š¸;]ß÷x}cÉ#¹oËF,…Ù<%åmN…¿®GJ&¬†ˆ›)K,LRKÈUèÚµÊC?«?ø³K<ÿ6ÿ±ôówœTºÄ¿øƒ(Œ½MS"Í¿õò\ƒç/>åLß±Ál VÒ< ¬\ºòçÀ¦ Ò‚Hi^ÆKÒßÛ}X€T‰]8%i„ùu­ÐˆjqÞ–M$‰1$B£D¾aôë û¿ÞpÙ¢4c¦NßðM ‘ÒÞoÖ)rä‚|Ý¢;q§ßœ |¼8Mçi”X¾a±•² A:úƒ†ƒ% œ„ÍÑ3 ­|ƒ°Kœ¥Ð ‰0‰Cõ@l”|>6JÏÿgdŽ¢J\äÇ3‘Qº?i $H‰2öÕZ½øÎ©_¼sò¥·O¾üûÇÄô¥·w=™±(ãØ•4ʱp3šVþéÁo<³qÛc†OQ¹yèÿ(Êúm†ùô­õ;Nˆ²açIYQÊÆÆõ`ÉM;NlÞyR”-·ž +ÑGQÄ¿¶ì8¹eäT^eóžS›o?a+[ödù×èIwÙbš¹éΓã'·Ýyjhï Q‰ÊþƲ=œÝe˜IeÛ]Ú×>¶íÐ)êˆ2t÷ Y¡9ÁÌCêœ[ž ùô¯àãYNˆéÐáñǨÜòåÄT¶>©,¹ûÈI•Ý_aõc'ø¿¨ø8Â*¸èé³ÿ…)©’¦Œãj÷¹'Ù—4>Ÿ¥–ù5ê3mryŒKÛ‡^KîüuµÄ3^jSsœ³šùc‡ßÆsjŸÌäÎ\g|NN­ƒ=ñ?ض÷äzº$íjº> ‹Y«+W}´ºº¯*ÒÊÊŠR_YÕ¿wÍ´ÏmuSüèóWSÎ!ÕWJ?ˆ¯®Ø€Ô‹%ŽÅÖVWò€®-9vÒ¶W««ÿ›vÒ®ÅMå¿@þ=ÑêÊ5^é°!¿ž—Mƒ ¨c›†ÓA ‚@A ‚@4‚@ iò¥¼‹W…19ݼÎå^i©¼QÕ8×ÊɤH?É6ü –­ _ 5]8?ÌL¶ ¤´vºpÙàä4µ ïWo¤´Âm–­‹Étö f^;Y'cL³&4_w,û4 Pkµ? ü¿ ¤ùf;Äw•œÇ€wáÊ1òzrHþw ’F ÎR¤q–”0ivá}Išî*!àÒ2“&¢”NH«x8‡ûõPI¤¡QBƒ)cÔqùwåt}œ¤í§ÆP9Òú©Ñq,«+×èÁ2lZ×úh(3Ú"„8Í\牻sãçϾv¥Ì2>>ÞK‘ν/aÍÄa_úã{Ý-ß½L/^\+R]?L*ârøêÅ’FÜÛ¬Íø«g³ö îÍUðᇠ}÷Ü….œ4}ÏÞ»ø~AM³çH£žo2”Ï1ŠÅjµšã4¢ (i>¯¢" ¬Müø,/"[±$Ù4é©¢€´ˆ4›óªŒ÷3ú»™•}Oš\Þ#Hs‘¦ÇˆÜwßãöîôit˜ ¤åiÓlšššâ6 Þ#Hi…&[Hi -OÒô0ÌAâ4iÈ=‚´²m¡[Ò€µf!¤IOíw®K%M9žŠØ4™|‡÷›Ö'¤éŽeoy¼›ð¹È=mx¼ÐîH¤åé7òÖßl6iðGª„O8é-Ø4Ø4ä[Ô‰ÃY—EµZÍa4Ö5Ò„3¦þ*UÍ5h0åó”þ!m%Tý4žM€'ô‡Äut´À¾ò{Q™z<®š€ \œA•UI¤é ´‰‰ Yi6› iùfÎ Ä¿UiH+Ö{L÷A -·8-¯_Í@H3Kæm`Ó VRîQùÍ5´Ì¤ïñ»°iHËÙ¦oóuþ«÷Sféi“üñ’¹—ó¯¾.Jo?Ž·ÈóÓCE6q5EÅxNôç—ÒÓJm7²ûäÎu°¡¦ÇàÃfáîí|M< Ùt5›^ƒZ+§åë=Ú6düék™#»{nü~’ã9NŸ7-ŸÖÛó6M6åL*ôÚÈŸ¥õ¨ðã·6~C­w ÆòÛ,©ì¼Þ’r °ço(z…´L²Ò&esR®¬gëíCÒø±ñWµ-¯Yi=§rÎO¯“¦ã`l½•xbºäH!ý'Ãó¹y¤ù[EÝ›·¤"\£žÎ=–p~úƦUŽ4qµïÑ6ÎqZ’¦_ÍŠfùK&Íוœiý}ç:Óï˜Ë~ûnçÏÍs“655EùLããË!m²gÒx¨æy5»OÚêʵv¾å|nžƒ4%ÃiËv¶NåÅ‹¹‡"Y]\Az~z°Pô jÏgK§ºTEfDV?Ìd£:¹ûÔöÓ‹Ýo¸Ï<¾ïcœçùé÷w7ãbmA ‚@4‚@4i ‚@4‚@4i ‚@4‚@4iÔRï>•¤AH+@ÊÀÑGB 6 2÷Pï‘›†Ø ¤Á¦AP/“&_& ×i•§lT¸ô·«@Ý$Mù ¬+Ïîv¼„º„`€VîˆìùKØÚWlËQÐ×Ï÷d5}Ï“¦fÙø¤åËÿ½¤Fn §1õ+­?ßvй§”Ë£ÑïéJ]¡~*ü8õiºÄü±±14å2Ë&•©‘)Í«=¤;´r»þVBß®Ï>¿“îÃñÂÿõèK’U„½A­P'Ö¬lBÉzq[';iþJoZ˜/æ^3o@Æ/òÒ¿Õ_ä«Xc}z¡m啃ºjz°ñèäõoñꇦûŽBÝ'My_›34GjĘeÖ1_€Öfü–qC™6ê¹6#íò¹×Éiôß®qFÞsü+PµlÚX(YYW[G1[.6ÍØ¸y·í¾ÄÍŽÑ.9ðÖ{zãÎØHV £´–6óèÞ®g¿àžcóh?‘¥¬:ir fëÖ‰5’}[úàŠímnÊ&ømŸFÃ-CVÒRÍ‚‘Š6Hs îÞ Ç¦³’¦œÇ%P|QpRÉÜãÚGÁŠjëgòÊ-‹)¿[å°TY½G#9ŠciL¢x’fLåe"ÍØ¸·hÛ®'W‰ñMëËÈóÃc6wŽª\F„>JRxBý‚Q °eùt9ÐJF¤¸Fò‹r7Dƒ£¨ž$Ðs’6LñÇ”†®ì0ߢ1S’jÖܧ‚æ(½ؘѳÁPUHs¼³Ô§ùäÍ}:Zc–%uÌGÛj¯7îÑØöªßUºãz܃K Ê‘&p¢"ÜEþÑq?_Tý§à²™­âr%·ÚTÛ›iUzŸu“´‰‰ Ÿwr{Ú´2aȃ.ZƒB7 ÒºOšÃ#Jݼ1aXôÔøƒ%1˜:ͺ|ùGg;·4ßÿ‡K©®T8iwu¶gЏ£ã8&O/ÔŸ´g%øzréû}F¢‘—˜i‹înѽ*˜µî{y9$¼õë zÿKÞF§ëÓŒºÕÔŠØn•¤AÒ ¤AHiÒ ¤AÒ ¤AHiÒ ¤AÒ ¤AHƒ ¤AHƒ ¤APÞr<Ö ¤APþh´ž¼N¼GŒA ­Ú³Ü@H+CkP‰û)z ÒºLNBߘ,Ø4+ùRŠ’HSìf¦D_¸“Æó­+Uˆ¦}_×HCkÈ—4œÏ’E'œ“æó^‡îxm^ê‘ø¼§¢. ˆu"Në9I¢äeµÙ´ÔwŒt´LÍÑí|òÑÆú•7†ÒGåu6îiï•.y‘ç¼ØäI–¤Ù^´b|-}¹ÇÞŽÓ 2-›Ñ¦I—Š^ªjìmAZŸ³V~œÆý©uIu™´Z(ÿ…3ýWÌ!çMN³ò/÷-Ó»žiI½R(iò…îK !…4jiRJâÆ­<Òø2Y—×{ný¿ú7«Æ±0zÝÓV×Öm6M†”¶íÂÄ•CZê §ùÝ!ö€÷ÇJ÷¬Ì×_ ÌgÒÛ–õ5ØVèÙP_Åÿ%ÿËßM3õá½Õ7ísÞÜÞ£²6ãáÃâåNšÏ;Ÿu·³¼ûiJSÍ×èæ_U®½ÉRžG_ƒòÞt#ùº3¦o±6y,üýëü‹ÜmÎÔô=I£ ‡½Â9”£M“YÔÁFe“¦P§4Sc¯Ì›‹ÝÑJ&Ȉ–#¶qÏ1šD²uúVt{kÜó¶ã4ãvyÏEBÖ-BY½GÛ[×»“±Ù[÷l£ÑfýŒkàL_¡Ò!éqÃÓslš6ª·{}U©÷ßüm­J! 6­PÒôÄc—3"J¨Ã£y›ñIÍ饒f›i³`J»wôü£›gããÝö\¼Gc„ҊΈ(˜uy„±î¶)wú¸ë˜šÀ°™ÂØ‘k1ZŦcK[Ä%o`(þ¤ÞÖ ÓvFD1_Ȉt4ÙÛ:nbõÀkÞñW*y­ìLA£~Sï\ÛÎ +“4›—Þ…,?Ô!iîLH+§?õüÕLOÚ4†“P}›ÒúŠ4Œü躦¦¦@lP,ãr´Gš@T¿' ÒúÊ{Ä´ó ÕÚv;ùèV-‰‹Á3"Ýj%P.¤¹‡¼ƒ´JØ´ÉP™„zVˆÓªNÚ:¨’7¦ùвÊ혀4*C ‚@4‚@4i ‚@4‚@4i ‚@4‚@4iÔŸ*úQ ‚r–ñÇ× ­Z*žuÕ7h4Ê@¼Çž×Ô_iÕ% '¡o„§ÐUWÍfó*žŽÚ“UaÓ  ›|Fj{¤õ¼MëV.®„í‚´ š&qQÚ¸ôÕ% Õ3SÿÅçÿe›ß¯6Í}¼pVýIó?WxZxn*¢–fÓ@W&Ò<û/þ±k¤¥^ÚT#ã8ª¬ëÌdÐÊ´~ÅÙ40“;iW-ÙE ð`ÓªÛ|§UŸ42eôr x½§2Iƒ¡ëĦ)ï”é2iŽýð4ÄŽ|Vk[Æó»Žý§^Ísm¹æÞ%Ÿóz‡ò!Íøª§®‘Æ_%ê©qZ¥H{Η1./Ž(wÛîdÚ4|ÎI£ì™L*•4[¯LM™w¼bû.?T²'´*}+4å PoÄÖÓ-FÒ×\±i¶Ã1î'¤ñ½5žFý•BçÁ±·©‡“úÆô~ÓŒÝnU¼Gj»bŸFo¼¡ËcÐ gLa“ll¬Ž 'ÍÖÚøÖ•íÒ~ÚÖœ iÆ™FÆŒ#™Æ© ô½µä¤éŒÙîÖv'#¢7>#ŠŠý¡†ëvŸŒm‚ŽŸvÛO£¥9ÜvôJ÷!?fmˆ“ÆwƒN…˜Iý[òé‘§Þù¸}OšÒQgvÍ{4’fì&kVš¾»÷¥e¸1äà¥vÉFö†{Þ^²$wÒ§ºm›¦ø®ƒ™Ñuµ[w®mWËæ_g/ªBQjÔäã4º¹ò±i´ÃŠ!Í…4%n4"a´W¼WÊJš±GdïÑ[73"WMY~åN‡ÁÇ-áÙU[àacL÷QÝ›3&ÄmébÌ‘±ÔÝÑ\²üò£b®Éñ£ŠÍü:R J®È¸À`fùmÍ»k¤• ÛžPÅ3’ôÿ—ÿ(0=[˜º?ܹ+·í[ç£ö6·Bšr&uǧB¤ñ=ë¼P¬oŒSS÷AÙ™ÛS{§¨Ã1"%<äGV›ïÕ¬8i™º]ŒÆª´ e¨jÞcê¥÷N=¸*Hë&iŠ]ÂÏ[º(qò;$Ííôn’kV)5›Í¼Hƒ÷XEïê·¤4¨TÒl!Hë2i“Pkjj 6­ê¤éÃ|ôŸBA½"ÖKé/œ„ž“ç³´@•!A ‚@A ‚@4A ‚@A ‚@4A ‚@A ‚@4¨<áÉY ‚ ÖûÂc@Ì A jãÚà$€4¨@ÑKîq*@T fWÙ‹‹!•ç="MÒ ÄiHëA‘ù™iP©6Myß4Ò xHƒ EN#¼G•!dùAZÔloF4vÆ>/PTVHwr©ÍÑši™ö:˜ (Ç~ÐÖœò!/“uyãþù¯P¤œÂüB}nÓŒËp‹¤(Q!6lßÕ?*k•Z­Fóé ÑúÖ³B¸ºr­GÃ9¨ÿã4b‰›}ðžNˆirÊÇàêëQ*©Ao©g_;W\õ,M‹[?J™e||¼ Bˆã½÷©¤ÙlÑ¢f² âÜ]úã{E”÷.¾/¦kÕl6ý.hÏQEœvç"7ïQCÄÇ7è0ÐÔ>Úèu&M%_§'lÜèGš(ß½Ä/Lîþ Ú}wI+5N3ÚÅ«tØ"GFÄ­¥z™Ti‚±÷ßýSVÒ&Cy.)V˜M±1åát(á‰-ßžsœÆí˜Ñsä-Y~%öãŒISÆçËÉùþÈí=Ò…ñÏp~ĵð¹™&IC»ï–MK½F½}纈}+š´¬6Ísy6Þc9Yl~«º¸ÿW‡4q¼ ¤uçf‘ÛFçr[©ë¤ñ£i ­Ò#búÏ{LíD@Hë‚{ÙÓ¤ñ.cbb6 ¤Ue´‘ÏøÎ^·i©¤´ž±fÈ=¢€´òFÙVŠ49 ¤´~PÂù\¹VirÄ#R0Y€@Hë%kÓ.£±Ö&±~4ýòGc´vìÛøøøZaÊ40ê ´²¼¾¼»å%†Ž*£§iTFÒàqAe4!V*oú#ôŠèJá@"Nƒ Ò ¤AHƒ ¤AHƒ Ò ¤AHƒ ¤AHƒ AHƒ A ¤AHƒ AHƒ UQ¶g"çã Ê­eH­†ºZð«XAHÐf¡ÔiÎÊÊ šHƒr=ÆK6€Z­¦Ì‡@”OÌÆ}E²l„Ò œy3R4Csñq“ Ğ8­WIãØ`X •)¨PÖÙa2ZYíशmyB@Ú Ú4ƒF¾ošÀ–¡äôE„†,µHËê¹óɲFÏk{ÐmZçÍÂa!¤…¡»ie·žos¢[uU$­“¡:<æÎ´Þø‹Õ‹T->‘çŽbµH“£ã¨žõò´M‡M~‘ßêDòþ,RmPåH³ÙÞpixÑ\(Sþ_ÛÂi4ÝÄÑGZXô ×ÉgrÞäòúî¹OEßä`âªå=ÊÌ+67,•1£éãó)œàÞ£`(ÖRáÍÝS‰VVKkPìžlsöµsçÆÏ‹iÉeüÕ³…~E,Ü•ãêV÷ òsΈÐ#$>¤qcb4k¶ýqÐ"×iÜ.7P6H$cÆCè$8éÒßëbY+RÝ=´’Ocw¼GjĺPê –:HŠ£è M!ájrÐ{ÍFI‰¯µˆK\øj-í# 8íᯠv*¬ïÒQâ¡rp bÄÌÿ¢N†1 3çž3Ãð_™Öˆ•3†Q¦h ù¦åú~VYÏ’«ªä÷-J|HppT#¾s¹\¶¨tâĉ#GË€tX™qèÐAÊŸ8q3/¼ð‚µä®/¦Gë¨ ýi2™<áŸà#þÚÛÛë¹·êééñÜ ÌööÂ_†cH&ÓÊrqHÖ’nkñIZ¡§×û0ðƒèã¼R·Ïl·û+èߨ'øï'‰TÂLq9›€¯H¦ñ‹˜ÓÄ©¤½$ ‡*WKZ&pCØnN‘JõãVs™7C.ƒ7Å@6ê”Éd´ &ÏûV]Hy8HßCßx‡$‚ £††EÀµ+—úÅj™(ãŸVy.mjj›¯X°å† 0ÓÜܬ-É»î¿In‡Óë7¬ß¸¡uÓæ 6m Wv&ñ'X V¦Dù7®_¿~C¸;Ù°¥2òíÔfÍÊÝ®Ãݼñ{Í-͘ikëh}êé6™ ÓÞÚ¶¹­µMI°š½ä!mÚÜÖ¶¹µÝ¹ŽXè` u¶½¶ìÀüäÉ“å-tnŒ¼g:YÐú¸²¶IðS?¥¾qã›c¨â{€pæå”~ˆï'V,±í 0QÀŠy‰ËÏud2ÿ´bÅr‹é-XÏ›Vóá2€y#åi »kÅu^4ޤδnjx}ªU]pÞaÖ'Я7·]¼\ÞÒ,W ]mVQkfÚÍ|»L&[[èí°!-yí ¶ºþömöÂ;vlß¾ÝãðWm9âØ ÷Cø [H‹ÆÆzÌÔ×/¤%˜—o$…~J7ÝØdЗ\ ÀÁQMêßýaÞ6!|ƒ’D±?µ‹áo˜ {I#««57‘=ÖÎ…ëP ‡ØÃ&¤9ê}$¬BÛÄ«l›ãRAK5 ëHn=ÒöðÌS›]’YÕÑ[44kÔ†…°d[g;•¶·í2Mš‚ê[ÜÁ·êf `ohhðôI\^U:£µ%n ‡ã²¹š¥ˆ7ÑÇ^‡©»× ¼~ƒ¥‘7É?ÁìS¦X&÷cú͛žzæ©§mcÄ©£-"ëÞ–­a¯ÙîØ­í~ž‡Ùm.Uîº nú1]IÛ]É2O¬¹0ˆ`5“7!èñ®£M‚½uÃRß\nÉ1ðÕ­Êð“ë•)´ú¶Í˜ºÕô˜1ã ÆŽÑ$ WÁj!UvH«šz̘1¦¬nnöÛÅ/¥kFAþ‘=UkÛs+§g"Ö7f¬MXiI#jm—0,mhüÓØ±cQJ;%¶Mg'ëI€{«fšŸÒîx6ÕuÈ×vC-”0iʤɅ³Øo•Â~żÈbX3ä§È5èS¤y¢Ú& qŽ¡Utì}Sm,øuŸèÁ!Ä·ª ¯¹zœº8èë«4­;zŒÛ’ÖÊñБ€•íâ>M&Ëdʶ=­®¬”ø­Ã©¾€QÚÜýTÀ…´OXˆtv—"Žmì JÚˆª…Ðp¨–àmW8Û±­3H\‚·oß©XØ›‰ÈnÏÖ,Ó];\™®.u4OŽ9ÜøƒG‹Ã7. .kqo񯯬–ÄÐN€ÚîM¸è’cè×< é*¢WNÞ7±[ñ–RãÆ\ƒŠÛÄåèqÀDœî£`5@$(1SÍh-ÞX÷’_¥ûhÕ·†lÝŒoVßÞõpåeõ¦_9î+‚ÒvÖ‘p¾vô5*‘ï$hÈn|˜êÛ‹ÝžË5|kêÛ!ÃIóޤÖ*u˜}úÒÂbo–õAÛ^uÅ•N(ëÀµ7Ç¿n£|‡ÖêúZ1¦ÃÄèÊ^:ywª›‡Ù•â«t²wïÞí^mú´ITÁ£Dõí^3/¾Uî| ã›ãŒö¾?’“¾»žÆhÓ1mb¥ V}†µ"ŸGS9¡ÅßunÛD³JÜΉÔ°4ZnOC­ûLkb„¶è–ãy•¿Ê~:Îrá5t öa'8ÞÑÞÚúŒ<¤1*¾=Íh·ÔÅ%À_ú“'²-@wªÚyG×Î}»·³Ûã»<þ´{÷Þ]»víéÙ™3g–XtÉøæà(ß===aÚ.Óú°yÿ«=j)¢ÄwK>ɼ‰¸LºxôØ1TsÃS5{&Â(šXŠh êMOCU(“_ŒUG¨tÑ¡¾Ñ­ÑYæGSE*xD\à¸Ð-«Mòîè¤2@¢¶ŠoOŒµÃéå ûn…_Wé¤óî½/uîÚ³{²Zò–íV’'¾ýªôaÅ’ñÍæ 㻈V—ÝwÍoÚ'h+oalÿdýFá, jË,cƾ7Y–÷ÕèP‘í6=à¯Ò}î°Uðh[#²—*[U°Òúö_…”MÌuÓ3Vò1TåN°¦Ã%p ¸&VÕÀŒ¬!ƒÚvÌÕc µ¢ Ç];º(°&®¬¡|w¾ôìn„·ImÒÝ„ox´«¸F»› 2E«¾¹è’ƒñÊûV;®Q–Õ?SªéÑj5NAgíà5h^àãÆ\Ct&Ö“è7f¼À¥:pðš«Çùõ¹¦µû˜êqHÎyn5mºùé™2en5uÚ]òÀ¦È¿ŠÕfÞ7ö`Neºg†œB’ø~ ,˜é“p…à°¹_š1ãž™÷θç[wÛC‡jMïùæô™ßœI,¡o¡|Ç1ÐNîžFsA†IÀ_Ö©¯_HNK}£÷ˆŒoŽ3Å< 3^­õç:eÅxµFÐN\CׅبB£ë£»+ŸÕê*?fqÁç¤".úŒoŽ3ß¹Ÿo÷Ž_ì°2]öÂ7ÌLömúúol÷Ý•sŸÙ7ºò¯LŸ^PxoÕé·¾8Ï%oì´¾ÔÎÀO줩{WŽïèÿ}ÿðËCGXLÀ1;[=6ý *çGY­Óç°;K¼(޳TÜ%ö Äwú•ãŒoÆ7G-«oÆ7㛃ƒñÍÁÁøæà`|sp0¾9ߌoÆ7㛃ƒñÍÁÁøæà`|sp0¾9ߌoŽÚÁ7Üççž3œóŒoŽZSß‹e|s0¾98jß'1¾9ßµ§¾—-zHó¾ïšÏà`|spT=¾ë-|wvË)㛃£–jžÜ9¯uÒÜVþýs0¾98jÁ<©ðãçgăñÍÁQ“ßSæ¶M™ßÎ?~Æ77Ûáà`|sp0¾98ߌoÆ7㛃ƒñÍÁÁøæà`|sp0¾9ߌoÆ7㛃ƒñÍÁÁøæà`|sp0¾9ߌoÆ7㛃ƒñÍÁÁøæà`|s0¾98ߌoÆ7㛃ƒñÍÁøf|s u|/«ðÜs†;ÇHãá.9ßUïIëw¾án§¡vxà4Æ7GµãûÔ>¼Ïå ßÊꛃñÍÁQKæ yß<Ö%㛃£æðm+î)sŒoŽš¨yb˜æ‰³“ƒƒñÍÁQÙïæ`|spÔ¾{zM|OQj›°yÂÁøæààf;ŒoÆ7㛃ñÍøæ`|sp0¾98ߌoÆ7㛃ñÍøæ`|sp0¾98ߌoÆ7㛃ñÍÁÁøæà`|sp0¾98ߌoÆ7㛃ƒñÍÁÁøæà`|sp0¾98ߌoÆ7ÇÆ÷äyçž3ܨ‡*æ`|spÔŒú^ü(áâ®ùüûç`|spÔˆyrî9Ãø7ÏÁøæà¨1|?±èAò¾§ÌmãÁæ9ßµWt‰Î ;àŒo®yÂÁÁøæà¨”úæà`|spÔ¾ëÅ [}O™Ë¿Æ7›'ŒoÆ7㛃ñÍøæ`|sp0¾98ߌoÆ7㛃ñÍøæ`|sp0¾98ߌoÆ7㛃ñÍÁÁøæà`|sp0¾98ߌoÆ7㛃ƒñÍÁÁøæà`|sp0¾98ߌoÆ7ÇÐÆ÷²úÏ=g¸s„âF㛃£Úñ=iýnÀ÷de„b2ƒñÍÁQíø~'µïsy÷²úæ`|spÔ’yBÞ7 pÆ7G­àÛVÜ㛃£6ðÝÛÛÛðx½ª¸]!8›'ŒoŽêWß ¤úfds0¾98¸æ 㛃£Üø®¯_háxÿø9߬¾98ߌoÆ7㛃ñÍÁÁøæà`|sp0¾98ߌoÆ7㛃ñÍÁÁøæà`|sp0¾98ߌoÆ7㛃ƒñÍÁÁøæà`|sp0¾98ߌoÆ7㛃ƒñÍÁÁøæà`|s0¾ßCßKæ¨øž2—Ç,æ`|spÔ„ú^üh,Vw×ü6þås0¾98jßéWޝZú=6O8ßµ§¾ñ>¶‰­¾yÔyÆ7G-]–úž4ÁÍs0¾98ªß `vÊüö)sù—ÏÁøæà¨|÷öœ¨¯_ÈÞ7㛃£+6ÖÇt󄃃ñÍÁÁÍv88ߌoÆ7ã›ñÍÁøæà`|sp0¾98ߌoÆ7ã›ñÍÁøæà`|sp0¾98ߌoÆ7㛃ƒñÍÁÁøæà`|sp0¾98ߌoÆ7㛃ƒñÍÁÁøæà`|sp0¾98ߌoÆ7ÇÆ7Üçç=¦wYCOš»™ÀÁøæà¨zõ½øÑsÏN·>xÉÁøæà¨óDÅ73ÏÁøæà¨ |/«Pzß<Ê%㛃£vðÝÛû3¼ÏMçd~;ÿø9ß5€ïþŸGõå–TzÉÁÁøæà¨j|§_9^_¿f'Íeó„ƒñÍÁQ›õ¾¥sÂç`|spp³Æ7㛃ƒñÍÁÁøæ`|sp0¾98ߌoÆ7㛃ñÍøæ`|sp0¾98ߌoÆ7㛃ñÍÁÁøæà`|sp0¾98ߌoÆ7㛃ƒñÍÁÁøæà`|sp0¾98ߌoÆ7㛃ƒñÍÁQøn\2'«ƒ»}Ò‚ö)sÅmϧq0¾98jB}7°úæ`|spÔ°y"Ǻä?㛃£ðÝÛÛÛðx=Ì"»-‚³yÂÁøæà¨~õݸ@ªoF6㛃ƒkžpp0¾98Êïúú…¾A€wðŸƒñÍÁÁꛃƒñÍÁÁøæà`|sp0¾9ߌoÆ7㛃ƒñÍÁÁøæ`|3¾9ߌoÆ7㛃£àxƒðÝÍøæ`|sp°úæà`|sp”Ktwæ~±gX㛃ñÍÁQ+ï̽±“Õ7㛃£¶Í“ÞÆ7㛃£¢3YVߌo.ºäà¨%|sâTÓÉ0 Ì0¾9Î,|‘z{{½ŸôÿÓ ¤|GÒí÷‡žžu[˜õÛgO¯ã¯Ún]ŠêÈaÏ/;?ñ¤×7:zÿÝú÷òÝÿIíD¹O]¸o×­ mÕ××âôt;ί¾sÜ'×p×|ºû[•|Fkè…˜2×ÊD=´¼@8°FGûï˜4·U=6÷Ñbàjœ„"¿{ØO÷<ÎÈðíŸNâ§×õ+Æ%éWŽ{ýÔ#€BAY:F)üÑööœ,esí‹XG{2‘H˜ ë9Q†ý+êÇò¼O¯5Ozq­/Õm~ºÏÖžê;ª_o)Ô+!:*¸U‘„ ØÊïä«Ë ýPZßsÀ½Eþì ùAÅݸ|GÆÞ©U}¤âR"‡¿ÂBmyTìF¹öïR‘Ö1ø}– &ܧó›vö½r¾×\Çúüõ„¼“:€Ÿë÷éý¯¾p~4Î:©ÝfÿÎósÒ‹Â'µ«/w%Ö”ûß—÷NHýì˜k?'=euøË gÕój×<‰ðSô®¢:†¢÷s×¼ŽðoKž,6õ¸¦+†ï_žÌ»Ù0 ø66,jl¬‡»¼øXühCCòúW-ýÞ]ó[å¬ý×¥õŸ&­ß½hÉ£óÌYÞð·ðÑË=„ݸ@dÁjð§ÆÇÖ7Š?á´” ï…»Â†·é€Mðh6xem5s[ùõݧ—èû·¿cÜI¾ûoÔÍ:°º7Ö›{“çÓµÿEêçº÷;ÔŽ-ÿþ„ß¿¸}G[Ç>K‹m,ðŠÃ¶x0‹¿Kºþdá»Ãó[úxŠë]xÒÜöBdoªry$­Rq‹rÀH7uÿad¦ºy$ç!Í¥êß pZmß·¼^¿:J9ɶú.9Õ‰ò"¯²£ÅLö´ž{ÎpŒàâ©"J´¼@­SW.ðƒêòýÝ(èëäÿtÑ5"9'Ñí?ô €Ù:#ŠÛÏ/¹¬Uý·Q \yçÀZèÇÐûoub½ÃïÈ•||wDb|«Î§ ä<Ũo÷w„/åÞœ–ø†ûCݳvUÐÞ¼LhÏí˜cô©ô K/ë/j~[ã»+B„9WFØýÔ¶qèU‚ÏÈ»UQÊ#Ö(äAXØæuƒvõ}NTèŸIsóa%ʬ‚G°¼(ï‰3íœs#ã€Q´Ž)ÿ½þ¨«ÝO3ôÁ‹H™LæÄ‰GŽýôÈ‘ÃñÓ—(ÿÓ£fÖ?zô§GqùÑŸÀfiµÞÝGŽyá…pþôSe'/¼ð¼÷gY;§¤Íº«ŽàmCÈû-§ÌÑ£G{dB¯Vý“š‘+t»—“­ì¹™?BS÷Që]h‚Ó¥íÐç³ûWëœ`}÷7rîßÃßW¾ò ¸fÎý;vû?zì%¿=x}YoËÛÓ—O&Ny®ÐSžšP¢ˆ¡7ù==Ù[Êg¹o€0åO=½ÝE”i%“Ib†±Ü].B?.únžL¦]‘ÄL"™6+%VJ¥Ž•aÒ&¸9|–¶O8­rzB]‘Jõ»WVó W2Ð'aÑ—µf—ôõõ9÷Ô¾|ÍG¾ß&g.`s9s=¬Ûm›'â¥×BihX¿ê•+–®X)båŠå˜ybÅâÕ«W‹ÌËpIÞxbåÒÕVjj^홚ššV¦+–+s-«W¯Z¹bIs“¾Oõ³¬´juž´ÊçƒÄòæææÕaÓ*ëHZ¬oôÑpðîãoZݲaÃ{ëÓqeÍü”÷/Ž0`ÿ«àåû65ýò\iãzÖo¤eëÖmX¯¬²Nüuýzç:<÷¦¤Mð¯uÓfØŽ?pÍ 7šû]/“û#h…ð©ms+~ 8†öövóÈ·4C´njk{ªu£õ9°}¯gž‚Þ´qãúÍŸ_V~êi±•½Ú:õ´ÈÿÖŠƒÞÚ ÛžŷèX ûÇ3°ùéVùY›ä©_2O­Û„_ bþéMÏÐA¶n|ÆüëºõÁ=À_`ù)›ÛÚ:Ä÷jí03í[ÚÚÚàPá›¶Éy˜¶·:ò4‹«Áæ°-ìÙÜäég6·µBkw´ãŸ`9®&ö §m8•›Ðæ4k†8È6sy{»øhqÌmöA>%þÜÚÞ6X‰¾ÑäÉ“KÀlˆvßnõ­ÖçMTWaYýƒ ˜Á,äA‡.\:—¬r/_áAX=P‚wN ‘À]åz±š\s•{oÖŸ¼ØWµuh±X `OÕ}6åÛSÀ#ГSîåðéˆZ‰Âu*©Õ•e~“÷N6mÄxBVã¸{–vë·¹zH~³ð£2s¸›ÕÕà×¾ak“¶+×õ&¯aú8{?TF;Þ\Y`z“z$¸­Ç‘oi¾kGåù•­§Ñ&¢¤Š ? ¸Vë03O‹µ`סRRÛÖž ËMZÅNªL[Û=Ö·gqÿ›ýžb'OµÒ¶O?ý4åññ€€íÛÌÌŽ;ho˜¶oßîÎc¦ò[ñÛ[•­¶Ù+wuu©ŸX0»•ßð‚\ B ­U|C éœÀ«à6|ƒ\ÓÐ$Äh¨ò£­²ºÊs+ÜÍ‚ô#`p¼¹y"HW‡de0ûðs:´)ä‹B^ç}Õpî§) I]ä¦dMx.§}®–’?˜ìylBú×ÂëÖ{bÚ}ðð“¶fm‚· %»ÉÚvS^Ð[Ë7¹W Øh=–\OŽ y©ê·K.oË»!EÅŠ“z Å$ì¤8íxæ©6d±™,üyÒG]hËjdúSO· öÈ]mnu’w³ô¼€Ã#4ÓæVßÕZ[UÐ:UôRi•ËÁû¡õóò×:ÕëÀ~¶u¶ÑCB>0ô­`8r<ÂÝ»÷n— –úk´?c»i“Pø¯¾1úˆ»ôÊKó¢ÇO_;±¥Ëa€¦Ê¾æ¦’éÏÊ–ð -âCÝ»õcœ'%lL—Æ~‚´àn*ÍtÌô)Í«Wù­é¢[žs`tº ë5qíF­õ`ØD‡‡fŽöéî 7Ê$7ÙäxÃð·Yˆ­Ê[¿?&lfJNK{¾}û³ÒaP¨Ò•¶Âg†<<¡v…§Ñ®ƒU³èáÑŠI\£çæ¶VÂz»Ø¿ò0 o×î D7‹á³¬ÊÝs[åÉ8{}ùÀ°lŒ¹ùzs ¼zÀж÷4¥3Ü«,«Ý‹t›Ý‰g ð¾Ý]Չïî=°9à{CK“ê~¢"Fd ´lj^ ò• j°7nܱø\„6ÕÐ@l='Ä;»©â-Ò!Ê×[ð¢dÊÒ±c±¨ ë$àÏžVÐ0n%N ø¶ÔžM«®¼¾Õuƒ…NA½NÛ­›Ô*Óa!UŸÀ |=þŒá8é·y|̘•s•Z –çèhû ‰b·"ö®f-qÕç ª†…-,”·ö¶MOç+T“5ÉB8Z‰( * lëh×Ö _ŸWú~ôª\±Í·Df•>:K±h JNBE·Û®íÞ¶¶E‚;Ýj×kçê|ðNoÜw™Ou+Oc=x‡¸Én™àq(ÿ߻ۑìÙ™3g¢è&K„ S7¥â»zß"-]ôoJ-MÈ t™ÑïFΪ@´EîØÑÂF«…uMMMH+wÙY ´2¼æ»] ¢*–¿‘¸¦ŒUñc>x1 Rß½='±Ô®d+Ý ’Þ¨‹Iá’yªêYòmEå-Ñxè9 šz¢|ýU­´Kå“´süDè-Í„ra:CÆje‡:ò£Çޱ6¹k2 ÃnzÓpNøºIJßÑ\"Ò5”·×¤h¹· âÚªÿÐúå-ÞcWŸ19.U-)qXÍÒž›5ÍH¬w·˜ð«6§)M*ú#Dºj‰9š®‹e½¦šs+µ8ŽÜ ëÈ;T²wvÙõ(L£½Ýó[ø½»—{kÃÎþÌÚ©½PÓ+¹j8¸mVªaˆVH}äàýl+Îv¯„NëkîÔ¤4}}ÈXë}/d·ÃÚ¥`Õæ)t‚×½ê:ê†bM“±Žå˜·ÿ$A ‰ÈZÚ£íÔ™¤ú-qô¢K#¦ ZéVßõÑ«oÙ´žZÕ1¬ÿà.”³Ì“kí5@«.‡^uÄ6p7©»Õü ÷ŸÔ}ª"-â” P7¢\B°cܸk±#øRê;²µŸ1je/\&ö3nâŠZ{ܘ±¤v ÜcÆŒ£êÀ#øD\A®ÓA`µjžO²YõL®¹Ú¬iƒŠXûj!j¡Â‘Úé¹¾£6BH#bÇõ­"ok:øIkÍšÉ,.¥2C)œòv§×[|~Ÿ!LQžç:a6Þ‰jv]Å›Ö×ß`[«Ï•`^‡|P+ü!‰ÀVT¬ž,VI ϼUð[ »–ïÝ'=ë¹TnûlÀfòãöºðMæÉ@O¯©•µºÞ²â`Côê[­¢>zNœ´zZ+wmÚŒv-BPi®÷¬\¼I­ã¬v*äÑjùÐôj~k›©U¥iKu{P¥6MV;p×ï íV ƒv‡ù@½C¸,þ «ô…KÕœUe}+'À—•™Í~>ä­ÄfýµƒìrÙ½jƒ„¬G•£Õ6Eà s{WpýZ±«´Z Ú±Jr0…»„ ëûØðÜÜV ¢2Cr¤h0÷»¢¨¦!k¶í ©Á5õífb^˜>w¸ ÀG’` P®^jw¯{…]{tãÂÁÓÝ{i?~òÙ:Œ½êGýᢸ½û‹ 6·d¯v¨Ó¦O"SÅëà©}fYúOSeÃ:{oݵëǦ©½K ìݽ÷üUOú<ö®áŠëòŸ÷}™Ù°øÑE ­Í ]=–·æ ì7™L«Ý•)½çtX%iT_ am÷ iµ‘ëð#;ö á®»fêMãÒ-QÌ;‡2ÝÜîS¤ÖáYÃ×ÇŸ%hšÉßÍþ]IlFìzT»nmµ»©lutqéWÏ7Œ6$¨ºUm}PD‹‰.™‚k—Ò"Nc–³AD€Jí,¨-ìGc¥YOÙü¬X5«: É@V }ÖY¥aíçöúÃ÷Y/ç4¯“àaAT}Ò-§š~–¾ñ·ˆBÂüác¬«jš´6LÐ*Ÿì~Á#=›À°é¡ÍE/ÓC‡Ä„o…±9i€{X|:\C"‘p´…kòö¥é‡*„….–ÝøbWîfõ€§žÝ·ËM:ÚÚÛ[Ûª?më4ŸF¢êî6ÅÒÝæÑìB]g^xê ©[Ñ· óYN«! ^Ö·Ÿ¡Ó)ØKªÔŒŸ…¬ç¤=~pªÍg Æ+J`¢¤¥vN `ÔÍmXrÐútzž<°—bF•Ã/ø$äl´éÅÿ7fT|¦“T˜I¡„¯yÒv´okÄñ9|k ¤I“!Mš4iòÔ)“'OìHwMš2YK°…ŸdOk'Ýe}‘i0yßôI2‰“0eòôi“´¯ßb~Ú´iî“ —O±–kçbªßAàš´¡–¬åwMštgΈ8–Iwâµ¶¾¯yä3fÌp¯<]¬6mú$<9î{ö3uêdXÏœgÜDœaq ì3#ÿ4OþôiwáÞàŠà&Á›‰é¾©3fÜÿß3CÎÞ;ãžûfÎü挙Vºçž{`'ê’Ò}SÍ̽3ð#ð³Ôß+ïnîùÖÝ0…mqë{¼Ž%Ì~ŠIpBfÀLÃXQþñ^ÌÃéÅcÞÏŒoNÃ,ܸäîû¦Ã„ö—[9™Ó½>ÿ^X.B® gÌs>C.™jžºo‘Ü+?h¦c‡°ä^˜¿®¸}ægDv"gˆë'¾"|(vSÕ°øQi˜äg,Ð9^@ÅÁHÜ<çÜá±r ûøˆÁ¡¸<#¹ž}NƒÕVdÖºRîº.¢QÈá†æUï¢gPÇ¥-÷5ª’/eDqØ…~—ªº …üdêB¹jr„Â7Èu˜Å7µñ7=““3qÊ=Ð' -ê^žJ¥ÔõqDQœ&B¥íÊÿsÓá'xdRu}úh¹ îü»=«Œ¾*¾þ«$-Lö%´qNû׆IMœvõª+ô¥ÔõÃüüûïO÷9ON*ðú¦”o׆yõûÊŽåÖ)õ¸]ã}tþ­='}oã¾Dä ?¿‘ç pÚýnòB÷SxJ…¸î)¿« œÆ ýÐÅò»"ž?.Ø9nS¯qõcÓn‰þ´ã³ÌŸ¤ë¦’¯q>ý§ÈT0¾©¬P§5• øËSýhg°Ð/é³~*ßú©€ë2…ÜJnâ"u2üßõœ»“¿ˆÎ”ë}©dBãl_"%¿iª/YÈUKõù?Et « CÝ'Éx$õúF©DE’yÒR!&öÙÓŽÙk?q¿[Úó`‡}ÉBî™xŸ×‡¸Xa¬ˆK©Þ9Á_‡Ö,F}#¾ÓiS¨†\3®hT¡¿Ì¨Ô_…“ç)rÈü¾P·QäOç'Æ+€cü¦ÚÝÕ•ÒNcq`"~ÐÛL"é¡ÍÃÛ½¡çoµˆ½ÉýÄKßO'§û ©Eü.º*çožxùºA,£úV‡{(ðþˆ‡ÁkT·Z5à;øfò“'Q_ü2™÷¡þØÜ¶RèóŸ ÷$K«ÞH$,+ý·áõ²gÒçøiýÚ†îçJY|z˜#Ï{§ïGÛaµÌÂÖ^}Q4-^}—£/…*Nî0ÒÎL<à>€3–ðìÙ#™JzÿÆ´^ =Ÿ(œª%«« 577Ìj©©© ¦|]òž¢r¬¬%6O"SF¢7 »ZWœøßÔ¬q6¦Æ¹da®2Kå˜b¬ÉÆ–gÌ Fs.¶-c@Fva$Ÿ-dÇ™•ÕœàGX%½Q‡ÿø‡Ñ•gÂuÄÖé*0¾£xn'm‰Ïð[³1¤6Ä·2"ÿ­lðú[»gå ·ˆ\ B#8à{MV ¸û³1MAxÿ®|{ìd¥H£P~¹×LÀoX”0—ó´Ðsa´ ¼jÊd2žëT¡uéÙr˜KPâuQÏRN¦€³WÜUp.®Þ—f|{^V¶_t™—¾>#x=!'‚Ø=]†$ø0T߀l”ÞñEr‰Eð:Ü$ÀåT(î–Œ ß2¿?SGǨ’þo‡Þ¥ÏÓ‰]¾Î#=1áþ¹VÙ‚bXXUøNØß½ûKùA?øº¨¤ö»FE_;øÜTB¼Ç?釬9«ïâ­mm8•ë²1Œ‰Ùs‚ >Qà÷˼Û?Á˜o)qb÷’Llq†n³8® ð­1b7Äqkêc³Ü¤»'• OíVœ +ßô³×(YmøxŽ†ïš±Ðëò*„¿Xêšòœ;F›?®ûº0¾KJÀë/fêÜf&g\—µ¥÷ÔœÃ?ñó¾mÿ$k,ËÅ–dE¨œt7dÖfb]ÒþV©½/ëÀ7²âhÎÌ0:£}ñ*}µ*¯Ü‰À­w~²YKG^ÓÊ\Oýnðv”½`þœù Dø]…0÷ãS qEÎ@v_ž­#õ}«’¡˜.!Ói¹:M}£‹‚Ô^¤\ ;c,uŠn?ï¾-S§‰n-ú­i"Ç&¹¡V;4L¨S~K*£¾µ‚²*Ç·úr@ Ä~W-ïuq—"j’¥\ØÜzGNÏ[0gÎ#³ßDð",¬¡Œo¯ñØRîÇÚç²±ÏIÅM¤¾Òàã3±kœàžš&2¹àÛTß9Aí)‡×Áí,º$‚¯•º{MÖwg¶®K)½ôTß*»!Ng ˜žÊÄüê‰;Ï '_RÀ­Þ~÷yÞÂ%/@”iK*‰o?‰ZµÞ7žjíI“jaÔ·û*¸¯^¯r\í¯lžœ€Ú#rÀn þÙŒ„¸¤6d®· šN”ÔÏ XÛþ‰äøý™ºóD5¾—dT‚Äqàû¥î>˜1ý·úN+GŽ#ÁqªW+L%£‰íLSß´PÍÅï%Ý峿5ó$à‹W­y‚†v¶Q«º_,<¯—çuÑŒišº——õ!ª©Æ·Ke$Uù-f€ÚZà–¼Ve89'XÿäV¥ò Ä”œA¢[sÀçgø&‚/Ëy˜'¤»Uÿ¤Kªï}Ӈ̱ŒrÌÁ1ÞÉÕÁ1œøö8œ<n{AÃA𭽤kKÊZz Ÿ’·i‰Õó°Wýz:çäE¸/JA×Å}Eüì”h¯‚g»Æw@ †Ð¤@ís²ÃÎÍ ‡)Ägr€ï: ¸¤ö0u—ñksfUÕþ†Ù âßÈݳ3"4vk-w–Z…–Hð­1éwÛž‰jž¸ït‘m¨þ ±ûíŒÈÿéÏ1÷/5x‰êÛÓ;.ê’²V%$Ó6àS4p úM¢€[}û=bCš'ô°ô{ˆº–HpúÜðW!˜létñ}™46Ö|§J×"¨:Ö±lìc¹aÀkÈ£îFéMº[3ÁUŽeÔaõAšÚ•OÿD3OÝË-ÛË0ƒÛì‚{ßý9[tŸ’OåLém©ïaÄq ¸qà!ñ¯çžøvw…ᇠ­áÛå¨ÿ÷µÝÏ<©ªnO<ñ­gHsÜ]t¾•Méøö,5)ºïOÂ÷,ºÄ‘ìœà>'g â‚cÙM·4¸ni|×ÝêTßj­A•àXí„Z]ÎϦkí-—›Å•v«¥—û2&²f‚êœô+¥—šjã4—3>üSÌ­Ä9«<²\ÕvbzxL‘•ßølPŸ~îѤ:͵æIÞW¢BÍ“`@\©â^•‚ëÿá}ãý9”Í ¶ŒV&†à&|_˜‹ýeÆÆ÷ç²Â3¹ËÅ©T¹Uœ IÈöºrqOa޵¥%jíï[0ý#G‰%òZú'¦ú¦pß%54èøà"É/¶È(^C èR}ÙÕªû~Ú]ê{Qµ›'ô;]\'¨}},;ÞÈŽ÷‘Þ£Dff$![:ã(½ë$¾Ï’êû¬‚´³}0}fX¥HorðÝK|†ïëK%Ò½½½ g¯0EFSq¥¨,èªj’ù5å ä¸)3Ÿ9Ëõ×ÙOø¾3ßI+•ø“«­óVý°ö;ÂBxWíß1ä=CU6ÔFóçíód°ê}»ÔM<&-#sYÌÄ÷x ß&Çë.Ãêƒnï™!¦!€Úþ“¨,¨V8Adø'ÛõFXSFPfÇ‡åŽÆ`Öz?ˆ{[7}É$‹òˆ~¨åÊûGüYáÇ!«•‰öuŠÞ¹§/ÔzŠü«ßçIÅeqê´Z’úzÓ3‘—nÉ(â™/ˆZ(ªsbCÜôO†,äe1›çüɆ¸Þ§m žK ^gÒÃT稭†%EÓî—ñSý<®fPZ]©¹¹9`Ö³óØ!ÿ°ŒêdæMžýÁ†Lá¿W­4šË—y9îFv‚‰oà¶ú¯X(£ô àfmnº¨C CjÙ#6­Ä:'ãû×1ÒÝ™~ÜGàέ%žÝÓŸ¤¸«¡`³:;¿Å£Â jÕ°{–0i(ué—°nuõœsÏ«¾Ã€ëó$–ËÜb\†(±ïd÷¨ºÌçý*¢hM4‡äË8-éO'Mû´]b)nƒØ¶ ðZUßÇefŸ˜ O¦–}’¢½ÑRž žÍv´:dêl¹GšÏ[°jñí:Ìu)qtù0WAëÒó* ¡ŠÍ '¹[¾s·Hv_çàÒHù¼»‡|òx™pWÔBóL @w»â¹}1§¯ºDýEÐ_¨{ÐÃQÞ¿„‰jh4ï÷]ßîæ9Å]Êr_—RFÕИéù‡lƒÜÙ©RwKé¹VÑÝžFŠª¾G¹[Á佡k–ÚŽÂFÎÂ3I Ëõ •Uê™ úÖÌ@¶Cè\•áì§Rá1á§ãÊ7àN@_wj‡Úg‚yRÄu‰ªý Ñé¾ CßFvZ,s‹Ä÷x## .-©ÄUp£ôÆê(„ïQ¦on5O—æäÐÅ:²¥¸Wlš+æÉ°ì©:Û9Q Xr@¸Þqà™íÁ­GÅàúΞ’âž.y·*Ÿú.² ÚPÅ긑գ¾#<óÁ{«dƒÚÅ è&kÞ“¨|KÝ ì–ùñ8µÅ¸GØìÆäTß²AÊPi.;Œû™'*jÕv:Âq9'‚×$Ö÷!¾ ·Šï*IƒÜÏ’ânÑ0#éow—ÿHÕÊ›'~Ý®b/ØUrMˇ—"†Ñð¼vÅuÛK˜¸ Cc¬Ë8UPRÛøV8nÒ\àä¨d. ã Ÿ™I¨ïTÌ–ÞGëPn“âÎv¤»!ºb¹.ÅBMb[ZY_ºb¿sûÑîÓ™µv‹ºù®.QW?;½ÞB܃riÃÝVl¨ß/Lƒî}ûs¤®ã6©<«‚®‹š§1i³Â‰)´½ 1]cºq-ë‘9%]~Yž&5Í"¾µ2Ou+òR=‹.=ñPtIw¿’JÅAúŽžõ¾·.¿Û ñtºŠ.I}Syl0¾µÎFÜK´kà.º”Bëæ¯”Ú÷ZÑ¥¨8x²·qÉœÁÇ·‰l•Ý2ïAðìT‹àE;œd‚º¨æ‚ÊöqZ›5¾»éÝî`w¶Ã€)\w÷@ËY ÁãÎîOÓ•ú ÅôÛ©mUʈh ÿZkU>Ò¼gÕ¡ÔêRóL4ï»Pùœ“©ÄzßžWA«½ZÔPŃjžhÇJ%–2He¾M ^ãt\Ãh™ð†STÅ[e7&DöGÍu˜É,‹å}0D~äžý´UÛ•­*|ûU÷Ô}ƒÒ/‚_÷{‰Ò† r—J¶ºÔJ)îÒ",,¬›3¸øNÉæ‚*»ÄróLj›Ó=þíXf6rœP^ë´¼r)«‹ÈtäøVîàT˜'¨[w;E÷°Ìšá€o7⦲ÿ$•s¡qõ«ï|VÌл.šHsÂ7šd|[Ã<Úp¼Î,5r %¸eÈ¢Ë:Sƒ‹PÙS÷¾5뜞~åx„øÜ•9Ž¥ö¢J&¦g"Ù[3ÜÄ÷Ò ;kIoœZ<^´JªžŸw$o“ï¼c ÔÛ?V‹è`ÎpÞáÔ‡hÞá̪¨Ï ¹MmÁñÙè™@ÞÀ):àrZ—›.Q>5¯®¬©$¿EÌæB;Û~~Änùþjú$kŒÖ #^c ,YøŽ[ÝÈġÅ"¼ïAÄDË¢ªRåñmsÜj\%^hus dZmŽj`¡¯B*•r´º¬dŸ'ñ„*¬RuЖîÎ-ÐQ®Zá⨻½¬äšõÁ§@z'Êæ}{Þ.ĩ٤j˜ µÔ » ÉnCE9>{Êõdó*! ?(É à;[M)di[‰<¿«öº¨g»ˆš*áHˆoÙrçD}ý áÛ-ýb™¥±ìB*»iV·Â‡Øˆ9r\ùtäÞwŸy¢ãÊ JЛŠõüK!ÁÕ"JÊPdèKÅ{‘È/0*ù;¯rƒeП(…€¦v+9 yNé _Ž0·hIæ â»Òæ 5)Ø-b¹•Y‚ÔV|ð”"MÚ×ö““Õ®¸­ËÚ'‰)À]NõMgIÈ|9ý¿MçÿߦËéùT8)K#Óê¬js+a»áÒ)?ãšMUá@Ñ6h}¿:‘|]ªáÈ©‘Ú xßš÷jRÛvK–:5¸Ä>‰?y“Åk»¦7|‘Tª_R5ú¡8û—?µdxÿÒõ/­LÃ,Nÿ}•˜þÛj“Ý&Ä×G|÷§“7=n»E‘„"½eÔUƒŠ©†›:~[ ¿¹‘•†Àə⃃oGë£,²{±Im÷TF“ÝePyqšR5¾„U‡ã!¸ÍV«¹T°ª‰[w›¢{¡ nÊ^ô!8BtT|tßZ¥Ôw°Aä“%ðìjûƒûŒ§aýέçrÏAÀó~º§ùC}ðkžØžIv­ež#ÅÈ.«ó–ÞÑ?BÝÝ‚“­á<ãñ„ÇxäÊ%·Ü-ÜÇŒÜû_}Î'( yt6d‡Úéþ—÷áãÛþö“ûçž°Þ7óŸ€ü¡ïf3 cqÄ·uNõ]‡ÎÉ¿­:Ì“6_¢4…—µP–;7Ls 뜢›¢Nâ;~&S›~ê«KHX‡¬ô„}ô¡Cþ•ïFx«ß&ñ’iܹeB†£'GK5e¾2,èëóDÆý(VÿjjgKP«jšž  ©³§ä«ÇÓ¯tÃ:©—÷%äÊð'`´ŸVòç ?( ~à±áÇÎGvk*ñ-=Ó*¡€Y€/!3ÿ¾ú ÊÑ6Ñ`¨µ‰×˜Aˆã”êvb8Ïä«g¦²Æ:¼Õ“¨ç–€tæÔû®†³ÉUdõm‚›¦nQÛâ8ù YÖWŽ·<`–ÝzÐkÿØH’Àíî9„d5âûÈ‘Ã':-TöwŸP†éÚY#º$ q FÓýWÀ-x 4‚c^Õà"Óp®Íîeé}jÙYé%òúßW}ñm"{Õù§[F€å“mÂàþã3y¾$µ?rˆî:‡úÆBåÙFÀ)­Â¡HÆ r¯õ¾CLLõÌ"é[#\O§¹Œ•½¿ï_t ºXîf;tÂ=Ï6"X­ÄËá-Ó½C\'|ÍŸÁÁ7ÊO ëõ6²5vS€$—(/Ÿ‘DJÓÙ ªÃQqZÞv ?Ä1òš”82ú‰éŸÄÌòéç­˜ñ s¡ `ôÊéç;ÁýiœÍÞëzðÓÈn"8ªï£‹>NÇ­.ŠôI$ÄWŒy1J\ÂÚv½i«—ü¡u¤úõéû—Ê,t¸%²^¾Üêô˜çÛI•ÔÊÇŸ½:Íëºú­ŒïàÖ}Dj?¦G8þNð`i‚êÁ·û|âѪ\ ùó×®]ÈV—Q=8®‚çMUKê[ð:·.–i¶u7fÄB]Œ; ’‘ß.isålZCF‘ÄN©&É;§^†%ðПJßó9ßú«³¹÷Ë)Ä·nþΟT^?q÷y”G‰ÝþÅ+1pGpÃÂÕ³Î#Ý Ó} ‡LçCŸBó©M쎓ßÝ»ì"—å=ü5£ÖÆY¤ö›G"»?Ü<â€oÏs sšâ&·ä˜¹é±3­ÇGw•†L„趈h9j‡7ÁÍ÷;£Ì“àdðƒ³ Çªû*¨„ñ샰6ðmÒÙ #cOue`I,³ÜiS¤ÊW>Žj§¶£Ý—švãÇ îÿ«³ fý§sšEœeeD,—ÈvƒÊ^.}¿ëªGdCl}Hjð‡ÎWýnÕ<Ùúà'`*P¾p$pühÃyn×ð}jÙYâRq‹@é½R,pCXžÉù|æ"„8L?l½Ø*´Li³˜¤èv[NEXß³cН6û;øÎ økA·\uvY?"øñ»1¨þR­à[Õp¤ÄK4OŠ~× ØÄó½*x”>÷Us¿ ¾3kbÙm¦y™¬ߪ!žYе¡I Gn§žê7™5áʳn¹b8LÔ8zÃYÓo@pŸ=ûæsïÿOçÀ,Âú[DméŠ`þ ‹Ú¶îžþÉ3LXƒÖ–¼>ÜÕï@ÓTc7ƾE#eæìã çyü?²!ÒKŒc ç‚7Ùø^q!òä– ¸Õ©ÔÝ—ÀÔó¥D}dŠ6°NÑ›s«oÿ¤*Åx@/ØKB>!܃ryŽà9P@˜¡)‹(@V<5þ\Â7jpjR±:Ÿ²îž‹æ»¿oÏË„ÉoµâފಪC ¹¿õ÷]Uê;å|B¦dç‚Àè-&Ám¹½^“äDpÏâAÚ9(å×D—«v±!ÙÐVÅTöw[U¤»¯õ1 ôøK?6áªaÁ¸å*3ƒZ{úMg[¢[ ™ò³n>[Ýýõ'æþõ'T‰ ³NÏÄ6Ošîÿ8ä;ú”X2ãShy¯5y ËUv›_8R]Bf„Œ‘Â?‘Sàµña€uݨ¸1ˆ×”ùÐÒÝV\\«D´fpkøcØIç„òª–¯Â6 ~°V V¿ûïË]…¯•Pß(¾ÌV0ø¨º»Ëb·%½s[=ð]Ký(a›³Z´Rë1J^Sã—K?sÄ>{`¦8‹ÔdcæúKÏR_wép‰lÈŸ=E8þ­›‘àgµM >aĬ[GÌ¿Cðz®7Âå6lEË­rË'¾ù9,½D|¯5yÝt¿i¡Pý“­ÙS´JÔR«ºûÐ÷?×»ôbd7`Z˜'O\™·›/Dj ËÛ²M `9LßYsû­#?h!Ú %_Ëûê*|’ÙøÀÙ»¾qêàq·-S ²Î=Êó 3xÐKn§ v^îq/݇çfG5›'~Fz]înó$`Py¼@~OÜH µçMµ{ߨ…%²ÕX«¡Üß}Z=ÁèsÏ~á§Ï.Ã3£.ù8ñZ·¤¸o½êc¤¸)3E)nà5æ!¶ÉcwœËçZê°Žæ 1}¹%½Њß-ü“–Ù#ÖÜ¡ÉkÅ3%@jX²oÑÈ} .BjCþðãÿx½áۤwÙ…Èqd·À÷# â0M­ñZóeÄnÐÚï¬uºå@ö{kG ˆ¯EÃÄ©`vCÒ’«¬RRhâ½ Û‘ûoK£•kÃûQ#¼Çê¶Jܯí•ïï[ëiÚ*´OVÏeò{¬ªãSw].“ß Sу¥åm"TuøVG{Amä: ÜFFãø6ùW›ã8¢¤sÎSàõÇÏ= H ÓqR›Ime>qÙgÏ'‚«àFõ=沋$ÄÏ&Ž«–÷-W Ÿ~ÓÙSoz|òM#ˆÔ°DÀzÂ…°2ñ¹}Lým»¶ *nÊÀMö÷šo™y£¶Íû¼tK>I¢ûÀ¢‹Öq„5‚âHԖȾôµ÷úQÈîw×_ °ø^? òDm$x"LO‡V¯2ž¤6cša p+ª°É¥ZaËßæj = &ÔŠÕžp/ŒœàaÌô*Tßî1æµj¡×Å]&fty,„Të«gsù]Vm@µªVßrX†m±ÌA—ôvFnþ ·j#»a t†ÌŸ:3Šôþ„*À)œ¢û˜Þ ¥7d&^{!á[æE)% HMS7NïŸ(go>T69'(½Üömé™@¬›}ÎB¨­†‰lEw£‘ݰüÀo´X¾@¸%0{¤ñ '—^¤Ú&Èî”ev ×û‰‘h˜˜ìn°@_?Jx&›Gþ¾c ,ßQ-\>·NðiÖr+“»Í0e{Õ´Üq+J7ÔAÊa ¯·ä±Ð¼]»=Öð¿ê¨ðM\(Î<©žâ uHßàǪg¯Dj>ßxÆÔBKϱçË:dC›'} 1˜¹é}?gó:³ÕâÙm´!úœ³‡ÁT&Ÿ<mß ´5Ñ S!´¿p–\x.‚[Èí«†Y¢ûì±—dß6~:$@p€µ¨mÓÎ137ŸuóÙT’ \|Ïžx©ïy_ýä#SÆ Ê y"ø’{¿(üîû>ÔL¯¸ï/j\;ëÒà¦ôž7Š8Àºó¡O‘úþÇEWÃôÅÿïs@ícõŸ@Ñ qô|þå•_‚ LUŽhÆ åöûc`úÛ-cþøÌE¶^l6M‡B,Qš¼¾[×àÙ‰"DþÖXõwxâ MßÑ_±ò@¡/éaô'ë‹.ÌÔõiêUME ’[ùÊÚñÃ5’ëB''¸‚˜¡÷í7Ðvµ©o½#“ÝÙýFîf$»÷YÎÉ…Ý-Úµ<÷œaHmâN×3Èî1—]„8š$ã/Š›48 m ˜…@Û„¤÷”M”ßýåϦ!ÈF^£ýuN“¼þîÔ±ó¾zþò¿ù,À½ô¿_aªoK€·Ì±~–Þ ÀÉ*Ysÿ…Dm`ô¶‡Îß¿pæItK§û"œ%Ãx êûäò‘šú¦•- þ…Ó@bA¨ï ‚ט'Ž'¬î±B©oy-4¹MÔVÙÁé­1¥R5¢GœJ(=¨Î‰V&¦ò"|Ñ¥§‚s º²zßê¤ê‰ê ?·zünG§¤®±ç#¹.ž¼S¥¸'«v0†Lõ¾«N}[Ò{¿îýÎYœnqKoLnÄôE#.€Pœîóý“€l¡Á%»WN@£‡Œ:5‹+…ß= “ι£P}£è>ôýÏíù;rà5ß‚ŸX:8Ìv?yuú‰ ± fÑ9‘‰oíeï­5yÒÛàí£ ª>d p/­Êçn3p6Q³ÉsƼnŒ_ýâªi¾ôö~•×àáO¾Ÿâé}—îMTû>à*P½ïðÑÂðÝÓÓƒcóà+Lè wªoŠç$¬UšÛwo òð/þâ\,ºÔŠ+/»ä¼K.¹äÒÏ|BÁ÷¹€ìq—^„Ð y¡Ä¿pL Üq 5LQt ¿ûöQ0qËgÑû&pÍÝ.ƒ_~Ÿ‰lœ õ-ñ ËÓ ²‰ÚÂ-‘Š3Âòžû… F"µaÚ9ÿRT߀fÈïýÁhÈÇ Ù˜9¾â*49'§V_jÙ&Rb¯¿÷o·ŒC×Ù­†h%_ˆÅI+«r›x»ÛnˆLµâ[ëNí".åXU­.à šLø®¶úžÝò…p@Á·Ín Uz£ú¾ì³Ÿv_öÙó/¹ä³(·G_.̘‚Ê&õ=úR¡¦‰Ý”™vóE(Àµ ÏDØ&·šuëntQ¾7eÌ#SÆA ŸÇyÂì¹ý7Ÿ3=Ä÷ß|–Ô·àø·GivwÍ»ò€i¤öE#¬E¥¬,ˆ†ÉÑ•WAþGõ£×wd÷±'¿¤|Íõý–ñMN~ß1þ*‘=.s,öÁæKþ°e¬Àw*­K#‰Ü¸ Óӌܭ¶èÖÂüÓ "jHqGâ¤RUÚh> ¾‡vªäuÑÞ½ ½ anÅŠš'ºô–·È×eœŘû½~Z&Á¾/S’ÞÓùyÁè±—DŽ£ú@£ú† ÚßfAå-Ÿ¹íæ+5pßýåÏ@Á!?û+£Tç„Ü2O„gòÍ¿|L柸û|à8–["ÐÔ͸רýüбGHpSB‚£CrÕ•_ôÃ7äo½é œ^Kv_¼†ü´GH‚_0ûŽKM¿ûöQwùsߺÝ"øW.›%ó’àÂ0Y|Ïåf5Áo~néÌ+}óº'¾ùtNàOHí¥÷\F†Éšoíïu]ÓÎù—[ྊð½÷£!Ü?¾â*øÓžï†@“£gåÕ µÉ6¼m›ÈÀJ&è–ïÛB¶CzKÛ‡è”ôIåûI¨MÞãÂ?¹ÁÖÚ¹…ß»^Á÷ v¦ÊYPŽ×‚æææl5¥…¨µEç"ž¸ðX­ðÙ.¢ŽJõà;®Úó†KwǼ—ìG¡M¿«t²_G²Oô²Mì(_|ñÅHm˜ÊÎÜ—™ËGˆKoÓì†<zÂø o»ùŠ;'| ]Tß(ºÙ0+x-!ŽñÈÔ«-~ {Ñ}׋é7¯[ôÍkAeKóäs0 ù•ßûäcU§{ýÜë1³nÎ ¤¸×Ϲ¦€rb÷^MÒä6&tàÿ¸È†8`úå•W‹.‰àùEë0ýçÍ7¾Ñvãû¶ë-Õ÷®»0C¯fEw¨Il;€é×;–Ô„ Ý餇Ȱœ…rMûâCæ9f&¦ô–A¶ ý+uÕ¤ „ò+U”ß}ûõÀîé_¹m“‡§Ž¹û¶ë4Ýà^rïe ¥î^xŸ)ÀIˆS¬Y0aí‚ hkÿÇ…£¼ðj4LÍ ²Ñ?!ÛäÙ•_Óß@Å-ê ˆßŽþ p˜¦“­_…é[›þÛ?·ÝdJïί yò»-c‘Ú‚ã[EþN½þ«ÈðíàõõŠå(¿ÔþkæÒ¿sâU©V”B|£§ÝØX9¾eYA*©º%’Úªï7l‚÷«¦yA¯ùHpPßcG_;vìX÷7\sóMão»éKÀnäõ7n¹jâM¦G¹1ëöÏÃtêW²%¸Ç!Ç5v¯gßs;Õœ3ûN¬/øäwÆ`m‹Úãæ¤¸·<~ëú9×ý¨~4,D·„Ø ¼~2K®ÁYìayw¯ùëã+®² þ׈ot½a ‡©ˆ· ÁÔ¿“ÍâMvc&tUáŸDçìH“ÝDðKMé³ü³äÄ)Â"tìâŠð]NõI#µ-v¿§äaC_NCtó7GÑN¦ÝHík®°FóE7ÆÄ›¯üÆ­_úoÿé˨¸Í„o4»1Ô˜ z|¡´JÙ ½Ö_l:Ý×@^:Ý‚Ú+æ~u7²{íœñ¦è–f7fÐé†)°{×߉Ìþ\û£•_{ÞRßfµ“–;H€÷¶üµjyÿ|ó rö÷¯Ÿú²¨¸mbbó_£÷ °¶Œï14ý½œFŽïÜņ£ ò²Xæ"+@—ÓÜHVßœ8EûëK–½Ñ<¾¨ìvP;ge2éXæ4dh“‚ "ÿK_7Õ·äõ7]‹¢arƒ`­R›¦q”Ø÷ß{;U„iý}×#ÊU§{åcß0kyƒÐžsƒ9?©º{碫ÑÚÞ%ÝÀ7̪®7ÂúØ“Bn¦qº[&·c&Ùúu7JoÄ÷¿núo‚Ý»'á,‚ûß÷L" nÙ&‘UŸJ&N™*{d©o‘‘³¹Ëë噋…6çß'NѦ2ãÛ"RÛò¾mŽCÔe̅膧A¤§RýéT8²[èî[nüÊ_]…yÝ@m˜Þõµ HsˆI·| ÝXHà~àÞ; ÿÝ©cgßsy&Rw§ ¾%²G›¶Écßxò;ãÐþ^?ß”ÞkæßR“m²þ說—(°Þøýi »‘à8E¹ tþñ_Gv¬wY€õ©µ7`ä¶PßÚ·½%Ùa»%vL~¿câ;Ò¶ qUeg.å.ŠÙ¢ÛÊàÂdÿÜ8qª|S"v[qZe·ð¾3æÝ7ÏWƒÐ-ÕÇŒsÓã…ôþò ká™ÜtpœÒ¦€l’Þ“¾~«PÜS¯@#ÊQz#²Ñ-A@c~鿨-–X¢2Â-ÎÉhD6 p:JoߟŠÎ –UîZ9 7€ûG+¿f7¡üÄÚ¯ö´|–t¯‘Ó–;à ®m_EÝ qzëÄSS½õVÓ9QÍîÝwÁÕw®è0OÔ#àvE’ù}ƼÔóI(ïîK)øîöwŖß Ž]ø6!ø³S•Ÿ–Mûœ}T|7€Gpµ!8¾iÂõ(Æ!ß’Ý×N¿í†i·jkÆ7 m“ï)³‹%Ê!V<0æÑY‚Ý+æ|]ükÇG‹©ä8âÕ7YT~4‚–c†¤÷ó’Ý ºa ³4í¶Ê*QqCÇ1ƒŠØ àþu'HïÉÿw÷]ÿw÷dµÐòߟ½³Lw’×ÛÛtQ ΦᛱʼnS™ÔwOOO}cäæ­¶ï‚ÎDêþ¬ÎšÜ w)mvÑ<¹yÂMèwC` @^ ”ßr#L­j‚סܞ5ó+Â6™yûý÷Þ™»o»TöÃSMpS[Ê9³&¡¯¿ïzQË[šŒo,·m,¥s±þ撚·?>Á8±âà’ë`ÚÛòU\Ø-aÝãb7Ín¤6äΧ¶L~»ë¶×¶LÓ7 ¦øÕÁ¾¾WC6† ŸÄÀó.•­ëñ‘ÒÒø¦–rÜ ?Ìû1§Hñ}™\_¿0zõk˜úzàϱœ&ÀßË3ïÒrÍZ-èÇ£~(ÀZð[n$³¦7Oø+RÙ0+Á- ñI_¿EJìÛPhS‰å·ï¹cöÌ;Öh¡PAÛ9±D7°¦Â<‘SÔÝ0ÅêûË0ýñНŠ%© ±kå$·1#lK}£Ò³ævÄwªík˜AÝ S“àSÑã6Á W8y¡¥ª¾m¡}–!ØmÏ3ó2sFý®ÎðFƒœÊŸâˆïž^Ëûn\1¾S)³" ÷Šî?Ù(7—¦“9äyð«+îD7°ûËÿùTßHp Óÿê-w~mÂÌû¦O»m<ªìÉ_¼F|ƒGŸ„Š+1Dƒ³îÄÆñÿØ"/Ý9O8èn$ø†L‡<ên˜uHï•_ën¹ƒP.¸ÐÚ?Ýx?äQ€§ÅTà$9!»ËT²MÝÁ­v:JðÝWž7ûŒ¬sÇrºÛ¦ùƒo›8\Ø2™ “µ2øI9Š.Ê¡¾ûP}#¯ ÙÆGJ^¡y¢Øþ·<ÞÑ’iTßeÔà“¾~+:'“!}ujp„5ŠñG¦ŒCŽ£úÆ&Hí¥÷ÿä±î@cmœšÎÉc¦ôVÉÂ[€×h›¬‘|ýßMÙøýiHgà8f~ÔôÈV~CÑà“Ð$Ùµâ'šï0¥·ä8À§hžµ‘à*¸!óÞþ‡Tˆÿáð`wú•ãpÕ¡êѨ¾‘Ú»…®.QâLSßÕ3XZÅRÂ5d—”'™½±*øî.C‡±ÖÅ#v#£ërï:Ô7ÄGÀôˆŒH³SÙÿòŸ¿|×W'ª¢›òÈk7Ä3oé bÁn LÙsfM’°¾ËD¶ÉÚÖT,p/­f·<~뮕w’Ù º›òX/PÀú‰» ƒZ—@Á 2Õ7Llš…N7²»¿}Š$õÃ8«Io"ø¿?;é÷/Íí_’@ðÛÊ;Ô÷ð:!·Ak#¦cß…Ú¹á" ÓŸ²¿d7¤ß8zäŽoNå¼ëÒ•ª8ø²ûO¤»Ed>R±Ž¢÷Í ñLTRäö¾)îúÚ—QzcÜùÕ[@w þUAmÐã0½Ó"¸ÈnÑ6a-\ï¯Û¢[èîkHw#¾Ak¯Ÿ? -Q€£‹²þûwÛÉʯYù»Žl¸Ÿln7Ògoº¦èw›º{Ëd ÙkäµImËòp åÍWEïÞ?SÆ»ˆ´$)÷±:܂ݔ1 nàBVߌoNÑ€»Ïol4ÿxú<±>F*k Öž‘LœŠ¨GÓšï@v¬v2yòd@9:'01uéîéÓ&A< K)©¬ĸi’ÌšDWÕ7pÙF¹Ä÷²ú© ré¢ï@– Ç!~¼úa˜bYåÎÕ!ÁUÝ û`ëÜdÛ¸E7‚}’×Mçd:Y(ζ9&²­Ìä÷ŸŒ§¢LU®Åˆ nGÔÙy·aæQybÊû”wsÜÖ½g!J2üñ¨›äŷ߈ƒRº7ÑVöÛ6ä@—Œïš+e©DŸ'ߦCò'Uh{ p2gKtié ¸‰ìIS&Oš4 aMñÀ½w ÄgÜ3“<-Ù+æ|—¬˜óUÑØrްJÝA|Ã,d„ÍÝpË.l"o5϶Éê‡Õ‚J$5€Ë*qŠ~wb³é}¿ºã‘þ-&µAe#¸_·ò¨»‘Ý0%ˆÿü—Ér› ®ЙØ´°PLjÂTÁ%–0/ºHC-ó#)ü©  jÚÞ<ïçRÆ|Qñ Ø€ªð…¼Vâ ƒ—¨”t¯IËÕOñ[ñ=dR%ÌÀ:µ1ÿë,MÑWˆä[¡ÍŠã«!5$Áïš6}’i‚Kp §{æLrKu²{î,•à_W}+î²ìï¯!»×qTÜÄkÈSé%ߨ»Ú2#p€5hðþ _Û2 ®ZÞâÂ?e­{&Šô6kž¼4‡³PË:Ê€ïa™a&£Ä.Ê2OŠÆ·v§¹o<¤vÁ}¨ùà›ÆÓ ÐÝêsÂ]Ñ[­y¢¢Í0 ¤6±Uc.!þñ54{æU‰í¦<›'ŒïRû<ˆ¸`íÒÝoeßøËQ~$%56A!€o7‚›¦ÀhœªÌ"é³OÎÓuߟ ŸX$¼‘u’ÔBt/z–ˆa¹èÑ[º%ëÿn Bœt7 í£gQÕ@⸧:¦²!~¶ã’ޯʼ¥»Ƽ q U-Âc¬L%‡èq[¤V¨«0Fd‡ŸEKJÇ·ÊJU£Bw/§ÍÝ;Ñ–Ó¬¶-ͺqï'ÞýðM‚šf5OÃèîYw¡(=T®m^ …ñ=´ð4«~ëì–y9;€à–³9Rß%¿ò§Tï…4¸ÊîiS'¾¸÷D³0¾™ùÇø†Èȼ`·Ì¸Anƒ¸&ŽZÙ½¼áo±B÷ª¥ßCé½áÓ‘Úh|#¾Åtå×à0=Ø:ðMìîoý†Õ´òë€iXް¦© öSzkÎÉû(Àw߉2üSÝrTxÔÞi¥H ÊÆ;$ºMj? 2T¤)g/(îšzÞintº1í‰]Ï­ÜŸ|¤…Ø-g˜­Š.!û 6Fh–èì‰oTÙê¶ÈkÚ-aZ3OüÜvÆ7ã;m³ûí¬n›æ©“y˜öES39î.¨…4cê”iÓ‘ÝwÍ” fÍ¿çž{}磳¾aWî–ê[N¿™G¾Ÿ¨7Èm$µh›Óp °û›Í"J$»êwËÌ]8 h>òÔ·å»V| «š m‚GÅ(—Ò{:Âú7 µû·ˆéo<¬–Xbüîðü×~iž|EöÆQ7bÎÄ."^;8nÐò‹d¾®èÔ}Ìáñ x¸‰¬*n¿•=½xõ8èﭭÙ=¼-‘ºò5ßCÏûŽ£úq]÷k“ÝZ Óa A´-ãvíCÚ,™i¦{M“D‚ gç9G¸(Ëþ—/[ôЊ¹ß §‘…“?\ò]œL¸q9]¢UBå–ëÿn d€Ýî¯~èð†Y˜¸“mßþAä6±58)ÈkÈÿæÀÃ&»Ï'Ž®7¶¯¾áL‚úÎÆF™Š[f`Juù`½`ʧäm¶SIOƒÕ7{ߥ UœÌÄÒ§ÛÝYQóÄB9„ü1ô•7(·ç><‹Ô7…pK$Ö±. .ÁXj|qÓ-Y2ò}¢6ü•,ï¯þ® trKLõ-[£Ÿo›‡V‰[}—©Öà;Ĭ”á Tp vÿdž•©JÁ1 hÎ9‘™œƒà_€Ì ÞåT›Û-çÊ!KIƒØh¾5LÂà›;«:ø®{;‡t¶Âœ5’Yçò¬iYQ››àša"$ù,“Ú$À»=„°¦@#» âHpš¥4£ÑB‘üa,´Dp£âvS[Ë‹Ú&û Z(N|ÏU«{W ßHg׸Ô÷rÆ¥˜/‡àUÚ}¼5‡ç aà‚ö‹gk„«ÁŽö×Bñ­1w\"¾áÈ™ªK†a”·ÃXó)tNë°v,?jÒ\þ´RÖo,^Ö!gÞ7}ÎèÒâ‰EÎ_0G2ú;}w¶Šl€8Râ‡K¿GyRÜ?jzˆ´ööõ+¬¼¹„ ¼>´Ùb÷¦û°¸²oÇwM^oÿÞk/5Ç·; KDu”Ÿ¬Vå6º%4%|¿þ«¾ -™ÏÆ.•¼þ¼œŽ·8>~À >—WØ!ž'“É þÜÕf‹Vß™Šèàz2lžT^}—q¸³ýdÒ"x:'\”Ô€Îñcn^ûÒ]é` €~ô¡Ùn 6M—.úÎ܇mÛdÅÊ¥&µ¥åû‡KçPU´¼Õ)"[#8èq€øþŽ%Àå{ÓW¶?üꎇIt[&‰)´)Hw¿ÿòßSmªpR±1 ßk-¤-.n\Tù;»Ðo÷úÁ7žöWíiøŽôÖ­ /BÅ7WóKë.Ë`iº·lÉqStÛìùœår”¡ ›±ô9€n&µ‘Ѩ¾—ÊÌò†¿Å… ‹È6XºèÛ€rÜÏ6=ܵ~ÎB^Å7NÔ[çC[èP»Jd7Lû÷/Ñ,”øö‡_{i ªï÷ö?,TùÎGD«œ—šÐìFˆk å+óƒW÷xÌäŒë “‰}AqTLéÝWYþ„üú«ôÀ•Õš'¥‹Ù-Þ,ú Ê© Äwo/Èïîžžž†Ç£ï06n7¯Pa 2ü¨nÈ0—-ïË—ö0@|ÊÜ6¬Ê °ž7ÿQd7NÙ¸É- ñÚZþÝ.Ë3éÚ°¦€lœ’î&Ëöíø.ÍbœÚ¿œ¬‰lQ/58Àa aJ† ðßÿ{W‰eªüø/1}Èã¥â¾VòúóÐM;¥½e•¢„$í1dv)OÄ0fާ_~að©à²Ä!“ÔŠƒ€oQïûdoã’9åj4oâû¨7²;¥øÝGQùÓì†ïˆÒ¨ °n”¼®oDv7¨e•Mÿ°‚<œnÛ°bû†•?^ýÙ&ñíëW î~¡uÞöõËUp#»±Ð3¨»á¯˜A|#²}È\¨ýö±f´M`!Ú&$½ßø—”¬[O”¡Ú¥k‡âÙ‹¹Š"g#{¼$ûµ–ú¾>Qžþ9q:C .R¥FÛŸt”„¶CkcÔ©™ýY§Ð(ûϾ‘*·IqcaMS)Àé\÷då(ÉŸm~å¶T߉N©šŽavÇ27jpô»!³¯}±€õöïõïÿ]d7&o½° ÈþÃᘇ)Æï~"òéWŽ÷§“VO¹é Ü= ©'jŠ&½!ÃïÑœ8Õ*¾1Çrµeä€×1ImZˆuN*h# è±b p*«„)@  rNݲ…ÎÖñý°ey/Á)"[ÂúÚÚa¶I©5Ø„ÔFXƒÜFNyAð—ÿ'!øï_Z`á;èGv–¬Ä ¡âÎÌ ðºÛ¬üxøS&v«jž°ý͉S9ÌÄwY¼oõ•Y`z_é,¸ksá~Ivß•ë»#ýÊQ²PDZ„ø¡--”ï …Òü?Í‚Êm„Êîܸ9ŽÎ Æv+€Ž?·E8'2LõýÚKM¤¸qŠÒ§kTß¿íþ{ÊkñAj ö/èy¶ËÁn¢°…é[‰ÝÒ9±Ø­LsÆupJË4T'Ngf¢è+Wt É@­} ëfwlkN͸Å{ñ8…aKûXdV¬XÔF‚¯|ripŒµ-O  ¾®ù TâT\‰˜¦ ľöÅÀq4Ú)½{~(Õ· îøNQ’ùÆOÖXÞwrü­ç¿}lÍéãkÝøÆPñ­^Ý×ReohÉ+–45¯^ùä2ÒÝZš4õ ZÙ½qÍj$¸´J~Òó0…@Ž÷>·êÇ2¯RtQÑÀn‚5â[TôîþŸ¤ÚÚ¤¶P‰eÅ„-ž'¸'f åßÒT³æ†}‰JÖâçĉñIƒiÒ³h¡˜þ Q[5¾½¢²øNª>ˆÍþtÕ7Àè ì†SX²aÃTß¶´ î¦é-K‰Ýn¬s‚ö·Œr{¨}êh'‚2²ª‰i›XŠ{ðÚ¢ù“Èn˜â‰­@s<3X0`bÚ˜’1f›˜6¦hø&çD^ý8³›§šTßn%޾¶i•lµ…¶X¾&klÍHž|…O‡ÓyÑÞÒÿZ†ºÛwK“ ¶œ¶nÚŒÈÆ0óÛÖ ÇøFSFÓݯnAÑÆ7àûÔa1%«äôñµÈnlf ylo‰£OTèÌX•÷Ó¹Øl™¹§rv"º(Ê_§ñŒ§Æ·§6´­’­Šg²ÆÒàk²jTæDø´+²QT÷^½zCs3Fß7Ö3ùIDATªo´J€Ú·yÝÙÒ¹î ‚8*nÌ<·k«%ÀàF^¿|p;,A稭(nÉî£vÁºâõ_‰N*圈óJ¤¥1r?ÐBúݳ Ö¹:nÕKÁ-¹Ê 'N5‰o­2Íš˜î´x½6#ñmªoàÝy¤oY…Ç@ÝS„øömmDp ö­BKdwïs«Èõ>~hL{žû‡×Ž¡Ý»ç‡džˆéáæ÷^݉(?}¼E÷‡é­0ýc²#ä‘GôlëCó$›‡¼–af4j[’|ZR) æÄ‰Síš')UˆÙ¢ÛRÜuµ×ÊiKÈn¬-»<4,Xoj6Cèî--­›Úˆ×8ÝÓ¹Á½{›˜öìù_(½!PqC=nô»aš>*–›È>Ú)3ë~}´—ˆ.«^Ý €5ªoÃ0¬AuãÊ‘W¨qS66/û¶%½ç»-šÏÆBËœñ©ïT"™° WÙçÄiðð]l½o¯&XS¦%S×’È^“dÊ!o+¸x¥«[Câ¦7®ß\²[¸(mmm ¸aJr!.1Ý j80ºç¹¢¸FˆÃôׇ°¬² ¦oü¤¹ÿÈ6t½mõ-§Àn?‚uZsŸ¸Ü’§!ež ¹FqHÈ6ÁX–1§K$Äç ŽWþy>-¯!!¸·¶¯ ß*ÄÑõîþéã‡v î&õ­JïÔ‰=¤¸)£âû¿:ˆ°† €åœD¬m-|§ßXYPªì¥Yd· ';%ø‘À‰§š7Oú’¦S n=,Ý à6c~Î%ëʬ¸“0‚)лkk+{ï³[ö?»3DpˆCö;¼ÏáN©Á@Hdo•Ò»ÓÔàG¶'{v pÇ·¯ÿí•»s?Kß1ïš'e|h!µÜñœ± 3rº` 6W%xR±ÏÕýÜq'NCG}# D% Ö†nÃwÆf÷‚Ê pÔ¡)HÐM¾]¨ìÝ»ŸÝ½{7Q{ïKjq%Ém̯-ˆwö?ðî+;N'Ÿƒü;©}ñw“ûÞï„ü{¯þ¨-3ßÙ_tVÜÊ«øVÔ÷Òc©…ìšúNø±ÉCsâ4DÔ·ã lÃÄ„¸±L|I3>O2·¬ Þ€l ß"¡úFÅ}p'd^>rPä|»Iw§Nì<Ð20…<¦Vædܹ7¶“mRÉ„fÀZ‡xÝ|B¹êŸ0 9q:#Ô·ªÈT‡Äa•à’Ìü쬘!‚{7’¬TÙæë¿J¾‘Ý€i ‹à{_xáD6@üøO1„è~íØ¶”„¸°¼ïKwï¹ y€5²å6NÜÙÿÝ v¯‘¼Æ©¸HN%>W©"f¹ž 'Ng ¾­NìmES>i•`‰¥ÅîŒižÌÏÁcˆ½5%=©]±æív& öó÷?´`ýòA³¢7énXÓc‡÷¯õ½ëÝä>Ýï¦÷¿sª þÇy>÷óíÙŸo |/U ž‘5`*ÃD9¼%e­º(•zïáĉÓ`ã[«€•ÆR«ñ È®“SÑë†$ø`x&ʇɡgâ‰>EzïX9rø¹Ã]ÇžïBjÃ,08ž~å8²;ýÊÑSÝû…ÍÞ/ “SÝHí·ÓÒ0‘³ÿöÊ~ÿËhyC¼ÿæ«ð¸ªd×}9WKªŒÕÖŠe–ø0æño‰§3Ë9tôVIðNãÀè4R,‚ƒGοNœß:mÅ}·nv;c@xV3Ä{}¼¯Løó>òÄ)@6V8Áš‚ÈnXÓä+ÝRww‹º%RkŸN>G8 m˜¸ÅT™Kjÿ!°Û>Oâñ1öK|C<§R[å8Zá¾ÊÝg•ýNœÎh|KUØ©&²±¢÷ìŒqwÎa˜L´.Ám\ofìñq¬Ð>ËŽï>ñAHp´¼At÷¿ú²"·Oôÿìø»ýÝð¤%¯ÿ*‰ìþý›?âTÊÜ(¥7mÎ8´ð½ß-À©Sj~”ŸÑ͉S¥ü„Óé4âǰll¬¯ õIðÚOtO´¨}k6vkFæs0­».kÜ0Ð߯9੾>!c+Ùì~T*n„¸ivŸêîO¥InŸîùý7û`jŠn;úD¹å›¯Üe“2V…ÌÅŽeŒƒÖÇät&¶Ïe‚wj^ –XBØÏHûé箽9qª ÁU|W‹ybœ,¥¿{@Ç·ñØm¦ú¦é PÙ .p n˜ÅŒ`·\ˆSKzÃò¿{+®*n"8µ´,S¹+ ;gWu·¥¾·IIn*qwuø‚©T?÷Ë‰Ó &9äVõyßsG¡¶1-kÜ–ÓÙqk†Ø-4¸BðJ¾ÔKó$‰ÊôÄ tºm^£a¢z&.Ý-â’æ®w…(58<¥Ü>…ºÛ”Þå˜Gˆ[S[gc[Éuq´]rVœ8q*;« ßIÇ;xMMw›uNDm“œª»Í¸a »,£"OŒàU¶ÄÄúæÆÑ·Á ˆÿë[o:Š+ñÛ·^u|ÔGàÎÇÜ’Î/«JÜb7UG1×!ÅU-À?'NœÎ\|hpasO×u·X81c³Û `wìr9ìt<ÊðJœ¢GÑk)“ݧúSë7ß4Áý›ÓoÁôç¿L¾ÿÖÏþMæÿøÛwÑH)Bõ»_¬ðù‚Ç ‰L®¯_X½ø–ÏÙȾ5ëöLßu7äâ‚ÝŸÉÅ.Éb”û7ìlÃ’V|†> ø»¯õ î†éû²^ "Ùmáû=X^ÚQ¤œ_01ÞÉÆÞŒ6Þ–¤~'S÷|À8eñúuä¸5ûNßÒ„I••zÚnÝÖÆùT3¤¸ÕuÜëÊMˉSyŒ”8ÞÕ=½–÷ݸ Jñ ø# nbúÆœ*½c×e4Ã$v逘Zà6ã¼L¥^œS@<S*‘FŽé7§ßFƒî&óäƒ÷ß#^¾ûœÔF#EŠnd÷;9$xì@6±Û!ÃÍ¢ËSXõÛRâû+ RW+ n3¾nó–$Ç)š-ªTÇõé.5 C…>|ÄjNœª/555áýß ÌœE— Õ«¾ÉÉu{&±Ë?ÒŒoÓ6¹ü#“Ú?/ƒøÆp[(eR‘$ÿíô[½MºE÷Þ·óéWއoõsá¥IÝÅ>r;ö®¥¾ßq»(Šè¶«¢…ûQ=ý2! µ1øš¸Ö(/«l&=ñ­= àœ8U["ù’Oe¦* ¾»«·æ‰ò¢2.êÄo°ky›ì¾ÔöLtÝm©o3Œ y•Ù Š›‚*œPkěթ ¨!twÝiw.f¹(7^ËÖ½‹àÆJ„ÄP¼Òhñlmk¶‰:Íë}“Hgã›S5'ú!„¹?]ê»êñxJ§“îâJ¬ëm³[ƒ8 ûü,±;öñœ˜‘ÿŒ]ÏLÇãá7RƒÿÛ;¿þãoóÞÛošÔ~ÿ4f¾¥›ðmsÜÆ7*n—7^#é]IÀá]«9$áÛÉûW&8§ªÅw+‚ðæ¯ª>O‚¦RwçßBz_þ‘°M.ÉŠ¼[w²ÑB‘àŽY™­ý·'@ŸÝ{x¡MÆ-‹&…ºûÍ730dãô£~'B’%î/xS~àþ³aƒóä}«ùLì´UŒ©Jowoà»kñ£ÕŒjm“IâW&©þ)`µ"Ø]ÖG»Ïë¶ã®J?¼Ò÷Pâ—Šðœàw)ñå=žø&"UoŸ'aä­ø‰j%–Bw; -‰Ú¨»q øËáÂ…KÃדeyÝs9¬Z’¸€µ”Û¼ÿžšqÝôqm¸ 噑"7 ¦ïÄro9˜b|"ѽ§²Ûi¿CõOp ~ŠÚƒ`eŠ.3™ü¥Ê ­lêÔWX¥uÜ<üïŸ+’GÈýª}F–ûQ¾µÒê2à$ö§“j5AAóÏ"»s¢ÊàÅÛïVŒo)½?"p«îs:‡ŒìÙ#ø-¬w=AádZ*îßèF‚›¢¾Ï{ÿÖr[w›­ðá€c™w Ü »cÖ2ßf¹å{V=B­ óu“݃A!Íò‹y¥AÿåºD|1'§¸ZÌ~çä̱¹Î |;¾ÖïvúÝb z&—(®·F]f„K>Bj_dá{”•ñÔÔÊ`ö$ãÁž†–°¯>Ôàj¨¿à2öV辡Q€²E§cY7f€×8Í(ö÷€1 Ë*ßuipÁÝ¿“Š¡¼ ›‚Z1QÌNúN»‹†,¾Ý^³U§Í&¸]MPx&&µãçgMÛ$–%ˆ£m‚Ô('|ÙQF3×ŲA m»½l˜Eõý¡œªÅ{ÅÒþx, à>fd‰à䙨üm#‡ÞwÆUŒiÚߊÏïyÞ ^‡]wm…ÐjF³:êw´Ÿâ¾õÛÝp¸µ¼ÉïŽ}¤âÛ nãŸêÛŠXn¼BpŒ‰ÎBÎbîëÀ?úà>Ò»‘} –=häŽÇrb¹c± â[ƒ¸›àª —PžQJ2ÍF˜™Øiåì æ(9Ú]KņEüZ`“þþþÊ’öáYaÜbÅ}­j~?(ß50\ƒf8˜B¾ `|<£ãÛ©¾Ö"cdT|²É6Áéç Ý·Éé4#196R¹¸ë¡§Ù­±,ÆkŠºû˜‘U5x:6€ø>-gEé¥! S€[ÕŒÕ<Á©Kk{œðÊ ©£ÝµpZššš´öÄÍÍÍ4õLžJ8[äÚ‚9ª]i î¨vå>ª€S|ê"ü‚´+÷u,ý ½]ïbƺÄõz{{a¶:…ƒdhÜ|4—1ÎWê ÚÒû##&2Rqdy v«ê¥÷øX†ØMŸ¨3³bYœÎ6r0…XË©±,6°,–YË­‰å–Ç2kd¦%–…){k,ƒàÞbØøîF|Çr&Ç]þ …dwƶPœMxÈ ¯~ÑKb%'Ü'ì ;ž ŸÜë[»j‰Åê";ª|ê“êhEÚU„çJ9 âw%ŸO-‘ˆâ¿ aŸØl6á¹Âp 7C!Î}Û‡o¶£™'©ïêy 8¥‘NgBAì–ê;#3–ôÐØ=56€øž%3ˆlÊ ¾çÄîŒdw3ÈîµF3*ÁÜHðý±Ì§GþšË?A1NµP4óÄ’áÝU8Fe9ð›Ð® Ÿ‘© >(p}mWð–Z\Ô7.€“ï8ªqÖ0÷B¸íÕ]µý?t z²Ùû´»~2áÄS&GÇ]í8õë¢C;í¡O–3d}ÜU:iÝ Å‡vT™v;²†:›7pWê‹ïXqÐ×´…óÒÿjø’ ¸±Ê qÀô…±Qªëí²¼5v; .¦÷Dz÷[àž@|©aºÈÈQÞä¸!Dw³”Þ¾‘à¹.™!d“yrÀ«ô’,?ï›2 »-ß)~â»Pp«©h|7>¾°añ£»5¾ûÅà[º¬ø‚quW%à[¥«YrøO{WŲûôÎ×Þ†`c®âñ©ÃL_R{–9ÈÄ´°Å⺂ÀMøÎårjÑÝZï;Lº¸ŒÆÀ…rj{ßHp)´Éø†P-o´P¤sbºÞªs‚1Uòú~Ë9Lè­¨oÜËbkdÞ²P2(ºQ€£gb©oÇeé%̾läÈûÆxÍb7ÄÛFPnãÛȸbVw²úšV ß!!?ªHðíˆÆõ(™¥!°*æåàȬ–1bÚQE‹o#–-F}K_NÕ¹âAVßð=r†ö¦µú®Ëµ«º;åu¹6]}—RóÄ0ŒÚè06 ýâ—¢ã@¥R§®.•nüR&²}J,¿Žg´Ë넪¾Éﶤ÷â{¶e‚¸©Æ·‘ÑÔ7‰n¤¶Û<¡LYíÄ”Þ*Á5óÄS€C¨ãÁc—*,y/¾I677ãÝ«¡Yc´¾¥>J¨6zQønb¼±^·tJmW[þ㇥à;—ÉFdž8ÎPø‹b÷ö×\øÎ~Žà1”Ç.™ –Þ™X67LÅ÷©þ”fždw„àbµ6ߪÐ,B}×Àp ETVU{íp{åZKË cfSÄ7¶ÜQ‹+]Ήð¸§HˆO¯Ë’N®·j[¢[•àÎÒKû×û€ËRZÞö¾+ožd;g}¯â/–ðq(ë@'À逛Îi²Ï¡¾ÿÇ¥«o,Ø/ßQxßÒ‘_Õ+íYçºJUßVÑ¥ÃïF(çuÀqµŽÔ·2XZwµ–æŸR~%³~+ $WšYbd$¾Æ7énÏ:'j¨Ôžmä´j'Nõ=°FÚßq!º-…¤7,!ÿä€Ó6±8žCÝ ìÆ^«ÝDjõ†T«³g¥Êã;¤‹EÑeƒßæ_Ö¦0Üelù¼\ý·y¾cF¶h|;¼o£Xóäµ7#1Oê2*¾©l¶®LE—!ƒükWÅyß)Äwo/Èïîžžž†Çëkßð”tö ˆˆGˆ«æ R{”³ÊàuÙ×Å´Ê‚j}AŠE±ÕT«Rå“™oQ¤w‹Ä…gÒiWAÐ Žê[3Rè¹%p¦ÅW^>Òg2¾<¿¤9§Ö6ÑðR+ÃeŒÂŠ+ÕL¤Þw ››d%Ë(Ì“¦æÒÔ÷koFå}—C}—RóÕ7@¼hõ­V|‹úÜ'{—Ì©ùzßE§R_kÒû JoôLH}ߦ4ÛQk|[&8p\ÕÝ¢òÉ2Kq“yÒâc»«~«©ýŽD¶PÜi#æÆæI)æ 9EW$õ]ï» 5OªÁ<©%|{b:oÅÁÁiu9´ºX³Åé 1Zƒ‚׆ ö#ëéœL6ë ÚÕNî—V‰¨5hÕþÖ\o·¾Íphp•Ý/9ÍǶ<Å®Æø®÷Íø>cñk«Ó2â[ €žJ ÙŠƒEµý‰«ÕTœø6ío´M< ®6¹T뜠å½D©v‚¡¶ÙÙb˜ê®ið±®ô ß}RŒoÆ7ã{ÐñýQèf;E«oj4¦ã»/—à‹k@OË^os–[ÞæÄ·ÛûžíÕb~A̶M–ʪß蜬•¶I‹l=ßa߲ʠãJç'œû]A+Í ‡PmY(ŒoÆ÷P·i‚o©bó$1ÔS*á݇œÊnlu Óûc™é± ±{‘¡ZâTñ¾Üu©å©o…Ëépå·qx¥Â%5ä«0¾ßCÏ<ñfz{”ÍvßšxÍ_»HÚŸ²a:Å0Á­DΫ¿*Ý<‘¼Îhõ¾µªf[›>ݦJƒ+2¾ßCß‘«oÆw@Uq+Y[‡ÆŸ$’JÔ¦»^zYì ÑÒXzØO_ëEÄ©d˜š”8„1ã;B|SK Æ7ã; ¾³;¨Ž`§—R"¾i¤yÆ·ÊJa‚ Ù«ÈÛ×Ó)/Çܳ¨Ð,ÿDL#”…ªïKù=<Ám -ŸtVxt<ŸtÔéNÖb]”jÆ7VˆÎårétšñÍø®õ] ï;™2ïøñ|¥ýžUUm¿¹¹™îZ<°ñÝÔÔdµÙ ÙlG]-󤱱žð ~/|׈ïxT}žÈ~ä¹ú¡Q¾±wl—$úÄMŽWé[Uê;¸ÇÁúú…ƒ¨¾3.õ}r•¨¾åKFJéq°xõÉÙMœ€Â;_{»H|ËþaR©þ⻬ŠZ}Ä=ñ-ÛÁ×T€9ÐV ø&™D¦¡«ÃK‰÷%‡>âËý° näUÖËZt‰šÚ·Å¼ ôQ™'™˜Þ‹¨oŒÍ“ˆͧ"1OäÈ%™'FNôK`öÓÛ—hnj)ß™: ß)?óˆ ÏÛØ’4xµã´«k9™#®¢!ûVÕÒÑ·4‡a/[©”ßDyÐãÅŒ¥Œ7¦•7j}T4zC¤5Oâ*( õL¨WB‰ï$vfkªïÿðadÞw,[d߯Gö;AvYU ¸Q°;*¥=ëÄ“@,-ºëÂ7‘×c‹Aàª6O"_®šR]7Ñ .¥úrSÐS´ú¸gj´æ Hï`õí}Ü€]ÅAE—¶yR,Áµ1€Å8(Uáê;¥ž«ˆŠ.W•0XšpGä¨@dçr†Šï\6;ćŠ[VçÚB™àßµï»Öíš´~7NÃÇä { Z¿AÇœûùöÚŠì]fþ;(¿ ¸ˆåÆ728Å{ $¾áÇê»Ä@ŽDµ«¼ß"ä9)nW}I½ ZCR‰}Y}rµÈ£Š'ŠÖÃ,ºì££JWâ‚·ú‹ó0é¤©ÝØFu3Þ dQZÒjD}ƒît —»jß”Kˆ¾Ý·c™ìo2ÐBâ›ÖÊ®©†]¹ËB#9* ²ÄýàáIÇ£¥ ç*Wú®>úà÷¥UŸtä«ê¾Bû«Ôw¡Ä¬Ý­EMã58©¶dÒleŠ(kéeAê»”ªÚV¥)OZ¨2õ\_ïª>YäÞìÎËDÛ‚"û,s~z¼ ãñ«¨*,ÍMåÓ®r5€µæ}Ôh£O»š©&CßU5oÅzô§åÀ7«oÆ÷àãÛÝÜ1ª¢Ë¢¥7pÜÏ< ¯¾)Šö¾Ý2\Õ¹ø£×ÍcRߨ(KWßôN€,n)Þû–ºfߟùÌg ÷g.6Õ7Hfz>•zÏ[6:< TWÄ+!ÁŸ^ÿôèaÉ÷çI¡[çªñÍø‚øš”‚oµ•fÑìöWß_ôt·ƒý“d²/ßn‡$¯÷MÕE<÷7ý¥ÚZOQ—ù?Ý™z¹tó$Š¢K|´Xêû³¥¨oê\·”{žjy#‚Ø«èòŸ^È—¬ûÊòa *ƒÍ“Êá»§§Öëíí…Ùð­*ßC ßhqh]©P‡*+V¬poVX}ç5OŠPßô-¢(ºŒàGiÑe´5O4ó¤Ä¢ËDyŠ.õJ&Á쩎j]ëè±VÕwø†gŒï!ƒo¥Ó†¤[w‹_¾lô1èæI9ðiÍÆwµà›Ô·¿—âH ¾W±yÂø®Uóo5Üî®hߌï*Ä7Ö ÜûR§Rb„oÕ`9³Š.i„@¬ðThƒŒï*Tßh#P·;„ï€2Æ7ã»ÊÔ÷óGu×ûyµö·Âî#j‘&õt&]2¾kßÔ¹•z“»Íß¼î®u|w\qã{èᛊ.ýïx,7+¦Î õMõ~Ø<æ Þa¹\4y&¸<ò>OX}3¾+St‰Ê„6b¦ŠèÚüèÑŸ>w¸ NåØX3’½oÆwõ«ï´ŸîVE·ŸyBðšÆw­.ßU‹ojÿBØôOš÷}†â» ;òf|çÁwâ\tÝ+V.u&(½5ާÓéà!oª ßZÓøRð¶A¥8ŒïÚ/ºxèÖƒ«oÆw•â[±AR«W·Ð1p5±KèBï¿¿ÂÞܣ픈o­C>µ©ŽEç°Ív<Í“‚ZëÐúÔÍ…Yž¿®à›Péó$¥¶¿ÏüŸ»¬ÊžêO¾›ÓR»[$¾±dÛ‚FÒlŸýQµº„]‘覚'V柔jàÕN R†Í3¾kI}ä¡ÙÝžIéø®”úþbÎ °^k©QºúVÍûµ‰×ÃîNvWº¬Š«ã7ÇnõýÙRÍG¥¾µV—ª ] ¾(Œ”0^ж+w7°!{‹e|3¾ËˆoϪ&Än¸ ¼ªòøöQßa»¬RÔ÷µ_¬¢»ÃvYåcžÔô›·Ë*?ó$÷z·Ñ¼Z¯Nö82ó¤Ø.«²ot¹»¬…“²úà?yUÔ«À&{_ê»Rz.º·XH4n5ã›ñ].õ­6ÏQU–ß%ö8¨©oìð_½QGc?‚…vëWó8^¨…Rº÷=y­¾UqZº÷Jõcq\)=*_p•‰ï‹/.½ÃØâÕ·sxnÂ÷žÃØTgÏO¶i½ ]RÍ ß!uw„æ  ?N#¾±/“ÆÆzÆ7ãÛ£ »PϤõmF¡È~ë­¬Ÿy"ÁýEê 6|éeÇWÈ]3\ƒ ÷ßþuK.s$Ã5DÕã`"‘‚KlD]tYLƒrýõâõQÖû~ÑQí$¸ÄRô>h­¬îJÞ¢¾ÞH¹½o ¸ŠoVߌoF:¤µá. ?>C‰øFɉ÷Mê»ÀÁÒ¬¸ìŠ ÔûS†©UÙŠ|¸»æIQãì”§æIŽ„|Ôƒ¥=ÐV>ÀWË ·è.=›'Œïüê[õIðO…¼ |çí¡0dRfõjüR\ÝYÃ%ŽC¤U²/‘Jõç×YIÇiÖý‹x²â©Peæ˜ë ÆK¹‚ô-ÔçSÑ·îÍqÚ“i ë¯æ…N¥].é—«¥¼®`KT·({ߌïhðN§ƒ‚z%Ut·*.ÉjŽ9d®˜Íh΄ØÇå¨èRý3ÕÆ “Ô•q¯þ:Ù\V_'’sù®p öh*øü„ÛU\;*º Bì|@´4Ι÷•0ššW\©‚¾`õö÷=dÍëëPÅ7V(k*t¤yNœÎÀ?,oÏÕ¾”‚ïna÷žhXü(÷÷=´Ô÷;ÝÕ­4|»k/ôÒ]&ï›§3ßÅ©oÖõå1O°ìˆñ]mêÛ4RˉozEc|sâß½ K|ŸD&××/dï;¨¬?ûF÷8˜·hŽÕ7'NåWßqÄwO¯å}7.(#¾ùÚ fŠ÷ðš ˆ"LXI\MÁøæÄé OÍÍÍî2ü€Ÿt2™v]6” ßÙ!”r™Z:X¿ ¾i á²&¿;$ˉ'¯ß¦OJÉw_ßÝå©8ïK(ƒlõ%Y W:‰³Þ—"öœ·–aä& 'Nœ¬_Mºõ¾køõ )¾ ʳO]Èj¦œ8q É%Â7Öç~¼L}žpâĉ§Èߪ+Ñç 'Nœ8qŠ<±y‰'NŒoNœ8qâÄøæÄ‰'NŒoNœ8qb|3¾9qâÄi°S…†kàĉ'N¦Êuɉ'Nœ"d7fŠWßÅ5³æÄ‰'N¥$j^ªyÂý„qâĉS…S4øæîÁ8qâÄiPz%$|÷öö†Å7ŽuɽÄqâÄ‰Ó &U}çm‹8aÊE—œ8qâTKø.n¨bNœ8qâU"ö†Áõ¾9qâÄ©¶Õ7ã›§ªPUg`â=Â$­º6ã›§jI¹\΢ÔÊ ù„߇cÍ«4ÏØd«oNœª:…e|húÁztf&?Þ2¾9qb|rZ½zuRÐ1€@ªŸ~ p4ÖÈ^ã>O8qb|W¾ýÜ×Ñóü áøÖxf õ÷÷{žë’'Æ÷ààI…T^ªž²V†vy/áÛy‰ã»zÍ´†oªƒ1´ûÎ Àw‚½oNœªßgZ B ßž__Ã÷rŠÜøVWŒoNœ†ˆúN&Ó~Pƒ?ùQÏ“°|,]ÿæ5OÜøŽ$ÁiI¥TO9ÿ.qÁ…Ÿ>âÜs†c~Ĉ œ[õî3Yô™ ©¾“})ßÝÂþî=ѰøQÆ7'Nµ„oⲂѸ¶Ž“P:SÊÝ^& Ü+ŽoqŠ€c Xû’âSö¾Ô¹ú½f˜BlØÒ ±¶å €¸ýäÊê™/ñùWºyÒÓÓSßÈê›§šÂ·»žço³ léÜ)ô‘0Xê[{Ù.øÔ9@íו\ýÌrŒ¦ÍËAؾAs²+f¸‡À÷Ébº¬â'NÕ`ž¨c¯yh^ûÍéç‰où0»û¿|¥¸ß,í¼¬^ó`á(ìx}I&.ñé=‡…îFp#Á߸@¨õÄ)Z3àiŠç*Äûã;Žç¤§×ò¾0¾9qª1|“[‚˜FRËü.ø6ÍwßÝ\ó„§ZTß ª ¡ pb÷ʱ7i\Ö*Ÿ•BÞ|‡ žúŽ_øéóêð=Ýø|ï9ÜÙôô2„øª%s`XžJ$U? Љº”¢o!›í¤¹â 'Nµ®¾5Ù@€ï‘Çh¿y‚Ù½Ïãeß4š®$-¯rÙ-<…icý©šÕw_Ò4¯Qkϼo*ˆë‹.õÉ<vƒîžyßô9ÌyÑ… ¥Â‰ß3NTT·„OÅA¾±ÑüãÜç 'N5„o­È‚àÞó_owXÞ©¤5óZu«UpãrTšN`¥øU…Hjdô=ߺ{Æ7§Mž<` q÷}Óç>< –Ä÷?»–XÞwJn›2äÑþâ—x¢_? ¢Htê;Ž×®Eo¯Yv¹¨kžpâT;øÖªcFh˜…ÒŸÎSrЗ4Ãeï¦ÜòÓoýêSßfÛ`wóæ'dõ’€iÈ·Xf·êzßøåÝð°„X<¡½^¤<=“ ˜' ¥Ù›'œ8Õ¨y’¶~Ìu*»CÖ6ñTÊd’¨8Æj´D}xÐN°°.<°ãSß~5UŠÆ·³JŒ¨arî9Ã÷ƪËìJ&K¿‡'pƒè¾é–Uv»_Y”Yúâ©Ê⛽oNœjߪ…ýüL`÷XP i×ÿ{ZºY¦‘Úí–PGQ W…Š·¤êÕwüÓqîs‡»¬Š%&¯Azk¢Ø}ó„›þòó#_ÿUR-¥T_AÜ4w(Æ7'NŒo¯DÆ6ØQ+™À´ýæ Jð FÞ~uàJÚ`]šÏ‹ù_ü2©uTû°ÜøÖæ¢Üõµ šOÒ"£ééeªî–Æ“}ít‚+& ¯~S,¾O2¾9qªUóµ°Êî„,ü¿Êš'u²;ª–“žû è0+/[ËŠoçQ™’Ðc9ñù©ðù!?Urœ©Tª&¾WD÷O²Ðï;è×»§¢YµÊßÐÄ·û‘…£¬–{?%~.ž>?gìùñܰ Ï-â8#©\Üù)ýxÂ|®Ê¾BñÕ÷*ÓùÉï)óÛß¹\NÅ·VuTÖ­+±ö»¼Ü(yWƒTÕÏŸNÕÿÄ¢»*–,$w{àÙíVßåN=Öø›E§ÞÞÞC7ñùáóSÉÄg£ê/Mw扞NöÊ™ÝÑUð®NFr#Vî¦äóÃç§VÓI<™ØâºZ1òûçD™îŸòL|g2ß{º'ìÂü?»ñ“èÿÙq¼(^z9'OøþxzªìgÅç‡ÏO-㛞U'«ó#¼BœŠü÷Ï $¾'ÍmÕðk¸£¾~aã’9 ×C¦¡qAƒHby£×ÊEÆâï6,~cõ’ïºóÆFq`«–~oò¼Ž†ÅÁ¬8ÈÅÚëˆc^TÖàóÃç§Ãq–äXìpáTTÝqVñýS¹“ÐX¤¾óuySW†þ¿ô}ž{ÎðâvXô†Ñ%>?|~j¯HÐ>›Ö9=çÜê<uøŒê¿ €Õÿ?õÓý ?¥pIEND®B`‚pygtk2tutorial/figures/comboboxwrap.png0100644000117200001670000005256010103544635017551 0ustar finlayfcf‰PNG  IHDR>.˜ŒéübKGDÿÿÿ ½§“ pHYs  ÒÝ~ütIMEÔ.>>î IDATxœí½ahIº.üŒè…2dA† X@4LàJ¬a%Îü°¸þ…ù 29›ؘ8£œÀI¼MtNFäGðÌùâ,d¬YÈ|!e~+°Cø†U~ä 0ùBkaz 2LÀ‚cpÁ6ÌýQ]ÕÕÕ-Ù’ºÛÞsêÁÈR«»úíWõôûVuÕSoÄOå @a£÷cÿÍ?•goˆj€X„ÂöF/øÎηʞý¾pX€!}eÀ~é£0’½q—é²À%ø^E¿B”Þ3öñž°ÓÞßûÆcÌÈþï{`ÿ÷>—ÙÏr_#æÿgñ¹ä~‡(þ€Eô~lö~lþ<$Ü_MýÏÂ'kúdíé'kOSÿ³0l JiÑÎ.œX„y_òÍû=±d'B|Ë Þ³WQAûíæÚDz_C؆«NÀ°·³ê"¬•ë–¨pŠ%ÊFÙwÕ$žBìk÷òÖkƒ¼üQœ‚ÕT·UÄíÒ‘ýOeƒ¹…¢¢ ]¦R¸¿år±ö?Ç'âì^§aÿl?FZõLjA@@ 2aL€Ä „˜0È1ƒBˆa±ùí$TÿWeÂ!ö±Ã•ñá{;;&&'Yø•nçÎm•QIÜ å¯ÄFQ¡å¨âj”paÅã-u…\BAY¤¥ RLV¯ ò/-%oñD$ê±ÓU;¥kQÏ«Ä"©¾·Ç\U—O=֎쪮”¦ÄIåûUo6qÿ;–Èæ¹Ñÿ±°ý—æÏ?ÿÜü¦ ‘˜‚¬–د¥¨A ¥{Îvçþ!cÂ@òT¿ l·aK;”ÃÛÊΜŸÊ+ Œ'oq>*?ªÂR…-ügñj*åÃT:…ý­Å®…PPå甫¾BHùìîÈàzõ¦mIìCä ê²Íc‰·þI5Ø©©îÚï:ãxþ'Š+Üþ—¹D¤àéºLÏ5*N8ˆÿïõ÷¿ë~4¬ÿcr‰Ä[× ˆï{€LÀ„~Ì9Hi‡r¸l¿’áˆ7"OS2^y¿èäÚæP`æ7ZAcˆ|‰¥&©g÷f’ƒ_e;å$ RNÈ÷Qb#qŸ×Ùè¹Où£o¬“à Æõ¿c¡b€ÇÛy7åªÅvßôx ÿ©ûp¢%;PöíÁýoô~lþüןëùÆÛ}¨"9ÎüáKs~õŸË¢à ¿p}zpuðáÀÄÕ¾ òÅŠ8ãÒµ«Àăû«òÙ'N$ÿôÿ==ûÿÌI½V®» ì\åæ*… 5â>[¼ùªÈ]û[ûÍ,;Ö°-®[²ûO=[ú¾ú¦ôJÐSü „eÏn®ìÔ“…ªÅúžkHÿûä·Þ-ý¾rE Ã!݇ñ?õ¼*Vèÿ˜½ÉpÅÛ«¿»qõw7¼L»tyéÒå%‰*þqW)M.ÁûÞ[šëp/or8ã-€Òooȼpéò’ïáÒ/dWù–)\ÏßSH7H™r8[¼»¹oåÄ·!ç—–ïÐÒ Þe•²Ñ»EDfÏ{¸¯×çtŠë”´Ùí%5È(ñÖãÕl=>Fýï øÊy}(Ê9:þg=ÌÄÅ[ÀÒõ«€‹·ìøK]²ëºÔu•&—à}ïbŽÑçð~¼Åp‡/]»*xÛ÷pW¢k§}ò×E{sc%q…ôÃ{R2WQD.A”þ³ÔšÔï–á»Ñw‹(Pɽyµò­ïþŠCGyñÒLÙHAW§”Œÿ-µ_ËqØþ ,RùQeéÚU…·€S×};©ÔÒÌ[â{ø ÞbßÃ+_¬ô;üÁÚïáÌ9ö…øõéûV5ôù-å÷Né–k7ù7“YÊú™íF¯%5†ás"xjÌ2(*UÜ·Ê*6Ëû ôË8|_ý/ܾf‡ëÏz 8 þ· ˜0FU¿¨Øñ&.]‘H À@m­f×uߨë.mÞ>‡O«¨ø.ÿ~‡Õ?T–®±ËÈ[Ç•j'¤œïõËuå_BÙM©©Þ¯äߘ²¶.8]-çI/ñk9ˆTʹ”‹wùZ¼qU¹œÁ¾l†÷Dý|¢ÿûÜYŽˆÿY LˆAXCqõË 0¡6e À@ía`OSÁ¥²¯œŽ"wiÊ{ddÂŒ jiÊá¿p8ö?ÜíXw¸îwvwtUú }ã{ã{Cõ½O{“:yO;´Š&®(<ðöIÌ”J#›Ôï(%R)AF©¸ýB®|…?Š£ä(íkƾN‹Èÿî}c;Ž€ÿÙ÷”Jx|pÕ“$£ö°Æa vŽ*à*­ù¢Y܀Рïæ=¥¹Á >-?cÔkYºRòž}ñ£Ký®EéÍ“9Ü/ô‹?òÍ’ß}wv¥4qáÊ“û…ï¹ä7ðTÖ†y‹íd”c•”Woñ½ßr"õŸ”ÿí¨KüRÜk«öî}xK„Yî¨+—Ö·jÿVõ)Í}¸{4…oŽ=èp_Þ2?\ô¿çGÝWß;®x#<Žýîßp×~g£(Í:™ý{^†(Æx­•¸”*åi¾gt]ˆûbeo(»y/Á÷¼ùß/ 5ÿ`wtB`Qo{²¶ö`ñò%ôå-O2¥¨«–¦À‰¥ü¿»4ÿÃ}y{ðõµ,Þ8»} ý#L¿-€ÿéûÑ{ˆ%¼÷uù@ߨå[ˆòÆ78ô \pSQ bƒ#̾Ájpœ9RþÝëY=X´Gw`V«ùd$NŒ‰ˆýoïH Ð>©©»SÊ¿®Ã•0»J»ø›ùG_Õùn|ÀâEßÒcœ¼}?Ú{i?ã-0Q{X+~¸ öhÝÿZúÔ /| æõ¸àWúUbŤ~6(ôc—÷.î-A1^>Ükp¿+@¶~û{/íýßÃv{ÔÚí%O%fff²ïä’S‰äé!„ôztç§®ù—íNg«µ±±ñ- N' &"ó¿& "†¶,5%|O˜œ:Ü¥åßÍçß- Qšûðk«Ãã¹ogríQmÀµôsœoÀQ~ß;h¿Jé=Ð{”÷£÷,¾åx£±üÞ7øžWIíö½Rß Q⡯g”k‰Þÿ=ìö(åt=3“›Éåfrñx¢gZسÈ@)@A ‘HŸDv6õÊ¥{µÇ*÷V)9žŽÆÿlG 2‹£ð|ǘ¥îáû0Á÷·÷VMß=ѧÊz ‡_^ç­²ðpÉñ‚û÷VNä[¹÷¥„Œ~Æ÷«£¾;ûî±ÿ)ÝÁn·ç¥+Å…IAÿâ\4ú N&ß+.¾w±t³ÔxÖ$ÇSl4n¨þ·7{º®‹&nüX\.wÌÒ÷pÅGb£÷Ö8¸žù"@­LÊYàþ]}‹òe¾o%ðî3 ³íÇ ¥ØGy÷p`?GEæÿžµC{fêTbñÚRá\!÷vÑÝEç'ºÓÝñ1¢?vþæOHþ’TïU–ï®V¾XÁT†¡úß Æð[6qL »c–v¸‡KŽöcƒwð­Iýêt?‚í{¬ïžÞ£äýh/_š/7”BàwgQ6¸dÅà~fGàÿíÆÉNùî…ósæöN§K»môƒµ·ÓÛîu»ÊfòËød|’Äìc§úWR¾¾ÐÊÆÞðüÿ€;Ÿ/÷5z?Äãñ•‡ ó?lYœäß募§´^¯·ÿ~á ôqyêDÞ·nù²Åû-<¼PYÞ/Iö J<¼ŸµèC›ƒØ6xã}(ïOÍÜÿØÝ!F·þ¤NH¼ù²K©O&¼g¾6{?uã“¿œHžJN˜š˜˜ Ò0$Ó4w^ï˜ÛÛÛ;{ñ7““Ǧâ“ùw¦VîV*¨Äg”©±úÿ ?ÿü³ùC‡Ù|ÞÜÞ6½Wò_SSÉâ?^e—ßyÙ™›_ðHUù{y0! þ >€!ýŽÚ7>÷;ãÁí9øQ¼®ƒì”ÿév»ºVJ&›®ªN-Jwº;½î¤ø1’8™HžJŠa¿˜PÚVr¦Öþ¶½±Ù‰ŸL29'󳩕{.öîÿk-ßZñ÷Á-ìüÔ]²®lT­~9›÷¦8àÆ)vðMŸ”Â}‹ßÊûÝ ¼ï½ûÆ.ß}íéW±¼÷—~¦*>°CàþOMægs«›½Ý=tg{¯×è„©©©Ôt’2A&ˆA`‚²{Ý›À P‹1ê6‡²ïdÓÓé§§ÛÿÙëíÆ}Ó»qí*µhõ×âSÙ0üßç6ü©¡Öéÿ&ðu±¯Ó½UY©(p×6xwÔÃá©ôû²B6o€ÁJù¾UÊ·Þ{Ï8À^^y¯Kq{þŸ0€Ng‹€‚v'ã“ɤÝ^%„À,ìÑ=€‚¢²¶\‰‹À1ÈÂß/¬ÿqÝüi‡þçdõIsùfÙüÁlmtÈñdàþAÃ~ÝëYñFñ¬üª|ô(NJ ÿäDQ©¯ð°Âû•¼Åkþ‡Ë{úž±ß¹ú9Ä{á¾[Âó¿ùCgîe““MŸN'Þ´y €r0SË~O-{ËÞ_÷®gbQö ¿<†^×4ÍõoZ7~wƒÒnþ×ÔUÑc Šg}k­RÛúUAx~›~I©RY½µßkª·{«ˆï5z÷½dåXå½ïeúÞz¼58ÿƒÄ;ßwŠ“§“{{{pCrî öÚ°(cïÞ_÷“³¿¹¿ŸK'½^¯ù¼™N“c>’]ãûÿožºæ_ºæ_Ô^ûqà{ƒ|ÿóÖZøUke·ñGÙèËoö„¾ÁÇ›ƒ)'UN=˜‡¾±]¾Lß„bÀÍ+<ÿ2Yù·úÝ[|oqòÍI•½Q{•WA`‡¥¿…Â\êIïìîÐ^/ ÿÿÍS@ñ¯î¿Óðè¸öEp'ºý‚§wc¿³ø#—,‡/±¿b¹OðéÃßÎk¿ox¤}’jên³É;Èg÷݈ÀýbšÝÊWýÙKéÝÛ£{.öR*i™Ãò_÷§n2™\|®õ¢Ãÿÿ¨8(ÛeöË‚‡#_zC|Rï}îÕ{.凗‹ò–)ÊQÙ/óæ¥^Ÿ(Çú:pðvùÿX|§×ÅñÔþìåÝ£{rÚ,À2‡Ù!ÛÛÛ›ÿgsçõNþLž¤ù¢IȤâÃ@ü¯©ë9ÃìW 2(qÃ7bô«mJ Þ žà½5xm%ô+Ó{½ƒÍpj9îùÆÅÞªžÿ‰1ÑûÑ$Ç&öîì¸Ç?Z »T ¿Tâ-¥‚®:ÿ±Ñù®C ’?“ÏŸÉw_u׿i6_l€ÄÃð¿t†¥xïôÞJLý“@ŠQrmóÝaðyûíIÝ¿¡bªolTNák˜üªD{oÈUvëwòšÔocØþïÛÛÝ©©EªòUãêo ‹ï-®½¾ùíf<ŸœœtüI)µ(!B_ 0°‡=J)#6ØÓà·S‰“ BH¯×Ûùi§ù¼ÕéövvA-2Iá²9ÿkêúÀ·®È•CþÊ×¹ðËë¼wPß÷J9Jir¨éG’õ¸‹|Óå¼ê™ï±^§õ³¡Ÿ‘!úß ÝÍF|ö"96!Ø»p~!?›o|Óè¼ìÀ€½;JH¯X ”B’ÉdòWÉäÉ$9Fz½ÞÎÎÎææ¦ùc·»C»» ñøÄdŠ ÛÛîÆO$ÃðÿÔ=[XøäŸoäÏälüG;õv2ŸÜ÷¨ƒ€îÒ•?¬¶66 !‹ï-Ì_(RìhèWW|o‡òvß êýͼ|óžÔ÷ŒÞ2чóÞS &ö€Ýdó|¯××-^¶È+—é ¹ÑøŸÉÔT3;↳……~_p|X¿ù/÷«"€ZŸ”S  â€:íû‹zÙß/âÉ–¨ýðÔ°~Îé÷qÀ=% ÿƒ´6Zõë¥Ú³&c/9‘n~×mþŸ§™·É㓉7ã™é µhn&ç<¼Ý¥{{{2]©EȱIB$"Æ9ØÛÛ3ÍŽÜG¬ÿ —nUÌqØùÓŒÒÍ2€ò­rá\áê?;îT¾¬v_ïÀ@ñƒÅ»yg 7~wµöÕz¯·}õ¯&ÞŒ—?_PþÝÕ™-{½æó;Ÿ/B’§’ù3¹õg‘©û§Æº/{ûñöÑ sã•}ùÍ[_Oü8ЯžùV8ïë¾}0å¼wno±½‡„¨±~Œò=àcv4þDZÉÍïZÏå{ãS Ñy½·ñgso§;9I°Gã {@îíYèíRÀ¡«ï*°h÷§n qì#îkÆøþH%“…3yöçk‰‚;Ÿ-X¾½|õ‹t—–n-Ï_(¬?ªÞ¹U^ù}e›¨ÝX¾]^|ïâÊ*çÍÚ—«¹™\íq])Ñ&u*É>¦ÞNuþ<ÖÔ%/KÇÛT2™<•LžJæ?¸wŽGü:3}ï‘Âïbô©åò·JmóžZ>»\ü(ä=|@ "ž¾\å*¼—)ŸH¶ßk³r±ò)ˆ»ã×{"ïUëJ‰ùÀâ¹|ÂØîõx÷2™ˆŸšL¦@t"aþ5Þµâ]+¾g$@ñãÉøñ!*g©Ei¯·ó“Iöº©ø^ñÝL.“ì½îQB¼âûáPÇ4Ù†DëÛ¥tòÍD绥4·67ÙWÅßÌ'O$R©$,Üø§¥øñÉÔÛIºëwöŸá“õÉ1â;r(È\a…ü“ûoõõýU¼µÐ[8üª¦·e¸ZßÂûí£˜D ÕNoÝ|êÓ`†ø^ŽrRߢ¼. Éÿ ¤ûÊ3‹çò™ã´÷—-JÕú9Ô¢½^·÷Úœ ÝÔ$-¼“(žËÌŸÉä2éÉ_Nèü¹«Øí©0z= `½þ”}LýTâ¸-vC~é´„3‰ßÙØnt—ÚC=w©÷–6Xæ<Úü'¹ÆôK½ Õ?eøýJ‚O÷Iê<­Y@=»| ß”ó*Iš× oQýbõ${Þû%ŠŠÎÿÆDk£•ãÍ·¹Ù\vz§ý²³ù£I÷yV½jQº»‹&Ž‘D|"y:1Ÿ@ b÷Höþºgþh²qT!ù\ê&¦âÊ/Ì·äÛIÍ̯RÌÍÔÿHŽiÃ8ó}k à_Ÿ”÷¾õØw£÷Œ¾á÷[zO4¸ö{+8…×No!û^ ܵ°_íwˆ¯ŸÃõ?‰o~·){;Ÿœ›Íågö¶·{[ߛۯ»Ý= 6’€…D|‚®*以;?í°>ªü?"u !lèIæÜÔñêÊ«7þi‰#½Þ¥tj*±o ñc$f¦ö°–º]î½Þi|Ó,ÿ.”1É„¯³dFù¦4ʯâË%ùÁW9×àÒ·‚ÂS¿Цß]+–×9Š7°Î{\YÃð?1&·:[ðCüɦ’”&ööøøGk¸F¥ÔüÑ~2’ÿG¹øÞü§ÿïJã›&1°òÙòÞ]ø°87¿xõzÙ4‡žÇsã·K“oÆ.¯~\.~°8r÷r ¾SÞ©)B<ƒo‰§Ñ¥%@Ü.â× ôÝ.oQìñ–@,u‡LóÚé=£r]¾– 8Ùo‚„ìDåÿííÞNo8ñǾP‚ …N§ƒ„çÿ!¢®œ^üÍÂÅߨÏ`¦¦Ë·ÊývÎü:+ÞÎ ç|†[B>ùgÏâ@‡ß8æûÞûF€z\ë=nøOù@e7Å*ïÙ× ô'X¿èª\²ï¹|ë¥bü€S÷+<\ÿ“x§ÓÉÍ*¨EÍM2•ó Öø_O?ðo]ì÷Þ*å×}«u¿=½_퇽_ÉÑÆ[”Þkûô;©r¸op“E¿SûÛ(ü‰öË6‚ÆÞ_÷v^ïPPý¯©ë¥.*4 ~³Æ10wUJöîï­ýýØÒ¯6ì[²8Ä7Éô¦ ÞKØ×Œ~ÖúÞ‰¼ó¶ÿq,ÞùsA@ô-OübLÓ„ABõÿß[ 9û…;þlQh ˜ç©|÷÷«\»÷ú1S±\>|pFà{ë‰Òÿ„Lv^C]¬dJÍMѽ’ÿ= Œ þ¯6þQ`û/ÍòD#zô€ÄÉ!ˆ úz”ûñ—ï2ÄÝ&8ôóÏ?`††ÆP¨þ¯Ê¥ËKÞˆuÙ›Q€XACC#xój9CkSih5øvÎy›»þQwç§ åQ544Ž~ýäû$ÌÉSÉæ÷fóú¨ìÔÐÐðœ!{{݉#~*_úhîÎÚS1ã/y*™J:”X 0ø9"5`(ŒF˜¸«¡¡ ¼Ïx•aU1j€^óGS–¹ÑÐÐ8øŽÃñ_±y?•g‰1yÑÐÐ8,xSe9‹±5(¶š»nÙjh:”*ù 8“cÔ rŽŸÊÇOå§N8¯ƒÏñÖétãë{ß|Þì½îfý.]º^Jg²Ù™\u­H™áYÛxÖ(ß*Ÿ=7·±Ñ ªÌ¬¥”.]/egrééìÂ{‹BgxL„çÛ…ß,¦3Ùôtöì¹¹æ‹`Üžµ ¾ª½u:=šo}f+ÓÀ†dPÄ"ÞÁÐÔÿ¡o_\º¼`ÿVéVyç§n{£µþ°¶òû•Æ7-ÖÚî«nþLÞü!¬Î‚ ­µ?“o=onm¶‰ÄÒõàgJëÛòõÒÖ·í­—í™|éÈ[ `c£U{¤*Ÿ¾9à™`ã\¥Ê×¾=ϰøA@ñ£â§Ÿ-ØÜÜœ»°Éåfóõ'öe¼u:]\?ûn>=}ôU}ãE+›É¦3Ù¦‡–½^¯ñucéZ‰’<œ¿0_{Là ÃZÅËÅüÁ¤pÝZrŒÌŸ/°EtògrAÍz ÉZ™w2¬O&•ÉkjÖn¿êÞ¸Y®~¹:ŽUÊ”,/{Y¬0ZÈ­ý[@u­úÉÍro—.~T,~Xlo´ª÷+¥Ë&¿«UÕܯ^ý§âògËë_×ß<-¼[¨Ü¯*¥u:[2©û˜žN+ `c"XkÃFxÖ¶¾mgþ.`>o­Ó4ÏšÕµê» ÖZJiñÊ¥•ÛËSãÍFòը̣Œ‹pŠßÉ¢# ù¼I)MžHl~»IwéÔñøÆÿo7Qn\¹šL&³™ ¥tùÖòÔñD6“êíª-]—8sü¡»ãŠ3‡gm”ÐÚÆ³fëE«òyˆ#ç±v»Û]ù¢²roeò—$y"¬ zX»t­4a~LqµSµ!±ÒRe ¨=Z£aç§bêÿ¶ïIÙL6~ÜöøD\göŤÐdv¿ ã[%‚²¶þ¤^]«Õ׆’ïX;u2±z÷€ÒõÒÒµ¥§_?=šÖšß›ÍçÍæóæ§ÿj?¦9[˜ûä_>)~´8”ÞÇB¾ï‡C¾ÝУ!y2A-zçî‘Å™S©4€ÍNgæ €vg+ó«àÛ9 ã[%±¶þ¤^ù²ºþ¤?Ð6/‚õmn6WçÝÂa`Lk“§“[Gé*Ê>­¯§¦S#¥ ]ö%pŒó–È_ˆã‡;!;¯»rgrSSS¥›e–Qô^÷¶·‡›ŠÇçÏVïÝ¡”š¦YR_üp¸[W”ÖF€­Ý~Õ-Ý,?*‚¢÷ºøs‘`­°ùí&JéúŸÞ2ÖZbñÇJÅžŒÇp´©¼=Ì#àê?K—ëOêÄ õ¯j”ÒÜL>=-¼7¿Õºsùöò䛉ìLnáââßÞ` ˆ`­=ûî\:“P¼¼”Îd·_Lþ­m×…ò­rv&Çþ‚55Xk”o—Ó™löÜÄ/Pù}ð-ó`­Þ¡Ëp7€™ßè7èBp½÷cóçŸÖ*a£ù¼yéòRüTÞ·§IɈcˆe/¯ ¶bø‡CA¡_¤e°B‚g˾C®FNž544F†¯ô¬øÊIÜ‹ÁøÊçjhhD e0üboŒú-m"ï­¡¡=&zcoÌËf/ã544"ƒ2½ÏkŤ?À3ÆJù¨¡¡”æª÷¡®3éÏËrxkhhD_få0û²|œ±#C¡!¤q‘òvŸIðô3khhD ß>*9Çäýdf9ïOCCc4ø> UB®MåÓ«<Ú„{ 1¡Nß¼ÔÚºÞ'º:äjh ¼Í]xU2|Çcè«¡qè#}‡Kży²¹‡ùé¬D}dåd¢rÃÓ³}ëtZþ ªÌ°T£)-ß*3¡ÀOo/RfHÖš¯ºŠosALÙ Ï·¦i^ú‡bö\z:»paͼáYÛyÙ™;¿ÀL5GÒˆõ%%"°kª½¬£O˜>8׳}úÇõöF‹ýX,CÀZÁ·–ÍWÝÖ‹ÖÖfûâ z Pk“‰ÄŸOÅ_á\!ðÙöÁúöÒ奋Ûß¶¶6Ûùs…â•«A•,ÊÐÚâ•«Å·^¶S™Ì¥+K#—£UÑœ²'ýÉŸá^Pìàì \Ï@âÍDüxœýø’ÁÚÞë^ýI½üq‰ Ž%¥%N µ0¬Q‹VïWБä«¡DVCÎå|zœçC¨ïÎÌääÏä‰A–?»S8WÅ”H¬eº‹ï/(œ/”n–ÍïÍÑT<#°–Á4ÍÊ•§õõ0ŒßZJiñr±rouf6×|Þ*ß,-]/=¸dà ÐZBÈê½Õ•ÏWêëW¯LÅGÉh|õ1HCÞÛ>½[v«¾›8™Ø~½=~9ý€jôÛ)”RQBx’ÎAù¶|{9&Ÿ<p³\ÁøÖv:Þ.å÷ñ\ùV9ŒõÍñm~6—ŸÍ`­Ül&;l JUøèô0÷ë}·Áªï²Cz¯{µ‡µülðI]€Ö¦¦SÉ·“•{«ÏS'¦§D°¾ít:ÿ¾±BO8C€Ö&O&a ²V@)m|ÓÌü:`)æ`}k~oÂBo··üùòü…ùzXû5q%ª×Ì!jø4q‡jë«g[¸°žÎæÏRÓ©;wƒyRžµ¾\mon¦§³ÕµZõËÊ·¶ùM“#le‰0 µñãñÚڃƳFz:››ÍÃB勀ݬo«_ÕÒ™ln6ŸL&GîºWž 1H]QÀ²è«’$³Z‡YC#föÑ-mC¤…J(±ˆÏT{/Ë544"ƒD:G T¹Ô 1™ÖÞ0­g hhD )”ªé öT{¶ôÛO«ÉihˆIä®)ñJ ‹ÄD æ{ø~ÖÐЈ "ÞJPTlgoìRìuŽ×¢ÑC^L ³ò¤E:G{ ¤¡¡,ä&®{õ\;gvt˜á'é׫¡¡äxË·°ØkçÌNÔ<†gâN˜54"†ˆ·"sæOt];8‹t*Í]MZ C„Ô5Å>ñ†íSöCŸu444¢üHlWðÔ•0{§èØ«¡1ä'@èßÕìJ˜Çœ~ ¡¡ºÂÝÕ̾r´©”QWò~QBê©r6Šü™¥Í®5‡¼1VG] è!÷ËýÌr“6æÊpmé‡ðôlÏå[å³çæ6$%WºK—®—Ò™lv&W]« [fÄÖún<8¢´–Rºt½”É¥§³ ï-šß-n±o~³˜ÎdÓÓÙ³çæš/†voÄÖ2<úªöÖéôA|+·rÝ#4¤æ~Ë#¤ÊÁêÙv_uógòæ®K·Ê;?uÛ­õ‡µ•߯4ú¨ÀXë»q4„n­…ü™|ëysk³H$Æ‘‰À·å륭oÛ[/Û…3ùÒ‘·ÀÆF«ö¨~ÀB”9|òÐHÑ3e÷0ÃÓ±<ìáÀÕw‹—‹ù3.]›^¯×øº±t­DIžNÎ_˜¯=:ðFfm¿GÓZrŒÌŸ/B` &×ùóèÊ Ñø6óN† «¥2ci}Dcíö«î›åê2´®yBî¼€4ýÀgó°‡ÂÒ –ÐélȤl¥Åôtzó»×°ˆÀÚ±µ­oÛ™¿YkÁ4ÍÆ³fu­zçî£l-¥´xåÒÊíå©“•¡Uæ ¹£®½Åy®+Ç^ôï¸:Ô –±³K!Iiƺ€ÜqHÖ†„°­mo~ú¯+lËÙÂÜ'ÿòIñ£¾rœL}ŠES™•ÊvÃwÎwy¢¡¬³@*•°Ùé0)Ãvg+ó«4 C²6$„gmýI½òeuýI-ÀuL"ðmn6Wÿ:˜Å1°6y:¹Õi‹éTöi}}°¼¾2æQXÙîsU^å!”A°z¶^Äãñùó…Õ{w(¥¦iÖŸÔ?]I8lkƒEØÖn¿ê–n–‹AÑ{ÝóaI¾eKuRJ×ÿøtœ–yÖƒˆ?X^_Q¨㫜5‡ìÒ]ó]ÇÁêÙž}w.É(^^Jg²lѰåÛË“o&²3¹…‹‹7~{cœõr"°ÖwãÑ´¶ý]Ê·ÊÙ™ûÙÔ¬P¾]Ng²Ùwr¿@å÷cµÌ#°v(È£ =óùœI~oL(øRTäÏZ‡YC#(:Ì2f(C2<ªsÑ­¡¡!C‰½žéDöÃ!¶I}šÄž khhD¹‡Ùó€—PƒÆD¿3\sý†oëjhh·úQä© z˜=:ëTgˇyp”`¬ÜAÅ^cÊî‡t¬¡5„ <ºqòƘ²“[N]'̇I’Èe&; —Èsµ¦œ†ÆaÁÛ¬…_(v.é§,§¡¡%”lWf¬¤qCbòü]¸×GˆÌV ¾Ù2Ü™sL­¾‘ZCC#bHk”¨M\G‡Y¬ˆ-ØÐm] Âr}߃uS¹G6³÷®9 ‘Á=ů/cR×¥õ«¡¡1”¡Ë¾ŽÉKÈo {ª44ž¹õDŽ£öF˜üîî,`ÿÀ±ží[§Óòß°eF­MiùV™©~z{ù([k¾ê*¾Í 9e7bßš¦yéŠÙwrééìÂ…6óþÈZÛyÙ™;¿ÀL5÷ŽU&¸†@Â~¥ ±~GŽÐÖFÏöé×Û-ö7NùQhßZ6_u[/Z[›í‹Œ.èð­M&j<…s…qfÛGàÛK——.^\lÛÚÚlçÏŠW®Ž\~Ö¯\-~¸¸õ²Êd.]YÚ·ïüjPÆXñêè0+z®Ã¶u£Ñ³x3?gCY±µ½×½ú“zùãS!K&“GÙZHžN²?jÑöfkùvùèZ t·» ¦}g ;š”dߎšµNg{{»p¡ tmÉüÁì¼ÜG¸¢_¤ Øë¬ôç^µÄ´q@D¦\þl¹r¿:ŽXL4Ö¶6Ûš/Z¹Ù|v&×x6ºôY¤:ÌJ—Ë·–G—‹ÆÚòÍsï/|úÙò£Çõ;w+†P'ÜZËyeÂTý4gœÁnÆBâpŒX®ç·J¤­Ÿ9<õÝÚÃóç ½^/_˜‡ XËšO„Ö‹fùz©ôq™Ò¿ÕèÊZ5q<>ŽèW4Ö¦ÞNOŸjon–o–‰D"€úlHÖ&O'É1R}X£­Þ¯ ûŽ˜0l¢*Œ¼% †ÜŸÌ¦úÊ»…ðÔwgfrògòÄ ËŸÝ)œ+Œb_$Ö2Ý¿Å÷ÎJ7Ëæ÷æ`ÏC´–Á4ÍÊ•§õõ1ÉZJiñr±rouf6×|Þ*ß,-]/=¸?bà ÛZBÈê½Õ•ÏWêëW¯LÅ÷Éh(NT™±ò{CVg¶“ÄšGC껉“‰í×Û–jôÛ)”RQl å‡êÛòíåü™|òôèÍr!YÛétz»”ßÇså[å1×7cÏ·ùÙ\~6€µr³™ì€9åÞטw(•÷ãú.+§÷ºW{XËÏŽ•Ô…mmj:•|;Y¹·  ñ¬1ubjJDàÛN§³ñï‹ãõ„3„mmòd*kU”ÒÆ7Í̯G—bŽÀ·æ÷&,ôv{ËŸ/Ï_˜ÜÃÊÈéiÅ`“þ¤¾(gðäÙrz¶… éélþ\!5ºswè'¥[ûàËÕöæfz:[]«U¿¬qk›ß4É1ÂV–a[?¯­=hSíË®ï‹ õl-äÏä[Ï›[›íD"!äKJ·Ê;?uÛ­õ‡µ•߯4üÔ4޵ý¤¤G@èÖö¹„#j-P¾^Úú¶½õ²]8“/ykll´jê,Fyœ+oL޹U©\K‰ õ\7X=[rŒÌŸ/B` &×ùs@¯×k|ÝXºV"„$O'ç/Ì×x#³ý¥¤ µý.áhZ óN¤2cÉzDcíö«î›åêÁg½í[x0»f1ˆÊw1Ï}žžmëÛvæï2:-™”-ª˜žNo~7ÜrQZ "¶vÌKˆÈZ ¦i6ž5«kÕ;wïek)¥Å+—Vn/O<⬯ $êîÁŠÉ1V‰º##@=ÛÆ³fëE«òù;»’”fü¡»GKÙX¶6$„mm°—žµÛÝîÊ••{+“¿$Ɉ0‡gíÒµÒü…ù™Ù!‚‘%2à°×Õee°¬X޽Þå=‡EPz¶õ'õêZ­þ¸65•0yŒ »”¸ßŒ‰¬ ¡Zø%„gíÔÉÄêÝ;J×KK×–ž~ýôhZk~o6Ÿ7›Ï›Ÿþë ûölaî“ù¤øÑ åMù‰.œgB®x›ÖûLhØn*@ôlëOê•/«ëOjbT* `³Óaª…íÎVæW¤¦!Y³6ŒKˆÀ·¹Ù\ýë`ÖÁÃÚäéäV§-¾M§²Oë냕ô•Ìp=(_ÁY¤s„u†ÔS§g»ýª[ºY.~TEïuõÝÇãñùó…Õ{w(¥¦iÖŸÔ?]48lkƒEØÖ{ ø–­ÊI)]ÿãÓ1;¶–DüáJú Q©´ÎWÔ‘•ó>væP€z¶íï:°P¾UÎÎäØÛ¾|{yòÍDv&·pqñÆooŒ³4NÖúJòMkû]ÂÑ´@ùv9ÉfßÉMü•ßÕ2ÀÚ¡ Å[çU‰ºÞˆŸÊ+‰1û(6jf hÀt˜§N|gùIy‘Ne¢Ÿ©¡q(pO3°_Ýk—p1W¸ódy,¤ž„ ¡1¼„ˆg!"ø ÜÈQWÇ^ ˆ¡¤ÇîÑËŒØîUíEÃL?ÐÐÐ ]åæ.#¶”0£O˜ÕQWC#rP>$C$Ï€ÔúõYsÈcuÔÕЈÒD?åq®Ãd¶p‰Ïr^½ h †aðÎ[ J;aî×±¬I«¡qX`¹.Ï“½ vò„Ù·cY?ÒÐ8\p‹±®Y»vs?f{54"‡3jJ4z6ôÙJ%Ö×%ÞÆ­Žº‡‰röƒ\ÖÄå…l8Ïu}ÕmtÔÕÐ8ð+³×õ¼7æ;úBw/khDïø °TYš~—˜+úD` aóSGå<rÖbûúN98HÔXÏö­ÓiùoØb£V¦´|«ÌÔ?½½|”­5_ußæ†œk±oMÓ¼ôÅì;¹ôtvá›yd­í¼ìÌ_`¦šû ÇŠÆ­ØàžîgÕð’1rÈFÏöé×Û-ö7΢Р¾µl¾ê¶^´¶6Û?]Ðá[›L$þÔx*þ ç ã̶À·—./]¼¸Øþ¶µµÙΟ+¯\=ÊÖ¯\-~¸¸õ²Êd.]Y\†<×Ï»‚ ±˜«²Øßž-€Ä›‰øñ8û;¸yÑ[Û{Ý«?©—?.1²d2y”­…äé$û£mo¶–o—®µ@w»›`s²Ó©IIöí¨YÛét¶··  J×–ÌÌÎËAÂB$¿ÊŠØ3^ÏŒqžåF¦\þl¹r¿:ŽXL4Ö¶6Ûš/Z¹Ù|v&×x6ºôY¤:ÌJ—Ë·–G—‹ÆÚòÍsï/|úÙò£Çõ;w+¦N~8ÖZ¯L˜ª3PsF< "îæ.u˜Ìæ~sýFîaO}·öðÁüùB¯×ËæÆ!CÖÚ’b„´^4Ë×K¥Ë”Ðc¶se­š8Gô+kSo§§ŽOµ77Ë7ˉD"‘@}6$k“§“ä©>¬Q‹VïWPkn];ÞJ!׆á;±^z¨{„t˜ÌÌääÏä‰A–?»S8WÁ¼h¬eƒ_ß_P8_(Ý,›ß›ƒU<ÑZÓ4+_TžÖ×Ç42lk)¥ÅËÅʽՙÙ\óy«|³´t½ôàþˆ7lk !«÷VW>_©?®_½R0ß?£‘æ 93ìuÃ1È­&7ÎŒÔw'Û¯·G.\FXªÑo§PJE±ã”¶µ åÛËù3ùäéÑ›å B²¶Óéôv)¿çÊ·Êc®oªµò³¹ülkåf3Ù%ˆ1¼YKøP*ö¶¬œwÐ2ß24o#Pßeåô^÷jkùÙ±’º°­MM§’o'+÷V4ž5¦NLC‰|Ûét6þ}cq¼žðh¬MžLÂ@e­ €RÚø¦™ùõèRÌøÖüÞ„…Þnoùóåù óûö°òiìâD]Û`¬‡Ùû8—X®‡‘èÙ.,¤§³ùs…ÔtêÎÝ¡Ÿ”Flíƒ/WÛ››éélu­Vý²rÄ­m~Ó$Ç[YbL„mmüx¼¶ö ñ¬‘žÎæfó°Pùbt÷FàÛêWµt&››Í'“É}»îå1Ìb‹4ŒÙžPôFüTne9lí¼Zë0khD¦Ã?•—æå:Â˰iØ3‡ÜÉro3Fë£ÒÐÐb–%’¤˜…“b,£«ÜÛ¬§hhD Zä˜'ÌàSìn*Ѳ4Ö“u54®5þiÙ{ 9UoëRã<×ÕÐÐ²Žœ´ÜüˆN[Wô'»å2ˆÎ™54"uOr†RñaU„‚ÆÜËĽøÐ!Z¯¡ñßòHHÏ„ˆ=²Ê=_—Ó•;aHCC#(Sv]ã4(_ÛÅU%Gi¬††u÷Q)Sv‡Ù¤?ÀîO–çëòr444"…kM]1qWžHäZéO<È!ÅS" (¡hA ÅNÓW<×µ§¸WQ- ©¡9ìŽ(÷ôz"1™6šŠÅ[iå™C:äjh ¨‹—ÊKÝÇ<냉aÌTwSihDNN>à¦rICÆ<*>544"ƒð(D!mŠà @’•s¢ëPët†¤g `á7‹éL6=={n®ù–¢»téz)ÉfgrÕµÚ°eFlmãY£|«|öÜÜÆHº³QZÛO@øhZÛo㑵–áÑWµ·N§÷õ­¬‰aO2(`;”°„™`Tç^ÌÁêÙå륭oÛ[/Û…3ù—/)Ý*ïüÔmo´ÖÖV~¿Òð¨iXÛ}ÕÍŸÉ›?p–Эí/|="ð­ïÆÑµ66ZµGõƒ”à ¶b'-`s8ÆŸ ɲÔýh÷@VÏ@æ Hel݆^¯×øº±t­DIžNÎ_˜¯=:ðFf-€âåbþLÒŠX;@øúZÛo㑵vûU÷ÆÍrõ Š³âA.ˆEm¹8Îá˜{¦®¢Ÿ>Dà ^ÏÖ‚išgÍêZõÎÝ;:-™”-ª˜žNo~7ÜrQZ "¶ÖGœùZÃ#°–RZ¼riåöòÔÉ)βæ«MWöÆ"vÂlØ¡˜XÄ3uùt?·¦Ü0W@Ö³Àôl™ü¿¢gKŽ‘l&µùÒ‡ÛÝîÊ•N§“<9•<‘°³K!Iiƺ°²q€Ö†„°­eÂõG#¦3‘Y†ÃC²véZiþÂüÌìA‚q”jX>l§–³Pj ¼­ëÒ^&¤)»C#=Û©“‰Õ»w”®—–®-=ýúéä1€îRâ~3&B²v|â·ÖWœùhZ†Ãðvõîjóy³ù¼ùé¿®°Îæ>ù—OŠõWÞ”ø ƒRž33‹7†4ÙRìÁèÓѳÈÍæê_7¤Ri›S-lw¶2¿ @¾0$kCBxÖ¾ ø6@‡‡amòtr«ÓÓ©ìÓúú>Jú¥‹½,|²f,‹Ã¦‘a[K)-^.Vî­ÎÌæšÏ[囥¥ë¥÷G ¼a[KY½·ºòùJýqýê•"€©ø Œ†OþqÑU¿l‹ÁIë$É<â’‘£n껉“‰í×ÛãŽðT£ßN ”Šb)?Tß–o/çÏä“§Go–+ÉÚN§ÓÛ¥ü>ž+ß*¹¾Cx¾ÍÏæò³9¬•›ÍdhO90Ø]‡´2“! Ép²éÔ5(rD ¾ËÊé½îÕÖò³c%ua[›šN%ßNVî­hÁÕܵ?pf1$¼o™ØÚ®º£JC#R–J¯|…NËù*ÆÅ–y°µ×϶:ì«ÐÐøo÷Ã!âf²³W œŸ|u6’+8땇44¢…{ܲ‹±2“cb "¦þ é£f­†Fôð>È…ä¾§•¥…KÄ’%:gÖЈ|–¨%í*a” 5(,Â58ˆM`).Glµ†Æs¸“d*fÈ;€-Æód!9Çû£訫¡-ä‡Cbv._þší@ìfຯpDÖ¤žž-ã¯joN›ßÛê^t—.]/¥3ÙìL®ºV¶´ˆ­möêà\ÏvûU÷ÆÍrUéìõz¯K×J„äéäü…ùÚáodÖ(^.æÏ ­µä™?_ „À@þL®óçÑ•¢ñm?™î£i­ïÆ€ˆçCb0†ˆÉ¶ÀX> ¼‰K‡¬ž-¥´xåÒÊíå©“ŽHg§³ “²EÓÓéÍï†[®"JkDÄÖ¶¾m Q¥£kí)é#fí°ÕCôQÉé>£ˆ²1ˆU¤œ™ð72gf_ÏvéZiþÂü̬kíŒ] IJ3~ŒÐÝ#¡lìkmHÛÚÆ³fëE«òùèdˆÆÚRÒGÍÚá«ë rB® -{\Ä"°=}ÈΧ-¾–¶Áä&gSÏÖüÞl>o6Ÿ7?ý×¶ålaî“ù$J »”(ÞŒ‰¬-~€´bÄÖÖŸÔ«kµúãÚÔT0dÏÚ~RÒGÍÚù÷懯| =Ÿ*ÄÙï‹ ROk Sgµ¢CÐaNžNnuÚâc:•}Z_OM§z½€ÍN‡©¶;[™_ _’µãæºÐ¬­?©W¾¬®?©¼dI”Ö øÊt†P¬M¥d ȃTirD• PjИ=-?"bü£Ýô=fbñ.>ÇçÏVïÝ¡”š¦YR_üpôȶµÁ"lk·_uK7ËÅŠ è½îù°$ßúÊEk¡«‡˜”K 9ðŠg¼”÷0[€Áº¦œµ™òú°VÏÖË·—'ßLdgr oüöÆ8KãD`íÙwçÒ™,€âå¥t&;Îga[Ûþ® å[åìLŽýSZ¾õ•;>²Ö »#ŠC¦bD$oèjÐ7lÑWHtÓólÿØÐ:Ì@ÒavEZE"ÃŽºpFWqåeËá°Á¬¡1¤g¹Dš²ëâ-5Ø<"ƒ?Îeoø ÈѺ—544Æ»cÙi÷*±7FD¼5øNãaGehhhÖ½ì¸qdå ÑŸ,Z¼ÊJ'ÑC<’;™e&|¢ø0fiM^KçÌQC®g¼ö—‚Ò†¼åØíé»QBÕiåŠÅìíçF\àF’lí^-khø,?G‡™MÂu+a˜½¨Ÿ4ÕžA÷0kh x˜u^íšÐàR­| $€Á:–ÒêÀ«¡9(’lk³ ÛÓ b2Ki¹Æ¼QƒpuGžS€ ¤KŽù°T$Ïš·‘ÃÉ-B8“má8²­1ÁRÁa1 R÷Tih¸ÎºNžÌ> Fù~ÎàGÃyÒ«f À½Š=yÈŽ¦”÷3S°f§o™wYþQ?×ÕЈN_”AaPg5©Ÿ1Hâéö”])OÞwÎxÄz¶oNËÖµj4¥å[e¦øéíåaK‹ÒZóUWñmnÈ)»ûÖ4ÍKÿP̾“KOg.,°™÷GÖÚÎËÎÜùfª¹Ÿp,•eá¸P,©Ñ 11ì‘/Ò Â$$eÅŒƒ!=Û§\oo´Øß8…G¡|kÙ|Õm½hmm¶/~0–TUØÖ&‰?5žŠ¿Â¹Â8³í#ðí¥ËK/.¶¿mmm¶óç Å+WG.<k‹W®?\ÜzÙNe2—®, >\ÄQÀnî²ì4zA¨Ac`ã6ܯ–-h†hôl$ÞLÄÇÙß­;k{¯{õ'õòÇ%¦B–L&²µ0’µÉÓIrŒTÖ¨E«÷«è@Z9sæy˜«ç²xËgÉ œX(<㙇Exê»339ù3ybåÏîÎÆ03\k''',¾¿ p¾PºY6¿7Çy U‡Ù4ÍÊ•§õõ1 ÛÚÅ‹ ÅËÅʽՙÙ\óy«|³´t½ôàþˆ7lk‹-®Þ[]ù|¥þ¸~õJÀT|PF#¤ÑÅpepfgùkõ„6‹éöxfkÄ0únâdbûõöHÖyN޵¬=C)Å"òªoË·—ógòÉÓ£7ËÕÓ…cíææfo—òûx®|«<æúf¡Z ?›ËÏæ°Z‘Íd”à r©*‚À°HŒ-Ig䤳Hç°¦G ¾ËÊé½îÕÖò³c%ua[›šN%ßNVî­hן‹uVîµ-°…c!b¹ œçúpNÁOÇï5Ò01vj±’=nkí NQ\W@ÚÂU,Äh3÷:ÅòšNîéÎJm|Í¿eÿ³Q¨²ÿ•…U=…8%;þç§–nÇÊúèüJídPJV˜“ŽòÚ©^‘˜ÚB¥KóntN ×°!¡ÎW{ÇX.Õþ›:3ã|üoR‰ç¢"¦ÉSÛð³€ï#ÄTà|Åk&aZpÄ9vQ²îºL%WˆBرüq®»°ã­¨¨oL*ˆß@þaÜ?3/Ýrª/Ä´}Q§ ñyH.ú9Ì•̶þ÷jxk¤¸3A:œð+fS1*EpÒ>‹tpÕ0N~A*i/䪬 ¥d™2I†ö¿z“•tñÙ}Sð¹;ÈwOíwÑU>—ÓÜÄ“è'ùßÍRQË}î¾©É Q_eÊAðÊÞÝ®x UÁdrÚ'Ða—ÛfÆL¹éžâ\£Ê|~K‚áse2§$º:Ù¾á ªß¹èªIâ1’³¢§ëÜDÚÁ©"ÉÕå|Õ˜àf»‹®Z«ìéÜá¤ðèK—ÙžìÀ±_©î¼@©Ôª¬PHá°äIß(:ªÿ!l–£®Ÿÿ¥“úšª\¬kg%– –xÂô“i£X'G“£LH9ä’–;qžP/™ê|å:ÄÅdO8…+ÒÚ~-6ý’K—&3Sâ§ûò¹ãE Œq‹›:[ä/±Ï`Aí'Åö±Ëf¹8å¥voìqZ¼0F¸Ö:²Äžö{Æj;[p$݉M6V/íÆc¯¨»öl4…åpL<#| ™P !àh×`¹Þ‹ª,üCÙGö{³C¼¼å•„ˆoù5‰Âÿ÷?aζ³Ù·Ü~çZıp*±| ùÚíS0£øås$†Øµ_"¤³³ Ne°¿uùŸsƒòÑB„w«Úþ‡X€'†­–(S‹ý|Þ„¼Ü¬ ³}Nx`+-²ò± µ3!ÌðúQ3ííÌf.þfPXœ®l`#ooÚgç „;—æ¹½˜*Oœû4¿G0n‹‡C¢‚Ê•I­güâEZHEígiƒP“„}¿áy©aß~¨C!žÛà<ätµÀ‰g?g–޲%¤ùvv *dñòÛM|n’áÜSäomn8cQD=VÚ“6“%HAÀ¡(‘YDòí äÜ Cûßòøßâþ‡à°ó­(ÜMQÇl§bðWù+ÏQÎ=Ú ¡Î:Î|»8|¡ RʹM9aí¢œ¼‰³ßš)wRJé–Íœàø_Š"T”*(J8«]7'[æ”Ç^FHB@D_‰™-ûNäDHöÅ•Jf ˆˆ|ó(›™‚±vì%Î+ Å4ÆkÓ«,W÷*n9ö ÜM/;ÜQÃnâ9$r†Ç¡’XWÐÁÙñ!ßb×QLç6xrN礚”Ç%Âãs’ß'ç¤r.œsFNØäE39ˆ|¬hˆ`((7¢ÿ-ÿùÅòoU¢ÊgQýo¹ý/]¸¤àÔb_8©¯{o¦Ü»ÚÖYÎ`zÈ}<Œ«Ë´—õÖìæ¨ÍLg¡ç(‘ÎðˆÇ)GÄÝÇì¼@Â<ç~ Œ‚·v"`¿òòEÙÅÊüçy¯f~RaªCñÆ~K@b"ßÙø½©3*ƒHËI y`qB‡œ¼Éwq9˜HµÐ[Ÿ|è¨%ËÖJ§pÕK)µ÷<¤Êà7W¥¯lÖIqR~]¹%¤X$_‡œ Ê1ùHø_¾ y)W‹Ïö–V “׳’³b*ZRï1+JðÐatSñ'⹋«" ;¿!ÇÄð˜Tþxüw’vÊÃ/X ³©èjºSþ ìäÛöFËŽ„NPeü4À³ ðÒ 3V rtgÈ¢–Û7I‰çöªöNóÆ“˜‰Æ” ''в¼÷r¹õ(B‡åÝ\5Ì[²Â:^5EtµZå §œZMîz¯¤»¶@2F •òµ –*·•Có¿Ã4"¬qù_”"ƒuXʘcGT)º:'Ÿ\^á-^¢Þ yx¶Ì¥›ø=Âf;•($v,¥üç°b7†‰sg—‚6» €ŠË„T” ´ ¹¼"~r6Êa–]‰ÊCAQe UÈþèô9Çä;Ox ´Ðüê:¨»ÏÃSk•¼ˆ;^ ¦IÈu.Oät.G 5²aT®îò!žˆd+FŽº^jÉÁM¾X^Žo!_ü|¥¶`Ãõ¿›´‚i‚]jhå!T$‡‚®vlq2g"RG™ %™ <{äœtRVž‘J ªǤ&‘³72E!äfËí"µ?;Ät)=fWÁÞ0žs{D‡Ž‹“BùMíd·0ðž0ðŒ€}뢵Iy¶, ÚaûÃÙSL WJÄ!a§Óq%H+hi3Pb,$²9]Äž7ò·rÂL8-yINŒâ …ȧ¤ocâg?¤;Ϥ¢yià*å>QÿüóI9tÈ\’“:©]ês©¾ú´`ݨ­eq9œ ‚Ÿ>¡LÔuéÞáʽ‘¨„q%ä¯QÎ#‡-ÈÅï“ZÙ'K__¿¦¦†^111ñòòª›–@“=~üxÉ’%.\põ[,/ddggçääB† rêÔ)D  Åݾ}ÛÏÏOž‡1Ο?oooß©S§cÇŽY[[Ó¥tZ¦ SSSÄÚQsò–6®{ç΀€:cÙÙÙQåééÙ§OúºäãÇíííUlôÖ­[¸v í¥9yKÛ×íÓ§§§§˜B£°°°sçÎÑÑÑ&&&t‹vvv|rr2ò0h— ¬ÉyK{Õ}ôè‘···«ßb5ú ™t­Jžt±ênkÂrÀ;îÚµk\.×ÁÁ¡€6Öœ¼E±îüQw‡É“'«Øïü!ßYqY 5å›ëP½‡︴´´ŒŒ ÄÞMtvT÷¿J0DMIþX·Û€wMXXX`` âï&Ås`µJ”Pv9200022’nQ¾L—ã’%À»içÎ|>ŸÎ·"##+**ÂÂÂj•ÓËŽŽŽ 2™ÌÅÅE&“%&&Êd277·=zBž?_PPÀãñ{öì)oÐÉÉ)##cüøññññÏŸ?—ÉdòT¯¡ºuÒÁÁáÆ|>ßÛÛ[(^¸pA$y{{wíÚ•’››;vìXF“Ÿ?CK]ޤ3ÅÕÈÈH%×­ÛØLé5—#åG£Ø.^oPN,§¦¦vïÞ½ººúêÕ«iii¦¦¦ÕÕÕ)))ôÖ³gÏ–——1BGGçòåËeeeòºYYYݺu«ªª:wî\IIɘ1cBBBø|¾¼e%u ;;»K—./^¼HLL$„˜™™B,KMíÕ_ŒÊëʱX,ooo777BH^^!ÄØØ˜ÃáäææVWWgggSU÷@33°ºg¯”PéÛ‘“&MÚ¿ÿ¤I“pTÁf³ÙlvÝeZEE!$55555U±„¦®®N)//'„p¹ÜZ-+¯«˜„ÉS7úg¨™L¦©©izzúÇSSS{õêUë¨à õÚäDõKŠu3'ë*fJªgM,G8iÒ$¼Ì ŸwÄb1Ü4}m±oß¾ô©²zÑéŠUWWӧЪKQ”T*¥s/ÅFèZôª™™YzzzRRREE…——^J€·OsÒ•f¦:ŠÕUlŠ…“[ :.—[YYyãÆÇÓyO˜ššÞºuëþýû<¯sçÎb±˜ËåÒ÷ËË1Œœœ>ŸŸ——'ï«Þº†††»wï&ÿܹO‘J¥EEE™™™Dá‘múúúàåË—FFFB¡¯&´/µ»wïÖý3·QD€w‡­­-“ÉÌÉÉqppàñxMÎäüüüLLLîܹ}óæMù‰.9¡PèææÆb±²²²¬­­ÕÕÕ™L¦Šu !UUUGMOOïÙ³§üán ƒ¾=ßÒÒ/%À[£9yK{Õ}5)ݽ{×ÊÊJ~w!äï¿ÿ¶²²RqäwïÞ500À;Z|V•u±ºº:22R Œ;V•º»víâóù&L¨»éÒ¥K………cÆŒÁ÷"ÞÍÉ[Ú«nß¾} !,úxä?ÃCÑ×ׯ{z¬!úúúŠuZDAAAJJŠ‘‘‹Å¢¿ÌØ­[7ÕgŠ¢êîüäÉ‘Häì쌳øo“æä-íU—òôéÓW7±ÖÚ «««b£ÈÀ 5p¹\Š¢RRRjjjÔÕÕ­­­­­­UœpÜÜܘLfÝËËË­¬¬LMM1q¼eš“·´WÝššVii)^<èh444šüFùøµ˜››#°ÐAÔÔÔ°¾´#„ hÓ$Œ^¢ŸæFÃö-ˆÁ`ÐOïPTÿµ>ÈLE¼š/6&ºÞr5„ í! @€$ „ kXEEEZÚý7(UUUmùóÙmÜ]‡=$afÞ˲ֿ?ŒO0ïeI¹sçžÀ¸9¸7&M³±sîÙÛÊÁÉeì¸I—/_mñXZ;$$$59–v“§„ddd6ª;y¸Õ]o ïa¾¿ý¶»í‡ -‹Õ´j_oÙ4Òo„|•Á`”•½Ü±£¬°°(læÜùóæüøýV—ŸÿüÖ­d.—ÓAGG@*•>|˜»déç‹—,;~ô êÕûôéݨp}½e“ŸïðÒÒÒÈýÖoØäèä`cm…·/À›«‰—#™L5¦555--á7×<²ôŒ ±X<=4D[[›ÇãuíjàïììÔAGG€Ãáôìi81==£QÕ.&SÅbuêÔiFX(!$';ï]€w1 ««ÞëkÉÉ)ãÆº¸¹»{x>áUõ–Í{Yž9s64lVo ›ÙsæI¥RBHÚýô)SCýÆ <¤ùc/,,ÔÓ{õõÝ{ö :ÂÊÆÑÅÍ]>äºÝ)†«Þ±4äyA!ÄÄÄDIwm0dè(IX]%%¥3fÍ ž:åúÕØŸ~ØöÅòUÙ98£§«»}[xl\Ü@÷!ƒ~ÝQ\\Lo’H$a3çt51IJ¸zäП碢·ÿ“’¦¶|¿sç®÷çΦËÍÌzìÿcï”ÄÐi!7~EQÞêc‘J¥"ÑÃ+׌`ooÛPw­7dh)R©´‰IØÂEŸÊïŸ25´Þ}b.ÅŠÅUFF†‰I7+*+utt®]‹oT/^žƒcc¢·}÷­‘¡aøÖí^>1—b !7oÞÊÍ}4Þ6›mhh0qÂøÃGŽ*içƒùs½<;ØÛBJKKcã®O?¶9±ûdñÒ>}mí]ÞŸ÷Ñ¢EM™<‰.àæª£ÓY,®êÑ£û‹’BˆòîTËÚu† õ3nRAAáôÐ`ƒÑPw­7dh)2™¬‰7æ‡ûÕH?_åû1Œ½û"éU'G}=½ÆvÄår‡û î3´´´ì£¯\õelLtþóç„z]]üüçJ140$„¨©½Ê8óòò„B!‡Ó¬{üéH¥Ò‰“‚þúëÜäÀ‰tûŠüó`÷n]_–—«ÒŠcY±|ÙH?_Š¢nß¹;“ÆÏ3«ÞîZoÈÐþI˜*Œ$Éúu«Aó[ 5}}}V¯YOÑÓÕ%„èëëBòóóå·dQEyò$OISàåË—‰„ÅbÉ/q6 “Éܼyè€q;Û5sÆôÌ̬e_¬¼xþ¬‰‰q||Âùó_Û’±ÔÅ`0lm¬§nýnûÜ9³êí®µ‡ -¢ï s4ÐÀ ËòkŠŠŠ(ŠzúôÙ£GU¯ž˜´jõÚË—¯UWW‹D:âå9˜âà`ß­[×~úE"‘äåý½ÿÁ1£!)·ïܽ{oé²/”´ìêÚ_&“=v¢¬¬ìÓ%Ÿ7s˜f=L?]¼hË×á©©it~óôéÓgÏž>ó!D$z¨¼»†ÆR } ZeeåƒÙqqWôôô!õv×C€f*--mÅ$ŒËåîÙ½S\%öðò±¶u  ËÌz zu}=½òŠŠuÿÛèî1ÔÒÚarPˆ……ÅÆ ë!,kÇ/?f?ȶwt=vâ°aÞ~ð>!dÎìá[·}²xé§‹?VÒ²±‘Ñ—kVnظÙg¸ÿØ1ÍiHp££ý¢?µ´´ ðž6#(xúÀn¶¶6ÁÓ”w×ÐXj¡oA³¶u9jlQqñ7[6Bêv×6C€æèÑ£cá_/Ç òòþ½~g``ð 3Ñh¾Ø˜è°Ù s-CCü¼¼¦ÜVïóv²2îµì7ôTŸï¨­ƒt|MIÂÚ&ÏèÈÙ 2-h&5„I’0hõßдi&.!´]F?ùZD½g¸ê¿‰kh ÝåÅBhZÊÑ#‡Ú¾ÓÑcÆ!òoœÉ“'# kI‹—®lËîjjªæd"ìoœnݺ! ka—cÏ# ÜÂ… ñ;amMWWW-|¸hKÏŸ?Wá)ÚÖwß}‡Ë‘m-++ I@[ûóÏ?›ûíHó^–„¡PÓ¢ò=û÷ëG/|ôá¼–†y/K&“=N[K‹.¡(j¨ŸHô0+ã^G úŽ_#"víٱ쇩¼p û&“yâØ!¡PS>„ÉAÓ?~Ò̯[Ò/¢ÿ­_3qÂøÚ ßnÝ~ï^jee¥¦¦ {·n/Z0p ›òMòÃc2™&&ÆA“§OÁ'Þ-ð üø“§þˆËãq86›Íd2ó «*«¤”Œ’J¥‰äFÚ‹ï¶%´RF‘J¥gÏFMš8ž^½}ç®HôPy•sQÑvv¶zººmnŠ¢ÎEE3Œ¨¨ófsfÖBÌ¥ØQþ~ôjÚýôÇŸ´H§_oÙ4Òo„|Uþä„&­!……Ea3çΟ7çÇï·òx¼üüç·n%s¹å›ä‡çç;¼´´4rÿõ69:9ØX[á“ o½&^Ž,++{ò$^æp9| ¾††@C hjj 55µ„fzö} ì,ômzëYõÔÑë¤NƒÆ=<6&º¡_ú¯ÅÎÎöÄÉSòÕãÇOÚÛÛ)¯2oþ‚œlQÓ†¯úÕr/5íÅ‹’Ñ£GEŸ¿ “ýç+––}££/ÈW£¢Î[Yöm‘טÉTc*PSSkrÐ’ž‘!‹§‡†hkkóx¼®]Mü”o’‹ÅêÔ©ÓŒ°PBHNv>–€$¬~i÷ÓƒCf„„Î<|ä!D]]]Ïçkð &‡ 5µ„B¡PS(Ôj 6‡Ó´ã›>ë#Uvó韟ŸO‘J¥'O5R¾Õ¼—e||‚ârPp(!$l朵ë6B’“SÆtqsw÷ð>xèH X-çÎE{ àï÷ôé³{÷þsÕÏ{ˆç­ä”‚‚BzÑç/ æÝª¯½ò 5й¹‡ÃY±òËgÏž©¾©–ç„|,IX=¢£/Ìÿ`Áž½{“““÷ý¾ŸÂåñx¯ò0 @ )ÔÔj …BM-¡¦PS )Ðh°ÙìVÆ7W-¡ðô™³„+W®éééõ47W²ÿ¾=„;~^±|YIIéŒYsƒ§N¹~5ö§¶}±|UvN«œŒ‘H$ç/Äøø 57733ëqNá¼!ÄÙÉQSSp1æ!$1ñ¦ŽŽŽi÷î*hJèéênß7Ð}ÈÄÀ _wF¿v“œT*‰®X¹fÌè{{[|,IX=6lÚ’’rÛÎÎN[[;&&fÚ´iG¯ñx\ž:OÏç 4ø\.—Íáp8žº:_Cƒ¯Ág³[÷ùHl6{øða'Nž&„;q²Qgtb.ÅŠÅUFF†‰I7+*+utt®]‹oƒLHLâpØöv¶„Ç]¸#‘Hä[Yl–‡Çà¨è „sQÑÆi©~.úÔ¼—%ýoÊÔÐ Z]^žƒcc¢·}÷­‘¡aøÖí^>1—b_»‰²v݆!C}ÇŒ›TPP8=4X~Ë’°ÿàóÕ=J/kkkGDDôí?zÏ_¹\.—Çãq¹\555ƒQ^òòÞµä矱X,žº:‹Õê©éç›’r;##3:ú‚ÿH_Õ+1Œ½û"÷ìù}ÏžßôõôZãÏž‹~þ¼ÀÝcè@÷!Û¿ÿ©¤¤$1ñ¦âÞCŸ_PX@Q”û ]–¯XSTTDQÔÓ§Ï=zÜâ‡wEOO¯{÷nòO÷K±—Åâ*y‰ššÚ/ŒÌ¬Ö¾%_• 5JBbÒªÕk/_¾ZTTT]]-=xwE¯uNCt(%%%M9A¥©©ùчóýƆ††zxxÐ…¡¡¡111—“²F¸›“š’)»$eyywÏ=.$ú„0L.·ÕŸ6}š­­µ§ÇàZåsfÏߺíðá#›7o7>P^¸ô³åUUÕcÇìÙ½sÝú^>2™Ì K—eË–˜˜·ì±‹ŠöY¼ô“ÅK !l6ÛÜÜì›-›ðÉ€wCDQÝŒ¼¼¯Ó<ÈLUR'í~úülÝúÝèѣ八W¯ÞûÛw[?®©Á©Wç^Q§ò³ž©Ùx ×Ö}o÷±ÔãqE„"f=:ÓßLTElLôôY)?˜vQï=rhñÒ•ÍüûFéï:èaN&ÞÄYlLtØìй–¡¡a^^^£Ï„>rìû~>vì¸Ý«ö|ñâÅÂ… Þ‹Þþùu>›ÂáqÌ=†BŒ!„H$Š"mp& àMÑè$ìû~NNNÖÖÖ–g`½uŠgŽî%W©©19\Žü7Ù)Š’J¥âÊÊg•\®!! Ñ7æS”L$ÑËÉÉÉ}zõ°Ö{:ÀZ[\)®¬¨¨(/¯¬¨¨®ª–ÔÔÔÔÔT‰«*ÊË+Ê+žUry'ÃÈ‹/&lûÖ€€Q»ví‰D«V­ä’23}=qe¥ƒA%•J«kjØ,–ššE(©DZSSSUUEQ„ÃÓ ;EÜàwýúõF'a}zïÙµsÉgK!Ÿ¶dÝŠ••ô—þd2™D"©®ªf±˜ 55B©L*©©yZP^-añé{¤;¼ëzöìÙ”Ÿ¨022¤¿áxãFE‘ªª*BˆLFI$’êêj6›]R!Ë+¬*©<)澨૱ Þ32 „”ç©svx×ñùü–ù!ûç/ÄÅOª%¬./ªµ^J´Ù\íNÆDð:“.É?¿WOØ‚Д{Âi …OŠd[OUüSð€Å~,ÔêB¨ôz÷¯©÷µèЏÀ;®ºººYI˜EŸÞY÷”ï“v?½¬´T1oCÜàW\\ÜêÏÕ¶èÓPdff¦†(´±¬¬,$amM[[I@[c0MLÂââ®LžÒ×ÊÞÊÆ1(8ôÚõx%;ÇÇ'˜÷²D¸äš’„:}fæì÷‡ ñ¼w!îRô`÷A¡Ógýu6ª¡ýûôé½+b½|.*:ÿùsÄÞeR©´ÑI˜X,^µz]è´à™3¦¿÷Þ{ï½÷ÞìY3BB‚V¯Y[]]]o--á7WzyÞü9Ù"„Þe¥¥¥NÂnÜH|ñâÅØ±Š…cÇŒ.((LLºI1ïeŸ@—ÓËòË‘AÁ¡„°™sÖ®Û€èÀ;ËÜܼÑIXî£G„ÓîÝ {˜v'„ä䈔ץŸ8¹sÇÏ+–/CôàÕÂ?Qñê ‘ ”ººz£“°îݺBrD"ÅBÑÇ„®&&ˆ)Àkq8œF'aýú9uîÜéðácŠ…‡ÓÖÒê×ω^¥O‰=y’‡Ô¥««ÛègGr8œU+¾XôÉ}}½±cd2ÙÁCG"víÙòÕFGÑÐÐH¹}G ÐØ¸yKÝê|>¿ °€¢(ƒñÚ¾¦Ïú¨c®Ã¼ÄbqSàíë;œ§®¾mÛ÷›6-•J !K>ýؤ/½uÎìá[·>|dóæ ãÆÖª;göŒ¥Ÿ-¯ªª;&àµ=ÈLí˜ë°o„°šVÓËs°—ç`BˆT*ýýý?ý¼ãС#®®. ~8ïý9óÞŸCï–•q¯ÖÂüysçÏ›‹ÐÀ»ÌÆÆ†ÕÌ&˜LfðÔ)“'ž¿“÷$O[K aPN[[›Õ" ±X,ŸaÞ(€*x<ž¢ÐÆÔÔÔ„´G† x'°‚TSS @Ó“°Ø˜h„¦±:½§µç·x­ìììz’0U(Mfoo_O&ÿu{h %%%¸1  €öTUU%“É0F@ðÊ “ƒ¦ÙØ9÷ìmåàä2vܤ˗¯¶x/–Ö IŠ%ññ æ½,ߦHÖ#’0¨_aaQØÌ¹îƒÄÆDÝIIÐÅÍÝÝÃûà¡#ôžÊÇ€$ ê§§«»}[xl\Ü@÷!ƒ~ÝQ\\Lo’H$a3çt51IJ¸zäП碢·ÿ“’¦¶|˜?×Ës°ƒ½!¤´´46îJQQñ„ñc_{BM!“ÉŒüó@ffŸÏ×Ñé¬Jû=Fx—áÞðzB¡¦¯¯Ïê5ë !zºº„‚‚}}}BH~~¾žž.½EQ„'Oò”4%^¾|)‘HX,–ügC\]ú»ºô/++Û¸iˇ}|õòÅת’Ãk2%ã266’H$ë×­ò«>FxgáLÔ#!1iÕêµ—/_-**ª®®‰}öèÑcÕÇשּׁ¬,$aP}=½òŠŠuÿÛèî1ÔÒÚarPˆ……ÅÆ ë!,kÇ/?f?ȶwtÁfhÆ IDAT=vâ°aÞ~ð>!dÎìá[·}²xé§‹?VÒ²±‘Ñ—kVnظÙg¸ÿØ1JöW‰7mÞâÔo€­}¿³g£¶†oQåÈ•ÞÒÏ–9z¼±¡¨w\òÖ¸\îžÝ;ÅUb/k[§à°Ì¬ªÞY Eug0òòþ=Í^ñ'ÏZ_ðž|ÙÐÐàr$@»@€$ à`llŒ$  ­ýþûïH ÕUUUÉd²Ö®ÒM´sss$a Ú|ÑËRþÏÂÒnò”ŒŒLëZZ;$$$ÉŸÌ­z•9òºM5êHhá[·™÷²LÏȨ“Þ6/JJä%EyómlãðnBªúz˦ô´Û©wo?zP,/^²¬QÕûôé½+bGGHc„¢¨cÇO2Œ'NÕÚ$•JÏž’¯Þ¾sW$zˆ· €–Ädª1™L‡Ó³§y`àÄôôŒFU×Òpsíiì‘$'§O™xâäéZW6íìlOœü73;~ü¤½½Þ*€$ ZKaa¡ü™Œ»÷ì2t„•£‹›ûÁCGè´ûéS¦†úŒ4x]¢xP$z6ËÆÎ¹¿ë ›¶ÔÔÔÔí"77w¤ÿKk‡5_®§SŸz;2ïeyæÌÙаY½-lfÏ™'•Jëí]‘üH(ŠÚúÝv·Ö¶ŽŽÎ®ªw°ÇŽŸî34pÒ„'Oòn%§(nò韟ŸO‘J¥'O5o@-I*•I$’²²²¨èó;wîzîlºÜ̬Çþ?öÞII ²qãW„ÊÊʰ³ý|‡Ÿ8v(îÒùZíH$’°™sºš˜$%\=rèÏsQÑÛ¿ÿ©nwßÿðógŸ}úÓÛöýI_ò«ÛmË7á!ÁS÷í¸pñRjÚ}å½+ÊÈÌܶýÇ=»wÞIIЉöôô¨»D"9uú¯Ñ£GYôéݧw¯ãÿ½"9ÀÍUK(<}æ,!äÊ•kzzz=ÍÍñV$aÐ’>Y¼´O_[{G—÷ç}´hÑGS&O’'"::Åâª=ºÓw©ÇÆ])**ž0~l½íܼy+7÷ÑüysØl¶¡¡ÁÄ ã9Zw·… >8ÀmРvv6—bãêíˆöÁü¹^žƒìí!¥¥¥Ê{W$Ô2™ÌÈ?dffñù|Îu÷¹|å*‡ÃéçìD3&àôé¿$‰|+›Í>|؉“§ !ÇNœÄi0P !…ûÕH?_©T:qRÐ_›8QMMràÀ¡È?vïÖõey9½g^^žP(äp8õ¶“ÿü9!DGG‡^ÕÕÕÉÏ^w7zAOW·¤¤´ÞŽh††„ú`^Ûû»èñÛ/?ÿ¼c䨱¦¦Ýׯ[ãè`_kŸcÇN<{ö¬·…¼äÊÕkƒÝÉWGúùFî?‘‘}aÉâE"Q.Þ*  œ €Æa2™›7o¸y+yço»!™™Y˾XþÍW_oÙ:ÞG ¼|ù’>cT\\\«=]]BHAAÁ«œ,?_~{Y½ ‹Šõõõêí¨^Ê{¯ÅÕ¥Äo¿$Þ¸âè`ÿáG×ÚZQQ}þ™SDz2îÑÿ\\úÕº"éì쨧«»xÉ2k+}}}¼C@ÙÙÙH ÑÌz˜~ºxÑ–¯ÃSSÓè,çéÓ§Ïž=;}æ/BˆHôÐÕµ¿L&;zìDYYÙ§K>¯UÝÁÁ¾[·®?üô‹D"ÉËû{ÿþƒcF4Ô׃Ù))·F¬·£úó*¥½+úûï§×¯ß¨®®ÖÐÐ011®»CTÔyƒ.ææfò’>Ã΋®¬+f¥~~#RSÓüñÞõèÑI4EHp££ý¢?µ´ìà o PCDQÝŒ¼¼ÐÅÍÝÝÃûà¡#¯ªô²»}ûŽÏ°¡Š;(Ÿ hßÿðógŸ}úÓÛöý©x©3À[f€›«–PxúÌYBÈ•+×ôôôzš›¿öó~èðÑ_þïÇ^={N›å3lè™SÇ®]¹ÄápªUYY6c¶ŸïðÇÅ]:ßžIØêÕ«é?déÿ¾vJ%„xyމÞöÝ·F††á[·{xùÄ\Š%„Ä\Š‹«ŒŒ “nVTVêèè\»OWù`þ\/ÏÁöv„ÒÒR¡¦ÉdFþy 33‹Ïçëèt~m§C½‡¼xñ"1ñ&!äð‘ccÇŒf0Jz€ׄé¢[·®ööv‡'„œ:}Æ}Ð@¡PSqUfƒ… >8ÀmРvv6—bãäå˜Þ2l6{øða'Nž&„;qRñ4˜’ÏûG̳±¶JI¹]XX4qÂ8Åë­w¥¨¨xÂø±­:–ÄÄDÖkwZ³f|aÕªU*6Íår‡û î3´´´ì£¯\õelLtQQƒÁØ»/’ÞÇÉÑA_O^640$„È¿ÿi`Ð%â·_~þyÇÈQcMM»¯_·ÆÑÁ^yÀÓsðñ'­¬úž;}úÔQBˆ’ Å5mº=jäW_‡¯Zñù‰“§çÌšQk«*³½ §«[RR*/Ç ðöéç¹ÿ@FFftô…%‹‰D¹¯ý¼wêÔ‰ò,?ŸÇãñx<ÅÖê­õèñc¡PHŸ*kU¯OÂ(ŠZ½z5=·*¹·£!B¡¦¯¯Ïê5ë !ÆÆF‰dýºÕàµ]]ú»ºô/++Û¸iˇ}|õòÅ×Våï·ìóÖÖV66VÆFFíš©iÓ…Ÿßˆµë7îø5";;ÇÃcpsfƒÂ¢âÞ½zÊW1¼}œõtu/Yfcm¥¯¯/OÂ^ûyO[»¢¢¢¬¬LSSóñãÇ555 Õ:pððË—/% ‹Å’ßRÕTº'lõêÕª\V %$&­Z½öòå«EEEÕÕÕ"ÑÇŽxy&„¸h`ÐeùŠ5EEEE=}úìÑ£Çõ6ò÷ßO¯_¿Q]]­¡¡abb\w>Ÿ_PXP먻’ɨÍ_}=vÌhºDõ E4jº ikk{x¸oÛþðaÞêê¼ÆÎrd§¤ÜV¼<àíÃd2ýüF¤¦¦ø+–¿öóÞ¿?‡óÓÏ¿ÜOÏøxñRƒÁ`0ê­åêÚ_&“=v¢¬¬ìÓ%Ÿ·s&ÿW•ÝôõôÊ+*Öýo£»ÇPKk‡ÉA!7¬#„p¹Ü=»wŠ«Ä^>Ö¶NÁ!a™YêmD\%Þ´y‹S¿¶öýΞÚ¾¥ÖsfÏXúÙò#G+Ò×@kj$Ã}†ÊKTìZPcó°Ñ£¤R©ÿHß&Ì„‹>7>pá¢Å7¬Sü¾:f€·RØôiáß~5bø°Z9€òÏ{çÎÖ­]½gï'…†«©©q¹œzk}¹f军}†ûÐzaˆ(ª;ƒ‘——'/ªxYL‰‰›½@ùo¦Ù9ô¯÷7mà‚éÞ”é‚þ…’’’~.ƒÎGéÖ­k›/xO¾lhhøšóû·,¼³0]@Ÿ.Ò32ÊÊ^Z[YVTT¬ß°¹gOó®]MÚ1Ïž=kðLÀ[#!!qÍ—ëæ>b³YNŽ+–®ü6ÓWëLX^^’0€¶NÂvíÚ¥† ´±$aíI’0€w* KKKC,Z›<ébBD5kذ]»vÑEŠwï@ Ú¸q#ýci¯Î„EEE]ºt qh=—.]ŠŠŠ¢—_%a"Šš}úÐ'À?~loo¯b£·nݵKh/ÍÉ[Ú¾nŸ>}<==‰üLXw#::ÚÄÄ„nÑÎήQƒONNFí’59oi¯º=òööþ÷Û‘t­ŠNºXõnSü%1U\»vËå:88 ÐÆš“·(Öýã?êî0yòdûýã?ä;+.7DíµW÷€ê=DxÇ¥¥¥edd ðn¢³£ºÿmzV·Û€wMXXX`` âï&Ås`µJòšË‘‘‘‘t‹òeº—,ÞM;wîäóùt¾YQQV«œ^vttLHHÉd...2™,11Q&“¹¹¹õèуòüùóøøø‚‚çèèØ³gOyƒNNNãÇ/((ˆþü¹L&“§z Õ­{7nÜàóùÞÞÞB¡ðÂ… "‘ÈÛÛ»k×®„„„„ÜÜܱcÇ2 ¼¬o´–ºIg8Š«‘‘‘J¯[·Q™Òë/GÊF±]¼Þ œX,NMMíÞ½{uuõÕ«WÓÒÒLMM«««SRRè­gÏž-//1b„ŽŽÎåË—ËÊÊäu³²²ºuëVUUuîܹ’’’1cÆ„„„ðù|yËJê*@vvv—.]^¼x‘˜˜H133#„;R~w!äï¿ÿ¶²²RqäwïÞ500À;Z|V•u±ºº:22R Œ;V•º»víâóù&L¨»éÒ¥K………cÆŒÁ÷"ÞÍÉ[Ú«nß¾}ÿ½)ÿBˆ¾¾þÝ»wUlT___±.@‹(((HII122b±Xô—»uë¦úlCQTÝŸ}z7*\_oÙäç;¼´´4rÿõ69:9ØX[á ð†júåH&S©@MMMKK8À͵.=#C,O ÑÖÖæñx]»šø;;;uØÑàp8={šNLOÏhTõƆ‹ÉTc±X:ušJÉÉÎÁÛà]LÂêª÷úZrrʸñ.nîîÞiTƒææfgÅÊ/Ÿ={Vw«Hô04l–s×A7m©©©!„˜÷²ŒOxUýŸeó^–gΜ ›ÕÛÂföœyR©”’v?}ÊÔPÿ€qƒiþØ õô^=G}÷ž}C†Ž°²qtqs—¹nwŠáªw, y^P@111QÒ] :JVWIIéŒYsƒ§N¹~5ö§¶}±|UvN#Îßèéênß7Ð}ÈÄÀ _wFÓ›$IØÌ9]ML’®9ô繨èíßÿ¤¤©-ß„‡OÝ·7âÂÅK©i÷+++ÃfÌöó~âØ¡¸Kç›6:©T&‘HÊÊÊ¢¢Ïïܹëý¹³ér3³ûÿØ{'%1tZÈÆ_B”w§úX¤R©HôpÅÊ5cFØÛÛ6Ô]ë Ú? [¸èSùÝâS¦†Ö»OÌ¥X±¸ÊÈÈ01éfEe¥ŽŽÎµkñêÅËsplLô¶ï¾524 ߺÝÃË'æR,!äæÍ[¹¹æÏ›Ãf³ &NøÈQ%í|0®—ç`{;BHiiilÜ•¢¢â ãÇ6'vŸ,^Ú§¯­½£Ëûó>Z´è£)“'ÑåÜ\ut:‹ÅU=ztQRBQÞŠcY»ná¾cÆM*((œÌ`0ê®õ† -¥é7æ‡ûÕH?_åû1Œ½û"éU'G}=½ÆvÄår‡û î3´´´ì£¯\õelLtþóç„z]]üüçJ140$„¨©½J:óòò„B!‡Ó¬{üéH¥Ò‰“‚þúëÜäÀ‰tûŠüó`÷n]_–—«ÒŠcY±|ÙH?_Š¢nß¹;“ÆÏ3«ÞîZoÈÐþI˜*Œ$Éúu«Aó[ 5}}}V¯YOÑÓÕ%„èëëBòóóå·dQEyò$OISàåË—‰„ÅbÉ/q6 “Éܼyè€q;Û5sÆôÌ̬e_¬¼xþ¬‰‰q||Âùó_Û’±ÔÅ`0lm¬§nýnûÜ9³êí®µ‡ Í׺÷„¹h`ÐeùŠ5EEEE=}úìѣǪWOHLZµzíåËW‹ŠŠª««E¢‡ñòLqp°ïÖ­ë?ý"‘HòòþÞ¿ÿà˜Ñ„ ”ÛwîÞ½·tÙJZvuí/“ÉŽ;QVVöé’Ï›9L³¦Ÿ.^´åëðÔÔ4:¿yúôé³gÏNŸù‹"=TÞ]Cc©…¾­²²òÁƒì¸¸+zzz„z»kƒ!@‡N¸\îžÝ;ÅUb/k[§à°Ì¬ªW××Ó+¯¨X÷¿îC-­&…XXXlܰŽÂb±vüòcöƒl{G—Ñc'æýáïBæÌž¾uÛ'‹—~ºøc%-}¹f军}†ûÐü‘†9:Ú/úøSKKË€ÿài3‚‚§èfkk<-Lyw ¥ú4k[§‘£Æ³e!ÄÑÑ¡nwm3dh†ˆ¢!ÝŒ¼¼¯ß<ÈLEtš/6&:löÅ\ËÐа‰÷„Õû¼¬Œ{-{Ä =Õ§Å;jÁcë ‡\“°¶É3:r6ƒL šC !@€$ ZGƒ÷„ÅÆD#:mš„ÉŸKm—„ÑOþ€Q÷ Wƒ—#ñc­-¢Þ»¼Xˆ Àçè‘Coß F‡WÞ)HÂÞH‹—®|›†SSSý0'/+ €7ÀåØóÀ› ¿€$ I x{´éùN.¥¥eª2Ô{È?|×aßШ*}6oúŸEŸÞx󼉪ªªØl¶šÎb boTfiiuèÐ!ÆBZ%„ :¤#‡/;§xBÐÖšš—\µÌ à÷ÕÕùµ÷Pxô@AaÙ‰ÓIùO†NŸ³tÉ¢±c:ø›Ã¼—%!D(Ô´°è£|ÏþýúÑ }8ïÍú˜÷²d2™ñ×ã´µ´^½b5ÔÇO$z˜•qï]›vü±kÏ®ˆf=Lå…݇0™ÌÇ …šòMšöøñ“þõLú ¬èë×Lœ0þ{ÑoÜHøvëö{÷R+++55Ý»uûxтݔo’ŸÉdš˜Mœ>=¤#¿^W®^ûeÇÎääÛåååZB¡iÓO-pqé×^Q[Kk‡}{"ú÷w~»'ó^–áß~5ÒÏ·þïÿnD¬£'a CMMM•ôK¾Úñ#XR”ê9d8›i^Q–ãâ쥸I&“QEÿ—¢(™LøøÉS‘¶Z_|÷ÝW? #„,ðãs8Lžú#.ÇápØl6“ÉÌ+¬ª¬’R2J*•J$’i/¾Û–ð†&a„©TzölÔ¤‰ãéÕÛwîŠD•W9mgg«§«û6ÍE‹Šf0QQçÍæÌ¬¢˜K±£üýèÕ´ûé?y#õõ–M#ýF(NAM~ÑÛKaaQØÌ¹óçÍùñû­</?ÿù­[É\.Gù&ùðý|‡—––Fî?°~Ã&G'k«Ž9ÌÃGŽ-ýì‹9³g®[»Z§sç'yÇÇßhǼ6¶MðVÎÐLm}nPMMMž‡©ý£¡ÕŽŸ„Q„’HÄ2ÕHñ¤I“tÿ¡££óÞ{ï½÷Þ{ZZZZZZB¡PSSSSS³¬\ýé“4 öã'÷ÿaeeeOžäÑË.‡¯Á×ÐhMMM¡¦¦–ÐÂLϾ¯…¾Mo=«ž:zÔ aÒº/VlLt½Ï|h>;;Û'OÉW?ioo§¼Ê¼ù r²Emór´ÞÀk¹—šöâEÉèÑ£¢Ï_ÉþóôXK˾ÑÑä«QQç­,û¾“©ÆT ¿Ò„½½¤gdˆÅâé¡!ÚÚÚ<¯kW“€PÂY IDATgg'å›äÃg±X:ušJÉÉÎé˜c¬¨¨X»nÃÔ É‹?YhldÄãñÌz˜N™<ÉÅ¥_{ äµ±m‚¶œ7Úw2Ž›„)O¿îܹã4αk°±°iiépý˜¢(JÖÇÂÁÐØ\^ “ɤR©ü¿ÿ%íÚÝ‚ËvØ¥ÝO™:óð‘c„uuuu>Ÿ¯Á4št&ÔÔ …BM¡PS¨)ØNÛÛôYµF³þ#}ããòóóé$'O5R¾Õ¼—¥ü¶?z9(8”6sÎÚu!ÉÉ)ãÆº¸¹»{xúËÿý˜rë†|ÞprvLHL"„ÄÅ]a³ÙW¯]'„¤¥Ýçr9=z˜š™õØÿÇÞ;)‰¡ÓB6nüŠ2ÊßïÔé¿è|åzü 6›íè`ß.“’aÖRYY6c¶ŸïðÇÅ]:¯$tõ$#3sÛö÷ìÞy'%)6&ÚÓÓƒRo!’°FöWç˜âÅÇJ­Ê©ýfMí7‹©¡–TžØñÏ„QD&£è3^tFÕJ¿jŸû'%ë˜ÃÙ°iKJÊm;;;mm혘˜iÓ¦½RÄãqyêŸ/Ðàkhp¹\6‡Ãápxêê| ¾ŸÍ~³~Åf³‡vâäiBȱ'uF$æR¬X\edd˜˜t³¢²RGGçÚµø71 ‰IÛÞΖ2bø° b$‰|+‹Íòð}r.*zXÇþºŒ¢…‹>5ïeIÿ›25´E^ô¶çå986&zÛw߆oÝîáås)öµ›!k×m2Ôw̸I…ÓCƒ;쟵EÉÿ[¯vˆòØ~0®—ç`{;BHiiéÍ›·rsÍŸ7‡ÍfLœ0þð‘£ôž}0ÏÆÚJCCCᯇÄÄ$BÈù‹1óÞŸ’r§¼¼<îòÕA2Œn®::Åâª=º¿()!„ õòâÅ‹ÄÄ›„ÃGŽ3šÁ`´Ëä£d˜µÄÆ])**ž0~lÝMµBWï@„šB&“ùçÌÌ,>Ÿ¯£Ó™Roá›®­o̯÷NüÜÜÜ'N”””(î\V]ºvíÚÒÒ²²²2MMÍ|*L*•ÊdRé?Kõ^…”)¤h2úšˆÏW?zôhhh(!D[[;"""44tÏ_gÙóx<.—K§Åå%/E©YºÆ]tõyêê,ÖÿÒ‘~¾‘ûdddFG_X²x‘H”«bÅ¢¢"ƒ±w_$½êäè ¯§÷&Fàì¹èçÏ Ü=†ÊKoÊïÈ!„xñ<~üdvNNÜå«sçÌzSnÌWòÝ®&¿èí‚Ëå÷:ÜghiiÙG >^¹êKùÍ=J6­X¾l¤Ÿ/EQ·ïÜ÷ÁÂÀIãçΙÕGgddDÉÌz`meYïí5%±540¤O+ЫùÏŸBtttèU]]üüçôr§Nj5ëìäøäIÞã'Oââ./ÿâ³Ã‡ÝHH¼|åÊÔ)“ !Šüó`÷n]_–—Óû OÏÁÇOœ´²ê{î\ôéSGÛkòQ2ÌZòòò„B!§¾›Uj…®Þt‰øí—ŸÞ1rÔXSÓîë×­qt°¯·IX£Ï„)¦_„ÜÜÜ¡‹½{Më¥ÆWst}uÛ£igsÓ™ä¹*Õ‘„~>ûж?:nöêü–ìµEQônöLØï{#¦L }ñâÅÂ… é’ˆˆˆ… ~ù{×-ôÔPS#„ä?zjíµÈk¢Iú_[RîÝëjÙ‡É|ã“0ggG=]ÝÅK–ÙX[éëë×úÿ1ýºüË ŠŒ$Éúu«Á›;üÊÊÊË—¯ìÙõ«©i÷W»/ø$*ú¼bfgkÓ¹sçuë6Zôé­««ó¦$aM~Ñ;,¡PÓ××gõšõªob0¶6ÖSƒ·~·½c&aýû9ñùüˆˆÝ[¾Ú¨ä,W;DIØiôw ôõõ !ùùùzz ~ R__ßØØø—_vš››iki à}!9ùö÷Û¶fff-ûbåÅógMLŒããΟ¿HWåï·ìóÖÖV66VÆFFí5ù(f­yR ¼|ùR"‘°X¬ºWÉU™E]]ú»ºô/++Û¸iˇ}|õòņ ßhíyc>½°wï^Ïφ̺pæÿ·wçq5åÿÀß·åÖ´£¢²kФ}ß©,‰ ƒ”dfû®‘ef"cù1Æ:_$•ˆ”ÑfI1ÂXÊR!•ºiQ·ºËïcîÜ©\™ ¯çÃÃãÜÏùœÏç|>÷œÏãÝ9Ÿ{ŽÃÌI/ç 2Ë“fÚ˜Û?3+¹|9K:»O( „>_Àð[¼ÿ(þ” "Ý«”Îæ¨ªªþv`OFz*s1ì嵄ˆˆ¹K7Î[¶úEñyŸõìk ¨¯ÔTå)r Y,–¬œ[á36û³÷0²²²ƒ¼u붯¯O“UÊÊÊ9×oܼùçÂÅKÅ.*••— …Bg'GNË–¯äp8B¡°¸¸äÑ£Ç\óÓÒÏkkkw›‘ãæêœš–ÁåÖ‹ÿùÔßÝ57ïÞ‡>%¿5_ºTÉʾº:#ã‡ÃihhÈÏ/8ãîæ"yƒÏðx¼ºººû÷¤§Ÿ×–ÖË´ÊÊÊK/ˆ;~bÑâe·nÝ®¨¨¸››»mûÿ%$œ~_ ymß6annÖ­[×­Ûwòx¼¢¢§‡>¬éCˆDãs1ìÐá(ww"rp°;c`ÐW]]‰WŠ‹‹KJJN&"æá).ÎNpý†ü†cJ{7ƒŸÿ÷Ìf>Ÿÿªf6'íìlAl\|uuõüK$TÑbCž>-¾térCCƒ²²r—.™œ-&"{³¬ù<0‹uëé«…™Êò”å19™å«…™ÊîIs÷ I(ðù|~e%·ŽÛ(~°ŠG`Læ’ÒÑl1©m‘ªªêÌogÄÄKII%9¸ ͸RHDÔXùÆÌ?Ss›W5³ù8ÙYOoÕÊkÃ×{yûH~(f‹ áÖs×­ßhií`bf˜˜´)b#µ˜ø¡cå …DÔÅ**úûn‹ŽŽÎý¼[m^Ù„‰Ó›L+((p›íª0òå-­5C7ÑÒã//‰ñ_Ú%µß½l‡tN ³°`ð…ÅèqKD¡—X öMæëïÞ>Q:ŸÍ}ûÎÝßÌÚ´ió°aÃD‰¡¡¡~ݼi‰·ª2»ÛPx)å3aé½cwo ­vûânOçzõìÀürð­\­IIž0yæÛ8,¥ý2UK ‰ž·p…”?°þØØ9<Ì#x·ƒ ¼Ëþž2K<ÖÒÕÕ}sÂèŸ/&êÑ£Gꦴ}ûöÑæœú2''æùL“ïŽ9¼ûÀ©˜/þã7|>¿  ÿ~îùªJNÓ¬²Z ªíÛkjiw’Ú+aÇbâ~Þº#.éËW2óà þLÞ²¤ÿgJòDÄVdë»z‘ñx<¡Tp‚¼‘÷öëH››ß£G‹µyx„xþÐÐÐÓ§¤÷§‘ÌíH¡@üØ Oá›'\½zUEEE__Ÿ™¿mÛ¶ÿ:Ö¾ýÀââÇí;hIíÄüŸ·î¸v횆††(suuí£Y1iXo.·^FF–­Àý¤…ù±'·®®¤¬NAAHHÄÃÐJïá9aM&„‰‡e*<•—wž¼MDý;x\»vMÊ»¯ž[ÓØÈ¿íؾbeeå´iÓ~;r£¼¼¼¼¼¼¬¬ÌÃÃƒ×øBEU•þšç(¥1¥PŸŸÏ,_»v­oïžFÚÅFÜ:n]mmí‹uµµ õ ¼ÆÆÆÆÆzn}틵/jK8u Š*lE\ xïçJýõ&Ý&¿FÞ7÷ÀÌ_¾9_“ÞWÑÀoèˆK—.Iy÷…­Zºjõ÷âóÀ*+Ÿ—•)‘¼¼\yy93=¿ªªŠˆTUUˆˆÉ'ÍùyË&_ß¡{÷îËÏÏ Y¡@Õ½:jsëêdX,"!ŸÏohl”—““‘‘’Ïã766Ö×× …ÄVdžCøg€4a$v ²Å‡Á¸ºº^w½™““SVVÆápN:5ÀCªŸÍí7Ü÷öí;ö¬ê7›ÍþŒÏTUWs8"ârË+**˜HVWW‹‚0&,“Îæôí³ïî‹Ñ’E –Ϫ«­c¾)@ÀãñêäädY22$$¾€Ïkl,.{ÑÀ“Sbæ„ñqBHköÚ7q8œ¢¢¢šššÄÄļ¼Ü•!K¤¼—.Yx,&xxMzúôN«çíÙaaaB¡°²²’ Â***jkkïÞάª|Rü”EDjjR:ÑMOO—ù…ãåËYB!Õ×ב@ äñx òòò•µ‚¢òúÊ:•' Ïk•däuÚééQeEÑglœPÒ„IV\\œ‘‘QXXxêÔ©'Oÿv`4ÏÊñªúëÞ}õô~ùe+Ÿ/½YxñâŸÇ{ö4EC…¸ÕOˆh}ø÷Ê!òì9·âIO®Óóõž†¼‚¦FûÎ$CЍSQIž­ˆÓ @Jƒ°ÒÒ’Ö¼xÕÆÆj„ßpÉw“6îîÓ‘¡ª¦ö„#Øt²ö¯„ûròÕÔ;‘ðn‹ù¹_tÅ AX|\4züCaзÏk'{ûÎÝêª*ñ¸ ý A||:àß‘A @n¦ßÛpé²&)…h—]¾œ5Ƽ±©Õç}ú™[Úúø*#ãÂÇtL¤§Ÿ36ð‹~fýŒ-ü‚.^Ê”933K¿·!N$i ˆèHTtNÎõ ¿ÊË9Á“¦9;9¤¥$ÝÈÉŽ=5>pœ‚ÂÇó”Ò“ §&Mùº·óé¿§§&»8;M˜|:1éUùûöí³wÏ.fùLRré³g8©¤(ëÞ­ÛòURûâêÖ»››Ëår'jhh(**víÚÅ××ÇÊÊòã8¸\nHhXÐø€I'´k×®]»vS&O ô]¹º¡¡¡ÅMÔÕÕìí˜åé3f=|“ @Š‚°%KäåÝ;øÛ¡&é×®åŒør´­½³³«ÇÑè"¬¬¬œÙmýÞ†™™Y/»¢·aff–èv¤@Ošº:l-Î+i Âzöè1yRð?m¿]UYY5qò´€qc/]HÛ¾5ré²ZZYde_!¢ôôóòòò.^"¢Û·ï((°{öìñÞûK[KkKdDZzº£sÿQ£ýÙ½§¢¢B´¶W¯ž‡ÿwàFNvÐøÀðð D4ÔgðÉ„ÓÌ%ÀK™—ååå-ÌÍZl¸4 …QîÝÿùÝu'¢‡ó%o˼qr÷®Ë—-Æy -A}=mІº:š0RRÓ¸Üz==Ýì+Wkëê455/^Ì´²4ÏξBDgÏ¥LÿzJNÎ/^¤g\prtlÍ+Þw7—´”äÈÍ?ééêFlÚâêî•’šÆ¬r°·ÓÔìÀåÖ÷ìÙýye% ðèÿüùóìì«Dt,&Îoø0‹ÕbÃ¥ü@½ ÚÄ»{bþgŸ)®X¾dÊ´#GŽ`R8‹Å:pðå=JK óŽÚÚFF†Ož=~ò$==cÙÒEÇŽÅ]ÎÊÎ8~ÜØ1ÒÓk Þ^¼½TUUÏœ5gEȪ´”d"ŠŠŠ>täh÷n]k^¼`rª¨¨¸¹¹?ѯßgÎ$'œŒ}UÃ¥¡]Ý»u#¢‡ùù}z÷%æQ×.]p¶|A¹»»öïﲚùع³Ç[ª¢¢"ž­sçÎ;wîÖ×率®îà`—œüûµk׎Ü$…ݧ¦¦:hWèÊ5D”—woñÒçÎ&véÒ933ëìÙsLž¡>ƒ/YndÔÏØ¸_g== שּׂ-;thìXÜâEóE‰ÇŽÅi¨«[[¿üñsIìÉ“"œ<ÿÅ»~Xëòe‹‹ž>e–ut:-[¾’Ãá…Âââ’G‘•¥Å¡ÃQîîDäà`w4:ÆÀ ¯ººT¼:+ûJHèꌌ §¡¡!?¿àhtŒ»› 1“Ê‹‹KJJN&¢üü"rqv„ë7üà7|˜ä†¿wl6;dùÒ={÷ïþuïóçÏ9ÎÿíüeÏÞý!!ˉHYY9çú›7ÿ\¸xióÍ•””ÊÊËÞÒË “g~š§è'ÛpÀ`‚ ¬uÖÓ›1}*³¬  °ßnn=×ÕÝËÈÄ2 08ïÞ}"²¶²àóùîî®DdkcMDNŽRÒ_µµ_ÔÖ†}îì:ÀÐÈ|Œ AøÚ0"²°0÷õõ ?Ñ?`‚££½‰‰qÀø`úëÞec#ÏÛk€ä†KƒAƒ¼·mŒ?icçlmë´~ÃsçÌò2ˆY;uÊĈM‘sç-œ?oNóm§N™¸pѲ˜ØãocÇîçݺŸwëVi)ÉÁSf‰ÇZºººrèxYYÙ€qcÇŒuö÷”¢'EˆÀÚ‚0xÝ!"'çåé~h[2èaÂAÀGó>H è€3c^†R¨};õý¿nC?|„A‹ÅB×¼ë ì^îŸè€·ó„À§§¾¾^  € à¥Ë—³Æø76µú¼O?sK[¿_ed\hóZ ̳²®ˆ§dffé÷6ü˜z²y„@ËÊË9Á“¦9;9¤¥$ÝÈÉŽ=5>pœ‚ûTÝ·oŸ½{vµy±g’’KŸ=“ÎÒAÀKwss¹\î„ @ EEÅ®]»øúúXYY¾ƒªÕÕÕìíÚ¼Øé3f=|/¥‚0€—ôõ{±Ùìå+V•””4_›Ÿ_<ÙØÔÊÆÎ)|ÝÆÆÆF"Òïm˜™™õró¿–õ{ž:•<¹ñ”©Óù|>ݾswì¸ ßN.ý›.º) 7mÞbïàjdbaaeÝÂ~¶T~óÝó"¢àISW‡­m^Bô±XO¯!F&–ÿ;t$#ã‚¥µƒ¥•}ròïMÚ"ZnRÚµk9#¾mkïììêq4:†É)¹ eÚZZ["#ÒÒÓûíÿËî=Ì*r&)yËÏÛ%µñLjÀ€qìùý\ê­Ûwêêê‚'N<È;>.:=õ¬„ sóò"·lÛ¿o÷œ+i)Énn®­)¿ÅÝ;¸íÞµcù²ÅÍK8pà·ÈÈ'OšðýÚu1±qq1Q.®Îÿ·ë—Wí˜xi••U'O 7öÒ…´í[#—. yððaëÛšrwsIKIŽÜü“ž®nĦ-®î^)©iDtõê……fLŸ*//¯««3jä—Çbb%”óÍŒiîn.æf¦DTUU•–~žÃ©ù¥ßkw@MUMVVöБ¨¼¼{JJJššZSþ›îMŸ>µOïÞææfuuÜËôôtÍÍL««kZÓK)©i\n½žžnö•«µuuššš/f¶¾€   Þ^~úqÃùôsf¦&+BV3!]SS“É£¥¥YZ*iŠº®Ž.ÉȼpŠŠŠÔÔÔØì×Ïñ×Ñé´ç×y¹÷† õ8Ø÷ÊÕ?ZSþ›îíÑ_/ QSS¥7yq‡Ãa±XÚ¿ÿ·ýû³´0鶴Ýú6À' /ð€VQSS4È+tå"ÒÖÒ"¢²²²Ž;Qii©¶¶“M(Ñ“'EŠRQQ©©©áñxrrr¢[œ¯bgkcgkS]]¾nã·3ç\È8÷Ú]•°{ÿš„vuî¬ÇãñÖ„…ª¨¨ˆ£Žk}àÓ„+aв¬ì+!¡«32.p8œ†††üü‚£Ñ1în.DdnnÖ­[×­Ûwòx¼¢¢§‡>Ì—ˆ”••s®ß¸yóÏ…‹—JŠ«ìlAl\|uuõüK$ä|ú´øÒ¥Ë ÊÊÊ]ºtnåž¿j÷”””ÊÊ˘pê´Ø.QiÎNŽ::–-_Éáp„BaqqÉ£G[ßF@ðµµ_ÔÖ†}îì:ÀÐÈ|Œ AøÚ0"’““ÛµsÛƒûÌ,l‡ùòôôøö›¯‰hꔉ›"çÎ[8Þ %wÖÓ[µrÅÚðõ^Þ>~Ã}%ääÖs×­ßhií`bf˜˜´)bckö\Âî-\´,&öø›vE‹í•¦  °ßnn=×ÕÝËÈÄ2 08ïÞýÖ·>Y¬|¡ˆº³XEE_f¯­ÁÅs€¶¤¤ÒN´¬««‹+aï‚0aÂA|ÀêëëÁÛÞä€ Þ5ýÞ†¢†¦cÆæææµr[C#ó¬¬+¢7s·~“6ÙóæE½Ñž0"6Eê÷6¼››Û¤Oú?¯¬¥…BÏAoZ8 ä‡ëîÞ¾~ëæÇcr¹Üy ¿Ñæ}ûöÙ»g—44äM÷D(Æ?Áb±âãO6YÅçó“D¯ß¸™Ÿ_€C„@[’••‘••e³ÙŸ®?zô¨»wsßhsuu5{;ihÈ›îɵk9NÅØ±£ãO$4¹³ijjâïÈìøñff¦8TA¼-ååå¢w2îÛ°ÿ€ýŒ-líFÇ0‰·ïÜ;.ÈÇw„“K&Eü&`~~APðdcS+;§ðu›WQXX8Äg¸¡‘ùÊUk˜Ð§ÅŠô{ž:•<¹ñ”©Óù|~‹µ‹í‰P(Ü´y‹½ƒ«‘‰……•]TTt‹;~ÂÛkÀè¯F>yRôǵñU>Ceff•––ŸÏ?q2Áwè€ ÚŸ/àñxÕÕÕIÉgwïÞûõ´)Lz¯^=ÿïÀœì ñáረ®®.xâ”Áƒ¼ãã¢ÓSÏ6)‡ÇãOšÚµK—+Yb¢œIJÞòóöæÕý¼uÇ¢Eó·o<øÛ!æ–_óŠŒ wðÀžßÏ¥Þº}Gríâróò"·lÛ¿o÷œ+i)Énn®Íóðx¼“ §‡ jзOß>½ÿ󎤃½ºšZ©D":þ¢¶¶öçúú8TA´¥¹óöýÂÄÌÂöëé3gÏž9vÌW¢@DS³—[ß³gwf–zZúy§bä—~-–sõê……fLŸ*//¯««3jä—Çbb›gûnÖ7ŽöNN¦¦Æ©ié-VÄøfÆ4w7s3S"ªªª’\»85U5YYÙCG¢òòî)))ijvhžmØT« ìIDAT'ãü6›mmeIDÇû&$œæñx¢µòòòÞÞžñ'ˆ(.þ.ƒ@+É¡  õ"~Ú0dð >Ÿ?ê+ÿÓ§ÏŒ=JFF†ˆ¢¢¢9Ú½[ך/˜œEEEjjjl6»ÅrJŸ=#"MMM棖–fi鳿Ùttt˜m-­Êʪ+bèêè³3¯­ýŸUtÚóëÎ;v ê×£G÷5a+-Ì͚䉋‹/))éc`,J9ᢋ³“èãÁƒŽÊÍÍKNþ}Á¼Ùùù…8Tàµp% Þ˜¬¬ìúõk¯þqm÷¯{‰(/ïÞâ¥+"~ÜðÃÆuÁAã™<***555Ì£ŠŠŠ&%hkiQYYÙ˘¬´T4½¬E圊޵[¬¨E’koÂÎÖfϯ;³/Ÿ·07ûvæœ&kkkk“Ïþ~êdܽÜ?™¶¶ÖMîHZYYhkiÍ[°ØØ¨_ÇŽq„‚0x[zõì1Þì?Dܺu›‰rŠ‹‹KJJN&¢üü;;@_]]=Á’&››››uëÖuëö<¯¨èéáÃG‡ó}U]÷ï?Èɹî;tH‹µWI¬]ÜÓ§Å—.]nhhPVVîÒ¥só IIgu:éèë÷¥ ôò86A¼]þf³çÌ74üÂ××'`üDÿ€ ŽŽö&&Æãƒ;ëé­Z¹bmøz/o¿áM,99¹];·=¸ÿÀÌÂv˜ß(OOo¿ùºy³fÏñåèïfÏ _fffjaaÞ¼¢÷Mríâ¸õÜuë7ZZ;˜˜Y'&&mŠØØ$C\ü /¯,K”2ÀÓƒËåþ~îœx¶à ã#~Ú0ÐÛ´+_($¢î,VQQ‘(µ¶¦]І”TÚ‰–uuuq% à=@€ A @„‚0é#'a]ZJrkŠpvõ@?|âÞïpQ__////#ó÷_•µµµ…}ñÕ`¸xƒÌ[ˆ(xÊ,É„Báý¼[ÍÓ/_ÎúiÓ–?ÿ¼UWW§ªªÒ½[·9³g9:ÚÿÇÝÍÌÌòº—ûçkàûwÃEHèê?oÝ>zä7ñÄI“¿vt´7èÛW©-~â™Ü¿ÇÆÆJ´öÆ?1,|dÃé÷6”••ͼ”®¡®.Ê9Àkp~~Á[=ß›2mâõ1ðÕþ¸r©ÅMÊË9Á“¦9;9¤¥$ÝÈÉŽ=5>pœ‚û¿ïnß¾}öîÙÅ,ŸIJ.}ö¬I"¼Gÿb¸ðêsíZN~~(¥¢¢âÂÅKƒyK>µqâ|jÃÏç'&&‰>^¿qS|ù°üË k,+44ôUkïæær¹Ü AŠŠŠ]»vñõõ±²²üﻫ®®æ`oÇ,OŸ1ëáƒü&‰ m$ff&]»v‰;.J9uúŒ¥…¹¶––äS'>À§6\0LMMâOœ}<~ü„™™é'„±X,"’ÐMúú½Ølöò«JJJš¯½v-gÄ—£mí]=ŽFǼܤ·á©S‰AÁ“ûO™:Ïç …ÂM›·Ø;¸™XXXÙEEEQff–~oC"ò"¢àISW‡­%N˜8åûµë™“Kÿì+W_U#¼›!UòpÁb±†ùúÄÆÆ &%þD‚Ï`ñó]òhÀ(,,â3ÜÐÈ|åª5¢¢$Œ9ðÁ  Ÿ!ƒ23³JKK‰ˆÏçŸ8™à;tÈkcŒ]¿üjcçtþÂÅ;wsý‚öµspÑïm˜––ñª­nß¹;v\ï'—þÒ„1}$ %äÑÖÒÚ‘–žîèÜÔhÿ_v難¨`VUVVMœ<-`ÜØKÒ¶o\º,äÁÇ̪?FŒ;x`ÏïçRoݾ“›—¹eÛþ}»oä\IKIvss¯âàþ=D´{׎åË‹‡ú >™pšÏçÑ¥ÌËòòòæfj€w0¤J.ˆÈw¨Ïã'O®\¹JDÅÅ%ׯßðò žAòhÀøyëŽE‹æoßyð·Câ·*0|LÃ9ØÛ©«©%œJ$¢óç/jkk®¯ÿÚó=úXìÎÿÛÖûóÏ'OöòpêdÜÅó©l6ûU[ÕÕÕOœ2xw|\tzêÙ÷„…††2‘)ókúÈÝÍ%-%9róOzºº›¶¸º{¥¤¦QJj—[¯§§›}åjm]¦¦æÅ‹™Ì&ß̘æîæbnfJDUUUjªj²²²‡ŽDååÝSRRÒÔìðÚJxôþüyvöU":ç7|‹Å’P#´¹1\tëÖÕÌÌôXìq":™pÊÙÉQMMU²á‚ˆ† tèpTnn^ròï æÍÎÏ/|íùÞ¾}{"*)-UTTTTT/­Å­=~¬¦¦Æ\*{ÏA˜P( e:ëµ7k›SSS4È+tå"êÜYÇã­ UQQyí†v¶6v¶6ÕÕÕáë6~;sÎ…Œs¯Ýd¨ÏàÅK–õ36î×YOïMk€ÿèß ƒ\½&|×/{bøÈ† "²²²ÐÖÒš·`±±Q¿Ž;Š‚°×žïí44jkk«««UUU?~ÜØØøª­¢Ž«©©áñxrrr¢)Um®µsÂBCC[yˆ²²¯„„®ÎȸÀápòó ŽFǸ»¹‘³“£ŽN§eËWr8¡PX\\òèÑã yú´øÒ¥Ë ÊÊÊ]ºtnžAII©¬¼¬É^¹8; Âõ~ð>ŒIi}Ð&Þh¸`hhh¸º:GnÙêééñÙgŠo:ˆÜ¿ÿ 'çºøí ŒÙpAD²²²ƒ¼u붯¯xúkÏwk6›½}ÇÎ;wsçÌ[Èb±X,V‹[ÙÙÙ‚ظøêêêù –¼ç L´¶&[Gmíµµa߇;»042ãh``¾6ŒˆöïÛͭ纺{™XçÝ»ßb!Üzîºõ-­L̬“6Ell’aꔉ -‹‰=.žÈÜmläy{ ¥´²FhÛ¿qß(ÿ0ß¡|>ßgÈ 1ѬÙsG|9ú»ÙóÂ׆‰ÿ^#ÀÇ7\Qð„ñ?mèíÙ$|¾wèÐ>luèþÿõ•P`€ŒŒŒ‚»Å­:ëé­Z¹bmøz/o¿á¾o©á¬|¡ˆº³XEEE¢ÔÚš "JKIž2Kò3ÓLÍmZ|¦-|R0\À‡2\0OQ¨¬¬´¶u:›tª[·®ï¬íJ*íD˺ººrmœþ–ÂáânnnuuQ?ÃÚÚÚ5k×þ¹~×®]Þc?HºðÑÈÊÊ^¹jMAá#yy9K óåË–HžfÚæš\ Cð‚0ôÀ»‡ A‚0xëAØíÛ·Ñot½|NX¾P8ÙÓsïÞ½ÌGñÙûІÂÃÃ…BáßWÂ’’’RSSÑ/oOjjjRR‰ßŽœ;wî˜1c‡¼½l̘1Ì;þ11Ÿ‰ÃüýýóòòÐMm%//Ïßß_‘hN˜È¹sçˆÈÅÅІš¼4óÿ)kHQ˜]@CIEND®B`‚pygtk2tutorial/figures/cellrenderer.png0100644000117200001670000002767010110244364017513 0ustar finlayfcf‰PNG  IHDRM¸¸*õÎ/IDATxÚíOhdUú¿fÀ€³ÈB0à,Òà"³Hƒ‹4ôb&(8A4h¡ zÑɸ0¡Ý¡#5ÂH‹¦”Ò…¤{Ñ$³h’^HÇÅÊ…P‚5‹†HBgáÂß¼¿ç{¸oåÔ½¹·þåßç¾´÷Þ:çÜ÷Þ:Ïyßs*çÜheü¯Ó£c[fù··ç$I’$I:òtÛúý;3¥6^Ç'ü‡°êÛŸ\«­\˜¹üóLi¹õÙÍ]ÙAÙUYYYÙAXúð_Hpä,Ôž†ö6œ{û¯Íß»wgbcõŸ_¬Ío¬>øqm~s÷‹Ÿ6V·&¿üeswkòëg6w‹ß>·5Ù\ÿîrc±¹þÃÍõÖãÿ¥¹¾3õŸ[­Ç;S;ŸîLíÝüïšÙ½/÷nî?Üoí?üõ×_vÛq>Sºv·2.++++{²¬Ç9½ú‰ÏnÔVÖæï~\ßGÎBíû©Ý,¼¶P<äÿ÷?äTªüêɤÊ`·&©>Øï.'MùþåÄþðFc±õ8i\°ÿ¹…m=.‚ó«~öíÎN^ýp¹Uª½ý :Ûéì[³³ïlusöÍëKõróz³›³¯_µ³7vj+ñÙKÃÎ.”çÆÒÎ^¹bgoíwsöÕìì»O¤[(¿ûD}»ÓÙWž·³ï=]üìŪ]ª¿?Ñù쟟-7;ûÁÔ‰Ng_|*ûl©¶ÜÊ>{û¥Ng/Ìüé7‡­ŒôÚÚ|Z÷§³:{œÎþé7–%íü] ÏIë =Ιá*!È08rÖj§4©Ÿ‹ãòလqG?¢ó£¹íäœí ãÃ1¿PN?+ü@®³:¦;o¿Ôé,ßý´>'Æ9QépPê9rÖjï€órKŽ v¦ý£Wœ÷òƒgy$–NÙèAî÷'^.ÈÍó–¨ù¹±ÿ°ß ïó€|¡œ†êWž?™ _n}ôZç³Ýw¸¼¤ø„í÷ÙÎ ç{”öíöÓ€ó£äHví——¾Ôˆíô(öO¿‰íô(¶÷Ú¹w_oÚ½ûÚóÜ;á÷¹ö%oÖòûiÀ7%ÏhwÇÁF˜Ý™êçàpcõ«'‹;Sÿ]Û»Iû}—×zlåÇ/bÈb{ï&8É>jï,kÃÞM°1ÈÄûáùÞM9­â+ÚþÙ^@Þ}Džu¶äû“ç›&{îáîò‹Õ^@Þk¼žö N:;ˆ³|–ê¿¡KÞÒÃ9Ò_{Žd×ÞÈ~ ¦ö4篽#Î LÔgƒÜ» Ƚõ`z¿(ÎÊ·öëÛaSuë ëÛv¶:k#ÍúöÆê?mM–›ïl„ç‰×{Á9µ/Õß}¢:»6ÿàÇÍÝð)»Æ®oÿôoýðÔ:yóÃA¾PîäYgy§Ä»Ç9~îdoì„¡Àé›Aß@áGg5ƒn ¢ÓûLXb½hçAgGrÏ‘î(– òìpô8ÔÞç’ñÈnDO¾ø8Ø»Yç–Øi,þðFëqXCxïÞÆj€“áǼTð¶×ÎC‹„3c(ðV[ùüï«>ywšÙ˜·{ 8§%¡öäSÔè?®šëÿþ‹µ'IãÓr¶2þɵµyâl"Ñ;÷¿Ùšl÷’}ÍÖæm(“ÑÒN0ZÒ›õíûßlîú’ý€`cõË_B^äà…§ÓéŽ Õ>O@-”“=ƒÎý¦ù9ÜÑê,Gˆ’CŽÄîn©n¸eñ`XúÏ/ì_¿:7FÅדeˆàQíïn¹õþDm…ÎÚýr×ÁcVWuö³í]§Ï$Ù›lƒ?»’ÖN¾úB¹é;Üö7І&œíôÍŸ<#ÁIg‡¹.›#ƒ¹çH/K'h¯µsïý9µ§âœ¥ói ¨ ²Aβû"87Py,͔޼¾PØi3èöòнÒé[2¤±H9>ÞÞi$Ò1oKá|tî¯g¨‘ä¶&9K]x;­=¥šÅñDä~@Àô!<ÄýÌ…~ڢ¢ Ë”›o?Xnq¥ogÒ’Ä3×ÿ‡ˆvϘ÷œ‡;õ-aØîÈj‰ïh¦dÃ,"r?,åüó‹Ubú´Ù;?™âË¿¹ë¸£Áó|ª¶b@Ýšüî²ýüÃPRú6Ô£<`íç ψ!‚Ch5p†Zð'ÚÍÝÄÜ)¾jÿ…®•ÓXüþåæ:m ïŒ}ÖòI¦ÂÒ¤ƒOО×r+í ]:;è¥py8Ò_{Žd×'·óÔž–W.Z»¿÷~œÚ;âÜ:âñÏr}~„¬žè!Dç ¹³e y{” VØ{kÇ—[!îá'`â±Ê¸uî'9Ïõ¢ðdáì¹sf÷ù20ì°¸-ÔëÛcQ]z{xQ¦G¯\™»XµÒÚç­=Œ=,-oÃp¼}ØQ[I¡%6<Š[Bû}”LOxÊþ¢`S¯[ì3œÛ§'¾ ”‰gx"íÇ“'u0ª‰÷¸üÖ>PK†ªñ?A.tz‚D]¡+?øMÑYM;Ë›¾YqÏœô½çy9Ò;ÂcŽd×&ˆ‹ÕžŸbýehþ{OÁùÞÍö³ç]æÖÈcœÈlÛ[Ì_ÃëÅr9K;‡H%ýoúÜýxmžD}¶Ÿ‹qÎ ®öÖä·ÏΕÍÜønÛCôosÿñÒ6æ¹ã¤:sóñõù=cñ½EçK°áÅBys÷ÛçBL™çŽ:-Êc¸–»6Ïg½Ï‰’C½öD˜MÞ ÂÊÁm²ÀòŸHžã´­Óe×[lðì‡v¶T‹ßÌ"Oо ñ7…’mbbcUgu¶ý;È`ÚfÐÓúX$Áy:Gj+½fÓaÅÂ;Ÿÿݾ¡‡s$»öxj8Ï0‚6ô^û ‚á œÛ‰¢#©^ÁÍ·ãÜâïlëçÎI&ûØ}¦d/I!Žøä3Éát ´ÏU'8O²ññ8ÙÎ’7Ÿ8µyÓ;å¦ÍUço‰Ù´zc(rÜÏþû2²Žçž«³w?Nb»Ã[Òia_õ¢w/ÊóÏ—) ëÇpß ÊgŽœ#Ü;ŸõË'Y8É5~C©võÃ¥:凕I¤÷ã'Âp­è›cžaæžõVoÚR¸êì'×B{òxÞûŠü%ÇžÔÙ³}ÖÞç0˜>x6ô·6¡æœgq¤(̰3%€z8GòÔ^4ÐßÚqïpÎiþ¼\Ñ”Hw '5áq†Ó­Etô~&˜yJ…ÕV -w&üh3~KHnî…P«,YE¤dmiXˆnã(<>N«bœs<Ì'õZô\[±.»ýxÜþÝ9ÅêáÊq?Ü!7àqÃ8n‰Ö׿ëÛæCZ’]c|G ¥ÓL¶ûr8»P¶ç?}ŸlgZmåîÇ›»XÀF›ñ<ŸâÞ3óÊÿ®@eÜÞóà1›_·r’…i>ïâW3ø¨šDü¤:ç{ÂôIuÖ o¬~ýL²öÂÏYÆõÚ{k îâ'øÁ”å¥l)œ‚Xò<åØÏ:{¶Ï¾õ·…²½ÏÎò–ÒOÆgéó9Ò̤Ƒ<µMì÷·öìEvÝÝ{*ιÕAÌmÄè„s^”ÃíÜØ{Oß™ :÷kËC—džÅÇtÙ¬âfy‘ÒèÖ|vÆv’Än?nËÿÝå—áD;í¬€IórÜsg"½=6¼HFtŽÎ©—uÎ< J¶õð$“;ìzð™Ç3i5†rÌKÙw”Örî”´^ü¬éD<\³Å€]˜)7‘°Þ;dw¾ø‰¡Fû[Äô ,&N–ªÅoHÀm§ Ñ|UÛl½%ù;µß­²Þ" lQäÁò}½ùŸ õÒªØÏ:«³igù†Z¯›Þ'{œ§q„Þ¾(ÈC²ýpŽd×ÞÝ0Âl¸¯^jÛÈò œÛǨ`8 ?ÑIpäò[Ɖ6ƒ¾Ü ‹’|š‘ÑÒŒ\‰åH2+i–Mëò(Ù÷5ú’‰n9îkç¥÷g-.d¦*ÌìúöiÏÁz9ê5 Ò¹SrhU²Œ‹’CtžÜƒŒô–$q³¯1¹  $õæ»#_Ž}¶óó ù˜äS鳿Þ2ßÏ"ù[HÙo"BR÷‡Ã?ǰ2#Y]Ïä…]ÊL~Cßþ†ø§|ð vÆ|û{ËÏðø-@òŒ²êeØJ›cÏûÎ:ö3%ë¬Îv>¾ÝÙ½qÀùQrälÖž‚óPèpÑ ç¼4y,H;}gùñU7gIùêlrÖº§âg-ÑvÖjý:GíéWgu6ßYû.XŸ“þ=òGœGÎfí©8ǧñ©Ë­O®ÙÌßI´¶:ôhήÍëìÑž]ªwsÖæ¶›ëöG4YEl«ñûS²ÎêìàΦõHçGÅ‘³Y{GœS(ÙÿÁVïçA=Î+㶬IVöìØdj¦¾-oÈž\p~”9›µwÀyuöý‰Êøð­ÇùÈôÈøÿþ“••••=Q–>üh9r6kÇØ‚…Õ×>㟬EüU’$I:còtŽö)x{F³‡[aœÇgeeeeeOŸ¥çϦƒì0Ÿ‚p.+++++œ 繬¬¬¬p®þ_8—••••Îe…sYYYYYá\8Îeeeee…sá\8—•••Îåá\VVVVV8?¦öÎÄÝïLp§gç|¶T{åù™RZƒ¸fs÷Ë_6wõ%‘•••=M8¯­Ü~Éöú{þû‹UþBŸ™þÝäÈôÅêä¿.Vm“ÓúöiÅ9¾j,~ýÌÖä‰Çy¨ì£×j+¹¬¬¬ìYÀùBùí åsç~;zîÜrëÆÎR= ͶÝšüêÉÍÝÚÊSÕÙµù{÷îLœVœóYÊ9ñ8g3öÑÊèG+ÅoŸk¡Ä8_nÝÚ_nmýþ±-Fs£•§^­Tgß{º2–ãçGÆÿ®¯Œ¿ûDeüÎÄg7êÛ£2Œ‡¼Ffþpÿ µŒm½5¶Åß¹Õ—VVVV¶(η&¿~fs—³KõëÍ¥zþ’Ù2äRãòÏ—ôÛôÌscoýmnÌïÞ{ÿO •ñ„8pŠAF6Îó°ãRcêÑ¥FÈFXÛì.ÊÍ~Ñçp¾±zÿ›µys÷ù‘™ÒŸŸÍÆ9‰þå–½<˜ø³¸ƒ—`©þÎÖBÇ•j¯¾0SâŲ—j$vølcñ»ËE³¹/<G€sP³8ÂlJžd{sýû—‹v}ht\¾s1àxsÝ\Æq¯-·Î<{ûüHû g‰ µys´·c[6VâSúêÊÊÊÊæÇ9Ö¢ jNÃp{—(Ÿøµ÷þß—àcq¦@Ö·cœeGŒó~ÑçÈpΑ¹1ûg{Çùk*ã–EÙ×Ò/ú1ÎÓ* ùÄq$ç‰à™G‰1ßËãd`Á| 9›Ï/õæWÊÊÊÊ çí+Û ä\C^–ù`Òàü›ž™Ò:Í'ƒƒ´¹ó~àÜÍ…6[;àÁÚã¼(;ˆÂýs¿ès,pž8¤žØ)Öö—]ªë%î¯Ø“^5I’„ó3Â~c;Žì?ü¹±ÿж¯[Ío¬>øqcU¯r¿´wsï˽›@]Þ$é´âœë—[·ö—[Ây‡›ï¯;bœ{¨svmÞn#þT $|¦ôçggJ å·,”ãz‰þ·&mC½ì6׿¹¹>=ú§ßL^˜™øüÂÌØÖØ[c[ñPƒ#ÕÙ÷'ª³£•§^­lî~ñÓæ®y¸õxzôŧ¦GG¦792ÍÙ{øe7©ë‡7šë´|dzdüÿýËß*Z~±úü÷«”ÆÕ·?»Qߎ}â[µÜº±³ÜŠŸcþ2ùzà‡pG£­Ø[Ô~¥$IÒðqž–WÎÏ .eã|gêÑ?v¦æÆ®~87v©qùçKÿÃú~kÿaQœ߃%L ˜³ÛF½@«¶rû¥vÿœ;÷ÛÑN8¿0ó‡ûf‹ß]n,Ÿÿëù‘…òµ»6°°–ìLí|º3u~äÙÛçG€k¨ËðYª½úB©¶wó¿k{7ÃóúÏ­Öc[ƒOî‘ãÔH«@¤µjcõþ7«þ æ/“Á ŸõµÐ~ßfI’¤áã<{‚X8?ׯÔGZ ¼pÛXüö¹ÆbÚ§²qN|Ot ¹¦T»r¥T#ZÍn›Ç^§!Egœ¯Íß»r [“_=¹5ÉqîK¨Œ¿÷te„SNÀdïX }¸/Ê÷6 >>z-<͸UñÜyþ2lqïd>¼:I’†‰sr„>‘οÍ,Eç¢s×VÆß}¢2^ç)7_¿Zn–›o^/7‰AIç‰#×wjygœûÚ¹¯4_‘ĦÒÔáÊ_2æ´«³LUgA/q|lýôDܪçEËdxÄDˆþmøþÕéH’4hœ{®y{À ç‡ÜüpæÎf,†3ÙØQãÁãà$SpÊÓ6"Ú[¬¼gÑsÚܹ¯½Ûè TÁó©¥úõæRº.5¦]j„º’4~Zí´?,ÊcîÜäâ¹sîšk€«z¹’Ï’{¨aXcƒŸ®ÏƒóüeҪО$‹À³Î%I&΋¢Z8?‚ßÑ‹ÕÉ]¬Æ3èĵ\,Y•–„gZ€Í/…~žÅÒ0ص[í´iµ‡¡‰ 8ò¬lC+?me;p)½ò¼­OÚ’™õÏóüer/¬~÷×pDÉvI’Ž çÃ)á”Dç'Wà8¸·’ ½!j?<1.I’$ >üÓy=³ÜæY1‹Ô:§ÿ! ëøé—¾`’$I’p>pä´¥vÙä`Û'ÉYLWtp I’$I¹$I’$ ç¹$I’$ ç’$I’$ ç’$I’$ ç’$I’$œ ç’$I’$œK’$I’$œK’$I’$œK’$IgVú#¯Â¹$I’tJp~´%ç…G[lÊ_G×6'ÒÑ*m:I’„ócóa¦2âýÎÃß¶áiØTÔ6 寯녖†/v·¾•$I8?Ñyw`îιi[¤°ûm³wÒ~ÛAüŧÛAã<ÿÍ÷â lœ£¥úõæR…òµ» eŽìLí|º3E7½¯9k¼[¹ß5\[¬.ÊÆÍõÞh®WÆß}¢26˜8à³üûRcêÑ¥†ÿz?ÿ{ðFcñ»ËE ‘gÒ6Ð6´6P‹¿’ý⨅³yî_$ÜÞkmŒs_90é}o~ˆï«;ßö^B6Îñ÷‹Ï9ÞXüö9»Ób¾’$I8γ]Ð/çfãœ.ž+Ù´”Óùú++ãï=]'¢M+mgêÑ?v¦èFÊo?X(§¥ñ‹Ö"­ûß„®™˜ãŒãµ•^«­¥q€êõ6ÀÀ>UÔŸ´<-b&²,z¿Üc¸/ÃUœûº:ebÌ?\“Îî|Û{ Ù8÷Ã/œò‹úJ’$á|€8Ñ/§ä‹Î-Í H¸2­vR©t‘ÙõÒÕ†)±£uß Í#6]¡OfX=0ügc`Tg?˜ªÎ‚söSmœ@Nógû,¯EرŸã+óß/íù’¸ qÏ=“è&b.7_¿Zn’¦Ngw¾í½„lœÇ÷åq^ÔW’$ çÇù Ü‘gîI÷Ç"É<7võù1âà^¢óéÜ}¤Ø?}|tî+ñ•ùï×Çоµ­Çÿ¹Õzœ– ðu‘îSö©¢à<)8/ê+I’„ó!á|§}e»!ܯlgn2̰2Ÿmó¸>ÌïZ +³çι2€-YØEJßã¼h]½Ã/ú#NõóÜÀÕcï0œ[½!·a+°ãà½8ŽÏs¿< ”Ï„óÍq²‡ÆüÉÅyQ_I’$œŸ`œÇ¤ÙÛ—§…öÛêk~ÆVle;Ÿ%ÁËg±ññkѺzG#áìÛ[%ó¾yüéï‹hyP”ÿ~™3öí ‘¨¡+;€XtÆõÜ#Y ÚܯÌÇÑ⼨¯$IÎO$Î¥A¼îGñ iÃ|ˆDþj@’¯$ipáŸþÈ«p.œw)ÒÅÄ”þ~DÛü MÏB¾’$I8—ºIÝxz¢¿N È'äYŸgŽÿìH¾’$I8—$I’$á\8—$I’$á\’$I’$á\’$I’$á\’$I’„sá\’$I’„sI’$I’„sI’$I’„sI’$IúUäU8×àœ6ù'Os4óÙúöheô£ýÑܳð<Ú„óc2‚³Ý«.V'ÿu±z›”¥7Žö~ÙÏ{Ðzö8{òtxàxŠ?š Ôù«øò¹p.œŸ*œû=Ôûv³ýhû¾æÂùéoÃÑÞÅéðÀñ~.÷Œ—Ï…s®_nÝÚ_n ç§ ç‰³êÛ#Ó#ã#ÓþøÖä×ÏlM²Ó6ã}öÛfÔ—Ïñó#ÏÞ>?Bi”L·BêËÞGU—/!lb%,”ß~°Pî¥UÕÙ÷'ª³\w¦ˆ}ÓÃþëVoØ7=¼‡¶·ú‹Oß·>»ËŽs¤¶rû¥Ú {«ã±ø=a´KË?_jËÁq™¡4žKÒ~ï±lä÷y¬™ÒŸŸ)ÅÏQåõvQ¯æy+ƒéÐ{ ¼ÏþÊ<­ÅóÞ·•ñ÷ž®Œ§ùœ÷ß×µÿðçÆþCòv¾Ó÷qsý‡7šëyžu¶OzyÖRQ§Í” ç'ç¤àø:]˜™øüÂŒï÷nî}¹w3tî¶#Ç‹ß]n,òU÷;RS>_K¾ê•ñwŸ¨ŒÓq°ñåÎÔΧ;SüûRcêÑ¥Æðëò%0º,Ç׿ïÝ[›ï®UtŽ\C·XºtÇÖª…òµ»ö,ì÷B§¹Üº±ÓÞ½öŽsJæM |<‰xO€Mmå£×Ú¿q™üÛ§sC'nžÌþlQŸÇâS€ÁØçË{Þ·‹z5Ï›À )ÞßÝoÛ[kÎ)o Gxÿyüw‡{·Ý=kïò‚½Îë/ÐmkǹÀ±Ó<Ï¿÷3°£…ÉÇáYKÞÛžkäñ¤‰p~ çÎIVó¥â nIL–4î±Ã¬+»Ãen˜ôcï­:>ÑyˆïÜiO;*’è4úx—<|J6O_Ôçi? œˆ<ô#ÞíÆ«ùD‰€ýÒÔÁEçȧñÁ¶OÅÓ?s|žµ{Ûƒ<*^8?ñ8س%-|µÂlŸÍÞñ%gÜÍרwúþkÜ b‡YWZ ¡{20‹Ü{«²lÚS²ÉR¦°ŽùQÃ-É3wî1FòÖG~À“túKõëÍ¥zƒÕÎ=úŃt¾,:óezäàCâ®?ö@QŸ§ËZN”É3ðñ5ù½]Ü«‡¿ Ô¢ðd¨D-í¿4)ÖÚ4œwzë’{X°ÖyXïçÑ‹>ëØ'ý{ÖÂy¯‰táüTáÑ=?¾l|H Ñ`ùúÙëÞ;̺¸’îžT!‹tbÿôÒªlùå{~?¬^¶gÑÝÊv?ëé—¹¥'¬v¶ºðCºƒ_§ðgIÀŒŸ%õe0P»y $P² Ó=×çÙ-Šý–ßÛE½šçM v<ãï”#ñçÉßÚ4œ§ù<ä`âEy¬rg…}¶Ó àðgæ“~=káühKÎ%éXt§õWÈäòä3$餋õG^…sIÁ)Ä9ñeœò•$é$J8—¤CDºõôýÉOæ¶³§–$IÎ%I’$IÎ%I’$IÎ%I’$I8Î%I’$I8—$I’$I8—$I’$I8—$I’$á\8—$I’$á\’$I’Ž\ú#¯Â¹$I’tJp~´%ç]޶Ø!Š,õ*Ÿ,±Mçéû£ª’$ ç'çÃLe¤mfÊ~ÀlUÉ5vq–Žûï´î`&I’p~b¢óîÀÜsÓ6ð;wÚ'ûŧÒ÷BfWoí¥ÙŽÅË­[ûí[IRBsý‡7šëìîÌNÆg?cvJŽÛ_}¢:Ë•ñ¾Ëy —¶“tmåöKµvDfîü›mpd8‚—¬ï6Ö\(¿ý`¡—À]ãüe²GuØYÜv›ÏÅTÔ·g×mJ£.üLíXöŸ.êI’„óSŽóü7ß‹ƒÒpÎVåæ›×ËM:ñ©GÿØ™Õàm¡|í®AÈŽìLí|º3E§Ï®Ïœ¥Ê\›¿womžÒ.5¦]jp¼±øÝåÆ"P!+À™ ¸†¡ƒ ß~†\à¡_8çŽ@ ÷EûigZ-ì²6ÍLZ»ÿp¿µÿÐ'À¹G°Š'°¼03ñù…™¢e¦ÝQw¾ü ³*ãï>QÇ©[t†¸(ÎÛ¯4ÿdOOx?ŸúxàÓ_Yn¾~µÜd¸ƒNÅQlþ2ãö÷î[s_WŒó¢­•$I8?C8„;òéhtΟ–§[ç8GˆÈ}úœøØ½;<ç¿>Ä‘‡ãÜPЉ»ã~‰ƒýY†5 œˆ¸öRfÜþÞ}[çù[+I’p~æp>ˆÇ“çaîÜbë°€‹¹sƒ"ðfŽ9Äq†kÆhñs®Ì­R1«Ÿ¥¨ÄúÝáÜ#“ô¯;ቓùEËäNý4Dï¾Íóâ$I8·ŠóÐ~[Ùn L[Ù\Cú=^•¬™gU{ù•™Ò+ÏÏ”( ŠülnQœû™{¿Ì- ç~%‹ÂX8–Ç?\ïÛÏ‘´ÈžŒE@ÝÁáBÑ2ý²µö_%tïÛü8ïÎ’$ ç¹4w˜¿Ûfá¡ÏmH’$·^QäU8Ήæý²Aù_’$I8—ú ÔÃù…4³øE§<$I’$á\’$I’$á\’$I’„sá\’$I’N'ÎgJ×îVÆeeeeeee‡o…sYYYYYYá\8—•••••Îeeeeeee…sYYYYYYá\8—••••=Õ¶_«Ç…sÙ3ñUYª0ugâ8´‡–ÿ¯ßqðÞÉòÕé{We‡ùܶá|àv¡üîõíü£³µù?nMžÍ¯Ärë£×ÖæËÍëÍêìÉÂù0¡•æ¥a&N+ÎOÊ»*+œ çCzüÕÙÏn¬ÍëËÝœ—jïlUg‡Ó¢Þ„÷ò—yZq~RÞUÙã‰s®¿3‘oÂù)Çyþ.#üÕž~±¹»wÓvL_nÝ~)t£ÔÒXLvUo,~ÿ²íí}x;çÆní×V‹?¼Ñz¼ÿp¿õ믔¿6ÿå/Å™ÒÛ:ÝQѺüõûmGóUÊ/VòRýý‰ú¶í½¶3E;÷nî}¹ÿ°:ûùß7VóÝï»O„û {«›åHÑè<{òÜc¶—²ß¢ÚŠÕØz¼ó©mœÓù³yÞ·¢mèÝ3õí{÷6ww¦lËÿrGÁ3ötÂ;y° ”ìï«—÷äø¼«À€Ïâ³æ™»·—Pô=ô=IÈöß·i½ÖéÆyÚL¹p.œ·á|gÊ:ë…ò{O×·‰Ãqë -=xg‚/ÇÊöïôvªùìÆêWOx—›7vj+÷S½Õuøýf—ÌýÒùŽop%¨N«½T{ûAu–®gkÒ:_ŸJeX“çEÛ“ß{ÝEçÜÝ¥êUÆ?¹ÞÀ¢ï[wÑyQÏÐZÿ,%p„r¸Çö”¸}¯vWûñ|Wýž3y‡½¯º}“ž„ÁÁ |›ÖkVœg/yÎ…ó¶îÕwÍíµtg…}G ÂÛíýolL|É{©+Ïýf—lžÜX%î¤oigµÄ³¡qÙÝÜyÑöä÷^w8Kn®[ü´¹ûõ3Íõaâ¼—'EwÏ{|™ßÜýö9Û`÷þ7aÐÙû{rÞU¾”InÆWv÷úždp¾MëµN:ÎÉšøD:ÿζp.œOt7“—±´-í%£Ãòg{©«÷» %KW²5ùÝåæzl³;:š<_ª<8/ÚžüÞë×ÜyhI’΋z†çÒzüè6ø0„¸ŽŸŸÝXýú™Æbˆ­?8ëý=9瀞ëÿþËΔt}íýzáÛÓ´Î î ýìxÿû–¿ ½xÆ–3+Ì$mæØ/ ‹“Þ½¿'Çá]åÍ µ$ËQý²²þ¾‡ƒðíéÆyw3ëÂù©Å90Ý._¿¬fð8O–€Ñ­çYÙÞK]ÌÃq¿¾³È_2­%ºžÄ{•q‹¿ó¬l÷ LJène{þöä¿Ç4/¶Ξë-q½w3~÷ò¿oùÛлgƒ_bDÃÚéƒK´X @ii1bïïÉѾ«|– ˆ±ÖÚ‘¸öÞßÃAøöìà\¿;×_…“••••ÕyÎeeeeeee…sYYYYYYYá\VVVVVV8Îeeeeee…sYYYYYYÙc„ó_%I’$I:" ç’$I’$œ ç’$I’$œK’$I’$œK’$I’p.œK’$I§Zçú¤S‚sþpÿôè›×—ê±MsŸ^£Ø'[“_=Ù¾1Ÿ$I’4è¾÷hK´`qLê£Ûßic5¶Ù8„ fJ~v¦´P~ûÁB9>;7võù±‘é‘ñ‘i6 ôgw¦lG£‘éßMŽL³ÛR~m¬>øqcuï¦í;ÔË ±¹ûå/›»ú‚õ×·’$IÂ9\êípî/ò—fß|Qý`ª:{~äÙÛçGâ³c[comQ#ðgk+½f;d_¹Rª ÆÂ¹<#I’p~‚qÞ_w4׿¹¹NiDÛo,~û\cq´òÔ«£• 3¸af¡|ín{Od_ßþìFØ%º¶rû¥Ú ƒ¢vJð×Lþé7Ó£ÔHÜ¿Tg+Üusý‡7šë”ÌY,Gb¬Íß»·6Êüíÿþ›)½ò|û•iZnÝÚ_n1d ­ý£µö“k¡µÈfMZ§G_|jzÔßWhy’™ UÜoðƒµŸ27w¿øis—Z°kó6ãëÚšüú™­É‹Õç¿¿X¥–±­ß¿3¶å}˜þ vö--÷~n´Yùš¶$I8?œ÷×) Íc¹ucg¹57öÖßæÆö¬Óç,‰w€á“ºD„þHuöý‰ê,èÊŽ )“ZJµW_(Õ|9­Çÿ¹Õz—p~dü¯çGÈBŽ3É3ˆÕ¾ íijC5µ„Ù™Úùtg `ã+ß*`ÌФ2þî•q|Un¾y½Üä³üûRcêÑ¥ŸÝ»¹÷åÞM|ugâó¿ß™C«ï.7¬øÖæÎ)§ì¯äîN”$IÂù‘á¼_®-åæëWËMŽ\˜™øüÂÌÆêýo6VAcÀ¤¡…ã@+­Ìý‡?7ö=§eh°ò™Zâ_-ûåo,‘‹K`.–ø,ú˜>ĵÉ1¢|¿R={e{w8'ú§Uà Ë‘xèV¶[«ò¬lïç¡.6“¾maÑ_2+Ÿ¦4߆,‹=»0™Ò}@’$á\8ïóR8I’$I&ÎO÷y Î%I’$IÎ%I’$IÎ%I’$I8Î%I’$I8—$I’$é„à<{ô~Y6f—•••••=‰vЬ̹Sw=OƒzÚžè½XJÖÈK’$I:¹cV¦ÜZÐz\烰4Èþ(Js]VVVVVö$Ú£¢gœ3¾àß>ÀÎeeeeeeÎ==È;àœfùx}гæØUûë²²²²²²'ÑgÙÁ¿a@~Î}¼.I’$IÒÑ*F¸·ÿ|Àj,L DIEND®B`‚pygtk2tutorial/figures/packbox1.png0100644000117200001670000006331010227354654016561 0ustar finlayfcf‰PNG  IHDRY@<^ pHYs  ÒÝ~üfzIDATxÚí}wX—×Ù¯·+Is%}Ó&5ÉkÌ0ÓÔâÂ… Šì=T@”) ¢¢²‘!²÷ˆ²÷qÇhÒöjߦ#mš´MÛ¤#oÏýýô{åIÎ÷á÷ lîû\ç~¾Ï¸Ï9÷ùœû¬¯,]ºysP~…………………e ‰¾>µïrüB»¯D.\¼xÙ²ÒÒ3gZ$éé¹{w,qöl}ý;ŠŠ.^üÉOäX\|éÒçX[ûÓŸ–”ÔÖþìg¥¥ÀººŸý¬¬¬¾ž‘‘‘‘qüÞž^[îÃå¾>ìÛšé†hÓѾË)‚"-ÀEii99••ãûê("ööû÷×ÖÊÑÁ\[ëä\WçìR_ïì|à@}½‹Khh}½«+¡›ÛÁƒ ®®„øŸ‘‘‘‘q4Pîiááá™á¥á±á½áÉå¾iÁØ#Úz´û:hÁЄ <”våÊ-[ˆˆÈÈÐ¥50ضíС£GOêíµ«W[Z‘$-­§GÔ®]kmqèÐÉ“ÝÝ¢vÝ:[Ûèè’“»ºDíúõvv±±!!II¢vÇøøýûui7ntv>q"((>¾£CÔ¹ºž<×Þ.j7ovw?uŠr¡­MÔš˜ìØ‘™éãÝÚ*jMMwîÌÎÞ³'*J—vËOϼL•SÔ._¾uë¡C¡¡T±Eíʕ۶= § j ,-#"ä_ôE­•UTÔ޽Ƿ·‹Ú5kllbcáÈDíÚµvv  V¢–ˆ×‰>>QQ--¢ÖÐÐÉéäÉÝ»#"š›EíÆ..§NÁ­‹ÚM›ÜÜ22¨IhjµFFîîÙÙºµ›7ïØ‘—·cGXXc£¨51ñð(,tw§fLÔššzzSX_/jÍÌví*+£ 5x_Önݺ{wE…£#õfD­¹ùž=••ÚÆòËÚmÛ|}Ïž…ãµþþçÏÃý‰ZšÝéZ­µõÞ½º~‹;ÃÕ*½(ÅP_¤K»e YÃÉI·­È’¥¥ "ºs¡¨DDw€jˆZcã;rsA5t—œ¬,OÏcÇtiQê¼¼tk©Ä¦¥y{ë.ÏTÚSRˆjèª ¨)Jõˆj¹¶6Q»zµµuLÌÞ½ññºj(iáÍtiW­²°NLÔåÈ«9ràÀ‰º¼ 5̇Lèòf¦¦(ù:jöíC£®Ë‹íÝž‘¡Û‹’¥;÷ôÀ3kµô?¼·¿?YRîÕ‡¦ãÕMŸç‚|aNaqqeec£Òkýüç¿ùÍ'Ÿñ àoûÉ'ÿû¿À÷ßÿä“_þ’ð½÷~÷»O?þêWÀßÿþÓOýkÂßü惴xõê­[?û™Ò+¢ˆ˜›ûù]¸Ü¶põj›ãÇÁ1ÍÍ}}IK¸u«Ï… zzFFû÷>œ’ÒÕ…9.Z´aC@¢ ¢vñâM›‚‚¤F]Ôê釆ž8¡KKd"4UWÔêë›™……Q£½]Ô™8vŒõ¶6Q»bŶm‘‘pFº´ÑѾ¾Ôgµ«VYYÅÅíÙCý-QK–LLÜµëØ±æfQ»f]r²‡¹fQ»v­ƒCj*šmQ»~½£ã©Sh¶E­¡¡³sF†’v×ìl!EíÆnnyyNN!!Kø²vÓ&w÷‚'E­‘ÑŽÅÅÔ«¾tIÔnÞìáQVfcCM¯¨51ñô¬¨°¶ Ô¥55ݵ«ª .OÔš™íÞ}ö¬……Ÿ_M¨%¬®–—aõÚ¡ï<ô[™˜xy>M_¤K kØÚ궆±ñÎ%%ùÐmçíÛ ‰Z)åQ~>BʺrßÕ5'G)÷©ädf*•”ºíÛuk×­£»s§î‹Ò «TS¼½‰þê®eÇ+Õ²•+-,bb|})n¡«î››GF¢Tò {÷ݵÔE Û·âº=ÒÁƒä‘:;E-uBBÐÑí ÷íSò„äEÉÇêò¢ð±aa'O~ñ·(Ã+V˜›‡‡Ã{aÕzuxx%Z0^-Ñt{.8Àæ%ªÉŒ‘z­ßþöøûßÕÐ33r‹@ªœññ»wGF67›šîÙsþ¼©éîÝçÏ›˜.Zddœ”Ôѱy³·÷¹s›7ïÚu1áܹëÖùûS5èè@ŠçÍ34 @£.j,ظqß> êÒ.\hdŒ~¼¨]¼xóæƒQ D­žž‰IX¹Œ–Q»d‰™Ù±cø^Q»téÖ­‘‘è÷ˆZ}}sóèh¸9Q»|¹…ÅñãÔklµ+VXY%&’󭯵+WÚØœ8¾¸¨]µÊÖöäIôÅE­½ý©ShÔEíêÕè׊ڵkœ²³Ñ'Ö¥uvÎÍ¥þ4õ5¿¬]¿ÞÕµ =Qkhèî^T÷$j7lؾ½´tëV_ßêjQ»qãÎåå[¶Pùµ›6yxTV¢”"EÙB¯×ËëìY”Uñ·@%­‘‘§gU•üÎ_~îéÓJoµqãŽeeôEº¾×Ðpûö’¸i]–ts+,´°ÐmÉuë\]óóA5tçQNEíš5ŽŽ™™”ûº´T6ÒÓ•JŽ]j*iu•*“))4έë·+WZ[Ÿ8A(ºÊóòå––ññDDí²e±±JµŒjhTbiºj÷–-ááˆÃé®ûG"VªÛo>Œ®‚¨]´ÈØ8440ðøñ¶6]þjÓ¦à`D&Díüù6ìÝ«ä çÍ[¿Þß‘ ]Úuëüü@&´ØÛûüy ½óÁƒM÷63Û³§ºzËúßÀ€|»zZ06-Ñt{.p´`d_K=- T]M…&!*XS¹ÂêjP8jzÑ'W{þúóŸ?ýô§?ýå/ÿøGyúÆgÎ#>^ù¹TG†z硾}zݶ"ò¤Ë’°3ÂÅJy„X‹Rþ‚.(• šʕ.íÐeR[ž)2¡T™n=BÄŒ ¥ú‹a¥ºO]ž~±%Ÿƒ %…Œ’¯£Øƒ.-ü$肨ýñ׬ñó#ÛÕ¯«õÀä.„Ÿ¤çÂcÃ{ÓӀB|<¼™Z0–-ÑÐÏusóõMLÔ¢ŸŸ.tw'Ùçâ{ñ\ñ{ñÜiy‡E Ô¾–<äF‘¿Öûïø¡:Z°j//-!Ð)°Ñ¥K‰Sƒj¦Ïžýñ×®õóCmógåøæ›¤ÅX¾¨;wýú½{A5Dí¼y6ìß@aQ;þ¦M€Ë‹Ú… Âø¥¨¥jä*‰.­‰É±cèˆÚÅ‹ÍÌ"#µK–lÝëî~øpCƒ¨]ºtÛ¶ãǵúú––IIcµË—“ó…kÖ¥µ±IM…[µäÖOB“ KKM‚•ÅD-5'ÙÙ蹊ÚÕ«œòòÐëµkÖP3†þ´¨]»ÖÕµ¸åMÔ®[çæVZЦWÔ®_¿}{EšmQ ZðÛß¾ÿþþðâ‹‹;9‰×|ñÊßýîÃ_yeÙ²; w¾n¶—Oý6rÖîîUUÀ9s ||‚‚¨ÈÓµZ¢ Ôä‹Ú7ߤ;£‚‰Zª`û÷ûøPèOÔ]8pÕ@ÔRÅ>tÈË‹ú¢vÁcã£G©ÉohµD&ŽÃ4+QKÎ(* ŽLÔ’#‹¥É_´0òËZ=½­[ãã1}OÔRŸ)) ®YÔ’óMN†[×¥µ´ýÿñÇ™™§Oß¼)¯ ´¦« ÷Ç;£açÓOÿñý+#£¢âêUÔ8Ñ’Ôäçåá¿ÿ= ˆÈíùóŸ¿÷ÞGQyÖ–öŽŽ+WÞ{×?ÞкíéÓõõï¼óË_þæ7þ3Í\ÉÈPÊ}jòSS•J޶ÔQìAÔÁMJ]ÐUž©´;:ê.í¨) Îºj™©©r-#B¾cÑ]µÛÈèÈ"ôº=ÃáÃè*èö*¡¡˜ Ë#!@EÔRÇ)(( €†8u{€%OøÆ¾¾ûöQ“¯ë·Ðƒ(¢Œ-Ybbrä¼7(‚Ü·«£#I†Ó<ën‡~îýµ€ê¿w¸„`„iRˆ$@Žâ ‘Ñ¢ZðÅÉA––Ç£ù$B@Ex(‚«¨èÇ£€®]K¸f›[eåk¯­ZåëK1€ÖV¤È‘ º¿?š|QK•dï^??ϵDöïß³'"¢¥EÔþøÇ†† b‹Ú¹s7nZ€´R™fÎk'³ 0EcrFF˜ãÚÚ ~JS«´ÅQË^i^®®…Â@tqêµk‰S뎠‚]ÐÅå CBˆ.èâò´ºáÐ!¥~… ÃÂ0d !À®¾ wwÝ}šÐƒiƒºúLD0d «¿E!V¥þ–¾>ZÒ¦;@¥žMþJKƒ[×!HO§exº"4Ü•enNtA—–š1„ÁÑ,ýùÏÔ ½úêÒ¥´iÕþýHÿãÿô§¿ü…¢ŸŸö­(naaááqê”§çáÃçÏ¿÷Þoû§?áú^X¸ÐÁ}e¤¬_O”föì%KÜÝÑ¿¤ï:yýE'§¢"9-HLÌȨªúä“O?ýç?×­³°8pàÕW—/÷ò¢‘~m´@þ¶[·8 ¾í¯~õþûŒô+Œ½½É¹ûúnÛ¶{wi)Òÿ÷ß{ïý÷©™?rÄØ˜Â¹èsÿå/Dtþ!É?ÿ‰+·oß»÷Ô)ú 77z“Ó§µ‡ü| ¯Èãò7\³ÆÂ"4T|CZE’›ûñÇù˧Ÿ’?ùÇ?hmtHHBÅþúWŠ1üøÇ«V¹¹¡¡Ëm¸4T¹RŠP™TŠi¡<+ÇÃP”biT°R©*ÅðP•â¨û4ÿ@Wí†ßPŠ;j}Žî˜%üº7Ê¾Ž¼èpýäo¬ZåãC‚¶6x]­Æ0ÍÄÕ€Çþœo§åðíêiú óöíŸ7Ïê["5Ï:&1zÏãñþ½Ã¦jB4ê Áþ –` "pîÚ‰‡4"¥¯¿e ­ø§PÆVii&¼¬[LëÂ’#´û÷côëËZª`ûöÑpƒ.-Íé   &j‰<èçG•SÔÒò¡°°={¨b‹ZZÐHSé{uii„ÒÓ“¨¥EM4嶈µ´\ЦRßEÔÒÌêøxrs´â—µ´ ‘¦hQtAÔÓ§é]4Ã@ÔÒ0šrHdBÔÒâ1šrHtAÔÒ³ÌLÄDíêÕöö4åÐߟö3ø²–¼Ñ”C V#EÞ$?ÿü‚¶¶4Ü Mÿ—F¨±·³# ×Öþö·|ð׿Rùÿ׿¨Oÿ‡?ÐÿÚæó¹çæÎµ°øì3,@Ê‹/.\hmMEƒçÏ‹o…+?üÖüîwT'þô§?þÛß-Z·nçNšÏ_X¨ô¶Xe ¾-5éŸ}¦%+óç[Yá>¨ò멱wq‘¿OuuKË;ïàšŸþ”"³fÍ›giIÁüS§p ñ[´"ô&X[!"ÞytéRGÇÏ~í¾}aa§Nýô§¿øÅœ9SWwíÚóÏÏŸokKÍ †EP6hÊ¡î²AoHSu—«¡Ë$-;Í0PªGTiÊ¡î:Hd‚¦ꮿ´„ïØ1¥º5J~ó”|‘‰”üÕüù††û÷+ù: Ë*ùI¬ó ùÜÇ¢ÔA‚‚bci1$‘šãï]UÐ5‚WWC ÔÌcHàp[¢‰ù\qxB=QÓò‹ÜϘÒkýáú“:Z€EzXc-GZÖ£]Kó«©C  /¦­‡h ˜VÐbîëçHÍöþýX¡ j©Ù ÁÌ[Q‹Õ·˜[+j—,15 Ã[‰ZZ7qì¢ ¢vÙ²­[ÃÃÁôuiÍÍi 4m=$j©ÙŽ¥)Kº´+VÐÚkÄDíÊ•VVIIÛ·ÓÜQ»j•MJ ¡¢–šÀ´4QE-5Ûé鎎ÔÖŠZ¬Swp ×,j©)Êζ³£žœ¨]¿ÞÅ%/;êÒº¹`~»<]ÞŒ½ô’žž“¶hEú{ïÑXüsÏÍ›geuãÆ½{¿ÿ=Ò ¶l ¢FËÆæîÝwßýå/å´€îõ׿"eËšùŽ5Ùâ[!X*ÚX+- ).Ô×÷ôÐŽååâÛbÍ…²ëëÅ·Å|y´ƒn4ÚÝØ(àzÜŸ¶ÆFŠ|ú)®¤·ÊÈ@”ŽÞ§´›ÚRÓ®lO¼¡’=q=Õ)íœü ÿoÜhmJrCCµ¹O{T`î’“‘uJ¥Žö^ԥŮ®ºË3•öäd¬2Pª)Xe «–Ñ^ 4 ØÔ¤«†nÛƒUºµQQö×U÷‰ˆ„‡Ó¤B]~«±¨/®ËçG:|XÉ_ai76DÒå iG,JTò¢´½Û½(þÅ‹i[9üž^‹cá½µ@}îÕÕÑ‚±k‰¦Ûs‡M Föµ>üP--Ðniü9Ò®ãÉÉXŠWE¡[ÚÆÕ×—6û¤¿°¯8C×ÔÐLi-Ò9Q`§By:péRSÓC‡°9±¨]¶lË–#GPÐE-íVvìÆÕD-ítItA—–67ަà^[›¨¥mi5r º´4¼BE—vÍ[Û¤$rF--¢víZ{û”l?,j×­stLKÃÊlQûùN…ºµ..YYØøVÔ~¾“®ßbC¢º~»iÓöíh E-ícXT„s1D-¡>úãÿüg{ûÐÐ ÚÚ´ý×S§rsÏ{ùeêOß¼ùÎ;|€ôèè'Š‹Oœ(,ìí¥ð÷¿þ…t'§]»""è7wîȸ¸œœ®®Ã‡SSûúhv­[.nlDù”7ŠÔwwv¾|ùÆŸÿé{ö<˜›«þmgÏÖÓsqÉÉ9{ö­·ÞØØÚ:0àçÕÐÐÛ{ãÆ¯~…ôˆˆøø‚|¹àššPùþû?ýéÿþ™ÙÛ8@Ó?û샨¦9;c[*-‹§¹>Úá‰ÿßÒñEôÜ‹ßÿƒþüg\ÓÑÑÛ{ó&ålIÉÆîîʹ¿aƒ›[n®RÉA©Ò]b33±Ý²¨Å‰hò•j º››uÕ2;»'”jmlŒMØtÕP„ÐÑäëÒZZÆÄ ÉWò*41P—WÑz$jò‡òfº|¾>‘ %Oˆ]•¼¨¾¾‰ ùXì3K% %^šN„‰…÷}»Z0–-Ñt{î°iÁȾևþùÏêhö`$ô éÀžÏÖ¸xËÛ°M %yà@J í Ž]¸?/p+W𛇅:”šÚÕ%Gª`GŽ`+PQK sD¨†¨¥½##÷ï§*$j×®µµ¥½ÐiO1Q»nÝñãØLÔÒ쉉ø^QKû·kwh×¥uvÖîî.jq–¶Lµ›6¹º¦§Ó^ÍÍ¢–v¤ÏÌôð )j·oÏÉÙ±ƒúL¢vóæ;óò(2¡[Kû仹‘ãµ´ýpq±‹ ×êÒzyi÷çµffÞÞååÿƒ55ÍÍW¯¾òŠžžõ½Ž ¡µ¿øë!ÞÜÜÝ}çNjjaa{;Fâ{{nß^¿žšÏÄÄììÆÆwߥ͇èêÏ>ÃDþ8113óŠvXZRÜ(&æäÉÒÒÁA¬­°¶öðˆ}íµ+hÚnCƒ–^TTœ?ßÖFü äï€&œŽkÒFÄ7¬­mm½~]nÏÏ󨤤¦¦½]Kœ)H£Ú¾¾”¿……”ûºò—ÊF~¾rÉ¡3H««äP™ÌÎÞ¹“诮òìæ–™éé©»´£¦Ð[êª)´QwjªR-£šœŒè ®ÚM‡*}~.€X÷t{òqq4Û_ÔRg€NX ý^uù+:^ŽJ¸.EDäØ1%OHç/„…÷sïmié퓃Y\ðÞðù­%šnÏý-¸zõÎ÷ߟ8ˆ"BGuvÂaÓP ­­ONzùÔÏhi¡éxZ´°Ø¹39966'çòeô3hII{âDt4iåé@KK””èh:A\ÔZYyy¥¦FFffêÒÚØìÚuê6Ú×'jmm÷ìÉ̤ãž{{E­Ov6ª¨µ·§ï¥sÉtiüüòòˆéÖúû’»éîµNNÅŘž©K»woYFE­‹Ë¾}ååˆyˆZW×ýûOŸ&ªKëæ\UE}&]Zw÷³gé Z]ÚíÛCCÏŸ'·ÞÑ!jwì8x°ºš_ÚÛåéçÏ¿õ–‡mK …°¿ü[ZöY[Kß¶6QKÊêêèÝZÚ+½OQK¥´±cÌ¢KÎt§®¥X‹ÒÑ'î[Pþ"šQéfQ›“SUuíšÖžD Ä\ 6JK/^¼{÷Ì™úú7æÌY¾Üɉš«äd¥Ü§†Y¹ä(•+”:¥2©-±ºË3J»r] š¢T¨–PìPwôõÍËC_\©vãcÝž!+‹<ƒ.¿ak»{wF5êº|޵5y$jÔ•¼ÙÉ“QQYYJž099::;[—vÛ¶;’’ÈÇjï,÷´Ô5ŠŒ$/ Ÿ /M®à½agøsxxøü‰ÖM7ü-¸uë'?ù裉ƒ("(j_lÚ)`¤]Z[ÑÛ ÛÚàþh³Ž¶6áâñ?#ã¶mžž´­2õTØcoÏ-[vìHM¥ tLŒ·÷±c lérO  o Ï / -÷árJŸ?ÑZ¢é†_ ~~G––NDùŽ$ßý.####ãÔFøü‰ÖM7ü-øµ‚üä'ï¼óÖ[ŒŒŒŒŒŒŒS•Z|¦ŒŒŒŒŒŒL ˜0222222-`ZÀÈÈÈÈÈÈ´€i#######ÓFFFFFFF¦ŒŒŒŒŒŒŒL ™02222222-`dddddddZÀÈÈÈÈÈÈÈ´€‘‘‘‘‘‘‘iÁøâÛo¿õÖõë£wÿ›7¯_¸páüùª*¶####㤸bbBBlìÐפ¤œ8‘ O‘ËW5ò?’<ûlHÈþýAAciÄúúÚÚ ¬­­¬,,”ÞP”ˆˆðð°0õO)..,ÌËÃo'Z1º}ûæÍÁAsó­[Í̾­‘'4yì®±•ÄÚº®îÒ¥êj®xŒŒŒŒL F˜?}÷î;7n\¾Ü××Ùéççë»{7´gÎTU•—¶ùnܸvíòåç%™5«¾¾®®¦F|Ã{÷Þ~ûæMßyçî]:Åz*Ð''GG{û7Þxýõ×^»zõÊ•¾>Øÿ›)--))(hllh¸x¶‚ݸú12222-1Z þê­·nݺzUÛ$ÇÆFE¶ùvïöööòrp°··µîw '&-@œà!¤¥¥¦ž8!ך˜lÞld´QCC¤ÀVÞÞ»vyxpõcddddZ0Š´ ­­µµ¡ÚŠŠ²²âb¹¶©©¡áÒ%}I–,A ûqI{ÌÍÍÕÕÙ#ßaa‡‡†>"ÉÃ÷ôtuµ¶â·hð^äùçŸx÷Ý{÷nßþFJK‹‹óó„<ü¬$Ï<ƒ&öû’<þ¸</Ò¼šØ'žøoI¾%ÉC}O’G‰Œ ?rDþ”ÊÊŠŠ’’9s¨Wû?%É“OÊŸ2\Ä=ñV==ÝÝmmrmhèû÷?)Ɉ”’’¢¢¼< 1àý¹22222-xKýüдy4ùË$YºÔÌÌÔÔÄDÞä !F’§Ÿ¶±±¶¶´ èèhkkjBº——§çÎì/dþ|IV®Dox†FÐ0k)HKK}=Þäʕ˗»»„äççåeeõõõôttàÍüý}}}”šx%ZpñbMÍÙ³HÁüùÐÁÁÞ^Ð…¸¸˜˜ÈH¤WWŸ;WY‰™ õõÚAõ˜šzòdRÞy!×&$ÄÇÇÆâþHèïïêÂõ--MMuu\ ™¼¥~ ^‰ ¯ûa¼,ÉìÙhêäOA¿êîîìli‘kÑË{´ '‚0ož±1…Âå¿*++--,Tj‡¦8 %Y°@É&·nݸ18(on•hAgg{{s3]gIjk/^<^ì…ÃÂÚ‘~Šmàýˆy R2ÜLOOKKIQO äy*FY™ŒÀ ªªÊʲ2jì}| Å•JMWttTTx¸¼éÂÝ@ð+qY Úáêêââä Ú¡3,P”P.®~ŒŒŒŒL Fe;#o49UU§O—–Êïƒuózz‹/Z„ÞícqqqvvtDpM$16þòüÌfO0Äô=LN¼?Z€A <½ylÊ„æà ˆdˆ´_D{¼ú*ÖVà»"oŒå+5ÖHb`€ë1¬0s&=3##==5UþþvvD¡ÔÇ ¶m37ß²å»ÁʈÈȈˆ£GåWÂV11ÑÑ\ý™L)Dï|ÅŠåË—-Ã$Á©ñ]XX¸k——×Î#uO 1`µÈp·rbdddddZ0i ÷î ôó›_´\}ýææÆÆÚÚ‘º'æ|ðþ†ŒŒŒŒL 'Šë5™Œ"-ø7˘ r“íÀ6d›Lm›LÌ“S™¨¢œcƒ99ÚÍ‘ØòlC¶ÉTµ‰ü霌L Ù}³ Ù&L ˜0NZ /ÊüÿÈþÏî››@¶ ÓFFŽ0²ûf²M˜02NþhãHmÅî››@¶ ÓFFŽ0²ûf²M˜pÍeœZÑl©Ë;âÉg9Þ¼yýúÀÀØD °-4çÈDh‘ïâyžl“©mydZÀ8­£x:Îà¬z›ÜŸ«ÂÑS86‰sd¸6üŠ ‰ˆ SÿjNÑd›L.›Ü¾}óæà ¹ùÖ­ff8©‡œEEEF;†kpÀ[]Ý¥KÕÕL §u´€iÁƒÐ‚‰`‹âç%™5«¾¾®®¦fôrgIôôtw·µ©IŸ\M ÎùÄ®‘"7î25hÛDŽNNŽŽöötöèk¯]½zåJ_ß™3UUååßÔ<áh¨Co䀑£L FÅUíÞíííååà`ook;Ú9¢tω–û÷ת?œzúж‰úˆ$?ÜÓÓÕÕڊߢB¾ ÉóÏß½{çÎj\î†CqOñ°àƒCCƒƒŸ•ä™gPù¿/ÉãËÃÚp=õÈqº ®Ä—âlF¥Æ½«¹’¼ù&Î<|ðhÁ»ïÞ»wûö4RZZ\œŸ9¢¦±_$É‚HÁ}ìì”ÒÕçµüYÉÉIIññ¸þ«10XµjÅŠážû0ÚM šÒ"6È/48ÌšŽÖ~è¡ïIòÈ#È)ùS*++*JJè¸î×_ÇýŸ’äÉ'Å2É6m›à¹¸RŒŠ¡FãPu¤””ååaˆßÈ´€qšF fÌø‘$yy¹¹™™¹¹ÙÙÿ¥¸{4äÏHòôÓ66ÖÖ––h::ÚÚššîååé¹s'­’ÌŸo ÉÊ•`ë34¢¾WŠ·!@ˆoûvwwWW4`W® ôôàÊüü¼¼¬¬¾¾žžŽTã€_ßG%%ï1 òã­z{»»ÛÛñ] õõھجøù-”dÁ‚¡C¯ê]U[[KK}=®¼råòåîîáæÈpcê¯TŸ×ò; QÉÈHOOM-++--,DúÙ³gÎTTLœ&PMi›À‹kjΞE æ‚ȇp7¤  ôö¢iŒ‹‹‰‰ŒDzuõ¹s•• Lbyc›ŒžM0L†+E’š‹w@ÊÀ@W®oiijª«cZÀ8M£òê Dÿ“tÀ qewwggK‹üJ89ãF_M8„yóŒ)T7Ü 7*-RÐ#=++33-MüÕ­[7n ÊÒ3332RS‘ÒÚÚÜ\_¯æéèEÁ9*ýêþ¢ò†StUjrdôhÁpóWÆÆÆÄh£8 OHG“3^Óë@æ”~«TZÄ&°³³½½¹‡³$µµ/ž?/ö&1¢¯±¦8òˆøb`l“±±IzzZZJŠzZ€kp½ÉcZÀ8­ç®_¿V’5kV¯FÏC©jEGGE…‡Ë«\~5Ü¥Mâ[É««¼'„påœ9žÄHájIV­’WZÌ»Vz¥§SøþÅéæÎU3Eëþ›âŠš=Z0ܼúÎcC Ô÷ŒÕ”¥qô‚‚œ}ý¥Kµ%˜žV^^VVT„kBB‚ƒƒ‚Šß´iãÆ D‡æk¹~ýêÕþþ‰<åp:Ø»€|K#"ù033551‘O9DwîïïííìdZÀÈÑ‚ÿ¬¤ÿ†FNŸ.//.FãÇXÝ‹Œ7cÜÓÓÃcÇ!‘‚\Ï×5’’’œœ˜(:Öë‹. o•““••žŽžº»»››‹ Ý÷©§ðty†pš1[[++¤c8®¿¥~žœ F=ÑãQ² (Þ¿  ??;{¤Ü÷«’¼òŠ8;ZMŽ ý;Áì‡sçh±$ ŠwÀ´Á¤¤Äĸ8y˜WLWŸ×Ã¥Jy=6M úÒ¢0ýºsçöík×P&AåM JÚӒ̘adD=aP@ض««££¥EÞ³MÆÆ&®®..NN袀š`f¦Ibö’œÄ KÃ+§u´sƒQm¨B¼ôR|üñã11ò+ÑÏÖÓ[¼xÑ"°ïÇ4âââììèˆà&£™Hblüå1iÌf—O²ÃÓå=`q|Uï&Œ@ˆÏB_SQ±•÷k± '®G£ˆ9óC7Ì~~¾¾»wã{áÈ|ßÌÀÈû˼(ˬYÏ=7s¦X™‘iÁ¸E äšÿðÿÙ}sÈ6aZÀÈȃŒì¾Ù†l¦\s'-@!f”»*¶Ûm2Um´€qRÒ‚¯°°°°°ŒšpóÆ8ÉhÁƒÄXÆRÆÞŰÍ9¿Ø¶\¦³ýÇ—ØMJZÀlnjSr.s~±m¹.LOûO„a ¦Œ\9¿8¿Ø¶l¦L ¹*r~q~±mÙþL ˜0rUäüâübÛ²ý™0-`äªÈùÅùŶeû3-`ZÀÈU‘ó‹ó‹mËögZ0=iÎ/úøÑé†.œ?_UuóæõëS¯*¾ýö[o]¿Î¹ÏMÛv¤¾~ƒíÿà÷‘û(¦ãI“åàã±?6i¸6™øU±¾¾¶öÂkk++ Îý‰™_ê·ßñôôðØ±ƒm{ohÁ¹¯êŸ‹4q¶EšÈö¿}ûæÍÁAsó­[Í̾­‘'4yì®±•ÄÚº®îÒ¥êj¦L ˜ŒJ.ãìùç%™5«¾¾®®¦fôr?5õäɤ$ñ(m¥tvâaÄrÄ?-j™ÜŸÇS²'p¸ñ3¦êíïääèhoÿƯ¿þÚkW¯^¹Ò×wæLUUyù75RZZRRPÐØØÐpñ"ü|Ó¦L F8—wïöööòrp°··µíÜWºçD+i“%Њ7LLLHˆåHÌHy¼‘µ'Ó5öGœà!¤¥¥¦ž8!ך˜lÞld´QCC¤À_y{ïÚåáÁ´`*Iddxø‘#³g¿ôÒ‹/‚µÙÛÛÙÙØÈYsSSCÃ¥Kú’,Y‚àÏã’<ö˜››««³3FƒÂ }D’‡îééêjmÅoQ^äùçïÞ½sçÆ 5o…»ý$Ï>‹{ÆÄDGGDȯw®²ÄK¬#Ó‡¨ñ0"-¸x±¦æìY¤`N|8wCÊô±?†ñV"‰OHˆÅ÷"e` ¿¿« ×·´45ÕÕ1-ÓJ"/Ž@ô11¬ Wvwwv¶´È¯D%‘³<ôÿЄA˜7ÏØ˜ÂCÃu…((HACŽô¬¬ÌÌ´4ñW·nݸ18(/|HÏÌÌÈHMEJkkss}½š§£—€Ê¯æW³*ÊN±*ªÉýÑ£Ã-W¸266&F1QC:Ü÷t¦r§>/0ʮ٥xÊ q&Äí¦Ã”Ct”~«äaDZÐÙÙÞÞÜŒFÎY‡ÚÚ‹ÏŸ{½ÓÇþééii))êi|nédZ0s ׯ_+Éš5«WÃ%)egttTTx¸<;QôAð«á.ÝßJ^Dä.á¸9s(ü†Ñ©Õ’¬Z%/(˜W¬ôþJO§ú‹/Ò7Ì«f ÒÄ܉Ã7jrôhÁpËÕÐwfZ ~>‡<=$$88(áñM›6nܰAÄS§RS““§g´@‡Qš[PXXP“£¯¿t©vÀ ÓèÊËËÊŠŠpÍô±UUeeYÞ Ýú=Iä\ÅoÕÛÛÝÝÞŽïjh¨¯×†ÓÅjàç·P’ FcRÞØTζ¶––úz<åʕ˗»»‡[†P¥úÒ%¿ˆ`FFzzjjYYiia!ÒÏž=s¦¢‚-PpiŒU“#ƒƒ½½Tsy$..&&2×TWŸ;WY ú%Ö¶0[XÍ"ž%÷„„øøØX|;Rúû»ºp}KKSS]Ó‚q ò DÿÓCÀÝpewwggK‹üJ4Ãr®‡žšp"óæSh¸o…â‚4äHÏÊÊÌLKuëÖƒƒò"ˆôÌÌŒŒÔT¤´¶67×׫y:â j~5‘+§¼á«¥š20z´`¸¥ WÆÆÆÄhãF kHMäFKNæÔçÆÔµc½UBÉ"Ú„[˜-¬ÓÓÓÒRRÔÓù<1ºÉ´`Üæ®_¿V’5kV¯F%QÊÔè訨ðpy¦¢×B€_aÉ߃¼•¼ È+-BßsæP@cT«%YµJžåááaaJï¯ôt ¦¿ø"}Ãܹ£·xol*§<ˆ'â¨)£G †[º†¾3Ó‚áÎ꧇„aˆmÓ¦7lñÔ©ÔÔäd¶0[X=VUUV–•áYèà‰Árêx!®¯¨(++.fZ0!hììh¹ÈÐý9?¿={䙊bý²$³gcüÌP’uëä­ð\¤ƒY×Ö^¼xþ¼À¯äYŽèR0ÓUÍÓOžLIIJÂwQŸÕÇgòVÎË—ûú:;•rPM_YTTP›‹”ööÖÖÆÆÑ‹ˆ¥‹iÁƒ4ZCçæ}M#ׯ_½ÚßÏSÙÂ#µ;η4"’33SSù”ÃÎÎööæf¼[oog'Ó‚q¦X×þ œ>]^^\Œþ%Fs±®)ýŘ4Öõ"Œ”òò²²¢"4Þ_×HJJrrb¢üéX=/VB¼UNNVVz:zêîînn..tß§žÂÓåÍ MhTlmml¬¬Žá JüvéÒ%Kôô@#0ÎWXXP“£dP¼AA~~vöä­œ¯JòÊ+âL`5eéßÑæ[œ;G£ø‹%Y¸P¼¦ &%%&ÆÅÉ' ‰éêK×piRéšž–š¼CMyZ’3ŒŒ¨ï B‰œêêêèhi‘Sp¶0[X=ººº¸89¡£J„DzsÈäSÔѱä•ãF 0FYñÒKññÇÇÄȯD?[OoñâE‹ÀûÓˆ‹‹³³£#Â>˜f"‰±ñ—Gˆ}|0kW>å O—÷Gåé¼›|0g< ìSQ¤0¬ ïeb%**®G…ìCW{??_ßÝ»ñ½¨º“±rbö&]Þ_€@’fÍzî¹™3åáA¹Å|}}|¼½,•¯QJWSº†K ”J×ôl´Ôç][[kkCÃI PG_3gR Ã4O¶0[øþbÛ¶™›oÙò]<ñÄKqô¨üJø(qÝÓ‚i}&ÂôÙMa,+'â.X‰‰™SÛ¶Xø´k———voÍËf Od cˆËÈÇfFÓ¦¼mËö:Ü»70ÐÏojÛv¹$úúÍ͵µÜh±…ÙÂßÂØ bôö7dZ0‰k&û¹ìþÆGok#Î5¶0[˜OPdZÀÈ´€‘s-ÌfZÀ´€‘+'#ç[˜-Ì´€i#WNFÎ5¶0[˜iÁD¤ø Æ©ŠòÊÉÖà\cd ³…ÇæÛ'%-ø Ë(Ȥ¤ŒŒŒŒŒŒŒ ™02222222-`dddddddZÀÈÈÈÈÈÈÈ´€‘‘‘‘‘‘qBÒ^BÃÈÈÈÈÈ8²øà»5Œ3-ø7 ˈ "0222222òÜFFFFFFF¦ŒŒŒŒŒŒŒL ™02222222-`dddddddZÀÈÈÈÈÈÈÈ´`râÛo¿õÖõëü파ŒŒŒL îqÿÄÄ„„ØØ¡¯II9q"!Až"—¯jä$yöÙýûƒ‚ÆÒˆõõµµ.Ì›7wî¬þ\Á™ ›¨%Z€P<šüe’,]jffjjb"o–Ð?#ÉÓOÛØX[[Z‚tt´µ55!ÝËËÓsçÎwÞ¹{÷Ö­’ÌŸo ÉÊ•è1ÏЈ¼nkki©¯Ç›\¹rùrw÷ƒÓЄèŠWC z{¿'É#ÄÅÅÄDFâšêêsç*+1뢡¡¾¾¦f¸¹“šzòdRž%y$$ÄÇÇÆâþHèïïêÂõ--MMuu\Á™ ›(»ËÇæEZ€^5ì‡5ò²$³g£9”?½Xüª»»³³¥E® ð÷÷õ•÷zA20vNaÞ:99:ÚÛÓù°¯½võê•+}}gÎTU•—S#8!ÇìÁï ½Å;Ó¦ÓŽìÞíííååà`ook;Ú9¥tωV*&ò ‚šÓ;™<ˆwYÛ2-Ë|Dœ'ÍâPx¹ÖÄdóf#£’"~ÏÛ{×.¦ãL "#ÃÙ=û¥—^| ÎÞÞÎÎÆFÎÄ›š.]Ò—dÉ‚p²››««³3F†Â }D’‡îééêjmÅoQ ^äùçïÞ½sçÆ 5o…»Ñ¡ÅÏ>‹{Š <ü¬$Ï<ƒÂ÷}I\žÒ†å©çq%¾g3*5Šè‘Ì•äÍ7q.âèÑ‚wß½wïöíh¤´´¸8?ÿþrJMc¿H’ ‚û8::8ØÙ)¥«/òg%''%ÅÇãú¯jÄÀ`Õª+†Û“žì´×à°+X,??//+K=-«¬¬¨()™3‡z\(áOIòä“b9ŸÎ´@7iêš"hNGÂ?ôÐ÷$yäÔ8ùS¦^^Œ^>ÂVø:1úú¤$?ü!RJJŠŠòò0Ä€|aZ0n´`ÆŒI’——››™™››‘ñ_[GCþŒ$O?mccmmi‰ ££­­© é^^žž;w¢qZ Éüù’¬\ ¶8C#ê{Ÿx+„˜¶owwwuECuåÊÀ@O®„{íëëééè@1 ð÷÷õ}ôQªÔrƊ‡·êííînoÇw54Ô×kõ¢S ðó[(É‚C‡+œ´µµ´Ô×ãW®\¾ÜÝ=Üœn @ý•êË€üpÐéé©©ee¥¥……H?{öÌ™ŠŠéF @‹>E˜Týz{ÑDÅÅÅÄDFâšêêsç*+A¶Ä2<=io Ò‚‹kjΞE æôȇóp7¤LÕ¼½|Äp$¾Nì $$ÄÇÇÆÂnHèïïêÂõ--MMuuL ÆÈ‹8ýcLƒÃ•ÝÝ--ò+QñäŒ}J4áDæÍ36¦PÑp]- RÐ#=++33-MüÕ­[7n Ê "Ò3332RS‘ÒÚÚÜ\_¯æéèyÀ¡¨ùÕƒÓyÃ)V!595z´`¸eWÆÆÆÄh£; UH‡ûžn´@NÝÔÛ#ëÚQXŠ!¡œ[B\mºM9YWú­’7iAgg{{s3'gIjk/^<^ì­NÕ¼½|LOOKKIQO äóuĈ)Ó‚qž[`h¸~ýZIÖ¬Y½.O)k£££¢ÂÃåY‹êB€_ w9øVòâ"wÁñÍ™C!=ŒT­–dÕ*y¡Á\e¥÷Wz:…é_|‘¾aî\5ÓšœÈnâP‹šœ=Z0Ü20ô§'-P?‡Cž„ø¦M7nØ â©S©©ÉÉ-Pã ”æääèë/]ªðÂô·òò²²¢"\3Uóbôò±ªª²²¬ _‡®8è#ïN ‰ë+*ÊÊŠ‹™L Z€;;Z42tOÑßßÏoÏyÖ¢b¼,ÉìÙ3”dݺ¡x.ÒÁÍÁèÅ€Xí]@ 滪yúÉ“))IIø.ê ûøŒ6- €eg§’Õä”üÊ¢¢‚‚Ü\¤´··¶66Ž^´@,L Ô7ÿCçæå|M#ׯ_½ÚßÏSETï ÔL9¼vmp°¯ÏÒÒÂÂÜãÜò9RS//F/±ÛÊ·4"&33SSù”CDn`þþÞÞÎN¦‚`tí9}º¼¼¸=WŒcu)R0®ŒÑn¬ÒFà)`Ù¨®_×HJJrrb¢üéX—/V{¼UNNVVz:zêîînn..tß§žÂÓå ÂMh®lmml¬¬Žá Mü–úzzp)D/AÉ&  xÿ‚‚üüììÑ^‰ðª$¯¼"ÎÚU“SHÿŽF0+âÜ9Å_,ÉÂ…â0m0))11.N2ÓÕ—áÒ¥20hšœBé}Z’3ŒŒ¨G úˆ|éêêèhi‘7„ÍžcC Ô{¥A³;wnß¾v >9-˜ªy1Úùèêêââä„."èfc`j'fɉº”¼aœiæÓ"Û(C^z)>þøñ˜ù•ègëé-^¼hØßcqqqvvtDð“ÎL$16þòسæ`Ë'Óáéòž®8¦ˆ¢ƒw“F ”g¿cŠ" ‰òþ+V"Àíâz4~˜?´÷óóõݽß‹Ê?z´³05òþr o *3kÖsÏÍœ)åÉ¿Ë××ÇÇÛAQù*¥t5e`¸´@© LZ >§ÚÚZ[ÖHb`€r‹Ü™9“J=&uNL{Ž -Pï DZ€RMkê_}¶EÙFŠ¼Ñšªy16{énÛfn¾eËw5‚‘‘Gʯ„ßWœ1-à3&ån #E ÐSÁ²IL˜šÚ»D`‘Ò®]^^ÚU ¼ùñT²çtÞdz²äÅDÈG 1`ùƒ¯ùbZÀ´` •„ÅQ{÷úùMm×¹\}ýææÆÆÚZ¦SÏžÓ™L–¼˜ùˆ]=†ÞßiÁ´¦X;0q6ßåGÕ¬ aZ0yí9ëÂdÉ >A‘i#Ó>*‰OPdZÀyÁ´€i#Óv\k˜p^0-`ZÀM Óv\k˜p^0-`Z@#2Ž ª¡l¥Ñ°íȺ9¶'ÛyúäÅdÌG¦4ŸŸeì…sdìm;²«`Øžlçé““7™Ü'cKAn²Øòly¶üÔ¶<Ï-`ƈ[ž-Ï–gdËó\¦\\¸¢²åÙòl¶<Ó¦Œ\QÙòly¶<[žiÓF®¨ly¶<[ž-Ï´€i#WT¶<[ž-Ï–gZÀ´€‘+*[ž‘-Ï–gZ0UiNÂú Ëé†.œ?_Uuóæõë¡¢¾ýö[o]¿ÎùÅ.’-Ï8U-/÷rL Æ™LÆ#Œ'æ±Î£QQëëkk/\°¶¶²²°àüš.òÒ¥ššsçÔo·âééá±c[ž-?iÁíÛ7oš›oÝjföm<¡‘¨¨ÈÈcÇp­$ÖÖuu—.UW3-`ZÀ´@âÜñç%™5«¾¾®®¦fôò+5õäɤ$ñk¥ôéì"ß}÷Þ½Û·q`®ñôãÇã⢣E-7NlùéL œœííßxãõ×_{íêÕ+WúúΜ©ª*/ÿ¦FJKKJ .^„ǃ÷cZÀ´€iÁp÷noo//{{[ÛÑÎ/¥{N–²1\$žž˜˜Ëq¶<Óyœà!¤¥¥¦ž8!ך˜lÞld´QCC¤Àãy{ïÚåáÁ´`œiAddxø‘#³g¿ôÒ‹/‚ÁÙÛÛÙÙØÈǰ›š.]Ò—dÉ‚—ä±ÇÜÜ\]12vøphè#’<üpOOWWk+~‹ñ‚$Ï?÷î;7n¨y+Üí$yöYÜ3&&::"B~åÁƒ¡¡ÁÁÏJòÌ3(|ß—äñÇåá)m@žúÜË$YºWâKW¬X¾|Ù2¥æ}޹’¼ùfhèû÷vEE¯è)--.ÎÏ¿¿üRÓØ/’dÁ¤à>ŽŽvvJéêK‚üYÉÉIIññ¸þ«10XµjÅŠ‘êÏM–Æ ×ìÛ‹åççåee©§e••%%sæP¿ åü)Iž|R,íL Øòa7¼§w„G}R’þ)%%EEyyb€'dZ0n´`ÆŒI’——››™™››‘ñ_CGCþŒ$O?mccmmi ×ßÑÑÖÖÔ„t//OÏ;Ñ,-dþ|IV®[œ¡õýN¼BLÛ·»»»º¢‰ºre` §W¢z÷õõôtt øûûú>úè÷$‘3V>¼Uooww{;¾«¡¡¾^¢B``@€ŸßBI,z¢ßHUÔ¶¶––úzÜçʕ˗»»‡›_è¿R}Iߤ-##==5µ¬¬´´°égÏž9SQ1Ý'cQ,UcÿÁÁÞ^*Ó<‰kª«Ï«¬ÙK2Ó¶üø""ñžb7 !!>>66DÊÀ@W®oiijª«cZ0n´@^Üèc’®ìîîìli‘_‰fXÎøÐ›DNaÞ>cSQ/_îëëìT²¶šü’_YTTP›‹”ööÖÖÆÆÑ‹ˆ%iúFhèœÂ윯iäúõ«Wûûyâ[~âÓì³ò-ˆäÉÌÌÔÔÄD>å°³³½½¹ßÕßßÛÛÙÉ´`BЬ•ÿ†FNŸ.//.FŸ#ÄX]ŠŒ(cœ«„ÆGJyyYYQï¯k$%%991Qþt¬È«4Þ*''++==uww77ºïSOáéò& á&4T¶¶66VVHÇpŠ&~»té’%zz 5,,,(ÈÉQ² (Þ¿  ??;{l*ê«’¼òŠ8wWM~!ý;Á܈sçh±$ ŠwÀ´Á¤¤Äĸ8ù41]}I.-P* Ó¡qR“S(ÃOK2c†‘õQA‘/]]--rrü öd˳åG]]]\œœÐEµÂÌ " =„ÙcòÉéèRòJ„q¦˜[‹l£ y饸øãÇcbäW¢Ÿ­§·xñ¢E`iÄÅÅÙÙÑÁL73‘ÄØøË£Î>>˜,ŸF‡§Ëû¸òtŠÞM> 6ž.)Š(XV÷\±Õ×£Ùìø¡ˆŸŸ¯ïîÝø^8‚Ñ®¨˜=€ ’÷—_xgšY³ž{næLy@Oþu¾¾>>ÞÞ“Ê×z(¥«) Ã¥J%a:4Nêsª­­µµ¡a$(½È™3©ìcRçƒÛ“-Ï–˜Á¶mææ[¶|W#O<ñß’DFFD=*¿O\qÆ´€ÏD˜”»)ŒlEEŒ‹'1‰rj¯ÃÆR¥]»¼¼´«x Þñ²'[ž-?öˆ!, ŸÈ›»3-`Z0Î˨öî ôó›ÚÎt¹$úúÍ͵µì"Çמly¶üØ#v•˜Èû2-gÄÚ‰¿í.»È‘ÂÙÚˆ-?²öd˳å™0rEeË3²åÙòŒL ¹¢²åÙòlyF¦Œ\QÙòŒly¶<ãt¤ø ƱAyEek°åÙòŒlù©jùII ¾ÂÂÂÂÂÂÂ2 2)i######ãDC¦ŒŒŒŒŒŒŒL ™02222222-`ddddddœ´€—‘022222Ž,>ø^ãL þÍÂÂÂÂÂÂ2¢ÂƒŒŒŒŒŒŒŒ<·€‘‘‘‘‘‘‘i#######ÓFFFFFFF¦ŒŒŒŒŒŒŒL ‡>‰t²ËƒîÂÈÈÈ´€‘‘ñ­É~žýHËÈÈÈ´€‘‘‘i###ÓFFF¦ŒŒŒL ™0222-`dddZÀÈÈÈ´€‘‘‘i###ÓFFF¦ŒŒŒL G…äæfggd,X0þ¼yßÐÈCY$É‚……99÷÷ÅÅ……yy÷×´3-`ddZÀÈÈ8¦´ ))11.î«Ù·/(( `` ¿¿« ¸wo` Ÿ´))Éɉ‰Ã}‡ÁÁÞÞüü¼¼¬,yzjêÉ“II==ÝÝmmL ™022Ž3-¸}ûæÍÁÁG5âêêââä¤t¥³$ß—äñÇïܹ}ûÚµ7xĘ022-`ddgZ““••žŽZ|ñbMÍÙ³JW^¸P]}æ ®,(ÈÏÏκi—§‹ƒ˜@Ê75âèèà`gÇ´€‘‘i##ã¸Ñ‚Ç:pµxèÀ[oݺuõ*® ;|84ôAhG ™022NZ€_1-`ddZÀ´€‘qJÑ‚¼¼œœÌL5ƒÐâJ =0-`ddZÀ´€‘qJÑD—ä±Ç†žrí£~OLT”7íEE¹¹HioommldZÀÈÈ´€i#ã¤\ xâDbâñãX‚¼ÿÞ½W®\¾ÜÝ}ùr__g§|bBB||l¬ü·ßÑH``@€Ÿß¹sgÎTT,–dáB5´àÛÁòÈwß½wïöm¦ŒŒL 'ÄvFéé©©¯¿þÚk¯¾  ¯ã â¯üü|}wïþºFfÍzî¹™3«ª*+ËÊÔÐ__oolšÁ´€‘‘i##ãÝüøÞ½·ß¾yóСƒCB~ 4üvv¶¶ÖÖW® ôôðæÇŒŒL ˜02N»3îÞ½sçÆ“'SR’’BBöï â3™0-`d䣒ø¨$FF¦L ™0-`dddZÀÈÈ´€i###ÓFF¦L ™02N9Z€Æuò"ÓFF¦ŒŒŒ#€_™B¹ÉÈÈ´€‘‘‘‘‘‘‘i#######ÓFFFFFFF¦ŒŒŒŒŒŒŒL ™02222222-`dddddddZÀÈÈÈÈÈÈÈ´€‘‘‘‘‘‘qºÐ‚f0-`dddddœn´à?„€ö[ÿéO×jä×,,,,,,,ÓLÀôô6m ø-E(Õˆ……………e:Ú}p€ÿÐyÌ€É Ët#Š´@NVi¤]#l>–É.hÓѾËàÿ%KŒŒtÒ99`aaaaaa™J"Ò9-øJåS»Ó,IEND®B`‚pygtk2tutorial/figures/entrycompletion.png0100644000117200001670000001753410104074255020301 0ustar finlayfcf‰PNG  IHDR´ž˜·5bKGDÿÿÿ ½§“ pHYs  ÒÝ~ütIMEÔ#±…•¹éIDATxœí]qhɹÿì·³àƒÕà ð†"ÓÀI4‰úlpádRˆM g‘ƒ‹|;»ÆîÁKLþN W;zV I”BŒx! 4Ø Yÿá‡upÅ:H‰wt1HPƒjÐ@——÷ǬF³3+ÙŠK‘÷‡1³«ùff¿ùö›o¾ùf¶CéÑÌW:xh_(=I °dÿg,„%rÏB a’ƒˆÅ›7oª,u'9{ièüÄŒ·ÎÒ’ÈÜK¾XY|kòÔdâó±=&ïèè¥G#ýÏJ ,a€¤ˆd±È<\@HB²„@$ÉHB€’@– IB! ‘rsßgßú!ßw¤î$e B`3ª1Öí1y¹TÙçSz4Vm Ër³Y€,°%Cº¤?] ü¾€ð)¾}èCI2z cŒKØ,›¥’Y*m EÃX7\ù…­2m=àͲÒÅ\š%EQèei£0—EC=ä§—…õA•¹üéE¨W¥—ÆËµè±`õòùên^«—…W/Ô@µ`U“²j8¤¾ëö˜¼°Q(˜…µì3ó•N†°uF¥w$@êÄ?ÞÈ2 @¥h  ×4’ÁØ*+ȇ-{°À¸¬tûÌÍÊ¥Yò÷¨¦i’ËÒF¡ïh°P¨\p(b¼.Ú]²nhýZÞ¨\þô"öñ`îG›/ÆËµ¡3ëÏó´;ã#‰Ý¼Ìç+õ®iýšQ(ÒV#  f]SÈmÚŠæ :Ã~@ KÔÔxóï7™‡ €¿áö9e À„d‡d(>Œ+—›n’±á”Œ+‘ªd¼z¡1’Qx¹6tf8—¯Ê®KÆó<,Þºbn˜Ó^Ê}Eñaª9,In´oª¬s’ýnŠ2R€WwoÏÕ'Ç~7ÉofiãÇä»·çØÚåƒê³¿.žúå ;¸A¥ÓaŒH1öÛ‰±ßNˆ7za|ôÂ8Ó>§î°PUåºH†?P• ³*Á^5xÈÏJFi݈Fœ’10˜§’ñÓZìÝK† ôŠÕY2 Jw3cŠÈ:–]bZdƒ¼Q2¶CN$&3ÁJŒ^w%[&hÚî¬N@°0 ‡dêñKcìã^'”£çGí 8Í!m%•Á¥d–ÔžªÎ˜ùíÈÔoâ´ïKE#aQ2N3’ñríI†ñ|•}¸RÑP{‚ô‰l8YDzKL;úFªA^K2 1òñ‹cT2j’“»N³”ü—¨Š‰ºµoüâØÝ[)V2*Ï)WÖØ*‡Žõ%ÎhÁƒ~s§.­ýh˜›xñÖÓÄÉùÌØg¡ÔÃ¥¥•ÜØH ”.ôìþôèÕäÌ¥¸¢(©'úÔçÃÆz!òQ0õXÏ<Í@⌠ª©Çªê÷Ÿù»01žü:C'#ƒý}~ÿ•â†éïV2ËYÒÙW¾2Mœz¢'NG•®+³–b‘PâŒ,­ÄR— 2|¬½ÒNõâÔíG¹•¥ø¯ô‰ ¯^D#U³,[±ó¬Û¶dÖÕá<½r\Ô%O~3;ù› Wò»÷îŠävgI¼ÏK ±ÃŠ,U#õMÒÖòè—ŒX€é{i»ÑæÀVYíL1‚1½:›ø•6ñùPüÒuò«Ò…FÎhúJnèãHâ´–z˜Ñ³ùØ/B¦‰—§ŒõH ÐB}zvmí‡\䣠zÀ‡7ËŠâ‹EBéoõ@7JœÕŒõâÔ’fÕ€ñÊ:­%Îj¹—ÆÄ×׿Ž%Îjæ†Ùj@éB±Hpí§‚öseìl¬P,f–õ‘Ó±P0€çK¨ËŠ¢ø”BöïùÈGÁø@X=à£)X õkùŠ&ÃVIÌ ¹KÃ’!¹ËsJº’³Úº94÷§äøEÒwu%ÃÙqœÏYÐYýÑ$@"cØÜ­$€Ì›€éûi$™p¯J•?„äPHE––õ¯òk? Oõc(¶ð襩é?¥ÌMŒºXåük2@`ãU!üQ””7úÕôÌŸRù–0ÆÚ‰„PêA&þq &oÌè¹\~½YyQîÀÔ×IcÝHýE€ø™áÅìªý~[8ñÕõɳ¤¢ø¥©Ôƒ%ðu¡’i/WIž±«³SL€v<¤WhÉå Eò€—$Ó‡YÇ¥AB2 YddžuùuÈakr‰ÚN•S«vfa/±DÒ¾‹‘$sR÷öœ0”@ú~º"wˆ•>DÛÚ`A@ ÀÈ™ØÈ™Éàïö™Œqi³¬ ÛÖ‰Ô#‚\bŒ’h¿Vø§¹úƒ¡jǃ‰³ñÌrã²¢ 0Ö ƒ}!(½\õûýP(Gúò?¬Løý 6MÔ •b\V„í´UtW|Vyè콋%@]ã’l‡ uÛ˜fÁïW1ÆŒZv°N_Ñ3—€ƒ8—ˆ h뜜‡zÖ«çùŽÿrR¬=~~´VÇq:ƒ.UKIJ^R­ìî½9öñÄ ­†È,²Ó¥Í,<Ññ8ùKÎ?TU3¦…¥%-sú %$Ðs9;7ìïF©Ç‹¾î@‘Lpލ¨ …¢1|:^4Mø¥¢‘ø$Å¢ V¹°ž¯ÖÂŽ´•4BrÞ¨ñ³ (n˜`A•–´Ù,©ULZÎh–uµ$Òó)Ö9ÉYÛ¥ÆHTÜU2ŸÆÝ;€úB©Ú`l …Å¡.}ïnüÂ(Ô”ŒÊK/±Œ=—ˆŽ|¬•-lny¿WsU^³ÞF¼‰1ÆJ—ý(Œ?Pè|‡”™{¾fšCŠ¢dÿ–/¼2|ݾµ—Fì¡ÙË“ž®ë…įKÙ¼¾’9™¸Ï¥hH€ô“%@;«Ô#›EêÏ•iƒqEu! öƒ*,.¯8hñf)ØÛWúW©ª#+©ƒu5ú†Š"Ç:wòÖëvÉ }ï.Ñuj·9 ñ {¶B{p æ4?Ý+V8, €¦îd†"ÁøÇBˆLè<@.ÿ»š]=äO?ÍÅBsW'Ư%‚ð¦TÃúßóC¿¥ÿ²„ºäP(šþëšñºë}€â†™Y^}´R*m†4íDÈ4qòA&ýx1x4lJ•âʑ㴳ÁÜ(pG](}ó X —KÍgÔž>–6¨öþU®Œô¸ª¬ùdháA¦R,í€ø¹„+ë8ÎW‡ò­K$§–‘ 9}?ø4é…GîG ±ªÞ’`f+È¢oÃötbÀ'³ €aaiíú­TÉ,€dõ`pô÷©µ$Ù'ËSßdV³$<@ÎýÝXzª¯^€“_£µ²  ` A X4Wÿ¶þ(Š1ød9ÿÊ\Zž)™&Þ,Br G-lÆ®& Eã2 9x´Ïw ã¿_X]YDH671Iƒ¡cáJZËÓ4µ{Ž8¨©,-¶ìgÄVɾê³:Y§ hÚ@¬Ö9ÉïÞ›kŒóBlj“ôBºNDZ-‡A Hâón\2 r£ÚJrO’ƒ¡(ËG :0H/µz‡TµW%—Ñ“X€` B?SƒGüÉù ê’ÑJ¯Xåà±(uÒ.£.Ÿiá@¯èUÉ%û«öñ0½Œök$3 ˆ ’Ì•ËÑã‘:´dqØ!ëšKn Õ,; 5 ÜxtäVºªËªîpÊ ½´é-lëváÒçS2˹ôã%õhЮÅ )ö(‹-Œºvz™Yί~·„”î@½ÌNÓjWX×drFs°®0 ¨/Ý@¤ÆK¯ô·ÜåµF€j]æ_ŒŸ õhP †dÉ%³¼—ùbÁ%‰°RŸÖÆY×\r§æ`‰.Á¥æS.½=ÈŒéóƒ[æl?¨?×vȺ&’ÔÒ$œDú?ÙóL}Y×Nj;¬ÒCkB_ÖŸ‘¾Î?Ï s!¥4ÝY«û ¬ï‹¦;íõzûL°`UytÒÈŽ}ŽÃ½}ÙïsÍnE3›Áš¢DPX?ÇÁøÑ8s1]ǾHL\ÚÉæ;kŠÒÙ `ü®¡öªÿøñIîí›»9;«Oâá]ÃCj§;÷X2ê#þYâúµizí×r¹îí[¸ŸŽžÔÂÇ£KOì5Ï\.7xf8‰FûµÌãŒXZê~:zRë;G¢™‡.8^ƒ§ûŽ…§˜6¸Â0Œøg‰¾cá¾cáøg‰šBáp$zýÆ,YG<ÜÛ—º f³ŽÐÃ|>?üI|ðôp´¿i3DÎ%h-ƒtxhøQ¥ï³ÙUÉ¡Pˆ\¦æSÉ›³ñ³Ã“—§ÌMlnâøùDâÓÄZv5u;9ùÕ”aðÛgúzեǙÏׯ>KLߨ¢¿`æsS—¯¤nÍ-Ì/,}+,»W€1ŽšeyuEñ|mV”$ â窪¾ø~méɣŧ‹³$F°ð8“¾Ÿ …ÂŽÒÎ'†[|òhu¥9»P™ÐbÇÂ}'–ðÛuÐ0ÆÙ•UH?ÈŒœ¢?M\œ …B‰ó ŒñÚ÷kú²Ž1Vrßçð&öw+ÙïV¹Ò"‘¨¢(ãÀ!•Y ®‰ÉK“‘H4Ò }Ò—ùÒ(V³«Åbqú¿®ןÿP€ËÍåŠëÅñ/ÇAw þIüÑãÅÊSLƒAÄ,çê+«æ†9r6¾eóÞØÑÃá!å~k.BÚ€öèI&x¬O_Ö§¯VwpøüPºÀ›féŸ%$¡ÔŸmç`8& ",fÒ iUUñ6$í|æ¦Y+‰3e‚¢T,‰|&¥‹v䩯ÛÇe.¼.(ŠMíjd°6)]xk! Ž_œT£ýQ¥›_É+n à „°…gnΰo! ãGcêòÔªþÌ(ý>§/7 ± ¥RÙÉÁßíÃ0TUuÍ@䘄¿@¡P"ñ‹î™?”ÍM“¬AÒí<{ n£=U-ç!Õú5„Ðìϲc .@úÞ‚ßï…BÑ“Q¿ß?yyŠ¼âæ†Y,Øì„Ñ…¢¹a.~»Åטº6]ÇžÃ0r?ä†OÖÊíûýþ©kÓÅbcœÜ‘PÈÐ?wkŠÅBúazøLÍU§h,È<ÉàM<ùUÓfò¢“ÃvŸ·”M Ä>Ž)ŠÂ-îÄÏö ëÙÕÔí$H€$”yÆG#Zß±pììЋ|žÍ::‰ÇÎE#ÑàÏ‚C#qX˜_Xý~͵汋cƒg†Ç/ŽÏ}=C a×ÌHBéû)°pôä©ðñhòÖ_é{)ãÇ|_(;=<808q±f¯ûýéÓSצ£ÚЙáíri·ÁÚTPZqámôB"x´uˆîíK/¤#ÇC;/ýõLâBâÑÿ¤õe=ÿÜáÝo5ˆ;"misý E?¸ÆRÔ+áË1UUáÆxúê´¿;Ùåx.L„ÞßN¼È–퟼8®õGÉ2¹Yr%o°Žs Ò½!åÐPôƒk,Ed¥ZrÛ­É…‰È]öéíÄ‹lY{ààîxu÷â’½ó†&¡¡è×XІJp ¡*T=¨/²‹µ7Âñç-ÏÑ`ôƒK,EC%ðp†‰T+ª/‚*m8GvT{k€MªñÍ_uk$úÁ=–¢‘8pa"lE®ñ"c_$&¿šr»ï ö·²¥ã9ö »&ò¡~<kR3=´Ä]ÔPÙHÝBÑç{Œ] y¯áº£©Þl¥¡pí÷JZ{îOºÁnG‚ÕB‹;}=¼Þ¼y“º“ïsg>Ùg‚ÑcŸj•õîêaA'"Ä© ²Zl;¤‡fÁýd€·4HÉç'=´D)tzjÃ1`t—}Óä¡uÀÅ€ÙñÈBžòØç`WUX)‘èTeôjÒxU=ÿd¤ßóµ'VŒìk»¯õùY¾§AÿW§²AU¥îÂ¥}àÛÏ ­›Ðçg¹c9èGôyÞ0ÈŸX\þe~06(˲,˃ngzxÁ) :aÙ–9Š1Ö´èñháuAéVØÑÇCÛ€õ€lK8ôe½¸^œY™!átjgŽ´Xß9{g[Ñç…õ¨ïOD¤‡†À‰½³­èsr’š7š´=¸ôNúÍÈ:ÐNjþƒþÑ/G‹ëE¼‰³ÿ›}çÍô°‡ħ o[¯­ „ô§:XP¾¾íøêá=‚¸¿Ú·<|¦?{gÍóÐd¼gŸ{hØí²ÕUYðŒ=ûš ²oå-ã9¼ ±v¾ÔDÜçÍm•‡VçÝúìó:Q‡Úâñ´ÕèóZ6‡7pìp:ƒ>w±9ÔuaÅXX™Ü~^üG³}ݘó:vRÞ¹x"tŸdq]Ÿ¹·È’m7XÞ0î^k«Âß#Ìþ¹ÞG DÐ.6^úü¬ÿ VËî”Ä9¶”È¡mÕ9®[e<ìøoÒl…È!H|>6zÕî/.îœU!µA”mòü vnœ‹ò‰Ï=•ÐV ¯qUmÛݪ)¹å?¨‘ B""9äYí }~VéÑÈr¼xZˆSY,1AˆˆÀH¿ð¥m¥Gç®àœÖ:>ȪÏ9¶ ŠÝ·bÿÀÛ#ÚT&IJŽo¬X°”Ú´Ç]t|ÆK\”óÐÆÍOwÙ³‡^³9<ÍÑÞàt¸* l°Q/žÚØ'C{Ä`AG°·­Å‘6†¨\wÙó²#Ê×­‘Éo’‡{Ëʾ>zdxGGGò›äaõ°Ïç[x°°«Oça§—éÁ9QídÆäz%_"ÆÚ€†*¼.”Ëå¹Ê÷˜ƒ? ®e×Êÿ*O}55y©ºœ;ûÇÙôƒôØc‰ó‰f}«ÝC-p³TnÆZ=ÞKx;£‰½5ò&¿5R;©)Ý ÞÄjÊ ÁôµéÈ‰ÈøÅqŒñjÖý«šѧÅ590Îu¦ëŠZ[#SwRÉÛÉ`¯ãk&@>!@¾vàiŽ–‚«O‹í}Û}NOéç¾èÖHõHU>ò/ó£FÿaüCíQõe]ü$Vq£ª·Œ×bp ¤ÿm'{àdýaÅuk$ù`b±X47ÌÌà °k-€™›3þƒþȉÈ;x@oΧÅvz5úœf×m]G×­‘‘_DFÎDû£áãam@ ý<í’ü§~yJþP¶Õ‰çXk¸ÎL¹åÏQ=ÄK¼ªáº52}?¾oJsè̽ÿL¶¾ÎñÞ®ÁŠÝíÐD2˜iKõ¿‡v7‰uõ‰±Ã ¦iØ%÷hú~:|,¼u>Í€ë’=+4ŽaÅ5–p'97² ¥xx7àbËÅñÅ1¬x oû [Ú¤l<ïçð°ÀiÇÂÉá)Œ}WáÐd’"îYð¥í!râÒé:I©ãäðÐNà–Ò¸!¦z©k&í ¶ÓEß9=[V<ÍÑÞ`;Õ¼AZ™ÄVE <ãt@ ðá‚7ª~꣔{ Þ‘·M8D°‹¯ nMà(÷fd)ÿ»¼ÕxpBtoˆ¡ÄÜ-çdw‹ó=¼×`'¢9ÁÆs p™ìº˜ï}nüdÐ ßßä¥IãÓÑÑ‘úsêpïaY–SwRúSÝçóù|¾Ìã -Íxeôë“eyü¢÷콃8Cw7Q'XÕwþ6Ñçœ8<,—ÊùçùÌ“ÌÔÕ)’?y+¹ødqêòÔøÅñÔ|*ŸÏÇNÇf¾ž¡^¿v}îæÜâ_“ß$I™‡=€è÷(8œ`ýaO[\åÃ5ú<û]ÖxeL] ü~â|"5oo]™¾:<Œœˆ`ŒS·R~¿?‰ráéÚ€¦ h‘‘¥o;ÞÊîÀu_‚=[¡wÙi É ä}n¼6 hNÅbÑ.¢«Z›¦ð´©@É,5ú`v×Ù,ý©³²ŠØر†ƒë‡yHX9ˆb±Heû(ü³ð¥ò°ÔÙÑT­pëõ¬ûŒƒkôyäDD=¢Nߘ ŠëÅÔíTâ\¢¡Væ_æ³ßeãŸÆ|:oâü¤à&·ÕÙ ¯<¨:áKtý0Ͼ}–ÿ{^öÉÁPpèÌÐôµém6qø×Ãáãáá³ÃéûioïÂ^‚vìðŒqÃŒ>syÈ;j²Íº“L|>æSO‰?ñîs:‚°î /ög?@tnñîs¨n‡ä3y ³íÊøÀ/¸VŒ+ÒÀnjªz;<´+ØÓœ—äWîoNoé›õð^CX„§¶DU‘tÒ3[X;Ô³9ö ÈÄ„õ‰³RÒIÏlaE‰µB<´%Øq„5*˜ÿ¸z²·(ç +í ÑÉÁÚšÔæ¨nwcàÙ¤íºAÚé%ÇTª‡·Ð#žòh[°ê rÇþ‰ C§HÆém fë<æbË¡"1Õ}+Bpún¨ o¾ÓÚ`ÖÁFŸW vÅÚЗõŽ:v^އwÑÛÉÆ€xHqç5#9<´X œŽ.r³W¿ß„*wmbÏ ÖÆ`ìPzÊ(çGÇ¢{TÜýÆaûÑçµbÓgÿ0ë;àÓŸê»ùܶÆåe‚¦;E÷¨xé(´Áèóú¿¦î§ô§z4Ýíg÷°5X9àÒ$Q­Y½¥“WÍÑhôyý_§¯N‡> ¹{x§`¬Þà w:ÙsÙ±§Öœ¥Ñèóú¿ ó°÷;“,anÉÞ‘Ø­èó]‰M÷°»` R’àB5…Û!YS´–«ã-¢Ïw›îa×Á¤œÃƒÞ·75Ñ,§mD¼MôùbÓ=¼#p^ pv=‘‰ÝÉ:Èœ+p¸ž}®Q¹›ÚIíÍ›7µ~ú«‡½ÛÑà´O±„m÷¹àó"÷Ø;] 0æG í n©„ö{u*+žÓâ©}NÐ~¯NeAxXÙi^Ë=ì\WUªSY.«§<öĹ+0 KXç¨Ã±º“Üóf{ØS°Îê{#µ($Q2øù§‡öÝH-š¥T:”½+–Âæ®uéJ¥ŜõïÔoÏö©¶ù\ÛÉÀ©ßmV$åÊ“ä?ÿ½Ê‚Z.w΄álqôª5IæZV‡Ðµ=µŒenàó‹Ïåê<k̕еÁÜDÀÕŸÔ²üg75!WW±+ß]ýªµØçZ>®½vÌqVdJ-Àn1 âsq­™èú_ì'±vpvýf´ ÿ«Ã Ë÷ZJŒÃ–ŠÔõΖú©¯{kÕåZc­Úë·§~ÃêWŒ[zËA¡¥øïö¡\Ók)LQ/ÑD­÷ „×Úõͨ¥\_k®bâCËÜΠÀ&\S‡iØiÿ»6¬eùßÉÖÁµ•ÓäµøËÑŠýJÊqÕŠâ;ÄVÊU]¿§EFs,yA{ε{¶Ãî¾Ø‘"ß¹Z•ÿØa…“¯: \,Q¬LÌ\ ®Šº>DÝP! iéúå×ÒÕµÚV¿"ØSþ#nhClX ª¤âkÄ6Úµz6!Š3§Ù¢Ä2i9œ€×Rz¢öy* bԿϳ³vÿ¹ŽµTš¨ó›ÁÞÀNþãÿþó²ÕiqM'w¸K6,$ýŸduZ„œ‰*û+ÉOþ\ˤiú¿~3êTMßRM°T43÷$A[˵Š#wåžøìb i™Íã¿` « ²y•Ü$èg¼x»Läu-Iç´÷þ¹¾ßll™œÚ` aß'®µìûJ©¸7©Î+åz3. ®j1'WˆØîŽÈÉÝæ?gZ²m&䶪`TmF„Ðÿ IŠݽIEND®B`‚pygtk2tutorial/figures/scrolledwin.png0100644000117200001670000003022210050344475017364 0ustar finlayfcf‰PNG  IHDR8HK?uü pHYs  ÒÝ~ü0DIDATxÚí]ý“Åy¾“]`ŒcI¶ƒîdÇw'ʼnƒ C"HÂ.‚ â$˜I(C*v:ˆ1ØA'‰Š¤‚»Ûs|{»¤lø#l°*t? ‘þîÒ3ïLoOMÏLÏl÷ìûV×Tïlïìôt?ý¼ý1ý å´áÈz‡újÙ' mƒæòʇ0E†’c±;N%Ý º“\·-Þmá‡#fm86‡S÷¹!ó/*­!Êúßj º®ª><¼žÇÖÖÖhüÂ… oüdÂOÿó9¾þ“so¾~¾wòõø<“¯G9ùf/~!üáÏΑðÆÏW5áÍÿ:OŽ?û™ä«Ÿj&8žsŸðg„ðÆÜùÌ4$¼þÖ¹0ñÉT8yjõÔÛçÉQ p~îí0~âä¹S§âH/Aâ3o‰Oübõø/.# sÿ}Žý˜„8ÍÉ_ž—}+ÇÏ®ÎQ†gÏsgŽŸ>׋Ÿ ?ž8Np6ùÕ;aÊïž#áä{«'ç?!ǹùÕ0r>ü8ÿÉ;ï­ráô»O¿{):f…VáÅ8~v18³tI<ºõYU€”Lúà¥ÏÎüúâiuxç>£G~.†ON ‘ãùóçc¬’ÏçíÂ*9| ñc¯¾Bp5ô…EyøâD†¿ØJN.…Ç+[CW½7ô¥†¯ŒŽW-²'{áê…¡¯,^) W\½@BúäÒU›!|iãÂU$ÀÇÍóô< _&i¾±xõ7ZäHÃU_[HâKáÇ?o%Çðã•#$ÌG!Œl]„°y$ŽliÑ“áùo…aÓ7 ’æ7~{aÓØ"¾:7·¢Kp’&Û¼½µéúE6ßÙ®7š†-‹[nxoË-‹#7óaô–V¿e"[nZˆÏL.L’ãâè­aØrë pÂø® Ûn_ aüö“0vÇʶ;WÆwç {hXfâqض·‘±»Ú$Á޽í‰}+;÷u&öwv¤9É|l÷·Iä¦{Sç7b;ŸÇ =AÔÙÙYw‹^ˆ\âM T)ÆH¸r^~þ+-‚À+þŒlAÀáûQ„™ˆ:öcª¯/Ð# ÜÇÞù‘Å+F¯Ø²À!ÂFF6%GŠ@6~kñkÑÊáx+[VŸß´½E!—¡¼Ñë[ä¸õ ÌÈqt¢ÆoXHKÐÕáÅùx,ÞÒaIŽÀ;–9°]+á_vW€Ã4»cw¶9øm›îl›n‹ÀcP×Ãg?r°§âÎ]½pïû4¾ãÞ•0r_gÇÁöÎûÚ7Þß&iØtý áÇÕ çd¸ðÊìËôÈ1ø ÔÕÕUC^î1êÏW{Üø•Å!õI)ñª«¯ÜÔŠÙ¶9d¿/o&'—⊛cZ3êzƒ_‡ ü¾öM#ê‹©r,Gøê¶yÀÛÆí ·\·@ðv ÄpFÇxiøÅ#rÛrÓâÖ›Ã0¢a²[fój.n»m‰ßÔ!a׃’0rý  æØ«³™=J ±ä'P;fÒ­e•t#eŽèBÏùL<Ï{&„4&¨ûòדø5­«¶!ò!àJJ}Óc Fìn'ëjÆ' é± xÆYìû… d0ÔG#,&<9ŸÂØ-óràÝ’"À„è–TLÈàøÔüؼ Jp(B1¦Ä"Ýq!N s8ã 7Âù{;!fàŽ489˜qngÌ{Ëï†ÔG¡ÅÆ¥açý+üÚRø¥Ãû·=ÔÝõ`{×á^˜|x"£Ge³¯¾F>Íö ¸À[–@œÑÇM3êO¯¦P·y‘í2KñvÅ7”¸e‰…¹ FRÝ¿­ ê¾¹’ú„ëI„IüëßjE¸Dš.@9™€°E‚œ£`˜2 BŽýT=@ HŠÆ$,E'çGwJ ·U­)JhptWktr€Gn˜0¡ªtÇôYÔEñnŠïhpÏʵwÉéN‡d”÷ NáG"h…ñÝ+ÐáÈÅã«1C,*&ŒB0ä´fiWSÙŒ<Ì ŽåÔ¸Ò À„Ô÷À õQoz¨K¹—9p\Pé%8œdxc!Çboòè À/D`t„0„=…Ç»žèL3'E ÒI¥Ä29F•õQé)íqråOIú“§V“!ÐyÊ~!HÒ,%²ðSA1aœÏ$2qèõQF×û‡‡6äcÔtõÄ/V7¥GA™ñÏ~Û ¡n‰vÿ(ü€ô ³G(ŽsJY&äÚ‹ikët †ž$=ÀHáLLwø±ìG:ä'@€¤¡¡ã.$žDÖ{¬¸¶á°Ãòa8Òtž~R¿”;é)ðD(’{£#1aú¨H¾tq aR3á±MG_ÀxÊo}(Eƒ·ö(‰NÎ~‡—¥Ý¿ÉGuHz€S‚ÿ9ýx7ÄÛcíéÇ—SPäI¯-r ûqZ@àž§:"§Ÿl4†‘gÄÐÝóôÊøä  {žÎs¯¨)F½™1£~3ê/ϳC/”YŒüÌu}aGD“o—b(& \D®#õ †^à `òš]ñD|¹y ?˜“‹xúŸÜKš;\œDˆó  ½Ö—!ƒ4±S1@.<ÞÝáú~ðÕu{`b™/œ^?Ð]KA1†añ/Š_”DnþN—Å$'7 ¯ƒÃIˆ©»€·ÉC+ù†@õƒ¢Éˆ‹9èõ±£2SuSøÄò´Ú •Á/Ew’o{ðëÌÔ-KpøŒ<캻ÿé<Ó‰ãÿ†á± ññ)I•õxERµÆ¨05wf€G˜pt"ÂÞŽ“`!ùœ­knŽÒÜÜJùœQ 8¡ €Ç’ ‡@'5ž€E ƒ‘ŽB<ž‚ŸÙ B.™u`û~q²õ^'p-ÝåãâÐ ѲOÒå[g¼PˆÇg’ ÀŒü/¼{ßgñ ÌFSå}mîd/ò tö‹Ä,§è †ql@z*ÿ3¦ÄGºR¢›bÈpŠüOU÷ø¥Äåù­çˆJ»…mÿÉù¢1&ŸíìyzY†À4ðøí{.!gÃç:ðսχáÀÂõÓÌÁ$%PKΣž8{Ž›u`Ãò—­éóŒóù9»6-ìÖÂЀa8vÇ ‹Æ£ujìp `ÇcX†øŒÐ5vׯeëÂ<uJ9ŒØ@—ð¡BnÎ:œ Ê’!!ÀЉe°`#Gâš²ÀƒÐ0òàÊm‡:?HO!ÇÅãoÓìÇ{¦³€@B€Nɧ~ưÈÌHáGPtAïy†':–î øŸbàyïÅeîÌ–¾°B90„ß:êÈñ <ðÊoÙpèåÔDZ=G’õ€¯\U}~BÎgT%&×:Ý RÈžL;™úþgèpÓ HzúéøûÚùV¢%C ·­Í^ƒ½PbLM9tu^è£íÛþ¶CHOF€”{þg?–î4Ý¿~ÓOv ûŸloPÚ ÑîHéN9óƒl”"tïy1<²ð»÷ÅöÁÚ‡B.‹<ôãÃ㤠wP€ß¡c¨ȇW? á~8Ά'¿}w8-rø4×ëãJ××ÀΞõùOCF%@ aÙ{17ê .‡ì··ùê7@j¾{Bx )Ý ”|[Ý"ì˜!…é‡4ò€ö›|£-«ôãÐ Æ ñI¼Sš †^ö<ÙM9S“ÓO…GvV0îû=¡x׳9͇^ ò|[…´}̼P‚ÒÑý°+vÁ MØ/tD‰óÁï7Rº#€42 E¼e ‘Càk²gz_Íþ–|{ôÕùɇ3¯ÿ–†ûfz/“^0}eœ9‚KÀš&àÜÙ׎iØ™ /=pø¹ÍÛÙ4~”=Ò°ql†ý( üO¶ÙtíÌÆíG¤aóua~5rý £×?Ú‹oŸa¿ÚrÑ‘gF'ŽZ â¥Fn>b¶Ütøš(2zË =IãìIþã®Ã#“34l¹õû‘„ÑôGU¶]GÃÈÔ6\öÌØíaŸ:Ê¥4 »gÄ06ú¸mú¨4Y:<‘ëv»3¹ìÞ™m{Â# ÉÇ#ìIi ¤‰‰›:¾÷‘(¤ìÜ;Cð&†‰{Ž„‘{áÎïÜ”ùxXïñŠÞ¯|‡ºx¨!¶Á±ëØÛ•k¸¦ÿ©ççüök$2\æN6˜Ü¤ñeŠUƒauÍ3§dT Ô Û>‹‚e»x)_úK—t?¸t1÷ è/˜qó/Ú}ôþá®’ë_V?±ËA&>FéS*óèÊ”šõÇ.æ%ú‹Ïôõ3ýU  •‹P³úe}ÞØ¸ ö.]´õ蚥*®I 0©©§ÙåàÜjŒÀKñm§©yú—z—ýŒ&¾œ·ÊÒÇÎý-2}ÑÐæmai–khV2 ·ðs3¹Báö‹ªäí3FECC«Ðl¹¾hhhT44* І††@ECC "PÑШhhhýjëBÐìš­5CnZ±h÷™\ºx™½ÕÅsÝ*2jñ26\9„`´æªsŒzúôé3ž[±,4 ãgÏž=ÓË,Žê2K±pâøÉ¹¹9r¤aî­ìG.`gbÛPÉ¡5ÎŒ_+ñ/Gv³F C±@`¹žÇjbTðý¨ëM1}–}ÏÝõ[ïî6²4ŮЕëÓ!‘¤´ ‰Í!¼>F5üW÷GØ2ŠÙô¥k]O6Ù‹¨€Z2T~L2’Y*4½§ã.M¸yîÍ;O*-±4¥ŒZ~P­z Òd¤; 1©BUÕßaCC úN§˜M)ƪcTñ6\aÔ\™—Ûâ̇yÃa·kþWüŠžÉÛÌ™§§)me³Î™­&ÿKÒ×ÖéJÇœ\w}U#[üª|ÙsW0¼ ;*¦¿xæÃÍÕÄ@âK‘UÔ‰÷S²¾UîN,âœkæàh¨ú[e=X¨Üø°»@Í[¡,mÑiÞë”)ÚJéÅîÅ-Ö`“V8³Š%È|&V²©úö¼ŠQ¥“@Î~«/öúeVA‘ßÂIÝ •¢ê9˜-ùSUz6ãŠÖ`ªRËn6é­JÓÓ%r°ÿSæí‰ÃWÒ'FWáÒ4ôD šTBñOýõUý–-'®kZPMåfËUõ絛¤=â…["­fÞ¢Õ4ÒÒv¶Aô 4Õ†H&—ån²X Îl_¬4»l›ËA·ÒÒäþ]C°R Ò6ˆummͰ“åPÙf6û•§IõÓ³ åj°v‹V¼2wóâWb(Hü¡†CT¸•Ö3ë5¸X6Y0W65'¹¬©ð S v³Éæ…FØ9žŒjÒV T±l¤™Ï<)}p¹høU±ÌÖHÖdÉ!³YÉÌ&WœæŒ*^Á<›,¤¥ÉåWüw s6©É¾ôÄö«diÒ»Í,8½ë«™ãuÎõ-TCŸVßGª¨V²©éHkp=@ÍÌ&[:¹²ÉÂX•k)ñfÖ‡¼ËWô\͹R—.xÈ|%ÀE By”¬Áî0ª¾u·žM®jjEí›´¡)\š"[fÓ Pé37)Mqz¦Àj~?\_©%>,} ¯fÒa+VƒÙáP‹¾´ÂIÇ–sõQ g“ŽëšgSt¹¡c1ãÒ±eéð•èßÖàúš•eTúÚƒCoϨ€ÊbŒr”©âúŠ®j_U£öô+qâ¤<Õpð&ÙT &é³™‰Cé”FƒIU—¦tú‘¥qq車Á$öNTmVé™À¯·g ,l¾.$Nlè'ULU`z&—e(Yi¿ÕO_éo›#.ë+Ê/iÈ•ö²v›ÝbVl•44N0ª¦xÊ/<ÒtZ —zàêju‹j2¢©¾ŽdSSXßAŸ}CVÛ’æ2 úùöŒ>Ïb ñ b•Á;`ÖÖj2’Y*\CnÑw0diiç­æwrýc®gbki±lê—OIï“¶ðø}TÍj“ôÅVÿÒ5Ɔ?´Û›#ÐpQ¾Ý]Ô d³€jEm™þñV´(àµp©çJVøRµ½o¡yÍ­pvÌo©L65oÀÔóÖËäúý8«ª´5Ѽ=ã.£z½_æ8!¼æFŽ4½_Ò»5|›Ï÷} ZrÿAŸåÃV3öªË,Ú¦f“{u KÓðúæ[±8Á¨Ÿ†ü£õ±Š@-Ò…+¿ƒŒ_­Rý=L/Eó:8…m¾} Ö@å¥|~=êj–4ÛmnpÚ-8t}~hvÚé|˜­‚F ¢![zeo'çN!P‘uÑ\02ªseVx›lï*%¶D€J&¹È ¨ÍMò3‹£¢Ì"£¢Œ®$Gv³æ PÏž=KRæÚÂ5±PÃÝ1`,ê£z§ªz•Ê®>jàË¢|ïÚ`ñÍRÔGÅl6Üõõ¨¬kþbT3ôQõ®{ƒõQ­ËÀ¢qßjp³©³IájQµðNùý*ꣵ裣tßõQ Ó{±ÃƒCŒêˆ>ªÉ¾!^ë£ÖTôQU—rMÕ ¢>jÍNÉÏ›¡ZãPFÕ º¦º4@Õn6ÕGÕgõQsUßÕ¦(4E¦¤Å)Uû®(T½ÐGu¨Žè£jÊ»@Ñ:«j7›™¥i’Í }TÃlú¢Ú º£jxÒw}TëÙtSUšØY}TŸ\ß¾ë£V T+Ù l裊þœ«(›5룪/¥yï¯>ª—@í»>ªØ%.TgõQ)&kjÐ}Ô€ZRµ±®oÕú¨â•K2ª›ú¨šîk“ôQkv}M€Êé£zTõQ+eqGµ¶Á¤ ¯ú¨µ &Õè£z¶Ö·/ú¨š~N“ôQíNÏèï¶~}Tékk~飺¨Ûú¨R²1ú¨úoQ5W6+ÕGu”Qû®ª¿ ¿ú¨¹Ò£>ª&›¨jZé£ê%ŒQUŸMÔG,F-\ê¹’eV UðNµþ×Ü|Q¯A}ÔŒE}TÔGE}TwŠú¨¨Šú¨nÚ—áG4´öQ}ܨ:PèB}ÔÁ*fÔGõ=/¨:p­2"v0 ]_„š¶õQÔªÁ˜e»@E}Td]4GŒŒê\™¡>*š¨¨ê(C¢>ª_…ˆú¨¨Š>¡O9B}TÔGE}TÔGEÙÅ (õQ1›ƒåú¢>ª/†ú¨ƒTß`œl¢>jîQ–¾è£¶Áejp ú¨bëé–ôŒïú¨&{÷ >jîuDÕ¤ >ªI vAUßÌ¡>jîE}Ô꜂ÂÏÁw}TÃbE}T£uJU*¶ÙH}TØñÜV6ÝÔGÍ,MÔGÍ T}ST›>ªáÞùÞé£Jç–Äô ÓG­4›¨Ú}T[@u\5ÈÒ¶k†>jfi¢>ª)P]ÓGͬñ>꣪@ó š¡Zui¢>j?õQYN]îÆè£êÓû«j’MÔG-TôQUjQ ÓG¥%mQênû¢ªÉ>ê£VèúV­jØÉñ]U:ÂT¨®é£ê‡ ÔGÍû¯®é£ª6eö]UÄž©z0)è“>*ûÜôÙD}ÔRÿªšl,ü“¼ú¨4èR6I•5n©ú¨&ßâB#F ÖGUÍpx­jî(6CU5  >jùuJU•‘ÌRqJUµ8D³æõQ5ÙD}TÓ¨HÕä¡£>ª*›ꣲéQµú¨š:á>j± 6LµÎ×ÜPõQQõQ«*꣢>*꣸]h_†ÑÐØGõýq£>ê@¡ õQ«˜QÕ÷¼ >êÀµÊˆØÁ,8t}~hvÚÔGm Pªc–íõQ]d]︷ðR“Íø\8¯Ï…ô<ê£6¶Ñ½tñ2vÛÐAŠú¨XMëëÈiÊ1ï2ú~ïP‘QªÓÍ SC×Ý/×|Á3ê£6\JbnnŽ}™Ù<~ü¸GÙ99wJüHJ*c¨ê±äÕG%%Ñ€°&íQò)ªA}T/ý@jðÇ¿ÿƒ×a}m]5NF7’nB6³€ï£zi&@=õÖÛÃÃÞVÜ~÷qxüè#)Õ„›6@ÃC¼8¯*ê£æŽë‹>j1 ’Kͽu‚¥š?|ôG*þø»?IÏ‹?Ñ\¤@Ê"£ÿàÌK5VÕ<_ÒßÒŸ“ì°—R=XdÔRÿÚ$}T} ŽùJ Mzó™é¡r‹õ˜TôÂ@å2+^ʨ×d!ÇscîA¼’}FÍTÔG-8mP`vÔ䚀Ê5öª&qFÒ_¼$£Êoøã-f¼…BbzÙò@E}T~ˆµR}Ô@ØF9(º&Wƒ¹Ú,å Hm äQ2®Rj*ºæé_“[¸wÔmƒKÅÿž¾l^F¥Ç2ùGö²4 9¯yffáæi^¤—¢¥©8yŠú¨ò¦¨~}T}²ò@•VJizRGs‘wö:\§J¿o2/£²ÈçKéý¤…þܤ1âòË6ªA;(TÔGmˆ>*Ô`RÕX’zLÇ™P½âŒ q<@¾‚_±B/%­Á´~ë)Ë„~‹1*Û@нmø–Ü$Ç„ûÑAZUŠÄ«r8 ‹÷VŒQQµŸú¨TO^ƒÛbŒJqÅÖiR_¹zÃQ ëLÒr •r²†Écï7¬Môé Êb€æ‚s†UÈe„}>Ü㞃6 }AO‚¦\Òœ+ÚGE}T'ôQ3¡ž ¨*·–U˜¤q D–رJ®~s¨†>m.F1PŒQY—AB­ÃÃtžVšwv“þDÓšPÄ0›='º,yJeú¨¨Ú}T[@=9w 0¦*0ª”7 *Ö?n˜þ‹td˜œ¤°±Å¨b6EWŸMõV¬ã í±‹7)íˆ@eÇ„éàda ¢>ª<Ïõè£Jµ¡ìº¾€@À¨&5˜ƒ7a¨ïàQÇ›Ob!mTÊQÜë]_’^URµGiÒ%¶D,¹dðÜÊôQQ5ú§ªš¹)3êK§Ch.ÆÒÇsÃ'˜ãTÅ`’—úºÜ§8¥¡¡Ó@MÕÃY™È /Ü Qæ³Ï1°H¡Üšú§\£À>Ii6 ŒË&¨Ô«*U@+ Ô\K¤«y2§g¤“±†]5úR—²ÌÊ$óUÅV€°`f6U ’¬¯LjìBÇõQ-.x(³„HºàAu5`à¼ÕWÕÓ3*w3ÐpKrMg>4öÙ4ÒŒˆsÅìÍX*ê£ÊQç¸>jÉÕêÒ:­¯èìÚôÂË Ë¬Lâ~+þ£Z“eÌ™«s^:ïZ¨¨jŠºJõQU"VåÇo®”X”_Œ™s-…-°2Iõ™ò=¸hvDŒkŽ´Î¥§Ýovd‹vV]]_ }Ծ룪oòš[ƒ BDhýé÷ÿ§Z\®Â¡É²~9§96õZ‰¶½°»(Ÿ]N­¿€9Ï;7e_B`þË:PQÕ}Ô‹—II°3û^¾>½8®o.çææ°ÃCæL ê£6VQ“ÔàõF˜ž4š‘M¨Ò† õQ½±2cT¨R3¥Ü´>ªïeiQ5È£,#tË? ÔGmx;‹Ò¦6XeF1›ÔjžÑéõ¢¨:X d×{:TìæÕ}·T1 ©žBÞmî õQ],øæé£bS‹ŒÚœ2k¤>*vÂËõQ±^"ÍZ(ÄŠrŠŒêb}ÔæùÉRA·*ê£ú®*VÜõ¦›A±aB}ToˆõQ3YÂ_Ë,MÔGõÒD}TO*­xbiŠ?¾ê¥ ¸>jÃU_š¨š{µN}T=çû®Jßçfͪ­ÓÒˆwªÒ›4»È¨FõQíê£ZÜŠE“ pY|ŸAUÊìŽGŠú¨E¦ Ê7Ãe\_§ôQ3·S]ßÖ`’I+œY %¨¾µTÔGååªÖG ²4ÏõQU)‹mÊ*òÌé´‡‰ö~ƒ?n³e*ê¥úkMý1÷PÕ-}TzÒâNùŽè£J7ò嚃p‹¥™éYivÙ6WÜ'«<åKõQÓGel‚&ê£rŠit§|Î+¶.ª)MVS4PÈFd¶°Ò3úÒÌܪ.@}ÔÀ=}Tª¢ÇµÍ¾ë£Rÿ™þP ã¼jnlåÓ”¦TÝ‹ƒòÛ¤–¦žÏE ŠÎp1FE}Ô~꣊¬.Mé»>*üÊ"P3K“-"šT@Lìþ¨üÛ@!U*ž)ÙGE}Ô>è£j6õZUD#kìD.·HÃPY°IG —&× KKÑ*€šW5ŨkF{SȘtþEU36Ø$}ÔXSCÐ/ãúª´U¥):Š\/C,2i7$ïðUu®¯ PSó¨kÙ{Àê£æn³ »¾.裲ì-ö`¥ž°]áÐ*JSêå*M+ƒI>*;ÌKª‡ùj3ÔG͘,T×ôQÅb©º™ÅR½ÙòmR^p5qV¶üôL1ã\_“)q(ÔG•Ÿ× #v}]ÐGU× ¼ï¯¹iê‹F6™y›[xÁCf“$ý–›ž1_p†ú¨ÍG}Ôb‹Ë•v_­cÕVAj.}TH¦bTÏ\_§ôQõê>j1&/Ô{Ìç-²2ø¬zQ~.×W³;¯œtŸû¨.è£kƒÓG-ú>MaF5†î»Uôš›JÕ„QÅš€ú¨¨ZP•ëwñÜ Z^µ§+ûÖ §]_ÔGm€>*÷êÖ ”fú¨ænnZS×w©Fóo0É÷Ç=àú¨ƒ¦vQ>ªŒŠú¨ž¢´9ªyèÑWFE}Ôó-º¾—"Š£ùÒÖˆ%U>*iIÒż#PÑõEóÀTçʬ"90+%¶D8˜Ô†l@mn’3ìˆ>*2*:ÀˆáªÆ–,ÕüM ÔG­JÁzm4ËzL¢>ja}T^s}TÅlr&ÝŠZ•kþbŶ§ù¥ÙÔ¸î¨ÚØ>ê€è£b6›‘ÍêôQ}ª³ú¨uÖ`ý ŸõŒsHÿ±žÍ„j·ÓïRçìknÚŠ%è“>ª~Ÿ“L6Ê[ÿòŠS–¬ß%k° ú¨úf®¿ú¨îŽú”>ªêáVJ/vßt±XƒkÖG5¿fÐ?}TÏÕ)}ÔÔ&åi †2EË Þ¨*§õPÒâãâF­M6­Î•M7õQ3³Ù_}T/ªoŠjÓG5Üø7WÑÂ-±:†E«i¤5=1NËÇ\³0°$ê‚>j Ù,£ê1PÑGUíÄ]¬hÅ+ * *â¶ž8£*t œÑGõ¨îè£ržË]e…H)rjW,¨2e6õÙÌÜæ_̦*½y6ÝÔG•fÓ}T]ß¾ë£6Ïå5ƒÒê’R¥P=ð¤Æùäe³/ú¨_É}TÚw}T»@UU+@¿åš*Uõ”[]{T¿>ªþ'}ÑGõ»êŽ>ªÔù,SƒÙ^®E_Zá¤cË™}9+ÙtPUSèAÿôQ}Ú××q}ÔL¹ñ2m07 k’MÕ`’>›™¡•fÓ}T“lÖ¦Úüµ¾uê£Jõ<ËOÏä²L?Ãɽ’ºf«0Põw[³>ªá·}×GõƒQ÷ôQ3¿usµºªYQY²¢.d³1ú¨AcÖúryö]J¥"MA‹’vå³™™#ÔG‡-PÕŽ>ªJÄÁnl-ÃEùv©ÙtV•>@fèú–í£º ZÅk%eº£¹Þ‰Sñ›áŸ–É&ê£J/âßôLÃõQ£×ÜÈ‘¦'æQ~éݾ͇ú¨¨:¸ŠšÎfõQQÕ]æÑ«êûãΫäãÎf¾ô0ûû(JõQ],ææ2ê£6œQP) wÊÇ‚C×á‡f­­A}Ôu j0fŠN/Ú@ê\™¡>*&ùǨêW!¢>*꣢Oè÷Ø’E ¢>*꣢>*꣢>jòPÌ›O ³i1›¨Z«‹ú¨þõQQµTƒÙ PµÀ(K=ú¨úmœª¨ÁN飲yoŒ>ª>}Í;<äÚŠœÖ×P5ç¦Zi{„ú¨šÞáÛ31PQUU_¹-v,Öà¾è£küÕG j×·«ÊÍÜ >ªN@IóÞé£ÌnIìöÐR}—ÙtS5³4ë×G5ß.”å[ÔG-(Qã>ªFoÆV63oÛn³›WÕz6‹é£²ŒúÑGvSQU©ªŸ5E}T=Õ¸©ª:_³>*ªv¹‰nÙI߀ê”>j áˆ)}ÔGÕ·%³é¬>*½ŽªÕjÑG…܉@5„ê£Ê…Œ3+‡ïú¨šlR÷$ð_NRüpî‹>*ÍÂɹS&ð˵ô`€ôQí꺩T »h’ÍúõQõWè»>ª@uMÕb vVÕdÆ_}TÑ¿uP•]ú«2è?£>ªNU#†ú¨æ£,A_õQ‡#sS•~ÔlXú¨ÒK¡>ªa Ößm¿ôQ¹—ŸÑGe?ª¶í‡{3áÞõQ£*žG}Ô ^}T)PUKP<`Ô¾ë£ZYBè >j.µRÔGÕd³¼>ªøvЏ:……Lf~QUÿ§¨ªÊ¦³ú¨Ü¸ jòb6ÕUsºê‚>ª4™¿ú¨¹nÉk}T–É5¬ÞG}T“×6úïú¢>ª¿Â¡âÖ¨j¨Ê2êÚúçv¹Í>PSQ“®ÿô7›Ò]¿PÕ\UL2iDp»ÐšºFM²\Þ8ûˆB'ëâe¨"ž¥­y€ºŽæíö¨ø(lmJd¾=“goZû@@k07XUZjón%ÔjñÙZj± Šƒ@Ü)M5(9n>m“Qs-(C¶DpÖœ‘Q,ê£j*Ræ"“{°Á¨/“@ür ^„¹·N¨¾:9wªÙy¯"ƒôyV:«lQóv ›mæû/cp9äsªÔ± T‘Í¥/y4CÔDóLÅ]!1x TÇ—`ªÃª ’û3|YDß T˜OÆ*Þ$ ê¥K×-XïúVŨôv _íi̵ÁŒ*ݧºÕ¥jZò¼à&ö”àHÅo ªö8ϵO 2*×Õ„{Ê¿¦[á‚Íöb® ·Ÿðq¾:@wTñØõ••Ljäªx«¸ïA*µV~Gç–}æªIË€8F5‘ßÃà£JKÜW re4e³“è`=Vñúú TÑõÕl³Òà>ªÈ¨H§žZpÖ7¼wtz¦_¹ÂQ_ µ­Lâ&2ô{\:TÕ®to!O·V27LjP-î¨â P ÷˜iÌf<ªí6°Š7Ãûå*ªfg,:‘QÑ\FßÞžiø† ¸ÛIviYËWuý`Týöƒ`šÝnÑÐ\* Š@ECC ¢¡¡!PÑШT44* І†æ PÏ ¡¡Õn¹Šë?ÑÐê7t}ÑÐ°Š†††@ECC "PÑШhhhT4ßm ·•Pì@Es¨ƒÌœT4ªÓ"PѨT4´rFw‡p J¥˜¨hȨȨhhùyŠæœ‰ &P©Ö!2*º¾|¸pU+ƒ®/û¨T´ªÈ“´zë)”cNòñbdT4j6<<,E)=cT4ª‘A%ç• (ŠÉ«Ü·T4j%@¥xc!ʹólz8·R8 PѨEA ô9)ðD ’4ñŠ”‹@EC Vè÷Š9W•û¨hhι¾š0!PѨ⚄¼ƒIÒª‹#PѨ 7*5å`BXä€@EC«¨Rˆ²'õ ìúºT4ªµrt}ÑМî£VJ•T4js Šæ´q=@*ÍF@)Ô³gÏ"PÑ<`T Ô¡6*š&}ÁІæ4J¨h.úÀ.Ì”ôŸÜG*š½w*šë(E ¢¡ùX*š¼jT44´¾[PÑÐÐ\°ÕÕU*š7öÊìË) RÓZß-aÔá¡Õ çÈ 08—‘€4¶ááaì¾£¡¹h4ÿRdç6&…IEND®B`‚pygtk2tutorial/figures/comboboxentrybasic.png0100644000117200001670000002272510103544635020743 0ustar finlayfcf‰PNG  IHDRÄÊuÎxLbKGDÿÿÿ ½§“ pHYs  ÒÝ~ütIMEÔ9ÒfB IDATxœíahGÚø›-ŒÀ…¸° dC ]QCVœ¡—VÉ"“ƒXä )4ò®ö.v—èŸý;ýгsÐZ ´QÖ7Ø… Qà*È‹tbä° ]C +¨A gÐÀ»÷ÃîÎήV²d§±ÝÌ#ï®fF³3Ï>3ûÌ<3=üáÀ`¬Áèa 9û™s™À˜ÈØ(ÀË—/»J1ÿmnþvaììô«Ë$~uI–oåÖ?Øqôü·¹Ì&_sôžžpD s0Ô6 –-ß[DˆC!AB„! !€C!Ä!+ÝÊ“òŽï„AÈ› q€»Ì»«…×½Q¯@(’–ZÂôëÅ—/_Š ¢(„E^ óá·ÃèíâB–æcŒëØhõºQ¯oêzMÓ6´ÀBÁfƒd0n DnÕù>÷´nÔyžwO7u±Ÿ:­i’(¸§štÈ=Õ××d‰:}±¦ JäT{¶ªÈÔéÓR|HÞ›SÙ=Õ××è;Ó= q –ÄCÒÎjá5G×7uÝÐWËß×6 `5y½îÍ„p€œø @Ç(A˜€P›vk…qƒçÃ;§[uA-çÔ¨K‡%Ã0¬Óú¦yOÖ7ÓšUbš^³O7´h,¦ýT#µ’IT5çôÅZòÄhå¹]4ú³Õ±S©JU#5šÏ”žV÷æ´Zu2¹š8– w„Í8Ý@Á[È)ê®kaO¢»™7¸—ÿórùÞ¢( ]g‚*¹OÛ¶’$´•¤ˆ"“rW¿˜Æ&Î\ÉY§ú†W’Ö×´$½X-T}OUs =[ÝKI"§ÏV“'RUM#¥ÁóaL4“ À…œ¢î¾¼Ñ'?Ë’: À[ž³›ß,´šülr_Ï“_œ:? ºùÍýë¡éûÿÿàÃÿ3ÊN€¥™çÑI“žžüótó=Lœ›š87Ee¢I7q”$™ ¾’$ÜàiIÚòJ’ᕤM=¢ÈºNKãy„8Ð74Ð7´Ä1¯$­R’”<™B…û@ßдg«éÓé× +<Ôg/e[KRiì¤+IuCçûELµq͵@—|óqs-x¢;4KR'Ñ-I€™?MӒ禣[ô‚‰y$É 2ua’¾‡‰sSV„‰³v*͚ɛ …ý-I‚W’{%iÈ#IÑᘓpCßÐâÇbí%‰´n`6ÆN§^R¯Ï%b Þj~;v*Cg½¦I‡eò˜9YõÔ]òÍÇžºäZDo%IÐ]ô©ó“D’ZF·®šÀaK*ƒ21u~òæõ<-I@¥â6˜^°Ù?‘E…~8¨m³7–4½66‰ ý¼aà¥G¥å•2ÔziqÁ0pþ~1s*8P–ð^øs84{#oˆé'¥OŽN2®mÔ²ß,†¡¯¯Í~6’„~¾¶i¨÷ õAÉ•$€ôéÑé3vøÊãBz<#ôóùÏ'…~¾V«­­Íß^eHšýã¸aàô•y‘ço~>9ÿmeê[õ¹‹y@0 £ô4™»W€×/›F±’LÄäi4–¿WÈ]Ï-ý=<¾¿=ûáøÄê£%„Pþ~q4]{ZM\¿|õƲ•%}}-s»M`Ú ¿:–$«ÚT"9󜴞ûz~æOÓÑoÞºÙÝ®wz ĹyÍ£S™øtÊ'Iê-ÕN%P3™95š9•h˜8û·üÔ•ù¥û…êójrDÉœNhëzúÂÕÕgÕÌéD2¦XpàûP2&—Bé‰ä±hñI!Èœ­>wÚ‘>>SÊÿ®J‡…L2®¯¯Í~6•Q´ =}áêÚ múãô› ßÇ'†íðéãѱ±´ÐÏgN'´ =u>»¶®'>“1–ÕÊ3çQR‘3¿Ohµšú°Xª¬Îþ)#ò|úb¶úBKŽ(¼Sr<Ï+²X|\AdN&â±Äì­%0 œút¦¾Õ°”NB‰:GúC^•Öê× –#.ä{n~³ÐÔ´z[u„Ñ"‰h©àyÚ†.ŽÚWž½¦‹ïF¬Wx½V“Þ•cŒÍ†t8jãFüXÂI¾7uFäe@}HßÔIš‰c£š¦[iâM=y"MÂã͆ãz`ø¾ðês Š?T“¿U´Za¥(H"/Àø©äø©¤•¡?¬ü&i¥\ßj`Û~fº%€Í†Ø¶ŽëF]|7‚8Tú—–ø@NKć$õ!ÃÐAÂSÍ„§Š‹Ë÷ àƒÈœÉ$'šjÁ[‰Ð®·T‰~˜út¦ù×Óg'ZÉ€cg2íž¼¤xóÖ}Í© ’çù3 ò» û 6Áz!îCP«àÕón Ì…ôºÝd%î†11Ô6 0¡¶eXiju]|‡·Ó¨þD:à:•rÃo$$<Æ à@|‡O| ` Ò€<ž@|X[¯Àâýb4™¶þrw–j5·C–:™&¯cúF•.tpÞ<BÀÁba&Ϥ £. HØÄî­…V’ê|@-x£Ó}¯-c»è’d‘ù8,Ћk•GœÕ[7ÛJ’£â8Dÿ-=.Àü¥™„"Ge99¬È’Tx\€ésiID“ã)Pï…¨—šm7§´]¨^¯[W¤ÃÒäÙ1x°R.ôàQÉISÌœJ4­¸ˆCò{E–íð«ë: Ÿ>§ÃgN% ÃÈ\ÌÀÌ'icSÃoláñ‰É?¤“ÇãÙÏfÒ¥…Û¤ŽPhí'ä61’Äó}|üh:±ø#5MeÃÀ<Ï—¨â­º<i˜N¡= á¯…u‰Èo-GoÑ[ï4:¨·nª·o¶ÿuO6¸…bôv·[¤B ˜P|¢á­BòXtò£$˜P3Œò ué±ÞÀõÑ‘xâÅ0pîî²ú݃° ‰ž±œ¦%}hé«Y0¡øÏJþÎr¸U×ü½‚榑¿[P¿{HxõÚe^:Q %ý'ÍŸ‡)*‹Ê{ÒÄÅy­V+¬T’#ÊôGéüÊZöÛ屘œ>‘@Îoè®ÌôäPÓëê£Jú¸²pe:{c›vé›zl8¡éõâ¿«c¿UÔd)¢ÿ§áôT0 úùqkaü£±Å»ËT¹u™>“ ¬_%º½”í±9:éä8Ú$¤ÞV3§@]\ Žnæ §þsoÕw£m)VïäçoÉ44¡ëš¾¡aÜ„B‘÷c‚º^³." ‚$E,#géñàBñ‘`û8z4†Â¡Ò£À…â±nÔW(‘ÄÃýaE‰[JMÿIÓ640…DAIø?:/JŇK$¼8 IRÄ:®>_m†•Q$Qª>×´«Ñ£ñ`lÔµuM$i0¢ÿ¬a£®oê` Ø/(CÑÂÃ%+WõÿèÚ³*Æø±Qд5½¦ Ñß$VÿU³‘<‘²äoòt"܇’g'­``ÚÝÛbA-}§î¦R§Ò{½ô¸H,ವB7©¸YœÄC’(¹ã¬–AE”œ‹dà…ˆŒ"Ø@?> &X§ñã£V`þ°} @¾µ~W”$I–‰Ì/JØÄvxÜ@}®ùpCQâô)ê &%Q”F7ø>¿#Šƒë[I’±‰%o`’²(JáwD’”<•d[d㱘(ïJò»Bîî2ê Ùeeòmî²ö6:Øos€8htŸ éÖð}“ €pÝ'áD¨/ hºýB§¡ýqZ­Õµšôž,ÉJˆók³ËZØÛèŽi€ËßÉÜ[gXS‘fÏŽn’Ñé7‰]ÖÂF' z^¾|©½°Í$Å6üW m$Û%‚ eþ0i‰Mõiut,E:à~<¶oƯ‚—/_^ý3Ù+ó»Oªþ³¾ôÝRàWÂÝ{0ö3¤å€ï Ár°{IMÛe0vƒ=…ÁØ=L31^»ÓLæöAo–wÊ…©¸Rìy«§ÛX===åÿf›¿Bü~sôPˆ‡Ä™ M3]º¤ñ?]¦ÀØ·pWrÚºkÎ?&ùB¨‹êøGãx /·œþ88žHžH¾ÞL2ö‹µòO¶Øï̃36×+KRr$aýµ‰úÐØ©1ðûèôôôÓ99.ÿ³Ž†ß ‹‡Äüß]k½¶®E†"¡Phê¼m ÙÓÓ3ÿ×ùð;áâ£"9îy«‡ÄñXþ'k4wˇÉT«¿6±dI’KÒa)qfèf®ªiÖ_›ÈµÚÔ…©Øoc¨%Ã0’'’3çgê?× ÷ ç&´vâW?¿ºpmáÁ?ä¾Î-ß[n2;_|TŒÇâäxá«õ®juü‹Šá¾pìƒX‹,0:¥•³[ófG¦é ÓGÈCréq)÷·½ E+  cI’Êÿ]Æ[Xè ìIͳŸÏ&Ž'DZb…‡…v!¯Ì*GÔ‡ÈqæLoaKóå¾ÍeÎfºº[F+šåf†r{IöÌ_›ÿh*ÿª¤N¥2g3—ÿïåöQôšs׿¬Óx,. ö$2aÀž§+Šbݨ· ÉÓNpý<8MmþN>:-<,䯿‚±n†Å÷…%Ò®ílÈÅYì«3”£Êä§“Ù+ÙVÂTÛ¨YÒa ›X½­¢ÖSôŸõèP´“4é3éÔïSÑ¡hòx’–6Æî±äiÇ’ÔÑÒí…VxTDß7¨U~¨Tÿ]MlOOžHJRæ\ÆZP V«Ñ/ŒP}V-ÿ³œþ8½mHÉãI„ÐÌ¥™ÌX÷êÙñ0pGv&H§{zzzÞê9"©ÿ\_ºëÿ½ì¥ìÌ¥™ÑS£³_ÌZWB߯|olâ!1ôv(‹WUR¿OE‡£©Ó)õ¶û Ö&d0¤O§…~!yœ™'ööúLíµš‹’I¯.ÿåòå¿\ö…—Kþá_§10µmCúbiëZæ“L7í3ã§SÍ´¯Ð^h…‡…Ì9ÖÆíG˜0aŒÕEÕZ;…±¯èîmn? ¿/ËïËÛ‡c¼vØä8Æ«$X3ѳ†ŒNnæ˜7c §$FL-ýZ©ÿ¬ohG8îáÒaéÈ`äú=ÆžóJüæ`îÖßÛÎ4svT–wm>}:5s)Kö¬ ¼ÆNŸÍd>ά–Kùor3³ZÛÅû ZŒÀÑL˜65µ§VӫϪc'Ç€ƒÌGiõ¿<-ÝôùEQ2g3ãÕ'«m.@q¥ˆ1–ÄÊ“ ÞÂB?_þg ŸZ²Ž9d"KŒH—ª êâ²±i‘Ý×1MÓ$gKXÁYÛ;ú/†úì hê?ׇÈ:Q%Ê÷û}…û"*d`8G’P'šiéžú}á4hKOúLzñÞò勞ááÚ¦dý ßEòÒ!›xîÚ\'˪0öÎ(œkmr-àHRq¥ê I€ÑdréÞ’»R*n€zkQEQÚ]ˆÄA˜¹”µvK66Zí—šTÊxµøìn¼ó$ï.'OxF‚“ÇG Ã(8ËÆ¥ÏND†¢År)ÿMŽÌº ¼ˆCËwUŒq<–ˆ E“§ÇÖ˜áê€@w•Î~s&²ìàíûLÖ”M¾Ÿÿñù9UÕØ°â ã»VHAo^÷§ÉØÿQ¡›9[3±)Œ® %É3œBÆ~wÉܵ9ŸcB«‹Œ_ÍÃ)mßr;°`RàEƯ_Kg¯GÔkæBK mgêm~Çc0Úã“w>0bt­œHãÖëSY F'4›š0×ýƒž,¾f®ùk£ ´Z"mœ=6G[ŸŒN íà8ôÒçLžC›š,z}¿ F'¾·õ21bì€@?ÌÞWe®<2)?©ì6Æ!ÐÓí€Cg"UxXH}”Ž E F"J4u:].³¹Ûo®N\`ˆVÌ•ËÝÈ]þl:ÿuŽçùÚ¦¾ú¤‚Pè•畱ÿñÍÙ%ó™Ü¯ÛPÛÔs_ç¦ÿ<9›áûyà@ÄäÉ$™Œ[ßÔÓg2G#çìt=㎠Fòßä£Ãñr¹DŽ F®~>K~+~,Q©°Fs_ãsM f Àvš©T®@j¬å¬’Ù/ç2ç2Kÿ¥WŠÕ§Õ6žq‹ß-«·óŠ%dzŸ_^r¼4ËåR…è ãŒ}=Ó$À£·#S½^¡µCÒÌù©Ä±¸%ÆV½gÜôùiY–-¿ëxìT c\~\õîòøé±ÝÝ/ã¤ye&ð-*¿m‡)üvj5]‚åIðLªlãî»Éö‡!”8žXº¿,EŠ+ÅÙ+ÙÎïñú œÇuþ*) ..N_èhÕn=ãÆN&§ÎÏHïÊñcq¶ÿî~&СÀ³p¹Ú A'ÿ˜ÉÝÈ_ýr^Ó4¼…5M[¼«W'ÝzÆ%Ž%Bó›gmÜ>ÇgûöøÍùF€Û0}azîËÙÕ'¥Ñߥ"J4õût©\nµ•`מq$O$yžOŒ°uZ÷;Í Ä!z„­ŒõâË—/÷j‡‚‰sù½H‡Í(ãõS\)Nœ›²VÛm¦—22¡½5 iZq¥œ>=¾—™`t@ó„ÄoÎ] uo‡{1Æ ×æ„Cl-”ýí‘âó›ÛÞ1üõ ˲,³ýwÍNs@/º§yc$|£(Äné.©Ã¦Y2:¤yéfW3óèetƒo» ×o:^•Á°ði¦€%uX·‰Ñô{ÐË"³›uåŒ&ó7NAlá F·Ð½%Ú4@ÜÝËÌ1}pwTÖÌ1:Ä7mÉ£™ h˜ÁhE³o¸…=6ç»Ú-;ÛE޹Úhš×gâHë։ݒ–AFOŒ^¾Ä¦‹¼‰4ïPà¾ÍAÇjiáÚÜÏ×Öž®Î\˜Êÿ=_\a˜o"«WÚosÝö–BÉIÓßm§/rÜjk9}]=9Šf§9æjw  †ˆ½CAG{ñXÔjúÂõœò%>ß6°å@7{evìT²Z­Žþ.¥U¬½ æ¾Z˜ÿrLHŸˆGãÇ­BZîuôqå_«s×r—¯d¹Ú½vš§ Ø®NÎIRö‹Ùù¯æê÷‡ç¾œCÜöƒ0´Xt–XÌ\˜‰Åâ UŠ+%lB«–{• u,IÒìóåǥر8sµ{øÖô"ŸW§NºM³—²É“I¨>­fÎO¦O§&?l¥8à¼6¶ æjw hös"3-=!:G’3¥ç¿Î“ÙâØÔ‰^¯Ë²Ì\í´iÀRNÄh‰ +£¥ š¦Ë%QðW!BhíiµZ­N6c]ÙÖNÓ´Ê¿*©“£ÌÕî@àósMŽ] Ó¦.ÌŒ‘#&GMcîZÎ`ò™«›Ÿ:?3sÁ¦6t“ç'GO¥¦ÎO-|9§( sµ;:a"zˆ2Õ6 {è7·˜«Ýë„øÍù\ è)(¶{øëe®v{B󨜻>ñN9p½ÌÕnOhv(°>9GÄäf˜ÌÕnOh6 xÞæ€ÍgtLàºÍîÛ°ÉqŒŽ \·zÉ(ïë01öŠV}&×=üÀu˜{HàÂd» ÖÆ1º pQyßæ…¬Îè2§’ô’5¾ºšÏÄ`Þ6q•ë%k|1Ibt¥–ì+˜Ã®i€½Í1:‡¨zq¯^æÎËØ¤kn3G-öµwc0(»€-FàÛî¢CŠK‹·ò«ÿ®†‚‘#7¯/¼âü2ö1ôä@Ø]ì :ë3åoå'ÎM(ÃñÂý¥Ÿ¯­>)徜WÞg>!o¾µÈ,^èxÊ€±i\ýëüôŸ§'?ÍX{ñð}¼2¬L~š±ÐÞmùÛj|$ŠFcñå{®ûÛâm5>’ˆÇ Ά`­\êûG’oòR/ûÝ–R¹f»ýæ€ÚH.2(¾[^{º:ùIfö ×U2'Ÿ»6Ÿ>š¹”5¶p›=éûÚCÎï²­ÑR·ö›ãÛÍD#Þm–7ÆX<$[˜ 0£(ŠtHÊ}›_}²jl­åû"-´/GfZnûB~;µMw¿¹h,nlðãó5;ŒãݶxoY]T%IÂ[ždÃVûØÏnë(ÇØ·ÐÒBû‚sÍïx­ˆÇb Þ^œ¾hÏÞ_-— ‹Sç§|!µçZöR¶Tü^8$–ŸTš÷«mê "B¨+G9Æ~€ÖI@Ù•Ü·9hW£ö~sßæ¯~1¯i˜€16~ðk3 ôÍš±iu*uù"[6ù£yó&kr\À K®ÍY{§[Fáa1{)VØšîoÈ×ËoŽ–¬®úL|oͰ&麿zÏiš–þ$ŠF†¢éO2$Áú¦ž>“92™8çŸTÎØWÐ ØŸ€°gÔ®úLµŸôì•Y„P<kåþÖì=‡1Nœ …B¥Çŵ§«óÔ_ÎeÎe–þK-®«OÌ o tgÏ_ €¸n·-œº0fõ¡øQE]TA\¾_tköž+•KµZmyQåyèõàgÎO%ŽÙ[![õWwïŒWåÔ‹ ؾ֕<Í]›kžãÖÊý­Ù{®¶i€W†⛄y0ðN°D,yrVAé\ž{UûÄzÏ ýhšÆÜv.ö»¿-F€ífŽr(Ø‘)Ðý-Ð{.~,*BöóÙZMÇW˜mé‚ÓO²Ô’uÑ3Ÿiç©íG¼ç’§Çⱸü¾<6žFRoçÁÄñ‘£Ãñ[Øébé!ë Îé0! ˜Þoaë¿ ßã Cö›³ø¢¿²5°u›݃ìþ³ÝÆaÀlÚ.cg`§·DZ:jå8¦œCõÁôÁÙ|&F×XV%pDÊ£™À;ÎÂ`´Ç²w#×\i¿Üù¶¢gʉÑD†Hà5°gYcLHÏÉó6L-1ºSF&¢¥ºèe0 ÍۜϊÁèzT¶›9Öûft…¯÷íj&ßzr ƶP½@[<®N{˜?ÆÁ‚VHä 3Z2º†L;±N±óÙÑòÈ`Äý“#£'Sm<'ËO*>?»Î¿eìgȯ%Rdò@×®N ׿~|¾öãóµÒÊ÷¢(NžŸlR‘euQÝÙ·Œ©£eWÝ&A# â)Ðì"W©VÓãiëÛùk¹h,Q¢%ºØô?: VIDATí‘ÁHáa9ÍèQ9œV¯—62uÞgÂ&®T*ù[ùôé1ëJ« æ ú\ËÝÈ--ªk•ÕÕr)y<Àý—9ÍdìVköómñ›€éϦ'ÏÙ.¹­6˜€ðÛòwÔôé”,Ë81§¹ƒF€©ÉÏÔ¡Z"}&ù}¹ô¸D®/Þ[=•š¹”mÞUDõöMíyuôw©z¤0§¹™‚B›°Ï=¼«®Í•(çoåÁq‘˵°pm.ó‡LsàX,®ÞQW+%eXÉ´î³3¤ŸDüRÔ»ƒ“…$I—ÿrùê_ç«Õj» æj5½ò¤&ð}¼t˜i _d`ÀvUqÆæv6k óq:vT™:?#ÉÍ.r$X£³_ÌF†£%ZxXÈ•{U7ÄØ¨!êñõó›c´‚ö›C^©¢–îîô F8Cº”5¼×1|³ùqŒN!pß@/ç[ì’Áز†öø¨¸ó™ØLKFç¸j »“p¯×—É£#Gžl;“»Ø—õï²Ç80 G€(Õë|Ë`tŠO'9W€ìnµtùo™Q‘ÑÚ%ÆÖ5w±/ c½¸Ùc$(£%PŸ¸GH‚³ê.Bf«_×ÕÊ"ewÊÚ†ñ®8f{—@°³ç4Ì­~ºé^HDÓ¾ÚQšúŒ¾^¾5°'“дNƒ'çÎ?•Žg£¦Éem¦ËÊJßgt¶ãå,T˜xòìI6¨gíÚPÀE7·½ÎKË4€)oLÏÆÐô&ãÖÒÏîWÎ1‘$O÷‘µ¡œ+t}¸Vy·pMDK’“ÚX‰Å•¾R²Ø)áþŠ3Ç•oºôéÒt2ìw2ºI*Ì^w¶)Aòë®húî×Êöfؙभ›%oI$cN‰ùeÝÉBîuDI?P·ïú4?x@eÏûxýæè'Þ‘'l¯òì~RóÄ­º´Þ9Ct0jò”Ss˜ºâR`Þìr@Irä“îÉ-½Z>¸¥Fk&O±’_$SsèßÃMϵ ªÄ ’][´¬ W†°·0y̰7çV_ÄÑ® ñЦS´ž #"ý@‰ve‘ŸˆUþ´Â*Ÿ8(·àÚ™¨eý§Ô§ëqWŒ( ³DÊûpQBÔ“êQØS¬téIÂØÞ\R¥T·†¼ôÃê¶_D55U¤h±Oøˆò ÃЙ§bú‘%z“,"ç1¢$€oÅÓSˆ®ø•ˆW{aZ‰(Ðbí-+ýØÛ¥áü¢/·vˆC«¤}ºÊ–Î)zïž¾žT(Eåƒ"© R:^ýLË[Bä ¦[I"dT©Ñ¢@ׇ[d¾B7€ûCD )©¢Û D%T¿£¦ #Råt5€nѬ,#o6šBµêªFÒ rËÛsêyˆ(ÐúŒk"%¤ü}O‹›=¯.€^§ÉpÛ2òôÓ'l5.€Áû-Ý´Vk”&]åÉ“O3yŸrº±w-¿Âè¦4ç¡ù:öT€§ù ’çdÛò´­žzõJÝj'‡îµ¸Š“Õ­±óK•}S$¾Gó‘;uJؽGR°D»*r'OéçŸÜ¦ÕÌ9÷é§sº ž¦ ƒ_ŒÀ$zÂîT‘LПMµå–õ’´døºY¤-sk‹®?ì=hú Ï·ÈÉ[|®øzÕgsš´\bïí7?Ķ4P5‡›ŽdßIÙ•Òt:jÒM¹&rWnG×}“L ï·® E…ýOз€þÐþ†Ñ2kIEND®B`‚pygtk2tutorial/figures/rulers.png0100644000117200001670000002240110050344475016353 0ustar finlayfcf‰PNG  IHDRÂÒð¬\‰ pHYs  ÒÝ~ü$³IDATxÚí sÅ™€½¾TlÀÖå@Ü!ÙØ±,–-RÈ2‰ñK$!N¸#) G.8©Ë$@’ `RI°S Õ*uÚªä`aªÉ܉|=Ó³½½==3=³«ÝùyêõVïhV³_zü¾Ý=ÓkÖ¤¤àÓ¸»&=…¿?~ÏÔGX[HûÝŸOÌ3Œ{ªú –gùØBö·Ù8hÆ——í=1ŸØÚ¾,íx6Z£÷ž¯bé¾$…¨_Òî×Õ©÷´áMèØW®ùYµùIªW~= ËË˪}õêÕ7~½¿ùõÕ~ýWWDèw½Û×â.~Þá7âöµ+oün¡‹ñúo½'ðú›^¼öû+²Ñ±ÐøÆÅ¦xýí+o¼óÉÅw>½øÎ‚o_¼Þ˜=þð‰ï,¼õ‡…·þxåí?-¨0î¾ùçýnÔn™ãâýßvyáÍ¿x·¡øÄ¶±ñîqûö¥ÆÞyáb#>m¾k‰?¿wåÝ÷d\~O6>·—ÞÿßKï]»ôÞ¢cü%hø)-ñ—Ù¥ðÆv…úå¢qyîÿÞ]|wîóKÿ³˜9.×'{.ÐÎõŒè¾Z ®^ |*î|êÌÕqó™lŸ¿ðŠ0Úššu‰Â—J‘?]WZ³avÍúbëfT» o‰›çÖÜ<»æ–™u7Ï&Æ—o±lܰÉ)Ö÷Eþ覯ήÿ—FwcÃmÅu›gC1³i`6EÜYìû×ÙVbÓ`\ô •6ÞU´ls·Íöm›Ý´]ÆL½aÆíÛg7o1ã߆bG#†KúÝPÌøQ¿»ÓÛ¹xfó=¥Í÷̪¸·é®ý÷6ßÝUô£Q1gÝ>´§¤bÐ-ûDE í«è1xÅØb o·¯—‡Ì¨ˆ¸ë`E6dl9Xõn÷7m4ÂÛçpEÆÖC²1¯¶„cË‘ªvw~äpYÄΣU—n´½‡ŒŒûÇ+"Fª?T±Å®oÔF"~$cÓДL×>Íħm%üL¦_=ojtzzÚ!‹]«~…Ðèo”F¿Tôl¸nF‰¯°.$;±ƒò㺰4ß÷TxólAÊî+Ee½ _‰râ\ A‡ 77l𳮝ä¤ÈEià ·•Ä7±ÛÌ—û=!®(Inè÷n­ÖëÛ\²o¯KíŸï =xçœ÷¨+ £IÁY­'Ê»¼ÞºefÓÝvö}­$oEØ%h³aLÜñ5_—Û]ö­è«Ð³á»âôç¢ÈÛÖ“q;°§eI!Á-»ÅmQ9qëXqëý³ž ïŸÚWõoÓmÝç$ĺ×jJpƒûËéö[äØ5±QHpðH%ƀ⧃‡ÊöŸ>PÞy¤,½¦BÜ5¶DkÑ¿;QÖ­'ñú³EyçÃÕáãó#'*;Nˆvyä¸w›¶O.ûŸPc¼2ý²Ø?ÕCDˆý?ýlÁqg¡Îà!¾M y;¦²lôw ]zé¡'ÄFè;Q¥ëo)5e‚K×o,Ù5çàÄ›ü´1*´nßpÛ_Ãé¡0 ˆ›6{Büò€tâÌÆþ„”°ïŽR_àÍ™ÄôÐð£0`|z(´èbÆú>žû¶•,B¼»(ÓFφ[‹16”‚“²ÓÍ1§ß*lÎ"ÍôЈ;"2Ä 1q_i`·©¼ú–9­mOƒ›iذî¸-÷{íÁ±²aF±]mmïîýóñÙŸSnÊ ãåhÄÎ#U!Ć 'j;ÇkÞmó‘ÆùÑOEì)msþ´»šêyŽ0w|Èòõ„bjôüùó.ªz6úúo¯è6 qCߌÝtÍ6¼)T8Kiz 7úâ+Y3D£RÙâúâ¦z&¸qs±os’µôP7cØzi‹eQ[kguÄÐÌÆˆôP…Ý€Á휞&UÊö.š•oL¥¼«hÍ£2Á¨íƒJ‚£õR޳b¹YˆÖ’YÞUB ¶°dˆ±J$]Ý7¯—Õ2aÜñ@ŠbYÏ-#eŒºSŠ/Ú†#ߪúÛûH-ìĽ§l®|¬,bôÑyÙ0b`øŒ´Óô…ÿöŸEV÷27T*”å¶cw¥zˆj¤zˆ¥o4¹Ë¶9}ýÍ×^Eßhâ±²òu4£s~ÌÚºgSufë.T•µ_,»VdžeïáÆ­Ekn¸±Þ¸u›—$*öß]t.–çLëm/Ú*ho·;’*åDEÆ»/ªëðî=s*7ôUXвabxYdÊLÐ(™õ®Ã,áË;¬¹^-‡Ó@kÉ“ :ËCÔ×AãtÍ·a-RvQß9°ÞÞ3« cTÄTuï·k{¯jQž œ8Zp¢ºOõ«W¯Z5ªw°†emÑèôô´Ël€¦lôÍ…˜Äu_-*iÊD%¾Û·{)¡p¢¡ÅˆÙì:ŒÜmgq`$¹Fg…ªÏQü¨wQUÄñZØíÛpïœQ,oÙçËŽ…[›sÆ OÔº c2A‡b9CÌÅr¶N“îôóÁ]Ǽhª—W†Ï§ðàq³=|ºâR,Û襭ÙðÑy!ÄfZBértª"cõ>>¿÷;•½ß­îý^eìluó=gZÉÕðTÓM­­†‰ÔC–——Õ(‘ñ›Å±ƒk«Ù¨œC ­Äá߸¸°®N9ñúõlj}Ô­ ¿=Þ(s[ÕK(Ûâ—ÈCy¸@ŽwÎÉñ¹}cý§}ƒ3ÒkÞ¡ëŽóÕ,Ä 7š±Üµ ¡„‹e‘ÜÉ9*=ÌV)á”–tQšrŒPVrÔ;ý9âÖQq[”•òàýEßn•´é¡—T&æƒûctÙ°aÂpÊ¡²u8eäJ‹6”£.#Ç>WÁ†ïbbøqâsµ¤_,ëB '‰Ö´±±Ñ9 ŒÜ.¤öíj¢£bìñ²Pa8úqèlõÀÙ -bËá'¼Ûƒõ}D´®Q¹1*;ŒÉF¥pu‡dtߨڔ6&<]|gAå† µÕe§R?Ñ–¥qÔO…òú±öi*9c½Ä-ƒÅ@¯M»ùú$ïn³§‡ý¡ñe¯ø•“ovØGQÂÉ`ÿp¸ß°¤w¦(›gÛÔ57—j9£™î“6¬豅 —ÉM#Ë^Ù+UŒÙ61Šô÷Ÿ×fب¨9æ†Ã^zXÖ½–N…õ!—‘‡Z «àªÎ©bU冱éáñâè·*ÙjäF‡££ø¾ÝØS%‰r»áÁ=O”GÏVtÙEEC”O±ÿÉF»eq{èM;ìÿA°ñö{×hx’U£ñ…µñ‘lÊ_«ö1Ú†¾QÙ?*'ÕJi_jsÍœík–0¦HEJ«²Â g¥ ›zë,ÂâGjEµUCHÍkûú³ú.~æ?¬ìÖ?QM{yâ}E—ɆJ‹Á|CM‹An¸¯ÔñÅ·Õ11Ü5Æ%æJY8±yRaB¶ØYFS^7Mç‰S ãbÂìñj[RD쮇1Š"Ú͹aÙâ£ôpìѲ~×R[#$¾&Ù5rÀèôð‰šÐŸ™žw¢®?›ÍPr”qðß«‡~X;ôʈÃOU>U–íˆ{Ö6N&jÔ˜ªThh4üØ(û„jÑhaÍÚôÙhãw½õÇ+zª(-iu¢W,o+©Æ •oÀ9¿1£:å…Ý ÷IKÊ †×ýDÈê§õb¹”u ¥.–oßã:–¢M²™!+åÈ¡’Äᔈy6.Ib]ˆµÐLl×QfoÖá•äÎA9º2Þ(‡›“D¿7°ì2ûZÍÅiž”Ó¨‹eild]5Wõy6Âz»³õ!:Œ¥è?ÒÔïzmç®ÃÈ|Ži·{ë•rP2·¬ßµhñI×î³+2Zñ~•ƒÏxqàé²lwŸ?øÌ¼l}º6¸»QÔ/‡4j–•†÷ÉFÕήUÙèUŸ´óFßþÓB£÷ðî %”}ˆ¢-¶¨ôзޜ]võ2ÙØ(GŸ½ÍŽÓ·„ÛÆþA¢=74kg%Êp±,Tè,—Ú2²lô*!g§ˆ[ï –¦tÒYw j c-\Mnê:´ÖËÃú‰(Í9cÐo8QK3¥&´Ýëa”³«Ö¡’°­“´åȲ­X.»Ù°<ö­ª”šlÓnFF–+©Ügæ’^±\3ëåï—DÖË5ÕŸxà‰²Ü¸ÿûÕ´)¡QP ©þQµžýY¬ïă? <2ìÜc3ëP¦~»êƒÈ cÍßLSŽÚAͳ~¤:rº¬CU)žª ûpJ³Ý¼z9íÌ›¤ÄP×¥t¥¸mŒ5×»U½,ʆ֔PyP6h‚i#èFÔ$¨‹¯®Èä°ÐOí°5–ÇRÖ=hÜu‰‰Ÿ5âèóeq;4vÆZ¡»ttêžt *çÆkÔPgŠ!&×¾QM»o]þ$”'–ô»R‚žR {Žz­ qî¶Ñ¢Ø¢ç†õŸÎI!Š_"U(ò§Fbèoqª—å4ìF¨Îñ£ÉMÆÔŠßÄbYßAdŽ;ä<›ñšUyÃîƒ*¡‘åøóR,NLšLãÒ{(gf¿»°‘†æcfµ qÌ­1rŒå‰j¸÷Púîðnƒ*O:91&CtÉã³Å& 6—ÌVNYq›w=¯ëRl9]YÞ{*~LYd”åûNÏ›c)Í'æƒb7.éaâ@Š*–GÏÎ×U(îÖ\$¨ÛP÷`“õ~PsèOÔÇIæí]„¡W=ù‹ê‰s¿P¶j4Õ„'}ÊèU#òaZ¯i¢ol[6*Gêÿüþ 6²¼õþÙ­ÑSj¬“±ƒý¿^õ'Z×\&ÖD¹ÒÛî–Z)l¸c¼â]…aܵX¶ˆÒñ„¼cÆÝvùêÅr¶ÑdoàådE„§Èz±r^Ü4ìÐPòhÚi7)§Ê2yLåßñ&ÖèC(znènè—bYØðàSÕpo ‹‹eÕ“(»' þ¨êÅÓ•ñgÍMD¦~µ¨”Pù1ì¸cÿe*R&z£)~nßøÏËáž«;W=þBEªP ñÔKÕS¿ônO¾ô‘ŠS¿üX¿«ÇÃþmfÊ~9Ã=}ú}âQ¤yEZwSÚ¾ÑKï-†‹å„)ÖiF–­†J—zV¨6îgé¥? EoˆÊ:|’IÚ‰‡rª×EøÍùôf4G–3Ë©g6çg*)êâˆb9<–2ÖÜoS2뽇­Dd]ü‰åsMÚSd…Q£("ÿØ-™ˆë=¬éa —F‡¦ô¦LC¹¡wk8QÚðÄ ?WÖ…xâÜüÉ+† ãUÞxêåO¾âƒ‡ƒ‘ú—_}E Ç%”à2KO‚k×R}XŽoNônŸ/å ù¹¿Q-~ÄÙû¨tïùbúïíµÅ/Zû‹s}†Æ<|»FS~§?oû×Åå !ÚC¾HûyË¿LC¦úk…¾»]!Þ‰1ÿ÷Xÿδѿ×VÜäæ!¨^cÌþîïCÚÿNZøÐ¿pú+‹{æ_û,¶ñ¯ä‹ŽþÅ)ÿÊFâç¥4*§UµžÜX8e£¼Mh Q4 hÜн=@̵j€Og¥ŸyŽ^`ïjÔØÒS ÛB^ž'/*×/0á천œG·:¾WÂò…D½í=¤ÑÜ}EŸgÞÏ]­n]MçòÂJsùòåDvM£Jð¹û‹5žj¡PX&Z5=à¼|Ö«¨ÄßE£N&’¿Ö¸ØT®¿îyy‹>ÖÃxyÌÚô÷ßø,ô—Öƒÿ½É§¤ž˜þ<Õ QŸH~Íâ¿WÖC^ŒŽl´=ÿM…ße¹=©œúÿ _y„¡Hë«ÈµFå_iØD½ÿÉ·ÝøÍpSϾë÷*ü*Œvã²X½÷•³j4ü2»©Qý›‘Ó«œjtõ½ Ý>†‰òøÒâŸp^>ýï:ê9ëÝb=˜9]ºt©³Qã+®îæK£á/G¾º&â³QYmå4µþÝæ7Í—F£²Ñ˜çÜãGŠz£óQ‹Ò™/'ÿ@ñÓ¨<®Å‹à®èë/!evís_¡÷9ÃÿjŽíÞü^%v°Ä:=ø½ŠúÏÀñkÖÅïUn4j v·’ØÇ¼k‰o¨ãq ‰åp»ŽÛö×ÿgÿ¹wà}n‹}¬ÿ·eøJwþõF½pWo^¾Wá!¦ö~ô+ôzó¡QcæSâsÌ X—·Ûñå¤=nbñ²BÇmïëÕ?‹Ä¬+ïsªãFýWmM‚zó{ÎFuCá=û½Ši‹£DÍFè‘ïUn4êR¸,‡âò?UâËÉ|Üø¾Ñ•;n‹¯7Õ«è…÷Ùý¸13lrô½Òÿ“³¢"ì‚ù^©ÿÉÔó1^BÏ~¯rSÔ·¾[Ûa¶ã¦J«{üõF½–^xŸãws©:óõ½2òhwûôÚë™r߳߫üiÔ±‡.jcb7¼jïq] ŠÕôz{ö¸«õ{¥—½FÚû¯7<-?_Gù֨ѤQ Zµ^마¬Äq£ ýwöòë ïfÝØõ÷9ñ¸Ž?êéåå{¥oÑU¢Žkí9íÁïUÚ×Û ß«\j4ê?®Äü?þ¤ø9À™kýï1ÕW§[¯7Jý½ù>·ñõæâ{uÜpE^¾W‰•~Ï~¯:¤Ñl3³â{Íz‡xéuóBy|6G¶?U—°Ö*g–„Ûê÷/¬ Ú Ñx'ÊÞC—áE4j¿† r¨DC£€F-9ñ+æ.+:mÒhâ•]ÂÙèª_O V a_­l6jÍ4)ê€lÔI£Æ™²¡FœxëZ4êr!4 hÔµ¨G£€FSOxб$ž&hTŠ2fd)×KÒ¬¸F‰F¢Q€ŽhÔz…D4 h”läH£ú‚ÔhÐ(Ù(ÀÊk”K“mC6^þ uÕh¶%¢ÐhdBŠF¦Ö(E= Q4 €FÐ(E£€FÑ(@£7ŒF9‹ Ð(Ù(È‹FÕyôòjͲ!6¢Q@£)²Q–´4JQ€FVFYÒÐh:² QXèªFY‹ Ð(CLÝÖ(KÚ%è’Fñz4 h”l`å5Ê¥I’ Q€U£QÎb4š]£œÅh”¢äK£,"h”lä]£\¶Ð(Ù(@g5ÊZL€F¹P@W5ÊZL€FYD Û¥¨4ŠFÐ(@£hÐ(@£hà†Ñ(g1%@£yѨ:^^­Y6ÄF4 h4E6Ê’v€F)êÐ(À*Ð(KÚM§QÖb4ÊË]Õ(k1eˆ  ÛeI;@£d£]Ò¨1^F’¬¼F¹4  Q²Q4 °j4ÊYL€F³k”³˜RÔ Q€|i”ED’tJ£j¦=4êªÑååe²Q@£d£h 泌4šE£úYžŽðÖµg£r¢¨uie²Q@£ÉMÜÔ¨‹"Ñ( Ñäl”¢Ð(E=è}'ƒ¢Q@£³Q5{Í2ýžlÐè žSÏYL€F“5êxH4 hÔ®Q—dµkTßS´Õ |U鋆؈F:iT6XÒÐh Šz@£©5ªê÷˜G¡Q@£)Šzýêμõ€FMŠB^õ„Æ\ç µkt)v“P*Ù( ÑF垬Åh4£F)êf)ê^Qý.4jÑèââ¢>W” O€FÛ6ýÞÈLÑ( Ñd’åÒ$×('ƒ¥¨è’F—’.ÛÌYL€F4*Es*=g1Ó¨ã!Ñ( Q4 вˆ Q²Q4 wrÙf@£d£Õ(k1mC6Ê…òf×(k1mCß(‹ˆmI£õ€FÑ(@£hE£hÜ0å,&@£d£h /UçÑË«5ˆ؈F¦ÈFYÒÐ(E=XeI;@£é4ÊZL€FY` «e-&@£ 1t[£,ih”l K5ÆëÑ( Q²Q€•×(—&4J6 €FVF9‹ Ðhvr QŠz4 /²ˆ Q²Q4 wrÙf@£d£Õ(k1åBy]Õ(k1e€nk”¢Ð(@£h¢Q@£h Q€F£œÅh”läE£êL¯Å""€F9 SU3íÑ( Ñ–²Ñð<|QÝ3á Ð(E=@5j…FÚ5ºqÙfC¦hÐh¤F£rOÖb4ê¤Q5Ro '¤hÐhº¢ÞšŸòÖ55ÊH= Q4 €FÐ(E£€FÑ(@'5ºÄ„'@£m?‹)lX4 h4‹FÉF¢Q€jTG¯N´—«‡¢Q@£)²Q–´4JQ€FVFYÒÐh:² Ñ¶e£,° h4‹FY‹ Ð(CLÝÖ(KÚ%è’Fñz4 h”l`å5Ê¥I’ Q€U£QÎb4š]£œÅh”¢äK£,"h”lä]£\¶Ð(Ù(@g5ÊZL€F¹P@W5ÊZL€FYD Û¥¨4ŠFÐ(@£hÐ(@£hà†Ñ(g1%@£yѨ:^^­Y6ÄF4 h4E6Ê’v€F)êÐ(À*Ð(KÚM§QÖb4ÊË]Õ(k1eˆ  ÛeI;@£d£]Ò¨1^F’¬¼F¹4  Q²Q4 °j4ÊYL€F³k”³˜RÔ Q€|i”ED’tJ£j¦=4êªÑååe²Q@£d£h 泌4šE£úYžŽðÖµg£r¢¨uie²Q@£ uI6Ñ( Q»Fõ= …4šB£á—Ð( Ñ,}£õ€F[Ò¨µG£€F³ÏE£€F[bB£€F™ðÐqÆœSÏYL€F“5êxH4 h”¢ Ý5†˜Ô„|U鋆؈F:iT6XÒÐ(çÔtJ£ª~gÞ( ÑöO¿×¯îÌ[hÔÔ¨(äUO¨|”õâÍhШ]£K±ž„RÉF&h4*÷d-&@£5JQh4KQoôŠêwÑ( Q‹Fõ¹¢Lx4Ú¶é÷áešÐ( Ñ’åÒ$×('ƒ¥¨è’F—’.ÛÌYL€F4*Es*=g1Ó¨ã!Ñ( Q4 вˆ Q²Q4 wrÙf@£d£Õ(k1mC6Ê…òf×(k1mCß(‹ˆmI£õ€FÑ(@£hE£hÜ0å,&@£d£h /UçÑË«5ˆ؈F¦ÈFYÒÐ(E=XeI;@£é4ÊZL€FY` «e-&@£ 1t[£,ih”l K5ÆëÑ( Q²Q€•×(—&4J6 €FVF9‹ Ðhvr QŠz4 /²ˆ Q²Q4 wrÙf@£d£Õ(k1åBy]Õ(k1e€nk”¢Ð(@£h¢Q@£h Q€F£œÅh”läE£ê,˽2sýí»­¥}¸~­,÷µŸIî÷ËsðÆ­ÍåÃ7«s7îûÜËß¿.¹·Ês¯^½±¼2{ï´ŸÜ—¿¹2{cù§Ïn>)ËýÞ×%÷ç_)˽´^û–om¾9W•û«…­¹²Üo=·|x·•Î]Ú¸ÛzëÛe¹/.~ãKKkßyeg5‘;Þ¹Òƒ2rÊú—™"s0 ôÀœY-£@˜i«Òîÿ…ð) v°"å=_žÛ âÉíñå¹ÕÿýëM þÆrâ¯^Mƒxïàì þnëWÊsLÏÄ‹qµ¼÷í©YfMv4 kfÚj/z…xÙh°•M-|öËzý0 ¾??âûÓñâWfúlZÇgÐÈ&ñôq]ÿì >•`z>r¥Ër“©¹Ð ôg‰0Õµ_>xéóËž_™ãKž_™7¯w·õ¦ÞÝÖžóî¨ì]G²" Ö¢TXQr: ³9º…~´PèO‹œÕ„l8fœÞßÌŒSñèøПÜACÄ÷»ôñaÆ9/¹åÏØHí;í.Ü}5 â-ÂT×ÞÄÈ6œÚSŸ_{)Ð 8r P ñ¶ r Þr+ÇM€þÆò½Óõkeüö‘ÄA[êÓßÔRßâIéz&[µ¥~x_ž?Ù¹ôþ­ÍòQÇ>»L£¯B˜a@¼E˜þð­â«UØq¨½èÑ‚ÉðP-DÄ_™ùÖs½ qr§.ЋŽ`0¾//.ÉߤÀ± ó¼Ô{r‡ã\L+z2þðáî6pyøèo?”óëÓ–Ö¯֯ÉE1+5¡lÜøpïøäÎçÿüå¿~»~íý_ìnËTÙš£m5ý½Û:y€x[ŽH²wŒT"I멇Ën~e–t ûðѧ÷Ž(y6î‹$q¹g{[0Àx‹0Mð-i(¯MkçÝ ñÔžz®õ¤: nTCah1Vgî÷çÿôµÃGüjã¾@íþüŸ_’+Jâ@äWk7Ÿüö£½ã•Ù7Y ¤Fi€˜Ò,àZPÞÝþø‹ýùÂ|Ôn·žÊ[ÛtR.­‹žŽŽoË9¸ù—ï>²ÒîÿþËÒòE xÓ »j”V=¹ÃÎF6‰7y~ùPÞ.c#÷¬csf°o¦ºvo*É©=e¥¨[»}÷AA<µ—½hj?ªjú|pWˆï®0ª:] ŠçØèÑÍõ¨Vßò¡@ª½ßªOŠÁDõb)ÿÊÌë8à•Ý€h.G "­î!(Ñ\ìyà»:·&ýó2=î¶4]úÝŸû6èe?±»­W¸>øãî¶L¼•YÙU쬒.–ÖÍ'Ò2b ênU]€iŸ+ €‚xYnâݹ/.²¤r>\"w|s¥Ër“j´,Ÿ³ ô¹ÓÜ=ÂT×®†èzµçãÛ`Ñ5ÿÝ@r§ór~îAkïP®æ¦ _ÚmÂþvw[´ãNÍ;¾, h² ëR ÏøEï>U#’.6caÐúFUé¶^¶Ìþù­9Ù…ôúBïÁ»;«HhÛ„‰Š¦æ[»ÈÝY-Ë}ù›,e¹ÈÖ+÷Wv·ËruñˆÜqÍÕk¾?}¶lä0æù»ú4ÂlÜç•õku•È­¹÷±5—ƒ0Õµ{t΃ Ík†]ô’Qwm"/ß ôb‚¨ævmîâú»è6Ÿßª^/$¶ù„gn~òjë)éb뿵Iùò¦÷Ý5–™PüÀ@’2@//‡ƒY=!vK×+é[sý]0Ñè÷ŽS‹ŸZQ¥þfyóí¬¹˜Â|®lÕÕPÖËF¾:ý±,Wà#rÇ9WÆÆeÔŸË´) ôUSæà‹K@mo„É©½îb°µãÝK€žl>±­»êâÙÎX  Ó\¾Mµ@/¦•û÷¼»w¼~íÁ»»Ûf’¸ó[ŽXÿ)ïoNî,ŠY¦ó6º¤è1¦Úñ·æìѨ½çC™þP´<àö €¢Z Y»ÛøªÚè9(N—­_ÊçèÕ/oÜMŸS‡u‹}ýí[›7–â};÷Ê•%å!+ïsÙO`(ËøˆÜñέê}k&µéÌîj„éæ °ë…09µ×5 ¶öêcÞþÞ= ô¼ê0,e^ˆ2 ¸Œß>Ò¿-ìVÑû0¤È«j+r@ªZðÎêGß;¾µ)[TŽgõ TEJ{X* ƒ×ĈË4úTº^‹,“]êÚ;–£TîÈs\]>Ð̯쮅Š W#•èb¾Yft×ÏUó—ÏåÔAŸ+Raä‰ÜqΕþ-Ëå: ‡Ïµ@ŸBp .Ä«é¦7ÂT×Þß#\ß«Ií^†ê=DÄW½üŒ Fñ€‘z¾­¹PVÛèáªk4«…]RVf¹,ÃW-õ€©äê!ª5w÷R8•ûé" ué'K[s wŸ®’“ÎíxIñ¦˜Nc‹èPZ²èJzY½’Ë{!sg+±$¨!«³=i¦q?¹ë×ÄËr¥={å.‘{suLÊ\HÍVú³D˜é¬=ôZèh„(z°<ÎÀ:«\ÑLûËE«µéþ6NþoG—+“¼,wóI:W–œÈÜÜêÑ^ðèÏa¦³ö$ÐÃG#„wS|·õë×ŇõYq1Ý +Wîø—çI¾3ä‹ÜrÉýíxæŠ,r§5×s ôg…0ÓY{)ÐS(¶¤áVoíìè×.Ê!êtrL.èÈÓÜÁ'+П%ÂLgí%@¿~í͹µ‹£çè/\¹pñŸÿ‚>AœÙ}¶3µÃK vÚŠÓðvPPPPИèmQÚ¢7þ2k½Ï xðàçX£÷@¯.öÅ‚l}é~·uïôn moèþë×da([HÞú¶xv\øìò)>ô×îöÜY½|ðõ¿\Zþ o=2µ!Þ»½ùD­ÛâèçòÄ}¿på¿çµö•Ù×~&;ï-º¼¹ Dðü…‹?yþ‚fqé;/h°ôu[€ådfmæÿfÖìbþÒúüï.­SrÎ’àÓIY»XÈF©þ <øTkôûórT¸´ñò7—6²ýùßyïØj»„ÊUàÈv}ù€`½³úðáÖé¼Ë @Ysÿ5S½€8¥-þà ‰+)Dg'ýÆòëzšlãò7RénFÞ‹%DBë3^ßÏo–.3»|Ó·6å·—Öe‘Ë×ýS@/K×ì>otcYÌnô ìÒâà7xð°Ñÿ‡€¹+3¢5ï¬Je)Ñ5ü[ß.D¿è)ËÍ'˜ú[(è5žpï´­—³û³¯Íîç47÷^У—6®^]Ú°åÈ"·¸dklÒä–iú²°±<°¸6z»lsQ &Ý|ê4úõkõ¶öØî_\üß^\\\úÞ×—0Ť`. RôkúìÝZg™„Ða)ص.=óc µÙì ЈS@?¨@ÓOéòý}êÉ0à6ú,Ø;þð¯êßj )@Ìz,øªÑæÊ·6ú^ý÷ëkô€;@¿´!m­öþ½Û˜†ùÓ@/m¥-#f´ Ç¨¥æ©8ø Òs߃nI×2¥, ÃY„8Ð#ë…ÏŠ–ñ@_\Óžºøõ>¦V²FŒàÕœÛSÕN‚}ðàÁƒŸÄ[7ñwüÇßñ÷(ÿŽÃØàÁƒ¾_ çïàÁƒ>|À@ÿLPPPPÐXÒ€5ú     q£ú    úú    úú    ú     ú sK2ZOOŸ¶NGkÐM Y ÑƒmUñÅ´?­4¥@/Á¾™ Ýü¿fÚmñIÙn‹gùèäúhÕ ú zqD,üƒ?¶ÛJÓ%dGtr@R´jPý½%±wj÷ÐÑÂg¿l·%Äv»-Ίõq_¬KE÷4“¥böµv[".éßüVâ=u>/q£ÚíË/}®õú݆%qù+;‹?)v!ò7éuဘ·øÖ'ö“ôËæÙÓìã–¾³*]kKH[÷õ·¸q~îå™5ÊôuI¬®õk×åJÎ/Ÿ®±ÉMâ^!?ÞðsZFb>Z\úÎ ‹K6²)MZ@ÆÃΪ†k—È\p¬Tùu C~‰u|øˆgdŽh\3J ÆO]™ôÔKL4_{Pý€þäÎÉÇí¶„ëÓtÍiFßœPþÓ×İóñ Ü€¸z ˜Å@Bîiº€Ng½È§.–J¶rå¤ÈSy$| ¦çÃ=½Ã4D¤4h"‘fŽ~s´Àß@°-x=¹ó“;*!P.Àêë"| O~púØÂ4¿•¯³–þ€ðJˆµË{I›«´ž8nˆÖkß®õôÓ{­§MZ€…°C6Ò¥nJªüº+¿Ê)°^¶TËÂÀoé]€ßÿ….ÀŒ žä > 6€~@ï9Ð,ÀWö[€X†x¡Swkܤ° ÈJ/02Ä5eeöúÛå`>²Ïs~@ŠLïÎ=éH•ôb¶R ËjÙ±ê}Dí, Fò<Ÿíw¯út@iïa«? ·ú;Ë•×(=‘«.[Ë%iÒÔ:å—–”TýÕÕ\~Æ’ŽŸî›Tèé–^-×¥BF]@mýÀlô½¦ÀÓ *C³Ý¾´>ÿ;ý;ô^Ó÷ºÝCˆÖÙ è­a§|zwêZr-ÐwnðË#{‚åÃï__>d#Ÿ‚‰L£é§tùþ€¾óÉ/ŽË€òa½ùDåÿâ8g ¢ª¾®Tùu V~Æ & 2©  'â@ÏÅso*  €>E8°LxjôØëI‘iÖiÒ±çÕ=÷§Ñ÷ô˜z¼ŽIiua‚)ibíâÏ¿²v1GZÙǨž^ ôV£¯¾tØ©;W™Ûu4úÞœº†!¿Ý Ø!åÛ=ôÛ'ƒèÏèåV-àb©É;5z{$›ô‚¬&~kóCÝ1xý]Lƒ¶Ñ÷ôÀ¥B§Øj±óÊÍ¥Ë>rôq-S&¿= ²=îK}Òª·6YHª5bk '20Ë `d‰A·@ÐçK•_×0ä§z6§§8ݱOòFXüÙIس溦³ úF@˜ª6-à‹ö­G£’ÂbP苦ÔCZdóBaºé6ÅP¯5ìè­›7çê´CsÓ ‡´Ll&-š¦Öz†4zî`g6]ë*ZS@±< }9-ƒ¶kï–¤î· ®ª€¾®Tùu C~ìø´<\5}©Å.K@9Æ"û¼ù§GAôH˜nìÕÉ & XÐÙ‘ìŸTÓÏ5=ÐO±Wà ³ŒÜ .îÔ—ÒÐ'a¨AgÇ8ijoàÈ=Z)€~êˆk‘²õVÓý.÷nëÞ©êDAù„éÀÞ  ñºýüŠ[4as         Ÿ8¢ø€%Z#(((€~¨t6÷g€øjg^Aç½—Ç™"`dýT=ß òc qÛë *ä^ÊKLÐ(¿l8ïaÇMþ)z>Ïÿ€ÞŸïW{g :ïä~2 _=È÷þ.¡®C´aHuÞ?—7ù§èÅÅØ¥uÜiõWŒHø‘AXÉYíqÅ.vÆ‹·÷šâmôÞ¡7uz£A<ð‚bë•Ï»î¶Î—ábØ@£®óþn~+¥Þwà•ï=)€~ª^7 ˆòÀ²nrqãeÝcÖ6›/YBˆ¬Ì*ð ‹6hƒ G½È³œð¼`{ŒOzS¿b•ˆ‡zž±þAQ)¬²’Ó©¾KŒÌyß©rÚ6Þ’„—Pû}¯ÖR¨2ùc5?¼bó“ôm•¤ðŽ]Â\ž´nT-´ÙŽçy|ïY_”˜2Œ˜TÖ?ŸõÅXîŽÁ§Ÿ†¢×­)‡…G½ Š<¾ÅRKò¤¿á}àvÝ‹l™uƒÛùàˆ6¾RÐWK>¼`{€Žw1fGl~T·€/!0²¿öOI•FÑË üwÍÌ Ü&3¶YÌòÇj~xźòÐ÷4} G”T«·ZbÑ¢ ‘_/YÊ’Æ"äk×£­\“Z~ÈÀœ)ËÞ­²z–-!?¸Ý°¾?yrÚ™‚ñЖ©÷¸ºM7˜™/Veéèm/û›]ùï›/U ïž¡Õ·nòÇj~xźòçϬ0ÝôAÒÙ€½Ž”:°—Mƒ¢§›^q4=>Õ@Ïf  a[MIrLRqƒ"((ŸògV}ŸÄFÌs‚‚‚‚,÷ðŠáÔ,(((hÂ)€>((((€>€>((((€>€>(hj)B‘Ðý‡ä27v¹é<~.XÇQB޹8òŠK‡ãFê=In‘7‰ôÐk!‘ã8­v@߈šÄ‹AßáÃôœ°g¥‘­„~êÔ!ûå.ÕþƒÁj²_DÜÞ·"_´z§öù0‚\ò9c€ c÷@?t ïOÃå›·æÞóuŸq–Ðõr›Ø¦óq¹ýŠròtaý®µ;ã=YÜ\éóþëe~E‹ÁùÄ?åå Èæ.³[B7·‹®ui࡜ñ¦N¹sU~…T€¸Æf/Z¬›?ÿ…v]z5¶„|Í^½£  "Ðë4É3ìÛú|J^׸1J SÙajýŠ ÛØY@¼À¥ý`U§Ýd£)ØûÚ¥ ÖßJ|7’¢N2 OºˆŠ§& è,ÞÃ’õŒä÷ ¼KJò²¾–=1n©±y5.BaŒøRÁ(tMOí­­~I»ý5² Ø–´:¸ÒºòfáÇí°úzêöêÊó9ŸþÙ˜ÓF$â£!JÂPã‰6÷Þ«&è­W9;%pzå~P1Œr,žhÖL0ÑÆjdL3Ýb‹.f·®ªaIºõÖ  ó7 ˜P—g2]«ÔåKÈÄÃÿŸÆ¶•ÕÆ•¥.JnÐ(‘)¼nÿå·ö½)ÉîNh·wY¡&ˆB“Mf ´¡ü(Z¼ …±…^HE8¨& 50ç_Ýf+KäZ¿ª¼…•”f[’vÆ_§m]Z^IgNÔbÍwô‚], 3ƒXr4Pɽ÷g”‰BF¿[œþœ z”êÈé=›l™ô »dðÄ.re£¨Ϥ ¬€9¤7½HÞßþ{BL7 ëËÐÃô båKE§úzé$Ê"¹õm‡{¦Ÿu k' “œ!^·ÝR¢Uj¶5Ô(K#ò ›uôjCOâ}”ÓæLEs~wÂßLfk(°‡Þó¸%–CÞÔ†e¯në…Ѷƒ7}Ô™r…›elоý-(«—ÄŒøÛîGy;zp©«^S¦g)™¨aùº[˜ß¦z{bÌ?⽘Œ%ÚÇ+9£TÏ0rgÏÛ¸´ }EümkaV’.5½vWäÙ z¬œt3ºC¤I$ œFulßå]LØcFû<3¤¬V‹œÑâ{Å’­'!-iµ &•oêõΓ­ÛUº7”vjC£x0B‡²°¨ÐmYö%“=”VÍiÆ•Ý!éônjV¢ýYS!0S±Ž=iðK™´1-׿¹ê‰ÅÍ ÊVAm½ÞG¯”Œ<Þì“ÞñÈÂfwÈãGxÝQš3›èY?ÓsFr¦ÌSý^×_È s ôhÄþxª‰ßðüFùf%¯ƒ0\|œ¦¨íB~k(toV²“<¥¯åKhg½YÌ»¡EÚc:&]Æл%g3n7¡êh…<2첄æe$S oÚy¸WôrY‹¡Mw׈nÃVôgGî«å—GisßG¾¿¬ö÷ËjŠÔ&.ÄÛÙ7²!ÈiÉüë›Ö@šsA6ÓVkîo”æÌ&;Ó}ŸæŒ¢Ô=±&£×†¸j‡êÚ;Ý­}.Þ† ãÅè$´H¿ 6†QÞÚ+k»&`‡¾n„¥º°„úá®WådçÁÕ» 2€€Ý–öžŠ) ­É$GãÖ€$dûi©Zªhdvã·´*œDrÊ!·èIaÚÐGV7Ô˜lc«c®R¦5ÔP#%ІÞVká¿m; Oê·uÞ+õ•(°R}§ÍÝö8½ãA0}nQDXõÂvÄÖ bnƒÑçìŸèk6±Viô_»ØäŒRZ2g6YiÙÇ 3¹˜’R£ˆ¹Ìøô‹D“ÑkDjO)¤§–slºa@h\±KÒdÀDuLHôvÝΉaÔËΈV[~ï˜ lï8Û É€ö§êRŠ[¥5òï2§$dˆÓè w;1¨–a;iõqo½Eßô¿%ÝnfY~ÐöèÏÞ¢eì=“ê·ÖE…èK´aaŠaz°a·Ÿývš•Š}†ÿmÚ7µ M3\¤µ£èZƒ'ik±—SSq’ý¾!õ$³£¿cg{;È_üÕCQ öÌÆ.Z¼¯~§]ÌÓüQš?›(1fà ҞգˆÅÒîóü‚Wwô¢ö¡Š1SèR,gî³¥lýq~àD¼J(ãú=çøK˜«çßœÉ'@«®µž«q>ÂÔ(+þ®Ë( Xí FãfiÉ9„œ<ÞèÀÃØñ$=Î*ôÜp„îŸÒ¡ú5 Š.©G‘ÝK ¿ô9θ£ ëÇ5ÜLãZ!vÿp,19£7€~D¤çb¸Ï=Æ_Â`Y”·PÏ'ƒùn͹×11Ëp¼yÞ¾Ô- e,QÖ¦sv2FoýÐÉ*Z½)$œ B–%F VN=¤ñk²~e-m…‰† éÏE‚‚ÆgôÐÐ š˜+ÁƒŠÐР   ?oüù rjrá LÐèWfïÊb?xãÖ¦ç“6U¥sâIñÑn†r}V ºÆKªIyÓË|…~6µ_™áûáé÷¢ý›ZPÚcø3žÖ¯½w[¾Çëæ“ ô9ßÁòi5p¾³ÏªÆKªIš³‚ÚzÛƒz¸· _ôö!ûè´B OFœúúúú!N9|t Y¸øÊÀ"éø½ñá8ð‚ËY>mçɈáóež”›×í¶õ¸ŸqUÖnËg8* žêììA½…xºh·ùâQ>|×’­7›T]u¥õ-ãÓIÁY.²áÔ{UlÒ žLè+¿o«QHÅD}qQ¼rîn‹7›ÓǸ»"änòäþÞ¸Ïmëî©~´ 5^>À—¤ÜX–7m=•7=},ozrGÞteß«Ý0±´'™âMw·qå 4”|øHÌ’Èï¥Í—*§MR@¿?/¨«³L‚›Ë;>"ÜM1þ—düÛ2omâ]J$¼2#ãŸó€½cÿVþõk2þŸyFÆõòãÓóÛù÷çñ˜$#~ ïš´XÆq)…g,æ6˜¹Li@ 3 Âûäk¢Ñ‹x’Á7$)|‹ÙOŸõ>´Oz ·uñáF]ióž’‘¥‹t¼$ªxÆ:‡b1ó!F!GˆL×UùHmf Gc3â'Uþ^>Ä]šÀŠز À´·¥)lÉ›zèi=•7ìX0H¿´ŽÒÞ@O È·–/U~›xè¤4 Ð>£eJOù€ñïžEëÒ:¾WeüóŽ÷ñ}K.ÿ,]keü÷ôÕíß)?>GC£O‚¬ °@ôk1,·S× åñ¤š=u‘î?4Gë·1Z›¼ž¯)ÁŸ¤€ÞÖÕŸ´ù@ïc'ÙT/Xâ»_Þ±;2Áh¤bb󤇰N¨âyék`”ôUù"€«þ-€«žX»a‚…¤ >ŠºªÞ—€f½ùD|mæK•ß&¶và›Ãÿjq©ÿþ~N èí¥G|¹J¬ˆ¢„»-ÿ,Ný}uû/m#Í.óô=§îIH‚xxNãòdy<©f@L{ˆ0&"Í߸ÇXá)ô¶®æÒV}êIZlP½€‹Ì\8ÔÅ“úáJµ2‹<Ì›î ìù֜ȼ5'Ç£cb@°:/œ’nÊ›ò+L) OCR.ÐûÐÇáùRÕm«}{]^MF2þi«²ÊÞ¾Ñòa1þ} ˜žˆûúêö¿µIDösa£¯ôV«öèb!ÌjmlÿG¯Ñ÷÷VoµOt%e£·u5—CS@ß¼ˆNÅ“E¨ýU@ßTªNíŸìU ÆóZ¼…QkÝö±Áè€ØÅБ/UÝ6Qí[æ:5úµ}ÆîØIXCPÊFoߨ¹F?»_Œÿº@ß¹‹ |}ŤÅ|ÍÎ:È in€’’ÍmôX· ÁA Ùª­ÞùoÁ€’ˆ¨É"qp¼l¾®ºÒ²{Ànûúæ½`*l ´ ç ~…TÖÍp•ÝL'ð{ˆn=ÔCÖ^àÀõP;  WX ‘!_ªºmbk×Z¤^+"!VdüëÁf1þí›–µ‰´<¶x=dÆF/²aa·6z»ÛCàþ€Þ.H€>­ÁÑt}OíŒæcó0Á-Ñ‘í$Gvؾ­ŽÜäz%‡¥ ‚þî±ä¿gû oÁ`?¸HÕ•/-:>%³<ØÃ̺@?¨^ øRÑ>ìŠ0æäŸ1 F* ‹öÆEê† päh.eÜÀ¼CiÀ:/f“:Öä\ gù¡| )˜;ú“*¿M¼üè×ÈÛm ®š> R±„¤ÚDo݈TÕ·nAßTÆ¿=b­ ôÖ¨Å9½ow*ôA¥([#C/hT H?°³úcðú\Æ¿5}䘉¦ÁBý¹&Œ'èì|âhXá’á|=`”#%¸½ŽÎŽiˆg‡Áþ#|ÝÐOñº5¹p3ÇÚ¦ƒÆè,o ^Íxý˜«0¹p”=IKf}PPPPP}PPPP}}PPPP}ÐWû©Çq~ðàÁƒO6ŠV«éÿ†xŽôrà>å³¾ §äX“ƒ‚‚&•†œESÿo„Ïúapò! ƒ|2øYáj Ð[¸·›‚úàÁƒ ÷A;°Ýþǽýáq‚Ø<øäñÑœtZÜ.AuŸ”ý     ñ¤j$ÿ¡ý‘°³æmIEND®B`‚pygtk2tutorial/figures/celldatafunc.png0100644000117200001670000003756610050344475017506 0ustar finlayfcf‰PNG  IHDRÔ¢'Ùw?=IDATxÚí?hdG¶Æ6X°/èÀ`7Ѐ Þ@40ÁZ<ƒWxƒ¼Â,áÀÒ:°† fÄkdƒM¯£5øÑv0H ÒFšÀÌ8ØlhmðB;0HàR`æ¹ö÷Š{ZuëvݾÝúû} ƒèº]OÕùêÔ©ÛCµåÑ¿NÖ¬ÙýëÔ4ÿ ‚ ‚ Â)ÁÈösæF. ?÷`a&üÈ’]¤ýò££±ó?o®¬^œºòóÔôRû³ë÷÷$%óåÖº¤¤¤¤¤äé•°GÇ×y(ÝòØ Ããÿ\˜øòÿPèßµ_Þ˜¿sgmlký_lÌo­ßý~cþþÞ?m­oùËý½íñ¯ž¾¿×\üæÙíñÖæ·Wš‹­Íï^mm¶þû/­Í݉n¶îNì~º;±ã7œÜÿrÿÆÁ½ƒöÁ½G~Ùë$¾SÓoÞ^•”””””””<{Ò_øÏÚØg×WV7æoÒØ9ÆuJ?¸GéNzúk<¾ÖËK…(Ìù¯ßdEz¹=Nñ^~{%«Êƒ—2ùÝ«ÍÅöìr^þpÙ~Ø?âûÆß»§¾u7/u²öÆß—ÚÓ+oÝ­Ï–O}ý]—úövÿS_»Vœzµ1ÓºÖª’º²š—úç7\êõݼÔËÍn© 3ñÔ—_^˜™¹y0¨ÔwžÈOýÓ§Î,̼óDc§|êŸëžúÞSåS/ÕIý`,–:ÓºÚˆ¥þá™î©N¬•O}áÉn©KíxêôJ·Ô^ÌK½8õücUS?~%žº<úñ+ó1¥T¥*U©‡× wF¿šac¶Û_hŸ#v×: ÆuÞJ'7ëý }½GCyaèý ¾ÇKyž¿þî飼.u”7–:8Ê›’:Ê;7RòŠ‚ò^ª‹ò*U©J=Y©nÍÉKeåÙÁøâé<Òi×y+Ýßÿ÷øzÊëѸš¦ v'~ü[Uâ{Þ(¯£­(;D8¸×?p©­NˆçFŽÞÜò.ÌœTÊ[”§­Çé å­îåUªR•ÚßÔ|ÊË:³ –«xâ{œŒ«¸ôËÍ+?_n†r²†|þ±PNÖÕK§í¶ÜXÛmé)mÇ¥;Ôy‰ÍU…èŠØØª¤ @gw®„“»e‰ïÁ=WÏb¸˜’GŠ)o¯„ø8)/´5#¾û7 ;¢¼eÃŽžÔžUÊ[‹ò*U©J=Ý©¬WWù«·ç¡Ç·;ãê/嵌«¸ôÞ(oÆôSzŒò¦—žK|]2ÅÅ”×vA åµÒV‚0ä*ÄwaææA}6O^ßõf»>à㣼.5£­Ä×µ±ZØÃ (ïYŒô=Ê{#}Gy‹Reª•ªT¥ö3Ò×QÞÆòÖ,¬ã ù¡EŒk”×2®Þø^1å-vqž„Òsˆ/7ïH ¸)”w²ö“__‰ýU‰/æâAôÿgßÏ»r÷o@|ñDú›†ÿøâþž£SÖæ¿ÿâî:Ÿ±ýV¨ú6ä`eõö'[ëû7~nþúÍÿ|·>{ëý­õúìg×7æîÙÏÝ'–òÚ|;wîÜߣV­ÍnîN8¢ÖI\B/ŸCqø9PŸ•UW]nÓå6]n!VªR•z.·3®AP^˸ªð½8ÇùYµtÚÞ_ÊKéQâËk#bP¶ Š)/¯œ¨æñuž]”³‡ìT8ç彿÷ͳ­M¾µ²ê¨çöø·WÜ+0©…F¸o-z|­9v%ºž˜BU-õ$õßi?ÜZÿò—íqnácwÂ~Þ~èúúH=m>ÍÅ/µ6©›¿hø¯ß¸žÏ"„Bâ‹O—ùÜõL}Ö"4y~¦åZ§ËmºÜ¦Ëm¢¼JUªR÷r[ ãê/嵌«¸ô0´ ¥ôØ©~ÙÒmÛûEy)=—ø:ï ·(êút²ë)ïáâü• ý‡¢u_ŠdJŒ¯§Y`ÃLË#û>9ÿ¤£D žœ¬½y›À|¨kc»®¶ÞÇLL­ ŠÈîÁ=ÔýRÝÉâÏ3ÂêK Ÿw5÷—Øèïs‰ïÊê;[ëþ!Ÿ½µîˆæÜˆó:oÌó¹ Éoìøc—ò3ì¡\êåf·Ô,Ò7Lµ„¸¿©â÷žŠ§z=ÉK͈io©Ë0BœŸŠž§:êK…˜æ§â!.N…>–Mu„ØSϼԌ˜ÆR!¦åR/NA—{Oõ†-Lu¾¥*U©JMOeŒÙO|Éâ›Ê¸ª“Ýq—îYË•žÎ÷úË6ÓÛ!¾û7:_œzq­7Ê_< ÅÒÒVŒnL¢jö»[ëÎ{j=¯þIGdñfýZÇ/Íu¥ðLX"Ó0Öª~NdpHX­Ç7ö¹-’>¿1÷ûû{Ý~1åö'óPgÛ'SÓ·M˜GØÛÅ©ø¿‹R¯6\Ôu~ª£ËxL“êèc^ªó[³¥ÉO]˜é–êô¤¿©øâT<¦ù©s#ñTGÄ»§nÌ—OuD¼÷TèrùTt¾[ª3NE©[ëy©žj+U©JUjZ*ëUÌj@ví'ñ3®•Õ_qV£œ“qmìÖûkc)Œ«¸ô0„5…pS‡ê¥ÂÁZ@|]BÙ=G•JÐøNâëŽì‹eHC;ŸA½ÜA¿ýœ}ßõ~_g˜=rÏ4]t/Ÿ;ÂwµAþ„+„%æ…äS§úù7?Žæ}„±ë·âr;ŸíC)œÇ÷þ^l3àÃí³ën®Î¾¬,Nu~ñâÔ¥v<Õm3ˆ]Lªë¼ThzQªÓ·xÅRYÚÂT_>ÈThk^ª#ñUR *›Êæ¡(Õå¥:ßKªßôžŠ·&/ÕQ|¥*U©J-“j]¡ …òf#žø1®²´95 õìθRJ/ëcîoéƒh{ñ%™Ÿ€+ëfïòâî¶Ä—ãòbi‰ïRûƒ±•Uw±ìþ^(!»|‹+k¿Ö÷Óý3­·îv^)CAýµ0¼6f¯šÙ÷Høš]ÈÿO­£Ý‡Ÿ·ž]zƒP„­õ¯žö1¾®[ëEùÏ@¹Êæ¯ë¹oÑD-sÙŽäà[aS‡Xª¿Ø[ª£ËƒLÍF¼\ª§¼ƒIu¤¶×T·¤æ§:¯v,Õ…Ê &/~Q*T»×TG[ÃTNª¥º°‡X*â¼T¨£T¥*U©‡× wFçÎâ6ÔÙý0¶S̸z£}ùëÆ¸RJ/VÑßÒ‹¯ÍõÖö(ñ¥©ƒˆ, +‘G|Q”"iih10±.þÕ‡¸+k~ç.œù°‡ù/~º¿çLãÖ:×ÝüÅ2w%âh/Ÿå{p1Í'¸ñÏË«»+ëþž»šÆE(<ŽÅùCGø–õjCî!¾cxúö° áð±|j}¶8ÕoEŽ2Õm-º§:J4ˆTHm¹T¶CÅ©«å¥º·Z*Ä´ß©>”¨|ªÛÄRÙtK…ç§2‘—êN”ªT¥*5=•õ9n´Ä7ƸàEe)¯uèθŠKïp;éÛU¥ô°Å>æÊ[@|Ý×(àh(/äÌ_hDŠÄ“Zãkãq‰²õ‘²n×…j¢Ä>BréRý¥4Ýmç€Ãׄ²ü=ýµ1r?ï|Þßú÷¯Z³1ÁÁ øØ²œ¡D±r!µÔ¹³—\‰žTîO¾EÎÇ‘êˆK¿S³Í@/©+«'3’W>Õiu÷Ôùþ§:š^œêLHÙT7O«¥bº”ªT¥*µ?©ñÕÛJO|“qÏÒ#Ä×gz4•È#¾(Mu Í:©ÄB|ôµr^±A¤âoSêIOuKùѦ6vzMu<¥*U©J=©n½rv0¾ÚO2â{|Œë|–%¾È£©„F͈ïRûÞÜZ?orcþË_Z›î³»ðö€ÏᤦnÌ+U©ýMuÁHJUªR•zRcVÒßãb\ç³ô\âK¦Ä^ ¶x§k‰ïò¨»Œu>eÆÐØ9Ïý )))))yV¥'¾ÇɸÎgé9Ä·>ûÁØòèÑKK|‡'‡Gý“”””””””»îi.O†ÄððäO:šësÃ{Ê“ÝNŠù““5K»·Ç¿üåþÞÑx|C97òÆßçFh…TVRRRRRRRòDߥö̓¥vZôíw¯z:È·:=¾yE^ªÿóRÝÅÂN¯„Ä·> ávþãyGR­ÙvÞßåÑwžXjÛŽiîQ†:äyÁ]ˆÈÑÄ.KJJJJJJJŠø‹Ç7£ƒ1¢95í¼³øhCâKX <Ê•Õ_YYõÆ©äòh=¾.”o´TVRRRRRRRòTÅøv^\Kñ ‰æ¥º»þE¤oH|;ŽÔ’Á Eá¿›ò…£!¾6ÃF3KJJJJJJJJžš·:pM-þV÷d1Ñ„žú0w}-$¾­Íï^uÄñ·olOMÿñ¹©iõëÉ4t³ÒQL®²ùÏõ$4ÂÖ‡VÄ^¾Ví­®&þ­?^ªS» ””””””””<ïñu$w,”}/ïd໼ÛÁRÆØ[ °„CØw5@(©sç[ݤV<9YËÞêàIüÛÛ 3žÄ~;D?ÞãëêFƒ(¯¤¤¤¤¤¤¤ä©$¾ƒ“ö=ZIIIIIIIIÉ3F|Ý[ – >O°†VRRRRRRRRòL_(//&#<€€ ­¤¤¤¤¤¤¤¤ä™ u”””””””””ñ•””””””””ññ•””””””””ñí™øò¿¤¤¤¤¤¤¤¤¤äÉ‘}&¾C‚ ‚ ‚p‚Ñ7â;5ýæíåQIIIIIIIIIÉ“)E|%%%%%%%%%E|E|%%%%%%%%%E|E|%%%%%%%%%E|%%%%%%%%%%E|O­œ¹y°²:½òÖÝú¬TGRÚ+))))))â{f%=pµñáÄÚ˜Z§:÷Kδ®µê³ó_ü´=®¾:9­X»ûýö8£#S!))))â{f‰ïRûãW6æCƒWÅè6¿{µýpkýË_š‹aêÖú¿~Ó\|ôè—½GBŸÜÜÈõݕՃ{íG–Ú½¸6FMDŒRê<¸Kל¸|ëîòhk󇛻WŒu¶Âå¶6†æÜû¹ypïÑÿÃéÉîÄÿnìߨðRûa¿´WZj¥‘Æ£ÃH¯¶L¯¼½]ŸÝÿæÙÖ&ý¼ÃiEcçÎû{½ž¼óÄʪձƒ{n|ÛÑɬŸë³Ÿ]ߘGv'v?Ý¿Á(‡§ ±cÿ˃{eë¹0ãÆ¢ýðÇ¿íN ÔúW‹•ÕÛŸl­SÃ…™wžhìˆHJŠø&ßê/>ÉtªŠÑmìüã‹û{•0Fþ˜ÃpQÞÿöJkã7ÃV‰ïàz¬zBYîï}õtk3Ôr[ûüëû{3-G+}‹U¢Rû¥½ÒÒP2:ôÌñ¶ÊÛÚü÷_ÚÙx@Ñ ÁË£ÿóf爤Hƺó»ŽâÓ^¨°ÕåQ7î^_¾K­B‰nЊ²õ„.¯¬ÞzkÝoÃÜö ^mûáúßQêý"¾’’"¾=z|íó)è/åµ~²NŸÁ{O9ÿÍ¿ÿòëbùŸå²Ó»E¼¹èŒ Ÿàù°Þ¯ÐPá Jñ¸°˜’ƒ%1x•00퇮VøT:ýpΫWŸu‹>¥‡¾4>Á+c[ÁwcýÀrQ [‡ÿÆ{ƒ2ÓÆ<}âŒu†ôX¢éI›;,¶¥ÓR秉›–”rm«1‡Ôoµ˜÷‘žÇoDþôýóŠ‘?ÒêX±æÓK ðÿù/G¶ªk¯´4ÔRF'¶ˆmfxÞÖÇ’¶²Úbµ"$ÊŒyÒFWîÁ=;‚P[O³DéŒoxNkuœøÆV?7šŒ Û¶ô¾â»”hÏ:û$«JžVsxÒúª-ñ¥ßÛŸ’’’"¾9ËA ýíå…ìBb0çvQf¹ôËßa’ ‰±Ï§øÌ %æ2~‹ÃK0‘x•0Àö(šSCúbJá‰”ë Œ_ÊÝÿý‘€¼V;ÓHnžâ¸OXúù|cÞÕ–Ôû{™SAõÇć_ñÑJ¹¶ÎäÉZšKMBâ éXškM,d×÷˜ËŸ {0±ì͇G‹<ÅÌò„†Ô³¿çÅÚ+-µ­³+eDÐ7;¦Þ{êô­7m±:Œö†¾v›?#Ëv"ÓáýaYþˆ?#ß|BŸÄ|Ÿeˆ/¢ú¤SúÊjˆm»ÝºØYœ’'ßeC®ü¶Õ<ɹ :),))âÛ%Æ7F«S^,È.2¶Ûã¹06±,ñ…:³Œ†Ô§Û±©3½ö° 5ì$Îó9fÛb_Úa¯†5QÿÝÃ1‹¶Õ¶”p‰oì`ð:¢f‰mÄTXsÅ·yŠ{¶ÒË-n5f¢_Wgoìm{‘þPÕ™ô=î>ÖéT&6Žø«bcTø¦h¯´4ÔÒÞB,ȳ³E½äË!Ü,uÆÚBë ŽXgÖ Y©B|éÏðü-½¯X±ñÝBaùÄÝö¸×êäâ<Ù„'*Å¡ v?‘`IIßÂblÕ)/ ‹ "^¨Ø2í="Î ä-âåˆ/ǦÖK”.1ùÙAª7N–޳¤²¼â©²G±Å”"VgZ©²q{±BS¶ÂK ©?š™ooc\‰˜^nq«}4¡3o!ñõäÒõ¼ò°¤žöÊK£6-}Œµ1FLmˆNYMHÑ^iióš>²è Ûè54« ñíæñe¼{”i‹Ý¢„«(ß²«ýCPÒ‰¯%ß1*™ÞWÞÍá|´lÃìø²õJÉÓó#Àæ¯É£ŒNVùý-ÉÁ,ŽnDBŸ¢¤¤¤¤¤ˆï‰&¾P^Áý¡¶;òã˜[¾Þ³'¡¼k†?!)))))))â{îB$%%%%%%%%E|E|%%%%%%%%%E|E|%%%%%%%%%Ï-ñ}$‚ ‚ '"¾‚ ‚ ‚ˆ¯ˆ¯ ‚ ‚ â+â+‚ ‚ ˆø ‚ ‚ ‚ˆ¯`àú°ý_ŸWoÒyAAñ=³ oïï}ùËý=õÆiÇíñýf{üô¶bÿ¿rw}w©-?íXjß<9²=òúÈv}öÉúlouhm~÷jkÓj&:y©þ܃Ku()g ”kŸ¡gÈ¡³žîù¹‘7þ>7R[®ýþ׿ÿHÆý(·ph¥0/dIá\ß¡Ê8ÉĨ¿K'¹­ÝþdmìxÛ‹9¡>ÍÅožm.†Ï´þp³ý#´cÿË_ÿþ#O£/0e²ueõ ò1ÓzíÚL+ü|hèñÚÐÐòè{O-îNüø·Ý ˆ-‚^:8—n÷Æ´ ¹ì—ŽA='kÏ?6Yƒ\Bæ ÁóÎä”­Ã…ág>º0Üù]§™õÙÆê³Ð\7šãlÜ3Ó+/¿<½n`è16-ŒχypÄ—<©›ˆ¯ œ;âk—˜Á=ŸâÛÀ¯z§XÊ/Nݺ8…ƒÒù©ÖCvµñööÕFléı²úÑ‹å{5…ðŒ5 x"ñá)áó‘íß¾=²ÝØùìzc'ô$¥N<¬»»Ÿº-–Ô–5ÖÎ;jn?(…VÄjµ6vëýµ1úO(1h¦Ìúô™k·LÔœÿcõIÉ“~£>¶?AÄ÷ßt:Û/Ê mÅ a˜í’çšlSrH÷~a°1¨ƒóøò ËtsñÛ+ÍE|xŒO’J[ €ø?Rž´¦Åú½lM0ð6B.$é%b>-ÕØ˜¿sgcÞkÚïRz¼/q….3Ÿ`<0Kö:[úhi.5 ‰ozë¼¾¹:T`˜1½ù¢}ž·y¢E|Þ›Éì¯ÎK·{ÓmK:½·¾»¯Ñj‚ßH¸zö¦cVó¡ì‡PcÇæ>LMÿñ¹©i4ßϬÃeA”-ù&·Xƒ›«{ÐD»}¢\Öyú<ìâYŸ>sé´×nACâ[6ONch…H° œÊßµ­Ny-ÙEÚ¨óÉÏ¿ÞZ÷Kùáûée‰/Ô™¥?$1ƒ ¾vçyŒ¦ÚJOîIÒ.дËn¼ê°?&$eëfM>DEŸ±f€¾X/‘ŒöyC’•å{>£/Ö—‰‰ ‰ozëÐ%¾›¢!é¤c8w/ÿy/¢ýÕyév¯ºíÆ®·kXäI†’®c–Pæ¥Îºïi½#¦„IÄæ)=Ã\#ÂB’mKä[V÷ ÍV?ýçΧK}lž)³>}æBôà”ø–] :Ið;Oˆ "¾§ôr›­UuÊË¢ÀBÀñ™¿}Ø—ÓéipOæÕ­ñe—_Å×[–Øš°Ô²¬ã?%¦+ýI["žLé€Y £BCr^¢=¦ÄpDËBDlðI迱°þμiã ¡=$¯­gH|Ó[gMr í•øf9ûƒà"ãê{¯åÅÓ÷Wç¥Û½ê¶%¾‡¯-曄ÆÛ~è&„¬ ñµmÏóøºÙz”Ñ Kí<ÙáŠÍ·¬{‚~@3©yç¼vZMìlèÿ¶:oÝ>°äpTwʬO™¹é:Ñ™²«õ·áy½EW ‚ˆï±½Õa××03`PvÉ–[/…]ÊmTV:ñeéÁšÌA_ïÉüFÝ<7ÝŸì\Ö³Ë@䀱= !9([¢ N`qçs>Á;ž®îñ ÇãMé!ñMo]§';p¯N|;³–Úˆâ7'”õö¦óÒíÞtÛ’æbßžm‹ÝêÄ¢“Ë蘫O<Æ×­´¶Eœ§AO¡àl'R6l:™mM!µlbsR†ý@‚½ç5 ŸH™õé3—RBÙIý]KË®´‹Ø_ÈîI¸$*"¾'˜ŠÐ¯c¯þ\m\k]m°k·ÇmÖáo.çG‰±tz²åòŒ])öSöFl>žÐpbÓŸ ËÅС'&fb˖ȰõŽ„$ÃÆDÆAŒ¯3“þª 1¾ŽRŸ0Æ×öª§®DŒtH|Ëö<4‘ËvÔÂaÇô-H„Ã~N©3³ÀZ×Ôʾt)¥é:/Ý®®ÛŒ)þõn¾ÿl³‡Æ²Ê±ò„„¸¬Žù·%dou@—ðÚÒ Û'ÔÁÎ#뛤n}¿qÊt’þd\¼3Â倯”¾µÒÖ“uÞ^PÃ'^L™õegnL«c1¾ÅyúÑÙßžú üg¬ð _¶á3f™¶1aáÒÉ"ÎQ¦=ŒãIѪŸäÀúª1Û¶E,÷–¥?ÙÙWYð@왘o)½D„pØb+‹”÷oup¦:孤⣂jرˆ½Õ!½u˜U§ÞéXìnxLßbà™i£–ÞùUÁÕíAø*´ê:/Ý®®Û䜢ôš‘uu€n¢Õö”£¬Ž¥¼Ç7|F¨!vfN±mó3ÔÑh<ÄZ{"‘òÊKú–ö’'ù‡á)³¾ìÌM!¾éyŸk ‚ˆ¯ˆoEðfÓìà8åJ8?ðÄ7;~=iÀd*æïl€qL¡V‚ "¾"¾]ÀþÛþ2”_EÊÁ¢pž¶CÎï‚gë$ëš<ˆ;޼— |çŒ ‚ˆ¯ˆoi@yýK˳CpnòVy%™p–ååH—€Óø»t‚ ‚ â«PAAAÄWAAD|AAAÄWAAD|AAAÄWAAD|AA__AAAÄWÄ÷ÔŸJÖ/6uü¢ŸÁ4÷5ÇAñ=ï`¼ô agŒ¬•çAŸù­ÄÓÛ ~Ò|©}}w©­¹/œ9¾Ô¾y°ÔF·5jÇMæ>»ÞØ©-×~_[æ7e‹?ññ=•ØZ¿ûýÖz¸èôfüZ›^jm%cÐ&<ÄÂÌ[wf.ÕÇÿy©^üädí…''k+«¿²²z¼&dcþÎùËÍ+?_nòÓÖÔ„eèrsâÇËͲ#u>‰oq/Ýßûâ§£ê“Ø¼‹Ãùíëíñ¯žî¤ïä65ý‡g¦¦ùÙsZ1<9<:Ó~øÃÍöCýû_þú÷yô>°åÑwžXz¼64IJë—og¨'½’!ß²ú|”£\v~1ú3­×®Í´ÂÏÑåÑ÷žZÝøño»h-¬’:¸¹¯9®9^èvrÙ¯¹õœ¬=ÿØd ’Çf¼1ïhMÙ:\~æ£ Ãßuã[Ÿý`¬> ­„p3Öž\ºg¦W^~yz¥s#ç>§V¡äyZa{€Ô݉ÝOý32¯¯œ åsßsêñ-»¬ôw²žžÐ+ÃÔ½85vëâû?Jç[¤ZÏÐÕÆÛÛW±Å‚}çÊêG/–©£È3v!`š±Ü³3æó‘íß¾=²Íî3ô¤<‰genäõwçFšpôfIFÌ„¤”ÈÁÓpÿ ¦Ž²Â=·õ>Ò'é½?o‹5yúñu‹f¬EédˆOh)Ë:ZDK©?þ*dh0È_—×F×'SÓ|®SŸ«´4¬-#Bmñ{|ÓõÊúuÈighñ¼‹Nçµµ†zä S9 ÄÜ×ׯ2ÇÉ =Oé´Ñ×*ë;.e皟Sùý³0óæí…ò䔀V[úH`síúC Ãm¥ÐŠX­ÖÆn½¿6F¿÷IsñÛ+ÍEô“œ…æ†ÔÜö[åØçé+}ÂJ[\ß3HûEy¡­,Äá;Ehnh¨˜<ä¾²(cHçñåLß‹ “ßNoÚ‚`’§ÎÕn® ñ¬~…9\DÙ’or ÃB°yë6àŽm?ðC[é¬Ç7}Å£')fr6H°ˆoj[òZ²‹Œ:l­þõÖºŸº‡cqÊ_¨3S=6UúK|1Ö´³X`¢¬ôäÞ-(éOÚIK»ìöÀ{ï¿CR¶n,öP…€±KÃÜÈŸ¡V¾ÄÔ¸7J™R¿ô¸šôË(¢oÅfƒ~ð^P+2J‘~¬–ÞÒâ²0<˜–ø¦2sŠï¦Ì”tcl‰Bèñ*«!éc]vîkŽkŽW›ã®z»„JMЫôö†€2Æìu˜?Û¿½qÄÔ„£Æ¸°æa !ɶ%ò­â9ȸ‡g¿V·Y£®6®µ®6¨³‰e‰oÙ¯“»íÓi'Á"¾Qš[ò¢((Ç%þìaFçÎÒ=™W·rÄßL_oY£hkB¼S”=e(YªÒŸ´%²ó¶‹5ËP šô™ÒvàHŽÄÛà£NoPwÿGèÌ›¨îè—Q´ŸÄBŠb¼¬"â›ÞÒâ²ìx…õOeü7é$¦Wâ›ål5$fx|€Óãµ¼{ýûšãšãÕæ¸%¾Ý£™™q¸ ›x^«_ÛcyßìÍaP÷a;~hÁùVH™¡aືX7,ù.ö‡¡>v«V–ø–]ñ:C2œ§ß†bö9-â{*ƒÊ‚åÌ„açdI°Ý•Ú©Ërlc|S&ԑ隊A_¿ÿÎü%ÝvêÝŸ´°—`Èå#Ü}†&¤l‰öh’ Ïç|‚ÈËÚîô{ñƒðÙšœâÛ›Ç7, £Å(„õOåNÿGvà^øvg-Mײž°Þæ¾æ¸æx•9n7Åþ?;¦vËW–èçÍ57.ñ_gyíÈâ ‡žBÁÙV¥l\;çf¶E‡ò²Yй·,ðò†å¦l¸á^=¾ÝW<È.µEONÂEXßS–†ÐŸa¯¼p¨ÁE7{¼bÕ×ßTy¸Éï—Ú̋й¸e=Ì¡ºQ´QSìéíB@°ð¥?–k_!»V.©eKäèÓ_dÉn.[ãFÈaù–M·èc†YnìQ»ÿs‹¦¿¶EüŸ3lÔ¶8þ~ ZÎ^‘«ÔÁ®'ÖIÝ:¯…es½B?½sÊå1-~ƒ5ïNëmoëI8z‹ñ-^ñüÈž²+â{‚î ýÅ7áí´÷f>SJ{YÁFb…Ó‰IËž=|áIÍ¢ŸFÑNZ¦¨m‘¿0‘Qô'cG‡±gb&$½Dyxìo;0y5tã‚Éd¤ü;>ÝX°×ßòÈÂ]öÆ·JĸZÅI"¾©-µy’Šoku2VÿôQfìíõðŽsñ¼‹p»gb¤V„oµã¾ ­úÜ××ï×§‡SæBç6ƒV¸±€n2»íiOÙ¹–òßð­ áL±v™–B7ýx9ÍÈBFíÉLÊ+P}»òÃÃ'«'Üj™CÙ×™¥¬x)~k_¡ïàžÙiÊÁ„ œ7x£ÞýµAÇÌÉiŒ‡„ÐçØÅ,Añº€£+ûK0P^ö¦ú±AAÈÛ:Ÿ“ˆu@ó]ó½_³ÝFgáÝ/;ïîýÜ<¸7Óúó3-t›ŸO¯Ï~8QŸíu¾{µµig+óôRý¹—êl8o¡\û =C[k?,GêÖdeõãWVVyÝ(Ûö*¥‹ø 'b!®¾@/¾óÄò(&‡éá—·„µþp³ýpmìö'kc¡ñî¯!¤ûùîÄÛ˜šþãsSÓÇ5Oš!,®a؇§·gRrÞ¿±ÿåþ£—²-e6Í´^»6Ó ?gÆ-¾÷Ôò(zÎŒ£E˜RRû»h¾k¾¢gÐó*ä²_c훬=ÿØd 2 A„nÌ; U¶†ŸùèÂpçwÝ|©Ï~0VŸ…æB:täž™^yùåé¶sö»Ô*”1â›Öö^Jñzܳ²_ wó¨éÅ©±[§XîY¾Eªõ]m¼½}µ[Ø_®¬~ôb·Ñߨýtw‚˜Àé-Â(²ßeÚlÿöí‘íÆÎg×;ý2„ÙdhìÐö²u°ùãåòýé ?&6g9ë·,Æú¹·Ò¡n<ƒg«JxÒ aÙ:£EzÆÓ¸*gÎ 1Ÿ {,ëö ÖŽfÕÒ\hMH|Ó[êGÜ-ôØãT Lo-e|yÞæÉè”qe=¾±u@ó]ó}póÝ/‚Ñý|ÀÎOô]{›wv5{Œ •Í?½Õhˆ%ßä†1„˜yýݹ‘nvÙ­„l½¬_™V  vóß²mO+=u…¤DN¨˜S½‘`ßSOv‘áNÝ?ùù×[ë^MßÅ.K|¡Î¨uh°‹÷Ü^‹Rc³XjY8µÒ’~Äü9„¾éuè4™èìU7FLx¿/?ܶÿ{+¢V¥þ6‡²GŸeKÄ(ú5·dÇ¿ÒÍeň—_4Ý"[ØéñZç _}Ð|×|ä|·Ä·{t8³‡nBòª_«oy^O·Â„^ÏâV“ß²n,¬3³5 ¡a®áC-žk–|[Ïqú¥Fƺ·¶ÇJ·cÔÛFsÆ™]-â{ŠÁÎÌÄ`÷cI°ÝY5µ<éÄ•bgúKRdÓï[OIl§3{ecþ˜ŠLK»ëM¯Cº!ì$^Ù$c§ª—Þ¯ú§²%r"ÁÂq·qôß0g Á!ñMoi§?#;ö­N|;}³–¦Ï¸²Þ¯”u@ó]ó}póÝFûöåpûW¬-ióÎYØxœ«³È6Î5¥Õ±Mlç<ͶëP^·bn¯NŸ®ó³Æz›ÓàPvÒôìRlzÛSJ/»BBvɲ[öò¥ˆï™"ÁDùy»¼º sµq­uµá¯YdÇ(véoe>ü²Šî‰…Ë3Þæ€ $_·0±\¢îöhØÆB±S·Ó›ö²œõ벋?¢uíòo©uH7„vËQ¤˜Æ6‡ê¥÷«þé}˜^¢}’Eß*×ÿá®=¦™y Æ×™ÁIŒ¯#d”ÆøÚVÛšP·ø–m)4/#5aÜÃãÚ2-uÀ b\ã3έ Þ¨¸Þ Vö¥E)uH_4ß5ß1ßÑsÎÒ7À”ˆ5ÄB…„¸ì¼ãýöÍh5þNZ”ÞjêÆfÌo&³yJß²÷årÀWJ?[ÙI‰·îåý!ñ·:to{zéé+¤ý^È®ˆïG¸ÿcwÈĶÓÛ›öL±ð3ýlìZ¨¸LNŽðì! OúKEùÇ ÐnJñïõtù°#ì|¡›äñØúû %nôË{hâ§t÷:¤B{¸Ã2·ÞúÞlÕK¯žCÙ>L)‘ð%\V¯¬&Ç4³øhÑLy«©øc0«¶±·:¤÷-Zmïþ‡w–{k)τǠ6ð#|“.u`{7 U×ÍwÍ÷AÌwJI™–¢ymwõ–1ÓíÉOÙy—ò.Û²­FgØÊúUËé 3Rk5'†¼¹œîØñM‡qzé)+dŠo[ÄWˆúÃìA[Êá‚ œgxâÛýUAÇÌCoo„“t;Ü( ‚ˆ¯phåöjö_ ¼ìASŒá|oOÆIž/ÌîA¼Ø_NM ßM$"¾B ¼þµüÙ/÷mÓ_"ç P^Žð 8É¿°%‚ ˆø ‚ ‚ ‚ˆ¯ ‚ ‚ â+â+‚ ‚ ˆøŠø ‚ ‚ "¾‚ ‚ ‚ â+‚ ‚ "¾‚ ‚ ‚ â+‚ ‚ "¾G~ÚW¿#œgh‚ ç‚øÎÜ<9<:80²Œ2#~¼ZwpïçæÁ½™ÖŸß˜iñsèü¼s}öÉúlouhm~÷jkÓê*£Ãˆ@(9m \û =CõtÏϼñ÷¹Æ¹0óÖÝ…™þnêÂÒK·XYýø••UrcN‰¬B‰/ úkIpñµÙGÏÞ¾?\þúëë"·µ±ÛŸ¬o{Û¸Ù~H}Xp1i×݉ÝOw' ÍÅožm.®ON2ñÝ¿±ÿåþ£iiÙ^…jÌ´^»6Ó ?z¼64´<úÞSË£»?þmw‚‘¥E R7 ¤íý£\…\öKë ž“µç›¬Aï hàywhX¶†ŸùèÂpçwݸÔg?«ÏBs/tɇܸg¦W^~yzåR}üŸ—êaMÖ^xr²†Îó|H‘A|ÓK÷l÷]Z!â+"¾%üø B_ËôÅ©±[§ðOÐ:¾Eªõ‡]m¼½í[.jøVV?z±|”s ð=Ÿ-úx¡ðýàáó‘íß¾=²ÝØùìzc'ô? õ¡¬tOq_ Êr!¤tÿLæ¯ªÞÆ8Å)Wr¾8õ»Ï/NÑ"땉y|Óëi½Yä´ºZÜ«qºà¼¶ÖCÉ8ByéÛ2‹Bÿg´½_mäyF<¥æŒ „ÒÖÍæ\Vë¼våÓÄ…™7o/Ì'[ |œl*xjË:lû‡†[J¡±Z­Ýzm çJL§)뀵&—›W~¾Ü„¤2^¶OʖΖŒ6Úí™ý.ýF}l ‚pîˆ/´³› ¹¡yf¡$‡t_¦‹…op_ža n.~{¥¹ˆÇCÂBÏ“¤ÒÌ0Þ…”'íA9Ë.½Äâ[ÞKärÃ0c­/üíw•6ÆëÕK,}´4wcþÎùø¦÷°×@g *°”+ìçtÏ}Ò8ôŠÏ{3ýÒö~i»%Þ_jkuÃÓnWboZgç‚÷—gpG;64djúÏMM3ü\;\DÙ’or‹…1X̼þî܈ÕFh¢ÝlP.¶€yö@ñ:ÐiM\mc}˜^:}ˆVØíkH|y’óò „sD|-ÙÅäù'ÝÁ¥_¦ßF/K|1“,ë)Ʋ:°K$Ïcð]Yi—ãô'­ ÇÌxëŒ7 w^ïî+ëQ —c¿d; X½±~ë­–vX_&5$¾éõD»øn¯+ÖRç) ýÐh©ÿ¼—xÐþÎi{ÿ´ÝÕ¼·KTÐ&Ju&]ë,¥ËK=œ?ÄÝGâ:bJ˜DlæÒcÌ>ò!Œ!$Ù¶D¾eµ‘ñµë?w>]êcóLY|Ûñ+žY¶ÓKgK†¯{‹= ~ç ‘`A8óÄ— Ï$çhÌßw&‚ê0¼Á=™gnË_öåU|½e©€­ ‹#‹&¾ÃP²4§?YÜÏÔ£Â]\Cëk ódÑ·Ç‘UÚ«yõ:[bH|ÓëiM` í•øf9ûcß"ªíC}¯u¾²p³@ÚÞ?m·Ä÷ðEƼ:8ÝÃ5ݤ]Uˆ/ÏÄ=¾®Õ¡Gmá[ø³Ãþç[Ö…ÁÊŒ®†#‚žlú¿í,°ÛÊò5ÉÂ*RÖÆ‹p‘bN)ÝkHwÄ¢º©¿ áë-ºZD|OM¨»[H0‹#;`K‚­Â.Ó6Ž*ø²¬`Ã+Aƒ&¾Ößó”}2žºe&¼¿>°ÞÚØ_o8â˜jްCâ›^ÏNoqF9 ÒyðµÔ†@¿9¡¬ÿ¯·Y mï—¶ÛÈÑbßáæÇÒÖ^µÎ­®ñ_·CÅì™ô Ž7e ש¥Ùˆ@+ñÐÇ\Â0êý©YøDÊ:й™ÉêÆ=§•î¼¹|ÊÎMBV9s7²{® ‚ˆï±‘`"Ãüµ »$¹¥êjãZëjÃ_MÈŽÒ¬ÁßJÎcQóÏå»ÞæP Ø9ü7vѧ0réO²Œ²aÀüX …ââNèáËë+¢Aò—BˆztùPŸ0ê±·6Æu¡jmg”ñ¸§oÿh)+!«SHˆËj_AöV´ ¯-„Þ¶Ž:Ø™e}“Ô Ï·ßJeZJÏ0"Þaár`‹B/Yië‰-°Ô ¯áÁ”uÀºKÈLJ+8æ^zlFØP?ú"»‚ âñI„Ç^,îv‰÷‹ZF>0Š,Á6Þ+\ÔX 9ö²m<é/»ô“ X_5¶E,¦–¥<É3˜1–ÔÎ7›ºÖ‘šçÓÊï+ÏÝÅ”{îUÚCÙ:ŠG baG'öV‡ôzbDmDiøV‡â^gƒ`ŸêZi n~NgQ­á«ÐªÏiû ´gR´ÂÒS?Ö.7è&zn½Ñeµ.å=¾¡åiW¦3v­f–±‘ó=éh4bFÄžQÄ®þÍ.OòÃ-RÖ{&@Ýìeµp|ÓKO!¾1ß¶ "¾]Á{L³Ã©”há<ÃßÃÇß'hEøU0²á6IAñí;fû«?P^ïõé~h(œWd?ô€ë$k º=ˆŸ6Nx3@ø® AAÄ·P^ÿBòì ’[ºU^I&œm@y9Ê$$à´ÿF ‚ ˆøê'‹AA__AAAÄWÄWAA8/Ä×~apÒ½>feURRRRRRRRò¬ÊA³Êb7nÇ;Sè/©ý•ä¬=Š ‚ ÂÙÆ ˜dÈ*c”÷ÿo:ñ„¤Bî=»­MIIIIIIIIɳ*‹gæ_K­ÓXÄWRRRRRRRRò´_ËcÃ_|Ìù*û;èè^äÖºûÕ"IIIIIIIIɳ*ææXìGΣÄ7F‚AAá$£˜ÙþË,!Õˆ?ØdIEND®B`‚pygtk2tutorial/figures/dragndrop.png0100644000117200001670000004037410050344475017030 0ustar finlayfcf‰PNG  IHDR8HK?uü@ÃIDATxÚí\”W¾÷Ï€%*VAÞ{GŠ4ATŠ(bÁ.6†ÁD-Å»RTšQ`07›Ü¼y³7w“ITDc¥ –ÔÍÍfs7›ÝûÞM²»‘÷ΙyæaŒÑÄÿÏßçùüçÌ3ÃÏw~çœç<3„0I$ak´ú2”KBì qVمٹk‹sOì¨Çâ{í™¶xÿ¾×Ú¶y|×›`[f;#,ÞÓ˜Zã±ÏcØÆïÉmCÈ8BÆ2Û0‹káæQ=Võƒ ÿ_zñªì´ íWkŒáèD$f„˜Ü÷“KïówöN:oÞøtïžWví|o玆;©wîhïØÙÈêQ»ªØuIØêÜgÏÞË»÷4îÚ} ¶;÷RCÁ­¬÷6ìÚsqçÞ†ÝÌ;™µë]/]RÞÜ׸k?XYì>p jÖÒ¸kßÅݬ¶;÷]¤û0³Tõ »ÒÝøÎp“·ì9ÔÀ½÷`Ãþ#—i¼_×Ö°é]9XܨvÉåÅÄ-ŇJ. …PTîÖp ¤á{¯a{øøåCeÊùVìCú}@—–^ÆÜ¥±ú¦¦O]»¸úšF ¸¬šZ»íõø™›à²jZœ¹Æêë¬ñºPŸ¬¹”–µä_ôXî|ð6?1÷úÀ‡¨›7oªA½©Ò7n§7Ú6m:ºs×{Iû xÑ|àvæªb{fs‘ûÞÞOðÀýë0´?5tûàá;¹-T…²±]ðPË]Ü–»†ŒÚ9tÌN‹Ñ;”-£w ½Ã‚ÝÅб»-¬vQÝ1„z×1;‡Yífõ"ÛîPÕ/ްÞ1ÌFmK»]–v;FÛîbE±ßüËÊa7l[:(·ÐÎë1N»F;S[º¨Í[Æ8í[9ì„}ÀÖ®»©Ývu§¶ö õ8=`;wj÷ݼ¶÷|ÉÎkØÖs·­7+tmm½w÷ßkï·¶ãýw3ïÕòn{°ß^Ç€}Ž{¨÷iîr >ètÐ5x¿[ØA×°ƒîaGÀnábÓÆÐüöŒ< vÒ´v»gL±gÌ1¥'¡Ž9æ}T¨ÁÞ1G|c$ƒý©Å5ØR‰PÓ{“KT>æŸTì7å¯aËë);G;%üØÙyãfKSSÓ¦ë`åám¢úfó uÍ?Hا˞z´uëVMP·mÛfL4«@UlÚT 4’~’U]]a6€ Z?U – 3>è4¡§ÃëÂj5ìZëL}Æ1Œ9´Ö%¢Þy¸NŸ"j#k\¢ëÔŽ©»F×¹ªj¡Ýub­gÂYϹWb½G|ÌuÌ´QU×y&Öø$ÉÅöJ®UÕµÌÊFÚž"÷I©õN¥†B\¥qžöCgçµ›-ÀÖm›Á[™ ×^oٲŘÇòT6‚øc™;þ$ ¨·ª¤Tñq ‰úìæbèŽBrak>¤Ú|HåÀ¡§XTR1ÐB‰]­„ð©‘Ü•ÌÕGT©jµ[V?5º’{ el¼Á BVœ`f- ?°…U9Gn„5‡»Jàp¤-…PÅ^õp„i_Í‘áP9Ì‘nŦøÙWp9ü¬©+¿1îÔc=«­<*”ìyU B£ÐŽñ*WÁV©²úæXŸ ”U;jà¡HÁxJ€Ð!è´c µC…ì^£b¯x³­árÓ:0«wЬ[‡¼=ª–RG·jð VÞ¤XÖ¸O¬ñŠ—ƒUÈñ‚s(’Ú+é¬`ÆHóN®WÖ"{O©ãú¦Ösêu;µÆ7­8C.vøŒ2k÷é?> ‰ ÐðCw—#ddǘ“á XÙæÑ ªºÉˆD½y³Ú=Rq‚Ÿq RÎbäÑ!#Ž yB# 3ó0’°‹9u"ó04V‰âÐqUÃÇ1®x„íѶ'ÅI(„¡(÷(rÃh0VŽÔÈC¡}Å^8ª“p„ýIØŽr¬àahéRŬ# =ªTVŽñ¬Ö™„, Ë9„ê$YÈ@! •(²$§NÂjuTÒ ¢æIhªÐ>œZœ„BºDÊiõ*‹°+‡œ:@Q†J)–¼vŒ>ã}Æ-VàMîžH­b¯+„‰5`ÛY:ýIX«‘„ü¦¸Ý;µÆ›C8­& ]ütn™kƒ2åàà¬ú LZ‡g–óœÎ»¾œ:õÈ®‰Z__T@HüÃÝW1¨Æ?¤¯‰ ÿ‡«7Z7l.Þµ¿<‚<¬0ª<ÈòðwÿÛ9Òjóàч©âyÈ9BÝEUÇ–³è«‚0Ô—„#ÆW´?úí÷V›G?¢; UI¨í‘jó0TB( È“‡!$¡`kj°Â.@zUY{U¥"Þ„$ÔJE?Êêø€*uª2P‰Ð ‚ ä>åB“Ç~âîbIX¯7#k„$äÈ1«“ÐYE ²_aXÇ“Ð]€u^ÌÚI¨ C5„9Ïd¹ç”Z^Cz$×@‹w*·¡ôQq8ã,³\ÛÓ늼€,¹¾­f]@V-wð¬ú ìºÀYòˆì2¯4 êšÁŃΟújÓf°aPÕÒ%ªD"áï7×›Ú¨ ìv©’ðø1G†XûÂ_èi½r˜Ív ›C­YX±°>6ܶbpä¸Ã#mA1|\9x„]Ép»Ã€œÒö‡,ÇwµÝÑ‘v'FŽ?÷ZŽ?0ÚñÐçíý±ÓÖeíX§íp“ùˆ¥c±¥ã1(ØÍ–P¸”[ºž°r=hå¶¶£Ýv-¶rƒ–ê±n§(îÇ­=Y{îçuÈÚ먵W©µWñ8Ï£à±'¬=Oò U0–ÛzW ÃB°OÏC¾ëSÉ“†!ZûW1Å‘HSQCÞudÝQžcB! UIhÀõ¼ËÊ‘Sr8‘²ç£Â]N¼S:±V4Ô¶K÷Ä:ÏÉu^]G†:“ Å*S¨K9#ôT=§ÖŠ T§_`F½FúÏ (gPCÂ60£†E¢ÒÁ™µ¼% «ìÞ³jgÕ„Ì‘GÎ9aë3ý‡^ÚÔÔ$Õp÷STŽŸ¨šÂ€Ö4‰ÊǨ·Ûs¨a˜Í®AV'! <+»­À'x¬ýÚ¿ýØií°Šï~è´q,úîûÎ1/‚¿ý¡ó;f+‡­£ÆƒÇ8nýŽ=ÊÆQöÝã\Öy[°µÓVJ ÓQkç-°½ËuíßþÑéà±ÂÞ] 7Ç»?ý-4º½h籃?`<Þã9·b÷CýG§‹ïòïþÑ ûØyï°õ2ó´õ: ¼÷ŸßÂúírðßá°ù›vÚúƒüŸÿæãüŠÇúUòY[jÕ˜°œný«)l+ yRCj´“P# y#‡ÍqB­Ž0ì. 5&fxz'Ôó0Ô˜˜Ñ¨=âkUIxV{@(R¬JB¹áa!Ü ú¥Õ¥× ¹'6Ç›¨N? Î?³†×<ÕXf×…Ì”³<¤æà…dצfŸmèysèœÚð¹ò sk©såÔs¡…6ÆÌP§qP·mÙ £R† 7Oð0Ø5hýŸÿÕix´ö¯° ¬âs3@àøà*‡ÐSÔagT1x†ÒO<;Ê{¤ªÄ3‰â9R]Bò1¡ŠÀ:anFBïD¹—²;*÷™|–‡!‰™\öM®SO™Š&H9„]gJ嬽Vlß49p¨ûéR³¡œ Å1H“0«.˜å¡¡Îô£ÕÀ!@œ ® É¥¼1 ¯kÃæQG,O˜/Ÿ° V§ãæ—=BPŬjPj²1ªjÖ÷ðþ#–ö{èlÍøJès~Ǻ£Ð/íôâw 90¼ƒ ©8ÆiÏ8©“çBg¯Y@ÈX·½cÝ(¨Œvî»À@—‹×r0DÏv^»œ|(–Ð5Cáä+…TCíì·œG¥½ÿn‡€=ÎŒCzJЗk@åÜïðx¿ƒ–@©“ß¿ÝÐè¸äè80ð0ÜëTè¸Ë!p/ðéZäZ…sX‰Sh±wĨ]ÂŽ‹z¤uNau ?%ŠÂÔ Ãê.³2 `«×¨SÖ1:çHÏjÌŽªê:ˆA„3lnÆP ò$¤|¦*yënLH!ô›* µó›ÏÍð$ œYÏ:ŸÐ ¥£AˆDaLH#‘ y ê CgªÃ0xv-OÂàœ:í$ŒÈ­á5G1|~‡0|~MÝÖÁV§£—ÔG-–ƒ#ÕÑ-34&,:î0Ãàõ:s÷cT Ì4 L&i ÍϲÂV¨0Õw¹›O>4Bàtõ_¯Bîð_~ìtõÚÁ¿½ß>àÇ-p¥{ÀÊoi7õ°­ÿA× ¢$¤µ}à1ŠE.AÇÀðT¡Ï:‡Ó‘!ŒúÂK¿ýW§÷„.á%´þg§_Ä:߈†'?äqîõ~Î=ò„ˆ=]'#u¤ŸB¡Ž©á¤ƒú’PlHBê$6öSÏ‘v9g¨œ¤Ñ¦hLÖú¨†…ÊÑà =I8ã,lƒ2Ïò ðD1ÈfMy EUúά՗„ªa!…’Š\–xóê8„BB6O±àlä‚z1™W§ªk`½HÎ!T¹ÌQäµàèeµ1KéVpâÒN|Ö÷¶GåQª3Q•‹ {¨¶>PÜhç¾×ŠÍŽÐõ…~©Ç öÞ/ð±tM•Èyuðy(¥‹f¼·;û®~`ˆhïw ðp (tðLÓ/p…?ÿƒãüÐ)àçwÐ!àð·,ýœ_ÞÁ«=‚éžãŽ:õÝLÓ/¤Ø5´Ä+|+OB·ðcðŽà!u;æFQ„&yºGÿõ_12(Ü¢ŽÃ½Q›="ºG…aª_ôæï¨1'uŽÕgð'Ò³ˆn1g„³…úÇ„Zg õ›Ó¨:[(7æla€* ƒ§ËuÆ ³9U*Ç¢” I”-B-Q ëÄ#Cž„¡¹õ†Ásj9Àˆ9uâ1!G‘wGaËãŽSÇkž‚£Õ‹!Tá§f(^D!¹•.©:~E]B¾<~E=à¸|ºMXUŸ°Jβò¤kXº¨Z¬Þ| òi¤^v}KT3Þƒç *k´óz‰¯˜l¤CDŸ§í½·þ™0¡Ã †îèxߣ|bÚ! |÷*»©~ê(`(èô°Áñs–þéŸtdv Ú ùæ\†Â+âYˆ°'@å±Þ{ÂúoþÕé~Ü%¢Ü#bìà~È=ü WÄsÐî>¡Ü3²ø¯?uþ b3rŸgäQhôŽÚåyÜ%òÄ Éïõ‰Ùçs î³Ç-¦Ü#æ8 Mƒb×ÿù§NŸ‰´E|ªP5£žŒ&HÕI( ÿt%! =“jTI¨œ›Æ„ÞSêº0ÉÎRøM“ ¥×>[ÌfGƒEó¢bñiR:G*7<& äÃBà0·>D5=£sLȇ…€_x…Pß°P; ywT†êTTÓ¨•„Üq+ê•Î¯ã¦ø­©_-PLXU›¸RæµàÉuIgÓÖ”»†ÏøA T}‡>_fhP›oÞÒ€³kwÕD³¾ôóD-k´÷Û«<5ïWlï¿útzýŸ‡Â)`³³ÿæo`°X<.àl÷«@& ©ø teƒ÷¹‡l‡FØÍ3l€ê;ᯠ۾8Ã+œÃ* ÿù'ކÑÚ-l}~À5j/€œwÌî¯Ô¨jçÈÓ.Qå< 1Ò3ê€Kd% Ý×àXÙ·?ÑF˜Ã1¥ÀäW·ÑUPÃO ‹[Çï H(öM¨ôJ8í›x"dÒ‹ð<‰‡½¡¥FëTáY墙.R¹ø¢07cÄ©ú¥â©Ž!…³Klª1¡<8K}žc„A³åxâ$d7¡†Ñ ±Â;v÷ÄíÞ„®1Õ°ÞÂ'=6ùùÀÄ}Œ:Ê! ïÄð'LÚ:é¹ÀI{½Ë}'×ú& H:š¼û›Ÿ:}'—k ! }¦Ö³é™.Ëe˜å¢vÕºQTcdH„3Îú¥ËýÒåúfGÕ¤Yl¸¨ïla×ÙQálaêHBðYf9“p¾ŽÉÒÈÙð/ñ´Wb%ðæ•Xí•x ú¢~“NB÷5dòVÈF¿¤*Ÿ¤3l÷^ø&—ý)/&õM® íɧý’O¥ý 38õ°J•áa¡_Z¡ ³\œ„œC>&e 2Ù|ŒæyBÕÙBq²ùRUŠÊ9RUòT Ë­'á„<:/:!¯^}r`äI(žÕÆ,®ã@ò0Œ^&W'á²3<ý'–Ë¡óY¯•‡:ã±–‚ÇØ‹/¨g`‚´êxéHÂ$imra‡ÑH &q •¾2Ev6¥¨>홳S×ÿ[êÆW•ÞðµªNæ´KDú÷¬ëKOψƨ®ŒÑ ªá+i4@…ž­áýµ³·×‰ªµ¤ò*Œ …³.êyQÍ3„|U Ÿ;uªÎÂðÏ;fï«ú«ª$|Y˜ ­ ­SÕuÌÊEm|ˆ¨ÙóT Î?ýÔŒ[UCI+”«{¡¢:± VÙXP×5 ë’‹ä“xÊèÃyb0¥è!$á+:“Pœ)_›ºIí”ÍàW§*i|•™Ý›_¶õ5æß0¿6sskä ªñÝI~±Kz 5Ý>"úèâu½“IÆ ºõ¶î+{ù¢ïÄ]®ú9æ[â—pœ:±ì›Pâ“PâËjê„ã¾ñe¬fþN. L¢W÷&•$—ñ æ’À)¥ª–cSŠƒRJÀ©Ô¼N=”RÆkvW1ôZƒÒJCÒJÃgœ¹L×¶,<óÄ„Œ2CÎ, gž0³Œ:»T("f•Fd—QÏ*>«tBÎñ¨9'"Ù6fnyìÜŠ˜9''æB}¶ÜPƒcç—Ç·í‰8¥Ë˜i» Œ{"sü¢“j/>ž°¸\]/¢†œ¸ô¤Ê'Äuòò pÒ ðIZ¯89ee8…m§¬: NͯH[Q‘šR씕'§­®L[S9um¹à´5Û“JV€§I©y-vzQõŒ¢ îÌgª3ÖŸÊÜp&cýi¾åž¹þLÖ3§•^ öÉÚxš¹F§3Ÿ|zææ:/sKMÖÖ3P¨|:{K­Pƒgo«Í}±Žú…ú¼ç«ýãèdÒµ¦fñµ2¢Ó3Íúާpú"Þï?¹nP·v'HäÍ[7Ñbës›¶îHËZnå8ÙÒq:÷hjZ8Í`-Ótyºp×hÞ2u´Ë´1ÎÓ„­Ê3Àâ¨ÁV.Ó­ÝÒÁ6ÔÓ™•…µ»z;Î3]äé¶é¶ê-´p³›¬ðš¡ªéCx#ogEØÎ{:ØÖG¯m|©uÝ5 lǶ¶÷Oç¶ ˜VÕÔã3X1YYØúOãµm ½é”îžÎœî8Í1hºKh†Kh–sH:+”v Ët Áêv Kw…mW»…¥»°Â9dº[Dº‹Ê¼v Ïjm;‡Ïj× Â™§+oFfrT:·k”rO覊wà7aë™û¸GeyNÌò‰ŸÉοCu¢ò^®T1À&JÔöŽÛŠ{ìD–%d&P:OzhöÚÒti]’ô\¬ìJœôrláÕhل‹é¯3"K{Âíw»µ'Ãfh‹ "¨¨.\à£Sñ½JVÀ¦U•¢.Ä<8Ì)(![¶hw}‰Ä‘˜¹óÀÒúTé[iÒ7‰YµjaÐÔžÎõkš“};\åÄCß_[wÿwcÿwOÂ[UwÿǾ ü,ZXc#´ÇÊdÁM€™]¡oì›Xx>JµJ¼n*¾nU|Òç®/ õËy/Íú^h8¯\¤ ^”¢ -!o{*¼+ßoi5§ zG–IÒ÷"eí!EŸGÞ¢Z‰3ôrÓ ÏFÉnÈþí¡E÷"d /§AØšÒ>°YD´¬)°è+p¤¬5•ö„ý!uWëö±ë‹BýâÆ¨:âƒRÿ¥*ñZˆÜž ”ޤËv‡ä¬©š\ø^Ta+ÐXôe”¬‰ ¦¾QÔ\ô9lceW&žóù$¶m •}ÊA…Ç«¼S¤ïó0b6õ¤ dA-|­¸DôMç½õ³Û·í©\¿‡¯Ù+ßœ\ЉLyk¡T d¦ÿ4é«ÀdxQG´ìéŸAÌ£ˆyL‚ì<0,ûŒ#\ôE¸ìnèÓ-~oømjÝôûIjH¿Q*êIU|téb#¯.ªdÔŸ„/™ƒú‡[·<y{mÑ®ÞìL†®©Ò·€ÀpÙ½„ÂbK§Ž$nI…ï«qE‘~©ÄÌ™MÍ}I¿)°'P°î«Ð¢»0¬¸þuÏû¥¿ýNèöí>ýXjïÖ£P¿Pî?$\î¢ïš–nU7¨_6ßò#äÒŠü޼E×–®t¤1í<­à-辂S¤|Iƒ1‡ÆŸÒ3Ê9$sßÔÂ×'J? /j zúvÈÆÈðb=fÚ‡%“÷§ž/ |©àüçíbPxê õ+V«BèúH£Þt}áé8¨×–¯øÃܹ``Õ›^*> z¼S¤¿ƒþ-È5'faDâÅå«”h×—WÖ½±éUbíá|dMòG£[çÅ´,˜vi[øÞE—>¿MA5“@?]ßUK(Ô¯oŒªoŸÞQÿëV3uÙò¯sæü-{æW¹sn.] áÁ´˜±ækßšQðFFA=1 fsKYgRd¯Ç®{7jÃ[dX cëûÒ†éç%^Û0¡maø½©1íéd<¹ôÙ *»þÿ(µw þiýes“êß³2Õ/«¡„X“~OKsbŸ—ÿò”‚&Ò9ÞI²S ߘVTE†Ž%Vý<,L¹²)îÖ¢èÖÜèÛË¢ZVD·-Jl^˜s1ŸØ‘ËŸ]ÅÉ$‚ÚWPÛÚZT .Pÿ23û³ysÛ.jZ²´!??˜ßm¬_·}±µò·±Ò[²»뮑Á1d¤%p˜÷a~ÒÍ…ŠìûÉ:ÒS®Œ+OQ>©iÑ‚ ˆ ùè“k* A5A×W *PBˆ3!^„üÇÚ`5…+ËVÿvÍÖaÄn~~]RÁy2d*±¶ñ92{êœ8EbĽøÐûÉÀê”Ö’qèÔœ“Ð’µè÷[ˆ%¹vÿ6‚ŠBPM êýy.„ŽMG3\ßY»öÒŠüdBέ’Ö¬Û%!6©ëªCž?žóNuúÅç’¯¯ˆmKù8*âÞä”k«|Ï!cHÔÞìÄ–´Ä–éöÍ%C]¿× ¢Ôž‚ªüÂV} ~:o¾?ûÍ!ÌPØòÊÓO{âÈ>5tòs…”ÒsUn‡dÄf„ïÁE±m ­Ó#^Ê%V„¸Œ«¹Ñwâ’ne$l_Fújî/!|œÁ£P7¨|Á$çW¹sÀP¸2Tµâi ¡:"f=  ÃÎYçv¤pÌë¥-ÄÂ?~ëÎÌÆU3//¤<šd7.ŠSÄ…}žÒœý^­µ¾* AíA×·™~N¯„<-!œ@ÈæÎå§g®.[nÝTèÿŸBmK¼ÿÌì÷w¼$#>i뾹ƥ@iäÞy)MY@iÐçÁ©ÍÓTö´íš—¹á…Ú(µ %¨|Q>pýÞï33ÁwòòƳŽîF©+!ÿ·PãUÈU¸½øýU Þß@`!v³e/Ñè‡Î÷Ï{祸¶éAŸ…†|=íúl2’].£ýQ,* A5Ô¦¼ëk&\æ6€eæýy?de  aóIoHòó“ùpÕJê²s+–œ[ESt0¡_.@2KÜú\ÎïKbÚ2‚> »“‘Ѹ† ×Õ”lBýúA•ˆ@½ÛÚ:„ùx>MÔ¿gdpPGAÈ­%‹àŽ…y0vUºlù¹et–i!æýhçxH2Ü&t׺ôËk&5Ï‹»)u?– Ã\ú9]º¾H) Aííé™ÏoÝ‚ä<¿rå—¹sÄ]_Bš—.û&'ç/³fÁð®¨+Îå³DíGž²H|qÁëPK2x,Ñ?jW~Æû%ž ˆÅí ÇQ(µ— ~qû6õssÅ ‚¡€€…–¯sr®‰@]þÞ bO`šô|þÜ÷·ÍþpSôî…d”jAF Ëy§Úï¥ué¶á¬/ Aí¨:NÏ]ßOçÍÿQ TŽ®P]èI›…çV'7gÅ(Ro͘þÑâJ÷/™}î`èKKÈ`úpmí%e¥˜¨(µ¯ ¶³ ä ÷ Û¯rrþgVö§óçúâÇЃ:^9ë»fùû+‰!î$ûò‚˜;qŸ~8ánâÔ«Ër>ضàw{édñ@ú#ØAE!¨}ëúò“%„­pP-{Èù&gÖ­%‹Ó ªT;åyÔ Kέᠦ_^ug2P ޏÔ<#÷|Aâ ù0v¥óLTüB‚j"PAè“v€›–,†D½›7ÿ³ys¿Ëž%Õ–ÉÛçÍ<ÿÜì†ÄŸ8•GÓKgîŇ~2!F‘œÒœ‘Ó˜K—Z˜ɈVÅývü¸P‚jªÉ$þ‘ ülê(Æêû«VB¢RPgÍü>K=™ÝãØ+’w&ÜžÓY ”†|Ýž4«¡0zÏlúaúƒéR ák£Ä ÂŒN‚Ú§ànW­RrdgPo.]üe.ý̇¿g©AÚ¾:á£Ýaw§}öIxô¸Ä–´™+èÉœ!ýˆ¹{õÂ… öT¶²W×'‚ªÜ;œ š«K!W¿Èͽºl¹$êîE“®lO¼µH9"u`A*}]σ ¢Ô^w}›tµáQ}1=¿:œå*°Ê—Ž!dÙ;›R.oÉ}ÿ:"MG¤¤·Ûî²i«Ð…fϨÀÉ$‚ÚGP•—¹©ÐÒ*îÅrõýU«ß’J[Ù[›gÐÓ¤êi»Æ¸Tõ¢ÛT‚Ú3P%ðàF~?*…Vøô]>½4š¼@ØB| º˜Hu~H/à-´w™LÒóUÂ(‚Ú;PuZ…/½1ôZ ýcT¼Ì … ™[S“Ð\©¿®¤DôýpꯋƒÂ@-¶¾}T‚Ú‹1êMÒ­ØgÛU‹mpÚ¡V ¨(ÕhPyög–ξ1 … j‚ ^!QašDø­P(ÕÄ "Z(Ôã5FÕÈOì‘¢P)¨?CŠb8£TS‚Ê¡z¨ß5Œ¡BPM* …BPQ(AE¡T … ¢P*‚ŠB!¨( AE¡T … ¢P*‚ŠB!¨( AE¡T…BPQ(‚ŠB!¨* … ¢P*‚ŠB!¨( AE¡T…BPQ(‚ŠB!¨* … ¢P(…BPQ(‚ŠB!¨* … ¢P(…BPT AE¡P* … "¨(‚ŠB!¨* … ¢P(…BPT AE¡P* … "¨(‚ŠB¡T AE¡P* … "¨(‚ŠB¡T AEPQ(…B!¨(‚Š ¢P* … "¨(‚ŠB¡T AEPQ(…B!¨(‚Š ¢P* …BPQ¨_˜8 µMÑ ×* õHãT¡€íþýûPKJJJ»ª¤¬AE¡1¨Ðõ=¸ÿÇMB̈JP 7y ¢P~Œ 6\¸¾ÈÔxþò¥ùM¡AE¡;PÁ¼AE¡™ÚÚÚt‚záÂ^#¨(Ô㢎ö;:õâù1¥* õ8v}5(½t±AE¡#PõAE¡T … ¢P*‚ŠB!¨(‚Š ¢P* …BPQ(AE¡T … ¢P*‚ŠB!¨( AE¡T…BPQJjýÄÜW=`Ö'íIÑF "¨¨n@UÕ­Ìú*…‚Òaµ)¨õ $Õø2ãHWˆ±ä*­%úóÏ’Ö~ fAE™Ô¶öBúßV|ÜÒñÉmŽ6ãHÓ *<¶ AEPQÝ‚jü(‘&;:úÉ(" ¾©øúvÛ]ƒ‡£òùP»v1QT”é@mk¿Kˆãs 1³'fé§3¤/3"q\[Úﵫ>±Vãp#¨*Êd Š™âvvDX3bBÌ㓠ߎ•]‰–5ã S¤¿#faÀ°ÎæÏ Û’’<T”‰»¦¨]NAI–´zšôÕ)…¿MDã ¯$6$^L“¾IÌ<ˆÄò–â­:‡z&“TÕóÉ$Öw¥ó´â83¤g€U ­@kÃj{èô‰Wº´>MúFjáÄ<Š˜» Ý`ý vs*AEPQÝÚÞ˜ )ÐH!•´Q:Fu$æãé>¸éEÌ#Sdÿ‘Tø»ÒWè¨ÕÌQWAE™Ô6E»rF×Ì+Eúv¼LÔ­¥”FA#tzce0F…úÀÄ<‚¡k¬¨Ð÷B9 ¬b×AE™Ô éGŒH}R¥oEÊZCeŸFËšˆùv&Æ(*j )ú<¸è‹pÙÝHYËDÙ5Ê$Pbž˜Px1´è^pÑçE­“ŠÞ'æÀMŠ/ù¨AEPQ==D”HbPÍI¿dHþŠC©ï¥dWPí Ï3J¿JÉÉ…ïAäB„Æ}ÄFËÚÂe@éE_«áEѲS ß&æÞÑÀ*Îú"¨(€:˜—ŸÙ5†Øä濞 ½YØ@FÉZ¦HG'Ì €ƒeŸÁ–˜§²©£I€+ìC–} C²î^ð3­~¯ym=²ùÍiEUÐ1¾ÝþiYYH*ªO]_…BaEÈ•k®,•Ù‘A„x¥Ð\m +¼_ØÈV5ØÃ6­€v‰£d·ˆy µÒ™$èôf)xÝ‘²öȧB7½á³³Ìî膙ïÖ&>{ìBG't€±ë‹ ¢L0FOÈÝyœ3çÒŠ|Gzø¦ü6¡°z¹Ód¯ó`ʤYXRá»­³×V°Ó36|ÚibáYGøº[‘~GF“ñ#¦_x)®iÍÔËã·î¼xAEPQ¦õN^Þß²g~•;çú’•ND"!6€ë4ékÀj¼ô1O$fDâÆNŸ:²³2QS  c×ØÂ«0"Øø6kï~dá¤ùQŠô°{“Sn,œüœìJÇÿ´(>CPT”É@ý>3 ¬B®º2þ·Y«Þœ¶ælº´žòI;½¾YgR ßH\÷ÖÄõ¯“á1dt ÷žç3ÎïL¾¾"ºmvèýäÀO#Rš3ÈhÂî#¨*ª—SJ:…šv}.ä B®B¸ié `u 1³%ƒ†ûY«^‡ðŒ§á†$é¹4é›é§È`bmé~dIòÕuq-ó£Ó£ÚgÇÝØÓ$ ½?9µ9X<=ƒ ¢L ꂼÿÍšùß³s¾ÌûñüùMK–¾³vm !°ýMáóˆÇ¬•¿•ÞŠ(j™¸î2(Š µ%cIÎÛ’n.Œ¸úÉ„(EÒ¤æÅãNäŽ-Ÿ=A‘=íF6Iød‚Š ¢L6™ôí¬œö…‹b ñ`þpÕÊË+–ÃÍwWËÞYµÙŽŒV'>ý±$Vü/HýH×’=án|èg1Šäì‹Râ e2­á¹¸¦üŒÆ5d¸òàÑ *~f‚Šê ¨§·/ "Àucu!0j}£àyB‚6TGî,œ÷ÞN:"ýhcL˼ˆ;i‘wSRnæFìË&¶Ä³8 žtMæul:Ê®AÕóQ,*‚ŠÒˆ´·*زxMP.üˬY÷äÅ2šú­tæ×‘Wž~Ú›ƒ ûÉ[7e^Z3õj~ÈîuÄzŒ}ñФ+/¤^ÙàSœBÆÁý$õæìØÖl`5äÀl2ÄP¢b×AEõ T€°eÑ"6@s}éR:åK×þr\íq'äå ›Í‰@œÒœ1©9gâ ›È_ßÝ»³ß9³øícXOò>ÌS$FÝ™œ~yܼüiŽQTT_»¾Â£X’LP ¬~:oþ«×82V%ŒU¸z¿ÿ¹V ýabIR›Ó’š³Ÿ/ O¹D<¿?ÿß_'ÃúA»ßÑT>±s'.ûòàû£Ï®c¢"¨(“ }Ý÷W­¾3Á·³g}“smÙrB†2+B †– +ó­¨S›RSšÓYÿxlʳ;‰ÅÒßµ™7Nh›üqllGüÜ‹K€ï«ŸÞDPTTï¤üH1q×w$›:jZ²ø›œ1¨@fC~þ¼¼BD ¦¥6O‡‚˜ $ýQJûNÛ,˸¸@ útblû”¼sÉ(rí~+‚Š ¢Lê(B"icÃÔ¯sæ¨l&É‹çÏçK ¯.[n­Ì@5£—Ǩ,ÉðAgOûhU\kFòE¡{Ö@Ò^¿û1‚Š ¢LÖõ&o.] ”þÏÌ™TàX=¿r% ú÷¬LhŒÇk€ ”ZX&nÙN† ÃûÓS:c‰ï±”ì÷÷Gl+#®u|-ÕLãÃA ‚Š ¢ úÇ9ÔHB¢éÐt)ô„ÌÌüGVÖÝyÔ´æiJP‘ »×æü¾dÁ»/ÅìÍ¡-Ð9v%¹ï}¶:£ îfûŸ €Š‰Š ¢ŒUÜõ Su}ÔëËWˆAý>+ãûÌL©j&ê2³qEL[V\kzJsFNc.ñ%¶Ug~°;iÓN"q!ÄBg×W¤øÜ*ª' f έ^ýé¼ùœ›Û²hQ2!“¹Å¦—T .²Užž™®œLbuàà°OÂãqI·2R®®™ûÞn2týœ4ÒAEPQ&Õœ5u&äúÒ¥˜;Æ¥°MÈݼù™5‹]U3³=oùÒŸ/xà—°ñšƒôypØ'¡‰-Ós>Ø’ðb>yªûLCsþá ª„Ñ‚ÁŽ'¼Œ ¢zj;ûê ~’X…\å¬ÂöoÙ39¨my+‡“‰Ï$5g'´¦'v0Šà/B N£ïNLlI›Ù¸Œ.$Òô3cÏÚjTœLBPQ=U™o|Á 3[ü½ß¯rsþgVöß³2ùuª-yk»‰/lšÔœþI û8’wz3®æFí͆Q+yÊ (mí ¶µµ â„ ¢L*×6^ÀVÿ«ªDÍlYX88G½ðܤæyŸ@w7ô“ ÑÉÊi$G¤ôÃA?V(î(GE‚Š ¢ú ªÎ Íî¶¶aë{½ ¹”¿üsr~ÌÌø{FÆí<©*—DwLžÙ Už˜LnÞíÀ/‰BPQ&ÖƒÚ[Ûô]Ê»Á^l]!° ¹zkq¾9±ˆÜY˜zmÉÄŽ©“n§g_^ÞuDªW*‚Šê±ø7kI”è0j¿ÓÖ~¿¥ucõÒŠü¯rçÜ\>‡ "KÞÙ–}á™ÙnŠÞ½ŽH± Uèx~ ò ’/GPQ½£ê°:’]ŒzuÙòw¥yÄ‚þvcôžÙtÒSÃø×UèƒAEPQ}‰S…ö¢|Ñ ¬eCVHWz-ù æ¤éÎ=}#Rmtµ»¾†ÁFPT”rŽ—ŽQõ1¦ë '©§?Ǩ*ª‡‰ª‚PýÝ3mê»TE+XT Œ+Ú;Úô죻fû·––k,!|b—: ¨¨Þ€ YWVRÊUR&Å`]u©þv½-)9VV¦þÚE…B "¨¨nÅ—õµ’^HÂÜEf*‹ö’Ht>õ*ªÇ ò5C<â ïßÖÖÂç~t%a‡È]f‰DO«þYÆýDAEu掑W±ô´³ú„Oê"¨(ÓªCX—k ¨½Ã? SAE¡T…BPQ(AE¡T … ¢P*‚ŠB!¨( AE¡T…BPQ(AE¡T … ¢P*‚ŠB!¨( AE¡T…BPQ(‚ŠB!¨* … ¢P*‚ŠB!¨( AE¡T…BPQ(‚ŠB!¨* … ¢P(…BPQ(‚ŠB!¨* … ¢P(…BPT AE¡P* … "¨(‚ŠB!¨* … ¢P(…BPT AE¡P* … "¨(‚ŠB¡T AE¡P* … "¨(‚ŠB¡T AEPQ(…B!¨(‚Š ¢P* … "¨(‚ŠB¡T AEPQ¨'Ô6E+÷7Õþ¨_¡ZT` nuêRii)'AEPQ>Q9«Úâ÷b×…zâïÑÝ‚ q*!f8FE¡P9Š …B¶¬ wo@PQ¨G©Žö;âɤÎÊPmkkãq wá¬/ õ¨Õª8¸ÿ*„§¸,ž FP÷ɰáõ‹þûjœžá BÇX§*‚ŠzŒ@…Df•J/]l|è  #cê Âϸ⪸ë+„ªFœR74ˆAmjjÂDE¡L*Ÿ22Qyrrk¯U®/ ebu˧1*7?wÚcPoܸ7ÿñ=}¹(Ô“É*?=#‘Hz±ÖwË–-ºÕðÄ†ØÆL„àþ}©áÌk>ÎéÑcû2Y…ûw3™×ªèéß@íÔ¯ˆorPa€j¨ë ÏÞϤ]‹½oß>ûèÛ_ß>Oòþê >hTLT´®¯@šöEmqŒÊ—#‚ËJŽ+—È ¨?ûÚ4õñ´Î‰"!Eůý ò-0.å銠þ<âoÒ@¬Ž‹¡Ð¨)j {Üí©šÞŸGåo ÊÎðññ¬/„mII Lp)X÷½.+++UI'¨p 'lĵ ÷7ÉþüƒÈ„´RT㤦1ãXÓ/xNاg4—JIô.xú7u×eh˜`§ù„N¯'œz*¿ÌM{ ¡PÆv»ð1‡Ú/W¼ä ëÞÕ:¥Ý^*¥o9îoÂý»<°¡ÁÀ’CíS8¦IÔNáš›½©ÅîËó`ýþ>Qu§ÞvÓw}qüc"kQOÎÝ€ÚÔÔ$| ê±=[ƒúÅýizôé¨Ý\8nTþ#ñcþ¥ù¨Çê´Y¯I6¼À–ÏðÛõÕÆÉDPQݦ¨@Š^ ¨OΛ¢ñïDÚ{jÿÙºíØAXç lÅ-&ütÿ!—&zwîûóø üÊÄW¡!¨ÿ^”ÝBÛ‹cÔÀË0ò©zôq@„ šXâ.j8(y->:éåJºV}¬Ý¨ï’aÙC·bH´w>/ËÈ_‹á$¾Kc1ðÚôý7%‰ÎWõë~;@Puƒ*£ ªô‚ƀڻש ›6ŠúvHМÕP=§áoà=Hü„†¢ï7¯ïk4êãA}R@Õwˆë‹2}oê¼QßÁª3|´E}cNÈ–na¨Óù?º úúÆÂ0æ]Æ w§ 0iø©Ô'hŒª}@FH£€cZã(0vCÛÓcÑ0†ƒÅøC\£¡ó^}o.:û½Æt}µß2ôu ¿°_qïAÕqjl»åÊÀ`O'Òú«ú‚ÝðLßëÔyXkâŽo}ÝãßGŒ|ë1ðª0QÔîAÕžŒÑw°êüz,í6Q…Z£Ï©1Ëb<‡}9Ä5:íúºÚãR ºôÅ ¾7 }ƒAíñ-NEíùGv·á©æÆ…·¼õèמ‰ÕùCéÌk³­ó˜L.Tµ½ÛQέ1G¡Î4ÖI㻈½€Á˜7 cv60ëkLÇÁpß[ç; &*‚jì¨o¦D{ú´Û£ÙÀ,‹1§Å4p–ÂÀyTc†¬:cÓðLµp¯¸Çkx¢Ëø³¯½ø!¨O–팢‘ëLµ(ïa¼þ¾¬jD!¨ýÀ5ré¬áÕv½^*أׯýSŒYMþ3ÿεGàOùêÃØ´ŒÜÇT‹Î ¿æ|¡½q<ôîe÷¶'!™TI?Ï¢ï¸ïÑ;BÓùû_‡™?÷õ+ÏýÕ†H_ÿúƳÉ_1ýl2‡N¨ôü󗆿~Å\À›žýú%ët¾!Ò•ä¯'=÷­K_ûo——·¦çóEÎ"ÿç^Øéùä¯LϾ¸ñÜ‹ë/¼¸ñâ‹ßzá’˜L//É­û×W^øÛËßú›,i=ãòá9¬óüFXZORoú[³—Õßþœ™à|ôôÙáô ßΖ¾9×ûûwƒ43w¹÷÷Û¯$דé×fþáÚÌ?\Í™Û"ýÝBb´éü…kç—Ú3ß¹jMÌW*ýÝÿx]M?òÄç¶Jådn]¾|¹iù!PW6ÄŸWäôÓÏ|Eðqêm fÚö¶yëü~ú·‹úœ3?uãâÔóá©uÃ`⦅ÔWïXé†w,Üôs½¿*Ýøóÿ]M¿ýçæÓ_-&äü~á¦íó7ß²pS:ݼcq0}AL“©tãöùþÄ/É47˜X¸ùÕÌ~ºá—S‹é ¼kQ¤›v.ܰ«ŸÈôÜ-»vìZ’XxnÇ¿[°¦[Þ3/þþÂ{\ ¨”,3·ý½óïœ^رgá–ìiÇôbbïüŽÛn¹½ŸÞyÛ¼šI|µ=™³ë¶…Ý·/Š¿Ö$¾ê}û…ÜéÝï—s»>¸°óŽyñW¤w'Íäš/SõC ï:¼°ó༘¤ d:•’ÅæöZ˜>¼˜JG.LÛ{×Üž»÷]ž¾k%_Ús÷Êô¯-O_š>¾R4¦½÷­Òiÿ}ËûX=prUüÝ÷ÀêþûWzƒÓ¾“+júÀoXÒ¾Áß;´/@Ó-Óg3¡¯\]º¢ÍظrIVgô¹sçB^»T."‹çSŒ¾`4ÅÐÒ¾Áåw\}ûÏ[8Ë$±¤D­dñÛ{½ÙÆÐ^Ú1w“ë«4”oøÅEª7ÿÒœ‰Úvqž|”€ž{ûÎyÖw/RÔ¾}÷Â;w…s¶·$Åå/üÊ¢—ªN.KP¦¹™9Ý”\„ÝuÛ\ÿ¯›¡;÷-ìÞ·h Õ‘x°Þ9×KNÈ.î¼s±?mãéîË.Ôö8{xñÖC}Âʉ½G.ì½k^¦é»—7÷Þ½ÚC§FRž¶ %÷KAsï=«V˜¾÷sæšXøÖ{Wr€uÏ}ý ±úþûV%gó%Y‘$£{ݵ~µÿÁ}±/ïÿÍ•YÝÿÐrÖ´ý¶Ó½`ÀFc2ûêÓjÚ•úøô•s_V‚¶¸Zb6'–—[ѽ±±nÂû>ú¯6$Žˆ{,¾aÎ4³†W•iÞ4³jÎÍïè/)íê;R6VÀ7!ï/aÕŠ6hfKÊ7ýò"…¬LâãÀ¥úðúîÅ‹ç¤o¥6VÍÙî·±)ÈJÎ c›²Ós‚¡Û}Ýñ~ád/$Éégw¾_÷³”­LJ/6—Õ½êföÎÅYágÝT¦Ábs¬ÔϦ!»šÁÀRóûkk!låS²ÖR>ÎÒ´ïÄÊõ ¬ô°N­…øV9Mçô’M+j©«µ:\Ú}YÜ<ððŠHL|$»xleÿã«þýÊáÇVE:øøªœÐÒ¡G—Äß·ŸÙên%Þô+°]ç¹'Ð)é'ðŽJùWÐ2ë*‚ï:£Ÿ~úé6õÑÏ~ý’×ÞªÞÀÞìî/õ(9ˆÌÑšuµšÜ›~¹·Å«p²ÒÛÞlcUR$eœì/¼gÎkfß9½“­ZèÀ êötèÀffç,´ÍNX¯Ÿ@s±—6v÷ó»ï\T>·?ý«óÞX™¤}ï z°çˆ lµ{îZ$fÖKÛUkÐ@:Ù=Ç–gÅÍÞª$“A†d‚ –3¹ÂÌî¹wYN÷³”ËbúÀƒßåQ{LJ×RSÌí­›˜Y@÷}dÉ6?5sß#+ûíqv¿×#’éÇ× ò.'ð]~üèêá'–™´{ßYeEOqàjI²J¾b‰TXW1—´n¥ÛíÚ}´ä·'žöÑÏ~cCÅgU–FÍ5ÈjföúV—r6ÈÏŠNVäO˜;G¯ ÛwÍ»ðj>-sG ¶ü,1ùÓ&”ûk%~6_Ðà]·]Ûï›gâ;ß?€× ½¿ûç¤.Oé°l(d‡6vàjsûY™níûÙÕ$8Ë Õ \38+¡iÆlð]³gÜÌÜ“ËÞØ+.Póg÷?d|àáeirýì¾¾Ÿ]³ÚXeo)vÓ>w%ñÊ!ሟX>úÑež¶®Ô_ñôÊÑ­&I~L=¤ç†žCÎRàŠ¿Y±>¤y²®ø+stK<:¤ÖHÊGcC|ɲ/‘Û ˜pAÌI>š–ÖYii­!‚”MÑvkGpd@%µ 8dv¯ï½ “W@ö}ó&U{ŒÖƒ¶ÌÝý>ÝÌ&Á_i{%ˆwî›i÷´W½sÑ:­-³óŽyUtÖŸyðBxÜ`ÀÙy½¬ÇY‰ÚE®€‹"Õ®Í+òñ».¶zKÃzðýXf©çdmfVÅ[{Ø=J^Ó®òÁÙ^²øß>L¦5Ôä (KÎ&~ö»"iÖÕ…W™Ž>¶–Û4+3ÒV.|è£Kw=±¢ðzäãk‡ÓÀ OG~kåè'ÖŽüΊL»>xZ†/B-IJ®Â&ÏI“ѲØOË_Ì‘Ánµ?ù}´4Èòéqî«O?÷ÂÆ ;/(Îöxä®W ¬øvÙ…ûèìÛ[ ¦t¦d®š#ö¤¿ð{.¨ÝSÎTL tÊ9ƒpí…Áü V·Û[1 Võî ñª¾%UÕ„ð°bZøY¹*\ ¦ERï"®Z# †ÕÛ}çK¤U,ZjPÈþêüB°ƒ\9˜ ²3ëŽ xÓÞAÄÀådù9©ù'Š&Ù}¿¾rÀGRõƒ“k½ /Jà à&a{( v{ž7!¬„l°¬P¶òMYÚ~Ð`)Ÿ™2÷¬Ž×£ùPû;CΊtT¤'ÅÌ•ãO®Ü3ø{⯙èüÝwž1›#Ö‘•Ñ‚œj‰~ÍûÊ`·ÑÃY=¬{÷‹ ²}ª¾çB?JÛ›˜“UÀÝ>À±\FÌÜN½íôâŽ[1» ÎRƒé¹-2‡Nß2(4ëåyÛ·ûxMxºÝ0¶Ûo›7#’¶µÒä¦ðÚÝ’• ‚»ƒ µ¥ó`¢÷ð TtzÀÓEU8¶SFfM‡{p!kÐÀÊÙ[Îßz÷‚VÓ€CêÝ«Ž÷ÜõÞt•K^˜ê~ö˜^¡iå¢Þ$üìê­äŽ˜~Ö–}x•\^áé4 œ-’znÔÇÐ%Eaåv¥—9tzIRõÐÇW]‘y,íÇ—5ÎÊt/ žøÄðãñßë¥{?ÙŸ`Ò‰ß[5gJMéé wXíŠ=˜«ÈG%»š qjQÉé£ea¨¬³Òc4‰ c¯âÅ_ i¼„ËÙ}Ç:GŒíœ²±²^­8fZsVNK3»ë¶¹nwË70Ã몎—Œ¡[ìíI¶ :{°Ns–N¼Û 0P¦µ—‰ƒª’Ń0îœ ÈíÕœßs÷¼V °"­ øÆ^iù˜ýÛA¼õ½'–sùÙ¥|hyÿýý˜¬Vy ¾½ª]¶Ê^÷jó¿Ãà¬YÈY±b¯ì±µ© Áªð³®úfQ˜r»ï‚QÚ9½"R ,¹$#G ?+±«ÈkFă™:a&\–¦ãŸXL¯ÿäš—°4ûä²uþ½ÿÁžN|zµ7ñËæW»Ÿ•uï¾üÕ¢>Ú\’ñѦ…´p¶ëhMmËy}ó¯/ È+Ãׇ8¾}ÎŒÌ#ƒ9ÊÃR¥Â)[špðýúL¼r¶ƒ(‚, Â^¡ØþÖÉW©½RÌMª$ rBÂWÍQÓ»÷\¹«V¿ÇŒÇj©0›úöèò­GWe!ÏY;U ñÚŸÎÛ*a°â­ià¥ê>_;+[]áZW.¦æ¬,Ó.òöf>¶&ý¬†QU‘à`ò…ï`ZEr‡5 ŽœJáÕ^ž”ííãø«¦™=òäa¨?Ý÷;}‹zŒµ´nW`tMÒóžO;™Ë§ŸJVÊŸøÌÊÞÃgùҼʭÕqÆ£¯$ÊZ?ú[³A+(¼öÓ­óªF%¦°«Ò·Ê™2€ *{‰ùËPÓuÝ^u×ÉÌëÖ(-%©ôªCÔìX _µLW¡özWNˆ=‘íQ8¡ªœILË‚/±˜šcá¦é¹—m[ ¬i@ÍlöÆ`KÃf`÷-™%`i¤†Uù²YW Ù}¡•–ή2fƒêÏ>¾ºïñÕ=ª®Is*ê Ëjó|• ˆ°) MÓ±†b÷É gÝ¡X¿ý™O®d2³L 'i?ýÁ²"²ð¼‰í]º÷—9;HkrâÔgȨ̀–øã-ü£åSƒé飧»£c´ëˆï£U)ç7Ïo˜‘ãã…Ô|k@yÛ;çœܤ LÎ0í{[¦Ÿ«@¼÷à‚ô³ªÖ2³¯Š§Ã™w/IÔR+ ÷æï5R»¤¦%=Í m:]Ù`ͬԕÅáöýì>–§ûüÕ¹ü• Ó¾÷ ËG”«u¥8»¬Å ”™ÕëXjÑktOG“€ÃÓ£ÌÕ*ôCƒT!Øï® £zÏï¯a”XÚczahf ¦Ÿé“ôøg–Ã8›J‚¶'ÿpùþ§–Oýњ«É\5ÿÔçV­ßªtêO‡édòW0ºx ÃhYŽ)f4ymgtžx4aú7Ï¯ÓÆ`ҫʨn?ÔKj Р¨Â¨t¯»ôÛwîOï=ráÖCý Á€¶‹ ²ýù„°Ö·f5•g‡ g)Xä]Q÷[e(Ü_~ÀV9-ÓÖ £—“V6HÇdõö]Áä «3»ä­QKM«€&OÕB°ƒËÁ’®ðh,ãg½¦U‘Ù=ïÇ—E’=ü‰åpÎÚã ¿»zì“K©ðëï…’wÀY±úò=ŸZµ8Ö^ZâÁzϧhÜvIqV¢öÞÏ®š$•H½?îÉÏ®j´=ùÙ•þc   OO¥áK¹,Ö¢œ¥éÁ?£_-¹“h~àóIú‚x[=“j]²‘ŸÑÖ¾êd½éðºwÏ<óŒŸÑ>úÊÆ÷/|{ÃÛHA”ÉÒ°iÒ­d®âì­Gçµ¶^4ÛËö‹Åh«é¸ÁRª˜+™ø•ãß ¬oЛHêÌ÷ºfXÚ5«ÉMà»6,»w)—ÆÙe[½‚ew Yg«Ü+ӬȵÊÉd¥®}¯íÜÙú+¨^—¯SmVV<€>šØÕ"Õf kÈŠ\ƒ¢°¥!UŸ 2¶Z¡–«Œ+ 8ëGª½|,=GÁ”W¥cO-S3{ê©U‹«}j8ù¹]eYì¢g†ô'k g×ú¨5ÒÉ?_üí¥ôü‡¿°š¤•AZÕ;Ö‘c¦ÍKL-ëuüí·7ö ƒs©æ aU»¬}ÇXjdm¶³ƒ®µ[ï]KB KûÝt…Xqf¼5ºîxë”ËÛ_WVßjVªýà£k©š³¾•ÆpUÐ g¹ëÜuv-°°‹ ã LßõÛÿ(ÀzèÉgÿ®ð³k¤®™ü½÷ÉUWeƒ K;X÷žß_Q~6_ÙW/ý¡€ìÚ½Ÿý®5P Œ­˜¸ÿ©5 a?½ÚK‰™íÇ\lõÅ øãµhœMœ¯âlª.Ú~~åþ/ˆ‰Ué|[ù‹>gúü²üøèZ{ì‹ß}ôK«|é{~é?ò¥¦éã3èùг Ë “#ÚÎP5øöWjZ÷Ž‘0Ô\;ìñ虸š"¬à2ÛÜ6SýY–Õâ³áÁYÉÙ}«p9—”ƒ¹ ÄÄ™ôõxÐs£ªÇ²AY£«W£àÑlÉå¸ÖêYÙÓéZÞ^ä¥5~V‹È2±@ÛÃkCÈ^©ÀNd38kzÕèÁ‰Ï¬™„¥Ú㟗dÜÀ•gUp¶`*HØ“ƒ¿üÙªËÏÀí-yê/–[ýü ñ³+¯=ÂþçÕ>=¿ø¿Â9›J_ùþ#_ù^ò7(Mß'}ô%ÙÀÏÛ•À#u¸!«È¸ í/‚–á‘éÌb;¼ÏÙ$Û/ÈŽcTÜ $DÞŒõd{uôÆc˲;Ä´?]5{‡ñÚÛ}¬Èî{|õŽÇ×H_0Ò´~7„³IZQ5g3XZU9A›Ã‘t-Äáþ-Ô5jciMÚA Îjs€Uh„áħֲ‚Õ‚ÚO÷bÖ€, &Üo‚ýúgRؽÿ©a—7p‹YÒç–Œ8l¨íÅ þd¹ÙÏgKÂÕžúüR:hÐ3³|q€ÚŒ`}h0ñðÿ§˜~ôËßôiIÛÞ„šö§/ÿSêã3?ð¦½öµëýð*pj8”[€ÍÓÇ¿fã{ŒöTž]V5g‡ÁÖûƒ™+—<9ì÷ xMUy6éDfÙÕb£¾Ö·½´·¹JÀ´šsÔëúèjϧIêŠÒò>W¬uä·Wed–Òö.w!X²¶B°b1YÎÏyYâÖJ]Z 6©Èµæ2³¿þÙïd iv3ûàŸôR8sãOeР78E¢§þܱ=õ…ž™}ð Ë ²ÂÒ>ô)?Ûçlbf²Qõá/~ÿ!7s?ò_þñá/ÏSÊS­ƒÔËä™<üÌýê?…7IßÓæœ}æŸÎ|íû®´ÿäÒn^ÙÞ$ Ë:³‹|RŠ£ÕÜÀ¾®åb<ñ¹[¦ÏVvìýXzÎéí{OïxßÙí·v¥wÞ~šùÖL»nûØ®ÛϨ´SÌ!™´û¶dáœÙ½ïlõéÝû?&þîúÀéù§wÝqv÷gv}ðtiçOhs´m‰úÖáÓ΃§E²~µÛ·®–¦Izïá3{ŸNÍ<½çș飧eºõèé½w ?Ê9ÓlÚsä‰iß2ÙÒñí¹çÌôñÌiï¯ÎºÊ­Çô9bÓræžcíåyâÌô}göœ8-þfMœòóEæ2O>½eN¸ïŒHûOæIî÷+#ËõIçQš2££mÒü¨,€œ`6ê61Œ†Àèl²ücÍP³ÕrB¬¥fÊiµ¤¶¢ZÅšð Ñíü)Éß“kð-ê Å_eÇ`à+g4Ÿt±u±3‰ÎCP…š•¿½n· FCµcôÖ@|P‚Z`Éq-lMWTÔ6í¹OØÜÖNÑ‘ FƒÑÑí [ ²5rm.¦p>Ê:ÔP•ºš¨$¤‚Ñ`tŒfØÊ×\@›cm £ËC* F—Âè¶£îü¨B|]‘ “Ît ÕG`4TGFkÕì‹wFèY¤dñ ¨z™ã`4TGFÏÌÌàgÑÂ(D¿Êc´ikÔtsÖÌXj_A¨~7>zʾZOÖxm'F‹‹§=A,yÔ¿~4S™ *øj’ïéUQó¬šû¬FörÝêf¤Ob?å|€Ö|4y³lo}cFI6w©‘ŒÎôsÅo{ìí Üåk4¤2ÓŠéèš!ÒL–FgÍ|i È;Y{ZX[d9öI–ÚÒ€èAî@‡5WàÅz5›ë€&‚ÑÖ®[\!+R³Þ{昶! ‡DZçç;|ÈŠÂÀç: (™«¸Æë±¾Ÿy­½¹c (3ä+®@ðÑ–¢µ2¦š©•á˜4(¡m¾«2p·Î·fh=.µ‡tAL»°b^ÍÀG)° ¿Œµ6{é³vÝ—©oFÓØ³¹mGc'­8Îd·ºcyokNË ¹™3ãÂBnozàð&™BÌo†>ÿL|˜ðå¡ìÚŠi-]»4Œ–­À‚CzãðîÛÄ[«½²çÍXÖëÐÇâIGyÍÇ%(£™`±¶æ¬è¿h°6$¦­÷s9\­3²Æ©\WÓÜ™ñòÑò&U=xhZ__ç«ÏšE5E.±iÎ2]ëPÔ!è©?A±y˜*MôÂÐÆxYk¿†è…?zÙM Þƒ’Çææ“«õ„‹Ú¯ÈZªQ„Ñ®ßÿØ1Ú”˜î«O_º¸áÚ-à Á¢ö0 oFÀ¼:ðXÂÃúZ])s™Ü%·LVuî=u |´ ç®ëÍ ‚Àè _´º*_u5G+£‹ŒGZ ¬ëËè™™W3S£kÅè"¬2êpÆ Ì‚Àèº1z2kæƒtbbIlãŸüS’:/½ö³ô$¤ñNcëÈWG8bÍ⬘qÙ Zéò0=Œ–òþÄ_z՜ӱ/ùÚÏÌ…ÙÔql¥óÃ×úßæo²;Ö1²Ý´nN¬òÒko¥÷ù-ëô mD¦ò£WßÔ¶˜Ì±ìç`>·{É9´…XýG¯¾¾cÿçÇo’Ù4®û[ùŽ×ûóH¶Ø!ynº~?®½zéµ7†Àh=ýËßÒ‘¾ç-Ë'·D'da×íñ>ï¤WïÝÌPòŶÝ|üíd$rÇzŒÚ*ô@€¦N»8„ä|n2Ï6cÓýíjO²b íäxni? WÎæYJÚ&óƒa.8“`4ÔpíÀ“Ç\öÞ]’ª?LÙáM+"É{h9¤÷a3 ‹7íÕ†¹ 6CМùðÊ›¶o5Nu¬¯/bà w ›ü“Œ×Ôst굆œóþ <^¶ÒŸZ˜>«Ø´©]Aú3£¡†3Zµuñß]–ÈÓqvø-j/×!HJu@<¨-x\¼ë×G’K,)>j ×¶Å8Gš§‹õLK ²­ax‡y‚z®4cÝ¢õ:Ê}™û¬´ó9á¸Fž¬´£¡Æ2Z¶üÑn9ÇM¾Ic¾°³f(éF>´oéœ7Þv;‰cÕ¿lwS…tLnª‰ðíÊlÕŠæÑ©9V&š;ßsI"qæEn̶çÿÍðW yö«f;E™žÚ‰ÕÐ<ønv~øb!ŸgÚ“O|FCMctdÙ­ÖÛLÿÕ³i§6p[›&z—½KÓ6Ð3gM={ûª3CÖ)ozsVìPˆùa¿üS'x°Ì]eì*ÙÃMâ¾;ä ß%¦A) |%u„6s”¬Z94®e¦]ùŒ†šÆhZˆozsX”ŽíN¹1äÅ™²VŸNcÄé7Íù|…)1Vo®(©îy±oÞj Ò¥ö‚Bú«@G# µ½ôˆÌ=ÑB &L[­·iEµÛ¦ZÖ°8sHqB@¹k‹NvúϰÍÍ_:ê†5•ÖvÕuhðÑ^Y»U2—©rèGÚø%ß(©MGëwT‡"˜wLa fô˜Ü{{å;ûñ¦„¹ù;VKè­ÿÛ2Š•˜ÃI´­_¤åhöÙzÆ„O´UÃèhvž®5¨±©‡n^eJ&;ÌÑ Ÿ›/a÷M£Lϼ"›Y«-šÑÍ"XcMbt`wØÖ|Bœ+2ª“­kè;frôÙ« ebf1Žõe“8Me;ÔU157(mé*Ý”íuÝ–­`☵ÄÑ^zígômïæAe†êš6õt4MúYX™!WÕ’B+Æaž£ãËhmÔ ÅÓG+xI׬X+"µqiÍ`FkÙškÑ…%d]‡k«Ó‘gÕ|5H®‹ø“[÷.KÛ‡M£ûžŽ÷nTnN¾Ã¦»ÓÛ´±—ReP–>CX˜nÒî Â{(ÞIÁVæjç­m™ ÍÝvŸŸLA‰NÄî±Ì]uí—‚—6ÐG_ßúW“Ñ® ýH¬ÁN0Tþ a´fÒMdó«ÓÉé3ƵºÜsùQì¡|1[™(FoÚîMï– |!÷?½÷´[Wâf NÝÂzÑÜtvÀÆ–³ýðµM× ~ºòfR§*ÚzòÎÿÑë¡]†z«ººUÖC7ªB›UP¼™Ó'Ppÿ|þ>¡Æ—Ñç‰ Iuë—]›³:hfޤžÄ´IR¯6ͯ ¦ƒv­nNÐÞu¬¶> }ü€Ñ⯫̇ÌѾҊ5‹ÍgúW 1kV][Ýe­Ðwyùf2º;dtÎN8‘Àè2Ýݺ.’bS¯#£•e¦ËXCÆ!e†Ö ï£é2&‹­!×GW••æ0º›÷0]ÃúÑZia £™r< v2€ÀXc¾î5³Vkì •h‘ 5M÷ÇœPß*ˆOP¬‚0æìX×¶†¤ùÚÊæüX'ÒÊ%µš‰RŒ† 0:?£[SÛˆEÚX¿,'´ä-3ôRÌ»€µüZVFå@v]…Œ/£¯ouq#C`ôˆMJŒ®[DÌË,ÞeW@Ò¬¹Ü:|4Ñ¥åðº3ŽQ\q›bçË­šþöÆÑ]ò‚Àèº2:k ™ÇeHÿGåq¿ÊîO'ÞGܵöµ•o¾i8âó9™>špFË:yEçáWÝBHª!°Æ‹¡`4F1: Î×›vW`rÉIÓN`Áói]½y€.xD`4ÔX½äôúúºª DÁ@ë‰oeOEîÀË/_‘¹‰ >b¦Ü(衵š4ØÉ­ˆ¿™¨íÚ+­Ê÷U±Ãòæfî@tzÊ¿å•K‹üµÞîÁhñè ]·º¦‚ÐV§{hÀZÛŸbŽHßh±ç¶!ú‘9ØX§Nî<óˆ«Üè̺ ú±ÕjѽÎѤͦ¹°gêˆûDÛº>̹oC]ÏÃ@>{rok¸z×sŠÊf4EgI9·¹ FC]¯ƒ±±v”zù½gwËj£3Ú/E:å@µËwh4\c=„"oZŒÛ$~oŸ»#tÜÈ¸Ê Œ†Àh‹14ï·X1bÆ•«HwÖXw’ n˜ŒŽõ–`at<ˆYˆ_£e¼¸šbCÄ£!0ÚR$e’®xtØZšÇ”†Åzô3ì:ø·Â:Ö¶˜ s¢ÖÀ÷äÔëÈ7$¶\¦²\]{eâEÍ8åBïéFž¦£dŠÝ"ƾCªa<@3Ð÷aPö3 bF»~oEÊ$›á£­½ÍÅúk“¥â¿ÚèYÖ9Þ¿ÁhÇÔÌfI7¿«vZ%“ÞLd ¼¸Õ’Š@­¡§ˆÏѬñ‡ ìsîkÑFk€6ymõ›á­®½«çö³ÕÛù‰ðÑ—.]âïɈëV\ÔÎÝâÃÌPeµ±~Ù,Ü‹f]þÚ i†‰ŽkŸÇ‹ÑçÓš™™9oEžuÂâ¡×òt$ò2b#Ì~†l·ù>š"ƒ÷_‹ï\_Ì&3‰vñâE&‘kጎûx£Àh:ʪUráÀž’h¯xWEéTæV„¿ô«éÜ/öѶÎÅ˸ùeÓ>š¨UW· ·™Zù’ÈPYL¸ '£¼û¯'²ž7Õf2n±$_`XvÓðjEZÊ´1‹|üS›éN0æ2™ÆR±ÊåZ’Ç+–õÖlœ¤z•wüÐÊõòLQªá{ÉXw (@»¾õxvÚQÆe¼Íô.°ås6£­Â‚Ò®µSS-Om ðê£Õ“Ô7i·Fw`„ýï–±…ëöãíŽÍ!4ßãî£iE ÁP#dÓ*4N-y"3Gƒ¥álmìW)ù•ª5a.`ýÖŠrkuk†´ž ?¬¸ÜgEùIõÑ#ÕT²h›É1}hÅ;59Æw¡³8£5íÝ"å©·®¥*ãÍùçM¾0÷d1½Èã‚ÑU–ÊuÆG»m-OS ôºo/£UÅ´´ £ß̶¹LxQ'|t¹«æ=ÜlÞóf¬­5JðV®`Üh¸a4õÚ÷L™¡+CW`Ý q¹ ]>ºÉÐ{¥fÙ„>rÊÛnSãÑÞ›TVä·^]54´h@£­%xÖµBžÞ „–¡**Ô¼9¥³«Æaˆ›†† :B¿þŒl*Ž+Ùà%|á(Ëd‚f¦ù`4!ÍG›­ºÔ`u²ÿœÜ->2µ —;µ†à푊šñÜûM£+ɺŠ6Qå†*;œ²7WÍÑQ ÉhÏÛCwK+3dàP¼«…dØ@ÜÚÎÅû´(è¯'‹ÑÖ¡E+À´ÜD©Ê4>^‘7tm\¾Ê¼d©ƒ šÓeÄ£sŸºv³úø—Ø’ýoÐ2·‘w.:ò¿`´ýö(u4hšÙN°FWÿx«Ðô«yL8£¡*OxâÑÕ ³z@—Qí¯$·> ¤ FƒÑ5b´Å®¤ŠV•…¬AÛè›UĦâ8~e›¨ò9:±Œvõ:i´¥¡íÀhø„–VsO6&n[ñAU³‰ÊŠ@sWó|´««èIêGWJÊ¢œÞÑš8Áz2ºâ#Êý<@¬£#¯EéÙ½Hô¦D«8ÿÚpÀh¨ÉŒfül5÷dm£œ`´ö )¯p‚n«©ã°@QÂӓ"µ*ßÖKêz¢bFW3vçm„·†1Z6K‰PŽÛäÚ;ô¸ª¦]+ #ÖQu Ã&•zie­¥övTÙÕÉ©k°¦$ªx©š[`Ä:"‘+(Ð_UÜÉjcÎ[!Ö1îõ1Àh¨F‡&–Ñу±ðRÕ/ß¶ª\ Œ† 0:ŽŒÓ³³³ç}B0DÁ)Â9£åMÊ«nÁë|1‡–‹ÂGC]ˆÑÌQ¬¯¯3›Ë1H¶Wtœo~üofEë~†g˜-Ý|ؼqÿp}Æh9V–Õº2ƒ´fS»FŒ¥ X¡ä\QËÈ8ë0Ôr›Ä~ï€æZíb> ¼©ÍáhùÑf]9›[3ÌPËÍ›\‚¶MÆ÷n—f®íÀ¤ŒÃbÓ¤úËUnT£‹3ÚÊ_mta:À¶Š!ðŒ¶útæ#3yxnÔ¹[qìz&YŸMf´¶:Y.z¯§™æç±Ù”¹¤&sÕlHäf {@שsu (7!v Œƒ¶iz8O¸I`´ ‚Ìœ¬HÕþÒ§‚õ£5Üab׺?ZP…9(m»Lì»™Œv%z_ ̆âÍš!s8¹}nÖ ÜŠ•qÏ^ࡸä±ðj^ÿÅcÖèAAFó+šóÕ(‹Ô§3Æœ÷ÑšÁ§Av:GÍ-j»1A>º¼»´TxÃGatÖ t¸®ÇÛV Cª—ÍhuÎ雿Áh£*¾!©MG¤åË­åu<£CbLnæò”ª¬Cb&š'‚ÑêV){\ð‘ºÔ¸ ƒûˆšý4 Ðчã/ b!uïhèÀ|ýgL´VHhÖÀË]fhæ ^ž¼O³öãî'¥ÌмÿÌèjÂëÑÏ›æÖéƒÚ 6äÀY0Z¹Ã¼=J vT>º¼.êy_YÑfèÙ¬æ·â]&FyöX#*Me´–ƒ«K9ŒÎv«DB{„€Þ*GÖ ©ª¾ÑK «Ý0ïX¾$|+í±êãÿj¢Ü±c¨±Œ¶Òì*wÕ3ºŒ >õÇ#ò–yäpëãè£Áh0:ÏÝ2¦Í ½W£‰è ±n¥ˆëÔr³@ª?¢2J&'ds]ÆhZ?ì_»áãŽä†tÑ- £­Æ¹Ô.ýJe´«¼*·âM¬^{üÇ3'–Ž9K£R¶í›¡J:@­6ø,Jm»æŽñ[!f‘ðËDŒ•U1 ËI„‡…Nï€Â5 _t€ºÊT£WŠw]‹2N4M%ÆœµnÎ5nw>F«¯(¬3QÕº˜6D·9b·ËkóÅ/Í|N„{j0:Î{z\Ëií†8°,±¤w‚耮¾¨ ì'AîCGFKÄäf´‰Qá.éÊù4Õ|qˆÉ¥¶šN«…­_µÃÊ0Œvåf]^þU¾g}ŠL£Ë~ƒ.uôqj±j„GÛs[õ êÛ˜á []ÒÕ™„XócŒ¶¾Ý›’~ÓŸ\]£ªÕÆš´u¡Ü»˜u‹ô¯+7mÓ}› LbÝ;ë}[j Cå}pÛð@GÙf³¼ Q°F‰Wì²îpñÚŠŒuh!i×_«ÿUU耉9h”±-ŸXó×|rXlòÚ…ûf2Ú:`¨ÉÊ耶_[ÙèÝÝ ±½®q°ªa4í>¥ £½L¬ @"Ö©«?£õ¬7iï*tý±d =´iáW¶™m °¨*>ãe4-–¤¯ Ígt}Ñ C‚ÑÙJ½¯·®ó¡m¦QIñÁ³éž›uÑÊhõg>Ò"^¦ðS7Y>:£™X‡7­ìsFÓztÓj5òÚN2±ºK*Û òÑ™¾k²™ò¬ì|¢ ª g4_¡ÂÊhÊGoAŸ+FÌ@ß:aÝ+Í}›tÎèh£O%ha:{>FŒ^__,v%Ák¦Q‰ušŸ™»1HyÊÑæ0¤28ín¯þžÏ´Åô¢×' ŽZÉĸæ¸0:ä$dÊßÚWÓüÄÅÊ(WF<—†G&…ÑÖ¾ü'ܥƢóÈÙ7øèXe†£²«ù6ÂÄÀœµFÞ¥ >‘Óæ~Ä]­ì¨ÛãÓ7)Ï>æ[—KuYim1Í5W@ÌènŒ®;þùÇ?eÒK¯½Å/¾¢ç(3,ÑQÜ«•°Q°[$“*ý2]ºÊ‘?GÞWDV_iËüèÕ7ã2zŒ¢·Í{¥¨£©Eÿ#at& íþ ±ÉÿüãŽü+èlP¸èµkHOÔ±_-»É‹ÿDIuŠ2ö>z´w»¶õL;Æh.¾ñÃ×4+ý9G³Ø™ÄÚz£5FCˆu”5VV©ƒòÑ}¼ $2mžçú*ýèäðѲżwP¾èÍó\û…t!#4V¶¡1‡E‹Æž·É:bKb´·Ÿ9§‚Ñÿ"”¾Ú§0 nÈÚWÂ;OMm+ëàO]ľ¢O]Ù×(bØá?†ðmÕÑÖ²2¯Fõ^5ŒŽ8BJŒVNyÙèP.kPžjM%°Þ´†ìLࠅ庲»pª~C[F/QãÅèʪO@á'6äš¶^Ñ– ñÑ!ÃÚ–ô` ø±¼·JÏ,z0Œ†Èè2Æý /LËwOòMTòj_å`t¦]µ‡ïÍ#:£:WS½¯ÁceA`tYŒÎgŸÍ鬌fpæ5ÑÖÂÀAô£CâžÚÖ¯MÏI'šÇECE6Ä›e0£íEC|s¯(e÷‡°ãkq´Œ 1- ­ÕõÂÍœºèŽÀSWäJy¨‚†yÆœ£¡I(3ÌQÎ3’|ÂëÞ‘6,¾´ËJoA£S¾  M£ã¶OÞÚ5µéFƒ¦R¦_éIÆ"ÕjÛ‚Œ†&ÎG×P¹û½³t*mtRJgÂÌŽÀhŒn£™ô£WߣÁh0Œ'F×çõ¶xÿÑßöŽz¤#‚7&L FC`t¥>ºy*Žéa\.0£'”ÂpЈu€Ñ`4=pÇ)£Áh0Œ®7§ÿçŒÅÀèZ3z}}½Ô»ëÒÅ •JÞкÜJ¶#ê:uåž½îÖúË—úõò¥RcDâ@.^¼XöáÐCÿ'Ñ£!0ÚÁ—õË %Ei5.—‡é~ÎÝþÐ •T2&7QêƒçòËWª‰ÈУ(ûQª |4”Q]û7ÅGwK¼'.Ëf´â¯bt5 Q›«ò WR‰«Ø }ŒU³Ñ¬ª-£†A„²Û•'?pÐÈñf´Åov#Ó³<è0d,4/^¬`+•ùYñFU}%¼¬GWgFÃØV»˜ šÖ[½;èTè–²¡ âø*bSzlÝöFC9.Ù1ºÿž^¾‡¢ )¯z²ÜÊÆúå2ˆ)Ï¥X•qÛò¶%Ë$èÇrßRÓá¯1ϾbƒÑ`téŒÞ2ú˜Ówö²·¨ÙÌŠŽ«[î¶*+Ô-¸ øhh¢]VÌ!©7¦•5ð‹u\ګȃ€µYɯÔבò¢ÿ÷r•?‰ÜùƒÑ•Ñ!ņc\÷.nðÁ¬o;"‡W¹-g/=FÜ­p[é¥>lhþýÞøÔ¶Vù£á£KgtÖ¯ÄÛ¾;‚·õ ZýTöÔ¡Ç¢Wô«Vä¼ÁG‡óˆ*|-W¥ceT³ÖJ£Ç€Ñª¯¬Ê ]}[ªVÜX3z+©Þ§‡Sº%>*h F׳^Z‘µÀèÒãÑ¥wuÑmG`tnÚª¡~éÚeºkb–ÁèF«‹C£ëè3—ÂGpY ˜Æ@Ì k”Œ£!¼Ñ1}´²Ã>”Ú’¿‚ÚŒ®¯Áh\†nN¬ƒ"ÛtÖ¼F¬ŒF ±0º FKÌ0Z†A˜lá£ÁhQ6üpÀè–ZcКV4§à®¡Ë£!Œ¶+¼ KýkGŒ¯êÈè™™Åhx+h2ߪatŽ7zµ:¸\=£ëØ4 M¸Vý»Ggt¾«‹Ñõ¬¸]:£q… ‰Õú&…ÚíÙÙÙ¬ÍmJg´Ø'õ넆&Ye0º 1—û×\=£åi¯K¿wT333ç!hRUÏz¸.ÕHZF2=Kg4Üi±éZ1Zuˆ!E§¡¸Rç¶^ñhšX]e =j(0‚ Œ† ‚Àh‚ 0‚ £!‚Àh0‚ Œ† ‚Àh‚ 0‚ £!‚Àh0‚ Œ† ‚Àh‚ 0‚ £!‚Àh0‚ Œ† ‚Àh‚ 0‚ £!‚Àh0‚ Œ† ‚Àh‚ 0‚ š,F_½zu$ëBÑA AF—[¸víZM2 {]œ†Y4A`4AFCÑù}íÚµ«W¯N ¤òÍ·C­V+úA–‘'AÐ0ZÆ )µå³Æ…]›ËìÖ6ŠW‚&×G[¹¬æ|Ëií¯Ä®iÀMÂZí9©- Í1?æà>APIbX”‡Ñç‰Ä’.ª¿bóê+&BWQûmf¨F[ÞÌ_¹{s‹rBìüy‚ ÚHµ(£·¢ø¿–Ha¹–QßZ°Iaú•\úQ[ò]Yuõ¤¢—˜† ªƒâ0ZÎÌÈ A˜¦Ø;G³Þ®P2]L> 4¦kO:S,¯æÈGªQCT“pGdme´rÐꯄ •Öh+—1°†)¬Ó**â X3¹AVÒ>e´t fFа*Œ Å‘yg­-£ ²µÌÐÈÎT¨@CTCLÇa´ÕG‡”Wj•”½AõH(rÌæn@ÕÐ.´Æ‰u0Ø•Qo­gC½l••Þ éG•.ßáyæÛ:ó„ËzhˆÈCPMÑ333á>ÚË‹"¡ó¯&Š‚!my~CöߺŒkE~o >Q´GA d´™ÃÇjTĆgµöEv,úÓB-òBÊH+*T{¨G+ôZfmë’jë4Ôªúñ‹ñ¢w3Cš­Çb.£µ²ÎQ›Ó*»Vo%j§+‰£j¸vÕ‡Ëa0s´8"ožOeRY³²VM±2ÚìùDk€£åàjuÙ6*’·Ùª55„Ñ ³³³&£µ{Þ¬rG[„·mÇÛF[pkVÞ5¯mµ¥®Ö>Z»ô³.i¶Aç ;_¡°í¨0Îç–•È`45ÙG·Ùn:Ú¶ŠÏíA£«4-*S¯ÙÚL‘±·®f4ŠâÊÓ5^íÚËGžÑæƒÁ t0‚Àh'PR˜]m¨™|Wë*Od½¬±úw™êjŽX>H´X‡«{¶;¤n†)¼ŒÖBüüKƒjÃÙ6º+i³í3hj8£Mò2ŒööWÂh늴Y£×ɺ̸µÓeƙݳʺ‡!­ÞÛÁ­Û½§Ë|]€ h‚M‰ 9ežî!±&¶ZB­Ò´7Öaí5<Öa yk;cVJñÂ×ÜÿðŽ«ã¦G‚šÆhUfHßýµ7zŠT+hTYœš0¹c-3l³}€X£ Öºh®g€÷£·Ì)åÓæ0Ý´–¯j ›%œm£©§Š!ÜA ÷ѵöÖ&›äÌè­-A#·ë­7ÞÌÄUÝ;wsžÀÞ¹UÒù‡ ¨¾ŒÖn{Šæ|6ÍË)¾b5uˆZ/z%±)¤é¶«¹ Ó ‡Ù[´6„ 0:OŸJVY1½áx GΑgÊš3º=‚ 0:£ËàN‘./Âû-â­(ߙӯ=GIÅŸ ¥öÊAÐØ0:Óûxy–3÷¶  ˜Žœ˜žQ3±•ï“$ÊY²!¨á>ºxo™Ñi—b™¾òPÉ÷¨È×iuy”¬ý[A=šXGb¼«­tÉ3«oÍWèçÊ*üqåb¦`W¨ÌºLV¹‹daá!(&£]cei>.p¬: \Ë$0·ýÏúlÈAƲã!9²rÁ>‚Fæ£óø²2¦ßý2 “›Ñ®ý,)L_™QÍ}ÊúÐ…}† Š|´Ù".ÓíÇמÎZçW5ÛËêÚûú¬"¾uW7RÚ3À;dÛÝ’Þu€Lצf·Ôæõ ‹À-Þš!A%úhíÞ³¾àWÓ¶ÍeC¶Ëô³¡õ•ÏQæÀµ˜«²yÈðZó"íYû>U(×6A{ÚkÛú¥ ïZ ‚ êÝf{U¶v}GaíÂJ @LW!m[ÿËfÿŒß ^Àõ0Ðl©µQ«uµºNë°XÖC eEº®¶ö(âZX{E@×Õ4zF3c”¸:“kw6Í÷Ud]LÐAëˆÎÕa“%®ü£ / uädöœ×îrOë«/px¸&Ä]§K›é†ŸFCÐÈ|´õ®Ö®11ÑZÇxÚæ¬àÓ¦tyÓ¹{ Û¶u5×ëêS3Î4à«V§¾ž9¥´—É ª„øhyÚy­õ·Èh3üAÐhÍ¿›#°x3Ó­’«KûpŸN¥õÊϬ2j-?¼€ GÆŒžê|ŒöŽ`¸?ÖX‡Ìƒ‘CPíÍø©†š}=›³m: £©%§ÖÕûöÆ:ÌÑø· ëË„uIu¤LL<Óe’‡ò”’;f ˜xçÀDCЈÝvGr™ bxQÈðÍ›Ao´ºí^@Ó:–éñùh¯É¡•ñt•^€O¹êÞ™cQºJ8­uï¬kAT£3I®¬ÊÚ…öÂîÚh”ꀙ@røf0Ç\«‚®¬ϰúXR~F¬oÒ, $WÙ6ÍUR7eH=™¼ËÚáª+Ã|XdÚþìu$Çc‚ÀèhŒ./¤˜c¬€p—¸Jnãï=.o‡p‹µ#õ`—»Ä.œ ÎÝÃgVÄDôe.Simóí¥|‘÷†"«çî©#b'蛂FÌèÜ=ÕÉæÅf9·Kå3/ãu;ßþçX+w'!Y·e­ìh^;-¤“ã¦È“ ú¥D(j¦.Õ.ÕÊ‹ÕßFQ,º{Ô y30Ñœµ.mÌ_t© 5–Ñ% ‹}h•¸÷^}^äsì@¦tÖ3ïºp÷Ëë4‚ÔÐx3ÚUi¹ÇŠ¿˜gõµV´•µî?.IÖ~ñÛ%—¿e2箉~ns :¾·FoeEŠA¹£L÷R,ÉWHˆXÝ8ŸgÔv2ÇEŠ.ù²QD\Öf‰øì¯à  ¨ FÏÎΪŒÌ¦eôqë8×$·’*n{;á‹»K{ÊvU3oÛúá[®ò k}ÒÒeT-´„壭MŠÃ_c­u¼÷¶Z¬È¸\åY<ïò5atÜ]Ò*ª»®£y-¬c hÓÖæòÖÕµ™f§¯Ön`™î·JýAP¥Œfî:f¨$³ÓŒ¶­ mak¤m_ßÇ|ÿª š…pubvêäêÅBuWÄûGm¼'ÍÚc*ßÃ\x†®<]™ð ˜{âÚOsëÖžYûð !rÝ[CÍ`t›š¤Íö0';ã·‚Àe‘ÌAL˜QQø!˜®P3 )`íÏÁeÐ2À2ø€æ(½ûì½Lá×Q³Þ#$hÝòµ£Ìhcâ„tQÛ¶¤FCÕˆþðÊm ®#ì×"µIÇžÚ0}´£NfôÊV¬P{sÓð8¤€zrX_ÉÛÙ»u¾ <š3r]>d ,së4D¦¸¨eh}S"óï=ÌS\»Ê(*„æËsB¼Œ—Ñ¿;æòw®¡Q½…Q.éhÛF÷Ùü)ÒžLmclú¸Ö Ìà°93üQÁœö±¸B^w˜UÄI`^b\ÑvKF‹ßzHõY‰ÆÄ:³&)lÆ|ó Ÿèº½¯ümLj…”&‰Âƒ6ÌZ¹ÃmÛ`‰Þ›öáZÀU«®9²Aà´·Ëlfp/kuC”BU2Z#CNF›ÅY|?ô|üºMÍò–2^)÷ôýÚõ¶ë-3dL®ú6ð`nÂ;¬Õw3pÓÆZ#ì®Ìó#°>¹yz2á2oÝ;~0í4¶m#`¨Q>º¤À9?æßur•ýT0¥LÅߎsï[õŽ/+Îø¾´¢¸÷ZÀ#C a´ú­gjg8*6J̇YÑj»Š¿&‡*…³>årh¶´à!Ê%ÓÚIÖó©A¥Ç:533£¦ggg­óÍoÍ^e]žÙÏêå:Kûxì|>Y·+—/ï¼…ç,÷$÷À»!¹@Á*B¬C~+Q·ÛÝ‚ ‚¢*‚† ‚*+ïÉÀhDî ‚êËh‚ (¢¼ b4l5AP\™Í2à£!‚jj®ó0Ý@U£ü>¤† Šh™#3‚ ª¯† ‚Àh‚ 0Œ† £!‚ 0‚ Œ† ‚Àh‚ 0Œ† ¨FBC90‚ : ýµÑÁAÁc Œ† ž>‚ £!j•&Y1Ça *ƒÑ;(¸É[0‚ :2zÒŽúêÕ«¿`4A`títþüy0‚ 0Œ† ª=£ëV¥Œ† Œ†† +F C]‡f`4A`4|4A FCFçÎ_IF9ê@90‚ 0ZDZüFCÕ‹Ñ´îš©üµfº]Áh‚Àè}´ËMks¬Áh‚ÀèQ2Z3Î4 FCFžÑ2$RAØŒ† ŒæÊ ë€ 1£­! ”BÕ…ÑTá=+•Ý AÐ81zB†šU‡ FC4NŒ®C?GUJ1ãB4Œ®2ÎP7  Aи2z¢|4 A FCcôù‰Ñìì,GÓX< AP=5©Ò KÁh‚ê¥V«55ÁÊ똺ŠAu{«p2zcc>‚ h´Œ–(†† Ýívå¬+W®ÀGCU,e‹%£¥•F™!AÐ8øhÑAШdg´ŠRCAÕk#Ógt«Õ¢>úÊ•+8YA#—=ÖAÕAçÎKÝšÚ¸rI ©V Ñy‚ Zëÿ›¬^øÄøIEND®B`‚pygtk2tutorial/figures/table.png0100644000117200001670000001206610050344475016134 0ustar finlayfcf‰PNG  IHDRšpiBþ¤ýIDATxÚíûWgšÇ“hTT‹\º¡¹54ts•« ‚Ê5fOLtOn3“D£rq&á*‘› -4 ˆ}ÁÙÝÙÿ` ÁM„Æ"n²3¿í9“=êÉÎxƒÚç}ßîêꪾ‹Ðmê9ßSçíê·ª«ßO}Ÿ÷}«ŠF ÀáççG/]Ž5¿@$D  –#±µb¬_FcÙ, ‚(¼$Š6¯¤‰Å,…cErΑñ–ÓúAø›¾"¼Œ¿5ýõמsø Öø9üÈ(Ob‘Z¢Œ³éèøSkÛ|ÙòuK먵eªåKTnm›jï˜6©sŠ,[±Ú:¾nïšn?µí«)Tøjª ««³{º³{꫾iPOÿU\¸Š…Öt_øÏî«ÝÊi¦z¾éVNõ¨¦{TSç/NWMÓêü–½Ãßöª¯ö_UŽ|; ùktaô»ñ™ÁK³ (˜uèâe#H¥5k¿Ù_÷›§|cK,Y¿´¬_ZrÚvöêØX¿äênF£§Ñ³³³Fga®sëÌ™~`¹vÃÑ—Ö}IôÊ¢?mØÒŠð%,7µm iõnñjCËÐ6ÐæÐÿ¶–€°–àÈöa{°-$º#$º-H…– QKpl($),®}[B[X|[Db(2©](í É:£ÒÚAÂÔŽ¨´N‘I,ïŠÍìÅçô²aÙ“”ןO«/¹ð(©¨$/V‚RK”²â¾Ô’~EÙ€¼| sO{¨¸ô´ÒÜMsÌÌÎÌ ‚Ê3¬Vš››3º6·å®§Ëd=hÆxY§±¹Aàg³¹¹Ù• `†ºÐР#¾²¾Õoݨ`­Úo݈ߺáµþck7iˆÖŒ½‚‚–‚,z5X½!T³)btKø(Z ǶF‚4BÍ–(u Hƒ¥Þ" ’hˆBâÇB4aÒÑmIšmIj¢ˆ”Ñ™–‘©£rM„b4\>¦‰³/‹³tÑYZQ¶.6wR²}26W”§•èã ’B-(¡H›TlÀÒƒRÊ X:´\—\iPì ‰Ýÿh‰ºf¼Ñ„¢¡¹¹š„_61ËÌ PÍÑd+XÛ’¶e­ç–™²‹ÂÅT‹qΟnP¶vN¯ÝøÅËLüÖùÃr„À3)xìÕ`Œ0X½>hØ?T ü°4€KC=†„)‚L¶%Â)‘:L¦Ù–2KBJE¥Oˆ2<¬Ë^L‘6À’ Ô~ %ÀR/+Ÿ”–L*×¥T˜”\qY¶OŸ]{1,¡ Ü 8¡Õ,Ý ’£&‚%d2`àJ¦7!8]©¿D-‚;éOa'[Ë*—ÜIpNm hC‡6*7míóßÚµ9¤äÒµ!¸w]°ŠåÂ@p¡phkTÿÖ¨¾ Ѱ‰ŸøbøB¨d0X¢3#ÃFD^ “†§ŽÒÑÆÂÒF£2ÆEY‚ŘbÌvX0#DF,Ò1](-A Sv_rvaJ…!¹Rg–V^c •S§ŠHÂ8羜À†ä[,»A†f†›éŽ®ÉÚÄ^Þ–äô²bç±;O5(aD}áú@ÕÆà¯îüºÿwêÁCê—GH÷QwÿADöoŠÐD3]$VÂ[¡1 Á1ýÈ…qê°„þ¨Ä³wRIJà–hBh–É…ˆbÚ l1ÙzàÇ4"Hqˆ+˜„Ò]&~$‘²]¸W–•Z0¢¢úŠ¢Ú’×èÒë Åkzy½.§np>4ㄯÝè¼_„žË&Îj‘¹ÉÜìõëÆÿb \,çÁÜLCÓRÓF²uË0œ0"ÝÚ¶1xÐ?ô\@øÙ ˆa¢#ÿxL cëÃc„ŠÏEw û‚Å $Ñ…@Ñð6I/ÀK‘Ø‘Ô&UF&Ÿ‹I9qï1•Ú!SGÉ”PˆLí*”B¹*B>$Lט]xYœ} $!.Äq"%‘La‰VZ¬—kIGJ*Óš\¸G‹r©Ù…iÕz H¦×éêµéôH¯ks “­pÎ9/IŽ…¦gâtܤ4NúThn< Öž¡>ée™î\†¾óTcGÏ J¡# ˆP!†ˆ¾xðˆ–!1-ÁâóÁ1ç¶ÅüñÞCdVX0<^‘ÐõËc*!õ­û©»°2µU”öEœüØÝ'P+%ò/îÂ[©;P-§[’3(γ¸ÐœHã ¤; ‰‰ˆÿ SD ±ÿLËJ­M´:@h ‰²ÞÐ復+<8(LÙÏĉ}ct Õfæt'w&KKç§ëîœE1²¡¯«:(ºÃ”Hñˆ,xï÷ò¢d(4®ûÎC0âÇ’äwRÞ~‘I=Bé¹_žPÿ÷”Š—›vêÎJ’ñyBÆQÀ)ÎìÍVÞ{B¥å~”š{4%ç÷Uš×Ÿ;F@’îáBDQÊÈ¥)$‘îšé%º#$.̨ŸäºÐŒÐó&HÊ=dÈ=¬ÛyHi §Swº‹2''! í2»ótC/Â)jÛ= ÒˆÕÑ(‘Ψ„ãá ½¡ñê°¤aH¤±É'€¥,ý­à¿´.° KL?*V´‰ÓÏEYÎqÙväN0b|Î…ûO©¬Â÷Ò Ž* >»÷”J+lI,Fó/câ .˜êÌ &„•Z”*ªuĈÐB´´åB“0Âíf¼;¹ómU´¼Š…Óh¼Žeœs'ÚÐ] ,â„ðÃÁdi§y¨æÁȶ·{à*Ìîƒ$£X”†'ô@“òYdR°ŒJˆN킌zÛñÁSJ¤èŠRôNiÖï(‚Çï€_ó†ò•÷©_)y´H)ŠÛ“KÔt"…A)šâ¥e^ê!sPjé ë¸Ù.Ì=¬%K@˜ÿŽ”‡–º’÷†DŠê‡ì‘- ,=ÀÉí âä \\ ¹ßwöžWNG&ž 7M aD ¹ðÄÊOF¢±Œ2&õÐÿB0brÖq Ÿ=þ{€&å ? , ÎÄ‹‰…ƒ€0§ô´¼¤'µD™^Ú …”Ýcôˆ”Ì+èÙ!Ã…¦\*¯GF´¸ÐLÑâƒ$Ó…˜½Ô¾‡´ëÈ•]è+«‘dÕrÜÉ “{8Y³ÚàWVßIO`XÉ–^¿l}'³G5 !žW K3 (Y?ê Óð tP¬8‹^nGWפ¹ÍP„Ò¼~H§ iþù¤BåÏNw4É‹ \¢#þ¼He–þ!}R^6ô¿‹TjùPJù¸evoJ¤W˜.̨×g`f¾f`1ó CæA]ö[&/bÿéòþYŸkBH ñ+xW»óƒÉGôÅ¿Ä2€öQÅe™ÜI»`pÐ>¸s™‡Bž¸S5•ÖišÝãK3€ð§Ç”$³36M-b³Gâsú~~Bó€–´ ãoO¨ä‚n„°è,Y‰®‘– *JÎÿí)%+—•*Ê{Z¢~^¢~Z¤Òö\L­O±ê QwHÏ+ÌFÔÓF„D FÌ>¨7¥ÓCZ¦ I.Í{[K ?˜,>bÀ féJ?™,=ªíûD—e¹ŒðŒ8]Ù666RK0ºN Ƽ˜@>—ž¨4m\&woÎ^õÕhù¹pùÌñav5!ÎÑHr@0µˆÍE—IãóÔÉù²¢–ä¢óèJwá…ä!¤ÐôÒ6EigjÙhJù‘¸0µbB^1”QÙ›]ÙšUÙ™Y=Ît¡¢VK÷ˆ™ŒDŠ\ø†ÁâÂCbA›.îúÐ@»pׇÚÝOîþDK²ôÓÉÒãú½ÇFâ·×`œ×í$[ç}§ƒ+òô[6Ýi³&),‡;ñ!‚†BÊ‘oã²»Åø¾Ø}]—ÉÍ—äëÈeÒø‚K0.•îN.“–ŒÉÊ&À…©e#²òéž 0P¦V Bf6£j,³z$³z4£NËq¡ÁìBóC·6€ré‰óðX&÷-Q<¢g¹À+Æ–åÇôeŸN–}ªßsbrïÉ©üü_kONH¶×<´ÆÉ¼›Á*ϯ‘«䚪©#´_ŸyWÄ&Nn}š+]ÓCwÂ&dÊ53û=àÐ|8-רð‰õ©y^ȸ_a}¥Ï+èÙ=(£–¸PÇuaqá›W¬\hž]й¼o(x–:FwhAÈtaváî@„ }§°Îü¹þó‰ø| Ngw<ÐËææf&NÒÜöî@L—éd £f{u,ëéëGŽÜéÊÍR’lÆgòû˜ü³{!,ñˆTViºRÊì ñÔž9¯0õ…™HZâB‘"2#Z¥oOš©ÁÚ…„»~§r»ÌM.¬øì hÿWžþ7 Ú{æÏ¯5hÍ8¿w}xA7”›ÀØÕ&‚%´vq‰s'Ç.N7n½ÎÝ<ÕÔ¥ºô5tЉý©%ƒÐâ%*ÈËUŠ2,åå验 Xš”S=”S­"ËÜZ†êò\Ì=0¸ýu“òß*|s¨è ºèàÐŽCH;±vVíz{˜VÉ{&•ÿf¤üƒáŠG° 0¼÷Cõ¾4û>Rïý 5Ðî=6\uL³ÿødÑÚ“ãx9Qÿ¹Ö¬‰ºÓ€èÀíáÆÑ´&w:l‘ëÎnøvŸÌú6·²w»›“lÜä,ˆÙÁãMgš[÷Õ¿*Þ$® ïg*X²?$Ö¢à˜}añ5a UáñH‘‰UI5I¨€Ë´öE¦ìǪʪAɰ¦ Ö„Ëö å5ÑiHBy*‹äµ1Š˜‚â2kaF!a^ÆçÔÂ@FÂTnYÆçÕÅå×Äå×Ñ‚5`DPRQ½¬øŸRv½.ÛQ,³vìùnîÆÈ gíÝRf&[gu\-“¤mïö8$[¹mwºò4’i3ôHÒËÁ:`³@°?E´•-?ze€ ùZ¿ÜŒÄz ZƒÅ- ˆü­äg½\³k“©ü½†¡—6 ÖÐë×[äZ'ð{Eà·†ñÝ«V¶}wËN??¿[nÄíy¤A·nýõæÂ_ççÿrãÑLÍ[—iÝœÿm»ð?ôš}?ÿà [ë­÷ûùáæü“«¥ݼý£ã x‡øk.8h‡›XËóóóNëØÅ9‡ƒ¸ÓÝ^˜G2üm,ó[ Vm-róÖ¼‹' s?vÖp[u~aÞIÁ!¹ÒRÚ×Öæžã¤÷Æj+ÇDÉ[ÎÝéÎ/È ê6˜…[¼üÁãäqz®§ › -o<}zKð8yœË”|%˜É“.Øù¾. Óxœ<ÎÀy›¡åwaþ6ˆÇÉãäƒÙòÁãäƒÇÉãäqò8ùàqòÁãäcõqrï¾®n¸u7˜ÇÉǯ'åMA?ªêéOa=÷xÆÖ^ œÞy{íñ8] ÒYz'N807Ÿ›\Uœ^2ô qzÛ`˜oàôža¤·¹“œU°T©T|²}¡’­Wã„3ŽÙj®ïŠ® } 3%ºž™5YŸËÅiïÀ¸G×´¹‰[Ù›þ3z[_J¶Žq²EwÜj7™»8¹ §ý¼9ÓôîvÃÌÍé²Oâ¤Û—4÷‹qÿŒ†Å†n;Ö]ýÛÃIöCŸU˜½oÊ=°Î]ò|'³¸¶cáa1æ®¡Ë°Þæo1þø„®æ'Éê°¡Í2?ÑAþ`vÅúÌw}8Ù:m·ª9n5·’튘½óÌWqÚ³Wáäf â~îwŒ»ÞçÝÉlÇ©Ì1Nz[›Cq:@B_¬Y–óŒù­}§Íæ ÛqÝé ·f¾k«Í.Ÿy~°®¢0Ç\¬ ±¯Žl¹­ÉmAHÖ9þìÉÖƒ#é]â`TloÅüPÃéîu/Ϧç>z‘ïEù€ÃØÌ5®ì…ÓÞÅdzžãñ‰èî¶¿–k¶NÛÅéõýynáôìðžeo¾áÎçwÊõ¶cÖ\^œ67÷lŸ>€siiiu{&nË:è;]ÄðœNPßH¶ä^*%È•2SžÕW^àÖ€ï¹D-’[ÉãqZÌ«qÚøw„®ÿªSÏ£¾»e;û7MT–éø½ÝÞôó|Ìß tñŸ‚ñOòyãs^6oôz#NÖÓ+<+÷`H̜ϬüÑúØ“|«uÁÅ&`/ü‹oŸ¨@“±p®Ê¹ïÙôtåϼöšíʧ_/q'Ÿlݘ)¹Rù–­çødk…sµüÁº§Í¼ÝÍL°ì_Ùµs{™Ç¹:îä>¶ÂüÂÜ'+Y÷¢]w3s¥­io¥‹ê­dÌãtòݸ? îîƒz¼;½Ñî>|Äãô^œÌ®Ô­Bþx?seƒ :~"‹õtw ´b#s§ÛóNQîƒz\Æ|²õ"œ®¶/ãÞxœ|øÎU¹AÆãüuýÔ…×zˆ‰O¶¼;W玕’Ïçê{õ£_ôHÛùŸ«ý$Ÿ÷Ô_ã OòñåÊO²W§S´ä?¸aý¨þr÷ü òîäƒÇÉ“'“ÇÉãäƒÇÉ“'“ÇÉãäƒÇÉ“'“Çù+ÀéîíY>xœ|,Φ³œsss4Nú×”ùðþ ÔŸN#>¶“-¾àÈÙÙYç‹íN?ÁŒñZXZ®2S|ýåª/››››¬Ã‚ÓÕßkåŸj÷†úö¿ûÿbj˜ñMÓ#ŸIEND®B`‚pygtk2tutorial/figures/filechooser.png0100644000117200001670000007755410102023443017347 0ustar finlayfcf‰PNG  IHDRK ƛ3IDATxÚíOh[Gã® -|‚v¡E ‚vaC2í†,lÈ¢-´¢]DhE»ˆM±o±É"1YôC-´¨]µÐµ‹`gìoì,JœE *´ .*ô‚ºØÐ Î"`/²èíÜ÷7W#Îñý±eûy¡/陣™ÑèxfžùwFÒ¥ÑOré(A!„B!tˆj¬ÿþac=ÊG\`ËÔ^¹š/¸þ{ÀªnýçJey<þi¾°Ôüþú掟vßXÅqÇqLJÍÅ,Šöã\}Áõa›;çæ~xmîîÝ•ìÆêX›ÛX½ÿÇÚÜæÎm¬Ö&>ÛÜ©MüüòæN}á×WkõßÎ+ÒÆzs÷ÿ¯ÆúöÔŸ7›»ÛSÛßmO=¹ñÖŒ?yøäÆÞƒ½æÞƒ¿ÿ~¶ÓŽpù•;¥QÇqÇqÇñasáD1+Ùï¯W–׿î|[Ýê/7í=7· ÷è]ó)ã#>¼)1›äO/´’´^›PòÖ;ßÊJ+j1bs·•9ëÞ”7w á.}pèÇ÷;…æÒ—¿^jƇ*ß/Ï$½ôéÁ¡Wk‡úÑ5z­ºX-6ZYîúÁez};yètý Ðùb|èl&*ôâEzsïhBÿý¯Î¡Þ<(t¾øïU·:‡Îfz ýì¥Î¡ïLèd9$ô‹ltèb5:´Øˆ}çl¯¡_M­d“‡¾uæ Ð¥fth¡rPè­·û:žã¹^C¿y?:´4úÍûksÉCM»C(¡„Jèi 5-N§Põd¢ú„>Â Þ žµˆiPܤØÄkBÄH„4¼‰5pÀ[Rx‹=yðÖ=Ú-¼E… oq¡GoÝöôÁÛñC;àPB %”Ða í oja£ú9.M¸§™·AÛ¸ÉE¸ÅêµÚûÿ¿çÍ,kÔôßáÀÛöÔã/‹pÝÃ[ÚoƒÞk^n°ðÖðÞ€·nÑŽ ¡„J(¡ûÛ²Åjç…Îñgáæ¦éúù§Óuy7åÒo<7]7žK‡p“¦ÙFÚ-1YÑÄ\¼¹Y 7eÈfk&ŒoOu‡pêŒÖ&~;ßXß{ð´nvÖ=¹aþ½¹óóËõ¨ÅoÀ[2´;nð6øE•À[€Åö(Uoƒ_TÙ;¼ b^Ž. ¡„J(¡û[ ÓvwjSÔS5ýöÎ )ã¸É%&y.-zê oû‰©¼‰›:"œ9bDïâáM™PÂ!ðæº› m×KŠpêšQZgZÞ½»±jè¹<³’ýï«.Ιîx Ž ÞŽç¼œypÙÇŽ¸þ†ëŽ8à x#”PB %ôôÀ›Ù×¹T¯/ª‡l®nÚïX) ÞÄMN§D*À_6Ÿ‰xË¥ß:#„³™xr£„«/üþasWVžùÏ••¬::*nÀJöÞ/›;ºgcõá³Ú„pŢݓ‡{ ø™{ C›ÂÚž*6öw”Õ-k¬›P÷³•åÛŸo¬ºx憖FÿsemN¹÷@§nš´8Îxã8Ž3á8vÄJ(¡„zÜ3‰ç&-›ì/¼‰›"NG^Fíy ÏD¼é¸Ì$gæÇܘŽû|Qôö™:Ó™s±J]^û9ƒUõ…Gï6ÖµÓâòÓ æ;š¹8a†ÊD1˜N|yÆL•Öt¿A/ `nÌÍ]óMW²÷ÿ¨M誖zºùdGÇ™pœ ;âØ¼J(¡„z3 á¦ý &{ƒ7qSG„3˜aWsÆUŽmÞö'oü0úïˆkG8-bìì…Š(áÔÍrO®n·§*Sèê8¤Y¬¶ƒ–é"W–ï|kdjq¦éÐÏfÊ3·?_›ÓuóT·ré+wì,œbÎ¥/^œÍ¨ƒ¨¹87í‹*÷G*ˆ:ÌPí:…¶ì0C…v‚¨d¡ÓõÞB[ðæ‡º;â†-ô³—:‡ ü¢C[ Ô]¨pÅuñ¬»Ïv,‡„~5jP'*T Ô9Th×K¨p¥¿¡B»¸P‹IB[*ˆJ:žÚM¨mÂýP³x†PB %”PBݶ̼ú½MÓÏoM×OnŠÇ6—›"îÉö—Í…UÒ¼ù'„ˆvÓÑoŸ…3]mÿNmLtgáÔ‰i]yrC]"ÝïÃÞÚÜÃgv¶-JÕ­;߮͹hc6i ÒÚÎ\×\“Ÿg¨°a˜B ø 7Ô ¥ ­nõ7T°ºXÕM§Pƒ…GjªžN¡f¦1.t¾¨¿—nCͼÍ`>ÛM¨P6>TsMCg3Ñ¡8{ ]›ëw¨ÁÑîC5/jF+“‡šZ4*Tulo¡¦Ž ÝXíj“PB %”PB[­FçvP=Uч{½…pqS'½bÎ$}I@/™Ð—oG8Sœ×þ÷ÿjí…ûþº…½Z3st­"vL{áÜY8á´¨L×·§LZÕ­ÿþ`wÓig®û®t'84ùñN×…L­yžö+¨ìÜ” êì/A† íŽ.Ô G?CÍ8J|èR3>Ô¢*b~¨™ãê*X 5óc93Ô,Ö5Hy4¡B¬N¡‹U ~ƒ5s\ý5pª¹µÎ¡e;Ô"t/¡fæ-*T#¬B J(¡„Jh«Õ0Cœ.ìÔ¿Šî©Z„‹ã¦¤ð&ÏŒÇsS„S°I¸±žô oÝÁ›¦ ]„ó1Æw·=‘Òì=biéãÆªÙÏæ.Œ4s2æ˜ÓÀ»×uHèÆªyý€{²¥@ªÓlLG’˜å”f!åÆªOÿvç[g·Bú' pgóÌ.»ê–]óxºÞ ð ¬2Ô”@çP½Ôá°CÍïÕ]¨&¾j_qq4¡Ϻ buµÖm¨¨á 5ˆÕM¨™ÃŒ ½üõÑ„j68.THÙm¨¨þ†j»·PoQ¡š—KjÖqJ(¡„zÚBM‹Ó)T½‚¨Þ—\ÌÏMÑ &[»Ý|xk!\47E"œ -éë¹CÖnú™è„p‚Šƒ]Ý5óþ·úBç÷ÂÕo­9±öÝqî$º_'h¡S*fŸ›»8ÓÌjMm2„û÷¿ì"ÏëJ@‘¯þ†šRеõᇠH7Ô l\¨vy S¨Áï^CMG¹»PAÔá…j¸¡—P-õìª3i;‡°ï-T5L¡KÍA„ª9ì-Th×9TƒzÉCÍ 6¡„J(¡„º­dt?ÇL·èß.ÂÅsS¼¹Üo1g>¦ÞE.©àÂ]óHZn$T³KcæºîÑýþ޵ö%‘ÛOÅì3Ñ\™îtSwcЋj¦mö5µî×8JË`Œ݆곦kØ)Ÿ'/Ԕư†šNçñ Õ_Atheù´… ’‡šA^C׿†+Ô l|¨ið’†êœGªFšPB %”PBn»5ðí^±w4Üp6ÒÃÉD'„Sñõîê|ï¿ÞŽpö̺°Ïz¡fô}ØB5'@(¡Ý„šÆc˜B«[ƒ 5 ¡„J(¡„çÐÎ=ÕÂ7E"œüp2a÷˜µn©ùŸ+«ƒssÌIc}±úÙK­³Ú›âqvszÏé ]›#”PBjö³J(¡„Jèquîð¹©#Â)R­ìlòÖuˆH áJ£w¾ÝÜ´·ïU·'EÇqÇqÇ»[„;nê€på™/²¥ÑÃwáR¹Ôè?ÿá8Žã8Žã8Ž™‹YŽŠ›äm'¶k_Íi\ˆå_ÇqÇqÇqÇûëâ/ŸÎ6VÿûÃÚ‡ã8Žã8Žã8Âá8Žã8Žã8Žã Žã8Žã8Žã8Âá8Žã8Žã8Žƒp8Žã8Žã8Žã8‡ã8Žã8Žã8Âp8Žã8Žã8Žã Žã8Žã8Žã8Âá8Žã8Žã8Žƒp Žã8Žã8Žã8‡ã8Žã8Žã8Ž„Sl8ŽãÃïñµÙß]Iõm¿b;LßœSÇ¥ôJ£ÿþ×b—Ó…Åqnèn!„†XQõ¡ßYï®öë=¶ÃoHŽcÎ)ãUzBêŸ'7þÏÚöO ŽS[)Â1‰6…wÄA8ŽÒÂmîÜÿcmît:‡ã8‡B ÐBi€p Žã ‡á@8„á@8ÇA8„ငáxfp„áB„Z( „Ãq„áB „bilî<|¶¹ÓXôn}„ápá@8„ÂYΕÊJöη+YJãø–Òá#ÜXjô“±Tº”~=]ápᎠáÜ&*þžµ¹»w׿èz"„@8î$•†Òª/üürm¢_¥¤¹»|á½sùBºtæBº”Ê¥FS¹ÉòÄ“eƒ«añüvÞÆ“ʽ8‘Ê)¶¥æõí¥æá#œàídÌàp8Žƒp!Âp'ª4zC8ƒ^噯¦Ê3v)æï6Öó…wÎæ ãùìíñ|H<‚·éúÔãɲâþ +Ë߼ߩçÂp8ŽƒpΤÒÜÍ¥ß:“K»ã‚‹Õ«µÅêß?ÛiÿluëûëÕ­±ÔÙ[c)5<&‡Õ­ÍþÚÜQ“ _›3Eæ¦^›0#£“ås&ËJ%S{åj¦¦8é #Âõ·ëÞ¡Ÿ/^¹3_´s,¦&”—F?{©4êv©y­±XU]·’½ýyu«¿9OšŸÊò­·Ë3¦ëº’K¿ñ\.íÞ¹Ô¼¹·ÔT­«Ú[ñ—gB¿£i;V²ãù×îçmž¹”©•g¾È¶ÇÐßÒØX½÷ËÚÜtÝ´j}”ºÛ*¹ß]ßn6séÓb#êךʤ»ÖYß:ê{¹^_øõÕÚDÔÓXl|p¹ØPþƒp¦ô pšVޔ̈'÷þʲUƒ¦c©‘‘çÓ##zL¯`¾èީϺ¡æßæY5©èн®gØ\×såÆ3_¼üõlƹñäá“­®€Ía}ÁŒnªÊLÒ!F„;L„ÛX53!¶#ûÃ_vQœæIÔùö?«Rhá’ÑKλË;&ÐÒu5]ºSæÆ`!Ít¯ã¿cmâ§6w„‘]Ê3.\ù¹íWiè[Û‡ûqKm‡¾uø/¾X5ßZmY/­s¡rñb¡J^yМ^;†„VÙá "*º§P13Õ-üJÑýìÚÜo«[.ÞW– ¦jæÐ–á÷×+Ë.ÂéWÐÓ"PltëºI×>WæYuáMוŠÒM1ä@8Ç=Â…Hgšd;.(ôrcS£¢n¿i°7VuE3oº¾÷ài}ï®kAˆ–—èŠN5 J×uãêStˆáá'º¢á'aI|œfÖ+ºžï%çÝåÇŸ³ßqÿ ¡‹Fú~>ýï¨e„꬛ŽþJÖõLÍt÷ NtšÑê¥4ª[¦]°ð³•“"œ PÈZ›0gTv×.«dÔr…Ä£Ö-ª4ƒÚ;¹3–‚´¨…”f0×U¡ráÍ|acÕ ,V?¾?_Ôuóo Té$­dC®»¨¨ }8t¡W3r ŽãÌÂýÂéΨ˜Õ(ªt?«£™}„s?ë#œšUè¦a(T|÷^"„@¸ÃYH©.£;ö¯ B”¤»ªzÏyïùñNsZ©Y-¶ŒB87N­ÈPž/˜…÷¾w·›+¾4„…J·Óï› á4#5ofÓj-[®ŸÚ¾¸Q¨¬ÖM°ò$ÇÏÂi!ëàfá¢LúçÎ×EI÷D!YÒëú£ò•sÇñSpÝÍÂu‡pÂ3UÖî|B„<µ0ÆãŠÂ0³À»6¡eršÁ8|„ë=?îw×±ºâιyñqÚÙ0S‡'}»Z/¥áÎP¹ð£oáî… ) µMšùÑ~ï¤;ßÒúE’ü‚ñ{áZ[pîþ7Í™y]».Æý¬fØÜ%—ñàÔ;ÂEÏ™3 ‡ã8×áì^83*9_4Ë$ì^¸Ç_š½p¦¡ò÷Âu‡p{öš{§¶nkwœBÍÝ?o²!® äŸ`Äpwõ´RÚÙ-³ËWŸÕŽ©ÃG¸~åÇE8ÅÖªÿW²:v_ðࣧÙÿ\_Рžfð\ŒQlQ³R½”†…ƒŽÚ¥ßQ‡‘´ºþáìéŽü¢JÉ–†‰3j¡iû/"\4÷k¸¾¯ë>’ùyµŸHivjþmp'RºÏ¼Ž„1¥7ž÷gÀ´lRG’(t6c¾‹æ'u0IiÔ,FíÂ…î…+6@8ÇA¸Ž'Ršå4!'Rv‡p6-iî[qäB;w—B„ëáÔé´Ç-h!bë¨Õ–êFky¡[/éÊá/¤ìW~üHín²'þ³uµ‰Yó!ñq Òì Æ–äö0•Îm_ï¿£fÀÜíìœ0¬•OýâºÇÝè£Ö ŠéRü’HwÇ`”ü’È Ã{á4£åžDª½mQ/XÉšQîL]«o`Ï¥ìáZ Wl¸{ö4ó¦3E9‘ÇñŽp!¶7¡—fµ¿¥á.MÔÀâé,½^Þ w’„Ãq„C!„ŠÒÐ+4÷¨Åœ‚7-JÔF€Ó\z ‡ã8‡B 7D¥!xÓk¦íâC³ O‹9ÃÏ„á@8ÇA8!„@8ŽÒá@8ÇA8!Âp Âp8Žƒp!Â-”Âá8Âp!.©N ÷ø®ÒØÓoÎ)ãRz ‡ã8‡BD¸‘ÔߨSÇ7ç”Æð—žNƒÓ…Åq„C¡>#Žã8Žã8‡B Žã8Žã ‡B Žã8Žã ÜÐ#ܳ:¤!ÇqÇqnÈnsçá³ÍæúB Žã8Žã Ü!!\ÈyV&¶ê–lÇá6Vïÿ±±jΤzrƒ.5B Žã8Žã ܱA¸•ìoW²ñw>¹ñäá“¶“pö­8­o„6„ãí^8Žã8>Ìõò’Ax_r*.|®6ñó˵‰Éò¹G“åtéÌ…t)S{åj¦VÝúþzu˽s©yso©™©e.ej©Ü‹©\º”~=]Ò¼ŸîÉÞ9›/Ì?¾?_ôs¥˜•bxœ¹ôÏåÒÊy*—Må«Wk‹Õ¤ù·³”æúXêì­±”b³ó–?üµ¹£Ôåksæ ûŽPR„ãí^!„а)ªn bê„Âi¦N¸²’½ý¹³¾ðÛùúÂÈÈói½f´¹ÛXô®}=«®èν{ͽîâFÅ#”rN ç³·ÇóºgÔ,\xþÝ{õß?Ô#[È]+6¶§¶¿ÛžÒ¿§ëS§ëtßêá(7„:y¢†?Ž¿W|;î"\¹„kû¢¤Ùªp„ `j?½P›p]3c•åoÞ¯,oO=þr{JP¤6˜ŸÃ½Oë{§°M× •‹ •òÌÙòŒ®„Ç…páùwcØX½÷ËÆª –º®œëº>å'B \wÇÚ}Çñ“´‰þ8þ^ ܉š…+Ï|5Už*Þ,T|w xÜe‚!“›z±ñÁåbCsYš+Ó"In-Rë#ÜRóæÞRS£¶:™V¯-)Ï|öRiÔÿ¬®›“iíý:Õv%ûýõê–ÏèôZ#ÍËKV²ãù×î畊NÖÕx-Ý8ÇA¸ƒjø·ÎäÒ:Ü¿Çw—KëáÌiá«ÓõóO§ëª¥UÏf.}:›iîþþa«ã~ï—µ9d®SÄUWÇÏ©]е‹UƒšQ³pá-BH~†áô©Þ„C¡ˆpjêÔÀ«9G8•º°§ñ]Á˜ÿY5·ê ,V¯Öæ‹jª • oæ µ‰Ÿ_ÞÜ1ÿ.T&Ë?N–õÙú‚…U§Aï¨tf›+'9Ç£wwÆ`ÒÞ½SdëXS‡«ŽÕ œÚÓ2x¦¡ºbã£kņ®¨ÆÖuóªٌ9s¡¾  2ø±ÔLºÒŸ…óï oÂó3Ì72p!t¢Nx¦¦]W*Ë·Þ¶ düBJ5–æþýÍ¿ÛhÍ­¹‹v´T¦Õh-5ÇRgoÙqâòÌWS噑‘çÓ¦Ûaš[×3µÎÍ3ŽãøI¹~Õð +T.^,Tªù. ¥ùÈä^1ØÖ¾:CŸÕ¼V;þµæåú‹pá-Bx~†á6wîÿ±6×_áBè"œ®Ìf.=›Ñ|š¶¿û÷”FÍÂHÍ­å æ(-ÅŒn˜[¥‹pû­v„Ó{,5_—/˜E>¾«©¦ ˆãøÉ¹þÖðZЮUCošIÓàL•e!Sçœhá¢Ýegêj-Åïî8“„ oÂóÂp!tBN§ ¥\0Ó=¦ØXµã²îÒÊø†¹„ÓÜÆ\Õá “‡ãøi¹þî…Sí­ZÔ.b7Coîî¸ä³pWkvNp¨ºÚõÒBÍ~!\x‹ž„C¡‚pQU°]lÙjV5v«™:í”ðÑ®„LjœXs}f/„íF(ÝÚÄO/pN&ŽãgVÃk×±;{= çï…3×Uëº{átÅ^¥˜EòfpºÞ/„ oÂóÂp!t¢NnšçùbçN@¾ 1N5¨Z¾¢¥•—íáÜî‚NKÓø±\éö·þÇq?Ù§«¾Õ!ñ+)쉔S'ËöDJ³@Ñ?‘R ìÝS+µ§º_—´EÉÂ!„бD8Çqü¤">œ¿w¨ׯ73à8Žwç Žã8N ®¿ƒ¿§ú¥nFBˆY8Çq„ÇpýM—…”!Âá8Žã Âp!Âá8Žã Âp!ŽÇq„ÃA8!„ŽÂq$ ŽãøIrjøãø{p B„ ªÍB!4 á@8„wHµ™^ÛKlîKfûU«÷ÿØX5ÍÒ“ƒ.ùÃL !„ú¥½Oë{Š.zÕu¦–¹”©•g¾š*ÏØ{öšö½[¯Ì6/õž®7ÖÍ+¼;·GÍÝñ|ööx>i ñÓß´BJ éÓõóO§ëzѹRÏ¿vo<¯–¢—v„áB Ü G¸AÄ9 i!„P¿$ É¥ßx.—ü4Ö½ÛX¢¬Í™·Ðe%{çÛ•¬îùûïgÿÔt…ÊÅ‹…ÊdyâÇɲsyæ‹lyf±z­±XMƒjTåd{jû»þs¼¿i…”@Ò;k?½P›PºÒRóúöRSH Âp!4p„«,ßz»²<–:{k,¥†JPuëûëÕ­x„ÓÃè'c)Jªqõï\›»{wmN äÈÈóÿü—/¼w._Hšƒ‘F@«Wk¶Ù«Müürmb²|îÑdYŸÍÔ^¹š©¹1ØF÷æÞRSã¬6-“SzaiÅ#_KF Ý£Ñhå\1„Œþ"„N´j jøi¾xåÎ|QõIT +ÙÛŸ¯dU#ù¡š‰²0“,å* Øú•Vx ô^V<„C¡CB85WîAw 9BN¸%pÒH¤PçÉ'mœöN3‚ ݯëõ…__­/„çÇÓmn•¢…%Óœëz}á·óõ5íZ#jíLhîêN¼ú &“ÎÂõ·d”+›°°=-ó½@8„P{ÝþÃ_¶ÞÖÌ•ª*¿^u5›¹ôélFøÔ‡ªi…+ÏbêĨ”+Íz•F?{©4ÚÜýó¦­‡û•Vx $/+“-ÚÔœÒe!%‡B‡„p®Ôt©Ar?pîÌ’FUýy!{g «ÚÑÈ4Ÿáù‰Â*åD˜¤ñZ×-}ó~ey{êñ—&Ÿ~æ‹ߟ/ êâ‘,)Âõ«d6Vïý²±j»Z8Â!„â¤y¡¨V ª^uCµ~Á‡+ÕlÅÆG׊èÔãbP]ªZKË#UoëSýJ+¼’–•R‚jMD¾ðÎÙ|Áá@8„ Âi|QËÕ i _8µƒ›ô& |„ ÉOTœÚt®®@¡ráÍBÅww?ƒÒu—Jª1ö—ët‡pý*a§–zvJ „Cí—[owšY2 ËýY8 'iG™†ºü˜U3û¸ƒ/»¬Ý`X¿Ò /îʪ=Ÿ2u¨ Â!„ÐN‹@ìbÂÖÈ¥láçÎ5¹ *áù‰ŠÓޤ¤ñ›áxi¹Îlæò׳Í×õáz)w Øý^*%öÂ!„¢ê´èý]fõ»¿K8¤åßîbïv™¡(-kôëØ°âÛwÍõšVx $-«(˜ŒÚ7 Âuwôj§xB.E¡A œ@ÂB…Ù¥=`Úºí¢ÔAÕšCÓ’;’ÚÚ·*áùÑgí)a­ÑYÕÏÚW¦ÚÕmÚQŠAãµþ©bÚwç#œŸ–mÚMÞüëý-»ÕÞt–}ªÝ‰_ŒŠ:ÍÒì{Ê¢ûiNIÃ^v0ÈÔ0B©¨S"Ugú0ƒ{¿[3k&Í=Æ©_i…”@Ò;ݶCýy-¤ôwýpC…pݽÚé*ôèR„¹–šCÁê-erÄ#œ=­ÑÔ]ú”Žé$/¤ Éî4M]iTƒhî^25ðê (Wr{dˆÙW¦†Yqº÷芿2*-å_ 7è’Qºnníìœ)«ø³ÚB§S!î<ü»Út¯?ÙƒÔ~°™Ña$î [¿ÒÄ{á´`Ò­…p! GA¸¡[H>…ÚûÑ¥!n–…ó¶´£+3tè¶&!ÛèB¨iáâáÔ6‡™Öð´ã Ü \ÔÁ©¾z?æ!Âp§á´FCólîkÂ7Ð#„P¯­OsWXu’ÒáN5ÂÅœÚéþîyEpÃpZ}à¿E õ·doîÒ-=Ò›!íBõ"í1‹ùÊqL „;¥×ÝÁ©½]Šá8_!„á@¸ž^NíýèR„U?‡Bp \P§'éa¦QGN‡]ŠB B!Âp]vz’fuä4ï…CÂiæÇqÇñ£unèN¤D!ÇqÇq„C!ÇqÇA8„Cp8Žã8Žƒp Bp8Žã8Žƒp B„;yg^~M£Žã8Žƒp ‡á†á6Vïý²±z¼æ •ÛÕûl¬ÒÁqÇA8!„@¸cp&çtDp~ßžzüåöT¡ráÍBE¯°J—Î\H—J£Ÿ½Tµ÷˜wë…¦r©ÑTn²|îÑd¹6ñó˵ ?æú¯¯ÖÆRgo¥’Æÿj®þ¦RIO=ž®ë¥>žÏÞÏëÅc ‡B ‡ã8Þ¥ H¦ëçŸN×?‚áÇJööç+Y¡‹i5ª[ºGKÜõÙñük÷Æó~Ì6J£óÅïϓƠºT91mVs×õþ¦RIï´k1Z«Wk‹Õt)ýzºÂp!4p„ÓøâXjô“±”;îXY¾õveÙotË3_dË3™Ú+W355WjJ“Þ…p›;?üµ¹3Yžøq²¬œ(†Êò7ï·ç'´Ôä+†µ9Ó¨„Ç\›øé…Ú„ÆYÕ!ÈÔ2—2µp„KZVÕ­ï¯W·Ôuy>=2’/¼s6_hÏ•éLèøê[(}G:¬8Ž·P¡¹UkÍf.}:›Q}ƒêFÕH~¨jÈø…åQ1(WQÀÖ¯´ÂK ÷²à©Ná@8„8©¹jîþyÓ6¥~ö&*6ÁžpHãŽZFâÆr§pºî£Ž€J ³–Ó„à“ GŸm¬ÿþac=$f¼ª.Ï|5Užén®»²Ò"ݯë›;Ÿmî´çÊ`a{Z&ÿ Žã®«NPM¢™«và1ƒt¶‹Š¡ØøèZ±!|j‡ÕÕ•¸#©¢bP® •‹ •¥æÍ½¥f}á·óêö^Ò /äeer¢VCð¦tYH Â!„Ð,¤TÓ¥Éÿ¬;_äqºMWÈ> ®$mu]ó`>VEá“»è%¸\lèÇS<-ÅÖ;ÂÙ½pfݰÎð±{áÌé:Ê{áápÇqáN鉔Úç ÝÚÕ¶6w÷®Í´‹a‚´|á½s­c¬ «Üo½!œ-s"¥y7'R"ÂõòŠ„Bf;ÂÙ{áB„C!„Â!„‡Bp „‡B!„C!!„B ‡¢ê?9§C˜t~/¿/B!„áB ܵ™îÑ»%ÿù'ñž6mù#„á@8„:–wTÂ…”@Ô fB(^zw±ÞN¬×MéUX噯¦Ê3ö³B÷èeT©\j4•›®O=ž®7Öÿж;ûÛ£æ®^p•4†‘Xõ7­HzçtýüÓéº^-¦ÔÇó¯ÝÏo¬Þÿþ* „áB„;Õ§žæRBu'‰Þ,øi¬?z·±.DY›3n¡ËJöη+Y»¬Ý¼I¸P¹x±P™,Oü8Yöc.Ï|‘-Ï,V¯5«IcP½§œlOm÷ÏŽ÷7­Hz§]7ÑzßòRóúöRSH Âp!tHWÝúþzuKãˆSœ/~|¾èÞYY¾õvey,uöÖXJMšš+}Ö½Sã ùÂ;góÅ&וx€ÑHªÒjÓ4¥j\5«ñQÅàŽ}ꊚ|åP³XÇÍ¥ß:“K»ù_¬^­™&³ÕGa•]WÖæîÞ]›SÞFFžÿç¿|á½síßTùר­:™Ú+Wmþ»›…Óû»Œ~2–Ò¨°:7Ý•BèdÈtٟ܈ªaæ‹WîÌU'DŰ’½ýùJVušªÚ,~xT ÊU°õ+­ð转x ‡B‡Šp¡‚ ‚ ¦aSS玌 tE#—‚“Bå›…Š{s÷Ï›ÍÝ((RljªÝ{lœ9|´Sƒí#œp´¾ðÛùú‚f±ôÕ ØÔ”j µ;„SÌÊCmâç—kº^_øõÕúB{þ¿yþ{E8å_éê[˜õ­“–BèdÈ­74s冚6¢ºåÖÞ¾f3—>Íøu²ê‹+ÏbÖDÅ \iÖ«4úÙK¥Q¿uè=­ðH^V&'¬T+©tYH Â!„С"œÆ/ÛG=Íl˜EÿSjäÔt¹©¨Ó•¨&ÙO]h¡ÒÿÔÆê½_lœþÙ•Qç§Æn£Æ}Õvv‡p~éÙ;M·@£³vlx¤w„sçÜôíܹµ¤¥‡:²5OçVÀ¯½ýPÕŠ~¬:§ØøèZ±z\ ªñTóhy¤žÜz»÷´ÂK iY)!¨Ö5h‰Öz€p BÂù¡94¹;9Y>÷h²¬¦KËÝTt½òìÀ[?R+iæJK;ÅÐáÜo¤N@Tih!¨»ü&)ÂEßiÐK[á£ØôŽpíŸ5eî¢]ÒÒC ©fˆžY2õž? §)-öÞžzüe§…Žªÿ}Ü Á×RóæÞRÓJë=­ð讬Úói SmÂ!„Б!œ€J˵\ÄŸ[s›=]iŸ…;x<ÒUã­9±¨P·qUN¢ö¹ߨ÷Y8uºC¸vDlamüî‹îÎ…Ó·NZz¡“!-AŒÞßev;»û»„CZ˜­ÏvŠÕÔ`òQ',†Î²Ã^Ó /¤e“QûA8! á,°™¦H;¬\Òá‡ÏE;w/œü¨ö7£»©ÛTLºn~,ê˜ëZrc1K=]XŠÆ*ÓPcoiÑ^8“7íds÷ÂiÎJ{ó܃@ºC8–„s* -¼ñcP©¶ïBŒG¸ÖwWùX5ß1ié!„N’4;äž²¨Á5Í)iøÌÖQ¦–JE©ZÚ‡™ðÜûÝ'ͤ¹Aõ+­Hz§{"¥[ŸG­%á@8„7„ÓH§Ij)ˆª¡š75œÂ5iú”;‹%tOh ?‘RsbÊ»0Fcœ‚+{ij旄š-8ŒÂ*{"¥ÉUü‰”ʃý¦­ÃBºC8wŒY].âÎùqÚcWF8IßH¿…qñGˆCJ!t’ò®3·.ŠW›jKÿ=iá1Hʃ[kßµ;ŸÖ¯´ñ^8{zs«FUë²p„áB Ü©­ÍÜù¥ÐE›ÇWá:Ìü}q§«ôBý’†´§Æ8Ì´†§á@8„wBj3-üÓL‘·?·gL5cÒö¿iÂÖÒCõ»õiî «NRZ ‡B Ü@$üp®háNË yuÁq”àMËxÔ•ñQMË#Ý7ïQz¡AH{Ì4$t’Òá@8„áB!Âp!Â!„B G§!Â!„B„áBh¸N»ªpÇq?Zá@8„Âá8Žã8Âp!ÇqÇq„C!ÇqÇA8„Cp Žã8Žƒp Bj„3/Œ¦¹ÅqÇq„C¡!B¸Êò7ïW–Ó¥ôëéÒxþµ{ãùÕ{¿l¬ß<å|cõþ«Ã“Öaæ*Äýß®Žã8Â!„Ð1@¸téÌ…tIzͼ„3ßbxÒ:Ì\¹õkú¿;]+?y¾=õøËí©Bå›…J*÷âD*§¿ýÒèg/•Fí=ÛßÙ{šÊ¥FS¹Éò¹G“åÚÄÏ/×&ü˜ë ¿¾Z_K½5–JÃH¬ú›VH $½sº>õxº®{”úx>{{<¿6w÷îÚÂ!„ÐÀN÷¬Í™j7¾ÓÂG„S§ÄO×ÿÝq?y. ™®Ÿ:]ür„+ÙÛŸ¯dUK˜V£º¥{4¬£ÏFÍÒØ(Î?¾?_LƒêåÄ´YÍ]×û›VH $½Ó®§h ~-V¯Ö«Z×Âp!4@„K~2–Ò=G\jÞÜ[jF!\}á·óõ…\úçriw„r¾xåÎ|ÑmÌôÙòÌÙòL¦öÊÕLM ›]¿!¿S)Îf.=›ñ¿…>µ¹óÃ_›;nœ•å[oW–52ªoçÇ…UþõÚÄO/Ô&4òª.B¦–¹”©uwgÒoåê^¨Ã¡oª_ÄÅ3ÿ׌úÝéìâøI[°×ܪåf3—>ͨöˆ_n=2ò|ºS;¢Z.~qxT ÊU°õ+­ð转xªA8!„†dÎà™ºþ<Ì•Æúï6Öu]cnœº.Q¨€¡¹ûçMÛl‡Ü)œ³Mc •g-­ñ¿‘@H÷Èu½ºõýu ‡!§±X¥^žùjª<ÓûI¿Q§¹57-Àíi™NLÂ1 ‡ã§ÁÝzO3WíÀc¹4C±ñѵbCøÔ!¦fök°ð”«BåâÅBECH"ì<ݧ^ÉËÊäDË;oJ—…” B ÂiìSW„mn j€5×äÆéÂ’;Æé6r!w Wun>µèE lüoäÏøi§D±ñÁåb#áÔ<Û‘ÝýˆîîLú:øÞùÖ¤¥‡–p8ŽïŸŠjTëF…곪Õ}¸Òg`ñ©GÅ zI5¼–Gª>tÛ‚ÞÓ /¤eÕXônc]¹Ò ˆ\ú­3¹tˆ‚p B„;„‹oìýå+ÐÈ MØ §ú\‹Àý;·îòq+<߫׋U­žèWZá%Ð]YµçS8wðé¾ ‡á†zÎÅ}Ê?X?üN׺{·„dá‡h¡‹»í ÔÍu5ÞþÜš «»;“~£øQa·Ã¡±áø½p ŽŸŽ½pk»¿ËÔ„îþ.ár»ËÝŸxï Õ²ÆN¨CÔN6·þìOZá%´¬’îá@8„7t{á4nêï…sãT¨aÝðIȶ97s\v–©ó®¿ÖŽ}Ê=&D£ªZ¸h!1´ƒ Ej¤Õ™Ð²™îîLúTæ–›šO©Ät´‰‹‚p8Ž»³Cî)‹ªÝSµüOõ‰fø£N‰Ô°š3á1¸ƒMnm¦ù+w•D¿Ò )¤wº'RÚzÞRåïúá@8„:â— ¨1Sór"¥=óÐÜ9YžøÑ¼±Ç`RÔÛâïtO³3~·¶+6åM±©sàïŽÓÜ—ºÍàù¸¥bá–bvçÁº»3é7òO°(jÏÝI¢o¤N‡ã¼.þ]gîN°øwµißšÿž´ðì¹»¦Æsó£ÃHÜù´~¥5ˆ÷©M±ï…3®¡º…£ ‡áú€pÇëmij&Ý¿ãîýûFÿÜÃ`B6Öã8އ»†º§n9Ì´ûe ‡áN ÂÙÅ'NzùFZ6é.æÑèµ{BÝMÇûW_™:*ä•'Ç+-„C!îÿ¶a–,†œ¬~§–Vú‹!¯÷òoîb-ÝÔNwŸ ŽãxÀ£¹µÄýø¦Âp!Âá8Žã8Âp!Âá8Žã8Âp!ÇqÇq„C¡áB8Ê !„þv„áB µB!Âp!Â!„B„áB„C!„@8„Cp!„á@8„áPôl‡2@!Úq„CpÔfC®Í‡Ï6wøBˆv„áB µÙ©@¸Õûl¬š†ùÉ Ê!äkïÁÓúÞƒbãƒËÅF*÷âD*—©e.ej噯¦Ê3öž½¦½']:s!]JåR£©Üt}êñt½±þû‡¶ÝÙß5wÇóÙÛãù¤1ŒÄª¿i…”@Ò;§ëçŸN×Ó¥ôë6õñük÷Æóª“A8!„@8.Rú¬â¡<B¾$¹ôÏåÒ‚ŸÆú£wëB”µ9ÓẬdï|»’Õ=Zà]¨\¼X¨L–'~œ,û1—g¾È–g«×‹Õ¤1¨îRN¶§¶¿ûç?Çû›VH $½³6ñÓ µ wüRóúöRSH Âp!4p„S¥FKcœwÔgÝ1E]Y›»{wmN÷Œ<ÿÏùÂ{çòÄ4—~ëL.­ÆO ÛbõjÍ4N­fOqV·¾¿^ÝK½5–Òˆ¦Éuks燿6w4Ò)wQÛ”þürmb²|îÑdY©dj¯\ÍÔgH©V–o½]Y¶©·rëÇ ÜÚûG?K)WêL$½3 áB¾‘-#•˜-[u&nî-5õ;ÚodRW©†Ãaø7 y*Ÿ4„PïÒü|Ô@Ï|ñÊù¢þ£bXÉÞþ|%«¿h?T3Qf’Å \E[¿Ò /ÞËJmÂ!„ÐÀN£ŒêF«³ÞÞÄš†ÐG8uèu]°¡ëõ…__­/Ïtš=]QS-LÒh¥§pE `LV–]+6ôYý[Kelóüäá“-Lã­ëõ…ßÎ×”Ád|©ªÁv—#jÄW1ûÝ} }w}åVù ¿ÓG¸¤ßÈïp“tݽS¿uø’Ëäß4î©Hú¤!„z—†Àô—¨™+7T:~-çj6séÓÙŒð©US WâdŠŠA¹Ò¬Wiô³—J£ÍÝ?ovª«{I+¼’—•ɉÚ, `)]R‚p!4p„ÛX½÷ËÆªm´´å`„sÑ¢$L¨QÒ¨V5ÕšSr?«œÄ7º•åoÞ¯,köÆŽ¹š!A…Òu݃ùTx +E5É~éÙhÍDé;FÍXÆßé#\Òoä#ÜöÔã/M*æ·›/~|¾(¨Kú¤%ÿ¦qOEÒ' !Ô»4/Õ DÕrn¨êj®T3hX-:õ¸Tké¯^Ë#UïéSýJ+¼’–•R‚ªUÊÞ9›/„ ‚p B„ë©6 h¡]§N|g„ó™¸u5·Qéj) »ÐÅÓE8?·.Âi‹¹þBå›…Šïj˜Ýo*×"Ow„U3j’µ0 áÚKÀŒÅúÀr§páß(þQº‹-UnñËú÷M÷?IŸ4„Pïrk˜N3K¦6ögá4£eòcV=éãVx ¾ìòïÖ_ïi…—@weÕžO™:Ô„áBh€çŽ,º–Æ£æ[â;ëÝÍÂu‡pvÜÔ€ßè†HË`ì²ÃÖØmÔ.µN³^­¹)BîôSIúBŽ3Ñ2¤ÙÌå¯g3šÇëá¿©ÿT$}ÒB½KûÑû»Ì,½»¿K8¤åÓîbév™¡-kô먰:KCií»æzM+¼’–ULFíá@8„×7„³¸M“£¥,Zt§ýfn<¼³n÷™fUÍžÝ gÆGµcÊß ×ÂiIžâÔH­Û 9¢öWH.pj—ÊD»ø|´óËDåf¡tÿ1-ñwú—ôÙsÒZãÓ*gÿ´4íîóNßÔáNþM㞊¤OB¨_Òì{Ê¢û¹DÙÁó*”Š:%Ru‹3á1¸÷»5›fÒÜcú•VH $½Ó­c…—ZHéïúá@8„ȉ”;tÚ9Ó@&oiåÍœHiÂ)»C8·9WÃï~ {ÀFk—]|GßWŸRS­¥•þœ¡=Ò¤¢{t܈_&ñwFÍõ…#÷èýŽ*y¥å~VWü…”JÝ<“,ÿIŸŠð' !Ô/…¼ëÌ'W›êpÿ=iá1HíçåšÖA‡‘¸ƒVýJkï…Ó‚I·6Â…,á@8„·î‡öV›¸rWÙœ}zþ¶ãþƶÁçŸ' ¡ã'­°8œ¿ÖÃLëhÛq„CR„Ó¿[]á°ÚL‹Ù4ûá:¾-„áBÄ“†ÐIh}š»Âª“”Â!„БUýnm^›©Kí.Ñ‚|¿‹ìtJKCÞ®~çqÿ¦!âICè¸K{̺{IÉ0§Âp!tÄU?µB!Âp!Â!„B„áB¨U¿Jm†Bp B 5ÂÅg¢cšqÇq?Zá@8„tœ M&Žã8Žƒp B ݌芛†ÇqÇA8!„@8ÇqÇA8!„ÂÎápÇq„áBh¨ŽãL†ÏÍK±)Çq„áB Ç™ µo¬ÞûecõhK^©o¬Þÿcc•_Çq„áBhè޽p \'„39áÁñÓìÛS¿Üž*T.¼Y¨¤r/N¤réÒ™ éRiô³—J£öžíïì= MåR£©ÜdùÜ£Érmâç—k~Ìõ…__­/Œ¥ÎÞK%a$VýM+¤’Þ9]Ÿz<]×=J}<Ÿ½=ž_›»{wm„áB„á@8Ç»tÉtýüÓéºàG#üXÉÞþ|%+t1­FuK÷h)¸>;žíÞxÞÙÀFit¾øñýùbÒTG)'¦ÍjîºÞß´BJ évCkÁübõjm±š.¥_O—@8!„@8?4)©‰R£¥qD;ê³ks¦:vÝêÖ÷׫[ºdäùôÈH¾ðÎÙ|¡}Äô·óõ…\úçriw,s¾xåÎ|ÑmögeùÖÛ•å±Ôè'c)h–g¾š*Ï(u5Šò•ìom#*ßÜùá¯ÍÉòÄ“e¥’©½r5S«,ó~e9¤‹£ñ]›[“º\WÚ»f,Öæ³õ½”ÿx„ Ïgx9×&~zÁüvfCÊÙ¦«ñæýÝšø…”Q9oÿEZK†BmjnÍùv;4aß+Ù3‰ãxü¼PT+ ¿Ù¨P}Vµ“_7ê³°øÔ£bPí¤úAË#5èãÖ$½§^I˪±þèÝÆºr¥V)—~ëL.ÒŽ€p B„ëi/œ°A g§®yg„óÁÀí‚Çw ü….~œ.Âù¹uN‹•ÿ|á½sù‚ïj˜í7ÕÖsãZ$©±ÕVóvP—H÷kÎP·æîâ.<Ÿáå¬8£ö]ø1„ä¼»}tî7%é£]È÷JúLâ8²/7|Nµ´fûÃpîž1·Âcð}±z­±XÕbì~¥^Ý•U{>…s÷ ‚p B„빸å6Z_ŒÚ ßïn®;„³36¦[ï7ºa ÜY¸¸%—ÚåÏ×ùÀæ_IšÏr¶ð¹N‹ŽÜÂsÞ/„Óïî¿Ø é@È3‰ãx4*ì¯ Ú÷w™…îîþ.áN}t—@?ñÞx©eP'$†¸²ö]s½¦^IË*é¾A„Cp};ÎÄ.x3MŽö/©»¯ýfÝ!\ü^8°ú{áºC87-€º ¹¾ºþOb_À­\i^N÷«»à⇋¦ÚÁ¥øõ-²šÏvB£dù )giÔuPžµ˜Ç!<çñ©ë~,ÜNôûÚÑôýG×į¤Ï$ŽãHiê÷”E W¹§,jpGwªi£N‰T}âÃLx î Œ[jþÊ=ܨ_i…”@Ò;Ý)mÝkZ×Â!„PŸ3qÇÝ“íLHkïV„kñ¨†0äDÊn®ÕPÃï¾¥GÈäŸ`u"¥{F¢=‘ÒàßÐ=6~Ó¨k¢ %jv+<Ÿáå¬qk{b§)awË!$ç!©[,ïü~'}/Å©£P’Î.&}&qïý½pîN°øwµißšÿž´ðäZ‹áæG‡‘¸Ã[ýJkï…p¶/Î7íEÈÂQ„Cp=g5+åG‘ôü´ùàßAÇ3‰ãÃâZ¸x8ƒ‡™Öa¿ì„áB \×{á´DÍ]¢P÷”-º,øa"Ï$ާ ¥„U')-„C¡c†pê(» B´$O‹ýÚE†ã­W&„¿¢÷ 3ôx&q|x_î/>îip BÂù¡½-¤ÄqÇq„áBhÀ×Ëq&8Žã8Žƒp BêBÊþg‚ã8Žã8Â!„ЀŽÚ !„:îí8Â!„@8j3„B„áBh˜ª~?”Ú !„á@8„j„‹?΄rC!„@8!„†¨ê?΄rC!„@8!„†®ê§6C!„@8!„@¸®êÖ÷׫[éRúõti<ÿÚ½ñLåR£©Üt}êñt½±þû‡íGgµÚ æîx>{{<Ÿ4†‘Xõ7­HzçtýüÓéºþ”º†ÿTÃp Bp—Jis燿6w+­‡ÏŸB Hré7žË¥?õGï6Ö…(ks¦Ã-tYÉÞùv%k‡±žýSC*/*“å‰'Ë~Ìå™/²å™ÅêµÆb5i ª •“í©íïþùÏñþ¦RIï¬MüôBmBéJKÍëÛKM!%Â!„ÐÀNM”-qjÜQŸuÇuemîîݵ9Ý?2òü?ÿå ïËüÓ\ú­3¹´?5l‹Õ«5Ó8µš=Å©°±ÔÙ[c)hšüW·„Ué”»¨mJ~¹61Y>÷h²¬T2µW®fjŠ3þ»+EåAé–F?{©4šô[„ÜiK¬•– =ù*Ë·Þ®,¥F?K©Ô}ñï ùuÂq„Ðñ•fû£†æ‹WîÌUDŰ’½ýùJV5‰ª™( 3ÉbP®¢€­_i…—@ïe¥¶ „áBhà§QFuß íM¬i}„HèºðI×ë ¿¾Z_®è5{º¢¦ZȤÑJ7N˜À˜¬4*È)6>ºVlè³ú·–ÊØæùÉÃ'7,Ò˜Æ[×ë ¿¯/(ÿ‚«LjŸ… ÿÝ|ßðY8[æ&•¶bSù¨Â¤¿8BèøJušjÍ\¹¡&SýÃlæÒ§³áS;ªî®<‹©Ë¢bP®4륳æîŸ7;ÕÕ½¤^ÉËÊäDm–Δ. )A8„8Âm¬ÞûecÕ6Zû÷€E!œ K>i”4j„UMµfÉÜÏ*'ñneù›÷+Ëš5²c®f&J0£t]· b>•á¿Ewß7)¹snJ%jŽ4þ×Iú‹#„ޝ4/Õ <âCUwùp¥IÃjÑ©ÇÅ :Pµ–Gª&×§ú•Vx $-+¥"U«”/¼s6_4á@8„×Sm&¼Ñ¿NðÐá|üp!AÍmTºZÜè.tñãtÎÏ­‹pÚb®†¿P¹ðf¡â»f÷›Êµè1 á¿Eïß7 /ÝûÍè¯v!¿NÒ_!t|¥Ú zf©uo;2™a í(Ûžzüe§…ŽB·ÂcðµÔ¼¹·Ôt¼zO+¼º+«ö|È 9Ó„áB \Oµ™;²è6Z_Œšç‰‡„Þg¥ÂÎŽ›ððÝp ÿ,œ{¿; çî ùu’þâ¡ã+-AŒÞßõñýöý]Â!-Ûvi·Ë !iY£_ë†ÅÐYZ¬Ø¾k®×´ÂK iYEÁdÔ¾A„Cp}C8»Û49ZÊ¢ƒ.´ßÌ›H°{ÃL³ªfÏî 3ã£Ú©¿7,á´Pqj¤ÖmÈ…:Qû+â.É·Hö}íÉfûG”µÎ¿îçM¿”ÅÂýÃÄÿ:Iq„Ðq—f‡ÜSµØÏ= Ê☚A(uJ¤†|˜ Á½ß­«5“æ¿Ô¯´BJ éÂK-¤ôwýp B äDJº‹ í\i “Îó´òfNh4 aȉ”Ý!œÛœ«áw¿…=Ø£µË. Â%ûáwº‡µ¸ûÖ”{ Êþ¼Ùs,MÌ:úEG¶túÿ:á¿8Bè¸+ä]gîü|ü»ÚT§ùïI ARÜÚR‡‘¸ÃpýJkï…Ó‚I·Â…,á@8„×÷ÚÌÀ†{¼rÈæl48 þ=rüâ¡PiÅÁáÔ‡™Öð´ã ‡á¨Í´ˆN³.Z4¢®|ø¶lt¼Ž_!Ô}ëÓÜV¤´@8!„Ž©+ï.т岋 ZZô(Ðê=6~q„PwÒ3 ¤´@8!„ŽÂ!„B„áB„C!„Â!„‡Bp „ЉG8ÓŒã8ŽãøÑ:Â!„@8ÇqÇA8„Cp8Žã8Žƒp Bp8Žã8Âp B„ápÇq„áB„ÃqÇq„áB„ÃqÇq„áB 7ßX½÷ËÆ*å‰ãøñòí©Ç_nO*Þ,TR¹'R¹téÌ…t©4úÙK¥Q{Ïöwö…¦r©ÑTn²|îÑd¹6ñó˵ ?æú¯¯ÖÆRgo¥’Æ0«þ¦RIO=ž®ë¥>žÏÞϯÍݽ»6Âp! Q7H Già8~\\@2]?ÿtº.øä?V²·?_ɪ~3­FuK÷˜î¾ýìxþµ{ãy?f¥ÑùâÇ÷ç‹IcPÛ¤œ˜6«¹ëzÓ )¤wn¬Þÿô&]]Y¬^­-VÓ¥ôëéÂ!„ÐÀNM”-#jÜQŸ]›3Õ±ÛèV·¾¿^ÝÒý##ϧGFò…wÎæ í#¦¿¯/äÒo<—K»c™óÅ+wæ‹n³§8+Ë·Þ®,¥F?KiD³<óÕTyF©«Q”¯dï|kQùæÎmîL–'~œ,+•Lí•«™Zeù›÷+Ë!]œˆš…ë=ÿŠ¡<óE¶<£œëNuPBòCø/þTà8>¼ öš»ú›õ‡Ÿf3—>Íèo<*Õ¢ª%üPÍDY˜IƒrlýJ+¼z/+žêI„C¡"œFÕäÚ›XÓú'PÑrá“®oî<|¶¹#<Ó=³™Ë_Ïft¥±þû‡u]×h¥§LKe–š×·—š¡BåâÅBEŸ-6>¸\lh©Œmÿ¼ÙÜõq¥6ñÓ µ å_qö^ñ×]þýRUyª|ƒ¾cÂ…Äò &}*pN×ß©þº5sÕ­ðH^V&'ªóoJ—…” B á4#d--G9áüÙ­öÙ*3Jª+B÷N5Õ™ZæR¦æ~Ö›ŠjJ5¯¥!]¶)ŸJ×u¥¢Oõ^ñ×]þý™1ä8¤CCÈ/˜ô©Àq|8]hÕ ¨Æˆ ÕgU‹úp¥Ï ÀâSŠA5ªj'-Ô“[õžVx $-«Æú£wëÊ•jõ\ú­3¹tˆ‚p B„ë *ÔpvƒÎç/2q ¾[à/tñãtÈÏ­‹@Úb®üç ïË|WÃl¿©¶ž×"ÏðˆG¸îò]ªf|׳x„ ‰!äLúTà8>ü‡0…Ï©–ÖŽ2ÎÝ3U;…ÄàûbõZc±ª¥àýJ+¼º+«ö| ç:ïá@8„×7„sqËm´4¾µ.º›…ëì|‘ ¿Ñ ñð8L„S¹Ùëq{?’ÆÂCž LJu/œY‚½¿Ë,tw÷w ‡têcôn3<¤eP'$†¨l“ÚwÍõšVx $-«¤ûA8!Âõ áìr;Óäh÷”±Ð~­î.~/œFXý½pÝ"P+-€º ¹¾À£÷4¹嬜ØÑèÖÞ•§?CÈ/˜ô©Àq|¸O¤4u£{Ê¢vp¹§,jùŸþêUSE©!!fÂcp‡„ÜzXóWîÑJýJ+¤’ÞéžH)¼ÔÊ×Â!„Ð@N¤ÔØ¡ι»Ü=fI®õ5„!'Rö‚@ê ¨áwßÒ#´óO€ì®p’ò¯ÃQt(‹§ãîcùß Çû{áÜ`ñïjÓ¾5ÿ=iá1ȵÃÍ#q‡áú•Ö Þ 'àl_œoöÂ…,á@8„×÷÷¸rÃÙœ}²ü°K «3ž ÇC\ §8Ì´ûe ‡áºF8-s„hÔ=eëdwG†¡† áx*p÷](%¬:Iip B3„S7Ý]¢w¬iQbü.²“rbÛÑ—€^þŠÛAÄÀSãøÁàÑÜõ—g÷´@8!„NÀBJÇqÇA8!„@8Çqá@8!Âp8Žã8Âp BèD!å†B ;Âp!ŽÚ !„á@8„áB!Âp!Â!„B Â!„@8„Bp Bp!„á@8„áP¸ô+×&~z¡6Ai „Â!„‡ŽÂmî<|¶¹Ci „\í=xZß{Pl|p¹ØHå^œHå2µÌ¥L­<óÕTyÆÞ³×´÷¤Kg.¤K©\j4•›®O=ž®7Öÿж;ûÛ£æîx>{{<Ÿ4†‘Xõ7­HzçtýüÓézº”~ݦ>žíÞx~cõþ« ‡B áB]J@’K¿ñ\.-øi¬?z·±.DY›3n¡ËJöη+YÝó÷ßÏþ©M •‹ •ÉòÄ“e?æòÌÙòÌbõZc±š4ÕZÊÉöÔöwÿüçxÓ )¤wÚUÏþ»Ô¼¾½ÔR‚p B áÔD©ÑÒ§ÆõYwLQWÖæîÞ]›Óý##Ïÿó_¾ðÞ¹|a>›»¹ô[gri5~jØ«Wk¦qj5{гºõýõêÖXêì­±”F4Mþ«[›;?üµ¹£‘N¹ÛˆÚ¦ôç—k“ås&ËJ%S{åj¦¦8CJ5i ô’Û(Üò¯/5oî-5•[†&N¥å6äw‰‡ÀÊò­·+Ëc©ÑOÆRJK¤îÒ /U„Ð dºìOnDÕ9óÅ+wæ‹ú Ša%{ûó•¬þÆýPÍDÅ/ᎊA¹Š¶~¥^½—•j{„C¡#œFÕ±V÷½½‰5 ¡0êâëºðI×ë ¿¾Z_žé5{º¢¦ZØ£ÑJ7N˜À˜¬4*4*6>ºVlè³ú·–ÊØæùÉÃ'7,l˜Æ[×ë ¿¯/(ÿ‚Éþ–@w¹ G8Á®¸ùWnÕÕð?{Ðïr0Âé×Ñgõé{©œÃÓJZª¡AHƒJúÛÔÌ•ªÁ ÕŸQ1Ìf.}:›>µÃ¡ê^áʳ˜Ùÿ¨”+Íz•F?{©4ÚÜýóf§ºº—´ÂK yY™œ¨ЖÒe!%‡BG¸Õ{¿l¬ÚFKËQ–ÚñÃ4%aUS­Y2÷³ÊI|£[Yþæýʲæs옫™#f(]×-B˜Oõ·ºËm8ÂmO=þr{J©Ï?¾?_ÔÅXüï‚p~»¨yÈø´’–*BhÒ¼PT+ ðˆU]íÕê TE§ƒê:ÕZ©š\ŸêWZá%´¬”ŠTõ|¾ðÎÙ|!~ЄáB \N˜¡Ezºõ&?L÷]ÍmTºZ‚è.tñãt¡ÈÏ­ EÚb®†¿P¹ðf¡â»f÷›ÊµÈ³÷Ïm8¹1ÛÅŠFŠÍ_Jò»„ \{ fŒÙG»´’–*BhÒßiôÌ’©ýY8 ÐhG™†“ü˜….>n…ÇàË.o ðõžVx tWVíù4©CM@8!„ˆpîÈ¢Ûhi|1j&¾ûÞÝ,\wPdÇM ønØ(u¯%Ð;ÂÙ9·¸#I´”h6sùëÙŒfpî,œ !i%-U„Ð ¤z#z—™áw÷w ‡´ Ú]>Ý.3¸£e~­Cgi±bû®¹^Ó /¤e“QûA8!Âõ áìnÓäh)‹ìi—a¨ ½p¦YU³g÷ÂPÑ*/\wP¤EzŠS#µnC.‰Ú_ѯHŠpš›ÒéjîþBJÿÄ3}ª„ÓîD<Û¿S¥aa{ÿñ3ñi%-U„Ðà¤Ù!÷”E-ös\²Ã+æoV(uJ¤ê%fÂcpïwëjͤ¹#õ+­Hz§[? /µÒßõÂp!4)5vè.2´³(¦L:ÓÊ›9‘Ò4„!'RöEjÎÕð»ß¹ÑÚ·6ˆHš[ÍC*f÷ø7f•žMqs¥+½,¤Ô{ÌÌþ;%7- Ó]Z᥊œBÞuæÎœÇ¿«Mu¸ÿž´ð¤ö³vMë ÃHÜa¸~¥5ˆ÷ÂiÁ¤[¿ áBŽ‚p B„ë{mfàÊ=^9dsöÉÒi,Á¿YŽç ¡“ <Îßïa¦5<í8Â!„@¸j3-oÓ|ˆ{`}ø¶ìã.J`G©"t2[Ÿæ®°ê$¥Âp!tÌNlwAˆ´è,Çø]d'C”€¤Eþç(U„¤=fñ/89Žip B3„C!„Â!„‡B!„C!!„á@8:=¡p:¦ÇqÇñ£u„Cp Žã8Žƒp ‡ápÇqá@8„ápÇq„á@8„Âá8Žã8Â!„‡ã8Žã8Â!„‡ã8Žã Â!„@8ÇqÿßžzüåöT¡ráÍB%•{q"•K—Î\H—J£Ÿ½Tµ÷lgïQh*—Må&ËçM–k?¿\›ðc®/üúj}a,uöÖX*i #±êoZ!%ôÎéúÔãéºîQêãùìíñüÚÜÝ»ks ‡B Žã8Þ¥ H¦ëçŸN×?‚áÇJööç+Y¡‹i5ª[ºÇt÷ígÇó¯ÝÏû1Ø(Î?¾?_LƒÚ&åÄ´YÍ]×û›VH $½scõþ«JWW«Wk‹Õt)ýzºÂp!4p„S¥FKãˆwÔg׿Luì6ºÕ­ï¯W·tÿÈÈóé‘‘|á³ùBûˆéoçë ¹ôÏåÒîXæ|ñÊù¢Ûì)ÎÊò­·+Ëc©ÑOÆRÑ,Ï|5UžQêjå+Ù;ßÚFT¾¹óÃ_›;“å‰'ËJ%S{åj¦VYþæýÊrH'¼«×¦‘Ö¸¯¾—É•òßÞá0£¶öµJÀ¿sJ@y(Ï|‘-Ïè³JK$ÿÎg ¼TqÔ‚½æ®þâ6Vïýb£:›¹ôélF¡Q1¨Ñ߸ª™( 3ÉbP®¢€­_i…—@ïe%ÀS-Âp!4@„Ó(£šußÛ›XÓú'ÌÐrÁƒ®oî<|¶¹#<Ó=³™Ë_Ïft¥±þû‡u]×h¥§ðCKe–š×·—šÂ˜BåâÅBEŸ-6>¸\lh©Œmÿ¼ÙÜõa£6ñÓ µ å_qö^åÖS1øu”CwÙ£=ÚðYý¦ú”÷[„<IŸ+Çáú+Óߦf®ÚÇ i€)*†bã£kņð©BTóWZCrá1(Wªß–š7÷–šøë<ݧ^ÉËÊäDµ«àM鲄C¡#œæsl£¥å(#œ?·ãΫh”TWîjª3µÌ¥LÍý¬;³Õ”jVJó9º"hQ>•®ëJEŸê½ô]tEh*L ß‹¢fÞÿE޶ü¹5ôÚ프<IŸ+ÇáQuŽ­=Ìß{T¨>«:ć+}VŸzT äRÝ¢å‘0rk¡ÞÓ /¤eÕXônc]¹RœK¿u&—ŽQ„Cp}C8uîÕpvêÖwF8‘‰Û}ïø ]ü8]€ñsëŒ+*ÿùÂ{çòßÕ0Ûoª­çƵÈ3i èßv¡æ£ÌözyFm5·¦f^K £nÐ%‚pí¿¬cöÑ.äHZª8ŽÂõwštNµ´v”ùÃpîž1·Âcð]ËÔµ»_i…—@weÕžOá\ç}ƒ ‡áú†p.n¹–Æ£öÂÅwß»›…ë`ìlA¿Ñ ñ¤%à/ïÑÒwÿCû’ËÖˆ¬ÛEèÂõ^Qy°³ŽºÞÔ¤Ÿ´Tqïß^8SGEïï2« Üý]Â! K¹Ë§ÛÝ î¨Æë„:!1Díd3˜Ô¾k®×´ÂK iY%Ý7Âp!®ogË™&G{Ÿ„ÚmÕÂÅï…Ó«¿®;€qÓÒ¨ÛëÛ z/åß?…L;Ü\(u!VûÄ”ŠJÃÂm+W‡Yʃ?žÝéàSvD|ÿñ3ñÏ@Òç ÇñAžHij÷”EíàrOYÔ`“þfUÏD©ú͇™ðÜ·¦Òü•{0R¿Ò )¤wºmðR+;ü] ‡B9‘Rc‡ZöæîFpwX%A¸Ö;|Ô†œHÙ-À´ºjøÝ·ôlüó»+}#-ŒtdꊿR]Å`sbšÝï.:ÌPœ­;¿£Éý^þ~¿ðg ü¹Âqühß çî‹W›ö­ùïI A®a/7?ZÑàBõ+­A¼NÀÙ¾8ßì… Y8 Âp!®ïï…3påe²9ûdùi,(0£Tqw] çï÷0Ó:ì—=€p B„ëá´¼Í]¢P÷”­“Ý¡p”*ŽŸ<J «NRZ ‡BÇ áÔÉv„è cZ’¿‹ì¤œØvÚKÀ}9Aøkv)U?}‡£˜ú!üe*Ç%-„C¡°ÇqÇq„C!ÇqÇA8„Cp Žã8Žƒp ‡:QG¹!„BÃߎƒp B„£6C!„@8!„@8„Bp Bp!„Âp!!„B ‡B Ü@¿iswïÁ^sï¿;B!„áB ÜPK9ßÜyøls‡ß!„Âp!„C¡®½Oë{Š.©Ü‹©\¦–¹”©•g¾š*ÏØ{ÌzÝ“.¹.¥r©ÑTnº>õxºÞXÿýCÛîìoš»ãùìíñ|ÒFbÕß´BJ éÓõóO§ëéRúu›úxþµ{ãùÕûl¬ö áÔŽ÷î Bp B Hré7žË¥?õGï6Ö…(ks¦Ã-tYÉÞùv%k—¯?û§æ-T.^,T&Ë?N–ý˜Ë3_dË3‹ÕkÅjÒTÃ+'ÛSÛßýóŸãýM+¤’ÞY›øé…Ú„Ò•–š×·—šBÊÞndáBèD!œš(5ZãÔ¸£>ëŽ)êÊÚÜÝ»ksºdäùþËÞ;—/„X8˜ùwj„µ²|ëmÛlئôç—k“ås&Ëj>3µW®fjÕ­ï¯W·tO¾ðÎÙ|a¾øñýù¢Ÿ–îW<¶1¾¹·ÔT9¨ñÖh«)UgHþ•Û±Ôè'c)Å n‡gH©†ÿR!dºìOnDÕºóÅ+w拪O¢bXÉÞþ|%«ÉÕL”…™d1(WQÀÖ¯´ÂK ÷²àõ á6wîÿ±6×_áBè„ œF…>©!ôN@¢ëÂ]¯/üúj}a§ñW5áí”'ŸÜ°hdo]¯/üv¾¾ ükùBmãÚ7ÝÜùá¯Íá‹IJ]ŸuËJÍ|8Â¥ÎÞK©”4F«%7Êyx©&ý¥BHõ›jÍ\¹¡RýÃlæÒ§³™èºwƒr¥Y¯Òèg/•F›»Þ´õm¿Ò /äeer¢E›€SºýZH Âp!.²6ÛX½÷ËÆªm´öŸý…p.,µã–iû‹pÂ5œ~¯-A‘Fg]·ÀóÍû•e5ɺÓͧÞue{êñ—ÛSúîšµÔ%ý¥lYµæÜ4Þ5·_ªI)„Ò¼PT+ ðˆÕ …¨º·ØøèZ±z\ jTkiy¤êg}ª_i…—@Ò²R*BP j­‡;ðÂp!4„Þh¡`'éŒpÑ`– áÜÔå¹ô[gì2Ý© âþ®¤-æjø • o*¾ûûÔÐÈ®ÒõçÖô]ì²FåÄ4ÒñËx‚U3jë£]H©&ý¥BHµJôÌ’YjîÏÂi8I;Ê4¤åǬºÔÇ­ð|ÙåëÃú•Vx tWVíù4-‹Ú,„C¡"œ;²è6Z_Œš/êáììV²Y8˜u-¶é4ÆlÆot}黄4ó&Ì‹ÿ”`o6sùëÙŒföºC8wÎEÁRMúK!„ê®èý]f•»¿K8¤åßîbïv™¡(-kôkݰ:K‹ÛwÍõšVx $-«(˜ŒÚ7Âp!®og7p›&GKY´hP‡$Ÿ[kÝéb’{Gw{á<ʧûY-)Ô.2Ôº ¹©}O«C5s%ÔôOÓwñNÛÜýb¿LTÂvŒ¹sH©&ý¥BHÒì{Ê¢ûiNIav0ÈÔ0B©¨S"U7ú0ƒ{¿[Wk&Í=Æ©_i…”@Ò;Ý6Bx©…”QkF@8!ÂõùDJº íœi “ÎéŠf̃{¤G/'R*N˜»`F͹~÷[ØBÌ.2º,Œí߯[ç[º±éŠ¿RùTœþuÉAG­ÄÓ¨R ÿ¥BÈuü®3wž?þ]m‹Õ«µÅªÿž´ð¤öó~M­®ÃHÜa¸~¥5ˆ÷ÂiÁ¤[ áBŽ‚p B„ë{mfÆ=^9dsöñ’Z9¸Tÿ^»“ÿK!„†M’;œÚæ0Óžv„áB ܵ™ãiöÆ=4?|[öñ+=»s,êëáD¸ÓöK!„†³þV¤´@8!„Ž Ü!ZТC> 9‡/ÿríAH‹Ãß#¯ÓöK!„†MÚcÖÝKV†9-„C¡c†p!„á@8„áB!Ô%Âõ7Eõ@8„áB!4@„ë/×€p!tÌNÇ4ã8Žã8~´Âp!„ÃqÇq„áB Žã8Žã ‡B Žã8Žƒp‰n$X ‡ápÇqŠY¸pxáB„;Àë ¿¯/èe¬ÝÆc^MÓŽã8Žƒpñ­|¼p!ÂàJecõÞ/«I?«OžÙB[V÷ÿH^V½{eù›÷+ËéRúõti<ÿÚ½ñ<Ý)Çñã¸.Þ@8„áþÇ׿îÞ]›3ñ7wA¸ÃÇÝÞK5]:s!]È1ó‰ã§Á·§¹=U¨\x³PIå^œHåT”F?{©4jï1k(tBS¹Ôh*7Y>÷h²\›øùåÚD§õ¿¾Z_K½5–JCü‚Àþ¦RIO=ž®ë¥>žÏÞÏ«•ä8!„†á¢ð„6„SG$ê—Z›3M,][? . ™®Ÿ:]ür„+ÙÛŸ¯dUc˜V£ºe—Ä›!}6jÆÞÀFit¾øñýùbÒT)'t½¿i…”@Ò;íJŠÖ@Øbõjm±ª5 ‡BG85Qj´4ލqG·»¯P]шã|ñÊùb–h4´<óE¶<ÓÂi].ýÆs¹´;jÓm5œ!ùOg<€©3¡Ï*þð<èJeùÖÛ•eÝ©òœÍ\þz6Ò! IË/Õ±Ôè'c)÷\jÞÜ[jÒÁÅñ“¼`¯¹5l4›¹ôélF5IüÒë‘‘çÓÚÍDÅ/ Š¡µ°°õ+­ð转xªA8!„ˆpeT“ãã–B?âgájn»…3(%ä°`c®4Öÿ°±®ëïL’ÿÐ8CNàT›øé;~œ´ 3µW®fjº.×õêÖ÷׫[½ÿ^Q`Ì,ŽŸwëÍ\µHÒ`VT ÅÆG׊ ¿>oîþyÓÖ{ñƒ_Q1(W…ÊÅ‹…ŠZ ±užîÓ /äeer¢å‚7¥Ûß…”jÇ{÷S‡pýŠÇq¼¿žá(1Çqþv\72 „c¤!t\fä¨ÍB¡“ÑŽ ´ç'ápÇqÇqÇqÇqÇqÇq„ápÇqÇqÇA8ÇqÇqÇq„ÃqÇqÇqá(PÇqÇqÇñÓ†poŠzQø;¸(+t8OŽã8Žâfè4÷†áøãÄ»{”“"å†úIÃqÇñA åpš{ ÂQz8‡ã8Žƒp8ÇC‰ƒp8OŽã8Žƒpô@8ápÇqá( „ÃA8ápÇqîô¶ïƒ8i„ÃqápÇqŽ>Ì!Ó¢‡²±þèÝúÂæÎmî,V¯Öæ‹«÷~Y›«/üürm‚?ápÇq„á@¸!rÁ[¡ráÍBesçá³Í\ú­3ùÂÚÜÝ»ä~;Èp8‡ã8Žã  ‰kæMð6›¹Z+n¬Þÿccuº>õx²l®¾ÐXÿýÃú0 Âá8Žã8ÂpGì*¾BåâÅb£¾ðë«õ…éú[g •Êò7ïW–µ¨²¹ûû‡Ãœ×‹ÕÚÄO/lîôëNápÇq„á@¸c9 Wl\¹³Ô4ض±:YžøÑÌÂýújmBûåzOk%{çÛ•¬àª»½vúls÷Ï›ÍÝí©íï¶§Bîá†õÙ3¿Q”—g¾È–F‡ÂA8ÇqDFmVeù«©ò ¥Âj„ët`‰)2ý»ºefÛüY8Ó.Ï\.6ÖæZ÷÷rØÉRóæÞRs©ùï-5çöÔã/“ w˜ÏFò›g£6ñóËaÐeaÞ,ÖýÛÑ“O>¹QÝúþzu«4úï•Fãk„ÃqÇA8„;Q§z¾ðÎÙ|AûÜré÷Î*î¿oš…3óµ‰|á›ņfçx½vbò°±ªyuÙ…s{LgÝ¿_³åó\5Ÿøùr'òl؃mZ¿uÒ·ž•lä»÷äÆ~HÛÜ1ÏçRóúöRó￟íØ0ˆh~q3Äà èyöã×õÒèg/™gãú¶¹"Ô4y¶1×SÚþš¼U–o½mÒ29Ñ+ÙÛŸ¯duBÝ+íÃ&oî\bxþA8Çq„s¯—gLk>–ý$SKåR£©œ†zW²fØ7]zq⟫9㚢ð'2µW®ÚϦKg.¤Kг-L?aº~îÑdy,uöÖXJw*bÖêóŒç_»7ž×=™ZæR¦¦¯ç|ñÊù¢îQåꟀp \À%¦Ci:‘ØÌn1ýûò×öß…Šù· uî¿»;ìDÝ\ušÿþ{ïtÓ’bh-³ïN¡Jkï¹ßtâ÷´#Üã/·§Bî᳉úÝCþ­_a²lª¼%¸Q§çP•š*G•€yÒì³!ÜÒ³$˜·¿øþøÍ³gÿê…©‚1]ª‚›»+Y“Šöº9± ƒÁ3=]{žÖ÷h°@Uüƪɉît‡$„mº.Ýžúó¦}bCòÂá8Žã œ{]°¤6T}Á˜9Y=_Ð: ²® AíÛyL»¯þ‰…:Óò üÜÕI-µ×íyx>mN½a˜†e]üSn•OõŽÜ+nZn~z‡¢‘`pÇáô0M–Ï?Í¥µÏMK%ÝÛoú·Ý#÷Æsù‚J2䰓ƺ;çfº¿OnüŸµí)uÍm§Ù\qçëÔUÇ× uÁL³…!w‚p½<áÿÖ³¡ßtmÎì{Œ6â÷Âé[¿¬ÐHór‹U3“¦_VÕŸ`ÉÎwüÓ]Å#ðØ+T×]$SþU «§½óÉCÝiðìÏ›¶Òdš§îÉ ›+„ÃúáùápÇqοîέ Ét]½ÍÖðëRS³gñI4Èë¶’ŠßƹÚE8­ÿÒõy\ÏÔ *'jåg±ñѵbÃöŸµ²;xá†Îõè™4)¬N¶Æ'ÔmÍ¥ß9[¨¨û¨N¹º§“e3ÚáÞ¯2Ôƒ«?˜øY8=ÊñuͧÙûÍÏ)ä³%l:Í>˜iT#äNî gÃüFú}Ui”+ù¿ÍsRÕüj²Y8w/œâ4¥TÝÒ¾8÷ÙifL÷¸nRl¬ æÝg@sk.˜)-33fž%S™jÙC;ní¿ÓV:n¨¹_•~k‡§™m3s}šaÓ·Ï?‡ã8ŽƒpþuŒç#œ{g©g«K¾ðÞ¹|!—~ã¹\ÚAŸÕÌ^§¼µN­¼îÌÞ:“Kû®~‘›[­bSŠf9èXÊy÷!eRxá†ÔÕ¥VwÙIb®èÀ-0k?‘Ò<â.þé~}ÖÂ[kÌ#úóÇ Ù‰¿=U–5›g:Äš9±cÓÍuKX0àvÊí!ß Âôlt×﫪D0¯Š2üßú¬}Ò^µR{,õËjN¸}†V¿¸fçÌšïŠÍß9é#œ;é"\û,œ‰³}`ÂüEØE’FÊ›ôY-¶øgžíðüƒp8Žã8×/„Ó°¬îÔ¦÷¤t7µÝþÌž>åî…³óu꒞ܮ~Ž9M PÑ¢ÍÁí…KÚá†ötJ͘™¥ezà43õ^8uUu§}@µ4îà7Å©ó­1»hÿù“ê: ó´XN0¶soòÓú£ª,ï3»Xîà;A¸°Ó)í³¡j«»‡VdñÇ™èÙðh1¤;Šf+ñÖuû”¶*Ü^ÎMkm΄jN©Þtݽß=EÕ½–kú£€!ùápÇq®w„Ó³ît]Ó²Fí4-0›/^þz6c·œ˜•J6áÔ£Öá(šÓsùSüêu¸+žÜv_½‘A#Ç™ð^¸ÄÝJ ­½@QØ`÷,i ™Y iO#l×W›ÐœÛþNyÈ Ü0¿. á\ ×r_¢Üe ra•ª`w/\/§êXsÅ.ž© ±;0[K=Ý\ùû3Ýg>>ÿ Žã8Âõw!¥Ž<ž ½ÔSÕÒJ$©;ÕÐ"I¹3Ÿuó ~…9‘;—vïWüj…µG©¸gQêÊàR‚p'¼c­Î«?°¯ÏŸ{”K‡Xïš…p»¹¾«knß ÖêÊ«ûk]ªClBíâ´Ð;A¸á¯Ü£Î}Š,\ÙóH›»öº«Ö¯ïÆï>-ú·_ªö)Ú?Ü•–=²µÓæÖ|âï  ‰3j°„ÃqÇO óv${ªd?[y/×·ÃN’XÒÝyƒñ~^Èxš®—gã4¤G9œ¶ù¤ôž6¼ápÇqÇA8üØ#¥wzž ÇqÇq„ÃA8„ápÇqÇA8„ÃA8ÇqÇqá@8„ÃqÇqápá@8ÇqÇqápÇqÇq„ÃA¸A?'›;÷ÿØX-þû_¥Ñ¥æõíÅêbõjM>_”+çõGïÖøA8ÇqÇqn€©$íö·ûˆ3ÂÕ&~~ysg¾øñýùbyæÖÛ¥ÑÊò®”g*Ëß¼oþm®,5oî-V‹®*kswï®dùA8ÇqÇqn€ðV›øøþbµºuþi.ß5TèÆê[gò@î4 œAµòŒð¬±þ¿ÿ׿Ncý÷7V]¯MüúêÚÜ|ñj­ØÎ5Ö;Ï\‡ã8Žã8 á„dñ`¦ë›;\žÍ€p®¯dï|»’íWi ÂͯÜ1¿ø½_V²Ø~~y%k°­å¿_ÉØ[jÚ¹¸ÿþ`®ÿôÂæN¼7wÿ¿tÇqÇq„ëäü¹8Þ–š¯Ý›,w׉4KïÊ3“ås&Ë©\j4•S<©Ü‹©ÜdyâÇÉòJööçÕ-n.—~ëÌt½¾ðÛùÕÕþªn­ÍÝû¥²,ßX½ÿ‡qsÝ”Cyf±z­1›È*ï˦ëçŸN–O×§ëo<7]Ï¥[^žù"[Mþü¼vožŸ,·¼5çÖÙ[Ÿ2¥:–Ò/;›¹üõlF¿]}á×W Ø·ò ÔoáÙR3úi1ð¦;ÝxTJ¥ÑÖ³”.¥_O—4dôOú¼p8Žã8Žã Ü \/]FÓõ/ÏØ£S Î%™ã2‹*ÝîøRÓ@`ºd^úùW½ºõýu³äÏtÇí÷2Qy¯N¹Y"˜K»1×&>³y3óNõ-ï4ÝwÛÑ7³I¶S+<éwöÖXjsçá³µ9Z…Šù5K£æ»¯Í™%”Ý»™‹Ó.;óos ŠÙwç/£hµžŸvÀk,0s¹.\¹¥4–ý$SÓS1_4Ð(t×oþ‹‡?o Žã8Žã87@xsLö ÞÜ™´Þ〙®y'ÈÑ•¨ÙÛ v-;Í|ÎÚœ4×353?cÞ“¶Ô< 'ÜÊÞ;—K›E’æh“ΧSú^_pýÑ»ksrc©ÃQ´À²Pùàr¾àïgKòü˜E¹ºSŸjŸ1k͹ٙ=#SæÕ­ð_<üyápÇqÇA¸C…·~!œæ4,8éÂÐÏj“¶„È´P- áTQ]j»cêào¤{š¥ÉÌ|ïæ ÆÊòi@8ó+Ë•í©Ç_œÞdùoç °ÉÍ9–›;?½`à퇿*ËÚWl„ëß,\ ØâŸ Ýþ‹‡?o Žã8Žã87@xs*qUör„‰ß±Öb¹OmîÜÿccÕŸ1‹B¦.µæ[üEqz¤¦³®9ÍþÎãL´øÐ,4 eÊDóoí/ðÝ}ñ€ù÷æŽü§Ìq&­“-uü‰–hÎf.}Zlø¿Ëþ½pÑ{)ã÷¹φ»?Sólá¿8Âá8Žã8Ž*¹¯óŽ‚4»ÀÌaÒ¯¹8Á›âÑñê¬ëDAý[ ÕÔTÇÚv²Íâ=uåÍqņv!]j|¨½p:¼Dx©.»R´‹6u§Ùé¤Ù?3d‘@9ÑgO6© né=oö½pfw\uK.$‹vóâû*‚ÿþ`Ϋ4ئ,K£_d«ùÂ…7siQcž‡Nól­;;ŸH¹ÿÈû ˜köi4O ž-¿ ÿÅA8ÇqÇqü.d†-þ}qÝ/ª,š÷¿çÝ÷Âé„À|á³¹´;S¨\xӤ隫{­¹ -­´]ðd]j{"¥9Q1+'¹ôþ)Õe×Á'îÙ•ö Ók=égJXÇèÕí0f^Ðîz©@ ÒÌ ^i´²üŸ+KM½þ»Fů}hƒ+U½0@ûÙ@8ÇqÇq„ÃO,ÂY7ˆ%Ðê—+N~qÇqÇq„ÃA8„ápÇqÇA8„ÃA8ÇqÇq„ÃA8üx Ülææ^e9—þèÚbÕw~$ÇqÇqºæ ‡áÄ_>u8Ö³<óýõUßA8ÇqÇqŽnzR„Ógñ“íƒC8±˜@ÎŹçÞäÞÊ0Žã8Žã8]óÓÜMG8t:Âá8Žã8ŽÓI¥ƒÎ‚@8ÇqÇqÇq„ÃqÇqÇqápÇqÇqÇqÇqÇqÇq„ápÇqÇqÇA8ÇqÇqÇq„ÃqÇqÇqá@8ÇqÇqÇqÇqÇqÇqápÇqÇqÇA8ÇqÇqÇq„ÃqÇqÇqÇáÜ Ϋ[ÿ¹RYÆqÇqÇqf4ÅO­ý¼ejÙÛ³™Sh]1ÿB!„BC¯A0‘ÏGQ𦙺îµ{ÅF ÂY¨‰ã8Žã8Žãøqñ£"¦炜;‘Âá8Žã8Žã8Ž&¹DæÂ[„sAÎǹÁùÆêX›ÃqÇqÇqf?œ³B\"ó1²ÂEáB!„B¡A+~&ðÿ.¢x-ßfñzIEND®B`‚pygtk2tutorial/figures/itemfactory.png0100644000117200001670000002172110050344475017371 0ustar finlayfcf‰PNG  IHDR8䃖¯Ý#˜IDATxÚíûw”Õýï'Ԋܹß'™É$“û„$Q ’@P Š.¬"ŠˆòUD“Ð ¹€!„„\Èe„¹a­çüg­óËWÄ~+ ´=ßïù¹vÕ¥]í²¢_r>{ïçyfÏÌ3“I—¶ï÷zw¯Ïìyf2Áç5ïýÙÏLj0p………iã4 ãfzÀ`Xb0D ɃÉ`Hó¶É¯ÑÆ å'sÏ´–h^8‘;;I½™è=Ÿ‚å#C©}ëó<Áú‘ÂqC¼ÁÃÇ-×ÚÍ(©ŽQPðße¯*ѯðµ¡8Â`X`›g0Ì3„¬0¹ |þ©™è·¨®Lþ×ñcïw´ÿïö¶KÜ…ÛÚ™}jQíü˜ÝìøX÷rç±KšÛ_j;öQçñ‹Ât“&;:?¦¢ýøÅcÇ?ÑîR`–ë¶w/vœ¸Ä}±³‹ÝSÍ ºÙõQ'Ÿ§±½ë#v 7?@­»ÿ½ó$;L9øÄ¿3ŸüèøÉ‹Çz˜©8ÑûɉÞK'{/ƒ›Ž9yú7'û/y<ðIwÿ¥ny¦ÿRÏÀ'Z¡Õ'•Ã.v\ìá5§Î|Ò3t©{è’e÷v·žO~Ô3t±oäò©QfQôŽýFÜd3¶ßôýf`ô?ÈT°ÚvÙǧ¹½&'®øúìeÙýŸú̇&˜ýçùñ¿=sþ yÈÎÌŠóŸòú2Ÿ¼¬Õ#öëš~þ£8«oÑðßÜ3àÔ•+W< ^Q599y%4MN^{ûí¾öŽÿ5Áþ<2ïÁ#?™4¸XxtÞ"6’ºðfw=´¤má²væð£‹—¥‘YÌ,k_Þ±`Ù‘áíK":4/ZѾ$ª}qdÛâˆf*DÙ¶ŠèÅ1m‹˜;Eµ/n[}„mj}$<¶miœÇ‰Ì J¡:2¡#*ùwGtJgD Ýìðµù¨ÔŽÈ4æ“Çb&*µÒNÇcÍÌé1æØ VÇg#'Z˜ã,¢NÎ|7ÑzŒœÙ™Å ½1!«#)ïxrîq“ò:¹û¹3™œ{ܘße,8žÂÜåcºËTtÒ\xÒ\t"½ô¤¹ô¤¥´—œ^&»‡Ì&KN‰:³¢lYåkÿù̪þ̪ӊW÷2WΨìÓjrVUoΚÓùÕýäÜf¹&ç=2 ÕìÞõªOç­ëÏÝpZÔ4ŠºxC{djõ÷SS“W¾¸zõêäÕËdåôž£úÊg“žš‹~vŒ×‘ÔÚÚê êáÇC‰f Ôþ¶ö~:ÿ¨á±°ùãaóµÑ×ó²‘ æÿd‘üà≗ØÈ?]<& ÅêüƒKÆ„O,·i~h¹befŸR/]a[Ƚ`ÅØÂˆ *EŽ/Œ“T,ˆ{ˆnFÛÈEˆbIüø²8Û²¸ñ¥±lä5ó’xÛ²Ä á¥ cËm²—{<ÊÆæÆquåó£šÃ£ËÍ6G˜lQéÑfŬ¶œN·ÅdÚ¢¬ÌThŽÍ`æõhl3ñ9¶øìq6æØrY›3N34 ÇåÒÈîÏ›ˆÏ·Å1Op{jº+©è¬±è|Rá9*RJÎËœ)¥KiÌç¥Ü%ÓJwZ9ÙÈ©+ivS¥Óã*;Ù\é4«µ6o^íȬ¾Yí²Ö¸3Ö:©àvr³IµvfÖØ³×¹d[×;ÔÚÁ­L²ùZWv­#k#3r]¸±?*móß§¦>½òñÐr¸™Üʼˆº¥¥%”ÇŠT&Iâ±ÜÄxÕ­ª‚J qé+@}«¹ŸV¡€‚FÃდöÐ’ñù‹•Z+¼!œxh¹—ç‡k4r’‰´‡"½Ì” \ÁLÅbŽs̨/}Æ›ËRì²ç aÌa» Q8 >I(nÊóYíYÂÍöüF™ðÓ¹…[]ä¢&wáVV—mŠÏ¬K_A§³»zE=ÏuÖ¢BòC‚/_ePCÈìU4ÜtäåË_¾ÙÜßqâÒÂÈž‡¶…+N}ó·©ðèýáÑû¨XÕGé7?blAÔ¸’„|Q*bÐËRªa8ßý—¿OýõæßrýÝÔŠ¤~-ÓÎꦢ†ÆÓôØÔV*6ÍêÒtT ÃqÝ$TœnÓ›1Ay¨Èjm9JpR<ÆZÇXááMKB¿TÌe¬&å{ÂPÍ@%i9ZH(|6µ˜%¡ˆ;-ýäÔîâIèƒv- rÜž$LS TÖ¥U†N‘„%Vnÿ$TÃС@.s½+sƒCÔ†ëí4“µQ8X f«4\àvù;¿ÞÉQdàå7¹y[ùMá¢ÇÝ…9 w­|l(ÎZ§ jÀ­ 6*nqf êÕÉÏÈÁAõ4¤3JÔ°0êQEû{ƒzqqt‡Ð¶8ªûÛ廉⟌Žÿѵ8¦maTßâØžÅqÝKb{–Äô.‰éZß·<þÔò„f*ȉ§–%ô-K•ÂЕtœ(M2m‹OÝ›ú9:¥yERïò¤3‘)§#=ܽÆþˆ”Afc?ÝŒ4v‹ùÈÔÈ´ŽooN%gì‹I?iîL?m>I޵ôG§ÆYFâ,=q–nv3£?ÖÚkí±Ž©ˆÏ챌p2EOèé½’0Ç—=&'aL¶M$! CÞÆæsåHd©¨…¡XŽùrTd OO¨…¡š„AìKVœÂájÆ^j•§'¤»RÅ¢tµCêýíÁÒRãÌ|Ôiõî u“P´…2„J*uµçµ•jæ&‡¡'ý ¶¸}’0¯¡X´…™’Æ‚-v‰Š‹¶:ÄL~“œÞÛ ·owUlNÈ®ÿû¬@½zõª jð P~> †……‰Ö”ÚÛOTeM=ê¡ÖÓÇN^Z×± jŒ’0<¡‡r/Áøäw?LýíæÔ7ßME$‰N:ø ÏCº•r„›rˆnÆÐ|œñ@/"SZ–'÷-M¢öoB4©ÝßÜœJ0ï‰J{‡êÆÆÞåÆ3alZË7ßóç¤g°´‡äØô¶¯¿Ÿó)o%f°›ûaê¯?L¥dµ&e·³{o2'gý">³/ÁÚM›²÷þùû©Ä¬¶?ßœJÌnMÈí'ÿéæTJÞ/©ðNE% ãEg˜oó8o‚h$üÄ(ÚB‘„ŒÆb»ú„¡˜°Ë:a8]úl̈$̪v‹0ôÙ˜ñ©3Ö:Ô$¼àßj¦T$«Iè ÞÒ½an³°Ñ­åžlŸ0'Г~D]ÞV»¨Ez°|ÌY¼ÍÅóY€Wü˜]3ƒð±ó4–lws—lw”=é*ÒÁ¼ÃÅü$Ͱɪ' ÔÍÔÃ-­Ô•rl„Eâ1kuD•>_¨ÛÚV°|S•bÚBxDQþ…0HÛ™˜¶‹‚‘¸ŠO{=ÑôM~ûýT¼y›‰æç0JBe«†÷„}URæ^"0ÂÜC‘abëOs/!g´î5Y÷¤Z÷~ÍÀk%i)ÙSrþ-5ûõ¯{GS²ÞþëS–ܧR³_£ÃÌyošóXòö±§Í=•œÛõÂøÇ©Ô¼Ö”¼#ßü0•–ÿzR^WRn÷Ÿ˜26'å÷i»£‚@B¥'L,a˜Rz^Áó”~òî¨X‘ª‰4å=R=) EO¨èÔöf| ̪qY•å¨+ûÑ " ÙNÌ£NrÎz§gËTÚ zø¼CvN‹8T{¿@=!3o]¢'”c%a“³ˆç¡¡nú1K5qHí ;Šw0Þ¸µBÔŽÒ§˜W>í*ßé*Ú¡ë‡wÝCPeV}(“Õ“¨o5Ÿê껑|Œ’pYòxDjñ–˜¾+1}'ÁÀ.šÛ†KS²ù™DóîoyB&›ž#> ?2)™Ï¥dì¦Æ¥÷y:CóD¼¥‹þÛSô(ïO¶µ'6ó -J“­m©YMÙûLÙ/}K€eïKÏ{•‚19¯3>·;!÷TBn_|nR^ç7jÁséù{ƹ䌂×éµ¥äŸJÉï!8-…¯ O¤tÍê–¢vsQl.>žV2š¢îÍø'¡À’ÕĤºõÂÃÐÎìµ+£5›Û<¢N©«t÷H/øìŽªµ“b0£ú<ß› ƒ" ŸÞ¦ë „¹›\rO蟇ÂboF$aÁ67_|Ò*”uƒ‰ZOÈ"‘÷„"5u”%ÛH‹«¬4ê€*v‰J v÷_ŠJ=¦Ä -V ¼ŒÝdJ0ÖZŽû#K-‚-Jo²$Lµ¾HulFO¼µ—˜1åì!³Unf¯Ú²†01³‹bÙ’»#=ÿ•´¼fb,)÷dBÎpBÎ@J^Û×ü éQª%ÿE2‘–Tp*>4¡`$>˜ ºI“Å{ÈT¤6ž¶¿ÅêÒ~2Y­ieƒä?ÿ8•SþFÖÊÃD©¥ì$?À¦A8ƒ$Ô…P««ìbƒ”b0Pʦ$d^Ç{?Ï©×5Ce“Æ¿'¬õÙ ud«m¡Ò 6H† 4n½ 2À“bÔE5ý ¶9%aÚ2) ©ØÁï)§€PKB*JŸr­|úBÅÓnݬxÆ©Öv+w¹„ªd¢¨5W>ï¨zŽškžN-»¾Ÿk`T‰ª|¨pÖ‰úf 5Þr\ìŽÆYz(!MÖÝd*¼„L–Zi9{¬G²ÞMÎz‡’ðd"aVø1CI“m‹Ée¦n°¤Çš ö–”ÄgRÞpbÖ¦æÂCâc4_ÿ8•QôbFÑ^¢±xÔ\ÒON+0• Òdnùþ¼ŠW©H/´” e­l¡šî÷f¯:œ^1LΩüÅ7ÿ=•_yˆžÜR1˜VqVj u’ÐS«»2”„éU絫…{B¿«…-hT¯ºB¹Z˜¯&aQ½K7¹äÔ&÷„T»Š•¶Ð)w†" Kv¸) ‹¶Û 9 À•ÛrO(PËQEÜ êD-²Qóª]nB?“Diå.!(¬@øs;Õk_pVïq­}ÁMùá=l¬~É]ý’K¸öÅsi£¨~¬^¹ Šm¤Y.}gÞ£žêº”h}WìˆRBÒ•V¤iY/³5pfWrÎIѦävRýåm^[ZÞ›”ZI9}dº—3½`?á¡õ„±¬'L,èÓzEö‰ᢳi¥4o-?,>¤FI˜U~ˆðûÆfN[ÊNüñ&e¦ÍR1L÷æWÌ­l¦{3+ú¬½9•ïü‰ÖÃå£'=OV呌ÊÑô*[öêw‰ùÂ5é!Ugˆ=ÏÅC¿$× iñ©mÆè$¡Öþé%!µˆ™ëìj*{3ZO˜µÁéÅ$¿J‘»Ù¥qXØè~µ°ˆïŽIû¢² Å6)Û#uï D[Hîp«Û3º=¡h ¿²g„ÚBÿ$ËQ5 =©è¡Ñ/ …~Á­xS˜á÷²{í^—†bõKŽš]dQk~ôçºW.Ô½"f¾"Wõ™*&Ò9¨ŒäªžÌªÓâ^³Vw™ä?²º+½jÔ²æ|öÚñüš>bµø‘#95Ã,ñx6J× ³Ö¿oÝÀ>.£û¡ù¢¶7©‹Ö¥òŠT§!dpz%!Á¦ö„®¢&ÏuBŒv- ŸpiàÉIÈoRMÝ «Ä³Aêµ;*–¦4 YO¸Ó¥&ž+PO(‡a…d½$tq+ìiÁHøUï¹ ÂÐ? ýÌØ[û¢{5û\¼â~d¿S1¯«¹=“ûíÄjýþ±ô•êfÒ/nÔ]žø‰'”Y•?9x›‰:Oì‰ÑïF žý$¥ ‹_*Ë$Åg¸“ Ùh*:i*>a.îÌ,ùEfi[j鑯HÉTÓKx ö˜ÊDO˜¢^-4•ŸK/²Tœ1Ñ*Têé&Mf®êΪlËYÝFÔQš«Þ#Þ²WËY}ÔZu"£jÐ\5ÁgÞ%g¬˪ž(¨é*|¤#¿¦‡8´VŸ#gÕ çÔœuNµ-§º—0.^"{Íê{©P)”+ø¨ßs«;¢>Ÿ#Û6¢V?7#­H}:CÖ6\Èmtå6ºíŽz6H›x»èj¡÷î¨vµ°Xô„:IH¾Àí+ROîÔÙ,­xFÉCïžÐ·?ÔêŠ]vZ‚ +vû&áZï0\K¾ìA±f/«EÖìuj4]²e Ý'Á¹ß¹î5÷º×ht>òš›ù€³ú5‡¨irÿ¹É ¯§)‰êê]øÀƒüÑ|݇´´´xõ¨ô¿Y&ê•/Þj>Õ?ö„¢r•¢ä¬©Œ–¦6†\™MÜc¦Ò3©¥ÃD&Ût)?gâ ±üïò$áóçEúi®&,wÓâÓí—‡ºñè`à©XóªKËÀêýnª×î?OI¸n¿cý«N!§‘™8\'€äÖ¾þ«Úï×p×½qaÓÁ_m<ôâ7?dVëÆ7ΙV6~Ç—¾ìòŒ×G~3FÔàߤÑ@mn}[Ùâ z¼ø)·nÝÛ¿ú‰:í÷b•7ê€í·‰Ê'HY 2ë|…B«œìË®j=¡Öz_¯÷ÔêgJì*EµSë ³uzB—üéqaPN¼ZÛoM•lì¢B$¡•}†Æës3’•³Iý¡×çc|RÑs°IYjzÒÆ'ÞIXô„£Ð; ù©'9~žþƒ§ð&bPÚõô„zI蔄º=áš=jª1(’y¯kí‹JîÕè™æ×ís{ÂjnÂÒ3ªX®?à"ðsöj0ó;Ý+ò¼éà¯eðØøÖ¯kßüUݛֽùÁæƒï“©¨{ûÃMoýšF/¿õ?›ÙÍ«¶¨Ÿ^ý\¬9µo®x¦ÕçÛ0¨Œ¨Ð¾=£%ªø)Á—Êm_GåKß³—©?ô|zFƒÐûkM>òÏÍØ¥ R§7„Þßi⪽Ÿ¼SêùŽ…vÉ^½ZèRsÏ(s69<{3õçŠÎ7Œn¶ûF"»8áIBí…ºSêû¥¬'ä+RiwTNB§œ„|ÔÁ;Cý$”÷fØr”£è}з?¬xÖÍÒOä¡”„¬þ¹§'¤Ú¿'¬|þ|Õnûû]¼pAÎÃG^ºÀ£™¡¸W¿?|ø%;#íU—g*Õ5¯8”I†¨] C¤ÈÃרÃÅŠ”bÂCHIø¾nÊ Y{èÃMo+®kþµÍÖ6°I¡ñn6¿‰&›?ØÜú!÷¯¹?ÜÖl7W4PC?ùÅ—]Bý¶—FÍ´¡ˆ¾%}y= ¨¡‹ÚÚ=töãœÕü[¿ž/þf­È­>Ã\3Øý9ÕìKÀë† Ö±o÷ò‘ê!iÔæÙ÷} k k‡¸üêübì/ØÐ_X7T\7XÖ0,yHKëÏðz¨lëpù–!îaî!_o(ã.ß6ÄüØ V¬||påcCÌzüÄPÅöáUÛ‡+~v†Æª'G×<9Vµ}dõª‡i$¯yr„jòš£kvÒ8ü°â!nV¯yzHx5÷Ú]#?{¦úÙQO½‹™ rÍs#ª‡åzýî1òºÈ#¬~adËcäZ>nxi„¼qÏXÝ c÷ŒÈ®}qdó^[Ý˶MûF5×½ì3Ž(~uŒ¼y?³¨e7˜h80&¼õ‰Æ7&¶<×øÆ{4jnzCòÁ³[žm:tŽÛ®ë­oi>·­ÙIàmm!Sm'7½}~[³RsS}î‰ÃŽGœÌ︟ùåDÞÃl3éÓ«ŸÉß•‘.Ï|èür ç¶ä÷Esýë¨ò÷Vu¥ÅtKë;o·vÔ5íŽNYa¬÷qdj/6G¦0S¡kvo*¶)Ò´9*m³ÿ‘V'jÙѦúØôÆ8ÅõܱVðQ©2…3·$dˆ›õñ™ñ™¬¦Q˜ß¥ÕÚ|v€4S—˜UOŽÏÚœ]¯ë¸f½»è!›ùèãä¼FáÄüz²ZË®çVŠ„¼Í¢N(`7…©äzîFc!ÍÔ›J¶˜JšÒŠy¡Ø\ºÕTÒÀë›õ,æÓŠëÓW6š¸ÓÊD^¶…FKù“zW ›ÕcÒ×+7+¶óªFaó*åHZ¦Êˆ›4r7ZV5e®nÊ^»ûqµPê¬êmÖµMÒäV‰Ò’5~{õ‹vÖ7^޶êÎSÃâÍC¯}¾50QgòÇÍæñ¿o¶À`7Vð¿5ëq…!,‚?O¸rs–¼æ[îuÓ×êÁaKõî]Êç—æ-cÅœ{w Z¶gr1{=†Å¾Smmôy¬ÿ8o‘¯Ã¤ùYÖÂâ åZòO0ú¹ìŸz¾•çñsØO a(§t€Ïëú·éÍÏU­þ}³éA½²nÜøýµë¸výÿ2_û¯/Ôñúõÿ'êkÒø…4~yã?åañ<_ðµYù:ý éŽùòËÿT^¤÷kÐ;ø_ÜøC9­éqÒç_C÷˜Ï¯±×óåµ?ˆÆ_›Rh¦™/§½ò€£lÝcüýùõßÓ3³ÀÇ;dí%ÍÖ¿ûüú ¹õŸÿúßK§ô ïsüKn~׵뷩k×B} Ÿ¯Ñufy-È_­˜å8 |ïmü¬¹økq³ù+u³|=ÒoÊ+¿¥þ)=¾wáµ!ê/>ÃÛ;ý×÷¦}U!¿€YýWS~®ôع:σ¾rà @ )Q¯yÞfÕÓÉëK~”ß{[HwÍæ}îóÝ×\ýÜÛyž™ü—úä»óçJ³ÍwZÚùLÅ܃JOzGAõY3„¾l¨3ÂfV§;@½#œ3PUúýmr³Õ—’½(½Á5#V}Ní±Ú$?¹ý~Ö=‚öžkŽ~ë; ý€ü®â=— þî¨sû58¨ÿšš»·'€zß:ã¬{:z½T z§ð¸w‹Û¨7G=pî¨s»¯â[À,Þü¢*N2€z÷qÕ š}¢út†ò—ÝÄÿ–6¯aZD‰¬¼ˆ€ÿÙBEE¾<íoëÿ’¦[lk+œM¿›•P—sÿ ût¿£òoEçQâÓ¸ÒÎ1ÿäŸ69´zΖ¾ÒÙ¯ÿ[€ÚI¨>¼M‹ŸÿAwŒ*@ TÝS+øÙü^Ÿ,3s ªÿy¯›cÁc0”å´îc}~–ü#äŸü•ˆw;1)¿MŠOoaI…Þ´çX 5PrÌTÿà÷šq¯û;ÌÕ?Ïﯳö6Ä¿BðW"#ªû$8/!ŸäÐÞÁå ñ9…N>“–Ä·•¨â¦»(¿=辸àÁJ“J¢^—>Ïè•L›üà %6ü¥{:…s ªúÚ‹ðï›ußEüסïËO«=jÚÐÖVÿ· y}ë¿€™éK…þi;XïÔà‹;z}òVK”¹5Äþ8ÈÊsnÿiBOÅY$êí¯Õ¡²ånˆ=ªn€ÝÕD å –ß'‚¬KCÏ(ù0ù'Êq¤G¨º¿…êõÀ-’ïq¢Ù›Ý[ ë¨âmÌ«MûUµ‹ÀAvä‚,}!(ÈɯòŒÖ^ùïúÞqPƒ,Sï‡w¸@¨£Û„æ¤M«5ó5Ðé~põ|÷%Àª‚îthrÚó_÷D½ƒxôG”îÐ?Pð¿ÜP¡»¼|›Ýù?íNïõ;ñÂÐß{îæûÝoÙâsó¡|PAwSsö‚î\ÏT9šï>´~¢üÇ ðú—NTŸ½,¿»ví†òí0*‚Ô²gz¼òÖ Çyý‹Y??ŽÇñ³;þŽžÿýƒ§g“¨ƒ’”b¨ŸJ-Çãx¼&Jiœ¨‚î‘Bõèï•AÐ?¥BMT‚îGP'''*!Q!š1¨” ¾ NrTº@<"Q!ècéÛÒÒP!=*A‚*A‚ € A‚ € A B@…  B@¨P!¨P!¨T¨T¨‚*A‚*A‚ € A‚ € A@… € A@… € P! BP! BP!¨P!¨P*T‚*T‚*A‚*A‚ € A‚ € A B@…  B@…  BP! BP! T¨T¨T‚*T‚*A‚*A‚*@… € A@… € A@…  B@…  B@¨P!¨P!¨T¨T‚*T‚*T€ A‚ € A‚ € A@… € A@… € P! BP! âŸ ‚*A‚*A‚ € A‚ € A B@…  B@…  BP! BP! T¨T¨‚*A‚*A‚ € A‚ € A B@…  B@…  BP! BP! T¨T¨‚*A‚*A‚ € A‚ € A B@…  B@…  BP! BP! T¨T¨‚*A‚*A‚ € A‚ € AÕÔk×®á_ ‚î/Pèt?ƒJzurr BÐýª@=*ý#÷¨ÝsM*A÷•ÔÍ$ü©[‚î M^½L–k€ A÷)¨W¯^õ•Ï&=K_¯šZZZØx¸™¬Ì FúÞÕÊuTŸ.V™ ãV¦P£F}/ëÿ3ªß7IEND®B`‚pygtk2tutorial/figures/toggle.png0100644000117200001670000001345110050344475016325 0ustar finlayfcf‰PNG  IHDR–l-œªðIDATxÚíû[GºÇ“lŒÑˆÊMî0\†ëÂ0ÃÂpÄ!º1ë9^²Ñ1ŠÜ4‘« w`P.>gÏþûÛFbv7žGAÏf÷·³û$}Ì>9»1Qú¼Ý5”M÷L3Ì`Õó}ÚššêêîúôûÖ[5M+1ÉÉÉ oKAzU$zS$Ú.y‹Dþ"Q Kþ,ù2È£Œ·)y1bç…µ“‘¹úè[œw‰\E¢·D¢×ðµ91ZÕdù!©¥¥9jòö_êÇkkW]3t¹ú&“¹YW‹Vèf~[Ût«¶i¢®ñV]ä5Þ]iºÙÜú%¨© t «¹s®vM4wN´ho®.”´öý±U÷eKï:û¿êÒ߯ÒNu]»Íè+¬žá©ßú _ì):ùláEq¯rnŽZj²dß9ê9H ÂÔÔÔ NSóirrrJ0MNÓbjΔ•µ×ÔþîgO½òúå ¯_zmÓ§X·ToÚZ³Éù2hËŽÚÍ —êM.Õ›Ýj·xÔlv¯~Ë­z«ûe¯:¯ÚÞµn~ ®¾õ;|ë]ê]k]ük\j=‚ê<‚k½Cêi…Õ{…£m­OtƒOt³mð‹¡%ÞÕœÐ,kC’(:C’ÚC•E{¸²S’Ü!IiE©:µGf´KsZãsë·ì}Ê\þäômÐüUóÓÓðÏW¬rs}r{Ñ:&öZ¬«Qª¬¬ärªªª²ÄN§©©Ù²²ÎšÚ‰WßøÌéõ~ÑÆ>§=?Û¢½Æè çÁ7œõ´¶é6íЃ6ºè6¹é7¹ë¶xlÝ©ßæ5¸Í[o”π³Ÿ~[@ÿ±ä<è¢w í÷ÕƒÜ%:ψG¤Þ3zÐSJo}b‡|ã‡üeÿ„aP |K¬'‚”£Á©£’ô1Iú(RDÖXXö(*wHš×µ-ðçOçè˯¨*U2É\ÞXRQüPš«ÃO¸Ó9 Z[töd¡EOí09s¡¼¼XÏÏ6ž×ßHý€gã6=hÓŽA°qÑmvÓmÝI³Áx¶úè@Îþ´¶ùÑr  ñ„Ðr—Ðr ÓyD˜÷½#Àã?‚ä‡ñ(  °A„6c/Ø eDä™3(Sk]ƒ"{‚Žö?lG[0 z˼"Úuº…=ÌÞ…ËéE‘`¢Â$í÷'ðoŒÑh7mëܼ½å-ׯ·\ëA›]·¸·mõÔñ³Wß6°? Ô‡MÇ-äš»dá1šN$ÍÆ#ª×[Ú ò”êh<²Q¿†P°8q\Ì£6AÉ×C“»#UÝi}á*]¤ª7:{0"kYÆžgˆQìR_‹W÷)öu¹‡.àd‰›B}8±oqNšf{v×pwf9YnOh|¢95~c@zÓíê£Rßý“úÇÔÿ=¥¾Jgÿ‹ÚîÓ¾•!lÀ­!ëq Ô»Š·60φÆãad£óŒÔyGÓä×ûðG*TV/–éРϦ0%¡ %87CXÚXDzÏãçÔ“9êÑõ¶Ï©¸œÆè\}x°‰ÌQ¤…#ñš¥¦ù[ŠJ*jq“üÜBNœdsº3õ_Ó“w8Ìuº9´œá ŸÏ²ì OçË;!fÛâZó¦K÷&çÝ|J=üŽÿëGÊG¼ß3ป™‹ÿÕþ.þmqns nw Ö¹÷zJ:=ÃZ¼$´|¢Z}"Û½"»Àn|b;|bZÄqÍA í ƒbY÷㟨¨¤‹!Šn±b0XÑšÜ NÖ…¤‡¥ÝÀÎ-&K ”¹¿RäUÊó.)òÊVL~/XO\ᵸÂ8_Ô/×´«ö_zBQ»÷׺‡i~˜3ËÉäýÎáD[Íä'ã\Åt_ñ9¡®æ´ %",ÎÉ*{¢9U´×·L¸x×;ïÔ9{j·{wïðípõûìÉSÊ+è¸kà§.¿yW?ù‚BoøEOI»GX»_ô¥ÿý‰Ò³°Ç–ÄÔŠw5<ú‰zò-?ÛEOpRÏ£gT”òBDrcxÊՇϨGŒbTá*}Dæ°ù±Gš«K’ç–Åå5'ª»RÔ—RÔ®Â>°ž¿ÍQ Ms\Q|ñÀß)*½øÒ?(ê{ŠúŽÙþdžn3²Ôž^„μ9¨€=-¼é¹mfOà÷€Scû-WßZ³meÂ6ÿàá-ùÄ-¨Ù-¤Û3´úñS* ü\@ÄG‘' XWT+dBâ> Š;óøõä)ÿ$<± …É«¢“Îÿœúî9%Iî M¦9Ŧ”ÆfÔ>|NÉ2Êeª•¹Ÿ’¨ì^zàÙ3Ž<[t^/¦ª/%ªÛaàÙ­©N ü@?¸¸ÔâZY±.ñ ßSR¡~çÊ?TdNå•e|Nö†Çñ{¸’-퉟Z“‹=öøöÃØ³C<àÔ œü$g½$mžam~áe¤|£ü¤u1ghN1­¾±m‰]‘5ƒUŒò¬TY H$ImáÉ-:.H×A¡,£4>£JäYeŠìSr>Q50ðHÕ7`à‰/Ô‚+CyDQ@è1ͦ.Ø÷›Œ’:eI?èŠÊ=T•ÿn%TÈzÿÊΘ}?ït0Ž%ŽOÈïña{âæxZœ ¸\š=§«·`B xðŒØ<ù‘ ˆ8ëvÕ'¢%(úÍFÚxÄq4‰€„.4ê„ËËÂ’´0'e8‰K9 ߆(µa©=ñ Äláª^ˆ’²Ï+r.„¡(¡-DÖ©ü:fSê Z‘Rÿ DÏ©øÌ `Cß>§¢³:ã²›¿›£g‹ÎÓ};G¥~¦,¬.Vhzdš^žο=ž˜âáØ†øƒ#`:Œ«Ù}¨k÷!mÖ»P?õȵÔ#tìû^CöÑVØ OÔ¿™½'Zýâ÷?åqš8Î1K³'œxK#–bOÚ[>Ñ îQ̤Gªß53žo¤BdM ý²¡`…>$©PˆÙ‚“õ ©ª¨|óœŠÉ¨‡¯²/Æd·K³;¾aœ[Rî9ØÂTBê¿ÓÑZ+¸5™¦ :`@¿Ë‹;!x<ò’‘Äw ²’‘äwé±ç!SᦎêHÇî£×@9Ǻá#@Ê?ÑÅlÛÔvüSMœP°pþDGÂ7(ªi.ÞŽË!ìfÇ圸ßÒ¸Ü:{šº œZu_úÄ6î”zÇ]ó‹g–s:!¤ˇ`B *)W"’/Gî¾ CNXº!L5•Ѳ+»Ÿ]Hdy5Ò<-<¿:µ°"M]î.AÓ§J(êM(Òî*Š? W_M)nϦ,ÑÉK†ä‡Æ¿•6È€édiË9ÒsäJÎ/›3vdïO;>¬:9œsb ÷D(ÿWº="õœîÑœnËMpö{Æšw&Ö#ç ¬DØÚž¦îBÑÙÿÇ`Y›_Â(ZÑ+n* ŠkIƒAJfµ-Ùš6ž>®Òz!'k,2»¼Ybn¥"¯*1÷" Q¨aÒÓw=¸8•¦–_¤Ÿ–p`8¾ø˜Žìà°òkÉïô+]“6‰‡G’ÞKzŸÞ*ßÞ}t íh_Ö¿‚2O^Bé'GÒ?Î6ž~r\õÁ¸êÄ(óÃñÌS£°Í8=š}f,ãÌhÖG£YgÇóJÊ?ÿ›½ço•ù+bNÐGàvèì‹Ìx%#z-­jÓ‹âðŠÙ{B&¼ÖŽ„9™\›g •Ãälq{Ztj~œªÚ:¯ß–(Ú™u6ô;½Ô†rŒx²G$9´Âs h%4Š^jÙ¥€áG¶¯œ[BÑ`\Ñ@Üþë0äÀlTv Wq°OQ2 /†œ["c:‰¿0Ì[€K9:’vl<íØ(àI?9Jû`$ã Fuj$ã´óÑ8(çãñ½¥ÿ™wþ· ü²ßî)£·eÿ±¿Ü0Ïé¶å¾%×q:Šý‘߇Vy,¼‹iN‹®ã¾˜Ê§ÊFíõ›‘)Õá©]QªîyuÆduI³» r‹ÍÕÆævIó:A±ùÝ2u/DÕ ù¾^ù>--MWÒ~­|¿6ñ@7(é`or H‹æ:©‡µ ´÷zÓôÒÞÓªŽö©ŽöæÓgëË=ÑÊ;™>öÀ“wZ·ç×}ê3ýšO÷B**5•Ž€4 €ôvùõƒe:IúÛ˜“ÍîF~Æò}¹œÐ R¹X¶ Þ¡¬²:¿èßÜü3wøÌkïv¿|×À½.bZñ)Àò”zJ ¼BiAÉ+l¯WDÈ;Rí±Ë[Zè--`Tè+-ùÇÄíÚ'Ž©‘‚˜m°lŸ8±+yA°BÃUR¡$¥("í@ÔîýQišØÝ{þ4}׌ï¢Å)wÄ®~ûCì¯P}Ú…òê ûF¼/$<†™¶'kž»ØÀ<Êò:ó(È–¶åyçy¡BgÓrzË´60ÂE›™cm¦å´p‹´áMZì¼i½ÁÒkÆÇrØÏ“æ+­×·(Ï“á'1kEzpoæþÌì×33Ýýë½{¹;û5èÞ}:3Ãç#.¹»PhG“š™ýóŒqûç»÷lï=ø¶Âûâ’{3ÿÍ>`.亞™û´M÷™Ä.™™™™]Fâ´Æ^î[À ÿø…[äŸÐƒÙû³÷fL.þ`¼¿p~‰¹Æ-¹xsuŒgòà>ë f*˜Äü™Ü³–“…ç°äÄ^˜0ë÷µ¡Yã=¸ØÙ/éš-ßw9í¯UË„á$”^x k)Úª° µj/ˎ¿:ÂiÙ÷2á´â õš¹¾[X¾ÜûÀ‰5÷uëœÓòúwÍ,Æa8ÙÕýK89 'Yñ{$N„I„I„áDáD8N„I„“c¤åüÈ»œlþ#4±§•µ'γ$Ù'›¼nf¤evãjp"Ö€:šp²÷ÔÝÝ»ÖÖ„Ójs²_{2wïXZ^ÙVÑŠ­Ú™¹¯KÛé`~O »ù_™ë)N9¿ÚZÍL×ñ8¡¦,¼OMúqôÑòS¨ í³Ç5Íír>Yr Ю㨜–ïÁ,çOÞ’ž5Éi†IVu(JŽgOØPâ|dw".a”_ÈÿÖÜIâ9»˜¬ÀNæ7Ù ßé9'€í .ƒßÑP_Èé)áB‡7·êV6M6n²A¾“pH{ö-Ë)4ljm KnÓò}…ÇE{ç„n1«8ñûwÑ>å;+sýµ œ°U­O{âGq8ÏþkFá®\ô¾&ö$­-ÁïqÆvÜam¯ ïµè·ì™g<[?œLÚ“¹PŠÃ&ñŠ\p4Á‰Çp›üC/ï­[NKXv\Â’³ð:þøbÊ"Ç?×zÝH ‹…‡">§ÕÿÕQàˆÓa‡çÄ¿l“NLx&»´•=Û.âÖÖÉúžIH¯0÷S þÊN–_׹߳I·r–SLÖÂj6?[GâÔÍJpÒ —'¯ÕjàwÂEþª—!oÍøºfœ^†ž dI¬¸ä•pZ%NËL„Óª€dbáð}-9‘`̞Г«?¿±Ö#­¨[Î]»þýžµý¾Ò#rrmÀÿcʳeUùÑ+–ÔŸê+¬‰€é:œ¼µõ­Ês~°»çaáD¯6671 2­D¹}æí}þ„8qî/;0™·¶¾½åàï50§›7oN|þg8o2ÉdÞÚúk“ÿýû$Ùu8œì..7Éi½ê‹›·L–ó9-!ð[ NÍM-/§[¿ÿ„¬ŠÍŒÃiiÑùªÚämrÃZÒªÌñ·÷ j*À.–ÔŸ3tNô¯é¶ãÄéSK´úœp;èzávÁœìúïÝ'ô? øÝé8b÷#ªÃé_tJìdsÂó*ì|øœÐ±G‚ ¯ˆ^åt+'žD{áóáדÐW˜™ƒÅ{ø‚ñE²{³aó£ûw¾Ëøœ€›1æ„C/þ^_~þ>'vŸ²!}þùçœ#²±™4k|hü­ƒq‚k6é[øœP~bb]-{X¶h²þÝÍiò §cáÄû|Ð9p8™t¿ì œû•ƒÚ“…œÐ½l²_Øí°ýÛAÄçĹÓ9œÌÏ¢œøaþ¸n9±ûÛÛbøíXïq8q¼®åœ„ÃN~áºå„Ç'ì£9aN&{½ßžPtÃi 9ç>ãr×3'põœA˜5á~¼'à|8!nú—ïqzGn˜'–Ã…æØ˜<(g!ß!í‰ß‹Î{èš;ˆ²ÖÙL†ÑµU5_ŒFóGG%ìù“]s‚ÐÙÂõ=þx`ôlp²gaNvý{®Uë°œy%{æÄ†d¹؃ puT¿Ç_Á´nڼôg{rxNV1À~Ÿp²ñsËMMMËysÝúxqŸ>_þ²&;âdîù7kÿ?Uþ_ËXô ÷Ìæ¿ZµÑãv6m;ž c÷¦ †¥ÿ¦ÒÁ9-³7Èóåkóè§µOsN«ˆÿ€}r"ï/·»ñiE}4áDÞ_NÞ_NÞ·<ßÑ„“½Gwì÷÷—;'bO6 a„ßB8­E{|¥£P‰ÛÅìEOáw¼q^*¼¢3<Âiþ[Æ–¶#á´âøæÅgÆ)´É„Óìrl¿xÑò—kNk0‹´üµö+JN¦9ñ_˜¼†ö„–Æ;zÚ §Áç5õæÆ'sÿcá´JA¹%FüÞZÚþ4kñKÐù/K!œVoÂ’—¨á¯ˆ=­ÍúžUýÎÿ<áô2&Âi5Æ<ÂiU]ÜJ;·uÂiiï/gËqëw÷t9§e½¿œ-ǯoלHbû[òþòuž§Õ‹Éûˉ=9øûËípˆš%¯á@+„ñ{$N$N„I„I„áDáD8N„I„áD8N$N„IvÆÉI´š[ÀÉV‰ó,‘úVÕÇD***Lpšžžž²Qšž¼Cê ×·dÓ~oQN“Ó·AV©¿œdš}˜ÉIr"õmÆ >TUUÁ犪rP%“H~móå•e8ÏŒONNKyœäW3/ý?Ý pH½¢IEND®B`‚pygtk2tutorial/figures/toolbar.png0100644000117200001670000003135010050344475016504 0ustar finlayfcf‰PNG  IHDRÎ`éॠpHYs  ÒÝ~ü2šIDATxÚíû“Õ•ç;˻ư6BØF?Z/P«P«»AÏ$1³Ðj „ga7-xLãßœ—ÿÎoo¼.”n¯¾qž—_ÿû ñzÿñ#^–/½öÆEù~éÕ7§^;yáÇ'ýÙÔJmj¯¿9õã8o®OkÖÑšü@Þþõ·.¾vjJµ×ß¾@ ~{û£So_8õö”ÙNþä#Zxû'T ן:onù¶\þ‰ýÓìâ§çßúÙGoýlŠ[°f*£úéTöEÚEsåÉ3z{óôyseEí£Üm诟úåùSïNjo¿;õ‹ ùåÔÏ£å¨}<Μþe±¦ÞræÝÙðéØ,µ3gçxÙ¹Ígoð‹Ñ™âŸ9{úW3§ÿ§kûÅ?NÓÂÏÇS·9ðÐ3>ý®–Ñ… BÚÒG]œRÿFËÇ_~I®ãs£~ûOÁãçΆO+ÝZm¤ã ÔÞí¸n8ZŽÖ$žŠvÝ-x×ïz7Üø‹£Ô® Úõÿ%\poŸÿÒèþâÈõ7êmå°eåM£_X1b]µ³_øÊ¨Ù®û*-Ø_MkŸ_5rÝêQÙ>¿F=ß´f´H^ùõÑ›¿6ªU[ñõp!­™|ùëcêñ¦¯ø£+שÇÖÛÊM£7ÝjiÚúÕ›F×n[së˜Z0›Z¿ê¶‘Õ›G3Úš®±äšá”-‡Wß>¶æŽ±Õw¨…ÑòíŽá5wެî5ÚYÛÊD[·mLoý£ëÆÖ o¸ë캻Æ× 4̶þ®¦|º1ù4n;ô¶~»ßÌõ‰mv6-ëwÛÛú=Í´—Œ6¾eO³ëÝ{'¶¨¶¯ÙZ«o¹·Ñý'ÍÛŠõGMNNMM¹0SqRGí‰'\: ò#^gÔRKbˆÅá‰Ñr I-¬Ìb°0’¶A."…::WŽÞ,Ü,ûk¾c‘ùù¯ŒÄÐüòH"cžj äæHÉ•¼e€9Æ%ïæo(¯ÌC§Ö|Æe0‘ µë†U[¹iÌDä —ŒÅ[n ᨱrím£Ù¬ä–KÕÒ|\Ó3²V®Q¬´ã2ÑÖlÕ×tn=Ë”ÜÐë?®ï;»~`DµuwÚ 8Ð輫‘öRÜînX—kärçöz:7ìšpæ£|£ÏÊ-{ê»îý>.»ö6$õ§÷X(Ioô› +ïýuî6[þk£û¾æ–ûëimó`êK+6&N*èQ;ñÊq^¶<=qB=†\}帎ZiwKºÚ¿›ò®a€Òrh6¿8ZûÒXGÒT~áKcc8ÞðÅ1ù*m1tô†•c™ˆŒÉ˜OO72:¯ÿªjcê¥È{ŽÆ ­±RµMsÃ!+¿v¶¤Š5ûV|sÄÑHÞ¸N¼kÃÈMMS9lÚL«L´ÍgY™g<}_ãïŽ1ƒ‰c«îÈ&o°jëÈ-Û"&nKc¥†ËNÃW®ï#_àr áÞ6Ð[Ñ»'ˆ†vŸ˜ßÆ%R;wÕò:÷Äø“Ë.®sîÆfÁÊŒÖ%h¾º·ÑEÐL"¯çÞòî2”…Û¡fÐêÛ6ûMô 5ÕBZ[}ëF­;$ù-:j?î’Þ•®öÕ7Îsá˜ê+£vÃÍ#[f Rï[Ãå ÚoSMÒðú›G²q©µ¾¼KÑó–±ëWe°rxåÚ±˜‰«Gb¹:\σ£°Ÿ ¬+¾1,¹Ùb¿;Ö¤¯4Û ÁÊ[bhk¾’yGÈ[Õ•b*mëÉ“2+×ì[›o*Ç$"¹Nìc\fC“_]×û«½ÿ¨árCÿHÀʱ…)ñœ–Äß7wÚ{Ù´ÞÖ7Ÿˆ¶¯·Öû·ß²gÜoÂvïMZEË®t˜ªw©·tïOøJe3©¹#²çO'‚…ºæ+»îpTwÝ7NoéôYÙu¨Ù}°žHÙOS^ª÷>ÐØöP=£­é:º P›“e½xQniA-a8gX,éj_}s*&cd?ƒM>¡íoˆ×ˆ!µàÿÊ6ªG‰Bµz´þ]›·(\ޤ°rXm¯ƒ…¸Ç½ÒpŠ˜Üï^àϧaä.­C‚iîÒÿ[™žqeDCÛ–g¹‡®þŠ¿&‘ÜVmÔ3•k6j¾Òš”,ÑÈWêvÒf0GWõŒÈ…µIS¹æÎ‘À0ˆy–– ç+·uÞ5úJ‘Í Rg¼³¿nIeÞ]ÎNêºç»š.F27_)}e†ytiEÍc—[¼û>Wbò‰…¡YKBގд´Ã9¬4[ïƒãê±O{ãÃMkS¨ ¸w^ ö:±ÃÌj»kòòîG«{|W«,êK'~ÄÀdëIÆ–ž’ÕÍAm¼*ÇÕÆÅ^§Þž’¾Òî"Åh)‰Î`{zTU/ùCØÑp6’Ùö¬ ˜j+‰­ÄJâ]ÄÇOüø¦‘…”+"h²—¤å[n^µqDëƒ É9ªGÉÊ…h™V*_,„Þ“¹~~€9ÿ-AO\-°ÓäWi!ÇfÞ9æÛdf'3úàþxÍÎ`M4¶3–ÁÁõ)uBa¯ü®`DšÙL{3l#öÉ]ú}pßWïzw¥öÁë]¥úÝ6_9^ .˜è p¹5ê†óBµ54ì¾ÒXi·“b¡ß_¿±·oÕ%åK}ßšØöH“à(¡Ùÿh# ”ЉÆÊ ZØþß;Zh·è®öÂÔÅmµ5®Vy7*° Q›DçM"#¹`³“ÚSi9Wv'_ý$LPnQêÓ¸Tˆ}¥ìn«eÕãV¬T€#\†¯ &ÛYZ©yI£÷=¿7¢!»K‰HZÉkL€&–“#9þÛ·ÒÂ'µ–¶|åH0>Üiae“²“&(7¸ÕW:rS ìLTW_Ù°ÖW¦ùÊ,tÒP¸1ŒSj`Çî–û¬e×}VžŽ'–£qpÖQ{ï;Û±ºEÓ9Z@)…4V’Áìwó’>u_9AðD{l|û£õlS)¡I`Ýñø„†¿]ûÍ”¼Ù®Çë»þ¢±û/›ê1­íüv][£¶_ÝëW ô$0•Ÿ53«vÔzµâ®6þ¬“?=ÏùÍ×ÇÐ ªÙoÜ4÷µ#2®¼Mï‰Ë¥Õ‰1¤#Þ 7¿¶ùWfg<¹à“”³™áÊ`\[ž8L&Fxn—^塞˜ªA²ÒcoŒH^³¶wŒÊ$eVªe¥Œ„úàês\ìd‰úJmôÆê+;·7U/Þß A½ 6•ެ¤Í±”…Ü¥§ÅkÑ­uEiõ•Ù™Jùj¢SÔ ¥yF³Iï©¶Ÿ¦XHî†[zÜ%{Æv˜žýÎ=q’Aë·ûÇœ¶ýñzÈ>Í€›¹ Üù?šÆJÅÁ‰‚ßNåcÔÆ—²;¿í/ì|2Ñv=ÕÜùäøŽ§ôõûŸh¬ß{8¡W ¸¢–]íÅ@EëjßúÙ”¬¯ô”Ó—FwÛtšÌGÕ¨«Zήp,H=½eóHª[¼cØ\ixÉÀu.\å|¥‰Bk!zôê°••½~¦R°òꆰf¨éop0h3Þ X`P†Ë; WËŽ€' ¹«îÂD±Ù8!rîpPhCÔ×ð/¸Œ}ïåúʺc}%­×”%ê+]y6†¬ì:8îP_YgƒzÌ!‰×ºd¥‹´lü`Ó÷•G'ÒºÕ: ÿ¬aë›OÁì‹ÆvBDòÆGÈ]ާ#rœ³–VŸX´)z&Q8‘æ.C8~;æ©öÒο4A™Xàå}OXÚþ'›ñÓ'ë{¿ÛÜ÷t#­­ë?JS0@)'[ PÎÕRØwµg¦´^¹ æ(øp±QÂ<*8.$¼¤zumò)‘+S©q“|åB„È5õ4n†h+”# MwÊZô ”ˆ Fxˆƒ<Έü$È‘Ðzf¥¿9D^æyá*9JŸÎÑHÎÂÂo)¯Ûq¥ÅW®'Sí„ížF‰>8¶P¿»Ë–Á”õ•…j*Óê+©Nõ•šä§Z§ÛZ_øÊüúJb¢9Þ«mùð„0¹c8i`U}ð~i'‹s—yˆ”$ ÚŸ75D*›ÉN3¶œâUÿ1ò’Ûã•ä+Ç¥—”¦2Í`ªõš UÄÔü£Däî'âå}OLDXœ°róž'{¿[OòqB>ÝŸŽÑD{f|ÿs n{£…uýz®V‰êµ4{[i®V ùä™ÌN·è›-\Õaš@­ð’_ía *nª§á«ÁuQ3,n•ÉJÙg_)™H¯Ê.9¿…^¥5ḹ‘£TX” ä5´RÂTâ2Ü @^瞀¤Q QÓºZùÍÝu¹%?J€n¦rôäpv‚ʽm©¯ ò•¡+43’Úå.É`ªõڵᚡF÷[â>õ¯ÝGxôÍÏø.]_™62ÞŸ™¾´öÁû¬dÌ9È=ñ"ŽR’PË^2;k™Û”¯ÜñDˆËOÔÉBZÝ¥î(­óé‰ýÏ$¬åÞgæSÍ{ž®gáòÙ:ññÞgãårmßóûžoìýž2CG4ÔùDùb/GW{q*Æö©w§Vm/ —Ëɢ˳r!¬âð­£zà ýe'7$󕉂óŒJõ”«¼ÃdúÕßv4 £ñfï݋ϱº~#òu”¾sÜkY.ÍÊ4búWû¤€²L;8¡Õ q}eZœûàŒ×pËôLe.@eQ@@9PS¢õCäZï›Äs”‰Ã6ºR2î€-vŽvh¦ç.nø“9M1t·àã=–þøD°¾¾ÏÑ9*\ ¤Jžªõ~Ë#à½ÇššëL¼ú,-øþTQR±òž4óÛ~z|¡yÿóÁâvÿ÷„ZsX,cšÊ\-ýÕŸ¿;ÕÉãàA}åº~ž;£¹þîzéúʲ׃k5C…F½m[ùÊÝ®×íäºÎÖ'ⱿµLIŸ¶ê]×í”n}‡Šw²—ÍO³[ÈÇë}}óÃÞ£ù]oשh;ðßþɬ¯ì•@Ž ô›e Æ_i]Ÿ5&ž‰¿"¾r\ëwûí;õ$.Çw=U׳“Ööt5mÿ³ÊNªæ3Q-ûuQ;I0õIú|ãÞšé| ]§d¥Úþ¾˜•MZ8ðýæC]úAóÀ~[´E®öß\.Ìå+¨·ôÌ^‰\íé_ÎhÔ/±Ün¯Ì˜U(­èÒ¼hÇq´ÇçfÐI7¯q,ucT‹nMVöüé„ßî-ÀÊìy†ÊÕWʱšì4ì—iõ•E¯z̬¯,ÔhlÇ:¾Ã•Q9ú„æ+K ìÈ|% a;ö²³6øŽ"c3×Zîþ+ßNîÏ¥ò•Õl‘{¿Û$¿iúGç6®3a*_WË.SšJßW>_?ð}Ÿ’Ôüà7%p)ÛÐKÿ|à¥÷†ŽÿvèG海ܶnOœ@¨^:ñ#9›—Ù*pµ”C8ñÊñÓc³¶úÊñ´ù+]® —0 zîñü•Ýû~Ý".»öW3eØ+wf¥ ·©x¯Üz¨"óê+­ Ê¢¬,wÝζê+µô¥zªÉRëƒoOÏQjxÝùçãE-¤9bô;ÍÝOLä²R™Í½ß©ç˜ÊŠ|åþ§­$(5_¹O-p› æ ã9¬|aœ|¥B¤zŠÐéSòÅÆà vƒ/¾7ô׿+ÊAõÆþ6âào\XimCÇß;ðòo¹ žH<•M¡ö“« … É ;j Éwµ µ#㊕={­ûÊÒõ•TBä7QBT¡¯TÝðîƒ>+i\±2}¡ÄK}‡þ)™¾lÜypª€Ø½ï¨j›÷QË.Mm/ß“¾Ù=Gä¼àÇ_>‘ÃÉãÇí¨eZ·÷ÎgUߢ®ÅÛÌ-Î]ê>-a´#Bí¦Ÿ•~~­ý?Eý½žËÝþÉev…·HÿÐ îé-“ßv­]GDÁ«j- õt¶€¦Õsss³³ó³Õin†>S_¹È¢¿837 -¹Ì߃¦™™™eɵ½Ÿ—™æùï¹ÓÀ µî»;€Ñô¢}‹ü sÚýS+wuÌ/':O/æQZôK)}úÌ«õ¥™@KûM¨_E+v¡Ä{‹þÉâøš©ø;?;gü 糟‹ý¢ÿRŠŠ½`ÆÛ+sµ×ö¹‚ ¨UƒÚ%7AËAi¦³j姯A‹êj!‚  Ÿ[qV‚ ¨%Wër3Gë2AÐgD&úÊ 6-é«¶Ÿ… 2ÙXµŠ³’Ó¤3gÎpí-J¾ ‚ÈzKºZB­úf®D­– †® Ñ·¹ ;.Ëíg†¾dÚÐ’¨¥÷3jiU Ÿ5„ý9þ*pµ’¹üqòBLdǯ½õæ)ÕNþÃ[´°híÔÉ·åÂÉ“'­-y3ƒ02&Ç*N h\W '·kC %Ëa.1m„`9A¬’®–s½Ö‚Lœá÷wÍH7õýþë¿|°´Mþ¢üùOff–a`¨€*ËÕf$d’¨j«j“ïÿ«O´…«Ëÿ€¼-T1js@-PÛbû`òC¹`þ¢–3j!h¶ò „wÞy‡·‘ÃbØÑ×j'•¹ˆF1‘—µð°Ðb'*qµssÿ7ZŒç ö§ö9ž3³u‰½sf'xŸŸ[â#k^[¦5Mü<37mü‹æ«B­­M²ñüð}A=F/+gc ¡Öñ£&'ÂðÎQ´´À'´²Ï.pPõ¨¥«ÅZL ¸¡jZûXÑéE¸›€?³úŒ½zß¿d#^1Ÿ6¹}åDÎEßVàÜê‰!ƒh‚ªñ+˜¢O`øž ØwÎÝ“V’@0–Ÿ`¾Š´d®VAÇå‡ßß´ †‚VO#a±ˆw™ôÿXKƒ`ð´ú“ÚòMÏÎÌŠ)Ú¬iû¼}¹ZB'%$³´À4;ìhi[D­F O LpN{ËäûµÐ$¸f¶\!ÀÖ|ZG>¾«ep Êžç>î~îãL|J”O>hGfwÝþ3Ö•W;Çh§%/Üoµîh©Ø*É!8íœõ©vƒÒ-Ï^â¯Rôè];ì¥Q0ôœædå­[UT*6ãL†‘'P µ=W[aSR»0!£û¹+Ñ‚n·{PB»ó0Ç£Z×1¬6»è%>’jAfì±ùÙ²÷ú-`'5'[“,3sL†:¢6ÓOZ-vÚc4s¨…µ³ns úý¥ýú{Ž]î± ‹V"žuX‹ÙÁžhq¢RÄg%Ÿ°Ñ^º¢MI¼{lºBÔ&{Ö“Ë´3eüµÚhÛî\­X7/ Ì1 ÔBmtµ2i[µ¾ÏRvQöãø4ÅÉë³·²Ê½Ê5V“Ë´Ìc[nIÏ»+wõ$¡VyA#‘yZÒúé,µ3ýoS‚W«Ç ¡V~fbŸ»Ì05ã3¨< UÏ0¶@-´Üò'.yÌ2/ÕZzz.²’d茘ä{Ü/N¤ž ¸m=PâÂÎÙšœÀ>;¸€/¥;.æQæ R«¥uÞ=?âZ›\­åýãÀ¼ðçåYÏœÆ?®ZÊÂ;ï¼ÓJAü¬¯˜'s$ê^‘“wãÒ‰i“›Eà2­o"Ûa¦ÂÒ2 œSær±ì]µ.Ô #¦Š6¬\Ép‘Ž5+ÌÌ$¬gÑ5î°k§BöÖ-Å&s.œMÛ@Ú[-“CÖ2Pk‰ÁÏw}€š¹¯)§yì’2Kî±Ò®öCQ=fù· ˜ºï±rAŸì.ë‚ôì^e&4mÈ‚|=‰¡ßðÆøð:¤±-Z @øOê¸jJ&òŒ“Aâ©¶žr S“eÖ8ý™«æ{Ìw^Ǭö°fVDXO ÆÂõL†Z“eA—r϶/÷J.×Üñ÷•BRí;ÒNÞæî’o7ÆÊεŸñ‘[(WMÍ}ë’@Á©-ÿãà4¨‰”•°{î%øKIÏ÷ì–¤Ü`÷Ð)0 Mò\~=¶ƒ6^Ðh¼½•¯Ó ï1`/Ι^±û_Iî±Zäèç3Ë@mX­ç¹´¯2åŒeœ˜n=É>{9Ôr`æ0“£²·Ó7ž~–r ‚ªO ÍÕÒa@ìàÑ$mLÌ´ºf÷Y®Û.÷©Çì°RÚ«ó³s20-¹¡°n0©i5ðÖÖ÷±˜ä©ò³ï¼óŽX ß Ï«>ÿ‡†hÉ¿¥œ u™% f¡•XÆË&š¹Ç¬=ñ´QDs©3úé™ùW©©&cÙù{L»"NHW8×L{Ì]ÑÃaê™Ï‚½uü–+@-‹¹$dÇ™¶ÒûÈj|+5¸ÿ«jÊÙeÿƒsï ¡f1eÉ4_˜Ö¯÷8°^h¦o¥<ŒžR˜K\k æÅE=¶ýSó²ŽA`.¨åÀrQkp% ²3¡ÑW9 ðg-,£x臗Ø9LŸþ0t@–ëåž´¯Ò‹ëÝvi[wÞ9öjK¡\‚<>ù5Kµ:ýà p3ðq?ƒCY<+Ëø¶¹‡AJ`µ”z/»Ñ¦Pù@ÇgÆ ðôéÓYM«7ÎG úC³ cÎzD`ý—û)0s&se¢v ö†¬eÔ®r ‡ÜcæÑ$ZÞ9`0ü*½ÔšÂ”rˆ+ÚW©¾G-0yµ®ØèÕ"¡–ŒaU ÿJÐV–Aj[ðJÈ µžœ`rbš™ ó(]$FýtÍtk£(V–yq`áa<ön»Ü—¨ÕKN]a…û8ª¡ƒrq`i•bõi-¬› fÂý¦í1:ueí‡ü/‘¾GýÄ%+<›gäJ}›ž>XaÔzÑoÌ LK¼ÒÙ´çY9(WóRö˜m°I-0ÚctD@טJôZ–¸A⌎‡Üë_£Á±+þy)q(œÑaàN´´ÀT$¿ ­-˜iã9áü½Ë쯙¶!ÑŠ6 RQ®V11ŠjOZz1ê_ÑÈ+OKQ' Gt¦™ÎÎl¸$ÌnмzB.Xé/÷XZYUqW¶ß²~•ö¡¼c—LÈr`“““.ÑÇ^Kš-5÷'Èk5$;B˦9ÙèÚJ}Êð劎VPË]Nnÿ~è€"Ghdoùb: ¨Æ#<Õí±ð4)8' hÙ ¶ÞA`Óšµ/ŽÚAi·9ž¨¿R3Gÿµ=æ·+ýtN¥¨6°^[µÿïà¡ÄWy€÷Ø`Æã37'Ž)rÌzá/P Ô.ë i4bÚ&Ùa8 ~ÔÆRDÓå‰ñ‚/Þ·ÖcµfWú9’”ÀŠ¡VÖÕ2Îxvõ=v,6³IdôÉ=FÝšŠ¬•a±pÿL~•â4LETÜçs’ì‘ÈS©:ƒ•K œû—ÓÆë¬¿19A„2Ýò|ICat6U Ñë°N¶ÔµË= ût\6¢A¦­FX9!ÇDFwòzÓ²¨­iyÒI˜îˆÊM+LÈn/5Én; ¦•Œ/ó-íÁƒ*6sñh{rõÊ^yàg¯P ’¨ŒGµŠZ™ÝN Lž8­½rJæòWÙÕ®š]õ\Ô~ð¿ÈiNzè£ÀjÉgÍX”÷拾¦62&‹jù*†ðV¾@-P[9jyxº’ c¢™·õ­Y4òˉZ>8¹n‰YÚùûé8htNóQQ\FÝR%ç€y˜6Ï]ÝÀWU$Äk˜õr`i÷Â)Wì¥×{LF¢Ü7q-Y×GEµÁßš,@PL ÌëàëAd`|¶6÷»ö¤\¿ÔµË: ú¿²,ß=ïsæñéy–ñk/Ó ¹¢ÖK%Fee(£VzC &ißZD­mN/mE ¨m‹«å[е^à÷hxECòJJ®gäv/9ÿ€Ë(Ñþß?(`’ýPU׎ϰã×ó½¹>¡T`óÖ=휰Kþïã«Ènk Þcž›5,r²óÆ5Áå¦ÏU]ÏÖA‘3$p±-ãæäE“®6í yrò‚• Ü ¨]’Ï’U®y*Oê¶ÿþ 8aÈž«%òjI[šé®ª\-ã,åødWÛËñ@¿˜_~[m™í˜6úoí§'K—jœM¦bÒJ†Åh˜Ž’ïü­Å)︖£F…«Ä³ž¨î8™æ¯²3/^(WÀe\Vh=1h¿1Y¥¹9°p P»Ü+ä$ŠÖÎuV„d­’>°Cb—[˸Í3—0°S3ãTõ‚¥yôªL–ß‹s@Íz ‰˜²8Ÿ¯"ãûhµ^Wk­÷²:JN X‡Â"W{…oÁ`^›ë€Úsffƒú(–ߘèh×øñÊ'xžE¨j—o‚–4Õ¨…Úèj[I дÿ\M%û㥯±aèTH3˜¥µÕ|WÇŽ¼Ý  ˆ ç¨á¯Ý ™»0ɻȮVÜÜŒ–«­µ¯¨µvØ%Åd¡¿7#]ëˆZþ¨Â „ÉI¹^}ÝVL›·½±þÔQµ„Ze hê–Ö+¬_Ça1.[W;›9,¶ä 3µ¢mÃB.B!w*¤XÒQjüJ£mjµRYþX…N×ÊcÂJ¤j[úpú4—ÌUàjù–bU]ÂкÅk_º6ã“ùâàkÞ¿HÔ-þoý­¦J~î—±m’ר«…–,À–K 8±(7ys–ÕWÛŽvcÚrè, _®5,„ZunÈŽÇzò0?–™›íj—ÛïúÔçj«Áq)÷¥%ÿ¡·5€¥²Ïi³ºd\\kò+yå†Å¨` Ä„îÓ5¨°9§lý¸Z¨-¨­z„rdI›‘ °ËŽdIøžûG+,ém¥Ÿž†×¢sX‰æ2‚9)b¡h]N@-ÔFW+“¶%PkR 4ÓϪ¿âŽÝÊCÒ>0cÚ‡jÿôÉ“'+¿Ý-É\c®^‹o¢§åjÛq«>{ w÷ƒ å˜@(D—-ÛD[óc—UšÂ%_Üú `fnzñ÷|îÙwnfž¶)—tj¥#A×N‚ è³îjå¼3Ù¨mß<A×,jÏ:}ú´ÚF[™¶1AÐgG%QÛᬅ…óÖ‡AŸ5Fm…CXAŸ)@mFÊ5 ¯Ëpø‚ h‘EÓ¶¸¢¶dÆÄ ‚«­ÄÕBAÕ ‚ j!‚€Z‚  ¨… j!‚€Z‚ ¨… j!‚€Z‚ ¨… j!‚€Z ‚ ¨… j!‚  ‚ ¨… j!‚  ‚ ¨… jZ‚  ‚ ¨… ‚€Z‚  ‚ ¨Ån‚ j!‚€Z‚  ¨… j!‚€Z‚ ¨… j!‚€Z ‚ ¨… j!‚€Z ‚ ¨… j!‚  ‚ ¨… jZ‚  ‚ ¨… ‚€Z‚  ‚ ¨… ‚€Z‚  ‚ ¨j!‚€Z‚  ‚ j!‚€Z‚  ‚ j!‚€Z‚  ¨… j!‚€Z‚ ¨… j!‚€Z‚ ¨… j!‚€Z ‚ ¨… j!‚  ‚ ¨… j!‚  ‚ ¨… jZ‚  ‚ ¨… ‚€Z‚  ‚ ¨… ‚€Z‚  ‚ ¨j!‚€Z‚  ‚ j!‚€Z‚  ‚ j!‚€Z‚  ¨… j!‚€Z‚ ¨… j!‚€Z‚ ¨… j!‚€Z ‚ ¨… j!‚  ‚ ¨… j!‚  ‚ ¨… jZ‚  ‚ ¨… ‚€Z‚  ‚ ¨… ‚€Z‚  ‚ ¨j!‚€Z‚  ‚ j!‚€Z‚  ‚ j!‚€Z‚  ¨… j!‚€Z‚ ¨… j!‚€Z‚ ¨… j!‚€Z ‚ ¨… j!‚  ‚ ¨… j!‚  ‚ ¨… jZ‚  ‚ ¨… ‚€Z‚  ‚ ¨… ‚€Z‚  ‚ ¨j!‚€Z‚  ‚ j!‚€Z‚  ‚ j!‚€Z‚  ¨… j!‚>š ÔjÏ@AUµW!‚ ‚B‚ ¹Z‚ O›æææ€Z‚ ¸Z‚ kÔêµApµA@-AÔBµA@-P AÔBµA#j!‚ VäuÔrP AU(;j/^¼ˆ]AÔº¦.žQëy\-AP›tâ•ãaRA¡WqW6õš¶ ­h#–*G‹ü5AP;‡ÈÎþnëìNô1äIEND®B`‚pygtk2tutorial/figures/textview-basic.png0100644000117200001670000004610110050344475020000 0ustar finlayfcf‰PNG  IHDRˆ²qÀĺ pHYs  ÒÝ~üKóIDATxÚíû“Çqç±ô…%Ú>°-ïˆEIs'‚ B$dëAwí»°–<ûl9$‡%BôY~„ Ûp° Åí‹2uÿƒ’"tÀú»àcn_õÔLmMUVVVõsf¾µ½====ÕÝŸÎ̪Ìܱ#Qæ²ýïøÂÜŽdN°} ò}:š£Ôä¯f:D²™µÍ/XÇ3çö­¸¨÷ï fŽ:O5©ð±Ý±£—RöÉss5^“sô¤9åÂ\`}öýã_çs½©–Ìš@[zð©ÕŸZ~ð™U¿>¹F.o·O¬þÍÕ¤¶ëÀ‹[£û}}}]~ã'mœ'JÑÑTqÁtîÜ9‰hv¤vñw6˜ÞoóeÑÆ ×~eA·>®± ¹nÿËФÊ.zý/í¢±òK¿f¸ó¥jCÊì¾np³Óâ‹bÊèß«6wví'Ë€&NûÀ=×üwIŽØ¬ ¶û¯Ú|1”Ñ b¶Ûb²D@³¨^÷>²¸'šE½M16h¶Û±šÖ4¦ÑØèn`4Kg)þã¢jZÑÿšW š÷–zÍöÓ”ÑïÞµ¨ï¨ÍvÝ[¾»ó¾m¬ØˆæºQjöÞÿõºû¾kåò}MF ŽT£Ùýе0hF­äÈÕP®vš{Çésðɵq½&Èš‰Vö=µ2šR»94h2Ð,çæÐ§–¾ŒÚª»æùUÕŽ¼(‹ïÔTùàüµ¸õ4ÿ 4×ö?~}ßãAæÞÇ–õ‚Úÿ6e_•™NT£€B¶C[åÝ4d;$í¾9d#ÆRj$ qŸC§JÐb€’¾Í«×Wç_ZU¯ª}iM©:e¢þ&›2zAþ-_{í¯“dÀ{LcúöºÑbŒ•dÈâšQ{ÜfEÝE£…Âvߌáãž…˜{x[DZÉbë5@1FÛëGnšãªMù.ã£ñ4E™’Ûÿ^ß&‹åЀf€’G®ÚXÙûÈ¢ñÔøŽáò­q£Ik4¶{X“hÏüõmÄ ^”ÍÕTÓißã+ûÿçú-Áä«6O®º:ËSÐ,K@Cúƒƒ: µò¡O >ñÆC¿µöà'—j\yù”µðÉ¥ tž_=, ËÑç×ôÂü©•(hæCoYÖˆ™?»¢˜¦04\~iùèY=ú…Õö<ü9L<8Hõ'Í,µ¥_3ÑþkgÏj²õìoQÏÔ˜ôs~²×^ýÛ‹7lÐìÚ3$‹£Å]K{jƒlˆØ;׎M¢£w‡¾#Z´¡¤:Âøh\ÜPˆÑM}j4Ò´8Rp®ªC5>š¡®1”áJ¥Ýø+ h¶F¥¡sψ2Û$²þ-AóÈUÓ¿.wÏ_×ý6@Ï4n eÌ7*Óéà±ÅDV¦Ô_ÔÂãKŽ^£i¢Í%£ë: Ù­Qÿ<8¥ƒ¦|kðªtÓËÚ˜2vpäÁñAC3Õg=‘ˆ!L§Á[cã‘õ4$ˆ •&•1óŸ["¶yq-Š˜1ÊŒ¨tô kš5¦ÿÂÚñòÕic+÷>r¦»Œ×Z˜ØT2 s>âù˜Ì*vªÙhÏ¥™záâºï¦ÑX1#Ù¤é4䈥§Œhr]¯TvÓJÍG \”ÑTªZn\ÔòÝ÷o›NÛcÞ#¿¯Š2— YÄ(}gûÝ‘Yd¡dq÷# 6†l k¸rßP[ùåWœ_ԔѪÍÁÇ4klŽx «ja߀5z¥¢ñΔí¬Ñg©Ü`ð‘­m¾”+õð“Ꮍ`¤dà YV %>N®mé…gV‹Ñ‚³œš‡>ñÆ¡ß|ãÐhVw óÖ¡çV|~ùèsË<\ =úüò‘Ï­rÊ‹j§WŽøÜPÆnF÷9öù1Ð#C€æ‰ÿoOþÎöòÝŸfÀDªNµ€IÈlcolf %kh·¥jL6Ș4hvZƒÜ+†&[Yl•箑?¸Ül4Ôm+5¶§Æ,,¦ì½ß¦Ì{ã¸¹ê ºìÛGƒ5k– Cù†>Ûågk7žZÕz™mF•ÍÓk6Jô¡{kž^Q?vˆ˜§+îµ  bTS[–”ù­5ʤºiÚÊjtÈi[©±üÁƒ!§7<ʼ¡í&{4êÈsËóŸ]°ÃU[Ž~véèé•ùÓKG(íæ˜§°›ÍüËŽF³òÄç—Ë×——̲ß4G>ú;˪¬˜•.w~gm°°|üw—Ÿüâ ÓNüÞê“_\Û3F]·Ö 0)v$Éߒט4ƒÌ´uæ[†ÑiÓ¸éõZ·¹mëiׇ Yì[ĦŒ ÇËk £˜¸®.ôÊs}kܶ E-XsjR³e`4‚Ë8n gÁPæÀQ­Î”ÓöUåñU{d@¤6 lî($)%ÅfÍP[Q[ÐÙ†ÈøJC£Ýl“ÅR Q¿ËÕVž^3ˆqt{ÈB;_|Д ŸxÃAZÖÜ)w8Çø™yÏA ¡æ @sxÜs„ø÷AÛ ï¦Q¬9:®Ñ蕆57Æ1Õh»Iµ'_~c (/¯’ ñBðÅk'~w-Ì—íåã¿§¶®T êõø—VNü~ùjÚ°½¼~hÊ}㯒¦œÏ¦Ád«ZÌ·ŒiL·"Ö˜~>Ô˜þùmǼû¾k7¶ÝäLásl(…£æ(îPŠÌ¢Cü»ÄЀ †)åšGÇÆ¶µÃxÿüŒ:£¡cpÛvÓAj娖c.˜± 5ãúÎ’Ñtl‚׌ﯱ§—·ý@©)‹iÌ}c†ÀmåŒ1m‘Ä9¹â¯4 ÐdI¯9ü©eó–~w{³OÖ<¿ª ¨„±í%5Ï8bxßðH£Q”yL¨Ú¼´¬Èâk4ºøüˆ)”R£Áqü¿­C飻iÌžú¢´i¾è¦¸c#Æ4ƒžg~?Üþxí™?^1í¤z}eiÿ±³!]&ÕÇ”&ƒ$_iªMcÒþóó—×½!í«CΡᚭ­3óhlÜèÁ¦½]ÓÿªÇu9}ÆšË7€ËuÏAs½t [ ÎÖ8b´étðØ"a(Y­t¦s‡º‡ž` 7cj ½rIƒC™HV”¾à=éw”#Ü«¾éä,+•挂Ž~ËW[|7Yi,)›#6VÆ@³Uh»©(; I4ª© ýÃͲÖkÆÖœŽp—+=ãÈ÷Úû\ÐM£V©ÃÐ1ËA£žx9ä©IsÓPm™Wgì¦ø²½L)2å¿¿¿\‚æKË'¿´ªÉòq›;j½†Ë =ýGËåë+Ã…g¬·œ?ñ'+'ÿt»±êÄ:•N–Á[þP·º'÷=¹l0Y¸Y3+Õ6ãjÎ{މdÿ{h|¥ÛlV:šË`yÙvåëi¸wÖ̪cR½WüÛƒ”éôY—&º3ÍJó–Z¯ý5%q¦ÆÍO#¸XËKæ{F3¤ÌK„¡DŽ|«•Êà2Y 2ã6ɑ㿽ÌÛP¥¦óEÚM3î¾q-¬V–l¸Ø-A£yeÕ,(â<3 ²ýɲ^~úOÇ裛ƒ¤gþ¼lûŽ—¦œãcÊb“$8]àÜ93Ä_mTnr¾¿š§g¦®nÏ ž_8pt0gïØU~rp9wfìÝÕñ¦¡qäŒFî ¦í-‘A•ZÍ0hÍyKp›X2a¨¿Œ¦ë!ðrÁc²¼¿þœšÁ¿ËÚ³cOÉSj —pèÙ•mͶ?ø ãú•OÛóTט:öÙU[ñQLOõkíÆ¨3G>¿Ì€Æ'ŽK™‘¥Ô–1ßÍo¯fYOKîš?Xuøbˆc“Ũ6Cæ yeéä#êß5G‘1ÄQ˜å1šüÕ“eü¦A÷¹|ýÌ—WN ^U;pülkÓ¸ÉH\ì™ó˜†>©tÿùûëûª„q[ñM|è¶$;Œ›iƶÒH:|bõðÇÒCN® A3ðûò6Ô¡1­<øÉrbžíöÑ£ÞzøÔš3mO),>¿%ÎügWl‚)ê'>FÍšÑ+œ2e,—ªåVê̱—‡ÚM4'>_¾J¼¿ŽŸXÁHi+![) Ý Û_Z³(³vÜú÷Ä–ÓIO)¡óÇkZO1ºL´i ü“µ8bþû2Áš?[#Ë——Ü|yéÙ?RF·g¿²rê««êõÙ¯¾ùìWþÏ©¯¼ùìWX.SmÿÚùýs9e¾~îkzK³À%!¸uÓŸù­Wò¢T§àKYvfV‚ÚÅ¥ïm¸Ê«MÎ ö¸éˆÊ§è,?ð±å Ð$ç‹ñhˆžO­ØVR(ò€hlÐSp–ð4KGO§Å"ÕöÑ^³m(nÌû¥åùÒ¼ft™ÑÀ1Ò¤~8㦠y óêwWi…%æ&¦Ñš¥éôôŒDã* ‡Ëhâ›±žÔÆ LÏüùZ\£ùòÒg¾¼jƒFQfؾòæ©¿ü‘C–OõÍzÆÚg¾ò/åÂ×ÿ%Úö?µ=ÁrðúW|ÎÅ[—!TùˆýÕùÓ +Si^ZÜäÓ$)5Ú,?PºŒ„ ð¡•Ÿ\‰1eu|{É€æðö0¶€5§SiF¶’ÖeüñlÛ¼­ïœ^ÙÖ\Âd¡g {ƒÜÌØ¶qsÛÉ3c ÙVËrÄØª 9ðä¸ižàµAÛ¶žžñ@C“ÅQy,Ä8Ž˜`(AQÓééÊsò/–Ö<÷•ÕçþrmÄ‘~: Î8íÔ×"”ùÌ×~Hoó7CMé½b+éf7ùÛä£öÛvUúGhS.IJIIk4'Ö”RcƒF-R¬[Li>¹BLÉ‹Ç%”q•=¿6jÞÖóƒ­I}o$)2#Ö,a§í•þà—–Q e{yõ‰/¬øükC-ùn`Òkã);ËŽ¯÷„¥Ý0VU 4C¸œô­§?\µ9ò4ÃW–Ì–j3CÛ€zzÜqãØVϨ-¦œ¤3zkéÓa™N±VšN¹ªM§’ #½f¨¹²XúN £¿úaT£9õµ9è1 yîÜ›fÁ,[í‡fùÔk?zñÜÎ~ãGgÿúÍ3ó/v{ðé3Úbj:ß[öG\0ë¬TÆ^{U’ Jmöì ¯Üµÿl¸½È¾ë¶]¼ížÙußÙ>­Û®ûÔkùïî{a°æsæ­ñvö÷Q {>üâžûÏè¶[ý;Zµ½9»÷÷:ë´=pÖ_Y6jãP»û3þÊ=Ÿ&ÛÞGÎŒýû» i»z¡\8üÂö>ç_Ü3†i»œ¹{þ´¿~ƒ…­×Áúù3û=½þŒiúß{œÙwôì¾£gö;}à±3º©å@;~‹kö>÷=vzÿgÈ¶ïø™Ð[L»÷‰Ó?ÊnóäÙ'Î(Äo÷~¬|ÝwâôàßÓãï¾èoàcgí·FÜn‡Ëö‚ŠÝÜ]m‡?~fܶ:ÇßïòÌpÙMÁÒ´Zñ;æÈT瓦7WÕ òÑ̉kÈ«4ØwÌUé9ÿ͹ÆÏ¨_xb.ÜŸsµÂ\,ÖÕÔáeÐö=(– ÆdÀ´™ 憎۷oon¾«6666{#ïlÖs0·»Ù¸M¿ûnùëo›®àÅôÏí†ûitH›ò“Ýlü˜ß }Júu··_kï u fŸw^á»·™ €üHÞ—Ê¿¢†.Jú®w?2˜ìËZp±¾ã£*ûþO½ýä‡ZשR߸1¾i½÷•ùEönCwÿó%cs„éOç7Žþ}·J'H–w¯:Ÿª~‘Ôx™E¯²'c}õŽôß½mÿ"õ]f=¶w›î7LDvD @ZјÐM`‚@ À@&˜ À@ ˜Æ¤€LšèSœ$~iyáæ»ô‚¿™0sssz½ ×Èþ¿’$†¿õ׿}A· ç/: ¦ÿÖëz`šu‘° FB9›Eá¯×kìõIì€ ljLŠ5Ñ Æ^˜ í ïys®Í[fº€H.D©dö`…š‰Ù+ut‚ðƒSË`ši„“s3w8É›8ä}L„ö‚ ÿ-’ƒ$16õL—/_˜ Eôîåí&þ–v(^±5ÆøªxSW`ºpþ"ÀIså)[c"¿+´7þ0ô¯$é)˜ºÒ˜lzèŒ$xsún!Bº’Ü”ã•^âט±<€©'`2O/{å•+W&çÇaœßEî éêék¼—šÔË$‰Q¹>˜rNfN˜r¾(h‰BVªnèÏW€4 ¦óßz]ÿ«L62S°1åô“`‚´Ê#ÆÉÝ(BF%NJ‡>&#&w%4&H `û_WË—¶|䓦P]€ 2£73¨ÔC `‚ÔlšÕÈÇû V€6M`rT'€ Ò˜ÚÙbM&L—c¢F&HÎOFÕ™‰N䘽3)Á¼ëÏ™’ÌðÓLý“°˜%4&HU0…æXÛ¤`æˆó{óƒQ’¦ŒƒMýÓÅo}çÇÿ÷'Ñö“·~ª^‹-€ ’Î&2‰R^T #…!gzƒâ(kÌþ¦^iL0é R˜x”±8¸b4ßÒèG}&€ `‚¤tÑ)ŒÞ”ýYæ]?80L³îiÒ0M’Ù˜ß2”¨ Lç£ 0L³.<òxÁ| £rÀ⤥÷®]m‰fVÁi˜&HÊT'º`‚@ ÀTYøÒ-<«3¢ÒRKÚÿ k:Õõ{%&˜?9X ™øÍO7šPî{Ö£ž,{Þ)N¾¡$/Xê¡ò˜¦¶ ®/å/C½Œàïv¦ÈJ£ Í8ÔBVo*é$vÎ&€© .H»øºfþÌff\<#ÆTµ%÷FŽß3o)Åæ¢uܘã”T—szŒ¬¼ÂoH1‘¨{ú×Ù³:S á9ߘq¨dI€i&À ì’Lz¶o3>¹uˆ#Ì-}ÒšØ×ºÿA™œp”=ÉÛéûvåK„¬I&-Nÿóö‘mµ¥Æè1‡Êgõu ‹:{ A*Õ`˜¦Ð”Ë›¦,TÚý²2 = /–Ùs”¡jOéh§ÔZáI†O’}Ä׳kÿPC*À0wl‘[|͹˜ŠIM„ñÎò“¤¸eÿÞè-Ú3·3õxÍü)9’*tV<ÔP˜z}LÓ,‚©b˜_Æ:Ä©èS:º SQkXœo¿D³,1˜`Äü ? ï¡jˆû©Nî$0‘êiL³ &ÇJZL"äí±Wìɽ9^ß y¯£8æ/éº"f!«.'¿Û£òÃ÷Ìff\ߎï lîP²1Âé$¸ùêÇ&X¦‘®·GUo­¤þwBÅCmsÆ9£F…|OÀÔ8˜œ¾­$…°¥^Ê’G0ca’J Ýÿ™™½ºxø®°»«0€i2¤öúZ>•±ÿ¤ðþ‘®”ŽÞžîi:€iÚ®ÈÞÞ¢u³ÜÏSsØSÇg=:Ú½óÔ82Æ"2äDFfñöšÐÊðç=ÖxF§5„~Ž3 àtHè­*qKòÉödËбU¿¦éôÕ¨¤gIæaÊ7Ì!Lu™û3?ër½U“dÖ(3ÏתJ“ðÜ1ó6$>r€iâ‰CÆ—Ô0¶ëÔÙ•=žÍÊŸ£ì „'$s¡›¹ L ž?‡P¾ÿÐQñ³+ªS>J~8¿Y6˜„9BŒÊM?˜œÉ&¡›ÊaJèÒ )ÿ’ɇòà,=BçO+iû¤½ºý‰]Eú4Ô"6¹T²Ÿ¼ûŸ7åø A¡ŽªbÎg˜räg…,˜¦3í‰í†`ñS/ŽZ‚³H¥ƒT©$fNt2¡ðƒ‘dú¤h×ùûñ§GV²Ë$5£ª€‰É÷”Q¥ `š­”è]G‘?–ýG£ºªd˜Éª®g)©àä»Ã£ûi”ú˜²YÀOø’¤˜&L!+I~‘Ê‘ÛaW¬•{…üƒtŒÉƒIòÁBPs‰Ì]“ãÚ+0ñ~¢l“ƒ3€i¶L92¨­vçw‘œÅ€Rîüö³ÿ8)|LJ“<(Éâ#=kÂ’srÅ×[ýTMre¶¨\h“w'e†ó{F§ Ô[®#zq·9îÛÜÌlI¸|õ‡`Â<¦:¯¤gÕ‚éFo˜¦{,£;X!G{§†JÓÜŠõî¡z¨Z¯úp+Áµü“+7C`Šžì Šwk´¥|ûNz¬ìýð˜`ÆG„œqÃ_ñuœŠÄh†ŠÁYú[˜Ür!ˈ?xÆLöóüWœå$:c~Žÿã¾ç›´õ?}ßœSg²Š—BjT]FôS•sÂLµÜ¨@2>¹¹’mäéˆî!4±‹ÿøtÔ’˜:Ö$ל 44Ã0©À\hfp¨6TõsN*XçÀü|ÛŽn"lhç%ÛŠÜêr’'DR!¼F[S´D0À4[`Ê+¸ÆÔ,#?"Ìh!Ï–²¢²Â™¥…` bvT d#¯.5 k9Ô"‚'±@“¬èY€©ƒŽyTJ ® kÕX`Žôªøf‘¤ nèÀìJ"ìÉ'|Å’mò"(Õ-&É¡’vü3c:J6L]*M©` Eº%…¹‰æø…ì° aü¤Øù½|=^RåŒÎ®·ºœã§OUj&€© ƒÎO?$·2äæ|ÿ ãgB%زÁDšr¼¿C^]Ž×˜*–l“ qæªÐùÍçZ˜¦zžé>\= S)wïØ¾auåfBcêO•®"6”VåPCáÑRw66—ú#Õ)Ã{Ê%n©ê•ßóNY:`š 0õäéG&Û.j­t(/<çW:HýŠê}[];¨R¨²–_‘—·¹ M€©GªP-ÕâBƒ¾Î×%•K&œµ·' Ɇ~Wô—šë84é^æ‡Tð]ÁN¿`fŠKT]{¦3Éž)º: L‘ÞЉf ‡ºË~E§àWé7€©{0‘5 àyí“#A’3;1ΚT˜×±˜˜ßEþR²Pšp|J8k”œ ŸôÙT0IºTXÃN2¥>t¢…'N†É(Ωý0õÎ_S¥ZSª,©ø('¼ªL¾@y Nù\汜ÄýÐÞÈê |Ÿ)ñÌ…>âhLö~B(æ,ø3þ‹”ºx¡GvWôz ‘(¯ß¦‰ ÔJS …¸º‘gkLB0²:K‡’‚Úø¸Gçb­£ñ6˜²ºÎöB09uñ’\oÌɒ膒ó 0õL¡°LG‡Ê0å’bè2ì¹)WÄ‚*„†ïí&=ÑßÅä-ÆK·fÊe\B¬‡üAIÀÕû `ê)ç;Aù,hŽàŒ|G#æ„åÒø˜a¡ UÑù] Ròc[¤ï«ùsøÌy¶íi :aJÒPþlÀIÀŸUº®Zlu%¨KúH´§d'öñ 'UE£R „¾ëš®‘ý”­ŒD?ëÌ-(ÄycóbôRçCUŸŽ˜&ºF^!Èíº'|çä%!+‹¬ÔýþdÔ‹pÆ9ˆR£¢¦Ø0A’í#I¥V­°„²>Û7¡ï‘á'U§–Æ#'jFKÚIfoæiL¼‰g•åÑ&€iFÁ$TI$¹A¸„À*„Å¥§`|Þd æL9hL$Ly¦SÁ1£ª°4^RñQÞ”+Îrþë|õ`˜ ˜rEJ<ß~‰–·ã§Y^Ù5ç]?á‰Üùí¯ ù„ˎÑj*âIR2A&áòhùƒ’½Õ²sybÉ&z ZÑÓ,&HSØ’o@FÌ5:Çhy}PQ!dJ ØVjÙ3ô € Ò_¬$•3k450A¦Ü•ŽWWøŒ,€ `›É›s¥IR’\° `˜fEBjvá£"0y*T3ÒŸôäÞû~%¹Ãq¾&€iVÀäÐóSŠ„IE jÂdhºžXdϺ’—6LÓtjLư2ijÉ v8^ˆ¡ôF ÔB9&€ `˜š Çã#Q&€ `‚ˆÀäg#É0å$“yÀ0͘Šp@\^8“t‰$ï핦YSßRúóGØÎ›Û[4l `˜¦6€2Ý“’küuŒË©µ>lè‹ê-±0M*˜ä'5´¥É ÙòA6Zªh"ÃË>ãˆe˜¦_¨=*­ÑÛf¢I4)ß5éà˜º¼îë*Ö&4LìmäÉF¢)Ù[Å4iüGœ´*½ê|„©ž@&‡óû!äÈu”üh£™ç$©éœYøäøC·î6€©ËGSç>5¯kô’6i´—˜íC–²3A¼HÌçš;¸L›7½ ˜$õHÝD6À4 “Ÿž‘·’¦òµÉLP+S@h|ÉRßNfkÉ“œ&áçOÊKà1³ÀkSÁΖòwbq*ò¼¥Æà2/yWl˜Ô˜È+¸J†ðᩯHç6}ÐÖGÌG’Rb ðÕ“ ª€’œ×äå`bŒ;LÂ2*E V¸„UNzˆ›I¦À4C`ª&©æšT]–¿oLI,dñ%Eµ˜;¾ôfªÉ¯Z{­p¦0z->&€ `J0å$7OÔŒ"ý d]¦ÔƒdÔLΙdÑììP’ˆÎ?¶&œßòÍû} 1L5˜rEJtXžóÛ÷¬'é/ún4·:Ÿ¿Í6dB®è:yç·cý…(Ù½½åkª[ý¶—èžÑaoÀù –U%//­p$¨Û±¬½–ÇFõiúS/À”éØ9d{‚’>ß!½ ÓÝ!6Ï&XL\LIõz““Þò¾šC¦¶/Ùþ\Ç>ûzR÷­úû/ `‚_ÊwîH’§bX–™±íRáôB~>j1^Ù%o°ÂYðýŒ˜±æ°ÉzþdNç»R¦éSRlA½ûgf &=„«Ìó”|‘œ}©w;¹ ™™/ ¦¤Q¶èéˆî™ U¤ÏW’Ÿ¯¾± `ê@?"¹Í[¦‚Hˆwwv‹ûs¯£Ro¡ˆ¶"<ÞïoãÌZ²ç…Òé†Ú¹06Ñ×’>Ep^$c.Ó˜BÀ4£`ŠN_&ßrêDá¤$#¢:Eôö–jÕ-H~Wêdw’…¬&É“ƒLá’ᘦ :aè,£ƒHÀäû_„ñô~´]½`"M9Þß‘ÈÜrQ3SÈ!ßå‡*t~;0LxšB㸒¢²|²´\HqƘíG¸6g3£ÕãÚHWw4<0t'“§ƒtÕG}LL)ó¤C•/§3]Îï SÒX»Tª>MŽWpzÕ!µU;!¦µLe$UÑèHhËÃ꛵ó+¦^œ†æ®¶ÐOh.«Æ]‘Sí\ÔQM83³ÊWä]~Ì·‡\–ÓlÊ5ºŸ*±©Ÿ­¸}jÌÄEÏõù©6)a.SÏt®žjÃöê&éä`ú†‰þÀÔ¸µÕŸ"?”VåPCáŒ*ûëB¾ùn2¼§\â–ªøC$'OY’`š 0õäéG&‡,j­q(¯@çWHýŠê}[W¹*g¼®xɼ@â>kUSUU¨–gѼ´E`â"Ì`koïÏ`~Wô—šë84é^>w5™™~ÁÌ—¨º~ÚₚËÎÔà ¦foèD“z(“¹ØyI öd÷ÀÔ=˜ÈgNpƒ¼JÈÀ‘ É™ gMªÐëXLÌï")Yª[8>%œ5JN…Oúl*˜$]ýˆp{æD Oœ< “QœSû `ê¿&¯"ù¯$Ê”)¥ÁÌO° Í<>´`˜ Üu~ß>ëw ÕÝ“¨c€ 2CÊ`˜ à`‚ôL!6‘EÍR=PÙ¸} ÆÀ0Aœ,3:E¹æï-µŽ9tL€ 2abÏðG*–ácJìñU|®UL ˜ ¦ ùqp¡9M¡b3æŠX‰=r¤F9Ø0L³h£ÙêŒ?Û0 ¦"\X¯JPÄêPLÀ4£`j7’II%x0eÏÿ„L©žâèA||œŸ"NXܱ$Z˜&€iæÀd‡¿‘µÕ¢eø qé4C´hu\P `˜fT&¢ŒÀ0L~± T˜&hLÉ:T›:f9L :)¼šà0Í:˜š¨ &±DüôÑ ¤½ñ¾›Œß›ôa¯úsÈôÛLмt™àê¨ÔÈÔgwfu‘‘þqšœvò mšº†Î_Œòè­ý1À”ðìõoþÚO-SA$Ñì®’bGIßÈ$ä—¨3Ùà“ä·dfr:Dãä´ÏŒ_štœÑÓ*™’ڹƤÁôÖ[oLÜ…z¸ù§™¬8Äß½äX;õ8w‚ÙØ$uöLÎ0N"Š|,ûÛów…¼WóR»…ÊÃ%%ä•€)O®g®„èÈ'µv¦Ÿ¼õS˜rÉjKèZ ¥¸æ ò¬…ÕÙ$ÆWÆAú{ãƒc™z¹ÑH·ì–Gä’E¥Bø´âª¢ÅÄSsx ËÕ%I?“æ›r]±‰4å ˜B„˜âú6Y“ޙܜ:¯Ï®mTç qµS|P¨GÈJìà{µÅ$TìW¢\d”®kBc*d“à…?ª“ÊwŒ)g& ˜¢Ÿíó[ƒéöíÛ>% •._¾ 0õ …½šXå`¢·ì·k2­36ÛÌðé˜r›1˜:¾¾[+s–q¿ÕX²Æ(Ù•ä§ÕÞ“;(qfföÙ,˜¦4m>xû¹ÃŠ1tÑ—ÖJéN¨¢ÚO˜ …%¼ó²ÝöI£ÜB` À0Å=)m^yI_GF 5üÃÜ„̧ÊuL`ß%Í«ªì’apI¼ãd\ïÎgÂ÷øoéÊ 0õ÷iÜò¥Ð\$m•ë»Pj´`U“ݪƒ‰ïÒ¤9 Ù;˜fHcbf0J ¢…®E& ­ˆMw =Hý½1q¡n.x‰$ç3¿Z2õəѓªK¦66¦PM•´ÂÍ©üS³êRèj(dÑc'T¨`çv3ï:ò"<[Jæ&)ÙDÚ,¾*9=xLd˜rþ|1á¡á9Gµ˜r|Ð4¦™ó11OuyCº"MV°‘t¡mBª\êÜè"+Ìt´ûA-Ez´`T )Õ-&ý»BQß]™rÀ‰ÏEÌfD™ðj£Š‡ï~dã{n®–œ9æŠGÂÅ©˜Rf?KPÈ(Ë’IíIA×EbÒ(!˜úYS`j›MÎ!¹cD&ˆÎEÉh"QäYanNLI-¦\ÈHåßþÛ£ šá=,þÏ,d5¦¤l…~ô8À4>&‰š#t~;7óqÆ%w~x·PëJ‚ýܵ¼s-ÇËC–tiTZ¡ÉìŠÜgơʗ3è˜AŒÊa‚e ©ùjÛX©ýâî<ÿF]‡ÚÜ–|:³}›qpÓtÒª­ÛÒê!›„cd-?:<ÔæN&XL]Þ?=<Ú‰þ](ý04Ülט4+§ÀÔ¶­$‡.Ö¼‹Ø/O~Y‹9 ,~…c%U,¥ú–Ôl¼Iæ[]e‘j)»R„‹qõ L&?Åuìm©5Iý¥ SußÔ(Ku*Í„ æI!˜&ZÔQ·SOU¡ZêI& 0kìÄc¡yRäø±3‘Gyç$±-±&d‡H”;çãþT‰ÐhwR´ ?[ŠŸYîÏe…Â1g!´=_wϱµù¤ÆdÿDçÍñý&LQߘȻÍþÔJ¦J†ôˆ(’ ñtJÉä`a¹§âƒ§‚*s§UEc_ý4aŸð`â+ÁhFðsÐ /†™¹­»GjFI“õ£g9»ßÚÔ˜BL4YªÔ;‹ÖhaÂÙŠÄÜ Ì72×zôHRƒò½ñõУ}"·[%S!˜"šr)™R­²:qÌ$UƒE^ÎRn S®A¯M•zg<˜˜Ú“’5L4f]`*Ä!oŽ6QÔ‘C.¯DUªC×Î$¶¡ðà«Ä$ù{öÕáÐSÄ×Ë$ýæ'h L—=¹råŠý/4¦šëe\òÞÔ¡)'ù¥¼ã©vSNRíŽÑe¢`’ó(dýe\©E(7PRœ]!‹3ïÄù½C&3 &»¦é–Ô;³•ê¨ó[bÜù;ñ]ÈÎý¼"rç·ÄÍ/q~ûáµ¼;5i ã#ÂÑÉ{í¨õÇÄ ‰u÷˜Ç?ACbR¿5Åb8pñ[ß ×åÂíŠáviLL˜<©}Z@•Öuqçs““úŸruwîÙhLJcbÀä´ó˜fM’°ûþ\Ù¿Ëù9µïìÛC¥FitÒÀiï~k¿²^öüjtfMCÕôz¾žÀ™Ôk—Ùs½Ñ<öû`‚´tùʧç ÇBÓBîdS€[n%%cã'R…Ö²r³Æ&€ Ϻää]—5‚))Ù£° AÔ›M†›š‚2oãYP—&°)íƒòŒ(ŽæbçrF„éµ@„`Îùä¿…,ß’„Î$0õ6Ú`‚LŒdWË6åx0I*Ê ÁdÍF#Ͳ=åM3Ú‰ì oöÙ ˜ &¤JrÇȽQµ©¦Ðz²T_e@¢RL¤~©H/©Ö‚‰±È*šr; =47R¦™R˜ -™rÑäѰ¾&À$ט’*Á1G%Ïá `‚ÔÏ&Iô/oå1þ—$Ï^iJªÝŠ|”|Ö_¶C&€ RU¢U§'îfë¤&Â̪K¤YiRn-{úeO{–©0AÑ’ZûÆY›Ý0L>‚/µöIÏÙ ˜ }פòr$V7yÚ̱˜ Ʀ¼ü> Ìax`˜fTBÅלÁu'M5ã‡&+5ù£òÌÌ©¤Éå€ `šN0‘‰½‹šj7«9Øùųl˜¦Ò˜Œaeæ™ZU~‰!Ÿtþ»Ñ⎒ôÀ0͘„Ú$-‘¿e´fÀ0L8˜üâM”ᓼ 0LÓì‚©ˆÕV Õt+biž|ÌI*ÊÁù 0L>BÓŽƒ˜&L?y맪L™Pè@¥‰Ó˜<L¤c0ùJÀ@ÚÓ…óL¤c0Áù @zdʽõ¯?摤7˜ “*I¹M¥Ï>&hL¤0?>áAR¼0A 64&¥·n D`‚@ m€Iý»±±ARâöíÛzáòåËiLj!Ä&&0A öÀD*J6˜ 1A À´ƒÍ)€ t¦19T‚ ô”3PaÊA ÎÀäO0À4+Rq®sí™Cìã‘ä'a¿IÊÛ_—ÔIU¤h¥ŠÆDú¿&ˆèþäïê<üÙ÷sh|Þ ˆÔ&’J`S0aTn µ!».›¾7œlNîÚP‰$ÿ-á%IfàV€ÉÑ¡„?ÜT:PG¨;ù¥då; ˜gÀ¤u"€iæ”§PR¨L›óA{¿Â’³·Ð}óŠJ¨J%÷:m.¿7ùgÀÇÿp”?ÈÖ˜.Ç`š6ùO{¾(›¿]GWxæYFäÎùšNü=ï¨`©?Ü~‹)ö[ê²è>Ì«>ÝÎML;Âb´W€iªT'ç®ð+MFË%ɇ½æ€†,„YŒÔ%¡ãWàG£âUùáäqBcJÒ˜”5§Á”¡j5&HâÏå÷ר¢”øm$ß"ü:¹l Dø-êßÐÆ|V]Ì¿åC]½4 WìÆ»5ž#€©×bδðˆÞ9’ýÔ~³ùG½‚Í1„¦úAfì¡ 8N1˜ªtÀ@z'˜ `‚@ L`‚@ € L}“|:&ãÊ;ÁÞL/Û“âìåèDMþý/šŽ“Xñ8ý§N.¯~ò=´9¿´_`þrr3¿‹So†É‚NFô‰d5 B·°«É)à½=5yýÜ>û¢äjm &òZ'/q³’ Å@X€¤·+Á9º’$L¯ö«Ü×à&«Ÿ+Þ)ÂX¢ìp:–ÜO‡wßôø˜R‹)¦RûF¹r!×Îúülo—IzhE£žYßÚ)¨ L—eRñj€ÿÈ–K—.ÕÒ±üõ?œºæ¾jB+鼟%hf²,Ô¨(ñjµónË,®Lúˆub:^ü" ›M†O±˜L€¶¤Þ6µ_yyÆ—Ä«M6Ðç~nH÷œî,ujLd-“iìÆ¡ìP~ÅNç]ój/›ñk¦†J~fHíìÊ•+Ì™6´YV—²é^“fйúndΔ¿™¹UìÉ=„¶·“:ÇÖÏ~ö;Üï@¿+B7Bè-ùÕnŸkgWs íŸü®‰4åLÞB?ïß¹sçx0ñ‡h?ЦÐ3@ ó0wî‡÷ýKÙéF›LûÜáïR{çÛÛwëäõsÒO&éï/;Ø=ÃßÎ[ä í¿ÛÎo\c2é–oüì¦L¦ûì{Æy°“Oçú6 N9Љ×cîýTPDû™YcKr?Øû×n þ.å¬ÍW¥Ÿõ5l+#¶¢‘¤û3ûj/y~ÉIrcùÊÉÓVñž“‹ž©Áj+±‰ÎØzäUn¯LMÙ+ÑÇÌß0J”•Aö³ß‡Î² 3 &rKRÏåA#“ľÿý\Å”ãÁDÚ¿!|˜K¼_ü½1ûŸTç·s"Õ^TÓ ;æ¶OíÍÿ·.7å˜Þ×ÐG쟂9PÑ'9sÃègxˆÚü}Î3·%ó\ ‘Ë<ç»zhWég9˜„†6ÿ©P…¬¼<©ågyý“Þƒ¦’&¦Ñ¢Lè!LZé¡Ó6уÑ'¹11ÈÙqN/‘ÏUÛ¿C>Zõ§ìWæœòcfoüöíŸ2y?‡Ä6å¢À’ƒÉ‰rvîŸÛå}c#Q qRM¹s¯½jWòjLö@©ú¬¹^£Þ£ØW¹9©úþ sÃÈïò°™åyá+¶Iw©>ÎÎï a?›Y?ÖkIrUûC™³îcrÎ+&ßsA:¿ý«Üq0‘÷鞈Îa›D¥Iß0¨õ[ŽCÊ×Âñ#è}ëg¿·I·QȤ;ÇîÀ˜ÈËU¢19AxExÊÁTx…Ý0Éãu1Ó’ìm}oØ·JT]â¯àŒ~nèÔD'‘÷¹Ÿ[;溢äº:Ëm€IýT &EŸ?»©^U[¿ñ¶Y¸qã†S•ßY{ŸNº¿Éˆ¤ºiC¿::÷oÒ;<©Ÿ;üä‰FçöÐ_Q›ÆT½.0$I¶,Ao Ÿ§IÁL;˜, @cš!qâìCuâ{ž_ ý éLêi›Pé*ú2Á&Mß'x Ÿ&™@0ÙÆùäΫî¹ïê*ú`JH­Ûõ»º*Þ¹_KlyÉ“rèÈ=_}îgþS’üèÕ»®ÏiKÅ®\¹’”Ë=¯6CÆ@IC÷a;­òPWe½h—N·âP½šF-ýÝ Ÿ>Ÿ|*HH——€¼G`Š#Íü>HûÌÕ¹JJ’ß·.š\`ÕÞÏüÕê¨tuU;ÑV‰W´Ò‰øü5LvMqŠû*W¿“˜f3u`3^߇¸Ÿ$_gÂò“ä‡2.9ËL–H§ßägŠIŠH)Øôrªt•W £Ÿ}‰æcÚd‹˜d>dn,?·$“…OMél@îÍä#míŒ4žóÛ#g°”ÿfòÑŠM7i§Mö?c–]NËÎ ¢“˜,Q}SCÅȲ(’ýDϩɴ%?õ ÑzÛÏþÁ7”É^ÃÔ!û0éØ6½Â-Ü5ו#©¤×'¥ÖÝ ¤4ôS,9ϹÊçyÚd«tõ ÷ûÙ¯Ic'åðÑ]ؤ2[Fo¿>¢0±™Ÿ9“ù®©Ä÷s0ñYB;a:Ê7 ˜½…ˆ&y5š’¨AIçŠÖt*Þ‚É7=x@„p#̬Lf¹”W7蕺DÞ0ä5Bm(1¾Ÿ^’ìáÐý²,HûÂI_ו)W=µnj1ÞèN-F 4å²OÓhL›V>¦2¯î@†ÅF§ViýÆÛþ‰d”C^ý ekeNù±•[ ï:t|«wDË79¯¾OÁqŽØf¯þù’,WdÊP=éˆ!~·fÊUïg¡‰L¹m×}²ÍjDZBySοBõJ[ðÇ7YŒ`G~1‚(˜BoÙ…@È.‹æÆ÷™µ«nÐÃ'yh¾Eª_ƒÌÁÊhòþcß±òBW¼í}g9­YsIýLU>&&÷9ŸZ7dñIŽ-TŠŽëd˜rJcÚ1·C’óÛ~\;+&çYÄkL΀+¿ó¨)ÇW¸kG„Iòrþ'ÉùÍtÿÀLòª†Æ˜Ô†ÆïúÓÏ!ô§‚‰9/öUÇWIaÈå\ºz?¾áì«E¡BÁä6>¦(˜$ûÕßBeã6©ŠÒL)^¹ÕO~ÛÔwЬø>oi;sÇ«ÿ•;>6SªïÊ=rïF*»r3 ûÙ¿˜ù® m’Fåx:¿7ÇZdjñ—Ê„iLäX?I~“×Âf'ÛNÞÌfrò[;réÒ%]p1»A•NŽ4®÷u(©ýÊâÄ÷O½WQÞÞúQ˜ÔÏ0ÅL ¿ÉkKdø0sg'ô®< „IòkhHÛÍèyog}¨÷INŸÑ}ªTT·»Û8¤öŠs¹×uF+g$Å uu_Ù}›ÑL$Dkq*ü9ïv¥Ÿòý\W@¢ä¼„¾EÒ3Bè$}u¯ç1mÜ~G5çXËεVf\¸r×ZFïôAynŽ¿Í].÷LÎ~ïõ0Â.©ŸÛ?~æÙâQÏÃÛHw{ãÝ*g]ø4ˆê8Ñ'['QÔÝ^¸©äeöS×EO~vÒƒ±C>Êê§OxFBו¤(“1]`*¥çB‚Wôó´Jm3¿Ñ•¤_`’™ªÃÌ'yýìwB Å’ªB0á‹©ð_Wï™ê‹Æä\ßäcÄÎãç¥tb9h·¿È~”1ãqýt9ýl×ìsr˜ùARÂb> ’.PÏ¡ow8(¹![;)yýÌ÷vÈP sæ)š±O—$tN!˜äPçÏy:1 p%%OømzRÜîg¿ž¨$ç7ù0O*FàÛ<˜ø{ÌyN0ívœ}yýMZ5åxûÀ>'×%“+.”|}“Í›,Ó4›rd&|òFKh1`rlãïá['¶Cj?“7Ì¥K—ø¬¯d^óèS:5¡0FB&“ ¶åQˆŒ~fÀd?Õ˜ Ø¿¢–FäÉÂɯã}…¼ÆTÑ'Ûk)C õ, ²zšíëµæ}p0éq"uTÙ7LÅ„l ]µ~ÙÑþ˜rÙýL&ðg aäÍX8ùŸC=šMšM¹På8g=iq„²¯ûç/ZÑ€1åøïê\߇m_ð¥;6ÃU ý¾òKÅTSÔIÜç·°Ÿ£< U 8däü–X”rÌ<ËgL¼ífŸ6§Cúw|òΩΠ¢¤vµ¤°”Sv1~¢€ÐÄ;žzÞÏL1¿Bº?˜“¡1Eor~†=]Àÿ$:%µ¶z&¥Ùò`ºqã†ïcêÖ>ò­ ¡g´lrr×[Œ £'7§QúÖϳ#5kL¦îÀŸÝ$Šld6Ë–ïvÛ…D>Šåc®}¸mt¬$¿åþô'úO%ž:ïçЕL꡽ïÒ˜ t~·Otì¥CL»c{2›a:4©>÷3yÓQÜ^v²ïú–íÄ>ÿØ:¿Ó˜‚Ôô3À;£ïj“­–üÿîTîý 鑯”Jœv•÷-=¹"…‡ÑÚÑ’áõSp'÷­Ÿ;¿k¦Ü”ƒ4};õ§œYoá>¡ý ©0õäLî„@¦møDHªÐ-¡ L½PU#dÖÁDd0ŒHª1ד=8 “™ë ¸téRs¹ÜyV×§@"dâÁ´#&’¹ü/z•ò¶!2‘`J âebÍó²[m†ÓÍ(À¥Æpé vÍ € ™<0™ÄZ’DqL’c²² ™ë2D+“öÛO"îì0Õf„@ S¥1ñ,Éô¯›á”Idæ\"dö™Í@y‚è×mö¸<0U0å~v3&¿ à a¥“Æ›Lɸɖ0™öM4o?3ÆA S“c…Ò'ú&ž0½$_7…,(¸I¥:ˆòÀ¦:`R1ž©$6Ãi¿%éÖùZd24¦­­­B[ƒV Lv-RÁ •`NS¨ú+4&d¶L9>q­ÄâÈf¸ ¹½v9yàýs^½­›L5ø˜Ha†ä"_ ³– )“_€`¬A e²©àNò¨Æqz?™ï†Ç´dªÀ©C°UD‹Þ*Œ$)bžv“‘\L˜ `‚@ L`˜ À@ ˜ `‚@ L`˜ À@ ™d0]†@ …Ó­ðe,!¤vQº5˜r>&˜ À@ ˜ `‚@ À@¦L¨ @ú&P *£Ý˜vP277·@Ò˜Ú@’BáZSªª@fÖÔ*˜ài‚@ ¼ßY§4éLJu› ˆa“‚zíLB Ài\*z¡VL¤UW0Az!ä¥bœ `‚ôLÀéFæ ±ôìr³MÙLÀ0A*©HzA½*ÍÐÆÆ†~5›`MÀiÜvs¸cÖhZ9ú”&€ `‚´&Gcâ7€Lm€ ár3nÊ‘`"7¡&hLÙr~›SN›{ À0AºhÓÍ΃xqfYÌäI}%`.%¤30F3Π¤Í€ª™•K—.µ¦¹¹9£1ႃu]x†ÉžSҬƤ¾W®XefPÉî% 0Ip3I@òOIÂzM2($"Ü«ÿÀê]Ö]I`—+™$>+™‰ffz¼ôŸáYˆ¯t÷Ū<ñ8ž7ê»û.º¹¯I÷=U§êô©ó¯NUWwWu¿ÏI=§ë_×TN}úû;ÿª¯/¢r®ûÚ¡EÜ÷ðßn¾N÷Èœv“ð Ì¢(·Ã[æBÿé Å™rni{î|óŠ]Zå,g{~áþ°b“‹q©ÅL»ONµ©íÿaY)!ž³\®=w,Ú±‹«GQ­VcùóçÏ?÷ÏsÚôì9'©6ù§sGþémÓ±ÿ<÷¼nýñTÎòÙ¹çþeî…Èò-’¡Éýè¤ç¿÷6[IÓ‘Fþ-å>G^8'"§#ß{K¹æùï‘cß:rtN•Î+VŽv~öÅsdùœ»4§çÆÞ&ɰƒw*²ùŠcçž;>Ç¥ó4sü„“N|ÿí±ï{yEúþ[Î>Òú'ô‡„¥c?˜;ú’³diì_Ï)óB"GémÝV’Ì[…ôâ¼/›pÒ±q/cŸŽM¼sôÔI$tüœvÏñóÎyêíã§ç¢¦§çNºiâGs/ùy/ýèüø*'OWNþpžd¢¦‰ÓÆó nºpjšäµib¦jØÊ§“ÓË=Ù7¾úåJs)p†=÷>V¯_®ÇÒÜùsRɇ·­u~Ž,Þ¡ùCO?E(Ö÷éFú ¹hŠd>ðùÀVEšqÓtß§ûO%“>4í¤O~ðÃÓWþåôÓâçå•4‘CüüÌU“WL7Ÿ®øÈÔâN/þèÌâkóW|lÚÍ{éÊåYþªå$¿5ȱKfœ44-¤þ%ÓKM©ß]^=4E?þ7']óßó$Ñ<Ÿ®Ÿ’W:û_/îCX63°l:Rê¿aJXsõòéUÚ4xsžf>vÓÔµ«¦IºÉIKnœ¢––®ÊÝ23tËô’›§È’¦ëoɳ¼2]wsà£{ìäЭù¡[§ÍiéÇÙ>ù%·.¹õôÐÇ'‡F¦£¦åëó|Z¶þÇËÖçWÜ6µâ¶É•·Ï,¿½°ü¶’œVÜ^æ?ÞøØÈ/»£xÃæÒòMM§­³Ë·–"¥eÛøLaõ¶âÚm¥Õ;Ê–iX³~Ívg¹öÓ³kþº¬LÃvk–ïgœ››33PØ`P$éáÇmBmþÏIš»¢)æ®Èç®t‘ú¡ˆ3:äiÒT0?EYvÕ`^‡¹«œåŒa/]3¥eÜG§)¯úÈŒ°’ç¦ Êi™ƒ —†ÐPH"æTL¤©_³ž’Ña™„6srÀÇeȲåÔÀMy‚ýÒG}Šä¢¥¥Ã!Ójº¿ åDxÇÇ¥ëDÒÉk–¬›bùk×O/%ùñÊ‘]:ÉÁÙÆ¢’†áéåwP+ðk¤­:iŶ²= WnÖ– ¼Ûn GaÏ5;gWßU2óÎ& º8ü™Âê]EšHþ–Ý…5»Kk>Sd+åtËîâà{) Óìq£j’ÖZÚ†'ý—95=©1´Bž)-68IÁwU…Nr÷œÑ¡Ð±„’¤t¼¡·þÚ¼g$Eo8€ o9ÌMw]^¡ٙ"’ôСC6¬¼'=òÂ9ƒCüà_N}ðÃS‹ûó”q ‹ >6L⤞†¼Ë›1˜D&ó~P¥à¯ÊS&6ð7dm ¯ŸáØ7©Œ…Ý4©æ {8#ÓàwpùCdæ Éá$ï|¼qzpÕŒãþ$&öû+ØÍ\ᵫ&ùèØ‡¥ÆšÁ%k§Ô;®cŸì ý4ÉÈ> 7Nz(ô¸VÖËá¶Ñ% –­±X ÁÑ§Û [‹Qãej*Wo+8‰9;?àUãÏÈGÙ í!A›@=ƒ%4%…k>WâðWÔaQŸŠëï)¯¿·¨H÷”GÜÌÒáýµZ‘Ô±•®ßlÔjž?/ÄølOI)eCZœ‚žôÈÑ9v´IªÆíÏ‚kBÏŃ~ûm°L¡(ô¨ç“¿ŽK&¯šäøÁ%S´*ì@«©°ØX9”ga29„eIÆ53VRÿH¡ÆåÜ{p™ÇŸsfƒËóòV'­ O È* ™IlÔúy>R&é&×’€zF]Ÿ¸z꺵qŒ¡‚•ëò2 麧ŠP0†+6L»Æ0¿rã”%W*w»Ý±u+6¿ÂˆvÃæBÜÀTÖ j ø ®‰1\³•Ã81@CkchNÄ ./àøô›Ý]Z=êCmFm!èïéoÃÞYŽÜS Ë÷Õp &ºs#ÝW&iã}^ÆI÷;ù¥ÃO*“T–‰¤‡¶iþxÒ£s: ­+bÝ¢¦ÆÐåàd?¾AoeÃ-ÖÜý.7ysÇhØïÖ °ãªE‡ØYôêÂå“×øXtÎÃwS>ð1˜<öÝèeÈžy'¨4ƒd%cxMbÐ÷ÅäàÚ©k×;•€†êÂÐöVuH\á²Û½0Ù29A±¸¦`®Œ`£·ŸõŒNŒ¼­8|§¡Z° µÒJìîz%Ä*W6xG2å–Ðõ’ÏrtÛðÙÙuŸc }®DÀÝk‹Å‘{gÝTÖ'o‡ ÷vÛètÆK$­ 8t«HRÊG¡q‰¬!ë“ñ¤ÔsQ»{ø™CÏŸã”ÉÖ+8ä-Ùá ‚4OWRê1Ï+“Nç Ùi=c¸|’Ç"ëÙ@Ö+Vºqtã˜7ta×8óM5îò2¹Rû 1ƒ ˆn}¢ÓxBþJ4²‰Öºgu®yFçÀ[f(1ÙMæiHW:™Z]߈,ÆÈ×¹]¬1¼! ƒÑñ$·Ã¤ëg–»­(¾1œñÛOò±ZNÊÌ<®¸Ã« \¹©¬߬1”ÚCäTk Y½¡c ?Y¸6œ¤1,’DÂÞpKØ€¦%ïÊ–1òê0ö¹•†BþÑEú4¤öPHd¥‘ÔHRœ Œ3§*n|`–Ò¦‘Îróƒ¥m–7»7¸¼: ­¥m÷ï0>Rn2ãH*ûH}=)[âI½ ŽŸ˜ã›’Éó¯¬ äQH#hâ =~¹†‘¡P ÿº˜›QÅ.cèf&i¾XÙ £g kuÁÖhÆÇÏ8Ú¦ì"Àz½.Ô*Ö9’Rœ¹™<—Wg”+éÏ µ„ªÊÁpcH8¸,Кœö•)Û6›°£‚P‹ÑÉÆcèÖøÉ“c¨tyÑšSÜfeE\¬ïj£Ýá®WtŶÑ1ËnvØk?ñ fï ùhÚ@:Õ¦‚´©À‡É‘’ÀM÷cƒƒ”y&šÁ·é"Ëo9à@sÓÃÚtÇCEÃVg‡‡KKÖÞË{RfE=i×û$ëIi])íXê‘”‹ý®û—i†¶‡%Ÿ'‡KU‡3žC4ÖÞìÃ×ç#7°X¯Ó¨Ù]3)0Ž\›Üpà³u†g"%)1w”hÔâytûø$oyÒhÚ¹wÇcÒ•´ØŽ],ΔÄú¶Õ‰©I†¡æ—LßpÛi'@Þ8iiu5†Ë?Q4„É<ýZÅïyMä%hS2m3v3ºv’°7EEÝß]%ËZBßÇÃ.˜ Š}4«B[Ùì‰g¼ã¡B€ž_šÝz°ì0î iÖo=XÜòåâæ¯”tiËWËd¹é«¥Ì.’T¨¥â›ï jµžô¼«¨ýIý`ޝ1”9Ø–}ú¾o𝠔9H÷¡5‰•Ñ.SHÑv_iøWSX˜œßõŒôñIok0þuœ£/çkøoH #íZȼa£ÇµùRÌÑ<­ ¬ÕÞ÷hXk°’uH¬s¥u‚=}´ù+!ÏÙÆÂÊMeÚxB»Fée-¶·84 kÑ9DÖ‡â’|´‰‘™U6õ¸.YûA£¼{–DÊ´›!# ÓŠ2*ºB% ý}Š1LÐ$)È;mŠ ˜X?¹º°ÑäB¶>PVÒP0€Jo(ÃMe{(Pg ɱ®1œµðƒݦ­_ñ2xÈ3§¨Óί”åWK;-í|¬¼ãÑŸ¶½H3Ë7º-NïœHʼ#mŠOÞ“R÷ëxÒ‰9~DŠß®2ÃzYÓÆe—¤ÞJç3(× .a¤ ¦Zp%£¡ŠwŠ Í/Y7ÅGÇnþ2¥!ÁÜŠÛ& hó_Mµ’7ÌṞ`Y µ„äl,d®I¬t.Éœ³Ò5†Îw¹öþŒVÒ4 ý¡x!ÆÐ‹6Ú@h&¬9´W®r½°ò–ÝE¿Çu‘7€„n…¬êP D²2#kún‹—G„ íë YìLŒ¡’ƒŒæ 7¡¬0†þbÍQ¨[4ÐPp‹Ìný¢³Ipˆ¡tQ8ë OƒÂí_.n'æñÑY…á鱂¼rç7Åä‘4èI… E!Ý©fÐTiD¡[U#tŒ¡™ƒw|¥h0†^úŠgeo¨L; ›\üÝõ¿Ë2#¥ßòÒòMbtO»„ u£„–d}bm÷ççT>~zŽ5"/™4P¦kè°Ö»ÚC~`2k^æÉ[©êQÈ·&7:fûtó[B –còÄyÛÊ|Ìågõñòl0F.êa± b碲>ÑIþhòŸ%C;“èFÐV]­¢æ`kyFMCô¼Y2†:,ê|"럨k ^GJókhã ëiب1¤¡q”zC¹–0àUUŠrÚò£á¬ö–mð'ïÆj•‰Ñ!(¤&ñëVÆpûc )7wZCCRBÓ[ù­õi–f>õ­"Ùô[åQgYÚý¸—d’†*1OJÛî_:=·¬10ÙmJÞ8ÍP¸âE›^Öâ¬6›“2[KìZWÜJCÚ6bÓ”ÌöqÂgwØòê-¥[>Y\³}ÖMž¤¡qäΆ;gct¬iÐÓÇ¥“ßM"å—›©1¤“å×#Ÿ›9kB íT¨N{K<Y]![õ@tÃd¡K £¡Á Š$ÐüB‘5S†ö§Q¥¢Û~òJlKèÂÐZâ$±E¥°å«Ekë ýy§&øµŒšæîEe>4m'Ë¿›%t£@Üùx™¤íWd$e2Þõxy— DÁ]ßö˜¸çÉÒÝß™ýûòž¿?ã§Ww5òBzuô;¯‘Ìè“gÈ>>Iß!–“Î*>úÕê—›™ *PO:þ£ŠÐɆÅ F¾q’‹Bnæw†d4†!-ËbÝâÎ"c_¼ñÈô@:*9*û!ô×Ún†¬)¹áï Í5¡6Ä­4䛘7|¾äµ&½!ëÿædþñÕ=O½f“F¿ûÚžïþdù¶†';îð3‡ø9Ÿž:ü]e^KR{OJ|ò}ãù ªx¹ Ìß;ݸµ6׫Fœ£Áyi{í.ìw]ænPôÊŽ‹?P,dtð± ßö"»ÂõíÛO(1‰…l¦–·±Í #d'ó5Ç-~êÑnÿr1ËA¡&1fý o½ù³;¬bä`z¼°ëñòžo{Xä"åÂè ‰ÝcÔÓÃyJR2îþÇ3„t»&zXÜeGgçÑCgËýýÌ}ƒ+î î³·ÅÞÁ÷÷ß´W—®^ø8x#YšöXµohÕ¾¥7ïr3Nþ¦},/¤%\ž²ô–û–ïW¦¡ÕÚM†tñ¨%^f¯³¼yŸŸßëµwéÚýC·îM6-]øxmØnKÖÞëfîqÒº½C#ûÚ––‡¤½Ë7¶6­Ü¸wÙmÚ´oåûÈ’Oò9‘}–mß&û=‰YS¦e[÷*V~j¿nÿ>©=•9­ØJ3{×lÛç¤û õ„´æNîã÷±ü-;¼Ìð{å•dÏÆú;ï‹4Í3kÁI*Œ3Mø-SŠÆ-êÈûÀBfºÊuø…__·¨­÷3 w)â ѲúJ¸\þ¹ˆÿ¡É¾üN>[ã%›q¿ÇôöJÒ 4OþU«Õ .¤^îu¶é¨„4_­\¨T*ºÍ•ª÷_)þã*b¦ãª¸ê’Ûñ¹ˆñ¿@ŠwR·‹|»îÜõó•ˆO¹Iíï½Ë›ØÙúG9÷Zµne¥Úª'?˜Ÿç¿ÔùÞàVµ©ÛÚüïßB´r<ßB Ü!úpvô2yâtÖm´èW'úm™·¿Ãô/µ¹uJš'îI!‚zN )AH A’B¤A )H A’B¤A ©øî¬†î¾]3äj”åŠfRÛÙIC¤+»|q·!‡'Òý¾âÅ ªœ-+6ÉTÉoÿÝl s é ¿Fù㊠¨ž-éù¯OŒ¤Í\|tÁŸF@.4Ï2r Q?4]‰ÑÌiOIHŒ¤<õ¼yÞr9ùgDþ=œi m ö‹¥aeƒîÆ—¾Ø­àiW’”ц§ ÿ¿O'ÍkgÔ’|toˆßYt&3…l¢{eE¨gKÿ‹Ë¢–Ž”„VE÷‚ƒ¢0Iñ @†Ò¥,?üóæïÅMëâ* ¥K“C*¡†0-N†¢/? |P’âÙ0”(²ÕLRsáAtß•¿©æ@D( íinI’¤BåÅc({Bt•\Púïßf7¾DÑ<Ô ú wüwTtfeg¶oó”Éñ~át$5ó§=?«-!)_Е]Ø&¥ãÀóÐMî2ö©”õ¤|3¦.¬CJOy ‰¥m†¤­£ OÒÖzRz ˜è¨ÕçWÒç‡í Ë+…5ætgõÚPÂ,=éøø¸ûpËKôùüùïdËyÑüHû;_¤¶Ô`Né&ƒóEŠ”lJ… SËR‘†rÞ>Oj`e®Ž¤òGÆhù+” _¤„,Ô~’Êå‡ ’ŠpäyGñÊ¥K2I¼)’÷?ÿŸO‚Ô"’Ê$Z–Šn&)û1<)õÛ<Ñtà3;J¥iU(]¢2¡S$UvL‰DR%ïO9Dz •À9‘Ó6¤–– %g”k—xRpÎt$ÕEåfo«; iIª›ÿ›f”½ó‚žôµ–4@¡%xuw¸”H„ÎN…¿Õ$凮ɥ"R=©\§×º§>]$ ÝÄ[H!6ç×èªbuÑ=x×f’²‰åHÍD÷ô Aüý9¿7êFÙzwÍ%m‰ ~¢û–”• Ý(ž&=)oÔ²JRCt¯kJ2»H¡aŠ?"•RÝJpCíô¤†ñ$qIºˆ-y’²’}$¬$KŠH—å‹hž®¤~Ö?ä";Õëï‚¡mŠî•ãJi×·f¢{ÆÓîñ¤I)ô´eVÚîù‡‡õ‚²')Á_Î]ããï" É%—z‰þÐÊ´2üG¶?R+HJÇk„¶Ý[’Ôì=»­ž$íe’*«>’ÚÔˆÛ”þL+Ii…)ƒ ï+kX&×X³ˆu®Êž´}m÷rÙṮoKiy’B]ãI›ˆî/²'™˜6$åkB:i)«þÚ@Rökª¬ù±,5Wmhe’˹yŠ/R¶ø¢?öâ1ú1tVk’^ä±è6]dŽR榀Š|/ò´¥†×‹î¥ïBjI)¬>”µB ] ZàÓB𤺉-r~@:%ïIYS;ï»'õæË-NŒ‰•¹>e;•Ü%@¨R@JФ–óÎDjqj[?qjS £yfΞ=ûƯÃÒoξÉä“!\b$µïàIܨÐ]_×Çž3Øçÿ¦;i)I#*OÚ6žÒ¦QC)H %ïI•Ð<û«7d°ÚxRmüü‹dýN£C†á¿ó'c§QD÷iqÊÖ\P )Ô’2h²ŒŽ­õèãî £ì…¹Ý´›Þ»¨Ùz ãDÛLRå¸ûоqmŽë娫â $…:àI©"ýÐgFÚ_2Ï:Jc|š‘ç7QÖp»Á“vÒ“Z¶8)§Ö´âµNð¤PËIÊÌ#)…¦Ù–²9+í<éE:Óëï^²ŸøÙ]óÿ8÷êͰçÓH;0î^÷f$’v¼´wž¤ßãžTÙâd?šÊzŽDÒä…éf’I O e˜¤ñ„þù]ïIí5-_0EÂùH/˜I¡l“ÔLI0´ËHÊê+åzÒf<)}ÃØ¢¾ØO}’B]èI ÄL»Û“*ýi"Å•Ÿ•ü¬«´Ô“f×>àiÌttõBt•¤ìޤ¾ù«ß’d.«æ—å$IÒî¼€‚¤Pú=)}‡>³I×T·Ýî‚ýÉ£^†ð¥ gúIŠÿ#T. –¥ÂP\ ¯-®m"ióEßþäÍ7SÀ®Â“BY¬'µyH•fq®Æá-ï%G÷ô<ÝàI“ò­³“˜R(µ$•'E·ì¼Á º’¤r«†!É’'MtÐ볋ëIe"´DÁ“öš'5Ôæ}÷=ÝÇà£òp6$m[!RKRe„¡{›HÚÚg#Þè(£$…zÄ“vIS‚¡Ø—ÁÄ„{ )„è>už4)ÂsÀ$…@RIëè…:2IÑ ªYü%;Ó3ÛÓ†³xžAR(å$µWÆ<©L¨&½aèPÔx$Mp7<3 )”~’öÐ &ösæ¾¥nœ3_×…»nœ¶ 6H e—¤YîÓ¾_¿ T¥½þî%aaSfHʺ@ñN“Ç¥ð‘¡SØÁïÞ_{ù°¥ )’º±ïø8#éë¿û/7£Å¨Ÿ. $å5¥2ºÏõ .’ÖÙG‚H¿’T¬Qõ÷¯Ã“‚¤ )HjçI/ýç{ÒaÔÝ i¥RÉ' é@Z—šé1Ò $…@R‘¤¿x÷OaVT2CRÉE¾¤aÝÐÇ[þHϦï·’B=íIþ»t ;d¯ž4¹[ ’B )OR'`ý½‹Œ^Y7! ÛóR6Húò.'W³ù>êI30Zô÷—Ù¸ûjŹ ’Bmn»BóϹ\Îmµwʯ§æ4$]Ä7¹Ëz=âdÏ5õ4ÏàiÚÇÝ{s@TÆÆŽŸýÕ )HÚ’þP&©ìI ë3@Òœ\î1eOO>3ð¤Pë=éÅ_ª¢{¡%*‹$ý¡Wîk˜ô $IQ*ÚÝSbúÕ¦—XŒŸSíY©f¡žT{_k×;[cifIÙn(뙯nq"[énó¤î¸ûEÆ©ìu¹V{ß9U µiWÍŸ\§RçfÕ; ’‚¤­ é©qæI/ñ ¤+鞪–²Ûú“êÞbÏûV¼é>ëÏŒrº<º$IáI[Ò;!©C 4“³ê¡T´mÌ™oKXp6ÍÏ …¦Ò–“‚¤­›3ŸJò“I’Úΰ'(ÙÅÏ Áë©S§@R”ŠÖÍ`"Œ‚'…²úÌL„ $I[÷F<U¨Ùfj–C³@R´uó“öPtß"P²}fÌÅñìÙ³6E$Ic“TøµîOÚ:´šU“SçÒÃARm÷(÷xfâÍßœ}$IÛOÒ Ï`bþÃä!¡¡ÿI­è¸ µ/ºÿÕˆîAÒŽôËÀÛGlF‹ÚÌЃ¤àfgïâÔ“‚¤ iëHª$Cæg0aÀ´w‚nšgå$СÁÓÌE÷ð¤ iâ$•!Ð…³êÕÝQui*h%7•S”Ê'Ä<{ —ª®hѤ~$I1î¾U³êñy6œ+ô]Õæéø’ƒ ‚'…ZJÒDæµ±|Ò»Á“Ú{I3Im(9êOjîÑ¡ãd¯ìµÝÛãJ’²;JRD÷ )„è>Ô‡vat¯œßðÚQVaªlbWˆîAR¨;Hï4]ø–æv²Lø.`$…2DRÖJÉDßIÓÒñ™ãÄ0Þ¤ i¯•Šãc'êh»O|´hǧ8@R¨ýž”8PÝÌßMÎZ+ÏOªœ¾${cœxØ5‰<$…º&º7OYï³æÞ–ÝìI¡î{føžùü¼yüØP´ÇI*OPK;•7?k­™žQI*׳® ¸ )Ô’g&Òá(Q=R*"µ°7IR~´¤îÂÈo£¸ÖÜ÷ÂZNÒdcóг¡* =qœr‹Pì@Ò)c/«[´8Å.†Þ–Q‹«®&×|að¤P›HŠw‹¢T„–Š&[œ ùš+zf¤³Ê¨DŠ+H %VOéG$í)’ò½ „>¤ÉÎô,¼O¶/„bßKÖ®¿­ýI[Ú#ÀO­û`å’5LQ÷9óáI[1g¾²ORÖË\\SêI“}00è>µÏ 㣲•––TxÒž%©ò-³ì™/\˜Ð€|UOɧ&_>ÊÅŸMh¡ƒ'M•û`Šè¥B†igÇ8ñ•í˜'FÈ~Û0g>ûKêÖ3ç+gBÒÇñå’Õ1¤=©È¥¢I’Ì“ì±"WVbÛGRÖèfˆ¾uóŠÊT,gèié§¼FL.? )J…P*b×ùD Cù #ßH/L¨euPö§¶oV=¹MM0• …YJëú™óùÃÉQˆîÓóÌYžaút([¬_²š)²'e=ó S¤¨ÅIÉD9®·ÜÇLR<{!)ÿ[-Me¯‘Ø3QB]àIu?±¯'ÕÚN’4öœù6$Õ…ÿxö:ûÌ„þÈÓöl©Ð…Ær IåI”²GÒzsæ›ëC…AÒtº‰0¡ž´wJ-Êþ÷O:•H©ˆZ›Z\ÇÇÇc\XÂ$5sÝìíù £ ª.fQö”'þ }fpo»£Tèæ‚RªÕ¥Âþ„Ë×ü¶¤hêéñy.(›"a(Q¸·]àLŸ!, ¦ƒi$µ”®¦9’{±AP3² ”“'©<Îß’wBŒ_q•¬!‚”r¢Èä=©rÐU(=ÙÅɽvcüD@µM “”2ޝrÀÌJº<… ¨ öÓ&ØM’¤ mü!4Ï/™i5ï|ÁŸS€þ1òþÊ3@%(†5³uK¦ížu£-\rt¯D§ÀMvmJ¾z‚ ¨jSRÖåEѳxŸºK™³Jt »Ñ™ÙØVù']O J\2Ieø$CÒº49•ðe²ñä[“Ì&”?œ“ßʾ‚Ÿ˜ñA ª}žTIRÝC )_%jS‘ AÔ$å[‡dP²ð_0•:Ô*wÎÏÏÇAÔ%ž4’bw§G AP·‘”·ÊW¡%ÅV‚ žð¤< Ù»yc è„ Ñ}³V”®—‡ó'[WAÔ $UÚOK2 õ.ICmf3sîAe˜¤[AP¦•’öAeM´»}… ˆ;LR ×… (ëoôë I)ÅAR‚º€¤ h )APÖ<)¢{‚º€¤|¯!‚ (#žt||$… $…'… I!‚@R‚ $… $I!‚@R‚ ‚ $I!I;KÒZ­–•­¼TËëçw1Ÿ!Òέ¸±ú‚ "i<Ó*Åo–a×o>–ß_—‰zýÂD‡zøMºCøk“gNT"\†î[t¯ücu[g@ izI*Ó06å­ü9C/‰!Ìò2Ì 1°ÌU4/ßÃåY~‹n“á×ÅðA iûHª3JW%@‡—àÚ”_!’ËåH†Î‰m`Š9DRåytÔýö¨ëÍßBïIè5ÀB içIª#—ù‰UnµßSyˆ 7•”´1›’Rnš &ÏV’oIm¢{`ISÝ3dFa(¹s‰ÈöðJRËjJKÆÙÔ“š¯Dw*{’†Þ I;ÝÛÃÎÆÒêÎÙj’Ú“ZQƒ»T× F÷Ì 7ßâ˜B iŠ¢{+‰xR!d¶7¼rèmÒÊ /Ê/Tßj_ƒ•¤ö›ø}”‘îz $íL=)#—üÄÚÔ“Ê>˾žÔæ…ZsKw½‰¶{sþ'Dîh%çx$UV¡ðÿw’v¾í^X†¶ò×¥†xÝžJ”Ĉîm¨e…ƒ¡~£nì‚©fÓpŸííj¤Ž¨’vçhQ]ŠÝÓ>Þ×µâOhÛ´óü’¦}Ü=ïï"‘ø€ 4$5 <ݦö=xº/hÅOu!Iåæ‘ˆt’Ta+öü#1¾¨ãÕ’bV½t¥™oþ $m!IÑ]‚ $… $I!‚@R‚ ÿ%¤ )A )H A’BõI+• H AH“¤ãããôkLAR‚²NÒjµšŠèþAPÕázRÞ“â— ‚ L;ÓÎ{R‚ l‰q3â’©'­Õj¡WA”EÁ“BÙŠÕO ް$åûBAuA¤ß>’Bu±ÚAR4óAÔÅ¢/Âh9I!‚z¡þ$… j¡@R‚ ‚ $… I!‚ºYr‹“<˜$… õÓÉÂppxRR@ ½ =~‹ØŸo¾ )A g³8H Až0#§)}½­PÚ‚¤ä‰MÙƒb¹®&´—ß'dÃ@‚ž´7ÿp›×Q,ôàÍÉår )iEÍoÁ@Ò^&©ÒŒÓ;’BP„§$…'µ!)êI!¨mÑý|ðãB{b†¶G§‡¤‘šÎuý“ ·:jÓ<<)µ™¤ º‡¹šÖžE©õ¤| ’BP›HZ ØÏúüSïCÑÉX@>Vªó ©J ,7Ø?àëjwyÍàà H AÝNRn¬g æ7ª{ÛšÍÉc_Uæ<)ù–Ÿ½yæ§¿.’åkÿ95ýêÉéWN ,¶ù»t[cßF‚ÚDÒJ•¹ªÝS×—ë‹ñ`'ØÚÔ ¦‡¤Ä‚ŒVþïùÙ‰“…cÓÇÇ G¼ðm²žÝ ¾zT¸E ûÏ­of¼H Am")ÿ,½ùÍ'¦7íä¸9ïù¬í»Óüu–¤>õœ¿`1õ¤ã…cã/?G—‡Ž~›yRD÷ÔÍ$%Î4—Ëbþlû(ÿÈü/ü2Hj¡êIv¶ä4Ü1¤yâIO:Ø?ÐºÊ ‚RäI L©ýtl©ûÔ0Œºu=ÿ ƒäñÝò¨H"LÏIû¿¹ÀòÄ“:õo/ùžô¥'UŠçÿð¨7$… T”òÔ2ŒÙlèÚ-l²yÜB»O ' %r»Hªè·@LèS/&xRÁàË7*©$… vzÒ,rIG¶c3§J#ÉVšŸ/¢’}X¬*ÀÂü15Ñý<«¹àw³¸š@óÌä‰'=ðð¾}í%Ë/<¼€õà£ûæCÏ>1Y8væõYÏL+ÿgò?<Ê_ ‹I!(ÍÑý‹èƒ7˜YÝóÅCAðžÊð–NY”V’úo%àF‰ñ<ùòØDáùñÿ3FèDùYã-K'ÈšÇcÇ_o&ŽÕ\}!›q¾’´g ’BP›Iê`ôdnôßïíë[Ä;ÖJ¥*?Þêþ§zÉ\ªG³äH›[œœú7ÏL¿ìÓé1zŒ¶ÑŸœ>ÆêFÿàÐ=@0*¸Ñ$ÕÔÀ¤”:’ÎS7úïÛw­Ûä8D7Æ—Ûš”$eã£X°o )ÝßÝ|n <éq£ÿA0Z:îxO¿>TX>ô‰¿´OéF-Iz!X[Š1N”’Ò>ùÄ2t’åÔ;¸¾¥óæÃ™(U)+u MüQ¼WMg‹S¥ªð¤»ïß=~š@ó(u£üò©žÜûðÞÛ·*ݨò¦) ›¸@Rj+I¹ÞN üJÖ·Ô0$¼ã¯Ÿkgtï‚u~pðÊÝ÷ŽO?ϻѓ.FGܳyÛzÉúmV¯žo2¢I!¨$¥Á#o éÓN>ŒÒv'w(":c¥{ÿZ—‘”éÊÅ»ïÙqìô’@Izì[‰W%½ràÊ â$„ó¹i )µÏ“š#PßFͧöïÔ'Ó}÷ï!ô¼âC‹÷_A>ÒTMͽI!¨ó$m„´é†iG‹n®ßDL¨?i^…¯ê@Rêv’*çsãƒÓJ5½x§HJïÃ(?=¶ò×H¾·t¥üÌ`A&©8]f%ðÌw¼e)…žÔ{YK%0·žÆÑ‡¯L¡ )¥.ºO¹:HRçç¥V12¹½$… ´GHº eT}¥ów$… Ž“tÁó@Ríýñ<æ¼{£Üy³ª"÷ÖU›€¤.¡™ž4”¤äFMô˜’êh’BPÀ“NôžN:eIÒ¾^<)…{RFÒ¾–òþ(_‘‚›’B¤Ujûi¥_ )A Œ¶­§H A]æ÷&;€liÏ:V›ùº@R‚Ô?-ÿ+b†)H A0Ú®èUÑAºßxR‚ vyR‚ ˆ{éH AÔbO:77’B5EÒóçσ¤A¡ÊåráÑ=AdVI!‚ PÑ >„¤l'‚ È xR‚ ¤Hº¨oîü9ò¤ÃÏ¢$$$$¤ÐtØ•çIs¹ê!‚¢*çŠdþ?Ãû¬4áZËIEND®B`‚pygtk2tutorial/figures/setselection.png0100644000117200001670000001053310050344475017543 0ustar finlayfcf‰PNG  IHDR}Fn_ "IDATxÚíœýSGšÇYgýcób#0„xâE¼H¼Â`@XXYïÚÅïÙ±³9¿`°ó.^d@€ ½wµÁVíkRwáíÖgos?\]m*vÙç¤òCæžžÃ0£—c¨ÄêúÖT«ÕÝÓó™gž~ºÃã‘ÉÃÃ:rN¿àñvòxÞ<ž€Ç ]©` ¢)¦šØ%Xþ¤Øu ¿”ñ&‡´…¼$RŸ¸Ÿ—X[Z$¦&¿jjü}CýŸnÕƒênߪÿ´¡qâVh¼Ê´L µŽ×ƒ´÷šÚÆ[;?µt|ÚÚ9jëZ!m×D»~B«_qì0|êø¼Û8yÛ8Ù=8džì6ÒNöL¬‡Ëμ´ieZ-..kM\Ú.Â)Љ¦éééeîÓKijjjš[ššš«®Öݪÿã/·{këÇ[¶ßܲŽoÝU·Ã«~»×Í]Þõ»¼ëvúÔíÜW÷Ž)ÿº=õÞõ¾AHÞ‚zŸP¬ºýa áHQÑAâ¦qMAq ‚ø¦`I‹0±M”ÜžÒžÚ.בêŒÌ¸™Ù™Ù.Vtâs;’5ì )~Ž.grj´4Ô™iÛÇÙ™ÉéÏ!ïâÒPåÉéU&Žèjkk™Ü¯]»Æåù ¸_¹ÚUwëþÛ;êxox[û·ì2¾MjëžÁ­{ŒÛ¼ŒÛ½Û} [}ûvû›vñM^Ì» =$¯`ƒ·Ðä-4ú†÷Eî0‚ø1&~¬)n/1H4 ’,ÁÉ# ašE(¦ 3, Èœ1R£1Ê1P¬ÒœPн'ôW˜{͵« Z2Õ\«%?R[¹íÛšš™™Ld©>³;Q zsÙÄŽ½s|âA‘ÜÁ€“¸¶y bâ[}·ú â;ý »ý»ù†Ýƒ˜¸—€"Žp“ÄA†ý±&Rw`œQ`I–ZÉÖдQ$™%,Ý‚¡G)îîpÅh”r )ßS`+0'vùŠÊIîÓÎùóNð᎚póB¸ †È™Ør&÷å"×öޏ_{oßæuˆ#ëÞÛ»ÃW·ÃO»ÝO»Ó_»‡ßá Ûs w÷X÷Þ`eà~"?²‹©ÛÙ¸Aþ0pCp¢^”܃.ëɌ´a¡Üš>²ÒÀGbóMq¦˜BKTE¢º›¨NQé÷E î`¿˜;·€Ùaîtd¤2Ñ›Ð3T'îÅ!÷ÕØû4æS%xpäO¼;|;÷ø×<ûxúéÛ?ÁUïàÛ€¸Ÿ ˆE_òœàÇv‚3èéphJDjýÓèÉKtŒÍhŽH7De#Ü lÝQù#qƤ‚Öo‰$•YR:&)µ&ª‡SÔz¿H®ÜDèÜg§ÿsfj–ÝDG·Šáî©ñ¼¢½/s‡ \Êv?£W@@ç‡Vù‡žæ‡ ~ðÐ »|DýþÝü¨N~T;b»aÚ —\xö‚Žo:Ô/H<\Ö ¬%J².K²ªã³¯?zID+Œ±yV±Ò$Î7H q…q¡1±XŸ^zë1A¤”ՖIJT>]Ó¶/JM÷3l›uÉYõÔ¬ÏÓɵ³¹ctŒž¡¦L×ܹØ;ŽÏlÜktíã>ȉî jöœ;Íþn_h­¿¨Ù_¤óõKë~ú#iÅ/ˆ ¸:aBí÷/‰ï^¢a©=¡²árâý`æ’¬‹IŠºx…Vœ× Î$Fi…cröÉ"z¼H¤ªt2UÛAõ'BZfjLrMäŸÄ÷ñÂ1wŽö¾ê±Ö4Nì^ýñ•í݃‡ã3̽E7áÔˆç̽ݾÐð0ÈDÔDi8xð ØŽo$Âã«"’N‡'~dcdWâÓN}·@DËëEòÞP™M˜é£YFÀýx3OTê$Ê>ðàbpß}@<§ôRŽêŠâÈ 0óLuCŽæâþn_Ú1d +®”TV‡Äf¿\+÷«µÕlîNì †Ÿ¡ê0 ¯ƒ½/ù÷Y2žAÜ}Cqˆâ#ìó ÓùG´FÕz0ðñqW¸å»DLRELò)qÚ…g`Ñé%éçž.ƒ‡e ‘Aá]$…ÂAq~_|þíoHúÒÂðà)ª¾g‘¯>Ÿ«¾¢Pׂ]+ÞýX¡©ÜéY•()ý‡ŽüúŠ0Î.÷YR\íû¶³vnïŒÆðlv¸Cð´*ÿNö…¹wÀÚÒ/´¢_à(J3Ђ¸a’Á±ˆïJÛÁ¥|¿@ñ§¤€{BÖG`ø=KQ D„w±K'žP —udªn‚i'«`ÂîßÄ‚xL*ÿ½ºCï!{Ϭ4fVö<%¿Åu^wŠ)ƒ;Dëι¯»½c?ƒ¸ó#÷G â(Ì<$®6(®-8¡5,á"p&÷ SºÿïG`}9R®ÈìŠÎl‰Ëü8%÷ê“"VÑ“w‡á1càU-rU›TÕ/-Õgªoaž¢1ëÍõÌc·3*úr*uy•-…•èÛ¬¦¬“ýQ¼QòO­!RÍÊyurÍܱ©ÒÃLJÙûý̪㙚Žvý,ëÑ"3Æ Ö¡y2ábhbsxJ[TÚµÇ/ ‘Ì‚r` ËzQfÏßÁÞíI¹Ÿ€—äë‘c9„>‰'©L‘ïNSw§©»²4 ß nH-7AFQÑt°RŸyÜð??q»à7Í_ÄÁ*“âô dJO7«Þo ‘–±¹“£ö´{!”^›½S¸kŸW¹Û;е°½ë'Ä5íùñæ@IO˜´ù }ƒ:¸Pfec2´àUЄ¹@ˆ• ‰²¢ï¯p)‰ª‘xŠÁ¥jsšZˆ‘‚LV¹NVa¬ìþš,ù;žìϮȫºý¿‘wfTø¾þÒÿ|KÆ3@îgœ®é(žqGB˜H#q*×8ruö>ýàRM{‡á3A|Ëþ8ÓäaAŠ14¹+J®•×ÅÊ?‰ÎÔ‚ûËŒÊçôKóµ€Ç! ,ëa…)UõAž ¶‚¤šáTMŸ\£Ë>Öªx¯5ã=X·üø0(ûÄ€âD·òD«òd§âÔPöéå“òÌ€âÌò¬¥à¬±ølæ\kxjájãH[ÍÙ)'ëU—ë&'+ÕõŠßˆ—hŸ`úÁ•šö®¥t ’­A°Ú”Y„2shÚ„á½ñ¨\+¹i5Œ–õ…XgÆ’O,5Ã"3¡lXRfIÐŒ‚¥”u§W˜Ò›äÇÍi¿6ËOZA™UÃàRrO æ6+ÎŒäüvpç³ä~`Q^Í?o)úpèèÅà´#?ØáNÛ_„€€ÌÃ3÷Ù~†¾IåÙY[ª&Õ–QŸ.|K  Éí•â÷IŠ{éóH™nißjï[á]¼‘²´oÓ¦5ª`ÖôàR@‰GÆkÆw¼fDZ>–R”V9–zÜšvÜ*?qG~r ˆgTeTYžÍ93FÊšwn4÷$å…;Š VåGw /ÿ[ñ¥»e—‡ƒÓË)î0HxÌ!ä@‡å½I´×ˆw Qáõ[LBÚ;†°r/“™Ç¢¸ãsÙ­C/‡Åk{w¹-Gù™nód¸\¸ÃÒ-á™*"¤Bö|ÅåL.…’ë(,ì ÷¶Lîø†×ºJð¼ J׫këŠÊþqŸ ÏGPâ#(ö.ö -ö"Af¿¨Ô?BÅ,åG–D ñ#‹@Ñ% €P1?ºŽA’’@¤RÈ'”„Ä—„%«…Ò#¤T QÊQj©&‘L&•Šä¥1ÙGÅÙ¥ ÿÇÌ—¾‚Ê“—³\~‰ò?ÔõâúÈe±ê;÷ET[HÔ`ßÞ9ýn»œ (þ%÷·—üMy¯=yÑôŽM»yž»yïØäI çÑÓ¤p!eË út?F·Sê~0î%d€8—ñØý¾¢žü- 5ºkÚ4îtFx¬t{gØ&ƒýÊq}T2>îÄ!0¦*ú¤Ø±iâ<'¾ÍŒûÊ›;ãžQù åŽM‰mïtî XxîuÂ}m.Ý1cÙÅî“1çãç†Ý?óA\šŸpE¿g”mw»~†2"¦ýr³wÊ;S}ÒCº§÷Ã~ªp¡£˜ Û»sîìg…Ý–Z9nκ‰ÊÐDöSÏ»Ý¹Ú w.ììz»ó »-¬ø™ÍáN±fÄïô+Á±&å—éGççñ;uWìÄ3¬µ£Oª_1f·-ãª7m^Å+ÆþÉëZ‘ã´DŠîÓ\ž—í‹ØñÇ•„£õêkçÄ[›µk[hüüD÷3¯»¶¥ÍÍÝÍ}“E÷3¯q†Í}Ó7c7Qàô7t^%܉–6ÂÞyîd/mÜßq¬í¦ÆÉ uã*¯ïïRÝÉÍÝÍÝÜÜÝÜÝÜÝÜÝÜÝÜÝi¸{ð<‰ÅÕüŸü*^„îéèÏ}ßÀúË/ª©±Ãû &\¿bjöM«Ï¥‰}?ã’ûÞþ¦Õ_ w—ï_-÷7­þ*¸ã÷Âqg‹;¿†<ý]4¬÷¯ï;XÜyGyïÿÙ1–9„OÀ˜IEND®B`‚pygtk2tutorial/figures/simpleaction.png0100644000117200001670000000372310117166003017525 0ustar finlayfcf‰PNG  IHDRR8±±ä³šIDATxÚíOhuÇ÷ÖÜ XqQ[ÙÐ"I¤§ ÐnõÐÅ‚]-Ò›V¡‰{hB­Û‚v [AYÚM!{)I/6ÁZ]ONAq/…Í¡˜‚É1ö×o'óv~ó~ûÛíÌìf2‡|ÙÌ¿÷{ï3ï÷{ó?‘4_:—Í –RÇeM$Ï%±î¥4“fêb+Ùý‹Ò•·¶¶®nm§séÏ¥‡²×Ç“åêÍï¬Åru~^W±|{Åö©ÝÍ;› ?Ú¯³øt$¡”EMÈyLW®MÔ^¨M,-ܺ[›˜KßºÛØX^ýéíåU3cî73õÉß‹õI¨µøç«Ö"´±ñÏáÆÆÊHóèÊtmúßwצ7ïü÷Ê£ðŽÖßx8Zûtl0›{ko6‡ß: ðju"L·ÉE¸Õnû#u·Çr6Fn_ãšÂ¦Ëw [`®4såÏjî|ȇ²G”Rv®»;m®lÎG}´²rÞQ»³nGXìLÝYga£@Pcæö,3×,­°ÈÑúÉËséVÌNNÛ˜¯"Üòäo¸eÕÖ»k˜Zga›™_žMqÌû»ïÓFxÁ>uÍÝ!£s ´µéõº}tÛZ É¾w7ç¹@wZp=V;تÌ/Ìm`sÕ ~îÊ*›çaÓƒ.té(Ð.í± 4ÀF—Øy¦ò‘–Zú¦¾þFX ¸KØ^{·ªXÐÇlìlîìûK Pd9êp:ýLþêçö¡~Ó¹¶Š1›NQæ!ÖÇ EÝ®ã£N„ýM$»·f`Ûûµ÷Þ-‡ài!ÃFWœÍ3—€S¨Šò­ÒD—Þ:WŒÖïåé¶:Ðú˜á [öQǺ¾Â®ŽuvwG̶ùÃ/óû¸ÜvÞ*Zµ tË€MU€¬4—Wïí_1 7öZ‹t. Úë­V•asGú˜9Øœ:ÖÕݵŒYǺl,Ú݉‘Cn„l16#k©b'@§:¥Vë\q0زbûj;Í'9Üju"¬Sá#©äÔ⬳°íãÅ00Ó@ ÔšªšªáòêTeöP}’N…›Q8“¿´giAž++…Ý+{e½ØÁ5B¾ê5Ó˜ý±>¹­‡ÌŒkʶa)õí{^seUÃÎGô@jØAG˜…M»š C ÃÆHÜNÅI½%¥°ÃñQ¾žÝ+ë,l,´yîæœ¿ B)ì^ùØ+ë°ËÕÙãåjøJaŒ ¤ý ö0½ô±WÖ¡Bԗ碡ބåýº)¸[‘()J'h;†mŸlùû¬·rsÕÓé\·¯ÞN§võ­‡ã¯ÐJóûÓvÖ† ;ÖpÔ¡l¬Õ¿E ûµm~þvœU½WŠ<$Øò^køyœÙqfÇ™E3;Îl?a»+ÞXãÌõˆ3ÎìˆÙåêì!£0”=pk(KŸ^62?8'ÜÝ–á5w\‹G„âÌI§*Ekª‚–…/Ó¥”}'¶ÐRªôL)…¹3ó+S•N·íÀwy—§Ç™ˆâ©R˜‹%±–ŽÇh©x Sp%mfvûù÷®*Ðvû° ll:Ö~SŸaÇ/mïõ¶ú:·_JORFUƒŽ¤VºÒWP«‘s×¼ŸF±å(=ÌiÑ“#ÉaÞ~¹ü“7Q·…í·Šw#¡AêNDCí¶Ç7BhïOos ºA1lã)c~òryoÄHÃ~ÐJ¿ÌU §ú‘?Óòî³@ñ§žv¢"ƒåïþ`úÿ+­Ë倣IEND®B`‚pygtk2tutorial/figures/packbox2.png0100644000117200001670000006031610227354655016566 0ustar finlayfcf‰PNG  IHDRié9N6 pHYs  ÒÝ~ü`€IDATxÚí½yXW×µ>ÞçvJo›4OÒ¦Ij’›˜ÁŒ¦ÎN8¡‚€"ó *ˆ 3ˆ¢¢2#ƒ È< " "ŠÌó ˆ³Æ Ím:$ÍдIÓ6mšÛßYŸ÷ûyýî»ååõõŒŒŒŒŒcáíáù1 `Dò±cÊÝËÆ‚3€?¨Q[h.ÊÈÈË«¬¼·¯Ž&âà°uk]aauuÎÎaa§O»¸lÛV_ïâ²}{}½«kxx}½›¡»ûŽ nn„ø›‘‘‘‘q4¢Ü“ÃÃÃÛÃócÀˆ€Ñ#…|ì`Úq÷\B$ßÑB8"#“’JJî,j¡Ë—;:¦¤øûÇŵ¶ÚÚ†„œ:eg =ujÉ›èè;ÓÒº»ííCCOŸ¦æEÍŽpÞ<3³˜˜Üܾ>jˆhŽzœ?ßÌ,44::'GI»`Áš5Û¶EEeeõöŠÚE‹,,vìØ»73SIkhhi±{wFFO¨]²ÄÚzïÞ]»èîµË–ÙÚFGïØ‘–ÖÕ%j—/··‹Û¶mÿþÎNQkdäà°o_XXJŠ’vÅ '§ääÐФ¤ŽQ»j•‹ËþýÁÁûöµ·‹Zw÷ôô€€øø¶6Q»zõúõR)iMM7nÌÎöõmmµff¹¹[¶ÄÄ(i׬ٴ© ÀÛ;:º¥EÔ®]»ysQÑæÍ‘‘ÍÍ¢ÖÂÂǧ´tÓ¦½{•´––[¶”•yxìÞÝÔ$j­¬|}+*6lˆˆhlµÖÖþþ••ë×ïÜÙÐ jmluwß¹Sé·vvÁÁ55®®ä:E-µáÚZ¸QQ ×éä´mÛ­årTÓ:8„†ž<éì¬|gêS'NWz+[Û  ãÇÕþ#›€€êj5kÀVj–´´ôõ=|X­Ö­£:Ú´iÏåúõö.)Q«ýµk½¼ŠŠÔZ޹¹§g~¾Z«C›ôõUÖššnØ•åçGI¹§<¨ÖSŒÝÜ Rîe+W:;§¤¨õÐ+Õz7y†øx5ϰ|¹]llxxjª’WYºÔÖ6*JÍ#-^leµgš734\·n×.5O¸páÚµÛ·“Uö±ææaajxÞVÍ?ʨyï={ìé·‡ç¿ùEF±kkGÁiǽéÆÏsÁ1þ퀔–VV66ª½Öo~óÁÿøð½÷€üã?þñÛß?üðÿøÝïÿû>úòKàþüøã/¿|ÿ}Â>øä=ž?åʻ諾"šˆ……¿ÿ‰Àuë/¶µÅ ÚÚjaáçGZµk}}Oœ˜=ÛØxëÖ]»hàG‰gÎ\±" €´ÝÝJÚ•+ƒƒ)v¢ô[ÜPÔΙ³zuxø¶mÔE-uÂ;ÑùEí¼ykÖìÞ Ç!j©óGEiPÒ®[íïOîLÔ.\he‡y›¨]´ÈÚzß>r”--¢–윒B¤¡¹YÔ.YboŸšêéIóTQ»l™£cz:h¨%|ð h¨52rqÉÊRÓ®Xáêš›‹«¨]¹ÒÝ=?áVQ»jÕúõEENN˜ SklL™D¨«µ&&žžee ¢võêM›¶±!Ç'jÍÌ6o®¬´¶&ç(jÍͽ½««--jkE- ÞÇŽQ WÒŽkÖlÙRS£ö[ssŸ£GÕžKï\U¥öΦ¦^^Gލý¿«W{z–—S\GÉVdçÒR5;oØP\¬VGTƒ……jõ»b…›[^žZÛ02ruÍÉAˆ^©M:;gfªµ:jÏjíyéR‡´4µ¾@¤aÿ~µ~DÓ§ÄDµ>¸h‘•UB‚Zÿ]°ÀÒ26V­ïî7æÏ_»vï^5Ÿc``n¡æ¯æÎ55 § ’’¯›=ÛÄ$,LÍOΚµjUhèŽÊZòÏAADeDíŒFFjZzç]»BBè?Ò4.`Ô ZHJR£÷j¤oÏǸ%ïTKeÜ©×úãÿô§þS í07÷õ­©ÚÚRŽnn63Û²åøq33ŸãÇMM gÎ46Þ¶˜{GÇêÕÞÞÇŽ­^½yó±c&&„S¦,[æïO¡£%rœ:uùòÀ@" JÚiÓV¬Þº•â¢vÆŒU«Â‡µ3gš˜„‡#Ü'jgÏ65ݵ ³Q;g޹ùž=ätZZ”µ‘‘ihjµsç®]™™¨50X·..Žæ|¢vþ|+«}ûÈÉ64ˆÚ ll’“)ä^_/j.´µMM¥Y,œ¿©]´ÈÎîÀZDPÒ:8<ˆX‚¨]¼ØÑ1+ 3oQ»d‰³sNfí¢véR—ü|Šœ<)j—/ws+*¢ÙRm­¨52rw/)¡á™È‡¨Ý°áÐ!ÚkjDíÊ•7–—¯]«¬]µÊÓ³¢‚Z²’ÖØxÓ¦ª*D)0«ûæ5GŠ¿’k©?®ô\º3úŽÚ[­YC=NÔ®X1ØkÀÑ+ÙÙݽ¸óNQ»l™›[a!¨ŒZ ‚ö©Õ>µ %-Z-?)µjuÔê”´ÔbÓÒÔZ,µöýû9Së)6PTF©—YZîÛG LJ}=qµÞ(£’vÍšÈHøI%Ÿcf¶{·ŸE‘Eí¬Y¦¦;wbR§äÍŒ·oYQö„[·YQÒ‹"š«ì µS¦,]ê粯®÷ðÔÂgμéѪ1:˜›SÏ"b·ol¥vÜ‘n¼=8Úqg_K;í€S&‘”DƒhS5¬šP SSjv³g¯^½cGh(5;cc/¯ãÇ á¸ûÕ¯–.õ÷ß¾âäpávõHt$ AÔNjd Ö/j©#mÝŠN(j§O_µjûv,mˆZ¢#;wRçomµÔùwï&ÇÑÒ"jÉqDF‚R(iÍÍ££±".jÉaÅÅa5]Ô’³Û·s>Q;ož•Ur2œ¬¨?ßÚzÿ~ä%ˆZrÁii˜ÅŠÚ… íì22ôY&ßÔ.ZdoŸ™‰U[Qkhè蘓ckKskQKR~¾>„þM- f……˜ñ+i]]‹‹iUÒÒ zè Ï4 µë×——“ãSÒÒà]QAm¸¦FÔ®\éáQUE÷øñÿèä“Oþüç¿ÿ~uä]sô(Z¸üWþóçŸùå¯ý»ßýå/¢V~grÜÇ«½ú—¨52ì?ÜD)JJÔ,IµPT„P¹Z Qª_¢¹¹jµO”"+K­å¥8xP­Õ¥8p$X¹=½Vníƒ÷ô2¢#J=ÔÂ">^­‡Òd#:±%¿1˜g ¯²gÏ–-Ê^…<Ò®]j‰(Ex8b'Jžpåʰ05O¨÷¢äŸ•=p` šž2eÉ?¿ðð””®.”À«£…OºbEHîŒV£ÃÂ…ÖÖ ÞÞd Œ#ZhÇÝé®»»ŸMð€þþJ¸~=á}.þ_†A·ºZŽ“'/^ ÂÑÞ.j‰ŽsokµÔ܃ƒAtD-Ñ‘­[ÑEE-Ñ‘ðpÌ6D-Ñ‘;ÁÍEíÌ™«Wá §£¬Ý»«Ë¢–èHt4‚½¢–èH\­y×׋Z¢#ûö!È,jiÞ–œL1Œº:%­¥åþý´Šꔨ¥èÈöö40(iml220‹µDGˆp¥PÒÚÛçä †!ji¸ÊËC>¨¥¡® K ¢–†É¢"82QKCli)‚À¢–†ç²2rŽ¢–†öŠ ZàEЗ“v8;‹¿U¾ÒÉ åD)*+Ñ;Ôž‹¤Ú;Õ«ý¿è•J¶rq).¦ ¥ßÂδ*¯dgÔÖæÕê×ÊJ¹~Ñ6°X£Ö®@G†Ú&Ñž)eXYK}6p*õô#ä¨õADÕú¯‡Ñ‘Áú¾švϞ͛ɋªù¤Áªù+??¢#ʾ.,, @Ù×ÁO"þ¡æc‘‡¡ìŸýüˆR(ý–â[·‚¬·GÛÖÇŠÌÌ(¢ÓÜ,ŽZhÇ%ƒtƒ?W á­wê¹øO¿ÑÑ2²‰vüÿ¿–v¡vèWòn"%RÅÇ#§g á¸ÙÜÁ¯Éá±VU'O64ôõ ¥æ./×k‰ŽsµÔU‚‚i›¨¨¥èHh(B”¢vÊ#£mÛ¶l¡î-j©{ïØ× jÉ5DDÀ­(k÷ìÙ¸‘(…¨¥ØITÜ™¨9ÓÌ,&®PÔ’+LH@YÔÒÌ,1»6D-ÍêRRà¾E-¹ïÔTÚ–I9ü¢ÖÊêÀ ¢vÞ<›ƒ1äˆZŠdea¸µ4ÇÍÍ]»–æå¢–b'ùù&Q‚üãi#>>7·»ûoûûßÿõ¯÷Þ{ÿýÏ>#ËèífeåçW]}ùò›o~üñßÿþ|õÕÿéä·¿ýàƒÏ?'ÚÖ†¡m2#ãðáK—þ÷ÿûÏ>ûJ’¯¿þ÷¿¿þúÿþïý÷?úè‹/°ý[þ Ï=Gd‚j³±¿JK;tèÂñʰ°ÈÈÜÜ/¾Ð¿íçŸËß–Þ¡ª*#£¼üâÅ>øøã/¾øê+z>ž~ð ½-0•—ãiÆÙÕ…ûã)¦¬ŒZNC×_þë_ÿþwNNUÕ•+¸?QŠ¢"ôV¹…õöüôÓ¿ýíÀzó›o¨·'QŠÜÜžž‹ß×SŠwOÏÍÌή©iiyçßýŽl+ïãD)23ÕÚE)22h{³r«³´LKSk“Ôž÷ïWkÏD)’’Ôúõ£}ûÔúQЏ8µ>HQŠèhµþKQн{Õú>y†Ý»ÕüÆ´i«VíÜ©æs(†±}»š¿¢ÆÖ­ #J~3e?9yò’%AA4mµ¯½fhèç‡E%í¢E¾¾ ”ED-™|><ÿŒÆÆz’D‘Ê|ÒÇ?hÉŒÒçµÑŽ;I8†2ü+°ƒ?÷Û°Úÿß¡Ž;L;Ô*@$r_ˆœ¸µÐŽ[¸(Õñ"ÕÕú9œ‡b߈C ™.]J¸d‰»{eå+¯P“%~ÝÚŠ9¾úª¡¡¿?u%ík¯-Y@”BÔR7 õõ¥†¨%:²m›Å0Dí”)+VìØáåE1 Q;uêªU»vyzÒ,GY»{÷† ”Ú)j§M#—„ÄOQ;}úêÕÑÑ´2Mçˆ|SKt$.1 Q;k¹QZ/§sS¾©=ÛÂ"9™¢´ñï›Ú9sÈ}¥¨­µsç’맆²ÖÊ*=]Ÿ—þM­ÑÌžEí¼y¶¶ÙÙ´pü¸¨?ßÞ>/ó!y9†=àÿýïîî³g¯]ëììïç”74´µ Ð`F›933+*¬¬6nŒ··÷ôŒŒü›$ÿøÇÇòÉ_þ2g‘­üü£G¯^ÅÞyç7¿ù裀€;³³×¯÷õ‹‹ŽNI)-5006ö÷Ÿ?ßÎ./ON&^|ÑÀÀÕõ­·~ó›O?½páúõ÷ßî¹éÓml¦O75‰ùæÛ^½*¾í‚ééee. ¼­­¯ï­·Ö­ssÛ»·¡¡µõìY”§¤äå57/^ìæ¦·FssOÏÛoC›ž^YÙÑqîÜïO¤á/™4iöl´gr÷´¼òM;þ†õõ­­+W®__RBÛ2{zP^[ÛÐÐÓCí9* IÁýëßþöÏÆÆ¦§×Ö¾ðÂìÙnnT ªµ ´Ð¥69X«£öœ’¢ÖbgÏ^»6)‰èˆRkGOAtDÔΘA½ qDµ :¢Ô»÷ßР¬Ý½tDÉo¬\¹kצMDG”=Rx8舒¯[¾<,Œèˆ’¯›ª«A>0jPœ¸±Q íÐ2ô*a@@ròPG:-Ïœâ Çs‡{d2íPc^C}-rÃÿú—öh2ä?ûìôévv¤ÕÏÚÿ­“çž›1ÃÞž–üZ[±`Aý嫯Þ~û½÷þô'üëŸyfÊK˯¿¦Å=™1ÃÆfÉ"+ú…BÊÃ01Ñï:Ñ'Š~ú)íSùè#êCŸ}ö׿þýï3g.[æáA{@Š‹åWjy[¢ _òçž›6ÍÚzñb''}¼G~=Å0\]i— ¥”z{×ÔÐÇ[oáš_ÿú7¿ùÃ&Nœ:ÕÊjéRÚ¤*Zoˆ“Ä7Ä.ñ ñÛ'ZZnÜ€644"âàÁwߥ}:'O Lœ8mš­-Ž[Ÿx³åPJ©rË¡]*”RªÜêh— ¥”*ki{9¥”R,P©§PJ©ZO10°°HLTëe´ñ5.N­‡b‹§'ÅÕ”ü†©id¤šg ¯B)¥äEE-Q™ˆ5DTfçN"ʾnûv5Oˆ\·:èLÙÓÁʘ6÷¦ ýT+íÐy~éÛ"û÷c·ÍYé¨f??:²—Î×Û¾] ^m-íJУÁêÕÛ·ƒŽÈËtúÞŽ #¢'÷ál>QK§þíÙCÉP¢–Î¥#{‰ŽˆÚ… --cbhÕSIkhhmc••µtÒ(¹QK'&%YQÒÒI£úóE-Ìxà6ì‰Zœ4ŠsE-4Jù 4P)ié¼H}-jož5©ô[:‡´ _µ8‡ɉ¢V) Æ¢ÖÄÄÃçÖÕ¡ƒÜŸÿü—¿|þùêÕD:;ÿ÷Q~ð`~>…mçÌqu½téÆ?Dylìþý¥¥ii¥¥ýý´<ðï£ÜÙyóæ¨(úÍõëò6!!'§½}÷îƒÏœ¡ì+WˆêkD>èÒ³\\Ξ½té½÷P¾eËŽùùâÛšš:8„‡Ÿ8ÑÖöî»âÛææVW_»†òÆÆÖÖþ~ŠÌ54ôõ]¾üÁ(ŠJL,*zñŹs]]A;.]¢„ÙwÞyï½O?57'kPê×_ò õlú.OVQ==ÑÐpì˜ø†ffŽŽJoH‹5ÎΨ#zîÉ“~øÉ'z’ÔÑÑÛ{ù2ܪUt4Ù­mcýzõ¶±b`«¦52rsSo“ƒ·gœpªÖp©Z?Zº”NûUëƒt¶fr²ZÿÕŸpªÜ÷É3Ð §Ê~ƒUó9ä‘¢£ÕüÕüù{÷bê%jq沚Ÿ¤óšwíRó±8ÿ'œ*iW¯Þ¶>=A§”âì]Bx~úVT-Ö´·ƒìÊG•+]\ÐB;îæH7Þž;dÚqg_ëÓO?ÿ\íÐø 3WúäNÐ#wò$6Xâ(!ú Qtôöíiiô}œÒ³Ù-\Hßع3=½«K¤2Ä‘wï§cÑE-Q¼w/¨Œ¨¥o"DGãtQKŽƒ¾C¼^Ô.[foŸD™Û¢–>ƒ—”„=ñÊÚäd¢_øfÍ­Z##gçýû1QÒR'ôñ¡ä/Q‹oOÀÙ‰ZúnEfæ¦MYµôÍ‹œr²¢ÖÄdƼ<šó)iW¯öð(( °²–¾ÄáîNAfQkjJ_ñpu¥Œ%­——þK+¢–Ž'§/­ÐW^þA°hròdsó… /½4{¶½=·wì oôôô¼÷­“b± ©©«ëúõŠŠZ[‘ ÑÛÛßõ*îž••””“ÓØøöÛt¸]ýõ×H´üíoßÿÏvv((À;Ëi†d:æ¹™öËüóŸï¿ÿÇ?~ò‰™™§§>ùtð·Åü•b955%%mm >_ëäüøã¿þ5))+ëÄ ŠÖXYÑ,<.ûn°7ÇÚÚÃ#.îÕW.¤,ކ=}©¨8~œZi@À‘#òwEÐnO"è{÷ÊkáèÑæf}Ú©‹ µJ ¿ûù‰µOmC©öÑrYQnuùùjZj±¹¹j-–Z{v¶§'‘µžBdS½—4¨õÐ-[ô_¤Rêݘz)ié£ð“J>ÇÁ!1ñæWKnÕ Š¦¥ %ofk³u«²¯#O…ÏÑ©yQP e±c|®¤]»v×.ý—°núvý7kè¹ðÀ0:èG ú8l¥…vÜÍ‘n¼=WvPVù»ïŠˆãFwqgµç¢‰`ãÙÚµ›6åäàˆq|ÚaRümbââ’œŒïÐâL9Ò×££##)`+jW¬°³‹‰Ù³‡† Q»r¥£cllD„²vÕ*GÇ„|áEÔ;9%&¢›‰ÚÕ«]\RRÐEE­©©›[j*v®‹Z33ú,"+JÚõë32(ë[Y»qcf&æ1¢–¾Ì™“C{vÚÚD-ÕB~>eª+i-,¼¼ ±H$j×­£¯ÅâÛJZúš(i•~kiéãsè-!)ýÖÚzË–òrÌE­Ÿ_E…¯•´¶¶þþUU4Omjµò!Ã'öØÚÒ|BCiŸ¾ ‹ïåzy¿üò¼yë×c±ßñ!·˜@¹ÖÖ”^·e‹ƒCHHMÍòå))¯¼2þ† ¸×¼ò Ý_gÅñ\ŠU8;#«€¶ìVVâM^|‘¢ ´ŸâÄ ù{ÊßvÖ,út®Á7MpЇ%$¼ôE5&Nœ2ÅÊêå— Üܨ<>Ë4x¢ÈII”ÉaiIßþ--E9}l÷n<‹¾îà|ë›ØÙÝ\œR³§©éöíøR®¼z{/\øíoÿð‡>øôS!š~ääèkß×W½ö­¬||ÊÊÔZµ+õVG-¶¸˜–'”´”~[T¤ÖÚï)kÖxzææb‹©rÍÊRë¡úÞ­Ü÷Éo¨{Ò¦¥aiCÉ#¹ºî߯摌“’ð‘KeO¸oŸš'Ü‹®Xao¯îW¬ ¯ãª{oº3;øÑD¬­}|òóCBh¦ g}=v±S¶A}½……§gF>Ù|³¼¡Gc™šº¸$$DGÓg—Q"G33W×øx|Ú^Ôš›»»'&îÝKß9µkÖ¬_Ÿœ¼g}AQI»aCj*¾a+jéÀ—Eíºužžééø¨µ´Ü´)3“â.JZ/¯¬,¬zŠZkkoïÜ\8QkcCvÆ©¢ÖÖÖ×·¨븢ÖÎÎϯ¸ŽRÔÚÛ:„bQëàXV6˜¶¢Ù0¢ÖÑ1(èȸ~QëäRU…/ÚˆZgçÐÐêj|·BI»uë±c·n^;×ÅZ¶kj°‘[ü­›Ûöíµµ´ëJéÎîîáá§N!䮤ݹ³®IÁ¢í)‡¢¨¦¥ßž>#§”ž»c=—æôJÚíÛORûˆx8¡f —°°šd‰ö¤Z8zKâoóó»»ñ+Ä`ˆÒ¹»£§;:«×¾ƒCPzË¡vU^>X«So±ööþþ¥¥¤Ují¶¶~~ê=ÅÆÆ×· ÞL¹‡æç«õP+«Í›srð‘õ¾¯ìÖ­Û´éàAuŸ£ì‘Ö®õðHK#Ò ¤%_·¿š'$/š”Iß’UÒº¹íÛ§æÉ{ÇÇGGgg+iÍÌÜÜpg´½–þ^·ÎË+3_Ñ’SFÚH7Þž{ í8þúõ?9ˆ&‚ÐÜ4ÎèÚÙùúæåíÞM™\^K %UéÑÒÒÃ#55>>/ïìYÌuhc˜×­Û¸1%%.Ž´òr ••§gjjllnî™3JÚM›ˆ‰ÉÎVÒÚØlÞœ‘AIIkgçã“•…:+i}}sr¨+inþ¿¢ÖÑÑÏ/?ó %­¿a!Ž]RÒ–”`ÅTÔ:;:DT¦«KÔº¸„„”—£ŽD­«khèáÃXåµnn[·9BIgJZw÷°°ª*š·)iׯ߶íèQ:º^I»aÃöíÇ êèµ7îØQSC!èöv%íεµø’NQÑñã×®yzÒ2Å\\<‡ÚÑir5XßWÖÂo€¨ûœƒ•=ù«ÈHš¶)ûºƒÕ|üdllNÎà>VI ÿLôݪ…'‡¿•û|Œ¶¶>>99D¡ººäãFŒ)#m¤ox í¸råwþü瑃h"hj·R ÔéàšÖV8kÚSÞÖ‰ð&í#§¿ ñ7#ãP‘fŠt»·w^[ãîÛç P(>.Ž6–74° Ç'Ê=9<<¼=+Éĉõõ§O×ÖŠoøæ›o¼qù²ˆo½uãÆ•+cƒv¬Ycnnj€7,,,(ÈɯtvvrrpxíµW_}å•óçÏëëCMýP'ee‡5664œ< «ÂÂÜQ™vÜcÚ!þêÚµ+WΟ×ùññ11Ãm>oo//GG;»¡þ_CÅ‘L;Äÿ]¤ˆsܧ“ŒŒôôýûåZSÓÕ«WJbd„XÕÛ{ófOOŒŒŒL;Fíhkkmmh€¶¢¢¼¼´T®mjjh8uÊ@’9sÞX’‡ÂÒò ""ví @’ûïïééêjmÅo1L>'ɳÏ"¾òöÛo¾yõê/tRVVZZXx;´cÇŽðð°°§$yòI Ì?“äá‡åK"íÀ;``~䑟Kò#Iî»ï§’<ð@ttdäîÝò§TVVT:4y2ÅpÿÇ%yì1ùS†vàéÐöôtw·µÉµááÛ·oÝú˜$>Š’C‡JJ °ƒÿ”»+####ÓŽ;0Di5Ú PŠy’Ìknnffj*¨@ž”ä‰'lmml¬¬@2::ÚÚššPîåµi“‡>¦K2mš¡$ bŽ>A'øõ§¥¥¾orîÜÙ³ÝÝ·C;0H÷õõôttàÍüü|(„í8y²¶öèQ” ¿D¾ôƒ»¡d` ¿¿·t$!!..:å55ÇŽUV"3¦¡¡¾^¿H4´#=ýÀ”hQkrmRRbb|<Þ%ýýgÎtuáú––¦¦Ó§¹»22222í¸CÔà9j´± ‚ûuò¢$“&a(•?ófüª»»³³¥E®Å/ŸgƒÄ Û€ÈÔ©&&´ ÿUyyYYq±Ú :8…š!Éôéj6¹råÒ¥ù ­F;:;ÛÛ››1T»HâèXWwòäñãblÖçOPlïDÌ‘žá£™™iiÚi‡¼öÅx#####ÓŽ{¶È‚¶ªª²²¼D„È„¯/´¸RmÀ‹‰‰Œ”x¸~%n[•/ šr;Ñ,ˆLžL ÈrX,É¢EƒÓ öŒÌ;gþ $c>\^^R‚k¶m ÁòͪU+W®X!âÁƒéé©©ÃG;P;Ðöövw··‹ËLrò‡ˆ”Ú’#####ÓŽ{œÛ D–ƒ–hG@€¿ÿ–-ò0b'È„0’dÙ2ù¯°wFížÚi⸾µµ¹¹¾^dhI)½pa` ¯ÏÊÊÒÒÂYòÜ”ïéäâÅóçÏœ¹û)¥Høý‘NDŠƒ¥1yJ)b9¸Û™3½½Ü]™vŒˆ ´´0qîòhÖ?{6Ò3å¹(Á™(AnÇ„ ¿”dÓ&OϱÀD @ ¾¯“´´ÔÔädù»áŒ q_†vÚ!§DXJ‰±³³µµ¶F9}ÔYJJŠŠòó¯_¿zõÂä¦ Ò#§òŸdÂccŠn€6!®ÓÕÕÑÑÒ"'=8ƒäÛíÄ|­››««³3ÈÅ@±VN•@þ¸£22222íAÇ…A@0PUU9RV&¿Nƒ˜={Ö¬™31ç~H'®®..NNé#±ÔT“oæøú"›Dž@ŠôL$Ÿ~;ÚE<Ñz†AË.ˆÄˆ´ÿ€ñòËØ›ƒÿ %ò!\¾Óg‰$††¸Ë.O?MÏÌÊÊÌLO—¿¿½=Q4-õˆwÆÓñÛè%ò„P uë,,Ö¬ù‰N°'::*jÏù=aÕ¸¸ØØ¨(ŒŒŒL;øpôkˆ.,X0þ¼yHÿ¶³nÞìååáq÷ŸŽ%ìKê¡jŒŒŒŒŒL;Æ8bÃjppP¿ÿØøæKb`ÐÜÜØXWw÷ŸŽì>Ÿ”‘‘‘‘iÓŽqâ~FFFFFÆ1N;þÃr×e¤¾Î5µɖgËíÚ¹·ut÷­1 hsûƒyyYY·P6rº"××&[ž-?Vkç^Õѽ²ÓFv—\›\›lyîL;˜v(UƒÜ@ü÷ý›Ý%»W®M¶<×Ó¦ÜUØ]ràÚd˳å™v0í¸×ÑÆ;u\»Kv¯\›lyîL;˜vpWáÉm€k“-Ï–gÚÁ´c$E;pØ6Ÿe)G|/÷òå‹ûûÇ[´‡ÜsÛàÁ-?,/$~Á›kgøêHî™v K5à ñ½&·c“Ñî.ñ!@|ÄŽÛÆh¬Íïh|¸‘-?¾tp‰ŠŠŒŒˆÐþ\-ßÍæÚÑ^GW¯^¾<0`a±v­¹9¾«…O~ÆÄDGïÝ‹kð¹ÓÓ§Oª©aÚ1,Ѧ·C;ÆF´Ǩ?+Éĉõõ§O×Ö_ÛÀ—wzzº»ÛÚ´”³{Õ^›8WŽòoM‹Z¦ÃA;Ô¬ jìiÇ­#gg''ú~÷+¯œ?î\__uuUÕáÃ?Ô >ÿ‰O„Âþ‰ ¦íàhÇ·l>>ÞÞ^^ŽŽvvÃÝ6Ôî9ÒÚáØõkÿ’3ÓŽ;åKוּ™vÜ©:Bœß Ç÷ÉåZSÓÕ«WJbd„øCoïÍ›==™v K´#::2r÷îI“^xáùçÁûìímmåܼ©©¡áÔ)IæÌAx ²wwwssqÁzXDÄ®]ááHrÿý==]]­­ø-ªù9Iž}öÆë×/]ÒÒq7|÷?ã¾cGxxXØS’<ù$šÔÏ$yøayÐL¿ˆ@óx|—Wâ?Å÷oÕ†@ÌQ¦Hòúëø®ìXŠv¼ýö›o^½ú ”••–~»¶¡…LÌ”dút”à>NNŽŽööjåÚ[üY©©))‰‰¸þ»:14\´hÁ‚¡ÎïÇíÀ5ø| l[XXP“£ VVVT:4y2Í!Ñû—ä±ÇÄ>È´c¨¾K¤è³yäç’üH’ûîû©$<€Þ*Êx¨-u;àÍŨ*|ûc’<ú(J*))(À lδãw• ~)IAA~~vv~~nnVÖéNDáIIžxÂÖÖÆÆÊ î¾££­­© å^^›6yx`(š.É´i†’,\Ž9A'Úç²x+¾6lX¿ÞÍ ÃÒ¹sýý==¸.²¯¯§§£#00 ÀÏïÁ©Êy.šÞª··»»½ÿWCC}½~YAt¬AAþþ3$™>}ðéht—mm--õõxçsçΞíîjÛj Cû•Ú[üpâYY™™ééååeeÅÅ(?z´ºº¢‚i‡Ú5˜ àŒÀ²–šèïïíÅ€—kjjŽ«¬íûÓí¾K¤'OÖÖ=ŠäcÉ—Jq7”ŒŸÚÑRGXÆÅ›‹“¤¤ÄÄøxØ%ýýgÎtuáú––¦¦Ó§™vÜáh‡¼Q1¿Gê x®ìîîìli‘_‰®"牘¡‚"™:ÕÄ„XCu—h (Q@yNNvvF†ø«+W.]7/”ggge¥§£¤µµ¹¹¾^ËÓ1 PûÕhvÈf±+jiÃG;†Úêpe||\œ>šˆr¸x¦j×ÈI¤öšBƒ~]œ¢ehQ@Dѳä”RL]Ô~«æ»DÚÑÙÙÞÞÜŒÒEGǺº“'gäã§v´ÔQffFFZšvÚ!ÏŽ#ÁL;†%·ÃÈhùò¥’,Y²x1Ü–Z…ÅÆÆÄDFÊ+ „¿ê0ñ­ä@îFTœ<™‚ˆXŸ[,É¢Eò¦€ìqµ÷W{:-*<ÿ<ýS¦hIîRx¿´´á£Cmuƒß™iÇʶ‘—oÛ‚‚U«V®\±BăÓÓSS9Ú!¢ߥ–ÛQ\\T”—g`0w®~1)‡———”àšñS;Zꨪª²²¼oŽI¬¸à%ŸÆ ¶Šë+*ÊËKK™v ûN,”ØÛÓV¢Áçþþ[¶È+ MùEI&Mš¢‘$Ë–ÝíÀsQ¶Ž/Æ0ÄŽŠèJ¥¬å餥¥¤àÿ¢¹µ¯ïØ‹vPP¶³S­fµ´ ù•%%EEùù(ioomml¾h‡Øê˜v í¼N‘³õ=\¼xþü™3œRª…vh÷]ZRJ/\èë³²²´´°@.‚<£n<ÔŽ–:Â)D?Ò‰H¶ÌÍÍÌLMå)¥ˆ*á?=s¦··³“iÇ0F;°^ø9røpi)æÁX5Çžf”`•kÿ8 ¡B”€w£ƒ}_'ii©©ÉÉò§ã”±£â­òòrr23iX¿ÞÝÝÕ•îûøãxº|XB ƒ“­­µ5ʱ܃‡ßÒì`öltu¬}bÞ fP¼QQaanîØs—/KòÒKbv·–¶òëy0ÇŽQÅ,IfÌД”ää„yXX,×Þê†J;ÔZÓy¹–:EÏzB’ Œiþ "‹ìêêèhi‘«cÛòÚi‡vߥ¶È:xýúÕ«.ÀCbj$§ã§v´×‘››««³3&àbÈtAZ.òå¤ “gÞÉ2,Ñd8£2ÈÌ/¼˜¸o_\œüJÄ fÏž5kæLpƇtâêêââä„RüL%11ùæJ¼¯/òäå©‹xº|Þ,®’¢AàÝä‹5¼ãY`ôHAEsAèR>ÆN¸N\¡;wÄþþ~~>>øÑ]ÇÒ¹ÈÞ@²í·k°ÈÙĉÏ<óôÓò¦Ü’~~¾¾ÞÞüÊ÷%©•kiuC¥j­ŽiÇ·«Ó¶¶ÖÖ††%’¢O¡Ÿ~šz$Ò{ǃåµÓí¾K¤ètîÄË/ÃÚè(‘œã§v´×¨ØºukÖüD'Ø µgüJøCqï$ÓŽ1{”òh÷˜vðZ#¯’rKà:edû³ýÇ}˜v0reä:eû3²ý™v0reä:eû³ýÙþL;˜v0rå:å:eû³ý™v0í`ä.ÊÈuÊögû³ý™vpÇà&È-딑íÏögÚ16hǵkW®œ??øG~Çž8qüxUÕåË/ö÷Ï.úÆ×®]¼È-„Ý.ÛŸqüØ_î÷˜v cÅŒ–ÍßýÃg†Ï&#¹‹Ö××Õ8accmmiÉ-d4Öé©SµµÇŽi?ìhÓ&OÏÙþlÿ±M;®^½|y`ÀÂbíZsóÿÖÉ#:‰‰‰ŽÞ»רIbcsúô©S55L;˜v0íö–péÒ… gÏ>+Éĉõõ§O×ÖŸ5ÒÓHIéééînkÓRÎnW;¾ýö›o^½ŠO™Ëï¶o_BBl¬¨åaí?¶i‡³³““ƒÃk¯½úê+¯œ?î\__uuUÕáÃ?ÔIYÙ¡CEE 'OÂÂ2í`ÚÁ´c[‚··——££ƒƒÝp[C힣·5Ž|·‹wKNNJŠçhÛüØqŽût’‘‘ž¾¿\kjºzµ±ñJIŒŒPèí½y³§'ÓŽa¤ÑÑ‘‘»wOšô Ï?öçà`ook+_Ñojjh8uÊ@’9s¤zX’‡rwwssqÁªXDÄ®]ááHrÿý==]]­­ø-*û9Iž}öÆë×/]ÒòV¸ÛÿHòÔS¸g\\llT”üÊ;ÂÃÞ’äÉ'Ѱ~&ÉÃËCgúåšÁÏ“dî\\‰ÿtÁ‚ùóçÍSü0™"É믇‡oß¾uëØë¢˜ŸýB'ee¥¥……ß®…h!3%™>%¸““££½½Z¹ö¶'VjjJJb"®ÿ®N -Z°`øf–ccØÃ5¡¡!!°paaAANŽvšXYYQqèÐäÉ4«DO|\’Çû#ÛŸíwì›àÝÄH*¼úc’<ú(J*))(À |#ÓŽa¡&üR’‚‚üüììüüÜܬ¬ÿÒ Ü7ˆÂ“’<ñ„­­•}GG[[Sʽ¼6mòðÀ 4]’iÓ %Y¸Ls‚N´ÏbñV mذ~½›¤sçúû{zp%ºe__OOGšH``@€ŸßƒþT9ÛEÃÂ[õövw··ãÿjh¨¯×/(ˆ9((0Ð߆$Ó§ß©´Ê‘ÖEÛÚZZêëñ>çÎ=ÛÝ=Ô2Ô†ö+µ·=ù@C³²23ÓÓËËËÊŠ‹Q~ôhuuE{ƒ_ƒéBÐ5k©¯þþÞ^êu<kjjŽ«¬ùûÛŸí?ÜöÇÒ-ÞMœx$%%&ÆÇÃ>(éï?s¦« ×·´45>Í´cXh‡¼™1¿GØ®ìîîìli‘_‰a^Î17E 2uª‰ …±†úVh(Q@yNNvvF†ø«+W.]72”ggge¥§£¤µµ¹¹¾^ËÓG}Ñò«ÑÛE峨-µ´á£Cm{¸2>>.NYD9H*{ƒ_#§’Úë Y ú•rŠ™¡]KCü’íÏö¿›öÏÌÌÈHKÓN;ä¹8bô—iÇ0®²-_¾T’%K/FWQ«¶ØØ˜˜ÈHyµ!êÂ_aKêí¼•¼)È».‚ÿ“'SX«t‹%Y´H^ÁQQ‘‘jï¯ötZNxþyú¦L¹³ÛGGZ•!Å%0--døhÇPÛÞàwfÚ¡eØÓžs#/ß¶-,,$Ë—«V­\¹b…ˆ¦§§¦²ýÙþwÓþUU••ååx7L_ÅezùÔñT\_QQ^^ZÊ´ã.Ñ,”ØÛÓ†¢Ágœþþ[¶È« ûEI&MÂ*£‘$Ë–ÝÎ[á¹(¯«;yòøq1†_É+Ñ” WYËÓHKKIÁÿE³j_ß±ÚEÏžíëëìT«_--D~eIIQQ~>JÚÛ[[‡/Ú!¶=¦Ã7ì ^³ÈßúžN.^<þÌNidûûãä¡éD$^ææff¦¦ò”ÒÎÎööæfü/gÎôövv2ívÚ“~ “#G.-Å ëåØÙŒ¬¯cջϱ̒ÇËËKJ@¾¯“´´ÔÔädùÓq>„ØñVyy99™™ˆ4¬_ïîîêJ÷}üq<]> !†aÉÎÎÖÖÚåXîA³ÃoçÎ3gölЬ†åå©Ùï_TTX˜›;V»èË’¼ô’˜é­¥… üÇ:A6̱c”E1K’3Ä; -4%%99!Až´%–ko{C¥jm‡=ÑzZj½ì I&L06¦Ù5è,걫«££¥E>=`û³ýï¦ýÝÜ\]1 -CÖ ‘‘ûîC¡|¦Í¼“eiržQ%dì^HLÜ·/.N~%â³gÏš5s&˜ãC:quuqqrB` É}¦’˜˜|s Þ×¹Ùò¤E<]>c–—CÐ,ðnòÅ„Üñ,p|¤ ¢Ñ`ÙE>ÆNtW\A{ïüþþ~~>>øÑÇ^EöRn¿] •@Ñ&N|æ™§Ÿ–‡7åöôóóõõöF@X¾;I­\KÛ*íPk{<ì‰ÖÓ^³mm­­ K$14DÿBm>ý4õN$ù²ýÙþwßþ eëÖYX¬Yó<òÈÏ%‰ŽŽŠÚ³G~%| ¸k’iÇ?¾wlŸ&22»(¢JØNŒ´Ü±Ýưqnóf//ý.>šíÏöÏöÇ Y™ù|L;˜vŒÁ.Š {ÁÁAAþþc»Í—ÄÀ ¹¹±±®ŽÝ.ÛŸíÏölj)wö|R¦£±÷d4’Í.r´à=:Œë”íÏögû3í`dÚÁÈuÊögû³ý™v0íà.Ê]”ë”ë”íÏögÚÁ´ƒ‘»(#×)ÛŸ­ÊögÚñÍŠÁ¿Á8zñNuQ¶$×)#ÛŸí?ìsÏhÇwXÆpKà:å:eû³ýÇýG%í`ddddddoÈ´ƒ‘‘‘‘‘‘‘i#######Ó¦ŒŒŒŒŒŒŒL;™v¨ìfdddddd-xû§’ÜcÚñ–Q%¼ÈÂÈÈÈÈÈÈÈ‹,ŒŒŒŒŒŒŒŒL;™v02222222í`ÚÁÈÈÈÈÈÈÈ´ƒ‘‘‘‘‘‘‘i########ÓŽ;o¼qíÚÅ‹ÃwÿË—/^ìï?qâøñª*¶#####ÓŽ!#œ”?ø5iiû÷'%ÉKäò]ü$O=µmÛÖ­!!wÓˆõõuu'NØØX[[Zª½¡(QQ‘‘ÚŸRZZ\\P€ßŽ´ftõêåËkך›ÿ·NÑILLtôÞ½¸ÆN›Ó§Oª©áŽÇÈÈÈÈ´c”ÑŽ}ûbcoܸ~ýÒ¥³gûú:;ýýýü|| ­®®ª:|x¸ÍwéÒ… gÏ>+Éĉõõ§O×ÖŠoøæ›o¼qù²ˆo½uãÆ•+cƒv8;;998¼öÚ«¯¾òÊùóçÎõõÁþ?ÔIYÙ¡CEE 'OÂV°w?FFFF¦£†vˆ¿ºvíÊ•óçõC~||LÌp›ÏÇÇÛÛËËÑÑÁÁÎn¨ÿ×PqdÒÄ9îÓIFFzúþýr­©éêÕÆÆ+%12B låí½y³§'w?FFFF¦£˜v´µµ¶64@[QQ^^Z*×6554œ:e Éœ9XxX’‡rwwssqAæADÄ®]ááHrÿý==]]­­ø-Ôç$yöYÄWÞ~ûÍ7¯^ý…NÊÊJK o‡vìØö”$O>‰!üg’<ü°|‘B¤x á<òsI~$É}÷ýT’ˆŽŽŒÜ½[þ”ÊÊŠŠC‡&O¦¨îÿ¸$=&ÊP÷Ä[õôtw·µÉµááÛ·oÝú˜$>Š’C‡JJ °ƒ÷çNÈÈÈÈÈ´ã®Ò-¢F;°`J1O’¹sÍÍÍÌLMåCˆÂ“’<ñ„­­•HFGG[[Sʽ¼6mòðÀÂÇtI¦M3”dáBÌæ'连ⴴÔ×ãMÎ;{¶»ûvhGaaAANN__OOGÞ<00 ÀÏïÁ‰B¨ÑŽ“'kkE òKäK?¸Júû{{AGâ⢣Q^SsìXe%2cêëõ‹DÚ1=ýÀ”¼êB®MJJLŒÇýQÒßæLW®oiij:}š;!####ÓŽ»J;ÏP£ˆU€ܯ“%™4 C©ü)˜aãWÝÝ--r-xùŒ$y D@¦N51¡¥ù¯ÊËËÊŠ‹Õ†ÛÁ)Ô I¦OW³É•+—. ȇs5ÚÑÙÙÞÞÜŒAÝEGǺº“'£°°>Ó‚b3x b6ˆô µ3332ÒÒ´ÓyŠQ"FFFFF¦£`‘mUUeey9ˆ‘ __hq¥ÚÐ)q7üJܶ*_\@4åv¢X™<™@±X’E‹§Àâ⢢¼<ƒ¹sçÌÁ´ÍÇËËKJpͶmaa!!X¾YµjåÊ+D{ãÆõë—.iy+Ü ¸Ç=ÅÁïØö”$O>‰f÷3I~XXÓ/+ÐÌ_vÅ•øOñ]\µA3›)’¼þ:¾7;z»ñÛo¿ùæÕ«¿ÐIYYiiaá·k ZÈÄLI¦OG îãääèho¯V®½ÉŸ•šš’’˜ˆë¿«CÃE‹,ꌬÒ\ƒ Â’pÙÚé`eeEÅ¡C“'Ó=ëqI{Lì_ã™vhñB"í@Äà÷È#?—äG’ÜwßO%yàôDùSÆg]h¡° ´b ~û1I}%‡•”` µÀ´ãt° ~) VÑòóss³²þK'pë OJòͶ66VV::ÚÚššPîåµi“‡§é’L›f(ÉÂ…à¡t¢}v‹·á@plÆõëÝÜ0P;×ßßÓƒ+Ñûúzz::Ѐüü|:¯œ £Ùá­z{»»ÛÛñ54Ô×ëDçèï?C’éÓ«ŽünÜÖÖÒR_7>.Ný)|õw|Ò9eÔ^/ÈlЯ‹Sl 툘â‘ã-¥“µßªy!‘vtv¶·77c8t‘Äѱ®îäÉãÇÅù÷x® -´#33##-M;ígG‰q_¦÷,·ÃÈhùò¥’,Y²x1\›Z¥ÆÆÆÄDFÊ+Ý„¿ê¶1ñ­ä EîjŠœ<™BXÃ[,É¢Eò悜sµ÷W{:-3<ÿ<ýS¦hIùÝXŠ—º´´„á£Cmcƒß™iÇ·Ë­‘—oÛ‚%ƒU«V®\±BăÓÓSS9Ú¡Å ©åv`_†Áܹú…B$<>\^^R‚kÆs]héÝUU••ååÐb‚*.É'-ˆ¤âúŠŠòòÒR¦#‚v`¡ÄÞž¶ > ð÷ß²E^©è/J2iV"$Y¶ìvhž‹rp|Ì Ä†Ø½A 2™µ<ýÀ´´”ü_4Ûöõíݘ·jõ¨¥%ȯ,))*ÊÏGI{{kkcãðE;Ä6Æ´ãöiÇà5ˆ|¬ïéäâÅóçÏœá”Rµ{!-)¥. ôõYYYZZX ó@ž7>ëBKïÆ™C?Ò‰H¿ÌÍÍÌLMå)¥ˆ3ángÎôövv2í¸Ç´«Œ?ÐÉ‘#‡—–bfŒutì{F ÖÝ‘ €Ó`D Ø:ºå÷u’––ššœ,:λ7Þ*//''3‘†õëÝÝ]]é¾?ާË*Ê0\ÙÙÙÚZ[£Ë=h”ø-Í)fφƒÀŠ©¸ \nP¼QQaanîhïÆØû.æ{ki (ÿ±NõrìeQÌ’dÆ ñH MIINNH‡ŽÅríml¨´C­gÚ¡¥ÑkždÂccšQƒ¶¢¾ºº::ZZäíX²³vÚ¡Ý ©-²€ü]¿~õê… ðu˜äÈiÇx® í“ 77WWggLtAÎû‚D]äÊi&Ƽ“åžu0äE£Â¨*^x!1qß¾¸8ù•ˆÌž=kÖÌ™à•éÄÕÕÅÅÉ a+$ý™Jbbò͵y__äÒË“ñtùLZ\[E£Á»ÉkŠÇ³0@ *šžòù1v²À½âz ~Øû0¸³ö÷÷óóñÁÿ‹N>z»1²7ZûíZ¬*6qâ3Ï<ý´<È)·›ŸŸ¯¯·7‚Ãò]HjåZÚØPi‡ZÏ´C{ ¶µµ¶64,‘ÄÐýµöôÓÔÛÌ;öì¬vh÷B"í@k§S&^~¶E›G‰|˜Ïu{Â2x[L„P"O9[·ÎÂbÍšŸèûƒ¢££¢öì‘ßÞOÜÉ´c\·<O-Ý3*lFâÛØ>…Ûç6oöòÒï‚ტÙÎÜæÇg]` Ç(Œü‰L;˜vŒ©µRlÒ  ò÷Û.x¾$ÍÍuuì‚ÙÎãvp]¨!ΰü|R¦ã´ƒaïÉÈ9<›?­4zQËÞ%®;¶3·y® ¦ÜÁøsb\ã\wlg¶3×Ó¦ŒÜ¹î¸îØÎ\L;˜vpãnÌ5ÎuÇvæ>ÂuÁ´ã^V*ÌÇxwp$tc®®;¶3Û™ëb´ÛgTÒŽï°Ü#áçºãºc;s]Œº`Ú1d.Ér÷e$Ì!X¸ÙÚlm¶öèµçv0òŠ)× × [›­=.¬Í‹,ܸcs½s ²µÙÚlm¦L;¹cs r ²µÙÚL;˜vððÛk„k­ÍÖfk3íà æŽÍõÎ5È5ÈÖfk³­˜v0rÇæädk³µ™v0íî ¾víÊ•óçÿðxÃ'ޝªº|ùâÅþþñбßxãÚµ‹¹=°kfk³µÇžµåþiLj¨àÑø¡ù»s”ÍPm2;v}}]݉66ÖÖ––ÜF~ ž:U[{ì˜öÃŽ6mòôܸ‘­ÍÖ]Þ©  ??;ÛÝÝÍÍÅåeI^z©¸¸¨(/O¼òêÕË—,,Ö®57ÿo<¢“˜˜èè½{q$66§OŸ:USôƒiÓŽ{Vï—.]¸pöì³’LœX_útmíðµ‡ôôRRzzº»ÛÚ´”³kVÓ¾ýö›o^½Š›Ëï¼o_BBl¬¨å­=º¼Óš5ææ¦¦!!ÁÁxç‚‚œñJgg''‡×^{õÕW^9þܹ¾¾êꪪǨ“²²C‡ŠŠNž„¯ƒßcÚÁ´ƒiÇ=¨woo//GG;»ánj÷imoô¢ñÎÉÉIIññ[bk=k‹´qŽût’‘‘ž¾¿\kjºzµ±ñJIŒŒP_çí½y³§'ÓŽA;¢£##wïž4é…ž<ÑÁÁÞÞÖV¾ÆßÔÔÐpê”$sæ œõ°$=„PÖÏ""ví @’ûïïééêjmÅoÑ,ž“äÙgoܸ~ýÒ%-o…»ý$O=…{ÆÅÅÆFEɯܱ#<<,ì)Iž|Mðg’<ü°<Ȧ_P 9ýiÇ=¦&üR¬¨åççæfeý—NàÐAž”ä‰'lmml¬¬àú;:ÚÚššPîåµi“‡†¥é’L›f(ÉÂ…à¤t¢}^‹·á@ lÆõëÝÜ0D;×ßßÓƒ+Ñûúzz::Иüü|ð§’Èy1š Þª··»»½ÿWCC}½~‰AtAAþþ3$™>}ðDËÑÒ±ÛÚZZêëñžçÎ=ÛÝ=Ôö0Ô†ö+µ·4ù@:³²23ÓÓËËËÊŠ‹Q~ôhuuE„òk@ýˆFÀYKí ô÷÷öRzà„„¸¸èh\SSsìXe%¨žØØÚlíá£X¢…Vœ`$%%&ÆÇÃV(éï?s¦« ×·´45>Í´ãÓyãb~TðD\ÙÝÝÙÙÒ"¿üœWb¶ Š@dêT x µ©¡é Då99ÙÙ⯮\¹ti`@ÞQž••žŽ’ÖÖææúz-OGôE˯FKÇ–ÌbwÕÒ†v µ¥áÊøø¸8} Ôpðõàñ<ʉ£öÚAƒ~½œ"dhE@DΛdk³µïíÈÌÌÈHKÓN;äy9b”—iLjÈí02Z¾|©$K–,^Œ¦VÁ±±11‘‘ò FÔ„¿Â–ÔÛÉ7y‡ÇrÀäÉŒÄzÞbI-’7š¨¨ÈȈµ÷W{:-0<ÿ<ýS¦hÙP:Z:¶<8).xiiÃG;†ÚÒ¿3ÓŽÛɰ‘—oÛ‚¥ÉU«V®\±BăÓÓSSÙÚlí»C;ªª*+ËˡŤT\|—OQ7Åõå奥L;FíÀB‰½=m=|àï¿e‹¼‚Ñ%^”dÒ$¬MI²lÙíÐ<å`ýuu'O?.Æ0ð+y£At%ÈjÖòôÒÒRRðÑ<Û×wltì³gûú:;ÕjSK{_YRRT”Ÿ’ööÖÖÆÆá‹vˆ-iǯGäf}O'/ž?æ '9²µï-íÀ C?Ò‰HÂÌÍÍÌLMå)¥ííÍ͸ۙ3½½L;FíÀY?ÐÉ‘#‡—–bNŒtìF VÜ‘€=ëXæ@ÉáÃåå%% ß×IZZjjr²üé81BìÀx«¼¼œœÌLDÖ¯wwwu¥û>þ8ž.¢4Ã@eggkkmr,÷ â·sçΙ3{6h ÖPÅár›€âàý‹Š ssÇFÇÆnx1\K{@ùu‚Ü—cÇ(‹b–$3fˆw@ZhJJrrB‚<™K,×ÞÒ†J;ÔZ„Zê=è I&L06¦ù6È+j­««££¥ENýÙÚlíá¦@77WWggLnAÑCdä¾û(ßÖ€É0ïd´™Ò¨<ª–^HLÜ·/.N~%â³gÏš5s&8æC:quuqqrB é~¦’˜˜|sUÞ×Ýò4F<]>‡–—CЀðnòÅáñ,Ì ‚Šæ…eùÌ;YÐÉq=†=ìzÜeøûûùùøàÿE·íÙH°ýví6!›8ñ™gž~Zö”[ÏÏÏ××ÛAcù^$µr--m¨´C­¥ñ@¨½ÛÚZ[–Hbhˆ¾ƒº{úiêyHéek³µoßÚðäèûxgL{P"OE[·ÎÂbÍšŸèä‘G~.IttTÔž=ò{Â׉{!™vð¡¿£ø4‘ÑÕ±CÂæa$áŽí³X°¡nóf//ý.>@š­ÍÖÖÆ ŽN-YzL;˜vŒÙÕSlê  ò÷Û´c¾$ÍÍuuìšÙÚlíñcmœž¢å|R¦ãº;aïÉÈ96›?¶4ÚQË&®A¶6[›­Í´ƒ‡þ×;× [›­ÍÖfÚÁ´ƒ‘;6× × [›­Í´ƒi?ܱ¹F¸ÙÚlm¶6ÓŽ»]Á0ãÝđб¹¸ÙÚlm¶öèµÕ¨¤ßa¹§ÂõÎ5È5ÈÖfkvk3í`ddddddãÈ´ƒ‘‘‘‘‘‘‘i#######Ó¦ŒŒŒŒŒŒŒL;™v¨ìfdddddd-xû'”ÜcÚñ–Q%¼ÈÂÈÈÈÈÈÈÈ‹,ŒŒŒŒŒŒŒŒL;™v02222222í`ÚÁÈÈÈÈÈÈÈ´ƒ‘‘Qûw2G»ÜÛY1222í`ddí½ï?>ÛÍÈÈÈ´ƒ‘‘‘i###ÓFFF¦L;™v022í`ÚÁÈÈÈ´ƒ‘‘‘iÓFF¦L;™v0í`dddÚÁÈÈÈ´ƒ‘‘‘i##㨤ùù¹¹YYÓ§O›6uêtrŸNfJ2}zqqQQ^Þ·{‡ÒÒââ‚‚oG˜v022í`#22Ž)Ú‘’’œœð]„††„ö÷Ÿ9ÓÕ  ò÷‡6--559y¨ï00ÐßßÛ[XXP“#/OO?p %¥§§»»­i##Ó¦ŒŒcœv\½zùòÀÀƒ:qssuuvV»ÒEGÇŸIòðÃׯ_½záÂí¿¼ b!L;™v0í`dã´#//''3½þäÉÚÚ£GÕ®{¶¯¯³S¾6))11>^þÛë$((0ÐßÿرêꊊY’̘¡…vü·N°}÷í·ß|óêU¦ŒŒL;˜v02Ž‹ã²²23ÓÓ_}õ•W^~$Cî@>Ä_ùûûùùø|_''>óÌÓOWUUV–—k¡~~¾¾ÞÞ8”,..66*Ši##Ó¦ŒŒãôpô7ß|ãË—wîܱcÛ¶_èÄÂÞÞÎÎÆæÜ¹þþž>‘‘‘i##ãþ&Ëׯ_ºtà@ZZJʶm[·†„ð7Y™v022 í¸WÈ´ƒ‘‘i‘‘‘iÓFFF¦ŒŒŒL;™v0222í`ÚÁÈÈ´ƒi#ãØ§¼G/2í`ddÚÁÈÈ8 ð;cH¸6™v022222222í`dddddddÚÁÈÈÈÈÈÈÈ´ƒi#######ÓFFFFFFF¦ŒŒŒŒŒŒŒŒL;™v02222222í`ÚÁÈÈÈÈÈÈx·iG³N˜v0222222ÞYÚŽqKœc©NÞgaaaaaaa¹£Žñ›ßУ¾#}”é„ ÄÂÂÂÂÂÂrû^Žq í`òÁÂÂÂÂÂÂ2|„CvÈÉÇ"´ë„ÍÇÂÂÂÂÂÂ2¸€3€?ˆ„C•vˆ„…………………E‹ˆTCŽÿRv¹œ ={IEND®B`‚pygtk2tutorial/figures/scribblesimple.png0100644000117200001670000002103510050344475020040 0ustar finlayfcf‰PNG  IHDRÔúVþ !äIDATxÚíùS[çšç…ûæfsl0Æì !›„`ƒÃæ…͸Çvœ[ÎÍæä&Ž_o²a ±YŒÅ* 0H‚{»;ÁTÍ/ÝgzbpæÞNç·©ššê;±Ç.;Õs;‰mÎ<ïûŠÃAbÑr´?o}ëÔ££…Ã9}Ÿç}ßsŽ$Ú"""ø¥ÓíWÉf‰d»D’$‘H%’4¤+ר=›â–’¨œ‰™¨â©ÖðÙxÁCÇõÂx'U¼Úé ~}üÊͰۆxw??N"‰’H^”DüJâ^‹ ²…›@k¾ÐfçV[|ÊÍßþŸ=Ýìºô_.uÞ꼺 ºÔy“ƶ‡‚•7/w}©çÖån"ø˜>¼)Ôe¶¼r«ëê-XÒà&ˆÄ°dñRÐÕû,îî»Õݳ§ïæÕk_÷]»%ÔÕÕÔ§'êüº–}ÍÖØ©wèf}¶ø¿õÜõŽÞì…åJõ;¬0| ÿš !Ã7ÃÆÛzã?™n@×M·õóä!hrahê6ÓðÄ7#“·ù‡«é›óÂJÝY7ÿ×}-o>DŽÒSè"yÇ"÷tÑ•wmø«¶………eø–Úüüü‚SíÛùùï.\¼ÔõŸŸ}þä3¿¾ú›g¿`ÚôëNX>óÓgvzî¥Î¶^½Ùµ™Ïoé|!ò‹—¢º@›£;‰ àã˜.¢ -1¼>ß²³•Ðx9:þ2Û¨¶'uoO‚e'USTr×öÔnP4ÕöÔ.ªNP¬ìòŽt*yW\Fw‚¼–$Èú21»'!«;>›Äñ™—!NÈêJÊíIÌ]¦êIR~ A’²;EÕ“’ÿe²ê “´ OZx”^Ü'W÷§«¯äÅD,ÎÔêAòÒÁ•º–]v”Y~çT\WVêA¹U+”³gPU;œ[;Du]Y3TX{):uÏÏ7¿ð'r@ïÜÙîÚ1OÇõÂæê{ã;´±5íííöðutt8ã””Ñ;óóß_¸0 ~ö ¡m‚)âY#•-øÕ ¦_ožüõK&^Ïl6ÂòùÈÉç¶A@â­Æç#a¥é…¨•Š6Øc½7±u'/xhÚš0¹5Á´5Ѱ-Ábqd¼12ɸ-Ù@eE&ƒàa”t´MKÓöôɘtSLÆÄv¹i{ædLÖÔö,ÓŽLSlYÆdwdâ«(Ç—7§4í$šAœX0J.šN.žI.¶€RŠgRÕfX‚¤%ÖT%­Ä*¥J[’¬tNV6+-3KuV"ÊÌòrkfå,•0 Ê©™STÏfQ)ˆ,Y5DÙõ³TE%¿^¿]º÷'ŽûfáÏpŒ/v´ÚisŒáˆó1c@øš¶ö ë¼÷âÅ‹ ¬u^㯠4'•ò÷ýù Ã:ÁÞxΞÝlzî¥ mFž³ç¶™V(zò¹hÙóQ㛳†Í1FhK,YRÎ&m´ ™bmM2‚"“ÉC œ!:Í„1È@²Éí2@jØ 8ÛžeˆÍ™Ø‘;K(Œ±9&¢\€E”7¹3w‚-“ó§A©…Ó¬" ÈF[JÕÙÓšmA©…&[‚L¦3gTÌ.áµ YÆn ,yÈVÈÆ™…q¶¬zsÎ>«²áª†YuÃH¬|u>Ÿ“™‘zXpO¹'ΤQþ-@¡óذå*ð-¯ÚÈùhû×ómz€ò&CÙó0^À™½™Ñà9@m‡á…Øaa+ΰ-N§ß7„m‰ŸØ–0örâ 03àlÉÆÆ¢SõQ)×£’‰™E¦Œo“xΈŸdé“àgKxb3G‰2 ì!±.f` àÌD3pÌÆ¨¸±•>¥`(±À˜BÌÌæg 2Fž1v6[†ÌÊìM^µÌYVÕ²ŸQ°þÀ›]΀*ÆSN½•„3U㕳Lùs¶ yVÕdU7Äg5ás,¨øX˜m$u´AÍçLáÅ¿EøWœ‹‡Î÷ÝÙ6=t 8cföl¤ñ…(ŸÙåM@m‡Ï›4_ЉJ¸ûWŽqöð¯\Lr;„³¤É—“¯ïHk¿ÿœER3ƒÔùrš)Fª‡•qòöÒAji†írÌÒb³&xK?¶ârÆ~ø™KÌíƒ`G®ÍÏò&òLñÊ)[ÞÌ›LÌŸfy“¢fISghºî=æ H¦~foiÔÕd'ãi¼vÏ.ÙØ²«1Ȅʬ™Í¬µÀ,m…™Q?ËΨŸl´€5–‚–9@-¿Ù¢l±@Kê UuhVÓ:²3‹8ßíù?­…Ï Xêt>á{×iì-#~ñ¢GÎð¹p:›[bº^Œž IsdsÌà‹1½/Åön޽f¶eç8˜Ù¶øþH¢m‰Ã/'꣯E%ö¿œÔ•ÔÔ±=ù³èd}tòÕG?s Òww¤~Ò•¢Ný2QþÑÃ_8èÄÈvÊbåú˜ô±ØŒ~X™ªø8!ûj\¦~gæ@|Vo|f\æ`¼\͘£Ö'Òp°LUu¦ª>OP^MP $ªR ¯§IÕÄ-õ”âÉôâ!Ò(J+I/™”k‡suí÷ŸpòÒñ4í´¬d<½t4£l<¤›”•ÝàS§¼âFvÕXNÕpNÕXv•)«j”SiÈ®2(ªg@¹Õ ÛJ4ÅÞ9>o®ð6HK~Æh£K ãŒ- ¨TM悃–üVë²™AªCfõ¡á¸ìý|ÍçŒ'­ßú8ÂÇø±ûpX#,õÖ„Ïeç»8ØÝ32¶“Õg‘ñƒÑ‰m~â@àaÛõÛ’!€‡âüÄE'}¶#õ‹¸´sæâ¤Ã2^ú><´ÅH¿ül&óð£_¸@aFgbÆg)Y'¤œÁ+AIÙŸaqYýs2å‡ÉyŸ'åuÝÌ= JÍëHÌLTê¥ÊÏmkò?…‡:üÂ)Ôg³5¦lM<¥(ngA¦¶[ª5É´#sùºSžp÷žpYÚþœò>ey¼^¦K/3d—õ@ ºû˜SV g™»o0Kƒøþ"§­= Ë»‹œªfTTÓóÃS.§Æ˜W7QTßûÃ"—[kÌ®5óÀ‘ÔIýŒàuÀ ¢Ù“NÆ»Yæ´¨Ws¤­è°¤>j)¡R-;:¯ð)|P&.!1ÏFþø.{=ßó]/íºê|ß•Á[1É=¬§ùrR/p—öF\ê;Iº¼T4 ²·dÄJÏÜÿ.&õb’ü$q25ë¼ V>—yàûO¸´œ÷’§¿Ôì3RÅ{?ÒWÊòN§+ßV˜¥øTïË Ïg*8™QøNFþož´‚Ai¡žÍ-9•Sò{ÀHZ< öFלTéN?|Â^¹º¶G¹GO8•î#øð³Ì2ý£§Ü¿?å”çrw}oTíº¤®"ÎÆöà)§©:¥ÙsZ½çüý§\Aõ`Nõë{*kF.r?rœ¶¾M]ß ü©ë/iëÛï-ryõc ’}6m–Öd+Ñhê´ÐBÍLK~‹™Hˆ TÔÒ Ï‚ ›‹_È–d)yÍ&Í13,+^Ù™³ÿ¯Þ‡õ3Ó.¬»ˆYóo¸zíVTré$›¢Óúˆ™ÉÞW‹IùjµÒXŦwBꄼ'ïIÉüˆdج®„ìÎTÅ)` Ì,.»ˆ”«N&åu&æ]¯ÚÒU'©”¼Ë©ÊnyþGÀP‚jAvñÙE>¢œåjÞËטÒÕ×jJݹÝg™¥½Rídºv R•Ô€¼,]_vY?å§A¾QÈ’€TÑž¶¼ÊþÜ*ý=köœƒ•¹ÕFÀ Ð,¯~·´ö´¶öüƒE®¸¾'¯ÎÄlLYG¯¾­ ¾¯pŸ8«høtwÃEŠŒÀœ®ñÒ=Ž+n6@M––×le%16ÂÖ¬Àɦ©ˆŸa–6[r„ÆTrlVñEóséë³Z*v¿>šßð"ÁçøâuÒ._JÚaêØ­Y†ºÐî9À×§¿“v™ ¡^ñò³iÞŒËèŒMÞ)'Ηª8—uõ:㳿LËþ˜Ø^îH–wf)îøÒU§UýP–@'@@ ­-èËÒŸK#UÁ+OsR©=ùˆ:ú#,ÁµÃéZC¶®“eÏìò^yÙÀT°ëtAÅÇð ŠÝãµ'°¥¦xÁC–:ÕµŸæÖ@÷h-­!&—[3–_7òh‘û÷E°»OU\9¿‘ÕdE ã°¦¼á 5àlwsGysçÿYä4ÃÚ&ý}Ž+o¾¤n5Pc2ç Ttx–qÆC¦yÕÊð"´33K£"œ dá¥{sV÷¦¥ô sÕcñª}¾;r¶úíü:ðñè°xøìÌÏ‘]Q{»zõ·À̶ˌÐßc‹Ïú"Yqüì>ñ³k`i´spðÚ© Pƒrí>®$W#ÉT9˜¬ê€rÔ¿Π+@ñ:¹ÀÊPwƒr4瀰1YÉè}š1™“e–öËKsʺå_Bq&Ó¹œò/ò*Úî°LÀÀ§~åŒfÏ™ÿ ‚tÆ€*ð0p´±Ô©­ý½²~(¯žÀWRFWOžcSÖܧ~¦iT7Œh (l˜‚^'$MMËøCŽ«jnS7µïÔ:KZõšCÃ?p\åÁÎWÑÚ¥>4&àŒ–hGˆ«iŽ˜™¥ic]63ÞÒŽÏÈ~;§]AÛLù›Ö²78 ,w¿=Ç´ëkå»su'ŒÒ¢†Ÿœ€pYßù„ð oÕ´Ëèd¯a³Ãwæ¿åßËÞ"VÍ7Ð?r+.«‡ mÄféïþ̥䶧)OC? >w 4-ïlRÞådåÀ¿pɪ/¤gî3àòõÅŸÜ'ÃP™]‡ú#E-½¸Væh;ru片A’-톾ç= _†ÎôòÊ? C7˜Q®Ï©¸öH©US ”{zò_ùàƒŠ zš¨k;45÷hÚî’DÙ®­ï¸K*3CAý0Àö–_w5¿ \YÞøù]R«M€ŸReÍ—Kš‡ÔM†ÿÍqÀYqÓDQótA³¹äààü•¶”´àt­½E‡LÚÃä]µG>/Üut@{t‚O``T,¶°‡ºã<^+\Zp¶‹ÆTùîìî÷ˆ Øóî,©,ûß_¾õæ«DJ»ü_áye§&ˆç|‹Dlàëý:1¯‡ÍÄå%åöÜû…tRò;”à ʑíÂJè7é¡&“k¾ü€+6äê«wá 2ƒ.ç]ȉ¥÷iƤ³œúly%X˜«<9K¢“VÐ+Zö¾?ž®it>Å{C-ß.ü€Ïq¨ÅMçƒÌêÖó ø _'«®ð³ÉÊ~6›žV<˜R< ’ª‡Ò‹¯di¾ÈÐt¥IµS饣 iÉ4H®%q¬,Ÿ†ÂŸeLEy7I e7äº!Àky½j4«r:»j&{Ï(¸—¢zØ*¨¹ZX{YU3Å—[7 ‰2¿n<̩̫?ƒŒ ©gTÓE cꆡ¢Æ!è4OÃ’Õj»š;µ-W!{¶Nd+ Mýí ¬´u°¼µ§üð€æð”úðLÙcÙQ@Vöê$0Ws¬³úØåÊ×t¯MÊìµéŠc†WŽ]X+ŽOAö$‚ß.»# – æg™ŸªNg¯|`µé}‚,«>°àNÍÙô‘T}ÊÚð‘QZr`šÏñܱ™í4Y#ȹ¢Ö| †‡ÞøÏ²â6¿I¦Ò‹&¤ê °4ÀŽLkM«A?–iÚéÔÒi™nÀ’é̶ ìFzÙ Ä  ªr’ŒÍî™Èª4Ó):`[=­¨M‘%§­&¢P9u&È›ÄÏê¦õfEý´rïtAÓLÁKaƒ•ÄS$KN³á ·Lò[¦¡œ«íjíÂÔ­& z€úð¢Ã3PŸiÌèŽL¥J‘t x•¼6Mlì˜à#äѽ>¥ýí Ôd¯á!gÕñë»ÞK›e´•ÛJ4ÂYÕ ð³¹Ý'¬B?«zÏÊÛ‘ÍÕÌ ‹Š VMUûñk?žÛ{æïöýûús65™–.9ßÅŽv iý³Z€Åµà[q†Ë·óÂ׃ážá¿žŸD¹½ðGzPóQø†Lÿ=]} ÈKÕ̦•ÌÙMt|¶I':×™ZfN¥éÖ•êKUæìWÈ\',Õ³95V»7u³ÙµVᬀb¯EÙð~b€õ@YW€Ì4Íæ³Q´³ªÉ¬Ž¢ †Ó DPÊ÷iNA¯SóêœptƒBŠyøYùëSðÞWŽ_+'äY´oÍêÞšÞõæøÿ"ßßó¶i÷;3ÄØ€³÷x'#fÆ–àa6?;i[RÙPc®VuÊR}Ú œUŸž«;ûw²³_Á˜cäí=ÿû.|ÅÔrΜ^º ëÉòg—´µ_°;Ó:l=€ÒÑÑÁÖ¯u–Jû'm6F?ŸÁ³þY-L"8ÁŸ¦Ý¡©ÛPœ¥jçè„úœpBÅòr3å\&L^5+¯²¦WZèDçV;qÃb?ËYgɪ£êKËÓU“•Í 0A\ÐbuE+lµ¶šU­3ËCh|¯óè ttǦJèšú˜ÙnG =R¢½na%Zù3»Þ˜Øóöª·¬»Þ²°ÔYõîLå‰) (g@žÍƨHÒ¤äÕ|HýŒ$Mð3R·gµ§f÷Ÿ¼¾bœÕ[ö6@mï…¯ljû{>Øßþ¨å ¸Îªgt W c—ðä-6ø"""à±c¶Þp’˜À×~eäÆ?)Ê»2ʆ3ËôÙÃyUcP¥åTÒZ :¤O@Ê5UõÕô”5#T$ί¡¢"±ªV¯¬×î†MÝ0V|‚1[Ü4ZÒ4b'5ô@›‡ ü×´Ú1yxhTzx ¤ýO£eGÇÊÊŒ‘àÕñŠcc è PA0V~l¸âµ‘ÝÇTã»_­<>^IƒÝ¯T½1Æ«æ-£Mo×0òª4ª;1¾ïw¦½ïÛ–õ¿‡åÞM{?4ÖŸ„ÀÈÔpjâÀ)Cãïo4™‚ŒÉ–-g¦þ~ –­gÍàdÍçAÓ°l:wƒ<<{ã`›™jšŠÅæ¿í°ùlî7ŸNæí"ðÍ/|ëXä¹t ½×Vw¾öÚ²]·ÒÖqi_Ë[1)¯D¥`ŠNíJ!ŠNm`ATÊ^Ðö´ý h©½`e¬üÀÎtP#Õö0.ÔËøŒFïÌØŸÙSöŠW4ÆeïWXCû²$(à6%å5&(€ àã%ñª‰ªX™’ߘªjLQîOU7K‹š@i…,5%[RZÑ~x˜®n’© ü‚@ª5®©’äe¥²ÒfYicº¶b&™¶òëåº&Ë´û».é >äUÔ~óí¿\$牶9ž4êü‰ŸÆ$;¯ü|–Ž×zýð¹rÉ&z ѳɉäezÝÊËËŠˆ²_³ž"©„±ƒ"¶­ùÔòk¶l¬M[1•]¼IK˜6/+b¥×D¼(Ùô¢mý&G8;êW/Hþæù5ŸÝO=K—ŽzVñŒ$b“í0 .r;&W 9¬·]:´Ö{7­²~cøÖ¿ôC0Ø·,r¹Ê¢ýÐãE[À¯±[Ï?몞¬¶tIvÛ°êúUÿ®Ý–?vXãÞö¬¹®¼à±`³7¼ŠÇm?'„oÅ)UÂ)a§þ†àß[Ùž ¯˜òòÿý”é:+×ö¯ÃÿµöÞXº$lé,z}Ÿø³­ß¹qÖù<=䳃â`‡6qN7·ˆð!|âì{ØÍ-tx›sŸ³ÞWtÍOpqƒ‹j„á Eø‚¿¹Ó}ñëá\ "|!ßS„Ï£aˆ EÀN‡ð!|ØÂ¶¹=e‚ðaó¶0N»>žçÆæ"Þ¸­wá[ëäXl!ƒ]à‡žòØ|ÈYHb4Îç¥Âç­º-á èN6„á qÈ>lŸþ[ÇßìBD ¾µ~T-àC/ .çe¾ °¡ñcz]ç(ú‰>Øؼ±Ã…Ž îpXÃç¸;pPP¬î³-ôÝÜ®—à Cæœù—¾€¨HÐù¾U¾²_`~Ñù>¯ïI¿o3¾>Öðù¬S2P†Ò>Aø‚>6ü¶á°<Â'&‚îîà‚2´¿ŠAp餷ù %øDŸûwøB»î ç’# á[k?$W‡ŽèSà>„}á ŒCÎ>‡ðùízu´È¥m¶û!„/¡t¾䃯ĪCÊ!p\¾Ïôäd]o4F!²P:ÿšµ>ܽô\Å_`Áç!dás¶Â'&|Þ¸f'´÷?Â'|x&”#sáy26ÂXð…Û¾Eø¾ðÜ·ŸŸáþ¹°ºáó¾ >‹á bø<„/ ˆtDÜŸß AÜŸûäaÚEø¼Þ„=P[AøBaØ÷'Â'yx– ¶·!”‹´!|Ÿ›·Ò÷0#|Ÿ;'‡zb–˜v>›÷xB{c1ÂçrÂåQÛpÔqDø¼Uê­?RÈá1!|â"âÒµŒÂç&"|zuû2ìˆ |~+Ë>„O4>|PJ"|ŸËX89PŒw,@ø|a{nÿEWFø<ñáCçCò$~ù»þú-ÂÜð99-æGî>´=‘+0„áóÛQGø¾ÏLïC |?=©A>v56LÙŸ‡3=Ÿk]€ýJHà‡k¾ aqiÜùS„»è|ŸØÇ8Ð ü„ÏÕS˾àÚðd$Òó!I„ÏG‡30o ïߝЏ2„ÏÙÛ?úq ]½YŒ÷~ŸÏG¶bÎ'Ê4 Â] ±ú¿rêתè#|~KaÁŸ¸æ‡ðm _ôÓýn~è|^/bpãEï0¡ó!y~s>N¼yŽð…ÏÉ› |Þ;%B˜1¼¨áÛ¸ÏJ'lTÙ‡ðm\óŠU8ûkû¾P®ù‚÷qÌÂ"vÛ>\$„áóR͇ð¡ó­Þ6ìsøl×!|^/oUá3çCøÐùüÓçp¦bAø¼’;ü&=Þ†ÿ÷¾€(\ÂÓË>„ÏåO<ÏùsZ¾°ƒÏ™ CçCøüó‰5ÎŒð!|~«ùB>VI¸Ñ‹tûŸWÇYÐùÄ9TÁx÷cŒ3#|Á40áûÊ«·´wr¿9s.„ÏÓn…¬óûmÃÓÀ¾1?'¾Öɹ˜v>¿9_(_4îË+bœÿCA”y½´ÓœœÕ >ø$4ßÀ‡Î4ÎçŒOHÄkŸßáÞÚ&pOâæÞw ¸îÌ ð­zuH §]‰—›{~Œð…TÚu£gîÇt·Hó/|Át‹4‰ŸšˆÎt?´çø„wÊ÷|þõQFøý ŸÏƮçòóãWÝoðùøl(ï})ƒ?Q6ÞɫԂ>WG­} Âçüy£î ?ÀçÕíù´Oô<ÄÚø ‡ÏÛÓSâîWÓMµx¸O|\8ùÔùüµ¯§‹P†|ëœç›CåÇÁ­ †ÏqûÝ€Ïm×>™„èÚ¥ó >±~ÏMLøüâyÞ›S öäh'{>_Þ‡ß}ídWÃÇ*ЃÏÔ[i×î¤=¿ïk?Ó«÷à pç} }Qó×´fÞµÎùEø|º AÍ:Â:ü!|¾Þ·ß§=œüAk?y¾ùŠûÆ?BÏü>„á Wø\å/ЮpCø‚>.Èï*PØ…|œOnÐääœoðç›í zøÄýΩüÿ–p¡æ|ë8“(ÇRâÄí>mª×íÔÛ•+Ö|aTö` ƒÌÞÂñÚõõ‹¿<Ï%o1 ðùØœ< áóÑUs˜yÃ>÷@׺¼Íó—„aæõîɤ~¿nÈÛÎçÇ+Ðùœ}õ/v^:3o9Ÿ÷ÆØ<ÄÎ7ðEæÅšÏäùÅù>ŸÂ·ÖEã–Þ_s奼/üsè|þo’Câ…Õ‡ÌÂçEø¼wµŸ7F>„Ï?ä9oÒYˆÃç¯ ¹Ñù¾À½dù ø„wçðÍTRP_X:ðù}5ßO_º _€ÿzVÁ'âÞô°Úó×Dó wçó—¯ |á _€ìD„/¼àóY1°á‡#|a_ÀîDmqøy'¢ó…&|¾¼·®Û)áCç hóCÚ‚¾@¡ué·¨‘6t>ì-!|!6„Ïÿù×ó—!|6„áCø>l!Ÿo®<džð¡ó!|6„¸ðá8‡ ‡ áÆ áÆðaÆðaCø°aCø°!|ØÂ¹ ¢áÆðaôËÃwç΄Ö|Ø>lØ>l!@ž³ð}÷ÝwÿŠ ›xÍøpga± è%Ÿf„ùCøB®}ÿý÷Î<µÎË>„Ï…z™µ ¡„×0ÏÛðÅ·1y«>\5« W"|Ÿ˜äÙ­>k·ÒI§Dø>ñáCçCøÄ‡ë:ð­õ,‡ðyGDDØ­aý t>„Ï[ðñ„­å|l`áCø¼ÞÛµã áóÂÞ«, ;ïaoá§á\Â(ä­Å"Îç"|þ7E¤áÃæÝöÝ÷ÿÚ¾M¤2Fø°ù¾ o~~ž‡Þ¦ cŒÝˆõÃׇ—š³§ÑÛ~#B"á#cŒ=‰— b׆¯6l^j¤ÝlØÄn¼á­b‡ÍKØÙ¡5ç6hõ´‹ ›÷€h³Ah;Ú@cìÕ¸ý“‹!öÎ0öaüÿÚ™¤^©í±ûIEND®B`‚pygtk2tutorial/figures/filelisting.png0100644000117200001670000007730610067733543017374 0ustar finlayfcf‰PNG  IHDR;lõG3~IDATxÚí?h\Çú÷¹ð[È-¶0d!·Á…Dn!ƒ \܈’%)²`ÈI ‘Þ–pa ÷E $ìMa6¼()ŒäÂH¿ÂX.‚íâ6À¦0(6EÀ‚ü@. Vá"¯ç~ß¹;òì9zΞ=«•üù€ä=³3sæÌ™y¾óoGþø7íÇÿ÷mߊí´¿¹9‘dGb‰~ù‚Y}ð>l¬WÏ>ªÖ–Ûß\º»‹Å%»µÅb±X,;ÿÅr»Öøèv}6ûÕ>>øê…æ ¯¾qiufûâvqWkÝ®þý¼»zi'ûÕ©ÖAWfÒ¯ÎU®ìu¿zî\±Wÿ÷u¿úÎk]]˜ùßÿµú ûÕ¹ÊAW?y©ûÕ·Ïäýn÷«§ë–«Ÿ%_]ZMºúæ©™í|W?Ÿ\ë÷Õ×OÌl/·{½Zk,·¯¾ÑËÕW_H¾:^µ\ýòÝä«+£_¾»9ŸýªkùÊU®r•«E\U¿°´Ú½‡•/š$±$0œ„èxõƒðퟷÔ›ôÔÿŸ¸J’XE´`ñ³Xˆ«g%P­Q¤¸ê~õpÅUÒÕ¢ÅUÒÕƒÅUÚÕƒRoWÓÒቫ·Ï «¸ê]z9‘Ó›ôÊ/®Š^¸A\å*W¹ZÜU×»ž®[ûìýºgýØPbiöf0ò&ôퟷԻH,/®Ü䚦ÏS;“¿ý³X‰Õû¼V~qµµñÝ‹­ÅÍùÛ¿4'#ŸT™^~ÔÚ»Óý%tßí]>¹‰Ñ‡—ãøS\$½†O\å›×>qe“^‡%®Š^‡%®Ò®"®¸ÊU®rõxŠ+wNA÷^C~N’Oè%Öaúöé©OµÎ>šjÅvº,ûê ±.ËæO]÷¦›tïaê–{×4ÕÈþc-\V´61é„Y±<€ýÅñl&œÝ™ìMbÉÅI’ùÅUVéæGW½àq«3õ=¯¦(÷t¿¸Ê»hÐÅìÖ¹:䆷h0¿¸J¾ú|Š«þ˧üóZˆ+ÄW¹ÊU®r5éªk½»]UÏžäçÄ+ݷﯸ }ûôÔ{WMQLêIâÊžzW‰å6ŠiãWº¸ ‹À"®BfBÛÅz“X›óßþÞœÐL‘£ÃÝ‘µ>æf«îî~ÿòö­0?ú[¶èEƒ±ÄêXbµYGS\=o;²WìÈâ*W¹ÊÕçýjwq¥Þ*©ï}`/±Ò|û"ÄUèÛ÷¦,ÒÅUú´Í0¤ÞEbé,]ˆ@z&,âjºüú I,Ÿ‰‡—{—XZ´æœžÕra;cÿ¼V( Bù$ç£ýØåGJ7Œ!¬úa «nþpwwgò6^¥Wz~Bqõl*~îkïŽËCcíúW[¡|Z}ðßߺ]üa>•‡ð5Û/±$êöK/_2’@J×—Ì~Ù¶´*¹èjE·C*C)§vûÖ¯W|I*æÆÚµOý½pÜâŠã.W\å*W¹ÊÕAw‘îÛ!®Bß>²HVš°É›ºî½¿âJ©'J,Y˜ô²Aº¸Òq‡Y%–ÜY¹òra%’–ÉÅs/þs '!œ»YŸÙþèörÛU߯šEËí©Ö³RD’l}Ì -¥"WÕž/R\xŦýZútïŽKKñhf,Lw¹íœÈ…™+{õÙÆÚ7—ÖÇ”–^­ô÷K¯´…›ó÷ž´ý6ÁÛ¿ÜÝUÉ(oñ,–ÊPñ/Ì\کϺ YÃÌö…&Ç]pÜÇ]pÜW¹ÊU®ru°Ç]X|ûþŠ«Ð·OO=^˜gI=iM\ÖÔÃ{ï—¸Rê]%–s ýjÅ´¢·Ë*/®žMÞYwp‚sÊ÷K,U‘4ÛX»qÃåðç÷ÚCÉ”,±žŠ' ëcÿýíÖ†bɉ+M¹†181°0#§P ÎOòÎ(—®—RîÁO—Ï›«(¶ýùtáC Tk|x}i5\þ'«|N—“J “büy\2ñž+ݯ\ó8¼»÷­ _†7ØÚp’f®RŸ½öéæ¼>w“Ý«übÅgŸ¦_R( ôìUÝ]ïW;â*¾Îk þª“ñÝ®J˜%_íȘþ^•ô’PéçÕÓu]u³»IW5÷ÛýªdL÷«’^y®Jld½*é•vÕ˘nW;"'éªDN¶«ãU ³¢®úŽ?¾ê¶bs•«\å*W‹¹úú íÈêÖ>ËÏIò¯¼Ä²úöùeUìÛ§§î7eKÝ®,ú«kì÷ž ±^Þÿc[Ö£,zW±ÄREI·Û·þïÿÚ™t‹Ð6çå’&íDÒç±0в=9I͉ŸÎnß —À)~]MŽ!)?Ú€èö e™Srù‰ç”ö/ÌëÜQl“Dfö’é„ß/½ÜÜT^s\ýÆöõ¯6çµøpžDtRÄ °ÐJ@ö~ui5ùªfšÉ9Œ«NŠt»êäzÚÕ…`õzÕÍ™ òªÄdúUÍät¿:WI¾êäbÞ«›óÙ¯º·»÷«š×J»êVÞg½ª7:ßU×µ§]ÝÚèvÕK>®r•«\åjQW¯¾Ñíªó(4˜ÛÍgíH¬dß¾±öå».¶l'ëc×>u›\öíÓS·Y¤ò?õ"&R$–»UÝæÉ„n~¿Är³(Ivf[Ký¬Žfrü¯<ÅBBK­´Çi¿p‚Á_î´¾bÛœwËÿüN'·÷)i¶')?nÖËŒçGó-Ý町 ˜Pt¹åv>æÐê»aN☓K¦³Ï*¼¯ðs¹ÑÊyÞíLóKýâÉÎñ¡ËåÙ5 ñ¥]Õ|]ÚÕåvòU÷tܽÎU7ƒÔíªäbÚU7ûäCoW%½â«îœÉ|ßÍsU¨ÛÕ¥U/ÌŠ¸ª¡“¬WN¿ªQÆîW˜ôU/bÓ¯º™«¤«UÍ~ÕÉT®r•«\åjWýpmwŸÁK,÷·—Xi¾}V![­IäìÛ[RÏ:oÖßÔ‹¸÷.K—]ÂÛ·²Nö&®4…J,¹òIVGAHü„³.±p ÿü¡Ýçdk:Ð-iÛÚÐèr}ÖÅß™Ër ÿº/³äçYaã×ì&xœ$ˆSÑÑááJqeô›K[«ÜEçPnΧǜµdZ‹÷ßj?Öç͉_q5ÁÍÔÅá%*|Δu¹ÚÚpù¼»«ƒ:TŠYk…õ­øù¦_•Ü-æªöøwÕ5…½]•ê~Õ ¤ä«NäóÝL.I9 îÂÖbXžš…“ÄÒ®6/'âçëÒíýj}6ýªÆ{†éª“ây¯ºF¶ˆ«j¾³]ÕàBž«ZèØýªN­ì~Չ烮Jä ÓUw¬NoWMº*™šïª„Y÷«ZpØíª›§å*W¹ÊU®sµóû«I>Rüy(±’|{yàYÅ•_(x°oŸžzoÒÎY_yRó>ofW)Ë}M F\É%–œ¿$ëOÿÓa®:Æaœ Òù5*É¿¯À,¡ßè„ï_ÑYئ#%:ë\2ŒA}R~tÕËÇ©ÃüÕøó8•ý÷Õ9Z \€§O”Ïô˜å$T2ÎUõùtqú;;¸â*]Íäh {yº¼“ýìóÒ·Ât{Õ5XÃtµ#Y»_m¬¿«ê6²_u£ty¯nÎúª“éW]›õªvKwU?W¹ÊU®ruðW“{4?ÇK¬ÃôíŸÏÔ$–t0™è&±ä=kݾ»»’4ù™Žë[U¸¢®&ç§ØtãU7j>ø«­çêó{ÕuWƒ½ºú ˜«n€ƒ«\å*W¹ú<]M÷¯œíH¬ÃóíŸÏÔ%–ì`2áwït$Örûÿ|èvF=k%iÜ’3w ‚Nîêr0vØòÓ«uçØ·«›ó\å*WÝn+®r•«\åêót5´¡Ä:,ßþùL½«ÄR¤Z¹XlòÞêPïŽÄZuÒ%Éúêå4}zÈÁØaË‹Åb±X,ë%ÖaúöÏgê]$V}ö³±•ÑÁÛPb•¦K£Oÿa±X,‹Åb±Øž¬üêÃõíŸÏÔe÷I,i¯ý«;çüCO؞ϔ€ç¡}ˆõËÊèÿþ¯¥Õ"¬æ»B}¦»µñßßnÎg–XñU,‹ÅƒU[Þžcy¦”‹=~íC’Ä*BÎ!±°X,g”’á™RX,ö¹–XýM ‰…Åb±8£” Ï”Àb±H,$‹ÅbqF±YŸ=¬g”^ò±m¬]}£>{º~æþézü&ž®Oüët}}ìÚ§þMDba±ÏÝqa 꼑XX,;lîxsµÀºº2zeo¹½}ë§³­Eõû—ïî*†Íy×=ès…ÁÝ9*k¹}q{i5#gݲ߉Uô½/Ì|t{afdäOe÷¼.í,­zyöó{îMüîÅ»»º—Íù7|œH,,ö9•XÓåW_˜.—WÊ+¯´|eÿXN,±–Û®ƒ×ˆšÆoÊ+'Þ)¯Ôg?yie4þ®>?Yý‡ï neT£­å7꣱ŸXæ©‘Òè¬R©4+TšõÙÏÆö§…Åb±ÇÕßœïÌGÅ­t’g±k®U{Z¹ŒjŸi/0¦Ë¯Ÿ˜.»^òd)S­½yjº¬0±;rw÷Ûß·6¦ZgMµô4õ¤æ*|]W )Ñ¥‘õí[?¿çÛÕƒ$VG¶)¶n%-ð $–zX=‹ZãܹZCWõL5?Íðçôïú®æö˳μVì÷÷¹·P0É÷Ð>‘ì”HÈ¿°M¥·…š~EϳsA>õή­¬þUzœò¾¼ÇåbK’Xöçn¯K´Ø~I,…ÌoMb铹Êù/æ*/Ñ ã8Œ:xÍMUkî¨ ML'5áËJ¬g‹r¿Är«œ—ÛšïªÖ܉ØêU§šb±Øçóô9¹MräL‡Ë„Ò%Ö\Å9 Ž·ûÓ^bi1˜Ê\OVsí¶ì³3¯ÒmÖÅ9ß~——{šš«L—ý}îý•XvßCž††phB‚¡×Y,7·ã­rùw(Å+Ç)Ï*^K,ûs·×%Zl~‰5R‡&±4*©¾Ø sw·3.PIêÈóH,?ú⚀xô‹Åb‘X϶¢Î¥vmfzˬu ~YZwgˆxðKåìÒ;÷:Ü•}ëBÓÏbI¼ùºÑ™yЂ´°§îïsï—ÄÊê{„Ö-kNhnP ½I‚p~,\RÛ/‰•ß¿Šã ßôýätŽÏ‘IJ?w{]¢Àök«_²ÄJJÀ/&ì¼êWÓØ§¦ãã¦!Ä’ØÓžÆrÔPú—Ù¥›u$ ‹Åb¢;®6Y§™©íÝï0¹–Phz’s¦ÝrâuZòü-ð %–>ÑÎäpö)ÙÕŽ÷buêC¸+”šÝRýq©þ˜ÅßßçÞ/‰e÷=”7?pÐZ6K,½ áæˆƒNt婵êÇïPrå©¿åÏèÞír(¿Çée“C 3.·þ˜ ·$Õ‡tËþÜíu‰Ë^¬Ä}V:“§{P­é¥Õ ©écMmkÌ,¿Ä » ¤¤¦PÖoñì4aX,{¼mWÛ«v2ü5-Ú‘k.ù‹r¹YáoøÄ6ÜÍE QP‹ÐÂSÃYް§î×sÏzl}L¸ÈÍâ{¨4ôIX«õIíÖX#CÆ‘ŸÅXH,$ ±X€ÄBb ±ž¢xö[w“>~$Ö«9ñ݋͉t‹Ð$V‰åþÉÿ·ÄX˜+€âh¬}ù®ï>·oÝkûVxuïΣÖÞ™í¿ŸŸÙ.Mÿy¢4]iV>¨4볟OÖgíÅ_i-ž®Oüët½4]-MŸ®Ÿ¹ºîúÓöãýqîµ÷îÌUÎ1W)¯”ÿöôß¿íÂÌG·f²æß’Cå!ý·eô-…O¦nY[7ØÚPi«ä•ºJUŸßÝýö÷»»½Æû—­ çZ=¼l ïïþOe9dÉß:YýÇÉÒpú<›ó7nlΫ–ŽWÿzs¼zw÷Þ“,ehaªuöÑTKÏKOPáUòýz ²¾§ƒ|㺥âZ ¥R^9ñŽ/™©ÖäoS­í[?¿×kKeio'‘X…-쇸ÒßH, røäl%¹rD¦Ë¯¾0]–Ó£0rM6ç]‡úÇOžº•æ_.T𫾹´ú@ŸH2WÇ®W÷ÇùþEçë'¦Ë/?¼ç\p>v›,Øs¨Ïc[kœ;Wk(žP$èêÎäÎ×Oÿ6––ŸV¿^ñެ\@¹º_åALŽuo©(~»À%V}ö³±nn«$ŸÂ §Ï£œ«ô| d“©ö¼øä?×–Û—v–Û’ý} ìïé ߸$!·>vý«õ1¥¢8õ]µZÙs•-¤½f‰%-“ß2‹`rÍO–N]=Y ÝôÐuÐüC’{½0óáõ…¹)ú–BzgèÙäâËéï—›bÏaR ­ÅŸÎ¶åtz±× ™dYò:®m–I4Ö®¾ÑXSs)‡Þ;ß•žâ×ÂÒê…¦wÝÒˤÖxçµZ#Éq—£¬0±ÏcÉ[µöæ©j-iæSÏ´9ñýËò²òÑ›ÄʃýXbŵ½ˆ÷4ZYß8;ëc×>]“8Ïš«¬ù·´“Ã,±F €Y,€.hlØ/[ê8|±ëàçäin¤ƒëWhi“ܲ8¤þÖçrŒä8êñk©˜êha•ý^ì9ìöm7"®‘éxÜZqj´{eô“—VFå`%¹Î–ÅàîBK§äJœXò 3fz"q‰õ6‹ÎÞ„RG)†3±ÏcÉ›j”!ùÕ ûœÌpH¬Î,®Þ-Œ *†PœñžæO+ëgg®òÁÇs•OÖ\ÙCÚÛÉa–Xwwoÿ²9ß_Ë,@ªµ·ÏTkñ®ƒØuHrýUç†#âršå ë×£­Œ*ŒÜY¿°Í‰ïܸ٠͓ĮOöÆW%‡4’$?äà.­^Ü^ZUÞbhY´ÐRÙúy'7Æ/Ñ>‘táTb½I,íÆ‘ü“[Š%-Uœé>ORÞô¹J;t‚5?–´@q8%–$±„ºÄ¡j¦eTïéàß8Ûûîâ× X8ˆ`Ï•=¤½Db1‹Ï5á2¡t4’º¿ÝF|( G¬%34J-7QaÂ9 ¿ÈçÙ¥Já8º}×PÖvúúöc¹æöÝ_Ëí+{Ëm¹wý Yá>åD.ãþòqδŽ:s¯0ý•X^<;·^¹’ðÓ¼V’IJçMW%Ø4ߢ´².›<\‰£;Ò,JßË{: o\ˆÚ åygò·î_”kÏ•%¤}É\8ã‡Äb žk$lbëÝâÎØ°Öä} nÌAû.: “´[)ü$t‚Ã<ذÞr¨qtÍuØËÍÏ¿uv€ä9âü¨„ã'ž$xòH¬p®ÉˆÎ¾8Ŭy“`gf´¿«¿e8x‰ï8êï[þžÃ–ƒdyÒÞ-{®ì!íí$ëXÍbiC^¼!és‹ ;Xþô¿ŽÛ!×Y£Âáž /Ü¢5¹2úV¸HLÈÉ*Ðø±öee͹=‡Újo ¡ ¥2Ñz<dYr޵ÐKóBáØ¼Æûurc¸w%<$Cß’Ü•;‘~ߔջ%–>Qð{ð:‹¯bá”5oªoÚ‘%Ab?è|x$Vx¢ ž dIøÔ‹ÅFïiþ´ìo\Ò;¨gªa‚ô;í¹²‡´·“H¬Cûéa»µH,]Uscù 7‰eÿ I&þ›sVô‹@ñ. 94þwœ\xÉ9dYsnÏ¡¤ˆÂ¤Ç©³ì䀯î¦=d1®•öðtf‡öÿ.–Ë®&¹¤~×–·r.õ\Â…Ž¾Ü\Ì–ÅQ±ÄÒß:V~ÿñ Ýç¦ìyóuÏy>þw–žìö£l}yº'ž©¨O,óö´ PŸËJbÅ‹â’äJïiþ´ìo\L¸3Êò»sEÿ.k k¤`èòÒ‘ ÑoIQð¼q¬ ÀàKÿkEöC‰…Ä8bèœLHi ‰€Ä@b!±‰…Ä@b ±X€ÄBb ‰€ÄJDñì·î&}üH¬$Vsâ»›é¡H¬ Ëý52’ÿo‰±0W1# Tš¹PiÎl¿qfÛå¿ýØò-ÿÝÊ•æÒêÅí¥Õð[[7ØÚ8]?sÿt½4]-M+|y¥ü·òŠ>¿»ûíïww©âG‘ÆÚ—ï6ÖÔ¶oߺÿÖö­ðêÞG­½;3Û??³]šþóDiZýE}öóÉúl²µøã+­ÅÓõ‰ùþB}DÜíÝÙkïÝ™«œÿb®¢ÞDvaæ£Û 3YóoÉ¡ò`é-=¦½oÌ,º§ÞÚ¸ýËÖ†s­^¶„÷wÿ§òÈHú·N–Fÿq²4Ȳ²³9ãÆæ¼jéxõ¯7Ç«wwï=ÉR†ö¦ZgMµô¼ô^%ßß7:µäVï¸ÞÊòʉw|È©ÖäoS­í[?¿·?WÝÞël1Ø[*{H{©"± [(Øq¥¿ík}ìúWëcauiN|ÿrsbºüê ÓeUİÄß/?¼÷ð²»ÓÕ £—¤ýø×+¾CRÅR*üñäió°3¹óõΤšuu«¸)G 9|EI®ƒõ,rzF®Éæ¼ëPÕ/h˜oõÁ7—VèI¦ñêØµñêþ8ÝPàtùõÓeõA oq¼bì9Ôç±­5Ϋ5OØcêªú»ÐÆ=²%d1®Õ zjÅo¡ÄªÏ~6ÖÍm•äS˜á”XʹJÏ—@6™jÁûOþsm¹}ig¹-iÑß7:µäVõP>§ÞJ…×»¦Z†Nì1ØÚl!í¥ŠÄ:V³X±X u¿F†ªµ·ÏTk¶o¹ªìÃ\ût}LùÑ'ö±+~䚟,ºz²ºé¡ë –?ɽ^˜ùðúÂŒÜ}K!½3ôl rñåÆõËM±ç0)†ÖâOg[‹‡^ìuzL‹ÓiYyzêÆÚÕ7kªr.å"{‘ìPé)~ Ý.­^hî_í’T&µÆ;¯Õ±Àr”&öy,y«ÖÞž«(|o%Ç`oì!³–*빘Š£0ž¤u·jæ4Ôm!{‘Tíüh–9PS®TÂ1Kf´º!Þu»Iê\«pæJ½IØ/¸meTaÔ„‹Ò%¼sãf'4Ì»>IØs_•s©¾/I~ÈeôC–.o±´‡,Zhåé©UæI%Ö›ÄÒþ7É?¹Å¡¢]Å™îó$åMŸ«´C'XócI ‡SbùÁn'{$U3ã}ŒyÞè~ÕØÞr«ø5»ØÛ0DR övÀ2k©"±ž«Y,7•¯ŠØí[Oz>ž"\«øÃåˆ0œ„ËùÒÑü@èþvñu¢(œUÓ¦y!9^ ÎiøE>Ï.) ç»ì»†²æ°Ó×·ûËÖÝ_Ëí+{Ëí°WͲ8,=µ$™û¬0ý•X^<;ù­\Iøi^+IbÙó¦«lšoQZýÝà0ø…‚º#Í¢ôë.®Æ¦çV©«eð뤲‘ƒ½°„1“^ªH¬c»K¯J¸FÙ"̲âÇ#{_S ƒu¾][ïwƆå°&ï[pýËA;: µ÷#ü$t‚Ã<ØeOo9Ôˆ»æ:ŠègŒó£ŽŸx’àÉ#±Â¹&ïˆw–ðÅ)fÍ›„}8ƒªý]ý-ÃÁK,ûž%û]\MÊ­>—¨î¶àÐsz övÀ2©"±ŽÍ‰‚îÁ‡' ju{Øe•XêµÌC1‡Š_£:*ÏšZ’6ÁûÓÿ:n‡\g ‡»˜¼4r«$äÊè[á"1!';Ôø±z®¬9·çP‡[XCèB©L4‚ÏÙCAo=uxH†¾%oAÛýc'Ò.$ %–>Qð{ð:‹¯bá”5oªoÚ‘%¿·ƒÎWb…gôé j ö¯ü.µƒåJÒm¯±IiYrë‡pOD.ëé…Yc°·ööREbÚOÛmžßÅRç¤%‚ñyV‰ƒ¡îpÿ¯m¸æLW‡­ª@¿$–ý7d$™üùoÎYÑ/Å»€äÐøßqráåäIe͹=‡’"áAPI(†ð,;‰„ØÝ´‡,Ƶ꽧Öç~×–óä\ê¹„ËÆ|¹¹˜-‹£b‰¥¿u¬|X2IsSö¼ùºç˜ÿe³'}ù¥N_žîɆg*êË<†=-±ÓçáùxQœ}F1é¶×ؤ´,¹ ÷5õö\Yc(úw±X•X#C—Ž\|ý:¥ÏÇz¡ Þ¹ô¿VÄÊ ‰¹Ð©zý=Ê ‰…Ä$ ‰€ÄBb ‰€Ä@b!±‰…Ä$Ö±‘X[ß½èYÜŽ¾Ú" ÿÉ.‰uä$–ûÿAvëîî½'wwÃ{„¬¨ôš߽؜ 4‰5¤+žÑÊêô§ãr¾ú`K©¬]ÿj}ìøI,•$¯1§–-‰0äö­ŸßÛ¾U­½yªZ+¯œx§¼Rš.–¦O×ÏÜ?]×ðÓÞ½öÞ™í¿ŸŸÙÃLµ&›j)†0N…Ÿ«œÿb®R^)ÿíé¿Û…™n/Ìd½—½;Z>õÒôŸ'JÓ•fåƒJ³>ûùd}6ºµ/ßm¬©d¶oÝkÿ½ôrO3ô ’bÈï-®µæj›ó7nlΫ.Wÿzs¼šä'ä¯íön¯-¤—Lž´²·öwÜrªuöÑTKÏB©ë9nmÜþek‰5¤+­Â%ÏhÑ!±XI-›Ü¦É¯Ÿþ lòdéÔÕ“¥Íy×qúÏÜâóúìgcõY¹GrkÔþËyR˜ZãܹZãt}â_§ëaœ3Ûï_œÙž.¿~bºüðòÃ{/+|º+œ„Ü©éò«/L—•ºîKV˜ó¬éªåWþÓ]p{ÈáìUyzºÃ–XÙj`þ§¦ú¿µqó‡­ ï'|û{·ÒË_Ûí5Üþ^[¼Çô’É“VöÃþŽ[CúÕI­4ËíK;ËmµiH¬#9‹5 «9ñýËÍ Aª2Uš¹Pi®>øæ’åÒè…ô}øÂ¨‚ŽWÇ®WêiÏU©[â ó:IÍb^ãUziGFþôô_µöö™j G ޮIJ8CrMZ‹?¾ÒZŒû °¤ï®]ût}Lm¦>QŠý!®³x9i laæÃë 3j·³¦Û~üë•öcÝþNú®=äðH¬¸”sYÄ,Vcíê5•ê’RLêûÛÛÆ5°ˆ§–$±²Öº¸&ÛkxÖ÷:)N{ÉØÓÊó¼ì%µ¬bäa"±ŽØ,ÖðH, Hº¨*ëóÖâOg[‹ªÖîÞ}~4‘ªNã'K£ÿ8YŠ«¯%WE¤ž5NåSÓÁ £Ñ”ôÒVºš>–œÓç±ÛpT$–F|WF?yieTîTR^ZH³´z¡¹´ª%g–%Xs•>ž«¨%˜ÐÅWëªÅg)ÔâU}5‘¹ì-WE¤ž5N$@Œqïì‚—iÅ¿¯èG…;áå*iG¸)D¥â ÉõãåÖc”Jòî wb›æplé:GSŸÄVaüøº+ [ÈA0œKÏ1.¤´ò÷¶–XÄSKÊaþÚn¯áö÷:‰ü%cOËþ¼ì%¿¬’vî!±˜Å2I¬pG“Æ“Âj­m‹z‘Âêh}sé*_<×d[$ÐÿÔíq¦7âÚ Op#±àø¶Šj'5˜ÎJÉ)Ôíµ¥…Ú[­2ðÛâ]û,7+ý„1-Ë ­Ö³Zò¬÷âOlëœ!¦¥>á.¬üéf=H ¿ÇE‰¥%¦þ·%]?®¥Þ6vÜóô¶Yk`ŸZzíµÎï[{VlØk¸å½NOË^2ö´ò?/{ ØC†' úEÂn¡`¸ ‰Å,V‰Vn½:áGÖo3usGšðUe ¿«ŽV'®„/gº°T']\ê–8-¸š~$o´Ì/<áMÍc—K­œœ'Þ9+ZS g(Üç`ù9=Z› 8ÒBôƒFß­¿„“']$Vúà©÷g:½mèòÊ™V,7WO!\T–§·ÍZó?5 'Õ¢ÐÏÑ'¡ü°×º¤°×pû{m_Ñ“T2ö´ò?¯"~K CQ+^¬ˆÄ ‰ÕY%Àà‘ÔѺÍJé  Œp9 ±rI,€ç纹µ$n&ÓþîæsŽâQ×H,$ ‰…Ä$ XH,$ ‰H,$ ‰•]b)žýÖݤ‰u€ÄjN|÷bs"Ý"´‰•Ab¹¿FFòÿ-1æ*‰­Û¿lmTkožªÖÊ+'Þ)¯è[¥éÒhiúdiô'KµÆ;¯Õá·f}ìúWëcTJh¬}ùncM½Ãö­ûomß ¯îÝyÔÚ»3³ý÷ó3Û¥é?O”¦+ÍÊ•f}öóÉúl²µøã+­ÅÓõ‰®«':]?sÿtÝõ§íÇûãÜkïÝ™«œÿb®R^)ÿíé¿Û…™n/ÌdÍ¿%‡ÊÃH*úVØW&÷ª–űµqó‡­ •¶J^©«TõùÝÝo¿»ÛküÎßp®ÕÃË–ðþîÿTIÿ–|•A–•Íù76çUKÇ«½9^½»{ïI–2´Ç0Õ:ûhª¥ç¥'¨ð*ùþ¾Ñý­±éiå)Cµz¯ååªd¦Z“¿Mµ¶oýü^¯-•=¤ýN‘X…-쇸Ò߉¥J Ækeô“—VFw&ûçÎäÐ'’LãÕ±kãÕýq¾ÑÅùú‰é²ú,…Ý& öêóØÖçÎÕŠ'ì+uugrçë§ÿ÷ª–ŸV¿^ñÒQ. ÜGݯò &Ü[*Šß>ûÙX7·U’Oa†Sb)ç*=_Ùdª=ï>ùϵåö¥å¶¤Eßè~ÕXKZyÊP5YþªÞk•ÞV¥›½ÈÒ~§H¬#?‹¥Ñ ôfËÒð!±žg䚟,ºz²ºé¡ëà{œîîõÂ̇×fä¦è[ é¡gc‹/7®_nŠ=‡I1´:ÛZ”8ôb¯ÓWZœN{È"ç <Øg™Dcíê5Õ9—rè½Hv¨ôÂ52K«šK«–2Ñ:šX` 9Ê û<–¼iOÒ̧žisâû—åeå£7‰•'9ú±ÄJªí–7º·º'­þ–¡X»öéú˜<á¬í@Ö£·;EbÉY,I£< : àyFcÃ~ÑNÇ݉]?Ï á¤¹‘®\} ¥M’OqHýíûçÉqÔ'(ÔR1-ÔѲ"û½ØsØíÛnD\#Óñ¸µâÔh·ÖƒÈÁJêU-!‹ÁÝ…–NÉ”8±äA.f(ÌôDâëm+œ»¥ŽR g bŸÇ’7Õ(/B:ó?ªIÒnX%VgWo–Æ C8`£³ÖØüi!±æ*|Wi‡N°æÇz[ésXK"G²GâP53ÞǘçÎ_c³¦Õß2T5?ÊB{;`™çN‘XGtKÓ£j¼º:h,0i}3 àù$\ΗŽúšÐýí6âëDQ8« §MóBr&œÓ{±Ðéç»ì»†²æ°Ó×·Ë­´ïþZn_Ù[n˽ëWÈâ÷±('r÷—“d: CνÂôWbyñìä·r%á§y­$‰eÏ›®J°i¾Eie]6y¸+Fw¤Y”~½Ñyjlþ´ò”¡âTÛâO襰„1“^ªH¬#6‹¥Š¥«Ú ™®õ‘X°ßùvÂ&¶ñàÖä} nÌA;: µ¸=ü$t‚Ã<ØeOo9Ôü€æ:ìåæçß:;@ò‡ q~TÂñOVœÄJ]úDWóH¬<1@Ò×Y„![‹?¾ÒZ<]Ÿø×éziº4Zš>]?sÿtÝõ’û{®½;{í½;s•ó_ÌUÊ+å¿=ý÷o»0óÑí…™¤œ4Ö¾|·±¦t·oÝkûVÖ{Ù»ó¨µwgfûïçg¶KÓž(MWš•*Íúìç“õÙAæ0ÿ½ñ4…ógVØ}€ÞòÐ_Ï$KpOVu ¼râòŠêêTkò·©Öö­Ÿßë÷SÛœ¿qcs^ui¼ú×›ãU‹W“¿†Wíe¨w?½¾éì×óÊòŽ[CNµÎ>šj©PêzŽ[·ÙÚ@b ©ÄJë´’g´†Mb=¼üðÞÃËq“Ä8KŽ×ÎäÎ×OÿÖ‡rKÇ+Í¿\¨4W|sÉ9èî ’ñêØµñjçÌöûg¶§Ë¯Ÿ˜.«Qø$W½€Ä[§SîÔtùÕ¦ËrݬÍy×åÃ~ÝËaÉ›¤ÿèH,çX+uÕ=ÙZãܹZCÏ¥¿O­>ûÙX}vkãæ[Þ«ùö÷äÒË_CŠ®YÊPo‹3¶ ¯·²_Ï+Ë;n é×Ru6È,·/í,·%ùXGr«8‰åGª\Gx²têêÉ’t¹Æ®ôò‡ãvaUË:‹¥T¤ø•Jú(`ƒF€ôŒŒüéé¿jíí3Õ®À`œòý‚êYäš(¤wƒäŽÿÏæÃËú\s\ŠÇî̵ÿz¥ýXý”þîÍé s˃…™¯/̨—).‡ýº—AJ,…—HC)粈Y¬ÆÚÕ7kÞ'qn®Rô¢½Xß`}ìÚ§ëcЧ¸§–.±ìi%Õä"j£}°;© cZ‹?m-jPÆaä}^öwÜ2)uyÅH¬#6‹5H‰¥%“sE¼2* ¤Ñ;u3ú[²½I¬“¥Ñœ,©A‘ GKþƒ&d›߿ܜ;l €¢rø®Œ~òÒʨ²ý“k½Är£Îú\ûžÈ¹DrMBÇ]-¼–è„ý‚¾ëVu\Ò^Çõ;½O˜C¡áÅpH±¿9ìï½ ^b)çr‹ÃÙ˜þæA¾„Ü_}â¥{.Eûs•>ž«hIXqO-IbeMKaBqR\mŒÓ²—a7Ü\fŸÂáûüÏËþŽÛC†y–·¬@é²PY¬D‰¥†2½jj…n¸Ì#«ÄR·~.Á¦×Öÿgc°Lµ@~ÔÂË™XZ½¸½´ªÁ¸ýbÃÍ\iæAn±>Ñà]¸ÃGVŸhÖ»5n¦B1«ÒŒD¼/¢77NÝ®º{ óÙßö÷^òK¬$â‘ûxHt0{±TÂás)Î7P*šQ ‡ŠxjI9ÌŸÖáÖÆ¤2ŒÑ0Mµöæ©^ç“Ò²¿ãöÞçw©h˜Iþ°òï2Eb½X± +Bb…Ó£¡Ä Cæ—Xñ$l­ñÎkµ†¬­1JÚå…Ä4Ëí+{Ëm¹8ûû8'Ã4>­^C²$ÔóË{ž]RÎw…ßJ'v²Ó…bò¸µKQãÖýÍ¡Diï%¿ÄÊ:‹µß[(JbIÜj}ÜY‰»w‘Õ7P™«ÆîLþöO¿6\øÚß§ç0ZöЍIeØÝ¹o?Ö Eú±"½¥eÇí!“r¢^š Db1‹5DK¬ZíŠÄ8ZøyËŽ‹ÎB->? —„IÌ„ãèú$¶ “>R£eNÉ»/ÜaÍáô;‡n‰QïåøI,9Üqidõ.쾜uíDJZWÄSK^(˜7­Á×FK†hæGÇTô&®ÒÓ²¿ãöéù±´H,f±$±|3ê*¥VNû íäV¼; ‰pØ]rÇå’LÒ(r|´€™vnœœ¹)ñ²põ)áÑGþø%·»ÆÒ¯¥¿‘„?'°s†˜FÖビÃ<÷rœ$–Nló¿„é|‰[ù±ëŸÇ7ðG;8?DƒÉçdöÿ©eõ^’ÒòûÖ6ùkcœVÖ2Ô.¾ÞΈΚ–ý·‡ Oô‹„\¤sSô[@ár»NÚ~¬~Aá%ÛäŠçàÚ g09|Þ$V8[î]^9Ó’²rsõÂ…©y|ƒp§å×Þò?5yPªEú®Ëé“ôY£¤´ìr%mŒÓÊZ†þ@5w¿YëLÖ´Šø],&¶ #+‰•¾0‰uh«7²J,€Á#©£¹MÍJéø Œp& ±rI,€çÍ]h>ÓþîæsŽâQ×H,$ ‰…Ä$ XH,$ ‰H,$ ‰e•X[ß½Ø~<’}+´Ãñ˜žìRUXC"±Üÿ²Ã)±îîÞ{rw7,$¦9ñÝ‹Í ªu¿ T‰•KbÅ3ZYÝñõ±ë_­'±’D—>ÑÕa¨Xvq˜Ÿ­Û¿lm¸êõðrkxJžk_¾ÛXS+´}ëþ[Û·:}âAk4*ÍÊ•¦Â·|¥µxº>ñ¯ÓõÒti´4}º~æþéºâ SÜ»ó¨µwgfûïçg¶KÓž(M+žúìç“õÙ¬ù·Ç¶wg¯½wg®rþ‹¹Jy¥ü·§ÿþmf>º½0“µ|ò„,¢IÇù3«ŠëI‹ðL²Ô÷dUÊ+'Þ)¯¨Nµ&›jmßúù½~?µÍù76çU—Æ«½9^µôàùkHqµÑ^†Y[†üÏ+Ë;n 9Õ:ûhª¥@©ë9ÊÓCb ©ÄJ"In §Äzxù὇—ã&cØÄ@R>‹ëÆŠH ‰‡5D%QÔÍsKÇõIlksçj ¹2 YiþåB¥¹úà›KΕwŸHºŒWÇ®WÃtõ­éò«/L—ål)N¹D›ó®“¶ß…=¶™í÷/º¯Ÿ˜.«ïð÷ØÝ?¨|z Y\ß”Ç+Èß“¶Är޵RWГU-ÕséïS«Ï~6VŸÝÚ¸ùÃÖ†ïÁ¿ý=¹ôò×¢kc–2´· ýy^YÞqkH¿n¨³Af¹}ig¹-ɇÄ:’³XÅI,?R康“¥SWO–¤Ë5v¥—?· «ZÖY,¥"ůTÒG-wÔX»úFcídiô'KÊaÒ=ªiÓk W"̧ºÏ¥Õ Í¥Õ8-9á’<Ÿ®J̽„ŠÙ; ŠÓ½®JE÷Æßœøþåæ„ÆkõÝý®†µ4*æÓúÓÓÕÚÛgª5Aèw—üë•öcµ{úÛ:ÛZT+'×\ßR Þa’ãîæüõ¹æ¸ÂOb‡~aæÃë 3jmÂÀÛÎäÎ×;“ö{´—Ož’<,‰eéIû•K[\?¸>víÓõ1ÅSÜSK—Xö´’jrµÑ>°›T†––!ÿó²¿ãùÛyÅH¬#6‹5H‰%G_cr®ˆWF% 4z§nFkB¶7‰%!¤E6l{kžÔ(H®¨¹WÎÃU!%íô2‡cHá+OR뎔óøópùŸïxœÌKo’”7/]ºaC£f"^$“\.oš¤V9„® N!ôk¼ß/mê8…6ÓøjŒ9¤Så%–‹?LË÷Y®… û‹0¤Ð€`Üö&ë[cSnCi¡öV=EØsÙË'_I¾ÄJïIû•‡¬=lûÁ¹ÊÏU´$¬¸§–$±²¦¥0¡ÏS\mŒÓ²—¡½eÈÿ¼ìïxö¶¥3ƒ­@é²PY¬D‰¥†2½jj…n¸x#«Ä å„`Óë‘¿iGÃê ¹8ŸºSɳPIXJv¦;Šß²MyVZš ­:o•¶­ž-UËò;šˆw&X\Ì•ÑO^Z­ÖÞ<µVA3Wš£­OÔÞ†{B©Óm¹{Û›>êl‰M©‡+&¼ãåæRÔ†«ý·—Ož’,Bb%Ü[zÒ"dž¥‡íW?¨T4£¢ùœâžZRó§u¸µ1© í-Cþ´ìïxÖ¶E©ha¡üaåß2,ŽÄº½X± +Bb… ”XaÈü+ž„­5Þy­Öíµy ãt£ ñv»ÇîùÔŠ^mEõ¢Ëuÿq3¡®W³zÙÔTYî]Í™ºç°BkÑI*U$ô‹p9_:±›+·Cm]ÒÎ% ‡i$[ý‹L8ü¶ØÝFš]ø,³XÖØü¤g—2†ólanÓYZ½¸½´Ú[I'±²ÎbYzÒüyÈÓÃöÖªÌUw&ûçÎdþúŸUbåOËCµ1© »;÷µ yÒ²¿ãùÛ Äk&‰Å,ÖI,M°jµk~‰Îb…û¦ìƒ_Së^'5ññHžš}7”^ö{÷£&nA`üJç™H,è?±[Âý£én|WCWö´Â„jÕµ0)y¿„ÛÓ›e/–5¶0'ᢵðÞåÔÚÊÇ öV’ÏÄÊßÃfíå¬kÓAÒ¸"žZòBÁ¼i ¾6ZÊ0Ë`OËþŽço[ì»ÎXÌb HbùfÔUJ­œÎßÑÕ~¥¾µqû—­ ÷Ø^>~«¿eЯÖ)‰0äæü›ós•ó_ÌUÆ«½9^MjÓ¦ZgMµÊ+å¿•WJÓ¥ÑҴ«…W˜½;{í½;3Û??³]^9ñŽ9Õšümªµ}ëç÷¶oe½—½;Z>ÎÒôŸ'JÓ•fåƒJ³>ûùd}vH—ºîEù”]˜ùèöÂLRüµ/ßm¬©d¶oÝ+9‡öƒ|šÂù3«ì>@oyè¯g’¥ô^¯z{jö÷¢¿5¤¸Úh/Cç!´zKï`¿žW–wÜÒÒ^!±†Nb¥uZÉ3ZÃ&±^~xïáå¸É(B6W)‚Ä€anäxíLî|ýô_`ÃõÙÏÆê³[7ØÚðmÚ·¿wkÓüŒ}gÁùrûÒÎr[.Tè©ÿ’›¥ðµÆ¹sµÆéúÄ¿N׳ދܩéò«/L—§îKÖæ¼ëò}È÷/º¯Ÿ˜.«SêI.¸Zoå*ÝUµ‡,îiæñ ’zü£#±z©Wyžšý½èW )º6f)C½5.ÎØ*¼ÞÊ~=¯,ï¸5¤¥½Bb±Y¬â$–©úæÒꃓ¥SWO–¤Ë5v¥—?· «ZÖY,¥"ůTÒG“Ðk 8ÏÒê…æÒjµöæ©j-)ÎJó/*ÍæÄ÷/ûxŠ¡±võÆÚÉÒè?N–tq)é[§ëgëERlº£0ärûÊÞr[ãz9gúX`\Vëòwú§§ÿªµ·ÏTk8yp¸+T¶a£4W2D½ŒÅeY»öéú˜ZÈ,ÂÀ­}HÌZ˜ùðúÂŒÚ^Ý©ÝÝl?þõJû±zRýô]{Èá‘X /‘ §#粈Y,ß/Ë'QOêRŒûÜ"z̤zÕß§–þ^ØÓJªÉEÔFû°ýÝl-þt¶µ(ŸÊaä}^öwÜ2{…Ä¢Y¬AJ,‰ɹ"^•tÑèºý­ ÙÞ$–dŒÙ°qìµyê¼zÍ|EïŒ1(­ñêØµñj·\¹fE"J†î]¯º¬—^.þ°QÐ+­éo5FŠSŸøq7"b_Ж•¦ž•7}ÞZüñ•Ö"®–ÄÒˆïÊè'/­ŒÊ!Ë'±:3Bê ´Dzðf®òÁÇs…Ï2®ßé}4.^ÕpX8¤J µÌD {.Åã—~uî4vUí!‡Sb)çêÃÙ˜þæA={ØoziçžKÑ=f\¯ŠxjIïEÖ´&'ÅÕÆ8­|ï¦{÷5ûßç^öwÜ2{…ÄzNg±ÔP¦WM­Ð …JV‰J!Á¦×#¿ÄRn%ÂÆB“Èj ÓË$³Ô £«ŠSÄ¡UG«’Ù™üíŸî»Nti&-O³—UÖ‘`€þ¢öVmãÒêÅí¥UµéÃd–ÑzÉ6õ/ZTu9v)jäÛ"óâQç$a ˜ÃHázïx¹¹Ý»úÍ™Ä;7bWÕr0+‰xä>Ì^,•pø\Šë1“êUO-)‡ùÓ:ÜÚh75L£÷½·ú“”–ý·‡ÌÓ^!±†t/V,ÊX¡P %V2¿ÄŠ'akw^«5dóK,¡ª¯97µh™A<Ô-7>–•šu¥anC»ñ¤+½p)£JÌ~B`Ò}!±`ØðK£‹Ó›ÄŠQë­‘õøªœi|k`«7¡˜ö^NNΚ–ý·‡´´WH,f±AbIöhê_“ªyŽj åˆ'²Õ{aód7¹LüÉ„N°)ojâ[n„BÊú-¶n'›^HņÑ'ñBA¥Ïà!±`8ÙVªkϵ“6vïÔS(dxú«> ]dÆl§Í”Ë.þ wDX~•Ë‚ý—pâ¶]Â2î)XYÊ¿3[î]^9Óêgåæê)„ Sóô˜ùëUÖ§f/ìiÙåJþÚ§•µ ½çæî7kÉšV¿‹ei¯XC$±z#«Ä~Â*›n-³^ªô:!ÐÞa@‘ÔÑêÍJéø~¯õÄ]@b­ñð³ÒxùjBb‡æ.´ì*<ê(u €ÄBb=§hó±eñƒ–2~H,$ ‰…Ä$ ‰€ÄBb ‰H,$kŠg¿u7éã@b ±š߽؜H·-@beX‘üKŒ…¹Šñ×ÿTq·úðrRÈ“¥Ñœ,¥ÇÏ3µ/ßm¬©§Ø¾uÿ­í[áÕ½;Z{wf¶ÿ~~f»4ýç‰Òt¥Yù Ò¬Ï~>YŸ C¶|¥µxº>ñ¯ÓõÒti´4}º~æþéºëOÛ÷ǹ×Þ»3W9ÿÅ\¥¼RþÛÓÿ¶ 3Ý^˜ÉšK•‡‘Tô­ýýlwºõȇ,Ž­›?lm¨´UòJ]¥ªÏïî~ûûÝÝ^ã¿ýËÖFº¿qü¼”Íù76çUKÇ«½9^½»{ïI–2´Ç0Õ:ûhª¥ç¥'¨ð*ùþ¾Ñùk¬å¾ôŽë­,¯œxÇß×Tkò·©Öö­ŸßÛŸ«nïu¶ì-•=¤½T‘X…-쇸ÒßY%V}ö³±nB©Â ± [Oá#‰¢$×AŽÈtùÕ¦ËrzF®Éæ¼ëPÿøãÉS÷ªÒüË…JsõÁ7—VèI¦ñêØµñêþ8ß¿èâ|ýÄtùáå‡÷œ îÂ[¯{õylksçj Åö³ºº3¹óõÓ{dKÈb\«_¯xé(Pî£îWy“î-ÅoÇÃKQÎUz¾²ÉT{ Þ|òŸkËíK;ËmI‹þ¾Ñùk¬å¾T×Ç®µ>¦·Rw§wM9´ Øc°µÙBÚK‰u¬f±jw^«5â®K¨ *LÒ¨›^½À¾±s¨ƒ-ÓB-@²ß‹=‡Ý¾íFÄ52*Nv¯Œ~òÒʨ¬¤Ù²Ü]¨/–#(qbɃ\ÌP˜ù×gK¬·Y¬<^Š%oªQ^„tæT+’¤Ý°J¬Î,®Þ-Œ *†p8ÀþFg­±qZùKf®òÁÇsÝ]o%Ç`oì!³–*ëXÍbie¹VU¸°’R#•$±âÎ,lÓ+®$ô· €¢©ÖÞ>S­Å»b×!ÉýõW]Î\ÉiV¤O4Hç×G8÷EÖ/lsbÀ;7nvBÃy±ë“„=‡ñU9—š I’rp—V/n/­*oq¿iY´ÐRÙúy'7Æ/Ñ>‘táTb½I¬<^Š%oú\¥:ÁšKZ 8œK"G²Gž•jf¼1Ï]Dµ—Œâ×ìboÃI1ØÛ{Ȭ¥ŠÄ:V³Xzñ|·ä:657jR5b”.±âæ2þ<”XaH$ÀÑ"\Î—ŽæÂ¤Ûˆ¯ë}ÂY9mšRï 0áà_äóì’Âp¾Ë¾k(k;}}û±ÜJûî¯åö•½å¶Ü»~…,Žp‹r"—qù8I¦u+r«7/Åž7]•`Ó|‹Òʺlòp%VŒîH³(ýz£‹¨±–ûRêjv&ûgö%µé1ØÛKÈ3饊Ä:ò³Xá(Ž!;²‰ûo'lbë{–ÎØ°Öä} nÌA;: µÈ<ü$t‚Ã<ØeOo9Ôü€æ:ìåæçßÞCb9âü¨„ã'žÕg(ÂKÉš7 ûpUû»ú[†ƒ—Xö=Kö7ºˆ›~_º ‰êô‡é僽°‡Ì_ªH¬#?‹¥O4ïW·w¦5‘X`w•âMðþô¿ŽÛ¡Þ'>ôÈK#·hM®Œ¾.ê;ƒ ü1Kn_VÖœÛs¨½ÇÁºP* ÇsAöE ɪ™š Çæ5Þ¯“ý+á!ú–ä®¶ûÇN¤ß7e]H–ÇKÉš7Õ7íÈ’Hèí óÕXቂz‚ˆ÷,ù]jË•¤7Ú^c-i%Ý—?Â=I¸¬§fÁÞØCÚK‰uh?=l·½I,ý-Ù¾ H,È#±ì¿!#ÉäÏsΊ~9'Þ¤>ËÿŽ“ /'O(kÎí9ô8¹0éq*†ð,;‰„ØÝ´‡,ƵÒžÎìÐþßÅrù ªŠ]R¿kˉ[9—z.á²±ðà+Ëâ¨ü^Š=o¾î9æÙìÉn?ÊÖ—§{²á™ŠúÄ2aA õ¹¬$V¼(Î>£˜ôFÛklRZ–û ÷5õö\Yc(úw±X•X#C—މ~KŠÒ€çc½Pï\ú_+¶2H,$ÀC§êéìDJXH,$ ‰H,$ ‰…Ä$ XH,$V"Šg¿u7éã@b ±š߽؜H·-@beX‘üKŒ…¹ŠÙÚ¸ùÃÖÆéú™û§ë¥éÒhiZáË+å¿•WôùÝÝo¿»~k$Jó/*Í™í÷/Îl»»n?Ž¿µ>vý«õ1*1Àñ£±öå»5µö۷}+¼ºwçQkïÎÌößÏÏl—¦ÿÐ'rÚÆ«cׯ«ûãtƒzÓå×OL—^~xϹà.|ì6Y°çPŸÇ¶Ö8w®ÖPûÙX7·U’Oa†Sb)ç*=_Ùdª=ï>ùϵåö¥å¶¤E¿ßè¼oŸíË{_ªÉò?•ŠâÑÛª{ì-WööREbùY,…ÑUûx’E,©’i<©Z{ûLµ†Ä8®È5?Y:uõd)tÓC×A½L’{½0óáõ…¹)ú–BzgèÙäâËéï—›bÏaR ­ÅŸÎ¶%½»Ùéû,2ɲòxµ«o4ÖTä\Êñõ"Ù¡ÒSü„]Z½Ð\Zµ”I­ñÎkµF,°…e…‰}KÞªµ7OUkIs/z¦DÎ_νI¬<1ÈÑ¥HRm·¼ÑYß¾8­üo\Ò}ÙY»öéú˜ÄyÖ\eÍ¿¥T‘XÇdK ^“¤zäj†ôàóH,±´zq{iUÍ àø¡±a¿l©ãðÅ®ƒŸgpÒÜH×?®>Ð ɧ8¤þöýˆsŒä`éñkhO u´°Ê~/ö&õ§™ŽÇ­§F»WF?yie4©Ÿµ‡,†Þ½¹˜¡0Ó‰K¬·Y¬pö&”:J1œ1ˆ}KÞT£¼³Þ™'Q­H’vÃ*±:óHz ´Ä.^P§Âáûõí‹ÓÊþÆYïËÎ\åƒç*Š'k®ì!í¥ŠÄ:V{±TeUü“Sój^õÚ„ãˆv±¤ï†©#±ŽZ§ï:HwÈâxä0…3WršÃ>Èõh+£ £>KÖ/lsbÀ;7nvBó$±ë“„=‡ñUÉ!Í„$É9‚~ðÑå­›j Y´ÐÊêÄÂ;©Äz“XÚÿ&ù'·8ô4´\Mq¦ûƶÞ-îŒ ËaMÞ·àzŠƒv:ujHøIè‡y°ËžÞr¨qtÍuäï[ó„ q~TÂñO‡%±Â“÷ô5ûr~—Zw±ay£ío_RZö7Î~_Iï ž©† ÒOì´çÊÒ^ªH¬Cûéa»µÚŽíÿ ×ÄèjÒÁ²1z©´D0žXOŸ$Uê¸&ÇUbÙCFN›?ÿÍ9+úíxÿ;N.¼d‰$PÖœÛs()锄bϲ“HˆÝM{Èb\«Þ½}îwm9O@Î¥žK¸ÐÑ—›‹Ù²8*–Xú[ÇÊï?>¡ûÜ”=o¾î9æÙìÉn?ÊÖ—§{²¡Ï£O,óö´pNŸËJŠÄ‹âì3ŠIo´ýíKJËþÆÙï+&Üeùݹ¢ ‰5P‰5R0tùéÈq×o.Qð¼q¬ ÀàKÿkEöC‰…Ä8bèT=vŒ ‰€Ä@b!±‰…Ä@b ±X€ÄBb ‰€Ä:ųߺ›ôñ ±X͉ï^lN¤[„ ±2H,÷×ÈHþ¿%ÆÂ\…lmÜüakCWïî~ûûÝݤüTš•*ÍÉßþ¹3©Ï7çoÜØœŸ«œÿb®2^ýëÍñêÝÝ{OºÅ` GÆÚ—ï6ÖÔ³lߺÿÖö­ðêÞG­½;3Û??³]šþóDiZýK}öóÉúl²µøã+­ÅÓõ‰®—¦K£¥éÓõ3÷O×]Ú~¼?νöÞõ2å•òßžþû·]˜ùèöÂLÖü[r¨<Œ¤¢o)|zÈ0u{Èâo ÒVÉ+u•ª>OòlñßþekùV/[Âû»ÿSyd$ý['K£ÿ8YdYÙÉï Ùc˜j}4ÕÒóÒTx•|ßèü5¶·Ü¦çªÛ{íZ ½×å•ïø´¦Z“¿Mµ¶oýü^¯-•=džü#±ú´P°âJ§K,¡NH.l¼v&w¾Þ™TE‰ÓúìgcõY‹H³‡€£‹>‰¢$×AŽÈtùÕ¦ËrzF®Éæ¼ëPÿøãÉÓ¢ÒüË…JsõÁ7—VèõVãÕ±kãÕýq¾ÑÅùú‰éòÃËï¹^Ì…Ý& öêóØÖçÎÕŠ'tCuU}khc‡Õ²×ê×+^:Ê”û¨ûUÔ›K÷–Š÷¬#”Xò(ºÕ=çW(ÌpJ¬ü¾=ï>ùϵåö¥å¶<½þ¾ÑùklÖÜZr•4t²>vý«õ1½×JQo«bËÞd ™'ÿH¬#6‹*{¨‹RµÓ¸ÂÊè'/­ŒÚšËƒ $ÀñC®ùÉÒ©«'K¡›ºÂKr¯f>¼¾0#7EßRHï =ƒ\|¹qýrSì9LŠ¡µøÓÙ֢ġ{¾ÏâtÚC<åÁ>Ë$kWßh¬©ȹ”‹ìE²C¥§ø5‡°´z¡¹´j)“Zã×jX` 9Ê û<–¼UkožªÖ’f>õL›ß¿,/+ù}¡¬1ÈÑEKRm·¼Ñ½Õm‹´NÊ­=WvÖÇ®}º>&qžµÈÚb‘$ÖPÏb ö…S´ÕÚÛgªµþ¾êH,€ã„Ɔý²¥NÛ»~žAÂIs#\ÿ¸ú@‹…$Ÿâú[ŸË1’+¦O4Ư¥bZ¡…Uö{±ç°Û·ÝФF¦ãqkÅ©Ñn \ÊÁJê%-!‹A¬né”A‰Käb†ÂLO$.±Þf±ÂÙ›Pê(ÅpÆ öy,ySòn}gFEµ"IÚ «ÄêÌâê-Рy¼ôN1„Ãö7:kÓ²ç6k®ìÌU>øx®¢³¶öÅå‰5Ô³X!OÊúò#±žO4ï:ˆ]‡$÷×_u®U8s%§Y®°>q=ÚʨÂÈ}‘õ ÛœðΛРaìú$aÏa|UÎ¥fB’ä‡\Æ¥Õ‹ÛK«Ê[,í!‹Z*[?ï䯸%ºÂ'’.¼“J¬7‰¥ýo’r‹C±¤Å¢Šó •;Ýó¦ÏUÚ¡—¢ù±¤ŠÃ)±$r${$U3ã}ŒyÞè~ÕXKn³æÊö¾»j~2”…övÀ²ˆü#±ŽØ,–Æo´\0^ê€Äßkt–ó¥£ùÐýí6âëDQ8« §MóBr¼&œÓð‹|ž]RÎwÙw eÍa§¯o?–[ißýµÜ¾²·ÜV?Û¯ÅîcQNâu.’d: Cî²ÂôWbyñìä·r%á§y­$‰eÏ›®J°ÉÿQZY—M®ÄŠÑi¥_otq56Ìm¿r¢j[ƒܲ¶–#fìùGb¡½Xš¾t˜°o¶Ür ß ± [â„Ml½[Ü–Ú¼oÁí9h§Sg¡ö~„Ÿ„Np˜»ìé-‡q·ô•±ÓîÉr0ÄùQ ÇOœAÕþ®þ–áà%V¼ã(ÿ]\s›?WaÌ’åISövÀ²_ùGb±Y,u :´[g檸^$Ø]Àx¼?ý¯ãvÈuÖ¨p¸‹ÉK#·hM®Œ¾.r²Ãƒ 4~¬Â¬9·çP‡[XCèB©L4‚ÏÙCú}-ÈÔ¼P86¯ñ~­s ÷®„‡dè[’»Úî;‘~ß”u!Y(±ô‰ê€ßƒ×Y| §¬yS}ÓŠù?½t~¸+<£OOPáS K̾^)~£í56)-{ní¹JzCŸ6ýüC{;`™'ÿH¬ýô°Ý¦K,­\×Ë´®Z—_ÑY-ª.M ex:> _9{H8ÞËþ2’Lþü7ç¬h(0î­äÐøßqráÕ¯Ie͹=‡’" “§bϲ“HˆÝM{Èb\+íŠéÌíÿ],—]MrIý®-'nå\ê¹„ËÆ|¹¹˜-‹£b‰¥¿u¬|X2IsSö¼ùºç˜ÿe³'}Îï eñ»Ü;}.+Ñ/гÏ(&½Ñö›”–=·y$J¸3Êò+^Eÿ.k k¤`èòÒ‘‹¯_g¢4àyãX/€Á;—þ׊XeH,$äB"tv"¥H,$ ‰…Ä$ ‰€ÄBb ‰H,$+ųߺ›ôñ ±X͉ï^lN¤[„ ±2H,÷×ÈHþ¿%ÆÂ\…lmÜüakCWïî~ûûÝݤüTš•*ÍÉßþ¹3Iå€í[?¿·}«Z{óTµV^9ñNy¥4]-MŸ®Ÿ¹ºÞé›þøcsþÆÍù¹Êù/æ*ãÕ¿Þ¯Þݽ÷¤[ïÓZüñ•ÖâéúÄ¿N×ÃØ\Ú~¬0{wöÚ{wf¶ÿ~~f;Lwª5ùÛTK¹Êz/{wµ|œ¥é?O”¦ÕÖg?Ÿ¬Ïvú÷öã‘Tô-…O¦nYò TÚ*O¥^^)ÿ­¼¢Ï“|[ü·ÙÚp®ÕÃË–ðþîÿTIÿÖÉÒè?N–YVvì5? S­³¦Zz^z‚ ¯’ÏšóÆÚ—ï6ÖTªÛ·î¿µÿÊ_cs_YÛ K;5¤½T‘X…-쇸ÒßéK,Ì|t{aF.l¼v&w¾Þ™TEÉÓ˜ÀñædéÔÕ“¥Íy×úÏž<í3곟ÕgÕ¿èS}rПûn¥ù— •æêƒo.­>Ð'ê­Æ«cׯ«¡s³>vý«õ1¹P Ykœ;WkHže½¹JÓåW_˜.+N9@ržü=ºTôyl•ºâ ÝP]UßÚØaµ„,ƵúõŠ—ŽrUº_åAÏN¸·Tüs· ŒPb©þÄaT‹f8%–­æ÷'ï>ùϵåö¥åvø&ZÐ3Ò{”.±òÔØÁÜWÖ¶ÂÖd i/U$Ö‘ŸÅ •½F¦Ë¯Ÿ˜.«Úi´`eô“—VF“šž«h Ð~~&äÙt…îHƒ†Ý¾í†&52)*NvkàRVR™XBƒXÝS“#(qbɃ\ÌP˜ù9ÌgK¬·Y¬p–#”:J1œ1ˆ}KÞT£¼³Þ™'Q­H’vÃ*±4ËêÞ;-ÃÓ»/¨S áp€j¾_°×‰?]bYjlœVq÷e'n+ìí€=dÖREb“Y¬u–—?lòÒ+¥ºÞþ6O0<ø]»n¤_ºŸyps ±ó‘îNiæJN³\a}¢<¿†Â¹/qœr¼”“¬â$ÉAcNº*çR3!IòCŽàÒêÅí¥UÉQÅÙ[È¢…–JØÏ;¹1~‰®ð‰$}_O<©Äz“XÚÿ¦Ú%·8KÌUœ­Üéž7}®Òë¤êpÒÅá”Xªù’=ò¾T3Ã}ŒIhx=ÞG”$ú[c‹»/{[aoì!³–*ëÎbiüFËã¥éMd(±âÑM$ÀñCŽi8¦«Ïåri7oÒšˆtwJ1h^H=ˆ–uÅ|B³ ßÛáL¡ƒÞmLÚ¥ÏÉȽ“[i?`c¹}eo¹­~¶_!‹~ÊÚÇ¢œÄÏT’Lk[ä+L%–ž‚ä·r%á§y­$‰eÏ›®J°ÉÿQZY—M®ÄŠÑi%Ùì,ÐM'}9O-â¾bÒÛ {;` 9b&½T‘XGt/–¦/]¦ì›-w2ÆoXЭÏr®­oùŸ<ãùqÜî{¢²ºSáÂpï‡z.¹ÚéËÒÑw“wV¸]:ñ^,£'õ•IÈé·ì³‡ q~$,½êÌ$ ž<+œkòîuÇ»ˆSÌš7 ûpUû»ú[†ƒ—Xö݉šŸŒm\†EÔØâîËÞVØÛ{Èü¥ŠÄ:’³Xêt\f·ÎÌUÜxI üNçòú㑜РHNÚ•îNù!›\9+á"1¿e¼ÓOå?…OŽ{èɹnÒáÁºPÊ•FÐã¹ {È"P¿¯™ÏáØ¼ÆûµÎ%|¦á!ú–j…¶ûÇN¤ß7e]HJ,}¢: ÏÃÅW±pÊš7Õ7­èQ½Ê³Ïç°$Vxòžž â7ÑïR;x`"éX {µ¤Õ¯ûJzím…½°‡´—*ëÐ~zØnÓ%–¶±êeHZW­ÆË/è¬Eb@Øþûß°Ò‰mνÐ^è@¨/P˜ðd9}ºkcÓP`Ø[…»úõ[Rö_¹ñ‡<¹0éq*†ð,;‰„ØÝ´‡,ƵÒ^—ÎìÐþßÅrù ³Š]R¿kË­‚‘s©åyá²±ðp,Ëâ¨XbéoyaÉ$ÍMÙóæëž`þ—Ížôå'kì5? Z8§Ïe%EâEqöÅ$1`¯±Iiq_1YÛŠ¢ ‰5P‰5R08éÈq×o.Qð¼q¬ ÀàKÿkEöC‰…Ä8bhC„ÎN¤4‰…Ä@b ±X€ÄBb ±XH,@b!±‰…Ä@b=ÃÖÆw/ú_·£o…–*H¬}Ëýÿ ‹Äê/«¾¹´ú ¼Rþ[ye¼ú×›ãÕâÒÒ³kN|÷bs‚’€£}ëØJ¬xF«¸¢ßÚ¸ýËÖFµöæ©j­¼râòŠÒ-M—FKÓ'K£ÿ8Yª5Þy­Ö8ŠKw$¡µwg¯½wçîî½'wwÃ'ÛßnIñóJÀQDíäÌößÏÏl«ýT_0Õšümªµ}ëç÷¶oÅáç*翘«h0Kvaæ£Û 3I©4Ö¾|·±¦6sûÖý·|œ®o=hÝG¥Yù ÒÌrGZþŽJÓž(M+†úìç“õÙâî%OÈü(~ûÚ™åö¥åöàû2ŸþŸÊ##Î9{x9)¤¼‘"úî$6çoÜØœW}ÐmR™LµÎ>šj©¶è}QxùWýM+ý9öû°†ÌÓ’dmsúÑjõ¿ò×$V$VÚ‹‘<£UD¡«Š¨i[ý䥕ÑÉßþ¹3ùÇOž¾Ö/?¼÷ð²Æ±tõèŽÆÝÝýöwßT龊è&ÇE=B­qî\­qº>ñ¯Óõ0üÌöûg¶§Ë¯Ÿ˜.«uUø$ÇH-¤âé&6ô]÷Il•¹;ö;Røéò«/L—uGŠMÓæ¼ëò‹¹—^B¦OÔó†¾,”XõÙÏÆº9îêÁfKùÙÚ¸ùÃÖFìK„ø¿'ÿ¹&É*w¿¿i…õggrçë§ÿÛï7Â2OK’µÍéG«ÕÿÈ_X…Ïb Fbi¬(½QëßXšëœ4K&e/«Ož­íÇêÞT}U5—V/4—VÊ«’Ѩª¾î¥Z{ûŒódéÔU?â¥%“f±ôÚ(¶ñêØµñªÆ*üS8xÂ’+€£ÈúصO×ÇÔ¦é¹tvÁÐ~üë•öcµÌúÛþÝÖâOg[‹•æ_.Tš^üØ{ºî‚aaæÃë 3j«‹»—ª+Õ¢…8í‹'å‘XpÔñCK®=”ë–~j™œàðXsïªÝ¶¸’qœÚ'Ó¯síü93ÁÔÓ…»°Š»—ŒÄïR{VlØß{È8-{K’µÍÉßjQý­H¬#<‹µ_g»¦V•@Íexˆªd*Yoñkœ)<•è ]Hˉ‚ý’XáxƒÒõ›k5»åò B}×ËÄ€ãC8«oùíµÛZ¦¥–SŸdRobÃuÿ+£I‹·³öYÙ¦ˆ{9ÞKkLBo!<£7‰¥¿5¼»ÿ¨†î}·üŸ'†åøê9ZÖ¿$!ÉúEþTd÷I(u´,ôäáØ—ºÙÓRí }$‰ÒXJ%Ýo¿ §eoI²¶9ù[­"J @bå’X½a—Xá£M·á‰=YL*‡~¬sdç0lX@bÁ@Ë4O¥‰`‰«áÙª€Ä‚#ƒÄU8É«Éwý–×amJ@b ±X€ÄBb ±XH,@b!±‰…Ä@b ± ’X[ß½Ø~<’}+´T@bí“XîÿY$–P94'¾{±9Áë@ÿ H¬\+žÑ:êxkãö/[®è^¶7ñwwï=¹»ËëpÔÙ¾õó{Û·ªµ7OUkå•ï”WJÓ¥ÑÒôéú™û§ë¡C?Õ:ûhªU^)ÿ͇¯þõæxUýHÖt÷îûùd}vȽöÞ¹Êù/æ*J]vaæ£Û 3Iñ7Ö¾|·±¦>kûÖý·¶oåÙÒvñÛ×Î,·/í,·ßÿúôÿTI÷N–Fÿq²zeE³9ãÆæ¼êƒj`R™ä¯±ö´ÒŸcß{®òß—=WݾëÞ\}7l[¦Z“¿MµÔòôÚ&XCö·ÕBbõ(±Ò^Œä­ã1*f9‘Xlj“¥SWO–6ç]ë?{ò´}¯Ï~6VŸ•c¤O½ÜzòŸÖ_ cGîÑtùÕ¦ËrÅ$?ä0…ù™Ù~ÿ¢ ùú‰éòÃËï9wßå!vÑ„z¨Óõ‰®§ '{ÈÁôÅëc׿Z†þ7”Xª ÝJïÛßïî*Ì %–ò³µqó‡­ _&.'qÈü5ÖžVXv&w¾~ú/°ý}#ì¹Ê_ö\%É3Õj}WÏ¢Ö8w®ÖÐ{×k›` ÙßV ‰UÈ,V~‰ÕX»úFcM™*ðêƒo.­>°>Œöcu3a K«šK«aJjˆÃÏU5õ‰”½çàfWã>×¼VkoŸ©ÖpVŽêMZ‹?¾ÒZŒå‡ú¬¤ïÊ•Éê¬hV$©ŸZ˜ùðúÂŒú¹§vñÓ~üë•öcåY'}×rØ$–¥ÿµø–üÔï¼VkŒWÇ®Wã0r”&–XvŸGß %½]0d½ÕXKZºjTñS°¿½å*ý‰'Å'Wé¬]ût}Lµ7kZùs•§ ±ú6‹Õ_‰¥ªN¸ûÅM_ôm'Ÿ4¯ ¤Oô2« ³,'ˆ?ïmK9Ñ4ksâû—›ú<î¤`˜Ñ2¹p Íõ¡«º-æéÌÉÑ×"œ¬Knüì‡CãÜáU¥®žQÎPè‚«÷Ñ¢ åAßR<~ÉSÇYŒ…“=äpJ,KÿÛ/‰Îr(­Ð!g b‰e÷yô]=‘ÖâOg[‹q­èUbõ§ÆÚÅŒfWVF?yieTÒ=©þûùØloDÖ\ÅiÙcÈ“«tæ*|‹ûh?„À~þÛ0K,»`‘XúD ý¾¸Î2ËX8eõyŠ“Xý­±–E‰^кZ¤›xØïR{VlØß{®’Ò²ÇÐ[®Â2‘˜‘àL?kÑž–=dëÀ`$VmË1ß‹¥ ¡ª¦ŽA•@Óèñ”?ÖbÿÃp' º*•~¢ :KŸVgB?nÈÜã\U.HÊ à8¡v[î ïYœ›¢½X¡¤¥5 #+g%^öcÁþË6êûÔW*¤r«£Xqÿk÷ìKëp”ýG5tŸ›ÊêóØ%–$·jBx*²> ¥NþkOKµ7ôÍ$Jcy“t¿ö7ž«¤´ì1äù]¬pg”åÊø]¬þ¶Zƒ”XñÕ¬Vjè%VoßÅ$V$ ‰H,$@‰eßÄ„Ä$–iË.®X€Ä2-´ˆ+$ ±2ìÅJWH,@bqÜ ‰…Ä€çEbIËä·‡*±Ï~ënÒÇ?Ü<Ù¥’}‰5R•X͉ï^lN¤ÛaZwwï=¹»–E‰%!Tœí›ÄÊ¿Š‹Åb±X,‹ÅbºEba±X,‹Åb±X, ‹Åb±X,‹Åb´Äš«\Ùk¬M—ß¿¸´[mÃb±X,‹Åb±Øa°Ú5x‰%}«§.çcÔg¿¹´µÛPbõwkÇKoŠðùÃóýKbI+Ih…r«‹Ä …A‹û¯~ʼnÅb±X,‹Åb‡mA]}þøWªXH,,‹Åb±X,‰…ÄÊ.±' ‹Åb±X,‹Eb¥ûüéÚ‰u+Œ‰…Åb±X,‹Å"±,Ë"´ž;‰¡ÄÂb±X,‹Åb‘XEèˆc.±F@ba±X,‹Åb±H¬¬+IM0‹…ÄÂb±X,‹Åb‘XÌb± ‹Åb±X,‹Å²‹±X,‹Åb±X,' O‰5ø3ò±X,‹Åb±XìQ”X½Å‰ÄBba±X,‹Åb±H,$V7‰¥ËoÃâîWœX,‹Åb±X,vxl>ÿ±’X#CÀ‘—Xº,‹Åb±X,‹{$%Vø…â,S¨X,‹Åb±X,6¿-Z¿¤OMýquw÷Þ“»»¡¥«ýµŠù€Ü¡Ybý’$®Ú]2H¬"¬2ĉ+X,‹Åb±X,6¿=,EÓEb…B+œCba±X,‹Åb±X$VÒFªP\u‘X¡ÐŠåVqvkã¿¿ÝœÇb±X,‹Åb±Ø;·cGé9ź¶yµµ=_Yh ‰&ç6ÿ×6eáƒæûmØ´¾¾~óïNÙn¬ß¼¾vë–sóU»ñ9³ëÿ\»~›-Ü\pî–íî]çνÇwî9Ün/:wRìóöâcø\xÈìþC'õ`cñáÓTÆ­±/7&&/…)t©ò·Tª®–k¶Õ¬·çS¦Œ_¬Ó¾4;àîx>Íl×2ÚÎÝé»—¿ÓžÛùÒò®ï§Ávv¤_{™Yûþåö®4³Cé^ÍtLwNwö.wI—m€Yωåî9fC…î¡\×X®{4×7–í;UèÏ÷ŸÍ·wÏð’‹Eû´q# øÈˆçææl„_)¨Yܸî´íôàîNïÚóà‹p‘ìw_bpÛ;Ù÷{|+pÁ~xˆÁe&Àí>–)“ep=E¸«.Xß[ÙïýdJî× uíêܧ¸ÀOÞÞà†£Ì]›­ù:7Çÿ’;ŽcYÑxAoÜZÛ±ç O¹U¸@• pA³/þ8S…{0ÃȬÂí<ºâÁ]éâp‡V™lOfì+#9ÀŠÆáö¿™…ÏŽCÓX(†}ÍMxñì쬽Šáz@Ÿ}¶&)Œ‘í,»Q¹Ù„»ïµtÇO3è@¹=oänÏpàöœ¬(w<ß;ΔÛûólÿY†õð9øÌ?_xý|¾³w|%”ªôuPBi HLäeYÙqK<ŠÙÉàù. ĈßîB­yYÌÁML€ûÝ ö2³2Ù*ÜZ·0†|Ð-°…!Ñ-<ÙfEå¢Á–ÇÞɛ̂b‰—Ÿ©ŽWÄâ.ˆRw8Ø®=JPá‹¥†‹2+9Ï]›gˆa>¡#Õ+ÁíìÍìë]á¢rÙ7VkáÖ¸…¾39$Û.wüí<À7Åø^ȃíó#.®$ ÿçÈ”è<y)m°Œ(ýˆñŽ%ek`½ÿª4¢âJ‹bÁÝükO×2|bSo/ÂÅ5¢xÙB.ߥ¬ÜóŒ,W.Sñ…<Þ:NÛHR¬ÚJIêÚ²Ò.xyÄ]ø…,+¯r âê* _ŒÛßþ—ƒp÷`M1¤Óy(š……½šÞwÜ.@ÿ¦ªÜe¬HŒõdË*Ê…]îà/ó\¹¸×ð{¹¡`¯oü'oSë± ›óÓÔ9 ¾Ä$zßYXÝ,s¸+ûŽf@¶À—+·k0 ÷´²rGs]#_"YT.íõ³š§\X>>•|wá»P²àã./ Æû^8Çê¯õâJû†ëäל1t©˜× 2â{ø~CCŸÀ”{´êÊ‚­ø„ž±<ºXî?óß²xÅ»™çÐ' ¼ŸþMþäE¶räw94ÌVt—ºF…² ëãÆ:Ä¢Û±EÌU\ôRÐvñ¿×ÅFnÙíV”Ë{¥ZŸväl!†{Ú/V9Y¶àù\ô ÇßË {6r‘ɱŽþ>?ü§Üø«*æ§$ž¿²u¡Š8Š *–}ñ¢ƒp÷{ž·ÃÀ ò¢r¡ûÀÈŽeËÊ=[v»lùͬH–+àrŸ{Òƒ;üÛ,Wîø‡¹Ó*KŽUl!˜ï]þ«¢C,Þßü¸#óÅÜñAŸ/9G2¼ï ÿ}…w|+÷4T®—»…$;™¼øUµE—»Pî©?d‘/–¡ëÄ”eó€Ÿ?ï¤4r»›ŸŸßh ªâ¹ù¿-ÊþŽR¿Ñ&µŽý¼@¹Ò6¢–Ŷ‡¹i(fÒ°Šk}ñýE÷ÀpM¢Èž’»gès¡©V ·Æçzd `÷ô¥<Âed/çÆ?föÎ_ 1ï×M|Kû]D^X}ÅŽá(ÚÞ]€1Š";jêÁ†N¹¯QÀe 6ø~~ô×¹¡‹Á-Fþœçʾ§?* xîÛŸä'>ù¬k”Qà˜åx›ØCÃ]¤q2Ý.°18>D‡ÃiuÒ@»¸ÄUö?3Eˆ¯—ºª÷˜ý?&Ê<ŽväÖDì©îØ¿Nˆ]åüuL|•y«!Ž£Jê~"Pòt»ÛR ß©ß:*¶ï˜P»8 Ž6?úI÷×}Q#Jıê·œ“S1\FiKHÅâÏÜ%™R©_NàèxüLô©G¬xqŒ¢eŸj'x›§ØS"Ä„ø™íÝâVMˆÉQbJ ¦ù(¢B\,IÅä(¶0bJ ¦:ˆ)E’ŠÎBœD"ı$§¸¶¶þ¸qÛX _¸Í]›¿’5btgJ"ýÜ€_º3ÇŸÄIEND®B`‚pygtk2tutorial/figures/arrows.png0100644000117200001670000000623710050344475016365 0ustar finlayfcf‰PNG  IHDRI]8 pHYs  ÒÝ~ü QIDATxÚíOÇÇ9Wª´*ØiÂÑÄ»ã`7ܰ¥¸QìÇ)±’*®’ª¸©”HMÃÅqÝÖ?R)5¸…;z{w‘Òø/1©d8þ޾™7ûvvvnonoï8·;zZ{³³só™ï›7³khi 'íÁb±XKLýŒÔ_²'æ.3»™SÞ“Ñ—¯P]Ëã”à«îMkkk7>+€]ÿl3Žý™ÙÍ›"C?~~KØÛk˜¹þ×UöãÝÂÝ/¸ýí¡Èp»ó¥Ænýýáí…Ø­ûž±œ_½½Tøb±pw±pì7çÿ¹ÁlyS±{ivrá_óÜÎ_œÖ}ÅíÝN¥R ÐÛ‚v}€”LΛ–ï¤Û—jÙ·ØòÄ"dö~?MöD›cû~(lïS©½ñ¥¶Ž4ÚþçkëL·>Ÿ‚#³fñnfí/¤âGÒÂŽÙv|©ý¥T¼?}h`¥³?Ýu2Û9hÁ‘Ùd§…=cÍ‘½øs0«­kŠ÷Ã*~µõõõB¡`Ò †ÅjIÐ8Î^›Q%“IEREPÅë« ÒÞeŽ*ÕÂñ|÷{KéÉ6q$HŒS<-C:ð¬é]i‚´¿[@6?zA´ÌŽý+ ¬ëÄò¡“)AèdöùaÀ“·!e:ÏØœO"/AÊõeÇ£ç,°Öî è‡õõÿÀ—KÎÍbÆß°õUÈÌ$¯š”ÇK°ëôõÐ]T`0XÌTºÃ«à »¹’’Ä´"‹éɧÒqj§ªgS²˜ãbjÿq 9Ŭ §öãUÇOR 9uÌ>™=l‹‰£rÄtxDˆ©7‘%N©ï¬EœÐN¼–‹÷Lâ÷‚~‘}‘ߌðm»Ž.©˜ ßñ>P™wè.*°ÙÙY“ivunæOY#·¯5GptBIO3H¤'Åã1ëZbÆ!=Ó“¶!¹ÄÔÞ—âbböÌ ULäî:OYIˆ -‘w×÷J%%AʽNÂ~iuôNɽ/|‘¯·£’ò%þ)ð%à5À¦ÑHᎪøüöC𙡧…Óƒ2ûã*'gZrÏLñ#Kš™IpZ!19œ~f!'¥UòÌÔû —ÑÙ,qb¸˜@Iòȉ¬B³×’k˜ÌLÞÞ¯x•Üû˜1¿ËÕ¹O5s˜|L Ã9™»UàzZá„£õœ8jžA°) =Þñeˆ œ™i` ‰ BŠ :G˜¤pz £ƒ?¢’S¾ övp…­­}+‚Ž»…ý6§—YqpF(°b¤n8¹ØñˆtäœÈ}#'È“˜XÞ†ùCgrÜõ‰ØËsg˜Øç³$&pz/]`eú_ÏÓìK 9QøÞÑW_`/‘i`åÏF§Ìæ0(K%!#Œ#lN,ÞëI#$îôV°c¸Ó[yîôXF8=èñm,oÏLŠÓ ‘¤PF%rz¶˜@C0PL@K@*í ¾~›U8t){êkè]á]×V bD¯këzC0TF.LÑ<‰Rø¿@ s€‘»#Hmvwù1GO2$ˆ = ª| ÈvAÂŒâñ”ˆŠ ÙN/ƒêŸÊŠÌ%›Ó»Y„Ç‘ËÌè{‘ ’WZUó–ôW²¡ýŸ»à¾ÌžêjE¯zçËpjíNÑ̤ ¥É Æ5@ê%¹c3”=4œC`$&ŒÅ‰“3?½jÙqÄöÀx®<+8•Ää$<Þ› ‚ü0ê©Äð ÿ*‡œN¿Ç>¹œZø€•t.ÑË,D`²4}îâRØ:Oæ §ÀâÝKñn±`‚Þw"=Ž9bb0øšé°gfÂi V¸Šžt4ë}5`–¢pÜ>'.¦)£Õç$2€jô}fŠÂüaèÀ•Wd5+ŒU·ÊÆbÓ;óé‰ða›;½% ÇIL:Hî™)‘—Ã< úÎeAO,Ï–M9=° 6çQ˜wâ vùÐ[– }&ÇÃ>=ýëŠéeàô«vôJft:;6íÃ%-FUåbæpiƒŽ²ÀÌa8b· ò²‰³#…“Èp1‰pL£ª¹"† &1?IbBH%wਤ'ä-'1]ÉN;+¹®Á §+·K5†|æ—” ë“I±Ö¨¶(˜èï.\z?ÍpN9œ“h£ˆ6ô ·Ãµ™w‡Ï *µÓVU 0Ÿ8°&¿y¡í (‘|êÓÞá©ý½Eµ+¬ûj+Äû×Öì Sú·Æ)— aõ¯V¸+¤1ê­P‘Z“Îa團¬<Ã(Ü»3`ü6@aþµUÜ+Øe…ùüΣZV1k†9ŒÜÉc3‡™¬ý£DÜ: ðÀ¥ÁQb¹‰6@ ½[lyÿþý°v’P+¬e¦ìÖÛØ¥½Dz˜°Ë;æÛ->;¡P¡ò’¯áš,Ü ÿ86¬½®†Û)­/' ïùªÂúÝQ¿ÝztÚ!V¸›sXàÝú:íÕú;mÿ ŽmR`&ݼõŠžV¡ŽµØü+4ñ åP4HaØDlý‚”æyZp'ïj½Òto…æÉ§±&> ó6Ò§Bí7òIxë¦p‰µüo5à M~) ·BR ha-6˜òŪ}&b2£„ûŠR°Wó´e‚½•µË¯D©®)‹R,J°X”"`QŠ€ý«ö]â(5XÙ?å),r‰Qª3°(5Uª,JÍ–ä?Â{ ýRÒØc–l`±üûŠÎ/6ûó‘ÕÕ¼Ø|‹Esúã–þ š „Sj¿aIEND®B`‚pygtk2tutorial/figures/filelisting-gtm.png0100644000117200001670000012502710072461733020146 0ustar finlayfcf‰PNG  IHDR7¬þ“ͧ€IDATxÚí½?h\Çþ÷/È…ïBn±E I!ƒ ™ÜB†¸¸7ˆ¤ˆÀˆ¤ˆ…‹ØO ˸°‹û tS%%…±]é[ËE°SÜÀØ ä›"`A‹€U¸È/s_ßyÎg5;Gsöœ#­¤÷ <È{fÏÌ™¿Ÿ÷|fÎŽ5—Æÿ9Ólµ]Èß6B!„Bˆ#I«ýì…Ù¹*É2æ¥TÉ~ùšY}ðÞY¹qböÔï³sW{_\¾¿¥PáÁ7Ö*T¨P¡B… ÷+Ä~þcŸÀ†? ©Çd…>(ûåõs·oßœØXûï¯ÖÏm¬ÝýyýÜý­¯~ÛXkO~ýøþV{òÛgîou¿®=Ù½óéÎb÷ÎOovïôýÿ«{gsê—k½G›S›ŸoN=¼ò×]øðë‡W¶ïm÷¶ïýñÇã­~)5;÷έ¥q… *T¨P¡B… æ‡VJaQßœøâòÊõs·>[}°76üQH}û©»0TÿùO¿ˆ"1Ÿä7OfIú°=Iò>üáT–•_ÉŸÞì,öe™óá/×{ª“Rg?Ùýê»w‹_ižýäjonåÝ»ËgŠ_}û½Ý¯^hïõÕ·.]\ï^êÖwu寠«oœuW/o¿:ÝÙíêùùøÕÓ§ÏÏ/´®mïÏÕÿý_ƒ¯¾öÝ®žŸÿßÿµú`ðÕ…ÖnWßzðÕWŸÏ»:üwO.ï~õâꇱ«óÝøÕ——½úÑÔ͉âW_|j·«W{ñ«s+»]ýø¥âWO̾ðDÙ«Ÿ¾¿º4þéëëçb¶®êª®êª®ÖsÕÀn.4>c_9{2.¥N*dÖû^ØðG-uî†nêÛàJ©º‹ÍW¿WJ"ê(‹(wU"ª_U/ÀRDÔùùƒ%¢v—X{/¢N.ï—ˆ’ÄÒU]ÕU]­SD¹C.ƒg ,™˜]g¥Þ˜½‘1Ö†?j©R^D9gî°½)‚Í©_ÿU¯”ÞOU^Dm¬}ódgqýÜÝŸÛ“£#¢æV ¡µ¯~kO®Ÿûúqg±j‰µ¿"jÔüT»‹¨¼«» ¡½öb•Qõú©êQå$–D”®êª®êª®fWÝè=è*³sÌÎé—RûiÃç§>Ý9õût' gš„/<†3MÂò©óì6ÝØ³ÛÔSž·ÓXÿë%\VØS«›•” è/Ž™páæÔpR Sæá•ß;Û÷êQE%–ÍWQÉììĬßOå®fRÇæ!æv寭Ï6Öz\quûžk!Å_é=B*Ô!¢0ŽI½³øÓ›½G䡨ÄBD!È9äK¥ñÿóÎ͉ͩÿ»þðJøÔ®f¯öÊH,'VÛ“ìôݾçÊõÁåšÁ"Êç»çó_µˆÊßì7üU‰(möÓU]ÕU]ÕÕÝ®QÌG±¹ÛZ¹VJåÛðÕŠ(kÃç§>œˆÊ´C=©ÇDTz꥔3ï8˜•/¢l¤ˆ(ÚLpœk8)µ~ÎyQðüÐàöKDÞœpÞ§û[ß>Ó½cóÃß„û±Ùµóª/=gÖc¶öçÖ}²úàöíµ•×?ØX[h]ê.¯>¸õÙú9 úîÿï!-—Õð›ý-®$;‹Và\v’ ÝOÅS#Ь”êo-¡Ôq%³|æ‹Ëëç§vÝisÊ·“b"jå†+Oï†v­åæÄ—ßÝÿŸ|¹¡¶ßœõùßü܉ºÁù¯óÄTy¥SQºª«ºª«ºZì*#ÿÅÕÁshhx)•gÃ×!¢¬ ?œ‚ÈQùn˜QH}€”b¥œ aäg"EDÍ4_| )å3ñðÊðR Ó7«0U3³»ßOÅ'~E?3ý12¼×%3U‰o›¸½Ãêgþb ÛfŸD&¾!îM ™Ÿ»9³Æ§ØžüáT÷Ž7²YÊ6†óc¬>tO—çcÔQÿl –¼+A¹µ¾&¤ Ÿð¤>WbÈ›°” ¶”0pɧM ©J,d@¿”rÆnúf?¹|ú´ÏIøÔé'¦ì³ÏνýžÛlùÎ-_žÔ8)Ú6À·½6ÿzí„D”D”®êª®êª^;Á=ómø:D”µáË(ˆ¸jÀS6už½ZEêQ)Å+cP´òE¯,*¥0[1j1UÃ-jÖÓbM|kF³½ ùáLR'uÜö-·à|îï鎻31½_Â=þRÁœMÉ9gC×|÷BÛ=ËåÍ¥qJÞËçe ò¯qž7üK^F:‰BœŸíâ*÷Ä‹»'ß%ÝôÒëßzçJ†˜ÎwÔï³ålK‰ûÛü¸.ŸqNXïwBT„2ig®¼€ÉQx–ü³¿qv¡J‘t!„‡*|ꢯ°B×¶¿Ðµ1dÌÍ W›~óê[—ÎχRP¯Ðk'tbJWuUWuU¯°R*߆¯VDY>?õpC]Jê±½lES·Ï^•ˆ"õRÊ™n~—a^ѧË'/¢v&ïÂ?MÝÿ˜ÈýR µºR.‡ÎÛ`Í⸔ʄïîÃóúW(þ÷Wnçœïņ@{gšŸŸÇ4Ä‹æé2(?.ÝéŽóH8Ÿ; ãL@{2‡˜œk²ïÎw÷tousñ3ùqqÕŸÂrRÄu3ü?ý§}¸§»ƒ]NÞ¤•^VæˆÊ8ίâÊÁßÜ9VJËgÜé#[Î.Ïîóëx‰âö ¯>à)lºù¹ru”‰(÷ …6|~êþ@P±ÔÓDµú%ýÙ#Rêá•þ«J}¥Äp"*”Rhîü-OncØú9Öþù<4»ù<”Rl·Ã²[é²S@›S\ß!–ÞµâÎ…ùÁõÞgî‡Û íý9yeÅŸð-ïp÷ôÂ)ïžó]g܇¥çäâ áGÜý½âç»ÎË”‰I'¢ ƒ$«ó¤qžm·ß«v瑸éÆä¨½êÒ]}`뉘Ÿ[ñÌ„­ š“kƒžÚ=/´ˆ}7vg/Œ3qkÛ‰_SÙÙcùïO׉7$ô \¥\u+aÕ^ERæ_enðÕ…Vüª›Zv¿º~®ê«®w/VÞUwø¸èUÚR¹«n Ï»º±6èª~ºª«ºª«ºZõU¿Äù¿ÿkÐL‡Ëß™”ŠÛð+7>}ÝÍÚÅ!7'®à”w·áóS¥H8òP>õ:œ@9RÊ](ªbËd‚‡ï—RÎ vK˜7¾ÝÕAêÜöªð•s+n½ß¿ÑÎizî¶~.{ +WI©ÁùA–Äòž–án¼Ì ¼?&ŽxN$`pãÏaE߉‡´{*=ÎDeŸ‡ÂÏ¿¿/–3éèÞøëø.¹ KÉ]]}ÀæCï•bcdö*Ú“B|7Ì•ó\ù«¬Óø—Lø»9á¶äÝœ@|ò’ îvµ÷áÄÊ ¤ ½ÞHN—±Ï>5¥mŸ×†|—sk±«Ý;YÌ­¸m™ÖÇÈÖÁóó×¶—ÏàÇKÉ?’ÒÕ”jÃt¹Šˆ ¯:¡»_W½ÄtõâjWY")zÕùŸó¯â‰|Õ{8«½j}§Ã^uý%v•5ÔAWÝ «ºª«ºª«u\eéÖ/€î¼:;‡”Ê>ñR*φ/*$gç3»Ûð)©õƒU›zÏ>@JqÙ%ì»s'¢üË 3)eMÛ0äÙˆë½áª=‹Âi»É­ßÄwññ–8Y²±Æjñòwû†: èA"a÷ü„ç|¬1½rÙûþ­n™ØÃ˜¶ï ³güö9×Í‘á=Ý›÷œtÙyÏ0·¶lCÑbK³F¼Ó—^ð Tö±RB`ø«.WN\m¬Qò-þæ0%¦0BÎæŠ§Æ@ÇeËÄŸ£³§€xË Ã rÖ“é7Ô¹{ú7æÙ§v3ž×Âêj›nØbýU÷,¶u9I¹±Æ‹ÑíÖ>ï'ÜyÀôþÖ÷Ïyo••ˆ¨Áéz13zW]ý¾êž(vñ¹÷W]/Ë¿J‹öª“:E¯Ò÷Ë]u"*v•EœAW]ÔU]ÕU]ÕÕz®æÍÞÂtKºösìç|~8!‘ɉÝlø”Ô‹n&¬6õüZ ÷ìQ)Å£Ö±Ÿ2ÌÄ )…·apè¶?õñR¿•.»êL|g.;ctYs%ÝÐ[‚±Û®cíI÷2nLR‰ù[ØŽËO(¥®öܶ1k¬c"{¿ÿý¢î¼aó]g ;ÉçÍèö¤‹ïÅ€ëNé÷äsÞ­—’[{–,~î+%BŒ~$-s„"¯v·S†t︖fóKчnÍÆnüó›ôœÓ<¼C‘§vwFòÅÒ ¯rVÍ·WT{nͽ„ïºÁ”–æÚdÿk'²«ý!ßEÌÄ®–ùîà«~;è°Wý¿AWØe®2-ííUïy«úª“£±«ˆÕÝ®"±_e+`ñ«nÁBWuUWuUWË\u£÷ «X~ÑvçU+¥b6<–vQå7øínÃç§>œ„s¡®2©‡yÈ÷ƒ¥ˆ¨)å¾F{#¢¼)™I)Œ¼Xèß¶çÖïivagjd¿„`ðûþZÖ %Ì^m6c#™[9ÀSAL{ü ±üpÕnÌÞoÆJƒ?Ya= 6çäÊæ“ûgñû¯ÚˆÇî‰D‰•^,·ö©c!Ï‹¡–3ßz“üKÆm™»œ³÷7%Ýìíy«ìçö‰lº¾®I×K©,Ï;ïòÔ$ã|n÷·|®2CÜ—@öŠßÞ¼_®?´çµÂ«œX‹}w”¯f~ÈbW]›ßýêú¹ÑºÊ)ͪ¯2ª”¹Ê¯«ºª«ºª«£sÕÏ¡™%†^Jí§ 4SH)Ó½ÉÄ )…a´3t›£ÜZ¾“.þ”‹5ÑÂfW×ÕX~ø|õóüx‘óÃdï@«3WEKoùŒÛ èü$ƒs[U®Ü*øÞ_eõ½Î«.´r(fÛëÏ•®ú«nZ¥««ê¹ê2tUWuUWuõp]Í·s²0“RûgÃÍÔ£RŠpo2áOÎdRŠíjaˆ`uF,æÞ„±üØ—@pÖˆ pc?rëÞ 3lnÝwóï<ŠW×Ï骮…«î¼“®êª®êª®¥«ah¥Ô~ÙðG3õRŠ›²ã°ÞäíK¬”ZwF,ôÌ)øü˜{Æòã·oe[õ.®º÷Â)· *T¨P¡B… « ½”ÚOþh¦>@J-Ÿùpbi|ïC+¥3ñ?ÿ)T¨P¡B… *T¨07Ä~Þ_þh¦NØ'¥ÐXý» ³÷~ü!„bä±ã¹Pª„‡iuÊÒøÿþ¯‹«u„ø¯¬²én¬ý÷Wëç K©ðªB… *…±:»9¡V}°JXOªð°J©±döYJñݹ•WŸŸËï÷·¾~|K B¡B… ÷Ëì^}ðéë+7N.ÿí˳™Æxc†ø™¿N6fN̺ÏoN|qyõñ1hRö—+ܯ:µóxgñÛgÚ“±»µÚÏ^hµë¨Íý•R\]¹ñÑÔò™ýª£ü’Õ¿´|æäòó?ž\{âÉåÉŸ\¾9qýß%¥j$<´¯°w`’–”R¨P¡ÂQ3»Û“næêÒøµí«½îNuýÕoŸ¹¿ÅÖϹéω#³æ H©«½KÝ‹«aŒò”s’Ru?ûùùwûKÓÕ×åÍ‹«^†ýô¦ë‰ßóþÓKãáwùüXcüŸ>¾+¸¥qVO›Kn‡µœPÎ1±ÚJ*­vëíV{ù̇ýi)T¨Páa5»×Ïeþ¥p”Ž…¡Wjå†comˆiÈø¬xï…ÄLóŧfšn–<ÖãÌν||¦IœÐ¹¿õÕokÓS¿Ow¨Mjj¡õö{ -L|o:|ùÝú9|)'f'®Ÿ˜¥6Có·ªz¯VJ¥Ûççß¹u~ž«¶/g1§;S¿Nw¼7ÉÝÍ•Ø|7–: Ä¿¸:Xôæ |Y6]¬¯áž1ýžÔûtÇÕû±Æñ5¸§_FÏüØéõžÞ–*<RŠ.Á Î/¥X!³Ó9kiˆ¢ð»tK†û‹«Úçç æV^ûÇìÓû{n·8ßí,ºõT†?×ý Kn}®Ü=ÕL*TxØÍng3B2Vcrá­J—Rƒ D·ŽÎRš3@ñ­x¯¥”i½̳Ô2¸¿6]«Àìžï¾uÉÉ|#nVåsê´{çÇW:‹ÇÎp¹Ú‹yª­÷j¥TŠí±±v÷çµ0Ÿ”@l±8Åô_>ãrH|J¸¨”¢F.Ô²·Á2OrQû*ÿž¶Þ1úïàPønz½§·% ”B&ÙNÈ:GÊ?:•‹?¨˜Â­ƒv£‚Ý B‡d½¤Ør]Y¶Úƒ»±B… ÞW8C™•u·}r™qÅJy÷ÎOoúqu7)•É3î6ÈpÔ¼RŠ–º˜[9}zn…«Ô)ËŽamÚOœqß/ø.¾‚~–ù©Bó·Úz¯oƒ_Ìö`i€O—ˆòÒ"Ãm°ô;tvúv|êÙ©ª¢öUþ=±¾¼Ååî“RéõžÞ–4(,*¥ˆY>Ü7)Å' ­³Ÿ,´Xÿ`p‡‰_Óìœ{eåXW·ÊJ©EÙ/¥Ü.ä«=üW³sncCÒ¥ÕL*Tx4ßö†y„„Ñl·÷äK©…–34Y]ÝkÞ{)Å&.ÊœšÅçÀBç íš™ŸdÅÙþ–«M|ùr¢Úz¯VJ¥ÛX~¹ÁÁrÂ`X¯”óÕxáê[ùD¡”*c_…÷IJ 7î†R*½ÞÓÛ’F…éRj¬öMJ±¢‰¤±˜8÷·2×¹ÝX›°ËH)¿šâºz¸š¢P¡B…’R;GQg:»13dfßßN6ØèѼ÷RŠröàmOO÷J]h{¯"Í·Ì“ÀF2;SW[ïUI©¢¶‡ ÝÖµö$¾>†3ý­¿Ën…­JJ•·¯Â{ÚžÞÿ¢šì56H©ôzOoK¦K)×þ×ÏUî›”Š%à7f]šu2Ö2q£‡C@)…¨cM޵Dßi]ºEW†*T¨ð šÝŒÉ¼=Œ±·ß0r#!/à xÌã´Æ:ï‹û»4ïµ”âN[oRܤÏJeíÁž•²2oíÇ-˜ú×pÿjë½*)•n{7¿@úlw ¥}ÁjØí ~®ájlØÑj·Þnµ/®^ê^\%þêƒ/.¯>àÎÝ;?½Ù½ÞÓUÒÃ+|׿3žùœü÷Éåð¹ˆqsâÖg7'ÕÑÝŸ7Öfç^>>;×\zêµæñ3ñÆÌ±Æø?5æV^ûÇÜJú=mœ«½kÛW{é>É«½Ë›W{ñ©â«ß†*ŠN3” u1\Ç.!Äþ²rãÓ×Wn0ntïüøJÿˆ½}o»·}o¡uö“…ó áùùwÏfÏÝvg0Ú§Ì)Eó¿}ï÷Îö½ùîgç»Ì†¤µ|棩å3EŸ¥hù ³<ܸy‡O™t/…\þÜZÕ‡UCŸ˜ýÛ—'fcOފʧÕYüþ¹Î"ö v6ý¨Ú6 fí›bŠœN.,Rú©;a·'r}“'²ùÄš -É"½>5f™üKJU,¥ò¦‡¸‡*½(]Á-#-h Þu.ïÞ£_®õ1Hµ'¿}Æw’å3N,Ÿ¡q¸çZ}@ó"䮆Í+6ð=¼òðë‡Wø®–¬ÁÍ4_xb¦I7ŸérqõBÛ °ü´6§~ý׿ÔìÜ«ÏÏÎÙ)9ÿ[< eµ4þþÓKã܇²"ÿ %\NJåKТ¹n’+úÝòêþNÉBˆ2Ðs1éb`¾ûÖ¥ùîLóŧfšŒ0ŒŸýÆ Ÿ¸ï†áÜÊéÓs+˜2vÜàêæÔæçþ3aѧàÎÌ8dܳiýœ›ò‹k_~·±æŸÚ-V–iEåÒrí­Õ~öB«Í¢3Ÿ æOÌN\?1[m›?Ö8þñ±Fþ]ŠäÑRUza–m¿DÀ§¤‚-J«à‰¸£=kØ^Ÿ³Lþ%¥öÔ+UFJ1Íð-wšyí„–•^ñ“ ëgÈøè>Îõ|ÖWg¬Õñ9q2|‡Id­äËÿVÿS§–Õ(H©˜WjåÆÇ/­Ü`Xd {ûá¸Ø4ðb½sÈZjŠUkÖ0ÜøÞ 4±;È<bôaÑñ„¿C`gœá„Agñ‡SE G/]²±q8á4hv, ÎÏ¿sëü<#UÑgI)Ÿ¢1GMJ1sù‘ÜÍ•,V¦ˆ®2b,–Ô´Êlð‹É€ôVT>-ëK´öÍ>«X™Í-Ö‚½§µh·éuš/¥B°ÊH,FÚgÑ(_³åó/)U™Wª*)å›T±Iˆ+å[xlByø˜6XçØö>Ÿëtf¼d˜éaÇŽ¥ÅpÃw1åÃÍá·ÒŸú H)+qýª’+ÏáVìbC nn¦UÊŸmÕN¨Bˆ½‡Å/¿Q'3‰B€aïØ÷ìÊ7kÉáŠ>÷dµ˜Ì&Å}ÙhÉs…KoŒéÏ’^>é1GSJQì%a†M1埔JoEåÓ¢lôbKÒÜÁ.CÍ-Ë£v¹“8áÆ¹0­âR*óñÚC(e6È-´Þ~o¡Å}Š–@ñš­>ÿ’R#ç•Â/áÓJ}ƒM‘o¹«Ää[¶ó„ ؃“FvBõíÜÅüŽ#܆š‡+«ôœXöFJ…ÆéÚ˜UI)ëQd(±›s$¥„8¸°DÛÈm€Ý¼mg<ጡŒÕ̃F97b` pΖ»í&ϯÇF<;B¦?Kzù¤ÇM)eMö˜¡|¤Tz+*ŸK“ØNHz>ñ7²¶Z¾Íó ›Öð #Ÿ¸ÊƹXÿNJùåug-°ðÍ~,|rn—ZÒK hYU›I©ZÎJ…r«œWj§ÿ'þ­a¼Rv˜ëÿdYbsž‡Aƒ,bÌ‘d{Ê·lбõNÖ#ýë7vv¶º½R~­È ©„<]LJ1¼Rtu&ò:¤ ¢ü:¥Û¨#)%ÄÁ%ýEŒŸvµ›‘ì z¸ˆfbbgBxyfS‘…§lÄ´êìd«Î)Ïâ_˜´;È¿ô’M)-GKJ¥·¢ª$‹,1c²Û¶Ç©¤òmž«Ö?cSÇþ ·t–y®v-á¹-j1R>¡­›^åkv¸üKJøY©Lêä¿ÎR÷Y©¢rn¸A–)9ýÅée[s ~<{( ÃI¥*)ÅPÎ@†xcKRJˆƒB" ÃÆnF²3‚Š%Öqc#F ï5ÊND¤Ínn3Rü,„Û ÎYˆ´gqR3­|Ü_zI&)eçÖº¥T˜V=g¥R[Q}’öÏü%ïôÜÚM›á¶·|Šõ¸¢ÏžtJ‰Ï ®ØVÃô(_³Eó/)u¼R~õÎ »6Æd†æfE‡ÝßÙÿ?§ÅãoðÛù’†QRà·í¹fmý$±oõ—•Û%ìµÙDh__;šR ½ÿ%78b phÒNÛ±i†˜a>ýlì9ìdiy!çÊ<<óÞAq‰™qá UfF‰~sÐÉ)F¶•¤ÈÂMÑ5r»rlßÐÅ8oOI}–ôò)sô¥”ÝŠ†Ô´/ªVJ¥¤U‡”*ڊʧå ²7 “.ç‚úíÎHï)¹ÅNÀ®ó‡#2ˇ½-ýg§•þ\ö x~»¬[X±©ä XX¤ùïöL¯¯ô˜eò/)u`¼R¡Vfç+]Åÿ®”{Ó+‚áz!ƒ—=¹”þ»R£ ¥€.aߘÿ->ƒ‹ggýƒÎ6šRÊ>Ïnâg îØ›føAe?g6í‡Å6›°4ˆi]v¨ ï “TˆÃ$¥0;g?™AÂM¿~4pqòÓbs‘})Fd¾#ýwcÒŸERÊŽüv®´¾Ž¢RÊÎ×á6¶”´ŠJ)ì;ï3[ñ‰•ôåW*=-ļoÿΠçW›bï4Ë9=·Ô¦ÿ «,E¬DÛJci¥?á챤HÊ»?(åçêø]©2ù—”ªLJ ÇpRJV¼”‡²B1Ü\Æ’.ö•`ˆë‡Ý…”¢B2G?+%£sÌQ!„( ^J| ØZø7FçÕÒBHJIJ‰C" §3ô"!„B!)%„B!„’RB!„B!)%)%„B!„”’”B!„BHJIJ !„B!$¥$¥„B!„BRJ!„B!$¥$¥„B!„’R{ ¥6Ö¾y²÷h¬ |ˆj"ý<ÞÒS(·B!„âˆH)÷ÿÝBI©|îo}ýøþ–­—£ðÄlO~ód{Re.„BŒò¼)„¤Ô>K©ÐCU´@×Ïݾ½~nºsê÷éNc毓îÖ\jþ½¹4Ý™úuºƒ‰\_¥n¬ÝýycÍ÷Ã+u›õù^¾V»õv«}qõR÷âêÁ•R)õµ—e.„–•Ÿ¾¾rƒ±¢{çÇWºw†‹¹}o»·}o¡uö“…sáùùw/š«í{¿w¶ïÍwß8;ße6dFX>óÑÔò™òéVõÔÕÂýÓ÷Â\í]Þ¼ÚÛ/Á“³µV wçáìZm¦¹ôÔkÍ¥ÆLc¼1ƒíÔ½óÓ›U×rJ+u–çn»œøV™2·1±!é”À‰Ù¿}ybK£ÚÞW&­¢õUdLH¹_=ýˆJ©¼æ÷P¥¥+¸¥ñ±±¿4ÇÆ¨loX» Z½G¿\ë=º9që³›íÉoŸ©sµ¦Ì@6œ”â¹ìç¯<üúáb_ž©CÀA”R{YæBaG‰“Ë“ÿ>¹œo@¤Äœï¾ui¾;Ó|ñ©™&c8óW¾ 3h¦ùÂ3ML.RÄ0Z?ç¦üáÒ­ö©÷Rº„så~Q_~ÊI)g@“+Ú -anåôé¹ê±ÚZNk¥´F÷y’7î“R2|ksjóó?ÿ™ÐÆô>½l{?’¹Rmï+“VÑú*2&¤Æ…ž.¯TRŠnÀ·–Ï|8W̃+ ÷ˆ)„&Bó½¸z¡í<9Yãæþx½h^ȶٹWŸŸ#ŽÿÜÁÚ€¿OvrH*÷·¾úíþVJŠJ)ÛÍ|œëø8+7>~i寱Æñ5lŠ«¾¸Ü¿–òÔ~8põäòó?ž\æn­ö³Zm{Ïá¤Tù2'þy]D&åoWaí!)%„ˆÏnyŽQ…¿cDJL;‹•7AXFŒ™Ôççß¹u~ž‘³hºÕ>õ¨I—X‰…Ÿ§ÌwÕJ©ôí¬‡ƒYo8ß&`?0ÿVUËé­4v‡Îâ§:‹”ƒ_ؽCá”¶A(o´Ê?W,­2õ•ž«¢ù…ž~¤½RUI)ßhŠv'QŽ5Æÿy¬Aãàî@³°®îO|<< m|ÞYüþ¹ÎbJ7fhc ó§ä¡¨”¢A³ÖÈ0º9õë¿|Ép7»Î <''Âûç?5OÁw­`ãéÌÈÅá¤Tù2gúa…ï%eBùPÚü[\RJ‘¿ÌHÎrL¸æ]4&Æ“]ncÜcS ËIé9$-îFìU’ìâQJºu<õA”Réó]URªhŠvÞ¤üm{(Ú–`¡õö{ -¶¢UUËé­4f¿áä!qw¶âÊæ ËÒøûO/c)ÅîÍ`„»{´Š?WjZeê+=Wé1G§§Ë+U”ÂÇâÓJ}ßNÕ˜£›±ÚÑ?ðeYÿ »³ņc;¥ç¡èY)|M³s/Ÿ³’#f«¸TË{j&Ä OdC¦dvÐ'¥Ê—ùÆÚ—ßù!)6Ló×OÌJJ !bàÏ „DzL»›Íî| Œ®¡Y“¿ª»ìhŸžnO}¥Tú|—’ŸvÕ¿hбy“…BŒì"Þ×Z°C¬ð(_Ëé­4¼Šu„…Sd‰ÁÕ …3ä”j(/ýb´]X¤•"’‹>W™´Òë+=Wé1G§§ë¬ÔU9¯Tæ{Ùí[nxŠ5&ëÝmM5ëíçéyHóJ¥ÊH¦O|5t`ºDìþùOMGbHš[yís+aHç¬ê¬T™2·Rª_KJ !òH¥†ZJLæ/;‹ù3ÙRWè‡O1ãëÊnf±^ŽütýLTýSD)•>ßUå•*šbì)lütË Ïµ¬Ò{A~-§·ÒFsï¥1ÜBËÕÞµí«=»hƒ}+x`ªê}åÓJ©¯¢¹J‰™þZ—½ééòJUrVÊ5š¢oãÎ+U­Y_•W*}¿5Cß²+ù÷Ïj¿†á$_þº©¤”â ƒäÃþqÕ-l¥Åt “øÜn½¶ñÓ G¶ÅO;¸33ø=ÒÒu¦sO=úRÊZ|ž>ßU%¥Š¦«w¶{ù£»å1·ÉéÕ´Rû9^«P¾Ux¯ìÎ3`ñ%ûÝc÷\Ã¥•^_é¹J9:=]^© ¼R~uÁ‰(»6ÆÄÃÐÃJæ²ßÊY)×øüqLÎ)¹¡“}ÆáY©³Þ¿ád§ËxÐRóP•”²âsGLŸ ¯aHyj:¹ÅÇe;3‘{Æž‚ÔÓJ¬l™KJ !ê3ÖSÎëÆb2þØ×øWæ¸Ñµh~ü{ù2£‡y0|ÅN™tË?õèH)æÎŒ! ík˜Ò绪¤TÑÃYÏ/¡:Ó<ÿ Æþµ.&2#ÿMwåk9½•ú³a»¿ŸÐžj ŸÎ–>œA¯ÑÊÞªç7¸: gOå§•þ\éi•¯¯ô\¥Ç…ž“RuŒ!‡Ö+ªsöãö¿+åÞ…ÂJ†]ÛóoÏsÍ%å ~)f½}±unÆî’‡ª¤”í$t?h:[þ†óÅÑ¥’x BÿÒwZ)ÿ)ÂÕ²:Ê\RJ1šRй€q˜ñS#²h~Ò¦Lº‡IJ±ÄÏŒn‰Ó¾èÈÎ#)ó]URªhŠÖæ¡NÙ*–æËN¤üþRùZNo¥~–wqRòZÜÙZYœ …óaVÎÈ›pã\,­ôçJO«|}Õý»R£)¥Â«ECTÏ>K©áNJ !„B!އVJ !„B!„¤”¤”B!„BRJRJ!„B!)%)%„B!„”’”B!„BI)!„B!„”’”B!„BHJIJ !„B!$¥$¥„B!„’R’RB!„BqT¤ÔÆÚ7Oö„oÙPMD!„b7o© „¤Ô¡”Rîÿ»…’RB!„Ø/°CÚ“ß<Ùž}Ý Ìn{³‰µ½rÃÎ×ÅæÜô1\+ª»÷•oóô©Ù¹—ÏÎÙGŠ)rzoúuÑ;¤—@zÌéΩߧ;X¿¤ÎóbwIJí©”Ê›r⪪¤¬Ÿs™/¥z~¹æsÎ@ƒÃu¾9µùùæB‹n_ŰèîL'!ï×Bß…•R4š¬È†õr¤‹4YºÄ͉ëÜœ )ûn³?R*æ•Z¹ññK+7†È'¥ê‡¿bÃ:ݘ˜¬v\\½Ð¾¸ŠˆeÄš&”•X]ÇŽÝAæ£"n.ï4z¬7ÃŽ½Ì~¿@¶|Æ'¡p.õÌcciÙ`ó –ê9ý,ïÕíbb({êˆ9jR oƒŸY\Éc?¤ˆ®2b,߆ÉO«Ì¿X›,ÚŠö¾÷Ù\Í-ÖK¸ Îwi·éuº7ý:ÿé%P¾f±Ä$¥öAJ¥ø£ê“RtTºj>&¥0ÐqžñÀdP‡”ÂÅLǰ*ÿÉhI):ž™~ÇÉžáVÈb]·2ÓÃë±Æø?5ªÀ„’RUÞ˜c'B¶*ìÇÒlLö[ÇÝÊîÒøûO/§ÌEM®…ÖÛï-´ ‡½í³€›ÁW0bsÕoOÊrÊž:bަ”b–aóR{òÛgüÒj¾)ø¤Tz+ÚûÞÇØÿ2\nY®µË¯Ä 7Î…iíW¿Î¿Cz ¯Yg—R&,4®6øíƒ”JëRÞã” ‹4ˆAR*k:4)»:…¸B<ļFé÷æÔ¯ÿÚœbªužºF°4ëf£sVŠNHIÚ˜UI)jÄï v¥á’~!„H1zÏY«¶#<£1ßbF°£ÆÄÅÕKÝ‹«ŒTvf)crq¶<]ÈcÍ86Û›…ªðtD({êˆ9šR*\Ä kí(H©ôV´÷½¯L›çöÑ¿O\e©=U-‘”é×ùwH/¢eE*X_ì Â~†MRªö³R¡ÜªOJñ ÓžÝ<6HJ – ÜŸF:ý‹ÜW{×¶ý«&bÄŽ;W%¥üÚŒÂgš/>5ÓŒI)†3ŽfÒµ(‡:¤ ¢ò_È!)%„(oô ØnÑÀÖe?+¹sùã9³C“ Sž<°ÜV|!,­:gO”3fµ1c{.FAJÅEËÑ’R)­¨*¯TùÞ—ž[®ZÿŒM¥í|ën¿úuþÒK |Íò"7<Ï’RGÎ+e×?¼¶Îd@ºÂFNäïsÝmàæ¥ë´±·¸à crªOJŦRŠ|ú²ÊÖBÂA¼*)åߣèÄ[¸9SRJQÇú1Ø­Gù'£Òç…Xê˜Jì}ÈßP”ߟ…pGùíqó0ìçÝlUuÌý©÷ú¤¦íÞH©0­zÎJ¥¶¢Qè}é¹µ»“Â_âò>™b§˜êî×)wH/ò5[þ¬—¤Ô÷J…]ÔÆásÜÊt9«ÚÂðÛäïs͸ öhcˆõû²¿_Rʾƒ’áćí4Ö‰n€ñoŒÉ>·'£HË 9×u÷…wBˆ¢F_Ørã-&'ú'ïL`ä±è“²[!LÝ¿˜ÁoH²ü·¦Àʱ•LÌq¬7ç¿{-ý¥uÄ})e·¢±eѾ©Z)•’VRª|+ª¯÷ù3Û;EEJn±[ØŽË)G»À^›þ3HƒÓÚ›~]ôéõ•Ó¾Á{˜ ~eÎzIJx¯”Ån±³/C÷îKç¹êÿ])'l¸šß òn¦ÛØoLÙé9|{¾(%·Ec¦H)ÛýüÉ1'uü׈Í-±aOÂW½#\É«ÔKøk` |þMŒÙÐÞA&£üHîLR;úñ‰E¬Èúw“:“‚ß OƲ§À¾Åƒ/4¹RR·çR~«*…2¿$)•o(3ÙÔÖ×QTJY¯]¸-%­¢R*½G”ÿ]©:z_¬œÓsKmúß°ÊRdç‹m¥±´ö¦_½C¿+ÅF>{ )5Ü6EI©!¥Ôp•R¢Z¼”®Bq8æV<0xHxK0†¸~h^I)q Éë¬LŒÎ±B!„â Ã | ØZø7FçÕÒBHJIJ‰!ADáäe#^ä „B!$¥$¥„B!„’R’RB!„BI)I)!„B!„”B!„BI)I)!„B!„¤”¤”B!„BRJRJ!„B!)%)%„B!„GPJm¬}ódïÑXAø– ÕD„B!„GTJ¹ÿïJJ !„B”kª=ùÍ“íI•†”:rR*ôP>nNÜúìæD™˜ëçnß^?7Ý9õût§1ó×ÉÆ ñ›KÍ¿7—¦;S¿Nwîo}ýøþ–½[>'fÿöå‰Ù0óÝ·.ÍwóóéÊÜ—ÃÆÚ—ßm¬\~þǓ˙ÆxÞøüþÖW¿ù¼•É¡BÕZg?Yh1ÖÙ1<ÆÊO_÷Óg÷ίtïØ«ÌŒ½ŒÆÜycíîÏk6f÷ÎOovïÌν||v®¹ôÔk>>#¶5y·ïýÞÙ¾7ß}ãì|—Ù§Õn½Ýj/ŸùhjùLѧînùO]wÌòpÿô½0W{—7¯ööKðäãl­ÕÃÝ9¥…j3Û=ßfl[Åò¡%W[Ë)­+(¿¬øVú“æç–r`Ä žŸ÷îùù¢¥šŸVþsU[_écBÝ£‡¤ÔR*¯¡Ä=T{)¥\Ñ/ý¥96FsqEöðÊ<Þråð˵Þ#¾Õžüö?ù¥§ë<ëç\ÑçK)Rç+ ¼mNm~¾9…Ðê,~ÿ\gq¸’BˆÃÇò™'–Ï0BzCsç’“3ôäòä¿O.ÇÌ/ÿ¿»`”cÐØ˜ÇÇ?>ÖèçÝ·È•á2Ó|቙&FébÊÄfŠEï–òÔõÅÜé2:ó`}ù)'¥œ]A®h3´Õ¹•Ó§çV¨Çjk9­•º<ðy’7î“’bJnYæži¾øÔLóᕇ_{;0_L—–ý[ΆÕÖWú˜Pßè!)U£Wj¥M–Ï™ÞêùÖìÜ«ÏûuJ/ÛK)¦í¬"ûc¬)D!öׄI)­?v+Å,À¼¥ÆG¸È…ñAZŒê1#øüü;·ÎÏcÖ¤[ŒÒÖÂSï–þÔuÄ<ˆR “ÒÃr°f=ƫݖ_~^.š"w>Öÿç±åoÛmµhé-´Þ~o¡E ¯ª–˵y×ûð ò¸;[q•ž[îfÖ)I¶·…¥W&-û9^ ¥ñ÷Ÿ^O±ëŠÖWzi×1zHJ ¯²ÄçöñVñ:†¼˜Lbµ)æÂ³Rä¦ÌªÃ(âŠnï¼es(„GGJ±G < ïuÁ:1;qýÄ,§¡B3š=¬#Ÿ¸'Ëg˜#Ö€ ó̼rv"4óï–þÔuÄ<ˆRŠ; Œ©Ybp#žËXvÕ¿hŠþI3Ñ´=Œìôr£µÐz­‰_¾–Ë´y$=.å)Òs‹}åS8ËÐî¼|ÔB(0ÊŒ$´+–`.®^ê^\%•áDo¬¾ÒK»ŽÑCRªö³R¡ÜÚo¯Ô¯ÿÚ+¯”téBh}ëbÎ_ß²;eé<4îò9Bˆ£ ¥Ò_Tš§ÎWØWø0>Ûµ^??:³ #˜s*¾ì̸"^©Ýï–þbæ¦jcæ—ä(K) GŒÝ¹•×þ1·†)§ÚÒçå¢)ÆžÂÆO)1êϵ‹ªê/õy,"J#åäRÑÜZkÐ.L“C¿ô¼s³nµ%sµwmûj‹.½…Çê«hiW;zìMO—WjDÎJ¹f7Üû|ª’RtZ¿ºé&×)ÕßÄYMÙ¹›YRJ!bRÊŽÀaèÇáÝ·Ü„ç쎃p¿ƒ_ßuñÙ ?ŸàN¹9+•z·´§v9¯:æþÔ{Q)em>÷kö®Öò½UYESŒÕ;Û½8ë’Ò’ý)¾lëZµýe¸6'*<‘Ozn‘Iá¹t?_•/™˜-W¦¾ÒK»êÑc/Wj$¼R~%À‰(»ºF‡aðBÒàF·»á«’Ra7¶qøœw 2=Û!•áž·ÍØÝ±’RB‘"¥òã‡ghíü1òìŒ)Æ :[’¬Ø`s ïß–™)Œÿ¬ƒßðwK?9\GÌý’R¼ „­òxüFú̬¤$9?C Zã•§«ö sÑC#KÓܾxIÊk\L ú¢ï”+ZËé­ÔŸ Ûýý„öTÛp¹eQÛ¾¨o µPmZ¶î¸Šg)ÜaT¾¾ÒK{oFI©õJÅ`2KÂÐ÷ì*îÿí&÷ÎÖBìšDº£Ó6¬|îÝðeè~‰ëäaÞ¸6ßár(„‡?ff¿ÈøÉ'ù†oÜØâÝhî„H©A[kœlÃ<"&泉½ó(ü®ÔQ–RÈ]{Ùú­ùN›ÁصmS›×îW%¥Š¦h­ÞøG[Mó€e'a†û¥£¢µœÞJYJ&NÚrÉËgwùßðt)ÒcçÞˤÅóú‘ÁÕçÙRäYÑúªûw¥$¥j”RÃQTJ !„B!އVJ !„B!„¤”¤”B!„BRJRJ!„B!)%)%„B!„”’”B!„BI)!„B!„”’”B!„BHJIJ !„B!$¥$¥„B!„’R’RB!„BqT¤ÔÆÚ7Oö„oÙPMD!„b7o© „¤Ô¡”Rîÿ»…’RB!„Ø/°CÚ“ß<Ùž]™ûrØXûò»µ“ËÏÿxr¹1ÓïÏŸßßúê·û[á}ŠæpÐ`íî<Ü`]t ßX»ûóÆšk²¯ ×µÊßAq8`T_hýd¡ÅXgÇpËö½ß;Û÷æ»oœï2þ·Ú­·[íå3M-Ÿ±1™#{¹3#Oú<\>SHËÊO_÷FC÷ίtïìeÌòpÿô½0W{—7¯ölM•)óòB.ņ)?ÃÖÑ#ʧÕYüþ¹ÎâÉåÉ{ «ÆZAUµùîŸÞìÞ™{ùøì\sé©×|/&Å9þ\écÅ 'Úîù'²ùÄå)†+:Æ:I©Ú¥TÞD÷Pí¥”rE¿4>6ö—æØÉâÎiÞ{ô˵Þ#¾Õžüöß͆þl ¬ŸsEŸ/¥HO˜–èämsjóóÍ)„ƒQU´åᕇ_?¼2Ü4Sô»å§´ý…£Ãò™'–Ï0Bú‘aç’`XÌ4_xb¦‰ƒiŽ©aÇjole[ª0Ê1w±ˆû0VÛp¸|¦þ,ÖÇÍ—=uÄ¡rt¤T=¢\Z®µÚÏ^hµW|qyõŸœŸ÷îùù³×w[ê-šÛcãkôçߥHnÃ^\¦ ÓÇŠ˜8¤UðDÜgnåôé¹zÖp%PÇX')µÏ^©ý•RLi|N÷¨{øã[³s¯>ïWDBÿ‰•R4å¬"‹xZª’R1¯ÔÊ_Z¹ÁÀD'ä‰ü€Xl §c“õ‹«ÚW¬‹X„ï‡Z×ÕcwA)„ˆ=Œ«1cúüü;·ÎÏ3¶ÄW©ÝX“R¡p.ŸiKWÅž…¥:Æp»lÊž:bŽš”ÂÛàç·´ÊL"ºÊˆ±XSÒ*³Á¯¾‘ž–õ%zÁ°3v™8ÌUÑÜb«„KÏ|—v›^§E{kl¬HçæÄõnNÐ>‹–@}c¤Ô>x¥FGJùF9ü„7œ”bø Ó²Æ“Rˆ\ºÄGÀ0Eí¯”¢+Zç×uœìnÍ,ÖÉq43±1àkŒÿóX£Ú)MqÔ¤”ß¼Ï?ÃÍz«ì˜Æ˜Ì»-<¶Á5à¥ñ÷Ÿ^O·‡“RéÏÂU¿=)K+”=uÄM)ÅœB=²%Å”?|Rªx>-Ê6L‹¿}É8;ÍæÝ.Ãå–ÅY»ØJœpã\˜VñÞš:V¤³Ðzû½…÷)Zõu’RGÚ+…,ñ¹-öœ”ÝØÅN Útç=NÙ`M3$¥²MC·kfˆ+Œ]Ñ)“Ãt)e¡[ò6fURŠÒð{…]gÆ@I¿ƒBR*4zXgQᘆbüÁ+ι‹ð\£fÇÅÕKÝ‹«Œ`v´¯VJ¥? ËRáéˆPöÔs4¥”5Ùcuq¤TÑQ&-ìåÛ<Ÿ°Ó‡-…È'®²¨ Œ2 écEZïvÏBÎí¢Lz Ô7ÖIJíÛY©Pní·Wê×í•WÊ6D¦X»m”,]H®ÛŠžC¿Zã5™æ‹OÍ4cRŠŽÃšt6òP‡”DT¾””BYƒÏƨA+µn»rþ<¯Jy…ÏÕÞµí«=Fì:¤Tʳ¤¿˜¹©Ú˜¡\)-GKJ•ïE[5Ë œÿÁd·m•SIeÚ¼õÄZÿŒMW/„vT™ç*3VXè5”Oh©¦—À^Žu’RGꬔk”áû|öRJ±ã&EÒu?’Æî-“ÃACÕN)…Ã×ç3[ ‡õª¤”‡¡JoáÆHI)!DQ£‡ <ñóîø{þùðôBѱº*)•þ,Ì;aØ?ª»ÝUÇÜŸz¯OJY+¢n)¦UÏY©²=¢|«¶ÿò_¤çÖî w!yŸÌÌs¥6>ûb[ ÓK`/Ç:I©#ä•ò+…NDÙÕ5¤ªIƒÇÆî­JJ…‡Ãç8»ìZ+¾#»w¶n)e_†A®81űE;qÆzb†]ü;d²ÏíÉ(ÒòBÎuæð=Bá„b·÷•¹ÕV+3Y£½ÕŠÑ˜M/álÅæ ‹Aù+ßU¼Á/õYb©§œ®#æèK)»-‹öuGÕJ©”´êRå[QÑ´ü %×§0÷I—sAýÖ'´wŠŠ”Üb¥°É–³‹v €5ýg§•þ\écÅ ‘À+[œÃLþ[@Ó뫎±NRêx¥bÐmR†TÔ6{gû»É½«ˆ=’˜¾MÂ6ú|Û?—¡{§ªó\…yãjص†ËaŠ”²ÒŸÚrR‡Nˆ×ˆM,±žOTösD#ÏHP&á/q1ú· fƒ]x‘BMü˜™ýN #ŸX©“þ[+ln±¡1/Â7ÜÁ¾ÝÓ04ÎÒó™B™_’”Ê7”™wìYeëë(*¥¬×.ÜÆ–’VQ)UG(ŸþßSœAϯ6ÅN€‡åœž[jÓÿ†U–"6^h­…i¥?WúXbO.¥ü6]¿+U&ÿ’R•I©á(*¥DÝx)5*.]!„â Τ,Èâ!áÅWâúYy!$¥Ä!#sµ³V1: …Bˆƒ;&ð`káßWK !)%)%*…Û—­z‘ƒB!„”’”B!„BHJIJ !„B!$¥$¥„B!„BRJ!„B!$¥„B!„BRJRJ!„B!)%)%„B!„”’”B!„BˆC/¥6Ö¾y²÷h¬ |ˆj"B!„Bˆ#*¥Üÿw %¥„B!Ê€5ÕžüæÉö¤JCHJ9)z¨ŠƒøKslìäòä¿O.ßßúúñý­´oeœ˜ýÛ—'fcé^í]Þ¼Ú#fgñ‡SÅ¢9lµŸ½ÐjÏwߺ4ßu%ÜÿÔö)\>¼»ÿ±Æø?5lÝUõŒBqpY?wûöú¹…ÖÙOZŒuá\Û÷~ïlß›ï¾qv¾Û˜ùëdc¦Õn½Ýj/ŸùhjùÌp1»w~z³{gvîåã³sÍ¥§^k.5f㙓ËÏÿxrÙš¼é1SHÏ¡e寧¯{£¡{çÇWºwö2fy¸ú^fðý<ù8[kõÁpw޵ðÝÚÌvÏ·Û§;S¿NwhŸÕÖrJ+Å.Ê/+¾•þ¤ù¹¥1šKÍ¿ÿùï?áùùw/Zªùiå?WµõUÇø¶_=ýˆJ©¼†÷P>nNÜúìæ„ý|sê×mNÍνúüì\ØÙbßJãñŸÍ—ðüü;·âÝ,L‹ÆÚžüö™öäLó…'fštÛ­”Z>óáÄ F|ë«ßîo'&¥†}F!„8Ø0rn¬}ùÝÆš74ݘÆÄt`4ÆLa4ƘX?ç¦É¢15Ž|¬a?aî WÌEc¦žC?8ã›eÇ|c¨Ž˜{#]Fg¬/?夔³IÈm†8·rúôÜ õXm-§µR—>CòÆ}RRLÉ-KÛ3ÍŸši>¼òðk·„MòÄäpiÙÏ7§6?ÿóŸ «­¯:Æ·QèéòJÕ.¥€Õ„JUɦssâú7'hd¾AË!ß³„ð³ßš[yís+'f'®òÑmˆ#)%„»š;¥>ÿ˜Ê2†EzL>a^è,~ÿ\ÿž¾‹|*3Ÿ¢9ì=úåZï÷çï˜1TGÌÑ‘.± ?go!—Ý%«¾¸œæG*:/§§è=Zîs|°X>ÃyT ‡åÚªj¹h+ aåàO^=¦ä“þeÒ²wHNe꫾ñmzú‘öJÕ-¥' @ˆp()#3؆A“µ*ÿÉ0CçÅÕKÝ‹«L¨ö[v=•'²ÝîHJ !DQ)å}ûÖzÃÅ86ù¤Çä6½`Î^\½Ð¾¸JœpNzÌÝÖÂSsÈU¿é1+“Ъ#æA”R˜ì”žë1ë1^Ãúe¤Tѹ3˲”¿mlv-Zz ­·ß[hMwNý>Ý©ª–‹ö£~œÅÅBö ‰»³Wé¹µvÞ`J’=Maé•IË~Žhiüý§—Æ$eZ{X_uŒo£ÓÓ啪XJÅ ýVì›ývÁÇÿoÐu•·4n›oÑ¡“®kËŸ¿(™Pé$6>ÎhúáÎJåŸòBˆÃ-¥bKQþª3¡¼1šÓûÜ'ÖÎÃý^·›À+é1óIÏ!; Âó¡1TG̃(¥¸r—ú²!V’¸ŒÅbWý‹¦èŸtç’nh?¤µ%×Zh“ÖÄ/_ËEû‘‹Žåì´…ïÔÜ"ø|åÆÇ/ùRÅËG-ä÷Ä¢%C»ÚX»ûóÆš_Lw© 'zcõUÇø6:=]g¥x¨ªÛàǺ…sˆ³çµÌÊåjïÚ¶ÕDŒØ $vóJ¹•HºA(¥|gf¡ëÌ8UñSåK)y¥„"î•ÊÆÏAk±nìõ«¶©1¹j×zýüèÌ&Œ`Ì‘ô˜)Ϙ’Ãô3`ÞU3¶wcô¥†#Æ.›êÃ0ô“”±=Ц{ ?¥Ä¨#Ø6‡Ò³f¥}AõbWž.ňLŸ—‹¦Á˜þV´ÇMR^àbbÐ}§\ÑZNo¥þlØîï'´§Ú†Ëmxºo µPmZ¶î¸Šg)Å ]´¾ªßF§§Ë+µGoðšĪçh4îü_¢°o€ Ýî!tN¶ö…¿J)þF°Ù\æ¬ÔþNrBQŒùÊŒuˆ>±¦L¿»‚lÃ<"&æ+ëvÔM™¶?Ì/Ãe)…ˆÅ0µ›çCó6ƒ=@Ù2›³äZ•”*š"wf1—¼ Í–„î—ŽŠÖrz+å,º})×nË%»¿>.oœ•Eé‘"½2-ž×÷wWk,—§È³¢õU÷ïJIJÕ(¥†£¨”B!„B­”B!„BI)I)!„B!„¤”¤”B!„BRJRJ!„B!)%)%„B!„’RB!„B!)%)%„B!„”’”B!„BHJIJ !„B!$¥$¥„B!„â¨H©µožì=+ß²¡šˆB!Än<ÞRI©C)¥Üÿw %¥„B±_`‡´'¿y²=y°r~ëëÇ÷·¬å&„¤Ô•R¡‡ªè 8ˆ¿4ÇÆN.Oþûä2ÃMÚ·2NÌþí˳±t¯ö.o^í³³øÃ©ÎbѶÚÏ^hµç»o]šïºîjû® ^‰ÝÿXcüŸÇá`Zþý`ýÕoÃÖEúµ»?o¬å?oÝwB†)v·ý­vëíV›øÛ÷~ïlß›ï¾qv¾Û˜ùëdc†«Ëg>šZ>cï¼}o»·}o¡uö“…Vs©ù÷?ÿý'}Ý Ý;?¾O·Ž˜åáþé{a˜Áí\Ú {)änNÜúìæDÝ3ìú¹Û·×ÏÑzi±§® —Vgñûç:‹Xk´ÿ“ËÏÿxr9´‹Ê·yúÔìÜËÇgçl#Å9þ\)#@ü‰Š EF°Ô˜eò/)U±”Š“UÃI©pÚœúõ_›S³s¯>?;g§ÌòƒÎt7áùùwnõO¢ùiєۓß>Óžœi¾ðÄL“fj'+¥–Ï|81hðò"ÇʼnI©aŸ1ãᕇ_?¼2Ü4Sô»å§´ý…£¥QÃpnåô鹌 bó7£1F 115ÖϹiÒÇt‹_3ÍŸši2¾ù´v7Þ,Ë6_a¾3kع€Qšt‰O1.‹>yú³Xsœ´òeO1GA¨)…-±±öåwkþ©Q¾ ›–kí,+¯>øâòê>aaâÄìÄõÝ–z‹æöXãøÇÇýùw)’[Û7Ë—aÊ/ÓG†"#XjÌ2ù—”ÚS¯T}R \žW Tª¼hj4å›×?¸9AôͽXùž%„ŸýÖÜÊkÿ˜[‰ (t*âÔ'¥b^©•¿´rƒ‰ ƒù±Ø@OÇ&&õuqõBûâ*뚬‹lNm~¾9ekÁ—Œëê±;ȨBøõo·ƒÓ !„;fL³LÆØÂøSF0j¥"Ì,,“YºJ}?Ëÿr­÷ˆ1œ¿cOWGÌQ“Rxü<âJÞÎÈù¢«Œ‹å0%­2üb2 h+*“–õ%Z ÊæŸU¬LŠæ[ÅÞÓÚ*´Ûô:Í—ReF€ô‘!½Ê×lùüKJU敪[JÑ!ñù`j‡[/ÊÈ \Ã4hë¡òŸ 3”_\½Ô½¸J'·ß²+<‘í'fÿöå‰Ù0Ôi~>mo¬}ùÝÆÚÉåç<¹Ü˜iŒ÷çÏïo}õ[Z»JÉaUm8?­j[cZqOA[ŠÝÿXcüŸÇvô«êûÇÆ»?o¬åç¤î;5èã ­³Ÿ,´¨©°%Ãö½ß;Û÷æ»oœï20ò,ŸùhjùLÑ{nßÛîù»5—žz­¹D/fT G¼Îâ÷ÏuékĤ‡­:…ôg±¬Üøôuo40ªïeÌò”± ö^ðäãl­ÕÃÝ9ÖÂwk3ÅZlùZNi¥´ÿË'ýIósK9л™m ÏÏ¿{÷ü|ÑRÍO+ÿ¹ª­¯ô1¡îÑCRjH)•×Pâª2ƒTŠLªVJ…ŸoNýú¯Í©Ù¹WŸŸ »zø-šo{òÛgÚ“3Íž˜iÒ1l£Œ¥õðÊï^aðõeèL®þgzüçàJ—#c•†NUw8jPïô_z; Ó¶„™B[˜°=7åž´OZw£ÍÏ­œ>=·‚d²}E˜øÓíÄìÄõ4¡>ܳø^àZ¹Ê7†êˆ¹7Ò¥ª^<Êù)'¥Ò[l5µœÖJ]ø< É÷II1%·,ÌÍ4_|j¦‰eåó'&‡KË~ÎÌnÃjë+}L¨oô”ªÑ+uX¥ o0òÒ¿Eóe¥C6í[®kù8×?èC ¹s•Žá;a±RŠ=WÑrF>;ç%VæEW™çnÂ@Òð¤Üã2f@”‘R~ f+#T\t0ßcRŠÚÁSGü•¿´rƒZÞ)UUŽQ¾5¦÷ë=°>F¦ »Ò¶_^)¶˜"­,L1ìDy)å=“ˆ<À;—‘ÊK©…ÖÛï-´¨qoºQ.L=i,¾žú,\õ³ü‡ÆP1¢”Âd§ôl`Öc¼¦lÈLUЦÈýèáÊß¶kϤ¶Øòµ\¦Ç1_° 7ÈCâîlÅUzní,€MBI²##,½2iÙÏñ-¿ÿôÒxÊ,_´¾ÒK»ŽÑCRê{¥R(wVÊA÷.Ÿtf[#±T01OCù¬ò´ÿ¿‰‚Mn¶Ë•®aÍÐlpdz oåïÆD–øR}¼U¼uåžùé÷89S>Öºú§a—7/ï‘p%ƒ¸¢mÄüuÃåp¸6\4­2­q¸þB©"M™fl| 0•†;+•Ê+m3óÍR±-+’RuH©˜öW]?]M—R܇utk0Ñ‹Ãm¿ö›‹œI¤{xþ!4†êˆy¥w Ÿ²wÀ†ŒivoÅpóˆ]õ/šbLx‡£_Z[ÜbË×r™Ç|„µ“¶l—š[{D;Áî¼|ÔB(0†Kˋ׮8Žá—]*ÉÞX}¥—v£‡¤Tíg¥B¹uX6ø! œ;ž·Ã®²» ¶„4í¶®X-XìÞhZ…ÝÌV­Wªª6\gkLí/ÜÍO‡l#t%‰(EÜæK©½9+…ˆÊ—g’Rõx¥²Ú´ëZN¯cKE±1sŠ8øý‹y2ÏjšWj÷gI_Ld¤ª6fº‡mÔ¤†#Æ.[‚Ã0vv¸Q¥hб§°ñÓçâ°Å¦¿Ø#¿–‡ëqvÉ)åäRÑÜZÛÀ.SZÿpl§LU%Ãühg±2õU´´«=ö¦§Ë+uÈÏJÑÕéö1ížöƒîd7V7ì8ÐìÖ®bCk`á{ÿ†{®rRÊÅLywM¹³Rn î NUI)êƒ 9”"¥BW{¸½Ú³ReÚðÞ´Æ”þB©21ð,x¢ìé©ý•Rþmn"D¾†[@%¥ê“RlщŸp-j¸³Rˆv»(»ñ/}+rú³ÐkÂÐ÷Vµ]Ÿ­:æÁðJÙ™‚Ïýš½uó½UÍ#ESÌßBœÿjŸô[¾–‡ëqx¢bcc| 25·¶ÇÙSÊ6~¾„+_2±™½L}¥—vÕ£‡¼RòJUôÚ ¿Ìu »Òœ:…ÆÊ>]Û¥‹v˜ht³XðÝT±¾ ážkô¥”_ûÉ^ÃáÎÉt…ñMÉØw!V%¥ÂÛÆás¶÷Ðì$ʧ(ÜWÇk'ÒÛð^¶ÆôþbKž-.~7|&«•R˜,á& .+ûÜžŒâYh‡”v¸ÂÞA”—RàßÜ• ´Ökóß½ÞÓÂvõˆy”ÿ†.o¢¹6ACNŠnÊ*ó,ö‰RÄ[1÷KJÙ –xì‹^loe ®5^yºjO´M14‚íxbOŠ2I‹µØòµœÞJýÙ°Ý’ì©¶árž ÆC-T›–­;®² î7)__饽7£‡¤”¼REïF£´ï£‹ Kº+[•bïyK7ìèù¾»Á,Ü*Pô¹öRJÅOŽeïšËÏ+:ì#ïÿí&gʳúeW¡Ò]Ûv(É÷8Ù oöeèÖsæ«á€U&‡UµáXZå[ãpýÅ–¼Év ,sV*Vžá0ò˜Ú¤íQûáoŽqÀ¿ï1Ëgx ¤||Ê~5ŽÒã“þ3K©¿¦’rO{® åwc0ݸ& ¿l{§ån&ø0¿ s”¥=ΞGµçZ­ùNý2šQ¶„ŒE)[1‹ÎŒé)Ú9ÿ6/Hó€k±åk9½•úq/{¥PQ¿\yãæÿ‹Ž.EäMìŒq™´x^ßë]­±t’"ÏŠÖWÝ¿+%)U£”Ž2RJ!„Bq¸9´RJ!„B!$¥$¥„B!„’R’RB!„BI)I)!„B!„¤”¤”B!„BHJ !„B!„¤”¤”B!„BRJRJ!„B!)%)%„B!„”’”B!„Bˆ£"¥6Ö¾y²÷h¬ |ˆj"B!„»ñxKe $¥¥”rÿß-””B!Ä~ÒžüæÉöäÁÊùý­¯ßß²–›’RGTJ…ª¢ƒà͉[ŸÝœÈÓ½óã+Ý;ö“ùî[—æ»ùßrÏîóKk¸»m¬}ùÝÆÚÉåç<¹Ü˜iŒ7fˆÓ\jþ½¹Äç÷·¾úíþ9O÷ò]í]Þ¼Ú óÀçÄé,þpª³X¦T‹Æ4 ¸§nÐ"„Ø/³;†ÙYüþ¹ÎâÉåÉûžQÝΰ}o»·}o¡uö“…ã?áùùw/šÃí{¿w¶ïÍwß8;ßmÌüu²1Ój·Þnµ—Ï|4µ|&ö­•Ÿ¾î;WîMÌò”™%ù„9e¿ZÔ°sh±ypýÜíÛëçhi'fÿöå‰ÙØS׊†K+½§”oóÝ;?½Ù½3;÷òñÙ¹æÒS¯5—lŠ)r:å¹èÑäǦ2Ý™úuºCv{¢bwH/ô˜ÓS¿Ow‹HçÝX»ûóÆš¤ÔžJ©¼)'î¡Ú)ëç\”—Réwë=úåš/%&7núÍ©ÍÏ7§Z 1U ÁîÎtHÂóóïÜŠOÒ{#¥^yøõÃ+ÃM`e¾+„e _fÆjÚñ¶Õ~öB«½úà‹Ë«øitbvâú‰Y{O–áfš/>5Ódd#~ŠÉ‚‘4Ó|቙&¹Ål g(FQ Ù|ÙSGÌQ*GGJ-Ÿùpbù Ö…j· Y¾ ›V±žR¾ÍkÿøX£?ÿ.Er‹uTþ¹°è¨SòC*s+§OÏ­Ð/RÄaúÒK =¦–ÙöQ RJIRjO½Rû+¥fç^}Þ¯L¸brØðR*ýn4ЬzúcÖ1Ó=è~7'®ps‚nã»èþH©˜WjåÆÇ/­Ü`È#Ÿ”ªj‡™B„¢*÷_8íÄzHìËhï÷¸e2îS•ذ÷…Ëg˜P~–w‹zŒ´v/ÌI1GMJám |ÆÆþÒôszŠè*#ÆòíŠü´Ễ1P´•I+½§Äʤhn±(ÂEj¾K»M¯Ó|9‚õEë®=‡wH/ò5‹%))µR*ŵ_RŠOèa”;Öÿç±[n0î‡QmºàfðÕŒ¢\õÛ“2C0œ+ëˆ9šRŠ’góR{òÛgürg¾)ø¤Tz+*ŸVzO±yóžÛarË> ¶«]\½Ð¾¸Jœpã\˜Vy)µÐzû½…ç†kÏáÒK xÍf¾qÆ"ÒÕ¿}RéáÞK)ï#ÊM;u•REïF3¥ùÚ•0ÄÓjÌk”þì›S¿þksЉÙ:j]ƒ[uéÑ9+E‡§$mLI)!ÄÞÃȃ1qqõR÷â*f™í·Yÿ¶#9£.£#?¡ßìíÔ¼Yã<ðÜ94zò׌c£¢Eñ·„§#¹²Ž˜£)¥Â…ÅÐP> R*½•O+½§”oó|ž ¶"Ÿ¸Êòwz_+*¥È é]4Ï¿Cz -+Raو͖,ʧŸa“”ªý¬T(·öKJñ “"ŠÜnº(*¥Òï“ ÜŸn0(úìW{×¶ý«&b„¹ªVJùu 7\r* &¥:9J7¦$¥„£c,#vÿlèäÛª1DH~¦sg-üvœìª|þ‰ÙPæÅW³ÔS`«6flÄ(H©¸h9ZR*¥Uå•Jï)eÚ¼õÄZÿŒMåæ|‹k8)E›çéXÚ.ZSùwH/ò5Ë©N<Ï’R‡Ê+ÅF5»žg±2Æ6ÁPB0yåîÃI©”»åãW+óöÔî6Ip Ó ±ãËxØë“RñAp§”"Ÿ¾¬²u—p”BŒ)c5ØíLÌMö»¥™Ä/¦¾|‚ÍHñ³î(¿=n†ýc¯›AªŽ¹×Ô-¥°+öFJ…iÕsV*µU+9ò{Jù6ow …¿Äå}2ÅN1å?ˆ}FùóETþÒK |Í–?ë%)5¢^)ªŸAû¾¦%ö•†:&ll.#¥òïÆç¸°éÞv…€á¿MþžÚüI‚µ{Œ2‘?D˜ .û%¥ì 9(ê‘‘vJ–”BìÇäIŒ Cì ]¢ù>"»)®Œ”ŠÝÍï@ÅUê&Ñþß•r†«ù].’`jýÆ”5Â׸ç `r[4fŠ”²]ÝŸsÆ„¡Ûò‡l–”Bì=Ì2öÍ¢|¡É…4ò1™ÂoÑ„'`™üo ºøÈ³ü_ÿ‹Ï‰Ãÿ"¤T¾¡Œ nO5[_GQ)e½vá6¶”´ŠÎƒÞÞp­ÂÎÑ|b— Êÿ®TzZé=%VÎé¹¥6ýoXe)z[1k¥±´RžËž;Jù º¢w¨ãw¥pBØ£H©á¶)JJ )¥†£¨”/¥FÅY,„BÔ7ßáÁCÂÁ ñ2?‹"ÄÑäÐJ)!v#sâ³ 2:G…Bˆ:`K?>l-ü£óji!$¥$¥Ä…C™M ûõóB!„BRJRJ!„B!)%)%„B!„’RB!„B!)%„B!„’R’RB!„BI)I)!„B!„¤”¤”B!„BHJ !„B!„¤Ô6Ö¾y²÷h¬ |ˆ£]}õƒ²*m!„B!)U—”rÿß-Ö¯RýþžÎÐ+~nåôé¹÷凿2ƒ¸J[qp‹n­ö³ZíÕ_\vÆ®û3ëÄìÄõ³6ö|÷­KóÝ™æ‹OÍ4^yøµ[frñû b÷L3h¦ùÂ3ML.Œ £õsnÊGZ„\¾1TG̽™ÅnNÜúìæÄè̪uä§œ”r4¹òKÏ®b#QÕÖrZ+¥¿¸ÏüqŸt‹"?·i}¶š´ìç›S›ŸÿùÏ„ÕÖWú˜Pßè!)U£WªŒ”²«Px™ì JýÄìß¾<1{~þ[ý+ x´üÔåhO~ûL{’µ@¾Û?½å÷t3îÉÚ!Ÿì¬øÞ#:*M“´.®^h»êÏüc~uÊ¥Ž\䞬WÝßúê·û[vÕ$lâ)O”24¯Ÿ»}{ý]klì/þ›{õyÿ\þs9ôÏRö)$¥„£ƒqìN¼ñ|Îìƒ1”bX¤ß3%‡ö[¡IÍ<Ȉíç£_®õ12ów,ÏuÄé+±ðóªfÕt)•ž¢m±|˜m‡ó¨À͉ëÜœ`Þ¯ª–‹¶ÒÎâ§:‹”ƒ[>-{‡áT¦¾ÒK»¾ÑCRª¯TUR ð>ÙaÇýBëí÷ZW{×¶¯öèr^Í»éŠ!†¦CWÄ”§!ÚîJ£D…Æ=wãþs+¯ýcnÅnr£yÙÕÇcñkxiç>¡#Ñí–RaEª¹&²4NÎY;á»üc×wžÔ'J,È3ž=†õp‚ÏŸŠ†{ I)!ÄèÀˆçe[¶+ÄÞDvã-KB|²|æÃ ·{¢ÌV,N½gÚZ¸[œ ï,`1/pƒ›o…+å6'ÕÆ<ˆRªÚY5EJMÑÎ×”¿m¶Õ¥ƒ5Ý9õ»Ÿ—Ë×rz+ômg5áä!qw¶â*=·é}¶|Zös¼@Kãï?½4Þo1CX_é¥]Çè!)u¼R€ n¼lŠØXûò»5;Q1ñ9ƽ×ñnPøçȦ éHl {Ÿäwî[‡ #YÉçKÃå6¿K7»$ý‰Òý¹Ÿ`vv¡ØT4ÜSHJ !F¿ çv`lñ ËCö” !Ÿ¬Üøø%?Ò²äçOðºÑ/ýž)9´æà «Îä*; Âó¡1TG̃(¥ªUcØUÿ¢)Ææk(1²ÓËÖ‚Mbm›òµœÞJëXJá~Ÿé¹Mï³åÓ²6äÅÕKÝ‹«¤2œèÕWzi×1zHJÕ~V*”[ÃI)߬Є¯š`Ðarâ@!s•Á·ð,…!,4îm÷Ë}Ãb¬™Ò]­[6Ü­±ß EHú¥ úñ &UJ ÷’RBˆQÓ‡uqÆ+?zgËF~›ÍÎm{Ö×d½ú)÷LóJecæ uåìž)`ÞU3ÝÃ6jRªÚY5Å+U4ÅØSØøé6­ÑH±G~-§´ÒÐ+e­»”“KEs[´Ï–I+–çpU™ú*ZÚÕŽ{ÓÓ啪Ì+ew¸â› ‡ äž(š©í^‹;“¿ê°›W*Ϲ?œWj8’þD’RBQ»÷±Ý~b·|c¢ùµÛ[¾düÒüΓieê+½´«=öy¥*óJ&xL ³ªÇUüWa`_,bÌ6J¦1GþY)^&ÁÌÀ×ÿ œ•rÞ嬔‹OêáY©áDHúùNâÙЭœ.¥üÛ]v¿ƒ¤”âàâÍ)7z3®b^„¨Íì¡ÿ72wÏü[È2£‡e¾Ø ŠÂ;E¼Õs¿¤”Ý`‰‡Á¾N‰™¨è¬Z^JM1œmiW˜æœsŽ›¤¼6ÀÅÄ /úN¹¢µœÞJýÙ°ÝßOhOµ —Ûô>[>-[w\ųd_ëUU}¥—öÞŒ’R#ç•Þ®(Ø! ×plr¢iÒˆX ýKœËƒŸ}ÇÝnoðs1SÞà7œI"›V¸j•.¥ìË$¬”•”B&0³üèíÌ v=„¿^ÈhÏnâc*awÏ´•øa~æ(K)v…0w³Üi_°dç¯ôYµ¼”nÇ¢ Õñb€4Xvf¸_:*ZËé­Ô[ü èîyHÿù–Aò&µÏ–O‹çµv ÖiŠ<+Z_uÿ®”¤TRj8†“RB!„Bˆ£À¡•RB!„B!)%)%„B!„”’”B!„BHJIJ !„B!$¥$¥„B!„BRJ!„B!$¥$¥„B!„’R’RB!„BI)I)!„B!„¤”¤”B!„B=)Å}úC÷þþB!„B!)õ?´'¿y²=™V+¨È3wVÃB!Ä( ûDI©!¥CHù¿]6W±¡êþÖ×ïoÅâp5ÿ>B!ÄÊO_÷Óg÷ίtïØ«Û÷~ïlß›ï¾qv¾Û˜ùëdc¦Õn½Ýj/ŸùhjùŒÙYüþ¹ÎâÉåÉŸ\nÌ4Æ3'—Ÿÿñä²›O{úï¹ÝÛ¾·Ð:ûÉB«¹ÔüûŸÿþžŸ÷îùù¢ùOÉ!yË…oÙy6F8#§Ä¬ƒÙ¹—ÏÎÅʦ.(s{usê×mNQbüñx«:)•oŸ„\í]Þ¼Úã»ÅNu÷²ýS2´ŸæÒS¯5—(±éÎÔ¯ÓîŸÞìï|BÉÛø´ö¹~îöíõsÔΉٿ}yb6VbÓS¿Owè¤Büµ»?o¬UÕ;êhÉù£J™2,Z_é%3ýI%¥’7øU!¢ø»*)õðÊï^):œ !„8:0G ~b¦†ÅLó…'fš1ÄÁÔX?ç&T ñVûÙ ­öêƒ/.¯>àLü³×OÌößó­Kîž/>5Ód¶"~h¥žC>ù•Ó§çV¸g¹º9µùùŸÿLÎÈ)1ë#ïXãøÇÇáU Arߘ€<{Uù).¥\½`žŸçVq9]NJ9úæÄ­ÏnNxÁérEÉÐ;l|JÛ·«ì)–Ï|8±|†§Ø­Ö\̵/¿ÛXó%öÕoƒJÌÛ‡™ÐEv¦¤R¤wTÙ’SF•2eX´¾ÒK =fú“JJ´WŠéŠõ ¹]—Šy¥ø„šËØØ_þü7;÷êó³s2,„â(Ð{ô˵Þ# þM7•>¼3Ž1y™Gø1­÷ÃÞŸfYUfGzcwÀ‚ô¢.›+SŒÈô˜u`K/“.WÚ˜¤Ø ¡DÁ'à¥/öÌ·Ï´'ñ ðÝ~y¼3]|&˜’Ä,*¥0O¹Ã͉ëÜœÀl }h¶´Wn|üÒÊcñkà±Á°cZÓ<&Wbl$û99¤„CÃ:&kwŸ©y£ÄB±–|ÑÞQ´Í‡÷LUê(ÃX}¥—@ѲJRI©‘öJ1ˆÐý­LÊ—R|—5*†N;ÕÉÈBˆÃ kº~[QfÀ…¦€Yø–½›W`È2w„1ù›Ï1t0­™Ë|„ÿ„ù+ýYÒs8èÛn%#>\o枬R/¿ÿôÒ8SlFN‰Y”ž<ø.Zo¿·ÐºÚ»¶}µ‡Ôñõâ„ ‹°‘ÈH/K\MY©‰yÊ&I¾KŠøµRŒìÈ9Ÿb桲ydÃ8ë…'õϲS ÓÎyа…äCé!íç<5)^\½Ð¾¸JK‹m0+'¥2o-½ƒü„>Fî`K hïHoÉaZé£Je«¯ôHYôI%¥FÚ+44AS¾” ¿[t]D!ÄA„=±“Ö°²'¼†õD±ÒŒ@â7£-ûÎ!´¾o¬8àOõ¤š¼é9 ¯b,bÊ2ÝŠÁzqõR÷â*y Å^zÌú`äݠȦJ¶Y¡‹¨às¼OÄÇ«CÎÃWgYáäËœµÿ'¬Ò¥>4>-»m&0ý6L惲~N+0ìârÑòä[ˆÏPNø2qW±»H‹ fE[¾õEêÔ,uJ‹ Ï–ïeZrú¨RGÆê+½Òc}RI©vVjnåµÌ­æK©ð»’RBq¸±›Áòa¹ÍÎ#ƒVjø±«Úaøy0ûˆãÍ\g¾ûM8;·ZÿUúþˆ¢9ÌæúÞ#ÌÄôõïзS>fUPªøsìÓÙF´ TxásÓoY[†˜›ÄŒfI—R”R~; àû;J¬á^€AIÒ†í†IÛJ­ö|J¸èq‰¢Ö²¯H½£hK.:ªT[†ùõ•^)1Ç’‰ùT%¥¢ŒÎüXÅaO§¤”BˆÌë0ôÆk¶¦Ëžøùw:w·“H™?ïý„­e6W~e7UÞ —CÖõ‹¾nÁûÓvžœ)³*¬gâÇÆA>á‰Â8¶’Õúšò}Þ¬Üé•Ê?mÒ/)qFs¬®©5|#ù6Œ}vûæ·¢R ó—­ƒvëZ¿½—ˆ=rÞwQ¬Þ‹Z_±\UõŽáZrú¨RU¦ÔWz ¤ÇLRI©æ•b0¢ñÑL%¥„B5éÂCçþm{™¯€Õ\{ÊÈ›ÅÎ<Â4á[l;·÷Äge_•„ι©¢9OÏ¡?ù³»‘mM"Ê„•ïp½<=fÝPª±uqû¾¸Ð§D¹Qþˆ1kžò\<©=dO­!½¨)eKNò_-ÀfBŸÏÌàmä–÷œ„1w—Rþ‰œ…xˆ½¿¹ˆïŽ ¢¤h_ÏÛš8œ”²oð³å¦Â“†¢"½w¤·äXZ)£Jù2L¯¯¢%3}ü””ªì'zÓÃt)Åà ®^ëÚ–”BQ^J¥ÿÖ Òˆ8xB·±a 0£m¸ßJÏ![Úü/)åÁü³¸ÙAšé1ë†ãû¡ÇÏŠ%LØPÜZ#Ó™'"ô¯ªrÈKßì ¾}eHŠ€áþ¼."ÇúšÂvƒo9®…-']JÙœ§üª–’ÿý´¬µãçL1¦½|×?‹«>±’Æ¿¥9« ¤T¸™-ö¼é½#½%§—mlT)S†Eë«îß•’”*%¥ÆjFS»B!DQ#^ˆÃÇ¡Þà'„B!$¥„”’”B!„)8n_BRJRJ!„B!$¥„B!„BRJ!„B!$¥$¥„B!„’R’RB!„BI)I)!„B!„”B!„BI)!„B!„”*)¥6Ö¾y²÷h¬ |ˆj"ûÇã­Ã“ŠB!„”:€RÊý·PRjt¸¿õõãû[¶ Ä N{ò›'Û“õ¥" eÚƒBhlBHJ•’R¡‡*Í(ÿê·aò¢ýú¹Û·×Ï-´Î~²Ð:1û·/OÌr‡2 Ú{nßÛîmß›ï¾qv¾Û\zêµæRc¦1Þ˜™îLý:ÝéÞùéÍî¢e+%>.·é©©™ïqµ1©…Ù¹—ÏÎÙ::¹üü'—ítKmÒ6šKÍ¿ÿùï?áùùw¯¯_”1òÛƒ$´¨jìJénÎÚmD«Ýz»Õó³rãÓ×ýôÙ½óã+ý©§Û)ý½L>ãåù{Ç—gc毓î°|棩å3EK²hù ³*(íXþyRjg·W7§~ý׿%VÕ¾‰áæÊ«½Ë›W{|·³øÃ©Îâ(÷Çôy­¼-4Ý9õût‡VJ*ÄßX»ûóÆÚ(ôŽ¢¶Aù øø™^©1÷«×!)•׌⪔B|xåáׯ gÐýîò™'–Ïl¬}ùÝÆšÁZ¦T{Oý͉[ŸÝœð“„› æVNŸž[9¹<ùï“ËE¥B¬”ª•Reêq/É/ †ŒÍ©ÍÏÿügBóXãøÇÇëç\—óŸ¹:¢%0òé|÷­KóÝ™æ‹OÍ4I—˜)’xïË3¥=”Zû!¥Š]i½ƒO\¯ CŽN¤3ÒÇí´þ>L>ó!þLó…'fš”'wòù):Τ”OјՂ‘GɇW1½¥±ÓøÆ¤Ì÷rlìÇ•?mƒðüü;·Ò ÷ýêéóZy[È ³Lè";SR©»wÄj7Û ìP|üL/Ô˜ûÕë啪@JÅVßWn|üÒÊ º7UN7[}ðÅåÕå×È«’RußnN\ÿàæÄØØ_š»=iQ¯åÉš« i>“b©°^Egæ)fç^}~v.eº²Ÿ3M²ªd2†ƒ³×OÌæ¯Dæç3N!´ÆÎâ÷Ïõ¯2rgZ,÷)3 ÅúŸØé˜íÉoŸiO²‚Èç­ö³ZmÛ_RZo~{(_Ë⨎]å{kü´po1ßýr­÷ˆ>Èß)©äÛ)ý½h>w[Fù¿ë¯ÄÆCŒrzYÑ’L/ŸáJ²*HÅÉÎËäËÓÕãcT(Qð«Øq/}l$]|&˜’Ä,*¥˜¸íŸVúÐl ô6Ïø?5˜ã0¬SÆÿò¶D™v^Þ¢ÄB)–|}½#ßI± ªòë+½Òcîo¯?Ò^©º¥OS°k 1GMJ-´Þ~o¡Å_­Èaà&϶.0‹«M…D&6¿í!¸S¤ŸP˜éLNþ)vŸêòóÉúÍÒøûO/3”„w@Î!3.®^h_\u}jõuÄ31Øi²žš_¶)R 3‚aSÃO½nصƒ8C0ÛRZo~{(_Ë⨎]åz‡[(ÁHµë©¬éúmEÙ\^J¥ô÷ô|y.{•Ôéïé%™^>eJ²Zx +xð]Т®ö®m_ía¤úœ»¹€šÂrÀxMù.)Rãe¼RÈ9Ÿb桲y4~:–‘“'õÏ’™àáø¶ál‰aÛùp¶P梕’ŸÐÇÈl ÔÑ;biµ ªòë+½Òcîo¯—WªF)º>iúUÏ9(RЧfÂHéÀEEN8¸3tÒëK%,«t)Åäçw»!&}óL,Ÿ|ÎP~qõR÷â*÷\6'P#”wÃO[e²k~ðrfßåŸ7æK)›+V.¹'y³aÌ8ˆµÞüöP¾–ÅÑ!6v•é˜2˜ªýÆ«[X wÿ——R)ý==Ÿé+ô±yÍ΃é%™^>eJ²ZØšeÇvö°…Œ{‰Ïñ>}™³ö¿s_Cº”baËŸŠÉîãLÃ¥ñØb¨?3”õ¨X‘²Ð9œ-1\;®O‘:5KÒSR–üêè)6CŠmPÕ__é%s{½ÎJ ðPU%¥è ‹t9*;ß|÷++ÎUMÈÙƒ(¥0LYÕ°›òŸ´ük'æV^ûÇÜ a}©”‘RÖ7;Ô›žóƒV=ݰk×{|qƒ,Ó'­Ô;åY Ê6up뫉ç3OJÙÒ`øcp·ugÔU±”öP¾–ÅQ ìJï;§[¿€b×Èíf°|ò}a+Mïï)ù,â•ÊzÙ µdgZOK~I/_í)ÒIDAT?¥|0Ë”d­Ž-Uû¤ÔB…W ðwѱ‘˜±³:éRŠY#¿ôBÁ0èþN†…k¸Îùýq¸v^­-„lÆ+²—½c¸¡mPí__é%3ýçŽêëõòJÕâ•¢ñùA'ÓâÕ¾5n”¥MwÑýµåE%ÿ˜ìÞH)‘ðs¿úèÄvú!ãô6ã×´²=ÊvÓZ¸ré×x\|»bj7©2 û•ž¼A6]JÙõÔ¢k‡EÛƒ¤”(?v ×;Xßõt¾†á<’>n§÷÷ô|¦@¹ÅO8¸³‹œpH+I'5ÓÊÇ=c™’¬ë™a9ñcã Ÿ˜0m­qœ>6z³r§W*ÿ´I?î[ØØN­!YóÇOûìöíyE¥TJ®Wk ¥Ÿ¯ºw #uBÛ ª ¥¾ÒK =æþözy¥jñJ1pøAÄurºÆœ­ÚÃ'¥üQ?×Eé®ùo“«VäxëR§ä÷RJá“aO3Ó¿Av{2ŠÚ<§ø^bù´ƒåŒT³«q´CV›pß[ãƒÉÞná`ë‚}m6ùÎ[–§-ò`‡`žÅ>ý(ÜœÒ$¥DUcWzïð'[†YO92k¥Eû{™|ÆÖé­¡Ãj·=R~œI?R_æð}xºØº¸}_\èSJí!{JÏoŒtfqJ’“ü×3ø×&eo}Œµ@ä–÷{„1wo]éý±h;/o Ù7øÙrSñgæwŠŠ:zG,­Û üPtüL/ô˜ûÕë啪ñ¬ÕOâÑû·âdëOE¥ “o1|ðÉpÊ»Ú{ÚÝ«)¿qT^ä0¬Sª¸×÷í”b÷5žÀµwÀ±NÛ°wã»=·Â}¬$àêæÔæçþ3a(RbÖFÞ±Æñ5«‚ä04g1yöªòS\J¹zÁ &½wí•鵿¶|ŸM¯¯ô´Šæ*eü””Q¯TLJQñ4»æÁc™ÝÀÐßùÝTôž4/V2|·qnkël §+;ôÛ 6E!„u¬ÁûmE™švÆá[ö>,{1#`V†1ý⚃9ÓÊš¹Ì>ÌMÌ éÏ’žÃAßv+Ùñáz3÷d•ziüý§—Æ1˜bfeJÌú ô¬àÁ°Ðzû½…–_¸tó¯m™©™s‘‘^–¸š²s7æ)ó5ß%EüZÃÙVÎù3•ÍCxLX„OêŸe§¦óa ɇÒC.ö/^»§&E–§ii± få¤Tæ¢wŸÐÇÈl ¤÷Ž¢½2L+=·åúl±úJO+=fúø))u€ÏJQÍ4b“Ïéüv˜C¹t—Ƌޓu ;@û»¹é„Á—ïò {pY9ã*Û?ên|B!¼ñúêó³sáîÿа֠õælFð¦¹[­Çãfâ`ŽZß‚7Vœ ð§zRMÞô†W™•0åͶn–ļ¸z©{q•¼ 2+ScÖ3¯Ý È¦J¶Y¡‹¨às¼Ov6'ç᫳¬pòeÎÚÿÎVéR KÀ/ïf÷¡Í„ÆÞßú ¬GÅšì|2\-ð-l›Pû2qW‘O¤Å³¢‚-_J‘:5KÒbÃó‡ezGU½2%·eúlÑúJO+=fúø))uÀ¼Rt†E1•Ƥ«#i¼¸r“_8X¤ÜÓaÜõ$Ö*X7bhÃ1j5ž…Ïýê‘ëxzóBÔÝ> âøJ­3³ìú1£=~Æsâx3×™ï~Îέ€ÖnŠQ4‡Ù\ß{„˜îC};åcV¥ÊükŸÎ–0¢¡‚ `—P1 ùÖÜÊkÿ˜[ CÌMbÆÎê¤K)J)¿†‚aÐý %Öp/À $iÃväm¥Öa[>%Œ¥T•”ŠÉf¼"UõŽj{e~n‡ë³ÃÕWzZ)1Ç’‰ùT%¥¢ì¯WŠiÀŠ™°…«öTR¸'µè=q‡{IùľAh;ØÁçÄ · !„¨ L¥0 Ç|Fæøù·§`·“H™?„¥7û‰ÝÎmó.o†Ë!+åE_·àWîwžœ)³*ì²&KŸˆ‡–åQdž5Ž­¯)ßÿàÍÊ^©üÓ&ýð’7×ÇêšZÃË—/¥ì³Û¥Ø¢R ó—%à˜­Â–BoíôÈyßE±z/*¥b'¸ÊôŽj{e~nË*éõ•žVzÌôñSRêÀx¥ø®D\'§ cªµÛ0Â]ÑÃÝ“U¿Ë6szÚ¡Ùž›bå |Ó ÛB$¥„b>Á¿×+3#ðØSvŽQÓ„oq†ÁÞŸ•}É2zxj7}å;%‡þäÏîF¶ã(V¾CŸCz̺¡Tcëâö}q¡O‰r£ücÖ<å¹xR{ÈžZCz!PSÊ–œä¿žÍ„>Ÿ™ ä–÷†1w—Rþ‰œ­‚ ޽‰[ˆ¥a6ˆ’¢}=wlkâpRÊZJ¶œÃTüùö¢"½w¤÷ÊXZé¹MÏU™ú*šV™\íÍëgŽôOô¦‡ÃmðóbÆ5,½+N¶þÔ¿:å&¶üý¯é÷´®Ïþ×Hd®a»‘€8ÜQG˜þ› B!öFJ¥ÿÖ F˜]ªó›Éw¾-œÃý¦Pz™‰ü/)åÑÿvYgÐ3o†æcz̺á¡o¡!ÕÍû¡¸µF*"ÐÎÎØH ?ïgñíË R ÷çu±8Ö×dMXk¹YË!l9EÞ2—å<å÷Á°Äüï§e­?gŠ1há»þY\½„.Øgëqnf‹=ozïH´Òs[æw¥ŠÖWÝ¿+%)UJJÕL\Jíݶ!„BˆÑüúuMq49Ôüê%Û,2N9n(„B!)%„¤Ô‘–Rˆ(œŒì-Ö "„Bˆ£gÀôû“BRJRJ!„B!$¥„B!„BRJRJ!„B!)%)%„B!„”’”B!„BHJIJ !„B!„¤”B!„BHJIJ !„B!$¥j”Rܧ?téï_õ½B!„BHJl)ÕžüæÉöd~X• º¿õõãû[6ÏqYç u5>!„BÔl!$¥†”R !åÿFtÅÄR(¥bâŠO¸ªÆ'„"ÆÊO_÷Óg÷ίtïØ«Û÷~ïlß›ï¾qv¾Û˜ùëdc¦Õn½Ýj/ŸùhjùŒÙYüþ¹ÎâÉåÉŸ\nÌ4Æ3'—Ÿÿñä²›O{úï¹ÝÛ¾·Ð:ûÉB«¹ÔüûŸÿþžŸ÷îùù¢ùOÉ!yË…oÙ94F8ۦĬƒÙ¹—ÏÎÅʦ.(s{usê×mNQbUívÎö¸Ú»¼yµÇw;‹?œê,îeû§dh?Í¥§^k.QbÓ©_§;Ý;?½Ùß#ø„’·ñií)2rýÜíÛë稳ûòÄl¬Ä¦;§~ŸîÐ;H…økwÞX«ªwTÕ+Ós›ž«òõU¤†ÉUþø))•¼Á¯ ÅßE¥ÔÃ+¿~x%ì„’RB!òaŽ@üÄL ‹™æ OÌ41bˆƒ©±~ÎM¨â­ö³ZíÕ_\^}À'a'f'®Ÿ˜í¿ç[—Ü=_|j¦É,FüÐ J!=‡|†s+§OÏ­p;‡rusjóó?ÿ™0œmSbÖFÞ±Æñ5«‚ä04g1yöªòSÜöpõ‚ALx~þ[Ååt9)å è›·>»9á§Ë%Cï°ñ)mß®²§X>óáÄòžb·Zs17Ö¾üncÍ—ØW¿ *1ofBÙ™’J‘ÞQM¯LÏmz®Ê×W‘(–«”ñSRêÀ{¥˜ÒX@µ·æ'„â0Ñ{ô˵Þ#ŒBþM7•>¼3Ž1y1;ø1­÷ÃÞŸ£*³#=‡±;àAzó1›CSäPzÌ:°%—É?—+mLXl€P¢àWñÒ{æÛgÚ“xWøn¿<Þ™.^LIb•R˜§ÜáæÄõnN`¶†>4[Ú+7>~iåÆ±Æø?5ð`X‡1­¼‰É•äglì/Í~ûŠR¡…“µ»‰ÏÔ¼Qb¡8 K>½wí•鵿¶|ŸM¯¯ô´Šæ*eü””:0^©|)Å@C%äsœË2&„â¨Áš®ßV”p¡)`g ¾eïãæÇÕ²˜•aLþæs L+kæ2Oá?):7¥çpзÝJ6F|¸ÞÌ=Y¥^ÿé¥q ¦˜Y™³>(=+xð,´Þ~o¡uµwmûj©ãëÅ X1"‘‘^–¸š²Ró”M’|—ñk gd[9çSÌ”rÑ~ÎS“âÅÕ í‹«´´Ø³rR*ó Ñ;ÈOècä¶Ò{GÑ^¦•žÛr}¶X}¥§•3}ü””:$^©p0¢«ÓàdR!ÄQcvîÕçgçÂÝÿ¡)` ¬AëÍÎT²ž(Vë1ÅøÄÍhKã~—„3G­oÁ+NøS=©&ozëÈLùØl‹ xqõR÷â*ydV¦Æ¬¶fÙ Šlªd ™ºˆ >ÇûD|¼:ä<|u–N¾ÌYûßyÂ*]JáCóçÓ²ûÐfBÓoÛd>(ëQ±&{™…c¾…ø …±/w›Š´Ø`VT°åK)R§f©SZlxþ°L飯W¦ä¶LŸ-Z_éi¥ÇL?%¥‰W*ÎæV^ûÇÜ ¡L !„8:ØÍ`ù° gç—A+µÎ̲ëDzøy0¤ˆãÍ\g¾ûM8;·ZÿU¸u*FÑfs}ïbº!ôí”Y”*þût¶„-^-Àß\Å4ä[ÖN°!æ&1cguÒ¥¥”ßCÁ0èþN†…k¸ã”$mØn˜´­Ôú1l˧„1µ«’R1ÙŒW¤ªÞQm¯ÌÏíp}v¸úJO+%æX21Ÿª¤T”ƒõ?VzöþX§BˆQS) ½ñš­é²'~~À¼Ýí$RæÁ{`?ak™Í•_ÙM•7Ãå•ò¢¯[ð+÷;OΔ‰YÖ3ƒO \0E>á‰BæYãØúšòýÞ¬Üé•Ê?mÒ/)qÂ#V×Ô^¾|ÛÆ>»}{^Q)…ùËÖÁA[×°÷Ü–BoqíôÈyßE±z/*¥b'¸ÊôŽj{e~nË*éõ•žVzÌôñSRêz¥è4h†™B!쬾>Á¿×+3#ðØSv–ÁÄÄ4á[á–r|Vö5HèœÐ(šóôú“?»ÙÖ$¢LXù}é1ë†R­‹Û÷Å…>%ÊòGŒYó”çâIí!{j é…@M)[r’ÿz6ú|f¢%È-ï cî.¥ü9ë{#2ßDIѾž;¶5q8)e߉gË9L…' EEzïH´Òs›ž«2õU4­2¹Ú›×ÏéŸèM«•R C¬Bá` ßr#„BÄLôßZÁ#Æžðml(ÌMÄG~ ÷›Bé9dK›ÿ%¥<¸ƒ7“"Có1=fÝð „з`Å2 v^#ÈbL#¼‘Ä·/'H0ÜŸ×EÄâX_“5a­åæ[ŽkEaË)ò–¹,ç)¿†ìñ¿Ÿ–µvüœ)Æ4¢…ïúgqõÂ'Vœû70gu8 7³Åž7½w¤÷ÊXZé¹-ó»REë«îß•’”*%¥ÆjFS»B!DQ$ÄáãPoðB!„’RBHJIJ !„BŒœ ·/ !)%)%„B!„’RB!„B!)%„B!„’R’RB!„BI)I)!„B!„¤”¤”B!„BHJ !„B!„¤”B!„BHJU&¥¸OèÒß_!„B!$¥þ‡öä7O¶'óC *!„Bn°©°|TBHJR !åÿFtÙ\ !„õ±rãÓ×ýôÙ½óã+Ý;öêö½ß;Û÷æ»oœï6fþ:Ù˜iµ[o·ÚËg>šZ>ccv¿®³xryòß'—3ñÆÌÉåç<¹ìæÓÞ£þ{n÷¶ï-´Î~²Ðj.5ÿþç¿ÿ„ççß½{~¾hþSrHÆrá[VÄÅCJÌ:˜{ùøì\¬Ü(aê‚2·W7§~ý׿%öÇ·ª“R÷·¾~|¿Àý®ö.o^íñÝÎâ§:‹{Ùþ)ÚOsé©×šK”Øtgê×éN÷ÎOoö÷>¡äm|Z{ŠŒ\?wûöú9jçÄìß¾<1+±éΩߧ;ôR!þÆÚÝŸ7ÖªêUµäáî?þ”¯¯ôHY&ÿ’RÑæS• ’”B±7`À!~b¦†ÅLó…'fš1ÄÁÔX?ç&T ñVûÙ ­öêƒ/.¯>àLü³×OÌößó­Kîž/>5Ó|xåáׯ?4ƒRHÏ!Ÿ‡áÜÊéÓs+ÜÇ…\ÝœÚüüÏ& ÍÇ”˜u€‘w¬qüãcð*† 9 oL@ž½ªü—R®^0ˆ ÏÏ¿s«¸œ.'¥œ}sâÖg7'¼àt¹¢dè6>¥íÛUöËg>œX>ÃSìVk.æÆÚ—ßm¬ùûê·A%æíÃLè";SR)Ò;ªiÉEï2þ”¯¯ôHY&ÿ’RÄúÞy¥¸ÊtE—F‘»Ü®> CÚu¾°úWn|üÒÊ ÿ]×Dè–~ Ü™+(4¯±±¿üùovîÕçgçdˆ!ÄA¤÷è—k½GÌüšn*}x%fcò2/ð-bZ>+ŒªªÌŽôÆî€èE]6÷¥‘é1ëÀ–<^&ÿ\®´™Ùñc„¿Š÷Û“ß>ӞĻÂwûåñÎtñ™`J³¨”Â>á7'®ps›$ô¡ÙÒö6Ìø?5°s0¬Ã˜VÞÄäJ òƒÍc?'‡”phXÇdínâ35o”X(¥Â’/Ú;жùðžéwHŠÖWz -«:ò¤¥TU"Š¿Ó¥ƒkxî[Kã*VûhÊüÓ3ìð4»F¦ŀŚC­e”!ÄA5]¿­(3àBS€«^ ¹oÙû°xǬÁ\Æäo>ÇÐÁ´f.ó þ–íÒŸ%=‡ƒ¾íV²1âÃGîÉ*õÒøûO/c0Åf䔘õAéYÁƒïb¡õö{ ­«½kÛW{H_/N¨`3` #½,q5e¥&æ)›$ù.)â×J1²c ç|Š™‡ÊæaMâLX¬žÔ?ËN1L;ç)Â’¥‡\´ŸóÔ¤xqõBûâ*--¶Á¬œ”ʼµôòú¹ƒ-¢½#½%‡i¥ß!}ü)JX_é%³¾üi)µ_^)\ÃùÍ…n®›5]4¶ <ÔŠ®£!„ØS;)aM+{­Žg³†7ÍÝj=‰OXæó;)œ9Bh} ÞXq2ÀŸêI5yÓs^ÅÔÔd,:1€ÁzqõR÷â*y Å^zÌú`ÙÔnPdÞÇN°BQÁç,ȯ9_e…“/sÖþwž°J—RøÐüù´ì>´™PÀôÛ$™Êú9­À°{jŠ–'ßB|†bÀ—‰»Š|"-6˜lùÖ©S³Ô)-6<X¾w”oÉ)wHÊ×Wz ¤Ç¬#ÿ’RT%¢ø;]JÙ¡ÊJ©pí$”RLf £tQGLJÅܸ’RBqP°›ÁòaùŒ‘?¾RëÄ]ÕÆ„ÂÏüC»üç7áìÜ hýWéûŠæ0›ë{0òÒ}¡o§|̪ TñçØ§³%ŒhA¨ðÂþæ*¦!ßš[yís+aˆ¹IÌØYt)E)å·ÃP0 º¿“a¡Äî”$mØn˜´­Ôú1l˧„‹(jM!›ñŠÔÑ;ªmÉöEÇŸòõ•^)1Ç’IÏ¿¤TßúDU‚ªn)Å´á©L»Ûf$)%„‡Ìë0 ç6ðÄϸWJìv)ó‡à=°ŸØMæ6éòf¸²®_ôu ÞŸ¶óäL™˜Ua=3,"~läK¨˜¶V²Z_S¾_Å›•;½Rù§Múá%%NxÄêšZó‘o“Øg·oÏ+*¥0Ù:n]óö^vÀ!ôÈyßE±z/jMÅNpUÕ;ªmÉáÒÇŸòõ•^é1«Ê¿¤Ô€®pP¼R¤å7(0üq¨.l ’RBqˆ÷oÛËÌ|ák¼YìLLL¾Å{Of%û oÿ"%wnªhÎÓsèOþìndÛy2aå;ô9¤Ç¬J5¶.nßú”(7Ê1fÍSž‹'µ‡ì©5¤5¥lÉIþë°^|>3ÑÚÈ-ï9 cî.¥ü9sÓ?öö9ì%|wl%EûzîØÖÄᤔ}ƒŸ-ç0~§¨Hïé-9–V™¾Pô•)õU´Òc–É¿¤Ô±†^U¸7üh.4D†Nÿl½JRJ!$¥Òkiäß ëŒH©öä7O¶'óýT÷·¾~|Ë>B!D}`u`ù¨4„Ø)5Vû ¥BÊÿè*/öFJI° !ÄAg寧¯û•Èî_éÞ±W·ïýÞÙ¾7ß}ãì|·1ó×ÉÆL«Ýz»Õ^>óÑÔò³³øýsœ˓ÿ>¹Ü˜iŒ7fN.?ÿãÉe7Ÿöõßs»·}o¡uö“…Vs©ù÷?ÿý'øâòê>ÁÄ?1;qýÄlÿ=ߺäîùâS3Mæâ‡fP é9äó0œ[9}zn…ûXc‚«›S›ŸÿùÏ„¡Ù‘³0òŽ5Ž|¬^Å$‡¡ñ ȳWk„± \½`žŸçVq9]NJ9úæÄ­ÏnNxÁérEÉÐ;l|JÛ·«ì)–Ï|8±|†§Ø­Ö\̵/¿ÛXó%öÕoƒJÌÛ‡™ÐEv¦¤R¤wTÓ’‹Þ!eü)__é%³Lþë“Rø¬ÔÞ{¥¸ºrãã—VnkŒÿóXƒ V¾”Š sáç4ša8(ç§Âº wûËŸÿfç^}~vNæ‹Bì/½G¿\ë=Â(äïÐpSéÃ+±Y“—žoÓz?ìðYaTUev¤ç0v| ˆ@/ê²Y,ňLY¶äñ2ùçr¥Á#”(øU¼ôÅžùö™ö$Þ¾Û/w¦‹ÏS’˜E¥æ)w¸9qýƒ›˜­¡-Ýþ±1­¼‰É•äëÅ~N)áаŽÉÚÝÄgjÞ(±PJ…%_´wmó1K2å)ãOQÂúJ/¢eUGþ´”ªJDñwº”¢ øX¥ÀÅi=EÃI)†0„VL×LS¤Ã1ɧPeÊ!ÄÞÚ®ßV”p¡)ÀU/Ü·ì}Üü¸úC–Q=ŒÉß|Ž¡ƒ!hÍ\f fàÒŸ%=‡ƒ¾íV²1âÃõfîÉ*õÒøûO/c0Åf䔘õAéYÁƒU°Ðzû½…ÖÕÞµí«=¤Ž¯7Ë{›Á‘X^–¸š²R“yŸM’ý‚ók¥Ø1s>ÅÌCeóPÔþ±1içâx3×™ï~ÎÎ¥:ë¿Jß¹P4‡Ù\ß{„‘—îC};åcV¥Š?Ç>-aD B…ð7W1 ùÖÜÊkÿ˜[ CÌMbÆÎê¤K)J)¿†‚!Åþ)š“°$iÃväm¥Öa[>%\ô CQ»ÙŒW¤ŽÞQmK¶w(:þ”¯¯ôH‰™þî»ôü×'¥Òs{¤½Rv€°«2Ü']äÐøìçýkY“²ûA%¥„â ‚y†~ZÍÖtÙÀ??à^)±ÛI¤ÌÂüN¬c!¢Ò; !„BHJ !)5rRŠ­w¡û¾*QÖ­Œ£–c¬{ÿ‹B!„uÛ?BHJ )%„B!„”â*š¥|()%„B!„8RªŽ÷5HJ !„B!­”BðÔV&¥Êï>T¨P¡B… *T¨P¡ÂƒJJ)T¨P¡B… *T¨P¡¤”B… *T¨P¡B… Ž””Zh]Û^¹1Ó|ëÒÅÕ0äP—B… *T¨P¡B… îeÈÉ¥½—Rè P% xOÅò™/.o¬…¡•RÕ³Þ0!„B!ÄÁ¥ÛÞ¾Oo¿¤šAeeÕ)e#Ù¨õýVU÷T¨P¡B… *T¨Pá~m„«Ö¶åIRJRJ¡B… *T¨P¡BI)I©xÈ=%¥*T¨P¡B… *””JÑ’Rwì=%¥*T¨P¡B… *””JW GTJ…¯²”R¨P¡B… *T¨PRªŒ^8äRj,‚¤”B… *T¨P¡B…’REUƒ¼R’R *T¨P¡B… JJÉ+¥³R *T¨P¡B… *ÔY)½ÁO¡B… *T¨P¡B…zƒßhI©½÷¼B… *T¨P¡B… GYJ wOI)I)… *T¨P¡B… %¥Ž¶”âÁʇ¶¸«º§B… *T¨P¡B… ÷>¬Ã¶?TRjL!„B!ö/¥x… *T¨P¡B… *Üûð@J)û…úB¹D*T¨P¡B… *T˜Ö­Sò]Mÿ#¢ZíãÏwSW« ¹óB!„B‘LÚ$Ô)1Õ{äò𧔚¸>·’"¥êÉÞ|¢P¡B… *T¨P¡Âôp¿”KŸ”j.eR ¬cKRJ¡B… *T¨P¡B…GSJYedEÔ¯β˜¬ª/ÜXûï¯ÖÏ)T¨P¡B… *T¨PaJ¸7ït°ÊÈŠ¨¨”²jO¯_B!„BMBùdÃÿM¦íÉî-ÅIEND®B`‚pygtk2tutorial/sec-SignalEmissionAndPropagation.html0100644000117200001670000000713410227357001022077 0ustar finlayfcf20.2. Signal Emission and Propagation

20.2. Signal Emission and Propagation

Signal emission is the process whereby GTK+ runs all handlers for a specific object and signal.

First, note that the return value from a signal emission is the return value of the last handler executed. Since event signals are all of type RUN_LAST, this will be the default (GTK+ supplied) handler, unless you connect with the connect_after() method.

The way an event (say "button_press_event") is handled, is:

  • Start with the widget where the event occurred.

  • Emit the generic "event" signal. If that signal handler returns a value of TRUE, stop all processing.

  • Otherwise, emit a specific, "button_press_event" signal. If that returns TRUE, stop all processing.

  • Otherwise, go to the widget's parent, and repeat the above two steps.

  • Continue until some signal handler returns TRUE, or until the top-level widget is reached.

Some consequences of the above are:

  • Your handler's return value will have no effect if there is a default handler, unless you connect with connect_after().

  • To prevent the default handler from being run, you need to connect with connect() and use emit_stop_by_name() - the return value only affects whether the signal is propagated, not the current emission.

pygtk2tutorial/sec-GtkList.html0100644000117200001670000000360210227357006015706 0ustar finlayfcfA.8. GtkList

A.8. GtkList

selection-changed(list, data)

select-child(list, widget, data)

unselect-child(list, widget, data)
pygtk2tutorial/ch-MenuWidget.html0100644000117200001670000002651410227356764016236 0ustar finlayfcfChapter 11. Menu Widget

Chapter 11. Menu Widget

There are two ways to create menus: there's the easy way, and there's the hard way. Both have their uses, but you can usually use the ItemFactory (the easy way). The "hard" way is to create all the menus using the calls directly. The easy way is to use the gtk.ItemFactory calls. This is much simpler, but there are advantages and disadvantages to each approach.

Note

In PyGTK 2.4 ItemFactory is deprecated - use the UIManager instead.

The ItemFactory is much easier to use, and to add new menus to, although writing a few wrapper functions to create menus using the manual method could go a long way towards usability. With the Itemfactory, it is not possible to add images or the character '/' to the menus.

11.1. Manual Menu Creation

In the true tradition of teaching, we'll show you the hard way first. :)

There are three widgets that go into making a menubar and submenus:

  • a menu item, which is what the user wants to select, e.g., "Save"

  • a menu, which acts as a container for the menu items, and

  • a menubar, which is a container for each of the individual menus.

This is slightly complicated by the fact that menu item widgets are used for two different things. They are both the widgets that are packed into the menu, and the widget that is packed into the menubar, which, when selected, activates the menu.

Let's look at the functions that are used to create menus and menubars. This first function is used to create a new menubar:

  menu_bar = gtk.MenuBar()

This rather self explanatory function creates a new menubar. You use the gtk.Container add() method to pack this into a window, or the gtk.Box pack methods to pack it into a box - the same as buttons.

  menu = gtk.Menu()

This function returns a reference to a new menu; it is never actually shown (with the show() method), it is just a container for the menu items. I hope this will become more clear when you look at the example below.

The next function is used to create menu items that are packed into the menu (and menubar):

  menu_item = gtk.MenuItem(label=None)

The label, if any, will be parsed for mnemonic characters. This call is used to create the menu items that are to be displayed. Remember to differentiate between a "menu" as created with gtk.Menu() and a "menu item" as created by the gtk.MenuItem() functions. The menu item will be an actual button with an associated action, whereas a menu will be a container holding menu items.

Once you've created a menu item you have to put it into a menu. This is done using the append() method. In order to capture when the item is selected by the user, we need to connect to the "activate" signal in the usual way. So, if we wanted to create a standard File menu, with the options Open, Save, and Quit, the code would look something like:

  file_menu = gtk.Menu()    # Don't need to show menus

  # Create the menu items
  open_item = gtk.MenuItem("Open")
  save_item = gtk.MenuItem("Save")
  quit_item = gtk.MenuItem("Quit")

  # Add them to the menu
  file_menu.append(open_item)
  file_menu.append(save_item)
  file_menu.append(quit_item)

  # Attach the callback functions to the activate signal
  open_item.connect_object("activate", menuitem_response, "file.open")
  save_item.connect_object("activate", menuitem_response, "file.save")

  # We can attach the Quit menu item to our exit function
  quit_item.connect_object ("activate", destroy, "file.quit")

  # We do need to show menu items
  open_item.show()
  save_item.show()
  quit_item.show()

At this point we have our menu. Now we need to create a menubar and a menu item for the File entry, to which we add our menu. The code looks like this:

  menu_bar = gtk.MenuBar()
  window.add(menu_bar)
  menu_bar.show()

  file_item = gtk.MenuItem("File")
  file_item.show()

Now we need to associate the menu with file_item. This is done with the method:

  menu_item.set_submenu(submenu)

So, our example would continue with:

  file_item.set_submenu(file_menu)

All that is left to do is to add the menu to the menubar, which is accomplished using the method:

  menu_bar.append(child)

which in our case looks like this:

  menu_bar.append(file_item)

If we wanted the menu right justified on the menubar, such as help menus often are, we can use the following method (again on file_item in the current example) before attaching it to the menubar.

  menu_item.set_right_justified(right_justified)

Here is a summary of the steps needed to create a menu bar with menus attached:

  • Create a new menu using gtk.Menu()

  • Use multiple calls to gtk.MenuItem() for each item you wish to have on your menu. And use the append() method to put each of these new items on to the menu.

  • Create a menu item using gtk.MenuItem(). This will be the root of the menu, the text appearing here will be on the menubar itself.

  • Use the set_submenu() method to attach the menu to the root menu item (the one created in the above step).

  • Create a new menubar using gtk.MenuBar(). This step only needs to be done once when creating a series of menus on one menu bar.

  • Use the append() method to put the root menu onto the menubar.

Creating a popup menu is nearly the same. The difference is that the menu is not posted "automatically" by a menubar, but explicitly by calling the popup() method from a button-press event, for example. Take these steps:

  • Create an event handling callback. It needs to have the format:

      def handler(widget, event):
    
  • and it will use the event to find out where to pop up the menu.

  • In the event handler, if the event is a mouse button press, treat event as a button event (which it is) and use it as shown in the sample code to pass information to the popup() method.

  • Bind that event handler to a widget with:

      widget.connect_object("event", handler, menu)
    
  • where widget is the widget you are binding to, handler is the handling function, and menu is a menu created with gtk.Menu(). This can be a menu which is also posted by a menu bar, as shown in the sample code.

pygtk2tutorial/ch-PackingWidgets.html0100644000117200001670000001127310227356760017061 0ustar finlayfcfChapter 4. Packing Widgets

Chapter 4. Packing Widgets

When creating an application, you'll want to put more than one widget inside a window. Our first helloworld example only used one widget so we could simply use the gtk.Container add() method to "pack" the widget into the window. But when you want to put more than one widget into a window, how do you control where that widget is positioned? This is where packing comes in.

4.1. Theory of Packing Boxes

Most packing is done by creating boxes. These are invisible widget containers that we can pack our widgets into which come in two forms, a horizontal box, and a vertical box. When packing widgets into a horizontal box, the objects are inserted horizontally from left to right or right to left depending on the call used. In a vertical box, widgets are packed from top to bottom or vice versa. You may use any combination of boxes inside or beside other boxes to create the desired effect.

To create a new horizontal box, we use a call to gtk.HBox(), and for vertical boxes, gtk.VBox() . The pack_start() and pack_end() methods are used to place objects inside of these containers. The pack_start() method will start at the top and work its way down in a vbox, and pack left to right in an hbox. The pack_end() method will do the opposite, packing from bottom to top in a vbox, and right to left in an hbox. Using these methods allows us to right justify or left justify our widgets and may be mixed in any way to achieve the desired effect. We will use pack_start() in most of our examples. An object may be another container or a widget. In fact, many widgets are actually containers themselves, including the button, but we usually only use a label inside a button.

By using these calls, GTK knows where you want to place your widgets so it can do automatic resizing and other nifty things. There are also a number of options as to how your widgets should be packed. As you can imagine, this method gives us a quite a bit of flexibility when placing and creating widgets.

pygtk2tutorial/sec-UsingAdjustmentsTheEasyWay.html0100644000117200001670000000745310227356760021616 0ustar finlayfcf7.2. Using Adjustments the Easy Way

7.2. Using Adjustments the Easy Way

The adjustable widgets can be roughly divided into those which use and require specific units for these values, and those which treat them as arbitrary numbers. The group which treats the values as arbitrary numbers includes the range widgets (scrollbars and scales, the progress bar widget, and the spin button widget). These widgets are all the widgets which are typically "adjusted" directly by the user with the mouse or keyboard. They will treat the lower and upper values of an adjustment as a range within which the user can manipulate the adjustment's value. By default, they will only modify the value of an adjustment.

The other group includes the text widget, the viewport widget, the compound list widget, and the scrolled window widget. All of these widgets use pixel values for their adjustments. These are also all widgets which are typically "adjusted" indirectly using scrollbars. While all widgets which use adjustments can either create their own adjustments or use ones you supply, you'll generally want to let this particular category of widgets create its own adjustments. Usually, they will eventually override all the values except the value itself in whatever adjustments you give them, but the results are, in general, undefined (meaning, you'll have to read the source code to find out, and it may be different from widget to widget).

Now, you're probably thinking, since text widgets and viewports insist on setting everything except the value of their adjustments, while scrollbars will only touch the adjustment's value, if you share an adjustment object between a scrollbar and a text widget, manipulating the scrollbar will automagically adjust the text widget? Of course it will! Just like this:

  # creates its own adjustments
  viewport = gtk.Viewport()
  # uses the newly-created adjustment for the scrollbar as well
  vscrollbar = gtk.VScrollbar(viewport.get_vadjustment())
pygtk2tutorial/sec-GtkToolbar.html0100644000117200001670000000360210227357006016375 0ustar finlayfcfA.10. GtkToolbar

A.10. GtkToolbar

orientation-changed(toolbar, orientation, data)

style-changed(toolbar, toolbar_style, data)
pygtk2tutorial/sec-TreeViewSignals.html0100644000117200001670000001032010227356771017403 0ustar finlayfcf14.7. TreeView Signals

14.7. TreeView Signals

TreeViews emit a large number of signals that you can use to track changes in the view of the model. The signals generally fall into the following categories:

  • expanding and collapsing rows: "row-collapsed", "row-expanded", "test-collapse-row", "test-expand-row" and "expand-collapse-cursor-row"
  • the cursor: "cursor-changed", "expand-collapse-cursor-row", "move-cursor", "select-cursor-parent", "select-cursor-row" and "toggle-cursor-row"
  • selection: "select-all", "select-cursor-parent", "select-cursor-row" and "unselect-all".
  • miscellaneous: "columns-changed", "row-activated", "set-scroll-adjustments" and "start-interactive-search".

The "test-collapse-row" and "test-expand-row" signals are emitted before a row is collapsed or expanded. The return value from your callback can cancel or allow the operation - TRUE to allow and FALSE to cancel.

  def callback(treeview, iter, path, user_data)

where iter is a TreeIter and path is a tree path pointing at the row and user_data is the data specified in the connect() method.

The "row-activated" signal is emitted when a double click occurs on a row or a non-editable row is selected and one of the keys: Space, Shift+Space, Return or Enter is pressed.

The rest of the signals are emitted after the TreeView has changed. The cursor is the row outlined by a box. In most cases moving the cursor also moves the selection. The cursor can be moved independently by Control+Down or Control+Up and various other key combinations.

See the PyGTK Reference Manual for more information on the TreeView signals.

pygtk2tutorial/sec-MenuItems.html0100644000117200001670000000461010227356777016251 0ustar finlayfcf17.3. Menu Items

17.3. Menu Items

17.3.1. Check Menu Item

17.3.2. Radio Menu Item

17.3.3. Separator Menu Item

17.3.4. Tearoff Menu Item

pygtk2tutorial/sec-GtkEditable.html0100644000117200001670000000457410227357005016514 0ustar finlayfcfA.6. GtkEditable

A.6. GtkEditable

changed(editable, data)

insert-text(editable, new_text, text_length, position, data)

delete-text(editable, start_pos, end_pos, data)

activate(editable, data)

set-editable(editable, is_editable, data)

move-cursor(editable, x, y, data)

move-word(editable, num_words, data)

move-page(editable, x, y, data)

move-to-row(editable, row, data)

move-to-column(editable, column, data)

kill-char(editable, direction, data)

kill-word(editable, drirection, data)

kill-line(editable, direction, data)

cut-clipboard(editable, data)

copy-clipboard(editable, data)

paste-clipboard(editable, data)
pygtk2tutorial/ch-TipsForWritingPyGTKApplications.html0100644000117200001670000000410310227357004022320 0ustar finlayfcfChapter 25. Tips For Writing PyGTK Applications

Chapter 25. Tips For Writing PyGTK Applications

This section is simply a gathering of wisdom, general style guidelines and hints to creating good PyGTK applications. Currently this section is very short, but I hope it will get longer in future editions of this tutorial.

pygtk2tutorial/sec-ButtonBoxes.html0100644000117200001670000001711510227356764016617 0ustar finlayfcf10.10. Button Boxes

10.10. Button Boxes

ButtonBoxes are a convenient way to quickly layout a group of buttons. They come in both horizontal and vertical flavors. You create a new ButtonBox with one of the following calls, which create a horizontal or vertical box, respectively:

  hbutton_box = gtk.HButtonBox()

  vbutton_box = gtk.VButtonBox()

The only methods pertaining to button boxes effect how the buttons are laid out.

The layout of the buttons within the box is set using:

  button_box.set_layout(layout_style)

The layout_style argument can take one of the following values:

  BUTTONBOX_DEFAULT_STYLE
  BUTTONBOX_SPREAD
  BUTTONBOX_EDGE
  BUTTONBOX_START
  BUTTONBOX_END

The current layout_style setting can be retrieved using:

  layout_style = button_box.get_layout()

Buttons are added to a ButtonBox using the usual Container method:

  button_box.add(widget)

The buttonbox.py example program illustrates all the different layout settings for ButtonBoxes. The resulting display is:

The source code for the buttonbox.py program is:

    1	#!/usr/bin/env python
    2	
    3	# example buttonbox.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	
    9	class ButtonBoxExample:
   10	    # Create a Button Box with the specified parameters
   11	    def create_bbox(self, horizontal, title, spacing, layout):
   12	        frame = gtk.Frame(title)
   13	
   14	        if horizontal:
   15	            bbox = gtk.HButtonBox()
   16	        else:
   17	            bbox = gtk.VButtonBox()
   18	
   19	        bbox.set_border_width(5)
   20	        frame.add(bbox)
   21	
   22	        # Set the appearance of the Button Box
   23	        bbox.set_layout(layout)
   24	        bbox.set_spacing(spacing)
   25	
   26	        button = gtk.Button(stock=gtk.STOCK_OK)
   27	        bbox.add(button)
   28	
   29	        button = gtk.Button(stock=gtk.STOCK_CANCEL)
   30	        bbox.add(button)
   31	
   32	        button = gtk.Button(stock=gtk.STOCK_HELP)
   33	        bbox.add(button)
   34	
   35	        return frame
   36	
   37	    def __init__(self):
   38	        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   39	        window.set_title("Button Boxes")
   40	
   41	        window.connect("destroy", lambda x: gtk.main_quit())
   42	
   43	        window.set_border_width(10)
   44	
   45	        main_vbox = gtk.VBox(False, 0)
   46	        window.add(main_vbox)
   47	
   48	        frame_horz = gtk.Frame("Horizontal Button Boxes")
   49	        main_vbox.pack_start(frame_horz, True, True, 10)
   50	
   51	        vbox = gtk.VBox(False, 0)
   52	        vbox.set_border_width(10)
   53	        frame_horz.add(vbox)
   54	
   55	        vbox.pack_start(self.create_bbox(True, "Spread (spacing 40)",
   56	                                         40, gtk.BUTTONBOX_SPREAD),
   57	                        True, True, 0)
   58	
   59	        vbox.pack_start(self.create_bbox(True, "Edge (spacing 30)",
   60	                                         30, gtk.BUTTONBOX_EDGE),
   61	                        True, True, 5)
   62	
   63	        vbox.pack_start(self.create_bbox(True, "Start (spacing 20)",
   64	                                         20, gtk.BUTTONBOX_START),
   65	                        True, True, 5)
   66	
   67	        vbox.pack_start(self.create_bbox(True, "End (spacing 10)",
   68	                                         10, gtk.BUTTONBOX_END),
   69	                        True, True, 5)
   70	
   71	        frame_vert = gtk.Frame("Vertical Button Boxes")
   72	        main_vbox.pack_start(frame_vert, True, True, 10)
   73	
   74	        hbox = gtk.HBox(False, 0)
   75	        hbox.set_border_width(10)
   76	        frame_vert.add(hbox)
   77	
   78	        hbox.pack_start(self.create_bbox(False, "Spread (spacing 5)",
   79	                                         5, gtk.BUTTONBOX_SPREAD),
   80	                        True, True, 0)
   81	
   82	        hbox.pack_start(self.create_bbox(False, "Edge (spacing 30)",
   83	                                         30, gtk.BUTTONBOX_EDGE),
   84	                        True, True, 5)
   85	
   86	        hbox.pack_start(self.create_bbox(False, "Start (spacing 20)",
   87	                                         20, gtk.BUTTONBOX_START),
   88	                        True, True, 5)
   89	
   90	        hbox.pack_start(self.create_bbox(False, "End (spacing 20)",
   91	                                         20, gtk.BUTTONBOX_END),
   92	                        True, True, 5)
   93	
   94	        window.show_all()
   95	
   96	def main():
   97	    # Enter the event loop
   98	    gtk.main()
   99	    return 0
  100	
  101	if __name__ == "__main__":
  102	    ButtonBoxExample()
  103	    main()
pygtk2tutorial/sec-WidgetAccelerators.html0100644000117200001670000001073510227357000020077 0ustar finlayfcf18.3. Widget Accelerators

18.3. Widget Accelerators

The following methods:

  widget.add_accelerator(accel_signal, accel_group, accel_key, accel_mods, accel_flags)
  
  widget.remove_accelerator(accel_group, accel_key, accel_mods)

add and remove accelerators from a gtk.AcceleratorGroup that must be attached to the top level widget to handle the accelerators.

The accel_signal is a signal that is valid for the widget to emit.

The accel_key is a keyboard key to use as the accelerator.

The accel_mods are modifiers to add to the accel_key (e.g. Shift, Control, etc.):

  SHIFT_MASK
  LOCK_MASK
  CONTROL_MASK
  MOD1_MASK
  MOD2_MASK
  MOD3_MASK
  MOD4_MASK
  MOD5_MASK
  BUTTON1_MASK
  BUTTON2_MASK
  BUTTON3_MASK
  BUTTON4_MASK
  BUTTON5_MASK
  RELEASE_MASK

The accel_flags set options about how the accelerator information is displayed. Valid values are:

  ACCEL_VISIBLE         # display the accelerator key in the widget display
  
  ACCEL_LOCKED          # do not allow the accelerator display to change

An accelerator group is created by the function:

  accel_group = gtk.AccelGroup()

The accel_group is attached to a top level widget with the following method:

  window.add_accel_group(accel_group)

An example of adding an accelerator:

  menu_item.add_accelerator("activate", accel_group,
                            ord('Q'), gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
pygtk2tutorial/sec-Curves.html0100644000117200001670000000333310227356777015613 0ustar finlayfcf17.4. Curves

17.4. Curves

pygtk2tutorial/sec-ScrolledWindows.html0100644000117200001670000001675210227356763017472 0ustar finlayfcf10.9. Scrolled Windows

10.9. Scrolled Windows

Scrolled windows are used to create a scrollable area with another widget inside it. You may insert any type of widget into a scrolled window, and it will be accessible regardless of the size by using the scrollbars.

The following function is used to create a new scrolled window.

  scrolled_window = gtk.ScrolledWindow(hadjustment=None, vadjustment=None)

Where the first argument is the adjustment for the horizontal direction, and the second, the adjustment for the vertical direction. These are almost always set to None or not specified.

  scrolled_window.set_policy(hscrollbar_policy, vscrollbar_policy)

This method sets the policy to be used with respect to the scrollbars. The first argument sets the policy for the horizontal scrollbar, and the second, the policy for the vertical scrollbar.

The policy may be one of POLICY_AUTOMATIC or POLICY_ALWAYS. POLICY_AUTOMATIC will automatically decide whether you need scrollbars, whereas POLICY_ALWAYS will always leave the scrollbars there.

You can then place your object into the scrolled window using the following method.

  scrolled_window.add_with_viewport(child)

The scrolledwin.py example program packs a table with 100 toggle buttons into a scrolled window. I've only commented on the parts that may be new to you. Figure 10.7, “Scrolled Window Example” illustrates the program display:

Figure 10.7. Scrolled Window Example

Scrolled Window Example

The source code for the scrolledwin.py program is:

    1	#!/usr/bin/env python
    2	
    3	# example scrolledwin.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	
    9	class ScrolledWindowExample:
   10	    def destroy(self, widget):
   11	        gtk.main_quit()
   12	
   13	    def __init__(self):
   14	        # Create a new dialog window for the scrolled window to be
   15	        # packed into. 
   16	        window = gtk.Dialog()
   17	        window.connect("destroy", self.destroy)
   18	        window.set_title("ScrolledWindow example")
   19	        window.set_border_width(0)
   20	        window.set_size_request(300, 300)
   21	
   22	        # create a new scrolled window.
   23	        scrolled_window = gtk.ScrolledWindow()
   24	        scrolled_window.set_border_width(10)
   25	
   26	        # the policy is one of POLICY AUTOMATIC, or POLICY_ALWAYS.
   27	        # POLICY_AUTOMATIC will automatically decide whether you need
   28	        # scrollbars, whereas POLICY_ALWAYS will always leave the scrollbars
   29	        # there. The first one is the horizontal scrollbar, the second, the
   30	        # vertical.
   31	        scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_ALWAYS)
   32	
   33	        # The dialog window is created with a vbox packed into it.
   34	        window.vbox.pack_start(scrolled_window, True, True, 0)
   35	        scrolled_window.show()
   36	    
   37	        # create a table of 10 by 10 squares.
   38	        table = gtk.Table(10, 10, False)
   39	
   40	        # set the spacing to 10 on x and 10 on y
   41	        table.set_row_spacings(10)
   42	        table.set_col_spacings(10)
   43	
   44	        # pack the table into the scrolled window
   45	        scrolled_window.add_with_viewport(table)
   46	        table.show()
   47	
   48	        # this simply creates a grid of toggle buttons on the table
   49	        # to demonstrate the scrolled window.
   50	        for i in range(10):
   51	            for j in range(10):
   52	                buffer = "button (%d,%d)" % (i, j)
   53	                button = gtk.ToggleButton(buffer)
   54	                table.attach(button, i, i+1, j, j+1)
   55	                button.show()
   56	
   57	        # Add a "close" button to the bottom of the dialog
   58	        button = gtk.Button("close")
   59	        button.connect_object("clicked", self.destroy, window)
   60	
   61	        # this makes it so the button is the default.
   62	        button.set_flags(gtk.CAN_DEFAULT)
   63	        window.action_area.pack_start( button, True, True, 0)
   64	
   65	        # This grabs this button to be the default button. Simply hitting
   66	        # the "Enter" key will cause this button to activate.
   67	        button.grab_default()
   68	        button.show()
   69	        window.show()
   70	
   71	def main():
   72	    gtk.main()
   73	    return 0
   74	
   75	if __name__ == "__main__":
   76	    ScrolledWindowExample()
   77	    main()

Try resizing the window. You'll notice how the scrollbars react. You may also wish to use the set_size_request() method to set the default size of the window or other widgets.

pygtk2tutorial/sec-OriginalGTK+Credits.html0100644000117200001670000001107110227357004020025 0ustar finlayfcf27.2. Original GTK+ Credits

27.2. Original GTK+ Credits

The following credits are from the original GTK+ 1.2 and GTK+ 2.0 Tutorials (from which this tutorial has mostly copied verbatim):

  • Bawer Dagdeviren, chamele0n@geocities.com for the menus tutorial.

  • Raph Levien, raph@acm.org for hello world ala GTK, widget packing, and general all around wisdom. He's also generously donated a home for this tutorial.

  • Peter Mattis, petm@xcf.berkeley.edu for the simplest GTK program.. and the ability to make it :)

  • Werner Koch werner.koch@guug.de for converting the original plain text to SGML, and the widget class hierarchy.

  • Mark Crichton crichton@expert.cc.purdue.edu for the menu factory code, and the table packing tutorial.

  • Owen Taylor owt1@cornell.edu for the EventBox widget section (and the patch to the distro). He's also responsible for the selections code and tutorial, as well as the sections on writing your own GTK widgets, and the example application. Thanks a lot Owen for all you help!

  • Mark VanderBoom mvboom42@calvin.edu for his wonderful work on the Notebook, Progress Bar, Dialogs, and File selection widgets. Thanks a lot Mark! You've been a great help.

  • Tim Janik timj@gtk.org for his great job on the Lists Widget. His excellent work on automatically extracting the widget tree and signal information from GTK. Thanks Tim :)

  • Rajat Datta rajat@ix.netcom.com for the excellent job on the Pixmap tutorial.

  • Michael K. Johnson johnsonm@redhat.com for info and code for popup menus.

  • David Huggins-Daines bn711@freenet.carleton.ca for the Range Widgets and Tree Widget sections.

  • Stefan Mars mars@lysator.liu.se for the CList section.

  • David A. Wheeler dwheeler@ida.org for portions of the text on GLib and various tutorial fixups and improvements. The GLib text was in turn based on material developed by Damon Chaplin DAChaplin@msn.com

  • David King for style checking the entire document.

And to all of you who commented on and helped refine this document.

Thanks.

pygtk2tutorial/sec-ScaleWidgets.html0100644000117200001670000001320410227356760016710 0ustar finlayfcf8.2. Scale Widgets

8.2. Scale Widgets

Scale widgets are used to allow the user to visually select and manipulate a value within a specific range. You might want to use a scale widget, for example, to adjust the magnification level on a zoomed preview of a picture, or to control the brightness of a color, or to specify the number of minutes of inactivity before a screensaver takes over the screen.

8.2.1. Creating a Scale Widget

As with scrollbars, there are separate widget types for horizontal and vertical scale widgets. (Most programmers seem to favour horizontal scale widgets.) Since they work essentially the same way, there's no need to treat them separately here. The following methods create vertical and horizontal scale widgets, respectively:

  vscale = gtk.VScale(adjustment=None)

  hscale = gtk.HScale(adjustment=None)

The adjustment argument can either be an adjustment which has already been created with gtk.Adjustment() , or nothing, in which case, an anonymous Adjustment is created with all of its values set to 0.0 (which isn't very useful in this case). In order to avoid confusing yourself, you probably want to create your adjustment with a page_size of 0.0 so that its upper value actually corresponds to the highest value the user can select. (If you're already thoroughly confused, read Chapter 7, Adjustments again for an explanation of what exactly adjustments do and how to create and manipulate them.)

8.2.2.  Methods and Signals (well, methods, at least)

Scale widgets can display their current value as a number beside the trough. The default behaviour is to show the value, but you can change this with this method:

  scale.set_draw_value(draw_value)

As you might have guessed, draw_value is either TRUE or FALSE, with predictable consequences for either one.

The value displayed by a scale widget is rounded to one decimal point by default, as is the value field in its Adjustment. You can change this with:

  scale.set_digits(digits)

where digits is the number of decimal places you want. You can set digits to anything you like, but no more than 13 decimal places will actually be drawn on screen.

Finally, the value can be drawn in different positions relative to the trough:

  scale.set_value_pos(pos)

The argument pos can take one of the following values:

  POS_LEFT
  POS_RIGHT
  POS_TOP
  POS_BOTTOM

If you position the value on the "side" of the trough (e.g., on the top or bottom of a horizontal scale widget), then it will follow the slider up and down the trough.

pygtk2tutorial/sec-DNDMethods.html0100644000117200001670000004526410227357003016265 0ustar finlayfcf22.3. DND Methods

22.3. DND Methods

22.3.1. Setting Up the Source Widget

The method drag_source_set() specifies a set of target types for a drag operation on a widget.

  widget.drag_source_set(start_button_mask, targets, actions)

The parameters signify the following:

  • widget specifies the drag source widget

  • start_button_mask specifies a bitmask of buttons that can start the drag (e.g. BUTTON1_MASK)

  • targets specifies a list of target data types the drag will support

  • actions specifies a bitmask of possible actions for a drag from this window

The targets parameter is a list of tuples each similar to:

  (target, flags, info)

target specifies a string representing the drag type.

flags restrict the drag scope. flags can be set to 0 (no limitation of scope) or the following flags:

  gtk.TARGET_SAME_APP    # Target will only be selected for drags within a single application. 

  gtk.TARGET_SAME_WIDGET # Target will only be selected for drags within a single widget. 

info is an application assigned integer identifier.

If a widget is no longer required to act as a source for drag-and-drop operations, the method drag_source_unset() can be used to remove a set of drag-and-drop target types.

  widget.drag_source_unset()

22.3.2. Signals On the Source Widget

The source widget is sent the following signals during a drag-and-drop operation.

Table 22.1. Source Widget Signals

drag_begindef drag_begin_cb(widget, drag_context, data):
drag_data_getdef drag_data_get_cb(widget, drag_context, selection_data, info, time, data):
drag_data_deletedef drag_data_delete_cb(widget, drag_context, data):
drag_enddef drag_end_cb(widget, drag_context, data):

The "drag-begin" signal handler can be used to set up some inital conditions such as a drag icon using one of the Widget methods: drag_source_set_icon(), drag_source_set_icon_pixbuf(), drag_source_set_icon_stock(). The "drag-end' signal handler can be used to undo the actions of the "drag-begin" signal ahndler.

The "drag-data-get" signal handler should return the drag data matching the target specified by info. It fills in the gtk.gdk.SelectionData with the drag data.

The "drag-delete" signal handler is used to delete the drag data for a gtk.gdk.ACTION_MOVE action after the data has been copied.

22.3.3. Setting Up a Destination Widget

The drag_dest_set() method specifies that this widget can receive drops and specifies what types of drops it can receive.

drag_dest_unset() specifies that the widget can no longer receive drops.

  widget.drag_dest_set(flags, targets, actions)

  widget.drag_dest_unset()

flags specifies what actions GTK+ should take on behalf of widget for drops on it. The possible values of flags are:

gtk.DEST_DEFAULT_MOTION

If set for a widget, GTK+, during a drag over this widget will check if the drag matches this widget's list of possible targets and actions. GTK+ will then call drag_status() as appropriate.

gtk.DEST_DEFAULT_HIGHLIGHT

If set for a widget, GTK+ will draw a highlight on this widget as long as a drag is over this widget and the widget drag format and action is acceptable.

gtk.DEST_DEFAULT_DROP

If set for a widget, when a drop occurs, GTK+ will check if the drag matches this widget's list of possible targets and actions. If so, GTK+ will call drag_get_data() on behalf of the widget. Whether or not the drop is succesful, GTK+ will call drag_finish(). If the action was a move and the drag was succesful, then TRUE will be passed for the delete parameter to drag_finish().

gtk.DEST_DEFAULT_ALL

If set, specifies that all default actions should be taken.

targets is a list of target information tuples as described above.

actions is a bitmask of possible actions for a drag onto this widget. The possible values that can be or'd for actions are:

  gtk.gdk.ACTION_DEFAULT
  gtk.gdk.ACTION_COPY
  gtk.gdk.ACTION_MOVE
  gtk.gdk.ACTION_LINK
  gtk.gdk.ACTION_PRIVATE
  gtk.gdk.ACTION_ASK

targets and actions are ignored if flags does not contain gtk.DEST_DEFAULT_MOTION or gtk.DEST_DEFAULT_DROP. In that case the application must handle the "drag-motion" and "drag-drop" signals.

The "drag-motion" handler must determine if the drag data is appropriate by matching the destination targets with the gtk.gdk.DragContext targets and optionally by examining the drag data by calling the drag_get_data() method. The gtk.gdk.DragContext. drag_status() method must be called to update the drag_context status.

The "drag-drop" handler must determine the matching target using the Widget drag_dest_find_target() method and then ask for the drag data using the Widget drag_get_data() method. The data will be available in the "drag-data-received" handler.

The dragtargets.py program prints out the targets of a drag operation in a label:

    1	#!/usr/local/env python
    2	
    3	import pygtk
    4	pygtk.require('2.0')
    5	import gtk
    6	
    7	def motion_cb(wid, context, x, y, time):
    8	    context.drag_status(gtk.gdk.ACTION_COPY, time)
    9	    return True
   10	
   11	def drop_cb(wid, context, x, y, time):
   12	    l.set_text('\n'.join([str(t) for t in context.targets]))
   13	    return True
   14	
   15	w = gtk.Window()
   16	w.set_size_request(200, 150)
   17	w.drag_dest_set(0, [], 0)
   18	w.connect('drag_motion', motion_cb)
   19	w.connect('drag_drop', drop_cb)
   20	w.connect('destroy', lambda w: gtk.main_quit())
   21	l = gtk.Label()
   22	w.add(l)
   23	w.show_all()
   24	
   25	gtk.main()

The program creates a window and then sets it as a drag destination for no targets and actions by setting the flags to zero. The motion_cb() and drop_cb() handlers are connected to the "drag-motion" and "drag-drop" signals respectively. The motion_cb() handler just sets the drag status for the drag context so that a drop will be enabled. The drop_cb() sets the label text to a string containing the drag targets and ignores the data so the drop never completes.

22.3.4. Signals On the Destination Widget

The destination widget is sent the following signals during a drag-and-drop operation.

Table 22.2. Destination Widget Signals

drag_motiondef drag_motion_cb(widget, drag_context, x, y, time, data):
drag_dropdef drag_drop_cb(widget, drag_context, x, y, time, data):
drag_data_receiveddef drag_data_received_cb(widget, drag_context, x, y, selection_data, info, time, data):

The dragndrop.py example program demonstrates the use of drag and drop in one application. A button with a xpm pixmap (in gtkxpm.py) is the source for the drag; it provides both text and xpm data. A layout widget is the destination for the xpm drop while a button is the destination for the text drop. Figure 22.1, “Drag and Drop Example” illustrates the program display after an xpm drop has been made on the layout and a text drop has been made on the button:

Figure 22.1. Drag and Drop Example

Drag and Drop Example

The dragndrop.py source code is:

    1	#!/usr/bin/env python
    2	
    3	# example dragndrop.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	import string, time
    9	
   10	import gtkxpm
   11	
   12	class DragNDropExample:
   13	    HEIGHT = 600
   14	    WIDTH = 600
   15	    TARGET_TYPE_TEXT = 80
   16	    TARGET_TYPE_PIXMAP = 81
   17	    fromImage = [ ( "text/plain", 0, TARGET_TYPE_TEXT ),
   18	              ( "image/x-xpixmap", 0, TARGET_TYPE_PIXMAP ) ]
   19	    toButton = [ ( "text/plain", 0, TARGET_TYPE_TEXT ) ]
   20	    toCanvas = [ ( "image/x-xpixmap", 0, TARGET_TYPE_PIXMAP ) ]
   21	
   22	    def layout_resize(self, widget, event):
   23	        x, y, width, height = widget.get_allocation()
   24	        if width > self.lwidth or height > self.lheight:
   25	            self.lwidth = max(width, self.lwidth)
   26	            self.lheight = max(height, self.lheight)
   27	            widget.set_size(self.lwidth, self.lheight)
   28	
   29	    def makeLayout(self):
   30	        self.lwidth = self.WIDTH
   31	        self.lheight = self.HEIGHT
   32	        box = gtk.VBox(False,0)
   33	        box.show()
   34	        table = gtk.Table(2, 2, False)
   35	        table.show()
   36	        box.pack_start(table, True, True, 0)
   37	        layout = gtk.Layout()
   38	        self.layout = layout
   39	        layout.set_size(self.lwidth, self.lheight)
   40	        layout.connect("size-allocate", self.layout_resize)
   41	        layout.show()
   42	        table.attach(layout, 0, 1, 0, 1, gtk.FILL|gtk.EXPAND,
   43	                     gtk.FILL|gtk.EXPAND, 0, 0)
   44	        # create the scrollbars and pack into the table
   45	        vScrollbar = gtk.VScrollbar(None)
   46	        vScrollbar.show()
   47	        table.attach(vScrollbar, 1, 2, 0, 1, gtk.FILL|gtk.SHRINK,
   48	                     gtk.FILL|gtk.SHRINK, 0, 0)
   49	        hScrollbar = gtk.HScrollbar(None)
   50	        hScrollbar.show()
   51	        table.attach(hScrollbar, 0, 1, 1, 2, gtk.FILL|gtk.SHRINK,
   52	                     gtk.FILL|gtk.SHRINK,
   53	                     0, 0)	
   54	        # tell the scrollbars to use the layout widget's adjustments
   55	        vAdjust = layout.get_vadjustment()
   56	        vScrollbar.set_adjustment(vAdjust)
   57	        hAdjust = layout.get_hadjustment()
   58	        hScrollbar.set_adjustment(hAdjust)
   59	        layout.connect("drag_data_received", self.receiveCallback)
   60	        layout.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
   61	                                  gtk.DEST_DEFAULT_HIGHLIGHT |
   62	                                  gtk.DEST_DEFAULT_DROP,
   63	                                  self.toCanvas, gtk.gdk.ACTION_COPY)
   64	        self.addImage(gtkxpm.gtk_xpm, 0, 0)
   65	        button = gtk.Button("Text Target")
   66	        button.show()
   67	        button.connect("drag_data_received", self.receiveCallback)
   68	        button.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
   69	                             gtk.DEST_DEFAULT_HIGHLIGHT |
   70	                             gtk.DEST_DEFAULT_DROP,
   71	                             self.toButton, gtk.gdk.ACTION_COPY)
   72	        box.pack_start(button, False, False, 0)
   73	        return box
   74	
   75	    def addImage(self, xpm, xd, yd):
   76	        hadj = self.layout.get_hadjustment()
   77	        vadj = self.layout.get_vadjustment()
   78	        style = self.window.get_style()
   79	        pixmap, mask = gtk.gdk.pixmap_create_from_xpm_d(
   80	            self.window.window, style.bg[gtk.STATE_NORMAL], xpm)
   81	        image = gtk.Image()
   82	        image.set_from_pixmap(pixmap, mask)
   83	        button = gtk.Button()
   84	        button.add(image)
   85	        button.connect("drag_data_get", self.sendCallback)
   86	        button.drag_source_set(gtk.gdk.BUTTON1_MASK, self.fromImage,
   87	                               gtk.gdk.ACTION_COPY)
   88	        button.show_all()
   89	        # have to adjust for the scrolling of the layout - event location
   90	        # is relative to the viewable not the layout size
   91	        self.layout.put(button, int(xd+hadj.value), int(yd+vadj.value))
   92	        return
   93	
   94	    def sendCallback(self, widget, context, selection, targetType, eventTime):
   95	        if targetType == self.TARGET_TYPE_TEXT:
   96	            now = time.time()
   97	            str = time.ctime(now)
   98	            selection.set(selection.target, 8, str)
   99	        elif targetType == self.TARGET_TYPE_PIXMAP:
  100	            selection.set(selection.target, 8,
  101	                          string.join(gtkxpm.gtk_xpm, '\n'))
  102	
  103	    def receiveCallback(self, widget, context, x, y, selection, targetType,
  104	                        time):
  105	        if targetType == self.TARGET_TYPE_TEXT:
  106	            label = widget.get_children()[0]
  107	            label.set_text(selection.data)
  108	        elif targetType == self.TARGET_TYPE_PIXMAP:
  109	            self.addImage(string.split(selection.data, '\n'), x, y)
  110	
  111	    def __init__(self):
  112	        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
  113	        self.window.set_default_size(300, 300)
  114	        self.window.connect("destroy", lambda w: gtk.main_quit())
  115	        self.window.show()
  116	        layout = self.makeLayout()
  117	        self.window.add(layout)
  118	
  119	def main():
  120	    gtk.main()
  121	
  122	if __name__ == "__main__":
  123	    DragNDropExample()
  124	    main()
pygtk2tutorial/sec-PackingUsingTables.html0100644000117200001670000001716410227356757020066 0ustar finlayfcf4.4. Packing Using Tables

4.4. Packing Using Tables

Let's take a look at another way of packing - Tables. These can be extremely useful in certain situations.

Using tables, we create a grid that we can place widgets in. The widgets may take up as many spaces as we specify.

The first thing to look at, of course, is the gtk.Table() function:

  table = gtk.Table(rows=1, columns=1, homogeneous=False)

The first argument is the number of rows to make in the table, while the second, obviously, is the number of columns.

The homogeneous argument has to do with how the table's boxes are sized. If homogeneous is True, the table boxes are resized to the size of the largest widget in the table. If homogeneous is False, the size of a table boxes is dictated by the tallest widget in its same row, and the widest widget in its column.

The rows and columns are laid out from 0 to n, where n was the number specified in the call to gtk.Table(). So, if you specify rows = 2 and columns = 2, the layout would look something like this:

   0          1          2
  0+----------+----------+
   |          |          |
  1+----------+----------+
   |          |          |
  2+----------+----------+

Note that the coordinate system starts in the upper left hand corner. To place a widget into a box, use the following method:

  table.attach(child, left_attach, right_attach, top_attach, bottom_attach,
               xoptions=EXPAND|FILL, yoptions=EXPAND|FILL, xpadding=0, ypadding=0)

The table instance is the table you created with gtk.Table(). The first parameter ("child") is the widget you wish to place in the table.

The left_attach, right_attach, top_attach and bottom_attach arguments specify where to place the widget, and how many boxes to use. If you want a button in the lower right table entry of our 2x2 table, and want it to fill that entry ONLY, left_attach would be = 1, right_attach = 2, top_attach = 1, bottom_attach = 2.

Now, if you wanted a widget to take up the whole top row of our 2x2 table, you'd use left_attach = 0, right_attach = 2, top_attach = 0, bottom_attach = 1.

The xoptions and yoptions are used to specify packing options and may be bitwise OR'ed together to allow multiple options.

These options are:

FILLIf the table cell is larger than the widget, and FILL is specified, the widget will expand to use all the room available in the cell.
SHRINKIf the table widget was allocated less space then was requested (usually by the user resizing the window), then the widgets would normally just be pushed off the bottom of the window and disappear. If SHRINK is specified, the widgets will shrink with the table.
EXPANDThis will cause the table cell to expand to use up any remaining space allocated to the table.

Padding is just like in boxes, creating a clear area around the widget specified in pixels.

We also have set_row_spacing() and set_col_spacing() methods. These add spacing between the rows at the specified row or column.

  table.set_row_spacing(row, spacing)

and

  table.set_col_spacing(column, spacing)

Note that for columns, the space goes to the right of the column, and for rows, the space goes below the row.

You can also set a consistent spacing of all rows and/or columns with:

  table.set_row_spacings(spacing)

and,

  table.set_col_spacings(spacing)

Note that with these calls, the last row and last column do not get any spacing.

pygtk2tutorial/sec-TreeViewDragAndDrop.html0100644000117200001670000004374510227356772020152 0ustar finlayfcf14.9. TreeView Drag and Drop

14.9. TreeView Drag and Drop

14.9.1. Drag and Drop Reordering

Reordering of the TreeView rows (and the underlying tree model rows is enabled by using the set_reorderable() method mentioned above. The set_reorderable() method sets the "reorderable" property to the specified value and enables or disables the internal drag and drop of TreeView rows. When the "reorderable" property is TRUE a user can drag TreeView rows and drop them at a new location. This action causes the underlying TreeModel rows to be rearranged to match. Drag and drop reordering of rows only works with unsorted stores.

14.9.2. External Drag and Drop

If you want to control the drag and drop or deal with drag and drop from external sources, you'll have to enable and control the drag and drop using the following methods:

  treeview.enable_model_drag_source(start_button_mask, targets, actions)
  treeview.enable_model_drag_dest(targets, actions)

These methods enable using rows as a drag source and a drop site respectively. start_button_mask is a modifier mask (see the gtk.gtk Constants reference in the PyGTK Reference Manual) that specifies the buttons or keys that must be pressed to start the drag operation. targets is a list of 3-tuples that describe the target information that can be given or received. For a drag and drop to succeed at least one of the targets must match in the drag source and drag destination (e.g. the "STRING" target). Each target 3-tuple contains the target name, flags (a combination of gtk.TARGET_SAME_APP and gtk.TARGET_SAME_WIDGET or neither) and a unique int identifier. actions describes what the result of the operation should be:

gtk.gdk.ACTION_DEFAULT, gtk.gdk.ACTION_COPY, Copy the data.
gtk.gdk.ACTION_MOVEMove the data, i.e. first copy it, then delete it from the source using the DELETE target of the X selection protocol.
gtk.gdk.ACTION_LINKAdd a link to the data. Note that this is only useful if source and destination agree on what it means.
gtk.gdk.ACTION_PRIVATESpecial action which tells the source that the destination will do something that the source doesn't understand.
gtk.gdk.ACTION_ASKAsk the user what to do with the data.

For example to set up a drag drop destination:

  treeview.enable_model_drag_dest([('text/plain', 0, 0)],
                  gtk.gdk.ACTION_DEFAULT | gtk.gdk.ACTION_MOVE)

Then you'll have to handle the Widget "drag-data-received" signal to receive that dropped data - perhaps replacing the data in the row it was dropped on. The signature for the callback for the "drag-data-received" signal is:

  def callback(widget, drag_context, x, y, selection_data, info, timestamp)

where widget is the TreeView, drag_context is a DragContext containing the context of the selection, x and y are the position where the drop occurred, selection_data is the SelectionData containing the data, info is the ID integer of the type, timestamp is the time when the drop occurred. The row can be identified by calling the method:

  drop_info = treeview.get_dest_row_at_pos(x, y)

where (x, y) is the position passed to the callback function and drop_info is a 2-tuple containing the path of a row and a position constant indicating where the drop is with respect to the row: gtk.TREE_VIEW_DROP_BEFORE, gtk.TREE_VIEW_DROP_AFTER, gtk.TREE_VIEW_DROP_INTO_OR_BEFORE or gtk.TREE_VIEW_DROP_INTO_OR_AFTER. The callback function could be something like:

  treeview.enable_model_drag_dest([('text/plain', 0, 0)],
                  gtk.gdk.ACTION_DEFAULT | gtk.gdk.ACTION_MOVE)
  treeview.connect("drag-data-received", drag_data_received_cb)
  ...
  ...
  def drag_data_received_cb(treeview, context, x, y, selection, info, timestamp):
      drop_info = treeview.get_dest_row_at_pos(x, y)
      if drop_info:
          model = treeview.get_model()
          path, position = drop_info
          data = selection.data
          # do something with the data and the model
          ...
      return
  ...

If a row is being used as a drag source it must handle the Widget "drag-data-get" signal that populates a selection with the data to be passed back to the drag drop destination with a callback function with the signature:

  def callback(widget, drag_context, selection_data, info, timestamp)

The parameters to callback are similar to those of the "drag-data-received" callback function. Since the callback is not passed a tree path or any easy way of retrieving information about the row being dragged, we assume that the row being dragged is selected and the selection mode is gtk.SELECTION_SINGLE or gtk.SELECTION_BROWSE so we can retrieve the row by getting the TreeSelection and retrieving the tree model and TreeIter pointing at the row. For example, text from a row could be passed in the drag drop by:

  ...
  treestore = gtk.TreeStore(str, str)
  ...
  treeview.enable_model_drag_source(gtk.gdk.BUTTON1_MASK,
                  [('text/plain', 0, 0)],
                  gtk.gdk.ACTION_DEFAULT | gtk.gdk.ACTION_MOVE)
  treeview.connect("drag-data-get", drag_data_get_cb)
  ...
  ...
  def drag_data_get_cb(treeview, context, selection, info, timestamp):
      treeselection = treeview.get_selection()
      model, iter = treeselection.get_selected()
      text = model.get_value(iter, 1)
      selection.set('text/plain', 8, text)
      return
  ...

The TreeView can be disabled as a drag source and drop destination by using the methods:

  treeview.unset_rows_drag_source()
  treeview.unset_rows_drag_dest()

14.9.3. TreeView Drag and Drop Example

A simple example program is needed to pull together the pieces of code described above. This example (treeviewdnd.py) is a list that URLs can be dragged from and dropped on. Also the URLs in the list can be reordered by dragging and dropping within the TreeView. A couple of buttons are provided to clear the list and to clear a selected item.

    1   #!/usr/bin/env python
    2
    3   # example treeviewdnd.py
    4
    5   import pygtk
    6   pygtk.require('2.0')
    7   import gtk
    8
    9   class TreeViewDnDExample:
   10
   11       TARGETS = [
   12           ('MY_TREE_MODEL_ROW', gtk.TARGET_SAME_WIDGET, 0),
   13           ('text/plain', 0, 1),
   14           ('TEXT', 0, 2),
   15           ('STRING', 0, 3),
   16           ]
   17       # close the window and quit
   18       def delete_event(self, widget, event, data=None):
   19           gtk.main_quit()
   20           return False
   21
   22       def clear_selected(self, button):
   23           selection = self.treeview.get_selection()
   24           model, iter = selection.get_selected()
   25           if iter:
   26               model.remove(iter)
   27           return
   28
   29       def __init__(self):
   30           # Create a new window
   31           self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   32
   33           self.window.set_title("URL Cache")
   34
   35           self.window.set_size_request(200, 200)
   36
   37           self.window.connect("delete_event", self.delete_event)
   38
   39           self.scrolledwindow = gtk.ScrolledWindow()
   40           self.vbox = gtk.VBox()
   41           self.hbox = gtk.HButtonBox()
   42           self.vbox.pack_start(self.scrolledwindow, True)
   43           self.vbox.pack_start(self.hbox, False)
   44           self.b0 = gtk.Button('Clear All')
   45           self.b1 = gtk.Button('Clear Selected')
   46           self.hbox.pack_start(self.b0)
   47           self.hbox.pack_start(self.b1)
   48
   49           # create a liststore with one string column to use as the model
   50           self.liststore = gtk.ListStore(str)
   51
   52           # create the TreeView using liststore
   53           self.treeview = gtk.TreeView(self.liststore)
   54
   55          # create a CellRenderer to render the data
   56           self.cell = gtk.CellRendererText()
   57
   58           # create the TreeViewColumns to display the data
   59           self.tvcolumn = gtk.TreeViewColumn('URL', self.cell, text=0)
   60
   61           # add columns to treeview
   62           self.treeview.append_column(self.tvcolumn)
   63           self.b0.connect_object('clicked', gtk.ListStore.clear, self.liststore)
   64           self.b1.connect('clicked', self.clear_selected)
   65           # make treeview searchable
   66           self.treeview.set_search_column(0)
   67
   68           # Allow sorting on the column
   69           self.tvcolumn.set_sort_column_id(0)
   70
   71           # Allow enable drag and drop of rows including row move
   72           self.treeview.enable_model_drag_source( gtk.gdk.BUTTON1_MASK,
   73                                                   self.TARGETS,
   74                                                   gtk.gdk.ACTION_DEFAULT|
   75                                                   gtk.gdk.ACTION_MOVE)
   76           self.treeview.enable_model_drag_dest(self.TARGETS,
   77                                                gtk.gdk.ACTION_DEFAULT)
   78
   79           self.treeview.connect("drag_data_get", self.drag_data_get_data)
   80           self.treeview.connect("drag_data_received",
   81                                 self.drag_data_received_data)
   82
   83           self.scrolledwindow.add(self.treeview)
   84           self.window.add(self.vbox)
   85           self.window.show_all()
   86
   87       def drag_data_get_data(self, treeview, context, selection, target_id,
   88                              etime):
   89           treeselection = treeview.get_selection()
   90           model, iter = treeselection.get_selected()
   91           data = model.get_value(iter, 0)
   92           selection.set(selection.target, 8, data)
   93
   94       def drag_data_received_data(self, treeview, context, x, y, selection,
   95                                   info, etime):
   96           model = treeview.get_model()
   97           data = selection.data
   98           drop_info = treeview.get_dest_row_at_pos(x, y)
   99           if drop_info:
  100               path, position = drop_info
  101               iter = model.get_iter(path)
  102               if (position == gtk.TREE_VIEW_DROP_BEFORE
  103                   or position == gtk.TREE_VIEW_DROP_INTO_OR_BEFORE):
  104                   model.insert_before(iter, [data])
  105               else:
  106                   model.insert_after(iter, [data])
  107           else:
  108               model.append([data])
  109           if context.action == gtk.gdk.ACTION_MOVE:
  110               context.finish(True, True, etime)
  111           return
  112
  113   def main():
  114       gtk.main()
  115
  116   if __name__ == "__main__":
  117       treeviewdndex = TreeViewDnDExample()
  118       main()

The result of running the example program treeviewdnd.py is illustrated in Figure 14.8, “TreeView Drag and Drop Example”:

Figure 14.8. TreeView Drag and Drop Example

TreeView Drag and Drop Example

The key to allowing both external drag and drop and internal row reordering is the organization of the targets (the TARGETS attribute - line 11). An application specific target (MY_TREE_MODEL_ROW) is created and used to indicate a drag and drop within the TreeView by setting the gtk.TARGET_SAME_WIDGET flag. By setting this as the first target the drag destination will attempt to match it first with the drag source targets. Next the source drag actions must include gtk.gdk.ACTION_MOVE and gtk.gdk.ACTION_DEFAULT (see lines 72-75). When the destination is receiving the data from the source, if the DragContext action is gtk.gdk.ACTION_MOVE the source is told to delete the data (in this case the row) by calling the DragContext method finish() (see lines 109-110). The TreeView provides a number of internal functions that we are leveraging to drag, drop and delete the data.

pygtk2tutorial/sec-TreeModelInterface.html0100644000117200001670000015267010227356770020047 0ustar finlayfcf14.2. The TreeModel Interface and Data Stores

14.2. The TreeModel Interface and Data Stores

14.2.1. Introduction

The TreeModel interface is implemented by all the TreeModel subclasses and provides methods to:

  • retrieve the characteristics of the data store such as the number of columns and the type of data in a column.
  • retrieve a TreeIter (a transient reference) that points at a row in the model
  • retrieve information about a node (or row) such as the number of its child nodes, a list of its child nodes, the contents of its columns and a pointer to its parent node
  • provide notification of TreeModel data changes

14.2.2. Creating TreeStore and ListStore Objects

The base data store classes: ListStore and TreeStore provide the means to define and manage the rows and columns of data in the tree model. The constructors of both these objects require the column types to be specified as any of:

  • Python types such as the built-in types: int, str, long, float and object
  • PyGTK types such as Button, VBox, gdk.Rectangle, gdk.Pixbuf
  • GObject types (GTK+ GTypes) specified either as GObject Type constants or as strings. Most GTypes are mapped to a Python type:

    • gobject.TYPE_CHAR or 'gchar'
    • gobject.TYPE_UCHAR or 'guchar'
    • gobject.TYPE_BOOLEAN or 'gboolean'
    • gobject.TYPE_INT or 'gint'
    • gobject.TYPE_UINT or 'guint'
    • gobject.TYPE_LONG or 'glong
    • gobject.TYPE_ULONG or 'gulong
    • gobject.TYPE_INT64 or 'gint64'
    • gobject.TYPE_UINT64 or 'guint64'
    • gobject.TYPE_FLOAT or 'gfloat'
    • gobject.TYPE_DOUBLE or 'gdouble'
    • gobject.TYPE_STRING or 'gchararray'
    • gobject.TYPE_OBJECT or 'GObject

For example to create a ListStore or TreeStore with rows containing a gdk.Pixbuf, an integer, a string and boolean you could do something like:

  liststore = ListStore(gtk.gdk.Pixbuf, int, str, 'gboolean')

  treestore = TreeStore(gtk.gdk.Pixbuf, int, str, 'gboolean')

Once a ListStore or TreeStore is created and its columns defined, they cannot be changed or modified. It's also important to realize that there is no preset relation between the columns in a TreeView and the columns of its TreeModel. That is, the fifth column of data in a TreeModel may be displayed in the first column of one TreeView and in the third column in another. So you don't have to worry about how the data will be displayed when creating the data store.

If these two data stores do not fit your application it is possible to define your own custom data store in Python as long as it implements the TreeModel interface. I'll talk more about this later in Section 14.11, “The Generic TreeModel”.

14.2.3. Referring to TreeModel Rows

Before we can talk about managing the data rows in a TreeStore or ListStore we need a way of specifying which row we want to deal with. PyGTK has three ways of referring to TreeModel rows: a tree path, a TreeIter and a TreeRowReference.

14.2.3.1. Tree Paths

A tree path is a int, string or tuple representation of the location of a row in the store. An int value specifies the top level row in the model starting from 0. For example, a tree path value of 4 would specify the fifth row in the store. By comparison, a string representation of the same row would be "4" and the tuple representation would be (4,). This is sufficient for specifying any row in a ListStore but for a TreeStore we have to be able to represent the child rows. For these cases we have to use either the string or tuple representations.

Since a TreeStore can have an arbitrarily deep hierarchy the string representation specifies the path from the top level to the designated row using ints separated by the ":" character. Similarly, the tuple representation specifies the tree path starting from the top level to the row as a sequence of ints. For example, valid tree path string representations are: "0:2" (specifies the row that is the third child of the first row) and "4:0:1" (specifies the row that is the second child of the first child of the fifth row). By comparison the same tree paths are represented by the tuples (0, 2) and (4, 0, 1) respectively.

A tree path provides the only way to map from a TreeView row to a TreeModel row because the tree path of a TreeView row is the same as the tree path of the corresponding TreeModel row. There are also some problems with tree paths:

  • a tree path can specify a row that doesn't exist in the ListStore or TreeStore.
  • a tree path can point to a different data row after inserting or deleting a row in the ListStore or TreeStore.

PyGTK uses the tuple representation when returning tree paths but will accept any of the three forms for a tree path representation. You should use the tuple representation for a tree path for consistency.

A tree path can be retrieved from a TreeIter using the get_path() method:

  path = store.get_path(iter)

where iter is a TreeIter pointing at a row in store and path is the row's tree path as a tuple.

14.2.3.2. TreeIters

A TreeIter is an object that provides a transient reference to a ListStore or TreeStore row. If the contents of the store change (usually because a row is added or deleted) the TreeIters can become invalid. A TreeModel that supports persistent TreeIters should set the gtk.TREE_MODEL_ITERS_PERSIST flag. An application can check for this flag using the get_flags() method.

A TreeIter is created by one of the TreeModel methods that are applicable to both TreeStore and ListStore objects:

  treeiter = store.get_iter(path)

where treeiter points at the row at the tree path path. The ValueError exception is raised if the tree path is invalid.

  treeiter = store.get_iter_first()

where treeiter is a TreeIter pointing at the row at tree path (0,). treeiter will be None if the store is empty.

  treeiter = store.iter_next(iter)

where treeiter is a TreeIter that points at the next row at the same level as the TreeIter specified by iter. treeiter will be None if there is no next row (iter is also invalidated).

The following methods are useful only for retrieving a TreeIter from a TreeStore:

  treeiter = treestore.iter_children(parent)

where treeiter is a TreeIter pointing at the first child row of the row specified by the TreeIter parent. treeiter will be None if there is no child.

  treeiter = treestore.iter_nth_child(parent, n)

where treeiter is a TreeIter pointing at the child row (with the index n) of the row specified by the TreeIter parent. parent may be None to retrieve a top level row. treeiter will be None if there is no child.

  treeiter = treestore.iter_parent(child)

where treeiter is a TreeIter pointing at the parent row of the row specified by the TreeIter child. treeiter will be None if there is no child.

A tree path can be retrieved from a TreeIter using the get_path() method:

  path = store.get_path(iter)

where iter is a Treeiter pointing at a row in store and path is the row's tree path as a tuple.

14.2.3.3. TreeRowReferences

A TreeRowReference is a persistent reference to a row of data in a store. While the tree path (i.e. the location) of the row might change as rows are added to or deleted from the store, the TreeRowReference will point at the same data row as long as it exists.

Note

TreeRowReferences are only available in PyGTK 2.4 and above.

You can create a TreeRowReference using its constructor:

  treerowref = TreeRowReference(model, path)

where model is the TreeModel containing the row and path is the tree path of the row to track. If path isn't a valid tree path for model, None is returned.

14.2.4. Adding Rows

14.2.4.1. Adding Rows to a ListStore

Once you have a ListStore you'll need to add data rows using one of the following methods:

  iter = append(row=None)
  iter = prepend(row=None)
  iter = insert(position, row=None)
  iter = insert_before(sibling, row=None)
  iter = insert_after(sibling, row=None)

Each of these methods inserts a row at an implied or specified position in the ListStore. The append() and prepend() methods use implied positions: after the last row and before the first row, respectively. The insert() method takes an integer (the parameter position) that specifies the location where the row will be inserted. The other two methods take a TreeIter (sibling) that references a row in the ListStore to insert the row before or after.

The row parameter specifies the data that should be inserted in the row after it is created. If row is None or not specified, an empty row will be created. If row is specified it must be a tuple or list containing as many items as the number of columns in the ListStore. The items must also match the data type of their respective ListStore columns.

All methods return a TreeIter that points at the newly inserted row. The following code fragment illustrates the creation of a ListStore and the addition of data rows to it:

  ...
  liststore = gtk.ListStore(int, str, gtk.gdk.Color)
  liststore.append([0,'red',colormap.alloc_color('red')])
  liststore.append([1,'green',colormap.alloc_color('green')])
  iter = liststore.insert(1, (2,'blue',colormap.alloc_color('blue')) )
  iter = liststore.insert_after(iter, [3,'yellow',colormap.alloc_color('blue')])
  ...

14.2.4.2. Adding Rows to a TreeStore

Adding a row to a TreeStore is similar to adding a row to a ListStore except that you also have to specify a parent row (using a TreeIter) to add the new row to. The TreeStore methods are:

  iter = append(parent, row=None)
  iter = prepend(parent, row=None)
  iter = insert(parent, position, row=None)
  iter = insert_before(parent, sibling, row=None)
  iter = insert_after(parent, sibling, row=None)

If parent is None, the row will be added to the top level rows.

Each of these methods inserts a row at an implied or specified position in the TreeStore. The append() and prepend() methods use implied positions: after the last child row and before the first child row, respectively. The insert() method takes an integer (the parameter position) that specifies the location where the child row will be inserted. The other two methods take a TreeIter (sibling) that references a child row in the TreeStore to insert the row before or after.

The row parameter specifies the data that should be inserted in the row after it is created. If row is None or not specified, an empty row will be created. If row is specified it must be a tuple or list containing as many items as the number of columns in the TreeStore. The items must also match the data type of their respective TreeStore columns.

All methods return a TreeIter that points at the newly inserted row. The following code fragment illustrates the creation of a TreeStore and the addition of data rows to it:

  ...
  folderpb = gtk.gdk.pixbuf_from_file('folder.xpm')
  filepb = gtk.gdk.pixbuf_from_file('file.xpm')
  treestore = gtk.TreeStore(int, str, gtk.gdk.Pixbuf)
  iter0 = treestore.append(None, [1,'(0,)',folderpb] )
  treestore.insert(iter0, 0, [11,'(0,0)',filepb])
  treestore.append(iter0, [12,'(0,1)',filepb])
  iter1 = treestore.insert_after(None, iter0, [2,'(1,)',folderpb])
  treestore.insert(iter1, 0, [22,'(1,1)',filepb])
  treestore.prepend(iter1, [21,'(1,0)',filepb])
  ...

14.2.4.3. Large Data Stores

When a ListStore or TreeStore contains a large number of data rows, adding new rows can become very slow. There are a few things that you can do to mitigate this problem:

  • If adding a large number of rows disconnect the TreeModel from its TreeView (using the set_model() method with the model parameter set to None) to avoid TreeView updates for each row entered.
  • Likewise, disable sorting (using the set_default_sort_func() method with the sort_func set to None) while adding a large number of rows.
  • Limit the number of TreeRowReferences in use since they update their path with each addition or removal.
  • Set the TreeView "fixed-height-mode" property to TRUE making all rows have the same height and avoiding the individual calculation of the height of each row. Only available in PyGTK 2.4 and above.

14.2.5. Removing Rows

14.2.5.1. Removing Rows From a ListStore

You can remove a data row from a ListStore by using the remove() method:

  treeiter = liststore.remove(iter)

where iter is a TreeIter pointing at the row to remove. The returned TreeIter (treeiter) points at the next row or is invalid if iter was pointing at the last row.

The clear() method removes all rows from the ListStore:

  liststore.clear()

14.2.5.2. Removing Rows From a TreeStore

The methods for removing data rows from a TreeStore are similar to the ListStore methods:

  result = treestore.remove(iter)
  treestore.clear()

where result is TRUE if the row was removed and iter points at the next valid row. Otherwise, result is FALSE and iter is invalidated.

14.2.6. Managing Row Data

14.2.6.1. Setting and Retrieving Data Values

The methods for accessing the data values in a ListStore and TreeStore have the same format. All store data manipulations use a TreeIter to specify the row that you are working with. Once you have a TreeIter it can be used to retrieve the values of a row column using the get_value() method:

  value = store.get_value(iter, column)

where iter is a TreeIter pointing at a row, column is a column number in store, and, value is the value stored at the row-column location.

If you want to retrieve the values from multiple columns in one call use the get() method:

  values = store.get(iter, column, ...)

where iter is a TreeIter pointing at a row, column is a column number in store, and, ... represents zero or more additional column numbers and values is a tuple containing the retrieved data values. For example to retrieve the values in columns 0 and 2:

  val0, val2 = store.get(iter, 0, 2)

Note

The get() method is only available in PyGTK 2.4 and above.

Setting a single column value is effected using the set_value() method:

  store.set_value(iter, column, value)

where iter (a TreeIter) and column (an int) specify the row-column location in store and column is the column number where value is to be set. value must be the same data type as the store column.

If you wish to set the value of more than one column in a row at a time, use the set() method:

  store.set(iter, ...)

where iter specifies the store row and ... is one or more column number - value pairs indicating the column and and value to set. For example, the following call:

  store.set(iter, 0, 'Foo', 5, 'Bar', 1, 123)

sets the first column to 'Foo', the sixth column to 'Bar' and the second column to 123 in the store row specified by iter.

14.2.6.2. Rearranging ListStore Rows

Individual ListStore rows can be moved using one of the following methods that are available in PyGTK 2.2 and above:

  liststore.swap(a, b)
  liststore.move_after(iter, position)
  liststore.move_before(iter, position)

swap() swaps the locations of the rows referenced by the TreeIters a and b. move_after() and move_before() move the row referenced by the TreeIter iter after or before the row referenced by the TreeIter position. If position is None, move_after() will place the row at the beginning of the store while move_before(), at the end of the store.

If you want to completely rearrange the ListStore data rows, use the following method:

  liststore.reorder(new_order)

where new_order is a list of integers that specify the new row order as:

  new_order[newpos] = oldpos

For example, if liststore contained four rows:

  'one'
  'two'
  'three'
  'four'

The method call:

  liststore.reorder([2, 1, 3, 0])

would produce the resulting order:

  'three'
  'two'
  'four'
  'one'

Note

These methods will only rearrange unsorted ListStores.

If you want to rearrange rows in PyGTK 2.0 you have to remove and insert rows using the methods described in Section 14.2.4, “Adding Rows” and Section 14.2.5, “Removing Rows”.

14.2.6.3. Rearranging TreeStore Rows

The methods used to rearrange TreeStore rows are similar to the ListStore methods except they only affect the child rows of an implied parent row - it is not possible to, say, swap rows with different parent rows.:

  treestore.swap(a, b)
  treestore.move_after(iter, position)
  treestore.move_before(iter, position)

swap() swaps the locations of the child rows referenced by the TreeIters a and b. a and b must both have the same parent row. move_after() and move_before() move the row referenced by the TreeIter iter after or before the row referenced by the TreeIter position. iter and position must both have the same parent row. If position is None, move_after() will place the row at the beginning of the store while move_before(), at the end of the store.

The reorder() method requires an additional parameter specifying the parent row whose child rows will be reordered:

  treestore.reorder(parent, new_order)

where new_order is a list of integers that specify the new child row order of the parent row specified by the TreeIter parent as:

  new_order[newpos] = oldpos

For example, if treestore contained four rows:

  'parent'
      'one'
      'two'
      'three'
      'four'

The method call:

  treestore.reorder(parent, [2, 1, 3, 0])

would produce the resulting order:

  'parent'
      'three'
      'two'
      'four'
      'one'

Note

These methods will only rearrange unsorted TreeStores.

14.2.6.4. Managing Multiple Rows

One of the trickier aspects of dealing with ListStores and TreeStores is the operation on multiple rows, e.g. moving multiple rows, say, from one parent row to another or removing rows based on certain criteria. The difficulty arises from the need to use a TreeIter that may become invalid as the result of the operation. For ListStores and TreeStores the TreeIters are persistent as can be checked by using the get_flags() method and testing for the gtk.TREE_MODEL_ITERS_PERSIST flag. However the stackable TreeModelFilter and TreeModelSort classes do not have persistent TreeIters.

Assuming that TreeIters don't persist how do we move all the child rows from one parent row to another? We have to:

  • iterate over the parent's children
  • retrieve each row's data
  • remove each child row
  • insert a new row with the old row data in the new parent's list

We can't rely on the remove() method to return a valid TreeIter so we'll just ask for the first child iter until it returns None. A possible function to move child rows is:

  def move_child_rows(treestore, from_parent, to_parent):
    n_columns = treestore.get_n_columns()
    iter = treestore.iter_children(from_parent)
    while iter:
      values = treestore.get(iter, *range(n_columns))
      treestore.remove(iter)
      treestore.append(to_parent, values)
      iter = treestore.iter_children(from_parent)
    return

The above function covers the simple case of moving all child rows of a single parent row but what if you want to remove all rows in the TreeStore based on some match criteria, say the first column value? Here you might think that you could use the foreach() method to iterate over all the rows and remove the matching ones:

  store.foreach(func, user_data)

where func is a function that is invoked for each store row and has the signature:

  def func(model, path, iter, user_data):

where model is the TreeModel data store, path is the tree path of a row in model, iter is a TreeIter pointing at path and user_data is the passed in data. if func returns TRUE the foreach() method will cease iterating and return.

The problem with that is that changing the contents of the store while the foreach() method is iterating over it may have unpredictable results. Using the foreach() method to create and save TreeRowReferences to the rows to be removed and then removing them after the foreach() method completes would be a good strategy except that it doesn't work for PyGTK 2.0 and 2.2 where TreeRowReferences are not available.

A reliable strategy that covers all the PyGTK variants is to use the foreach() method to gather the tree paths of rows to be removed and then remove them in reverse order to preserve the validity of the tree paths. An example code fragment utilizing this strategy is:

  ...
  # match if the value in the first column is >= the passed in value
  # data is a tuple containing the match value and a list to save paths
  def match_value_cb(model, path, iter, data):
    if model.get_value(iter, 0) >= data[0]:
      data[1].append(path)
    return False     # keep the foreach going

  pathlist = []
  treestore.foreach(match_value_cb, (10, pathlist))

  # foreach works in a depth first fashion
  pathlist.reverse()
  for path in pathlist:
    treestore.remove(treestore.get_iter(path))
  ...

If you want to search a TreeStore for the first row that matches some criteria, you probably want to do the iteration yourself using something like:

   treestore = TreeStore(str)
   ...
   def match_func(model, iter, data):
       column, key = data # data is a tuple containing column number, key
       value = model.get_value(iter, column)
       return value == key
   def search(model, iter, func, data):
       while iter:
           if func(model, iter, data):
               return iter
           result = search(model, model.iter_children(iter), func, data)
           if result: return result
           iter = model.iter_next(iter)
       return None
   ...
   match_iter = search(treestore, treestore.iter_children(None), 
                       match_func, (0, 'foo'))

The search() function iterates recursively over the row (specified by iter) and its siblings and their child rows in a depth first fashion looking for a row that has a column matching the given key string. The search terminates when a row is found.

14.2.7. Python Protocol Support

The classes that implement the TreeModel interface (TreeStore and ListStore and in PyGTK 2.4, also the TreeModelSort and TreeModelFilter) support the Python mapping and iterator protocols. The iterator protocol allows you to use the Python iter() function on a TreeModel to create an iterator to be used to iterate over the top level rows in the TreeModel. A more useful capability is to iterate using the for statement or a list comprehension. For example:

  ...
  liststore = gtk.ListStore(str, str)
  ...
  # add some rows to liststore
  ...
  # for looping
  for row in liststore:
      # do individual row processing
  ...
  # list comprehension returning a list of values in the first column
  values = [ r[0] for r in liststore ]
  ...

Other parts of the mapping protocols that are supported are using del to delete a row in the model and extracting a PyGTK TreeModelRow from the model using a key value that is a tree path or TreeIter. For example, the following statements all return the first row in a TreeModel and the final statement deletes the first child row of the first row:

  row = model[0]
  row = model['0']
  row = model["0"]
  row = model[(0,)]
  i = model.get_iter(0)
  row = model[i]
  del model[(0,0)]

In addition, you can set the values in an existing row similar to the following:

  ...
  liststore = gtk.ListStore(str, int, object)
  ...
  liststore[0] = ['Button', 23, gtk.Button('Label')]

A PyGTK TreeModelRow object supports the Python sequence and iterator protocols. You can get an iterator to iterate over the column values in the row or use the for statement or list comprehension as well. A TreeModelRow uses the column number as the index to extract a value. For example:

  ...
  liststore = gtk.ListStore(str, int)
  liststore.append(['Random string', 514])
  ...
  row = liststore[0]
  value1 = row[1]
  value0 = liststore['0'][0]
  for value in row:
      print value
  val0, val1 = row
  ...

Using the example from the previous section to iterate over a TreeStore to locate a row containing a particular value, the code becomes:

   treestore = TreeStore(str)
   ...
   def match_func(row, data):
       column, key = data # data is a tuple containing column number, key
       return row[column] == key
   ...
   def search(rows, func, data):
       if not rows: return None
       for row in rows:
           if func(row, data):
               return row
           result = search(row.iterchildren(), func, data)
           if result: return result
       return None
   ...
   match_row = search(treestore, match_func, (0, 'foo'))

You can also set a value in an existing column using:

  treestore[(1,0,1)][1] = 'abc'

The TreeModelRow also supports the del statement and conversion to lists and tuples using the Python list() and tuple() functions. As illustrated in the above example the TreeModelRow has the iterchildren() method that returns an iterator for iterating over the child rows of the TreeModelRow.

14.2.8. TreeModel Signals

Your application can track changes in a TreeModel by connecting to the signals that are emitted by the TreeModel: "row-changed", "row-deleted", "row-inserted", "row-has-child-toggled" and "rows-reordered". These signals are used by a TreeView to track changes in its TreeModel.

If you connect to these signals in your application, you may see clusters of signals when some methods are called. For example the call to add the first child row to a parent row:

  treestore.append(parent, ['qwe', 'asd', 123])

will cause the following signal emissions:

  • "row-inserted" where the inserted row will be empty.
  • "row-has-child-toggled" since parent didn't previously have any child rows.
  • "row-changed" for the inserted row when setting the value 'qwe' in the first column.
  • "row-changed" for the inserted row when setting the value 'asd in the second column.
  • "row-changed" for the inserted row when setting the value 123 in the third column.

Note that you can't retrieve the row order in the "rows-reordered" callback since the new row order is passed as an opaque pointer to an array of integers.

See the PyGTK Reference Manual for more information on the TreeModel signals.

14.2.9. Sorting TreeModel Rows

14.2.9.1. The TreeSortable Interface

The ListStore and TreeStore objects implement the TreeSortable interface that provides methods for controlling the sorting of TreeModel rows. The key element of the interface is a "sort column ID" which is an arbitrary integer value referring to a sort comparison function and associated user data. A sort column ID must be greater than or equal to zero. A sort column ID is created by using the method:

  treesortable.set_sort_func(sort_column_id, sort_func, user_data=None)

where sort_column_id is a programmer assigned integer value, sort_func is a function or method used to compare rows and user_data is context data. sort_func has the signature:

  def sort_func_function(model, iter1, iter2, data)
  def sort_func_method(self, model, iter1, iter2, data)

where model is the TreeModel containing the rows pointed to by the TreeIters iter1 and iter2 and data is user_data. sort_func should return: -1 if the iter1 row should precede the iter2 row; 0, if the rows are equal; and, 1 if the iter2 row should precede the iter1 row. The sort comparison function should always assume that the sort order is gtk.SORT_ASCENDING as the sort order will be taken into account by the TreeSortable implementations.

The same sort comparison function can be used for multiple sort column IDs by varying the user_data to provide context information. For example, the user_data specified in the set_sort_func() method could be the index of the column to extract the sort data from.

Once a sort column ID is created a store can use it for sorting by calling the method:

  treesortable.set_sort_column_id(sort_column_id, order)

where order is the sort order either gtk.SORT_ASCENDING or gtk.SORT_DESCENDING.

The sort column ID of -1 means that the store should use the default sort function that is set using the method:

  treesortable.set_default_sort_func(sort_func, user_data=None)

You can check if a store has a default sort function using the method:

  result = treesortable.has_default_sort_func()

which returns TRUE if a default sort function has been set.

Once a sort column ID has been set on a TreeModel implementing the TreeSortable interface it cannot be returned to the original unsorted state. You can change the sort function or use a default sort function but you cannot set the TreeModel to have no sort function.

14.2.9.2. Sorting in ListStores and TreeStores

When a ListStore or TreeStore object is created it automatically sets up sort column IDs corresponding to the columns in the store using the column index number. For example, a ListStore with three columns would have three sort column IDs (0, 1, 2) setup automatically. These sort column IDs are associated with an internal sort comparison function that handles the fundamental types:

  • 'gboolean'
  • str
  • int
  • long
  • float

Initially a ListStore or TreeStore is set with a sort column ID of -2 that indicates that no sort function is being used and that the store is unsorted. Once you set a sort column ID on a ListStore or TreeStore you cannot set it back to -2.

If you want to maintain the default sort column IDs you can set up a sort column ID well out of the range of the number of columns such as 1000 and up. Then you can switch between the default sort function and your application sort functions as needed.

pygtk2tutorial/sec-GammaCurve.html0100644000117200001670000000347710227357000016360 0ustar finlayfcf17.6. Gamma Curve

17.6. Gamma Curve

pygtk2tutorial/ch-DrawingArea.html0100644000117200001670000004723510227356765016356 0ustar finlayfcfChapter 12. Drawing Area

Chapter 12. Drawing Area

The DrawingArea widget wraps a gtk.gdk.Window which is a subclass of gtk.gdk.Drawable (as is a gtk.gdk.Pixmap). In effect the DrawingArea provides a simple 'canvas' area (the wrapped gtk.gdk.Window) that can be drawn on using the methods of the gtk.gdk.Drawable class.

A DrawingArea is created using the constructor:

  drawing_area = gtk.DrawingArea()

A DrawingArea is initially created with a size of (0, 0) so you should use the following method to make the drawing_area visible by setting its width and height to useful values greater than zero:

  drawing_area.set_size_request(width, height)

To draw on a DrawingArea you must retrieve the wrapped gtk.gdk.Window using the window attribute of the DrawingArea as follows:

  drawable = drawing_area.window

Then you can draw on drawable using the gtk.gdk.Drawable methods described in Section 12.2, “Drawing Methods”.

Note

The DrawingArea must be realized (i.e. the Widget methods realize() or show() have been called) to have an associated gtk.gdk.Window that can be used for drawing.

12.1. Graphics Context

A variety of methods are available to draw onto the gtk.gdk.Window of a DrawingArea. All these methods require a graphics context (gtk.gdk.GC) to encapsulate, as attributes, the information required for drawing. The attributes of a gtk.gdk.GC are:

background
cap_style
clip_mask
clip_x_origin
clip_y_origin
fill
font
foreground
function
graphics_exposures
join_style
line_style
line_width
stipple
sub_window
tile
ts_x_origin
ts_y_origin

background specifies an allocated gtk.gdk.Color that is used to draw the background color.

foreground specifies an allocated gtk.gdk.Color that is used to draw the foreground color.

A gtk.gdk.Color represents a color that may be allocated or unallocated. An unallocated color can be created using the constructor:

  color = gtk.gdk.Color(red=0, green=0, blue=0, pixel=0)

where red, green and blue are integers in the range of 0 to 65535. pixel is not usually specified because it is overwritten when the color is allocated.

Alternatively, an unallocated gtk.gdk.Color can be created using the function:

  color = gtk.gdk.color_parse(spec)

where spec is a color specification string that can be either:

  • a color name (e.g. "red", "orange", "navajo white" as defined in the X Window file rgb.txt), or
  • a hexadecimal string starting with '#' and containing three sets of hex digits of the same length (1, 2, 3 or 4 digits). For example, "#F0A", "#FF00AA", "#FFF000AAA" and "#FFFF0000AAAA" all represent the same color.

A gtk.gdk.Color representing an allocated color is created using the gtk.gdk.Colormap alloc_color() method which has three signatures:

  color = colormap.alloc_color(color, writeable=FALSE, best_match=TRUE)

  color = colormap.alloc_color(spec, writeable=FALSE, best_match=TRUE)

  color = colormap.alloc_color(red, green, blue, writeable=FALSE, best_match=TRUE)

color is an unallocated gtk.gdk.Color. spec is a color specification string as described above for the gtk.gdk.color_parse() function. red, green and blue are integer color values as described for the gtk.gdk.Color() constructor. You can optionally specify whether the allocated color should be writeable (i.e. can be changed later but cannot be shared) or whether a best match with existing colors should be made if the exact color is not available.

For example:

  navajowhite = colormap.alloc('navajo white')

  cyan = colormap.alloc(0, 65535, 65535)

  red = colormap.alloc_color('#FF0000', True, True)

The colormap associated with a widget can be retrieved using the method:

  colormap = widget.get_colormap()

cap_style specifies the line ending style that is used when drawing the end of a line that is not joined to another line. The available cap styles are:

CAP_NOT_LASTdraws line ends the same as CAP_BUTT for lines of non-zero width. For zero width lines, the final point on the line will not be drawn.
CAP_BUTTthe ends of the lines are drawn squared off and extending to the coordinates of the end point.
CAP_ROUNDthe ends of the lines are drawn as semicircles with the diameter equal to the line width and centered at the end point.
CAP_PROJECTINGthe ends of the lines are drawn squared off and extending half the width of the line beyond the end point.

clip_mask specifies a gtk.gdk.Pixmap that is used to clip the drawing in the drawing_area.

clip_x_origin and clip_y_origin specify the origin x and y values relative to the upper left corner of the drawing_area for clipping.

fill specifies the fill style to be used when drawing. The available fill styles are:

SOLIDdraw with the foreground color.
TILEDdraw with a tiled pixmap.
STIPPLEDdraw using the stipple bitmap. Pixels corresponding to bits in the stipple bitmap that are set will be drawn in the foreground color; pixels corresponding to bits that are not set will be left untouched.
OPAQUE_STIPPLEDdraw using the stipple bitmap. Pixels corresponding to bits in the stipple bitmap that are set will be drawn in the foreground color; pixels corresponding to bits that are not set will be drawn with the background color.

font is a gtk.gdk.Font that is used as the default font for drawing text.

Note

The use of the font attribute is deprecated.

function specifies how the bit values for the source pixels are combined with the bit values for destination pixels to produce the resulting pixels bits. The sixteen values here correspond to the 16 different possible 2x2 truth tables but only a couple of these values are usually useful. For color images, only COPY, XOR and INVERT are generally useful while for bitmaps, AND and OR are also useful. The function values are:

  COPY
  INVERT
  XOR
  CLEAR
  AND
  AND_REVERSE
  AND_INVERT
  NOOP
  OR
  EQUIV
  OR_REVERSE
  COPY_INVERT
  OR_INVERT
  NAND
  SET

graphics_exposures specifies whether graphics exposures are enabled (TRUE) or disabled (FALSE). When graphics_exposures is TRUE, a failure when copy pixels in a drawing operation will cause an expose event to be issued. If the copy succeeds, a noexpose event is issued.

join_style specifies the style of joint to be used when lines meet at an angle. The available styles are:

JOIN_MITERthe sides of each line are extended to meet at an angle.
JOIN_ROUNDthe sides of the two lines are joined by a circular arc.
JOIN_BEVELthe sides of the two lines are joined by a straight line which makes an equal angle with each line.

line_style specifies the style that a line will be drawn with. The available styles are:

LINE_SOLIDlines are drawn as continuous segments.
LINE_ON_OFF_DASHeven segments are drawn; odd segments are not drawn.
LINE_DOUBLE_DASHeven segments are normally. Odd segments are drawn in the background color if the fill style is SOLID, or in the background color masked by the stipple if the fill style is STIPPLED.

line_width specifies the width that lines will be drawn with.

stipple specifies the gtk.gdk.Pixmap that will be used for stippled drawing when the fill is set to either STIPPLED or OPAQUE_STIPPLED.

sub_window specifies the mode of drawing into a gtk.gdk.Window that has child gtk.gdk.Windows. The possible values of sub_window are:

CLIP_BY_CHILDRENonly draw onto the window itself but not its child windows
INCLUDE_INFERIORSdraw onto the window and its child windows.

tile specifies the gtk.gdk.Pixmap to used for tiled drawing when the fill is set to TILED.

ts_x_origin and ts_y_origin specify the tiling/stippling origin (the starting position for the stippling bitmap or tiling pixmap).

A new Graphics Context is created by a call to the gtk.gdk.Drawable.new_gc() method:

gc = drawable.new_gc(foreground=None, background=None, font=None, 
                     function=-1, fill=-1, tile=None,
                     stipple=None, clip_mask=None, subwindow_mode=-1,
                     ts_x_origin=-1, ts_y_origin=-1, clip_x_origin=-1,
                     clip_y_origin=-1, graphics_exposures=-1,
                     line_width=-1, line_style=-1, cap_style=-1
                     join_style=-1)

In order for a new Graphics Context to be created with this method, the drawable must be:

  • a gtk.gdk.Window which has been realized (created), or;

  • a gtk.gdk.Pixmap associated with a realized gtk.gdk.Window.

The various attributes of the Graphics Context have default values if not set in the new_gc() method. If you want to set the GC attributes using the new_gc() method, it's much easier to use the Python keyword arguments.

The individual attributes of a gtk.gdk.GC can also be set by assigning a value to the GC object attribute. For example:

  gc.cap_style = CAP_BUTT
  gc.line_width = 10
  gc.fill = SOLD
  gc.foreground = mycolor

or by using the following methods:

  gc.set_foreground(color)
  gc.set_background(color)
  gc.set_function(function)
  gc.set_fill(fill)
  gc.set_tile(tile)
  gc.set_stipple(stipple)
  gc.set_ts_origin(x, y)
  gc.set_clip_origin(x, y)
  gc.set_clip_mask(mask)
  gc.set_clip_rectangle(rectangle)
  gc.set_subwindow(mode)
  gc.set_exposures(exposures)
  gc.set_line_attributes(line_width, line_style, cap_style, join_style)

The dash pattern to be used when the line_style is LINE_ON_OFF_DASH or LINE_DOUBLE_DASH can be set using the following method:

  gc.set_dashes(offset, dash_list)

where offset is the index of the starting dash value in dash_list and dash_list is a list or tuple containing numbers of pixels to be drawn or skipped to form the dashes. The dashes are drawn starting with the number of pixels at the offset position; then the next number of pixels is skipped; and then the next number is drawn; and so on rotating through all the dash_list numbers and starting over when the end is reached. For example, if the dash_list is (2, 4, 8, 16) and the offset is 1, the dashes will be drawn as: draw 4 pixels, skip 8 pixels, draw 16 pixels, skip 2 pixels, draw 4 pixels and so on.

A copy of an existing gtk.gdk.GC can be made using the method:

  gc.copy(src_gc)

The attributes of gc will then be the same as src_gc.

pygtk2tutorial/sec-PlugsAndSockets.html0100644000117200001670000002541610227356764017417 0ustar finlayfcf10.13. Plugs and Sockets

10.13. Plugs and Sockets

Plugs and Sockets cooperate to embed the user interface from one process into another process. This can also be accomplished using Bonobo.

10.13.1. Plugs

A Plug encapsulates a user interface provided by one application so that it can be embedded in another application's user interface. The "embedded" signal alerts the plug application that the plug has been embedded in the other application's user interface.

A Plug is created using the following function:

  plug = gtk.Plug(socket_id)

which creates a new Plug and embeds it in the Socket identified by socket_id. If socket_id is 0L, the plug is left "unplugged" and can later be plugged into a Socket using the Socket add_id() method.

The Plug method:

  id = plug.get_id()

returns the window ID of a Plug, that can be used to embed it inside a Socket using the Socket add_id() method.

The plug.py example program illustrates the use of a Plug:

    1	#!/usr/bin/python
    2	
    3	import pygtk
    4	pygtk.require('2.0')
    5	import gtk,sys
    6	
    7	Wid = 0L
    8	if len(sys.argv) == 2:
    9	    Wid = long(sys.argv[1])
   10	
   11	plug = gtk.Plug(Wid)
   12	print "Plug ID=", plug.get_id()
   13	
   14	def embed_event(widget):
   15	    print "I (",widget,") have just been embedded!"
   16	
   17	plug.connect("embedded", embed_event)
   18	
   19	entry = gtk.Entry()
   20	entry.set_text("hello")
   21	def entry_point(widget):
   22	    print "You've changed my text to '%s'" % widget.get_text()
   23	
   24	entry.connect("changed", entry_point)
   25	plug.connect("destroy", gtk.mainquit)
   26	
   27	plug.add(entry)
   28	plug.show_all()
   29	
   30	
   31	gtk.mainloop()

The program is invoked like:

  plug.py [windowID]

where windowID is the ID of a Socket to connect the Plug to.

10.13.2. Sockets

A Socket provides the widget to embed a Plug widget from another application into your GUI transparently. An application creates a Socket widget and, passes that widget's window ID to another application, which then creates a Plug using that window ID as a parameter. Any widgets contained in the Plug appear inside the first application's window.

The Socket window ID is obtained by using the Socket method get_id(). Before using this method, the Socket must be realized, and added to its parent.

Note

If you pass the window ID of the Socket to another process that will create a Plug in the Socket, you must make sure that the Socket widget is not destroyed until that Plug is created.

When GTK+ is notified that the embedded window has been destroyed, then it will destroy the Socket as well. You should always, therefore, be prepared for your sockets to be destroyed at any time when the main event loop is running. Destroying a Socket will cause an embedded Plug to be destroyed as well.

The communication between a Socket and a Plug follows the XEmbed protocol. This protocol has also been implemented in other toolkits, e.g. Qt, allowing the same level of integration when embedding a Qt widget in GTK or vice versa.

Create a new empty Socket:

  socket = gtk.Socket()

The Socket must be contained in a toplevel window before you invoke the add_id() method:

  socket.add_id(window_id)

which adds an XEMBED client, such as a Plug, to the Socket. The client may be in the same process or in a different process.

To embed a Plug in a Socket, you can either create the Plug with:

  plug = gtk.Plug(0L)

and then pass the number returned by the Plug get_id() method to the Socket add_id() method:

  socket.add_id(plug)

or you can invoke the Socket get_id() method:

    window_id = socket.get_id()

to get the window ID for the socket, and then create the plug with:

  plug = gtk.Plug(window_id)

The Socket must have already be added into a toplevel window before you can make this call.

The socket.py example program illustrates the use of a Socket:

    1	#!/usr/bin/python
    2	
    3	import string
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk,sys
    8	
    9	window = gtk.Window()
   10	window.show()
   11	
   12	socket = gtk.Socket()
   13	socket.show()
   14	window.add(socket)
   15	
   16	print "Socket ID=", socket.get_id()
   17	window.connect("destroy", gtk.mainquit)
   18	
   19	def plugged_event(widget):
   20	    print "I (",widget,") have just had a plug inserted!"
   21	
   22	socket.connect("plug-added", plugged_event)
   23	
   24	if len(sys.argv) == 2:
   25	    socket.add_id(long(sys.argv[1]))
   26	
   27	gtk.mainloop()

To run the example you can either run plug.py first:

  $ python plug.py
  Plug ID= 20971522

and copy the output ID to the first arg of socket.py:

  $ python socket.py 20971522
  Socket ID= 48234523
  I ( <gtk.Plug object (GtkPlug) at 0x3008dd78> ) have just been embedded!
  I ( <gtk.Socket object (GtkSocket) at 0x3008ddf0> ) have just had a plug inserted!

Or you can run socket.py:

  $ python socket.py
  Socket ID= 20971547

and then run plug.py, copying across the window ID:

  $ python plug.py
  20971547
  I ( <gtk.Socket object (GtkSocket) at 0x3008ddf0> ) have just had a plug inserted!
  Plug ID= 48234498
pygtk2tutorial/sec-TextTagsAndTextTagTables.html0100644000117200001670000003077110227356766021172 0ustar finlayfcf13.6. Text Tags and Tag Tables

13.6. Text Tags and Tag Tables

TextTags specify attributes that can be applied to a range of text in a TextBuffer. Each TextBuffer has a TextTagTable that contains the TextTags that can be applied within the TextBuffer. TextTagTables can be used with more than one TextBuffer to provide consistent text styles.

13.6.1. Text Tags

TextTags can be named or anonymous. A TextTag is created using the function:

  tag = gtk.TextTag(name=None)

If name is not specified or is None the tag will be anonymous. TextTags can also be created using the TextBuffer convenience method create_tag() which also allows you specify the tag attributes and adds the tag to the buffer's tag table (see Section 13.3, “Text Buffers”).

The attributes that can be contained in a TextTag are:

nameRead / WriteName of the text tag. None if anonymous.
backgroundWriteBackground color as a string
foregroundWriteForeground color as a string
background-gdkRead / WriteBackground color as a GdkColor
foreground-gdkRead / WriteForeground color as a GdkColor
background-stippleRead / WriteBitmap to use as a mask when drawing the text background
foreground-stippleRead / WriteBitmap to use as a mask when drawing the text foreground
fontRead / WriteFont description as a string, e.g. "Sans Italic 12"
font-descRead / WriteFont description as a PangoFontDescription
familyRead / WriteName of the font family, e.g. Sans, Helvetica, Times, Monospace
styleRead / WriteFont style as a PangoStyle, e.g. pango.STYLE_ITALIC.
variantRead / WriteFont variant as a PangoVariant, e.g. pango.VARIANT_SMALL_CAPS.
weightRead / WriteFont weight as an integer, see predefined values in PangoWeight; for example, pango.WEIGHT_BOLD.
stretchRead / WriteFont stretch as a PangoStretch, e.g. pango.STRETCH_CONDENSED.
sizeRead / WriteFont size in Pango units.
size-pointsRead / WriteFont size in points
scaleRead / WriteFont size as a scale factor relative to the default font size. This properly adapts to theme changes etc. so is recommended. Pango predefines some scales such as pango.SCALE_X_LARGE.
pixels-above-linesRead / WritePixels of blank space above paragraphs
pixels-below-linesRead / WritePixels of blank space below paragraphs
pixels-inside-wrapRead / WritePixels of blank space between wrapped lines in a paragraph
editableRead / WriteWhether the text can be modified by the user
wrap-modeRead / WriteWhether to wrap lines never, at word boundaries, or at character boundaries
justificationRead / WriteLeft, right, or center justification
directionRead / WriteText direction, e.g. right-to-left or left-to-right
left-marginRead / WriteWidth of the left margin in pixels
indentRead / WriteAmount to indent the paragraph, in pixels
strikethroughRead / WriteWhether to strike through the text
right-marginRead / WriteWidth of the right margin in pixels
underlineRead / WriteStyle of underline for this text
riseRead / WriteOffset of text above the baseline (below the baseline if rise is negative) in pixels
background-full-heightRead / WriteWhether the background color fills the entire line height or only the height of the tagged characters
languageRead / WriteThe language this text is in, as an ISO code. Pango can use this as a hint when rendering the text. If you don't understand this parameter, you probably don't need it.
tabsRead / WriteCustom tabs for this text
invisibleRead / WriteWhether this text is hidden. Not implemented in GTK+ 2.0

The attributes can be set by using the method:

  tag.set_property(name, value)

Where name is a string containing the name of the property and value is what the property should be set to.

Likewise the attribute value can be retrieved with the method:

  value = tag.get_property(name)

Since the tag does not have a value set for every attribute there are a set of boolean properties that indicate whether the attribute has been set in the tag:

background-setRead / Write
foreground-setRead / Write
background-stipple-setRead / Write
foreground-stipple-setRead / Write
family-setRead / Write
style-setRead / Write
variant-setRead / Write
weight-setRead / Write
stretch-setRead / Write
size-setRead / Write
scale-setRead / Write
pixels-above-lines-setRead / Write
pixels-below-lines-setRead / Write
pixels-inside-wrap-setRead / Write
editable-setRead / Write
wrap-mode-setRead / Write
justification-setRead / Write
direction-setRead / Write
left-margin-setRead / Write
indent-setRead / Write
strikethrough-setRead / Write
right-margin-setRead / Write
underline-setRead / Write
rise-setRead / Write
background-full-height-setRead / Write
language-setRead / Write
tabs-setRead / Write
invisible-setRead / Write

Therefore to obtain the attribute from a tag, you have to first check whether the attribute has been set in the tag. For example to get a valid justification attribute you may have to do something like:

  if tag.get_property("justification-set"):
	justification = tag.get_property("justification")

The priority of a tag is by default the order in which they are added to the TextTagTable. The higher priority tag takes precedence if multiple tags try to set the same attribute for a range of text. The priority can be obtained and set with the methods:

  priority = tag.get_priority()

  tag.set_priority(priority)

The priority of a tag must be between 0 and one less than the TextTagTable size.

13.6.2. Text Tag Tables

A TextTagTable will be created by default when a TextBuffer is created. A TextTagTable can also be created with the function:

  table = TextTagTable()

A TextTag can be added to a TextTagTable using the method:

  table.add(tag)

The tag must not be in the table and must not have the same name as another tag in the table.

You can find a TextTag in a TextTagTable using the method:

  tag = table.lookup(name)

The method returns the tag in the table with the given name or None if no tag has that name.

A TextTag can be removed from a TextTagTable with the method:

  table.remove(tag)

The size of the TextTagTable can be obtained with the method:

  size = table.get_size()
pygtk2tutorial/ch-ManagingSelections.html0100644000117200001670000000771710227357002017726 0ustar finlayfcfChapter 21. Managing Selections

Chapter 21. Managing Selections

21.1. Selection Overview

One type of interprocess communication supported by X and GTK+ is selections. A selection identifies a chunk of data, for instance, a portion of text, selected by the user in some fashion, for instance, by dragging with the mouse. Only one application on a display (the owner) can own a particular selection at one time, so when a selection is claimed by one application, the previous owner must indicate to the user that selection has been relinquished. Other applications can request the contents of a selection in different forms, called targets. There can be any number of selections, but most X applications only handle one, the primary selection.

In most cases, it isn't necessary for a PyGTK application to deal with selections itself. The standard widgets, such as the Entry (see Section 9.9, “Text Entries”) widget, already have the capability to claim the selection when appropriate (e.g., when the user drags over text), and to retrieve the contents of the selection owned by another widget or another application (e.g., when the user clicks the second mouse button). However, there may be cases in which you want to give other widgets the ability to supply the selection, or you wish to retrieve targets not supported by default.

A fundamental concept needed to understand selection handling is that of the atom. An atom is an integer that uniquely identifies a string (on a certain display). Certain atoms are predefined by the X server, GTK.

pygtk2tutorial/ch-DragAndDrop.html0100644000117200001670000001202110227357003016262 0ustar finlayfcfChapter 22. Drag-and-drop (DND)

Chapter 22. Drag-and-drop (DND)

PyGTK has a high level set of functions for doing inter-process communication via the drag-and-drop system. PyGTK can perform drag-and-drop on top of the low level Xdnd and Motif drag-and-drop protocols.

22.1. DND Overview

An application capable of drag-and-drop first defines and sets up the widget(s) for drag-and-drop. Each widget can be a source and/or destination for drag-and-drop. Note that these widgets must have an associated X Window.

Source widgets can send out drag data, thus allowing the user to drag things off of them, while destination widgets can receive drag data. Drag-and-drop destinations can limit who they accept drag data from, e.g. the same application or any application (including itself).

Sending and receiving drop data makes use of signals. Dropping an item to a destination widget requires both a data request (for the source widget) and data received signal handler (for the target widget). Additional signal handers can be connected if you want to know when a drag begins (at the very instant it starts), to when a drop is made, and when the entire drag-and-drop procedure has ended (successfully or not).

Your application will need to provide data for source widgets when requested, that involves having a drag data request signal handler. For destination widgets they will need a drop data received signal handler.

So a typical drag-and-drop cycle would look as follows:

  • Drag begins. Source can get "drag-begin" signal. Can set up drag icon, etc.

  • Drag moves over a drop area. Destination can get "drag-motion" signal.

  • Drop occurs. Destination can get "drag-drop" signal. Destination should ask for source data.

  • Drag data request (when a drop occurs). Source can get "drag-data-get" signal.

  • Drop data received (may be on same or different application). Destination can get "drag-data-received" signal.

  • Drag data delete (if the drag was a move). Source can get "drag-data-delete" signal

  • Drag-and-drop procedure done. Source can receive "drag-end" signal.

There are a few minor steps that go in between here and there, but we will get into detail about that later.

pygtk2tutorial/sec-Frames.html0100644000117200001670000001435210227356763015557 0ustar finlayfcf10.5. Frames

10.5. Frames

Frames can be used to enclose one or a group of widgets with a box which can optionally be labeled. The position of the label and the style of the box can be altered to suit.

A Frame can be created with the following function:

  frame = gtk.Frame(label=None)

The label is by default placed in the upper left hand corner of the frame. Specifying a value of None for the label argument or specifying no label argument will result in no label being displayed. The text of the label can be changed using the method.

  frame.set_label(label)

The position of the label can be changed using this method:

  frame.set_label_align(xalign, yalign)

xalign and yalign take values between 0.0 and 1.0. xalign indicates the position of the label along the top horizontal of the frame. yalign is not currently used. The default value of xalign is 0.0 which places the label at the left hand end of the frame.

The next method alters the style of the box that is used to outline the frame.

  frame.set_shadow_type(type)

The type argument can take one of the following values:

  SHADOW_NONE
  SHADOW_IN
  SHADOW_OUT
  SHADOW_ETCHED_IN      # the default
  SHADOW_ETCHED_OUT

The frame.py example illustrates the use of the Frame widget. Figure 10.4, “Frame Example” shows the resulting display:

Figure 10.4. Frame Example

Frame Example

The source code of frame.py is:

    1	#!/usr/bin/env python
    2	
    3	# example frame.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	
    9	class FrameExample:
   10	    def __init__(self):
   11	        # Create a new window
   12	        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   13	        window.set_title("Frame Example")
   14	
   15	        # Here we connect the "destroy" event to a signal handler 
   16	        window.connect("destroy", lambda w: gtk.main_quit())
   17	        window.set_size_request(300, 300)
   18	
   19	        # Sets the border width of the window.
   20	        window.set_border_width(10)
   21	
   22	        # Create a Frame
   23	        frame = gtk.Frame()
   24	        window.add(frame)
   25	
   26	        # Set the frame's label
   27	        frame.set_label("GTK Frame Widget")
   28	
   29	        # Align the label at the right of the frame
   30	        frame.set_label_align(1.0, 0.0)
   31	
   32	        # Set the style of the frame
   33	        frame.set_shadow_type(gtk.SHADOW_ETCHED_OUT)
   34	        frame.show()
   35	  
   36	        # Display the window
   37	        window.show()
   38	
   39	def main():
   40	    # Enter the event loop
   41	    gtk.main()
   42	    return 0
   43	
   44	if __name__ == "__main__":
   45	    FrameExample()
   46	    main()

The calendar.py, label.py and spinbutton.py examples also use Frames.

pygtk2tutorial/ch-Copyright.html0100644000117200001670000000603410227357004016115 0ustar finlayfcfChapter 28. Tutorial Copyright and Permissions Notice

Chapter 28. Tutorial Copyright and Permissions Notice

The PyGTK Tutorial is Copyright (C) 2001-2005 John Finlay.

The GTK Tutorial is Copyright (C) 1997 Ian Main.

Copyright (C) 1998-1999 Tony Gale.

Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.

Permission is granted to copy and distribute modified versions of this document under the conditions for verbatim copying, provided that this copyright notice is included exactly as in the original, and that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.

Permission is granted to copy and distribute translations of this document into another language, under the above conditions for modified versions.

If you are intending to incorporate this document into a published work, please contact the maintainer, and we will make an effort to ensure that you have the most up to date information available.

There is no guarantee that this document lives up to its intended purpose. This is simply provided as a free resource. As such, the authors and maintainers of the information provided within can not make any guarantee that the information is even accurate.

pygtk2tutorial/sec-ItemFactoryExample.html0100644000117200001670000001612710227356764020107 0ustar finlayfcf11.4. Item Factory Example

11.4. Item Factory Example

The itemfactory.py example program uses the gtk.ItemFactory. Figure 11.2, “Item Factory Example” illustrates the program display:

Figure 11.2. Item Factory Example

Item Factory Example

The source code for itemfactory.py is:

    1	#!/usr/bin/env python
    2	
    3	# example itemfactory.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	
    9	class ItemFactoryExample:
   10	    # Obligatory basic callback
   11	    def print_hello(self, w, data):
   12	        print "Hello, World!"
   13	
   14	    # This is the ItemFactoryEntry structure used to generate new menus.
   15	    # Item 1: The menu path. The letter after the underscore indicates an
   16	    #         accelerator key once the menu is open.
   17	    # Item 2: The accelerator key for the entry
   18	    # Item 3: The callback.
   19	    # Item 4: The callback action.  This changes the parameters with
   20	    #         which the callback is called.  The default is 0.
   21	    # Item 5: The item type, used to define what kind of an item it is.
   22	    #       Here are the possible values:
   23	
   24	    #       NULL               -> "<Item>"
   25	    #       ""                 -> "<Item>"
   26	    #       "<Title>"          -> create a title item
   27	    #       "<Item>"           -> create a simple item
   28	    #       "<CheckItem>"      -> create a check item
   29	    #       "<ToggleItem>"     -> create a toggle item
   30	    #       "<RadioItem>"      -> create a radio item
   31	    #       <path>             -> path of a radio item to link against
   32	    #       "<Separator>"      -> create a separator
   33	    #       "<Branch>"         -> create an item to hold sub items (optional)
   34	    #       "<LastBranch>"     -> create a right justified branch 
   35	
   36	    def get_main_menu(self, window):
   37	        accel_group = gtk.AccelGroup()
   38	
   39	        # This function initializes the item factory.
   40	        # Param 1: The type of menu - can be MenuBar, Menu,
   41	        #          or OptionMenu.
   42	        # Param 2: The path of the menu.
   43	        # Param 3: A reference to an AccelGroup. The item factory sets up
   44	        #          the accelerator table while generating menus.
   45	        item_factory = gtk.ItemFactory(gtk.MenuBar, "<main>", accel_group)
   46	
   47	        # This method generates the menu items. Pass to the item factory
   48	        #  the list of menu items
   49	        item_factory.create_items(self.menu_items)
   50	
   51	        # Attach the new accelerator group to the window.
   52	        window.add_accel_group(accel_group)
   53	
   54	        # need to keep a reference to item_factory to prevent its destruction
   55	        self.item_factory = item_factory
   56	        # Finally, return the actual menu bar created by the item factory.
   57	        return item_factory.get_widget("<main>")
   58	
   59	    def __init__(self):
   60	        self.menu_items = (
   61	            ( "/_File",         None,         None, 0, "<Branch>" ),
   62	            ( "/File/_New",     "<control>N", self.print_hello, 0, None ),
   63	            ( "/File/_Open",    "<control>O", self.print_hello, 0, None ),
   64	            ( "/File/_Save",    "<control>S", self.print_hello, 0, None ),
   65	            ( "/File/Save _As", None,         None, 0, None ),
   66	            ( "/File/sep1",     None,         None, 0, "<Separator>" ),
   67	            ( "/File/Quit",     "<control>Q", gtk.main_quit, 0, None ),
   68	            ( "/_Options",      None,         None, 0, "<Branch>" ),
   69	            ( "/Options/Test",  None,         None, 0, None ),
   70	            ( "/_Help",         None,         None, 0, "<LastBranch>" ),
   71	            ( "/_Help/About",   None,         None, 0, None ),
   72	            )
   73	        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   74	        window.connect("destroy", lambda w: gtk.main_quit(), "WM destroy")
   75	        window.set_title("Item Factory")
   76	        window.set_size_request(300, 200)
   77	
   78	        main_vbox = gtk.VBox(False, 1)
   79	        main_vbox.set_border_width(1)
   80	        window.add(main_vbox)
   81	        main_vbox.show()
   82	
   83	        menubar = self.get_main_menu(window)
   84	
   85	        main_vbox.pack_start(menubar, False, True, 0)
   86	        menubar.show()
   87	        window.show()
   88	
   89	def main():
   90	    gtk.main()
   91	    return 0
   92	
   93	if __name__ == "__main__":
   94	    ItemFactoryExample()
   95	    main()

For now, there's only this example. An explanation and lots 'o' comments will follow later.

pygtk2tutorial/sec-SupplyingTheSelection.html0100644000117200001670000002343610227357002020631 0ustar finlayfcf21.3. Supplying the Selection

21.3. Supplying the Selection

Supplying the selection is a bit more complicated. You must register handlers that will be called when your selection is requested. For each selection-target pair you will handle, you make a call to:

  widget.selection_add_target(selection, target, info)

widget, selection, and target identify the requests this handler will manage. When a request for a selection is received, the "selection_get" signal will be called. info is an integer that can be used as an enumerator to identify the specific target within the callback.

The callback has the signature:

  def selection_get(widget, selection_data, info, time):

The gtk.SelectionData is the same as above, but this time, we're responsible for filling in the fields type, format and data. (The format field is actually important here - the X server uses it to figure out whether the data needs to be byte-swapped or not. Usually it will be 8 - i.e. a character - or 32 - i.e. a integer.) This is done by calling the method:

  selection_data.set(type, format, data)

This PyGTK method can only handle string data so the data must be loaded into a Python string but format will be whatever the appropriate size is (e.g. 32 for atoms and integers, 8 for strings). The Python struct or StringIO modules can be used to convert non-string data to string data. For example, you can convert a list of integers to a string and set the selection_data by:

  ilist = [1, 2, 3, 4, 5]

  data = apply(struct.pack, ['%di'%len(ilist)] + ilist)

  selection_data.set("INTEGER", 32, data)

The following method sets the selection data from the given string:

  selection_data.set_text(str, len)

When prompted by the user, you claim ownership of the selection by calling:

  result = widget.selection_owner_set(selection, time=0L)

result will be TRUE if program successfully claimed the selection. If another application claims ownership of the selection, you will receive a "selection_clear_event".

As an example of supplying the selection, the setselection.py program adds selection functionality to a toggle button enclosed in a gtk.EventBox. (The gtk.Eventbox is needed because the selection must be associated with a gtk.gdk.Window and a gtk.Button is a "windowless" object in GTK+ 2.0.) When the toggle button is depressed, the program claims the primary selection. The only target supported (aside from certain targets like "TARGETS" supplied by GTK+ itself), is the "STRING" target. When this target is requested, a string representation of the time is returned. Figure 21.2, “Set Selection Example” illustrates the program display when the program has taken the primary selection ownership:

Figure 21.2. Set Selection Example

Set Selection Example

The setselection.py source code is:

    1	#!/usr/bin/env python
    2	
    3	# example setselection.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	import time
    9	
   10	class SetSelectionExample:
   11	    # Callback when the user toggles the selection
   12	    def selection_toggled(self, widget, window):
   13	        if widget.get_active():
   14	            self.have_selection = window.selection_owner_set("PRIMARY")
   15	            # if claiming the selection failed, we return the button to
   16	            # the out state
   17	            if not self.have_selection:
   18	                widget.set_active(False)
   19	        else:
   20	            if self.have_selection:
   21	                # Not possible to release the selection in PyGTK
   22	                # just mark that we don't have it
   23	                self.have_selection = False
   24	        return
   25	
   26	    # Called when another application claims the selection
   27	    def selection_clear(self, widget, event):
   28	        self.have_selection = False
   29	        widget.set_active(False)
   30	        return True
   31	
   32	    # Supplies the current time as the selection.
   33	    def selection_handle(self, widget, selection_data, info, time_stamp):
   34	        current_time = time.time()
   35	        timestr = time.asctime(time.localtime(current_time))
   36	
   37	        # When we return a single string, it should not be null terminated.
   38	        # That will be done for us
   39	        selection_data.set_text(timestr, len(timestr))
   40	        return
   41	
   42	    def __init__(self):
   43	        self.have_selection = False
   44	        # Create the toplevel window
   45	        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   46	        window.set_title("Set Selection")
   47	        window.set_border_width(10)
   48	        window.connect("destroy", lambda w: gtk.main_quit())
   49	        self.window = window
   50	        # Create an eventbox to hold the button since it no longer has
   51	        # a GdkWindow
   52	        eventbox = gtk.EventBox()
   53	        eventbox.show()
   54	        window.add(eventbox)
   55	        
   56	        # Create a toggle button to act as the selection
   57	        selection_button = gtk.ToggleButton("Claim Selection")
   58	        eventbox.add(selection_button)
   59	
   60	        selection_button.connect("toggled", self.selection_toggled, eventbox)
   61	        eventbox.connect_object("selection_clear_event", self.selection_clear,
   62	                                selection_button)
   63	
   64	        eventbox.selection_add_target("PRIMARY", "STRING", 1)
   65	        eventbox.selection_add_target("PRIMARY", "COMPOUND_TEXT", 1)
   66	        eventbox.connect("selection_get", self.selection_handle)
   67	        selection_button.show()
   68	        window.show()
   69	
   70	def main():
   71	    gtk.main()
   72	    return 0
   73	
   74	if __name__ == "__main__":
   75	    SetSelectionExample()
   76	    main()
pygtk2tutorial/sec-GtkToggleButton.html0100644000117200001670000000354210227357007017414 0ustar finlayfcfA.15. GtkToggleButton

A.15. GtkToggleButton

toggled(toggle_button, data)
pygtk2tutorial/sec-GTKRcFileFormat.html0100644000117200001670000001521210227357003017205 0ustar finlayfcf23.2. GTK's rc File Format

23.2. GTK's rc File Format

The format of the GTK+ rc file is illustrated in Section 23.3, “Example rc file” below. This is the testgtkrc file from the GTK+ distribution, but I've added a few comments and things. You may wish to include this explanation in your application to allow the user to fine tune his application.

There are several directives to change the attributes of a widget.

  • fg - Sets the foreground color of a widget.

  • bg - Sets the background color of a widget.

  • bg_pixmap - Sets the background of a widget to a tiled pixmap.

  • font - Sets the font to be used with the given widget.

In addition to this, there are several states a widget can be in, and you can set different colors, pixmaps and fonts for each state. These states are:

NORMAL

The normal state of a widget, without the mouse over top of it, and not being pressed, etc.

PRELIGHT

When the mouse is over top of the widget, colors defined using this state will be in effect.

ACTIVE

When the widget is pressed or clicked it will be active, and the attributes assigned by this tag will be in effect.

INSENSITIVE

When a widget is set insensitive, and cannot be activated, it will take these attributes.

SELECTED

When an object is selected, it takes these attributes.

When using the "fg" and "bg" keywords to set the colors of widgets, the format is:

  fg[<STATE>] = { Red, Green, Blue }

Where STATE is one of the above states (PRELIGHT, ACTIVE, etc), and the Red, Green and Blue are values in the range of 0 - 1.0, { 1.0, 1.0, 1.0 } being white. They must be in float form, or they will register as 0, so a straight "1" will not work, it must be "1.0". A straight "0" is fine because it doesn't matter if it's not recognized. Unrecognized values are set to 0.

bg_pixmap is very similar to the above, except the colors are replaced by a filename.

pixmap_path is a list of paths separated by ":"'s. These paths will be searched for any pixmap you specify.

The "font" directive is simply:

  font = "<font name>"

The only hard part is figuring out the font string. Using xfontsel or a similar utility should help.

The "widget_class" sets the style of a class of widgets. These classes are listed in the widget overview in Section 5.1, “Widget Hierarchy”.

The "widget" directive sets a specifically named set of widgets to a given style, overriding any style set for the given widget class. These widgets are registered inside the application using the set_name() method. This allows you to specify the attributes of a widget on a per widget basis, rather than setting the attributes of an entire widget class. I urge you to document any of these special widgets so users may customize them.

When the keyword parent is used as an attribute, the widget will take on the attributes of its parent in the application.

When defining a style, you may assign the attributes of a previously defined style to this new one.

  style "main_button" = "button"
  {
    font = "-adobe-helvetica-medium-r-normal--*-100-*-*-*-*-*-*"
    bg[PRELIGHT] = { 0.75, 0, 0 }
  }

This example takes the "button" style, and creates a new "main_button" style simply by changing the font and prelight background color of the "button" style.

Of course, many of these attributes don't apply to all widgets. It's a simple matter of common sense really. Anything that could apply, should.

pygtk2tutorial/ch-ContainerWidgets.html0100644000117200001670000001657010227356764017440 0ustar finlayfcfChapter 10. Container Widgets

Chapter 10. Container Widgets

10.1. The EventBox

Some GTK widgets don't have associated X windows, so they just draw on their parents. Because of this, they cannot receive events and if they are incorrectly sized, they don't clip so you can get messy overwriting, etc. If you require more from these widgets, the EventBox is for you.

At first glance, the EventBox widget might appear to be totally useless. It draws nothing on the screen and responds to no events. However, it does serve a function - it provides an X window for its child widget. This is important as many GTK widgets do not have an associated X window. Not having an X window saves memory and improves performance, but also has some drawbacks. A widget without an X window cannot receive events, does not perform any clipping on its contents and cannot set its background color. Although the name EventBox emphasizes the event-handling function, the widget can also be used for clipping. (and more, see the example below).

To create a new EventBox widget, use:

  event_box = gtk.EventBox()

A child widget can then be added to this event_box:

  event_box.add(widget) 

The eventbox.py example program demonstrates both uses of an EventBox - a label is created that is clipped to a small box, has a green background and is set up so that a mouse-click on the label causes the program to exit. Resizing the window reveals varying amounts of the label. Figure 10.1, “Event Box Example” illustrates the programs display:

Figure 10.1. Event Box Example

Event Box Example

The source code for eventbox.py is:

    1	#!/usr/bin/env python
    2	
    3	# example eventbox.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	
    9	class EventBoxExample:
   10	    def __init__(self):
   11	        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   12	        window.set_title("Event Box")
   13	        window.connect("destroy", lambda w: gtk.main_quit())
   14	        window.set_border_width(10)
   15	
   16	        # Create an EventBox and add it to our toplevel window
   17	        event_box = gtk.EventBox()
   18	        window.add(event_box)
   19	        event_box.show()
   20	
   21	        # Create a long label
   22	        label = gtk.Label("Click here to quit, quit, quit, quit, quit")
   23	        event_box.add(label)
   24	        label.show()
   25	
   26	        # Clip it short.
   27	        label.set_size_request(110, 20)
   28	
   29	        # And bind an action to it
   30	        event_box.set_events(gtk.gdk.BUTTON_PRESS_MASK)
   31	        event_box.connect("button_press_event", lambda w,e: gtk.main_quit())
   32	
   33	        # More things you need an X window for ...
   34	        event_box.realize()
   35	        event_box.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.HAND1))
   36	
   37	        # Set background color to green
   38	        event_box.modify_bg(gtk.STATE_NORMAL,
   39	                            event_box.get_colormap().alloc_color("green"))
   40	
   41	        window.show()
   42	
   43	def main():
   44	    gtk.main()
   45	    return 0
   46	
   47	if __name__ == "__main__":
   48	    EventBoxExample()
   49	    main()
pygtk2tutorial/sec-Alignment.html0100644000117200001670000001123610227356763016256 0ustar finlayfcf10.2. The Alignment widget

10.2. The Alignment widget

The Alignment widget allows you to place a widget within its window at a position and size relative to the size of the Alignment widget itself. For example, it can be very useful for centering a widget within the window.

There are only two calls associated with the Alignment widget:

  alignment = gtk.Alignment(xalign=0.0, yalign=0.0, xscale=0.0, yscale=0.0)

  alignment.set(xalign, yalign, xscale, yscale)

The gtk.Alignment() function creates a new Alignment widget with the specified parameters. The set() method allows the alignment parameters of an existing Alignment widget to be altered.

All four alignment parameters are floating point numbers which can range from 0.0 to 1.0. The xalign and yalign arguments affect the position of the widget placed within the gtk.Alignment widget. The align properties specify the fraction of free space that will be placed above or to the left of the child widget. The values range from 0.0 (no free space above or to the left of the child) to 1.0 (all free space above or to the left of the child). Of course, if the scale properties are both set to 1.0, the alignment properties have no effect since the child widget will expand to fill the available space.

The xscale and yscale arguments specify the fraction of free space absorbed by the child widget. The values can range from 0.0 (meaning the child absorbs none) to 1.0 (meaning the child absorbs all of the free space).

A child widget can be added to this Alignment widget using:

  alignment.add(widget)

For an example of using an Alignment widget, refer to the progressbar.py example for the Progress Bar widget.

pygtk2tutorial/examples/0040755000117200001670000000000010227356743014516 5ustar finlayfcfpygtk2tutorial/examples/basicaction.py0100644000117200001670000000556310123235113017333 0ustar finlayfcf#!/usr/bin/env python import pygtk pygtk.require('2.0') import gtk class BasicAction: def __init__(self): # Create the toplevel window window = gtk.Window() window.connect('destroy', lambda w: gtk.main_quit()) vbox = gtk.VBox() vbox.show() window.add(vbox) # Create an accelerator group accelgroup = gtk.AccelGroup() # Add the accelerator group to the toplevel window window.add_accel_group(accelgroup) # Create an action for quitting the program using a stock item action = gtk.Action('Quit', '_Quit me!', 'Quit the Program', gtk.STOCK_QUIT) action.set_property('short-label', '_Quit') # Connect a callback to the action action.connect('activate', self.quit_cb) # Create an ActionGroup named BasicAction actiongroup = gtk.ActionGroup('BasicAction') # Add the action to the actiongroup with an accelerator # None means use the stock item accelerator actiongroup.add_action_with_accel(action, None) # Have the action use accelgroup action.set_accel_group(accelgroup) # Create a MenuBar menubar = gtk.MenuBar() menubar.show() vbox.pack_start(menubar, False) # Create the File Action and MenuItem file_action = gtk.Action('File', '_File', None, None) actiongroup.add_action(file_action) file_menuitem = file_action.create_menu_item() menubar.append(file_menuitem) # Create the File Menu file_menu = gtk.Menu() file_menuitem.set_submenu(file_menu) # Create a proxy MenuItem menuitem = action.create_menu_item() file_menu.append(menuitem) # Create a Toolbar toolbar = gtk.Toolbar() toolbar.show() vbox.pack_start(toolbar, False) # Create a proxy ToolItem toolitem = action.create_tool_item() toolbar.insert(toolitem, 0) # Create and pack a Label label = gtk.Label(''' Select File->Quit me! or click the toolbar Quit button or click the Quit button below or press Control+q to quit. ''') label.show() vbox.pack_start(label) # Create a button to use as another proxy widget quitbutton = gtk.Button() # add it to the window vbox.pack_start(quitbutton, False) # Connect the action to its proxy widget action.connect_proxy(quitbutton) # Have to set tooltip after toolitem is added to toolbar action.set_property('tooltip', action.get_property('tooltip')) tooltips = gtk.Tooltips() tooltips.set_tip(quitbutton, action.get_property('tooltip')) window.show() return def quit_cb(self, b): print 'Quitting program' gtk.main_quit() if __name__ == '__main__': ba = BasicAction() gtk.main() pygtk2tutorial/examples/info.xpm0100644000117200001670000000376710006075574016204 0ustar finlayfcf/* XPM */ static char *openfile[] = { /* width height num_colors chars_per_pixel */ " 20 19 66 2", /* colors */ ".. c None", ".# c #000000", ".a c #dfdfdf", ".b c #7f7f7f", ".c c #006f6f", ".d c #00efef", ".e c #009f9f", ".f c #004040", ".g c #00bfbf", ".h c #ff0000", ".i c #ffffff", ".j c #7f0000", ".k c #007070", ".l c #00ffff", ".m c #00a0a0", ".n c #004f4f", ".o c #00cfcf", ".p c #8f8f8f", ".q c #6f6f6f", ".r c #a0a0a0", ".s c #7f7f00", ".t c #007f7f", ".u c #5f5f5f", ".v c #707070", ".w c #00f0f0", ".x c #009090", ".y c #ffff00", ".z c #0000ff", ".A c #00afaf", ".B c #00d0d0", ".C c #00dfdf", ".D c #005f5f", ".E c #00b0b0", ".F c #001010", ".G c #00c0c0", ".H c #000f0f", ".I c #00007f", ".J c #005050", ".K c #002f2f", ".L c #dfcfcf", ".M c #dfd0d0", ".N c #006060", ".O c #00e0e0", ".P c #00ff00", ".Q c #002020", ".R c #dfc0c0", ".S c #008080", ".T c #001f1f", ".U c #003f3f", ".V c #007f00", ".W c #00000f", ".X c #000010", ".Y c #00001f", ".Z c #000020", ".0 c #00002f", ".1 c #000030", ".2 c #00003f", ".3 c #000040", ".4 c #00004f", ".5 c #000050", ".6 c #00005f", ".7 c #000060", ".8 c #00006f", ".9 c #000070", "#. c #7f7f80", "## c #9f9f9f", /* pixels */ "........................................", "........................................", "........................................", ".......................#.#.#............", ".....................#.......#...#......", "...............................#.#......", ".......#.#.#.................#.#.#......", ".....#.y.i.y.#.#.#.#.#.#.#..............", ".....#.i.y.i.y.i.y.i.y.i.#..............", ".....#.y.i.y.i.y.i.y.i.y.#..............", ".....#.i.y.i.y.#.#.#.#.#.#.#.#.#.#.#....", ".....#.y.i.y.#.s.s.s.s.s.s.s.s.s.#......", ".....#.i.y.#.s.s.s.s.s.s.s.s.s.#........", ".....#.y.#.s.s.s.s.s.s.s.s.s.#..........", ".....#.#.s.s.s.s.s.s.s.s.s.#............", ".....#.#.#.#.#.#.#.#.#.#.#..............", "........................................", "........................................", "........................................" }; pygtk2tutorial/examples/buttonbox.py0100644000117200001670000000577610227353425017122 0ustar finlayfcf#!/usr/bin/env python # example buttonbox.py import pygtk pygtk.require('2.0') import gtk class ButtonBoxExample: # Create a Button Box with the specified parameters def create_bbox(self, horizontal, title, spacing, layout): frame = gtk.Frame(title) if horizontal: bbox = gtk.HButtonBox() else: bbox = gtk.VButtonBox() bbox.set_border_width(5) frame.add(bbox) # Set the appearance of the Button Box bbox.set_layout(layout) bbox.set_spacing(spacing) button = gtk.Button(stock=gtk.STOCK_OK) bbox.add(button) button = gtk.Button(stock=gtk.STOCK_CANCEL) bbox.add(button) button = gtk.Button(stock=gtk.STOCK_HELP) bbox.add(button) return frame def __init__(self): window = gtk.Window(gtk.WINDOW_TOPLEVEL) window.set_title("Button Boxes") window.connect("destroy", lambda x: gtk.main_quit()) window.set_border_width(10) main_vbox = gtk.VBox(False, 0) window.add(main_vbox) frame_horz = gtk.Frame("Horizontal Button Boxes") main_vbox.pack_start(frame_horz, True, True, 10) vbox = gtk.VBox(False, 0) vbox.set_border_width(10) frame_horz.add(vbox) vbox.pack_start(self.create_bbox(True, "Spread (spacing 40)", 40, gtk.BUTTONBOX_SPREAD), True, True, 0) vbox.pack_start(self.create_bbox(True, "Edge (spacing 30)", 30, gtk.BUTTONBOX_EDGE), True, True, 5) vbox.pack_start(self.create_bbox(True, "Start (spacing 20)", 20, gtk.BUTTONBOX_START), True, True, 5) vbox.pack_start(self.create_bbox(True, "End (spacing 10)", 10, gtk.BUTTONBOX_END), True, True, 5) frame_vert = gtk.Frame("Vertical Button Boxes") main_vbox.pack_start(frame_vert, True, True, 10) hbox = gtk.HBox(False, 0) hbox.set_border_width(10) frame_vert.add(hbox) hbox.pack_start(self.create_bbox(False, "Spread (spacing 5)", 5, gtk.BUTTONBOX_SPREAD), True, True, 0) hbox.pack_start(self.create_bbox(False, "Edge (spacing 30)", 30, gtk.BUTTONBOX_EDGE), True, True, 5) hbox.pack_start(self.create_bbox(False, "Start (spacing 20)", 20, gtk.BUTTONBOX_START), True, True, 5) hbox.pack_start(self.create_bbox(False, "End (spacing 20)", 20, gtk.BUTTONBOX_END), True, True, 5) window.show_all() def main(): # Enter the event loop gtk.main() return 0 if __name__ == "__main__": ButtonBoxExample() main() pygtk2tutorial/examples/buttons.py0100644000117200001670000000350110227353425016554 0ustar finlayfcf#!/usr/bin/env python # example-start buttons buttons.py import pygtk pygtk.require('2.0') import gtk # Create a new hbox with an image and a label packed into it # and return the box. def xpm_label_box(parent, xpm_filename, label_text): # Create box for xpm and label box1 = gtk.HBox(False, 0) box1.set_border_width(2) # Now on to the image stuff image = gtk.Image() image.set_from_file(xpm_filename) # Create a label for the button label = gtk.Label(label_text) # Pack the pixmap and label into the box box1.pack_start(image, False, False, 3) box1.pack_start(label, False, False, 3) image.show() label.show() return box1 class Buttons: # Our usual callback method def callback(self, widget, data=None): print "Hello again - %s was pressed" % data def __init__(self): # Create a new window self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.set_title("Image'd Buttons!") # It's a good idea to do this for all windows. self.window.connect("destroy", lambda wid: gtk.main_quit()) self.window.connect("delete_event", lambda a1,a2:gtk.main_quit()) # Sets the border width of the window. self.window.set_border_width(10) # Create a new button button = gtk.Button() # Connect the "clicked" signal of the button to our callback button.connect("clicked", self.callback, "cool button") # This calls our box creating function box1 = xpm_label_box(self.window, "info.xpm", "cool button") # Pack and show all our widgets button.add(box1) box1.show() button.show() self.window.add(button) self.window.show() def main(): gtk.main() return 0 if __name__ == "__main__": Buttons() main() pygtk2tutorial/examples/helloworld.py0100644000117200001670000000602510227353425017235 0ustar finlayfcf#!/usr/bin/env python # example helloworld.py import pygtk pygtk.require('2.0') import gtk class HelloWorld: # This is a callback function. The data arguments are ignored # in this example. More on callbacks below. def hello(self, widget, data=None): print "Hello World" def delete_event(self, widget, event, data=None): # If you return FALSE in the "delete_event" signal handler, # GTK will emit the "destroy" signal. Returning TRUE means # you don't want the window to be destroyed. # This is useful for popping up 'are you sure you want to quit?' # type dialogs. print "delete event occurred" # Change FALSE to TRUE and the main window will not be destroyed # with a "delete_event". return False def destroy(self, widget, data=None): print "destroy signal occurred" gtk.main_quit() def __init__(self): # create a new window self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) # When the window is given the "delete_event" signal (this is given # by the window manager, usually by the "close" option, or on the # titlebar), we ask it to call the delete_event () function # as defined above. The data passed to the callback # function is NULL and is ignored in the callback function. self.window.connect("delete_event", self.delete_event) # Here we connect the "destroy" event to a signal handler. # This event occurs when we call gtk_widget_destroy() on the window, # or if we return FALSE in the "delete_event" callback. self.window.connect("destroy", self.destroy) # Sets the border width of the window. self.window.set_border_width(10) # Creates a new button with the label "Hello World". self.button = gtk.Button("Hello World") # When the button receives the "clicked" signal, it will call the # function hello() passing it None as its argument. The hello() # function is defined above. self.button.connect("clicked", self.hello, None) # This will cause the window to be destroyed by calling # gtk_widget_destroy(window) when "clicked". Again, the destroy # signal could come from here, or the window manager. self.button.connect_object("clicked", gtk.Widget.destroy, self.window) # This packs the button into the window (a GTK container). self.window.add(self.button) # The final step is to display this newly created widget. self.button.show() # and the window self.window.show() def main(self): # All PyGTK applications must have a gtk.main(). Control ends here # and waits for an event to occur (like a key press or mouse event). gtk.main() # If the program is run directly or passed as an argument to the python # interpreter then create a HelloWorld instance and show it if __name__ == "__main__": hello = HelloWorld() hello.main() pygtk2tutorial/examples/tooltip.py0100644000117200001670000000345410227353425016557 0ustar finlayfcf#!/usr/bin/env python # example tooltip.py import pygtk pygtk.require('2.0') import gtk # Create an Arrow widget with the specified parameters # and pack it into a button def create_arrow_button(arrow_type, shadow_type): button = gtk.Button() arrow = gtk.Arrow(arrow_type, shadow_type) button.add(arrow) button.show() arrow.show() return button class Tooltips: def __init__(self): # Create a new window window = gtk.Window(gtk.WINDOW_TOPLEVEL) window.set_title("Tooltips") # It's a good idea to do this for all windows. window.connect("destroy", lambda w: gtk.main_quit()) # Sets the border width of the window. window.set_border_width(10) # Create a box to hold the arrows/buttons box = gtk.HBox(False, 0) box.set_border_width(2) window.add(box) # create a tooltips object self.tooltips = gtk.Tooltips() # Pack and show all our widgets box.show() button = create_arrow_button(gtk.ARROW_UP, gtk.SHADOW_IN) box.pack_start(button, False, False, 3) self.tooltips.set_tip(button, "SHADOW_IN") button = create_arrow_button(gtk.ARROW_DOWN, gtk.SHADOW_OUT) box.pack_start(button, False, False, 3) self.tooltips.set_tip(button, "SHADOW_OUT") button = create_arrow_button(gtk.ARROW_LEFT, gtk.SHADOW_ETCHED_IN) box.pack_start(button, False, False, 3) self.tooltips.set_tip(button, "SHADOW_ETCHED_IN") button = create_arrow_button(gtk.ARROW_RIGHT, gtk.SHADOW_ETCHED_OUT) box.pack_start(button, False, False, 3) self.tooltips.set_tip(button, "SHADOW_ETCHED_OUT") window.show() def main(): gtk.main() return 0 if __name__ == "__main__": tt = Tooltips() main() pygtk2tutorial/examples/helloworld2.py0100644000117200001670000000502210227353425017313 0ustar finlayfcf#!/usr/bin/env python # example helloworld2.py import pygtk pygtk.require('2.0') import gtk class HelloWorld2: # Our new improved callback. The data passed to this method # is printed to stdout. def callback(self, widget, data): print "Hello again - %s was pressed" % data # another callback def delete_event(self, widget, event, data=None): gtk.main_quit() return False def __init__(self): # Create a new window self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) # This is a new call, which just sets the title of our # new window to "Hello Buttons!" self.window.set_title("Hello Buttons!") # Here we just set a handler for delete_event that immediately # exits GTK. self.window.connect("delete_event", self.delete_event) # Sets the border width of the window. self.window.set_border_width(10) # We create a box to pack widgets into. This is described in detail # in the "packing" section. The box is not really visible, it # is just used as a tool to arrange widgets. self.box1 = gtk.HBox(False, 0) # Put the box into the main window. self.window.add(self.box1) # Creates a new button with the label "Button 1". self.button1 = gtk.Button("Button 1") # Now when the button is clicked, we call the "callback" method # with a pointer to "button 1" as its argument self.button1.connect("clicked", self.callback, "button 1") # Instead of add(), we pack this button into the invisible # box, which has been packed into the window. self.box1.pack_start(self.button1, True, True, 0) # Always remember this step, this tells GTK that our preparation for # this button is complete, and it can now be displayed. self.button1.show() # Do these same steps again to create a second button self.button2 = gtk.Button("Button 2") # Call the same callback method with a different argument, # passing a pointer to "button 2" instead. self.button2.connect("clicked", self.callback, "button 2") self.box1.pack_start(self.button2, True, True, 0) # The order in which we show the buttons is not really important, but I # recommend showing the window last, so it all pops up at once. self.button2.show() self.box1.show() self.window.show() def main(): gtk.main() if __name__ == "__main__": hello = HelloWorld2() main() pygtk2tutorial/examples/entrycompletion.py0100644000117200001670000000256510104070631020307 0ustar finlayfcf#!/usr/bin/env python import time import pygtk pygtk.require('2.0') import gtk class EntryCompletionExample: def __init__(self): window = gtk.Window() window.connect('destroy', lambda w: gtk.main_quit()) vbox = gtk.VBox() label = gtk.Label('Type a, b, c or d\nfor completion') vbox.pack_start(label) entry = gtk.Entry() vbox.pack_start(entry) window.add(vbox) completion = gtk.EntryCompletion() self.liststore = gtk.ListStore(str) for s in ['apple', 'banana', 'cap', 'comb', 'color', 'dog', 'doghouse']: self.liststore.append([s]) completion.set_model(self.liststore) entry.set_completion(completion) completion.set_text_column(0) completion.connect('match-selected', self.match_cb) entry.connect('activate', self.activate_cb) window.show_all() return def match_cb(self, completion, model, iter): print model[iter][0], 'was selected' return def activate_cb(self, entry): text = entry.get_text() if text: if text not in [row[0] for row in self.liststore]: self.liststore.append([text]) entry.set_text('') return def main(): gtk.main() return if __name__ == "__main__": ee = EntryCompletionExample() main() pygtk2tutorial/examples/gtk.xpm0100644000117200001670000000310510006075574016020 0ustar finlayfcf/* XPM */ static const char * gtk_xpm{} = { "32 39 5 1", ". c none", "+ c black", "@ c #3070E0", "# c #F05050", "$ c #35E035", "................+...............", "..............+++++.............", "............+++++@@++...........", "..........+++++@@@@@@++.........", "........++++@@@@@@@@@@++........", "......++++@@++++++++@@@++.......", ".....+++@@@+++++++++++@@@++.....", "...+++@@@@+++@@@@@@++++@@@@+....", "..+++@@@@+++@@@@@@@@+++@@@@@++..", ".++@@@@@@+++@@@@@@@@@@@@@@@@@@++", ".+#+@@@@@@++@@@@+++@@@@@@@@@@@@+", ".+##++@@@@+++@@@+++++@@@@@@@@$@.", ".+###++@@@@+++@@@+++@@@@@++$$$@.", ".+####+++@@@+++++++@@@@@+@$$$$@.", ".+#####+++@@@@+++@@@@++@$$$$$$+.", ".+######++++@@@@@@@++@$$$$$$$$+.", ".+#######+##+@@@@+++$$$$$$@@$$+.", ".+###+++##+##+@@++@$$$$$$++$$$+.", ".+###++++##+##+@@$$$$$$$@+@$$@+.", ".+###++++++#+++@$$@+@$$@++$$$@+.", ".+####+++++++#++$$@+@$$++$$$$+..", ".++####++++++#++$$@+@$++@$$$$+..", ".+#####+++++##++$$++@+++$$$$$+..", ".++####+++##+#++$$+++++@$$$$$+..", ".++####+++####++$$++++++@$$$@+..", ".+#####++#####++$$+++@++++@$@+..", ".+#####++#####++$$++@$$@+++$@@..", ".++####++#####++$$++$$$$$+@$@++.", ".++####++#####++$$++$$$$$$$$+++.", ".+++####+#####++$$++$$$$$$$@+++.", "..+++#########+@$$+@$$$$$$+++...", "...+++########+@$$$$$$$$@+++....", ".....+++######+@$$$$$$$+++......", "......+++#####+@$$$$$@++........", ".......+++####+@$$$$+++.........", ".........++###+$$$@++...........", "..........++##+$@+++............", "...........+++++++..............", ".............++++..............." }; pygtk2tutorial/examples/getselection.py0100644000117200001670000000525010227353425017546 0ustar finlayfcf#!/usr/bin/env python # example getselection.py import pygtk pygtk.require('2.0') import gtk class GetSelectionExample: # Signal handler invoked when user clicks on the # "Get String Target" button def get_stringtarget(self, widget): # And request the "STRING" target for the primary selection ret = widget.selection_convert("PRIMARY", "STRING") return # Signal handler invoked when user clicks on the "Get Targets" button def get_targets(self, widget): # And request the "TARGETS" target for the primary selection ret = widget.selection_convert("PRIMARY", "TARGETS") return # Signal handler called when the selections owner returns the data def selection_received(self, widget, selection_data, data): # Make sure we got the data in the expected form if str(selection_data.type) == "STRING": # Print out the string we received print "STRING TARGET: %s" % selection_data.get_text() elif str(selection_data.type) == "ATOM": # Print out the target list we received targets = selection_data.get_targets() for target in targets: name = str(target) if name != None: print "%s" % name else: print "(bad target)" else: print "Selection was not returned as \"STRING\" or \"ATOM\"!" return False def __init__(self): # Create the toplevel window window = gtk.Window(gtk.WINDOW_TOPLEVEL) window.set_title("Get Selection") window.set_border_width(10) window.connect("destroy", lambda w: gtk.main_quit()) vbox = gtk.VBox(False, 0) window.add(vbox) vbox.show() # Create a button the user can click to get the string target button = gtk.Button("Get String Target") eventbox = gtk.EventBox() eventbox.add(button) button.connect_object("clicked", self.get_stringtarget, eventbox) eventbox.connect("selection_received", self.selection_received) vbox.pack_start(eventbox) eventbox.show() button.show() # Create a button the user can click to get targets button = gtk.Button("Get Targets") eventbox = gtk.EventBox() eventbox.add(button) button.connect_object("clicked", self.get_targets, eventbox) eventbox.connect("selection_received", self.selection_received) vbox.pack_start(eventbox) eventbox.show() button.show() window.show() def main(): gtk.main() return 0 if __name__ == "__main__": GetSelectionExample() main() pygtk2tutorial/examples/soccerball.gif0100644000117200001670000003321210006075600017275 0ustar finlayfcfGIF89aEC†!!!)))11)111991999BB9BBBJJBJJJRRJRRRRZRZZRZZZccZcccckZkkZkkckkkkscsscssks{k{{k{{s{{{{„s„„s„„{„„„„Œ{ŒŒ{ŒŒ„ŒŒŒŒ”„””„””Œ””””œŒœœŒœœ”œœœœ¥”¥¥”¥¥œ¥¥¥¥­œ­­œ­­¥­­­­µ¥µµ¥µµ­µ½­µ½µ½½­½½µ½½½½Æ­ÆÆµÆÆ½ÆÎµÆÎ½ÎνÎÎÆÖÖ½ÖÖÆÖÖÖÖÞÆÞÞÆÞÞÎÞçÎççÎççÖççÞççççïÖïïÞïïçï÷Þ÷÷Þ÷÷çÿÿïÿÿÿ))!JRJckcsss{„{ÎÖ½ÖÖÎÞÞÖÞÞÞïïÖ÷÷ï½Æµï÷çÿÿçZcZs{sÆÎÆ÷÷÷BJB÷ÿç!!9B9œ¥œÞçÞ!ÿ NETSCAPE2.0è!þÿAnimation created by ProMotion. ProMotion (414) 697-1979 tim@webpromotion.com http://www.webpromotion.com ***************************************************************** ProMotion - "The Web's Animation and Creativity Source" This animation† requires a Link to ProMotion Just copy this link to your page: ProMotion 3D Web Animation!ùY,B@ÿ€Y‚ƒ„…†‡EE;995541;‡“”•–“-;<9<440/)(%!!—©ª“2#@<²<4/-,((# «Á•"Å5D@@œ4810¸£  ÂÛYÅÅ Èʳ98ž1/¡º#ÔÖרܩÄ9FDÉ@?œÎžnå21"D»wÄ«AA1{”Ù'¤ß¬Z02¦5­ƒw×h[HHD½o:09¢HÅeBºÕBT‰‚>¾ ’¤ ƒ"(Ѥ‰‘‰üd•£U š´Q'@˜` a ³g@Š"Gˆ,YRÄÈK‹?˜z²õ‚Çÿ°Û`ÁO »v 1VÉ’dNÂòSÆI–Lh0lv€ «ƒ† uy À­ÃM–0a²ÄH"?¤(9k‡Âukб… ¬.–A OŠŽû™HŽ+H† 摇Z§(4¬ˆ"D©%@X0€ÀlUMRq½(’•dËòråïY§ÍcâŽQA¸¦¡Á‚ ¤â.ÅIÿ&¹i¶Ò,‘Ãv%UŽz¶ˆB5'ß¼Vß 4€J%SðwN4ñÝnœhD )¼ ‹ 7áäd„„@£ÒkR=°ÀÓ•P‰Q|bQM Y”_'6@Oÿ1P@D)å@ c)ò=f¡;NGI‡þ9äüq—DÐàJ(`€” 0)°ËM¥pP¡tõqÉ “ˆ)(ˆNPaÅ¡VtÇ œôM”ÆÀ9·è²Ës0BPŸ¦ cˆTÊ_‡^¨KèЛº '•1¸Uck``¦<[|*¡LøGªX`q…©SœÈ@£\½iÌ›PJÙê\úkH ® 4P™Ü}ØD°Â^a챦V!D Ë>Ä&¤p0©(˜ÐÜzf;•tHЀ „ˆêD°LHAj±ÇžëÄdãh›n¾9%1pTPÿ)t½&ÁÆ|ÖGH‘L¹w¤&|ny/XÖ죑Æ;@4䢋säKA¿OÐ/ƒ@!²cñg…©çbq(@9¼r¤-G)A±H+dT`ß pO,Dfš-j©è&ÊÙ°*qÓQ0¥6Ts…Ô=uoÜ šÕöXÁöW²©VTqD J/ݲÄSvƒ¥Îð˜­uW>Á· B 5ø¥Ù¸Ü!zh‡DX6«»êò¼‡‚ì8öŒ•C @@3\æ0›ðÀ "æ.ï¡1•e)§9•QšFà4Ψ…,ï䜆Fp>1ˆ°IDø§>B‚–ÆÍ ‚#:áÎJOqè"ÊG_àeàg1,°€ ´£ÝÁ28ñˆX˜ÃϬج.æP–JT! Dœõ á¦ÂYz°Stz¢ÍÿHè9*Ÿ‹] ¢øô… A•Ô1Ou‰9£Œ¤<¸$iPƒhÕ)*ÐE fVÅ‹I4›/%„+Ú¸*Cª‚x  F¤' ð„BÑñJ‘Rüëd|Tˆ"<ÒI9H¬GeÄZ9X äJY;© "X‡H@‚‚üÕ{3D5TWƒq(c†]„,ÒBW¹1˜Á H™‚¯ÍAAÂØB NÊA1ŽÂ,åA ¥A Š[Ä-y­ D‚™iਠàì!€À‚X€/(ŒR8¡ßf„õ¥ .ܲQ°H†»ˆm Aà ÔL¾“Hÿ]•á ãœf¨¯j)›";8B–ÚëöÚ^¢^ì3’,hbPÜ »Sµ3H‡4jb½ÁÑuÎMꘂTÔ€k íZjÀ Õ¾ ¸°—seCxz%”›3‚«^ }a ZÄ8Ñ lŠ‚Œ ¶»€ò^c»cÎv¶Â@ ÀLƒè/ˆ1:2R]HEJ`€žw4ÇvÄ–:´ó’º 9· /ð–›+ Ø´í¯nR€]¿Îy|G°\'Á{%©°Åèã!:p¸!CrÐMPŠMH*'Nbãÿ7MØÇï!ÉBR /7Z ƒh`¦²€“T'…NBÄDQDV8Âq4Þf"‘çÉ Ç©‡(H <(IlRÀf—ME8€k¬!€€üI@ I¸‹€%BBÿz$×Â4Ѐ P„Huâ'7$ `* ¦”iŽ˜hfÙg qéi@z8 e ¤pÈbˆ!~aD‘D `2à€a*@&XÑN€²€VÖ!€Ð‚œÁ¦R2fˆlOˆ1dKDÀ€\r!Ê€¢­ B†îü›ñ,DÈq4  .nê@”p2…°ág“Vä`¨\¤º*«BÖ "|! C) ¶ä¥… A„¼ˆˆ–6E1…0Û숎Yf™,1¢f%–T\ KZj„@J¯ùDbML„éF0A³¨êãà€¼i"Ä&ÿ-šUBi]4iÒk°üéÄ65†-,«0ÃíB@D€4ë&_Ñb (ä{i°€È.’29ñb 7ÜîÃïB+j"D¶<7À ¦·…ü;HMSQEYÁ9$fé¶Ëj!´ÒÕA#•4鯦qkA!,HAØDàK QÊM@ ¦¡‡ª:æ¢B^ ·OÖbÂq–*˜Ap0ˆ¤tÔÒ8 æ—…>û¶!Tßœs`ÙâkÚ €³ï‚ @ IôOÁ«ððꮳú£„µk²IÞ¤p^ÊAß @€z¼SÀ”ŸQÿàãê(ÿã… 0CÅ"ÅÐÉB.Éi­¥½·ô€89‚vŠàaD`!·vXM8ù—i.?ý1Ç[½SÁ€ð¬!#ȪAĸ¼2"DèÍpP$¤,Å!·ê¡?@àR€€ €‚V|Px(ܵ–P@(‚¸r3.äZÙ2޼‘½•¼ ‹ÁB€ƒíP|(›Â0Âw™ÑQPâˆA·lx¢ T¢ :oA10¦a¬ EøÇ°P&Èé° EàAšèe5Ч¡£ 1€d€"eÆ4’€%\ÿ'Mø‚Ìh.DV‹d#­ hžt (Ë "D"°˜À3ФýÈI¡@âá´"ˆ¸ƒ‘Τ>°I‚Ã0€Ö @ÈP±ÒK?R ]!@bŸÌÀ3Ĥ@ÀzÔñ™i@.UMX ›šä㡎$î&‚€åX¿…˜%pföà¹7„Œ À„0¤1 ŠaÙHod½¸04 I'Zp9Tð! %ÀæYW @Â0ˆpÑu$›™éÉ@k€žê,!ˆÀIò9K9Cp^;0S™¡z@~  YÜàœ,ÿ<§¤3Jw¾SH<7ˆíÁ‰ª Z!x„+:µ'ŒAP7qÕ«ÊDXÓ£§AüJíˆi` Lô@…+›²*©… %a‰ 2P)ÑÆlGaL(Âç ©#VRI &‘}È+E²Axž…E`ŸjÌÃÊ¢œré*êfÚ(6¯Êè×í¡„ü@…9¨-¦š¬ÊUz )I’áÀ2µÂmm!j€Õ®è8<`ÁsãQ…,„¤-(ÄÆ0€P¨ÎKR‚@i@ :w3³ò æJ’A˜·$e_¢HÒ”à<]@Ï æ«ÝbÀ¤²˜ÿHPN”ö¿VÁ€ ̳±à!ÞÐóJ¤ æÄ <êBœf Q ̳ó„ Ä)˜Á ¼`lŒK:E J’3Np(°@s>\ˆã­'AÏ^ЙA9ʃòqP‘ ÇàÃæEò’["@(Ù:PiÐsc ³`c=»\‡­ü!¤"À)1 "`€2û™pe×¼$)£€1À‡ dÛ½£-(Á~;ÐNÈjÏ«É @¦yœ%¡ @>–´ meÀÎÏP¡•AV/PÓ€#XBj+‹ºÔZ‹ÉoóJ -Àà8øú1ijê˜ ‚ ÈÀP#z‘ ÑúÇ¥ft b`lB† Ýà5`ôà+ÔµvµÑ7‡X‘Ùø°¿ýmŒ€ÚãF„¿¬¸’ì¢ ètF0¼•8Þ“èÀ- ð*æÂ|£u¡C €§"èèrèè0àùFOÃd«Au¼!ù,A@ÿ€‚ƒ„…†‡‚E &Ý3S¯#‹$²• 1ˆ³„ß)5PÂ$‰¡Ä`$ÅfŒQ0QÃN|ÓÁY 0HÖ+ ¢ox L…yÞqÐÁ `@tЄE©½d´ba ƒ°`Ø•0‚€xOÀ5 IÿMHP"Z TÉESÌèÞ@­ÙuÃv!è¶žý„ˆR4Ñ¢QVÉ@ 40EY¶‡…Óáƒu° 8”°_wð– hÁÀ¢„(F‹QRI¢ 0…V´ ÆRDÈǃmY7[ ,ä€Â¡Þñ&Á(ÄÚ€O„ ÝÀ:ŽP_®ð’Bˆ ìšj™HJLGT'­èZ¢ù âeݨM‚îHU§Ý9Ds¼¦„Ó¨0½ëÊʈQþN'ƒÌH µ²à@ A[’çÖä%°ƒøªÂ"#¹a4ƒXTa&‚Ä _­ÁfypÕŸ"‘P¬ufðˆHf(FH,sŒfLv묀 b ›R]ÕO¹ pkª·DÆ·,` Ü–Ý8ƒ'pã(]HC™÷¯lEÄ ` ¶u¨ÖÌ Á²ìbÇOŽŒ}²k¨í§¼“¥lÒ‹ˆ ø¶ŒÚApu%ßJ†¿,HªÿyO`óîg!py¹µJØG2!0€&P‚2Î÷bvïS‚Ð?6 |‚í@ ­ÁPQ© @"îÀ Ö›¡ý¶`v+n*+U û×Âÿ=”ta°YÈ`‘²`ö- Ú²ª sXÃ2&Ôfì tÀÐ… ˆ;Yå)HÁ rgd8’•êEÌæCÙïžÐ12èB€Ÿh pë+HÿºZC­YÍçeÀâ,‘Àó(AxAúç wûyò 4/‰¢VA„H@OR“`L¶p7\…¸šPF-ÑeÔš;•Á ^X ,`ˆþu!$PDØ¥Önüëd;ÜkiObV,<Æ» LRâ¿!x¶·-!‚ÁÂ..¬õqMl¬;%ÈȺìÂQÖÓ8¸÷¯kgä™6Xw !ù,B@ÿ€‚ƒ„…†‡‚=995531=ˆ’“”•ƒA gg %-–§¨…`D5±Y…)!©¼ˆODÀ@#¯°ƒ±YÌ(!"½ÓIIGGÀ3 IJ’3Ó–OIKÕØ9ݰ”,è”`MKÿÖ„¤ˆWìØ Þ ¥@/Ÿƒöz⤉?vJˆ´hÀ͘,B¶ ¨Ab\¾ 9©hñß À8@бXBA³˜ X F |å08pfß”AOš€Á¬é jÊBÈÌ…$F„XôLƒv¥´x­Zµ¦@b”pÐqj„0ÿX (AâY‡’A$@0ÍI'ƒú¹¼,Ã5JlóhÁŽ0Z¤XHD‡»: Mp€—1Rþ:™R1‰’AM‰²¨„„¬ÁˆË"E‰!>p¸`!óà R9 ½2Ê”¿J­1 $È %ˆð¨ãqŒÈµçj7H‚Pà+I‘òyü–Õž%RDµ@r P]Æ£Ù/(×íÀAà 'i¢€%íT`E‚ý3Ør@($ÁC8PG /´n–5tÆšmB‰E@°ÐhY´RKM†Öƒ)$_…ö]—~Ï˜Ô Y ÀH4Ñ$„M@1Üÿx+±cM0†É×ÄŒÕÝׂ†)œP 㔓€fˆD@$‘¸’VX1†¤•Æ`|)H4ÖxãBuuxAPbæM„¤qÀ™DªIÅŒ2 '`‚¼È SPI ×a©]Žœh˜¤`H gRÑpnª¡Æj´™;G´Gk,Lñž5؇߆!<³›Cb‚)¦A„˜Y¤ôÅ¢¬ªê(yM$‘Z|,HÁZu4fºaŸâä#ÁÁ‚Y@!iyæM Ú쪫ÂéÏzBÐêÄ­õÝ÷¶¾AáŠiÊ ¤É%~¥ªêªo’·Ä æÀ”V˜«¶ P×ÿÝV ý @,3€&\4›Œ:Ëh±CÄ BàÐAwNWŸâvYC Ð1±AIH éJQ…Á+C›Ã/ R5q•³a™e¯vjà†›Å%"¬€é:qt›h+Z3 @8¼G£½øò§бb±õ1)wr›UTA\´KÃà ¼K VI1 '`†dàv-æ‚32),Qv þ.a9Ä`ã@À08Y ÷âh÷hЀç0Ã"ÿÍÃ5K¨¹¢R 3 ~Ë-à€)v”…`Yp×Á{ Àÿ¢ÓdÀ É;ù  Àî¸,YHmÙûzYr|çœÌ'²3(¨ T˜6ކu$-€Ab1¿X$ 1ÈŽÅž‚”Ü;ƒN‚¥€,ᯠÉrp%üc8c˜BS¾ð©€€ò³ÉMä“!.ÓŸtMgpAãÁB%á.lÂxŽp˜m mùÛ2Îg\ÇDÜŸ “„‡®0€×Â%´ð‰¦sÞ pÈxHbàh F°¿`l¨Å¬2 D¸Æ ÔP1dñ0ÆüÀÀû,3Fÿ\DJ@€¨Áei$!°!„4b‘‚‰Hj‡‚ºx`“—Á¥e.³ "D˜ASy„C8%’’„%¡@Òh k·ìÕ8ˆ±Ýô'RðjP©HCð¬É<A€J¶7Xë ö¢" 4‹×0‰à`Á©QMã`iÇ‚1¨ èÒ«‚´“è`!jPÅÔ Â EZj0ÁdJÒYXœmnS­T{X» !q'Ôäfƒ¨ÁÆ,šC‘BÖ[ÈnÓ«¬|ô+p„bM€j`²št@™±Ý ÐR¦3  êÒÑ^‘é0ÿª¸š ‚‹« G$éÒÐ-ÀµÁT¥JB€“…Ð b€šmõ0‡ hpYÄ’¬K]À 4¥¥ÛÐ…"@¬GK€‹CÌ :…8ÌVÉÀ2䬌ÈÀX»AV4pOj[APt@{ˆ& +ˆ ‘ájg9KÁ¦ ­(˜‹aÕ©nEµ{O[ Ö ]ö²ÕhºA „tÌBæ¢%v¦uÁ Ü)‰Ì7¨rq0!lU‰µsD bÐÌœµ“ÓÍ’no3ˆÑ@+9 „Z`0P† Î R€©á‰B˜‚cZ×°t™ ÿ Kþ‹%H@`@ƒç©J3@AÜl7Údƒ°ÍTO Û Öº$¸À@€ @#ÀT‡íÓßK §%Æné;ˆ¹HÕ°-ž‹Œ˜^8W$xÁul„‚,®ÄWbÁ‰µ[í’ –·ÉmŒ^ ±8 ªv› 6ËZžL‹ÙÊÑ{°ºŠa3Ðá€Aôȵ õ´Lh9¶.¤3]®kÝoéy\Øç¨BH ƒiîœ qdŽZì6™y43Α³šž¯oÕ©• BKd5wS€2 â¸9ìAÝ*Ul‰0À£i}o©˜¦]>dàxTª!} ®=zÖÄ&©sô®‚Ë%aï9Û”P€‚Gsp`›DÄ4 kt[Bµ8C÷rIãúÖT„À¶½Q‹{h@¹L¨U¥1pZÛf2¿Ì/º!ù,B@ÿ€‚ƒ„…†‡‚9Š-53=ˆ‘’“ƒ1!— !„(-$𔤥‚E†4)('—¦º‡E0 ÀªÀ®„8,³$! »Ð½ÁÀ…ƒ9È'%—ÎgÑ“NIE$Ô’kÛ,(Þ ÎgåKKGÁë ´Œ³j…—A‚ú9ÉÁ‚uÕ ]4`Èâ)›§¡¡ žE”Ò¤I aÌ(H•«bÀ ƒã`f© L¸'“§bk@¨`K¡/ÅB F2æ­ˆ¢40X ;F8¥ðŒÀ €p“„ûx)/ì‚G Fà• ˜ÊP Ò&™AÀÀR4Òc¤Ð§øÿ.?¬‰ @€ܧK§Ë˺!ò”g‰Ëš:@Ë9 ¢dÀcáãþ1”‚X„Ìx§?I‹‡2ña—Dy¾rLLKØ¡ÙÑ ÜCŸâ‘g² d¢–@ÖIKp¤àe‚žò˜„pð)4ùb5“¡t 䀔‡Ö‚6uÃ#4 øDD Îè©púæí:A!ÎÙ•e,„–ÍA!„W„à“›…€Œºä©ùS/?QF4ñÎÖT^À n„0 ¥ƒpEiѬ«•% !@ ÑA|`!60DÈ@ðÁ䤫ÿ†+ À›£Õà˜šÚ )ÓV^â0DuâYÕàs«6 LGP¥Ò30êgRotEi—)ÄJˆ¯*BKƒèÁV³ÊXaº¢<°J*9ƒÌv!¤¯IuYÏ‚:"ûÁM´”ƒ *Z+Ü*ßÄ€2ЫXרWŒ³I•éB 1W!&Th,\2àET0ˆÁ Š5[Z¢¯# AGEŠœ.´ž:çŠîzw)È«¨Zº½ÞôÝ„m1Ke€°†‚u{»>E@ÇfÀ½‚ ¿I$+g1ij£€tC@It V!ÿ ˆ 2îô Cu¡AÒÔH ôz¸¯´("DL °7h_*ê%ʪ’²4p¥‹Ùx¨·¶4V|!áœXT(¨«U¼tÈ)y­ERC€cÜÆcP ’êG‚ €:“J‚äÕíÿ’Ô DÙPˆn‚KÁœóÇÈ/ ¡Æn°… 1ÌØÖ ¬ÙQž ¸—òŠõ¦µ t"]L Œ#® `eS@ ³@ 1 碯—˜ølD@N c€½Kæl`KÀ>Ÿ ^ª9õ¤a¡èÚŽÀËÁ n‹A['k¦Öµ´phñT΂ ÙÍ&¢ûH¶ BkPö!Ö I¢a–¶ HÀ[ÓYÛø… ±f+ÚË!€îIœ!s °A x³-×õ.Å¿Ý΃}8â(èS Z˜oò¯›èÀ:  ‘‹Tç7‘ÉEoI‘Z-i‰|ÒàŒ€56Noî¥Ô†"xà. s¡xÏ¢ÜÃ’ô¬e Aƒ˜Èˆ…à(G½i@ ‚àP@‚ß¹–AŽPP#£ žò”l®œ è Špƒ¢\€¬„ÐB€ Ó¦²ušhÁç-R `s ÁS .©<(A=ºB@T"x¬ç Ђ–•”à4À 2:Y–²9€ 2FÖlÜd¸cJ ¨”ÒN“¢ç(>_¢»§$èªOÁ Zˆ\ð`µ`†„ž‚íBåÓ! á’ˆÀS> ˜€¨;Bìã– Á¸·‰‡ ¿Ý2\€òcX€{;ÜJÐø¨(®9HlÀä @)ÈÁš;pygtk2tutorial/examples/entry.py0100644000117200001670000000404510227353425016223 0ustar finlayfcf#!/usr/bin/env python # example entry.py import pygtk pygtk.require('2.0') import gtk class EntryExample: def enter_callback(self, widget, entry): entry_text = entry.get_text() print "Entry contents: %s\n" % entry_text def entry_toggle_editable(self, checkbutton, entry): entry.set_editable(checkbutton.get_active()) def entry_toggle_visibility(self, checkbutton, entry): entry.set_visibility(checkbutton.get_active()) def __init__(self): # create a new window window = gtk.Window(gtk.WINDOW_TOPLEVEL) window.set_size_request(200, 100) window.set_title("GTK Entry") window.connect("delete_event", lambda w,e: gtk.main_quit()) vbox = gtk.VBox(False, 0) window.add(vbox) vbox.show() entry = gtk.Entry() entry.set_max_length(50) entry.connect("activate", self.enter_callback, entry) entry.set_text("hello") entry.insert_text(" world", len(entry.get_text())) entry.select_region(0, len(entry.get_text())) vbox.pack_start(entry, True, True, 0) entry.show() hbox = gtk.HBox(False, 0) vbox.add(hbox) hbox.show() check = gtk.CheckButton("Editable") hbox.pack_start(check, True, True, 0) check.connect("toggled", self.entry_toggle_editable, entry) check.set_active(True) check.show() check = gtk.CheckButton("Visible") hbox.pack_start(check, True, True, 0) check.connect("toggled", self.entry_toggle_visibility, entry) check.set_active(True) check.show() button = gtk.Button(stock=gtk.STOCK_CLOSE) button.connect("clicked", lambda w: gtk.main_quit()) vbox.pack_start(button, True, True, 0) button.set_flags(gtk.CAN_DEFAULT) button.grab_default() button.show() window.show() def main(): gtk.main() return 0 if __name__ == "__main__": EntryExample() main() pygtk2tutorial/examples/drawingarea.py0100644000117200001670000001571310227353425017352 0ustar finlayfcf#!/usr/bin/env python # example drawingarea.py import pygtk pygtk.require('2.0') import gtk import operator import time import string class DrawingAreaExample: def __init__(self): window = gtk.Window(gtk.WINDOW_TOPLEVEL) window.set_title("Drawing Area Example") window.connect("destroy", lambda w: gtk.main_quit()) self.area = gtk.DrawingArea() self.area.set_size_request(400, 300) self.pangolayout = self.area.create_pango_layout("") self.sw = gtk.ScrolledWindow() self.sw.add_with_viewport(self.area) self.table = gtk.Table(2,2) self.hruler = gtk.HRuler() self.vruler = gtk.VRuler() self.hruler.set_range(0, 400, 0, 400) self.vruler.set_range(0, 300, 0, 300) self.table.attach(self.hruler, 1, 2, 0, 1, yoptions=0) self.table.attach(self.vruler, 0, 1, 1, 2, xoptions=0) self.table.attach(self.sw, 1, 2, 1, 2) window.add(self.table) self.area.set_events(gtk.gdk.POINTER_MOTION_MASK | gtk.gdk.POINTER_MOTION_HINT_MASK ) self.area.connect("expose-event", self.area_expose_cb) def motion_notify(ruler, event): return ruler.emit("motion_notify_event", event) self.area.connect_object("motion_notify_event", motion_notify, self.hruler) self.area.connect_object("motion_notify_event", motion_notify, self.vruler) self.hadj = self.sw.get_hadjustment() self.vadj = self.sw.get_vadjustment() def val_cb(adj, ruler, horiz): if horiz: span = self.sw.get_allocation()[3] else: span = self.sw.get_allocation()[2] l,u,p,m = ruler.get_range() v = adj.value ruler.set_range(v, v+span, p, m) while gtk.events_pending(): gtk.main_iteration() self.hadj.connect('value-changed', val_cb, self.hruler, True) self.vadj.connect('value-changed', val_cb, self.vruler, False) def size_allocate_cb(wid, allocation): x, y, w, h = allocation l,u,p,m = self.hruler.get_range() m = max(m, w) self.hruler.set_range(l, l+w, p, m) l,u,p,m = self.vruler.get_range() m = max(m, h) self.vruler.set_range(l, l+h, p, m) self.sw.connect('size-allocate', size_allocate_cb) self.area.show() self.hruler.show() self.vruler.show() self.sw.show() self.table.show() window.show() def area_expose_cb(self, area, event): self.style = self.area.get_style() self.gc = self.style.fg_gc[gtk.STATE_NORMAL] self.draw_point(10,10) self.draw_points(110, 10) self.draw_line(210, 10) self.draw_lines(310, 10) self.draw_segments(10, 100) self.draw_rectangles(110, 100) self.draw_arcs(210, 100) self.draw_pixmap(310, 100) self.draw_polygon(10, 200) self.draw_rgb_image(110, 200) return True def draw_point(self, x, y): self.area.window.draw_point(self.gc, x+30, y+30) self.pangolayout.set_text("Point") self.area.window.draw_layout(self.gc, x+5, y+50, self.pangolayout) return def draw_points(self, x, y): points = [(x+10,y+10), (x+10,y), (x+40,y+30), (x+30,y+10), (x+50,y+10)] self.area.window.draw_points(self.gc, points) self.pangolayout.set_text("Points") self.area.window.draw_layout(self.gc, x+5, y+50, self.pangolayout) return def draw_line(self, x, y): self.area.window.draw_line(self.gc, x+10, y+10, x+20, y+30) self.pangolayout.set_text("Line") self.area.window.draw_layout(self.gc, x+5, y+50, self.pangolayout) return def draw_lines(self, x, y): points = [(x+10,y+10), (x+10,y), (x+40,y+30), (x+30,y+10), (x+50,y+10)] self.area.window.draw_lines(self.gc, points) self.pangolayout.set_text("Lines") self.area.window.draw_layout(self.gc, x+5, y+50, self.pangolayout) return def draw_segments(self, x, y): segments = ((x+20,y+10, x+20,y+70), (x+60,y+10, x+60,y+70), (x+10,y+30 , x+70,y+30), (x+10, y+50 , x+70, y+50)) self.area.window.draw_segments(self.gc, segments) self.pangolayout.set_text("Segments") self.area.window.draw_layout(self.gc, x+5, y+80, self.pangolayout) return def draw_rectangles(self, x, y): self.area.window.draw_rectangle(self.gc, False, x, y, 80, 70) self.area.window.draw_rectangle(self.gc, True, x+10, y+10, 20, 20) self.area.window.draw_rectangle(self.gc, True, x+50, y+10, 20, 20) self.area.window.draw_rectangle(self.gc, True, x+20, y+50, 40, 10) self.pangolayout.set_text("Rectangles") self.area.window.draw_layout(self.gc, x+5, y+80, self.pangolayout) return def draw_arcs(self, x, y): self.area.window.draw_arc(self.gc, False, x+10, y, 70, 70, 0, 360*64) self.area.window.draw_arc(self.gc, True, x+30, y+20, 10, 10, 0, 360*64) self.area.window.draw_arc(self.gc, True, x+50, y+20, 10, 10, 0, 360*64) self.area.window.draw_arc(self.gc, True, x+30, y+10, 30, 50, 210*64, 120*64) self.pangolayout.set_text("Arcs") self.area.window.draw_layout(self.gc, x+5, y+80, self.pangolayout) return def draw_pixmap(self, x, y): pixmap, mask = gtk.gdk.pixmap_create_from_xpm( self.area.window, self.style.bg[gtk.STATE_NORMAL], "gtk.xpm") self.area.window.draw_drawable(self.gc, pixmap, 0, 0, x+15, y+25, -1, -1) self.pangolayout.set_text("Pixmap") self.area.window.draw_layout(self.gc, x+5, y+80, self.pangolayout) return def draw_polygon(self, x, y): points = [(x+10,y+60), (x+10,y+20), (x+40,y+70), (x+30,y+30), (x+50,y+40)] self.area.window.draw_polygon(self.gc, True, points) self.pangolayout.set_text("Polygon") self.area.window.draw_layout(self.gc, x+5, y+80, self.pangolayout) return def draw_rgb_image(self, x, y): b = 80*3*80*['\0'] for i in range(80): for j in range(80): b[3*80*i+3*j] = chr(255-3*i) b[3*80*i+3*j+1] = chr(255-3*abs(i-j)) b[3*80*i+3*j+2] = chr(255-3*j) buff = string.join(b, '') self.area.window.draw_rgb_image(self.gc, x, y, 80, 80, gtk.gdk.RGB_DITHER_NONE, buff, 80*3) self.pangolayout.set_text("RGB Image") self.area.window.draw_layout(self.gc, x+5, y+80, self.pangolayout) return def main(): gtk.main() return 0 if __name__ == "__main__": DrawingAreaExample() main() pygtk2tutorial/examples/apple-red.png0100644000117200001670000000673110006075571017071 0ustar finlayfcf‰PNG  IHDR00Wù‡gAMA± üa IDATxœí™[Œ]WyÇk­½Ï9sóŒí8Á NìÜ)J„Ú„¶¢áÚ¨·Bª>p‰©E¤–¢ •¶‰WÉK« ÒR@è­«@›¤@Bq—‚S+¶ã8vÛ3ã™sÎÞk}—>œ3Á1¾Ä^ª|ÒÖž9ëöÿ¯ïûÖúïµàe{Ù^¶—ítvþy³—_æá¥Tz߇ß} „„¯ŸrçãÞ½ížc§ksëïÞð§M“?pï¿<üp+ÐÿE>ÑâÙ*ܾõÖ§ºúúÜêî W]³ví†Ëfgº½ôvwßûÖÛ>yºv!„›¿·ã'+³_ýŸdéL…·o½m]aûÄD•Ö­ŸÎóG»€¹‹7®îL¯ª«ù#ͯ¾êµ¿Òìü¯>tb»÷þÞW-,.ßñØã{>üä—Eà,ð§&§+Ö¬›hæ â /—–¤Ú³{^Ž>ß„Õçõzàñþ;Þû‰“ÞñàÃ?êÿüû/ ;p·o}ïƒU¦.¹tµ÷—KGŇ«f»Ë6¯)oš]ºäÒÙáE¯Z¼ä²91|î}~÷ö•¶ó ËW--7CàÏÏ4øÎíŸ ;·ö%åáéì”oßzÛ!òí g|a¾•é™NgnMoñàþåé˜,çVºK‹U!†ˆ@0“G¾|ç×¶¼nËæÚ±k5pÍJŸo»éºg&;Wˆ5B8tpaßoùû;[6:à×½ùOü\ œ2¹R wÍ®ér|¡•óΟ¨=Ó÷ÉéZ–—›ÜEBˆâ®|[ŒñaÕ²ÆÝþ,Æê­¿ÿ¡w~÷±û¿xà“½ù¶ VÕmäB)†F§h¡¬šá›ÿñcŽÝ·ó±ù¦üàÏüõÎíŸ}ê\IüŒþàn}G§Sef¶c"º´vÝÔªg÷ï/-þ3Æj"„ø`áówo»gprÛÛ>øŽAØúõ»¿qoÛäwÝò;7¬ª¹¥ŠO ̄ᰠ& ¬AÄXªA۰ضì8pìSî9pßÏMàßâªÙNwnmïØáƒƒja~¨n,‡v„?s÷¶{v}ôú7¼ñò¹ÙO„ÞÛêP ÷€v4!tñõ¯˜™ÜÒéTÔUMŒO¤Éh[(ê ‹0 š:²Ð4ôuÈ¢(­”íí;ú‘'Ÿyn÷9Øú©Û?SÕéc©bùèáጙõ!|'„øé/ýÍßÿø¦Í›7½çÒ+ÿ©Wu_Õ«œN¬H)‚£•‰DÄ^'ªj´FĪBÄ,h.è°%49³ Ãä ­0o…¥fH_ ô¹CóÍû¿ùøSÿv&/Ên¯zÏÂüàhÉ–ÜùtJÕ?ܽížç^¿qãÆÛ6]ñÝ^·»~ºÓ£î&º5³¤‰)†‹G©¨ˆÄ1¢¢!@©Š2Ä ¦ÄºÆÛ–z¢f² ¨rª©\饊6šìœ?7¹ý=¯¿òÃ_ùÞ“wžÕï¿ãÖ·§Š/”¬ùå;¿úw'WüÛ7ßüìyÓÓë'¦ºÌ^°ž¹›˜½æjò±c …ã»wÓz–€CDqbO1£H¡ä!Þ´ÈÀÐa f´î´æ›–c•±P26,dÁh¨RäЀ«¶ïصëŒ0Óh™O~ùίÞ{r¥/¾õ¦»VOM¬ŸìVlØòæ^}½Ù5ä…#„ey_\¤3Ѹ*1‚D7‰­*J­x§*4+DÐÆ¨ªÈ$‘¦Ä"½,õXä’Ùú^àêSxAJüpÇvýpÇž8¹ÂG®Ý×®Y½mº×eÝÆM¬Þ²…zr\ÉÇŽ1œ?LÞÿ ž êN£Éˆqû© X4L IŽzÁ‹!u$Dw¬¨á!P¢!¦X(3J€””⺫~ýÊÅÇw>ýðÉøÎ*æ®;oõç;Ý f®ØLթѦO{è ±ÛAž?ŒMt˜zåèU„:áÁñz47"ƒ’qsHÁÐNDSÀªˆ‡@Ý8Éœn5A7¢‚¡5eÐÏ<¾3øÐ®¿aª—¶têHš`â ÀÜ_ v:,î~‚ J¯;I±–’‡`†U"”* †af˜#æPpÄ wÇD0¬UÕÁSÀ«š˜"Vkaêð`ó9¸zõìÇT‘º5³—^W/…8–žÝOgn‰l‚?ŽÇÆÈ¦P2â ¥àÑQsÌÇå8ž‰;‘–Aܦ TÑÀ"â‚J9%Æ3êô^]ývÝ« )àÓ”¥%°@Û_¢®júBŒxɘ9w'ˆŽfÔTð(ê„0 ªˆº¡-/lp˜aðèˆAìAi¡#äaE¬N­0NKàm7]·©êE’;¡ªétzØ`@~ï$Zɘ`x°¡D‘Ê^1CQŠÌƱoNÉÝ„@Ápu,‚†@¨z¼%º¡j÷S‹ÖÓ¸6ÍÝÔÑ:ઔ¶EÍkñ¾â®àŠÕ©)¨e¢  š"ÇÜа` ®h ¨ š"ä–íT ÍžñFP¡v,GbrJ>5ÎÓèZÀS TP'4QuÜï÷Gñl†«b*-¨+1€8˜ʨ>L UÇ£",*¹±V1,EŠƒ,ä ˆ*Æà‚U;Ή@é&D„ ©"ËÇÑ™š&}a5\ )²"Jò‚F0U°Œ3 s°h Б‡BÄ+¬isaØ©ãè’§+ îœù Ãþ‹ªJ)-M™:&ÚàXɸ‚ "ÁÁŒày4âãd-£ÝÖTr‘•ðD@µ¢#§È°(Þq†ƒ@ªàþ­Sá<ãçܶw½Å§«ŠéÙULÍÌЛYE*J.™D ‰BŒ#À%Cdb¦`# jŠ™0#ÁqZUT)†h¦¡¯…¥¥}7kCPK ÿüý§VŸ“fÿZaoI¹Š@ÓPB iAŠ€ Ö©Á#Á”Ñ  ÁF‚Î Q£¨¢>JdŽPÌ1I‰áPÉ"XTlXæ‘E"iªûµÓa<ãF¶oyð…F §Ð¶}ƒã ó¾´˜g$ª‘ŒHF­àAQW\‚‘%SPpCU ¡ ªä±bQÚ2¤Í-ÍPXj %D OXÁpm÷®Óa<ë‰ÀÞý[‡¦{ êºK/E꺦rÃB¤[9FEŠ©¢2Ág¤ñÕT(>"ÕZ@<£hsaÐŽÂgyÙhC¡ÑL_)Ž ±ŠLMt¿ùîºùtøÎzbö|Ö[{ùvÌÆ0FÔ•*A"E" 'U(ÁG3.¨ƒE–‘lPSZsD %;Ù¡µB¿1¬rch•Ð&3Ô„%$çàDõ9F‘b§ÂwÆ“9€ï<±gϯ¾ìµ¸^aÅPuç€áØX£dœ¢ &dW²Y5CÇIšK!k _œR2m$*¦F ‘,B«…¶iI) 1=zßýO~ è2ÒÇD^Ðg%pÑk.þþª6¼3¤0-È”¡‘Q¡ ¢BGQr0úº‘-­*c…ZAÛ*mCiZ¡´ó€³‡vÙ;ä`˜dòÎH=é ³æÁÎÇö»øúK¾1³TÞ•ºiÚMG ±â¢d7Ä MiQ-´Ái‡™¶("…Á Ý€Ì’9Z”"­&•Ì À°1({ž[ûž]ؼ¸ è+‚¢Ë+º+lÎHâѽ‹›/»ð‰nˆoR·©Ò m„6R bN«ÎòÀö[Z)ô‡™Ö•A¥%¯¬< " 13´€ 2¸ptPرëЉQ2\1þûyFGõÏ­NŽ]r¦±tw<ùÌÂÞ#‹ÏoZ»ê7S7¤vüQ"RȪ´­ÐäB.™Ö„ÖœR mŒL©æŠV¦F6§˜Ñ´‚hFUYÌÂýí?yü0ÆØgt`|8°B 7.6®ÿ3‹ÍÏ{;ydb v˜“XsØ<´2N8á·ö0ÃqY?óŒfza\ï´!þºÞ9¡züTŒr¥;þ¿ðÓÍÒO9ÖÞèø7ƒŒc‚2~Ÿieü…8]¿‘Ÿ†Ñ‰blEËœ ç|µôÿÆþ\އÂÁ—IEND®B`‚pygtk2tutorial/examples/progressbar.py0100644000117200001670000001053010227353425017407 0ustar finlayfcf#!/usr/bin/env python # example progressbar.py import pygtk pygtk.require('2.0') import gtk, gobject # Update the value of the progress bar so that we get # some movement def progress_timeout(pbobj): if pbobj.activity_check.get_active(): pbobj.pbar.pulse() else: # Calculate the value of the progress bar using the # value range set in the adjustment object new_val = pbobj.pbar.get_fraction() + 0.01 if new_val > 1.0: new_val = 0.0 # Set the new value pbobj.pbar.set_fraction(new_val) # As this is a timeout function, return TRUE so that it # continues to get called return True class ProgressBar: # Callback that toggles the text display within the progress # bar trough def toggle_show_text(self, widget, data=None): if widget.get_active(): self.pbar.set_text("some text") else: self.pbar.set_text("") # Callback that toggles the activity mode of the progress # bar def toggle_activity_mode(self, widget, data=None): if widget.get_active(): self.pbar.pulse() else: self.pbar.set_fraction(0.0) # Callback that toggles the orientation of the progress bar def toggle_orientation(self, widget, data=None): if self.pbar.get_orientation() == gtk.PROGRESS_LEFT_TO_RIGHT: self.pbar.set_orientation(gtk.PROGRESS_RIGHT_TO_LEFT) elif self.pbar.get_orientation() == gtk.PROGRESS_RIGHT_TO_LEFT: self.pbar.set_orientation(gtk.PROGRESS_LEFT_TO_RIGHT) # Clean up allocated memory and remove the timer def destroy_progress(self, widget, data=None): gobject.source_remove(self.timer) self.timer = 0 gtk.main_quit() def __init__(self): self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.set_resizable(True) self.window.connect("destroy", self.destroy_progress) self.window.set_title("ProgressBar") self.window.set_border_width(0) vbox = gtk.VBox(False, 5) vbox.set_border_width(10) self.window.add(vbox) vbox.show() # Create a centering alignment object align = gtk.Alignment(0.5, 0.5, 0, 0) vbox.pack_start(align, False, False, 5) align.show() # Create the ProgressBar self.pbar = gtk.ProgressBar() align.add(self.pbar) self.pbar.show() # Add a timer callback to update the value of the progress bar self.timer = gobject.timeout_add (100, progress_timeout, self) separator = gtk.HSeparator() vbox.pack_start(separator, False, False, 0) separator.show() # rows, columns, homogeneous table = gtk.Table(2, 2, False) vbox.pack_start(table, False, True, 0) table.show() # Add a check button to select displaying of the trough text check = gtk.CheckButton("Show text") table.attach(check, 0, 1, 0, 1, gtk.EXPAND | gtk.FILL, gtk.EXPAND | gtk.FILL, 5, 5) check.connect("clicked", self.toggle_show_text) check.show() # Add a check button to toggle activity mode self.activity_check = check = gtk.CheckButton("Activity mode") table.attach(check, 0, 1, 1, 2, gtk.EXPAND | gtk.FILL, gtk.EXPAND | gtk.FILL, 5, 5) check.connect("clicked", self.toggle_activity_mode) check.show() # Add a check button to toggle orientation check = gtk.CheckButton("Right to Left") table.attach(check, 0, 1, 2, 3, gtk.EXPAND | gtk.FILL, gtk.EXPAND | gtk.FILL, 5, 5) check.connect("clicked", self.toggle_orientation) check.show() # Add a button to exit the program button = gtk.Button("close") button.connect("clicked", self.destroy_progress) vbox.pack_start(button, False, False, 0) # This makes it so the button is the default. button.set_flags(gtk.CAN_DEFAULT) # This grabs this button to be the default button. Simply hitting # the "Enter" key will cause this button to activate. button.grab_default () button.show() self.window.show() def main(): gtk.main() return 0 if __name__ == "__main__": ProgressBar() main() pygtk2tutorial/examples/pixmap.py0100644000117200001670000000353310227353425016361 0ustar finlayfcf#!/usr/bin/env python # example pixmap.py import pygtk pygtk.require('2.0') import gtk # XPM data of Open-File icon xpm_data = [ "16 16 3 1", " c None", ". c #000000000000", "X c #FFFFFFFFFFFF", " ", " ...... ", " .XXX.X. ", " .XXX.XX. ", " .XXX.XXX. ", " .XXX..... ", " .XXXXXXX. ", " .XXXXXXX. ", " .XXXXXXX. ", " .XXXXXXX. ", " .XXXXXXX. ", " .XXXXXXX. ", " .XXXXXXX. ", " ......... ", " ", " " ] class PixmapExample: # when invoked (via signal delete_event), terminates the application. def close_application(self, widget, event, data=None): gtk.main_quit() return False # is invoked when the button is clicked. It just prints a message. def button_clicked(self, widget, data=None): print "button clicked" def __init__(self): # create the main window, and attach delete_event signal to terminating # the application window = gtk.Window(gtk.WINDOW_TOPLEVEL) window.connect("delete_event", self.close_application) window.set_border_width(10) window.show() # now for the pixmap from XPM data pixmap, mask = gtk.gdk.pixmap_create_from_xpm_d(window.window, None, xpm_data) # an image widget to contain the pixmap image = gtk.Image() image.set_from_pixmap(pixmap, mask) image.show() # a button to contain the image widget button = gtk.Button() button.add(image) window.add(button) button.show() button.connect("clicked", self.button_clicked) def main(): gtk.main() return 0 if __name__ == "__main__": PixmapExample() main() pygtk2tutorial/examples/itemfactory.py0100644000117200001670000000727210227353425017415 0ustar finlayfcf#!/usr/bin/env python # example itemfactory.py import pygtk pygtk.require('2.0') import gtk class ItemFactoryExample: # Obligatory basic callback def print_hello(self, w, data): print "Hello, World!" # This is the ItemFactoryEntry structure used to generate new menus. # Item 1: The menu path. The letter after the underscore indicates an # accelerator key once the menu is open. # Item 2: The accelerator key for the entry # Item 3: The callback. # Item 4: The callback action. This changes the parameters with # which the callback is called. The default is 0. # Item 5: The item type, used to define what kind of an item it is. # Here are the possible values: # NULL -> "" # "" -> "" # "" -> create a title item # "<Item>" -> create a simple item # "<CheckItem>" -> create a check item # "<ToggleItem>" -> create a toggle item # "<RadioItem>" -> create a radio item # <path> -> path of a radio item to link against # "<Separator>" -> create a separator # "<Branch>" -> create an item to hold sub items (optional) # "<LastBranch>" -> create a right justified branch def get_main_menu(self, window): accel_group = gtk.AccelGroup() # This function initializes the item factory. # Param 1: The type of menu - can be MenuBar, Menu, # or OptionMenu. # Param 2: The path of the menu. # Param 3: A reference to an AccelGroup. The item factory sets up # the accelerator table while generating menus. item_factory = gtk.ItemFactory(gtk.MenuBar, "<main>", accel_group) # This method generates the menu items. Pass to the item factory # the list of menu items item_factory.create_items(self.menu_items) # Attach the new accelerator group to the window. window.add_accel_group(accel_group) # need to keep a reference to item_factory to prevent its destruction self.item_factory = item_factory # Finally, return the actual menu bar created by the item factory. return item_factory.get_widget("<main>") def __init__(self): self.menu_items = ( ( "/_File", None, None, 0, "<Branch>" ), ( "/File/_New", "<control>N", self.print_hello, 0, None ), ( "/File/_Open", "<control>O", self.print_hello, 0, None ), ( "/File/_Save", "<control>S", self.print_hello, 0, None ), ( "/File/Save _As", None, None, 0, None ), ( "/File/sep1", None, None, 0, "<Separator>" ), ( "/File/Quit", "<control>Q", gtk.main_quit, 0, None ), ( "/_Options", None, None, 0, "<Branch>" ), ( "/Options/Test", None, None, 0, None ), ( "/_Help", None, None, 0, "<LastBranch>" ), ( "/_Help/About", None, None, 0, None ), ) window = gtk.Window(gtk.WINDOW_TOPLEVEL) window.connect("destroy", lambda w: gtk.main_quit()) window.set_title("Item Factory") window.set_size_request(300, 200) main_vbox = gtk.VBox(False, 1) main_vbox.set_border_width(1) window.add(main_vbox) main_vbox.show() menubar = self.get_main_menu(window) main_vbox.pack_start(menubar, False, True, 0) menubar.show() window.show() def main(): gtk.main() return 0 if __name__ == "__main__": ItemFactoryExample() main() ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/textview-basic.py�����������������������������������������������������������0100644�0001172�0000167�00000012676�10227353425�020031� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example textview-basic.py import pygtk pygtk.require('2.0') import gtk class TextViewExample: def toggle_editable(self, checkbutton, textview): textview.set_editable(checkbutton.get_active()) def toggle_cursor_visible(self, checkbutton, textview): textview.set_cursor_visible(checkbutton.get_active()) def toggle_left_margin(self, checkbutton, textview): if checkbutton.get_active(): textview.set_left_margin(50) else: textview.set_left_margin(0) def toggle_right_margin(self, checkbutton, textview): if checkbutton.get_active(): textview.set_right_margin(50) else: textview.set_right_margin(0) def new_wrap_mode(self, radiobutton, textview, val): if radiobutton.get_active(): textview.set_wrap_mode(val) def new_justification(self, radiobutton, textview, val): if radiobutton.get_active(): textview.set_justification(val) def close_application(self, widget): gtk.main_quit() def __init__(self): window = gtk.Window(gtk.WINDOW_TOPLEVEL) window.set_resizable(True) window.connect("destroy", self.close_application) window.set_title("TextView Widget Basic Example") window.set_border_width(0) box1 = gtk.VBox(False, 0) window.add(box1) box1.show() box2 = gtk.VBox(False, 10) box2.set_border_width(10) box1.pack_start(box2, True, True, 0) box2.show() sw = gtk.ScrolledWindow() sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) textview = gtk.TextView() textbuffer = textview.get_buffer() sw.add(textview) sw.show() textview.show() box2.pack_start(sw) # Load the file textview-basic.py into the text window infile = open("textview-basic.py", "r") if infile: string = infile.read() infile.close() textbuffer.set_text(string) hbox = gtk.HButtonBox() box2.pack_start(hbox, False, False, 0) hbox.show() vbox = gtk.VBox() vbox.show() hbox.pack_start(vbox, False, False, 0) # check button to toggle editable mode check = gtk.CheckButton("Editable") vbox.pack_start(check, False, False, 0) check.connect("toggled", self.toggle_editable, textview) check.set_active(True) check.show() # check button to toggle cursor visiblity check = gtk.CheckButton("Cursor Visible") vbox.pack_start(check, False, False, 0) check.connect("toggled", self.toggle_cursor_visible, textview) check.set_active(True) check.show() # check button to toggle left margin check = gtk.CheckButton("Left Margin") vbox.pack_start(check, False, False, 0) check.connect("toggled", self.toggle_left_margin, textview) check.set_active(False) check.show() # check button to toggle right margin check = gtk.CheckButton("Right Margin") vbox.pack_start(check, False, False, 0) check.connect("toggled", self.toggle_right_margin, textview) check.set_active(False) check.show() # radio buttons to specify wrap mode vbox = gtk.VBox() vbox.show() hbox.pack_start(vbox, False, False, 0) radio = gtk.RadioButton(None, "WRAP__NONE") vbox.pack_start(radio, False, True, 0) radio.connect("toggled", self.new_wrap_mode, textview, gtk.WRAP_NONE) radio.set_active(True) radio.show() radio = gtk.RadioButton(radio, "WRAP__CHAR") vbox.pack_start(radio, False, True, 0) radio.connect("toggled", self.new_wrap_mode, textview, gtk.WRAP_CHAR) radio.show() radio = gtk.RadioButton(radio, "WRAP__WORD") vbox.pack_start(radio, False, True, 0) radio.connect("toggled", self.new_wrap_mode, textview, gtk.WRAP_WORD) radio.show() # radio buttons to specify justification vbox = gtk.VBox() vbox.show() hbox.pack_start(vbox, False, False, 0) radio = gtk.RadioButton(None, "JUSTIFY__LEFT") vbox.pack_start(radio, False, True, 0) radio.connect("toggled", self.new_justification, textview, gtk.JUSTIFY_LEFT) radio.set_active(True) radio.show() radio = gtk.RadioButton(radio, "JUSTIFY__RIGHT") vbox.pack_start(radio, False, True, 0) radio.connect("toggled", self.new_justification, textview, gtk.JUSTIFY_RIGHT) radio.show() radio = gtk.RadioButton(radio, "JUSTIFY__CENTER") vbox.pack_start(radio, False, True, 0) radio.connect("toggled", self.new_justification, textview, gtk.JUSTIFY_CENTER) radio.show() separator = gtk.HSeparator() box1.pack_start(separator, False, True, 0) separator.show() box2 = gtk.VBox(False, 10) box2.set_border_width(10) box1.pack_start(box2, False, True, 0) box2.show() button = gtk.Button("close") button.connect("clicked", self.close_application) box2.pack_start(button, True, True, 0) button.set_flags(gtk.CAN_DEFAULT) button.grab_default() button.show() window.show() def main(): gtk.main() return 0 if __name__ == "__main__": TextViewExample() main() ������������������������������������������������������������������pygtk2tutorial/examples/aspectframe.py��������������������������������������������������������������0100644�0001172�0000167�00000002316�10227353425�017353� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example aspectframe.py import pygtk pygtk.require('2.0') import gtk class AspectFrameExample: def __init__(self): window = gtk.Window(gtk.WINDOW_TOPLEVEL); window.set_title("Aspect Frame") window.connect("destroy", lambda x: gtk.main_quit()) window.set_border_width(10) # Create an aspect_frame and add it to our toplevel window aspect_frame = gtk.AspectFrame("2x1", # label 0.5, # center x 0.5, # center y 2, # xsize/ysize = 2 False) # ignore child's aspect window.add(aspect_frame) aspect_frame.show() # Now add a child widget to the aspect frame drawing_area = gtk.DrawingArea() # Ask for a 200x200 window, but the AspectFrame will give us a 200x100 # window since we are forcing a 2x1 aspect ratio drawing_area.set_size_request(200, 200) aspect_frame.add(drawing_area) drawing_area.show() window.show() def main(): gtk.main() return 0 if __name__ == "__main__": AspectFrameExample() main() ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/actiongroup.py��������������������������������������������������������������0100644�0001172�0000167�00000014021�10123673666�017416� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python import pygtk pygtk.require('2.0') import gtk class ActionGroupExample: def __init__(self): # Create the toplevel window window = gtk.Window() window.connect('destroy', lambda w: gtk.main_quit()) window.set_size_request(300, -1) vbox = gtk.VBox() window.add(vbox) # Create an accelerator group accelgroup = gtk.AccelGroup() # Add the accelerator group to the toplevel window window.add_accel_group(accelgroup) # Create an ActionGroup named ActionExample actiongroup = gtk.ActionGroup('ActionGroupExample') self.actiongroup = actiongroup # Create a ToggleAction, etc. actiongroup.add_toggle_actions([('Mute', None, '_Mute', '<Control>m', 'Mute the volume', self.mute_cb)]) # Create actions actiongroup.add_actions([('Quit', gtk.STOCK_QUIT, '_Quit me!', None, 'Quit the Program', self.quit_cb), ('File', None, '_File'), ('Sound', None, '_Sound'), ('RadioBand', None, '_Radio Band')]) actiongroup.get_action('Quit').set_property('short-label', '_Quit') # Create some RadioActions actiongroup.add_radio_actions([('AM', None, '_AM', '<Control>a', 'AM Radio', 0), ('FM', None, '_FM', '<Control>f', 'FM Radio', 1), ('SSB', None, '_SSB', '<Control>s', 'SSB Radio', 2), ], 0, self.radioband_cb) for action in actiongroup.list_actions(): action.set_accel_group(accelgroup) # Create a MenuBar menubar = gtk.MenuBar() vbox.pack_start(menubar, False) # Create the File Action MenuItem file_menuitem = actiongroup.get_action('File').create_menu_item() menubar.append(file_menuitem) # Create the File Menu file_menu = gtk.Menu() file_menuitem.set_submenu(file_menu) # Create a Quit MenuItem quitaction = actiongroup.get_action('Quit') quititem = quitaction.create_menu_item() file_menu.append(quititem) # Create and populate the Sound menu with a Mute menuitem sound_menuitem = actiongroup.get_action('Sound').create_menu_item() menubar.append(sound_menuitem) sound_menu = gtk.Menu() sound_menuitem.set_submenu(sound_menu) muteaction = actiongroup.get_action('Mute') muteitem = muteaction.create_menu_item() sound_menu.append(muteitem) # Create and populate the RadioBand menu radiobanditem = actiongroup.get_action('RadioBand').create_menu_item() menubar.append(radiobanditem) radiobandmenu = gtk.Menu() radiobanditem.set_submenu(radiobandmenu) amaction = actiongroup.get_action('AM') amitem = amaction.create_menu_item() radiobandmenu.append(amitem) fmaction = actiongroup.get_action('FM') fmitem = fmaction.create_menu_item() radiobandmenu.append(fmitem) ssbaction = actiongroup.get_action('SSB') ssbitem = ssbaction.create_menu_item() radiobandmenu.append(ssbitem) # Create a Toolbar toolbar = gtk.Toolbar() vbox.pack_start(toolbar, False) # Create a proxy ToolItem quittoolitem = quitaction.create_tool_item() toolbar.insert(quittoolitem, 0) # Create a separator separator = gtk.SeparatorToolItem() toolbar.insert(separator, -1) # Create toggle and radio tool items and add to toolbar mutetoolitem = muteaction.create_tool_item() toolbar.insert(mutetoolitem, -1) separator = gtk.SeparatorToolItem() toolbar.insert(separator, -1) amtoolitem = amaction.create_tool_item() toolbar.insert(amtoolitem, -1) fmtoolitem = fmaction.create_tool_item() toolbar.insert(fmtoolitem, -1) ssbtoolitem = ssbaction.create_tool_item() toolbar.insert(ssbtoolitem, -1) # Create and pack two Labels label = gtk.Label('Sound is not muted') vbox.pack_start(label) self.mutelabel = label label = gtk.Label('Radio band is AM') vbox.pack_start(label) self.bandlabel = label # Create buttons to control visibility and sensitivity of actions buttonbox = gtk.HButtonBox() sensitivebutton = gtk.CheckButton('Sensitive') sensitivebutton.set_active(True) sensitivebutton.connect('toggled', self.toggle_sensitivity) visiblebutton = gtk.CheckButton('Visible') visiblebutton.set_active(True) visiblebutton.connect('toggled', self.toggle_visibility) # add them to buttonbox buttonbox.pack_start(sensitivebutton, False) buttonbox.pack_start(visiblebutton, False) vbox.pack_start(buttonbox) # Have to set tooltip after toolitems are added to toolbar for action in actiongroup.list_actions(): action.set_property('tooltip', action.get_property('tooltip')) window.show_all() return def mute_cb(self, action): # action has not toggled yet text = ('muted', 'not muted')[action.get_active()==False] self.mutelabel.set_text('Sound is %s' % text) return def radioband_cb(self, action, current): text = ('AM', 'FM', 'SSB')[action.get_current_value()] self.bandlabel.set_text('Radio band is %s' % text) return def quit_cb(self, b): print 'Quitting program' gtk.main_quit() def toggle_sensitivity(self, b): self.actiongroup.set_sensitive(b.get_active()) return def toggle_visibility(self, b): self.actiongroup.set_visible(b.get_active()) return if __name__ == '__main__': ba = ActionGroupExample() gtk.main() ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/frame.py��������������������������������������������������������������������0100644�0001172�0000167�00000002033�10072700472�016143� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example frame.py import pygtk pygtk.require('2.0') import gtk class FrameExample: def __init__(self): # Create a new window window = gtk.Window(gtk.WINDOW_TOPLEVEL) window.set_title("Frame Example") # Here we connect the "destroy" event to a signal handler window.connect("destroy", lambda w: gtk.main_quit()) window.set_size_request(300, 300) # Sets the border width of the window. window.set_border_width(10) # Create a Frame frame = gtk.Frame() window.add(frame) # Set the frame's label frame.set_label("GTK Frame Widget") # Align the label at the right of the frame frame.set_label_align(1.0, 0.0) # Set the style of the frame frame.set_shadow_type(gtk.SHADOW_ETCHED_OUT) frame.show() # Display the window window.show() def main(): # Enter the event loop gtk.main() return 0 if __name__ == "__main__": FrameExample() main() �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/colorbutton.py��������������������������������������������������������������0100644�0001172�0000167�00000002006�10111563104�017414� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python import pygtk pygtk.require('2.0') import gtk class ColorButtonExample: def __init__(self): window = gtk.Window() window.connect('destroy', lambda w: gtk.main_quit()) hbox = gtk.HBox() window.add(hbox) label = gtk.Label('Foreground Color:') hbox.pack_start(label, False) colorbutton = gtk.ColorButton(gtk.gdk.color_parse('red')) colorbutton.set_use_alpha(True) colorbutton.set_title('Select a Color') colorbutton.set_alpha(32767) colorbutton.connect('color-set', self.color_set_cb) hbox.pack_start(colorbutton) window.show_all() return def color_set_cb(self, colorbutton): color = colorbutton.get_color() alpha = colorbutton.get_alpha() print 'You have selected the color:', \ color.red, color.green, color.blue, 'with alpha:', alpha return def main(): gtk.main() if __name__ == '__main__': cbe = ColorButtonExample() main() ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/dragndrop.py����������������������������������������������������������������0100755�0001172�0000167�00000011300�10227353425�017035� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example dragndrop.py import pygtk pygtk.require('2.0') import gtk import string, time import gtkxpm class DragNDropExample: HEIGHT = 600 WIDTH = 600 TARGET_TYPE_TEXT = 80 TARGET_TYPE_PIXMAP = 81 fromImage = [ ( "text/plain", 0, TARGET_TYPE_TEXT ), ( "image/x-xpixmap", 0, TARGET_TYPE_PIXMAP ) ] toButton = [ ( "text/plain", 0, TARGET_TYPE_TEXT ) ] toCanvas = [ ( "image/x-xpixmap", 0, TARGET_TYPE_PIXMAP ) ] def layout_resize(self, widget, event): x, y, width, height = widget.get_allocation() if width > self.lwidth or height > self.lheight: self.lwidth = max(width, self.lwidth) self.lheight = max(height, self.lheight) widget.set_size(self.lwidth, self.lheight) def makeLayout(self): self.lwidth = self.WIDTH self.lheight = self.HEIGHT box = gtk.VBox(False,0) box.show() table = gtk.Table(2, 2, False) table.show() box.pack_start(table, True, True, 0) layout = gtk.Layout() self.layout = layout layout.set_size(self.lwidth, self.lheight) layout.connect("size-allocate", self.layout_resize) layout.show() table.attach(layout, 0, 1, 0, 1, gtk.FILL|gtk.EXPAND, gtk.FILL|gtk.EXPAND, 0, 0) # create the scrollbars and pack into the table vScrollbar = gtk.VScrollbar(None) vScrollbar.show() table.attach(vScrollbar, 1, 2, 0, 1, gtk.FILL|gtk.SHRINK, gtk.FILL|gtk.SHRINK, 0, 0) hScrollbar = gtk.HScrollbar(None) hScrollbar.show() table.attach(hScrollbar, 0, 1, 1, 2, gtk.FILL|gtk.SHRINK, gtk.FILL|gtk.SHRINK, 0, 0) # tell the scrollbars to use the layout widget's adjustments vAdjust = layout.get_vadjustment() vScrollbar.set_adjustment(vAdjust) hAdjust = layout.get_hadjustment() hScrollbar.set_adjustment(hAdjust) layout.connect("drag_data_received", self.receiveCallback) layout.drag_dest_set(gtk.DEST_DEFAULT_MOTION | gtk.DEST_DEFAULT_HIGHLIGHT | gtk.DEST_DEFAULT_DROP, self.toCanvas, gtk.gdk.ACTION_COPY) self.addImage(gtkxpm.gtk_xpm, 0, 0) button = gtk.Button("Text Target") button.show() button.connect("drag_data_received", self.receiveCallback) button.drag_dest_set(gtk.DEST_DEFAULT_MOTION | gtk.DEST_DEFAULT_HIGHLIGHT | gtk.DEST_DEFAULT_DROP, self.toButton, gtk.gdk.ACTION_COPY) box.pack_start(button, False, False, 0) return box def addImage(self, xpm, xd, yd): hadj = self.layout.get_hadjustment() vadj = self.layout.get_vadjustment() style = self.window.get_style() pixmap, mask = gtk.gdk.pixmap_create_from_xpm_d( self.window.window, style.bg[gtk.STATE_NORMAL], xpm) image = gtk.Image() image.set_from_pixmap(pixmap, mask) button = gtk.Button() button.add(image) button.connect("drag_data_get", self.sendCallback) button.drag_source_set(gtk.gdk.BUTTON1_MASK, self.fromImage, gtk.gdk.ACTION_COPY) button.show_all() # have to adjust for the scrolling of the layout - event location # is relative to the viewable not the layout size self.layout.put(button, int(xd+hadj.value), int(yd+vadj.value)) return def sendCallback(self, widget, context, selection, targetType, eventTime): if targetType == self.TARGET_TYPE_TEXT: now = time.time() str = time.ctime(now) selection.set(selection.target, 8, str) elif targetType == self.TARGET_TYPE_PIXMAP: selection.set(selection.target, 8, string.join(gtkxpm.gtk_xpm, '\n')) def receiveCallback(self, widget, context, x, y, selection, targetType, time): if targetType == self.TARGET_TYPE_TEXT: label = widget.get_children()[0] label.set_text(selection.data) elif targetType == self.TARGET_TYPE_PIXMAP: self.addImage(string.split(selection.data, '\n'), x, y) def __init__(self): self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.set_default_size(300, 300) self.window.connect("destroy", lambda w: gtk.main_quit()) self.window.show() layout = self.makeLayout() self.window.add(layout) def main(): gtk.main() if __name__ == "__main__": DragNDropExample() main() ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/arrow.py��������������������������������������������������������������������0100644�0001172�0000167�00000003003�10227353425�016205� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example arrow.py import pygtk pygtk.require('2.0') import gtk # Create an Arrow widget with the specified parameters # and pack it into a button def create_arrow_button(arrow_type, shadow_type): button = gtk.Button(); arrow = gtk.Arrow(arrow_type, shadow_type); button.add(arrow) button.show() arrow.show() return button class Arrows: def __init__(self): # Create a new window window = gtk.Window(gtk.WINDOW_TOPLEVEL) window.set_title("Arrow Buttons") # It's a good idea to do this for all windows. window.connect("destroy", lambda x: gtk.main_quit()) # Sets the border width of the window. window.set_border_width(10) # Create a box to hold the arrows/buttons box = gtk.HBox(False, 0) box.set_border_width(2) window.add(box) # Pack and show all our widgets box.show() button = create_arrow_button(gtk.ARROW_UP, gtk.SHADOW_IN) box.pack_start(button, False, False, 3) button = create_arrow_button(gtk.ARROW_DOWN, gtk.SHADOW_OUT) box.pack_start(button, False, False, 3) button = create_arrow_button(gtk.ARROW_LEFT, gtk.SHADOW_ETCHED_IN) box.pack_start(button, False, False, 3) button = create_arrow_button(gtk.ARROW_RIGHT, gtk.SHADOW_ETCHED_OUT) box.pack_start(button, False, False, 3) window.show() def main(): gtk.main() return 0 if __name__ == "__main__": Arrows() main() �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/gtkxpm.py�������������������������������������������������������������������0100644�0001172�0000167�00000003070�10006075574�016372� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# example gtkxpm.py gtk_xpm = [ "32 39 5 1", ". c none", "+ c black", "@ c #3070E0", "# c #F05050", "$ c #35E035", "................+...............", "..............+++++.............", "............+++++@@++...........", "..........+++++@@@@@@++.........", "........++++@@@@@@@@@@++........", "......++++@@++++++++@@@++.......", ".....+++@@@+++++++++++@@@++.....", "...+++@@@@+++@@@@@@++++@@@@+....", "..+++@@@@+++@@@@@@@@+++@@@@@++..", ".++@@@@@@+++@@@@@@@@@@@@@@@@@@++", ".+#+@@@@@@++@@@@+++@@@@@@@@@@@@+", ".+##++@@@@+++@@@+++++@@@@@@@@$@.", ".+###++@@@@+++@@@+++@@@@@++$$$@.", ".+####+++@@@+++++++@@@@@+@$$$$@.", ".+#####+++@@@@+++@@@@++@$$$$$$+.", ".+######++++@@@@@@@++@$$$$$$$$+.", ".+#######+##+@@@@+++$$$$$$@@$$+.", ".+###+++##+##+@@++@$$$$$$++$$$+.", ".+###++++##+##+@@$$$$$$$@+@$$@+.", ".+###++++++#+++@$$@+@$$@++$$$@+.", ".+####+++++++#++$$@+@$$++$$$$+..", ".++####++++++#++$$@+@$++@$$$$+..", ".+#####+++++##++$$++@+++$$$$$+..", ".++####+++##+#++$$+++++@$$$$$+..", ".++####+++####++$$++++++@$$$@+..", ".+#####++#####++$$+++@++++@$@+..", ".+#####++#####++$$++@$$@+++$@@..", ".++####++#####++$$++$$$$$+@$@++.", ".++####++#####++$$++$$$$$$$$+++.", ".+++####+#####++$$++$$$$$$$@+++.", "..+++#########+@$$+@$$$$$$+++...", "...+++########+@$$$$$$$$@+++....", ".....+++######+@$$$$$$$+++......", "......+++#####+@$$$$$@++........", ".......+++####+@$$$$+++.........", ".........++###+$$$@++...........", "..........++##+$@+++............", "...........+++++++..............", ".............++++..............." ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/layout.py�������������������������������������������������������������������0100644�0001172�0000167�00000004643�10227353425�016403� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example layout.py import pygtk pygtk.require('2.0') import gtk import random class LayoutExample: def WindowDeleteEvent(self, widget, event): # return false so that window will be destroyed return False def WindowDestroy(self, widget, *data): # exit main loop gtk.main_quit() def ButtonClicked(self, button): # move the button self.layout.move(button, random.randint(0,500), random.randint(0,500)) def __init__(self): # create the top level window window = gtk.Window(gtk.WINDOW_TOPLEVEL) window.set_title("Layout Example") window.set_default_size(300, 300) window.connect("delete-event", self.WindowDeleteEvent) window.connect("destroy", self.WindowDestroy) # create the table and pack into the window table = gtk.Table(2, 2, False) window.add(table) # create the layout widget and pack into the table self.layout = gtk.Layout(None, None) self.layout.set_size(600, 600) table.attach(self.layout, 0, 1, 0, 1, gtk.FILL|gtk.EXPAND, gtk.FILL|gtk.EXPAND, 0, 0) # create the scrollbars and pack into the table vScrollbar = gtk.VScrollbar(None) table.attach(vScrollbar, 1, 2, 0, 1, gtk.FILL|gtk.SHRINK, gtk.FILL|gtk.SHRINK, 0, 0) hScrollbar = gtk.HScrollbar(None) table.attach(hScrollbar, 0, 1, 1, 2, gtk.FILL|gtk.SHRINK, gtk.FILL|gtk.SHRINK, 0, 0) # tell the scrollbars to use the layout widget's adjustments vAdjust = self.layout.get_vadjustment() vScrollbar.set_adjustment(vAdjust) hAdjust = self.layout.get_hadjustment() hScrollbar.set_adjustment(hAdjust) # create 3 buttons and put them into the layout widget button = gtk.Button("Press Me") button.connect("clicked", self.ButtonClicked) self.layout.put(button, 0, 0) button = gtk.Button("Press Me") button.connect("clicked", self.ButtonClicked) self.layout.put(button, 100, 0) button = gtk.Button("Press Me") button.connect("clicked", self.ButtonClicked) self.layout.put(button, 200, 0) # show all the widgets window.show_all() def main(): # enter the main loop gtk.main() return 0 if __name__ == "__main__": LayoutExample() main() ���������������������������������������������������������������������������������������������pygtk2tutorial/examples/label.py��������������������������������������������������������������������0100644�0001172�0000167�00000007325�10227353425�016145� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example label.py import pygtk pygtk.require('2.0') import gtk class Labels: def __init__(self): self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.connect("destroy", lambda w: gtk.main_quit()) self.window.set_title("Label") vbox = gtk.VBox(False, 5) hbox = gtk.HBox(False, 5) self.window.add(hbox) hbox.pack_start(vbox, False, False, 0) self.window.set_border_width(5) frame = gtk.Frame("Normal Label") label = gtk.Label("This is a Normal label") frame.add(label) vbox.pack_start(frame, False, False, 0) frame = gtk.Frame("Multi-line Label") label = gtk.Label("This is a Multi-line label.\nSecond line\n" "Third line") frame.add(label) vbox.pack_start(frame, False, False, 0) frame = gtk.Frame("Left Justified Label") label = gtk.Label("This is a Left-Justified\n" "Multi-line label.\nThird line") label.set_justify(gtk.JUSTIFY_LEFT) frame.add(label) vbox.pack_start(frame, False, False, 0) frame = gtk.Frame("Right Justified Label") label = gtk.Label("This is a Right-Justified\nMulti-line label.\n" "Fourth line, (j/k)") label.set_justify(gtk.JUSTIFY_RIGHT) frame.add(label) vbox.pack_start(frame, False, False, 0) vbox = gtk.VBox(False, 5) hbox.pack_start(vbox, False, False, 0) frame = gtk.Frame("Line wrapped label") label = gtk.Label("This is an example of a line-wrapped label. It " "should not be taking up the entire " "width allocated to it, but automatically " "wraps the words to fit. " "The time has come, for all good men, to come to " "the aid of their party. " "The sixth sheik's six sheep's sick.\n" " It supports multiple paragraphs correctly, " "and correctly adds " "many extra spaces. ") label.set_line_wrap(True) frame.add(label) vbox.pack_start(frame, False, False, 0) frame = gtk.Frame("Filled, wrapped label") label = gtk.Label("This is an example of a line-wrapped, filled label. " "It should be taking " "up the entire width allocated to it. " "Here is a sentence to prove " "my point. Here is another sentence. " "Here comes the sun, do de do de do.\n" " This is a new paragraph.\n" " This is another newer, longer, better " "paragraph. It is coming to an end, " "unfortunately.") label.set_justify(gtk.JUSTIFY_FILL) label.set_line_wrap(True) frame.add(label) vbox.pack_start(frame, False, False, 0) frame = gtk.Frame("Underlined label") label = gtk.Label("This label is underlined!\n" "This one is underlined in quite a funky fashion") label.set_justify(gtk.JUSTIFY_LEFT) label.set_pattern( "_________________________ _ _________ _ ______ __ _______ ___") frame.add(label) vbox.pack_start(frame, False, False, 0) self.window.show_all () def main(): gtk.main() return 0 if __name__ == "__main__": Labels() main() �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/filelisting.py��������������������������������������������������������������0100644�0001172�0000167�00000011733�10227353425�017375� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python import os, stat, time import pygtk pygtk.require('2.0') import gtk folderxpm = [ "17 16 7 1", " c #000000", ". c #808000", "X c yellow", "o c #808080", "O c #c0c0c0", "+ c white", "@ c None", "@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@", "@@+XXXX.@@@@@@@@@", "@+OOOOOO.@@@@@@@@", "@+OXOXOXOXOXOXO. ", "@+XOXOXOXOXOXOX. ", "@+OXOXOXOXOXOXO. ", "@+XOXOXOXOXOXOX. ", "@+OXOXOXOXOXOXO. ", "@+XOXOXOXOXOXOX. ", "@+OXOXOXOXOXOXO. ", "@+XOXOXOXOXOXOX. ", "@+OOOOOOOOOOOOO. ", "@ ", "@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@" ] folderpb = gtk.gdk.pixbuf_new_from_xpm_data(folderxpm) filexpm = [ "12 12 3 1", " c #000000", ". c #ffff04", "X c #b2c0dc", "X XXX", "X ...... XXX", "X ...... X", "X . ... X", "X ........ X", "X . .... X", "X ........ X", "X . .. X", "X ........ X", "X . .. X", "X ........ X", "X X" ] filepb = gtk.gdk.pixbuf_new_from_xpm_data(filexpm) class FileListingCellDataExample: column_names = ['Name', 'Size', 'Mode', 'Last Changed'] def delete_event(self, widget, event, data=None): gtk.main_quit() return False def __init__(self, dname = None): cell_data_funcs = (None, self.file_size, self.file_mode, self.file_last_changed) # Create a new window self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.set_size_request(400, 300) self.window.connect("delete_event", self.delete_event) listmodel = self.make_list(dname) # create the TreeView self.treeview = gtk.TreeView() # create the TreeViewColumns to display the data self.tvcolumn = [None] * len(self.column_names) cellpb = gtk.CellRendererPixbuf() self.tvcolumn[0] = gtk.TreeViewColumn(self.column_names[0], cellpb) self.tvcolumn[0].set_cell_data_func(cellpb, self.file_pixbuf) cell = gtk.CellRendererText() self.tvcolumn[0].pack_start(cell, False) self.tvcolumn[0].set_cell_data_func(cell, self.file_name) self.treeview.append_column(self.tvcolumn[0]) for n in range(1, len(self.column_names)): cell = gtk.CellRendererText() self.tvcolumn[n] = gtk.TreeViewColumn(self.column_names[n], cell) if n == 1: cell.set_property('xalign', 1.0) self.tvcolumn[n].set_cell_data_func(cell, cell_data_funcs[n]) self.treeview.append_column(self.tvcolumn[n]) self.treeview.connect('row-activated', self.open_file) self.scrolledwindow = gtk.ScrolledWindow() self.scrolledwindow.add(self.treeview) self.window.add(self.scrolledwindow) self.treeview.set_model(listmodel) self.window.show_all() return def make_list(self, dname=None): if not dname: self.dirname = os.path.expanduser('~') else: self.dirname = os.path.abspath(dname) self.window.set_title(self.dirname) files = [f for f in os.listdir(self.dirname) if f[0] <> '.'] files.sort() files = ['..'] + files listmodel = gtk.ListStore(object) for f in files: listmodel.append([f]) return listmodel def open_file(self, treeview, path, column): model = treeview.get_model() iter = model.get_iter(path) filename = os.path.join(self.dirname, model.get_value(iter, 0)) filestat = os.stat(filename) if stat.S_ISDIR(filestat.st_mode): new_model = self.make_list(filename) treeview.set_model(new_model) return def file_pixbuf(self, column, cell, model, iter): filename = os.path.join(self.dirname, model.get_value(iter, 0)) filestat = os.stat(filename) if stat.S_ISDIR(filestat.st_mode): pb = folderpb else: pb = filepb cell.set_property('pixbuf', pb) return def file_name(self, column, cell, model, iter): cell.set_property('text', model.get_value(iter, 0)) return def file_size(self, column, cell, model, iter): filename = os.path.join(self.dirname, model.get_value(iter, 0)) filestat = os.stat(filename) cell.set_property('text', filestat.st_size) return def file_mode(self, column, cell, model, iter): filename = os.path.join(self.dirname, model.get_value(iter, 0)) filestat = os.stat(filename) cell.set_property('text', oct(stat.S_IMODE(filestat.st_mode))) return def file_last_changed(self, column, cell, model, iter): filename = os.path.join(self.dirname, model.get_value(iter, 0)) filestat = os.stat(filename) cell.set_property('text', time.ctime(filestat.st_mtime)) return def main(): gtk.main() if __name__ == "__main__": flcdexample = FileListingCellDataExample() main() �������������������������������������pygtk2tutorial/examples/filesel.py������������������������������������������������������������������0100644�0001172�0000167�00000002115�10072700472�016475� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example filesel.py import pygtk pygtk.require('2.0') import gtk class FileSelectionExample: # Get the selected filename and print it to the console def file_ok_sel(self, w): print "%s" % self.filew.get_filename() def destroy(self, widget): gtk.main_quit() def __init__(self): # Create a new file selection widget self.filew = gtk.FileSelection("File selection") self.filew.connect("destroy", self.destroy) # Connect the ok_button to file_ok_sel method self.filew.ok_button.connect("clicked", self.file_ok_sel) # Connect the cancel_button to destroy the widget self.filew.cancel_button.connect("clicked", lambda w: self.filew.destroy()) # Lets set the filename, as if this were a save dialog, # and we are giving a default filename self.filew.set_filename("penguin.png") self.filew.show() def main(): gtk.main() return 0 if __name__ == "__main__": FileSelectionExample() main() ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/spinbutton.py���������������������������������������������������������������0100644�0001172�0000167�00000012036�10227353425�017266� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example spinbutton.py import pygtk pygtk.require('2.0') import gtk class SpinButtonExample: def toggle_snap(self, widget, spin): spin.set_snap_to_ticks(widget.get_active()) def toggle_numeric(self, widget, spin): spin.set_numeric(widget.get_active()) def change_digits(self, widget, spin, spin1): spin1.set_digits(spin.get_value_as_int()) def get_value(self, widget, data, spin, spin2, label): if data == 1: buf = "%d" % spin.get_value_as_int() else: buf = "%0.*f" % (spin2.get_value_as_int(), spin.get_value()) label.set_text(buf) def __init__(self): window = gtk.Window(gtk.WINDOW_TOPLEVEL) window.connect("destroy", lambda w: gtk.main_quit()) window.set_title("Spin Button") main_vbox = gtk.VBox(False, 5) main_vbox.set_border_width(10) window.add(main_vbox) frame = gtk.Frame("Not accelerated") main_vbox.pack_start(frame, True, True, 0) vbox = gtk.VBox(False, 0) vbox.set_border_width(5) frame.add(vbox) # Day, month, year spinners hbox = gtk.HBox(False, 0) vbox.pack_start(hbox, True, True, 5) vbox2 = gtk.VBox(False, 0) hbox.pack_start(vbox2, True, True, 5) label = gtk.Label("Day :") label.set_alignment(0, 0.5) vbox2.pack_start(label, False, True, 0) adj = gtk.Adjustment(1.0, 1.0, 31.0, 1.0, 5.0, 0.0) spinner = gtk.SpinButton(adj, 0, 0) spinner.set_wrap(True) vbox2.pack_start(spinner, False, True, 0) vbox2 = gtk.VBox(False, 0) hbox.pack_start(vbox2, True, True, 5) label = gtk.Label("Month :") label.set_alignment(0, 0.5) vbox2.pack_start(label, False, True, 0) adj = gtk.Adjustment(1.0, 1.0, 12.0, 1.0, 5.0, 0.0) spinner = gtk.SpinButton(adj, 0, 0) spinner.set_wrap(True) vbox2.pack_start(spinner, False, True, 0) vbox2 = gtk.VBox(False, 0) hbox.pack_start(vbox2, True, True, 5) label = gtk.Label("Year :") label.set_alignment(0, 0.5) vbox2.pack_start(label, False, True, 0) adj = gtk.Adjustment(1998.0, 0.0, 2100.0, 1.0, 100.0, 0.0) spinner = gtk.SpinButton(adj, 0, 0) spinner.set_wrap(False) spinner.set_size_request(55, -1) vbox2.pack_start(spinner, False, True, 0) frame = gtk.Frame("Accelerated") main_vbox.pack_start(frame, True, True, 0) vbox = gtk.VBox(False, 0) vbox.set_border_width(5) frame.add(vbox) hbox = gtk.HBox(False, 0) vbox.pack_start(hbox, False, True, 5) vbox2 = gtk.VBox(False, 0) hbox.pack_start(vbox2, True, True, 5) label = gtk.Label("Value :") label.set_alignment(0, 0.5) vbox2.pack_start(label, False, True, 0) adj = gtk.Adjustment(0.0, -10000.0, 10000.0, 0.5, 100.0, 0.0) spinner1 = gtk.SpinButton(adj, 1.0, 2) spinner1.set_wrap(True) spinner1.set_size_request(100, -1) vbox2.pack_start(spinner1, False, True, 0) vbox2 = gtk.VBox(False, 0) hbox.pack_start(vbox2, True, True, 5) label = gtk.Label("Digits :") label.set_alignment(0, 0.5) vbox2.pack_start(label, False, True, 0) adj = gtk.Adjustment(2, 1, 5, 1, 1, 0) spinner2 = gtk.SpinButton(adj, 0.0, 0) spinner2.set_wrap(True) adj.connect("value_changed", self.change_digits, spinner2, spinner1) vbox2.pack_start(spinner2, False, True, 0) hbox = gtk.HBox(False, 0) vbox.pack_start(hbox, False, True, 5) button = gtk.CheckButton("Snap to 0.5-ticks") button.connect("clicked", self.toggle_snap, spinner1) vbox.pack_start(button, True, True, 0) button.set_active(True) button = gtk.CheckButton("Numeric only input mode") button.connect("clicked", self.toggle_numeric, spinner1) vbox.pack_start(button, True, True, 0) button.set_active(True) val_label = gtk.Label("") hbox = gtk.HBox(False, 0) vbox.pack_start(hbox, False, True, 5) button = gtk.Button("Value as Int") button.connect("clicked", self.get_value, 1, spinner1, spinner2, val_label) hbox.pack_start(button, True, True, 5) button = gtk.Button("Value as Float") button.connect("clicked", self.get_value, 2, spinner1, spinner2, val_label) hbox.pack_start(button, True, True, 5) vbox.pack_start(val_label, True, True, 0) val_label.set_text("0") hbox = gtk.HBox(False, 0) main_vbox.pack_start(hbox, False, True, 0) button = gtk.Button("Close") button.connect("clicked", lambda w: gtk.main_quit()) hbox.pack_start(button, True, True, 5) window.show_all() def main(): gtk.main() return 0 if __name__ == "__main__": SpinButtonExample() main() ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/paned.py��������������������������������������������������������������������0100644�0001172�0000167�00000005431�10072700473�016146� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example paned.py import pygtk pygtk.require('2.0') import gtk, gobject class PanedExample: # Create the list of "messages" def create_list(self): # Create a new scrolled window, with scrollbars only if needed scrolled_window = gtk.ScrolledWindow() scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) model = gtk.ListStore(gobject.TYPE_STRING) tree_view = gtk.TreeView(model) scrolled_window.add_with_viewport (tree_view) tree_view.show() # Add some messages to the window for i in range(10): msg = "Message #%d" % i iter = model.append() model.set(iter, 0, msg) cell = gtk.CellRendererText() column = gtk.TreeViewColumn("Messages", cell, text=0) tree_view.append_column(column) return scrolled_window # Add some text to our text widget - this is a callback that is invoked # when our window is realized. We could also force our window to be # realized with GtkWidget.realize, but it would have to be part of a # hierarchy first def insert_text(self, buffer): iter = buffer.get_iter_at_offset(0) buffer.insert(iter, "From: pathfinder@nasa.gov\n" "To: mom@nasa.gov\n" "Subject: Made it!\n" "\n" "We just got in this morning. The weather has been\n" "great - clear but cold, and there are lots of fun sights.\n" "Sojourner says hi. See you soon.\n" " -Path\n") # Create a scrolled text area that displays a "message" def create_text(self): view = gtk.TextView() buffer = view.get_buffer() scrolled_window = gtk.ScrolledWindow() scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) scrolled_window.add(view) self.insert_text(buffer) scrolled_window.show_all() return scrolled_window def __init__(self): window = gtk.Window(gtk.WINDOW_TOPLEVEL) window.set_title("Paned Windows") window.connect("destroy", lambda w: gtk.main_quit()) window.set_border_width(10) window.set_size_request(450, 400) # create a vpaned widget and add it to our toplevel window vpaned = gtk.VPaned() window.add(vpaned) vpaned.show() # Now create the contents of the two halves of the window list = self.create_list() vpaned.add1(list) list.show() text = self.create_text() vpaned.add2(text) text.show() window.show() def main(): gtk.main() return 0 if __name__ == "__main__": PanedExample() main() ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/scrolledwin.py��������������������������������������������������������������0100644�0001172�0000167�00000004721�10227353425�017410� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example scrolledwin.py import pygtk pygtk.require('2.0') import gtk class ScrolledWindowExample: def destroy(self, widget): gtk.main_quit() def __init__(self): # Create a new dialog window for the scrolled window to be # packed into. window = gtk.Dialog() window.connect("destroy", self.destroy) window.set_title("ScrolledWindow example") window.set_border_width(0) window.set_size_request(300, 300) # create a new scrolled window. scrolled_window = gtk.ScrolledWindow() scrolled_window.set_border_width(10) # the policy is one of POLICY AUTOMATIC, or POLICY_ALWAYS. # POLICY_AUTOMATIC will automatically decide whether you need # scrollbars, whereas POLICY_ALWAYS will always leave the scrollbars # there. The first one is the horizontal scrollbar, the second, the # vertical. scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_ALWAYS) # The dialog window is created with a vbox packed into it. window.vbox.pack_start(scrolled_window, True, True, 0) scrolled_window.show() # create a table of 10 by 10 squares. table = gtk.Table(10, 10, False) # set the spacing to 10 on x and 10 on y table.set_row_spacings(10) table.set_col_spacings(10) # pack the table into the scrolled window scrolled_window.add_with_viewport(table) table.show() # this simply creates a grid of toggle buttons on the table # to demonstrate the scrolled window. for i in range(10): for j in range(10): buffer = "button (%d,%d)" % (i, j) button = gtk.ToggleButton(buffer) table.attach(button, i, i+1, j, j+1) button.show() # Add a "close" button to the bottom of the dialog button = gtk.Button("close") button.connect_object("clicked", self.destroy, window) # this makes it so the button is the default. button.set_flags(gtk.CAN_DEFAULT) window.action_area.pack_start( button, True, True, 0) # This grabs this button to be the default button. Simply hitting # the "Enter" key will cause this button to activate. button.grab_default() button.show() window.show() def main(): gtk.main() return 0 if __name__ == "__main__": ScrolledWindowExample() main() �����������������������������������������������pygtk2tutorial/examples/gpython.py������������������������������������������������������������������0100755�0001172�0000167�00000012505�10227353425�016555� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python import __builtin__ import __main__ import codeop import keyword import os import re import readline import threading import traceback import signal import sys if sys.version[0] == '2': import pygtk pygtk.require("2.0") import gtk, gobject def walk_class (klass): list = [] for item in dir (klass.__class__): if item[0] != "_": list.append (item) for base in klass.__class__.__bases__: list = list + walk_class (base()) return list class Completer: def __init__ (self, lokals): self.locals = lokals self.completions = keyword.kwlist + \ __builtin__.__dict__.keys() + \ __main__.__dict__.keys() def complete (self, text, state): if state == 0: if "." in text: self.matches = self.attr_matches (text) else: self.matches = self.global_matches (text) try: return self.matches[state] except IndexError: return None def update (self, locs): self.locals = locs for key in self.locals.keys (): if not key in self.completions: self.completions.append (key) def global_matches (self, text): matches = [] n = len (text) for word in self.completions: if word[:n] == text: matches.append (word) return matches def attr_matches (self, text): m = re.match(r"(\w+(\.\w+)*)\.(\w*)", text) if not m: return expr, attr = m.group(1, 3) obj = eval (expr, self.locals) if str (obj)[1:4] == "gtk": words = walk_class (obj) else: words = dir(eval(expr, self.locals)) matches = [] n = len(attr) for word in words: if word[:n] == attr: matches.append ("%s.%s" % (expr, word)) return matches class GtkInterpreter (threading.Thread): """Run a gtk main() in a separate thread. Python commands can be passed to the thread where they will be executed. This is implemented by periodically checking for passed code using a GTK timeout callback. """ TIMEOUT = 100 # Millisecond interval between timeouts. def __init__ (self): threading.Thread.__init__ (self) self.ready = threading.Condition () self.globs = globals () self.locs = locals () self._kill = 0 self.cmd = '' # Current code block self.new_cmd = None # Waiting line of code, or None if none waiting self.completer = Completer (self.locs) readline.set_completer (self.completer.complete) readline.parse_and_bind ('tab: complete') def run (self): gobject.timeout_add (self.TIMEOUT, self.code_exec) try: if gtk.gtk_version[0] == 2: gtk.gdk.threads_init() except: pass gtk.main() def code_exec (self): """Execute waiting code. Called every timeout period.""" self.ready.acquire () if self._kill: gtk.main_quit () if self.new_cmd != None: self.ready.notify () self.cmd = self.cmd + self.new_cmd self.new_cmd = None try: code = codeop.compile_command (self.cmd[:-1]) if code: self.cmd = '' exec (code, self.globs, self.locs) self.completer.update (self.locs) except Exception: traceback.print_exc () self.cmd = '' self.ready.release() return 1 def feed (self, code): """Feed a line of code to the thread. This function will block until the code checked by the GTK thread. Return true if executed the code. Returns false if deferring execution until complete block available. """ if (not code) or (code[-1]<>'\n'): code = code +'\n' # raw_input strips newline self.completer.update (self.locs) self.ready.acquire() self.new_cmd = code self.ready.wait () # Wait until processed in timeout interval self.ready.release () return not self.cmd def kill (self): """Kill the thread, returning when it has been shut down.""" self.ready.acquire() self._kill=1 self.ready.release() self.join() # Read user input in a loop, and send each line to the interpreter thread. def signal_handler (*args): print "SIGNAL:", args sys.exit() if __name__=="__main__": signal.signal (signal.SIGINT, signal_handler) signal.signal (signal.SIGSEGV, signal_handler) prompt = '>>> ' interpreter = GtkInterpreter () interpreter.start () interpreter.feed ("from gtk import *") interpreter.feed ("sys.path.append('.')") if len (sys.argv) > 1: for file in open (sys.argv[1]).readlines (): interpreter.feed (file) print 'Interactive GTK Shell' try: while 1: command = raw_input (prompt) + '\n' # raw_input strips newlines prompt = interpreter.feed (command) and '>>> ' or '... ' except (EOFError, KeyboardInterrupt): pass interpreter.kill() print �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/rulers.py�������������������������������������������������������������������0100644�0001172�0000167�00000004270�10227353425�016376� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example rulers.py import pygtk pygtk.require('2.0') import gtk class RulersExample: XSIZE = 400 YSIZE = 400 # This routine gets control when the close button is clicked def close_application(self, widget, event, data=None): gtk.main_quit() return False def __init__(self): window = gtk.Window(gtk.WINDOW_TOPLEVEL) window.connect("delete_event", self.close_application) window.set_border_width(10) # Create a table for placing the ruler and the drawing area table = gtk.Table(3, 2, False) window.add(table) area = gtk.DrawingArea() area.set_size_request(self.XSIZE, self.YSIZE) table.attach(area, 1, 2, 1, 2, gtk.EXPAND|gtk.FILL, gtk.FILL, 0, 0 ) area.set_events(gtk.gdk.POINTER_MOTION_MASK | gtk.gdk.POINTER_MOTION_HINT_MASK ) # The horizontal ruler goes on top. As the mouse moves across the # drawing area, a motion_notify_event is passed to the # appropriate event handler for the ruler. hrule = gtk.HRuler() hrule.set_metric(gtk.PIXELS) hrule.set_range(7, 13, 0, 20) def motion_notify(ruler, event): return ruler.emit("motion_notify_event", event) area.connect_object("motion_notify_event", motion_notify, hrule) table.attach(hrule, 1, 2, 0, 1, gtk.EXPAND|gtk.SHRINK|gtk.FILL, gtk.FILL, 0, 0 ) # The vertical ruler goes on the left. As the mouse moves across # the drawing area, a motion_notify_event is passed to the # appropriate event handler for the ruler. vrule = gtk.VRuler() vrule.set_metric(gtk.PIXELS) vrule.set_range(0, self.YSIZE, 10, self.YSIZE) area.connect_object("motion_notify_event", motion_notify, vrule) table.attach(vrule, 0, 1, 1, 2, gtk.FILL, gtk.EXPAND|gtk.SHRINK|gtk.FILL, 0, 0 ) # Now show everything area.show() hrule.show() vrule.show() table.show() window.show() def main(): gtk.main() return 0 if __name__ == "__main__": RulersExample() main() ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/base.py���������������������������������������������������������������������0100755�0001172�0000167�00000000502�10072700472�015765� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example base.py import pygtk pygtk.require('2.0') import gtk class Base: def __init__(self): self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.show() def main(self): gtk.main() print __name__ if __name__ == "__main__": base = Base() base.main() ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/filelisting-gtm.py����������������������������������������������������������0100644�0001172�0000167�00000013403�10227353425�020156� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python import os, stat, time import pygtk pygtk.require('2.0') import gtk folderxpm = [ "17 16 7 1", " c #000000", ". c #808000", "X c yellow", "o c #808080", "O c #c0c0c0", "+ c white", "@ c None", "@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@", "@@+XXXX.@@@@@@@@@", "@+OOOOOO.@@@@@@@@", "@+OXOXOXOXOXOXO. ", "@+XOXOXOXOXOXOX. ", "@+OXOXOXOXOXOXO. ", "@+XOXOXOXOXOXOX. ", "@+OXOXOXOXOXOXO. ", "@+XOXOXOXOXOXOX. ", "@+OXOXOXOXOXOXO. ", "@+XOXOXOXOXOXOX. ", "@+OOOOOOOOOOOOO. ", "@ ", "@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@" ] folderpb = gtk.gdk.pixbuf_new_from_xpm_data(folderxpm) filexpm = [ "12 12 3 1", " c #000000", ". c #ffff04", "X c #b2c0dc", "X XXX", "X ...... XXX", "X ...... X", "X . ... X", "X ........ X", "X . .... X", "X ........ X", "X . .. X", "X ........ X", "X . .. X", "X ........ X", "X X" ] filepb = gtk.gdk.pixbuf_new_from_xpm_data(filexpm) class FileListModel(gtk.GenericTreeModel): column_types = (gtk.gdk.Pixbuf, str, long, str, str) column_names = ['Name', 'Size', 'Mode', 'Last Changed'] def __init__(self, dname=None): gtk.GenericTreeModel.__init__(self) if not dname: self.dirname = os.path.expanduser('~') else: self.dirname = os.path.abspath(dname) self.files = [f for f in os.listdir(self.dirname) if f[0] <> '.'] self.files.sort() self.files = ['..'] + self.files return def get_pathname(self, path): filename = self.files[path[0]] return os.path.join(self.dirname, filename) def is_folder(self, path): filename = self.files[path[0]] pathname = os.path.join(self.dirname, filename) filestat = os.stat(pathname) if stat.S_ISDIR(filestat.st_mode): return True return False def get_column_names(self): return self.column_names[:] def on_get_flags(self): return gtk.TREE_MODEL_LIST_ONLY|gtk.TREE_MODEL_ITERS_PERSIST def on_get_n_columns(self): return len(self.column_types) def on_get_column_type(self, n): return self.column_types[n] def on_get_iter(self, path): return self.files[path[0]] def on_get_path(self, rowref): return self.files.index(rowref) def on_get_value(self, rowref, column): fname = os.path.join(self.dirname, rowref) try: filestat = os.stat(fname) except OSError: return None mode = filestat.st_mode if column is 0: if stat.S_ISDIR(mode): return folderpb else: return filepb elif column is 1: return rowref elif column is 2: return filestat.st_size elif column is 3: return oct(stat.S_IMODE(mode)) return time.ctime(filestat.st_mtime) def on_iter_next(self, rowref): try: i = self.files.index(rowref)+1 return self.files[i] except IndexError: return None def on_iter_children(self, rowref): if rowref: return None return self.files[0] def on_iter_has_child(self, rowref): return False def on_iter_n_children(self, rowref): if rowref: return 0 return len(self.files) def on_iter_nth_child(self, rowref, n): if rowref: return None try: return self.files[n] except IndexError: return None def on_iter_parent(child): return None class GenericTreeModelExample: def delete_event(self, widget, event, data=None): gtk.main_quit() return False def __init__(self): # Create a new window self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.set_size_request(300, 200) self.window.connect("delete_event", self.delete_event) self.listmodel = FileListModel() # create the TreeView self.treeview = gtk.TreeView() # create the TreeViewColumns to display the data column_names = self.listmodel.get_column_names() self.tvcolumn = [None] * len(column_names) cellpb = gtk.CellRendererPixbuf() self.tvcolumn[0] = gtk.TreeViewColumn(column_names[0], cellpb, pixbuf=0) cell = gtk.CellRendererText() self.tvcolumn[0].pack_start(cell, False) self.tvcolumn[0].add_attribute(cell, 'text', 1) self.treeview.append_column(self.tvcolumn[0]) for n in range(1, len(column_names)): cell = gtk.CellRendererText() if n == 1: cell.set_property('xalign', 1.0) self.tvcolumn[n] = gtk.TreeViewColumn(column_names[n], cell, text=n+1) self.treeview.append_column(self.tvcolumn[n]) self.treeview.connect('row-activated', self.open_file) self.scrolledwindow = gtk.ScrolledWindow() self.scrolledwindow.add(self.treeview) self.window.add(self.scrolledwindow) self.treeview.set_model(self.listmodel) self.window.set_title(self.listmodel.dirname) self.window.show_all() def open_file(self, treeview, path, column): model = treeview.get_model() if model.is_folder(path): pathname = model.get_pathname(path) new_model = FileListModel(pathname) self.window.set_title(new_model.dirname) treeview.set_model(new_model) return def main(): gtk.main() if __name__ == "__main__": gtmexample = GenericTreeModelExample() main() �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/setselection.py�������������������������������������������������������������0100644�0001172�0000167�00000005012�10227353425�017556� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example setselection.py import pygtk pygtk.require('2.0') import gtk import time class SetSelectionExample: # Callback when the user toggles the selection def selection_toggled(self, widget, window): if widget.get_active(): self.have_selection = window.selection_owner_set("PRIMARY") # if claiming the selection failed, we return the button to # the out state if not self.have_selection: widget.set_active(False) else: if self.have_selection: # Not possible to release the selection in PyGTK # just mark that we don't have it self.have_selection = False return # Called when another application claims the selection def selection_clear(self, widget, event): self.have_selection = False widget.set_active(False) return True # Supplies the current time as the selection. def selection_handle(self, widget, selection_data, info, time_stamp): current_time = time.time() timestr = time.asctime(time.localtime(current_time)) # When we return a single string, it should not be null terminated. # That will be done for us selection_data.set_text(timestr, len(timestr)) return def __init__(self): self.have_selection = False # Create the toplevel window window = gtk.Window(gtk.WINDOW_TOPLEVEL) window.set_title("Set Selection") window.set_border_width(10) window.connect("destroy", lambda w: gtk.main_quit()) self.window = window # Create an eventbox to hold the button since it no longer has # a GdkWindow eventbox = gtk.EventBox() eventbox.show() window.add(eventbox) # Create a toggle button to act as the selection selection_button = gtk.ToggleButton("Claim Selection") eventbox.add(selection_button) selection_button.connect("toggled", self.selection_toggled, eventbox) eventbox.connect_object("selection_clear_event", self.selection_clear, selection_button) eventbox.selection_add_target("PRIMARY", "STRING", 1) eventbox.selection_add_target("PRIMARY", "COMPOUND_TEXT", 1) eventbox.connect("selection_get", self.selection_handle) selection_button.show() window.show() def main(): gtk.main() return 0 if __name__ == "__main__": SetSelectionExample() main() ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/treemodelfilter.py����������������������������������������������������������0100644�0001172�0000167�00000020044�10227353425�020245� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example treemodelfilter.py import pygtk pygtk.require('2.0') import gtk bugdata="""120595 NEW Custom GtkTreeModelFilter wrappers need 121339 RESO dsextras.py installation directory is incorrect 121611 RESO argument is guint, should be guint32 121943 RESO gtk.mainiteration and gtk.mainloop defeat the caller's ex... 122260 RESO Could not compile 122569 NEW gtk.Window derived class segfaults 122591 RESO cannot return None from CellRenderer.on_start_editing 122755 RESO _wrap_gdk_window_new needs to ref return value 122786 RESO don't import Numeric until it is first used 123014 NEW PyGtk build problem on Win32 using the 'distutils' approach. 123037 NEW gtk.ListStore.set_column_types is missing 123456 RESO ItemFactory.create_items and <ImageItem> bug 123458 NEED pygtk does not wrap all of gdk-pixbuf 123891 NEW gobject.PARAM_CONSTRUCT problem 124181 NEED Python Shell inside a gtk GUI 124338 RESO Memleak when using pixbuf 124593 RESO TreeModel.iter_children should accept None as parent 125172 RESO gtk.TreeModelSort returns an unusable object 125272 RESO error in gtk_widget_translate_coordinates wrapping 125445 NEW pygtk gives no acces to PangoLayoutIter's 125533 RESO set_skip_taskbar_hint and set_skip_pager_hint not wrapped 126109 RESO gtk.Entry focus_out event core 126323 RESO gtk_disable_setlocale cannot be used 126406 RESO gtk.TreeView.expand_row() should return gboolean not None 126479 RESO None iter's in custom TreeModel cause SystemException's 127083 RESO Binding generation of methods which use gpointer does not... 127178 RESO gtk.Widget color modify methods do not allow None for col... 127504 NEW wrap GtkTreeViewColumnDropFunc 128623 RESO Allow NULL as set_tip argument 128988 RESO missing space in prototype confuses h2def.py 129032 NEW GObject Interfaces (GInterface) support 129414 RESO h2def.py doesn't see gda_log_enable() 129490 RESO Provide hardware_keycode to python 129754 RESO memory leak with gtk.gdk.pixmap_foreign_new() 129843 NEW Make all constructors work through g_object_new() 129966 RESO convert GValue containing GValueArray to PyObject 131837 RESO Cannot set or get \"markup\" property from CellRendererText 132040 NEW abusing setdefaultencoding() 132058 RESO gtkgl bus error on constructor to gtk.gl.Area 132507 RESO gtk_accel_group_connect seems to be missing 132837 NEW set_from_pixmap creates a different gtk.Image than set_fr... 133681 RESO memory leak in gdk.drawable.get_image 134462 RESO pygtk2 segfaults 134491 RESO OverflowError occurs when menu pops up. 134494 RESO The Definition of argument for gtk.gdk.Pixbuf.fill should... 135279 RESO codegen is using private functions 135439 RESO Integrate SDL into pygtk widgets 135963 RESO gc of gtk.ListStore aborts intrepeter after gtk.threads_i... 136204 RESO GtkTextSearchFlags warning 136205 RESO GdkPixbuf.fill passed arg changed type originating crash 136297 RESO Explanatory additions to gtk.DrawingArea 136597 RESO gtkgl still referenced in build files 136688 RESO installation directory of pygtk 2.2 136705 RESO mainquit vs. main_quit usage 136707 RESO gtk.gdk.Window.raise uses reserved keyword. 136731 RESO setup.py should not install the libglade DLL 136811 RESO h2def ignores some functions 136984 RESO Seemingly Invalid Flag for gtk.MessageDialog 136989 NEW should pixbufloader throw two GErrors? 137086 NEW gtk.gdk.window_lookup assertion 137091 RESO \"constants\" for selection atoms 137935 RESO description of gtk.gdk.atom_intern() should be in gtk.gdk... 137969 NEW GenericTreeModel/TreeSelection returning GtkTreeIter inst... 138104 RESO gtk_widget_style_get_property is not wrapped 138163 VERI NOTA gtk.main_iteration(TRUE) unblocks every .1 seconds 138476 RESO gtk.Layout is needed by gnome.canvas but is missing from ... 138487 RESO PyGTK Tutorial: in Calendar sample date string is 1 day b... 138576 RESO gtk.IconSet now has 2 constructors in gtk.defs, while on... 138619 UNCO codegen/definitions.py could use some refactoring 138772 RESO Callback parameters to input_add are incorrect 138804 UNCO In gtk2.4, gdk_font_get_display and gdk_pixmap_lookup is ... 138944 UNCO Cannot import gtk when pygtk installed using 'make install' 139128 UNCO All constructors should be defined as constructors 139130 NEW GtkEntry's constructor needs to be rewritten 139312 NEED gtk.gdk.Window.get_screen method undocumented. 139921 RESO Support tp_new 140071 NEW Register custom widget classes. 140665 RESO TypeError when creating user defined signals having third... 140718 UNCO Enhance codegen with user defined type wrapper. 140946 UNCO filechooser example broken 141042 RESO Garbage collection causes lossage in Pango 141886 UNCO Add a PyGEnum_Type 142030 RESO Possible ref count error in gtk.GC 142738 RESO Fatal error with multi-depth menus 142997 UNCO require() breaks sys.path if libs found in /usr/local/r/local""" class TreeModelFilterExample: # close the window and quit def delete_event(self, widget, event, data=None): gtk.main_quit() return False def __init__(self): # Create a new window self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.set_title("TreeModelFilter Example") self.window.set_size_request(400, 400) self.window.connect("delete_event", self.delete_event) # create a liststore with one string column to use as the model self.liststore = gtk.ListStore(int, str, str) self.modelfilter = self.liststore.filter_new() # create the TreeView self.treeview = gtk.TreeView() # create the TreeViewColumns to display the data self.treeview.columns = [None]*3 self.treeview.columns[0] = gtk.TreeViewColumn('Bug No.') self.treeview.columns[1] = gtk.TreeViewColumn('Status') self.treeview.columns[2] = gtk.TreeViewColumn('Description') # add bug data self.states = [] for line in bugdata.split('\n'): l = line.split() self.liststore.append([int(l[0]), l[1], ' '.join(l[2:])]) if not l[1] in self.states: self.states.append(l[1]) self.show_states = self.states[:] self.modelfilter.set_visible_func(self.visible_cb, self.show_states) self.treeview.set_model(self.modelfilter) for n in range(3): # add columns to treeview self.treeview.append_column(self.treeview.columns[n]) # create a CellRenderers to render the data self.treeview.columns[n].cell = gtk.CellRendererText() # add the cells to the columns self.treeview.columns[n].pack_start(self.treeview.columns[n].cell, True) # set the cell attributes to the appropriate liststore column self.treeview.columns[n].set_attributes( self.treeview.columns[n].cell, text=n) # make treeview searchable self.treeview.set_search_column(3) # make ui layout self.vbox = gtk.VBox() self.scrolledwindow = gtk.ScrolledWindow() self.bbox = gtk.HButtonBox() self.vbox.pack_start(self.scrolledwindow) self.vbox.pack_start(self.bbox, False) # create toggle buttons to select filtering based on # bug state and set buttons active for state in self.states: b = gtk.ToggleButton(state) self.bbox.pack_start(b) b.set_active(True) b.connect('toggled', self.check_buttons) self.scrolledwindow.add(self.treeview) self.window.add(self.vbox) self.window.show_all() return # visibility determined by state matching active toggle buttons def visible_cb(self, model, iter, data): return model.get_value(iter, 1) in data # build list of bug states to show and then refilter def check_buttons(self, tb): del self.show_states[:] for b in self.bbox.get_children(): if b.get_active(): self.show_states.append(b.get_label()) self.modelfilter.refilter() return def main(): gtk.main() if __name__ == "__main__": tmfexample = TreeModelFilterExample() main() ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/clipboard.py����������������������������������������������������������������0100644�0001172�0000167�00000010246�10101634232�017006� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python import pygtk pygtk.require('2.0') import gtk, gobject class ClipboardInfo: pass class ClipboardExample: # update button label and tooltips def update_buttons(self): for i in range(len(self.clipboard_history)): info = self.clipboard_history[i] if info: button = self.buttons[i] if info.text: button.set_label(' '.join(info.text[:16].split('\n'))) if info.targets: # put target info in button tootip self.button_tips.set_tip(button, info.targets) return # singal handler called when clipboard returns target data def clipboard_targets_received(self, clipboard, targets, info): if targets: # have to remove dups since Netscape is broken targ = {} for t in targets: targ[str(t)] = 0 targ = targ.keys() targ.sort() info.targets = '\n'.join(targ) else: info.targets = None print 'No targets for:', info.text self.update_buttons() return # signal handler called when the clipboard returns text data def clipboard_text_received(self, clipboard, text, data): if not text or text == '': return # remove duplicate history = [info for info in self.clipboard_history if not info or info.text<>text] cbi = ClipboardInfo() cbi.text = text history.insert(-1, cbi) self.clipboard_history = history + (len(self.clipboard_history) \ - len(history)) * [None] self.clipboard.request_targets(self.clipboard_targets_received, cbi) return # display the clipboard history text associated with the button def clicked_cb(self, button): i = self.buttons.index(button) if self.clipboard_history[i]: self.textbuffer.set_text(self.clipboard_history[i].text) else: self.textbuffer.set_text('') return # get the clipboard text def fetch_clipboard_info(self): self.clipboard.request_text(self.clipboard_text_received) return True def set_clipboard(self, button): text = self.textbuffer.get_text(*self.textbuffer.get_bounds()) self.clipboard.set_text(text) return def __init__(self): num_buttons = 10 self.buttons = num_buttons * [None] self.clipboard_history = num_buttons * [None] self.window = gtk.Window() self.window.set_title("Clipboard Example") self.window.connect("destroy", lambda w: gtk.main_quit()) self.window.set_border_width(0) vbbox = gtk.VButtonBox() vbbox.show() vbbox.set_layout(gtk.BUTTONBOX_START) hbox = gtk.HBox() hbox.pack_start(vbbox, False) hbox.show() self.button_tips = gtk.Tooltips() for i in range(num_buttons): self.buttons[i] = gtk.Button("---") self.buttons[i].set_use_underline(False) vbbox.pack_start(self.buttons[i]) self.buttons[i].show() self.buttons[i].connect("clicked", self.clicked_cb) vbox = gtk.VBox() vbox.show() scrolledwin = gtk.ScrolledWindow() scrolledwin.show() self.textview = gtk.TextView() self.textview.show() self.textview.set_size_request(200,100) self.textview.set_wrap_mode(gtk.WRAP_CHAR) self.textbuffer = self.textview.get_buffer() scrolledwin.add(self.textview) vbox.pack_start(scrolledwin) button = gtk.Button('Copy to Clipboard') button.show() button.connect('clicked', self.set_clipboard) vbox.pack_start(button, False) hbox.pack_start(vbox) self.window.add(hbox) self.window.show() self.clipboard = gtk.clipboard_get(gtk.gdk.SELECTION_CLIPBOARD) self.clipboard.request_text(self.clipboard_text_received) gobject.timeout_add(1500, self.fetch_clipboard_info) return def main(): gtk.main() return 0 if __name__ == '__main__': cbe = ClipboardExample() main() ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/uimanager.py����������������������������������������������������������������0100644�0001172�0000167�00000010727�10163122062�017024� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python import pygtk pygtk.require('2.0') import gtk class UIManagerExample: ui = '''<ui> <menubar name="MenuBar"> <menu action="File"> <menuitem action="Quit"/> </menu> <menu action="Sound"> <menuitem action="Mute"/> </menu> <menu action="RadioBand"> <menuitem action="AM"/> <menuitem action="FM"/> <menuitem action="SSB"/> </menu> </menubar> <toolbar name="Toolbar"> <toolitem action="Quit"/> <separator/> <toolitem action="Mute"/> <separator/> <placeholder name="RadioBandItems"> <toolitem action="AM"/> <toolitem action="FM"/> <toolitem action="SSB"/> </placeholder> </toolbar> </ui>''' def __init__(self): # Create the toplevel window window = gtk.Window() window.connect('destroy', lambda w: gtk.main_quit()) window.set_size_request(300, -1) vbox = gtk.VBox() window.add(vbox) # Create a UIManager instance uimanager = gtk.UIManager() # Add the accelerator group to the toplevel window accelgroup = uimanager.get_accel_group() window.add_accel_group(accelgroup) # Create an ActionGroup actiongroup = gtk.ActionGroup('UIManagerExample') self.actiongroup = actiongroup # Create a ToggleAction, etc. actiongroup.add_toggle_actions([('Mute', None, '_Mute', '<Control>m', 'Mute the volume', self.mute_cb)]) # Create actions actiongroup.add_actions([('Quit', gtk.STOCK_QUIT, '_Quit me!', None, 'Quit the Program', self.quit_cb), ('File', None, '_File'), ('Sound', None, '_Sound'), ('RadioBand', None, '_Radio Band')]) actiongroup.get_action('Quit').set_property('short-label', '_Quit') # Create some RadioActions actiongroup.add_radio_actions([('AM', None, '_AM', '<Control>a', 'AM Radio', 0), ('FM', None, '_FM', '<Control>f', 'FM Radio', 1), ('SSB', None, '_SSB', '<Control>s', 'SSB Radio', 2), ], 0, self.radioband_cb) # Add the actiongroup to the uimanager uimanager.insert_action_group(actiongroup, 0) # Add a UI description uimanager.add_ui_from_string(self.ui) # Create a MenuBar menubar = uimanager.get_widget('/MenuBar') vbox.pack_start(menubar, False) # Create a Toolbar toolbar = uimanager.get_widget('/Toolbar') vbox.pack_start(toolbar, False) # Create and pack two Labels label = gtk.Label('Sound is not muted') vbox.pack_start(label) self.mutelabel = label label = gtk.Label('Radio band is AM') vbox.pack_start(label) self.bandlabel = label # Create buttons to control visibility and sensitivity of actions buttonbox = gtk.HButtonBox() sensitivebutton = gtk.CheckButton('Sensitive') sensitivebutton.set_active(True) sensitivebutton.connect('toggled', self.toggle_sensitivity) visiblebutton = gtk.CheckButton('Visible') visiblebutton.set_active(True) visiblebutton.connect('toggled', self.toggle_visibility) # add them to buttonbox buttonbox.pack_start(sensitivebutton, False) buttonbox.pack_start(visiblebutton, False) vbox.pack_start(buttonbox) window.show_all() return def mute_cb(self, action): # action has not toggled yet text = ('muted', 'not muted')[action.get_active()==False] self.mutelabel.set_text('Sound is %s' % text) return def radioband_cb(self, action, current): text = ('AM', 'FM', 'SSB')[action.get_current_value()] self.bandlabel.set_text('Radio band is %s' % text) return def quit_cb(self, b): print 'Quitting program' gtk.main_quit() def toggle_sensitivity(self, b): self.actiongroup.set_sensitive(b.get_active()) return def toggle_visibility(self, b): self.actiongroup.set_visible(b.get_active()) return if __name__ == '__main__': ba = UIManagerExample() gtk.main() �����������������������������������������pygtk2tutorial/examples/uimerge.py������������������������������������������������������������������0100644�0001172�0000167�00000017304�10163122062�016507� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python import pygtk pygtk.require('2.0') import gtk class UIMergeExample: ui0 = '''<ui> <menubar name="MenuBar"> <menu action="File"> <menuitem action="Quit"/> </menu> <menu action="Sound"> <menuitem action="Mute"/> </menu> <menu action="RadioBand"> <menuitem action="AM"/> <menuitem action="FM"/> <menuitem action="SSB"/> </menu> </menubar> <toolbar name="Toolbar"> <toolitem action="Quit"/> <separator/> <toolitem action="Mute"/> <separator name="sep1"/> <placeholder name="RadioBandItems"> <toolitem action="AM"/> <toolitem action="FM"/> <toolitem action="SSB"/> </placeholder> </toolbar> </ui>''' ui1 = '''<ui> <menubar name="MenuBar"> <menu action="File"> <menuitem action="Save" position="top"/> <menuitem action="New" position="top"/> </menu> <menu action="Sound"> <menuitem action="Loudness"/> </menu> <menu action="RadioBand"> <menuitem action="CB"/> <menuitem action="Shortwave"/> </menu> </menubar> <toolbar name="Toolbar"> <toolitem action="Save" position="top"/> <toolitem action="New" position="top"/> <separator/> <toolitem action="Loudness"/> <separator/> <placeholder name="RadioBandItems"> <toolitem action="CB"/> <toolitem action="Shortwave"/> </placeholder> </toolbar> </ui>''' def __init__(self): # Create the toplevel window window = gtk.Window() window.connect('destroy', lambda w: gtk.main_quit()) window.set_size_request(800, -1) vbox = gtk.VBox() window.add(vbox) self.merge_id = 0 # Create a UIManager instance uimanager = gtk.UIManager() self.uimanager = uimanager # Add the accelerator group to the toplevel window accelgroup = uimanager.get_accel_group() window.add_accel_group(accelgroup) # Create the base ActionGroup actiongroup0 = gtk.ActionGroup('UIMergeExampleBase') actiongroup0.add_actions([('File', None, '_File'), ('Sound', None, '_Sound'), ('RadioBand', None, '_Radio Band')]) uimanager.insert_action_group(actiongroup0, 0) # Create an ActionGroup actiongroup = gtk.ActionGroup('UIMergeExampleBase') self.actiongroup = actiongroup # Create a ToggleAction, etc. actiongroup.add_toggle_actions([('Mute', None, '_Mute', '<Control>m', 'Mute the volume', self.mute_cb)]) # Create actions actiongroup.add_actions([('Quit', gtk.STOCK_QUIT, '_Quit me!', None, 'Quit the Program', self.quit_cb)]) actiongroup.get_action('Quit').set_property('short-label', '_Quit') # Create some RadioActions actiongroup.add_radio_actions([('AM', None, '_AM', '<Control>a', 'AM Radio', 0), ('FM', None, '_FM', '<Control>f', 'FM Radio', 1), ('SSB', None, '_SSB', '<Control>b', 'SSB Radio', 2), ], 0, self.radioband_cb) # Add the actiongroup to the uimanager uimanager.insert_action_group(actiongroup, 1) # Add a UI description merge_id = uimanager.add_ui_from_string(self.ui0) # Create another actiongroup and add actions actiongroup1 = gtk.ActionGroup('UIMergeExampleExtras') actiongroup1.add_toggle_actions([('Loudness', None, '_Loudness', '<Control>l', 'Loudness Control', self.loudness_cb)]) actiongroup1.add_actions([('New', gtk.STOCK_NEW, None, None, 'New Settings', self.new_cb), ('Save', gtk.STOCK_SAVE, None, None, 'Save Settings', self.save_cb)]) # Adding radioactions to existing radioactions requires setting the # group and making sure the values are unique and the actions are # not active actiongroup1.add_radio_actions([('CB', None, '_CB', '<Control>c', 'CB Radio', 3), ('Shortwave', None, 'Short_wave', '<Control>w', 'Shortwave Radio', 4), ], 3, self.radioband_cb) group = actiongroup.get_action('AM').get_group()[0] action = actiongroup1.get_action('CB') action.set_group(group) action.set_active(False) action = actiongroup1.get_action('Shortwave') action.set_group(group) action.set_active(False) # Add the extra actiongroup to the uimanager uimanager.insert_action_group(actiongroup1, 2) # Create a MenuBar menubar = uimanager.get_widget('/MenuBar') vbox.pack_start(menubar, False) # Create a Toolbar toolbar = uimanager.get_widget('/Toolbar') vbox.pack_start(toolbar, False) # Create and pack two Labels label = gtk.Label('Sound is not muted') vbox.pack_start(label) self.mutelabel = label label = gtk.Label('Radio band is AM') vbox.pack_start(label) self.bandlabel = label # Create buttons to control visibility and sensitivity of actions buttonbox = gtk.HButtonBox() sensitivebutton = gtk.CheckButton('Sensitive') sensitivebutton.set_active(True) sensitivebutton.connect('toggled', self.toggle_sensitivity) visiblebutton = gtk.CheckButton('Visible') visiblebutton.set_active(True) visiblebutton.connect('toggled', self.toggle_visibility) mergebutton = gtk.CheckButton('Merged') mergebutton.set_active(False) mergebutton.connect('toggled', self.toggle_merged) # add them to buttonbox buttonbox.pack_start(sensitivebutton, False) buttonbox.pack_start(visiblebutton, False) buttonbox.pack_start(mergebutton, False) vbox.pack_start(buttonbox) print uimanager.get_ui() window.show_all() return def mute_cb(self, action): # action has not toggled yet text = ('muted', 'not muted')[action.get_active()==False] self.mutelabel.set_text('Sound is %s' % text) return def loudness_cb(self, action): # action has not toggled yet print 'Loudness toggled' return def radioband_cb(self, action, current): text = current.get_name() self.bandlabel.set_text('Radio band is %s' % text) return def new_cb(self, b): print 'New settings' return def save_cb(self, b): print 'Save settings' return def quit_cb(self, b): print 'Quitting program' gtk.main_quit() def toggle_sensitivity(self, b): self.actiongroup.set_sensitive(b.get_active()) return def toggle_visibility(self, b): self.actiongroup.set_visible(b.get_active()) return def toggle_merged(self, b): if self.merge_id: self.uimanager.remove_ui(self.merge_id) self.merge_id = 0 else: self.merge_id = self.uimanager.add_ui_from_string(self.ui1) print 'merge id:', self.merge_id print self.uimanager.get_ui() return if __name__ == '__main__': ba = UIMergeExample() gtk.main() ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/eventbox.py�����������������������������������������������������������������0100644�0001172�0000167�00000002423�10072700472�016706� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example eventbox.py import pygtk pygtk.require('2.0') import gtk class EventBoxExample: def __init__(self): window = gtk.Window(gtk.WINDOW_TOPLEVEL) window.set_title("Event Box") window.connect("destroy", lambda w: gtk.main_quit()) window.set_border_width(10) # Create an EventBox and add it to our toplevel window event_box = gtk.EventBox() window.add(event_box) event_box.show() # Create a long label label = gtk.Label("Click here to quit, quit, quit, quit, quit") event_box.add(label) label.show() # Clip it short. label.set_size_request(110, 20) # And bind an action to it event_box.set_events(gtk.gdk.BUTTON_PRESS_MASK) event_box.connect("button_press_event", lambda w,e: gtk.main_quit()) # More things you need an X window for ... event_box.realize() event_box.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.HAND1)) # Set background color to green event_box.modify_bg(gtk.STATE_NORMAL, event_box.get_colormap().alloc_color("green")) window.show() def main(): gtk.main() return 0 if __name__ == "__main__": EventBoxExample() main() ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/basictreeview.py������������������������������������������������������������0100644�0001172�0000167�00000004064�10227353425�017717� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example basictreeview.py import pygtk pygtk.require('2.0') import gtk class BasicTreeViewExample: # close the window and quit def delete_event(self, widget, event, data=None): gtk.main_quit() return False def __init__(self): # Create a new window self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.set_title("Basic TreeView Example") self.window.set_size_request(200, 200) self.window.connect("delete_event", self.delete_event) # create a TreeStore with one string column to use as the model self.treestore = gtk.TreeStore(str) # we'll add some data now - 4 rows with 3 child rows each for parent in range(4): piter = self.treestore.append(None, ['parent %i' % parent]) for child in range(3): self.treestore.append(piter, ['child %i of parent %i' % (child, parent)]) # create the TreeView using treestore self.treeview = gtk.TreeView(self.treestore) # create the TreeViewColumn to display the data self.tvcolumn = gtk.TreeViewColumn('Column 0') # add tvcolumn to treeview self.treeview.append_column(self.tvcolumn) # create a CellRendererText to render the data self.cell = gtk.CellRendererText() # add the cell to the tvcolumn and allow it to expand self.tvcolumn.pack_start(self.cell, True) # set the cell "text" attribute to column 0 - retrieve text # from that column in treestore self.tvcolumn.add_attribute(self.cell, 'text', 0) # make it searchable self.treeview.set_search_column(0) # Allow sorting on the column self.tvcolumn.set_sort_column_id(0) # Allow drag and drop reordering of rows self.treeview.set_reorderable(True) self.window.add(self.treeview) self.window.show_all() def main(): gtk.main() if __name__ == "__main__": tvexample = BasicTreeViewExample() main() ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/pygtkconsole.py�������������������������������������������������������������0100755�0001172�0000167�00000006450�10221470007�017576� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # -*- Mode: python; c-basic-offset: 4 -*- # # Interactive PyGtk Console, Johan Dahlin 2002 # import os import signal import sys import string import socket, select from code import InteractiveInterpreter, InteractiveConsole import gtk import gobject # For compatibility, instead of using GDK.INPUT_READ or # gtk.gdk.INPUT_READ depending on the PyGtk version GDK_INPUT_READ = 1 class Mainloop(InteractiveInterpreter): def __init__(self, read_fd, sock): InteractiveInterpreter.__init__(self) self._rfd = os.fdopen(read_fd, 'r') self._sock = sock gobject.io_add_watch(read_fd, GDK_INPUT_READ, self.input_func) def read_message(self): length = ord(self._rfd.read(1)) return self._rfd.read(length) def input_func(self, fd, cond): data = self.read_message() more = self.runsource(data) self._sock.send(chr(more)) return True def run(self): gtk.main() class Console(InteractiveConsole): def __init__(self, write_fd, sock, pid): InteractiveConsole.__init__(self) self._wfd = os.fdopen(write_fd, 'w') self._sock = sock self.pid = pid def send_message(self, message): self._wfd.write('%c%s' % (len(message), message)) self._wfd.flush() def interact(self, banner=None): InteractiveConsole.interact(self, banner) # Die child die os.kill(self.pid, 9) def runsource(self, source, filename): self.send_message(source) # wait for notification from parent select.select([self._sock],[],[]) more = ord(self._sock.recv(1)) return more class GtkInterpreter(Console): def __init__(self): rfd, wfd = os.pipe() # set up socket for returning command result sigsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock_addr = None for port in range(4321,5321): try: sigsock.bind(('', port)) sock_addr = ('', port) except: pass if not sock_addr: print "Can't open socket" sigsock.listen(1) parent_pid = os.getpid() child_pid = os.fork() if not child_pid: # connect to command return socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect(sock_addr) g = Mainloop(rfd, sock) g.run() else: # Wait for command return socket connection sock, addr = sigsock.accept() Console.__init__(self, wfd, sock, child_pid) def interact(): try: import readline import rlcompleter readline.parse_and_bind('tab: complete') except ImportError: pass gi = GtkInterpreter() gi.push("from gtk import *") python_version = string.split(sys.version)[0] try: pygtk_version = string.join(map(str, gtk.pygtk_version), '.') gtk_version = string.join(map(str, gtk.gtk_version), '.') except: pygtk_version = '0.6.x' gtk_version = '1.2.x' banner = """Python %s, PyGTK %s (Gtk+ %s) Interactive console to manipulate GTK+ widgets.""" % (python_version, pygtk_version, gtk_version) gi.interact(banner) if __name__ == '__main__': interact() ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/testtext.py�����������������������������������������������������������������0100644�0001172�0000167�00000125441�10227353425�016752� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # -*- coding: iso-8859-1 -*- import pygtk pygtk.require('2.0') import sys, os, errno import gtk import pango RESPONSE_FORWARD = 0 RESPONSE_BACKWARD = 1 book_closed_xpm = [ "16 16 6 1", " c None s None", ". c black", "X c red", "o c yellow", "O c #808080", "# c white", " ", " .. ", " ..XX. ", " ..XXXXX. ", " ..XXXXXXXX. ", ".ooXXXXXXXXX. ", "..ooXXXXXXXXX. ", ".X.ooXXXXXXXXX. ", ".XX.ooXXXXXX.. ", " .XX.ooXXX..#O ", " .XX.oo..##OO. ", " .XX..##OO.. ", " .X.#OO.. ", " ..O.. ", " .. ", " "] def hsv_to_rgb(h, s, v): if s == 0.0: return (v, v, v) else: hue = h * 6.0 saturation = s value = v if hue >= 6.0: hue = 0.0 f = hue - int(hue) p = value * (1.0 - saturation) q = value * (1.0 - saturation * f) t = value * (1.0 - saturation * (1.0 - f)) ihue = int(hue) if ihue == 0: return(value, t, p) elif ihue == 1: return(q, value, p) elif ihue == 2: return(p, value, t) elif ihue == 3: return(p, q, value) elif ihue == 4: return(t, p, value) elif ihue == 5: return(value, p, q) def hue_to_color(hue): if hue > 1.0: raise ValueError h, s, v = hsv_to_rgb (hue, 1.0, 1.0) return (h*65535, s*65535, v*65535) class FileSel(gtk.FileSelection): def __init__(self): gtk.FileSelection.__init__(self) self.result = False def ok_cb(self, button): self.hide() if self.ok_func(self.get_filename()): self.destroy() self.result = True else: self.show() def run(self, parent, title, start_file, func): if start_file: self.set_filename(start_file) self.ok_func = func self.ok_button.connect("clicked", self.ok_cb) self.cancel_button.connect("clicked", lambda x: self.destroy()) self.connect("destroy", lambda x: gtk.main_quit()) self.set_modal(True) self.show() gtk.main() return self.result class Buffer(gtk.TextBuffer): N_COLORS = 16 PANGO_SCALE = 1024 def __init__(self): gtk.TextBuffer.__init__(self) tt = self.get_tag_table() self.refcount = 0 self.filename = None self.untitled_serial = -1 self.color_tags = [] self.color_cycle_timeout_id = 0 self.start_hue = 0.0 for i in range(Buffer.N_COLORS): tag = self.create_tag() self.color_tags.append(tag) #self.invisible_tag = self.create_tag(None, invisible=True) self.not_editable_tag = self.create_tag(editable=False, foreground="purple") self.found_text_tag = self.create_tag(foreground="red") tabs = pango.TabArray(4, True) tabs.set_tab(0, pango.TAB_LEFT, 10) tabs.set_tab(1, pango.TAB_LEFT, 30) tabs.set_tab(2, pango.TAB_LEFT, 60) tabs.set_tab(3, pango.TAB_LEFT, 120) self.custom_tabs_tag = self.create_tag(tabs=tabs, foreground="green") TestText.buffers.push(self) def pretty_name(self): if self.filename: return os.path.basename(self.filename) else: if self.untitled_serial == -1: self.untitled_serial = TestText.untitled_serial TestText.untitled_serial += 1 if self.untitled_serial == 1: return "Untitled" else: return "Untitled #%d" % self.untitled_serial def filename_set(self): for view in TestText.views: if view.text_view.get_buffer() == self: view.set_view_title() def search(self, str, view, forward): # remove tag from whole buffer start, end = self.get_bounds() self.remove_tag(self.found_text_tag, start, end) iter = self.get_iter_at_mark(self.get_insert()) i = 0 if str: if forward: while 1: res = iter.forward_search(str, gtk.TEXT_SEARCH_TEXT_ONLY) if not res: break match_start, match_end = res i += 1 self.apply_tag(self.found_text_tag, match_start, match_end) iter = match_end else: while 1: res = iter.backward_search(str, gtk.TEXT_SEARCH_TEXT_ONLY) if not res: break match_start, match_end = res i += 1 self.apply_tag(self.found_text_tag, match_start, match_end) iter = match_start dialog = gtk.MessageDialog(view, gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, "%d strings found and marked in red" % i) dialog.connect("response", lambda x,y: dialog.destroy()) dialog.show() def search_forward(self, str, view): self.search(str, view, True) def search_backward(self, str, view): self.search(str, view, False) def ref(self): self.refcount += 1 def unref(self): self.refcount -= 1 if self.refcount == 0: self.set_colors(False) TestText.buffers.remove(self) del self def color_cycle_timeout(self): self.cycle_colors() return True def set_colors(self, enabled): hue = 0.0 if (enabled and self.color_cycle_timeout_id == 0): self.color_cycle_timeout_id = gtk.timeout_add( 200, self.color_cycle_timeout) elif (not enabled and self.color_cycle_timeout_id != 0): gtk.timeout_remove(self.color_cycle_timeout_id) self.color_cycle_timeout_id = 0 for tag in self.color_tags: if enabled: color = apply(TestText.colormap.alloc_color, hue_to_color(hue)) tag.set_property("foreground_gdk", color) else: tag.set_property("foreground_set", False) hue += 1.0 / Buffer.N_COLORS def cycle_colors(self): hue = self.start_hue for tag in self.color_tags: color = apply(TestText.colormap.alloc_color, hue_to_color (hue)) tag.set_property("foreground_gdk", color) hue += 1.0 / Buffer.N_COLORS if hue > 1.0: hue = 0.0 self.start_hue += 1.0 / Buffer.N_COLORS if self.start_hue > 1.0: self.start_hue = 0.0 def tag_event_handler(self, tag, widget, event, iter): char_index = iter.get_offset() tag_name = tag.get_property("name") if event.type == gtk.gdk.MOTION_NOTIFY: print "Motion event at char %d tag `%s'\n" % (char_index, tag_name) elif event.type == gtk.gdk.BUTTON_PRESS: print "Button press at char %d tag `%s'\n" % (char_index, tag_name) elif event.type == gtk.gdk._2BUTTON_PRESS: print "Double click at char %d tag `%s'\n" % (char_index, tag_name) elif event.type == gtk.gdk._3BUTTON_PRESS: print "Triple click at char %d tag `%s'\n" % (char_index, tag_name) elif event.type == gtk.gdk.BUTTON_RELEASE: print "Button release at char %d tag `%s'\n" % (char_index, tag_name) elif (event.type == gtk.gdk.KEY_PRESS or event.type == gtk.gdk.KEY_RELEASE): print "Key event at char %d tag `%s'\n" % (char_index, tag_name) return False def init_tags(self): colormap = TestText.colormap color = colormap.alloc_color(0, 0, 0xffff) tag = self.create_tag("fg_blue", foreground_gdk=color, background='yellow', size_points=24.0) tag.connect("event", self.tag_event_handler) color = colormap.alloc_color(0xffff, 0, 0) tag = self.create_tag("fg_red", rise= -4*Buffer.PANGO_SCALE, foreground_gdk=color) tag.connect("event", self.tag_event_handler) color = colormap.alloc_color(0, 0xffff, 0) tag = self.create_tag("bg_green", background_gdk=color, size_points=10.0) tag.connect("event", self.tag_event_handler) tag = self.create_tag("strikethrough", strikethrough=True) tag.connect("event", self.tag_event_handler) tag = self.create_tag("underline", underline=pango.UNDERLINE_SINGLE) tag.connect("event", self.tag_event_handler) tag = self.create_tag("centered", justification=gtk.JUSTIFY_CENTER) tag = self.create_tag("rtl_quote", wrap_mode=gtk.WRAP_WORD, direction=gtk.TEXT_DIR_RTL, indent=30, left_margin=20, right_margin=20) tag = self.create_tag("negative_indent", indent=-25) def fill_example_buffer(self): tagtable = self.get_tag_table() if not tagtable.lookup("fg_blue"): self.init_tags() iter = self.get_iter_at_offset(0) anchor = self.create_child_anchor(iter) self.set_data("anchor", anchor) pixbuf = gtk.gdk.pixbuf_new_from_xpm_data(book_closed_xpm) #pixbuf = gtk.gdk.pixbuf_new_from_file('book_closed.xpm') for i in range(100): iter = self.get_iter_at_offset(0) self.insert_pixbuf(iter, pixbuf) str = "%d Hello World! blah blah blah blah blah blah blah blah blah blah blah blah\nwoo woo woo woo woo woo woo woo woo woo woo woo woo woo woo\n" % i self.insert(iter, str) iter = self.get_iter_at_line_offset(0, 5) self.insert(iter, "(Hello World!)\nfoo foo Hello this is some text we are using to text word wrap. It has punctuation! gee; blah - hmm, great.\nnew line with a significant quantity of text on it. This line really does contain some text. More text! More text! More text!\n" "German (Deutsch Süd) Grüß Gott Greek (Ελληνικά) Γειά σας Hebrew(שלו×) Hebrew punctuation(\xd6\xbfש\xd6\xbb\xd6\xbc\xd6\xbb\xd6\xbfל\xd6\xbcו\xd6\xbc\xd6\xbb\xd6\xbb\xd6\xbf×\xd6\xbc\xd6\xbb\xd6\xbf) Japanese (日本語) Thai (สวัสดีครับ) Thai wrong spelling (คำต่อไปนื่สะà¸à¸”ผิด พัั้ัั่งโà¸à¸°)\n") temp_mark = self.create_mark("tmp_mark", iter, True); iter = self.get_iter_at_line_offset(0, 6) iter2 = self.get_iter_at_line_offset(0, 13) self.apply_tag_by_name("fg_blue", iter, iter2) iter = self.get_iter_at_line_offset(1, 10) iter2 = self.get_iter_at_line_offset(1, 16) self.apply_tag_by_name("underline", iter, iter2) iter = self.get_iter_at_line_offset(1, 14) iter2 = self.get_iter_at_line_offset(1, 24) self.apply_tag_by_name("strikethrough", iter, iter2) iter = self.get_iter_at_line_offset(0, 9) iter2 = self.get_iter_at_line_offset(0, 16) self.apply_tag_by_name("bg_green", iter, iter2) iter = self.get_iter_at_line_offset(4, 2) iter2 = self.get_iter_at_line_offset(4, 10) self.apply_tag_by_name("bg_green", iter, iter2) iter = self.get_iter_at_line_offset(4, 8) iter2 = self.get_iter_at_line_offset(4, 15) self.apply_tag_by_name("fg_red", iter, iter2) iter = self.get_iter_at_mark(temp_mark) self.insert(iter, "Centered text!\n") iter2 = self.get_iter_at_mark(temp_mark) self.apply_tag_by_name("centered", iter2, iter) self.move_mark(temp_mark, iter) self.insert(iter, "Word wrapped, Right-to-left Quote\n") self.insert(iter, "وقد بدأ ثلاث من أكثر المؤسسات تقدما ÙÙŠ شبكة اكسيون برامجها كمنظمات لا تسعى للربح، ثم تحولت ÙÙŠ السنوات الخمس الماضية إلى مؤسسات مالية منظمة، وباتت جزءا من النظام المالي ÙÙŠ بلدانها، ولكنها تتخصص ÙÙŠ خدمة قطاع المشروعات الصغيرة. وأحد أكثر هذه المؤسسات نجاحا هو »بانكوسول« ÙÙŠ بوليÙيا.\n") iter2 = self.get_iter_at_mark(temp_mark) self.apply_tag_by_name("rtl_quote", iter2, iter) self.insert_with_tags(iter, "Paragraph with negative indentation. blah blah blah blah blah. The quick brown fox jumped over the lazy dog.\n", self.get_tag_table().lookup("negative_indent")) print "%d lines %d chars\n" % (self.get_line_count(), self.get_char_count()) # Move cursor to start iter = self.get_iter_at_offset(0) self.place_cursor(iter) self.set_modified(False) def fill_file_buffer(self, filename): try: f = open(filename, "r") except IOError, (errnum, errmsg): err = "Cannot open file '%s': %s" % (filename, errmsg) view = TestText.active_window_stack.get() dialog = gtk.MessageDialog(view, gtk.DIALOG_MODAL, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, err); result = dialog.run() dialog.destroy() return False iter = self.get_iter_at_offset(0) buf = f.read() f.close() self.set_text(buf) self.set_modified(False) return True def save_buffer(self): result = False have_backup = False if not self.filename: return False bak_filename = self.filename + "~" try: os.rename(self.filename, bak_filename) except (OSError, IOError), (errnum, errmsg): if errnum != errno.ENOENT: err = "Cannot back up '%s' to '%s': %s" % (self.filename, bak_filename, errmsg) view = TestText.active_window_stack.get() dialog = gtk.MessageDialog(view, gtk.DIALOG_MODAL, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, err); dialog.run() dialog.destroy() return False have_backup = True start, end = self.get_bounds() chars = self.get_slice(start, end, False) try: file = open(self.filename, "w") file.write(chars) file.close() result = True self.set_modified(False) except IOError, (errnum, errmsg): err = "Error writing to '%s': %s" % (self.filename, errmsg) view = TestText.active_window_stack.get() dialog = gtk.MessageDialog(view, gtk.DIALOG_MODAL, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, err); dialog.run() dialog.destroy() if not result and have_backup: try: os.rename(bak_filename, self.filename) except OSError, (errnum, errmsg): err = "Can't restore backup file '%s' to '%s': %s\nBackup left as '%s'" % ( self.filename, bak_filename, errmsg, bak_filename) view = TestText.active_window_stack.get() dialog = gtk.MessageDialog(view, gtk.DIALOG_MODAL, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, err); dialog.run() dialog.destroy() return result def save_as_ok_func(self, filename): old_filename = self.filename if (not self.filename or filename != self.filename): if os.path.exists(filename): err = "Ovewrite existing file '%s'?" % filename view = TestText.active_window_stack.get() dialog = gtk.MessageDialog(view, gtk.DIALOG_MODAL, gtk.MESSAGE_QUESTION, gtk.BUTTONS_YES_NO, err); result = dialog.run() dialog.destroy() if result != gtk.RESPONSE_YES: return False self.filename = filename if self.save_buffer(): self.filename_set() return True else: self.filename = old_filename return False def save_as_buffer(self): return FileSel().run(self, "Save File", None, self.save_as_ok_func) def check_buffer_saved(self): if self.get_modified(): pretty_name = self.pretty_name() msg = "Save changes to '%s'?" % pretty_name view = TestText.active_window_stack.get() dialog = gtk.MessageDialog(view, gtk.DIALOG_MODAL, gtk.MESSAGE_QUESTION, gtk.BUTTONS_YES_NO, msg); dialog.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL) result = dialog.run() dialog.destroy() if result == gtk.RESPONSE_YES: if self.filename: return self.save_buffer() return self.save_as_buffer() elif result == gtk.RESPONSE_NO: return True else: return False else: return True class View(gtk.Window): def __init__(self, buffer=None): menu_items = [ ( "/_File", None, None, 0, "<Branch>" ), ( "/File/_New", "<control>N", self.do_new, 0, None ), ( "/File/New _View", None, self.do_new_view, 0, None ), ( "/File/_Open", "<control>O", self.do_open, 0, None ), ( "/File/_Save", "<control>S", self.do_save, 0, None ), ( "/File/Save _As...", None, self.do_save_as, 0, None ), ( "/File/sep1", None, None, 0, "<Separator>" ), ( "/File/_Close", "<control>W" , self.do_close, 0, None ), ( "/File/E_xit", "<control>Q" , self.do_exit, 0, None ), ( "/_Edit", None, None, 0, "<Branch>" ), ( "/Edit/Find...", None, self.do_search, 0, None ), ( "/_Settings", None, None, 0, "<Branch>" ), ( "/Settings/Wrap _Off", None, self.do_wrap_changed, gtk.WRAP_NONE, "<RadioItem>" ), ( "/Settings/Wrap _Words", None, self.do_wrap_changed, gtk.WRAP_WORD, "/Settings/Wrap Off" ), ( "/Settings/Wrap _Chars", None, self.do_wrap_changed, gtk.WRAP_CHAR, "/Settings/Wrap Off" ), ( "/Settings/sep1", None, None, 0, "<Separator>" ), ( "/Settings/Editable", None, self.do_editable_changed, True, "<RadioItem>" ), ( "/Settings/Not editable", None, self.do_editable_changed, False, "/Settings/Editable" ), ( "/Settings/sep1", None, None, 0, "<Separator>" ), ( "/Settings/Cursor visible", None, self.do_cursor_visible_changed, True, "<RadioItem>" ), ( "/Settings/Cursor not visible", None, self.do_cursor_visible_changed, False, "/Settings/Cursor visible" ), ( "/Settings/sep1", None, None, 0, "<Separator>" ), ( "/Settings/Left-to-Right", None, self.do_direction_changed, gtk.TEXT_DIR_LTR, "<RadioItem>" ), ( "/Settings/Right-to-Left", None, self.do_direction_changed, gtk.TEXT_DIR_RTL, "/Settings/Left-to-Right" ), ( "/Settings/sep1", None, None, 0, "<Separator>" ), ( "/Settings/Sane spacing", None, self.do_spacing_changed, False, "<RadioItem>" ), ( "/Settings/Funky spacing", None, self.do_spacing_changed, True, "/Settings/Sane spacing" ), ( "/Settings/sep1", None, None, 0, "<Separator>" ), ( "/Settings/Don't cycle color tags", None, self.do_color_cycle_changed, False, "<RadioItem>" ), ( "/Settings/Cycle colors", None, self.do_color_cycle_changed, True, "/Settings/Don't cycle color tags" ), ( "/_Attributes", None, None, 0, "<Branch>" ), ( "/Attributes/Editable", None, self.do_apply_editable, True, None ), ( "/Attributes/Not editable", None, self.do_apply_editable, False, None ), ( "/Attributes/Invisible", None, self.do_apply_invisible, False, None ), ( "/Attributes/Visible", None, self.do_apply_invisible, True, None ), ( "/Attributes/Custom tabs", None, self.do_apply_tabs, False, None ), ( "/Attributes/Default tabs", None, self.do_apply_tabs, True, None ), ( "/Attributes/Color cycles", None, self.do_apply_colors, True, None ), ( "/Attributes/No colors", None, self.do_apply_colors, False, None ), ( "/Attributes/Remove all tags", None, self.do_remove_tags, 0, None ), ( "/Attributes/Properties", None, self.do_properties, 0, None ), ( "/_Test", None, None, 0, "<Branch>" ), ( "/Test/_Example", None, self.do_example, 0, None ), ( "/Test/_Insert and scroll", None, self.do_insert_and_scroll, 0, None ), ( "/Test/_Add movable children", None, self.do_add_children, 0, None ), ( "/Test/A_dd focusable children", None, self.do_add_focus_children, 0, None ), ] if not buffer: buffer = Buffer() gtk.Window.__init__(self) TestText.views.push(self) buffer.ref() if not TestText.colormap: TestText.colormap = self.get_colormap() self.connect("delete_event", self.delete_event_cb) self.accel_group = gtk.AccelGroup() self.item_factory = gtk.ItemFactory(gtk.MenuBar, "<main>", self.accel_group) self.item_factory.set_data("view", self) self.item_factory.create_items(menu_items) self.add_accel_group(self.accel_group) vbox = gtk.VBox(False, 0) self.add(vbox) vbox.pack_start(self.item_factory.get_widget("<main>"), False, False, 0) sw = gtk.ScrolledWindow() sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.text_view = gtk.TextView(buffer) self.text_view.set_wrap_mode(gtk.WRAP_WORD) # Make sure border width works, no real reason to do this other # than testing self.text_view.set_border_width(10) # Draw tab stops in the top and bottom windows. self.text_view.set_border_window_size(gtk.TEXT_WINDOW_TOP, 15) self.text_view.set_border_window_size(gtk.TEXT_WINDOW_BOTTOM, 15) self.text_view.connect("expose_event", self.tab_stops_expose) self.bhid = buffer.connect("mark_set", self.cursor_set_callback) # Draw line numbers in the side windows; we should really be # more scientific about what width we set them to. self.text_view.set_border_window_size(gtk.TEXT_WINDOW_RIGHT, 30) self.text_view.set_border_window_size(gtk.TEXT_WINDOW_LEFT, 30) self.text_view.connect("expose_event", self.line_numbers_expose) vbox.pack_start(sw, True, True, 0) sw.add(self.text_view) self.set_default_size(500, 500) self.text_view.grab_focus() self.set_view_title() self.init_menus() self.add_example_widgets() self.show_all() def delete_event_cb(self, window, event, data=None): TestText.active_window_stack.push(self) self.check_close_view() TestText.active_window_stack.pop() return True # # Menu callbacks # def get_empty_view(self): buffer = self.text_view.get_buffer() if (not buffer.filename and not buffer.get_modified()): return self else: return View(Buffer()) def view_from_widget(widget): if isinstance(widget, gtk.MenuItem): item_factory = gtk.item_factory_from_widget(widget) return item_factory.get_data("view") else: app = widget.get_toplevel() return app.get_data("view") def do_new(self, callback_action, widget): View() def do_new_view(self, callback_action, widget): View(self.text_view.get_buffer()) def open_ok_func(self, filename): new_view = self.get_empty_view() buffer = new_view.text_view.get_buffer() if not buffer.fill_file_buffer(filename): if new_view != self: new_view.close_view() return False else: buffer.filename = filename buffer.filename_set() return True; def do_open(self, callback_action, widget): FileSel().run(self, "Open File", None, self.open_ok_func) def do_save_as(self, callback_action, widget): TestText.active_window_stack.push(self) self.text_view.get_buffer().save_as_buffer() TestText.active_window_stack.pop() def do_save(self, callback_action, widget): TestText.active_window_stack.push(self) buffer = self.text_view.get_buffer() if not buffer.filename: self.do_save_as(callback_data, callback_action) else: buffer.save_buffer() TestText.active_window_stack.pop() def do_close(self, callback_action, widget): TestText.active_window_stack.push(self) self.check_close_view() TestText.active_window_stack.pop() def do_exit(self, callback_action, widget): TestText.active_window_stack.push(self) for tmp in TestText.buffers: if not tmp.check_buffer_saved(): return gtk.main_quit() TestText.active_window_stack.pop() def do_example(self, callback_action, widget): new_view = self.get_empty_view() buffer = new_view.text_view.get_buffer() buffer.fill_example_buffer() new_view.add_example_widgets() def do_insert_and_scroll(self, callback_action, widget): buffer = self.text_view.get_buffer() start, end = buffer.get_bounds() mark = buffer.create_mark(None, end, False) buffer.insert(end, "Hello this is multiple lines of text\n" "Line 1\n" "Line 2\n" "Line 3\n" "Line 4\n" "Line 5\n") self.text_view.scroll_to_mark(mark, 0, True, 0.0, 1.0) buffer.delete_mark(mark) def do_wrap_changed(self, callback_action, widget): self.text_view.set_wrap_mode(callback_action) def do_direction_changed(self, callback_action, widget): self.text_view.set_direction(callback_action) self.text_view.queue_resize() def do_spacing_changed(self, callback_action, widget): if callback_action: self.text_view.set_pixels_above_lines(23) self.text_view.set_pixels_below_lines(21) self.text_view.set_pixels_inside_wrap(9) else: self.text_view.set_pixels_above_lines(0) self.text_view.set_pixels_below_lines(0) self.text_view.set_pixels_inside_wrap(0) def do_editable_changed(self, callback_action, widget): self.text_view.set_editable(callback_action) def do_cursor_visible_changed(self, callback_action, widget): self.text_view.set_cursor_visible(callback_action) def do_color_cycle_changed(self, callback_action, widget): self.text_view.get_buffer().set_colors(callback_action) def do_apply_editable(self, callback_action, widget): buffer = self.text_view.get_buffer() bounds = buffer.get_selection_bounds() if bounds: start, end = bounds if callback_action: buffer.remove_tag(buffer.not_editable_tag, start, end) else: buffer.apply_tag(buffer.not_editable_tag, start, end) def do_apply_invisible(self, callback_action, widget): buffer = self.text_view.get_buffer() bounds = buffer.get_selection_bounds() if bounds: start, end = bounds if callback_action: buffer.remove_tag(buffer.invisible_tag, start, end) else: buffer.apply_tag(buffer.invisible_tag, start, end) def do_apply_tabs(self, callback_action, widget): buffer = self.text_view.get_buffer() bounds = buffer.get_selection_bounds() if bounds: start, end = bounds if callback_action: buffer.remove_tag(buffer.custom_tabs_tag, start, end) else: buffer.apply_tag(buffer.custom_tabs_tag, start, end) def do_apply_colors(self, callback_action, widget): buffer = self.text_view.get_buffer() bounds = buffer.get_selection_bounds() if bounds: start, end = bounds if not callback_action: for tag in buffer.color_tags: buffer.remove_tag(tag, start, end) else: tmp = buffer.color_tags i = 0 next = start.copy() while next.compare(end) < 0: next.forward_chars(2) if next.compare(end) >= 0: next = end buffer.apply_tag(tmp[i], start, next) i += 1 if i >= len(tmp): i = 0 start = next.copy() def do_remove_tags(self, callback_action, widget): buffer = self.text_view.get_buffer() bounds = buffer.get_selection_bounds() if bounds: start, end = bounds buffer.remove_all_tags(start, end) def do_properties(self, callback_action, widget): #create_prop_editor(view.text_view, 0) pass def dialog_response_callback(self, dialog, response_id): if (response_id != RESPONSE_FORWARD and response_id != RESPONSE_BACKWARD): dialog.destroy() return start, end = dialog.buffer.get_bounds() search_string = start.get_text(end) print "Searching for `%s'\n" % search_string buffer = self.text_view.get_buffer() if response_id == RESPONSE_FORWARD: buffer.search_forward(search_string, self) elif response_id == RESPONSE_BACKWARD: buffer.search_backward(search_string, self) dialog.destroy() def do_search(self, callback_action, widget): search_text = gtk.TextView() dialog = gtk.Dialog("Search", self, gtk.DIALOG_DESTROY_WITH_PARENT, ("Forward", RESPONSE_FORWARD, "Backward", RESPONSE_BACKWARD, gtk.STOCK_CANCEL, gtk.RESPONSE_NONE)) dialog.vbox.pack_end(search_text, True, True, 0) dialog.buffer = search_text.get_buffer() dialog.connect("response", self.dialog_response_callback) search_text.show() search_text.grab_focus() dialog.show_all() def movable_child_callback(self, child, event): text_view = self.text_view info = child.get_data("testtext-move-info") if not info: info = {} info['start_x'] = -1 info['start_y'] = -1 info['button'] = -1 child.set_data("testtext-move-info", info) if event.type == gtk.gdk.BUTTON_PRESS: if info['button'] < 0: info['button'] = event.button info['start_x'] = child.allocation.x info['start_y'] = child.allocation.y info['click_x'] = child.allocation.x + event.x info['click_y'] = child.allocation.y + event.y elif event.type == gtk.gdk.BUTTON_RELEASE: if info['button'] < 0: return False if info['button'] == event.button: info['button'] = -1; # convert to window coords from event box coords x = info['start_x'] + (event.x + child.allocation.x \ - info['click_x']) y = info['start_y'] + (event.y + child.allocation.y \ - info['click_y']) text_view.move_child(child, x, y) elif gtk.gdk.MOTION_NOTIFY: if info['button'] < 0: return False x, y = child.get_pointer() # ensure more events # to window coords from event box coords x += child.allocation.x y += child.allocation.y x = info['start_x'] + (x - info['click_x']) y = info['start_y'] + (y - info['click_y']) text_view.move_child(child, x, y) return False def add_movable_child(self, text_view, window): label = gtk.Label("Drag me around") event_box = gtk.EventBox() event_box.add_events(gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK | gtk.gdk.POINTER_MOTION_MASK | gtk.gdk.POINTER_MOTION_HINT_MASK) color = TestText.colormap.alloc_color(0xffff, 0, 0) event_box.modify_bg(gtk.STATE_NORMAL, color) event_box.add(label) event_box.show_all() event_box.connect("event", self.movable_child_callback) text_view.add_child_in_window(event_box, window, 0, 0) def do_add_children(self, callback_action, widget): text_view = self.text_view self.add_movable_child(text_view, gtk.TEXT_WINDOW_WIDGET) self.add_movable_child(text_view, gtk.TEXT_WINDOW_LEFT) self.add_movable_child(text_view, gtk.TEXT_WINDOW_RIGHT) self.add_movable_child(text_view, gtk.TEXT_WINDOW_TEXT) self.add_movable_child(text_view, gtk.TEXT_WINDOW_TOP) self.add_movable_child(text_view, gtk.TEXT_WINDOW_BOTTOM) def do_add_focus_children(self, callback_action, widget): text_view = self.text_view child = gtk.EventBox() b = gtk.Button("Button _A in widget.window") child.add(b) text_view.add_child_in_window(child, gtk.TEXT_WINDOW_WIDGET, 0, 200) child = gtk.EventBox() b = gtk.Button("Button _B in text.window") child.add(b) text_view.add_child_in_window(child, gtk.TEXT_WINDOW_TEXT, 50, 50) child = gtk.EventBox() b = gtk.Button("Button _T in top window") child.add(b) text_view.add_child_in_window(child, gtk.TEXT_WINDOW_TOP, 100, 0) child = gtk.EventBox() b = gtk.Button("Button _W in bottom window") child.add(b) text_view.add_child_in_window(child, gtk.TEXT_WINDOW_BOTTOM, 100, 0) child = gtk.EventBox() b = gtk.Button("Button _C in left window") child.add(b) text_view.add_child_in_window(child, gtk.TEXT_WINDOW_LEFT, 0, 50) child = gtk.EventBox() b = gtk.Button("Button _D in right window") child.add(b) text_view.add_child_in_window(child, gtk.TEXT_WINDOW_RIGHT, 0, 25) buffer = text_view.get_buffer() iter = buffer.get_start_iter() anchor = buffer.create_child_anchor(iter) child = gtk.Button("Button _E in buffer") text_view.add_child_at_anchor(child, anchor) anchor = buffer.create_child_anchor(iter) child = gtk.Button("Button _F in buffer") text_view.add_child_at_anchor(child, anchor) anchor = buffer.create_child_anchor(iter) child = gtk.Button("Button _G in buffer") text_view.add_child_at_anchor(child, anchor) # show all the buttons text_view.show_all() def init_menus(self): text_view = self.text_view direction = text_view.get_direction() wrap_mode = text_view.get_wrap_mode() menu_item = None if direction == gtk.TEXT_DIR_LTR: menu_item = self.item_factory.get_widget("/Settings/Left-to-Right") elif direction == gtk.TEXT_DIR_RTL: menu_item = self.item_factory.get_widget("/Settings/Right-to-Left") if menu_item: menu_item.activate() if wrap_mode == gtk.WRAP_NONE: menu_item = self.item_factory.get_widget("/Settings/Wrap Off") elif wrap_mode == gtk.WRAP_WORD: menu_item = self.item_factory.get_widget("/Settings/Wrap Words") elif wrap_mode == gtk.WRAP_CHAR: menu_item = self.item_factory.get_widget("/Settings/Wrap Chars") if menu_item: menu_item.activate() def close_view(self): TestText.views.remove(self) buffer = self.text_view.get_buffer() buffer.unref() buffer.disconnect(self.bhid) self.text_view.destroy() del self.text_view self.text_view = None self.destroy() del self if not TestText.views: gtk.main_quit() def check_close_view(self): buffer = self.text_view.get_buffer() if (buffer.refcount > 1 or buffer.check_buffer_saved()): self.close_view() def set_view_title(self): pretty_name = self.text_view.get_buffer().pretty_name() title = "testtext - " + pretty_name self.set_title(title) def cursor_set_callback(self, buffer, location, mark): # Redraw tab windows if the cursor moves # on the mapped widget (windows may not exist before realization... text_view = self.text_view if mark == buffer.get_insert(): tab_window = text_view.get_window(gtk.TEXT_WINDOW_TOP) tab_window.invalidate_rect(None, False) #tab_window.invalidate_rect(tab_window.get_geometry()[:4], False) tab_window = text_view.get_window(gtk.TEXT_WINDOW_BOTTOM) tab_window.invalidate_rect(None, False) #tab_window.invalidate_rect(tab_window.get_geometry()[:4], False) def tab_stops_expose(self, widget, event): #print self, widget, event text_view = widget # See if this expose is on the tab stop window top_win = text_view.get_window(gtk.TEXT_WINDOW_TOP) bottom_win = text_view.get_window(gtk.TEXT_WINDOW_BOTTOM) if event.window == top_win: type = gtk.TEXT_WINDOW_TOP target = top_win elif event.window == bottom_win: type = gtk.TEXT_WINDOW_BOTTOM target = bottom_win else: return False first_x = event.area.x last_x = first_x + event.area.width first_x, y = text_view.window_to_buffer_coords(type, first_x, 0) last_x, y = text_view.window_to_buffer_coords(type, last_x, 0) buffer = text_view.get_buffer() insert = buffer.get_iter_at_mark(buffer.get_insert()) attrs = gtk.TextAttributes() insert.get_attributes(attrs) tabslist = [] in_pixels = False if attrs.tabs: tabslist = attrs.tabs.get_tabs() in_pixels = attrs.tabs.get_positions_in_pixels() for align, position in tabslist: if not in_pixels: position = pango.PIXELS(position) pos, y = text_view.buffer_to_window_coords(type, position, 0) target.draw_line(text_view.style.fg_gc[text_view.state], pos, 0, pos, 15) return True def get_lines(self, first_y, last_y, buffer_coords, numbers): text_view = self.text_view # Get iter at first y iter, top = text_view.get_line_at_y(first_y) # For each iter, get its location and add it to the arrays. # Stop when we pass last_y count = 0 size = 0 while not iter.is_end(): y, height = text_view.get_line_yrange(iter) buffer_coords.append(y) line_num = iter.get_line() numbers.append(line_num) count += 1 if (y + height) >= last_y: break iter.forward_line() return count def line_numbers_expose(self, widget, event, user_data=None): text_view = widget # See if this expose is on the line numbers window left_win = text_view.get_window(gtk.TEXT_WINDOW_LEFT) right_win = text_view.get_window(gtk.TEXT_WINDOW_RIGHT) if event.window == left_win: type = gtk.TEXT_WINDOW_LEFT target = left_win elif event.window == right_win: type = gtk.TEXT_WINDOW_RIGHT target = right_win else: return False first_y = event.area.y last_y = first_y + event.area.height x, first_y = text_view.window_to_buffer_coords(type, 0, first_y) x, last_y = text_view.window_to_buffer_coords(type, 0, last_y) numbers = [] pixels = [] count = self.get_lines(first_y, last_y, pixels, numbers) # Draw fully internationalized numbers! layout = widget.create_pango_layout("") for i in range(count): x, pos = text_view.buffer_to_window_coords(type, 0, pixels[i]) str = "%d" % numbers[i] layout.set_text(str) widget.style.paint_layout(target, widget.state, False, None, widget, None, 2, pos + 2, layout) # don't stop emission, need to draw children return False def add_example_widgets(self): buffer = self.text_view.get_buffer() anchor = buffer.get_data("anchor") if (anchor and not anchor.get_deleted()): widget = gtk.Button("Foo") self.text_view.add_child_at_anchor(widget, anchor) widget.show() class Stack(list): def __init__(self): list.__init__(self) def push(self, item): self.insert(-1, item) def pop(self): del self[0] def get(self): return self[0] class TestText: untitled_serial = 1 colormap = None active_window_stack = Stack() buffers = Stack() views = Stack() def __init__(self, filelist): view = View() self.active_window_stack.push(view) for fname in filelist: filename = os.path.abspath(fname) view.open_ok_func(filename) self.active_window_stack.pop() def main(self): gtk.main() return 0 if __name__ == "__main__": testtext = TestText(sys.argv[1:]) testtext.main() �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/dragtargets.py��������������������������������������������������������������0100644�0001172�0000167�00000001027�10072700472�017362� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/local/env python import pygtk pygtk.require('2.0') import gtk def motion_cb(wid, context, x, y, time): context.drag_status(gtk.gdk.ACTION_COPY, time) return True def drop_cb(wid, context, x, y, time): l.set_text('\n'.join([str(t) for t in context.targets])) return True w = gtk.Window() w.set_size_request(200, 150) w.drag_dest_set(0, [], 0) w.connect('drag_motion', motion_cb) w.connect('drag_drop', drop_cb) w.connect('destroy', lambda w: gtk.main_quit()) l = gtk.Label() w.add(l) w.show_all() gtk.main() ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/statusbar.py����������������������������������������������������������������0100644�0001172�0000167�00000003045�10227353425�017071� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example statusbar.py import pygtk pygtk.require('2.0') import gtk class StatusbarExample: def push_item(self, widget, data): buff = " Item %d" % self.count self.count = self.count + 1 self.status_bar.push(data, buff) return def pop_item(self, widget, data): self.status_bar.pop(data) return def __init__(self): self.count = 1 # create a new window window = gtk.Window(gtk.WINDOW_TOPLEVEL) window.set_size_request(200, 100) window.set_title("PyGTK Statusbar Example") window.connect("delete_event", lambda w,e: gtk.main_quit()) vbox = gtk.VBox(False, 1) window.add(vbox) vbox.show() self.status_bar = gtk.Statusbar() vbox.pack_start(self.status_bar, True, True, 0) self.status_bar.show() context_id = self.status_bar.get_context_id("Statusbar example") button = gtk.Button("push item") button.connect("clicked", self.push_item, context_id) vbox.pack_start(button, True, True, 2) button.show() button = gtk.Button("pop last item") button.connect("clicked", self.pop_item, context_id) vbox.pack_start(button, True, True, 2) button.show() # always display the window as the last step so it all splashes on # the screen at once. window.show() def main(): gtk.main() return 0 if __name__ == "__main__": StatusbarExample() main() �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/treeviewcolumn.py�����������������������������������������������������������0100644�0001172�0000167�00000006156�10227353425�020137� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example treeviewcolumn.py import pygtk pygtk.require('2.0') import gtk class TreeViewColumnExample: # close the window and quit def delete_event(self, widget, event, data=None): gtk.main_quit() return False def make_pb(self, tvcolumn, cell, model, iter): stock = model.get_value(iter, 1) pb = self.treeview.render_icon(stock, gtk.ICON_SIZE_MENU, None) cell.set_property('pixbuf', pb) return def __init__(self): # Create a new window self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.set_title("TreeViewColumn Example") #self.window.set_size_request(200, 200) self.window.connect("delete_event", self.delete_event) # create a liststore with one string column to use as the model self.liststore = gtk.ListStore(str, str, str, 'gboolean') # create the TreeView using liststore self.treeview = gtk.TreeView(self.liststore) # create the TreeViewColumns to display the data self.tvcolumn = gtk.TreeViewColumn('Pixbuf and Text') self.tvcolumn1 = gtk.TreeViewColumn('Text Only') # add a row with text and a stock item - color strings for # the background self.liststore.append(['Open', gtk.STOCK_OPEN, 'Open a File', True]) self.liststore.append(['New', gtk.STOCK_NEW, 'New File', True]) self.liststore.append(['Print', gtk.STOCK_PRINT, 'Print File', False]) # add columns to treeview self.treeview.append_column(self.tvcolumn) self.treeview.append_column(self.tvcolumn1) # create a CellRenderers to render the data self.cellpb = gtk.CellRendererPixbuf() self.cell = gtk.CellRendererText() self.cell1 = gtk.CellRendererText() # set background color property self.cellpb.set_property('cell-background', 'yellow') self.cell.set_property('cell-background', 'cyan') self.cell1.set_property('cell-background', 'pink') # add the cells to the columns - 2 in the first self.tvcolumn.pack_start(self.cellpb, False) self.tvcolumn.pack_start(self.cell, True) self.tvcolumn1.pack_start(self.cell1, True) # set the cell attributes to the appropriate liststore column # GTK+ 2.0 doesn't support the "stock_id" property if gtk.gtk_version[1] < 2: self.tvcolumn.set_cell_data_func(self.cellpb, self.make_pb) else: self.tvcolumn.set_attributes(self.cellpb, stock_id=1) self.tvcolumn.set_attributes(self.cell, text=0) self.tvcolumn1.set_attributes(self.cell1, text=2, cell_background_set=3) # make treeview searchable self.treeview.set_search_column(0) # Allow sorting on the column self.tvcolumn.set_sort_column_id(0) # Allow drag and drop reordering of rows self.treeview.set_reorderable(True) self.window.add(self.treeview) self.window.show_all() def main(): gtk.main() if __name__ == "__main__": tvcexample = TreeViewColumnExample() main() ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/comboboxbasic.py������������������������������������������������������������0100644�0001172�0000167�00000001733�10103544514�017667� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python import pygtk pygtk.require('2.0') import gtk class ComboBoxExample: def __init__(self): window = gtk.Window() window.connect('destroy', lambda w: gtk.main_quit()) combobox = gtk.combo_box_new_text() window.add(combobox) combobox.append_text('Select a pie:') combobox.append_text('Apple') combobox.append_text('Cherry') combobox.append_text('Blueberry') combobox.append_text('Grape') combobox.append_text('Peach') combobox.append_text('Raisin') combobox.connect('changed', self.changed_cb) combobox.set_active(0) window.show_all() return def changed_cb(self, combobox): model = combobox.get_model() index = combobox.get_active() if index: print 'I like', model[index][0], 'pie' return def main(): gtk.main() return if __name__ == "__main__": bcb = ComboBoxExample() main() �������������������������������������pygtk2tutorial/examples/socket.py�������������������������������������������������������������������0100644�0001172�0000167�00000000730�10133320371�016335� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/python import string import pygtk pygtk.require('2.0') import gtk,sys window = gtk.Window() window.show() socket = gtk.Socket() socket.show() window.add(socket) print "Socket ID=", socket.get_id() window.connect("destroy", lambda w: gtk.main_quit()) def plugged_event(widget): print "I (", widget, ") have just had a plug inserted!" socket.connect("plug-added", plugged_event) if len(sys.argv) == 2: socket.add_id(long(sys.argv[1])) gtk.main() ����������������������������������������pygtk2tutorial/examples/wheelbarrow.py��������������������������������������������������������������0100644�0001172�0000167�00000013241�10227353425�017401� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example wheelbarrow.py import pygtk pygtk.require('2.0') import gtk # XPM WheelbarrowFull_xpm = [ "48 48 64 1", " c None", ". c #DF7DCF3CC71B", "X c #965875D669A6", "o c #71C671C671C6", "O c #A699A289A699", "+ c #965892489658", "@ c #8E38410330C2", "# c #D75C7DF769A6", "$ c #F7DECF3CC71B", "% c #96588A288E38", "& c #A69992489E79", "* c #8E3886178E38", "= c #104008200820", "- c #596510401040", "; c #C71B30C230C2", ": c #C71B9A699658", "> c #618561856185", ", c #20811C712081", "< c #104000000000", "1 c #861720812081", "2 c #DF7D4D344103", "3 c #79E769A671C6", "4 c #861782078617", "5 c #41033CF34103", "6 c #000000000000", "7 c #49241C711040", "8 c #492445144924", "9 c #082008200820", "0 c #69A618611861", "q c #B6DA71C65144", "w c #410330C238E3", "e c #CF3CBAEAB6DA", "r c #71C6451430C2", "t c #EFBEDB6CD75C", "y c #28A208200820", "u c #186110401040", "i c #596528A21861", "p c #71C661855965", "a c #A69996589658", "s c #30C228A230C2", "d c #BEFBA289AEBA", "f c #596545145144", "g c #30C230C230C2", "h c #8E3882078617", "j c #208118612081", "k c #38E30C300820", "l c #30C2208128A2", "z c #38E328A238E3", "x c #514438E34924", "c c #618555555965", "v c #30C2208130C2", "b c #38E328A230C2", "n c #28A228A228A2", "m c #41032CB228A2", "M c #104010401040", "N c #492438E34103", "B c #28A2208128A2", "V c #A699596538E3", "C c #30C21C711040", "Z c #30C218611040", "A c #965865955965", "S c #618534D32081", "D c #38E31C711040", "F c #082000000820", " ", " .XoO ", " +@#$%o& ", " *=-;#::o+ ", " >,<12#:34 ", " 45671#:X3 ", " +89<02qwo ", "e* >,67;ro ", "ty> 459@>+&& ", "$2u+ ><ipas8* ", "%$;=* *3:.Xa.dfg> ", "Oh$;ya *3d.a8j,Xe.d3g8+ ", " Oh$;ka *3d$a8lz,,xxc:.e3g54 ", " Oh$;kO *pd$%svbzz,sxxxxfX..&wn> ", " Oh$@mO *3dthwlsslszjzxxxxxxx3:td8M4 ", " Oh$@g& *3d$XNlvvvlllm,mNwxxxxxxxfa.:,B* ", " Oh$@,Od.czlllllzlmmqV@V#V@fxxxxxxxf:%j5& ", " Oh$1hd5lllslllCCZrV#r#:#2AxxxxxxxxxcdwM* ", " OXq6c.%8vvvllZZiqqApA:mq:Xxcpcxxxxxfdc9* ", " 2r<6gde3bllZZrVi7S@SV77A::qApxxxxxxfdcM ", " :,q-6MN.dfmZZrrSS:#riirDSAX@Af5xxxxxfevo", " +A26jguXtAZZZC7iDiCCrVVii7Cmmmxxxxxx%3g", " *#16jszN..3DZZZZrCVSA2rZrV7Dmmwxxxx&en", " p2yFvzssXe:fCZZCiiD7iiZDiDSSZwwxx8e*>", " OA1<jzxwwc:$d%NDZZZZCCCZCCZZCmxxfd.B ", " 3206Bwxxszx%et.eaAp77m77mmmf3&eeeg* ", " @26MvzxNzvlbwfpdettttttttttt.c,n& ", " *;16=lsNwwNwgsvslbwwvccc3pcfu<o ", " p;<69BvwwsszslllbBlllllllu<5+ ", " OS0y6FBlvvvzvzss,u=Blllj=54 ", " c1-699Blvlllllu7k96MMMg4 ", " *10y8n6FjvllllB<166668 ", " S-kg+>666<M<996-y6n<8* ", " p71=4 m69996kD8Z-66698&& ", " &i0ycm6n4 ogk17,0<6666g ", " N-k-<> >=01-kuu666> ", " ,6ky& &46-10ul,66, ", " Ou0<> o66y<ulw<66& ", " *kk5 >66By7=xu664 ", " <<M4 466lj<Mxu66o ", " *>> +66uv,zN666* ", " 566,xxj669 ", " 4666FF666> ", " >966666M ", " oM6668+ ", " *4 ", " ", " " ] class WheelbarrowExample: # When invoked (via signal delete_event), terminates the application def close_application(self, widget, event, data=None): gtk.main_quit() return False def __init__(self): # Create the main window, and attach delete_event signal to terminate # the application. Note that the main window will not have a titlebar # since we're making it a popup. window = gtk.Window(gtk.WINDOW_POPUP) window.connect("delete_event", self.close_application) window.set_events(window.get_events() | gtk.gdk.BUTTON_PRESS_MASK) window.connect("button_press_event", self.close_application) window.show() # Now for the pixmap and the image widget pixmap, mask = gtk.gdk.pixmap_create_from_xpm_d( window.window, None, WheelbarrowFull_xpm) image = gtk.Image() image.set_from_pixmap(pixmap, mask) image.show() # To display the image, we use a fixed widget to place the image fixed = gtk.Fixed() fixed.set_size_request(200, 200) fixed.put(image, 0, 0) window.add(fixed) fixed.show() # This masks out everything except for the image itself window.shape_combine_mask(mask, 0, 0) # show the window window.set_position(gtk.WIN_POS_CENTER_ALWAYS) window.show() def main(): gtk.main() return 0 if __name__ == "__main__": WheelbarrowExample() main() ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/treeviewdnd.py��������������������������������������������������������������0100644�0001172�0000167�00000007641�10227353425�017407� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example treeviewdnd.py import pygtk pygtk.require('2.0') import gtk class TreeViewDnDExample: TARGETS = [ ('MY_TREE_MODEL_ROW', gtk.TARGET_SAME_WIDGET, 0), ('text/plain', 0, 1), ('TEXT', 0, 2), ('STRING', 0, 3), ] # close the window and quit def delete_event(self, widget, event, data=None): gtk.main_quit() return False def clear_selected(self, button): selection = self.treeview.get_selection() model, iter = selection.get_selected() if iter: model.remove(iter) return def __init__(self): # Create a new window self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.set_title("URL Cache") self.window.set_size_request(200, 200) self.window.connect("delete_event", self.delete_event) self.scrolledwindow = gtk.ScrolledWindow() self.vbox = gtk.VBox() self.hbox = gtk.HButtonBox() self.vbox.pack_start(self.scrolledwindow, True) self.vbox.pack_start(self.hbox, False) self.b0 = gtk.Button('Clear All') self.b1 = gtk.Button('Clear Selected') self.hbox.pack_start(self.b0) self.hbox.pack_start(self.b1) # create a liststore with one string column to use as the model self.liststore = gtk.ListStore(str) # create the TreeView using liststore self.treeview = gtk.TreeView(self.liststore) # create a CellRenderer to render the data self.cell = gtk.CellRendererText() # create the TreeViewColumns to display the data self.tvcolumn = gtk.TreeViewColumn('URL', self.cell, text=0) # add columns to treeview self.treeview.append_column(self.tvcolumn) self.b0.connect_object('clicked', gtk.ListStore.clear, self.liststore) self.b1.connect('clicked', self.clear_selected) # make treeview searchable self.treeview.set_search_column(0) # Allow sorting on the column self.tvcolumn.set_sort_column_id(0) # Allow enable drag and drop of rows including row move self.treeview.enable_model_drag_source( gtk.gdk.BUTTON1_MASK, self.TARGETS, gtk.gdk.ACTION_DEFAULT| gtk.gdk.ACTION_MOVE) self.treeview.enable_model_drag_dest(self.TARGETS, gtk.gdk.ACTION_DEFAULT) self.treeview.connect("drag_data_get", self.drag_data_get_data) self.treeview.connect("drag_data_received", self.drag_data_received_data) self.scrolledwindow.add(self.treeview) self.window.add(self.vbox) self.window.show_all() def drag_data_get_data(self, treeview, context, selection, target_id, etime): treeselection = treeview.get_selection() model, iter = treeselection.get_selected() data = model.get_value(iter, 0) selection.set(selection.target, 8, data) def drag_data_received_data(self, treeview, context, x, y, selection, info, etime): model = treeview.get_model() data = selection.data drop_info = treeview.get_dest_row_at_pos(x, y) if drop_info: path, position = drop_info iter = model.get_iter(path) if (position == gtk.TREE_VIEW_DROP_BEFORE or position == gtk.TREE_VIEW_DROP_INTO_OR_BEFORE): model.insert_before(iter, [data]) else: model.insert_after(iter, [data]) else: model.append([data]) if context.action == gtk.gdk.ACTION_MOVE: context.finish(True, True, etime) return def main(): gtk.main() if __name__ == "__main__": treeviewdndex = TreeViewDnDExample() main() �����������������������������������������������������������������������������������������������pygtk2tutorial/examples/comboboxentrybasic.py�������������������������������������������������������0100644�0001172�0000167�00000001622�10103544514�020746� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python import pygtk pygtk.require('2.0') import gtk class ComboBoxEntryExample: def __init__(self): window = gtk.Window() window.connect('destroy', lambda w: gtk.main_quit()) comboboxentry = gtk.combo_box_entry_new_text() window.add(comboboxentry) comboboxentry.append_text('Apple') comboboxentry.append_text('Cherry') comboboxentry.append_text('Blueberry') comboboxentry.append_text('Grape') comboboxentry.append_text('Peach') comboboxentry.append_text('Raisin') comboboxentry.child.connect('changed', self.changed_cb) comboboxentry.set_active(0) window.show_all() return def changed_cb(self, entry): print 'I like', entry.get_text(), 'pie' return def main(): gtk.main() return if __name__ == "__main__": bcb = ComboBoxEntryExample() main() ��������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/plug.py���������������������������������������������������������������������0100644�0001172�0000167�00000001073�10133320371�016015� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/python import pygtk pygtk.require('2.0') import gtk,sys Wid = 0L if len(sys.argv) == 2: Wid = long(sys.argv[1]) plug = gtk.Plug(Wid) print "Plug ID=", plug.get_id() def embed_event(widget): print "I (", widget, ") have just been embedded!" plug.connect("embedded", embed_event) entry = gtk.Entry() entry.set_text("hello") def entry_point(widget): print "You've changed my text to '%s'" % widget.get_text() entry.connect("changed", entry_point) plug.connect("destroy", lambda w: gtk.main_quit()) plug.add(entry) plug.show_all() gtk.main() ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/images.py�������������������������������������������������������������������0100644�0001172�0000167�00000005201�10227353425�016322� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example images.py import pygtk pygtk.require('2.0') import gtk class ImagesExample: # when invoked (via signal delete_event), terminates the application. def close_application(self, widget, event, data=None): gtk.main_quit() return False # is invoked when the button is clicked. It just prints a message. def button_clicked(self, widget, data=None): print "button %s clicked" % data def __init__(self): # create the main window, and attach delete_event signal to terminating # the application window = gtk.Window(gtk.WINDOW_TOPLEVEL) window.connect("delete_event", self.close_application) window.set_border_width(10) window.show() # a horizontal box to hold the buttons hbox = gtk.HBox() hbox.show() window.add(hbox) pixbufanim = gtk.gdk.PixbufAnimation("goalie.gif") image = gtk.Image() image.set_from_animation(pixbufanim) image.show() # a button to contain the image widget button = gtk.Button() button.add(image) button.show() hbox.pack_start(button) button.connect("clicked", self.button_clicked, "1") # create several images with data from files and load images into # buttons image = gtk.Image() image.set_from_file("apple-red.png") image.show() # a button to contain the image widget button = gtk.Button() button.add(image) button.show() hbox.pack_start(button) button.connect("clicked", self.button_clicked, "2") image = gtk.Image() image.set_from_file("chaos.jpg") image.show() # a button to contain the image widget button = gtk.Button() button.add(image) button.show() hbox.pack_start(button) button.connect("clicked", self.button_clicked, "3") image = gtk.Image() image.set_from_file("important.tif") image.show() # a button to contain the image widget button = gtk.Button() button.add(image) button.show() hbox.pack_start(button) button.connect("clicked", self.button_clicked, "4") image = gtk.Image() image.set_from_file("soccerball.gif") image.show() # a button to contain the image widget button = gtk.Button() button.add(image) button.show() hbox.pack_start(button) button.connect("clicked", self.button_clicked, "5") def main(): gtk.main() return 0 if __name__ == "__main__": ImagesExample() main() �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/important.tif���������������������������������������������������������������0100644�0001172�0000167�00000003744�10006075574�017237� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������II*�6��€àP8!. ‚BaE²XØDDb‚´.V…ƒälv:2‡h`d<I+ÊeR¡ÐhE„•ƒ#l®m)&‰…Ӝؘ¦á¹Ü p%šÊ€��*“*&‡ˆp"X†Q6Ó�¤ ¸èS &åp•0N±‡ e±Æ#¦Ë61@à–"§ÊÅà �NÆW"n÷™Pä_ð8;ü â°W‹䱓rxXJÅ‹bêäÜ@Üæ÷RØô?cÙˆùÁ¬¬!MÂÀ0þlXQu¡ì ø ÍÇ‚"„D&›–­y(DÂoÇ),D“ìdñ`dm$Öˆ‚¢‚'´ˆ7EV¿EPlüDþ˜�������)�9�B�B�J�R�Z�c�c�c�k�k�s�{�„�Œ�Œ�Œ�Œ�”�”�”�œ�œ�œ�œ�¥�¥�¥�¥�¥�­�­�­�­�­�­�­�­�µ�µ�µ�µ�½�½�½�½�½�Æ�Æ�Æ�Î�Î�Ö�Ö�Ö�Ö�Ö�Þ�Þ�Þ�Þ�Þ�Þ�ç�ç�ç�ç�ç�ç�ç�ç�ï�ï�ï�ï�ï�÷�÷�÷�÷�÷�÷�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ������)�9�B�B�J�R�Z�c�c�c�k�k�s�{�„�Œ�Œ�Œ�Œ�”�”�”�œ�œ�œ�œ�¥�¥�¥�¥�¥�­�­�­�­�­�­�­�­�µ�µ�µ�µ�½�½�½�½�½�Æ�Æ�Æ�Î�Î�Ö�Ö�Ö�Ö�Ö�Þ�Þ�Þ�Þ�Þ�Þ�ç�ç�ç�ç�ç�ç�ç�ç�ï�ï�ï�ï�ï�÷�÷�÷�÷�÷�÷�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ������)�9�1�B�J�R�)��R�c�B�k�R�{�„��9�{�Œ�Z�Œ�”�Z�c�{�œ�c�„�”�œ�¥�!�9�k�{�„�Œ�¥�­�J�R�Œ�µ��Z�„�œ�½��Z�Æ�s�Î��R�c�k�Ö���!�1�9�R�Þ��!�)�1�Z�c�{�ç����1�B�ï���1�9�J�÷�����!�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿ�ÿK������K�������þ����������������������������������������������������������������������������&������.��=�������@����&����������������������������������pygtk2tutorial/examples/fixed.py��������������������������������������������������������������������0100644�0001172�0000167�00000003064�10072700472�016155� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example fixed.py import pygtk pygtk.require('2.0') import gtk class FixedExample: # This callback method moves the button to a new position # in the Fixed container. def move_button(self, widget): self.x = (self.x+30)%300 self.y = (self.y+50)%300 self.fixed.move(widget, self.x, self.y) def __init__(self): self.x = 50 self.y = 50 # Create a new window window = gtk.Window(gtk.WINDOW_TOPLEVEL) window.set_title("Fixed Container") # Here we connect the "destroy" event to a signal handler window.connect("destroy", lambda w: gtk.main_quit()) # Sets the border width of the window. window.set_border_width(10) # Create a Fixed Container self.fixed = gtk.Fixed() window.add(self.fixed) self.fixed.show() for i in range(1, 4): # Creates a new button with the label "Press me" button = gtk.Button("Press me") # When the button receives the "clicked" signal, it will call the # method move_button(). button.connect("clicked", self.move_button) # This packs the button into the fixed containers window. self.fixed.put(button, i*50, i*50) # The final step is to display this newly created widget. button.show() # Display the window window.show() def main(): # Enter the event loop gtk.main() return 0 if __name__ == "__main__": FixedExample() main() ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/calendar.py�����������������������������������������������������������������0100644�0001172�0000167�00000021236�10227353425�016634� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example calendar.py # # Copyright (C) 1998 Cesar Miquel, Shawn T. Amundson, Mattias Gronlund # Copyright (C) 2000 Tony Gale # Copyright (C) 2001-2004 John Finlay # # 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. # # 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. # # 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., 675 Mass Ave, Cambridge, MA 02139, USA. import pygtk pygtk.require('2.0') import gtk, pango import time class CalendarExample: DEF_PAD = 10 DEF_PAD_SMALL = 5 TM_YEAR_BASE = 1900 calendar_show_header = 0 calendar_show_days = 1 calendar_month_change = 2 calendar_show_week = 3 def calendar_date_to_string(self): year, month, day = self.window.get_date() mytime = time.mktime((year, month+1, day, 0, 0, 0, 0, 0, -1)) return time.strftime("%x", time.localtime(mytime)) def calendar_set_signal_strings(self, sig_str): prev_sig = self.prev_sig.get() self.prev2_sig.set_text(prev_sig) prev_sig = self.last_sig.get() self.prev_sig.set_text(prev_sig) self.last_sig.set_text(sig_str) def calendar_month_changed(self, widget): buffer = "month_changed: %s" % self.calendar_date_to_string() self.calendar_set_signal_strings(buffer) def calendar_day_selected(self, widget): buffer = "day_selected: %s" % self.calendar_date_to_string() self.calendar_set_signal_strings(buffer) def calendar_day_selected_double_click(self, widget): buffer = "day_selected_double_click: %s" buffer = buffer % self.calendar_date_to_string() self.calendar_set_signal_strings(buffer) year, month, day = self.window.get_date() if self.marked_date[day-1] == 0: self.window.mark_day(day) self.marked_date[day-1] = 1 else: self.window.unmark_day(day) self.marked_date[day-1] = 0 def calendar_prev_month(self, widget): buffer = "prev_month: %s" % self.calendar_date_to_string() self.calendar_set_signal_strings(buffer) def calendar_next_month(self, widget): buffer = "next_month: %s" % self.calendar_date_to_string() self.calendar_set_signal_strings(buffer) def calendar_prev_year(self, widget): buffer = "prev_year: %s" % self.calendar_date_to_string() self.calendar_set_signal_strings(buffer) def calendar_next_year(self, widget): buffer = "next_year: %s" % self.calendar_date_to_string() self.calendar_set_signal_strings(buffer) def calendar_set_flags(self): options = 0 for i in range(5): if self.settings[i]: options = options + (1<<i) if self.window: self.window.display_options(options) def calendar_toggle_flag(self, toggle): j = 0 for i in range(5): if self.flag_checkboxes[i] == toggle: j = i self.settings[j] = not self.settings[j] self.calendar_set_flags() def calendar_font_selection_ok(self, button): self.font = self.font_dialog.get_font_name() if self.window: font_desc = pango.FontDescription(self.font) if font_desc: self.window.modify_font(font_desc) def calendar_select_font(self, button): if not self.font_dialog: window = gtk.FontSelectionDialog("Font Selection Dialog") self.font_dialog = window window.set_position(gtk.WIN_POS_MOUSE) window.connect("destroy", self.font_dialog_destroyed) window.ok_button.connect("clicked", self.calendar_font_selection_ok) window.cancel_button.connect_object("clicked", lambda wid: wid.destroy(), self.font_dialog) window = self.font_dialog if not (window.flags() & gtk.VISIBLE): window.show() else: window.destroy() self.font_dialog = None def font_dialog_destroyed(self, data=None): self.font_dialog = None def __init__(self): flags = [ "Show Heading", "Show Day Names", "No Month Change", "Show Week Numbers", ] self.window = None self.font = None self.font_dialog = None self.flag_checkboxes = 5*[None] self.settings = 5*[0] self.marked_date = 31*[0] window = gtk.Window(gtk.WINDOW_TOPLEVEL) window.set_title("Calendar Example") window.set_border_width(5) window.connect("destroy", lambda x: gtk.main_quit()) window.set_resizable(False) vbox = gtk.VBox(False, self.DEF_PAD) window.add(vbox) # The top part of the window, Calendar, flags and fontsel. hbox = gtk.HBox(False, self.DEF_PAD) vbox.pack_start(hbox, True, True, self.DEF_PAD) hbbox = gtk.HButtonBox() hbox.pack_start(hbbox, False, False, self.DEF_PAD) hbbox.set_layout(gtk.BUTTONBOX_SPREAD) hbbox.set_spacing(5) # Calendar widget frame = gtk.Frame("Calendar") hbbox.pack_start(frame, False, True, self.DEF_PAD) calendar = gtk.Calendar() self.window = calendar self.calendar_set_flags() calendar.mark_day(19) self.marked_date[19-1] = 1 frame.add(calendar) calendar.connect("month_changed", self.calendar_month_changed) calendar.connect("day_selected", self.calendar_day_selected) calendar.connect("day_selected_double_click", self.calendar_day_selected_double_click) calendar.connect("prev_month", self.calendar_prev_month) calendar.connect("next_month", self.calendar_next_month) calendar.connect("prev_year", self.calendar_prev_year) calendar.connect("next_year", self.calendar_next_year) separator = gtk.VSeparator() hbox.pack_start(separator, False, True, 0) vbox2 = gtk.VBox(False, self.DEF_PAD) hbox.pack_start(vbox2, False, False, self.DEF_PAD) # Build the Right frame with the flags in frame = gtk.Frame("Flags") vbox2.pack_start(frame, True, True, self.DEF_PAD) vbox3 = gtk.VBox(True, self.DEF_PAD_SMALL) frame.add(vbox3) for i in range(len(flags)): toggle = gtk.CheckButton(flags[i]) toggle.connect("toggled", self.calendar_toggle_flag) vbox3.pack_start(toggle, True, True, 0) self.flag_checkboxes[i] = toggle # Build the right font-button button = gtk.Button("Font...") button.connect("clicked", self.calendar_select_font) vbox2.pack_start(button, False, False, 0) # Build the Signal-event part. frame = gtk.Frame("Signal events") vbox.pack_start(frame, True, True, self.DEF_PAD) vbox2 = gtk.VBox(True, self.DEF_PAD_SMALL) frame.add(vbox2) hbox = gtk.HBox (False, 3) vbox2.pack_start(hbox, False, True, 0) label = gtk.Label("Signal:") hbox.pack_start(label, False, True, 0) self.last_sig = gtk.Label("") hbox.pack_start(self.last_sig, False, True, 0) hbox = gtk.HBox (False, 3) vbox2.pack_start(hbox, False, True, 0) label = gtk.Label("Previous signal:") hbox.pack_start(label, False, True, 0) self.prev_sig = gtk.Label("") hbox.pack_start(self.prev_sig, False, True, 0) hbox = gtk.HBox (False, 3) vbox2.pack_start(hbox, False, True, 0) label = gtk.Label("Second previous signal:") hbox.pack_start(label, False, True, 0) self.prev2_sig = gtk.Label("") hbox.pack_start(self.prev2_sig, False, True, 0) bbox = gtk.HButtonBox () vbox.pack_start(bbox, False, False, 0) bbox.set_layout(gtk.BUTTONBOX_END) button = gtk.Button("Close") button.connect("clicked", lambda w: gtk.main_quit()) bbox.add(button) button.set_flags(gtk.CAN_DEFAULT) button.grab_default() window.show_all() def main(): gtk.main() return 0 if __name__ == "__main__": CalendarExample() main() ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/expander.py�����������������������������������������������������������������0100644�0001172�0000167�00000001770�10103544514�016664� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python import time import pygtk pygtk.require('2.0') import gtk class ExpanderExample: def __init__(self): window = gtk.Window() window.connect('destroy', lambda w: gtk.main_quit()) expander = gtk.Expander(None) window.add(expander) hbox = gtk.HBox() image = gtk.Image() image.set_from_stock(gtk.STOCK_OPEN, gtk.ICON_SIZE_BUTTON) label = gtk.Label(' Folder Time') hbox.pack_start(image) hbox.pack_start(label) expander.set_label_widget(hbox) expander.connect('notify::expanded', self.expanded_cb) window.show_all() return def expanded_cb(self, expander, params): if expander.get_expanded(): label = gtk.Label(time.ctime()) label.show() expander.add(label) else: expander.remove(expander.child) return def main(): gtk.main() return if __name__ == "__main__": ee = ExpanderExample() main() ��������pygtk2tutorial/examples/rangewidgets.py�������������������������������������������������������������0100644�0001172�0000167�00000016536�10227353425�017555� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example rangewidgets.py import pygtk pygtk.require('2.0') import gtk # Convenience functions def make_menu_item(name, callback, data=None): item = gtk.MenuItem(name) item.connect("activate", callback, data) item.show() return item def scale_set_default_values(scale): scale.set_update_policy(gtk.UPDATE_CONTINUOUS) scale.set_digits(1) scale.set_value_pos(gtk.POS_TOP) scale.set_draw_value(True) class RangeWidgets: def cb_pos_menu_select(self, item, pos): # Set the value position on both scale widgets self.hscale.set_value_pos(pos) self.vscale.set_value_pos(pos) def cb_update_menu_select(self, item, policy): # Set the update policy for both scale widgets self.hscale.set_update_policy(policy) self.vscale.set_update_policy(policy) def cb_digits_scale(self, adj): # Set the number of decimal places to which adj->value is rounded self.hscale.set_digits(adj.value) self.vscale.set_digits(adj.value) def cb_page_size(self, get, set): # Set the page size and page increment size of the sample # adjustment to the value specified by the "Page Size" scale set.page_size = get.value set.page_incr = get.value # Now emit the "changed" signal to reconfigure all the widgets that # are attached to this adjustment set.emit("changed") def cb_draw_value(self, button): # Turn the value display on the scale widgets off or on depending # on the state of the checkbutton self.hscale.set_draw_value(button.get_active()) self.vscale.set_draw_value(button.get_active()) # makes the sample window def __init__(self): # Standard window-creating stuff self.window = gtk.Window (gtk.WINDOW_TOPLEVEL) self.window.connect("destroy", lambda w: gtk.main_quit()) self.window.set_title("range controls") box1 = gtk.VBox(False, 0) self.window.add(box1) box1.show() box2 = gtk.HBox(False, 10) box2.set_border_width(10) box1.pack_start(box2, True, True, 0) box2.show() # value, lower, upper, step_increment, page_increment, page_size # Note that the page_size value only makes a difference for # scrollbar widgets, and the highest value you'll get is actually # (upper - page_size). adj1 = gtk.Adjustment(0.0, 0.0, 101.0, 0.1, 1.0, 1.0) self.vscale = gtk.VScale(adj1) scale_set_default_values(self.vscale) box2.pack_start(self.vscale, True, True, 0) self.vscale.show() box3 = gtk.VBox(False, 10) box2.pack_start(box3, True, True, 0) box3.show() # Reuse the same adjustment self.hscale = gtk.HScale(adj1) self.hscale.set_size_request(200, 30) scale_set_default_values(self.hscale) box3.pack_start(self.hscale, True, True, 0) self.hscale.show() # Reuse the same adjustment again scrollbar = gtk.HScrollbar(adj1) # Notice how this causes the scales to always be updated # continuously when the scrollbar is moved scrollbar.set_update_policy(gtk.UPDATE_CONTINUOUS) box3.pack_start(scrollbar, True, True, 0) scrollbar.show() box2 = gtk.HBox(False, 10) box2.set_border_width(10) box1.pack_start(box2, True, True, 0) box2.show() # A checkbutton to control whether the value is displayed or not button = gtk.CheckButton("Display value on scale widgets") button.set_active(True) button.connect("toggled", self.cb_draw_value) box2.pack_start(button, True, True, 0) button.show() box2 = gtk.HBox(False, 10) box2.set_border_width(10) # An option menu to change the position of the value label = gtk.Label("Scale Value Position:") box2.pack_start(label, False, False, 0) label.show() opt = gtk.OptionMenu() menu = gtk.Menu() item = make_menu_item ("Top", self.cb_pos_menu_select, gtk.POS_TOP) menu.append(item) item = make_menu_item ("Bottom", self.cb_pos_menu_select, gtk.POS_BOTTOM) menu.append(item) item = make_menu_item ("Left", self.cb_pos_menu_select, gtk.POS_LEFT) menu.append(item) item = make_menu_item ("Right", self.cb_pos_menu_select, gtk.POS_RIGHT) menu.append(item) opt.set_menu(menu) box2.pack_start(opt, True, True, 0) opt.show() box1.pack_start(box2, True, True, 0) box2.show() box2 = gtk.HBox(False, 10) box2.set_border_width(10) # Yet another option menu, this time for the update policy of the # scale widgets label = gtk.Label("Scale Update Policy:") box2.pack_start(label, False, False, 0) label.show() opt = gtk.OptionMenu() menu = gtk.Menu() item = make_menu_item("Continuous", self.cb_update_menu_select, gtk.UPDATE_CONTINUOUS) menu.append(item) item = make_menu_item ("Discontinuous", self.cb_update_menu_select, gtk.UPDATE_DISCONTINUOUS) menu.append(item) item = make_menu_item ("Delayed", self.cb_update_menu_select, gtk.UPDATE_DELAYED) menu.append(item) opt.set_menu(menu) box2.pack_start(opt, True, True, 0) opt.show() box1.pack_start(box2, True, True, 0) box2.show() box2 = gtk.HBox(False, 10) box2.set_border_width(10) # An HScale widget for adjusting the number of digits on the # sample scales. label = gtk.Label("Scale Digits:") box2.pack_start(label, False, False, 0) label.show() adj2 = gtk.Adjustment(1.0, 0.0, 5.0, 1.0, 1.0, 0.0) adj2.connect("value_changed", self.cb_digits_scale) scale = gtk.HScale(adj2) scale.set_digits(0) box2.pack_start(scale, True, True, 0) scale.show() box1.pack_start(box2, True, True, 0) box2.show() box2 = gtk.HBox(False, 10) box2.set_border_width(10) # And, one last HScale widget for adjusting the page size of the # scrollbar. label = gtk.Label("Scrollbar Page Size:") box2.pack_start(label, False, False, 0) label.show() adj2 = gtk.Adjustment(1.0, 1.0, 101.0, 1.0, 1.0, 0.0) adj2.connect("value_changed", self.cb_page_size, adj1) scale = gtk.HScale(adj2) scale.set_digits(0) box2.pack_start(scale, True, True, 0) scale.show() box1.pack_start(box2, True, True, 0) box2.show() separator = gtk.HSeparator() box1.pack_start(separator, False, True, 0) separator.show() box2 = gtk.VBox(False, 10) box2.set_border_width(10) box1.pack_start(box2, False, True, 0) box2.show() button = gtk.Button("Quit") button.connect("clicked", lambda w: gtk.main_quit()) box2.pack_start(button, True, True, 0) button.set_flags(gtk.CAN_DEFAULT) button.grab_default() button.show() self.window.show() def main(): gtk.main() return 0 if __name__ == "__main__": RangeWidgets() main() ������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/packbox.py������������������������������������������������������������������0100644�0001172�0000167�00000021674�10227353425�016520� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example packbox.py import pygtk pygtk.require('2.0') import gtk import sys, string # Helper function that makes a new hbox filled with button-labels. Arguments # for the variables we're interested are passed in to this function. We do # not show the box, but do show everything inside. def make_box(homogeneous, spacing, expand, fill, padding): # Create a new hbox with the appropriate homogeneous # and spacing settings box = gtk.HBox(homogeneous, spacing) # Create a series of buttons with the appropriate settings button = gtk.Button("box.pack") box.pack_start(button, expand, fill, padding) button.show() button = gtk.Button("(button,") box.pack_start(button, expand, fill, padding) button.show() # Create a button with the label depending on the value of # expand. if expand == True: button = gtk.Button("True,") else: button = gtk.Button("False,") box.pack_start(button, expand, fill, padding) button.show() # This is the same as the button creation for "expand" # above, but uses the shorthand form. button = gtk.Button(("False,", "True,")[fill==True]) box.pack_start(button, expand, fill, padding) button.show() padstr = "%d)" % padding button = gtk.Button(padstr) box.pack_start(button, expand, fill, padding) button.show() return box class PackBox1: def delete_event(self, widget, event, data=None): gtk.main_quit() return False def __init__(self, which): # Create our window self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) # You should always remember to connect the delete_event signal # to the main window. This is very important for proper intuitive # behavior self.window.connect("delete_event", self.delete_event) self.window.set_border_width(10) # We create a vertical box (vbox) to pack the horizontal boxes into. # This allows us to stack the horizontal boxes filled with buttons one # on top of the other in this vbox. box1 = gtk.VBox(False, 0) # which example to show. These correspond to the pictures above. if which == 1: # create a new label. label = gtk.Label("HBox(False, 0)") # Align the label to the left side. We'll discuss this method # and others in the section on Widget Attributes. label.set_alignment(0, 0) # Pack the label into the vertical box (vbox box1). Remember that # widgets added to a vbox will be packed one on top of the other in # order. box1.pack_start(label, False, False, 0) # Show the label label.show() # Call our make box function - homogeneous = False, spacing = 0, # expand = False, fill = False, padding = 0 box2 = make_box(False, 0, False, False, 0) box1.pack_start(box2, False, False, 0) box2.show() # Call our make box function - homogeneous = False, spacing = 0, # expand = True, fill = False, padding = 0 box2 = make_box(False, 0, True, False, 0) box1.pack_start(box2, False, False, 0) box2.show() # Args are: homogeneous, spacing, expand, fill, padding box2 = make_box(False, 0, True, True, 0) box1.pack_start(box2, False, False, 0) box2.show() # Creates a separator, we'll learn more about these later, # but they are quite simple. separator = gtk.HSeparator() # Pack the separator into the vbox. Remember each of these # widgets is being packed into a vbox, so they'll be stacked # vertically. box1.pack_start(separator, False, True, 5) separator.show() # Create another new label, and show it. label = gtk.Label("HBox(True, 0)") label.set_alignment(0, 0) box1.pack_start(label, False, False, 0) label.show() # Args are: homogeneous, spacing, expand, fill, padding box2 = make_box(True, 0, True, False, 0) box1.pack_start(box2, False, False, 0) box2.show() # Args are: homogeneous, spacing, expand, fill, padding box2 = make_box(True, 0, True, True, 0) box1.pack_start(box2, False, False, 0) box2.show() # Another new separator. separator = gtk.HSeparator() # The last 3 arguments to pack_start are: # expand, fill, padding. box1.pack_start(separator, False, True, 5) separator.show() elif which == 2: # Create a new label, remember box1 is a vbox as created # near the beginning of __init__() label = gtk.Label("HBox(False, 10)") label.set_alignment( 0, 0) box1.pack_start(label, False, False, 0) label.show() # Args are: homogeneous, spacing, expand, fill, padding box2 = make_box(False, 10, True, False, 0) box1.pack_start(box2, False, False, 0) box2.show() # Args are: homogeneous, spacing, expand, fill, padding box2 = make_box(False, 10, True, True, 0) box1.pack_start(box2, False, False, 0) box2.show() separator = gtk.HSeparator() # The last 3 arguments to pack_start are: # expand, fill, padding. box1.pack_start(separator, False, True, 5) separator.show() label = gtk.Label("HBox(False, 0)") label.set_alignment(0, 0) box1.pack_start(label, False, False, 0) label.show() # Args are: homogeneous, spacing, expand, fill, padding box2 = make_box(False, 0, True, False, 10) box1.pack_start(box2, False, False, 0) box2.show() # Args are: homogeneous, spacing, expand, fill, padding box2 = make_box(False, 0, True, True, 10) box1.pack_start(box2, False, False, 0) box2.show() separator = gtk.HSeparator() # The last 3 arguments to pack_start are: # expand, fill, padding. box1.pack_start(separator, False, True, 5) separator.show() elif which == 3: # This demonstrates the ability to use pack_end() to # right justify widgets. First, we create a new box as before. box2 = make_box(False, 0, False, False, 0) # Create the label that will be put at the end. label = gtk.Label("end") # Pack it using pack_end(), so it is put on the right # side of the hbox created in the make_box() call. box2.pack_end(label, False, False, 0) # Show the label. label.show() # Pack box2 into box1 box1.pack_start(box2, False, False, 0) box2.show() # A separator for the bottom. separator = gtk.HSeparator() # This explicitly sets the separator to 400 pixels wide by 5 # pixels high. This is so the hbox we created will also be 400 # pixels wide, and the "end" label will be separated from the # other labels in the hbox. Otherwise, all the widgets in the # hbox would be packed as close together as possible. separator.set_size_request(400, 5) # pack the separator into the vbox (box1) created near the start # of __init__() box1.pack_start(separator, False, True, 5) separator.show() # Create another new hbox.. remember we can use as many as we need! quitbox = gtk.HBox(False, 0) # Our quit button. button = gtk.Button("Quit") # Setup the signal to terminate the program when the button is clicked button.connect("clicked", lambda w: gtk.main_quit()) # Pack the button into the quitbox. # The last 3 arguments to pack_start are: # expand, fill, padding. quitbox.pack_start(button, True, False, 0) # pack the quitbox into the vbox (box1) box1.pack_start(quitbox, False, False, 0) # Pack the vbox (box1) which now contains all our widgets, into the # main window. self.window.add(box1) # And show everything left button.show() quitbox.show() box1.show() # Showing the window last so everything pops up at once. self.window.show() def main(): # And of course, our main loop. gtk.main() # Control returns here when main_quit() is called return 0 if __name__ =="__main__": if len(sys.argv) != 2: sys.stderr.write("usage: packbox.py num, where num is 1, 2, or 3.\n") sys.exit(1) PackBox1(string.atoi(sys.argv[1])) main() ��������������������������������������������������������������������pygtk2tutorial/examples/cellrenderer.py�������������������������������������������������������������0100644�0001172�0000167�00000007736�10110243656�017535� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # vim: ts=4:sw=4:tw=78:nowrap """ Demonstration using editable and activatable CellRenderers """ import pygtk pygtk.require("2.0") import gtk, gobject tasks = { "Buy groceries": "Go to Asda after work", "Do some programming": "Remember to update your software", "Power up systems": "Turn on the client but leave the server", "Watch some tv": "Remember to catch ER" } class GUI_Controller: """ The GUI class is the controller for our application """ def __init__(self): # setup the main window self.root = gtk.Window(type=gtk.WINDOW_TOPLEVEL) self.root.set_title("CellRenderer Example") self.root.connect("destroy", self.destroy_cb) # Get the model and attach it to the view self.mdl = Store.get_model() self.view = Display.make_view( self.mdl ) # Add our view into the main window self.root.add(self.view) self.root.show_all() return def destroy_cb(self, *kw): """ Destroy callback to shutdown the app """ gtk.main_quit() return def run(self): """ run is called to set off the GTK mainloop """ gtk.main() return class InfoModel: """ The model class holds the information we want to display """ def __init__(self): """ Sets up and populates our gtk.TreeStore """ self.tree_store = gtk.TreeStore( gobject.TYPE_STRING, gobject.TYPE_BOOLEAN ) # places the global people data into the list # we form a simple tree. for item in tasks.keys(): parent = self.tree_store.append( None, (item, None) ) self.tree_store.append( parent, (tasks[item],None) ) return def get_model(self): """ Returns the model """ if self.tree_store: return self.tree_store else: return None class DisplayModel: """ Displays the Info_Model model in a view """ def make_view( self, model ): """ Form a view for the Tree Model """ self.view = gtk.TreeView( model ) # setup the text cell renderer and allows these # cells to be edited. self.renderer = gtk.CellRendererText() self.renderer.set_property( 'editable', True ) self.renderer.connect( 'edited', self.col0_edited_cb, model ) # The toggle cellrenderer is setup and we allow it to be # changed (toggled) by the user. self.renderer1 = gtk.CellRendererToggle() self.renderer1.set_property('activatable', True) self.renderer1.connect( 'toggled', self.col1_toggled_cb, model ) # Connect column0 of the display with column 0 in our list model # The renderer will then display whatever is in column 0 of # our model . self.column0 = gtk.TreeViewColumn("Name", self.renderer, text=0) # The columns active state is attached to the second column # in the model. So when the model says True then the button # will show as active e.g on. self.column1 = gtk.TreeViewColumn("Complete", self.renderer1 ) self.column1.add_attribute( self.renderer1, "active", 1) self.view.append_column( self.column0 ) self.view.append_column( self.column1 ) return self.view def col0_edited_cb( self, cell, path, new_text, model ): """ Called when a text cell is edited. It puts the new text in the model so that it is displayed properly. """ print "Change '%s' to '%s'" % (model[path][0], new_text) model[path][0] = new_text return def col1_toggled_cb( self, cell, path, model ): """ Sets the toggled state on the toggle button to true or false. """ model[path][1] = not model[path][1] print "Toggle '%s' to: %s" % (model[path][0], model[path][1],) return if __name__ == '__main__': Store = InfoModel() Display = DisplayModel() myGUI = GUI_Controller() myGUI.run() ����������������������������������pygtk2tutorial/examples/chaos.jpg�������������������������������������������������������������������0100644�0001172�0000167�00000004140�10006075572�016302� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ÿØÿà�JFIF��H�H��ÿí4Photoshop 3.0�8BIMí������H�����H����8BIMó�������������8BIM'����� ��������8BIMõ�����H�/ff��lff�������/ff��¡™š�������2����Z���������5����-��������8BIMø�����p��ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè����ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè����ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè����ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè��8BIM������ÿî�Adobe�d����ÿÛ�„�         ÿÀ��P�P�ÿÄ¢������������ ��������� �s�!1AQa"q2‘¡±B#ÁRÑá3bð$r‚ñ%C4S’¢²csÂ5D'“£³6TdtÃÒâ&ƒ „”EF¤´VÓU(òãóÄÔäôeu…•¥µÅÕåõfv†–¦¶ÆÖæö7GWgw‡—§·Ç×ç÷8HXhxˆ˜¨¸ÈØèø)9IYiy‰™©¹ÉÙéù*:JZjzŠšªºÊÚêú�m�!1AQa"q‘2¡±ðÁÑá#BRbrñ3$4C‚’S%¢c²ÂsÒ5âDƒT“ &6E'dtU7ò£³Ã()Óã󄔤´ÄÔäôeu…•¥µÅÕåõFVfv†–¦¶ÆÖæöGWgw‡—§·Ç×ç÷8HXhxˆ˜¨¸ÈØèø9IYiy‰™©¹ÉÙéù*:JZjzŠšªºÊÚêúÿÝ�� ÿÚ� ��?�*òïžî!p’9Û6@óh!žÚ~c* ¥IÀ`{ß2G©[TðÆ*JT5•¶Œ¬câñÉ‹J/5 «†%ØÓÃJ†V5‡¡y7Z¶µ·ä”Î6Ì]&³gs Zƒ\«„†Vóÿ�6iL’•ËàX–j’]XNJ1�e²‡ÿÐæW0˵ZŠÍ-HÍ2ây&U$ÓUšYÞˆ¢XÁ©ðˢĢ–òÀÈE|0Úë+¯íKF¿‘2ZK®4[¨Éø6´‡+yn*Ãj©™î-þlvUy<·(T¾çX¾»¬ë‘Pÿ�ÿуÎ`¹RTŠœÎ;´¬°·hä­0)œ·él”]ä92iQZ Þ£v¥ªTœ^ÛåÝ.ÖÂÅ}@*FBFÒ9í­çé§0Z¥z–‡lÈG�HIiç>gòÄ¿C±²Æ/>½—SÓå!«A$„Òû2 zûâ&´ÿ�ÿÒåÚj¡¿t ̽Ø&1mE žKL4í6îâeiA$á^£å]-m‘Š™bË&½? ×a¤§:lÑ” Nç C …Ö/#ÅOÄrP%Žßñ>#¹Ë¯hÌU ’"ÐómWC0ÊL{oÓ)”Yÿ�ÿÓ©èYØ€i]†l)¥ˆ[j“•sQ\…«-Ñoì}EA^ù Pô :{Fˆpq*ÕÅÏï*L4¨y¼Ð¶‹Nt8)6Ü¿×hìÕÂÉ$<“Uj)2‚¤žÙ$$ßá©î‰v]A€²ÿÔ—k¶Ë%´‘S¨#61h/×´«‹k§` *NW8ÒB]¡$F„‘Lˆ)Nôï8]ZG$xW&&ŠN_óZ4øÈë‡i¦Oy¬Þ†5ôë\iz™§ˆ•W$†cc¦¬¶´Y)¤Ï–d’Zñ¨É ¢•ˆmÓu¦<kOÿÕ8ÔüÇ�üB™³œv/ª^é·dò"§¾$…c³yzÚé¿q ä{ ¬ÀV¦<«9øFGÃ[M4ŸÊÝBIU® ¸Ç‚–Þ‹¤ùrÏL…c‰.í’TϊǾGiÞe¶´!$p|¦Ù y«J1òæµÈpÚMªù¦ÕÁ ™8ãE¿ÿÖç7šýĕܿa›U%’jr±?Èñ&•ôf[kèä,J‚*0‰ ‡¾y[UÓ/ìãeeæ@¨÷Ë- âN5^™C°ªëN»”0Ú±-AÕ"S"“^»d´1µ=fÌ•rÔ7 HI¼ÙyJ195§ÿ×VçòzFŒ”]þYéi݆ë–º›1’¶ñ1y´+Ø^{dxVÙ'•S·ºQ˜ ôÉ€‚^é¥<hž¦íLS㌚W|Rˆ0…^•Áj€¼1+"‚ކ'©i:uÓà*rÐÅ#?— s)â¿ é‘4—ÿÐíN¯g2€H#2¥ÁFÞézmäfª¦¹"žyæ¿*éðÕÖ1_–_ [î‹ Gõ±'(É• ÂKÈlá½F’Ǜ̓ ªjäøQlßË—Ÿ¤mA#qß)˜¦@®Ö´§³(ÆRq¨ÝMgtyT�s 5§z'š­‰ äÈ$ÿÙ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/menu.py���������������������������������������������������������������������0100644�0001172�0000167�00000006642�10227353425�016033� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example menu.py import pygtk pygtk.require('2.0') import gtk class MenuExample: def __init__(self): # create a new window window = gtk.Window(gtk.WINDOW_TOPLEVEL) window.set_size_request(200, 100) window.set_title("GTK Menu Test") window.connect("delete_event", lambda w,e: gtk.main_quit()) # Init the menu-widget, and remember -- never # show() the menu widget!! # This is the menu that holds the menu items, the one that # will pop up when you click on the "Root Menu" in the app menu = gtk.Menu() # Next we make a little loop that makes three menu-entries for # "test-menu". Notice the call to gtk_menu_append. Here we are # adding a list of menu items to our menu. Normally, we'd also # catch the "clicked" signal on each of the menu items and setup a # callback for it, but it's omitted here to save space. for i in range(3): # Copy the names to the buf. buf = "Test-undermenu - %d" % i # Create a new menu-item with a name... menu_items = gtk.MenuItem(buf) # ...and add it to the menu. menu.append(menu_items) # Do something interesting when the menuitem is selected menu_items.connect("activate", self.menuitem_response, buf) # Show the widget menu_items.show() # This is the root menu, and will be the label # displayed on the menu bar. There won't be a signal handler attached, # as it only pops up the rest of the menu when pressed. root_menu = gtk.MenuItem("Root Menu") root_menu.show() # Now we specify that we want our newly created "menu" to be the # menu for the "root menu" root_menu.set_submenu(menu) # A vbox to put a menu and a button in: vbox = gtk.VBox(False, 0) window.add(vbox) vbox.show() # Create a menu-bar to hold the menus and add it to our main window menu_bar = gtk.MenuBar() vbox.pack_start(menu_bar, False, False, 2) menu_bar.show() # Create a button to which to attach menu as a popup button = gtk.Button("press me") button.connect_object("event", self.button_press, menu) vbox.pack_end(button, True, True, 2) button.show() # And finally we append the menu-item to the menu-bar -- this is the # "root" menu-item I have been raving about =) menu_bar.append (root_menu) # always display the window as the last step so it all splashes on # the screen at once. window.show() # Respond to a button-press by posting a menu passed in as widget. # # Note that the "widget" argument is the menu being posted, NOT # the button that was pressed. def button_press(self, widget, event): if event.type == gtk.gdk.BUTTON_PRESS: widget.popup(None, None, None, event.button, event.time) # Tell calling code that we have handled this event the buck # stops here. return True # Tell calling code that we have not handled this event pass it on. return False # Print a string when a menu item is selected def menuitem_response(self, widget, string): print "%s" % string def main(): gtk.main() return 0 if __name__ == "__main__": MenuExample() main() ����������������������������������������������������������������������������������������������pygtk2tutorial/examples/goalie.gif������������������������������������������������������������������0100644�0001172�0000167�00000050736�10006075574�016450� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89až�f�Õ �ÿÿÿ™ÌÿÝÝÝÌ�����»»»333™��ˆ��Ìf3f™ÿfÌÿ™™ÿÌ™fÿ��ÿÌÌÿ™™ˆˆˆ™f3™33f��Ìÿÿffff™™ÌÌÿ™ÿÿ™™™Ì™ÌfÿÿÿÌÿ™ÌÌÿ™ÌÌ™™f3�ÌffÌ™ÿÿÌ™ÌÌÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!ÿ NETSCAPE2.0���!þ3Copyright 1997, Totally Hip Software Inc. Hip Clips�!ù ���,����ž�f�Eû@€pH,ȤrÉl:ŸÐ¨tJ­Z¯Ø¬Vˆ8��P ‡ ‚Z¬&Ñê´›M^§Ûö2~®‹ïrfeb�`[ŠP]_B„aCa„–c—•›cœ˜‘¢£†ˆ‹¨M˜­ž” °¡“œ¡¸¸žŸµ¤¦‰©ÂG«¢–•°žjeBÍ�™‘™²´®É¯Õ¥‡ÁÊÍDÅèêëìëèËmíóê��’’»±ú¾›ÀÀ "¡ArÍ `7„�º…ô"@g ÀÃâ2˜` cŒÍ:&³u-à@« \¸@„0c~œ@@â<trêÜû ³£O |vÜI”èÊ&Oæ\À �S§ ˆZT§T« @�°´)S©/eÊœ0 ‚Ù5 D pVLÚÑQiàêR§9@…jw§Þ§€s>Ð@oÕR¯þõê5g’Â: ãm*Ù*ƒ ÿ]ÌÁf PРiÓ¤6€‚k êRH+FœO¼w _¥Ú4ªï©zƒ;U�ဠªûæå Yø• �0�¨€ºT_ƒg/l;4Úi§‰€aÞÒ§QãžšVÃ÷ðhèvüÍW/U»Û±GÕ¾_çÉ+ ZBD0EFéi¤`3¨Ýó߃F(á„Ktá…Mûf¨á†^x …ЬÂO5˜èaG&q°AR/ÔX3‡5lèaŒ.Iˆ…ˆ£ÄÂÏH9jÒ¢6·ô².°Ôh£8ÊRK+ʨÑFò (£lRÑ$´pƒ‰‘G*‘‘8"#ÊCd¾ãä“BÈ#IØø#%/UþâM—T”&A1¥Ñ¢mȧCzÚsÏ:Ay$–&ÜÀYÈœt"év–X0ÑÔŒV6¡³Òj¬’F ØŒL:mꤋr~áa¬æ´Új;iAQ“Rš@¨j˜%`xn­!ßaVõk­ÊÚ걇)Ñ\QʱJÌJÕNTÕJ騑ÁU ”y�l²û в‡%FÔW”e5Ø^Íêv.cO)QA@€y¾¡»�S dÁõpsò9Ó+d¢—ÞAúU{h¤…†âɇûùpv›WXÛ‡]qô—oȆ5J@G8±p(„_¬°A)ÀÀ�CœQAh€ö ÑA£²e–YXܼ ÒPG-õÔTWmõÕXgш:tíõ×`‡-öØd—mvÙê0šuxRræؤ!·1žÝrÛAJgîÃ…Úkóh›TêèæŠt¢¥›Dþƒ%—aÎâ…ǽÍ1×,ޣ߉^Sà‘—3¸•+9‹ç— ûêyŽ· è¡s1øæÃb<DLcå’®¯®8¸@ºˆ<RƒÍ2JLä‹A1¢”ñ"|ä“cÉ&™ðô;=<²®úóºD2=Ò ‚9:5dîy@öÏH“aûÖgy:峌Oµ²IúêC”©ží>Ô‘9*)ÊGa°ßÕì¤?f” €êÐCjS€„ÄåSt)”¡À8D%v±ë‚�%© ˜ð„(”à`$� f$T¡ùHwRt%}(kÄ+µÄB–|jAaa( å0G±Ã ¯¶ ¢ìp,,¢Ft%”Ã|ʈ WQ ¢)B‹`Ôʺhe«JÑ6ûà•Ëz¹¬ìˆ`ŒcNŠC9ë{ŒeÈe@ ³ÒccðĘ`Kz2Kr"1¸Äå[q¡ ›™ÉàF/td%ï2,wá:¬QŒN`U”Þø+ÂáK!+u Àf/MyMl 7¾1‹‡!eQ20•§0†*Ä1Žu¢T0¾i_ò•®ÅHex@Ú#½¬�ÓÓÍZ©ŸÎ`ç5®‘X¯j#Éæ` •ú²Og<VMtõ+ZLYg3›óT^D°ÏňC²ÌøóŸ™‰æ5�³?Ðæ5ÛDMŒ—¹G ùŽ�äc€€Â8ŽF1M€züÔŸZ¹˜g0F¡ d`:^ŒÌ@E2Nµè§ž H¨A$PtA¬W‹|öS3Ïä«0<õL�Ž0¯z­¢X£ÄÔ…Òhd¦RDÐA¾;¢VAAQ4˜Ì¦°Í¨þL䨪XÇJÖ²šõ¬hM«Z×ÊV)tÍ ˆ«\çJ׺Úõ®xÍ«^ñŠˆoÕBð–`KØÂúϰˆ5ì!T5Ö­±boÄ,ÐP‡AÈHt¨ƒâ`Al¶ ÅÐô‹ ùµªm‹‘({†ºÑ†—­[Šñ<¸Vn ÿÆX±VO&²í¬á¤ÊÂÖnu«,q+\=Œh K´ñhZ<ûœ*uËcáüj[\4ÁHbˆnÕRë=-eŽàÝEøþA¹ÞyB¼T#oáv§â‘¨Eîå\ãÌËÛÓ†ðQà#昄ŒÄ©Ns?à;5sœNHüõâ\ñ&úVsmb°Ô<‹ ³—M,,p{Á›_k8jxBïîw»G©våýŒK¼¨Þ¢vvŠâ¯4´7„#.QÍ ’…!|b¨MÎqb²ûД¦cx~Ô\øŠŒ´$%yE¤@ž8  ݉øJC†rêœ*ÿov¦'–ܾ4±FBÖ‡ûñ¦PP9BÑ0Ÿþ ç Á²ÏöpsD²Ñ:'zwþU‹û&]”‰ ¤¦5uØÃ´Ûo™³vEç ²x†Ì„¦JKĬ5uãŠDã™�‘Üùòä¿ ½£Å t=J'¿ÂÕÂŽøGQÛš„¡`¾\ ùÀž‡&p"ô:šq�ð�ŸÚ Oâ$s#Ú²+*è†ˆÃØÚ^áœq‘�†3y‰ñjmo„ à:ìo QdL.|ḱˆªÿÚßÔóB¤$UÆ™ÈÊÖÝN‘¾‘ŸŒêV/1 AŒn ÃN«œ — «–»¼T,ɉ ‰XÄ*å(Æ+ù„ˆW€‚¤üV Q‚“û„Ø FшÈÂù¦ËºŠ˜·äç–âP°¬ø,Êñ:/ÂG·Îu €£_hÚ0YA=<kéŽPÚ2Ñ[º\V=ÊÛçþö˜b��%€` ë€�íX¬âTåìgL#ÚÅS±[^Že<«¦ƒɳ*“‡¯ø­"`P´¬…ñh™ˆocyda¾ôDü´ò¸žc]šPÍz�u ¬ciSZÌòHØŒ‹ZÂBŒ_€¿u’ð°*~ÓËR"«)(Îð3Ê@}¦ÆŽ€NÎòHHÊÆñDÉ€.{Ã,ÆÀò*tÜ@ócĘ/Ë¥«ˆÕúr‘ì+Ãüüéõ±¿^B†L®QKàBQwFäWI¡þ¢K¬Ñ~wñèâHÐ~Ü2JPE�ë‚1@Õ|HH(‚'”4å.û’Mß.rANà7¸1,ÊA}ÈôÐr|½”|ÄÂËÂÑ»±/{7,½tJÕTM:Q0¢F ƒöáK((0Nm÷Fóå.âgç´,ü2Ðr/ ~Y({!zÑELéLA„£CQã¢&S¡1_qSâ´FSØ p@õRú(ãøòRB‚ÇL€TÀwÕ!üb×$Cw²âO凯ûx(�õjQ�•"Ñx>Pðb„Q™€Qþ‰Å-B50(³]4'µ<ŒÂŒŸÈRâáR1µ„3å0sS.31¾rKÃ(Œüò1ÓxÁ¸�Ô‘Ry1ta0~xŒ0R@5ŠÂÁÎØ°F+#—¨‹¾$RØèV#^ôC35óú!SÍÀ/<ãŒâVi÷FÌÈ3ø²�€EЋduK5ŽN²U”—‘CP ƒ aµr Ò tÑVO vY…FR4R…3^kS•g$Y’B#*C ’ -é’“Q â+WÐU-É“VVF©VA��!ù ���,�� �ž�Z�Eû@€pH,È!1p8ŸÐ¨tJ­Z¯ÖÁ2Éíz¿à"Ó�ÌCAPh¯ ‚3<w³Ýsuž®·ùjfxlgBggZaŽFc†h‡†q–ˆ‚‚ˆ|›˜ —hš£•˜›‡iŠŒ­®]’i—”š§¦g„Eµ²i–¾À¨¶«e¯ÇÊD’¢Ÿ½¤ÔÔ¹ºBÛÜݦÂÑ·©fÅÈæ® d¢¤�ÕÝòñóòÕÜ�Ê�Ü &GðÔ¥rç>r Ý:J”8¡½‹Ü¨¸À‘c€ËBN0@rYÀ B¨°Èƒ—0cÊœ9S�†8dn#ûó�‚ÏŸ'Nœ@À@È$“]!‚R?£þøTªUV ‰ C� rÒ;sÈÀ@íÚ·hßÊ•‹ÖÖnÓÂU» ¨PÔ­ÛöG@·j#´‰°­zøŠ!.\¶sÓ¢=«™­[¬6xÎüVæ·œ9wFR¡C… �(PÐV6ZÓlœ} ÁöÓ³eÿf°,)?ôqs(¸¹ݵåR˜>]ñÅqŠ`�ýwnà´‡ë¦Ý{��´]Ïá¬ÚÙ·´ô‚�ì!Ú \oCÒzœÜ‘7g³1×Ü2³A7žb,#Áƒ†Á‘ßxmaPß}ûCÀ†á|†¡LS šc`GùÓá‰(6Ó„”àˆA…Ü±Æ fÌÈBüÁFŽ;ÊX#˜À�c°’bб ãN) T¢ä,ÂôË’½()KGž R‚sK-€tÒd8ÈƒŠ“˜`™%‡ ‰ÉI'©@ À5ʬ!„?p¥AKBC%9‹³æ9^ÙD`V9 5AvÍÚ4ÊÏq¶ðg&š¨9¨BL8$A&>â·LÊ0*i7ÕÈq\5 •hÀH$”Ò3€¹iKΨá‘~ý•ÀñpQ¢2¤½Õ*¬Æ€Rsq4‡¦(+í´o6m¯Uv†9e”ûü·_(“µè’fmºì®•„i›­•àV,�=Ù¦om´É;lrŒèœ^ äµuðdåšK’¼òÆe°^§¶^�ÐÛ^–©Wmñ™‰†Cd ÞZ ¦¬òlùwIâ^÷[ÍÕütÂ1Àà$í'€Ã$©|x+½r\·:‚ÔRLýA+!Õ<ì°êH0lÒX+±“>\wíõ×`› YØd“½ˆ­Y#“$mÇ!s¸QÇlïȶ‹rRÇ{Ç}ÉtŸmÚ­ä ÎßC´·˜Œ‡ £˜„´Íãá– NøB‡# -r>ɤJ›ïIK0`^èåælû鎥—ŽYŠžžTúËž²™æé¨“¤ç¡´nŠ×Á‹—rÚþ ë�Xž;[N9Jï– ¼Ønæã¯£™<îËžùçnž9ú£v/çΣßå8ÊwßÏQ*¶3»•fp}ùCD*éÛ¢ÓNûî+‚§TG9xˆíT”Çûþ1�i¼Žu·C[�Áà©ÏÕÈNC@5ò‘@È”ê�¤b@´C•Xª�œ`$UAL ä…0D ©ê‘@j�‚­²ò”7EPP*dÞ÷â^ù 0!TÆU~r+‡Ê@VH–•gyb{ "$qÌ`K(DYF!Ã.*ÅŒû“ÖRØ’v±Ë'Ö‡R’ÅxK) W„²#™É¸‘]=ÙØ§eŸ#¬%:XºÜ²yŒb£™#EâŸJF€-MרFËÈÅ`³fÜ‚–u ò4C‹IJTNŒ4 ÀÊÜ#ŽåE’€q£p£ští1Ž€vØ…Oš&5µä'YËŽyf3[�š9Ï,À+ªñ oj n¾¥e�ÀtV3çpf™ÔY˜c¸5! l=•A €ãMµ%c�8KeâùÈc޲–ø î3´ß¼çž¼Y"вmµaœ\˜`$ð’Ø ,ØY„à�®9�ü X¨�À’ÂD¡pÔ˜y‚)�(J£²¢„ä=ÛÏuXʶH´jššl4¡þH¨`é9)d4{i1 KcJÌàð4!ÜgC…´s¢¶Ž©¥j|ÔÎSç£mëóêQdµeŒUK;£\çJ×yœ ˆoMB‘´°„¾úõ¯€ ¬`KØÂ6®xÍë ɰ À©Aw‹‘„¤·AäÁ—ue-{·96ÜSìÖÖ"¹µm̓ŸäƇÂÀ‰m…цd6>•!­C„çZÕrÉO«l˜§94ÙV‹Íû„™ÄW»7A£LUrš¨$Šãû‘´é— »×ª{ß*¬«Âæ…£O¿Ýîy}W@èú…¡­U<õyŽwŒ£_¥´ £ÿÅW¾Zc,¿‘¨÷ÂN½v/z¡DÞ ¶ Nzb®q¼ #x}Ú;\ñj•X�'ï{ú½ì¬#¹üx\ðüÀ6=µæùJœíÃO(fÒJþëaø¿²ËÆÜú>fTy”Èð—HG$»cð,fŒÁllÃÆ¡kïÌÄâ´™(Àˆ‚n”½t�ò§V¾ˆ˜é§äL9Y…!™¯üb %M€NCNs£‚œÝö69‹AdFœ %àØéxQDÕ£ò‡û@Rc‡®î›ŸªŒu|¸Ðþ3à>$e wÍ ¼±x-ØeÔyоÏ ëš°M{C„Wž.åÆTêÜ °€«nb¢/²A®…0ã_B7ÞI+ÄÔÏJ”£ æÃÕ§ªF?BX�V%VJÈsQëÜÁSbZõ”ñ³]7JÚr°¶“í„£Û¨‹¸€Ë“<[®6ÄÃF (ã´ÛaR‚÷åÚä©zÿJ‰>é 5º8~G±$&‘ˆkA!pÂåJé08°ì¤V\EZP”¢2ÐèGgå¡âi“ÄF¾çzH V ýýÒ8 åY“i4Þq1¢j�5¹Iû‚>-h‘¬C§üXf~R,çŽOyJ&ùx.i=E5Ë\ºONIÈ.p]Zp¤x£l«)x$�ˆ|¶ìª]]|;ibÞ‹y앨ù$Æ ›ºƒ¬/dÿ•t!%†íŒQÐ(vLhâ½ñu_KÜEY,¾ Ìï+B"E™ÍiÍ ØnâuHW­ý[2IÕÄSã1ì¼´üIzÓ˜23x¯X\x)Ÿ™Òs.¹ÏÌm2ÖDÒ`¦¯Ú¦ sMʬ%“cSØ&ûØ.Ëòb¶Ï2çÂûëU•«¤¦[ì•õË0`›ªù½{F@€º%6ÛfÜY}L‡aÀüš™)­ <s” À/X!�µ$œçx 0Möb/ý„{ °¼qLÇæáà$NÔðSëÀL0 L¯VIñŠ2Ï´TÞô¸w‡€AUO½÷ßç!ƒô� ÂMôd ‚Û0(¸ƒÃ5Ó!.$h�óT€6è `Þу6¨�$g!…7Ò­ñB0OØC3ÀÑÝäƒ@ã2ÿ‚ú0„ð1µ¤Qþ±GË&á îÑRh( ÒRº!K}¸bˆÈàD�/ã¡� E/ÑP<³-éDø2„�p^±A‡�3ìÔGø2RÈ#u‰¤xŽ(>ÁT´‘"°q!åN93…{¨l¸QF%3ÇtCèµATþ¡TG{8y1ŒÝÁ…}è.¨S&†C°úç4Þ3ª‡}ÑH�„¸RDE°G6•äAˆ¾"c_ˆUZ”>Ãzÿ!raŽ8"!q3,35`Ž�×5eµ ©g\¥=G�`å*ЮU7å4 YirU? ™U VyPUèPNy‘ Ùlõ)!)A��!ù ���,�� �ž�X�Eû@€pH,È!1p8ŸÐ¨tJ­Z¯ÖÁ2Éíz¿à"Ó�ÌCAPh¯ ‚3<w³Ýsuž®·ùjfxlgBggZaŽFc†h‡†q–ˆ‚‚ˆ|›˜ —hš£•˜›‡iŠŒ­®]’i—”škI§tœ¥–i¾À¨º”«e¯ÇGÊË_’¢ÐÐÓÔ¶vBÕÜÝ©¤³à¥â¦ÅÈè` bMn%šÕÑÞöÓÐÑÌÔ Ë $P௃ÂKÇÐѺJœ8p²‹\.qÁMÿ.N(x1AARvühÔ†EÈœI³¦M›0ÄÁûPsZDŠG`¡(ÉeE#ÌQGYAP£JJµjÕ«ÔÄ„!�<oе9dƒ� `V­Û³nãÆ=ëƒmü*q;vê©eËVm´(XC¬ø€Ó‚rd€ûvmd³hÏb.À.„ kóFV`Ù-fÌ™ ©Ð¡B�((<;ö`feB�0àÐ9X&žøáßãHã&¼\i p”ÀTÀc 2(g°|iîÊg{ç>¾;÷� � l–ƒÙ´²Ï’†™±÷EêDÝÊž½?¾ÿ‡¦Ñ€Ê�uÔx²·��ð¯MHß…ûGŒ¡%x¢K!w¬1ˆ"r‡°¢Š!’H&p¢P¬`hã;d�ó¡&ô"Ì0ÁT"d8ä˜RÎK7&Ë.CÊ¢ 6Dä‰'TYN8å ™È"Æ$©d“ŒJ(`#ãÛx3f0@ö²¦•Hz ÉCî Ëa÷äÉ žôL��PƒÊ mb �qʉˆ61Á£F:A=zv ú„DàHt’'¼ ™¨¢ 1±_ LJ }p’‘Åe’o³Bkd)Í1ª·öê«[žé…j_íL‡suD VQµbôöë´ÔKíµj%ñZjåÅ€v¾ûðÀn³õf�PZÜqìJÀ™mÜ.îa‰;‡´suÛ-\¢q«ïi„u&Àno¡Æ-\…Ég$‘Ázjíw]pÑE0~KÉ[ Çn;ÞyçŸÎAG]@mhݹqì²Yá¹,³Ëp‘ÚŪÊäÁ+ÿ…óEmóÐÇ0ÑÄaH'­ôÒLKƒOÓPG½HD3 'mÇ!sx4Ho`Ý¡…|T¶×[»è“»VíŠ3W^rˉcw2&¦LòøQÖY¯¨ã,m» ÉÕ‡fÙæ<NYøßN¦¢£˜B.¸#KŠ’7-'>‹Ý=:®%B»$¾‰ä“‡q5⟜ûaæÜhŽó£ë;º)Êë‘sY::Kþ¢7"Øä<„2�X0¥˜‹[θ• #jûíF`äáÄÀç5x°žfž¡4^$›UBºàËÔ™„3Bðy4f_© ¾Sòùñï ðýíŒFr´ùÞ°>>(ý  Õ˜È8Œ7_ÌyB¨_£ !h„Rû[ '†â4M]Ä�œHª"Ò^$î€$p*¾LJÔ°ŠT¨‘qXp\FE8ˆ)âí„!ƒJ”:-‚lˆKJd¥Œ ú†�µ‚U¬T²‡ÚQ-‡0Õ°*B‹Mì\dVS`«XIäUØ’ËpˆŽ0VË.û< Qþ ”¤(Yø9–5(p3Ú1�ã"Øo%¡# &/ëW¯Ú²¥%ñ `œ¦eÉ…YÏ‚V4èØÅÊ\&.¢!MeÚrkÝ‘2œTMÒ¢™Á”Æ_¾Z€]ðÞ\]óêr₳d bó‚FbžE-r1 úÂÖY(c›ÓØF7Ä4å¶ô°÷h† ¶&'ð ÔüQ7±1×oâËÃÈò/ɱÍw6£“Á±:øR˜jéÌɘÊgl`ÆœÁ–ß*¥ÂHÉ­ù„Á+˜ÌB›zêfbÛÄX@Îù€ �*ßÌX>PÎ¥üÁ�*»ŽM ð¨ÈüD�àCHg¢Bì<¼€ ôw×±(uÎÉŸyr‡<Ü‘åEÌ–x. ’�áЛ‘'¥›Á fæ(á‚X\F³$¤“×<Ì5„.®ŸqµüÀH„œJÖGôŒ@eMk£hÁ¶ºõ­÷˜Z—Ôú<¶.á®xÍ«^÷Ê×¾úõ¯Æòè 0m"ljÐø&ža±wX,cë µ© l–UQ‰”÷DÂfȰƒêPÖ6£ÐÙÍk’5-Öû¡?œédt*ùˆˆµaŠ%¬µ›/¨ä‰=�‚o»Õ`=k'ÊKÚ£ÅÝR—Ñ )~CCl¡H¸ÙûÑ΃=jIöNA;çîHÃ%®ýr¤97isŸØžw g<äibº9œíw•›‰¿eWµ×¯uußVîq ž<`+-7vÈU¯‘ ^ñ|Ù &VW)!®sMJž}Ü_ž®P•X]ßдÝa$¸¼ÍåžçêàƒIs&6ƒ-þ<*˜Ë)¥Û»·Ã̃[}A¥ºê±N}Ôà‘sì¹3éG@ÆPëš#æv¢«ÊŸ´¡'íÊ.½¨Kp”aâ<*—¡sHÛSïÖ�($WêÉ;êw™üÞßPeß‹?K¥ËûãÇ—=?ÃYÊh–Ôûg{ Àmݲ±lÞò~èÐ6R Žf¸î ‚Ò q üô>B%¯G˜¾‘¦#w?~Ú­Žéß>Dí‚ð…¾¯+\ª“¤i&„u@CàÇ÷ A„u þH@N"·i×^ª\ý 6ZO-…4^C[k* „ް -':IqŠ'|k4$Ìí"’d ½1qñ8ËâÓ ‘}¾£âUDEÀ[»9U’‰ÔíC© ·ÍÖïŠü†yz*ÀĨĂ1TF•¨–ŠûvÜvnñ¹‡åCn¬ÊR¿úâIF_å* 'ÕÈQe‘¨*Ûæ1ÊIz¥©›1W1WÔÌûMè›”YlåY´×+)—–ï1�£j†>iJ¹@¥á©JhuŒ•m½� ã/9nFÔ$32Qy:» öXyXŸ€€±ºeâαhxù˜¶W+~— ö•šV¾ë’¦é `#,t/r,»~˜ö§I2ÖÀMZÚB€ ²˜š)%¡¯Tú«ó¡÷W¬©IÂOË[¨�ÁHwpÖCYš@Ò£ËhõýZŸØÁNß™q òø¨ÑdZVO¹?2ò±çn C�IYÿQíÒ_âC�â<M1‹ûØ÷¸yçŒ4Á2¦\”oþÌ`æð± ç-«abÓ,ÚLü×�s€ˆ‚Ì2…±ÞÇKèTG·rvqqKz´aPzjÁ£I¡gÐÔz­ÇO­g °ºAÚÔÝ4 àîÂúdJÄAçt/¿Hð2M�èLkO§�¸¤$H¨ñôOÎDƒ>U…ô�¸‚ÅHc‚Û±(ˆUwå‚¶¢ðƒìñ(èòd RÐç×…˜±RaÀX�Âl3ˆ„Çr14ÅL3ËQ(�(£t£T=ÅÝ¡R=µ1vØS¸±Jƒ˜…ƒ(J¯ÐDðJ…ƒ«ÄEqQc/K�<!.<a‚#�ŸQÉ!¥‰%cQÓq R!… #RšøŠ:1~IòâR.æbQ°PDAMÑ$Œ¸QÊçyA“2Duã~ã„Jï¡ÕhS\˜-·S�UH‰ÑÑ 8Å…â¸�£á„8.سaˆ7%´þThh!ä9ÇF¹h«§ >Óoìøk¡}4Ðb^À*•˜‰­P ]Õo‰ÖÁ6òFI±3Ç Sý†‘­€ô4B’`�!ù ���,�� �ž�X�Eû@€pH,È!1p8ŸÐ¨tJ­Z¯ÖÁ2Éíz¿à"Ó�ÌCAPh¯ ‚3<w³Ýsuž®·ùjfxlgBggZaŽFc†h‡†q–ˆ‚‚ˆ|›˜ —hš£•˜›‡iŠŒ­®]’i—”š§¦k»B»�µ²i–ÃŨ¶«e¯ÌŽ¿¾¿B’¢ŸÂ×ÚÛÚ¹mCÜãÜÑÈ¥¤§—ÊÍîÌ ©šÐ¾B×»×äÿÝ® `Ž ¶ø H Pa‚‡ÇØ-Zö®¢£i£äMxȱãà Ö�ÀG‚É“ \X¹2€K„¾&4ôŰ¡@£ÚY4ûò §ÏŸ@ƒ€! ÚÈ<@ir£G2 Ή@Õæ.ª¦ÎÙթׯ`!<X5�(& 0x8*´mÐ! Xà’]—xåâÝ»W®±îÎÍKw ˆ+N<¯±„l.ïÆv€…×,cæÚ¯\½{ãΕ+Ú®K±60ͯ‚Õ¡Ië¤B‡ �P ÀtïÝuÄí a·Ý×¼wûšùG€æ,K_ @^ãëôïUUœ¬ dÃÙÀñÕÉyg ¼·p»ì€x��~\qéª¾Ó �¹ BЈoî%øÞn¯±'4ב$á< ”ûíÙ…Á‘[‡ý…IZP‚G ërǃ˜Áb wèúи¢‹D`!‡ŒÁŠˆ@ŠÑÄ2ëˆ" (• Sä1©4YJ:O. €NAV9åœ8I‹‘™�•Dƒä‘ÝÂä–SNdåN¼Q'pvbO1ÞàAÐHBˆ1)Î’%”P¹æNÖI€e-cbТ�):žÛðÉ%'š:hÓ‡SOq4þ0JŽ@ÂÀD’L>´ÜMZZz©EÓ¨ÑR�œvšÀ§’4N66ÐÚ^¦ÖÔYk+Íáj¿&«lk¨-[k§P8@_R‹UP…Yf¬ºì·¿û6 î¸{%Ñà`è®–Ákʰ”qðúÆÀªD£–Y‡… h‡×½”YFíVœI6_‚&›hPa Ñ¥—ir!�$‘A}.!èñÇå=÷]á8‚Ôy€¾ûPq\êu7‡B8P½ ¡ßÇ<÷Œ ^¯B’ë.yDÀ Ëó MÐL‡ÁD”E-õÔTWê¶Vgõ"?6ýN,œ€³ã%s¸QÇt¼ö‰rRÇo—M6Ír¬×®ÄÑÜ2®˜¥”BÇœiÛN{[r7Þ€=æ™~î}$NêDŽJ’}¢²8ãj¤”éiÁè¤n -Æ`ûþ¸Ÿ›sî4–’WC8ßð:‘“‰Ž’J¨é:<‡ƒ¨œKâ‚Çááhe”¹/yš]ÿÎÅÒnÂ>üŸ§TýÍÑèɨðªãd%­KoÄ.ô\Iê{;Êè5¤{/ê�^:šf”o>…–!¥�îU�Ũ�ÛV§· ýíïcÐÔ&x^€*óÛ6 ±k˜ ¨Zˆ©Â%>PHdD¡žõ\$ƒ\>Ѥ#q„ O¨륅P 9ð-ŽôŠ�ÂRKö ßñðud¸@k€Ø‘€d½Ê¢°E +Y½"×vør™Ñ$ûP=%­|§�XqÉxl&ÌP <f×R–ÇoèuIXÄÈu— 8LbébÍ?â ŠG0vÁÖ*ƒµ;~/ÚÑ»ê‚.¹ˆ«œŒ '€È»|“àZ€XàÒ4ô"Àe�†´ëH€]¢AÀ*slP ‹^TÈ·NéšÑ æ5ÄM^€3HøŒF4 à3WcÊ~¡%—Ô$pc1Ä:»¤L-£Ì½ÈÌd¦BúŸ D ÝÜ&ÌìÒ0�ÄÅîLÅôyÌ‹…!-̨£z',!“ÊÀ  j‰'(ã¤HÔRyg¡Î!XWV)€ðüÁ£> ¶3äÇJ¨@@‰àÑK+âqhÞ“ö8se؆`€¡Q(ÞZ{¨ÃŸáå‰Ó[>ÌDŒêHÐ!¥ù‚Bø@ªV!®vu«|×`HÖ²šu~\£X¹à#-,á­p«\çJ׺Úõ®vMJôÖ:¢êˆFjÐCáT´£¹my0\Ú ñù¡p0R›ÈWúp'Ç,û·Pôu«g‡†Æ‚Is”­, '>P<V†‰i=›ÃÃÂÖFëQjUÛC¿£r©ÛRœd—9R$)|¡Kyè8jð®K¡qñW\Iû‰ïË=a,ȤŽ[löËq7;ad7¬CÊþ”¤^âÉV½Öírµ[ÞªÏÍãœì1:äÃÕͯ)ÌÔÀúòöMrÂêÔQ;‘„É~âÓ’¤ò{Þýí¹À&rÁ dIÀÎp’*l¾7iø»³ÅöîÔ‹_ˆÉ¸§Û/y•?«Voží™Âq<çéQ§ËQ„¿»73zÒ¸ì˜þg†¨5ØÇò¢ŸÄ^æ5q¯O$Iõ|Û§%GmW NÞüX$;K86Fª/êq_"/IˆÜ€Ÿ¢¼¨‘ˆ„óµ}±¼ÖþyN¶¥€óY÷Ä åE‰Æ)22ç åûW= : |߯6Uj‡Cn-šù¬Z º×¿–†4¨ÈÊ 0«2¢C¦\ E»Ž ššÅi§J´~D:ƒTƒA<(!„ð#y®«9'‰Xoj1‹È£ÿqLð:W¿N"«N7lÆmWS‹¼UÎÚìÓpVܰ°:è©Õ¾Iö-�ä!lO  »é®Ї6¬„†á·Mœ»és£Áqh·­<¥¨¤’DŠÉ‚Im˜D³¸Úx‹•Vânh”õäÈ—båâ^“„J׫×GôEUl²,U_’X(�È›&‰_¹›@mX¹U‚tZèå lͱû2&¢ OŒY&IVÅ¡3,z±çtÌJtðø­\–é| ú¯¼ ue¡1ë|q7=ÐY-ªÈqŽR¯$gº®=²}ë€4&4)æ¯ÐØÝ$º‘;ÝÅ.­@§• øR Ýˬcz¯;pæŽ.·oRY…A<ãïRcº22Wÿ$!P‡±‹4„á;…üHJ­ð”ôVk/ùÒ#þ“«‡¼åqéÏ!l3öãªXÊÃÂàEB´Ü—c"ƒ– ìE:¹Ì¶îHõeE>6¢yM³ ÙÚÇæ™r9‚~\ùÌs’ÚÌ¥ÅFK€ À2ˆ(=ä‚VºD:Ê÷åéeß™²ñüXpy—p ú×— M›´Iˆôx˜·ÄñÔ1ßá´ ê'ér|ð'SLÖG1Ô„ñDû·Sw è·÷O(€·×J†ô�4µMÈ …~QS<ÅçT-[¤Q KöÑ Ø€Ý$€ àQpÎO ¢�`¸!Dµ‚v3 hRDèMå¡PâQ225P8ø¸tNÎñ@L QTùÑSÈM0Ƽ¡J=qAxµç ·A Ò €Fnñ�^  L7�pîÒQPh±ºñ�@†àу?×ÕQ‡˜‰Eñ‡@a¢U’ŸPí·khŠvñR ÕP²�íÇ€§8N¾ðLsݱf]e3ôÒ Ï÷LÈqŠïÑ€.ñ;°1Qh{=¥TW±PßÁ ,˜!ëÂ� /BVEUb!«bS­‡îq‡rP¥fʨrÙRy-UTs‡ÕØ׈"€nBÃ$¯PKïH�^…dôÈ&W„FÓ Hÿãxª�!ù ���,�� �ž�X�Eû@€pH,È!1p8ŸÐ¨tJ­Z¯ÖÁ2Éíz¿à"Ó�ÌCAPh¯ ‚3<w³Ýsuž®·ùjfxlgBggZaŽFc†h‡†q–ˆ‚‚k˜¢ˆ—hš¦•˜›‡iŠŒ°±]’i—”šª©ŸmwklB¸µi–ÃB É!È Юe²ÔÕB’¥›¢¦ÝàáàÞžâæãp¬�ÐÊÍîïóÊÊ ÓÖù`ï�ó“X2ãíÛ¹º<Wи~�ÂHà¯â»T]’¦¯£#l¦HРÁÈ žK¨pá€!\˜93€Í›8oÒ¼ûà.Ž‹<J´¨Ñ£G`ˆƒÁ(82 HJµê3hX³B›`ñ]=òXüj ªY³\ 0Š C� š"{tÈØd 7'Þœ€ñz€ðàCß¼7ùæÅ«�ð»«Z#c,I™òÉÞ(`3ž?qºðZ0„ ¶Ùø¯Í»‹_ãER¡C… �(P ˜·î½ î… Û_=d“u}W€‚Jç)hV}sdåë”ç”°ÜâÈy ‚ó �Ä�ãïr¸«w7ã�A»`�€› Îݼñ»ß¿öîÔÁý'ž~wˆWzºm'~áá·�o `0_}CàFa|û1†”àˆF…ôbÆ# â /wÈ!‰"2 „²!>ÖxMÓhTŠ0ÛÜb‹-ų*¨³Š*@Ùh#-t é£@‡|²Ëg ðQ$‘ ¹J%›$©d† ‘"&)P B•Y`NGîH<î„ çXÜóe|þ0’‘*t�.ú ðærÏ$WO‹ÐxgPcXW’£bm´$è�Mâò$;óX)H6fxù¨GبQÓj$A&ÙVó�0•8ŠÖ³Ú­€Í4‡©6âê믦ýŠ««¯N6)wï„ÕS›ÐÙŸôÔ lTÂV›S­!¦mj4†+�ÔûòÖݸÈ!§ÌèNð t IŠv#5K�ʶ‘ÌMZQ2°A �q‰ÁöZj{éõ^cX8D豦ŸÆ)7ÏgÊD`±Å÷â8>ÈŸB¨€uþ¼Û€E§üðÊ+ÿuêË0Ç,³O5dóÍ8çl³D:÷ìó"¯Ìl -£òã%s,ë$2í¡Šy]hꔸ4’ OªAjä˽ä1ê˜>eY´(þÒµ-¼j Ñ=²©£1îY·–¹äMwH×dí65Lî87”¢ì2å×Átz‹[úÈc1mÿÝÑm’iöR~k0]§²#–—Ä“•~K‹ž„ûª ‡¯è¡‰_ z×íĹ\A›þÜ{ª¾eCèL9„š  7*Ð\$‹ê~:Ž‹¯ @Ÿ›VÿM?€E‰Öú•Î{aQàÒOïC mªéš„†shWèÆS'4‰”~d’|«r>úës  “4ä}—º"w¿$N&É„JŠ)ƒTÏ'TÊ`Ùì† 6ðpcÚLÜu€tÅ/2êºbµ"kýŠ&{è[î>8 ]ÀZÄ’L ½-²D ‡_qaN.àA ±ZRyÀC~g,ˆƒÅÜЬ})c‰QØ¿u¡!ì&ÛÖ¯ú²l[ûÔ£MNX¬­ÀKa™¢¼æÈÃî%�ÊÀK°¶H°ÌgìËÀ(¬æìùMÁÒh3z4#&œ€É*#g9K^sH•D§Æ Ç5‰ùk öàeöÉ–jø¡Øl8ÅñŠ,Iã½ã¼c�ìZ—Jlâ®IK ¡×Ç¥/ˆ/þÀ]2À�f"æ=üM#Þ‚ú¨cºAæp¦Dd0eËgr‰Ë–å¾€ËRDÁÊÌã:äò¦"pª<à_ä_ ¤�T šD° -G31<€ó  Ïx^s—}þÆ”iÍÚóÎ7zL7° σIJ›ÐüÐ óÂ?€†Ý†õébJQ*R#P¨6ÿ¼Í|BúÑšÚô¦5lBõvÊÓžúT§3Ä)Í€¶„¢õ¨HMªR—ÊÔ¦6õ)AêȰ‰¦Á(joƒÁ´M-«u(ÄÖ0¬º¨iõ‹ªTC“žðâGG«”Óö°U¹ÖA MBÃXí¤"Ú$„CÄÕ�L±åuˆÅ]ù`´b D�~­)êâÖ¸è©ÎJvMe¹t¹RDö£l嬖.k9Ì––nŸû”ÞVñYêéqŸóâ� ,©M{Kí•ZûAÀ®²™�Fv1¼±á¸•%•FxÛ@ò)EREæ> Óûj¶s§È.˜{¿0‘I¶‹CÄtÓVÝïr––Õ‘VÂÝðQnpÚˆ�:A%æ€"¸x“ˆä—(¬� ½Î SïH‹7á…‰{ì“kˆÚ%cNa”Z…Ê5gcµ´¥nÚˆ÷[JœTÛ Á'Õ¡æÈràˆÍ‡¸sèÅoÚžh¾WâHàˆo½#õx։ṤÏÅDí("cæÙ£Æ&þ‘ô°ãŸŠ£tßòÐ=[šë{Ž*?§@D�ÏÉ~TDÑ*{wY¶©?þ{ã áËæø˜Å¬=r™yQ÷°ßM—COµ©Éà`‰úš ÷ÙÙU?Ñs‰ß1û©òÐàBpo—:.€uÇޤl} “}ÁL€9 �¦ 5Œ¼mÚt´Ô§­Ä×®HÚ%ò5¨Mý¸WKu²¦Tþ'–XPP}hÃN–½“§–¾þ›w™æi �/’躵*ÂG›À0˜¢ˆ¶ÛR¥‡UñRÌÊÚ`ÐêŠÝÖ Oò n­I%7ô•Ò•u‹@šh-»­«z M¿ªÀMøÝïnḊ§¶b—Ø6…q‰¥M¦ò+3’Ë©X½è€‡'C6{–Tâ½/°0IÔ¢?.ÉýUDYt°X³.iò‰ûÊ429|ûŽ€òR*&99 b¤’›Ø$²7)ÇÉÇedM‘Š™™c¹$þ•SžÒ&YT¤¯ôÒ—Æ][Ep¥·P^ÈÄ@ �óÖ׿x+*·±ß&fvþ,KR ˜v¼ò÷¸¥']íK{Dcx\1Æ_ÄA:Òq²�‡?æînœäH8CGg Sƒt˜å@¬RÆ[†7:lŽÐ‚•=”·:,Ö˜xšÜUérH;}¹ùKfæiɸX¥ 0)vG7„€ØmÂÓSÞëwIåMÖ~Ƶƒ‘NímßsZ[—çë%ï­ýw8\,c˱LEÌ®€äo€”ÎOäâ†Å˜Ò?UüLœ‡ ¾–îðø rn¾äNö5|Ädþ€Qã¡�÷ê±Pó瀺Ñ0eM’¬Ú·}Õßt1äDNà¥H⇀ÄÇ‚ä2O!³OÁqH•"cÕ`DÐÒ~‡4&—,)£ c�2&¨°pO�°n¹ñ�°½TQð´ŸtQRa îa#¸1!Õ„íÁ=tsà”AàJø ãP‡}y%c2ó QÛÂ҇8è6`RõÑ€ý¡Q•ˆ ÃÝÂ�@ Ãóǽ4£PØ2HG8¥0*cHEÐE÷‘ì׉£Q›˜O}Q!DÐHV‹¶x‹¸]”‹7�!ù ���,�� �ž�X�Eû@€pH,È!1p8ŸÐ¨tJ­Z¯ÖÁ2Éíz¿à"Ó�ÌCAPh¯ ‚3<w³Ýsuž®·ùjfxlgBggZaŽFc†h‡†q–ˆ‚‚ˆ|fn ›hš—¥–©‡iŠŒ¯°]’i—”¦¶– ¿ÂÃÂÀĵ´Ê¤˜B­e±ÑÒÎMà ˜Û¨µßáââß å ÃÁÅ ãᦕ͗ÏÓ÷°’§š‡ Ù #B¬¼ƒÅ(�ÞUªê-‚†¯b}¥�¹¹ÀñB€�z‰9rBº„ã¾}\ɲã7€LÙ³XäÍ›8sêÔû)�C 9Ñy�¡¨Ñ£H‹f $I’»Žc ,©Õ«´†�<�ÝIVç ,øÈ`-Ë�ißÊMë!ë·jW¶UË€U8Ò@!0¸ ü\Ì8›„?×–þ‚Kù-Z¾˜÷È a\¼rTFœö2f$:T¨� €{a»f«�­M®ÛŠ~À/05"ü98ìÝhÑÖÖü6Ÿó'Aªu�%£j �ˆ�ÚŠçܵlÑ4»`�Àš K⿞Ïàuý×—y×_À{ù|ÿü¥%ÞZ»Õ߈‡°Ö^zŠÑ„”à=û…Ü±Æ flÈBüÁFˆ#jØ!˜ÀAÈ!c¸á‹J4 =ût#OD4ªQ%¨tÓcŽ�Ì#Œ³Ð±£-5rÒË0!9e S�Xp#†ÉÂ#&B¡$Äé •8 Ë.½üb/¾Aùc'5"’¥–é™tÙàØÐAƒ¡„ç:¼4$„0�Œ³&7oÂiF™l“�éèò”IyêŽ`”°h¢Wj(>ú¨Á‘\ ²äÔSP¥ƒÕ�*…ªêGÍ¡i„«Æª*g²²T Löͨ%鲘?ÇpL­²ÒJì±IˆVbze šª�•Û´±õ%0s ç`0»�h,û)ݯ¨æ°½“fÉ¥�¸éeZ^qí•Ön@âà„÷Ñ�¬Àu Avà|üý§ ·œkÊÁVXa¨ªÛØuàuÀצ ‡,òÈ6QéÉ(§\)9*·œò".’,Í,œ´Q‡ÌÓ y¼Q³…rRÇCë|‰ÏÅ93‘Ì÷tæ‰!ú‘ô—‹zbc~ ±ÆÓq¼Ê´#4sS%3H&zË—óŒÝÌ•mâõ×ÉÈ ':Þâã%¡ØA„G.ö<ɼ ÷4“ÝÉÜòŒÒvSIÖe›iCdKžÜ¸œ­h2qè‹/Æpü‹HL x¨ ûn9LHÅ&ÝVÚ¢rÞCXÀ'®·óN8u£î»ê«#(�tjó4�IŠÒ7·³»8�ã¡ïÌ�|$˜W)�tþÐñ,Gª|Jm (<\'RùõÈy8ÛKÇøè"Øøw&TŽÕ^¢b=û1"ÙhG‘ªTôÓŸ`T´Å„r1 ÂF‡tdU¼:`/¢BŒ$àXèÈ”A ²NFáGØ‘ÁGCy*Õþ‡ƪ(ˆašÓBKXè²áJˆ/!‚Š=G` ^æ.U¹eðZ˲”È’œË …Ù•.C:EXŽÃS˜µÐ<‹-ûy¡Œ±l—4¦ÅRtãhš(—dåå9ã€Ò%F¦Ìa[ÐUCHÃ,q+ sH¨¤ ˆæ2 ÀmÚ¨—Ù´QŠZÜ£¬Ï(q_™W[n3›Ýà‹}ÌX¶õGƒáK“”\ɶ¼8.Ñ ;Ù`J1Úò.� % �&½fÇH6,hr–;Þ+YYÊ1Ô  ƒ•e'ØZX|œr€N[Ì-‡™©0‡ðªyš©€! É$ÂJv×cgÁ‰€ Ó|‹º!¦x^ù­�L,0´Ì2â`€UòA*óY‰ ½°!ÀS�¬é×jˆÐžYüô£C訔x®f=¨JWÊRYe|0©Lg:¡¶”-ÒÂvÊÓžúô§@ ªP‡*Ô—Rä¦`ŠFœâØ g*R‘ÐxVÁ§VðfR¥êÐ>ä3,­©8•›•,d³Z4ÕKlÂçV·‘Và`è+" 8<»iU#=C+çôš¢ªé¡DbcÅWÁJ ¥¦‚kK,9ñ¾ÃÝzl[…cÕgS¤RðHjcëæÐº¹e€©l±SÅ\Ùç¾ÇÊl§À9z4ÀˆÌã±”=*aƒ$#íÖp8BDÞ¶&¾µö·FЬF{½"iﵚC…TôV)ùqÈ qƒ‡ÍûÂN±üpJ“ÊD•>jGWò¬é†;XÂn¼Ç5’¹‹±Ð‘ó¹` - ekÞÚ^ µ¶õ/tÙÞvì·¡×MRj§»:}�Н’ÃE.†:3IÅ�Kº€û;²Ørcè’¢,ÙTfL¼•„9º!Ömåkë¤"Y±iï~)ùF(zË<TJæyoxc;Û°’Á¸ìçx„¼ü)ðN51ŽÃ!ô ¶²75nÄÕ=93M2/Ð'½xÜíœqSAef9%4íE9Ö0ôíxa†[u;K¼_1ª|ÇBòh:Œ5$$Gb‹ó×. ]èHO|Z;‰¤Î<û©H•£Ã­4Óêz)C<fÏ´£ãð)ø°¶´ÌJ{)ÆŽ©‡Ü4žNVj@øHÔ$“S‚«Ú†  X^µKvýµžb°Yuù°‘OÉåÖ%Ñ€x{>N×J„ tSŠ-[Û¡[VÈɔ͠[Ú°Uy¶È$aÁ‚PÙN�¤T].#†ð%â™$bU·Ô[2éæ ÁÆèî�hj_b#ßb”XÅ’¹Ê¶¾Í)¬P™æà/J¿åâ…‰G\ZÇb¸ ‚l]Tç‡@œ8gŠhñ|%‘]¥±ÉȬ¢´嘜 \ü"ÆÁR»c:äÇG<ÆLÒñ‘)O#ûe¾ªµ¸èìúH0Ct¦Ç / €@âõ¬)z2]d8™§�$”1;O9ùFP=’2Gß ÆAµò¼˜æYkY:¾,C¬{½ 7Ì¡â GüÇ,&/0øJVòõ_=&‘×rx%@šü¨7 Ë Ù.“!’SÔ£ªDÊ·Ë-çR¥�2Öwà @@`)á™Ç`�ç’ 6²v€(+hz�8 ù2¦-œœg)sFßoà6:êrÑǧ ¿�d|âˆöPr\þøFè­ó+îð÷ˆù[€I|…/ír<ù�Åø§”¢ñ³e0@'7ËYüþûY2ËÂKGæ2N£ÛÁ ð�QÄ�˧~¥”PRÊÔOÒÊ|Âæq-Ãð| õ õ· ˆ÷¡÷‚Û2�×÷¸( `T€LáLPÒOÏ" ªAÊR¯C×d·äB��@-ð��#�Qh„=�bÑà‚¤³ÇãôPö 7Q<8‚0ÂëaR@ ÉUj±\ ¤O „ÿ„B‡•Tÿ�€‡t ‘ åD ¸¨t_SåQóă68„«¤OæQycè, ¨Nù‘~êtRÔAXã<¬„xßUØRûb†HÄQK׈÷¡6è0®Á�³¨ƒˆ«(  ’ =ŒÂ8ŒÄUŒ,�!ù ���,�� �ž�[�Eû@€pH,È!1p8ŸÐ¨tJ­Z¯ÖÁ2Éíz¿à"Ó�ÌCAPh¯ ‚3<w³Ýsuž®·ùjfxlgBggZaŽFc†h‡†q–ˆ‚‚mD›˜˜hš—¦–ª‡iŠŒ°±I´di—”§º–Ÿxk¡•›¬Åǥɔ®e²ÎÏBL •¤ˆÂÂÜÝÞßàá߯ɩšÅ—ÌÐë±’†Ó  óôõóÚââú´�x›gÀ�JÄÊ™QÇ®a#w¦ȳGq‚6" ÂÛ /Ô9ÁÀH ª4�èC‡DÈœI³¦M›0ÄÁûP“™‚H±^Ip"üQ!ÂJ“# JBʧ*È›0±jЮÔÄ„!�<oªµ9dƒ� `W®Ý·vóæ}ëƒuáÞë6€Z+áQ[LMÂrãÖ2 T€Ò¤pò!V‰÷î\½pß.LW®_æ­à³ÝÑx #©Ð¡B�†”ÖmX.neB0L·µã tŸ¬rN еP̸qi»<jƒ®ý�“œŸ{<wñßÉÑÓý�Ä�ëÝrp÷øÛÖ0»`�pûs–•9µÔoÊWØq#U×ÀI &XÍÿ¨Ûì×ßû·]˜ß†Ž4Õ‡B\&�ƒOh¢,chA ”Çk bFŒÜ!Älܘ#Œ3$GÀ,ÔÄ+'‚(É*åœ2JB¹ä²Š1 ]cÎ5NðR‘I”º Òä'\X@Ê”Už£L¸X¹H3X:D��µH0IDˆlYŽtÒ!à (BX°8Hz©Ê–d^Ù¦CGÂ#ÔÂQ7x>ÖѤAK)èʉ&†ÊD–UÔ=ÒQ Î0Ú$Ð`Aª²ÄG&\vê)4î¨R�¢5ATP�m€&×U+ýg€VÈ&�HsÈÊ¡°ÐF ÚiÒâÊÕµØ^[ 7–9ÇëSûŽøJÕ–;-Pæ¦kW­‰Ù]´-�èòÆÛn±M¶7ÐQWp­@JÇwãônh ¿æ0l…A Àpƒu^¥Ý×$‘|r'òÈ$¼YA˜ÁAÙRɉìï‚qèÖq <’8Ÿ\É3çVòÏ%ã5+$¼ž´Ô#þ6¨tcp;ôÓVúéÔTWmµ¤\­õÕ‹ õ3Gr /ÎXǃäñ†Ø,ÊQÈÙo»QÇ%k£mˆ³_?Rk ‡9¶ÜØÞ¡»�i£Ž| ‚wÞ5Ñ̘Ufš&'æ�’ŠäOvÉJѬÉ8ØŽ£C92™²gCˆûÉ9—“3©¤“‹þEØ™ržd*¾Ðd@¢Ü.º’¢c®¦×²ƒqRè¼>Ê%ÒŽºŸXw£é™d¢ÉJìÅs¡è攎'?{�ý¤É3i=1•`Ÿ=cl¯9�ûhçMü¦òó¾ðï  þú‘ ¯˜5𓔥h)Ô/kÑ«T@¼a¦ËQûã´„ äJWþøSýþ¡;IÍc3ª"Àà`¥¤J0È»Ä+Bð�t¡Ò¸‚’•ØiSôÜ Ã6>¬Ð(ßó†FFr„€¦GéÕI(r=tŽx;ä‚$. —ÒcW(KJSTR‹Ž@‹XXaU«È¥— ˜pûêJ×W¢eÅ{ ¥�"ªŒetF€Œy¡HåŠíQZü9‚oS˜†U«.˜ØÅ3ȼ, N ZŒc°öÈ‘xm"ú°V³yù†‘o¡Ö?¹°·a‘uy‹Åʵ�¿<€>½äu`,ãe’”—[h±€8fÂЙ¹T™—ÖŒ¦7ÂéŒgÚå°õ„f4\è*S¹� 1lÂéqŒKëf‘Âec\ƒíd˜ Àf¾c Ts=°¸IÏ™ÑEb�pK<ã)¡rca0 ú3³äÔçžÂñ Uj¢³9¼1q|€8©A€�ã,Ð9'ž #®§@üà_y€�DJ‘ÎD¡ {Ê3!œ(�(ì´ß æ;uÎRXú›õÀÃAUƒ:"G•À)ÐÏÖÅ.è¬Lñú£¡@ò—Bêƒ2‰˜¦‰AG‘WU"¯š"ÑY9Ä„!ð­p+?ºÆ¦µ!EZX‚^÷Ê×¾úõ¯€ ¬`ë(Ú…·ÀÄÚÔ :ŒíGxƒcïàØÇÖ¡‘í‘Ý2›# ¯®‡UBèŽÁ"P4‰lvªS�a·å16¬ˆ¬VqF ‚ªršÝCe›Z'½ÊrºåÃØ•Úò‚KЦº¤ZÛ­îuç3nÑ`Üõûõ‰ëžsS»¼ÉÝ.¼(Fu³GAèNOuò„z{Ç=ðzWJæýlhûG†2ݽ‡8]T÷\åú»èoñ´T&øÒ)¿¿@ø°Ñ^*5ذÓá|E[ßîŽn¹—“£àÄ;ÒA)J*°þ$<a8sfò&œ§àÞéw枇å;á“TXyÚ-“žð@€5¼I|ôk]àd`—Ø® ªo“6ECL-w>‚ÇñáðR ¼–3(câjáëÓ”ÇáÛ“ÐÁ4.±•õÜî0âXï˜Ã¡büSGž¯4$I8'ÓïTs†«•¥K½…ä9´’`³’4 û|cjr¥³«×æ,.Q|ÂÚ°aídÐTæð›pß;—ÎÒŒƒˆ�à‘­V_+žÔ§8jºÌ¦@uÞ®;6ÞN±ž”w6½Àn\¥U ޱx}ØÛÆÁ×Z™õ ƒY€T„U—Šn² mØf#ÏжH°)%Œ3@†$:–Jš9ê2Û®È5C¸ô(r»A¨4¤ B84éúkª¦C¸ƒ8Ä×{~z9ÉQD•Øÿ†Z­ôp_ïêxàJVH€$*q2Wœ³òñ§I¢�·’‹Å¶E©°#ÂøbŸòA©À.Ì*ùÐ$‹73–qJ±û|ÕZDkß+ùàÉ„%«Žmh”›VP„î‡h) ›¹I¾¸o£Ì£ZB% » öh}Å=•Q$0€«'å[aŒ@ÖË­Ó îL5BdDÃ÷‹ Ì‘€ nËÝø†�u ·æxmÊxHDUI]ŒÙwaQžð|œº'£E˜Þ](Â57_ÈCÞ ˜¼@¯¹0'ñûx‹%ÛàË9s“Ñ2æg&�QâZ„Á‹.C?SnêåïкĆ3ËFæÅXÓ‰dc cÍÙC3¤£¹:ïHg¶†ZÇÔËð»ÿLSžRšŒô¤2õ¢ÊlÒøôA%O‰Vã-î¼üŽˆº# èÜžœÂ’ªALn±~!�Ý$ÀäG MžäI‹´y{·ÂaL”Çì‘®—u¶¤A‰ÇzrNæÔKW¥´HñTÚ p€àw KôD|_P~Ø‚°”H ôTƒ €tT�Ñ'‰çƒØÁ褄ߑ0óKÈ  XOë¡�"òá}-(†Ñ´aBQH3sÆ1,e u}sQ`p†A‚Jˆ'Æ2!B-¥†>ØRÀáJã-%ÏPDÐ.Iõ‚®´21RB؆àr4"%Nµ€¸Q„ýG|@Gô2RÈ#�ûQŠ#åˆ4IE "·a!åN†Á‡³¨†’(Ó-:•øN @ ’3Yå ‹BGƒÈ}ÏtTUH‹†È8ð1b84µÌ¡2*G9¸Š0 @TÃH LSTY§ñA-ÃG†UE¢3–taULâ‚ਠßX ÁU]� fDóTµVað2÷X 7'ã±pmFQ€3Yˆ‡3ââ¶ŽÎÎ!V’n+¡%ÖœÖx!AA��;����������������������������������pygtk2tutorial/examples/treemodelsort.py������������������������������������������������������������0100644�0001172�0000167�00000005017�10227353425�017752� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example treemodelsort.py import pygtk pygtk.require('2.0') import gtk import random class TreeModelSortExample: # close the window and quit def delete_event(self, widget, event, data=None): gtk.main_quit() return False def add_row(self, b): rand = self.rand # add a row of random ints i0 = self.w[0].sm.get_model().append([rand.randint(0, 1000), rand.randint(0, 1000000), rand.randint(-10000, 10000)]) # select the new row in each view for n in range(3): sel = self.w[n].tv.get_selection() i1 = self.w[n].sm.convert_child_iter_to_iter(None, i0) sel.select_iter(i1) def __init__(self): # create a liststore with three int columns self.liststore = gtk.ListStore(int, int, int) # create a random number generator self.rand = random.Random() # Create new windows self.w = [None] * 3 for n in range(3): self.w[n] = gtk.Window(gtk.WINDOW_TOPLEVEL) win = self.w[n] win.set_title("TreeModelSort Example %i" % n) win.set_size_request(220, 200) win.connect("delete_event", self.delete_event) win.vbox = gtk.VBox() win.add(win.vbox) win.sw = gtk.ScrolledWindow() win.sm = gtk.TreeModelSort(self.liststore) # Set sort column win.sm.set_sort_column_id(n, gtk.SORT_ASCENDING) win.tv = gtk.TreeView(win.sm) win.vbox.pack_start(win.sw) win.b = gtk.Button('Add a Row') win.b.connect('clicked', self.add_row) win.vbox.pack_start(win.b, False) win.sw.add(win.tv) win.tv.column = [None]*3 win.tv.column[0] = gtk.TreeViewColumn('0-1000') win.tv.column[1] = gtk.TreeViewColumn('0-1000000') win.tv.column[2] = gtk.TreeViewColumn('-10000-10000') win.tv.cell = [None]*3 for i in range(3): win.tv.cell[i] = gtk.CellRendererText() win.tv.append_column(win.tv.column[i]) win.tv.column[i].set_sort_column_id(i) win.tv.column[i].pack_start(win.tv.cell[i], True) win.tv.column[i].set_attributes(win.tv.cell[i], text=i) win.show_all() def main(): gtk.main() if __name__ == "__main__": tmsexample = TreeModelSortExample() main() �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/checkbutton.py��������������������������������������������������������������0100644�0001172�0000167�00000004276�10227353425�017401� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example checkbutton.py import pygtk pygtk.require('2.0') import gtk class CheckButton: # Our callback. # The data passed to this method is printed to stdout def callback(self, widget, data=None): print "%s was toggled %s" % (data, ("OFF", "ON")[widget.get_active()]) # This callback quits the program def delete_event(self, widget, event, data=None): gtk.main_quit() return False def __init__(self): # Create a new window self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) # Set the window title self.window.set_title("Check Button") # Set a handler for delete_event that immediately # exits GTK. self.window.connect("delete_event", self.delete_event) # Sets the border width of the window. self.window.set_border_width(20) # Create a vertical box vbox = gtk.VBox(True, 2) # Put the vbox in the main window self.window.add(vbox) # Create first button button = gtk.CheckButton("check button 1") # When the button is toggled, we call the "callback" method # with a pointer to "button" as its argument button.connect("toggled", self.callback, "check button 1") # Insert button 1 vbox.pack_start(button, True, True, 2) button.show() # Create second button button = gtk.CheckButton("check button 2") # When the button is toggled, we call the "callback" method # with a pointer to "button 2" as its argument button.connect("toggled", self.callback, "check button 2") # Insert button 2 vbox.pack_start(button, True, True, 2) button.show() # Create "Quit" button button = gtk.Button("Quit") # When the button is clicked, we call the mainquit function # and the program exits button.connect("clicked", lambda wid: gtk.main_quit()) # Insert the quit button vbox.pack_start(button, True, True, 2) button.show() vbox.show() self.window.show() def main(): gtk.main() return 0 if __name__ == "__main__": CheckButton() main() ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/radiobuttons.py�������������������������������������������������������������0100644�0001172�0000167�00000004055�10227353425�017600� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example radiobuttons.py import pygtk pygtk.require('2.0') import gtk class RadioButtons: def callback(self, widget, data=None): print "%s was toggled %s" % (data, ("OFF", "ON")[widget.get_active()]) def close_application(self, widget, event, data=None): gtk.main_quit() return False def __init__(self): self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.connect("delete_event", self.close_application) self.window.set_title("radio buttons") self.window.set_border_width(0) box1 = gtk.VBox(False, 0) self.window.add(box1) box1.show() box2 = gtk.VBox(False, 10) box2.set_border_width(10) box1.pack_start(box2, True, True, 0) box2.show() button = gtk.RadioButton(None, "radio button1") button.connect("toggled", self.callback, "radio button 1") box2.pack_start(button, True, True, 0) button.show() button = gtk.RadioButton(button, "radio button2") button.connect("toggled", self.callback, "radio button 2") button.set_active(True) box2.pack_start(button, True, True, 0) button.show() button = gtk.RadioButton(button, "radio button3") button.connect("toggled", self.callback, "radio button 3") box2.pack_start(button, True, True, 0) button.show() separator = gtk.HSeparator() box1.pack_start(separator, False, True, 0) separator.show() box2 = gtk.VBox(False, 10) box2.set_border_width(10) box1.pack_start(box2, False, True, 0) box2.show() button = gtk.Button("close") button.connect_object("clicked", self.close_application, self.window, None) box2.pack_start(button, True, True, 0) button.set_flags(gtk.CAN_DEFAULT) button.grab_default() button.show() self.window.show() def main(): gtk.main() return 0 if __name__ == "__main__": RadioButtons() main() �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/comboboxwrap.py�������������������������������������������������������������0100644�0001172�0000167�00000001761�10103544514�017560� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python import pygtk pygtk.require('2.0') import gtk class ComboBoxWrapExample: def __init__(self): window = gtk.Window() window.connect('destroy', lambda w: gtk.main_quit()) combobox = gtk.ComboBox() liststore = gtk.ListStore(str) cell = gtk.CellRendererText() combobox.pack_start(cell) combobox.add_attribute(cell, 'text', 0) window.add(combobox) combobox.set_wrap_width(5) for n in range(50): liststore.append(['Item %d'%n]) combobox.set_model(liststore) combobox.connect('changed', self.changed_cb) combobox.set_active(0) window.show_all() return def changed_cb(self, combobox): model = combobox.get_model() index = combobox.get_active() if index > -1: print model[index][0], 'selected' return def main(): gtk.main() return if __name__ == "__main__": bcb = ComboBoxWrapExample() main() ���������������pygtk2tutorial/examples/filechooser.py��������������������������������������������������������������0100644�0001172�0000167�00000002266�10102023443�017351� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example filechooser.py import pygtk pygtk.require('2.0') import gtk # Check for new pygtk: this is new class in PyGtk 2.4 if gtk.pygtk_version < (2,3,90): print "PyGtk 2.3.90 or later required for this example" raise SystemExit dialog = gtk.FileChooserDialog("Open..", None, gtk.FILE_CHOOSER_ACTION_OPEN, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK)) dialog.set_default_response(gtk.RESPONSE_OK) filter = gtk.FileFilter() filter.set_name("All files") filter.add_pattern("*") dialog.add_filter(filter) filter = gtk.FileFilter() filter.set_name("Images") filter.add_mime_type("image/png") filter.add_mime_type("image/jpeg") filter.add_mime_type("image/gif") filter.add_pattern("*.png") filter.add_pattern("*.jpg") filter.add_pattern("*.gif") filter.add_pattern("*.tif") filter.add_pattern("*.xpm") dialog.add_filter(filter) response = dialog.run() if response == gtk.RESPONSE_OK: print dialog.get_filename(), 'selected' elif response == gtk.RESPONSE_CANCEL: print 'Closed, no files selected' dialog.destroy() ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/colorsel.py�����������������������������������������������������������������0100644�0001172�0000167�00000005227�10227353425�016707� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example colorsel.py import pygtk pygtk.require('2.0') import gtk class ColorSelectionExample: # Color changed handler def color_changed_cb(self, widget): # Get drawingarea colormap colormap = self.drawingarea.get_colormap() # Get current color color = self.colorseldlg.colorsel.get_current_color() # Set window background color self.drawingarea.modify_bg(gtk.STATE_NORMAL, color) # Drawingarea event handler def area_event(self, widget, event): handled = False # Check if we've received a button pressed event if event.type == gtk.gdk.BUTTON_PRESS: handled = True # Create color selection dialog if self.colorseldlg == None: self.colorseldlg = gtk.ColorSelectionDialog( "Select background color") # Get the ColorSelection widget colorsel = self.colorseldlg.colorsel colorsel.set_previous_color(self.color) colorsel.set_current_color(self.color) colorsel.set_has_palette(True) # Connect to the "color_changed" signal colorsel.connect("color_changed", self.color_changed_cb) # Show the dialog response = self.colorseldlg.run() if response -- gtk.RESPONSE_OK: self.color = colorsel.get_current_color() else: self.drawingarea.modify_bg(gtk.STATE_NORMAL, self.color) self.colorseldlg.hide() return handled # Close down and exit handler def destroy_window(self, widget, event): gtk.main_quit() return True def __init__(self): self.colorseldlg = None # Create toplevel window, set title and policies window = gtk.Window(gtk.WINDOW_TOPLEVEL) window.set_title("Color selection test") window.set_resizable(True) # Attach to the "delete" and "destroy" events so we can exit window.connect("delete_event", self.destroy_window) # Create drawingarea, set size and catch button events self.drawingarea = gtk.DrawingArea() self.color = self.drawingarea.get_colormap().alloc_color(0, 65535, 0) self.drawingarea.set_size_request(200, 200) self.drawingarea.set_events(gtk.gdk.BUTTON_PRESS_MASK) self.drawingarea.connect("event", self.area_event) # Add drawingarea to window, then show them both window.add(self.drawingarea) self.drawingarea.show() window.show() def main(): gtk.main() return 0 if __name__ == "__main__": ColorSelectionExample() main() �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/togglebutton.py�������������������������������������������������������������0100644�0001172�0000167�00000004311�10227353425�017573� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example togglebutton.py import pygtk pygtk.require('2.0') import gtk class ToggleButton: # Our callback. # The data passed to this method is printed to stdout def callback(self, widget, data=None): print "%s was toggled %s" % (data, ("OFF", "ON")[widget.get_active()]) # This callback quits the program def delete_event(self, widget, event, data=None): gtk.main_quit() return False def __init__(self): # Create a new window self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) # Set the window title self.window.set_title("Toggle Button") # Set a handler for delete_event that immediately # exits GTK. self.window.connect("delete_event", self.delete_event) # Sets the border width of the window. self.window.set_border_width(20) # Create a vertical box vbox = gtk.VBox(True, 2) # Put the vbox in the main window self.window.add(vbox) # Create first button button = gtk.ToggleButton("toggle button 1") # When the button is toggled, we call the "callback" method # with a pointer to "button" as its argument button.connect("toggled", self.callback, "toggle button 1") # Insert button 1 vbox.pack_start(button, True, True, 2) button.show() # Create second button button = gtk.ToggleButton("toggle button 2") # When the button is toggled, we call the "callback" method # with a pointer to "button 2" as its argument button.connect("toggled", self.callback, "toggle button 2") # Insert button 2 vbox.pack_start(button, True, True, 2) button.show() # Create "Quit" button button = gtk.Button("Quit") # When the button is clicked, we call the main_quit function # and the program exits button.connect("clicked", lambda wid: gtk.main_quit()) # Insert the quit button vbox.pack_start(button, True, True, 2) button.show() vbox.show() self.window.show() def main(): gtk.main() return 0 if __name__ == "__main__": ToggleButton() main() �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/notebook.py�����������������������������������������������������������������0100644�0001172�0000167�00000007764�10227353425�016715� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example notebook.py import pygtk pygtk.require('2.0') import gtk class NotebookExample: # This method rotates the position of the tabs def rotate_book(self, button, notebook): notebook.set_tab_pos((notebook.get_tab_pos()+1) %4) # Add/Remove the page tabs and the borders def tabsborder_book(self, button, notebook): tval = False bval = False if self.show_tabs == False: tval = True if self.show_border == False: bval = True notebook.set_show_tabs(tval) self.show_tabs = tval notebook.set_show_border(bval) self.show_border = bval # Remove a page from the notebook def remove_book(self, button, notebook): page = notebook.get_current_page() notebook.remove_page(page) # Need to refresh the widget -- # This forces the widget to redraw itself. notebook.queue_draw_area(0,0,-1,-1) def delete(self, widget, event=None): gtk.main_quit() return False def __init__(self): window = gtk.Window(gtk.WINDOW_TOPLEVEL) window.connect("delete_event", self.delete) window.set_border_width(10) table = gtk.Table(3,6,False) window.add(table) # Create a new notebook, place the position of the tabs notebook = gtk.Notebook() notebook.set_tab_pos(gtk.POS_TOP) table.attach(notebook, 0,6,0,1) notebook.show() self.show_tabs = True self.show_border = True # Let's append a bunch of pages to the notebook for i in range(5): bufferf = "Append Frame %d" % (i+1) bufferl = "Page %d" % (i+1) frame = gtk.Frame(bufferf) frame.set_border_width(10) frame.set_size_request(100, 75) frame.show() label = gtk.Label(bufferf) frame.add(label) label.show() label = gtk.Label(bufferl) notebook.append_page(frame, label) # Now let's add a page to a specific spot checkbutton = gtk.CheckButton("Check me please!") checkbutton.set_size_request(100, 75) checkbutton.show () label = gtk.Label("Add page") notebook.insert_page(checkbutton, label, 2) # Now finally let's prepend pages to the notebook for i in range(5): bufferf = "Prepend Frame %d" % (i+1) bufferl = "PPage %d" % (i+1) frame = gtk.Frame(bufferf) frame.set_border_width(10) frame.set_size_request(100, 75) frame.show() label = gtk.Label(bufferf) frame.add(label) label.show() label = gtk.Label(bufferl) notebook.prepend_page(frame, label) # Set what page to start at (page 4) notebook.set_current_page(3) # Create a bunch of buttons button = gtk.Button("close") button.connect("clicked", self.delete) table.attach(button, 0,1,1,2) button.show() button = gtk.Button("next page") button.connect("clicked", lambda w: notebook.next_page()) table.attach(button, 1,2,1,2) button.show() button = gtk.Button("prev page") button.connect("clicked", lambda w: notebook.prev_page()) table.attach(button, 2,3,1,2) button.show() button = gtk.Button("tab position") button.connect("clicked", self.rotate_book, notebook) table.attach(button, 3,4,1,2) button.show() button = gtk.Button("tabs/border on/off") button.connect("clicked", self.tabsborder_book, notebook) table.attach(button, 4,5,1,2) button.show() button = gtk.Button("remove page") button.connect("clicked", self.remove_book, notebook) table.attach(button, 5,6,1,2) button.show() table.show() window.show() def main(): gtk.main() return 0 if __name__ == "__main__": NotebookExample() main() ������������pygtk2tutorial/examples/table.py��������������������������������������������������������������������0100644�0001172�0000167�00000004335�10227353425�016153� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example table.py import pygtk pygtk.require('2.0') import gtk class Table: # Our callback. # The data passed to this method is printed to stdout def callback(self, widget, data=None): print "Hello again - %s was pressed" % data # This callback quits the program def delete_event(self, widget, event, data=None): gtk.main_quit() return False def __init__(self): # Create a new window self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) # Set the window title self.window.set_title("Table") # Set a handler for delete_event that immediately # exits GTK. self.window.connect("delete_event", self.delete_event) # Sets the border width of the window. self.window.set_border_width(20) # Create a 2x2 table table = gtk.Table(2, 2, True) # Put the table in the main window self.window.add(table) # Create first button button = gtk.Button("button 1") # When the button is clicked, we call the "callback" method # with a pointer to "button 1" as its argument button.connect("clicked", self.callback, "button 1") # Insert button 1 into the upper left quadrant of the table table.attach(button, 0, 1, 0, 1) button.show() # Create second button button = gtk.Button("button 2") # When the button is clicked, we call the "callback" method # with a pointer to "button 2" as its argument button.connect("clicked", self.callback, "button 2") # Insert button 2 into the upper right quadrant of the table table.attach(button, 1, 2, 0, 1) button.show() # Create "Quit" button button = gtk.Button("Quit") # When the button is clicked, we call the main_quit function # and the program exits button.connect("clicked", lambda w: gtk.main_quit()) # Insert the quit button into the both lower quadrants of the table table.attach(button, 0, 2, 1, 2) button.show() table.show() self.window.show() def main(): gtk.main() return 0 if __name__ == "__main__": Table() main() ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/scribblesimple.py�����������������������������������������������������������0100644�0001172�0000167�00000007137�10227353425�020066� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example scribblesimple.py # GTK - The GIMP Toolkit # Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald # Copyright (C) 2001-2004 John Finlay # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Library General Public License for more details. # # You should have received a copy of the GNU Library General Public # License along with this library; if not, write to the # Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. import pygtk pygtk.require('2.0') import gtk # Backing pixmap for drawing area pixmap = None # Create a new backing pixmap of the appropriate size def configure_event(widget, event): global pixmap x, y, width, height = widget.get_allocation() pixmap = gtk.gdk.Pixmap(widget.window, width, height) pixmap.draw_rectangle(widget.get_style().white_gc, True, 0, 0, width, height) return True # Redraw the screen from the backing pixmap def expose_event(widget, event): x , y, width, height = event.area widget.window.draw_drawable(widget.get_style().fg_gc[gtk.STATE_NORMAL], pixmap, x, y, x, y, width, height) return False # Draw a rectangle on the screen def draw_brush(widget, x, y): rect = (int(x-5), int(y-5), 10, 10) pixmap.draw_rectangle(widget.get_style().black_gc, True, rect[0], rect[1], rect[2], rect[3]) widget.queue_draw_area(rect[0], rect[1], rect[2], rect[3]) def button_press_event(widget, event): if event.button == 1 and pixmap != None: draw_brush(widget, event.x, event.y) return True def motion_notify_event(widget, event): if event.is_hint: x, y, state = event.window.get_pointer() else: x = event.x y = event.y state = event.state if state & gtk.gdk.BUTTON1_MASK and pixmap != None: draw_brush(widget, x, y) return True def main(): window = gtk.Window(gtk.WINDOW_TOPLEVEL) window.set_name ("Test Input") vbox = gtk.VBox(False, 0) window.add(vbox) vbox.show() window.connect("destroy", lambda w: gtk.main_quit()) # Create the drawing area drawing_area = gtk.DrawingArea() drawing_area.set_size_request(200, 200) vbox.pack_start(drawing_area, True, True, 0) drawing_area.show() # Signals used to handle backing pixmap drawing_area.connect("expose_event", expose_event) drawing_area.connect("configure_event", configure_event) # Event signals drawing_area.connect("motion_notify_event", motion_notify_event) drawing_area.connect("button_press_event", button_press_event) drawing_area.set_events(gtk.gdk.EXPOSURE_MASK | gtk.gdk.LEAVE_NOTIFY_MASK | gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.POINTER_MOTION_MASK | gtk.gdk.POINTER_MOTION_HINT_MASK) # .. And a quit button button = gtk.Button("Quit") vbox.pack_start(button, False, False, 0) button.connect_object("clicked", lambda w: w.destroy(), window) button.show() window.show() gtk.main() return 0 if __name__ == "__main__": main() ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/fontbutton.py���������������������������������������������������������������0100644�0001172�0000167�00000004110�10112026301�017234� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python import pygtk pygtk.require('2.0') import gtk class FontButtonExample: def __init__(self): window = gtk.Window() window.connect('destroy', lambda w: gtk.main_quit()) vbox = gtk.VBox() window.add(vbox) hbox = gtk.HBox() vbox.pack_start(hbox, False) label = gtk.Label('Current Font:') hbox.pack_start(label, False) fontbutton = gtk.FontButton('Monospace Italic 14') fontbutton.set_use_font(True) fontbutton.set_title('Select a font') fontbutton.connect('font-set', self.font_set_cb) hbox.pack_start(fontbutton) self.fontbutton = fontbutton bbox = gtk.HButtonBox() vbox.pack_start(bbox, False) b = gtk.ToggleButton('use_font', False) b.connect('toggled', self.use_font_cb) b.set_active(True) bbox.pack_start(b) b = gtk.ToggleButton('use_size', False) b.connect('toggled', self.use_size_cb) b.set_active(False) bbox.pack_start(b) b = gtk.ToggleButton('show_style', False) b.connect('toggled', self.show_style_cb) b.set_active(True) bbox.pack_start(b) b = gtk.ToggleButton('show_size', False) b.connect('toggled', self.show_size_cb) b.set_active(True) bbox.pack_start(b) window.show_all() return def use_font_cb(self, togglebutton): self.fontbutton.set_use_font(togglebutton.get_active()) return def use_size_cb(self, togglebutton): self.fontbutton.set_use_size(togglebutton.get_active()) return def show_style_cb(self, togglebutton): self.fontbutton.set_show_style(togglebutton.get_active()) return def show_size_cb(self, togglebutton): self.fontbutton.set_show_size(togglebutton.get_active()) return def font_set_cb(self, fontbutton): font = fontbutton.get_font_name() print 'You have selected the font:', font return def main(): gtk.main() if __name__ == '__main__': cbe = FontButtonExample() main() ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/toolbar.py������������������������������������������������������������������0100644�0001172�0000167�00000012334�10227353425�016524� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # example toolbar.py import pygtk pygtk.require('2.0') import gtk class ToolbarExample: # This method is connected to the Close button or # closing the window from the WM def delete_event(self, widget, event=None): gtk.main_quit() return False # that's easy... when one of the buttons is toggled, we just # check which one is active and set the style of the toolbar # accordingly def radio_event(self, widget, toolbar): if self.text_button.get_active(): toolbar.set_style(gtk.TOOLBAR_TEXT) elif self.icon_button.get_active(): toolbar.set_style(gtk.TOOLBAR_ICONS) elif self.both_button.get_active(): toolbar.set_style(gtk.TOOLBAR_BOTH) # even easier, just check given toggle button and enable/disable # tooltips def toggle_event(self, widget, toolbar): toolbar.set_tooltips(widget.get_active()) def __init__(self): # Here is our main window (a dialog) and a handle for the handlebox # Ok, we need a toolbar, an icon with a mask (one for all of # the buttons) and an icon widget to put this icon in (but # we'll create a separate widget for each button) # create a new window with a given title, and nice size dialog = gtk.Dialog() dialog.set_title("GTKToolbar Tutorial") dialog.set_size_request(450, 250) dialog.set_resizable(True) # typically we quit if someone tries to close us dialog.connect("delete_event", self.delete_event) # to make it nice we'll put the toolbar into the handle box, # so that it can be detached from the main window handlebox = gtk.HandleBox() dialog.vbox.pack_start(handlebox, False, False, 5) # toolbar will be horizontal, with both icons and text, and # with 5pxl spaces between items and finally, # we'll also put it into our handlebox toolbar = gtk.Toolbar() toolbar.set_orientation(gtk.ORIENTATION_HORIZONTAL) toolbar.set_style(gtk.TOOLBAR_BOTH) toolbar.set_border_width(5) handlebox.add(toolbar) # our first item is <close> button iconw = gtk.Image() # icon widget iconw.set_from_file("gtk.xpm") close_button = toolbar.append_item( "Close", # button label "Closes this app", # this button's tooltip "Private", # tooltip private info iconw, # icon widget self.delete_event) # a signal toolbar.append_space() # space after item # now, let's make our radio buttons group... iconw = gtk.Image() # icon widget iconw.set_from_file("gtk.xpm") icon_button = toolbar.append_element( gtk.TOOLBAR_CHILD_RADIOBUTTON, # type of element None, # widget "Icon", # label "Only icons in toolbar", # tooltip "Private", # tooltip private string iconw, # icon self.radio_event, # signal toolbar) # data for signal toolbar.append_space() self.icon_button = icon_button # following radio buttons refer to previous ones iconw = gtk.Image() # icon widget iconw.set_from_file("gtk.xpm") text_button = toolbar.append_element( gtk.TOOLBAR_CHILD_RADIOBUTTON, icon_button, "Text", "Only texts in toolbar", "Private", iconw, self.radio_event, toolbar) toolbar.append_space() self.text_button = text_button iconw = gtk.Image() # icon widget iconw.set_from_file("gtk.xpm") both_button = toolbar.append_element( gtk.TOOLBAR_CHILD_RADIOBUTTON, text_button, "Both", "Icons and text in toolbar", "Private", iconw, self.radio_event, toolbar) toolbar.append_space() self.both_button = both_button both_button.set_active(True) # here we have just a simple toggle button iconw = gtk.Image() # icon widget iconw.set_from_file("gtk.xpm") tooltips_button = toolbar.append_element( gtk.TOOLBAR_CHILD_TOGGLEBUTTON, None, "Tooltips", "Toolbar with or without tips", "Private", iconw, self.toggle_event, toolbar) toolbar.append_space() tooltips_button.set_active(True) # to pack a widget into toolbar, we only have to # create it and append it with an appropriate tooltip entry = gtk.Entry() toolbar.append_widget(entry, "This is just an entry", "Private") # well, it isn't created within the toolbar, so we must still show it entry.show() # that's it ! let's show everything. toolbar.show() handlebox.show() dialog.show() def main(): # rest in gtk_main and wait for the fun to begin! gtk.main() return 0 if __name__ == "__main__": ToolbarExample() main() ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/actions.py������������������������������������������������������������������0100644�0001172�0000167�00000014453�10123177173�016525� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python import pygtk pygtk.require('2.0') import gtk class ActionExample: def __init__(self): # Create the toplevel window window = gtk.Window() window.connect('destroy', lambda w: gtk.main_quit()) window.set_size_request(300, -1) vbox = gtk.VBox() window.add(vbox) # Create an accelerator group accelgroup = gtk.AccelGroup() # Add the accelerator group to the toplevel window window.add_accel_group(accelgroup) # Create an ActionGroup named ActionExample actiongroup = gtk.ActionGroup('ActionExample') # Create an action for quitting the program using a stock item quitaction = gtk.Action('Quit', '_Quit me!', 'Quit the Program', gtk.STOCK_QUIT) quitaction.set_property('short-label', '_Quit') # Connect a callback to the action quitaction.connect('activate', self.quit_cb) # Add the action to the actiongroup with an accelerator # None means use the stock item accelerator actiongroup.add_action_with_accel(quitaction, None) # Have the action use accelgroup quitaction.set_accel_group(accelgroup) # Connect the accelerator to the action quitaction.connect_accelerator() # Create a ToggleAction, etc. muteaction = gtk.ToggleAction('Mute', '_Mute', 'Mute the volume', None) actiongroup.add_action_with_accel(muteaction, '<Control>m') muteaction.set_accel_group(accelgroup) muteaction.connect_accelerator() muteaction.connect('toggled', self.mute_cb) # Create some RadioActions amaction = gtk.RadioAction('AM', '_AM', 'AM Radio', None, 0) actiongroup.add_action_with_accel(amaction, '<Control>a') amaction.set_accel_group(accelgroup) amaction.connect_accelerator() amaction.set_active(True) fmaction = gtk.RadioAction('FM', '_FM', 'FM Radio', None, 1) actiongroup.add_action_with_accel(fmaction, '<Control>f') fmaction.set_accel_group(accelgroup) fmaction.connect_accelerator() fmaction.set_group(amaction) ssbaction = gtk.RadioAction('SSB', 'SS_B', 'Single Sideband Radio', None, 2) actiongroup.add_action_with_accel(ssbaction, '<Control>s') ssbaction.set_accel_group(accelgroup) ssbaction.connect_accelerator() ssbaction.connect('changed', self.radioband_cb) ssbaction.set_group(amaction) # Create a MenuBar menubar = gtk.MenuBar() vbox.pack_start(menubar, False) # Create the File Action and MenuItem file_action = gtk.Action('File', '_File', None, None) actiongroup.add_action(file_action) file_menuitem = file_action.create_menu_item() menubar.append(file_menuitem) # Create the File Menu file_menu = gtk.Menu() file_menuitem.set_submenu(file_menu) # Create a proxy MenuItem quititem = quitaction.create_menu_item() file_menu.append(quititem) # Create and populate the Sound menu with a Mute menuitem sound_action = gtk.Action('Sound', '_Sound', None, None) actiongroup.add_action(sound_action) sound_menuitem = sound_action.create_menu_item() menubar.append(sound_menuitem) sound_menu = gtk.Menu() sound_menuitem.set_submenu(sound_menu) muteitem = muteaction.create_menu_item() sound_menu.append(muteitem) # Create and populate the RadioBand menu radioband_action = gtk.Action('RadioBand', '_Radio Band', None, None) actiongroup.add_action(radioband_action) radioband_menuitem = radioband_action.create_menu_item() menubar.append(radioband_menuitem) radioband_menu = gtk.Menu() radioband_menuitem.set_submenu(radioband_menu) amitem = amaction.create_menu_item() radioband_menu.append(amitem) fmitem = fmaction.create_menu_item() radioband_menu.append(fmitem) ssbitem = ssbaction.create_menu_item() radioband_menu.append(ssbitem) # Create a Toolbar toolbar = gtk.Toolbar() vbox.pack_start(toolbar, False) # Create a proxy ToolItem quittoolitem = quitaction.create_tool_item() toolbar.insert(quittoolitem, 0) # Create a separator separator = gtk.SeparatorToolItem() toolbar.insert(separator, -1) # Create toggle and radio tool items and add to toolbar mutetoolitem = muteaction.create_tool_item() toolbar.insert(mutetoolitem, -1) separator = gtk.SeparatorToolItem() toolbar.insert(separator, -1) amtoolitem = amaction.create_tool_item() toolbar.insert(amtoolitem, -1) fmtoolitem = fmaction.create_tool_item() toolbar.insert(fmtoolitem, -1) ssbtoolitem = ssbaction.create_tool_item() toolbar.insert(ssbtoolitem, -1) # Create and pack two Labels label = gtk.Label('Sound is not muted') vbox.pack_start(label) self.mutelabel = label label = gtk.Label('Radio band is AM') vbox.pack_start(label) self.bandlabel = label # Create a button to use as another proxy widget quitbutton = gtk.Button() # add it to the window vbox.pack_start(quitbutton, False) # Connect the action to its proxy widget quitaction.connect_proxy(quitbutton) # Have to set tooltip after toolitems are added to toolbar for action in actiongroup.list_actions(): action.set_property('tooltip', action.get_property('tooltip')) tooltips = gtk.Tooltips() tooltips.set_tip(quitbutton, quitaction.get_property('tooltip')) window.show_all() return def mute_cb(self, action): # action has not toggled yet text = ('muted', 'not muted')[action.get_active()==False] self.mutelabel.set_text('Sound is %s' % text) return def radioband_cb(self, action, current): text = ('AM', 'FM', 'SSB')[action.get_current_value()] self.bandlabel.set_text('Radio band is %s' % text) return def quit_cb(self, b): print 'Quitting program' gtk.main_quit() if __name__ == '__main__': ba = ActionExample() gtk.main() ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/examples/simpleaction.py�������������������������������������������������������������0100644�0001172�0000167�00000003054�10117752021�017541� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python import pygtk pygtk.require('2.0') import gtk class SimpleAction: def __init__(self): # Create the toplevel window window = gtk.Window() window.set_size_request(70, 30) window.connect('destroy', lambda w: gtk.main_quit()) # Create an accelerator group accelgroup = gtk.AccelGroup() # Add the accelerator group to the toplevel window window.add_accel_group(accelgroup) # Create an action for quitting the program using a stock item action = gtk.Action('Quit', None, None, gtk.STOCK_QUIT) # Connect a callback to the action action.connect('activate', self.quit_cb) # Create an ActionGroup named SimpleAction actiongroup = gtk.ActionGroup('SimpleAction') # Add the action to the actiongroup with an accelerator # None means use the stock item accelerator actiongroup.add_action_with_accel(action, None) # Have the action use accelgroup action.set_accel_group(accelgroup) # Connect the accelerator to the action action.connect_accelerator() # Create the button to use as the action proxy widget quitbutton = gtk.Button() # add it to the window window.add(quitbutton) # Connect the action to its proxy widget action.connect_proxy(quitbutton) window.show_all() return def quit_cb(self, b): print 'Quitting program' gtk.main_quit() if __name__ == '__main__': sa = SimpleAction() gtk.main() ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pygtk2tutorial/sec-FontSelectionDialog.html���������������������������������������������������������0100644�0001172�0000167�00000015614�10227356762�020237� 0����������������������������������������������������������������������������������������������������ustar �finlay��������������������������fcf��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>9.15. Font Selection Dialog

9.15. Font Selection Dialog

The Font Selection Dialog allows a user to interactively select a font for use within your program. The dialog contains a FontSelection widget and OK and Cancel buttons. An Apply button is also available in the dialog but is initially hidden. The Font Selection Dialog allows a user to select a font from the available system fonts (the same ones that can be retrieved using xlsfonts).

Figure 9.15, “Font Selection Dialog” illustrates the FontSelectionDialog display:

Figure 9.15. Font Selection Dialog

Font Selection Dialog

The dialog contains a set of three notebook pages that provide:

  • an interface to select the font, font style and font size

  • detailed information about the currently selected font

  • an interface to the font filter mechanism that restricts the fonts available for selection

The function to create a FontSelectionDialog is:

  fontseldlg = gtk.FontSelectionDialog(title)

The title is a string that will be used to set the titlebar text.

A Font Selection Dialog instance has several attributes:

  fontsel
  main_vbox
  action_area
  ok_button
  apply_button
  cancel_button

The fontsel attribute provides a reference to the Font Selection widget. main_vbox is a reference to the gtk.VBox containing the fontsel and the action_area in the dialog. The action_area attribute is a reference to the gtk.HButtonBox that contains the OK, Apply and Cancel buttons. The ok_button, cancel_button and apply_button attributes provide references to the OK, Apply and Cancel buttons that can be used to set connections to the button signals. The apply_button reference can also be used to show() the Apply button.

You can set the initial font to be displayed in the fontseldlg by using the method:

  fontseldlg.set_font_name(fontname)

The fontname argument is the name of a completely specified or partially specified system font. For example:

  fontseldlg.set_font_name('-adobe-courier-bold-*-*-*-*-120-*-*-*-*-*-*')

partially specifies the initial font.

The font name of the currently selected font can be retrieved using the method:

  font_name = fontseldlg.get_font_name()

The Font Selection Dialog has a Preview area that displays text using the currently selected font. The text that is used in the Preview area can be set with the method:

  fontseldlg.set_preview_text(text)

The preview text can be retrieved with the method:

  text = fontseldlg.get_preview_text()

The calendar.py example program uses a Font Selection Dialog to select the font to display the calendar information. Lines 105-110 define a callback that retrieves the font name from the Font Selection Dialog and uses it to set the font for the calendar widget. Lines 112-131 defines the method that creates the Font Selection Dialog, sets up the callbacks for the OK and Cancel buttons and displays the dialog.

pygtk2tutorial/sec-ManualMenuExample.html0100644000117200001670000001521510227356764017720 0ustar finlayfcf11.2. Manual Menu Example

11.2. Manual Menu Example

That should about do it. Let's take a look at the menu.py example program to help clarify the concepts. Figure 11.1, “Menu Example” illustrates the program display:

Figure 11.1. Menu Example

Menu Example

The menu.py program source code is:

    1	#!/usr/bin/env python
    2	
    3	# example menu.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	
    9	class MenuExample:
   10	    def __init__(self):
   11	        # create a new window
   12	        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   13	        window.set_size_request(200, 100)
   14	        window.set_title("GTK Menu Test")
   15	        window.connect("delete_event", lambda w,e: gtk.main_quit())
   16	
   17	        # Init the menu-widget, and remember -- never
   18	        # show() the menu widget!! 
   19	        # This is the menu that holds the menu items, the one that
   20	        # will pop up when you click on the "Root Menu" in the app
   21	        menu = gtk.Menu()
   22	
   23	        # Next we make a little loop that makes three menu-entries for
   24	        # "test-menu".  Notice the call to gtk_menu_append.  Here we are
   25	        # adding a list of menu items to our menu.  Normally, we'd also
   26	        # catch the "clicked" signal on each of the menu items and setup a
   27	        # callback for it, but it's omitted here to save space.
   28	        for i in range(3):
   29	            # Copy the names to the buf.
   30	            buf = "Test-undermenu - %d" % i
   31	
   32	            # Create a new menu-item with a name...
   33	            menu_items = gtk.MenuItem(buf)
   34	
   35	            # ...and add it to the menu.
   36	            menu.append(menu_items)
   37	
   38		    # Do something interesting when the menuitem is selected
   39		    menu_items.connect("activate", self.menuitem_response, buf)
   40	
   41	            # Show the widget
   42	            menu_items.show()
   43	
   44	        # This is the root menu, and will be the label
   45	        # displayed on the menu bar.  There won't be a signal handler attached,
   46	        # as it only pops up the rest of the menu when pressed.
   47	        root_menu = gtk.MenuItem("Root Menu")
   48	
   49	        root_menu.show()
   50	
   51	        # Now we specify that we want our newly created "menu" to be the
   52	        # menu for the "root menu"
   53	        root_menu.set_submenu(menu)
   54	
   55	        # A vbox to put a menu and a button in:
   56	        vbox = gtk.VBox(False, 0)
   57	        window.add(vbox)
   58	        vbox.show()
   59	
   60	        # Create a menu-bar to hold the menus and add it to our main window
   61	        menu_bar = gtk.MenuBar()
   62	        vbox.pack_start(menu_bar, False, False, 2)
   63	        menu_bar.show()
   64	
   65	        # Create a button to which to attach menu as a popup
   66	        button = gtk.Button("press me")
   67	        button.connect_object("event", self.button_press, menu)
   68	        vbox.pack_end(button, True, True, 2)
   69	        button.show()
   70	
   71	        # And finally we append the menu-item to the menu-bar -- this is the
   72	        # "root" menu-item I have been raving about =)
   73	        menu_bar.append (root_menu)
   74	
   75	        # always display the window as the last step so it all splashes on
   76	        # the screen at once.
   77	        window.show()
   78	
   79	    # Respond to a button-press by posting a menu passed in as widget.
   80	    #
   81	    # Note that the "widget" argument is the menu being posted, NOT
   82	    # the button that was pressed.
   83	    def button_press(self, widget, event):
   84	        if event.type == gtk.gdk.BUTTON_PRESS:
   85	            widget.popup(None, None, None, event.button, event.time)
   86	            # Tell calling code that we have handled this event the buck
   87	            # stops here.
   88	            return True
   89	        # Tell calling code that we have not handled this event pass it on.
   90	        return False
   91	
   92	    # Print a string when a menu item is selected
   93	    def menuitem_response(self, widget, string):
   94	        print "%s" % string
   95	
   96	def main():
   97	    gtk.main()
   98	    return 0
   99	
  100	if __name__ == "__main__":
  101	    MenuExample()
  102	    main()

You may also set a menu item to be insensitive and, using an accelerator table, bind keys to menu callbacks.

pygtk2tutorial/ch-GtkRcFiles.html0100644000117200001670000001165310227357003016144 0ustar finlayfcfChapter 23. GTK's rc Files

Chapter 23. GTK's rc Files

GTK+ has its own way of dealing with application defaults, by using rc files. These can be used to set the colors of just about any widget, and can also be used to tile pixmaps onto the background of some widgets.

23.1. Functions For rc Files

When your application starts, you should include a call to:

  rc_parse(filename)

Passing in the filename of your rc file. This will cause GTK+ to parse this file, and use the style settings for the widget types defined there.

If you wish to have a special set of widgets that can take on a different style from others, or any other logical division of widgets, use a call to:

  widget.set_name(name)

Your newly created widget will be assigned the name you give. This will allow you to change the attributes of this widget by name through the rc file.

If we use a call something like this:

  button = gtk.Button("Special Button")

  button.set_name("special button")

Then this button is given the name "special button" and may be addressed by name in the rc file as "special button.GtkButton". [--- Verify ME!]

Section 23.3, “Example rc file” below, sets the properties of the main window, and lets all children of that main window inherit the style described by the "main button" style. The code used in the application is:

  window = gtk.Window(gtk.WINDOW_TOPLEVEL)

  window.set_name("main window")

And then the style is defined in the rc file using:

  widget "main window.*GtkButton*" style "main_button"

Which sets all the Button (see Chapter 6, The Button Widget widgets in the "main window" to the "main_buttons" style as defined in the rc file.

As you can see, this is a fairly powerful and flexible system. Use your imagination as to how best to take advantage of this.

pygtk2tutorial/sec-GenericTreeModel.html0100644000117200001670000012010110227356772017505 0ustar finlayfcf14.11. The Generic TreeModel

14.11. The Generic TreeModel

When you find that the standard TreeModels are not sufficiently powerful for your application needs, you can use the GenericTreeModel to build your own custom TreeModel in Python. Creating a GenericTreeModel may be useful when there are performance issues with the standard TreeStore and ListStore objects or when you want to directly interface to an external data source (say, a database or filesystem) to save copying the data into and out of a TreeStore or ListStore.

14.11.1. GenericTreeModel Overview

With the GenericTreeModel you build and manage your data model and provide external access though the standard TreeModel interface by defining a set of class methods. PyGTK implements the TreeModel interface and arranges for your TreeModel methods to be called to provide the actual model data.

The implementation details of your model should be kept completely hidden from the external application. This means that the way that your model identifies, stores and retrieves data is unknown to the application. In general the only information that is saved outside your GenericTreeModel are the row references that are wrapped by the external TreeIters. And these references are not visible to the application.

Let's examine in detail the GenericTreeModel interface that you have to provide.

14.11.2. The GenericTreeModel Interface

The GenericTreeModel interface consists of the following methods that must be implemented in your custom tree model:

def on_get_flags(self)
def on_get_n_columns(self)
def on_get_column_type(self, index)
def on_get_iter(self, path)
def on_get_path(self, rowref)
def on_get_value(self, rowref, column)
def on_iter_next(self, rowref)
def on_iter_children(self, parent)
def on_iter_has_child(self, rowref)
def on_iter_n_children(self, rowref)
def on_iter_nth_child(self, parent, n)
def on_iter_parent(self, child)

You should note that these methods support all of the TreeModel interface including:

def get_flags()
def get_n_columns()
def get_column_type(index)
def get_iter(path)
def get_iter_from_string(path_string)
def get_string_from_iter(iter)
def get_iter_root()
def get_iter_first()
def get_path(iter)
def get_value(iter, column)
def iter_next(iter)
def iter_children(parent)
def iter_has_child(iter)
def iter_n_children(iter)
def iter_nth_child(parent, n)
def iter_parent(child)
def get(iter, column, ...)
def foreach(func, user_data)

To illustrate the use of the GenericTreeModel I'll change the filelisting.py example program and show how the interface methods are created. The filelisting-gtm.py program displays the files in a folder with a pixbuf indicating if the file is a folder or not, the file name, the file size, mode and time of last change.

The on_get_flags() method should return a value that is a combination of:

gtk.TREE_MODEL_ITERS_PERSISTTreeIters survive all signals emitted by the tree.
gtk.TREE_MODEL_LIST_ONLYThe model is a list only, and never has children

If your model has row references that are valid over row changes (reorder, addition, deletion) then set gtk.TREE_MODEL_ITERS_PERSIST. Likewise if your model is a list only then set gtk.TREE_MODEL_LIST_ONLY. Otherwise, return 0 if your model doesn't have persistent row references and it's a tree model. For our example, the model is a list with persistent TreeIters.

    def on_get_flags(self):
        return gtk.TREE_MODEL_LIST_ONLY|gtk.TREE_MODEL_ITERS_PERSIST

The on_get_n_columns() method should return the number of columns that your model exports to the application. Our example maintains a list of column types so we return the length of the list:

class FileListModel(gtk.GenericTreeModel):
    ...
    column_types = (gtk.gdk.Pixbuf, str, long, str, str)
    ...
    def on_get_n_columns(self):
        return len(self.column_types)

The on_get_column_type() method should return the type of the column with the specified index. This method is usually called from a TreeView when its model is set. You can either create a list or tuple containing the column data type info or generate it on-the-fly. In our example:

    def on_get_column_type(self, n):
        return self.column_types[n]

The GenericTreeModel interface converts the Python type to a GType so the following code:

  flm = FileListModel()
  print flm.on_get_column_type(1), flm.get_column_type(1)

would print:

<type 'str'> <GType gchararray (64)>

The following methods use row references that are kept as private data in a TreeIter. The application can't see the row reference in a TreeIter so you can use any unique item you want as a row reference. For example in a model containing rows as tuples you could use the tuple id as the row reference. Another example would be to use a filename as the row reference in a model representing files in a directory. In both these cases, the row reference is unchanged by model changes so the TreeIters could be flagged as persistent. The PyGTK GenericTreeModel application interface will extract your row references from TreeIters and wrap your row references in TreeIters as needed.

In the following methods rowref refers to an internal row reference.

The on_get_iter() method should return an rowref for the tree path specified by path. The tree path will always be represented using a tuple. Our example uses the file name string as the rowref. The file names are kept in a list in the model so we take the first index of the path as an index to the file name:

    def on_get_iter(self, path):
        return self.files[path[0]]

You have to be consistent in your row reference usage since you'll get a row reference back in method calls from the GenericTreeModel methods that take TreeIter arguments: on_get_path(), on_get_value(), on_iter_next(), on_iter_children(), on_iter_has_child(), on_iter_n_children(), on_iter_nth_child() and on_iter_parent().

The on_get_path() method should return a tree path given a rowref. For example, continuing the above example where the file name is used as the rowref, you could define the on_get_path() method as:

    def on_get_path(self, rowref):
        return self.files.index(rowref)

This method finds the index of the list containing the file name in rowref. It's obvious from this example that a judicious choice of row reference will make the implementation more efficient. You could, for example, use a Python dict to map rowref to a path.

The on_get_value() method should return the data stored at the row and column specified by rowref and column. For our example:

    def on_get_value(self, rowref, column):
        fname = os.path.join(self.dirname, rowref)
        try:
            filestat = statcache.stat(fname)
        except OSError:
            return None
        mode = filestat.st_mode
        if column is 0:
            if stat.S_ISDIR(mode):
                return folderpb
            else:
                return filepb
        elif column is 1:
            return rowref
        elif column is 2:
            return filestat.st_size
        elif column is 3:
            return oct(stat.S_IMODE(mode))
        return time.ctime(filestat.st_mtime)

has to extract the associated file information and return the appropriate value depending on which column is specified.

The on_iter_next() method should return a row reference to the row (at the same level) after the row specified by rowref. For our example:

    def on_iter_next(self, rowref):
        try:
            i = self.files.index(rowref)+1
            return self.files[i]
        except IndexError:
            return None

The index of the rowref file name is determined and the next file name is returned or None is returned if there is no next file.

The on_iter_children() method should return a row reference to the first child row of the row specified by rowref. If rowref is None, a reference to the first top level row is returned. If there is no child row None is returned. For our example:

    def on_iter_children(self, rowref):
        if rowref:
            return None
        return self.files[0]

Since the model is a list model only the top level (rowref=None) can have child rows. None is returned if rowref contains a file name.

The on_iter_has_child() method should return TRUE if the row specified by rowref has child rows; FALSE otherwise. Our example returns FALSE since no row can have a child:

    def on_iter_has_child(self, rowref):
        return False

The on_iter_n_children() method should return the number of child rows that the row specified by rowref has. If rowref is None, the number of top level rows is returned. Our example returns 0 if rowref is not None:

    def on_iter_n_children(self, rowref):
        if rowref:
            return 0
        return len(self.files)

The on_iter_nth_child() method should return a row reference to the nth child row of the row specified by parent. If parent is None, a reference to the nth top level row is returned. Our example returns the nth top level row reference if parent is None. Otherwise None is returned:

    def on_iter_nth_child(self, rowref, n):
        if rowref:
            return None
        try:
            return self.files[n]
        except IndexError:
            return None

The on_iter_parent() method should return a row reference to the parent row of the row specified by rowref. If rowref points to a top level row, None should be returned. Our example always returns None assuming that rowref must point to a top level row:

    def on_iter_parent(child):
        return None

This example is put together in the filelisting-gtm.py program. Figure 14.11, “Generic TreeModel Example Program” shows the result of running the program.

Figure 14.11. Generic TreeModel Example Program

Generic TreeModel Example Program

14.11.3. Adding and Removing Rows

The filelisting-gtm.py program calculates the list of file names while creating a FileListModel instance. If you want to check for new files periodically and add or remove files from the model you could either create a new FileListModel for the same folder or you could add methods to add and remove rows in the model. Depending on the type of model you are creating you would need to add methods similar to those in the TreeStore and ListStore models:

  • insert()
  • insert_before()
  • insert_after()
  • prepend()
  • append()
  • remove()
  • clear()

Of course not all or any of these need to be implemented. You can create your own methods that are more closely related to your model.

Using the above example program to illustrate adding methods for removing and adding files, let's implement the methods:

def remove(iter)
def add(filename)

The remove() method removes the file specified by iter. In addition to removing the row from the model the method also should remove the file from the folder. Of course, if the user doesn't have the permissions to remove the file then the row shouldn't be removed either. For example:

    def remove(self, iter):
        path = self.get_path(iter)
        pathname = self.get_pathname(path)
        try:
            if os.path.exists(pathname):
                os.remove(pathname)
            del self.files[path[0]]
            self.row_deleted(path)
        except OSError:
            pass
        return

The method is passed a TreeIter that has to be converted to a path to use to retrieve the file path using the method get_pathname(). It's possible that the file has already been removed so we check if it exists before trying to remove it. If an OSError exception is thrown during the file removal it's probably because the file is a directory or the user doesn't have sufficient privilege to remove it. Finally, the file is removed and the "row-deleted" signal is emitted from the rows_deleted() method. The "file-deleted" signal notifies the TreeViews using the model that the model has changed so that they can update their internal state and display the revised model.

The add() method needs to create a file with the given name in the current folder. If the file was created its name is added to the list of files in the model. For example:

    def add(self, filename):
        pathname = os.path.join(self.dirname, filename)
        if os.path.exists(pathname):
            return
        try:
            fd = file(pathname, 'w')
            fd.close()
            self.dir_ctime = os.stat(self.dirname).st_ctime
            files = self.files[1:] + [filename]
            files.sort()
            self.files = ['..'] + files
            path = (self.files.index(filename),)
            iter = self.get_iter(path)
            self.row_inserted(path, iter)
        except OSError:
            pass
        return

This simple example makes sure that the file doesn't exist then tries to open the file for writing. If successful, the file is closed and the file name sorted into the list of files. The path and TreeIter for the added file row are retrieved to use in the row_inserted() method that emits the "row-inserted" signal. The "row-inserted" signal is used to notify the TreeViews using the model that they need to update their internal state and revise their display.

The other methods mentioned above (for example, append and prepend) don't make sense for the example since the model keeps the file list sorted.

Other methods that may be worth implementing in a TreeModel subclassing the GenericTreeModel are:

  • set_value()
  • reorder()
  • swap()
  • move_after()
  • move_before()

Implementing these methods is similar to the above methods. You have to synchronize the model with the external state and then notify the TreeViews if the model has changed. The following methods are used to notify the TreeViews of model changes by emitting the appropriate signal:

def row_changed(path, iter)
def row_inserted(path, iter)
def row_has_child_toggled(path, iter)
def row_deleted(path)
def rows_reordered(path, iter, new_order)

14.11.4. Memory Management

One of the problems with the GenericTreeModel is that TreeIters hold a reference to a Python object returned from your custom tree model. Since the TreeIter may be created and initialized in C code and live on the stack, it's not possible to know when the TreeIter has been destroyed and the Python object reference is no longer being used. Therefore, the Python object referenced in a TreeIter has by default its reference count incremented but it is not decremented when the TreeIter is destroyed. This ensures that the Python object will not be destroyed while being used by a TreeIter and possibly cause a segfault. Unfortunately the extra reference counts lead to the situation that, at best, the Python object will have an excessive reference count and, at worst, it will never be freed even when it is not being used. The latter case leads to memory leaks and the former to reference leaks.

To provide for the situation where the custom TreeModel holds a reference to the Python object until it is no longer available (i.e. the TreeIter is invalid because the model has changed) and there is no need to leak references, the GenericTreeModel has the "leak-references" property. By default "leak-references" is TRUE to indicate that the GenericTreeModel will leak references. If "leak-references" is set to FALSE, the reference count of the Python object will not be incremented when referenced in a TreeIter. This means that your custom TreeModel must keep a reference to all Python objects used in TreeIters until the model is destroyed. Unfortunately, even this cannot protect against buggy code that attempts to use a saved TreeIter on a different GenericTreeModel. To protect against that case your application would have to keep references to all Python objects referenced from a TreeIter for any GenericTreeModel instance. Of course, this ultimately has the same result as leaking references.

In PyGTK 2.4 and above the invalidate_iters() and iter_is_valid() methods are available to help manage the TreeIters and their Python object references:

  generictreemodel.invalidate_iters()

  result = generictreemodel.iter_is_valid(iter)

These are particularly useful when the "leak-references" property is set to FALSE. Tree models derived from GenericTreeModel are protected from problems with out of date TreeIters because the iters are automatically checked for validity with the tree model.

If a custom tree model doesn't support persistent iters (i.e. gtk.TREE_MODEL_ITERS_PERSIST is not set in the return from the TreeModel.get_flags() method), it can call the invalidate_iters() method to invalidate all its outstanding TreeIters when it changes the model (e.g. after inserting a new row). The tree model can also dispose of any Python objects, that were referenced by TreeIters, after calling the invalidate_iters() method.

Applications can use the iter_is_valid() method to determine if a TreeIter is still valid for the custom tree model.

14.11.5. Other Interfaces

The ListStore and TreeStore models support the TreeSortable, TreeDragSource and TreeDragDest interfaces in addition to the TreeModel interface. The GenericTreeModel only supports the TreeModel interface. I believe that this is because of the direct reference of the model at the C level by TreeViews and the TreeModelSort and TreeModelFilter models. To create and use TreeIters requires C glue code to interface with the Python custom tree model that has the data. That glue code is provided by the GenericTreeModel and there appears to be no alternative purely Python way of doing it because the TreeViews and the other models call the GtkTreeModel functions in C passing their reference to the custom tree model.

The TreeSortable interface would need C glue code as well to work with the default TreeViewColumn sort mechanism as explained in Section 14.2.9, “Sorting TreeModel Rows”. However a custom model can do its own sorting and an application can manage the use of sort criteria by handling the TreeViewColumn header clicks and calling the custom tree model sort methods. The model completes the update of the TreeViews by emitting the "rows-reordered" signal using the TreeModel's rows_reordered() method. Thus the GenericTreeModel probably doesn't need to implement the TreeSortable interface.

Likewise, the GenericTreeModel doesn't have to implement the TreeDragSource and TreeDragDest interfaces because the custom tree model can implement its own drag and drop interfaces and the application can handle the appropriate TreeView signals and call the custom tree model methods as needed.

14.11.6. Applying The GenericTreeModel

I believe that the GenericTreeModel should only be used as a last resort. There are powerful mechanisms in the standard group of TreeView objects that should be sufficient for most applications. Undoubtedly there are applications which may require the use of the GenericTreeModel but you should attempt to first use the following instead:

Cell Data Functions

As illustrated in Section 14.4.5, “Cell Data Function”, cell data functions can be used to modify and even synthesize the data for a TreeView column display. You can effectively create as many display columns with generated data as you wish. This gives you a great deal of control over the presentation of data from an underlying data source.

TreeModelFilter

In PyGTK 2.4, the TreeModelFilter as described in Section 14.10.2, “TreeModelFilter” provides a great degree of control over the display of the columns and rows of a child TreeModel including presenting just the child rows of a row. Data columns can be synthesized similar to using Cell Data Functions but here the model appears to be a TreeModel with the number and type of columns specified whereas a cell data function leaves the model columns unchanged and just modifies the display in a TreeView.

If a GenericTreeModel must be used you should be aware that:

  • the entire TreeModel interface must be created and made to work as documented. There are subtleties that can lead to bugs. By contrast, the standard TreeModels are thoroughly tested.
  • managing the references of Python objects used by TreeIters can be difficult especially for long running programs with lots of variety of display.
  • an interface has to be developed for adding, deleting and changing the contents of rows. There is some awkwardness with the mapping of TreeIters to the Python objects and model rows in this interface.
  • there is significant effort in developing sortable and drag and drop interfaces. The application probably needs to be involved in making these interfaces fully functional.
pygtk2tutorial/sec-Fixed.html0100644000117200001670000001270710227356763015403 0ustar finlayfcf10.3. Fixed Container

10.3. Fixed Container

The Fixed container allows you to place widgets at a fixed position within it's window, relative to it's upper left hand corner. The position of the widgets can be changed dynamically.

There are only three calls associated with the fixed widget:

  fixed = gtk.Fixed()

  fixed.put(widget, x, y)

  fixed.move(widget, x, y)

The function gtk.Fixed() allows you to create a new Fixed container.

The put() method places widget in the container fixed at the position specified by x and y.

The move() method allows the specified widget to be moved to a new position.

The fixed.py example illustrates how to use the Fixed container. Figure 10.2, “Fixed Example” shows the result:

Figure 10.2. Fixed Example

Fixed Example

The source code for fixed.py:

    1	#!/usr/bin/env python
    2	
    3	# example fixed.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	
    9	class FixedExample:
   10	    # This callback method moves the button to a new position
   11	    # in the Fixed container.
   12	    def move_button(self, widget):
   13	        self.x = (self.x+30)%300
   14	        self.y = (self.y+50)%300
   15	        self.fixed.move(widget, self.x, self.y) 
   16	
   17	    def __init__(self):
   18	        self.x = 50
   19	        self.y = 50
   20	
   21	        # Create a new window
   22	        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   23	        window.set_title("Fixed Container")
   24	
   25	        # Here we connect the "destroy" event to a signal handler 
   26	        window.connect("destroy", lambda w: gtk.main_quit())
   27	 
   28	        # Sets the border width of the window.
   29	        window.set_border_width(10)
   30	
   31	        # Create a Fixed Container
   32	        self.fixed = gtk.Fixed()
   33	        window.add(self.fixed)
   34	        self.fixed.show()
   35	  
   36	        for i in range(1, 4):
   37	            # Creates a new button with the label "Press me"
   38	            button = gtk.Button("Press me")
   39	  
   40	            # When the button receives the "clicked" signal, it will call the
   41	            # method move_button().
   42	            button.connect("clicked", self.move_button)
   43	  
   44	            # This packs the button into the fixed containers window.
   45	            self.fixed.put(button, i*50, i*50)
   46	  
   47	            # The final step is to display this newly created widget.
   48	            button.show()
   49	
   50	        # Display the window
   51	        window.show()
   52	
   53	def main():
   54	    # Enter the event loop
   55	    gtk.main()
   56	    return 0
   57	
   58	if __name__ == "__main__":
   59	    FixedExample()
   60	    main()
pygtk2tutorial/sec-GtkContainer.html0100644000117200001670000000371710227357005016723 0ustar finlayfcfA.4. GtkContainer

A.4. GtkContainer

add(container, widget, data)

remove(container, widget, data)

check-resize(container, data)

direction = focus(container, direction, data)

set-focus-child(container, widget, data)
pygtk2tutorial/sec-ComboWidget.html0100644000117200001670000001752510227356762016551 0ustar finlayfcf9.11. Combo Widget

9.11. Combo Widget

Note

The Combo widget is deprecated in PyGTK 2.4 and above.

The Combo widget is another fairly simple widget that is really just a collection of other widgets. From the user's point of view, the widget consists of a text entry box and a pull down menu from which the user can select one of a set of predefined entries. Alternatively, the user can type a different option directly into the text box.

The Combo has two principal parts that you really care about: an entry and a list. These are accessed using the attributes:

  combo.entry

  combo.list

First off, to create a Combo, use:

  combo = gtk.Combo()

Now, if you want to set the string in the entry section of the combo, this is done by manipulating the entry widget directly:

  combo.entry.set_text(text)

To set the values in the popdown list, one uses the method:

  combo.set_popdown_strings(strings)

Before you can do this, you have to assemble a list of the strings that you want.

Here's a typical code segment for creating a set of options:

  slist = [ "String 1", "String 2", "String 3", "String 4" ]

  combo.set_popdown_strings(slist)

At this point you have set up a working Combo. There are a few aspects of its behavior that you can change. These are accomplished with the methods:

  combo.set_use_arrows(val)

  combo.set_use_arrows_always(val)

  combo.set_case_sensitive(val)

The set_use_arrows() method lets the user change the value in the entry using the up/down arrow keys when val is set to TRUE. This doesn't bring up the list, but rather replaces the current text in the entry with the next list entry (up or down, as your key choice indicates). It does this by searching in the list for the item corresponding to the current value in the entry and selecting the previous/next item accordingly. Usually in an entry the arrow keys are used to change focus (you can do that anyway using Tab). Note that when the current item is the last of the list and you press arrow-down it changes the focus (the same applies with the first item and arrow-up).

If the current value in the entry is not in the list, then the set_use_arrows() method is disabled.

The set_use_arrows_always() method, when val is TRUE, similarly allows the use of the up/down arrow keys to cycle through the choices in the dropdown list, except that it wraps around the values in the list, completely disabling the use of the up and down arrow keys for changing focus.

The set_case_sensitive() method toggles whether or not GTK+ searches for entries in a case sensitive manner. This is used when the Combo widget is asked to find a value from the list using the current entry in the text box. This completion can be performed in either a case sensitive or insensitive manner, depending upon the setting of this method. The Combo widget can also simply complete the current entry if the user presses the key combination MOD-1-Tab. MOD-1 is often mapped to the Alt key, by the xmodmap utility. Note, however that some window managers also use this key combination, which will override its use within GTK.

Now that we have a combo, tailored to look and act how we want it, all that remains is being able to get data from the combo. This is relatively straightforward. The majority of the time, all you are going to care about getting data from is the entry. The entry is accessed simply as combo.entry. The two principal things that you are going to want to do with it are attach to the "activate" signal, which indicates that the user has pressed the Return or Enter key, and read the text. The first is accomplished using something like:

  combo.entry.connect("activate", my_callback, my_data)

Getting the text at any arbitrary time is accomplished by simply using the entry method:

  string = combo.entry.get_text()

That's about all there is to it. There is a method:

  combo.disable_activate()

that will disable the activate signal on the entry widget in the combo. Personally, I can't think of why you'd want to use it, but it does exist.

pygtk2tutorial/sec-GtkWindow.html0100644000117200001670000000347110227357007016247 0ustar finlayfcfA.13. GtkWindow

A.13. GtkWindow

set-focus(window, widget, data)
pygtk2tutorial/sec-TreeViews.html0100644000117200001670000002402010227356770016246 0ustar finlayfcf14.3. TreeViews

14.3. TreeViews

A TreeView is basically a container for the TreeViewColumn and CellRenderer objects that do the actual display of the data store data. It also provides an interface to the displayed data rows and to the characteristics that control the data display.

14.3.1. Creating a TreeView

A TreeView is created using its constructor:

  treeview = gtk.TreeView(model=None)

where model is an object implementing the TreeModel interface (usually a ListStore or TreeStore). If model is None or not specified the TreeView will not be associated with a data store.

14.3.2. Getting and Setting the TreeView Model

The tree model providing the data store for a TreeView can be retrieved using the get_model() method:

  model = treeview.get_model()

A TreeModel may be simultaneously associated with more than one TreeView which automatically changes its display when the TreeModel data changes. While a TreeView always displays all of the rows of its tree model, it may display only some of the tree model columns. This means that two TreeViews associated with the same TreeModel may provide completely different views of the same data.

It's also important to realize that there is no preset relation between the columns in a TreeView and the columns of its TreeModel. That is, the fifth column of data in a TreeModel may be displayed in the first column of one TreeView and in the third column in another.

A TreeView can change its tree model using the set_model() method:

  treeview.set_model(model=None)

where model is an object implementing the TreeModel interface (e.g. ListStore and TreeStore). If model is None, the current model is discarded.

14.3.3. Setting TreeView Properties

The TreeView has a number of properties that can be managed using its methods:

"enable-search"Read-WriteIf TRUE, the user can search through columns interactively. Default is TRUE
"expander-column"Read-WriteThe column for the expander. Default is 0
"fixed-height-mode"Read-WriteIf TRUE, assume all rows have the same height thereby speeding up display. Available in GTK+ 2.4 and above. Default is FALSE
"hadjustment"Read-WriteThe horizontal Adjustment for the widget. New one created by default.
"headers-clickable"WriteIf TRUE, the column headers respond to click events. Default is FALSE
"headers-visible"Read-WriteIf TRUE, show the column header buttons. Default is TRUE
"model"Read-WriteThe model for the tree view. Default is None
"reorderable"Read-WriteIf TRUE, the view is reorderable. Default is FALSE
"rules-hint"Read-WriteIf TRUE, hint to the theme engine to draw rows in alternating colors. Default is FALSE
"search-column"Read-WriteThe model column to search when searching through code. Default is -1.
"vadjustment"Read-WriteThe vertical Adjustment for the widget. New one created by default.

The corresponding methods are:

  enable_search = treeview.get_enable_search()
  treeview.set_enable_search(enable_search)

  column = treeview.get_expander_column()
  treeview.set_expander_column(column)

  hadjustment = treeview.get_hadjustment()
  treeview.set_hadjustment(adjustment)

  treeview.set_headers_clickable(active)

  headers_visible = treeview.get_headers_visible()
  treeview.set_headers_visible(headers_visible)

  reorderable = treeview.get_reorderable()
  treeview.set_reorderable(reorderable)

  riles_hint = treeview.get_rules_hint()
  treeview.set_rules_hint(setting)

  column = treeview.get_search_column()
  treeview.set_search_column(column)

  vadjustment = treeview.get_vadjustment()
  treeview.set_vadjustment(adjustment)

Most of these are obvious from the description. However, the "enable-search" property requires the "search-column" property to be set to the number of a valid column in the tree model. Then when the user presses Control+f a search dialog is popped up that the user can type in. The first matching row will be automatically selected as the user types.

Likewise, the "headers-clickable" property really just sets the "clickable" property of the underlying TreeViewColumns. A TreeViewColumn will not be sortable unless the tree model implements the TreeSortable interface and the TreeViewColumn set_sort_column_id() method has been called with a valid column number.

The "reorderable" property enables the user to reorder the TreeView model by dragging and dropping the TreeView rows displayed.

The "rules-hint" property should only be set if you have lots of columns and think that alternating colors may help the user.

pygtk2tutorial/sec-SpinButtons.html0100644000117200001670000004603610227356762016635 0ustar finlayfcf9.10. Spin Buttons

9.10. Spin Buttons

The SpinButton widget is generally used to allow the user to select a value from a range of numeric values. It consists of a text entry box with up and down arrow buttons attached to the side. Selecting one of the buttons causes the value to "spin" up and down the range of possible values. The entry box may also be edited directly to enter a specific value.

The SpinButton allows the value to have zero or more decimal places and to be incremented/decremented in configurable steps. The action of holding down one of the buttons optionally results in an acceleration of change in the value according to how long it is depressed.

The SpinButton uses an Adjustment (see Chapter 7, Adjustments) object to hold information about the range of values that the spin button can take. This makes for a powerful SpinButton widget.

Recall that an Adjustment widget is created with the following function, which illustrates the information that it holds:

  adjustment = gtk.Adjustment(value=0, lower=0, upper=0, step_incr=0, page_incr=0, page_size=0)

These attributes of an Adjustment are used by the SpinButton in the following way:

valueinitial value for the Spin Button
lowerlower range value
upperupper range value
step_incrementvalue to increment/decrement when pressing mouse button-1 on a button
page_incrementvalue to increment/decrement when pressing mouse button-2 on a button
page_sizeunused

Additionally, mouse button-3 can be used to jump directly to the upper or lower values when used to select one of the buttons. Lets look at how to create a SpinButton:

  spin_button = gtk.SpinButton(adjustment=None, climb_rate=0.0, digits=0)

The climb_rate argument take a value between 0.0 and 1.0 and indicates the amount of acceleration that the SpinButton has. The digits argument specifies the number of decimal places to which the value will be displayed.

A SpinButton can be reconfigured after creation using the following method:

  spin_button.configure(adjustment, climb_rate, digits)

The spin_button argument specifies the SpinButton widget that is to be reconfigured. The other arguments are as specified above.

The adjustment can be set and retrieved independently using the following two methods:

  spin_button.set_adjustment(adjustment)

  adjustment = spin_button.get_adjustment()

The number of decimal places can also be altered using:

  spin_button.set_digits(digits)

The value that a SpinButton is currently displaying can be changed using the following method:

  spin_button.set_value(value)

The current value of a SpinButton can be retrieved as either a floating point or integer value with the following methods:

  float_value = spin_button.get_value()

  int_value = spin_button.get_value_as_int()

If you want to alter the value of a SpinButton relative to its current value, then the following method can be used:

  spin_button.spin(direction, increment)

The direction parameter can take one of the following values:

  SPIN_STEP_FORWARD
  SPIN_STEP_BACKWARD
  SPIN_PAGE_FORWARD
  SPIN_PAGE_BACKWARD
  SPIN_HOME
  SPIN_END
  SPIN_USER_DEFINED

This method packs in quite a bit of functionality, which I will attempt to clearly explain. Many of these settings use values from the Adjustment object that is associated with a SpinButton.

SPIN_STEP_FORWARD and SPIN_STEP_BACKWARD change the value of the SpinButton by the amount specified by increment, unless increment is equal to 0, in which case the value is changed by the value of step_increment in the Adjustment.

SPIN_PAGE_FORWARD and SPIN_PAGE_BACKWARD simply alter the value of the SpinButton by increment.

SPIN_HOME sets the value of the SpinButton to the bottom of the Adjustment range.

SPIN_END sets the value of the SpinButton to the top of the Adjustment range.

SPIN_USER_DEFINED simply alters the value of the SpinButton by the specified amount.

We move away from methods for setting and retrieving the range attributes of the SpinButton now, and move onto methods that effect the appearance and behavior of the SpinButton widget itself.

The first of these methods is used to constrain the text box of the SpinButton such that it may only contain a numeric value. This prevents a user from typing anything other than numeric values into the text box of a SpinButton:

  spin_button.set_numeric(numeric)

numeric is TRUE to constrain the text entry to numeric values or FALSE to unconstrain the text entry.

You can set whether a SpinButton will wrap around between the upper and lower range values with the following method:

  spin_button.set_wrap(wrap)

The SpinButton will wrap when wrap is set to TRUE.

You can set a SpinButton to round the value to the nearest step_increment, which is set within the Adjustment object used with the SpinButton. This is accomplished with the following method when snap_to_ticks is TRUE:

  spin_button.set_snap_to_ticks(snap_to_ticks)

The update policy of a SpinButton can be changed with the following method:

  spin_button.set_update_policy(policy)

The possible values of policy are:

  UPDATE_ALWAYS

  UPDATE_IF_VALID

These policies affect the behavior of a SpinButton when parsing inserted text and syncing its value with the values of the Adjustment.

In the case of UPDATE_IF_VALID the SpinButton value only gets changed if the text input is a numeric value that is within the range specified by the Adjustment. Otherwise the text is reset to the current value.

In case of UPDATE_ALWAYS we ignore errors while converting text into a numeric value.

Finally, you can explicitly request that a SpinButton update itself:

  spin_button.update()

The spinbutton.py example program illustrates the use of spinbuttons including setting a number of characteristics. Figure 9.11, “Spin Button Example” shows the result of running the example program:

Figure 9.11. Spin Button Example

Spin Button Example

The spinbutton.py source code is:

    1	#!/usr/bin/env python
    2	
    3	# example spinbutton.py
    4	
    5	import pygtk
    6	pygtk.require('2.0')
    7	import gtk
    8	
    9	class SpinButtonExample:
   10	    def toggle_snap(self, widget, spin):
   11	        spin.set_snap_to_ticks(widget.get_active())
   12	
   13	    def toggle_numeric(self, widget, spin):
   14	        spin.set_numeric(widget.get_active())
   15	
   16	    def change_digits(self, widget, spin, spin1):
   17	        spin1.set_digits(spin.get_value_as_int())
   18	
   19	    def get_value(self, widget, data, spin, spin2, label):
   20	        if data == 1:
   21	            buf = "%d" % spin.get_value_as_int()
   22	        else:
   23	            buf = "%0.*f" % (spin2.get_value_as_int(),
   24	                             spin.get_value())
   25	        label.set_text(buf)
   26	
   27	    def __init__(self):
   28	        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   29	        window.connect("destroy", lambda w: gtk.main_quit())
   30	        window.set_title("Spin Button")
   31	
   32	        main_vbox = gtk.VBox(False, 5)
   33	        main_vbox.set_border_width(10)
   34	        window.add(main_vbox)
   35	
   36	        frame = gtk.Frame("Not accelerated")
   37	        main_vbox.pack_start(frame, True, True, 0)
   38	  
   39	        vbox = gtk.VBox(False, 0)
   40	        vbox.set_border_width(5)
   41	        frame.add(vbox)
   42	
   43	        # Day, month, year spinners
   44	        hbox = gtk.HBox(False, 0)
   45	        vbox.pack_start(hbox, True, True, 5)
   46	  
   47	        vbox2 = gtk.VBox(False, 0)
   48	        hbox.pack_start(vbox2, True, True, 5)
   49	
   50	        label = gtk.Label("Day :")
   51	        label.set_alignment(0, 0.5)
   52	        vbox2.pack_start(label, False, True, 0)
   53	  
   54	        adj = gtk.Adjustment(1.0, 1.0, 31.0, 1.0, 5.0, 0.0)
   55	        spinner = gtk.SpinButton(adj, 0, 0)
   56	        spinner.set_wrap(True)
   57	        vbox2.pack_start(spinner, False, True, 0)
   58	  
   59	        vbox2 = gtk.VBox(False, 0)
   60	        hbox.pack_start(vbox2, True, True, 5)
   61	  
   62	        label = gtk.Label("Month :")
   63	        label.set_alignment(0, 0.5)
   64	        vbox2.pack_start(label, False, True, 0)
   65	
   66	        adj = gtk.Adjustment(1.0, 1.0, 12.0, 1.0, 5.0, 0.0)
   67	        spinner = gtk.SpinButton(adj, 0, 0)
   68	        spinner.set_wrap(True)
   69	        vbox2.pack_start(spinner, False, True, 0)
   70	  
   71	        vbox2 = gtk.VBox(False, 0)
   72	        hbox.pack_start(vbox2, True, True, 5)
   73	  
   74	        label = gtk.Label("Year :")
   75	        label.set_alignment(0, 0.5)
   76	        vbox2.pack_start(label, False, True, 0)
   77	  
   78	        adj = gtk.Adjustment(1998.0, 0.0, 2100.0, 1.0, 100.0, 0.0)
   79	        spinner = gtk.SpinButton(adj, 0, 0)
   80	        spinner.set_wrap(False)
   81	        spinner.set_size_request(55, -1)
   82	        vbox2.pack_start(spinner, False, True, 0)
   83	  
   84	        frame = gtk.Frame("Accelerated")
   85	        main_vbox.pack_start(frame, True, True, 0)
   86	  
   87	        vbox = gtk.VBox(False, 0)
   88	        vbox.set_border_width(5)
   89	        frame.add(vbox)
   90	  
   91	        hbox = gtk.HBox(False, 0)
   92	        vbox.pack_start(hbox, False, True, 5)
   93	  
   94	        vbox2 = gtk.VBox(False, 0)
   95	        hbox.pack_start(vbox2, True, True, 5)
   96	  
   97	        label = gtk.Label("Value :")
   98	        label.set_alignment(0, 0.5)
   99	        vbox2.pack_start(label, False, True, 0)
  100	  
  101	        adj = gtk.Adjustment(0.0, -10000.0, 10000.0, 0.5, 100.0, 0.0)
  102	        spinner1 = gtk.SpinButton(adj, 1.0, 2)
  103	        spinner1.set_wrap(True)
  104	        spinner1.set_size_request(100, -1)
  105	        vbox2.pack_start(spinner1, False, True, 0)
  106	  
  107	        vbox2 = gtk.VBox(False, 0)
  108	        hbox.pack_start(vbox2, True, True, 5)
  109	  
  110	        label = gtk.Label("Digits :")
  111	        label.set_alignment(0, 0.5)
  112	        vbox2.pack_start(label, False, True, 0)
  113	  
  114	        adj = gtk.Adjustment(2, 1, 5, 1, 1, 0)
  115	        spinner2 = gtk.SpinButton(adj, 0.0, 0)
  116	        spinner2.set_wrap(True)
  117	        adj.connect("value_changed", self.change_digits, spinner2, spinner1)
  118	        vbox2.pack_start(spinner2, False, True, 0)
  119	  
  120	        hbox = gtk.HBox(False, 0)
  121	        vbox.pack_start(hbox, False, True, 5)
  122	
  123	        button = gtk.CheckButton("Snap to 0.5-ticks")
  124	        button.connect("clicked", self.toggle_snap, spinner1)
  125	        vbox.pack_start(button, True, True, 0)
  126	        button.set_active(True)
  127	  
  128	        button = gtk.CheckButton("Numeric only input mode")
  129	        button.connect("clicked", self.toggle_numeric, spinner1)
  130	        vbox.pack_start(button, True, True, 0)
  131	        button.set_active(True)
  132	  
  133	        val_label = gtk.Label("")
  134	  
  135	        hbox = gtk.HBox(False, 0)
  136	        vbox.pack_start(hbox, False, True, 5)
  137	        button = gtk.Button("Value as Int")
  138	        button.connect("clicked", self.get_value, 1, spinner1, spinner2,
  139	                       val_label)
  140	        hbox.pack_start(button, True, True, 5)
  141	  
  142	        button = gtk.Button("Value as Float")
  143	        button.connect("clicked", self.get_value, 2, spinner1, spinner2,
  144	                       val_label)
  145	        hbox.pack_start(button, True, True, 5)
  146	  
  147	        vbox.pack_start(val_label, True, True, 0)
  148	        val_label.set_text("0")
  149	  
  150	        hbox = gtk.HBox(False, 0)
  151	        main_vbox.pack_start(hbox, False, True, 0)
  152	  
  153	        button = gtk.Button("Close")
  154	        button.connect("clicked", lambda w: gtk.main_quit())
  155	        hbox.pack_start(button, True, True, 5)
  156	        window.show_all()
  157	
  158	def main():
  159	    gtk.main()
  160	    return 0
  161	
  162	if __name__ == "__main__":
  163	    SpinButtonExample()
  164	    main()
pygtk2tutorial/ch-GettingStarted.html0100644000117200001670000003220310227356757017110 0ustar finlayfcfChapter 2. Getting Started

Chapter 2. Getting Started

To begin our introduction to PyGTK, we'll start with the simplest program possible. This program (base.py) will create a 200x200 pixel window and has no way of exiting except to be killed by using the shell.

    1   #!/usr/bin/env python
    2
    3   # example base.py
    4
    5   import pygtk
    6   pygtk.require('2.0')
    7   import gtk
    8
    9   class Base:
   10       def __init__(self):
   11           self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   12           self.window.show()
   13
   14       def main(self):
   15           gtk.main()
   16
   17   print __name__
   18   if __name__ == "__main__":
   19       base = Base()
   20       base.main()

You can run the above program using:

  python base.py

If base.py is made executable and can be found in your PATH, it can be run using:

  base.py

Line 1 will invoke python to run base.py in this case. Lines 5-6 help differentiate between various versions of PyGTK that may be installed on your system. These lines specify that we want to use PyGTK version 2.0 which covers all versions of PyGTK with the major number 2. This prevents the program from using the earlier version of PyGTK if it happens to be installed on your system. Lines 18-20 check if the __name__ variable is "__main__" which indicates that the program is being run directly from python and not being imported into a running python interpreter. In this case the program creates a new instance of the Base class and saves a reference to it in the variable base. It then invokes the method main() to start the GTK+ event processing loop.

A window similar to Figure 2.1, “Simple PyGTK Window” should popup on your display.

Figure 2.1. Simple PyGTK Window

Simple PyGTK Window

The first line allows the program base.py to be invoked from a Linux or Unix shell program assuming that python is found your PATH. This line will be the first line in all the example programs.

Lines 5-7 import the PyGTK 2 module and initializes the GTK+ environment. The PyGTK module defines the python interfaces to the GTK+ functions that will be used in the program. For those familiar with GTK+ the initialization includes calling the gtk_init() function. This sets up a few things for us such as the default visual and color map, default signal handlers, and checks the arguments passed to your application on the command line, looking for one or more of the following:

  • --gtk-module
  • --g-fatal-warnings
  • --gtk-debug
  • --gtk-no-debug
  • --gdk-debug
  • --gdk-no-debug
  • --display
  • --sync
  • --name
  • --class

It removes these from the argument list, leaving anything it does not recognize for your application to parse or ignore. These are a set of standard arguments accepted by all GTK+ applications.

Lines 9-15 define a python class named Base that defines a class instance initialization method __init__(). The __init__() function creates a top level window (line 11) and directs GTK+ to display it (line 12). The gtk.Window is created in line 11 with the argument gtk.WINDOW_TOPLEVEL that specifies that we want the window to undergo window manager decoration and placement. Rather than create a window of 0x0 size, a window without children is set to 200x200 by default so you can still manipulate it.

Lines 14-15 define the main() method that calls the PyGTK main() function that, in turn, invokes the GTK+ main event processing loop to handle mouse and keyboard events as well as window events.

Lines 18-20 allow the program to start automatically if called directly or passed as an argument to the python interpreter; in these cases the program name contained in the python variable __name__ will be the string "__main__" and the code in lines 18-20 will be executed. If the program is loaded into a running python interpreter using an import statement, lines 18-20 will not be executed.

Line 19 creates an instance of the Base class called base. A gtk.Window is created and displayed as a result.

Line 20 calls the main() method of the Base class which starts the GTK+ event processing loop. When control reaches this point, GTK+ will sleep waiting for X events (such as button or key presses), timeouts, or file IO notifications to occur. In our simple example, however, events are ignored.

2.1. Hello World in PyGTK

Now for a program with a widget (a button). It's the PyGTK version of the classic hello world program (helloworld.py ).

    1   #!/usr/bin/env python
    2
    3   # example helloworld.py
    4
    5   import pygtk
    6   pygtk.require('2.0')
    7   import gtk
    8
    9   class HelloWorld:
   10
   11       # This is a callback function. The data arguments are ignored
   12       # in this example. More on callbacks below.
   13       def hello(self, widget, data=None):
   14           print "Hello World"
   15
   16       def delete_event(self, widget, event, data=None):
   17           # If you return FALSE in the "delete_event" signal handler,
   18           # GTK will emit the "destroy" signal. Returning TRUE means
   19           # you don't want the window to be destroyed.
   20           # This is useful for popping up 'are you sure you want to quit?'
   21           # type dialogs.
   22           print "delete event occurred"
   23
   24           # Change FALSE to TRUE and the main window will not be destroyed
   25           # with a "delete_event".
   26           return False
   27
   28       # Another callback
   29       def destroy(self, widget, data=None):
   30           gtk.main_quit()
   31
   32       def __init__(self):
   33           # create a new window
   34           self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   35
   36           # When the window is given the "delete_event" signal (this is given
   37           # by the window manager, usually by the "close" option, or on the
   38           # titlebar), we ask it to call the delete_event () function
   39           # as defined above. The data passed to the callback
   40           # function is NULL and is ignored in the callback function.
   41           self.window.connect("delete_event", self.delete_event)
   42
   43           # Here we connect the "destroy" event to a signal handler.
   44           # This event occurs when we call gtk_widget_destroy() on the window,
   45           # or if we return FALSE in the "delete_event" callback.
   46           self.window.connect("destroy", self.destroy)
   47
   48           # Sets the border width of the window.
   49           self.window.set_border_width(10)
   50
   51           # Creates a new button with the label "Hello World".
   52           self.button = gtk.Button("Hello World")
   53
   54           # When the button receives the "clicked" signal, it will call the
   55           # function hello() passing it None as its argument.  The hello()
   56           # function is defined above.
   57           self.button.connect("clicked", self.hello, None)
   58
   59           # This will cause the window to be destroyed by calling
   60           # gtk_widget_destroy(window) when "clicked".  Again, the destroy
   61           # signal could come from here, or the window manager.
   62           self.button.connect_object("clicked", gtk.Widget.destroy, self.window)
   63
   64           # This packs the button into the window (a GTK container).
   65           self.window.add(self.button)
   66
   67           # The final step is to display this newly created widget.
   68           self.button.show()
   69
   70           # and the window
   71           self.window.show()
   72
   73       def main(self):
   74           # All PyGTK applications must have a gtk.main(). Control ends here
   75           # and waits for an event to occur (like a key press or mouse event).
   76           gtk.main()
   77
   78   # If the program is run directly or passed as an argument to the python
   79   # interpreter then create a HelloWorld instance and show it
   80   if __name__ == "__main__":
   81       hello = HelloWorld()
   82       hello.main()

Figure 2.2, “Hello World Example Program” shows the window created by helloworld.py.

Figure 2.2. Hello World Example Program

Hello World Example Program

The variables and functions that are defined in the PyGTK module are named as gtk.*. For example, the helloworld.py program uses:

  False
  gtk.mainquit()
  gtk.Window()
  gtk.Button()

from the PyGTK module. In future sections I will not specify the gtk module prefix but it will be assumed. The example programs will of course use the module prefixes.

pygtk2tutorial/sec-DrawingMethods.html0100644000117200001670000006051210227356765017262 0ustar finlayfcf12.2. Drawing Methods

12.2. Drawing Methods

There are a general set of methods that can be used to draw onto the drawing area 'canvas'. These drawing methods can be used for any gtk.gdk.Drawable subclass (either a gtk.gdk.Window or a gtk.gdk.Pixmap). The drawing methods are:

  drawable.draw_point(gc, x, y)

gc is the Graphics Context to be used to do the drawing.

x and y are the coordinates of the point.

  drawable.draw_line(gc, x1, y1, x2, y2)

gc is the Graphics Context.

x1 and y1 specify the starting point of the line. x2 and y2 specify the ending point of the line.

  drawable.draw_rectangle(gc, filled, x, y, width, height)

where gc is the Graphics Context.

filled is a boolean indicating the rectangle should be filled with the foreground color if TRUE or not filled, if FALSE.

x and y are the top left corner of the rectangle.

width and height are the width and height of the rectangle.

  drawable.draw_arc(gc, filled, x, y, width, height, angle1, angle2)

gc is the Graphics Context.

filled is a boolean indicating the arc should be filled with the foreground color if TRUE or not filled, if FALSE.

x and y are the top left corner of the bounding rectangle. width and height are the width and height of the bounding rectangle.

angle1 is the start angle of the arc, relative to the 3 o'clock position, counter-clockwise, in 1/64ths of a degree.

angle2 is the end angle of the arc, relative to angle1, in 1/64ths of a degree counter clockwise.

  drawable.draw_polygon(gc, filled, points)

gc is the Graphics Context.

filled is a boolean indicating the polygon should be filled with the foreground color if TRUE or not filled, if FALSE.

points is a list of coordinate pairs in tuples e.g. [ (0,0), (2,5), (3,7), (4,11) ] of the points to be drawn as a connected polygon.

  drawable.draw_string(font, gc, x, y, string)

  drawable.draw_text(font, gc, x, y, string)

font is the gtk.gdk.Font to use to render the string.

gc is the Graphics Context.

x and y are the coordinates of the point to start rendering the string i.e the left baseline.

string is the string of characters to render.

Note

Both the draw_string() and draw_text() methods are deprecated - use a pango.Layout instead with the draw_layout() method.

  drawable.draw_layout(gc, x, y, layout)

gc is the Graphics Context.

x and y are the coordinates of the point to start rendering the layout.

layout is the pango.Layout that is to be rendered.

  drawable.draw_drawable(gc, src, xsrc, ysrc, xdest, ydest, width, height)

gc is the Graphics Context.

src is the source drawable.

xsrc and ysrc are the coordinates of the top left rectangle in the source drawable.

xdest and ydest are the coordinates of the top left corner in the drawing area.

width and height are the width and height of the source drawable area to be copied to the drawable. If width or height is -1 then the full width or height of the drawable is used.

  drawable.draw_image(gc, image, xsrc, ysrc, xdest, ydest, width, height)

gc is the Graphics Context.

image is the source image.

xsrc and ysrc are the coordinates of the top left rectangle in the source drawable.

xdest and ydest are the coordinates of the top left corner in the drawing area.

width and height are the width and height of the source drawable area to be copied to the drawable. If width or height is -1 then the full width or height of the image is used.

  drawable.draw_points(gc, points)

gc is the Graphics Context.

points is a list or tuple of coordinate pairs in tuples e.g. [ (0,0), (2,5), (3,7), (4,11) ] of the points to be drawn.

  drawable.draw_segments(gc, segs)

gc is the Graphics Context.

segs is a list or tuple of start and end coordinate pairs in tuples e.g. [ (0,0, 1,5), (2,5, 1,7), (3,7, 1,11), (4,11, 1,13) ] of the line segments to be drawn.

  drawable.draw_lines(gc, points)

gc is the Graphics Context.

points is a list or tuple of coordinate pairs in tuples e.g. [ (0,0), (2,5), (3,7), (4,11) ] of the points to be connected with lines.

  drawable.draw_rgb_image(gc, x, y, width, height, dith, rgb_buf, rowstride)

  drawable.draw_rgb_32_image(gc, x, y, width, height, dith, buf, rowstride)

  drawable.draw_gray_image(gc, x, y, width, height, dith, buf, rowstride)

gc is the Graphics Context.

x and y are the top left corner of the image bounding rectangle.

width and height are the width and height of the image bounding rectangle.

dith is the dither mode as described below

For the draw_rgb_image() method, rgb_buf is the RGB Image data packed in a string as a sequence of 8-bit RGB pixel triplets. For the draw_rgb_32_image() method, buf is the RGB Image data packed in a string as a sequence of 8-bit RGB pixel triplets with 8-bit padding (4 characters per RGB pixel). For the draw_gray_image() method, buf is the gray image data packed in a string as 8-bit pixel data.

rowstride is the number of characters from the start of one row to the start of the next row of the image. rowstride usually defaults to: 3 * width for the draw_rgb_image() method; 4 * width for the draw_rgb_32_image(); and, width for the draw_gray_image() method. If rowstride is 0 the line will be replicated height times.

The dither modes are:

  RGB_DITHER_NONE    # Never use dithering.

  RGB_DITHER_NORMAL  # Use dithering in 8 bits per pixel (and below) only.

  RGB_DITHER_MAX     # Use dithering in 16 bits per pixel and below.

The drawingarea.py example program demonstrates the use of most of the DrawingArea methods. It also puts the DrawingArea inside a ScrolledWindow and adds horizontal and vertical Ruler widgets. Figure 12.1, “Drawing Area Example” shows the program in operation:

Figure 12.1. Drawing Area Example

Drawing Area Example

The drawingarea.py source code is below and uses the gtk.xpm pixmap:

    1   #!/usr/bin/env python
    2
    3   # example drawingarea.py
    4
    5   import pygtk
    6   pygtk.require('2.0')
    7   import gtk
    8   import operator
    9   import time
   10   import string
   11
   12   class DrawingAreaExample:
   13       def __init__(self):
   14           window = gtk.Window(gtk.WINDOW_TOPLEVEL)
   15           window.set_title("Drawing Area Example")
   16           window.connect("destroy", lambda w: gtk.main_quit())
   17           self.area = gtk.DrawingArea()
   18           self.area.set_size_request(400, 300)
   19           self.pangolayout = self.area.create_pango_layout("")
   20           self.sw = gtk.ScrolledWindow()
   21           self.sw.add_with_viewport(self.area)
   22           self.table = gtk.Table(2,2)
   23           self.hruler = gtk.HRuler()
   24           self.vruler = gtk.VRuler()
   25           self.hruler.set_range(0, 400, 0, 400)
   26           self.vruler.set_range(0, 300, 0, 300)
   27           self.table.attach(self.hruler, 1, 2, 0, 1, yoptions=0)
   28           self.table.attach(self.vruler, 0, 1, 1, 2, xoptions=0)
   29           self.table.attach(self.sw, 1, 2, 1, 2)
   30           window.add(self.table)
   31           self.area.set_events(gtk.gdk.POINTER_MOTION_MASK |
   32                                gtk.gdk.POINTER_MOTION_HINT_MASK )
   33           self.area.connect("expose-event", self.area_expose_cb)
   34           def motion_notify(ruler, event):
   35               return ruler.emit("motion_notify_event", event)
   36           self.area.connect_object("motion_notify_event", motion_notify,
   37                                    self.hruler)
   38           self.area.connect_object("motion_notify_event", motion_notify,
   39                                    self.vruler)
   40           self.hadj = self.sw.get_hadjustment()
   41           self.vadj = self.sw.get_vadjustment()
   42           def val_cb(adj, ruler, horiz):
   43               if horiz:
   44                   span = self.sw.get_allocation()[3]
   45               else:
   46                   span = self.sw.get_allocation()[2]
   47               l,u,p,m = ruler.get_range()
   48               v = adj.value
   49               ruler.set_range(v, v+span, p, m)
   50               while gtk.events_pending():
   51                   gtk.main_iteration()
   52           self.hadj.connect('value-changed', val_cb, self.hruler, True)
   53           self.vadj.connect('value-changed', val_cb, self.vruler, False)
   54           def size_allocate_cb(wid, allocation):
   55               x, y, w, h = allocation
   56               l,u,p,m = self.hruler.get_range()
   57               m = max(m, w)
   58               self.hruler.set_range(l, l+w, p, m)
   59               l,u,p,m = self.vruler.get_range()
   60               m = max(m, h)
   61               self.vruler.set_range(l, l+h, p, m)
   62           self.sw.connect('size-allocate', size_allocate_cb)
   63           self.area.show()
   64           self.hruler.show()
   65           self.vruler.show()
   66           self.sw.show()
   67           self.table.show()
   68           window.show()
   69
   70       def area_expose_cb(self, area, event):
   71           self.style = self.area.get_style()
   72           self.gc = self.style.fg_gc[gtk.STATE_NORMAL]
   73           self.draw_point(10,10)
   74           self.draw_points(110, 10)
   75           self.draw_line(210, 10)
   76           self.draw_lines(310, 10)
   77           self.draw_segments(10, 100)
   78           self.draw_rectangles(110, 100)
   79           self.draw_arcs(210, 100)
   80           self.draw_pixmap(310, 100)
   81           self.draw_polygon(10, 200)
   82           self.draw_rgb_image(110, 200)
   83           return True
   84
   85       def draw_point(self, x, y):
   86           self.area.window.draw_point(self.gc, x+30, y+30)
   87           self.pangolayout.set_text("Point")
   88           self.area.window.draw_layout(self.gc, x+5, y+50, self.pangolayout)
   89           return
   90
   91       def draw_points(self, x, y):
   92           points = [(x+10,y+10), (x+10,y), (x+40,y+30),
   93                     (x+30,y+10), (x+50,y+10)]
   94           self.area.window.draw_points(self.gc, points)
   95           self.pangolayout.set_text("Points")
   96           self.area.window.draw_layout(self.gc, x+5, y+50, self.pangolayout)
   97           return
   98
   99       def draw_line(self, x, y):
  100           self.area.window.draw_line(self.gc, x+10, y+10, x+20, y+30)
  101           self.pangolayout.set_text("Line")
  102           self.area.window.draw_layout(self.gc, x+5, y+50, self.pangolayout)
  103           return
  104
  105       def draw_lines(self, x, y):
  106           points = [(x+10,y+10), (x+10,y), (x+40,y+30),
  107                     (x+30,y+10), (x+50,y+10)]
  108           self.area.window.draw_lines(self.gc, points)
  109           self.pangolayout.set_text("Lines")
  110           self.area.window.draw_layout(self.gc, x+5, y+50, self.pangolayout)
  111           return
  112
  113       def draw_segments(self, x, y):
  114           segments = ((x+20,y+10, x+20,y+70), (x+60,y+10, x+60,y+70),
  115               (x+10,y+30 , x+70,y+30), (x+10, y+50 , x+70, y+50))
  116           self.area.window.draw_segments(self.gc, segments)
  117           self.pangolayout.set_text("Segments")
  118           self.area.window.draw_layout(self.gc, x+5, y+80, self.pangolayout)
  119           return
  120
  121       def draw_rectangles(self, x, y):
  122           self.area.window.draw_rectangle(self.gc, False, x, y, 80, 70)
  123           self.area.window.draw_rectangle(self.gc, True, x+10, y+10, 20, 20)
  124           self.area.window.draw_rectangle(self.gc, True, x+50, y+10, 20, 20)
  125           self.area.window.draw_rectangle(self.gc, True, x+20, y+50, 40, 10)
  126           self.pangolayout.set_text("Rectangles")
  127           self.area.window.draw_layout(self.gc, x+5, y+80, self.pangolayout)
  128           return
  129
  130       def draw_arcs(self, x, y):
  131           self.area.window.draw_arc(self.gc, False, x+10, y, 70, 70,
  132                                     0, 360*64)
  133           self.area.window.draw_arc(self.gc, True, x+30, y+20, 10, 10,
  134                                     0, 360*64)
  135           self.area.window.draw_arc(self.gc, True, x+50, y+20, 10, 10,
  136                                     0, 360*64)
  137           self.area.window.draw_arc(self.gc, True, x+30, y+10, 30, 50,
  138                                     210*64, 120*64)
  139           self.pangolayout.set_text("Arcs")
  140           self.area.window.draw_layout(self.gc, x+5, y+80, self.pangolayout)
  141           return
  142
  143       def draw_pixmap(self, x, y):
  144           pixmap, mask = gtk.gdk.pixmap_create_from_xpm(
  145               self.area.window, self.style.bg[gtk.STATE_NORMAL], "gtk.xpm")
  146
  147           self.area.window.draw_drawable(self.gc, pixmap, 0, 0, x+15, y+25,
  148                                          -1, -1)
  149           self.pangolayout.set_text("Pixmap")
  150           self.area.window.draw_layout(self.gc, x+5, y+80, self.pangolayout)
  151           return
  152
  153       def draw_polygon(self, x, y):
  154           points = [(x+10,y+60), (x+10,y+20), (x+40,y+70),
  155                     (x+30,y+30), (x+50,y+40)]
  156           self.area.window.draw_polygon(self.gc, True, points)
  157           self.pangolayout.set_text("Polygon")
  158           self.area.window.draw_layout(self.gc, x+5, y+80, self.pangolayout)
  159           return
  160
  161       def draw_rgb_image(self, x, y):
  162           b = 80*3*80*['\0']
  163           for i in range(80):
  164               for j in range(80):
  165                   b[3*80*i+3*j] = chr(255-3*i)
  166                   b[3*80*i+3*j+1] = chr(255-3*abs(i-j))
  167                   b[3*80*i+3*j+2] = chr(255-3*j)
  168           buff = string.join(b, '')
  169           self.area.window.draw_rgb_image(self.gc, x, y, 80, 80,
  170                                    gtk.gdk.RGB_DITHER_NONE, buff, 80*3)
  171           self.pangolayout.set_text("RGB Image")
  172           self.area.window.draw_layout(self.gc, x+5, y+80, self.pangolayout)
  173           return
  174
  175   def main():
  176       gtk.main()
  177       return 0
  178
  179   if __name__ == "__main__":
  180       DrawingAreaExample()
  181       main()