diff options
38 files changed, 12848 insertions, 503 deletions
diff --git a/chrome/app/nibs/BookmarkBarFolderWindow.xib b/chrome/app/nibs/BookmarkBarFolderWindow.xib new file mode 100644 index 0000000..e004b8c --- /dev/null +++ b/chrome/app/nibs/BookmarkBarFolderWindow.xib @@ -0,0 +1,2593 @@ +<?xml version="1.0" encoding="UTF-8"?> +<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10"> + <data> + <int key="IBDocument.SystemTarget">1050</int> + <string key="IBDocument.SystemVersion">10F2108</string> + <string key="IBDocument.InterfaceBuilderVersion">823</string> + <string key="IBDocument.AppKitVersion">1038.29</string> + <string key="IBDocument.HIToolboxVersion">461.00</string> + <object class="NSMutableDictionary" key="IBDocument.PluginVersions"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="NS.object.0">823</string> + </object> + <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> + <bool key="EncodedWithXMLCoder">YES</bool> + <integer value="100"/> + </object> + <object class="NSArray" key="IBDocument.PluginDependencies"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + </object> + <object class="NSMutableDictionary" key="IBDocument.Metadata"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys" id="0"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + </object> + <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSCustomObject" id="1001"> + <string key="NSClassName">BookmarkBarFolderController</string> + </object> + <object class="NSCustomObject" id="1003"> + <string key="NSClassName">FirstResponder</string> + </object> + <object class="NSCustomObject" id="1004"> + <string key="NSClassName">NSApplication</string> + </object> + <object class="NSWindowTemplate" id="1005"> + <int key="NSWindowStyleMask">15</int> + <int key="NSWindowBacking">2</int> + <string key="NSWindowRect">{{196, 240}, {480, 270}}</string> + <int key="NSWTFlags">536870912</int> + <string key="NSWindowTitle">BmbPopUpWindow</string> + <string key="NSWindowClass">BookmarkBarFolderWindow</string> + <nil key="NSViewClass"/> + <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string> + <object class="NSView" key="NSWindowView" id="1006"> + <reference key="NSNextResponder"/> + <int key="NSvFlags">274</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSCustomView" id="941574830"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">274</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSScrollView" id="680424923"> + <reference key="NSNextResponder" ref="941574830"/> + <int key="NSvFlags">274</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSClipView" id="730183354"> + <reference key="NSNextResponder" ref="680424923"/> + <int key="NSvFlags">2304</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSCustomView" id="762431297"> + <reference key="NSNextResponder" ref="730183354"/> + <int key="NSvFlags">298</int> + <string key="NSFrameSize">{472, 270}</string> + <reference key="NSSuperview" ref="730183354"/> + <string key="NSClassName">BookmarkBarFolderView</string> + </object> + </object> + <string key="NSFrameSize">{472, 270}</string> + <reference key="NSSuperview" ref="680424923"/> + <reference key="NSNextKeyView" ref="762431297"/> + <reference key="NSDocView" ref="762431297"/> + <object class="NSColor" key="NSBGColor"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">controlColor</string> + <object class="NSColor" key="NSColor"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes> + </object> + </object> + <int key="NScvFlags">6</int> + </object> + <object class="NSScroller" id="453279292"> + <reference key="NSNextResponder" ref="680424923"/> + <int key="NSvFlags">-2147483392</int> + <string key="NSFrame">{{-100, -100}, {15, 285}}</string> + <reference key="NSSuperview" ref="680424923"/> + <reference key="NSTarget" ref="680424923"/> + <string key="NSAction">_doScroller:</string> + <double key="NSCurValue">1</double> + <double key="NSPercent">0.96363627910614014</double> + </object> + <object class="NSScroller" id="1057944048"> + <reference key="NSNextResponder" ref="680424923"/> + <int key="NSvFlags">-2147483392</int> + <string key="NSFrame">{{-100, -100}, {480, 15}}</string> + <reference key="NSSuperview" ref="680424923"/> + <int key="NSsFlags">1</int> + <reference key="NSTarget" ref="680424923"/> + <string key="NSAction">_doScroller:</string> + <double key="NSPercent">0.50602412223815918</double> + </object> + </object> + <string key="NSFrame">{{4, 0}, {472, 270}}</string> + <reference key="NSSuperview" ref="941574830"/> + <reference key="NSNextKeyView" ref="730183354"/> + <int key="NSsFlags">0</int> + <reference key="NSVScroller" ref="453279292"/> + <reference key="NSHScroller" ref="1057944048"/> + <reference key="NSContentView" ref="730183354"/> + </object> + <object class="NSCustomView" id="953069288"> + <reference key="NSNextResponder" ref="941574830"/> + <int key="NSvFlags">-2147483358</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSImageView" id="865301746"> + <reference key="NSNextResponder" ref="953069288"/> + <int key="NSvFlags">269</int> + <object class="NSMutableSet" key="NSDragTypes"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="set.sortedObjects"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>Apple PDF pasteboard type</string> + <string>Apple PICT pasteboard type</string> + <string>Apple PNG pasteboard type</string> + <string>NSFilenamesPboardType</string> + <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string> + <string>NeXT TIFF v4.0 pasteboard type</string> + </object> + </object> + <string key="NSFrame">{{215, 1}, {48, 20}}</string> + <reference key="NSSuperview" ref="953069288"/> + <int key="NSViewLayerContentsRedrawPolicy">2</int> + <bool key="NSEnabled">YES</bool> + <object class="NSImageCell" key="NSCell" id="471443416"> + <int key="NSCellFlags">130560</int> + <int key="NSCellFlags2">33554432</int> + <object class="NSCustomResource" key="NSContents"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">menu_overflow_down</string> + </object> + <int key="NSAlign">0</int> + <int key="NSScale">2</int> + <int key="NSStyle">0</int> + <bool key="NSAnimates">NO</bool> + </object> + <bool key="NSEditable">YES</bool> + </object> + </object> + <string key="NSFrameSize">{480, 23}</string> + <reference key="NSSuperview" ref="941574830"/> + <int key="NSViewLayerContentsRedrawPolicy">2</int> + <string key="NSClassName">NSView</string> + </object> + <object class="NSCustomView" id="611357014"> + <reference key="NSNextResponder" ref="941574830"/> + <int key="NSvFlags">-2147483382</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSImageView" id="334202585"> + <reference key="NSNextResponder" ref="611357014"/> + <int key="NSvFlags">269</int> + <object class="NSMutableSet" key="NSDragTypes"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="set.sortedObjects"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>Apple PDF pasteboard type</string> + <string>Apple PICT pasteboard type</string> + <string>Apple PNG pasteboard type</string> + <string>NSFilenamesPboardType</string> + <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string> + <string>NeXT TIFF v4.0 pasteboard type</string> + </object> + </object> + <string key="NSFrame">{{215, 1}, {48, 20}}</string> + <reference key="NSSuperview" ref="611357014"/> + <bool key="NSEnabled">YES</bool> + <object class="NSImageCell" key="NSCell" id="1868251"> + <int key="NSCellFlags">130560</int> + <int key="NSCellFlags2">33554432</int> + <object class="NSCustomResource" key="NSContents"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">menu_overflow_up</string> + </object> + <int key="NSAlign">0</int> + <int key="NSScale">2</int> + <int key="NSStyle">0</int> + <bool key="NSAnimates">NO</bool> + </object> + <bool key="NSEditable">YES</bool> + </object> + </object> + <string key="NSFrame">{{0, 247}, {480, 23}}</string> + <reference key="NSSuperview" ref="941574830"/> + <string key="NSClassName">NSView</string> + </object> + </object> + <string key="NSFrameSize">{480, 270}</string> + <reference key="NSSuperview" ref="1006"/> + <string key="NSClassName">BookmarkBarFolderWindowContentView</string> + </object> + </object> + <string key="NSFrameSize">{480, 270}</string> + <reference key="NSSuperview"/> + </object> + <string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string> + <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string> + </object> + <object class="NSMenu" id="447628937"> + <string key="NSTitle"/> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="875931014"> + <reference key="NSMenu" ref="447628937"/> + <string key="NSTitle">^IDS_BOOKMARK_BAR_OPEN_IN_NEW_TAB</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <object class="NSCustomResource" key="NSOnImage" id="259139760"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">NSMenuCheckmark</string> + </object> + <object class="NSCustomResource" key="NSMixedImage" id="1004300648"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">NSMenuMixedState</string> + </object> + </object> + <object class="NSMenuItem" id="1056378252"> + <reference key="NSMenu" ref="447628937"/> + <string key="NSTitle">^IDS_BOOKMARK_BAR_OPEN_IN_NEW_WINDOW</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="259139760"/> + <reference key="NSMixedImage" ref="1004300648"/> + </object> + <object class="NSMenuItem" id="425700157"> + <reference key="NSMenu" ref="447628937"/> + <string key="NSTitle">^IDS_BOOKMARK_BAR_OPEN_INCOGNITO</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="259139760"/> + <reference key="NSMixedImage" ref="1004300648"/> + </object> + <object class="NSMenuItem" id="518061209"> + <reference key="NSMenu" ref="447628937"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="259139760"/> + <reference key="NSMixedImage" ref="1004300648"/> + </object> + <object class="NSMenuItem" id="642328622"> + <reference key="NSMenu" ref="447628937"/> + <string key="NSTitle">^IDS_BOOKMARK_BAR_EDIT</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="259139760"/> + <reference key="NSMixedImage" ref="1004300648"/> + </object> + <object class="NSMenuItem" id="929181312"> + <reference key="NSMenu" ref="447628937"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="259139760"/> + <reference key="NSMixedImage" ref="1004300648"/> + </object> + <object class="NSMenuItem" id="359154687"> + <reference key="NSMenu" ref="447628937"/> + <string key="NSTitle">^IDS_CUT</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="259139760"/> + <reference key="NSMixedImage" ref="1004300648"/> + </object> + <object class="NSMenuItem" id="632461975"> + <reference key="NSMenu" ref="447628937"/> + <string key="NSTitle">^IDS_COPY</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="259139760"/> + <reference key="NSMixedImage" ref="1004300648"/> + </object> + <object class="NSMenuItem" id="202140151"> + <reference key="NSMenu" ref="447628937"/> + <string key="NSTitle">^IDS_PASTE</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="259139760"/> + <reference key="NSMixedImage" ref="1004300648"/> + </object> + <object class="NSMenuItem" id="416998881"> + <reference key="NSMenu" ref="447628937"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="259139760"/> + <reference key="NSMixedImage" ref="1004300648"/> + </object> + <object class="NSMenuItem" id="464302674"> + <reference key="NSMenu" ref="447628937"/> + <string key="NSTitle">^IDS_BOOKMARK_BAR_REMOVE</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="259139760"/> + <reference key="NSMixedImage" ref="1004300648"/> + </object> + <object class="NSMenuItem" id="896885093"> + <reference key="NSMenu" ref="447628937"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="259139760"/> + <reference key="NSMixedImage" ref="1004300648"/> + </object> + <object class="NSMenuItem" id="684143027"> + <reference key="NSMenu" ref="447628937"/> + <string key="NSTitle">^IDS_BOOKMARK_BAR_ADD_NEW_BOOKMARK</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="259139760"/> + <reference key="NSMixedImage" ref="1004300648"/> + </object> + <object class="NSMenuItem" id="941759083"> + <reference key="NSMenu" ref="447628937"/> + <string key="NSTitle">^IDS_BOOKMARK_BAR_NEW_FOLDER</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="259139760"/> + <reference key="NSMixedImage" ref="1004300648"/> + </object> + <object class="NSMenuItem" id="496552916"> + <reference key="NSMenu" ref="447628937"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="259139760"/> + <reference key="NSMixedImage" ref="1004300648"/> + </object> + <object class="NSMenuItem" id="60766120"> + <reference key="NSMenu" ref="447628937"/> + <string key="NSTitle">^IDS_BOOKMARK_MANAGER</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="259139760"/> + <reference key="NSMixedImage" ref="1004300648"/> + <int key="NSTag">40011</int> + </object> + <object class="NSMenuItem" id="96803390"> + <reference key="NSMenu" ref="447628937"/> + <string key="NSTitle">^IDS_BOOKMARK_BAR_ALWAYS_SHOW_MAC</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="259139760"/> + <reference key="NSMixedImage" ref="1004300648"/> + <int key="NSTag">40009</int> + </object> + </object> + </object> + <object class="NSMenu" id="243908609"> + <string key="NSTitle"/> + <object class="NSMutableArray" key="NSMenuItems"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMenuItem" id="727065194"> + <reference key="NSMenu" ref="243908609"/> + <string key="NSTitle">^IDS_BOOKMARK_BAR_OPEN_ALL</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="259139760"/> + <reference key="NSMixedImage" ref="1004300648"/> + </object> + <object class="NSMenuItem" id="236903630"> + <reference key="NSMenu" ref="243908609"/> + <string key="NSTitle">^IDS_BOOKMARK_BAR_OPEN_ALL_NEW_WINDOW</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="259139760"/> + <reference key="NSMixedImage" ref="1004300648"/> + </object> + <object class="NSMenuItem" id="233735276"> + <reference key="NSMenu" ref="243908609"/> + <string key="NSTitle">^IDS_BOOKMARK_BAR_OPEN_ALL_INCOGNITO</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="259139760"/> + <reference key="NSMixedImage" ref="1004300648"/> + </object> + <object class="NSMenuItem" id="370949212"> + <reference key="NSMenu" ref="243908609"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="259139760"/> + <reference key="NSMixedImage" ref="1004300648"/> + </object> + <object class="NSMenuItem" id="349508807"> + <reference key="NSMenu" ref="243908609"/> + <string key="NSTitle">^IDS_BOOKMARK_BAR_RENAME_FOLDER</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="259139760"/> + <reference key="NSMixedImage" ref="1004300648"/> + </object> + <object class="NSMenuItem" id="668674447"> + <reference key="NSMenu" ref="243908609"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="259139760"/> + <reference key="NSMixedImage" ref="1004300648"/> + </object> + <object class="NSMenuItem" id="820503943"> + <reference key="NSMenu" ref="243908609"/> + <string key="NSTitle">^IDS_CUT</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="259139760"/> + <reference key="NSMixedImage" ref="1004300648"/> + </object> + <object class="NSMenuItem" id="689396309"> + <reference key="NSMenu" ref="243908609"/> + <string key="NSTitle">^IDS_COPY</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="259139760"/> + <reference key="NSMixedImage" ref="1004300648"/> + </object> + <object class="NSMenuItem" id="432629396"> + <reference key="NSMenu" ref="243908609"/> + <string key="NSTitle">^IDS_PASTE</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="259139760"/> + <reference key="NSMixedImage" ref="1004300648"/> + </object> + <object class="NSMenuItem" id="147047106"> + <reference key="NSMenu" ref="243908609"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="259139760"/> + <reference key="NSMixedImage" ref="1004300648"/> + </object> + <object class="NSMenuItem" id="593857611"> + <reference key="NSMenu" ref="243908609"/> + <string key="NSTitle">^IDS_BOOKMARK_BAR_REMOVE</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="259139760"/> + <reference key="NSMixedImage" ref="1004300648"/> + </object> + <object class="NSMenuItem" id="493723737"> + <reference key="NSMenu" ref="243908609"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="259139760"/> + <reference key="NSMixedImage" ref="1004300648"/> + </object> + <object class="NSMenuItem" id="92546710"> + <reference key="NSMenu" ref="243908609"/> + <string key="NSTitle">^IDS_BOOKMARK_BAR_ADD_NEW_BOOKMARK</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="259139760"/> + <reference key="NSMixedImage" ref="1004300648"/> + </object> + <object class="NSMenuItem" id="682893323"> + <reference key="NSMenu" ref="243908609"/> + <string key="NSTitle">^IDS_BOOKMARK_BAR_NEW_FOLDER</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="259139760"/> + <reference key="NSMixedImage" ref="1004300648"/> + </object> + <object class="NSMenuItem" id="913220344"> + <reference key="NSMenu" ref="243908609"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="259139760"/> + <reference key="NSMixedImage" ref="1004300648"/> + </object> + <object class="NSMenuItem" id="576055101"> + <reference key="NSMenu" ref="243908609"/> + <string key="NSTitle">^IDS_BOOKMARK_MANAGER</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="259139760"/> + <reference key="NSMixedImage" ref="1004300648"/> + <int key="NSTag">40011</int> + </object> + <object class="NSMenuItem" id="636966313"> + <reference key="NSMenu" ref="243908609"/> + <string key="NSTitle">^IDS_BOOKMARK_BAR_ALWAYS_SHOW_MAC</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="259139760"/> + <reference key="NSMixedImage" ref="1004300648"/> + <int key="NSTag">40009</int> + </object> + </object> + </object> + <object class="NSCustomObject" id="297726234"> + <string key="NSClassName">GTMUILocalizerAndLayoutTweaker</string> + </object> + <object class="NSCustomObject" id="493003890"> + <string key="NSClassName">ChromeUILocalizer</string> + </object> + <object class="NSWindowTemplate" id="793970913"> + <int key="NSWindowStyleMask">1</int> + <int key="NSWindowBacking">2</int> + <string key="NSWindowRect">{{196, 240}, {480, 270}}</string> + <int key="NSWTFlags">536871936</int> + <string key="NSWindowTitle">BmbPopUpWindow</string> + <string key="NSWindowClass">BookmarkBarFolderWindow</string> + <nil key="NSViewClass"/> + <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string> + <object class="NSView" key="NSWindowView" id="382388938"> + <nil key="NSNextResponder"/> + <int key="NSvFlags">274</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSCustomView" id="898384138"> + <reference key="NSNextResponder" ref="382388938"/> + <int key="NSvFlags">274</int> + <string key="NSFrameSize">{480, 270}</string> + <reference key="NSSuperview" ref="382388938"/> + <string key="NSClassName">BookmarkBarFolderWindowContentView</string> + </object> + </object> + <string key="NSFrameSize">{480, 270}</string> + </object> + <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string> + <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string> + </object> + </object> + <object class="IBObjectContainer" key="IBDocument.Objects"> + <object class="NSMutableArray" key="connectionRecords"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">window</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="1005"/> + </object> + <int key="connectionID">8</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">delegate</string> + <reference key="source" ref="1005"/> + <reference key="destination" ref="1001"/> + </object> + <int key="connectionID">9</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">yetAnotherObjectToLocalize_</string> + <reference key="source" ref="493003890"/> + <reference key="destination" ref="243908609"/> + </object> + <int key="connectionID">53</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">localizer_</string> + <reference key="source" ref="297726234"/> + <reference key="destination" ref="493003890"/> + </object> + <int key="connectionID">54</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">owner_</string> + <reference key="source" ref="493003890"/> + <reference key="destination" ref="1001"/> + </object> + <int key="connectionID">55</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">delegate</string> + <reference key="source" ref="243908609"/> + <reference key="destination" ref="1001"/> + </object> + <int key="connectionID">56</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">folderMenu_</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="243908609"/> + </object> + <int key="connectionID">58</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">otherObjectToLocalize_</string> + <reference key="source" ref="493003890"/> + <reference key="destination" ref="447628937"/> + </object> + <int key="connectionID">60</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">buttonMenu_</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="447628937"/> + </object> + <int key="connectionID">61</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">delegate</string> + <reference key="source" ref="447628937"/> + <reference key="destination" ref="1001"/> + </object> + <int key="connectionID">62</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">openAllBookmarks:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="727065194"/> + </object> + <int key="connectionID">63</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">openAllBookmarksNewWindow:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="236903630"/> + </object> + <int key="connectionID">64</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">openAllBookmarksIncognitoWindow:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="233735276"/> + </object> + <int key="connectionID">65</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">editBookmark:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="349508807"/> + </object> + <int key="connectionID">66</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">cutBookmark:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="820503943"/> + </object> + <int key="connectionID">67</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">copyBookmark:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="689396309"/> + </object> + <int key="connectionID">68</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">pasteBookmark:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="432629396"/> + </object> + <int key="connectionID">69</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">deleteBookmark:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="593857611"/> + </object> + <int key="connectionID">70</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">addPage:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="92546710"/> + </object> + <int key="connectionID">71</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">addFolder:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="682893323"/> + </object> + <int key="connectionID">72</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">commandDispatch:</string> + <reference key="source" ref="1003"/> + <reference key="destination" ref="576055101"/> + </object> + <int key="connectionID">73</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">commandDispatch:</string> + <reference key="source" ref="1003"/> + <reference key="destination" ref="636966313"/> + </object> + <int key="connectionID">74</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">commandDispatch:</string> + <reference key="source" ref="1003"/> + <reference key="destination" ref="60766120"/> + </object> + <int key="connectionID">75</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">commandDispatch:</string> + <reference key="source" ref="1003"/> + <reference key="destination" ref="96803390"/> + </object> + <int key="connectionID">76</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">editBookmark:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="642328622"/> + </object> + <int key="connectionID">80</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">cutBookmark:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="359154687"/> + </object> + <int key="connectionID">81</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">copyBookmark:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="632461975"/> + </object> + <int key="connectionID">82</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">pasteBookmark:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="202140151"/> + </object> + <int key="connectionID">83</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">deleteBookmark:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="464302674"/> + </object> + <int key="connectionID">84</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">addPage:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="684143027"/> + </object> + <int key="connectionID">85</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">addFolder:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="941759083"/> + </object> + <int key="connectionID">86</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">openBookmarkInIncognitoWindow:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="425700157"/> + </object> + <int key="connectionID">87</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">openBookmarkInNewForegroundTab:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="875931014"/> + </object> + <int key="connectionID">88</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">openBookmarkInNewWindow:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="1056378252"/> + </object> + <int key="connectionID">89</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">scrollView_</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="680424923"/> + </object> + <int key="connectionID">94</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">shadowWindow_</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="793970913"/> + </object> + <int key="connectionID">99</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">visibleView_</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="941574830"/> + </object> + <int key="connectionID">101</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">scrollUpArrowView_</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="953069288"/> + </object> + <int key="connectionID">108</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">scrollDownArrowView_</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="611357014"/> + </object> + <int key="connectionID">109</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">folderView_</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="762431297"/> + </object> + <int key="connectionID">110</int> + </object> + </object> + <object class="IBMutableOrderedSet" key="objectRecords"> + <object class="NSArray" key="orderedObjects"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBObjectRecord"> + <int key="objectID">0</int> + <reference key="object" ref="0"/> + <reference key="children" ref="1000"/> + <nil key="parent"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-2</int> + <reference key="object" ref="1001"/> + <reference key="parent" ref="0"/> + <string key="objectName">File's Owner</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-1</int> + <reference key="object" ref="1003"/> + <reference key="parent" ref="0"/> + <string key="objectName">First Responder</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-3</int> + <reference key="object" ref="1004"/> + <reference key="parent" ref="0"/> + <string key="objectName">Application</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">1</int> + <reference key="object" ref="1005"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="1006"/> + </object> + <reference key="parent" ref="0"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">2</int> + <reference key="object" ref="1006"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="941574830"/> + </object> + <reference key="parent" ref="1005"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">10</int> + <reference key="object" ref="243908609"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="727065194"/> + <reference ref="236903630"/> + <reference ref="233735276"/> + <reference ref="370949212"/> + <reference ref="493723737"/> + <reference ref="349508807"/> + <reference ref="593857611"/> + <reference ref="92546710"/> + <reference ref="682893323"/> + <reference ref="576055101"/> + <reference ref="636966313"/> + <reference ref="913220344"/> + <reference ref="668674447"/> + <reference ref="820503943"/> + <reference ref="689396309"/> + <reference ref="432629396"/> + <reference ref="147047106"/> + </object> + <reference key="parent" ref="0"/> + <string key="objectName">Folder Menu</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">11</int> + <reference key="object" ref="297726234"/> + <reference key="parent" ref="0"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">12</int> + <reference key="object" ref="447628937"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="496552916"/> + <reference ref="96803390"/> + <reference ref="60766120"/> + <reference ref="941759083"/> + <reference ref="684143027"/> + <reference ref="464302674"/> + <reference ref="642328622"/> + <reference ref="896885093"/> + <reference ref="518061209"/> + <reference ref="425700157"/> + <reference ref="1056378252"/> + <reference ref="875931014"/> + <reference ref="359154687"/> + <reference ref="929181312"/> + <reference ref="632461975"/> + <reference ref="202140151"/> + <reference ref="416998881"/> + </object> + <reference key="parent" ref="0"/> + <string key="objectName">Button Menu</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">13</int> + <reference key="object" ref="493003890"/> + <reference key="parent" ref="0"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">16</int> + <reference key="object" ref="496552916"/> + <reference key="parent" ref="447628937"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">17</int> + <reference key="object" ref="96803390"/> + <reference key="parent" ref="447628937"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">18</int> + <reference key="object" ref="60766120"/> + <reference key="parent" ref="447628937"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">19</int> + <reference key="object" ref="941759083"/> + <reference key="parent" ref="447628937"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">20</int> + <reference key="object" ref="684143027"/> + <reference key="parent" ref="447628937"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">21</int> + <reference key="object" ref="464302674"/> + <reference key="parent" ref="447628937"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">22</int> + <reference key="object" ref="642328622"/> + <reference key="parent" ref="447628937"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">23</int> + <reference key="object" ref="896885093"/> + <reference key="parent" ref="447628937"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">24</int> + <reference key="object" ref="518061209"/> + <reference key="parent" ref="447628937"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">25</int> + <reference key="object" ref="425700157"/> + <reference key="parent" ref="447628937"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">26</int> + <reference key="object" ref="1056378252"/> + <reference key="parent" ref="447628937"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">27</int> + <reference key="object" ref="875931014"/> + <reference key="parent" ref="447628937"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">28</int> + <reference key="object" ref="359154687"/> + <reference key="parent" ref="447628937"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">29</int> + <reference key="object" ref="929181312"/> + <reference key="parent" ref="447628937"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">30</int> + <reference key="object" ref="632461975"/> + <reference key="parent" ref="447628937"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">31</int> + <reference key="object" ref="202140151"/> + <reference key="parent" ref="447628937"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">32</int> + <reference key="object" ref="416998881"/> + <reference key="parent" ref="447628937"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">35</int> + <reference key="object" ref="727065194"/> + <reference key="parent" ref="243908609"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">36</int> + <reference key="object" ref="236903630"/> + <reference key="parent" ref="243908609"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">37</int> + <reference key="object" ref="233735276"/> + <reference key="parent" ref="243908609"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">38</int> + <reference key="object" ref="370949212"/> + <reference key="parent" ref="243908609"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">39</int> + <reference key="object" ref="493723737"/> + <reference key="parent" ref="243908609"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">40</int> + <reference key="object" ref="349508807"/> + <reference key="parent" ref="243908609"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">41</int> + <reference key="object" ref="593857611"/> + <reference key="parent" ref="243908609"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">42</int> + <reference key="object" ref="92546710"/> + <reference key="parent" ref="243908609"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">43</int> + <reference key="object" ref="682893323"/> + <reference key="parent" ref="243908609"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">44</int> + <reference key="object" ref="576055101"/> + <reference key="parent" ref="243908609"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">45</int> + <reference key="object" ref="636966313"/> + <reference key="parent" ref="243908609"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">46</int> + <reference key="object" ref="913220344"/> + <reference key="parent" ref="243908609"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">47</int> + <reference key="object" ref="668674447"/> + <reference key="parent" ref="243908609"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">48</int> + <reference key="object" ref="820503943"/> + <reference key="parent" ref="243908609"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">49</int> + <reference key="object" ref="689396309"/> + <reference key="parent" ref="243908609"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">50</int> + <reference key="object" ref="432629396"/> + <reference key="parent" ref="243908609"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">51</int> + <reference key="object" ref="147047106"/> + <reference key="parent" ref="243908609"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">96</int> + <reference key="object" ref="793970913"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="382388938"/> + </object> + <reference key="parent" ref="0"/> + <string key="objectName">Shadow Window</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">97</int> + <reference key="object" ref="382388938"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="898384138"/> + </object> + <reference key="parent" ref="793970913"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">98</int> + <reference key="object" ref="898384138"/> + <reference key="parent" ref="382388938"/> + <string key="objectName">Visible Content View</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">100</int> + <reference key="object" ref="941574830"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="680424923"/> + <reference ref="953069288"/> + <reference ref="611357014"/> + </object> + <reference key="parent" ref="1006"/> + <string key="objectName">Visible Content View</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">90</int> + <reference key="object" ref="680424923"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="453279292"/> + <reference ref="1057944048"/> + <reference ref="762431297"/> + </object> + <reference key="parent" ref="941574830"/> + <string key="objectName">Scroll View</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">91</int> + <reference key="object" ref="453279292"/> + <reference key="parent" ref="680424923"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">92</int> + <reference key="object" ref="1057944048"/> + <reference key="parent" ref="680424923"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">4</int> + <reference key="object" ref="762431297"/> + <reference key="parent" ref="680424923"/> + <string key="objectName">Folder Menu View</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">102</int> + <reference key="object" ref="953069288"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="865301746"/> + </object> + <reference key="parent" ref="941574830"/> + <string key="objectName">Scroll Up Arrow View</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">103</int> + <reference key="object" ref="865301746"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="471443416"/> + </object> + <reference key="parent" ref="953069288"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">104</int> + <reference key="object" ref="471443416"/> + <reference key="parent" ref="865301746"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">105</int> + <reference key="object" ref="611357014"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="334202585"/> + </object> + <reference key="parent" ref="941574830"/> + <string key="objectName">Scroll Down Arrow View</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">106</int> + <reference key="object" ref="334202585"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="1868251"/> + </object> + <reference key="parent" ref="611357014"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">107</int> + <reference key="object" ref="1868251"/> + <reference key="parent" ref="334202585"/> + </object> + </object> + </object> + <object class="NSMutableDictionary" key="flattenedProperties"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>-1.IBPluginDependency</string> + <string>-2.IBPluginDependency</string> + <string>-3.IBPluginDependency</string> + <string>1.IBEditorWindowLastContentRect</string> + <string>1.IBPluginDependency</string> + <string>1.IBWindowTemplateEditedContentRect</string> + <string>1.NSWindowTemplate.visibleAtLaunch</string> + <string>1.WindowOrigin</string> + <string>1.editorWindowContentRectSynchronizationRect</string> + <string>10.CustomClassName</string> + <string>10.IBEditorWindowLastContentRect</string> + <string>10.IBPluginDependency</string> + <string>100.IBPluginDependency</string> + <string>100.IBViewBoundsToFrameTransform</string> + <string>102.IBPluginDependency</string> + <string>103.IBPluginDependency</string> + <string>104.IBPluginDependency</string> + <string>105.IBPluginDependency</string> + <string>106.IBPluginDependency</string> + <string>107.IBPluginDependency</string> + <string>11.IBPluginDependency</string> + <string>12.CustomClassName</string> + <string>12.IBEditorWindowLastContentRect</string> + <string>12.IBPluginDependency</string> + <string>13.IBPluginDependency</string> + <string>16.IBPluginDependency</string> + <string>17.IBPluginDependency</string> + <string>18.IBPluginDependency</string> + <string>19.IBPluginDependency</string> + <string>2.IBPluginDependency</string> + <string>20.IBPluginDependency</string> + <string>21.IBPluginDependency</string> + <string>22.IBPluginDependency</string> + <string>23.IBPluginDependency</string> + <string>24.IBPluginDependency</string> + <string>25.IBPluginDependency</string> + <string>26.IBPluginDependency</string> + <string>27.IBPluginDependency</string> + <string>28.IBPluginDependency</string> + <string>29.IBPluginDependency</string> + <string>30.IBPluginDependency</string> + <string>31.IBPluginDependency</string> + <string>32.IBPluginDependency</string> + <string>35.IBPluginDependency</string> + <string>36.IBPluginDependency</string> + <string>37.IBPluginDependency</string> + <string>38.IBPluginDependency</string> + <string>39.IBPluginDependency</string> + <string>4.IBPluginDependency</string> + <string>40.IBPluginDependency</string> + <string>41.IBPluginDependency</string> + <string>42.IBPluginDependency</string> + <string>43.IBPluginDependency</string> + <string>44.IBPluginDependency</string> + <string>45.IBPluginDependency</string> + <string>46.IBPluginDependency</string> + <string>47.IBPluginDependency</string> + <string>48.IBPluginDependency</string> + <string>49.IBPluginDependency</string> + <string>50.IBPluginDependency</string> + <string>51.IBPluginDependency</string> + <string>90.CustomClassName</string> + <string>90.IBViewBoundsToFrameTransform</string> + <string>96.IBEditorWindowLastContentRect</string> + <string>96.IBPluginDependency</string> + <string>96.IBWindowTemplateEditedContentRect</string> + <string>96.NSWindowTemplate.visibleAtLaunch</string> + <string>96.WindowOrigin</string> + <string>96.editorWindowContentRectSynchronizationRect</string> + <string>97.IBPluginDependency</string> + <string>98.IBPluginDependency</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{{333, 734}, {480, 270}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{{333, 734}, {480, 270}}</string> + <boolean value="NO"/> + <string>{196, 240}</string> + <string>{{357, 418}, {480, 270}}</string> + <string>BookmarkMenu</string> + <string>{{222, 452}, {372, 293}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <object class="NSAffineTransform"> + <bytes key="NSTransformStruct">AUMeAABCrgAAA</bytes> + </object> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>BookmarkMenu</string> + <string>{{230, 131}, {362, 293}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>BookmarkBarFolderWindowScrollView</string> + <object class="NSAffineTransform"> + <bytes key="NSTransformStruct">P4AAAL+AAAAAAAAAw4YAAA</bytes> + </object> + <string>{{673, 751}, {480, 270}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{{673, 751}, {480, 270}}</string> + <boolean value="NO"/> + <string>{196, 240}</string> + <string>{{357, 418}, {480, 270}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + </object> + </object> + <object class="NSMutableDictionary" key="unlocalizedProperties"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference key="dict.sortedKeys" ref="0"/> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + </object> + <nil key="activeLocalization"/> + <object class="NSMutableDictionary" key="localizations"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference key="dict.sortedKeys" ref="0"/> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + </object> + <nil key="sourceID"/> + <int key="maxID">110</int> + </object> + <object class="IBClassDescriber" key="IBDocument.Classes"> + <object class="NSMutableArray" key="referencedPartialClassDescriptions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBPartialClassDescription"> + <string key="className">BookmarkBarFolderController</string> + <string key="superclassName">NSWindowController</string> + <object class="NSMutableDictionary" key="actions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>addFolder:</string> + <string>addPage:</string> + <string>copyBookmark:</string> + <string>cutBookmark:</string> + <string>deleteBookmark:</string> + <string>editBookmark:</string> + <string>openAllBookmarks:</string> + <string>openAllBookmarksIncognitoWindow:</string> + <string>openAllBookmarksNewWindow:</string> + <string>openBookmark:</string> + <string>openBookmarkInIncognitoWindow:</string> + <string>openBookmarkInNewForegroundTab:</string> + <string>openBookmarkInNewWindow:</string> + <string>pasteBookmark:</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>id</string> + <string>id</string> + <string>id</string> + <string>id</string> + <string>id</string> + <string>id</string> + <string>id</string> + <string>id</string> + <string>id</string> + <string>id</string> + <string>id</string> + <string>id</string> + <string>id</string> + <string>id</string> + </object> + </object> + <object class="NSMutableDictionary" key="actionInfosByName"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>addFolder:</string> + <string>addPage:</string> + <string>copyBookmark:</string> + <string>cutBookmark:</string> + <string>deleteBookmark:</string> + <string>editBookmark:</string> + <string>openAllBookmarks:</string> + <string>openAllBookmarksIncognitoWindow:</string> + <string>openAllBookmarksNewWindow:</string> + <string>openBookmark:</string> + <string>openBookmarkInIncognitoWindow:</string> + <string>openBookmarkInNewForegroundTab:</string> + <string>openBookmarkInNewWindow:</string> + <string>pasteBookmark:</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBActionInfo"> + <string key="name">addFolder:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">addPage:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">copyBookmark:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">cutBookmark:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">deleteBookmark:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">editBookmark:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">openAllBookmarks:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">openAllBookmarksIncognitoWindow:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">openAllBookmarksNewWindow:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">openBookmark:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">openBookmarkInIncognitoWindow:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">openBookmarkInNewForegroundTab:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">openBookmarkInNewWindow:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo"> + <string key="name">pasteBookmark:</string> + <string key="candidateClassName">id</string> + </object> + </object> + </object> + <object class="NSMutableDictionary" key="outlets"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>buttonMenu_</string> + <string>folderMenu_</string> + <string>folderView_</string> + <string>scrollDownArrowView_</string> + <string>scrollUpArrowView_</string> + <string>scrollView_</string> + <string>shadowWindow_</string> + <string>visibleView_</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>NSMenu</string> + <string>NSMenu</string> + <string>BookmarkBarFolderView</string> + <string>NSView</string> + <string>NSView</string> + <string>NSScrollView</string> + <string>BookmarkBarFolderWindow</string> + <string>BookmarkBarFolderWindowContentView</string> + </object> + </object> + <object class="NSMutableDictionary" key="toOneOutletInfosByName"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>buttonMenu_</string> + <string>folderMenu_</string> + <string>folderView_</string> + <string>scrollDownArrowView_</string> + <string>scrollUpArrowView_</string> + <string>scrollView_</string> + <string>shadowWindow_</string> + <string>visibleView_</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBToOneOutletInfo"> + <string key="name">buttonMenu_</string> + <string key="candidateClassName">NSMenu</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">folderMenu_</string> + <string key="candidateClassName">NSMenu</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">folderView_</string> + <string key="candidateClassName">BookmarkBarFolderView</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">scrollDownArrowView_</string> + <string key="candidateClassName">NSView</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">scrollUpArrowView_</string> + <string key="candidateClassName">NSView</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">scrollView_</string> + <string key="candidateClassName">NSScrollView</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">shadowWindow_</string> + <string key="candidateClassName">BookmarkBarFolderWindow</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">visibleView_</string> + <string key="candidateClassName">BookmarkBarFolderWindowContentView</string> + </object> + </object> + </object> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">BookmarkBarFolderController</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">browser/ui/cocoa/bookmarks/bookmark_bar_unittest_helper.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">BookmarkBarFolderView</string> + <string key="superclassName">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">BookmarkBarFolderWindow</string> + <string key="superclassName">NSWindow</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="14500252"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">BookmarkBarFolderWindowContentView</string> + <string key="superclassName">NSView</string> + <reference key="sourceIdentifier" ref="14500252"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">BookmarkBarFolderWindowScrollView</string> + <string key="superclassName">NSScrollView</string> + <reference key="sourceIdentifier" ref="14500252"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">BookmarkMenu</string> + <string key="superclassName">NSMenu</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">browser/ui/cocoa/bookmarks/bookmark_menu.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">ChromeUILocalizer</string> + <string key="superclassName">GTMUILocalizer</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">browser/ui/cocoa/ui_localizer.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">FirstResponder</string> + <string key="superclassName">NSObject</string> + <object class="NSMutableDictionary" key="actions"> + <string key="NS.key.0">commandDispatch:</string> + <string key="NS.object.0">id</string> + </object> + <object class="NSMutableDictionary" key="actionInfosByName"> + <string key="NS.key.0">commandDispatch:</string> + <object class="IBActionInfo" key="NS.object.0"> + <string key="name">commandDispatch:</string> + <string key="candidateClassName">id</string> + </object> + </object> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBUserSource</string> + <string key="minorKey"/> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">GTMUILocalizer</string> + <string key="superclassName">NSObject</string> + <object class="NSMutableDictionary" key="outlets"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>otherObjectToLocalize_</string> + <string>owner_</string> + <string>yetAnotherObjectToLocalize_</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>id</string> + <string>id</string> + <string>id</string> + </object> + </object> + <object class="NSMutableDictionary" key="toOneOutletInfosByName"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>otherObjectToLocalize_</string> + <string>owner_</string> + <string>yetAnotherObjectToLocalize_</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBToOneOutletInfo"> + <string key="name">otherObjectToLocalize_</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">owner_</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">yetAnotherObjectToLocalize_</string> + <string key="candidateClassName">id</string> + </object> + </object> + </object> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">../third_party/GTM/AppKit/GTMUILocalizer.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">GTMUILocalizerAndLayoutTweaker</string> + <string key="superclassName">NSObject</string> + <object class="NSMutableDictionary" key="outlets"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>localizerOwner_</string> + <string>localizer_</string> + <string>uiObject_</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>id</string> + <string>GTMUILocalizer</string> + <string>id</string> + </object> + </object> + <object class="NSMutableDictionary" key="toOneOutletInfosByName"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>localizerOwner_</string> + <string>localizer_</string> + <string>uiObject_</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBToOneOutletInfo"> + <string key="name">localizerOwner_</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">localizer_</string> + <string key="candidateClassName">GTMUILocalizer</string> + </object> + <object class="IBToOneOutletInfo"> + <string key="name">uiObject_</string> + <string key="candidateClassName">id</string> + </object> + </object> + </object> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">../third_party/GTM/AppKit/GTMUILocalizerAndLayoutTweaker.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSMenuItem</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">browser/ui/cocoa/nsmenuitem_additions.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">../third_party/GTM/Foundation/GTMNSObject+KeyValueObserving.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">browser/ui/cocoa/objc_zombie.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">browser/ui/cocoa/status_bubble_mac.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">browser/ui/cocoa/tabs/tab_strip_model_observer_bridge.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">browser/ui/cocoa/view_id_util.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSWindow</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">browser/ui/cocoa/framed_browser_window.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSWindow</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">browser/ui/cocoa/themed_window.h</string> + </object> + </object> + </object> + <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBPartialClassDescription"> + <string key="className">NSApplication</string> + <string key="superclassName">NSResponder</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="890880056"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSApplication.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSApplication</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="571212825"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSApplicationScripting.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSApplication</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="905345038"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSColorPanel.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSApplication</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSHelpManager.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSApplication</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSPageLayout.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSCell</string> + <string key="superclassName">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSCell.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSControl</string> + <string key="superclassName">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="116461416"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSControl.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSFormatter</string> + <string key="superclassName">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSFormatter.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSImageCell</string> + <string key="superclassName">NSCell</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSImageCell.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSImageView</string> + <string key="superclassName">NSControl</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSImageView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSMenu</string> + <string key="superclassName">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="457004149"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSMenu.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSMenuItem</string> + <string key="superclassName">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="997115298"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSMenuItem.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AddressBook.framework/Headers/ABActions.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSAccessibility.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSAlert.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSAnimation.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <reference key="sourceIdentifier" ref="890880056"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <reference key="sourceIdentifier" ref="571212825"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSBrowser.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <reference key="sourceIdentifier" ref="905345038"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSComboBox.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSComboBoxCell.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <reference key="sourceIdentifier" ref="116461416"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSDatePickerCell.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSDictionaryController.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSDragging.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="19368551"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSDrawer.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSFontManager.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSFontPanel.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSImage.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSKeyValueBinding.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <reference key="sourceIdentifier" ref="457004149"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSNibLoading.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSOutlineView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSPasteboard.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSRuleEditor.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSSavePanel.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSSound.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSSpeechRecognizer.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSSpeechSynthesizer.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSSplitView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSTabView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSTableView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSText.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSTextStorage.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSTextView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSTokenField.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSTokenFieldCell.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSToolbar.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSToolbarItem.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="511176437"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="618026574"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSWindow.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSArchiver.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSClassDescription.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSConnection.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSError.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSMetadata.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSNetServices.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSObject.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSObjectScripting.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSPort.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSPortCoder.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSScriptClassDescription.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSScriptKeyValueCoding.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSScriptObjectSpecifiers.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSScriptWhoseTests.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSSpellServer.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSStream.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSThread.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSURL.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSURLDownload.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSXMLParser.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Print.framework/Headers/PDEPluginInterface.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">QuartzCore.framework/Headers/CAAnimation.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">QuartzCore.framework/Headers/CALayer.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">QuartzCore.framework/Headers/CIImageProvider.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">SecurityInterface.framework/Headers/SFAuthorizationView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">SecurityInterface.framework/Headers/SFCertificatePanel.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">SecurityInterface.framework/Headers/SFChooseIdentityPanel.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSResponder</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSInterfaceStyle.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSResponder</string> + <string key="superclassName">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSResponder.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSScrollView</string> + <string key="superclassName">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSScrollView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSScroller</string> + <string key="superclassName">NSControl</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSScroller.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSClipView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSView</string> + <reference key="sourceIdentifier" ref="997115298"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSRulerView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSView</string> + <string key="superclassName">NSResponder</string> + <reference key="sourceIdentifier" ref="511176437"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSWindow</string> + <reference key="sourceIdentifier" ref="19368551"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSWindow</string> + <string key="superclassName">NSResponder</string> + <reference key="sourceIdentifier" ref="618026574"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSWindow</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSWindowScripting.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSWindowController</string> + <string key="superclassName">NSResponder</string> + <object class="NSMutableDictionary" key="actions"> + <string key="NS.key.0">showWindow:</string> + <string key="NS.object.0">id</string> + </object> + <object class="NSMutableDictionary" key="actionInfosByName"> + <string key="NS.key.0">showWindow:</string> + <object class="IBActionInfo" key="NS.object.0"> + <string key="name">showWindow:</string> + <string key="candidateClassName">id</string> + </object> + </object> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSWindowController.h</string> + </object> + </object> + </object> + </object> + <int key="IBDocument.localizationMode">0</int> + <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string> + <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string> + <integer value="1050" key="NS.object.0"/> + </object> + <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string> + <integer value="1050" key="NS.object.0"/> + </object> + <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string> + <integer value="3000" key="NS.object.0"/> + </object> + <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool> + <string key="IBDocument.LastKnownRelativeProjectPath">../../chrome.xcodeproj</string> + <int key="IBDocument.defaultPropertyAccessControl">3</int> + <object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>NSMenuCheckmark</string> + <string>NSMenuMixedState</string> + <string>menu_overflow_down</string> + <string>menu_overflow_up</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>{9, 8}</string> + <string>{7, 2}</string> + <string>{19, 19}</string> + <string>{19, 19}</string> + </object> + </object> + </data> +</archive> diff --git a/chrome/app/theme/menu_hierarchy_arrow.pdf b/chrome/app/theme/menu_hierarchy_arrow.pdf new file mode 100644 index 0000000..571078f --- /dev/null +++ b/chrome/app/theme/menu_hierarchy_arrow.pdf @@ -0,0 +1,1515 @@ +%PDF-1.5
%âãÏÓ
+1 0 obj
<</Metadata 2 0 R/OCProperties<</D<</ON[5 0 R 29 0 R]/Order 30 0 R/RBGroups[]>>/OCGs[5 0 R 29 0 R]>>/Pages 3 0 R/Type/Catalog>>
endobj
2 0 obj
<</Length 60187/Subtype/XML/Type/Metadata>>stream
+<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> +<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.2.2-c063 53.352624, 2008/07/30-18:05:41 "> + <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> + <rdf:Description rdf:about="" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <dc:format>application/pdf</dc:format> + <dc:title> + <rdf:Alt> + <rdf:li xml:lang="x-default">HierarchyArrow</rdf:li> + </rdf:Alt> + </dc:title> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:xmp="http://ns.adobe.com/xap/1.0/" + xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/"> + <xmp:MetadataDate>2010-04-20T11:15:52-07:00</xmp:MetadataDate> + <xmp:ModifyDate>2010-04-20T11:15:52-07:00</xmp:ModifyDate> + <xmp:CreateDate>2010-04-20T10:39:05-07:00</xmp:CreateDate> + <xmp:CreatorTool>Adobe Illustrator CS4</xmp:CreatorTool> + <xmp:Thumbnails> + <rdf:Alt> + <rdf:li rdf:parseType="Resource"> + <xmpGImg:width>208</xmpGImg:width> + <xmpGImg:height>256</xmpGImg:height> + <xmpGImg:format>JPEG</xmpGImg:format> + <xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAADQAwER
AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8Akvk3809c8v8AC1uCdQ0t
aAQSN8cY/wCKnNaU/lO3yyVIe2eXPNmh+YrX19MuA7KKy27fDLHX+dP4jb3yKU4xV2KuxV2KuxV2
KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvkbJIV7G/vbC6S6sp3t7mM1SWNirD6
Rir1zyb+dMM3Cz8yqIZdlXUYx8DH/i1B9n5rt7DBS29TgngnhSaCRZYZByjkQhlYHoQRsRgSvxV2
KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvkbJIdirsVZD5U89a/wCWph9S
m9S0JrLZS1aJvEgfst7r9NcVe3+UPzF0DzKixRP9V1GlXsZSOW3X022Dj5b+IGCkspwK7FXYq7FX
Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq+Rskh2KuxV2Kto7o6ujFXUgqwNCCNwQRir
0vyb+c1/Y8LPzAGvbQUVbxd50H+XX+8H/DfPBS29i0vVtN1WzS8064S5tn6SIeh8CDup9jvgSi8V
dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVfI2SQ7FXYq7FXYq7FUy0LzFrOhXgu9L
uWgk25qN0cDs6HZhir2nyb+bmj6zwtNU46dqJoAWP7iQ/wCQ5+yT/K33nBS2z7Al2KuxV2KuxV2K
uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvkbJIdirsVdirsVdirsVdirNfJv5p655f4WtwTqGlrQCCR
vjjH/FTmtKfynb5Y0r2zy55s0PzFa+vplwHZRWW3b4ZY6/zp/Ebe+RSnGKuxV2KuxV2KuxV2KuxV
2KuxV2KuxV2KuxV2KuxV8jZJDsVdirsVdirsVdirsVdiqvY397YXSXVlO9vcxmqSxsVYfSMVeueT
fzphm4WfmVRDLsq6jGPgY/8AFqD7PzXb2GClt6nBPBPCk0EiywyDlHIhDKwPQgjYjAlfirsVdirs
VdirsVdirsVdirsVdirsVdirsVfI2SQ7FXYq7FXYq7FXYq7FXYq7FXYqyHyp561/y1MPqU3qWhNZ
bKWrRN4kD9lvdfprir2/yh+YugeZUWKJ/quo0q9jKRy26+m2wcfLfxAwUllOBXYq7FXYq7FXYq7F
XYq7FXYq7FXYq7FXyNkkOxV2KuxV2KuxV2KuxV2KuxV2KuxVtHdHV0Yq6kFWBoQRuCCMVel+Tfzm
v7HhZ+YA17aCireLvOg/y6/3g/4b54KW3sWl6tpuq2aXmnXCXNs/SRD0PgQd1Psd8CUXirsVdirs
VdirsVdirsVdirsVdir5GySHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqmWheYtZ0K8F3pdy0Em3N
RujgdnQ7MMVe0+Tfzc0fWeFpqnHTtRNACx/cSH/Ic/ZJ/lb7zgpbZ9gS7FXYq7FXYq7FXYq7FXYq
7FXyNkkOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVmvk3809c8v8LW4J1DS1oBBI3xxj/ipz
WlP5Tt8saV7Z5c82aH5itfX0y4DsorLbt8Msdf50/iNvfIpTjFXYq7FXYq7FXYq7FXYq+Rskh2Ku
xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVXsb+9sLpLqyne3uYzVJY2KsPpGKvXPJv50wzcLP
zKohl2VdRjHwMf8Ai1B9n5rt7DBS29TgngnhSaCRZYZByjkQhlYHoQRsRgSvxV2KuxV2KuxV2Kvk
bJIdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVZD5U89a/5amH1Kb1LQmstlLVom8S
B+y3uv01xV7f5Q/MXQPMqLFE/wBV1GlXsZSOW3X022Dj5b+IGCkspwK7FXYq7FXYq+Rskh2KuxV2
KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kto7o6ujFXUgqwNCCNwQRir0vyb+c1/Y8LPz
AGvbQUVbxd50H+XX+8H/AA3zwUtvYtL1bTdVs0vNOuEubZ+kiHofAg7qfY74EovFXYq7FXyNkkOx
V2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVMtC8xazoV4LvS7loJNuajdHA7
Oh2YYq9p8m/m5o+s8LTVOOnaiaAFj+4kP+Q5+yT/ACt95wUts+wJdir5GySHYq7FXYq7FXYq7FXY
q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqzXyb+aeueX+FrcE6hpa0Agkb44x/wAVOa0p
/KdvljSvbPLnmzQ/MVr6+mXAdlFZbdvhljr/ADp/Ebe+RS+Xskh2KuxV2KuxV2KuxV2KuxV2KuxV
2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ks18m/lZrnmDhdXAOn6W1CJ5F+OQf8VIaVr/MdvnjavbP
LnlPQ/Ltr6GmW4RmFJbhvilkp/O/8Bt7ZFL5eySHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY
q7FXYq7FXYq7FXYqmWheXdZ128Fppds08m3NhsiA93c7KMVe0+Tfyj0fRuF3qnHUdRFCAw/cRn/I
Q/aI/mb7hgtaZ9gS7FXyNkkOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVtEd3V
EUs7EBVAqSTsAAMVel+TfyZv77heeYC1laGjLZrtO4/y6/3Y/wCG+WC1p7Fpek6bpVmlnp1ultbJ
0jQdT4kndj7nfAlF4q7FXYq+Rskh2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVkPl
TyLr/mWYfUofTtAaS3stViXxAP7Tey/TTFXt/lD8utA8tIssSfWtRpR76UDlv19Ndwg+W/iTgtLK
cCuxV2KuxV2KvkbJIdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVV7Gwvb+6S1soHuLmQ0S
KNSzH6Bir1zyb+S0MPC88ysJpdmXToz8Cn/i1x9r5Lt7nBa09TgggghSGCNYoYxxjjQBVUDoABsB
gSvxV2KuxV2KuxV2KvkbJIdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirNfJv5Wa55g4XVwDp
+ltQieRfjkH/ABUhpWv8x2+eNq9s8ueU9D8u2voaZbhGYUluG+KWSn87/wABt7ZFKcYq7FXYq7FX
Yq7FXYq7FXyNkkOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVMtC8u6zrt4LTS7Zp5NubDZEB7u52U
Yq9p8m/lHo+jcLvVOOo6iKEBh+4jP+Qh+0R/M33DBa0z7Al2KuxV2KuxV2KuxV2KuxV2KvkbJIdi
rsVdirsVdirsVdirsVdirsVdiraI7uqIpZ2ICqBUknYAAYq9L8m/kzf33C88wFrK0NGWzXadx/l1
/ux/w3ywWtPYtL0nTdKs0s9Ot0trZOkaDqfEk7sfc74EovFXYq7FXYq7FXYq7FXYq7FXYq7FXyNk
kOxV2KuxV2KuxV2KuxV2KuxV2Ksh8qeRdf8AMsw+pQ+naA0lvZarEviAf2m9l+mmKvb/ACh+XWge
WkWWJPrWo0o99KBy36+mu4QfLfxJwWllOBXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXyNkkOxV2Kux
V2KuxV2KuxV2Kq9jYXt/dJa2UD3FzIaJFGpZj9AxV655N/JaGHheeZWE0uzLp0Z+BT/xa4+18l29
zgtaepwQQQQpDBGsUMY4xxoAqqB0AA2AwJX4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXyNkkOx
V2KuxV2KuxV2KuxVmvk38rNc8wcLq4B0/S2oRPIvxyD/AIqQ0rX+Y7fPG1e2eXPKeh+XbX0NMtwj
MKS3DfFLJT+d/wCA29silOMVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir5GySHYq7FXYq7F
XYqmWheXdZ128Fppds08m3NhsiA93c7KMVe0+Tfyj0fRuF3qnHUdRFCAw/cRn/IQ/aI/mb7hgtaZ
9gS7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXyNkkOxV2KuxVtEd3VEUs7EBVAqSTsA
AMVel+TfyZv77heeYC1laGjLZrtO4/y6/wB2P+G+WC1p7Fpek6bpVmlnp1ultbJ0jQdT4kndj7nf
AlF4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq+Rskh2KuxVkPlTyLr/AJlmH1KH
07QGkt7LVYl8QD+03sv00xV7f5Q/LrQPLSLLEn1rUaUe+lA5b9fTXcIPlv4k4LSynArsVdirsVdi
rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir5GySFexsL2/uktbKB7i5kNEijUsx+gYq9c8
m/ktDDwvPMrCaXZl06M/Ap/4tcfa+S7e5wWtPU4IIIIUhgjWKGMcY40AVVA6AAbAYEr8VdirsVdi
rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir578m/lbrnmDhdXAOn6WaH15F+OQf8A
FSGla/zHb55K0PbPLnlPQ/Ltr6GmW4RmFJbhvilkp/O/8Bt7ZFKcYq7FXYq7FXYq7FXYq7FXYq7F
XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX/9k=</xmpGImg:image> + </rdf:li> + </rdf:Alt> + </xmp:Thumbnails> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" + xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" + xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"> + <xmpMM:InstanceID>uuid:ae020665-92cd-e442-a979-93a3969b7ce3</xmpMM:InstanceID> + <xmpMM:DocumentID>xmp.did:F77F11740720681194DFF4A5DEFE0840</xmpMM:DocumentID> + <xmpMM:OriginalDocumentID>uuid:5D20892493BFDB11914A8590D31508C8</xmpMM:OriginalDocumentID> + <xmpMM:RenditionClass>proof:pdf</xmpMM:RenditionClass> + <xmpMM:DerivedFrom rdf:parseType="Resource"> + <stRef:instanceID>uuid:25309aba-6ddf-a941-9bd2-dd7653570218</stRef:instanceID> + <stRef:documentID>xmp.did:F77F117407206811818C85DF6A1A75C3</stRef:documentID> + <stRef:originalDocumentID>uuid:5D20892493BFDB11914A8590D31508C8</stRef:originalDocumentID> + <stRef:renditionClass>proof:pdf</stRef:renditionClass> + </xmpMM:DerivedFrom> + <xmpMM:History> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/pdf to <unknown></stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:D27F11740720681191099C3B601C4548</stEvt:instanceID> + <stEvt:when>2008-04-17T14:19:15+05:30</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/pdf to <unknown></stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/pdf to <unknown></stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F97F1174072068118D4ED246B3ADB1C6</stEvt:instanceID> + <stEvt:when>2008-05-15T16:23:06-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FA7F1174072068118D4ED246B3ADB1C6</stEvt:instanceID> + <stEvt:when>2008-05-15T17:10:45-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:EF7F117407206811A46CA4519D24356B</stEvt:instanceID> + <stEvt:when>2008-05-15T22:53:33-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F07F117407206811A46CA4519D24356B</stEvt:instanceID> + <stEvt:when>2008-05-15T23:07:07-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F77F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T10:35:43-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/pdf to <unknown></stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F97F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T10:40:59-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/vnd.adobe.illustrator to <unknown></stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FA7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T11:26:55-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FB7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T11:29:01-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FC7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T11:29:20-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FD7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T11:30:54-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FE7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T11:31:22-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:B233668C16206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T12:23:46-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:B333668C16206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T13:27:54-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:B433668C16206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T13:46:13-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F77F11740720681197C1BF14D1759E83</stEvt:instanceID> + <stEvt:when>2008-05-16T15:47:57-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F87F11740720681197C1BF14D1759E83</stEvt:instanceID> + <stEvt:when>2008-05-16T15:51:06-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F97F11740720681197C1BF14D1759E83</stEvt:instanceID> + <stEvt:when>2008-05-16T15:52:22-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FA7F117407206811B628E3BF27C8C41B</stEvt:instanceID> + <stEvt:when>2008-05-22T13:28:01-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FF7F117407206811B628E3BF27C8C41B</stEvt:instanceID> + <stEvt:when>2008-05-22T16:23:53-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:07C3BD25102DDD1181B594070CEB88D9</stEvt:instanceID> + <stEvt:when>2008-05-28T16:45:26-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F87F1174072068119098B097FDA39BEF</stEvt:instanceID> + <stEvt:when>2008-06-02T13:25:25-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F77F117407206811BB1DBF8F242B6F84</stEvt:instanceID> + <stEvt:when>2008-06-09T14:58:36-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F97F117407206811ACAFB8DA80854E76</stEvt:instanceID> + <stEvt:when>2008-06-11T14:31:27-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:0180117407206811834383CD3A8D2303</stEvt:instanceID> + <stEvt:when>2008-06-11T22:37:35-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F77F117407206811818C85DF6A1A75C3</stEvt:instanceID> + <stEvt:when>2008-06-27T14:40:42-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F77F11740720681194DFF4A5DEFE0840</stEvt:instanceID> + <stEvt:when>2010-04-20T10:39:03-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed>/</stEvt:changed> + </rdf:li> + </rdf:Seq> + </xmpMM:History> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/"> + <illustrator:StartupProfile>Print</illustrator:StartupProfile> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/" + xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#" + xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/"> + <xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint> + <xmpTPg:HasVisibleTransparency>True</xmpTPg:HasVisibleTransparency> + <xmpTPg:NPages>1</xmpTPg:NPages> + <xmpTPg:MaxPageSize rdf:parseType="Resource"> + <stDim:w>19.000000</stDim:w> + <stDim:h>19.000000</stDim:h> + <stDim:unit>Points</stDim:unit> + </xmpTPg:MaxPageSize> + <xmpTPg:PlateNames> + <rdf:Seq> + <rdf:li>Black</rdf:li> + </rdf:Seq> + </xmpTPg:PlateNames> + <xmpTPg:SwatchGroups> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <xmpG:groupName>Default Swatch Group</xmpG:groupName> + <xmpG:groupType>0</xmpG:groupType> + <xmpG:Colorants> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>White</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>Black</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>100.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>CMYK Red</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>100.000000</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>CMYK Yellow</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>CMYK Green</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>100.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>CMYK Cyan</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>100.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>CMYK Blue</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>100.000000</xmpG:cyan> + <xmpG:magenta>100.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>CMYK Magenta</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>100.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=15 M=100 Y=90 K=10</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>14.999998</xmpG:cyan> + <xmpG:magenta>100.000000</xmpG:magenta> + <xmpG:yellow>90.000000</xmpG:yellow> + <xmpG:black>10.000002</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=90 Y=85 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>90.000000</xmpG:magenta> + <xmpG:yellow>85.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=80 Y=95 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>80.000000</xmpG:magenta> + <xmpG:yellow>95.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=50 Y=100 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>50.000000</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=35 Y=85 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>35.000004</xmpG:magenta> + <xmpG:yellow>85.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=5 M=0 Y=90 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>5.000001</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>90.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=20 M=0 Y=100 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>19.999998</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=50 M=0 Y=100 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>50.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=75 M=0 Y=100 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>75.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=85 M=10 Y=100 K=10</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>85.000000</xmpG:cyan> + <xmpG:magenta>10.000002</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>10.000002</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=90 M=30 Y=95 K=30</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>90.000000</xmpG:cyan> + <xmpG:magenta>30.000002</xmpG:magenta> + <xmpG:yellow>95.000000</xmpG:yellow> + <xmpG:black>30.000002</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=75 M=0 Y=75 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>75.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>75.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=80 M=10 Y=45 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>80.000000</xmpG:cyan> + <xmpG:magenta>10.000002</xmpG:magenta> + <xmpG:yellow>45.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=70 M=15 Y=0 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>70.000000</xmpG:cyan> + <xmpG:magenta>14.999998</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=85 M=50 Y=0 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>85.000000</xmpG:cyan> + <xmpG:magenta>50.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=100 M=95 Y=5 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>100.000000</xmpG:cyan> + <xmpG:magenta>95.000000</xmpG:magenta> + <xmpG:yellow>5.000001</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=100 M=100 Y=25 K=25</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>100.000000</xmpG:cyan> + <xmpG:magenta>100.000000</xmpG:magenta> + <xmpG:yellow>25.000000</xmpG:yellow> + <xmpG:black>25.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=75 M=100 Y=0 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>75.000000</xmpG:cyan> + <xmpG:magenta>100.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=50 M=100 Y=0 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>50.000000</xmpG:cyan> + <xmpG:magenta>100.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=35 M=100 Y=35 K=10</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>35.000004</xmpG:cyan> + <xmpG:magenta>100.000000</xmpG:magenta> + <xmpG:yellow>35.000004</xmpG:yellow> + <xmpG:black>10.000002</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=10 M=100 Y=50 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>10.000002</xmpG:cyan> + <xmpG:magenta>100.000000</xmpG:magenta> + <xmpG:yellow>50.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=95 Y=20 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>95.000000</xmpG:magenta> + <xmpG:yellow>19.999998</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=25 M=25 Y=40 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>25.000000</xmpG:cyan> + <xmpG:magenta>25.000000</xmpG:magenta> + <xmpG:yellow>39.999996</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=40 M=45 Y=50 K=5</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>39.999996</xmpG:cyan> + <xmpG:magenta>45.000000</xmpG:magenta> + <xmpG:yellow>50.000000</xmpG:yellow> + <xmpG:black>5.000001</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=50 M=50 Y=60 K=25</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>50.000000</xmpG:cyan> + <xmpG:magenta>50.000000</xmpG:magenta> + <xmpG:yellow>60.000004</xmpG:yellow> + <xmpG:black>25.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=55 M=60 Y=65 K=40</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>55.000000</xmpG:cyan> + <xmpG:magenta>60.000004</xmpG:magenta> + <xmpG:yellow>65.000000</xmpG:yellow> + <xmpG:black>39.999996</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=25 M=40 Y=65 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>25.000000</xmpG:cyan> + <xmpG:magenta>39.999996</xmpG:magenta> + <xmpG:yellow>65.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=30 M=50 Y=75 K=10</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>30.000002</xmpG:cyan> + <xmpG:magenta>50.000000</xmpG:magenta> + <xmpG:yellow>75.000000</xmpG:yellow> + <xmpG:black>10.000002</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=35 M=60 Y=80 K=25</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>35.000004</xmpG:cyan> + <xmpG:magenta>60.000004</xmpG:magenta> + <xmpG:yellow>80.000000</xmpG:yellow> + <xmpG:black>25.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=40 M=65 Y=90 K=35</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>39.999996</xmpG:cyan> + <xmpG:magenta>65.000000</xmpG:magenta> + <xmpG:yellow>90.000000</xmpG:yellow> + <xmpG:black>35.000004</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=40 M=70 Y=100 K=50</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>39.999996</xmpG:cyan> + <xmpG:magenta>70.000000</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>50.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=50 M=70 Y=80 K=70</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>50.000000</xmpG:cyan> + <xmpG:magenta>70.000000</xmpG:magenta> + <xmpG:yellow>80.000000</xmpG:yellow> + <xmpG:black>70.000000</xmpG:black> + </rdf:li> + </rdf:Seq> + </xmpG:Colorants> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:groupName>Grays</xmpG:groupName> + <xmpG:groupType>1</xmpG:groupType> + <xmpG:Colorants> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=0 Y=0 K=100</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>100.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=0 Y=0 K=90</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>89.999405</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=0 Y=0 K=80</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>79.998795</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=0 Y=0 K=70</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>69.999702</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=0 Y=0 K=60</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>59.999104</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=0 Y=0 K=50</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>50.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=0 Y=0 K=40</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>39.999401</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=0 Y=0 K=30</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>29.998802</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=0 Y=0 K=20</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>19.999701</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=0 Y=0 K=10</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>9.999103</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=0 Y=0 K=5</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>4.998803</xmpG:black> + </rdf:li> + </rdf:Seq> + </xmpG:Colorants> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:groupName>Brights</xmpG:groupName> + <xmpG:groupType>1</xmpG:groupType> + <xmpG:Colorants> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=100 Y=100 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>100.000000</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=75 Y=100 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>75.000000</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=10 Y=95 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>10.000002</xmpG:magenta> + <xmpG:yellow>95.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=85 M=10 Y=100 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>85.000000</xmpG:cyan> + <xmpG:magenta>10.000002</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=100 M=90 Y=0 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>100.000000</xmpG:cyan> + <xmpG:magenta>90.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=60 M=90 Y=0 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>60.000004</xmpG:cyan> + <xmpG:magenta>90.000000</xmpG:magenta> + <xmpG:yellow>0.003099</xmpG:yellow> + <xmpG:black>0.003099</xmpG:black> + </rdf:li> + </rdf:Seq> + </xmpG:Colorants> + </rdf:li> + </rdf:Seq> + </xmpTPg:SwatchGroups> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:pdf="http://ns.adobe.com/pdf/1.3/"> + <pdf:Producer>Adobe PDF library 9.00</pdf:Producer> + </rdf:Description> + </rdf:RDF> +</x:xmpmeta> + + + + + + + + + + + + + + + + + + + + + +<?xpacket end="w"?>
endstream
endobj
3 0 obj
<</Count 1/Kids[31 0 R]/Type/Pages>>
endobj
31 0 obj
<</ArtBox[6.0 4.5 13.998 14.499]/BleedBox[0.0 0.0 19.0 19.0]/Contents 32 0 R/Group 33 0 R/LastModified(D:20100420111552-07'00')/MediaBox[0.0 0.0 19.0 19.0]/Parent 3 0 R/PieceInfo<</Illustrator 34 0 R>>/Resources<</ExtGState<</GS0 35 0 R>>/Properties<</MC0 29 0 R>>/XObject<</Fm0 36 0 R>>>>/Thumb 37 0 R/TrimBox[0.0 0.0 19.0 19.0]/Type/Page>>
endobj
32 0 obj
<</Filter/FlateDecode/Length 66>>stream
+H‰Ò÷wVÐ÷u6PprqVà*ä2P0´!] .Jå +WÈ +ê»(¤sé»å(¸äsr¹úUr +8;V'i$O[%B0E;4a!JC~>
endstream
endobj
38 0 obj
[/Indexed/DeviceRGB 255 39 0 R]
endobj
39 0 obj
<</Filter[/ASCII85Decode/FlateDecode]/Length 428>>stream
+8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#s<Xl5FH@[<=!#6V)uDBXnIr.F>oRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0I<jlL.oXisZ;SYU[/7#<&37rclQKqeJe#,UF7Rgb1 +VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j<etJICj7e7nPMb=O6S7UOH< +PO7r\I.Hu&e0d&E<.')fERr/l+*W,)q^D*ai5<uuLX.7g/>$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~>
endstream
endobj
36 0 obj
<</BBox[6.0 14.499 13.998 4.5]/Group 40 0 R/Length 74/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 41 0 R>>>>/Subtype/Form>>stream
+0 0 0 1 k +/GS0 gs +q 1 0 0 1 6 14.499 cm +0 0 m +7.998 -5 l +0 -9.999 l +h +f +Q +
endstream
endobj
40 0 obj
<</I false/K false/S/Transparency/Type/Group>>
endobj
41 0 obj
<</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>>
endobj
29 0 obj
<</Intent 42 0 R/Name(Layer 1)/Type/OCG/Usage 43 0 R>>
endobj
42 0 obj
[/View/Design]
endobj
43 0 obj
<</CreatorInfo<</Creator(Adobe Illustrator 14.0)/Subtype/Artwork>>>>
endobj
35 0 obj
<</AIS false/BM/Normal/CA 0.669998/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 0.669998/op false>>
endobj
34 0 obj
<</LastModified(D:20100420111552-07'00')/Private 44 0 R>>
endobj
44 0 obj
<</AIMetaData 45 0 R/AIPDFPrivateData1 46 0 R/AIPDFPrivateData10 47 0 R/AIPDFPrivateData2 48 0 R/AIPDFPrivateData3 49 0 R/AIPDFPrivateData4 50 0 R/AIPDFPrivateData5 51 0 R/AIPDFPrivateData6 52 0 R/AIPDFPrivateData7 53 0 R/AIPDFPrivateData8 54 0 R/AIPDFPrivateData9 55 0 R/ContainerVersion 11/CreatorVersion 14/NumBlock 10/RoundtripVersion 14>>
endobj
45 0 obj
<</Length 914>>stream
+%!PS-Adobe-3.0
%%Creator: Adobe Illustrator(R) 14.0
%%AI8_CreatorVersion: 14.0.0
%%For: (Nicholas Jitkoff) ()
%%Title: (HierarchyArrow.pdf)
%%CreationDate: 4/20/10 11:15 AM
%%Canvassize: 16383
%%BoundingBox: 6 4 14 15
%%HiResBoundingBox: 6 4.5 13.998 14.499
%%DocumentProcessColors: Black
%AI5_FileFormat 10.0
%AI12_BuildNumber: 367
%AI3_ColorUsage: Color
%AI7_ImageSettings: 0
%%CMYKProcessColor: 1 1 1 1 ([Registration])
%AI3_Cropmarks: 0 0 19 19
%AI3_TemplateBox: 9.5 9.5 9.5 9.5
%AI3_TileBox: -296.5 -386.5 315.5 405.5
%AI3_DocumentPreview: None
%AI5_ArtSize: 14400 14400
%AI5_RulerUnits: 2
%AI9_ColorModel: 2
%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0
%AI5_TargetResolution: 800
%AI5_NumLayers: 1
%AI9_OpenToView: -19 26 24 1351 758 90 0 0 52 138 0 0 0 1 1 0 1 1 0
%AI5_OpenViewLayers: 7
%%PageOrigin:0 0
%AI7_GridSettings: 72 72 72 72 1 0 0.8 0.8 0.8 0.9 0.9 0.9
%AI9_Flatten: 1
%AI12_CMSettings: 00.MS
%%EndComments
endstream
endobj
46 0 obj
<</Length 13044>>stream
+%%BoundingBox: 6 4 14 15
%%HiResBoundingBox: 6 4.5 13.998 14.499
%AI7_Thumbnail: 104 128 8
%%BeginData: 12914 Hex Bytes
%0000330000660000990000CC0033000033330033660033990033CC0033FF
%0066000066330066660066990066CC0066FF009900009933009966009999
%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
%6666006666336666666666996666CC6666FF669900669933669966669999
%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
%9933009933339933669933999933CC9933FF996600996633996666996699
%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
%000011111111220000002200000022222222440000004400000044444444
%550000005500000055555555770000007700000077777777880000008800
%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
%524C457DA8FD66FF52537DFD65FF7D525259A8FD63FFFD05527DA8FD61FF
%7D527D527D527DA8FD60FF52525259FD04527DFD5FFF7D527D527D527D52
%5352A8FD5DFFFD0B527DA8FD5BFF7D527D527D527D527D527D527D7DFD5A
%FF52595252525952525259FD0552A8FD58FF7D527D527D527D527D527D52
%7D527D527DA8FD56FFFD12527DFD55FF7D527D527D527D527D527D527D52
%7D527D52537DA9FD53FF52525259525252595252525952525259FD05527D
%A8FD51FF7D527D527D527D527D527D527D527D527D527D527D527DA8FD50
%FFFD1952FD4FFF7D527D527D527D527D527D527D527D527D527D527D527D
%527D52A8FD4DFF52595252525952525259525252595252525952525259FD
%05527DA8FD4BFF7D527D527D527D527D527D527D527D527D527D527D527D
%527D527D52527DFD4AFFFD1F52A8FD48FF7D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527DA8FD46FF525252595252
%525952525259525252595252525952525259525252595252525352527DFD
%45FF7D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D525252FD44FFFD25527DA8FD41FF7D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527DA8FD
%40FF52595252525952525259525252595252525952525259525252595252
%52595252525952525259525253FD3FFF7D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D525252A8FD
%3DFFFD2B527DA8FD3BFF7D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D52537DFD3AFF52
%525259525252595252525952525259525252595252525952525259525252
%59525252595252525952525259525252A8FD38FF7D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D5252527DA8FD36FFFD32527DFD35FF7D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D525253FD34FF525952525259525252595252525952
%525259525252595252525952525259525252595252525952525259525252
%59525252595252527DA8FD31FF7D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D5259527DA8FD30FFFD385259A9FD2EFF7D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D525252A8FD2DFF5252525952525259
%525252595252525952525259525252595252525952525259525252595252
%5259525252595252525952525259525252595252527DA8FD2BFF7D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D52537DFD2A
%FFFD3F52A8FD28FF7D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D5259527DA8FD26FF52595252525952525259525252
%595252525952525259525252595252525952525259525252595252525952
%52525952525259525252595252525952525259525252537DFD25FF7D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D525259A8FD23FFFD45527DA8FD21FF7D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527DA8FD
%20FF52525259525252595252525952525259525252595252525952525259
%525252595252525952525259525252595252525952525259525252595252
%52595252525952525259FD04527DFD1FFF7D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D5253
%52A8FD1DFFFD4B527DA8FD1BFF7D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%7DFD1AFF5259525252595252525952525259525252595252525952525259
%525252595252525952525259525252595252525952525259525252595252
%525952525259525252595252525952525259FD0552A8FD18FF7D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527DA8FD16FFFD52527DFD15FF7D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D52537DA9FD13FF5252525952
%525259525252595252525952525259525252595252525952525259525252
%595252525952525259525252595252525952525259525252595252525952
%525259525252595252525952525259FD05527DA8FD11FF7D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527DA8FD10FFFD5952FD0FFF
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%A8FD0DFF5259525252595252525952525259525252595252525952525259
%525252595252525952525259525252595252525952525259525252595252
%525952525259525252595252525952525259525252595252525952525259
%FD05527DA8FD0BFF7D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D52527DFD0AFFFD5F52A8FD08FF7D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527DA8
%FD06FF525252595252525952525259525252595252525952525259525252
%595252525952525259525252595252525952525259525252595252525952
%525259525252595252525952525259525252595252525952525259525252
%59525252595252525352527DFD05FF7D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D525252FD04FFFD65
%527DA8FF7D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D7DFFFF525952525259525252595252
%525952525259525252595252525952525259525252595252525952525259
%525252595252525952525259525252595252525952525259525252595252
%52595252525952525259525252595252525952525259FD05527DA8FFFFFF
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D525252A8FD05FFFD605259A9FD06FF7D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527DA8FD08FF52
%525259525252595252525952525259525252595252525952525259525252
%595252525952525259525252595252525952525259525252595252525952
%525259525252595252525952525259525252595252525952525259FD0552
%7DA8FD09FF7D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D525252FD0CFFFD5A527DFD0DFF7D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D5259527DA8FD0EFF52595252525952525259
%525252595252525952525259525252595252525952525259525252595252
%525952525259525252595252525952525259525252595252525952525259
%525252595252525952525259FD0552A8FD10FF7D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D52527DFD12FFFD53527DA8FD13FF7D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D525252A8FD15FF5252525952525259
%525252595252525952525259525252595252525952525259525252595252
%525952525259525252595252525952525259525252595252525952525259
%5252525952525259FD04527DFD17FF7D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527DA8FD18FFFD4D527DA8FD19FF7D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%5253FD1CFF52595252525952525259525252595252525952525259525252
%595252525952525259525252595252525952525259525252595252525952
%525259525252595252525952525259525252537DFD1DFF7D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527DA8FD1EFFFD4752A8FD20FF7D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D52537DFD22FF
%525252595252525952525259525252595252525952525259525252595252
%525952525259525252595252525952525259525252595252525952525259
%525252595252527DA8FD23FF7D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D525352A8FD25FFFD4152FD27FF7D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7DA8FD28FF52595252525952525259525252595252525952525259525252
%595252525952525259525252595252525952525259525252595252525952
%5252595252527DA8FD29FF7D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D525259A8FD2BFFFD3A527DFD2DFF7D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527DA8FD2EFF52525259525252
%595252525952525259525252595252525952525259525252595252525952
%525259525252595252525952525259525252A8FD30FF7D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D52537DFD32FFFD33527DA8FD33FF7D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D52A8FD35FF525952525259525252
%595252525952525259525252595252525952525259525252595252525952
%52525952525259525253FD37FF7D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D5259527D
%A8FD38FFFD2D527DA8FD39FF7D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D52537DA9FD3BFF
%525252595252525952525259525252595252525952525259525252595252
%5259525252595252525352527DFD3DFF7D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D5252527DA8FD3E
%FFFD2752A8FD40FF7D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D7DFD42FF5259525252595252525952
%52525952525259525252595252525952525259FD05527DA8FD43FF7D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D5252
%52A8FD45FFFD205259A9FD46FF7D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527DA8FD48FF525252595252525952525259
%525252595252525952525259FD05527DA8FD49FF7D527D527D527D527D52
%7D527D527D527D527D527D527D527D525252FD4CFFFD1A527DFD4DFF7D52
%7D527D527D527D527D527D527D527D527D527D5259527DA8FD4EFF525952
%525259525252595252525952525259FD0552A8FD50FF7D527D527D527D52
%7D527D527D527D527D527D52527DFD52FFFD13527DA8FD53FF7D527D527D
%527D527D527D527D527D525252A8FD55FF525252595252525952525259FD
%04527DFD57FF7D527D527D527D527D527D527D527DA8FD58FFFD0D527DA8
%FD59FF7D527D527D527D527D525253FD5CFF525952525259525252537DFD
%5DFF7D527D527D527D527DA8FD5EFFFD0752A8FD60FF7D527D52537DFD62
%FF5252527DA8FD63FF5352A8FD65FF52FD66FFFF
%%EndData
endstream
endobj
47 0 obj
<</Filter[/FlateDecode]/Length 8576>>stream
+H‰¬WëVÚL}‚<„@ ´@„ HEÅrYâg¥•Kàý¿™É}˜É$Æ?³X‚û\÷9ûȹâmã‹ßoJy±¶Ök¹×eƒ‡O</TåK|/ŠÕ×}á줞¾)êy½+VΫʅ6º+ÚB¯lRÏwbu¸ÈÁ¨PV”úðÓµñ?íöþ¤o‚‰Ýô7Û„]p[Qy±"©’ñÔO3u`å9©¼› +‰ìéPëø€ÙPÅ5 Šã
o_J©ío±z=«€Ÿßþ°²3èÉY’7Ÿù¨á›Ê;R*‰uAOUæ±½f#nÐ'ÑÖ,A?©\´o¶•°r¢bÃX—§ðRwm¸RŸ¦ÌÐìy¿&/õÕ©•"³…ˆ¾mŸñ¼ñ,{Ùde“þ¾V,G¯í¨êJægÓ¿âŠ4P$ø<"+ÀÞ¸Aº:p<»Ý Ìü\¨°Þ Šsp’¥ª±Zºé2$D
‚5ä‹ÑµÃµ¼œOÄq£è«{ßêÄy¶£PÞ€N&â(±qô¨l+f÷·«ÎõÝ@{¢
Žh(vóváÈËý +v²™ï³(“ʘóXW"¡XVBà|`nÕÇprŸ•ì x&LXÅãMcå ä^×bÙê¡îÚRJ•E!M^-€ ùÚÃEÛ5u]…—j€å®Ÿ‘Ñ°àÞwhXJIG4,¥… Ñ#!š0£‘
Ý2ÀÙbÞÍíJ%ˆê÷¾Å!`Ê +K†õ¬B-,¼_\ÃÀY(ԼЕyBh‘w€{¸RI×c@l¬..}ƒ¼`)*´’R;Ìí°}!XšîWUé\‘ Âk˜…^¨ïº¬éTûJ:ªeÎvž FYùÚhj,À}BO`ë5Ñ€KþÁñÖCQ/J}«W_Èö,é—Íégò]c¥Ôk¹ö}#¾lßr|£*ÞÞ•×3ñ|Òz?r{¡ÞMšÏy¡k‹§5‹.÷¬OqÈÔ48>bªþõWµï6:ÝÅ€ë½S±Ü?åx=>÷\ÄÀnÿN}mUJõDZÓJ¹î×wAΕG‡Ý®˜eW/ßIFw‡YIñÎdY¹)gº£çñÄ—~ú‰bt<¡±Äš›5VY‹?¨F…ËEö?˨ö×môûIÚ1 +b‘p'¸w–w}N&ãŽQ]ø’ÜÙF£g¯éTõñ/É(ÇÃ?¹cõ5çYªQ¹ÙùÞ£=óÅ_2jê1o‚§>FµÄ9ݨv åxÔJüõŸîœœàâ¸O7úõWgH7ªªƒ&2jmd`6¿—ìOÆ/w‡L9ç>åw…ºLýâ¾e{–)ý€(–Ö{ÕY“ æqÖ'åÎd÷ò¬;Ôñ@²õ|òžŒ ©gi87¹4LßÍøUl7ìòÆ#Änž¨”ÐÓ7”„:Y5 c½k^_—`'Óªï0§¼.Å=£üˆ¼÷zIã©7¦uý•.péê@u‰ã‰yÊü\¨Ä<a›=`éL
ãqê6ö)yZ;+ݪ>¾Ô?.1IoíöÝ×%#K\°~Ò†ë(ñÁÉoE¨¨OºF>ÃÅçÕݾNºwF0\âx?§úçô˜–O‡Z‡ì”éO +ùMWꤒAãÊöAņ•£úÂŽ+ur¹cßbIÔ\TÍÿ[õ™ÎFæý¦³ëÇãÓlÂoVô˜¡õÚ8F
Í5aŒà¨¡RúZ'iVÍãT}†+
1HTË^6Iùê{€@ÆÕ¢$¿Ûó¤J'ÑsÊ«ï*”´ñ9˜‰±Ó"ciÜÿØÕÁjŽ1(Ž'™™7ÃÈ +™7åga®úõy° Ó+«‹KŸL‚ya™¼JQÊ9oâ†Rø˜Ù)®Éä[ä·TCu?ûìs<©žÁCò‘äõ"
É~ŒÍc{ÍFÜxNÅâÚë»]^}Ý…×# Ç
¢Q‡þ’·Àè¸A¨®†t›yYÐIÀú>k^šáK1\W'¬dYËs fÌãT¾öpѦ,5¦÷¸w\Bs;å/€¢ù\%ü—6ªè± +áÑ–> +‰R6é6
¡ÀÛOß—mèך£`±À-åšñ,{Ðkk²süQ–µÞ?vTI#*rW‚š{Ù2F¨3 öÁ»Ž;=Z'‰ºÞ•Çl+$.¶Åð‰9N‹¹Èá„ñILÜæ¬HÏÆYJ'Cê’t-ÙÑÿªw{Ù+Ø;¸`Ç
XCÁRã4É^¨ÄxÄfØt\sŒ6 +‚峆çÙ]žøÝ©|[f¥> aw²ÅJ¨×Ò`z=ÖÝVô•ÈËîË)ƒ
GÁŽÄ;“ñÃ5©a]B+ öt¨u‚&)Øâš +VH|ë\E㬾*p|T¡Zø-ãÂÅ‘¢xb±pN?%*"}Ì[,NŽ~微ŲÕCî!D¾,A¼4Ì»/ÕRæv-ws”<ˆh¯NCð7F!üih“pˆHh*¥Óp¼ ç9>
Xb$´o1,:
A¶ñkñj¼Ä]ƒ1<1çèP²Î‹„“¶Å˜82•†˜´§ +{k +o\|’îšóŸ=â»1
ýGiˆNi›I¨×äߦa„dÏÖ1Su±ƒÞm…r¨\˜¶¬2à$”H]XÁ„0çáâÅZã>4Fž»—6• ³¥‹ˆ©dA?@dÌsÁW*_ÏJt××Êÿc®„»¤
ç¯;SPÏÖqa¶žrVž£}##˜»“Úñ|ö™¦ý?„aš¾ÒŒMa¨N¯g¥açÒ|f-fC¹Ð‘ùT{Fœë¥ +âùÙ9×8ê•ðvâeϤ³j–<ÆSMaí +ñæëK‹ ©A’à¿äÜI6—*¥ØÜçø‰Í]
Eù“Ê6ôVÜÚAizu–‰µ÷Š"z^©ã£…r؆!`³ÙoFÙö×諾5D×G؇‡ny~?oàãÀËFûd8M+ûÎé}L–ŸN…Á€pw.t/‚ƒ8+:eFŽÜÓº½Õ};V +“sñâ×Þ¾˜“x$Ý{!nËÂyÄÞ·«ð·Ê +þ´¹×W'ë˜NP,úúP²oŽÒB«§
¢¹ñwj¯´„eíñ 3½¿sfº¹i;cŸì³é÷|£¬¦'¶$³‹>%™íä!¶ÏëÙ·¤0 +žœXfGÒ°îÔJÌh·þÄ‘W>¹_ÁòÞ‹¸¡à7°Œùp…±»¡‹õx‘¦õ?æ˜\–¯„Àl¥2>ç>GŠEÎçž-³ã¹f™ø½;Šœ{ç¼iî!ý߈á`#FY6FŽtìΩo¥ýæŸê6úF‘17ÇÃ×£¾QãŒ[>æ5ß™'£¾ŸOû,[èlÍN²ðB¤} +Åìáß·ßP +Ë6£ýwÞcõ§É; º]9npl>,[B憞^‰ÿ¨ÈNËa_L[µ,ð×ÚÊFrèT+C§@3ƒV¶sžhU$üŒ»…šZ†pdBQ½Åç ´ñDøäM
mÀòQ˜¾J»@xe»bi~ñصXÆ…'ñ”€9VYiצ^¤” Ô_¼Z™Éí%3?"6‹M‰·ì‡ËNGCTu +`¬îZ" åCK¯zÔ'gcøŒ¿G¡X ÐÕÄE®5Hª´µb–/y¸ìû6KÏéq-PduV"ê\„!’wNÈ»¤8IFôÊÁa\v‰êï’8“ÑHÒqÕaR ømr›4›yŠ®Ù£úƒ«%ôõò qÐTâðï*…ï
]mŠËh?zçÇHpùM„9RaXv ç²´ =_ͨÄk×WbåjÁJŒù6šhÚŒ)«ð;§XÍ<³ç*+Ôá\‰MD/ž>41‹7‡^¤ ;$°š >£¦ìBïìð.´WU–«Ë?a©©«qUxDk¦‰çŸ&ö& +®‚5UÄ7xó´ÄÅ8Tå¡PÆ› +À1ôLoü=k}/2êŠZfX’îZ7´‡×%>t‰ãuu¢Dr4úP<Å<hP;ôH"—Z@¢çÉ);OE–pɹ!6:Xg©‹fÕªÁQæ¨÷’ò”p|šê{§mßMˆ€ÊÁ¡˜Oõ5öÇC&zórP^1á¾6×T¿çLÁG=Œk”à6ݛϨEó{- ôAÒAˆp&žtw2À ¨ÞX!e‚þë1Y¡kü±‚°‹ËG ü€`š½2!€ÜßJ´y¬!}ß/ƒ`@@›Üok&«B ¤:=‚;§É„Ÿ<Hîubï BÜö\í<È·ÖØ +‰Z>[mK_æYʼn;î#Úíú*˜M)nì¡©äù¬W×vâÊýþaÊŒÉIDŒ +B1{eÃæ!‚C)[ +‡¶œûÐ=Rh%XÐ}‘é[´’ð +gÿA6T”’o¿a;05Næ›9Þ^¹p'NÅñ‹eÍ@rŠ+i¾ÚÇ‘/«×¨áŠª!Q,ˆc‹ +äseƒÇ +¤ìCiæ!q1àõÙ„5Ù
Cì¿g7'#C†ç¢é°Þj£Þ)l&^iöÌ(Vn(¡ôx¬€ Ì «bŒ¬Ç¬WQQ¯ï¨€ùÀ¨PŽú,¿…VH`7BBiœHYïr¸b…ÀÉ6´ L
øÂGµºö=÷ùâujËÃGMÁ)ŠBÈVÒ4ðø5ƒØËà‚jp±2f›nì +•]±ÒÀjþ¿OLˆ‰¿b"/üâÚçµ~h^–/›_aOÒÃåk‚ÐÝ,¶åƒ®ßéÿ9·óó›¾9ýJüâò¥V‹E‹ú|»Ðás”¾é•]ÉÓ,¦!¢„K¶ e¯D‡"ŧxeUõµÓ³âßÏØRÑl·»»=~~zH‚™³$ž,†DX,wˆPõF۾Ѯ2é)%/g›ÓŒEã)$ü7í+ê‡Â¹Ä4êHÎrÇh5>½«¤=dé¡ ·sÜq™âªùÁMqP¾ï丿Å] þQ›î;ÓÓÞêÊ0vk¬LOëGèɧ +û +|¬nØ-da,Ü(ŽÆ?éCuþ/4ŠÁŒ·hi¤®cx¬RÎõ»bm‘&L6õ{‚ÝE\ +¡ÎWõÄg«?“m×gnxiÍnÔ«
l»œ {ÇZ½FÁj(˜½F‹™xM„\i3ÉCZë…ŒU˜©]µ±Æ=µzÕãÌ¿WCÞZ´ib0[Ϙ֬’K0&¤‰Ù³ÄicOb_Ìè Â¥Dh…_‡ŠU½Èµ»ÌØUàû2ƒª%TMRhuY£Ö„÷»æŸËŒ]Ç~Ø¢áîý}“¾¸E#Œ}Û¤/nѸËפ/nÑÆÝû›&m÷€…†ñKî´]s’fvTÊ‚…Ü‘Þ¡!B…q¥ÑÁÓDW‡4÷ŠéŠ›¯{£PóØp!)ß[ü‚Üáããn§XA*ÛÁ +`VÅ*j£0û^Ås¦;¡KÖHzìBƒ~J½ÃêÑïbg£ÇâµkTDïøRªi(ðèóÖ?Uœß©¨ªnªÈ Õ¯}ÐÅ·"”ÇÂS•A+Ö~Çáwµádú:ešãàÄŠý£É1œ{K‡ó4-bn`AHó·GP7å +öÝU$ô†Œc"SƥϤ’omÔÀ $À·Ÿ!H®»·®À`æy)P7Ø?œGÖûÚû™2ÊF0ÆÔ-¶‡ +e‡k'9ÈIÚˆ˜tÕ\ñ\ºwF¡Ð¡^óÐy³(qâÞ xHzx4+ Á ¥c+€nw佂±;â²e‡`à„ +"xÿÜqÛ iŸ÷ +Öü)‡ìiòñøêðÄê!™Õ‰Ál=c ʬKðxç,Awîã+ +OÎÉ(/•ãŒ¸ølëórÄ@ +úZ‹Xsç™6;µÎâà€`UmóèB/Àc¶=C”½ƒ{8Îåg)^WY +3B‘ê\ôn‚Ùk"ã¥71E½*ƒpÙFh¦c +†Jųمþ[õóÛçGáÌhAóUWÏOLðâP§ó,JÖºŠL“hÜw|Rû´ïy<ÖFSѨ¹¤lŠ2aÅ{AQõç·Õ<Ï’bM]VM΢ËaŸºd¸1¸¨kd6 ›Ã1,Œ…¤ +H‰ÌWÛnä¸ýþƒò``üà^R"%шºÌÎfgƘön,Cã–mee©¡îžÍäësxÑm÷8ÉËè¸Õn^ŠÅªÃªâÙŸ®Öɦû\]+ꑳ³´¯Ê}×_z¦Õ{×4‡Ý¾×Mo>{Œ¯(%ïâ7ðתßÕ]{iºLg¡g¿ùPß>tM¹ó~ª÷¿wwwçÞ›st^×û¦B÷uÕ—ýíÃפï»?VÛÍÝù°8¤eåƒø>ýQ±K&¼ä½P¶_ÊÝ®þ7ºYÄÚTwh7u{¯º]z¡Ç¡‰Ç:~¬?U»ãÞ•ðX°’2Ö +s)1.ënU»¿ê»Ûj·K»¦ëw—žjÊÛß ö*nŠº©°Çrï1³ÉäóoÔ¡n6Ÿ+l8#Ýܘé¿ìÊ{¨hþ×ÍÑÍ»G´¬«ýº@¸6Túþ﯉-9¼ùíSu_»Ãÿ8w’ûnûXö¿ëé +¡åþá j7»Q¦ý¹”gÛ¾-o}«IÑ{ª?ì¼ë®kF±Ë®Qºk6zü÷±Æ•™Ð~lž®ä¯„HðÝ‚Ñ/¯€ÎïYzZ6M}ß—Û‡úö¹žéW²}ÿ
±¾>~îšz÷8ñiÖrUöûú¶©Ö_wûêñ”4m»ºÝ€ˆ&èLÚv[´½õC¹ŒÌýCaF®Gâqú..NÄÄ ôT;ëÛ—›á…HÚm·PáÊæœýF€çžÚß%&4¡ +Hiä´ £L?>0‹É@±ÈX>˜¯ŸÀçÄç¾ðC?b_‰¯€ÔÏ€Ü/ü" $~ ˆ $&f¢»i©b&øÃà B$ƒ$PAd@œBQŸœsÁCñ˜K®xÊ3žóBPÁ =\ +¤S!E"”HE&rQ„{ôÃÀhB)…ô¶h@!š +Š~Ñ°Xb,–‹åÆbô”ÅÈi“=o1h¼³Õ+´Ti©ÔB#WF1£u“Fµ…rF=v¤Þ¤ õÍÒ©91NZúÕ:˺K;̺L;-5NƒÛœã¬ë´ó¬ûà@b}$ÎÖ‘p¥s¦v§u¨u©vªu«4N×–/e¢‹#ŒYhɘgÈm–Äu G„a…1 Ã$Tafaðƒù‚+AÍ0Š¢˜D2J +±õ€a¥æ¥f¦o⮄‰R‘ail˜: Ê¥ZÍÚl8wQA¢ÂPØ‚9øÌ1;qdžKøóSóôÜ@2;:óÃ3Ÿ)í‰HýCòêW¹Ø +ÀÔ +Ðu€¸IºÐõ€®†JF׺2ÈLt*LM£F\i㻌Ä\–±‰{L‹l;Ï«cÓæ<Eºt8ä@2K}CºË‡:×ÕºÔ‘‘¹ +Ôw•¯¥¦¥§üB\.‹b9"1îаy@¶@Nx¾@±¬B§ä<^ž¿¥$î‚–.nu¾»¦
5˜ÊØÚmÜ_œÂÐíétïN¢=ˆ–Î>:(å˜ 0UBHq‚,Á8…½sØ?…G8)†&!$qhçCO +óå~Ÿ½ä)s›Êž¹Mññ6M½ùeŠØÛÔP#¦Óei¤-ŒDH6Ý™æ·&Òˆ¥“‘S!q4#Q–p‹(BLŽƒœâ@'8l1xˆƒÎ!ÞÇѧˆ]9BAjŽC‚à#H„02'О>2ÎÓ‡}þË ã]öøIˆ9ˆûrYÚä´U^²Ëh¸±Ê@»ìÿ$xú¶Z3õ”)øÌíMègKu°ÕªÎAúàÛЃSˆ ÊtpTdÄÄ\SvêRUÇKí£sŠNL:Vë³g#™ÎšÂ ¾Î&.µè4ƒtCLæIŒ²Æ+'Üúj8ŠW°è9¼ø8¢Î/Kž +9TB‘%Š@ªXJUÚ?Ã
G!ÏJ(¡ŒŠD#¦(²mŽ¼›"' kŒ3÷öËnGn܈ÂOÀwÐä¦!þSoôÈU››½0™‰adwpüþÈ©*Rbw«{ºgâXž–%’"¥ªÃ¯vi¿2ðÁû¸TNˆRšqä:Íó>byO!#m¹™©‚g’wöüºhu‘+<ÏNkÙuéÀ'æÂ…myd‹&«îض#[¸/ôÜ^Àµzãñj½Öˆñ×ÑZ¦ú´6°éà0Õ&±Àm¸›Zó¸šZbpkê{{ +N¯lkø¨–e™—i—ŒÜÁ„"*ʲ@lZæyžæqÀÑì)¢Jñ 1\Ñȵeš§i‹—¨÷2x‰!7Q·Ø o‘o‰·DÏ[!m‚-ûêÄnJ>šÛ§gÓ$·lÙ#'vÆW“Ú#ƒ·€Ú# u—-Óg»«œ³Möl‘1Û£ekdcœ³)Š!Æl†–·+ÚŽv‚yÇ÷îÁÜ^æöµÁü7œ=üZóéŒû#˜óÕ`¾=0_ü7óO¿ÿó›l#Íß¿|~~úöí ½wO°y—9˜õŸ.̲{‘Û6å_ÙpB:Øι&ÚCŠ©øãŦ5ÇÍÁkã<¡ŠÆFÛÚ&¬é.|¹ÇîøßA¯kîù +ÜJ/k‹½»óÎ]útɆÐiä€5¼ÎVG”º[ÀuøBÚ…íÅÜÓ‰_wrÚ'j¥õèÉ°®h¶Á:£+b»§S~J‹’Z—öÁVÍõîëgÜÚEž`;m¹9<OÛ¼ðäêmýžniþ¶PÒi7˜pCÛ5œd7¡ý$‹ÃbÝ <ï¹Xfåíd‹&ƒ!\ŽK4÷èž®uáƒÁbÅHI爲+Ï'û•Ïýò +pN*V/ö1öMJÔ·Žê{ûÊ3oŸçëV÷æéöC¤£ñ"ºl^ç'øìóûêÇ€oÖ¤¦·ã©Ôù%ÖpUýEu +,{ª´£x¢p$¿I\l“d*éUmZ4gñÒÿ”c`õY]VbEV`y–cY–aÑ8óøÂL>3—O<²=:1zbN'R'V'Z'^'b'fµƒ3—BîOjÈüN/βsÛLòÂòBó…ç…è3Ó« +ë7°¯Ðd‰íÏél¯vá¾BûŠëÕ¦¢žšË+FyùŠ'†ÇæÌüNôÞ1¹·kfö‘y=2«lé +5»êÇ€ÿ³¶·K½ÜÑz‡T>™oÒô‚`=ÊŽ».¨ßQWKñO:S<Q8’?’«¥l}˜JzU» y^4gmÖÎ>«øgÈ곺¬”³Ëg¹,™Z‡iEð”…}…$Û9;[²f‡ÕlÖ×!Áåà>žÈÑrþИr´0¥šÙšx7¢=‚üê E(@\ßQ\Ñ» ùPw¶°åVÇü:©«·§»Ä|¢–ñŠ†‹êwPKw¤t¢x¢p$_ɉÿl–¶%¬^Õï¢`ˆþôY+eEV`y!›£xe©$½Â +7veÍèYðÒg’,ä˜Y1bBÁAP”Ê(ô'Ü'Ä'°W ¯à]»ut-‘™InP+ÆEF88“ám^Á+ж›ðZÍjA8M1¨ ¦
+¢9µÉ|&t¶±Y!³ÂeÞ;¢2|[f2(‹Éh›2Xºe›Ø|³˜O ‰%x!y Æ7ao –¶Q˜±ï«¾JG‡2ï|üWÔ·HÝÖ,«}Yjï¢^nÖ|*u~IOW4^”€Ë Êɪ~Wݙҙ˜zT†Ÿ
6ùxÅ}õkVº>ÚMíRi^5W
«€Vjå«n¥¬BZ…¶ +qê*äUèËl³`Ó͇OÃWõNÚ¦=ÄØ„Æ·
nÓŸÔ‡Oç7†çÖÁËÅØBlíqӛǽL:7Álra§ëi‹Ò·l:`¯è‡&ÖGwn£g{HÑècRÛ5h{ÐÖÇèå4 _ŠÍºêÛ;`ôaRú¿øOóó㟿><~yzþ&†§Ï_žË¥?5øùùùá·§Çæs¾Ô Nþ¨ö/ch¼´G|š*ïü²÷Ëî_ (^Q(’=kádäí®Ë•EX«‰ÍO_ðŠ·¹uÐí†çq®Ú‚ë
<oY™¬UV.oa”u´˜›Álf°†„ÕôXÕˆÕÍfÉóÃØŸ¯È38³&ÌóÖGI€¯îtÛYúÀÆú.ñ·¦Õ‡S}–·w hå¨q‹ŽÒ8XƒôÆÆ°ŽD¶'ÜÑIžrÔî\Á›ÃÜ§0÷%ÌaIO¶ð,ùhòɆò¹Ø¸4BÒÂu=|™œ:ÁÒ{Ø?í
v•…£“#Cq@Sp”ð +ÛŠä$† ›ƒ6Qºc짪C¹…ƒ_öÎAÏSð<–—#°bVbuY=kÈ•YSÖ¼*=Unœ©d+a)*¸,¤ã#ž(©+RÛ)Ô_ÐpUc-uüßJÓ«4«0¿¯îpyYê–F÷è;÷8ˆa÷ˆpŽ\ŽA~áÙ)zöˆ…ÝŒL¡g3XØÈ +¡êeY9„ª©X¤Z)5l)QÖúÕJQâW$JF.A–Ì%v%“”Ùd¬èDj‰B()׃ÊõAÍäV\‰×ûÌÚÅ„X+·¹8®G`NŠý‰¦@9ÕÈ 7¯0C–E@SƱ}°‰lc‚7J™F!ö¶Yp‡=N¤3øˆl —½OT®7⪔µ}¥
BÆJ•c¨Q›–S±ÃKïŠàË(ù9’}Qî²ÔÙ%ÿ6©ÝË+¸—¥ÞÒù;¢›Ÿ†¯J«öÒÉ/ª= õÖM{@îµÇIêœn
N‚ÿûå²Û¶ÎEá'à;h â,2u):.::ƒ @‚ ƒzÐöýñ¯½IÝl9qàà¯ùŽ"‘”xÙ‹{!.LE¥«\eëJÖÜô»¸¹{OÓô_UWI]Y¹«9c‡OÆúèœÜI”J›“Ö¬Úm×X·÷èÕ*W©z§UôíkLí½Ïƒ¨×æÛ¨‰„å¦ùfïúýÃ×_÷Ïû?ùFz|zÞ·¾TŸ~ì÷÷?ª§r«’Ê}۷ѵ®Ò–êV°ÄJH-°Ó39IÉ)ýhŒÆÀµ+ü„ó‘e1+ôêRସ|–<îÒ9ˆóªÏ;ä.ó¶’ãdqDÌ—gòJ¯U8¿ð€q"'œž‡¶Ãî48Ðwò8ì{û-R€†OÚ +"<È^v²•‰*¡7¬Ø5‹lËJXüHàd‘°ËyÄâ¯Îå´zñâãÓŽì¤K[»³CÒIšM bX Èð¸vÉþ£'Ô„œ˜S†q.ÆÒÚBê“ÀOSÈÒV¦g]è9Ä{Ë *{Í(T2šÂÜw'º®k™@IjE"µè »C +HiÉŒm¡ +nÚä$gÀèMmJ©bH*æ’MФ“J!M+ÒãkÚ&‰rÎ>_,ŸtÔ,ñ«xÊíYŸ
˱dîYnYÈ+kª$§,¢$ Y8]–KÖɾè#)£eM$=$-$„² +ÚÌ/8¿M~ÇôÆïÿð¦ŠÛ›*Ò¦²ySAOò*_Ü +d<åÚáßÒ¡º$â‚qòr…P¼ç(¯‡Óˆ£[ýYt§å¢}t’柸IØÀá¡ÓmY¡8ß-OÁáÂåÚá¢ôïC¼ø¸{-!òŸ¤“4›Ä! +úYð¸vÉþ£'Ô„œ˜C}œ‹±t…¶ú$ðÓ" +žqŒeÐŒb$ÈjAS˜ûîD×u-“@"À,0@$ E¡Iî¹)•š6¶Q´¡õÀÛ [$KÍ€1ЛZNSÇD5§ª9QUIBxhEz|MÛ$Ñ4M¡ñklcݨFB†Œ¿Ã+Ç¢H©¢‰:ª(!Hæ¥
)4!Âøà‚AN§DP¦ãkñêèƒ÷ÞyãµWЧغäœwÖ§t5&´C6ÝØ`½µÖXe%ֶà +Æ°Ór^£·5Ê“?5S¸Uß©]TRo½äÕ6‡ïˆFn×—;¤~ó¯µ9|‡«ƒÙlPovÿBõn§z{?Õ´¡tÞPÈSŽ#ŸýW?¦é”só&Ù¬[6Ìü,·ÇæDÃA»¥ª¬—Ûesjs~ƒqA‚2Õ¸tR{]j)½ó*ª½ìúõÚGöÔG¼ñ›?ºÐvs--³ÍËŒÏó~|q+ºþ²üõ~¬°'ÅÕ&½@sŒ(Öðp€_áVØF°«åˆ*ȉ:Ó1çÌŒiGÿ)Ø‚f"ßÎ~ÔOJ®4ûRr¦£7ØŸŽµ)M6•ŒêhUɬZ6«dWÙ°.,+›V0»Öì[á\[×ѼÎöui`-lÇÃXÚX#«ÈÅ +?LF¶a+ë¼]YÙãnÐëÚÌXŸag쬆ÉÎ +ò³lg쬆;t©jt„¢YZ…L¸gC•WvÃÐ*HèdhÅÂÑòT^¿§Ã8"æËC:ˆüçUü+¸1_N¡rˆ9B fGØL=Ã17ÒOŒ’5©Á4‘\D Íž_ÂÔ•Påpe4£JÜu‰^Š_ŠàNp·e^f +g +h?5…56…6÷ÿØ/ŸIm.Š?Á}‡ÚŒ”lZ6þK4lL”u”U£‘º5šEz1Éû+Çוîojñ%*ŽÔMQ` +|}Îï–åxbçœ9–9Õ•^Öz^í +Ê+kK~^ôó²Ïßa鯋_B«ÂLÌ.`«tÕ {A¨nàØ4ü@²#$t±¿˜B§%±/ŒÕ¼²Õd7Uw:¿øƒ”“ÌðÔÅ#””bª.Ñ'Lë{JüÞí1àcÀÇ€ÿ©>ñð1àcÀ>!/>…oô;vÄE<9w±#.hRò¿Ò‡O×_„?ëÙÖ”ƒ®²N¨íû/·Wuþ)÷Qkž”×öàÒýóõøJù'`Ñ8EH¹¹øàk\)ž¼“Çð$ÀKÓa'¿%×¼+-®÷î²<ýû/ÄÝÂH†_̧ôúüó·ÏÏ__^ÿ*ÂË—¯¯ó¡Ÿ.?üöúúù—çË—zè"Ýtx”,<c¢>Ò”¦qŠS +E4ï‹Å6k¼‡èô«ø¿‰Þ|jx›è'î4œ‰Î¿z‡úUÔ~¸‡Ê€þL¥Žž³e½À5²L#M°¬YªQ»ÉFb,nUšEp½U±Qh44êùF®ˆøŸmdéEªQû“ÛMdQù'¦F©ÑØ(6 +†E½è)ÿaùF®‘mdéFj‰Í{n´£º„ÌVHî,SeYŽå«zÖÀ +¬yY‰O¢8-O_æ°ø‚bé*ò,WåY=k`…,Ÿr“²%V5âúÊKåSUšeX¶Êeˆ'«g
UUž£ÜcÞ8{ê<—bíªKÐJ°Š,˱<«¯XÅ•‹/ÁQ˜—'^RÂÙ%4˜Â‚-<c +3¬°P誉êÖýNþJn'{%ΪñP¤wRWÚ#¨Ü‹F±×L§+WZ6ªÿÕ†ú+ù+Át©Æm‘½’¹’ÞIÍ*¾•î«÷
x0G{Ñ[NzþŸä)™&nas×6 i<Ç"y4¨ÃÚ €„dŠH¨Iå‘XÉ¥ñB;¬rNHH¶ˆˆËkÍ/ Ã+"×¼à"ÎE¸î<’áÒè`Ø‘; k=2×"{5ƒÁ$,䈔֩m‘ÞùÖÁŒ&aaG¤ü€´÷H}‹ô×H¸¦%À: Ë<à‚'pƒ?h¤\@¢„uÁxÃ;,øC#ç:ø +0 #20$cêaPF5°&À€„)™¡98[‡«ay˜@¬ÐÀ¬±‡EXåËœÀª`¥–ê`=,6ÀjGXî@ð`E0cSv0ç&`Ö#L{'H˜¸‚™˜:ˆ?Àè#-HD€BD‚C6ôȈà#!0’Ÿ +qh‹ñØ#&ârDlNà ‰UˆSƒXuÈ×~ÖEÚ2Ú¿Z°ÚòR¡¡|ih0-š´Ì±Å ò,ÇòU=¡Xr¹\2Ë&ré%;ZEÊr‡²©*Í2Y„³\gŽk¨gýM}µëHŽ[Ñ/¸ÿÐÉvÒ(>
'¤HŽ
GÌ`±;ØõÿÇ—”DQRMÕL¶Ð]]÷á=ÏŒ™+ƒUµ¾¡ò +þ—O¸6³Ä½*$Ç}Fsù˜¸+í#^H>¹d“I:©$ñBLv€V¦±Ïš% Å‘×üÀ‹8/ÒÀëÎòBR¼4<{€6'$–ÉÅ#ÁX$D#áƒÎ>$=agdd‘…42‘„] +Œü +¨É +Ç4÷ÒÀÝ4·ÓÈ
5#wI^ÿ¹J +„1‰P¦Ñê,RšGZ‹ÈmÆiÌ×j35’^ÎzžóžãÌg9÷™zýr/e+÷ˆûå;âÄ\*bž… +_áê]^¤ÌÛŒ¹GÌöÎùÙòÓy~€#fùYñ´ü¼?óؼãõýno·>±#ÜJ~
x!å…ûá€~‹Òõ%ÑúacŠëS.L’»‘á”{ÏŒÀ‘ÄÉ/Ùœ7>?‘â'±å ^l<j¡À(‰¼â-ÞÄTÆ„ ìKÝÙw”H½É+ñ< +e§!¬Éͦˆèˆ’áT£âÝ¡µ6Wyá r‡·¥ø¶&§ËÓ0 I5Œï¨G¦¹Ê•«ˆÁª,
ÆR–»Ò@`¯Ü㩽LG†K!²’ˆUI ^P|öJ Õì±þëaÍÙª#l|_æ
/ƒ¡89Ä +‡È‘#ÈŒx’Æ%;,5˳] Í=,Òv™¶u“ªX×kžºuÁI.0ÿ‘Ø„Uè¦h·h©m5 +”š%¡]Ù2F7d¦Eh[
J—7ÝËž'9Y +è!)bG"d„Pf¿òœK¬É›fK“]DŽmfȦ½ÍáfÎÁ–貕±Ij¿2§à)Ç7vRÌZØ[szÂËa¿Å³ecÃ
å«äãò–ƒ×ÄÈfã¦þ Îh‰o—“[`Ÿç +0 +H‰ì—I‹ÜÈ…AümíMóÐbš^7½ê…1”1^t-Üýÿy'îÕX¥LgÙ†÷0Ö—¬THŠá~ç„”wâþ[>ðÿúâ?B
oÞ•ÏâA({*sSúº„º}Èë’Ó™Äz:ÞP»©º—8þW–›Ê7”Xb9y¦xCá–„ô7änÊbrúªPRK#-.y<3â{2ºS1£œ0Ü +³e0ÓNyTTIeUTUMjÒS©µÑV;íu:ꤳ.ºê¦G=‰u 1Ö8ãM0Ñ$“M1Õ43šÉJ¬"mµÖYoƒ6Ùl‹¶ÙÑNߪœvÆYçœwÁE—\vÅU×Üè&ôTyí·Þyïƒ>ù싯¾ùÑO&t0Á|"ÄB%ÔÐÂ&Œ²Š:šh£‹>†cŠ9–Xc‹cœ0C*éd’M.ùRL)åTRM-i˜a•u6Ùf—}9æ”s.¹æ–Ç<au¨¢‹)¶¸âK(±¤’K)µ´2– kKU]MµÕU_ƒ¨±¦šk©µ¶:Ö +S5ÝL³Í5ßB‹-µÜJ«µ±MX×jÔ£íèhVG\¯Ó5Ö$ðº*}UæšÄd¯Ê]•¿ª ¦pEñªÒUå)‹þωÊUÕ«j]‚ÿ<Ó¹ØK~×ãçÿÇ<Øëó²ïV;“8¹XïVy)qvÊw*=—xyiV¼Sá(ñüÂNþN¹½Äñ¿Ï´KATžðÑôm’à3B
>Sá6žó€ûÄ`Dvä`J°DØ“ÆGÂ}‰f#Œ«ù*à`N–ág ®ÖÛôÃÁé,üÎÀõú7w§Ÿà„#ü°Áa2ðÇ—„ŸõwÀ5ûa,ÔÀJ5}¿$ÚÂ2à³p8nïÂäàÀ>Üß‚ðeX7Z£ŸH €7ŒÞÝL°ñ3Ï°tô½÷Ÿ…wô°|ÄŠ’Ü +eg¢â˜¹¤ŠÖ´Ô
Õ¹£ÏK¾‡ûDD(´ò+¢cš+@JÐLXK¥àˆ4a.ˆ^™XT©0jšËC½‰%¨y**Aõ’‰•ª¦'ªÞ%h⦥rDÓ@…Ä¥Ô‹©—S% +èÒ}Y„Õ®û"a™•Û}É°äJpH¢Ê1eÂÑÛ¦lWØ°ú¤àÿêW‚Á2äE›àt?éõû ß<tùÁÉÜïíþoÞ½º]ù§¿K§î +Ä®„ðÅA–£,Â,ÅY´šlÓR¬íÁ¶GÛn{¼í·GÜr{ÌEÐ|H»”wålNšr¯¡ìk)ÿöì)J‘Òp¢DÌG!!ߊþ2f£˜ÌšXE®šÝ°¬.\Ì*»ŠÒà?ÅŠ¥Ê{‰ùäÚQo¨Iœ\¿E¢ï¾§Ä÷}Üö@Š©Ä–x_Â]h¢A¤¤´¼òD‚'Dñ+Q*˜2Ñ~afŠ -B¢SEW,í˜+ù@µcËKºŒb˜
1a—æç$?Çø%Äs„ßüßÅ.¿Ó;åw€gAÏ}ÊJ f($fI·+ŒG$FC‰±´ ‰á´ +ïU<•uš·(½Š§ykb¨VýºÉT„\v•Õ‘ ‚áZˆóB-³¥ÑnbÞAð®aÙ'øu#ÀqIò”ÏGÔX1hˆ˜Šq¨èuE+±‹èÃ\èoäÔÏGƒFÒ$êT§&Ij–&’åfùYaVœµ‚GìdÛDÔŽÇxд×(»ÿ™¥N¤¯ÊœI¬§ör×%nýxSþ\âÚ_«ê`‰Þ¼+Ÿ…òÚÉ_B^‚C äŇ䣡“Nœ$©¼úoÊ~prP’þ!Þ¼{}Ãò¾HB~Pfpê"…åq'¿,÷_¼Ã^]§Ô`ìÅ+gíÎï8¶xªÓ~Ðòbt +'íŸß±¶;!¶Ë¸Ðy“wïƧÇß>¿üôáé_¾P>|üô´\úuøåϧ§÷x>Η“ü[q~C¨‡òHÓ[ÀfóÖ‰Ú支7Nvƒµø„ݦõ+Ú¢ÿw¶»`^^®¤×7ý¦·gãmߢW–GûAt¯`´Ïœº`«’¬êõ=òÝ›a}+Å+]ý0$M¢GòãùUôRþ +?ßÁ›’ÍI‰Ac +ÛB÷”¸ƒ¢Šº¨¹Ü„--ÂV•¸vqë%nqDŽÀÄQ8ñËGlñ¼æ},—8.D&$s\^ô¨¤ØðÛ'£…rŸzÈ»@;Ä+Aµp÷¨Kÿ8–2¶’ö-]¤m}dhäEr©‡;É®ÜWˆ’ã<
KÑIä¼Ká^MøÀXV\Ô&)g½-ê¬ÝBñÌ ¹‹EäÑZÆHË£ÕY‡å‘u5)úp§z|`¬Ü3àÍŒTqŠt’⃷=—”Ç.©²úd¿¯,5q
£M©Á‹Tò“›F¸;™I#? \ø馓Ætš‘ÉXÕ«â'ILç0mxgš²–EËJxtÿ{Ã8¢
ç7¹t‡ÆøfD??¶Äšs1qSäŒñ÷Æ]öócåž°“AÖšœ>n +rÙg4vNÙE7¹LbÏR/BO2/"//_å=‹w"qWÅ:í¥ý]a/ùe·›â„Ÿ§IMyšQëW6$:›lÑ© 9È5—ŠeÌ)㢜óÌþ`…iÁ³™ÍŒ
68;ªÍä¬æ¨fÜržf\=ÓAæbe—SS¿Ú¹jàªec“ÈyÐÄ—, +6EŠ%Ù$Í`é'ÑƬŽw˜XHÌTÈjŨð2ÕÕ£˜Z´‹3ÍÔÙfí†jð”ÿâô*~G¸ ^zT³ˆ×ä›Ì·QåËòëmÔ½ïrãP·~øèñ#NøÓµ„-ˆ_1‡&53v°–™dl.2fYÆ d3™!!S¬dB–‘ék'eR– fs3Û\kõ¬½c-~UÃ:?Ö
²¬]['mªS·ªo±À‰Ä,q"r›ÌõBÇR§rîÔnåÜÅ«šWU¯Ó=ŠômâWäO±ÔT
ì
ݵ´}#»o`SSFVGUZµÚ¼Õckñ¶$Ö
Ó°¬ ªÒ
·Ã_®ˆªû'Ý`ºKÞ£.O4æ¡. +À˨ï7Õ;a‘0¬ d£v3¯
j +Ûá +žPü'4b#5¦Fî˜;–
…½:œ÷8}¹Âö¨òe8d¼ÉÍC•¿þ!Âû¨«Sñ5ÔáéôqÔ+ƒÿœðš°I˜˜cñùšŠtQ9>ÙX¶D²D°ªZ¥"•R,SU¢D DžDœD˜6M=ê•È7bõQ"<EuŠÞ4© +³)K•“MD6á`©P¬Mv"°åyŸÃûTÜ'LœÂG.Ì…âš'©–n˜‚måÇŽ^
ú#tÄé‚IùiG¾b>`¹•º´X…ó{}Œ:8i^Aû}y}Âaº<ñ*?â„?)súôsþ]¥o}ù7®Ñoi0:áï0¦éÄ8¦¨Ý‰¾ò'§OFóªO??3$ÿ—î +±Pýtí<JÃSw×v[ŸAy.Û®?+i”j#F¾™T˜˜\˜³pðRYQIžIGH¨a¢#0$0f@ÇÊÐ|(õq^µ³Ça1\Æ-©“ê«p¹ +“ö`냮¾¾ˆúb¦K͉!’½ƒ©ÔhòJ@ãÐÇm ˜â–ìû¬}|PQ…£g;+¡/Ø¬Û +iGÜ.ð;Ün‹¤ ûÃìÐ{ú)|ìå‚}àÝïXkËøǤçÜïùmÖW‚N•˜“ˆ-Ú$Öi%Ì$È$Ä$À–\ZXQµ¨Z(¤ ã
×€˜wÑ£jŘâsœQáWX|´h,Æä¼!ŔҔršQýWX +Ð^Ù¾fB嵂 +×a70ç¡6_WC nÇÏÕ멦«$‚¤³œ!ð9|=‹«å ¥!£$¿ÊÈ‘™£„¥fÞkÏ)vd¶¾²œŒžS3VÞÊœ¶5²ÞEÆ{Šxsç£Üb,¶5ºŽëÌ¥0Öì2ˆ‘CLwå™dY©ÆÙÅ™E£–ß©ûƒ›‚ÕÑæ%¶Š
%/t…ÙsM¢Z'Šþˆ#81ñ&c|¶´˜zX“ûÖP^™Ö.túðµüÌøùa§ûHÏþ‰ÃŠC#ñ{hˆŠXëˆEIT-¡ºœˆU㊢¸®rEY¶uAúBFÓº¬3K)°*yYôÒ*ï»î,?šú%2u
¼ë:˜pT$íª 6,PlÆ$T<‹¹b•É©Je‘Ë‚©E£ª~TBe--èz§Á¬`Wà8(ùý  ®_ézÓQ'=¨ÜˆéÌ
jùxvƒ:cÜÔÇ-ÿeÃó¶¹Ã¢#¸bOÀeÁá +…ÿΩô›¯ÃíPûãÃpзCÝuÃCAšÇ„zÜíþ7žãŒ=”…¬&˜5 "ÄI‡Ì’aÏBDɃ̒ +åÓ æ
Xä¨ü¹e6ºþ{Ä‹5Ã0l…c´÷*¶:uK\¶zð^¡P×LhôaS4ü> Yïк'4]°Z{@›wÜôMÖ8ã%Áú€š\Aç§+r@µ@O@ò(–šƒs +ª.Dò…Œ™ÆX6+H?1ÈW¨×º(!c‘ºÈoïéüTŸ.æL½Û,DÔ®,ëFD‹ýÚ§°ý'Þé;|±`à4©)ÂǿŲ4½·'F:²¬œK¤÷˜¡÷k¯F¦7ƒÛËXîB‘;¼¬¶KûZŸ$‹š1!&ÖwÉ8-‘@V5ȲæQ¿«yÜ÷Ùœ‹–ýýѪÕ#kðö8¡“©ÁëÆ8šDÒËÇ‘+7ee*€…r¶$®²¢F±RÖÅ]Ä’@Ùm”ƪÅÂÁ@[ÑÚïóÐ}b.0?.†ê¨¬«ÆŒfh׶QFš$ë–ç5C+*vk¹«zNf‰v@Òž'A€%blzöÈå2\e{_(±J4Z÷Dpt,X°n‰è/4‹ôŽñûó4Ä
k“?ÄJk!Bþ`Âé:„ü±¸g-Cší¿¼—ߊ·ÅŸà¼Ã¹)$>ý—.“‹7
…P—RB°Ý´OKê8øíû[’¶ŽÎqÚaƘÑ:ú¤µÖÞ]Èúnš[ûye=w¥7{jB?
ì•ÎOl—yûÌTÞÖ~‘·:¹Òx+”+‰·JY +o¥ò)^rDo›¾ó¸RŠå"ïEÄ›7Ù–éVeW÷È
¹ä©›´ûDå³ù®ìÈoííÓTö5Þ”Ý0Sv㘻;ÕØZð#–n?L°pHéJÕò ù/LÒÁ4½ªt$ ›¤+†4Ì{WtíWÐ(tÆCt7=kE59׸̱Ԇ ê•œSÙ¹qVSsræ0/KÌm¼kù¦”ß^í•œãÇZÕ/¬+°¨ïà)š@¯~wSñ’GÂ×lw"¨¹‚6Q]ØT޵”æµË¦ß+›cqÚ7gy +ñÆ0¥ÌµîÚ½°)Ý™øR©í¦æ°žîZº‹Ìi 刾•‹ ÀÕþZ·q~^\²ÀL#AU,Õ^ãM
3ͶELŒm§]±-œmN×ôڵɵÜôÚcr}›¼Mw–ú…RqÛü(rÁÛ©'Zp~J] §9ÿu–œLÁ´xÏgJ¿Ò,—½‡D1ÊÅR•t
3¤,š{|ïp£¹j%ä•„XÝã°0’s¤qçGÅÎxIñ6Íù¤Û17Fnƒ˜xàž*W3¦ÈIži®ÏõÜøÔ2ö3 +ŠÄË3Æ×͆†Â©} +O¯£¦Beœ¦ÄSó5»5~5È¡Ë°ÀV”“m«êÉÆš¾Y˜jú¶5¨ÁÈ3±mæðÕ¬G2¡§FRe;ŠÆóÒÍÜ<.X7c+Ed˜¾í|›²G%{ç9YÒ‹ÜØžÇ=üÓN÷° /äB÷òXò•OÂ÷+¬ðWT;ã[TÆøÕ§¡|‡öþÚ9çu‰'è<O•I‹Ð2¥kc}^ô¥,iO•ƒëã8ü‘Üí+Aœ5™ßÆ;ù/lòu$QiW +±wŸ»",lÒy£ð‚ØiÒ½ZIЦê쎋hP©ÖvYÁÆU/l²¹-1¹Þ6Ùä`ÅaS,N[áæ,O!j{±ºîJh’À{ºêòL¨—CÆa×ÕPÎ~‰ãó-Âoâ¯DÁÙÄBèùʺTÁÆ;û.lªÂZd’¾m´É‚Åb3f¨¦vœ]Ö™M.©šÊðQî6i¸aª_ªê2Œa¦Éo4A²Hy;ãÏ;{=S 2,¤/F(—’p³3¬Àê‰7{7ðÔU`d¨9a8Q„K[!vIv<œ"ù +jM%„Ô¼‡1j¡'2ÂÌA–?|FQ
ÜçF·¸fy +TT‡=è= Š0c¦ÐŸD·ÝWGÝû§á¡ßïsxíÝ|j¡CîÆüSß_]+\i`("|-ßУ†•m܃F$²'%6'ËÊS
øÐTVze1uƒ{°ì4Ãd-Ä^;9SÈ.+ZG1£k%ÔäÂ^ +Ju¨©Ü4Þr‘^ïòöšÚ;$* £Û;å.gyˆz¶L®R†`_¯,òÈqdh%Ì€‘ê8Ò™EsÇÛ:ÌÝÆgªÒ)¶u8Kìi´ÝŸÍ˜.³,êµÎÍÙžD;0ìåœÚL òîY„µ¥ +†™(`÷Öy©B¡ÅñXù]Š,O KGߊÑ}ÑMâá7EÀPxï׺·Xè£Ll¼sa¦¶„Ѽí²k²ÍéšØav!°›XBLn“fóÍéËÓ¯~ý›ðí—÷¯¿þîÝ»7?Ükœ4þö«Þ͵¼ãfž=ðo¾ÿûýþÃé«é—:~ùâ‡ÿý7[ç³oîï¿{ûæ5ëó—Ç/:ýÈ¿£¡þ½üÀà·üñ ŸÎñü»óŸÿrœ_kîNÏb8HÜÂ;£8E”Ï pè¨ÁØøÅ
Œz…:¼Vø9l}~φ¿?˜t›Cæ£vöMõDv^,…³èïrÍs½€áƒÌËë\öx¥ï³úDè§Ã}"]`nmŸø‰ÈU„n·ßk"¨ðÛ¾9‚€¢…|åžy¢ç§ë¹^Ž¿/°-JÖZ +7ÌT¾º‰ _ŸjÎýpsüËÜ-UsîûÓuVW{þW´·õüô×Ó7§vþìóóË?òW¯NÊùª6ÿ_ÉvôL'tU¼.ÝêðUí•S!Í;¹´Ž¼¸Bð¹}a_}ŒŒ¯¬J¿?¹±‡I©f>ixvWãØ<A¿E+A²á yP…QðÒƈ
„¹›/šÙÜËYt"ï¦Èa‹³4קAHÌ…Ö2t#0ð{QcïÂXÀKÿc?]†ò¸_X.<ä˜[.`ê¦P[åãÈsÊüŒ#¸‰ëœ«¥ R?©ƒU:ÇV%”EDÀ'
¥æRîEn¥:¤¬ú ”RG¶(5WúÓ +˜$ßØ8Á¬‘CÞgÎÅu„YO¸È>7
+$¬”àFátÃ:àäГ5l½žW.ÓœþXÆZ}~„± +§“¿ Ÿ¨°³-ðæ«'Ç»œž€;Ì FIìØÉZìYbì¸?åØ•÷º¿þ#Ä¢¥_—òÇÊåa!]ÿ|™3\Œ˜Ì‘¢²¯‡]½øÑ?µ0QðEchüËyA›§n‘ʽ¬R÷ZRjÁ³nÐùf«<të'= ÜÔÓS¯ïcqyд‰nRbV"ɯ§ðzÄMôÞ4ó,Èu¸Ð§uú96ËÑèðR@ãÌ^ÍÐæ‚{%]ÅÙÙ+EÖ§¿ÀßêÏ.8ÙyÛ=SoA“ +ÄâT„¿J2E‚sˆLh`Ü}у¥õ}‡Âl<ºGø¡¥ÄŽµ©N8Ðú¸Îî ̳Œ[ÔíŠ8ruLŒ_u´ª0ó”hxÀ‡ùœ»ì.{ ÐÀÖIPspÓ±çan·ò·|ÃÄži¬£ÖÒ(Šc°8N £€£Z1(tÊ}Þ﫸V,1÷{™s²d;¿·ß‰=Üøò3
ø¯àÂ2àËÏB +M—ͳÞôòC…V‘R–ܸí³[‹ÎLëì0Š9̯EƒJÌeÕô +k Lc=ÄÉ;“Žº¥5HȲûƒ°DsœG´}cÍßQH°ŽÉ“-Ðàš§œØhª0jÇ +à£mŽMpže÷8 +ŸÍisa΀ã)p9fáö™à„œü§1ž}šQÏæ¤p°ÔÁ%Ð +ÐÛùS¡Àjœ:Ö Ykç¼¼ð`™/IA~[äÌ• ¶Ò~îj¸_jˆ5@j +ßÙ˜_šä%½Úb܇ü-™wy¦à7së°V:ÿó„æ:þ•!?vø›@1±k_kàr*L=W·UtÐJ–èn@ÔµŠ+—%h§ ‹›šÔayå}N^̼¬÷ŸJ„¹ôwJW²[ã(
çf/Úg¼Þ’aØÝéN¨†e_–¾ Äø¦¯áa] 4^,©3s0\rŒ…c”Û(9¸\ã“wÆÌ•2~ɶ +=ìÚ}$8îI5—£*3s]KãR!‡·{Íò/J1 +x
ËzÇcÇ]WÊé? øÿÕL€» |XÙ\ë.7d^×fcî_Ü?jVž4Œ +u_ßúIôS>íÞnPJœxoó] +…MÝãqkÚu+N'[¶$”h®Å<å}¥¶'ó`%P +ò.^À¼vïZÃg³½
=9Õ/…¥ªù5Tc¯°á²âŒª·^ïRfÐrrÝca4UXÕQû•k-›ÇJIæ+WÚ¡öQ_÷ÂQ0“îZ|bDËâß3œw:E +;HžMÕª»Êyß|]èxhý¦¾wPžÑbÆçQ×äƒ5™ +ø}ì¬rï +Žƒ5A3Ý€>7AúôëóG0
6ò¯ +H‰¤—]‹¤·…Aÿ‡÷&`_¸‘J*©t¹r‘ì„'Á3»ùrfŽ—%ÿ>§¤Sêî™Yra–…é½G¥R}ÉòèçÒj9¾²\ò¹öÜËÃÎI²J×ê°Ÿ»ÿuwZ¸h#®ÖB ת¶\6,Ö¹²t¥@:kÏ…keí•ÎU;¿7ÓN˜Ò0.lmžj‰¥ÙêqïXÆY³µ…‹ÙT;œ$Ì™°¶Îý³”%+ +«„›¥Rd.•s6—¶s×nó8Þ2a‚üȳ¦Ä£Ž¹¶â\ʵП~ÉÇB+:(ÎC“¦ð¡Hm„¹Âä.ICã`KEaËbUâ{IëM%ïïsƒvõy1iœÛø¾çP +j:ÉpÄ&<ÖZw|.qØ4¯ Á¥tB1ÜŸ5ÓV9´Á‹Åí°f¥mA;#ÌhØH‰±á¸&#"KŠ{µT*'
{;Â0cÁ‚«q»‚èÄe,禄UÆ\Òä1ƒ(†ó„®
wç +tÇ2v©s-¶¨=ayAÅg[ ×LrE)P4·¹V ÕéœéP‡ž6Ë°Jt.y9Òίµ‰Û–È• +þtú«ØP<¸Ž|$Φ±>’`ˆÜ:XSê˜Êseé„=W:Ò1¢damI¹VLdÁÈè—Ü-Óz…ƒò<òS°ñc`-ma³=€Ö×Åc-Ms¨7˜$’Ê\mᢳ.tEe’ºà¼XÂæ5p®´>.¦\›<?QDÂ;^=Aàj/–!à÷¦ÏŒ(ç.‰æŠŠ8¤Ø‚%E%}©{Ï
ó•+T¸a†¶P»Ó`êÒ,/„£ £s8®Êµ½X¬ÅÕRÕ'TŸp·-ëU©,H¤mY“œ‡°ê +(!„u}V=¡Â2Mž]smi±¶[§€Ö|¼º?
kˆqq6¿ÇÀ9ë+úšnæ‰ÕãdAüáÛe–¯ÔDk[i+QÐy™£¬Žðrû°«±YÍÍh˜t!K+ú¦
Ëʉæå=ñ¸3‡ï(Ð[™²…ϵƶåoW-™ªÍ¤mk«veœ«¬^7V{$V„/±÷›UfvͶñ3ª‹ÈÎõËÔ#q”vÈä:Ï(µFf¬ÉüLæ‰~²>E1ëWsÑƬÚñª¼#A’Tc1Ƚ3v8 +_ã Œ:¸* ¡y^ðˆŸûÛÓ¯ÞüƾÿõÓû¯úøŸ¿ÿᇟþðÓÓ‚_øÛ?žnðß>=ýðøáý1é|è—§t¼ÁÿwŸNOùxóoü4ÿ½û/~üüèÓQßù.ï}ù7óžgÙã=š¬÷ñ#¯rN“×?Ö²'ìøÑ·÷=Z{æãÇÈX¼‹<Êçœ1/{l’ÑõC)(³az!ŒPšñ<™²ÁŠZ”ÑÜ®èý3Z–öýŸÁ+o‰ßÙôíûS;¾øòx÷çéÿŒ±ž?ü/ŠÐªy7…9’^é¹öÂ…¡Ò‹ÖA‹?%»vÉs??w„,ùû?ƒ/†Þ’Ï;^ð4ëzëT½õÀ"·¸°¤kX†Ø¨F·4k·pðòüN_jÇ©^c-•k|}’ G c"¹>òý+äϽ~iaøe•A1Ïö5KðÞ6™ƒ¿F/…âÙG¿Ññ’ÁrñÍÉû-rz6Ίá)‹Õè@èðA«{{ÂØ çº*H½Ûs{Hÿuú#DÛ”TÌÒýð-rB'píÔq£o·”_¢?ži^b:zÇo¸Ýߎ.Ÿ§Ñ;`ºx{òÙåÆľÆÉç6OÝY-þ¯ö¸´©Û°¦Ï‹Ù9á!Ë1+kåžy,ØÐU¬œŠæSÒ¼g9æ·ðlžMʼ¶5! ÒIÖc"k>QµFŒ¡z ˆ÷]†ÍŸlºöÁÃÆgˆSï„ÈÙJè
?У5°-Š«Ò‚ùZ0Ûˆ'¼)Ì“A× +¯Uº +-cp-Z6‹·b`À)„ÕÂzåÄ5Þ‰$n…gªVQ®ó¾_í<Vó®Á«h8 —õäõÉÍbLø!€ÂGÄ~31ÐZ`Üšpà©wØ0‹P``*—À•ÎL¢qßÍ{ú"0<µí€LúÚJUäs%´’ztOŽNÙ¯ iYŒ²}ù°±Á¶Æ@‡›†€Ñ
v·X«îfFÆVmþ[pûÀFÜ‚”OÉóUAÖÅÓ¤ÌöëÐ=û°ÇƒÂ8.žÀ0c"\½¤8Ú +‘Pˆ e‡ò¬|w¨u0™ªð™[QnkDb!€f#BYóÀÁuNõëªÆP)2?¡šûˆ!W.G@ƒÐ° o™«-+-…ïò-¨½pm+s
Fbäøl×Ò#<Q—å5œˆ?tDg›ÕwÁ>”Ì),èjåÙ `!0ýÅdØ| 3ÔX‘FåZÌßÊcu +ÀžZ\c’¼ºJÔtŸ–T‹ÍêHq ¸-`#*vXžy ¦sC$JtÖQ")%n©y¯ÍQiu´pÄp0‹ß.†Yø>•žM5 za3ŽÿÀÍ!ŽËz +¤Þz¬U‰+Ÿ/YÂÍb´«k-cíèûnÍg¦€™Å°Ž¶}`"ea6 + Û¾˜Á•Òô²ªF]é¼põŽÐ$DNtÂœ.q8ý¹p*kc(Ô%2ári©oÚ•kKn‘ ˜H¦[z?-ðd^ñ‚6Ÿw&F[3¼™dÞ½ŠyqÄç5ÑÕg¶K*7šUEb¦Õ±?~F5ÒUÆjp»rî»vL½¼NW¾r„_grÜ¢Îb(V9ì ^GEoÒà +´ºð2 +àX˜ Ir°¶Èa½ÓV(»Òý´ÙUàÁ¹¨Þ@ˆ”L°Sݪb\}ÂJ0)Õë%L€º°t°™ +m8³Ü9 +HXBôzI7’l Å@Yn±¹Ê@\±dj q÷ä H,÷XpÐpp”zqÞà^x’äúÀ–úñq…£Ø;ý$Œ\äDzSË)f°Ø fS¸ éRº—§XL”ƒhŽ€©Â
{Ï/vfz^Á–P¯÷·Xȉz‹Lê`®;¸>æ:u‹Å(¹zǪwPdÅ,˜ƒK©éo±qNK¯kmŸA8¼#Á‚!Ä–V¬ÕÉý_n`*K©à‘Ç=vsÞA&àuO±ÙXú|,›¶LC¿ÇJ'8k|a9W‚
v·ƒ¤#ù· +è TW²°àC¿ÅîàºÖW‚u±-6c ¯·ƒîO +å0‰\ +»ƒØW‡`?`L+!F*Xèív{=<ÇK[Ì+@(ÄÈÊbðwðz…-üEç¢Âå‡zƒ<ò2AYjw‹-Y<œÌG@÷UùïÕV~IŠÁ\鮼‰Š{‹lîJx]7…ºƒLC¨·ØìºÛ® ÌÖí÷*93Cƒës¨ÀÔé.àûvpy¡PÚ-öèÓ*9˜›l HMr‹•8\v¼Œƒ ×d‚èkp‹Åãp¾,†Êã þÕEe×)öÐ×iô~3¬É‘ 1A8Ë«;¬ÞášbK?Ì‹i¸Ç¦”ݦ@hMšPÌO&
û·]bË‹nµ…0Ë "Kžý 4D£ZÔH:ËŸg;ª×r%J¹%€iîtw0ÕHpº bÛ´Ãi™{\ƨnªJL¶Ü¢¥&SùŒbö‹N«š{å°uPTyU€m,ó4¦KqŒ>+÷ÙʧȆ©`êh³’Œ
¤KB#^cQÌ8ß{¨èHå¶ÊJ@˯ì,6!Öy©!1m ЊÕe‹ÍJ¿b ÎM]åwE뮀HC3v7mÉ; +5y¡¥õ„n®&‡õ¹½Ôì¤DPÊØÀµgú(·X‚‚úär[å– +.x@xDcs=A«Í–LPé¬ VW·ñvд]¸¼¶XW} +V#é
TŽÜK_ †=T%å0H£kç+6‹Ù¯ pX—‚ã†Ñ½ÖæúJpÀH2<vº1Óa)ôOäF¹Ä¶%0Ç‹ÑRspš*›?±…‚HŒÞE£0¶E?”úÆæÅNÒÙàæa}¬ÓëÚCißGobèäbHåçß*zDçxlr/76Ð~¯}fÛ{‹Å¶x¡sT0´(Û¢]}¦†Â¹ `’·¬Dvy"ÈÛdû oÆ´£ >tG,@ ä2øÂ;Ø"%ãC¬«!Àù§§ ,ý"©ÇuøWÒüûâè%V6¬ª@ë÷œµì[yÕ{q<Je_ž¼An%žc;úd¬ê²b³6¼Oâ'¿|)A2=è%ðÍá É$&[ö[,8®%Òa\ã „ýSeqA…w±G +ü5S(Ñ”þw2Yyƒ„ã +„!^jê¤×8ýÀ&y\jà ¯ÐÇÜ{l°½b¿Šk PÛíàçVÒŸ6„‚ìÁá›f’àê–&ùzöcT䶱ŒÌ—ZÇ9VÏ2–©ê±t)IKwwœrSõU|_FÊ)ÍHûÂ]ÄëâRž¬¥ž_AÁl»`D§m O00ï—X0ɘm¯Š¾Ú€èÓ´à zÍËâÓä5ÞbdªsÚÊ¢½d€—ÏKÇ/',¼‰‡áË´¼ÈtuòA{*c!—gyAµh£{Ԩ̀$ù4ƒÚåykïN;\†ßlÏ; ÝÁPÚòc n±³ý®'¶
Òº[?{lB£tÆŽnàÜH¿ò¨~wöï¨Ü·oáù™o±YIÓh¼=/W§{9œŠr_÷û…ÚõZK‘3áý—í29Öì¡pC'Ð.
ÒÚ[gá\ÕÙHH·wï}ÅÏÕ€à…µç’ô\[†‘ +q½…9ÌuFg<Š¨oc~b]éä€4S‚Ýnn} ‹š´íSƒ‰ ÆÏe°ã'¶jÉ„²ô¸˜Y’Ät…¢÷…&rõ´^î›ýTÁ¿R"—ö‰XÛ)Ks±/P窳u .³D$—Óºuâ+߆^-k#Ûµ59\Þõ}Ã*Ïæ~‚³lúät â
_±m +ÝHR7i)GКù+‡–@ûÖOìýb2T'ûþ^z¥•<écŸdŒ¨W‡¢kÜ bý¤0§@=6P•¼/*Có“ ©†„O¬\F«üïP»eüÞǹPY¥×¼ôxÈÕf
©Wäí÷C¦
Ð'iÍ{L’8¤fwåк†>â;VD‚
6IÕg@îÖᆉûhÄ X7j¡#TRT)Ë+Zƒ*e¸§GmóPÆ!´/\vïM ¹Q(p½Êfp~ÿ¸±lû;iTúÒçuá#º:ÊêPE™ŸÏ$‡‘`T;š+/y˜îJ¥NìS¾…PÌ24ÐO!”Džá!¥>ã^u@u©¨v2D«¼©áZàÂX,¹ÔHíUy;ìØÜõä²òŠe¢,Ç
z÷ + f…o쪌c²Hå?íãHìB×ÎÖ†.¿8T÷êÉâ§M•ÕÌG· ¤ž…_üœ¶ðJ±\q<9ZÊ<~~ð2E¿.pA÷££´°=±:e옫™—K݉ŃY£‚Ž»¨˜»ŒÔ-2
‡c®á)°p‰”GÅU¦&²CXO”ßý4e:jû@ù&oCXg‹
{5´½;¾,5´…2ŒîÐîØ*¶ä†²pO×…¡‚dá²Çj˜±†ã¶Z²î°»;gàpb[JÿŽ“U1ù¥ÇõÏ-HGí<²JC,ý…òê‘á$€ÀëîN«YÕ„ô2_ÚNXþÂ53*: +R$þUƾéWœ:ØŽÂ<x"G‚Ú–Ó~çù†ŽBLØG;©2· bÒƒ +S-œ–'H±ÕzÀš +¾¨ŒdºðþùÁEjÞc»øJ[”ˆÂÈ9æ€-¼ƒ2á‰Õáðì*ù«0aY6öØÕ¯ÂâîÈ7æ¹c[@*uÃÁF×ÎwìDSg°’t˜aêÅ÷e º¯[G80fhVÒ¾µ>¥ƒˆ!d.6@bÐc©ÆûÍzÁaÌãŽù¡ë»õy›ÖÍÎp×ÁXr6ÇíFÑe}Ò$È*ÀbGçÈ8}»Õ…¯~ª4Jp2 ~b¥ÅEV0ÁpÁÕø"A`—£+Æ Ø/üœÁÕä…ÍÙ>±Ãü¦fð09‚^ÎS8¸“;Ë¥w·û©¾*<ö™ó®Û\éÁ¶êϦĪ˜÷%8ÖÓ„8CÃh"•uj F%{ÑæXˆ†<T|#x?kh:\{ð ÝÏ0^sõæ)ÎoT¸…'©ó[/Ta©q‹*Šz<„î±½rèÑ6_8DL¶“à`éà±MF•Ašf|t!Á ;>±ªWíáN=
r8êÌ0΀‘¾±"ÿ»AüG¨',[ÐÓ¸—%›Aóiª9´±¨•RèŽ(Ö-Ô{ÌÕWç‰#¸•R롈‰F$@—1¾Ö8D{ä²3ö:è¢Â¦•Vñ¢{ˆÔ3ôH ß"‡äý/‘Û’’'îô~í$ól—²'ÊÆ@³E'iö4TðõxÝuv‡M®c'@¬k¢è9Ä·Ùü&9‘=çbòŠ–²«w×狽F/Œ©ìpwZ$Çžî Ñßq†ë¹¼DÝvÅÂݶ°Ÿ¡ÀY2Œrë㉕Öß ú +JƒGm8Œv.]?±,oÖ¡×e‚× +2îÄíÞî,Z8õÇ‘6K…ùŒ´)w{LùìHXÎhp`®ÏjÎw_Y$í»Áz—?¯ƒ(¿Éu½7…„i¢”UˆSÍ>u P®ã=Õ(åS‚Ì#¤3)Ð:ù +Ši˜€[XØ´¿c”ÆT¿Òú'Ì!ÞÛm +™ æ³/‡{ÞS¯ØY8f]è³eh †x<xc2¬nT2LN'ãµ3ûØä“u>ÿþñb¢VŸÕŠ¥@ŠŸX2|W›bÕ¬'&p¢›[½'Ê0ô6¾±Þ%n³–áÚÂN°ñVr#zÀV½2¬Î\°Œgµh2Ë?UF†{X¾±ËÙÁÌËâ23Œ<ÿ;¦i2ÝùÂ>¶–ºpéËÒ?}Y€ýÕ³…„cˆe¸UúYë¥EFôß«F +|âª
mŽe”¦3ŠäK²òqUgÒ +±±‹Ê†ß?þ`o±7êÛ
&‘1K ŸSùª|Ÿ„D» Xå0x^oùËr˜Ö!jÒIKã'{lê†íPX”hã$CAÈ…ô5Œ›*Œz¯C ‰…Ü,áñ¾ÝÉ öF]Cß?tø÷NU1rIAA *¼àCfiZe¸}KE\–WRÙc…ÿt^Ô±œþ³Ñßý—ø'êð£k_S´¬:êÃ
3–Ò‹ ÝV$éC6è’xÌÓ«mbò]$Ú®€<XŸ3øf¦§Æ›í'º·ˆ¦¾Âm¡;ð:ÁòE|º},¢ìlÝ€è¶)VBTMW|U¯«˜xìX“BT¹ÍÑ(}_aOdª¾qôx!Ísc»ÍÏÇŸ1
=ŽœF¯lòÃ=eiÙz1êeV˜ ÖÄY 7¨d§ï´M½:,ª}ÈÄ›ƒ‰kM~ì·ÕnB±kA“B&ïöÀ¨Úü<w˜ á*X«ÛÅ\<YÆ19*yf¤$–Lí¦ûdbê~¸leùªÙ÷8 +Í ^~Ý ga¼EÅ1ºƒf2-H•tb`î¼dá´¥ØÉJ¦èÌÝàq‚§¤*Kþ”éyì§ò³YÉ,«Ò¼BOQeGpò3…©ÞaÁô\&n—ëò\ìHÐ*ó +—Þ=ˆ¹{ÍÝ$¥|*”z™Ÿ¶R®…\/´¤ç„ÒìªWK©1Š>=®B'>Ïooó®÷¼Aó¥h‡:lsoÞâ¼^w8¤˜;Xx^^M;coÌͽ¶£Bèªõä¬Á +×°hvQ˜nBo²…¾A? +£zTˆì;C{3–MkP\=…Xæ®Ý¼dU~çUD˜Ö"SÑMä€è»Wh*ôê +¯ öP°¡”¨Ü¡co Gî´ +{—z)Ú%>±B_”÷ØYáŒ*<Ø?üûGþùõO”<óüg…%çøÓð:Åó^Š`3Û„§Dã„X–e¾±ë£2Úƒ¶Eý⤃{Â"CaLcÏ &hè6½\±P–6H R‹Mã
¡ç)Šôƒg¿¼aÎ)ବ
=A³éò‰…«OÖ6´]¶ÐPÊï¦{Ë)ÙŽ»ÉÐ}5ýÀ†qcù¦olOK²Ï¬>rž*ø%¢Ÿ«5Yo„¯+‚ZÒ¢¢¢õä[•à#¥çG•@ÙKÊOl®‹âÎNH#Ö‰±ÂbIÅzâzCÛ‚_$é¸æü ‰p8¿žØD•ïXû;™(ë±ÆnÚÍ;úŸ€1”ð:«KÔ”sß-Žº‰&7fs|ô¶œdakÙ¥oYzá‹oÖ&{ÆN³º4 ÄW3˜ÌoÔC#÷+–½ÅL»Ô‚™B¬.þ§!t +¡èÆjCnˆW?~“ +MN/µIü|Sô +zB[µEah—õ¤ú†z’30ém¡.…é8î}„§Tü +(Ðàð-–Ró£iM2@(åboVp +Û§r¬i$ñ‡Læ“P³óìÕ#p(+ÈGk«Ðxÿ>â{2½Vö0vø;'&ô`ÿw…¥v‡É´Á›1!#v>v꺌´šD÷®{`ÑkœãÂÆУ8$i¼GË'î0m8šeïªá’ãJUȪXlŽ6õ}òÃ%ð;y5‰žŠ¾›$Îe'ì*Œl¡$‹Ë‰k¾ÏÁŸLn‰Ãp‰>8ŠlCÈ\®Alÿ„nw²]ñ'6l52°xጜ[”ùÐç㤗‘°d±þÐæƒè®Ó÷C›¸Vzcõñœ¥ûMä~hç`Ú+澺 ÜVô°H°1ydkÃв[ +¹x),è?¯9ó»Tÿ÷-\;WOSr<+[!æM;ŽÛ`ý@O¦ +ë¶FÉ71±J—ol‹ª½/ûÁÅ#k+VÝîn?°õ4ö÷ìµV´±†?Bâô©0]±ÝkeHÑïù€.{˜Þ36à¼Ë¶Ð'†Æ¨¾‚1lY5ÕþÂÙ˜=ÁÆ4r¿V‹94B¨âäNJW~[UºÌeIóeÕ$'ôÈo¬IåÙn9És¦#A`oøócÃ'FÃ4`/¼·°±t+9Àâãipwèk5è ²”76U*v0ljr‚Ó ]z˜ÊøÆŠ4ƒ˜SùŸ-¤®Ø¬Ó
y¢_OlŸŠû»Z@î!~F9á½ÚOlÏÝŒžÛ«)©j=¡'`›6ŸXîÉ4D6=pí+f±Û2Á´eý¥ÕL7&ëµØRÀÖYb±VybMXÊ,©
É#¼Äõ7¶J¶¬Zc†|0óðXNÝV0ûäÍpì¼ÏÐ0Ú‘[| «„íÍZfoQ kPÀÂ…Xx³Ø§…[p0çHÐLòÃÎJc‹eaƒä¦þƒÖ›&uDˆØj«Òþ›½ÿRNóêR€½Ä»›š~õ´é2sÛ“8äâÐzÄtŽŽH`½˜›Ù)Àä±›é8!FEÝ ÏÉ–úÏ"´L¹ôjh!^3ðŒM¸17tL"<|îÆÐÅJÊftÃúÁe¿…ÑXb(6\b»~ˆe±.ï·xÝ®Â&ÝaÏ~Ø![ð3@!‘•ýÞÖM£\;ì2ž3€ +D/Éf
"EÔ&õ~ãE‹¶Põ:¢¢‚>oå¾;>U>p©ãM¹ßÀ*y'Œx,ž‡¿fŽ9ç}¸É~ +‡ÓAy¦a°vñJô©lÐ+ÑõÆ'¶4UXAMòÀÃ*¸{µB¬52ü}u)ô*Àü¨W,´®%8võ%tÉ{ÉALH±*lË:¡pÊ‘À1Œ+[ól_×}¾ï=ÕÎ^0' |ð„³ãR·œæû¼y.ZÆ%5û~ÏÞϹ:ÝQ³g¿ +ZáÈtBM€€M¹bq,P¶–uôbY|lUØaõFµ-PSЧ7¡r@M@XmzcÛð÷½ZŸÁª#|*+*‘€H›Éî\€©ÄÅø²` +©žkÕEñÓ6KP)×â¾íCÜï ¸i ÇÙ°ísxDã+þú4B½_±³sù `RÕ67[ª0‘Ryb¥5ƒËaÚ}µdãó³Ç5Öª˜õW +‰—O:ÚôÿدÚݶq,ú~ý ]4J¤(ræWÒÌ]dÚb3Ù-°XŠ-ךȒW–›dž~.E^‘²Ó˜ÞÁø#ëì£KŠ—ä=÷ø +RÙqjÑÓ‹•œP‚õXaEjnY¡ÿ2Ûi!}Ÿu lû‡I'')[°© ƒáè’¥— 3m2TŠõ0é–“Da²m‡‹P¯6‰µûR2Æcci6QišXë{ +¸ ¯b714î7VggðT‘)Õ +uuAÁVa+H¶é‚ƒa@»¦˜àRSÄjLAWbAþ‹g@ë{p‚…ÏCÂ4$y$
ÈôE‡³ˆÈ•Ø(ŽØÒœZ?´@G$µ. +ؾ…0 C0RÉb7R˜ +Û?€¿†ª‰¹ N`:G?Ô¢Cv îGâqØ?–ÉÁXŸ>(™3A7o¬ôËå`<ƒ³=Æ‚Á5m7`ÚçouýqÃ)´IbÀö8û h[úµpëvúט\‚'x,Ã<Žñ<Ù*j⥮ç”:`÷2Ѷw7t„I[ikí*,ˆ–ÄÂ, ±Y +nô7 +\BsdA X’ ·qašc£Ö‰Dëße0f‰´Xu'cÜ]¡ÔŠæ/Ðt…©6BPUKå ©† ãzµ°OL˜jg‰XÁZ
…ã-LBc, + u@œ +a®ù¹ÆD<2ùÔHð +¤Rjtl„Ë +õ¹°3•¦å;±Rˆ
ˆ}@B9w@=A¨å~?–@-ë&÷(‰s‹ÔC¢µ8qBÚ»!áÆkKôsa1=\µÉû‘P¼¼Õ&jJi¦tAnÏÐ…cjrM$v!Ù*¨ÚN€0¡#06"’W¹&AJ#Ä #¬ÆJÑR ¼T—ÞA¥s¨M£‚G+±œ³Ú0¦4x²ªù·ëÁõ໳÷âæ§rt^/æ“OiÓdu©ÁóìK^öàW×e™N³QТÀAòz@‚3ø|¾,@CÍàû|€´ÿ??Â¿Ã—ß +ÀqQ(úå߀ÁJF°„Kw)Jf*÷¥6ç{ \ªP7Ø,ƒ +` \4zÑB_Ë>‡Ùjg‘«ð©ÒËC¿Ç߃0áfÙvY@‰p
ž +óyrñmš£ºw†ñ
_ªë'±§Šà¬A¬k¥“ ª{¢£ªaòÖÍX½„)›™Øƒ‰Cœ“(è/G)J .Ý€þáqÜU}%†¨b²‚ÙîceOL£±óõ¶biÛTÕ^dðêuðù_Ïo¬À›Uù©ÎË&/¿œœh¸i÷ÁàÃL= ‰~tõÏw?çL38í¾?N?ÿrù¡eêëE>lòªLëÇçü¼z˜%<:eÕùí¢É毃7ƒÓ³ºN—"†“¼ÕY©žGÁéû²±ÏÔŸæq–©g¯ÎÞßœ³Iz¾N¯Ë|¯`öòKÀ×´Xèù"Ÿ +QD¦"`*æͶS ùÎ7‰I–™4ÏG;ù`ø^çtŸš‰wJ&zëùçóèËã^çñàÇÃò¨nˆÍyµ(G°´ójÍjmZã–Ê ´™{'ØóÆ#£}¡ÉfQßúnLÍ…?·`øÖO^å´(²r˜ùf¦‡zæ…ïÙv]‚¯õÍç6g?×Ù° þl³4jëF¾é•‹éÇa“~ÍüÔ²õÄÊêªÉ›ášfó›·Ñ¿æÅ öÆø0Ð7 ŸIäiyä0gö«[zϯø™SØcÌË5·Ô‹*vë—íªZÔÃì]Î&ùÐ?
²ÚARëÖg3©fY6Uí°³ªy[MgÕ<o|Šæ¯X@+^Ö¾ûô"?î¹ÛcG·wt{{å’Žnïèöö…&_¢Û×)ûâC•Ï_˜ß_¶ÝónÕG»w´{G»w´{G»w´{Ý;ϾfÅÕ$U÷7ÞrM{¦oƒœÃôD/Åöm’ɆÆïpÜngÅl’¾”Æy[,Ö´ÂÃ3xÞ>aÞŒ.²¯yª´víL¼Kóyž–çú +à]Î&ùð¥´Ì"o>¥ù:+yx=3óf2Íÿ“ú¿íë×¾/m·çYs^,ÖÒŸ(¿o.ü +H‰ì—QoÛ8Ç?A¿ƒ_èÛµÆÛÅù)Ž·AuRĽâÞ‚15²Ù¥H-E:v?ýÒ²u–“k4J7¤äEÕš±øÓÌüg¦{¡5¬;ÿ~5ì¼^%Bªß°‘FùSççWýN÷ƒ4û{›_fâæ^§;5šËùáÝ%›ß~ãõ¯Ý‡?ý[ In:t?ÝÿNþؘº³tÇœ®$èÍɾy£td0îÛgÖ`¶ùºnÔÙP¯7KãŽüÉ™»õ4%—O[îsÓŸŸl±x¹z8uå³»cŒ;ÃWÝéç«÷¹ÇSÙç9-/>Ü]*%Fñ+’s3ªdÎmž¨¾—¡éŸ÷þE…X Ÿ/*ʱÄS˜ûgêÓ™îydd¤µw¢75¢´&Ó¬CÈ +2È* +¹~.äcÇ`}h̳T +.Él›¸OÈh{‡ +`d4ˆ"nxUò–ÐöÞш»W<û:??•ðÐË;¦TôÌÆlbTÕi¯ähQÉ“í‘«6”¦ÌPSe5Ñ.€¼Ð'© cÔLTiõƒå†ÈbÇ©Ãâ<+j̓¹¹w¦wT ÌDc\r؈ŒuèHb¼›eähÀvÉÁ•†tÁ]Îj(ÂYÃ˨éòÆT’ªÌ
°7¶¢ØÛ'
Uï~O¤RÔ`}(ß;Ó„Ë"r-„>5 Ò5àÏ@yKy +¤1^Í2r´
`[ä Ví4\"Ç6#wœ¦KAMœ¶¨Á€¬VÇnþ›º”>:y‡[£êžJ(ø|aÜý7L E_7ºy§ìSw)|©df@Ò“ó‘_s·uT/I|(«)Ý¢G^Xf8¯Ñ.vÖÞ£âÖd&6º–Äníýgï€UõÿrYÚj³ÕÔá\#Ê¡›WpÈeÄçj¸äJ jŒ†Jƒœ“[e~Uñ†JØ…¹wr‰Z’©b.™ikìÈEc.¹©1Ö¤f\#KKÞù—äÚ5 +0žFT¼:ã^ ð¡¥ó4En{ËîþåÌp^CowÖÞ£
âÖd&'Ÿt-¹ÝÚ¨Q2TTÕ@K@¹w.#>WùF”Ã5 +¡î‡®ïãpÉ•@3t%;T䜼äWo¨„]˜£D-ÉT1‚Ì´5KŒ¹äU«`¹èR3®‘¥%ï|‚KòDêz›¸OÈh{‡ +×—Éfqë’·¼aþÏ!@Ðè¼Dø7ûe×Ó6…á_Ààf—£-_Câª]E„Äè¤LÜ"×vˆ!‰³Ø±_¿|´"EB~“©±SzYéÅOÏÇûžõn+s3«wÖ¤°0!¥y\¸MÓ°6ñ)ˆ±ÙÂ9K×OÊ;¹€Ï#òWĹñz¬ãíŠ%¦»AT†ösˆGÅò90P#ÃÒÄ|. +§šè›UÍLƒ³•7ø«Óöfµ4À¾Ì3ʧQ¸ã“c¼åËØÞ{^ê±Èñ1Æ»Þʹש¸áò¨ÕÉW…[0Ö(‘LyF´Éç4˜Þ¬í§ï2N¥ƒRuX2žðMðdcà '8È‰Ó §8È© bˆl‚L,€0¹‚÷E³v^FÒPÐ]‘ÍHèŸD$;§™$:Œ¹Æ+µ×NלãÚ‰ƒìµÓ5ǵ³Ó}æº~¶•š¡H'¼öÚ¹sÚi~»+²Ûº[[Ÿ¥:þàÙ/ÿH ŽÛ{€¥‹HóÌøíÑœ‡—#ÿλª2êËéõ½&_îñÎdFâ*¦÷Å)—œê™ÌV¼m&ÿ Du‹Pà¡ÛÈA¦Ï•Šû2Ï(ŸFiHvÅ +,£Ü }Ãs;ù¤4›ógAÊÁX›IÖÄÃ#¹R‚$³º€}@ϵ1Üao„Ì°‚)C{o2äyu|¸¾Íd(®Ë‘È8kµ§;ï6K㿨H?Çнª»x ¸R•ÚyICA?sAö§™Ã§ì=Í&'ã/(DÈÅCˆ«Ø:¼¦SœéE0ÂH«èÞ‰¾NÎ`"ÜÚðƒmHpnâËå#§z&ó„O›IÃkßoÀ"T+p#Ñ-WveãÛµUŸ4ÏLç(ÒlΟ)cm&Y³]É•$™ÕŠ¾@kÃð…ÉllL×0fCÄÚl +ú™²½XúxeÏßÍypxy0òK*á1½¾÷uáÐð¾dFÞ*f˜9©t²+†·jYÄFçâ$C¹+ƒŒPM¢[)GÙêdlý¥ž¹ÆGg(Î’(~•ñß9O(~×¼Ëêp2Fù’<^5~æøÒl¦ôN–H_MC”OUÑ¿DÔp#gHª0>ú©Ä‡Tº=¢A&c\ñ«àÞqHôB^?êÀ +H‰ìWénÛH~½Cÿ "º»y'¿,{ld×G'‹EÐ"[VO(’ÃÉ÷é·š´BÊq¦wÍCC²åb»¾:¾ªòù<Œ|~Ë‚œ¿D¯f/žf,É^¢ƒ¡ðàÑU–ˆð½ø¶ äÉâxÈ6Åé7¨:ÿjvp}~vOÑëÙÁ±ð2…,¹ƒÿÞTÚ,ƒ×-󌧅Æa’°'¼µü„‡ò9EoÃl÷îì..-5Ó_YaòóDOq¶s, ßD·\ÏJ2 òpçˆDèó•E¦Œ*á1gÙq‹XÕ4:Lj³S+l¼s(C«zÈÅ8`žrؘï‹L4%o
Z¥Ð9´%KùIÂÿÊyèÝ)ÜÞQ`PE¹«Õ9Ô0 +ÕCèyù&XSÖáÕT^=ùtÐ`u(6¥É¿¶õÕs\¾âòd™H*ü4øgÅU”'?â5SMRå¬(Îvžê^ƒu,- ôÒ4U‘D1OX©÷ÊJ¡§r]ñ£hG©èdEñ¤ñîƒc¾BofWŸNO +_UiÇùqøösE;Ÿuå´÷Qg:Ïw‚ñoª Ö\ܬÕ÷’íñAcú*üléþtçˆÔñ4ÌT5,wƒÆñMÇ·pDË?¹—-¢<ôÁ´EÔ`íC„£YÚf}¬tTZÇP¸2¢T_=Ó<Pç–íñÎ#ŸÕgN%d¥ª"®í=]×¥†MU<-6¸°Z#tTá…ùæÒËØ-W/кJ[æU&2¯¡‡UøÒâô´ +ð>ƒ¢0ÍX¨ž›?è
bYFírtGG¥[
¥Y]¹xÙÄ&ÏÖÊ>ù~¾óPåÔ0º§iXX àiŽ2 šFo3Ö±((áLMaÌz& +z:»çáiÚëgŒ¹—,¹ÌËøF$åî³õAëû£b÷ •™jkìïßâ(äO@Y)NÓîø§Ýi^ê^šÆ¥i\Rµáêž…G8/]Eyâñà ^3õ±©a—Ø™›è8§iìmlr}…(Šy²µR蟎¢M¥å1RPn_Ô™àKD DW¢ˆ¡Äòâ÷¥ádéˆ/V«<UÞ
†ß4ËIà4añZxûÒ6‘½c"Ü»žÉ‘7<SÔÔ;‡Fpïê@¦Þ94 ïOÚφÞ?Û¶š©uNsà³Ùö¡tÝhµJy¶ò$áþa¯Ù³•aO=çÉ
—Ñ,ôì”8‚X<Ÿ#J„r·|ÞºìÒ‡<Yæ=¾o
r•0/cÁE$Rel¥²"²íMãÒ°© +gÉR~’ð¿rˆï2®ZÝolÊB˜o.!Æ·òREpu•Î‘…ÑU&2oŠ/-NA€;:½µ–Z½„ïûö]¢½â›zà¶ÇGІÞÔNA5õX°w=mÃàUßžµ›õ¶èQr¾…7ÆØÃð)ËçXÊÇPo¼þ1¿LÔ¢óÖ•z«¤S–§©`¡äˆJi®¿ +Qó„eQ¢Œ©RèŸ +ŠHEÆGD
ç<¹á‡A0í:ÿc ¶&–ž’´¸ôf_´0 §ËE)4îƒc¾Bof¿¾%øóï¡õéô¤Ð”"SJ>_Dá;xEo™ÏKñ‚߈°þ`vï0ÊGWw›eÌ^è>zw—°ðÑ{&Âeôõå,‡Œ.áƒ\ñs}ÿü¾ü ¢¯È@çè_ÿÆÈéõûÙÜÖˆ¥›6šS3¨á ÍkSà £šnRÍæRHËDsjh–®;RøƒòÙl±Ç¾øJ'øè&a¾€Qýeaa‚¥iÛß‹›™£Ç4MTýum‚u4¯¾—h&9”8šcQ]ofD×\jP´ýûˆ"ŦPĆæꎉÞÌÔ°é€ÁÛ¿j7. +ç¸ÄµuôýËcªŽ¥™<¢T†]©I5žhû÷'z†‰m©hh˜P[**€$Ž®™¦^(ZšK0• WãÅ8 +kf-º‹9.ƒnãÇ‚hËrÁšcè"Döî¢9 ×!*÷!€+C`i–ëRtK£”:6"6„À¦+ÚšA ‘ˆëÊ ZÒÜ¥ÃEÒnb+Þ'ý߬ç¸$‰#ÝO5B!ijv:¶F
Ó’Š6¤ÌðÙ=DºC‹u]¼¯c +Ü 6¬Y&– +šíØúÏãfQZÆ
ã{=ÓÒ€ñp±õ¸ž£Y„8eÛŽKJESÝ°¡Âj ü¢‰
[šJ‘n»ÿ‡LùísŒÞËß +ÆQïmõë±c +±Õ¥¡àE“ +Nò‰ãð)c6È€"ä¼ò˜½ +°Y*i®-ôá¢}4íFá2'”©5¯O\Å®+R÷åZW +:©iPj(: +»¥‹ß¼r?Ü{Uܬˆ]Ló·Óû\=Þ¡\&‘…½ŽàžŽ¤3 lâ¼òAh`™¨Rnƒ¸Z,˺v‹U¤–ØM™ô€Ü–š£Y¸ø+ôJ•JB(ä:²iðƒ¨§6‘‘tðºª:\—òªœõÂ>@&½r…'2ïÿÕ•ÐY.¡AîöÖŽÿ“bª#¤?œ¯§§ö“Έ4‚-£4$.p×_ä€÷à¸íÛ©H¨Û&PŽ¶!áV‡ïø¤2eìËAC¦œðJy²”BÎC 5Œ®¡î.ŸŒØ@OŒ¬Jdú´Ø©ãüNÔLÓÏWFÕ’•UUÇåQô>‹¥Ê“ZŒµø™\ÄI@·Ëqí5`Ù»A
EÓÙÜ%¨ Ð + WÇë;4‹¦“nÚíLíÈćèw´‘W²Úi‡1nš“übÅdŽ„b4”],YMæ]Ť¾·b*”77D*p©€2ù2mP;ŸU2u_ø(+À¢©¨ô•GáÃ>Gè)jã¸ì,•Ô;2#+Å°ù\µÖqPO§a”¥Çômð$4Î*<>ãù¸Ø9Ûø”Å“Gf’5xdÑä‘YuÓ¾œµ`9k¦|5V“ãã¼–ï^…ÔññäO|eÑ å•ù„éÁ“s*¯,xÂC;a\ŒwF›M>V£ælä²l#’XàƱ‰¹^—ÛV”à”UõúÀ*l±€D‡C5ªßÞh˜âÖVý¦–+`[ù‚?L«Ü)™$÷çö5ÁrFOu?0‚|MÛˆÑÜTL–㚦fè`4e=26¤²WÂáp!k*žˆ-ÑJZ‚Ð +eð¸W–Æ9ŽTΡ”i‡ÑãA–éô`7bÔ~JÂÚ&).w‹^‹ +:à ¡È>š˜!Ãí1bƒñ®×¯çÀɇ³ü@e0@PÃÒˆÛqêìУJZ +S•ðÊ<”$N"ò†>ˆÈj3–2¸Ñ6ºJ?
ÈÐIÇPpM„àK.´·Þä1ñÎ:Of¢G€Ît0{'\³=›PÌ';?)È~½8çJÏÐdûãQÉh!S>\0l!½^&<™ˆ†{™G.+ÃW„Ò/G´‹ÍZt›· + jѱ̛ˆ‚¡ãò|EV©*ù¨aò×KeSâ UŒqywþÐ÷¹«c‚cº:Ï””T† +WÖ—8ž–7ÔŽÇÌ%Tþ¥eaÎBŠ±•<#IŸ×¤²
’^¢«z ¬uïíHÒWßÊ#~†#Ew]ÒõõµqWh¢›wyäâ¹y¸Ër”GÞ/žšóx½³·¿ü´xûÇò~ýóß÷ëUåè’ÿYˆÚïâíWßä|ïÓýÿq&ˆ™æüv½üØœ]~X~Z?®ÿ¼mïêtCÍéú×íûëÁ»PPšÝ»ÛÏ_Ú»výð°yÿcsVÆa¦‰àñĦ!Çc›zÏ“›úñMÿ©ø7¥ÖúäïýfçZ¤7íÃã²]—ËÇåâærñfy¿÷ÉÅMY\ýµ^}áw' +PxùÏmã²hÑU#øj„ñ>MFÊ…u•|®u%é@äTÓ9¶ÜëÉì7îþ®m‘š»×¿û°F…Ù´^%öFíŽþïìýôȬÆNËS—£bV¬& +Ò¨ÖÀè#3“: ‚™¶L]!ÍVø¡Jî`äÈÔÃMg*AYÕË~ÝуÿX˜L¦œéïsRÓAGéŽÏ¤—Ô™$ÎÙ‰W ÚÈ㚊ÇÞ3"¹if3Ía€LÏYˆÚK¬ðJ¢—•«ß:µ N› %ç!k0ÓÂ8Zùš¤B²ÆšU“”ݬ¦—’Ôðò’ +Må¬$ÕTÊŸÓû<dŸT¿re•–csó4A8rn„,Rç"¼É©„ƒäËÇ=C˜ŠîëalìÊɨlfÞK<vä„·1Öz +©ü;õÔ9R)¦¹Ýu§GÔ¤e²|ÄNôzÒ¼©>SÓMcUñ +tªœšMÃ4'<ÌÀ ²Öƒ~šÁ@´(‡á +·âXÌ<º=¹âô«œmµM9ªÆÀ
rªƒ$Ö0mM”¢Ÿa Ï«ákuÄk5÷i_Mc— õX¶öÏpÄç½i@e³»¸7ÙÀœjpNè +E.#í ¿KÖFuwÍiJ3,[õo‚+nhiTQ,›£á’ìaîVÌÜaÐ!,ù
¥]`Ýaî0©/ +à›‡Gl6EƒÉAÛºòPÏ>k1öµ>£ÜV§Ÿ"œiPÁ¾î¸šl«LüÜöÃ%k j«X&8kçŽù‚€5cêðK??è°ù·:Óùu¤mº.ÙÏgÁ]Ù9@f¾ëLÍs;SÖdß1IIt†þÌɱ€}…±”!° +}Qa +Pj8Ç™ušÝ3N sÊ´ +Tð&Ú@Û’Š¶3X€¾ ?>—ÊP‘#ôßÀÜ°eš$¥JkÐ`¶ÙÉŒgÂW54DÒnP|³Í”&0•ýÃ[…쀓kF)I1[¢5ÉÝ^›tw›é(KÍš»¹`¦±¡áÜ=$XWOUhâ ã@IG q+Û[*°:o3½oHé¾jk‚ì„Æ’¡LÈ¡WB
S
„ZŒ¾ÆßÔ^p#"Ûh²2„¡Â®àÈËø¥$øƒ¹= Â&JQHÇ”®åVrϬ+V+D«‡”ñ&ÛPŒªÌ]Mõhl ÿ'LÆ…„µGb/šœ^ƒ +D~»àÛ@ÌÑàS®í€Œð·–æH§|3äËüj&Ö]_ækÀ´»L³ì.®ÝÕÐ/žò
¹.…üw㋧æüÞëìí/?-Þþ±¼_ÿü÷ýzgU9º$ UuþwÜö«or¾÷éþÿ4yh‰óÛõòcsvù¾ôqýçm{W§«>óýë‹öýÇõàÔ•ôïn?iïÚõÃÃæýÍY?ÅÊúø¦zåئ&”üä¦~|Ó*þM©u‡>ù{¿Ù¹éMûð¸lWëÅåòq¹¸¹\¼YÞï}rqSWW_xÀÝ ƒ^þsÛ¸lµèª
{e!ç +¼„…TfpSDDN”Û¨ˆÉ»0ªuYj]¢ÅY—뽞Ì~ãÞïÚ‰¹kpù»kÔ—ü Ýàu]kôgïI”,ßl~Aœê³È@lÈmˆ`<A8îW¸>OWšþwl¢3jŽšw-ژ衚¡oûßÓvœ1\°b%‘Ⱥ‡‘©R2-fæÔLðõœŠðá ±éL´4«:Q"žf'ÝR +ô€É–B߀CqËß‘ôÙLUmàÑ3Víê ™±: +•;°V[ͧv/‰¹´xdƒ'p*Û9¥¡ yëYøÞgãé“<d—Qç)$žr?;,Ô>o!˜Çpebu!8Ër1kc¬c69úŲ9ëf
ab7UO„boâ`„}îìçÑïÐïÚj)aŒ,û'ì\aðS‡àWÚ‡nŒ<"2ZÙ:5N
†¾¤Å ‡Äǽ§ç5Y‰vHh2aPqÀ,2×2ü?ãõƒ„v¤¡‹Ìß^‘p3æ¸ Šš>ë2ìk©ÙhvŠ?®»OUêãtŽüŸùjÙmã‚_ÀØK +Ç2 +™âÚ~ˆaøD ÔmuÁgH˜D’äq +’!‰´óp†bcN@oœnàòìã’Ebm,ÂY*F +þ9º)Ƚ›ÆÛþôW@’>ùý¸Ú¹Aôrq÷ùz1›_M®?__]N®~ºþ´óÊù¥^Mÿ™Ï¾0Áíðó<üÇE 䚥{±I7®Û‘aÅlÅ+Ä”øÔ0¥ +#'TÜTà±*>EïAœÁ˜UïŸÑ>1¿â›çBH5²¤ #M…‹øe7|Ssm'¥ +H‰ÌWmO[ÙþþçK$"•Ë™™óÚý„Á¬Ò&Úˆ„-RUY^ðZ0ˆeóïûÌœ{1&!j»[VYÛsÏœ;/ÏÌ3ãŽOGÉm½vÇ‘Ûyw8ò])’|p¾“àKÉŽð•Kʹ¸¿â~ÚÇ_p¶úZ˜ÝgH߶}ç=…qÇDÕ]Ž˜ºPCrÜÕZ=»·# +E·:öµ&ˆTC §7¤,E |zÛÛÑíèÕôÿ|—³äÃbôw¨ §Ü¾Ø
Sõ˜—‚¸Ïø±ÉºWÓ§ö½šn°Ðîzjã¦[Uªvá_íƒëÝîõèãŸF/0ÿ_k‘vÁ—BôÙ÷ÎýýÞBz|ø8Nâc†_¹£|rµc RœzÄ•\‚\pbðZ:_†œhž¢'”Z‚³Ÿ4,”ju+aò‘MÁw(9$!¼"vàhÐR*ÖHW²Xɧ*Ð9¡F„0tÄÑ….q¬ÅmsGA¼Æã!Æ”ˆD•Ì?©ðF¥±°·tYæ{Ý¥¨åç +çXŠI½¯ðµtD¥?×Þ6d®× ʵ׸a£¤×[Šj—H¸¸åÛr׬2ój(hM‰êNšA¹_’"2g>ñY`{WèjTP"j +RT"”4Wˆ¢¬¹ÐAþ‘«¬¹èÝC\…Aä$YÓ—£b>tŒkð(wÉCBÈyÎЩ]ˆE] 9¢î‚÷sWb¸DJJe`8šçœÔuJ@%Âp`D_‚C”‚ /¨!#Š($ð´‘5îSÄQª¥ˆ¸h£òŒHZ:j +îiAì~†bÜÚ=½úeîöfçŸnf×gç'n|s{æ>^]]¼¶²‹Ñ¿½òÅg ”83Éüæƒ]™Äz€Èįüíú°úÓC{íoß%2®Î'ìCJ{‰rPéÎîÍÝþùÉÝùÕbvóÅý"·óáîæ|ñÉ5˧fìütú~vwöÚý '~À?€ý¤¬ö|<4ø£Í—g·ófqç¶>üüãôÃÙìzþñËõüÑôì•h•èh¿ok]|·;kG×kÔ +óYó}ûô²·£ñ/úâ£ÅY9uðüô|p¥×VèhÔÅðÿñ'k¸>Y? ˜^~)è è|èo…*µ¦}Œ ©v=|lP¨ A;-àDtÐÌn|2*躦Ÿ/{ßør¤ÔªÄá–_6©zð@@ÑâÂX¼©¢qgÐðùŒ¢W60E»bü©V$&Ô"X->þŠlÇ#Öƶ҅þ ôƒ€ +Qìè G€—˜êK— g9ÅØ&k™Ì|"ãÿ]CÁ”.-ÒçÁä !¸Ò3šH¤N–H#WÓLœuË#½Bžñ¬ó94128Ò4KLü õ¥<ƒªôfší"ÿWÀÓ¯~6qè¦ÚŒRä¾òÅöÀÕÆ?QŠÔ¯˜48w¹‚ŽI‰1þÒ„h¶H –²¯ÃH1GYÌø\J“ÎHoJ½pýίî…?^âËw,…Ë·³î˜¢•ÅQã/˜ø·YëZ7”HêŸú[©†:e³b«Â÷€å“8Fù£¶~À&cÈ&àÅ„¤Æ¬Ã¼æ+ é† +¥¬m RËShkQlûΆÒï„ +RmÙÊ5)=a=Ê¹à ¬ŸdëIJUs¶l!kíŒöcðÚ=4Û£ÑО¾5ÿk/‚)Çï±ëeòØjI&cæI™ÈäÀ—è«øGáÑ/h¯ýCàá;J +W +í7i/Qª³i|ØHÚ’aÆÎO§ïgwg+[…Ž!à›çÖZ]j•`Œ‚ÃIq+ÙåqGg¡Ü¹g–ÿõ|s;p"E“ jiÂT±ÙRãKÉpÅ}6‚zbœQÙóÏ®ØøqÍÄ
—~•õö{æû¶õßÃ|ˆGA^¶zó +ZÛ°“J#ˆœƒ6gmð9ÑJb1Í€¶Ý
VÂä3 ÁD yˆ! ARV‹û(r“ˆ$ƒˆ=`à6Η‚ðé@BÙ¦‰ öä\78Ó‚pÏç˜ä³*%•žC0»(Ÿ×j|¾–§½–'LR
V¹Ïe!ã<®1<ÍÓÉÊ»háýþ$³ +8dÎÜg']ìBh‚r´O‚B³iP‹6"Ûþ}¿µç!%R‘§Î‹(gÏ̾µWá}Óo—oÞ¯_W··Ûß¿žµÃÀ²ÆÇ.¥PÚ±K[¬__ú[u¿²éÑOÞ·7÷ú¼Xß¾»^/WWç×ﮯ.ί¾¹~{oËÉE»zþËjù^Ü7Ø©='ç߬‡P“Õ[Wëfö°V–Ô~ém:T£§?èÞïÖk’òjÀñW?¨ò…5Á¼¨!zKlþžþ8› ñY…ÐiÊVTèóêp—Ù®1èk¼ÿÇ
¦è¯n 5Ö#–mQjÎÃ70N—3D‰ +ÉkVØÏgùìéÿ|é$f-ŒYƒ+½rù¨Þfhe¶cç¢x5Òa[ëyiÂïº,¤˜Ãj‹Çz;,JhfËçkšê(VgsçxÜ”s/¤jø$…4IJFÆárš3öåØy¹;ÞÝg´†4š¾éŒÝQ¥Å¨^l²¡ƒG%…E.cŸK|Y”¦Ù[q«uuRŒÍ{MÄ™~}à¸G¥æßgOñâé2s{¹&t4ÀÍ,ƒàÖ8ãf‚FNxÊ'j$/ž +$ÁäZ:LŠ´&h +ŒR‡x"vö¾G_$$3ŠRnìŸ* +ÞÍ#Wç±Ò·¼r,Uâ3K Õ¼ÍtŠ —ë'g¦…Àôä™B–ìA8_[ê{|Q‰] +Z ÉÚ6¥ËÙ¯KD„ÙE{¢oùÞ…¾g)ñ~nq}z®èæ†.ÕBànSNf¬ëY)£©»T¼çáj.›ÍT‚R–\|6“P-={A +P„¯"n`?¯0@]ÕH<JÂœsÑ>‡eu±Ž÷câ“s:ól¹P²Q©´ù)Ú Å–Jú)§;mIšTæ0ˆUYhA/aæhä- ÷•Â!1˜²ý"W +Á”S¡r¦Ùq†a9NÎ0µU936ZKÎxÃCœ±¼<8÷Ó9P<?iË`ŒUðDpê#ŒÃ¨ûŒ'BåBoðÑš¸Hmé@ +, …ÉYÍ‚iez×€
.fë ¼ôv!"©"½æžÝ8õ½í²º“Ћ^èY@FNp‹ºÅWþË]ƒ®{ósÓo085œ–°,„øŽ=žƒ»À`Bl÷>y Äm ùÿ?3tW( ¨¢'B°’À²ëz§¿0Ôu%oN¾Çy^®²±P½àŽL½ž‰¢öoÂÔh–;|¯¾:ñ/=Ö’ÙD ér†Ï±,ÕB¼è:‘…æA +ØH
~Ó€Œ¦š¤âpß‘G±) ì>1t‡†%¨ÆÏ=óÉ)n@\â~¼µ®¹@•3p˜&ÜÕ`Ä’ÀbB4IÔ¯(×fΪR–l¦@3Ôši7MVQÞ(4QÀŒ}—Þ5$M6ð”Îû2`Kjdì‡êªðˉ2²=×>usÕleØïÇþOià))ô›Œm.!³É–Šú +}ßœ2ßéÈ¥[â|`íý$ÙÉÂl +éÞùô0É~ñW®Nü“³@ì3?ªxáÿ;¹¯eO¦ÿ©]¸Û°æ(gÞî›…-©{¹ºââ$[¼¢ozSÁ,à`$ûþŽ>Ñ0‚1’àl߆éÜgi¿HÔFÒò{N¼É3äP<DBðQ¿‰qkVuÌ …µ¾ <˜ˆe–n:PëöŠÁ|dmƒÊÅNÒ$ñè´ÄÞwXݨ2éÇÍQ¡ÿv¥q%ýp‚_¬`l¥þÝR +9Çž}¥fŽæ‘xØvüÿ:vÂI.wEͤŠ<ÉXqd.Ü‘aY¹†y HXÌ°èÌà¤S”ë.Ʊ}\³û>3²ÎÔkžpÁ‡GZrÚ’\Ëœ‡ +~Úú¯‹å¬þÿáò;uÑi\USÃjP)Àº·0^_ÕÜW;UAIß’¡îËæTU(®îÞ¦?o@ýÝpº;ý%—Ò{
¶P ~^¸y¢È,RŽ¶Ør²Ú1§y–w/¥—p*<þiÿ¿,—9¤ßW[Í‹éù"—mÍÚ:½¦g€Ð—·å0‰ižùJ@BóöIµåz¸¨k {2©_"¬À×,F?NÈ7¦.Ö§ëÒZh¯Ø,AuÁx~@–w>˜‰²þÎ0Û8µ{ÜlEŒ-,„óá°UÖ@vqBŒüµÉ_rnúºi?w–Í.ÂöïŒÄs=ÛôåúµžÉ9mÿM=ÃŽGeïz£šôÍcx¨Šh4¾4ÇVf å…Ö×ÙÅ–ÅÊÖ:VÉXWì£ßã¼S*ÄÙE~ØÊ/N.._ëîÿ§“çK
*¦läæì»F=Ar—ë*ðºwÜGb%@¼ +…¥E¬A÷ }y3ï‰ýwß؆œ+ºUˆÐ¦AØ™ÝBmÖéìÖ䣔‹&:\L`IxÕS誡¾ßÈ烫
íù_ä¦éý~mo‰ sÝq9Ì*›Á—/7þ6¹Û†â±=“`..UÆ€Fv]1¹'Ñ&]Òû–þ,Gûß=Ûcž‘Ò¨‚J)…á…0§†ÆTEãuZ‡·'ý0Ÿ½gú9+tzÔ½;unšƒãLåêÊ# +ÃAÍëU·¾Ÿôé¿:È-à›×Eo^kú×›³RMä}?Kƒlkuž.ë–ö GtNŠ)áQø¸I„•dSmºŒqê}!Ù»tªeSi/¨´Å&üÍš#=41·=‡`ìPª5iŒÍr¨bí|×øêÊ+±âÊæ§Å(lw›yîo®ãlc7œ±3Dqý{ô3ÔÚH2äG7Ú¯6:7ˆW¶À¥ñ«ÇùÔœø¿/ ÀúÆ ò¯ÿóbŠ½²›x2|U/N"æa:ìKM¬ýµÜî×—|Î5]ñvfIIJøÓÙ^†õô! S(#û[Á²ß_PµšzÓb[´ÁXä:K£Ê¯Þ¸ûåAÄú//ãŠ@ó%’Š½ÖœZ@ïf· ~Å¿žqA'XÄ.šÿ^;CíòE£²ïƒç,Ї¥îuªa5P>úØ!ŸŸÎúyvûŸ’…
èÓ‡ÌÔ›Ââ·8Åç/Oh¿ËHo2j +}9¼ìûÀ/WžéðnÁOlÔÞz¼q2`˜™¯O0ÜÍb—ªÀîås‚AG›ÍuÑí‡!ý´àç•ù`ÌApSé)‚`ø8Uò"Ü[¯#d†²CŒÆ4€ÓÈPØ“AMm—¬˜šÉñ~ÍO?ći¦€ªý +D%ÝVéÃ+SB®®Û{ýõ2œfï“ÛþðQ†o1C–+óŠ3†‹`‹ˆÂÝšKõfö¸ŸÁɃumÕè8ÞvñÜ?<ëóµ'°MÞ¹Ü3†À¸iïï>µ*ú×C4n§±´gwLE¹üa¡V>ÆžG7òôãôøÎÑ)J^w +u~{áóS•§f$Ž×~¼Ž~Òí;OozC
O[T¨·ÒÌBgL“
_n°› +TPC£óŒôEj›—ÌL²ä¥‡s†–ïlà— +DÀÔY—7LÉh|ôeì×n¨E…Ìø§ämÙ’/Pw±•F÷É4xõE¾¬—~)ó’ÄiU¹•]O};`’ÒKP’Ǽg|ÃLV¸îææBú½@Ój#áç<Rýˆf"3ð<“S“å9¶÷ëcòõ¹1²>X-ÛÎ×SÁ)¸V,«vê¸ÎIÖòµÇŒM0’1©Ã²˜—ÆHQ‹&—ªaGT¼
Û¹ºT¡JAeÉ°ž[R-Æ'fa6‡€—Ðý§ÐÏ´Î4m-äƒûX²ŸéWÐ6”·ÀÃO¦ê¹¸Ÿ:ØÒ´‹(ÅòÚ¾”éð±b‘H&Ñõ(l{®”°÷{Àn©ú™K”¾\:yÚØx
èòH`yû.—;[ì…uÔ½u€
©ž)[èSViÅåkP|):áÑèsH@_HsðÅÛµ’rÐF3¾„¨Pz*@ÙѨ9¥žuoû@ž1Æ(€d‹Bô†ÌSÒ¼îÝAs‘»L`5eó¤ÀϧÚRíõxÿÁ¨ÎNz°úw€@§²È¢˜EÔf°L1›ŸÀ4_–¤Ík!À +<\é’bW5¤êlÝ´û`eò…ß(l4Ó;=#mXt_´ûÁo²]
·¶Fa* Iâ-ÜZ˜3I’¶“]àìö!–®™Û§ÜK +Ũ̈́d}·*_"U»¬·{C0èÙ6ªó3í|xìsUþ³Û>>ùôxùý”Žt¼|uïÿö~íñ¥ýä—9}ñó¯_ýþÝ›¿¼}íßÛ?ýò¯_}}E>ùÅë·ß|õêxñåÃ?Þ~süöÏ?âOŸÞ¾½ýø[ý/?Ó·£)jVa¤AKü€Y|'rlk$Ò‘äÿ^¾Ó/¿ÒSèŸG;~}üñOéx¥èËßÝ溈u#Ík¼D|ý°5Ú®ÍÚ ½¤pîX݃¸µïËÊðᶿ÷- Öþ)’v¹"E©/˜–#²…»z/ÑÀ±ÑtEr¯×S¶JŠ$Ò!P@„RìÐ̚б‘¯Âÿ &äD$¤sJþÞ±§–iVâzˆ ×€,}?ø¥+†–Eë½ÏÝ-/öÔ^g”|Æ g©›CGÚPNŠx»©Öw +YæÇkвô‡ð`_‡«UV$y]‘><²zÏ2H±®nR$C²œŒö‘P‘²Ì2héÓ>.ÓR¯ŽÝ(xOkiT1´²œß)žcfc_ß×»]«'·Öa?
G„÷¶YÿsÏ;R’¤.ðìÖ±õØ#²1ªÀPâÏjBTBQG"X="qUEV›3"súKj»ˆµ`lZ1kY;®'u¯%6lú‹0BìR!½ScàË➬PÏåF”()âW;ß‹šíõžn¬Ç LV!ÞhDF°Ñ-ËÈË Rb‘¿u{fiL÷ç=_rAÓªF§ïáœ:qYu
£ÖBjÊ‚Ès@!Z§¡gù*·õáÖ˜sõ5‹×ÒÛÊXrAWÍì§T‘Ìžmý“nópÓMWP'”—¬8$Ô@mÅœ6Túwˆ7¸[šï%[4u"Û¹¸L64À‚‚̶bxõB½¿fö4âê/ +íõk¡DìãØ8"… +,Õ1{V$šÔPDŠ–ù;ße÷±KU!õkT8-pŽ[uš7bŠ)Ó–‡t"P¹B¢Sêp_Îréû›…9V»îÒeÐ.ÉáMȃÈf’…ø½rL¡ÍÒ¡ 42¹Q“ŠÎãküjîœôavªzž·c“&²ØÕƒ¢ÜvT2¾U”cÍQïuŪ ·^wk›~{®=M=Jæ·žŠK‚‰aÂ꺳¾?kKæ +¿n¯œJ»)†Cɸn ©øªûjdàÄÌÉA¢‰Ñ XbZÝå˜÷ûlû1qÆb:PÛ…6ê›+Ùñ›îwwS ”º“"^Eõj̻в*:ýV +cÂQAk¥¤xGÆhWDãÉåÄžeMÇ’iŒˆƒÁ1¶*2€"]Á—ƒÌAM¨·úó5죈 +-IWøŸg´JÒuÚ’Xn¥4·"«H—Œ\HHÆÖ]ïB?Rp†ˆ¬""DžeÏð¼KU‹ÁïË3¬ÁaÎf Je8ä“Æb>î¾IÂw¼úgóUtªè+7Ç àTÞÁí…PBõ!6Ž¥eï9¼çÅ©Éƈ§¦¢é™½¯]éR‡•ÄQ½n¤1ì„ʺ†Wc±üi÷@—Š”‹Ù[éU›ãû¥Ü‚ñ9]õ{¸Ye4Ǻ^YY£H(Á¨]UØãz†ò+ ‰2,$4s„ïKm#’†oL)¶Uì +\]°±5u\É~ª†€+¶-´‘*ž`£%h
°caîm·j°²›¬+g¹„$”ÂZ9ý‹ç27–$G¢ C)ðÇpô°C¯ÙÒÃÊ¿îÕC•!*3Äñ ˜WÆLÃ-Û 7jÄh~Ã@_O_M¨ö?ÆH&ð»EA
ü¯ E
˜])âÜÇJ4^î‡ÈZÉ(”Åéi·€’#ÜÿýKõau46\5s»Î‰œãª÷ºüÛ
‹ëÈÐÌ ¶‰õP+©—{Ü'g8æjÑ<$¹3ÚŸ3Þì¨Ç\ÞLÕ™=öÉM£òþþ¥Hº=O8,Áý¤Û®é‚¬ƒ¿}¡à8“,§Òu/Ýud“ÕfŽ +›CWZÎ"c(°–û‘çå2ì
^GðÌp›À1ë3ƒk‹›ìCíÁ–#5¦²˜Å!(ÀŒßŸ/ +^ê”^rv[¡wåq5Ç +ª ®7`càú1äíu~Lé²ìÀ®®«ÏR’›5ž'ŠŸÜÜšÏÑI“ÃðD̨Dªþr-y¸.qaK§‰¼´é.·°ÛX‚gÙrân²D|kK)D0sÍÍh5±²Ú'K~Ú3»Ø¾X½Lž_21ëxÛÿùDÑõJ‘6“yczüEÍOÔÿ³ó(Aþ1ÅþẰÆúŒèÓœ6z³+Iý_˜çMÕ0u!btÅŠ‡˜±O,cš0ž]ÃƬï'û‰l¤½í€·©¦6þ +IÀgú÷Üž®Ô¤!$d¸»‚³KË#çí“Ž&×µ +Q€$‚üÓEïbªLê€,éôV={"mLª^iŒ§£u£Š‡êMÞÐ{PpYr*/¨>HŸë#¼¤“ÅÝòˆÃó‹÷I³…mm–íóþO½byÈ-òÄ¿Ú¢Éó|aékIƒhÅlë`¿²¦ÎáñJÁC\ßGùJƒ0Ð]GTXlŠ6µD¤õRú[®”û>9†v+Š8,÷|‰U•´¦EŒÛP”Íj9 ¨DL˜>$ë[n>û˜DµºòFT¯·_ì“ùdÛa]ϲ“Z,®H;‚Ôn9:ˆÈ[†ÒÙEÛQžúøÀCO#4^-ayþ‚õ€Ô\×fÊ
‡{WUÛŠ8íŒ3úÃk‡âŽ¢JÅÞæKÔ“ÔvG‰Þ¨?ìù’C'þTña :öPÓø5}J&Ý¥Èóíp‰²‡4&pߌšÂ! Ž•~¹”n±„)T[› +Â+<ý i8ZŒ^f·7¯Iâ:äMë-y¨ŒGQ‰?ÚK/ n‘ÍžÃÜ0˜yš2ä¯qJ—´.EŸ¼ƒ6âÀ|USÆ„6±ür`„êWý[%xg•Ç$„b X2ê½—"é„Z€Øš–!üûWžé;;!¯Ï˜3$F§P/}Ø<SZûb÷g'4WÖ|ÏäsÔŒ œêNÕž©+b 8õk좜*QDQal"Áö„Ž¶’Îë)Š¨%¥ziõýûqWWéÿ@”C‹Á³wGȚ͎=ê6²‰§Ú¨hKò¦u¼r¢´Zn4Ã=¹úýz/Âm?^uæ†_Bé߈YUæ jª™QºyºŸò„J³!F8žÐ +Zµ€¬‰¦çµ‘K0'åéB?*Ι˱M¹¥¿ûî‘9ÈNÂfÙ—ŸëI§œÌ†/vz½©bvTÒ^÷óJŠ«ÂKcDTOÄSû*ä&ÀÐæ°åà¿(ºƒÒ¥ì÷ö°D™îÌñ¶S;Õç[“Êlîþ +§Ûõ9oʦ҂uµåÓ9|Ixšc?«íOe¾4tI˜n£Êï‰ùöQ%Ì•Ð’
%îû>¢Ms¹ê;«O™Íóv¦‚_j£ß`ºOKÙÖë|÷9µ¤ZXVnMEx™òg;ÌÜÌDÍ—¹È~[«ZtÉn¼Ôe lcì"j7–çtKù>ƒÿç@Þì<×!ãÀŸãówC]Oh
é˜@½oÂ<ÿÍ#÷=²¢ù¡ôy÷ëÌ
Èž}g*wtf5mxLÀGâÛDÕ¹ÛcÔ3è{DA© ãCfè~æ|Sn[.Àè3ÿvÒ¸—Fòü&s¼^îšÏ%Ébï!c‹,h€5q{+ÞúCFFñ³«HùJ}ˆ-ßו3‡ÛòúHºõ¼s–ï cÂHì³®Þ‹ƒ\ùíï_Š‚¶é} +$1”~ÍÈD\Fzj.aå-'á«åð&ÉAÿŒì2cZk¾ôÛÛ*Ë8aQZM·7£ +…ýyÕyÙ¶?øŽ'诩“ä} +³¹¿^ÀIc"¯¢b ÁÒ½¹å³y=áH¸ÔµÍñ¼n(öCMxmöº.¥›*žå1hÏKžheß{^{Ö<åÙ3¼mªqšäXÇßMåÌ—VÙkŸ"É5¼êàOóŸÀ’™Ì‰\àØæ¦(秗ªMÐçàÞE1çzA¦IDÇK@V2‹CaxåvóÖ„´aÂOþôœ¸ƒ‹êxÿuÌ{EDˆêǽ oäšTÖï ™ü74 +Ž(Óô[;{Ù¡¾<Q'¥tát>Á´Sq‚K…žUltèñ«³(f û‚IL¤ZM¯RX~"n@NœL茎8•qGtkFP;r¿ÔR·}Ô¡>zõh1á5óä½Ú MpðáˆàƒUÔs'ÕÂÄŒ´"zA•a +!jrA5À©< +°¤hW‰æóu O¨ê¶¾OˆZdU¬_ÎmÔÂs‡îͺ¡ýôºöûYIxÓÐèYq1ÆùÝÄÏ?^÷3=î`†>7Ú||™–É;jý!Y1[8³˜w/zº«&Dç_µ
¨%R°ÖÇŒ‡(rÃöì¾/oÅÁ¡NZmæÄ’K¬Sjày«8…—È`¿sÍ!wûí²‚™gïÛdj.zLÝj-ˆ–v=t2“º‘bk
ö_ú!p,v‰¿ÍOÀNuÑ•’o D€Èy˜Ã»Éy"„›fK¨+|º¨¹4P +«~ZCŽv¤VwžÀË+ÅEC }rñëJŒ; Ü(6<õœù»*p*éO…%/‹uOZPõ$ã¿pWTëf¤;õíýáCÂg-# +Õ*K4¤óáçë1>ð3®aU_ „kGWiì9gÊqo*Ømc€/ä/oåìTtê)ðeŸ¡L8=C‹iògiZÐýl +³íZF¼ÍŠ|;À›Fv+¶îsö¤xrš·(^™H‡m—BW©˜×aÓ´ r?E<Ü•S ]PÞȼ˃Qý3§°¹(6¿ŸŽæq䙾µuïhQq½½)PÚß4y–´Å‰¡¯ýV™–ÕÎð´Ø§NŠ™$(«ëFÅ£l8/f +NØÚj5–¤(aG¯f„{úöÏkíÁÏHìS«Ò"t+ÕÄ‹ +2˜ÈQ‹<]ñXo
Øi3dtG4=ÿqY)êÄ@bÓ™)hlì
MÅ +‡œf„ØØ^vŸo™õIÔWøH5Œ€
îø˜Ñ +(Aí£Zc¤uwÿ„i*é–Ib·MÞVÀÞ-#»à_£€ÔÎIÈP<¨\ûÄ=T}êL!i}òj’^ÈUÉËÔ%R +㢵⤾JÛý™€4ÅG‰wz‘5·jb)Ár;ÿýë#Ÿ}£«
[Íù}“Ã{I@chJçÌ*ä2 +ë·wÆ-Î@<ùJq¤YÕŸ^°kü܉£YîyrB]Ä£´pø-ôòGõÛÈükç=¥²êÓýŠpݤGóúŠÊRܯX²˜ÐZ‹¿ Uvó†åŸÐîwˆÙEàô4ÚÚ£ýäP{AQ|Ö¨åbÈUÀ¾å?Ÿ SKÆ•=@µŽ¦>C‘ØJšºQgvñ’ì +ñSÞÄJ}«ŸäÞª2W£ +×-SFþiÊmŸÞný85[¨UUûVBP| +Ò©±ðКê»Ý7»aM׃y;Þ®
8@\54„Gɇ’™H”%´^GH“&e«¹ƒ‘,e«XÑ[Ú +ÒÓkæ€ZÌG‚f•ï¾A°.[8å©Zú¡XúOJ})·NF‚ò©[ˆÛR‹=%H7MØÈkêz¿'¥ ›ôí62æpJ‘¦t«0;IÑÔÌ(OŽ:°/®Ô•]ÐT˜µ@ôÝÏϪtD~ðojP8¹í}# ¿¡Ê:B6Iôñ²¸“‡ª-΃hNڋ婱”ã+ˆ?„+ˆö4\ÓèC)íõBuŸE@²DÝãG©;%©^MG „ªRd +jI_ÁI;'Ñ„O¥ê!®Æfg *Pn^/±Œó)Mð(ðCb÷¢Üÿë‹ÖzÔkªÈDH›„Ë •ÑšµWH‹ß¶-æótõZ—”pÝï0\X¿Ë,ö´ï™v"l5¶A”Kyª{Ê<ÖpÿL”.OŒÃcfx0:N„ªNeÈÄâÒ*-65â}Þ÷WŒC~7Ù–²}E[MŠnA"‹RV]Ek{RÌK)oÇûÈDnø½ÄadÈàÑ”¸FôNá隊Vò¤<~ͳ–îb¬¨åM +_mݹœOGÑîÚ“'m·b_9
Åmr¦Šÿ—†´Í`-ʦ?£ÛÉ“:v[QÑÿïдœMxG)2€yõL«Js@„l2¥Ÿpº4Œ¼› +§ì®Ø>ÎIÉœŽ6X®Œ-24Åä¥ÇO”¡zç½oëµJª)%- DßõA(&bñ¶G\IR¸#õ_[Òìã9 qˆ¹´"çj®Utÿ +#Â&íÐå)>—ì'e£ÐeIŠsíqäH½Êµñ¼Mö ýYrXE%CÚ‹ öëy`ªLªú +óZûžù¥‡`Y|‰RyíÞÔó«yë3éໃ$ãeÐ< +Øeô«}Ž[ +e³C›BÆŒRÊÂCŸÓ#ëë„0YÉ1-$eŸ³–Ö!ÑÉ¥ŽeÐ1ͺo}¬‹ŽRë:d¡-ÊïêÿýGzå" +‘óx¢Eš5¶`C¾¬Te¨yÙÍ„¢-P}ÄY4ó]i—L{ :´±ŠbÛ/æþhcóRcUCj‘-ûÂ]á*uò†PRó2&°Ö +rS0›Ì.î®2‹$·¯ïè*þQ]`ÙÝZ•ÜH£¨P»Õ-&ù|ÐïJ¸¨$P#¾¹PÑzÁ.5tÚª/hØ©…¿sÔz$“¼xh§¤m¤ñ +Úº†‘Ó<±u€òA¡_höŽ„”ùªÒRÁ1imh8Æd³î² +ü~„ÜYÞÒS‰Yšw]´ÄF9 ÎeˆÕ±.]¼Rt4ZÌ÷–wã
Ó2†r±>X¯†ŒŒu;«˜˜žvxÖ! +Ç,E§G-ô8É—9d¯UÙÒè´lry=¥Pm–”‚;HàŒFsHåø6ZtpVÒ›$æ“#—4·yxr¡¶ŒéþØ™‚ŅƲ+V‚lJȺÔZG%[n $’E‹i€CMµ)|öIŠG@7»ëá°xoUŒ¢Â*~*¼S+ƒ¹õ¡møšœÖ¸s`Tµ÷ÓHÂ:#kµâÂʨCâFV.šVR€6¶x3H8…דWm‘:Ø=м9{è@eì
î70ŠYjNO +êŒ_ÄN*“ˆBÕ ÷Vþ²löi”*Ó +lMLaIv|Â9×X;®wh¼P
µ(Ü¢%µè.ˆspñGãÐD„Ÿ%G
p86[öÚòä…Žó¥Äåæ]g-iˆ9õ¨½Ð+Y9𜊣ë™$vV×ËUË*ûig1^Ñ
FÂÛÅ )ÅyPmš>%D—wàdáÕ!PNŃ!£ˆ€”m¦=µá9›•×RÛPíB•Åv\fß!¿ió 2bÙ·3–ÄˆĹ‰ +@k/K¤„¶Dh“[sõŒ`ô¦M°€&R×» +ÐiÕcÏ;XÁXR23xCil<81%Zê:¾íXˆÏ„i0xW0‡YjM¡ÕCöÔ‰öÁè”dŸC»æ°†aWC¤Á“ +€êC·™[¸C5-‚RÔN¾+c@íU±ZôÓ"sí!MA}àÈÜ¢!õì´ößÎÝ0= +,[:VjIÃ.š’ p lWpt¹›¼‹ß6\É£ÜpqÊ>΀~ëÁÝŠÅìò&–ç[ô)g'Y·³ hCô&ª•8y®rkQ¹ñÂÃB®Ù¡U‘ìîÉŠ1k2³›––REXÛ]ÁÙ Óª$'ÜtW•ø,NæG£ ˆõ6wÙay¬ bn®FÇ°A~äؼ¥¶sã1A‰V\ÎFH¸,Ó¶.>Y3ÆI¨í@Ì)[±Çui c£r鉥ÑÛ”¨&å`iõiYk5[ âL˜óX€=D!÷¨ºÜÂiÕ:0ÖA·±Ðº©½†™ëéD–mŽíʨmš'Ú[+NÉ{YrÀ~ÙÑŒ©òEÖ‘ì/”xqRUÓÓQG‘éàtq>š®ªþçCa8‰Ÿ€ÍXUæ:iÞT·U}ü“_}ùìùýÇWWw·ç÷ï¦ßzªºÌO§g/î¯n_OONOŸ_\¼½yq÷pîЧÓoø{þ†4®‹&ŠÂH7¾±bÕeÑÛLif?ïgOê7é‹À–çà¨D6Z8' ">ý‰å?ýeÎýùIŸž<^ýõd™>ï¶6Naç»óM„Èåbh$î-—€ÎòlI"£C|5¶rÜäGë^ü2§‡. ©21Iæy•#ö¡4A3À@Ig‰8SJ†‰ç¨„5 ¶™•ÿh¨ÅÓ×è?P@ŸK&°(ªÁa\˜=Ù/©ÓËæ¹
T¬ëûÀ)€#"Æœnë„Qk±j¢…d •xA9xÚUa¯¢ ͵ æ:‹]œ,ú&°ÛÆùɼq¡E¬¤ûþ++¿P¶ýùÿ¹Ê<=ûäöazòü“ež.înÞܽ½½œ¾þçù›ãtswyüA]þäV°yˆg.$z»øÖBzÓÌŸg/Žçןs”o™ûå?Ÿ?<ïoûËë«‹ãË‹ókŽùñýÕåïƶËw‡{üâøúêë‡û¸Á_Þ½9þÏ}ûæîþá»!áôîîú‡cnÏ¿º>~üöêòøõ÷.úØ~¿2)_~t{ùòÝÍWw×ñ½~yÊ n÷È“ïÇÛéùýýÝ7OOÞòg¦eçéOü]âÞóôêà‡úfZ§Ï¦¿ý}ž.‰¾z¨ «t@UÙÛlÑ!Å÷õwßi‰or<Ï¡¹j|ûëÞëã¯?÷Ù?Xü{“ûðÃüøûô+0èÉç··ç7ÇËéõýùåÕ‘<oéi\
ª[ö{>þ{úÚÎqèòÇÿm!èý-©ªdž¶ ƒz^ëôêæD“¸¡°ÿÿ©‰XªT»(~Õl§øþÿŸµãéÏÚqÁ‡µ…*n) µxjóÎÓé)•òê«m7®ã~ÿá¼,5÷òÄ]’†6'ȱZn$AäRà±ÿ>U=—3»\ÉüÇ@"NïÌ™žîêî*4®4'úOŸMU}]~8šX›ÃkveèLBviŸ…¦‰Ò7&›#ƒÓ0皬 l‰v²ß IÑ7ØfÔɽ<º3¢^ƒ÷Ýõ³ÔåÿŸo¡äûÊ“ÝCYñ¦É`û±}#·™‡©rガWºv‚ñ‡Ñ¸ NT¦)„ÆÆ9Æx¡§£õØN~R6±w¿ð’ÆGüíµu5}–fòÓÉ·DæÓ7·›ñvá÷À¨"S0(Š¿ÄgiÒX + ášl"HD.‡”Šx¥RUe—W`ø 0nx˜ƒN£AgE¦†ïB´ÅGWª»S2*Ë”;ˆë¦=ø°R^ÐE(.€+(>7á<º¿nð¹.›ñ:qIdGõé…×Gž&ïO~~¿yhz„Ô× ÒD™Î;„Ý·LŒÕˆÅ +lßRÔëk )ø8ÁcЖæšÊŠ¬¯£€d<Aö¦yGN 2„ë _0‰ã„p½Ã Ss†*ÀP‡ƒn
D•ê·¥´bu%(M¡Ô"•h°Ñ€%‡á$€9¢ƒAvð=‚'#'IÜÀKÓ4´dåK°p‹D⌑þ °Æµôyy± +ì,¤hìååÙÅùÅÒ.Á^&×¥ÚûÏípúà¿¥s¦ýf‡OCî]åBXPAž9¦„f©%ž_‹³Û›k¨ƒ¼0¢ÇqnNBŸýÓ1ÃqlÄ\VJxשFœ³
Úö3ús³ÏÇFø€.Œ/<(à‘hüCðd¥ƒ¢wøX^3Xª#¹ +Õrð¦ÙпràæÈùú¡Ã·³|•ÃýÞ“¿ÁÍcPEI3<0äoÕ‚´‰ÎõµG}›¬ÛZˆNˆ!Î'X ÎJP0,`"’©œª6KêàÇsè°&’‡fB2äŒÃ9hýcèÖ±›4ƒ|8Áu’&LQ70‚@‚Ô3!m„*¯ÓdP\^(ËiÀ:°‹ÅŒ10c#¶34IW¤ÉjÒ—•áaÏVÑÓ®=!wGèh°º9:.Ë´’e{g[·@´õ«f™Ú--èÝ0g¦›ØÑc(4
t¹åtMÛÏ +ºêd +•¡KÑAÚŒø·gÐ1ÖV$&|G\}]Šn0@ÄfÆ3 BE6ž²z8U³²·–´‰R åuùÃu‡àFwh©X¨×¸£¬ë8Àîæò±¥^^Ú•½ŒúlµZÚw~iÍÅ>;û_ó1Ì\4ï/ò±ÿø+ô(8’Ãëùšåòl³y¾»ºZsëÞú‹ü?’ÝÊ›ƒƒ‡kô´ˆéÍÕv};½:ÿ¸¾Û>m®v7å8~Fël?ŸíÞßn‡ß‡Sýíêþyw³Û>>ößÿ:½ÊÇ +Nÿ£ç4dtÉj¢óT@Áfà¤8h“0}:éYE°s,k&-"5Š`‹ÄiëŒ*7Ö¬ŒAJ<jsP䆚EðC v̱¼¤rð +‡8B! +Y±Ÿàhyœ4¸VçŠmÔ,{!áÓ±
+™Z‹>³ZÍæ`êý¥·¡ãü—òr9n$†hÎaÎ[%ÿ$Îr +ÁæŸÃ¾Em|Ó@ä 4ºTÎ<ºT6¢Îºª5ñaú\tÚ®éOB°8¹ŒØQÅ:ÔÐÏ0ù¾¬kõN‰`OªßªÕIÄ¡ú +$%sA‚€›Ÿç>Ô‹wõp½ä+þØDÆd«v +ÞW+½•Ð\'ît3{Â7c¢ÄHt[1á‚œ¯š<TP‡nıAMy:oz + /ç-›ÊѶõ$îÌÝ®N3Jgv´ÿp§áÓá€I{9Ý*hƒ‚·JxñõvýEgNÞlÁxQ§Ãe-éémÛXœn.4À~™ànþ²ûƒ8èÎëD@9÷=-¶ÅöÖ;X¥s&£ +“£x3Š~Å’9LÚÕ>?6‘Ö909ÓR()9vÿš\쮟b9\8]ƒ-(¾\‹ÏYP +ù\”ÿ„ç³dAêþll6¥“*b²ÕÕŽ˜ÿ +H‰ìWkOÙýýî$…æ¾É';–³X»‚u²Q¡1ÌZƒ5Žù÷9§î<z¦'ÁVv•X+/tq«ûVÕ©S§²os±QÅÖ„hƒÊ¡M±\I>ªÛ裢NÞª“¦g:m~n~ó®¹k´zÙõÿ~:kBl“á¡ mqêš\59m“‚Á”èÄR´*„¶¸,oÙj‡™Ü¦âŠ:2º5ÖÂœ²NW‡“/EÁlK,p¡%áobJÎãHlµqV>˳e”|¶.ŠÏʔڷΤ6é²õ샱[>W1×Æ ]ÇéȵHndž CŽ[GRMëÚâ[mu0K?‰ + -ò'¨§!›à= +îµ´AN^׎ÛØ\Ô.tN¹6ûݖŹJ"kº.ckRícêPÁXL× ¦œ·œ` aËPŒY5ªÄAÚR#5EºySv<Çè;E´èI‹O¯3Z`-o²BEyùÚ$)U:°kWõ
`kœ¥ÓÊ´bûŽ!’äÖÏ©5Â@ÛœŽKïlÌSÚr"#híU×Pºº‡¾“> —cåúyÕDuøLýôg™2Z}ÿu=-5Š¾Ö(š˜³$)eiÀ¡Î_0ì`01/yÛõ“ˆYVNFÊÔ Ä-¤E;Y‚Ú·¦u9Dü0ňr11$h<— áƒz;>[¤/|NEðí‘ø„Ð-@ãY]‹¡§#¡!ó°ÍI?@¦
6W\”âk5LFg©µŽ¦Òn¶˜Þ¤Jk¼/¸L¸³ 3²H”6µ:—¬vN& +‚E"S2š$¥ƒ—ñË(1¢`ñ2†%Ê¤Ø t°H:oôV"@ÐÈJFÕ¼³ +¹n¥ñ•ß€Ë/˜’D›#nù—~rN›#Þ42¨9µ¥9½äî/P
ˆ‹¦ÝkŸ6HX1UG#~/gG‹ºe´R¬Z·J(ÈÂ?5QSÃ\†ôRáQE€¡ÀeŽ•z¢<òCÚI¡¬P—T&8ì0MU/'HØÞ;$!xèsóLŸ£‹fÔá‹Ï//ï®ÏnÒ#Ø +OCRùºù$‘üVøÉf,¡&ÛÌ”ðØqÄ +ö§
Ú»±M™èÉ}»/ꪦf>acoc¶^oËåÿMM|‹¨¿Éà/ƒoÁÙ7;œÀ¨"ÿ‚v˜\mXòW¢^‡ ë—W¯ÃÄ!êõ›Z}¤Z&÷¢V]št˜À~ :P;ü÷DèPôÊÀv6 +/nn¦Ûgf£÷Óñë»ÉÕø¶ïj˜\܉ã÷ü?8I@Yûhïè= +œÆ‡58N}… +穇ux½Æ#•8œ¾B‹\ü¼JH&5ë<ìè¨ÜÃ}OÊNiìËtûB]n½+Õq›žX?¸ø¹ŽSìøÜS${MåÞ—,E +èÈŒÚQð±ú˜gÄjvÆa¢°F}yÛS¾Düx‰·§ˆ|¹äce>œž ôáõ©?\%
V”ôVí«=ÀÁÅ“V€ú®G/Ò8^àõ”E`¸LrmœÎÈ*)H ‡¬Ì±»%T6ÚÙhìo +¤âÞ® +çÿº]3 ;Wãë_³ïÉß¾~û”¨K€‡‡ÃtøüR›ƒOsœ‘éÌåtÿ¾ßF¡Œ“ï‘uºX-o¬ +~Dk´G‹wûç¬tò,˜Nã‹`~‡™åg¸šmQk®ÑÏ +ÀàHAro¶¶>» aòxI°2[˜~æÑ"[PþÉ]´wÛԋߧÉ"˜Z×ó
ó]Û_ÁÖ'‹ErŸŽš-ž_õG¢!pàqŠ(€àžÆeIØ›!ÇWÌþ’þ3oYÅïóöE‡?‚ÛMñ×µ<¾>Ö9ȱìÉ•¡ÙX_xã·ñsÓPc™c…•FÖ7‡=tc<Ô1±ëMƒìà\ïIá»^7ÈMV@Q½ƒ_90ÚÖ¥‚tjæ·ü#e[&\ @st¾8t%m²O©W-vkí”Ó¬SÛúÄ-Jžq¦µ$—ñ-8œni@…(õžŽz7Snza( hÝ<Ô£ è…+]f ‹©‰—]ìé÷§ì†¬ð‚»ƒæ†…3ÚÚ Ò4„0Ÿ:Ã`¶Øx'Ä“œ9¼f<j#ÃOg +Dó¯`¯{Ô|m>Y¼t½óÖÚ;Û_T&c@>”ÏÜp9Ÿ¿ÒW¬4ÌYe@r¯XÄPÑéc_zÊÚ±Öcƒu=[_ÁË?ááç™Ç9³îaö£õ¯k“_¯hüuI„„¼·ÖÑÆè€xˆâ+nšho]ú½ePbm–Æ`ŸN!„5êbêl³ÙcÐàs wƒâ@4øv4Ãð¸C‰ÿ{®’•Få»Ô¬©ç0Á¹ëV„O|Ii}Leó@D7šL–‘ÆÛÍ~rK
Ñ®”׶öZÚÞPÓ¬Ðo•žãÍyñÙ4žáÀ Å…Ÿ'“¥®ˆ÷žÈ{"_méCií +×q…S¿vi÷ùú½cî’Ï'3¬´†b«N¡Œ¬£/Ëèüg¤Fã±Áñˆ®Q1n +B„v +f™t@"d²Ì> Q¼ä
0Éî×:ï^ÎEg‰¯b]ei=@¯‘{\íúÒ“žUEæqÎê‹cÑ}qLð«&[üªe¥Qù.5kêYL¸¾¨„ Ÿø’Òú˜(Êæˆn4™,#m]úf?¹¥†hWÊk[{ mo¨iVè·JÏñæ<‡ølÏp`ÐâÂχ“ÉRWÄ{Oä=‘¯‹¶ô¡´v…ë¸Â©_»´û|Ž] +÷ûN¶>Ç¡^êj;Y¯‡H;‘…ˆ¨€fdag3ÌRG¹h ¿¯Ô Ïûü! +Wè‚™0kö…JîUv0¨<³LRP™*³OBÔ.¹ED²»ÃµÂ»—SÑY¢Æ«XWYÚBÐKä·,‘—”£ ö|F
ýsÎsË¥1a˜Ô—Æ¢ûÒ˜à7M¶øMË*£ò]j–T!$éqÇ@Âc®ãLO:t&|âKJëc¢(›â¹Ñd²Œ´uè›ýÜ–¢])míµæ³½¡¦Yß*=Ç›óâ³i<Ã!@‹?N&K]ï=÷<Nà‡™J-{(]á:®pê×.í>ŸcÂý¾m§©«Ã6²^‘v0âv#¢Zš†M1m2Á¯Ô Ñûü! +Wè‚™0kö…JîUv0=³L2 ™0³OB”/¹ET²»ÃµÂ»—“ÑY¢Æ«XWYÚBЫ䷬’%g’€Þ;v¨t¸H[[J=ß+—Ç„yœ³úòXt_üªÉ¿jYiT¾KÍš*Æó‰'ŽdÐLÀ£³§eò‰/)‰¢lˆèF“É2ÒÖe oö“[jˆv¥¼¶µ×šÐö†šf…~«ôoÎsˆÏ¦ñ† +0\ßʶÑÊ:~êj;Y¯‡H+¡Ng!"ª YØݧŽšNã¿Íï+u +aŸ +j1uýÿ°_Km#Yx_€wÐf+S¦j0ºµ.›e«°™ +\v&•JQ²Õ¶rK%ÉÉûìsº[—n[Æ&3žØ`u:}®_Ÿc9|ÑÓpwƪa›¦ñøÎmg¬Ò;ÍÙà–WÆʶ<²¤j‡&W×ÑÏv` +zÌÐ䪮£ëOº >Ý]‡)ΔŽ—¦8¤¸…ì&É*iíAëy¹ß’,¦–›E¦OÂ`B ÃLäËÑ0ÍVLûÿìt>_©¨](ui¯]}ûiŽ*¦»g72ì¨\Óƒ-gí]Šl$E´íM´šÖÓnm„íuø…&gôÞáoàÁ”ªÀ6Ø»{‡ç$úFòƒ¡Í#°75´y[vx< ÍKX“ÌKèeÞàîIžÈf/2 !UÕtåÝÊYÿ#sÎF‡WýéiUjš ÒcovDüibÔ_ƒ¦ô— ©d0…Þ%“¿6U%ºë'¼%3¯¶XRƒ¿ÄÐÜô‚BÐ §£€À+8Fc^8À>Ù¨+w¬:ß]öo»ÿV¤Ñv™i¹¦ð2¦©9ÉUc4pí?âǪé%™Ûéb8Òìc$n•£èì‹òø*¥Å»Åfý«¥dé]ÉæÃßI0ˆ|Èü$ #*0Cïž?î/º€l¤êè¦e»–c°/ª®Ó>ÓU5ËTÎëo&Æóß`çQ—šõD½Ò*s·dõ‹_qÈÙà÷] ä‚íЛ–ªZ4þMMu5wÍéPÈg"¹Ëá0Å™Òñ²ñÃÄÆ·Ó$Y%™=èe=/ò[’ÅÔr³ÈîILèÂÖÔ‹µh˜f+æùŽÁw®ÂÇ %ºðËZ‹Vß~§·›é>'‡¯Å6>è\®<‘R$L«¿§æøÖ²¤ñ;! ¾Õë +Äp}z“˜HÓ,øbÈuèà 7m]u¬ü¼üÔ¦é8†¦+Èmµž0L=_"¹›n¶"
êboë\SLŒ³ö~Á9wÍ^iÎmGa”(§^8Ì"‚·jÒÝtóºjª>¾/1¬d«Ø´»êA³é]`XtÔTjj6B”N
ýÉü°9Rдç`…Ÿ=_–ôš³¯ÐþÀÔØ—¦ dmUê<Ë…ò³§N]¾è*ˤ¹&åÃmº®íBÆØȵ¶)c +gìz͇ãíçRžµÕìôŽ}/†‡›8œŽrÓ“Ó}vÖ5Žý¨•³0œ¦YâeQÒô⺠+¬‘Ÿ¤$“ø/á…~%å‹×’Ì$ʼßtáêòJ3øÓøôæ7 +ÿÄ^ÀšT^o¾—ܱީi£b-Š½ØMÒdð€?µ§ø3„IÞKòÃÇQò]ZøŠÖ‹YÅB?œ&¢zýøËiö'cÜÏ°êMÃì‹@º½`‡%éÎD·çùÊáÔòpv€ 2A™×ÇgîÍoÄ?N2v\JW]¹ù‘N而ørCŠw ÷†A†)Ñé3Éô§ñ¹»lŒ{¿ÐÀ\¥{³«{`Kãã ÃÂ"ÍPð,Üù¢ÆìƒÅöûës¥‹ý,®_ã0„"£[ÚÌÖ;,H¹£ +;í{¯ØФV8ÅåñâÆ{oã†Ç÷š¢ÛM~™Úí#XyDÇ”ë#WUÎák¡-C9(—u¤Î¥0X:?ªPEJ(‡ “Q¨4A…ÐSEŒæ„%ùÀ¦J÷™nEÕ/•/@ºàÐ#]Í!ÒyM$bP=Æ–@6ªQ›,…OîÓYø”yÔÈý_Øev–.3¤³óòñ¶è‡«6Íç¨Å馴~µÇ`Ô¿sÆ(f +‹V…Ò +ÔòLjç{jÀõp©#þGÀñtÓ)RG•¹š \••rÌRk1OqUñ0*iãÁ5¬(qHNMf®.•µU—’ÖšeêуuŠ4E¤™Ç«™;‘aM*ÕDÅÙ¨JSök ^De YªèCT +Φ[#È„Vko_IzëùXÉ"…_ËäÈè\JqÏ´ÆT`Ž€¦deÕfñµB{Ñ0ã‡*Ÿ‚¡÷âRÁuïTvŸàÚ(¥7%)^®¤Œ®U±Å1´FÜœ¥e4t:V:¨™}émþóYõE‰g^àäÕ +›éq„6 ¾ îÎêËïÍÙ;ÌÊ9Q…¡U_Ø;VÍ+VÙnÕüŠ]ñÞ‡˜÷Ïl§è / Û»z(x>¥DS_ÚQBp’*`O5øCg;1ÌWû´Ã(QN½p˜E¸¡qœÆ0³äìlËÎ\Úµ×(®©|«w?éG!óªãàŽRIã-ö²1X°„G@„Ÿ@=P«Cy«å¶ނ¦/íqi°gøJç>ñ&°ß…©£Ï\ÀlPŽ“„>q@kQƒÅ–äŽ>‰Ó 0ò‰—y{¯o‹g˜”è“0òÑç«÷"×n¾QLBÛÀVIПf8¥Ó@AEo3"Ö _@
ÆAè''£+‡gà™r—þÉîcÌw¿ôæ«—¤o`öìt2’¡_=: +q,]OàÌ–k’JO[êB«o¹cBZ1þ*ž)¿¾¬]ý€ø ¨¶‚m=œ}`F,·OD¯)üOô„ö 'æMúS€ +H‰ÜWín¹}‚¾¢…ldI±³qòK¶×[µvì•œ¤@¶83”ÄŠCHŽlåé{ÉùâŒf8㤷M +Þ€Å%${õœ&~¬Â]T9Ž¥–7„,Ûï/¤Hf’à„bG˜z4FÅÿÉhlÿ¡qñËäìð·ñè…=fÿU™Î-_3䆾~õæUil‘½ÌwX-Ëp¼>=}uÚéš ô܉”CQGˆBá`M +®÷cØÄA¬º`§6Ä#F[QF +§§æùÛT'©†¯ÁÅ;iÛ›™¡w‚Ñbj
naþíÅW`ÿLê!·×eR¬¸i;y†nˆÚ …µ˜~µ%š>ûŒ¾0~aÛ¡Qg®±OÅ…'WY(áû;£Dt%%NZUš›À*us3ïfØùcïfÎ,
ȈMF‘¡¹àªŒ|ç³yJ‰úʇµ¿zæ!Š‘mØó*€®h¡‰Ú¥iñú¯ï»ëõi³¨zÄtÚQé•ËOuk´~K1£z?äÕº«Oyô.W´³PŠ +Í’è[ÊhD5¨Å¹$ÓaÖ¹©Im+}飑߫0ã×_ТÜ\NÎrÕ;)ËÍxD_f{ïpfÚÑ߆¹‹MÎÚ‡4ío°ô6z,Üö~Ðæ
}Šø°£ )z¸6ŽDvú€&[JòÍ4¤ãqùšÌ–Û9¡tjud@ðBaR9dúÏT>:~Ïû'Xå"8R¸mK+”™Ê‚Ÿ<µÂ8"3>H\óüGnšçËßT>EòŽ÷[àߎnø êØWt%?ót©gfFÀ÷T—L½£)>¤ÍŽÇ05« +œm¦Ã&ÃÊË“FÙÆG†¼©¥¨V\³#|÷q@Ó¯]I®ô•²¡ÎÍ4E—ÆSCîÞQñü&yeËm›9[BG)4=“
.X1«hù
1ªj<¬0 jžmþ¶öYnVásþóÏ8“!¹äË#\ñt˜««ÓŠÕ2ÒƃžbÁñŠ›e};p“ëA˜^eR0;æMéâÔ±Ø%¬Pþ<˜îäÆÐÔb+!``€¹¿ÀÈÍòa!µšÅ‘¡§ko.‚')ýæãS^â†É¾˜_2údóå»)@d;Â…Ù×õ[ < +~¹¾ýÝËÕFPþüI¶¾EåÒ{cï"îJøm 5Y_Eµ¾šôÓòisÙßxê†1º—È
Ps÷3p¥Rã§Ýkôáþæ᥹;hþ ‡›°Xkƒ‹ýæ%EI ]¹–öêjU›B×ÜP¤©•J…ˆÁë© Ú…¾,B{,Þ,K„²5©(ŒU×¹Ÿl:· +%¥Ö8ÆVå:=î¿Ê ŸÛ«ÇƒÞ¾JçUK‚+¤8-P³q6G‡jÎþ&ºˆÇ3X}ƒXUtýeV¼wtÚV Âo +†’ùˆÁ¦"Z=>è|êP„5ŠÃšJB/Öõ=BH¶ñ¢}‚C"К*2 Ù ++uþâû61þEZ@aËöÊI•çœÅ¾üH–€=E7çF‡àø…+ß‘útS]„M¡ðä¦ÍIö"÷hêœE»OJ¯qqîÝ]Æ<DUt² C&äo® +g[Xµ‹NRì‹xD°ÿ–ê;~ÍD9ˆ>äÑÆ¿+€È5ûjþwiˆ‚ãmÈÆ:“¦ƒ´ÂôÛž²L+:|¸¾{y/×ç‹h+KŸO†Ül•ö†DÓ‘'òÀI*ÀÜõ&—Áƒs3$qTÕMê·Âí)‹xïÚ‰»®àyJº—™Ü¾€'˜¼ÍèXJ +ã_°ûã4År˯‰æ€G‡H4 ¸ˆôÁ¤X=ž'µRî+y¯EÌäú¾ñ*7ÎÅNZ±ÀãîÖ2Äçm¨¨á+(v›_rEUª°‡¹vW»bÀ +»°GOïš
–›¼Öeöìkæ14ü@NzE¹Ô®>ùjÙ+±ÉŸ*³ãµõ³<ÛQ{vˆþ>;ü>9Àîâ6;@0–}íÍJÚ¼vjÄVÕ.h›õ/÷Û‰øŸîïÃУ‹¸†œ…®µut”rÅÐÖíºZ31n¾# ¿
Ñ€qȲõéqú£kÛØö(ÉW°ÿ§É‚ IüÆè¡yJ[D‚9¬ –‡ Q«øÕ%ù®ÆV¢½Æꑧ‡YdÒ>jdãcvÔ±ûTˆ~ 4áM7ì„aÎ_“óΟ† +Ÿˆóܹ +¡_—èB0ÕG%ÿ@Hw{S˜ô™ÙqlZí€V*‡ó!–ÂÎu) +±žO
b®º©ió~Dqú.»BÆñhí;’;êjXD²+×Gí0"ôéG&L½W±§W¿ð¥^xaÙ4Uª.ÐbOx:ú7°|m·zðï•„“uÜÒ©WÃn¦#.úªÇ-’颂fÞƒ.O¾YÌ+lÚ:<Õ ¿:¼™j68@¥¼ZµH£åÇbXvc†oÚn€vÜÀüRLa>-5Ž +SÅñÂ?Jݹ6u.
RÁ–¶üÙ@,¡Õ{˜]Æ€ùa†ß½DFضþ
ΉN
3”%lÔëö\‡Ë„”GmÎÂf¿èIHbwaÏÓëAÕŽQ½ÒÂ5äÒY®¸¨Ð=zÑ´Aðëa°ô + +ÔÖ¬¥jÓ$qÄ^A‚
Š9`”àþ0wí“KzþÉ}kÝnJÚÖ›Ò'* ¤fDO&‚“„íjò@{闳ʶº±»”£ µÚØõ +ßš©òuZŒ¶•°·Q[‹SâòêéÖ•}1véDÙi"Ù¨Õù–ÖŽ¼ +Jüö›3È–°‡*$žTôï Æ°MÈXeQ¶ÿ ècp.ÎŽyÿÿ¬“œ¡8lÂÞç´ôÆ,î#SíÒ›ÄÃ?³ôÝËMuA‘Ç +Sà±éÞ°FâÅYx¿í\ÔÀ¿š×òŸ¬ic¿í½î¾áƒBÎ÷a+µK¨ð•cŸúÁ¼”¹ÄTG3
OF‘½^cÑ[b2}k)¥–‚…þõ>¿æÁÚ}8tÝHvªvòRº¤ðX ì²+@ãìM0#_šªá{Æ%ê9DÁĦ|Ìå:ÒáN)ÈS¹óEðS[0t…i—;{º6T*OhÉŽlÀÏ?‰DË*ÐÇ H2³šó_¿Ö¿¥a¸Êçñø2ôcε”ø¦¢z-M¨7Ê•anƒA¤™ó¯)ØÈåú”4gßA«¸sóÄ^wâºqÖ]¥¯<eB"X¼9€¤Vƒìú‹=a¾Î©Lå¬Þ¹“"ÉS˜n¢yvºCÞMpž`£âRìËÑTsI:¾…umšò”?`C²ÿ+gЖ‘±z?!MòAŒ4^Ô™±ŽÃåGøÀW@?%°K²~Ó <E\Áµ4iabv'¯lhmØ„¸ÇZYØÒ|/ÙÍ,›¹kóÍcyB¦OžÝ£,®9\lY$†Â;|Ùß%ÿš,ÐÞÁ2–>y‹hÖ]6¡ÛÒù\o¬NŽ¼·Ï/™¿ƒsµpI?l'¿ùXŸPté$Gzs˜‡j¸/z=±d»¾B§¶ ì»W¤Öh¨ø.‡¬7¸.VÃäçIæ
IÀŽr‚yŠ}_5†ýÕÉÇ¡Rßù»(X²Õ_Ë +RN¨#¾Ô÷PôÅYˆu‰sÍ6¢jù¨DG‰b‰Oæé.÷8’x|’íŸq&ÙÕ»@FŽÔ#ߨdŽ?žÎA¾þ1¯¡á¦žß‚Ö +~ü°¤´ë=ŽT‚è NPî65ôXSPŠùÁ….³n©AÑq¿œ•½(Ènv¬npº—þÒVÜðî.˹»/óJä nD}XÀ(Ò^ør˜¡³>ñúÉdštG‚â0j°ÿŸ1*Êî?Ôwké¿îŒ;Ú•>ÿ!J[~«™¯3D× + n. +/G÷Âñ[V"âEPôItW(wC8º[{Yq«“ê&궄´›?.'üðÊåì>¯þû:Á9¶¬‘^V…íõ358êKŠZ–ù¯½0äÿ£\m®¨úþþêMiPi4RqÌ»åÝšhÆWÉPq¼‰’ÑP;®…Qѱ\/ÃܽÛ/ÍeŠC¥Ú˜Ú±îíç× 9'…›•åû‰`êy„ˆâ `RwÌ!Î4„w{`Z}FÐ%3@Âí7!È6MFó¿†)èÅdZnƒÅ±G6«SN1) è§iŽXq"¨ëÈi%ëK´1’TÈoJás§ùôœ–©zî5‰Óظ*ͦ$;å&C._ÊPÁRR0(Œ¯ªÁ>àµ0wu‡"L+íSKLû –,IYy á
t7Ì•É)NÓñˆ‘[ŒÒÈ/æ´Òœ”s`îÔ%T¨!˜æ¸¶/ì1•SµXê'{ +öÅšJÁâôéÅ›LH.Mv¡î+éëŸè'¨%¹ùœƒøšð¢G¡]A×d-¼;Ckd çýɉu¡ö +ìz«u¡¾¾×Èñó9çm1èˆ{Êå¡ç¦Ç +4YÅŽ—5 ðûùZ|f¡íBu¹èÍçŽÐù˱¡AÕûåÑ×Ã$¾å ÐYŠœËß„3´s8Ÿ^Ò)Æ
»l4À:!èdDV÷§¦#4Õ!<ÈÓœ +aX’GP +nÝø-böM? ÖVH(Òpëæå3kZmKx_<›:äëT«çF²nýÄÒ¶oG¡ýµ8ý¤<™‡ˆ6Íàd×UŽ
%¨õÝD¸uÆfò׈9ØWè"éƒZJ÷\‡ZcºÜ3;¹Âö5XR/‡Z›t¬ðú!l-Øׂ5fA¨µZjox¨µI=<b%„ö2k¼NVóÁ«ÏÖf
{rÑ°V"9û©¬Wµ`É´ÇäX¸oíÀ*ä¯ú³B¿UëÙhG¹e\—ž²(wô_£ŸÚaV¢™ž€ó0Tõ‡„Ù~E}¼jýÛ{Ó5Âàûå«òIÏw CÏAŸc©Ç +^6OÚÙP;»m§ô±o ð>s7ž7ºÏo@<U鲊¹•<.ÔÄjšðª}λ346™B¡à9P¶zìÞWÓBÕ+ïÝÞCcŸ½Ã¦:åÁt‹a^ªUÿ7(c¯Zýß<}[ ‰Ö½Þc-ÎÓP¨VýC Õÿ„_,¾Î¡P`9‡ªÕ?êBÕúçìk‰ü +Ú¡P¦0¡êÙ·`ÕšbhÙU>}Åk¿ŒT¦ÛÓŸŒ[\NÂýÙ‡ŒLxÕ·—ߎ‹ïŒ¼3Ô¢|ž•µ|8º+ÿINÿ–ý@¹‹dˆ6x²øèÞ› ›ÂÙ¿—
ÁtMRƒêBç@î|›Ñ¯MQH×}m…tíµ®ªdÆ”&_¨¢Æ#Ü
€V_·Ú¬8—?냮SÐ7Ù+Gw<‹ÞýûŠÌswpÁ`V¥ÔîÝ]5‹šòkKuÁL-h/ÁktôºÝã;º˜5€ìÑ ÙŒ£¨öPòÕÚ%9-ê˜nØu¿¤å©ÛÓx‘l¨ñôßf险¢…¨åüR~þ]ÐÕ‡±ø˜ñG þ¹PÓCíÝÁëþ
<¿ß?ïÍ¿ ‘cNªÅëèÁúóýµüÔ;‹?Ö/&£‚åÊõ'é~
V–ø«Ì2óÊr#ë™U›ýü}ä㊛©‘Éÿ:òtyšnþ:î.x°¬Òx”žEÕ*=Tz\¿KÝê¬!Ýð¶dK +^.ò3ëõçߪƺм·Z30Wpø\ÅãRʼ·æ%Ýù$µ¨ÁÒ_qðì!W+àŠs`Ñ'ÿQŠ–_sü‚wp-üŠ³—•ìÏònºaðÊ5LÂüì*ƒè±ƒÍò…"ਠ*ÆÐã¢Ã;ø’|6ðÇgÐ +]f‘œî˦ç´jåºçôc2Fd—^Ib*
/Ë@Unôh–ERꋤ[ú½4• +47ç1á=¹Š-:ùçBx¤‹aò7$ +Âœt4;¼èíB +¶ïv3yIvÛÛ}_®åÓ²»n'ñ+ÐE„z™ÕÚsð5Ïãú¶Xž›ù‘*¤N®Å½Daªg3[²TÏæ´îJ
a*Ö†OÈ=ågë~.÷¿H%M>^õT‘…úëÙ¢”Ë5µú++¼ÁŠ÷›Zê‹7,øã;|ƒ•¢ÿt¿éÓ‘±ÏÁ,Æ$¼ng“,–}DNõD¦3ZIiNÄÖr9Šl¯®§g§ŸzoÒËÂéÁ7kµ*ZB™·ëq(=xh†2_K¡L§Ü!‚ãŸF¡ôüåþ ÄðoÏCéÆM~fKßÊQÚИ²óÓxF+|•IÜÍWVÁ\±*)ÅÑ¿uÙœuÜ>+eÜ}å\ïø-žÏ7«Õ—p½÷ü…¾Á &ѱn®6Ù;/Ü£©/Å?×£„“ɳG‘Hÿã¿;ù£‡£_à£Vøü¥ +&)*¬¶B1ÏwálS‚8-·£/ž»kð¶¸-e½w½n¤N¯âç2·M^‘úº€êïÞ]¢›’³/[IMKmà°}ë†9G];·\×ç¦R¤¯ µ˜5"ôž°O©”÷+¦„ +ÔŠ=G®Lš¿!È™z0éçÆ.íàë´)+
3ÌöM´´LD]š{‹Í®²1èE(·®þUÅìª$sN&õ\X¾zõÁKx%µº1Æ’oµ©ß§Þ"ƒ…aKÌx¥ušú!Mr³y¡lìƒ-ò±ðá™»iq)Ô¼#'Oνd+¡³wZ +ë4®¹ŠÇNž„{½KÎÉý]e äU\k¿Ê¡HêÇÒ5„ÓI/í|8R,bŽ×sÏ×ãDzwu/%ô¿}n|\3&9¨h¶5ìòF’k‚qJ|ŸZ¾¶K@êîëñ½â£I*ßÊ5
ÉÀ"P„ðÅÐËù&Uƒ)©4w‹9IÍ#PRg´uZý£lO·rKsãBÁþ•ªƒ=uÿS³ƒ+j?wÆ';ÁüníÉZj/ç$”ËÉûóŸx}Ä +“h¼ý·ã¹v¯"=FÛ 1[NÝA+Ö†£ÝïtˆÛxUšœÛÍ`£ØOpÙùU¿AµÈCÌa¾B +øó¨Üî¶Æ±G/>ŸcïO[û؃¦/Aø…ÈÏ&ã¾ú@0L§Ór[‰‡åömÏóþúâZùZ¬O-ßÝヲз5ö0ã•aj¡r.¨ Þ¹ˆ[ç•ÂGV,ÑGVµä†I‰šä—
ä™4%§’í”.°l럫€…,Þ[k©šïàÇ.t7ÞÛwн\ho¼ê¤D)U®{¸ûûã4Ï©GÀN xÄ£0HJìý‚“*êROJü2û«˜§CÝ”ì‹O•T={·#NëPË’8§åvôÅ
±èðÎLrÓq3Öüýz.™±–ô7c´tnð“12øR +CN8ª> +‰97L³¡dcìNÓr7Ú¤ŸÙú¸N‰G=ú¥%d¥Ýç.ÞÙÎ[®åÖÕ¿ª˜])씘¡B=–o—‚:žÅK¼ƒ%³C>n”òR´¼<T÷\€…aK˜ñʘe°p¼pþ“Œ÷N¦È¼Y.U¬ó¼YîzfÙå1ñ=³\ªöSa0La¸‚?ºü¡!! +:û‹I1(
¨<Jj‘ØI˪¯h'$‡Ùv²;É*'PI¹ñ4u²î"ùFBŽaÁ[ø´G×õ¤Ã³/CÀ½’ô‚“‚B~¡Æð!È®›½7³]Á©>†À9† +{Œ;†½™ê +Ø8ÄÛŸ^d6šù\§—'áŇãÃT¯¶Œ°’S»bR;y…h4jo#åS}âG%¬C¿yM¤íNËçûïîä€Z{¦J'½+£—‰S+m˜ü=ÄÜ@þ +©ð²2šTH°.|œJSN±=_¥C³Ï +Š¤¾[à„Pg^‹ð$—n¼‡`ò[` +FáÍ䆤ùê§)nN_ùy6¿›ao¶›üh6 +ß²>W»Èo
÷ÞôšiçAþô/ªœîC*…€¾N,Ƭé[¨S¦@õÝÿϧ©“ÍÈ*ßìF`‘k”H2mÄS +”c䨤Z +/+£ékeÂ+F*¢ª~¹ Qq¿<#î¾ë€áGW‚vWÒ•£N6ÊÛÉ—P*\x~ëN´’œå¢HÉ?/IÄŠˆ¹tÃèÍXðÔª•›¶ý[P29‚‘$¢ör¹\‘#ÌÉÊjFµ÷ŠƒšvP+«7#·åFïØ‹2êlK^™èC΀ES†œY0xÝŠ +Äa : +èP÷ÜÍoæEûõlCº%7LåfOì +0000000016 00000 n
+0000000159 00000 n
+0000060423 00000 n
+0000000007 00000 f
+0000196234 00000 n
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000196304 00000 n
+0000196335 00000 n
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000062176 00000 n
+0000196420 00000 n
+0000060475 00000 n
+0000060833 00000 n
+0000060967 00000 n
+0000062486 00000 n
+0000062363 00000 n
+0000061752 00000 n
+0000061033 00000 n
+0000061191 00000 n
+0000061239 00000 n
+0000062000 00000 n
+0000062063 00000 n
+0000062247 00000 n
+0000062278 00000 n
+0000062560 00000 n
+0000062920 00000 n
+0000063884 00000 n
+0000076980 00000 n
+0000085628 00000 n
+0000099054 00000 n
+0000116678 00000 n
+0000132569 00000 n
+0000136366 00000 n
+0000146460 00000 n
+0000172646 00000 n
+0000180842 00000 n
+0000196445 00000 n
+trailer
<</Size 57/Root 1 0 R/Info 56 0 R/ID[<B8CF1A649DEB43E8BF5AAE2DE90894A7><28AD0D6C5C9F40C4AFA908E0A84C2F9A>]>>
startxref
196623
%%EOF
\ No newline at end of file diff --git a/chrome/app/theme/menu_overflow_down.pdf b/chrome/app/theme/menu_overflow_down.pdf new file mode 100644 index 0000000..a2082fc --- /dev/null +++ b/chrome/app/theme/menu_overflow_down.pdf @@ -0,0 +1,1527 @@ +%PDF-1.5
%âãÏÓ
+1 0 obj
<</Metadata 2 0 R/OCProperties<</D<</ON[5 0 R 29 0 R]/Order 30 0 R/RBGroups[]>>/OCGs[5 0 R 29 0 R]>>/Pages 3 0 R/Type/Catalog>>
endobj
2 0 obj
<</Length 60561/Subtype/XML/Type/Metadata>>stream
+<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> +<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.2.2-c063 53.352624, 2008/07/30-18:05:41 "> + <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> + <rdf:Description rdf:about="" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <dc:format>application/pdf</dc:format> + <dc:title> + <rdf:Alt> + <rdf:li xml:lang="x-default">MenuOverflowDown</rdf:li> + </rdf:Alt> + </dc:title> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:xmp="http://ns.adobe.com/xap/1.0/" + xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/"> + <xmp:MetadataDate>2010-04-20T11:15:53-07:00</xmp:MetadataDate> + <xmp:ModifyDate>2010-04-20T11:15:53-07:00</xmp:ModifyDate> + <xmp:CreateDate>2010-04-20T11:12:45-07:00</xmp:CreateDate> + <xmp:CreatorTool>Adobe Illustrator CS4</xmp:CreatorTool> + <xmp:Thumbnails> + <rdf:Alt> + <rdf:li rdf:parseType="Resource"> + <xmpGImg:width>256</xmpGImg:width> + <xmpGImg:height>208</xmpGImg:height> + <xmpGImg:format>JPEG</xmpGImg:format> + <xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgA0AEAAwER
AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8Akv5p+Tf8P64bi1TjpeoF
pIABtG/V4valar7fLJBDCsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir
sVdirsVdirsVdirsVdirNfys8m/4g1wXF0nLS9PKyTgjaR+qRe9aVb2+eJV7Z5s8uWvmLQ7jTJ6K
zjlbynf05V+w/wDA+1cil8y39jdWF7PZXSGO5t3aOVD2ZTQ5JChirsVdirsVdirsVdirsVdirsVd
irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVV7Cxur+9gsrVDJc3DrHEg7sxoMVfTXlP
y5a+XdDt9MgozIOVxKNvUlb7b/wHtTIpTjFXlP50+TfWhXzLZp+9hAj1FVG7J0SX/Y/ZPtTwwhBe
OYVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir2P8lv
Jvowt5lvE/ezAx6crDdU6PL/ALL7I9q+OAqHq2BLsVWTwQzwSQTIJIZVKSRtuGVhQgjwIxV81eev
Kk3lrX5rKhNpJ+9spT+1Ex2BP8y/ZP398khj2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV
2KuxV2KuxV2KuxV2KuxV2KuxVkPkXypN5l1+GyoRaR/vb2UfsxKdwD/M32R9/bFX0rBBDBBHBCgj
hiUJHGuwVVFAAPADIpX4q7FXYqxb8xfKCeZdAeKJR+kbWsti52+KnxR18HAp86HthCvnB0dHZHUq
6khlIoQRsQQcKGsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiraI
7uqIpZ2ICqBUknYAAYq+j/y68oJ5a0BIpVH6RuqS3zjf4qfDHXwQGnzqe+ApZTgV2KuxV2KuxV4l
+c3k36jfjzBZpS0vW43iqNknO/P5Sf8AEvnhCC8zwq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY
q7FXYq7FXYq7FXYq7FXYq7FXpn5M+Tfr1+fMF4lbSybjZqw2ecb8/lH/AMS+WAqHtuBLsVdirsVd
irsVQmraXZ6rptxp14nO2uUKSDuO4I91O498VfMfmLQrzQtZudLux+8gaivSgdDujj2YZJCW4q7F
XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUy8u6Fea7rNtpdoP3k7UZ6VCIN
3c+yjFX05pOl2elabb6dZpwtrZAkY7nuSfdjuffIpReKuxV2KuxV2KuxV2KsB/Nzyb+mdH/Slold
R05SxAG8kHV09yv2l+nxwhBeCYVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs
Vdir3v8AKPyb+htH/Sl2lNR1FQwBG8cHVE9i32m+jwwFQz7Al2KuxV2KuxV2KuxV2KuxV89/mn5N
/wAP64bi1TjpeoFpIABtG/V4valar7fLJBDCsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir
sVdirsVdirNfys8m/wCINcFxdJy0vTysk4I2kfqkXvWlW9vniVfQmRS7FXYq7FXYq7FXYq7FXYq7
FUn82eXLXzFodxpk9FZxyt5Tv6cq/Yf+B9q4q+Zb+xurC9nsrpDHc27tHKh7MpockhQxV2KuxV2K
uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kq9hY3V/ewWVqhkubh1jiQd2Y0GKvpryn5ctfLuh2+
mQUZkHK4lG3qSt9t/wCA9qZFKcYq7FXYq7FXYq7FXYq7FXYq7FXYq8p/Onyb60K+ZbNP3sIEeoqo
3ZOiS/7H7J9qeGEILxzCrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVex/kt5N9GFvMt
4n72YGPTlYbqnR5f9l9ke1fHAVD1bAl2KuxV2KuxV2KuxV2KuxV2KuxV2KrJ4IZ4JIJkEkMqlJI2
3DKwoQR4EYq+avPXlSby1r81lQm0k/e2Up/aiY7An+Zfsn7++SQx7FXYq7FXYq7FXYq7FXYq7FXY
q7FXYq7FXYq7FXYqyHyL5Um8y6/DZUItI/3t7KP2YlO4B/mb7I+/tir6VgghggjghQRwxKEjjXYK
qigAHgBkUr8VdirsVdirsVdirsVdirsVdirsVdirsVYt+YvlBPMugPFEo/SNrWWxc7fFT4o6+DgU
+dD2whXzg6OjsjqVdSQykUII2IIOFDWKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVtEd3VEUs7EB
VAqSTsAAMVfR/wCXXlBPLWgJFKo/SN1SW+cb/FT4Y6+CA0+dT3wFLKcCuxV2KuxV2KuxV2KuxV2K
uxV2KuxV2KuxV2KvEvzm8m/Ub8eYLNKWl63G8VRsk535/KT/AIl88IQXmeFXYq7FXYq7FXYq7FXY
q7FXYq7FXYq7FXYq9M/Jnyb9evz5gvEraWTcbNWGzzjfn8o/+JfLAVD23Al2KuxV2KuxV2KuxV2K
uxV2KuxV2KuxV2KuxV2KoTVtLs9V024068TnbXKFJB3HcEe6nce+KvmPzFoV5oWs3Ol3Y/eQNRXp
QOh3Rx7MMkhLcVdirsVdirsVdirsVdirsVdirsVdiqZeXdCvNd1m20u0H7ydqM9KhEG7ufZRir6c
0nS7PStNt9Os04W1sgSMdz3JPux3PvkUovFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FW
A/m55N/TOj/pS0Suo6cpYgDeSDq6e5X7S/T44QgvBMKuxV2KuxV2KuxV2KuxV2KuxV2KuxV73+Uf
k39DaP8ApS7Smo6ioYAjeODqiexb7TfR4YCoZ9gS7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7
FXYq7FXYq+e/zT8m/wCH9cNxapx0vUC0kAA2jfq8XtStV9vlkghhWKuxV2KuxV2KuxV2KuxV2Kux
Vmv5WeTf8Qa4Li6TlpenlZJwRtI/VIvetKt7fPEq+hMil2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2
KuxV2KuxV2KuxV2KpP5s8uWvmLQ7jTJ6Kzjlbynf05V+w/8AA+1cVfMt/Y3Vhez2V0hjubd2jlQ9
mU0OSQoYq7FXYq7FXYq7FXYq7FVewsbq/vYLK1QyXNw6xxIO7MaDFX015T8uWvl3Q7fTIKMyDlcS
jb1JW+2/8B7UyKU4xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV5T+dPk31
oV8y2afvYQI9RVRuydEl/wBj9k+1PDCEF45hV2KuxV2KuxV2KuxV2KvY/wAlvJvowt5lvE/ezAx6
crDdU6PL/svsj2r44CoerYEuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV
ZPBDPBJBMgkhlUpJG24ZWFCCPAjFXzV568qTeWtfmsqE2kn72ylP7UTHYE/zL9k/f3ySGPYq7FXY
q7FXYq7FWQ+RfKk3mXX4bKhFpH+9vZR+zEp3AP8AM32R9/bFX0rBBDBBHBCgjhiUJHGuwVVFAAPA
DIpX4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqxb8xfKCeZdAeKJR
+kbWsti52+KnxR18HAp86HthCvnB0dHZHUq6khlIoQRsQQcKGsVdirsVdiraI7uqIpZ2ICqBUknY
AAYq+j/y68oJ5a0BIpVH6RuqS3zjf4qfDHXwQGnzqe+ApZTgV2KuxV2KuxV2KuxV2KuxV2KuxV2K
uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV4l+c3k36jfjzBZpS0vW43iqNknO/P5Sf8S+eEILzPCr
sVdirsVemfkz5N+vX58wXiVtLJuNmrDZ5xvz+Uf/ABL5YCoe24EuxV2KuxV2KuxV2KuxV2KuxV2K
uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVCatpdnqum3GnXic7a5QpIO47gj3U7j3xV8x+Yt
CvNC1m50u7H7yBqK9KB0O6OPZhkkJbirsVTLy7oV5rus22l2g/eTtRnpUIg3dz7KMVfTmk6XZ6Vp
tvp1mnC2tkCRjue5J92O598ilF4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX
Yq7FXYq7FXYq7FXYqwH83PJv6Z0f9KWiV1HTlLEAbyQdXT3K/aX6fHCEF4JhV2Kve/yj8m/obR/0
pdpTUdRUMARvHB1RPYt9pvo8MBUM+wJdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV
dirsVdirsVdirsVdirsVdirsVfPf5p+Tf8P64bi1TjpeoFpIABtG/V4valar7fLJBDvys8m/4g1w
XF0nLS9PKyTgjaR+qRe9aVb2+eJV9CZFLsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd
irsVdirsVdirsVdirsVdirsVdirsVSfzZ5ctfMWh3GmT0VnHK3lO/pyr9h/4H2rirvKfly18u6Hb
6ZBRmQcriUbepK323/gPamKpxirsVdirsVdirsVdirsVdirsVdirsVdirsVdir//2Q==</xmpGImg:image> + </rdf:li> + </rdf:Alt> + </xmp:Thumbnails> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" + xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" + xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"> + <xmpMM:InstanceID>uuid:3d0954b8-243d-5c4a-b03e-6aa04a51b742</xmpMM:InstanceID> + <xmpMM:DocumentID>xmp.did:F87F11740720681194DFF4A5DEFE0840</xmpMM:DocumentID> + <xmpMM:OriginalDocumentID>uuid:5D20892493BFDB11914A8590D31508C8</xmpMM:OriginalDocumentID> + <xmpMM:RenditionClass>proof:pdf</xmpMM:RenditionClass> + <xmpMM:DerivedFrom rdf:parseType="Resource"> + <stRef:instanceID>xmp.iid:F77F11740720681194DFF4A5DEFE0840</stRef:instanceID> + <stRef:documentID>xmp.did:F77F11740720681194DFF4A5DEFE0840</stRef:documentID> + <stRef:originalDocumentID>uuid:5D20892493BFDB11914A8590D31508C8</stRef:originalDocumentID> + <stRef:renditionClass>proof:pdf</stRef:renditionClass> + </xmpMM:DerivedFrom> + <xmpMM:History> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/pdf to <unknown></stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:D27F11740720681191099C3B601C4548</stEvt:instanceID> + <stEvt:when>2008-04-17T14:19:15+05:30</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/pdf to <unknown></stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/pdf to <unknown></stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F97F1174072068118D4ED246B3ADB1C6</stEvt:instanceID> + <stEvt:when>2008-05-15T16:23:06-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FA7F1174072068118D4ED246B3ADB1C6</stEvt:instanceID> + <stEvt:when>2008-05-15T17:10:45-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:EF7F117407206811A46CA4519D24356B</stEvt:instanceID> + <stEvt:when>2008-05-15T22:53:33-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F07F117407206811A46CA4519D24356B</stEvt:instanceID> + <stEvt:when>2008-05-15T23:07:07-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F77F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T10:35:43-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/pdf to <unknown></stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F97F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T10:40:59-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/vnd.adobe.illustrator to <unknown></stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FA7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T11:26:55-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FB7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T11:29:01-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FC7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T11:29:20-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FD7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T11:30:54-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FE7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T11:31:22-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:B233668C16206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T12:23:46-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:B333668C16206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T13:27:54-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:B433668C16206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T13:46:13-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F77F11740720681197C1BF14D1759E83</stEvt:instanceID> + <stEvt:when>2008-05-16T15:47:57-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F87F11740720681197C1BF14D1759E83</stEvt:instanceID> + <stEvt:when>2008-05-16T15:51:06-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F97F11740720681197C1BF14D1759E83</stEvt:instanceID> + <stEvt:when>2008-05-16T15:52:22-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FA7F117407206811B628E3BF27C8C41B</stEvt:instanceID> + <stEvt:when>2008-05-22T13:28:01-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FF7F117407206811B628E3BF27C8C41B</stEvt:instanceID> + <stEvt:when>2008-05-22T16:23:53-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:07C3BD25102DDD1181B594070CEB88D9</stEvt:instanceID> + <stEvt:when>2008-05-28T16:45:26-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F87F1174072068119098B097FDA39BEF</stEvt:instanceID> + <stEvt:when>2008-06-02T13:25:25-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F77F117407206811BB1DBF8F242B6F84</stEvt:instanceID> + <stEvt:when>2008-06-09T14:58:36-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F97F117407206811ACAFB8DA80854E76</stEvt:instanceID> + <stEvt:when>2008-06-11T14:31:27-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:0180117407206811834383CD3A8D2303</stEvt:instanceID> + <stEvt:when>2008-06-11T22:37:35-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F77F117407206811818C85DF6A1A75C3</stEvt:instanceID> + <stEvt:when>2008-06-27T14:40:42-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F77F11740720681194DFF4A5DEFE0840</stEvt:instanceID> + <stEvt:when>2010-04-20T10:39:03-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed>/</stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F87F11740720681194DFF4A5DEFE0840</stEvt:instanceID> + <stEvt:when>2010-04-20T11:12:41-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed>/</stEvt:changed> + </rdf:li> + </rdf:Seq> + </xmpMM:History> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/"> + <illustrator:StartupProfile>Print</illustrator:StartupProfile> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/" + xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#" + xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/"> + <xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint> + <xmpTPg:HasVisibleTransparency>True</xmpTPg:HasVisibleTransparency> + <xmpTPg:NPages>1</xmpTPg:NPages> + <xmpTPg:MaxPageSize rdf:parseType="Resource"> + <stDim:w>19.000000</stDim:w> + <stDim:h>19.000000</stDim:h> + <stDim:unit>Points</stDim:unit> + </xmpTPg:MaxPageSize> + <xmpTPg:PlateNames> + <rdf:Seq> + <rdf:li>Black</rdf:li> + </rdf:Seq> + </xmpTPg:PlateNames> + <xmpTPg:SwatchGroups> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <xmpG:groupName>Default Swatch Group</xmpG:groupName> + <xmpG:groupType>0</xmpG:groupType> + <xmpG:Colorants> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>White</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>Black</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>100.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>CMYK Red</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>100.000000</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>CMYK Yellow</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>CMYK Green</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>100.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>CMYK Cyan</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>100.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>CMYK Blue</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>100.000000</xmpG:cyan> + <xmpG:magenta>100.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>CMYK Magenta</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>100.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=15 M=100 Y=90 K=10</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>14.999998</xmpG:cyan> + <xmpG:magenta>100.000000</xmpG:magenta> + <xmpG:yellow>90.000000</xmpG:yellow> + <xmpG:black>10.000002</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=90 Y=85 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>90.000000</xmpG:magenta> + <xmpG:yellow>85.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=80 Y=95 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>80.000000</xmpG:magenta> + <xmpG:yellow>95.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=50 Y=100 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>50.000000</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=35 Y=85 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>35.000004</xmpG:magenta> + <xmpG:yellow>85.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=5 M=0 Y=90 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>5.000001</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>90.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=20 M=0 Y=100 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>19.999998</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=50 M=0 Y=100 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>50.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=75 M=0 Y=100 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>75.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=85 M=10 Y=100 K=10</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>85.000000</xmpG:cyan> + <xmpG:magenta>10.000002</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>10.000002</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=90 M=30 Y=95 K=30</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>90.000000</xmpG:cyan> + <xmpG:magenta>30.000002</xmpG:magenta> + <xmpG:yellow>95.000000</xmpG:yellow> + <xmpG:black>30.000002</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=75 M=0 Y=75 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>75.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>75.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=80 M=10 Y=45 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>80.000000</xmpG:cyan> + <xmpG:magenta>10.000002</xmpG:magenta> + <xmpG:yellow>45.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=70 M=15 Y=0 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>70.000000</xmpG:cyan> + <xmpG:magenta>14.999998</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=85 M=50 Y=0 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>85.000000</xmpG:cyan> + <xmpG:magenta>50.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=100 M=95 Y=5 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>100.000000</xmpG:cyan> + <xmpG:magenta>95.000000</xmpG:magenta> + <xmpG:yellow>5.000001</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=100 M=100 Y=25 K=25</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>100.000000</xmpG:cyan> + <xmpG:magenta>100.000000</xmpG:magenta> + <xmpG:yellow>25.000000</xmpG:yellow> + <xmpG:black>25.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=75 M=100 Y=0 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>75.000000</xmpG:cyan> + <xmpG:magenta>100.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=50 M=100 Y=0 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>50.000000</xmpG:cyan> + <xmpG:magenta>100.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=35 M=100 Y=35 K=10</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>35.000004</xmpG:cyan> + <xmpG:magenta>100.000000</xmpG:magenta> + <xmpG:yellow>35.000004</xmpG:yellow> + <xmpG:black>10.000002</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=10 M=100 Y=50 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>10.000002</xmpG:cyan> + <xmpG:magenta>100.000000</xmpG:magenta> + <xmpG:yellow>50.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=95 Y=20 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>95.000000</xmpG:magenta> + <xmpG:yellow>19.999998</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=25 M=25 Y=40 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>25.000000</xmpG:cyan> + <xmpG:magenta>25.000000</xmpG:magenta> + <xmpG:yellow>39.999996</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=40 M=45 Y=50 K=5</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>39.999996</xmpG:cyan> + <xmpG:magenta>45.000000</xmpG:magenta> + <xmpG:yellow>50.000000</xmpG:yellow> + <xmpG:black>5.000001</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=50 M=50 Y=60 K=25</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>50.000000</xmpG:cyan> + <xmpG:magenta>50.000000</xmpG:magenta> + <xmpG:yellow>60.000004</xmpG:yellow> + <xmpG:black>25.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=55 M=60 Y=65 K=40</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>55.000000</xmpG:cyan> + <xmpG:magenta>60.000004</xmpG:magenta> + <xmpG:yellow>65.000000</xmpG:yellow> + <xmpG:black>39.999996</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=25 M=40 Y=65 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>25.000000</xmpG:cyan> + <xmpG:magenta>39.999996</xmpG:magenta> + <xmpG:yellow>65.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=30 M=50 Y=75 K=10</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>30.000002</xmpG:cyan> + <xmpG:magenta>50.000000</xmpG:magenta> + <xmpG:yellow>75.000000</xmpG:yellow> + <xmpG:black>10.000002</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=35 M=60 Y=80 K=25</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>35.000004</xmpG:cyan> + <xmpG:magenta>60.000004</xmpG:magenta> + <xmpG:yellow>80.000000</xmpG:yellow> + <xmpG:black>25.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=40 M=65 Y=90 K=35</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>39.999996</xmpG:cyan> + <xmpG:magenta>65.000000</xmpG:magenta> + <xmpG:yellow>90.000000</xmpG:yellow> + <xmpG:black>35.000004</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=40 M=70 Y=100 K=50</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>39.999996</xmpG:cyan> + <xmpG:magenta>70.000000</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>50.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=50 M=70 Y=80 K=70</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>50.000000</xmpG:cyan> + <xmpG:magenta>70.000000</xmpG:magenta> + <xmpG:yellow>80.000000</xmpG:yellow> + <xmpG:black>70.000000</xmpG:black> + </rdf:li> + </rdf:Seq> + </xmpG:Colorants> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:groupName>Grays</xmpG:groupName> + <xmpG:groupType>1</xmpG:groupType> + <xmpG:Colorants> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=0 Y=0 K=100</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>100.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=0 Y=0 K=90</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>89.999405</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=0 Y=0 K=80</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>79.998795</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=0 Y=0 K=70</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>69.999702</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=0 Y=0 K=60</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>59.999104</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=0 Y=0 K=50</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>50.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=0 Y=0 K=40</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>39.999401</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=0 Y=0 K=30</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>29.998802</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=0 Y=0 K=20</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>19.999701</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=0 Y=0 K=10</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>9.999103</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=0 Y=0 K=5</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>4.998803</xmpG:black> + </rdf:li> + </rdf:Seq> + </xmpG:Colorants> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:groupName>Brights</xmpG:groupName> + <xmpG:groupType>1</xmpG:groupType> + <xmpG:Colorants> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=100 Y=100 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>100.000000</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=75 Y=100 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>75.000000</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=10 Y=95 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>10.000002</xmpG:magenta> + <xmpG:yellow>95.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=85 M=10 Y=100 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>85.000000</xmpG:cyan> + <xmpG:magenta>10.000002</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=100 M=90 Y=0 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>100.000000</xmpG:cyan> + <xmpG:magenta>90.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=60 M=90 Y=0 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>60.000004</xmpG:cyan> + <xmpG:magenta>90.000000</xmpG:magenta> + <xmpG:yellow>0.003099</xmpG:yellow> + <xmpG:black>0.003099</xmpG:black> + </rdf:li> + </rdf:Seq> + </xmpG:Colorants> + </rdf:li> + </rdf:Seq> + </xmpTPg:SwatchGroups> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:pdf="http://ns.adobe.com/pdf/1.3/"> + <pdf:Producer>Adobe PDF library 9.00</pdf:Producer> + </rdf:Description> + </rdf:RDF> +</x:xmpmeta> + + + + + + + + + + + + + + + + + + + + + +<?xpacket end="w"?>
endstream
endobj
3 0 obj
<</Count 1/Kids[31 0 R]/Type/Pages>>
endobj
31 0 obj
<</ArtBox[4.5 5.00195 14.499 13.0]/BleedBox[0.0 0.0 19.0 19.0]/Contents 32 0 R/Group 33 0 R/LastModified(D:20100420111553-07'00')/MediaBox[0.0 0.0 19.0 19.0]/Parent 3 0 R/PieceInfo<</Illustrator 34 0 R>>/Resources<</ExtGState<</GS0 35 0 R>>/Properties<</MC0 29 0 R>>/XObject<</Fm0 36 0 R>>>>/Thumb 37 0 R/TrimBox[0.0 0.0 19.0 19.0]/Type/Page>>
endobj
32 0 obj
<</Filter/FlateDecode/Length 66>>stream
+H‰Ò÷wVÐ÷u6PprqVà*ä2P0´!] .Jå +WÈ +ê»(¤sé»å(¸äsr¹úUr +8;V'i$O[%B0E;4a!JC~>
endstream
endobj
38 0 obj
[/Indexed/DeviceRGB 255 39 0 R]
endobj
39 0 obj
<</Filter[/ASCII85Decode/FlateDecode]/Length 428>>stream
+8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#s<Xl5FH@[<=!#6V)uDBXnIr.F>oRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0I<jlL.oXisZ;SYU[/7#<&37rclQKqeJe#,UF7Rgb1 +VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j<etJICj7e7nPMb=O6S7UOH< +PO7r\I.Hu&e0d&E<.')fERr/l+*W,)q^D*ai5<uuLX.7g/>$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~>
endstream
endobj
36 0 obj
<</BBox[4.5 13.0 14.499 5.00195]/Group 40 0 R/Length 76/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 41 0 R>>>>/Subtype/Form>>stream
+0 0 0 1 k +/GS0 gs +q 1 0 0 1 14.499 13 cm +0 0 m +-5 -7.998 l +-9.999 0 l +h +f +Q +
endstream
endobj
40 0 obj
<</I false/K false/S/Transparency/Type/Group>>
endobj
41 0 obj
<</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>>
endobj
29 0 obj
<</Intent 42 0 R/Name(Layer 1)/Type/OCG/Usage 43 0 R>>
endobj
42 0 obj
[/View/Design]
endobj
43 0 obj
<</CreatorInfo<</Creator(Adobe Illustrator 14.0)/Subtype/Artwork>>>>
endobj
35 0 obj
<</AIS false/BM/Normal/CA 0.669998/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 0.669998/op false>>
endobj
34 0 obj
<</LastModified(D:20100420111553-07'00')/Private 44 0 R>>
endobj
44 0 obj
<</AIMetaData 45 0 R/AIPDFPrivateData1 46 0 R/AIPDFPrivateData10 47 0 R/AIPDFPrivateData2 48 0 R/AIPDFPrivateData3 49 0 R/AIPDFPrivateData4 50 0 R/AIPDFPrivateData5 51 0 R/AIPDFPrivateData6 52 0 R/AIPDFPrivateData7 53 0 R/AIPDFPrivateData8 54 0 R/AIPDFPrivateData9 55 0 R/ContainerVersion 11/CreatorVersion 14/NumBlock 10/RoundtripVersion 14>>
endobj
45 0 obj
<</Length 918>>stream
+%!PS-Adobe-3.0
%%Creator: Adobe Illustrator(R) 14.0
%%AI8_CreatorVersion: 14.0.0
%%For: (Nicholas Jitkoff) ()
%%Title: (MenuOverflowDown.pdf)
%%CreationDate: 4/20/10 11:15 AM
%%Canvassize: 16383
%%BoundingBox: 4 5 15 13
%%HiResBoundingBox: 4.5 5.00195 14.499 13
%%DocumentProcessColors: Black
%AI5_FileFormat 10.0
%AI12_BuildNumber: 367
%AI3_ColorUsage: Color
%AI7_ImageSettings: 0
%%CMYKProcessColor: 1 1 1 1 ([Registration])
%AI3_Cropmarks: 0 0 19 19
%AI3_TemplateBox: 9.5 9.5 9.5 9.5
%AI3_TileBox: -296.5 -386.5 315.5 405.5
%AI3_DocumentPreview: None
%AI5_ArtSize: 14400 14400
%AI5_RulerUnits: 2
%AI9_ColorModel: 2
%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0
%AI5_TargetResolution: 800
%AI5_NumLayers: 1
%AI9_OpenToView: -19 26 24 1351 758 90 0 0 52 138 0 0 0 1 1 0 1 1 0
%AI5_OpenViewLayers: 7
%%PageOrigin:0 0
%AI7_GridSettings: 72 72 72 72 1 0 0.8 0.8 0.8 0.9 0.9 0.9
%AI9_Flatten: 1
%AI12_CMSettings: 00.MS
%%EndComments
endstream
endobj
46 0 obj
<</Length 12962>>stream
+%%BoundingBox: 4 5 15 13
%%HiResBoundingBox: 4.5 5.00195 14.499 13
%AI7_Thumbnail: 128 104 8
%%BeginData: 12830 Hex Bytes
%0000330000660000990000CC0033000033330033660033990033CC0033FF
%0066000066330066660066990066CC0066FF009900009933009966009999
%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
%6666006666336666666666996666CC6666FF669900669933669966669999
%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
%9933009933339933669933999933CC9933FF996600996633996666996699
%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
%000011111111220000002200000022222222440000004400000044444444
%550000005500000055555555770000007700000077777777880000008800
%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
%524C457D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D52537DA8535252525952525259525252595252525952
%525259525252595252525952525259525252595252525952525259525252
%595252525952525259525252595252525952525259525252595252525952
%525259525252595252525952525259525252595252525952525259525252
%59525252595252525952525259FD0552FFFF7D52527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D52A8FFFFFFFD7B52
%7DA8FD04FF527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D5253A8FD05FF7D525252595252525952525259525252595252
%525952525259525252595252525952525259525252595252525952525259
%525252595252525952525259525252595252525952525259525252595252
%525952525259525252595252525952525259525252595252525952525259
%5252525952525259FD04527DFD06FFA97D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D525252FD08FF7DFD7652A8FD09FF7D5252
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527DFD0BFF5252
%525952525259525252595252525952525259525252595252525952525259
%525252595252525952525259525252595252525952525259525252595252
%525952525259525252595252525952525259525252595252525952525259
%525252595252525952525259525252595252525952525253A8FD0BFFA852
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D52527DFD0CFFA87DFD
%7152FD0EFFA853527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D52A9FD
%0FFF7D525259525252595252525952525259525252595252525952525259
%525252595252525952525259525252595252525952525259525252595252
%525952525259525252595252525952525259525252595252525952525259
%52525259525252595252525952525259525252595252527DFD11FF525252
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527DA9FD11FFA8FD6C527DFD13FF7D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D7DFD14FFA8525259525252595252
%525952525259525252595252525952525259525252595252525952525259
%525252595252525952525259525252595252525952525259525252595252
%525952525259525252595252525952525259525252595252525952525259
%52525259525252FD16FF7D52527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D52A8FD17FFFD
%67527DFD18FFA9527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527DA8FD19FF7D525952525259
%525252595252525952525259525252595252525952525259525252595252
%525952525259525252595252525952525259525252595252525952525259
%525252595252525952525259525252595252525952525259525252595252
%525952527DFD1BFF7D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D52FD1CFF7DFD6252A8FD1DFF7D
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527DFD1FFFFD05525952525259525252595252525952525259
%525252595252525952525259525252595252525952525259525252595252
%525952525259525252595252525952525259525252595252525952525259
%5252525952525259525252595252A8FD1FFFA8527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D52527DFD21FF7DFD5D
%52FD22FFA87D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D52FD24FF7DFD045259525252595252525952525259525252
%595252525952525259525252595252525952525259525252595252525952
%525259525252595252525952525259525252595252525952525259525252
%595252525952525259527DFD25FF527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527DFD26FFA8FD58527DFD27FF7D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D52527DFD28FFA8535252
%525952525259525252595252525952525259525252595252525952525259
%525252595252525952525259525252595252525952525259525252595252
%525952525259525252595252525952525259FD0552FD2AFF7D52527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D52A8FD2BFFFD53527DA8FD2C
%FF527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D5253A8FD2DFF7D5252
%525952525259525252595252525952525259525252595252525952525259
%525252595252525952525259525252595252525952525259525252595252
%5259525252595252525952525259FD04527DFD2EFFA97D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D525252FD30FF7DFD4E52A8FD31FF7D52527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527DFD33FF52525259525252595252525952525259
%525252595252525952525259525252595252525952525259525252595252
%525952525259525252595252525952525259525252595252525952525253
%A8FD33FFA8527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D52527DFD34FFA87DFD4952FD36
%FFA853527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D52A9FD37FF7D5252595252525952525259
%525252595252525952525259525252595252525952525259525252595252
%52595252525952525259525252595252525952525259525252595252527D
%FD39FF5252527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527DA9FD39FFA8FD44527DFD3BFF7D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D7DFD3CFFA85252595252525952525259525252595252525952525259
%525252595252525952525259525252595252525952525259525252595252
%52595252525952525259525252FD3EFF7D52527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D52A8FD3FFFFD3F527DFD
%40FFA9527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527DA8FD41FF7D5259525252595252525952525259525252595252
%525952525259525252595252525952525259525252595252525952525259
%525252595252525952527DFD43FF7D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D52FD44FF7DFD3A52A8FD45FF7D7D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527DFD47FFFD055259
%525252595252525952525259525252595252525952525259525252595252
%5259525252595252525952525259525252595252A8FD47FFA8527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D52527DFD49FF7DFD3552FD4AFF
%A87D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D52FD4CFF7DFD0452
%595252525952525259525252595252525952525259525252595252525952
%525259525252595252525952525259527DFD4DFF527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527DFD4EFFA8FD30527DFD4FFF7D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D52527DFD50FFA85352525259525252595252525952525259
%525252595252525952525259525252595252525952525259FD0552FD52FF
%7D52527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D52A8FD53FFFD2B527DA8FD54FF527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D5253A8FD55FF7D52525259525252595252525952525259
%5252525952525259525252595252525952525259FD04527DFD56FFA97D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D525252FD58FF7DFD2652A8FD59FF7D52527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527DFD5BFF
%525252595252525952525259525252595252525952525259525252595252
%525952525253A8FD5BFFA8527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D52527DFD5CFFA87DFD2152FD5EFFA85352
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%A9FD5FFF7D52525952525259525252595252525952525259525252595252
%52595252527DFD61FF5252527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527DA9FD61FFA8FD1C527DFD63FF7D527D527D527D527D
%527D527D527D527D527D527D527D527D527D7DFD64FFA852525952525259
%52525259525252595252525952525259525252FD66FF7D52527D527D527D
%527D527D527D527D527D527D527D527D52A8FD67FFFD17527DFD68FFA952
%7D527D527D527D527D527D527D527D527D527D527DA8FD69FF7D52595252
%525952525259525252595252525952527DFD6BFF7D527D527D527D527D52
%7D527D527D527D527D52FD6CFF7DFD1252A8FD6DFF7D7D527D527D527D52
%7D527D527D527D527DFD6FFFFD05525952525259525252595252A8FD6FFF
%A8527D527D527D527D527D527D52527DFD71FF7DFD0D52FD72FFA87D527D
%527D527D527D527D52FD74FF7DFD04525952525259527DFD75FF527D527D
%527D527D527DFD76FFA8FD08527DFD77FF7D527D527D52527DFD78FFA853
%FD0552FD7AFF7D52527D52A8FD7BFF5252527DA8FD7CFF5252A8FD7DFF7D
%7DFD7EFFA8FDBFFFFF
%%EndData
endstream
endobj
47 0 obj
<</Filter[/FlateDecode]/Length 8606>>stream
+H‰¬WëVÚL}‚<„@H @[iAŠ(Šå²ÄÏJ+—Àû3“û0“IÄ?³X +û\÷9ûä¤êʨf_u>ñœPQ.•láV’*¯»üÙI-uS0rFG*ŸÕ—å}x+•õ¹Q^‹ÏwRe0ÏÂ/çßoŠ9Ç€äütmþ¦¬ß¾Ã¯ô,0©sƒþæ8‚°óÞÿ–5^*Ëšl>µÓt
XyNªï–|â{ÚWÛ`ÎÁ +Åñ0ðמÛ0>Iyk^æ¨1ƃ‘‘FÍåXñ¶×=ä§~dÇWæ˜|a ™ÀØ2‡#tX>ñ}ÅÒLz;iåÝ7§`'[ù>;fR™ó`ëÈ$ÛJœÌM³úNöS¢R\ß„‰Š£ú¼©/]”ìëJ*Ù=ÔYÙJ©<ϧȫ$W}¸hy¦®§ðrp£Ô‘á“%26Üû.
‹¢|@âÈ(‰† Ñ„ƒhè•îóonO*AT¿÷ô-f +K€‡•Ê¢˜ciC9uÑO’4°B˜–ƒÕ+‹bVÒ´Ž?cï¸ø&îýw%¨¤Þýþ®¤®É6hÓF†C´+ÇšS¾Ž%3a8BVXÒ0”0¬eTjaáýâîB¡n乡ÎB“¼¼£À“Jºbcyq¤à©PЊ¨µ™Û>`ûB°Ý¯ŠÚ¾"AE×0s#_ÜuX[Ó$ΕtPˬã<Œ²rÕáÄ\2€û„žÀÖk¢—‚;‚ãC¬‡‚Q{v!®¾íÙÒ/“5Κ¥»úRU³ûz|ѺåøzEº½+¦Ò9ø¤wdwB17žsB9V7Os<îÙŸâ©)p|Ä4ãë¯JÏkt²×»§R©wþÊñF|0êz2ZŽç€ÝúœúÚ,k#·•²¯ï‚’-
÷Ûm!5Ìä¯^¾“Œn÷Ó¢êŸÉ>³JCIw(FÏã‰/½ÔÅèhL5 +b‰5Öyj¬ŠèS +—ó̶Qý¯×è÷“”kÄ#áMp÷,ç1úœLÆ]£†ð%¹uŒæ}FÏ^Sbåñ/É(ÇÃ?ycõ5fªQ¥ÑþÞ¥=ó…_õ)2jé1‚'FõÄ9ݨ~ åxÔJüõŸÎŒœà¨G7úõW{@7ªiý2jod`6ÿ/;ŸÌon÷éRÖ_}Ê÷ò5…ú=Ä}Ûö4]üQ*®vš»&AÌ£.:íOÊ
œÉÞåYs¨Ãd/:êùä?ARÏRpnþòh˜:¾›ñ«4ÜnØ¥µWGHQ)¡§g* m¼lÆz×¼.ÁN¦;UÛbNù]ŠûFù—5yïu“ÇSoLë+]àÒÕžêÇó”þ9׈yÂ6{ÈÒYÆçÔmìSò´rWº]}|©<b’Þúí{ Kf–¸pý¤VÇÄ'¿¡ª=:ù|ŒŸ_wø:éþÁp‰ãƒœšŸÓ`Z>í«m²S–?"ò›>®´q9ƕテ
+WõEWÚør˾Œ¨¹¨šÿ·0ÍÌMgÏ—G§'Ø„!߬è±Bë +%´QŒšg˜ÁQC¥ôõvÒªšÏ¨úLWêR˜¨ÝL’&òµöÚŒªE
Hy6CæI•J¢æ– VßS(yp"0ã¤EÁÒ¸ÿ±«‚©ÔcPO³2o…‘F>2k(ÏÂLêóp¦!•——5˜ìë²x%RÊ9kà†RøXÙ)¬Èä›ç6TCu?çìs=“¨žÁCò‘äõ*÷UÙyíŒÍb;ÝA\ûNÅÂÚëy]^~ÝF×# Ç
¢R‡þ’·Àè¨N¨®Žt›uYÐIÈú>ë~šáK‹0\—'¬dÙËs fÌçT®úpÑ¢,5¦÷¹w]Bó:å/„¢ù\&‚—6ªè±¬o:ÇÔÏŠ%KYÌ&ýÏieñ¶øöþQ`Æò>„_ðâcƒa[希½¨±Ñ'eì¥(>|ZÆ°‰vdÆ® +c +Øu›´$uhe,WŽNýú°ù9Ç,@~ÞÛ»’©„‰;@¼ž„ +¼ˆPt&©¢ M +&„9/Ö÷¡1òܽ´©™-]DL%ú² cžÆ¸RùzV¢;¸Ž˜h½Vþs%Ü%m8ÕØ™‚ +x¶Ž³õ”³Òð½èÁܜЎç³Ï4íÿ!Óô•fl +Cuz=+
;—æ3k)0Ê…ŽÌ§Ú3â\8(ðs
Ê4-\Óc?Œå ×9c[Ä”ªa4cu·ûœ±à
ÆnÒ0|ªcs]ïšöë•n2__™ÄÎ;“ŸÒöRË;Ý,êâ„S}ù&F\mjßgN´‡î%VkâÄU°¸)ú–RÏÏöȹÆQ¯„·÷({&U³ä1žj +k DÊ÷GlÒ9 T5bK7À¢Í8Š<èôÚ†ejÓ gõ`-oÂog´•'‚êU,Óžß«ÅÁá¨Ä‹4K®fÜÛˆ‚2{ÊÅïá禗ô/=b_ÕG»¼O‰þh"ÀÓGÒ=\•šÜÈóNïÎy Åq¨’kÓ%Z!å¼ø‘jÌ›‰ÉK%ø6{Vr‹œ~:Þ=bæÛöÚ(Í#‹h{=M+yx/;•ä*X%Þª ·C óAçg¯Xôìgöž¸îO#ZîÓÌ6Pˆ7__ZM
’ÿ%·¨¨àN²¹T)Åæ>ÇOl>èj(ÊG˜T¶¡·âÖ>JÛ€Ô«³L¬½WÑóJÅÿ-”Ã6›Í~3ʶ¿~@ïìXõ¨!º>Â><tËÃðãøy^6Ú'ÃiZÙpNïc²üt +,„»s¡{ÄÙXÑ)3räžÖíîkܱR˜œ‹¿ööÅ„˜Ä#éÞq[Î#ö¾Xý€¿UVð· x̽¾:YÇt‚b Ôׇ’}s”>Z=mÍ¿S{¥%4(k§pˆéý3ÓÍMÛûdŸM¿çí`5=±%™]ô)Él'¹°}^Ͼ%…À¶Šçvÿ±$$°Ó’u³ÎV35¿wÃ]uɇ2¡à¨—kÄäÇÒÛÛʶÚô×Ðü?ìЖó%|ÙQðäÄ2;’†åp§Vb&@»õ'Ž„¼ò‘€Èý +–÷^dÀ
§¸ė+ŒÝ
]¬§À‹4ÿ1Çä²|%f,•ñ9÷9²P,r>÷l™Ïå0ËÄï=ØQäÜ;çMséÿF1ʲ1r¤cwN}+í7·øT·™Ð7ŠŒ¹!8¾õgl4Øò1¯ùÎ<õý|ÚgÙBgkvòõ€„"íS(fÿ¾ý†˜opx)$š,ëIÓöþ!®á]·>ñrÙþ4…9–™£*Bu.`Ö + —,Ó)›°|˜§| +Ņƨ&~,"pAR¥³|ÉÃeß·y\zNk"«³ÑPç"Ô‘¼sBÞu ÅI2¢WŽƒä²ƒHT—Ä™ŒF’†Œ«J¨À—hk•Û¤ÙÌStÍÕ\-¡¨—eˆƒ¦‡W)|oèjS\~@ûÑ;?F‚Ëo"Ì‘ +òËH8—¥éùbhFý#^»F¸+ŸPVbÌ·ÑDìÔ`LY…ß9Åjæ™8WøX¡çJl"šx±˜(ö}ô¡‰Y¼9ô"MØØ!Õéð5ezg‡w¡½ª²\]þ KM]«Â#Z3M<ÿ4±?0Qp¬©"¾¸Á›§%.ÖÀ¡*…2ŽØT +>êa\« ·éÞ|F-šßk¡§’B„3A𤻓AõÆ +(¬ð_ψÉ]+à„]\>á£hÕ„@è-¸ äþûV¢Íc
éû~Úä~›X3Y%Õé™Ü9M&üäAr¯{O˜ â¶ç2 h_àA¾µÆN=ýsTºh¢³¹•‹pû§MôÍ»üCÅ4 +ì_ÂØÛnðAÍý3^tíök>ðÛ¾i€p·f/V’´±tä_!!Må[}Ðrÿ§³?‘ +Ì·–Òj÷O}iË£N$É¿MqÝÀž°.ÇvÛa»ìê° ¤»ú°<Rúìt—aiÎt–±oäXöñlãa'À̦ž+‡xhôk“j ¿EK˜1âY':Ïm<‘ê|6ÝΑ¨.xñ +r¹ä±Î§áÝ(ùP&´AY7ÊÔØØð[7÷Ó;§±Å»_ÆgÙȧdFÕk}×$%ýãªÏºñ%Nðªc*‘à +Ž$‹qä +þœ€68WH4ÐòÙj[ú¢0Ï*NÜØqÑn×WÁlJqcM%ϱÿ±^]Û‰+Kôø‡ @(3&'m0ŒM2A cLfût¿ýV·¢}Æa÷E«[%UWØ»ªÍNÂ<[CÑi™jç.V_ʇÒÄÀ€{ ±
"‘Ñ uç +ŒHesItJRÊÞÚ…5»¤óêü©^¼©¨cÕéuÖ´è|”b +Û£‚”‘ïôh㉠+çÓ¨?| 9Ë£Õøô®’ö¥‡‚ÞÎqÇeŠ«æ7ÅAù¾“ãNüw%øGUlºïLO{«+Ãd ر2=¡'Ÿ•º•‰¼;WEðÅ_ŒqD˜ÊåÐÛk‚iyo‘·H%"yiA„½*Aï}p¿˜íc&wP÷ZDƨٴ"$MD•'‹’êƒç¥³ÂË%‚Æýž×Uî+/‹ÿ–üñ·Ï‡Xo‹BæêUÇí‘2 Ü3h˘ÛD(b¶€Û§ºlªxê&N˜ÿ˜"6Z§¸ý+ʸ=Ȥ—`æWÒ–@‰xHG$ݬ%ªqŽ@ò'—yKð,äóÄyç>¹¢„± +w¥J[À[)Û%`«æÝøC†Ê¢–1Éi¡4ÒhÜKZƒ¼ ›OL˜y›ZµÉ¡ª†ö~Øv±ZÚH§%®ÑY¡ª|ǸZæ"À¾A·¨GìC§Ö)ìˆX‘›¥‰å&Ø-§Jò«M¾ ¾iYõ+ð±º!`·…q°p£8ÿ¤Õù¿Ð(3Þ¢¥‘ºŽµâ±J9ÔEš0ÙÔï vq)„:o\ÖŸ ¯þL¶]Ÿ¹á¥5#¸i@P¯6°ír&ìµ/hõ«¡`öm,fâ5r¥Í$i2Va¦vÕÆ#ôÔêU3ÿ^
yk5vЦ‰Ál=cZ³ZH.Á˜&fϧ=‰}1£ƒ +—¡~*Võ"×î2cWï˪–PhP5I¡Õ5zdZÞïš.3vûa‹†»÷÷Múâ0öm“¾¸Eã.ÿ]“¾¸Ewïoš´Ý_ +N.Ÿ×h¶¥Ù|é»asØUXt…¬²öSºïU‘5#){¿+X󧲧ÉÇãª#À«‡tfVG$³õŒ%(³.Áãyœ³uÞ¸¯$(<>9'£¼TrŒ3ââ³ÏËG +1)–ÔÇÔ“òü»Ü,¬c¾ÂŽhâ¥v*†2ì•ýÈ쨔5zöÛœ£ÏCþ?4vyGãïn:¡ä»äTy¾ºÙåïò›¨c +Ø +cÛMtyº·íš›Ÿ^ÕÙÕË7ÖÅE5ºÆL[iãYz®¸ÂQ¤Ü‹ãîÕ¿Øõ'2^êÙð)j§üõƒÇ6B3ø‚.óM0ðÆø8_êhìwµ4z5À¡×0 ¹{xSþ=È+ Tø1[œÅª^>º3Ü
HNãêé :â$ÍFÑ:.„¢ºI4î]Ôþ{Ú×ÍÒÑL˜.)‹F™0–_T½t^¥ykê°hz2:ô¨C57÷™°F†`²1ÂÂPHòñLWèÆB>/}Ç#»íR-˜®1ÿŒÁ-°9tBßJZ°âD(Çv<XúŽî…ÇCHÛR*OÓR8¶fh¹C[Šëÿn6•]ézm‹Z§U‘f ™AàÏáºI^EÌÝ1}Ô„?7ûl6áܯQŸQº„?“2úS”e¬? +H‰ÌWÛrܸýüó *ëA³ +[{,w3MÞ1ÿFíëfý~ÿø©Â¦ƒ0ÒÍÁ™þ붼‡’æÝݼ{DËUµÛA×ÆJ/þñ·ùšØ”Ûß?V÷µ±=ìñÏS'¹ï6eÿYOÔ—¶çºzÜ4°šÙ¦Ä6g7;0½g¾ÑqÄú+`oNÅ0n²Eõ¥®¾ž{ﻶ²FHúÝ•5=ç”Ú·íù¸oªþ׶ÞA3_7Ik…‹n]5®ÉÌ/šòÞiÓÛ¸.ûûj¯uÍ~gx+ÀÊ¿”ß*ífø°©Úëî7£ãLᇞÏáOÁ¼HÄž´kMñ¸ ÞVª–¡%¢áÁ“K¸éC_ß×í¹S,ºyÛ×ëÉu‘?ýíWñì#‡U;ÞíªÖ©
Ò¤3ÐÕÅÖÌÛuÚ=j³o5£áú¼hº{Û7þoz0}¿±ú›ß7ðÐe_·Z&yozâ›Ëf®·}·ß¼kï:òÆžèë¾¼Å0ïçU·;K×0ýwµ¯wÕª¬7§Ga[}åÙNL6?‡ïïÏΪ;¦iºmÍÛ/UÓmfbÇ–²]{/ûÍ÷E_6e[öži%ÿRAO M²§¶W-wU»ÞŽ2íÏ¥<Ûö}yW·š½§úýöÁ»îºf»ì¥»fÓªÇÿk\š í‡ÖèéJnÀáJˆ?Ü*ýò +èü‘¥§eÓÔ÷}¹y¨oŸ[à™þq%Û÷ßëÛ㧮©·Ÿf-—e¿«o›êêÛvW=“¦qW·kÑIÛîq£Ó¶wõPn*#s÷P˜‘W£@qƒÀ8}ggGbbzªõ¿íËup‹b$í6¨ð
esJ~#ÀsOÉï„’Ÿ M¨Rš9-hÁ(ÓŒ‚…@Äb@²P,2–…Oæë'ð9ñ¹/üЀؗ@â+ õ3 ÷¿h +Š~Ñ°Xb,–‹åÆbô˜ÅÈq“=o1h¼“Õ*´Ti©ÔBWF1£u“Fµ…rF=v Þ¤ õÍÒ©91NZúÕ:˺K;̺L;-5NƒÛœã¬ë´ó¬ûà@b}$ÎÖ‘p¥s¦v§u¨u©vªu«4N×–/e¢‹#ŒYhɘgÈm–Äu G„a…1 Ã$Tafaðƒù‚+AÍ0Š¢˜D2J +†Dz°õ4>¦^¯(‚ï(õ5cLè!>^qŒ—§qŒÒIÞwÆA–Êƪw(^Ÿ¯g³j[á>qµo·Õõìò7lÚz„²•áîó‘^ÁŠ
$›×Å"éºÇ8WX¸@•ºÐT8îM +Caæà0ÇìÈ‘y.áÏOÍÓs]ÈìèÌÏt|¦´?$þ!õɨ[\åb+ +’óxxþ–’¸Zº¸Õùîš6\Ô`*ck·qq +C·§ã5¾;‰ö Z:ûè ”c‚ÂT !Ä °ãöÎaÿIच„Ä¡=)4Ηû}ö’§Ìm*{æ6ÅÇÛT4]ôæ—)boSC˜N—¥‘rl´X0m Ùtgšßš\H#–NF6N…ÄÑŒpDXÀA,¢19rŠà°Å8à!:‡xGŸ"vå©9 ‚CŒ ÂÈœ@xúÀ8Oö]ø/ƒŒwÙcàG!æ îËYdi“ãVyÉ.£UtàÆ*í²ÿ“xàAêÛjÍÔS¦à3·7e Cœ}t,ÕIÀV«:éƒoCN!‚*ÓÁ5.P‘sMÙ©KU/M<¶Î):1éXÏžd:Sh +ƒø:›¸Ô¢ÓÒ
1™'1ʯqë«á(B^Á¢çðâãˆ:¿d,y<Ϧ—8øuý×èfÌž: xê%ë'9úiò”p‘ßøŠŒîšVŒË\0ù—ˆìŠÑ¢lá">®4-Pág¸‘(äP E"”(18@¨b)Ujÿ7…<+¡d„2F(N˜¢È¶9ònŠœ€®1Î\ˆ,ýûe·#7nDá'à;èÆ@rÓÿ©À7ú
ä*‹ÍÍ^ƒÌÄ0²;8~äT)±»Õ=Ý3q¬OËI‘RÕáW~eàƒ-öq©œ¥4ãÈušç}ÄòžBFÚr52SÏ$ïìùuÑê"WxžÖ²ëÒOÌ…ÛòÈMVݱmG¶p_>踼.€kõÆã'Ôzã¯!¢µLõim`ÓÁaªM„cÛp7µæq5µ4ÄàÖÔöö +I¶rv¶dÍ«Ù:5¬®C‚ËÁ}<;£å(ü¡1åhaJ4³5ñnD{ù;ÔA ŠP€¸¾£¸¢wAó¡îlaË;?¬ŽùuRWoOw‰ùD-ã
Õï +$ –îHéDñDáH¾’)þÙ,mKX½ª-ZßE9 +À )üé³:VÊŠ¬Àò, C6GñÊRI,z…oìÊ,šÑ³à¥Ï$YÈ1³b&Ä…‚ƒ (• PèO¸OˆO`¯@^Á»vêèZþ"3“Ü VŒ‹Œpp&ÃÛ¼‚[W m%6ᵚՂpšbPLVDs0j“ùLèlc³Bf…˼wDeø¶Ìd +P3’Ñ7e°tË46±ù&f1ŸKðBò@o2ÂÞ,m£0cßW?|•ŽeÞùø¯¨o‘ºYVû²ÔÞE½Ü¬ùTêü’ž®h¼(—A•“Uý®º3¥31õ¨?mò':ðŠûê׬t}´›Ú¥Ò¼jZ5®VÔÊWÝJY…´ +mâ*ÔUȫЗÙfÁ¦›Ÿ†¯êœ´M{ˆ± oܦ?©ŸÎoÿ΃—‹±;„ØÚã§7{™t ?n‚?ØäÂN×Ó¥?nÙtÀ^Ñ5MZ:ïÜFÏö¢ÑÆ6>¤¶kÐö ÑËi@¿›uÕ·wÀèä>ôñŸæçÇ?}xüòôüM.OŸ¿<—KjþðóóóÃoOÍç|©AœüQí_ÆÐxiø4UÞùeï—Ý¿@Q¼¢P${ÖÂ%ÈÈÛ]—+‹°V›Ÿ¾à=n-$rë2 Û
Ïã ]µ#ÖxÞ²2Y«¬\ÞÂ(ëh17ƒÙ:Ì<`
«é±ª«›Í’燱?_‘g6pfM˜1æ’ +žA[?9íðä´‡‹[ˆWЦ[œB|¢˜DmÙ¹{Cñq…>;ÂœÍÀ°86‚È&°À¼¦>ÒžÞqÂK²—4—çäÎIÍé¼fqX³¶äê I©r6–¼Û«$ËÂXјX˜˜˜JNn9&’gÖBš¸Ð˜t–aÙ,—Uø§lê[-Ä5…ª +‹¸¨KŒ\héô˜7)þYÎ5·¤¯KÍæfÙ[¤nk6»[¥noú3àæ –+˜ÄBÕ˲rU-R±HµRjØR¢¬õ«•¢Ä)®H +”Œ\‚,™KìJ&)³ÉXщԅPR®•ëƒ*š
ȸ3®÷™µŠ ±Vnrq\Àœû!Lrª‘n^a†,‹€¦ cû*`ÙÆo:•:2ŒB:ìm³à{œHgðÙ@.{Ÿ(¨\oÄU)k;úJ„Œ•*ÇP¢6-§b‡=–ÞÁ—Qòs$û¢Üe©³KþmR»—/Vp/K½¥ów: D7>
_•Ví¥“_T{@ê›ö€Ük[“Ô9Ýœ¼pÿa¿\vÛÖ¹(ü|M´C¼“E&¢.EÇEGgHdPÚ¾?þµ7©›-'Nâü5?ÀQ$’/{q¯ŠJW¹ÊÖ•¬¹éwqs÷ž¦é7¾ª®’º²rW#rÆ7žŒõÑ8¹“(•6;'YµÛ®±nïÑ«U®RõN«è7ÚÖ˜Ú{ŸQ¯Í·Q ËMóÍÞõû‡¯¿îž÷òôøô¼o}©>ýØïï>>TOåV%•û,¶o£k]¥,Õ`‰•Z`¦gr’’SúÑ5jW(ø ' ç#ËbVè#Ô ¤ÀYq!ø,yÜ9¤sçU;ŸvÈ]æl%‡GÉ∘/Ïä•"^«p~áãDN8=m‡Ýip +î8äqØ÷8ö[¤ +¹Uêcêáˆþˆ®îýL´+ÒÍ‚¸"̈Ú/pì„™Ðjb1*|¶5.×ÿãûå"¼ÿ?î$Ûù¨Ù@ˆéR°ÖÏe ú!òŸØN¤Â<-c ¾À ýhe£!~4£ +YQs˜LÏtLË$'4¿!°÷ œ`B&Ä°!+¢X]ëbHÈ’)![BÆ$ñÜæ„ìÉhPØ¢ö(’=ÊèRZr)Å¢dƒ’íI6'Ù–ÔÅŠtÅs4<ê`½€)°l(ó’—ô¦3IX¾ˆ§—;T1Fåõ {ÝéV'¬fÄ°<,ÕFkäwP½êT«7bÄ–Ä(Dx½ìd+TBoX±kÙ–•2°ø‘ÀÉ"a—óˆÅ)^;œËi[õ"âÅǧÙI—¶vg‡¤“4›@1Ä°!àp+ì“üGO¨ 91§ã\Œ¥+´…Ô'Ÿ¦¥LϺÐsˆ÷–ATöšQ©d"4…¹ïNt]×2 4€$’ÔŠDjÑA:„w‡ ++ xÏQ^§G·ú³èN!ÊEûé$Í1?q“°?ÂB§Û³Bp:¿[ž‚Å˵ÃEé߇xñq÷&ZBä?'H'i6‰Cô³ àp+ì“üGO¨ 91‡ú8cé +m!õIà§)D&<ãË ÅHÕ‚¦0÷݉®ëZ&D€X`€ +H@ŠB“ÜsS* 4ml£hCë¶5@· +H–šc 7µœ¦Ž‰jNUs¢ª’„ðЊôøš¶I¢išBã×ØÆ4ºQ„
‡W&<Ž1D‘REuTQBÌKRhB„'ðÁƒœN‰ ¡L=Æ×âÕÑï½óÆk¯ O&°uÉ5.8ï¬3N;éjLh‡lº±Ázk±ÊJ¬m‡6ÂY±Æ½0QI7:h‡´QãP0mI5 +NBc•he#ƒtÒàÔ”X“º ‡¢v•°½Ã«„]%ì*aÿ¶„%oäÚáµÃk‡ïïP½ñ‘ÆoéP¾qvÕ3$LV7wé—øuUO\eë +]ЃïâæîøAú]j;›oú¸s¾Öë‡×TØ‘WÎît0n£éa±=é°ÃY+ƒ*µ”«ÆѲÞÕÞ([I€k©bùR:4¾š†{FMô—:qÓ|³wýþáë¯û‡çÇýŸ|#=>=ïÇ[_ªO?öûûŸÕS¹UIýYlÞEǦJX +¼EKJ‘ÓÐÑ*Í÷Ê‚-ë´¯ÖH›5æ7ax1ªZÛ<è|àŒa§å¼Fok”'j,¦p«¾S»¨¤ÞzÉ«mßÜ®/wH%üæ;^ksøW³Ù Þìþ…êÜNõö~ªiC鼡§G>û¯~LÓ)çæM²Y·l˜ùYn͉†ƒvKUY/#¶Ëæ,Ôæüã‚eªqé¤öºÔRzçUT{Ùõëµ6ì©xã7t¡íæ:[Zf›—žçýøâVtýeùë;üXaO&Š«;MzæQ¬á!á +¶®£yíëÒÀ[ØŽ‡±´±FV‘‹~˜ŒlÃVÖy»²²ÆÝ ×µ™°->)ÂÎ:ØY
;[“ägÙÎ:ØY
w:èSÕèE³0´ +™pφ6*¯ì†¡UÐÉЊ…£å©¼ O‡qDÌ—†6tùÏ«øWp#b¾œBås„>@ÍŽ°™z†cn¤Ÿ%kRƒi"¹ˆš9<3¾„©+¡ÊáÊhF•¸%꽿Áà0n˼6ÌÎÐ~ +j +k +l +m +îÞàÿc¿|v$µ¹(þ÷j3R²iÙø/Ñl°±£¬£¬²ÔÑ,Ò‹IÞ_9\0Tº¿©Å—¨8R7E)ðõ9¿›Ø9çEŽeNu¥—µ>vM+kK~^ô󲟾ÃÒ_¿„V„™˜]ÀVèª$ö‚PÝÀ±hødGH0èb ~1…NKb_«3xe«7È.Ww:¿øƒ”YNðÔÅ#””"W—è…¦õ‰=%~ïöð1àcÀÿÔ€Ÿxøð1à?
Ÿ—ŸÂ7ú;â"žœ»Ø‹4)Ó¿Ò‡O×_„?ëÙÖ”ƒ®²N¨íû/·Wuþiê£.Ö<)¯íÁ¥û3æëñ•òO Àþ¢qŠrsñÁ׸R<y'5ŽáI€—¦ÃÎô”\w¦]iq½w—åéß!îFú0üb>¥×矿}~þúòúW9^¾|}ýtùá·××ϼ<_¾ÔCé~¤Ã£ü`áõ‘rÊcŽ9€ë{0²Ë6›¬³Ê]–ÀÆœRSL´ßƒŸ]²É$Tê’LbÌcÇ1Ž]@¶v4ÚÑŒzTc7ÊQÄScŒÍAðvÑFuT±‹2ŠC +cˆ!pï广1ܦL½úâ6#rKÑsÿ`¹cPÜ%î
Fn n· +E4ï‹Å6k¼‡èô«ø¿‰Þ|jx›è'î4œ‰Î¿z‡úUÔ~¸‡Ê€þL¥Žž³e½À5²L#M°¬YªQ»ÉFb,nUšEp½U±Qh44êùF®ˆøŸmdéEªQû“ÛML¢òOäF©ÑØ(6 +†E½èiúÃò\#ÛÈ4ÒÔ*›÷ÜhGu ™Ü“L•e9–¯êY+°æmd%<‰b^ž¾ÌañÅÒU†eY®Ê³zÖÀ +“ÊMÊ–XÕˆë+/•SüMUi–aÙ*7‰@<“zÖPXå9Ê=泧Îs)Ö®J±44 +]5RݺßÉ_Éíd¯Ä¹@5ŠôNêJ{•{Ñ(öº‚ét¥ñJËFõ¸Ò°S%%˜.Õ¸-²W2WÒ;©YÅ·Ò}õ¾æh/zËIïÑÿó€<%9s;um’Æ#q,’G#:¬]HH¦ˆ„T‰e‘\/´Ã*à„„d‹ˆ¸iyâdxEL5/¸ˆ§"
\wžÉpit0ìHÈÖˆŒµ™k‘½áÖÁ`NrDJHkÔ¶Ho|ë`F“°°#R~@Ú{¤¾Eúk$\Ó`„e pÁ¸Á‚4R®ƒ¿ QÂºàŒ¼áÁü¡‘s|P +†T/4_ˆîJëPÚ‹Ò‚”€Ÿc¥ ñ¦UÝnùHYœ¨B$e¹Ñ1©«Cé#BîHöDîP~5úC
‡ +‡BjÒžYã¡N^êº+Elº•mϲï\¶ý˾‹©.»µß½9o{oì[Û´†mhìay8ûºY“jÓ
ÉÍm{´o’j–Ú¶!ìwÚxîm´ˆí¶Ÿ¡ã™º1kt2}'S¹‘=NïÙDŸOù¢}è_÷»×ÚsĦ4èªB®«äFÅl+g[=gUt\M§•E§%Æ*@~WÝLJL÷Åqïè¾8n2ÝÇq="ÏRÐ RR‚3‚tD´DmèucƒtVÈk †ÌÈó à=ƒ¹a➨èLLÈŒ·ŽÁU3JfNî̶۱ÉÇBQŽã<‰'TtYUt’sEþ†ŽÃÔQÝ9Ë`Ëká–®B¾ýxLEÇ<1KžaȤ3)mÑYÃF'” Æmlßi{øïpE…ßI<MG”¼ˆ§ÞÙ÷Ø‘fêé.ËW“ìňÜdºîWúðéÝ×…?q¯¾‡=ºËt•œÌØL;Ö{cד}s7žÏc;¸6ŸÐ)d@Ç;ŽÎ¿G¬×Kls‹÷]ÆwòFùé1'“–ªü:ÑyÝü(ÝÜám§óÈÂõJÚKûr•ðí‘å’®Šw]Vî´œÙk×ñš×w멇s}ãlŒFú0üb>¥×矿}~þúòúW9^¾|}ýtùá·××ϼ<_¾ÔCé¤Ã£<~xF©>¸öÁµ®}píƒk\ûàÚÇ€×_/\û‘`$†â`,=&ÀhFNH‚’ƒ1õ0¨ +Ff`hÎÖÃáÁêFX^HX ‚X¢ƒ5ö°È +Vj`©ÖÚÃb¬v„åf +fn`ê jü +~Áù‡I°“Dñi8!EÊpl8r°Xà^,6ð¶ÿ.REI½Ýs'°UÀLOÞÅSÀ˜±"1XUë*€s_¢l’¡ša¶Â1<#0fF¬HL +‹èõv©È·:~#ÿ×nqí0ò +tãcwîwmœµRóǵ/_›ùµýߦ†ë qóR÷íhg»M×gî«]t–Ç夯"]û ‡¥ãq¿¸ìtÛt…SEP;¨óæ +Ùa:At{йàVg:!ž°mT‡|w‚=FFùÇ}‚:Av˜Vð¸À˜¿¯ð‚£ôÌN¯àù„k3KÜ«rArÜg4—‰»ÂÀÑ>bá…ä“K6™¤“J/TÀdheŠË0ð¬YâR<yͼˆó"
¼î,/$ÅKCÀ³hsBb™‘\<ŒE’ÑH4>(àìAÒyFöñÈ@YH#IØ¥ÀÈ0‚„Áž‘<2”E–ÒÈT¦* ì#aÌg„/f iL#•Ix¯€š°„¹Ÿ‘Ý<2œE–ÓÈt- >Ì*Afd?h‘52¡„“hÕ@p¹M˜‘=R¤EšÔH•†/ nÌ1A#f¤Oj‘F5R©D,PÖšWçŒøš)i“:× ¡épуÂfE¸—hÑá¸5æÆЗîu8š’§Î¶zS;Z^oˆG»l|´àh¶½‹GïÚ +KY¶UðŠ\•³(jQÚ¢¿ëV»9fŽ8†S(VQæsµ–b8ʼnV*ÎUø\È ü()‡Æ-ÒjJ:.áuÕFÉP]a2Ÿá¾"0ÊsÄC0m£ç1WÖäHÙ°M~Çh·E·&§ñ5Š|iÓÓ’>ÑôÒÿo×Ëk…x‘,¼,/ÅÔ[f;0¿‰™Cɤ&Ê35™†kyÉðábE–öÌCè‡PTKØäCÜlT‹8ÉìÑAšn:YEºÇÚMÎ}äÜAv¡<WŽCÍ ®_œ+ŹFªÃ¡5À`èTÎõàÜÎ`µÊ@c¨˜+ö°]e¯é»»è¯Ž·o•;rƒªÐL…Ýà*ü†ÑZÈצhèkÓ–_èkÓ–5ôµiK-ôUi‹¥šBYxÊó¸<[QÌ ÎƒLŠ5ˆ—X«dÀêIXQ3Ö™çDf8kIŽPcNFÄ(ÇÏéÅp.‘7FŽ¼|K;¨ýã+ðÊ ã3 çv{W'œôc‡7(Á%Ðúá¼áŽ_ºý×ü9ÐÓ»†ç@ÏîØÁßîÿõÜjÿø +”Ú;”…põœíYöLÝ@5{µ‘¤ÝÚÂ׶ ¥Áj‰?›Çά„;îÚëEo¥SiU
®›ê]CÝ›i×MïZé]=ÔPºì wíSÝÔÎ&ÕÑmÛŽmó4¼ço¦ñmxwNñ–?!Ô|ßô›Þ†¼÷ß觟ŸÜ;ü;Ÿ×¸iÔoí!JLóÍv„h/ðÒa|%«&kñÿ¼Ç‰ï aÔJ½ï*›+<·;ŸÙ •÷0êS«æfts…×ã+9‡aÊÍä¼’µµª¹+Û\âÉýÛ›´jt.ï©rüx¥X!W\?u®"ýäÿª~Nßþò¯_¾ýöýã?å‹ðý×ß>Ö¯þôö‡¿|üòÏïßÞ~_½‰?ÒÕ—XLò-|ÃBý3±È¬m©lŠ¡Hw¬pÜJs/
ÜMs;ÜP3r—äõŸ«¤@“eÎ"¥y¤µˆÜ¶`œÆ|6S#éå¬ç9ï9Î|–sŸ©×/÷R¶r¸_¾#NÌ©"Vì[¨ð®ÞåEʼ͘{Äl-?ç'8bÆq‘ŸOËÏ;ð3Í;^ßïövë;Âä×€R^¸oè·Ø!P_6¦¸>åÂ$¹nA¹÷ÌI,¼ñ’ÍyãSð)~[ž àÅÆ£ +Œ’È+ÞâMLe¼pA˜À¾Ô}G‰Ôû˜¼rÏ£PvòÀšÜlŠˆŽ(N5º ÞZks•*Wqx[Šokrº0
šTsÀøŽzdš«¼pP¹Š¬ÊÒ`Ü(e¹+!
öÊ=žÚûÇtd¸’!+‰X•âÅg¯”pQÍká¿Öœ:ÂÆøeÞðB1Š“ƒA¬pˆ9‚̈'i\²ÃR³<ÛÚ,ÑÃ"m—i»P7é¡:u½æ©[,äó9MQ…nŠv‹–êÐV0£»&µp`‘Ù&Âc/´\rh½^=먓^ô‚çó¦<å8“Î*Žñ&˜ÙD“€©dD0Äm[IVÁÚÀ6g½
v¶HvA9KNI…¥“ÏdsÞuvÑ%· ûäô& JÒ+¯ ·d¼õÎ{€ÙGŸüÂqiD`²þâÙt0Áœ ;hL XX‰*¯¢òZ˜µ³¡2Ûs[Ø5»¾²i%¸ò» +ÐÊð*B=Ç»u,ÓªH›Ç¬ºÔ3]¸N×cåºc›˜ðLwG8 ™ï3ãÌ9çÊÂùT9gÖ©¡½¿lÄgê%xï™/ܧû±rÏìSCY +ðuÄ×±òÚO¬¯¼®3;T^û©u•×¹ðZ˜·É]¥ŸÝÕ`Öé=2[†N#<Vf×6•Ù~Šs\¸Å¦n”·cåVVnMÇm?Ï¢rv‰GÚVnû¡+·’¹-ìºm®»Ëq² ä–á¶Ûp‡:ÜGvë€oóÍÞÎë®Â»ï +¼ë﮾»ör}"ŒÇhÐ-¢ÊÏ®²«Æî +»RÒŠë&°²¬ÒFA®MSå6V»œîbºKé.¤<EÄ/zSÑFBw]åsÏ]:ØÝ›f9+¬ CàÛq›9 !…A Ò¢„Èèh òƒßbLqžŽI`åK,S}ÌSF
œŒ´qÚNüa +úæXWÄÖw†{ +H‰ì—ËŠÜÈE¿ þAC{’ÄûÑâ!5=nzÔƒÂP…ñ kàîÿçî8GRJUÊt¦m¸cmpÉJ…¤xœµwHy×!î»ýçÿo(þ#Ôðî±|BÙC™«Ò—%ÔõC^–œŽ$ÖÓñŠÚUÕÄþ¿²\U¾¢ÄËÉ+Å+ +×$¤¿"wU“ûÐW…’ZiqÉã™ß“ÑŠÑå„áV˜-ƒ™vÊ« ¢J*«¢ªjjT“–˜J¶Úi¯ƒÐQ'uÑU7=êÉH¬mŒ±Æo‚‰&™lŠ©¦™ÑLVbik¬µÎzl´Éf[lµÍŽvøVå´3Î:ç¼.ºä²+®ºæF7¡§Êko¼õÎ{|ôÉg_|õÍ~Â0© ƒ 6¸àC!†r(¡†Æ0a”UÔÑD]ô1ÄS̱Ä[ã„RI'“lrɧbJ)§’jjiL“À«¬³É6»ìsÈ1§œsÉ5·<æ «C]L±Å_B‰%•\J©¥•±LX[ªêjª®úD5Õ\KµÕ±NX™ªéfšm®ùZl©åVZmmºV£ÍhGG³:âêxù˜.é°® ÔEé‹2—$&{Qî¢üE1…Š•.*OYôT.ª^Tëüç•®ÌÅöXjõ»?ø?~àÎ^_—Õx³Ú‘ÄÁÅz³Ê[‰£‹P¾QéµÄÛK³â +{‰×6ò7Êm%öÿ}¥M +¢ò„øˆ¦o“Ÿjð™ +·)ð˜Ü'† +eg¢â˜¹¤ŠÖ´Ô
Õ¹£ÏK¾‡ûDD(´ò+¢cš+@JÐLXK¥àˆ4a.ˆ^™XT©0jšËC½‰%¨y**Aõ’‰•ª¦'ªÞ%h⦥rDÓ@…Ä¥Ô‹©—S% +èÒ}Y„Õ®û"a™•Û}É°äJpHì¢Ê>eìÂÞÛ÷¦lWØ°ú àÿêW‚Á2äI›àt?éõû ß<tùÁÉÜïíþïïnWþéïRÁ©€;@ûïýf… ˜o6î·0CH§œÙ¼íÞ–ü¾Œòç/Â7¬/ðμŠÛîÝÛ”Þˆ™”©ß[”Áõ»ƒváhT¬=%k6¯üŠ¶ôNŒŠ»P6ÚÙ>%Χt8éûVçw~E[¼³4ñ.ÿîÇ—§ß>xúôüò/_(Ï?½,—~~ùóååÃßÏOÃÇùÒ`Þ‹£‹º4”'^¼DûÖSÿo–ðöþnTdS_¼³?O=¼ïü
„ á+i^nûñHñ„üã7KæŽF¼<—¾cÊ6ðú”´2o¹¡Ñþ-L“ñ¸:Éá¨/_nôº/Ñ{Ø@öâÊí߶ÔôáZÓ}±9^l};ªá)ž•z+‚ð„X܃mµ‰m³=Ìö(Ûƒl±b»³s€äãˆø^—èº×mlýBhÝgVñ&´ncë9¸ž£ë^9¾.–#,B¬@ìJ_d9Ê"ÌRœå@«É6-ÅÚl{´íá¶ÇÛp{Äí!·Ç\]À‡´KyWÎæ¤)÷ʾ–òoOÀžRp $)
'JÄ|òèÿ c6ŠÉ¬‰UäªÙ
ËêÂŬ²«(ÝþSüNa§¸Sz£¼•˜O.õŠÚ‘ÄÁÅñ[$úþá{J|ßÇý`¤˜J,1`‰Gñ%¬Ñ…&4AzAJË+O$xb@¿¥‚)íf¦Ú"$Ú0U$qÅÒ€¹’wdQ¶¼¥Ë(6€9#&lÒüœäç¿„xŽðç +.efË™.g¾æ
eÄ4{Ô˜•2Ç´9fŽ‡èù„v8ÚëN·aêð7ßùʽ¥ÝwÒõÀ3K,‘„v8JE<å¤Ê"œDíl˜Èsü)zð†&Šy?Ó)ÑÑùÐéÀI£c‘À8X¶/㌠+FûLÁ©¶*ÉZ¡^_Ѓ ß½ÖÏ¥ø p¥«†¤IôH~<¿Š^Ê€OY_æ”û/ûe³ë8nDá'à;xÓ@²¹ )ñ/h JruUƒº1˜Ez1Éû#§ªHŠ²e_ûºgÕ£ðõ•EŠ”ªNÒãJ» ’e8Í‹pÇZ¾ò Œ%,,¾_ +'W&zŸº+ÍÌVèæ}äj™WHp¹Ò
Üve—pï\÷Rv¹£ìr»ì‚ŠÐá®wξ¸ô¦Ü²9ªm]ªô©¥SåAg9ÖBõLs!¦BâAÅìÎÜÖžß÷º}z[Xáގݶ\·ÙpeÙ,ÊbÈ¥’Õ•¦:ÝÈÐA•-Óæ9‘ùqˆ–܇'„¡%IžÈY,àüðC$@‡-59a²4˜'„™_àŸ3Œ{B݆€é!%M€Æø»™ñÀ&<¸ˆ¥{<ÈÔâÁjÜcáÒÞâîQn†w;6ƒ¼ÙæÍJ§Ž«S·¬±½³ò%ôСK¢>ÉŠdz:&ê™<÷MÁc[èžwPÔCQ5—»•°å Eت·Ã.n½Ä-ŽÈ˜8 +'~ù‚-ž÷ѼåÇ…È„‚dŽ+Ћ•~û„a´PîSyh‡x%è¢îuéÇÒAÆÖCÒ¾¥‹´“¼H.õp'Ùõ‘û*Qrœ‡¢a)cb#¢1‰¼ƒw)Ü« ËŠ‹Ú„"Eã¬÷£eAƒ5£»S(ž$w±ˆ<ZËiy´:ë°<²®&EîTŒ•{¼™‘*N@‘NR|ð¶‡ã’òØå/U–CŸì÷•¥&®aô¢)58`‘J~rÓwc'3iä„?ÝtÒ˜N32«zU¼ó¤1É€é¦
ïLSÖ²hY ¯€îoG´£óü¦ —îÐߌèçÇ–Xs.&nŠœ1þÞ¸ëÀ~~¬Üv2ÈZ“ÓÇ
ÀÍø~~lÙ§Žœ†íÞq}˜?3êµhׇá®)Þ]wÜÒÂ{õ¤g½cð&Qª¢™ÌlV›îáÁÉ/¨ñ†·‡ë&Ͻ”f…¼v“BKA.ûŒFÃÂÎÃ)»è&—IìYêEèIæEäEâEૼgñN$îªX§½´¿+ì%¿ì–aSœðó4©)O3jýʆDg“-:4Ù¡æR±Œ9e\”sžÙ¬0-x6³™Ñ £ÁgGµ™œÕÕŒ[ÎÓŒ«g:È\¬ìrjêW;W
\µllÒ +YØ^¦š¢z3P‹v±s¦™:Û¬ÝP
ž’â_œ^ÅïÄRjñš|“ù6ª|Yžb½º÷ã]nêÖ=~Ä º–°ñK"æÐÁ¤&bÆÖÁ2“ŒÍEÆ,ËX„lf!3$dŠ•,BÈ22}í¤ÌCÊÄlnbf›kžµw¬Å¯ªbXçǺA–µkaë¤MuêVõS88‘¸•%NDn“¹^èXêTÎÚœ[¢xUóªêuºR‘¾MüŠü)–šª½²»–¶od÷
ljÊÈê¨J«V›·zl-ޖĺa¶ƒTuBºávøÂqCuÿ¤LwÉ{Ôå‰Æü1ÔExõý¦úq',f€Õ„lÔbæu€ A
j”Â3'ÒÊå™.6šÆ^m„Ô986ˆ\[„è%ÝCÎSúræQ +P5׬„ÆÒùƒ±¡ŠöÎCI#I4’Ì1³Z.ªäÍPBŽ8Æ3‰LbX¬à‰Y‘¤E$›¿ÐÞÛhCa;\ÁŠÿ„Fl¤ÆÔÈsDz¡ð±W‡ó§/0WØU¾‡Œ7¹y¨ò×?Dxuu*¾†:<>ŽzeðŸþA6 s,^"_S‘.*Çç"[Ë–H–VU«¢T¤RŠeªJ””È“ˆ“Ó¦I¢G½ù¦@¬>J„§¨NÑ›¦3Ua6e©r²‰È&,Šu¢ ÃN¶<ïsxŸŠûd€‰SøÈ…¹PRó$µÕÒ
S°¡¢üØÑ«A„Ž¸#]0)?íÈWÌ,7€£R—«p~ Q'Í+¨`¿/¯O8ìQ—'^åGœð'eNŸ~ο+£ô/ÿÆ5ú-
F'üÆ”"ǵ;ÑWãOþäôÉhòOõéçg†äÿÒ€?™áäÌ›Fï×MtùK½þÍ;üàÍäÕœ†ñÍ7îÆ_±0+”öd±P›ÂÁøË+Úødz?h;+ó¢>Mÿp?¯ß¾üý÷_¾üöõÛÿäDþúëoßê©¿þò¯oß~ùÏ×/§_Ë),û¯êð,&Nù½T ‹&é~¯u‹®[S7Û¸r4a|upŠj1Ê *Dš‹)*VT·¨~Q%£ŠF•jœTªTtˆÏ×MµQ+*“Åž¯1îs!¦FjÄŽ’oª|ñÜðÇŒªÿ§œ¢'Á{μÛÈût¼?Ú—æÍÈ&2/XèËÌì™ +M6]\GfBmù‘À5—ž·<1j‰èàöŒ.j¼ÀÊ,…™éQì|2P%uÄ(XêàT'nŸkÌ<¹wSF]Úå!¿vdþÒ‘]²½«fL¬X5bbòª¬°f½Øxñ=Ù\Šµcɶ²xJWüd*^’œ¤¸HËRÜc,«¤®Š—'KË¢¢,‡Ý`{È¥LÀéÆ_¬v£ ø¢cGs"‹ÄCDrß’…»öTR¬ó6Ò,žK +]l‡7ì.Ò þªwywIOîàÅBŽê@ 20ve`Xíæ +]‘îeë[ö]KíY¶~…CJ™¶cØ1 +y8|/x1,DŽˆÄG³ä,,2+IÀúö1`7¡tÆîì2c· »Ø½#—½ÑI!ªŸ®GixêîÚnë3(ÏeÛõg%RíaÄÈ"“ +“saaÖ^*+*É3éI5LÔ`&‚&ÁèXšÂ€B‚¥>Ϋvö8,†ËÀ¸¥5uR}.WaÒl}ÐõÁ×Q_Ìt©91D²w0•MÞ@ hú¸-S|Ã’}Ÿµ*ªcôlge#ô›õaà-´>µ¿ËÃê]’/Ë!’Xé›ï˜·BØÝåáA¸Ë;’`áåyÍ—ãLùâ„îÉQ¯é=<KŠgEñ>«ù;™p¹‡ºÿóó¼6ázâÎÐÔÒ\½¦zMöšî’ð5åKÒ·´—ÄGê+öÕiT¯Án£ùê8ªç×Q};£â‹0£*î£úê@rsCÕY6É£sÈjï‚‹ ¹Ée0C"WpöZyì–ìÙˆ+éHÿ&Ÿý¿‚34ˆvnaâÈ¹à •Âr˜Á¢ÂD˜ÏõXw,Ì;òŽ©Gá#íˆ;Â~‡ÛÁm‘Ô#aØaw˜zO¿5…ý±\°¼ûkmÿ˜‚ôœû=0¿ÍúJЩsq¡E›Ä"„™™„˜ØÒ‚KBK+ªU…tÜ áó.zTSœbŽ3*ü +ë ‘Å˜‚7¤˜RšRN3ªÿ +K¡Ú+Û×LH¸ö +u×»Œ–‘ug<¶íxÛ…ŠX‘*rGé˜ÿ™7øàs)pÍàõÓ•‰ŸˆÏ&Hš>‘*–œ®ÈA‚Qüž+¦Š¢q„åJ+ÄkwAm¾’Óà焧–yšgÄdf ¬9ö®Æ;Öø–Æ Ëd0BÅVu],ÊX´qSÇ¢sWɦ› 6_Yƒ{<Ãâ‘àÈN‘kN&N‹ +_á:ìæ<Ôæëj(áÀíØã¹z=Õt•Dt–3>‡¯gqµ¤4d”äW9#2s”°ÔÌ{í9ÅŽÌVÂW–“ÑsjÆÊ[™Ó¶Fv»ÈxOoî|”[Œ%¶F÷Àq9¢Æš]1rˆ`€é®<“,+5Ã8»8³hÔò["u`pS°:ZâÀ¢³ÄV± ¡ä…®0{®IôAë„@ÑŸQb'f"ÞdŒÏ–SkrߺÊ+ÓÚ…N¾–Ÿù +%¢?A8Áõ+]Co:ꤕ1ݹA-oÀîaPgŒûú¸å¿lx~Ã6wX”bWLà‰Â¢,#xa#À–I ¡øg*z¼å2O\Ü;W0êVqÁR‘R]R-RíQɨ ƒ‚Œ 2$Ôa5 Ä:uòt 4lǃՀ@#O“%y.ù8%Ö~e¢kfm°çéì8ƒ7YLXÖ!¾öÔȪ%sg-,hfÅ
vÇJçÐÛ¬ÞÈéEL/2z-Ÿ§E1«IܦÉc×~Mÿu
È»ÁŸˆA†Z½õ´B¾·:œO¡ðß9•~óu¸j|úv¨»nx(hCó˜P»ÝÿfÃsœ±‡²0Ð +>¬-éÌúí}}Jr}ºh1ãNè‡O¦ß†ç‡ËW¿yÿâÕÅëË+1̯ß\\6ÓçÓ?_^¾xûúÕ𦚆žª³Vlì†ù^Ò +,KŠF@xŠÉ/0w‚ rù +Ç°¦Cýç‡ö'Øm0ŸÅ¤¶¬u”›Áï+RG^¡œ`:Á¼‹µ‘?·ÌF÷ƒÂxñ¡±£f†pŒö¾BÅ6@g‚£n‰ËVÞ+êšéã>lŠ†ß4ëZ÷„¦vAkh󎛾Ég<°$ØAP“+èütE®¨è HÅòBsp +!ÒŽk§†· +²yüv»ÙV~/ëÄñ¾÷Ïâ9Þš‘‚àWf¬=^òà‘7VNâýèµFÀÓhQ†ƒ‰nÄfÈpI§ÈGéFG‘Ãô¥y, ÒàN…P=öi69HÑCcõCÂûÐãoÛ)³tJÈþ°¸j!‡qJ§u–SzøN§L©ð)?eŒv£+ÙŸ&M.˜HàLKx9¢—瓬‰qÔ±¸Ó´)fŒhKÞàäÆ…ôøÏq5щÞÖ¼‹Ê>‰¬A)XÎéÚ‚·ÀôÚmNG_t¢‡¹‚YN˜_ÐoØh8à?£‰8Ö{3B%¥Åò’HƒY߇v:´CqcÉÁó•Ú;¬+e$A38ƒ.4ôï Ål¤„š-G¬CTx#3˜b`ø;€î—°k3²GÞ•!yø¬8nbîöi¤^ÚïŠà!íQ•Q +¿”ì ä»CFÊ2 +žó\…Ó5¢[D¸áÊTi0V!CAÕeH¾1Óˆ`Å +õZ%d,Rùí=Ÿê³ÀÅœ©w›Å€¨‘Ú•e݈hQ¢_{ᶿñÄ;}'ƒ/œ&5E¸óâ·X–¦÷öÄH'B–€•s‰ô3ô~íÕÈôf`{yË](r‡—Õvi_ë“dQ3&ÄÄ"Ãú.§%èϪYÖ<êw5û>›sѲ¿?ZµÕ zd
Þ't25xÝG“Hzù8r…à¦Ò ¬,P°PΖĵBV´Ã(VʲX£‹X(Û ÒXµX8h+Z»õ}º/@,ÂæÇÅP•uÕ˜ñÂíÚ6ÊH“dÝò¼fhEÅn-wUÏÉÀ,уAÚóñ$°DŒMCÒ¹\†k¡lïë%V)F랎ŽÖ-ý…f‘Þá žbž†¸amò‡Xi-DÈL8]‡?÷¬eH³ý—÷ò[±ó¶¢øœw87…äÂçÿÒecrÑ⦡êRJ¶›¶àiI¿}KÒÖÑ9NÛ!Ì2ZGŸ´µµµÖÚ»YßMbk"²¬ç®ôfOM觽Òù‰í2oŸ™ÊÛÚO"òV'Wo…r%ñV)KáT>…ÀK.ƒèmÓwWJ±\佈xó&Û² ݪìê¹!·ƒ<Õc“vŸ¨|6ß•ù½}šÊ¾Æ›²fÊ®uswa§[~aÄÒí‡ ¶)]©zA>!ÿ…IºÕ#˜¦W•Žt“tņyý +e‚Îxˆî¦ç`- ¨&ç—9–š#ÐD½’s*;7ÎjjNÎæe‰¹w-_Ø”òÛ«} ’süXk¸ò…uõ<EèÕïn*^òHøšƒíN5W°Ñ&ª›Ê»V˜Ò¼vÙô{Ebs,N[ãæ,O!Þ¦”¹Ö]»6¥;_*õ¢ÝÔÖÓ]Kw‘9-á¢Ü +áŽÂGV åfë¤ÎñL^§ÆöÓ£ÝØO'[H>šG2mÜ·PÓxä…)§n¤UéAÞÜ`ÃN ²Ä5A
¨©ŸFVãI‹þooï¡
êSúu¡
`TÄ/Qï¯õ}Jï+hyq¶6mè8öš\ÓZÃÆs›Y&K¼7þ¿Ö€<5¶ÏžcÆbsf¨¶Äõaž‚ö=ÌÖpº ÚÈáK'Æi“£ÐE(n +€yî=Ü.ÂDB¦Œ=E¿D@ã´k +D†…ôÅáRnö±Õa†X=ñf¯ÂâáÆžº +Œ5‡ ¬À'ŠpÉc+Ä.ÉŽ‡S$_Am¡É¡„š‚÷p F-ôDF˜9È2ð‡Ï(ªƒûÜè×,OŠê°½TfÌôú“èö£ûê¨{_ã4<ôû}¯½›O-tÈÝøÁ€êû«k…+
ìEd¯åzÔ°²{ЈDö¤ÄædYyª’ÊJ¯,¦np–f˜¬…Øk'g +ÙeEë(ft„Ú\Ø ?—ñYR-7i~U’ã8†cPÂ|ûòüJ6Î[ÄéÄÇ![A©. +ïýšA÷}”éw®5ÌÔÀ–0š·]v-°@¶9=PS;Ì.v`SKˆ ÁmÒìb¾9}yúÕ¯¾ýòþõ×ß½{÷æ‡{“Æß~õÏû¯¹–wÜ̳gþâÍ÷¿ß8}õ/ýRÇ/_üðã¿ÿfë|öÍýýwoß¼æa}~âòøïåO§ùwt"Ô¿—ü–?þôÓ9žwþó_ŽókÍýÃéY‰ƒ[xg§ˆò5û¿¸Q¯C‡× +?‡ÏïÙð÷§“ãnsÈ\ sÔξ©¾“È΋¥pVý]®y®0œ`y9`˯ô}VŸýt¸O¤Ìí?0Ñ!¹ŠÐm¢óñvâ{Mä~Û7GP´¯¢Ü³3Oôüt=×Ëñ÷¶EÉZKá&€™ÊW7‘"`"áëS͹nŽ™»¥jÎ}ºÎêŠaÏÿŠöö¢žŸþzúæÔΟ}~~ùGþêÕI9_Õæÿ+ÙŽžé„®Š÷Á¥[^¢ª=¢r*¤yç#—Ö‘Wˆ#¾"·/ì«‘ñ•Ué÷'7öÐ")ÕÌ'
Ïîj»‘'è·h%H6$ª! +^ZÀ±A€0wóE3›»s9‹NCàÝ9lQb–æú4‰¹ÐZ†n~/Š@bì]xéì§ËP÷+Ë…‡sËLÝj«|y.@¹‘Ÿq× qsµ4Aê'u°JGâت„2# ˆƒè⤡Ô\ʽÈT‡”U²UêÈ¥æJÀGSú°Þ㸚{”C9¨X€ÔÃÒÌ,Fî[E¥s,€0Ô¾ +¾hr9/hóÔ-R¹—U*ã^Kj@-xÖ
:ßl•‡ný¤4ƒ›z:`êõ}ì!.š6ÑMJÌ +C$ùõ^¸‰Þ›fž¹ú´N?Çf9ý^JhœÙ«ZÃüOp¯¤«8;{¥Èúôø[=@âÙ';#o»gŠà-h²€ýÒø×€6“œÏ-Ê>ä'1øž }ò²a™ÐÀíÑ6ÆObp
l7¦¶Î‚f0ø^ùþ¶øÐy'<OW¬¸Î'@©}[ç{‹Å’óØ»&wh6ü™›ÓØc×ëÅž‘Úc +M9̒뿶Áoß6Çß¿è©£}þú'û£Ög}ÕcÉûDVÌ}Š¬—RºBJòŸ”¯(¨’ºÎŸôÿɨee|5¤õ½ã"ÏE;í(ûϗߣﯿƒÿöc˜ÿ•bÎFl~ÝøûÑÏJºå5_ØÇë˜÷ ª¯÷ÿ~[øþ¹·p5ù£›‡¿ÿQý2_ØÇë±|ãåwèûûïàoœüãKYþ_KYOë·À§ÚÕÿ¢lõ‡Š?Ôëø¡,õ{äSêï)OýZ™tç©+ºóÔŸ~|ªEýß—¡þî“ra–¢¤«9kwE4Å¢òÀŸàXZÌg%äù ü2òÏKußSåbêê;+DbOÌ&Ìŧ¤ð{ÝŒ“k•® XÒÏ0Ùfu?#5Ôtóo/…œ›\7¯Óª]+0##Í
h´³«4ôC ý8+G¯4Ìâå,ïØ«rCÄŽÔr« +†·þ9:È[«Âq& +¶Ž¡Ÿ2æLö¬³c´²z„^XœÊƒPø×@I¦Hp®5 +õÉéóäÆ‚Ù7xî/b¶Ó@#8–_Ðæ5ð”xÛ^Ê°z÷GŽ%¶F—W´Á”kkšÏ/©‰‹Ò + ¶Ó1y’¡\óôQ‚MFí +t½¯õõ@§ä#á8ÑOq6/0;îVR˜w'Šâ.*ÀøÑMŽ¬M ÞŽs§D{í»-X¾”—UÀ=W–‡#Ó +”ÍŠY‹„°5&¡Wa#˜òæî÷äÔnãaQØ›S1Z»À®Ì¢TÍžÄƢ׀ث9×%ö³'³–BvLJÎ4ãTÜ„ßSÐJì<œ('E bûà Ó~¿IsÕ¨= ‚˪?¢-c=\¥Û·¸‚e> +ÆÊé‘£VñšÐ÷ù®˜( ömV|r̖Ή²kN|´ÍQ£ γì kË@£©}v +5•@_M^5—°”<z:–8:–ãêÝy8Û/OÎZ* +0¨äàŒ Ÿ‡CX1 îgnWZK ·P7‚37{~¬,¬ôIüoØÐÞ÷i*¶fu^½˜àÊŠ«Ï" +±Ú¿¤Z4-À½|oîWw^ï25a 8áf!‘àUuI<sU€PÚßWZY˜^Ø»À6nï 5¾÷áö›åß ++×™Få¶ +°ø,¤žu•œ®§ö[£O±7-!sWœ¼cNgæ[T.|åèÝ31îá\8ÔMXÝÆ j˜9.\¡° ©{<nM»nÅ)âdË–„͵˜§¼¯ÔÁöd¬ +`u¹7s_ ô7ðvbÖÈÕx#ý»À^Ÿ‹=grE¿5ÿ¨<qk)žK?2mh®…ã4&ÝÅ>ÎL¤|÷á½´Ížk×äh¡³ò “/»è`€¾¢[§ñ[ãP$B¬íw‘§À JæT€O>/ŸM4CÕÆw;Xæ£7^ŽWÊܺ²ûáê%JÓ˜Ò
‘‘êœy</€Uœ«ÆÖêšT
©çŒ/);.{¸&eǧÄׄœ/ƒ\VfvÉ؆ÞÛöÒû˪ŒÄÙnù®J§AËfê9ÌÝ’d·•àÜBë
È +•U0&×ÎÅ!æ +žiVÑ2µ_:ÉÌ >ŠÉÔð>n,“QVÌB”Ý"V(êƲ¸2;¾äú¿‘M8j€býiú*Ío~$Šº+¢ò¶Få›p‚ûçÇù¨–ü¶qüAÿÙ;Ò œ+4¦Ÿh·RïN§ŒŽw§qÈû¤íû1Í&§º +P®RohjÂüRÉ€Õ;÷Çl‡Ú{õÅ7Œ¶¸O`Ç*@;‹ÏeÁÚXÏ'XlÕ—%SýeÜ·<l×sÍì¡”ÙŽÙÉ……ü\&9 +næ©®$vV`Lé;4\½ò!ï„X‡ÏÕö÷$èå/x¹€gc¾¬Ñlª¨dbž‚jm§Žó|íÁ)iIY +«:j¿resáX)É|åj#@;Ô>ê+â^8 +fÒ]‹OŒhYü{f€ò.@§¢àÏÁN¾§ýIƒ}P0ŸÂДƒýÝÃS[«$t±¡ÃxæüšLàW‡½SÈ;Ñž«[V€¶V^
nIDvyµÅ¢5Ò|²Û׌Û÷žïÂÎ\þZ‚"¼\Pî¿ÔYaɳi¸RuaW9ï›¯Ï +ì½9/¶ ®ç9Vù¶"ÀvÄ®ÍZl«ñs~ŠaBòJZî˜Åùæ°X¿Uî F¶«Çk¶Í€“N^/Qip†x;sPúÅ:Úì€Çå½Æ¤o˜°s}ž\àÝý.¸ÐŸ›…²•=XöŒÇª=3A,|SI,›@ksÕÔM€Ë»ÞØtê7³‘.Ìx†Îµ ¥p‚·€D—îÁ+ä¶siÚè\p‡ì›¢\Eï-f9e€8ùPL´]Ñú`! +H‰¤W[‹¤·ýý¾—€ýàF*©¤ÒãzÈC²œ,cÌìææÌ/Kþ}NI§ÔÝ3³äÁ,Ó‡úŽê~‘1Ë£ŸK«åøÊrÉçÚswÐÎI²”®uIvÿëî´à¢pµ¹V]`ËeƒÅ:%KW¤³ö\(+ët®Úù½™v‚)
£`kûóTKˆf«Ç½Ã2ΚÑ.³É v9I¨52ÁÚ:ßÏR(´>–J‘)*ç>lŠ¶s×næq½e‚ ô“ ƒÌšuLÙ +»”²àŸ~ÉfA+:HÎC†I¿ ¦ð¡Hms“»0$
Ã:EE+ëÄ÷’– M%ïïs[©½úLç6$¾ïy(…¦šfF2˜ØdÁ#%ëŽÏ%ŒM3 Î(¥£ÉýYÃ1me‘ƒ6XDµP+m
ÚiFÅFJÌ
‡k2ÂCdÃ’"£–J椡oGºÌX`ëj|® +<d©šƒê ‚I¢¨œÀÙ\tö…®èLR8K°yœ’ÖÇ…À”²Éëƒ šHh`Ç«„i¡½h†„{¸7}¦D9wITWlu<€CŠ-°¤è¤/yïù`¾rEÌàrwz˜z‡tš‚£ Æäp¸*e{±EhIŠî¬Ï¸ÛšõªdÒÖ¬Iαê VÐBÖaôYõ‚ +Í4yuMÙÒB¶['Ö|¼ú>kÈqa›Gà1àŠõ•}Í7Óbõ<Y þðíRË%5QÛVZ§$:ƒ9Êš/Ÿ½‡Õ|ŒJ“.ÄÒÊ>Ó˪‰æí=ÑÜYÃw$è-’L9§¬†²mùÛYK&k3i›àZ+¦]ç*kÖÕã +Ò—°/÷7«¬ìšmÃÏHÈ.Þ ;å‡7©GÂÑÚA“ë´ Ô•±v$Çàgb^èwAë[«~Í7'mÑ`̪¯*À Š¤›Aî¹ãðÑøÀ胫†ç¾%q»¿=ýêÍoìû_?½ÿú§ÿùû~øùç?=-ðëûÇÓ
üÅ·OO?<~xLô +ʘÞ#•f>OÌ?ÙÀÊZ´ÑÜ®ÐûghYÜ÷7 +~¾hy‹x̦oߟÚñÅ—Ç»?OÀü3Örxþ<ð?¼ hB«ä=æJzÅȵ.:m±‘´XñS²k7yîÂÏ!‹þþFÇÏÀEo‘Ï;^ð4ëzët½õÀBn=pÁ’®ed£ÝÒ¬Ý:À—ö;úÒüÉV½†µT®ákK&8úK06’k“ï_A^ñÜ+À/m¿¬3(öÙ¾v Æm#sòkôÒ(^ Ûôolßœ|Þ¢¦çà¬X~P²Æ„ FÝÛÖN8ÿÓUCÂêÝžëCô_§?‚´MJÅ.Ý"'LçN}»©<ˆ~<ã +x‘éè?|àv¿>O¥^Àvñöä»ËŠ}“Ïu$<yg·ø¿Ü?"h“·A¦Ï‹ÅìœpÈrM€d|³##6LÕVnEó”4Ÿ™EŽ‡ù-<›ç2…mmèt’u±‘5ߨZ#AÆR½Äç®/Ãæ'›®wpØø±ÀÔ;AÔl%è?0£5`[g¥óZ`¶ N>øP˜“› k +¯Uº +#cP#›æâV,8…`µð^9q÷€DŸÂ™*«(å|.Å×C;ÍjnàZ¼Š†zY'¯onï`ÃXöÈÄBkA€uk‚§FÄ°a!ÁÀV.W:`x7#ØÛÐI€å©mdzÐe+YQÏ• • g÷$蘔m0MË:°ÊöåöÖþ¶µ:Øñh}Ð wYu7336kólÛN0" +Rzœ&’çVAÕÅiRæøuÐ=û°×ƒÂ<.^À$0c!\]R\m +!Ç3’Ñ®}Õ¢¼Rc%åRÊž73ýì–}Å[pkÙÓ +
¼Àb°ÏCjÂmåŒÏŤ5ì*A ¾B/°Ûh:l¥AÙHe7w³â¢]8rú6¡#/okÙW€žù*;¬N/ß®ÚÇVL÷Â$Ñ!1AÙ©<;ß j,¦*<s+ÚmLŒ% Ùˆ”CÕ<pq[ý‚uuc°Ž•Ÿ0Öšûˆ)W.&`@hhÐ7ÁˆÊÕ–•HŽÆ…û°l
j/”uU.@kƒ™5>ǵôHO4ÄåE{
'âÝ1Ùf÷]`J
æ‚tµòÌXLñ)v>Pƒ™jìH£Rûw¤òX“`O-˜$o‚®=Ý·åªÅcu$ ‰<Pd؈Ž„W@ÞM‚å܉“u”H$dJ‰[jÞ²9:ŽÖ±Ìæ÷@‚‹b;Oe„gS
3†`3®ÿ€3†C˜Ë~ +zqZÊÌó^6…ùée†LÀæL +q°KPÑ+Ád§\‚‹ùb:Tx¤¹ì÷Æl:äž 4_C~2L +ô¹},5eÇ"œªsîtiu¾‚ñã'Ã?4Õn,m &0NîÀØònvzÇJñ ×t‹–K¤l!¯;/¡ÃÜ6únnõ=&n²k¬ßäsN̸ò'fF}®#û&9Óƒ´fn61ȳºó”n-D‰t6—I¢Î<6kQËÙçpr¶>³¾s +~úæoÿxwþå»w_¿}óú9Ð'à'—_<Âó%þýêÃã‡G|¾ü7þŽÏ0þùêGüÇoñÇ?}xæçïžúsx¾–ð/äüÌ¢¶q*Ñ_o/ÈTâ¯nEäW¯Ž<¯ïäLr/¸6 +‹ã4Æ8ˆÖá€l8dì€Ï$»ùƒuÕèf•m
+pËu߀¿}üñ¡£Ù›¨Ïyƒ‰ÄŽ’ði
PÌ㣅Jíà8HŠ…oKÒ„cDY»óÕZ+çÜ«S7ØŽ!†0Ñ( +Ã^uÈ˂˼WhÎÏIªô¸¹ø5üx½®Ãrþ_JŸ}†×ýýÿQÕ!öƒí–um3¨µx{ÀÉ… +’ŒÕ‚8•šœñˆcZZ™kû +ÂᆛZ±##ô?`â©Ô.pÏýŒÝÀœwÐøu/±YYúz,›ºž ‡vÆRspÔø +z»ž`+Ës,˜êìd¿„BŒ^YþÞ¯°Å‚¡èLT˜üo{Þ@OÀSín±œÉÀÉ|x&(¯NXtú:)u¥œy“+î-v°¹)áyÝÊz‚B9bØd·ÝA˜ã÷"9³‡ÓçP©¹»€ïÛÁé…×#v ôa•Ì•6ÐPItÄRì&» ^Æ@Ðëz‚hkp‹Åc7>-†—Çü«‰&—]—Ø¥¯Soí + Eâ#|L5§»ƒ©D‡ ¶M]NKÝ`©â˜¬¹F3J•†òé¬öËVQ÷ÒyÙ:(ª<Œ*ÀÚ§yêÃ¥æ>+·ÑʗȺ}‰1un³õ
t—„F¼Ç¢˜q¼wÑ‘ø +¼‹>ÈÛGU"ñPT›¡M ;è“@5Å#6)Iþ˜d¾<Á‚9©²Á Böz–¹«®YÄâϺÖÑÉ!x,Ç`]?”ðLX…3Á‚«q
>@¿€«¥ùñ9E¾ÄÉ1¡³À½6æ ÷9ó9Y[EÒ£lL
_"ˆ5Õ‰€[µm€ÕèLˆål à8ÖF´=˜)úA:¸ç+ؤ™x›c„åWZò‘µÆÄš$ölmuB§.&¯lÑâ†>ÆÜÛ +áY¥¼ïW0sõÁöo¯‹.jtÐ+Í-ÜŠÒDÀæ®`é½ µÜ&ß,Ø¥ƒ|,kù„{•C‹³'û9ù½ûý#ćŸ x¥2¼Ëb<ŠT +RT¥„ÿTV^À@a]Áaˆ—’šÓkþ`¥Üo50ЯÐúØ{lн¢¿Šs Pëqðså´Á—
! ÷`Çð
3éàì–Jùˆ
-Û±zb:ÀÚ§‘Ùa.¥_cå,}jОŠK–9iÉîŽCnŠ¾ +Á_Á–‘pJUÒ¾€pñ¾¸„'—ë+˜uwŒè´
ôtÌû-LÒGÛ‹¢/: ò45(^ó¶øäyŽ7)™ÊœVž´—ôðòyêø©¢å„Üœ7ñ0þ25O2¼hO$`dç’`,Oè£uÀb4zeƒi +:î¢bî2R·È4Ž¹†§ÀÂ%PW]˜šÈa=Q~÷Ó”é¨í囼
m`-6ìÕÐöîpø²ÔÐÊ0¸C»c«Ø’ÊÂE<
_† +’…Ë«aÆ:ŒÛjɺÃî:ìœÃ}ˆm)ý;6NV}Ää”×?· µC<ðÈ*
±ôÊ«G†“ +óà‰ j[Lû?æ6: +1aí¤ÊÜ€ŠI·*LMD8´rZž ÅVëk*ø¢2’éÂûç©yíâ+mQ" +#瘴òÊ„'V‡/À³«ç®Â„eØØcW\¼ +/ˆ»#ߘçŽm©Ô
g \;ß±MAœÁJÒa†©ß—%èV¼VlYàÀ˜¡1XIûÖú”"†8D¹Ø| +‡ÿè5d"µ›pS0MøÄŽÕôA]AüüàÂ3bÙœ¥¬•¦uƒ±$\0nÍð +ìÃôBÆ÷ +¨ŒO¬{µ¡º‰Vu³¨±fa¶%ìÓÆOÖ`Eôê.•Jok F1¡í0A†ˆ¢ÿö¢¤ÿg¼l[6=j0üîÿp´`™™dÞ>nÕÚŠRY(ˆHÙ]_w¤¶.ûï=3Iæ床ˆOÍk&É$gl3øjÏ÷¿<Âó—ãeï’[c£ŸnƒWoˆË†1dúå ,e‡zj\¶¦«-. ÜVÔ®páAÌQ+ê¹ñ¸ŠÈ{œë¬ßتµ€Ã¶Öæ¶9ßaîÉàcAg$d.¤Ðó +Ñüëó?[©8óK°`¿BQŒõ Z ¯“}ÿ”K´¡?œgrºJ¸{ÆÞ ª8£J(NTbÓTŠhmyÇ +¹ªª¥ºN¡Ümñ£ÂæÊjA'äå`îØàµè ¤lc½AÈÀ´N0±¿¡"ë¦ü}ÛEþ‚¯Šk-…ÚOK<á:&.«¹\Pö´62ÃPí^4kõÙ!nJe‡~~êÚF7[¸.•€s2HXq7¨Ð'©÷›-7mc}ø3Ï8´»-—å D‡¢3Üõf8SþO]G¬50®.Œ5¬õËôöZÖ~UU¬×ºç4ö™ÝV^±öwLŠíQoÒÝc<xÓ$Û€ÂÆ}>qô£îó˜2ç«%«¶œpVщãóêñŸãµÏ@¥²F¡X¼]o¸{kÌõSœß_8BÝeÿþb…lb +B.¤‡¨aܼPaÔƒ|¹H,äf Ç°ˆ÷íNN°7êúþ¡Ã¿wªŠ©K + +*HPá×Ò0KÓ*Ã…ì[*â²¼’Ê+Ôø§ó¢ŽåôŸý€Œþîÿ¸Ä?Q‡]ûš¢eÕQn˜±”^é¶"I +´A—Äcž^m“ï"ÑväÁúœÁ73=5ÞlÇ8ѽE4õnÝ× –×(*àÓícegëD·M±¢jj4¸âcp¨zýXÅÄcÇò˜¢ÊmŽFéû +{"Sõ£ÇižÓØm~>þŒièiüsä4ze“§†è)KsÈÞЋQ€X(³Â±6 Îi½Au ;åx§mêÕaQí{@&ÞL\kò`¿vƒŠ]z˜2y·FÕæç¹ÃLW¹èÀ:àXÝ.äâÉ2ŽÉQÉ3#%©°dj7Ý'S÷Ãe+ËW;ÇQhñòë=ã-*ŽÑ4“iAª¤[sßà%§-ÅNV2Egîì8%UYò§LÏc?•ŸÍJfY•æzŠ*;bЀ”Ÿ)Lõ¦çr0qƒ°¸\—çbw@‚V™WX¸ôîAÌ-Økî&)åS¡ìÐÓÈœø´•:p-äšx¡%='”fW½ZrðHµˆQôéqÅ:ñy~{ƒ˜w½ç
ú›/E;Ôa›{óçõºÃ!ÅÜÁÂó¢ðjÚ{cnîµåBW'g
˜²?Y&2…OÞt8j\ÚÖöî’ŸÌ~ +¿ÆÔúŒcÔLwÓž«• ÕèÝe¬W +eÒ\C ù,S'X²þó `fÏžMÍû{ÌÝLêì£-¡mÐC@1óÅVv9¶:Â^‘¼j´š‡ôͳ”= M'ÌÖЊ¢9À‹ŸÑÐ+Ë`¼Ø²Ï8 l膩C¥Ï>àÒµ&5¬MgôÝóÑ£rö·ØóXVÑk´U|B_
BL–Åú¹ÛýuvBÇ]¥½uÍ ‚ÚÅmŒ‘wèE”ÊÖiK¥&…øàrHm:X¸Æ^ÏÉü)CíÖ¡' +öâÖ¹g‡p-ÝæXØÍ…’ÍŽBùs˜‹ÌŽ â—…\ÔÓv|ƒR¸~€E³‹"Àt:x“-ô
ú¸E>m‘ÚÜAF‹õàh +?ñ"jS-v^Ð6¨Ó—"ïLGýÃ"w¬W[TI.ÖãSUeÈ5ر™7À©ÙL"U!µr‰@æzp²Ó¶s´}Ì ‘Å`*#ÐÐ#²¢à¥eâ˵°jP¼•0¡¼.¶¶h"õDÔà'Øñµ +{ì|Ö>…ö
ú 0Çî¶Ü¦æÕ
–;_Ë´r¨§%úÏT0Õ£Bdß:Ø#˜±lZƒâê)Äš`0wíæ%«ò8¯"Âä°™Šn"Dß½BS¡W$ÌÅVš‚5Sˆ³AèÙ4€ØðÂR›ìt-MZ<o
-õ´AH)
uÚ¢¿d…%çfкCwPÝmQ§ÿÊÐÿÅÍHÆ÷7œz›.Ø]¤¨²[zA.¼A? +±_lE¥¸¶!û6ÒriœsFc{ÚRI6×[¯Þ¤X›‰CwÀeTòiÛB¶ä@¢û±ZëeƒsPÅRN[À‚ÁÀ|…¸6õùûEG¿¼ÂO'í’ÝAê1ßlsJKËÙ¡ÉKƒî ·ß`)?qmÁ<:ðxÏïï8Îi·\„>¡i>‡~0ì<ýfõd ãh×ÓÖáÂ=Þm1û
R
ñ7)x`¦y‚¤‚¼Švé7ˆÍ`ewá¹+ +È(55ÝçHl¤+•™ý=þ¼j(ò×’PË9¹6 ¾„CO€–ó›Ø¿†¼õô'Í!bËÔ^Vúþý»j3Õ˜„øÙÖ‚±€ØØÛ¤´ë`Ñv‰Nx‰Á+öÿÀó6>VÀ¹®Õ¶9oÊ‹øøâÊ^ÊÄ?&o@n'ô¾Ý#¶èy.(Ù*¹Ìû8¡ZÌœßÄ„½i/DÓýM‚µî¿ŠX¦êAóûï§æg;2dÙ°r> ,5íiGlqû0ÍR¡ßñôú]]Åû×0a&G³P25 +»ƒ8àì¿®ØivرfmtS±’xã„þ1jõm6Y;¼ÂÞå„ž@Šv‰O¬PÀå=vV8£ +öÏÿþ‘þcý%Á<ÿXaIà9þ4¼N@ñ¼ƒ¢ÅØÌ6á)Ñ8á–€eÙƒolëzǨŒö mQ¿8éàž°ÈPS«ÇØ3¨ ºM/W,”¥
ˆÔbÓxCèyŠ"ýàÙ/o˜s +8+kCOÐlº|b!Æꓵ
m—€-´”òð«éÞÃðbJ¶ãn2t_M?°aœÁX¾éÛÓ’ì3«œ§ +þ@‰èçjMÖá«Äʃ –tҨ¨h=ùV%øHéùQ%Pö’ò[‡ë¢¸³Òˆ†ub¬°ØARñž¸Þжà×I:®9B"ί'6Qå;ÖþŸL”õXc7íæ}ˆOÀJxÕ%jʹïGÝD“³9>z[β°µìÒ·,½áÐÅ7k“=c§ÎY]â«Læ·j‚Ž¡‘ûËÞb¦]jÁÌ¡VÿÓ:…Ptcµ!·FÄ«¿I€b“+~Oô†Ê¿¯jœ†±Æ `p«¤nf‹Ee…&§†—Ú$~¾)z=¡Ú¢0´ËzR}C=ɘô¶P—Âô@÷>ÂS*~ +”Vè pøK©ùÑŒ´& ”r±7+¸…mŒÇS9ÖÆ4’øC&óI¨Ùyöê8”䣵Uè@¼ñ=™^+{;üˆz°Œ»ÂR»ÃdÚÎ`ŒÍ˜;;u]FÚ
M¢{×=°è5Îqach +ƒQ’´Þ£å‹w˜6ͲÖÖw‚FÕpÉq¥ª +dU,6G›úƒ>ùáøŠ¼šDOEßÍç²v•F6P’ÅåÄ5ßçàO¦
·…Äa¸Ä?E¶!d.× ¶B·;Ù®ø›F¶ ™
X¼pFÎ-Ê|èó†qÒËHØ@²XhóAt×éû¡M\+½±úxÎÒýÀ&r?´ó°ís_Ýî +zX$ؘ<²µahÙ-…\¼ôŸ×œù‰]ªÿûN‹®«'È)9ž•ó¦Çm°~ 'HS +Dl5‹UiÿÍÞ)§€yu)À^âÝMM¿zÚt™9
‹íIrqh=b:ÇVG$°ÞÌÍì`òØÖÍtœ£¢î†çdKýç
Ú¦\ú5´¯xÆ&ܘ:&‘>wchwÊÅb%e3ºaý`‹²ßÂh,±”.±]?IJ‡Ø —wŒ[¼nWa“î°g¿…Fì-ø ÈÊ~ïë¦Q.ˆvÏ@ +OS×î[÷æÕ +Œ„¾Ïº ¶ýC¤““”‚@ØÔNÐÁptÉÒËЙ6*E‰z˜tŒËI¢0YŠ…¶ÃE¨W›ÄÚ}) ã1†±4›¨4M¬u„½ +$ÛtÁÁ0 ]SLp©©b5&‰ +± ÿÅ3 õŠ=8ÁÂç!a’<’dúÆ"ˆÃYDäJlGliNZ #’ZlßBŠ˜@!©d±H)
L…‰íˆÀŽ_CÕÄ\'0£jÑ€!
;P÷#q‚8l‰¿Ëd„`¬O”Ì™ ›7Vúår0„Á…ÙcÁàš¶0íó·ºþ¸áÚ$1`{œ}´‰Œ-ýZ¸u;ýkL.Á<–aÇx‰lµñÒ×sJ°{™hÛ»:¤´µvDËŠba–„Ø,€I45î4 +Šª§KŠû…ÍʦÕÂqjé&HËŠN‚@ã˜=•Ä\ÅK¢t7zŠ.¡ŠŒ9² ,IÐÛ¸0MHˆ±QëƒD¢õï2³DÚ ¬º“±‚ î®PjEóh:†ÂT!¨ª¥rTÄq½ZØ'&Lµ³D¬`†Âñ&¡1 +¦1H$tqöÀ¶]àh„¡"E™Ø„’8èû$¸£°7ˆ‚D4ëÇ'A6ÆÕ +²T<±Ž¿,ÜÉ å9"“:ÃÒ ZZ· :pÌ梋¥¸wI¸ +Å‘3ÜÂÒèwNaÈx&L‡s.Y?Rñ2nªŸ‰Ì€0Ì„üß5Dd‘^«éQ‹ºfšIXeÓx·Uh©,(”zÆÛïÂ”Ñ 5þ®&çè
Ȫ@Š0×üÜc"ž +)Äľ ¡œ; ž Ôr¿K –u“{ +”ĹEê!ÑZœƒ8!íÝpãµ%ú¹°˜®ZäýH(^Þj5¥4Sº ·gèÂ15¹&;†lTm'@˜€Ð‘VÉ«\† ¥‘âÐVc¥h)^ªKï Ò9Ô‡¦¿QÁ£•XΈYmS<Ù U‹üÛõàzðÝÙ{qóS9:¯óɧ´i²ºÔàyö%/{ð«ë²L§Ù(hÑ +¾PbVz2¬Šªþá~¢mŒ'??k‚{ÄÜFèOä2ŸeË5õpxŠÀÛï©üEZ¿Êy“–þ©Ü~’dÓ,z˜Ueö?din=ËØ;ÉE=N‡ÙÕ0Ý„CzƒÉ›€Aƒ¾›ó»÷Žü¾³n’‹¿¾Ú…¼:‰7HÅ_ó>ìPƒ|ªò²¹T}ÝC‡ü%+¸2<tiÄÅé¡«jQ³³b6IýEC´jˆö_6UÐNTкm·U³¬N›j¬ur²vÆJo«é¬škwq(dàKïüànàŸõO„î ïV}Çüa{Èš³s ÷ŸŒ÷¿Yjð®Ng“|øRZf‘7ŸÒ|•<¼ž™Öy3™fÿIýßöÎõkß—¶[Çó¬9/kéO”ß“ÿC€ +H‰ì—QoÛ8Ç?A¿ƒ_híÆNëíâüÇÛ @q¯¸·`Llv)RK‘ŽÝO¿´dåäÒ
)¥FÐDµf,þ43ÿ™yÕûåÅəְéýûŨ÷r©"|Í–\Då+wÐ;ù ÍþÞö—Ù¤¸½×;™Íåâðî +„Ío¿ŒqŠz—îÃWÿßVB’›Ž¶'ùïôãÖÔåd™áJ‚Þžì»7*Gã¾}n
f¯P§@½Ü|.;ò$gîÖÔ\>l¹gÌMyü±ýÅâéèá\ÔµÏ>™`ܽ8™}¹xŸ{<”}žÓòìÃ͹Rb¬¿!97£ZæÜæê{šÁÛþ¿¨Kä‹eM9VxJsÿL:Ó-Ì’Œ´³öNôºA”6dšM’!dMY +cï0ýšimO3ÇEYÜY{çq2“ º‘¨öÞ¹†d¦ÈÒרÜÖ;K¬¿ÕÌ:•*âBЫ(7öN$¸D¨yí{"‚MÝ'dª½ƒw2ùrKEƒ(↯èh{ïhôþ[á+™#P!½¼“J%édÌ&V€i€Wq ´’€äIqäºeäIö¡°YÆAŽE.¾]Yˆ^ÿNn*zOÙ„X#žËfÇÈÓeÛ7;:É£7» RãUgh:Tç
’ªíåqúlʃLòèòð>Ö3 .ÏÈÓFáL$+Ÿä™«ÿkHå™C†ï5þeQ2z˼ãåpЧòI›\¹ ¯°fÀU]L¾3Ã
[Rù²Üú3
+¹y,ä}Ç`}h³T +PüÖˆ½äšŠG NQ/pû;$áócZø™ƒðtôp.Ö‹øÉãÞèÅÉìËÅûÜ£EÚ|öáf¼¡ïuQ-ñn êN‹"Ãkˆ¸Íè£ÔÎÜû(5SV3¼Ð.9{.³{”g*•F¥¨Á(MfÚ;„SS¥Ó¥Û›£¢ý°¢ýö3+þ¨hGE;*ZËíí>8ŽhGAk» á6QzvÔ3Šž´£žõì¨gÝ׳°YÆAŽ…Õ7ofY#Ãg&šàŠÃö@ä‚9t +V4ÕpËæ*›w?sÙáes,›O|â“€ÍÍàŸ¯Ï8jþ™++#w¶±ZS‰ŠP:SCŸ|¼£û½a¿Þ56…».Úåë×î_É
Ö…µ÷(ƒ¸…
™Icf@úvWÚ{çÐYú +”Ûú‡é
F§ýÞ`è~÷{îßÈ]»¿#w£GÅ̯èõYš{‡Õ˜¨y‰u2"šhŽ@Äe„1w2N¦Ò˜"˜IƒÄ¬xxçËRÁ%™`S÷ mï SŒŒQÄ
¯KÞ +ÚÞÁ;±cWàÊg_æç§zyÇ”Šž™À˜M¬€º:âU\-* yR¹nCiË5SV3<éÈ}’ +2FÍEVßYnˆ,!vœ&,nÀ³¢Ñ<˜›{gzGÊL4Á‡íÈX‡Nt Æ°YÆAŽ‹ +2 +ÚÞÁ;±KWàÊg_æç§zyÇ”JÒÃǘM¬€º:âU\E y?¶ÞzŽÉLYÍðL¤Kx²
Õ3Ò\Ôiõ…†Èb¯iÂâ†:+Í€¹¹w¦wT ÌD\q؈ŒuèHb¼ +Ž¸ŒøBV\ 4#ÑHir«Ì¯jÞP»4÷N®1Q+2UÌ… 3ÆÞ‰\ä0æ’›cMŠ`&
²´âáOp‰@¨]`S÷ mï Sá+*D7¼.y+h{‡ +×—ÉfqÃë’·ºaþÏ!@Ðè¼Bø7ûe×Ó6…á_Ààf—£-_Câª]E„Äè¤LÜ"×vˆ!‰³Ø±_¿|´"EH~“©±SzYéÅOÏÇûžõn+s3«wÖ¤°0!¥y\¸MÓ°6ñ)ˆ±ÙÂ9K×OÊ;¹€Ï#òWĹñz¬ãíŠ%¦»AT†ösˆGÅò90P#ÃÒÄ|. +§šè›UÍLƒ³•7ø«Óöfµ4À¾Ì3ʧQ¸ã“c¼åËØÞ{^ê±Èñ1Æ»Þʹש¸áò¨ÕÉW…[0Ö(‘LyF´Éç4˜Þ¬í§ï2N¥ƒRuX2žðMðdcà '8È‰Ó §8È© bˆl‚L,€0¹‚÷E³v^FÒPÐ]‘ÍHèŸD$;§™$:Œ¹Æ+µ×NלãÚ‰ƒìµÓ5ǵ³Ó}æº~¶•š¡H'¼öÚ¹sÚi~»+²Ûº[[Ÿ¥:þàÙ/ÿH ŽÛ{€¥‹HóÌøíÑœ‡—#ÿλª2êËéõ½&_îñÎdFâ*¦÷Å)—œê™ÌV¼m&ÿ Du‹Pà¡ÛÈA¦Ï•Šû2Ï(ŸFiHvÅ +,£Ü }Ãs;ù¤4›ógAÊÁX›IÖÄÃ#¹R‚$³º€}@ϵ1Üao„Ì°‚)C{o2äyu|¸¾Íd(®Ë‘È8kµ§;ï6K㿨H?Çнª»x ¸R•ÚyICA?sAö§™Ã§ì=Í&'ã/(DÈÅCˆ«Ø:¼¦SœéE0ÂH«èÞ‰¾NÎ`"ÜÚðƒmHpnâËå#§z&ó„O›IÃkßoÀ"T+p#Ñ-WveãÛµUŸ4ÏLç(ÒlΟ)cm&Y³]É•$™ÕŠ¾@kÃð…ÉllL×0fCÄÚl +ú™²½XúxeÏßÍypxy0òK*á1½¾÷uáÐð¾dFÞ*f˜9©t²+†·jYÄFçâ$C¹+ƒŒPM¢[)GÙêdlý¥ž¹ÆGg(Î’(~•ñß9O(~×¼Ëêp2Fù’<^5~æøÒl¦ôN–H_MC”OUÑ¿DÔp#gHª0>ú©Ä‡Tº=¢A&c\ñ«àÞqHôB^?êÀ +H‰ìWénÛH~½Cÿ "º»y'¿,{ld×G'‹EÐ"[VO(’ÃÉ÷é·š´BÊq¦wÍCC²åb»¾:¾ªÚaäó¹üuË‚œ¿D¯f/žf,É^¢ƒ¡ðàÑU–ˆð½ø¶©Ž‡lSœ~ƒªó¯f×çgð½ž/QÈ’;øïM¥Í2xÝ2ÏxZh& {pÂ[‹ÀOx(ŸStð6ÌvïÎîâÒR3ýµ‘&?O”ñg;Ç’ðMtËUñ¬D(*wŽH„>_‰Pdʨs–·ˆUM£s|9k0µÂæ±À;‰2´J¡‡\Œæ)‡ù¾ÈDSòÖ U +C[²”Ÿ$ü¯œ‡Þ2ÀíýU”»ZC
£P=„ž—oò€5Õj^MåÕÓ!_@@
V‡bSšük[_=Çå+þ!O–y +bÍÅÍZ}/Ù4¦¯ÂÏÖÊîOwŽHOÃLUÃr7hß”q|ëG´ü“{Ù"ÊCL[D
Ö>d@8š¥mÖÇJG¥u…+3 JõÕ3ÍunÙï<òY}æTBVª*âÚÞÓu]jØTÅÓbƒ«{ Õ9BG^˜o.½ŒÝrõ«ô°e^e"ózX…/-NA€;:½
¯Óº7”u¯
±Oß´ðíϧÜ%§…o ˜¦…o˜8¦…oZø†¸ð³}p‰tÏV>c¿7>exÓÆ7m|ÓÆ7m|?"™6¾öìÅÆ÷Gù7 SÏ”á®{æ®{-0cÝ›“}YøÚ ™V¾ñ¯|å´sš°x-¼}™–AÞÐó0¿"–>@, Oó@½lwµK3ÿ˜ß +&
j±ûÔ•zäNYž¦‚…‹2€cY”cã«Ó¿ßÿ«QïÈ~-¹›
œ™£Õ*å
5n.ÑÈO¸ÄköìLÝ™]nã6[°Î½(ˆ’×Ë€y_Þ RÅÌÙÝk¬µèBwoÑ~ŠÓ'cu_*«˜±Ó‰LÄÕÒÓiN„´E?¢CO´¡w×tÍüèëÑ>A-¶c„MIU!Šbž°¬)¶5L•Bo\wmâ(ßíÓÀí‹Õ*O¦—ñÐAK8cá +ÓŒ…ê¹ùƒÞp!–eÔ.GwtTºÕPšÑ•‹—ýGlòlì“ïç;uQN
£ûxš†…U‘ð +Ê@Ž¨”æÊÁñ°y´ó,›+Ïç¾úPî÷1‰?…†Îo—«UʳNY®'"(‘ŽˆžÒYGÇ0’½ŽŽ¢M,C%·‡}›š|_!Šbž°,J”1U +=ŽÚ›8JEÆGD
Oɶ1UP}¯„ˆ¦<MÃvçå´—ÝèzÅ“‘(czÆyn(qÎØR=Æ¥–¢7¶Wtˆ"¬Gbÿ$ÿMÕQÕuz#•“<ôÞˆMö.Ë4aô÷ȳÓ)ÏzÌ3òw¡³…Bš=ß²ò0û°0… aDù~å‰ÇaV‹×ÂSŸÔv‰QŽdVÃüY†«“ ´ctMÞ¯E1OX%ʘ*…Þø© ˆTd|DÔpΓ~Ó®ó?–`kbé)I‹€KoöÕHzº\™Bã>8æ+ôföÛá[‚?ÿúWŸNO +M)2¥äóE¾ƒWdð–ù¼/øëfqñ£|tu·YFÁì…î£ww Û½g"\F__ÎrøÁè>0È?×wðÏ?àËŸ úŠtŽþõoŒ|^¿ŸÍmXºi£915ƒÚÌ°†152ªé&5ÑÙl.…Ä°L4§†féº#…?(ŸÍKpì‹¡t‚næuÑ_Ö&XQš¶ý½¸™9qLÓDÕ_×&XGóêq‰faBC‰£9ÕÑõfFtÍ¥EÛ¿(Rlj€Á +^4 'Õˆ7”…;ˆe¡:Hxé…Žf…Ðq¨S¡Üâ5¤Š9&\Pˆ€»Ê?¥ª)¹|N\Í6Í&uávHX¸K//uuÈùï.¼¿ÔvLZu˶Ës¦ã:…š%E»Þ·
ÈgP•° (@f@l"™të% +’2å)ÃÀ…ÄÔˆ!Ýòƒc½YííÔ”üRY ȱc(øP>+1Ú„JJ¡ŽK÷ÀËœ{_噶Q¹Ç+Tu|ûÀØ|èl`lT1)U+!)¨Ò± 1u¬£Ýl·°¹õk™.@:&¨–RÀ +vé±~õ¤_
‡Þ0¡ŸÐÂûä¿ÌWÛnÇüýþЋé¹_'^'H ÛAÞŠˆ
È”`Épò÷©ê’»ä®BÁŽm½ˆlNÏôt÷TWÌøR¤º'¯S<ñ·»—r9¾¹ûÿ¦™®no߯ïß½_7“ŸÞ5oîî ¼ø, ++;njçÁÙ‰_Ø™›…ŸÙ©êü¹Î7xýMœ3»Ï3Ø]6È…0
::ú,¡6;¢êÅòÀ%ò¥»¹Yþ¶z|G†üb r¼”I‡m½iü»¹õÚº™]ÜZX“ÃÙMÓº°0Ê**+ž}õáù°ÝvLÑaÑ1ÎÁ#‡ÁgbOeã@SOCéÛâILãêi”Ï +ÎlÙ€ÇÖ×Adr¬#Æ÷$t* uÔRbSž°:ó4§mOB×_ + c=Z‹‰1s5·ã#ªcçmxo +3N +f™º,ʾ¸Óe–Z—ì-ëp`!¶×1Ƴ¦ sš¥†¢àÚLêFÓéÌ#E|Rr:A~m4ÇCŸ'†4Ø+=y%ŒV¸ÑsÈ4 ãÉ:j@®8F
¨žœyÍhFŠžØ)ñȽpåˆ÷-ù6EOþG«ºÆ„¶¿óŠZtÏyU?ÏÑDyÀÑ°7ôsjY[J'¢°[ºøÍ+÷ýWÅÍŠØÅ4x;½ÏÕãÊ¥aYØë¾àéH:Â&žÁ+„FùÊ!å6ˆ«Å²¬k·XEj‰Ý”HÈm©9š…‹¿B¯T©$„B®#›?ˆzjS‰A¯«ª£Áep)!¯ÊY/ìdÒ+Wxb óþ_] M‘åänoíø?)¦:BjðÃùzêp:`?éŒèñA#xÑ2JCâwñExŽÛ¾J„ºmråhnuøŽO*SÖȾ4dÊ ¯”'K)!ä<RÓÉèªêîrðɈ
ôÄȪD¦O‹
‘:ÎïD@Í4ý|ÕhTm!YYUu\Eï³Xª<©ÅX‹ŸÉEœt»§Ñ^–½ÔP4Í]‚ + +í +(“/ÓµóY% S÷…²,šŠJ_y>ìàs„žÒ¨6ŽË΂QI½#3R°PÁ›ÏUkõtFYzHßOBã¬Âã1ž‹³OI€ÑZÌ1yd&YƒGMðA™UQ7íËY–³fÚÁWc59.1ÎkùîUHOþÄW
úW^™O˜<9§òÊ‚'<´ÆÅxg´Ùäc5jÎF.Ë0"‰n›˜ëu¹mE9 +‹ip“Y´s§Æn¶°Ó6Ž¿7^*ÎÂ4ˆ—oû7Í«+ÐöË׿ÿ¼|ýnu¿yó÷ý¦³«ÜòÅRaülûìˆ_-=þ®¨²à½YÝ6—³÷.›×Û›âlDî~oÿ¼Ý´~ã +»ß®ï>mo¶›‡‡ýï?5—¹?šÐêÇ‚çÛ¡CÑ1þÉC]ÿ¡ÿÖäû–ªAŸ½ÞíO.Íxµ}x\m×›ålõ¸Z^Í–¿¬î–Œ¯òrþ×fý‰vZ¦yù»mc“’æ*l^F‡ê¿ÇÒ$s +ÃöJ8Ð&Q>ÐX¨)[ÈÄYÞÛÚ‚ŠëN7”²¶(YW©EWÈB¿fÿß‘6™uå˜ZÅ ‚Kå2] dAwÜÿ?u4ÀMALl øOHG1
•CùÞ‰"GµÆ(4ì>ôºšÂŒqºPº‚£ +°B*Âx¥¡uÏ.¤ÈEаäXÊ@I'K!}ÒÕÍ'ºÐ¬Ôï*fÀŸà†‚Zl.n òØ
Û¤'<
¤DÅ +¾äBûqûèMÞï¬ód&zèL³wÂ51Û³ Å|²ó“‚ì׋s®ôM¶?•Œ2åÃÃvÒëe“‰h¸—yä²2|E(
ùrD»Ø¬E·yp +䣅Èß.U\MƒT1vNËîüaØä® Ž©mž«9›êè`¤öÇ]ÚšÖHÈ‘jOu›—ÂdKhÜó8بËkòFsâRÕОÀUFBÖMýÔ5RÀ\N-•+ÛKÏÊjÇŽc–ÿ€ÒŠÅ°!ʼnXc#Oõi$éç-éŽlƒ¤×¤Mo”M# îƒIúòKy$Ìp¤¤W5_]]9½Dù²Ë#gßšG€K°,yäÍøâ¹;½†×;yýËOó×,îV?ÿ}·ÚYU.ùŸ¹˜ÝøÊ ¾þ웜î}ºÿ?Î1Óެﻓ‹w‹«‡ÕŸ7ëÛ6ÝQsêæõÙúíûÕà]¬(ÍþÝÍÇOëÛõêþ~ûþÇÂM3Áã™McI‡6
(žg7
ã›þSñoK?ôÑ߇íÎH¯×÷‹õr5¿X<,æ×óW‹»½Oήëüò¯Õò¸;aP€ÂË\wZÄŠ®Á#Œ÷a2R.¬«J«+ÉODN3c˽œÌ~ãîoÖk¤æ¶ÃõoßPaþ뇙½Ñºcówövzd6c'Ž•©–d˜•š +¨±x¾¥#ùõ§‚4š5p¶ÄÈÌl¨b¦¯SM ¤Ùr?@84ɘútÓ™ APVór _=xbð“Éô‰s!ýCÉf:è(õðLzI›IâœyÕ¢M<®Ë xì=#’»n63ÑÈô-ëQû+¼’é¥@åæ·Ž-ˆãfBÉÈÌô0Ž^>'©¬©eÕe$e7«ù{Ijüþ’ +M¥^²i*„ÀäÏñ}KȦ_¹²I˱¹eš!97AVisÞ¬&á ùÊ¡F/¦bûŸúrr&›™÷š9ãmJžb®ÿN=õŽÔDŠënvÝéÁ3©CÙc,Ÿ°½žt¯Ú@(TÆtÕyS< +PÏ¡X1nj|F3øXaŠpæA‡¶ãròXå¨`âçc(.ÙÑZÅ3ÁÅ"ˆ8çäm,T„¨™r_öù“;ÿRgz~•h›®j 糨—þ s¾ëLÝ·v¦¬%ȾC6’&’èýYrb + +M@«jjÜÁbÁÿÝÿhaGOZs¶OO×kÿ|ãË>K=a>úñDñ¸9<Ôt$k´& zÅÎ[
ú’Á +¬ÍÛŽ¥:RzhšÇ»(;¡„±d(3rŒPãÔb¡–RhñµW +±ê¡e¼É6£&s—D=9ÉÿÙEWp!aí‘Ø«%g§× ‘ß>ø>R s4†\Z; #üm¥9Ò)_ùr~9¯Wå +0yVôìJ/‡€~ö!ß‘ëÊAÈ3¾xîN¯á½N^ÿòÓüõ‹»ÕÏßvV•ƒKRMçeÀ]öMN÷>ÝÿŸ&-qz³Z¼ïN.ÞÁ—>¬þ¼Y߶é¦ÏÂæõÙúíûÕàÔ•lÞÝ|ü´¾]¯îï·ïìNêø!(öPÖ‡7Uè•C›ºX˳›†ñMÿ©ø·¥ÖúèïÃvçV¤×ëû‡Åz¹š_,óë‹ù«ÅÝÞ'g×u~ù×jù‰Ü0(@áå?®;-ÞŠ®Ù°r®ÂKxHÕf·EDäD¹=)+°£V—µÕ%Zœuùd½—“ÙoÜûÍzÄÜv¸üí»êK~°n€º¾56goI”,ßm+AœêsóP€ØÛÁx‚PîW¸¾@W»ÍïØDufŽºw-ژ衚¡o7¿Çí8c¸`Åj&‘õ#S¥ZÌ©…à8áÃAR·ù=0ÑÓ¬ÚDIxšuK©Ðÿz¤x +}Å-GÒg3Sµq€Gß° +|_ÙÕˆ¦@Œ@Ay>‚èDI¤@ú@K +/‹lÖLÖfT„Xð§ŠB¬ÇæáØÅ2"j «Uõ…ÖôàzÔ†LÈ1ó *Ü¡=ùR,“ÇœÔAEÐá ºÇÝËdþ.)õûJ¤ËQ|×¾OG'Æ·2PBÿP"3jOÖOtɵ6míuŠî¬ííJ?±$Ÿ*î6Õì fG'B+Tž6ÏÿJíô–ФMlÓŽhó̃ÙÄ¡˜1N—Ò;Z(pøÂ;ÁYz¨bX_q(Ø»½8 +ZÙ«§ŠCßÒR´Câã‚^MӀΖ¬L»$tˆ0¨8à9·2ˆü?U샌v¤¡KÌß^‘p…SnB«b¦Ïk}-ÝN±ãGûû4¥Î1NçˆþŸùjÙmã‚_ÀØK +p½mràZ–ì}íÕ¨ÿ[¿],З›g¿y?¼Ò·v^^‹v1–ûw#ø¹9Ú¼¹ŠPÈ\燘¤H„†d¥Æ¤>†qüív•èŽJàƒƒ‘ 7 âŸ0/ *¼¹ —j:uÇÞT[,06~áŸ(Ó-N˜v\\¶Ç›\Æ¥‡ÉÓ¤[WÜ”+ýiÇL<ü™W˜ØLžó´½ïMÞ¦
>z2}v@ð!à´˜²U Û +¨?—Ž<|¯³ËÁÔhΩ¹7 ++¡—jUG3U]8zNBHc.…~E©
BwÝ4^&>Â$X8ÔBxz#ƒÐàM†ÐÙ¶‘}ÕTê‘f7…
—¡9ùÁæZ Vð’Ö€<¨i€=ðš]•½6MŸzÓC”BWôjXQD*dÀqÜüâ½FòçÑ)9ÝK®7¯ J3â<÷]ÔlšÖ +ð%È#2`e/$.–-n‹,„*K„¾¡u÷Bxk]ôɱŽÍö1`S±æd Š"ÇÆl‘¨Ëí!0´-ð˜¸Ó"¹Û¦F´v<‚tn ¸Ä°!lºŠ’Ev:³†‚Z„Åç +´ UÂ^?™"¤&Xl¾QÆ_¯†Û_©¨g£‘Ndê+¸†¡ýKHÓÏfu±õß)9XЙpÁ®%:#tRÅçnï.ŒkQ°‡\Œ'Ò»©L§ã±+*Ûð‰
"!ú]²Å +H‰ÌWko[É
ýúó%€Ô×CržÝO–‹´ 6p⢴¶6vkˆÈæß÷s¯,Érâ ín8’¨á\>yÈ‘wÞœ’ÛzíNþ6"·?òîhä»R$ùà|'Á—’á#—”sqÅ|µ'_p¶úZ˜ÝgH߶}ç=…qÇDÕ]˜ºPCrÜÕZ=»·# +E·:öµ&ˆTC §7¤,E |zÛÛÑÝèÕä¾ËYr†a1ú‚;TSn +솩zÌKAÜg|ÙdÝ«ÉSû^M6Xhw=µqÓ*U;ñWûàz·{3zÀ›Æø§ÑÌÿ×Z¤Ý_ðáŸ}vÁ½sÿ‡wgžÆI|Ìð+w”‚O®v,AŠS¸’KN^Kç+ÃSÍSô¤‚RKpöU‚†…Rn)L>²)ø.%‡ƒ$„GÄŽ +RT"”4Wˆ¢¬¹ÐAþ‘«¬¹èÝC\…Aä$YÓ—£b>tŒkð(wÉCBÈyÎЩ]ˆE] 9¢î‚çsWb¸DJJe`8šçœÔuJ@%Âp`D‚C”‚ ¨!#Š($pÚÈ÷)â(ÕRD\´QyF$-5÷´ öF¿ŽŽGC1níž]ÿ2s{ÓËË‹O·Ó›ó‹S7¾}¸;w¯¯/_[ÙÅèNÞ^ùâ³GJ<3É!üæÃ]9ˆõ9¿ôÚõaù«‡öÚkŸ%2®Î؇”öå :“ÝÛûý‹Óû‹ëùôö‹û3DnçÃýíÅü“k–OÌØÙÙäýôþüµûNü€?€ý¤,÷Œ•¼ùòìvÞÌïÝÖ‡Ÿœ|8ŸÞÌ>~¹™ÜJÏ^‰V‰Žöû¶Öùw»±³vtý»F
àÛ9šM/ÝÖþÅôjv?»=šŸ5u@4Ç4ü¼;ÿt9[ú¤Ôá·£ë‡ùÙ|vw·øý·U7‚þÚCÅ£„Ÿy(:|õ¡aóC¿…üÎz£_|>,žÜúf~w?ŸÎ&ûÓûéäÍþäÝôfíÈî›:9ømvú ®*,¡Ôù빓qÆŸÛ\ºÑ]áöF‡U’Y+ìJCÅóYó}ûô²·£ñ/úàãùY9sðüìbp¥×VèhÔÅðÿø“5\È
ï¬ïL/>tt>ô·B•ZÓ>Á„T»ŠÞ6¨T p":hf7>tÝ +µOˆ`ÁŒPĪ +&~ÐzˆRžÁ@Uz3MŒv‘ÿ+àéW?›8tSmƒF)r_ù`{àòc„Ÿ(Eê×VLœ»\AǤÄeB4[$KÙ×a$‰˜Ç£,f¼/¤Ig¤7¥^¸~çW÷ŸF/ñå;–ÂÅÓYwLÑÊâ¨ÀqHƒLüÛ¬uJ$õOýTC²Y±Uá{Àr‚I£|ŽQ[?`“1d“NpÈbBRcÖa^óˆtà + +Yà°I²v¶¡Š›Þ£uo§¼*4e€ÔPýèX–1½ÓGÅx4Hok½ãšÜÁe¼[åhW`'_Z¡TJP‘²N«Ô"‚h«Ò¢©¶Šlåš”ž°žå\pÐÖO²ujÙª9[¶µvÆ@û1xmÈÖšíñhhOßšÿµÁ”“÷ØuÈ2ylµÆ$cæƒr ‡¾D_åЯ¼ÂÊ7h¯½Æ!ðð%…«…í7i/Qª³i|ÜHÚ’aÆÎÎ&ï§÷çK[…Ž!à›çÖZ]j•`Œ‚ÃIq+Ùeµ#ƒ³PîÜ3Ëÿz¾¹8†¢Éµ4aªØl©ñ¥d¸â>A=1Ψì‰yg×lü¸fâ†K¿Êzû=ó}Ûúïa¾GÄ£ ¯Z½y +$PYD³)-D¨;S2ìPNåö}È +r®œŽiA¸çsLòY•’JÏ!˜]”Ïk5>_ËÓ^Ë&©«Üç²qמæéô?eˆ]4È +†ð~ÿ ³š~?ë÷Ç×îÍè3¨ùgâxóåÙí¼Á~¹õáç'Χ7³_nf+·Ò³W¾šm6¿_[ž·;kG׿+¶¦£ÙôÒmí_L¯f÷³Û£ùYS·kñóîüÓå¿™/·Þ¶Ž+ +ÿþ‡óRÀy sæ>ƒ<ébB“ }šMƒZ´Ùnôïû=‡)‘ŠŒ8u^Dq8{föm½V;¿ùÂû¦ß.ß¼_¿Z¯no·¿5<k‡e]J¡´c—¶X¿4¾ô·ê~[eÓ£Ÿ¼?noîõy±¾}w½^®®Î¯ß]_]œ_}sýöÞ–“‹võü—Õò½¸o°S{NοY¡&«·®:ÖÍìa<,©ýÒÚt¨FOнß×$åÕ€ã¯~ZQ[åk‚yQCô–Øü=ýq6:â³,¡Ó”¨ÐçÕ%à.²]cÐ×xÿLÑ_Ýj¬G,Û¢Ôœ†;o`<œ.g‰Ú²ˆÆùO¼óôF¡@XNH[þˆ1#vdƼ.3sÃÁxÔ46½X¦Á!èNŸê«JÜéÒZy§<ý‰?=µ8íÀÑç©„ìþŒ¥àÿ <;fz¨žhÊZŽ²”¤sîc²Ysђ׬°ŸÏòÙÓ9þùÒIÌZ³Wz;äòQ½ÍÐÊlÇÎEñj¤Ã¶8ÖóÒ„Þu[YH%0‡ÕõvX”ÐÌ–!Ï×4ÕQ¬Îæ>&Îñ¸)ÿæ^H%ÔðI +i’”6ŒŒÃå4gì˱#òrw¼1ºÏh
i47|Ó»£J‹Q½ØdCJ +‹\Æ>—ø²(M³·âVë4ꤛ÷šˆ3)üúÀqJÍ¿ÏžâÅÓeæörMèh€›YÁqÆÍœð”OÔH^<H‚ɵt˜iMZ!Ñ +¥ÜØ?U¼›G®Îc¥oyåXªÄg–þ@ªy›éA.×O(4ÎL;ÿèÉ3…,Ùƒp¾¶Ô÷ø¢ »@´@“µmJ—³_—ˆ³‹öDßò½ +}Ï&RâýÜâúô\ÑÍ
]ª…ÀܦœÌ&X׳RFSw©xÏÃ%Ô\6›©¥,¹øl&¡Zzö‚& +Æ ê”4ø6lJ¸ñàê,›ïz–@–.ÇD:¹dK*0SÇ<ÜoŒ³ß«ÇSsèÄvÊh^8ÖžíëÅñsëE‚ +é-‚ƾ†mx”¯1§ýg˜2*2A8dæcÃSÅŽ}}Å.Ù¤vºd³–ÇqcÉàÁ•Éî×%GBüî[Ê¢ô¦R±•8YtoÜPŽv¼a.8FÔKè•J’/@¯, ós1 óBÐLä7Å/G‚¯èàX˜‹4¬òœ¶oÊS•¯m&±˜>yóÁXePÉèh”æs/ž$nR*Õ}&^@8ʆª¡À3/dcîTšÓ•ÎkÑÈ‘å8;£SfUxXæ…¡«"gwïwœëiñðbO* À¨q Ýó°Y~7ޟćç™ãˆÏóâÂy> /vÑüäsãý(ž«Gñþ»Ã‡—áËTÒ³—ßÿõê忯߮¾½{»Ú;Õ=R˜|þÿÛõGûðå½÷¿kÆ|¾¼\]¿žÿ„v|·úùrýª›Óq‘"Ÿ~>Yÿøzµó[Õû¦ß.ß¼_¿Z¯no·¿5<k‡1ªÍÃ#—6—ŽÝÉ$Þ½3¾ó·ª~[cÓ›Ÿ¼?noîÕy±¾}w½^®®Î¯ß]_]œ_}sýöÞ–“‹võü—Õò½¸o°SyNοY¡æÇ +Øönzû/'n¼z¾~õòîæ‡7¯í{¼:]ýøÓzZyöbEÛ¬~þ’~¿CÔDVPD&yúïé]DÙÒ0…yµH{•‰+ç1IªÄ¡á!ßA%¨nø^[b‰Z +]ñ²0¢]X +]%â™ÎkôÁãCÒe}‚ð|¬:—†Í<«Ð^$Kû—ºy1`Ç ++ys +²*¶%Fán–aû,˜8<Üñz–AB”æÒ–R 9uq9ïz#ÿœehNô7—u:‘T•QcŠ`ïiM´'d^š0ZÒ9ÖÜ&<Ý.0A©«å,1)$ñ;KÞa $_EÜÀ~^a€ºª‘x” …9ç¢}!Ë.êbïÇÄ'ætæÙ,r¡d£RióS´A‹-•ôSNwÚ’4©Ìa«²Ð‚^ÂÌÑÈ[î+%„Cb0 dûE® +ihÅÞ®T<·œœ«Ò¥yåæ³ûp24[®êö¸–f!ølR|‡ùzx\'âš^Á¨©Z€âí«"«ÚëR¢\Ò€ÌáãväñÖÍÉ>°*·ÞKÍO"‘n^äÃFŠGŽ™9‹'bb‚¾#|8…bT¹Î€¯¿¿éÏc—Ð +,asú'ý‰}íË˾%r4a-9‡í–Û8-F©ZϤO%0)y¾?§}“øä-H£Vÿo6uB•pÚÖHëVo™eƒñ,!Q‡_
>ñ*1Kt óÜÐ.2é…Ò/¨òUFõ
zpb“ØÕ[Vç¯÷ý#OT§èŒ‹
#nƒ|†ãVÊGÔ¯N_Gì!s®W„¬û»æUi•ï}ÖŸ¡·é&_æ3_uHƒ¢ê‹,– D‡Ó+jñÕ™éÄ,@E)‡_}±n½¨{yÒÒ—wÏÃ[ú¶e酪ßtÅþúá?K42‘ñH'°¾|—:ß.«Ìn£b¿ŸKü]Ké·™’Uâí«yï’1\VGó¥$}Ñ0d™HÚ=ŠTq÷c(<¦L½÷I“™—õñå·ì’Žý–WÊ8tCͼ'ö¡*®`9Rèûæ”ÁøNG.Ýwàkï'ÉNfSH÷Χ‡Iö‹7¸úƒtu⟜bŸùQ]ÀÿßÉ}x-{2…øOÍèÂ݆•x0G9óvß,ìhI¥ØËÕ'Ùâ}Ó› +f9 +ý·+;(é‡ü²`c+õï¦zTÈ9öì+5s4Äöãÿ×±Nr¹+j¶ UÔàIÆŠ#sáŽËʽ0ÌA¢À²`†Eg'Ú \w1Žuè›àr˜mÝ÷™‘u¦^ó„><Ò’Ó–äZæ<TðÓÖ],gõÿ—ß©‹N㪚"VƒJÔ½…ñúªæ¾Ú© +Jú–u_Þ0§ªBqu÷>08øyêï†Óݱè/¹”Þkð°…JðóÂÈE~d‘zt´Å–“ÕŽ9ͳ¼{)½„«PáùðOûÿe¹Ì!ýþ»Új^LϹühkþÐÖé5}8„¾¼-‡ILëôÌW¢ +(k&-gµÑ£ê+;õËÝÙôM´cXMïllÔk„Ó¿…!ýµ·cJì9|óU~Lè¿ +–ýþ‚ªÕÔ›ãØ¢
Æ"×YU>xõÆÝ/"ÖyWš/‘TìµæÔz7»Mð+þõŒ:ÉÀ"ŽpÑü÷Új—/2Í}<g>,u¨klUõèh«òÑÇùütÖϳÛÿ”,l(@Ÿ>d¦ÞG¸Å)>yBû]Fz3QSxøèËéàeß~¹òL‡w~b£ö¦èÐã“¡ +£Q·ò3÷ê*G[Ïí¡‚Ñ^®+ž\U‚ÿ;Ô!ª9÷ËGmDQ2N Ú$:“`"óö®ßÚÕ2-ÂhK Ó½»êÔ>û².Vªbo +µvj1x¨ÔçŠq¨c1!úr—<òZêÁM~4dr3h髃ðdîúQ°Ùa³¡f~”73j"$€@8œlMcM±ÌìËú‹Û€—†ª@54:ÏH_¤¶yÉÌD K^jp8ghùÎ~©@LuyÔŒÆG_Æ~í†ZTÈŒJÞ–-ù2uq[itŸLƒÇQ_äËzIà—2/IœV•[ÙõÔ·&)½%yÌ{Æ7Ìd…ënn.¤ß4¡6~Î#Õh&2Ï39Å1Ync{/±>&_ŸCQ!ÛêƒÕ²í|=œ‚{`Ųj§Žëœd-_{ÌØ#“:,‹yiŒu±hr©vDÅÛ°«Kø¨T–ë¹%Õb|bfshà +ýLë<±@ÓÖB>¸%û™~ÕmCyq<üdªž‹û©ƒ-M»ˆR,¯íKÙ‘Ž +¥§”šSêY÷¶äcŒH¶(DoÈ<Õ*ÍëÞ4×¹ËVS6O +ü|ª-Õ^÷ÿŒºèì¤k t*‹,ÚYÔJÝi˳ù©\AóeIÚ¼ÖÀSG¨ÜÇ“3¿{fíùCe¾¬&$¨½ÒoÐ?µ!·rl%"`È0MáTÄ©¼þê£[{Ž˜šºcOiûÜâ^לÍoÑ꺆_îíoô¤VòL‚ÒI3¥é’‹èl™ÆãIú÷Ï¥Õ0#…l»Ó}…x”Êš£K +çŽÕÝ9ˆ[û¾¬nû{pßbíŸ"i—+ÒQ”ú‚i9"[¸«÷
ÜMwP$÷z=e«¤H"Dx Şͬ ù*üŸ`BNDB:§Äàï{j™f%®‡˜p
ÈÒ÷³_ºbh¹P´Þû,ÐÝòhOíuFÉg\‘pæj°9t¤
夈·Ë‘j}§e~¼-Köu¸ZeE’×éÃ#«÷,ƒëjqñáf!E2$ËÉh ©!ˬ!€–>íCà2-õêØ‚÷´–FC+Ëùbà9f6öõ}½ÛµzrköÓptAèQqo›õ?÷¼Ó(%IêÏn[="û£ +ì +õ\nD‰’"~µó-±¨Ù^ïéÆz\!Ê´aâFd„‘ݲŒ¼ò ù[·g–ÆtÞó!”1jtúΩ·U×0j-¤¦,ˆ<¢uêp–¯r[n9W_³èp-½Œ%tÕÌ~JÉìÙ–1Ü;é67Ýt•uBy¹ÀŠCÂA
ÔVÌiC¥‡pƒ»¥ù^²ES'²‹{ÁdC,(ÈlÛ)†W/ÔûkfO#®þ¢ÐÎP¿JÄ>Ž#bPÐ.(Y¢¶:Ê +zëu·¶é·çÚÓÔ£4lz멸$˜&¬®;ëû³ö¸d®ðëöÈ©´ë‘b8”Ñ‘Œë’ŠÁ º_ F NlÁœ$š
‚%¦Õ]Žy¿Ï¶g,¦µ]h£¾¹’¿é~w7•@©‹1)âUT¯Æ¹-«¢Óo¥ +Ž3Ér*]÷Ò]GA6Ymæ`j{[„Tþ=Š®uÍþó+ +“7_´ {vZÒÎ`0Måu†¹v‘&9ƒÆÌ‚ÑSº…ªA.s$DúáƒÑ¸UÁª°9t¥å,2†k¹y^.3ÁÞàu/À×± ³>3ر¶¸É>Ôl9Rc*‹Y‚Ìø½Áðù¢à¥Né… g·zWWSp¬ +âz6®? CÞ^çÇ”~!ÛÉ> +bšÿybSñÇ€¯ç«Ú“U±•U•p5¨9d,õxtE›pìâx× +Sc;¹îAk,ÀʺÜ/½Ï•Ch.«bÙ†]Å-ü6õçÙCv`žò?@Ù)ßu¼ÐÑa|`8T±=~×7€l[Fí‰kû<¼FUä‹\!Ã=¼pk'øÛN&ï”]Î+ßöDªÚÀò·®ûJùÍ‘7œ/‹C/=ª<xèŠXh‰ud‘åÂý=z“Å@£Ý¦ê¤y¦ÏíéJMêBB†»+8»´<rÞ>éhr]«H"È?]ô.¦Ê¤È’NoÕS°'ÒƤê•Æx8Z7ªx¨Þäm½—E §ò‚êƒñ¹>ÂK:)PÜ-8<¿xï‘4[ØÖ¶aÙ>ÿàÿÔ+–‡ÜÒ)Oü«-š<Ïf¾–4ˆV̶ö+[`ꞯ<Áõ}”¯4ÓÝuD…ŦhSKDZ/¥¿åJ¹ï“sah·¢ˆÃrÏ—XUYAkZĸ
EÙì¡–Šú@Ä„éSA²¾åæ±IT«+oDõzùÅ>™O¶fÑõ,;©Å⊴C!Hí–£ƒØŠ¼e8!]´å©ß +<ñ42AÓèÕ"–ç/XHÍum¶ Üp¸wUµˆÓÎ8£?¼v(î(ªTìm¾D=Imw”è*ñóÁž/9t"áO– c5_ÓW ô`Ò]Š<ÿ×—({Hc÷Í8¡)ŒÒéXé—KéK˜‚@µµ «U‚MÍ3þõ¥h¾çKÉ2ÌîÌgkþLxÍðšà¨ ¼ÂÓ’€C Åèev{óš$n CÞ´Þ’‡ÊxÔ•ø£½ô’àÙì9Ì
ƒ ‘§)CþjA§tIëRôÉ;h#ÌW5eLhË/ +2>¤a†îgÎ7å¶åŒ>Sðo'{i$Ïo2Çëå®ù\b| ö2¶È‚†áX··â?dd?»Š”¯Ô×Øòýx]9s¸-¯¤ÛQÏ;gù2&ŒÄ>ëê½8È•ßþþ¥(Ha›ÞÐ\¶#åUÁ@)'B_«Èö‰[Dä¬×ðüS¥9sÃµí±¥ìË +0¢Oã [ŽRp3RŸs"‡«Š’8È ;Ãÿíë<ŽBè>$ÂöíÏYÞç‘p5QªÐQØŸW—m@aûóÿçx‚þš:IÞçÐO9
úEÉæW€ÿ³^.«–Gý‚ûgbÀGªÊʧ=’®†ÙÐÐ##d4h DÛà¿÷Z;ë +${؃†>q3³22"öc¨ÑìñÒö
€š-Û»£ìHÛKÊ(÷Ç€ß!•ßüÁh_mV*}‹ò!áñrOH岉˜ÿ'¶ºL£uñc‘PMÔaàŸ +æ’ëÇâ(VZÝ›ÂÎ/káï38ÀÈ5ê—€œÀ¥&ðC™i-…ÈL`yÀ¥ˆêNDÙ+ÎÍ]nc‡„|SAb`J7X +,½Ñ›[>›×¾„K]ÛÏë†b?Ô„×fð¡ëRŠ°©âYƒö¼ä‰Vö½çµgÍS.‘=ÃÛ¦§é±@ŽuÜøÝTÎ|i•½ö)’œQënþ4ÿÉ +oêriКï ï¯[vÕ:ÔyœfÊ”*bú5¹Tµ!¡*Ý ½ü]ºˆÆÕ°“ë±H¤Ö+Uá¼Æßh”îŸt6ÍŒõ1hár쀌‹fÃÛdÆ9äؽ{h{‘V°côºíùᥚ¸ݶþ3MRºÆ +çÏH›~
»V}F„3òÐË)©×›œç½`ÙûcŠáætN<cHUâAX½J•£
œgÆïœ×ø¿'ÏÅf^˹F¬ÎÊû|Lˆ¢]†FU2sQ$á#zví§ +ŽB{‰ú9öP¨1¢¨8öÚ ì$Á ë<ºÉÊk‚£þŒM„¤C¹¸§Å +«SHÇðÞ>p/BxÀöuep¢íÆÜžT‰yjÓµ˜ÇnÞ²ª²ÖbV²¦Ã£A34éP™Ëƒ¼{**[ +õ r#ð«0Û®eÄ۬ȷœ±YQad·âaë>gOŠ'§¡y‹â•itxÐv)t•Šy6m@[‘ —0ðSÄÃ]9ÚåÝŠÌ»<Õ?s +››bóûé(aGžé[[÷Ž×Û›¥ýMógI[œøúÚoÅiYíO‹qê¤Ø‘I‚²Ê±nT<Êöˆób¦à„=±¡M VcÙJŠvðjF¸§o€ñ¼ÖüŒÄ>µj!
Ù(B·RÍ@¼0y•±¿Tb ª*s;³Ú +{CSkq@yîS5"`?ä¬øá’ó„r`QÅ/\Ô–47³ÝËSäѬ‰,ãûqÐ’_hèéDjjš×,‹¡2ˆ™ûî¼@™íxòv + •êšE5žn6LÜ¢+\ÝL5ÄGþçlž¼lÅœZê“ç2›ÇÙ—ê^ê'³`TTT;×ã +ûÓ‚8¬pÈiFˆíåa÷ù–YŸ@}…ßT3ÁØàŽ
Y·‡²Ú9Ár®VOˆoFÁ[³=n<¶¾Æ6µ7æ2RÞ@ïŠÆúG„öTÚÈ2ÿ·Î©>ð%L»{n^,
ˆÛ«µXÖT±ÊÕ‚Rú›˜Ô€¼¯]SÆ)WøÃÐÎÇ¥ßr«ÊP'…{¿¡"¥+O(…ÿÛí÷/asÙãŒõ<Ñðíþø}Fâ‹!2}dõR~~9¼ÎØ +Ç= +J¹$fµ¥»AزۣÀ#Ô +1}f=Ì ½õkA㧉ruH•$ç ´¯8ñEÓ£(O520lj”‚‚Ãûp\ðøíåª08äV@ jÕ&»û'LSI·Ls¸mò¶ööhÙÿ¤vNB†ŠàAåÚ¯ î¡ê3Pg +Ië“W“ôò@®‚L^¦.‘R'õUÚîϤ)>J¼Ó‹¬¹UK –ÛùïoùìÅXmØjÎï뤘æØKCƒT:gV!—èü8°Ê«º.$üþ%&DÂ.Éœ $%Í®A+9pK
Ž®bÑx€©‹Xnš(s}DøÌ÷C·dì,g—®kAa)§ª‘ÒNLÃ|¤
{Õ§ŽáÚ¦ +ò";*ŠQõ /ØÝ‘€Ê॑ÅØÒ±UšþmÊ#fÒ
U¬Í/ýÇ óXò?¿š.’ Þ"Ù›: á ›Kün¹ñ)„ËlËv!…ô8\•–¦<ÁÍù?„š’ ÔÛP-rFûoýììàš=üAÄÂb_”ïô¤ÚYœÕ§~Œ±«Ô±t…¡‹eªç±¾ Íwêœïa‹±‚½å‘3ÜîŒu4ˆð¯Þ…3QÔü3soÑÊéVý é&ÎÄF€ûGÏX‡#t4OeBçþ–$fƒo„e½ÙrJÙ²±c³àKäZ´ð[uGà™WT;Љ[aŸ‹¼ºQñ©D·Ó‡xýÙ!)ÕßãU±ýŽ'šBÁÞP)¢ž–Åg?]F¥‡†b)‡AŽ¡-¸¢(7€ëŠ;}5U-]cÛÈÜŒSµ<Å0b!Ôøè¾M'ÀÙ]éŽdÿ‹õJù÷–FÁý<õ-Ãüxƒ©’tDf6E4¿;Ðñ$DAXy¶¸ì¤/tëHïÙiÃÏø¦4VÊ™ð”BÏz¦ Àw¼-'.ÐßO4—XZ¬Q´é¨O%[þ½ ô£<ØÍ + Û¤Žö9#–Á÷nqÉÝdäðÞ]… +d¤'P¢N(Ø”lÐo¤A»ö¨i:‰lòÊŒŠ¯»±Ã`(GÄWø·°~{gÜXÐâÄ“¯GšUýé»ÆÏ8šåž‘''ÔE<J»Ð‡ßB/ßqT¿]Ì¿vÞPº Û©>ݯˆ×Mz4¯¯X¡,ÅÀ½ñŠ%› µøZe7oXþ +í~‡˜]NO£=ÚO. +³“AÍŒòTè¨û²àJ]Ù]Aõ·€YDßýü¬JGäÿ¦Ö …ƒÛÞ7’ðª¬#d³‘D/‹;y¨Úâ<ˆæØ©½XžK9¾‚øCx@±‚hOÃ5€>”Ò^/T÷Y$KTaÐ=~”ºS’êÕtB¨*Eà iÖ¾$²û¢é“$‰ó¦hH±-ÃÊ××
‹T’+7÷_Õ +kn˜’槆
çrÿm©›5E1‚ZT›m)Ó® –ôœ´sòmAøTªâjlvªÕêæõË8ŸÒ?$v/Êý¿¾h] G¸¦ŠL„´I¸RY{…´øaÛb>OW¡5A!qI ×ýSÁ…Uñ»ÌbOûži'ÂVc@ ¹”§ºG¡ÌÓiÍ +”Сʵÿ#_"סͷçyάÓEªD%ñÏõÌ9¿Ë¶
yr¦.O™ßI²³ÑBÉQœg>–cµ„˜N
ÚvQv$´Ífm]úÓLȵI;@7—ÖXàHU/qr`1©eÙ•ræ4OßÙö\Ù4r‘KH#1£K¡ôxš–õ<Ð&t9B‰È2Sòõ˜0™M·¦ŠiÚ¾h= Bi}HbO=8Þ"f6&s*~Ây:@sÆúðq û·’&$AôG4!…á@“vèrŸKö“²Qè²$Źö8r¤^åÚxÞ&{Ðþ,9¬¢‡’!íÅûõ<0U&U}•y}Ï‚üÒC°,¾D©¼voêùÕ¼õ™tðÝA’ñ2hì2úÕ>Ç-€„3„a³óÙ%§2¹åýyœ@^è£Àä‹%¢W*±§)‘YewÐÅéL©]¬¬Š‰¡ vnìÛC¯ÄÅÑgÈ-2ÕB¿;'”Ì•×(o*ts¾R»(п™0Ž@Ú7ÊKµèmú%…2¿Ù¡M!cF)eá¡Ïé‘õ…uB˜¬ä˜ +’²ÏYKëh†äRÇ2è˜fÝ·>ÖEÇ)Œu²P„åwõˆþ#½r€h:iã·q˜#ï£<Äù¼gJzìAN¥•!ì)šZm€‚¾j]ƒÛïd³³¥8Í +…Èy<Ñ¢@Í[°V†!_Vª2Ô¼ìfBQ‹¨>â,šù®´K¦‡=‹ÚXE±í—?ó´±y©±Îª!µÈ–}á…®p•ºyC(©yXk +· +蕬xNÅÑõL;«ë倪e•ý´³¯è#áíÎb”â<¨6MŸ¢Ë;p²ðê(§âÁQD@Ê6Ó‡Z†ƒðœMJ†k ©m¨v¡Ê€b;.³Žoß´y±ìÛKbaDâÜD +Rew BÒlÆ¡_mÕo׫¼KþpßN{àâ!Pb!T4w+šÃèceÙâ]E°8nÇy +b_] àR%j¹†´Tú +˜–-+µ¤aMI‰ +ŸþÄòŸþ2çþü¤OOžN¯þz²L†w[§°óÝù&Bär14 +÷ŒK@gy6†$‘Ñ!¾ +ŒXÕà0.Ìžì—ÔéåaÓÜ*Öõ}à”ÀcN·uH¨µX5ÑB2J¼ <íª°×Ñ?f ŠZsÅ.N}Øí
ãüdaÞ¸Ð"VÒ}ÿ••_(Û¿þüÿ\ežž}rû0=yþÉ2Ow7oîÞÞ^N_ÿóüÍqº¹»<þ .r+Ø<ijŒ?’ +Añ—ø,M •NƒibòņF¥KžeY|TUà°–¬‰oõËœ|?ƒ!b +Çr¦ZÈR´¶àBçâl +áÆ
sÐi4è¬È”Áð]ˆ¶øèJuwJ¦Qe™r1CbÝ´?VÊë +ú7TF‚¯Înîßm§Õúöö#Êç7ÓòáùñÃôˆük™xÞOÿúùä;|ìC…½¼<»8¿XÚ%ØKÀäºT{ÿ¹½Nü·tδ¿ÑìðiȽ£\« +&°qƒLÄA2•SÕfIüxÖ¤@òÐLh@†œq8-°½Â:v“f€'¸NòÑ„)ê&FHzæ1¤°"RåušŠËe9
Xv±˜1flÄv†&éŠ4YMz㲡2<ì9Ã*zÚ50 'äî
V7GÇe™V²lïl눶žcÕ,s@»¥½æÌt;z…¦.·ü‚¢iû +½yûÂV(ý”¨þæß³ŠÂàŠßý@–0ñûAëTÆ´dƒÙ BYãA6=¶HœÍ©;ê¼å‘ +Gu>²¾‚ĔǓ¸U¦ ÚNgÌÓaÍήi*2”Ÿ:€È$¼ÛwQµcô1fqØL†ÝEtŽ cÑëÂðéÃ:òæƒ'N°/¸à›®ÛV½µ +´¼Îã¯#¿c¸îÜè#µ‹õw”uØÝüQ>¶ÔËK»²—QŸVK{áÎ/¹Øçcgÿk>†™‹æýE>öã…Grx=_³\žm6ÏwW÷OknÝ»Cñ‚ÿG²³ûƒAyspðpÞƒ1½¹Ú®o§Wç×wÛ§íÃÕî¦ÇÏhíç³ÝûÛíð›âpª¿]Ý?ïnvÛÇÇþû_§Wù¸ i]éË—‚º¹/]jsL_½Ô¿ô÷ªªÇ±:ýÍû]¿¹ ÿíîñi½Ûl¯Ï×Oëë·ç×?®?l9{›¯/~ÝnžéàþËÛ6(¤éû‡ív÷µ"ÑÓ›·»'ì«-ªÑÜ]mß||z,üòÛçmù°y¹ñâ×Ï÷Oó5½Yâ…û{vëw·ÛïŸ?Þl[Çú[ÕõÅîæï¿Ý½»¿•µ»^ƒ]µ¼‚;ÈØ?·›§û‡éçõæÓ´\ïvۇוºëéý·PsMjž@«CÊ2<èþ-ÊE±xmã”0ùL¼*Áž0¥x8hR o[Ì&'28“0(|ÀNT‚9Å8ĸqüÃs¢¢j1/@I
¦iâT–ñ:£5‰©öhu˜À`3\' +
쯋ÞïÙy Nâ°v«æ .a`ô-ä^–3o6Dp3ž!I`FCR6LVrCyŠ8/¦Œoo£Ae{¾œç!DHZ2d4B¨ÿò"§@âälœ°Éâ>¨ +
¬c +B²Á£ +t1â·LÅ.•0ñ§ˆ¸+Š"<Õ{Epé8¢aÅÄG0ø&øI·qÆ ¨O
†¼'’ëÐún™þÙ˜a¹zÔ0çȇ×`8=‘¾KŒš† )#Cƒ¨>æ+¹(†ê‚ì==á‡Ï–“鞌=äEÇ<8ˆSô~ÑË\MtŠÔ
ôV‘Ÿtž +ÂÀ»‰¹ú$ P¸ž2Æ•GÀCÇs>;Ñ4
Íð‘(1Cóäß Ìþ"bRQT-SxºA§á¡–ÍpZUWM7ÖQi3u@À`hóêd0yß4îI@¤›
õ +ñ5bÓc ÌHÃ×Zø[$ЈFàáÃ0XpÖ鯫&ªû2Ã)#Ê@M€¶Ág³ƒ)OŸåhH¶:‚Þo˜§ÍI7)9_#V@§Pö¶¦Èµr¤~Öx܇ö‹©z)x}[Áé¿`ôœ†Œ.™AMCtž +(Øl +H‰ìWkOÙýýî$…æ¾É';–³X»‚u²Q¡1ÌZƒ5Žù÷9§î<z¦'ÁVv•X+/tq«ûVÕ©S§’:i²os±QÅÖ„hƒÊ¡M±\I>ªÛ裢NÞÒi×tÚüÜüæ]s×hõ²1êþýtÖ„Ø&ÃCAÛâÔ5
>¸jrÚ&ƒ)щ!¤hUmqYÞ²Õ3¹MÅudtk¬…7,.8e
œ +®'_Š‚Ù–XàBKÂßÄ”œÇ‘Øjã¬|–gË(ùl]Ÿ•)µ%nImÒeëÙc·|4®b:>®A»ŽÓ‘k‘ÜŽA‡·Ž¤šÖµÅ·Úê`–~N•Âϯƒ¤%–äÖ‰ Á+7\æêH·1ûÔ:›Î¶.†NÆmn³tZW…&³Z×
†Ä|.+ËGMuY|Ѷówëìæ82›Bì7Na}ÜøÖ$—W µó¾óö„ĨְJŸÚAÙÉ.ì›@fKfIðKBýøÓk"~IÞ˜ÕGÀ—°ídD—ÜµÉ M¬Ûd
w¶o]òmƒßn.>l€‹/f^qÜÔëý¸bÁåì¦ +’B-X¡.©LpØašª^2N°½=vHBðÐçæ™:>GÍ>¨Ã/ž_^Þ]ŸÝ,¤:F°ú“=1îr""
HˆÐÌJ7¡PÑøªD‹î¡3ø7Œ þø™’‚Ö3Ûèñ˜™+$°#s +k¼Oæã¬(%’µ/Î~.v³µ'£»9ïÕd·n'
º +Vµj7s—Õ36sàêÚ-½Ë]7ž“Á¥:û± á;Î.d'k¬I0`üÒ€ÆbíOä=ž³&É6À^Š–E¬&‚±öÔµWû>:ziègª—Ë~¾‡ÉÝ»5oÓMq%çŽ?’4ѬƒM®šé±Uï#'Ó†¼ˆáå)e*l¸gt D$Á{0"LÒdè Š6¬†6ÊOž5CâÛýæt H¡üñ>èK`[cñdã¶ZØß@Pd hÚ6
ÚGDVà!2@ø#J!‡q¿q+MÔÐ,b1ÔTøFIØs%+;Ÿ*£žêA“¨F¶2ó•tMÖ^`”¯EAá–ÚÀügÞ›,,ž‘ôTý;¦S1AŠ¹€#º?!°d3_ÃoRÁPcFY‰0Uñ—À?՟„’7Ü8ÐVœ-6‘vÐÅ0„‚ïó‚5n×tJSÑNLXKê^*:× b>Ì;^ºö¤ŸÓ¡&k¡—J…ª´l7¢S{aQ×äoÌÐ3•/,CB·-ÈÝgb)Æ®M÷Dgtì}ÈŒ¬á}OpeD‹pqJ¦†t•79c‚ÚùøçÁBF~7!‚5½P"T@ÉÅxèj땮μ +»x2Ü<1c¤gð›ó ^ +ÎSëðzG*q8}…?¸øy•LjÖyØ#ÐQ¹‡%úž”ÒØ—é0ö…ºÜzWªã6=±~pñ5r§/Øñ¹§HöšÊÿ¼/YŠ0Ð3µ£àcõ1ψÕìŒÃDaúò¶§|‰øñnOùrÉÇÊ|8=AèÃë R¸J¬(éÚW{€ƒ‹' +Ößö|:`ü{¶Ô¤·7 +U–%6eØt“¾ýÎP’cÇ’#eeeµQ’9$‡3gŽÎ@Ü7/\Ъ˜JÛiVÐùvÅ0ËÓ†Åäq§e)8ªÑ +Üi\`l§uAÎ{Ú¼°n·/û¶ÛÀìѤû%]ŠýõãŸ_þñÁú»ut•„w‘þƾ½³Þ›F|{˜Ì[ˆnö3©DY®pþ¯Û5“°s5¾þ5ûžLñ]àë·O‰ºxhðw8L‡OÁ/µ91ø4Ç™Î\NWðÿèûmêÁÑÉ8ùY§‹ÕòÆú¨àG´°F‹q´x·ÎJ'Ï‚é4þ±æ7q˜Y~†«ÙµæúØýày×ô5„-6íÅ^ûS³ÅïÓ@?kÏŒýU²Rãm[³EÁ¯lÁ®mzGì® +4Gç‹CWâÑ&û”zåÐb·ÖN9Í:µÍ¡OÜ¢ägZKrß‚Ã)á–TˆÂQï騡w3妆‚ÖÍC= +Š^¸Òeð`²Hª‘xÙÅž~ÊnÈ +/¸;hnX8£pà Mƒ@ó©#0f‹wB<É™ÃkÆ£62üt0|M£åÀ¾Pɽ2/ ^À…>à\ +ßÌä7PÍö_ñ2ʼnîîpƒð®Æ§Á27HÔxë*Kß,û2Xèb?êÞä‰û¹Þä²d§£t‘±Fãã žC +ÒTÃ’(KÆÑîæ`ö9Öfj¶ŸŽ)ÿ ‡›} ¤4ÑWQ˜€¦Ã¤Ÿõ&ØÒü˜šfÁþpuM°ƒÛø[Ï]ÍÞ%6|™k¿
HÞŸà¢y¤ÆË‘Ú™¹Šà€ÙçdsÊ|U´\>]˜ºý!†¨@4ÿ +ñºGÍ×æ“ÅK×;oݺ³ýEÅa2äCùüÀ
—óið+}5ÁJÃœU$÷j€E
™>ö¥Ç¡¬k=v1X׳õõ¼ünqžyœ3ëf?Zÿú7±Æ0ùõj€Æ_ÇDHÈ{k`mˆˆ§(¾âÖ¨‰öÖ¥ß[%Öfi<öéBX£.ö¡Î6›=
>r7(DƒoGã1;”ø¿ç*YiT¾KÍšzœ»n%LøÄ—”ÖÇDQ6Dt£Édiü¸Ýì'·ÔíJymk¯5¡í
5Í +ýVé9ÞœçŸMãZ\øùp2YêŠx'òuÑ–>”Ö®pW8õk—vŸÏ¡ß;æþ!ù¼q2ÃJk(°êÊÈ:ú²ŒÎFj4|áè㦠Dh€9ýÐ8Ê[ +(Ûq)ìnýÔUd}亵NÀâÓÓ ¯}øŸÀˆ×C¤ˆ0ÒYˆˆjhFv8é§\4àWjè}þ…+tÁL˜µûB%÷*;dž‚Y&¡DìL–Ù'!Š—Ü¢&ÙÝáZáÝ˹è,QãU¬«,m¡è5ò[ÖÈŒ‡pìV}Î(7-÷ö¸¥â˜0sV_‹î‹c‚_5ÙâW-+Êw©YS…˜p\é¹ÙÇè˜HáYŸø’Òú`(Jãn4™,#m]úf?«¥†hWJh[{™loŒiVá·JÏñæ<ÇölÏp`˜âÂχ“ÉRWzÏà=ƒøa¦RËJkW¸Ž+œúµK»OäØžp¿oaÛhp$O=v°…õzˆ´Ñ]ˆˆjhFv6ÃrÀ+iÿ$z`Ÿ?Dá +]0fíÀ¾Pɽʙ§`–I$B&Ëì“ÅKnÑ +bÏgÔÐÏ1çŒ1·\æI}i,º/ ~Ód‹ß´¬2*ߥfIB‘w$<æ:žÁñ¤C÷`Â'¾¤´>&Š²y žM&ËH[—¾ÙÏm©!Ú•ÒÚÖ^k>ÛjšÕùÒs¼9Ï!>›Æ3´¸ðóád²ÔñÞóxÏã~˜©Ô²‡ÒÚ®ã +§~íÒîó9ö(ÜïûØvúX‘º:ì`#ëõi#nw1"ªE aØÙÓ&üJMÀ=°Ï¢p….˜ ³v`_¨ä^eƒÐS0Ë$‘ 3û$Dù’[4@%»;\ë ¼{9%j¼Šu•¥-t½J~Ë*Yr& è½c‡J‡‹´µ¥Ôó½ryL˜Ç9«/E÷å1Á¯šlñ«–•Få»Ô¬©bL0Ÿx1áHÍ€Á<:{Z&Ÿø’Òú˜(Êæˆn4™,#m]úf?¹¥†hWÊk[{ mo¨iVè·JÏñæ<‡ølÏp`ÐâÂχ“ÉRWÄ{Oä=‘øa¦RËJkW¸Ž+œúµK»ÏçØ¥ +™0sV_!‹î+d‚“-~Ú²©|—š•Uˆ)™K8Ü”¤‡ 8¦ÒX”cÂ'¾¤´>&Š²y ºM&ËH[—¾ÙOq©!Ú•²ÛÖ^kZÛjš•ûÒs¼9Ï!>›Æ3´¸ðóád²ÔñÞÓyOç~VjéCií +×q…S¿vi÷ù[î÷ílÍ£©§Ã¶³^‘6 âùÝ…ˆ¨€fdag3,šLð+µ +§~íÒî³:¶,ÜïÛÚ6š'ëz:ØÕz=BZAˆ#;Q- +\v&•JQ²Õ¶rK%ÉÉûìsº[—n[Æ&3žØ`u:}®_Ÿc¹–ãÀÍ1
wqg¬¶iïŒÑöwÆ*½Óœ
Þiye¬lË#KªvhruÍpmðl¦ ÇM®ê:ºþøÔ¨ê3ÑÝåp˜âLéxÙøaŠã@Š[Èn’¬’Öô¸ž—û-Ébj¹Ydú$&tá +lƒ½»wxN¢o$?Ú<»pSC‹·e‡ÇÚ¼ˆ50ɼ„^æ
îž$á‰lö"“RUMWÞœõ?2çltxÕÑß™žV¥¦™ =öiGÄŸÙ*Fý5hJ šJcPè]‚1ùkSÕZ¢»~Â[2ój‹%5øKMÁM/ˆ!p: +¼‚ó`4æ…ìcýºòpǪóÝeÿ¶ÉñoEm—™–k +/cšz“\5FgÐ>ð#Np©š^’¹.†s Í>FâV9ŠÎ¾(¯ÒXZ¼[lÖ¿ZJ–Þ•l>üƒÈ‡ÌO2¢Ó8ôîùãþ¢ÈFªnZ¶k9û¢ê:í3]U³Lå¼þfb<ÿ
vu9¡YOÔÛ(2wKV¿ø‡œ
^q/Ñ•@.رi©ªEãßÔTWsלu|&’»Sœ)/?LlHq9M’U’Ùƒ^Öó"¿%YL-7‹ìž„Á„.hM½X‹†i¶bžï|Çà*|Z¢¿¬µhõíçpz»™îsrøÚYlãƒÎåÊ)ÅA´ú{jŽo!K¿ â+P½~€¡@×Ú§7‰‰4Í‚/†\‡zÓÖUÇÊÏËOmšŽchºÒÜVë ÃÔó%’»éf`+Ò .ö¶Î55ÀÄ8k?àœs×è•æÜvF‰rê…Ã,"x«&ÝM7¯«¦êãûÒÃÚñ§A¶ŠM»{¡Ž4›Þ†EGMå +i@ÖV¥Î³\(?{êÔå‹®²|AškR®1ܦëÚ.dŒ\k›2¦pÆ®×|8ÞÚ~.åY[ÍNïØ÷bx¸‰Ãé( 7í09Ýgg-ðQãØúX9Ãiš%^%M/Ž¡¡ë0ðÎ[»ùžïc’/A±qÜkŸ9è6}úÞëÂçÕ›³ÛñÝ÷vpd4è³kýëâ?AùüÊ¡Ï·Õ3¡ÏþÕ/ô9¬Þÿðÿÿ‚Ó¾—yûÜXæQDS9<ƒx°ý^ðýå+èåzøhÔ•.†^¿Úõð[Üÿ4Mþ žÀtœ¶>&I‡Q2YÇ W£·Ò?YñfÇË@’æìÃ؆L'í(0[,_I^ˆ/R.w±Ë“è+>½éd2ÄûÑ$g, û©Àùiq@:Q@2‰ÿ^èW²P¾x-ÉL¢ÌËðM®.¯4ƒo1OoÞzp"ÛQÕ™½N˜Ÿ=+ñŒk$~z@â'QâOÊÔ]JžJ;JNRÚ¥ÇÙsÒum©I:<\nÚô‚ú›´Z™iU.AZNÓEÉ°»iv7Íšoš¿#¡ôÆž}Ûµ|[\ˆk§ù—òåžšûønouk+ìúËì$‰b¥(‚‡®2 +丅÷™$kÅÛ¬ðOì¬éAåõæ{Éëš6*֢؈Ýä MøS{Š?ÓA˜ä½$?|%ߥ…¯8a½˜U,ôÃi"ª×‰¿œf2Æý«Þ4̾¤Û&qX’îlAtËpž¯N-g˜ ”y}|æÞüFüã$cÇ¥tÑ•›é$€Èèà€/·0¤xzod˜>“LŸ»°ËÆ(°÷
ÌUº7»º×¶4þ72,,ÒÏÂ}/jÌ>Xl¿¿>WºØ/Áâú5C(2º¥Íl½ƒÁ‚”;ª°Ó¾÷Š
MÚh…S\/n¼÷F0nx|¯©!ºÝtá—©Ý>‚•÷GtL¹>rUå¾Ú2”ƒrYG*à\ +ƒ¥ó£ +åP¤„r˜0…JQ=UÄhî@X’lªtŸéÆQTýRù¤=ÒÕ"×D"Õcl d£ZÕ¸ÉâQøÔá>-‘…O™GÜ_ð…]fgé2C:;ÿ'o‹þpرjÓ,qŽZœnŠ@[aáWKqFý;gŒ€b¦°hU(°@-Ϥv¾§\!G‘:âO7"uT™« ÊUY)ÇLÀ µcð7P£’f 1\CÁŠ‡äÔdæêR)P[u)éPaY¦=X§HSDšy¼š¹Ö¤RMTœª4e¿–àET–¥Š>DÐâZp0ÕÁb`j»)©kæ`A]³„–ÍU°E—–*Ø’GBGÐ×(Up$}‹Óy]ˆ~°PQÒ†¶óxU@»ª2$T6Ëv‡ý¯<f—ØÚêCcݸö ]Ï€*÷•‚Ö5¥àlú·5‚Lhµöæ𕤷ž•,Røe°LŽŒÎ¥÷LkLváhJVVm_+´
3~¨ò)z/.\÷Ne÷ N¡RzS’âåJÊèZÛQCkÄÍY*PFSÐH§c¥ãš Ù—Þæ?ŸQ_”xæN^
pã}J;êÎH¼êyý´¹'6MÇ…9se˜
(Ç™‡92Ì¢Òìy˜-Ã…Õ(gÍÀæHF´7e˜¾@{C†i´×e˜º@{mfÖŠŠxµ’`4ΪˆU}ØQEì³M‡=әبTÜx¢°™Ghê› +H‰ÜWín¹}‚¾¢…ldI±³qòK¶×[µvì•œ¤@¶83”ÄŠCHŽlåé{ÉùâŒf8㤷u€À–Éûuî=WDä%Ùa–’è§?ýåËÑKŠFÔt¼Ô’ò5:zŒ™Y,Çq}gÿ?þçÍõ{ø½5\ÒPSÁ±Ügû¾|W]Œ5¼¤Ú¼j/I‰PᆲHža¦èxÎuÝ8½O +?þÊÕðE½ëðÃõÙ|®Þîx\A{}ÿñî…©Ò"ìà`÷j}«ý¯ýý&ïÞ*'Œ\b—D-ÇgOΰådÊÿKÕêáykøGúÿ½¹VŒ†ÿë½øçÑÙÙt¼ ˜u;º!t½Bù¼øœ:ësêFz3ħø¼.ŽÆãiŸKû!îìŸÛ•“ÑiŸ#ƒzÉs;ýã\Ð ®ÉJßJº¦|ˆW‡gþ +®÷cØÄA¬º`§6Ä#F[QF +§§æùÛT'©†¯ÁÅ;iÛ›™¡w‚Ñbj
naþíÅW`ÿLê!·×eR¬¸i;y†nˆÚ …µ˜~µ%š>ûŒ¾0~aÛ¡Qg®±OÅ…'WY(áû;£Dt%%NZUš›À*us3ïfØùcïfÎ,
ȈMF‘¡¹àªŒ|ç³yJ‰úʇµ¿zæ!Š‘mØó*€®h¡‰Ú¥iñú¯ï»ëõi³¨zÄtÚQé•ËOuk´~K1£z?äÕº«Oyô.W´³PŠ +Ö‰Uõ<U(å[Õ9ÌüPÒ¤—X±]š\ØŸ³[ÐÞ‰90 Ò²¦z/1W $“‡†‚¥ây¹ÃúÛ©!ÖA7í©LgOñîgË402Cp½0¹ë$øùî«sMY% _á(&à8``š "Ž9眳žëߦ™ÝïìÙ_ûǧ¥+¾ºêxœýAeßÇCK:É8çÄÑq„^ÏÕ}‚K+dÁ‹‰øx¸Æ€Ãa«ï«•Ñ_³<¬‘ì^°ð4$„Àê¾ +1›~H3=ƒôËHªàê\ãÓ5ý껫 +gÛé«´îH;àvíݽ.É$ã¸)RÄÙ +EZ7âjÍ„ó±Pņ +š/§HÞicsç>Œþõ,‘©úè„J2ÑŸ¨^ß„ªz½}wíY÷@4Ïö»¨ +¬œ‚xµr{J,ÂC.%QJ—G)À
9E‚Ùáó“àë¿ÆêYk`ïÀ™“Z^n%è‹'UK•FÑÇÄPñÌsAâªí°×Ùç°!Ïp0·rl¦x\G¯¸dʙԂŠ™©° +°¡<_º![ÏR[âné•æî=,q”ëÍ̽…C¹^õ]áŸM½Á¥qdÙjÄäòLçÊÕÎ6ºÞ8ÔÑ̇ +÷rHw{êî>~>¡ZÏíÞ=«ÂI¶>1aßÊ…¦ó¸b÷á+FÍÆñèýµ8áä"mø†£¶Wý/O6'~Ê,ãÄǵøû:c;ÈZgà.ö¼Ð C¥EÀ›Â£_1ëíšoÜÓ¶E9øºÛ—·r[ÊåNÀêÌ„ò^*ð•þy'Ø-¿£ŸµhwˆQÛ*‡×ÛЛ·—ÐúQžø«!ÀøÃËÞHƒñBšùäŒ9[é“’z‹™ÀSX7Z°¬nÖ!®¦únÛ*‡9Ͼ hF [àÊ—»‚nœ”à´þÑþ'Ëɬ&ú¤ô—“?XMŒ©ï‘¡Ýµ1žllÎÖK®PûsC‰nƒçŒƒ±1棦 +ÐkâdŠúÿÚ,ØóÊ9¼ïS™®”Œ*ðŽA‰ïø@‰è]Ñ8L©išý'ë.‚Ò>Éä‚RvÍŽLØàf¡gÀ/ì3l}«U…B-ÓV'NNÓß– +Œg’a|Hƒ-³è éßF˜óÿwCg)½!f°¼JpÀæ·xò_ÓÇ·q,F&"_Ïbµ_–Î;LZ¨lyr/Nô¤œ*„ùš=flªUß‚µ‰è«ó{]…Û‡¸ìÚãÐàÁàý^º„µ6y."ÅyäQ q}1èƒMøÓn^<’ŠOw[J“jÙÏ +NîRX¥ßó9yƒU&b»(Î,¿3Ô‰²M¥"_{[»/ÃÐ[‹J_•º"y§÷‹ÆúÝÀøà¢ØÍm\¤´cp›¾fçÍFU¾èþ_k¶”TøóyY‹ÄóR R‰¡¾Ý‰Ô<&f-²G‘ híbŠAç_ŒWçzªZ}‚<„]Q +¢²ivŠ=bC°wßÿX‚9æÜó'_·3{ϬYk‚¨T ~ ÇŽÁ%2w11Àžìż„ù1 «ì7uêÔ¤‘϶0^e™©²c;u¿›^ø›K?jeâÜÂε2V2žVºMj†ÌãBñ„oû161s;ùœß—`ÿ6½¹MŒýïüF(Nÿaz-1¦VÁ½Æ/ÏKf_ÃàÄ#ÿ#"µž—xË åz
Þ,FˆH.Vù¶nå~Lo4œãKóNÚª0û¾Þç•zaõÖÆt©ª +ê– +<À絚'K|Þq#|o˃á|;`J”q¹8=»ç÷:å?CÜ&ØCÐæδ®[Æj+9GŠk +—¼E¼Í‡[ÛsjN»·ðæ†Ïš9sÜš.ÒàäìlþÊ–W”œt‹$˜„Û¯OòàõöDJ»ÎO?©w !Ë7nÖöšySMðÛMIbu +°wp‡w„zcùÙOÈ£ëîÃ'ù´ ÇI;¸~-ÉÌaÂŽ#Íîh|òÓ“šœtç±ó}©øtûÓlÂ.À’?ÃE†|¢©îp㧂?ñ-Òª:“éÈûä6xXÎuûÝôåÂ=«x?RU¦Wi<¼.„‚Z𘻾È1³Öf— ¼Åì†Â;Ðø–í¦úùÉm/•ÈÖÔ@z©UnãÊz^öÁ¼*W(`Ï´V¿~zÃXÉ„ü];jÍ®ÊðòmÇbJoUw@¢ÄLõð=š·bqF°ehÆz%%#ž{ o1gõiˆ~«ü£9w‡'‚™âf¨VÊO@õžQ‡ÈË•êv‡ù 5éìW°½†Ä•K©ýRTº‹Þ{s|L¶jƒÕaÊÒׯ±%ß%µg¤/ÎU|¾ebW¨ÃfÁÅú¸ÕÃIÐýŠä8;û"ÞKê\¬Å-Ý_*ÉÂ#¥I6ý%̽°\1á×|Ï(XæeJ¯ÓÂpÙsX€öŒ“hoÊ2hÎö·Ñ:¿`U\(løÎÉ'"õ/‡ä-qIèËg?°·¼ßBðÙ2˜aiìŸqq*‹ñof|ÉÜ7ŒC^êÁ÷ÄÔ^ˆÿ£ØNÝïþp%:QBµò}'M‹“ñ*€vYÛ§4ö#Æ0| E›F|_ï{¤¤ +µ|ƒ¤»)¼e.Ý-"@íÎEB‡îƒÍóA‚/ÜòV’vÉT{ÈšÁÿéeº,“Äñ+ðDE\ +e{Jô?å}ÅÙÉ,àÅ…»ZY*Ó‰n02TÉ`þ »cÃ1ŠÛ§1²5L`¾Í˜æŒ:'»˜¯ù^Äüt“¥ƒ™GÅG°ÙˬŽÝHqÎ>ϹP>ŠƒMv¦ýs^Twƒa¥+3¡`Ã%‰Ë,s¾S«öTOÈ\¼’~ðâ0üZ’ÆCº8ä=>“ˬÐuJÈÕ¦ +~oðQT¸Z@P#áŠ=¼Ô%)%÷ +À«RÕ¯Æ + å¡VQ
šeê~S!ôÂ-í¤ ¹’…º +…ë’¤Åò¡´ *I9A¼äo
3AåÈ.©Ÿ4Ùd;`’×! +óžMï„Å,z?©JŸ˜ŠI¤uÐf¯(놮Ìñ³a}¨ü ô Ä×`
ªp™×Nˆ™¬Ñ83ëéVyØ•ÑãÆñne׊âK59FZ㬷3G[7‹©ûªØ£=ÇÃÒÚ ŽYm]>¤«I±¨óÙ±ZV_Ç+D%Ý—5ë‡û;aú¶Om/ÍéãH>(Ö_ÖºG+»VåŠÔ^BZßðeC[ÇÅd梘…}ŽOc.¤u§¼œ*Hëþ•Í·
ëƒb‡=ÏMQ_ƒ)µS¤µÆ†¹w´bøê¸ì6P_Q{‘ÖR®¹Ö›u0hÅrë"“k¤B—2ÞKÌIOÊd¥zm9«[´yWVzó²7gØÃrØ×¹¿èµ{TÐëÏÿ‚Ö“~ågôäE¹¥ýº«c¬â‚7Ìæ¯%à†¹ëÁ! +îƒ ûŸPË]¬$,‡ÑPØý#¡6öÿëXÓXà'hĪ=……{ÿ{ŠÞݪ +‰^ý¥/Y®¿yoz>o÷>âͨó{Zzþã{‘žwzµÈƒ˜Ç9½Z>lݹç +Ȫ€Ü×¹÷m¯Ûð6Ïç$&÷^D,“ïÄ,\îŠ:Ëÿ.>¥7"•¹dÎM&/C$Êó[gV®TÝaŸ¬‡á}Üwþ·ûîç]ÎÊ…ãýüãZ:_ŸñÁa¤]ŸÖÄ࿬WëVK}‚y.ÃEî`Œp¢AxbåˆñÓƒ +ïÿu÷Ìôt7]==Œfe¹BuÕ®ª½wKÆ1cªÕ“µ!Æ6PCñSi`“Q}”7gãü’¦ÄäEjYµ¥™¶§TäQq¶6\ØfK¼‹¯ŸÙlÉcÛÏ…éRÏë¾e˜ 0ixFï?#7s³eÉ0ƒô·1éwO²Ýló<-«ÿî ¯"¥U½jåù•“Ž¥C)Á†Îmaêu°W?ÏÏuðÍT‹ +Ò}ñoÓ¡¥>ñ„DœIÞLŇ´¼åv˜ø¬=“Fl÷:HÔßNñ©™¿Ñ\$<çµSš=>(V1ô›ò5Íã,~Ð|NñÌ·<°û.Å9ÁˆÂÃHéXSµí0Ì IŶ$ +ýMgÀc&¹‰òÉ¿kpŸj"F×2µóœ’ŸÞ‰ÁáëùŽWÂtö4N° +çIâ.²)Þqâå;P“F¬””²øcóúÅøXÂ?8Tse˜þk¨!78X9¯ç`ñGm"Š³—ÙŽ”Œý¬-8ÍzMo0šõš ÎhÎõ*Ô€9Z„e´ÇhîõÄÁ‹ÁüÍ`8MÉhƒ0ŒF·²=|ÿFC]“1ZàÝGq‚3šÓ}1NxFÃQ(£ÙZ¹mžÑÊl”l#åŒÏA¿`˜27À‰Ðð]4ûnÝmüù%嚬ܣìf¯ìtVß<¢¡'{L>´ôysœKúò”\À4¤éÌšhÏÏW²eFˆ¦Yl D²† Ò, +6Ž†¥™!öÁ}â”ÂÔ5$y
†ñ£gíÁ(¸u¾ª§Rt,‹‚´2XœZê7°9 +KNÝ…^C?/j!ª/ƒÝ¯†è¯¹0þžÒ‡è•úâý’ù{™¦¿þ +äïeZè]8Xxÿg!Ó *†»¦ö÷z*†ã„ñ÷Lª…Û«‰#ñ÷²(ôzâ誡Z ÃüY„VCN'KAÉ+è¯aÕЩ¾–*Ê6ÚÑÊÂó{æ +t¡^æµöœ|
Âsȸ¾
–ç&B~¤ +)kñ_/Q˜šù܆,5ó»RC˜ÊÑãrOGÅÙjP(ü/VË’W=Ud¡þf¾¬¥ÆrM-FÅ€þŠÁJo`°òíºÑƒúâ
þ8ÁvßÁ`•ø?½3}:R"ö5˜Åxˆ®Ú@''yÅ$‹Á€e“G=†éÌ„VRš±±\Ž"Û«ëéÙá—þ›ô²pzpf-—eëo$÷v9‰d‡wHî{å.’ëV[D°Mü¯q$ûüòbø¯'‘ìñU~å+gÕ8mhBHÙù×dE+|‘Ë\í=/’¹dU,VI¢Ÿuçù‚µßÙ–kUÜ}åBÿ-Y,ŒÖËå·h½÷ô¾Ã ¦Ñ±m-×÷ù;/Ü£™o志£„“ɳ{±Øàã¿ù£»ãßà£Vôä¥>Z<yúqÍ_¯L{±D©;ùzô‘}t÷:Î<ºÿ£qÍ<ú˜HÄðî»ÏZ±ç™g*À‡‹øœVÚþ{4=Eð”9ׇŸek +·Ý»cå¾èƒ^ž’•›I5ó7[âÄsMšDÁµ¸lƒBܵx®‘Øf®iá—Û^š¨ûò2 Ó!7ËãìJmIjņ#W¦?ÃäL =˜ôse—¶ó}Ú’•†fó¦
ZZ.¦.ͽÅfùt"”ÛsÿªvU’9'“Œz.,ßV½úà%¼’Ú½cÉ7ÚtߧÞ"ƒ…aKÌd©ušú!-r³y¡lìƒ-ò¾ôá™»iy!Ô¼%'?œ:zÉVBgï´Õiþ8\s‘Lœüí—ô.9'3ôÿj ¯ò¢Üø]í +ER?–m œúYçãÀ‘as¼ž{†¼î Ò»iz)¡ß¸ñqÍšä v¢
Ú.Ô°ó+I®)Æ)ñý}lûÚ.E¨»¯ûkôŠ&©|+Ö4"‹@eÂC¿à›T5 +¦¤¶ÒÜ-æ$õƒ’:¢Óêe{º•š›:ö¯Rþì«ûg˜š\Rû¹Å00>Ù æwchOÖ²´Óx9!¡\NÌâõ+=Ä“ÏBŒçÚPEzŒ¶b¶œºƒVnŒÆ9<º?èwðª´8?¶ÁF±×à²ó«~…j‘‡x†ùBxòŠ, q_¾+áϽr»;ǽø|Ž½¿íc +`˜¾á¢8{˜Ô‚a:–ÛJ<,×o!;4)úë‹kiäk±:´|w¿ÿn˜>p@GÜÆØÃ`L–†© ‡Ê¹ ‚xç"dlœW +Y³DYO¯4 7LJ\Ð$¿œj Ϥ)9•l§tŠ}dGÿ\,dùÖZIÕ|?vª»ñÞ¾ƒ~ìåT{ãU'%J©vÙÇÝÓsA=†pJÀ# …ARbïœTY— +|Râ—Ù_Å8íê¦d_|ª¤šù›-qrX‡ªXžÄ9¬vâ/nˆy—wf’›Ž›±ÖŸ×ÉŒu±¤·¹£¥sƒŸNÁ—RrÂqõQH̹ajœ
•x-Ÿ`wšî»Ñ&ý\ÉÖÇuJ¤8êÑC”–’•FtŸ»xg8o¹Z ”ÛsÿªvUt¤°Sb† +õ\X¾m +ê®y¯ð–Ìù´{ PÊ+ñêbWÝs†-y`&K`b”2ÀÂ!lðÂùO2Þ;™"óf¹Rÿ¹*òf¹ç™e—ÇÄôÌr¥>ÈÄ4†Á0…qà +þèñ‡†„ +S$uMp^ìeÐNŽ®ñ+¯ÕSE/'ë$6þYZs +&šN +]íTªv›3†ñÞrù˜B·fš&ìì˶qJ;—lì»R‡½-³1ÌÐH⨹Û0½ÑvwZIÃÁ¸óHi3”£ÈžÙÄ¿I¢±É¦xåÃTq ViøÌ2Lq
ÍU‡÷Ö«t+q$Œ>!Ⱦ[PÁ „¨E[âÒ¨-=Œ¨ ÈûOUR¤REm!ü©ãéßr¿í^ÂT¹à,3ÀÇ”oÊ·QF¥WøÈIdki°½î[~/‹IV|–h-–áMüCÞ7¤ƒ®²¸tÜv˜„kêq©[rné°:å«ìXÝ°³¿˜TÂÒ€èÀƒL$¾;9YõíäÃDãò1ÇNa+Y*©8žfV]$ßh`@È1,ûŸÓSèºõŠxöEc¸W†Cðo’BPCèÓ/ÔÞ†ÃU³Û3ÇœÊðcŒ‘c¨°Ç¸chÏTÇPÀÆ!ÞÁô"³ÑŒ‡6½< /ì¦zuìla|€•¢Ú“Ú))DQ öŽ1R>µ'AT +1ô›§tÎù¨Q;Ù}ó&üÐÜ1„T:ã_v>E´aJ´(sð9:XJÔ+Ÿè¬FÑÀ-yD{‰…•.ÿ@Ù#ß&›êá’α•ˆšÅäŸ0ÑÀ\ °\á³=d+h1¹zêŽÍÅ¥×>Xf}<yd
óeá/|¶Wö +\}ß‹ÿÅê9î’C˜GÕ'ÇpzÑÖS%Á#h +4–æÇÕÔ¬®|*a
äˆUš·×½mèJPË‚¼TW\doqDoù‹91„!áŽp½Ð=AQC1lòkÄ°UðLÔ…G
y¥µEÄп +Àæ÷ +÷"—õÁx‡wˆU +eíü…ú¼®øÝë;8/Ô—Õ‡®’Åjºï~‡NgwADÏW*©ÑY¾Óõ5q4ç.)¼ïx’Šd°ÙO7—+ÿ^í'¦b¥ªv¯ïÛZFëøØE™Myàƒüý˜±W}?ñ¥œyP ^ 'ß-4&êºêµMóß“§³¦ÿe…T~\꬧ꔃSr'PéÐ쳂"©ï8!”À™Äy’KG7ÞG0ù-0£ðlpCŠê§)nÎ@ùù6¿—¡=ÛN~4úp®RD§²~W;Ûʼ˜£oEœ®0—Ed +ý"íxiÔNvßVúËpÚÂÝce¥›!’H7F M'%ÇFÌÎ}‡ÖÐøzËU(˜";Ï•›ZæZS³º\žŒ’“¦–)H‰Ò¨_H` +LÏ‹¡HünVìíjN€£ZòZÍ4ãqa +:ÇyL+át%d°ë”©]Ì:,hfáN–Ê¡R3m$V2‘¸ÐI´ÙIx)Éú\í"?w¼OxÓkäÜùÓ>©rz·ò¥U)|Ððõ“IfMŸ£=2ªïýq<ÍGVÿb7 +S¦§¯¦” ²ëçmKçÎ:ÞJ3Ìé»Ê˜˜FÛ¬ãÙˆI‹z\N±·…˜˜JsiÞªÑÊúÀÎÃÖ=÷šøŽŠ!TX™ˆKîÐdÙùs²ôÁë28óÄÀNÖcÕ}Á4L¢bÀËSù—Ÿ'átŸd›)à +/ +á`7³ÈåY!¼íÀo†æ&.bLËÝh9øÜS”ÛÜMºÙ-Î&ÝTj˜r»–ßé¢ÔŽÒªýéãct(4óÞ`pAŵŒþÖñéÊÍŠWZ3"]kíVn0¸3xùSOÝÉ€4GL !:$æv2g~Iþ›žcI˜Ë¹—Uü[ꃛs$®pêPÌþwîÄ•\m~§Z ©ò²- Æ[¡©"6…˜s£ÃGÌ7¡±Røk9»/d
~Â\ +)a½mù¿ +0000000016 00000 n
+0000000159 00000 n
+0000060797 00000 n
+0000000007 00000 f
+0000196494 00000 n
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000196564 00000 n
+0000196595 00000 n
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000062556 00000 n
+0000196680 00000 n
+0000060849 00000 n
+0000061209 00000 n
+0000061343 00000 n
+0000062866 00000 n
+0000062743 00000 n
+0000062128 00000 n
+0000061409 00000 n
+0000061567 00000 n
+0000061615 00000 n
+0000062380 00000 n
+0000062443 00000 n
+0000062627 00000 n
+0000062658 00000 n
+0000062940 00000 n
+0000063300 00000 n
+0000064268 00000 n
+0000077282 00000 n
+0000085960 00000 n
+0000099385 00000 n
+0000117008 00000 n
+0000132899 00000 n
+0000136696 00000 n
+0000146789 00000 n
+0000172974 00000 n
+0000181172 00000 n
+0000196705 00000 n
+trailer
<</Size 57/Root 1 0 R/Info 56 0 R/ID[<5D4216194DFA42A0B71EE1DAB45EAD1E><C48FDA5E73B84B12B951588E8420725C>]>>
startxref
196885
%%EOF
\ No newline at end of file diff --git a/chrome/app/theme/menu_overflow_up.pdf b/chrome/app/theme/menu_overflow_up.pdf new file mode 100644 index 0000000..2677757 --- /dev/null +++ b/chrome/app/theme/menu_overflow_up.pdf @@ -0,0 +1,1556 @@ +%PDF-1.5
%âãÏÓ
+1 0 obj
<</Metadata 2 0 R/OCProperties<</D<</ON[5 0 R 29 0 R]/Order 30 0 R/RBGroups[]>>/OCGs[5 0 R 29 0 R]>>/Pages 3 0 R/Type/Catalog>>
endobj
2 0 obj
<</Length 61633/Subtype/XML/Type/Metadata>>stream
+<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> +<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.2.2-c063 53.352624, 2008/07/30-18:05:41 "> + <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> + <rdf:Description rdf:about="" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <dc:format>application/pdf</dc:format> + <dc:title> + <rdf:Alt> + <rdf:li xml:lang="x-default">MenuOverflowUp</rdf:li> + </rdf:Alt> + </dc:title> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:xmp="http://ns.adobe.com/xap/1.0/" + xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/"> + <xmp:MetadataDate>2010-04-20T11:15:51-07:00</xmp:MetadataDate> + <xmp:ModifyDate>2010-04-20T11:15:51-07:00</xmp:ModifyDate> + <xmp:CreateDate>2010-04-20T11:14:56-07:00</xmp:CreateDate> + <xmp:CreatorTool>Adobe Illustrator CS4</xmp:CreatorTool> + <xmp:Thumbnails> + <rdf:Alt> + <rdf:li rdf:parseType="Resource"> + <xmpGImg:width>256</xmpGImg:width> + <xmpGImg:height>208</xmpGImg:height> + <xmpGImg:format>JPEG</xmpGImg:format> + <xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgA0AEAAwER
AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7
FXYq7FXYq7FXYq7FXYqwD83fOX6H0f8ARdpJTUdRUqxU7xwdGb2LfZX6fDCEF35Recv0xo/6Lu5K
6jpyhVLHeSDore5X7LfR44lQz/Al2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku
xV2KuxV2KuxV2KuxV2KuxVCavqtnpOm3Go3j8La2Qu57mnRRXux2Hvir5i8xa7ea7rFzqd2f3k7V
VK1CINlRfZRkkO8u67eaFrFtqdof3kDVZK0DodmRvZhir6d0jVbPVtNt9Rs3521ygdD3FeqmndTs
ffIpReKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV4
j+cvnL6/qA0CzkraWTcrtlOzz/y7do/+JV8MIQXmmFXYq9L/ACa85fUNQOgXklLS9blaMx2Sf+Xf
tJ/xKnjgKh7dgS7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F
XYqxb8xfN6eW9AeSJh+kbqsVkncMR8UlPBB+NMIV84O7u7O7FnYksxNSSdySThQ1irsVbR3R1dGK
upBVgaEEbggjFX0f+XXm9PMmgJJKw/SNrSK9TuWA+GSng4/GuApZTgV2KuxV2KuxV2KuxV2KuxV2
KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVZPPDbwSTzuI4YlLySMaBVUVJJ9hir5p88+a5v
MuvzXpJW0j/dWUR/ZiU7Ej+ZupySGP4q7FXYq7FWQeRvNc3lrX4b0EtaSfur2IftRMdyB/MvUYq+
loJ4biCOeBxJDKoeORTUMrCoIPuMilfirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd
irsVdirsVdirsVeU/nT5y9KFfLdlJ+8lAk1FlPROqRbfzfab2p44QgvHMKuxV2KuxV2KuxV7H+S3
nL1YW8t3sn7yIGTTmY9U6vFv/L9pfavhgKh6tgS7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F
XYq7FXYq7FXYq7FXYqk/m3zJa+XdDuNSnozoONvEf92St9hf4n2rir5lv766v72e9unMlxcOZJXP
dmNTkkKGKuxV2KuxV2KuxVXsL66sL2C9tXMdxbuJInHZlNRir6a8peZLXzFodvqUFFdxxuIh/uuV
ftr/ABHtTIpTjFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq+evzS84/4
g1029q9dLsC0dvQ7SP0eX3qRRfb55IIYXirsVdirsVdirsVdirsVZp+VvnH/AA/rot7p6aXflY7i
p2jfokvtQmje3yxKvoXIpdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVYB+bv
nL9D6P8Aou0kpqOoqVYqd44OjN7Fvsr9PhhCC8Fwq7FXYq7FXYq7FXYq7FXYq7FXvX5Recv0xo/6
Lu5K6jpyhVLHeSDore5X7LfR44CoZ/gS7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY
qhNX1Wz0nTbjUbx+FtbIXc9zToor3Y7D3xV8xeYtdvNd1i51O7P7ydqqlahEGyovsoySEuxV2Kux
V2KuxV2KuxV2KuxV2Kpj5d1280LWLbU7Q/vIGqyVoHQ7MjezDFX07pGq2erabb6jZvztrlA6HuK9
VNO6nY++RSi8VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirxH85fOX1/UBoFnJW0sm5
XbKdnn/l27R/8Sr4YQgvNMKuxV2KuxV2KuxV2KuxV2KuxV2KuxV6X+TXnL6hqB0C8kpaXrcrRmOy
T/y79pP+JU8cBUPbsCXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWLfmL5vTy3oDyRMP0j
dVisk7hiPikp4IPxphCvnB3d3Z3Ys7ElmJqSTuSScKGsVdirsVdirsVdirsVdirsVdirsVdiraO6
OroxV1IKsDQgjcEEYq+j/wAuvN6eZNASSVh+kbWkV6ncsB8MlPBx+NcBSynArsVdirsVdirsVdir
sVdirsVdirsVdirsVdiqyeeG3gknncRwxKXkkY0CqoqST7DFXzT5581zeZdfmvSStpH+6soj+zEp
2JH8zdTkkMfxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ksg8jea5vLWvw3oJa0k/dXsQ/aiY7kD+
ZeoxV9LQTw3EEc8DiSGVQ8cimoZWFQQfcZFK/FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8p/On
zl6UK+W7KT95KBJqLKeidUi2/m+03tTxwhBeOYVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi
r2P8lvOXqwt5bvZP3kQMmnMx6p1eLf8Al+0vtXwwFQ9WwJdirsVdirsVdirsVdirsVdirsVdirsV
Sfzb5ktfLuh3GpT0Z0HG3iP+7JW+wv8AE+1cVfMt/fXV/ez3t05kuLhzJK57sxqckhQxV2KuxV2K
uxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kq9hfXVhewXtq5juLdxJE47MpqMVfTXlLzJa+YtDt9Sgoru
ONxEP91yr9tf4j2pkUpxirsVdirsVdirsVdirsVdirsVdirsVfPX5pecf8Qa6be1eul2BaO3odpH
6PL71Iovt88kEMLxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ks0/K3zj/h/XRb3T00
u/Kx3FTtG/RJfahNG9vliVfQuRS7FXYq7FXYq7FXYq7FXYq7FXYqwD83fOX6H0f9F2klNR1FSrFT
vHB0ZvYt9lfp8MIQXguFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq96/KLzl+
mNH/AEXdyV1HTlCqWO8kHRW9yv2W+jxwFQz/AAJdirsVdirsVdirsVdirsVQmr6rZ6TptxqN4/C2
tkLue5p0UV7sdh74q+YvMWu3mu6xc6ndn95O1VStQiDZUX2UZJCXYq7FXYq7FXYq7FXYq7FXYq7F
XYq7FXYq7FXYq7FXYq7FXYq7FUx8u67eaFrFtqdof3kDVZK0DodmRvZhir6d0jVbPVtNt9Rs3521
ygdD3FeqmndTsffIpReKuxV2KuxV2KuxV2KuxV4j+cvnL6/qA0CzkraWTcrtlOzz/wAu3aP/AIlX
wwhBeaYVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir0v8mvOX1DUDoF5J
S0vW5WjMdkn/AJd+0n/EqeOAqHt2BLsVdirsVdirsVdirFvzF83p5b0B5ImH6RuqxWSdwxHxSU8E
H40whXzg7u7s7sWdiSzE1JJ3JJOFDWKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2K
uxV2KuxVtHdHV0Yq6kFWBoQRuCCMVfR/5deb08yaAkkrD9I2tIr1O5YD4ZKeDj8a4CllOBXYq7FX
Yq7FVk88NvBJPO4jhiUvJIxoFVRUkn2GKvmnzz5rm8y6/NeklbSP91ZRH9mJTsSP5m6nJIY/irsV
dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVZB5G81zeWtfhvQS1pJ+6v
Yh+1Ex3IH8y9Rir6WgnhuII54HEkMqh45FNQysKgg+4yKV+KuxV2KuxV5T+dPnL0oV8t2Un7yUCT
UWU9E6pFt/N9pvanjhCC8cwq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F
XYq7FXYq7FXsf5LecvVhby3eyfvIgZNOZj1Tq8W/8v2l9q+GAqHq2BLsVdiqT+bfMlr5d0O41Kej
Og428R/3ZK32F/ifauKvmW/vrq/vZ726cyXFw5klc92Y1OSQoYq7FXYq7FXYq7FXYq7FXYq7FXYq
7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FVewvrqwvYL21cx3Fu4kicdmU1GKvpryl5ktfMWh
2+pQUV3HG4iH+65V+2v8R7UyKU4xV2Kvnr80vOP+INdNvavXS7AtHb0O0j9Hl96kUX2+eSCGF4q7
FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWaflb5x/w/
rot7p6aXflY7ip2jfokvtQmje3yxKvoXIpYB+bvnL9D6P+i7SSmo6ipVip3jg6M3sW+yv0+GEILw
XCrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVe
9flF5y/TGj/ou7krqOnKFUsd5IOit7lfst9HjgKhjnmL8p/POu6xc6nd3lh6k7VVPVnIRBsqL+56
KMbVLf8AlRXm3/lrsP8AkZN/1Rxtad/yorzb/wAtdh/yMm/6o42tO/5UV5t/5a7D/kZN/wBUcbWn
f8qK82/8tdh/yMm/6o42tO/5UV5t/wCWuw/5GTf9UcbWnf8AKivNv/LXYf8AIyb/AKo42tO/5UV5
t/5a7D/kZN/1Rxtad/yorzb/AMtdh/yMm/6o42tO/wCVFebf+Wuw/wCRk3/VHG1p3/KivNv/AC12
H/Iyb/qjja07/lRXm3/lrsP+Rk3/AFRxtad/yorzb/y12H/Iyb/qjja07/lRXm3/AJa7D/kZN/1R
xtad/wAqK82/8tdh/wAjJv8Aqjja07/lRXm3/lrsP+Rk3/VHG1p3/KivNv8Ay12H/Iyb/qjja07/
AJUV5t/5a7D/AJGTf9UcbWnf8qK82/8ALXYf8jJv+qONrTv+VFebf+Wuw/5GTf8AVHG1p3/KivNv
/LXYf8jJv+qONrTv+VFebf8AlrsP+Rk3/VHG1p3/ACorzb/y12H/ACMm/wCqONrTv+VFebf+Wuw/
5GTf9UcbWnf8qK82/wDLXYf8jJv+qONrTv8AlRXm3/lrsP8AkZN/1Rxtad/yorzb/wAtdh/yMm/6
o42tO/5UV5t/5a7D/kZN/wBUcbWnf8qK82/8tdh/yMm/6o42tO/5UV5t/wCWuw/5GTf9UcbWnf8A
KivNv/LXYf8AIyb/AKo42tJl5d/KfzzoWsW2p2l5YepA1WT1ZwHQ7MjfuejDG1f/2Q==</xmpGImg:image> + </rdf:li> + </rdf:Alt> + </xmp:Thumbnails> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" + xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" + xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"> + <xmpMM:InstanceID>uuid:830a1556-d6bd-7948-8f77-9a670459e4b5</xmpMM:InstanceID> + <xmpMM:DocumentID>xmp.did:F97F11740720681194DFF4A5DEFE0840</xmpMM:DocumentID> + <xmpMM:OriginalDocumentID>uuid:5D20892493BFDB11914A8590D31508C8</xmpMM:OriginalDocumentID> + <xmpMM:RenditionClass>proof:pdf</xmpMM:RenditionClass> + <xmpMM:DerivedFrom rdf:parseType="Resource"> + <stRef:instanceID>xmp.iid:F87F11740720681194DFF4A5DEFE0840</stRef:instanceID> + <stRef:documentID>xmp.did:F87F11740720681194DFF4A5DEFE0840</stRef:documentID> + <stRef:originalDocumentID>uuid:5D20892493BFDB11914A8590D31508C8</stRef:originalDocumentID> + <stRef:renditionClass>proof:pdf</stRef:renditionClass> + </xmpMM:DerivedFrom> + <xmpMM:History> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/pdf to <unknown></stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:D27F11740720681191099C3B601C4548</stEvt:instanceID> + <stEvt:when>2008-04-17T14:19:15+05:30</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/pdf to <unknown></stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/pdf to <unknown></stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F97F1174072068118D4ED246B3ADB1C6</stEvt:instanceID> + <stEvt:when>2008-05-15T16:23:06-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FA7F1174072068118D4ED246B3ADB1C6</stEvt:instanceID> + <stEvt:when>2008-05-15T17:10:45-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:EF7F117407206811A46CA4519D24356B</stEvt:instanceID> + <stEvt:when>2008-05-15T22:53:33-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F07F117407206811A46CA4519D24356B</stEvt:instanceID> + <stEvt:when>2008-05-15T23:07:07-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F77F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T10:35:43-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/pdf to <unknown></stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F97F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T10:40:59-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/vnd.adobe.illustrator to <unknown></stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FA7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T11:26:55-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FB7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T11:29:01-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FC7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T11:29:20-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FD7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T11:30:54-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FE7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T11:31:22-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:B233668C16206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T12:23:46-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:B333668C16206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T13:27:54-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:B433668C16206811BDDDFD38D0CF24DD</stEvt:instanceID> + <stEvt:when>2008-05-16T13:46:13-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F77F11740720681197C1BF14D1759E83</stEvt:instanceID> + <stEvt:when>2008-05-16T15:47:57-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F87F11740720681197C1BF14D1759E83</stEvt:instanceID> + <stEvt:when>2008-05-16T15:51:06-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F97F11740720681197C1BF14D1759E83</stEvt:instanceID> + <stEvt:when>2008-05-16T15:52:22-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FA7F117407206811B628E3BF27C8C41B</stEvt:instanceID> + <stEvt:when>2008-05-22T13:28:01-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FF7F117407206811B628E3BF27C8C41B</stEvt:instanceID> + <stEvt:when>2008-05-22T16:23:53-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:07C3BD25102DDD1181B594070CEB88D9</stEvt:instanceID> + <stEvt:when>2008-05-28T16:45:26-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F87F1174072068119098B097FDA39BEF</stEvt:instanceID> + <stEvt:when>2008-06-02T13:25:25-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F77F117407206811BB1DBF8F242B6F84</stEvt:instanceID> + <stEvt:when>2008-06-09T14:58:36-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F97F117407206811ACAFB8DA80854E76</stEvt:instanceID> + <stEvt:when>2008-06-11T14:31:27-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:0180117407206811834383CD3A8D2303</stEvt:instanceID> + <stEvt:when>2008-06-11T22:37:35-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F77F117407206811818C85DF6A1A75C3</stEvt:instanceID> + <stEvt:when>2008-06-27T14:40:42-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F77F11740720681194DFF4A5DEFE0840</stEvt:instanceID> + <stEvt:when>2010-04-20T10:39:03-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed>/</stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F87F11740720681194DFF4A5DEFE0840</stEvt:instanceID> + <stEvt:when>2010-04-20T11:12:41-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed>/</stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F97F11740720681194DFF4A5DEFE0840</stEvt:instanceID> + <stEvt:when>2010-04-20T11:14:54-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed>/</stEvt:changed> + </rdf:li> + </rdf:Seq> + </xmpMM:History> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/"> + <illustrator:StartupProfile>Print</illustrator:StartupProfile> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/" + xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#" + xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/"> + <xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint> + <xmpTPg:HasVisibleTransparency>True</xmpTPg:HasVisibleTransparency> + <xmpTPg:NPages>1</xmpTPg:NPages> + <xmpTPg:MaxPageSize rdf:parseType="Resource"> + <stDim:w>19.000000</stDim:w> + <stDim:h>19.000000</stDim:h> + <stDim:unit>Points</stDim:unit> + </xmpTPg:MaxPageSize> + <xmpTPg:PlateNames> + <rdf:Seq> + <rdf:li>Black</rdf:li> + </rdf:Seq> + </xmpTPg:PlateNames> + <xmpTPg:SwatchGroups> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <xmpG:groupName>Default Swatch Group</xmpG:groupName> + <xmpG:groupType>0</xmpG:groupType> + <xmpG:Colorants> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>White</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>Black</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>100.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>CMYK Red</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>100.000000</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>CMYK Yellow</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>CMYK Green</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>100.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>CMYK Cyan</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>100.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>CMYK Blue</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>100.000000</xmpG:cyan> + <xmpG:magenta>100.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>CMYK Magenta</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>100.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=15 M=100 Y=90 K=10</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>14.999998</xmpG:cyan> + <xmpG:magenta>100.000000</xmpG:magenta> + <xmpG:yellow>90.000000</xmpG:yellow> + <xmpG:black>10.000002</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=90 Y=85 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>90.000000</xmpG:magenta> + <xmpG:yellow>85.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=80 Y=95 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>80.000000</xmpG:magenta> + <xmpG:yellow>95.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=50 Y=100 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>50.000000</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=35 Y=85 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>35.000004</xmpG:magenta> + <xmpG:yellow>85.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=5 M=0 Y=90 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>5.000001</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>90.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=20 M=0 Y=100 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>19.999998</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=50 M=0 Y=100 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>50.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=75 M=0 Y=100 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>75.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=85 M=10 Y=100 K=10</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>85.000000</xmpG:cyan> + <xmpG:magenta>10.000002</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>10.000002</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=90 M=30 Y=95 K=30</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>90.000000</xmpG:cyan> + <xmpG:magenta>30.000002</xmpG:magenta> + <xmpG:yellow>95.000000</xmpG:yellow> + <xmpG:black>30.000002</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=75 M=0 Y=75 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>75.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>75.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=80 M=10 Y=45 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>80.000000</xmpG:cyan> + <xmpG:magenta>10.000002</xmpG:magenta> + <xmpG:yellow>45.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=70 M=15 Y=0 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>70.000000</xmpG:cyan> + <xmpG:magenta>14.999998</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=85 M=50 Y=0 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>85.000000</xmpG:cyan> + <xmpG:magenta>50.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=100 M=95 Y=5 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>100.000000</xmpG:cyan> + <xmpG:magenta>95.000000</xmpG:magenta> + <xmpG:yellow>5.000001</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=100 M=100 Y=25 K=25</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>100.000000</xmpG:cyan> + <xmpG:magenta>100.000000</xmpG:magenta> + <xmpG:yellow>25.000000</xmpG:yellow> + <xmpG:black>25.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=75 M=100 Y=0 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>75.000000</xmpG:cyan> + <xmpG:magenta>100.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=50 M=100 Y=0 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>50.000000</xmpG:cyan> + <xmpG:magenta>100.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=35 M=100 Y=35 K=10</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>35.000004</xmpG:cyan> + <xmpG:magenta>100.000000</xmpG:magenta> + <xmpG:yellow>35.000004</xmpG:yellow> + <xmpG:black>10.000002</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=10 M=100 Y=50 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>10.000002</xmpG:cyan> + <xmpG:magenta>100.000000</xmpG:magenta> + <xmpG:yellow>50.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=95 Y=20 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>95.000000</xmpG:magenta> + <xmpG:yellow>19.999998</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=25 M=25 Y=40 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>25.000000</xmpG:cyan> + <xmpG:magenta>25.000000</xmpG:magenta> + <xmpG:yellow>39.999996</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=40 M=45 Y=50 K=5</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>39.999996</xmpG:cyan> + <xmpG:magenta>45.000000</xmpG:magenta> + <xmpG:yellow>50.000000</xmpG:yellow> + <xmpG:black>5.000001</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=50 M=50 Y=60 K=25</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>50.000000</xmpG:cyan> + <xmpG:magenta>50.000000</xmpG:magenta> + <xmpG:yellow>60.000004</xmpG:yellow> + <xmpG:black>25.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=55 M=60 Y=65 K=40</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>55.000000</xmpG:cyan> + <xmpG:magenta>60.000004</xmpG:magenta> + <xmpG:yellow>65.000000</xmpG:yellow> + <xmpG:black>39.999996</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=25 M=40 Y=65 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>25.000000</xmpG:cyan> + <xmpG:magenta>39.999996</xmpG:magenta> + <xmpG:yellow>65.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=30 M=50 Y=75 K=10</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>30.000002</xmpG:cyan> + <xmpG:magenta>50.000000</xmpG:magenta> + <xmpG:yellow>75.000000</xmpG:yellow> + <xmpG:black>10.000002</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=35 M=60 Y=80 K=25</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>35.000004</xmpG:cyan> + <xmpG:magenta>60.000004</xmpG:magenta> + <xmpG:yellow>80.000000</xmpG:yellow> + <xmpG:black>25.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=40 M=65 Y=90 K=35</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>39.999996</xmpG:cyan> + <xmpG:magenta>65.000000</xmpG:magenta> + <xmpG:yellow>90.000000</xmpG:yellow> + <xmpG:black>35.000004</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=40 M=70 Y=100 K=50</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>39.999996</xmpG:cyan> + <xmpG:magenta>70.000000</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>50.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=50 M=70 Y=80 K=70</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>50.000000</xmpG:cyan> + <xmpG:magenta>70.000000</xmpG:magenta> + <xmpG:yellow>80.000000</xmpG:yellow> + <xmpG:black>70.000000</xmpG:black> + </rdf:li> + </rdf:Seq> + </xmpG:Colorants> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:groupName>Grays</xmpG:groupName> + <xmpG:groupType>1</xmpG:groupType> + <xmpG:Colorants> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=0 Y=0 K=100</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>100.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=0 Y=0 K=90</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>89.999405</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=0 Y=0 K=80</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>79.998795</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=0 Y=0 K=70</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>69.999702</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=0 Y=0 K=60</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>59.999104</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=0 Y=0 K=50</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>50.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=0 Y=0 K=40</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>39.999401</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=0 Y=0 K=30</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>29.998802</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=0 Y=0 K=20</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>19.999701</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=0 Y=0 K=10</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>9.999103</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=0 Y=0 K=5</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>0.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>4.998803</xmpG:black> + </rdf:li> + </rdf:Seq> + </xmpG:Colorants> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:groupName>Brights</xmpG:groupName> + <xmpG:groupType>1</xmpG:groupType> + <xmpG:Colorants> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=100 Y=100 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>100.000000</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=75 Y=100 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>75.000000</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=0 M=10 Y=95 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>0.000000</xmpG:cyan> + <xmpG:magenta>10.000002</xmpG:magenta> + <xmpG:yellow>95.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=85 M=10 Y=100 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>85.000000</xmpG:cyan> + <xmpG:magenta>10.000002</xmpG:magenta> + <xmpG:yellow>100.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=100 M=90 Y=0 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>100.000000</xmpG:cyan> + <xmpG:magenta>90.000000</xmpG:magenta> + <xmpG:yellow>0.000000</xmpG:yellow> + <xmpG:black>0.000000</xmpG:black> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>C=60 M=90 Y=0 K=0</xmpG:swatchName> + <xmpG:mode>CMYK</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:cyan>60.000004</xmpG:cyan> + <xmpG:magenta>90.000000</xmpG:magenta> + <xmpG:yellow>0.003099</xmpG:yellow> + <xmpG:black>0.003099</xmpG:black> + </rdf:li> + </rdf:Seq> + </xmpG:Colorants> + </rdf:li> + </rdf:Seq> + </xmpTPg:SwatchGroups> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:pdf="http://ns.adobe.com/pdf/1.3/"> + <pdf:Producer>Adobe PDF library 9.00</pdf:Producer> + </rdf:Description> + </rdf:RDF> +</x:xmpmeta> + + + + + + + + + + + + + + + + + + + + + +<?xpacket end="w"?>
endstream
endobj
3 0 obj
<</Count 1/Kids[31 0 R]/Type/Pages>>
endobj
31 0 obj
<</ArtBox[4.50098 6.0 14.5 13.998]/BleedBox[0.0 0.0 19.0 19.0]/Contents 32 0 R/Group 33 0 R/LastModified(D:20100420111551-07'00')/MediaBox[0.0 0.0 19.0 19.0]/Parent 3 0 R/PieceInfo<</Illustrator 34 0 R>>/Resources<</ExtGState<</GS0 35 0 R>>/Properties<</MC0 29 0 R>>/XObject<</Fm0 36 0 R>>>>/Thumb 37 0 R/TrimBox[0.0 0.0 19.0 19.0]/Type/Page>>
endobj
32 0 obj
<</Filter/FlateDecode/Length 66>>stream
+H‰Ò÷wVÐ÷u6PprqVà*ä2P0´!] .Jå +WÈ +ê»(¤sé»å(¸äsr¹úUr +8;V'i$O[%B0E;4a!JC~>
endstream
endobj
38 0 obj
[/Indexed/DeviceRGB 255 39 0 R]
endobj
39 0 obj
<</Filter[/ASCII85Decode/FlateDecode]/Length 428>>stream
+8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#s<Xl5FH@[<=!#6V)uDBXnIr.F>oRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0I<jlL.oXisZ;SYU[/7#<&37rclQKqeJe#,UF7Rgb1 +VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j<etJICj7e7nPMb=O6S7UOH< +PO7r\I.Hu&e0d&E<.')fERr/l+*W,)q^D*ai5<uuLX.7g/>$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~>
endstream
endobj
36 0 obj
<</BBox[4.50098 13.998 14.5 6.0]/Group 40 0 R/Length 71/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 41 0 R>>>>/Subtype/Form>>stream
+0 0 0 1 k +/GS0 gs +q 1 0 0 1 4.501 6 cm +0 0 m +5 7.998 l +9.999 0 l +h +f +Q +
endstream
endobj
40 0 obj
<</I false/K false/S/Transparency/Type/Group>>
endobj
41 0 obj
<</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>>
endobj
29 0 obj
<</Intent 42 0 R/Name(Layer 1)/Type/OCG/Usage 43 0 R>>
endobj
42 0 obj
[/View/Design]
endobj
43 0 obj
<</CreatorInfo<</Creator(Adobe Illustrator 14.0)/Subtype/Artwork>>>>
endobj
35 0 obj
<</AIS false/BM/Normal/CA 0.669998/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 0.669998/op false>>
endobj
34 0 obj
<</LastModified(D:20100420111551-07'00')/Private 44 0 R>>
endobj
44 0 obj
<</AIMetaData 45 0 R/AIPDFPrivateData1 46 0 R/AIPDFPrivateData10 47 0 R/AIPDFPrivateData2 48 0 R/AIPDFPrivateData3 49 0 R/AIPDFPrivateData4 50 0 R/AIPDFPrivateData5 51 0 R/AIPDFPrivateData6 52 0 R/AIPDFPrivateData7 53 0 R/AIPDFPrivateData8 54 0 R/AIPDFPrivateData9 55 0 R/ContainerVersion 11/CreatorVersion 14/NumBlock 10/RoundtripVersion 14>>
endobj
45 0 obj
<</Length 916>>stream
+%!PS-Adobe-3.0
%%Creator: Adobe Illustrator(R) 14.0
%%AI8_CreatorVersion: 14.0.0
%%For: (Nicholas Jitkoff) ()
%%Title: (MenuOverflowUp.pdf)
%%CreationDate: 4/20/10 11:15 AM
%%Canvassize: 16383
%%BoundingBox: 4 6 15 14
%%HiResBoundingBox: 4.50098 6 14.5 13.998
%%DocumentProcessColors: Black
%AI5_FileFormat 10.0
%AI12_BuildNumber: 367
%AI3_ColorUsage: Color
%AI7_ImageSettings: 0
%%CMYKProcessColor: 1 1 1 1 ([Registration])
%AI3_Cropmarks: 0 0 19 19
%AI3_TemplateBox: 9.5 9.5 9.5 9.5
%AI3_TileBox: -296.5 -386.5 315.5 405.5
%AI3_DocumentPreview: None
%AI5_ArtSize: 14400 14400
%AI5_RulerUnits: 2
%AI9_ColorModel: 2
%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0
%AI5_TargetResolution: 800
%AI5_NumLayers: 1
%AI9_OpenToView: -19 26 24 1351 758 90 0 0 52 138 0 0 0 1 1 0 1 1 0
%AI5_OpenViewLayers: 7
%%PageOrigin:0 0
%AI7_GridSettings: 72 72 72 72 1 0 0.8 0.8 0.8 0.9 0.9 0.9
%AI9_Flatten: 1
%AI12_CMSettings: 00.MS
%%EndComments
endstream
endobj
46 0 obj
<</Length 12848>>stream
+%%BoundingBox: 4 6 15 14
%%HiResBoundingBox: 4.50098 6 14.5 13.998
%AI7_Thumbnail: 128 104 8
%%BeginData: 12716 Hex Bytes
%0000330000660000990000CC0033000033330033660033990033CC0033FF
%0066000066330066660066990066CC0066FF009900009933009966009999
%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
%6666006666336666666666996666CC6666FF669900669933669966669999
%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
%9933009933339933669933999933CC9933FF996600996633996666996699
%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
%000011111111220000002200000022222222440000004400000044444444
%550000005500000055555555770000007700000077777777880000008800
%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
%524C45FD3FFF7EA8FD7DFFA85252FD7DFF8452527DFD7BFFA8FD0452A8FD
%7AFF527D527D527DFD79FF7D525259525252A8FD77FFA87D527D527D5253
%52FD77FF7DFD0952FD75FFA8527D527D527D527D5259A8FD74FF52525259
%525252595252527DA8FD72FF7D52527D527D527D527D527D5284FD71FFA8
%FD0E52A8FD70FF7D527D527D527D527D527D527D527D7DFD6FFFA8525252
%595252525952525259FD04527DFD6EFF527D527D527D527D527D527D527D
%527D527DA8FD6CFF53FD12527DFD6BFFA852527D527D527D527D527D527D
%527D527D527D52A8FD69FFA87D52525259525252595252525952525259FD
%0552FD69FF7D527D527D527D527D527D527D527D527D527D527D52527DFD
%67FFA8FD1852A8FD66FF7D53527D527D527D527D527D527D527D527D527D
%527D527D527DFD65FF7DFD04525952525259525252595252525952525259
%52525259527EFD63FFA853527D527D527D527D527D527D527D527D527D52
%7D527D527D527D52FD63FF7DFD1C5253FD61FFA8527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D5252A8FD60FFFD0552595252
%525952525259525252595252525952525259525252595253A8FD5EFF7D52
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527DFD5DFFA8FD2252A8FD5CFF7D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D525352FD5BFF7E52595252525952
%52525952525259525252595252525952525259525252595252525952527D
%FD5AFF5253527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D5253A8FD58FFFD27527DFD57FFA859527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D52A8FD55FFA853525952525259525252595252525952525259525252
%5952525259525252595252525952525259525252FD55FF84527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D52527DFD53FFA8FD2C52A8FD52FF527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527DFD51FF7D52525952525259525252595252525952525259525252
%595252525952525259525252595252525952525259525252A8FD4FFFA87D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D525352FD4FFF7DFD3152FD4DFFA8527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D5259A8FD4CFF5252525952525259
%525252595252525952525259525252595252525952525259525252595252
%525952525259525252595252527DA8FD4AFF7D52527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D5284FD49FFA8FD3652A8FD48FF7D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D7DFD47FFA852525259525252
%595252525952525259525252595252525952525259525252595252525952
%525259525252595252525952525259FD04527DFD46FF527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527DA8FD44FF53FD3A527DFD
%43FFA852527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D52A8FD41FFA87D525252595252525952525259525252595252525952
%525259525252595252525952525259525252595252525952525259525252
%5952525259FD0552FD41FF7D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D52527DFD3FFFA8FD4052A8FD3EFF7D53527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527DFD3DFF7DFD0452595252525952525259525252595252525952525259
%525252595252525952525259525252595252525952525259525252595252
%52595252525952525259527EFD3BFFA853527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D52FD3BFF7DFD44
%5253FD39FFA8527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D5252A8FD38FFFD055259525252595252
%525952525259525252595252525952525259525252595252525952525259
%525252595252525952525259525252595252525952525259525252595253
%A8FD36FF7D52527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527DFD35FFA8FD4A52A8FD34FF7D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D525352FD33FF7E5259525252595252525952
%525259525252595252525952525259525252595252525952525259525252
%595252525952525259525252595252525952525259525252595252525952
%52525952527DFD32FF5253527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D5253A8FD30
%FFFD4F527DFD2FFFA859527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D52A8
%FD2DFFA85352595252525952525259525252595252525952525259525252
%595252525952525259525252595252525952525259525252595252525952
%5252595252525952525259525252595252525952525259525252FD2DFF84
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D52527DFD2BFFA8FD5452
%A8FD2AFF527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%FD29FF7D5252595252525952525259525252595252525952525259525252
%595252525952525259525252595252525952525259525252595252525952
%525259525252595252525952525259525252595252525952525259525252
%A8FD27FFA87D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%525352FD27FF7DFD5952FD25FFA8527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D5259A8FD24FF525252595252525952525259
%525252595252525952525259525252595252525952525259525252595252
%525952525259525252595252525952525259525252595252525952525259
%525252595252525952525259525252595252527DA8FD22FF7D52527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D5284FD21
%FFA8FD5E52A8FD20FF7D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D7DFD1FFFA85252525952525259525252
%595252525952525259525252595252525952525259525252595252525952
%525259525252595252525952525259525252595252525952525259525252
%595252525952525259525252595252525952525259FD04527DFD1EFF527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527DA8FD1CFF53FD62527DFD1BFFA852527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D52A8
%FD19FFA87D52525259525252595252525952525259525252595252525952
%525259525252595252525952525259525252595252525952525259525252
%595252525952525259525252595252525952525259525252595252525952
%5252595252525952525259FD0552FD19FF7D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D5252
%7DFD17FFA8FD6852A8FD16FF7D53527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527DFD15
%FF7DFD045259525252595252525952525259525252595252525952525259
%525252595252525952525259525252595252525952525259525252595252
%525952525259525252595252525952525259525252595252525952525259
%52525259525252595252525952525259527EFD13FFA853527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D52FD13FF7DFD6C5253FD11FFA8527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D5252A8FD10FFFD05525952525259525252595252
%525952525259525252595252525952525259525252595252525952525259
%525252595252525952525259525252595252525952525259525252595252
%525952525259525252595252525952525259525252595252525952525259
%525252595253A8FD0EFF7D52527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527DFD0DFFA8FD7252A8FD0CFF7D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D525352FD0BFF7E525952525259525252595252525952
%525259525252595252525952525259525252595252525952525259525252
%595252525952525259525252595252525952525259525252595252525952
%525259525252595252525952525259525252595252525952525259525252
%59525252595252525952527DFD0AFF5253527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D5253A8FD08FFFD77527DFD07FFA859527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D52A8FD05FFA8
%535259525252595252525952525259525252595252525952525259525252
%595252525952525259525252595252525952525259525252595252525952
%525259525252595252525952525259525252595252525952525259525252
%595252525952525259525252595252525952525259525252595252525952
%5252FD05FF84527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D527D527D527D527D527D527D527D527D527D527D527D527D
%527D527D527D52527DFFFFFFA8FD7C52A8FFFF527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527D527D527D52
%7D527D527D527D527D527D527D527D527D527D527D527D527DFF7DFD7D52
%277DA87EA87DA87EA87DA87EA87DA87EA87DA87EA87DA87EA87DA87EA87D
%A87EA87DA87EA87DA87EA87DA87EA87DA87EA87DA87EA87DA87EA87DA87E
%A87DA87EA87DA87EA87DA87EA87DA87EA87DA87EA87DA87EA87DA87EA87D
%A87EA87DA87EA87DA87EA87DA87EA87DA87EA87DA87EA87DA87EA87DA87E
%A87DA87EA87DA87EA87DFD7FFFFF
%%EndData
endstream
endobj
47 0 obj
<</Filter[/FlateDecode]/Length 8605>>stream
+H‰¬WëVÚL}‚<„@H @[iAŠ(Šå²ÄÏJ+—Àû3“û0“IÄ?³X +û\÷9ûÕìë¢ÎÃ'ž*Ê¥’-ÜJRåu—?;©¥n +FÎèHå³ú²|¡o¥²>7ÊkñùNªæYøå|áûM1'UWÅñ`¹?]›¿)ë·ïð+=LêÜ ¿9Ž ì¼÷¿e—ʲ&›Oí4]Vž“ê»e Ÿ¸ÁÁžöÕv +°7ªS ®öÏîFoÓ?ç¬{B…â\œ¤ F©j_ªo:ÌI%Qƒ`ùbví`¥,f“þq¼(Æò>°ú!q^„Í0’7 “‰8jlt|T «û[çúÆi ™=Ñú4”:9§ð?”Å®ê’ý/ÊÙ?¥ù=›††
1º°i +‘‰DC¬ÙÔîÚøz÷I4ÔÆœ9Ì9F¥¡6ÅØŒ6Iè™0XUÇÐÐn´Ñ‘ñåXœCb(\(œÈ4$m1ˆs<
!Š:$3Ùƒ÷‹Õ°ÅM +A¢!FB4a†Ã ze€»Åü›Û“JÕï=}‹™BÀ’àa¥²(æXAÚPN]ô“$
¬¦åàcAuÆÊ¢†•4ãÏØ;.¾‰{?Ä] *©wÿ…¿+)ƒk²
Ú´Ñ„áíÊñ†æ”¯#B ÃAŽ–4%k•ZXx¿x†»P¨yn¨³„Ð$ï +1Íøú«ÒólcÀõî©Tê¿r¼ŒºžŒ–ãy`·þ§¾6ËÅÚãÈm¥lçë» dKÃýv[H
3ù«—ï$£Ûý´¨úg²Ï¬ÒPÒŠÑóxâK/õD1:S‚Xbuž«¢ÇúT£Âå<óŸmTÿë5úý$å±€ÆHxÜ=ËyŒ>'“qר!|In£yŸÑ³×”XyüK2Êñ0ÁOÞXýFcY†jTi´¿w)FÏã|áW}ŠŒZzÌŸàI€Q=qN7ªßÄHF9µý§3#'¸0êÑ~ýÕÐjZ¿ŒÚ˜MÀÿËÎ'ó›Û}º”õWŸò½|M¡~q߶=M†@”Š«æ®I󨀋Nû“€rg²wyÖÜêp Ù‹Žz>ùOFÔ³œ›¿<¦Žïfü*
·›viíÕR'GTJèé™JB/„±^Ç5o K°“éNÕ¶˜S~—â¾QþeMÞ{ݤÁñÔÓºÁJ¸tµ§ºÄñÄ<¥Î5bž°Í²t–†ñ9uû”<Ü•nW_êÀ˜¤·€~ûè’™%.\?éƒÕ1ñÁÉoG¨jO†N>£Åç×ݾ„NºF0\âø §æÆçô˜–Oûj›ì”åˆü¦+m\N£qåø aÃÊU}QÇ•6¾Ü²o±$j.ªæÿLg3óAÓÙóåÑé 6aÈ7+z¬Ðº‚@ m£†æ™0fpÔÐB)}½´ªæsª>Ó•º&ªE7“¤‰|퀽v@ c„jQR^„ÍyR¥’h„¹e‚Õ÷J^œÌÄ8iQ°´ ++2ùæ¹
•ÇP]€ÃÏ9û\Ï$ªgð|¤y}£Ê}UvžG;c³ØNw×¾S±°öz^——_·Ñõè1B¨†Ô¡ÿƒä-0:ªª«#Ýf]4E²¾ÏºŸføRã"×åÅ +Yö2Â\‚ó9•«>\´(K©Æ}.Å]—PƼN¹Å¡(A>—‰à¥êz,D+Å›Î1õ³bAÉR³IÿsšAY¼-¾½˜±¼á¼øØ`ØV9.c/jlôI{)ŠŸ–1l¢™±«Â˜vÝÃ&-IZËU‡£S¿>l~Î1Ÿ÷ö®d*a⎯'! +Ÿi ›PÈZ; 1¦øu¿¥(õû¯™O|k_‘f Çãj€ +áÓ– +ÍU°îX`„&‡f>‹.ôÚžìe½ûUÒŒŠÜ• æ~ö‚ŒªÅ¨µ÷/‚ÃÎAÞN¢®„wå!Ûò‰‹M!zbÓb-r8aw8+ѳƒq–Òɺ$]àHvô›|ån§ø{ì¸{(Øjœ&Ùó•¾?²ÖmÏ£
+ƒÄQÓÕ·Æ1£ +L¯Çš×Š±”XbÙ{9¥±áá*Øa?„xg2~°"õ"¬Kd%ÀžöÕvØ"[XQÁò‰oí«ã8k,ó¬Pü–FáÂâÈÇxb±qN?%*"}¬[, +N–~å¾®¤’ÝCÞ!D¾,Aü4Ìy/WEk»–:ÙJÄ´W§!ø£Á4tH8@$´”ÒÇi8Z‡óŽ† +
1:·˜
v<
A¶ñkñj¼Ä]1<1çèP2î; +'n‹1q*
1iOöö„`ê`koLS2úJù¢™x³X ¹~¨ŸhÌ™ìÓÞ¡1:Éí¥Æˆ Œ:Çf±á>ºÌ¡ôØ,6‰±¯02@ÍãìéroÈNðœâØ“j¼¢³Ì¼ƒsáËû#ç&@ÃeHBA=G¢{ƒMKˆS¼$ž¶*6Îÿ¬WçZúN½/"Ô@ ¤IGª(H$€ò—š +åP¹0mYeÀI(‘º°‚ aÎÃÅ‹µÆ}hŒ<w/m*AfKSÉ‚~€,Șç‚1®T¾ž•è®#&$Z¯•ÿÇ\ wIÎ_5v¦ žãÂl=å¬4<G/úFF0w''´ãùì3MûÃ4}¥›ÂP^ÏJÃÎ¥ùÌZ +̆r¡#ó©öŒ8×Jü\ƒ2M×ôØcyÂuÎXà1¥jÍXÝí>g,xƒ±›4ŸêØ\×»¦ýz%†›Ì×—G¦ +V‰·jÂíÈ|ÐùÙ+=û™½'®ûÓˆ–û4³
âÍ×—ASƒ$ÁÉ-**¸“l.UJ±¹Ïñ›ºŠò&•m踵‚Ò6 õê,kïEô¼R1ÆÿFå°
CÀf³ßŒ²í¯Ð;;V}'jˆ®°Ýò0ü8~ÞÀÇ—öÉpšVöœÓû˜,?ƒáî\è^q6VtÊŒ¹§u{«ûw¬&çâů½}1!&ñHº÷BÜ–…óˆ½o#V?ào•ü-h's¯¯NÖ1 Xõõ¡dߥ„VODsãïÔ^i
ÊÚ)âAgzçÌtsÓvÆ>ÙgÓïùF;XMOlIf}J2ÛÉC.lŸ×³oIa +cwCë)ð"MëÌ1¹,_ ÙKe|Î}Ž,‹œÏ=[fÇs9Ì2ñ{v9÷ÎyÓÜCú¿ÃÁFŒ²lŒéØSßJûÍ->Õm&ô"cnŽ‡¯G}£Æ
¶|Ìk¾3OF}?ŸöY¶ÐÙš<d= á…HûŠÙÿo¿¡ +‰&ËzÒ´=„ˆkx—ó¡O¼\¶?MaŽeæ¨ +†P˜5À®^c +ߺڗÐ~ôΑàò›s¤Â°ì2ÎeiAz¾šQÿˆ×®®ÄÊ'Ô‚•óm4Ñ;µSVáwN±šyf'ÎU>V¨Ã¹›ˆ&^,&Š}}hbo½H6vH`5A:|FMÙ…ÞÙá]h¯ª,W—ÂRSWãªðˆÖLÏ?MìL\kªˆ/nðæi‰‹5p¨ÊC¡Œ#6€cè™6Þ2ø-zÖú^dÔ!µÌ°$ݵ oh¯3J|è#ÆëêD‰ähô¡xŠyÐ0 vè‘D.µ€DÏ;’SvžŠ>,á’sCmt°ÎR7ͪUƒ£ÌQï%å)áø4Õ÷NÛ¾›•ƒC1Ÿêkì‡Lôæå ½*bÂ}m®©>~Ï™‚z×*(Ámº7ŸQ‹æ÷Z@è)‚¤ƒáL<éîd€AP½±B Ê+ü×3b²B× +øca—@øÁ(Z5!z.dB +±ÕþrÑÄjÿ—0À€B`û—0ö¶|PsÿŒ]»ýšü¶o ÜÙ‹Õ€$m,ùWHHSùV´ÜÿéÅìO¤óí_«¥´ÚýSBÚò¨IòoS\7°'¬Ë±ÝvXÇÆ.»:,¨é.A>,”>;Ý%CX`š3eì9–}<ÛÂxØ 0³iÆçÊ!ýÚ¤èoÑfŒxÖ‰ÎsO¤:ŸM·s$ª^< +B1{eÃæ!‚C)[ +‡¶œûÐ=Rh%XÐ}‘é[´’ð +gÿA6T”’o¿a;05Næ›9Þ^¹p'NÅñ‹eÍ@rŠ+i¾ÚÇ‘/«×¨áŠª!Q,ˆc‹ +äseƒÇ +¤ìCiæ!q1àõÙ„5Ù
Cì¿g7'#C†ç¢é°Þj£Þ)l&^iöÌ(Vn(¡ôx¬€ Ì «bŒ¬Ç¬WQQ¯ï¨€ùÀ¨PŽú,¿…VH`7BBiœHYïr¸b…ÀÉ6´ L
øÂGµºö=÷ùâujËÃGMÁ)ŠBÈVÒ4ðø5ƒØËà‚jp±2f›nì +•]±ÒÀjþ¿OLˆ‰¿b"/üâÚçµ~h^–/›_aOÒÃåk‚ÐÝ,¶åƒ®ßéÿ9·óó›¾9ýJüâò¥V‹E‹ú|»Ðás”¾é•]ÉÓ,¦!¢„K¶ e¯D‡"ŧxeUõµÓ³âßÏØRÑl·»»=~~zH‚™³$ž,†DX,wˆPõF۾Ѯ2é)%/g›ÓŒEã)$ü7í+ê‡Â¹Ä4êHÎrÇh5>½«¤=dé¡ ·sÜq™âªùÁMqP¾ï丿Å] þQ›î;ÓÓÞêÊ0vk¬LOëGèɧ +û +|¬nØ-da,Ü(ŽÆ?éCuþ/4ŠÁŒ·hi¤®cx¬RÎõ»bm‘&L6õ{‚ÝE\ +¡ÎWõÄg«?“m×gnxiÍnÔ«
l»œ {ÇZ½FÁj(˜½F‹™xM„\i3ÉCZë…ŒU˜©]µ±Æ=µzÕãÌ¿WCÞZ´ib0[Ϙ֬’K0&¤‰Ù³ÄicOb_Ìè Â¥Dh…_‡ŠU½Èµ»ÌØUàû2ƒª%TMRhuY£Ö„÷»æŸËŒ]Ç~Ø¢áîý}“¾¸E#Œ}Û¤/nѸËפ/nÑÆÝû›&m÷€…†ñKî´]s’fvTÊ‚…Ü‘Þ¡!B…q¥ÑÁÓDW‡4÷ŠéŠ›¯{£PóØp!)ß[ü‚Üáããn§XA*ÛÁ +`VÅ*j£0û^Ås¦;¡KÖHzìBƒ~J½ÃêÑïbg£ÇâµkTDïøRªi(ðèóÖ?Uœß©¨ªnªÈ Õ¯}ÐÅ·"”ÇÂS•A+Ö~Çáwµádú:ešãàÄŠý£É1œ{K‡ó4-bn`AHó·GP7å +öÝU$ô†Œc"SƥϤ’omÔÀ $À·Ÿ!H®»·®À`æy)P7Ø?œGÖûÚû™2ÊF0ÆÔ-¶‡ +e‡k'9ÈIÚˆ˜tÕ\ñ\ºwF¡Ð¡^óÐy³(qâÞ xHzx4+ Á ¥c+€nw佂±;â²e‡`à„ +"xÿÜqÛ iŸ÷ +Öü)‡ìiòñøêðÄê!™Õ‰Ál=c ʬKðxç,Awîã+ +OÎÉ(/•ãŒ¸ølëórÄ@ +úZ‹Xsç™6;µÎâà€`UmóèB/Àc¶=C”½ƒ{8Îåg)^WY +×m‡T³CMÛFÇfÔŸ }£%eŸ +-h¸yÙOæe’¥a¾¦.CÓ3ÿrا.UÚ +Ó”ÇFO`(Σ¢ÌòˆŠ»lņ¼ÉñaÆŸÅ? +H‰ÌWÛrܸýüó *ëA³ +¶úʳ˜l~ŸßŸUw8LÓtÛš·_«¦ÛÌÄŽ-e»öþ^ö›ï‹¾lʶì=Ó>Jþ¥þŠž6šdOm¯Zîªv½eÚŸKy¶íûò®n5)zOõûíƒwÝuÍ(vÙ5JwͦUÿ1Ö¸4Ú5Ðӕ܀Õ ~¸U0úåÐù#KO˦©ïûróPß>·À3ýãJ¶ï¿!Ö·ÇÏ]So'>ÍZ.Ë~Wß6ÕÕ·í®z<&M[ã®n× ¢ :“¶ÝãF§mïê¡ÜTFæî¡0#¯FÁ
ã<ô‰‰~è©vÖÿ¶/×5Â-J‘´Ûl ÂG4”Í)9ø +Hiä´ £L?ð™ +#èmQŸB4
(úiDc@Âb‰±Xj,–‹Ñc#ÇMö¼Å óNnT¨ÐR¥¥Rµ\éÅŒjdÔMÕÊõØz“‚Ö7K§æÄ8iéWë,ë.í0ë2í´Ô8
nsŽ³®Óγõ!87ZG•ΙÚÖ¡Ö¥Ú©ÖÒ8q\[¾@–‰.Ž0f¡%cfœ!´YÔœ Ã(Œ&¡ +Ó0s €ŸÌçGX j†QÅ$’Q¨(²( +8R{…Ã\" %âXÆI¬â4Îâ($…×86%¤Þk(#K)©ˆLLæ² +U¤b%U¢”JU¦rU€þ,å ˜€‡B¨Ã&IªÒ4ÍÒ<-å8ëg"²0‹Hg2K2•¥Y–åY“Ã@hTàº6—y’«<ͳ<Ï}ªtÓ4´aË„CdO 8„9A”Øñ8ÍÁŸàð +¨Rš +ǽ© +SÓèWÚp—‘„ƒË26qIx‘mçyuÌ¡cÚœ§H—‡Hf©oHwùPçºZ—:22WrWùZjZzZÀ/Äå²È!v#’ã
›däDäKÀ*tJÎãEàù[Jâ.héâVÇÝ5m¸¨ÁTÆÖnã|q +C·§ã5¾;‰ö Z:stPÊ1Aaª„âö±öÎaÿIच„$ ‡žçËý>{ÉSæ6•=s›ãm*š.zó˱·©¡FL§ËÒH96Z̉6lº3ÍoM.¤K'#§BâhF8¢XâÃA,¢19rŠà°Å8à!º€xŽ£O»r„‚Ô‡Á!FadA <}`œ§û.øË ã]öÄQs÷á,²´Éq«¼d—Ñ*: c•vÙÿI<ð å¶Z3õ”)øÌíMègKu°ÕªÎAúàÛЃSˆ ÊtpTdÄÄ\SvêRUÇKí£sŠNL:Vë³g#™ÎšÂ ¾Î&.µè4ƒtCLæIŒ²Æ+GÜúj8ŠW°è9¼ø8¢Î/Kž +\ä7¾"£»&‡£Ã2W#L>Ã%"»bô…([‚ǵƒ¦*ü7…*¡H„%@öªXJUÚ?Ã
G!ÏJ(¡Œ ” ˆFLQdÛy7EN@×gîöËnGn܈ÂOÀwÐä¦!þSoôÈU››½0™‰adwpüþÈ©*Rbw«{ºgâXž–%’"¥ªÃ¯vi¿2ðÁû¸TNˆRšqä:Íó>byO!#m¹™©‚g’wöüºhu‘+<ÏNkÙuéÀ'æÂ…myd‹&«îض#[¸/ôÜ^Àµzãñj½Öˆñ×ÑZ¦ú´6°éà0Õ&±Àm¸›Zó¸šZbpkê{{ +N¯lkø¨–e™—i—ŒÜÁ„"*ʲ@lZæyžæqÀÑì)¢Jñ 1\Ñȵeš§i‹—¨÷2x‰!7Q·Ø o‘o‰·DÏ[!m‚-ûêÄnJ>šÛ§gÓ$·lÙ#'vÆW“Ú#ƒ·€Ú# u—-Óg»«œ³Möl‘1Û£ekdcœ³)Š!Æl†–·+ÚŽv‚yÇ÷îÁÜ^æöµÁü7œ=üZóéŒû#˜óÕ`¾=0_ü7óO¿ÿó›l#Íß¿|~~úöí ½wO°y—9˜õŸ.̲{‘Û6å_ÙpB:Øι&ÚCŠ©øãŦ5ÇÍÁkã<¡ŠÆFÛÚ&¬é.|¹ÇîøßA¯kîù +ÜJ/k‹½»óÎ]útɆÐiä€5¼ÎVG”º[ÀuøBÚ…íÅÜÓ‰_wrÚ'j¥õèÉ°®h¶Á:£+b»§S~J‹’Z—öÁVÍõîëgÜÚEž`;m¹9<OÛ¼ðäêmýžniþ¶PÒi7˜pCÛ5œd7¡ý$‹ÃbÝ <ï¹Xfåíd‹&ƒ!\ŽK4÷èž®uáƒÁbÅHI爲+Ï'û•Ïýò +pN*V/ö1öMJÔ·Žê{ûÊ3oŸçëV÷æéöC¤£ñ"ºl^ç'øìóûêÇ€oÖ¤¦·ã©Ôù%ÖpUýEu +,{ª´£x¢p$¿I\l“d*éUmZ4gñÒÿ”c`õY]VbEV`y–cY–aÑ8óøÂL>3—O<²=:1zbN'R'V'Z'^'b'fµƒ3—BîOjÈüN/βsÛLòÂòBó…ç…è3Ó« +ë7°¯Ðd‰íÏél¯vá¾BûŠëÕ¦¢žšË+FyùŠ'†ÇæÌüNôÞ1¹·kfö‘y=2«lé +5»êÇ€ÿ³¶·K½ÜÑz‡T>™oÒô‚`=ÊŽ».¨ßQWKñO:S<Q8’?’«¥l}˜JzU» y^4gmÖÎ>«øgÈ곺¬”³Ëg¹,™Z‡iEð”…}…$Û9;[²f‡ÕlÖ×!Áåà>žÈÑrþИr´0¥šÙšx7¢=‚üê E(@\ßQ\Ñ» ùPw¶°åVÇü:©«·§»Ä|¢–ñŠ†‹êwPKw¤t¢x¢p$_ɉÿl–¶%¬^Õï¢`ˆþôY+eEV`y!›£xe©$½Â +7veÍèYðÒg’,ä˜Y1bBÁAP”Ê(ô'Ü'Ä'°W ¯à]»ut-‘™InP+ÆEF88“ám^Á+ж›ðZÍjA8M1¨ ¦
+¢9µÉ|&t¶±Y!³ÂeÞ;¢2|[f2(‹Éh›2Xºe›Ø|³˜O ‰%x!y Æ7ao –¶Q˜±ï«¾JG‡2ï|üWÔ·HÝÖ,«}Yjï¢^nÖ|*u~IOW4^”€Ë Êɪ~Wݙҙ˜zT†Ÿ
6ùxÅ}õkVº>ÚMíRi^5W
«€Vjå«n¥¬BZ…¶ +qê*äUèËl³`Ó͇OÃWõNÚ¦=ÄØ„Æ·
nÓŸÔ‡Oç7†çÖÁËÅØBlíqӛǽL:7Álra§ëi‹Ò·l:`¯è‡&ÖGwn£g{HÑècRÛ5h{ÐÖÇèå4 _ŠÍºêÛ;`ôaRú¿øOóó㟿><~yzþ&†§Ï_žË¥?5øùùùá·§Çæs¾Ô Nþ¨ö/ch¼´G|š*ïü²÷Ëî_ (^Q(’=kádäí®Ë•EX«‰ÍO_ðŠ·¹uÐí†çq®Ú‚ë
<oY™¬UV.oa”u´˜›Álf°†„ÕôXÕˆÕÍfÉóÃØŸ¯È38³&ÌóÖGI€¯îtÛYúÀÆú.ñ·¦Õ‡S}–·w hå¨q‹ŽÒ8XƒôÆÆ°ŽD¶'ÜÑIžrÔî\Á›ÃÜ§0÷%ÌaIO¶ð,ùhòɆò¹Ø¸4BÒÂu=|™œ:ÁÒ{Ø?í
v•…£“#Cq@Sp”ð +ÛŠä$† ›ƒ6Qºc짪C¹…ƒ_öÎAÏSð<–—#°bVbuY=kÈ•YSÖ¼*=Unœ©d+a)*¸,¤ã#ž(©+RÛ)Ô_ÐpUc-uüßJÓ«4«0¿¯îpyYê–F÷è;÷8ˆa÷ˆpŽ\ŽA~áÙ)zöˆ…ÝŒL¡g3XØÈ +¡êeY9„ª©X¤Z)5l)QÖúÕJQâW$JF.A–Ì%v%“”Ùd¬èDj‰B()׃ÊõAÍäV\‰×ûÌÚÅ„X+·¹8®G`NŠý‰¦@9ÕÈ 7¯0C–E@SƱ}°‰lc‚7J™F!ö¶Yp‡=N¤3øˆl —½OT®7⪔µ}¥
BÆJ•c¨Q›–S±ÃKïŠàË(ù9’}Qî²ÔÙ%ÿ6©ÝË+¸—¥ÞÒù;¢›Ÿ†¯J«öÒÉ/ª= õÖM{@îµÇIêœn
N‚ÿûå²Û¶ÎEá'à;h â,2u):.::ƒ @‚ ƒzÐöýñ¯½IÝl9qàà¯ùŽ"‘”xÙ‹{!.LE¥«\eëJÖÜô»¸¹{OÓô_UWI]Y¹«9c‡OÆúèœÜI”J›“Ö¬Úm×X·÷èÕ*W©z§UôíkLí½Ïƒ¨×æÛ¨‰„å¦ùfïúýÃ×_÷Ïû?ùFz|zÞ·¾TŸ~ì÷÷?ª§r«’Ê}۷ѵ®Ò–êV°ÄJH-°Ó39IÉ)ýhŒÆÀµ+ü„ó‘e1+ôêRସ|–<îÒ9ˆóªÏ;ä.ó¶’ãdqDÌ—gòJ¯U8¿ð€q"'œž‡¶Ãî48Ðwò8ì{û-R€†OÚ +"<È^v²•‰*¡7¬Ø5‹lËJXüHàd‘°ËyÄâ¯Îå´zñâãÓŽì¤K[»³CÒIšM bX Èð¸vÉþ£'Ô„œ˜S†q.ÆÒÚBê“ÀOSÈÒV¦g]è9Ä{Ë *{Í(T2šÂÜw'º®k™@IjE"µè »C +HiÉŒm¡ +nÚä$gÀèMmJ©bH*æ’MФ“J!M+ÒãkÚ&‰rÎ>_,ŸtÔ,ñ«xÊíYŸ
˱dîYnYÈ+kª$§,¢$ Y8]–KÖɾè#)£eM$=$-$„² +ÚÌ/8¿M~ÇôÆïÿð¦ŠÛ›*Ò¦²ySAOò*_Ü +d<åÚáßÒ¡º$â‚qòr…P¼ç(¯‡Óˆ£[ýYt§å¢}t’柸IØÀá¡ÓmY¡8ß-OÁáÂåÚá¢ôïC¼ø¸{-!òŸ¤“4›Ä! +úYð¸vÉþ£'Ô„œ˜C}œ‹±t…¶ú$ðÓ" +žqŒeÐŒb$ÈjAS˜ûîD×u-“@"À,0@$ E¡Iî¹)•š6¶Q´¡õÀÛ [$KÍ€1ЛZNSÇD5§ª9QUIBxhEz|MÛ$Ñ4M¡ñklcݨFB†Œ¿Ã+Ç¢H©¢‰:ª(!Hæ¥
)4!Âøà‚AN§DP¦ãkñêèƒ÷ÞyãµWЧغäœwÖ§t5&´C6ÝØ`½µÖXe%ֶà +Æ°Ór^£·5Ê“?5S¸Uß©]TRo½äÕ6‡ïˆFn×—;¤~ó¯µ9|‡«ƒÙlPovÿBõn§z{?Õ´¡tÞPÈSŽ#ŸýW?¦é”só&Ù¬[6Ìü,·ÇæDÃA»¥ª¬—Ûesjs~ƒqA‚2Õ¸tR{]j)½ó*ª½ìúõÚGöÔG¼ñ›?ºÐvs--³ÍËŒÏó~|q+ºþ²üõ~¬°'ÅÕ&½@sŒ(Öðp€_áVØF°«åˆ*ȉ:Ó1çÌŒiGÿ)Ø‚f"ßÎ~ÔOJ®4ûRr¦£7ØŸŽµ)M6•ŒêhUɬZ6«dWÙ°.,+›V0»Öì[á\[×ѼÎöui`-lÇÃXÚX#«ÈÅ +?LF¶a+ë¼]YÙãnÐëÚÌXŸag쬆ÉÎ +ò³lg쬆;t©jt„¢YZ…L¸gC•WvÃÐ*HèdhÅÂÑòT^¿§Ã8"æËC:ˆüçUü+¸1_N¡rˆ9B fGØL=Ã17ÒOŒ’5©Á4‘\D Íž_ÂÔ•Påpe4£JÜu‰^Š_ŠàNp·e^f +g +h?5…56…6÷ÿØ/ŸIm.Š?Á}‡ÚŒ”lZ6þK4lL”u”U£‘º5šEz1Éû+Çוîojñ%*ŽÔMQ` +|}Îï–åxbçœ9–9Õ•^Öz^í +Ê+kK~^ôó²Ïßa鯋_B«ÂLÌ.`«tÕ {A¨nàØ4ü@²#$t±¿˜B§%±/ŒÕ¼²Õd7Uw:¿øƒ”“ÌðÔÅ#””bª.Ñ'Lë{JüÞí1àcÀÇ€ÿ©>ñð1àcÀ>!/>…oô;vÄE<9w±#.hRò¿Ò‡O×_„?ëÙÖ”ƒ®²N¨íû/·Wuþ)÷Qkž”×öàÒýóõøJù'`Ñ8EH¹¹øàk\)ž¼“Çð$ÀKÓa'¿%×¼+-®÷î²<ýû/ÄÝÂH†_̧ôúüó·ÏÏ__^ÿ*ÂË—¯¯ó¡Ÿ.?üöúúù—çË—zè"Ýtx”,<c¢>Ò”¦qŠS +E4ï‹Å6k¼‡èô«ø¿‰Þ|jx›è'î4œ‰Î¿z‡úUÔ~¸‡Ê€þL¥Žž³e½À5²L#M°¬YªQ»ÉFb,nUšEp½U±Qh44êùF®ˆøŸmdéEªQû“ÛMdQù'¦F©ÑØ(6 +†E½è)ÿaùF®‘mdéFj‰Í{n´£º„ÌVHî,SeYŽå«zÖÀ +¬yY‰O¢8-O_æ°ø‚bé*ò,WåY=k`…,Ÿr“²%V5âúÊKåSUšeX¶Êeˆ'«g
UUž£ÜcÞ8{ê<—bíªKÐJ°Š,˱<«¯XÅ•‹/ÁQ˜—'^RÂÙ%4˜Â‚-<c +3¬°P誉êÖýNþJn'{%ΪñP¤wRWÚ#¨Ü‹F±×L§+WZ6ªÿÕ†ú+ù+Át©Æm‘½’¹’ÞIÍ*¾•î«÷
x0G{Ñ[NzþŸä)™&nas×6 i<Ç"y4¨ÃÚ €„dŠH¨Iå‘XÉ¥ñB;¬rNHH¶ˆˆËkÍ/ Ã+"×¼à"ÎE¸î<’áÒè`Ø‘; k=2×"{5ƒÁ$,䈔֩m‘ÞùÖÁŒ&aaG¤ü€´÷H}‹ô×H¸¦%À: Ë<à‚'pƒ?h¤\@¢„uÁxÃ;,øC#ç:ø +0 #20$cêaPF5°&À€„)™¡98[‡«ay˜@¬ÐÀ¬±‡EXåËœÀª`¥–ê`=,6ÀjGXî@ð`E0cSv0ç&`Ö#L{'H˜¸‚™˜:ˆ?Àè#-HD€BD‚C6ôȈà#!0’Ÿ +qh‹ñØ#&ârDlNà ‰UˆSƒXuÈ×~ÖEÚ2Ú¿Z°ÚòR¡¡|ih0-š´Ì±Å ò,ÇòU=¡Xr¹\2Ë&ré%;ZEÊr‡²©*Í2Y„³\gŽk¨gýM}µëHŽ[Ñ/¸ÿÐÉvÒ(>
'¤HŽ
GÌ`±;ØõÿÇ—”DQRMÕL¶Ð]]÷á=ÏŒ™+ƒUµ¾¡ò +þ—O¸6³Ä½*$Ç}Fsù˜¸+í#^H>¹d“I:©$ñBLv€V¦±Ïš% Å‘×üÀ‹8/ÒÀëÎòBR¼4<{€6'$–ÉÅ#ÁX$D#áƒÎ>$=agdd‘…42‘„] +Œü +¨É +Ç4÷ÒÀÝ4·ÓÈ
5#wI^ÿ¹J +„1‰P¦Ñê,RšGZ‹ÈmÆiÌ×j35’^ÎzžóžãÌg9÷™zýr/e+÷ˆûå;âÄ\*bž… +_áê]^¤ÌÛŒ¹GÌöÎùÙòÓy~€#fùYñ´ü¼?óؼãõýno·>±#ÜJ~
x!å…ûá€~‹Òõ%ÑúacŠëS.L’»‘á”{ÏŒÀ‘ÄÉ/Ùœ7>?‘â'±å ^l<j¡À(‰¼â-ÞÄTÆ„ ìKÝÙw”H½É+ñ< +e§!¬Éͦˆèˆ’áT£âÝ¡µ6Wyá r‡·¥ø¶&§ËÓ0 I5Œï¨G¦¹Ê•«ˆÁª,
ÆR–»Ò@`¯Ü㩽LG†K!²’ˆUI ^P|öJ Õì±þëaÍÙª#l|_æ
/ƒ¡89Ä +‡È‘#ÈŒx’Æ%;,5˳] Í=,Òv™¶u“ªX×kžºuÁI.0ÿ‘Ø„Uè¦h·h©m5 +”š%¡]Ù2F7d¦Eh[
J—7ÝËž'9Y +è!)bG"d„Pf¿òœK¬É›fK“]DŽmfȦ½ÍáfÎÁ–貕±Ij¿2§à)Ç7vRÌZØ[szÂËa¿Å³ecÃ
å«äãò–ƒ×ÄÈfã¦þ Îh‰o—“[`Ÿç +0 +H‰ì—ËŠÜÈE¿ þAC{’ÄûÑâ!5=nzÔƒÂP…ñ kàîÿçî8GRJUÊt¦m¸cmpÉJ…¤xœµwHyÇ!î¹ùçÿ(þ#Ôðî±|BÙC™«Ò—%ÔõC^–œŽ$ÖÓñŠÚUÕÄþ¿²\U¾¢ÄËÉ+Å+ +×$¤¿"wU“ûÐW…’ZiqÉã™ß“ÑŠÑå„áV˜-ƒ™vÊ« ¢J*«¢ªjjT“–˜J¶Úi¯ƒÐQ'uÑU7=êÉH¬mŒ±Æo‚‰&™lŠ©¦™ÑLVbik¬µÎzl´Éf[lµÍŽvøVå´3Î:ç¼.ºä²+®ºæF7¡§Êko¼õÎ{|ôÉg_|õÍ~Â0© ƒ 6¸àC!†r(¡†Æ0a”UÔÑD]ô1ÄS̱Ä[ã„RI'“lrɧbJ)§’jjiL“À«¬³É6»ìsÈ1§œsÉ5·<æ «C]L±Å_B‰%•\J©¥•±LX[ªêjª®úD5Õ\KµÕ±NX™ªéfšm®ùZl©åVZmmºV£ÍhGG³:âêxù˜.é°® ÔEé‹2—$&{Qî¢üE1…Š•.*OYôT.ª^Tëüç•®ÌÅöXjõ»?ø?~àÎ^_—Õx³Ú‘ÄÁÅz³Ê[‰£‹P¾QéµÄÛK³â +{‰×6ò7Êm%öÿ}¥M +¢ò„øˆ¦o“Ÿjð™ +·)ð˜Ü'† +eg¢â˜¹¤ŠÖ´Ô
Õ¹£ÏK¾‡ûDD(´ò+¢cš+@JÐLXK¥àˆ4a.ˆ^™XT©0jšËC½‰%¨y**Aõ’‰•ª¦'ªÞ%h⦥rDÓ@…Ä¥Ô‹©—S% +èÒ}Y„Õ®û"a™•Û}É°äJpHì¢Ê>eìÂÞÛ÷¦lWØ°ú àÿêW‚Á2äI›àt?éõû ß<tùÁÉÜïíþïïnWþéïRÁ©€;@ûïýf… ˜o6î·0CH§œÙ¼íÞ–ü¾Œòç/Â7¬/ðμŠÛîÝÛ”Þˆ™”©ß[”Áõ»ƒváhT¬=%k6¯üŠ¶ôNŒŠ»P6ÚÙ>%Χt8éûVçw~E[¼³4ñ.ÿîÇ—§ß>xúôüò/_(Ï?½,—~~ùóååÃßÏOÃÇùÒ`Þ‹£‹º4”'^¼DûÖSÿo–ðöþnTdS_¼³?O=¼ïü
„ á+i^nûñHñ„üã7KæŽF¼<—¾cÊ6ðú”´2o¹¡Ñþ-L“ñ¸:Éá¨/_nôº/Ñ{Ø@öâÊí߶ÔôáZÓ}±9^l};ªá)ž•z+‚ð„X܃mµ‰m³=Ìö(Ûƒl±b»³s€äãˆø^—èº×mlýBhÝgVñ&´ncë9¸ž£ë^9¾.–#,B¬@ìJ_d9Ê"ÌRœå@«É6-ÅÚl{´íá¶ÇÛp{Äí!·Ç\]À‡´KyWÎæ¤)÷ʾ–òoOÀžRp $)
'JÄ|òèÿ c6ŠÉ¬‰UäªÙ
ËêÂŬ²«(ÝþSüNa§¸Sz£¼•˜O.õŠÚ‘ÄÁÅñ[$úþá{J|ßÇý`¤˜J,1`‰Gñ%¬Ñ…&4AzAJË+O$xb@¿¥‚)íf¦Ú"$Ú0U$qÅÒ€¹’wdQ¶¼¥Ë(6€9#&lÒüœäç¿„xŽðç +.efË™.g¾æ
eÄ4{Ô˜•2Ç´9fŽ‡èù„v8ÚëN·aêð7ßùʽ¥ÝwÒõÀ3K,‘„v8JE<å¤Ê"œDíl˜Èsü)zð†&Šy?Ó)ÑÑùÐéÀI£c‘À8X¶/㌠+FûLÁ©¶*ÉZ¡^_Ѓ ß½ÖÏ¥ø p¥«†¤IôH~<¿Š^Ê€OY_æ”û/ûe³ë8nDá'à;xÓ@²¹ )ñ/h JruUƒº1˜Ez1Éû#§ªHŠ²e_ûºgÕ£ðõ•EŠ”ªNÒãJ» ’e8Í‹pÇZ¾ò Œ%,,¾_ +'W&zŸº+ÍÌVèæ}äj™WHp¹Ò
Üve—pï\÷Rv¹£ìr»ì‚ŠÐá®wξ¸ô¦Ü²9ªm]ªô©¥SåAg9ÖBõLs!¦BâAÅìÎÜÖžß÷º}z[Xáގݶ\·ÙpeÙ,ÊbÈ¥’Õ•¦:ÝÈÐA•-Óæ9‘ùqˆ–܇'„¡%IžÈY,àüðC$@‡-59a²4˜'„™_àŸ3Œ{B݆€é!%M€Æø»™ñÀ&<¸ˆ¥{<ÈÔâÁjÜcáÒÞâîQn†w;6ƒ¼ÙæÍJ§Ž«S·¬±½³ò%ôСK¢>ÉŠdz:&ê™<÷MÁc[èžwPÔCQ5—»•°å Eت·Ã.n½Ä-ŽÈ˜8 +'~ù‚-ž÷ѼåÇ…È„‚dŽ+Ћ•~û„a´PîSyh‡x%è¢îuéÇÒAÆÖCÒ¾¥‹´“¼H.õp'Ùõ‘û*Qrœ‡¢a)cb#¢1‰¼ƒw)Ü« ËŠ‹Ú„"Eã¬÷£eAƒ5£»S(ž$w±ˆ<ZËiy´:ë°<²®&EîTŒ•{¼™‘*N@‘NR|ð¶‡ã’òØå/U–CŸì÷•¥&®aô¢)58`‘J~rÓwc'3iä„?ÝtÒ˜N32«zU¼ó¤1É€é¦
ïLSÖ²hY ¯€îoG´£óü¦ —îÐߌèçÇ–Xs.&nŠœ1þÞ¸ëÀ~~¬Üv2ÈZ“ÓÇ
ÀÍø~~lÙ§Žœ†íÞq}˜?3êµhׇá®)Þ]wÜÒÂ{õ¤g½cð&Qª¢™ÌlV›îáÁÉ/¨ñ†·‡ë&Ͻ”f…¼v“BKA.ûŒFÃÂÎÃ)»è&—IìYêEèIæEäEâEૼgñN$îªX§½´¿+ì%¿ì–aSœðó4©)O3jýʆDg“-:4Ù¡æR±Œ9e\”sžÙ¬0-x6³™Ñ £ÁgGµ™œÕÕŒ[ÎÓŒ«g:È\¬ìrjêW;W
\µllÒ +YØ^¦š¢z3P‹v±s¦™:Û¬ÝP
ž’â_œ^ÅïÄRjñš|“ù6ª|Yžb½º÷ã]nêÖ=~Ä º–°ñK"æÐÁ¤&bÆÖÁ2“ŒÍEÆ,ËX„lf!3$dŠ•,BÈ22}í¤ÌCÊÄlnbf›kžµw¬Å¯ªbXçǺA–µkaë¤MuêVõS88‘¸•%NDn“¹^èXêTÎÚœ[¢xUóªêuºR‘¾MüŠü)–šª½²»–¶od÷
ljÊÈê¨J«V›·zl-ޖĺa¶ƒTuBºávøÂqCuÿ¤LwÉ{Ôå‰Æü1ÔExõý¦úq',f€Õ„lÔbæu€ A
j”Â3'ÒÊå™.6šÆ^m„Ô986ˆ\[„è%ÝCÎSúræQ +P5׬„ÆÒùƒ±¡ŠöÎCI#I4’Ì1³Z.ªäÍPBŽ8Æ3‰LbX¬à‰Y‘¤E$›¿ÐÞÛhCa;\ÁŠÿ„Fl¤ÆÔÈsDz¡ð±W‡ó§/0WØU¾‡Œ7¹y¨ò×?Dxuu*¾†:<>ŽzeðŸþA6 s,^"_S‘.*Çç"[Ë–H–VU«¢T¤RŠeªJ””È“ˆ“Ó¦I¢G½ù¦@¬>J„§¨NÑ›¦3Ua6e©r²‰È&,Šu¢ ÃN¶<ïsxŸŠûd€‰SøÈ…¹PRó$µÕÒ
S°¡¢üØÑ«A„Ž¸#]0)?íÈWÌ,7€£R—«p~ Q'Í+¨`¿/¯O8ìQ—'^åGœð'eNŸ~ο+£ô/ÿÆ5ú-
F'üÆ”"ǵ;ÑWãOþäôÉhòOõéçg†äÿÒ€?™áäÌ›Fï×MtùK½þÍ;üàÍäÕœ†ñÍ7îÆ_±0+”öd±P›ÂÁøË+Úødz?h;+ó¢>Mÿp?¯ß¾üý÷_¾üöõÛÿäDþúëoßê©¿þò¯oß~ùÏ×/§_Ë),û¯êð,&Nù½T ‹&é~¯u‹®[S7Û¸r4a|upŠj1Ê *Dš‹)*VT·¨~Q%£ŠF•jœTªTtˆÏ×MµQ+*“Åž¯1îs!¦FjÄŽ’oª|ñÜðÇŒªÿ§œ¢'Á{μÛÈût¼?Ú—æÍÈ&2/XèËÌì™ +M6]\GfBmù‘À5—ž·<1j‰èàöŒ.j¼ÀÊ,…™éQì|2P%uÄ(XêàT'nŸkÌ<¹wSF]Úå!¿vdþÒ‘]²½«fL¬X5bbòª¬°f½Øxñ=Ù\Šµcɶ²xJWüd*^’œ¤¸HËRÜc,«¤®Š—'KË¢¢,‡Ý`{È¥LÀéÆ_¬v£ ø¢cGs"‹ÄCDrß’…»öTR¬ó6Ò,žK +]l‡7ì.Ò þªwywIOîàÅBŽê@ 20ve`Xíæ +]‘îeë[ö]KíY¶~…CJ™¶cØ1 +y8|/x1,DŽˆÄG³ä,,2+IÀúö1`7¡tÆîì2c· »Ø½#—½ÑI!ªŸ®GixêîÚnë3(ÏeÛõg%RíaÄÈ"“ +“saaÖ^*+*É3éI5LÔ`&‚&ÁèXšÂ€B‚¥>Ϋvö8,†ËÀ¸¥5uR}.WaÒl}ÐõÁ×Q_Ìt©91D²w0•MÞ@ hú¸-S|Ã’}Ÿµ*ªcôlge#ô›õaà-´>µ¿ËÃê]’/Ë!’Xé›ï˜·BØÝåáA¸Ë;’`áåyÍ—ãLùâ„îÉQ¯é=<KŠgEñ>«ù;™p¹‡ºÿóó¼6ázâÎÐÔÒ\½¦zMöšî’ð5åKÒ·´—ÄGê+öÕiT¯Án£ùê8ªç×Q};£â‹0£*î£úê@rsCÕY6É£sÈjï‚‹ ¹Ée0C"WpöZyì–ìÙˆ+éHÿ&Ÿý¿‚34ˆvnaâÈ¹à •Âr˜Á¢ÂD˜ÏõXw,Ì;òŽ©Gá#íˆ;Â~‡ÛÁm‘Ô#aØaw˜zO¿5…ý±\°¼ûkmÿ˜‚ôœû=0¿ÍúJЩsq¡E›Ä"„™™„˜ØÒ‚KBK+ªU…tÜ áó.zTSœbŽ3*ü +ë ‘Å˜‚7¤˜RšRN3ªÿ +K¡Ú+Û×LH¸ö +u×»Œ–‘ug<¶íxÛ…ŠX‘*rGé˜ÿ™7øàs)pÍàõÓ•‰ŸˆÏ&Hš>‘*–œ®ÈA‚Qüž+¦Š¢q„åJ+ÄkwAm¾’Óà焧–yšgÄdf ¬9ö®Æ;Öø–Æ Ëd0BÅVu],ÊX´qSÇ¢sWɦ› 6_Yƒ{<Ãâ‘àÈN‘kN&N‹ +_á:ìæ<Ôæëj(áÀíØã¹z=Õt•Dt–3>‡¯gqµ¤4d”äW9#2s”°ÔÌ{í9ÅŽÌVÂW–“ÑsjÆÊ[™Ó¶Fv»ÈxOoî|”[Œ%¶F÷Àq9¢Æš]1rˆ`€é®<“,+5Ã8»8³hÔò["u`pS°:ZâÀ¢³ÄV± ¡ä…®0{®IôAë„@ÑŸQb'f"ÞdŒÏ–SkrߺÊ+ÓÚ…N¾–Ÿù +%¢?A8Áõ+]Co:ꤕ1ݹA-oÀîaPgŒûú¸å¿lx~Ã6wX”bWLà‰Â¢,#xa#À–I ¡øg*z¼å2O\Ü;W0êVqÁR‘R]R-RíQɨ ƒ‚Œ 2$Ôa5 Ä:uòt 4lǃՀ@#O“%y.ù8%Ö~e¢kfm°çéì8ƒ7YLXÖ!¾öÔȪ%sg-,hfÅ
vÇJçÐÛ¬ÞÈéEL/2z-Ÿ§E1«IܦÉc×~Mÿu
È»ÁŸˆA†Z½õ´B¾·:œO¡ðß9•~óu¸j|úv¨»nx(hCó˜P»ÝÿfÃsœ±‡²0Ð +>¬-éÌúí}}Jr}ºh1ãNè‡O¦ß†ç‡ËW¿yÿâÕÅëË+1̯ß\\6ÓçÓ?_^¾xûúÕ𦚆žª³Vlì†ù^Ò +,KŠF@xŠÉ/0w‚ rù +Ç°¦Cýç‡ö'Øm0ŸÅ¤¶¬u”›Áï+RG^¡œ`:Á¼‹µ‘?·ÌF÷ƒÂxñ¡±£f†pŒö¾BÅ6@g‚£n‰ËVÞ+êšéã>lŠ†ß4ëZ÷„¦vAkh󎛾Ég<°$ØAP“+èütE®¨è HÅòBsp +!ÒŽk§†· +²yüv»ÙV~/ëÄñ¾÷Ïâ9Þš‘‚àWf¬=^òà‘7VNâýèµFÀÓhQ†ƒ‰nÄfÈpI§ÈGéFG‘Ãô¥y, ÒàN…P=öi69HÑCcõCÂûÐãoÛ)³tJÈþ°¸j!‡qJ§u–SzøN§L©ð)?eŒv£+ÙŸ&M.˜HàLKx9¢—瓬‰qÔ±¸Ó´)fŒhKÞàäÆ…ôøÏq5щÞÖ¼‹Ê>‰¬A)XÎéÚ‚·ÀôÚmNG_t¢‡¹‚YN˜_ÐoØh8à?£‰8Ö{3B%¥Åò’HƒY߇v:´CqcÉÁó•Ú;¬+e$A38ƒ.4ôï Ål¤„š-G¬CTx#3˜b`ø;€î—°k3²GÞ•!yø¬8nbîöi¤^ÚïŠà!íQ•Q +¿”ì ä»CFÊ2 +žó\…Ó5¢[D¸áÊTi0V!CAÕeH¾1Óˆ`Å +õZ%d,Rùí=Ÿê³ÀÅœ©w›Å€¨‘Ú•e݈hQ¢_{ᶿñÄ;}'ƒ/œ&5E¸óâ·X–¦÷öÄH'B–€•s‰ô3ô~íÕÈôf`{yË](r‡—Õvi_ë“dQ3&ÄÄ"Ãú.§%èϪYÖ<êw5û>›sѲ¿?ZµÕ zd
Þ't25xÝG“Hzù8r…à¦Ò ¬,P°PΖĵBV´Ã(VʲX£‹X(Û ÒXµX8h+Z»õ}º/@,ÂæÇÅP•uÕ˜ñÂíÚ6ÊH“dÝò¼fhEÅn-wUÏÉÀ,уAÚóñ$°DŒMCÒ¹\†k¡lïë%V)F랎ŽÖ-ý…f‘Þá žbž†¸amò‡Xi-DÈL8]‡?÷¬eH³ý—÷ò[±ó¶¢øœw87…äÂçÿÒecrÑ⦡êRJ¶›¶àiI¿}KÒÖÑ9NÛ!Ì2ZGŸ´µµµÖÚ»YßMbk"²¬ç®ôfOM觽Òù‰í2oŸ™ÊÛÚO"òV'Wo…r%ñV)KáT>…ÀK.ƒèmÓwWJ±\佈xó&Û² ݪìê¹!·ƒ<Õc“vŸ¨|6ß•ù½}šÊ¾Æ›²fÊ®uswa§[~aÄÒí‡ ¶)]©zA>!ÿ…IºÕ#˜¦W•Žt“tņyý +e‚Îxˆî¦ç`- ¨&ç—9–š#ÐD½’s*;7ÎjjNÎæe‰¹w-_Ø”òÛ«} ’süXk¸ò…uõ<EèÕïn*^òHøšƒíN5W°Ñ&ª›Ê»V˜Ò¼vÙô{Ebs,N[ãæ,O!Þ¦”¹Ö]»6¥;_*õ¢ÝÔÖÓ]Kw‘9-á¢Ü +áŽÂGV åfë¤ÎñL^§ÆöÓ£ÝØO'[H>šG2mÜ·PÓxä…)§n¤UéAÞÜ`ÃN ²Ä5A
¨©ŸFVãI‹þooï¡
êSúu¡
`TÄ/Qï¯õ}Jï+hyq¶6mè8öš\ÓZÃÆs›Y&K¼7þ¿Ö€<5¶ÏžcÆbsf¨¶Äõaž‚ö=ÌÖpº ÚÈáK'Æi“£ÐE(n +€yî=Ü.ÂDB¦Œ=E¿D@ã´k +D†…ôÅáRnö±Õa†X=ñf¯ÂâáÆžº +Œ5‡ ¬À'ŠpÉc+Ä.ÉŽ‡S$_Am¡É¡„š‚÷p F-ôDF˜9È2ð‡Ï(ªƒûÜè×,OŠê°½TfÌôú“èö£ûê¨{_ã4<ôû}¯½›O-tÈÝøÁ€êû«k…+
ìEd¯åzÔ°²{ЈDö¤ÄædYyª’ÊJ¯,¦np–f˜¬…Øk'g +ÙeEë(ft„Ú\Ø ?—ñYR-7i~U’ã8†cPÂ|ûòüJ6Î[ÄéÄÇ![A©. +ïýšA÷}”éw®5ÌÔÀ–0š·]v-°@¶9=PS;Ì.v`SKˆ ÁmÒìb¾9}yúÕ¯¾ýòþõ×ß½{÷æ‡{“Æß~õÏû¯¹–wÜ̳gþâÍ÷¿ß8}õ/ýRÇ/_üðã¿ÿfë|öÍýýwoß¼æa}~âòøïåO§ùwt"Ô¿—ü–?þôÓ9žwþó_ŽókÍýÃéY‰ƒ[xg§ˆò5û¿¸Q¯C‡× +?‡ÏïÙð÷§“ãnsÈ\ sÔξ©¾“È΋¥pVý]®y®0œ`y9`˯ô}VŸýt¸O¤Ìí?0Ñ!¹ŠÐm¢óñvâ{Mä~Û7GP´¯¢Ü³3Oôüt=×Ëñ÷¶EÉZKá&€™ÊW7‘"`"áëS͹nŽ™»¥jÎ}ºÎêŠaÏÿŠöö¢žŸþzúæÔΟ}~~ùGþêÕI9_Õæÿ+ÙŽžé„®Š÷Á¥[^¢ª=¢r*¤yç#—Ö‘Wˆ#¾"·/ì«‘ñ•Ué÷'7öÐ")ÕÌ'
Ïîj»‘'è·h%H6$ª! +^ZÀ±A€0wóE3›»s9‹NCàÝ9lQb–æú4‰¹ÐZ†n~/Š@bì]xéì§ËP÷+Ë…‡sËLÝj«|y.@¹‘Ÿq× qsµ4Aê'u°JGâت„2# ˆƒè⤡Ô\ʽÈT‡”U²UêÈ¥æJÀGSú°Þ㸚{”C9¨X€ÔÃÒÌ,Fî[E¥s,€0Ô¾ +¾hr9/hóÔ-R¹—U*ã^Kj@-xÖ
:ßl•‡ný¤4ƒ›z:`êõ}ì!.š6ÑMJÌ +C$ùõ^¸‰Þ›fž¹ú´N?Çf9ý^JhœÙ«ZÃüOp¯¤«8;{¥Èúôø[=@âÙ';#o»gŠà-h²€ýÒø×€6“œÏ-Ê>ä'1øž }ò²a™ÐÀíÑ6ÆObp
l7¦¶Î‚f0ø^ùþ¶øÐy'<OW¬¸Î'@©}[ç{‹Å’óØ»&wh6ü™›ÓØc×ëÅž‘Úc +M9̒뿶Áoß6Çß¿è©£}þú'û£Ög}ÕcÉûDVÌ}Š¬—RºBJòŸ”¯(¨’ºÎŸôÿɨee|5¤õ½ã"ÏE;í(ûϗߣﯿƒÿöc˜ÿ•bÎFl~ÝøûÑÏJºå5_ØÇë˜÷ ª¯÷ÿ~[øþ¹·p5ù£›‡¿ÿQý2_ØÇë±|ãåwèûûïàoœüãKYþ_KYOë·À§ÚÕÿ¢lõ‡Š?Ôëø¡,õ{äSêï)OýZ™tç©+ºóÔŸ~|ªEýß—¡þî“ra–¢¤«9kwE4Å¢òÀŸàXZÌg%äù ü2òÏKußSåbêê;+DbOÌ&Ìŧ¤ð{ÝŒ“k•® XÒÏ0Ùfu?#5Ôtóo/…œ›\7¯Óª]+0##Í
h´³«4ôC ý8+G¯4Ìâå,ïØ«rCÄŽÔr« +†·þ9:È[«Âq& +¶Ž¡Ÿ2æLö¬³c´²z„^XœÊƒPø×@I¦Hp®5 +õÉéóäÆ‚Ù7xî/b¶Ó@#8–_Ðæ5ð”xÛ^Ê°z÷GŽ%¶F—W´Á”kkšÏ/©‰‹Ò + ¶Ó1y’¡\óôQ‚MFí +t½¯õõ@§ä#á8ÑOq6/0;îVR˜w'Šâ.*ÀøÑMŽ¬M ÞŽs§D{í»-X¾”—UÀ=W–‡#Ó +”ÍŠY‹„°5&¡Wa#˜òæî÷äÔnãaQØ›S1Z»À®Ì¢TÍžÄƢ׀ث9×%ö³'³–BvLJÎ4ãTÜ„ßSÐJì<œ('E bûà Ó~¿IsÕ¨= ‚˪?¢-c=\¥Û·¸‚e> +ÆÊé‘£VñšÐ÷ù®˜( ömV|r̖Ή²kN|´ÍQ£ γì kË@£©}v +5•@_M^5—°”<z:–8:–ãêÝy8Û/OÎZ* +0¨äàŒ Ÿ‡CX1 îgnWZK ·P7‚37{~¬,¬ôIüoØÐÞ÷i*¶fu^½˜àÊŠ«Ï" +±Ú¿¤Z4-À½|oîWw^ï25a 8áf!‘àUuI<sU€PÚßWZY˜^Ø»À6nï 5¾÷áö›åß ++×™Få¶ +°ø,¤žu•œ®§ö[£O±7-!sWœ¼cNgæ[T.|åèÝ31îá\8ÔMXÝÆ j˜9.\¡° ©{<nM»nÅ)âdË–„͵˜§¼¯ÔÁöd¬ +`u¹7s_ ô7ðvbÖÈÕx#ý»À^Ÿ‹=grE¿5ÿ¨<qk)žK?2mh®…ã4&ÝÅ>ÎL¤|÷á½´Ížk×äh¡³ò “/»è`€¾¢[§ñ[ãP$B¬íw‘§À JæT€O>/ŸM4CÕÆw;Xæ£7^ŽWÊܺ²ûáê%JÓ˜Ò
‘‘êœy</€Uœ«ÆÖêšT
©çŒ/);.{¸&eǧÄׄœ/ƒ\VfvÉ؆ÞÛöÒû˪ŒÄÙnù®J§AËfê9ÌÝ’d·•àÜBë
È +•U0&×ÎÅ!æ +žiVÑ2µ_:ÉÌ >ŠÉÔð>n,“QVÌB”Ý"V(êƲ¸2;¾äú¿‘M8j€býiú*Ío~$Šº+¢ò¶Få›p‚ûçÇù¨–ü¶qüAÿÙ;Ò œ+4¦Ÿh·RïN§ŒŽw§qÈû¤íû1Í&§º +P®RohjÂüRÉ€Õ;÷Çl‡Ú{õÅ7Œ¶¸O`Ç*@;‹ÏeÁÚXÏ'XlÕ—%SýeÜ·<l×sÍì¡”ÙŽÙÉ……ü\&9 +næ©®$vV`Lé;4\½ò!ï„X‡ÏÕö÷$èå/x¹€gc¾¬Ñlª¨dbž‚jm§Žó|íÁ)iIY +«:j¿resáX)É|åj#@;Ô>ê+â^8 +fÒ]‹OŒhYü{f€ò.@§¢àÏÁN¾§ýIƒ}P0ŸÂДƒýÝÃS[«$t±¡ÃxæüšLàW‡½SÈ;Ñž«[V€¶V^
nIDvyµÅ¢5Ò|²Û׌Û÷žïÂÎ\þZ‚"¼\Pî¿ÔYaɳi¸RuaW9ï›¯Ï +ì½9/¶ ®ç9Vù¶"ÀvÄ®ÍZl«ñs~ŠaBòJZî˜Åùæ°X¿Uî F¶«Çk¶Í€“N^/Qip†x;sPúÅ:Úì€Çå½Æ¤o˜°s}ž\àÝý.¸ÐŸ›…²•=XöŒÇª=3A,|SI,›@ksÕÔM€Ë»ÞØtê7³‘.Ìx†Îµ ¥p‚·€D—îÁ+ä¶siÚè\p‡ì›¢\Eï-f9e€8ùPL´]Ñú`! +H‰¤—]‹¤·…Aÿ‡÷&`_¸‘J*©t¹r‘ì„'Á3»ùrfŽ—%ÿ>§¤Sêî™Yra–…é½G¥R}i–G?—VËñ•å’ϵçîÐÎI²J׺Vvÿëî´pÑF\…@®Ul¹lX¬seéJtÖž×ÊÚ+«v~o¦0¥a\ØÚþ<ÕK³ÕãÞ±Œ³fk<—ÙT;œ$Ì™°¶Îý³”%+ +«„›¥Rd.•s6—¶s×nó8Þ2a‚üȳ¦Ä£Ž¹¶â\ʵП~ÉÇB+:(ÎC“¦ð¡Hm„¹Âä.ICã`KEaËbUâ{IëM%ïïsƒvõy1iœÛø¾çP +j:ÉpÄ&<ÖZw|.qØ4¯ Á¥tB1ÜŸ5ÓV9´Á‹Åí°f¥mA;#ÌhØH‰±á¸&#"KŠ{µT*'
{;Â0cÁ‚«q»‚èÄe,禄UÆ\Òä1ƒ(†ó„®
wç +tÇ2v©s-¶¨=ayAÅg[ ×LrE)P4·¹V ÕéœéP‡ž6Ë°Jt.y9Òίµ‰Û–È• +þtú«ØP<¸Ž|$Φ±>’`ˆÜ:XSê˜Êseé„=W:Ò1¢damI¹VLdÁÈè—Ü-Óz…ƒò<òS°ñc`-ma³=€Ö×Åc-Ms¨7˜$’Ê\mᢳ.tEe’ºà¼XÂæ5p®´>.¦\›<?QDÂ;^=Aàj/–!à÷¦ÏŒ(ç.‰æŠŠ8¤Ø‚%E%}©{Ï
ó•+T¸a†¶P»Ó`êÒ,/„£ £s8®Êµ½X¬ÅÕRÕ'TŸp·-ëU©,H¤mY“œ‡°ê +(!„u}V=¡Â2Mž]smi±¶[§€Ö|¼º?
kˆqq6¿ÇÀ9ë+úšnæ‰ÕãdAüáÛe–¯ÔDk[i+QÐy™£¬Žðrû°«±YÍÍh˜t!K+ú¦
Ëʉæå=ñ¸3‡ï(Ð[™²…ϵƶåoW-™ªÍ¤mk«veœ«¬^7V{$V„/±÷›UfvͶñ3ª‹ÈÎõËÔ#q”vÈä:Ï(µFf¬ÉüLæ‰~²>E1ëWsÑƬÚñª¼#A’Tc1Ƚ3v8 +_ã Œ:¸* ¡y^ðˆŸûÛÓ¯ÞüƾÿõÓû¯úøŸ¿ÿᇟþðÓÓ‚_øÛ?žnðß>=ýðøáý1é|è—§t¼ÁÿwŸNOùxóoü4ÿ½û/~üüèÓQßù.ï}ù7óžgÙã=š¬÷ñ#¯rN“×?Ö²'ìøÑ·÷=Z{æãÇÈX¼‹<Êçœ1/{l’ÑõC)(³az!ŒPšñ<™²ÁŠZ”ÑÜ®èý3Z–öýŸÁ+o‰ßÙôíûS;¾øòx÷çéÿŒ±ž?ü/ŠÐªy7…9’^é¹öÂ…¡Ò‹ÖA‹?%»vÉs??w„,ùû?ƒ/†Þ’Ï;^ð4ëzëT½õÀ"·¸°¤kX†Ø¨F·4k·pðòüN_jÇ©^c-•k|}’ G c"¹>òý+äϽ~iaøe•A1Ïö5KðÞ6™ƒ¿F/…âÙG¿Ññ’ÁrñÍÉû-rz6Ίá)‹Õè@èðA«{{ÂØ çº*H½Ûs{Hÿuú#DÛ”TÌÒýð-rB'píÔq£o·”_¢?ži^b:zÇo¸Ýߎ.Ÿ§Ñ;`ºx{òÙåÆľÆÉç6OÝY-þ¯ö¸´©Û°¦Ï‹Ù9á!Ë1+kåžy,ØÐU¬œŠæSÒ¼g9æ·ðlžMʼ¶5! ÒIÖc"k>QµFŒ¡z ˆ÷]†ÍŸlºöÁÃÆgˆSï„ÈÙJè
?У5°-Š«Ò‚ùZ0Ûˆ'¼)Ì“A× +¯Uº +-cp-Z6‹·b`À)„ÕÂzåÄ5Þ‰$n…gªVQ®ó¾_í<Vó®Á«h8 —õäõÉÍbLø!€ÂGÄ~31ÐZ`Üšpà©wØ0‹P``*—À•ÎL¢qßÍ{ú"0<µí€LúÚJUäs%´’ztOŽNÙ¯ iYŒ²}ù°±Á¶Æ@‡›†€Ñ
v·X«îfFÆVmþ[pûÀFÜ‚”OÉóUAÖÅÓ¤ÌöëÐ=û°ÇƒÂ8.žÀ0c"\½¤8Ú +‘Pˆ e‡ò¬|w¨u0™ªð™[QnkDb!€f#BYóÀÁuNõëªÆP)2?¡šûˆ!W.G@ƒÐ° o™«-+-…ïò-¨½pm+s
Fbäøl×Ò#<Q—å5œˆ?tDg›ÕwÁ>”Ì),èjåÙ `!0ýÅdØ| 3ÔX‘FåZÌßÊcu +ÀžZ\c’¼ºJÔtŸ–T‹ÍêHq ¸-`#*vXžy ¦sC$JtÖQ")%n©y¯ÍQiu´pÄp0‹ß.†Yø>•žM5 za3ŽÿÀÍ!ŽËz +¤Þz¬U‰+Ÿ/YÂÍb´«k-cíèûnÍg¦€™Å°Ž¶}`"ea6 + Û¾˜Á•Òô²ªF]é¼põŽÐ$DNtÂœ.q8ý¹p*kc(Ô%2ári©oÚ•kKn‘ ˜H¦[z?-ðd^ñ‚6Ÿw&F[3¼™dÞ½ŠyqÄç5ÑÕg¶K*7šUEb¦Õ±?~F5ÒUÆjp»rî»vL½¼NW¾r„_grÜ¢Îb(V9ì ^GEoÒà +´ºð2 +zqZÊÌó^6…ùée†LÀæL +q°KPÑ+Ád§\‚‹ùb:Tx¤¹ì÷Æl:äž 4_C~2L +ô¹},5eÇ"œªsîtiu¾‚ñã'Ã?4Õn,m &0NîÀØònvzÇJñ ×t‹–K¤l!¯;/¡ÃÜ6únnõ=&n²k¬ßäsN̸ò'fF}®#û&9Óƒ´fn61ȳºó”n-D‰t6—I¢Î<6kQËÙçpr¶>³¾s +~úæoÿxwþå»w_¿}óú9Ð'à'—_<Âó%þýêÃã‡G|¾ü7þŽÏ0þùêGüÇoñÇ?}xæçïžúsx¾–ð/äüÌ¢¶q*Ñ_o/ÈTâ¯nEäW¯Ž<¯ïäLr/¸6 +‹ã4Æ8ˆÖá€l8dì€Ï$»ùƒuÕèf•m
+pËu߀¿}üñ¡£Ù›¨Ïyƒ‰ÄŽ’ði
PÌ㣅Jíà8HŠ…oKÒ„cDY»óÕZ+çÜ«S7ØŽ!†0Ñ( +Ã^uÈ˂˼WhÎÏIªô¸¹ø5üx½®Ãrþ_JŸ}†×ýýÿQÕ!öƒí–um3¨µx{ÀÉ… +’ŒÕ‚8•šœñˆcZZ™kû +ÂᆛZ±##ô?`â©Ô.pÏýŒÝÀœwÐøu/±YYúz,›ºž ‡vÆRspÔø +z»ž`+Ës,˜êìd¿„BŒ^YþÞ¯°Å‚¡èLT˜üo{Þ@OÀSín±œÉÀÉ|x&(¯NXtú:)u¥œy“+î-v°¹)áyÝÊz‚B9bØd·ÝA˜ã÷"9³‡ÓçP©¹»€ïÛÁé…×#v ôa•Ì•6ÐPItÄRì&» ^Æ@Ðëz‚hkp‹Åc7>-†—Çü«‰&—]—Ø¥¯Soí + Eâ#|L5§»ƒ©D‡ ¶M]NKÝ`©â˜¬¹F3J•†òé¬öËVQ÷ÒyÙ:(ª<Œ*ÀÚ§yêÃ¥æ>+·ÑʗȺ}‰1un³õ
t—„F¼Ç¢˜q¼wÑ‘ø +¼‹>ÈÛGU"ñPT›¡M ;è“@5Å#6)Iþ˜d¾<Á‚9©²Á Böz–¹«®YÄâϺÖÑÉ!x,Ç`]?”ðLX…3Á‚«q
>@¿€«¥ùñ9E¾ÄÉ1¡³À½6æ ÷9ó9Y[EÒ£lL
_"ˆ5Õ‰€[µm€ÕèLˆål à8ÖF´=˜)úA:¸ç+ؤ™x›c„åWZò‘µÆÄš$ölmuB§.&¯lÑâ†>ÆÜÛ +áY¥¼ïW0sõÁöo¯‹.jtÐ+Í-ÜŠÒDÀæ®`é½ µÜ&ß,Ø¥ƒ|,kù„{•C‹³'û9ù½ûý#ćŸ x¥2¼Ëb<ŠT +RT¥„ÿTV^À@a]Áaˆ—’šÓkþ`¥Üo50ЯÐúØ{lн¢¿Šs Pëqðså´Á—
! ÷`Çð
3éàì–Jùˆ
-Û±zb:ÀÚ§‘Ùa.¥_cå,}jОŠK–9iÉîŽCnŠ¾ +Á_Á–‘pJUÒ¾€pñ¾¸„'—ë+˜uwŒè´
ôtÌû-LÒGÛ‹¢/: ò45(^ó¶øäyŽ7)™ÊœVž´—ôðòyêø©¢å„Üœ7ñ0þ25O2¼hO$`dç’`,Oè£uÀb4zeƒi +EïMäê h½Ü7û©‚¥D.í)°¶S—æb_ *ÎUgë@]f‰H0.§uëÄ)V¾
½ZÖF¶kkr¸¼ëû†UžÍýg ØôÉé0ľbÛ +¸›—¹b}D©ë´at±c».îo»‘¤nÒRŽ 5óW-ö/¬ŸØûÅd¨Nöý½ôJ+yÒÇ>ÉQ¯E׸AÄúI`N?€6zl6 *y_T†2æ'AS
ŸX¹Œ8Vùß¡vËø½s¡²J¯!yéñ«ÍR¯ÈÚï‡L O,Òš÷™*$qHÍîÊ¡u
}>Äw¬ˆl’ªÏ€ÜÃ
÷[ш°nÔBG¨¤¨>R–W´UZËpOÚæ'6 ŒCh_¸ìÞ›@r£P2àz•ÍàüþqcÙöwÒ¨ô¥/<ÎëÂ[Gtu”Õ¡Š2?ŸI#Á¨v4)V^ò0Ý• Jا|¡˜eh ŸB(‰<ÃCJ}ƽê€êRQídˆVySõÀ…±Xr©‘Úªòvر%¸ëÉeåËDYŽôî0Ì +ßØUÆd‘Ê+~Ú'Æ‘Ø…¯¬
]~q¨îÕ“
ÄO›*«; +Z™nH=¿ø9má•b¹âxr´”yüüàeŠ~]6à‚îGFia%zbuÊØ1W3/—º‹³3FwQ1w©[dÇ\ÃS`á(Š«.LMd‡°ž(¿ûiÊtÔöòMÞ†6°Îöjh{w8|Yjhe ܡݱUlÉ
eá"ž†/CÉÂeÕ0c
ÆmµdÝawvÎÀá>Ķ”þ'«>bòJëŸ[ŽÚ!xd•†XúåÕ#ÃI +2ŽÎ%qúv«_ýTi”à.d@üÄJ‹‹¬`‚á‚«ñE‚À2.;F%VŒA±_ø9ƒ«È›³}b‡ùMÍZáar½œ§pp'w–Jïn÷S}Uxì32ç]·¹<ÒƒmÕŸM-ˆ8T1ïKp¬§ q† †Ñ:D*êÔŒJö¢Í±
y¨øFð~ÖÐt¸öàA»Ÿ!`¼æêÍSœß¨pORç·^¨ÂRãUõx6Ýc{åУm¾pˆ˜l'ÁÁÒ
Àc›Œ*ƒ4Íøè +B‚1v|bU¯ÚÃzäpÔ™aœ#}cEþwƒ2(øPOX¶ §q/K6ƒæ5ÒTshcQ+¥Ð+P¬[¨÷˜«®Î Fp=*¥ÖCH€.c|qˆöÈegìuÐE%„M+âE;÷©fè‘@¾EÉû9(^"·%%OÜéýÚIæ;Ø.eO”f‹NÒìi¨àëñºëì›\ÇN€X×DÑsˆo
²ùMr"{ÎÄä/,eWï®%Î{^SÙáî$´:IŽ=ÝA
¢¿ã×sy;‰ºì‹…»ma?C³d äÖÇ+¿Aõ”Úpí\º~bYÞ¬C¯Ë¯d܉۽ÝY´pêŽ#m– +óiSîö˜òÙ%°œ-ÐàÀ\ŸÕ*œï¾²HÚw‚õ.^#P~’
êzo + ÓD)«§š#|ê@ \Ç{0ªQʧ#˜GHg S uòÓ0·°°iÇ(#Œ¨~¥õO™C¼·Û +¼§^±³p̺ÐgËÐñxðÆ +d +Xݨd˜œNÆkgö±1È'ë|þýãÅD>«K>±dø®6Ū9XOLàD7·zO”a$èm|c½KÜf-õ…`ãäFôzdX+œ?¸`ÏjÑd–ªŒ÷ +°|c—³ƒ™3–Åef xþ!vLÓ2dºó…}l-uáÒ#–¥ú² +ÚTG,^øWv*w‚ÚZÀ=Côòh…Ãô2‘ÚˆM¸) ˆ&|bGêú ®Š ~~pá±lÎRÖJÓºÁÆØ .·ÀfxöaúF!c†{TÆ'Ö½ÚPÝD«ºYÔX³°Ûöiã'k°"zu—Ê¥·µ#˜Ðö‰
˜Î CDQ†{QÒîLD|ýÏxÙ¶lzÔ`øÜÿáþ"hÁ23ɼ}ܪ´¥²P‘²»¾î>Hm]öß{f’ÌËuž›;×L’IδçûÇ_áùËñ²÷Iƒ±QˆÏ7ŒÁ«7ÄeزaÝò–²C=5.[ÓÕÐn+ê×F¸pƒ 樕õÜx\Eä½ÎuV‡oì +ÕZÀa[ksÛœï0÷äð± 32Rèy…hþõùŸ‹Tœù%X°_¡¨ÆÇzP„×ɾÊ%ÚЈ‚Î39]%Ü=coNUœQ%'*±i*E´¶¼c…\UŒÕ¿ +‰Ò] +§Pî¶xQaseµ ‚òr°aWlðZôR¶±Þ d`Z'˜ØßP‘ˆuSþ¾í"ÁWŵ–Bí‡Î§%žp —Õ\.(ûVZ™a¨v/šµúì7¥²C??um£›- +\—JÀÆ9$¬¸Tè“ÔûÍ–›¶±>ü€™gÚÝ–ËrP¢CÑî€z3Š)ŒFÿ§®#ÖšWÆÖúez{-k¿ª*ÖVkÝsûÌn+¯Xû;&
Åv¨7éƒîÀ1¼i’m@aã‹>Ÿ8úQ÷yL™óÕ’ˆŒU[N8«èÄñyu‰øÏñÚg RY£Ð,Þ®7ܽÇ5æzƒ)Îï/¡î²±B61€¬à‘Å
NUI!_l×r°‚ºAú<Šˆw§Ö®Ú÷êÝ—Î%nДà!œ¶¨G\ìŒÈÒ™ë§,Œ¹Ýlñ—µÿnS 0Ç°Cw¥¶%7‡9ºØœvèZÈõfea×
‘î&.sm
ÍH²‰å¥á¡\Bð^T}0×bËvä[W xB,¤æ`ǽ´iÛ4‹XŸª>ÎÖ0wÄ…‘Žœ»u
4ᦷÕÚÁÑîó„e343‘ÙB§Ë˜»D™•Ÿ½~¼~üäÕ¯ÛŸõòö‹ï~ø÷ß~ÿí÷ß¿ûîEáïþú÷—ÿôõËË·Þ½}ú~æú3H¨Wøÿ7?<âóÕ¿ðw|†ñ¿o>á?~ƒ?þôñÉÏß>ÿø§ð|+æ_Ër¶,$W\“˜tª*÷ÛùÕW7?_=^äLr¯Ad*ð‰?¨6´t:–]PšÎ(’/aDÈÊÇTQH+ÄÆv,*~ÿøƒ½ÅÞ¨o7˜DÆ,%|ZLå«òi|"í&`]”ÃàyU¼å/ÈaZ‡¨I'-Ÿì±©¶C@aQ¢=Œ“!ÒCÔ0n^¨0êA¾\$r³„cXÄûv''Øu
}ÿÐáß;UÅTÈ%$¨ð‚ki˜¥i•áBö-qY^IejüÓyQÇrúÏ~@F÷\⟨î}MѲê¨7ÌXJ/‚t[‘¤Ú Kâ1O¯¶‰Éw‘h»ò`}Îà›™žo¶cœèÞ"šú +·…îÀëËkðéö±ˆ²³u¢Û¦X Q55\ñ18T½~¬bâ±cyL +Qå6G£ô}…=‘©úÆÑã…4Ïiì6?Æ4ô4þ9r½²ÉSCô”¥9doèŨ@,”Ya‚Xg´Þ :rH¼Ó6õê°¨ö= o&®5ù °ßV»AÅ®=L +™¼Û£jóóÜa&„«\t`p¬nrñdÇä¨ä™‘’TX2µ›î“‰©ûᲕå«fßã(4ƒxùuƒž…ñÇèšÉ´ UÒ-ˆ¹oð’…Ó–b'+™¢3wƒÇ vœ’ª,ùS¦ç±ŸÊÏf%³¬Jó +=E•1hÀÊϦz‡Ós9˜¸AX\®Ës±; A«Ì+,\z÷ æì5w“”ò©PvèidN|ÚJ¸rM¼Ð’žJ³«^-9x¤ZÄ(úô¸bø<¿½AÌ»ÞóýÍ—¢ê°Í½y‹ózÝábî`áyQx5팽17÷ÚrŒ +¡«Ö“³LÙŸ,™Âƒ'o:5.mk{wÉOf? +Ø0™ˆ½àëØl¡4½Ø|p8ûM +ýbÛt†
ÈA…ßcj}ÆÀ1j¦»iÏÕJjôî2Ö+…2i®!|–©, Yÿù„V0³gOŒ¦æý=æn&uöÑ‹–Ð6è! ˜ùb+»[a¯H^5ZÍCúæÙJž„¦fkhEÑàÅÏhè•Œe0^lÙgœ6ôÃÔ¡ÒgpéZ“¿ÖƦ3úîùèQ9û[ìy,«è…5ÚÇ*>¡¯!&ËbýÜíÆþ:;¡ã®ÒÞºfPAmƒâ¶ÆÈ;ô"Jeë´¥R“B|ð9¤6,\c¯çÇäþ”¡vëЀ¥õ-‡=®^€ÜYaËoÙäåÀ°ˆ{SE4é i•68b-õb‹ÛÔN[Àˆ6žŒ×±c©=ò‰ZµIbJÂÔߧM9‡óT£°—L—, Ô9‹ÌAï‡ÚŒ*Š¯%›g7KdŸ‹¡Áñû"zW“pØƦuLP!Þ`-žÅ#„ùb¥ÑUVÊ HËÀ ;ðƒ¶{‹ ¶R‡a† +jðìxŒZ…=v>kŸÂ ûý˜cw[nSój˯eZ9ÔÓýg*HŒêQ!²ïìÌX6AqõbM0˜»vó’Uù
HœWarX‹LE7‘¢ï^¡©Ð«„æb+MÁš)ÄÙ ôlš@lxa©Möº–&-ž·ƒ–zÚ ?¤”††:mÑ_²Â’s3hÝ¡;(Óÿ eèÿâæ€$ãûN½Mì.RTÙ-½ Þ …Ø/¶¢R\ÛŒ}i¹´
Î9£±=m©$›ëWoR¬ÍÄ¡;à2*ù´m![r ÑýXõ²Á9¨b)§-`Á``¾B\›úüý¢£_^áÖ§“vI‡î õ˜o¶9%ƒ¥åìÐä¥AwÛo°”¸¶V‡`x¼ç÷wç´[.BŸÐ4ŸC?vž~³…z²„q´ëÎiëpáﶘý©†xƒ›<0Ó<ARA^E»ôÄf°²»ðÜ‰Ö +È(55ÝçHl¤+•™ý=þ¼j(òœœ\P_BÈ¡'@ËùMì_CÞzúƒ‡æ±ej/+}ÿþÀ‰]µ™jLBülkÁX@lìˆmRÚu°h»D'¼Äàûày +à\×jÛœ7åE||qå/eâ“7 ·zßî[ô<”l•\æ}œÐ-fÎobÂÞ´¢éþ&ÁZ÷ßNE,Sõ ùý÷ǃSó³™²lX9Ð?–šö´#¶¸}˜f©ÖÐïxúý®®âŠýk˜0“#Y(™…ÝApö¿_Wì4;ìÇX³6º©XɼŽqBÿµúÆ6ƒ¬^aïrBO E»Ä'V(à‹òž +òÑÚ*t Þ¿øžL¯•=Œ~ÄΉ =Ø?ÆÝFa©Ýa2mg0ÆfLȈº® +úÏkÎüÄ.Õÿ}§€E×ÎÕä”ÏÊVˆyÓŽã6X?Ф) +0ylëf:NˆQQwÃs²¥þó†mS.ý€š +„‡% ¹óÕIPÎþŽc, +‘?VUôVDªÎØÝf¦«Å +ŠOHžN2«'Ú±Èê$óÊS÷NbÍpžÞÔn2¬è:³bÙòÀ\ã7ÆågòÝBÍ*k2øç§g9ŒNÂz G,´‹ƒ°<ã‚SOó`c¡ØM¯.êb?³Þá5ÒÎØ4¥¤gM<£}ÏÇ°Bñ1éë¼ù,?>Ë +0?êk Ž]}` ]òÁ^rR¬ +Û²N(œr$pãÊÖ<Ûß×uŸï{Oµ³Ì (<áì¸Ô-§ùÇ>ož‹–qI;߳7äs®NwÔìÙ¯‚V82P `S®X”eý†XV'_Á[vX½QmÔÔ#ôéM¨PV›ÞØ6ü}¯Ög°êŸÊŠJ$ Òf²;`*q1¾,˜BªçZ5DÑð…Eì´ÃTÊõ‚¸¯Dû7FÅ{nZèq6lûÑøŠ¿ƒ>PïWìì\>(˜TµÍÍ–*ŒC¤TžXiÍàr˜v_-ÙøÂüìqµ*fý•Bâå“Ž6B*ŸÐüýªÝmÇ¢OàwПÚE3¡DŠ"g~%ÍLÑE¦-6“Ý‹E Ør‰,ye¹IæéçRä);éŒ?²náÀ>º¤xIÞsÏ¡=½XÉ©%X%V Q¤öà–ú/³F‚Ð÷Y7¶(tr’²U›Ú :Ž.Yz™ +OÉ‘RPW”l¦±BÄa›.8´kŠ .5u@¬Æ$t%ä¿x´^±'Xø<$LC’GÒ€LßXq8‹ˆ\‰âˆ-Í©õCtD¡Q뢀í[Hñ2#•,v)¥©0±ñØñk¨š˜â¦sôcA-0¤aê~„ N‡-ñ÷c™ŒŒµñ郒9tóÆJ¿\ƃ0¸0Ûc,\Óv¦}þV×7œB›$l³‚6‘±¥_·n§€É%x‚ÇÁ2ÌãÏ#‘¢V ^zàzN©v/m{wcAG˜´•¶Ö®Â‚hY±@,Ì’›0)‚¦Æ`@l‚°åØnµêeŠ•—AAQõôaIq¿°µYÙ´zbC8N-ÝiYQÂIhS£§’˜«xI”®àFOq£À%T‘1G‚% z¦ 16j}H´þ]c–H;Uw2V0ÁÝJhþM'ÀP˜j#UµT’j˜0®WûÄ„©v–ˆ¬ÕP8ÞÂ$4Æ@›K:ÁÖÀZ'ైVbcS# +-•…RÏxû]¸•2¤Æ¿ÂÕä=!ã¡C¨`A暟{`LÄ “OM€¯@*¥AÇF¸¬PŸ‹;SiZ¾K!…Ø€Øw +uƒÍ2¨ +¼ùP•Ÿê¼lòòËɉ†Ûšv>ÌÔ“èGWÿ|÷s^À4ƒÓîkðÃàôó/—ªQ¦¾^äÃ&¯Ê´~|îÁÁ«‡iQ£XVß.šlþ:x38=«ët)b8É‹Q•êyœ¾/ûLýig™zöêìýÍY1›¤7áëàôºÌ‡ðð +f/¿ô|M‹…‘ ò©Ed*–¡bÞl;•ï|“˜dù—Ió|´“†ïuN÷ù¨™x§d¢·ž‘>Þ¹<îuÞy<ì êö·lØœW‹rK;¯Ö¬Ö¦5n©B›¹w‚½1o<2ÚšlõïÆÔÙ|Qøs†oýäUN‹"+‡™ofz¨g^øžm×%øZß|nÓyösýw›àÏ6K£¶žaä›^¹˜~6é×Ì¿@Ý![O¬¬®š¼®éa6¿yýk^l`oŒ}#‘ð™Dž–Gsf¿º¥÷üŠŸ9…=æÀ¼\sK]±¨b·~Ù®ªE=ÌÞÕél’ýÓÚ «$µn}6“j–ÕiSÕÞùØ;«š·ÕtVÍóƧhþŠ´âeí»O/²qðãž»=vt{G··W.éèöŽno_hò%º½q‚°/>Tùü…ù½ðeÛ=ïV}´{G»w´{G»w´{G»×Ù½óìkV\MÒQuãÝ(÷×ô±hú6Èé0LßIôRlß&™lhüÇ
éÖyVÌ&éKiœ·ÅbM+<<ƒçíæÍè"ûš§jAiwÐÎ4Á»t1Ÿçiy®ðP´´÷ÙŒüYdô°Ï—läOì£]0û&°ïlVÇó¬9ߧí¨ì?¶PÁJLÂJO†UQÕ?ÜO´ñäçÇbMp˜Ûècý‰\æ³løq±¦Oxû=•ÿ¢Hë·U9oÒÒ?µÕÛO’lšåO³ªÌþ‡,íÀg{'¹¨Çé0»¦›pHoÐ!y0hðÏws~÷Þ‘ßwa6ÃMrñ×W»W'ñ©økÞ‡jOU^6—ª¯{è¿dW†‡.¸8 =tU-êavVÌ&©¿hˆ6P
Ñþˆ£ +Ú‰ +Z·í6£j–ÕiS‘µNNvÀÎXém5Usí.…¼ué?Üí‚ +H‰ì—QoÛ8Ç?A¾ƒ_èíÚNãíâüÇÛ @q¯¸·`Llv)RK‘ŽÝO¿´låäÒ
)¥F‘Dµf,þ43ÿ™y}Ò=×ÖŸ;¯V‰*Â7lÁE¤QþÒy}Òït?H³¿·ùeÖ)nîuºS£¹œÞ]‚°ùíW1NPÏñÊ}øËÿ·•ä¦C÷ÓýïäãÆÔ¥;æÌp%AoNöÝ¥#ƒqß>³³Í×UA>õJpó ¸4îÈÿ‘œ¹[Srù¸åž17}ýôcû‹Åó Ðù0¨+ŸÝcÜžt§_.ßçeŸç´<ÿp{¡”iÄoHÎͨ’9·y¤úž‡¦Öûb|¾¨(ÇOaOgºã‘Y‘vÖÞ‰ÞÔˆÒšL³A2 ƒ¬È « +ÓƒF{Úèññ3ÃÛ33IÚ23ÜPVÅ2£4í¡£wÈs*äú©ƒõ¡1ÏR”fi‹šQ¯SüÛýéï’ÏüŠ>Hæ
Ö•ÆkýÙ‹Ñz2I[´>÷U«gÝiÞ…JO +¼¶è]ZizÕ^LÕ“IÚRõä5"3Ñ—6¢ozNÁàl–q#aõ(@õñ#ô’«+b8A=ÇÍl‘„ÏŽQh@àgÂó Ðù0X-âÝ1ÆáIwúåò}îÑ m>ÿp;æÞÒ÷º¨’x7µ§E‘á5DÜfôQjgî}”š*«^jHœ½”Ù=Ê3•J£RÔ`”&3í©©ÒéÂmˆóõQÑ~XÑ~û™T´£¢áŠö‡vG´£ 5]Ðp“¨G=;êEÏŽÚQÏŽzvÔ³öëÙ%Ø,ã GÂêÛ³ŸYÖÈð™‰Æ¸ä°9¹`‚M9ÜDzù‡ÊæÝÏ\6døcÙËæ_¡ø$`}ÛÿçkÆ3Žš}EfFÊÊÈm¤VT¢m(©¡ÏÆ>ÞQ½Î WïëÂÝlÚåëUî_Éç5Ö…µ÷(ƒ¸ƒ5™Icf@úvWØ{çêÓYú +”Ûú‡éô‡§½Nà~÷:îgè®Ýß¡»Ñ¡bæWôú,̽ÃjLÔ’¼Ä:u4G â2˜;'SiL̸Fb–<¼óe©à’ÌÆ@°‰û„Œ¶w‹© +2FÍD•Vß[nˆ,!vœ:,nÀ³¢Ö<˜›{gzGÊL4Æ%‡ÍÈX‡Nt ÆK°YÆAŽ¶l—\jHœÑá´†"œ6¼Œš.oL%©ÊÜ +jâ´E
d5°:vóßÔ ô™àÐÉ;Ü…PwTBÁçãî¿aJ(úºqßÍ;eŸ +¸Ká%3’žœüš‹¸£zIzàCéXMé=òÂ2Ãyv±³öew°&3¹°Ðµ$vkï?{d¨¨ªÿ—ËÒ†P›¦çQݼ‚C.#>WÃ%WÍPc4TäœÜ*ó«Š7TÂ.̽“kLÔ’Ls!ÈL[cïD.rsÉM±&E0ãYZòðÎ'¸D Ô®°‰û„Œ¶w‹©pƒ
¢ˆ^•¼%´½C€ ÑÇ°aq€«‚ŠyèåU*I!c6±ªŠµŒWr¡6ßAè?‚ÐéVœZòd{äÇÏúÈ«÷Ýï‘Cò'Ö,èñ(ì½'Úod&î?›ã©J’,Æ1ÏW“í äÚ3!_“>îô«E)ïÆ8²ÐÖØ#‚,YŠÌIž¾¶«Áý¥±æ¾b qñ.”Ìë‚ÌöÐ1À¶T—òUêúè(÷ŽM¦´:v£ÞÔM›ôÎè`<¨xuƽà}7JçiŠÜö*–Ýý˙ἆÞGĬÉLN>
èZr»µP£d¨¨ª–€r[ï0\F|®†s(‡kBÝ
]ßÇá’+fèJv¨4È9y!ɯ*ÞP »0 F‰Z’©b.™ik"–sÉ«VÁrÑ¥f\#KKÞù—ä‰Ôõ86qŸÑör1®/“Ì(â†W%oyÃüŸC€ Ñùßì—]OÛ0†ÿ›]Ž¶|
‰«v£“2q‹\Û!†$ÎbÆ~ýòÑŠ!ùM¦ÆNée¥s?=ï{„ëÜV(æfVï¬IaaBJó¸p›¦amâ5Rc³…s–$"®Ÿ<”#vrŸG䯈sâõXÇÛ*KLwƒ¨íæ.Šås` F†¥‰ ø\N5Ñ7«š™g+oðW§íÍjh€}™g”O£4$pÇ'ÇxË—±½÷¼ZÕc‘ãcŒw½•s¯RqÃåQ«“¯ +·`¬Q"™òŒh“Ïi0½%XÛOßeœJ%¥ê°d<á›àÉÆ"ÀANp§ANqS ÄÙ™X +H‰ìWénÛH~½Cÿ "º»y'¿,{ld×G'‹EÐ"[VO(’ÃÉ÷é·š´BÊq¦wÍCC²åb»¾:¾ª +#ŸÏCøuË‚œ¿D¯f/žf,É^¢ƒ¡ðàÑU–ˆð½ø¶ ÂíñmŠÓoPuþÕìàúü잢׳ƒcáe" +Yrÿ½©´Y¯[æOÃ$aNxkø åsŠÞ†ÙîÝÙ]\Zj¦¿6²Âäç‰2žâlçX¾‰n¹*ž•e@åáΉÐç+ŠLUÂcβ㱪itŽ/!g
¦VØ<xç Q†V)ô‹qÀ<å°1ß™hJÞ´J¡shK–ò“„ÿ•óлS¸½ÿ¢À ŠrW«s¨aª‡ÐóòM°¦Z멼z:òè ÁêPlJ“më«ç¸|Å?äÉ2 ‘T,øið;Ί«(O<~Äk¦š"¤ÊYQœí<Õ½ëXZ@é¥iª"‰bž°,Rï••BOåºâGÑ&ŽRÑ[ÉŠ ãIãÝÇ|…ÞÌ®>ž¿ªÒŽóãðíçŠv>ëÊiï7¢.ÎtžïãßTA¬¹¸Y«ï%ÛãƒÆôUøÙZÒýéΩãi˜©jXîã›2Žo=àˆ–r/[Dyèƒi‹¨ÁÚ‡G³´ÍúX騴Ž¡peD©¾z¦y Î-ÛãG>«ÏœJÈJUE\Û{º®K
›ªxZlp5`´:Gè¨ÂóÍ¥—±[®^ u•¶Ì«Ld^C«ð¥Åé"hpG§·áuZ÷†²îµ!öi᛾ýYø”»ä´ð
Ó´ð
Ç´ðMß¾UÂ`¶."‘îÙÊgì÷ƧoÚø¦oÚø¦ïG$ÓÆ×Þ€½Øøþˆ"ÿ&aê™2ÜuÏÜÃu¯¦q¬{s²/_$ÓÊ7þ•¯œvN¯…·/Â2ÈzþæWÄÒGhƒ%ái¨7€íñá®viæó[Á¤A-vŸºRoƒÜ)ËÓT°pQp,ërl|uú÷ûàu êÙï£%·b³3s´Z¥¼¡ÆÃÍ%Yà ÷ƒxÍž©{"³ËmÜÆBc« +Qó„e-Zk¥Ð?E›8JË)b,¤ Ü2¾¨3Á—>ˆ@ˆ®D4Cˆ1äÅïKÃÉ:Ò_¬Vyª¼¿i–“ÀiÂâµðö¥m"{ÇD¸w=“%"[ox¦©©wàÞ;ÕL½sh@Þ;Ÿ´Ÿ
½¶m5SëœZçÀ[g³íCéºÑj•òläIÂýà ^³g+ÞzΓ.=:¢YèÙ)q±x>F”ånù¼uÙ1¤y²Ìz|ßä*a^Æ‚‹H¤ÊØJeEdÛ›:Æ¥aSÎ’¥ü$áåß;e\´ºßØ”„0ß\BŒo奊àê*#£«LdÞZ_Zœþ ‚ +j ¯ñ•Ñ”§ iØö²]¯xr"eLÏ8Ï
%Î[ªÇ¸ÔRôÆöŠŽQ„•áHìŸä¿©:ªºNo¤r’‡Þû±ÉÞe™f#Œþyv:åYyFþ.t¶PH³ç[vBf¦0!Œ(߯¢<ñ8ÌjñZxê“ZÃ.±3ªÑ‘Ìjc˜?Ëpu2vŒ®Éû¢(æ Ë¢DS¥Ð?‘ŠŒˆÎyrÃ`ÚuþÇlM,=%ipé;ia@O—‹ ShÜÇ|…ÞÌ~;|KðçßCÿêÓéI¡)E¦”|¾ˆÂwðŠÞ2Ÿ—â¿aýÁì".Þa”®î6Ë(˜½Ð}ôî.aá£÷L„ËèëËY?]¹âçúþù|ùD_‘ÎÑ¿þ‘Òë÷³¹K7m4'¦fPÃA›Ö0¦†A@F5ݤ&:›Í¥–‰æÔÐ,]w¤ðå³Ùb Ž}ñ1”NðÑMÂ|£"úËÂÃ+JÓ¶¿73G#Žiš¨úëÚëh^}!.Ñ,Lr(q4Ç¢:ºÞ̈®¹Ô hû÷EŠM
0 ˆ
ÍÕ-¼™©aÓƒ·Õn\Îq‰këèû—ÇTK3
xD©4»R“j<7ÐöïOôÛRÑÐ0¡¶TT +!T€[œ²†T‘"Ç„ +p·Uù§T5%—ω«Ù¦¹Õ¤.Ü wé奮9ÿÝ…÷—ÚŽI¡nÙvyÎt\§A³¤h×û¶ùªÈˆQ$“î`½ä +YARF +XÁ.=öÀ¯žô«áÐÂ&ôZxÿ¿ÌWÛnÇüýþЋé¹_'^'H ÛAÞŠˆ
È”`Épò÷©ê’»ä®BÁŽm½ˆlNÏôt÷TWiƒ_êT÷äuŠ'þöb÷R.Ç7wÿß4ÓÕíí{àõý»÷ëfòñÓûæÍÝ„Ÿ +yjº)&ÖoS +åÁÏsxeA8<xŸ0Ö:‰ñ`ñ<¶ìêcvu‘|É^ œäÇáSÆlEÈy ä1!{´'1l’“©£½‘ëi< %w1\Þ´òK ™ýC˜•r·D=°ŽN +/
èÛþÍcóê +„ÿòõï?/_¿[ÝoÞü}¿é쪷|±$*ÿ‡ˆ¶}v̯Ž–WÅׯ®7«Ûærö²çqóñz{S܉hØúóxûçí¦ýH×î·ë»OÛ›íæáaÿûOÍeîšÀ‚ù +^膻sOêúý·6ß7U
úìõnriÇ«íÃãj»Þ,g«ÇÕòj¶üeu´d|•—ó¿6ëO°ëÐj5ÍËßm¥µŠ`³TÒ\[èÃEûhÚÂeN(Sk^Ÿ¸Š]W¤îË'´® +W z™ƒ&a<ùAG
ÈǨՓ3¯Í(CÁ;%¹®ñ¾2ߦèÉÿhUטÐÖâw^Q‹î9¯êç9º‘(8ö†~Ní kKéDvK¿yå~¸÷ª¸Y»˜æo§÷¹z¼C¹4L"{Á<Ig@ØÄ3xåƒÐÀ2?P9¤ÜqµX–uí«H-±›2é¹-5G³pñWè•*•„0PÈudÓàQOm +"#1èàuUu4¸.%äU9ë…}€Lzå +OdÞÿ«+¡)²\BƒÜíÿ'ÅTGH
~8_ONì'=>h/ZFiH\à®5¾ÈïÁqÛ·S)P·M. mCÂßñIeÊÙ—ƒ†L9á•òd)%„œ‡@j:]5BÝ]>±žY•Èôi±!RÇù¨™¦Ÿ¯ª-$+«ªŽË£è}K•'µkñ3¹ˆ“€n—ã4ÚkÀ²wƒŠ¦³¹KPA¡ +VŠ#8`ó¹jã žNÃ(KéÛàIhœUx|"Æóq±s¶ñ) 0Z‹9&Ì$kðÈ¢ >È#³*ê¦}9kÁrÖL;øj¬&Ç%Æy-ß½ +©ããÉŸøÊ¢AÿÊ+ó Óƒ'çT^Yð„‡v¸ïŒ6›|¬FÍÙÈeÙF$±Àcs½.·(À)«êõU.Øb‰‡jT¿½Ñ0ÅúM-WÀ¶ò˜V¹S2Iî
Îík‚匞ê~`/øš¶ £¹©˜,Ç51LÍÐÁhÊzdlHe¯„ÃáBÖT0 +<[¢•´¡Êàq¯,5Œ# s©œC))Ò2£Çƒ,ÓèÁnÄ4¨ý”„;µ;LR\î½DVrg2îVÒ’nN[sú¥x9ŸO3Za1
n2‹vîÔØÍvÚFÃñ÷ÆKÅY˜ñòmÿæ±yuÚ~ùú÷Ÿ—¯ßî7oþ¾ßtvÕƒ[¾Xj!Œÿ’mŸñ«£¥ÇßUü¯7«ÛæröÒåqóñz{SÜèÁÝÏãퟷ›Öo`\a÷ÛõݧíÍvóð°ÿý§æ2÷CZ}øPð|;t(:Æ?y¨ë?ôßš|ßR5è³×»ýÉ¥¯¶«íz³œWË«Ùò—ÕýÑ’ñU^ÎÿÚ¬?1À®C«Ñ4/·mlRÒ\…ÍËè0@ý—àXšdîCaøÂ^ Ú$Ê5e™8«Ñ‚Á{[[PqÝ醃RÖ%ë*µè +YèWƒ¡Óìÿ;ÒF#³®| +[Ü\-I%׵̊öxâM»0˽ÄÊLY/&™ê4´ ¼rMÉq ‘ÔýÞŽT1ɇz¾2äôm7¤µ»¤FKÎ-jftYˆ¾’,áΩHWo³÷ív« +Ý,â
G×Mµ^”\-Iõ¬F)‰Oq71ykc§&
th[Dï¡£ÐwòË¡ï +³?h?¼JìÚýßÙû èY8œ8–§.GŬXM +85›0†iN.x˜Adý4ƒhQÔ*iŽ}$$š›€AI{T´à[p˜3QhnûÜàÑnű˜yt{rÅéW9Ûj›rT;ŒäT'I¬aÚš(E?ÞWÃ×>êˆ×jîÓ¾šÆ,.ê±líŸáˆÏ{Ó€Êfwqo³18€+8Õàœ:ÑŠ\FÚ~—¬êîšÓ”fX¶êßWÜÐÒ¨¢X6!FÿÂ%ÙÃܘ;¸Ã CX&òJ[»À,ºÃÜaR_À7ØlŠ[“ƒ¶uå¡ž}Öbìk|F3¸N?E8Ó ‚}Ýq5ÙV9*˜ø¹í‡KÖ@ÔV±LpÖ"Î)Zó!jÆÔá—~~Ðaóou¦óëHÛt]²ŸÏ‚»²s€Ì|×™šçv¦¬%Ⱦc6’&’èý™“b + +c)C`”walZL7v€ü]”ÂCÏ'´Öë9Q…* „s±r‹ÿ7ÿ£…=haÌÙž®2ÖþùÆ—}’,.;Â8~ôÓ‰b»9,Ô4$k´& zEÏ[ú¢Â +Ù'׌S’b¶Dj’»½6éî6ÓQ–š5wsÁLcCù;{H°®žªÐÄAÆ*’Ž@ãV¶·T`uÞf,zßÒ}Õ<ÖÙ %Œ%C™C¯„¦µ}¿¨½àFD4¶ÑdeC…]Á3—ñKHðs{„M”¢Ž(]Ë ¬äžYW¬VˆV-(ãM¶¡U™»š êÑØ@þO&˜Œ kÄ^49;½ˆüvÁ·™£Á§\Ûáo-Í‘NùfÈ—ùÕL¬»¾Ì×€iw™fÙ]\»«! _<7är]> +ùïÆOÍù
¼×ÙÛ_~Z¼ýcy¿þùïûõΪrtI@ªêüï¸íWßä|ïÓýÿiòÐç·ëåÇæìò|éãúÏÛö®NW}æû×íûëÁ;¨+éßÝ~þÒ޵뇇Íû›³2~Š=”õñMôʱMM(ùÉMýø¦ÿTü›Rë}ò÷~³s-Ò›öáqÙ®Ö‹Ëåãrqs¹x³¼ßûäâ¦,®þZ¯¾ð€»(¼üç¶qÙjÑUöÊBÎx ©ZÍঈˆœ(·Q“vaTë²ÔºD‹³.Ö{=™ýƽߵ-s×àòwÖ¨/ùA»ÁêºÖèÿÎÞ“(-X¾Ùü‚8ÕgÿØÛÁx‚p8ܯp}ž®,4ýïØDgÔ5îZ´1#ÐC5Cßö¿§í8c¸`ÅJ"‘u#S¥dZÌÌ©™àë9áÃAbÓÿ™hiVu¢D<ÍNº¥èÿ + +B,øÎRE!Öcóp쬑5œVõ…Ö´àzÒ†LÈ)ó +Ü¡>Ùœ5“§œÔ@EÐá ºÇÝËdz‰”ò²iRÛÔïãɉ„ñ-L ”…Ð?–ÈÄ€ê“@uM´BM[{dG7Ew–F÷6¹›˜£w›ºd fG'B;¨4<Elžþ•Úé,¡JšØªÑ扵‰C1£!.¥s´Pá°™w‚³ôPÅ°¾$àP°Áv;qê"E¼-¡ßŒºâU:£<»ÑýeŸ´ÿœr¯°ŽýOÂIÐc2íüŠ€>lQ»ƒlVyV² 4—ÑWÚiÖ¦Qº©ÐÞPþ'ôbÃ9UpÆ¡¬éAÙ¢œ‡*w`,¶šOí^þshñÈOàT¶sJ+BAòÖ)²ð½ÏÆÓ'yÈ.£Î
RH<å~v6X¨}ÞB0áÊ6Äê +Bp–äbÖÆXÇlrô‹esÖÍ ÂÄnªžÅ,ÞÄÁûÜÙϣߡߵÕRÂYö)NعÂà5¦,Á¯µÝ7xDd´²ujœ +}H‹A‰3z5N=:Ïk²íÐd  â€3Xd®eø,Æë íHC™¿½"áfÌqZ5}ÖeØ×R³Ñì;~\wŸªÔ9Æéù?óÕ²ÛÆ¿€ÿ°— +Å8,Úˆl$ùûTõ,ߤBA€¥‹Àmíìôt×TWIu°ˆ G"„Ôò’´ò‰¢‚2°œ©Õ·
EUKjŸ\\]¹¶.zUΓյ'Wª·_ +øþ¶±°—Xe;©ÙX9\M»éøî½ãf2Œœ{2Ȭ¶†`Ð +&ä‡_³Ñv2ŵý1Âð‰¨Ûê‚Ï0‰$/È$â$CiçáÅÆœ€Þ8ÝÀåÙÇ%‹ÄÚX„³TŒ + +÷òõüúCw6yKûyþ×ëÅM[N‡Ÿ/Þ}˜oü‡,Ëÿ½þøeq³˜ßÝþÿ}w¦‡“ 9AÃßüstS +{7‡7ý?诀6$}òûqµsƒèåâîóõb6¿š\¾¾ºœ\ýtýiç•óK½šþ3Ÿ}a‚Û6àçyø‹@1È5K÷b“n\·#Êي%Vˆ)ñ©aJ®W£M\Ë’½¯½õ¿së·‹úrÓáì7ïç€Wú֮‹ÂkÑ.Æòoÿn?#G›7·C +™ë|à“ɂìÔ˜‚ÔÇ0Ž¿ÝŽ RÝ"B |p!b02ã&A¼õ³æD…77áRM§îØ›j‹æÀÆ/üeú¡Å Óƒ‹‹Áöx“‹Á¸ôP yš´cëJ‚›²u…²?혉ǃ?ó +ó›Ésþ¶÷½ÉÛ´ÁGO†ƒ¢Ï>œS¶ +dÛ€pâRåèm)\nmKOl§§ìµ~Ƥ;í,Ï ›žY7á2¼[õçÒ±•‡ïuv9˜Í9•#·3ãCAc%ô2Bm¡jâh¦ªGÏ Ci̥Я(µAÈá®›Æ+ÐÄG˜+‡šAOa„cœ¢É:Û6’¡¯šJ=òÃÌ㦰á2Ô#'?Ø\Ä +þBÒ5
°^³«’¢×¦ià3PozˆRèŠ^
‹#ŠH…8®ƒ›_¼×Hþ<:å §{Éõæ5AiFœ'⾋šMÓ€Qn~"ðó0ZÑÁó€R Ñòf_Ì¢ÄñAOƒ‚ãƒä¥[–•!Ø×õÑâèÖϨV-Ï;cö€=Éð™ ö‘yeO[”¿SIŽqïr¤“šèY(ôFN¨¸©ÀcU|ŠÞƒ8ƒ1«Þ%>£}b~Å7Ï…jdIFš +;ñËnø¦æÚ<NJ¾ydc@Ìã Là…dÃŲÅm‘…Pe‰p#·"´î^ïo‹>9Ö±Ù>Ìa*Öœ,AQä¸Â˜-u¹"æ¶wZ$w›ÀÔˆÖŽGÂ
—6„MW±SÒ¢ÈnCgÖPPÁƒ°ø\4°JØë'03@„Ô˃͗ ʸuàë5Ðpû+õl´#Ò‰L}×0´ iúÙ¬.¶¾â;%:.صäBg„NªøÜíÝ…ñc
"êö‹ñDz7•ét<vEåbÛ +H‰ÌWko[É
ýúó%€Ô×CržÝO–‹´ 6p⢴¶6vkˆÈæß÷s¯,Érâ ín½ÈJâÎåã‡tÞœ’ÛzíNþ6"·?òîhä»R$ùà|'Á—’á+—”sqÅü´ÿN¾àlõµ0»Ï¾mûÎ{ +):⎉ª»1u¡†ä¸«µzvoG:Šn;uìkM©‡@NoHYŠ@øô¶·£»Ñ«Éþù.gɆÅèîPAN¹})°¦ê1/9qŸñc“u¯&Oí{5Ù`¡ÝõÔÆM·ªTí<Æ¿Ú׻ݛÑ>4Æ?^`þ¿Ö"íþ‚/ÿ„è³îûû?¼;ƒôäh5Nâc†_¹£|rµc RœzÄ•\‚\pbðZ:_†œjž¢'”Z‚³Ÿ4,”juKaò‘MÁw(9$!¼"vàhÐR*ÖHW²Xɧ*Ð9¡F„0tÄÑ….q¬ÅmsGA¼Æã1Æ”ˆD•Ì?©ðF¥±°·pYæ{Ý…¨åç +çXŠI½¯ðµtD¥?×Þ6d®× ʵ׸a£¤×[ˆj—H¸¸ÅÛr׬2ój(hM‰êNšA¹_’"2g>ñY`{WèjTP"j +RT"”4Wˆ¢¬¹ÐAþ‘«¬¹èÝC\…Aä$YÓ—£b>tŒkð(wÉCBÈyÎЩ]ˆE] 9¢î‚÷sWb¸DJJe`8šçœÔuJ@%Âp`D_‚C”‚ /¨!#Š($pÚÈ÷)â(ÕRD\´QyF$-5÷´ öF¿ŽŽGC1níž]ÿ2s{ÓËË‹O·Ó›ó‹S7¾}¸;w¯¯/_[ÙÅèNÞ^ùâ³GJ<3É!üæÃ]9ˆõ9¿ô·ëÃòOíµ¿q<|—ȸ:>`RÚK”ƒêLvvoï÷/Nï/®çÓÛ/îϹ÷·óO®Y>1cgg“÷Óûó×îO8ñþìè'e¹g¬4øãÍ—g·óf~ï¶>üüãäÃùôföñËÍlåVzöJ´Jt´ß·µÎ¿Ûµ£ë¿5j +µOˆ`ÁŒPĪ +&~ÐzˆRžÁ@Uz3MŒv‘ÿ+àéW?›8tSmƒF)r_ùb{àòc„Ÿ(Eê×VLœ»\AǤÄeB4[$KÙ×a$‰˜Ç£,f|.¤Ig¤7¥^¸~çW÷ŸF/ñå;–ÂÅÛYwLÑÊâ¨ÀqHƒLüÛ¬uJ$õOýTC²Y±Uá{Àr‚I£|ŽQ[?`“1d“NpÈbBRcÖa^óˆtà + +%¨ÈVY§ÕVjA´UiQ‹Š‚T[E¶rMJOXO‡r.8èë'Ù:µlÕœ-[ÈZ;c †ý¼6dkÍöx4´§oÍÿÚ‹`ÊÉ{ìºd™<¶Ú@c’ƒ1óA9ƒC_¢¯rèWþÂÊ/h¯ýCàá;J +W +ÚoÒ^¢TgÓø¸‘´%ÃŒMÞOïÏ—¶ +CÀ7ϵºÔ*Á )7‡“âV6²ËjGg¡Ü¹g–ÿõ|s7p"E“ jiÂT±ÙRãKÉpÅ}6‚zbœQÙóÏ®ØøqÍÄ
—~•õö{æû¶õßÃ|ˆGA^µzó +r®œŽiA¸çsLòY•’JÏ!˜]”Ïk5>_ËÓ^Ë&©«Üç²qמæéô?eˆ]4È +†ð~ÿ ³š~?ëïÇ¿Ý?š!ÐgPóÏ2Äñæ˳ÛyƒýrëÃÏ?N>œOof¿ÜÌVn¥g¯|5!Ûl~¿¶<ÿn'vÖŽ®ÿVlL;G³é¥ÛÚ¿˜^Íîg·Gó³¦n#ÖâñîüÓåléÙ¿™/·Þ¶Ž+ +ÿþ‡óRÀy sæ>ƒ<ébB“ }šMƒZ´Ùnôïû=‡)‘ŠŒ8u^Dq8{föm½|á}Óo—oÞ¯_W··Ûß¿žµÃÀ²ÆÇ.¥PÚ±K[¬__ú[u¿²éÑOÞ·7÷ú¼Xß¾»^/WWç×ﮯ.ί¾¹~{oËÉE»zþËjù^Ü7Ø©='ç߬‡P“Õ[Wëfö°V–Ô~ém:T£§?èÞïÖk’òjÀñW?¨ò…5Á¼¨!zKlþžþ8› ñY…ÐiÊVTèóêp—Ù®1èk¼ÿÇ
¦è¯n 5Ö#–mQjÎÃ70N—3D‰ +ÉkVØÏgùìéÿ|é$f-ŒYƒ+½rù¨Þfhe¶cç¢x5Òa[ëyiÂïº,¤˜Ãj‹Çz;,JhfËçkšê(VgsçxÜ”s/¤jø$…4IJFÆárš3öåØy¹;ÞÝg´†4š¾éŒÝQ¥Å¨^l²¡ƒG%…E.cŸK|Y”¦Ù[q«uuRŒÍ{MÄ™~}à¸G¥æßgOñâé2s{¹&t4ÀÍ,ƒàÖ8ãf‚FNxÊ'j$/ž +$ÁäZ:LŠ´&h +ŒR‡x"vö¾G_$$3ŠRnìŸ* +ÞÍ#Wç±Ò·¼r,Uâ3K Õ¼ÍtŠ —ë'g¦…Àôä™B–ìA8_[ê{|Q‰] +Z ÉÚ6¥ËÙ¯KD„ÙE{¢oùÞ…¾g)ñ~nq}z®èæ†.ÕBànSNf¬ëY)£©»T¼çáj.›ÍT‚R–\|6“P-={A +P„¯"n`?¯0@]ÕH<JÂœsÑ>‡eu±Ž÷câ“s:ól¹P²Q©´ù)Ú Å–Jú)§;mIšTæ0ˆUYhA/aæhä- ÷•Â!1˜²ý"W +Á”S¡r¦Ùq†a9NÎ0µU936ZKÎxÃCœ±¼<8÷Ó9P<?iË`ŒUðDpê#ŒÃ¨ûŒ'BåBoðÑš¸Hmé@ +, …ÉYÍ‚iez×€
.fë ¼ôv!"©"½æžÝ8õ½í²º“Ћ^èY@FNp‹ºÅWþË]ƒ®{ósÓo085œ–°,„øŽ=žƒ»À`Bl÷>y Äm ùÿ?3tW( ¨¢'B°’À²ëz§¿0Ôu%oN¾Çy^®²±P½àŽL½ž‰¢öoÂÔh–;|¯¾:ñ/=Ö’ÙD ér†Ï±,ÕB¼è:‘…æA +ØH
~Ó€Œ¦š¤âpß‘G±) ì>1t‡†%¨ÆÏ=óÉ)n@\â~¼µ®¹@•3p˜&ÜÕ`Ä’ÀbB4IÔ¯(×fΪR–l¦@3Ôši7MVQÞ(4QÀŒ}—Þ5$M6ð”Îû2`Kjdì‡êªðˉ2²=×>usÕleØïÇþOià))ô›Œm.!³É–Šú +œÂ×
ðNÙåáÎ +ĺõ¢îåIK_^PÜ=WléÛ–½“f~Óûë‡[ü,ÑÈDÆ#ÀZüùò]ê|»¬2»~ˆý~.ñw-¥ßf6JV‰·¯æ½Kþa@ÄpYeÍ—’ôEÃ=f"i÷(RÅÝ¡tòš2õÞ'Mf^ÖÇ—ß²K:ö[^)ãÐ5óNthœØ‡ª¸‚åH¡ï›Sã;¹tKܬ½Ÿ$;Y˜M!Ý;Ÿ&Ù/ÞàêÒÕ‰rˆ}æGu/ü'÷áµìÉâ?5£wVâÁåÌÛ}³°£%•b/WW\œd‹WôMo*˜å +ò7‘#nͪŽ¤°¶Õ„±ÌÒM‡jÝ^1˜¬mÐ@¹ØIš$–Øû«U&ýã¸9*ôß®4î ¤NðË‚ŒÔ¿›BêQ!çس¯ÔÌÑ<ÛŽÿ_ÇN8É宨قTQƒ'+ŽÌ…;2,+÷Â0‰Ë‚œtjƒrÝÅ8Ö¡o‚Ëa¶ußgFÖ™zÍ.øðHKN[’k™óPÁO[ÿu±œÕÿ?\~§.:«jŠ`X
*eP÷Æë«šûj§*(é[2Ô}yÃœª +ÅÕÝûÀTààç
¨¿NwÇ¢¿äRz¯ÁÃ*ÁÏ7"Où‘EêÑÑ[NV;æ4Ïòî¥ô®B…çÃ?íÿ—å2‡ôûïj«y1=_äò£ùC[§×ôáúò¶&1Ó3_‰HcÞ>©¶\u
tO¦5õK„øšÅèÇ ùÆ´ÕÅút]@Zí›%¨.ÏÈòÃ3±@Ößf§v›ˆ±……p>¶ªÕÈ.Nˆ‘¿6ùKÎM_7íç®Ñ²YÂEØþÑ€x®g›¾ó¡\¿Ö39§í¿©gØñè¡ìñ]ÏbT“#¢yUñÁÁ +]5Ô÷ù¼`pµ¡µ=ÿ‹¼Õ4½ß¯í-1a®;.‡Ye3øòåÆß&wÛP\ ¶gÌÅ¥ÊÐÈ®+&÷$Ú¤KzÿÃÒŸåhÿ»g[`Ì3RU°B)¥0¼°æÔИÊb h"â`¼Nëðö¤æ³÷L?g…Nºw‡£ÎMspœ©\]y`÷²»ù».J‘’%¹|_ãlŽ.âÁÚw¬vRKŽk®Ôë•;{wfŠB…¶cI{3ãߘµŸvg:Š›Ö3bñ6?\a8¨y½êÖ÷“>ýW¹% +7É€°’lªM—1N½/${—Nµl*핶؄¿Ys¤‡&#æáV£§õŒJµ&±Y®U¬ï_½Uy%V\ÙÜ ó´…ín3ÏýÍUbœmì&€3v†(®~†ZI†üèFûÕFç±óʸ4~õø!Ÿšÿ÷%XßTþõ^ÌB±WvO†¯êÅIÄ<L‡}©‰µ³¿–ÛýúòϹ¦+ÞÎ,)I :ÛË°ž^!$a +ed+XöûªVSoZŒc‹6‹\giTùàÕw¿<ˆXÿåe\h¾DR±×šSèÝì6Á¯ø×3.è$‹8ÂEóßkg¨]¾È`4Cö}ðœú°Ô] ®±UÕ££1¬ÊG;äóÓY?ÏnÿS²°¡ +{2¨©í’C39Þ¯ùé‡ø0ÍP•¢àãOÒw£_WOKîÙVœ!ì˜él¡gújA*]9[×±È1™0i€¯²ôüZnÅs|£¬Õè}cZ¢N>cå‹2áo¦åhQûÕâr¬&nwåø¬Uz¿ö¸ÚÖ~òly—›}÷ŒLÀ3ex ¢ì«D:Hœª´[ˆÝ½ë?¼QÆé°ŸJõ‰œ P¾*ƒ¼¨«vñf<-áÅÉ4¤mPíRО’ëÐË”@þz™Wx?jÛ.ÄT¨¤Ûj#}xeJÈÕuûa¯¿^†ÓløõqrÛ>JÂð-fÈre^qÆplQø±[s©Þ,Â÷38y°®m ý +õVšYè’i²áË
và|v#Fó Qâ
¬ë’"v +;
º·}‰lèËnÒ¹Ÿƒ*ŒFÝÊÏÜ«;¨m=·‡ +BªL‹Ñ^®+ž\U‚ÿ;Ô!ª9÷ËGmDQ2N Ú$:“`"óö®ßÚÕ2-ÂhK Ó½»êÔ>û².Þ +H +jhtž‘¾Hm󒙉@–¼ÔàpÎÐò
üR˜:ëò†)¾ŒýÚ
µ¨ÿ”¼-[òeêâ.¶Òè>™£¾È—õ’À/e^’8*·²ë©oLRz Jò˜÷Œo˜É +×ÝÜ\H¿hZCm$üœGªÑLdžgrŠc²Ü Çö^b}L¾>7†¢B¶Õ«eÛùz*8÷ÀŠeÕN×9ÉZ¾ö˜± F2&uXóÒ)êbÑäR5숊·a;W—*4ðQ)¨,ÖsKªÅøÄ,ÌæÐÀðºÿú™Öyb¦…|pKö3ýªÚ†òâxøÉT=÷S[šv¥X^Û—²#>V,ɤ"º~…mÏ•ö~Ø-U?3p)ƒÒ—+@'ï¡B¯]éâ,Ïbßårg‹½°Žº·°!Õ3ekuÊ*¸|MŠ/ÃB'<ú +Þ +¢Õu
¿ÜÛ
ÞèI䙥“fJÓ%ÑØ2Ç“ôïŸK«aF +Ùv§û2ñ(•5G— +dòaež½ºÂûfLzÁ˜V2(! Þ¸ŒæºÌBP5ûX0[‘,´§`\ìg'),v2_røɹϵ|Yj¦2S#MÂúQimF¡µ™, ïâVåK¤j—õvo=ÛFu~¦}®ÊvÛÇ'Ÿ/ÿ ŸÒ‘Ž—¯nã}àß~À¯=¾ô£Ÿü2§/~þõ«ß¿{ó—·¯ý{ûâ§_þõ«¯¯È'¿xýö›¯^/¾|øÇÛoŽßþùáïGüéÓÛ··«ÿåãgúöo4CÍ*Œ€4h‰0«€ïDŽmD:ò‘üßËwúåWúáo +ýóhǯ?þ)¯}ù»Û\±n¤ya—ˆo¢¶Æ@ÛµY¤—Ϋ»s·ö}Y>Üö÷à¾ÄÚ?EÒ.W¤£(õÓrD¶pWï%¸#6šî HîõzÊVI‘D: +ˆð@Š=šY:6òUø?Á„œˆ„tN‰Áß;öÔ2ÍJ\1á¥ïg¿tÅÐr¡h½÷Y »å%ОÚ댒ϸ"áÌ!Õ`sèHÊIo—#ÕúN!Ëüx
Z–þìëpµÊŠ$¯+Ò‡GVïY)ÖÕââÃÍBŠdH–“Ñ>*RC–YC& +4›9Wm’j\š_1–ÄV&?"²™Wd´+BÝYíúÜÌý¬dÛî9Ìî`¨ +vb‡·• ¤aCWë²þX¼[£Z«ŸZö.êJeÅ9ILéÁ×\jrÈ +c3á×îÅ¢‡»æH€F„T– +I”FH0¿+2©ÅàÔ²æHšÛY*¦±¾jPW¼·k¹j—Ð%Ó¢šÍUA‚¥º"fÏŠD“ŠHÑ2ç»ìÞ"v©*¤~ +§Îq«NóFL1¥c`ÚòN*WHtJîËY.}3£0Çj×]ºÚ…"Ùà/¼écÙL²Ÿ£WŽ)4"°Y:4F&7jRÑy|‚_Í“>Ì®@UÏóvlÒD»zP”ÛŽJæ·Šr¬9ê½®XôÖënmÓoϵ§©GiØôÖSqI01LX]wÖ÷gíqÉ\á×í5Si×#Åp(£#×
$ƒAu¿@œØ‚99H41KL«»ó~Ÿm?&ÎXLj»ÐF}s%;~Óýîn*RcRÄ«¨^rZVE§ßJrŒ@8*hƒ£”oàÈíŠh<¹œØ³¬éX2ñb08ÆVE¦P¤Ë!ørY ¨ õV¾†R`q +.òž‰DF@°BmyTÒâ4g¸ G†“Ì!ðÕFærŠíGO|á9±H£kËN÷*^‰üžÔ‰‰®›«_Oœ)R±S~ZQ“¡FðÞd^Vl|5N1B¡%Iã +ÿóŒVIºN[Ë”æVdé‘ éÏغ³ë]èG +΃UD„ȳìžw©j1ø}y†58ÌÙ,A©‡|bÒXÌÇÝW ‰CøŽWÿl¾ŠNÕ]bâæ!œÊ;¸½Š@¨>¤ÃƱ´ì=‡÷¡8u!ùÂñÔT4=³÷µ+]Jâ ’8ª×4†PY×ðj,–?íhãR‘rQ »c+½js|¿”[0>G «~7«ŒæX×++k %µ« +{\ÏP~$Q…„fŽð}É¡mDÒð)ŶŠ +9r,”h|G
Ð|[åkõ}¬{ÑøŠq²h3‰©‡[@˜6nKõíÝŒ|RჀ«6¶¦ŽK`"yÁOÕpÅ– åö"RÅl´¤a +ܶ[QNŒ™'ò‰û.ŠšMNŒW\Å¡+máNØ´7lð|ÍÇ Ú5À{ À9ôüº¹¨B!þ§Ñ¬]ó*‰ Œ·Wõ®®}Î1.4ù•EtÃKôgÄd³@
ƒ ‰MuÚ«ç:'n@8!slŒäyrñ3â$î˜ +º2ÎpH—dõÇQæ
GÚ_zPèÑ<Ÿñ$-w”ª a +Dºè]L•I%Þª§`O¤IÕ+ñ4p´nTñP½ÉÛz +.‹@NåÕ âs}„—tR ¸[qx~ñÞ#i¶°mò}þÁÿ©W,¹¥SžøW[4yž/Ì }-i˜mìW¶ÀÔ9<"^)x(‚ëû(_i¦ºëˆ +‹MѦ–ˆ´^JË•rß'çÂÐnE‡åž/±ª²‚Ö´ˆqŠ²ÙC-õˆ Ó§‚d}ËÍb“¨VWÞˆêõò‹}2Ÿl;Ì¢ëYvR‹Åi‡BÚ-G±yËpB:»h;ÊS¿x(âid‚¦Ñ«E ,Ï_°šëÚlA¹ápïªj[§qFxíPÜQT©ØÛ|‰z’Úî(ÑUâçƒ=_rèDŸ*>,AÇj¿¦¯@éÁ¤»yþ¯.QöÆî›qBS!¤Ó±Ò/—Ò-–0jk@W«2›šgüëKÑ|Ï—’e˜Ý™ÏÖý™ð:!šá5ÁQAx…§$- +‘™À,òKÕˆ²Wœ›7ºÜ8Æ ù¦‚ÄÀ •>n°6 +Ÿ)·ç¹4“Jë4·›o1†{oGâf0Š‰8x¯{_;«TsKlœo;ÅëDøÐŽ\÷Y¿»ÃçJ¬*,Á6_ØpÔk>&[ +ËOÄÃ
ȉ“ ч£2îˆnͪuGŽà—Zªõ¶:ÔGÏ¢-&<£fž¼W´)>|°Šzî¤Zøø‘VDï#¨2 ¦ìoû%=yöPä%vÈáEN`ŒaÁ‘˶vœÍIgm¹% +ëbf òh.·EmŸG‡R}Ëâ Uf(fæK¸Ö9²j(þ}˜Ý‹_Ú¢vPbÈ<ÇX"0)™"îú*VÉÓKñy¹8!É4•> +e)µ¨ëóP{AÚ9=ª€ö)Ê[bkí+µCþ‹÷9"xþé÷!b&+Õ䀞›kΔªÑu® +.2ë9bÐÂåØ +ÖàÑú˜ñEîaX£ÑžÝ÷å88Ô©C«ÍœX2âoéƒuJ
<o§ðìw®9än¿]V0 #óì}›LÍE©[ÅÑÒ®g€NfR7RlÁþK?ŽÅn"ñ·ù Ø©.ºRò-9sx79O„pc“¡Ól u…O—5— +àk` +p®jºÜø5nUÃÐjYØUùöèe› +×dß¿tf{)lÚܘÉ9 ëJJ‘ï<5¸C—è×åyu10(›z͈õýÖ¯~ü\õÚçøÚ¼aÓ‹fÓÊ9MâìÂXCû˜Ùè2„öõsì!¡PcDQqì ´ØI‚…Öyt“•×Gý›I†rqN‹¦´ì€zšcRÚþÒ™œ”^²¾Œîµ6-²©ÎÌ ƒÔ×õœ®±¼- +´Ê»™wy0ªæ67Åæ÷ÓQÂ<Ž<Ó·¶î-*®·7Jû›æ!Ï’¶8ñ!ôµßŠ!Ó²Úž[ãÔI±#“e•cݨx”íçÅLÁ {bC›@Ʋ•%ì(àÕŒpOß> +5¬Û¼ƒùÊ‹Í>¡ØŸEä¢ô±sáÀù.¯¯ÆQê‘‚êÇR’Üf~Çýõoèm×jbàób!\У<‘´¸0-׺±Jó©Ûú4]NyEk¨
ñXÈ£o¾°=)sž·¥Zt$ÑâÛ-S +¿©f‚°Á3@.²neµs‚å\žßŒ‚·f{ÜxZm |mjoÌ;d¤¼Þõí©´‘eþoS}àK˜v÷ܼX'¶Vk±¬©b•/ª¥ô71©y/^»¦Œ!R®ð‡¡œK¿åV;”¡N +÷~CEJWžP +ÿ·ÛïÂæ²Çëy¢áÛýñûŒÄCdúȆk¥üüáXð:cƒ³{âö-§JUEͺŒÚü¨ºNs$ >K¥ +x" +(÷((eä’˜Õ–îaËnPä(¹ê +ïÃqÁã·—«Âà[%¨}TkL˜´îîŸ0M%Ý2IÌá¶ÉÛ +ØÛ£edükÚ9 *‚•k¿‚¸‡ªÏ@)$O^MÒ˹ +2y™ºDJa\´VœÔWi»?¦ø(ñN/²æVM,%Xnç¿}ä³ocµa«9¿¯“br˜c/ h
RéœY…\ óãÀ*¯êºðû‡˜ »$s‚”4»zäÀ-5÷ºŠEã¦j,b¹i¢ÌõMà30kÜÝZ±Gh°œ] +¸®-M„¥ŸªFBzH;1
ó‘6ìUŸ:†k›T~½¼N°¦?ÖÙS ¨ŸÑeH†ÈsªŠž«‰dz\^ýXØ_²ÑR‹sØŸ¤ú…Û€¿†c÷x^¥Âܶ[ BŽCÑ8DÃT0£€¡S\Ù’.õ¾ù<éh"(0tZÈ‹ì¨(FÕƒ¼`wG*ƒ—Fc?JCÄViú·)˜I7T±6¿ô'ÌcÉÿüÑtAõ!Èž`ØÔIOØ\âwË—Hq \f[¶)¤Ç᪴4å nÎ'àø!Ô”¡Þ†j‘3‚Øÿêgg×ìÁà"û¢|× 'ÕÎâ¬>õc¼ˆ]¥Ž¥+],S=õi¾Sç|[Œ´è-œávg¬£A„õ.œ‰¢æm™{‹~TN·bèI7q&6Ü/=cŽÐÑ<• û[’˜
¾–õfË)adËÆŽÍ‚/‘kYÐÂoÕod2\}Pî@'n…I|.ðêRDŧUÜNâõ/³CRª¿Ç«búO84…‚½¡RD=-‹Ï~º J
ÅRƒC[.pEQn +ZºÆ¶¹§jyŠaÄB¨ñÑ}›*N€³»Ò9Éþë•òï-‚ûyê[†ùé
¦JÒ™ÙÑüî@Ç“-A`åÙâ²G ¾Ð#½g§
?ã›ÒX)gÂS +=뙂ßñ¶œ¸,@?Ñ\¶bi±FѦ£>•lù÷&Ðò`c|t4+$l“:ÚçŒXß»Å%t“EÃ{wØ6 +¦=›%7žu^ÉRÔUIc±¥¬ö»QÊùŽå”;/ÕÛ‹ßȯc6E`¥yÁÊj¼e¢E3B€ª½;ó}Yöý»mD:ÐÕ .ï…O»8@Ý$I#ßCz¦='ØQSš£ÖàÄõy¬¿(*‘J8œ@‰:¡`S²A¿YíÚ£¦é$²É+3*¾îÆ~o€¡3\áoaýöθ± ň'_)Ž4«úÓvŸ;q4Ë=#ON¨‹x”v¡¿…^¾ã¨~»™í¼' tA¶S}º_®›ôh^_±BYŠ{ãK6Zkñ´ÊnÞ°üÚý1»œžF[{´Ÿ\ +Ø÷ üç3ajɸ²g¨ÖÑÔg([IS7êÌ.^’]!~ÊÛ‚X©µoõ“Ü[UæjTáºeÊèÑ?M¹íÓÛ§f+µªjßJŠà-Mý±¹ÝõµaÔ‹K6¿ÑŽËä“ï=$æ.ãê7PIh‡aýÞDZè
eÎè+ž,:Ôêq#dÄüÌ*ÖáT)è–Hˆ¬ÅÓAtêZÛC¡@:5ÖZS`·ûf7¬éz0oÇÛµˆ+¢††ð(ùP2‰ƒ²„ÖëÈ +!·½o$á7TYGÈf#‰>^wòPµÅyÍ)°S{±<5–r|ñ‡ð€bÑž†k}(¥½^¨î³H–¨Â {ü(u§$Õ«é„PUŠÀÒ¬}Id÷EÓ'IçMÑ:‘b[†=>”¯¯©$WnÖÝ0%ÍO
AÎåþÛR7kŠb7´¨6%ÚR¦]A-é+8içä#Ú‚ð©T=ÄÕØìTªÕÍë%–q>¥ ~Hì^”û}Ѻ@:pM™i“p¤2Z³ö +iñ;¶Å|ž®>Bk‚Bâ’®û¦ ƒ«âw™Åžö=ÓN„Æ6(0€r)OuB™§ÓšîŸ‰Ò剑‚bx̦CljPÕ©™X\Z¥Å¦F¼ÏûþŠqÈïá&ÛR¶¯h«IÑ-HdQÊ +¢«hmOŠ"€y)åâíxy"ƒÈ
¿—¸1Œù<š÷ÁˆÞ)#<]SÑJ¾‘”Çï±yÖÒ]¬“µ¼ `…>…<ƒQ.¸Ë
ÐÓ$Óo
Š™ÛV•r{ ¯0Vá«;—óé(:cÁ]{ò„ +w¤þkKš}<41—Vä\ÁµŠîß &ЙòXÜi²‚%¦s“‚ÖÌX +DìiJdVÙtq:Sj+«bbh‚ûöÐëqqAôYr‹LµÐïÎ e#så5Ê› +ÝÆœï…Ôn +ôo@&Œ€ƒ#öòR-z›~I¡BàovhSȘQJYxèszd}a&+9¦…‚¤ìsÖÒ:$‚!¹Ô±:¦Y÷uÑ1C +c]‡,¡Eù]ý¢ÿH¯\ šNÚxãmæÈû(q>ï™’{Sie{Š¦„Và€ ¯ÚF×àö»Ùìl)ND3€C‰À¦¦7Àº«Ð¼¤Ì)IÏÁQT‹ë¢í5›UÉGKži^êlSź5É®
ùw¼@ +f“Ù…ÃÝUfa‘äöõ½]Å?ª,¢[+ 2€ cµj·ºÅ¤"Ÿ¯ú}‚C •jÄ7*Z¯5Ø¥†N;@õ
;µ¢ðwŽZd’í”´ô/àƒ±OØzŠ9Ü>]A[×0rš§5¶P>(ôíÁÞ‘°ƒ2ßC5@Z*ø &
ǘlbÖ]VßP€;+À[@zª#1KóŽ¡‹–Ø('Á¹±:Ö¥‹7CŠ®ƒFkáùÞòn<¡aZÆP.ÖëÂ@ãÕ‘±ngÓÓÏ:À˜Ô‚+Ø 2˜€W^C¶õ=4{XÅ qØ +C6ñjÿbdIᘥèô¨…€'ù2‡ì5¢*[–M.¯§ªÍ’Rp‰œÑh©ßF‹ÎJšb“ƒÄ|räRæ6ïA.ÔÃÁ–±1Ý;S°¸ÐXv¥ÑJM‰Y—Zë¨da‹Â- +ÐÆo §ðzòª-Rû ³š7gϨ¢Œ½ÁýF1KÍéIAñ˃ØIeQ¨ÚäÞÊ_–Í>ReZ‰),ÉŽO8çkÇõªá¡…[´$°Ýq.>ðhšˆð³ä¨N +æ0K)´zÈž:qÂ>’ìsh×Öð"Lâjˆ4xRP½qè6sw¨¦EPŠÚÉwe¨½*VË€~Zd®=¤)¨ù‚›C´#¤žÖþÛ¹›¦GeKÇJ-iØESD" +Ž.w“wñÛ†+y”.NÙÇÐo=¸[±˜]ÞÄò|‹>åì$ë–bmˆÞDµ’" +èsɤãE58Œ³'û%uzyØ4·Šu}8%p„@ĘÓmÒ‚0j-VM´¤/(O»*ìõBô¤Y‚¢Ä\g±‹“Eßv{Ã8?Y˜7.´ˆ•tßeåÊö¯?ÿ?W™§gŸÜ>LOž²ÌÓÅÝÍ›»··—Ó×ÿ<sœnî.?¨ËŸÜ +6ñ,ãÏ…$@o`?ÀZH¯ušùóìÅñüú³sŽò-sb¿üçó‡‡ãýmy}uq|yq~Í1?¾¿ºüãñÝØvùîpƒ___}ýp7øË»7Çÿ9ð£oßÜÝ?|7„#œÞÝ]ÿpÌíùW×Çß^]¿þÞEÛïW&åËn/_¾»ùêî:¾×/O9Áíyòñýñx;=¿¿¿ûæéÉ[þÌ´ì<ý‰¿KÜ{ž^½ããüð/BßLëôÙô·¿ÏÓ%ÑW/Tb•¨*{’-:¤ø¾þî;-ñMŽç94WoÝ{}üõãç>û‹oòa~øÑ€Ÿ~=ùüööüæx9½¾?¿¼:’ç-=«AuË~ÏÇO_Û¹ ]þø¿Í!½ÿ¡%U•ÌÓtPÏk^Ýœh7öãÿ?5KÕƒjůšíô"°b£ßÿÿ³v<ýY;.ø°¶PÅ-$¡OmÞy:=ýõÕ¶×q¿€ÿp^H–šûyâ.ICˆ
ŒäX-7’ r)ð‚ØŸªžË™]®d~ˆc §wæLOwuw‚Æ•æDÿ鳩ª¯ËGksxÍ®½€IÈ.í3¢Ðt!Ñ@úÆdsÄcpæ\“5-ÑNö4)â»ÑŒ:¹—GwFÔkð¾»~–º¼âÿó-”|_ùão²{(+Ã4ùl?¶oä6ó0Uî`\A‚õJ×N0þ0Ô‰Ê#¥€ÐøÁ8Ç/ôb´ÛÉOÊÆ#¶ñî^Òøˆÿ±½¶Î£¦³ÏÒL~:ù–È|úæv3Þ.üUd +Añ—ø,M •NƒibòņF¥KžeY|TUà°–¬‰oõËœ|?ƒ!b +Çr¦ZÈR´¶àBçâl +áÆ
sÐi4è¬È”Áð]ˆ¶øèJuwJ¦Qe™r1CbÝ´?VÊë +ú7TF‚¯Înîßm§Õúöö#Êç7ÓòáùñÃôˆük™xÞOÿúùä;|ìC…½¼<»8¿XÚ%ØKÀäºT{ÿ¹½Nü·tδ¿ÑìðiȽ£\« +&°qƒLÄA2•SÕfIüxÖ¤@òÐLh@†œq8-°½Â:v“f€'¸NòÑ„)ê&FHzæ1¤°"RåušŠËe9
Xv±˜1flÄv†&éŠ4YMz㲡2<ì9Ã*zÚ50 'äî
V7GÇe™V²lïl눶žcÕ,s@»¥½æÌt;z…¦.·ü‚¢iû +½yûÂV(ý”¨þæß³ŠÂàŠßý@–0ñûAëTÆ´dƒÙ BYãA6=¶HœÍ©;ê¼å‘ +Gu>²¾‚ĔǓ¸U¦ ÚNgÌÓaÍήi*2”Ÿ:€È$¼ÛwQµcô1fqØL†ÝEtŽ cÑëÂðéÃ:òæƒ'N°/¸à›®ÛV½µ +´¼Îã¯#¿c¸îÜè#µ‹õw”uØÝüQ>¶ÔËK»²—QŸVK{áÎ/¹Øçcgÿk>†™‹æýE>öã…Grx=_³\žm6ÏwW÷OknÝ»Cñ‚ÿG²³ûƒAyspðpÞƒ1½¹Ú®o§Wç×wÛ§íÃÕî¦ÇÏhíç³ÝûÛíð›âpª¿]Ý?ïnvÛÇÇþû_§Wù¸ i]éË—‚º¹/]jsL_½Ô¿ô÷ªªÇ±:ýÍû]¿¹ ÿíîñi½Ûl¯Ï×Oëë·ç×?®?l9{›¯/~ÝnžéàþËÛ6(¤éû‡ív÷µ"ÑÓ›·»'ì«-ªÑÜ]mß||z,üòÛçmù°y¹ñâ×Ï÷Oó5½Yâ…û{vëw·ÛïŸ?Þl[Çú[ÕõÅîæï¿Ý½»¿•µ»^ƒ]µ¼‚;ÈØ?·›§û‡éçõæÓ´\ïvۇוºëéý·PsMjž@«CÊ2<èþ-ÊE±xmã”0ùL¼*Áž0¥x8hR o[Ì&'28“0(|ÀNT‚9Å8ĸqüÃs¢¢j1/@I
¦iâT–ñ:£5‰©öhu˜À`3\' +
쯋ÞïÙy Nâ°v«æ .a`ô-ä^–3o6Dp3ž!I`FCR6LVrCyŠ8/¦Œoo£Ae{¾œç!DHZ2d4B¨ÿò"§@âälœ°Éâ>¨ +
¬c +B²Á£ +t1â·LÅ.•0ñ§ˆ¸+Š"<Õ{Epé8¢aÅÄG0ø&øI·qÆ ¨O
†¼'’ëÐún™þÙ˜a¹zÔ0çȇ×`8=‘¾KŒš† )#Cƒ¨>æ+¹(†ê‚ì==á‡Ï–“鞌=äEÇ<8ˆSô~ÑË\MtŠÔ
ôV‘Ÿtž +ÂÀ»‰¹ú$ P¸ž2Æ•GÀCÇs>;Ñ4
Íð‘(1Cóäß Ìþ"bRQT-SxºA§á¡–ÍpZUWM7ÖQi3u@À`hóêd0yß4îI@¤›
õ +ñ5bÓc ÌHÃ×Zø[$ЈFàáÃ0XpÖ鯫&ªû2Ã)#Ê@M€¶Ág³ƒ)OŸåhH¶:‚Þo˜§ÍI7)9_#V@§Pö¶¦Èµr¤~Öx܇ö‹©z)x}[Áé¿`ôœ†Œ.™AMCtž +(Øl +„ÅÉmdÄŽ*Ö¡&€~†É¿Ððe]«wŠH{RýVN"ÕXÖ&ó@j£½.•†Í^ +vлMtj‚ÅV݃4díå:•eÊîF²,ÓDòR,ö²éÚåV )™Üü<o”ð¡^¼«ï€ëè _ñÇ&2&[µà]*´Ÿ»×ªž{4Ø´Ñr¾ÞÀú|ǯíÏ_8íËm)ÆÇ|ð\¦ö‡]Üeæ°ü¨0Vy.‹nY(Yý÷±CÒª6ö’@©à™´tiO¡kË|)Þ/C•ôÁúªäS*ðv²ß°Ú8Ïv×µQð¾Z쵨„æ‚<‘p§›Ù¾%F¢Û¢ˆ ä|Õä¡‚:t#Ž
jÊÓyÓS +H‰ìWkOÙýýî$…æ¾É'{ìXÎbí +ÖÉFQ„Æ0kM<Žù÷9§î<z¦'ÁVv•X+/tq«ûVÕ©S§FMöm.6ª£ØšmP9´)–@ƒ+ÉG•c}CÔÉ[5jz¦“æçæ7ïš»F«—Qðï§Ó&Ä6 +Ú§®hðÁU“Ó6)L‰N!E«Bh‹Ëòævø˜Ém*®¨#£[c-¼aqÁ)kàTpu8ùR̶ÄZþ&¦ä<ŽÄVgÅà³<[FÉgë¢ø¬L©-qëLj“.[Ï>»å£qÓñqmÚuœŽ\‹äv\`:ä¸u$Õ´®-¾ÕV³ô“pª~~$-±$·N
¾X¹á2WGºÙ‡¤ÖÙt¶u1t2ns›m¤Óº*4iÕºn0$æsYY>úhªËÒà‹¶¿[g7Ç‘Ùbç¸iu +ëãÆ·&¹¼zL¨÷·'d Fµ†U"øÔÊF»°l™m,™%Á/ õãOW¬‰ø%ycRT_¶“\"p×&ƒ6±n“5ÜÙ¼umHÈ·
~¸¹ø°.¾˜yÅpS¬÷KàŠ—³›‚ÖÆØ-0î›b§ÀºÕ9à£= +*ÞgÔüýù² Àq6h[ZoSª
ZbÌÕTŒíT¾´Á§Nœ4ðõ8®åðž5蜣›{{T&§°Æ3(€¶ÈŸ0 ž†l‚gô(¸×Ò9y];ncsQ»Ð9åÚìst[ç*‰¬mèºHŒ
Hµ©k@c1]'˜rÞrB€%„-C1fÕ¨MhKµŽÔéæMÙñ£ïÑ¢'->½Îh´¼Éz@ntåµ2äk“¤Tµv0èÀ®]Õ7€q–N+ÓŠí;†H’[?§Ö_t| +‚E"S2š$¥ƒ—ñË(1¢`ñ2†%Ê¤Ø t°H:oôV"@ÐÈJFÕ¼³ +/®¯gÛgæã÷³Éë»éå䶞ú=þ5eÙ8ªÏ_Í/Ïî¯Þ_ÏäÙŸ¿À
æKËáéõÅÇÉâ´Ùè3v
2‹q +
#CÏHÐb÷xø#~ù;LÿP^½Uý›V—u.rŽyp¾â|5€ ‰bÉ$š\Mà„AK†œó¹9t£ÍÂw.€ïˆzè + )¨ELh©°šy‚ã°¾hDEFà'¯®·Â=@Cm +)B®Di|å7 Çò¦d+Ñæˆ[þ¥Ÿœ“æˆ7M jNm©DŽ@/9ûTâ¢i÷Ú'
VLÁшŸÃËÙQGÆ¢n«Ö +²ðOÃDÔ”Ãp—!½TxT`(p™£F¥ÞD€hüvDAR¨+Ôe#• ;LSÕKÆ ÛÛc‡$}nž©ã3tÑüƒ:|ñâùÅÅÝÕéõBÚ¡ƒ` ?Ùóã.'"Ò€„Íì tjE¯J´‰á:ƒyØàŸ)Ù*h=³™¹BB +Q°ªU»™»¨nœ±™W×né]îªñœ.ÕÙµHßqv!;YcM‚ã—4k?’÷xÎ~˜$Û +v¾Ï[4 +Ö¸]Ó ME;1a-©{©èX\'hˆAú0ï0xéÚQ?;'CMÖB/• +UhÙn„D§ö¢®Èߘ' !g*_X†„n)Z»ÏÄR4Œ\› ï‰ÎèØûYÃûžàÊ6ˆ5àâ”L
é*orƵóñσ…ŒünBkz¡D¨€’‹#ðÐÕÖ+]yvñd¸ybÆHÏà7çA¼ +RÂá+sìn •vöû›©¸·+À¸g[@ÁúûžïÏŒÏÖ€šôö@®·9À¹¿;à`o{Ûîþ°çÓCÆ%[ľFÙ³Yˆññ»#èmÕøØýìo4>aÇ@Ðý-CŒÞ3ödëdÈyTk´}U&ðmW)õ¶™î#‚¹7áîN"²àdÈ$ü“ýªÝm[G¢OàwПRà:¢ø!QÛ_Iš{±›Û:HÚ‹‹E¡Êr£Ä¦›nÒ·ßJrìXr¤¬¬¬6JÒB"‡äpæÌшûæ…ZSi;Í +:¿Ó®fyÚ°˜<î´,G5Z;Œí´.ÈyO›Öíöåoßv˜Ý#št¿¤K±¿~üóË?>X·Ž®’ð.ÒßØ·wÖ{Ó(o`“yÑÍ~Æ#•(ËÎÿu»fv®Æ׿fß“)¾|ýö)Q— +þ}¿B=8:'ß#ët±ZÞXüˆÖh1ŽïöÏYéäY0Æ?Áü&3ËÏp5Û¢Ö\[£Ÿ<ïš¾³†°Å¦½Øk_`j¶ø}ègí™±¿JVj¼mk¶(Xà•-صM/âˆÝ€Á‘‚äÞlm}v,Âäñ’`e¶(0ýÌ£E4¶ ü“»hﶩ¿O“E0µ®çæº +¶¿‚O‹ä>5[<¿êDCàÀãQ ++¬oþ{è:Æx¨cb×›Ù9À¹Þ“ Ãw½n›¬€¢z¿r1`´/J3(èÔÌ-n[ù/FʶL¸@æè|qèJ<ÚdŸR¯ZìÖÚ)§Y§¶9ô‰[”<ãLkI.ã[p8%ÜÒ€ +Q8ê=5ôn¦ÜôÂP@кy¨GAÑWºÌ@ R5/»ØÓïOÙ
YáwÍ
g´µ¤ia>u†Ál±ñNˆ'9sxÍxÔF†ŸÎ +ÐÔc˜ô³Þ[šSÓ,Ø +§~íÒîó9ô{ÇÜ?$Ÿ7NfXi
ÅVBYG_–ÑùÏHÆcƒ/<â]£bÜ„í +×q…S¿vi÷‰Ûî÷-l
Žä©§Ã¶°^‘V "ºQ- +×q…S¿vi÷ù»î÷l}ŽC½ÔÕv²^‘v ";Q- +f™¤ 2UfŸ„¨]r‹ˆdw‡k„w/§¢³DW±®²´… —ÈoY"3.)GAìùŒú9æœ1æ–KcÂ<0©/E÷¥1Áošlñ›–UFå»Ô,©BH8Ò㎄Ç\Ç3˜ žtèLøÄ—”ÖÇDQ6Äs£Édië2Ð7û¹-5D»RZÛÚkÍg{CM³:¿UzŽ7ç9ÄgÓx†C€~>œL–º"Þ{ïyœÀ3•ZöPZ»Âu\áÔ¯]Ú}>Ç…û}ÛN+RW‡ld½#í`Äí.FDµ4#;›bÚd‚_© 8@¢öùC®Ð3aÖì•Ü«ì`z +f™d 2afŸ„(_r‹¨dw‡k„w/'£³DW±®²´…. WÉoY%KÎ$½wìPép‘¶¶”z¾W. ó8gõå±è¾<&øU“-~Õ²Ò¨|—š5UŒ æO"&É 0˜€GgOËä_RZEÙ<Ñ&“e¤Ë@ßì'·ÔíJymk¯5¡í
5Í +ýVé9ÞœçŸMãZ\øùp2YêŠx'r?ÌTjÙCií +×q…S¿vi÷ù»`¸¾•m£•uüÔÕv²^‘V BÎBDT@3²°»N5Æ›ßWê +‘!%s ‡›2€ôÇTº +ùí*dÂ>Ô(búö«u©m$ïðÚleÊT
F·Öe³l6“@A‚ËÎd¡R)J¶Ú¶@n©$9òcŸ}NwëÒmËØcÆ›¬îO§Ïõës,×rø¢9¦á.îŒUÃ6Mãñ1ÚþÎX¥wš³Á;-¯Œ•mydIÕM®®¢
žíÀô˜¡ÉU]GןuA}&º»Sœ)/?LqHqÙM’UÒÚƒ×ór¿%YL-7‹LŸ„Á„.@†™È-–£aš˜ö;:ÿÙé|¾RQ»PêÒ_»úöÓ:ULw7ÎndØQ¹¦[8ÎÚ»ÙHŠhÛ›"h5¬§;ÜÚÛëðMÏè½ÃßþÀƒ)Um°w÷ÏIôäC›G`njhò¶ìðx@›—±&™—Ð˼ÁÝ“$<‘Í^dBªªéÊ»•³þG术:ú;ÓÓªÔ4¤ÇÞ íˆøÓ [Ũ¿Mé/ASÉ` +½K0&mªZKt×OxKf^m±¤‰¡)¸é1„ NGWpŒÆ¼p€}²!PWîXu¾»ìßv!9þH£í2ÓrMáeLSr’«ÆhàÚ~Ä Ž!UÓK2·ÓÅp¤ÙÇHÜ*GÑÙåñUK‹w‹ÍúWKÉÒ»’͇¿“`ùùI@FT`‡Þ=Ü_tÙHÕ!ÐMËv-Ç`_T]§}¦«j–©œ×ßLŒç¿ÁΣ.'4ë‰z¥UænÉê¿â³Á+î%ºÈÛ¡16-Uµhü›šêjîšÓ¡.ÏDr—ÃaŠ3¥ãe㇉)n!§I²J2{ÐËz^ä·$‹©åf‘Ý“0˜Ð…©kÑ0ÍVÌóƒï\…AKtá—µ¾ýNo7Ó}N_;‹m|й\y"¥8H˜VOÍñ1dIãwB A|ª×0ˆáZûô&1‘¦YðÅ0ëÐÁAoÚºêXùyù©MÓqMWZ#Ûj=a˜z¾Dr7ÝlEÔÅÞÖ¹¦&˜gíü‚sҜێÂ(QN½p˜EoÕ¤»éæuÕT}|_:cX;"þ4ÈV±iw/Ô‚fÓ»À°è¨© ÔÔl„(ú“ùas¤ iÏÁ +?{¾,é#4g_9 ý©±ÿ.M!
ÈÚªÔy–ågOº|ÑU–/HsMÊ5†Ût]Û…Œ±‘kmSÆÎØõšÇ[ÛÏ¥<k«Ùéû^7q8ä¦&§ûì¬>jûQ+ga8M³ÄË¢¤éÅ14t& +H&ñ_ÂýJʯ%™I”y¾éÂÕå•fð-¦ñéÍ[o +¡§ŠÍKòM•î3Ý8Šª_*_€tÁ¡GºšC¤óšHÄ zŒ-lT¢7Y< +Ÿ:ܧ%²ð)ó¨‘û¾0°Ëì,]fHgçÿäãmÑ;Vmš%ÎQ‹ÓMh+,üj)ŽÁ¨çŒPÌ +¥¨å™ÔÎ÷Ô€ë#$à(RGü€ãé¦S¤Ž*s5A¹*+å˜ ¤ÖbžâªâaTÒ$ƃk(XQ✚Ì\]*j«.%*¬5ËÔ£ëiŠH3W3w"ÚTª‰Š³Q•¦ì×¼ˆÊ²Tч¨ +¶èÒR[ò¨Q¨àú¥ +Ž¤oq:¯Ñ*JÚÁv¯ +hWU†„ÊfÙî°ÿ•ÇìR›C[}h¬Á^¤ëùPå¾Rк¦œMÿ¶F ÖÞ¾’ôÖó±’E +¿–ɑѹ”âži©À.MÉʪÍâk…ö¢aÆU>#BïÅ¥‚ëÞ©ì>Á)´QJoJR¼\I]«b;Šch¸9KÊh*ét¬t<P3!ûÒÛüç³ ê‹Ï¼ÀÉ«n¼OiG݉W=¯ÿ‚v ÷Ä¡é¸ð1çq®³å8ó0G†YTš=³e¢°å¬Ø<Écö¦ÓhoÈ0möºSh¯ÍÀÌúCQ¯VŒÆY±ª;ªˆ}¶é°g:Õ€ŠO6Óãm@} ÜÕ–ß›³w˜•s¢ +C«¾°w¬šW:².Zݪù»â½1ïŸÙNÑA_@·+võPð|J‰¦0¾´£„à$UÀžj8ð+†Îvb˜®öi
†Q¢œzá0‹pCã8ŒafÉ[ÙÙ–¸´k¯Q\SùVï~ÒB*æTÇÁ¥’Æ[ìec°` €?z V‡òVË#„m½M_ÚãÒ`Ïð•Î}âM`¿SGŸ¹€Ù ' }â:€Ö¢‹-É}
¦`ä/óö^ßÏ0)Ñ'aä£ÏWï/>D>®Ý|£4þ˜„¶€’ ?ÍpJ§9€‚ŠÞfD¬A¾€ŒƒÐO OFWÏÀ3å.ý“Ýǘï6~!éÍW/IßÀìÙéd$C¿ztâXºž.À˜[9,×$•ž¶Ô;„VßrÇ„´büU<S }Y»úñAQmÛ 9z8ûÀŒXnŸˆ^SøŸè íAOÌšô§ +H‰ÜWmoÛºþû†
)pëØnÒÛ´ŸœäæÎ[ÒäÚi; w((‰¶9S¤@RNÜ_¿Cê’%JiWän-P4ÑCò¼=ç<‡¼ä"";ÌRòýô§¿|9ÚaIqÀˆzŽ—ZR¾FG130‹å8Ρïì¿Çÿ¼¹~¿GoÍ—4ÔTp,÷ÙϾ懲±†—‚T›Wí¥3)ñ*ÜPIÂ3ÌϹ®§÷IáÇ_¹ú¾¨w~¸>›ß«·»WÐ^ß¼{aª´ˆ;8ؽÚOßjÿÄk¿É»· +Ç #—Xã%ÑCËñÇÙ“ólù™òÿÀRµzxÞþ‘þo®£áÿz/þytvö/fÝŽn]o†P«D>o>§Îúœz ‘Þñ)>¯K¯ûÜÙqeÿÜnœŒNÇ“>Wu’çvÜ8ÂãF 4H€k²Ò·’®)âÕá™?À¸·}n)R’s‘òèÙç=L¥ç6!&G ¾×Ž³ï´ãÏ‘Ó˜ðAÝÙÛßoHDÓ-ˆ,5Ìù\óÓN·Íæ“ ºÌ"Ð5i‚®Ô!áD¢;IÑè}ùL“ƒã‚&˜Ñ¼fOsŸCÁdö›Wãqþ»(¡£üweËKp58§‘;QÞcµ-=ÍÑ,Õ-°ÒDÒ¯¤žÍÏP‚p@Ñ8oÀâ’½zΉ?Vá.ªÆÇRËB–‡í÷)’™$x¡Ø‘¦Qñw2Û?h\ügrvø¿ñè…=fÿT™Î-_3䆾~õæUil‘½ÌwX-Ëp¼>=}uÚéš ô܉”CQGˆBá`M +†J7ÙÂx›ò¬|-Gè ŠÐB"ôûÑòÓíÝï/Ðnêg\“H±¢ŒÔ¥I| ”ëî.‘$²×dƒ‰È +§,¿è5T]Ó&îFz“'÷¬µ!fhç1¸$+ÈG„‚=º” ž¥ßss¾ZrÆmO„
KºA®!má± +õ÷Úm‡2éä¿Ý0„\¼Æç˜]žµq'J¶"Å]½¸ÇrJX¸÷·Å„\ùB +
òÓÙ+noGJï™'’׃ a[ê6yÅõ(bµ”´bT^½j{IX% +Ù +ׂû1lb† Ö]°SâÀ£(# +fÛFȯªmH”ÝLÝ»:äXÈpÒ/sœGºÙ!PëY=ìÉt“¥O•Í!g ešê2ÿ£éiçB›…°.ÓÛMO€ ”¯<²ÀÂ$l о{•ù&˜–ÊÇøÚèìk5pÙ"`eméC»mb€<¨¬ +úØ'|¤ä¡ŸwN¹}½ß˜¾Ñ‘ÅÅ0kr¿Iã€cÊŠ!y¿Š°nŠ²¶† ëƒ1k…6„#…w¦¼0Gn4£ae~=‹D +E¹”¡Ê^ ÿÖ/Û‹% œ´vbjn6Og×1åˆÖú ÁcåQ#-Ì!AT0FÃ7p’@ä²±¡ÒpcÌ›sˆ,]óêšì5AMÁ:±ªž§ +¥|Ë¡:Gƒ™JšôË‚!"¶Ë@S‚ûsvÚ;1TZÖTï%æ*dòpÀP°T</wX;5Ä:è¦=•éì)Þýl™Ff®&wý‘?“„ü‡ûê\SVIÂWàE8Š 8 +¢¨ÐqÌ9çœõ\ÿ64 +:3»ßÙ³¿öOKW|+tÕTöc<´¤“„rNŸÆúë¹~LBpi…,h1ž÷Óp<î´}µ:þk^€5²†Ýöïɾ•†„X?T¾*är±¨8×2H»Œ¤‹®.Î6“îĸåW>]Å +i&‰Ð˜¾¬£øz ÌÀK»¼wçÕªë¬ÙïåÊêÓ†Q‰FŸãS÷O!zßK®i:t]|ò—iŽÄ·qò)q**ׄvÏéæ'1‹¯…ÐÆ—,$=ÿìèÒyÐV1NȱŽ¦äg¢W—\—r¤há8ÀÙƬO}]lê€A‡R”Ï¡…¤K5©òAÃ)¶^*`¤fc¦dßQCcÖ%ÛñÎEÓBi]ŠNbÈÉG.¢Ÿñ”Ì'¶)å¹à—FHX¸ÎÁÔmx*%ùÃbz™4ä4“lb¶ùè‘|åAÔЉ€ò4 o@z’hÑ¿Eí@êPÃ^œŽPj3åkâ¡üYÝN@Mêe¦„µê|Q +7&ufØ2<bÓ"!÷¸O=Ø+‹0;|~™Á{¬^‘µö”9éÕõ®£}±â¤¨~¨zÆ°ø)1’=‹|'ØZ'ìuXdÈ+Ô½ÂÌeëäVTe+ájP63@û¨u˜ª4Ó2”ƒEµwA×^a¹’®tbZ¯ðt'Ü|A)»k¼ÈþÈHÿ„ù)$Ìvžl_+ÌpØaRŒÔöö'kuJ]¦M/`ÑHa"œ‰¾gÎ${K»„,F;a<•l˜éôjº%1J*Plè
'Hf~]©|`s›íÁîÐ8òµUË Eäñ§€“ä?~…eW€îò•ÅÊ
Ùú.@áê +uK¯¸pg)híq…º Ôhe-*È÷kŸ2·L¶´?'‘U“¯cÓë+‹¯Ôº»Øf`õŽf>P‹yTl=§µÌfH¥·w*¾±ø–Xš5ILî’'ynš/ÍÛ-ÌdÏ^BóæÕo÷±žÈ]°cOQ@Þw]¾:Rã–áG›‚dÔ€]@u²sòÕ{-bÞêÄ°Á{î2»P´¬õj³é¢p éüØA(·.Gä={ þÌ +î2×âüò¦Ù¨Ê7ÝÿkÍ6ì™’2w¹¬ê‘x¡™Ö$ˆtb¤mw±`„œEvñ² ré¯_í/1èxæ_ŒWçzªZ}‚<„]P* Òí{Ć`ï¾ÿ@
æ˜sÏŸ|IÜÎì=³f5T{~ ÇO¡kîbb9;K E‚q «.ì7AuêÔ”¤1âX/1ôLÙ3ÝFÀK.ˆ_zmâÜÆÎõ +Z6žV¶&5K0¡tF'ÆþDŒCÌZ'Ÿóûìߦ7J°^Scÿ;¿1AÃK³˜^ÛEŒé…Uð ñ«ËŠ€Ù×°!øñÄÿˆ˜Þ,ʼmÐòý¤o£x4¯þÛp€r?¦7Éóåy„Œ¤5˜}¤ÿyeËýˆjµ1S®©‚ºKàó;͗þà²Ä;8²¡P¤Ð še\.A.&ÞŽN…Ï0·
5#´µ7mLJÇÊXk§FâXñáòºƒ9qŠÿ©XË'î€u ·*‘.š£‹³ð`õêaLƃ&:½ëuE§”ìVWí¶N&阸•úlÞ„2GCÄy +j˜¦yØ™n½»|Jöº[ÒØåíÔ‹Û¦ÜA¡äGü¦¹yξé$tÏ0‘vRš»µ|“4"Ú¼ˆ”Ðìòfôê8æ¦ã¾^Ÿ™+ÐbÝA\+l|\Ba/ùxq˜§ï!žúj\™¬®5\ùU°tAVúôÝÓ^Î%jt~ýíPMÖæTýÇj¡ ^_Š²¦S+1xD€¶•FùÝõçÖ†ùE®hIui™ÑËó5¾“û
ÂE2í|öì‚m>5¡ÉÌÉæï¡ð”·{üðúÞQzÓƒÌg™ 2Ò©@ÛJâÛß›¨¸‚Öšø•Ó +Êå"g’H#nO°Ø?q»z6ñ'^N¯ÍÀpJTÄ<÷€U“Â&ŸaÙõm‹—Ñ$ï‘eæìR®‚v8‡Þ +ù¬g#MBˆóÎàòKIþ¢Ú5–Ë/ƒ#z‚VŒUáø^ +ÇÓãpð`:ÂR¾ÏlÙýÜ·»»‹@¦4(Ùªª3â¶IÆm®P§¼…¨wàAèÍà‹&‰iôùùR°I’³vÄjÁ¹íö81LÞîÆl²=g8í³;ø{DÂú€ÝNlS[º`[tálóP¹ +ÁúI}8¥Ííyk»¾˜Y¼âÜIŒ`“qœ%1Õ,ü4§B³û›ÏMi;¯—9ßÖÄ·zã +~„®² }Ñѽ=‹ Nq~sŽÙr†ø/£ý‚‹oT•è´GT2ÇøåPu–“¡1E(—i`ù¾<~÷5ðcÒÔ+2Ô¨
¶3ÙàÑài,?Ø€æjG¶¹Mt_HxÚc.HÏ)”K1€½‹;¾#T‹A²Äç )oûœä3‚ž œtðöµ"²'T„-=I´4¿£ñÉOOjzpÒÇ.÷¥âÓÈ0I§ +öÄ·Hªê\&£Sô“Ûb9ßôöЗ+÷¬âýHM™Ý¤É越jÑgîFØ>(ÇÍFØ›_§ð³ZëBãÛ~v?Ó/On{‰¨Dw¦’+¥¤r[OÎ÷¶æU¹Aû µÆíûSc]Vn'åïÚ¥7̺/ßum¦Ôªò¤uÄ/,N׎ߣi‹óѲ€®Âs:Ø/sl*X4âyWðsVŸ†è·Ê?šswx"˜)nÎÖË…)( Þ7ê}¹Rà â°RÓîa
ÛkX\{$1}X‰JoÙÂÁúoŽOˆv}¸¾3LEúú5¶„\©ƒ8'WEUr_lÀfÁŘÝÃIÐýªä8»"ÖOé\¼ÃlÝ_)A•…JœÊÓ\æKXøa¹¢#¯ùžQÐÌËŒÜd„Ѫï²í'ÙÙVdÐœÝo!b
~ɨ˜PÜòÝ’G_.É_æRЗÏAð`{¿à²e0ÃÊØ?âLßÌø’y`‡‚ +Ôƒð™³7þ—fº€÷ÓìÆpÕÎ÷Ý)N'ë »Ï9>¥‰5†áK(94üûzØc…*ÖM‚ìµgð–…t·ˆ +Ù|vIƒþH2(¬§EC6àÕã¨põ€Âl=åŠÝ½TWåAíH°JE¢=sfjR8¾2yGP+‚ÖÈϦ[eL©à;y"¹2FhkëÂïÂ5YŽ&¿¶àoù|Ýço¡#eܵì¡åÄ$–®N¶Љ§ n¬ ožÊ¸=4ƒù•Æ{è=Šº˜tÀ„:p«zƒ[ûæÞ~ÉõÈói©K˜D¸»wøªÛÅJ …§G4îöHŠ?‹€ö'”ðÑì˜P˶Œeº6íÚB˦‹”—pÝ™¹¸(Ý®éÈäщ«C¬ÿ~U}}vøEû4*ߥR*Я×ÅöÓƒ 53YÇN•ñZê" óxBðжÐInÖFA+ÜÃúFö±f°±ê^‹m{h«èç¾=ûº”|øJs&¬Ëm*rƒÇg{h´ß§„Õ´…º„Ï„§½gží œÆckÜï¤FSåàìÕZ¦ò^Ñ—èkPnøèæh?䳜kF³†¼¥ÑN¸2T=¢!4`:pÕUåx{b +Ue"k@9Ò)6šý:´Ð§«·…0¨¨=€
ßW¥jH‹@‹Ç»RXqÅuhŽ~ +Y +aðmê'
ëIŸ4(¤X¢Ì„R¨¢äEùœ¿5ÌUcÛ´qÒäÒ°E^—,κ£çÓøí¤*=b"§‘Ö~‹Þ¿¢¬kª2ÃO¦õ®òƒÒˈ¯Ádñ<¯˜°XãIzÚ5¬ê.y·+ãÒÚõng׋âK5=BZ“L =C[×ó‰÷¢Ø½=σ%ÒZ'¥ƒ¶.ž?L«E±¸ûÙµ\T_'+D%ÓSuë‡÷;eù¶GnÎÍéíJß)Ö[Ô:’]¯r<¹SÖ7|ÁÐ֟Ξ³±ÏðIƒ´n/‡ +Òº{e +-Óz§Ø~'pÔ×`J‡ÒZc¢Ü;Z1|)-:uÔ×FTG¤µ”o,D¤µÆä\4Z±<Æxüi„5V¡JÙÀ9æ´ïÁb%»-5gX‹áŒuWVº³r oÚ£j4ؾ½©•wX4êÏÿ‚Öƒq¦1½ôdµ©ÿº©cÌÑo˜E,TKõÁ
sÛ…C>° ß.ÂáM»¿]noz0xóvá\ùã;„Œzî97ýçf½àÃÚ^Ûð¦sµ#"¤ä÷Ø÷(.ð>2ž;²É.ü :¹JÊiÝ”[ÅåÀM¬vÓA@ãnxÏÚC£ý +‘-méÇ®cÕn:H(<ò–(èêíxø6Ù,t® +‚p›Pû¿@Y‹¼°û¿DZþºúûÚíõ{#p–ABµî÷AÐýOL(ˆå&Ö1 +V£h(ìþ‘Pûÿµ}¬,ü´îEBµžÂ„½ƒ…=E÷fUÅÔ¯ý2Â_¬ö¿yorÚK×{ñfÜý=)½?ÿñ½ØÚÈ;£Z@Ì£¼Q-ï¶îÌ·‡ê´/ÙJ¸pRŒâBt-;>²q§ƒæÀ|+pø—1B¯IPTÎü™ÃÅ£OsÁ¥*ž6.Uò pÍKÌš¥ÉÀs%Ü‚
Ù +[éÊñ›t?‹õú«Ì2óêæDÖ3«<úþ{åmuÍÍÀÈäÿ[y¦0HÕ~ÖÝë¶ôøïKϤt[zXdéqü)uK£ªr-àeÊ7zé±×nR‚=Œ!0b>ÁRPíhÉ^»~C–mÔ®|ñz¡õ]Úõ)¦Çæ^»?I]~"à¼Ûˆ‰ð¤%ªëSì**ñ%L«WFK€ò*ÿU@vä¸Î½_i{Ù†×y>ó`rï<b™‚zîñV´9€Xþwa(ô)½–Éì9s®2yÁúQÎèß:³s¥éûd#ŒÀý¾›¿Ýw?ï:pVÎ]ï§×ÒM{tCýú´"ú¼MZ€Êø_Ö«u+¥‰>Á<—á"w0F8Qˆ H¼1ŠrÄøéA…÷ÿº{fzº›®žÆ?³²\¡ºjWÕÞ»Rž¬1¶¡øƒŠŸJ›Œê£,¸9ç—4%&/R˪-Íì°=µ "Š³Õ °áÂ6[â]|ýÌfKÛ~.L—z^÷-Ã…IÃ3zÿ¹™›(K†¤¿mŒI'¸{’íþc›çi XýwOx)ê]P+ϯœ|t,J 6tnëS¯ƒÕ¸ÚXøy~®ƒo¦ÒXè_ûbî…²'9D°ë7¼ÐVjã%h^6óÓ`cõ¤HÖÕ…Fl²üDÄxF˜Ñ*î¿.7×Õ¡µ¥;örE¯ |:²c2´R.7FÏc¶|+Wõè§mec´ˆûÛ}Óv@ïÓ–¤“L½Ô;ó°1ÌmÐGºÇõ–":‡•eÕ‘F<…ÜvRî‹›-õ‰'$âLòf*>, •ˆà-·ÃÄgí™D0b»×@¢þvŠOÍüæ"á9¯-˜ÒìñAñ°Š¡ß”oigñƒæsŠg¾àÝw)vÈ FFJÀ‚œªm‡aI*¶%ðl‰WîveªeY— +¸âXtÅÉ/*ñêk_ð.®…_qö²’=ðõCÞR/ +^¹†éAXœ]ä=v±Y>UdTÅzœwy_‘ÏþøZ©Ç,’Ó}Ùtø”V¯]öý€¾O'ˆìÒ+IL¥»æe¨ªÝK€þ +B}‘tK¿W‚¦Rææ<a8´'W±y·øTŠŽua1Lþ†€ñ¨`ZICèìiM2ÛÑUÛ3Óœ•>Z‹VÍA|Àád
3Qî‰V:v¶#ù˜ê|ÔN˜Á®>øš&‚¹Å aOpÂÛíKí2.ÍÎ{žøQ}&]5ç=Q÷ ‚°‡'Í/zÛ@}`~1|z®/t›°‚ÔA^¡#Ÿ±^Ö®…‘ºâìa’,>&ošLUèo:à +Öø]ín)¢Q8¿Hw‘MñŽ/ßš4b¥ì ”Å›Ð/ÆÇþÁ¡š+Ãô_C
¹ÁÁÊy=‹?jQœ½Ìv´ dìgmÁ©˜ÈhÖkzƒÑ¬×LpFs®W¡~ÌÑ",£
<Fs¯× ^æÏhÃiJF„a4º•íáû'0ꚌÑï>ŠœÑœî‹qÂ3ŽBÍÖÊmãðŒVf£d)g|úÔ¹N„†ï¢±èÜwënãÏ/)×dåe7{eo¥³*øæ
=ùÛcò¡¥Ï›ã\ +З§ä¦!MgÖD{~¾’-3B,0Í¢`ÃH ’5LfQ°q4,ͱî§Æ ®!Éh0Œ=kFÁµà8¨û£ðU=•¢cY¤•ÁâÔR¿ÍQXrê.„`ðúù{QQ}ì.x5DÍ…ñ÷Ì>D¯¬Ðßè—ÌßË´Ð0ýÕðW /ÓBï²ÀÁÂûû?™U1Ü5µ¿×S1'Œ¿g¢P-Ü^ÅH‰¿—E¡×+GW
ÕZHæÏ"´rZ8Y +ZH^A
«†NõµTQ¶ÑŽVžß3(N+kü¼Àd©h ¥]=žd¡~v!GºÛÞmÂÉ(XØífò’춷û¾\Ë#¦ewÝNâW ‹õ2¯µç$àkžCÆõm°<7ò#UH œ\‹ÿz‰ÂÔÌç6d©™/hÝ•ÂTnŒ×{:*ÎVƒBá±Z–|¼ê©"õ7óe=(5–kj1*ôWVzƒ•o×ÔoXðÇ ¶û«ÄÿééÓ‘±¯Á,ÆCtÕ:9É+&Y,û˜œ8ê‰0Lg&´’ÒœˆårÙ^]OÏ¿ôߤ—…Óƒ3k¹,[#¹·ËI$;¼kErß+w‘\·ÚŠ ‚mâ#Ùç—ŸøƒÃ=‰d¯šøó+_9«ÆiCBÊο&Ë(Zá‹\æàjïyi•Ì%«b±Jý¬;ϬýÎn´\«âî»(úûoÉbá`´^.¿E轧oô½5Žhk¹¾ÏçØyáÍ|+ÿ½%œLžÝ‹ÅÿÝÈÝÿµ¢'/%ðÑâÉÓkþzejÝ‹%JÝɿУ죻×qæÑýkæÑÇD"†wß}ÖŠ=Ï<›P +®Åeâ®ÅsÄ6ëpM¿ÜöÒDÝ—ß陹YgWjK*P+ö0¹2=hýF gJèÁ¤Ÿ+»´ïÓ–¬4Ì0›7mÐÒr1uiî-6»È' ¡Ü¾˜ûW•°«’Ì9™dÔsaù¶êÕ/ à•Ôî%K¾Ñ¦cø>õÎ,[b`&KÓÔïi‘›ÍeóX `l‘÷¥ÏD8ØMË¡æ-9ùá$ÐÑK¶:{§•¨N#ðÇáš‹dàä‡h¿¤wÉ9™¡ÿW[ +[ɪ(PIÅñ4{´ê"ùFBŽaÙ_øœžB×õ¨Wij/CÀ½2ô‚“‚BŸ~¡Æð6Ì®šÝž9®àT†C`ŒC…=ÆC{¦:†6ñ¦™f<´éåIx `'Øø0Õ«cgã¬Õ®˜ÔNI!šˆµwŒ‘ò©= ¢Vˆ¡ß<¥sÎGÚÉî›79à‡æŽ!¤ÒÿÊ°ó)je
Sú£E™(€ÏÑÁR¢^ùDgÝØ0ˆæ +“L’¦Rüº²Í”aI[> U ±4?®¦fuåS k G¬Ò¼½îmCW‚Z¼à¥º’X¨à"{‹ zË_ÌÁˆ! w„ë…î ŠÊˆa«_#†‚/`¢.<jÈ+-"†þU +ÅÅþIìfö~)öö?“P%
–óùáÎ}¡Òýs衃¹¦Š‹ýËzßß^Ãyl†~>{tµ7Îü¾èùúÅïô¯q&~¸3óBºEN«ö€ï4Úy-r–:×ú%åÔ©‹ãv/¿ø¯÷Ìsú$pjæk>§¯‰D;/êÙ…{Å.Ü•I\Œ»+§æ»ßéa4åwZý¹‹Î—OZrê\äÀ‡W§{±Ø×Þòí´jßsx?Ê„² s-u¦××\§‰îhüÊs:¢œºfÕJç—¾SãüÞä»ûY9òœ»VU0°(kç/ÔçuÅïXßÁy¡¾¬>t•,VÓ}÷;t:»{"z¾RIÎò>¨¯‰£9wIá}Ç“T$ƒÍ~º¹\ù÷j?1+Uµ{}ßÖ2ú[ÇÇ.ÊlÊäïÇŒ½êû‰/…à¼Èƒ"HðzH€8ùn¡ñ0éP·ÐU¯mšÿž<5ø/+¤òãR·¨`]ø8U§œ’;J‡fŸI}7À ¡Î|$Γ\:ºñ>‚Éo)…gƒR$P?MqsÊÏ·ù½íÙvò£ÙxЇs…"*8•õ»ÚÙVæÅ}+ât…¹,"SèiÇK£v²û¶êÔ_†Óîã(+%Ø‘¼@º1eh:á(96bvî;´€^Àç Ð[®BÁÙy®ÜÔ2¿ÌÔššÕåòd”œ4µ|LAJ”FýBS`z^EâŸp³bo'Ps’øÄÕ’×j¦SÐ9ÎcZ §+!ƒ]×X Líbp`ÖaA3w²T~•šáh#±’‰Ä…ÆHš ÍÖHÂKùKÖçjù¹ã}›^#ç>ÈŸöI•Ó»•/•¨J!àƒ†¯ŸL2kúíi”)P}ïÿ‹ãiöh=²ú»Ñ +
KòûH3Eì±øn,¤³Ï³q +& +õðµ!NØ)DEª8‘ +Sºa8•—ºheÂ+F*¢¦v¶ Qe·6#î¾ç€áGW‚vWÒ•£~!ÁÛÉgP*œú~ëM´£’Üå¢HÉ?ÎHÄ*kˆytÃhV2|jÍúeÏù-¨™ÁHÒ gH9œ-ÉædeZ‰Hœ{ÅAÍ¿Ê[¨•iÏÈm¹Ö;΢L¸Û’W&ú3`‰¨ +Äa :{ +èP÷ÜËoæGûéx Cº"7LýrGì +á…l~34o4qcZîFËÁ瞢Üî¼àž°hÒÍnq6é¦RÔÛe°üN¥v”VíO£C¡™÷ƒ*®eô·ŽOWn–P¼ªÐšñèZk·rƒÁYÀËŸzêN¤9b
Ñ! 4·“9óKòß$ðKÂ\ν¬ZàßRÜœ#q…S‡jeö?¸s'®äjó;ÕM•—m5Þ +M±)Ä”˜>b¾ •Â÷XËÙ}!{lðæðm‡¢¬Ìê+Ú±gFƒU’c'ô:VH ëmKhç +0000000016 00000 n
+0000000159 00000 n
+0000061869 00000 n
+0000000007 00000 f
+0000197445 00000 n
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000197515 00000 n
+0000197546 00000 n
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000063623 00000 n
+0000197631 00000 n
+0000061921 00000 n
+0000062281 00000 n
+0000062415 00000 n
+0000063933 00000 n
+0000063810 00000 n
+0000063200 00000 n
+0000062481 00000 n
+0000062639 00000 n
+0000062687 00000 n
+0000063447 00000 n
+0000063510 00000 n
+0000063694 00000 n
+0000063725 00000 n
+0000064007 00000 n
+0000064367 00000 n
+0000065333 00000 n
+0000078233 00000 n
+0000086910 00000 n
+0000100337 00000 n
+0000117961 00000 n
+0000133851 00000 n
+0000137649 00000 n
+0000147743 00000 n
+0000173928 00000 n
+0000182126 00000 n
+0000197656 00000 n
+trailer
<</Size 57/Root 1 0 R/Info 56 0 R/ID[<9A57AF8007714670AF99EA4CDB557920><20191AD98DD549F08F8DFE656D492EED>]>>
startxref
197834
%%EOF
\ No newline at end of file diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h index 1d61605..0db88f4 100644 --- a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h @@ -17,6 +17,7 @@ #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_toolbar_view.h" #import "chrome/browser/ui/cocoa/bookmarks/bookmark_button.h" #include "chrome/browser/ui/cocoa/tabs/tab_strip_model_observer_bridge.h" +#import "content/common/chrome_application_mac.h" #include "webkit/glue/window_open_disposition.h" @class BookmarkBarController; @@ -45,10 +46,80 @@ const CGFloat kBookmarkHorizontalPadding = 1.0; // Vertical frame inset for buttons in the bookmark bar. const CGFloat kBookmarkVerticalPadding = 2.0; +// Used as a min/max width for buttons on menus (not on the bar). +const CGFloat kBookmarkMenuButtonMinimumWidth = 100.0; +const CGFloat kBookmarkMenuButtonMaximumWidth = 485.0; + +// The minimum separation between a folder menu and the edge of the screen. +// If the menu gets closer to the edge of the screen (either right or left) +// then it is pops up in the opposite direction. +// (See -[BookmarkBarFolderController childFolderWindowLeftForWidth:]). +const CGFloat kBookmarkHorizontalScreenPadding = 8.0; + +// Our NSScrollView is supposed to be just barely big enough to fit its +// contentView. It is actually a hair too small. +// This turns on horizontal scrolling which, although slight, is awkward. +// Make sure our window (and NSScrollView) are wider than its documentView +// by at least this much. +const CGFloat kScrollViewContentWidthMargin = 2; + +// Make subfolder menus overlap their parent menu a bit to give a better +// perception of a menuing system. +const CGFloat kBookmarkMenuOverlap = 2.0; + +// When constraining a scrolling bookmark bar folder window to the +// screen, shrink the "constrain" by this much vertically. Currently +// this is 0.0 to avoid a problem with tracking areas leaving the +// window, but should probably be 8.0 or something. +const CGFloat kScrollWindowVerticalMargin = 6.0; + // How far to offset a folder menu from the top of the bookmark bar. This // is set just above the bar so that it become distinctive when drawn. const CGFloat kBookmarkBarMenuOffset = 2.0; +// How far to offset a folder menu's left edge horizontally in relation to +// the left edge of the button from which it springs. Because of drawing +// differences, simply aligning the |frame| of each does not render the +// pproper result, so we have to offset. +const CGFloat kBookmarkBarButtonOffset = 2.0; + +// Delay before opening a subfolder (and closing the previous one) +// when hovering over a folder button. +const NSTimeInterval kHoverOpenDelay = 0.3; + +// Delay on hover before a submenu opens when dragging. +// Experimentally a drag hover open delay needs to be bigger than a +// normal (non-drag) menu hover open such as used in the bookmark folder. +// TODO(jrg): confirm feel of this constant with ui-team. +// http://crbug.com/36276 +const NSTimeInterval kDragHoverOpenDelay = 0.7; + +// Notes on use of kDragHoverCloseDelay in +// -[BookmarkBarFolderController draggingEntered:]. +// +// We have an implicit delay on stop-hover-open before a submenu +// closes. This cannot be zero since it's nice to move the mouse in a +// direct line from "current position" to "position of item in +// submenu". However, by doing so, it's possible to overlap a +// different button on the current menu. Example: +// +// Folder1 +// Folder2 ---> Sub1 +// Folder3 Sub2 +// Sub3 +// +// If you hover over the F in Folder2 to open the sub, and then want to +// select Sub3, a direct line movement of the mouse may cross over +// Folder3. Without this delay, that'll cause Sub to be closed before +// you get there, since a "hover over" of Folder3 gets activated. +// It's subtle but without the delay it feels broken. +// +// This is only really a problem with vertical menu --> vertical menu +// movement; the bookmark bar (horizontal menu, sort of) seems fine, +// perhaps because mouse move direction is purely vertical so there is +// no opportunity for overlap. +const NSTimeInterval kDragHoverCloseDelay = 0.4; + } // namespace bookmarks // The interface for the bookmark bar controller's delegate. Currently, the @@ -78,6 +149,7 @@ willAnimateFromState:(bookmarks::VisualState)oldState BookmarkBarToolbarViewController, BookmarkButtonDelegate, BookmarkButtonControllerProtocol, + CrApplicationEventHookProtocol, NSUserInterfaceValidations> { @private // The visual state of the bookmark bar. If an animation is running, this is diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm index 3569a61..6740237 100644 --- a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm @@ -21,6 +21,7 @@ #import "chrome/browser/ui/cocoa/background_gradient_view.h" #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_bridge.h" #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h" +#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.h" #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_toolbar_view.h" #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_view.h" #import "chrome/browser/ui/cocoa/bookmarks/bookmark_button.h" @@ -210,6 +211,7 @@ void RecordAppLaunch(Profile* profile, GURL url) { - (void)addButtonsToView; - (void)centerNoItemsLabel; - (void)setNodeForBarMenu; +- (void)watchForExitEvent:(BOOL)watch; - (void)resetAllButtonPositionsWithAnimation:(BOOL)animate; - (BOOL)animationEnabled; @@ -325,6 +327,7 @@ void RecordAppLaunch(Profile* profile, GURL url) { bridge_.reset(NULL); [[NSNotificationCenter defaultCenter] removeObserver:self]; + [self watchForExitEvent:NO]; [super dealloc]; } @@ -366,6 +369,18 @@ void RecordAppLaunch(Profile* profile, GURL url) { name:NSViewFrameDidChangeNotification object:[self view]]; + // Watch for things going to or from fullscreen. + [[NSNotificationCenter defaultCenter] + addObserver:self + selector:@selector(willEnterOrLeaveFullscreen:) + name:kWillEnterFullscreenNotification + object:nil]; + [[NSNotificationCenter defaultCenter] + addObserver:self + selector:@selector(willEnterOrLeaveFullscreen:) + name:kWillLeaveFullscreenNotification + object:nil]; + // Don't pass ourself along (as 'self') until our init is completely // done. Thus, this call is (almost) last. bridge_.reset(new BookmarkBarBridge(self, bookmarkModel_)); @@ -396,6 +411,23 @@ void RecordAppLaunch(Profile* profile, GURL url) { object:[[self view] window]]; } +// When going fullscreen we can run into trouble. Our view is removed +// from the non-fullscreen window before the non-fullscreen window +// loses key, so our parentDidResignKey: callback never gets called. +// In addition, a bookmark folder controller needs to be autoreleased +// (in case it's in the event chain when closed), but the release +// implicitly needs to happen while it's connected to the original +// (non-fullscreen) window to "unlock bar visibility". Such a +// contract isn't honored when going fullscreen with the menu option +// (not with the keyboard shortcut). We fake it as best we can here. +// We have a similar problem leaving fullscreen. +- (void)willEnterOrLeaveFullscreen:(NSNotification*)notification { + if (folderController_) { + [self childFolderWillClose:folderController_]; + [self closeFolderAndStopTrackingMenus]; + } +} + // NSNotificationCenter callback. - (void)parentWindowWillClose:(NSNotification*)notification { [self closeFolderAndStopTrackingMenus]; @@ -516,9 +548,79 @@ void RecordAppLaunch(Profile* profile, GURL url) { #pragma mark Actions +// Helper methods called on the main thread by runMenuFlashThread. + +- (void)setButtonFlashStateOn:(id)sender { + [sender highlight:YES]; +} + +- (void)setButtonFlashStateOff:(id)sender { + [sender highlight:NO]; +} + +-(void)cleanupAfterMenuFlashThread:(id)sender { + [self closeFolderAndStopTrackingMenus]; + + // Items retained by doMenuFlashOnSeparateThread below. + [sender release]; + [self release]; +} + +// End runMenuFlashThread helper methods. + +// This call is invoked only by doMenuFlashOnSeparateThread below. +// It makes the selected BookmarkButton (which is masquerading as a menu item) +// flash a few times to give confirmation feedback, then it closes the menu. +// It spends all its time sleeping or scheduling UI work on the main thread. +- (void)runMenuFlashThread:(id)sender { + + // Check this is not running on the main thread, as it sleeps. + DCHECK(![NSThread isMainThread]); + + // Duration of flash phases and number of flashes designed to evoke a + // slightly retro "more mac-like than the Mac" feel. + // Current Cocoa UI has a barely perceptible flash,probably because Apple + // doesn't fire the action til after the animation and so there's a hurry. + // As this code is fully asynchronous, it can take its time. + const float kBBOnFlashTime = 0.08; + const float kBBOffFlashTime = 0.08; + const int kBookmarkButtonMenuFlashes = 3; + + for (int count = 0 ; count < kBookmarkButtonMenuFlashes ; count++) { + [self performSelectorOnMainThread:@selector(setButtonFlashStateOn:) + withObject:sender + waitUntilDone:NO]; + [NSThread sleepForTimeInterval:kBBOnFlashTime]; + [self performSelectorOnMainThread:@selector(setButtonFlashStateOff:) + withObject:sender + waitUntilDone:NO]; + [NSThread sleepForTimeInterval:kBBOffFlashTime]; + } + [self performSelectorOnMainThread:@selector(cleanupAfterMenuFlashThread:) + withObject:sender + waitUntilDone:NO]; +} + +// Non-blocking call which starts the process to make the selected menu item +// flash a few times to give confirmation feedback, after which it closes the +// menu. The item is of course actually a BookmarkButton masquerading as a menu +// item). +- (void)doMenuFlashOnSeparateThread:(id)sender { + + // Ensure that self and sender don't go away before the animation completes. + // These retains are balanced in cleanupAfterMenuFlashThread above. + [self retain]; + [sender retain]; + [NSThread detachNewThreadSelector:@selector(runMenuFlashThread:) + toTarget:self + withObject:sender]; +} + - (IBAction)openBookmark:(id)sender { - BOOL isMenuItem = [sender isFolder]; + BOOL isMenuItem = [[sender cell] isFolderButtonCell]; BOOL animate = isMenuItem && [self animationEnabled]; + if (animate) + [self doMenuFlashOnSeparateThread:sender]; DCHECK([sender respondsToSelector:@selector(bookmarkNode)]); const BookmarkNode* node = [sender bookmarkNode]; WindowOpenDisposition disposition = @@ -537,6 +639,9 @@ void RecordAppLaunch(Profile* profile, GURL url) { showFolderMenus_ = !showFolderMenus_; + if (sender == offTheSideButton_) + [[sender cell] setStartingChildIndex:displayedButtonCount_]; + // Toggle presentation of bar folder menus. [folderTarget_ openBookmarkFolderFromButton:sender]; } @@ -754,8 +859,16 @@ void RecordAppLaunch(Profile* profile, GURL url) { // Configure the off-the-side button (e.g. specify the node range, // check if we should enable or disable it, etc). - (void)configureOffTheSideButtonContentsAndVisibility { + // If deleting a button while off-the-side is open, buttons may be + // promoted from off-the-side to the bar. Accomodate. + if (folderController_ && + ([folderController_ parentButton] == offTheSideButton_)) { + [folderController_ reconfigureMenu]; + } + + [[offTheSideButton_ cell] setStartingChildIndex:displayedButtonCount_]; [[offTheSideButton_ cell] - setBookmarkNode:bookmarkModel_->bookmark_bar_node()]; + setBookmarkNode:bookmarkModel_->bookmark_bar_node()]; int bookmarkChildren = bookmarkModel_->bookmark_bar_node()->child_count(); if (bookmarkChildren > displayedButtonCount_) { [offTheSideButton_ setHidden:NO]; @@ -770,6 +883,59 @@ void RecordAppLaunch(Profile* profile, GURL url) { } } +// Main menubar observation code, so we can know to close our fake menus if the +// user clicks on the actual menubar, as multiple unconnected menus sharing +// the screen looks weird. +// Needed because the hookForEvent method doesn't see the click on the menubar. + +// Gets called when the menubar is clicked. +- (void)begunTracking:(NSNotification *)notification { + [self closeFolderAndStopTrackingMenus]; +} + +// Install the callback. +- (void)startObservingMenubar { + NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; + [nc addObserver:self + selector:@selector(begunTracking:) + name:NSMenuDidBeginTrackingNotification + object:[NSApp mainMenu]]; +} + +// Remove the callback. +- (void)stopObservingMenubar { + NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; + [nc removeObserver:self + name:NSMenuDidBeginTrackingNotification + object:[NSApp mainMenu]]; +} + +// End of menubar observation code. + +// Begin (or end) watching for a click outside this window. Unlike +// normal NSWindows, bookmark folder "fake menu" windows do not become +// key or main. Thus, traditional notification (e.g. WillResignKey) +// won't work. Our strategy is to watch (at the app level) for a +// "click outside" these windows to detect when they logically lose +// focus. +- (void)watchForExitEvent:(BOOL)watch { + CrApplication* app = static_cast<CrApplication*>([NSApplication + sharedApplication]); + DCHECK([app isKindOfClass:[CrApplication class]]); + if (watch) { + if (!watchingForExitEvent_) { + [app addEventHook:self]; + [self startObservingMenubar]; + } + } else { + if (watchingForExitEvent_) { + [app removeEventHook:self]; + [self stopObservingMenubar]; + } + } + watchingForExitEvent_ = watch; +} + // Keep the "no items" label centered in response to a frame size change. - (void)centerNoItemsLabel { // Note that this computation is done in the parent's coordinate system, @@ -1641,6 +1807,66 @@ void RecordAppLaunch(Profile* profile, GURL url) { [[otherBookmarksButton_ cell] setTextColor:color]; } +// Return YES if the event indicates an exit from the bookmark bar +// folder menus. E.g. "click outside" of the area we are watching. +// At this time we are watching the area that includes all popup +// bookmark folder windows. +- (BOOL)isEventAnExitEvent:(NSEvent*)event { + NSWindow* eventWindow = [event window]; + NSWindow* myWindow = [[self view] window]; + switch ([event type]) { + case NSLeftMouseDown: + case NSRightMouseDown: + // If the click is in my window but NOT in the bookmark bar, consider + // it a click 'outside'. Clicks directly on an active button (i.e. one + // that is a folder and for which its folder menu is showing) are 'in'. + // All other clicks on the bookmarks bar are counted as 'outside' + // because they should close any open bookmark folder menu. + if (eventWindow == myWindow) { + NSView* hitView = + [[eventWindow contentView] hitTest:[event locationInWindow]]; + if (hitView == [folderController_ parentButton]) + return NO; + if (![hitView isDescendantOf:[self view]] || hitView == buttonView_) + return YES; + } + // If a click in a bookmark bar folder window and that isn't + // one of my bookmark bar folders, YES is click outside. + if (![eventWindow isKindOfClass:[BookmarkBarFolderWindow + class]]) { + return YES; + } + break; + case NSKeyDown: { + // Event hooks often see the same keydown event twice due to the way key + // events get dispatched and redispatched, so ignore if this keydown + // event has the EXACT same timestamp as the previous keydown. + static NSTimeInterval lastKeyDownEventTime; + NSTimeInterval thisTime = [event timestamp]; + if (lastKeyDownEventTime != thisTime) { + lastKeyDownEventTime = thisTime; + if ([event modifierFlags] & NSCommandKeyMask) + return YES; + else if (folderController_) + return [folderController_ handleInputText:[event characters]]; + } + return NO; + } + case NSKeyUp: + return NO; + case NSLeftMouseDragged: + // We can get here with the following sequence: + // - open a bookmark folder + // - right-click (and unclick) on it to open context menu + // - move mouse to window titlebar then click-drag it by the titlebar + // http://crbug.com/49333 + return NO; + default: + break; + } + return NO; +} + #pragma mark Drag & Drop // Find something like std::is_between<T>? I can't believe one doesn't exist. @@ -1979,6 +2205,9 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) { return; } } + + if (folderController_) + [folderController_ faviconLoadedForNode:node]; } // TODO(jrg): for now this is brute force. @@ -2087,6 +2316,16 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) { // If already opened, then we exited but re-entered the button, so do nothing. if ([folderController_ parentButton] == sender) return; + // Else open a new one if it makes sense to do so. + if ([sender bookmarkNode]->is_folder()) { + // Update |hoverButton_| so that it corresponds to the open folder. + hoverButton_.reset([sender retain]); + [folderTarget_ openBookmarkFolderFromButton:sender]; + } else { + // We're over a non-folder bookmark so close any old folders. + [folderController_ close]; + folderController_ = nil; + } } // BookmarkButtonDelegate protocol implementation. @@ -2127,7 +2366,8 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) { // Close all bookmark folders. "Folder" here is the fake menu for // bookmark folders, not a button context menu. - (void)closeAllBookmarkFolders { - [folderController_ closeMenu]; + [self watchForExitEvent:NO]; + [folderController_ close]; folderController_ = nil; } @@ -2182,9 +2422,17 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) { hoverButton_.reset(); } hoverButton_.reset([button retain]); + DCHECK([[hoverButton_ target] + respondsToSelector:@selector(openBookmarkFolderFromButton:)]); + [[hoverButton_ target] + performSelector:@selector(openBookmarkFolderFromButton:) + withObject:hoverButton_ + afterDelay:bookmarks::kDragHoverOpenDelay + inModes:[NSArray arrayWithObject:NSRunLoopCommonModes]]; } if (!button) { if (hoverButton_) { + [NSObject cancelPreviousPerformRequestsWithTarget:[hoverButton_ target]]; [[hoverButton_ target] closeBookmarkFolder:hoverButton_]; hoverButton_.reset(); } @@ -2289,6 +2537,29 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) { return x; } +- (void)childFolderWillShow:(id<BookmarkButtonControllerProtocol>)child { + // If the bookmarkbar is not in detached mode, lock bar visibility, forcing + // the overlay to stay open when in fullscreen mode. + if (![self isInState:bookmarks::kDetachedState] && + ![self isAnimatingToState:bookmarks::kDetachedState]) { + BrowserWindowController* browserController = + [BrowserWindowController browserWindowControllerForView:[self view]]; + [browserController lockBarVisibilityForOwner:child + withAnimation:NO + delay:NO]; + } +} + +- (void)childFolderWillClose:(id<BookmarkButtonControllerProtocol>)child { + // Release bar visibility, allowing the overlay to close if in fullscreen + // mode. + BrowserWindowController* browserController = + [BrowserWindowController browserWindowControllerForView:[self view]]; + [browserController releaseBarVisibilityForOwner:child + withAnimation:NO + delay:NO]; +} + // Add a new folder controller as triggered by the given folder button. - (void)addNewFolderControllerWithParentButton:(BookmarkButton*)parentButton { @@ -2308,15 +2579,13 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) { // Folder controller, like many window controllers, owns itself. folderController_ = [[BookmarkBarFolderController alloc] initWithParentButton:parentButton - bookmarkModel:bookmarkModel_ + parentController:nil barController:self]; - [folderController_ autorelease]; + [folderController_ showWindow:self]; - // If this is for the off-the-side menu, set the display count. - if (parentButton == offTheSideButton_) - [folderController_ setOffTheSideNodeStartIndex:displayedButtonCount_]; - - [folderController_ openMenu]; + // Only BookmarkBarController has this; the + // BookmarkBarFolderController does not. + [self watchForExitEvent:YES]; // No longer need to hold the lock; the folderController_ now owns it. [browserController releaseBarVisibilityForOwner:self @@ -2357,6 +2626,7 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) { // A button from somewhere else (not the bar) is being moved to the // off-the-side so insure it gets redrawn if its showing. [self reconfigureBookmarkBar]; + [folderController_ reconfigureMenu]; } } @@ -2424,6 +2694,7 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) { // while possibly re-laying out the bookmark bar. [self removeButton:fromIndex animate:NO]; [self reconfigureBookmarkBar]; + [folderController_ reconfigureMenu]; } else if (toIndex < buttonCount) { // A button is being added to the bar and removed from off-the-side. // By now the node has already been inserted into the model so the @@ -2433,6 +2704,11 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) { DCHECK(movedNode); [self addButtonForNode:movedNode atIndex:toIndex]; [self reconfigureBookmarkBar]; + } else { + // A button is being moved within the off-the-side. + fromIndex -= buttonCount; + toIndex -= buttonCount; + [folderController_ moveButtonFromIndex:fromIndex toIndex:toIndex]; } } } @@ -2457,6 +2733,12 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) { --displayedButtonCount_; [self resetAllButtonPositionsWithAnimation:YES]; [self reconfigureBookmarkBar]; + } else if (folderController_ && + [folderController_ parentButton] == offTheSideButton_) { + // The button being removed is in the OTS (off-the-side) and the OTS + // menu is showing so we need to remove the button. + NSInteger index = buttonIndex - displayedButtonCount_; + [folderController_ removeButton:index animate:YES]; } } @@ -2466,7 +2748,15 @@ static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) { // folder menus. if (bookmarkModel_->bookmark_bar_node() == node) return self; - return nil; + return [folderController_ controllerForNode:node]; +} + +#pragma mark BookmarkButtonControllerProtocol + +// NOT an override of a standard Cocoa call made to NSViewControllers. +- (void)hookForEvent:(NSEvent*)theEvent { + if ([self isEventAnExitEvent:theEvent]) + [self closeFolderAndStopTrackingMenus]; } #pragma mark TestingAPI Only diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller_unittest.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller_unittest.mm index e84f8da..c6f06bd 100644 --- a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller_unittest.mm +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller_unittest.mm @@ -16,13 +16,12 @@ #import "chrome/browser/ui/cocoa/animation_utils.h" #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_constants.h" #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h" -#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h" +#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.h" #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_unittest_helper.h" #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_view.h" #import "chrome/browser/ui/cocoa/bookmarks/bookmark_button.h" #import "chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell.h" #import "chrome/browser/ui/cocoa/bookmarks/bookmark_menu.h" -#include "chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.h" #include "chrome/browser/ui/cocoa/cocoa_profile_test.h" #import "chrome/browser/ui/cocoa/view_resizer_pong.h" #include "chrome/test/base/model_test_utils.h" @@ -577,6 +576,80 @@ TEST_F(BookmarkBarControllerTest, OffTheSideButtonHidden) { GURL("http://superfriends.hall-of-justice.edu")); } EXPECT_FALSE([bar_ offTheSideButtonIsHidden]); + + // Open the "off the side" and start deleting nodes. Make sure + // deletion of the last node in "off the side" causes the folder to + // close. + EXPECT_FALSE([bar_ offTheSideButtonIsHidden]); + NSButton* offTheSideButton = [bar_ offTheSideButton]; + // Open "off the side" menu. + [bar_ openOffTheSideFolderFromButton:offTheSideButton]; + BookmarkBarFolderController* bbfc = [bar_ folderController]; + EXPECT_TRUE(bbfc); + [bbfc setIgnoreAnimations:YES]; + while (!parent->empty()) { + // We've completed the job so we're done. + if ([bar_ offTheSideButtonIsHidden]) + break; + // Delete the last button. + model->Remove(parent, parent->child_count() - 1); + // If last one make sure the menu is closed and the button is hidden. + // Else make sure menu stays open. + if ([bar_ offTheSideButtonIsHidden]) { + EXPECT_FALSE([bar_ folderController]); + } else { + EXPECT_TRUE([bar_ folderController]); + } + } +} + +// http://crbug.com/46175 is a crash when deleting bookmarks from the +// off-the-side menu while it is open. This test tries to bang hard +// in this area to reproduce the crash. +TEST_F(BookmarkBarControllerTest, DeleteFromOffTheSideWhileItIsOpen) { + BookmarkModel* model = profile()->GetBookmarkModel(); + [bar_ setIgnoreAnimations:YES]; + [bar_ loaded:model]; + + // Add a lot of bookmarks (per the bug). + const BookmarkNode* parent = model->bookmark_bar_node(); + for (int i = 0; i < 100; i++) { + std::ostringstream title; + title << "super duper wide title " << i; + model->AddURL(parent, parent->child_count(), ASCIIToUTF16(title.str()), + GURL("http://superfriends.hall-of-justice.edu")); + } + EXPECT_FALSE([bar_ offTheSideButtonIsHidden]); + + // Open "off the side" menu. + NSButton* offTheSideButton = [bar_ offTheSideButton]; + [bar_ openOffTheSideFolderFromButton:offTheSideButton]; + BookmarkBarFolderController* bbfc = [bar_ folderController]; + EXPECT_TRUE(bbfc); + [bbfc setIgnoreAnimations:YES]; + + // Start deleting items; try and delete randomish ones in case it + // makes a difference. + int indices[] = { 2, 4, 5, 1, 7, 9, 2, 0, 10, 9 }; + while (!parent->empty()) { + for (unsigned int i = 0; i < arraysize(indices); i++) { + if (indices[i] < parent->child_count()) { + // First we mouse-enter the button to make things harder. + NSArray* buttons = [bbfc buttons]; + for (BookmarkButton* button in buttons) { + if ([button bookmarkNode] == parent->GetChild(indices[i])) { + [bbfc mouseEnteredButton:button event:nil]; + break; + } + } + // Then we remove the node. This triggers the button to get + // deleted. + model->Remove(parent, indices[i]); + // Force visual update which is otherwise delayed. + [[bbfc window] displayIfNeeded]; + } + } + } } // Test whether |-dragShouldLockBarVisibility| returns NO iff the bar is @@ -1214,10 +1287,109 @@ TEST_F(BookmarkBarControllerTest, TestClearOnDealloc) { } } +TEST_F(BookmarkBarControllerTest, TestFolders) { + BookmarkModel* model = profile()->GetBookmarkModel(); + + // Create some folder buttons. + const BookmarkNode* parent = model->bookmark_bar_node(); + const BookmarkNode* folder = model->AddFolder(parent, + parent->child_count(), + ASCIIToUTF16("folder")); + model->AddURL(folder, folder->child_count(), + ASCIIToUTF16("f1"), GURL("http://framma-lamma.com")); + folder = model->AddFolder(parent, parent->child_count(), + ASCIIToUTF16("empty")); + + EXPECT_EQ([[bar_ buttons] count], 2U); + + // First confirm mouseEntered does nothing if "menus" aren't active. + NSEvent* event = cocoa_test_event_utils::MakeMouseEvent(NSOtherMouseUp, 0); + [bar_ mouseEnteredButton:[[bar_ buttons] objectAtIndex:0] event:event]; + EXPECT_FALSE([bar_ folderController]); + + // Make one active. Entering it is now a no-op. + [bar_ openBookmarkFolderFromButton:[[bar_ buttons] objectAtIndex:0]]; + BookmarkBarFolderController* bbfc = [bar_ folderController]; + EXPECT_TRUE(bbfc); + [bar_ mouseEnteredButton:[[bar_ buttons] objectAtIndex:0] event:event]; + EXPECT_EQ(bbfc, [bar_ folderController]); + + // Enter a different one; a new folderController is active. + [bar_ mouseEnteredButton:[[bar_ buttons] objectAtIndex:1] event:event]; + EXPECT_NE(bbfc, [bar_ folderController]); + + // Confirm exited is a no-op. + [bar_ mouseExitedButton:[[bar_ buttons] objectAtIndex:1] event:event]; + EXPECT_NE(bbfc, [bar_ folderController]); + + // Clean up. + [bar_ closeBookmarkFolder:nil]; +} + +// Verify that the folder menu presentation properly tracks mouse movements +// over the bar. Until there is a click no folder menus should show. After a +// click on a folder folder menus should show until another click on a folder +// button, and a click outside the bar and its folder menus. +TEST_F(BookmarkBarControllerTest, TestFolderButtons) { + BookmarkModel& model(*profile()->GetBookmarkModel()); + const BookmarkNode* root = model.bookmark_bar_node(); + const std::string model_string("1b 2f:[ 2f1b 2f2b ] 3b 4f:[ 4f1b 4f2b ] "); + model_test_utils::AddNodesFromModelString(model, root, model_string); + + // Validate initial model and that we do not have a folder controller. + std::string actualModelString = model_test_utils::ModelStringFromNode(root); + EXPECT_EQ(model_string, actualModelString); + EXPECT_FALSE([bar_ folderController]); + + // Add a real bookmark so we can click on it. + const BookmarkNode* folder = root->GetChild(3); + model.AddURL(folder, folder->child_count(), ASCIIToUTF16("CLICK ME"), + GURL("http://www.google.com/")); + + // Click on a folder button. + BookmarkButton* button = [bar_ buttonWithTitleEqualTo:@"4f"]; + EXPECT_TRUE(button); + [bar_ openBookmarkFolderFromButton:button]; + BookmarkBarFolderController* bbfc = [bar_ folderController]; + EXPECT_TRUE(bbfc); + + // Make sure a 2nd click on the same button closes things. + [bar_ openBookmarkFolderFromButton:button]; + EXPECT_FALSE([bar_ folderController]); + + // Next open is a different button. + button = [bar_ buttonWithTitleEqualTo:@"2f"]; + EXPECT_TRUE(button); + [bar_ openBookmarkFolderFromButton:button]; + EXPECT_TRUE([bar_ folderController]); + + // Mouse over a non-folder button and confirm controller has gone away. + button = [bar_ buttonWithTitleEqualTo:@"1b"]; + EXPECT_TRUE(button); + NSEvent* event = cocoa_test_event_utils::MouseEventAtPoint([button center], + NSMouseMoved, 0); + [bar_ mouseEnteredButton:button event:event]; + EXPECT_FALSE([bar_ folderController]); + + // Mouse over the original folder and confirm a new controller. + button = [bar_ buttonWithTitleEqualTo:@"2f"]; + EXPECT_TRUE(button); + [bar_ mouseEnteredButton:button event:event]; + BookmarkBarFolderController* oldBBFC = [bar_ folderController]; + EXPECT_TRUE(oldBBFC); + + // 'Jump' over to a different folder and confirm a new controller. + button = [bar_ buttonWithTitleEqualTo:@"4f"]; + EXPECT_TRUE(button); + [bar_ mouseEnteredButton:button event:event]; + BookmarkBarFolderController* newBBFC = [bar_ folderController]; + EXPECT_TRUE(newBBFC); + EXPECT_NE(oldBBFC, newBBFC); +} + // Make sure the "off the side" folder looks like a bookmark folder // but only contains "off the side" items. -// TODO(rsesek): Fix the off the side folder. -TEST_F(BookmarkBarControllerTest, DISABLED_OffTheSideFolder) { +TEST_F(BookmarkBarControllerTest, OffTheSideFolder) { // It starts hidden. EXPECT_TRUE([bar_ offTheSideButtonIsHidden]); @@ -1250,15 +1422,54 @@ TEST_F(BookmarkBarControllerTest, DISABLED_OffTheSideFolder) { // making sure that none of the nodes in the off-the-side folder are // found in bar buttons. Be careful since not all the bar buttons // may be currently displayed. - NSArray* folderItems = [[[bbfc menuBridge]->controller() menu] itemArray]; + NSArray* folderButtons = [bbfc buttons]; NSArray* barButtons = [bar_ buttons]; - for (NSMenuItem* folderItem in folderItems) { + for (BookmarkButton* folderButton in folderButtons) { for (BookmarkButton* barButton in barButtons) { if ([barButton superview]) { - EXPECT_NE([folderItem tag], [barButton bookmarkNode]->id()); + EXPECT_NE([folderButton bookmarkNode], [barButton bookmarkNode]); } } } + + // Delete a bookmark in the off-the-side and verify it's gone. + BookmarkButton* button = [bbfc buttonWithTitleEqualTo:@"DELETE_ME"]; + EXPECT_TRUE(button); + model->Remove(parent, parent->child_count() - 2); + button = [bbfc buttonWithTitleEqualTo:@"DELETE_ME"]; + EXPECT_FALSE(button); +} + +TEST_F(BookmarkBarControllerTest, EventToExitCheck) { + NSEvent* event = cocoa_test_event_utils::MakeMouseEvent(NSMouseMoved, 0); + EXPECT_FALSE([bar_ isEventAnExitEvent:event]); + + BookmarkBarFolderWindow* folderWindow = [[[BookmarkBarFolderWindow alloc] + init] autorelease]; + [[[bar_ view] window] addChildWindow:folderWindow + ordered:NSWindowAbove]; + event = cocoa_test_event_utils::LeftMouseDownAtPointInWindow(NSMakePoint(1,1), + folderWindow); + EXPECT_FALSE([bar_ isEventAnExitEvent:event]); + + event = cocoa_test_event_utils::LeftMouseDownAtPointInWindow( + NSMakePoint(100,100), test_window()); + EXPECT_TRUE([bar_ isEventAnExitEvent:event]); + + // Many components are arbitrary (e.g. location, keycode). + event = [NSEvent keyEventWithType:NSKeyDown + location:NSMakePoint(1,1) + modifierFlags:0 + timestamp:0 + windowNumber:0 + context:nil + characters:@"x" + charactersIgnoringModifiers:@"x" + isARepeat:NO + keyCode:87]; + EXPECT_FALSE([bar_ isEventAnExitEvent:event]); + + [[[bar_ view] window] removeChildWindow:folderWindow]; } TEST_F(BookmarkBarControllerTest, DropDestination) { @@ -1300,6 +1511,45 @@ TEST_F(BookmarkBarControllerTest, DropDestination) { } } +TEST_F(BookmarkBarControllerTest, NodeDeletedWhileMenuIsOpen) { + BookmarkModel* model = profile()->GetBookmarkModel(); + [bar_ loaded:model]; + + const BookmarkNode* parent = model->bookmark_bar_node(); + const BookmarkNode* initialNode = model->AddURL( + parent, parent->child_count(), + ASCIIToUTF16("initial"), + GURL("http://www.google.com")); + + NSMenuItem* item = ItemForBookmarkBarMenu(initialNode); + EXPECT_EQ(0U, noOpenBar()->urls_.size()); + + // Basic check of the menu item and an IBOutlet it can call. + EXPECT_EQ(initialNode, [bar_ nodeFromMenuItem:item]); + [bar_ openBookmarkInNewWindow:item]; + EXPECT_EQ(1U, noOpenBar()->urls_.size()); + [bar_ clear]; + + // Now delete the node and make sure things are happy (no crash, + // NULL node caught). + model->Remove(parent, parent->GetIndexOf(initialNode)); + EXPECT_EQ(nil, [bar_ nodeFromMenuItem:item]); + // Should not crash by referencing a deleted node. + [bar_ openBookmarkInNewWindow:item]; + // Confirm the above did nothing in case it somehow didn't crash. + EXPECT_EQ(0U, noOpenBar()->urls_.size()); + + // Confirm some more non-crashes. + [bar_ openBookmarkInNewForegroundTab:item]; + [bar_ openBookmarkInIncognitoWindow:item]; + [bar_ editBookmark:item]; + [bar_ copyBookmark:item]; + [bar_ deleteBookmark:item]; + [bar_ openAllBookmarks:item]; + [bar_ openAllBookmarksNewWindow:item]; + [bar_ openAllBookmarksIncognitoWindow:item]; +} + TEST_F(BookmarkBarControllerTest, NodeDeletedWhileContextMenuIsOpen) { BookmarkModel* model = profile()->GetBookmarkModel(); [bar_ loaded:model]; @@ -1326,6 +1576,39 @@ TEST_F(BookmarkBarControllerTest, NodeDeletedWhileContextMenuIsOpen) { EXPECT_OCMOCK_VERIFY(fakeMenu); } +TEST_F(BookmarkBarControllerTest, CloseFolderOnAnimate) { + BookmarkModel* model = profile()->GetBookmarkModel(); + const BookmarkNode* parent = model->bookmark_bar_node(); + const BookmarkNode* folder = model->AddFolder(parent, + parent->child_count(), + ASCIIToUTF16("folder")); + model->AddFolder(parent, parent->child_count(), + ASCIIToUTF16("sibbling folder")); + model->AddURL(folder, folder->child_count(), ASCIIToUTF16("title a"), + GURL("http://www.google.com/a")); + model->AddURL(folder, folder->child_count(), + ASCIIToUTF16("title super duper long long whoa momma title you betcha"), + GURL("http://www.google.com/b")); + BookmarkButton* button = [[bar_ buttons] objectAtIndex:0]; + EXPECT_FALSE([bar_ folderController]); + [bar_ openBookmarkFolderFromButton:button]; + BookmarkBarFolderController* bbfc = [bar_ folderController]; + // The following tells us that the folder menu is showing. We want to make + // sure the folder menu goes away if the bookmark bar is hidden. + EXPECT_TRUE(bbfc); + EXPECT_TRUE([bar_ isVisible]); + + // Hide the bookmark bar. + [bar_ updateAndShowNormalBar:NO + showDetachedBar:YES + withAnimation:YES]; + EXPECT_TRUE([bar_ isAnimationRunning]); + + // Now that we've closed the bookmark bar (with animation) the folder menu + // should have been closed thus releasing the folderController. + EXPECT_FALSE([bar_ folderController]); +} + TEST_F(BookmarkBarControllerTest, MoveRemoveAddButtons) { BookmarkModel& model(*profile()->GetBookmarkModel()); const BookmarkNode* root = model.bookmark_bar_node(); @@ -1587,9 +1870,7 @@ class BookmarkBarControllerDragDropTest : public BookmarkBarControllerTestBase { } }; -// TODO(rsesek): Fix off the side menu for new-style menus. -TEST_F(BookmarkBarControllerDragDropTest, - DISABLED_DragMoveBarBookmarkToOffTheSide) { +TEST_F(BookmarkBarControllerDragDropTest, DragMoveBarBookmarkToOffTheSide) { BookmarkModel& model(*profile()->GetBookmarkModel()); const BookmarkNode* root = model.bookmark_bar_node(); const std::string model_string("1bWithLongName 2fWithLongName:[ " @@ -1614,33 +1895,90 @@ TEST_F(BookmarkBarControllerDragDropTest, // Pop up the off-the-side menu. BookmarkButton* otsButton = (BookmarkButton*)[bar_ offTheSideButton]; ASSERT_TRUE(otsButton); - + [[otsButton target] performSelector:@selector(openOffTheSideFolderFromButton:) + withObject:otsButton]; BookmarkBarFolderController* otsController = [bar_ folderController]; EXPECT_TRUE(otsController); - + NSWindow* toWindow = [otsController window]; + EXPECT_TRUE(toWindow); BookmarkButton* draggedButton = [bar_ buttonWithTitleEqualTo:@"3bWithLongName"]; ASSERT_TRUE(draggedButton); - - int oldOTSCount = NumberOfMenuItems(otsController); + int oldOTSCount = (int)[[otsController buttons] count]; EXPECT_EQ(oldOTSCount, oldChildCount - oldDisplayedButtons); - - NSRect frame = [otsButton frame]; - [bar_ dragButton:draggedButton - to:NSMakePoint(NSMidX(frame), NSMidY(frame)) - copy:YES]; - + BookmarkButton* targetButton = [[otsController buttons] objectAtIndex:0]; + ASSERT_TRUE(targetButton); + [otsController dragButton:draggedButton + to:[targetButton center] + copy:YES]; // There should still be the same number of buttons in the bar // and off-the-side should have one more. int newDisplayedButtons = [bar_ displayedButtonCount]; int newChildCount = root->child_count(); - int newOTSCount = NumberOfMenuItems(otsController); + int newOTSCount = (int)[[otsController buttons] count]; EXPECT_EQ(oldDisplayedButtons, newDisplayedButtons); EXPECT_EQ(oldChildCount + 1, newChildCount); EXPECT_EQ(oldOTSCount + 1, newOTSCount); EXPECT_EQ(newOTSCount, newChildCount - newDisplayedButtons); } +TEST_F(BookmarkBarControllerDragDropTest, DragOffTheSideToOther) { + BookmarkModel& model(*profile()->GetBookmarkModel()); + const BookmarkNode* root = model.bookmark_bar_node(); + const std::string model_string("1bWithLongName 2bWithLongName " + "3bWithLongName 4bWithLongName 5bWithLongName 6bWithLongName " + "7bWithLongName 8bWithLongName 9bWithLongName 10bWithLongName " + "11bWithLongName 12bWithLongName 13bWithLongName 14bWithLongName " + "15bWithLongName 16bWithLongName 17bWithLongName 18bWithLongName " + "19bWithLongName 20bWithLongName "); + model_test_utils::AddNodesFromModelString(model, root, model_string); + + const BookmarkNode* other = model.other_node(); + const std::string other_string("1other 2other 3other "); + model_test_utils::AddNodesFromModelString(model, other, other_string); + + // Validate initial model. + std::string actualModelString = model_test_utils::ModelStringFromNode(root); + EXPECT_EQ(model_string, actualModelString); + std::string actualOtherString = model_test_utils::ModelStringFromNode(other); + EXPECT_EQ(other_string, actualOtherString); + + // Insure that the off-the-side is showing. + ASSERT_FALSE([bar_ offTheSideButtonIsHidden]); + + // Remember how many buttons are showing and are available. + int oldDisplayedButtons = [bar_ displayedButtonCount]; + int oldRootCount = root->child_count(); + int oldOtherCount = other->child_count(); + + // Pop up the off-the-side menu. + BookmarkButton* otsButton = (BookmarkButton*)[bar_ offTheSideButton]; + ASSERT_TRUE(otsButton); + [[otsButton target] performSelector:@selector(openOffTheSideFolderFromButton:) + withObject:otsButton]; + BookmarkBarFolderController* otsController = [bar_ folderController]; + EXPECT_TRUE(otsController); + int oldOTSCount = (int)[[otsController buttons] count]; + EXPECT_EQ(oldOTSCount, oldRootCount - oldDisplayedButtons); + + // Pick an off-the-side button and drag it to the other bookmarks. + BookmarkButton* draggedButton = + [otsController buttonWithTitleEqualTo:@"20bWithLongName"]; + ASSERT_TRUE(draggedButton); + BookmarkButton* targetButton = [bar_ otherBookmarksButton]; + ASSERT_TRUE(targetButton); + [bar_ dragButton:draggedButton to:[targetButton center] copy:NO]; + + // There should one less button in the bar, one less in off-the-side, + // and one more in other bookmarks. + int newRootCount = root->child_count(); + int newOTSCount = (int)[[otsController buttons] count]; + int newOtherCount = other->child_count(); + EXPECT_EQ(oldRootCount - 1, newRootCount); + EXPECT_EQ(oldOTSCount - 1, newOTSCount); + EXPECT_EQ(oldOtherCount + 1, newOtherCount); +} + TEST_F(BookmarkBarControllerDragDropTest, DragBookmarkData) { BookmarkModel& model(*profile()->GetBookmarkModel()); const BookmarkNode* root = model.bookmark_bar_node(); diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell.h b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell.h new file mode 100644 index 0000000..f768e27 --- /dev/null +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell.h @@ -0,0 +1,31 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_BAR_FOLDER_BUTTON_CELL_H_ +#define CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_BAR_FOLDER_BUTTON_CELL_H_ +#pragma once + +#import "chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell.h" + +class BookmarkNode; + +// A button cell that handles drawing/highlighting of buttons in the +// bookmark bar. This cell forwards mouseEntered/mouseExited events +// to its control view so that pseudo-menu operations +// (e.g. hover-over to open) can be implemented. +@interface BookmarkBarFolderButtonCell : BookmarkButtonCell { + @private + scoped_nsobject<NSColor> frameColor_; +} + +// Create a button cell which draws without a theme and with a frame +// color provided by the ThemeService defaults. ++ (id)buttonCellForNode:(const BookmarkNode*)node + contextMenu:(NSMenu*)contextMenu + cellText:(NSString*)cellText + cellImage:(NSImage*)cellImage; + +@end + +#endif // CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_BAR_FOLDER_BUTTON_CELL_H_ diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell.mm new file mode 100644 index 0000000..4c05c72 --- /dev/null +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell.mm @@ -0,0 +1,29 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell.h" + +@implementation BookmarkBarFolderButtonCell + ++ (id)buttonCellForNode:(const BookmarkNode*)node + contextMenu:(NSMenu*)contextMenu + cellText:(NSString*)cellText + cellImage:(NSImage*)cellImage { + id buttonCell = + [[[BookmarkBarFolderButtonCell alloc] initForNode:node + contextMenu:contextMenu + cellText:cellText + cellImage:cellImage] + autorelease]; + return buttonCell; +} + +- (BOOL)isFolderButtonCell { + return YES; +} + +- (void)setMouseInside:(BOOL)flag animate:(BOOL)animated { +} + +@end diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell_unittest.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell_unittest.mm new file mode 100644 index 0000000..dff15be --- /dev/null +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell_unittest.mm @@ -0,0 +1,24 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/memory/scoped_nsobject.h" +#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell.h" +#import "chrome/browser/ui/cocoa/cocoa_test_helper.h" + +namespace { + +class BookmarkBarFolderButtonCellTest : public CocoaTest { +}; + +// Basic creation. +TEST_F(BookmarkBarFolderButtonCellTest, Create) { + scoped_nsobject<BookmarkBarFolderButtonCell> cell; + cell.reset([[BookmarkBarFolderButtonCell buttonCellForNode:nil + contextMenu:nil + cellText:nil + cellImage:nil] retain]); + EXPECT_TRUE(cell); +} + +} // namespace diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h index a26aa49..fae30ab 100644 --- a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h @@ -9,55 +9,224 @@ #import <Cocoa/Cocoa.h> #include "base/memory/scoped_nsobject.h" -#include "base/memory/scoped_ptr.h" -#import "chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.h" +#import "chrome/browser/ui/cocoa/bookmarks/bookmark_button.h" +#import "chrome/browser/ui/cocoa/tracking_area.h" @class BookmarkBarController; -@class BookmarkButton; -class BookmarkMenuBridge; -class BookmarkModel; - -// A controller for the menus that are attached to the folder buttons on the -// bookmark bar. -@interface BookmarkBarFolderController : NSObject<BookmarkMenuDelegate> { +@class BookmarkBarFolderView; +@class BookmarkFolderTarget; +@class BookmarkBarFolderHoverState; +@class BookmarkBarFolderWindow; +@class BookmarkBarFolderWindowContentView; + +// A controller for the pop-up windows from bookmark folder buttons +// which look sort of like menus. +@interface BookmarkBarFolderController : + NSWindowController<BookmarkButtonDelegate, + BookmarkButtonControllerProtocol, + NSUserInterfaceValidations> { @private // The button whose click opened us. scoped_nsobject<BookmarkButton> parentButton_; - // The bookmark bar controller. Weak. - BookmarkBarController* barController_; - - // The root menu for this node. - scoped_nsobject<NSMenu> menu_; - - // The class that builds the menu. - scoped_ptr<BookmarkMenuBridge> menuBridge_; + // Bookmark bar folder controller chains are torn down in two ways: + // 1. Clicking "outside" the folder (see use of + // CrApplicationEventHookProtocol in the bookmark bar controller). + // 2. Engaging a different folder (via hover over or explicit click). + // + // In either case, the BookmarkButtonControllerProtocol method + // closeAllBookmarkFolders gets called. For bookmark bar folder + // controllers, this is passed up the chain so we begin with a top + // level "close". + // When any bookmark folder window closes, it necessarily tells + // subcontroller windows to close (down the chain), and autoreleases + // the controller. (Must autorelease since the controller can still + // get delegate events such as windowDidClose). + // + // Bookmark bar folder controllers own their buttons. When doing + // drag and drop of a button from one sub-sub-folder to a different + // sub-sub-folder, we need to make sure the button's pointers stay + // valid until we've dropped (or cancelled). Note that such a drag + // causes the source sub-sub-folder (previous parent window) to go + // away (windows close, controllers autoreleased) since you're + // hovering over a different folder chain for dropping. To keep + // things valid (like the button's target, its delegate, the parent + // cotroller that we have a pointer to below [below], etc), we heep + // strong pointers to our owning controller, so the entire chain + // stays owned. + + // Our parent controller, if we are a nested folder, otherwise nil. + // Strong to insure the object lives as long as we need it. + scoped_nsobject<BookmarkBarFolderController> parentController_; + + // The main bar controller from whence we or a parent sprang. + BookmarkBarController* barController_; // WEAK: It owns us. + + // Our buttons. We do not have buttons for nested folders. + scoped_nsobject<NSMutableArray> buttons_; + + // The scroll view that contains our main button view (below). + IBOutlet NSScrollView* scrollView_; + + // The view defining the visible area in which we draw our content. + IBOutlet BookmarkBarFolderWindowContentView* visibleView_; + + // The main view of this window (where the buttons go) within the scroller. + IBOutlet BookmarkBarFolderView* folderView_; + + // A window used to show the shadow behind the main window when it is + // scrollable. (A 'shadow' window is needed because the main window, when + // scrollable in either or both directions, will reach completely to the + // top and/or bottom edge of the screen in order to support mouse tracking + // during scrolling operations. In that case, though, the 'visible' + // window must be inset a bit from the edge of the screen for aesthetics; + // it will also be inset much more from the bottom of the screen when the + // Dock is showing. When scrollable, the main window would show a shadow + // incorrectly positioned, hence the 'shadow' window.) + IBOutlet BookmarkBarFolderWindow* shadowWindow_; + + // The up and down scroll arrow views. These arrows are hidden and shown + // as necessary (when scrolling is possible) and are contained in the nib + // as siblings to the scroll view. + IBOutlet NSView* scrollDownArrowView_; // Positioned at the top. + IBOutlet NSView* scrollUpArrowView_; // Positioned at the bottom. + + // YES if subfolders should grow to the right (the default). + // Direction switches if we'd grow off the screen. + BOOL subFolderGrowthToRight_; + + // Weak; we keep track to work around a + // setShowsBorderOnlyWhileMouseInside bug. + BookmarkButton* buttonThatMouseIsIn_; + + // The context menu for a bookmark button which represents an URL. + IBOutlet NSMenu* buttonMenu_; + + // The context menu for a bookmark button which represents a folder. + IBOutlet NSMenu* folderMenu_; + + // We model hover state as a state machine with specific allowable + // transitions. |hoverState_| is the state of this machine at any + // given time. + scoped_nsobject<BookmarkBarFolderHoverState> hoverState_; + + // Logic for dealing with a click on a bookmark folder button. + scoped_nsobject<BookmarkFolderTarget> folderTarget_; + + // A controller for a pop-up bookmark folder window (custom menu). + // We (self) are the parentController_ for our folderController_. + // This is not a scoped_nsobject because it owns itself (when its + // window closes the controller gets autoreleased). + BookmarkBarFolderController* folderController_; + + // Implement basic menu scrolling through this tracking area. + ScopedCrTrackingArea scrollTrackingArea_; + + // Timer to continue scrolling as needed. We own the timer but + // don't release it when done (we invalidate it). + NSTimer* scrollTimer_; + + // Precalculated sum of left and right edge padding of buttons in a + // folder menu window. This is calculated from the widths of the main + // folder menu window and the scroll view within. + CGFloat padding_; + + // Amount to scroll by on each timer fire. Can be + or -. + CGFloat verticalScrollDelta_; + + // We need to know the size of the vertical scrolling arrows so we + // can obscure/unobscure them. + CGFloat verticalScrollArrowHeight_; + + // Set to YES to prevent any node animations. Useful for unit testing so that + // incomplete animations do not cause valgrind complaints. + BOOL ignoreAnimations_; + + int selectedIndex_; + NSString* typedPrefix_; } // Designated initializer. - (id)initWithParentButton:(BookmarkButton*)button - bookmarkModel:(BookmarkModel*)model + parentController:(BookmarkBarFolderController*)parentController barController:(BookmarkBarController*)barController; // Return the parent button that owns the bookmark folder we represent. - (BookmarkButton*)parentButton; -// Opens the menu. This will retain itself before it runs the menu and will -// release itself when the menu closes. -- (void)openMenu; +// Text typed by user, for type-select and arrow key support. +// Returns YES if the menu should be closed now. +- (BOOL)handleInputText:(NSString*)newText; + +// If you wanted to clear the type-select buffer. Currently only used +// internally. +- (void)clearInputText; + +// Gets notified when a fav icon asynchronously loads, so we can now use the +// real icon instead of a generic placeholder. +- (void)faviconLoadedForNode:(const BookmarkNode*)node; + +- (void)setSelectedButtonByIndex:(int)index; + +// Offset our folder menu window. This is usually needed in response to a +// parent folder menu window or the bookmark bar changing position due to +// the dragging of a bookmark node from the parent into this folder menu. +- (void)offsetFolderMenuWindow:(NSSize)offset; + +// Re-layout the window menu in case some buttons were added or removed, +// specifically as a result of the bookmark bar changing configuration +// and altering the contents of the off-the-side folder. +- (void)reconfigureMenu; + +// Actions from a context menu over a button or folder. +- (IBAction)cutBookmark:(id)sender; +- (IBAction)copyBookmark:(id)sender; +- (IBAction)pasteBookmark:(id)sender; +- (IBAction)deleteBookmark:(id)sender; + +// Passed up by a child view to tell us of a desire to scroll. +- (void)scrollWheel:(NSEvent *)theEvent; + +- (void)mouseDragged:(NSEvent*)theEvent; + -// Closes the menu. -- (void)closeMenu; +// Forwarded to the associated BookmarkBarController. +- (IBAction)addFolder:(id)sender; +- (IBAction)addPage:(id)sender; +- (IBAction)editBookmark:(id)sender; +- (IBAction)openBookmark:(id)sender; +- (IBAction)openAllBookmarks:(id)sender; +- (IBAction)openAllBookmarksIncognitoWindow:(id)sender; +- (IBAction)openAllBookmarksNewWindow:(id)sender; +- (IBAction)openBookmarkInIncognitoWindow:(id)sender; +- (IBAction)openBookmarkInNewForegroundTab:(id)sender; +- (IBAction)openBookmarkInNewWindow:(id)sender; -// For the "Off The Side" chevron menu, this sets the index in the bookmark_bar -// node at which the folder should start showing menu items. Forwarded to the -// bridge. -- (void)setOffTheSideNodeStartIndex:(size_t)index; +@property(assign, nonatomic) BOOL subFolderGrowthToRight; @end -@interface BookmarkBarFolderController (ExposedForTesting) -- (BookmarkMenuBridge*)menuBridge; +@interface BookmarkBarFolderController(TestingAPI) +- (NSPoint)windowTopLeftForWidth:(int)windowWidth + height:(int)windowHeight; +- (NSArray*)buttons; +- (BookmarkBarFolderController*)folderController; +- (id)folderTarget; +- (void)configureWindowLevel; +- (void)performOneScroll:(CGFloat)delta; +- (BookmarkButton*)buttonThatMouseIsIn; +// Set to YES in order to prevent animations. +- (void)setIgnoreAnimations:(BOOL)ignore; + +// Return YES if the scroll-up or scroll-down arrows are showing. +- (BOOL)canScrollUp; +- (BOOL)canScrollDown; +- (CGFloat)verticalScrollArrowHeight; +- (NSView*)visibleView; +- (NSScrollView*)scrollView; +- (NSView*)folderView; + +- (BookmarkButton*)buttonForDroppingOnAtPoint:(NSPoint)point; @end #endif // CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_BAR_FOLDER_CONTROLLER_H_ diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.mm index 342c30a..e237f44 100644 --- a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.mm +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.mm @@ -5,103 +5,1990 @@ #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h" #include "base/mac/mac_util.h" +#include "base/sys_string_conversions.h" #include "chrome/browser/bookmarks/bookmark_model.h" +#include "chrome/browser/bookmarks/bookmark_utils.h" +#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_constants.h" #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h" -#import "chrome/browser/ui/cocoa/bookmarks/bookmark_button.h" -#include "chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.h" +#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell.h" +#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state.h" +#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.h" +#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.h" +#import "chrome/browser/ui/cocoa/bookmarks/bookmark_folder_target.h" +#import "chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.h" +#import "chrome/browser/ui/cocoa/browser_window_controller.h" +#import "chrome/browser/ui/cocoa/event_utils.h" +#include "ui/base/theme_provider.h" -// Forward-declare symbols that are part of the 10.6 SDK. -#if !defined(MAC_OS_X_VERSION_10_6) || \ - MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_6 +using bookmarks::kBookmarkBarMenuCornerRadius; + +namespace { + +// Frequency of the scrolling timer in seconds. +const NSTimeInterval kBookmarkBarFolderScrollInterval = 0.1; + +// Amount to scroll by per timer fire. We scroll rather slowly; to +// accomodate we do several at a time. +const CGFloat kBookmarkBarFolderScrollAmount = + 3 * bookmarks::kBookmarkFolderButtonHeight; + +// Amount to scroll for each scroll wheel roll. +const CGFloat kBookmarkBarFolderScrollWheelAmount = + 1 * bookmarks::kBookmarkFolderButtonHeight; + +// Determining adjustments to the layout of the folder menu window in response +// to resizing and scrolling relies on many visual factors. The following +// struct is used to pass around these factors to the several support +// functions involved in the adjustment calculations and application. +struct LayoutMetrics { + // Metrics applied during the final layout adjustments to the window, + // the main visible content view, and the menu content view (i.e. the + // scroll view). + CGFloat windowLeft; + NSSize windowSize; + // The proposed and then final scrolling adjustment made to the scrollable + // area of the folder menu. This may be modified during the window layout + // primarily as a result of hiding or showing the scroll arrows. + CGFloat scrollDelta; + NSRect windowFrame; + NSRect visibleFrame; + NSRect scrollerFrame; + NSPoint scrollPoint; + // The difference between 'could' and 'can' in these next four data members + // is this: 'could' represents the previous condition for scrollability + // while 'can' represents what the new condition will be for scrollability. + BOOL couldScrollUp; + BOOL canScrollUp; + BOOL couldScrollDown; + BOOL canScrollDown; + // Determines the optimal time during folder menu layout when the contents + // of the button scroll area should be scrolled in order to prevent + // flickering. + BOOL preScroll; + + // Intermediate metrics used in determining window vertical layout changes. + CGFloat deltaWindowHeight; + CGFloat deltaWindowY; + CGFloat deltaVisibleHeight; + CGFloat deltaVisibleY; + CGFloat deltaScrollerHeight; + CGFloat deltaScrollerY; + + // Convenience metrics used in multiple functions (carried along here in + // order to eliminate the need to calculate in multiple places and + // reduce the possibility of bugs). + CGFloat minimumY; + CGFloat oldWindowY; + CGFloat folderY; + CGFloat folderTop; + + LayoutMetrics(CGFloat windowLeft, NSSize windowSize, CGFloat scrollDelta) : + windowLeft(windowLeft), + windowSize(windowSize), + scrollDelta(scrollDelta), + couldScrollUp(NO), + canScrollUp(NO), + couldScrollDown(NO), + canScrollDown(NO), + preScroll(NO), + deltaWindowHeight(0.0), + deltaWindowY(0.0), + deltaVisibleHeight(0.0), + deltaVisibleY(0.0), + deltaScrollerHeight(0.0), + deltaScrollerY(0.0), + oldWindowY(0.0), + folderY(0.0), + folderTop(0.0) {} +}; + +} // namespace + + +// Required to set the right tracking bounds for our fake menus. +@interface NSView(Private) +- (void)_updateTrackingAreas; +@end + +@interface BookmarkBarFolderController(Private) +- (void)configureWindow; +- (void)addOrUpdateScrollTracking; +- (void)removeScrollTracking; +- (void)endScroll; +- (void)addScrollTimerWithDelta:(CGFloat)delta; + +// Helper function to configureWindow which performs a basic layout of +// the window subviews, in particular the menu buttons and the window width. +- (void)layOutWindowWithHeight:(CGFloat)height; + +// Determine the best button width (which will be the widest button or the +// maximum allowable button width, whichever is less) and resize all buttons. +// Return the new width so that the window can be adjusted. +- (CGFloat)adjustButtonWidths; + +// Returns the total menu height needed to display |buttonCount| buttons. +// Does not do any fancy tricks like trimming the height to fit on the screen. +- (int)menuHeightForButtonCount:(int)buttonCount; + +// Adjust layout of the folder menu window components, showing/hiding the +// scroll up/down arrows, and resizing as necessary for a proper disaplay. +// In order to reduce window flicker, all layout changes are deferred until +// the final step of the adjustment. To accommodate this deferral, window +// height and width changes needed by callers to this function pass their +// desired window changes in |size|. When scrolling is to be performed +// any scrolling change is given by |scrollDelta|. The ultimate amount of +// scrolling may be different from |scrollDelta| in order to accommodate +// changes in the scroller view layout. These proposed window adjustments +// are passed to helper functions using a LayoutMetrics structure. +// +// This function should be called when: 1) initially setting up a folder menu +// window, 2) responding to scrolling of the contents (which may affect the +// height of the window), 3) addition or removal of bookmark items (such as +// during cut/paste/delete/drag/drop operations). +- (void)adjustWindowLeft:(CGFloat)windowLeft + size:(NSSize)windowSize + scrollingBy:(CGFloat)scrollDelta; + +// Support function for adjustWindowLeft:size:scrollingBy: which initializes +// the layout adjustments by gathering current folder menu window and subviews +// positions and sizes. This information is set in the |layoutMetrics| +// structure. +- (void)gatherMetrics:(LayoutMetrics*)layoutMetrics; + +// Support function for adjustWindowLeft:size:scrollingBy: which calculates +// the changes which must be applied to the folder menu window and subviews +// positions and sizes. |layoutMetrics| contains the proposed window size +// and scrolling along with the other current window and subview layout +// information. The values in |layoutMetrics| are then adjusted to +// accommodate scroll arrow presentation and window growth. +- (void)adjustMetrics:(LayoutMetrics*)layoutMetrics; + +// Support function for adjustMetrics: which calculates the layout changes +// required to accommodate changes in the position and scrollability +// of the top of the folder menu window. +- (void)adjustMetricsForMenuTopChanges:(LayoutMetrics*)layoutMetrics; + +// Support function for adjustMetrics: which calculates the layout changes +// required to accommodate changes in the position and scrollability +// of the bottom of the folder menu window. +- (void)adjustMetricsForMenuBottomChanges:(LayoutMetrics*)layoutMetrics; + +// Support function for adjustWindowLeft:size:scrollingBy: which applies +// the layout adjustments to the folder menu window and subviews. +- (void)applyMetrics:(LayoutMetrics*)layoutMetrics; + +// This function is called when buttons are added or removed from the folder +// menu, and which may require a change in the layout of the folder menu +// window. Such layout changes may include horizontal placement, width, +// height, and scroller visibility changes. (This function calls through +// to -[adjustWindowLeft:size:scrollingBy:].) +// |buttonCount| should contain the updated count of menu buttons. +- (void)adjustWindowForButtonCount:(NSUInteger)buttonCount; + +// A helper function which takes the desired amount to scroll, given by +// |scrollDelta|, and calculates the actual scrolling change to be applied +// taking into account the layout of the folder menu window and any +// changes in it's scrollability. (For example, when scrolling down and the +// top-most menu item is coming into view we will only scroll enough for +// that item to be completely presented, which may be less than the +// scroll amount requested.) +- (CGFloat)determineFinalScrollDelta:(CGFloat)scrollDelta; + +// |point| is in the base coordinate system of the destination window; +// it comes from an id<NSDraggingInfo>. |copy| is YES if a copy is to be +// made and inserted into the new location while leaving the bookmark in +// the old location, otherwise move the bookmark by removing from its old +// location and inserting into the new location. +- (BOOL)dragBookmark:(const BookmarkNode*)sourceNode + to:(NSPoint)point + copy:(BOOL)copy; -@interface NSMenu (SnowLeopardSDK) -- (BOOL)popUpMenuPositioningItem:(NSMenuItem*)item - atLocation:(NSPoint)location - inView:(NSView*)view; @end -#endif // MAC_OS_X_VERSION_10_6 +@interface BookmarkButton (BookmarkBarFolderMenuHighlighting) + +// Make the button's border frame always appear when |forceOn| is YES, +// otherwise only border the button when the mouse is inside the button. +- (void)forceButtonBorderToStayOnAlways:(BOOL)forceOn; + +@end + +@implementation BookmarkButton (BookmarkBarFolderMenuHighlighting) + +- (void)forceButtonBorderToStayOnAlways:(BOOL)forceOn { + [self setShowsBorderOnlyWhileMouseInside:!forceOn]; + [self setNeedsDisplay]; +} + +@end @implementation BookmarkBarFolderController +@synthesize subFolderGrowthToRight = subFolderGrowthToRight_; + - (id)initWithParentButton:(BookmarkButton*)button - bookmarkModel:(BookmarkModel*)model + parentController:(BookmarkBarFolderController*)parentController barController:(BookmarkBarController*)barController { - if ((self = [super init])) { + NSString* nibPath = + [base::mac::MainAppBundle() pathForResource:@"BookmarkBarFolderWindow" + ofType:@"nib"]; + if ((self = [super initWithWindowNibPath:nibPath owner:self])) { parentButton_.reset([button retain]); - barController_ = barController; - menu_.reset([[NSMenu alloc] initWithTitle:@""]); - menuBridge_.reset(new BookmarkMenuBridge([parentButton_ bookmarkNode], - model->profile(), menu_)); - [menuBridge_->controller() setDelegate:self]; + selectedIndex_ = -1; + + // We want the button to remain bordered as part of the menu path. + [button forceButtonBorderToStayOnAlways:YES]; + + parentController_.reset([parentController retain]); + if (!parentController_) + [self setSubFolderGrowthToRight:YES]; + else + [self setSubFolderGrowthToRight:[parentController + subFolderGrowthToRight]]; + barController_ = barController; // WEAK + buttons_.reset([[NSMutableArray alloc] init]); + folderTarget_.reset([[BookmarkFolderTarget alloc] initWithController:self]); + [self configureWindow]; + hoverState_.reset([[BookmarkBarFolderHoverState alloc] init]); } return self; } +- (void)dealloc { + [self clearInputText]; + + // The button is no longer part of the menu path. + [parentButton_ forceButtonBorderToStayOnAlways:NO]; + [parentButton_ setNeedsDisplay]; + + [self removeScrollTracking]; + [self endScroll]; + [hoverState_ draggingExited]; + + // Delegate pattern does not retain; make sure pointers to us are removed. + for (BookmarkButton* button in buttons_.get()) { + [button setDelegate:nil]; + [button setTarget:nil]; + [button setAction:nil]; + } + + // Note: we don't need to + // [NSObject cancelPreviousPerformRequestsWithTarget:self]; + // Because all of our performSelector: calls use withDelay: which + // retains us. + [super dealloc]; +} + +- (void)awakeFromNib { + NSRect windowFrame = [[self window] frame]; + NSRect scrollViewFrame = [scrollView_ frame]; + padding_ = NSWidth(windowFrame) - NSWidth(scrollViewFrame); + verticalScrollArrowHeight_ = NSHeight([scrollUpArrowView_ frame]); +} + +// Overriden from NSWindowController to call childFolderWillShow: before showing +// the window. +- (void)showWindow:(id)sender { + [barController_ childFolderWillShow:self]; + [super showWindow:sender]; +} + +- (int)buttonCount { + return [[self buttons] count]; +} + - (BookmarkButton*)parentButton { return parentButton_.get(); } -- (void)openMenu { - // Retain self so that whatever created this can forefit ownership if it - // wants. This call is balanced in |-bookmarkMenuDidClose:|. - [self retain]; +- (void)offsetFolderMenuWindow:(NSSize)offset { + NSWindow* window = [self window]; + NSRect windowFrame = [window frame]; + windowFrame.origin.x -= offset.width; + windowFrame.origin.y += offset.height; // Yes, in the opposite direction! + [window setFrame:windowFrame display:YES]; + [folderController_ offsetFolderMenuWindow:offset]; +} + +- (void)reconfigureMenu { + [NSObject cancelPreviousPerformRequestsWithTarget:self]; + for (BookmarkButton* button in buttons_.get()) { + [button setDelegate:nil]; + [button removeFromSuperview]; + } + [buttons_ removeAllObjects]; + [self configureWindow]; +} + +#pragma mark Private Methods + +- (BookmarkButtonCell*)cellForBookmarkNode:(const BookmarkNode*)child { + NSImage* image = child ? [barController_ faviconForNode:child] : nil; + NSMenu* menu = child ? child->is_folder() ? folderMenu_ : buttonMenu_ : nil; + BookmarkBarFolderButtonCell* cell = + [BookmarkBarFolderButtonCell buttonCellForNode:child + contextMenu:menu + cellText:nil + cellImage:image]; + [cell setTag:kStandardButtonTypeWithLimitedClickFeedback]; + return cell; +} + +// Redirect to our logic shared with BookmarkBarController. +- (IBAction)openBookmarkFolderFromButton:(id)sender { + [folderTarget_ openBookmarkFolderFromButton:sender]; +} + +// Create a bookmark button for the given node using frame. +// +// If |node| is NULL this is an "(empty)" button. +// Does NOT add this button to our button list. +// Returns an autoreleased button. +// Adjusts the input frame width as appropriate. +// +// TODO(jrg): combine with addNodesToButtonList: code from +// bookmark_bar_controller.mm, and generalize that to use both x and y +// offsets. +// http://crbug.com/35966 +- (BookmarkButton*)makeButtonForNode:(const BookmarkNode*)node + frame:(NSRect)frame { + BookmarkButtonCell* cell = [self cellForBookmarkNode:node]; + DCHECK(cell); + + // We must decide if we draw the folder arrow before we ask the cell + // how big it needs to be. + if (node && node->is_folder()) { + // Warning when combining code with bookmark_bar_controller.mm: + // this call should NOT be made for the bar buttons; only for the + // subfolder buttons. + [cell setDrawFolderArrow:YES]; + } + + // The "+2" is needed because, sometimes, Cocoa is off by a tad when + // returning the value it thinks it needs. + CGFloat desired = [cell cellSize].width + 2; + // The width is determined from the maximum of the proposed width + // (provided in |frame|) or the natural width of the title, then + // limited by the abolute minimum and maximum allowable widths. + frame.size.width = + std::min(std::max(bookmarks::kBookmarkMenuButtonMinimumWidth, + std::max(frame.size.width, desired)), + bookmarks::kBookmarkMenuButtonMaximumWidth); + + BookmarkButton* button = [[[BookmarkButton alloc] initWithFrame:frame] + autorelease]; + DCHECK(button); + + [button setCell:cell]; + [button setDelegate:self]; + if (node) { + if (node->is_folder()) { + [button setTarget:self]; + [button setAction:@selector(openBookmarkFolderFromButton:)]; + } else { + // Make the button do something. + [button setTarget:self]; + [button setAction:@selector(openBookmark:)]; + // Add a tooltip. + [button setToolTip:[BookmarkMenuCocoaController tooltipForNode:node]]; + [button setAcceptsTrackIn:YES]; + } + } else { + [button setEnabled:NO]; + [button setBordered:NO]; + } + return button; +} + +- (id)folderTarget { + return folderTarget_.get(); +} + + +// Our parent controller is another BookmarkBarFolderController, so +// our window is to the right or left of it. We use a little overlap +// since it looks much more menu-like than with none. If we would +// grow off the screen, switch growth to the other direction. Growth +// direction sticks for folder windows which are descendents of us. +// If we have tried both directions and neither fits, degrade to a +// default. +- (CGFloat)childFolderWindowLeftForWidth:(int)windowWidth { + // We may legitimately need to try two times (growth to right and + // left but not in that order). Limit us to three tries in case + // the folder window can't fit on either side of the screen; we + // don't want to loop forever. + CGFloat x; + int tries = 0; + while (tries < 2) { + // Try to grow right. + if ([self subFolderGrowthToRight]) { + tries++; + x = NSMaxX([[parentButton_ window] frame]) - + bookmarks::kBookmarkMenuOverlap; + // If off the screen, switch direction. + if ((x + windowWidth + + bookmarks::kBookmarkHorizontalScreenPadding) > + NSMaxX([[[self window] screen] visibleFrame])) { + [self setSubFolderGrowthToRight:NO]; + } else { + return x; + } + } + // Try to grow left. + if (![self subFolderGrowthToRight]) { + tries++; + x = NSMinX([[parentButton_ window] frame]) + + bookmarks::kBookmarkMenuOverlap - + windowWidth; + // If off the screen, switch direction. + if (x < NSMinX([[[self window] screen] visibleFrame])) { + [self setSubFolderGrowthToRight:YES]; + } else { + return x; + } + } + } + // Unhappy; do the best we can. + return NSMaxX([[[self window] screen] visibleFrame]) - windowWidth; +} + + +// Compute and return the top left point of our window (screen +// coordinates). The top left is positioned in a manner similar to +// cascading menus. Windows may grow to either the right or left of +// their parent (if a sub-folder) so we need to know |windowWidth|. +- (NSPoint)windowTopLeftForWidth:(int)windowWidth height:(int)windowHeight { + CGFloat kMinSqueezedMenuHeight = bookmarks::kBookmarkFolderButtonHeight * 2.0; + NSPoint newWindowTopLeft; + if (![parentController_ isKindOfClass:[self class]]) { + // If we're not popping up from one of ourselves, we must be + // popping up from the bookmark bar itself. In this case, start + // BELOW the parent button. Our left is the button left; our top + // is bottom of button's parent view. + NSPoint buttonBottomLeftInScreen = + [[parentButton_ window] + convertBaseToScreen:[parentButton_ + convertPoint:NSZeroPoint toView:nil]]; + NSPoint bookmarkBarBottomLeftInScreen = + [[parentButton_ window] + convertBaseToScreen:[[parentButton_ superview] + convertPoint:NSZeroPoint toView:nil]]; + newWindowTopLeft = NSMakePoint( + buttonBottomLeftInScreen.x + bookmarks::kBookmarkBarButtonOffset, + bookmarkBarBottomLeftInScreen.y + bookmarks::kBookmarkBarMenuOffset); + // Make sure the window is on-screen; if not, push left. It is + // intentional that top level folders "push left" slightly + // different than subfolders. + NSRect screenFrame = [[[parentButton_ window] screen] visibleFrame]; + CGFloat spillOff = (newWindowTopLeft.x + windowWidth) - NSMaxX(screenFrame); + if (spillOff > 0.0) { + newWindowTopLeft.x = std::max(newWindowTopLeft.x - spillOff, + NSMinX(screenFrame)); + } + // The menu looks bad when it is squeezed up against the bottom of the + // screen and ends up being only a few pixels tall. If it meets the + // threshold for this case, instead show the menu above the button. + NSRect visFrame = [[[parentButton_ window] screen] visibleFrame]; + CGFloat availableVerticalSpace = newWindowTopLeft.y - + (NSMinY(visFrame) + bookmarks::kScrollWindowVerticalMargin); + if ((availableVerticalSpace < kMinSqueezedMenuHeight) && + (windowHeight > availableVerticalSpace)) { + newWindowTopLeft.y = std::min( + newWindowTopLeft.y + windowHeight + NSHeight([parentButton_ frame]), + NSMaxY(visFrame)); + } + } else { + // Parent is a folder: expose as much as we can vertically; grow right/left. + newWindowTopLeft.x = [self childFolderWindowLeftForWidth:windowWidth]; + NSPoint topOfWindow = NSMakePoint(0, + NSMaxY([parentButton_ frame]) - + bookmarks::kBookmarkVerticalPadding); + topOfWindow = [[parentButton_ window] + convertBaseToScreen:[[parentButton_ superview] + convertPoint:topOfWindow toView:nil]]; + newWindowTopLeft.y = topOfWindow.y; + } + return newWindowTopLeft; +} + +// Set our window level to the right spot so we're above the menubar, dock, etc. +// Factored out so we can override/noop in a unit test. +- (void)configureWindowLevel { + [[self window] setLevel:NSPopUpMenuWindowLevel]; +} + +- (int)menuHeightForButtonCount:(int)buttonCount { + // This does not take into account any padding which may be required at the + // top and/or bottom of the window. + return (buttonCount * bookmarks::kBookmarkFolderButtonHeight) + + 2 * bookmarks::kBookmarkVerticalPadding; +} + +- (void)adjustWindowLeft:(CGFloat)windowLeft + size:(NSSize)windowSize + scrollingBy:(CGFloat)scrollDelta { + // Callers of this function should make adjustments to the vertical + // attributes of the folder view only (height, scroll position). + // This function will then make appropriate layout adjustments in order + // to accommodate screen/dock margins, scroll-up and scroll-down arrow + // presentation, etc. + // The 4 views whose vertical height and origins may be adjusted + // by this function are: + // 1) window, 2) visible content view, 3) scroller view, 4) folder view. + + LayoutMetrics layoutMetrics(windowLeft, windowSize, scrollDelta); + [self gatherMetrics:&layoutMetrics]; + [self adjustMetrics:&layoutMetrics]; + [self applyMetrics:&layoutMetrics]; +} + +- (void)gatherMetrics:(LayoutMetrics*)layoutMetrics { + LayoutMetrics& metrics(*layoutMetrics); + NSWindow* window = [self window]; + metrics.windowFrame = [window frame]; + metrics.visibleFrame = [visibleView_ frame]; + metrics.scrollerFrame = [scrollView_ frame]; + metrics.scrollPoint = [scrollView_ documentVisibleRect].origin; + metrics.scrollPoint.y -= metrics.scrollDelta; + metrics.couldScrollUp = ![scrollUpArrowView_ isHidden]; + metrics.couldScrollDown = ![scrollDownArrowView_ isHidden]; + + metrics.deltaWindowHeight = 0.0; + metrics.deltaWindowY = 0.0; + metrics.deltaVisibleHeight = 0.0; + metrics.deltaVisibleY = 0.0; + metrics.deltaScrollerHeight = 0.0; + metrics.deltaScrollerY = 0.0; + + metrics.minimumY = NSMinY([[window screen] visibleFrame]) + + bookmarks::kScrollWindowVerticalMargin; + metrics.oldWindowY = NSMinY(metrics.windowFrame); + metrics.folderY = + metrics.scrollerFrame.origin.y + metrics.visibleFrame.origin.y + + metrics.oldWindowY - metrics.scrollPoint.y; + metrics.folderTop = metrics.folderY + NSHeight([folderView_ frame]); +} + +- (void)adjustMetrics:(LayoutMetrics*)layoutMetrics { + LayoutMetrics& metrics(*layoutMetrics); + NSScreen* screen = [[self window] screen]; + CGFloat effectiveFolderY = metrics.folderY; + if (!metrics.couldScrollUp && !metrics.couldScrollDown) + effectiveFolderY -= metrics.windowSize.height; + metrics.canScrollUp = effectiveFolderY < metrics.minimumY; + CGFloat maximumY = + NSMaxY([screen visibleFrame]) - bookmarks::kScrollWindowVerticalMargin; + metrics.canScrollDown = metrics.folderTop > maximumY; + + // Accommodate changes in the bottom of the menu. + [self adjustMetricsForMenuBottomChanges:layoutMetrics]; + + // Accommodate changes in the top of the menu. + [self adjustMetricsForMenuTopChanges:layoutMetrics]; + + metrics.scrollerFrame.origin.y += metrics.deltaScrollerY; + metrics.scrollerFrame.size.height += metrics.deltaScrollerHeight; + metrics.visibleFrame.origin.y += metrics.deltaVisibleY; + metrics.visibleFrame.size.height += metrics.deltaVisibleHeight; + metrics.preScroll = metrics.canScrollUp && !metrics.couldScrollUp && + metrics.scrollDelta == 0.0 && metrics.deltaWindowHeight >= 0.0; + metrics.windowFrame.origin.y += metrics.deltaWindowY; + metrics.windowFrame.origin.x = metrics.windowLeft; + metrics.windowFrame.size.height += metrics.deltaWindowHeight; + metrics.windowFrame.size.width = metrics.windowSize.width; +} + +- (void)adjustMetricsForMenuBottomChanges:(LayoutMetrics*)layoutMetrics { + LayoutMetrics& metrics(*layoutMetrics); + if (metrics.canScrollUp) { + if (!metrics.couldScrollUp) { + // Couldn't -> Can + metrics.deltaWindowY = -metrics.oldWindowY; + metrics.deltaWindowHeight = -metrics.deltaWindowY; + metrics.deltaVisibleY = metrics.minimumY; + metrics.deltaVisibleHeight = -metrics.deltaVisibleY; + metrics.deltaScrollerY = verticalScrollArrowHeight_; + metrics.deltaScrollerHeight = -metrics.deltaScrollerY; + // Adjust the scroll delta if we've grown the window and it is + // now scroll-up-able, but don't adjust it if we've + // scrolled down and it wasn't scroll-up-able but now is. + if (metrics.canScrollDown == metrics.couldScrollDown) { + CGFloat deltaScroll = metrics.deltaWindowY + metrics.deltaScrollerY + + metrics.deltaVisibleY; + metrics.scrollPoint.y += deltaScroll + metrics.windowSize.height; + } + } else if (!metrics.canScrollDown && metrics.windowSize.height > 0.0) { + metrics.scrollPoint.y += metrics.windowSize.height; + } + } else { + if (metrics.couldScrollUp) { + // Could -> Can't + metrics.deltaWindowY = metrics.folderY - metrics.oldWindowY; + metrics.deltaWindowHeight = -metrics.deltaWindowY; + metrics.deltaVisibleY = -metrics.visibleFrame.origin.y; + metrics.deltaVisibleHeight = -metrics.deltaVisibleY; + metrics.deltaScrollerY = -verticalScrollArrowHeight_; + metrics.deltaScrollerHeight = -metrics.deltaScrollerY; + // We are no longer scroll-up-able so the scroll point drops to zero. + metrics.scrollPoint.y = 0.0; + } else { + // Couldn't -> Can't + // Check for menu height change by looking at the relative tops of the + // menu folder and the window folder, which previously would have been + // the same. + metrics.deltaWindowY = NSMaxY(metrics.windowFrame) - metrics.folderTop; + metrics.deltaWindowHeight = -metrics.deltaWindowY; + } + } +} - // If the system supports opening the menu at a specific point, do so. - // Otherwise, it will be opened at the mouse event location. Eventually these - // should be switched to NSPopUpButtonCells so that this is taken care of - // automatically. - if ([menu_ respondsToSelector: - @selector(popUpMenuPositioningItem:atLocation:inView:)]) { - NSPoint point = [parentButton_ frame].origin; - point.y -= bookmarks::kBookmarkBarMenuOffset; - [menu_ popUpMenuPositioningItem:nil - atLocation:point - inView:[parentButton_ superview]]; +- (void)adjustMetricsForMenuTopChanges:(LayoutMetrics*)layoutMetrics { + LayoutMetrics& metrics(*layoutMetrics); + if (metrics.canScrollDown == metrics.couldScrollDown) { + if (!metrics.canScrollDown) { + // Not scroll-down-able but the menu top has changed. + metrics.deltaWindowHeight += metrics.scrollDelta; + } } else { - [NSMenu popUpContextMenu:menu_ - withEvent:[NSApp currentEvent] - forView:parentButton_]; + if (metrics.canScrollDown) { + // Couldn't -> Can + metrics.deltaWindowHeight += (NSMaxY([[[self window] screen] + visibleFrame]) - + NSMaxY(metrics.windowFrame)); + metrics.deltaVisibleHeight -= bookmarks::kScrollWindowVerticalMargin; + metrics.deltaScrollerHeight -= verticalScrollArrowHeight_; + } else { + // Could -> Can't + metrics.deltaWindowHeight -= bookmarks::kScrollWindowVerticalMargin; + metrics.deltaVisibleHeight += bookmarks::kScrollWindowVerticalMargin; + metrics.deltaScrollerHeight += verticalScrollArrowHeight_; + } } } -- (void)closeMenu { - NSArray* modes = [NSArray arrayWithObject:NSRunLoopCommonModes]; - [menu_ performSelector:@selector(cancelTracking) - withObject:nil - afterDelay:0.0 - inModes:modes]; +- (void)applyMetrics:(LayoutMetrics*)layoutMetrics { + LayoutMetrics& metrics(*layoutMetrics); + // Hide or show the scroll arrows. + if (metrics.canScrollUp != metrics.couldScrollUp) + [scrollUpArrowView_ setHidden:metrics.couldScrollUp]; + if (metrics.canScrollDown != metrics.couldScrollDown) + [scrollDownArrowView_ setHidden:metrics.couldScrollDown]; + + // Adjust the geometry. The order is important because of sizer dependencies. + [scrollView_ setFrame:metrics.scrollerFrame]; + [visibleView_ setFrame:metrics.visibleFrame]; + // This little bit of trickery handles the one special case where + // the window is now scroll-up-able _and_ going to be resized -- scroll + // first in order to prevent flashing. + if (metrics.preScroll) + [[scrollView_ documentView] scrollPoint:metrics.scrollPoint]; + + [[self window] setFrame:metrics.windowFrame display:YES]; + + // In all other cases we defer scrolling until the window has been resized + // in order to prevent flashing. + if (!metrics.preScroll) + [[scrollView_ documentView] scrollPoint:metrics.scrollPoint]; + + // TODO(maf) find a non-SPI way to do this. + // Hack. This is the only way I've found to get the tracking area cache + // to update properly during a mouse tracking loop. + // Without this, the item tracking-areas are wrong when using a scrollable + // menu with the mouse held down. + NSView *contentView = [[self window] contentView] ; + if ([contentView respondsToSelector:@selector(_updateTrackingAreas)]) + [contentView _updateTrackingAreas]; + + + if (metrics.canScrollUp != metrics.couldScrollUp || + metrics.canScrollDown != metrics.couldScrollDown || + metrics.scrollDelta != 0.0) { + if (metrics.canScrollUp || metrics.canScrollDown) + [self addOrUpdateScrollTracking]; + else + [self removeScrollTracking]; + } +} + +- (void)adjustWindowForButtonCount:(NSUInteger)buttonCount { + NSRect folderFrame = [folderView_ frame]; + CGFloat newMenuHeight = + (CGFloat)[self menuHeightForButtonCount:[buttons_ count]]; + CGFloat deltaMenuHeight = newMenuHeight - NSHeight(folderFrame); + // If the height has changed then also change the origin, and adjust the + // scroll (if scrolling). + if ([self canScrollUp]) { + NSPoint scrollPoint = [scrollView_ documentVisibleRect].origin; + scrollPoint.y += deltaMenuHeight; + [[scrollView_ documentView] scrollPoint:scrollPoint]; + } + folderFrame.size.height += deltaMenuHeight; + [folderView_ setFrameSize:folderFrame.size]; + CGFloat windowWidth = [self adjustButtonWidths] + padding_; + NSPoint newWindowTopLeft = [self windowTopLeftForWidth:windowWidth + height:deltaMenuHeight]; + CGFloat left = newWindowTopLeft.x; + NSSize newSize = NSMakeSize(windowWidth, deltaMenuHeight); + [self adjustWindowLeft:left size:newSize scrollingBy:0.0]; +} + +// Determine window size and position. +// Create buttons for all our nodes. +// TODO(jrg): break up into more and smaller routines for easier unit testing. +- (void)configureWindow { + const BookmarkNode* node = [parentButton_ bookmarkNode]; + DCHECK(node); + int startingIndex = [[parentButton_ cell] startingChildIndex]; + DCHECK_LE(startingIndex, node->child_count()); + // Must have at least 1 button (for "empty") + int buttons = std::max(node->child_count() - startingIndex, 1); + + // Prelim height of the window. We'll trim later as needed. + int height = [self menuHeightForButtonCount:buttons]; + // We'll need this soon... + [self window]; + + // TODO(jrg): combine with frame code in bookmark_bar_controller.mm + // http://crbug.com/35966 + NSRect buttonsOuterFrame = NSMakeRect( + 0, + height - bookmarks::kBookmarkFolderButtonHeight - + bookmarks::kBookmarkVerticalPadding, + bookmarks::kDefaultBookmarkWidth, + bookmarks::kBookmarkFolderButtonHeight); + + // TODO(jrg): combine with addNodesToButtonList: code from + // bookmark_bar_controller.mm (but use y offset) + // http://crbug.com/35966 + if (node->empty()) { + // If no children we are the empty button. + BookmarkButton* button = [self makeButtonForNode:nil + frame:buttonsOuterFrame]; + [buttons_ addObject:button]; + [folderView_ addSubview:button]; + } else { + for (int i = startingIndex; i < node->child_count(); ++i) { + const BookmarkNode* child = node->GetChild(i); + BookmarkButton* button = [self makeButtonForNode:child + frame:buttonsOuterFrame]; + [buttons_ addObject:button]; + [folderView_ addSubview:button]; + buttonsOuterFrame.origin.y -= bookmarks::kBookmarkFolderButtonHeight; + } + } + [self layOutWindowWithHeight:height]; +} + +- (void)layOutWindowWithHeight:(CGFloat)height { + // Lay out the window by adjusting all button widths to be consistent, then + // base the window width on this ideal button width. + CGFloat buttonWidth = [self adjustButtonWidths]; + CGFloat windowWidth = buttonWidth + padding_; + NSPoint newWindowTopLeft = [self windowTopLeftForWidth:windowWidth + height:height]; + // Make sure as much of a submenu is exposed (which otherwise would be a + // problem if the parent button is close to the bottom of the screen). + if ([parentController_ isKindOfClass:[self class]]) { + CGFloat minimumY = NSMinY([[[self window] screen] visibleFrame]) + + bookmarks::kScrollWindowVerticalMargin + + height; + newWindowTopLeft.y = MAX(newWindowTopLeft.y, minimumY); + } + NSWindow* window = [self window]; + NSRect windowFrame = NSMakeRect(newWindowTopLeft.x, + newWindowTopLeft.y - height, + windowWidth, height); + [window setFrame:windowFrame display:NO]; + NSRect folderFrame = NSMakeRect(0, 0, windowWidth, height); + [folderView_ setFrame:folderFrame]; + NSSize newSize = NSMakeSize(windowWidth, 0.0); + [self adjustWindowLeft:newWindowTopLeft.x size:newSize scrollingBy:0.0]; + [self configureWindowLevel]; + [window display]; +} + +// TODO(mrossetti): See if the following can be moved into view's viewWillDraw:. +- (CGFloat)adjustButtonWidths { + CGFloat width = bookmarks::kBookmarkMenuButtonMinimumWidth; + // Use the cell's size as the base for determining the desired width of the + // button rather than the button's current width. -[cell cellSize] always + // returns the 'optimum' size of the cell based on the cell's contents even + // if it's less than the current button size. Relying on the button size + // would result in buttons that could only get wider but we want to handle + // the case where the widest button gets removed from a folder menu. + for (BookmarkButton* button in buttons_.get()) + width = std::max(width, [[button cell] cellSize].width); + width = std::min(width, bookmarks::kBookmarkMenuButtonMaximumWidth); + // Things look and feel more menu-like if all the buttons are the + // full width of the window, especially if there are submenus. + for (BookmarkButton* button in buttons_.get()) { + NSRect buttonFrame = [button frame]; + buttonFrame.size.width = width; + [button setFrame:buttonFrame]; + } + return width; +} + +// Start a "scroll up" timer. +- (void)beginScrollWindowUp { + [self addScrollTimerWithDelta:kBookmarkBarFolderScrollAmount]; } -- (void)setOffTheSideNodeStartIndex:(size_t)index { - menuBridge_->set_off_the_side_node_start_index(index); +// Start a "scroll down" timer. +- (void)beginScrollWindowDown { + [self addScrollTimerWithDelta:-kBookmarkBarFolderScrollAmount]; } -- (void)bookmarkMenuDidClose:(BookmarkMenuCocoaController*)controller { - // Inform the bookmark bar that the folder has closed on the next iteration - // of the event loop. If the menu was closed via a click event on a folder - // button, this message will be received before dispatching the click event - // to the button. If the button is the same folder button that ran the menu - // in the first place, this will recursively pop open the menu because the - // active folder will be nil-ed by |-closeBookmarkFolder:|. To prevent that, - // perform the selector on the next iteration of the loop. - [barController_ performSelector:@selector(closeBookmarkFolder:) - withObject:self - afterDelay:0.0]; +// End a scrolling timer. Can be called excessively with no harm. +- (void)endScroll { + if (scrollTimer_) { + [scrollTimer_ invalidate]; + scrollTimer_ = nil; + verticalScrollDelta_ = 0; + } +} + +- (int)indexOfButton:(BookmarkButton*)button { + if (button == nil) + return -1; + int index = [buttons_ indexOfObject:button]; + return (index == NSNotFound) ? -1 : index; +} + +- (BookmarkButton*)buttonAtIndex:(int)which { + if (which < 0 || which >= [self buttonCount]) + return nil; + return [buttons_ objectAtIndex:which]; +} + +// Private, called by performOneScroll only. +// If the button at index contains the mouse it will select it and return YES. +// Otherwise returns NO. +- (BOOL)selectButtonIfHoveredAtIndex:(int)index { + BookmarkButton *btn = [self buttonAtIndex:index]; + if ([[btn cell] isMouseReallyInside]) { + buttonThatMouseIsIn_ = btn; + [self setSelectedButtonByIndex:index]; + return YES; + } + return NO; +} + +// Perform a single scroll of the specified amount. +- (void)performOneScroll:(CGFloat)delta { + if (delta == 0.0) + return; + CGFloat finalDelta = [self determineFinalScrollDelta:delta]; + if (finalDelta == 0.0) + return; + int index = [self indexOfButton:buttonThatMouseIsIn_]; + // Check for a current mouse-initiated selection. + BOOL maintainHoverSelection = + (buttonThatMouseIsIn_ && + [[buttonThatMouseIsIn_ cell] isMouseReallyInside] && + selectedIndex_ != -1 && + index == selectedIndex_); + NSRect windowFrame = [[self window] frame]; + NSSize newSize = NSMakeSize(NSWidth(windowFrame), 0.0); + [self adjustWindowLeft:windowFrame.origin.x + size:newSize + scrollingBy:finalDelta]; + // We have now scrolled. + if (!maintainHoverSelection) + return; + // Is mouse still in the same hovered button? + if ([[buttonThatMouseIsIn_ cell] isMouseReallyInside]) + return; + // The finalDelta scroll direction will tell us us whether to search up or + // down the buttons array for the newly hovered button. + if (finalDelta < 0.0) { // Scrolled up, so search backwards for new hover. + index--; + while (index >= 0) { + if ([self selectButtonIfHoveredAtIndex:index]) + return; + index--; + } + } else { // Scrolled down, so search forward for new hovered button. + index++; + int btnMax = [self buttonCount]; + while (index < btnMax) { + if ([self selectButtonIfHoveredAtIndex:index]) + return; + index++; + } + } +} + +- (CGFloat)determineFinalScrollDelta:(CGFloat)delta { + if ((delta > 0.0 && ![scrollUpArrowView_ isHidden]) || + (delta < 0.0 && ![scrollDownArrowView_ isHidden])) { + NSWindow* window = [self window]; + NSRect windowFrame = [window frame]; + NSScreen* screen = [window screen]; + NSPoint scrollPosition = [scrollView_ documentVisibleRect].origin; + CGFloat scrollY = scrollPosition.y; + NSRect scrollerFrame = [scrollView_ frame]; + CGFloat scrollerY = NSMinY(scrollerFrame); + NSRect visibleFrame = [visibleView_ frame]; + CGFloat visibleY = NSMinY(visibleFrame); + CGFloat windowY = NSMinY(windowFrame); + CGFloat offset = scrollerY + visibleY + windowY; + + if (delta > 0.0) { + // Scrolling up. + CGFloat minimumY = NSMinY([screen visibleFrame]) + + bookmarks::kScrollWindowVerticalMargin; + CGFloat maxUpDelta = scrollY - offset + minimumY; + delta = MIN(delta, maxUpDelta); + } else { + // Scrolling down. + NSRect screenFrame = [screen visibleFrame]; + CGFloat topOfScreen = NSMaxY(screenFrame); + NSRect folderFrame = [folderView_ frame]; + CGFloat folderHeight = NSHeight(folderFrame); + CGFloat folderTop = folderHeight - scrollY + offset; + CGFloat maxDownDelta = + topOfScreen - folderTop - bookmarks::kScrollWindowVerticalMargin; + delta = MAX(delta, maxDownDelta); + } + } else { + delta = 0.0; + } + return delta; +} + +// Perform a scroll of the window on the screen. +// Called by a timer when scrolling. +- (void)performScroll:(NSTimer*)timer { + DCHECK(verticalScrollDelta_); + [self performOneScroll:verticalScrollDelta_]; +} + + +// Add a timer to fire at a regular interval which scrolls the +// window vertically |delta|. +- (void)addScrollTimerWithDelta:(CGFloat)delta { + if (scrollTimer_ && verticalScrollDelta_ == delta) + return; + [self endScroll]; + verticalScrollDelta_ = delta; + scrollTimer_ = [NSTimer timerWithTimeInterval:kBookmarkBarFolderScrollInterval + target:self + selector:@selector(performScroll:) + userInfo:nil + repeats:YES]; + + [[NSRunLoop mainRunLoop] addTimer:scrollTimer_ forMode:NSRunLoopCommonModes]; +} + + +// Called as a result of our tracking area. Warning: on the main +// screen (of a single-screened machine), the minimum mouse y value is +// 1, not 0. Also, we do not get events when the mouse is above the +// menubar (to be fixed by setting the proper window level; see +// initializer). +// Note [theEvent window] may not be our window, as we also get these messages +// forwarded from BookmarkButton's mouse tracking loop. +- (void)mouseMovedOrDragged:(NSEvent*)theEvent { + NSPoint eventScreenLocation = + [[theEvent window] convertBaseToScreen:[theEvent locationInWindow]]; + + // Base hot spot calculations on the positions of the scroll arrow views. + NSRect testRect = [scrollDownArrowView_ frame]; + NSPoint testPoint = [visibleView_ convertPoint:testRect.origin + toView:nil]; + testPoint = [[self window] convertBaseToScreen:testPoint]; + CGFloat closeToTopOfScreen = testPoint.y; + + testRect = [scrollUpArrowView_ frame]; + testPoint = [visibleView_ convertPoint:testRect.origin toView:nil]; + testPoint = [[self window] convertBaseToScreen:testPoint]; + CGFloat closeToBottomOfScreen = testPoint.y + testRect.size.height; + if (eventScreenLocation.y <= closeToBottomOfScreen && + ![scrollUpArrowView_ isHidden]) { + [self beginScrollWindowUp]; + } else if (eventScreenLocation.y > closeToTopOfScreen && + ![scrollDownArrowView_ isHidden]) { + [self beginScrollWindowDown]; + } else { + [self endScroll]; + } +} + +- (void)mouseMoved:(NSEvent*)theEvent { + [self mouseMovedOrDragged:theEvent]; +} + +- (void)mouseDragged:(NSEvent*)theEvent { + [self mouseMovedOrDragged:theEvent]; +} + +- (void)mouseExited:(NSEvent*)theEvent { + [self endScroll]; +} + +// Add a tracking area so we know when the mouse is pinned to the top +// or bottom of the screen. If that happens, and if the mouse +// position overlaps the window, scroll it. +- (void)addOrUpdateScrollTracking { + [self removeScrollTracking]; + NSView* view = [[self window] contentView]; + scrollTrackingArea_.reset([[CrTrackingArea alloc] + initWithRect:[view bounds] + options:(NSTrackingMouseMoved | + NSTrackingMouseEnteredAndExited | + NSTrackingActiveAlways | + NSTrackingEnabledDuringMouseDrag + ) + proxiedOwner:self + userInfo:nil]); + [view addTrackingArea:scrollTrackingArea_.get()]; +} + +// Remove the tracking area associated with scrolling. +- (void)removeScrollTracking { + if (scrollTrackingArea_.get()) { + [[[self window] contentView] removeTrackingArea:scrollTrackingArea_.get()]; + [scrollTrackingArea_.get() clearOwner]; + } + scrollTrackingArea_.reset(); +} + +// Close the old hover-open bookmark folder, and open a new one. We +// do both in one step to allow for a delay in closing the old one. +// See comments above kDragHoverCloseDelay (bookmark_bar_controller.h) +// for more details. +- (void)openBookmarkFolderFromButtonAndCloseOldOne:(id)sender { + // Ignore if sender button is in a window that's just been hidden - that + // would leave us with an orphaned menu. BUG 69002 + if ([[sender window] isVisible] != YES) + return; + // If an old submenu exists, close it immediately. + [self closeBookmarkFolder:sender]; + + // Open a new one if meaningful. + if ([sender isFolder]) + [folderTarget_ openBookmarkFolderFromButton:sender]; +} + +- (NSArray*)buttons { + return buttons_.get(); +} + +- (void)close { + [folderController_ close]; + [super close]; +} + +- (void)scrollWheel:(NSEvent *)theEvent { + if (![scrollUpArrowView_ isHidden] || ![scrollDownArrowView_ isHidden]) { + // We go negative since an NSScrollView has a flipped coordinate frame. + CGFloat amt = kBookmarkBarFolderScrollWheelAmount * -[theEvent deltaY]; + [self performOneScroll:amt]; + } +} + +#pragma mark Actions Forwarded to Parent BookmarkBarController + +- (BOOL)validateUserInterfaceItem:(id<NSValidatedUserInterfaceItem>)item { + return [barController_ validateUserInterfaceItem:item]; +} + +- (IBAction)openBookmark:(id)sender { + [barController_ openBookmark:sender]; +} + +- (IBAction)openBookmarkInNewForegroundTab:(id)sender { + [barController_ openBookmarkInNewForegroundTab:sender]; +} + +- (IBAction)openBookmarkInNewWindow:(id)sender { + [barController_ openBookmarkInNewWindow:sender]; +} + +- (IBAction)openBookmarkInIncognitoWindow:(id)sender { + [barController_ openBookmarkInIncognitoWindow:sender]; +} + +- (IBAction)editBookmark:(id)sender { + [barController_ editBookmark:sender]; +} + +- (IBAction)cutBookmark:(id)sender { + [self closeBookmarkFolder:self]; + [barController_ cutBookmark:sender]; +} + +- (IBAction)copyBookmark:(id)sender { + [barController_ copyBookmark:sender]; +} + +- (IBAction)pasteBookmark:(id)sender { + [barController_ pasteBookmark:sender]; +} + +- (IBAction)deleteBookmark:(id)sender { + [self closeBookmarkFolder:self]; + [barController_ deleteBookmark:sender]; +} + +- (IBAction)openAllBookmarks:(id)sender { + [barController_ openAllBookmarks:sender]; +} - // This controller is created on-demand and should be released when the menu - // closes because a new one will be created when it is opened again. +- (IBAction)openAllBookmarksNewWindow:(id)sender { + [barController_ openAllBookmarksNewWindow:sender]; +} + +- (IBAction)openAllBookmarksIncognitoWindow:(id)sender { + [barController_ openAllBookmarksIncognitoWindow:sender]; +} + +- (IBAction)addPage:(id)sender { + [barController_ addPage:sender]; +} + +- (IBAction)addFolder:(id)sender { + [barController_ addFolder:sender]; +} + +#pragma mark Drag & Drop + +// Find something like std::is_between<T>? I can't believe one doesn't exist. +// http://crbug.com/35966 +static BOOL ValueInRangeInclusive(CGFloat low, CGFloat value, CGFloat high) { + return ((value >= low) && (value <= high)); +} + +// Return the proposed drop target for a hover open button, or nil if none. +// +// TODO(jrg): this is just like the version in +// bookmark_bar_controller.mm, but vertical instead of horizontal. +// Generalize to be axis independent then share code. +// http://crbug.com/35966 +- (BookmarkButton*)buttonForDroppingOnAtPoint:(NSPoint)point { + for (BookmarkButton* button in buttons_.get()) { + // No early break -- makes no assumption about button ordering. + + // Intentionally NOT using NSPointInRect() so that scrolling into + // a submenu doesn't cause it to be closed. + if (ValueInRangeInclusive(NSMinY([button frame]), + point.y, + NSMaxY([button frame]))) { + + // Over a button but let's be a little more specific + // (e.g. over the middle half). + NSRect frame = [button frame]; + NSRect middleHalfOfButton = NSInsetRect(frame, 0, frame.size.height / 4); + if (ValueInRangeInclusive(NSMinY(middleHalfOfButton), + point.y, + NSMaxY(middleHalfOfButton))) { + // It makes no sense to drop on a non-folder; there is no hover. + if (![button isFolder]) + return nil; + // Got it! + return button; + } else { + // Over a button but not over the middle half. + return nil; + } + } + } + // Not hovering over a button. + return nil; +} + +// TODO(jrg): again we have code dup, sort of, with +// bookmark_bar_controller.mm, but the axis is changed. One minor +// difference is accomodation for the "empty" button (which may not +// exist in the future). +// http://crbug.com/35966 +- (int)indexForDragToPoint:(NSPoint)point { + // Identify which buttons we are between. For now, assume a button + // location is at the center point of its view, and that an exact + // match means "place before". + // TODO(jrg): revisit position info based on UI team feedback. + // dropLocation is in bar local coordinates. + // http://crbug.com/36276 + NSPoint dropLocation = + [folderView_ convertPoint:point + fromView:[[self window] contentView]]; + BookmarkButton* buttonToTheTopOfDraggedButton = nil; + // Buttons are laid out in this array from top to bottom (screen + // wise), which means "biggest y" --> "smallest y". + for (BookmarkButton* button in buttons_.get()) { + CGFloat midpoint = NSMidY([button frame]); + if (dropLocation.y > midpoint) { + break; + } + buttonToTheTopOfDraggedButton = button; + } + + // TODO(jrg): On Windows, dropping onto (empty) highlights the + // entire drop location and does not use an insertion point. + // http://crbug.com/35967 + if (!buttonToTheTopOfDraggedButton) { + // We are at the very top (we broke out of the loop on the first try). + return 0; + } + if ([buttonToTheTopOfDraggedButton isEmpty]) { + // There is a button but it's an empty placeholder. + // Default to inserting on top of it. + return 0; + } + const BookmarkNode* beforeNode = [buttonToTheTopOfDraggedButton + bookmarkNode]; + DCHECK(beforeNode); + // Be careful if the number of buttons != number of nodes. + return ((beforeNode->parent()->GetIndexOf(beforeNode) + 1) - + [[parentButton_ cell] startingChildIndex]); +} + +// TODO(jrg): Yet more code dup. +// http://crbug.com/35966 +- (BOOL)dragBookmark:(const BookmarkNode*)sourceNode + to:(NSPoint)point + copy:(BOOL)copy { + DCHECK(sourceNode); + + // Drop destination. + const BookmarkNode* destParent = NULL; + int destIndex = 0; + + // First check if we're dropping on a button. If we have one, and + // it's a folder, drop in it. + BookmarkButton* button = [self buttonForDroppingOnAtPoint:point]; + if ([button isFolder]) { + destParent = [button bookmarkNode]; + // Drop it at the end. + destIndex = [button bookmarkNode]->child_count(); + } else { + // Else we're dropping somewhere in the folder, so find the right spot. + destParent = [parentButton_ bookmarkNode]; + destIndex = [self indexForDragToPoint:point]; + // Be careful if the number of buttons != number of nodes. + destIndex += [[parentButton_ cell] startingChildIndex]; + } + + // Prevent cycles. + BOOL wasCopiedOrMoved = NO; + if (!destParent->HasAncestor(sourceNode)) { + if (copy) + [self bookmarkModel]->Copy(sourceNode, destParent, destIndex); + else + [self bookmarkModel]->Move(sourceNode, destParent, destIndex); + wasCopiedOrMoved = YES; + // Movement of a node triggers observers (like us) to rebuild the + // bar so we don't have to do so explicitly. + } + + return wasCopiedOrMoved; +} + +// TODO(maf): Implement live drag & drop animation using this hook. +- (void)setDropInsertionPos:(CGFloat)where { +} + +// TODO(maf): Implement live drag & drop animation using this hook. +- (void)clearDropInsertionPos { +} + +#pragma mark NSWindowDelegate Functions + +- (void)windowWillClose:(NSNotification*)notification { + // Also done by the dealloc method, but also doing it here is quicker and + // more reliable. + [parentButton_ forceButtonBorderToStayOnAlways:NO]; + + // If a "hover open" is pending when the bookmark bar folder is + // closed, be sure it gets cancelled. + [NSObject cancelPreviousPerformRequestsWithTarget:self]; + + [self endScroll]; // Just in case we were scrolling. + [barController_ childFolderWillClose:self]; + [self closeBookmarkFolder:self]; [self autorelease]; } -@end +#pragma mark BookmarkButtonDelegate Protocol + +- (void)fillPasteboard:(NSPasteboard*)pboard + forDragOfButton:(BookmarkButton*)button { + [[self folderTarget] fillPasteboard:pboard forDragOfButton:button]; + + // Close our folder menu and submenus since we know we're going to be dragged. + [self closeBookmarkFolder:self]; +} + +// Called from BookmarkButton. +// Unlike bookmark_bar_controller's version, we DO default to being enabled. +- (void)mouseEnteredButton:(id)sender event:(NSEvent*)event { + [[NSCursor arrowCursor] set]; + + buttonThatMouseIsIn_ = sender; + [self setSelectedButtonByIndex:[self indexOfButton:sender]]; -//////////////////////////////////////////////////////////////////////////////// + // Cancel a previous hover if needed. + [NSObject cancelPreviousPerformRequestsWithTarget:self]; -@implementation BookmarkBarFolderController (ExposedForTesting) + // If already opened, then we exited but re-entered the button + // (without entering another button open), do nothing. + if ([folderController_ parentButton] == sender) + return; -- (BookmarkMenuBridge*)menuBridge { - return menuBridge_.get(); + [self performSelector:@selector(openBookmarkFolderFromButtonAndCloseOldOne:) + withObject:sender + afterDelay:bookmarks::kHoverOpenDelay + inModes:[NSArray arrayWithObject:NSRunLoopCommonModes]]; } -@end +// Called from the BookmarkButton +- (void)mouseExitedButton:(id)sender event:(NSEvent*)event { + if (buttonThatMouseIsIn_ == sender) + buttonThatMouseIsIn_ = nil; + [self setSelectedButtonByIndex:-1]; + + // Stop any timer about opening a new hover-open folder. + + // Since a performSelector:withDelay: on self retains self, it is + // possible that a cancelPreviousPerformRequestsWithTarget: reduces + // the refcount to 0, releasing us. That's a bad thing to do while + // this object (or others it may own) is in the event chain. Thus + // we have a retain/autorelease. + [self retain]; + [NSObject cancelPreviousPerformRequestsWithTarget:self]; + [self autorelease]; +} + +- (NSWindow*)browserWindow { + return [parentController_ browserWindow]; +} + +- (BOOL)canDragBookmarkButtonToTrash:(BookmarkButton*)button { + return [barController_ canEditBookmarks] && + [barController_ canEditBookmark:[button bookmarkNode]]; +} + +- (void)didDragBookmarkToTrash:(BookmarkButton*)button { + [barController_ didDragBookmarkToTrash:button]; +} + +- (void)bookmarkDragDidEnd:(BookmarkButton*)button + operation:(NSDragOperation)operation { + [barController_ bookmarkDragDidEnd:button + operation:operation]; +} + + +#pragma mark BookmarkButtonControllerProtocol + +// Recursively close all bookmark folders. +- (void)closeAllBookmarkFolders { + // Closing the top level implicitly closes all children. + [barController_ closeAllBookmarkFolders]; +} + +// Close our bookmark folder (a sub-controller) if we have one. +- (void)closeBookmarkFolder:(id)sender { + if (folderController_) { + // Make this menu key, so key status doesn't go back to the browser + // window when the submenu closes. + [[self window] makeKeyWindow]; + [self setSubFolderGrowthToRight:YES]; + [[folderController_ window] close]; + folderController_ = nil; + } +} + +- (BookmarkModel*)bookmarkModel { + return [barController_ bookmarkModel]; +} + +- (BOOL)draggingAllowed:(id<NSDraggingInfo>)info { + return [barController_ draggingAllowed:info]; +} + +// TODO(jrg): Refactor BookmarkBarFolder common code. http://crbug.com/35966 +// Most of the work (e.g. drop indicator) is taken care of in the +// folder_view. Here we handle hover open issues for subfolders. +// Caution: there are subtle differences between this one and +// bookmark_bar_controller.mm's version. +- (NSDragOperation)draggingEntered:(id<NSDraggingInfo>)info { + NSPoint currentLocation = [info draggingLocation]; + BookmarkButton* button = [self buttonForDroppingOnAtPoint:currentLocation]; + + // Don't allow drops that would result in cycles. + if (button) { + NSData* data = [[info draggingPasteboard] + dataForType:kBookmarkButtonDragType]; + if (data && [info draggingSource]) { + BookmarkButton* sourceButton = nil; + [data getBytes:&sourceButton length:sizeof(sourceButton)]; + const BookmarkNode* sourceNode = [sourceButton bookmarkNode]; + const BookmarkNode* destNode = [button bookmarkNode]; + if (destNode->HasAncestor(sourceNode)) + button = nil; + } + } + // Delegate handling of dragging over a button to the |hoverState_| member. + return [hoverState_ draggingEnteredButton:button]; +} + +- (NSDragOperation)draggingUpdated:(id<NSDraggingInfo>)info { + return NSDragOperationMove; +} + +// Unlike bookmark_bar_controller, we need to keep track of dragging state. +// We also need to make sure we cancel the delayed hover close. +- (void)draggingExited:(id<NSDraggingInfo>)info { + // NOT the same as a cancel --> we may have moved the mouse into the submenu. + // Delegate handling of the hover button to the |hoverState_| member. + [hoverState_ draggingExited]; +} + +- (BOOL)dragShouldLockBarVisibility { + return [parentController_ dragShouldLockBarVisibility]; +} + +// TODO(jrg): ARGH more code dup. +// http://crbug.com/35966 +- (BOOL)dragButton:(BookmarkButton*)sourceButton + to:(NSPoint)point + copy:(BOOL)copy { + DCHECK([sourceButton isKindOfClass:[BookmarkButton class]]); + const BookmarkNode* sourceNode = [sourceButton bookmarkNode]; + return [self dragBookmark:sourceNode to:point copy:copy]; +} + +// TODO(mrossetti,jrg): Identical to the same function in BookmarkBarController. +// http://crbug.com/35966 +- (BOOL)dragBookmarkData:(id<NSDraggingInfo>)info { + BOOL dragged = NO; + std::vector<const BookmarkNode*> nodes([self retrieveBookmarkNodeData]); + if (nodes.size()) { + BOOL copy = !([info draggingSourceOperationMask] & NSDragOperationMove); + NSPoint dropPoint = [info draggingLocation]; + for (std::vector<const BookmarkNode*>::const_iterator it = nodes.begin(); + it != nodes.end(); ++it) { + const BookmarkNode* sourceNode = *it; + dragged = [self dragBookmark:sourceNode to:dropPoint copy:copy]; + } + } + return dragged; +} + +// TODO(mrossetti,jrg): Identical to the same function in BookmarkBarController. +// http://crbug.com/35966 +- (std::vector<const BookmarkNode*>)retrieveBookmarkNodeData { + std::vector<const BookmarkNode*> dragDataNodes; + BookmarkNodeData dragData; + if(dragData.ReadFromDragClipboard()) { + BookmarkModel* bookmarkModel = [self bookmarkModel]; + Profile* profile = bookmarkModel->profile(); + std::vector<const BookmarkNode*> nodes(dragData.GetNodes(profile)); + dragDataNodes.assign(nodes.begin(), nodes.end()); + } + return dragDataNodes; +} + +// Return YES if we should show the drop indicator, else NO. +// TODO(jrg): ARGH code dup! +// http://crbug.com/35966 +- (BOOL)shouldShowIndicatorShownForPoint:(NSPoint)point { + return ![self buttonForDroppingOnAtPoint:point]; +} + +// Button selection change code to support type to select and arrow key events. +#pragma mark Keyboard Support + +// Scroll the menu to show the selected button, if it's not already visible. +- (void)showSelectedButton { + int bMaxIndex = [self buttonCount] - 1; // Max array index in button array. + + // Is there a valid selected button? + if (bMaxIndex < 0 || selectedIndex_ < 0 || selectedIndex_ > bMaxIndex) + return; + + // Is the menu scrollable anyway? + if (![self canScrollUp] && ![self canScrollDown]) + return; + + // Now check to see if we need to scroll, which way, and how far. + CGFloat delta = 0.0; + NSPoint scrollPoint = [scrollView_ documentVisibleRect].origin; + CGFloat itemBottom = (bMaxIndex - selectedIndex_) * + bookmarks::kBookmarkFolderButtonHeight; + CGFloat itemTop = itemBottom + bookmarks::kBookmarkFolderButtonHeight; + CGFloat viewHeight = NSHeight([scrollView_ frame]); + + if (scrollPoint.y > itemBottom) { // Need to scroll down. + delta = scrollPoint.y - itemBottom; + } else if ((scrollPoint.y + viewHeight) < itemTop) { // Need to scroll up. + delta = -(itemTop - (scrollPoint.y + viewHeight)); + } else { // No need to scroll. + return; + } + + [self performOneScroll:delta]; +} + +// All changes to selectedness of buttons (aka fake menu items) ends up +// calling this method to actually flip the state of items. +// Needs to handle -1 as the invalid index (when nothing is selected) and +// greater than range values too. +- (void)setStateOfButtonByIndex:(int)index + state:(bool)state { + if (index >= 0 && index < [self buttonCount]) + [[buttons_ objectAtIndex:index] highlight:state]; +} + +// Selects the required button and deselects the previously selected one. +// An index of -1 means no selection. +- (void)setSelectedButtonByIndex:(int)index { + if (index == selectedIndex_) + return; + + [self setStateOfButtonByIndex:selectedIndex_ state:NO]; + [self setStateOfButtonByIndex:index state:YES]; + selectedIndex_ = index; + + [self showSelectedButton]; +} + +- (void)clearInputText { + [typedPrefix_ release]; + typedPrefix_ = nil; +} + +// Find the earliest item in the folder which has the target prefix. +// Returns nil if there is no prefix or there are no matches. +// These are in no particular order, and not particularly numerous, so linear +// search should be OK. +// -1 means no match. +- (int)earliestBookmarkIndexWithPrefix:(NSString*)prefix { + if ([prefix length] == 0) // Also handles nil. + return -1; + int maxButtons = [buttons_ count]; + NSString *lowercasePrefix = [prefix lowercaseString]; + for (int i = 0 ; i < maxButtons ; ++i) { + BookmarkButton* button = [buttons_ objectAtIndex:i]; + if ([[[button title] lowercaseString] hasPrefix:lowercasePrefix]) + return i; + } + return -1; +} + +- (void)setSelectedButtonByPrefix:(NSString*)prefix { + [self setSelectedButtonByIndex:[self earliestBookmarkIndexWithPrefix:prefix]]; +} + +- (void)selectPrevious { + int newIndex; + if (selectedIndex_ == 0) + return; + if (selectedIndex_ < 0) + newIndex = [self buttonCount] -1; + else + newIndex = std::max(selectedIndex_ - 1, 0); + [self setSelectedButtonByIndex:newIndex]; +} + +- (void) selectNext { + if (selectedIndex_ + 1 < [self buttonCount]) + [self setSelectedButtonByIndex:selectedIndex_ + 1]; +} + +- (BOOL)handleInputText:(NSString*)newText { + const unichar kUnicodeEscape = 0x001B; + const unichar kUnicodeSpace = 0x0020; + + // Event goes to the deepest nested open submenu. + if (folderController_) + return [folderController_ handleInputText:newText]; + + // Look for arrow keys or other function keys. + if ([newText length] == 1) { + // Get the 16-bit unicode char. + unichar theChar = [newText characterAtIndex:0]; + switch (theChar) { + + // Keys that trigger opening of the selection. + case kUnicodeSpace: // Space. + case NSNewlineCharacter: + case NSCarriageReturnCharacter: + case NSEnterCharacter: + if (selectedIndex_ >= 0 && selectedIndex_ < [self buttonCount]) { + [self openBookmark:[buttons_ objectAtIndex:selectedIndex_]]; + return NO; // NO because the selection-handling code will close later. + } else { + return YES; // Triggering with no selection closes the menu. + } + // Keys that cancel and close the menu. + case kUnicodeEscape: + case NSDeleteCharacter: + case NSBackspaceCharacter: + [self clearInputText]; + return YES; + // Keys that change selection directionally. + case NSUpArrowFunctionKey: + [self clearInputText]; + [self selectPrevious]; + return NO; + case NSDownArrowFunctionKey: + [self clearInputText]; + [self selectNext]; + return NO; + // Keys that open and close submenus. + case NSRightArrowFunctionKey: { + BookmarkButton* btn = [self buttonAtIndex:selectedIndex_]; + if (btn && [btn isFolder]) { + [self openBookmarkFolderFromButtonAndCloseOldOne:btn]; + [folderController_ selectNext]; + } + [self clearInputText]; + return NO; + } + case NSLeftArrowFunctionKey: + [self clearInputText]; + [parentController_ closeBookmarkFolder:self]; + return NO; + + // Check for other keys that should close the menu. + default: { + if (theChar > NSUpArrowFunctionKey && + theChar <= NSModeSwitchFunctionKey) { + [self clearInputText]; + return YES; + } + break; + } + } + } + + // It is a char or string worth adding to the type-select buffer. + NSString *newString = (!typedPrefix_) ? + newText : [typedPrefix_ stringByAppendingString:newText]; + [typedPrefix_ release]; + typedPrefix_ = [newString retain]; + [self setSelectedButtonByPrefix:typedPrefix_]; + return NO; +} + +// Return the y position for a drop indicator. +// +// TODO(jrg): again we have code dup, sort of, with +// bookmark_bar_controller.mm, but the axis is changed. +// http://crbug.com/35966 +- (CGFloat)indicatorPosForDragToPoint:(NSPoint)point { + CGFloat y = 0; + int destIndex = [self indexForDragToPoint:point]; + int numButtons = static_cast<int>([buttons_ count]); + + // If it's a drop strictly between existing buttons or at the very beginning + if (destIndex >= 0 && destIndex < numButtons) { + // ... put the indicator right between the buttons. + BookmarkButton* button = + [buttons_ objectAtIndex:static_cast<NSUInteger>(destIndex)]; + DCHECK(button); + NSRect buttonFrame = [button frame]; + y = NSMaxY(buttonFrame) + 0.5 * bookmarks::kBookmarkVerticalPadding; + + // If it's a drop at the end (past the last button, if there are any) ... + } else if (destIndex == numButtons) { + // and if it's past the last button ... + if (numButtons > 0) { + // ... find the last button, and put the indicator below it. + BookmarkButton* button = + [buttons_ objectAtIndex:static_cast<NSUInteger>(destIndex - 1)]; + DCHECK(button); + NSRect buttonFrame = [button frame]; + y = buttonFrame.origin.y - 0.5 * bookmarks::kBookmarkVerticalPadding; + + } + } else { + NOTREACHED(); + } + + return y; +} + +- (ui::ThemeProvider*)themeProvider { + return [parentController_ themeProvider]; +} + +- (void)childFolderWillShow:(id<BookmarkButtonControllerProtocol>)child { + // Do nothing. +} + +- (void)childFolderWillClose:(id<BookmarkButtonControllerProtocol>)child { + // Do nothing. +} + +- (BookmarkBarFolderController*)folderController { + return folderController_; +} + +- (void)faviconLoadedForNode:(const BookmarkNode*)node { + for (BookmarkButton* button in buttons_.get()) { + if ([button bookmarkNode] == node) { + [button setImage:[barController_ faviconForNode:node]]; + [button setNeedsDisplay:YES]; + return; + } + } + + // Node was not in this menu, try submenu. + if (folderController_) + [folderController_ faviconLoadedForNode:node]; +} + +// Add a new folder controller as triggered by the given folder button. +- (void)addNewFolderControllerWithParentButton:(BookmarkButton*)parentButton { + if (folderController_) + [self closeBookmarkFolder:self]; + + // Folder controller, like many window controllers, owns itself. + folderController_ = + [[BookmarkBarFolderController alloc] initWithParentButton:parentButton + parentController:self + barController:barController_]; + [folderController_ showWindow:self]; +} + +- (void)openAll:(const BookmarkNode*)node + disposition:(WindowOpenDisposition)disposition { + [barController_ openAll:node disposition:disposition]; +} + +- (void)addButtonForNode:(const BookmarkNode*)node + atIndex:(NSInteger)buttonIndex { + // Propose the frame for the new button. By default, this will be set to the + // topmost button's frame (and there will always be one) offset upward in + // anticipation of insertion. + NSRect newButtonFrame = [[buttons_ objectAtIndex:0] frame]; + newButtonFrame.origin.y += bookmarks::kBookmarkFolderButtonHeight; + // When adding a button to an empty folder we must remove the 'empty' + // placeholder button. This can be detected by checking for a parent + // child count of 1. + const BookmarkNode* parentNode = node->parent(); + if (parentNode->child_count() == 1) { + BookmarkButton* emptyButton = [buttons_ lastObject]; + newButtonFrame = [emptyButton frame]; + [emptyButton setDelegate:nil]; + [emptyButton removeFromSuperview]; + [buttons_ removeLastObject]; + } + + if (buttonIndex == -1 || buttonIndex > (NSInteger)[buttons_ count]) + buttonIndex = [buttons_ count]; + + // Offset upward by one button height all buttons above insertion location. + BookmarkButton* button = nil; // Remember so it can be de-highlighted. + for (NSInteger i = 0; i < buttonIndex; ++i) { + button = [buttons_ objectAtIndex:i]; + // Remember this location in case it's the last button being moved + // which is where the new button will be located. + newButtonFrame = [button frame]; + NSRect buttonFrame = [button frame]; + buttonFrame.origin.y += bookmarks::kBookmarkFolderButtonHeight; + [button setFrame:buttonFrame]; + } + [[button cell] mouseExited:nil]; // De-highlight. + BookmarkButton* newButton = [self makeButtonForNode:node + frame:newButtonFrame]; + [buttons_ insertObject:newButton atIndex:buttonIndex]; + [folderView_ addSubview:newButton]; + + // Close any child folder(s) which may still be open. + [self closeBookmarkFolder:self]; + + [self adjustWindowForButtonCount:[buttons_ count]]; +} + +// More code which essentially duplicates that of BookmarkBarController. +// TODO(mrossetti,jrg): http://crbug.com/35966 +- (BOOL)addURLs:(NSArray*)urls withTitles:(NSArray*)titles at:(NSPoint)point { + DCHECK([urls count] == [titles count]); + BOOL nodesWereAdded = NO; + // Figure out where these new bookmarks nodes are to be added. + BookmarkButton* button = [self buttonForDroppingOnAtPoint:point]; + BookmarkModel* bookmarkModel = [self bookmarkModel]; + const BookmarkNode* destParent = NULL; + int destIndex = 0; + if ([button isFolder]) { + destParent = [button bookmarkNode]; + // Drop it at the end. + destIndex = [button bookmarkNode]->child_count(); + } else { + // Else we're dropping somewhere in the folder, so find the right spot. + destParent = [parentButton_ bookmarkNode]; + destIndex = [self indexForDragToPoint:point]; + // Be careful if the number of buttons != number of nodes. + destIndex += [[parentButton_ cell] startingChildIndex]; + } + + // Create and add the new bookmark nodes. + size_t urlCount = [urls count]; + for (size_t i = 0; i < urlCount; ++i) { + GURL gurl; + const char* string = [[urls objectAtIndex:i] UTF8String]; + if (string) + gurl = GURL(string); + // We only expect to receive valid URLs. + DCHECK(gurl.is_valid()); + if (gurl.is_valid()) { + bookmarkModel->AddURL(destParent, + destIndex++, + base::SysNSStringToUTF16([titles objectAtIndex:i]), + gurl); + nodesWereAdded = YES; + } + } + return nodesWereAdded; +} + +- (void)moveButtonFromIndex:(NSInteger)fromIndex toIndex:(NSInteger)toIndex { + if (fromIndex != toIndex) { + if (toIndex == -1) + toIndex = [buttons_ count]; + BookmarkButton* movedButton = [buttons_ objectAtIndex:fromIndex]; + if (movedButton == buttonThatMouseIsIn_) + buttonThatMouseIsIn_ = nil; + [buttons_ removeObjectAtIndex:fromIndex]; + NSRect movedFrame = [movedButton frame]; + NSPoint toOrigin = movedFrame.origin; + [movedButton setHidden:YES]; + if (fromIndex < toIndex) { + BookmarkButton* targetButton = [buttons_ objectAtIndex:toIndex - 1]; + toOrigin = [targetButton frame].origin; + for (NSInteger i = fromIndex; i < toIndex; ++i) { + BookmarkButton* button = [buttons_ objectAtIndex:i]; + NSRect frame = [button frame]; + frame.origin.y += bookmarks::kBookmarkFolderButtonHeight; + [button setFrameOrigin:frame.origin]; + } + } else { + BookmarkButton* targetButton = [buttons_ objectAtIndex:toIndex]; + toOrigin = [targetButton frame].origin; + for (NSInteger i = fromIndex - 1; i >= toIndex; --i) { + BookmarkButton* button = [buttons_ objectAtIndex:i]; + NSRect buttonFrame = [button frame]; + buttonFrame.origin.y -= bookmarks::kBookmarkFolderButtonHeight; + [button setFrameOrigin:buttonFrame.origin]; + } + } + [buttons_ insertObject:movedButton atIndex:toIndex]; + [movedButton setFrameOrigin:toOrigin]; + [movedButton setHidden:NO]; + } +} + +// TODO(jrg): Refactor BookmarkBarFolder common code. http://crbug.com/35966 +- (void)removeButton:(NSInteger)buttonIndex animate:(BOOL)animate { + // TODO(mrossetti): Get disappearing animation to work. http://crbug.com/42360 + BookmarkButton* oldButton = [buttons_ objectAtIndex:buttonIndex]; + NSPoint poofPoint = [oldButton screenLocationForRemoveAnimation]; + + // If a hover-open is pending, cancel it. + if (oldButton == buttonThatMouseIsIn_) { + [NSObject cancelPreviousPerformRequestsWithTarget:self]; + buttonThatMouseIsIn_ = nil; + } + + // Deleting a button causes rearrangement that enables us to lose a + // mouse-exited event. This problem doesn't appear to exist with + // other keep-menu-open options (e.g. add folder). Since the + // showsBorderOnlyWhileMouseInside uses a tracking area, simple + // tricks (e.g. sending an extra mouseExited: to the button) don't + // fix the problem. + // http://crbug.com/54324 + for (NSButton* button in buttons_.get()) { + if ([button showsBorderOnlyWhileMouseInside]) { + [button setShowsBorderOnlyWhileMouseInside:NO]; + [button setShowsBorderOnlyWhileMouseInside:YES]; + } + } + + [oldButton setDelegate:nil]; + [oldButton removeFromSuperview]; + [buttons_ removeObjectAtIndex:buttonIndex]; + for (NSInteger i = 0; i < buttonIndex; ++i) { + BookmarkButton* button = [buttons_ objectAtIndex:i]; + NSRect buttonFrame = [button frame]; + buttonFrame.origin.y -= bookmarks::kBookmarkFolderButtonHeight; + [button setFrame:buttonFrame]; + } + // Search for and adjust submenus, if necessary. + NSInteger buttonCount = [buttons_ count]; + if (buttonCount) { + BookmarkButton* subButton = [folderController_ parentButton]; + for (NSButton* aButton in buttons_.get()) { + // If this button is showing its menu then we need to move the menu, too. + if (aButton == subButton) + [folderController_ offsetFolderMenuWindow:NSMakeSize(0.0, + bookmarks::kBookmarkBarHeight)]; + } + } else { + // If all nodes have been removed from this folder then add in the + // 'empty' placeholder button. + NSRect buttonFrame = + NSMakeRect(0.0, 0.0, bookmarks::kDefaultBookmarkWidth, + bookmarks::kBookmarkFolderButtonHeight); + BookmarkButton* button = [self makeButtonForNode:nil + frame:buttonFrame]; + [buttons_ addObject:button]; + [folderView_ addSubview:button]; + buttonCount = 1; + } + + [self adjustWindowForButtonCount:buttonCount]; + + if (animate && !ignoreAnimations_) + NSShowAnimationEffect(NSAnimationEffectDisappearingItemDefault, poofPoint, + NSZeroSize, nil, nil, nil); +} + +- (id<BookmarkButtonControllerProtocol>)controllerForNode: + (const BookmarkNode*)node { + // See if we are holding this node, otherwise see if it is in our + // hierarchy of visible folder menus. + if ([parentButton_ bookmarkNode] == node) + return self; + return [folderController_ controllerForNode:node]; +} + +#pragma mark TestingAPI Only + +- (BOOL)canScrollUp { + return ![scrollUpArrowView_ isHidden]; +} + +- (BOOL)canScrollDown { + return ![scrollDownArrowView_ isHidden]; +} + +- (CGFloat)verticalScrollArrowHeight { + return verticalScrollArrowHeight_; +} + +- (NSView*)visibleView { + return visibleView_; +} + +- (NSScrollView*)scrollView { + return scrollView_; +} + +- (NSView*)folderView { + return folderView_; +} + +- (void)setIgnoreAnimations:(BOOL)ignore { + ignoreAnimations_ = ignore; +} + +- (BookmarkButton*)buttonThatMouseIsIn { + return buttonThatMouseIsIn_; +} + +@end // BookmarkBarFolderController diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller_unittest.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller_unittest.mm index 3c2df2b..8a52dd2c 100644 --- a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller_unittest.mm +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller_unittest.mm @@ -8,11 +8,11 @@ #include "base/memory/scoped_nsobject.h" #include "base/utf_string_conversions.h" #include "chrome/browser/bookmarks/bookmark_model.h" +#import "chrome/browser/ui/cocoa/animation_utils.h" #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_constants.h" #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h" +#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell.h" #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h" -#import "chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell.h" -#include "chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.h" #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_unittest_helper.h" #include "chrome/browser/ui/cocoa/cocoa_profile_test.h" #import "chrome/browser/ui/cocoa/cocoa_test_helper.h" @@ -22,164 +22,1550 @@ #import "testing/gtest_mac.h" #include "testing/platform_test.h" +// Add a redirect to make testing easier. +@interface BookmarkBarFolderController(MakeTestingEasier) +- (IBAction)openBookmarkFolderFromButton:(id)sender; +- (void)validateMenuSpacing; +@end + +@implementation BookmarkBarFolderController(MakeTestingEasier) +- (IBAction)openBookmarkFolderFromButton:(id)sender { + [[self folderTarget] openBookmarkFolderFromButton:sender]; +} + +// Utility function to verify that the buttons in this folder are all +// evenly spaced in a progressive manner. +- (void)validateMenuSpacing { + BOOL firstButton = YES; + CGFloat lastVerticalOffset = 0.0; + for (BookmarkButton* button in [self buttons]) { + if (firstButton) { + firstButton = NO; + lastVerticalOffset = [button frame].origin.y; + } else { + CGFloat nextVerticalOffset = [button frame].origin.y; + EXPECT_CGFLOAT_EQ(lastVerticalOffset - + bookmarks::kBookmarkFolderButtonHeight, + nextVerticalOffset); + lastVerticalOffset = nextVerticalOffset; + } + } +} +@end + +// Don't use a high window level when running unit tests -- it'll +// interfere with anything else you are working on. +// For testing. +@interface BookmarkBarFolderControllerNoLevel : BookmarkBarFolderController +@end + +@implementation BookmarkBarFolderControllerNoLevel +- (void)configureWindowLevel { + // Intentionally empty. +} +@end + +@interface BookmarkBarFolderControllerPong : BookmarkBarFolderController { + BOOL childFolderWillShow_; + BOOL childFolderWillClose_; +} +@property (nonatomic, readonly) BOOL childFolderWillShow; +@property (nonatomic, readonly) BOOL childFolderWillClose; +@end + +@implementation BookmarkBarFolderControllerPong +@synthesize childFolderWillShow = childFolderWillShow_; +@synthesize childFolderWillClose = childFolderWillClose_; + +- (void)childFolderWillShow:(id<BookmarkButtonControllerProtocol>)child { + childFolderWillShow_ = YES; +} + +- (void)childFolderWillClose:(id<BookmarkButtonControllerProtocol>)child { + childFolderWillClose_ = YES; +} + +// We don't have a real BookmarkBarController as our parent root so +// we fake this one out. +- (void)closeAllBookmarkFolders { + [self closeBookmarkFolder:self]; +} + +@end + namespace { const int kLotsOfNodesCount = 150; }; +// Redirect certain calls so they can be seen by tests. + +@interface BookmarkBarControllerChildFolderRedirect : BookmarkBarController { + BookmarkBarFolderController* childFolderDelegate_; +} +@property (nonatomic, assign) BookmarkBarFolderController* childFolderDelegate; +@end + +@implementation BookmarkBarControllerChildFolderRedirect + +@synthesize childFolderDelegate = childFolderDelegate_; + +- (void)childFolderWillShow:(id<BookmarkButtonControllerProtocol>)child { + [childFolderDelegate_ childFolderWillShow:child]; +} + +- (void)childFolderWillClose:(id<BookmarkButtonControllerProtocol>)child { + [childFolderDelegate_ childFolderWillClose:child]; +} + +@end + + class BookmarkBarFolderControllerTest : public CocoaProfileTest { public: - BookmarkModel* GetModel() { - return profile()->GetBookmarkModel(); + scoped_nsobject<BookmarkBarControllerChildFolderRedirect> bar_; + const BookmarkNode* folderA_; // Owned by model. + const BookmarkNode* longTitleNode_; // Owned by model. + + virtual void SetUp() { + CocoaProfileTest::SetUp(); + ASSERT_TRUE(profile()); + + CreateModel(); + } + + void CreateModel() { + BookmarkModel* model = profile()->GetBookmarkModel(); + const BookmarkNode* parent = model->bookmark_bar_node(); + const BookmarkNode* folderA = model->AddFolder(parent, + parent->child_count(), + ASCIIToUTF16("folder")); + folderA_ = folderA; + model->AddFolder(parent, parent->child_count(), + ASCIIToUTF16("sibbling folder")); + const BookmarkNode* folderB = model->AddFolder(folderA, + folderA->child_count(), + ASCIIToUTF16("subfolder 1")); + model->AddFolder(folderA, + folderA->child_count(), + ASCIIToUTF16("subfolder 2")); + model->AddURL(folderA, folderA->child_count(), ASCIIToUTF16("title a"), + GURL("http://www.google.com/a")); + longTitleNode_ = model->AddURL( + folderA, folderA->child_count(), + ASCIIToUTF16("title super duper long long whoa momma title you betcha"), + GURL("http://www.google.com/b")); + model->AddURL(folderB, folderB->child_count(), ASCIIToUTF16("t"), + GURL("http://www.google.com/c")); + + bar_.reset( + [[BookmarkBarControllerChildFolderRedirect alloc] + initWithBrowser:browser() + initialWidth:300 + delegate:nil + resizeDelegate:nil]); + [bar_ loaded:model]; + // Make parent frame for bookmark bar then open it. + NSRect frame = [[test_window() contentView] frame]; + frame = NSMakeRect(frame.origin.x, + frame.size.height - bookmarks::kNTPBookmarkBarHeight, + frame.size.width, bookmarks::kNTPBookmarkBarHeight); + NSView* fakeToolbarView = [[[NSView alloc] initWithFrame:frame] + autorelease]; + [[test_window() contentView] addSubview:fakeToolbarView]; + [fakeToolbarView addSubview:[bar_ view]]; + [bar_ setBookmarkBarEnabled:YES]; } - BookmarkBarFolderController* CreateController(const BookmarkNode* node) { - // The button will be owned by the controller. - scoped_nsobject<BookmarkButton> button( - [[BookmarkButton alloc] initWithFrame:NSMakeRect(0, 0, 500, 500)]); - scoped_nsobject<BookmarkButtonCell> cell( - [[BookmarkButtonCell alloc] initTextCell:@"foo"]); - [button setCell:cell]; - [cell setBookmarkNode:node]; + // Remove the bookmark with the long title. + void RemoveLongTitleNode() { + BookmarkModel* model = profile()->GetBookmarkModel(); + model->Remove(longTitleNode_->parent(), + longTitleNode_->parent()->GetIndexOf(longTitleNode_)); + } - BookmarkModel* model = GetModel(); - return [[BookmarkBarFolderController alloc] initWithParentButton:button - bookmarkModel:model - barController:nil]; + // Add LOTS of nodes to our model if needed (e.g. scrolling). + // Returns the number of nodes added. + int AddLotsOfNodes() { + BookmarkModel* model = profile()->GetBookmarkModel(); + for (int i = 0; i < kLotsOfNodesCount; i++) { + model->AddURL(folderA_, folderA_->child_count(), + ASCIIToUTF16("repeated title"), + GURL("http://www.google.com/repeated/url")); + } + return kLotsOfNodesCount; } - NSMenu* GetMenu(BookmarkBarFolderController* controller) { - return [[controller menuBridge]->controller() menu]; + // Return a simple BookmarkBarFolderController. + BookmarkBarFolderControllerPong* SimpleBookmarkBarFolderController() { + BookmarkButton* parentButton = [[bar_ buttons] objectAtIndex:0]; + BookmarkBarFolderControllerPong* c = + [[BookmarkBarFolderControllerPong alloc] + initWithParentButton:parentButton + parentController:nil + barController:bar_]; + [c window]; // Force nib load. + return c; } }; -TEST_F(BookmarkBarFolderControllerTest, SimpleFolder) { - // Create the model. - BookmarkModel* model = GetModel(); - const BookmarkNode* root = model->bookmark_bar_node(); - - model->AddURL(root, root->child_count(), ASCIIToUTF16("ignored"), - GURL("http://example.com")); - - const BookmarkNode* folder = model->AddFolder(root, root->child_count(), - ASCIIToUTF16("folder")); - model->AddURL(folder, folder->child_count(), ASCIIToUTF16("item 1"), - GURL("http://www.google.com/")); - model->AddURL(folder, folder->child_count(), ASCIIToUTF16("item 2"), - GURL("http://www.chromium.org/")); - model->AddURL(folder, folder->child_count(), ASCIIToUTF16("item 3"), - GURL("http://build.chromium.org/")); - - model->AddURL(root, root->child_count(), ASCIIToUTF16("ignored 2"), - GURL("http://example2.com")); - - // Create the controller and menu. - scoped_nsobject<BookmarkBarFolderController> bbfc(CreateController(folder)); - CloseFolderAfterDelay(bbfc, 0.1); - [bbfc openMenu]; - - NSArray* items = [GetMenu(bbfc) itemArray]; - ASSERT_EQ(3u, [items count]); - - EXPECT_NSEQ(@"item 1", [[items objectAtIndex:0] title]); - EXPECT_NSEQ(@"item 2", [[items objectAtIndex:1] title]); - EXPECT_NSEQ(@"item 3", [[items objectAtIndex:2] title]); -} - -TEST_F(BookmarkBarFolderControllerTest, NestedFolder) { - // Create the model. - BookmarkModel* model = GetModel(); - const BookmarkNode* root = model->bookmark_bar_node(); - - model->AddURL(root, root->child_count(), ASCIIToUTF16("ignored"), - GURL("http://example.com")); - model->AddURL(root, root->child_count(), ASCIIToUTF16("ignored 2"), - GURL("http://example2.com")); - - const BookmarkNode* folder = model->AddFolder(root, root->child_count(), - ASCIIToUTF16("folder")); - model->AddURL(folder, folder->child_count(), ASCIIToUTF16("item 1"), - GURL("http://www.google.com/")); - model->AddURL(folder, folder->child_count(), ASCIIToUTF16("item 2"), - GURL("http://www.chromium.org/")); - model->AddURL(folder, folder->child_count(), ASCIIToUTF16("item 3"), - GURL("http://build.chromium.org/")); - const BookmarkNode* subfolder = model->AddFolder(folder, - folder->child_count(), ASCIIToUTF16("subfolder")); - model->AddURL(folder, folder->child_count(), ASCIIToUTF16("item 4"), - GURL("http://dev.chromium.org/")); - - model->AddURL(subfolder, subfolder->child_count(), ASCIIToUTF16("subitem 1"), - GURL("http://gmail.com")); - model->AddURL(subfolder, subfolder->child_count(), ASCIIToUTF16("subitem 2"), - GURL("http://google.com/+")); - - // Create the controller and menu. - scoped_nsobject<BookmarkBarFolderController> bbfc(CreateController(folder)); - CloseFolderAfterDelay(bbfc, 0.1); - [bbfc openMenu]; - - NSArray* items = [GetMenu(bbfc) itemArray]; - ASSERT_EQ(5u, [items count]); - - EXPECT_NSEQ(@"item 1", [[items objectAtIndex:0] title]); - EXPECT_NSEQ(@"item 2", [[items objectAtIndex:1] title]); - EXPECT_NSEQ(@"item 3", [[items objectAtIndex:2] title]); - EXPECT_NSEQ(@"subfolder", [[items objectAtIndex:3] title]); - EXPECT_NSEQ(@"item 4", [[items objectAtIndex:4] title]); - - NSArray* subitems = [[[items objectAtIndex:3] submenu] itemArray]; - ASSERT_EQ(2u, [subitems count]); - EXPECT_NSEQ(@"subitem 1", [[subitems objectAtIndex:0] title]); - EXPECT_NSEQ(@"subitem 2", [[subitems objectAtIndex:1] title]); -} - -TEST_F(BookmarkBarFolderControllerTest, OffTheSide) { - // Create the model. - BookmarkModel* model = GetModel(); - const BookmarkNode* root = model->bookmark_bar_node(); - - model->AddURL(root, root->child_count(), ASCIIToUTF16("item 1"), - GURL("http://example.com")); - model->AddURL(root, root->child_count(), ASCIIToUTF16("item 2"), - GURL("http://www.google.com/")); - model->AddURL(root, root->child_count(), ASCIIToUTF16("item 3"), - GURL("http://www.chromium.org/")); - model->AddURL(root, root->child_count(), ASCIIToUTF16("item 4"), - GURL("http://build.chromium.org/")); - model->AddURL(root, root->child_count(), ASCIIToUTF16("item 5"), - GURL("http://example2.com")); - - // Create the controller and menu. - scoped_nsobject<BookmarkBarFolderController> bbfc(CreateController(root)); - CloseFolderAfterDelay(bbfc, 0.1); - [bbfc openMenu]; - - NSArray* items = [GetMenu(bbfc) itemArray]; - ASSERT_EQ(5u, [items count]); - - EXPECT_NSEQ(@"item 1", [[items objectAtIndex:0] title]); - EXPECT_NSEQ(@"item 2", [[items objectAtIndex:1] title]); - EXPECT_NSEQ(@"item 3", [[items objectAtIndex:2] title]); - EXPECT_NSEQ(@"item 4", [[items objectAtIndex:3] title]); - EXPECT_NSEQ(@"item 5", [[items objectAtIndex:4] title]); - - [bbfc setOffTheSideNodeStartIndex:1]; - CloseFolderAfterDelay(bbfc, 0.1); - [bbfc openMenu]; - items = [GetMenu(bbfc) itemArray]; - ASSERT_EQ(4u, [items count]); - EXPECT_NSEQ(@"item 2", [[items objectAtIndex:0] title]); - - [bbfc setOffTheSideNodeStartIndex:4]; - CloseFolderAfterDelay(bbfc, 0.1); - [bbfc openMenu]; - items = [GetMenu(bbfc) itemArray]; - ASSERT_EQ(1u, [items count]); - EXPECT_NSEQ(@"item 5", [[items objectAtIndex:0] title]); - - [bbfc setOffTheSideNodeStartIndex:0]; - CloseFolderAfterDelay(bbfc, 0.1); - [bbfc openMenu]; - items = [GetMenu(bbfc) itemArray]; - EXPECT_EQ(5u, [items count]); +TEST_F(BookmarkBarFolderControllerTest, InitCreateAndDelete) { + scoped_nsobject<BookmarkBarFolderController> bbfc; + bbfc.reset(SimpleBookmarkBarFolderController()); + + // Make sure none of the buttons overlap, that all are inside + // the content frame, and their cells are of the proper class. + NSArray* buttons = [bbfc buttons]; + EXPECT_TRUE([buttons count]); + for (unsigned int i = 0; i < ([buttons count]-1); i++) { + EXPECT_FALSE(NSContainsRect([[buttons objectAtIndex:i] frame], + [[buttons objectAtIndex:i+1] frame])); + } + Class cellClass = [BookmarkBarFolderButtonCell class]; + for (BookmarkButton* button in buttons) { + NSRect r = [[bbfc folderView] convertRect:[button frame] fromView:button]; + // TODO(jrg): remove this adjustment. + NSRect bigger = NSInsetRect([[bbfc folderView] frame], -2, 0); + EXPECT_TRUE(NSContainsRect(bigger, r)); + EXPECT_TRUE([[button cell] isKindOfClass:cellClass]); + } + + // Confirm folder buttons have no tooltip. The important thing + // really is that we insure folders and non-folders are treated + // differently; not sure of any other generic way to do this. + for (BookmarkButton* button in buttons) { + if ([button isFolder]) + EXPECT_FALSE([button toolTip]); + else + EXPECT_TRUE([button toolTip]); + } +} + +// Make sure closing of the window releases the controller. +// (e.g. valgrind shouldn't complain if we do this). +TEST_F(BookmarkBarFolderControllerTest, ReleaseOnClose) { + scoped_nsobject<BookmarkBarFolderController> bbfc; + bbfc.reset(SimpleBookmarkBarFolderController()); + EXPECT_TRUE(bbfc.get()); + + [bbfc retain]; // stop the scoped_nsobject from doing anything + [[bbfc window] close]; // trigger an autorelease of bbfc.get() +} + +TEST_F(BookmarkBarFolderControllerTest, BasicPosition) { + BookmarkButton* parentButton = [[bar_ buttons] objectAtIndex:0]; + EXPECT_TRUE(parentButton); + + // If parent is a BookmarkBarController, grow down. + scoped_nsobject<BookmarkBarFolderController> bbfc; + bbfc.reset([[BookmarkBarFolderController alloc] + initWithParentButton:parentButton + parentController:nil + barController:bar_]); + [bbfc window]; + NSPoint pt = [bbfc windowTopLeftForWidth:0 height:100]; // screen coords + NSPoint buttonOriginInScreen = + [[parentButton window] + convertBaseToScreen:[parentButton + convertRectToBase:[parentButton frame]].origin]; + // Within margin + EXPECT_LE(abs(pt.x - buttonOriginInScreen.x), + bookmarks::kBookmarkMenuOverlap+1); + EXPECT_LE(abs(pt.y - buttonOriginInScreen.y), + bookmarks::kBookmarkMenuOverlap+1); + + // Make sure we see the window shift left if it spills off the screen + pt = [bbfc windowTopLeftForWidth:0 height:100]; + NSPoint shifted = [bbfc windowTopLeftForWidth:9999999 height:100]; + EXPECT_LT(shifted.x, pt.x); + + // If parent is a BookmarkBarFolderController, grow right. + scoped_nsobject<BookmarkBarFolderController> bbfc2; + bbfc2.reset([[BookmarkBarFolderController alloc] + initWithParentButton:[[bbfc buttons] objectAtIndex:0] + parentController:bbfc.get() + barController:bar_]); + [bbfc2 window]; + pt = [bbfc2 windowTopLeftForWidth:0 height:100]; + // We're now overlapping the window a bit. + EXPECT_EQ(pt.x, NSMaxX([[bbfc.get() window] frame]) - + bookmarks::kBookmarkMenuOverlap); +} + +// Confirm we grow right until end of screen, then start growing left +// until end of screen again, then right. +TEST_F(BookmarkBarFolderControllerTest, PositionRightLeftRight) { + BookmarkModel* model = profile()->GetBookmarkModel(); + const BookmarkNode* parent = model->bookmark_bar_node(); + const BookmarkNode* folder = parent; + + const int count = 100; + int i; + // Make some super duper deeply nested folders. + for (i = 0; i < count; i++) { + folder = model->AddFolder(folder, 0, ASCIIToUTF16("nested folder")); + } + + // Setup initial state for opening all folders. + folder = parent; + BookmarkButton* parentButton = [[bar_ buttons] objectAtIndex:0]; + BookmarkBarFolderController* parentController = nil; + EXPECT_TRUE(parentButton); + + // Open them all. + scoped_nsobject<NSMutableArray> folder_controller_array; + folder_controller_array.reset([[NSMutableArray array] retain]); + for (i=0; i<count; i++) { + BookmarkBarFolderControllerNoLevel* bbfcl = + [[BookmarkBarFolderControllerNoLevel alloc] + initWithParentButton:parentButton + parentController:parentController + barController:bar_]; + [folder_controller_array addObject:bbfcl]; + [bbfcl autorelease]; + [bbfcl window]; + parentController = bbfcl; + parentButton = [[bbfcl buttons] objectAtIndex:0]; + } + + // Make vector of all x positions. + std::vector<CGFloat> leftPositions; + for (i=0; i<count; i++) { + CGFloat x = [[[folder_controller_array objectAtIndex:i] window] + frame].origin.x; + leftPositions.push_back(x); + } + + // Make sure the first few grow right. + for (i=0; i<3; i++) + EXPECT_TRUE(leftPositions[i+1] > leftPositions[i]); + + // Look for the first "grow left". + while (leftPositions[i] > leftPositions[i-1]) + i++; + // Confirm the next few also grow left. + int j; + for (j=i; j<i+3; j++) + EXPECT_TRUE(leftPositions[j+1] < leftPositions[j]); + i = j; + + // Finally, confirm we see a "grow right" once more. + while (leftPositions[i] < leftPositions[i-1]) + i++; + // (No need to EXPECT a final "grow right"; if we didn't find one + // we'd get a C++ array bounds exception). +} + +TEST_F(BookmarkBarFolderControllerTest, DropDestination) { + scoped_nsobject<BookmarkBarFolderController> bbfc; + bbfc.reset(SimpleBookmarkBarFolderController()); + EXPECT_TRUE(bbfc.get()); + + // Confirm "off the top" and "off the bottom" match no buttons. + NSPoint p = NSMakePoint(NSMidX([[bbfc folderView] frame]), 10000); + EXPECT_FALSE([bbfc buttonForDroppingOnAtPoint:p]); + EXPECT_TRUE([bbfc shouldShowIndicatorShownForPoint:p]); + p = NSMakePoint(NSMidX([[bbfc folderView] frame]), -1); + EXPECT_FALSE([bbfc buttonForDroppingOnAtPoint:p]); + EXPECT_TRUE([bbfc shouldShowIndicatorShownForPoint:p]); + + // Confirm "right in the center" (give or take a pixel) is a match, + // and confirm "just barely in the button" is not. Anything more + // specific seems likely to be tweaked. We don't loop over all + // buttons because the scroll view makes them not visible. + for (BookmarkButton* button in [bbfc buttons]) { + CGFloat x = NSMidX([button frame]); + CGFloat y = NSMidY([button frame]); + // Somewhere near the center: a match (but only if a folder!) + if ([button isFolder]) { + EXPECT_EQ(button, + [bbfc buttonForDroppingOnAtPoint:NSMakePoint(x-1, y+1)]); + EXPECT_EQ(button, + [bbfc buttonForDroppingOnAtPoint:NSMakePoint(x+1, y-1)]); + EXPECT_FALSE([bbfc shouldShowIndicatorShownForPoint:NSMakePoint(x, y)]);; + } else { + // If not a folder we don't drop into it. + EXPECT_FALSE([bbfc buttonForDroppingOnAtPoint:NSMakePoint(x-1, y+1)]); + EXPECT_FALSE([bbfc buttonForDroppingOnAtPoint:NSMakePoint(x+1, y-1)]); + EXPECT_TRUE([bbfc shouldShowIndicatorShownForPoint:NSMakePoint(x, y)]);; + } + } } + +TEST_F(BookmarkBarFolderControllerTest, OpenFolder) { + scoped_nsobject<BookmarkBarFolderController> bbfc; + bbfc.reset(SimpleBookmarkBarFolderController()); + EXPECT_TRUE(bbfc.get()); + + EXPECT_FALSE([bbfc folderController]); + BookmarkButton* button = [[bbfc buttons] objectAtIndex:0]; + [bbfc openBookmarkFolderFromButton:button]; + id controller = [bbfc folderController]; + EXPECT_TRUE(controller); + EXPECT_EQ([controller parentButton], button); + + // Click the same one --> it gets closed. + [bbfc openBookmarkFolderFromButton:[[bbfc buttons] objectAtIndex:0]]; + EXPECT_FALSE([bbfc folderController]); + + // Open a new one --> change. + [bbfc openBookmarkFolderFromButton:[[bbfc buttons] objectAtIndex:1]]; + EXPECT_NE(controller, [bbfc folderController]); + EXPECT_NE([[bbfc folderController] parentButton], button); + + // Close it --> all gone! + [bbfc closeBookmarkFolder:nil]; + EXPECT_FALSE([bbfc folderController]); +} + +TEST_F(BookmarkBarFolderControllerTest, ChildFolderCallbacks) { + scoped_nsobject<BookmarkBarFolderControllerPong> bbfc; + bbfc.reset(SimpleBookmarkBarFolderController()); + EXPECT_TRUE(bbfc.get()); + [bar_ setChildFolderDelegate:bbfc.get()]; + + EXPECT_FALSE([bbfc childFolderWillShow]); + [bbfc openBookmarkFolderFromButton:[[bbfc buttons] objectAtIndex:0]]; + EXPECT_TRUE([bbfc childFolderWillShow]); + + EXPECT_FALSE([bbfc childFolderWillClose]); + [bbfc closeBookmarkFolder:nil]; + EXPECT_TRUE([bbfc childFolderWillClose]); + + [bar_ setChildFolderDelegate:nil]; +} + +// Make sure bookmark folders have variable widths. +TEST_F(BookmarkBarFolderControllerTest, ChildFolderWidth) { + scoped_nsobject<BookmarkBarFolderController> bbfc; + + bbfc.reset(SimpleBookmarkBarFolderController()); + EXPECT_TRUE(bbfc.get()); + [bbfc showWindow:bbfc.get()]; + CGFloat wideWidth = NSWidth([[bbfc window] frame]); + + RemoveLongTitleNode(); + bbfc.reset(SimpleBookmarkBarFolderController()); + EXPECT_TRUE(bbfc.get()); + CGFloat thinWidth = NSWidth([[bbfc window] frame]); + + // Make sure window size changed as expected. + EXPECT_GT(wideWidth, thinWidth); +} + +// Simple scrolling tests. +// Currently flaky due to a changed definition of the correct menu boundaries. +TEST_F(BookmarkBarFolderControllerTest, DISABLED_SimpleScroll) { + scoped_nsobject<BookmarkBarFolderController> bbfc; + NSRect screenFrame = [[NSScreen mainScreen] visibleFrame]; + CGFloat screenHeight = NSHeight(screenFrame); + int nodecount = AddLotsOfNodes(); + bbfc.reset(SimpleBookmarkBarFolderController()); + EXPECT_TRUE(bbfc.get()); + [bbfc showWindow:bbfc.get()]; + NSWindow* window = [bbfc window]; + + // The window should be shorter than the screen but reach exactly to the + // bottom of the screen since it's scrollable. + EXPECT_LT(NSHeight([window frame]), screenHeight); + EXPECT_CGFLOAT_EQ(0.0, [window frame].origin.y); + + // Initially, should show scroll-up but not scroll-down. + EXPECT_TRUE([bbfc canScrollUp]); + EXPECT_FALSE([bbfc canScrollDown]); + + // Scroll up a bit. Make sure the window has gotten bigger each time. + // Also, for each scroll, make sure our hit test finds a new button + // (to confirm the content area changed). + NSView* savedHit = nil; + NSScrollView* scrollView = [bbfc scrollView]; + + // Find the next-to-last button showing at the bottom of the window and + // use its center for hit testing. + BookmarkButton* targetButton = nil; + NSPoint scrollPoint = [scrollView documentVisibleRect].origin; + for (BookmarkButton* button in [bbfc buttons]) { + NSRect buttonFrame = [button frame]; + buttonFrame.origin.y -= scrollPoint.y; + if (buttonFrame.origin.y < 0.0) + break; + targetButton = button; + } + EXPECT_TRUE(targetButton != nil); + NSPoint hitPoint = [targetButton frame].origin; + hitPoint.x += 50.0; + hitPoint.y += (bookmarks::kBookmarkFolderButtonHeight / 2.0) - scrollPoint.y; + hitPoint = [targetButton convertPoint:hitPoint toView:scrollView]; + + for (int i = 0; i < 3; i++) { + CGFloat height = NSHeight([window frame]); + [bbfc performOneScroll:60]; + EXPECT_GT(NSHeight([window frame]), height); + NSView* hit = [scrollView hitTest:hitPoint]; + // We should hit a bookmark button. + EXPECT_TRUE([[hit className] isEqualToString:@"BookmarkButton"]); + EXPECT_NE(hit, savedHit); + savedHit = hit; + } + + // Keep scrolling up; make sure we never get bigger than the screen. + // Also confirm we never scroll the window off the screen. + bool bothAtOnce = false; + while ([bbfc canScrollUp]) { + [bbfc performOneScroll:60]; + EXPECT_TRUE(NSContainsRect([[NSScreen mainScreen] frame], [window frame])); + // Make sure, sometime during our scroll, we have the ability to + // scroll in either direction. + if ([bbfc canScrollUp] && + [bbfc canScrollDown]) + bothAtOnce = true; + } + EXPECT_TRUE(bothAtOnce); + + // Once we've scrolled to the end, our only option should be to scroll back. + EXPECT_FALSE([bbfc canScrollUp]); + EXPECT_TRUE([bbfc canScrollDown]); + + NSRect wholeScreenRect = [[NSScreen mainScreen] frame]; + + // Now scroll down and make sure the window size does not change. + // Also confirm we never scroll the window off the screen the other + // way. + for (int i = 0; i < nodecount+50; ++i) { + [bbfc performOneScroll:-60]; + // Once we can no longer scroll down the window height changes. + if (![bbfc canScrollDown]) + break; + EXPECT_TRUE(NSContainsRect(wholeScreenRect, [window frame])); + } + + EXPECT_GT(NSHeight(wholeScreenRect), NSHeight([window frame])); + EXPECT_TRUE(NSContainsRect(wholeScreenRect, [window frame])); +} + +// Folder menu sizing and placement while deleting bookmarks +// and scrolling tests. +TEST_F(BookmarkBarFolderControllerTest, MenuPlacementWhileScrollingDeleting) { + scoped_nsobject<BookmarkBarFolderController> bbfc; + AddLotsOfNodes(); + bbfc.reset(SimpleBookmarkBarFolderController()); + [bbfc showWindow:bbfc.get()]; + NSWindow* menuWindow = [bbfc window]; + BookmarkBarFolderController* folder = [bar_ folderController]; + NSArray* buttons = [folder buttons]; + + // Before scrolling any, delete a bookmark and make sure the window top has + // not moved. Pick a button which is near the top and visible. + CGFloat oldTop = [menuWindow frame].origin.y + NSHeight([menuWindow frame]); + BookmarkButton* button = [buttons objectAtIndex:3]; + [folder deleteBookmark:button]; + CGFloat newTop = [menuWindow frame].origin.y + NSHeight([menuWindow frame]); + EXPECT_CGFLOAT_EQ(oldTop, newTop); + + // Scroll so that both the top and bottom scroll arrows show, make sure + // the top of the window has moved up, then delete a visible button and + // make sure the top has not moved. + oldTop = newTop; + const CGFloat scrollOneBookmark = bookmarks::kBookmarkFolderButtonHeight + + bookmarks::kBookmarkVerticalPadding; + NSUInteger buttonCounter = 0; + NSUInteger extraButtonLimit = 3; + while (![bbfc canScrollDown] || extraButtonLimit > 0) { + [bbfc performOneScroll:scrollOneBookmark]; + ++buttonCounter; + if ([bbfc canScrollDown]) + --extraButtonLimit; + } + newTop = [menuWindow frame].origin.y + NSHeight([menuWindow frame]); + EXPECT_NE(oldTop, newTop); + oldTop = newTop; + button = [buttons objectAtIndex:buttonCounter + 3]; + [folder deleteBookmark:button]; + newTop = [menuWindow frame].origin.y + NSHeight([menuWindow frame]); + EXPECT_CGFLOAT_EQ(oldTop, newTop); + + // Scroll so that the top scroll arrow is no longer showing, make sure + // the top of the window has not moved, then delete a visible button and + // make sure the top has not moved. + while ([bbfc canScrollDown]) { + [bbfc performOneScroll:-scrollOneBookmark]; + --buttonCounter; + } + button = [buttons objectAtIndex:buttonCounter + 3]; + [folder deleteBookmark:button]; + newTop = [menuWindow frame].origin.y + NSHeight([menuWindow frame]); + EXPECT_CGFLOAT_EQ(oldTop - bookmarks::kScrollWindowVerticalMargin, newTop); +} + +@interface FakedDragInfo : NSObject { +@public + NSPoint dropLocation_; + NSDragOperation sourceMask_; +} +@property (nonatomic, assign) NSPoint dropLocation; +- (void)setDraggingSourceOperationMask:(NSDragOperation)mask; +@end + +@implementation FakedDragInfo + +@synthesize dropLocation = dropLocation_; + +- (id)init { + if ((self = [super init])) { + dropLocation_ = NSZeroPoint; + sourceMask_ = NSDragOperationMove; + } + return self; +} + +// NSDraggingInfo protocol functions. + +- (id)draggingPasteboard { + return self; +} + +- (id)draggingSource { + return self; +} + +- (NSDragOperation)draggingSourceOperationMask { + return sourceMask_; +} + +- (NSPoint)draggingLocation { + return dropLocation_; +} + +// Other functions. + +- (void)setDraggingSourceOperationMask:(NSDragOperation)mask { + sourceMask_ = mask; +} + +@end + + +class BookmarkBarFolderControllerMenuTest : public CocoaProfileTest { + public: + scoped_nsobject<NSView> parent_view_; + scoped_nsobject<ViewResizerPong> resizeDelegate_; + scoped_nsobject<BookmarkBarController> bar_; + + virtual void SetUp() { + CocoaProfileTest::SetUp(); + ASSERT_TRUE(browser()); + + resizeDelegate_.reset([[ViewResizerPong alloc] init]); + NSRect parent_frame = NSMakeRect(0, 0, 800, 50); + parent_view_.reset([[NSView alloc] initWithFrame:parent_frame]); + [parent_view_ setHidden:YES]; + bar_.reset([[BookmarkBarController alloc] + initWithBrowser:browser() + initialWidth:NSWidth(parent_frame) + delegate:nil + resizeDelegate:resizeDelegate_.get()]); + InstallAndToggleBar(bar_.get()); + } + + void InstallAndToggleBar(BookmarkBarController* bar) { + // Force loading of the nib. + [bar view]; + // Awkwardness to look like we've been installed. + [parent_view_ addSubview:[bar view]]; + NSRect frame = [[[bar view] superview] frame]; + frame.origin.y = 400; + [[[bar view] superview] setFrame:frame]; + + // Make sure it's on in a window so viewDidMoveToWindow is called + [[test_window() contentView] addSubview:parent_view_]; + + // Make sure it's open so certain things aren't no-ops. + [bar updateAndShowNormalBar:YES + showDetachedBar:NO + withAnimation:NO]; + } +}; + +TEST_F(BookmarkBarFolderControllerMenuTest, DragMoveBarBookmarkToFolder) { + WithNoAnimation at_all; + BookmarkModel& model(*profile()->GetBookmarkModel()); + const BookmarkNode* root = model.bookmark_bar_node(); + const std::string model_string("1b 2f:[ 2f1b 2f2f:[ 2f2f1b 2f2f2b " + "2f2f3b ] 2f3b ] 3b 4f:[ 4f1f:[ 4f1f1b 4f1f2b 4f1f3b ] 4f2f:[ 4f2f1b " + "4f2f2b 4f2f3b ] 4f3f:[ 4f3f1b 4f3f2b 4f3f3b ] ] 5b "); + model_test_utils::AddNodesFromModelString(model, root, model_string); + + // Validate initial model. + std::string actualModelString = model_test_utils::ModelStringFromNode(root); + EXPECT_EQ(model_string, actualModelString); + + // Pop up a folder menu and drag in a button from the bar. + BookmarkButton* toFolder = [bar_ buttonWithTitleEqualTo:@"2f"]; + NSRect oldToFolderFrame = [toFolder frame]; + [[toFolder target] performSelector:@selector(openBookmarkFolderFromButton:) + withObject:toFolder]; + BookmarkBarFolderController* folderController = [bar_ folderController]; + EXPECT_TRUE(folderController); + NSWindow* toWindow = [folderController window]; + EXPECT_TRUE(toWindow); + NSRect oldToWindowFrame = [toWindow frame]; + // Drag a bar button onto a bookmark (i.e. not a folder) in a folder + // so it should end up below the target bookmark. + BookmarkButton* draggedButton = [bar_ buttonWithTitleEqualTo:@"1b"]; + ASSERT_TRUE(draggedButton); + CGFloat horizontalShift = + NSWidth([draggedButton frame]) + bookmarks::kBookmarkHorizontalPadding; + BookmarkButton* targetButton = + [folderController buttonWithTitleEqualTo:@"2f1b"]; + ASSERT_TRUE(targetButton); + [folderController dragButton:draggedButton + to:[targetButton center] + copy:NO]; + // The button should have landed just after "2f1b". + const std::string expected_string("2f:[ 2f1b 1b 2f2f:[ 2f2f1b " + "2f2f2b 2f2f3b ] 2f3b ] 3b 4f:[ 4f1f:[ 4f1f1b 4f1f2b 4f1f3b ] 4f2f:[ " + "4f2f1b 4f2f2b 4f2f3b ] 4f3f:[ 4f3f1b 4f3f2b 4f3f3b ] ] 5b "); + EXPECT_EQ(expected_string, model_test_utils::ModelStringFromNode(root)); + + // Verify the window still appears by looking for its controller. + EXPECT_TRUE([bar_ folderController]); + + // Gather the new frames. + NSRect newToFolderFrame = [toFolder frame]; + NSRect newToWindowFrame = [toWindow frame]; + // The toFolder should have shifted left horizontally but not vertically. + NSRect expectedToFolderFrame = + NSOffsetRect(oldToFolderFrame, -horizontalShift, 0); + EXPECT_NSRECT_EQ(expectedToFolderFrame, newToFolderFrame); + // The toWindow should have shifted left horizontally, down vertically, + // and grown vertically. + NSRect expectedToWindowFrame = oldToWindowFrame; + expectedToWindowFrame.origin.x -= horizontalShift; + expectedToWindowFrame.origin.y -= bookmarks::kBookmarkFolderButtonHeight; + expectedToWindowFrame.size.height += bookmarks::kBookmarkFolderButtonHeight; + EXPECT_NSRECT_EQ(expectedToWindowFrame, newToWindowFrame); + + // Check button spacing. + [folderController validateMenuSpacing]; + + // Move the button back to the bar at the beginning. + draggedButton = [folderController buttonWithTitleEqualTo:@"1b"]; + ASSERT_TRUE(draggedButton); + targetButton = [bar_ buttonWithTitleEqualTo:@"2f"]; + ASSERT_TRUE(targetButton); + [bar_ dragButton:draggedButton + to:[targetButton left] + copy:NO]; + EXPECT_EQ(model_string, model_test_utils::ModelStringFromNode(root)); + // Don't check the folder window since it's not supposed to be showing. +} + +TEST_F(BookmarkBarFolderControllerMenuTest, DragCopyBarBookmarkToFolder) { + BookmarkModel& model(*profile()->GetBookmarkModel()); + const BookmarkNode* root = model.bookmark_bar_node(); + const std::string model_string("1b 2f:[ 2f1b 2f2f:[ 2f2f1b 2f2f2b " + "2f2f3b ] 2f3b ] 3b 4f:[ 4f1f:[ 4f1f1b 4f1f2b 4f1f3b ] 4f2f:[ 4f2f1b " + "4f2f2b 4f2f3b ] 4f3f:[ 4f3f1b 4f3f2b 4f3f3b ] ] 5b "); + model_test_utils::AddNodesFromModelString(model, root, model_string); + + // Validate initial model. + std::string actualModelString = model_test_utils::ModelStringFromNode(root); + EXPECT_EQ(model_string, actualModelString); + + // Pop up a folder menu and copy in a button from the bar. + BookmarkButton* toFolder = [bar_ buttonWithTitleEqualTo:@"2f"]; + ASSERT_TRUE(toFolder); + NSRect oldToFolderFrame = [toFolder frame]; + [[toFolder target] performSelector:@selector(openBookmarkFolderFromButton:) + withObject:toFolder]; + BookmarkBarFolderController* folderController = [bar_ folderController]; + EXPECT_TRUE(folderController); + NSWindow* toWindow = [folderController window]; + EXPECT_TRUE(toWindow); + NSRect oldToWindowFrame = [toWindow frame]; + // Drag a bar button onto a bookmark (i.e. not a folder) in a folder + // so it should end up below the target bookmark. + BookmarkButton* draggedButton = [bar_ buttonWithTitleEqualTo:@"1b"]; + ASSERT_TRUE(draggedButton); + BookmarkButton* targetButton = + [folderController buttonWithTitleEqualTo:@"2f1b"]; + ASSERT_TRUE(targetButton); + [folderController dragButton:draggedButton + to:[targetButton center] + copy:YES]; + // The button should have landed just after "2f1b". + const std::string expected_1("1b 2f:[ 2f1b 1b 2f2f:[ 2f2f1b " + "2f2f2b 2f2f3b ] 2f3b ] 3b 4f:[ 4f1f:[ 4f1f1b 4f1f2b 4f1f3b ] 4f2f:[ " + "4f2f1b 4f2f2b 4f2f3b ] 4f3f:[ 4f3f1b 4f3f2b 4f3f3b ] ] 5b "); + EXPECT_EQ(expected_1, model_test_utils::ModelStringFromNode(root)); + + // Gather the new frames. + NSRect newToFolderFrame = [toFolder frame]; + NSRect newToWindowFrame = [toWindow frame]; + // The toFolder should have shifted. + EXPECT_NSRECT_EQ(oldToFolderFrame, newToFolderFrame); + // The toWindow should have shifted down vertically and grown vertically. + NSRect expectedToWindowFrame = oldToWindowFrame; + expectedToWindowFrame.origin.y -= bookmarks::kBookmarkFolderButtonHeight; + expectedToWindowFrame.size.height += bookmarks::kBookmarkFolderButtonHeight; + EXPECT_NSRECT_EQ(expectedToWindowFrame, newToWindowFrame); + + // Copy the button back to the bar after "3b". + draggedButton = [folderController buttonWithTitleEqualTo:@"1b"]; + ASSERT_TRUE(draggedButton); + targetButton = [bar_ buttonWithTitleEqualTo:@"4f"]; + ASSERT_TRUE(targetButton); + [bar_ dragButton:draggedButton + to:[targetButton left] + copy:YES]; + const std::string expected_2("1b 2f:[ 2f1b 1b 2f2f:[ 2f2f1b " + "2f2f2b 2f2f3b ] 2f3b ] 3b 1b 4f:[ 4f1f:[ 4f1f1b 4f1f2b 4f1f3b ] 4f2f:[ " + "4f2f1b 4f2f2b 4f2f3b ] 4f3f:[ 4f3f1b 4f3f2b 4f3f3b ] ] 5b "); + EXPECT_EQ(expected_2, model_test_utils::ModelStringFromNode(root)); +} + +TEST_F(BookmarkBarFolderControllerMenuTest, DragMoveBarBookmarkToSubfolder) { + BookmarkModel& model(*profile()->GetBookmarkModel()); + const BookmarkNode* root = model.bookmark_bar_node(); + const std::string model_string("1b 2f:[ 2f1b 2f2f:[ 2f2f1b 2f2f2b " + "2f2f3b ] 2f3b ] 3b 4f:[ 4f1f:[ 4f1f1b 4f1f2b 4f1f3b ] 4f2f:[ 4f2f1b " + "4f2f2b 4f2f3b ] 4f3f:[ 4f3f1b 4f3f2b 4f3f3b ] ] 5b "); + model_test_utils::AddNodesFromModelString(model, root, model_string); + + // Validate initial model. + std::string actualModelString = model_test_utils::ModelStringFromNode(root); + EXPECT_EQ(model_string, actualModelString); + + // Pop up a folder menu and a subfolder menu. + BookmarkButton* toFolder = [bar_ buttonWithTitleEqualTo:@"4f"]; + ASSERT_TRUE(toFolder); + [[toFolder target] performSelector:@selector(openBookmarkFolderFromButton:) + withObject:toFolder]; + BookmarkBarFolderController* folderController = [bar_ folderController]; + EXPECT_TRUE(folderController); + NSWindow* toWindow = [folderController window]; + EXPECT_TRUE(toWindow); + NSRect oldToWindowFrame = [toWindow frame]; + BookmarkButton* toSubfolder = + [folderController buttonWithTitleEqualTo:@"4f2f"]; + ASSERT_TRUE(toSubfolder); + [[toSubfolder target] performSelector:@selector(openBookmarkFolderFromButton:) + withObject:toSubfolder]; + BookmarkBarFolderController* subfolderController = + [folderController folderController]; + EXPECT_TRUE(subfolderController); + NSWindow* toSubwindow = [subfolderController window]; + EXPECT_TRUE(toSubwindow); + NSRect oldToSubwindowFrame = [toSubwindow frame]; + // Drag a bar button onto a bookmark (i.e. not a folder) in a folder + // so it should end up below the target bookmark. + BookmarkButton* draggedButton = [bar_ buttonWithTitleEqualTo:@"5b"]; + ASSERT_TRUE(draggedButton); + BookmarkButton* targetButton = + [subfolderController buttonWithTitleEqualTo:@"4f2f3b"]; + ASSERT_TRUE(targetButton); + [subfolderController dragButton:draggedButton + to:[targetButton center] + copy:NO]; + // The button should have landed just after "2f". + const std::string expected_string("1b 2f:[ 2f1b 2f2f:[ 2f2f1b " + "2f2f2b 2f2f3b ] 2f3b ] 3b 4f:[ 4f1f:[ 4f1f1b 4f1f2b 4f1f3b ] 4f2f:[ " + "4f2f1b 4f2f2b 4f2f3b 5b ] 4f3f:[ 4f3f1b 4f3f2b 4f3f3b ] ] "); + EXPECT_EQ(expected_string, model_test_utils::ModelStringFromNode(root)); + + // Check button spacing. + [folderController validateMenuSpacing]; + [subfolderController validateMenuSpacing]; + + // Check the window layouts. The folder window should not have changed, + // but the subfolder window should have shifted vertically and grown. + NSRect newToWindowFrame = [toWindow frame]; + EXPECT_NSRECT_EQ(oldToWindowFrame, newToWindowFrame); + NSRect newToSubwindowFrame = [toSubwindow frame]; + NSRect expectedToSubwindowFrame = oldToSubwindowFrame; + expectedToSubwindowFrame.origin.y -= bookmarks::kBookmarkFolderButtonHeight; + expectedToSubwindowFrame.size.height += + bookmarks::kBookmarkFolderButtonHeight; + EXPECT_NSRECT_EQ(expectedToSubwindowFrame, newToSubwindowFrame); +} + +TEST_F(BookmarkBarFolderControllerMenuTest, DragMoveWithinFolder) { + BookmarkModel& model(*profile()->GetBookmarkModel()); + const BookmarkNode* root = model.bookmark_bar_node(); + const std::string model_string("1b 2f:[ 2f1b 2f2f:[ 2f2f1b 2f2f2b " + "2f2f3b ] 2f3b ] 3b 4f:[ 4f1f:[ 4f1f1b 4f1f2b 4f1f3b ] 4f2f:[ 4f2f1b " + "4f2f2b 4f2f3b ] 4f3f:[ 4f3f1b 4f3f2b 4f3f3b ] ] 5b "); + model_test_utils::AddNodesFromModelString(model, root, model_string); + + // Validate initial model. + std::string actualModelString = model_test_utils::ModelStringFromNode(root); + EXPECT_EQ(model_string, actualModelString); + + // Pop up a folder menu. + BookmarkButton* toFolder = [bar_ buttonWithTitleEqualTo:@"4f"]; + ASSERT_TRUE(toFolder); + [[toFolder target] performSelector:@selector(openBookmarkFolderFromButton:) + withObject:toFolder]; + BookmarkBarFolderController* folderController = [bar_ folderController]; + EXPECT_TRUE(folderController); + NSWindow* toWindow = [folderController window]; + EXPECT_TRUE(toWindow); + NSRect oldToWindowFrame = [toWindow frame]; + // Drag a folder button to the top within the same parent. + BookmarkButton* draggedButton = + [folderController buttonWithTitleEqualTo:@"4f2f"]; + ASSERT_TRUE(draggedButton); + BookmarkButton* targetButton = + [folderController buttonWithTitleEqualTo:@"4f1f"]; + ASSERT_TRUE(targetButton); + [folderController dragButton:draggedButton + to:[targetButton top] + copy:NO]; + // The button should have landed above "4f1f". + const std::string expected_string("1b 2f:[ 2f1b 2f2f:[ 2f2f1b " + "2f2f2b 2f2f3b ] 2f3b ] 3b 4f:[ 4f2f:[ 4f2f1b 4f2f2b 4f2f3b ] " + "4f1f:[ 4f1f1b 4f1f2b 4f1f3b ] 4f3f:[ 4f3f1b 4f3f2b 4f3f3b ] ] 5b "); + EXPECT_EQ(expected_string, model_test_utils::ModelStringFromNode(root)); + + // The window should not have gone away. + EXPECT_TRUE([bar_ folderController]); + + // The folder window should not have changed. + NSRect newToWindowFrame = [toWindow frame]; + EXPECT_NSRECT_EQ(oldToWindowFrame, newToWindowFrame); + + // Check button spacing. + [folderController validateMenuSpacing]; +} + +TEST_F(BookmarkBarFolderControllerMenuTest, DragParentOntoChild) { + BookmarkModel& model(*profile()->GetBookmarkModel()); + const BookmarkNode* root = model.bookmark_bar_node(); + const std::string model_string("1b 2f:[ 2f1b 2f2f:[ 2f2f1b 2f2f2b " + "2f2f3b ] 2f3b ] 3b 4f:[ 4f1f:[ 4f1f1b 4f1f2b 4f1f3b ] 4f2f:[ 4f2f1b " + "4f2f2b 4f2f3b ] 4f3f:[ 4f3f1b 4f3f2b 4f3f3b ] ] 5b "); + model_test_utils::AddNodesFromModelString(model, root, model_string); + + // Validate initial model. + std::string actualModelString = model_test_utils::ModelStringFromNode(root); + EXPECT_EQ(model_string, actualModelString); + + // Pop up a folder menu. + BookmarkButton* toFolder = [bar_ buttonWithTitleEqualTo:@"4f"]; + ASSERT_TRUE(toFolder); + [[toFolder target] performSelector:@selector(openBookmarkFolderFromButton:) + withObject:toFolder]; + BookmarkBarFolderController* folderController = [bar_ folderController]; + EXPECT_TRUE(folderController); + NSWindow* toWindow = [folderController window]; + EXPECT_TRUE(toWindow); + // Drag a folder button to one of its children. + BookmarkButton* draggedButton = [bar_ buttonWithTitleEqualTo:@"4f"]; + ASSERT_TRUE(draggedButton); + BookmarkButton* targetButton = + [folderController buttonWithTitleEqualTo:@"4f3f"]; + ASSERT_TRUE(targetButton); + [folderController dragButton:draggedButton + to:[targetButton top] + copy:NO]; + // The model should not have changed. + EXPECT_EQ(model_string, model_test_utils::ModelStringFromNode(root)); + + // Check button spacing. + [folderController validateMenuSpacing]; +} + +TEST_F(BookmarkBarFolderControllerMenuTest, DragMoveChildToParent) { + BookmarkModel& model(*profile()->GetBookmarkModel()); + const BookmarkNode* root = model.bookmark_bar_node(); + const std::string model_string("1b 2f:[ 2f1b 2f2f:[ 2f2f1b 2f2f2b " + "2f2f3b ] 2f3b ] 3b 4f:[ 4f1f:[ 4f1f1b 4f1f2b 4f1f3b ] 4f2f:[ 4f2f1b " + "4f2f2b 4f2f3b ] 4f3f:[ 4f3f1b 4f3f2b 4f3f3b ] ] 5b "); + model_test_utils::AddNodesFromModelString(model, root, model_string); + + // Validate initial model. + std::string actualModelString = model_test_utils::ModelStringFromNode(root); + EXPECT_EQ(model_string, actualModelString); + + // Pop up a folder menu and a subfolder menu. + BookmarkButton* toFolder = [bar_ buttonWithTitleEqualTo:@"4f"]; + ASSERT_TRUE(toFolder); + [[toFolder target] performSelector:@selector(openBookmarkFolderFromButton:) + withObject:toFolder]; + BookmarkBarFolderController* folderController = [bar_ folderController]; + EXPECT_TRUE(folderController); + BookmarkButton* toSubfolder = + [folderController buttonWithTitleEqualTo:@"4f2f"]; + ASSERT_TRUE(toSubfolder); + [[toSubfolder target] performSelector:@selector(openBookmarkFolderFromButton:) + withObject:toSubfolder]; + BookmarkBarFolderController* subfolderController = + [folderController folderController]; + EXPECT_TRUE(subfolderController); + + // Drag a subfolder bookmark to the parent folder. + BookmarkButton* draggedButton = + [subfolderController buttonWithTitleEqualTo:@"4f2f3b"]; + ASSERT_TRUE(draggedButton); + BookmarkButton* targetButton = + [folderController buttonWithTitleEqualTo:@"4f2f"]; + ASSERT_TRUE(targetButton); + [folderController dragButton:draggedButton + to:[targetButton top] + copy:NO]; + // The button should have landed above "4f2f". + const std::string expected_string("1b 2f:[ 2f1b 2f2f:[ 2f2f1b 2f2f2b " + "2f2f3b ] 2f3b ] 3b 4f:[ 4f1f:[ 4f1f1b 4f1f2b 4f1f3b ] 4f2f3b 4f2f:[ " + "4f2f1b 4f2f2b ] 4f3f:[ 4f3f1b 4f3f2b 4f3f3b ] ] 5b "); + EXPECT_EQ(expected_string, model_test_utils::ModelStringFromNode(root)); + + // Check button spacing. + [folderController validateMenuSpacing]; + // The window should not have gone away. + EXPECT_TRUE([bar_ folderController]); + // The subfolder should have gone away. + EXPECT_FALSE([folderController folderController]); +} + +TEST_F(BookmarkBarFolderControllerMenuTest, DragWindowResizing) { + BookmarkModel& model(*profile()->GetBookmarkModel()); + const BookmarkNode* root = model.bookmark_bar_node(); + const std::string + model_string("a b:[ b1 b2 b3 ] reallyReallyLongBookmarkName c "); + model_test_utils::AddNodesFromModelString(model, root, model_string); + + // Validate initial model. + std::string actualModelString = model_test_utils::ModelStringFromNode(root); + EXPECT_EQ(model_string, actualModelString); + + // Pop up a folder menu. + BookmarkButton* toFolder = [bar_ buttonWithTitleEqualTo:@"b"]; + ASSERT_TRUE(toFolder); + [[toFolder target] performSelector:@selector(openBookmarkFolderFromButton:) + withObject:toFolder]; + BookmarkBarFolderController* folderController = [bar_ folderController]; + EXPECT_TRUE(folderController); + NSWindow* toWindow = [folderController window]; + EXPECT_TRUE(toWindow); + CGFloat oldWidth = NSWidth([toWindow frame]); + // Drag the bookmark with a long name to the folder. + BookmarkButton* draggedButton = + [bar_ buttonWithTitleEqualTo:@"reallyReallyLongBookmarkName"]; + ASSERT_TRUE(draggedButton); + BookmarkButton* targetButton = + [folderController buttonWithTitleEqualTo:@"b1"]; + ASSERT_TRUE(targetButton); + [folderController dragButton:draggedButton + to:[targetButton center] + copy:NO]; + // Verify the model change. + const std::string + expected_string("a b:[ b1 reallyReallyLongBookmarkName b2 b3 ] c "); + EXPECT_EQ(expected_string, model_test_utils::ModelStringFromNode(root)); + // Verify the window grew. Just test a reasonable width gain. + CGFloat newWidth = NSWidth([toWindow frame]); + EXPECT_LT(oldWidth + 30.0, newWidth); +} + +TEST_F(BookmarkBarFolderControllerMenuTest, MoveRemoveAddButtons) { + BookmarkModel& model(*profile()->GetBookmarkModel()); + const BookmarkNode* root = model.bookmark_bar_node(); + const std::string model_string("1b 2f:[ 2f1b 2f2b 2f3b ] 3b 4b "); + model_test_utils::AddNodesFromModelString(model, root, model_string); + + // Validate initial model. + std::string actualModelString = model_test_utils::ModelStringFromNode(root); + EXPECT_EQ(model_string, actualModelString); + + // Pop up a folder menu. + BookmarkButton* toFolder = [bar_ buttonWithTitleEqualTo:@"2f"]; + ASSERT_TRUE(toFolder); + [[toFolder target] performSelector:@selector(openBookmarkFolderFromButton:) + withObject:toFolder]; + BookmarkBarFolderController* folder = [bar_ folderController]; + EXPECT_TRUE(folder); + + // Remember how many buttons are showing. + NSArray* buttons = [folder buttons]; + NSUInteger oldDisplayedButtons = [buttons count]; + + // Move a button around a bit. + [folder moveButtonFromIndex:0 toIndex:2]; + EXPECT_NSEQ(@"2f2b", [[buttons objectAtIndex:0] title]); + EXPECT_NSEQ(@"2f3b", [[buttons objectAtIndex:1] title]); + EXPECT_NSEQ(@"2f1b", [[buttons objectAtIndex:2] title]); + EXPECT_EQ(oldDisplayedButtons, [buttons count]); + [folder moveButtonFromIndex:2 toIndex:0]; + EXPECT_NSEQ(@"2f1b", [[buttons objectAtIndex:0] title]); + EXPECT_NSEQ(@"2f2b", [[buttons objectAtIndex:1] title]); + EXPECT_NSEQ(@"2f3b", [[buttons objectAtIndex:2] title]); + EXPECT_EQ(oldDisplayedButtons, [buttons count]); + + // Add a couple of buttons. + const BookmarkNode* node = root->GetChild(2); // Purloin an existing node. + [folder addButtonForNode:node atIndex:0]; + EXPECT_NSEQ(@"3b", [[buttons objectAtIndex:0] title]); + EXPECT_NSEQ(@"2f1b", [[buttons objectAtIndex:1] title]); + EXPECT_NSEQ(@"2f2b", [[buttons objectAtIndex:2] title]); + EXPECT_NSEQ(@"2f3b", [[buttons objectAtIndex:3] title]); + EXPECT_EQ(oldDisplayedButtons + 1, [buttons count]); + node = root->GetChild(3); + [folder addButtonForNode:node atIndex:-1]; + EXPECT_NSEQ(@"3b", [[buttons objectAtIndex:0] title]); + EXPECT_NSEQ(@"2f1b", [[buttons objectAtIndex:1] title]); + EXPECT_NSEQ(@"2f2b", [[buttons objectAtIndex:2] title]); + EXPECT_NSEQ(@"2f3b", [[buttons objectAtIndex:3] title]); + EXPECT_NSEQ(@"4b", [[buttons objectAtIndex:4] title]); + EXPECT_EQ(oldDisplayedButtons + 2, [buttons count]); + + // Remove a couple of buttons. + [folder removeButton:4 animate:NO]; + [folder removeButton:1 animate:NO]; + EXPECT_NSEQ(@"3b", [[buttons objectAtIndex:0] title]); + EXPECT_NSEQ(@"2f2b", [[buttons objectAtIndex:1] title]); + EXPECT_NSEQ(@"2f3b", [[buttons objectAtIndex:2] title]); + EXPECT_EQ(oldDisplayedButtons, [buttons count]); + + // Check button spacing. + [folder validateMenuSpacing]; +} + +TEST_F(BookmarkBarFolderControllerMenuTest, ControllerForNode) { + BookmarkModel& model(*profile()->GetBookmarkModel()); + const BookmarkNode* root = model.bookmark_bar_node(); + const std::string model_string("1b 2f:[ 2f1b 2f2b ] 3b "); + model_test_utils::AddNodesFromModelString(model, root, model_string); + + // Validate initial model. + std::string actualModelString = model_test_utils::ModelStringFromNode(root); + EXPECT_EQ(model_string, actualModelString); + + // Find the main bar controller. + const void* expectedController = bar_; + const void* actualController = [bar_ controllerForNode:root]; + EXPECT_EQ(expectedController, actualController); + + // Pop up the folder menu. + BookmarkButton* targetFolder = [bar_ buttonWithTitleEqualTo:@"2f"]; + ASSERT_TRUE(targetFolder); + [[targetFolder target] + performSelector:@selector(openBookmarkFolderFromButton:) + withObject:targetFolder]; + BookmarkBarFolderController* folder = [bar_ folderController]; + EXPECT_TRUE(folder); + + // Find the folder controller using the folder controller. + const BookmarkNode* targetNode = root->GetChild(1); + expectedController = folder; + actualController = [bar_ controllerForNode:targetNode]; + EXPECT_EQ(expectedController, actualController); + + // Find the folder controller from the bar. + actualController = [folder controllerForNode:targetNode]; + EXPECT_EQ(expectedController, actualController); +} + +TEST_F(BookmarkBarFolderControllerMenuTest, MenuSizingAndScrollArrows) { + BookmarkModel& model(*profile()->GetBookmarkModel()); + const BookmarkNode* root = model.bookmark_bar_node(); + const std::string model_string("1b 2b 3b "); + model_test_utils::AddNodesFromModelString(model, root, model_string); + + // Validate initial model. + std::string actualModelString = model_test_utils::ModelStringFromNode(root); + EXPECT_EQ(model_string, actualModelString); + + const BookmarkNode* parent = model.bookmark_bar_node(); + const BookmarkNode* folder = model.AddFolder(parent, + parent->child_count(), + ASCIIToUTF16("BIG")); + + // Pop open the new folder window and verify it has one (empty) item. + BookmarkButton* button = [bar_ buttonWithTitleEqualTo:@"BIG"]; + [[button target] performSelector:@selector(openBookmarkFolderFromButton:) + withObject:button]; + BookmarkBarFolderController* folderController = [bar_ folderController]; + EXPECT_TRUE(folderController); + NSWindow* folderWindow = [folderController window]; + EXPECT_TRUE(folderWindow); + CGFloat expectedHeight = (CGFloat)bookmarks::kBookmarkFolderButtonHeight + + (2*bookmarks::kBookmarkVerticalPadding); + NSRect windowFrame = [folderWindow frame]; + CGFloat windowHeight = NSHeight(windowFrame); + EXPECT_CGFLOAT_EQ(expectedHeight, windowHeight); + EXPECT_FALSE([folderController canScrollUp]); + EXPECT_FALSE([folderController canScrollDown]); + + // Now add a real bookmark and reopen. + model.AddURL(folder, folder->child_count(), ASCIIToUTF16("a"), + GURL("http://a.com/")); + folderController = [bar_ folderController]; + EXPECT_TRUE(folderController); + NSView* folderView = [folderController folderView]; + EXPECT_TRUE(folderView); + NSRect menuFrame = [folderView frame]; + NSView* visibleView = [folderController visibleView]; + NSRect visibleFrame = [visibleView frame]; + NSScrollView* scrollView = [folderController scrollView]; + NSRect scrollFrame = [scrollView frame]; + + // Determine the margins between the scroll frame and the visible frame. + CGFloat widthDelta = NSWidth(visibleFrame) - NSWidth(scrollFrame); + + CGFloat menuHeight = NSHeight(menuFrame); + EXPECT_CGFLOAT_EQ(expectedHeight, menuHeight); + CGFloat scrollerWidth = NSWidth(scrollFrame); + button = [folderController buttonWithTitleEqualTo:@"a"]; + CGFloat buttonWidth = NSWidth([button frame]); + EXPECT_CGFLOAT_EQ(scrollerWidth, buttonWidth); + CGFloat visibleWidth = NSWidth(visibleFrame); + EXPECT_CGFLOAT_EQ(visibleWidth - widthDelta, buttonWidth); + EXPECT_LT(scrollerWidth, NSWidth([folderView frame])); + + // Add a wider bookmark and make sure the button widths match. + int reallyWideButtonNumber = folder->child_count(); + model.AddURL(folder, reallyWideButtonNumber, + ASCIIToUTF16("A really, really, really, really, really, " + "really long name"), + GURL("http://www.google.com/a")); + BookmarkButton* bigButton = + [folderController buttonWithTitleEqualTo: + @"A really, really, really, really, really, really long name"]; + EXPECT_TRUE(bigButton); + CGFloat buttonWidthB = NSWidth([bigButton frame]); + EXPECT_LT(buttonWidth, buttonWidthB); + // Add a bunch of bookmarks until the window becomes scrollable, then check + // for a scroll up arrow. + NSUInteger tripWire = 0; // Prevent a runaway. + while (![folderController canScrollUp] && ++tripWire < 1000) { + model.AddURL(folder, folder->child_count(), ASCIIToUTF16("B"), + GURL("http://b.com/")); + } + EXPECT_TRUE([folderController canScrollUp]); + + // Remove one bookmark and make sure the scroll down arrow has been removed. + // We'll remove the really long node so we can see if the buttons get resized. + scrollerWidth = NSWidth([folderView frame]); + buttonWidth = NSWidth([button frame]); + model.Remove(folder, reallyWideButtonNumber); + EXPECT_FALSE([folderController canScrollUp]); + EXPECT_FALSE([folderController canScrollDown]); + + // Check the size. It should have reduced. + EXPECT_GT(scrollerWidth, NSWidth([folderView frame])); + EXPECT_GT(buttonWidth, NSWidth([button frame])); + + // Check button spacing. + [folderController validateMenuSpacing]; +} + +// See http://crbug.com/46101 +TEST_F(BookmarkBarFolderControllerMenuTest, HoverThenDeleteBookmark) { + BookmarkModel& model(*profile()->GetBookmarkModel()); + const BookmarkNode* root = model.bookmark_bar_node(); + const BookmarkNode* folder = model.AddFolder(root, + root->child_count(), + ASCIIToUTF16("BIG")); + for (int i = 0; i < kLotsOfNodesCount; i++) + model.AddURL(folder, folder->child_count(), ASCIIToUTF16("kid"), + GURL("http://kid.com/smile")); + + // Pop open the new folder window and hover one of its kids. + BookmarkButton* button = [bar_ buttonWithTitleEqualTo:@"BIG"]; + [[button target] performSelector:@selector(openBookmarkFolderFromButton:) + withObject:button]; + BookmarkBarFolderController* bbfc = [bar_ folderController]; + NSArray* buttons = [bbfc buttons]; + + // Hover over a button and verify that it is now known. + button = [buttons objectAtIndex:3]; + BookmarkButton* buttonThatMouseIsIn = [bbfc buttonThatMouseIsIn]; + EXPECT_FALSE(buttonThatMouseIsIn); + [bbfc mouseEnteredButton:button event:nil]; + buttonThatMouseIsIn = [bbfc buttonThatMouseIsIn]; + EXPECT_EQ(button, buttonThatMouseIsIn); + + // Delete the bookmark and verify that it is now not known. + model.Remove(folder, 3); + buttonThatMouseIsIn = [bbfc buttonThatMouseIsIn]; + EXPECT_FALSE(buttonThatMouseIsIn); +} + +// Just like a BookmarkBarFolderController but intercedes when providing +// pasteboard drag data. +@interface BookmarkBarFolderControllerDragData : BookmarkBarFolderController { + const BookmarkNode* dragDataNode_; // Weak +} +- (void)setDragDataNode:(const BookmarkNode*)node; +@end + +@implementation BookmarkBarFolderControllerDragData + +- (id)initWithParentButton:(BookmarkButton*)button + parentController:(BookmarkBarFolderController*)parentController + barController:(BookmarkBarController*)barController { + if ((self = [super initWithParentButton:button + parentController:parentController + barController:barController])) { + dragDataNode_ = NULL; + } + return self; +} + +- (void)setDragDataNode:(const BookmarkNode*)node { + dragDataNode_ = node; +} + +- (std::vector<const BookmarkNode*>)retrieveBookmarkNodeData { + std::vector<const BookmarkNode*> dragDataNodes; + if(dragDataNode_) { + dragDataNodes.push_back(dragDataNode_); + } + return dragDataNodes; +} + +@end + +TEST_F(BookmarkBarFolderControllerMenuTest, DragBookmarkData) { + BookmarkModel& model(*profile()->GetBookmarkModel()); + const BookmarkNode* root = model.bookmark_bar_node(); + const std::string model_string("1b 2f:[ 2f1b 2f2f:[ 2f2f1b 2f2f2b 2f2f3b ] " + "2f3b ] 3b 4b "); + model_test_utils::AddNodesFromModelString(model, root, model_string); + const BookmarkNode* other = model.other_node(); + const std::string other_string("O1b O2b O3f:[ O3f1b O3f2f ] " + "O4f:[ O4f1b O4f2f ] 05b "); + model_test_utils::AddNodesFromModelString(model, other, other_string); + + // Validate initial model. + std::string actual = model_test_utils::ModelStringFromNode(root); + EXPECT_EQ(model_string, actual); + actual = model_test_utils::ModelStringFromNode(other); + EXPECT_EQ(other_string, actual); + + // Pop open a folder. + BookmarkButton* button = [bar_ buttonWithTitleEqualTo:@"2f"]; + scoped_nsobject<BookmarkBarFolderControllerDragData> folderController; + folderController.reset([[BookmarkBarFolderControllerDragData alloc] + initWithParentButton:button + parentController:nil + barController:bar_]); + BookmarkButton* targetButton = + [folderController buttonWithTitleEqualTo:@"2f1b"]; + ASSERT_TRUE(targetButton); + + // Gen up some dragging data. + const BookmarkNode* newNode = other->GetChild(2); + [folderController setDragDataNode:newNode]; + scoped_nsobject<FakedDragInfo> dragInfo([[FakedDragInfo alloc] init]); + [dragInfo setDropLocation:[targetButton top]]; + [folderController dragBookmarkData:(id<NSDraggingInfo>)dragInfo.get()]; + + // Verify the model. + const std::string expected("1b 2f:[ O3f:[ O3f1b O3f2f ] 2f1b 2f2f:[ 2f2f1b " + "2f2f2b 2f2f3b ] 2f3b ] 3b 4b "); + actual = model_test_utils::ModelStringFromNode(root); + EXPECT_EQ(expected, actual); + + // Now drag over a folder button. + targetButton = [folderController buttonWithTitleEqualTo:@"2f2f"]; + ASSERT_TRUE(targetButton); + newNode = other->GetChild(2); // Should be O4f. + EXPECT_EQ(newNode->GetTitle(), ASCIIToUTF16("O4f")); + [folderController setDragDataNode:newNode]; + [dragInfo setDropLocation:[targetButton center]]; + [folderController dragBookmarkData:(id<NSDraggingInfo>)dragInfo.get()]; + + // Verify the model. + const std::string expectedA("1b 2f:[ O3f:[ O3f1b O3f2f ] 2f1b 2f2f:[ " + "2f2f1b 2f2f2b 2f2f3b O4f:[ O4f1b O4f2f ] ] " + "2f3b ] 3b 4b "); + actual = model_test_utils::ModelStringFromNode(root); + EXPECT_EQ(expectedA, actual); + + // Check button spacing. + [folderController validateMenuSpacing]; +} + +TEST_F(BookmarkBarFolderControllerMenuTest, DragBookmarkDataToTrash) { + BookmarkModel& model(*profile()->GetBookmarkModel()); + const BookmarkNode* root = model.bookmark_bar_node(); + const std::string model_string("1b 2f:[ 2f1b 2f2f:[ 2f2f1b 2f2f2b 2f2f3b ] " + "2f3b ] 3b 4b "); + model_test_utils::AddNodesFromModelString(model, root, model_string); + + // Validate initial model. + std::string actual = model_test_utils::ModelStringFromNode(root); + EXPECT_EQ(model_string, actual); + + const BookmarkNode* folderNode = root->GetChild(1); + int oldFolderChildCount = folderNode->child_count(); + + // Pop open a folder. + BookmarkButton* button = [bar_ buttonWithTitleEqualTo:@"2f"]; + scoped_nsobject<BookmarkBarFolderControllerDragData> folderController; + folderController.reset([[BookmarkBarFolderControllerDragData alloc] + initWithParentButton:button + parentController:nil + barController:bar_]); + + // Drag a button to the trash. + BookmarkButton* buttonToDelete = + [folderController buttonWithTitleEqualTo:@"2f1b"]; + ASSERT_TRUE(buttonToDelete); + EXPECT_TRUE([folderController canDragBookmarkButtonToTrash:buttonToDelete]); + [folderController didDragBookmarkToTrash:buttonToDelete]; + + // There should be one less button in the folder. + int newFolderChildCount = folderNode->child_count(); + EXPECT_EQ(oldFolderChildCount - 1, newFolderChildCount); + // Verify the model. + const std::string expected("1b 2f:[ 2f2f:[ 2f2f1b 2f2f2b 2f2f3b ] " + "2f3b ] 3b 4b "); + actual = model_test_utils::ModelStringFromNode(root); + EXPECT_EQ(expected, actual); + + // Check button spacing. + [folderController validateMenuSpacing]; +} + +TEST_F(BookmarkBarFolderControllerMenuTest, AddURLs) { + BookmarkModel& model(*profile()->GetBookmarkModel()); + const BookmarkNode* root = model.bookmark_bar_node(); + const std::string model_string("1b 2f:[ 2f1b 2f2f:[ 2f2f1b 2f2f2b 2f2f3b ] " + "2f3b ] 3b 4b "); + model_test_utils::AddNodesFromModelString(model, root, model_string); + + // Validate initial model. + std::string actual = model_test_utils::ModelStringFromNode(root); + EXPECT_EQ(model_string, actual); + + // Pop open a folder. + BookmarkButton* button = [bar_ buttonWithTitleEqualTo:@"2f"]; + [[button target] performSelector:@selector(openBookmarkFolderFromButton:) + withObject:button]; + BookmarkBarFolderController* folderController = [bar_ folderController]; + EXPECT_TRUE(folderController); + NSArray* buttons = [folderController buttons]; + EXPECT_TRUE(buttons); + + // Remember how many buttons are showing. + int oldDisplayedButtons = [buttons count]; + + BookmarkButton* targetButton = + [folderController buttonWithTitleEqualTo:@"2f1b"]; + ASSERT_TRUE(targetButton); + + NSArray* urls = [NSArray arrayWithObjects: @"http://www.a.com/", + @"http://www.b.com/", nil]; + NSArray* titles = [NSArray arrayWithObjects: @"SiteA", @"SiteB", nil]; + [folderController addURLs:urls withTitles:titles at:[targetButton top]]; + + // There should two more buttons in the folder. + int newDisplayedButtons = [buttons count]; + EXPECT_EQ(oldDisplayedButtons + 2, newDisplayedButtons); + // Verify the model. + const std::string expected("1b 2f:[ SiteA SiteB 2f1b 2f2f:[ 2f2f1b 2f2f2b " + "2f2f3b ] 2f3b ] 3b 4b "); + actual = model_test_utils::ModelStringFromNode(root); + EXPECT_EQ(expected, actual); + + // Check button spacing. + [folderController validateMenuSpacing]; +} + +TEST_F(BookmarkBarFolderControllerMenuTest, DropPositionIndicator) { + BookmarkModel& model(*profile()->GetBookmarkModel()); + const BookmarkNode* root = model.bookmark_bar_node(); + const std::string model_string("1b 2f:[ 2f1b 2f2f:[ 2f2f1b 2f2f2b 2f2f3b ] " + "2f3b ] 3b 4b "); + model_test_utils::AddNodesFromModelString(model, root, model_string); + + // Validate initial model. + std::string actual = model_test_utils::ModelStringFromNode(root); + EXPECT_EQ(model_string, actual); + + // Pop open the folder. + BookmarkButton* button = [bar_ buttonWithTitleEqualTo:@"2f"]; + [[button target] performSelector:@selector(openBookmarkFolderFromButton:) + withObject:button]; + BookmarkBarFolderController* folder = [bar_ folderController]; + EXPECT_TRUE(folder); + + // Test a series of points starting at the top of the folder. + const CGFloat yOffset = 0.5 * bookmarks::kBookmarkVerticalPadding; + BookmarkButton* targetButton = [folder buttonWithTitleEqualTo:@"2f1b"]; + ASSERT_TRUE(targetButton); + NSPoint targetPoint = [targetButton top]; + CGFloat pos = [folder indicatorPosForDragToPoint:targetPoint]; + EXPECT_CGFLOAT_EQ(targetPoint.y + yOffset, pos); + pos = [folder indicatorPosForDragToPoint:[targetButton bottom]]; + targetButton = [folder buttonWithTitleEqualTo:@"2f2f"]; + EXPECT_CGFLOAT_EQ([targetButton top].y + yOffset, pos); + pos = [folder indicatorPosForDragToPoint:NSMakePoint(10,0)]; + targetButton = [folder buttonWithTitleEqualTo:@"2f3b"]; + EXPECT_CGFLOAT_EQ([targetButton bottom].y - yOffset, pos); +} + +@interface BookmarkBarControllerNoDelete : BookmarkBarController +- (IBAction)deleteBookmark:(id)sender; +@end + +@implementation BookmarkBarControllerNoDelete +- (IBAction)deleteBookmark:(id)sender { + // NOP +} +@end + +class BookmarkBarFolderControllerClosingTest : public + BookmarkBarFolderControllerMenuTest { + public: + virtual void SetUp() { + BookmarkBarFolderControllerMenuTest::SetUp(); + ASSERT_TRUE(browser()); + + bar_.reset([[BookmarkBarControllerNoDelete alloc] + initWithBrowser:browser() + initialWidth:NSWidth([parent_view_ frame]) + delegate:nil + resizeDelegate:resizeDelegate_.get()]); + InstallAndToggleBar(bar_.get()); + } +}; + +TEST_F(BookmarkBarFolderControllerClosingTest, DeleteClosesFolder) { + BookmarkModel& model(*profile()->GetBookmarkModel()); + const BookmarkNode* root = model.bookmark_bar_node(); + const std::string model_string("1b 2f:[ 2f1b 2f2f:[ 2f2f1b 2f2f2b ] " + "2f3b ] 3b "); + model_test_utils::AddNodesFromModelString(model, root, model_string); + + // Validate initial model. + std::string actualModelString = model_test_utils::ModelStringFromNode(root); + EXPECT_EQ(model_string, actualModelString); + + // Open the folder menu and submenu. + BookmarkButton* target = [bar_ buttonWithTitleEqualTo:@"2f"]; + ASSERT_TRUE(target); + [[target target] performSelector:@selector(openBookmarkFolderFromButton:) + withObject:target]; + BookmarkBarFolderController* folder = [bar_ folderController]; + EXPECT_TRUE(folder); + BookmarkButton* subTarget = [folder buttonWithTitleEqualTo:@"2f2f"]; + ASSERT_TRUE(subTarget); + [[subTarget target] performSelector:@selector(openBookmarkFolderFromButton:) + withObject:subTarget]; + BookmarkBarFolderController* subFolder = [folder folderController]; + EXPECT_TRUE(subFolder); + + // Delete the folder node and verify the window closed down by looking + // for its controller again. + [folder deleteBookmark:folder]; + EXPECT_FALSE([folder folderController]); +} + +// TODO(jrg): draggingEntered: and draggingExited: trigger timers so +// they are hard to test. Factor out "fire timers" into routines +// which can be overridden to fire immediately to make behavior +// confirmable. +// There is a similar problem with mouseEnteredButton: and +// mouseExitedButton:. diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state.h b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state.h new file mode 100644 index 0000000..20ea39e --- /dev/null +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state.h @@ -0,0 +1,78 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import <Cocoa/Cocoa.h> + +#include "base/memory/scoped_nsobject.h" +#import "chrome/browser/ui/cocoa/bookmarks/bookmark_button.h" + +// Hover state machine. Encapsulates the hover state for +// BookmarkBarFolderController. +// A strict call order is implied with these calls. It is ONLY valid to make +// the following state transitions: +// From: To: Via: +// closed opening scheduleOpen...: +// opening closed cancelPendingOpen...: or +// open scheduleOpen...: completes. +// open closing scheduleClose...: +// closing open cancelPendingClose...: or +// closed scheduleClose...: completes. +// +@interface BookmarkBarFolderHoverState : NSObject { + @private + // Enumeration of the valid states that the |hoverButton_| member can be in. + // Because the opening and closing of hover views can be done asyncronously + // there are periods where the hover state is in transtion between open and + // closed. During those times of transition the opening or closing operation + // can be cancelled. We serialize the opening and closing of the + // |hoverButton_| using this state information. This serialization is to + // avoid race conditions where one hover button is being opened while another + // is closing. + enum HoverState { + kHoverStateClosed = 0, + kHoverStateOpening = 1, + kHoverStateOpen = 2, + kHoverStateClosing = 3 + }; + + // Like normal menus, hovering over a folder button causes it to + // open. This variable is set when a hover is initiated (but has + // not necessarily fired yet). + scoped_nsobject<BookmarkButton> hoverButton_; + + // We model hover state as a state machine with specific allowable + // transitions. |hoverState_| is the state of this machine at any + // given time. + HoverState hoverState_; +} + +// Designated initializer. +- (id)init; + +// The BookmarkBarFolderHoverState decides when it is appropriate to hide +// and show the button that the BookmarkBarFolderController drags over. +- (NSDragOperation)draggingEnteredButton:(BookmarkButton*)button; + +// The BookmarkBarFolderHoverState decides the fate of the hover button +// when the BookmarkBarFolderController's view is exited. +- (void)draggingExited; + +@end + +// Exposing these for unit testing purposes. They are used privately in the +// implementation as well. +@interface BookmarkBarFolderHoverState(PrivateAPI) +// State change APIs. +- (void)scheduleCloseBookmarkFolderOnHoverButton; +- (void)cancelPendingCloseBookmarkFolderOnHoverButton; +- (void)scheduleOpenBookmarkFolderOnHoverButton:(BookmarkButton*)hoverButton; +- (void)cancelPendingOpenBookmarkFolderOnHoverButton; +@end + +// Exposing these for unit testing purposes. They are used only in tests. +@interface BookmarkBarFolderHoverState(TestingAPI) +// Accessors and setters for button and hover state. +- (BookmarkButton*)hoverButton; +- (HoverState)hoverState; +@end diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state.mm new file mode 100644 index 0000000..5470084 --- /dev/null +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state.mm @@ -0,0 +1,173 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state.h" +#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h" + +@interface BookmarkBarFolderHoverState(Private) +- (void)setHoverState:(HoverState)state; +- (void)closeBookmarkFolderOnHoverButton:(BookmarkButton*)button; +- (void)openBookmarkFolderOnHoverButton:(BookmarkButton*)button; +@end + +@implementation BookmarkBarFolderHoverState + +- (id)init { + if ((self = [super init])) { + hoverState_ = kHoverStateClosed; + } + return self; +} + +- (NSDragOperation)draggingEnteredButton:(BookmarkButton*)button { + if ([button isFolder]) { + if (hoverButton_ == button) { + // CASE A: hoverButton_ == button implies we've dragged over + // the same folder so no need to open or close anything new. + } else if (hoverButton_ && + hoverButton_ != button) { + // CASE B: we have a hoverButton_ but it is different from the new button. + // This implies we've dragged over a new folder, so we'll close the old + // and open the new. + // Note that we only schedule the open or close if we have no other tasks + // currently pending. + + if (hoverState_ == kHoverStateOpen) { + // Close the old. + [self scheduleCloseBookmarkFolderOnHoverButton]; + } else if (hoverState_ == kHoverStateClosed) { + // Open the new. + [self scheduleOpenBookmarkFolderOnHoverButton:button]; + } + } else if (!hoverButton_) { + // CASE C: we don't have a current hoverButton_ but we have dragged onto + // a new folder so we open the new one. + [self scheduleOpenBookmarkFolderOnHoverButton:button]; + } + } else if (!button) { + if (hoverButton_) { + // CASE D: We have a hoverButton_ but we've moved onto an area that + // requires no hover. We close the hoverButton_ in this case. This + // means cancelling if the open is pending (i.e. |kHoverStateOpening|) + // or closing if we don't alrealy have once in progress. + + // Intiate close only if we have not already done so. + if (hoverState_ == kHoverStateOpening) { + // Cancel the pending open. + [self cancelPendingOpenBookmarkFolderOnHoverButton]; + } else if (hoverState_ != kHoverStateClosing) { + // Schedule the close. + [self scheduleCloseBookmarkFolderOnHoverButton]; + } + } else { + // CASE E: We have neither a hoverButton_ nor a new button that requires + // a hover. In this case we do nothing. + } + } + + return NSDragOperationMove; +} + +- (void)draggingExited { + if (hoverButton_) { + if (hoverState_ == kHoverStateOpening) { + [self cancelPendingOpenBookmarkFolderOnHoverButton]; + } else if (hoverState_ == kHoverStateClosing) { + [self cancelPendingCloseBookmarkFolderOnHoverButton]; + } + } +} + +// Schedule close of hover button. Transition to kHoverStateClosing state. +- (void)scheduleCloseBookmarkFolderOnHoverButton { + DCHECK(hoverButton_); + [self setHoverState:kHoverStateClosing]; + [self performSelector:@selector(closeBookmarkFolderOnHoverButton:) + withObject:hoverButton_ + afterDelay:bookmarks::kDragHoverCloseDelay + inModes:[NSArray arrayWithObject:NSRunLoopCommonModes]]; +} + +// Cancel pending hover close. Transition to kHoverStateOpen state. +- (void)cancelPendingCloseBookmarkFolderOnHoverButton { + [self setHoverState:kHoverStateOpen]; + [NSObject + cancelPreviousPerformRequestsWithTarget:self + selector:@selector(closeBookmarkFolderOnHoverButton:) + object:hoverButton_]; +} + +// Schedule open of hover button. Transition to kHoverStateOpening state. +- (void)scheduleOpenBookmarkFolderOnHoverButton:(BookmarkButton*)button { + DCHECK(button); + hoverButton_.reset([button retain]); + [self setHoverState:kHoverStateOpening]; + [self performSelector:@selector(openBookmarkFolderOnHoverButton:) + withObject:hoverButton_ + afterDelay:bookmarks::kDragHoverOpenDelay + inModes:[NSArray arrayWithObject:NSRunLoopCommonModes]]; +} + +// Cancel pending hover open. Transition to kHoverStateClosed state. +- (void)cancelPendingOpenBookmarkFolderOnHoverButton { + [self setHoverState:kHoverStateClosed]; + [NSObject + cancelPreviousPerformRequestsWithTarget:self + selector:@selector(openBookmarkFolderOnHoverButton:) + object:hoverButton_]; + hoverButton_.reset(); +} + +// Hover button accessor. For testing only. +- (BookmarkButton*)hoverButton { + return hoverButton_; +} + +// Hover state accessor. For testing only. +- (HoverState)hoverState { + return hoverState_; +} + +// This method encodes the rules of our |hoverButton_| state machine. Only +// specific state transitions are allowable (encoded in the DCHECK). +// Note that there is no state for simultaneously opening and closing. A +// pending open must complete before scheduling a close, and vice versa. And +// it is not possible to make a transition directly from open to closed, and +// vice versa. +- (void)setHoverState:(HoverState)state { + DCHECK( + (hoverState_ == kHoverStateClosed && state == kHoverStateOpening) || + (hoverState_ == kHoverStateOpening && state == kHoverStateClosed) || + (hoverState_ == kHoverStateOpening && state == kHoverStateOpen) || + (hoverState_ == kHoverStateOpen && state == kHoverStateClosing) || + (hoverState_ == kHoverStateClosing && state == kHoverStateOpen) || + (hoverState_ == kHoverStateClosing && state == kHoverStateClosed) + ) << "bad transition: old = " << hoverState_ << " new = " << state; + + hoverState_ = state; +} + +// Called after a delay to close a previously hover-opened folder. +// Note: this method is not meant to be invoked directly, only through +// a delayed call to |scheduleCloseBookmarkFolderOnHoverButton:|. +- (void)closeBookmarkFolderOnHoverButton:(BookmarkButton*)button { + [NSObject + cancelPreviousPerformRequestsWithTarget:self + selector:@selector(closeBookmarkFolderOnHoverButton:) + object:hoverButton_]; + [self setHoverState:kHoverStateClosed]; + [[button target] closeBookmarkFolder:button]; + hoverButton_.reset(); +} + +// Called after a delay to open a new hover folder. +// Note: this method is not meant to be invoked directly, only through +// a delayed call to |scheduleOpenBookmarkFolderOnHoverButton:|. +- (void)openBookmarkFolderOnHoverButton:(BookmarkButton*)button { + [self setHoverState:kHoverStateOpen]; + [[button target] performSelector:@selector(openBookmarkFolderFromButton:) + withObject:button]; +} + +@end diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state_unittest.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state_unittest.mm new file mode 100644 index 0000000..2cab85f --- /dev/null +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state_unittest.mm @@ -0,0 +1,77 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import <Cocoa/Cocoa.h> + +#include "base/message_loop.h" +#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h" +#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state.h" +#import "chrome/browser/ui/cocoa/cocoa_test_helper.h" + +namespace { + +class BookmarkBarFolderHoverStateTest : public CocoaTest { +}; + +// Hover state machine interface. +// A strict call order is implied with these calls. It is ONLY valid to make +// these specific state transitions. +TEST_F(BookmarkBarFolderHoverStateTest, HoverState) { + MessageLoopForUI message_loop; + scoped_nsobject<BookmarkBarFolderHoverState> bbfhs; + bbfhs.reset([[BookmarkBarFolderHoverState alloc] init]); + + // Initial state. + EXPECT_FALSE([bbfhs hoverButton]); + ASSERT_EQ(kHoverStateClosed, [bbfhs hoverState]); + + scoped_nsobject<BookmarkButton> button; + button.reset([[BookmarkButton alloc] initWithFrame:NSMakeRect(0, 0, 20, 20)]); + + // Test transition from closed to opening. + ASSERT_EQ(kHoverStateClosed, [bbfhs hoverState]); + [bbfhs scheduleOpenBookmarkFolderOnHoverButton:button]; + ASSERT_EQ(kHoverStateOpening, [bbfhs hoverState]); + + // Test transition from opening to closed (aka cancel open). + [bbfhs cancelPendingOpenBookmarkFolderOnHoverButton]; + ASSERT_EQ(kHoverStateClosed, [bbfhs hoverState]); + ASSERT_EQ(nil, [bbfhs hoverButton]); + + // Test transition from closed to opening. + ASSERT_EQ(kHoverStateClosed, [bbfhs hoverState]); + [bbfhs scheduleOpenBookmarkFolderOnHoverButton:button]; + ASSERT_EQ(kHoverStateOpening, [bbfhs hoverState]); + + // Test transition from opening to opened. + message_loop.PostDelayedTask( + FROM_HERE, + new MessageLoop::QuitTask, + bookmarks::kDragHoverOpenDelay * 1000.0 * 1.5); + message_loop.Run(); + ASSERT_EQ(kHoverStateOpen, [bbfhs hoverState]); + ASSERT_EQ(button, [bbfhs hoverButton]); + + // Test transition from opening to opened. + [bbfhs scheduleCloseBookmarkFolderOnHoverButton]; + ASSERT_EQ(kHoverStateClosing, [bbfhs hoverState]); + + // Test transition from closing to open (aka cancel close). + [bbfhs cancelPendingCloseBookmarkFolderOnHoverButton]; + ASSERT_EQ(kHoverStateOpen, [bbfhs hoverState]); + ASSERT_EQ(button, [bbfhs hoverButton]); + + // Test transition from closing to closed. + [bbfhs scheduleCloseBookmarkFolderOnHoverButton]; + ASSERT_EQ(kHoverStateClosing, [bbfhs hoverState]); + message_loop.PostDelayedTask( + FROM_HERE, + new MessageLoop::QuitTask, + bookmarks::kDragHoverCloseDelay * 1000.0 * 1.5); + message_loop.Run(); + ASSERT_EQ(kHoverStateClosed, [bbfhs hoverState]); + ASSERT_EQ(nil, [bbfhs hoverButton]); +} + +} // namespace diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.h b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.h new file mode 100644 index 0000000..0dc9194 --- /dev/null +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.h @@ -0,0 +1,21 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import <Cocoa/Cocoa.h> + +@protocol BookmarkButtonControllerProtocol; +@class BookmarkBarFolderController; + +// Main content view for a bookmark bar folder "menu" window. This is +// logically similar to a BookmarkBarView but is oriented vertically. +@interface BookmarkBarFolderView : NSView { + @private + BOOL inDrag_; // Are we in the middle of a drag? + BOOL dropIndicatorShown_; + CGFloat dropIndicatorPosition_; // y position + // The following |controller_| is weak; used for testing only. See the imple- + // mentation comment for - (id<BookmarkButtonControllerProtocol>)controller. + id<BookmarkButtonControllerProtocol> controller_; +} +@end diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.mm new file mode 100644 index 0000000..c108b42 --- /dev/null +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.mm @@ -0,0 +1,206 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.h" + +#include "chrome/browser/bookmarks/bookmark_pasteboard_helper_mac.h" +#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h" +#import "chrome/browser/ui/cocoa/bookmarks/bookmark_folder_target.h" +#include "content/browser/user_metrics.h" + +#import "third_party/mozilla/NSPasteboard+Utils.h" + +@interface BookmarkBarFolderView() + +@property(readonly, nonatomic) id<BookmarkButtonControllerProtocol> controller; + +@end + +@implementation BookmarkBarFolderView + +- (void)awakeFromNib { + NSArray* types = [NSArray arrayWithObjects: + NSStringPboardType, + NSHTMLPboardType, + NSURLPboardType, + kBookmarkButtonDragType, + kBookmarkDictionaryListPboardType, + nil]; + [self registerForDraggedTypes:types]; +} + +- (void)dealloc { + [self unregisterDraggedTypes]; + [super dealloc]; +} + +- (id<BookmarkButtonControllerProtocol>)controller { + // When needed for testing, set the local data member |controller_| to + // the test controller. + return controller_ ? controller_ : [[self window] windowController]; +} + +- (void)drawRect:(NSRect)rect { + // TODO(jrg): copied from bookmark_bar_view but orientation changed. + // Code dup sucks but I'm not sure I can take 16 lines and make it + // generic for horiz vs vertical while keeping things simple. + // TODO(jrg): when throwing it all away and using animations, try + // hard to make a common routine for both. + // http://crbug.com/35966, http://crbug.com/35968 + + // Draw the bookmark-button-dragging drop indicator if necessary. + if (dropIndicatorShown_) { + const CGFloat kBarHeight = 1; + const CGFloat kBarHorizPad = 4; + const CGFloat kBarOpacity = 0.85; + + NSRect uglyBlackBar = + NSMakeRect(kBarHorizPad, dropIndicatorPosition_, + NSWidth([self bounds]) - 2*kBarHorizPad, + kBarHeight); + NSColor* uglyBlackBarColor = [NSColor blackColor]; + [[uglyBlackBarColor colorWithAlphaComponent:kBarOpacity] setFill]; + [[NSBezierPath bezierPathWithRect:uglyBlackBar] fill]; + } +} + +// TODO(mrossetti,jrg): Identical to -[BookmarkBarView +// dragClipboardContainsBookmarks]. http://crbug.com/35966 +// Shim function to assist in unit testing. +- (BOOL)dragClipboardContainsBookmarks { + return bookmark_pasteboard_helper_mac::DragClipboardContainsBookmarks(); +} + +// Virtually identical to [BookmarkBarView draggingEntered:]. +// TODO(jrg): find a way to share code. Lack of multiple inheritance +// makes things more of a pain but there should be no excuse for laziness. +// http://crbug.com/35966 +- (NSDragOperation)draggingEntered:(id<NSDraggingInfo>)info { + inDrag_ = YES; + if (![[self controller] draggingAllowed:info]) + return NSDragOperationNone; + if ([[info draggingPasteboard] dataForType:kBookmarkButtonDragType] || + [self dragClipboardContainsBookmarks] || + [[info draggingPasteboard] containsURLData]) { + // Find the position of the drop indicator. + BOOL showIt = [[self controller] + shouldShowIndicatorShownForPoint:[info draggingLocation]]; + if (!showIt) { + if (dropIndicatorShown_) { + dropIndicatorShown_ = NO; + [self setNeedsDisplay:YES]; + } + } else { + CGFloat y = + [[self controller] + indicatorPosForDragToPoint:[info draggingLocation]]; + + // Need an update if the indicator wasn't previously shown or if it has + // moved. + if (!dropIndicatorShown_ || dropIndicatorPosition_ != y) { + dropIndicatorShown_ = YES; + dropIndicatorPosition_ = y; + [self setNeedsDisplay:YES]; + } + } + + [[self controller] draggingEntered:info]; // allow hover-open to work + return [info draggingSource] ? NSDragOperationMove : NSDragOperationCopy; + } + return NSDragOperationNone; +} + +- (void)draggingExited:(id<NSDraggingInfo>)info { + [[self controller] draggingExited:info]; + + // Regardless of the type of dragging which ended, we need to get rid of the + // drop indicator if one was shown. + if (dropIndicatorShown_) { + dropIndicatorShown_ = NO; + [self setNeedsDisplay:YES]; + } +} + +- (void)draggingEnded:(id<NSDraggingInfo>)info { + // Awkwardness since views open and close out from under us. + if (inDrag_) { + inDrag_ = NO; + } + + [self draggingExited:info]; +} + +- (BOOL)wantsPeriodicDraggingUpdates { + // TODO(jrg): This should probably return |YES| and the controller should + // slide the existing bookmark buttons interactively to the side to make + // room for the about-to-be-dropped bookmark. + // http://crbug.com/35968 + return NO; +} + +- (NSDragOperation)draggingUpdated:(id<NSDraggingInfo>)info { + // For now it's the same as draggingEntered:. + // TODO(jrg): once we return YES for wantsPeriodicDraggingUpdates, + // this should ping the [self controller] to perform animations. + // http://crbug.com/35968 + return [self draggingEntered:info]; +} + +- (BOOL)prepareForDragOperation:(id<NSDraggingInfo>)info { + return YES; +} + +// This code is practically identical to the same function in BookmarkBarView +// with the only difference being how the controller is retrieved. +// TODO(mrossetti,jrg): http://crbug.com/35966 +// Implement NSDraggingDestination protocol method +// performDragOperation: for URLs. +- (BOOL)performDragOperationForURL:(id<NSDraggingInfo>)info { + NSPasteboard* pboard = [info draggingPasteboard]; + DCHECK([pboard containsURLData]); + + NSArray* urls = nil; + NSArray* titles = nil; + [pboard getURLs:&urls andTitles:&titles convertingFilenames:YES]; + + return [[self controller] addURLs:urls + withTitles:titles + at:[info draggingLocation]]; +} + +// This code is practically identical to the same function in BookmarkBarView +// with the only difference being how the controller is retrieved. +// http://crbug.com/35966 +// Implement NSDraggingDestination protocol method +// performDragOperation: for bookmark buttons. +- (BOOL)performDragOperationForBookmarkButton:(id<NSDraggingInfo>)info { + BOOL doDrag = NO; + NSData* data = [[info draggingPasteboard] + dataForType:kBookmarkButtonDragType]; + // [info draggingSource] is nil if not the same application. + if (data && [info draggingSource]) { + BookmarkButton* button = nil; + [data getBytes:&button length:sizeof(button)]; + BOOL copy = !([info draggingSourceOperationMask] & NSDragOperationMove); + doDrag = [[self controller] dragButton:button + to:[info draggingLocation] + copy:copy]; + UserMetrics::RecordAction(UserMetricsAction("BookmarkBarFolder_DragEnd")); + } + return doDrag; +} + +- (BOOL)performDragOperation:(id<NSDraggingInfo>)info { + if ([[self controller] dragBookmarkData:info]) + return YES; + NSPasteboard* pboard = [info draggingPasteboard]; + if ([pboard dataForType:kBookmarkButtonDragType] && + [self performDragOperationForBookmarkButton:info]) + return YES; + if ([pboard containsURLData] && [self performDragOperationForURL:info]) + return YES; + return NO; +} + +@end diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view_unittest.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view_unittest.mm new file mode 100644 index 0000000..aecb48f --- /dev/null +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view_unittest.mm @@ -0,0 +1,151 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/memory/scoped_nsobject.h" +#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h" +#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.h" +#import "chrome/browser/ui/cocoa/bookmarks/bookmark_button.h" +#import "chrome/browser/ui/cocoa/bookmarks/bookmark_folder_target.h" +#import "chrome/browser/ui/cocoa/cocoa_test_helper.h" +#import "chrome/browser/ui/cocoa/url_drop_target.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "testing/platform_test.h" +#import "third_party/mozilla/NSPasteboard+Utils.h" +#import "third_party/ocmock/OCMock/OCMock.h" +#import "third_party/ocmock/ocmock_extensions.h" + +// Allows us to verify BookmarkBarFolderView. +@interface BookmarkBarFolderView(TestingAPI) + +@property(readonly, nonatomic) BOOL dropIndicatorShown; +@property(readonly, nonatomic) CGFloat dropIndicatorPosition; + +-(void)setController:(id<BookmarkButtonControllerProtocol>)controller; + +@end + +@implementation BookmarkBarFolderView(TestingAPI) + +-(void)setController:(id<BookmarkButtonControllerProtocol>)controller { + controller_ = controller; +} + +-(BOOL)dropIndicatorShown { + return dropIndicatorShown_; +} + +-(CGFloat)dropIndicatorPosition { + return dropIndicatorPosition_; +} + +@end + +namespace { + +// Some values used for mocks and fakes. +const CGFloat kFakeIndicatorPos = 7.0; +const NSPoint kPoint = {10, 10}; + +class BookmarkBarFolderViewTest : public CocoaTest { + public: + virtual void SetUp() { + CocoaTest::SetUp(); + view_.reset([[BookmarkBarFolderView alloc] init]); + mock_controller_.reset([GetMockController(YES) retain]); + [view_ awakeFromNib]; + [view_ setController:mock_controller_]; + } + + virtual void TearDown() { + [mock_controller_ verify]; + CocoaTest::TearDown(); + } + + id GetFakePasteboardForType(NSString* dataType) { + id pasteboard = [OCMockObject mockForClass:[NSPasteboard class]]; + [[[pasteboard stub] andReturn:[NSData data]] dataForType:dataType]; + [[[pasteboard stub] andReturn:nil] dataForType:OCMOCK_ANY]; + [[[pasteboard stub] andReturnBool:YES] containsURLData]; + [[pasteboard stub] getURLs:[OCMArg setTo:nil] + andTitles:[OCMArg setTo:nil] + convertingFilenames:YES]; + return pasteboard; + } + + id GetFakeDragInfoForType(NSString* dataType) { + // Need something non-nil to return as the draggingSource. + id source = [OCMockObject mockForClass:[NSObject class]]; + id drag_info = [OCMockObject mockForProtocol:@protocol(NSDraggingInfo)]; + id pasteboard = GetFakePasteboardForType(dataType); + [[[drag_info stub] andReturn:pasteboard] draggingPasteboard]; + [[[drag_info stub] andReturnNSPoint:kPoint] draggingLocation]; + [[[drag_info stub] andReturn:source] draggingSource]; + [[[drag_info stub] + andReturnUnsignedInteger:NSDragOperationCopy | NSDragOperationMove] + draggingSourceOperationMask]; + return drag_info; + } + + id GetMockController(BOOL show_indicator) { + id mock_controller + = [OCMockObject mockForClass:[BookmarkBarFolderController class]]; + [[[mock_controller stub] andReturnBool:YES] + draggingAllowed:OCMOCK_ANY]; + [[[mock_controller stub] andReturnBool:show_indicator] + shouldShowIndicatorShownForPoint:kPoint]; + [[[mock_controller stub] andReturnFloat:kFakeIndicatorPos] + indicatorPosForDragToPoint:kPoint]; + return mock_controller; + } + + scoped_nsobject<id> mock_controller_; + scoped_nsobject<BookmarkBarFolderView> view_; +}; + +TEST_F(BookmarkBarFolderViewTest, BookmarkButtonDragAndDrop) { + id drag_info = GetFakeDragInfoForType(kBookmarkButtonDragType); + [[[mock_controller_ expect] andReturnUnsignedInteger:NSDragOperationNone] + draggingEntered:drag_info]; + [[[mock_controller_ expect] andReturnBool:NO] dragBookmarkData:drag_info]; + [[[mock_controller_ expect] andReturnBool:YES] dragButton:OCMOCK_ANY + to:kPoint + copy:NO]; + + EXPECT_EQ([view_ draggingEntered:drag_info], NSDragOperationMove); + EXPECT_TRUE([view_ performDragOperation:drag_info]); +} + +TEST_F(BookmarkBarFolderViewTest, URLDragAndDrop) { + NSArray* dragTypes = [URLDropTargetHandler handledDragTypes]; + for (NSString* type in dragTypes) { + id drag_info = GetFakeDragInfoForType(type); + [[[mock_controller_ expect] andReturnUnsignedInteger:NSDragOperationNone] + draggingEntered:drag_info]; + [[[mock_controller_ expect] andReturnBool:NO] dragBookmarkData:drag_info]; + [[[mock_controller_ expect] andReturnBool:YES] addURLs:OCMOCK_ANY + withTitles:OCMOCK_ANY + at:kPoint]; + EXPECT_EQ([view_ draggingEntered:drag_info], NSDragOperationMove); + EXPECT_TRUE([view_ performDragOperation:drag_info]); + [mock_controller_ verify]; + } +} + +TEST_F(BookmarkBarFolderViewTest, BookmarkButtonDropIndicator) { + id drag_info = GetFakeDragInfoForType(kBookmarkButtonDragType); + [[[mock_controller_ expect] andReturnUnsignedInteger:NSDragOperationNone] + draggingEntered:drag_info]; + EXPECT_EQ([view_ draggingEntered:drag_info], NSDragOperationMove); + [mock_controller_ verify]; + EXPECT_TRUE([view_ dropIndicatorShown]); + EXPECT_EQ([view_ dropIndicatorPosition], kFakeIndicatorPos); + mock_controller_.reset([GetMockController(NO) retain]); + [view_ setController:mock_controller_]; + [[[mock_controller_ expect] andReturnUnsignedInteger:NSDragOperationNone] + draggingEntered:drag_info]; + EXPECT_EQ([view_ draggingEntered:drag_info], NSDragOperationMove); + EXPECT_FALSE([view_ dropIndicatorShown]); +} + +} // namespace diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.h b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.h new file mode 100644 index 0000000..4a245f0 --- /dev/null +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.h @@ -0,0 +1,33 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_BAR_FOLDER_WINDOW_H_ +#define CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_BAR_FOLDER_WINDOW_H_ +#pragma once + +#import <Cocoa/Cocoa.h> +#import "base/mac/cocoa_protocols.h" +#include "base/memory/scoped_nsobject.h" + + +// Window for a bookmark folder "menu". This menu pops up when you +// click on a bookmark button that represents a folder of bookmarks. +// This window is borderless but has a shadow, at least initially. +// Once the down scroll arrow is shown, the shadow is turned off and +// a secondary window is added which is sized to match the visible +// area of the menu and which provides the shadow. +@interface BookmarkBarFolderWindow : NSWindow +@end + +// Content view for the above window. "Stock" other than the drawing +// of rounded corners. Only used in the nib. +@interface BookmarkBarFolderWindowContentView : NSView +@end + +// Scroll view that contains the main view (where the buttons go). +@interface BookmarkBarFolderWindowScrollView : NSScrollView +@end + + +#endif // CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_BAR_FOLDER_WINDOW_H_ diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.mm new file mode 100644 index 0000000..413cce4 --- /dev/null +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.mm @@ -0,0 +1,90 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.h" + +#import "base/logging.h" +#import "base/memory/scoped_nsobject.h" +#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_constants.h" +#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h" +#import "chrome/browser/ui/cocoa/image_utils.h" +#import "third_party/GTM/AppKit/GTMNSColor+Luminance.h" +#import "third_party/GTM/AppKit/GTMNSBezierPath+RoundRect.h" + +using bookmarks::kBookmarkBarMenuCornerRadius; + +@implementation BookmarkBarFolderWindow + +- (id)initWithContentRect:(NSRect)contentRect + styleMask:(NSUInteger)windowStyle + backing:(NSBackingStoreType)bufferingType + defer:(BOOL)deferCreation { + if ((self = [super initWithContentRect:contentRect + styleMask:NSBorderlessWindowMask // override + backing:bufferingType + defer:deferCreation])) { + [self setBackgroundColor:[NSColor clearColor]]; + [self setOpaque:NO]; + } + return self; +} + +- (BOOL)canBecomeKeyWindow { + return YES; +} + +- (BOOL)canBecomeMainWindow { + return NO; +} + +// Override of keyDown as the NSWindow default implementation beeps. +- (void)keyDown:(NSEvent *)theEvent { +} + +@end + + +@implementation BookmarkBarFolderWindowContentView + +- (void)drawRect:(NSRect)rect { + // Like NSMenus, only the bottom corners are rounded. + NSBezierPath* bezier = + [NSBezierPath gtm_bezierPathWithRoundRect:[self bounds] + topLeftCornerRadius:kBookmarkBarMenuCornerRadius + topRightCornerRadius:kBookmarkBarMenuCornerRadius + bottomLeftCornerRadius:kBookmarkBarMenuCornerRadius + bottomRightCornerRadius:kBookmarkBarMenuCornerRadius]; + NSColor* startColor = [NSColor colorWithCalibratedWhite:0.91 alpha:1.0]; + NSColor* midColor = + [startColor gtm_colorAdjustedFor:GTMColorationLightMidtone faded:YES]; + NSColor* endColor = + [startColor gtm_colorAdjustedFor:GTMColorationLightPenumbra faded:YES]; + + scoped_nsobject<NSGradient> gradient( + [[NSGradient alloc] initWithColorsAndLocations:startColor, 0.0, + midColor, 0.25, + endColor, 0.5, + midColor, 0.75, + startColor, 1.0, + nil]); + [gradient drawInBezierPath:bezier angle:0.0]; +} + +@end + + +@implementation BookmarkBarFolderWindowScrollView + +// We want "draw background" of the NSScrollView in the xib to be NOT +// checked. That allows us to round the bottom corners of the folder +// window. However that also allows some scrollWheel: events to leak +// into the NSWindow behind it (even in a different application). +// Better to plug the scroll leak than to round corners for M5. +- (void)scrollWheel:(NSEvent *)theEvent { + DCHECK([[[self window] windowController] + respondsToSelector:@selector(scrollWheel:)]); + [[[self window] windowController] scrollWheel:theEvent]; +} + +@end diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window_unittest.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window_unittest.mm new file mode 100644 index 0000000..d1d1005 --- /dev/null +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window_unittest.mm @@ -0,0 +1,49 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/memory/scoped_ptr.h" +#include "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.h" +#include "chrome/browser/ui/cocoa/cocoa_test_helper.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "testing/platform_test.h" + +class BookmarkBarFolderWindowTest : public CocoaTest { +}; + +TEST_F(BookmarkBarFolderWindowTest, Borderless) { + scoped_nsobject<BookmarkBarFolderWindow> window_; + window_.reset([[BookmarkBarFolderWindow alloc] + initWithContentRect:NSMakeRect(0,0,20,20) + styleMask:0 + backing:NSBackingStoreBuffered + defer:NO]); + EXPECT_EQ(NSBorderlessWindowMask, [window_ styleMask]); +} + + +class BookmarkBarFolderWindowContentViewTest : public CocoaTest { + public: + BookmarkBarFolderWindowContentViewTest() { + view_.reset([[BookmarkBarFolderWindowContentView alloc] + initWithFrame:NSMakeRect(0, 0, 100, 100)]); + [[test_window() contentView] addSubview:view_.get()]; + } + scoped_nsobject<BookmarkBarFolderWindowContentView> view_; + scoped_nsobject<BookmarkBarFolderWindowScrollView> scroll_view_; +}; + +TEST_VIEW(BookmarkBarFolderWindowContentViewTest, view_); + + +class BookmarkBarFolderWindowScrollViewTest : public CocoaTest { + public: + BookmarkBarFolderWindowScrollViewTest() { + scroll_view_.reset([[BookmarkBarFolderWindowScrollView alloc] + initWithFrame:NSMakeRect(0, 0, 100, 100)]); + [[test_window() contentView] addSubview:scroll_view_.get()]; + } + scoped_nsobject<BookmarkBarFolderWindowScrollView> scroll_view_; +}; + +TEST_VIEW(BookmarkBarFolderWindowScrollViewTest, scroll_view_); diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_unittest_helper.h b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_unittest_helper.h index 3c96d43..d520f6f1 100644 --- a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_unittest_helper.h +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_unittest_helper.h @@ -12,13 +12,6 @@ #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h" #import "chrome/browser/ui/cocoa/bookmarks/bookmark_button.h" -// Returns the number of items in a given bookmark folder -NSUInteger NumberOfMenuItems(BookmarkBarFolderController* folder); - -// Closes a bookmark menu folder after some delay. -void CloseFolderAfterDelay(BookmarkBarFolderController* folder, - NSTimeInterval delay); - @interface BookmarkBarController (BookmarkBarUnitTestHelper) // Return the bookmark button from this bar controller with the given @@ -28,6 +21,15 @@ void CloseFolderAfterDelay(BookmarkBarFolderController* folder, @end +@interface BookmarkBarFolderController (BookmarkBarUnitTestHelper) + +// Return the bookmark button from this folder controller with the given +// |title|, otherwise nil. This does not recurse into subfolders. +- (BookmarkButton*)buttonWithTitleEqualTo:(NSString*)title; + +@end + + @interface BookmarkButton (BookmarkBarUnitTestHelper) // Return the center of the button in the base coordinate system of the diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_unittest_helper.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_unittest_helper.mm index ba6d534..03022ba 100644 --- a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_unittest_helper.mm +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_unittest_helper.mm @@ -4,25 +4,6 @@ #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_unittest_helper.h" -#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h" -#include "chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.h" - -NSUInteger NumberOfMenuItems(BookmarkBarFolderController* folder) { - if (![folder menuBridge]) - return 0; - return [[[[folder menuBridge]->controller() menu] itemArray] count]; -} - -void CloseFolderAfterDelay(BookmarkBarFolderController* folder, - NSTimeInterval delay) { - NSArray* modes = [NSArray arrayWithObjects:NSDefaultRunLoopMode, - NSEventTrackingRunLoopMode, nil]; - [folder performSelector:@selector(closeMenu) - withObject:nil - afterDelay:delay - inModes:modes]; -} - @interface NSArray (BookmarkBarUnitTestHelper) // A helper function for scanning an array of buttons looking for the @@ -52,6 +33,14 @@ void CloseFolderAfterDelay(BookmarkBarFolderController* folder, @end +@implementation BookmarkBarFolderController(BookmarkBarUnitTestHelper) + +- (BookmarkButton*)buttonWithTitleEqualTo:(NSString*)title { + return [[self buttons] buttonWithTitleEqualTo:title]; +} + +@end + @implementation BookmarkButton(BookmarkBarUnitTestHelper) - (NSPoint)center { diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_button.h b/chrome/browser/ui/cocoa/bookmarks/bookmark_button.h index 6b5635b..7bbfc9f 100644 --- a/chrome/browser/ui/cocoa/bookmarks/bookmark_button.h +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_button.h @@ -133,6 +133,12 @@ class ThemeProvider; // Return the theme provider associated with this browser window. - (ui::ThemeProvider*)themeProvider; +// Called just before a child folder puts itself on screen. +- (void)childFolderWillShow:(id<BookmarkButtonControllerProtocol>)child; + +// Called just before a child folder closes. +- (void)childFolderWillClose:(id<BookmarkButtonControllerProtocol>)child; + // Return a controller's folder controller for a subfolder, or nil. - (BookmarkBarFolderController*)folderController; diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_button.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_button.mm index 82dc69d..1a51241 100644 --- a/chrome/browser/ui/cocoa/bookmarks/bookmark_button.mm +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_button.mm @@ -10,6 +10,7 @@ #import "base/memory/scoped_nsobject.h" #include "chrome/browser/bookmarks/bookmark_model.h" #import "chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell.h" +#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.h" #import "chrome/browser/ui/cocoa/browser_window_controller.h" #import "chrome/browser/ui/cocoa/view_id_util.h" #include "content/browser/user_metrics.h" @@ -259,11 +260,77 @@ BookmarkButton* gDraggedButton = nil; // Weak } - (DraggableButtonResult)performMouseDownAction:(NSEvent*)theEvent { + int eventMask = NSLeftMouseUpMask | NSMouseEnteredMask | NSMouseExitedMask | + NSLeftMouseDraggedMask; + + BOOL keepGoing = YES; [[self target] performSelector:[self action] withObject:self]; self.draggableButton.actionHasFired = YES; + + DraggableButton* insideBtn = nil; + + while (keepGoing) { + theEvent = [[self window] nextEventMatchingMask:eventMask]; + if (!theEvent) + continue; + + NSPoint mouseLoc = [self convertPoint:[theEvent locationInWindow] + fromView:nil]; + BOOL isInside = [self mouse:mouseLoc inRect:[self bounds]]; + + switch ([theEvent type]) { + case NSMouseEntered: + case NSMouseExited: { + NSView* trackedView = (NSView*)[[theEvent trackingArea] owner]; + if (trackedView && [trackedView isKindOfClass:[self class]]) { + BookmarkButton* btn = static_cast<BookmarkButton*>(trackedView); + if (![btn acceptsTrackInFrom:self]) + break; + if ([theEvent type] == NSMouseEntered) { + [[NSCursor arrowCursor] set]; + [[btn cell] mouseEntered:theEvent]; + insideBtn = btn; + } else { + [[btn cell] mouseExited:theEvent]; + if (insideBtn == btn) + insideBtn = nil; + } + } + break; + } + case NSLeftMouseDragged: { + if (insideBtn) + [insideBtn mouseDragged:theEvent]; + break; + } + case NSLeftMouseUp: { + self.draggableButton.durationMouseWasDown = + [theEvent timestamp] - self.draggableButton.whenMouseDown; + if (!isInside && insideBtn && insideBtn != self) { + // Has tracked onto another BookmarkButton menu item, and released, + // so fire its action. + [[insideBtn target] performSelector:[insideBtn action] + withObject:insideBtn]; + + } else { + [self secondaryMouseUpAction:isInside]; + [[self cell] mouseExited:theEvent]; + [[insideBtn cell] mouseExited:theEvent]; + } + keepGoing = NO; + break; + } + default: + /* Ignore any other kind of event. */ + break; + } + } return kDraggableButtonMixinDidWork; } + + +// mouseEntered: and mouseExited: are called from our // BookmarkButtonCell. We redirect this information to our delegate. // The controller can then perform menu-like actions (e.g. "hover over // to open menu"). @@ -291,7 +358,8 @@ BookmarkButton* gDraggedButton = nil; // Weak } - (BOOL)canBecomeKeyView { - return NO; + // If button is an item in a folder menu, don't become key. + return ![[self cell] isFolderButtonCell]; } // This only gets called after a click that wasn't a drag, and only on folders. diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell.h b/chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell.h index e9cc012..4ebee07 100644 --- a/chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell.h +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell.h @@ -19,11 +19,23 @@ class BookmarkNode; @private BOOL empty_; // is this an "empty" button placeholder button cell? + // Starting index of bookmarkFolder children that we care to use. + int startingChildIndex_; + + // Should we draw the folder arrow as needed? Not used for the bar + // itself but used on the folder windows. + BOOL drawFolderArrow_; + + // Arrow for folders + scoped_nsobject<NSImage> arrowImage_; + // Text color for title. scoped_nsobject<NSColor> textColor_; } @property(nonatomic, readwrite, assign) const BookmarkNode* bookmarkNode; +@property(nonatomic, readwrite, assign) int startingChildIndex; +@property(nonatomic, readwrite, assign) BOOL drawFolderArrow; // Create a button cell which draws with a theme. + (id)buttonCellForNode:(const BookmarkNode*)node @@ -51,6 +63,8 @@ class BookmarkNode; // Set the color of text in this cell. - (void)setTextColor:(NSColor*)color; +- (BOOL)isFolderButtonCell; + @end #endif // CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_BUTTON_CELL_H_ diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell.mm index 21db378..392c7ca 100644 --- a/chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell.mm +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell.mm @@ -13,6 +13,7 @@ #include "content/browser/user_metrics.h" #include "grit/generated_resources.h" #include "ui/base/l10n/l10n_util_mac.h" +#include "ui/gfx/mac/nsimage_cache.h" @interface BookmarkButtonCell(Private) @@ -23,6 +24,9 @@ @implementation BookmarkButtonCell +@synthesize startingChildIndex = startingChildIndex_; +@synthesize drawFolderArrow = drawFolderArrow_; + + (id)buttonCellForNode:(const BookmarkNode*)node contextMenu:(NSMenu*)contextMenu cellText:(NSString*)cellText @@ -69,6 +73,10 @@ [self configureBookmarkButtonCell]; } +- (BOOL)isFolderButtonCell { + return NO; +} + // Perform all normal init routines specific to the BookmarkButtonCell. - (void)configureBookmarkButtonCell { [self setButtonType:NSMomentaryPushInButton]; @@ -200,4 +208,48 @@ [super mouseExited:event]; } +- (void)setDrawFolderArrow:(BOOL)draw { + drawFolderArrow_ = draw; + if (draw && !arrowImage_) { + arrowImage_.reset( + [gfx::GetCachedImageWithName(@"menu_hierarchy_arrow.pdf") retain]); + } +} + +// Add extra size for the arrow so it doesn't overlap the text. +// Does not sanity check to be sure this is actually a folder node. +- (NSSize)cellSize { + NSSize cellSize = [super cellSize]; + if (drawFolderArrow_) { + cellSize.width += [arrowImage_ size].width; // plus margin? + } + return cellSize; +} + +// Override cell drawing to add a submenu arrow like a real menu. +- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView*)controlView { + // First draw "everything else". + [super drawInteriorWithFrame:cellFrame inView:controlView]; + + // If asked to do so, and if a folder, draw the arrow. + if (!drawFolderArrow_) + return; + BookmarkButton* button = static_cast<BookmarkButton*>([self controlView]); + DCHECK([button respondsToSelector:@selector(isFolder)]); + if ([button isFolder]) { + NSRect imageRect = NSZeroRect; + imageRect.size = [arrowImage_ size]; + const CGFloat kArrowOffset = 1.0; // Required for proper centering. + CGFloat dX = NSWidth(cellFrame) - NSWidth(imageRect); + CGFloat dY = (NSHeight(cellFrame) / 2.0) - (NSHeight(imageRect) / 2.0) + + kArrowOffset; + NSRect drawRect = NSOffsetRect(imageRect, dX, dY); + [arrowImage_ drawInRect:drawRect + fromRect:imageRect + operation:NSCompositeSourceOver + fraction:[self isEnabled] ? 1.0 : 0.5 + neverFlipped:YES]; + } +} + @end diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell_unittest.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell_unittest.mm index 7fd08e3..650004e 100644 --- a/chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell_unittest.mm +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_button_cell_unittest.mm @@ -152,4 +152,29 @@ TEST_F(BookmarkButtonCellTest, Awake) { EXPECT_EQ(NSLeftTextAlignment, [cell alignment]); } +// Subfolder arrow details. +TEST_F(BookmarkButtonCellTest, FolderArrow) { + BookmarkModel* model = profile()->GetBookmarkModel(); + const BookmarkNode* bar = model->bookmark_bar_node(); + const BookmarkNode* node = model->AddURL(bar, bar->child_count(), + ASCIIToUTF16("title"), + GURL("http://www.google.com")); + scoped_nsobject<BookmarkButtonCell> cell( + [[BookmarkButtonCell alloc] initForNode:node + contextMenu:nil + cellText:@"small" + cellImage:nil]); + EXPECT_TRUE(cell.get()); + + NSSize size = [cell cellSize]; + // sanity check + EXPECT_GE(size.width, 2); + EXPECT_GE(size.height, 2); + + // Once we turn on arrow drawing make sure there is now room for it. + [cell setDrawFolderArrow:YES]; + NSSize arrowSize = [cell cellSize]; + EXPECT_GT(arrowSize.width, size.width); +} + } // namespace diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_folder_target_unittest.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_folder_target_unittest.mm index ee1177b..69022fc 100644 --- a/chrome/browser/ui/cocoa/bookmarks/bookmark_folder_target_unittest.mm +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_folder_target_unittest.mm @@ -42,6 +42,27 @@ class BookmarkFolderTargetTest : public CocoaProfileTest { const BookmarkNode* bmbNode_; }; +TEST_F(BookmarkFolderTargetTest, StartWithNothing) { + // Need a fake "button" which has a bookmark node. + id sender = [OCMockObject mockForClass:[BookmarkButton class]]; + [[[sender stub] andReturnValue:OCMOCK_VALUE(bmbNode_)] bookmarkNode]; + + // Fake controller + id controller = [OCMockObject mockForClass:[BookmarkBarFolderController + class]]; + // No current folder + [[[controller stub] andReturn:nil] folderController]; + + // Make sure we get an addNew + [[controller expect] addNewFolderControllerWithParentButton:sender]; + + scoped_nsobject<BookmarkFolderTarget> target( + [[BookmarkFolderTarget alloc] initWithController:controller]); + + [target openBookmarkFolderFromButton:sender]; + EXPECT_OCMOCK_VERIFY(controller); +} + TEST_F(BookmarkFolderTargetTest, ReopenSameFolder) { // Need a fake "button" which has a bookmark node. id sender = [OCMockObject mockForClass:[BookmarkButton class]]; @@ -53,22 +74,18 @@ TEST_F(BookmarkFolderTargetTest, ReopenSameFolder) { // YES a current folder. Self-mock that as well, so "same" will be // true. Note this creates a retain cycle in OCMockObject; we // accomodate at the end of this function. + [[[controller stub] andReturn:controller] folderController]; [[[controller stub] andReturn:sender] parentButton]; - // Fake bookmark bar. - id barController = [OCMockObject mockForClass:[BookmarkBarController class]]; - [[[barController stub] andReturn:controller] folderController]; - // The folder is open, so a click should close just that folder (and // any subfolders). - [[barController expect] closeBookmarkFolder:barController]; + [[controller expect] closeBookmarkFolder:controller]; scoped_nsobject<BookmarkFolderTarget> target( - [[BookmarkFolderTarget alloc] initWithController:barController]); + [[BookmarkFolderTarget alloc] initWithController:controller]); [target openBookmarkFolderFromButton:sender]; EXPECT_OCMOCK_VERIFY(controller); - EXPECT_OCMOCK_VERIFY(barController); // Our use of OCMockObject means an object can return itself. This // creates a retain cycle, since OCMock retains all objects used in @@ -86,22 +103,18 @@ TEST_F(BookmarkFolderTargetTest, ReopenNotSame) { id controller = [OCMockObject mockForClass:[BookmarkBarFolderController class]]; // YES a current folder but NOT same. + [[[controller stub] andReturn:controller] folderController]; [[[controller stub] andReturn:nil] parentButton]; - // Fake bookmark bar. - id barController = [OCMockObject mockForClass:[BookmarkBarController class]]; - [[[barController stub] andReturn:controller] folderController]; - // Insure the controller gets a chance to decide which folders to // close and open. - [[barController expect] addNewFolderControllerWithParentButton:sender]; + [[controller expect] addNewFolderControllerWithParentButton:sender]; scoped_nsobject<BookmarkFolderTarget> target( - [[BookmarkFolderTarget alloc] initWithController:barController]); + [[BookmarkFolderTarget alloc] initWithController:controller]); [target openBookmarkFolderFromButton:sender]; EXPECT_OCMOCK_VERIFY(controller); - EXPECT_OCMOCK_VERIFY(barController); // Break retain cycles. [controller clearRecordersAndExpectations]; diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.h b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.h index cda5392..5fd4f62 100644 --- a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.h +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.h @@ -2,14 +2,15 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. - -// C++ class that connects a BookmarkNode (or the entire model) to a Cocoa class -// that manages an NSMenu. Commonly this is for the main menu and that instance -// is owned by the AppController. This is also used by the folder menus on the -// bookmark bar. +// C++ controller for the bookmark menu; one per AppController (which +// means there is only one). When bookmarks are changed, this class +// takes care of updating Cocoa bookmark menus. This is not named +// BookmarkMenuController to help avoid confusion between languages. +// This class needs to be C++, not ObjC, since it derives from +// BookmarkModelObserver. // -// In the main menu case, most Chromium Cocoa menu items are static from a nib -// (e.g. New Tab), but may be enabled/disabled under certain circumstances +// Most Chromium Cocoa menu items are static from a nib (e.g. New +// Tab), but may be enabled/disabled under certain circumstances // (e.g. Cut and Paste). In addition, most Cocoa menu items have // firstResponder: as a target. Unusually, bookmark menu items are // created dynamically. They also have a target of @@ -36,14 +37,7 @@ class Profile; class BookmarkMenuBridge : public BookmarkModelObserver, public MainMenuItem { public: - // Constructor for the main menu which lists all bookmarks. BookmarkMenuBridge(Profile* profile, NSMenu* menu); - - // Constructor for a submenu. - BookmarkMenuBridge(const BookmarkNode* root_node, - Profile* profile, - NSMenu* menu); - virtual ~BookmarkMenuBridge(); // BookmarkModelObserver: @@ -78,17 +72,9 @@ class BookmarkMenuBridge : public BookmarkModelObserver, // Rebuilds a bookmark menu that's a submenu of another menu. void UpdateSubMenu(NSMenu* bookmark_menu); - // If this bridge is managing a menu for the "Off the Side" chevron button, - // this sets the index in the menu of the first node to display. - void set_off_the_side_node_start_index(size_t index) { - off_the_side_node_start_index_ = index; - InvalidateMenu(); - } - // I wish I had a "friend @class" construct. BookmarkModel* GetBookmarkModel(); Profile* GetProfile(); - BookmarkMenuCocoaController* controller() { return controller_.get(); } protected: // Rebuilds the bookmark content of supplied menu. @@ -98,7 +84,7 @@ class BookmarkMenuBridge : public BookmarkModelObserver, void ClearBookmarkMenu(NSMenu* menu); // Mark the bookmark menu as being invalid. - void InvalidateMenu() { menu_is_valid_ = false; } + void InvalidateMenu() { menuIsValid_ = false; } // Helper for adding the node as a submenu to the menu with the // given title. @@ -114,8 +100,7 @@ class BookmarkMenuBridge : public BookmarkModelObserver, // If |add_extra_items| is true, also adds extra menu items at bottom of // menu, such as "Open All Bookmarks". // TODO(jrg): add a counter to enforce maximum nodes added - void AddNodeToMenu(const BookmarkNode* node, - NSMenu* menu, + void AddNodeToMenu(const BookmarkNode* node, NSMenu* menu, bool add_extra_items); // Helper for adding an item to our bookmark menu. An item which has a @@ -148,24 +133,11 @@ class BookmarkMenuBridge : public BookmarkModelObserver, private: friend class BookmarkMenuBridgeTest; - // Performs the actual work for AddNodeToMenu(), keeping count of the - // recursion depth. - void AddNodeToMenuRecursive(const BookmarkNode* node, - NSMenu* menu, - bool add_extra_items, - int recursion_depth); - // True iff the menu is up-to-date with the actual BookmarkModel. - bool menu_is_valid_; - - // The root node of the menu. - const BookmarkNode* root_node_; - - // Index from which to start adding children from the model. - size_t off_the_side_node_start_index_; + bool menuIsValid_; - Profile* profile_; // Weak. - scoped_nsobject<BookmarkMenuCocoaController> controller_; + Profile* profile_; // weak + BookmarkMenuCocoaController* controller_; // strong // The folder image so we can use one copy for all. scoped_nsobject<NSImage> folder_image_; diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.mm index 79766db..0af4b23 100644 --- a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.mm +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.mm @@ -4,8 +4,6 @@ #import <AppKit/AppKit.h> -#include "chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.h" - #include "base/sys_string_conversions.h" #include "chrome/app/chrome_command_ids.h" #import "chrome/browser/app_controller_mac.h" @@ -13,6 +11,7 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/ui/browser_list.h" +#include "chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge.h" #import "chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.h" #include "grit/generated_resources.h" #include "grit/theme_resources.h" @@ -24,22 +23,7 @@ BookmarkMenuBridge::BookmarkMenuBridge(Profile* profile, NSMenu *menu) - : menu_is_valid_(false), - root_node_(NULL), - off_the_side_node_start_index_(0), - profile_(profile), - controller_([[BookmarkMenuCocoaController alloc] initWithBridge:this - andMenu:menu]) { - if (GetBookmarkModel()) - ObserveBookmarkModel(); -} - -BookmarkMenuBridge::BookmarkMenuBridge(const BookmarkNode* root_node, - Profile* profile, - NSMenu* menu) - : menu_is_valid_(false), - root_node_(root_node), - off_the_side_node_start_index_(0), + : menuIsValid_(false), profile_(profile), controller_([[BookmarkMenuCocoaController alloc] initWithBridge:this andMenu:menu]) { @@ -51,6 +35,7 @@ BookmarkMenuBridge::~BookmarkMenuBridge() { BookmarkModel *model = GetBookmarkModel(); if (model) model->RemoveObserver(this); + [controller_ release]; } NSMenu* BookmarkMenuBridge::BookmarkMenu() { @@ -72,7 +57,7 @@ void BookmarkMenuBridge::UpdateSubMenu(NSMenu* bookmark_menu) { void BookmarkMenuBridge::UpdateMenuInternal(NSMenu* bookmark_menu, bool is_submenu) { DCHECK(bookmark_menu); - if (menu_is_valid_) + if (menuIsValid_) return; BookmarkModel* model = GetBookmarkModel(); if (!model || !model->IsLoaded()) @@ -86,31 +71,27 @@ void BookmarkMenuBridge::UpdateMenuInternal(NSMenu* bookmark_menu, ClearBookmarkMenu(bookmark_menu); - if (!root_node_) { - // Add bookmark bar items, if any. - const BookmarkNode* bar_node = model->bookmark_bar_node(); - CHECK(bar_node); - if (!bar_node->empty()) { - [bookmark_menu addItem:[NSMenuItem separatorItem]]; - AddNodeToMenu(bar_node, bookmark_menu, !is_submenu); - } + // Add bookmark bar items, if any. + const BookmarkNode* barNode = model->bookmark_bar_node(); + CHECK(barNode); + if (!barNode->empty()) { + [bookmark_menu addItem:[NSMenuItem separatorItem]]; + AddNodeToMenu(barNode, bookmark_menu, !is_submenu); + } - // If the "Other Bookmarks" folder has any content, make a submenu for it - // and fill it in. - if (!model->other_node()->empty()) { - NSString* other_items_title = - l10n_util::GetNSString(IDS_BOOKMARK_BAR_OTHER_FOLDER_NAME); - [bookmark_menu addItem:[NSMenuItem separatorItem]]; - AddNodeAsSubmenu(bookmark_menu, - model->other_node(), - other_items_title, - !is_submenu); - } - } else { - AddNodeToMenu(root_node_, bookmark_menu, false); + // If the "Other Bookmarks" folder has any content, make a submenu for it and + // fill it in. + if (!model->other_node()->empty()) { + NSString* other_items_title = + l10n_util::GetNSString(IDS_BOOKMARK_BAR_OTHER_FOLDER_NAME); + [bookmark_menu addItem:[NSMenuItem separatorItem]]; + AddNodeAsSubmenu(bookmark_menu, + model->other_node(), + other_items_title, + !is_submenu); } - menu_is_valid_ = true; + menuIsValid_ = true; } void BookmarkMenuBridge::BookmarkModelBeingDeleted(BookmarkModel* model) { @@ -228,16 +209,9 @@ void BookmarkMenuBridge::AddNodeAsSubmenu(NSMenu* menu, AddNodeToMenu(node, other_submenu, add_extra_items); } -void BookmarkMenuBridge::AddNodeToMenu(const BookmarkNode* node, - NSMenu* menu, +// TODO(jrg): limit the number of bookmarks in the menubar? +void BookmarkMenuBridge::AddNodeToMenu(const BookmarkNode* node, NSMenu* menu, bool add_extra_items) { - AddNodeToMenuRecursive(node, menu, add_extra_items, 0); -} - -void BookmarkMenuBridge::AddNodeToMenuRecursive(const BookmarkNode* node, - NSMenu* menu, - bool add_extra_items, - int recursion_depth) { int child_count = node->child_count(); if (!child_count) { NSString* empty_string = l10n_util::GetNSString(IDS_MENU_EMPTY_SUBMENU); @@ -245,27 +219,21 @@ void BookmarkMenuBridge::AddNodeToMenuRecursive(const BookmarkNode* node, action:nil keyEquivalent:@""] autorelease]; [menu addItem:item]; - } else { - // If this is the first recursive pass, start adding children from the - // start index, which defaults to 0. - const int start = recursion_depth == 0 ? off_the_side_node_start_index_ : 0; - for (int i = start; i < child_count; i++) { - const BookmarkNode* child = node->GetChild(i); - NSString* title = [BookmarkMenuCocoaController menuTitleForNode:child]; - NSMenuItem* item = [[[NSMenuItem alloc] initWithTitle:title - action:nil - keyEquivalent:@""] autorelease]; - [menu addItem:item]; - bookmark_nodes_[child] = item; - if (child->is_folder()) { - [item setImage:folder_image_]; - NSMenu* submenu = [[[NSMenu alloc] initWithTitle:title] autorelease]; - [menu setSubmenu:submenu forItem:item]; - AddNodeToMenuRecursive(child, submenu, add_extra_items, - recursion_depth + 1); // Recursive call. - } else { - ConfigureMenuItem(child, item, false); - } + } else for (int i = 0; i < child_count; i++) { + const BookmarkNode* child = node->GetChild(i); + NSString* title = [BookmarkMenuCocoaController menuTitleForNode:child]; + NSMenuItem* item = [[[NSMenuItem alloc] initWithTitle:title + action:nil + keyEquivalent:@""] autorelease]; + [menu addItem:item]; + bookmark_nodes_[child] = item; + if (child->is_folder()) { + [item setImage:folder_image_]; + NSMenu* submenu = [[[NSMenu alloc] initWithTitle:title] autorelease]; + [menu setSubmenu:submenu forItem:item]; + AddNodeToMenu(child, submenu, add_extra_items); // recursive call + } else { + ConfigureMenuItem(child, item, false); } } diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge_unittest.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge_unittest.mm index d22360a..b777c2f 100644 --- a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge_unittest.mm +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_bridge_unittest.mm @@ -59,10 +59,7 @@ class BookmarkMenuBridgeTest : public CocoaProfileTest { } void InvalidateMenu() { bridge_->InvalidateMenu(); } - bool menu_is_valid() { return bridge_->menu_is_valid_; } - void set_root_node(const BookmarkNode* node) { - bridge_->root_node_ = node; - } + bool menu_is_valid() { return bridge_->menuIsValid_; } void AddNodeToMenu(BookmarkMenuBridge* bridge, const BookmarkNode* root, @@ -85,7 +82,7 @@ class BookmarkMenuBridgeTest : public CocoaProfileTest { } NSMenuItem* AddTestMenuItem(NSMenu *menu, NSString *title, SEL selector) { - NSMenuItem* item = [[[NSMenuItem alloc] initWithTitle:title action:NULL + NSMenuItem *item = [[[NSMenuItem alloc] initWithTitle:title action:NULL keyEquivalent:@""] autorelease]; if (selector) [item setAction:selector]; @@ -244,47 +241,6 @@ TEST_F(BookmarkMenuBridgeTest, TestAddNodeToMenu) { EXPECT_TRUE([long_item image]); } -// Test that AddNodeToMenu() properly generates a menu for an off the side -// button -TEST_F(BookmarkMenuBridgeTest, TestOffTheSideButtonMenu) { - string16 empty; - NSMenu* menu = bridge_->menu_; - - BookmarkModel* model = bridge_->GetBookmarkModel(); - const BookmarkNode* root = model->bookmark_bar_node(); - ASSERT_TRUE(model && root); - - set_root_node(root); - - // 3 nodes; First node is not in the off the side button. Second node is in - // the off the side button. Third node is a folder in the off the side button - // and it should have one submenu. - model->AddURL(root, 0, ASCIIToUTF16("not in button"), GURL("http://foo")); - model->AddURL(root, 1, ASCIIToUTF16("in button"), GURL("http://bar")); - const BookmarkNode* node = model->AddFolder(root, 2, - ASCIIToUTF16("folder in button")); - // Add submenu to the folder node. - model->AddURL(node, 0, empty, GURL("http://sub")); - - bridge_->set_off_the_side_node_start_index(1); - bridge_->UpdateSubMenu(menu); - ASSERT_EQ(2, [menu numberOfItems]); - - // Verify that the 1st node is not in the menu. - NSMenuItem* item = [menu itemWithTitle:@"not in button"]; - EXPECT_FALSE(item); - - // Verify the 2nd node is there with the right action. - item = [menu itemWithTitle:@"in button"]; - EXPECT_TRUE(item); - EXPECT_EQ(@selector(openBookmarkMenuItem:), [item action]); - EXPECT_FALSE([item hasSubmenu]); - - item = [menu itemWithTitle:@"folder in button"]; - EXPECT_TRUE(item); - EXPECT_TRUE([item hasSubmenu]); -} - // Test that AddItemToMenu() properly added versions of // 'Open All Bookmarks' as menu items. TEST_F(BookmarkMenuBridgeTest, TestAddItemToMenu) { diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.h b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.h index cc27553..aeedcdb 100644 --- a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.h +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.h @@ -17,17 +17,15 @@ class BookmarkNode; class BookmarkMenuBridge; -@protocol BookmarkMenuDelegate; @interface BookmarkMenuCocoaController : NSObject<NSMenuDelegate> { @private BookmarkMenuBridge* bridge_; // weak; owns me - NSMenu* menu_; - id<BookmarkMenuDelegate> delegate_; + NSMenu *menu_; } +// The Bookmarks menu @property(nonatomic, readonly) NSMenu* menu; -@property(nonatomic, assign) id<BookmarkMenuDelegate> delegate; // Return an autoreleased string to be used as a menu title for the // given bookmark node. @@ -48,19 +46,6 @@ class BookmarkMenuBridge; @end // BookmarkMenuCocoaController -//////////////////////////////////////////////////////////////////////////////// - -// This protocol is used to forward relevant methods from NSMenuDelegate to -// some other object. -@protocol BookmarkMenuDelegate <NSObject> -@optional - -- (void)bookmarkMenuWillOpen:(BookmarkMenuCocoaController*)controller; -- (void)bookmarkMenuDidClose:(BookmarkMenuCocoaController*)controller; - -@end - -//////////////////////////////////////////////////////////////////////////////// @interface BookmarkMenuCocoaController (ExposedForUnitTests) - (const BookmarkNode*)nodeForIdentifier:(int)identifier; diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.mm index 18176c2..ca2e615 100644 --- a/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.mm +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.mm @@ -26,8 +26,6 @@ const NSUInteger kMaximumMenuPixelsWide = 300; @implementation BookmarkMenuCocoaController -@synthesize delegate = delegate_; - + (NSString*)menuTitleForNode:(const BookmarkNode*)node { NSFont* nsfont = [NSFont menuBarFontOfSize:0]; // 0 means "default" gfx::Font font(base::SysNSStringToUTF16([nsfont fontName]), @@ -76,25 +74,11 @@ const NSUInteger kMaximumMenuPixelsWide = 300; return [controller keyWindowIsNotModal]; } -// NSMenuDelegate ////////////////////////////////////////////////////////////// - // NSMenu delegate method: called just before menu is displayed. - (void)menuNeedsUpdate:(NSMenu*)menu { bridge_->UpdateMenu(menu); } -- (void)menuWillOpen:(NSMenu*)menu { - if ([delegate_ respondsToSelector:@selector(bookmarkMenuWillOpen:)]) - [delegate_ bookmarkMenuWillOpen:self]; -} - -- (void)menuDidClose:(NSMenu*)menu { - if ([delegate_ respondsToSelector:@selector(bookmarkMenuDidClose:)]) - [delegate_ bookmarkMenuDidClose:self]; -} - -// Private ///////////////////////////////////////////////////////////////////// - // Return the a BookmarkNode that has the given id (called // "identifier" here to avoid conflict with objc's concept of "id"). - (const BookmarkNode*)nodeForIdentifier:(int)identifier { diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi index 7a4eb01..2432109 100644 --- a/chrome/chrome_browser.gypi +++ b/chrome/chrome_browser.gypi @@ -2377,8 +2377,16 @@ 'browser/ui/cocoa/bookmarks/bookmark_bar_constants.h', 'browser/ui/cocoa/bookmarks/bookmark_bar_controller.h', 'browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm', + 'browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell.h', + 'browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell.mm', 'browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.h', 'browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.mm', + 'browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state.h', + 'browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state.mm', + 'browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.h', + 'browser/ui/cocoa/bookmarks/bookmark_bar_folder_view.mm', + 'browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.h', + 'browser/ui/cocoa/bookmarks/bookmark_bar_folder_window.mm', 'browser/ui/cocoa/bookmarks/bookmark_bar_state.h', 'browser/ui/cocoa/bookmarks/bookmark_bar_toolbar_view.h', 'browser/ui/cocoa/bookmarks/bookmark_bar_toolbar_view.mm', diff --git a/chrome/chrome_dll.gypi b/chrome/chrome_dll.gypi index 4a856d7..3267709 100644 --- a/chrome/chrome_dll.gypi +++ b/chrome/chrome_dll.gypi @@ -223,6 +223,7 @@ 'app/nibs/AvatarMenuItem.xib', 'app/nibs/BookmarkAllTabs.xib', 'app/nibs/BookmarkBar.xib', + 'app/nibs/BookmarkBarFolderWindow.xib', 'app/nibs/BookmarkBubble.xib', 'app/nibs/BookmarkEditor.xib', 'app/nibs/BookmarkNameFolder.xib', @@ -269,6 +270,9 @@ 'app/theme/chevron.pdf', 'app/theme/find_next_Template.pdf', 'app/theme/find_prev_Template.pdf', + 'app/theme/menu_hierarchy_arrow.pdf', + 'app/theme/menu_overflow_down.pdf', + 'app/theme/menu_overflow_up.pdf', 'app/theme/nav.pdf', 'app/theme/newtab.pdf', 'app/theme/newtab_h.pdf', diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi index debc31e..93fd464 100644 --- a/chrome/chrome_tests.gypi +++ b/chrome/chrome_tests.gypi @@ -1577,7 +1577,11 @@ 'browser/ui/cocoa/bookmarks/bookmark_all_tabs_controller_unittest.mm', 'browser/ui/cocoa/bookmarks/bookmark_bar_bridge_unittest.mm', 'browser/ui/cocoa/bookmarks/bookmark_bar_controller_unittest.mm', + 'browser/ui/cocoa/bookmarks/bookmark_bar_folder_button_cell_unittest.mm', 'browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller_unittest.mm', + 'browser/ui/cocoa/bookmarks/bookmark_bar_folder_hover_state_unittest.mm', + 'browser/ui/cocoa/bookmarks/bookmark_bar_folder_view_unittest.mm', + 'browser/ui/cocoa/bookmarks/bookmark_bar_folder_window_unittest.mm', 'browser/ui/cocoa/bookmarks/bookmark_bar_toolbar_view_unittest.mm', 'browser/ui/cocoa/bookmarks/bookmark_bar_unittest_helper.h', 'browser/ui/cocoa/bookmarks/bookmark_bar_unittest_helper.mm', |