Merge mozilla-central to tracemonkey.
authorRobert Sayre <sayrer@gmail.com>
Wed, 12 Aug 2009 12:18:38 -0700
changeset 31510 01659ac47ffaf70b65fcfe83c3f7707b6de134b0
parent 31509 bb6086ec04b8d5d0d99f596bb77e73a15a891ba4 (current diff)
parent 31396 23a7450239922bb798a28a767c6f1e1d51ca5f30 (diff)
child 31511 07e3df4742cbaa9e6aefbd540a4f1de9eea79b4d
push idunknown
push userunknown
push dateunknown
milestone1.9.2a2pre
Merge mozilla-central to tracemonkey.
browser/themes/pinstripe/browser/Toolbar-rtl.png
browser/themes/pinstripe/browser/places/selected-focused-gradient.png
browser/themes/pinstripe/browser/places/selected-gradient.png
dom/base/nsDOMClassInfo.cpp
embedding/config/readme.html
extensions/python/Makefile.in
extensions/python/dom/Makefile.in
extensions/python/dom/README.txt
extensions/python/dom/makefiles.sh
extensions/python/dom/nsdom/Makefile.in
extensions/python/dom/nsdom/__init__.py
extensions/python/dom/nsdom/context.py
extensions/python/dom/nsdom/domcompile.py
extensions/python/dom/nsdom/test/Makefile.in
extensions/python/dom/nsdom/test/regrtest.py
extensions/python/dom/nsdom/test/test_compile.py
extensions/python/dom/src/Makefile.in
extensions/python/dom/src/nsPyArgArray.cpp
extensions/python/dom/src/nsPyContext.cpp
extensions/python/dom/src/nsPyContext.h
extensions/python/dom/src/nsPyDOM.h
extensions/python/dom/src/nsPyDOMISupports.cpp
extensions/python/dom/src/nsPyDOMModule.cpp
extensions/python/dom/src/nsPyRuntime.cpp
extensions/python/dom/src/nsPyRuntime.h
extensions/python/dom/src/nsPyTimeout.cpp
extensions/python/dom/test/Makefile.in
extensions/python/dom/test/pyxultest/Makefile.in
extensions/python/dom/test/pyxultest/README.txt
extensions/python/dom/test/pyxultest/application.ini
extensions/python/dom/test/pyxultest/chrome/chrome.manifest
extensions/python/dom/test/pyxultest/chrome/content/dialog.xul
extensions/python/dom/test/pyxultest/chrome/content/document_write.xul
extensions/python/dom/test/pyxultest/chrome/content/html_content.html
extensions/python/dom/test/pyxultest/chrome/content/js_overlay.xul
extensions/python/dom/test/pyxultest/chrome/content/pytester.py
extensions/python/dom/test/pyxultest/chrome/content/pytester.xul
extensions/python/dom/test/pyxultest/chrome/content/python_overlay.xul
extensions/python/dom/test/pyxultest/chrome/content/pyxultest.css
extensions/python/dom/test/pyxultest/chrome/content/pyxultest.py
extensions/python/dom/test/pyxultest/chrome/content/pyxultest.xul
extensions/python/dom/test/pyxultest/jar.mn
extensions/python/dom/test/pyxultest/pyxultest-prefs.js
extensions/python/makefiles.sh
extensions/python/xpcom/Makefile.in
extensions/python/xpcom/__init__.py
extensions/python/xpcom/client/__init__.py
extensions/python/xpcom/components.py
extensions/python/xpcom/components/Makefile.in
extensions/python/xpcom/components/README.txt
extensions/python/xpcom/components/pyabout.py
extensions/python/xpcom/file.py
extensions/python/xpcom/makefiles.sh
extensions/python/xpcom/nsError.py
extensions/python/xpcom/primitives.py
extensions/python/xpcom/server/__init__.py
extensions/python/xpcom/server/enumerator.py
extensions/python/xpcom/server/factory.py
extensions/python/xpcom/server/loader.py
extensions/python/xpcom/server/module.py
extensions/python/xpcom/server/policy.py
extensions/python/xpcom/shutdown.py
extensions/python/xpcom/src/ErrorUtils.cpp
extensions/python/xpcom/src/Makefile.in
extensions/python/xpcom/src/PyGBase.cpp
extensions/python/xpcom/src/PyGInputStream.cpp
extensions/python/xpcom/src/PyGModule.cpp
extensions/python/xpcom/src/PyGStub.cpp
extensions/python/xpcom/src/PyGWeakReference.cpp
extensions/python/xpcom/src/PyIClassInfo.cpp
extensions/python/xpcom/src/PyIComponentManager.cpp
extensions/python/xpcom/src/PyIEnumerator.cpp
extensions/python/xpcom/src/PyIID.cpp
extensions/python/xpcom/src/PyIInputStream.cpp
extensions/python/xpcom/src/PyIInterfaceInfo.cpp
extensions/python/xpcom/src/PyIInterfaceInfoManager.cpp
extensions/python/xpcom/src/PyISimpleEnumerator.cpp
extensions/python/xpcom/src/PyISupports.cpp
extensions/python/xpcom/src/PyIVariant.cpp
extensions/python/xpcom/src/PyXPCOM.h
extensions/python/xpcom/src/PyXPCOM_std.h
extensions/python/xpcom/src/Pyxpt_info.cpp
extensions/python/xpcom/src/TypeObject.cpp
extensions/python/xpcom/src/VariantUtils.cpp
extensions/python/xpcom/src/dllmain.cpp
extensions/python/xpcom/src/loader/Makefile.in
extensions/python/xpcom/src/loader/pyloader.cpp
extensions/python/xpcom/src/module/Makefile.in
extensions/python/xpcom/src/module/_xpcom.cpp
extensions/python/xpcom/src/readme.html
extensions/python/xpcom/test/Makefile.in
extensions/python/xpcom/test/pyxpcom_test_tools.py
extensions/python/xpcom/test/regrtest.py
extensions/python/xpcom/test/test_com_exceptions.py
extensions/python/xpcom/test/test_comfile.py
extensions/python/xpcom/test/test_component/Makefile.in
extensions/python/xpcom/test/test_component/py_test_component.html
extensions/python/xpcom/test/test_component/py_test_component.idl
extensions/python/xpcom/test/test_component/py_test_component.py
extensions/python/xpcom/test/test_components.py
extensions/python/xpcom/test/test_isupports_primitives.py
extensions/python/xpcom/test/test_misc.py
extensions/python/xpcom/test/test_streams.py
extensions/python/xpcom/test/test_test_component.js
extensions/python/xpcom/test/test_test_component.py
extensions/python/xpcom/test/test_weakreferences.py
extensions/python/xpcom/tools/regxpcom.py
extensions/python/xpcom/tools/tracer_demo.py
extensions/python/xpcom/xpcom_consts.py
extensions/python/xpcom/xpt.py
js/src/Makefile.in
js/src/configure.in
js/src/jsarray.cpp
js/src/jsparse.cpp
js/src/jsxml.cpp
js/src/shell/js.cpp
js/src/xpconnect/src/xpcprivate.h
js/src/xpconnect/src/xpcquickstubs.cpp
layout/style/nsIInspectorCSSUtils.h
layout/style/nsInspectorCSSUtils.cpp
layout/style/nsInspectorCSSUtils.h
netwerk/base/public/nsISafeOutputStream.idl
nsprpub/configure
toolkit/mozapps/update/test/unit/head_update.js
toolkit/mozapps/update/test/unit/test_0040_general.js.in
toolkit/themes/pinstripe/global/icons/chevron-rtl.png
toolkit/themes/pinstripe/global/icons/find-bar-background.png
toolkit/themes/pinstripe/global/icons/white-gray-gradient-active.gif
toolkit/themes/pinstripe/global/icons/white-gray-gradient.gif
toolkit/themes/pinstripe/global/toolbar/white-transparent-gradient.png
toolkit/themes/winstripe/global/toolbar/chevron-rtl.gif
tools/tests/LoadUrl.pl
tools/tests/SmokeTestLinux-1.pl
tools/tests/launchviewer.bat
tools/tests/mac/IntlSmoke.txt
tools/tests/mac/all_smoke.txt
tools/tests/mac/apFrame.inc
tools/tests/mac/i18n_smoketest.t
tools/tests/mac/smoketest.t
tools/tests/unix/smoke.pl
tools/tests/unix/url.txt
tools/tests/url.txt
tools/tests/win32/Copy.pm
tools/tests/win32/Intlurl.pl
tools/tests/win32/Intlurl.txt
tools/tests/win32/Process.pm
tools/tests/win32/apprunner.pl
tools/tests/win32/inbox
tools/tests/win32/inbox.snm
tools/tests/win32/mail.pl
tools/tests/win32/message.eml
tools/tests/win32/pop3.pl
tools/tests/win32/popresult.txt
tools/tests/win32/poptestdata.txt
tools/tests/win32/smoke.pl
tools/tests/win32/smtp.pl
tools/tests/win32/smtpresult.txt
tools/tests/win32/smtptestdata.txt
tools/tests/win32/test.pl
tools/tests/win32/url.pl
tools/tests/win32/url.txt
widget/src/os2/extradefs.os2
widget/src/os2/nsSwitchToUIThread.h
widget/src/windows/nsSwitchToUIThread.h
--- a/accessible/src/atk/nsAppRootAccessible.cpp
+++ b/accessible/src/atk/nsAppRootAccessible.cpp
@@ -42,16 +42,17 @@
 #include "nsCOMPtr.h"
 #include "nsMai.h"
 #include "nsAppRootAccessible.h"
 #include "prlink.h"
 #include "prenv.h"
 #include "nsIPrefBranch.h"
 #include "nsIServiceManager.h"
 #include "nsAutoPtr.h"
+#include "nsAccessibilityService.h"
 
 #include <gtk/gtk.h>
 #include <atk/atk.h>
 
 typedef GType (* AtkGetTypeType) (void);
 GType g_atk_hyperlink_impl_type = G_TYPE_INVALID;
 static PRBool sATKChecked = PR_FALSE;
 static PRLibrary *sATKLib = nsnull;
@@ -430,27 +431,29 @@ mai_util_remove_key_event_listener (guin
     if (g_hash_table_size(key_listener_list) == 0) {
         gtk_key_snooper_remove(key_snooper_id);
     }
 }
 
 AtkObject *
 mai_util_get_root(void)
 {
+    if (nsAccessibilityService::gIsShutdown) {
+        // We've shutdown, try to use gail instead
+        // (to avoid assert in spi_atk_tidy_windows())
+        if (gail_get_root)
+            return gail_get_root();
+    }
+
     nsRefPtr<nsApplicationAccessibleWrap> root =
         nsAccessNode::GetApplicationAccessible();
 
     if (root)
         return root->GetAtkObject();
 
-    // We've shutdown, try to use gail instead
-    // (to avoid assert in spi_atk_tidy_windows())
-    if (gail_get_root)
-        return gail_get_root();
-
     return nsnull;
 }
 
 G_CONST_RETURN gchar *
 mai_util_get_toolkit_name(void)
 {
     return MAI_NAME;
 }
--- a/accessible/src/base/nsDocAccessible.cpp
+++ b/accessible/src/base/nsDocAccessible.cpp
@@ -83,16 +83,19 @@ nsIAtom *nsDocAccessible::gLastFocusedFr
 //-----------------------------------------------------
 // construction
 //-----------------------------------------------------
 nsDocAccessible::nsDocAccessible(nsIDOMNode *aDOMNode, nsIWeakReference* aShell):
   nsHyperTextAccessibleWrap(aDOMNode, aShell), mWnd(nsnull),
   mScrollPositionChangedTicks(0), mIsContentLoaded(PR_FALSE),
   mIsLoadCompleteFired(PR_FALSE), mInFlushPendingEvents(PR_FALSE)
 {
+  // XXX aaronl should we use an algorithm for the initial cache size?
+  mAccessNodeCache.Init(kDefaultCacheSize);
+
   // For GTK+ native window, we do nothing here.
   if (!mDOMNode)
     return;
 
   // Because of the way document loading happens, the new nsIWidget is created before
   // the old one is removed. Since it creates the nsDocAccessible, for a brief moment
   // there can be 2 nsDocAccessible's for the content area, although for 2 different
   // pres shells.
@@ -108,19 +111,16 @@ nsDocAccessible::nsDocAccessible(nsIDOMN
       nsCOMPtr<nsIWidget> widget;
       vm->GetRootWidget(getter_AddRefs(widget));
       if (widget) {
         mWnd = widget->GetNativeData(NS_NATIVE_WINDOW);
       }
     }
   }
 
-  // XXX aaronl should we use an algorithm for the initial cache size?
-  mAccessNodeCache.Init(kDefaultCacheSize);
-
   nsCOMPtr<nsIDocShellTreeItem> docShellTreeItem =
     nsCoreUtils::GetDocShellTreeItemFor(mDOMNode);
   nsCOMPtr<nsIDocShell> docShell = do_QueryInterface(docShellTreeItem);
   if (docShell) {
     PRUint32 busyFlags;
     docShell->GetBusyFlags(&busyFlags);
     if (busyFlags == nsIDocShell::BUSY_FLAGS_NONE) {
       mIsContentLoaded = PR_TRUE;                                               
@@ -1792,22 +1792,21 @@ nsDocAccessible::FlushPendingEvents()
           if (hidingNode) {
             RefreshNodes(hidingNode); // Will this bite us with asynch events
           }
         }
       }
     }
   }
   mEventsToFire.Clear(); // Clear out array
+  mInFlushPendingEvents = PR_FALSE;
   NS_RELEASE_THIS(); // Release kung fu death grip
 
   // After a flood of events, reset so that user input flag is off
   nsAccEvent::ResetLastInputState();
-
-  mInFlushPendingEvents = PR_FALSE;
 }
 
 void nsDocAccessible::FlushEventsCallback(nsITimer *aTimer, void *aClosure)
 {
   nsDocAccessible *accessibleDoc = static_cast<nsDocAccessible*>(aClosure);
   NS_ASSERTION(accessibleDoc, "How did we get here without an accessible document?");
   if (accessibleDoc) {
     // A lot of crashes were happening here, so now we're reffing the doc
--- a/accessible/src/base/nsRelUtils.cpp
+++ b/accessible/src/base/nsRelUtils.cpp
@@ -37,16 +37,17 @@
  * ***** END LICENSE BLOCK ***** */
 
 #include "nsRelUtils.h"
 
 #include "nsAccessNode.h"
 
 #include "nsIDOMDocument.h"
 #include "nsIDOMElement.h"
+#include "nsIDOMDocumentXBL.h"
 
 #include "nsAutoPtr.h"
 #include "nsArrayUtils.h"
 
 already_AddRefed<nsIAccessible>
 nsRelUtils::GetRelatedAccessible(nsIAccessible *aAccessible,
                                  PRUint32 aRelationType)
 {
@@ -94,30 +95,42 @@ nsRelUtils::AddTargetFromContent(PRUint3
   nsCOMPtr<nsIAccessible> accessible;
   accService->GetAccessibleFor(node, getter_AddRefs(accessible));
   return AddTarget(aRelationType, aRelation, accessible);
 }
 
 nsresult
 nsRelUtils::AddTargetFromIDRefAttr(PRUint32 aRelationType,
                                    nsIAccessibleRelation **aRelation,
-                                   nsIContent *aContent, nsIAtom *aAttr)
+                                   nsIContent *aContent, nsIAtom *aAttr,
+                                   PRBool aMayBeAnon)
 {
   nsAutoString id;
   if (!aContent->GetAttr(kNameSpaceID_None, aAttr, id))
     return NS_OK_NO_RELATION_TARGET;
 
   nsCOMPtr<nsIDOMDocument> document =
     do_QueryInterface(aContent->GetOwnerDoc());
   NS_ASSERTION(document, "The given node is not in document!");
   if (!document)
     return NS_OK_NO_RELATION_TARGET;
 
   nsCOMPtr<nsIDOMElement> refElm;
-  document->GetElementById(id, getter_AddRefs(refElm));
+  if (aMayBeAnon && aContent->GetBindingParent()) {
+    nsCOMPtr<nsIDOMDocumentXBL> documentXBL(do_QueryInterface(document));
+    nsCOMPtr<nsIDOMElement> bindingParent =
+      do_QueryInterface(aContent->GetBindingParent());
+    documentXBL->GetAnonymousElementByAttribute(bindingParent,
+                                                NS_LITERAL_STRING("id"),
+                                                id,
+                                                getter_AddRefs(refElm));
+  }
+  else {
+    document->GetElementById(id, getter_AddRefs(refElm));
+  }
 
   nsCOMPtr<nsIContent> refContent(do_QueryInterface(refElm));
   return AddTargetFromContent(aRelationType, aRelation, refContent);
 }
 
 nsresult
 nsRelUtils::AddTargetFromIDRefsAttr(PRUint32 aRelationType,
                                     nsIAccessibleRelation **aRelation,
--- a/accessible/src/base/nsRelUtils.h
+++ b/accessible/src/base/nsRelUtils.h
@@ -92,20 +92,24 @@ public:
   /**
    * Create the relation if the given relation is null and add the target to it
    * pointed by IDRef attribute on the given node.
    *
    * @param  aRelationType  [in] relation type
    * @param  aRelation      [in, out] relation object
    * @param  aContent       [in] node having the given IDRef attribute
    * @param  aAttr          [in] IDRef attribute
+   * @param  aMayBeAnon     [in] true if the target may be anonymous; if so,
+   *                             we need to look for it under the binding
+   *                             parent of aContent.
    */
   static nsresult AddTargetFromIDRefAttr(PRUint32 aRelationType,
                                          nsIAccessibleRelation **aRelation,
-                                         nsIContent *aContent, nsIAtom *aAttr);
+                                         nsIContent *aContent, nsIAtom *aAttr,
+                                         PRBool aMayBeAnon = PR_FALSE);
 
   /**
    * Create the relation if the given relation is null and add the targets to it
    * that are pointed by IDRefs attribute on the given node.
    *
    * @param  aRelationType  [in] relation type
    * @param  aRelation      [in, out] relation object
    * @param  aContent       [in] node having the given IDRefs attribute
--- a/accessible/src/html/nsHTMLTableAccessible.h
+++ b/accessible/src/html/nsHTMLTableAccessible.h
@@ -217,17 +217,17 @@ protected:
    *
    * @param  aTagName     [in] tag name of searched element
    * @param  aAllowEmpty  [in, optional] points if found element can be empty
    *                       or contain whitespace text only.
    */
   PRBool HasDescendant(const nsAString& aTagName, PRBool aAllowEmpty = PR_TRUE);
 
 #ifdef SHOW_LAYOUT_HEURISTIC
-  nsAutoString mLayoutHeuristic;
+  nsString mLayoutHeuristic;
 #endif
 };
 
 NS_DEFINE_STATIC_IID_ACCESSOR(nsHTMLTableAccessible,
                               NS_TABLEACCESSIBLE_IMPL_CID)
 
 
 class nsHTMLTableHeadAccessible : public nsHTMLTableAccessible
--- a/accessible/src/mac/nsAccessibleWrap.mm
+++ b/accessible/src/mac/nsAccessibleWrap.mm
@@ -233,17 +233,17 @@ nsAccessibleWrap::GetUnignoredChildCount
     return 0;
   
   PRInt32 childCount = 0;
   GetChildCount(&childCount);
   
   nsCOMPtr<nsIAccessible> curAcc;
   
   while (NextChild(curAcc)) {
-    nsAccessibleWrap *childWrap = static_cast<nsAccessibleWrap*>((nsIAccessible*)curAcc.get());
+    nsAccessibleWrap *childWrap = static_cast<nsAccessibleWrap*>(curAcc.get());
     
     // if the current child is not ignored, count it.
     if (!childWrap->IsIgnored())
       ++childCount;
       
     // if it's flat, we don't care to inspect its children.
     if (nsAccUtils::MustPrune(childWrap))
       continue;
@@ -275,17 +275,17 @@ nsAccessibleWrap::GetUnignoredChildren(n
 {
   nsCOMPtr<nsIAccessible> curAcc;
   
   // we're flat; there are no children.
   if (nsAccUtils::MustPrune(this))
     return;
   
   while (NextChild(curAcc)) {
-    nsAccessibleWrap *childWrap = static_cast<nsAccessibleWrap*>((nsIAccessible*)curAcc.get());
+    nsAccessibleWrap *childWrap = static_cast<nsAccessibleWrap*>(curAcc.get());
     if (childWrap->IsIgnored()) {
       // element is ignored, so try adding its children as substitutes, if it has any.
       if (!nsAccUtils::MustPrune(childWrap)) {
         nsTArray<nsRefPtr<nsAccessibleWrap> > children;
         childWrap->GetUnignoredChildren(children);
         if (!children.IsEmpty()) {
           // add the found unignored descendants to the array.
           aChildrenArray.AppendElements(children);
@@ -296,17 +296,17 @@ nsAccessibleWrap::GetUnignoredChildren(n
       aChildrenArray.AppendElement(childWrap);
   }
 }
 
 already_AddRefed<nsIAccessible>
 nsAccessibleWrap::GetUnignoredParent()
 {
   nsCOMPtr<nsIAccessible> parent(GetParent());
-  nsAccessibleWrap *parentWrap = static_cast<nsAccessibleWrap*>((nsIAccessible*)parent.get());
+  nsAccessibleWrap *parentWrap = static_cast<nsAccessibleWrap*>(parent.get());
   if (!parentWrap)
     return nsnull;
     
   // recursively return the parent, until we find one that is not ignored.
   if (parentWrap->IsIgnored())
     return parentWrap->GetUnignoredParent();
   
   nsIAccessible *outValue = nsnull;
--- a/accessible/src/xul/nsXULTabAccessible.cpp
+++ b/accessible/src/xul/nsXULTabAccessible.cpp
@@ -144,17 +144,18 @@ nsXULTabAccessible::GetRelationByType(PR
   // Expose 'LABEL_FOR' relation on tab accessible for tabpanel accessible.
   // XXX: It makes sense to require the interface from xul:tab to get linked
   // tabpanel element.
   nsCOMPtr<nsIContent> content(do_QueryInterface(mDOMNode));
 
   // Check whether tab and tabpanel are related by 'linkedPanel' attribute on
   // xul:tab element.
   rv = nsRelUtils::AddTargetFromIDRefAttr(aRelationType, aRelation, content,
-                                          nsAccessibilityAtoms::linkedPanel);
+                                          nsAccessibilityAtoms::linkedPanel,
+                                          PR_TRUE);
   NS_ENSURE_SUCCESS(rv, rv);
 
   if (rv != NS_OK_NO_RELATION_TARGET)
     return NS_OK;
 
   // If there is no 'linkedPanel' attribute on xul:tab element then we
   // assume tab and tabpanels are related 1 to 1. We follow algorithm from
   // the setter 'selectedIndex' of tabbox.xml#tabs binding.
--- a/browser/app/Makefile.in
+++ b/browser/app/Makefile.in
@@ -212,17 +212,16 @@ ifdef BUILD_STATIC_LIBS
 OS_LIBS += -ltracker -lgame
 endif
 endif
 
 ifeq ($(OS_ARCH),OS2)
 RESFILE=splashos2.res
 RCFLAGS += -DMOZ_PHOENIX
 ifdef BUILD_STATIC_LIBS
-EXE_DEF_FILE = browser.def
 RCFLAGS += -DMOZ_STATIC_BUILD -i $(DIST)/include/widget
 endif
 ifdef DEBUG
 RCFLAGS += -DDEBUG
 endif
 RCFLAGS += -DFIREFOX_ICO=\"$(DIST)/branding/firefox-os2.ico\" -DDOCUMENT_ICO=\"$(DIST)/branding/document-os2.ico\"
 endif
 
@@ -257,30 +256,16 @@ ifeq ($(OS_ARCH),WINNT)
 #
 ifndef GNU_CC
 LDFLAGS += /HEAP:0x40000
 endif
 endif
 
 $(PROGRAM): $(DEPTH)/toolkit/xre/$(LIB_PREFIX)xulapp_s.$(LIB_SUFFIX)
 
-ifeq ($(OS_ARCH),OS2)
-ifdef BUILD_STATIC_LIBS
-$(EXE_DEF_FILE):
-	rm -f $@
-	@echo NAME mozilla >$(EXE_DEF_FILE)
-	@echo IMPORTS >>$(EXE_DEF_FILE)
-	@echo 	WinQueryProperty		= PMMERGE.5450 >>$(EXE_DEF_FILE)
-	@echo 	WinRemoveProperty		= PMMERGE.5451 >>$(EXE_DEF_FILE)
-	@echo 	WinSetProperty			= PMMERGE.5452 >>$(EXE_DEF_FILE)
-
-LDFLAGS += -Zlinker /NOE
-endif
-endif
-
 ifneq (,$(filter-out OS2 WINNT WINCE,$(OS_ARCH)))
 
 $(MOZ_APP_NAME):: $(topsrcdir)/build/unix/mozilla.in $(GLOBAL_DEPS)
 	cat $< | sed -e "s|%MOZAPPDIR%|$(installdir)|" \
 		-e "s|%MOZ_APP_DISPLAYNAME%|$(MOZ_APP_DISPLAYNAME)|" > $@
 	chmod +x $@
 
 libs:: $(MOZ_APP_NAME)
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -217,21 +217,16 @@ pref("browser.urlbar.autoFill", false);
 // 1: Match on word boundaries and then try matching anywhere
 // 2: Match only on word boundaries (e.g., after / or .)
 // 3: Match at the beginning of the url or title
 pref("browser.urlbar.matchBehavior", 1);
 pref("browser.urlbar.filter.javascript", true);
 
 // the maximum number of results to show in autocomplete when doing richResults
 pref("browser.urlbar.maxRichResults", 12);
-// Size of "chunks" affects the number of places to process between each search
-// timeout (ms). Too big and the UI will be unresponsive; too small and we'll
-// be waiting on the timeout too often without many results.
-pref("browser.urlbar.search.chunkSize", 1000);
-pref("browser.urlbar.search.timeout", 100);
 // The amount of time (ms) to wait after the user has stopped typing
 // before starting to perform autocomplete.  50 is the default set in
 // autocomplete.xml.
 pref("browser.urlbar.delay", 50);
 
 // The special characters below can be typed into the urlbar to either restrict
 // the search to visited history, bookmarked, tagged pages; or force a match on
 // just the title text or url.
@@ -853,20 +848,17 @@ pref("browser.privatebrowsing.dont_promp
 // bookmarking dialog
 pref("browser.bookmarks.editDialog.firstEditField", "namePicker");
 
 // base url for the wifi geolocation network provider
 pref("geo.wifi.uri", "https://www.google.com/loc/json");
 
 #ifdef WINCE
 
-// tweak awesomebar -- increase the delay until a search happens, and reduce
-// the amount of time spent waiting for a search result 
-pref("browser.urlbar.search.chunkSize", 100);
-pref("browser.urlbar.search.timeout", 500);
+// tweak awesomebar -- increase the delay until a search happens.
 pref("browser.urlbar.delay", 1000);
 
 // disable safe browsing, due to perf hit
 pref("browser.safebrowsing.enabled", false);
 pref("browser.safebrowsing.malware.enabled", false);
 
 // don't check for default browser
 pref("browser.shell.checkDefaultBrowser", false);
--- a/browser/base/content/browser-places.js
+++ b/browser/base/content/browser-places.js
@@ -639,22 +639,23 @@ var HistoryMenu = {
       m.setAttribute("value", i);
       m.setAttribute("oncommand", "undoCloseTab(" + i + ");");
       m.addEventListener("click", this._undoCloseMiddleClick, false);
       if (i == 0)
         m.setAttribute("key", "key_undoCloseTab");
       undoPopup.appendChild(m);
     }
 
-    // "Open All in Tabs"
+    // "Restore All Tabs"
     var strings = gNavigatorBundle;
     undoPopup.appendChild(document.createElement("menuseparator"));
     m = undoPopup.appendChild(document.createElement("menuitem"));
-    m.setAttribute("label", strings.getString("menuOpenAllInTabs.label"));
-    m.setAttribute("accesskey", strings.getString("menuOpenAllInTabs.accesskey"));
+    m.id = "menu_restoreAllTabs";
+    m.setAttribute("label", strings.getString("menuRestoreAllTabs.label"));
+    m.setAttribute("accesskey", strings.getString("menuRestoreAllTabs.accesskey"));
     m.addEventListener("command", function() {
       for (var i = 0; i < undoItems.length; i++)
         undoCloseTab();
     }, false);
   },
 
   toggleRecentlyClosedWindows: function PHM_toggleRecentlyClosedWindows() {
     // enable/disable the Recently Closed Windows sub menu
@@ -713,16 +714,17 @@ var HistoryMenu = {
       if (i == 0)
         m.setAttribute("key", "key_undoCloseWindow");
       undoPopup.appendChild(m);
     }
 
     // "Open All in Windows"
     undoPopup.appendChild(document.createElement("menuseparator"));
     let m = undoPopup.appendChild(document.createElement("menuitem"));
+    m.id = "menu_restoreAllWindows";
     m.setAttribute("label", gNavigatorBundle.getString("menuRestoreAllWindows.label"));
     m.setAttribute("accesskey", gNavigatorBundle.getString("menuRestoreAllWindows.accesskey"));
     m.setAttribute("oncommand",
       "for (var i = 0; i < " + undoItems.length + "; i++) undoCloseWindow();");
   },
 
   /**
    * popupshowing handler for the history menu.
@@ -874,23 +876,25 @@ var BookmarksEventHandler = {
         target._endMarker = -1;
       }
       return;
     }
 
     if (!target._endOptSeparator) {
       // create a separator before options
       target._endOptSeparator = document.createElement("menuseparator");
+      target._endOptSeparator.className = "bookmarks-actions-menuseparator";
       target._endMarker = target.childNodes.length;
       target.appendChild(target._endOptSeparator);
     }
 
     if (siteURIString && !target._endOptOpenSiteURI) {
       // Add "Open (Feed Name)" menuitem if it's a livemark with a siteURI
       target._endOptOpenSiteURI = document.createElement("menuitem");
+      target._endOptOpenSiteURI.className = "openlivemarksite-menuitem";
       target._endOptOpenSiteURI.setAttribute("siteURI", siteURIString);
       target._endOptOpenSiteURI.setAttribute("oncommand",
           "openUILink(this.getAttribute('siteURI'), event);");
       // If a user middle-clicks this item we serve the oncommand event
       // We are using checkForMiddleClick because of Bug 246720
       // Note: stopPropagation is needed to avoid serving middle-click 
       // with BT_onClick that would open all items in tabs
       target._endOptOpenSiteURI.setAttribute("onclick",
@@ -900,16 +904,17 @@ var BookmarksEventHandler = {
           [target.parentNode.getAttribute("label")]));
       target.appendChild(target._endOptOpenSiteURI);
     }
 
     if (hasMultipleURIs && !target._endOptOpenAllInTabs) {
         // Add the "Open All in Tabs" menuitem if there are
         // at least two menuitems with places result nodes.
         target._endOptOpenAllInTabs = document.createElement("menuitem");
+        target._endOptOpenAllInTabs.className = "openintabs-menuitem";
         target._endOptOpenAllInTabs.setAttribute("oncommand",
             "PlacesUIUtils.openContainerNodeInTabs(this.parentNode._resultNode, event);");
         target._endOptOpenAllInTabs.setAttribute("onclick",
             "checkForMiddleClick(this, event); event.stopPropagation();");
         target._endOptOpenAllInTabs.setAttribute("label",
             gNavigatorBundle.getString("menuOpenAllInTabs.label"));
         target.appendChild(target._endOptOpenAllInTabs);
     }
--- a/browser/base/content/browser-sets.inc
+++ b/browser/base/content/browser-sets.inc
@@ -121,17 +121,17 @@
     <command id="cmd_fullZoomReset"   oncommand="FullZoom.reset()"/>
     <command id="cmd_fullZoomToggle"  oncommand="ZoomManager.toggleZoom();"/>
     <command id="Browser:OpenLocation" oncommand="openLocation();"/>
 
     <command id="Tools:Search" oncommand="BrowserSearch.webSearch();"/>    
     <command id="Tools:Downloads" oncommand="BrowserDownloadsUI();"/>
     <command id="Tools:Addons" oncommand="BrowserOpenAddonsMgr();"/>
     <command id="Tools:Sanitize"
-     oncommand="Cc['@mozilla.org/browser/browserglue;1'].getService(Ci.nsIBrowserGlue).sanitize(window || null);"/>
+     oncommand="Cc['@mozilla.org/browser/browserglue;1'].getService(Ci.nsIBrowserGlue).sanitize(window);"/>
     <command id="Tools:PrivateBrowsing" oncommand="gPrivateBrowsingUI.toggleMode();"/>
     <command id="History:UndoCloseTab" oncommand="undoCloseTab();"/>
     <command id="History:UndoCloseWindow" oncommand="undoCloseWindow();"/>
   </commandset>
 
   <commandset id="placesCommands">
     <command id="Browser:ShowAllBookmarks"
              oncommand="PlacesCommandHook.showPlacesOrganizer('AllBookmarks');"/>
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -1206,19 +1206,19 @@ function delayedStartup(isLoadingBlank, 
   
   PlacesStarButton.init();
 
   // called when we go into full screen, even if it is
   // initiated by a web page script
   window.addEventListener("fullscreen", onFullScreen, true);
 
   if (isLoadingBlank && gURLBar && isElementVisible(gURLBar))
-    focusElement(gURLBar);
+    gURLBar.focus();
   else
-    focusElement(content);
+    gBrowser.selectedBrowser.focus();
 
   if (gURLBar)
     gURLBar.emptyText = gURLBarEmptyText.value;
 
   gNavToolbox.customizeDone = BrowserToolboxCustomizeDone;
   gNavToolbox.customizeChange = BrowserToolboxCustomizeChange;
 
   // Set up Sanitize Item
@@ -6856,17 +6856,18 @@ function getNotificationBox(aWindow) {
 
 /* DEPRECATED */
 function getBrowser() gBrowser;
 function getNavToolbox() gNavToolbox;
 
 let gPrivateBrowsingUI = {
   _observerService: null,
   _privateBrowsingService: null,
-  _privateBrowsingAutoStarted: false,
+  _searchBarValue: null,
+  _findBarValue: null,
 
   init: function PBUI_init() {
     this._observerService = Cc["@mozilla.org/observer-service;1"].
                             getService(Ci.nsIObserverService);
     this._observerService.addObserver(this, "private-browsing", false);
 
     this._privateBrowsingService = Cc["@mozilla.org/privatebrowsing;1"].
                                    getService(Ci.nsIPrivateBrowsingService);
@@ -6941,60 +6942,77 @@ let gPrivateBrowsingUI = {
       result = false;
       break;
     }
 
     return result;
   },
 
   onEnterPrivateBrowsing: function PBUI_onEnterPrivateBrowsing() {
+    if (BrowserSearch.searchBar)
+      this._searchBarValue = BrowserSearch.searchBar.textbox.value;
+
+    if (gFindBar)
+      this._findBarValue = gFindBar.getElement("findbar-textbox").value;
+
     this._setPBMenuTitle("stop");
 
     document.getElementById("menu_import").setAttribute("disabled", "true");
     
     // Disable the Clear Recent History... menu item when in PB mode
     // temporary fix until bug 463607 is fixed
     document.getElementById("Tools:Sanitize").setAttribute("disabled", "true");
 
-    this._privateBrowsingAutoStarted = this._privateBrowsingService.autoStarted;
-
-    if (this._privateBrowsingAutoStarted) {
+    if (this._privateBrowsingService.autoStarted) {
       // Disable the menu item in auto-start mode
       document.getElementById("privateBrowsingItem")
               .setAttribute("disabled", "true");
       document.getElementById("Tools:PrivateBrowsing")
               .setAttribute("disabled", "true");
     }
     else if (window.location.href == getBrowserURL()) {
       // Adjust the window's title
       let docElement = document.documentElement;
       docElement.setAttribute("title",
         docElement.getAttribute("title_privatebrowsing"));
       docElement.setAttribute("titlemodifier",
         docElement.getAttribute("titlemodifier_privatebrowsing"));
       docElement.setAttribute("browsingmode", "private");
+      gBrowser.updateTitlebar();
     }
 
     setTimeout(function () {
       DownloadMonitorPanel.updateStatus();
     }, 0);
   },
 
   onExitPrivateBrowsing: function PBUI_onExitPrivateBrowsing() {
-    if (BrowserSearch.searchBar)
-      BrowserSearch.searchBar.textbox.reset();
+    if (BrowserSearch.searchBar) {
+      let searchBox = BrowserSearch.searchBar.textbox;
+      searchBox.reset();
+      if (this._searchBarValue) {
+        searchBox.value = this._searchBarValue;
+        this._searchBarValue = null;
+      }
+    }
 
     document.getElementById("menu_import").removeAttribute("disabled");
 
     // Re-enable the Clear Recent History... menu item on exit of PB mode
     // temporary fix until bug 463607 is fixed
     document.getElementById("Tools:Sanitize").removeAttribute("disabled");
 
-    if (gFindBar)
-      gFindBar.getElement("findbar-textbox").reset();
+    if (gFindBar) {
+      let findbox = gFindBar.getElement("findbar-textbox");
+      findbox.reset();
+      if (this._findBarValue) {
+        findbox.value = this._findBarValue;
+        this._findBarValue = null;
+      }
+    }
 
     this._setPBMenuTitle("start");
 
     if (window.location.href == getBrowserURL()) {
       // Adjust the window's title
       let docElement = document.documentElement;
       docElement.setAttribute("title",
         docElement.getAttribute("title_normal"));
@@ -7004,18 +7022,16 @@ let gPrivateBrowsingUI = {
     }
 
     // Enable the menu item in after exiting the auto-start mode
     document.getElementById("privateBrowsingItem")
             .removeAttribute("disabled");
     document.getElementById("Tools:PrivateBrowsing")
             .removeAttribute("disabled");
 
-    this._privateBrowsingAutoStarted = false;
-
     gLastOpenDirectory.reset();
 
     setTimeout(function () {
       DownloadMonitorPanel.updateStatus();
     }, 0);
   },
 
   _setPBMenuTitle: function PBUI__setPBMenuTitle(aMode) {
--- a/browser/base/content/browser.xul
+++ b/browser/base/content/browser.xul
@@ -78,16 +78,17 @@
         titlemodifier="&mainWindow.titlemodifier;@PRE_RELEASE_SUFFIX@"
         titlemodifier_normal="&mainWindow.titlemodifier;@PRE_RELEASE_SUFFIX@"
         titlemodifier_privatebrowsing="&mainWindow.titlemodifier;@PRE_RELEASE_SUFFIX@ &mainWindow.titlePrivateBrowsingSuffix;"
 #endif
         titlemenuseparator="&mainWindow.titlemodifiermenuseparator;"
         windowtype="navigator:browser"
         screenX="4" screenY="4"
         browsingmode="normal"
+        toggletoolbar="true"
         persist="screenX screenY width height sizemode"> 
 
 # All JS files which are not content (only) dependent that browser.xul
 # wishes to include *must* go into the global-scripts.inc file
 # so that they can be shared by macBrowserOverlay.xul.
 #include global-scripts.inc
 <script type="application/x-javascript" src="chrome://browser/content/nsContextMenu.js"/>
 
@@ -373,17 +374,16 @@
                  autocompletesearch="history"
                  autocompletepopup="PopupAutoCompleteRichResult"
                  completeselectedindex="true"
                  tabscrolling="true"
                  showcommentcolumn="true"
                  showimagecolumn="true"
                  enablehistory="true"
                  maxrows="6"
-                 timeout="75"
                  newlines="stripsurroundingwhitespace"
                  oninput="gBrowser.userTypedValue = this.value;"
                  ontextentered="this.handleCommand(param);"
                  ontextreverted="return this.handleRevert();"
                  pageproxystate="invalid"
                  onsearchbegin="LocationBarHelpers._searchBegin();"
                  onsearchcomplete="LocationBarHelpers._searchComplete();"
                  onfocus="document.getElementById('identity-box').style.MozUserFocus= 'normal'"
--- a/browser/base/content/credits.xhtml
+++ b/browser/base/content/credits.xhtml
@@ -229,17 +229,16 @@
             <li>Smokey Ardisson</li>
             <li>Rob Arnold</li>
             <li>Tomoya Asai</li>
             <li>Chris AtLee</li>
             <li>Dietrich Ayala</li>
             <li>Mitchell Baker</li>
             <li>Rhian Baker</li>
             <li>Jeff Balogh</li>
-            <li>Honza Bambas</li>
             <li>Jan Bambas</li>
             <li>Rey Bango</li>
             <li>Mark Banner</li>
             <li>Jason Barnabe</li>
             <li>David Baron</li>
             <li>Colin Barrett</li>
             <li>Curtis Bartley</li>
             <li>Bo Bayles</li>
--- a/browser/base/content/sanitize.js
+++ b/browser/base/content/sanitize.js
@@ -455,23 +455,20 @@ Sanitizer.showUI = function(aParentWindo
                 "Sanitize",
                 "chrome,titlebar,dialog,centerscreen,modal",
                 null);
 };
 
 /** 
  * Deletes privacy sensitive data in a batch, optionally showing the 
  * sanitize UI, according to user preferences
- *
- * @returns  null (displayed UI, which should handle errors)
  */
 Sanitizer.sanitize = function(aParentWindow) 
 {
   Sanitizer.showUI(aParentWindow);
-  return null;
 };
 
 Sanitizer.onStartup = function() 
 {
   // we check for unclean exit with pending sanitization
   Sanitizer._checkAndSanitize();
 };
 
--- a/browser/base/content/sanitize.xul
+++ b/browser/base/content/sanitize.xul
@@ -168,17 +168,18 @@
               class="expander-down"
               persist="class"
               oncommand="gSanitizePromptDialog.toggleItemList();"/>
       <label id="detailsExpanderLabel"
              value="&detailsProgressiveDisclosure.label;"
              accesskey="&detailsProgressiveDisclosure.accesskey;"
              control="detailsExpander"/>
     </hbox>
-    <listbox id="itemList" rows="6" collapsed="true" persist="collapsed">
+    <listbox id="itemList" rows="6" collapsed="true" persist="collapsed"
+             flex="1">
       <listitem label="&itemHistoryAndDownloads.label;"
                 type="checkbox"
                 accesskey="&itemHistoryAndDownloads.accesskey;"
                 preference="privacy.cpd.history"
                 onsyncfrompreference="return gSanitizePromptDialog.onReadGeneric();"/>
       <listitem label="&itemFormSearchHistory.label;"
                 type="checkbox"
                 accesskey="&itemFormSearchHistory.accesskey;"
--- a/browser/base/content/test/Makefile.in
+++ b/browser/base/content/test/Makefile.in
@@ -57,16 +57,24 @@ include $(topsrcdir)/config/rules.mk
 		offlineChild.cacheManifest \
 		offlineChild.cacheManifest^headers^ \
 		offlineChild2.html \
 		offlineChild2.cacheManifest \
 		offlineChild2.cacheManifest^headers^ \
 		offlineEvent.html \
 		offlineEvent.cacheManifest \
 		offlineEvent.cacheManifest^headers^ \
+		test_bug364677.html \
+		bug364677-data.xml \
+		bug364677-data.xml^headers^ \
+		test_offline_gzip.html \
+		gZipOfflineChild.html \
+		gZipOfflineChild.html^headers^ \
+		gZipOfflineChild.cacheManifest \
+		gZipOfflineChild.cacheManifest^headers^ \
 		$(NULL)
 
 # The following tests are disabled because they are unreliable:
 #   browser_bug423833.js is bug 428712
 #   browser_sanitize-download-history.js is bug 432425
 #
 # browser_sanitizeDialog_treeView.js is disabled until the tree view is added
 # back to the clear recent history dialog (santize.xul), if it ever is (bug
--- a/browser/base/content/test/browser_bug304198.js
+++ b/browser/base/content/test/browser_bug304198.js
@@ -33,77 +33,130 @@
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
 function test() {
   waitForExplicitFinish();
 
-  let deletedURLTab, fullURLTab, partialURLTab, testPartialURL, testURL;
+  if (Cc["@mozilla.org/focus-manager;1"].getService(Ci.nsIFocusManager).activeWindow !=
+      window) {
+    setTimeout(test, 0);
+    window.focus();
+    return;
+  }
 
+  let charsToDelete, deletedURLTab, fullURLTab, partialURLTab, testPartialURL, testURL;
+
+  charsToDelete = 5;
   deletedURLTab = gBrowser.addTab();
   fullURLTab = gBrowser.addTab();
   partialURLTab = gBrowser.addTab();
-  testPartialURL = "http://example.org/brow";
   testURL = "http://example.org/browser/browser/base/content/test/dummy_page.html";
 
+  testPartialURL = testURL.substr(0, (testURL.length - charsToDelete));
+
   function cleanUp() {
-
     gBrowser.removeTab(fullURLTab);
     gBrowser.removeTab(partialURLTab);
     gBrowser.removeTab(deletedURLTab);
   }
 
-  // function borrowed from browser_bug386835.js
-  function load(tab, url, cb) {
-    tab.linkedBrowser.addEventListener("load", function (event) {
-      event.currentTarget.removeEventListener("load", arguments.callee, true);
-      cb();
-    }, true);
-    tab.linkedBrowser.loadURI(url);
-  }
-
-  function runTests() {
-    gBrowser.selectedTab = fullURLTab;
-    is(gURLBar.value, testURL, 'gURLBar.value should be testURL after initial switch to fullURLTab');
-
-    gBrowser.selectedTab = partialURLTab;
-    is(gURLBar.value, testURL, 'gURLBar.value should be testURL after initial switch to partialURLTab');
-
-    // simulate the user removing part of the url from the location bar
-    gBrowser.userTypedValue = testPartialURL;
-    URLBarSetURI();
-    is(gURLBar.value, testPartialURL, 'gURLBar.value should be testPartialURL (just set)');
-
-    gBrowser.selectedTab = deletedURLTab;
-    is(gURLBar.value, testURL, 'gURLBar.value should be testURL after initial switch to deletedURLTab');
-
-    // simulate the user removing the whole url from the location bar
-    gBrowser.userTypedValue = '';
-    URLBarSetURI();
-    is(gURLBar.value, '', 'gURLBar.value should be "" (just set)');
-
-    // now cycle the tabs and make sure everything looks good
+  function cycleTabs() {
     gBrowser.selectedTab = fullURLTab;
     is(gURLBar.value, testURL, 'gURLBar.value should be testURL after switching back to fullURLTab');
 
     gBrowser.selectedTab = partialURLTab;
     is(gURLBar.value, testPartialURL, 'gURLBar.value should be testPartialURL after switching back to partialURLTab');
 
     gBrowser.selectedTab = deletedURLTab;
     is(gURLBar.value, '', 'gURLBar.value should be "" after switching back to deletedURLTab');
 
     gBrowser.selectedTab = fullURLTab;
     is(gURLBar.value, testURL, 'gURLBar.value should be testURL after switching back to fullURLTab');
   }
 
+  // function borrowed from browser_bug386835.js
+  function load(tab, url, cb) {
+    tab.linkedBrowser.addEventListener("load", function (event) {
+      event.currentTarget.removeEventListener("load", arguments.callee, true);
+      cb();
+    }, true);
+    tab.linkedBrowser.loadURI(url);
+  }
+
+  function urlbarBackspace(cb) {
+    gBrowser.selectedBrowser.focus();
+    gURLBar.addEventListener("focus", function () {
+      gURLBar.removeEventListener("focus", arguments.callee, false);
+      gURLBar.addEventListener("input", function () {
+        gURLBar.removeEventListener("input", arguments.callee, false);
+        cb();
+      }, false);
+      executeSoon(function () {
+        EventUtils.synthesizeKey("VK_BACK_SPACE", {});
+      });
+    }, false);
+    gURLBar.focus();
+  }
+
+  function prepareDeletedURLTab(cb) {
+    gBrowser.selectedTab = deletedURLTab;
+    is(gURLBar.value, testURL, 'gURLBar.value should be testURL after initial switch to deletedURLTab');
+
+    // simulate the user removing the whole url from the location bar
+    gPrefService.setBoolPref("browser.urlbar.clickSelectsAll", true);
+
+    urlbarBackspace(function () {
+      is(gURLBar.value, "", 'gURLBar.value should be "" (just set)');
+      gPrefService.clearUserPref("browser.urlbar.clickSelectsAll");
+      cb();
+    });
+  }
+
+  function prepareFullURLTab(cb) {
+    gBrowser.selectedTab = fullURLTab;
+    is(gURLBar.value, testURL, 'gURLBar.value should be testURL after initial switch to fullURLTab');
+    cb();
+  }
+
+  function preparePartialURLTab(cb) {
+    gBrowser.selectedTab = partialURLTab;
+    is(gURLBar.value, testURL, 'gURLBar.value should be testURL after initial switch to partialURLTab');
+
+    // simulate the user removing part of the url from the location bar
+    gPrefService.setBoolPref("browser.urlbar.clickSelectsAll", false);
+
+    var deleted = 0;
+    urlbarBackspace(function () {
+      deleted++;
+      if (deleted < charsToDelete) {
+        urlbarBackspace(arguments.callee);
+      } else {
+        is(gURLBar.value, testPartialURL, "gURLBar.value should be testPartialURL (just set)");
+        gPrefService.clearUserPref("browser.urlbar.clickSelectsAll");
+        cb();
+      }
+    });
+  }
+
+  function runTests() {
+    // prepare the three tabs required by this test
+    prepareFullURLTab(function () {
+      preparePartialURLTab(function () {
+        prepareDeletedURLTab(function () {
+          // now cycle the tabs and make sure everything looks good
+          cycleTabs();
+          cleanUp();
+          finish();
+        });
+      });
+    });
+  }
+
   load(deletedURLTab, testURL, function() {
     load(fullURLTab, testURL, function() {
-      load(partialURLTab, testURL, function() {
-        runTests();
-        cleanUp();
-        finish();
-      });
+      load(partialURLTab, testURL, runTests);
     });
   });
 }
 
--- a/browser/base/content/test/browser_bug321000.js
+++ b/browser/base/content/test/browser_bug321000.js
@@ -137,16 +137,17 @@ function test_paste(aCurrentTest) {
       element.value = "";
       setTimeout(next_test, 0);
     }
   }
   element.addEventListener("input", inputListener, false);
 
   // Focus the window.
   window.focus();
+  gBrowser.selectedBrowser.focus();
 
   // Focus the element and wait for focus event.
   info("About to focus " + element.id);
   element.addEventListener("focus", function() {
     element.removeEventListener("focus", arguments.callee, false);
     executeSoon(function() {
       // Pasting is async because the Accel+V codepath ends up going through
       // DocumentViewerImpl::FireClipboardEvent.
--- a/browser/base/content/test/browser_ctrlTab.js
+++ b/browser/base/content/test/browser_ctrlTab.js
@@ -1,17 +1,14 @@
 function test() {
   waitForExplicitFinish();
 
   if (Cc["@mozilla.org/focus-manager;1"].getService(Ci.nsIFocusManager).activeWindow !=
       window) {
-    window.addEventListener("focus", function () {
-      window.removeEventListener("focus", arguments.callee, false);
-      test();
-    }, false);
+    setTimeout(test, 0);
     window.focus();
     return;
   }
 
   gPrefService.setBoolPref("browser.ctrlTab.previews", true);
 
   gBrowser.addTab();
   gBrowser.addTab();
new file mode 100644
--- /dev/null
+++ b/browser/base/content/test/bug364677-data.xml
@@ -0,0 +1,5 @@
+<rss version="2.0">
+  <channel>
+    <title>t</title>
+  </channel>
+</rss>
new file mode 100644
--- /dev/null
+++ b/browser/base/content/test/bug364677-data.xml^headers^
@@ -0,0 +1,1 @@
+Content-Type: text/xml
new file mode 100644
--- /dev/null
+++ b/browser/base/content/test/gZipOfflineChild.cacheManifest
@@ -0,0 +1,2 @@
+CACHE MANIFEST
+gZipOfflineChild.html
new file mode 100644
--- /dev/null
+++ b/browser/base/content/test/gZipOfflineChild.cacheManifest^headers^
@@ -0,0 +1,1 @@
+Content-Type: text/cache-manifest
new file mode 100644
index 0000000000000000000000000000000000000000..bd2d62ee0d2013c832769a9a5652b85c5172154e
GIT binary patch
literal 298
zc$@($0oDE=iwFqol6*=417})ka8G7tY-w&~LuhGiWG-lQZEOH_Q87}(Fc9qZio;dH
zV0%)dxJjL%p`sJg**?aRG}f6AnEV~dvMX?PGq>7Z?VjxUGQdSyYBBJ!=-$Y`wCz9^
zPdyE$(n|MuUhtw3vPWea0U#gB5?*@>(9(bqXZKCsqXBlHM^udPM{Ra1%P7Od12(eG
zQ^=r4@(g_Qcq|ydxc*R|DsQ8$XeX<goQ-alLca@>))>Mbe&S!QWR1I4UX5tE@-FZ>
zVyeUS*%K6x#r|2`g;3rPq*c;7rEHb6b4CM4SWR|Ob~P#%JksI*AKSXgo0N8wpYcrr
w97i{9vu8Myg{*TUv9LNHLdbV#Zs{(EX6`rwhXgO{I#u3?Us?H;tmpv%0IwvDlmGw#
new file mode 100644
--- /dev/null
+++ b/browser/base/content/test/gZipOfflineChild.html^headers^
@@ -0,0 +1,2 @@
+Content-Type: text/html
+Content-Encoding: gzip
new file mode 100644
--- /dev/null
+++ b/browser/base/content/test/gZipOfflineChild_uncompressed.html
@@ -0,0 +1,21 @@
+<html manifest="gZipOfflineChild.cacheManifest">
+<head>
+  <!-- This file is gzipped to create gZipOfflineChild.html -->
+<title></title>
+<script type="text/javascript">
+
+function finish(success) {
+  window.parent.postMessage(success, "*");
+}
+
+applicationCache.oncached = function() { finish("oncache"); }
+applicationCache.onnoupdate = function() { finish("onupdate"); }
+applicationCache.onerror = function() { finish("onerror"); }
+
+</script>
+</head>
+
+<body>
+<h1>Child</h1>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/browser/base/content/test/test_bug364677.html
@@ -0,0 +1,36 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=364677
+-->
+<head>
+  <title>Test for Bug 364677</title>
+  <script type="text/javascript" src="/MochiKit/packed.js"></script>
+  <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
+</head>
+<body>
+<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=364677">Mozilla Bug 364677</a>
+<p id="display"><iframe id="testFrame" src="bug364677-data.xml"></iframe></p>
+<div id="content" style="display: none">
+
+</div>
+<pre id="test">
+<script class="testbody" type="text/javascript">
+
+/** Test for Bug 364677 **/
+SimpleTest.waitForExplicitFinish();
+
+addLoadEvent(function() {
+  // Need privs because the feed seems to have an about:feeds principal or some
+  // such.  It's not same-origin with us in any case.
+  netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
+  is($("testFrame").contentDocument.documentElement.id, "feedHandler",
+     "Feed served as text/xml without a channel/link should have been sniffed");
+});
+addLoadEvent(SimpleTest.finish);
+</script>
+</pre>
+</body>
+</html>
+
--- a/browser/base/content/test/test_contextmenu.html
+++ b/browser/base/content/test/test_contextmenu.html
@@ -23,38 +23,18 @@ netscape.security.PrivilegeManager.enabl
 
 const Cc = Components.classes;
 const Ci = Components.interfaces;
 
 function openContextMenuFor(element) {
     // Context menu should be closed before we open it again.
     is(contextMenu.state, "closed", "checking if popup is closed");
 
-    // XXX this doesn't work:
-    // var eventDetails = { type : "contextmenu", button : 2 }
-    // synthesizeMouse(element, 50, 90, eventDetails);
-    //
-    // It triggers the popup, but then we fail in nsContextMenu when
-    // initializing: ine 565: this.target.ownerDocument is null
-    // |this.target| was assigned there from |document.popupNode|, but it's a
-    // HTMLDocument instead of the node we supposedly fired the event at.
-    // I think the event's |target| is never being set, and we're hitting the
-    // fallback case in nsXULPopupListener::PreLaunchPopup.
-    //
-    // Also interesting is that just firing a mousedown+mouseup doesn't seem
-    // to do anything. Not clear why we'd specifically have to fire a
-    // contextmenu event instead of just a right-click.
-
-    // This seems to work, as long as we explicitly set the popupNode first.
-    // For frames, the popupNode needs to be set to inside the frame.
-    if (element.localName == "iframe")
-        chromeWin.document.popupNode = element.contentDocument.body;
-    else
-        chromeWin.document.popupNode = element;
-    contextMenu.openPopup(element, "overlap", 5, 5, true, false);
+    var eventDetails = { type : "contextmenu", button : 2 }
+    synthesizeMouse(element, 2, 2, eventDetails, element.ownerDocument.defaultView);
 }
 
 function closeContextMenu() {
     contextMenu.hidePopup();
 }
 
 function getVisibleMenuItems(aMenu) {
     var items = [];
@@ -382,16 +362,32 @@ function startTest() {
     contextMenu.addEventListener("popupshown", function() { runTest(++testNum); }, false);
     runTest(1);
 }
 
 // We open this in a separate window, because the Mochitests run inside a frame.
 // The frame causes an extra menu item, and prevents running the test
 // standalone (ie, clicking the test name in the Mochitest window) to see
 // success/failure messages.
+var painted = false, loaded = false;
+
+function waitForEvents(event)
+{
+  if (event.type == "MozAfterPaint")
+    painted = true;
+  else if (event.type == "load")
+    loaded = true;
+  if (painted && loaded) {
+    subwindow.removeEventListener("MozAfterPaint", waitForEvents, false);
+    subwindow.onload = null;
+    startTest();
+  }
+}
+
 var subwindow = window.open("./subtst_contextmenu.html", "contextmenu-subtext", "width=600,height=700");
-subwindow.onload = startTest;
+subwindow.addEventListener("MozAfterPaint", waitForEvents, false);
+subwindow.onload = waitForEvents;
 
 SimpleTest.waitForExplicitFinish();
 </script>
 </pre>
 </body>
 </html>
new file mode 100644
--- /dev/null
+++ b/browser/base/content/test/test_offline_gzip.html
@@ -0,0 +1,114 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=501422
+
+When content which was transported over the network with
+Content-Type: gzip is added to the offline 
+cache, it can be fetched from the cache successfully.
+-->
+<head>
+  <title>Test gzipped offline resources</title>
+  <script type="text/javascript" 
+          src="/MochiKit/MochiKit.js"></script>
+  <script type="text/javascript"
+          src="/tests/SimpleTest/SimpleTest.js"></script>
+  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+</head>
+<body onload="loaded()">
+<p id="display">
+<iframe name="testFrame" src="gZipOfflineChild.html"></iframe>
+
+<div id="content" style="display: none">
+</div>
+<pre id="test">
+<script class="testbody" type="text/javascript">
+
+var cacheCount = 0;
+var intervalID = 0;
+
+window.addEventListener("message", handleMessageEvents, false);
+SimpleTest.waitForExplicitFinish();
+
+function finishTest() {
+  // Clean up after ourselves.
+  netscape.security.PrivilegeManager
+          .enablePrivilege("UniversalXPConnect");
+  var pm = Components.classes["@mozilla.org/permissionmanager;1"].
+           getService(Components.interfaces.nsIPermissionManager);
+
+  pm.remove("localhost", "offline-app");
+  
+  window.removeEventListener("message", handleMessageEvents, false);
+
+  SimpleTest.finish();  
+}
+
+////
+// Handle "message" events which are posted from the iframe upon
+// offline cache events.
+//
+function handleMessageEvents(event) {
+  cacheCount++;
+  switch (cacheCount) {
+    case 1:
+      // This is the initial caching off offline data.  
+      is(event.data, "oncache", "Child was successfully cached.");
+      // Reload the frame; this will generate an error message
+      // in the case of bug 501422.
+      frames.testFrame.window.location.reload();
+      // Use setInterval to repeatedly call a function which
+      // checks that one of two things has occurred:  either
+      // the offline cache is udpated (which means our iframe
+      // successfully reloaded), or the string "error" appears
+      // in the iframe, as in the case of bug 501422.
+      intervalID = setInterval(function() {
+        netscape.security.PrivilegeManager
+                .enablePrivilege("UniversalXPConnect");
+        // Sometimes document.body may not exist, and trying to access
+        // it will throw an exception, so handle this case.
+        try {
+          var bodyInnerHTML = frames.testFrame.document.body.innerHTML;
+        }
+        catch (e) {
+          var bodyInnerHTML = "";
+        }
+        if (cacheCount == 2 || (bodyInnerHTML.indexOf("error") != -1)) {
+          clearInterval(intervalID);
+          is(cacheCount, 2, "frame not reloaded successfully");
+          if (cacheCount != 2) {
+            finishTest();
+          }
+        }
+      }, 100);
+      break;
+    case 2:    
+      is(event.data, "onupdate", "Child was successfully updated.");
+      finishTest();
+      break;
+    default:
+      // how'd we get here?
+      ok(false, "cacheCount not 1 or 2");
+  }
+}
+
+function loaded() {
+  // Click the notification bar's "Allow" button.  This should kick
+  // off updates, which will eventually lead to getting messages from
+  // the iframe.
+  netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+  var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].
+           getService(Components.interfaces.nsIWindowMediator);
+  var win = wm.getMostRecentWindow("navigator:browser");
+  var notificationBox = win.gBrowser.getNotificationBox();
+
+  var notification = notificationBox
+    .getNotificationWithValue("offline-app-requested-localhost");
+  notification.childNodes[0].click();
+}
+
+</script>
+</pre>
+</body>
+</html>
+
--- a/browser/base/content/urlbarBindings.xml
+++ b/browser/base/content/urlbarBindings.xml
@@ -127,17 +127,17 @@
             gBrowser.loadOneTab(url, null, null, postData, false,
                                 true /* allow third party fixup */);
             aTriggeringEvent.preventDefault();
             aTriggeringEvent.stopPropagation();
           }
           else
             loadURI(url, null, postData, true /* allow third party fixup */);
 
-          focusElement(content);
+          gBrowser.selectedBrowser.focus();
         ]]></body>
       </method>
 
       <method name="_canonizeURL">
         <parameter name="aTriggeringEvent"/>
         <body><![CDATA[
           var url = this.value;
           if (!url)
--- a/browser/base/content/utilityOverlay.js
+++ b/browser/base/content/utilityOverlay.js
@@ -90,26 +90,39 @@ function getBoolPref ( prefname, def )
     return def;
   }
 }
 
 // Change focus for this browser window to |aElement|, without focusing the
 // window itself.
 function focusElement(aElement)
 {
+  var msg;
+
   // if a content window, focus the <browser> instead as window.focus()
   // raises the window
   if (aElement instanceof Window) {
     var browser = getBrowserFromContentWindow(aElement);
-    if (browser)
-      browser.focus();
+    if (!browser)
+      throw "aElement is not a content window";
+    browser.focus();
+    msg = "focusElement(content) is deprecated. Use gBrowser.selectedBrowser.focus() instead.";
   }
   else {
     aElement.focus();
+    msg = "focusElement(element) is deprecated. Use element.focus() instead.";
   }
+
+  var scriptError = Components.classes["@mozilla.org/scripterror;1"]
+                              .createInstance(Components.interfaces.nsIScriptError);
+  scriptError.init(msg, document.location.href, null, null, 
+                   null, scriptError.warningFlag, "chrome javascript");
+  Components.classes["@mozilla.org/consoleservice;1"]
+            .getService(Components.interfaces.nsIConsoleService)
+            .logMessage(scriptError);
 }
 
 // openUILink handles clicks on UI elements that cause URLs to load.
 function openUILink( url, e, ignoreButton, ignoreAlt, allowKeywordFixup, postData, referrerUrl )
 {
   var where = whereToOpenLink(e, ignoreButton, ignoreAlt);
   openUILinkIn(url, where, allowKeywordFixup, postData, referrerUrl);
 }
@@ -248,24 +261,20 @@ function openUILinkIn( url, where, allow
     break;
   }
 
   // If this window is active, focus the target window. Otherwise, focus the
   // content but don't raise the window, since the URI we just loaded may have
   // resulted in a new frontmost window (e.g. "javascript:window.open('');").
   var fm = Components.classes["@mozilla.org/focus-manager;1"].
              getService(Components.interfaces.nsIFocusManager);
-  if (window == fm.activeWindow) {
+  if (window == fm.activeWindow)
     w.content.focus();
-  }
-  else {
-    let browser = w.getBrowserFromContentWindow(w.content);
-    if (browser)
-      browser.focus();
-  }
+  else
+    w.gBrowser.selectedBrowser.focus();
 }
 
 // Used as an onclick handler for UI elements with link-like behavior.
 // e.g. onclick="checkForMiddleClick(this, event);"
 function checkForMiddleClick(node, event) {
   // We should be using the disabled property here instead of the attribute,
   // but some elements that this function is used with don't support it (e.g.
   // menuitem).
--- a/browser/branding/nightly/locales/jar.mn
+++ b/browser/branding/nightly/locales/jar.mn
@@ -1,6 +1,7 @@
 #filter substitution
 
 @AB_CD@.jar:
 % locale branding @AB_CD@ %locale/branding/
-  locale/branding/brand.dtd        (%brand.dtd)
-* locale/branding/brand.properties (%brand.properties)
+# Nightly branding only exists in en-US
+  locale/branding/brand.dtd        (en-US/brand.dtd)
+* locale/branding/brand.properties (en-US/brand.properties)
--- a/browser/branding/unofficial/branding.nsi
+++ b/browser/branding/unofficial/branding.nsi
@@ -35,13 +35,13 @@
 # ***** END LICENSE BLOCK *****
 
 # NSIS branding defines for unofficial builds.
 # The official release build branding.nsi is located in other-license/branding/firefox/
 # The nightly build branding.nsi is located in browser/installer/windows/nsis/
 
 # BrandFullNameInternal is used for some registry and file system values
 # instead of BrandFullName and typically should not be modified.
-!define BrandFullNameInternal "Shiretoko"
+!define BrandFullNameInternal "Namoroka"
 !define CompanyName           "mozilla.org"
 !define URLInfoAbout          "http://www.mozilla.org"
 !define URLUpdateInfo         "http://www.mozilla.org/projects/firefox"
 !define SurveyURL             "https://survey.mozilla.com/1/Mozilla%20Firefox/${AppVersion}/${AB_CD}/exit.html"
--- a/browser/branding/unofficial/configure.sh
+++ b/browser/branding/unofficial/configure.sh
@@ -1,1 +1,1 @@
-MOZ_APP_DISPLAYNAME="Shiretoko"
+MOZ_APP_DISPLAYNAME="Namoroka"
--- a/browser/branding/unofficial/locales/browserconfig.properties
+++ b/browser/branding/unofficial/locales/browserconfig.properties
@@ -1,3 +1,3 @@
 # Do NOT localize or otherwise change these values
-browser.startup.homepage=http://www.mozilla.org/projects/shiretoko/
+browser.startup.homepage=http://www.mozilla.org/projects/namoroka/
 
--- a/browser/branding/unofficial/locales/en-US/brand.dtd
+++ b/browser/branding/unofficial/locales/en-US/brand.dtd
@@ -1,7 +1,7 @@
-<!ENTITY  brandShortName        "Shiretoko">
-<!ENTITY  brandFullName         "Shiretoko">
+<!ENTITY  brandShortName        "Namoroka">
+<!ENTITY  brandFullName         "Namoroka">
 <!ENTITY  vendorShortName       "mozilla.org">
 <!ENTITY  logoCopyright         " ">
 
 <!-- LOCALIZATION NOTE (releaseBaseURL): The about: page appends __MOZ_APP_VERSION__.html, e.g. 2.0.html -->
-<!ENTITY  releaseBaseURL        "http://www.mozilla.org/projects/shiretoko/releases/">
+<!ENTITY  releaseBaseURL        "http://www.mozilla.org/projects/namoroka/releases/">
--- a/browser/branding/unofficial/locales/en-US/brand.properties
+++ b/browser/branding/unofficial/locales/en-US/brand.properties
@@ -1,3 +1,3 @@
-brandShortName=Shiretoko
-brandFullName=Shiretoko
+brandShortName=Namoroka
+brandFullName=Namoroka
 vendorShortName=mozilla.org
--- a/browser/branding/unofficial/locales/jar.mn
+++ b/browser/branding/unofficial/locales/jar.mn
@@ -1,6 +1,7 @@
 #filter substitution
 
 @AB_CD@.jar:
 % locale branding @AB_CD@ %locale/branding/
-  locale/branding/brand.dtd        (%brand.dtd)
-* locale/branding/brand.properties (%brand.properties)
+# Unofficial branding only exists in en-US
+  locale/branding/brand.dtd        (en-US/brand.dtd)
+* locale/branding/brand.properties (en-US/brand.properties)
--- a/browser/components/dirprovider/Makefile.in
+++ b/browser/components/dirprovider/Makefile.in
@@ -39,17 +39,17 @@ DEPTH     = ../../..
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE               = browsercomps
 LIBRARY_NAME         = browserdirprovider
-ifneq ($(OS_ARCH),WINNT)
+ifeq (,$(filter WINNT WINCE,$(OS_ARCH)))
 SHORT_LIBNAME        = brwsrdir
 endif
 IS_COMPONENT         = 1
 MODULE_NAME          = BrowserDirProvider
 FORCE_SHARED_LIB     = 1
 
 # Because we are an application component, link against the CRT statically
 # (on Windows, but only if we're not building our own CRT for jemalloc)
--- a/browser/components/feeds/src/FeedConverter.js
+++ b/browser/components/feeds/src/FeedConverter.js
@@ -268,28 +268,23 @@ FeedConverter.prototype = {
         }
       }
           
       var ios = 
           Cc["@mozilla.org/network/io-service;1"].
           getService(Ci.nsIIOService);
       var chromeChannel;
 
-      // show the feed page if it wasn't sniffed and we have a document,
-      // or we have a document, title, and link or id
-      if (result.doc && (!this._sniffed ||
-          (result.doc.title && (result.doc.link || result.doc.id)))) {
+      // If there was no automatic handler, or this was a podcast,
+      // photostream or some other kind of application, show the preview page
+      // if the parser returned a document.
+      if (result.doc) {
 
-        // If there was no automatic handler, or this was a podcast,
-        // photostream or some other kind of application, we must always
-        // show the preview page.
-        
         // Store the result in the result service so that the display
         // page can access it.
-
         feedService.addFeedResult(result);
 
         // Now load the actual XUL document.
         var chromeURI = ios.newURI(FEEDHANDLER_URI, null, null);
         chromeChannel = ios.newChannelFromURI(chromeURI, null);
         chromeChannel.originalURI = result.uri;
       }
       else
--- a/browser/components/places/content/places.js
+++ b/browser/components/places/content/places.js
@@ -548,32 +548,26 @@ var PlacesOrganizer = {
     fp.appendFilter(PlacesUIUtils.getString("bookmarksRestoreFilterName"),
                     PlacesUIUtils.getString("bookmarksRestoreFilterExtension"));
 
     var dirSvc = Cc["@mozilla.org/file/directory_service;1"].
                  getService(Ci.nsIProperties);
     var backupsDir = dirSvc.get("Desk", Ci.nsILocalFile);
     fp.displayDirectory = backupsDir;
 
-    // Use YYYY-MM-DD (ISO 8601) as it doesn't contain illegal characters
-    // and makes the alphabetical order of multiple backup files more useful.
-    var date = (new Date).toLocaleFormat("%Y-%m-%d");
-    fp.defaultString = PlacesUIUtils.getFormattedString("bookmarksBackupFilenameJSON",
-                                                        [date]);
+    fp.defaultString = PlacesUtils.getBackupFilename();
 
     if (fp.show() != Ci.nsIFilePicker.returnCancel) {
       PlacesUtils.backupBookmarksToFile(fp.file);
 
       // copy new backup to /backups dir (bug 424389)
       var latestBackup = PlacesUtils.getMostRecentBackup();
       if (!latestBackup || latestBackup != fp.file) {
         latestBackup.remove(false);
-        var date = new Date().toLocaleFormat("%Y-%m-%d");
-        var name = PlacesUtils.getFormattedString("bookmarksArchiveFilename",
-                                                  [date]);
+        var name = PlacesUtils.getBackupFilename();
         fp.file.copyTo(this.bookmarksBackupDir, name);
       }
     }
   },
 
   get bookmarksBackupDir() {
     delete this.bookmarksBackupDir;
     var dirSvc = Cc["@mozilla.org/file/directory_service;1"].
--- a/browser/components/places/content/places.xul
+++ b/browser/components/places/content/places.xul
@@ -70,16 +70,17 @@
         title="&places.library.title;" 
         windowtype="Places:Organizer" 
         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
         xmlns:html="http://www.w3.org/1999/xhtml"
         onload="PlacesOrganizer.init();"
         onunload="PlacesOrganizer.destroy();"
         width="&places.library.width;" height="&places.library.height;"
         screenX="10" screenY="10"
+        toggletoolbar="true"
         persist="width height screenX screenY sizemode">
 
   <script type="application/x-javascript"
           src="chrome://browser/content/places/places.js"/>
   <script type="application/javascript"
           src="chrome://browser/content/utilityOverlay.js"/>
   <script type="application/javascript"
           src="chrome://browser/content/places/editBookmarkOverlay.js"/>
--- a/browser/components/places/tests/browser/browser_library_open_leak.js
+++ b/browser/components/places/tests/browser/browser_library_open_leak.js
@@ -51,16 +51,17 @@ let ww = Cc["@mozilla.org/embedcomp/wind
 let windowObserver = {
   observe: function(aSubject, aTopic, aData) {
     if (aTopic === "domwindowopened") {
       ww.unregisterNotification(this);
       let win = aSubject.QueryInterface(Ci.nsIDOMWindow);
       win.addEventListener("load", function onLoad(event) {
         win.removeEventListener("load", onLoad, false);
         executeSoon(function () {
+          ok(true, "Library has been correctly opened");
           win.close();
           finish();
         });
       }, false);
     }
   }
 };
 
--- a/browser/components/places/tests/unit/head_bookmarks.js
+++ b/browser/components/places/tests/unit/head_bookmarks.js
@@ -49,36 +49,24 @@ var Cr = Components.results;
 
 function LOG(aMsg) {
   aMsg = ("*** PLACES TESTS: " + aMsg);
   Cc["@mozilla.org/consoleservice;1"].getService(Ci.nsIConsoleService).
                                       logStringMessage(aMsg);
   print(aMsg);
 }
 
+var gProfD = do_get_profile();
 var dirSvc = Cc["@mozilla.org/file/directory_service;1"].
              getService(Ci.nsIProperties);
-// Remove '/unit/*.js'.
-var gTestRoot = __LOCATION__.parent.parent;
-gTestRoot.normalize();
-
-// Need to create and register a profile folder.
-var gProfD = gTestRoot.clone();
-gProfD.append("profile");
-if (gProfD.exists())
-  gProfD.remove(true);
-gProfD.create(Ci.nsIFile.DIRECTORY_TYPE, 0755);
 
 var dirProvider = {
   getFile: function(prop, persistent) {
     persistent.value = true;
-    if (prop == NS_APP_USER_PROFILE_50_DIR ||
-        prop == NS_APP_PROFILE_DIR_STARTUP)
-      return gProfD.clone();
-    else if (prop == NS_APP_BOOKMARKS_50_FILE) {
+    if (prop == NS_APP_BOOKMARKS_50_FILE) {
       var bmarks = gProfD.clone();
       bmarks.append("bookmarks.html");
       return bmarks;
     }
     return null;
   },
   QueryInterface: function(iid) {
     if (iid.equals(Ci.nsIDirectoryServiceProvider) ||
--- a/browser/components/preferences/privacy.js
+++ b/browser/components/preferences/privacy.js
@@ -543,17 +543,17 @@ var gPrivacyPane = {
     var ts = document.getElementById("privacy.sanitize.timeSpan");
     var timeSpanOrig = ts.value;
     if (aClearEverything)
       ts.value = 0;
 
     const Cc = Components.classes, Ci = Components.interfaces;
     var glue = Cc["@mozilla.org/browser/browserglue;1"]
                  .getService(Ci.nsIBrowserGlue);
-    glue.sanitize(window || null);
+    glue.sanitize(window);
 
     // reset the timeSpan pref
     if (aClearEverything)
       ts.value = timeSpanOrig;
   },
 
   /**
    * Enables or disables the "Settings..." button depending
--- a/browser/components/privatebrowsing/content/aboutPrivateBrowsing.xhtml
+++ b/browser/components/privatebrowsing/content/aboutPrivateBrowsing.xhtml
@@ -70,17 +70,17 @@
                                          .rootTreeItem
                                          .QueryInterface(Ci.nsIInterfaceRequestor)
                                          .getInterface(Ci.nsIDOMWindow);
       });
 
       function openSanitizeDialog() {
         let browserGlue = Cc["@mozilla.org/browser/browserglue;1"].
                           getService(Ci.nsIBrowserGlue);
-        browserGlue.sanitize(mainWindow || null);
+        browserGlue.sanitize(mainWindow);
       }
 
       function setFavIcon(url) {
         var icon = document.createElement("link");
         icon.setAttribute("rel", "icon");
         icon.setAttribute("type", "image/png");
         icon.setAttribute("href", url);
         document.getElementsByTagName("head")[0].appendChild(icon);
@@ -111,17 +111,17 @@
                           getService(Ci.nsIURLFormatter).
                           formatURLPref("app.support.baseURL");
         let moreInfoLink = document.getElementById("moreInfoLink");
         if (moreInfoLink)
           moreInfoLink.setAttribute("href", moreInfoURL + "private-browsing");
 
         // Focus the location bar
         if (mainWindow.gURLBar)
-          mainWindow.focusElement(mainWindow.gURLBar);
+          mainWindow.gURLBar.focus();
       }
     ]]></script>
   </head>
 
   <body dir="&locale.dir;"
         class="private"
         onload="onLoad();"
         normaltitle="&privatebrowsingpage.title.normal;">
--- a/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_findbar.js
+++ b/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_findbar.js
@@ -45,31 +45,40 @@ function test() {
   prefBranch.setBoolPref("browser.privatebrowsing.keep_current_session", true);
   let pb = Cc["@mozilla.org/privatebrowsing;1"].
            getService(Ci.nsIPrivateBrowsingService);
 
   // fill in the find bar with something
   const kTestSearchString = "privatebrowsing";
   let findBox = gFindBar.getElement("findbar-textbox");
   gFindBar.startFind(gFindBar.FIND_NORMAL);
-  for (let i = 0; i < kTestSearchString.length; ++ i)
-    EventUtils.synthesizeKey(kTestSearchString[i], {});
+
+  // sanity checks
+  is(findBox.editor.transactionManager.numberOfUndoItems, 0,
+    "No items in the undo list of the findbar control");
+  is(findBox.value, "",
+    "findbar text is empty");
+
+  findBox.value = kTestSearchString;
 
   // enter private browsing mode
   pb.privateBrowsingEnabled = true;
 
   is(findBox.value, kTestSearchString,
     "entering the private browsing mode should not clear the findbar");
   ok(findBox.editor.transactionManager.numberOfUndoItems > 0,
     "entering the private browsing mode should not reset the undo list of the findbar control");
 
+  // Change the find bar value inside the private browsing mode
+  findBox.value = "something else";
+
   // leave private browsing mode
   pb.privateBrowsingEnabled = false;
 
-  is(findBox.value, "",
-    "leaving the private browsing mode should clear the findbar");
-  is(findBox.editor.transactionManager.numberOfUndoItems, 0,
-    "leaving the private browsing mode should reset the undo list of the findbar control");
+  is(findBox.value, kTestSearchString,
+    "leaving the private browsing mode should restore the findbar contents");
+  is(findBox.editor.transactionManager.numberOfUndoItems, 1,
+    "leaving the private browsing mode should only leave 1 item in the undo list of the findbar control");
 
   // cleanup
   prefBranch.clearUserPref("browser.privatebrowsing.keep_current_session");
   gFindBar.close();
 }
--- a/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_searchbar.js
+++ b/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_searchbar.js
@@ -51,32 +51,25 @@ function test() {
   let searchBar = BrowserSearch.searchBar;
   searchBar.value = kTestSearchString;
 
   // enter private browsing mode
   pb.privateBrowsingEnabled = true;
 
   is(searchBar.value, kTestSearchString,
     "entering the private browsing mode should not clear the search bar");
-  /*
-    XXXehsan: uncomment this code when bug 418874 is fixed.
-              can't use todo, because it would pass unexpectedly!
-
   ok(searchBar.textbox.editor.transactionManager.numberOfUndoItems > 0,
     "entering the private browsing mode should not reset the undo list of the searchbar control");
-  */
+
+  // Change the search bar value inside the private browsing mode
+  searchBar.value = "something else";
 
   // leave private browsing mode
   pb.privateBrowsingEnabled = false;
 
-  is(searchBar.value, "",
-    "leaving the private browsing mode should clear the search bar");
-  /*
-    XXXehsan: uncomment this code when bug 418874 is fixed.
-              can't use todo_is, because it would pass unexpectedly!
-
-  is(searchBar.textbox.editor.transactionManager.numberOfUndoItems, 0,
-    "leaving the private browsing mode should reset the undo list of the searchbar control");
-  */
+  is(searchBar.value, kTestSearchString,
+    "leaving the private browsing mode should restore the search bar contents");
+  is(searchBar.textbox.editor.transactionManager.numberOfUndoItems, 1,
+    "leaving the private browsing mode should only leave 1 item in the undo list of the searchbar control");
 
   // cleanup
   prefBranch.clearUserPref("browser.privatebrowsing.keep_current_session");
 }
--- a/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_urlbarfocus.js
+++ b/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_urlbarfocus.js
@@ -45,17 +45,17 @@ function test() {
   const kTestURL = "data:text/plain,test";
   let tab = gBrowser.addTab();
   gBrowser.selectedTab = tab;
   let browser = gBrowser.getBrowserForTab(tab);
   browser.addEventListener("load", function() {
     browser.removeEventListener("load", arguments.callee, true);
 
     // ensure that the URL bar is not focused initially
-    focusElement(content);
+    browser.focus();
     isnot(document.commandDispatcher.focusedElement, gURLBar.inputField,
       "URL Bar should not be focused before entering the private browsing mode");
     // ensure that the URL bar is not empty initially
     isnot(gURLBar.value, "", "URL Bar should no longer be empty after leaving the private browsing mode");
 
     // enter private browsing mode
     pb.privateBrowsingEnabled = true;
     tab = gBrowser.selectedTab;
--- a/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_windowtitle.js
+++ b/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_windowtitle.js
@@ -49,92 +49,88 @@ function test() {
   const testPageURL = "http://localhost:8888/browser/" +
     "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_windowtitle_page.html";
   waitForExplicitFinish();
 
   // initialization of expected titles
   let test_title = "Test title";
   let app_name = document.documentElement.getAttribute("title");
   const isOSX = ("nsILocalFileMac" in Ci);
-    var page_with_title;
-    var page_without_title;
-    var pb_page_with_title;
-    var pb_page_without_title;
-    var about_pb_title;
+  let page_with_title;
+  let page_without_title;
+  let about_pb_title;
+  let pb_page_with_title;
+  let pb_page_without_title;
+  let pb_about_pb_title;
   if (isOSX) {
     page_with_title = test_title;
     page_without_title = app_name;
+    about_pb_title = "Would you like to start Private Browsing?";
     pb_page_with_title = test_title + " - (Private Browsing)";
     pb_page_without_title = app_name + " - (Private Browsing)";
-    about_pb_title = pb_page_without_title;
+    pb_about_pb_title = pb_page_without_title;
   }
   else {
     page_with_title = test_title + " - " + app_name;
     page_without_title = app_name;
+    about_pb_title = "Would you like to start Private Browsing?" + " - " + app_name;
     pb_page_with_title = test_title + " - " + app_name + " (Private Browsing)";
     pb_page_without_title = app_name + " (Private Browsing)";
-    about_pb_title = "Private Browsing - " + app_name + " (Private Browsing)";
+    pb_about_pb_title = "Private Browsing - " + app_name + " (Private Browsing)";
   }
 
-  // check the window title for a page without a title
-  let blankTab = gBrowser.addTab();
-  gBrowser.selectedTab = blankTab;
-  is(document.title, page_without_title, "The window title for a page without a title matches " +
-    "(outside private browsing mode)");
-  gBrowser.removeTab(blankTab);
+  function testTabTitle(url, insidePB, expected_title, funcNext) {
+    pb.privateBrowsingEnabled = insidePB;
 
-  let pageTab = gBrowser.addTab();
-  gBrowser.selectedTab = pageTab;
-  let pageBrowser = gBrowser.getBrowserForTab(pageTab);
-  pageBrowser.addEventListener("load", function () {
-    pageBrowser.removeEventListener("load", arguments.callee, true);
+    let tab = gBrowser.addTab();
+    gBrowser.selectedTab = tab;
+    let browser = gBrowser.getBrowserForTab(tab);
+    browser.addEventListener("load", function() {
+      browser.removeEventListener("load", arguments.callee, true);
 
-    // check the window title for a page with a title
-    is(document.title, page_with_title, "The window title for a page with a title matches " +
-      "(outside private browsing mode)");
-
-    gBrowser.removeTab(pageTab);
+      // ensure that the test is run after the page onload event
+      setTimeout(function() {
+        setTimeout(function() {
+          is(document.title, expected_title, "The window title for " + url +
+             " is correct (" + (insidePB ? "inside" : "outside") +
+             " private browsing mode)");
 
-    // enter the private browsing mode
-    pb.privateBrowsingEnabled = true;
+          let win = gBrowser.replaceTabWithWindow(tab);
+          win.addEventListener("load", function() {
+            win.removeEventListener("load", arguments.callee, false);
 
-    // check the window title for a page without a title
-    blankTab = gBrowser.addTab();
-    gBrowser.selectedTab = blankTab;
-    is(document.title, pb_page_without_title, "The window title for a page without a title matches " +
-      "(inside private browsing mode)");
-    gBrowser.removeTab(blankTab);
+            // ensure that the test is run after delayedStartup
+            setTimeout(function() {
+              setTimeout(function() {
+                is(win.document.title, expected_title, "The window title for " + url +
+                   " detahced tab is correct (" + (insidePB ? "inside" : "outside") +
+                   " private browsing mode)");
+                win.close();
 
-    pageTab = gBrowser.addTab();
-    gBrowser.selectedTab = pageTab;
-    pageBrowser = gBrowser.getBrowserForTab(pageTab);
-    pageBrowser.addEventListener("load", function () {
-      pageBrowser.removeEventListener("load", arguments.callee, true);
-
-      // check the window title for a page with a title
-      is(document.title, pb_page_with_title, "The window title for a page with a title matches " +
-        "(inside private browsing mode)");
-
-      gBrowser.removeTab(pageTab);
-
-      let aboutPBTab = gBrowser.addTab();
-      gBrowser.selectedTab = aboutPBTab;
-      let aboutPBBrowser = gBrowser.getBrowserForTab(aboutPBTab);
-      aboutPBBrowser.addEventListener("load", function() {
-        aboutPBBrowser.removeEventListener("load", arguments.callee, true);
+                funcNext();
+              }, 0);
+            }, 0);
+          }, false);
+        }, 0);
+      }, 0);
+    }, true);
+    browser.loadURI(url);
+  }
 
-        // check the window title for about:privatebrowsing
-        is(document.title, about_pb_title, "The window title for about:privatebrowsing matches " +
-          "(inside private browsing mode)");
-
-        gBrowser.removeTab(aboutPBTab);
+  function cleanup() {
+    pb.privateBrowsingEnabled = false;
+    prefBranch.clearUserPref("browser.privatebrowsing.keep_current_session");
+    finish();
+  }
 
-        // cleanup
-        pb.privateBrowsingEnabled = false;
-        prefBranch.clearUserPref("browser.privatebrowsing.keep_current_session");
-        finish();
-      }, true);
-      aboutPBBrowser.contentWindow.location = "about:privatebrowsing";
-    }, true);
-    pageBrowser.contentWindow.location = testPageURL;
-  }, true);
-  pageBrowser.contentWindow.location = testPageURL;
+  testTabTitle("about:blank", false, page_without_title, function() {
+    testTabTitle(testPageURL, false, page_with_title, function() {
+      testTabTitle("about:privatebrowsing", false, about_pb_title, function() {
+        testTabTitle("about:blank", true, pb_page_without_title, function() {
+          testTabTitle(testPageURL, true, pb_page_with_title, function() {
+            testTabTitle("about:privatebrowsing", true, pb_about_pb_title, cleanup);
+          });
+        });
+      });
+    });
+  });
+  return;
 }
--- a/browser/components/sessionstore/nsISessionStore.idl
+++ b/browser/components/sessionstore/nsISessionStore.idl
@@ -54,17 +54,17 @@ interface nsIDOMNode;
  * global |window| object to the API, though (or |top| from a sidebar).
  * From elsewhere you can get browser windows through the nsIWindowMediator
  * by looking for "navigator:browser" windows.
  *
  * * "Tabbrowser tabs" are all the child nodes of a browser window's
  * |getBrowser().tabContainer| such as e.g. |getBrowser().selectedTab|.
  */
 
-[scriptable, uuid(4945acd7-aa25-43ee-b8e3-bf3cce289132)]
+[scriptable, uuid(70592a0d-87d3-459c-8db7-dcb8d47af78e)]
 interface nsISessionStore : nsISupports
 {
   /**
    * Initialize the service
    */
   void init(in nsIDOMWindow aWindow);
 
   /**
@@ -159,16 +159,21 @@ interface nsISessionStore : nsISupports
 
   /**
    * @param aIndex is the index of the windows to be restored (FIFO ordered).
    * @returns the nsIDOMWindow object of the reopened window
    */
   nsIDOMWindow undoCloseWindow(in unsigned long aIndex);
 
   /**
+   * @param aIndex  is the index of the closed window to be removed (FIFO ordered).
+   */
+  nsIDOMNode forgetClosedWindow(in unsigned long aIndex);
+
+  /**
    * @param aWindow is the window to get the value for.
    * @param aKey    is the value's name.
    * 
    * @returns A string value or an empty string if none is set.
    */
   AString getWindowValue(in nsIDOMWindow aWindow, in AString aKey);
 
   /**
--- a/browser/components/sessionstore/src/nsSessionStore.js
+++ b/browser/components/sessionstore/src/nsSessionStore.js
@@ -112,16 +112,22 @@ const CAPABILITIES = [
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 
 function debug(aMsg) {
   aMsg = ("SessionStore: " + aMsg).replace(/\S{80}/g, "$&\n");
   Cc["@mozilla.org/consoleservice;1"].getService(Ci.nsIConsoleService)
                                      .logStringMessage(aMsg);
 }
 
+__defineGetter__("NetUtil", function() {
+  delete this.NetUtil;
+  Cu.import("resource://gre/modules/NetUtil.jsm");
+  return NetUtil;
+});
+
 /* :::::::: The Service ::::::::::::::: */
 
 function SessionStoreService() {
 }
 
 SessionStoreService.prototype = {
   classDescription: "Browser Session Store Service",
   contractID: "@mozilla.org/browser/sessionstore;1",
@@ -189,21 +195,21 @@ SessionStoreService.prototype = {
         this.onLoad(aWindow);
       return;
     }
 
     this._prefBranch = Cc["@mozilla.org/preferences-service;1"].
                        getService(Ci.nsIPrefService).getBranch("browser.");
     this._prefBranch.QueryInterface(Ci.nsIPrefBranch2);
 
-    var observerService = Cc["@mozilla.org/observer-service;1"].
-                          getService(Ci.nsIObserverService);
+    this._observerService = Cc["@mozilla.org/observer-service;1"].
+                            getService(Ci.nsIObserverService);
 
     OBSERVING.forEach(function(aTopic) {
-      observerService.addObserver(this, aTopic, true);
+      this._observerService.addObserver(this, aTopic, true);
     }, this);
 
     var pbs = Cc["@mozilla.org/privatebrowsing;1"].
               getService(Ci.nsIPrivateBrowsingService);
     this._inPrivateBrowsing = pbs.privateBrowsingEnabled;
 
     // get interval from prefs - used often, so caching/observing instead of fetching on-demand
     this._interval = this._prefBranch.getIntPref("sessionstore.interval");
@@ -520,18 +526,23 @@ SessionStoreService.prototype = {
       case "DOMAutoComplete":
         this.onTabInput(aEvent.currentTarget.ownerDocument.defaultView, aEvent.currentTarget);
         break;
       case "scroll":
         this.onTabScroll(aEvent.currentTarget.ownerDocument.defaultView);
         break;
       case "TabOpen":
       case "TabClose":
-        var panelID = aEvent.originalTarget.linkedPanel;
-        var tabpanel = aEvent.originalTarget.ownerDocument.getElementById(panelID);
+        let target = aEvent.originalTarget;
+        let panelID = target.linkedPanel;
+        let ownerDoc = target.ownerDocument;
+        let bindingParent = ownerDoc.getBindingParent(target);
+        let tabpanel =
+          ownerDoc.getAnonymousElementByAttribute(bindingParent, "id",
+                                                  panelID);
         if (aEvent.type == "TabOpen") {
           this.onTabAdd(aEvent.currentTarget.ownerDocument.defaultView, tabpanel);
         }
         else {
           // aEvent.detail determines if the tab was closed by moving to a different window
           if (!aEvent.detail)
             this.onTabClose(aEvent.currentTarget.ownerDocument.defaultView, aEvent.originalTarget);
           this.onTabRemove(aEvent.currentTarget.ownerDocument.defaultView, tabpanel);
@@ -585,19 +596,17 @@ SessionStoreService.prototype = {
         delete this._initialState;
         
         // _loadState changed from "stopped" to "running"
         // force a save operation so that crashes happening during startup are correctly counted
         this.saveState(true);
       }
       else {
         // Nothing to restore, notify observers things are complete.
-        var observerService = Cc["@mozilla.org/observer-service;1"].
-                              getService(Ci.nsIObserverService);
-        observerService.notifyObservers(null, NOTIFY_WINDOWS_RESTORED, "");
+        this._observerService.notifyObservers(null, NOTIFY_WINDOWS_RESTORED, "");
         
         // the next delayed save request should execute immediately
         this._lastSaveTime -= this._interval;
       }
     }
     // this window was opened by _openWindowWithState
     else if (!this._isWindowLoaded(aWindow)) {
       let followUp = this._statesToRestore[aWindow.__SS_restoreID].windows.length == 1;
@@ -1038,16 +1047,26 @@ SessionStoreService.prototype = {
 
     // reopen the window
     let state = { windows: this._closedWindows.splice(aIndex, 1) };
     let window = this._openWindowWithState(state);
     this.windowToFocus = window;
     return window;
   },
 
+  forgetClosedWindow: function sss_forgetClosedWindow(aIndex) {
+    // default to the most-recently closed window
+    aIndex = aIndex || 0;
+    if (!(aIndex in this._closedWindows))
+      throw (Components.returnCode = Cr.NS_ERROR_INVALID_ARG);
+    
+    // remove closed window from the array
+    this._closedWindows.splice(aIndex, 1);
+  },
+
   getWindowValue: function sss_getWindowValue(aWindow, aKey) {
     if (aWindow.__SSi) {
       var data = this._windows[aWindow.__SSi].extData || {};
       return data[aKey] || "";
     }
     if (aWindow.__SS_dyingCache) {
       data = aWindow.__SS_dyingCache.extData || {};
       return data[aKey] || "";
@@ -2515,19 +2534,18 @@ SessionStoreService.prototype = {
    * write a state object to disk
    */
   _saveStateObject: function sss_saveStateObject(aStateObj) {
     var stateString = Cc["@mozilla.org/supports-string;1"].
                         createInstance(Ci.nsISupportsString);
     // parentheses are for backwards compatibility with Firefox 2.0 and 3.0
     stateString.data = "(" + this._toJSONString(aStateObj) + ")";
 
-    var observerService = Cc["@mozilla.org/observer-service;1"].
-                          getService(Ci.nsIObserverService);
-    observerService.notifyObservers(stateString, "sessionstore-state-write", "");
+    this._observerService.notifyObservers(stateString,
+                                          "sessionstore-state-write", "");
 
     // don't touch the file if an observer has deleted all state data
     if (stateString.data)
       this._writeFile(this._sessionFile, stateString.data);
 
     this._lastSaveTime = Date.now();
   },
 
@@ -2791,19 +2809,17 @@ SessionStoreService.prototype = {
     return jsonString;
   },
 
   _notifyIfAllWindowsRestored: function sss_notifyIfAllWindowsRestored() {
     if (this._restoreCount) {
       this._restoreCount--;
       if (this._restoreCount == 0) {
         // This was the last window restored at startup, notify observers.
-        var observerService = Cc["@mozilla.org/observer-service;1"].
-                              getService(Ci.nsIObserverService);
-        observerService.notifyObservers(null, NOTIFY_WINDOWS_RESTORED, "");
+        this._observerService.notifyObservers(null, NOTIFY_WINDOWS_RESTORED, "");
       }
     }
   },
 
   /**
    * @param aWindow
    *        Window reference
    * @returns whether this window's data is still cached in _statesToRestore
@@ -2856,35 +2872,36 @@ SessionStoreService.prototype = {
   /**
    * write file to disk
    * @param aFile
    *        nsIFile
    * @param aData
    *        String data
    */
   _writeFile: function sss_writeFile(aFile, aData) {
-    // init stream
-    var stream = Cc["@mozilla.org/network/safe-file-output-stream;1"].
-                 createInstance(Ci.nsIFileOutputStream);
-    stream.init(aFile, 0x02 | 0x08 | 0x20, 0600, 0);
+    // Initialize the file output stream.
+    var ostream = Cc["@mozilla.org/network/safe-file-output-stream;1"].
+                  createInstance(Ci.nsIFileOutputStream);
+    ostream.init(aFile, 0x02 | 0x08 | 0x20, 0600, 0);
 
-    // convert to UTF-8
+    // Obtain a converter to convert our data to a UTF-8 encoded input stream.
     var converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"].
                     createInstance(Ci.nsIScriptableUnicodeConverter);
     converter.charset = "UTF-8";
-    var convertedData = converter.ConvertFromUnicode(aData);
-    convertedData += converter.Finish();
 
-    // write and close stream
-    stream.write(convertedData, convertedData.length);
-    if (stream instanceof Ci.nsISafeOutputStream) {
-      stream.finish();
-    } else {
-      stream.close();
-    }
+    // Asynchronously copy the data to the file.
+    var istream = converter.convertToInputStream(aData);
+    var self = this;
+    NetUtil.asyncCopy(istream, ostream, function(rc) {
+      if (Components.isSuccessCode(rc)) {
+        self._observerService.notifyObservers(null,
+                                              "sessionstore-state-write-complete",
+                                              "");
+      }
+    });
   }
 };
 
 let XPathHelper = {
   // these two hashes should be kept in sync
   namespaceURIs:     { "xhtml": "http://www.w3.org/1999/xhtml" },
   namespacePrefixes: { "http://www.w3.org/1999/xhtml": "xhtml" },
 
--- a/browser/components/sessionstore/test/browser/Makefile.in
+++ b/browser/components/sessionstore/test/browser/Makefile.in
@@ -86,14 +86,15 @@ include $(topsrcdir)/config/rules.mk
 	browser_476161_sample.html \
 	browser_480893.js \
 	browser_483330.js \
 	browser_485482.js \
 	browser_485482_sample.html \
 	browser_485563.js \
 	browser_490040.js \
 	browser_491168.js \
+	browser_491577.js \
 	browser_493467.js \
 	browser_495495.js \
 	$(NULL)
 
 libs:: $(_BROWSER_TEST_FILES)
 	$(INSTALL) $(foreach f,$^,"$f") $(DEPTH)/_tests/testing/mochitest/browser/$(relativesrcdir)
new file mode 100644
--- /dev/null
+++ b/browser/components/sessionstore/test/browser/browser_491577.js
@@ -0,0 +1,154 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is sessionstore test code.
+ *
+ * The Initial Developer of the Original Code is
+ * Simon Bünzli <zeniko@gmail.com>.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *   Michael Kraft <morac99-firefox@yahoo.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+function test() {
+  /** Test for Bug 491577 **/
+  
+  // test setup
+  let ss = Cc["@mozilla.org/browser/sessionstore;1"].getService(Ci.nsISessionStore);
+  waitForExplicitFinish();
+  
+  const REMEMBER = Date.now(), FORGET = Math.random();
+  let test_state = {
+    windows: [ { tabs: [{ entries: [{ url: "http://example.com/" }] }], selected: 1 } ],
+    _closedWindows : [
+      // _closedWindows[0]
+      {
+        tabs: [
+          { entries: [{ url: "http://example.com/", title: "title" }] },
+          { entries: [{ url: "http://mozilla.org/", title: "title" }] }
+        ],
+        selected: 2,
+        title: FORGET,
+        _closedTabs: []
+      },
+      // _closedWindows[1]
+      {
+        tabs: [
+         { entries: [{ url: "http://mozilla.org/", title: "title" }] },
+         { entries: [{ url: "http://example.com/", title: "title" }] },
+         { entries: [{ url: "http://mozilla.org/", title: "title" }] },
+        ],
+        selected: 3,
+        title: REMEMBER,
+        _closedTabs: []
+      },
+      // _closedWindows[2]
+      {
+        tabs: [
+          { entries: [{ url: "http://example.com/", title: "title" }] }
+        ],
+        selected: 1,
+        title: FORGET,
+        _closedTabs: [
+          {
+            state: {
+              entries: [
+                { url: "http://mozilla.org/", title: "title" },
+                { url: "http://mozilla.org/again", title: "title" }
+              ]
+            },
+            pos: 1,
+            title: "title"
+          },
+          {
+            state: {
+              entries: [
+                { url: "http://example.com", title: "title" }
+              ]
+            },
+            title: "title"
+          }
+        ]
+      }
+    ]
+  };
+  let remember_count = 1;
+  
+  function countByTitle(aClosedWindowList, aTitle)
+    aClosedWindowList.filter(function(aData) aData.title == aTitle).length;
+  
+  function testForError(aFunction) {
+    try {
+      aFunction();
+      return false;
+    }
+    catch (ex) {
+      return ex.name == "NS_ERROR_ILLEGAL_VALUE";
+    }
+  }
+  
+  // open a window and add the above closed window list
+  let newWin = openDialog(location, "_blank", "chrome,all,dialog=no");
+  newWin.addEventListener("load", function(aEvent) {
+    gPrefService.setIntPref("browser.sessionstore.max_windows_undo",
+                            test_state._closedWindows.length);
+    ss.setWindowState(newWin, JSON.stringify(test_state), true);
+    
+    let closedWindows = JSON.parse(ss.getClosedWindowData());
+    is(closedWindows.length, test_state._closedWindows.length,
+       "Closed window list has the expected length");
+    is(countByTitle(closedWindows, FORGET),
+       test_state._closedWindows.length - remember_count,
+       "The correct amount of windows are to be forgotten");
+    is(countByTitle(closedWindows, REMEMBER), remember_count,
+       "Everything is set up.");
+    
+    // all of the following calls with illegal arguments should throw NS_ERROR_ILLEGAL_VALUE
+    ok(testForError(function() ss.forgetClosedWindow(-1)),
+       "Invalid window for forgetClosedWindow throws");
+    ok(testForError(function() ss.forgetClosedWindow(test_state._closedWindows.length + 1)),
+       "Invalid window for forgetClosedWindow throws");
+	   
+    // Remove third window, then first window
+    ss.forgetClosedWindow(2);
+    ss.forgetClosedWindow(null);
+    
+    closedWindows = JSON.parse(ss.getClosedWindowData());
+    is(closedWindows.length, remember_count,
+       "The correct amount of windows were removed");
+    is(countByTitle(closedWindows, FORGET), 0,
+       "All windows specifically forgotten were indeed removed");
+    is(countByTitle(closedWindows, REMEMBER), remember_count,
+       "... and windows not specifically forgetten weren't.");
+
+    // clean up
+    newWin.close();
+    gPrefService.clearUserPref("browser.sessionstore.max_windows_undo");
+    finish();
+  }, false);
+}
--- a/browser/config/version.txt
+++ b/browser/config/version.txt
@@ -1,1 +1,1 @@
-3.6a1pre
+3.6a2pre
--- a/browser/installer/Makefile.in
+++ b/browser/installer/Makefile.in
@@ -41,30 +41,31 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 NO_PKG_FILES = \
 	$(MOZ_APP_NAME)-config \
 	$(MOZ_APP_NAME)-bin.elf \
+	nspr-config \
 	regchrome* \
 	regxpcom* \
 	xpcshell* \
 	xpidl* \
 	xpt_dump* \
 	xpt_link* \
 	$(NULL)
 
 include $(topsrcdir)/config/rules.mk
 
 MOZ_PKG_REMOVALS = $(srcdir)/removed-files.in
 
 ifneq (,$(BUILD_STATIC_LIBS)$(MOZ_ENABLE_LIBXUL))
-ifeq (WINNT,$(OS_ARCH))
+ifneq (,$(filter WINNT WINCE,$(OS_ARCH)))
 MOZ_PKG_MANIFEST_P = $(srcdir)/windows/packages-static
 else
 ifneq (,$(filter-out OS2 Darwin,$(OS_ARCH)))
 MOZ_PKG_MANIFEST_P = $(srcdir)/unix/packages-static
 endif
 endif
 else
 define message
--- a/browser/installer/unix/packages-static
+++ b/browser/installer/unix/packages-static
@@ -263,16 +263,18 @@ bin/components/url-classifier.xpt
 bin/components/libmozgnome.so
 
 ; [Browser Chrome Files]
 bin/chrome/browser.jar
 bin/chrome/browser.manifest
 bin/chrome/classic.jar
 bin/chrome/classic.manifest
 bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf
+bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png
+bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/preview.png
 bin/chrome/comm.jar
 bin/chrome/comm.manifest
 bin/chrome/toolkit.jar
 bin/chrome/toolkit.manifest
 bin/chrome/icons/default/default16.png
 bin/chrome/icons/default/default32.png
 bin/chrome/icons/default/default48.png
 bin/chrome/reporter.manifest
@@ -356,16 +358,17 @@ bin/libnss3.so
 bin/libnssutil3.so
 bin/libsmime3.so
 bin/libsoftokn3.chk
 bin/libsoftokn3.so
 bin/libfreebl3.chk
 bin/libfreebl3.so
 bin/libssl3.so
 bin/libnssdbm3.so
+bin/libnssdbm3.chk
 bin/chrome/pippki.jar
 bin/chrome/pippki.manifest
 
 ; for Solaris SPARC
 bin/libfreebl_32fpu_3.chk
 bin/libfreebl_32fpu_3.so
 bin/libfreebl_32int_3.chk
 bin/libfreebl_32int_3.so
--- a/browser/installer/windows/packages-static
+++ b/browser/installer/windows/packages-static
@@ -37,24 +37,28 @@ bin\xpcom.dll
 bin\nspr4.dll
 #ifdef MOZ_ENABLE_LIBXUL
 bin\xul.dll
 #else
 bin\xpcom_core.dll
 bin\components\xpinstal.dll
 bin\components\jar50.dll
 #endif
+#ifdef WINCE
+bin\mozce_shunt.dll
+#else
 #ifndef MOZ_MEMORY
 bin\Microsoft.VC80.CRT.manifest
 bin\msvcm80.dll
 bin\msvcp80.dll
 bin\msvcr80.dll
 #else
 bin\mozcrt19.dll
 #endif
+#endif
 
 [browser]
 ; [Base Browser Files]
 bin\@MOZ_APP_NAME@.exe
 bin\application.ini
 bin\platform.ini
 bin\plugins\npnul32.dll
 bin\LICENSE
@@ -134,17 +138,19 @@ bin\components\jsdservice.xpt
 bin\components\layout_base.xpt
 bin\components\layout_printing.xpt
 bin\components\layout_xul.xpt
 bin\components\layout_xul_tree.xpt
 bin\components\inspector.xpt
 bin\components\locale.xpt
 bin\components\lwbrk.xpt
 bin\components\microsummaries.xpt
+#ifndef WINCE
 bin\components\migration.xpt
+#endif
 bin\components\mimetype.xpt
 bin\components\mozbrwsr.xpt
 bin\components\mozfind.xpt
 bin\components\necko.xpt
 bin\components\necko_cache.xpt
 bin\components\necko_cookie.xpt
 bin\components\necko_strconv.xpt
 bin\components\necko_about.xpt
@@ -266,16 +272,18 @@ bin\components\nsUrlClassifierLib.js
 bin\components\url-classifier.xpt
 
 ; [Browser Chrome Files]
 bin\chrome\browser.jar
 bin\chrome\browser.manifest
 bin\chrome\classic.jar
 bin\chrome\classic.manifest
 bin\extensions\{972ce4c6-7e08-4474-a285-3208198ce6fd}\install.rdf
+bin\extensions\{972ce4c6-7e08-4474-a285-3208198ce6fd}\icon.png
+bin\extensions\{972ce4c6-7e08-4474-a285-3208198ce6fd}\preview.png
 bin\chrome\comm.jar
 bin\chrome\comm.manifest
 bin\chrome\toolkit.jar
 bin\chrome\toolkit.manifest
 bin\chrome\reporter.manifest
 bin\chrome\reporter.jar
 bin\defaults\pref\reporter.js
 
@@ -352,20 +360,23 @@ bin\nssutil3.dll
 bin\nss3.dll
 bin\smime3.dll
 bin\softokn3.chk
 bin\softokn3.dll
 bin\freebl3.chk
 bin\freebl3.dll
 bin\ssl3.dll
 bin\nssdbm3.dll
+bin\nssdbm3.chk
 bin\chrome\pippki.jar
 bin\chrome\pippki.manifest
 
 ; [Updater]
 ;
 bin\updater.exe
 
+#ifdef MOZ_CRASHREPORTER
 ; [Crash Reporter]
 bin\crashreporter.exe
 bin\crashreporter.ini
 bin\crashreporter-override.ini
+#endif
 
--- a/browser/locales/en-US/chrome/browser/browser.properties
+++ b/browser/locales/en-US/chrome/browser/browser.properties
@@ -92,19 +92,21 @@ updatesItem_resumeFallback=Resume Downloading Update…
 updatesItem_resume.accesskey=D
 updatesItem_pending=Apply Downloaded Update Now…
 updatesItem_pendingFallback=Apply Downloaded Update Now…
 updatesItem_pending.accesskey=D
 
 # RSS Pretty Print
 feedShowFeedNew=Subscribe to '%S'…
 
+menuOpenAllInTabs.label=Open All in Tabs
+
 # History menu
-menuOpenAllInTabs.label=Open All in Tabs
-menuOpenAllInTabs.accesskey=o
+menuRestoreAllTabs.label=Restore All Tabs
+menuRestoreAllTabs.accesskey=R
 # LOCALIZATION NOTE (menuRestoreAllWindows, menuUndoCloseWindowLabel, menuUndoCloseWindowSingleTabLabel):
 # see bug 394759
 menuRestoreAllWindows.label=Restore All Windows
 menuRestoreAllWindows.accesskey=R
 # LOCALIZATION NOTE (menuUndoCloseWindowLabel): Semi-colon list of plural forms.
 # See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
 # #1 Window Title, #2 Number of tabs
 menuUndoCloseWindowLabel=#1 (and #2 other tab);#1 (and #2 other tabs)
--- a/browser/themes/gnomestripe/browser/Makefile.in
+++ b/browser/themes/gnomestripe/browser/Makefile.in
@@ -39,8 +39,18 @@ DEPTH		= ../../../..
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 include $(topsrcdir)/config/rules.mk
 
+FILES := \
+	icon.png \
+	preview.png \
+	$(NULL)
+
+libs:: $(FILES)
+	$(INSTALL) $(foreach f,$^,"$f") $(DIST)/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}
+
+install:: $(FILES)
+	$(SYSINSTALL) $(IFLAGS1) $(foreach f,$^,"$f") $(DESTDIR)$(mozappdir)/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}
--- a/browser/themes/gnomestripe/browser/browser.css
+++ b/browser/themes/gnomestripe/browser/browser.css
@@ -650,17 +650,17 @@ toolbar[iconsize="small"] #back-button {
 }
 toolbar[iconsize="small"] #back-button[disabled="true"] {
   list-style-image: url("moz-icon://stock/gtk-go-back-ltr?size=menu&state=disabled");
 }
 
 toolbar[iconsize="small"] #back-button:-moz-locale-dir(rtl) {
   list-style-image: url("moz-icon://stock/gtk-go-back-rtl?size=menu");
 }
-menupopup:-moz-locale-dir(rtl) > .unified-nav-back[_moz-menuactive] {
+.unified-nav-back[_moz-menuactive]:-moz-locale-dir(rtl) {
   list-style-image: url("moz-icon://stock/gtk-go-back-rtl?size=menu") !important;
 }
 toolbar[iconsize="small"] #back-button[disabled="true"]:-moz-locale-dir(rtl) {
   list-style-image: url("moz-icon://stock/gtk-go-back-rtl?size=menu&state=disabled");
 }
 
 toolbar[iconsize="small"] #forward-button {
   list-style-image: url("moz-icon://stock/gtk-go-forward-ltr?size=menu");
@@ -670,17 +670,17 @@ toolbar[iconsize="small"] #forward-butto
 }
 toolbar[iconsize="small"] #forward-button[disabled="true"] {
   list-style-image: url("moz-icon://stock/gtk-go-forward-ltr?size=menu&state=disabled");
 }
 
 toolbar[iconsize="small"] #forward-button:-moz-locale-dir(rtl) {
   list-style-image: url("moz-icon://stock/gtk-go-forward-rtl?size=menu");
 }
-menupopup:-moz-locale-dir(rtl) > .unified-nav-forward[_moz-menuactive] {
+.unified-nav-forward[_moz-menuactive]:-moz-locale-dir(rtl) {
   list-style-image: url("moz-icon://stock/gtk-go-forward-rtl?size=menu") !important;
 }
 toolbar[iconsize="small"] #forward-button[disabled="true"]:-moz-locale-dir(rtl) {
   list-style-image: url("moz-icon://stock/gtk-go-forward-rtl?size=menu&state=disabled");
 }
 
 toolbar[iconsize="small"] #stop-button {
   list-style-image: url("moz-icon://stock/gtk-stop?size=menu");
@@ -935,23 +935,23 @@ toolbar[iconsize="small"] #fullscreen-bu
 #identity-popup.verifiedIdentity > #identity-popup-container > #identity-popup-icon {
   -moz-image-region: rect(128px, 64px, 192px, 0px);
 }
 
 /* Identity popup body text */
 #identity-popup-content-box > description,
 #identity-popup-encryption-label {
   white-space: pre-wrap;
-  padding-left: 15px;
+  -moz-padding-start: 15px;
   margin: 2px 0 4px;
 }
 
 #identity-popup-content-box > label {
   white-space: pre-wrap;
-  padding-left: 15px;
+  -moz-padding-start: 15px;
   margin: 0;
 }
 
 #identity-popup-content-host ,
 #identity-popup-content-owner {
   font-weight: bold;
   max-width: 300px;
 }
@@ -967,17 +967,17 @@ toolbar[iconsize="small"] #fullscreen-bu
 
 #identity-popup-content-verifier {
   margin: 4px 0 2px;
 }
 
 #identity-popup-content-box.verifiedIdentity > #identity-popup-encryption ,
 #identity-popup-content-box.verifiedDomain > #identity-popup-encryption {
   margin-top: 10px;
-  margin-left: -18px;
+  -moz-margin-start: -18px;
 }
 
 #identity-popup-content-box.verifiedIdentity > #identity-popup-encryption > vbox > #identity-popup-encryption-icon ,
 #identity-popup-content-box.verifiedDomain > #identity-popup-encryption > vbox > #identity-popup-encryption-icon {
   list-style-image: url("chrome://browser/skin/Secure.png");
 }
 
 /* Identity popup bounding box */
@@ -1341,18 +1341,18 @@ tabpanels {
   list-style-image: url("chrome://global/skin/icons/loading_16.png");
   -moz-margin-end: 4px;
 }
 
 toolbarbutton.chevron {
   list-style-image: url("chrome://global/skin/toolbar/chevron.gif") !important;
 }
 
-toolbarbutton.chevron:-moz-locale-dir(rtl) {
-  list-style-image: url("chrome://global/skin/toolbar/chevron-rtl.gif") !important;
+toolbarbutton.chevron:-moz-locale-dir(rtl) > .toolbarbutton-icon {
+  -moz-transform: scaleX(-1);
 }
 
 toolbarbutton.chevron > .toolbarbutton-text,
 toolbarbutton.chevron > .toolbarbutton-menu-dropmarker {
   display: none;
 }
 
 toolbarbutton.chevron > .toolbarbutton-icon {
--- a/browser/themes/gnomestripe/browser/jar.mn
+++ b/browser/themes/gnomestripe/browser/jar.mn
@@ -55,10 +55,8 @@ classic.jar:
   skin/classic/browser/places/unsortedBookmarks.png   (places/unsortedBookmarks.png)
   skin/classic/browser/preferences/alwaysAsk.png      (preferences/alwaysAsk.png)
   skin/classic/browser/preferences/mail.png           (preferences/mail.png)
   skin/classic/browser/preferences/Options.png        (preferences/Options.png)
 * skin/classic/browser/preferences/preferences.css    (preferences/preferences.css)
   skin/classic/browser/preferences/applications.css   (preferences/applications.css)
   skin/classic/browser/tabbrowser/alltabs.png          (tabbrowser/alltabs.png)
   skin/classic/browser/tabbrowser/tabDragIndicator.png (tabbrowser/tabDragIndicator.png)
-  icon.png
-  preview.png
--- a/browser/themes/pinstripe/browser/Makefile.in
+++ b/browser/themes/pinstripe/browser/Makefile.in
@@ -38,8 +38,19 @@
 DEPTH		= ../../../..
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 include $(topsrcdir)/config/rules.mk
+
+FILES := \
+	icon.png \
+	preview.png \
+	$(NULL)
+
+libs:: $(FILES)
+	$(INSTALL) $(foreach f,$^,"$f") $(DIST)/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}
+
+install:: $(FILES)
+	$(SYSINSTALL) $(IFLAGS1) $(foreach f,$^,"$f") $(DESTDIR)$(mozappdir)/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}
deleted file mode 100644
index f89d8914428c2096d2369d86eb9472bdd9ed5681..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
--- a/browser/themes/pinstripe/browser/browser.css
+++ b/browser/themes/pinstripe/browser/browser.css
@@ -285,21 +285,16 @@ toolbarbutton.bookmark-item-microsummari
 
 .toolbarbutton-1,
 #back-forward-dropmarker {
   min-width: 0px;
   list-style-image: url("chrome://browser/skin/Toolbar.png");
   -moz-box-orient: vertical;
 }
 
-.toolbarbutton-1:-moz-locale-dir(rtl),
-#back-forward-dropmarker:-moz-locale-dir(rtl) {
-  list-style-image: url("chrome://browser/skin/Toolbar-rtl.png");
-}
-
 toolbar[mode="text"] .toolbarbutton-1,
 toolbar[mode="text"] .toolbarbutton-menubutton-button {
   -moz-box-orient: horizontal;
 }
 
 toolbar[mode="text"] .toolbarbutton-1 > .toolbarbutton-text {
   margin: 4px;
 }
@@ -331,16 +326,22 @@ toolbar:not([mode="text"]) #forward-butt
 
 toolbar[mode="icons"] #back-button .toolbarbutton-text-box,
 toolbar[mode="icons"] #forward-button .toolbarbutton-text-box,
 #back-button > dropmarker,
 #forward-button > dropmarker {
   display: none;
 }
 
+#back-button:-moz-locale-dir(rtl) > .toolbarbutton-icon,
+#forward-button:-moz-locale-dir(rtl) > .toolbarbutton-icon,
+#back-forward-dropmarker:-moz-locale-dir(rtl) > .toolbarbutton-icon {
+  -moz-transform: scaleX(-1);
+}
+
 /* ----- DEFAULT BACK BUTTON, STAND-ALONE ----- */	
 
 #back-button {
   -moz-image-region: rect(0px, 36px, 23px, 0px);
 }
 #back-button[disabled="true"] {
   -moz-image-region: rect(23px, 36px, 46px, 0px);
 }
@@ -370,217 +371,139 @@ toolbar[mode="icons"] #forward-button .t
 toolbar[mode="icons"] #unified-back-forward-button > #back-button {
   -moz-image-region: rect(0px, 535px, 33px, 504px);
   -moz-margin-end: 0;
   -moz-padding-end: 0;
   border-left: none;
   border-right: none;
 }
 
-toolbar[mode="icons"] #unified-back-forward-button > #back-button:-moz-locale-dir(rtl) {
-  -moz-image-region: rect(0px, 571px, 33px, 540px);
-}
-
 toolbar[mode="icons"] #unified-back-forward-button > #back-button[disabled="true"] {
  -moz-image-region: rect(33px, 535px, 66px, 504px);
 }
 
-toolbar[mode="icons"] #unified-back-forward-button > #back-button[disabled="true"]:-moz-locale-dir(rtl) {
-  -moz-image-region: rect(33px, 571px, 66px, 540px);
-}
-
 toolbar[mode="icons"] #unified-back-forward-button > #back-button:hover:active:not([disabled]),
 toolbar[mode="icons"] #unified-back-forward-button > #back-button[open="true"] {
   -moz-image-region: rect(66px, 535px, 99px, 504px);
 }
 
-toolbar[mode="icons"] #unified-back-forward-button > #back-button:hover:active:-moz-locale-dir(rtl):not([disabled]),
-toolbar[mode="icons"] #unified-back-forward-button > #back-button[open="true"]:-moz-locale-dir(rtl) {
-  -moz-image-region: rect(66px, 571px, 99px, 540px);
-}
-
 toolbar[mode="icons"] #unified-back-forward-button > #forward-button {
   -moz-image-region: rect(0px, 560px, 33px, 535px);
   -moz-margin-start: 0;
   -moz-margin-end: 0;
   -moz-padding-start: 0;
   -moz-padding-end: 0;
   border-left: none;
   border-right: none;
 }
 
-toolbar[mode="icons"] #unified-back-forward-button > #forward-button:-moz-locale-dir(rtl) {
-  -moz-image-region: rect(0px, 540px, 33px, 514px);
-}
-
 toolbar[mode="icons"] #unified-back-forward-button > #forward-button[disabled="true"] {
  -moz-image-region: rect(33px, 560px, 66px, 535px);
 }
 
-toolbar[mode="icons"] #unified-back-forward-button > #forward-button[disabled="true"]:-moz-locale-dir(rtl) {
- -moz-image-region: rect(33px, 540px, 66px, 514px);
-}
-
 toolbar[mode="icons"] #unified-back-forward-button > #forward-button:hover:active:not([disabled]),
 toolbar[mode="icons"] #unified-back-forward-button > #forward-button[open="true"] {
   -moz-image-region: rect(99px, 560px, 132px, 530px);
   -moz-margin-start: -5px;
 }
 
-toolbar[mode="icons"] #unified-back-forward-button > #forward-button:-moz-locale-dir(rtl):hover:active:not([disabled]),
-toolbar[mode="icons"] #unified-back-forward-button > #forward-button[open="true"]:-moz-locale-dir(rtl) {
-  -moz-image-region: rect(99px, 545px, 132px, 514px);
-}
-
 #back-forward-dropmarker {
   -moz-image-region: rect(0px, 571px, 33px, 560px);
   -moz-margin-start: 0;
   -moz-margin-end: 3px;
   -moz-padding-start: 0;
   -moz-padding-end: 1px;
   border-left: none;
   border-right: none;
 }
 
-#back-forward-dropmarker:-moz-locale-dir(rtl) {
-  -moz-image-region: rect(0px, 514px, 33px, 504px);
-}
-
 toolbar[mode="icons"] #back-forward-dropmarker > image {
   display: -moz-box;
   margin: 0;
   padding: 0;
 }
 
 toolbar[mode="icons"] #back-forward-dropmarker > dropmarker {
   display: none;
 }
 
 #back-forward-dropmarker[disabled="true"] {
  -moz-image-region: rect(33px, 571px, 66px, 560px);
 }
 
-#back-forward-dropmarker[disabled="true"]:-moz-locale-dir(rtl) {
- -moz-image-region: rect(33px, 514px, 66px, 504px);
-}
-
 #back-forward-dropmarker:hover:active:not([disabled]),
 #back-forward-dropmarker[open="true"] {
   -moz-image-region: rect(66px, 571px, 99px, 560px);
 }
 
-#back-forward-dropmarker:-moz-locale-dir(rtl):hover:active:not([disabled]),
-#back-forward-dropmarker[open="true"]:-moz-locale-dir(rtl) {
-  -moz-image-region: rect(66px, 514px, 99px, 504px);
-}
-
-.unified-nav-back[_moz-menuactive],
-menupopup:-moz-locale-dir(rtl) > .unified-nav-forward[_moz-menuactive] {
+.unified-nav-back[_moz-menuactive]:-moz-locale-dir(ltr),
+.unified-nav-forward[_moz-menuactive]:-moz-locale-dir(rtl) {
   list-style-image: url("chrome://browser/skin/menu-back.png") !important;
 }
 
-.unified-nav-forward[_moz-menuactive],
-menupopup:-moz-locale-dir(rtl) > .unified-nav-back[_moz-menuactive] {
+.unified-nav-forward[_moz-menuactive]:-moz-locale-dir(ltr),
+.unified-nav-back[_moz-menuactive]:-moz-locale-dir(rtl) {
   list-style-image: url("chrome://browser/skin/menu-forward.png") !important;
 }
 
 
 /* ----- SMALL BACK BUTTON, PAIRED----- */	
 
 toolbar[mode="icons"][iconsize="small"] #unified-back-forward-button > #back-button {
   -moz-image-region: rect(0px, 605px, 23px, 571px);
   -moz-margin-end: 0;
   -moz-padding-end: 0;
   border-left: none;
   border-right: none;
 }
 
-toolbar[mode="icons"][iconsize="small"] #unified-back-forward-button > #back-button:-moz-locale-dir(rtl) {
-  -moz-image-region: rect(0px, 648px, 23px, 614px);
-}
-
 toolbar[mode="icons"][iconsize="small"] #unified-back-forward-button > #back-button[disabled="true"] {
   -moz-image-region: rect(23px, 605px, 46px, 571px);
 }
 
-toolbar[mode="icons"][iconsize="small"] #unified-back-forward-button > #back-button[disabled="true"]:-moz-locale-dir(rtl) {
-  -moz-image-region: rect(23px, 648px, 46px, 614px);
-}
-
 toolbar[mode="icons"][iconsize="small"] #unified-back-forward-button > #back-button:hover:active:not([disabled]),
 toolbar[mode="icons"][iconsize="small"] #unified-back-forward-button > #back-button[open="true"] {
   -moz-image-region: rect(46px, 605px, 69px, 571px);
 }
 
-toolbar[mode="icons"][iconsize="small"] #unified-back-forward-button > #back-button:-moz-locale-dir(rtl):hover:active:not([disabled]),
-toolbar[mode="icons"][iconsize="small"] #unified-back-forward-button > #back-button[open="true"]:-moz-locale-dir(rtl) {
-  -moz-image-region: rect(46px, 648px, 69px, 614px);
-}
-
 /* ----- SMALL FORWARD BUTTON, PAIRED ----- */	
 
 toolbar[mode="icons"][iconsize="small"] #unified-back-forward-button > #forward-button {
   -moz-image-region: rect(0px, 638px, 23px, 605px);
   -moz-margin-start: 0;
   -moz-padding-start: 0;
   border-left: none;
   border-right: none;
 }
 
-toolbar[mode="icons"][iconsize="small"] #unified-back-forward-button > #forward-button:-moz-locale-dir(rtl) {
-  -moz-image-region: rect(0px, 614px, 23px, 580px);
-}
-
 toolbar[mode="icons"][iconsize="small"] #unified-back-forward-button > #forward-button[disabled="true"] {
  -moz-image-region: rect(23px, 638px, 46px, 605px);
 }
 
-toolbar[mode="icons"][iconsize="small"] #unified-back-forward-button > #forward-button[disabled="true"]:-moz-locale-dir(rtl) {
- -moz-image-region: rect(23px, 614px, 46px, 580px);
-}
-
 toolbar[mode="icons"][iconsize="small"] #unified-back-forward-button > #forward-button:hover:active:not([disabled]),
 toolbar[mode="icons"][iconsize="small"] #unified-back-forward-button > #forward-button[open="true"] {
   -moz-image-region: rect(46px, 638px, 69px, 605px);
   -moz-margin-start: 0;
 }
 
-toolbar[mode="icons"][iconsize="small"] #unified-back-forward-button > #forward-button:-moz-locale-dir(rtl):hover:active:not([disabled]),
-toolbar[mode="icons"][iconsize="small"] #unified-back-forward-button > #forward-button[open="true"]:-moz-locale-dir(rtl) {
-  -moz-image-region: rect(46px, 614px, 69px, 580px);
-}
-
 /* ----- SMALL BACK/FORWARD DROPMARKER ----- */	
 
 toolbar[iconsize="small"] #unified-back-forward-button > #back-forward-dropmarker {
   -moz-image-region: rect(0px, 648px, 23px, 638px);
 }
 
-toolbar[iconsize="small"] #unified-back-forward-button > #back-forward-dropmarker:-moz-locale-dir(rtl) {
-  -moz-image-region: rect(0px, 580px, 23px, 571px);
-}
-
 toolbar[iconsize="small"] #unified-back-forward-button > #back-forward-dropmarker[disabled="true"] {
  -moz-image-region: rect(23px, 648px, 46px, 638px);
 }
 
-toolbar[iconsize="small"] #unified-back-forward-button > #back-forward-dropmarker[disabled="true"]:-moz-locale-dir(rtl) {
- -moz-image-region: rect(23px, 580px, 46px, 571px);
-}
-
 toolbar[iconsize="small"] #unified-back-forward-button > #back-forward-dropmarker:hover:active:not([disabled]),
 toolbar[iconsize="small"] #unified-back-forward-button > #back-forward-dropmarker[open="true"] {
   -moz-image-region: rect(46px, 648px, 69px, 638px);
 }
 
-toolbar[iconsize="small"] #unified-back-forward-button > #back-forward-dropmarker:-moz-locale-dir(rtl):hover:active:not([disabled]),
-toolbar[iconsize="small"] #unified-back-forward-button > #back-forward-dropmarker[open="true"]:-moz-locale-dir(rtl) {
-  -moz-image-region: rect(46px, 580px, 69px, 571px);
-}
-
 /* ----- DEFAULT RELOAD BUTTON ----- */	
 
 #reload-button {
   -moz-image-region: rect(0px, 108px, 23px, 72px);
 }
 #reload-button[disabled="true"] {
   -moz-image-region: rect(23px, 108px, 46px, 72px) !important;
 }
@@ -1456,18 +1379,18 @@ sidebarheader > .tabs-closebutton > .too
 #wrapper-navigator-throbber > #navigator-throbber {
   list-style-image: url("chrome://global/skin/icons/notloading_16.png");
 }
 
 toolbarbutton.chevron {
   list-style-image: url("chrome://global/skin/icons/chevron.png") !important;
 }
 
-toolbarbutton.chevron:-moz-locale-dir(rtl) {
-  list-style-image: url("chrome://global/skin/icons/chevron-rtl.png") !important;
+toolbarbutton.chevron:-moz-locale-dir(rtl) > .toolbarbutton-icon {
+  -moz-transform: scaleX(-1);
 }
 
 
 toolbarbutton.chevron > .toolbarbutton-menu-dropmarker {
   display: none;
 }
 
 #nav-bar {
--- a/browser/themes/pinstripe/browser/jar.mn
+++ b/browser/themes/pinstripe/browser/jar.mn
@@ -45,17 +45,16 @@ classic.jar:
   skin/classic/browser/Search-bar.png
   skin/classic/browser/section_collapsed.png
   skin/classic/browser/section_expanded.png
   skin/classic/browser/Secure-Glyph-White.png
   skin/classic/browser/Secure-statusbar.png
   skin/classic/browser/Secure-statusbar-broken.png
   skin/classic/browser/Secure-background.gif
   skin/classic/browser/Toolbar.png
-  skin/classic/browser/Toolbar-rtl.png
   skin/classic/browser/feeds/subscribe.css                  (feeds/subscribe.css)
   skin/classic/browser/feeds/feedIcon.png                   (feeds/feedIcon.png)
   skin/classic/browser/feeds/feedIcon16.png                 (feeds/feedIcon16.png)
   skin/classic/browser/feeds/videoFeedIcon.png              (feeds/videoFeedIcon.png)
   skin/classic/browser/feeds/videoFeedIcon16.png            (feeds/videoFeedIcon16.png)
   skin/classic/browser/feeds/audioFeedIcon.png              (feeds/audioFeedIcon.png)
   skin/classic/browser/feeds/audioFeedIcon16.png            (feeds/audioFeedIcon16.png)
   skin/classic/browser/setDesktopBackground.css
@@ -95,18 +94,16 @@ classic.jar:
   skin/classic/browser/places/pageStarred.png               (places/pageStarred.png)
   skin/classic/browser/places/searching_16.png              (places/searching_16.png)
   skin/classic/browser/places/starred48.png                 (places/starred48.png)
   skin/classic/browser/places/unstarred48.png               (places/unstarred48.png)
   skin/classic/browser/places/unfiledBookmarks.png          (places/unfiledBookmarks.png)
   skin/classic/browser/places/twisty-open.gif               (places/twisty-open.gif)
   skin/classic/browser/places/twisty-closed.gif             (places/twisty-closed.gif)
   skin/classic/browser/places/tag.png                       (places/tag.png)
-  skin/classic/browser/places/selected-gradient.png         (places/selected-gradient.png)
-  skin/classic/browser/places/selected-focused-gradient.png (places/selected-focused-gradient.png)
   skin/classic/browser/places/expander-closed-active.png    (places/expander-closed-active.png)
   skin/classic/browser/places/expander-closed.png           (places/expander-closed.png)
   skin/classic/browser/places/expander-open-active.png      (places/expander-open-active.png)
   skin/classic/browser/places/expander-open.png             (places/expander-open.png)
   skin/classic/browser/preferences/alwaysAsk.png            (preferences/alwaysAsk.png)
   skin/classic/browser/preferences/application.png          (preferences/application.png)
   skin/classic/browser/preferences/Options.png              (preferences/Options.png)
   skin/classic/browser/preferences/saveFile.png             (preferences/saveFile.png)
@@ -163,10 +160,8 @@ classic.jar:
   skin/classic/browser/urlbar/startcap-active-focused-graphite.png       (urlbar/startcap-active-focused-graphite.png)
   skin/classic/browser/urlbar/startcap-active-focused-graphite-rtl.png   (urlbar/startcap-active-focused-graphite-rtl.png)
   skin/classic/browser/urlbar/startcap-active-focused-rtl.png            (urlbar/startcap-active-focused-rtl.png)
   skin/classic/browser/urlbar/startcap-secure-active.png                 (urlbar/startcap-secure-active.png)
   skin/classic/browser/urlbar/urlbar-favicon-glow.png                    (urlbar/urlbar-favicon-glow.png)
   skin/classic/browser/urlbar/textfield-mid.png                          (urlbar/textfield-mid.png)
   skin/classic/browser/urlbar/textfield-mid-focused.png                  (urlbar/textfield-mid-focused.png)
   skin/classic/browser/urlbar/textfield-mid-focused-graphite.png         (urlbar/textfield-mid-focused-graphite.png)
-  icon.png
-  preview.png
--- a/browser/themes/pinstripe/browser/places/organizer.css
+++ b/browser/themes/pinstripe/browser/places/organizer.css
@@ -19,26 +19,22 @@
 }
 
 #placesList treechildren::-moz-tree-row {
   background-color: transparent;
   border-color: transparent;
 }
 
 #placesList treechildren::-moz-tree-row(selected) {  
-  background-color: #6f81a9;
-  background-image: url("chrome://browser/skin/places/selected-gradient.png");
-  background-repeat: repeat-x;
-  background-position: bottom left;
+  background: -moz-linear-gradient(top, bottom, from(#B5B5B5), to(#8A8A8A)) repeat-x;
   border-top: 1px solid #979797;
 }
 
 #placesList treechildren::-moz-tree-row(selected,focus) {  
-  background-image: url("chrome://browser/skin/places/selected-focused-gradient.png");
-  background-color: #8a8a8a !important;
+  background: -moz-linear-gradient(top, bottom, from(#A2B1D0), to(#6E81A9)) repeat-x;
   border-top: 1px solid #91a0c0;
 }
 
 #placesList treechildren::-moz-tree-row(History),
 #placesList treechildren::-moz-tree-row(history)  {
   background-color: blue;
 }
 
@@ -324,17 +320,17 @@
   color: #6D6D6D;
   border: 1px solid transparent;
   -moz-border-radius: 10px;
   padding-top: 1px;
 }
 
 #organizerScopeBar {
   -moz-appearance: none;
-  background: url("chrome://global/skin/icons/find-bar-background.png") repeat-x top center #D0D0D0;
+  background: -moz-linear-gradient(top, bottom, from(#E8E8E8), to(#D0D0D0)) repeat-x;
   color: #474747;
   font-size: 105%;
   font-weight: bold;
   border-bottom: 1px solid #B1B1B1;
   padding: 2px 0;
 }
 
 #advancedSearch > hbox, 
@@ -364,16 +360,17 @@
 }
 
 #organizerScopeBar> toolbarbutton:not([disabled="true"]):hover {
   color: #fff;
   background: url("chrome://global/skin/20pct_transparent_pixel.png") repeat;
 }
 
 #organizerScopeBar > toolbarbutton[checked="true"]  {
+  /* will be updated in bug 508728 */
   background: url("chrome://global/skin/icons/white-gray-gradient-active.gif") repeat-x -1px 50%;
   border-color:   #656565;
   color: #fff !important;
 }
 
 #organizerScopeBarExpander {
   margin: 0;
   padding: 0;
--- a/browser/themes/pinstripe/browser/places/places.css
+++ b/browser/themes/pinstripe/browser/places/places.css
@@ -26,38 +26,34 @@ tree.sidebar-placesTree treechildren::-m
   border-color: transparent;
   padding-bottom: 1px;
   -moz-appearance: none;
   margin: 0;
   border: none;
 }
 
 #bookmarks-view treechildren::-moz-tree-row(selected), 
-#historyTree treechildren::-moz-tree-row(selected) {  
-  background-color: #6f81a9;
-  background-image: url("chrome://browser/skin/places/selected-gradient.png");
-  background-repeat: repeat-x;
-  background-position: bottom left;
+#historyTree treechildren::-moz-tree-row(selected) {
+  background: -moz-linear-gradient(top, bottom, from(#B5B5B5), to(#8A8A8A)) repeat-x;
   border-top: 1px solid #979797;
 }
 
 tree.sidebar-placesTree treechildren::-moz-tree-separator {
   border-top: 1px solid #505d6d;
   margin: 0 10px;
 }
 
 #historyTree,
 #bookmarks-view {
   border-top: 1px solid #bebebe;
 }
 
 #bookmarks-view treechildren::-moz-tree-row(selected,focus),
-#historyTree treechildren::-moz-tree-row(selected,focus) {  
-  background-image: url("chrome://browser/skin/places/selected-focused-gradient.png");
-  background-color: #8a8a8a !important;
+#historyTree treechildren::-moz-tree-row(selected,focus) {
+  background: -moz-linear-gradient(top, bottom, from(#A2B1D0), to(#6E81A9)) repeat-x;
   border-top: 1px solid #91a0c0;
 }
 
 tree.sidebar-placesTree treechildren::-moz-tree-cell-text(selected) {  
   font-weight: bold !important;
   color: #ffffff !important;
 }
 
@@ -75,16 +71,17 @@ tree.sidebar-placesTree treechildren::-m
   min-height: 0px;
   -moz-padding-start: 5px;
   -moz-padding-end: 0px;
   padding-top: 1px;
   padding-bottom: 1px;
 }
 
 #viewButton .button-menu-dropmarker {
+  display: -moz-box;
   list-style-image: url("chrome://global/skin/icons/menulist-dropmarker.png");
 }
 
 #viewButton:focus {
   outline: 2px solid #4A8BC7;
   outline-offset: -2px;
   -moz-outline-radius: 10px;
 }
deleted file mode 100644
index 13c0edc79f946b9d633b938b26e6d5a7afa9368c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 4c19d02a83fdb33c25cfe30ef607d0772af1adf6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
--- a/browser/themes/winstripe/browser/Makefile.in
+++ b/browser/themes/winstripe/browser/Makefile.in
@@ -39,8 +39,18 @@ DEPTH		= ../../../..
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 include $(topsrcdir)/config/rules.mk
 
+FILES := \
+	icon.png \
+	preview.png \
+	$(NULL)
+
+libs:: $(FILES)
+	$(INSTALL) $(foreach f,$^,"$f") $(DIST)/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}
+
+install:: $(FILES)
+	$(SYSINSTALL) $(IFLAGS1) $(foreach f,$^,"$f") $(DESTDIR)$(mozappdir)/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}
index 56ed3df3108ab0cca7f8852226a9301c58933f33..c66b6e4903c607f0f057321c4f7d8f7dd40727ce
GIT binary patch
literal 66579
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
index f7a36a4d063f514b23a5e046426a79237fc305f9..70294e9b5f69897972813f6ba8e5564e96b9da3f
GIT binary patch
literal 29735
zc$_?21y~%xnw-VmJp}il!GjZ=;1VDZ+}#}(CpZL2a0w9H-QC^Y-QD3f@7>*gv$H+c
zz1_c5)lAP1MR`e7BqAgL08pi+#FPO5!~`kpA;3Y_Qp!~OkROnvvZN?bI!b&1*+8_D
z(sTp>WbA)m5RjZo0NDxeBrPWnzkq;%2t^0u=$sA!WPr4oh^pJ-af@p_j@qN(tLiC_
z057(wp0Iul6_o$qb%xz@XIL>-A9dFRag?ICkt!OEIWSVTfv}j8;#VdA&M=;B4%XrJ
zc2-`e(^9*$v*^OZgVO^-;g{60(=)rV0(Q=syVcUt!l&sc!86Z{Aw?PcxH!a2Kp3N4
zA6Wf4?Mif0BJuM0bJ`U6^I+`Zk`}__k>|JsOhaWN9vXk;un4G()5y><x`i?eE9!%m
zf{n4ZlJ2#So-kzsn*ewK8X#zRwC|c>eS9Vmw1%k?w|5zj3mQc_SI^v4U~ptO!DG?!
zfbO%eV?}W!A*VtG2!hS2;$Ks+E=R3Z@`@vD*&TO>k%0&$oE-}h3^;}`|E;K2gdqme
z%CO90GO7;<0}P#ENSaDn7BIM^qsHfa3AU{|-0<zoFr*_bM$180=WVKCG|LJ5=ip<<
zQE%x=t-k5gr5EM-6@G!ou0J*c8@yV6mFRdNV75$m%?86PIat3dSm4l(C*9=N{1A?i
zN$K$jf*t{8yg#{cNiHDy&RZ7>Wr}HvSCG#s)Srz+UuI_vU3o{<=UZL)_cUlgvaRhY
zzAS@I<^k{k%D39u?m?=94);8pa1R53rNJ1lGxgS3EwS%|#GE(4<piZI58yu=H+XI&
zd47Jty{aUEI)9ah^Rh@w(iYlDOUy^-wzwT(pWHL$neVZ0?*aO4&SRHe&&To>U=LD#
z518nqjd&Mu;p{+QRN;xRlMebeRr;^b%DI2kI0{{W{okWcAx^l-!A`j9Ypmmsh~Vp#
zq}t_+)%bWx(DCuQtHS-&CN?{0J)>?%5VRgJ1!9)}^Nan|Tv5Kq(bF^yNdvc>@k!K1
ze$=?3p~1h)CWJ~_5eN2r8F$spNke06)@x;t?An9B{`q)G-Lf*~j28;HAxR-EYLjFk
z-^nK+ueLAg@bGY;puqerP_(0e{ZG6<1{4yK+>GMauZ}~!dng`t&~`E~CXOJdPy4Ih
zcRG)j>H7meX=!0}EVXt`BcEJngPPO(baXt1k(w@C;O}^qB_clw?cUT`Ke<>fRv-Kj
zG`%s;jc;AlTw-y;2m>a%*iS!{l-iy^0}X_wq%z-mc+Q=CQ$QMykuNGx%+i(H?2IV_
z`kR}M#8KBm&|fBOMI!1}>lx5d?4I6de0}3O&NA*0KI*(nl6#5Jr=x?t#s|UXq7Vch
z&ZUD;oZ#t%MW_^wWaD5r?Dp>q!0I$$X#tbDgnQ#bmNmR%klw}+cVj7Zc}@Tqtgq(j
zce82n=mlrrveb+oKx1|Q%+h$ZvP)a{K2`<L6O(>99zi#u=pqC$|Fdh{lEib1Pc5HR
zx3!>J^S|?i+GxGG!6R^bs6LODwgX|-ey@F6)xYY7OBtBlzpC*(Ea99+9par-dX&-l
zRMF1Am(omK*B^yp-B1XR5|Hq70`8}>4WnCJzT&4c+of4(HanSv#;%6KpYBMheo#bZ
z@c30G;@v}o0C10i-;9O0gL0f%l~!3<N!gh0<tQI^4%m_zD0Y7mZ}vgLn_Y5zjX&q-
zvRS?#y}#JXqC*m<=MbgH6sHR+q?>PRJ5ECrMqaW^(Dg>8QAkHo1h)e+NQy{?8DQni
z!+SPBSl)$MQ1`(;WJ?DXw(;rRQLjUGuG+1qDM;$nNlM8AC5~%4&X_PqGTMaOYW_Tq
zI1akS<3?*y=_$m9=Lj2^1GU4}C9bENqk}Do+5wcV^eU4Pi$?u{&n7ns)E{njd<((G
zt7|_&Nizl`dYW8U(cDagyI+PpEVj@2CCmJ`b-jgFwX30<+XFz*ayj)|rH($%x*=$F
zc-D`uH&wo==Ujph_fca2Qm{Ts>ZIQXe^rzmQfO#!u!vGop+(+|1uA?%NAReyEPU~A
zTA644L1+{LxO<BvAyV$f;<VI^n<AZ8ui$<3R3WJc5_W}nRl(SBdGOGsiaYDbbKl8S
zH|E&%@al7&Rr1C*9<*@4*Cyv~_L`~{5sKuS2rj%WZXAJ^+@|fC$W?NY-!2H<eMFp3
z$ZK>0Ifp!(%VUfH_sWHXI81p&oPFOAF8kWEtO8tn2ymFaG70%eUR_;fELXX*xQPg7
zthRJ$0fXjb%}A^A71m2!hb~Q+C~)KmP*8sD%|&Ic9?ZbMxVCS54L~5DZ}Jr?R)6P_
z;f!}^aTt@BjugCMSA0l!NJO;m#1oT}CQ#g%x2p-fp#wZo(77;-U74mCuQ6(<`r_<h
zS#b?@Om&>VE+n+$h4k^BA0+MkV*!d#7<gnbf%;iksEk8S+eFF$0=!v%MqiR_uMWXM
z3{lJkoW|q3-(oK#BLmPNSYE_j5l-AVcFi3a9~!j;b%0OI6w9bA{~h==xDJCpk6QC_
zh@}ztlNrXdj}VvDJOCIN8}BTo`Qd?&F5@&{I*A}VL!$+?NUrq9(qW}y=_-jC(KsfK
z<hlA$?LHYNjhj@3Gxizl`0OCJP)RNhr)uZtEWGbcw03SIGUJF8#t7_xwLL%v930Zn
zc>jzxJ`du*YkipuNTD+ZhX(cRgF#>r^dP})qEF~K@f_U;nZywjS9mC&-)9)*B)sZa
z2nPWv`ao0n-;j*`%a{%oXH_&(ABwxI^l0LzCZR9xGJasB);`KU8HSA0Nld%<^K5*k
ztH1J#NZCXNwt{#re{4CT2`-I*0Lly=!7gm7?1#Xn;^OAl*yel?F%Z*eP-HtuE9ChY
z0>v-}5R8jkv=q;)bLK@mQvz1}1jJ1yl4PEH6?P6%uwzuaGnFeoH@i>YKlrkul@G@W
z?mR$8Ge4_jtyf;1i8qzW=Q}!8ejwyZK^=;23pf6z+g0;o+wSU|k&{jmpl8TBz>dS+
zaM~+%Ld1#!oif6;yA>^D((KoM)4<ESMJ?UE`tlT;kQP89;3*nU#lg+hWl=*pup?@r
zMZ~~>ma}`$w!OPe#yjA=vzaSf)@nT%uNKBA=|&Kxh!H8Q!udBDF1uh{6}PZZc%~Z7
zcDaw#*XzeasvR+WFsq($CJ3O`>mW!%yx;z*z})cqc+|$W#KpluR=1{x@F>;f6I8r`
z*ml;PKDO14#iOC*E(1+QS*3!1Pe;43-hbjCh6=Y)#Oo8O=UNYH{<Zj2+-9=9oxLm7
zg9bq7_$4cc`9Z@=ypnR;Fj`nzkPm%K{-!1GAwNR`r7QLMW+LH)X*_JCU)DrvFDHg`
zGRxWd`l)FzZCEXx-~FTEEN65DV~WnaW%11JaGL=AOrmwwMT{}i2J%4lcR~qnvCW51
zRey<s=t6;9Mb6~%wyA?Dldafziy^d-%CqCCyTz7}p}FehS|&rNuTE{Te$pVM1bt2M
z#2qU@&5NS_@S%MoPFQ1WWWp**qh|BqG`~|}2HLG{^MLuw7<^RxeODkn7>w=(DJQD(
z&oN=z&1}<Lg>wlcmPMp`QW?lK;D)xG2|WWqeSnxSj-Itg@zHYxl?@`82zZf2hcDw%
z$FGEL2bU@zc^m#z|IRjk@e!N@5JNXfOWqM9%CBi=(YRtD^qb!laIaPAtwH1Thho%n
zy<ECMSr|1hzf88m>;87Z`+2;+2CZ0SK1CxtSE>`<4s?z2p?BGnT-KTxZ1_E_AA|LB
z)*0KktIg{t9!=fWMZCQQiq$Paz&i-b+uq&1oS~I(x2Vd>%)~$$`%H=B?0jQaudOGJ
z=ug*qDibt6k5IQ1IXsLqaAL0jS1yxi%!-m(NR(-&sEQj_n5CP<VMSjQoXs$f192f2
zGyR>NJ-&E51pYq1EnY?FXM~B&3z&F2JzltnhlcY9|EQmS<K|T)@!72fgygP!_9Wp$
zKdK|R#<7S;U7SPnh{?ki1?DxLeseN8CJ-Sp>htPboZK=|bLK8?Y@fF1!rS?o+hb-o
z!R6*I0RVkL!QYaS$OFfh#~Y6H)abTEH00=2&Bs>mKVU4eVo6PMgdrGnX#>;Kb$+1!
zVK)U745Ef%$Wr_Pr<S8pW8lu`I<aAQ+1$SLlrEqjLH1+o<HzC{+_>|{!sK8(4L_DY
zo%$Q((ok+uvIrjwWyp}A+V`K@Br^yJ)vLK+d!0{w26p<Qe3~L82pD@qm42P-<2Wg$
zJz-H#99>`~b!}`vxV1C<Qvbe*ZrLoDSb(N6cH^~A)vU^I$5iB2%I6`^X9VCww`HHh
zP7TVUvCu`pGb3fvQ2zMVY;MEt@mk#FxC|Ppu7?p@Jp&K*4hW5&u#EwXQ<DR)J2Bjm
zO3s2im7DPl(B&@gP7T+7lg_?AglBwn;6q5*;b`0`a20C1DvOr@C8qVU`%VUgu;U&3
z_pQNcyCz!suFnuc-#aDU*XEhKDB(DA$OUB6t@EJyzP~3RC<>m75<(n>`ZAL2_pV!r
zoER;@nAbZ7_#GH?iqe(3SH7e)JL&Jg>b;(X8wd?TAdVJ*AB;&)fo@_)jK?tglkYd-
zvAOQovY(KO609!)2-6XB)Wf5ys*x2vHY~GNqRXI@giw4?#POC@t+iQt2$_yJPD(}N
zb2(dp<|US3B?uhb3+X!w?mH2&lto@9;ig%3VkeOBK4`fUtX%cFB2D`3{UzDWa5^Ok
zYzD)?Cagf287S5cVhrcBe8olP;Mn{q5yj-`%UjxZ%FrJMC8yGHMO=Hvhaj`qE_zV|
z&-*>D5kBQzCjFr-kmw{}x<4J3!Sza+YkC&);><ZUtq1^Gl-_hm2;>Bc+QslnZX`7|
zHTiO*DP$7BG-n9w$${$@SXiWIH(F0DP=sEtTh~vYz${Rd-A!CBM{((!nPZdAHG^Ba
zZ;5Qul~{SL<$Gqtjq+LYdN*$ow}6kO1YbjE))FZpLTRI%28K|a8bcgW@A~E5XGGAu
zm5g7>`%?);>icU%04)h7qtC_K=Cxlf67?Hj=(1!(*u-qInhG>W3?8c13-alL?j|y3
z`osz63bnT4^|Lvk&S=N9pP*(p)=Kz^MPlQpTI+iH3w4O@K@)PjtG%gaN^Ca^^Ebt9
zx<=14=u<F_nCpI}z07YP=I||^+&_a`AU>m)yr=`qB{K~T2B2>nKYID@1Wn-%ZL|tc
zIAbYe{?X`*)H3<{g6C7fmL||%b$8qMGG-mnhfjD-SSM6*Goa>6`heZV>JqF^rI|P}
zJ{~$e{6#7b+;;7O67knh5f?jcD)ZZC6e1!bvZ0T~>P2Q18lz|){N{0VoqKmV$9Av|
zP5n~R(x8aB;1!D?Dui+^Dh>{g_NhfE@x+btr4fA8&W@N3l0sn(5e=1#5E0mNX($?<
zdD6171t?u%KN?!N615_A9nZdu(}T(JY5z%G8IjOnMY=#?G9Y>`JaN~AgOf9>wUy*^
zNQ7{b&4UhCskW;ohuH!8M-bbJO1AjRj4++}KvaVsPnaaUKu{DMKVY@i`o5><#aVP2
zV2s*2pPto(99%WCv=tzDCy97VG9HPA8pe$fY&?g|#YYrHDz2P#dRN%dZbVPdt9k2b
znEfM55g}PZu~BF5Nm)fjAtiN=iGikbz`Xa2(E0Ttw(hjndTHWj`JLVM{6rI9xD;05
zm5W%;I0sauB1YW2C>~75V%2%HsY>vBo2qaGY5-quYW)g+;t+jf@j|@*IlEL*6;;>E
zkpKq83QyK^Tp58%8j1i(oE-59HBi*-HqdT|8umY@ar!H?F$OSN+Rc}I8o`(=8)5eU
zczj-*DjV#!(lo0Q5Fd?1n*3@IQ6mnLirfE+(=*tYMo%C<#TEsHGW5FJPmuFhuM;Mo
z?O7#?&poH#U5u16%{N3-Xx8Yig|Fo)2W~u9VyE;TAZ907PUrHoad?W4{iOHf{wYFa
z9TqKl0++?^U-|w><=gtj!E@{oxfK+~rn}EycSoKm@ts&oyZMuHKH_?TCtI?3vVHXS
zBjn81R<ufDxGq+*z;=TQoX)KYQa7NPPITS*N^9NiPkw&Zp%iZ8uB#szLb)bm`GOTd
zaIPfbz)AoZ+G!a+?rwxRdP)lN)zOje;q4gq1nb;yu6ZhA<2RqqG==J(Uls*161c6D
zoIiLY1c{#4ubjKJ{98YGox?wyIXBtYZ(?we2l{t*mIlEF89Zz_EI3slkdr0DF)emx
zdu+$*YxHv<^sWzMp{iEl;NyQ*-$uZ2<VTOir#Q(0+1&Tw13+gMMwGg0ro?)_mNGl0
zSuwN{&b?*yd(ipsyuW$IH-ugGY*KTJi%2pEaA*XXYqnjJ*_m`qOajyn=~xyT;c&yh
zJ75%9C7iw_8f)8iz=p!L<gBd;lr4#uQ7kS}z)6`03g_Z5kdK>r${y|CxsDyhy*YvW
zyb&nN5rU^-z~bxZFdJxrc3rsQ^_QEaWP$626)TzMFuFdjIGM!r^%cxTFmY58w_8s%
zftd^Mdhf$M|D7R>(2;=e8dPYZQPGH!RSwrQf)r)A1j45*CyVe7HNu=bqP6fECAgab
z3Zxid7AMIW@qUC0POXHj(fRauVBuCm{r&iyj-ks_;{*qm-u?E1BMTAdK`OGQ_X6Z3
zg(&?<#EeSlZA#BE8;v!To$r<ht;JP*e{a}_z|bLOb4T-0;mExhO9XstK=s)C>rTxt
z@R6rY)3z&Wb^>T5R1(hseJKK-&!flWx0!X<#=FYPZ=uX!6mKuPJ|}6oJ+jMk^56A0
zti!1LYGiZC>s>5U?)fw5LylYxp`+_SWkzh(3r0rDK^Q~;m9&%#wTK!n2RCO{Rs|>$
zHPXz=!hh@tRMd2O?%^F{OqiT^13kWf_e3s@^>K0vBEu-4ui|8TH|*SbeO4=R8NtI5
zC{#__<x*Ip8>}ed*nVJiKVbk8_LjB8?Q5%#G`pLEx4TJhFX3`L-{+=JC3bdq(Z@Ng
z*L!c)^p|Rti*@VJQn;);M|GMMH8p?q_DaA&f#@ocG|{#+X4rVF&@`+Pt8}CXUb26(
zamvxYamoecVXf%o;-C!qZ)pT#2qS>bi8I<KKO*YkHo2Vm7w!iHZn=f>ql>Ilp72SB
zy0A6#+>KUUwO4-mK)qcik-g&-z>=Iqr#p0X)2pF6vHhIs2hC=-F5FJG2akiFW1AuP
zql8is!vGvbn7{!J_pgO+sW;PysdlPUoa&Ha{|;A?III0Lv~Iy#Rc*nCv5%ZUmGT=|
zX8T^!#PqTF=Wx=mZ&?^$BTtAL6o$SgZFMOOwPTRsOd2f01u)?J7Os?vVZ@{RXnyBT
z_s5UCJtQMh|Kadbsts~QSkaqeXfU2oa&pW0gE0)0%$IM8TbT@2Lg7Y!R9e?(v0_qj
zFyT}pl~NFFkcxYKiR*!qu570WD_=NfI{@7Pi3u$4Bfew%GF-rOrbC?%A?fmL<i}m2
zk9N^F{`jOPcVEy=YC(DRUR_?G+R2Q<CIS>QHD0*v@hXs8CE%kLv6+AaoZqW~0RBpb
zbYItlR8n2SVIwMJ8cbcjKlvr*cOch~fLBdHmSq|70ZUS}6!#A|V87PGaZ8|xdv>k-
zsGQ{?<3p5O%hup>AMG3YlQS@4&TKw&8OJ7&{=M=<JAF@Y5`OMklk_>`<qB&HbvP@e
zg#<aH;o)1l=~s|ht(Nr*#J+_Ln3f{(REnZmg$xJ?R7x<%F6E5y!5d^UT$F>dk18^6
zE7Ox6HA4qtCl!X}i^u&^ve3e@>FH6@KWX$HE^+%uMnsdEwd0dWMJ+6l_({;|a#H{@
z90ahw28L*6aOZw<>CdSTzVksx61X{%@<?1~f-sTQb?RMNdgz6N1p<xEB61^$Mkaqg
z$GP=ahS_PrajxEP*kSO)Q#EM!%M8Jy%Q6t)0P`mPc;wypMSd77#~HO3F6I2NUC@l^
z<tTPzEN|$qrzFMm+M+`5FOYN4Jq!pI7?3=1h1HzL8(mkXT~79h>tSD^(A90e3s>34
zK3o#5+wrW*pUz^JSr-9a4s+f4Tu%MQ({oz|`58Z+*YXuejZ97ZVy;4w>`;j~5T4M9
z&H4svb`lN}zmj2q3;)Kt<VdEG7QCG-o?+$k0zjhg`D?)+v3<kt16AW79A&azB8osV
z9HcI6l#SjZkF8``r*<fC^qlHuj+(KZh8RYq2<xBPs$e7W0P#w(TWn4HK-P7jxz2zT
zN4)E;sX0W@hWP+Ve4_mMDnJnjDO^0PVw(=oBoB(~$)-*AC&ForJr%}g`__p3JAPaB
zK}>r(>u&6G**hOr;SdpFrTg#P&x#IaJ#-#%2nICZA1yZbSyUL4ZoO1jOsO9GFR|}q
zA9y(<H=3B6_x2>4eK_N0V~qB8pwBYy_<`$&ix5JZU+ybmJcp$jCS{&G+T^r4S}>U|
zcD8+oXSH^&#6`#pu1PgiZ(Ec%ji1$8$?;KSRuF)9wVctfk86=Su1TIh34tu(UpdLU
zq1uR<v3m;+iPVbN&D}ZCN^-DcRXf26!H>ats%lDPnp7NIwP1Z-h|4AFcT`#hy3P5?
z1!ZHg#(!qr4j{WklR4mXcCJY>HZ}^g8N;mRnD#RyG|Dy2Y^}xPN<qb@eZ_R9wXpwF
ziPfP81i`-8)n`*k(R<?q{#h6VTOw+o_5aLMKi}+(DXOc5CmgxzO@q@vfoY&h>{#iU
zm~ac|2kJK~h1SD{UhNJsg<}5HVl?3W;8N~-zs&<je#p)!iAvG{yK0B*WhMf)4~R5i
zl5_ArDiw$|)Isv3P@QsrveJeDpgnMLiq8@=GQ4{3!_Nm(Y)4mG44>e5+wSOJqVm%{
z3f~(xn~V_2AawBVrB0z$4?it1$LKjINi_dcJ!V>>qMwSt4I-)#$%ptzJ5ZZfidN!A
z3L`6teQQkzM;w*WwL2%dOgzW~q$Ps>ck0IhI#?hCgdrT1sn>=WT&N~-e-bfDgy3p4
zHz^QGY{hoh3WTWnHjCy*mo-%*<EVAf7JY~nYaoyT?@vryHBpI2MUwhz-c*}UEqeF)
z!y=#WB<b$_uJ3V3?R6E)Ce>m?YAJna?IxX`!g~%IylXYl8R!^eUY<lW!@Y)V{1BR-
zEn68Z3{j6bV0@f6J@1ZmH27in{dMC;{|bc}NvK(HnEUWn&XHg6eLa6kA&=W;FE4E?
zVI5|B?-9$emX^;npVb7d+Gl_L$hDd_YWKO<#O=5qI-8^y2Kz(j9CnwrkAk+iVBu>4
zvO+v^MN0g6iyyoaHzAx3?I#zL)A1ZeCMN#Igy*S1`W$!EREO-$wG*_O5~j(@eXA4f
zd@`}q*-Y9pm+|1>zo!(PHg&ogiE;kHi$wSQB*Ihc=GH+gCZ8)mAkNJ6VIaVa7nK9w
z%aXV_IEovs2jf{N67hgYMY;}Fb?Ze~aiuJChC(Qx<|j4lKu3!VvA=AQs5j?N%^EEh
z)XMOyfoZRz%TAclkB{E>4mV3Y%BOxzmMEnJapAKq@9ZBEz8<ItE^=ik?^SZJ;=pMf
zfm^Q8i`pw0d7?gVm{Ray(zPjfRo*2TPIkZhy)UBc<s#H&KpqP-1=}L@V;d?`I|)S|
zW;WWaqmkvS{^j<-@XDKq*}wa|b0Gm8+u7L^$Ma2h{RdPgE~;M~e4c8pLnTZ6py4TS
zkZQKv%(Rt@mrl6uOKxpN>z2Gf5niw{>pR(hO8t|Uptloj(d`x!4=A$Q=}B~3z=Fdp
zNPU(U07dl-f}wJyFS6fwxyQmdLTt=ysxcUKUHR?fqp^gMp-?(PH(FiRZcb)D0sa>P
z65k1-Q3g1l<`f>E&RWO5mFtP1*fD9818cr*%wq->)w#_YRGqGPFMQVv;``1Ib<}<_
zy(&oBE=sfZ``Gz>3>`zk`J`|6x-$X<aOIjjH{+)GX^c7)PTzG+rxI6~%q6zvSMO&-
z9|-9;v3^z!NMR;DpU)zgT*s4|czT5)09}vy93TWjrOwKbd^|xIQ5iuU&+NB~MZL~}
zY@N!ISIfTLQy({rjnBYfL@gV7dSd%zn4m-`o<i?}`}ev$f?)XeTFq~aq-=I0i`i*?
z(Vlbu3o793D$k|JigQJ0XJ;Q1iQe++ZKL}aAL98OXmmh>3bTNoo^F2)9pW{|OKraF
zU98a(4Q`m<rBFjM%^5fn2yC=cV8s@HHvBCpSh$(}X3GSM8FsXqjA;1G66N(v0Ocz#
zdU%1*OA31H)7}t^CqnLNa&j_)&~?vYnF10_Dz+YMnDH5lEosNI(Zj$J?a|4ccSGR_
zl6w3N{LrAFp}U}acYo}h*JBU9%1;$#*278rzXyfbM|`v1j*FSbaaYjUOeF{;7}d44
zy?(ya*OUQY?mSw6T+DRdbjhRPmvG9xJr|Ckz2J8?Qtq#~C5Z}^w=p?wp;*E{l`dC7
z80kF`(y)&&DU-;7rWea`EuUh}69e0+hZq>+VB`JLHIj{FQ8X+NGV%EBjuw6i76^~w
z!kj->cDbFlK!aD1><m!ME>MCPEo<<mCO<x>jihi%f-O7zVdtye9n;0*oHW=EwcUGg
z>7NHC@z6>LCBvDY8n-8vc>D1Am)}}{8h5j})xUX<_ji{0{vBZX#(t`br9AXKMc};R
z8|l)cQx994_tvD+6}$4Ed&H?4Li)+gNLfk!>yabVyJLg9HZIR~L%8$y@?SEfttEE?
zK@Yd|OSd)JN{w~YC71PUXn?@w$!mvcJ_qWj55_k)N!v`Ei?Ewhq<;%HOTM;2ln7av
zKc)^2MlLMNs4uCQnv;QMojS$ukT|ND$Cp<|C5#RSelZa^+INX~L;eKY)!7V+YOu+C
z5%xhpvrMiORcr77o0gr#FzT~r_KMQh)^3|B-SoIrEBjArcJtQdS|wyS=T9#@+De#a
zW@h)P`oAP?A*T=i^(&J6iU4SW$SvL}Vp2+m!E@FG|KD5y3ru{g!R1;rPea444wlw?
z0~!EP*khq13tt0<Sz4W*Cknm~*&~si14gvcbZxce9m*UJiZ`B5M9;M5@4Fkhc-+M~
zA+@Cai?V!0_0SShw2(1O_gAyJQk}Xot(M1Jm7NNCb&72-4$gKbgijyRxX4XB<g30)
zkY&Q7{(?#TLWaRZZ)*&E&38mY_QY+($t~87Cl)YLkATG$1vo?Z1bLu39qQkDy?}OI
z+e5fc2e*wEN`RIy6ANA|OF{|{5rsgYVmfhJ&>?#O7~6RLv2ro@?uwFmA9*NxD+oOb
zP)}mE@9g!@mNKFXYtsJ6^!G1H$mFE8J2D>QUuLG2MAKMCGuhyA6(wY3WSwE(2o5<#
zfu>ga<Na9MGu7n0%X(i$ljQBHZx3q}ayc|S(N+L-L|a;d7A2G#GLXXk=5Vw-l0uRf
zPh}55jXk;{hjpG+yM+idqKV7`1`atxx9>m~#@M)HhydT=^HrjlYpdJAWD#NTZ!4-O
z6A2(;awLAzRW6CO@%m`S`aMAe2=+N3FWpI4-G?Lkhm4UC@T*Luquy3ja)7SaF|&FC
zJAU)6eA!`4pq!5w7>DxyuHSuDc*^_dWTal-dMTjWJ~J6FHcwiW#QS>U=WD5$_WZ%M
zedTSwG6MqxGl}m@<Is^c;ncTd`jZlJQGgoZul|=dHd5aft~jB{Bth%;@C+`%pQ#rM
z3f$S~pv`fd&kx-D47tzjXa?EqU<)JaJ=PGOJZbw7uTu+~p=$s!o3<h*nHxRGqc0B)
zfB)Ro9^WIdMQhBZD)T?rg*;u}E6@|e6YVs)NWE$?0(U7_eZ*#E`D*X1MK*A5swE-_
zDvi2B$z?aA-?Rjn0H~o#iY``u@<2AQcqSM@2HSst(>IkLA5(zo<d26|3++gLUV0+v
zQ{Gq+A@iMi(%T1t5+){w@ku0Lf>M2MDlQ?=Lu>Te=A77C<yQJnzVk&7{u_yhme8~9
zk@<oZS9!#9c;;U)J1nB3^k2BZ05|)ZcY#}MCzn)=8e1LyEZ)M(jT;ob)JY_i5P=6)
zhDf|M?p&}%SGew@!ISn0oVF&|2$rB!rwt&h<^mgU>rzo}k+3<U=luL4$6aj==Qm=)
zmy;jF?x7XyAfZrn^7e)&z$Aj9Me2FZ_;KrEP>w=Ua&VyFhhMmvaDO!HyU&@*2*})6
zWR%!3$G{Saw$Y5#jQ+LvpIoX_cH%ix6Er>PWm+J#WJJ#^UC#T7`-MU}&QCK!U#cco
zu)3<2V7>R9?J*64=n<hn$^SNb)TW>yyB_3?udBiF{a2H1LT;`NmB+5rH6=(63Wu=F
z3Rz@W8XiU|BP$NjUd+4Le=;b%PI-a>WR2g$Fx3~@mc>LXBMuLQ=FlOgFzYmKBQ>Az
zK&qdYb%InLkv{92kggv0fnG{vMPZm>^=^)KsLch(NOurt+tp6rO<+~@y>;d!sJ>e6
zSDvCOlqu0$%F~~a=m6rfSC96ESI#&(qABOaz&D^*k<;36w?M>W#jfi{T)k)}ZCeH@
zePSxiL1=8>JZ)m?<J+6<<P=5Vv)2f&sqW3>ho?0@kMc_^*}G|G?cgJB&9@N-Ke|Jl
z!a^*nT%@)Fp^}cs^^QTqfe6!!htD(W!V%|JyUSm~x=;1nd`$TquN<xr$TLzVYF)t2
z5(-0Z;gB{y<>cdv&%V(fnuCO8WWxHkE{<P(Ms7Zje!2^YJ0F|vgO?+S*PfnwC_3wV
zM--&zpD1B}!@F5_T2$N_Zf$v6<A5uf-f+h<NQ2Z7D*G!@EoEnn06T{eNimp$oAxWQ
z`|CrFX5tGqJ^cVSx|Zp6_2_@P*6Ev+o`|R|EiJv&^4)gOuLS!Eh4AVE`{>PdE$s-r
zR$U&{UN^wh#&tTQyMhiK&r7Vqa|YUFM_OGkKnXn1J0*u@J#N1G7#<cTVMpxQe&A#i
zy}b6f6*6$Y->3hlTQ|Dd`MB7PuAkZ<AU*#wwS9roWd&P)!`&O24hw#Jz+QcNzbV%h
zdE!)j_DNi+)#+2(T3>VgrYPM1|I0^~$*C}*Ux|r6<5F$+Z&QsS`v}!8q&_+KS)KH`
z)U6mB9g6n?>&W?uqjbKWb}Qyu->f~fL?XH6ghGPUhSmt?f2Yru>?thqcExA^U?!=f
z_;*jNHyRo4{-d^NwdejpY{!G^*T6WC-oN`|(8$LtnWh~n9$KCtoY$=?>^fs=<jF|G
zkFDY<>4}&B?u;$-+WsW_u)S<1Q1Yw!!)Jw~(U8`F83u_X^Oc49d86hmm6+j5gdkBf
z8w;qeip)R?0+i0PtDb%HAK3^p1qJyD3$f|5`59hFN*HV&*HT6%M#6|8*oWq9dLr~a
z$xQI)Tc?z6ySK6wd$02;x|@5@k|Nc&*r4p2Y6z36@LBl;?G(yJaPtCb-v|1s)8H!E
zLksbbxm5R{0l~{oUqxd&9(1azg5_Q53LWD#d->K)^)GpfjL^xc$3FC%5+ZU(5F^h*
zm&Zo|rYo47frrWf_@!@>!M0|nkY4BI&S36~D=dKI6%;-+{yHLA6*BBGmN%VMm1#(g
zqHw3JaX{$#867<g4b9KxsKVLxI=JmE)4{4G*S=PN|FBo;yL0#b?i>=L|IG&XXAtw%
z5A-&MOr5=L6MeN=y^j4n$;7*W_PppWO6sjasCgH&rSW``N79B?1x!yrI&i&EjQ$cd
zq<-o1f2aG>GAF>FlMjiNBMy>&NQG>Efp5?POqtdzU3{ln{F8@+53*;cXtJzgitf`_
zMK2#kF(EZ7W^Qs{i_?!cHFZ_?WjLR`f2*qBO`~@8zV$5gbdyl{@VNWGffu6nChegG
zZav)?cPvw=ZD?FgpP4zV)NnIHyy_U{MA9!-Ab6h=t-x&k?M_jNUNyn#{_s<RAQK*m
zrcOzzFxgq@1pe~vR2z5O*C)>sPXc6Zi0h(6kvES1cL3gaJ+yWkLjpqN>qigEQTyd;
zs3JI&DZNG2Ijb3n;$YDz#{3Ky0uwW{$NL*Y!bG#o+giq!Rgo>;*MeYMdRMg@ogW<A
z`Wi!i_#OTKs6JvmqEAn4x(k-*w%NN3Qt76rGtpFs(p@7MISNaJf9<MwtU5m#bCz;+
zkgEN$u35Xn8@yBNjNbLp4-3DA`^gHm-z@Bqy=Q>DCO{BGCh#q=iS6O?wPy=IDWSyr
z^cUih+e#Ot9qXO{HYxRBJ25rb-+%106(~N35LL>O&Nn>6tRWQ{{{yeg-=i*~NODil
zt_>yr)TTY@t@N`?awwIwnJJ<5_ci~sw)AB9;LU6y#u5@Xnp~Z>^m6}28p5p*Q+>NP
z$Q9=8g^`^7PCumVkv`eg{Ja7AtZoKx7A3d(oDA>eSDlh~DNfIEhvsMJ@4zbRqg<;@
zXdw~uDn8Q#sfa~_ew6S(i^)OdP1r!9=2)5$>Ioi?2-_s#<`L!=pBi-Pu+$$b4Rw*6
zC_Sr*IEo7oE%j=1jvA+JJXZ)bPl)5M^w<--rH7Cq+&^E9VMoQ(t@-fb{ia_Tv0r|N
za?VRG_7O}iMqff1NE}us<b0^AebqOB4ccZ1o0P+-b`n=23!}gh_hTGF2<d_>F~*u>
z@ogKyO&oGv`58Wq`*)L5T1_q|dO!fSm+B{%<N3)qrtv~17H-!ZNi{7crHS+Gu5XSX
z7#LhUTULEt!+rRSO>=5nPt?nF+g?lWeIR^z^No<pYJLnY#ISGRx;iW@Y@TjCgf8rF
zSy@|z{;wi-cJ?-;kgn<a=*;-I%F2%p3~knvf20FIdJC1t@4pL$8*OkTa}1jpZX_+i
z!>cB=pD2y*E7@($TcLd7(^1&jPeKz#XkDFz`Li$b^Os2RKQ|-~>cp?pD9TfsuKio@
zqyYza!~V$6_g;)rqqP?A74Z8Y4UAQVjwNDPF^aza(T@|?CNb<x-)sz_g=YEy?xfA|
za?n_7^?sStab2OI9Lc0a#R3VB4kmn%JY8#Bd!09owgxHsV37=O-gtO=op-?RadC1Y
z-mQAt7IbY$ZMQCX3F=N{i-*JI=jPI5(|oyKIB-&zK>bJ}d^wuN=SeE$(|lB6*vBX*
zC&v%`$;~a$X>>x|+1vYyO2C>41vZBC+?z%&xf<8nL;IqwX}t?wh!_UoUU8b@>asvd
zKh!hO#B*JB&nFRl-OrIf`tEU%dw*C|7N?Q;KK<v<DQa%+q?*1%bIlbS*Sp8Z$5N8$
zJvuOxPLs=xs+yYkJ`@mO+pvR&gM*Vg`5^a;HEX5f@bK_^K|uk2GL>UQdSZpLy^hXE
zqvI%{6P-v>Kws4RCCp#WNLpvDPp3L<aOE@#>8a=9F{!Cu(#FQd<7aoaL!+Z4Fzb5%
zW`m9jy*>YWt2<J03BEm9`kEJidQ@Bj62&BIe0zN=votf4f&*V)Ul)D%y691mzpEnz
zbI#A7Vboi>yh9!G%D{;YV6o`@M2^Fdb?#<VeXsh3C<7bB0L(X5fk<DA&<+Nmo_!|e
zJ3gZ+N%dOrJB0RLTi=eEwO6uOW|`xBhTmsjhr5vt$x~u{s)X}t3;sie$v@P6Jr+*f
zN!}VQKAD6Oo;)^{R~CdIM{1bYQ|38Ot~XFQe7f8)g{ZgfJg0LfM~f~z`Onxy&KKK1
z70^77EBfrP)*YC1TfO!#w)&_6je5I{^{3M&bo+MWs|PP}WPD~~Vx*w?t-fg4p(GYk
zkEfG5?su6z&{A)wO=qJ^4UVQ3mX^ix^FOd@yRm8ILm{K)y=>!(pE1^#n2^AWYEwjy
zsmJuK)(YdgAzY)@Y9UklCruXRIs+5a`(GIuLQZ4p0vIqLadB}r!Xtk&y`@@f*B<Gq
z`0w5~Gr7R|%vW9N3x1*6`g$H69C6jJUvp||aDCd=LYwzJw3w5^YZj~oAQnDWQ&U@e
zXTvfa@|5PfdNAFojFXn+x%q>ZVh<A875%T#La%OF1^KwB>L%MtYHG)8x-R78R8U$0
zaHv1vT6C@1<kI<hq2hK;pz_^Gb{lrLx7Vi>giii`kmMnDsjaRq#)J_;gMkXjW;{g`
zy{t}yHU6@o4+(x&3SzXP7LS`x^GZ*ar41&;*W&v2eeYfM7OTxM?esLctZxoyTw5M?
zQ!vk-tHuPMZdE};&28^NU*o0<f{mEbQPywjG(U^woIl}mJm7q3V1N&J$`>CsABuuw
z)Km+=;X{{$^#V<fmY@t!Ri5fg(Xe@^*rewjK%Ye>%qVjD>+kKibJqJ3sYdD@>~Y3)
z;kYybT#Ipr;F#f^m+wa;y};~Nw2<JJMB`bG=)038)3(#bqfgMEd>~oC<!U!Xl>GLh
zkCc?la<+IB99~phTrGwff9wy745yI7H3GwY@70<Oi;RbY1{Z*dy=>M+XySgkSYtW1
zRBf)(m`(S7RKUW<W_PaS+g?N=_SniifWrt0d9qv%t*3=br-MlmmAo(dDC=PrP-*g}
zQA0caBPLxCV}$0Xdm!O|cO$R0UV^JzLKVR{kM@0r-plY6Y;-;{k(t`|dA{h&?F|rU
zhL}DL!{7Vqw!@?<OCdw>Z&A@_3kwE~L~%7W+{2@z4X01BKY#vo-|YV32r7oXHivMx
zIFSrNZwi2V$f3y^;$Uph)2Vq_0$}&_=<EDFZ8n-WSm5tp9;^jY4l{(=QXNlx@UNYm
z&Ek^4#Oe78Lws>xTZ-|p;>j=c4vvn7f=7SNlHr<G<lWLq|C%SGWDb~Akz*k6pp4e!
zc{hrNsJP4z4i2*Yn;}X9;p{QSgzva*x-WMikS3sCp|NhqGd@4>HpwUlohm<&EAK#U
z?nkDrk30TsJsVSq#o^8Yu{!eSa1~0Wvy58q%?wiYF5?}L9YS!7-Ab3@FEPdv#b51v
z3c}|qz<Rp{10FM9u#hFp9_qAOS}<O|=oCVt&nlQ>(0^|!I9CQNjKO^1s(m+(lxg?+
z{Lp2jX)*#YgCqXYad((W$@WgH=igfnOcT~!8?1c3uh05bremiF^;)EmWIq{%jE{yA
zBwCE9{SV#NHLFYzf%DC97QB=U!bJE6NRq7moKe7XGGCE%2g!gcBWJ@yLqDHxPmYde
zioT)(@kvR0Crfo>>N+}1$<A1si+;kHbCt$JaKG@>o8LV_<S0rihdGvI)dJe@_8Rjk
znpVrXQs!WNR<C<I6jDKAcX#)HlQGE<pkPFRv8(#?PGmNNZUi@eO!H(afIqj|QeIvj
zUkRtec1_U8)HKI*EFD7}b7W+se8I}DL0d{zwris+L`g>{a(P+1Uc1z$q@-j8L>!xQ
zUHxUKTRV@xQoDr&#_TS~NHdsX2!on_t$A)&TPAoSfpYkT?tC!G_@Ulhj*EjsuRn&I
zb&Qf`@9(#|K>R2C&vq<C)o7%GUNY*MCMG7Pq)$}Rq7o9l-F7??y}iA*#p*>UdTw*2
zI!~sMzg1XRh}ceh0VXWT=X5#Nn4UdUanX_&Q5f2~Aj3i0*q_Kb5#)2)$IxcRhrnq_
zyP)~xpN^qKrVj$Yi}>9yx5Z6#gmv#&=~Nh>>v_3!LiSa6dU8_Pc)#_16V+%~%|YhB
z^shJ<dvcI=B~dpV3D*0yc}D7ju}=x3hzq8!e?&JwX+26STWPe$+#zv5v9os_-G8eq
z^E881<gs0C*59!E6^V58bD_#K14#%MMp4l7)=KOS6O!iLuXa&W*iGdr){!8?_cE2Q
zKsyEjy>+woWNzE<6$^qy<#`GjBqN@=>S}7v){w}TYbO%$a58T5dATL}(;SnLaVB8D
zDRu$j0Nta&(MjDJ35K=4W=W%zB`X21&d`!=n}FWobOEd1P)uHhxa`!j+g9W{4_eXJ
zGPtoT0&W}PVAOXeQd8x5zip@kd3d9a5>irz(s}HmxKdDqf`Vc{IXgSseM-YTcWlr$
zv#|JhUHy@_ZfRu*hACM8I>J+Y0$WoJccsy}>-FV{vhPbBOJj9)H5n~8`oV#@KQUUs
zp8ID+wY~B$AEGdz5{+Y%lHl8f$P{HJ#>dCW5z=h3;<GC%*fz0TRgYcxK7L$O_hma%
za#B*8DKby4s;Rk=a&Wkewd3Ir-g{VuKpo%R+1lB_(9k<rvcBs2FLeXe)ymiqxoNy_
zF5dreZ)skkp{Iqu%Wepj?fwEufTpK<^m-5#?yjiBlAiG4Ypo-`ZT&`YeC`L;x)>T`
zvk6|pK%g*~ek>i_`?22U5A(J2&0i}<pTrJp1+}9O=Lr5FI(soM4T&%n-MjLh9FV#4
zQ$0ZzI2%xH-;}(vyXi0PuhDKOK&un*gtGeqjP-zX+7&UFj%zi1o*F~cfgnim{{S&6
z;S8kmI?BVA8-OiGQ+a<0c)E0NBEbb5L-q!bq;Rv4+wl@dRX&}ykwWb6)s2b*1I1Pb
zDw>fwZF_rl%U)I2)HG*fQHOwtH=G{lyHmqUNb2^vg>XRY_n^eNBPNfdlDfw}=vg`L
z6_}qN!r)59!|_n-Uv8H)^QSa>S-*VjVohb1n*t9He+kVFg+M1w_AaZ(^}g67M{$pV
zbgVJ&kWF1qZZ0eYTt(?{{27PV-ASJA&Lq{<@lxe!>1OsQute?F+d(*Zc>emo7@?;r
z)ngBc7{dG~awKz#iy3z{ydK<oXx(-f;=Gck1eZ7L^zKeqVvHBYr!G6TF50&)G9k6w
z)V+hS7BM;;A`-Ns<;@=1!GBDUz(6P&Iy^m^U__1$C7`VJk%7DnM{d^_!iVc`7cI$$
zK61!Gk6q1InJS=Yh^^p@2~^2LKuk@|6`EkG&US5;55hWrCMDJ7HZ(M3um#Z=;7LHV
zX99fGmg2W>o{QUF9NfDuO&7;iW4*iKbVv}alN1xj!oK(#yGQf!fxn}g9J~Is<?cIX
zx9hTjvq_-ArUl&J{*N}E1(-xbn~(aB+4yrP3L#uSd(v1qq4>*e?f<CHV+Y4)m3b1N
zsgMmUu5zoY2^(MZ>Q32@lyl)<|705RSVMb97Iq>$kzD{h_xYYQhD>C}e1hP<eurKR
zCkxKll@SCmn&hGXImN${TRN?YFXUJnr{ydwWfDUxOsc%;!g7P7t8^TWxuH!QRcwRf
z-l@Z<w2N5rimWU@?ju6xthq1N8qIF@ZKOW;9fWHcAO{dI02#qUMa@K}-S%B~lAknk
zVP7PFLvX+?J$g5c@jnNF0sgW4YUwFE9*1p&!lI&$yC?gD+@#G(S(c!Vp{%?-8mRBV
z9FgG|6w+}p8Dk-rmk!g@)7@X{Di*9D5P%o{&ytX(lCdjmk495&9OBFf5Xy3Du|J+w
zuE9va=fcPn6|V8^qUY>x>q;%-rhMrnYIoNpJ~7c?Z!~Sb#uESbcp*T*^H%TQW~(=!
z&*K3tv7i@$deKaU{Z?b?MtOvr4PC6Ig$)ENL4uF_IlsunvpM`BfG0UR1M_e8<f`YH
zKICdP=al4R11<nfH1v0~dv1@xf%j%NqLH!j4K(Y_hFt_ij<QXNc@IVfTQAk>Ll`g5
zKl}rJr$~>UE!Ej}XMGOwaD~yJ5l&H(c9fNu?>*n>f{<2cb<^fl_xEzLAF}ac=hbT2
zioJvl04mLFt`9L*u#<5>(tFp|-QKW_mDtv@_sJ3BQ&m6{#+>}x7mDw3RDniu<!HxH
zcyeQ%HJ^V{zLefCMDpo6LNhnLt_-NZXlE}<qqGYP>QzXUOJPwJ!AMWuF~z}p-W`vG
zdzla?F{*1&A^z6<%_W%LKAlbD_DbR&Fu^_Ej7a-oH!@7fr7|Uzj_|T}$!5ty3^A8(
zb7lC-0&acVy_E|C!6=1{&3F*!oS*dJg@4R&FrMD+YJ{8e_b^vV2_CrDUfaRY(6GBi
z57j&wV(9W>W_&{}rd{V7kCr?RIhku`t`*^^EeI)?oSK3RLlCo$lK@lE3{uJnT=0*%
zDI|%~2~E?qppCAj>e<KJlkisWCj$rq+;4=CF6w0V_DZ;H_s2@3bU{MCeUBXyhsZ<x
zyLV3$i;F~r<FK%>QD?J0eaTs`VzX-3>xKkyVcBB4<SuYpJv}|4y9dMC+*RIAI#Wat
zDgU>)7^cr&oH+@ZiHT{P12r--@;e}@s>X?Vi!fBlhPgF6tF9<R`7?*oLn~iov`>;h
zC;IoDfQ-TitXS<@E6oDT-z3CqU$1MvoIfWqf2%F7uC2W_kVde<^frQ0#vcAo*?V~d
zf^}s=-p8BcRrji-3~drZ0GW@{;j;}+E=p1!kpzFnIeDbPQ50Lg5uvLcGX{~Zz|O<0
zynG=ur<`>s<MsdM^DnX!)vr_(1Zu=FU<|(h5hiPYJ+bxu0H<iyI-^jb0mAvuCPdE^
zFJzD*Y!~FGFB*WwMY&I6B}wRSpI)q<zb&5KRYmh(N>xB|`NwQ8OlDqAPBqS>_dIrF
zeW4f?a6FtMNq-9<!n@=IlKEYT@YKU&nKxRmM)}Y$`E}8Ox>b)48j04X)a8uf-)viO
z3k&`C9v=D5ny<)!x)}?(84kIO30olFoUlSdqMR-a5{{6?j)%B^V8D+`8bh27SGfP|
z?sFW~pZxr;4LdQL@p}6$#qZyvO1{<k>k}B6m~`$q9M}p8Br%w2$^LgjVhXoy?@?JB
ziKD)*=Lx6R<3T<|ELgfuI67Xb{K(5I(`_Tk&CS(l^AX^(UJOj*bIq=-#DW+R0R}48
z%m^YUAfV5PCmZ&mz&f@is`!KBc=Bxez>_nKR$-w5gxz7v4t*JqtaajZ{~bo$hf2b3
zf})X_fJmN_#qxA(8^FRK7hk${<FRx@I59=UfdCPgVfCdDH`<2~sm`nDG0X5MFJ+k}
zzweS0oo<$#ez|HESQq|e)$*<Mmb#UjE2bOtF^17Am&C&9*!#axoTPhK))b59bJkC7
z>BgxM`xT%ZPEHnsaCMZWE2R)V{PAvUaA~nl`cp6X^X6>O@o??^+-Ro?)rVE@-{yU@
zGI22BbRuz#jhxhBF;s|gkg}LJwzH*dyx5mkV}~YZ^Z;Nm!+n>K|9bp0=JyW-D3#~}
z*W=}JaagI@DG;(quo5D@D|9u?{@&h@t8DJubvL#`_a9D;5_N<005+Zl+H^OA^Wop@
zm^(CZ5Y>hU;k{U(f9W%7czC#KjCYUtXDB?d7xkWRbg|XjbIh<W>Ia1IpLln`;#<Ar
zb=dX+$n&S%w>#iTotSl7`PmmcJuannf)@HYA?ON8>*#{_dYpasl0YEQyLZ&$N@UW?
z-Hn?(%rXby$b>v4999(Qwl#DS3>X=69a&k~yFY)ZRKI@hg2*!g0fA0^xl|rZQr~B`
z%Brf^jEraqX8g&^OZL#J$;&lvOwCfH!_xT%@rB+9!hqCN;^XB8_N*ErG}xc2Y6+0;
z1Ve}c86_p9!AyT8vHKQ8DVH-MCk+Kb7>gY-t)B=M%8zunqIQ@fh-&K9Mou)Y(CdH-
z?9v}j<~%C>_o|r^2Vp545)v{pW#$b8$7(Fwj0WPQJOPtMvE;4|f}e?r!M1HLc#K1@
z9|UW%a+Gy-qw_O-K3)2XDSTk2{=+n4h=JC9U`{Qwz#7j=aUu~(gqsEzM>hfj&LOES
zT}CF*Che-Tbz%=cO2OT7=<BW4ohIF>-VaG6VN5`?r}{k-qW}}Q9~vq}ai5$xFV-2o
zOCL!V?d{*=yeAuOWwEobyo8ZVZF7wwBESwcHMQHiAG`th$Pb=`;C9(@EDdqzNBIBE
z1wg4U29R==lEG@q%9G@JHIT&ReK|l2-wQokH73}E43Izs<R(NX2>HIQ_mOx;$jQsE
zqLa<Hc-|F4K=s<(!eTR;M1a8ulKBNJEG^j|uMbq90eCdx{)HOLq%N3RJDy=I(Lg#E
z)^7V$K9BS6ri=-^ASG_2z(&Zmh2(Nw65539NPU%7RLS{;44oUS5TeG%?i->kgFZ7m
z>oPJpXs}|#4RMr?O2&`u>`Gt1!l#S`BVyBJ*4E-BBqTtBoQ{sJ9U>6bWDc^#GI#8F
z&LL*m=#Qn;sIz$whe9y^J3TQ5VwL!KoCs1OlC8dIA?G<#>m$YF7s;jo#v#!}<8q1Z
z{_PdfEJdm~B3tv5`H5OII|!|;a6Ma<U!tX@g%;M**WXCcX>`J5X?u2PetkU3g^<C&
z6S)Nn-_tz~3tWERKqyy3QA;`=wjp8~O7)kcCytwHyfm~IgHq4?{BKoUBf6?WT7MNt
z25+TL%>Ji_w}5J+>)M8cdvOTv#oZ-%km5y(Td`2I#R*RFLh;^Eq`}?Yp;&>U!L_&*
zcl*-k{r_26E0dW?GPC#Dmz+6svLmu1H450gx%i#JNhytP_{z2O3qN+XXnoA37#6-V
z@xLxN`*-UEh^qaJ$e9%)to)N*2;m+ykHg!py@ut$vJ&+2bPP)v2i=(3PY!M=(*=0A
zK~vmj%Z&=q$v-1ZKKsSa7!@_1X#zsjtiLn&EkKt&p7^1FKRYvH6ZrCUvtP?qryNgB
zm_RL_bbq&-Q}jBDE3qdGLo|U>_?PJ;OxI-;_l_00dT8Xg%7D;{-1MTrO733dtaZ&g
zqCtn2mLl*kp_@<L_QQumowk)#CShSxgpE7(>!1(sKKAN!Y3kelxN&>7`7cFWT;X$v
zU<HLfod~P=*T@xkR3eJ9QwY(9*q?O(5f&2a-o3Dbm+Av0JlJfEl-%9<<Eh0%5gIiY
z0p<v|(7WCfrek0b!CBQVU=9A+CZtsBWRofW$!^O}JwphKdeCa2*7kNi44==cH~iby
z6v8MreJYEIiD7&Qx*M_RcBeM?+h>73UCn(%m~j|ny0Czhl+=s@`}5C#W8YRgmi$Yj
z|H~px{*G`z{%zwDv(vC+#wePW+AKt|#;_^1g=3kQ$|Q8<kL%L~v_5ydRCRDBB$P@l
zjhp@Jut=)5MF}U6GeVWi^|T@^(Ut)d)LZs9!sy62F%`?E1{&pK{n6Z=3Au;<7%(Uj
zBYz8)oyYnxq?xo}|F>fo8no=snmimc0fSyV241KMwA_r2X8Gqlbe{N*UmPvy!qtZA
zf1VNUsNFwmMx#UVS)v(#|1z8Msa?T?Xz4r0lz8c%m|y9qPv2BixOd$CiS@ahR7PP=
z$;vvGKg7lgxk*E;ad2?d?i0?&@^;Saw1p?7rR{(MADeYp%L~-f$&?ipQSGpp7#ZWa
z%vwpr#l?~SywTFSkvCgc0|+5PToUzG!U<6n{P!7s+CK*deuZJ+ck)4|@);}mQ#}fE
z*JvRWxadtI+XB%rAY1MOR2nmMqFjV*nN!$q6qu!VX*7|wy}g|lj#&2g9GXpe5F#C2
zrN@$wUP6M>$jAtx5-t%**2nET!tU%24Vuf#o?yS2l{Nu`!7G`roxZ5SA)8`|>|zby
zzf4U{ohIiz<}Y0TW0SjIshlitO1fY$7!RAk{^?IR(>P*#ZvRWD-&cv{7X+5!{2gw6
z+MCQP5{oBRjss49>Wjehot&HmBG{g*^gSUqHa5>a<8<tWAC=<iSmfJ9c`eTRKrklO
z&|JNe>G3|K;q7-`7uU)9zy8hl+nJR)9^=>P<Bv<Hw^9E785o0^oub213>bH`zeu|N
z{th~+@tX7bdgI<A*>ZlVw&@~yGrWBXa!PGZ<F$zY*B^tBT)7{1M*l;j@%%adUA!*%
zt%UV>HYja-B;C8PtIQo?TiPrF@3tA>aJamtrlw%;)Di<DB0F1KTbBD%1#>LS%qn&E
z<Evj@QxH+e9@BU)pJ`ZITiYQbc~e^}@ZQr?xJm<Oq@<)|72&A_6(V1ON(l|v?pjH~
zJqR8|zA6e2M`eo%6<zgVn$V%0;rNlmhk=MfEqehhn+RRmsK=8w09TGcmi;PoYzGA}
zQDq_H4}t8@BJ{uyve*KD4-X;xx&_M`Lra1Gkip9cUL7(HZ#YDlg-?6rRhlmM^-w+|
zG?`0cg{nzNUE~)kQJ3Y4t9l9qUrgzfpz0*00<aDP#A$QJgR1N6<<-8BJ^|5{)sL-4
z(zx+!xt6RSeitfQK+pOS7%j52x_ePUjM}q+U>^1y==t#T@7Wp&d6WJ-5tZHiVH?Lr
zslj~@k$nh1c~udqqUmv|6zW^*u^YE(86_ND`|TI!k@~u68Mlwa>3qj@r=S#@n3s-?
zvJ;SAzCOFw;orLlQ1XaH7j<Xkzd<N+@PZ`a-Xw{6^NGgYhGWU;HQP(Sj!CaJGZht;
zVzAohNZF^d)>a7~Mn-u7$}jgv77n4#6RUL;6>8JB@=RO-P8C7rdCiLzV}Y%_gZ+dY
z!V2ui!+h!yvtp%d94jeP9B=mdK`b-;A7;61Y;4rSOD}^1pYA<xGY;pff<VlEmKo%1
z6SHqwVObdY`^V-w;@qRzAd`e*J2}$txIzhN-Z>|W4Q2bxldqLKZ(+{hX@pwwDwdiw
z=036>*mHO}QEhyWCI_q%rG5D}nRdePsX(ihFXKHtLs(ZlzAeG(n^pK%!!L%8SOt=7
z46ZVKpX_3#4iJW+6|37pHR&$_s#Pwts+j#TPL4&y9B<!d`udgH>AmeOGew|kL^(mq
z6H_D>-B}q9%t0ljRLouYjy4-7FbO|sOa@r{=DpE1uc}#FyxN;LMCD^w^+c4E$KHB#
zdI=^CJI7ye!_aQlye*6-{^lWVseiiyqF=r_nmNSFNF|oudq?51)@LMml8hicVs6aP
z<F^A3$FAf~$SCb!GbPX74kR)UyPt2BymxIsySYeTy5WoCR56qqucG;yDm+9VBj)`q
z6+biAR{#fjfGUckFejY^G)l@VHI1IGm!?CbI57YsU000ehl=4>vs0117*8BwfBnVm
ze>)+Zhk0^pYCkJ$&`Z*68n+2@XJq)-SjW#;U|-)B4T5l_PdksuW$&uQgIWUc`<jt0
z5m$+FZ;!_qo_jgL@J-#$#{3grDMu**6*)@8hTHWhL=QgGZP&oa&hPHv3+|^wdZZ36
z{3Y8hfcy5rriYjFR5eD)Q~(-CA*~uZ&bo0L0zxn+biImbuQM|Fq&W<sYOiAx5_YpR
zSrJrt-Z41C8h5$IYs&?QLTt4)`YUPsYaEKGs`9qw&Pc1r^bdyrqAm(lOrezs=ZQ9(
z<P;`_^#tQIkXs5E5fD;Df15W<NzIb&Z>du`SR~aUOl+z$uG@*nu=~ACk5)0giK)-M
zZwnUGPW>??U}F@z9POE7^~mPx7roM2F!ABuY#O1#|GTV}XAAWolK)JjAcu){OG_kg
zOmkvAAOys%UT`Xmi;J77ulIQPPtZPp<k%lL5QL!SmGqR9pXoU=_{j@#h@E^=_@A})
z^!58FDX<KLWC_5AjPL1ZXC3{F&mxrkH*o<}dfS+?X{54m>4ycFjpSZjYUX|Osgt<m
z5@+nD-NHRR<!(UKqAu-l>l%;fxHu>MF$IhG?VE><D?ckC${#mmjY<MBFjOf1l~<M;
zji7)4(W}V3kuRe0DyBD9+Y2w@Csx20G(KFxQOBBfl>pF`z(e<T`ue9f1~;i!)Y75N
z`IXi4jIvmAP*W}-3#l@GIwKPYcE%X6T^b))>}RZ(ww?~Rn=N6w&%NCfS9xx{s_(sZ
z58J()&#zP!;@}YIcM@r$u!6u)+}c)vB2GYr46zi+w5l;QW}z@jL+On4)4eQ+FDb0G
zQv`zxm|46liYqEU<mq$-to89h%&Z9Ht?^)(MI)b?Sbu$;8B0L$W$?SqBCglOxS@dL
z$>59(%6X~-hP$Wg(hgND!1{$xLt7s1E%Pl2MboP{VGH!@tNcbj&KH_uD?}tg-|8zx
zFheaV`K_Df2*M5XCg*ut#IiL1_0a>ReE1M*OGk$gpnocmVo3s?BvYU6j)|Xe2hrjq
zd~*aIRRls4D(H|v5fc9^bBV?u1mF>%GKg?;a<*1mDv$Nw(o*8W)RLHWztsl<au>tM
z!I<rU>`i(%sXu?L-FIdvJhXJK>PMBBX29J){ES`TKm#4VR#$=7uOL%JR8x{@3VubF
zE7t+@&6@y@UwwlQj-iv5TZ~LhdB6xr4W@~O=9X96hKB^d;|v=vg#c<e0WOUMN%+^`
zBSI<|DeuU~?i+23Jv!ryk7Cq70UH&|at4J6SsjwC-CczwX8ng!(msO-D*_4%3R}LI
zQu7<zYY^_HOoDOxNU9|tkbsUHClg-E?V8)XotAl4mGF$FLxA`zOy-}13g>s0Lcn!>
zEf@#Dtu4zkH)hj$)fc#SB=cG3@lRSe4%hty*^va4QZcbl`GF&B!Mc!o5bRDpH)^Pu
zP%TA^zwF{2Tzv^X{`~p#?M|kvWrH!wM^$bWwNIOgwk@9_(dItmBO?fU14=`i{gSB#
zP;0rEWMnMTNnHuuAtTGMXX1Z_Eehj$<2?fxT_%Lo{Ww1|`Zh}Tb8rAz`>OtL#|>?{
zS=%dBRkI0hajd}vIt6w0`pP1G0KmM73OA2OBe6r;BSF_6Tjtr1?k}}CprchO&+Ubu
zEj%3mRzCtWQ=>4&*pvPHy2{Y*MbGv}tC?aQgaUU6u0|+<>VSvq?pA}G@i`92erIF_
z*!aHJEzR}}{?0-!%{C6mj||}R*qZ>j??dd0aS01%{Qe>1?MdS7lD>ZGX6sMZs4v&L
z#Z@K9g93X*<Ov7A-h3OgQ_sAXDVDH^)@9Y|-E?OHRmf<jr24WIoB)Cc57F|nifiX0
z9b%CZDoqoZ>^aWdSIy%_HJx>}IOFKVAz&r8m~x<kzSO0}?CC}y3Nws&_MJrlsrD=$
z8GHLT6*X46tT^eH#|wk#vg&F+0yDG|){z+g`5U*(z0AUw=bJ9qGs;+UUM2I@Yj4SO
zL__F`Lcrgn4?Lqu)R-%cy=HQ<xTHLI+699I?K%S8a1>FYO1bTiT+1$^{~n`t6LZke
z7>oD^nZT%e09&~H`EB(NOFCxN2-uL=rq@Q67U$CRB>tu{ZYEsG20ZXPOER;eZttqR
zzP{e>7+YUoU(92V02mQMkLi33xjI@PZe7de8kw(ouWTZ^5{&Bg^894dKHC}aU_8?R
zjF3a9rTR1YjcI+}-U^Fanh;ZEe=Pa?!FbsJoj!K3RdsHAyA%t9bfANi9*HRr`71i@
zXbeCcIwAk$q{_$veq^8AD_RM?A-+-hfS{arH}fbqIpi^n3W->lIx~^5C(XWm&jzc5
znUcxRlGq*SVLe3Ug{5=#|C=P~8=sYYT@FH&-~;m!GB}C3$3Z&)pGDO%i4B{9YfKO+
znN@2b9E%v4eQ#$hv&O0~A~@95K?8vXRg)9TH*Q+P*#LKL^LAiA3(HC4jz7@A_cp}x
zYRR?e?VC^Bb|c|?#cX+Fc42Vqh+!M#AEmziEf?GWo?y`eMi}|L1l(lJ+|W!&riSWh
zymOmoqE~cb<dB!eLi&Nt26;BidEA}0N{yrwN8qcA;nhwlYSs8sfiRZC%C!6A?OF5H
ztO?4?!{f#H*?v(Dx(W*kSuC1#jw>+=I!x~Sd`5KTs)vNjax>X`*M(X%u8~H{F?VW=
zyh+3Di#u<On0IoSmnUnk_aP_+C+P0_mY_e&k+cVd@%4f96J#=4W({^@G%gAL=(@wW
zk+YF#xk+!0RoDZRwXnkEqLMJs^W>1yJKp2m@EMtb5UP=nQxUT6+o@KZ!(2cDW0Oy_
zT{%KQ<Pj}b0%sq5IUB{&Ou#!#6nd!D6Yg_Z(PVuzUlW4);c&L%_I!lb3L&v|OsQyY
z@Rafxn)g8yG(nH^XWmyYXhlr9^#vzZCWC0QlzK=V#10>uA%bJGjiQjHcit&9NKu}5
zkS-3%n!*8h768ZOBlqDFOB$RbtW~jEGj=FNz99^IH9nGKE4>)RSigI`_$^f%?J*8e
zuHAv3bqsYe)2XT_&dH;Ief0Si1F%Q-A=W<ox@-g^Fiaz*h}ghl$l%~+(w0RnkpCd5
z{+vT0j=2Y6r#XPwu0G&)Ec+Q-KwF&Ig&Lv>ww6C$d@Fj<C3imYH-;~aXtsL|eGD5G
zYCT_n-tHX0NkDrMgeh|z6^*!Uq3DP4^71A$l7SIO@9_ifXh!BY`Pq)O$zA{%sDxTz
ziKz`y@7p)tB@4FlW1b&i^-F*p>H~w{zOX7oidv!maRIjMfbXjkO=FuySI5EtlAeZ~
z9Z_LqqqKjwh9j)_5LAMohxZTH$9$P%6&bq{S(=6wBKkG6hm&I=nK{Lw!N*HYqEv#s
zy!ZxXq*CKedrwn8euW9*t<BwhJwdh7P%|@5mF&zpTmIF?NQYG2LGz~;sd<0y1Jz4w
z!A$1cYmam^Z8-B%+xq)bYMWo9O^4}O#rj;IFE+EIn`+DCqhgW18g4S<FW<jiNvaq7
z-LTWS$J#bO@9A(}BZ#us;gVp#(`26?y_TJ5J>qDK1IQmZt2}JO@tpG}7tx?`xW|-T
zz7)QyTg#&8An5jXhW_;rY&dw-1)NTysE*5DjUNiRyEFDrWu}LG6nNHaZSFe`!t^sn
z_-{dkM_ju`ceIg{4$RfILDSbKy)pAY&h=iTFPa_V!jNstzxpkC0<EI#kE0MYW--%s
z>b+l7Skw2Vxn5KDI&7Gqi)vcD%|-!=pAXnIbtQrPwY9ZRopL_h3u(WxfVi%G;lM(R
z+KawRAW45GdWjUAe>+t5>E)xxdViqEm+Fu8YfH>Las-rxT3vIkj_^|B*nT3`80)eI
zR<juY!FU==BQi;^qkpprvc*&=Dd6GZ@kN#1g`2YW*$6a96w+gk4b&S~ILBiZM>Hfc
z!v_X_&f<hl%%qbV`bUuskV&8{d(N40L-9@8+)j=g@;T<Viyjw=w0HqQX1?#XvH;hO
zHCl^Rb0W|BOJp5sdL3@(|MB1k-z>JQ`;YtX_I_e1dYlCCNj3SYZnzQ?xZ)6y1DI#U
zhEVz}ip{6?7_6gp$#&a6ZM107#xLRLYBQA|rUmQ_nZ5h-Tf(GDNY{DUTPb?cdw~4P
zR!Fq1-JIgxvGz~iS3Z8olV!%@{}BV0FD4G{$#v*o0cic6j$rTTjv``NDu4fpgcYUc
z<h)$po^8Tes8Zyy1ZY@N<kOg`B|Nr{MO1M7Il5j1eozS70Z8a4qLNC9aSl#UQ;_X{
zXQ2T+G}L=p>4N5Wu6X=cKxPg4GTVyp!`8M9ap_At<_c3BMLiae{!j`#lC&W>eLJvf
zEh{mxrm*6PT)kt53E+*~t#PyaXTvukj3Z`|Yq)yOWwkxp#iB!Y?QwJ26Qjr@t@`q$
ziTe+c&xYk%XTV?`m;dj>tAPeG!hHfTVGJy{xfv*u$!$q8MVXOy<`7$C!q68>LkvI&
zNW(Plrp0oBf@ZGH$T6(Ll8Y7|y6qqQ8$}PM?9H6DpjiCrf2+7UT4L#u=N;J+IsWGh
z%=HSU1F+3(!>0tLBF0xQ3jImFYb;YfR880bN9tcseJ|QA`IFOIbw$VTXWsU%jx-AG
zbY`41uWq`wSzS9-Sl^A1zjd4tnf<CTgVw!L_bv?$Q%&LVDAiW$>1nP6H#kW4SP}pG
zMt^@lj_%vH*^=7E*yaQitb)Ylgt_05dq>u}Nmy7|>T7BUX%jF)>AR1;WC8|hyte={
zTp;c@>^|A=>?yHu2#|ZLzeXdc*)G1pV+Y(W*RQ-p{z=OmL`Bc1v=t&uD|J&14SemX
zfsTZ>Z+RZYA%NS+_8;+WQ8AY=V4ic4aou~~AFx+qi!(OGiXHREwM##5LM|+HCAS|z
ztDSIK2vW14c<AS)BFl$s=;KAshs-BIVPU*U^cWrkvdF`|EE>XQCC#iiC7x@27SgwB
zBWk=|diysI#7s;~ORsme%^mW#e?WTbB@}>^kboS1Dk`cCuQtx)WL*y4rjs9U47IYy
zJpJLZnO1<<kVGx1CFc->B1arnO{vU!`m5nO-ezb@5sBN#x<ANQ<YueZ#hGw!qeHD#
z8sukmmn^})KtrG`<?pgTDRW(o+#O{<KGx(PRZJJ7LVP&xFW^fN+y}6pJ@)$j=#UN?
zIZX3Km-P}==xavW5zKq|c8)~<QoLJ~dDBYVC3zTo{%ifeS#eO!B#Tzi7JRb{kAaKE
zUGN3!vtdE^hMbZ6v8`vnY|M^|l#~LkZXvE=ceTgA&7yz2w(w6`sg}0JxICX=^PDu$
zTlsfCrmX-%U@bV&K5azO3A}3Z|AjB7b=Ze5(+;j;`~T+&1pJ#P5LGk(U-x(#yKW(>
zDTAY<<JXxWBB|eL+@$j9RK@`v7Z}o5;&&l=wyct*sr{_=naDXixORrgtyxJRS~1Sw
z8f09vN&wyg8}kbX=p3`&ca9|-OG}4RLAUkp?lsZ1M_oMwz21|XP5FSqWU6g1<f3<S
zcl&7u4*tKe6RG=Qzf?Egsbo&V_bWc-{AJV6=6{c#=Srp6+ID}{X7|?5?>_O<?r-qC
zlgK9%=4qqi$<zs{gH}`@DOw>Rq2@8Wi{Wp34(x95ji~^91hQn_-|m|>X*o;T0t|7>
zO&iPY?GJR}fK^_T*)OUAk9w6OMb{xMS?juVGFc|qMYI)!@4#<KUi^AsBoM{lC9*<r
zHo4KqHR1#m*}O<p?1{wJvli9G4}xce%Z|lfI!67hQpDp1zTAMXD=QPHLt0GI*<ur|
zMBNa;YzPRq2><)J)V0}v)Nmz&#fBbststNNo<Vj3y5?BO1&Nn;t`$$<-}A7p0N+(%
z^_0{ga#^sPTu6=o&EJk5fG93i1Qj3da2xUIT;F(b9U%0-P(frt>)j2W=_<=e8aN!z
z_n$fhFe*a=s@O^)DciaT-4%0_!YECoW56cK4kmiVHAv6Gf~8qBxJZa)#>G}pT-gS2
zegAMFHK0Oey_u<^R^6B)#~R}iqw-Np%X!-mL2T#?hvs7+d&_@;BtLP+q!R0Z1T9e9
zl4;!uVTI`Z{Vagsy>CE00|SwNN+2PEY*!(n06xT|d(rLg!=fE3d%2g62@MRL$E@k_
zIE4VdNe8qZV5wl*$TJY5)ymgctt=W$gI8`&Cza_s0w;UH4;-AFRTM%FU%#fLTy}IN
zgocI&pD-}w>+)zhZ#>>zi20u9Gmo5a9F-rn2FK6Zo`Tc?Zmx^%n=L#!y@x{f{M8>9
za^8}AXs2VdRNnl0o*^!|h==^_?`Bbj{yU1*AU~3b98H^$uBU=yXkX6N6lx90Gnr)K
zVTk%l2-$gD+q(2KX5s=(sXktRV@gZZKc^L?zmHQgd}z3=InjM7euNL0U8y>6jhlU-
zdaB!bzH3uv$7AHeNsy7s57fDMcNDe)S2X?f@kZ+T*Q1j(&s(UP4oNIqjG5=%tN6{+
zy>76jI<`6JhFXk?uWSUWPD(dbzKjwN#|r<NErSZGSYcUPp(M^}Ubbtnd<j80eSn_&
zNV!RvRZCJ@xz^|X=%oE}t+f2<#)B`e{c*+n1(G5C6tp@$*zCP%CZ~ggq=RV#OU#B{
z#Xz<IY5hB6IijqTlqwV`;~h88#_BDfh#r$r!HGQ=)YsHfi{)$T9~+s)S1tGUTeMNY
zN$DttD^H6(b-!ZHU&yjD?!wDTt+S6jQA%$LBqC-<Qb3l$64AXE#pUJgdw<#kHwXdx
z<n7;@j<UX{sL2~`$e^&36x27|lOn)Ho{glUvY3tJ;|OL2g*(C>kEDTuR&rj>)59`F
zTn<VJwv*zxJ=PS!I;X!ltDq<DVricg!OApL(5LkazgBPd&d8qp)YR+KAErg=r+%6c
ze!lZ)(vBA>VL1GIvw@9=s{idew1G!y<8lPL*cbUxt9{v<F4*!$89P@%I@H3`2JHIb
zq@^H1v^CXk`XSLyQv%kRuFoJ`5S6^UOm++B_4Kg#)JbMF3@8^gm%18C_df<L`Q)Sm
z?jQdwtc(kn5gVdCo{1W*`!wX<4zAg31ik1Xw+XsU4!-=`@9blxNZ7|m7GZ@O*hMES
z+<>q!!9Dcra}=@NQP`NN{9_{cjzT|k3k#Jjo_Hv~3<T1)J;fYCoad`I?Ca?KnoTs!
zKrvn1=nUBH=DY~=eDn(AfY(&k%#5bAtc?Hmeq(QzsleoUaA^Q7In8g9hyVnFOPs-T
zurUjURx(i{@(jiH?z}!Q`ClLP1S1(a%9%3#8;kY$x8G7MMqTLGRbmlJ+n@a3N*EDZ
zQXfi$?FDKbn((eB6U=0MZHV>;S3yxPWo_F*By;b|?*|)dzyHi3<LlQuu-FSn#eP)B
zk1^N2N~=Ea*DFol)?%zgs`u~L740^PGN~3DH!)#<h7quZhklJ`HFOqPGKlO8`HVxZ
z*{<Fh$%M3?j{ijT4%zvRRzwS*1uHHeVC*wcFNiZ?#FvCSpe*#UK$df*iJQQOu4g>)
z+CpKi(|71EbhjoOM;I0>mrVYhxZCLXr-m?2eeNXt7i}!HpEws7A>?9gi`wno8=vpO
zPWLV(t-MRG@>I&S0o@}PkCp-dArIDw`5uszli_d~a0VvcN)o(TcW>EnYt=C`L+i3I
z)6v2VnRHN(TnPkU)e8vtUvL_9CjAZ#$*V!qOeZ$4BEKF`nx}a+k5B*}5*r`eCMM>i
zh;0X75&S6w0EkonjRnZXG|w+6^48K)BTvW?`#YzLDUTTilf{a!E|$0$;^TUpK|yzD
zK#^>2mbUB$+_D4(M~P=g4&j76g<<`T$XP}OoceZ%nHfZ2hveACsRp+-Vk;)CmrD6#
zcl&{pu7(^zeeP?YHBWTq`S>JFo;n*;Vnbog&CR;~zHf@jxE+Oxv|b0JJBlFMo9K!M
zaj5Fa<!p=A4e$XwG>;pWm?Dp9^M-*KxnP^9{QImO@%#6i@s7vj?~+d#78xs^SXY77
z^Z|D6mD6fId?Y-Qx0go!7YSXSW^k~Q2^Qe5MvlJJ+P01l=(3K|=<b#Zh1{XUBv#%>
zBhTaI%SC6VtM@Q>2HWwMqzV7ori(74#N)UGlF(@d|0<u~4PB#DXn>^~kvPh4cKb*T
zKW0h@b=iY2yDDT}WYgJt+~)Rfc^h^ekyJQyfbD+2r_n+!7!{r`w+P&jam4e@d$73v
zeHb-5B~^dzKKF|iy$anee6v}+p}}*JMuJj@3#V!>7RS@mQj9F67(0Qdh`5}LNRnDJ
z3WoUx5@c!xs>shzaRTe0@9YMAZf(UGT58l_qJf#k9h@XtM68|kEeP6A23cAF$KnGM
z33Z;3Quf$U8JJIX6Ka7<9e3_rIJ|lvw@nh=r}3N0hvvInWu~U5;hVqD2z+TnyD_d^
z?e~qC`(njE-Lq`ETD%iw3*Q15PEHOVxQS(e^?Lg6<c!^E8T#*-loJ}`;_H{SU$Pvy
znf&tMWcz4@>2GFI<QZb#7{qu9I?zHI-Wax?Y&6WRio&;v>~5h#_iurl%M0*f%ixrh
z2VPZ)DND<P3Nqg@@3oGL-tB8pIr{19neZILdt;r-k-Srq;1S-l{Tq^P+80ZpgsLfr
z)rxM);kgLuMa64P=|(%Z4-Ne2vU3^e`_EK#Jm%Kk!`9kns>pz>pGSd4?d~pTQ?BNn
z@zDuHm-5i<tCF48r%0+i!1{D(#$O6Eysm6MDNWv=D6$C}pBwO9e^q6-o`ee?6nNU(
zk9C6fZv<U5pm^P%=T-V58d~!FxlPOj!gs~@w!?<I-m(tOc6r2lVeCwdy#3PkY;~V5
zHSPj%>#-5AFZocNFI!JfiJPmK#qpZnF*&;*Ic>X}k6JOzh*LVLoU@{6`@+vpXMt|I
zOj%S<@4K=*lo}VEHn0mfXB@wD<t#uN-{)0SRGeb^Jo72vK(L(gVSYg{fj+Z~`7>|#
zISDR)wN$r2ci-AGb!E0!Ip=7>3*|F+p82IBPOWXey%0O`quo+D*#j>KN@oi3f|@pm
zzP2tmFCA?(u5blksq~kz*jgI8e02Drkl7G-;3(B~gdfuNaJe7$^XE^ye%}t2a%Ho~
zS9C5q$sZ0lb(wgZmhg;{P#(Te`o6b(;C*@0|KR)z5Zpl5zV=^Q)J}&|#>qx7l3?Ld
z)=mowdLd?jK%PnSvWEa~-@{1?Dij|HecBH9e)T<#v@u<W>v)TWt?hXCk12ff=H<>v
zgd~-`e&(}Le==sGL3dI8BUl)i<?pnjve<)bjT{W2(Czx|=}&4tM^_INzngzxTIAUA
zt|-0&iS2BdX-SxV%&lPP?R~)Sk~ta&Ozc)x?H=0fIHdec#3$okxIQQN@!|W1Cm?ms
z)>t&4AvrUk@z;lipnT~A*O!zNDX#(FCyg-cb0kau;m<lb$Hm8;FU?FbNb8;tVx?>b
zLRZVP=TiRPZLzitT>kWo>wwY6>joRx@ZiFp{I$$ImO{CWjkLHUA-3YxxHxIHD4)Fp
z+)J2=`BK6L55wutXaARKUq<Wq?+J)$K1Xl5^#62k@_L4%Mq^Sl6{u>2I_}dC@}Isf
zBBNoiemLAXh4)4KHUFnnEq7LLZo1ZSBD>z=vR`s)P~R2AIDjncrDSYuo{*AK9KAXC
zXS?eKWdE`XT6$vtFYBKA-zfgrGWUy}u@r*P4^<tFXpsFi``BpI4zhwV(OalA0T|NY
z%C4u!+gz|=?JIW!I$AoZ%n^~m`&7=aBj2Gg5T7K$&0)#&M-sk3uJP*?$-Itf8R0K*
zd_lvgAuJE|0d2cSI-n>mJ<IUr8Bwcx(H~Y+Y}8jX4$q67ad=dB1X*22K&^qJzr9pA
zxj&sZnx+@27L8b2Z@)iOY7%{z-))85sb!M)`o7Fn;RP6%fj184A|#ZbVU{H;B}C~R
za%5GRX<e6(<f6MMLpcJ4BN>}TGzu0kd!tvhIlU*6dUOpZ+5vihIdC1^l?B|+v-1Aj
ztcgndq5!;4`Cr!(vE`y`Dkaw}e9{9Mp=b#$(g?klAj87KvNS@MVh!GfV+@vTv2Z%J
zg>Vg@)_j>aZhz$jes?*#r&?K`od#o5ch(R#)x;2Sz6J85oD6tZdMty|ls&KHoE9$0
zG-;apmTiSzo9Bc_OhMI~1Cl7gLmG$daN{)O2zjOtsnv7Ktw>xWp_^j)RpdR<-DgXr
z?FbpVEP2fH`W8kvQPo9O^Hnx%KV~!m`AZ>FBRGUOq<!ORzR?!NZuDEv=o3`VD`#|6
zDrb-w-sbIk#LW$YFAR)c=aTQ<q@>WNG@!qtF0RPIfoS7FVw|0vW)4j1;YuTo6N_=y
zChQEk_q4BBEXa2+GIrd)k2%#*FpPYEgCrNODlE;I5^QTI>}hYDN$>;EhYrQ>ss3u)
z*zc1?k?iRAOC*ypTPbtlP(Sd$6lmXd#=)QSkz@a2qPhE;p>L<Ql}lx(Dae}xUg8*@
z8y=Y;n@yJ}$(xPc?G7M19~Gh??`vop)O;eZ8sNvv7IbA}%Xb%R)X(bB`ex&*g`di?
zWnF=v!~`98=G2ZfRZ)X~7)^Qt+84Pt5?SpEcmWJ8FZVZh<#nmq2C-jPh%_p5o`fJT
z#C22T05RC{($P;{<LLU(94199?g1ko^DqCKSW5(K!bSJ7=smr$4^;Qwl@DWTqRpZZ
z+(uUUE!zML?(Y;`gMJbYX3Kuhw6lx*th$~Pt-ufIp0Hbzx$eiX=&1i#kfpt7sG~#3
z=HR+~X*8(2CK61_w(1|`JVG&=FzeMGl+yar$W4_2vsC>h>9;lHm$sW1kpSesv!D|F
z9TO8jFtp^N1om#I?(|+FC)Y6cbC;GBo5EgR!K9?5lpm6DxJxup_ZFiD6d<idOh_2}
z?^~$2cWU$^tU34W>hyO_2G9>>ROa5W&&Dwm(~|P=G@P74{9z_JJ}ka(il^;>G>9~c
zIy+J~8Uj6E2@rPkaRIBxU?bOq`IOO|^x<-P)~KagZBrGqTjH>4nO&KUe;M1!gq*nN
zY_E#c9=4Eb*?>Y{N&I;ym3W0oay~cSS*apkd$;pjD4*8XbGRFP!@Jl~epEh^)Md9N
zcs3a^fi|6rc+<c8pkzIB+0Ih3!d3Y$9oICU5WhaE<Te^ZfKF4ZW|T|ZP^PB2Uix}V
zJRJ?-S72y5cNJSn<)Lv|$lk<UHF^ChvQb9cXdtr+ie+RV%Z%06rb_=7WDea4ATWCS
zkUQg0P+KzOQ0&oSYNjZMI&wyUCL`8G2C3nSf_W9H)uI}u<qF-qeY(dTik4zFszlW@
z%7D9efhtN{Tg^Zf#J08-2aw^U@Zjt;ivw+~4|bZmlTD3{*LwqBsB(}k0R-M#d+V8T
z$mAR8|2KKn!3r_<vU%5&C1l@=TlgAMCppGgczt?l@2zX#&=O#;3tI~kNv@T@I1Z3r
zYhWDD`8(P1kd2oq!hPaIQ#Rdyw>|}!e!UNM62uux+ckB&-SBFI>$Rk&{5tmXHf)-T
zy*MtBI+dc!Bv@P9xpr%cM(2D?@~g8kLhu3-E{-;O3|G%d3caed`mK?O$jhN50UgRD
zhvOPQ3O2Gf@*5HWwEKo&ok3M&b3a*{=1WOo5Nb*_eK-;W39JXZX)wsd#$zp&_9l9<
zk!VD=6!;zeLuX_bA=2ZC%Cyf`Aly^>Llucy+msONcndnqPs;CP#6j#+LKO>B%*aEt
zfsK)GoRw;c0N6NP9bMJc>sW78Q3tWsedBAnFyc2GQZzzf1)4Ej3OXbayJ&p4HTbjw
zmkCU+)Qu88r}`gemwWg|aVy;Gb^VN=1pS<F_8@o}@C`JI@}mCYv(CT=lKK-3hcXJV
zBz}IOY8_`8qwiWDejkj7s4}v(lJBc`YLWSxhyC*NNg;9crYtE7y~Z>p8IS4w#;#)p
znHT?ikNO~c0=k?DL3Z0Ip~${VQ$;AYm?r8-jHMw0OH05mMj>k_!Q&^r`8oLg?GJU;
zP`I?yvkyKlIwxuv8t#arP8#wXQd2Ptbd)Y}3f#|H8HTjUDWys-xEK*ua#$f-pL%vb
zS@&k4ob92YR9jyKLeDoefr>baljx_^z=%>$O~w!c8Ipc{|1t4-r)+R-)m}yH8OR10
zb8tY(Uv5gN1eCG%P}|S8i>7XpPpTm1n&nv+3sW+N61NO#-rADC*62X$db0JhTq8Gs
zcx5ts5~&jh=yRil4CgA!DXg$78h5Fn2P^GzZ|l^6da9{`N>u3_r}xJ|8S%3IZ#m^l
zNQq6d>lGR{DmGv0p>E=3^q9ZL?A&j{#^mQUZ)s;|^&-cN`!F{LaqIfkS)#`*#o_U4
z73SI%2D!3HreAHyUu#l?u<nQq`+;tnK=Y4hJW(*x82KJP)L`>B^z^7mqO{f+B=X&F
z(Q(y~(Y(;9MaoyujL^xRlxQBJTTmEAx(gGqbJ<WsEhm9R5Q9|PFJB-3;^uK5`2&@J
zFDC?6b;J6eZ^-j<d1_sW?h=2n(capyx?~C=Ydv#F^7((i_(KbA{Q+QfMP|bQCpPS<
zYT?_mg`;kz!LJeoFj4qWL!9N{dhSn=7Ja*{L%!-Pm8?OjcsV)ibz0c6>}Z1}F~pAJ
zbZC9&U)$fLSD#n`tsaAzD~2$)O<BqrfzIg3!9TD8*g0E0-`o{WXI$^)(%`l_T2H>b
zo%78!jP}Tu6H%HvbaMINs3{T%VS{gmRee;PRpx;PU+@oF==o&V#+90nSEt0%J>ttf
zhw0VF)7C(GfMq?Llmr!*8Ee+ECG%`^Fm*grw5osCq{bSp(dkY|{C}7K4$H}aiXj|!
z^r)(hsr_!Tj`D|3qEGQV!92J^B+t4NoIUs>fC?#C;R4o#985py_{!lor((~BpfaEu
zKwJwV37$t%>iMBy#BE-71f|fcAr0^|K}W$ldtLM2$;NC|<LfHJ8W@Fpg<%b{Nt27(
zt1FOApM^gn1U~$p2Qv=nGs7{2!3-RGgjkq_Y|Br0e*--*9s?-?yW)gLA~z!VlaVH|
zF{v%9ks~lYAG(>46?Fpe@syaN7#mvga2J6vQqj2o{vC>DzWZ0%JJ;<-G&uKU?sC<T
z9~rlJ+JUdzfv?v=kM1+t=V4BRa!djPIV-E$Nz33K#H;xEyM(Qy2ZGd?;^_FN1gDtT
z>ncLGof5IhDM%o4UoxU-BxA0v2a=@>KzRp!9e1W8w1&NT#g@F?#(;r*&wOG}x>DIh
ztv*YkVhQJP0Q5VhE&q2)cO7hP{O(hr$RFeOJ9QbA41qxuwKqC?_2lcsGY;{SdZ2oh
zSba)43h&Qy3Av#M$Nl{*|4xpLmxo7HgffmBia$L)&D57q`mZvXnVG+_D<sseKLjVB
z0p*yuv%;;B`a@u_&E^*fp)1z`7QiP!_4SSvtF`?kB>2lr)MtPmdNJ-F8A7(7#EdBN
zxZS4*DCJ5~Uw{(jbmkT_#I>(`#dlkD=Z!q536kI}1QNshf*E?qYNolkpvANktNoCv
zEww8UE>j#|U@l+g*t$5$$3O_t&wPR@d169#ucKxCFAFW`?dOJ4JDrAMW^KHHh`)dj
z@F*|~sWwH7SxAqAf!Ti~tn^-R6*Y&&G)3#(zc^!q%ldf0X#fu_dL8*nz!Uo0AGtlM
z7hzBk^$>oB5<!oNr^WNF+IwRfQ8|W5h2L5uzLM4JX(Df-A91)_|2@<^;?M!8mA2+4
z6V|IJO{%Dc%ByzYX#eo)o&hguYUi;AsIy4ejH(CYQ`YTk08)Z4z9W~-WHlF7*~a!*
zHXn6HT7?r1;AhqQY^;wL#R0o6Z!%@lrEKw;?lZnpNDF~Ye<Bm$cRtNx{a&Q8)F@S<
z2z9iigb;#X-O>_)(e3MnSSx<VFT~Z8oRa^duRh=HtJEs~-$+En&n5s`Pc~p{E1jNa
zwY<vFtI|)2Q!>Tr9N$DS0fMsD1Yf-{SK~PVR<hBHJGl?E9Eu?XOu<&*V7%8AnsF5E
zD=kdHyQd+Y0TpGuP5&1WCS(Sixg(?ZuPdM|t{S#|e~ZF@x+JPs{fwoH;t1{yB|<l!
z+VWS4MrK&ZO(G+gH_oEDw_(YTSotE-^D=PU<RwEFmG8Fy|D7Ig>xq@BPJGF`HMA<#
zqDJW?v8`9{k38MUmAMp=QpL6Z>-RpHe7&adCh<&{323fIchsL~VCK%v(d2xE9Zy{K
z{5SgfkOzLlSAI_L4>hP?4I0AO0`5)Q#PV88T_`j1zeuQ=Xq!>#n^lm%_~;4%q^^Hn
ze-z%HrX#N?)^!%3ddF=daq61B?hmXc#7Q;)TAAAZWWnsc9oh2t0Z*o#Y`h>9&ZRts
TcKN9S5Q{2UQ?XLsGW7oecqmQr
index 423e5a1a49d6754b5fcf13cae7f438472c334d7e..082e1fa0e448bd0b947e9cabd4f20f0e70d9ec8c
GIT binary patch
literal 38669
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
index f8d4db522761912be7212801f3450216645d3df8..40836b4aae5a51977cc09c81bef249c26f1bf2a4
GIT binary patch
literal 66288
zc$@%}Ky1H>P)<h;3K|Lk000e1NJLTq00FiD004*x1^@s6iw@2i00001b5ch_0Itp)
z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RU2nYx_6o~Jkm;eAE07*naRCwC#
zy?1<7Rk}C+UAvxs(nAU<1VTwD0s<l`isFE%GvKI<g|VVn9d*=u=bdsLXXeh#I~K%o
zK<p^?Hue!k>_`)Y5LyBuAtAk;y31PY{bTQQa?%sT_xIlWbA3L^IcM*Ep1sd5>$|?s
z^L?I0@I(8d{Wob#FI{^#fZu;tJDr_vc=x^A$PZ_9`0a+f?jiu@8@f>nQF!Eu2ObFZ
z+~(R_Z%<ZTju-uIS7CcF^rKaO{p+E@>^}2;<%UeZG$9%aBOHuK;b2${1*1|V6qTZ3
zO*C{<O3q3Dyt2IJ%2j_~R(+y=&wcmZ$E|l9ciwr|5BJ3XkR}bZa>nu*Qw2f%ksu1Q
zBuShgic&TJP-@nhCM{=_ea#sC*OoO~zB!(qf8X|hXoI(sU*)(xNzNc8dbj1l_8`LT
zhNpUUAauO8?_IIF1i(B1rvR7)Am3hf1i&r;n*eOM>-HP>3<1<O0+@UKO{ZeY^rGYb
zy*sy6;=aGUGw62jy|afW`F++00RXeRKf4=b00;oafyVkyTy#mvfSuwakF4QC0*)J&
z54&?s{?7x)4fvg=7d|Nf0KaehL-9R>ZBH2!eID;$OD2z=vSaVwDc9Zc%Vm$<{{ZU(
zzB^TF(C4nXZ0Y>g=1y$<>a%nJg94jJq$B2^GHOJB>wo#kZp@gHbVgMNd;7*~9$viq
ziJL1=1gKqh*<}e!2*2~rJHIz@Bg?nl4FG)2^n1SV=i0w8X$*i<1%XT#M4?m=g+f9|
zrgabV21eOoMp+qSd>eo-JKk$Q_&*-lk`^Wx0QkAj=eu@7VM)%oys^km$%e=2u{ym-
zu&A!Ju4rHN{`1QZ@A<c+g~^Wtc)I<)wyL4*^!v8|LmPT?dQ=xBI%fU26p=^>Q9S~K
zN3iwzC=@q!0T?#0-MeCS0f3*o-L7RLGSdsv(^BB~`QUN8z&J-B5Sq}|-Z7!MrR~zD
z=H{w<SFBzO;OV<=zp>xz8;yqNE?jsDD)t6(aL-O~a4^QfIR~Q*j9Z^6<zS3~aSBE`
zC}s9?2F4i9I(O8d$N$vhd-$x`MKE-=3&^+yYMcX%0Z4eCoUCER{hRsicg!5HQ(V6M
z`T_U5X3e9=dl`S9t1yh1$k19h;yAvpVrPx^djLb}aG7bE^{3A{6&V@nm%sA%J0Ajg
zCbm)!>z6D%=d1+<`FZ%)#%GT;w6xR><p`pYXfNRB01O6D8#YS|lCdFt>ZJ0T;M><;
z`M~1GpZVp!q1gV*!rVUs_-*X7eAaE<)<5^$bGYoX%fJ}JAO7$MPAP?B>l2Ba{ONza
zcl38B0MveOzyIFA&A%{dt{{-bg*k;knKpiU?u5MY7@08=X}&bL9c}<XC>qLZ?rhGh
zX{<S;ym~LT@7;Fv@S?+SFvef+c(47F|B=9!v?zJ*_`>nOoil09yyB5#knBxHM2n!Y
zvk|qewbqRx$?&?oIDPVIm^i95=cMAPcYm?#i#dB2?fp~xJ8c7=nD5&@0Q?ci0D#{C
zjYByJ!`=S>t5*5)q#OV!x_DRZiL&YNNIa^U2!(=(L_*MvC=3?0ZVngtaP8f@V)a}A
zcNC4vUz9&G2T@H!V`B^UA2@_yC=38_yIn|5@*_Ph1=(4d1xIU--Cc9EcG|rwR^NZu
z?Kk#$eH{)Lrk|XRZ@+DXX)+Xzb%9a_N*PRp!=wx*<uDBfYBCt6^_iL+)MVfsI9k<;
zJ>Rwu`Wx!%j=<%bfDXN%PKtCfHx9t%RuK#}4{A3Y4#zBj*xv;>zAHs&KiGiwbU(^A
z0Km~cx0yOV7jyDNJoLelZtwp={*Kf2k1(<QnIY}#vHS05SKac9x61bI|Iwmz&cWB;
z?D(&%Z@+EBlPeyqz4rFoGCe;3e@s1TI?5{!;Xq}@yH7v3vSuiD4P6&|Eu(<REN}w=
zrzGI&A{|@Ln=*dSM}fUIX&y@Z?UGre@XgK!9G!g~&RcX92)8a|M?1$Icie&f``U29
z`Pam6_$MO~OsjYk(@x67tD6q}*6JR<JE+A5BHsbr8~};|WG60EMk+~;F^<!xjz8(A
zXHGpcZDQd>c$^-DqhUn!2#z!!fk{p4xfUg;vWihzqflB{iiI;4<nBJa`<9L0Y+SlM
zy8V^t!RTjtjo$v>2**qSy8$%x32e#dr_4Ql%4rWx9Xoa6sO(V)L;^U{c%<tBfq-+4
zs1ZeHxD$jBI29)*6-|W4>7JL7l%BEE{q5~XUaH#A*WU9lDVR5<c=C##_BrPuga8~M
zgdl1}5r_n=o4JSm&&cP$XnVW$lL0{LoH0aLZvw_2Ih*!7>jw`6Y7+~Iuw4S=KXNwz
zcfg0kI;FF>%@;)BTxXhRw&GF81ArdX_C}h6Uopx)z*p1P+uO|run}KPC&vqF&a|`|
z`~Aoh1#XP7@bRqc57ZnE^{?ZKi)JP#`*E=HFenJJM`mNp#PRU?{onxFTiemt(1@Da
zV-OfaZca9w4(Fn(>gx1+SFHY3f8Z8lU!1Wxd*a*z2+jdcd7Qa*t><8zfHMxt=+J%$
z=U@yFgf0Lh++uBvbpaZOwGCqfn~S+2I|Bg_aH~J&+(O8>H8P;fa>tHuux8Dge(xQn
zZ0mr>P*%1TWdM{O?{CK}0JDJ1VRY1@uyNO(JsopTJ=MSTCqKzu_2iSk1aOC@>F12k
z%$y*o1m%17>LL+78mdh_+8x;R1W?oM%l5Zdzq9udlu~rGtKF7u-W;;eMmGit0@&B<
zyEPlYP6$IIgya!Is6d2WoLF~_bGB=ynyg&;vvYs8VAh0La4Jr;huU$h?O2~SG*d%J
z>vF_66(=SZPQ>V((P<NlCf@k`2hSI1h5BRRuR@y%N7q>(_8^Sg!?7Np2{?Gyh|RvI
zt^1sCfZOk_dmkX2SlfexaMJalabj(oIEqa8UgA!y#YAL`CIe{ZoYQW=mi*(Cg3-C7
ze^XLaGBG111JzB{_PEmO94MnOsDUVp!XY>yi!ww(gr;j~3$`I6B?BczB@>Ue*Z)dg
zrc@nRd!XB0SiG#bD9M-ntDg1;vP}r-WxuZN*l#L+Tv65b&(>aUt9yWqQAAjOvM7Rq
z%Wj74_b@i~ZlJ8M3w#eyS}F+JO9ep|KtL(h-@{qv-9uq+r)(}DqHuHS*o@__46jFa
zDG(Lw*`zw1WrX!v;l{xA9qyfLxXHF9k4}HV2<vG7YWO#E#Y?3VJlWZ0zU&MF0HUJQ
zRJ_DWM_*D_J{&vCmoFcws;*}yPM&p!Lv?b-z$pV(HQWr%h(I?Y(2OW3)2w(&+Nw@^
zKLulyP-+Ut>h^u5YvIe*tXWglkNfeCam7V5T`ni~9XN!X{E;Z0Pz*_uz&OYC%YTDa
z|M(-4(^8R=mWrY=W3YekejGYdgRG1U<mKkhtT=S&j(b<EuIkGzX&5Zd(m1m~j!}R!
z3y2s8I0Gn;y|<QIuNHe7l4H)PSkI6E2&Bv9C@^aoi?KCoEhohK&OmMc{BsZqhX>uJ
zzqVsX|6%5WP(3z0ekS(!M==MAu}Nu2lQ^#Zk56!Th~JSVsj~Liu?<J->K2b1JsJgh
zBd@*k=9`~ZW%-88%ydK}Iw}tzIx30c=R-XXL$iR5ConagS?>)BoPSzAD6H6KBt-G)
z!EcWX7^;pO!QrRxu<soT#yJeb0HYL?Gcd|PDMfNhiq&x+$1rp_G0)+|I0aG27l`1L
zB(aIxfTPY<=N1$d{QFPOx@dAqehHcb&1mcxp5sY3b##O~;8I<fJ9#eBlhPNw^6{(L
zRbtiO^slr}x&ab;fL7vXlHf$P!N&%kuCEgw@Au<$iE!I*!Fz*ZY{*B5{r#@NXN(MS
z!YMTgIHw~h<+a^_jS%wliK9!;PWC0^Xw%WyvN-UB^)NK9;k@bR;oWWT!a-Cx6&FOo
z>deE@Fp_=AC@m^E`;+aTUX|$61^|=Mt4fPXy4eQ+$|xdw7|{gVDpBFGZO4uwW`E-7
z(z7dTD}UbCjbi|a0*G=B7YN1>LDmSq`7LKt|I`EAehZY2CBipjh#*UxAPkPEZDY_j
z^UDI+CH^tBB>QqT*#)Lkgqk{FMy+p44jHmrg*(^haiqKM;EY3dtLQx3JnV<$;0qIS
zJXs^kyjdwkR0IHkH!Fp3W|kd%fsGuqw0t<sZR(E}TsXIQ+-&^w&5y|Qd>I7Y8H-_A
zZb%~vgXsVSJhc1QA^@yh{4qFZNKen1y=}|eGXV4z3;TJ|sQg9A$$soRa0o@?#-OOU
z$clHd`1lL&y!$a0{OC+j#sNV<$;1*!ii(=bO5|o`VMOMLMfDB!+xxn{rb%I%)B-nV
zfl6XrjoY8W0Y*6(CDtpq9xgf<wF2;~J741|DL!zUvBf(T!FtSM@wIMlNdU<yUfgxp
ztNh-3FY2=^T)+N9e4nkbun+|tV4Q<;Vs+dMFgXXM0JUFD4$DQ$I80^%2&2PeC2Q`x
z&$#;5Ti2KE-TRX<MMY%vs3PC)^1TnGCMVBG^(Uiz?_P8U0=w7TcVFEwfK86MAHUvI
zX|ZDtj610aItB8web7xn<AC8dj_Vwa8j}n(Z0y!Gg8)Rb{$lil5P&eCc!D1;l^)No
zh8go5JjN+WlAjRbQB}1meosylXBHF{{QJf8emXfXBM+7J-;L3Bm>uW{bs#@89~aO2
z>ExI3%D-2!stDU|ZUzWSOG}fa>GG$tDy0!}Vl_6@q#c3Qz-<R!Kd^piG`PDXT9(kM
zX_|-H0a*zEQZGs?88x!->U4iP>Rao<><++k<1j?D2qG+k#j_V<;gp3isfjng{wH+P
zfGVko{m7^hMY=y78R_X)8kZR_)jU_d8vsULmNzjYJ^jkQ>}#fmuo=RIvwj@6{rXq0
zBNC0ksX8GLp_l!lf>BqKi^wZ2uQqp6)BOo({1s;>DGXc23xezhFj^2~o#C5bady&Q
zfjt25E1;y92;Ynr1X%>o0*<|m83#F=@z)`+HA2jr{bO@37d;X}4Q;&hP~&rYTlh@?
zU)r0T>dHyF&^IRYGR5a40Kh;&O>I~g`@p(!6Feg_%e<M%L=*|QX+6-QNZ`#(CY;im
z1M666@#Xu5%G}0hW@aEYMaF^!3*g+h5>Fhu6{Aibfp9bg!-zsRHJH>u_L&s5Z>zZJ
z>_5Wca3Bx}!0kx}fYRm5m%p-RO_$5;-W97$+-}#h{E<00SXqUf{E;XsE&}H~?y_Sx
z&EXuNjDy<lL@;1%@o0p@5!BYzVMOK#w6(V_yLZLvS9+=?b&bN*DJWy0wlIV;tHWjt
zNYC`5wz>_}<o1Z1gEJlnJVplxw!HjYs16yNcL7_Bu_d}6IR``$ae#F=6y)XS_G>qP
z<{97V!5@gR0Won4w~ohtwf?O4X2N^QV1Zo1vSA13C27O%^76X5bLQlnG;tz!?D}?Y
zR(d)(IChoo;U=Ze4#%FM8zO^sOp~V<#o3xp0a38nu|NP-1O$m7H#cS2$DHI=Fm+UV
z7oZW2W36EbHZzO$)dT<$I3l`<qb=qMk9q#$+<ZLr!IAjuZsWp1W1NB@q$`RNk!9Js
zCr9&K(Jx-NaQ1@9=}GCRZW=rT!g?NgoGm5xt%<F=sT%1?=~y^>!Q{spAG?l@C$&Na
zIl6!U{`N7GieH~rI_>&Ng%eL0s4>n^ex%&L>D#Xt%d*@ju=V7J{e(^gLP)x<>rD~>
z5P{6gPRkjonHs`+I8GHAXNc-iXe^40=Uj{nrd<F4xM11^pv=UZo8N@VT@Z+1gD8hf
zaUnf9W8~4s+Ie<B51jCM>B$-0?8kmk#0=xYnHTo5{qh$tBVtD2P#p0K5VN11mNW8j
zZPh&3K$Y133hewPXHy~!JI4!x>;h0I2y&ER$1gc60)SCO*ik45G6B#GU@v3FKF+2*
z01OTgQ`gUT7bGnwE)k)IR^GAe=skSv**!;EuWItfW<AGuIUGWKY(dSTyNdQdGiHJ}
zE4|E{=_8^97~vrFkoA4Vtw2&0cr$$j%q-jg3@sgd<-zhn+>nabn=;1jazl}U3B^E0
z=Gn-~{0IKD=_aI(S74YrC^f)AQTKKVZeRE}oIds^Fb#@eFbGLf;r68Dhk~sNfJBs@
zHzG5=K+|<l0L2rEEe2&X2n!f^*I>y88_GBgX2RiCF{Zc}n;IHm7zX@4e?enYW3TJ0
z=@hzQ0h?(uOZCVYDCaOK$Jp^%sH^J$(@iki)v+@c1JuEL@Qlnf<c>`13W3?)5kf3C
zB;nm%{;^h6RD`27{WJ2jCylk@d^Sj$b{sDTE+z#`*2Sb~>@&5#GkE7<xnW~*K*}wq
zN;$FETH?MEL2romd$vdKzrW)8JMQ?heE;5yOU92!QgSBt9%+Ej>qk>#ZLJ8rH!NT?
zsAMt@oe_Mqr4r0$$8NWZ%7!r9GJ_t~5Di5U><oetA^fMmycwm2Nrsc-Mo6qvw_Im!
zQ3lNY1Kb&T(83Xf!#ctt4Z)C(aM(a3tV5g1aR2!kpA095ZlIXwBV}8mB)m?;ZwHKV
zIvkE<Ns<(|%iSJ}S!t=-#TT4@!Ge()BT?I2J0wuELOwd8T!RD=il9OkWeAC`3A@!c
z*J5PGNL+CG1q<Hz=#6sui1GjkN3bdQ%I=C?XN!_B%IoxgXHXM}fFySkax-#~l9I9@
z@4Wo8>pwj9Q5P{wcmTQO#sskj%<&i<w;Y*@qI7n4c6tC<z$Pi;DL$7MZJ{<W&f=h^
z85(r1<7a3542x$hi66|%n_tF@pT7u|r~r#}Lw(KA;CK5V%EBoC9s~eU7EbZIeR2DV
zCtEiSto!Uan4IF`nHK{97SC7$lT$qZ>GOyf5vZ~n2RF^o;B$E)DdH&r9_s64Jph#7
z!r2s!VP`S1z%8E$vK!<O0HhHjfm@(<fHUI&XH)(@6i@>|h;gpqlRSDjgiuB8bA5ms
zFy-yJO166=lR0!fO1kLw&=}j^r-~+cMx>Rw)4fCx0X-B#puQcxX-`@%gY8$tJ0b~^
zD#M-bC5)P7d!J&Z<FBe5=r=f%k~8w0E*EO*fYAj&vL_u2Pg)FSa{PJg&2SeP;KTy8
z|2Y3%%pS8Crb!_P0z#n>oK6WIPjX%;*y`#5Y^S8BrJ$jq8QCMVt(cnaevE-yB4e`{
z1&=QeYbKIBPNbw~puMRPUXK@zO^v;-uNF06=q4zS#oBBJVsdyrDqL;_`2}ex-+e5>
zenN*o05y61(T&&V<)y3{Uy=uxQ^L+~E5Rs-Zs^dW8Y0msLZL9i;V=S$AUXp<1OfpB
zLt!*FHsUwG`7M%DW&G{l*LhuS>q8Gdc<rs-Iu;w$Vjx3#0-K8c4jW`B<5>EM3Qh%Z
zlYr?0P$~}GaeYVou5(1-tzpX|9(`l|7Z*LbzCu{{$ss_am|0bh9Jlh^>#P128IC2>
zFeSrgY2&6AK{sP=Q=t0T9xOSxq~}*$u{T4>aT7=^_mJ4^jN5KU4$0xgS!Yb@_t=J-
zLr0cxyPL0>e$Q}Xo;_onF&l~7h@zP6@pyu=B!Pn<TpXG{cFfo-^Rx21iTefuHO817
zPKx4!nHS=~vHdt$eGqQh4Ovq9WNt?qk03uQA7jUiz4D-b@H6)T*S5}W9py@@vc9hM
z*bVua@__q{0aJ{~^yj|hVU8qs60*`pNcHu{&XQ&2qr`zDv0cQmxMJ6T4o+-^aTmDB
zgg~@_O_e86P7yY`g4>3vLuWcJpL<0dZ~)+iuV28kpF9hh%b+qvlt#LCV;_ku$q*DV
z&Q%3PoM^&CM340Nf!4uNgW~CpPlIxbrL&d-04|<+F({*0_sO#`m=0O$3eKyN3Q3hG
z4RkU84wT=(*_0^w&M`K)rIT1pk)s8`LC%ay&Zj&wL{I|&!7I(C5(n)Jz-;Syv+v=v
zvC#~NL94po*ygdp6}06~6io1BrtI;gyCF&(MmU5(Lnpk`pMm5r1^{@bK8en4SHhd=
zgQUvvq`L_-Q}&cUK}#lFQ`O&ZNli`}G1BRD;#gw<W&0eMI9`S#i&!{qF?5sTz8$xq
zwaka#EWQ_W#w>wJ1xOM>RaF&&!64l3ba;Jfg$?zU835W6Y)?w^`?3GPA&i+gJ`Pwh
z7bLTpNPOf-dAH?Z%|xc(1&==k#||GtT539AC3JUdk*ERPFu~%C&FZX8%8`<0jUN3;
z&bX)~#th@4k^z8?b7QI3=SMIQLT4w()~(y1$TAGWL{!tE>pCKl2*TkAB2f+Da2TO*
z7?DU6?XBOSwyqATsi_z@ejGYGzM0o6hF}8<v*TYe=EQgci?ZWiCIdJnSbFZQARsVI
z9nZh;<iIhC@7aEztV9yNczg>jkLdNKH(zoFLI%N8?|uu}l`(8(2cuNdsilG}+m^uC
zJSsHZ=rhDJoE$eoI0R1OjE%%tH~=lGeRum^lKy*QG0(gNhHOv{-Lzh<_tu|b0($rR
zvRf*E&*zgxQIy?ocQkffVP|+j$*7Wa-PEBO+TftZ8KQPLY00Teu;`>k*q=EXZ_>9=
zSyKrYbM?vE04p`1WK>D|!9x`b6jj{@07lsOsG+Uln#|M;Ip(eF3rG!Sz~BaCB10A|
zX4n_F84&}bC?YjE6_Q&%&0XToFb^7yu^5`IIT;|iqidy$QW^+QzhtTG#QgeT1DvuG
zlu>AU6j2(%)$^{#(o>dpxgRz@iih8Q7y=WZI21^t1WAw}3L<1thAb%%1rcrGHV}#A
z#V@)<@)|oE;Z$7~9X53s)Bt4^CNp7D6M9s~UtawS0+9f&KhsKNU3$t=M2s+=-0&nE
zq7$m(u<S?MAu3}2U=Pb9K>0PC7rMa@=YYtG;_5nZV;|>*PXNP{%`0TQ2?`nx1I+lc
z&uw-sCdRJe)AF)M^QL$*{98O3E(jur9u6Z=AAon}I!H;yvEmnyl8WJ;_B1*+Uk>jG
zFC;~RC&L9!{X5GZ&6`nref7>h%;%=1Wfn-1ii`{i<>iOb)TCnM$ZTY!Nmw{_F$|r;
z7z@msxERr>gg~GJM~@ywTU#4E9uEKluQw$dz(@f56GKQYrvt%I7``Nbx42rYlZ`R9
zCszCcXU_YmYq>obaw-y>ZV#eb6soEMT~$irEgCVPYbF?H7@41j;&HtL^CR<;ap@J)
z<Dd7HH)8A8M-hz}ad7R!eNTLT_cV{k0}z5>AZWW%EpQe^0g@!a;ZOl$37#~~R=`q<
za74nv166QN_MxGn9Z^jyfmN?0b}B6QpzR{039&GPc8__PHnZY}U@O)%=w=j57YB(i
ze82YlY7hVK`!t;UkFtUhwDivN$G{{q)_+@%+WMex_~HR3nGDcPVAN!bv1z6i&onE0
z%hrdR;}#qB6LiJX1Of<z!!*tBWWSF*wYWPt25Mb@NB}fzpkdHnJ$53vC3(FbQ&m)O
z!qJ}5k(Zg7abB`F8Ev7qp@EtnMU+MH(>XuI1=B7B0F2EZhcR_~QC?jRiAoT7-@vAa
zbR>I|k(rrsUVErxZBnDZn(btpT6`^ATRK~2``!M2fHVpn8Wzu5g4e%(4GL5^R7byY
zz0OD{+^QRXuWwXmTIUqCMqO{gRZL+Ca2wqSx>S_bWwk~q9Du4Sk#IQdv|?<cfTm~@
z#IOjH88A!(T;PcIaGe?4M1)4b86fFV5P{e}Pm2ypf&@vBK?wyTU7ZLc98Fp?#HeN8
zWTy4B$AX!R!=x01Tl?tNnVA||qOBl|K$c|7zCb}lVQ3GGt#s5Am7?~t<Iy`YYQi)P
zaB2d~#EELVAIZsZCOLL^Gh7fw1|t$ipdkduj2FRtV-f8c2=R@DI(;2Fw_FNurW=wX
z!JFZdjYwq2?niPmC*DxoQv{Qfl$4}`Nbq@p$&(6EbF>4swe@IealqklU`FB3psGMe
zhk?${7IbuUfDnR=j0_lt0ZJL1E}sk_tN#v`cl(RG1UW~|o=*V)AFlrtbI&|2zKzo%
z*>R#SMPpwr9I+T1r3?r6H=w?*6VqlE!0ql^YQOQr3RE6!0q4Y0Q1;E($W1r?CCA}Z
zyo#zq6hySQwZSwDa1I0lVFZIA1Og!hLtz90A%sF97^VST*P-b;+B-xXtf)k3=_FKC
zR)SK7MT`D@(mU_`ZC4D~D6;{Fl7x7d%{Y02>(F)=a#Mgwb?9akx*i4B1_qw*+kT(z
z{3nYXD$Z%?Xu_YK{17yKG?H@*V4&{Ljf>Xoz&p#g3>nxM7j;{;xqnBcb-e(1Jt~YI
zjO}=G+yuhou1JB{`A~!dghSWpcedZlwaV?dDeeAhm=?GhjN72bVY2>%oQk42Q&Q3*
zG0I}Nny2Px=a1B=25o@QMq)TgV^Lgs+NJo(^q<7nzqaL7y!^$>P(=rH=pd|rm7^$%
z$j{Cn*;K!MszY^DgL8zUksWQJw%Janv)6ugQ%8hHaM7%b@Z)Je1_Q%OU%mt*szX)!
z1~;ZLD2f8F#|tXa5~u23-;IzZ?jxS^7KgrgdK=*!s;Wwo^*we(RD=nJp#vg;BuikF
zVb#a~fG7#L;fxyr05{LO36dn>p%4BJFb+|YKm?NTqW}XsWI+Z8JJNMr?1(4{6AWhC
zCsOy=fN4ThMf~F2TjKiyfJZ)EZ6AXOK@@C2(jm*;?f2J~0Tc2;b|!(yyvO-T0+I7U
z4le_rvUV7*NFIsqWx6p7k^q363gFcf0c_ls*KumX2pb4AM4+DXGK8eDU>tbz%Hl4+
zHRrf?T?K@su~1Ha0iByJhBwn`-7K->v|h16VVuM1L3^kDz{o&ujvu=2M^xkSQD!)7
zxe-KBgv;fEEX#;SqfivZj)gcON=i>R;SlcxegFU<07*naRFTd=XoB1ALPuK%lG9SV
zgPQ$*-8&!Q!}Xuy;|-sIF^<#Em;=T+JPsLQ%|tjDgsQ5DYEi(dC)wQ<8PTEZ7O+v1
zp`|5+k3ZOp8M6zKIiias1UfZ*{9y%}8iQ7ncKkT{9Lfk;S$WF@K|pP79a2(Kap=%d
zl<heLO*0V+MXd8q0LDyEMnMDuNff~(5tNE>IK4Q0=rDYKKPFF}j6;=&aHOjCLR<X8
ztd7nC8Z$2BNDzu}j-?w_fD$lM0M`XDLxgT<miI&tfoTGYZcpb_lfX4=ea$n~q^l$S
ze(m>a7e3|y=*szLot`QhK|KEIn;11E4Huq&9-12(Q(k&={W|@EM=!!#*AK~ep=l;D
znZ?qw#utI|E=8od`%u?_^f+_e1k#m648kGUouNPg!!W;-eZFS;J!JVdB(gSUUxOG+
zv;H^?1{fxbvo(`ham1dCE#`_;RaJC26f>?1R501+@eRn<VxXoQI&`k#vNJBjMKgce
zrIGmhB|P`(b5Mv1CNOBGhJob!nyJC(@c{}ZtBU$hPJj+0u%|N;Kq}RHDIB9Tf+aJT
zV99h#m$7)-Vo*l$!WS<<qXtw(?FDWc)gea}s164pp;%RwxM(B>UtKJX#Ql?;cO{0$
z#3W9KQ;;kc!gh(WGyw_$s4YNY9HwDn)yCBjBoWu2YPkn*IO9eLl899w{{sNA^4Jo5
zp&)?31u)8Xb+H__OHjoLa;&;Y0uob3A*urY?W~*P`v8DPzkC#{Hm-&!Nswd<Ksg5>
z0wNc?+3ye33PE-j5<zwXhyZAVMF*2XB&Vg0lnG}$hXrn(k*^RnX2GcdUgw2_0^5XV
z&p`PVpAKer(oM%2cl|wcJ{Vn3nE=<BZ-OL^i!0VR=UB4Dx>4SL|NZ!Kk~9v|%$Lye
z@r4jYhEPj*{-j$PdZjERC1*}{I=$Gtx61NM=H?DKLi2b$kYyQ>NCb>A)YsPo08&zX
z@Oslu>gjxKYwwtl?DwOwp%KZcsl7lg_WsPXET;C!#?QeR$NY2VBE{oCYcPt=))u(k
zo>=LrUe`Aq)-CY}V=!z<zpgXLa`(z`iYlVBT?3B`N4hIBd;VOXKWX8fJqNLWUj>#d
zxdfZO{ub5M^$<l7qCKGEoZ2~Sb|M=A1c5-31gMIF`i2HjN>Nc!fn&#Nk(``-CV>BK
zI|nT0l;EC9l;JZ5aFbx^k8T42V3-CpGm5AlMpO?YqJ=Q?!eT_U5F%O-5iN|0=eh^(
zzi<29ncA9SaDM-+nbXcI8a)OAIC91v0*gctju^<y%Emcoo;GIV7n}bTUby-$Na724
z>v}ebD^-F-Ko}s2)^(GZ)mNB?5qA$BZ;qQ4W3yjLEXHQN*KJxBcRx}K*i1X!U?}zz
zz|FR0Gc+1YTd+aSL;_=j?JDMdf*Jt0T`r=k&iJrgP=#@#BtoZpKhY-31Ev`o3>dg#
z?iILr)+JpUiA}af0y2n9U~;po>c;?0k|YSKFiv$i0C0$=a5$(1?3~vgDFuw<xi6ms
z2gfBdtbJcR<6>}dtowW&OwE8IE4{!iWCWqeGMLB;9IB%$X}e$ffA9YwfYar)#1xdV
zO@?7y>PU8gX%s{dKscZ{6;PAm@h=~TBuTh>=G6dz>rcHNq9|g`7mr%LYy03hV-OSp
z(RK}#u}xiW2DZsG%}X6gDwxhd5)y<&E@Anc>v7GjYvKp}<mM;w_?M4EbvhtQLY#hb
z#vrI7qHWP`_J;y$hdDD2gBJlnAxLFxT_F)<3<um8`v4u`>yhdAkermuc<H(dlwE#L
zKcIFuMkL)0&nw>|7`+AMS9~!bxZTq5;kOT^XMUhQ+i+R(_&#OWnVFfOly+N3lE-7s
zu3K^C$UkOI{zX%td3bJj()c8w6S+CVDUvGza05sKCRrh`J$tL+aC&-H65iC@(t2rn
zS}JO4kD+MH7(fuZ#nBSq$Cw%ckeTEHAq36sVYIh2A<6AVAP@ko%KtqWo8^k+j9IyA
zltYq4q@-E`x$RqOP&zpaswyEn*N2J&EnPWi{mcEuhWfU#GiJ`jw5fBTIvl8}sex&l
zFijJTbC}eGVHhw?6Pl($Hw+kt0mIN?=mreagu~&0VHlV+c@oBs8;j3A`E0T^4C^lL
zpb7H+F7V;treJr7y2Yf-80Z9Tz_CCls)eB$5pdJpr+DQ1vJU{b;L#+Q<~1&F((k68
zG}%9{xCjiumL0ortg+)wW}08E-}vQ!op#!(QvRq>IN#^Z+OqB2b=B21m(cT8{}<l9
zaq|EyLs<E{b-e?_xhaTf2Kvi!GdW<GK-2`7U@h-k1i?XVhK3lp5e`8B41>n)_XM?}
z+K+)-9N1#9HP!>rYzAk>Sv9)l5%yF>dVD^nI@EaSDp3{+TEneS6}4ZsW|#&Hu4CDm
z%erYKp8IMYp8oi0NRR;;(76smhn8p^Far=}p}^r#01&vD=UCK;_5#>gt{kHbPk;Ip
z7^he|^Jf5nOJ-aG#wnit>{(DoA<J?%U?Vz#EXv>_%Tyd{S4GuW?Jzs$O>Dm-Ckg6E
z#H(?^=krlJj}055(dc2f;w}_L0bqb22#|;bfe2s*!`jVjA<HtZoOUJFZhabSx2%Q3
zVFfff=U`wUL<A>5G!i{b1jOq_5&;{ck?3JpnyXM0MR3j`z(Q-n3D#~|3t5t|?Bt*0
zneESD?dG*`JKYdu0gN-4+)~0p5CM@O8trbs2dGUM1+t|e0o1B2P&;WYP-AVwPa>S{
zC`bS|o4L(c3+x<Nws^&QF05Na-0B_hISDDwzMH#W9gRSwTY@&c&I?IS%4P6637R{n
z@L=@E0KORP2Acefrp7-!;zdt#!8x~>8l{*%eR{9;A;X3KK+PUQgdct4Wqk0#24rVv
zBQrA-nVFf$%F04kRu(ccG9b$`R;^lv)YMe8w6w%uue$20xT2}Lx&{QKvxoT&P0cM;
z*;ykB1jev`?|zg_ECB?-FwI`9jRTl}&Rk^rT}bshP}SIpiUS8gOaqcAAs7l&0llwp
zB&@?QDLADtZDnQgm^1_e8aCRl$MW5cIBWiB6c(l6!2V{y1~qP%*6ORzb9;O#1qJ!>
z0osEPJ{VUV@E#*Zo+w7(J;sv+@mOKS{>mf(aoQ7;+{XnRJTadPV5R`mG@zLpbR!XT
zg1tb;FrwgQ_YUd%wvY4IoGi-9{YB$SPMbNq6h6NfdW0bqX}~vIc5Y{kUWs>a=sdh&
zRh~B~^``05OHnj771<-t#;#pQ&i{7j&a;}&Uvm%MUVd+17h%N%SM=M%{^f6PHJFTN
z^vrQ%agm0_;4*9%W}l-M!of%^AJKM25)OfI=!O;N(iyP;iFJXRZUS1YVvC6(=lq!_
zhiN8&n#mJDjoUFd9zXW}T9V(#9I6@*A_<b1*%oO-s+1O&Q5dEHgBmcX4#O~^a}CSq
zFUMuGFOS<<wP6)j{Bs331tdj+C|XsWL_vf=gt!n;5=F?OVv7Og_&!=Atq>$J)8TM{
zb0C$bv{mz(UYdxw#9tJ^bl|a#Pk@2rvYFQOKuc%-3=ACWzF22h_Yo5G3ml>-0fLb1
zP#t!aE-R;c-n@CWx88bduYIjtxe_05_&6t)-v@9opU+}!wX2Wr$-Q~xGp=^$-Khns
z(A#xLq6|fpAqf%$rvPf2c;TDpA&MfN-|>Q_aFGO1PGNFO*{J#yv{bht911^EyZUH6
zxi)6s+3CDHH7^-jr*54{B0(e~n91<`ju#-wGG6%Rd3fC(h>`>b29uf4sR5H3P?8k1
zRJ9-+>~22+)H1R_b`%l;js#FU1U_|bLbC5#V9zq}so?CJL~x66wqqH1=Gwukk1+l)
zKirr}3NtQ;&q;_Y>vBZ&%b}Yw9W>xn07(FXQSkcqbpRe7hV&Vf_rBXHrJ$7Jp~u(Z
z-fN%g5u+PK3PXt7=kp^aB?TUj2T4guNKH*eMn(okj2MBetPD6EfY<9qZf-6jkx2YC
zCnpD{X|a|he-dg4aV46*>-HP>+`D4++M~6{?#{{1LRHOCNQ#QF#iQYHt5*C>v%&;U
zhXk)fMzY5NLI|oFJ5g4C0Bw!Oke-r;_KtSwy0*5jIofp105vREBs058Wxe(K9%vC0
zoB`3OiFg0G50j^6TVNI|T--mfsmJQ7v8TL?tY3HCb(nwdxrk~}n5Ky_W5ysoJsq;5
zpt`ymyLNqxNH_wI*BfWi@Biz4JoeaQ@j!O%v1%ZpvaV@YKZ&UlyWE6U<rL^5o`3O4
zFio^#T$<F)J-BC`32r#SbT=3kfS$niecHd^(LzOayg6m|oUBn}Gtm)f2GJCFToOM2
zs9cLg!hgkkH+9;%K7T3SU3THPNuzT^T*b~^6%gRW>GS5fzxv|Kztt~VBSI8b<IU?j
zhAhPBC&x{<nN%zuXK?f@#1I6l)@QuRh|S(C*Q_1;veOOvvrh>I6nZ4KSy#MqLPTYy
zr4vak3}BH2f*=h-@6;g)k~L6CU`?EHK;WR9_VV2knOH>zB!COdQZ9o6+=^}X60V2}
zR7r)&Oc*dg1OiocSd3IKK?%j7mP7qGwiu{R0f8f+1-i38Er6r#wN_4Hf<{9i0{l)t
zxWM3WIJ$l3%P+soS-Em$H*j0IawWd}^2;36(Ve}frKKm-iWJDxfwtf@hu^s<Ei)BH
zrvX`%p~@;mB0_`+$|&9_djnp#7aSZWH=$FD&N`BvXm4ysus!$=5y;cM`c;8E9c&Ly
zbNC#Kk}{G&112O<f+8xAhy((HH_G0C&*O(Eh@haLoLYGr0^m+{p}C<2fwsQwchhe7
z2DM&Akk<lbiQpz+=yPD8{E8|}c=mUEUu^>!nYJ8$mj_;l6&$dJ&p^}wS^_~{)4T?Z
zKaBD#s)i11tWU;9DFtH;Q^ytbTF(Zns=?v*`~8?OVFChy0CZiC10|2u6J!>6_T}CH
zfb#Nk`28LbkUsoWc)I3j?KG#uxhN|m12vVEh=d~;U0jSLj}w`G7o3W9yM;9qt-&ao
z+ry|hV1Zh)*N<={jF#4>cL4NxeKp;%K#j%bUnAJHv(7G?MdHkiF<|@Fx;U`KtNix^
zY?^MsG$|ze`c0lP1;75yukrckpTqC><J41ULREnsI}ail3?Mfr7bd01$;pAo<H3@P
zmZ0ufT^!U5lR~$8iue=vm*3nx;N_WvW!*l1=z1g0sG?dJ%y8o9i&g#JqGw+H&q400
z?iH>`(M`j!&+i#C?UXFl=f>MFzg-imZ{D0YX3Rx1&YF#V2ag_vEWaJ!^sVb_%|(yC
zQ(0AiLt~2@pKsj!F{2vBjw?QE>hzQFX`thlP<wj|fX9Y0(CahDEyi|YbLDx*7NNfh
z90c3_C<wOH-)7x}SZr7C1JpEX?IV^lp#d1m1QCbd`soQPq&R*0boHZ;J~HAJfCV%V
zLCDj%4vp#{0)Z$<-Gw8R;o<cULl6brIM)*6-8Ane2%><M?>z)C4nY*VflA+sa)uBM
zgAf8i6aWDY4u=CAK($bvB!~herMH@vGY)PtNDdJ<pK~*opSC={Zq4Uwu<GMg5JUn|
z5_^eOhzNk7&EZhNZC_(7(zbp3_Bgn$T)7h4wr|UE*g(tU`H2K2B_(3~jMO|-T{ZHy
z{QFyuwx+78dP;tNKJ<<#m|-PcD}n-15G)@qGZ8hT040zV36ftyT}>@o>)JNyx^aKa
zL)E=H@tFPAy0%nVl~2hYnFF&!w`_<K9FhaFAb}98Sgp=<z%<}-OHlj{9653XEk|4X
zwQqw}<1+C1;A}kujC$~CYx}9}p8#&t!kldv0J#o){@S6=$z}o7ot!<p9)fT#e9qZ$
zD&sAmnZ6gDk*~nm2PnT{{cvw))6lWz@9$dxN3EC=8}}Ehz9OYyl;Lmxxz<)dT42Wp
zVQkT8@K}Z_XP<uh=?I6zXl`zXAP5je5sWctng-65xcV{iwY}X+EZ?+g6HcB!8JZUA
zl~{Dw?Kf84yJGeIRn^t$dAYeWbF;EgTUUps`Ua$AWWeK3fz#~);~e2&5S^_pXm4o(
zF%6`rq#+y$qp7)ZGl2X1n{d=HOmNP?Ig3~Ak4;O%IPX>jnR61aauRb#vc3b+QvI=p
z*LLpsc8S9w1B9ToWGr&C1&kOm0x2me5Jam3Y;A2pMtTM)WgvtgIXM}!B4cEhfQcpJ
zuxFPwLy{IXP=BoM^;nGUcxJ^e{I?N2qJ=DhhY<lc+$Xdn9gcm)<(=d5XJX%u&EZf(
z>rw#4EZTWd^^qEwhWRz#yuOF-oWEXksCIc?@gyS30+>NBuh_ru%@KJiCyyLclv%N7
z-#l{|z}8=mn;BzLw(C$c?L^*wVr-0c&DbCiE2m8qESI6#6V&>!uk-%x59loEBhRg;
zNTgrw*@Ov6pMU;E5QJO%X1q#}g*>ZJGwE|Q&Y1wyH1Y6<4}%B<H=KS00N}>CH-ZQR
zfB)d`;EX{Or9r_BwqTDC0pPq!b*La5=tOXYq)3odxwj&dGDs4^jdO3r^|P<*5(Iwr
z7*>D!2qam8C`)}Ng)@PJgCA2J&iDaz%?3cQr>rbz<;s<{Wo2b?P>Y`gJIGd2QsV9=
zC#!kz$R~NfEckV8W!)Xrpo_+g8jTEhCd`NlL)W2E4Pbz(sPIcZh%OP0!6qC&RE4Ia
zP4DPY{r;K<k9^YKIf~h@KiqH!HQ1uU!UAM?(m}%%)U^H}04~J^Sy3Q4B{YT_aIm5R
z_0<i7+PA^#!)4%^F`ygl##syOUIv~!)b0C<xdB*@6WIQI$NUpMJ$*}a_50bm<E9lA
zPJqWF0T|sgJPZK%#m%u`^X!CIiw$12?5EhW<x8|QSHIuaKJL2x#!v2DvHDjPhYsB_
zB6Gx|5t*4V3={25jW~ArkR{{ifU2r+yFEy9yCI1Z+B@1~Os(IEMqx7{Yc4isvoVXc
z#gtf_5g-n7%$|qMUeEh=Me1+8^VbJ#O5?QMhbccgcfpE$yU=daF{_a6_%Sgh>4a_u
zzWS;XkFB}$b^xugQYNFY?j`+ruNTt<L^TU^3^UR@=Jg%haO_JCHw%PK1X=?T7{)Bo
zA^k_j<Z-AuS`Ti}4|@0H{L7Bk#)b$JNBFZwoz;A3_dT?;BV<Yps!tJ#0MBrawZ9y<
z7*nJ6pR=e4yzlYdpZ@W$+TZrIqP9bae{NSyO*0b!F2>YiLK2`q`vYS`?{t9Q4|S5!
z?Ck7xheJ6U%h%#T>=Q)cbfSph1_y+`JxwALEmix5e?SljuAgJErW;Pb0fIpA@JIgu
z;TCIx&_AYu0YoK$4seEj4wnTcnxPfC98O58)Z4SfC~lm61FoHUZG8FTn;*xTFV;X(
zEtR`KdLK9e0W%pm!(oS_#*?l|{AjFmP*G8l6N|wCJtxoM$j{GD>NSIQ^#fI(<lRwF
zRei8#dq->MmFekeh55M!7@av91xa}@nTbQ~RXEgm2sL}F(bC*{xTB@x830dLKTtKO
zyDetFwz776uswKXYFbL+$ecWk${2-FNd=Gu303XYsA#Ofk;7GJYHA*q{o?_swf~RL
zoPC1Y>fJlnJ9mHkSt%i+5=X0{H-U4igGb8%tnP0k8{Deu8|t^WceF3_d3^<5j~D4_
z8IWbgny5A!wQDX05DW#XbX{8u;OYLDTGvR_o&tx*m>S}fiZV{(;KgmmhB$lc0=4(w
z>!si6gq1VbWXnKh04a-?lw1xV+5Suh7|$B8%8S+7z-GYe1H-oM;{zT;#KGqkaKi;|
z2;lSt1KTj{M><;DOddtn_@b0hD!ngf%6RD9gXTlKY5?AQKAyL42y5p*@@(Ug{dZ**
zO@@fzb<PwK$&(9k@RhHEMmVy0ILF#wj+<$NPAoR2Q9$Sec>dRWM}LO_X28C4HZ+q#
z(QKyHpM9P8ZGV{HHmsSm-EMcXsygB#4kfJY0tY0g1Pa<!Bm=!cLQ-T<lVZ(hk3kSc
zTziTIG}q5r4nY+0$R}&82U`>pw1wS8Ae?bXE(v;6ha#xEREKH}9vL04x)dmVFg9um
zc;f3PAP54knQ;xC-1-C_|LQTQssc&r8`NSkwn!iXP`*!ftKGs&oFs_)dH1g;%-RM5
zj?~oDWT{W^xxcCk!0+?#Dtx80t#jUy!_}v3QofobN>&*wYSJTyZtgM-a}$6K)%REJ
z8O}xSX}_lG=qX#3Eho(W53P4wvt~^lfII(h?8^qI-`~4p^()b6be>(%coMqGWF3K(
zr?v^ehQ5R%z0jw#?Lh#y#Xf)h;n&A?Z128zThB)-VuO*8@K<jGl@tArXS*=Mw$Wj~
zvV_0mE=^POObz)yuhDSqb7tIEyKC!<1v93Sk+aW5u&EuD?`_qLaPSv+XL;Wu5J9-V
z<w*IN0H&vnnFckPW7me=XskH;Bp82mSRmX_jvF<tse?GPVqX#f0m|?}{(H8c2yVmu
zjx5V93l}WR*zobkjUXIZjuG2iLM_!wnw%#)C2-T8aFcWg2to)1`_`o<#p7Q*4p9{2
zDO=agz7C=&;;}CtgCGc9>UQ2WMLg#mL?s{+ffkC^WH~aoJ5<%0vWbW%IXq5C4!PG*
zPh<>+Zs5snPeG6bJhAmD$W9fqV$UQnz@2BbnQ+OjJ*vaeqY5&&J&go}b96=2VtL#)
zqvIS7hr>;N=<<JP|37b}kIw>P{n+4|BAx(ZJ*FY;<th2^+s<Eek?3&VptzjL(Lm@h
z*R@r6XZgnie&@o+G5~&)?C>sNCJ)na=lf8_mH6j%(c$d+_Fq0b>~lC!`oRBf``@Lt
zx3?!7hOuz<Bda&Y?xZK`p8C(U(P_&aJ{3mDuvuFdsKx$7L4*JS92``qV2t9L)2_v`
z>C3RQb|;?N_7rwh?SLqWU|?Xp>yN|oawt9((atEE_BXA$Cj06?5OBQK{>F5q^H(zR
zGL*iGAcMn>`!i5ZArh-{)L@`y8Yb#0>kby_qc1wyHNDxMp{5%ni|v4P6(6zKoShdt
z=d{z(XUv$9B>m8@{m}lqv^#$J*5l!@^P2BEd2efL0586@nDhfY{JXNP|B>zO<*!oU
z)wvg6Odw&t!HkozWXa}_UVAOnbJKHvyf|5PIbQU8w-&Z{27dJJ3oqO~nE912@86J{
zqD%+}IuYy)Nx_bw80-v7;b26Hgd)1G8B%Iq_U8w8S6=z*OSe^@sGoJ)ZMSjGwgX^z
z@WF@vpBv~WB_*{*B9XL`2_>$Iii$7*B+0(_qn(kTxY8UMDioNyX)&}!K(k*(Vu2eJ
zz%UFvyY*R!f`D)9cA@NOnI)?i5eGENX#7=nD<CRCv^~=3mwoT6s>N1=BzWeC<PnOZ
zDgzGpy5>@|xz!+NHyn&Y3mYHLNk6r@TQ!kxKFNMR0szL3A74Z%eSbh;yX;SwogG2+
zB2zG@LFV}og(QpHvUV8ch{UArPB>nD?zhi<bUYXB`?mi>8@yfm;G(34tV3;7=&p0<
zXzf6L^Tg!0e)Dnr@!EdsnHT1WqI97oi8Dn(ED{7U&2s(FX3A)#Y0}M<nr~ip<<dbD
z*MD)#`(>u7mfUpf1QZr!9{2A(T-kuX{dw!4+im%}ihDfnUQbZWI}&@KI0xEWLpW`2
z!GMqLJMX;9$smZ#Ime<!=MB4aowVk_<8`X*n&UYiZH5cUav0fK_=#Q1i?1DQd&-#T
z^ZNce<>c{GwtV~Tl=&AeS+@Sw*W&To1sDHRr3QWOu3K-J-%!_rx7NR#4&cyWc72jL
zV)4A<e#_!q{$Ja0#_aSn4z<&_mz;mk;@953yYjo<`?uY88^80;MDM)7AAIn^?+x4v
z?%DYS094&QWmwmWbG~El+_|S$S6BZFgy83+e!lgg!w;|X1l+&$W_p1RfScAV6e1BJ
z3ZgaZiv2zYc&eg;Qi>OMz6gN8?Q#Qx1wfQrGp!ItU@{6(5uv82=s4DaP+NH2twlF)
z<s5ju>5b9OH0L63su!Yi;&>5f9HC&y^orh%iY*+8vomWp(XQfIBsSSEvFBmyszT!P
z`Epz?SESD)JM$N3O>7CZ+@>e#i%%VOYSM&^@ksTi!l77-n5Z62Zwa)dmpAU6{`H|v
zmrS~5^6RPY)CV^{^zrVY{D|+{{ts>F&EZzOL^1K>nWrJBcOYa2p|K#=zZZq#7Q6t4
z4Qx-XePN;`%eVRc{tMDllhcy?KDb;?I31RMJ{*Z=2ScIk&d$JTEp6>TfA;xT-!cv3
z!K;=n?f3ddBBbQfOGlyUn1;r>BXJ;zDIyuV<o;G!AJ$drgmHVeZI03@8IYub!)70T
zaD<O9$p$s0ZU7bowRp;)z0BuJ!W*yc<3Cw4uHQ~kk|dma?)(Aw`@sjtC$2r_a$i&I
z1Pbyw>f4fr->E>x=SSVw0JwGtn={ie>VJH}`N+-9x%}xDUi=WiGqII=SifZPg^LzU
zES-QCU;p#5hNh;vp&Uav6z2W;d1KW1<nbAJCwShZy+=CVzTii{Ui{X-{=9D}w*Rfv
z{YL<CRitwEb=}tAci(-u^Uga#DaCcyUB^w+gmdf5iJSasRaxkF-{m<g{Nt|2tEls8
z`#nGWyGhp$^}8;Y>$7MyI_JzY=VpER)uv;F1LHi!FICi3mMT7FzAM!Qz1^zNFN&f)
z%SzXjVj>Z(%0aQ|U6@rVDpoOyGHRs`FaQ(~Bmruwia=)otw-9{kMoRuNl_GV5Y(Fu
zKPeeKVf3in!g!^g6VYnwYtY%;`P%Jyw|*X<Pc&YnB38WG7KMSw^WS1=00bNh&O5JE
z5QHiK=ml)EZ<&3uH|D%piU0s007*naRLA?9i>F*NX-sAjyiPB4Q%67xpd)O>iT@9K
z?;QY)Ky$w*Rdx4|zt1gm@6?^$*<M(dh1~@fmLk1__}GvlR-TwxqQ)3`j4csk)M#QX
zNeCuUVq%N2gFPrBNLzXbX-i+&UZ&o9&hL*qGdtUNQNQ0`o^OsXoY^U#nYriQ^FE*U
zeseqrm)(Vlg%ePgJ=A+-K*de}+V$xL<9{;#iH%D(zTMRi_^#~(z>8C-_5*-h)~q?!
zlY`pZ*Z<!dUw?dE5daLl{EfrkmQA}uVjM>h)&dA?0YuC&R2l~132Zi@*SUw6Uwi9n
zS(5L~&(9f^o|Xo~(Bbz7QBzw7MYX&_n`DF2Zb!1$3!g6~wYIk5rn6_y4SD&sx1RaI
z_pa%1emx!;h5b`->XaXpQlw`|RvbS8v}jaJl$tSl7V9}?TFK^`b0Jio3U&J%nw#q&
z%Y6{;<fR<f+H;fb0t~ZjyBx<s)3k11b3UVPmmhV7PL$UGR$*rQaba-^=J`0>v9Yez
z{gvbmlqml|-kG<1^jV+3`!1b+#q1Buw{5@pmg}#_s`VS5m@#kes#VLDSI(R_H^Y_W
zePH^unb^2v7Y-gi^vUYw@1O38U0rFfn-eQJjj77GMILt#R<LINgn_$1YHFvs*2Q?}
zwsDzQy|WP~Cf<PWeg7BWC;*P2wwmGhzyCdU?P$bJKX@cwD*W50!Wdt%5;I05<1ZVl
z9zqvYl|2GAX1^J-HNPh``^^Qv+JoMJ8-P{C#U=B$Zr%1L24G&nyfe=qe&L126U~{n
zf$~syMiPu>4OC~A$CjX#8S~x}^I??H7B4MYd_uusmqp0Qb~Fc@(Ri$RkB50)m{&0O
z3;^uhxznS&^lJ|vJc6S~D!#pijRBgXHn@oEebFX%a2Am6-fr>Erl*%llJrbFV4Jvb
z(lsSz#ZS*HoSB#9%YtgCs1MX9#5ALgawecK1%y}{X@heHB1QHNU0Jd68OME2?u(~a
zzS+?ixaj`>x~@-2-f!F5XDo`qG56ABP+|3awzW_0;;`Y5>pQ&)|6W%1gMMGFd&%U8
z`S-D7XWq1F)9S7c%HPM1otD3D{YsuP{_kaFH{P^+_shMRld>Odzp*(aU2Y_~$_%$X
z3jl;b<ebnP+@0i9Ki>WF$d>?M_>J4I+j-jcPkd2)UfZ05pDZX!%LyEe-Y+S+?DcO2
z+!#Zk^SyZ&&vh_f`NvyVyFH#K3j5~uce!1tsi^}6knBrFR-YWmc1LV?4u5kq8XKEI
z7)7ct8L}jeI$c@$#4G=J3*Z0m_TXkI^3ax^wU`c3EV<mO)Sty40|ThF)q`R7tiypL
zB;L$R5&(=@szC8jNSu%r7Sn%c<I_+7#RwsYL?T^&E+GW}`qv895sOTD`9?hc_~RXa
z2m$QtyWW#+Sbq!~V3m0$-oFB40E_{$dp^&E=T>jowypW<IdhWk`r!|AAAR!4p8~i?
zRkfL=+1Z0Q2ZwE&wrV`#dYnQ~BMRRcs3}okyZ8A$-}rnt3<GsFtu@3x|2zVqHHDKB
zQKBqH-@NuG3Sg~3?09b@E3&*<)3mYITyxEWWy_Ym4gfzHeCMX$9r*oIbw_F+5C;iE
zQghRwHK|Yo3OJ4j&kG6On+0sKwgHn-5E`Xn0RaU?iZ=zaS4LG`HL4F*?<GMz^^?JO
z#><aKj~?wGjnN~|?<lme@AveO_UxtBt7gueIgID|Iueygj|1DxdoLPlOA{ZQR4^&e
z=kcL2*ck7Rh?RlrR7Z$~;3Q5<>YG>{?qP)C^Y}2SU{c<>x~iYgerWc=4<7%Z6`Amr
z4_`T4aj8FRYriYogpl_3YtJp3anFTcuX^^2c44cfQ>GLYtX=<7i6DT1@{VoWR=zlP
z?2KDBZR$`q=EbpNrwrV-ZDn7M@Py;R_UwCU>69s7-TKv6-JW+7Z{1vWrpd9WJ~#ae
zM?a_Jc8d_jD1*9A3)O&LSbr>ZS^w`JxWpkCTdT9Po=Wu^s5_5r;lYou9-q<ISno_7
zOaOorj~zVt@zoPcE`NJtZ|pq&_~QcwL4LPv*r<Uvn*_?hz&Jb=z5!t)2*nH{VuoPQ
z2nYeL$$6k*-g`d<W0aUCCC5%2I81eA{zDHvw6}de?ad*Q&3<oTL7)DzB%!LR7RjkT
zWaeZdMtuGA$6vzZKmP$7ZWo+x7t%8`aqjFn)Ydm3$?ZmNc2@u6CyaYvdiBk(Z@l5!
zcAsIIEuy7hG}^}&lcs427t#b8Eeimx_ZeExt|%dzJ0JwD)oE#qx5jZTssV(wyr-kV
z^E}GRhIZ?*m6Z*R)0ed!J9cdE^nHVxo3Q#1gK#d~`+AoM?}nRWxcZU(=xI-lC<qm&
z&zxCx@W_#Qqsz+BuV29}Q)bP2SrWzDvvaZ#_J?us$l)^r&#&w0_s|kNwiu`>X0$ol
z0It2XBwltJ@|*bVVEK71ug8ub#~=PMFY4)=mdd!UTlb@^^rmUTo16?pc_qJ5&Xb@;
z0VVNVik_Q|TF-NwqA30mz!UT4&AaNu4?lbdgy8<N`&TdC|HsIQohNUngUy+J^7}$g
zO-IBZMkJ_!Cme*R*A`n-8DroWjYj(@Jl<ruye_D`h9k!h<HX)mUpRH=U;bz4U7O;v
z0<gk>BwD5zFSk$ln~=n0bW}l&BnW{bq1igF7Mc+2Pso`ih9X&1$U3%LWgxApBKsEf
zb^Cn2F^sV|!FK#=tXJz7UN-pBp+2V%wZYox&b5VIKVSq9W?@V(n2s-xe+egXz$Lij
zqM>0u44>175rc*gU9<kHg#d0$oRnI<e&LislUmsa0D~C_8Uch7Y&(bp?x^k9cZk~`
zJYwj_XFgfjQ9giioK?=oC?s&m1?9D^+g3e4X3X^4H*a2>_}b^kjF~)O>$X+7gzy66
zpn_Vp+C2ydO}M#y=;@H__iSv|G*_+!s!{}N!qCFj*3#zSA$kP3hPouZz<yQGWLJ5U
zZK&VV`+nU6A6-+F-q%>~@Wq670EaJ+q_gAe4}5e@$)H(p_1JSGgiN_`=EZ|@^GdK~
z>mK}`T|oru0wDxpJ%F$of@*}IG6mpxJh=NdjxmN;E?)~UhLn`FqODs#pAKMe2N&JK
zzI}5>xm-?ERn;OrI};h1=}{Jtme$W*yAELJ(18}oGa<;y%>^%rsIRU@a#9j9Gc!h=
zsXWu+{L&atB&BgsY4P9^*hOOA8zoU7w636@5ZJ!(+y>@$+remyHx>ggaMsG&krkKA
zjz9frJ^S&GCz6glvAuiueWP8!AatFmPfJTfYP1r~YF1})Rt_4~q>C|jn3Tmg1!m`r
zES-)O@4TbWm^0_|@~vCvjw&l7rGo~0cJJByN1x9(Ix96Do3?C$zqxtuig(^Q+f$pm
zqKdJ#YsKdW<KJ(@loCV?pnpFXR1JtQKy#npF)Z!x0;)H)+UtW@q`;ievdCI=RltZr
zP9#aR*PqkdoM%sSoP-b-jzpe!I2=zdSg_y^vBwwSdK{}ge){o`e)ZLX9S4Tw_wSR^
zKd%rj;(;F4pePD7MTKT)AcQ~`W!Pm0>~;t2P8rS2k3*G*aP080h5=&X-X%YNuDD-X
z!F&Hkr2+w6*MDfU*@CTr?ZO9UPUN!5oPMr;s0vrb33X$=4FMy7APwS*0au_bzYHcd
z@oB{;P)rqe-X3oR44EPHbM?da?Cn=vvgp!D|9axnbpUYbLzhiPI-Avz{fHTXpEl#t
z!pq{eKRogw0(t;$!EIIaw6UMoKXvZ3`=-CN`spt>B>uYFR<Az(;>3wFY~`Cj&mokT
z0OSzDo7=X3`P}Hy)9&1|WgP%KH+uA>qHWv1%prv500cl$$zUFzFz%w;R<G{XTRYn%
zF49J&O>?FT2%HWxM@8coJ~jM7vV*MvfW|PnIF#&}tqe-OP)e~yHyboAnAl@b`(WPq
z%s!Fz&XfYe@e){+#hc?LI8$;-rg{9}fe+?Q95j2`#vTG&X-bM0ZWoUcBZlL_vv1?K
zHP>KBzrG0Q%}|XH6dHj>RrDWY;OOUeJT>)2NRkbTqQK$w0Km}OZo7@V@WKl$!CRZ)
z^?GKfr=_C0rVh!eK4fI3w-jEWg-F?=yNh{U00>29W(HJMLsL^Dyh%y$`<rLK^y-^0
z-FU;bt>)LzE#+*B1Q{*2QSxJVl8nZ>P<$b06!DlLr3|Lg{Q{ofFAbtiY!zmV3X`|Q
z^GR#3jWWPy6H(AFy;HlXg(ctY(%rJTyO6R4YBUCJ34qr2ehkzS9y<@9UA1k;j<Z#D
zbvaWePQ=Dd<x_JrGeN<yb?Y`}nC5G}v8QPokEo|Mae4`qD0gGT07TBBvf??w&H=mx
z^y!n{>+hWA7BS83wN{g;9^1(V6&zvUV<F{)+lWq4QQv!3wC-}Ae;%KTJ2uwEZ%?b2
z^*G1ru-i`oxIX%?{rP)u!L+K=Rr60|otT%^H#0LYGava`1<3d0A<Lc#nUioXQjL>=
zQ#e+C3?~j%;OxnBRaKSM%S_#Tcl|SKSHFap@b5kZ0PvfED~9I|OHrtTpczbv!<q;g
zAw*aRR~21@5d|Xv03!-UfHI1YD?Wk?Ztzh(MP@R%co(v>b5ahTJ9q_vbpQ~cfh&r$
zi(A<T023yHW&oEL&T41-ox^V-Xa?aFoZty>eW$4XzPSY{yH4+#jTZg0__$^L`Y)fK
zJb99~p?qB~0dE74MF_8L-?91+6DJM@fd1v1R%a2y^8kVX&M=rqCXAbO``WeL#y85Y
zTmSvj=_#`vsXY9rg3NcIdg<5y7=C-3m;Gt{?K^6Y`JFT2B5@Dg(0k6ubKw0s<1_mz
z>m9y4!tnx3tr>=D<!A)S4qlMp@MV!qoL+z6{W%i{&3V5|aQn?~eq(pLeFc(DhQI?k
znSjSrir*x?i=Q8vkL(;7Dpg=m6$}O{KF`Fn7ru<*tP4O53RO`c2m;)m^xV8WW`{)?
zWqGKgI6KwnOEpbPurV_yGY(ud8mFKMO5m~l7^PN$hbUQu!$+E%L8%Fk$CDZe1lrB7
zZcrG8#q4jIG_H<KnN>WJmF-1SV+71J<KfAervjiyIW}*y2dSx^M0uxnAQ$uC5~GHh
znduPt&OP$MeX;-=)!&YKQkM8>%Xc&rK`8b&?HTtOMT<8X561#=f@sPT*zjq4FRr)a
zvv=P;`d{<sZz$io>FV)g$08*)8+$9x!s|^zP1Wg29{993_H@k@STy|j)yjh~VSPup
z+ld2}ez<HV)UbkxKa4<AGbqP}|L3096hqTVZ+hIgXwsC6h6W=P@K1jR?wtOJ1Of;K
zA_(}y2n19FLkc1x1>xZ)?w*sk=J1{)H+=Hp&${oS>n7)U&-!DqC)^fcNw0F8U5%5^
z9A6D!wRxZUhjW!xlXeSxN84;-sbCZOay*{~0Ms;V4b3>AY5G3XFt;$u)}4I%_!0as
z8kT~#sE<mMQ&FSUSdDtHDrO>P1PW7d!@wIbs&G{NO`9t=<Ml(Y!w$P8ewV;H6gI<1
zx2IvRxF`MwUDQUU+tcFqTP{Wl#Z>Xyq1Qk`F{W?~0AN(%C{R$m`t_>_nnBokd%V#w
zY=)68r@<7B(VhLM+t;owe{S;RNydiqby?O151Ammym9j$0PqsRbIhXsJqHWa?(6}m
z0f0Y3E<=VWDFGGk!!=)Y0BRV1-Rf(0bFMd?HXx$t@z9i^^~_`2w`}(K^giMBc5gNz
zyZ}S>Bhp+0dtZy9F?`}juqUO16K$}2(@A=tv+MUQn?12~-Upq68>Q5h;`8N5k`47u
zKt?Lyl-(GXe*u1NzJmvkU4^6!6_i+@w)mo#F(6|UOiDpG0##KZhyuLcr0jsd#*+wa
zq9~5`Cb`kv96+)!*~+QWmI4miCfpU1kcqMHYX*fww!!7`Anf<U;c!3{#dh;+=$6b*
zEW8=>mZ-@f%OWI6Kx(QBm1mmbJd%{Qe21<)wq@^ae5{~v)-Uq%Qz1z_PM)d(qcQbt
zON&lbRj8^J+6e>|G&Cw`YSwV-)EV4&&-dVR^LTIBMs}>CcKLnx&7RkK0$7~5w?!ng
zh3~S(tFn&Cg0Dp|#)Fy!)Zk$b>!xSu8`^iz6MDh7AD_vkue|fG`G0t454UdZVL&&q
z<M=LQIBl<Q`{b=iuZlW!O;Dr7A|s}jAfj9PYPta&IkgivUpc&;^Afw$lO8vo0H&1{
zvSe$BwY%a7gD872fA*+OzuT3+*o0{l)2CE4njc+y;m_xN`o(WLED7xU=&rw=_~o#h
zdz15Qo8yex_{IQd0o4%zf5-oWLjV9x*83a8K*(q*Syrh6g(|pt;4N{$0f6$O<#_Sy
z7hz*Ih=Pa^4Ys5Nqgz;!6Jbg;P9JYbW}!h0M2tv0=MW3*FaWxtW9fmVpp0T%|8W3-
zF@<A5DaGHuei15DAaN~KOA;qRll8)`e%PIB*Ovco!h}isrcLXzKzI>A3PC(U9RzR=
z%sf1H?4+Oe5Yzx5C`-dk8BpsY$WfX<?C3Q+Pe^Y{vJU@&rdE}z`jKGwp!V*p@fmr|
z8yv}5mXNFJhvKh;T<|yW4y%7v?)w)+j^7N~lL}rG;Yjw84D;NEeeceiP&)sk4#AD%
zxa=fvTDr|<LsOlCGrEYpY#uz%p{(EnJVxKf!zZpr)h-{FT=FuCGDd+?4m=0c*405#
zRCsJ|xZEijgpfY4_!MJdsY0jIfvW0SWaedCpc6e8VxSiLyDg|u257p8B)bi=-G!#w
zS~y*92!haVel^{MVOZ?`CT;0kGb!M5Tjz(}X^X05N6*KYx5zA2<IaZ7CeC%ZoKRI2
ziUJ%vb_@b9z%)(hh5^Gc5De<@`!xhZI{bk!{C+<I!7yshtwclP<#4%N$j|Qse{*DX
zM;=w{0vFbbrM|_RVo`67;GQ9W0Re$&D){yK2fOvyzDxTZ9y5Vk|M6Dy0M#o?XI*<4
zLK?xBAD82dJ#%+&ZJCB4#8~t<f0^L1d7MxbwUgXb&wJbmVc=uM578AXrpu;wQmq;*
zVgZ10rJ49JFn8#olg%H^obuCoE5G_(EBgh%+VkQGUA_sx&9R)PFJV&=Q!_WBYVwAO
z_-$hD_oV5#skeP@{~4WmY<4s4q;d*w!3~2M2pb`UjUetG@>7f(FfRV$)dyDN;f)W2
zGdajk88*R^5EnQB5-&mGWe7w-K=nhFwA46A+O*Wuk<)OC9vIAkYAR4o)lz0Pb!dhL
zC8Xf~>ihAS_86uOnr59$1I9r!Rs4SM@8A$za0pHaL_n2R4byI>b@$_bx?w~4(^IAl
zl-6(jI)ySmu_&p5Bj(o=Ck(vrtFL<Hf(Lj$ha(KSUximzJCtuh`FNt9N72@vw=bEV
zo>%|5BRLa<Cot3?BFzo37rp}Ckr~ff@s3PLeP2Yl;`^{CrGOIzIFeJ4POH}LdHa%!
zhF<-zFWcu}SbwkAo5t}1JRTmEXKNAg3rO)L!{g#n)^`+sX}k$D3mBX?3YyMCQNn0w
zXhbL!f-FlQguvzWq`=a=*^&U7X*SUYMb#iX9P#g&2x_sg-ESVgAFsXlVI0&LW1xgU
z6nKcT1YOr)6Gd<wm)1eJ3Yuc6i>LV9$jVM?cMN?#CwvnNTJoWlejGd609`X-m>mKe
znK5Gqmz3n{@37ke5GaZgZ5gmOUK~fjaXg$(t6bTj6p<*mfnn$f1Z}9Us)MbM9sWQB
zs>X6=%$UKiTD2<99mx_ssW|AcXecr<{20A&@X_#T1R4#&G=*++Y~Q8*j>boCzN2E$
zgZn&bM(H!RjDSugjM;G#p=!UU_rOL4jRFxJ7&x)SDiqNz5@KWj@lHXfr#)_5v`>qR
zGFK1+2*i3^>mZWCU}+A;?b~?VH#CA(S5F?e>x0Ht_TznOB56GzED_XL6x0v}wHB~5
zX~I_(Ih<hU)#uh~O!>*w3j$i;V$D!5P@xVmh>>Z)NU|1vp;=%;l?3UCO^~*^ZSECc
zEm^bee;u%K0*^CFB?MD|PF1Ly3dUQ4qOHOOFcB~UU?w0cA*-7m*4aT|Nr{V`1cNic
zxP;IX$8bhD3n5$somx`nEV}Yp32zGBFhH2~8LbvGYT#_B3dAIkY?5W4H^2#ekA9${
z>oB4_JJM#Sr}VOz!-`K+Vi*RPPN6E=w>A;G-@H6OE$h@OXL2q$0Wh^76n`_se*Xlu
zXF+S52(f2DEO-TxW7k9WB!L$MIFr46ns#Q@?l&**TXyZoC))s9zSHRz03LQ3=#!U*
zhK4X28=4Ueh!AZe`lXGBC;;JziAW@fa5xMQz~k{m)w>xa*}((IZBvxeD$E#@lt~0N
z#uyH6uoC2Z_a4N+LB;WEMq9K^BHr{&89Jh$(sTogN}(GR)#sYg+!R4UVJal4<3;(v
zzG~D|1>;^!N1@26Q>Stl&0J6<+eJC16BQ1JqRQexIIN+mNkv10il*iW8XB6>+}sRR
zSD`2hB8q~VIstq3S0gt!4`<F+gHoWhboOM^G}o?Kv&IAv2O3IALP!v;?<aU!jPjsV
zfks16j1ZXCHSm1b_B$NI9xvo<m>CXK;m#-i2{U5|9C?Fa;@Gbh{^6b2{n(ZshayeJ
ztA-VR+`aZ7sA+``y-Ch?Z4&3x<HjW@EDI#sPZcfaR~5ZeP>V#Dz`Opqvvb=VPr-Ao
zlCH7*s2R&=#t8&sV8-ING%;B#03aMVlRux-C&vDG+|@xPa4qp+>Se=cC0~#}9O>S4
zcpM%`q9p~R>S~HV>`$p_su{GcX6Nj6JJ<ZQ^ybnvF4_I&razUx{l5m-Y!GV%nak5u
z1ptA~W`k*%czE|i;5dTmB{Kj3GY4IW-*M04!R?Cx${>n15I$j1qksklHr@ss#JI+p
z4PuQTa(S8=wa>MXXEKvP*EI-s0lyykMEtV=;LC%n@bK=3EX7qjA3fm|*re9>I~xy=
z967$<rp;>|jPS7&HXfj-jPJK;^VbiL969;1?c00Y59ZR<Q;mvQ43QuZA(sGn?%SA%
zSnQt>6NVOo(j0_1;4Khm78roF4~_tf<|i3tnEKn@AkHiZ{a#1p$Tg6YT=AV~NBT@0
z#}BgEB!nZe@F9?#?0{(ky3XRjqG?wCD#k4*@H})~hY;OJ@VpJYU@L2#-k~)SMa`2W
z8zP|y9Bx-TP@|OLwf8>6-n|F$;mU1bjG?5Y2$TVmC_pnzXo><s5TO}5D5LG>SJO;H
z6cdJF*$W0$9N2Rf{fg3%l+@C68;KY=u&){czY;H0i7ESb;K}ltnb`{o;n2{~1eeQ&
z+L{Jz*;0dWSVMDj&<bf1z@!=s)38`sm;fpYFbn}sR|@v-slb(UC!>GAKB%gy#-W4m
z>%-yjMp)}}JhawQ$iZ3x&VmCXzz9r}2Qzq>rU1<hBW#2aGMZsVI1K(nHq-qASeSzu
z;c;wnMSP;aYy0iSh(~3>TwFGDwvW@Au=2f^kyM(68Q0x{y3?mq*1h}MKiKd`=40n0
zJ?g4fRh?)iplCp!ktK1_Pk{%FE&JMmT5o&Y1On)BY9<Cgy3ys)+GC4>TEuJ-9bGVM
zFpTIi4*3oI>+9C-c@>KW-&*|iA$r*0Z%g#pOx6Nmaqo=9ytkIHaNE<eh&Nt1^s~XY
zcXFs?07Yn1Zjw=&k)1R+X;yYo){JY){>NRARRFuq4pp}tiH1M}Ols`{c#a3p^T_e#
zpkHP`%qqDw`S`ixbKlzi)`dma6kXT6zxku;ebs0Gjd09>)q+&r3fLq=I?8imp3TWw
zO{msl1zp$i$o@w`cn;GBSmD9xB{T3Fp2K7N9|6EY;DlCjeh`481d<^gjpxJ+=_n`i
zc{WJ~SZjeRgBlQI4i680B>ouyu=>bqJhJ~$2%-(5Xf<q80N^Zj*hKrCfm+GVU2C%$
z;ic%w8YI>t<6>4pNe&}C*|}?NZ@|r?gmyFrQ;Ojh&`6wfx&yY-+3#Pq?}It-bZ2+y
zwI7{4yzHXu33v9Nl<|-TehfIW6RHU*MqPQg<=uV$x0VuZM>hDvw-7vVIXKRQzb5PY
zq1S$NvaS7;wCuq)n*(Rh)>(h2BzLg`C6Hwayud@#G*HIS+-%XEIURO*y%~esgprPh
z!r?rp-2s1dGaN2gJ5Y;-W(Ex^24f5#eX$*kG7K3q5H49nP|*<y1tCc?G*yFX(4*}a
zKLeUVVVKlv)@BR_vl^gVEn)&eB&<iv{Vh+1MHiIzHdVo!oIJI%vI=|m)Zntq#$w(2
zQ~3Jp;}8S^g1|?s3yo+v%S4Ppf#V58k%L2)as1>7P)bo<U5#TW>XDM-9V^SS2v`(4
zu^l@FYgL_S#`^In!97D?00Cf{DpVRm$nYa%1Q0ZuaruM`(5yEhpfw?A1hDHBdmE4K
zyS3liQ+v1wj6K_D%+$*YO3T0jIJkQsSR{yWNJB>7JPf&T_JDm~tyn=zAG!~s@CJ51
zLc8%e1=y_qF;TEK$)ah2j~?~dzDbW8M;HVa&9y~yYlK)W8>(uw_S6guICTRE>p<}U
zH<YM-wPW=;9J;Ug_Wn;EAhDCyq%Hr9D4-dXwRmid#h*_+EenaZ^w52SZtrvhOh_L>
zh{+LdPmK6?(A9%4*B#nzx6Hd`#F+dskVFX)Edqa}<0@T)8h`<WqxD}l!G?a>{qWPY
zpSm{>*gWUOWiR&07@GOQ{<rsiOrkxY)(wj{O0%e@Oyb`J46GGhNQ`ZSMCE4^%83a;
z7>V|2$B2#*)1he*J#AZtY^jdMKg4>N@RXX#0O}aCG|nxLjY?ZIQ=R6tyFhgVgm54L
zWSb1bq<A`Zf(8HpAOJ~3K~(DSQ{XuslM5#U0HzI?29D$K<e}e2%b-bo@#O>#p->n$
zD#gPPHY#n=sXonVcYqocB+gmJATSX>D}De|3a7*m{Mw4Oc<S&|uuDz|adp?IeNjLt
z7;I&~D^Qc8JG>gg%tPbH4F-VXjph5(qt9hC!lM`9mLwaW2({`QBj0X6mz6TT;NnkT
zJig-64rAecXMX(RKBV5{{;$<f=i8g_-uM2T<z3k>n)mq|hu@pM;gI*SlM|fT9rhO`
zC8dKJM(gLC+4%VIlbDk9m;9nDKj^R=+3QZqcRED)Qj&VH5#j+z0Ng;Hl`=hZwjM6G
ztJQ8%H}oxmKwz53?Lk9hGtx6N<17L+S{<2~Q!6PciWeGr91;itf?*Y*U;s`@LO2|T
zZs_giHxx1vQB5#2Ms95JE4o}(1mJi@J#zbaA&NYbQ|zcd7mVskMZ?b><k)OBo7h+v
z&Mhq)h{Ap)5JV9N4<3iE>(F%_CZ*5}9h#~_({)6`VMH_)nyNunBTy9$s;0r|biy=E
z^y$+FnORv_ziwZlVHg4u@{Mi#$l}$C44@_-T@V$^lcF)uX+ltMM#%6ZV)&ubAaoW2
zSnD*_cWoa4F#HiObp2+|>H9_g$jM3lhYkY;uw%n|gz6eTfT3^P_{sZE44*ki$Qv{m
zPOmR(|Hd`{@Si?<4Te7S1ok|>x$_($;~u_wNxR4U^hrk~$}!qekDJZ_O|t-q^48-W
z4UxB&XFkd%!xMmT3_Qo6N8c0!wMYV}=?qXcAk>Y0066-yL2-}Gh<Rqr+Gxb{YOKX`
zOPsHcY_tPsp3CP5XBPy%mPG-l<m%#Uk_(a-{`kTl=jUhSBcKKlRD!*8cT59eH4IS{
zF{yA8`rOcG#Gk(S(}Shgl{yc-edw)LfP^-nmH2l8BR^Oo6F+HrJ7F!<jImf1X<_bf
z2Z}LtAtd_#7MD0i!^j9TO@n|jGt)F#WgOUC#Q9-^zu_j)E2M$rqtrnhY_M6Ll1Z_o
zVhMPj$Han(Sa)n4mQ*Z(Q*?k5i@(o=366-M1kjuH+7yx!uNZU@=Z6i=4L9)~F-_zw
zZ;%IXX$UdSvd!_B)Nc~jA776p6-$t0O9IDRtRosUtEro_vcS5(wf$D0HhlQ>lAXIg
zZwqP%M~|AcX#M&_0Pw`vv6HZ6>$-N}HhlO+kL}#qrFi1*_bz$8VAiTjP9$Y5K!!|C
z(A=A{X00knVxbR`oaUzh&>Z3~Z6?myC$mzgku;eE&q(=!vyrO-Ebs0lE4uQ7Q}3>P
zs=Y`UWtOLA80a_QzuG<D7_p(~rVl#pv0;Gn>F1m9@++UAe_?;*=Vu|mZxS+7z3_Uy
z@OV7n1s*TI`USGHT{wF-7{9&#+R4$rAA<V&dT=12HW$W+4Nc8AB_}7R5k_(D>^bD*
z<^qI9Lt-sCw-}G(kkWzhI3&1a5q16us;jC%OamNeM>rI!HB6)3{00LCG@XJPH0p^k
zWM;Y$Q4D;&w;F!Gg32>~3@*(;TDlWe=K?KEA=GLM=%89u^myIQ^t9CYMf22Ccf>C)
z*5*jZFUPjmVaxswi~;=$s_cRwNUc1oHcTLK&x!$*@}Q;)m4>01iJ;SnpwWzg-eiG~
z8H8$tKy|LY$MzlC$FPS-L6DwJE*d>)$b}Q(@wuS|fl#Otr#7$M4r<(hJ-_n%>7qUd
zlQVx@I(ahsjmSjSfNQb8{Lriu+t*H4hdul#c0KlVN9X73|G2Buu;)GZzh2FN^tL^2
z@!Kd+WM5DMvy;MCfwS_Dga91RqDu(_PZ$*4n&n6=ylJ+8nxX;WD1hpk1x!85#Yf4x
zSv0R^wuBwc=!VZspn~f*XCw$ogb<e`Npaey!rA>VPcBGac;`hw&d=~>pw?gejpBKx
zYC=&JWTs@|&WrBMf9~@?Ei9g25~}#%$j1OdX=$l9c~;71!NI#Yp2N2}OvQ|F_1t4$
z{^`qCd-R4j+{mH;zpAP(GaA<w0N|4cKHfOxcT<=9Q<`thNzZ{2Rv;1yc20uGiQvJ*
zFg3h%;_u)%4u3oOH#kKnIF5tC4Cv6IQ4J2ejLNzy*qUt1KY8Hexc3vYAMp8a%}LEf
zIHJJD*&srMKm@C-|K#7m^E_TU@pq(1UI@GmCQRs52S)|yoC?_?qq3$Fw#L@>W8;@&
z$L42m+Po@<@Q@NcwK1b7FDfsO2i_NL+Eo7QapNXq^Om(SaLZwY5A58v>X&23_I-5I
zrjuPA(=508q;aw?{Y-x9Ok~NV%9As_s#%+kh`HEut9T&E1~@sO*+7mzurkYMK5?>#
zlgy&MTJ0_t!vHl5{Ppq2@W9lETb~%+Hh*(+a*`8SnOX39y+}`YAl2)F$KyegHwj*^
z2R0E%PLa{KPYMD-Eq<GloD7pvn1*R-I1wTxTK?X3^EbZz-bc$D8k%lR_Igp*&;VW#
zk(rqRQR1K(6q;^=5(1mRK^6r#Wf6n`b^Zv>RGve~-vqbIjc_=OP$azkd)LixH@`~Q
zgrS<y6Bzp$BiOn140O!|7@%tuySAT0pT6F>rxpuIvJMWBrfK$5C+m=zRT+Qml1pyG
z_iwxrp>PPgu3^N8LgeLmzzYJ7RMg?CuXZ392*8`1VtM9$^YP-}|Ax;#c_Dti9Y0kE
z(=_FlVuFOq#Y9gk`WOrWPi|UdN#*Dq%&-lYjlCcaIvd~9Kvg%Wk_6M>t(7)${=ZB6
z!yhRiHv0#;6R*h1D=R>t@eGK=4wqZN)@9`?jf9@WzF%8$FH!tW&E8G3L!(CKhL{6;
z%Xfo=8$&L+-nswF_n(Tehk5Y)U$Ens%{}%gI_Ys!qn=tUAEz;NN}I-WRs|#<Eg0bt
z_1cIfz^O#NHO&OVS_`O!qV^RXFgQRrdxmTi@BMa*3^|TVv)ODBQMB0a^QYtwRP4&F
zH%$FrezGgM6<K}Pc);S`Qitl-0O|wvNOmRThN<7nf9mX0xAwnqK*g!APJVsp(4nTO
zv!;DHZSb@!2B#1D)_xlU!@-(^_LbYdm@A6ns~y)MbWey(Ddh+uX_}_h#zQ5^BzZ|=
zZR3z;XJA}TQWms`1{-ICgLgoH06`RBFaz(Nc^4^C3K$qPra_?!ILg84bfLyy1Jt5C
znIyN1Da7qNg5%OX=`bQXL{5av$*>U{2ngOi^DcaHDg+|Hi2fHg!vF=6>~2&xp9AZ}
zesuC7MFVJwp!Q&SdAmjO!SeEriQpCsy7fdlWaB?C-8b&KPwy5hjGvuO^Id89Y<6VJ
zKuqV$pg`D!a5@sntF3=8!>K%3{>H5RJ-(1BYrl(Q4Ad~dOcRqwm$rM}?B;?a1hT{K
zz_@XP(a@+sQ4FgYKgyUND+f1>jtVTS+sevHI2;lPA#&T-=$f{qs;YX3O|*^kdOWDF
zu7;*+$jHouL$)EwZi5&tK+y~nK}AO}tfIQA3L$?JoU#L&rlFyszFgO|4(B(l7|^3T
zVHT|bJbkJ$+OvihMiT}cKi1SzI1=6Ab(CYHlsdv;1C-ME+)tf04ga%n4h|hU1iQn5
zq5*{vMc~BADg;6i6b&eXZWtIaAQfJ(gbCwE;pnl7IH;MFA`&)1DUCM~zw*K#x}2Z6
zc(m2uuX_H7pwSrjq)f$y!@u3vsaG@of$iO#RjmUNWY|@`uumUNz2MR;(d)(Lm!3au
z)>LnH7Y>;}@bcNHJz8-DHrq$>m+pL|l9fI3@u?#fx7XDqqhi%(UxF$~DJq*@IBq(=
z{=DudroX-(y=VvTtj8^0j1irC@30ckPC|uzG`Gg{7MSs|92>Dh)QZ_2)WU`ZYMKrh
z1`q){wVycl|8?BADpo4Xa<U)@HmAec6w6r|$;Qp|FP}d$*PDxmU_+0<!=MIKsvv|g
zY!Dz52P97F5a1eu4aoK8V*cgxN522T`!|cC?OqTDy+(g^%gN27?KU|xMNIkTMRSC}
zDLGM)TmWybcjSa0PF%3{l`XF)e(yvcI}*+9Sy9bsj*eM@Oq<Q-_xt@W04>1w{@u&>
zUAp-4XZ@A_#~p&bWKilLD3K6M1CV$LGLa#07E8OzG=$6$K#A4M=8#cQe*}TE!Go@l
z>)H43Ufz!JHD*6>Hu$(CNF{~70noz=KnX-ngp+qdA~uWBpPEpZ0+=e2r6kC9Cl1sd
zfWOk;seJ(W<;IOCe>Gyn^}>#w|1>$yJTrRKltmqYS|YeTF?Q^f;Fhgl@s#qXM-0FI
zmm4?s$gwJa<I?>AzBl5U&;Qj_FJ9Ut*+&LMTOR;$>)I)=8rklZ^iOwuc+o$5EApnB
z23D-x9j&OMU?zn*`mZo31v3~-o#N<g>j0BkVL6k5YF&G5;c%qEm(C}T9aREVQxOaV
zKnMqp<G>h$p&J0>VVA8_BJnmH6(-xd;|NBS^+6<}w7ZfPTzBQZH{O2#*>lxZPh_U2
z7pHi=Xl!bPzquJMj|Z~d1u-f#swoO0p&&xR0ElV8?Q%oYG}JdV98y&E*#*~K+2Q<Z
zY7~THG+D6%6|?|btSOs;L<>g{4@c4t_I!*n@!YxUbzdKFPjWh~Rd3>iQlunvNJ{d;
z<#Hl+-G@R!q$YbXWGDm25hN!$zzYI=UJjGS55e){mh@O8WTNWqx%HG%9sn-7XlAb$
zy3*elus}5T6*hyQVb8a^koLwtv3n;<$pxs~@=4gNt-TIF5mg%IpF8|Dn67Wajz`*b
zP}5}%M=EY31E&xoa$phTzZ;J1_#nAo<|uFRkc@_X+h?#|0b9pCZhF*HGolrYiq;}C
z)Gn9GTcJNL!E@sP2!uh?S$j~6g(9P%rW%0CI=A1|D12h?Uyqq`t2}%^UU{)%(U2eZ
zDAUdJ$u5^GC<+1?2r_1*Uz|QL{qkYHVK^5!*L_$ts=XF40th37iwiHoxu$d2U%wAY
zd=ey1?hxF<fiQ;ohGF}_?Uzeb`l4o4^@?4~c9xIGxM0)K%!)aKy%M^}nMMl=X`Gp=
zQw4bqa7YgH_Z9MWj@lWbXnQ>|rAML#CXBVj`(r8rG3I~P0&XH9;9E7Xe7f-C_bz|#
z3e=vgy=RZPXWWSN;pijfL(_C<hJrA)s%Y$j9jTHJf+XOSat8Zq_90N|FZTpI&wjk{
z!%kVDWA+<QHQsZ`JUFg2trUIaTo|eWgBmbQ!|Iz7J+KKfY&H?6)RWjzy%UXR8oRX*
z0KeF=<BeZWp1grEhDGbvb<69vXw#+*PfVKBj}U@itX+Gmw<qn6w=Vi8fPc2y?VvNc
z$DWNFW|e*G^7PeJ$G*zR?OT|hmIGPl0A#dzh1Cae&6QR|{>b425^k+C?260ApyKEu
zR97AAPzLC_tLMD;#@p}1(2RRh(^AJJd6Hn7Cc=I{nrdsI>smBlAVQL4I3>x-sfEL6
zY-lKtsLHd~T|KAM`BimGM3hBijEuDgG{y+Phy`F#im5oLF@TyKdilzR@;^PbZUcRl
zG3KC@+Dy|-ojSGbfz%Wy03gt0&1QCnwL>i|$Z2Kc$dPKi^7s3G%kz94$8j1VB*Jmr
zIZ2X~^UgU02|`8yVKWHT48qjD-BY4B_KD=7k&p(xp&<fY8w*){AZg?Us6TNMFwD=|
zzkzK~8%|eiRLHbtmQGhsls}3<W5^Ut2uU&z4zAu6H+0<N7W33%1sTr4C14$URFB{P
zX~RPuJy9E>kj4Q@)P7jAz$_8eB2i$|fzIrAIVu(n`C<Pj56}u`yERt%c=TsOZtKZ=
zJsyw9^StPEI+b|krcIwcX3!Y73e}2eb>*o=>mNdT5J48e>;ZEzEPog>JQ<*rVt@U9
zxCJ+O!grFJ6fkDc825Wemd&<F(h2}zesjf%rjxV!y7T#t-ba~5p06?$DpMg52@<h9
z!;Sz{)l_gChdg&4HYAk~FPdJ|_vHE$C*nElXt8AHdZR5*I!x0H1k9v%U6~)>`QdwW
zmdrcYe8m5g)&8|}GrVc(gHlQ{Bxx{G9X?P-Q4_Ak9{*k(to#~v%?&lEX3LXw?~?a_
zvaH*1Tg-kS68OpHz?QicNk`L5QU+qEX9&_AY2XNlx^O-A`uF2N<vvt5)%MCh06f@B
zfa(bV{x2B6-nC<mv}gC$VvZ98##pcRo`euWsbNqvbO^w&JA2)ASI>Fx^*5ItG-|4U
z5)1|BIUUY4S(f2;d%*Jo00vFhp{W`okq9E;aBWBlFH;qD$%1R=?e9rKK29B#=&6CU
z@z@Y&_odA0mjr-!-ag#6Dzct2c8D={jxi=M#w61;({8%yl6xqn$&^xC7nc;{I8Ng@
zu2GidlRVGY5<*l$h(QSP+ibS_^PMb1;j!aw2~2f^s_k=X-*oiGKJ`~Onk)p@;Grp6
zmHABas8P_F7m?%ZPXlyiyEp9mRhSL?#cTd!TkcCLnhHOferQV-kThWks{Z;xkVV3q
zd-Gj8>v7Xf3y?Ge(5MAKTnE7O=Y64HpbG`;t41<aHDL=!J;7K`O^<?F+&%?(<NS{I
z(Vq>vt@!Cf3;?<+=kH*6-ENm5*(5N+kTlFYn9C#+vYpweQEPezYDNel8p8bI`Ej!O
ztmG_YG-Y6G{Z@!n>=f7(RYA5h8}3Zk1m_s%;O1RT`;UHD@ln1nf8p8Gvjfwl)&xN@
zMVOEgLIh#VDV&S<E0)6!2b_Ylm0C;UXw(|v5j{vwPfBmdYM3O+(g_wV-->Csu_(Gl
zmEI7I%UI7x_1PrJ772&L_73R=q5yLHoIlTdrLMYR)|d8GV?MWk)}M(q0|1E5RSOZ}
zs1Ol1yQ%A=_wQKND*~xR`;FDjv)0+yjahA9{jJ&m&uBk>_OqW=0Qm3!6Q30YsN3Io
zd-*GYKya2I2xEAT>(6mqMl`QgZBlyFFpSNHp?`GU)pNU@-$<nKEnT-?6F-NR9qoOR
znlb$K#Y<X&RC9B4K$c~d<G3n92+wgG#~5>qqIiN*>IBeT(v@-?7ZL=ajt~-{lv2i+
z$rv-6o14#@n&!w8N62?MN4>Jo^k@7#KYKHI{0x#dvkZ~SYSb_POl1-OUD*9t$3-9<
z|Ezjy%d}?T0@uKq5Pb~Cmam0!?AYHy>C)bO*Uoy}3?1M_>ps;15de?gAGVl%&ICl!
zDl!s9%f4V*f5+?#IR9xmbYJo9y?u|(X0xZHq()*ci|IBe4Jax0DOBmwTZ^f)M9c`n
zEQITeug3)i7sQ|6dTa~cI`kIooC6A!4oMwa@{>FYOA37lYYt74C3!y>gAp<gR4G*h
zT{c&{&s9tXK^DaP{_`=iU?dnA-aPUqR6PQFf?7+f2!d`x7G(HbKAaP(%Opv9t(8NT
z_!;q*w>b30+uI0ZkR(YU|5@_?GyWeRt*(J-)249%cuJ{_F~%E)(d9KF2m&L7m>kDx
z0L;~^SJMvSB>(<n*u(Q7IdA9e&SV-49ETqHGj>1LWoryZJem%$9}_9*5@xV4B8~ro
zO<0T_zwA|rcENxDvDe42tM-AmW8Rfd_1gZj_wN5cvUcX=<P_xP<*Ko|z{p7T`56~Y
zpXIPQItS`#C{QsKL=eUgN`8Pb{l~_i-+XivUOxCT>~KKl<xWF{i6g9qvFh_LKeBI=
zZ)XH>Pj}zy9_;>QS$bJ(fC5Fx4B)E5t1!A>3m5p7V_Wdr;nyG&2ONUELvTx%(s43$
z5*s&f+@!BiuZ$Iq#NeyNOKXwOW~`+#JXTCnb@rSj{AXSJ&-iy44?XnINB|?hsh#HL
zW-M8<WNAmhvwHPv6IKdG`_B<i3@<+RE`WC_fV=LxD_7U`6f)rs;m?2mbGzW&9e3Oz
z$+A4d?WS(O-~a6IfB(oYyEDIf_3Fz#9*;K?i69&fbK!89L?RI`5{VF1Rez}KI`R2@
zRVPlISiNY`qTsjnvz~e8nOgze#u&qW_uaSj|8Ixg>2MH9vd2$TzZmQ%@*))4@!o*K
zDzFM0VQA2B%fMS&fm->Is5%R5AOe8~4IJaT-F}I@2wl|sd1WsE243S1HH90YGNoNq
zgfWJf55EishOvd#XOAfy0|thd4!s0jS0M{>yq7tCT^dc0c?p`RX4@sXrD?m9-6-qe
z{~&<fVMmw1cEuG}q;edW$Mbx;APC7k&pQCXG|jMK7>%ZB)=)}MfB4~tb>}l_-?jb!
zjPA!Jms}#a-R_%Avvp;K-|t5_9RB-;4I7N}wY_-p;$#3huqstj0K^E70<h|9ssU6k
zT)42Y2cUL2fb6+*=VH*H^Y5WKaNq!5e);8YU$=h!`dgEdES45RT9^_#N=??+*JIkW
zX<aUg&p-eCtv&gEx8HtyuNT+*?z`{X0Q~JwKmBxfJp;J&&O14$(>bQ3q{O#(?_S@X
zciy??x#ymXAC$Z9x{EhWbNctc|NY#?#zw4JvqlEs@6N6$iuMsBMs(_iy!z^^7%*T!
zR%2u1#fug#`uvF}p74LubN`uVp1F0wf(0#$B_X%od+)v98Mxhg>#ZXJVCmAO+k5&R
zm&ZdTS&CCvnX-{ltyRMzc6_K9V^FCIl_~hqpdYnTXW4jU1OB}KPY@vi0-!LZh03a%
z5iue#Wg|nDt(3E%h{qe%#&!V97>noGUO4zX7%0XSjt2mYEgTC5iWd+56^3p=;-yx=
zMof!GSQE6QBsnSS(Xn_A4N-Cj5{)}Dl29FqI2#u{9#6+w6+?y$aRVswcswOVMMciS
z!a}5{r^Df}4rVwU_SDqWcq%F?@(&+AJZQ*}AqN2*-n(~ipeG0EySD$I(evSOI0Vx)
zF?sT2gu`K|stR4#QC?mSo6RPmMe?dQfaV5J<Zw8OGBPsUKA#UsNl9=zouHH=7z`#i
zH8mwSG&B^}*473VFJ62Yz~O}p7j`<okw_$a`t<3js;a`-vlc&VOAlVlZFm1hj2O}F
z_g}GM#jRy!W$iB5#2snkeV@;VciwsD)~l|%s>?<3w%fWcgnQwI7tVJYN4ni^IGxUR
zyqP^6m6eqv0rX_SWrksdCrz5<OHWT9uzdOQN&xYS98J>-FS_WWy!`xptX#P=Tw7Zk
z?#bsXiqhdC9h)}*=+mbUs;jG0PM<z~@%{JT|M^o-J=N3`+jHm6y#PRb;wMa)&^m1S
z`s-M*U;!wlc<iyqZZ%C4d-k;AZr-tc`SNYw0;r9Q-tRHEd6PU;mZW$RiHY!5N2-x6
z<bs1$0j!y-1!jg~3E{E`9vb-&#t&%uonP$#0{5=E7t8=e*#<!nz;OfuCxGX8h=K@_
zx4|X|kOUbLC&9)`@z1DIs=!2eWm&e$?we4hQ3ERLNb<*`O{5f9d|(L}fbmgq8&^0U
z48UIx{S}k}e2YXTOv;cf*kJO^DNAycrOVn>-gx7Um2>CLZTDHrmoLZ5FTI?TD0xpk
zp7tKw(4j-K2Mic6eAK8>IRym;NJ>hAq9|x+Xh3y!b!>M9r_+hiqer8-xY$`*S~_y;
z)~%U@kez$>?CFvf`n$Fd0Mn*Tvq!@lJyP-Q?d$(<jeY+d;{<@x>o<qKEt|3|Ls1lj
zLZMc`7Mq9j0JUrYLkkKD`sC&1K~WUc)z#tX(W3~3LNPFf*XxDP=R;;@ru*#Kvm?)(
zIg_?{@!~xT7cT5@e(iQUii?YJ?AS4writ|QbWlp8ayr&+>>s5RhGE1P#h5o*RaJ%4
zr%!kL8_t|L6F)8;hCv8v<+<7Ib~H70zs82c;qT<UsIRX_FxYi;uDG}uef##sXP<r6
z>V9f!DooQveSOagIG=m&Id<D^x1Bt2;6UER7hjC6Tept-(T{#q`Io=^C3MFfci7!-
zciG61BXQ`^Asjt=^wjguKi{LUp{BL(H)uP5Hk%DYhYp3)>GW>fw(V*FJ@u|eOqehM
zM~)o9fB^$=_0?C$=TX;n+;h)8IDPswuD$l!_#2iiSpvV`j{yS)V8ezDBLHmsHb5=5
z5$P$om6i@6RaI3j=N?DUWHdo(wp3KYdKik{a-K5E0FHu!wu{|y5(n@AX9E~#S}hYW
ztm@$o0`IaY!y!7LnHn@`ARK`tS=<b!NMR5Id;A@1%9<vHq38h55YbyNs}Vhd!~Ub-
zKw7E8@PtRIoC?NM$Z~5Ah&SGNBj=M(KB>IyvdiL+ee%gCc;%H>awNHRKV52ST5Dh{
zD=W($GiJ>A($dnDK7INi6bi+6$BDZrP16tz20;jcBuOYKDS^Y`$np7ncDLJIzG1_L
z%8q{Qgb5RJ1`i%QuC09*CA5s)YMK^b1l!stglycsd-vHcKq}Yg^Ib|QrPHQOTef=j
z>V|GWEhRZQc^=1c+_Y)aK3%<f^_gCtw7DF|<vJXWOi7Zw0HCUBQ#c&1qLiLlx^(H8
z=<BipT)uSa(xvAMYHJ$4x4^oO*S{@rqqK7_g|43K4Adk^8eLRWl<xI<QBhF=#u&1*
zvr$}J43EcZ0&Z$*LQPE#&YiQGOLKB^V7J@*oIH6_Uc7kmmd?N}(evuai;8Q(B|Ohs
zDR=iw;wtvO&KgP+L9H#wbrpv6`~9un6SJRqzq63#&Ye5)!V52SdhWzFg<U<rcJ0~@
z?*o9>>+SJ8a~yYe@7}%Iq)C%(S6y|LbLrBhLjY`2RW-M`xHy^Tc^o)!fN~sH*;AWs
zfvxR^1pq$!=%a6ZzMG~A!)Se4A3uJ)Ll3gkhT>k1D1dE0pZ8vH!3EM6Uwom*7=T4l
zY~naRHNq4`3<ZSaAV>)^V9cVvTeNi%2qBm;(2@bWaL|Q#nmmo4Z+;Lk8F*0u>4s&=
z07bLm2O%7IfrBWDO|mS50SNf~>Ab)}v<V$wKcKKVMLah2F-$8?P;EK18jnxQ4z>UQ
zAOJ~3K~(H}1iU~X2tvDKOgKQ`gpe#tR$nS<q0@Tnt+#SktXNTb@x>Qo#flYp{hzPr
z$WfqW33_{j2M=y(&>l8yn7eP^zQc=)i&IilQ{#(H;-X*}26SDAD2h>6mV>IQ@caEp
zO-)5{adAp*ZSAn>)29c%{PN3IG4Scrr+bo;l7_Xl-<54bNIUyAH8sNtA%R_Fodr<b
zZrJS?cUWMH7l&?fcP|U2IE7-xo#Ig3wJcVkMT;#(io3hJyHg6ZXz}7-_}}?v?w!ko
z86>+&-sgSJ`JE&?X?Cy0(O1q8naxZ{aItZ4;2<;mHfotJ_;GK>;=^3YAMi@PN=8~j
zd^|TN14Bp@hd{DQhR8)N|A#rZ{l-<7VRnbuE%buCJUlm%48*8qR78-{w9-5uyEp_J
zuVpJ%w9PVl_Qto3+#ZeCN5s8FK*Fo_F}!$cx)go$0#A@*;e_IG?9;Km-9b#ovP1JI
z)9~p`JcGRDaMg$@&Og!P78EV5tw&SRhr8=D$8Vw@4tD+nk;E^Gp24n9!$=J=-H80D
z^neNKP`~W_Yk=_A&JLom5Hr~LBxntwLeHI4tIr7u!C$^W&X3n=BJiJg0WbcXni|>C
z(sB-m!*ilYIq}^fNzq;=m9TR5?2i|m&b#ZYpBZ1`OWB`&u;=VqFsr<B6X0n2O)pCy
z?_e~&xX@VbnxiNU{yV}u?uO&=94~VhF#f;&k`I;r$AqYz0hb4hL%>%s0zv<4cQ^U&
zZ-k_nUG*ZmrMWpRQRK!#rI~c*?)b$_e%bza`+wY%C^X{UZoVA+%H2a>S;zPFL{1(n
zuXao{zU(gjGw``s6Bid3<wfbn#a-Tj<IsLOpv9(V>EloPH7q>&E#-`fIqle&JM)`0
z2X|)AmJ7l;5>Z8vO^b@ui3z3M=fbTXpQyfCGZ?<T&26@A^6?f3J-Z#49shW7?xuD1
zcGkeL^~y)`gFXAhmgECN+EyNvHdMA*s3$h}`TV9+ph*f2ay`zuSN^$kET!OBo7K1>
z4HOv;65G_X2^#zk4b=DnAy4Ad36qwEZ~W+14MMzJ5!<l@b(Eay{$syC{<p2&9$Ez5
z&}9zd&NJ+t1mR3TP%@oLgQ0=+QW5IZgOOsM9L_89#mFx~%9}q<3%IJ?<Twj67Q-HW
z_U0#rGdDXXUM4iZL=NXN2)3TUOK)8TK}!s(nIE^}BpvjsEo1O)Z{onNRWUS@Ydw9X
zV#7nj!)Nvalze-|t21x}ptjOU79%O#D9!GN$ir1&n0nSoNGGkG0A*k7^YnJ0owz~x
zjHO@tqMwTjNVnGoQ@pNs$4`4WJw3f^YHF&|WTnNUwa`WHcLr#!hHY4}KsBq){px5H
zYeT^A<~(|2WF$|eATi&DB7yM_@viad#47?_oupO~QPE~i2n?XW^7(Y*t}QQW%j#5K
zGTcN=x(zRC0|SHZHig(WzppmsS8Lnk<nH(Nb<2nU5NB)K^6U8RqJKmq!n;>^NZIwi
z2m(B5w^$XnRACb0zl9zm4ZtOki=Hp61w8s;gEIXtbqkB&-@bi20D8F*jQ8+5sS4;I
zlBGlUZ^EwVx$<#x0Ba(5BL}KVT%%T7jnCBsgGEi%pHo*ya(#V0FgW<q&feZ$@uOeu
zth-p@MgLEY%DSBQ%UZ?n#BJ-BiKW;YUwN`rF52nT+Ro<2Nj`YKc~@({T&HN8Pc7`i
z2=E56fAX*O7t|Yx^#t;U-hY@bZr30Ew}4KQ>nr08I9RBp1faKy3LiryQw%GvfBJe#
zkrQw6k|I*p`jFzexVPpbHNde=e{@kq4kakd0O-ld%YzwJSYIX5V!m8-H8flcyJ3qs
zJUbZgPfbqVC4#l756=^6R)$*^V)4BQ9GHxK@gqC(*@Cs?sG~m`9Klu1HmB-3GWrki
zg7R)J-6)7&eQw4mKmXmYz@OIONGY{m3OuDQU(XU_l8#E>DH+u;CFmXETww(I2d&n?
z%42h}$g0y>-G~|`e>`$Jn|7E-C(IGzC9T?&e_kE=fSxYsI5zL=bmO%LmRHl%G`B+9
zC@L;<fsm5M4Gs)Q>FeufDbPW%>4+kY0m@1du%|HB?JLOgFGBew0Pfo40*2%B*RNV4
zfXG(+Tpb;v2L5<kU}<h)@il*nQ-Me(2kg+eO=56WXTJ=_4x@!5Brvxw;wboSah0d}
z0Tp{A1z&CUz$j43XbLw;SvKGx9X%8Krt+c`Iy42mQ`sVrOSBJssZ<KyV$@2}2G-RH
z)aK@zt**8DU|4(z{d_`BPM(L`-LZ9&U0r>q1cel#WYf9F_L{zQ5y{9~dh;OTFn|(}
z`Ez0QEMpr#0*_C5KRP7eX2DM2;K<u)J4mvc#_()nJp!I`SyIB5GHN-JB}v1lY_{6;
z5z5N?ii=E^k!UiAT~d+;4-c;ah?;b8`WC}-%Qqt+wZxt|D!JTByPi*kLOz#l*x1-=
z8X8lag^a3&ODE~+>G6q)A!TJ{Re(WPG7IbR_@BhX8-=OxfsiaA%{0h76!g8K0vt?x
zK0KBXq;e|}Olu6h)%~6_z8rZOZqLHc<Jku($p=BzHOcqJQI&Q1X8p0(K-W4H6&7}E
zc1N65Rp(kPwO#K}Lg6l!LN|;Gh+0<`PEJ)Wn5}Cdx?CvOx}PF8MTt3@T3o~=y>3D2
z(^yoxBS+5=Ps+IK(MsdLUx}*cRuSEk<#E&IJi@5bGyC>r&~8GQmczC%KF_b;#|g-(
z*5Szg*q^n?$1`s{)cC^4b91G5tL>PfX<gMX9>s^2%tjOrrx6NhIaorOuehi}gLtS3
zWszth^zW^|se|cUe6yUPthoM0_dXMlnDjReT~_>An~l8fAwkbNt0&)C|CmTYLMcB8
zqjjA<@vpXCQF^Z?sc`4{eqKP07EmgD0Ri<LD=VvXhWJko`g7>1BuZQX556Pcgx{Vi
z0*M0XNt9sP-&&JcbYK{vO2PEX)Ko&;T0-QtN&&BQy8s;^G9zjH#c@Xf*V9ws@88tA
z62S-;7Z-PKZf<-*e$3|pgu1^ExWD+osGyhh^()MkDk3@>S1)PXV%{j={uZ?1B$Q-f
zZax8l(LFui*}eGi@bJUs@wy~b%6C_E{bhv?+cuwa_tpvUKbj}}Nzm5gCy@AOJYdfA
zwQrrP8>x=dsC}t&z22p9)Dj7%F7nq}#VvNrxKgL0-D>-k(@0yQ<+2&08J+vpltB7u
zekncB2PAAdfxwh(IUQmh7#o`l3IPX)hoi3qJl;2KC+TNHv3(_IJToI^ZTSO^eb&tk
zy|%x4HXHi8yVo%RM_GKJncrm|kRsrGA{I9_rO~kJ@HzoCebmyqdDXAXQLKU~Jyuf-
z;H%0ur#G1m5!iMd$vBOTjW6%5PKs~LU%q^)P$A10W%-5@n!x)YYLk?ZgRIIj{h`Qy
z@ZeA;=uq<UOj7*uT=miI;n!edZeI)~1`r#YnnZL;-vQf_gsJ0oPrexD$>Xlt>W|ys
zwc{e&aBuFcVyn4kK&Ln@E^oW3KtN~0el^(4^MEmpmuhSVMn_>#hzt}0Px6k^<pQLG
zhnLqGh+k~fu@6BbU5>36@4C*e&vtJwoL#8qD~%t5OP-5*G)WUSd~R&6EUwI`icA#~
z0&5j}#)Z=2Qncn3n``yCYK;fw+qC9X&#~QHPmhP>q*~YG%0@ALu$GnrJbnTfukr2P
zfb^w<`X>?|?U5m&#Lks|2o`chNpJ;KC(iD>AX8|IS~WJZV`#_e<dgx5j%4>5rc%wH
zPqc6at<MT0Q?G;QQCq3`OaBE#Pr|tAZQ;L!IF{`Mfce0<f*SuC6^<~TM8HzSecXeE
zZHANB)hW_zmLg^8foWr`D?r&HSUGD@*K0a?(Z3#@z?f52MO0K|3UntZJH3d7m6Z@b
zqVuc;-vM|h%W86}ehZY>x@i875BCQ1hCYWBF!dzi43)Gkp@l>DwB74wP=__&R4Dl0
zy}z5ATjA48ed1=iN@^`F9J27u;7(c*5s|U)ApRAAD!mX;4*F19DtrRUg*MOaH~qV7
zUx)1lc%g8h3^J;!anz$1oftG7meoNPx_~(Pu2s8Sla?3K7+$rOqu=0{O#k7djFCG(
zKc{72Kyhz2FnZncaI;^bS1M8{e)qS#;d&=M2a0W-7QTLrF@9FDXlEJM-%X#^Q=(8e
z{YO?`pAw)Gw=6xL#MhTOJ)D_rBsf6LCue8TqI!|*msfXh<md@sC(J~Y{wTuEoy1g!
z#3v_5q@|^OA-<K8sEd=hDHMD0!fNT?$yVo?7~si2)=`#F3t+J~z7n3ThQI=h127%$
zev-Ba4w`rEm$yF@E+0x<0>XEsh@SZ%1v|UwIlkQ_2uMj-#YeSE)(DVvIR#=c`SqWI
zER8I`OL9!Q!s22e9a$L$+<){+>5%&{uf;2AySwAw%nfjp#Fj8M6n)rP5r09!(q-Pj
zV>M8U?+aCvJdNLZk+zZF#e|b@=AeX%viwTQqv_A@kvNw}%lqg^eP(x&J4bV^E}<)y
z0u(@zrKel@#mKnSjdQIlAUNpi6A2dNoEg_B)@gk;@zZMaS`ozJFKD@tb;84tVaLeX
zQjsM1+POG5MjaSU>8rfd#42iHok%AWVgkv}Kk(~xOxeAm%pbs3(|X1!*n(SZjHEmr
z5}fw^^=A|f*Gjz>qYbYfkr_rVp4H<yeP70*9n;zS0+sX~giR9+r4ILyS;g=<r*4%j
z1{G+b=_9Lv!wP0vY@Jx-W3;<#53&@`&k+*xCDf!LE4pExxpE@{EiG<9mNUwVi{N;a
z0>7D6l})29IxMA({I4zMXSI!5<&rF(uP8AmjxCyXe0O(uFBA6syYV^02)FxJVNp@(
z!QKs0JM2W7EDe`w#piMOS#0Z?Pm+Eq^YfV&Lrx%1A|<oxIk{b*ZtJvq^RtmeWl~hm
zyN;jUbF$JHK87&d`;ks=yQJcxqX5847%BTXJsl^>;v>jsD@Jf)aWV2Z;PEy^*fn2*
zaAt0<Yxj(fl@-Umd39-G!WaZzFJkO=sLyR`qA=@={xkpUnIuxbBSA!W#quFAXP?fD
zSz6{>o+`Z`?JdDrLM1DIrI-&0^-JAhV+jG6`Wpbk0X4>?6LQ)B3B`u64L2#g(I1SE
z$+3Q=*-n$AhPgYI@ygYe7XTXo)^W1Nle2~%MZpaPrZ!h=KIQ(LZTFYUA?yttKOX!S
zWcNEmFq$E-!KX9XbP7Zg5C6<CgSifNNQ#OymKrleKC%Q==J8+{zK+#ram{s)^V7d~
zrn`^e%d%2eSI?44`4?g7_d4wbkp|L%yN@;(*$9=SLrW!~%^*;!ZC@Y0(XLXTZ5=tC
zj0U4x_6>+avD%pMo`wzluFErT=NaJAMP)1phbuV5R>;=B1DT1*aZPB6$<c!_Mkg_E
zWyDqZ&2qs}Z3mk^J0c_GB|(Dck^-2d{25&n!=>nvZ~tK3NO@EnCFRrv5lz&e4s>uL
zfws4|ncxV!*}&1M#YHS>a5fZv^g*}D?FT+zr4~DoZw*#Ahq$62jCD!ahJ#JWfX1ER
zE7k7*ZnLxkyg(gtfx|NF(gnkh==Qvr)!w|ieewkmXlFbtP7NAb`(ZwK*ULISLL!TR
zs$UnqSr?yLY~f??Gwqgs=atoW#r&P%!xPV$y1KfnHb9>?!$+5E&$J*+d51O^d$XjF
zsrFq-)^9#ytPb^zK}$dnqa_dLsZIcv_;m90_PD*g(hT6JgOd`Sx?Raihb7793KkWD
zjqf>dfH);YCFHt;yR@|QIV+1GaWFL9u}$}?d^C+8Clu`F;gMTeNeILwuJlp84LD&S
zmegI0JvSNd-`jid*8u_k-+**t(ictc$80DKHs(nMFu4Zv)v#1YQhIt60)db);t>@U
zrE97vE5m=GnhEeIIpzX1s`n>PdM@tb{sr^5YJs-e6~G97G8hA5JC-Sq1MI}*rF*Ch
zo&2d^^4`^J^fXPR=Lw8>?njRdH*W`VI9syWbSkok|F~JQ8McstoPG@u*3{P%h$3mI
zLozDAe);nI3>Bsh2;V;GK)Z5mI=aIk&cx=PYJ5QwPZRGfgKz`Ovj#$$woGobzH@-1
z;-uA6RPqC=D)Xv%eq)xoEoES$BGa;TXyEF=(G)8;tnt|p<9rCa!2t@oVxG04TO1I!
zz#6*RB+q*u^VdbFX%nBo<n*Im#yr`j#dvPSZ-rldd%&XWNEUK>HrTC9{?00^Bi@mL
zh3;>t7~G&TV5lEi-p!rlka<a8jCHP9*=qB5sf=l@-dT*Cnc7)pPC)?%1olT7U+>h^
zMKjHvxJUG3tu!L&Jxg_X|5nia{w$|;)i^BSdnhQ<bLaPkw=^bFzjM<=j$2bKjq#v2
z=gb}AUScV`MaN|$jwzh|P%&9JL*0177t3SyBk4C4tE}|#KW=*)mICPj(nK?}wpN?{
zsX_@jZ}l4`7-z=lOgV5DeKlQ^Nm;m^5QzYM3$O||F5D1fF3h<8+_*>p?4GNcmdpz+
z9B07!t!Js+k5(f8Oc(4g^LM<CwWGpZ*xTQqoSY0gJ#`_&{h=KTL?xNGZ{K!#<)y7Z
zU06?*RsY2o;GnIYEOF^4L38IHkY$Aju7O1E?b#}Q6C$)4&kQRn^8DM0!TWS6Kt;TP
zEv(&<HY?d()w-X|uEfCh{)hQs0@J%Bi!*U*0$?3H03d$-`UUE!jUr*+D=aB-Gr}|z
zb=`^fkCn^i-WKCqp{m!+AMkW~th;$TO8g_(BSD(|f$TnV(t71Nc33_T4;ik`{BHH3
z$X{gT9<EZutIcrxI%eNhKkJkN^W}6-u?fLZR8KabWy!UZN)XyYYa)-C6*9jhEnz**
z1h||u4+JG-F>uWI#oa|`NFLe!y4ZL~piK3Y%W*^S=>cnob|B(+l)z)gkuctM%iW@#
z_nZiVA3n7kWc?c#D(ku|m2kH@d4ERA@l9&lt<<4_In+})*426g!CgOFtQ}%PmLa|R
zaozwBnSlF!qnx6mOvj`a+vuP;L5JpK6S9b%@<@W9*+QXy=Z4)(pK~)CTy;^5LtcuG
z-hCQcqEVCT#iU5Y>ldm?2q=K*hevQYoL@ecioEKjM$)zeOufof@QsQ~=tdZ}y0<c{
zitXviFh|YDbE!+O2*kfska?bs3U0bIR+#o;w*a!wm8x_zstDnqjj<P`h-q4c;m}5^
z>dZ2WYH593mh5-N43pXLGPK%b8x}$8k#F^CH7sXX3rMz=F=+P}f0{1_&F<1#T1x2x
z%7TJn-6jC)U<PMr<a%(uHCI(7z^4)lJlX2+{^Q1+;!E&c<hy(eUP8az_U>--BwtK^
zKC?I`qNoTv{xxG0MeP025+kJj)AYh=qwB75^`e@(dQe&#1s@+Dq(9h*D3E=Tu~6Lq
zUpLJqcaCi~F)n&e5sT$$+J*I<)#btBnJrI+0n7bhmFJ16oYpL*<wy#hZCR-ER-ehq
z&tB^fABY9)7Pwr2pO*#gm-rZ~zcVU)5g>(-knGJz<=cFd@M|(6;hUkVmx%0e#yS0W
z5<qtYkkjld0Pvtcb@lI3_6bJNjqM^dG?^B;Ek_peFz~7F7?8NavRs<_kG=Am^Ol)N
zQsF#y9Iu1G5ZEj^rRs^ugw4)iAr@ZKqB^|>-#{n`?jX#aD?SsOY3XQ?w0<!JIjb!&
zi*KAef*&<T=*Rukxs8lMx1|k);ND_)q3sK0?l-%FDf2I54@yd~rNNo=LCRXQV>*PU
z0IsNhPGH>ZCXht!=9<`ZTLs+6m<*l9_ivDdbUuY_QIUJ!s#^wCzi^Fl;;*lGz=Q&<
zoX`lzZnf#-zrWoComC~78rj^n=J)qOY2BMTJ5EB@NfrP}1$Sm+gU~~QEOkjL2L>#<
zkpvYI^q#>6P07%y`k&#U+dW<LK5F{7kFKoQdMUpfoF!K8KioFPgo8=faNKtLIW;x4
z!!(IqKmS&^_7M0*r_vN{&3m6+4H8B<LRt6zHrLfpg9LzVUL|JYqT*b?5o~O1bT{jM
zWVdq#)u?~fi*|sYjeU=EbNBEN1ypRsp&sAvht9IH;3}$?R;ACC16YRZ!yKCq8wudj
zfW38_^VqZvNX!dDurE$3nQo2DBn(<zlwD*kS&XZf4;fT4L;xjXVKZubZ{>~K{TruV
z)602@K4#bJn`8hr{J#f(jgF22TlE6r7a(W;T9=(BKR%nH2h~DbDIFT5uTIcHq^TtR
z#hA>RHE*^ofG{Nhnm2MC<qyl1k3)y43%MVpl<~fJfx&AvR&%)8?9tg3hSQ#Hb90cd
zoIXIC^z2Q#sCAl3!#w{+qmHn{U=s5o?++>a!kev*QiA>caVqlm0I(W>_yKXU^z)^_
zkZmv3epp8f468%a7pSr4tF1oj50fbqk~Bk=2?7Oog2(_<bKS6}7V8bl)oInjMG8`a
zOoT=<8;1lVSO)layR3O~=JX?y!sqm=muqZu>^qYh1`Nk*8{DZl3h&$;FYf(CvB)(1
zO<#KhLM@(ZlH$%nK~0VZu;iFxf~KiJ`p4$FIuUIM8l`|8Xt-+P;5SfsQL^w(p!7Ft
zK1mjvXV=-#q3ebyU&EwriJRK-7604AhKo7<3;T2d`>t?2N+O~Tj44To+Wy|2MsrhB
zjniXujURqQ2s)R!6GJH9n*>b`IK34Y*_&hzgFW45_rn~2sY4cZNV#5{uU7=ya8|i~
zec4CaRo4LThLdAXw-!H^t<>Y5+nEHv*C+Y!M|b<G*mm>`eSC)EC^dFAb=gQFdQGJb
z4c9(LAa=A-5Vhz?Po<U1olK)zU74IzM`(SSbP2oR4Y5&T->F7{ssH}-M_OJUqvRbc
zK=|O&yY-05-rY)@Ii%5YkG+|f(G>jHV&hNGd{kCeel=*83lP@9+kB<YFE8KH!s#g}
zDBL8Se6^_9Kg%XCKBuZVL_lQ{7?slaumFhfJX&qeI8hw!g!8|+ZK-)Z;#m<%@JjW8
zBUvvXI`5>YD7IFIP2149_nEJa%}Y$We|yE{6KiXR#lWBfx@y4taZl6x*FZcF()(UT
z;IFPsOsG{kZFZFlI<6g1V=e&EyY|bLfg*##*R6c<4>m0KsTT=}hl%9+Jlzy!{&*`t
zNhw0EXEnI%g7)NHsID+T?N8S!Ph%(r{W0NPJhxQ@tonkt`yqIeYHxnA4)ea~Fz4<d
zJ@2AC4MD?;HSK)cvgV=8WLsl_3;GImqNv{F5&>t2{3|*H@7YqckNtMLv#GS-Bxx-L
zAuOff@O`zoo_WYK3>f2_bPW6hD!jq`L#uwF1PIYO|N8w+a2;)4VZ-#No28$*^ilF8
z`rlM`Au<E5Saj8V%7S4sbmiTf6+O2VHA6ITgz?$V=!Ovf+3tA%&S-k2#W2aLV8VNS
zPBL8Yt^J-!zEub=daFRX@;ptu?UV)v3CH_SrTX=zz^k|bACpw31TEQeK(M`Ti(hH0
zt8cmqQPmfKYM-p~q<5_vy`u`UQFk;D&w%nS#Gu~6U~4K*QMHOq^ktHw`)r2Cn$1_n
zmvqwUTMhIfooYkQR9%}D)4ONS`VWt_^Y0qy{#`D+(Wo(m8t>1QszK0zi2d=+#6H0c
zAM2jJV{6#qay<hlC&A+4;=tILoPz_0i>qt=*RN=?TYn2A@3B-0h@U@yesdN=AW>MJ
zxxc?Jt*+^kqW9Lvr&&-?a2^>{pqkb9?_}%tAH~m3i@6frrwFK5DirV_1^`ZOdVQ<9
z`G+^X3pLpc%2p;OIS$?jM@Mq@_UvU%dn~`UxBsBUVMM~evy()ry?<X4*AKw`#Ys0V
zZx_Mr?5x;NTM<Ti=X_JGA1Ru&;NK`BdK4;E+gloYMm5&)Q5K8)@^RD|uG?R=yG$#s
zuSlM<iaSi*UF+RDIbf8n>y{6<fCvzMcjs$vWtCf0RP_7rX7@F~Ya*Jux~WyRN9_;$
z?Ux@eeeW;k+jF6CI^llyYeLpM!R)wF$pD=IB^C*9XCeRVppm#ikf3G;1QsvF_0LEy
z_oSXxyKDyI&zqHyrOT%L`8LmsVooumFJE_KxsBqv$>oMnh1nR`!Uz+BF^i-pvQ12t
zxK5e>QV|$#fTh4j9@L$Jqw;=cGI?66V>d8&XUoYC4Zc0B3R4VX<F`bC_CWqMs9$kW
z{5rqi$^w+fznzBrZ92Y#9t<3AQsH;&F3zISECe8vH6Nn3_F0frwk_}yk=x1hTi>=~
z7Z(>WCaT-xHxjNYU|lDw2>a!_Kb>HTLYqzs=0q&OK7cfZb+aWkYFw$4Bus@5q_`zd
z0e7H*pPsl;3rgw>NoN}#W?^AjlW_U<+6g@8zOs8pK4R%=!&aN4ss2U7{%5oiq(>>+
z3PeRS){|mOH0SVX-p~i{YSqIiYaExpWY+fSxtb%E)rJO=tgJY~!op9dWfR+Qu(83o
z=oh;{Q8H?Kh!lwJhT_C8b>^cu+jM4ER(!P#4XFW`?{uab8XD?2YoRvIL4%XwqU*3t
z_M8Ddw)JZ;5kRC@mX^#-&CP_7vPBvf*3$@q#22CBK9^DnjH?(`j_VR%l9KReAqs*5
z0zZ2q4YN8K;>3c5U3Y#<>FMcVCl8}#?y4IZ#WBdo(vsl<v*&k-DbOFDhqd$PFnu#K
zhQPH<svlj4i6P=^fKi~THJ$WPe(VtT{pXaWAfUxHlQ+>0z*`h8rfYfYrJk9zG!n2g
zom{xG>OGs?5nrWfojiw=*y9%#Bz^Dxo&2n-;`t(RR`kF30wg9844jEsj(r>Sf4JU#
zOTw-vs}A{SI-RflisR3uQLO&mb)O^Uz+DQwl8LwQ;hdmv;pcYbi_8W_-iArzLJTL>
zgGqS@zw0^+j5Pc;Kat(@lCA^7OYS;nXdS7^7Zb=q3m#Q(j_6d#r5eVbUyRV43)x5e
zi&gQ_%;$ZdPg<=4{vM=Rov?9uM3z6(ot>WE;z=J31LAw9F_>+bnNj{j8{w$zGnytx
zfpj2MA;tB-RaMv2f(L1BpLo7!PW&<P$BiC>&Ga1;)BzZWNv+;T%H||}d38YPPypMR
zn4V752souxL9Uf}NCO7htuJKR37%1=Uq9w^dst6%?kOgnJE=3~Ohsz+Lj?bG9xz}D
zU>9G2_trK+`Ye6<t4`b7+kTe>NDD&gqu~G=ckW;86}udUKZkb6h|Wb4zu=R4^K8su
zc46T+4;gM4AYg^1r7$isS-_vzNN^6^n+>5tRQTQd7l?uac~wzBn1GCJ?dVu8|30AH
z+*mR8pt!8;DDhksvlB>?w|2+7f~I_~h#i!&!orS3Rf$MoI(1l9Z{F;eV+>ab`QHfv
zwhPc-HWd5x?94<Uz0z*6DwN~d5<M;TLZ<KOAQGoaRb)d`lSq*AOL(x~?d8R=t^dPW
z7D1s=aXw;jvDzx4Bn#~F5e5sJH0Ck}s@;~ENqq$<ySxFAlM8?R_+vtr&oLIWVbtR3
zY~bg2-!L|&a<E)quA5}><?GjN1F!9`e?7&BTMQjBJAU9qrbLfBEBXT=6qj=0=V*8c
zH~**}SIT>9jJPN|%76-gyg+_MqqeOf-k4ce)xR&w)$!htZ^jo_RUm`dyI;X3WH3@$
zIJ%yL%})|l11b(#?@%J~?Uw5uuf|e&cYz)&rp1(TS63&z^OuCc6hO3x$R7f`ovEVb
z7$_(yH{F}Z<>}*df%T7hBR|}%I@EWZ`MOI>2T?oc3vci{eZo*m97IhV3<XA{rmpU?
zSQ7nRC!j9uAQG^QX4ZHz(M&?8a>DmK2yD`@++*0-j-7f1<m(K~4?zuxR)_O@{BEvG
zvJDT#gqb&(Ht(OT&xsSxsNnf{e?{z2vtQQCVN!eFFZsZ2LAde22uPl1rl2hzY<YS4
zqva1Kg%7=HNQ`11TKg`K*W*~rTZlT1D^&BZ&Emv&{7!mF<K|{(BN^nP2ZqMS<y~EQ
zR~!TZ&L^gbxw-d$It`VZi&9iX&&&Ik)qV%vsir+VcaT`Q=-0lck|j8iesyWd`v`Co
zhFa5xt-hF$QOj2<D)>A+Jm(4(xw)^7QGjNk!p9Jb4XHDJ0&e^cc6Rn%K7y_=x86)Z
zh;sFKJlU*H5h~xiCms1HT!H8iOC!nQBbJ!~vddAk)*K=IvsPo1n1C8u8xs?=^(2N|
zxb*P@V}Ok{awHFHy?<{9B&#7B{ECa@t)!9fe3A=l$Z|g)X;|JWUfL6AX>2!MkTSYd
znjaEK++cS|LUatk6-XU*_RDFzqv;;mWn~TtY{OwpOiVzQz`}R6Kdsg)_3piK-5txR
zt*w=y!lzlSv)6BLo#ML(_8`$*mxD^!g^>zB!ohS(<_An2wci<xiezA5@N_jdEiDaw
zmIkG`52$cGe>UX-#;2g==2w0JELoI+eNkTO)PCoaQEfjz*xQ%V2)mf?d{;=k;X9dL
z@Zcir0g~ZLdF)qKZPUkxduw0~)!N6(e(DeYK$+Ubd@c{ZfBW{W>)^m{m0)^eBD;XX
zdT`-g@iVqzM02ygneDv*MGQvW!=7qidQ!sT5~$?e^;y=VFJ$r@jrkG`FqwxR+Y3d<
zN<Q0}!Y{iY&ws1mUDmg+##!@|FkNEOR~{@>$nJaRJfo#4!aC6SO^O=S14kQxBg`w=
zL>mhWF#(=d)8e09a6CLXz=gt1M+OH6i%UyeMaXd9z!6el)FPTbNya{stgR#}vhOg?
z{Lkg?2Mh64AH6+11RYv0=0eeHPe7#OGvU)WP~k$xm(Mp6g7x$!>O(I3X#!Tn9M{Ag
zfo<q(Yip+tZ&v|1-?Zlwp~$SGjg2(mML@v;)IK`g+bcp=yEy5mA+U9rKA)eRt@RSi
ztQr|nQUvS=5T>V7_~9n!D*fE+!xiU7m{JCq*#_Y*Ph)xzgo45I+Zy-QDLL~C@P2H=
z8K4_w)5xIodZ5&$&CSgtwzYa}BvD7XQ%x{bWTetHgdkC*CQ{*E+z+O7>$gGrJRMBc
ze20(EMcvQo20*?b8SZcx3fQsfPksg{bYcJDU<P&aq1yx$l!DJ+XAt|Rjg~HS10X}J
zAav5V;koPk7vT)?nAkWtu-L6KN`702PEy$N;U%HW4M^X@BCo}I62W_Maq$eusNrnG
zW?q@{0F1W%`-$_C3coqRwd{Vo;exa`#q`7rjN;Z|*x<D3p{13Vh-6oI6M^OMFAG$Q
zMa-N6GN0hHw<7D4nXZXPK<V5MyNim@Auu4oEa7FJEmWF41biQiJ;d;B0pYXjRAlED
z6ufA!s}o4yy~YhUVXK_Y1P<G6sLGdGY8t4GSc#n3;0+K7If@=?&cA9KdNF}Eq8=m7
zdO>>=PsBou9d>Gl7Q;KC&paGuow?)%QvQJqOUNrI*rfy!*UkfTw=vt*=TBa8!eRv#
z3IkqCA=&b2|H88Im^P7_Wqb-p0;)GDBMOte5iWVGKTJI~Q{<!VJ1;L`ppQ0AJfF@q
zGm+sQ6_=DmpPSu?>S=2yV|4J_&Oo_vLx7<|<mGMi(f#_xB`stTo4zw0z3xtTKh075
z;OTTr1LAw3Jlz-;7S@=^tV{&3a!gB$7~qMmGOAo;d~P2<lBcDoX8@or<b7`aDgO_N
zmX?0(bJ4kzIIeZ|*NS>m3BIa5lHq)U%;FE5=936mu4g7EDNG&kQA6FNIPG`u@PCu&
zw0Kq`b$Et!a>;0E2}7{?)gTwjRjLkL*Q>|=SHGRcJ+jY(9&PSPb!9;oAR<JJXQnnU
zFYjQC;M#y{mP7_MuO+S$bE095=-Nt2FP}Bx5CFSRsR96t*>TB7v8lB+6`L3%PU3jN
zLq=B#JUg4lgI`C@52vi4$KB<<6VIj!ui>pfm03x{j<Yaz3kb}a59VPL7GS`UEDUVv
z!}aNQENfW<axiVj{zd+Q-e;nhFhY_jv`r^6qkwyUiMzkuWtW%k_06M)QFAAsm~}(w
zy%Bto7hfU+l!F2pzu-(3#i&(Y@=iY1s^ma&Oud%$a?Gs#tg}D9k1F<DSvKK2qMaOt
z<QBoPI>==Zc-sr-Y6`=73A=`#USff|pfU_DtiX4%?f4z)pj)Jae}CcvxU6H>S3T~x
z9YL02H{F!n*Lw*#5(V8D<3Fzh%9V`1)x39?;dLWao<vWwSbB}?R8>`7V%8r$XjEk$
zSy@w~87Dv;YaO<OhmMl3lo}izjoTlNM;SU@peoon-Ykw47|J*S4|uK}Ps7+oBsqKQ
z%z_?tf)@K@ZRp-lO5Mx|^6a+7{gaL~7#R$Q!j*!+O!Dfl-=<aOZEGOuaR*{3F>l=q
zFP52VTcX>&V;x~;(3IJ@xS5<?4Y`cvsHv@=M@Q~#2YH?qNIpp02Z%VfA6irycV0|#
zmnK;E8}XA678I%}oYx|HG-y8|YtgAe`0K>en4Qj6)IA^8S*N4f*^|Fkuzkpd76Ib9
zN^|J6FlyGH6xVQAw;b)|<<*T|^U(9h4bj+0zCT}1@J-}nQBHC3G=^FVmr1a=q-47q
z7}Y_@tNj(Kc4Jvt*(IPd;;(L`;7bFWP77=b8e0DyN#GJLNb)7QR!yO`tc1)a*UAz8
zx3Z$3aT?_S-qdKP1$!q8OIl9B=7!22+uC?B%G%;rUBm5<Ky@luYa4q$6_*co$1^w#
zRKXLt<)CnEm^z&zY867}9j3WL7=7{QU%x-VnAOamg@R&gGlcxVi~7Y+xm;KBr@5bq
z(ad1`M<E78smOI*cSg8HGE~HwETq_8!x`tW9T^oB6>+|)yx18@H4_VX@J(VHj(37W
zg#B*Z>St~FRWrqeeGV2XNe`QQ-%M2cw@Zd>HGJt1_!2x&R5S&FHPXkw)~8sQa#5F7
zhJ>xhva_cCbXsuQIS__se-@-C$Ri#$sa=!;xp}yE`>n-<=aWnn!GrI_$Yi?_OE=#0
zuAD7*)ejxYW=66x$X_3%4s_{6T=!R1vx!)iLf&Xik-lV4&iI7*ZLFIlNUpq^Ha_G~
zZ#9xGI3Ay#UhJ_(hC8FFH5=tV%~wjg_Ih@?3do<0jg2XSj+tfv2nBJ#?9pHoQ&UsU
zKYOq!hpP~S<~MWeF$kzm>APP$JM=GJ^sB#nH>azwzdWrta*jQ$er7gOPg-l+=j+C3
zJMhbEZR^By1T@u=loW+-+Y9pNsVgyuPg-~UD5Cg98Y8vXz*E77^A#+1(`vM#8gR!?
zm8xQHE~2iX2cLeSnwwvS)TpZqWrL<@7`#181bVPh;H$1if@Ve@AwRZD5fQ&~5lc2v
zU}2z4&13Fz?zsA8Qc}%(hc2$@ZaaZnp(HdUv=C{onCGGb#o5^)AS%B?=Px~+F43)4
z)7Osz;OI{;mj-wJ&W<Gn0?7shbsun*H8rl^$9qTEO{+%^^~)KFSy_@B+_k%!79&4<
zw@x~2Yw1~8qpI{u-^FhE{50^^Wb2SUW4(M}^4<=Z!f~L21u3BD>v1HBsqqw9$9J1_
z1IPL$njNN~t5AZPM7<R{G%Cs+u%-lML9(XUdJ&5;jAJe2LxR@WI50S-JLBDU0oIU}
z9I8UreTUe{r^mK*_U9+^!9y;@4k}Wcv?BUw%t|UeD9motIAdC?Cme1flsE{1t853-
ze!Ao~>vPhp58n)2T4{83o>msjsi*+M5!rQhBnW7}xjna9Zwj|r1FzNCf|k|=O5pnO
zvCW4M!|sjmHCZa&I3RuJ-##2ae>u!U7CwnxqyHRVl=3fz`DjFbZNVQ&`tKeE>gtek
z?aIkNIf+S89dmu@N`1Fca=&tK?4F-S$z^{pVYD5O!xPn-ediR2Ac7WQ>qg#m^?iv6
z=M^MS9%UbJvy=gc-kK49#UjFD{mg)Et`J0ogR8EI42ul@#=4A5bXE*o{6>Mt7m1Wv
z^gRfWmW%~<l4`cU$euwF(va(K->4!+EkpXZCKaFOd&|-j0?WU9|4<pakxX$);IL3Z
z(Nw}jFc{3c^XP$^I!?YgeGd$a-$kPqr;aOcZCwROYxbDiPlCo*f+k-jqv)~xQ1ODi
zeVrhr6O=y6tXE2sNQ=FJh7{cK>K7WO%=zty<$ntwq&MjPn%cF4BD$%~$@)H90=7lQ
z!}?-biz-$&8w91)CSmnKD`d2l`HfbWLZB3b{O$V?SQ+`v@KD9$o!8UNXS44P99+j`
zG>WsFWTj;_5ZTb;$wGOpFd0nqFk>Yzj<j^2Y&r8n?ChS{oFa<s{HJ42{wwA<Fff3-
z_azMc*2E+yJE+T8Nf{*}42RTou0;3d;c&U$Y=5qFL#RykY*(|Sw4y={$i%$rkmpEr
zm=WC)as6hKMX5bB+9<_9O4-;+cU1Y!^y3+Ys)Qje7&LzN-(6T^KrmEAri+pc&pai$
zS3Z}^*K|v##k6};CGKC|fNhLrIm)knYAIA@xAdQpV$ZDn5!wTKaf2CZu`r5m-cU8M
zx)a`O7t}oJCmtxt2-1HY42jPHkIu^>HkgQYMv$YKsbRgTLMO_K-yRCrm6=}i)&ZXQ
z^wC>*OGz)<n*_Tm9X22fqXehTrK=@bJYALtly>qe;O?Y<0mw~jXBzu6Q&~W<b=XL_
za6kOiDT`7IWE_@mUth;~&+k`lHQvWwzd~eiF_wm=rB&&5X8Ahd3(*RrLh$-=1TChq
z?i?*<3pF32GdXErE~nm4fUY%iQ;#cBns36!SaG=bvx0j%UO};~nn>k)47O3!A4Tf4
z)9C&)FXo!X!AbG<yj^y~Qp1fD<{}1Cd^w`h!E{)J3b9%y+PNi4kyW+PBi7_^(pR%F
zzFLo{5wQH%|GeDfF<)rO+?Hfs4*+4$T$dU$1A%oWFe!2Y5y9_qu2jF$q#J#8H}9h+
zxe{4;Byud2o?<|{D@ZC^wH_trrNdeac_?@!LzEQ6Wi>_xmQmBy#nRI1bbe2hr4NN5
zkDp~j-$2kR1#Lvbtij25q!42+iYYH(YC<*4`9A%<MyXh`$MWaLYvJp=T<5$q8u@l%
zb9|}uJ2A-0ge#R0JEA81J8TdG3yn#(i$@b-Dyz;s)VFgk98VaAzjBdLd@*03(%`%i
zB^Mf;fL~^#FuYA~S*-O;R+`g*Ng)B?+4KC?AA!mVj8J&+vO_c8+3xuKl|8W6z?7VR
zb&tU--515EU`!?lhEapiVCoEMsl3lBSm41I`}41~wC<^P#xih#YS~OPL*Y{|C=wCS
z(ibm=qmZGk6bdCp3L{pky$7+O@Tk~O!x)@*#ajQ3Yf+&ybDyW$TP*4BlW`Dex!y0F
zoVVc5G54oQlfs0xPkow1m~!Olh(aOP8!^3f@dn#B+)B(6+qaK(trS+{Zh>GH3hC6R
z4j$=os4ha#{#N-e#ns`{YRH9)0!N(tJ1@N&eyd+;iblfmzHnc+)ti6K_e?p1-6pHR
zM(<b;Y-WK)a7acShk@Ju7Xj^C!74%wycv3M(|ducn^ft3s0W(pRQ4$=DVd2YS70QX
z9E&1G<9?UN>U~G)(6G5?^msGx7ke@DR@LOO?f%&M+7A?DTboY~92$JatL4F&IgwD@
zK-|e(gjkyW@=^3_mg#NXc!g`fLm^A&d3wGK6RKtWD_S;&jWcO5YG@Z7t)426bZ{po
zeLS?{WfeRYU((&*g=l__i)c~!-MycoDw$}#b}oR!%r^VG@hTH4!`n>6%u3&X5?9!y
z$q7-($;(H~Wr%gM{rKpidPFG?sBwyolEVJ$tf890DmKr|`R+@bv~b!_H@m(G<?CW1
z?Bw4NP*mig9yD88Q2lagK-NE3zVuP=>OY>>d&T8zUN?UVh&v8{6l8Ygyoy*O?2)}p
zOZ_7wvLeY&`YP7_<5h=Ab*JAN9{3!ows1YlcxQB)%WQ}5;AWZn>H8B^6mIpWOewO=
zG5i!I%R@P#rHD#2`p@({j0)k5!~nucsiF5Xm5qA_1r><mA~0eZ<t+1=*ps8)`(4Zi
zL*ZaFBm`}6{vS-3`ezIBO(z`;+QXdGt2Livao_VvdGF7C@Mo-lJ5UI$B}zhv81BVE
zv{d-}*>clvvJe<10u$SqEF7ud*^inc@Kh}B_NbY_W5qebpBk9f-54~!ptStXGvBV=
zpGDcP5l|^GqJJvZ>+au)N2dRcjT$7ZAj_YkKbFQv9wPfG7*iSoP_wLh4}i7PSW7@}
zR<*b0o^fdB6XPkfLtnC^S&MYWkvz8d%|Jnm?hH`4jE@Is^|^gTy3$|oR;ilP03x%f
zH2TOQIoDYTa+1a8O+I80zTaXX*0V-1Dv1}`J5BA6Js|eyM?hqH+ZRJ=wO(yiP5?oI
zf#8TPwqe_hinlidH5&<6>j6*q_AgdhfC9INlSA@t?k>s$!itKT$X#eBN8sGX*f<Cf
z9MmZlI1PGveV=v&thH6Q>@a;*YSd0m<99w8nAc*;ra~mk9z)wk2@2cewfe8t$E8I@
z-trK>cgYK<mcT&d^Ht<+n-0X*UB)i8tb8-o({jG~WfPqxM4gSKkaU~EgcT@UZAH6m
z89Ggmm^+mIsPzo0i#%NM_qw$f<bIA+Cxx0&5(vfqrDJZPYs1{K#`QqLE1vnUFD89A
zx^Ex>S2M!_!!%pYG_Q6lA!%6Q^z`&SVnERLT8~c|!zQh+icQp5mZ9JIGb2{9b~!ps
zU8l+ICCC^!@@yzJ@RvDhr)&_B3}%hlB;WIy4%sC0cv8>5V(Yv2dK*Kf^=n0r>kZBf
zb7cm_)zzAfcFxAnNv;cxD(mxKJC5o3`Q3}A5vVMqJpYLar22y=`>0RKdiaOYpXIZ;
z-OeXad&eTlNm`2+W9)@wHYE3o4@><~S11i`2G-S)#mBG4gd^1UFE<t<S=<`+H--je
zJyZqh<Nq3ITv$hiGC>n?VOlvut$9@fW#X|;YUt`gYOnitE(+9~Ees(erqOs$TeN^O
zCl1nKBIf#t<q{_eKw{$zM3Lvi-hhrKmd}?N;Dno0m=6+xI;QdzJGpQrZhkX7U*S_z
zAkosI!$bzqCt5Di2#gk}rl#3z%tdyCR;QdU5R`B8<h)<MeqE?AK|z(C=)Su(vHg2{
zZ%oEab}SgxH`;@Ck=V1R=WMVn71Z&^P2@kWXL1za6ELs<<3+htS4}uwvIPgx$|Zm8
zbP#wdaZnt7y_Akz0cYst5vZsbk-bx~0LDb0m|T2^wK1xRfhqqTTKGfnksn*0K(K$v
zQeA}it=7gwkmd7*bC$>dj+L3J|07#UJMD-5u?z<_RN+P8hq<}Aie6JfU>`$Z2}tyr
zgo9PlfUAU<ko})q`j+kMgG|UujM@z`C`O~n2sF~h*&x_qt}a#g2--k!pb1&xr1b%c
z9R-;jJ)s?7S-9QVRaHECr|?}2e!n*fs8PK{U|H@T*gTQC6ff06e;empG^tk(v4w&^
zAyNcj`P+!fx+NfwTwm2*T$FVM2fqaP-P+bcPJiFa+}xtmZaA>hJp2tNvILD-#`E7t
z)+kJhP8R0$VBGA|)q4+6`*HbZA>$yeEE-*rVXe^z#ayBUHPlq_n{pRKDudR4=$kA{
zAJ56GlGb2++}7#<&d$!JomyF0VN%eD9W<ALLf(LI@MicP$zkeXRHOt(lj(eAV={Cc
z5;iF<t!HDI;>EYkd}>h`f?8T8d=#5kw>i)^+R~k$Fwug6<XAmuUX?Ps^F<1Vi8Owu
zruA&O-Z5g({EbjnkQ6&nWGFTc4hr%(!(0w?P`nLQ%pSW0k%cRF*8Pml^m{(#`llTv
zC0=oVirJFIWk0SJRNTi9-wy0vCqy3!2<nZ^%69+5qQyj3V&*+yCe{gud8pR+&D_}Y
zVbkszz0K_)u`pAglf#_UrF8rJ*356g^j2XBlA1KE`v2XwE4;WUE>5i)K5DszhaN)x
zt{f?1M=+|qusmoPU?}NnzM|q{bpwM^?aO&7Wp&8?qA^#Xh3>!mhu7}z?s2rTi>U<#
z{XbnA3m+1C_?@ORF+S+$Mgmw^RJ6*Gtf*4Rj2QgCZqrqMVhpr~*}6<e@tM_WzxG*E
z_PP{yCkxA<El;ov7&{D%iMny&y?N&IfdS}RP|G6C+i6FVQZ)R@6pHhF1WS(FUwZC7
z^o-Vv;H5cspXsLv{uTWH+%8HcX%g&syw-ZyY0SmR!0^gUQ{;1ReWZe=101n2tttt?
z5*I}b*0r4;7aRdK)+Hf{LOVP>RD<OC0XbYkCNMl4T^$^X+q_y<fcpOXF=p1d{5O??
zh&Z&^-v?|<$~E<#?@F}Olf+bV>aindZAS$uVx(Eb?WSCQFwS{fk_7G(mfjbB9V~jq
zr)n=5`26WCr^RNl7AMH_ZaH&$hdr*K-&c=A6e~<dHB;o{Y2x_Rp<@o_#LP-hmdM8<
zU?z5$@T6{B-6Bb0)M{?zS2D+B{K4sIShLYX)b*MM&F{nf{QR`97f$<H?p837!diVU
zf5lRZi<B1@S`TbDgwrc4D+~GGdEP2dI~GmfM(%a8O-`g*yQ1K&6bf0Atx5)Lc40LN
z3j=PRJ|*a-2k3mwT|0r@TTHt8wzDzOfEk$$0vZXsqrE)}bu~3(zEmYl^bqf9l_ZN>
z(0eg36G|GoEyde2PqD({Vw{D;%kaU(7q_5|{qpv@x%qig@)$Y8sP8R0cED60Xl!ic
zPkf<z$$Z!gdM-!2R_U@m^c6j1(+iGx{S<;02UH&{w)TSpH#Z%d)ea8Mf8Nh3PMbX<
zn?GcDXn=NJ6WSn?-Ly*>RQF}wWiHmUf5enK@k{R&t6JX5sK0K#vPGZ1{fSZF0Wtr(
zg=|RROD(y-f5I)H8i@BV*lvQxoZckzBgxL8@Y(3%t%Tma=Y8*u#M1{fqe%*NYWD~p
zRpTOGGoI=|AwL0Wzb&gf9Oi7Vx$$kgBV>>x<K^WAdYcdv^#)B)StBTI(JmZVmJj9Z
z?d?0vdH4-{4r?=`TrXQ^uOcYA`D^Os*7<!d4+c|HQx}72Tab)5^x|2wbiEY8Iiluz
zZP-*VkzXw%f#6Gckws=&m!FY-${#<RuBvkWDmJvew;_Ljq*puOFHxVbm_w{Ta^-fJ
zUFe4}+v0S0H!3_5T=RBh>8?=JNlNXSP{LB?O`S}CW23FPUBbp1pbhcr4!K$tFWlOf
ze{8u(VZ+%9__rVw%{JJ!aqM$+;B|Mjh!WCvJj`huxoEfN8eua>7`!&Wn&GdMt}eFm
zT}QVu71y$fF4TAu5!Rjg{za?Cg?F{F?>`y;IF3O~3{ojWp}*_$?b?^CoonTVEM~Pj
z0ixGwr-Me+!aQDM&xeoJFDEH#N&h9`z`wWLPWL}}ja~2H+pW|sq8Y0hS68`=P3c+)
z-ygPL31T=;<CUe`HhondCV5<*;!pSgcxf8AM64=CSRck*{I0ageB<4nW5gpRs9+{$
z=zs48unpk94laAv?;HU7o1Ukb%mI+ZRzx;*#c3-h^A!d`5kEiwVintR6db<c(ztPU
z4T#CjzZJK3&2KNqZEL%1Yh|>wzKQ#g)YjIn>gww5mbdNMX05#gsq@l4!+AT?eYj=#
zR`V`~2*A}|eq`ADs@gSnz9TvKS!!=OJr=AtLvCiCgyxy9Sk=N$H<1FcOy;zI@s|#P
zGkHPPgTEeP)Rpo{YeIW+w+$sOLhLG^eEIgpAXtqeEziq{j}o;5)T;w}zeljni71b0
z1>AOzIflCganwH4;2OvhJLY(j*DI%@8-2&{UyP{O>#k#``^&t9Y`oBM*=MwtKH##l
zC6InNr&Pc&?NHri&DTLI=W2}Hsg^l@JbvccGA+{7MB{l|PGkRt$!0d>YJK(i0uTMi
ziN`8GwmrK^L;C)Cx<=F|%}L55RZOIyCH+5)?+P^3v6z*{kcaWVDOTSnifBkk5Wq*6
zK`H3A-bJc*>9e-|P5cD|hr@lBqA#o1q8eRyaXnX5B^KSK=PP=xy&FbA5K_V#_r(ZD
zY~%>>nEVJNUk^-2Z3_k4*2B48D0HCxYV>Mt9e;y8LkpFjHHkx)FW_gWvuD6zHT&-J
zQd)!yK2kv7xs~PA(3#=e%&<4>T?#Mu#nK%zu6|9$&`A2&LYp4vQK!q1?lgQx*H2$}
zJ?v%$P^*fapaN;1Ax=!jTsM5P1LMTeYe%*JPSr2{*6vq%T$^Dr88!S~bxfT9PjmOI
zv^oR}HRREPk0PKMP#-N3>4shEP?;Rpb>FkmC3gL~yH#T@APGlxo{4pBK7Bl}YqNq{
zeDF*R7aavyqU9KXzl~*xVq}fK;LxoyAL@xDPKG0dPI=P$S`rw=yUtq5jf|T&vm6_y
z6CAI5GZM9xSVlR5dX1%JV>>7>5ih`pbIQDYBj~*ONh_b=Eee;sc~&$_-k!s=f_G<l
z?Tc4aZ3O5dA&R9mAj2$fGYH7nW4<gc=Z>Y@@A1*drRwyE2Lv@bH=OOAvf;uG&3}nX
zZ}_x)1$EhiAg_XU7ft&6+pjP8L}Ajth(hRN8e1|>6<g=lN$2WZteVgewpUQZpmAWg
zL&S7y{Nmi)wVJEzaF5`+;r$)Tx^DdGjb17J8#$}&wlx$jt@y93JuHb=!ATS!n2T5@
zE%UJ>j~L$Y<xH>slz-bAFmXIFJ&mu<CYzmAKjlX6N{q*5ZeiTYrwm{+?oB36{AD+F
zO>#=bIvyzF<+|%|3NG8nseeYdOT-WBDy<QfIUZbylMuS+AC~25eh98N{ZCI{8B|9T
zw0jQj?wsHdAh^402<{f#-5m~Y!QCxr2=4Cg?(Xg`H}7}vclXEE%vN{r%<R+hRCU!F
z?|uY^9{4<FdsP`-9(JbH-#vWcU8t~1Z@+u6t{wmAw9DoueC^=*rL0=a`DwHM5|Ve6
zBw|2?T_O$WsV+joiSCXW46QniCLE2iJ`o7-&SY%A8NJla3GDP)4_+yK+~$20gw}!<
zQa0z6zv@9`+`3ZNbwBd|gtQsIA?`%n3aMRXKK%~+b7S#E1|aYAO@TZllvJY9&Zh6`
zYDkZ`KNy_xzr93@DtvyvRHHS`^Yin~<PyKo{_&&OjEu;$GixpoiajW_qJp7m-Ik4=
zefu9s%&o1FI5{~RhicYt?q=ov;I_g?eY&#&*2=^g4TjeJsfVU1V?=SMW8xYp1-+~2
zX5+uG3sk^p@ZzHlRiJ^x6mroz`4wN+*V}=d^dtG4)eqmY!13qBW;fjEFW1DwFD{nl
z!S=LJ24dgTzn&KRitXMCo}E83yg7;YLly|E-iC-MkK|Og+CGTtd0#jB`+^1a+}6kP
z`MnxhX$?Mf6tA~LC8OK8Gl{Eq{6$e8o`S_|#&t-wk(vQro`Lk%F_&TESQUIX2dZ{}
zE^Jhyme*65TfOV!R74h+%$2s9v7}3W>{q|DrQpk-SoY*l8y|}YkY_TaejaA`SvY_0
zIVt<eB{Jwuo7T@2fLxg<dpHN8Y<Tta+<g4}M<*vhaTQ~pFKE!)=^;f$n{WGB^G%-{
z9a|ELM^Oh6!FN_)WWxut?-cy<?I3}3=3Ll&qz^^~rRJX;5z*;9&Z;Vje=W8LJZD7#
zZ0nyU>oq3d@~9EI_3f*$xf^WXQ%h(f*e^FbQ78Fsk>+zUx~tr_*q0Bztgg5LqBEb3
zh6rF9p$(=~NYT&p(Lh+Qi?(x))fgg=-&>o$ud9B*s|0&47B7*X8(b?=yIZ)hWJuzu
z%fV<UA*mli^jMG$Uq4Qd8i_7z=nB?tq@Yf1gaP3;N+R88)aLW>omqVVI$+;~Za%!v
z>B8T0zzQy%hQjRH+L^KD!o+P`@Gcj*?5y|PPOb!nG=dlzdL`ZHdQfcizgYBijY`2&
zHSTLTL9x-#&uz0;hc5RAQ@5i+qdQ&$3R#h~6yvQA71IPl(kZvpoV6JMVXu{y%Hg;Y
zmi(}g!}z=(uS}S|Y|r%}G@AX>ReT8ap;`0c?`(CBk8#&n|7N%#Z_C}h`<U~<tljQ8
zD@!hUvGF>fkqqrWf`>}9_VMDfIR0{htLL2@U#jc2F1rtlYRgze6OxY~TQIoceqWR!
z;B{9!3G>BGnfTpH+^F#y_Y1UUBY|WZRAeyZpt!nm{O{zTb|q=aD8KEaSNSo{nj8OH
zkLJ$Nx>55^fZcZK2(R4`L-J!f%b+qq$cepJPIZIZ<t!id0a<dAb&^kcqGm@DJE4;1
z&;v*d1m<10cKN^!2?Svg2SgCp5I~6ozukPg9nP?SLWrn*S5zr0dJs#Z4Ze8VXY_lP
z)$?0<#f09t5*r@sna(H4t*=Lp{_)lE#;J=536AvXnbmG9Ek_Vg(2tbR|EoL`RL9ns
z`?mm-BN7_gqq$&menh_Qdg1jeaoc5uz@S3nMo}S&C0&fHmF%n)gUarRxj2yNg`1nD
zPC6ng=_9|yow)0Bal>m+Mm5W(cTuZVE=QR=RP^!-l(2$O_f1~_$&&0m#Y^gr)!Q$D
z^xSy!U*XbW;o;SN7_DG1JuSwu__3;|VEd1Co4@xT)sJIovtXmUSMQtg@yn{>^M7?@
z`$NmZdIcfCu3>@N=7K;->Q>-9oI)Cp+p&*^z9EiWvTk${7C^}1y|V2qnodxChbn4M
zw(sm|U08@FqOx`J+GzA@aZxaI(?Kp7!?0X$HaX@%E}1W%v$4tVwo+%tF5X;dCC;r>
zjpcg&d{#myJu3gmRSt@zhqQ!o@*j5uTQTB84Yor`4d8t=TiqX~Up)|Wfd$_Tip-8#
z?JIZL%#c73na$GJ(*Y1*IPYw+LL6rKczns<`x-X`rh)U#c!$Rkuqx7k(Cbgp;f*L4
z({-B^ly+k=#auY{a00vi@7>U$<e<JRE+w+y()Qw=0!U&~p*Oe@(xJZH&st?_1T2HQ
zSXPNQtNy`8;FH`1?);KVV-~Nm65=~x3l0|kYqW8+t>88J-th!TRPA$WntX%j<-z8>
z9}=o?3jpfQ^Uo)2GXDE%Jghg#V|7Arwa75~e)iwk@$){1?pPv>0uccdv^MKN%Y9fh
zPaaJX*onJ4S`5`{u|*}B&jbB!pMhSr6N-|KoQtevx!p&dGPQ|TD>vU(<`DCjD_w`F
zkOiYzaAyf;UPSB69j?pQ!kw;&FOik_Y{n~pifx+FMJC#}dMc5R7ktnb{%!_rMvjJ$
ztq=Ip@J3_F^f<>e1p^h}AFVsm5J<1qOhy5u3K|+L`tL1|#SrF@JQ4Y83xCx6m;RCN
zkr9GKS9;Nu8l@O$G2_Md436`zF!aD~KCzOc1?2eh+=?;;=s38Mk(OWlo@eH*i=4Aq
z)9<6eO6%zc^{}k!4X$hORF*;JtUi&)j{G-q>b=0N@dXW-Hlg*jdVc!uTvWf0TZHRC
z;vW>}nugkqwy%%2bIMq~$%%=%8clgFjT-Cx#AA?tDcZBpFazSQid_P*<fC4dowhlG
zMgy;Z7Ardq&xYcRmtym_$F&<is{fHu9S;YZg>vms4dvN|$De-hPsb;9$jZZG&zJ3;
z-@LpFCcgyLLEfEW23Y_tfEsy|ZYZJmh!Cn)j>x*W?#AGe@kl%oK#%{lC`6cfmYvJo
za;n)^qf8HOUH#Ur3dFB76~+=d`ot<lv>DAkUER=<YvJVGm`!b;`*_Pv6nJLtW}B-_
zsqi^_koPZ1RGJt*0X|n2i}H+}Pa85+?XO$Bqrk2B99<s#LPIUDmsz?fJi8uBAI9;M
zpLJ&FJFXy7Zm93(gzuE^5tXTqhjX2b@8go+oczYdWm1UTEqD5E=jW|9D@k-_04iu?
z)$#)GNAkM^vd`NsF8>VwHzc?kE+$q*BU1!8*n=?jVJFh;r~fHu&uH;(l&o1r(WhZh
zC!q_*V|@4^6XT?n21EN^69L$M4=u(+ZyyiD1|Zgn%*z~Y+grCf<u=$KESvDpe1iyX
zhfiXIGxcDWLiX>m{r&69QoYgkSh#4>q@GK97e{#&Q-p#-&(XBmR`zb?_Tv1azI)Ek
zuvJ;6EDEITkbc=a-qG%jM<4gSw&Gk1TBKgEAQ}u9opaNh)nh08t5|fss~j6a_D?OP
zUu7p+SXj7uGMW}nJJ62Qu3NG-ntDW%nwq$&MZp6DFk<BBeTK5LpC51E{5~f*D{UNn
zzO0^Sp2w3Ec$~%&hm!FSSSBoo>)0Fngk&Nz9nN98PYO^fs1ycg#Kj&2#f_ads}bUY
z%V>|*i|a(&`+Z>Fz1&V(>Wdv|T5|_jw~`^v{}P)C(I3`N0_$W1maDeiO>AuXn=!u{
z&Zo~Gx_tWv8QS%7p92?KjmuLoSwjb(UC7~ZLV~weKR1Jtt02TAln;)9h=;j5Qd~JU
zVt}Vf#fWIBg?9*dLY>dZ6%!h1N_1+l$S~5&x(^=YBNlAMYpf_6w~a|n$#(s9>nxtJ
zm4iT4fu-{c6T}aNY0%w_00>fwl%kNJM#22PAWUYL`sZI790Y3r>Sq)zSS=9=B$TQW
zYY>OPM3Vj*UMICv23*v4zMKYtr`sh15u+O)=q1odrLI<pnEZ3G#1<>CgInd!T0mWn
zfUw)AeaKc6>pWrr9v%i=^yrJ6Rl)21<WKPcO0-zW*swjKgyK&1#*N^NXzO$oeUnq-
zyLIeu0xzd~!wKa{e^T7YV^skAK~f9FgvlQUJALSYDZBgh!hcUNz);`<2<u61Ose%7
z>t&jELh?%O>%ZiM!L#rE7>1#k`R0=Io30<bzqGY{&L+(^Yw|q(=<G=YC^Gg>md@^k
z&&To2QtnyQo+4W?X@~XIFhR3X(?jW~@#WomDsm(C#{JQpW<NkIyW<G~tCha@-}I<e
z=CqYvhA<QqVS;*lul@`XKIQPM=UWA%BoNv+!2@AmHyC>haQPzr_ss%$K}7~l{TbUc
zw(G5k#9-@AH&w+VTwH8y)`2cyqH3avf25Z%Q?_i1U384Y1(iEBfw-n7{sSAkzf*`k
zmkuaqa8*Zdb=w}4vYf-5eI7j?oWZBG!5%RX!Ukoe`Di?#1hm&;ZZH?d>+d&U+=$Fn
zIWUbK)v#~=*;`YiG^8|$^E^eg55OJLr^ie?C>|diaulY%U8}8;qXdmF7%zN5G=|Uj
z81NjOp5)Eztbe<W;(Yj6Oj57VY4;tUH;W;T>Dj4RYPsafpB7P3C*r08UOG$U*f49l
zUkt_wE<wXQ;)&(~TtShfB`m2lkjEMb*8^1c-<3ZPqj8Z2YoyIA*Gh2N3bU=4#{HM(
zHpx_`QIFk0;qC<2|0J8j#b$(fEJ$2nde2!~K2K}uy*i#B@>}K4S9rz8ZlkeZw?~&z
zx{R_S9I~;d23~zhQlE;9r3;Kz)q2HAu_PkU;3c+Zbz<aKeptzd7sbC6wZv-}dH*uv
z<}5Y3mlY$M%&?mA`-lN@6fGIa+!?B9&u;|;1_r{1u*vkI!E|sxW#Fy4S-Te3zb@?b
zuQT?*5|c<R<U@e5Wb)?J1OARApP@7uM$z9V8Q*hm{sO_UUiVz!c6B?bZPo$+Mz7J(
zu!Fa}Ig$aCTM6E=VNeJsCyO#&SY|qsf+xu)qiUZPH+#|(BlDx9>(E3aLKHspEA#*~
zO0j&1Fi0*S?wqeXK`soSnynd27i&B$1I|b7-GDbYgtbE3bKI1`n=%)|qIaUD2y}W!
z*I;v7oTIx!Uf+Xz{ymJMm)S^)Q?+;Tl<|UF;A!(p{JStVc856)&AEejf5Y?aSCowA
zDpC90OjyLo2wFB-ab5DMLOi%5(qAVYR78fAyV>vRq%-|cUl~fq+mAHwE?IDXIiY>m
zPp2{#mtZ3}CWuiDb@G>0Omvu*f|HeXz{0|AVrJjS?CRETZe^i2W;uIJ?%iHgh3Yl<
zZOHue?n@mpbMV5`p#3A=!OpatastX(*S~0(ngL~JX?lPzhT?F1(4HmI=A%v3$@7u+
z)8jF_e~Jx06h&Rs9vI49Wdqw_)5|8CS_Iw8geH$yV#hSKWW0T~UC?wJZAXF^&t&&O
zTkWSe9>9B<DNwr)Z7)oZNGG%)JK|BHx}Tju=t_$w0$~QV7S|<_6_9edIY*pM11az7
z`hw=?b#d=j`PO@?eRN}z18fLHhULhU5%RfCXw;K+lSnYqu7T$);&^EjmRbeV16F|#
zppCE$)2wMvT)%_v<GChjD1Cd(Ex2JoCV&zmf@mOVcF@(`y4JS?Mwu!(yS37vzGE-o
zGwpdIw9~RNq+$^=BU`|Ivm}ED^Va&y?${C6Far-5Xbv6h$XG~BpJ=N9a{1LcRe5(g
zO>9D`OCp0I1eD`q0s6y<9MO&dP`G~O)f9bScXFR>Qt>%KV%GA`TCBy*3Vhi36z4i{
z-;OK8=`uZb6%6H);u#NTrsCAMhvY>5u*I<l=-+S5yIUSAD+D8mtHthxmpk$7+A5Vm
z6kYo++s$j}{ZrvRwjLwhT|x&~4-Ra)z9H+_|2X0V0_^_*x{G^omNzGW2FbjR+e*5C
zfNuT5t48mo_dgt8WI9nTTP@Hr!p30%f}xfHE)ZSta1YB**9pFk>HjbcuS?kP+*K}H
z&||JOw_(OXH1~7bnXvjx6g@`#Ie)lv;0odF#KlazMPX+yNTo>M6iK2S$Mdq7^m+Y7
zwS7@9R=^(f&Yqb<+`lt7%-P_pnyr`73U_aX&Kg6L;`dgGe9FSIvi$0WE=6tO#|jLJ
za6{uuR_4&okY(6PiTxrnKG*A7yeShpuHsl~1!Zl-UM6%kQMeF<Rx}Y$K*^Yc%sn#H
zTS<ADu;yb0!;!lYDWoM|=s7R$ToZsUgLFqZ?=`@@yi}M3FMw{;rlQh>l`DGmV$$7d
zonTjpX)hX8Pw2kI#A}z?h#sMf8@{Tv%rRIH@9M-C{QmkVn!GmA-LTu`0HVO)Fl0sy
z{~e{l7py@S;!YNPf=Qg)vCRS%D13Le3|U=t*YrSFmJH7@zMv#y_1%2|)cvLR69NKa
z0Ew?|CtF#|TCeECbu#UTdRu+=`PM_V!E8l4mUQG+L8IDkNu{-unG5q^oGgq6lE$lI
zbUzMC7t<Jup>na_u0$9(k%sBPlul%=s&rYn!ICN*8bF2gtvCM(o7|PyQp<b0SupLn
zd$7|guk(?yfzM@X!4Aq^nd(3@v9`pXZ?SUMCBY4^W_4}plJubS+StW5D3&M)O#*&B
zp7f)TJjo8Si5(A44T*pWZGD86#26@t9~N&wq^ON$VumNF@8o>077|h82>Q!cboOHX
z_yi^GtRA^HxNLf=xzk^~9yNsX9kH_b$AuFFa5{j2qL)LY?SYlM0tEt1xQ*u=X_}eE
z$GnDQZ9sg-^~<<#_$x~sml-s`G8nCV+3>bHUUa}9Xb%mvO|nlB=ZMkd^CZud_Zf61
zt=nQmV_KPxJVJd3Mp0GElR_}26-{6>k4H%x3d>+lO;^o?mY$~-h!+Tm#Rwq>rH+Az
ze{ik&k6UX*Lz7!<6{`yNgRD@BkkWQgias#)nK3&zUwEJPN!}a*EOCk!s{YR!!=<*#
zIpsRdFPw+jyc*iomS&{5O14T${FK&*eNHf&&)0)qJWh}Ul%)X}KweX_vW&}y*SvW%
z%v&c48yk=FozlYf(~U>mM1Lu$=rp00QlgHIN#UCmlflS6#=wPBn%@sTh#gX-C3L-d
z3Smk=o2^H!aP`=BPTT}72?NpJ^QX<>lZ=CUF`~az3iDAFRFwd>bA#gA2X+Jwv8x>Q
z%^$0)tl>lAM0|W8<A*7nbs<Tix`mq1gaiSnjzYC!sw#Lz(Ce3zL}m;nCTp&p>F>&I
zOm>Pmb3tfZK|*nq)GaWp4Y@74t}-hQ>fJ1Osc6)62zhN*zsI@hXc2PF4V`R`uZ@_`
zHnmY#4ed2ryCfzAKfMXUp<bVT1OQMW2JV!Q7w6(Mz(NcN;NyTJmn6@*mO``<dA5S0
zswQH6C~CDkK@lbGe_9s9@sxZ{un{^kw1_-CPT~hG#O;I8d(HB*RqhzShKqky`=q_B
zCiGXf*%}V<ul7(*RBigYv03MDmm`P9mPZ8hqFU=TaK$$GcVogfhm&!TNP}zNg+g<k
zTG(w9n+^j#&#r<1EDm~&E7!l_0BRM!sy$icGa8Qfd)*m09CcGUf0dP`Mo&o{g=O7y
zVNmDNyQ8l&MOCR$A|6iHO2oXBM0{%K=EIPbuk3F`gUcFmoWmt1K%P`#RQec@5oJR8
z7*Oc;K?#(cw#_Th6snGdfjttM;xsK-Zrxv31xw9KEZ<7`5rk`0-%6oL^03YK1ttyl
zLWfLtzK*wIPU~<SoJ&fvI{6VQj8Q$K*?k^hX40TziZLCa!F7+|VGh=GNtnP(Mj6GX
zA!TGR(PN5WR5j0zY#4>{I>5nDOUx9S`}6X^0aTUp6p&F|NX(;8!x2F2(V}vyy$4iu
zrp=*e2N{7*D60-aL9buvsaP+z+-op`(9O#ZPEtS$&v#N>$g3f{f6t`;BxO$z8>0ZW
zeqjzekXWP49(n6GlP|xGnDEPtpfbW^IYTA^O)2&J(sS=T;Mdeq{<x6zsiPD=I!Rr2
z5_xh#NGGFHhkd79n5N9oYc5|LvfAXCLs;^Jfgr_?-J10$T9;AK%MlUv!NhQYjws8O
zA6`~4CP^}tD%Sl@ghm2FX=M;%$UXLj7iv`dGlXM1@Ixj|M*&krfAKq~P>0JY0}>Gn
zQ^t4+EgLUB;KKKOT3)jOvUjiQOLQ5gthwcn0=G>=bFJ5en`j%=l8PV3e^VcH;tsRi
zh}w^O2w{!{#8a?25jm5-d-{}uRYpXN3c_DJF{5NH<`y~gN=xC3&RKYVBSX&Dvou&&
ziZt4;JKVWrbHRonX9%P*H=OBxzTiT}LK93#N6Vnm6CY}52FPr!f%_AfGAV*w9Jiip
z?i;@q_%5fEH8EjV_MsAc!<UcRKeeI)dp|;vEFL7RvuiKve58L!745bVb26?%Pv|Tf
zuwj@hQ(b#lu2EZDG}B?)?Ozt&W`wMhmK3(rTn+lIEmhmnI!M*^_vM7g)coLMl_7}*
zvc|37=yb&b(GW%`HfS}!ion5JrYFnNG{V-{eN$<#|E=v{JeM0Mb;HG$FB(q`Isg<C
z&%nmPSs!!-`Ll+`bW@o){XQ^1|NFr7E$=Kj8yYSInGk2)&}MTCFG0SM?PuLegKwsX
z9OX#w_7!o$sZl5QKNfll#Alvm3ml6q7zN~tlqS2Ztg|2k81@mI@J#JK@Tn<Nd5*jR
zUBRLZU6)4%O^35yK!#ju+OR~{QirYp;6HeZluoqJ<*JM#oZB+X3)<LzWk?0vXvg}n
z5E0z!KePh23Up<dyly8+zOhi`>>+bOmMtjxNwRp2rPjWdYqpLthRwYMy)?(Z{F^vE
zq%tQQdcPc7ECxc`+}a0r!-$ZE6%Y3VKJLT;+5?Y_aDhgY25gkMcYfFu3MfGRW&Q%v
zwx{1)5Qp!ctWvok#~j?a4JYI~DW+Bo%JW}5-wR30%1DzY)~JPq{fU188|Z7g3^i@v
zA}|nS=l|7Y)~g|B^b{1*!4!YUwL{$8T~?S{t<oc$S&;pxmtf|&aNP|y$gI~}5F-Vi
zphV!12-pBRfON86M?AV-Fx|H*5TVZ1Nkf_wl0{&*gN{#lQ1}<^=z>Wwh8Wqnc;j(h
z;Fr}hv>5zlF>KN`f<jk1&C>GnQ=1@#f9NE`L&`5|Av#@9B~PlEnoG1-Pl3{33+M%<
zB#94gMIa5vp~K-Ao+kUGy7U|0oz6lgC8;j8e{=SsP11t4^BitkNXO(BL+olc2!()y
z7@&ZYgfL>EOBNZCCOc;HFQf_i$oo@e#3B|EP)K=})5_?T*J=H3V|)k6({&KtX77n!
zPjKDcW`>Th7JXa!%3v7-qS5&nK>S2ATl1sj*znU*oiDP$j0A>2-{G;sMFW1o#!_}^
zHvUB}acLNkr2=Q!_>qx#+~x-*<7mUo&5XVKjsk5{Ik2MLq7#^5FE6Y$vl}lr@-~T|
zGS=T%C0n=`4UO{gyJ{BFhBWNPZMPSC9l?8i)vp(Mjdci=i6v#}YFPdJdi;M`gV7qX
zlCi}?P(T5mtwa&Dz4kNXAIl3yS%~&m<@FTk@V~LE!Ld*$e?5`Da6xHj{*4<cNNT+D
zT`D405?F5cax>D`&?i?MUYgm7XS7zFBvsH=mi;oCoku-l$1^m@ZBoj2n290soo=)&
z4k+YQ*N&mu@&|Z=lh=}fZM{11zDf*;qb|C0TMtx*&5F^J#&T-dL<Nf!IgXCeK`6-O
za%*usm2j{8ER$MSm4$_h)uuVHhpmxg_BwiBz65{^y^?o6&QXQbRH!4gtHxOmSW~o)
zF5%{2Y}V?^d8|45{<jz44@vw1@&c5@*R))F%<r^NaYF;Lqdbtd2IS3oq>5Z<r1;1b
zOuH&w9M&%x>NeV3yZ6e+UmVVNM03VFk32<UI{Sj5Y_7DyomO%jq=QSEjjapoukxJ5
z=C7?HC$F>^ybO?qNYy7dr;<9YPYPD=!IZk8Wo5*JF^eseh=_7E5R_9c$nkXDHFWl*
zQ*(PWS<r6+Vg<S(4UXjJvPDYkkOG2+va(mOfi^<)yXp8W#w0;#8gJXhXgc~&SKV+Y
z2pAzz&MZLLS%Wm3)ZWL2tT&JbOlWVDb~!y1Xd6eUQD+_Fw{k<u#pMQ9Plm$E3ERH8
zaJR=`wCX=tTk3coyVL18;PJW<f$2tLO@>DqocY{vL_-QQze7ccY%jWixSY{4om5m+
z4L-Yhuy7;>Pg^Pg48d}y{S%~G#$RiG@DqJ)GU~%50pPJ3+)%{JAxVFY4w?-bo#4il
zbtT_XBgc>fWn|yhx0H73ywlUyFGG^_74T2+T+VFtN(4YG)q4<%@%XFEh@|{nXMPJf
zesA=7+wk&Un!E@i>--h<c&n_D$)eKe`y*~$yryRje*A&1!LN8A3InL=Ud_SSAQ7fr
zV~{Q<BQx&cKkEukL`FIz4%j~C%vf3Me4X%byz_F09Y)d`$oK@IPJtNG={ZPiE)P*g
zJNjN$FL*=i0PMPph{l>~kRL)uRHjLZGlDd5SkA<J=4dC%F0m%~$rf3Cs^?0h%o*M2
zDAat8#+sG}nZ|NrK4mC@u*d<+=B{>99B*QZbEm>k6r_R@$TyPtq-9S@euQ(>h13W*
zdASq;S*Na#Dv~FSMqfYq9c!5!Ev>_FSDo6^fBuqdivFRhYE-R32iFD7kz{pBXDSE(
z6tL9*DMAeg(4F6Aik1}cg2G5*YQ8iEbR~W$3(@rVw)&kH3MZWH$(TeKvp^?VX>taQ
z)Vpvr7DIXa+J^?BrSn^BQa5>R>2ft*HZK#mT5q!O-7J$|SpbJH#!+}kxk|{$)1>OA
z{8$ub+p&MLqgy{NV}?L<b*cVoO!2&Q!4?zw+C`twYd6Y%fK*&O>6YJSZ+ThSemm#?
z$Y8-awR+mqn7tCRLn!)Lf5*x1Bim@_<unkGa7@H>`<^10!RfPqag-@~2-VV{t%nt!
z7{Dtx`Us(Wy<mpAyEdffiIQ4hweGxUPCdiArLLfYcidN%05AuL2)S_@d)~Q!3CPor
z{6)7~z1Y8dO|z|lcaJPfP5*6_#l?w{mxZ&4!+Z*SR>pj`C<GTPl_o{C17}X4RElLi
zXzS#YARSUSOrjC8w$#oXAiM}^udnx|<vvVAkpc_rMZtw^JDQLYxuYE~qpa+^s7={w
zRb1e7<0Q#YM1XE9N>_u;QUme;H{D=}NqUtv;js#W#b}U;7SlM}kKO<aO*kkB{a<;K
zF+|kg7zZQvS6_Id$qy;$8%oJXO}`<4S%)*wkQd{3@TV-qdTd2z!b#8j^lzZ7<DkTv
zT$J`w$~I*m+XWF;JHlZid^eoN_M|$|3%Y>T8qE;HD=)$JXR3cTd~ds188S)Th*_}w
z%@v;?R6k!N&xSUvn0Cxi4M!OlvyFEOYwbMC$4~h^6UokHm(J&#mLaO>aKTM`9UIxy
z@fi@L9@Z=vKsfB!67czXBCy^WrDPd`iJrs*;T=%*ctNTeIX<jm+M{c3yla`i>^R!~
z^Za;dBRF0K4G9J_f=(2iThaF6se6R^{RO8$Kn+zqdHX6F^@ly~+*uv+0DeW53%%O8
zW_W>iw8%8JLjB);7~tICiQ-Hn-tpgK_-dl?)5vd#KQTh9#O}~e-N`$p7-!^;1Mixi
zGR7+&dc++G3QZ`v6ukr3`VDcPu-+e=N%?muQ;l~c#={a!K5)mkiqIgWVZbEtbY(H~
zn<ZlV7z)D$DESI`Ey)<W?$(<|u@vx_Uh;i6@1xgC9fN2JZ?*)bX!`oOV!*H9b>l^>
z_#W#4{a7fRdCvJw>fj`d;Fg74DEJ^W1!3KFm7d=M2~|5?2z(8f%wltJC3`i|8dYog
zwkHz)=NdBa^g`#qSc_0rnvUNWavQAHmZTpmG^z;!L?A(5jD^2?8!&4VT)X+)gq+!R
z3J$kzk$PwRHpBg}<oletk#Z<Eww%fG+B3Xl@rdNW2NVDsWuZ*El>STJ%?{0Pv9I9;
zT9Z%Lck=+8OoZ<+V_NP{QK&=~r=bTu^>ZLtpNZ#6j!Vwpsz^-^+uI4hSa-7?7q^xV
zKf--|Uh~W*9q-Ptg*6?prp>Xo?eXI2wwDhD#TF}sL4w&sww0Z(HR_L|3hL^x2=UhV
z#18+q&#|tdpr9ZEH5k78Rbl!sp-|HyhE;U4i90A1mGD=U-alytLYacHf2@T&cP><g
zMRS*_c>G?r?~4WptXq>=I9y^9bQ}lhY)vazW2~#XfEnq_0yJeIP$fHzlQr1BkuEn2
zy8t6P1fr0#f0^(yPSSRqM@Z}sYZkIcW3<cRT9XLC$5Z{qSaU&3L*;L(P)%|YfGedd
z4L+e*ze;DyLa4_=WX;yOJCstNN7_E4p?;}D>>ZEYi_Z9bIsmv!h1{u6)+0`;0Z)>~
z7t(8$;)8JEjj8R69(nEMbw*45+FdoAFm2|HKk}*<dH%;up7-gvru3j>8C8Ea(^XfN
z@nd)JOAG(y({ZFK1htLsZt}XP(DeP7u>O~)KgK5m#PGlpindZQAu@=N^Pl_91MS1<
z!sAuoMA+PheTdoP{vCct+wJ~&joQ^X4@7}vQRv0IP->7Gg|rfcKR6EGFEjEFnK-)Y
zqH~vnjFMb3!?z%Cg7X#=;o?s>WM9W&c_!aSE<S6)fHE7^*fevidJjm=MQ1Sta!VK8
zan-V-b|^rIaYshEj1Jn-Me%R`XqAhQ)U_tQ$%YA1eC6i*!CeqDO^AIX69EV3gGu|7
z{-=YF*@N#*JSA`RDSPL!*{}XxIx@(vRk!x~leNvPMiRB9yZ4A01Uwo@gz2pU0<1Ej
z0H{#Sr`K+?e|cjzG+ROl9;}2Q$yH_0yMyy4@MX~QTOLOl;zq~m-}3u}X=26*pU(Uy
zq|!QIQkg=o5LHdag5QyaRD4h;u{TVx7FNyg0RQd-4(b#GWy}`6!Riwu1wyTp$swQJ
z!N;=})AM))GU3tsxd{T!=Z*P4wb74Wi{+Z{Q$g?v)voI`NKLA6Wc{4BT8^7f*X=|a
zwFgtfFg6}T-b>sn+Mac0*TK|_(k4xYmL>`8*cKd%?0+ao@*#i-Y}_Sb{eskthNwh5
zvb@sn^;$MC;9W2;O7`16Xw7BgELqc}nC_#<Q<wsLQ{yOBpqQBaq6k7J1EG*(M3E36
zi>iVHM833pVv%K6)vWdeKrl^ogF?W90JIsy(ub(i3Z46vwtmEuQ^HO?w5a@s4x;$-
z-12fntf(GGF1ieVObFGYDQtY8E|65nhAygLP>uxON{kv$gf>ZpB}?n-p9O0tpD3(A
zBbFuZU+*Gl);fMz4gCP%63$?eynL=?rTK!=XcL7vZ}CtK-R8DvJ@q%iWS{e$NV|c?
zj@vI3%F;^>!P5n=`Cj7x9NTEJL(BW^8ir!WK@1T=ceG7ip6`Ba_UUj{-q@}hGSsRY
zZ#E+V-jM~@iJs<?or{I&r&HxB?O>5U4R%VjAS)uzp99S;Q@FJ-Fn2uf?7`1ZM&(cZ
z$49C%JA=mXloU7OWy0%_0uo>108;$Z!%7Yho@b^8{ynwgZzGjujTLFxAl@QvrKf6_
zdsBrVrnj9_$W=kl+qk+^dg1tw0OUvZELTHmSa#bYvr>~Chh(A9ItvUJRuW1^gP@+;
z6*&D>4x~w~TD;hrbYc4AV@~U?Jn*<2>N3@bV2-yUX^A;CmNT1bAPK}^V3HZl4<e#t
z3>cZ}gm^o%lKsp&$WZR4mykaWhjpz0fEj9L*mY})!N!6I2?ucd{B%26=(h|WvI}yr
zRpiO!NjkOmp9RZG_MlV0%nIqp1%$eW+yUs!L`ayBKb36+mF?FA6jHJ8HCFfykhY~_
z2p=V=2#K-u%eYpa#>GQe1nz}^9#PK9S;Dq_$VZ<_!HlBPV-?!{(U$KBQr$+#?8v<t
z5ZCb7agG`mh_tHPDQ~f)qH4xmJ>7(on?iYNa6q7p22&Goga*Q&q|9hu2w4p`Hh@DQ
zxZKyzP{g7MOKv4Z1p7!O^t%cgTARZiGS+c_Y&g>3Yl<Na7!q9%ZZKU=$T?SVw{o5j
zR*Ruzz1GtuL;5Cr{*U^8fcC(#E6-n1wRY#>2KdExr`DRu=2t1{X}V&m`@BCW#xLI7
zASvb{$(iE|c9+{0s9&M#oqRU07Mnvlb-MlVzzZ(4Uj{c#1~waJ#ZB9A{uhtW%mzIQ
zbDVfgNQ3kPk9fDN$6L|8tFn}^V57n4?#q7#)%0r7j&_Wyni{e?wu=ZGNJ3W?n{HMl
zrH19n1sgpFp<hO*8Wa*_Kpw}UsHz!mT#gQ0M;)zE(9>&NX()HCv>UP4_xfhAZ2}<T
zUfY^4&r6#Y1He9Ta(s<;=k)Mm=9p*}OmeLGCIjHI8^L<ZSvA#vyjZ__e#e{YWW<8z
zaxcNSHYR|4K?R?49c^~vO_zi?O%O%4zdo7>M>#}0NBBEs)06pLgbQZgz3BMEYVr9A
zyh&1IhLltG{~{51y>CD<t1fl(@r+QMpFtOv(4B{WfAimAWu#HhS1f;j)r+Y*DXY)x
z=&b~KFFVhjtvAA!wQ#*oM?Df_l3)6rUS<0<&Z*(*Z^rxiLfPipcMX;LeErcs@o44O
zXXxT`B*yJ7$!@!BjC8poDTyp1NyI%I`Byp~(Nu|QKtcz%zI!D=Ys5i#yaqT3oB=#p
zT>Y@~bL_!gDE~*H^b8Cfc#LY6sycBJ0|hkWN$55lc8p-=e!%|XZaO(t-_9P*u)_AM
z)<@ZJzebjdIIG#qHrA#4gYj0gnSvHxd7R#XBLYVMNSoHbQxo}~p+QuO2fEN-P_4Cp
ztZVJ=x>^~n^#6)Sk%MUaw>JB4BJ^LOK*rw%!(mZ#Y=3*%Mh@Z|>F!KMSHsYz*#4$z
z-jA>1TDKZsn8XZ3_xm2F_ymSvq58+k1#p9@ET+Oy(pu=wi>hLcrNNku$>Wtqdh0}e
zF<)Jw6S^fg+kAux2Nr*QJYDxOvTG8~HI@jTB?9dsf@$HTfaZPlWX@cHq)6a2>M61*
zAK+QZy8lwOM(7K0t3&k<%Dds+(dj-ip`Kx4O~LL!wwE1mZZe`RYBaH*t>OAh4CO>2
zdBJ4U$3I!Q(JHO?8_HFnx6vK@W#_6!vCd4%^FSYVJuD!|`qX~zhabWGnHvXP%TeJ3
zhevH%;G@9OnTd)6+(7pLKYXYYoFsS|<fW&9!nED8p9*M{v#l;vI)2GlD%F2m5@w>u
z40i_wDJXo`RS!M~hy=*Hg^FEp?6Xs8cN(Bd#GLs%ub7L1-FjVW8`|GiGGekz%Dk(}
z>zwrs*djs(VEWS2(U3y(UIP@`BnpxZNV0yAq=f}C!RG11C7a|`boe$Jq{nR7um5w5
zN)u0#%)H?dijrLXB^L4J9_^leCE07&o3bFZk#J1aQMU^?Sp=vxO}icLUIh&y^l&kB
zB$!xu_^%1@ShzvV-a&vuC}?y+3QY;cM8lcoUWYC4swZ8RaS5NVA@rdR1UQnRrD_&)
zy=wCj$AR%7$q@cZ<q0uMink!=DIc>wV1ujS;vDNwX){U}z;;g0W2ZI?t)U%;@WM`2
zc>Hkja@ma)-<yFHAy|r6uX3~2z(6>srh3}Hw{_0$_0D^mM&GJ);2-&B9~{+ZD?i{6
zwE>7Y>iV$_Iu-zo$@G`==}Sy>;)qJpQ1m0B?{j{<2sGUfzyGj954|MEmp^ZHdwP_s
zuPm~NulOTJ#Td)$9VB=Xi0L+^DEWZI%*Be2XV!G0t-jNt`N$b+_4AYar{4u~<Af}R
zeR;GC5X=PqMoMfLRgGS;4+kf0&8alt_YCsOhz&PdZ8BWIetO=wMQrsdUPsJWcHb@J
zB;f|tOd^YtF0MEOXlR5HOVOmKb!X?SXTpYHpjp(koL;R-(-C`FhbaWsCAG0C+niRl
zZy8=^_e;1{oCa|kOnQ!HSf@l!;YVu>xM7smOcZa11+c8dW7+XTqY9SP+L5n~s^_=e
zpQamawb?2QFcYUY?VGlv*R2<W3@Cf2L@!|moww{4bzp!!-|@=IMOCpu9H<7O^Ac<z
z8?HiMz|(UGGNT}y$IW+As0-bWx5PHv#|q8bn{MfZ7c`NpTa!_q^&NxWKe+8sTZL<j
zC)0|pgR=>Ca)i&pjm4E^Yo89{jX!;4WN33wv4m38a_mn56>0l8dokPveiIAr8H}BG
zbZ4urgsMret2U6%>+`G!|KZo3?l5{Meg{6z9_knKZ$oCbg}JT<dPXZn|Dt0!^K?RG
znZhXry-pq*f|#Ff_rFjoD=k`O#exrwu<|K$;e`RhI)Gd1qMBSPz{E=ZO;pmK&$pqQ
zq&E-Jpd6<PmVt;#Ub{Wr{$L<LsBOAEUAMKVVz8tAo7T}%Z85?mztdqQrF2<gqE=8W
zTj5<$k;TAa`%gOISmzz7YN#K{fZC2F(rNs6F~nQvnE+kAoDiF+(26x|d?%_C6e0-F
z!(;<*Sd!^`9Bt&NiRE%t=|T5AD#=EyF-st5no<FZ*Qxx=e3J=X{SOfd{UegF2l_I-
zkGrgwocc!z*>uqi0ABV-;(mZ8LrEdOeyxA>U5?7bI`5m;JJCk>BmDhq+Sp*b8*1mX
z^8@nJyV$JvvRCZVQN@X6YvH$LIuRJI5J;40&CRr6ZuR$k59ZGm{?x}ukK9}m1RyRb
zD9h8jv;~1|N_W-;0D<xQOOZtY>jKPD7kE+6_X`9>XX>%<V`iEY3CY!q;7`~?42pH=
z#x=Ywn`H%W1g_ow7I`~{6<fO>reEUdKVgC1zIv-DD|YYp({1=M<7@MEUmpqzt4-9M
z!;=$HXh0#`ae34axc-RICo0GdeGP_-)mbGrWt9?18feu8G40O<&&AG-CU=9g*TjFL
zDq9WpjO~tdd%E$^iK3PK;HmRUWaka6ta)8Qt083r>2k-gU@sncg<?qXC-7#f2>ElS
z!TP6Qtdb^<h_mInG#qIrFN)dlI)Lcp$Z1iR-)JMUa%^*7Mg5&R?#CF?6C`Cz1vwUi
zXuL51BH5;wh5q-f#c$=(^xtvmb_54ToI1Qtug6e(wR4Ki$plj0B9S#+^%&OlIRI@R
zD`tOn`CUZ9)<wcFMc_2y@|Xv{+qPZr@NykOubGHl9!=mTDn%--<et8eO2=Emky4TN
zkp}gtsQ!Iz!yRR&uy&UXWD?ynT}@r-{FXI6X{3t$g907IlRs5v+)0nei_;KB=A++_
z4)&We4VCSb3Re{LBW>_o&x!*cl7<XimiDud9U@8YCm>>yWofOZ8J(95jGHo$Xrkyl
z;DXJ0yKbKv_9h+TQI^!B(2It1i}+-iFqLch6-G}E!F%2vx9yJ?q@1X4<F-J+-`Qt*
zs&4yKtCr-#3K7g6wH_!4%TNX>Q)c@KrrUvUS5x!jjVHR5YvCU9jP}hw>|h7i6{MwP
z10a%tuA5yb0P)P?2YX%kxml|_7euANBW-Hc^;CJN?&IN@9vGhRHaiEk8>&Q3TPuPF
zJOs5xmV1((B1==l%;p|$)_2Q`5TEcRoQ@E;XWRajkB11n#<F{zHaV|0FaJ8!xL5w@
z^Lh3aYolM6eTtTw{xWHHWCabC!S{CIIg2cIWPVd&p3SD&?pagDN2ZhM-NWLW+osQ>
z06_24Z?}~X+_JyFh{J~)^R;NW#yeTeLh!o<E@OpiKiB3d*M!z!HLjl9J$7+h$FXzo
zpN8{RD&CL-x9kE{IRCFXElto;?Ck9QF1nmFg-JnZ;Y#0w(MZJ=Q5+{A%{k}R9XE;-
zsZ2C0D1-XA4|U+WgV4%LOOKtDXU{zBQJ+~V6^ri>UmL5VKD`UK&TgfLgURCr)Ph@}
zKiR~29*nHBXMHi?l8D$*D>G)GGVwv)q={ty?}*9WOP!zi_8*NCAgg~BTlBwr>NRy0
z3?U?PD6cIcXade}l9q_rIY~)-<txw|IP9cry#%?-m_3F|^yn<s9gxJ60B2c9PaPL*
z4RB!H@KW_{3sjhN-p(VhPpvXA6*}Md8m}K_?OG{WFra0dT~HI7t{EDuS)mL2C^J(i
zrD(@}LoHIlBtYFoQmCn57jCUkPp0lwadk4xFt)1`*2+NPt;Jg3^NI>Hek2%wXhsHb
z-(E5laWuG`2JqE(pjeWFG^p$OFvst#Vb#{^R@UioqF+)*plrxyu)EhFGf{F7GLaEk
zrNjE&<M~sKuj@sm;xdQ0b4LrX=sP{wWHC#XeBTR^%3^{59UE)XEC)x*9qlxe_9NLu
z7|tM32@#;(;!N`y(;7>7;g=MXK7JzLd7d0H?+=k3MhwpK1!Ww1JIDK!F}?W9j0b-6
z)6ZIRt+p3KI1X{k8*!@kkSo@y`xkC~6v={eKb?B*I^v6cm#VgZ*VNQ_v<tz3xTN|p
zNrJ!*oYBcv)&5}(E;c_4bVL9mtoR{4<M`;@M4i8A5o3{tqk2t7o8j2T#|f3`utn_I
zvdxd|(TCFr6U${68r&;6G$Y-8Kvzr2>8No+_kYmDgch|AivQ{~*ZlVbI{Ge~e|L>$
zN0Z>9#<4Lv1_q$;&zty^w!QstG?Rj#Z(vlxH>NlPKz657H%iVyq_K|gUnhZ@3wJo3
zhxO5`vBsR?4!7M}&Yi!-8;((g--YFj9wyOFF-2loW@K4Ib(qBf8rq!=da5q_gB|+X
zAp|Kx-MX8yuNQ25&-Vv>d6)0IUK($6hAAQnwi#baVN}@EI15dY+S)p=yra^j2!Twd
zW2r`s>#l?c6Iqe+0`I>A>ZqaZyB+3A6bZ&rv)cA389kmYNB*(O{PZHx+hf~M<nTGn
z??NUJw9Uh~&3-Cmu@s!H_YbUgyG6L^+O7Pz=Vnaj2Nv0{^2Q0Aau1S}5HoM;mB$3$
z=^?2Jcv95R@O3Y@=xA91Cm0N$m-zHT=dYC;0gX9cgerNlA{gchmbIO+0J6B$qSsun
zPR&J^qjVVA*=nEFhKOdTL&Mbu8|;=M(OGu$78KoE;YAno^yoa%P?){9sbQJ_j<&MM
z`Fy2bY;nF|*^@pE1V!0i8Y7en`2E0|0Y|=tGRQ068FeYM*}GZc20S>n<NKe<&R5;h
zs1dBAT*U|g00vEvWah%{H2d3(<Jh)Jve0{7RQO<8*PRu^;BGC^WQX@@oA&iXq@6zu
zb(qAu^^h8@9Kc=~z*0J=O0VrKTO+xf9oX*msAg<vzq~tkf_AiAYsQ9Z?eX6NZ?Kbu
zNEC7{Jd^E2)e`CT4H4jFgnodX0pFppR21N3w$2YX`~Tkjb$_$OHUDsZPiRu@z>dtm
z*Ero<3;9X!FTn(sfXn0xET`6H({*YU<FYOxP$GfW0usW8^<OU#+6l)~ym=htT=#PN
zf%_{NLa=gk1sE}FzUYyXLNyo!D%1#a+8!K??@`=GCa0#()+0kfh>MFud+3k;-{UKx
zj!<$N?oUZ%cs?qyMDyQ~nhtfTuiuPUrTN~|XJY$+A?gSWP>81_KEN5=Nx>0SGk&v3
zUj4OKx%h!yL$*7PyE*2_W!j{}3V;U20)$i`CNz{Cgr`GWiagfI#Qd6tfXLr%#`t=u
z-6IU9^ZR4j;1M@<&RU4xiS+iQ4ZY6rLN8`HELt`qpf%l(-=M_c*d*szT-LJ1zd||d
zPPUTW{*U|op-ndVi!WgKMEOnaZ%GKCL*O6;x${&1!ZWTf*s&C9p-WrCMpJ<tO2v^-
z7_k#9g-GXXf{vxxeOdfTbb0QLdiq!q`ujUcnH91ro=i=>Ia2I*3NCgOJnYkdrcMdr
zpgwMfH!BJfRZ0q3DD=F_2f$a#aFY7huaS9JL$>)+uoOef>qsc3-1R=+UKr<9uz!Z8
z<KSq*@Jq8khgpq#oPA(^m8H!~%pQW&{vVh37N;bL;`lv#yptyy^744Go&f<?psr$C
zH~*pFIU<aY;U3{t`j!@i${8X~Q7M27bp<)5ukmysGE@_k)T)-}>BYX6i$p!nrjvPX
zok3U%4uFDNLivi01dU^vu8o!bgR;1^pEjwthOod2w=kW)iH<6ZOm(`#jf9$G9K>Pd
zhsY5}XPI+H1JJ+P>h{4mx;*fwXZ#P89X(`0OYR#Uhq40RPgh<fP>p)-uK{`tzE|FA
zqZJCTWkT2_bYR-?WG$Grk`z*DYX7|i5^Mk9O9m*RTnSYnM-N_>T$lrvHw8fwRVgMx
z)^51Zt>{QwJrby^;`tbP|1NVqH)JIR9-2YpVqbE|a;?Z$NdHGwMh6P3tmbvGjNw|T
zA|!uzpQUt7sejc$@aCob;s0OT&f{weeh9O}NaF2?dWDux09>xRX609uFT8Vlv~eLc
z>)2J_Q-l&m*buE%@+;;g*6Ewf*qJF2O(7~=l7Z}807dA%3zjhg%mV`}?aG^<@+D;m
zz<`yImdjVKCsE2?ncScx#xu@=hk>oWESK8i&$oVS!D+hFoD3eworcnpL|XUU9G}k}
z8OARXH2iRY|L-XsbogBMQ)Bn1g3q-8`_aUVMuEB~b@|_Jzb}&qMzJl4k=xRR@$9>Q
z3<EjBTNs8xJqF#u|H7C99PQd3I^2*jzN0#{X*<v=(uWQUf#2aj3lLocQG~r}V|<Zk
zuqecWH^FOD({2C&1lfPR0Gd{40M;z$ToN`t#iRzi>;OrM+i-@$LUMN5S9-Z-$^XqP
zq{$}hrg$MdejjhRtd-;0g0F-ePQGV?gPZf4>!@nOU6x;PmyBr!J;`nS$7|=Bdb{xh
zmGXrc65_Zr#dda|9MVSoGFhD_5cS5UIcqOPoh@T#U*>{we{z*IH8n*RS@=!<KTN+d
zqLV^Z+q??*GL_-bYu$N<V4ik(JnF_tQP{#~?i1tS;|Gte{g7zg@TZtA_hQk;qK}O#
zbqE!uQOQj%wZ{s1L3WWUm$F5Lg7iycz4eD4w}IB-Bq8NqXPvs?CgoP3XhX52C`PAt
zjQCr-E>bHvao&E=Kjx?#7Z97-Yj0%JtQptt`G^pO&wAhq=$v-pkArRazd1{fqSU!1
zw2T^6Cf-^1;<PpTT)_3z=u@|`(NphpsHv(_-yWF%8%{!*K!OZ9SzjLq5{~4Qr7jnB
z+a4;<9Bn=y=Bq1_=<dmY^Jcz)7t!amUIdIPQu&jfv(`?7ji0>gyt>nQ)Bn6{c+?M!
zrK{u3Z?FgB7j75tmnevJfh!zy;lo^Gj0Y3+LP`yNrRhz~v1r?WQLsAQ^anURUg};(
zTdyOv)8FD|rS~Gwh5Em^`edT%C^rV-F+lfneK!}(kHrv?Mgu_M!W%>qFg*Q~(tw4x
pTkKG+W$;`0pYQ$OW+O&Ep)DyKo9SaXv;hAuX>mER3K9K){{x%(Z5aRn
--- a/browser/themes/winstripe/browser/browser.css
+++ b/browser/themes/winstripe/browser/browser.css
@@ -217,16 +217,22 @@ toolbar[iconsize="large"][mode="icons"] 
 .toolbarbutton-menubutton-button:-moz-system-metric(windows-default-theme) {
   padding: 6px; /* uxtheme border drawing fix/hack */
 }
 
 toolbar[iconsize="large"][mode="icons"] .toolbarbutton-1[checked="true"]:-moz-system-metric(windows-default-theme) {
   padding: 6px !important; /* uxtheme border drawing fix/hack */
 }
 
+#back-button:-moz-locale-dir(rtl) > .toolbarbutton-icon,
+#forward-button:-moz-locale-dir(rtl) > .toolbarbutton-icon,
+#back-forward-dropmarker:-moz-locale-dir(rtl) > .toolbarbutton-icon {
+  -moz-transform: scaleX(-1);
+}
+
 /* ::::: unified back and forward buttons ::::: */
 
 /* unified back button with keyhole icons */
 
 toolbar[mode="icons"] #back-button {
   -moz-appearance: none;
   padding: 0;
   -moz-padding-start: 2px;
@@ -241,31 +247,16 @@ toolbar[iconsize="large"][mode="icons"] 
 }
 toolbar[iconsize="large"][mode="icons"] #back-button[disabled="true"] {
   -moz-image-region: rect(68px 396px 102px 360px);
 }
 toolbar[iconsize="large"][mode="icons"] #back-button:not([disabled="true"]):hover:active {
   -moz-image-region: rect(102px 396px 136px 360px);
 }
 
-/* unified back button with keyhole icons, RTL version */
-
-toolbar[iconsize="large"][mode="icons"] #back-button:-moz-locale-dir(rtl) {
-  -moz-image-region: rect(0px 516px 34px 480px);
-}
-toolbar[iconsize="large"][mode="icons"] #back-button:-moz-locale-dir(rtl):not([disabled="true"]):hover {
-  -moz-image-region: rect(34px 516px 68px 480px);
-}
-toolbar[iconsize="large"][mode="icons"] #back-button:-moz-locale-dir(rtl)[disabled="true"] {
-  -moz-image-region: rect(68px 516px 102px 480px);
-}
-toolbar[iconsize="large"][mode="icons"] #back-button:-moz-locale-dir(rtl):not([disabled="true"]):hover:active {
-  -moz-image-region: rect(102px 516px 136px 480px);
-}
-
 /* unified forward button with keyhole icons */
 
 toolbar[mode="icons"] #forward-button {
   -moz-appearance: none;
   padding: 0;
   border: none;
 }
 
@@ -277,31 +268,16 @@ toolbar[iconsize="large"][mode="icons"] 
 }
 toolbar[iconsize="large"][mode="icons"] #forward-button[disabled="true"] {
   -moz-image-region: rect(71px 422px 99px 396px);
 }
 toolbar[iconsize="large"][mode="icons"] #forward-button:not([disabled="true"]):hover:active {
   -moz-image-region: rect(105px 422px 133px 396px);
 }
 
-/* unified forward button with keyhole icons, RTL version */
-
-toolbar[iconsize="large"][mode="icons"] #forward-button:-moz-locale-dir(rtl) {
-  -moz-image-region: rect(3px 480px 31px 454px);
-}
-toolbar[iconsize="large"][mode="icons"] #forward-button:-moz-locale-dir(rtl):not([disabled="true"]):hover {
-  -moz-image-region: rect(37px 480px 65px 454px);
-}
-toolbar[iconsize="large"][mode="icons"] #forward-button:-moz-locale-dir(rtl)[disabled="true"] {
-  -moz-image-region: rect(71px 480px 99px 454px);
-}
-toolbar[iconsize="large"][mode="icons"] #forward-button:-moz-locale-dir(rtl):not([disabled="true"]):hover:active {
-  -moz-image-region: rect(105px 480px 133px 454px);
-}
-
 /* dropmarker for unified back and forward buttons with keyhole icons */
 
 toolbar[mode="icons"] #back-forward-dropmarker {
   -moz-appearance: none;
   padding: 0;
   -moz-padding-end: 2px;
   border: none;
 }
@@ -324,31 +300,16 @@ toolbar[iconsize="large"][mode="icons"] 
 }
 toolbar[iconsize="large"][mode="icons"] #back-forward-dropmarker[disabled="true"] {
   -moz-image-region: rect(71px 438px 99px 422px);
 }
 toolbar[iconsize="large"][mode="icons"] #back-forward-dropmarker:not([disabled="true"]):hover:active {
   -moz-image-region: rect(105px 438px 133px 422px);
 }
 
-/* unified dropmarker with keyhole icons, RTL version */
-
-toolbar[iconsize="large"][mode="icons"] #back-forward-dropmarker:-moz-locale-dir(rtl) {
-  -moz-image-region: rect(3px 454px 31px 438px);
-}
-toolbar[iconsize="large"][mode="icons"] #back-forward-dropmarker:-moz-locale-dir(rtl):not([disabled="true"]):hover {
-  -moz-image-region: rect(37px 454px 65px 438px);
-}
-toolbar[iconsize="large"][mode="icons"] #back-forward-dropmarker:-moz-locale-dir(rtl)[disabled="true"] {
-  -moz-image-region: rect(71px 454px 99px 438px);
-}
-toolbar[iconsize="large"][mode="icons"] #back-forward-dropmarker:-moz-locale-dir(rtl):not([disabled="true"]):hover:active {
-  -moz-image-region: rect(105px 454px 133px 438px);
-}
-
 /* ::::: unified back and forward buttons, small icons mode ::::: */
 
 toolbar[iconsize="small"][mode="icons"] #back-button > .toolbarbutton-icon,
 toolbar[iconsize="small"][mode="icons"] #forward-button > .toolbarbutton-icon {
   -moz-padding-end: 0;
 }
 
 /* unified back button with keyhole icons, small icons mode */
@@ -361,92 +322,47 @@ toolbar[iconsize="small"][mode="icons"] 
 }
 toolbar[iconsize="small"][mode="icons"] #back-button[disabled="true"] {
   -moz-image-region: rect(48px 264px 72px 240px);
 }
 toolbar[iconsize="small"][mode="icons"] #back-button:not([disabled="true"]):hover:active {
   -moz-image-region: rect(72px 264px 96px 240px);
 }
 
-/* unified back button with keyhole icons, small icons mode, RTL version */
-
-toolbar[iconsize="small"][mode="icons"] #back-button:-moz-locale-dir(rtl) {
-  -moz-image-region: rect(0px 362px 24px 338px);
-}
-toolbar[iconsize="small"][mode="icons"] #back-button:-moz-locale-dir(rtl):not([disabled="true"]):hover {
-  -moz-image-region: rect(24px 362px 48px 338px);
-}
-toolbar[iconsize="small"][mode="icons"] #back-button:-moz-locale-dir(rtl)[disabled="true"] {
-  -moz-image-region: rect(48px 362px 72px 338px);
-}
-toolbar[iconsize="small"][mode="icons"] #back-button:-moz-locale-dir(rtl):not([disabled="true"]):hover:active {
-  -moz-image-region: rect(72px 362px 96px 338px);
-}
-
 /* unified forward button with keyhole icons, small icons mode */
 
 toolbar[iconsize="small"][mode="icons"] #forward-button {
   -moz-image-region: rect(0px 288px 24px 264px);
 }
 toolbar[iconsize="small"][mode="icons"] #forward-button:not([disabled="true"]):hover {
   -moz-image-region: rect(24px 288px 48px 264px);
 }
 toolbar[iconsize="small"][mode="icons"] #forward-button[disabled="true"] {
   -moz-image-region: rect(48px 288px 72px 264px);
 }
 toolbar[iconsize="small"][mode="icons"] #forward-button:not([disabled="true"]):hover:active {
   -moz-image-region: rect(72px 288px 96px 264px);
 }
 
-/* unified forward button with keyhole icons, small icons mode, RTL version */
-
-toolbar[iconsize="small"][mode="icons"] #forward-button:-moz-locale-dir(rtl) {
-  -moz-image-region: rect(0px 338px 24px 314px);
-}
-toolbar[iconsize="small"][mode="icons"] #forward-button:-moz-locale-dir(rtl):not([disabled="true"]):hover {
-  -moz-image-region: rect(24px 338px 48px 314px);
-}
-toolbar[iconsize="small"][mode="icons"] #forward-button:-moz-locale-dir(rtl)[disabled="true"] {
-  -moz-image-region: rect(48px 338px 72px 314px);
-}
-toolbar[iconsize="small"][mode="icons"] #forward-button:-moz-locale-dir(rtl):not([disabled="true"]):hover:active {
-  -moz-image-region: rect(72px 338px 96px 314px);
-}
-
 /* dropmarker for unified back and forward buttons with keyhole icons, small icons mode */
 
 toolbar[iconsize="small"][mode="icons"] #back-forward-dropmarker {
   list-style-image: url("chrome://browser/skin/Toolbar-small.png");
   -moz-image-region: rect(0px 301px 24px 288px);
 }
 toolbar[iconsize="small"][mode="icons"] #back-forward-dropmarker:not([disabled="true"]):hover {
   -moz-image-region: rect(24px 301px 48px 288px);
 }
 toolbar[iconsize="small"][mode="icons"] #back-forward-dropmarker[disabled="true"] {
   -moz-image-region: rect(48px 301px 72px 288px);
 }
 toolbar[iconsize="small"][mode="icons"] #back-forward-dropmarker:not([disabled="true"]):hover:active {
   -moz-image-region: rect(72px 301px 96px 288px);
 }
 
-/* unified dropmarker with keyhole icons, small icons mode, RTL version */
-
-toolbar[iconsize="small"][mode="icons"] #back-forward-dropmarker:-moz-locale-dir(rtl) {
-  -moz-image-region: rect(0px 314px 24px 301px);
-}
-toolbar[iconsize="small"][mode="icons"] #back-forward-dropmarker:-moz-locale-dir(rtl):not([disabled="true"]):hover {
-  -moz-image-region: rect(24px 314px 48px 301px);
-}
-toolbar[iconsize="small"][mode="icons"] #back-forward-dropmarker:-moz-locale-dir(rtl)[disabled="true"] {
-  -moz-image-region: rect(48px 314px 72px 301px);
-}
-toolbar[iconsize="small"][mode="icons"] #back-forward-dropmarker:-moz-locale-dir(rtl):not([disabled="true"]):hover:active {
-  -moz-image-region: rect(72px 314px 96px 301px);
-}
-
 /* ::::: 24px primary toolbar buttons ::::: */
 
 /* back button */
 
 #back-button {
   -moz-image-region: rect(0px 24px 24px 0px); 
 }
 #back-button:not([disabled="true"]):hover,
@@ -455,60 +371,32 @@ toolbar[iconsize="small"][mode="icons"] 
 }
 #back-button[disabled="true"] {
   -moz-image-region: rect(48px 24px 72px 0px);
 }
 #back-button:not([disabled="true"]):hover:active {
   -moz-image-region: rect(96px 24px 120px 0px);
 }
 
-#back-button:-moz-locale-dir(rtl) {
-  -moz-image-region: rect(0px 48px 24px 24px);
-}
-#back-button:-moz-locale-dir(rtl):not([disabled="true"]):hover,
-#back-button:-moz-locale-dir(rtl)[buttonover="true"] {
-  -moz-image-region: rect(24px 48px 48px 24px);
-}
-#back-button:-moz-locale-dir(rtl)[disabled="true"] {
-  -moz-image-region: rect(48px 48px 72px 24px);
-}
-#back-button:-moz-locale-dir(rtl):not([disabled="true"]):hover:active {
-  -moz-image-region: rect(96px 48px 120px 24px);
-}
-
 /* forward button */
 
 #forward-button {
   -moz-image-region: rect(0px 48px 24px 24px);
 }
 #forward-button:not([disabled="true"]):hover,
 #forward-button[buttonover="true"] {
   -moz-image-region: rect(24px 48px 48px 24px);
 }
 #forward-button[disabled="true"] {
   -moz-image-region: rect(48px 48px 72px 24px);
 }
 #forward-button:not([disabled="true"]):hover:active {
   -moz-image-region: rect(96px 48px 120px 24px);
 }
 
-#forward-button:-moz-locale-dir(rtl) {
-  -moz-image-region: rect(0px 24px 24px 0px); 
-}
-#forward-button:-moz-locale-dir(rtl):not([disabled="true"]):hover,
-#forward-button:-moz-locale-dir(rtl)[buttonover="true"] {
-  -moz-image-region: rect(24px 24px 48px 0px);
-}
-#forward-button:-moz-locale-dir(rtl)[disabled="true"] {
-  -moz-image-region: rect(48px 24px 72px 0px);
-}
-#forward-button:-moz-locale-dir(rtl):not([disabled="true"]):hover:active {
-  -moz-image-region: rect(96px 24px 120px 0px);
-}
-
 /* stop button */
 
 #stop-button {
   -moz-image-region: rect(0px 72px 24px 48px);
 }
 #stop-button:not([disabled="true"]):hover {
   -moz-image-region: rect(24px 72px 48px 48px);
 }
@@ -612,37 +500,31 @@ toolbar[iconsize="small"][mode="icons"] 
   -moz-image-region: rect(48px 216px 72px 192px);
 }
 #print-button:not([disabled="true"]):hover:active {
   -moz-image-region: rect(96px 216px 120px 192px);
 }
 
 /* toolbar new tab button */
 
-toolbar:not([iconsize="small"]) #new-tab-button > .toolbarbutton-icon {
-  padding-left: 1px;
-}
 #new-tab-button {
   -moz-image-region: rect(0px 240px 24px 216px);
 }
 #new-tab-button:not([disabled="true"]):hover {
   -moz-image-region: rect(24px 240px 48px 216px);
 }
 #new-tab-button[disabled="true"] {
   -moz-image-region: rect(48px 240px 72px 216px);
 }
 #new-tab-button:not([disabled="true"]):hover:active {
   -moz-image-region: rect(96px 240px 120px 216px);
 }
 
 /* new window button */
 
-toolbar:not([iconsize="small"]) #new-window-button > .toolbarbutton-icon {
-  padding-left: 1px;
-}
 #new-window-button {
   -moz-image-region: rect(0px 264px 24px 240px);
 }
 #new-window-button:not([disabled="true"]):hover {
   -moz-image-region: rect(24px 264px 48px 240px);
 }
 #new-window-button[disabled="true"] {
   -moz-image-region: rect(48px 264px 72px 240px);
@@ -734,31 +616,18 @@ toolbar[iconsize="small"] #back-button[b
 }
 toolbar[iconsize="small"] #back-button[disabled="true"] {
   -moz-image-region: rect(32px 16px 48px 0px);
 }
 toolbar[iconsize="small"] #back-button:not([disabled="true"]):hover:active {
   -moz-image-region: rect(64px 16px 80px 0px);
 }
 
-toolbar[iconsize="small"] #back-button:-moz-locale-dir(rtl) {
-  -moz-image-region: rect(0px 32px 16px 16px);
-}
-toolbar[iconsize="small"] #back-button:-moz-locale-dir(rtl):not([disabled="true"]):hover,
-toolbar[iconsize="small"] #back-button:-moz-locale-dir(rtl)[buttonover="true"] {
-  -moz-image-region: rect(16px 32px 32px 16px);
-}
-toolbar[iconsize="small"] #back-button:-moz-locale-dir(rtl)[disabled="true"] {
-  -moz-image-region: rect(32px 32px 48px 16px);
-}
-toolbar[iconsize="small"] #back-button:-moz-locale-dir(rtl):not([disabled="true"]):hover:active {
-  -moz-image-region: rect(64px 32px 80px 16px);
-}
-.unified-nav-back[_moz-menuactive],
-menupopup:-moz-locale-dir(rtl) > .unified-nav-forward[_moz-menuactive] {
+.unified-nav-back[_moz-menuactive]:-moz-locale-dir(ltr),
+.unified-nav-forward[_moz-menuactive]:-moz-locale-dir(rtl) {
   list-style-image: url("chrome://browser/skin/menu-back.png") !important;
 }
 
 /* forward button */
 
 toolbar[iconsize="small"] #forward-button > .toolbarbutton-icon {
   -moz-padding-end: 1px;
 }
@@ -771,75 +640,53 @@ toolbar[iconsize="small"] #forward-butto
 }
 toolbar[iconsize="small"] #forward-button[disabled="true"] {
   -moz-image-region: rect(32px 32px 48px 16px);
 }
 toolbar[iconsize="small"] #forward-button:not([disabled="true"]):hover:active {
   -moz-image-region: rect(64px 32px 80px 16px);
 }
 
-toolbar[iconsize="small"] #forward-button:-moz-locale-dir(rtl) {
-  -moz-image-region: rect(0px 16px 16px 0px);
-}
-toolbar[iconsize="small"] #forward-button:-moz-locale-dir(rtl):not([disabled="true"]):hover,
-toolbar[iconsize="small"] #forward-button:-moz-locale-dir(rtl)[buttonover="true"] {
-  -moz-image-region: rect(16px 16px 32px 0px);
-}
-toolbar[iconsize="small"] #forward-button:-moz-locale-dir(rtl)[disabled="true"] {
-  -moz-image-region: rect(32px 16px 48px 0px);
-}
-toolbar[iconsize="small"] #forward-button:-moz-locale-dir(rtl):not([disabled="true"]):hover:active {
-  -moz-image-region: rect(64px 16px 80px 0px);
-}
-.unified-nav-forward[_moz-menuactive],
-menupopup:-moz-locale-dir(rtl) > .unified-nav-back[_moz-menuactive] {
+.unified-nav-forward[_moz-menuactive]:-moz-locale-dir(ltr),
+.unified-nav-back[_moz-menuactive]:-moz-locale-dir(rtl) {
   list-style-image: url("chrome://browser/skin/menu-forward.png") !important;
 }
 
 /* stop button */
 
-toolbar[iconsize="small"] #stop-button > .toolbarbutton-icon {
-  padding-left: 1px;
-}
 toolbar[iconsize="small"] #stop-button {
   -moz-image-region: rect(0px 48px 16px 32px);
 }
 toolbar[iconsize="small"] #stop-button:not([disabled="true"]):hover {
   -moz-image-region: rect(16px 48px 32px 32px);
 }
 toolbar[iconsize="small"] #stop-button[disabled="true"] {
   -moz-image-region: rect(32px 48px 48px 32px);
 }
 toolbar[iconsize="small"] #stop-button:not([disabled="true"]):hover:active {
   -moz-image-region: rect(64px 48px 80px 32px);
 }
 
 /* reload button */
 
-toolbar[iconsize="small"] #reload-button > .toolbarbutton-icon {
-  padding-left: 1px;
-}
 toolbar[iconsize="small"] #reload-button {
   -moz-image-region: rect(0px 64px 16px 48px);
 }
 toolbar[iconsize="small"] #reload-button:not([disabled="true"]):hover {
   -moz-image-region: rect(16px 64px 32px 48px);
 }
 toolbar[iconsize="small"] #reload-button[disabled="true"] {
   -moz-image-region: rect(32px 64px 48px 48px);
 }
 toolbar[iconsize="small"] #reload-button:not([disabled="true"]):hover:active {
   -moz-image-region: rect(64px 64px 80px 48px);
 }
 
 /* home button */
 
-toolbar[iconsize="small"] #home-button.toolbarbutton-1 > .toolbarbutton-icon {
-  padding-left: 1px;
-}
 #home-button.bookmark-item {
   list-style-image: url("chrome://browser/skin/Toolbar-small.png");
 }
 toolbar[iconsize="small"] #home-button ,
 #home-button.bookmark-item {
   -moz-image-region: rect(0px 80px 16px 64px);
 }
 toolbar[iconsize="small"] #home-button:not([disabled="true"]):hover ,
@@ -852,37 +699,31 @@ toolbar[iconsize="small"] #home-button[d
 }
 toolbar[iconsize="small"] #home-button:not([disabled="true"]):hover:active ,
 #home-button.bookmark-item:not([disabled="true"]):hover:active {
   -moz-image-region: rect(64px 80px 80px 64px);
 }
 
 /* download manager button */
 
-toolbar[iconsize="small"] #downloads-button > .toolbarbutton-icon {
-  padding-left: 1px;
-}
 toolbar[iconsize="small"] #downloads-button {
   -moz-image-region: rect(0px 96px 16px 80px);
 }
 toolbar[iconsize="small"] #downloads-button:not([disabled="true"]):hover {
   -moz-image-region: rect(16px 96px 32px 80px);
 }
 toolbar[iconsize="small"] #downloads-button[disabled="true"] {
   -moz-image-region: rect(32px 96px 48px 80px);
 }
 toolbar[iconsize="small"] #downloads-button:not([disabled="true"]):hover:active {
   -moz-image-region: rect(64px 96px 80px 80px);
 }
 
 /* history sidebar button */
 
-toolbar[iconsize="small"] #history-button > .toolbarbutton-icon {
-  padding-left: 1px;
-}
 toolbar[iconsize="small"] #history-button {
   -moz-image-region: rect(0px 112px 16px 96px);
 }
 toolbar[iconsize="small"] #history-button:not([disabled="true"]):not([checked="true"]):hover {
   -moz-image-region: rect(16px 112px 32px 96px);
 }
 toolbar[iconsize="small"] #history-button[disabled="true"] {
   -moz-image-region: rect(32px 112px 48px 96px);
@@ -891,19 +732,16 @@ toolbar[iconsize="small"] #history-butto
   -moz-image-region: rect(48px 112px 64px 96px);
 }
 toolbar[iconsize="small"] #history-button:not([disabled="true"]):not([checked="true"]):hover:active {
   -moz-image-region: rect(64px 112px 80px 96px);
 }
 
 /* bookmark sidebar button */
 
-toolbar[iconsize="small"] #bookmarks-button > .toolbarbutton-icon {
-  padding-left: 2px;
-}
 toolbar[iconsize="small"] #bookmarks-button {
   -moz-image-region: rect(0px 128px 16px 112px);
 }
 toolbar[iconsize="small"] #bookmarks-button:not([disabled="true"]):not([checked="true"]):hover {
   -moz-image-region: rect(16px 128px 32px 112px);
 }
 toolbar[iconsize="small"] #bookmarks-button[disabled="true"] {
   -moz-image-region: rect(32px 128px 48px 112px);
@@ -912,37 +750,31 @@ toolbar[iconsize="small"] #bookmarks-but
   -moz-image-region: rect(48px 128px 64px 112px);
 }
 toolbar[iconsize="small"] #bookmarks-button:not([disabled="true"]):not([checked="true"]):hover:active {
   -moz-image-region: rect(64px 128px 80px 112px);
 }
 
 /* print button */
 
-toolbar[iconsize="small"] #print-button > .toolbarbutton-icon {
-  padding-left: 1px;
-}
 toolbar[iconsize="small"] #print-button {
   -moz-image-region: rect(0px 144px 16px 128px);
 }
 toolbar[iconsize="small"] #print-button:not([disabled="true"]):hover {
   -moz-image-region: rect(16px 144px 32px 128px);
 }
 toolbar[iconsize="small"] #print-button[disabled="true"] {
   -moz-image-region: rect(32px 144px 48px 128px);
 }
 toolbar[iconsize="small"] #print-button:not([disabled="true"]):hover:active {
   -moz-image-region: rect(64px 144px 80px 128px);
 }
 
 /* toolbar new tab button */
 
-toolbar[iconsize="small"] #new-tab-button > .toolbarbutton-icon {
-  padding-left: 1px;
-}
 toolbar[iconsize="small"] #new-tab-button {
   -moz-image-region: rect(0px 160px 16px 144px);
 }
 toolbar[iconsize="small"] #new-tab-button:not([disabled="true"]):hover {
   -moz-image-region: rect(16px 160px 32px 144px);
 }
 toolbar[iconsize="small"] #new-tab-button[disabled="true"] {
   -moz-image-region: rect(32px 160px 48px 144px);
@@ -981,55 +813,46 @@ toolbar[iconsize="small"] #cut-button[di
   -moz-image-region: rect(32px 192px 48px 176px);
 }
 toolbar[iconsize="small"] #cut-button:not([disabled="true"]):hover:active {
   -moz-image-region: rect(64px 192px 80px 176px);
 }
 
 /* copy button */
 
-toolbar[iconsize="small"] #copy-button > .toolbarbutton-icon {
-  padding-left: 1px;
-}
 toolbar[iconsize="small"] #copy-button {
   -moz-image-region: rect(0px 208px 16px 192px);
 }
 toolbar[iconsize="small"] #copy-button:not([disabled="true"]):hover {
   -moz-image-region: rect(16px 208px 32px 192px);
 }
 toolbar[iconsize="small"] #copy-button[disabled="true"] {
   -moz-image-region: rect(32px 208px 48px 192px);
 }
 toolbar[iconsize="small"] #copy-button:not([disabled="true"]):hover:active {
   -moz-image-region: rect(64px 208px 80px 192px);
 }
 
 /* paste button */
 
-toolbar[iconsize="small"] #paste-button > .toolbarbutton-icon {
-  padding-left: 1px;
-}
 toolbar[iconsize="small"] #paste-button {
   -moz-image-region: rect(0px 224px 16px 208px);
 }
 toolbar[iconsize="small"] #paste-button:not([disabled="true"]):hover {
   -moz-image-region: rect(16px 224px 32px 208px);
 }
 toolbar[iconsize="small"] #paste-button[disabled="true"] {
   -moz-image-region: rect(32px 224px 48px 208px);
 }
 toolbar[iconsize="small"] #paste-button:not([disabled="true"]):hover:active {
   -moz-image-region: rect(64px 224px 80px 208px);
 }
 
 /* fullscreen button */
 
-toolbar[iconsize="small"] #fullscreen-button > .toolbarbutton-icon {
-  padding-left: 1px;
-}
 toolbar[iconsize="small"] #fullscreen-button {
   -moz-image-region: rect(0px 240px 16px 224px);
 }
 toolbar[iconsize="small"] #fullscreen-button:hover {
   -moz-image-region: rect(16px 240px 32px 224px);
 }
 toolbar[iconsize="small"] #fullscreen-button:hover:active {
   -moz-image-region: rect(64px 240px 80px 224px);
@@ -1097,16 +920,25 @@ toolbar[iconsize="small"] #fullscreen-bu
 }
 
 #urlbar-icons {
   height: 18px;
   -moz-box-align: center;
   -moz-padding-end: 2px;
 }
 
+.urlbar-icon {
+  padding: 0 2px !important;
+}
+
+.urlbar-icon:-moz-system-metric(touch-enabled) {
+  -moz-margin-end: 1px !important;
+  padding: 0 3px !important;
+}
+
 #urlbar-search-splitter {
   min-width: 8px;
   -moz-margin-start: -4px;
   border: none;
   background: transparent;
 }
 
 #urlbar-search-splitter + #urlbar-container > #urlbar ,
@@ -1115,17 +947,17 @@ toolbar[iconsize="small"] #fullscreen-bu
 }
 
 #wrapper-urlbar-container #urlbar > .autocomplete-history-dropmarker {
   display: none;
 }
 
 /* Keep the URL bar LTR */
 
-#urlbar .autocomplete-textbox-container {
+#urlbar > .autocomplete-textbox-container {
   direction: ltr;
 }
 
 #PopupAutoComplete {
   direction: ltr !important;
 }
 
 #PopupAutoComplete:-moz-locale-dir(rtl) > tree > treerows {
@@ -1235,28 +1067,26 @@ statusbarpanel#statusbar-display {
 
 .autocomplete-treebody::-moz-tree-cell(suggesthint) {
   border-top: 1px solid GrayText;
 }
 
 /* ::::: go button ::::: */
 
 #go-button {
-  padding: 0 2px;
   list-style-image: url("chrome://browser/skin/Go-arrow.png");
   -moz-image-region: rect(0px 16px 16px 0px);
 }
 
 #go-button:hover {
   -moz-image-region: rect(16px 16px 32px 0px);
 }
 
 /* star button */
 #star-button {
-  padding: 0 2px;
   list-style-image: url("chrome://browser/skin/places/bookmark.png");
   -moz-image-region: rect(0px 16px 16px 0px);
 }
 
 #star-button:hover {
   -moz-image-region: rect(0px 32px 16px 16px);
 }
 
@@ -1341,16 +1171,20 @@ statusbarpanel#statusbar-display {
 }
 
 /* Tabstrip */
 .tabbrowser-tabs {
   -moz-appearance: -moz-win-browsertabbar-toolbox;
   background: -moz-dialog url("chrome://browser/skin/tabbrowser/tabbrowser-tabs-bkgnd.png") repeat-x;
 }
 
+.tabbrowser-tabs:-moz-system-metric(touch-enabled) {
+  min-height: .81cm;
+}
+
 .tabs-container:not([overflow="true"]) {
   -moz-padding-start: 3px;
 }
 
 /* Tabs */
 .tabbrowser-tab {
   -moz-appearance: none;
   background: url("chrome://browser/skin/tabbrowser/tab-bkgnd.png") repeat-x;
@@ -1452,16 +1286,20 @@ tabpanels {
   -moz-appearance: none;
   -moz-image-region: rect(0px, 56px, 14px, 42px);
   -moz-margin-end: 6px;
   border: none;
   padding: 0px;
   list-style-image: url("chrome://global/skin/icons/close.png");
 }
 
+.tab-close-button:-moz-system-metric(touch-enabled) {
+  -moz-transform: scale(1.3);
+}
+
 .tab-close-button:hover,
 .tabbrowser-tab[selected="true"] > .tab-close-button:hover {
   -moz-image-region: rect(0px, 28px, 14px, 14px);
 }
 
 .tab-close-button:hover:active,
 .tabbrowser-tab[selected="true"] > .tab-close-button:hover:active {
   -moz-image-region: rect(0px, 42px, 14px, 28px);
@@ -1492,16 +1330,26 @@ tabpanels {
   border-bottom: none;
   -moz-border-top-colors: ThreeDShadow rgba(255,255,255,.3);
   -moz-border-right-colors: ThreeDShadow;
   -moz-border-left-colors: ThreeDShadow rgba(255,255,255,.3);
   background: url("chrome://browser/skin/tabbrowser/tab-bkgnd.png") repeat-x;
   -moz-image-region: rect(0, 11px, 14px, 0);
 }
 
+.tabbrowser-arrowscrollbox > .scrollbutton-up:-moz-system-metric(touch-enabled),
+.tabbrowser-arrowscrollbox > .scrollbutton-down:-moz-system-metric(touch-enabled),
+.tabs-alltabs-button:-moz-system-metric(touch-enabled) {
+  min-width: .81cm;
+}
+
+.tabs-newtab-button:-moz-system-metric(touch-enabled) {
+  min-width: 1cm;
+}
+
 .tabbrowser-arrowscrollbox > .scrollbutton-up:not([disabled="true"]):hover,
 .tabbrowser-arrowscrollbox > .scrollbutton-down:not([disabled="true"]):hover,
 .tabs-newtab-button:hover,
 .tabs-alltabs-button:hover {
   border-top-width: 1px;
   padding-top: 1px;
   -moz-border-top-colors: ThreeDShadow;
   -moz-border-right-colors: ThreeDShadow;
@@ -1524,47 +1372,43 @@ tabpanels {
   opacity: .4;
 }
 
 .tabbrowser-arrowscrollbox > .scrollbutton-up:not([disabled="true"]):hover:active,
 .tabbrowser-arrowscrollbox > .scrollbutton-down:not([disabled="true"]):hover:active {
   -moz-image-region: rect(0, 45px, 17px, 30px);
 }
 
-.tabbrowser-arrowscrollbox > .scrollbutton-up {
+.tabbrowser-arrowscrollbox > .scrollbutton-up:-moz-locale-dir(ltr) {
   border-left-style: none;
+  -moz-border-radius-topright: 2px;
   list-style-image: url("chrome://browser/skin/tabbrowser/tab-arrow-left.png");
-  -moz-border-radius-topright: 2px;
 }
 
 .tabbrowser-arrowscrollbox > .scrollbutton-up:-moz-locale-dir(rtl) {
-  border-left-style: solid;
   border-right-style: none;
   -moz-border-radius-topleft: 2px;
-  -moz-border-radius-topright: 0px;
   list-style-image: url("chrome://browser/skin/tabbrowser/tab-arrow-right.png");
 }
 
-.tabbrowser-arrowscrollbox > .scrollbutton-down,
-.tabs-container > .tabs-newtab-button,
-.tabs-alltabs-button {
+.tabbrowser-arrowscrollbox > .scrollbutton-down:-moz-locale-dir(ltr),
+.tabs-container > .tabs-newtab-button:-moz-locale-dir(ltr),
+.tabs-alltabs-button:-moz-locale-dir(ltr) {
   border-right-style: none;
   -moz-border-radius-topleft: 2px;
 }
 
 .tabbrowser-arrowscrollbox > .scrollbutton-down {
   list-style-image: url("chrome://browser/skin/tabbrowser/tab-arrow-right.png");
 }
 
 .tabbrowser-arrowscrollbox > .scrollbutton-down:-moz-locale-dir(rtl),
 .tabs-container > .tabs-newtab-button:-moz-locale-dir(rtl),
-.tabs-container > stack:-moz-locale-dir(rtl) > .tabs-alltabs-button {
+.tabs-alltabs-button:-moz-locale-dir(rtl) {
   border-left-style: none;
-  border-right-style: solid;
-  -moz-border-radius-topleft: 0px;
   -moz-border-radius-topright: 2px;
 }
 
 .tabbrowser-arrowscrollbox > .scrollbutton-down:-moz-locale-dir(rtl) {
   list-style-image: url("chrome://browser/skin/tabbrowser/tab-arrow-left.png");
 }
 
 .tabs-newtab-button {
@@ -1614,17 +1458,17 @@ tabpanels {
   margin-top: 2px;
   margin-bottom: 4px;
   width: 18px !important;
   background-image: url("chrome://browser/skin/tabbrowser/alltabs-box-overflow-end-bkgnd-animate.png");
   background-repeat: no-repeat;
   opacity: 0.0;
 }
 
-stack:-moz-locale-dir(rtl) > hbox > .tabs-alltabs-box-animate {
+.tabs-alltabs-box-animate:-moz-locale-dir(rtl) {
   background-image: url("chrome://browser/skin/tabbrowser/alltabs-box-overflow-start-bkgnd-animate.png");
 }
 
 /* All tabs menupopup */
 .alltabs-item > .menu-iconic-left > .menu-iconic-icon {
   list-style-image: url("chrome://global/skin/icons/folder-item.png");
   -moz-image-region: rect(0px, 16px, 16px, 0px);
 }
@@ -1682,18 +1526,18 @@ stack:-moz-locale-dir(rtl) > hbox > .tab
   margin-bottom: 0px !important;
   padding: 0px 2px 0px 2px !important;
 }
 
 toolbarbutton.chevron {
   list-style-image: url("chrome://global/skin/toolbar/chevron.gif") !important;
 }
 
-toolbarbutton.chevron:-moz-locale-dir(rtl) {
-  list-style-image: url("chrome://global/skin/toolbar/chevron-rtl.gif") !important;
+toolbarbutton.chevron:-moz-locale-dir(rtl) > .toolbarbutton-icon {
+  -moz-transform: scaleX(-1);
 }
 
 toolbarbutton.chevron > .toolbarbutton-text,
 toolbarbutton.chevron > .toolbarbutton-menu-dropmarker {
   display: none;
 }
 
 toolbarbutton.chevron > .toolbarbutton-icon {
@@ -1723,16 +1567,20 @@ toolbar[mode="text"] > #window-controls 
   padding: 0 1px;
   background-color: transparent;
   border: none;
   width: auto;
   list-style-image: url(mainwindow-dropdown-arrow.png);
   -moz-image-region: rect(0, 13px, 11px, 0);
 }
 
+#urlbar > .autocomplete-history-dropmarker:-moz-system-metric(touch-enabled) {
+  min-width: .64cm;
+}
+
 #urlbar > .autocomplete-history-dropmarker:hover ,
 #urlbar > .autocomplete-history-dropmarker[open="true"] {
   background: -moz-dialog url(navbar-textbox-buttons.png) repeat-x 0 -60px !important;
 }
 
 #urlbar > .autocomplete-history-dropmarker:hover:active,
 #urlbar > .autocomplete-history-dropmarker[open="true"] {
   background-position: 0 -120px !important;
@@ -1757,17 +1605,16 @@ toolbar[mode="text"] > #window-controls 
   margin: 0px;
   border: 0px; 
   background-color: transparent;
 }
 
 #feed-button {
   -moz-appearance: none; 
   min-width: 0px; 
-  padding: 0 2px !important;
   list-style-image: url("chrome://browser/skin/feeds/feed-icons-16.png");
   -moz-image-region: rect(0px 16px 16px 0px);
 }
 
 #feed-button:hover {
   -moz-image-region: rect(0px 32px 16px 16px);
 }
 
@@ -1840,17 +1687,17 @@ toolbarbutton.bookmark-item[dragover="tr
 #identity-box {
   background: -moz-dialog url(navbar-textbox-buttons.png) repeat-x;
   color: -moz-dialogText;
   border: 1px none ThreeDShadow;
   -moz-border-end-style: solid;
   -moz-box-shadow: 1px 1px 0 rgba(255,255,255,.3) inset,
                    0 -1px 0 rgba(255,255,255,.2) inset;
 }
-#identity-box:-moz-locale-dir(ltr) {
+#identity-box:-moz-locale-dir(rtl) {
   -moz-border-start-style: solid;
 }
 #identity-box:-moz-locale-dir(ltr):-moz-system-metric(windows-default-theme) {
   -moz-border-radius: 6px 0 2px 6px / 15px 0 2px 15px;
   margin: -1px 0;
   -moz-margin-start: -4px;
   -moz-padding-start: 2px;
   border-style: solid;
@@ -1981,17 +1828,17 @@ toolbarbutton.bookmark-item[dragover="tr
 
 #identity-popup-content-verifier {
   margin: 4px 0 2px;
 }
 
 #identity-popup-content-box.verifiedIdentity > #identity-popup-encryption ,
 #identity-popup-content-box.verifiedDomain > #identity-popup-encryption {
   margin-top: 10px;
-  margin-left: -24px;
+  -moz-margin-start: -24px;
 }
 
 #identity-popup-content-box.verifiedIdentity > #identity-popup-encryption > vbox > #identity-popup-encryption-icon ,
 #identity-popup-content-box.verifiedDomain > #identity-popup-encryption > vbox > #identity-popup-encryption-icon {
   list-style-image: url("chrome://browser/skin/Secure24.png");
 }
 
 #identity-popup-more-info-button {
--- a/browser/themes/winstripe/browser/jar.mn
+++ b/browser/themes/winstripe/browser/jar.mn
@@ -85,18 +85,16 @@ classic.jar:
         skin/classic/browser/tabbrowser/tab-arrow-left.png                      (tabbrowser/tab-arrow-left.png)
         skin/classic/browser/tabbrowser/tab-arrow-right.png                     (tabbrowser/tab-arrow-right.png)
         skin/classic/browser/tabbrowser/tabbrowser-tabs-bkgnd.png               (tabbrowser/tabbrowser-tabs-bkgnd.png)
         skin/classic/browser/tabbrowser/tabDragIndicator.png                    (tabbrowser/tabDragIndicator.png)
         skin/classic/browser/tabbrowser/tab-bkgnd.png                           (tabbrowser/tab-bkgnd.png)
         skin/classic/browser/tabbrowser/tab-active-bkgnd.png                    (tabbrowser/tab-active-bkgnd.png)
         skin/classic/browser/tabbrowser/tab-hover-bkgnd.png                     (tabbrowser/tab-hover-bkgnd.png)
         skin/classic/browser/tabbrowser/tabstrip-bottom.png                     (tabbrowser/tabstrip-bottom.png)
-        icon.png
-        preview.png
 
 #ifdef XP_WIN
 classic.jar:
 % skin browser classic/1.0 %skin/classic/aero/browser/ os=WINNT osversion>=6
         skin/classic/aero/browser/sanitizeDialog.css                       (sanitizeDialog.css)
 *       skin/classic/aero/browser/aboutPrivateBrowsing.css           (aboutPrivateBrowsing.css)
 *       skin/classic/aero/browser/aboutSessionRestore.css            (aboutSessionRestore.css)
         skin/classic/aero/browser/aboutSessionRestore-window-icon.png (aboutSessionRestore-window-icon-aero.png)
--- a/browser/themes/winstripe/browser/searchbar.css
+++ b/browser/themes/winstripe/browser/searchbar.css
@@ -89,16 +89,21 @@
 }
 
 .search-go-button {
   padding: 2px;
   list-style-image: url("chrome://global/skin/icons/Search-glass.png");
   -moz-image-region: rect(0px 16px 16px 0px);
 }
 
+.search-go-button:-moz-system-metric(touch-enabled) {
+  -moz-padding-start: 5px;
+  -moz-padding-end: 3px;
+}
+
 .search-go-button:-moz-locale-dir(rtl) {
   -moz-transform: scaleX(-1);
 }
 
 .search-go-button:hover {
   -moz-image-region: rect(0px 32px 16px 16px);
 }
 
--- a/build/Makefile.in
+++ b/build/Makefile.in
@@ -92,9 +92,19 @@ ifdef ENABLE_TESTS
 libs:: bloaturls.txt
 	$(INSTALL) $< $(DIST)/bin
 
 # Install bloatcycle.html into dist/bin/res, for auto-cycling
 # of bloaturls.txt.  This is for browsers that can't do -f
 # autocycling of URLs.
 libs:: bloatcycle.html
 	$(INSTALL) $< $(DIST)/bin/res
+
+ifeq ($(OS_ARCH),Darwin)
+libs:: $(topsrcdir)/tools/rb/fix-macosx-stack.pl
+	$(INSTALL) $< $(DIST)/bin
 endif
+
+ifeq ($(OS_ARCH),Linux)
+libs:: $(topsrcdir)/tools/rb/fix-linux-stack.pl
+	$(INSTALL) $< $(DIST)/bin
+endif
+endif
--- a/build/autoconf/clean-config.sh
+++ b/build/autoconf/clean-config.sh
@@ -50,21 +50,16 @@ topsrcdir=`cd \`dirname $0\`/../..; pwd`
 
 if [ ! -f configure.in ]; then
   echo "clean-config.sh only cleans the source tree. To run," 2>&1
   echo "  cd $topsrcdir; build/autoconf/clean-config.sh" 2>&1
   echo "  (To clean a separate objdir, simple remove the directory.)" 2>&1
   exit 1
 fi
 
-if [ -f mailnews/makefiles ]; then
-  MOZ_MAIL_NEWS=1
-  export MOZ_MAIL_NEWS
-fi
-
 . allmakefiles.sh
 
 rm -fr $MAKEFILES \
     config-defs.h \
     config.cache \
     config.log \
     config.status \
     $NULL
--- a/build/automation-build.mk
+++ b/build/automation-build.mk
@@ -29,24 +29,31 @@ ABSOLUTE_TOPSRCDIR = $(call core_abspath
 
 AUTOMATION_PPARGS = 	\
 			-DBROWSER_PATH=$(browser_path) \
 			-DXPC_BIN_PATH=\"$(LIBXUL_DIST)/bin\" \
 			-DBIN_SUFFIX=\"$(BIN_SUFFIX)\" \
 			-DPROFILE_DIR=\"$(_PROFILE_DIR)\" \
 			-DCERTS_SRC_DIR=\"$(_CERTS_SRC_DIR)\" \
 			-DSYMBOLS_PATH=\"$(_SYMBOLS_PATH)\" \
+			-DPERL=\"$(PERL)\" \
 			$(NULL)
 
 ifeq ($(OS_ARCH),Darwin)
 AUTOMATION_PPARGS += -DIS_MAC=1
 else
 AUTOMATION_PPARGS += -DIS_MAC=0
 endif
 
+ifeq ($(OS_ARCH),Linux)
+AUTOMATION_PPARGS += -DIS_LINUX=1
+else
+AUTOMATION_PPARGS += -DIS_LINUX=0
+endif
+
 ifeq ($(MOZ_BUILD_APP),camino)
 AUTOMATION_PPARGS += -DIS_CAMINO=1
 else
 AUTOMATION_PPARGS += -DIS_CAMINO=0
 endif
 
 ifeq ($(host_os), cygwin)
 AUTOMATION_PPARGS += -DIS_CYGWIN=1
--- a/build/automation.py.in
+++ b/build/automation.py.in
@@ -76,23 +76,25 @@ SCRIPT_DIR = os.path.abspath(os.path.rea
            "IS_DEBUG_BUILD",
            "SYMBOLS_PATH",
           ]
 
 # These are generated in mozilla/build/Makefile.in
 #expand DIST_BIN = __XPC_BIN_PATH__
 #expand IS_WIN32 = len("__WIN32__") != 0
 #expand IS_MAC = __IS_MAC__ != 0
+#expand IS_LINUX = __IS_LINUX__ != 0
 #ifdef IS_CYGWIN
 #expand IS_CYGWIN = __IS_CYGWIN__ == 1
 #else
 IS_CYGWIN = False
 #endif
 #expand IS_CAMINO = __IS_CAMINO__ != 0
 #expand BIN_SUFFIX = __BIN_SUFFIX__
+#expand PERL = __PERL__
 
 UNIXISH = not IS_WIN32 and not IS_MAC
 
 #expand DEFAULT_APP = "./" + __BROWSER_PATH__
 #expand CERTS_SRC_DIR = __CERTS_SRC_DIR__
 #expand IS_TEST_BUILD = __IS_TEST_BUILD__
 #expand IS_DEBUG_BUILD = __IS_DEBUG_BUILD__
 #expand SYMBOLS_PATH = __SYMBOLS_PATH__
@@ -397,33 +399,34 @@ def fillCertificateDB(profileDir, certPa
     if ext == ".client":
       Process([pk12util, "-i", os.path.join(certPath, item), "-w",
         pwfilePath, "-d", profileDir], 
         env = env).wait()
 
   os.unlink(pwfilePath)
   return 0
 
-def environment(env = None, xrePath = DIST_BIN):
+def environment(env = None, xrePath = DIST_BIN, crashreporter = True):
   if env == None:
     env = dict(os.environ)
 
   ldLibraryPath = os.path.abspath(os.path.join(SCRIPT_DIR, xrePath))
   if UNIXISH or IS_MAC:
     envVar = "LD_LIBRARY_PATH"
     if IS_MAC:
       envVar = "DYLD_LIBRARY_PATH"
     if envVar in env:
       ldLibraryPath = ldLibraryPath + ":" + env[envVar]
     env[envVar] = ldLibraryPath
   elif IS_WIN32:
     env["PATH"] = env["PATH"] + ";" + ldLibraryPath
 
-  env['MOZ_CRASHREPORTER_NO_REPORT'] = '1'
-  env['MOZ_CRASHREPORTER'] = '1'
+  if crashreporter:
+    env['MOZ_CRASHREPORTER_NO_REPORT'] = '1'
+    env['MOZ_CRASHREPORTER'] = '1'
 
   return env
 
 
 ###############
 # RUN THE APP #
 ###############
 
@@ -580,31 +583,50 @@ def runApp(testURL, env, app, profileDir
   startTime = datetime.now()
 
   # Don't redirect stdout and stderr if an interactive debugger is attached
   if debuggerInfo and debuggerInfo["interactive"]:
     outputPipe = None
   else:
     outputPipe = subprocess.PIPE
 
-  proc = Process([cmd] + args, env = environment(env, xrePath = xrePath),
-          stdout = outputPipe, stderr = subprocess.STDOUT)
+  proc = Process([cmd] + args,
+                 env = environment(env, xrePath = xrePath,
+                                   crashreporter = not debuggerInfo),
+                 stdout = outputPipe,
+                 stderr = subprocess.STDOUT)
   log.info("INFO | automation.py | Application pid: %d", proc.pid)
 
+  stackFixerProcess = None
   if outputPipe is None:
     log.info("TEST-INFO: Not logging stdout or stderr due to debugger connection")
   else:
-    line = proc.stdout.readline()
+    logsource = proc.stdout
+    if IS_DEBUG_BUILD:
+      stackFixerCommand = None
+      if IS_MAC:
+        stackFixerCommand = "fix-macosx-stack.pl"
+      elif IS_LINUX:
+        stackFixerCommand = "fix-linux-stack.pl"
+      if stackFixerCommand is not None:
+        stackFixerProcess = Process([PERL, os.path.join(utilityPath, stackFixerCommand)], stdin=logsource, stdout=subprocess.PIPE)
+        logsource = stackFixerProcess.stdout
+
+    line = logsource.readline()
     while line != "":
       log.info(line.rstrip())
-      line = proc.stdout.readline()
+      line = logsource.readline()
 
   status = proc.wait()
   if status != 0:
     log.info("TEST-UNEXPECTED-FAIL | automation.py | Exited with code %d during test run", status)
+  if stackFixerProcess is not None:
+    status = stackFixerProcess.wait()
+    if status != 0:
+      log.info("TEST-UNEXPECTED-FAIL | automation.py | Stack fixer process exited with code %d during test run", status)
   log.info("INFO | automation.py | Application ran for: %s", str(datetime.now() - startTime))
 
   if checkForCrashes(os.path.join(profileDir, "minidumps"), symbolsPath):
     status = -1
 
   if IS_TEST_BUILD and runSSLTunnel:
     ssltunnelProcess.kill()
 
--- a/build/wince/shunt/Makefile.in
+++ b/build/wince/shunt/Makefile.in
@@ -92,8 +92,10 @@ CPPSRCS = \
 
 DEFINES += -DMOZCE_SHUNT_EXPORTS
 
 include $(topsrcdir)/config/rules.mk
 
 mozce_shunt.def: mozce_shunt.def.in
 	$(PYTHON) $(topsrcdir)/config/Preprocessor.py $(DEFINES) $(ACDEFINES) $^ > $@
 
+.NOTPARALLEL:
+
--- a/caps/include/nsScriptSecurityManager.h
+++ b/caps/include/nsScriptSecurityManager.h
@@ -532,32 +532,42 @@ private:
     /**
      * Check capability levels for an |aObj| that implements
      * nsISecurityCheckedComponent.
      *
      * NB: This function also checks to see if aObj is a plugin and the user
      * has set the "security.xpconnect.plugin.unrestricted" pref to allow
      * anybody to script plugin objects from anywhere.
      *
+     * @param cx The context we're running on.
+     *           NB: If null, "sameOrigin" does not have any effect.
      * @param aObj The nsISupports representation of the object in question
      *             object, possibly null.
-     * @param aJSObject The JSObject representation of the object in question.
-     *                  Only used if |aObjectSecurityLevel| is "sameOrigin".
+     * @param aJSObject The JSObject representation of the object in question
+     *                  if |cx| is non-null and |aObjectSecurityLevel| is
+     *                  "sameOrigin". If null will be calculated from aObj (if
+     *                  non-null) if and only if aObj is an XPCWrappedJS. The
+     *                  rationale behind this is that if we're creating a JS
+     *                  wrapper for an XPCWrappedJS, this object definitely
+     *                  expects to be exposed to JS.
      * @param aSubjectPrincipal The nominal subject principal used when
-     *                          aObjectSecurityLevel is "sameOrigin".
+     *                          aObjectSecurityLevel is "sameOrigin". If null,
+     *                          this is calculated if it's needed.
      * @param aObjectSecurityLevel Can be one of three values:
      *                  - allAccess: Allow access no matter what.
      *                  - noAccess: Deny access no matter what.
-     *                  - sameOrigin: If both a subject principal and JS
-     *                                object have been passed in, returns
-     *                                true if the subject subsumes the object,
-     *                                otherwise, behaves like noAccess.
+     *                  - sameOrigin: If |cx| is null, behave like noAccess.
+     *                                Otherwise, possibly compute a subject
+     *                                and object principal and return true if
+     *                                and only if the subject has greater than
+     *                                or equal privileges to the object.
      */
     nsresult
-    CheckXPCPermissions(nsISupports* aObj, JSObject* aJSObject,
+    CheckXPCPermissions(JSContext* cx,
+                        nsISupports* aObj, JSObject* aJSObject,
                         nsIPrincipal* aSubjectPrincipal,
                         const char* aObjectSecurityLevel);
 
     nsresult
     Init();
 
     nsresult
     InitPrefs();
--- a/caps/src/nsScriptSecurityManager.cpp
+++ b/caps/src/nsScriptSecurityManager.cpp
@@ -807,17 +807,17 @@ nsScriptSecurityManager::CheckPropertyAc
                 break;
             case nsIXPCSecurityManager::ACCESS_CALL_METHOD:
                 checkedComponent->CanCallMethod(objIID,
                                                 JSValIDToString(cx, aProperty),
                                                 getter_Copies(objectSecurityLevel));
             }
         }
     }
-    rv = CheckXPCPermissions(aObj, aJSObject, subjectPrincipal,
+    rv = CheckXPCPermissions(cx, aObj, aJSObject, subjectPrincipal,
                              objectSecurityLevel);
 #ifdef DEBUG_CAPS_CheckPropertyAccessImpl
     if(NS_SUCCEEDED(rv))
         printf("CheckXPCPerms GRANTED.\n");
     else
         printf("CheckXPCPerms DENIED.\n");
 #endif
 
@@ -2932,17 +2932,17 @@ nsScriptSecurityManager::CanCreateWrappe
     //  using nsISecurityCheckedComponent
     nsCOMPtr<nsISecurityCheckedComponent> checkedComponent =
         do_QueryInterface(aObj);
 
     nsXPIDLCString objectSecurityLevel;
     if (checkedComponent)
         checkedComponent->CanCreateWrapper((nsIID *)&aIID, getter_Copies(objectSecurityLevel));
 
-    nsresult rv = CheckXPCPermissions(aObj, nsnull, nsnull, objectSecurityLevel);
+    nsresult rv = CheckXPCPermissions(cx, aObj, nsnull, nsnull, objectSecurityLevel);
     if (NS_FAILED(rv))
     {
         //-- Access denied, report an error
         NS_ConvertUTF8toUTF16 strName("CreateWrapperDenied");
         nsCAutoString origin;
         nsresult rv2;
         nsIPrincipal* subjectPrincipal = doGetSubjectPrincipal(&rv2);
         if (NS_SUCCEEDED(rv2) && subjectPrincipal) {
@@ -3043,17 +3043,17 @@ nsScriptSecurityManager::CanCreateInstan
                                            const nsCID &aCID)
 {
 #ifdef DEBUG_CAPS_CanCreateInstance
     char* cidStr = aCID.ToString();
     printf("### CanCreateInstance(%s) ", cidStr);
     NS_Free(cidStr);
 #endif
 
-    nsresult rv = CheckXPCPermissions(nsnull, nsnull, nsnull, nsnull);
+    nsresult rv = CheckXPCPermissions(nsnull, nsnull, nsnull, nsnull, nsnull);
     if (NS_FAILED(rv))
 #ifdef XPC_IDISPATCH_SUPPORT
     {
         rv = CheckComponentPermissions(cx, aCID);
     }
     if (NS_FAILED(rv))
 #endif
     {
@@ -3080,17 +3080,17 @@ nsScriptSecurityManager::CanGetService(J
                                        const nsCID &aCID)
 {
 #ifdef DEBUG_CAPS_CanGetService
     char* cidStr = aCID.ToString();
     printf("### CanGetService(%s) ", cidStr);
     NS_Free(cidStr);
 #endif
 
-    nsresult rv = CheckXPCPermissions(nsnull, nsnull, nsnull, nsnull);
+    nsresult rv = CheckXPCPermissions(nsnull, nsnull, nsnull, nsnull, nsnull);
     if (NS_FAILED(rv))
     {
         //-- Access denied, report an error
         nsCAutoString errorMsg("Permission denied to get service. CID=");
         char cidStr[NSID_LENGTH];
         aCID.ToProvidedString(cidStr);
         errorMsg.Append(cidStr);
         SetPendingException(cx, errorMsg.get());
@@ -3119,44 +3119,65 @@ nsScriptSecurityManager::CanAccess(PRUin
                                    void** aPolicy)
 {
     return CheckPropertyAccessImpl(aAction, aCallContext, cx,
                                    aJSObject, aObj, nsnull, aClassInfo,
                                    nsnull, aPropertyName, aPolicy);
 }
 
 nsresult
-nsScriptSecurityManager::CheckXPCPermissions(nsISupports* aObj, JSObject* aJSObject,
+nsScriptSecurityManager::CheckXPCPermissions(JSContext* cx,
+                                             nsISupports* aObj, JSObject* aJSObject,
                                              nsIPrincipal* aSubjectPrincipal,
                                              const char* aObjectSecurityLevel)
 {
     //-- Check for the all-powerful UniversalXPConnect privilege
     PRBool ok = PR_FALSE;
     if (NS_SUCCEEDED(IsCapabilityEnabled("UniversalXPConnect", &ok)) && ok)
         return NS_OK;
 
     //-- If the object implements nsISecurityCheckedComponent, it has a non-default policy.
     if (aObjectSecurityLevel)
     {
         if (PL_strcasecmp(aObjectSecurityLevel, "allAccess") == 0)
             return NS_OK;
-        if (aSubjectPrincipal && aJSObject &&
-            PL_strcasecmp(aObjectSecurityLevel, "sameOrigin") == 0)
+        if (cx && PL_strcasecmp(aObjectSecurityLevel, "sameOrigin") == 0)
         {
-            nsIPrincipal* objectPrincipal = doGetObjectPrincipal(aJSObject);
-
-            // Only do anything if we have both a subject and object
-            // principal.
-            if (objectPrincipal)
+            nsresult rv;
+            if (!aJSObject)
+            {
+                nsCOMPtr<nsIXPConnectWrappedJS> xpcwrappedjs =
+                    do_QueryInterface(aObj);
+                if (xpcwrappedjs)
+                {
+                    rv = xpcwrappedjs->GetJSObject(&aJSObject);
+                    NS_ENSURE_SUCCESS(rv, rv);
+                }
+            }
+
+            if (!aSubjectPrincipal)
             {
-                PRBool subsumes;
-                nsresult rv = aSubjectPrincipal->Subsumes(objectPrincipal, &subsumes);
+                // No subject principal passed in. Compute it.
+                aSubjectPrincipal = GetSubjectPrincipal(cx, &rv);
                 NS_ENSURE_SUCCESS(rv, rv);
-                if (subsumes)
-                    return NS_OK;
+            }
+            if (aSubjectPrincipal && aJSObject)
+            {
+                nsIPrincipal* objectPrincipal = doGetObjectPrincipal(aJSObject);
+
+                // Only do anything if we have both a subject and object
+                // principal.
+                if (objectPrincipal)
+                {
+                    PRBool subsumes;
+                    rv = aSubjectPrincipal->Subsumes(objectPrincipal, &subsumes);
+                    NS_ENSURE_SUCCESS(rv, rv);
+                    if (subsumes)
+                        return NS_OK;
+                }
             }
         }
         else if (PL_strcasecmp(aObjectSecurityLevel, "noAccess") != 0)
         {
             PRBool canAccess = PR_FALSE;
             if (NS_SUCCEEDED(IsCapabilityEnabled(aObjectSecurityLevel, &canAccess)) &&
                 canAccess)
                 return NS_OK;
--- a/config/autoconf.mk.in
+++ b/config/autoconf.mk.in
@@ -600,27 +600,16 @@ MOZ_MEMORY_LDFLAGS = @MOZ_MEMORY_LDFLAGS
 
 # This is for custom CRT building
 ifdef MOZ_MEMORY
 ifdef WIN32_CRT_SRC_DIR
 DLLFLAGS = @DLLFLAGS@
 endif
 endif
 
-# python options.
-MOZ_PYTHON_EXTENSIONS = @MOZ_PYTHON_EXTENSIONS@
-MOZ_PYTHON = @MOZ_PYTHON@
-MOZ_PYTHON_PREFIX = @MOZ_PYTHON_PREFIX@
-MOZ_PYTHON_INCLUDES = @MOZ_PYTHON_INCLUDES@
-MOZ_PYTHON_LIBS = @MOZ_PYTHON_LIBS@
-MOZ_PYTHON_DEBUG_SUFFIX = @MOZ_PYTHON_DEBUG_SUFFIX@
-MOZ_PYTHON_DLL_SUFFIX = @MOZ_PYTHON_DLL_SUFFIX@
-MOZ_PYTHON_VER_DOTTED = @MOZ_PYTHON_VER_DOTTED@
-MOZ_PYTHON_VER = @MOZ_PYTHON_VER@
-
 # Codesighs tools option, enables win32 mapfiles.
 MOZ_MAPINFO	= @MOZ_MAPINFO@
 
 MOZ_PHOENIX	= @MOZ_PHOENIX@
 MOZ_XULRUNNER	= @MOZ_XULRUNNER@
 WINCE		= @WINCE@
 WINCE_SDK_DIR   = @WINCE_SDK_DIR@
 OGLES_SDK_DIR   = @OGLES_SDK_DIR@
--- a/config/milestone.txt
+++ b/config/milestone.txt
@@ -5,9 +5,9 @@
 #    x.x.x.x
 #    x.x.x+
 #
 # Referenced by milestone.pl.
 # Hopefully I'll be able to automate replacement of *all*
 # hardcoded milestones in the tree from these two files.
 #--------------------------------------------------------
 
-1.9.2a1pre
+1.9.2a2pre
new file mode 100644
--- /dev/null
+++ b/config/nsinstall.exe.manifest
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+<assemblyIdentity
+        version="1.0.0.0"
+        processorArchitecture="*"
+        name="nsinstall"
+        type="win32"
+/>
+<description>nsinstall</description>
+<ms_asmv3:trustInfo xmlns:ms_asmv3="urn:schemas-microsoft-com:asm.v3">
+  <ms_asmv3:security>
+    <ms_asmv3:requestedPrivileges>
+      <ms_asmv3:requestedExecutionLevel level="asInvoker" uiAccess="false"></ms_asmv3:requestedExecutionLevel>
+    </ms_asmv3:requestedPrivileges>
+  </ms_asmv3:security>
+</ms_asmv3:trustInfo>
+</assembly>
--- a/config/rules.mk
+++ b/config/rules.mk
@@ -1012,17 +1012,21 @@ endif # BeOS
 $(HOST_PROGRAM): $(HOST_PROGOBJS) $(HOST_LIBS_DEPS) $(HOST_EXTRA_DEPS) $(GLOBAL_DEPS)
 ifeq (WINCE,$(OS_ARCH))
 	$(HOST_LD) -NOLOGO -OUT:$@ $(HOST_OBJS) $(WIN32_EXE_LDFLAGS) $(HOST_LIBS) $(HOST_EXTRA_LIBS)
 else
 ifeq (_WINNT,$(GNU_CC)_$(HOST_OS_ARCH))
 	$(HOST_LD) -NOLOGO -OUT:$@ -PDB:$(HOST_PDBFILE) $(HOST_OBJS) $(WIN32_EXE_LDFLAGS) $(HOST_LIBS) $(HOST_EXTRA_LIBS)
 ifdef MSMANIFEST_TOOL
 	@if test -f $@.manifest; then \
-		mt.exe -NOLOGO -MANIFEST $@.manifest -OUTPUTRESOURCE:$@\;1; \
+		if test -f "$(srcdir)/$@.manifest"; then \
+			mt.exe -NOLOGO -MANIFEST "$(win_srcdir)/$@.manifest" $@.manifest -OUTPUTRESOURCE:$@\;1; \
+		else \
+			mt.exe -NOLOGO -MANIFEST $@.manifest -OUTPUTRESOURCE:$@\;1; \
+		fi; \
 		rm -f $@.manifest; \
 	fi
 endif	# MSVC with manifest tool
 else
 ifeq ($(CPP_PROG_LINK),1)
 	$(HOST_CXX) -o $@ $(HOST_CXXFLAGS) $(HOST_LDFLAGS) $(HOST_PROGOBJS) $(HOST_LIBS) $(HOST_EXTRA_LIBS)
 else
 	$(HOST_CC) -o $@ $(HOST_CFLAGS) $(HOST_LDFLAGS) $(HOST_PROGOBJS) $(HOST_LIBS) $(HOST_EXTRA_LIBS)
@@ -1482,17 +1486,17 @@ normalizepath = $(foreach p,$(1),$(shell
 else
 # assume MSYS
 #  We use 'pwd -W' to get DOS form of the path.  However, since the given path
 #  could be a file or a non-existent path, we cannot call 'pwd -W' directly
 #  on the path.  Instead, we extract the root path (i.e. "c:/"), call 'pwd -W'
 #  on it, then merge with the rest of the path.
 root-path = $(shell echo $(1) | sed -e "s|\(/[^/]*\)/\?\(.*\)|\1|")
 non-root-path = $(shell echo $(1) | sed -e "s|\(/[^/]*\)/\?\(.*\)|\2|")
-normalizepath = $(foreach p,$(1),$(if $(filter /%,$(1)),$(shell cd $(call root-path,$(1)) && pwd -W)$(call non-root-path,$(1)),$(1)))
+normalizepath = $(foreach p,$(1),$(if $(filter /%,$(1)),$(patsubst %/,%,$(shell cd $(call root-path,$(1)) && pwd -W))/$(call non-root-path,$(1)),$(1)))
 endif
 else
 normalizepath = $(1)
 endif
 
 _srcdir = $(call normalizepath,$(srcdir))
 ifdef JAVA_SOURCEPATH
 SP = $(subst $(SPACE),$(SEP),$(call normalizepath,$(strip $(JAVA_SOURCEPATH))))
--- a/config/static-checking-config.mk
+++ b/config/static-checking-config.mk
@@ -1,23 +1,23 @@
 # The entire tree should be subject to static analysis using the XPCOM
 # script. Additional scripts may be added by specific subdirectories.
 
 DEHYDRA_SCRIPT = $(topsrcdir)/config/static-checking.js
 
 DEHYDRA_MODULES = \
   $(topsrcdir)/xpcom/analysis/final.js \
-  $(topsrcdir)/layout/generic/frame-verify.js \
   $(NULL)
 
 TREEHYDRA_MODULES = \
   $(topsrcdir)/xpcom/analysis/outparams.js \
   $(topsrcdir)/xpcom/analysis/stack.js \
   $(topsrcdir)/xpcom/analysis/flow.js \
   $(topsrcdir)/js/src/jsstack.js \
+  $(topsrcdir)/layout/generic/frame-verify.js \
   $(NULL)
 
 DEHYDRA_ARGS = \
   --topsrcdir=$(topsrcdir) \
   --objdir=$(DEPTH) \
   --dehydra-modules=$(subst $(NULL) ,$(COMMA),$(strip $(DEHYDRA_MODULES))) \
   --treehydra-modules=$(subst $(NULL) ,$(COMMA),$(strip $(TREEHYDRA_MODULES))) \
   $(NULL)
--- a/config/version_win.pl
+++ b/config/version_win.pl
@@ -70,17 +70,16 @@ sub daysFromBuildID
 # OBJDIR - Holds the object directory;
 # MODNAME - tells what the name of the module is like nsBMPModule
 # DEPTH - Holds the path to the root obj dir
 # TOPSRCDIR - Holds the path to the root mozilla dir
 # SRCDIR - Holds module.ver and source
 # BINARY - Holds the name of the binary file
 # DISPNAME - Holds the display name of the built application
 # APPVERSION - Holds the version string of the built application
-# BITS - 16 or 32 bit
 # RCINCLUDE - Holds the name of the RC File to include or ""
 # QUIET - Turns off output
 
 #Description and Comment come from module.ver
 #Bug 23560
 #http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/rc_7x2d.asp
 
 #Get next .ver file entry
@@ -99,59 +98,54 @@ sub getNextEntry
 				$value =~ s/^\s*(.*?)\s*$/$1/;
 				return ($entry,$value);
 			}
 		}
 	}
 	return undef;
 }
 
-my ($quiet,$objdir,$debug,$official,$milestone,$buildid,$module,$binary,$depth,$rcinclude,$bits,$srcdir,$fileversion,$productversion);
+my ($quiet,$objdir,$debug,$official,$milestone,$buildid,$module,$binary,$depth,$rcinclude,$srcdir,$fileversion,$productversion);
 
 GetOptions( "QUIET" => \$quiet,
 		"DEBUG=s" => \$debug,
 		"OFFICIAL=s" => \$official,
 		"MSTONE=s" => \$milestone,
 		"MODNAME=s" => \$module,
 		"BINARY=s" => \$binary,
 		"DISPNAME=s" => \$displayname,
 		"APPVERSION=s" => \$appversion,
 		"SRCDIR=s" => \$srcdir,
 		"TOPSRCDIR=s" => \$topsrcdir,
 		"DEPTH=s" => \$depth,
 		"RCINCLUDE=s" => \$rcinclude,
-		"OBJDIR=s" => \$objdir,
-		"BITS=s" => \$bits);
+		"OBJDIR=s" => \$objdir);
 if (!defined($debug)) {$debug="";}
 if (!defined($official)) {$official="";}
 if (!defined($milestone)) {$milestone="";}
 if (!defined($module)) {$module="";}
 if (!defined($binary)) {$binary="";}
 if (!defined($displayname)) {$displayname="Mozilla";}
 if (!defined($appversion)) {$appversion=$milestone;}
 if (!defined($depth)) {$depth=".";}
 if (!defined($rcinclude)) {$rcinclude="";}
 if (!defined($objdir)) {$objdir=".";}
 if (!defined($srcdir)) {$srcdir=".";}
 if (!defined($topsrcdir)) {$topsrcdir=".";}
-if (!defined($bits)) {$bits="";}
 my $mfversion = "Personal";
 my $mpversion = "Personal";
 my @fileflags = ("0");
 my $comment="";
 my $description="";
 if (!defined($module))
 {
 	$module = $binary;
 	($module) = split(/\./,$module);
 }
 
-my $fileos = "VOS__WINDOWS32";
-if ($bits eq "16") { $fileos="VOS__WINDOWS16"; }
-
 my $bufferstr="    ";
 
 my $MILESTONE_FILE = "$topsrcdir/config/milestone.txt";
 my $BUILDID_FILE = "$depth/config/buildid";
 
 #Read module.ver file
 #Version file overrides for WIN32:
 #WIN32_MODULE_COMMENT
@@ -405,17 +399,17 @@ print RCFILE qq{
 // Version
 //
 
 1 VERSIONINFO
  FILEVERSION    $fileversion
  PRODUCTVERSION $productversion
  FILEFLAGSMASK 0x3fL
  FILEFLAGS $fileflags
- FILEOS $fileos
+ FILEOS VOS__WINDOWS32
  FILETYPE VFT_DLL
  FILESUBTYPE 0x0L
 BEGIN
     BLOCK "StringFileInfo"
     BEGIN
         BLOCK "000004b0"
         BEGIN
             VALUE "Comments", "$comment"
--- a/configure.in
+++ b/configure.in
@@ -125,17 +125,17 @@ GTK2_VERSION=2.10.0
 WINDRES_VERSION=2.14.90
 W32API_VERSION=3.8
 GNOMEVFS_VERSION=2.0
 GNOMEUI_VERSION=2.2.0
 GCONF_VERSION=1.2.1
 LIBGNOME_VERSION=2.0
 STARTUP_NOTIFICATION_VERSION=0.8
 DBUS_VERSION=0.60
-SQLITE_VERSION=3.6.14.2
+SQLITE_VERSION=3.6.16
 LIBNOTIFY_VERSION=0.4
 
 MSMANIFEST_TOOL=
 
 dnl Set various checks
 dnl ========================================================
 MISSING_X=
 AC_PROG_AWK
@@ -548,19 +548,17 @@ case "$target" in
         _MSC_VER=${_CC_MAJOR_VERSION}${_CC_MINOR_VERSION}
 
         CXX_VERSION=`"${CXX}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
         _CXX_MAJOR_VERSION=`echo ${CXX_VERSION} | $AWK -F\. '{ print $1 }'`
 
         if test "$_CC_MAJOR_VERSION" != "$_CXX_MAJOR_VERSION"; then
             AC_MSG_ERROR([The major versions of \$CC and \$CXX do not match.])
         fi
-        if test "$_CC_MAJOR_VERSION" = "12"; then
-            _CC_SUITE=6
-        elif test "$_CC_MAJOR_VERSION" = "13"; then
+        if test "$_CC_MAJOR_VERSION" = "13"; then
             _CC_SUITE=7
         elif test "$_CC_MAJOR_VERSION" = "14"; then
             _CC_SUITE=8
             CXXFLAGS="$CXXFLAGS -Zc:wchar_t-"
             dnl -DYNAMICBASE is only supported on VC8SP1 or newer,
             dnl so be very specific here!
             dnl VC8 is 14.00.50727.42, VC8SP1 is 14.00.50727.762
             if test $_CC_RELEASE -gt 50727; then
@@ -954,46 +952,18 @@ if test "$MACOS_SDK_DIR"; then
   if test ! -d "$MACOS_SDK_DIR"; then
     AC_MSG_ERROR([SDK not found.  When using --with-macos-sdk, you must
 specify a valid SDK.  SDKs are installed when the optional cross-development
 tools are selected during the Xcode/Developer Tools installation.])
   fi
 
   GCC_VERSION_MAJOR=`echo $GCC_VERSION_FULL | $PERL -pe 's/(^\d*).*/$1/;'`
   if test "$GCC_VERSION_MAJOR" -lt "4" ; then
-    SDK_C_INCLUDE="-isystem ${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION} -isystem ${MACOS_SDK_DIR}/usr/include -F${MACOS_SDK_DIR}/System/Library/Frameworks"
-    if test -d "${MACOS_SDK_DIR}/Library/Frameworks" ; then
-      SDK_C_INCLUDE="$SDK_C_INCLUDE -F${MACOS_SDK_DIR}/Library/Frameworks"
-    fi
-    SDK_CXX_INCLUDE="-I${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION}/c++ -I${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION}/c++/ppc-darwin -I${MACOS_SDK_DIR}/usr/include/gcc/darwin/${GCC_VERSION}/c++/backward"
-
-    CFLAGS="$CFLAGS -nostdinc ${SDK_C_INCLUDE}"
-    CXXFLAGS="$CXXFLAGS -nostdinc -nostdinc++ ${SDK_CXX_INCLUDE} ${SDK_C_INCLUDE}"
-
-    dnl CPP/CXXCPP needs to be set for AC_CHECK_HEADER.
-    CPP="$CPP -nostdinc ${SDK_C_INCLUDE}"
-    CXXCPP="$CXXCPP -nostdinc -nostdinc++ ${SDK_CXX_INCLUDE} ${SDK_C_INCLUDE}"
-
-    dnl ld support for -syslibroot is compiler-agnostic, but only available
-    dnl on Tiger.  Although it's possible to switch on the build host's
-    dnl OS release to use ld -syslibroot when available, ld -syslibroot will
-    dnl cause warnings as long as NEXT_ROOT is set.  NEXT_ROOT should be
-    dnl set because both the compiler and linker use it.
-    LIBS="-L${MACOS_SDK_DIR}/usr/lib/gcc/darwin -L${MACOS_SDK_DIR}/usr/lib/gcc/darwin/${GCC_VERSION_FULL} -L${MACOS_SDK_DIR}/usr/lib $LIBS"
-    export NEXT_ROOT=$MACOS_SDK_DIR
-
-    if test -n "$CROSS_COMPILE" ; then
-      dnl NEXT_ROOT will be in the environment, but it shouldn't be set for
-      dnl the build host.  HOST_CXX is presently unused.
-      HOST_CC="NEXT_ROOT= $HOST_CC"
-      HOST_CXX="NEXT_ROOT= $HOST_CXX"
-    fi
+    AC_MSG_ERROR([You need to upgrade the compiler version to 4.x])
   else
-    dnl gcc >= 4.0 uses different paths than above, but knows how to find
-    dnl them itself.
     CFLAGS="$CFLAGS -isysroot ${MACOS_SDK_DIR}"
     CXXFLAGS="$CXXFLAGS -isysroot ${MACOS_SDK_DIR}"
 
     dnl CPP/CXXCPP needs to be set for AC_CHECK_HEADER.
     CPP="$CPP -isysroot ${MACOS_SDK_DIR}"
     CXXCPP="$CXXCPP -isysroot ${MACOS_SDK_DIR}"
 
     if test "$GCC_VERSION_FULL" = "4.0.0" ; then
@@ -2080,17 +2050,16 @@ case "$target" in
     ZIP=zip
     LIBIDL_CFLAGS="-I$MOZ_TOOLS_DIR/include ${GLIB_CFLAGS}"
     LIBIDL_LIBS="$MOZ_TOOLS_DIR/lib/libidl-0.6_s.lib $MOZ_TOOLS_DIR/lib/glib-1.2_s.lib"
     STATIC_LIBIDL=1
     MOZ_TREE_FREETYPE=1
 
     AC_DEFINE(HAVE_SNPRINTF)
     AC_DEFINE(_WINDOWS)
-    AC_DEFINE(_WIN32)
     AC_DEFINE(WIN32)
     AC_DEFINE(XP_WIN)
     AC_DEFINE(XP_WIN32)
     AC_DEFINE(HW_THREADS)
     AC_DEFINE(STDC_HEADERS)
     AC_DEFINE(NEW_H, <new>)
     AC_DEFINE(WIN32_LEAN_AND_MEAN)
     AC_DEFINE(HAVE_LOCALTIME_R)
@@ -2199,17 +2168,16 @@ case "$target" in
                LDFLAGS="$LDFLAGS -DYNAMICBASE"
             fi
         fi
     fi
     MOZ_JPEG_LIBS='$(call EXPAND_LIBNAME_PATH,jpeg$(MOZ_BITS)$(VERSION_NUMBER),$(DEPTH)/jpeg)'
     MOZ_PNG_LIBS='$(call EXPAND_LIBNAME_PATH,png,$(DEPTH)/modules/libimg/png)'
     AC_DEFINE(HAVE_SNPRINTF)
     AC_DEFINE(_WINDOWS)
-    AC_DEFINE(_WIN32)
     AC_DEFINE(WIN32)
     AC_DEFINE(XP_WIN)
     AC_DEFINE(XP_WIN32)
     AC_DEFINE(HW_THREADS)
     AC_DEFINE(STDC_HEADERS)
     AC_DEFINE(NEW_H, <new>)
     AC_DEFINE(WIN32_LEAN_AND_MEAN)
     TARGET_MD_ARCH=win32
@@ -4533,25 +4501,16 @@ MOZ_WAVE=1
 MOZ_MEDIA=
 MOZ_PERMISSIONS=1
 MOZ_PLACES=
 MOZ_PLAINTEXT_EDITOR_ONLY=
 MOZ_PLUGINS=1
 MOZ_PREF_EXTENSIONS=1
 MOZ_PROFILELOCKING=1
 MOZ_PSM=1
-MOZ_PYTHON_EXTENSIONS="xpcom dom"
-MOZ_PYTHON=
-MOZ_PYTHON_DEBUG_SUFFIX=
-MOZ_PYTHON_DLL_SUFFIX=
-MOZ_PYTHON_INCLUDES=
-MOZ_PYTHON_LIBS=
-MOZ_PYTHON_PREFIX=
-MOZ_PYTHON_VER=
-MOZ_PYTHON_VER_DOTTED=
 MOZ_RDF=1
 MOZ_REFLOW_PERF=
 MOZ_SAFE_BROWSING=
 MOZ_HELP_VIEWER=
 MOZ_SPELLCHECK=1
 MOZ_SPLASHSCREEN=
 MOZ_STATIC_MAIL_BUILD=
 MOZ_STORAGE=1
@@ -7775,116 +7734,16 @@ if test "$MOZ_XUL"; then
 else
   dnl remove extensions that require XUL
   MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's/inspector//' -e 's/venkman//' -e 's/irc//' -e 's/tasks//'`
 fi
 
 AC_SUBST(MOZ_XUL)
 
 dnl ========================================================
-dnl Two ways to enable Python support:
-dnl   --enable-extensions=python # select all available.
-dnl    (MOZ_PYTHON_EXTENSIONS contains the list of extensions)
-dnl or:
-dnl   --enable-extensions=python/xpcom,... # select individual ones
-dnl
-dnl If either is used, we locate the Python to use.
-dnl ========================================================
-dnl
-dnl If 'python' appears anywhere in the extensions list, go lookin'...
-if test `echo "$MOZ_EXTENSIONS" | grep -c python` -ne 0; then
-    dnl Allow PYTHON to point to the Python interpreter to use
-    dnl (note that it must be the python executable - which we
-    dnl run to locate the relevant paths etc)
-    dnl If not set, we use whatever Python we can find.
-    MOZ_PYTHON=$PYTHON
-    dnl Ask Python what its version number is
-    changequote(,)
-    MOZ_PYTHON_VER=`$PYTHON -c "import sys;print '%d%d' % sys.version_info[0:2]"`
-    MOZ_PYTHON_VER_DOTTED=`$PYTHON -c "import sys;print '%d.%d' % sys.version_info[0:2]"`
-    changequote([,])
-    dnl Ask for the Python "prefix" (ie, home/source dir)
-    MOZ_PYTHON_PREFIX=`$PYTHON -c "import sys; print sys.prefix"`
-    dnl Setup the include and library directories.
-    if test "$OS_ARCH" = "WINNT"; then
-        MOZ_PYTHON_PREFIX=`$CYGPATH_W $MOZ_PYTHON_PREFIX | $CYGPATH_S`
-        dnl Source trees have "include" and "PC" for .h, and "PCbuild" for .lib
-        dnl Binary trees have "include" for .h, and "libs" for .lib
-        dnl We add 'em both - along with quotes, to handle spaces.
-        MOZ_PYTHON_DLL_SUFFIX=.pyd
-        MOZ_PYTHON_INCLUDES="\"-I$MOZ_PYTHON_PREFIX/include\" \"-I$MOZ_PYTHON_PREFIX/PC\""
-        MOZ_PYTHON_LIBS="\"/libpath:$MOZ_PYTHON_PREFIX/PCBuild\" \"/libpath:$MOZ_PYTHON_PREFIX/libs\""
-    else
-        dnl Non-Windows include and libs
-        MOZ_PYTHON_DLL_SUFFIX=$DLL_SUFFIX
-        MOZ_PYTHON_INCLUDES="-I$MOZ_PYTHON_PREFIX/include/python$MOZ_PYTHON_VER_DOTTED"
-        dnl Check for dynamic Python lib
-        dnl - A static Python is no good - multiple dynamic libraries (xpcom
-        dnl - core, xpcom loader, pydom etc) all need to share Python.
-        dnl - Python 2.3's std --enable-shared configure option will
-        dnl   create a libpython2.3.so.1.0. We should first try this
-        dnl   dotted versioned .so file because this is the one that
-        dnl   the PyXPCOM build mechanics tries to link to.
-        dnl   XXX Should find a better way than hardcoding "1.0".
-        dnl - Python developement tree dir layouts are NOT allowed here
-        dnl   because the PyXPCOM build just dies on it later anyway.
-        dnl - Fixes to the above by Python/*nix knowledgable people welcome!
-        if test -f "$MOZ_PYTHON_PREFIX/lib/libpython$MOZ_PYTHON_VER_DOTTED.so.1.0"; then
-            MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib -lpython$MOZ_PYTHON_VER_DOTTED"
-        elif test -f "$MOZ_PYTHON_PREFIX/lib64/libpython$MOZ_PYTHON_VER_DOTTED.so.1.0"; then
-            MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib64 -lpython$MOZ_PYTHON_VER_DOTTED"
-        elif test -f "$MOZ_PYTHON_PREFIX/lib/libpython$MOZ_PYTHON_VER_DOTTED.so"; then
-            MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX/lib -lpython$MOZ_PYTHON_VER_DOTTED"
-        elif test -f "$MOZ_PYTHON_PREFIX/libpython$MOZ_PYTHON_VER_DOTTED.so"; then
-            dnl Don't Python development tree directory layout.
-            MOZ_PYTHON_LIBS="-L$MOZ_PYTHON_PREFIX -lpython$MOZ_PYTHON_VER_DOTTED"
-            AC_MSG_ERROR([The Python at $MOZ_PYTHON_PREFIX looks like a dev tree. The PyXPCOM build cannot handle this yet. You must 'make install' Python and use the installed tree.])
-        elif test "$OS_ARCH" = "Darwin"; then
-            dnl We do Darwin last, so if a custom non-framework build of
-            dnl python is used on OSX, then it will be picked up first by
-            dnl the logic above.
-            MOZ_PYTHON_LIBS="-framework Python"
-        else
-            AC_MSG_ERROR([Could not find build shared libraries for Python at $MOZ_PYTHON_PREFIX.  This is required for PyXPCOM.])
-        fi
-        if test "$OS_ARCH" = "Linux"; then
-            MOZ_PYTHON_LIBS="$MOZ_PYTHON_LIBS -lutil"
-        fi
-    fi
-    dnl Handle "_d" on Windows
-    if test "$OS_ARCH" = "WINNT" && test -n "$MOZ_DEBUG"; then
-        MOZ_PYTHON_DEBUG_SUFFIX="_d"
-    else
-        MOZ_PYTHON_DEBUG_SUFFIX=
-    fi
-    AC_MSG_RESULT(Building Python extensions using python-$MOZ_PYTHON_VER_DOTTED from $MOZ_PYTHON_PREFIX)
-fi
-
-dnl If the user asks for the 'python' extension, then we add
-dnl MOZ_PYTHON_EXTENSIONS to MOZ_EXTENSIONS - but with the leading 'python/'
-dnl Note the careful regex - it must match 'python' followed by anything
-dnl other than a '/', including the end-of-string.
-if test `echo "$MOZ_EXTENSIONS" | grep -c 'python\([[^/]]\|$\)'` -ne 0; then
-    for pyext in $MOZ_PYTHON_EXTENSIONS; do
-        MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS python/$pyext`
-    done
-fi
-dnl Later we may allow MOZ_PYTHON_EXTENSIONS to be specified on the
-dnl command-line, but not yet
-AC_SUBST(MOZ_PYTHON_EXTENSIONS)
-AC_SUBST(MOZ_PYTHON)
-AC_SUBST(MOZ_PYTHON_PREFIX)
-AC_SUBST(MOZ_PYTHON_INCLUDES)
-AC_SUBST(MOZ_PYTHON_LIBS)
-AC_SUBST(MOZ_PYTHON_VER)
-AC_SUBST(MOZ_PYTHON_VER_DOTTED)
-AC_SUBST(MOZ_PYTHON_DEBUG_SUFFIX)
-AC_SUBST(MOZ_PYTHON_DLL_SUFFIX)
-
-dnl ========================================================
 dnl disable profile locking
 dnl   do no use this in applications that can have more than
 dnl   one process accessing the profile directory.
 dnl ========================================================
 MOZ_ARG_DISABLE_BOOL(profilelocking,
 [  --disable-profilelocking           Disable profile locking],
     MOZ_PROFILELOCKING=,
     MOZ_PROFILELOCKING=1 )
new file mode 100644
--- /dev/null
+++ b/content/base/crashtests/493281-1.html
@@ -0,0 +1,7 @@
+<html>
+    <body>
+        <div id="foo">
+            <script>with (document.all) foo</script>
+        </div>
+    </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/content/base/crashtests/493281-2.html
@@ -0,0 +1,12 @@
+<html>
+    <body>
+        <div id="foo">
+            <script>
+                function get(x) { return x }
+                obj = {};
+                obj.__proto__ = get(document.all);
+                obj.foo
+            </script>
+        </div>
+    </body>
+</html>
--- a/content/base/crashtests/crashtests.list
+++ b/content/base/crashtests/crashtests.list
@@ -42,10 +42,12 @@ load 407818.html
 load 410860-1.xml
 load 416734-1.html
 load 424276-1.html
 load 426987-1.html
 skip load 458637-1.html # sporadically fails -- see bug 473680
 load 472593-1.html
 load 474041-1.svg
 load 483818-1.html
+load 493281-1.html
+load 493281-2.html
 load 490760-1.xhtml
 load 494810-1.html
--- a/content/base/src/Makefile.in
+++ b/content/base/src/Makefile.in
@@ -125,16 +125,17 @@ CPPSRCS		= \
 		nsDataDocumentContentPolicy.cpp \
 		nsDOMAttribute.cpp \
 		nsDOMAttributeMap.cpp \
 		nsDOMDocumentType.cpp \
 		nsDOMFile.cpp \
 		nsDOMLists.cpp \
 		nsDOMParser.cpp \
 		nsDOMSerializer.cpp \
+		nsDOMTokenList.cpp \
 		nsDocument.cpp \
 		nsDocumentEncoder.cpp \
 		nsDocumentFragment.cpp \
 		nsFrameLoader.cpp \
 		nsGenConImageContent.cpp \
 		nsGenericDOMDataNode.cpp \
 		nsGenericElement.cpp \
 		nsGkAtoms.cpp \
--- a/content/base/src/nsContentUtils.cpp
+++ b/content/base/src/nsContentUtils.cpp
@@ -5022,16 +5022,18 @@ nsContentUtils::CanAccessNativeAnon()
       // No code at all is running. So we must be arriving here as the result
       // of C++ code asking us to do something. Allow access.
       return PR_TRUE;
     }
 
     // Some code is running, we can't make the assumption, as above, but we
     // can't use a native frame, so clear fp.
     fp = nsnull;
+  } else if (!fp->script) {
+    fp = nsnull;
   }
 
   void *annotation = fp ? JS_GetFrameAnnotation(cx, fp) : nsnull;
   PRBool privileged;
   if (NS_SUCCEEDED(principal->IsCapabilityEnabled("UniversalXPConnect",
                                                   annotation,
                                                   &privileged)) &&
       privileged) {
new file mode 100644
--- /dev/null
+++ b/content/base/src/nsDOMTokenList.cpp
@@ -0,0 +1,300 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is mozilla.org code.
+ *
+ * The Initial Developer of the Original Code is
+ * Sylvain Pasche <sylvain.pasche@gmail.com>
+ * Portions created by the Initial Developer are Copyright (C) 2009
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/*
+ * Implementation of nsIDOMDOMTokenList specified by HTML5.
+ */
+
+#include "nsDOMTokenList.h"
+
+#include "nsAttrValue.h"
+#include "nsContentUtils.h"
+#include "nsDOMError.h"
+#include "nsGenericElement.h"
+#include "nsHashSets.h"
+
+
+nsDOMTokenList::nsDOMTokenList(nsGenericElement *aElement, nsIAtom* aAttrAtom)
+  : mElement(aElement),
+    mAttrAtom(aAttrAtom)
+{
+  // We don't add a reference to our element. If it goes away,
+  // we'll be told to drop our reference
+}
+
+nsDOMTokenList::~nsDOMTokenList() { }
+
+NS_INTERFACE_TABLE_HEAD(nsDOMTokenList)
+  NS_INTERFACE_TABLE1(nsDOMTokenList,
+                      nsIDOMDOMTokenList)
+  NS_INTERFACE_TABLE_TO_MAP_SEGUE
+  NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(DOMTokenList)
+NS_INTERFACE_MAP_END
+
+NS_IMPL_ADDREF(nsDOMTokenList)
+NS_IMPL_RELEASE(nsDOMTokenList)
+
+void
+nsDOMTokenList::DropReference()
+{
+  mElement = nsnull;
+}
+
+NS_IMETHODIMP
+nsDOMTokenList::GetLength(PRUint32 *aLength)
+{
+  const nsAttrValue* attr = GetParsedAttr();
+  if (!attr) {
+    *aLength = 0;
+    return NS_OK;
+  }
+
+  *aLength = attr->GetAtomCount();
+
+  return NS_OK;
+}
+
+NS_IMETHODIMP
+nsDOMTokenList::Item(PRUint32 aIndex, nsAString& aResult)
+{
+  const nsAttrValue* attr = GetParsedAttr();
+
+  if (!attr || aIndex >= static_cast<PRUint32>(attr->GetAtomCount())) {
+    SetDOMStringToNull(aResult);
+    return NS_OK;
+  }
+  attr->AtomAt(aIndex)->ToString(aResult);
+
+  return NS_OK;
+}
+
+nsresult
+nsDOMTokenList::CheckToken(const nsAString& aStr)
+{
+  if (aStr.IsEmpty()) {
+    return NS_ERROR_DOM_SYNTAX_ERR;
+  }
+
+  nsAString::const_iterator iter, end;
+  aStr.BeginReading(iter);
+  aStr.EndReading(end);
+
+  while (iter != end) {
+    if (nsContentUtils::IsHTMLWhitespace(*iter))
+      return NS_ERROR_DOM_INVALID_CHARACTER_ERR;
+    ++iter;
+  }
+
+  return NS_OK;
+}
+
+PRBool
+nsDOMTokenList::ContainsInternal(const nsAttrValue* aAttr,
+                                 const nsAString& aToken)
+{
+  NS_ABORT_IF_FALSE(aAttr, "Need an attribute");
+
+  nsCOMPtr<nsIAtom> atom = do_GetAtom(aToken);
+  return aAttr->Contains(atom, eCaseMatters);
+}
+
+NS_IMETHODIMP
+nsDOMTokenList::Contains(const nsAString& aToken, PRBool* aResult)
+{
+  nsresult rv = CheckToken(aToken);
+  NS_ENSURE_SUCCESS(rv, rv);
+
+  const nsAttrValue* attr = GetParsedAttr();
+  if (!attr) {
+    *aResult = PR_FALSE;
+    return NS_OK;
+  }
+
+  *aResult = ContainsInternal(attr, aToken);
+
+  return NS_OK;
+}
+
+void
+nsDOMTokenList::AddInternal(const nsAttrValue* aAttr,
+                            const nsAString& aToken)
+{
+  nsAutoString resultStr;
+
+  if (aAttr) {
+    aAttr->ToString(resultStr);
+  }
+
+  if (!resultStr.IsEmpty() &&
+      !nsContentUtils::IsHTMLWhitespace(
+          resultStr.CharAt(resultStr.Length() - 1))) {
+    resultStr.Append(NS_LITERAL_STRING(" ") + aToken);
+  } else {
+    resultStr.Append(aToken);
+  }
+  mElement->SetAttr(kNameSpaceID_None, mAttrAtom, resultStr, PR_TRUE);
+}
+
+NS_IMETHODIMP
+nsDOMTokenList::Add(const nsAString& aToken)
+{
+  nsresult rv = CheckToken(aToken);
+  NS_ENSURE_SUCCESS(rv, rv);
+
+  const nsAttrValue* attr = GetParsedAttr();
+
+  if (attr && ContainsInternal(attr, aToken)) {
+    return NS_OK;
+  }
+
+  AddInternal(attr, aToken);
+
+  return NS_OK;
+}
+
+void
+nsDOMTokenList::RemoveInternal(const nsAttrValue* aAttr,
+                               const nsAString& aToken)
+{
+  NS_ABORT_IF_FALSE(aAttr, "Need an attribute");
+
+  nsAutoString input;
+  aAttr->ToString(input);
+
+  nsAString::const_iterator copyStart, tokenStart, iter, end;
+  input.BeginReading(iter);
+  input.EndReading(end);
+  copyStart = iter;
+
+  nsAutoString output;
+  PRBool lastTokenRemoved = PR_FALSE;
+
+  while (iter != end) {
+    // skip whitespace.
+    while (iter != end && nsContentUtils::IsHTMLWhitespace(*iter)) {
+      ++iter;
+    }
+
+    if (iter == end) {
+      // At this point we're sure the last seen token (if any) wasn't to be
+      // removed. So the trailing spaces will need to be kept.
+      NS_ABORT_IF_FALSE(!lastTokenRemoved, "How did this happen?");
+
+      output.Append(Substring(copyStart, end));
+      break;
+    }
+
+    tokenStart = iter;
+    do {
+      ++iter;
+    } while (iter != end && !nsContentUtils::IsHTMLWhitespace(*iter));
+
+    if (Substring(tokenStart, iter).Equals(aToken)) {
+
+      // Skip whitespace after the token, it will be collapsed.
+      while (iter != end && nsContentUtils::IsHTMLWhitespace(*iter)) {
+        ++iter;
+      }
+      copyStart = iter;
+      lastTokenRemoved = PR_TRUE;
+
+    } else {
+
+      if (lastTokenRemoved && !output.IsEmpty()) {
+        NS_ABORT_IF_FALSE(!nsContentUtils::IsHTMLWhitespace(
+          output.CharAt(output.Length() - 1)), "Invalid last output token");
+        output.Append(PRUnichar(' '));
+      }
+      lastTokenRemoved = PR_FALSE;
+      output.Append(Substring(copyStart, iter));
+      copyStart = iter;
+    }
+  }
+
+  mElement->SetAttr(kNameSpaceID_None, mAttrAtom, output, PR_TRUE);
+}
+
+NS_IMETHODIMP
+nsDOMTokenList::Remove(const nsAString& aToken)
+{
+  nsresult rv = CheckToken(aToken);
+  NS_ENSURE_SUCCESS(rv, rv);
+
+  const nsAttrValue* attr = GetParsedAttr();
+  if (!attr) {
+    return NS_OK;
+  }
+
+  if (!ContainsInternal(attr, aToken)) {
+    return NS_OK;
+  }
+
+  RemoveInternal(attr, aToken);
+
+  return NS_OK;
+}
+
+NS_IMETHODIMP
+nsDOMTokenList::Toggle(const nsAString& aToken, PRBool* aResult)
+{
+  nsresult rv = CheckToken(aToken);
+  NS_ENSURE_SUCCESS(rv, rv);
+
+  const nsAttrValue* attr = GetParsedAttr();
+
+  if (attr && ContainsInternal(attr, aToken)) {
+    RemoveInternal(attr, aToken);
+    *aResult = PR_FALSE;
+  } else {
+    AddInternal(attr, aToken);
+    *aResult = PR_TRUE;
+  }
+
+  return NS_OK;
+}
+
+NS_IMETHODIMP
+nsDOMTokenList::ToString(nsAString& aResult)
+{
+  if (!mElement) {
+    aResult.Truncate();
+    return NS_OK;
+  }
+
+  mElement->GetAttr(kNameSpaceID_None, mAttrAtom, aResult);
+
+  return NS_OK;
+}
new file mode 100644
--- /dev/null
+++ b/content/base/src/nsDOMTokenList.h
@@ -0,0 +1,78 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is mozilla.org code.
+ *
+ * The Initial Developer of the Original Code is
+ * Sylvain Pasche <sylvain.pasche@gmail.com>
+ * Portions created by the Initial Developer are Copyright (C) 2009
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/*
+ * Implementation of nsIDOMDOMTokenList specified by HTML5.
+ */
+
+#ifndef nsDOMTokenList_h___
+#define nsDOMTokenList_h___
+
+#include "nsGenericElement.h"
+#include "nsIDOMDOMTokenList.h"
+
+class nsAttrValue;
+
+class nsDOMTokenList : public nsIDOMDOMTokenList
+{
+public:
+  NS_DECL_ISUPPORTS
+  NS_DECL_NSIDOMDOMTOKENLIST
+
+  nsDOMTokenList(nsGenericElement* aElement, nsIAtom* aAttrAtom);
+
+  void DropReference();
+
+private:
+  ~nsDOMTokenList();
+
+  const nsAttrValue* GetParsedAttr() {
+    if (!mElement) {
+      return nsnull;
+    }
+    return mElement->GetParsedAttr(mAttrAtom);
+  }
+
+  nsresult CheckToken(const nsAString& aStr);
+  PRBool ContainsInternal(const nsAttrValue* aAttr, const nsAString& aToken);
+  void AddInternal(const nsAttrValue* aAttr, const nsAString& aToken);
+  void RemoveInternal(const nsAttrValue* aAttr, const nsAString& aToken);
+
+  nsGenericElement* mElement;
+  nsCOMPtr<nsIAtom> mAttrAtom;
+};
+
+#endif // nsDOMTokenList_h___
--- a/content/base/src/nsDocument.cpp
+++ b/content/base/src/nsDocument.cpp
@@ -2602,17 +2602,17 @@ nsresult
 nsDocument::ElementFromPointHelper(PRInt32 aX, PRInt32 aY,
                                    PRBool aIgnoreRootScrollFrame,
                                    PRBool aFlushLayout,
                                    nsIDOMElement** aReturn)
 {
   NS_ENSURE_ARG_POINTER(aReturn);
   *aReturn = nsnull;
   // As per the the spec, we return null if either coord is negative
-  if (aX < 0 || aY < 0)
+  if (!aIgnoreRootScrollFrame && (aX < 0 || aY < 0))
     return NS_OK;
 
   nscoord x = nsPresContext::CSSPixelsToAppUnits(aX);
   nscoord y = nsPresContext::CSSPixelsToAppUnits(aY);
   nsPoint pt(x, y);
 
   // Make sure the layout information we get is up-to-date, and
   // ensure we get a root frame (for everything but XUL)
--- a/content/base/src/nsGenericElement.cpp
+++ b/content/base/src/nsGenericElement.cpp
@@ -69,16 +69,17 @@
 #include "nsIDOMEvent.h"
 #include "nsIPrivateDOMEvent.h"
 #include "nsDOMCID.h"
 #include "nsIServiceManager.h"
 #include "nsIDOMCSSStyleDeclaration.h"
 #include "nsDOMCSSDeclaration.h"
 #include "nsINameSpaceManager.h"
 #include "nsContentList.h"
+#include "nsDOMTokenList.h"
 #include "nsDOMError.h"
 #include "nsDOMString.h"
 #include "nsIScriptSecurityManager.h"
 #include "nsIDOMMutationEvent.h"
 #include "nsMutationEvent.h"
 #include "nsNodeUtils.h"
 #include "nsDocument.h"
 #ifdef MOZ_XUL
@@ -1059,16 +1060,34 @@ nsNSElementTearoff::GetChildren(nsIDOMNo
   nsContentList* list = GetChildrenList();
   NS_ENSURE_TRUE(list, NS_ERROR_OUT_OF_MEMORY);
 
   NS_ADDREF(*aResult = list);
 
   return NS_OK;
 }
 
+NS_IMETHODIMP
+nsNSElementTearoff::GetClassList(nsIDOMDOMTokenList** aResult)
+{
+  nsGenericElement::nsDOMSlots *slots = mContent->GetDOMSlots();
+  NS_ENSURE_TRUE(slots, nsnull);
+
+  if (!slots->mClassList) {
+    nsCOMPtr<nsIAtom> classAttr = mContent->GetClassAttributeName();
+    NS_ENSURE_TRUE(classAttr, NS_OK);
+    slots->mClassList = new nsDOMTokenList(mContent, classAttr);
+    NS_ENSURE_TRUE(slots->mClassList, NS_ERROR_OUT_OF_MEMORY);
+  }
+
+  NS_ADDREF(*aResult = slots->mClassList);
+
+  return NS_OK;
+}
+
 //----------------------------------------------------------------------
 
 
 NS_IMPL_CYCLE_COLLECTION_1(nsNSElementTearoff, mContent)
 
 NS_INTERFACE_MAP_BEGIN(nsNSElementTearoff)
   NS_INTERFACE_MAP_ENTRY(nsIDOMNSElement)
   NS_INTERFACE_MAP_ENTRIES_CYCLE_COLLECTION(nsNSElementTearoff)
@@ -1752,16 +1771,20 @@ nsGenericElement::nsDOMSlots::nsDOMSlots
 {
 }
 
 nsGenericElement::nsDOMSlots::~nsDOMSlots()
 {
   if (mAttributeMap) {
     mAttributeMap->DropReference();
   }
+
+  if (mClassList) {
+    mClassList->DropReference();
+  }
 }
 
 nsGenericElement::nsGenericElement(nsINodeInfo *aNodeInfo)
   : nsIContent(aNodeInfo)
 {
   // Set the default scriptID to JS - but skip SetScriptTypeID as it
   // does extra work we know isn't necessary here...
   SetFlags(nsIProgrammingLanguage::JAVASCRIPT << NODE_SCRIPT_TYPE_OFFSET);
@@ -4005,16 +4028,17 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(ns
       }
     }
   }  
 
   // Unlink any DOM slots of interest.
   {
     nsDOMSlots *slots = tmp->GetExistingDOMSlots();
     if (slots) {
+      slots->mStyle = nsnull;
       if (slots->mAttributeMap) {
         slots->mAttributeMap->DropReference();
         slots->mAttributeMap = nsnull;
       }
       if (tmp->IsNodeOfType(nsINode::eXUL))
         NS_IF_RELEASE(slots->mControllers);
       slots->mChildrenList = nsnull;
     }
--- a/content/base/src/nsGenericElement.h
+++ b/content/base/src/nsGenericElement.h
@@ -78,16 +78,17 @@ class nsDOMCSSDeclaration;
 class nsIDOMCSSStyleDeclaration;
 class nsIURI;
 class nsINodeInfo;
 class nsIControllers;
 class nsIDOMNSFeatureFactory;
 class nsIEventListenerManager;
 class nsIScrollableView;
 class nsContentList;
+class nsDOMTokenList;
 struct nsRect;
 
 typedef PRUptrdiff PtrBits;
 
 /**
  * Class that implements the nsIDOMNodeList interface (a list of children of
  * the content), by holding a reference to the content and delegating GetLength
  * and Item to its existing child list.
@@ -105,17 +106,17 @@ public:
   NS_DECL_ISUPPORTS
 
   // nsIDOMNodeList interface
   NS_DECL_NSIDOMNODELIST
 
   // nsINodeList interface
   virtual nsIContent* GetNodeAt(PRUint32 aIndex);
   virtual PRInt32 IndexOf(nsIContent* aContent);
-  
+
   void DropReference()
   {
     mNode = nsnull;
   }
 
   nsISupports* GetParentObject()
   {
     return mNode;
@@ -449,25 +450,25 @@ public:
 
   virtual nsIAtom* GetID() const;
   virtual const nsAttrValue* DoGetClasses() const;
   NS_IMETHOD WalkContentStyleRules(nsRuleWalker* aRuleWalker);
   virtual nsICSSStyleRule* GetInlineStyleRule();
   NS_IMETHOD SetInlineStyleRule(nsICSSStyleRule* aStyleRule, PRBool aNotify);
   NS_IMETHOD_(PRBool)
     IsAttributeMapped(const nsIAtom* aAttribute) const;
-  virtual nsChangeHint GetAttributeChangeHint(const nsIAtom* aAttribute, 
+  virtual nsChangeHint GetAttributeChangeHint(const nsIAtom* aAttribute,
                                               PRInt32 aModType) const;
   /*
    * Attribute Mapping Helpers
    */
   struct MappedAttributeEntry {
     nsIAtom** attribute;
   };
-  
+
   /**
    * A common method where you can just pass in a list of maps to check
    * for attribute dependence. Most implementations of
    * IsAttributeMapped should use this function as a default
    * handler.
    */
   static PRBool
   FindAttributeDependence(const nsIAtom* aAttribute,
@@ -535,17 +536,17 @@ public:
   {
     return nsNodeUtils::CloneNodeImpl(this, aDeep, aResult);
   }
 
   //----------------------------------------
 
   /**
    * Add a script event listener with the given event handler name
-   * (like onclick) and with the value as JS   
+   * (like onclick) and with the value as JS
    * @param aEventName the event listener name
    * @param aValue the JS to attach
    * @param aDefer indicates if deferred execution is allowed
    */
   nsresult AddScriptEventListener(nsIAtom* aEventName,
                                   const nsAString& aValue,
                                   PRBool aDefer = PR_TRUE);
 
@@ -574,17 +575,17 @@ public:
                                       const nsAString& aFeature,
                                       const nsAString& aVersion,
                                       PRBool* aReturn);
 
   static nsresult InternalGetFeature(nsISupports* aObject,
                                      const nsAString& aFeature,
                                      const nsAString& aVersion,
                                      nsISupports** aReturn);
-  
+
   static already_AddRefed<nsIDOMNSFeatureFactory>
     GetDOMFeatureFactory(const nsAString& aFeature, const nsAString& aVersion);
 
   static PRBool ShouldBlur(nsIContent *aContent);
 
   /**
    * Actual implementation of the DOM InsertBefore and ReplaceChild methods.
    * Shared by nsDocument. When called from nsDocument, aParent will be null.
@@ -679,17 +680,17 @@ public:
    * false the event will be dispatched only as a DOM event.
    * If aPresContext is nsnull, this does nothing.
    */
   static nsresult DispatchClickEvent(nsPresContext* aPresContext,
                                      nsInputEvent* aSourceEvent,
                                      nsIContent* aTarget,
                                      PRBool aFullDispatch,
                                      nsEventStatus* aStatus);
-  
+
   /**
    * Method to dispatch aEvent to aTarget. If aFullDispatch is true, the event
    * will be dispatched through the full dispatching of the presshell of the
    * aPresContext; if it's false the event will be dispatched only as a DOM
    * event.
    * If aPresContext is nsnull, this does nothing.
    */
   static nsresult DispatchEvent(nsPresContext* aPresContext,
@@ -697,17 +698,17 @@ public:
                                 nsIContent* aTarget,
                                 PRBool aFullDispatch,
                                 nsEventStatus* aStatus);
 
   /**
    * Get the primary frame for this content without flushing (see
    * GetPrimaryFrameFor)
    *
-   * @return the primary frame 
+   * @return the primary frame
    */
   nsIFrame* GetPrimaryFrame();
 
   /**
    * Get the primary frame for this content with flushing (see
    * GetPrimaryFrameFor).
    *
    * @param aType the kind of flush to do, typically Flush_Frames or
@@ -730,21 +731,26 @@ public:
    * Struct that stores info on an attribute.  The name and value must
    * either both be null or both be non-null.
    */
   struct nsAttrInfo {
     nsAttrInfo(const nsAttrName* aName, const nsAttrValue* aValue) :
       mName(aName), mValue(aValue) {}
     nsAttrInfo(const nsAttrInfo& aOther) :
       mName(aOther.mName), mValue(aOther.mValue) {}
-      
+
     const nsAttrName* mName;
     const nsAttrValue* mValue;
   };
 
+  const nsAttrValue* GetParsedAttr(nsIAtom* aAttr) const
+  {
+    return mAttrsAndChildren.GetAttr(aAttr);
+  }
+
   /**
    * Returns the attribute map, if there is one.
    *
    * @return existing attribute map or nsnull.
    */
   nsDOMAttributeMap *GetAttributeMap()
   {
     nsDOMSlots *slots = GetExistingDOMSlots();
@@ -936,26 +942,31 @@ public:
       */
       nsIContent* mBindingParent;  // [Weak]
 
       /**
       * The controllers of the XUL Element.
       */
       nsIControllers* mControllers; // [OWNER]
     };
-    
+
     /**
      * Weak reference to this node
      */
     nsNodeWeakReference* mWeakReference;
 
     /**
      * An object implementing the .children property for this element.
      */
     nsRefPtr<nsContentList> mChildrenList;
+
+    /**
+     * An object implementing the .classList property for this element.
+     */
+    nsRefPtr<nsDOMTokenList> mClassList;
   };
 
 protected:
   // Override from nsINode
   virtual nsINode::nsSlots* CreateSlots();
 
   nsDOMSlots *GetDOMSlots()
   {
@@ -1091,17 +1102,17 @@ public:
 
   NS_DECL_NSIDOMNSELEMENT
 
   NS_DECL_CYCLE_COLLECTION_CLASS(nsNSElementTearoff)
 
   nsNSElementTearoff(nsGenericElement *aContent) : mContent(aContent)
   {
   }
-  
+
 private:
   nsContentList* GetChildrenList();
 
   nsRefPtr<nsGenericElement> mContent;
 
   /**
    * Get this element's client area rect in app units.
    * @return the frame's client area
--- a/content/base/src/nsGkAtomList.h
+++ b/content/base/src/nsGkAtomList.h
@@ -792,16 +792,17 @@ GK_ATOM(round, "round")
 GK_ATOM(row, "row")
 GK_ATOM(rows, "rows")
 GK_ATOM(rowspan, "rowspan")
 GK_ATOM(rtl, "rtl")
 GK_ATOM(rule, "rule")
 GK_ATOM(rules, "rules")
 GK_ATOM(s, "s")
 GK_ATOM(samp, "samp")
+GK_ATOM(scale, "scale")
 GK_ATOM(scan, "scan")
 GK_ATOM(scheme, "scheme")
 GK_ATOM(scope, "scope")
 GK_ATOM(screen, "screen")
 GK_ATOM(screenX, "screenX")
 GK_ATOM(screenY, "screenY")
 GK_ATOM(script, "script")
 GK_ATOM(scriptEnabledBeforePrintOrPreview, "scriptEnabledBeforePrintOrPreview")
@@ -1202,17 +1203,16 @@ GK_ATOM(reflect, "reflect")
 GK_ATOM(refX, "refX")
 GK_ATOM(refY, "refY")
 GK_ATOM(requiredExtensions, "requiredExtensions")
 GK_ATOM(requiredFeatures, "requiredFeatures")
 GK_ATOM(rotate, "rotate")
 GK_ATOM(rx, "rx")
 GK_ATOM(ry, "ry")
 GK_ATOM(saturate, "saturate")
-GK_ATOM(scale, "scale")
 GK_ATOM(set, "set")
 GK_ATOM(seed, "seed")
 GK_ATOM(shape_rendering, "shape-rendering")
 GK_ATOM(skewX, "skewX")
 GK_ATOM(skewY, "skewY")
 GK_ATOM(slope, "slope")
 GK_ATOM(spacing, "spacing")
 GK_ATOM(specularConstant, "specularConstant")
--- a/content/base/test/Makefile.in
+++ b/content/base/test/Makefile.in
@@ -317,16 +317,17 @@ include $(topsrcdir)/config/rules.mk
 		file_bug498897.html \
 		file_bug498897.html^headers^ \
 		file_bug498897.css \
 		test_bug493881.js \
 		test_bug493881.html \
 		bug466409-page.html \
 		bug466409-empty.css \
 		test_bug466409.html \
+		test_classList.html \
 		$(NULL)
 # Disabled; see bug 492181
 #		test_plugin_freezing.html
 
 # Disabled for now. Mochitest isn't reliable enough for these.
 # test_bug444546.html \
 # bug444546.sjs \
 
new file mode 100644
--- /dev/null
+++ b/content/base/test/test_classList.html
@@ -0,0 +1,351 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=501257
+-->
+<head>
+  <title>Test for the classList element attribute</title>
+  <script type="application/javascript" src="/MochiKit/packed.js"></script>
+  <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+</head>
+<body>
+<a target="_blank" href="http://www.whatwg.org/specs/web-apps/current-work/#dom-classlist">classList DOM attribute</a>
+<p id="display"></p>
+<div id="content" style="display: none">
+</div>
+<pre id="test">
+<script type="application/javascript">
+
+/** Test for Bug 501257 **/
+
+const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
+const SVG_NS = "http://www.w3.org/2000/svg";
+const XHTML_NS = "http://www.w3.org/1999/xhtml"
+const MATHML_NS = "http://www.w3.org/1998/Math/MathML";
+
+var gMutationEvents = [];
+
+function onAttrModified(event) {
+  is(event.attrName, "class", "mutation on unexpected attribute");
+
+  gMutationEvents.push({
+    attrChange: event.attrChange,
+    prevValue: event.prevValue,
+    newValue: event.newValue,
+  });
+}
+
+function checkModification(e, funcName, argument, expectedRes, before, after) {
+  var shouldThrow = typeof(after) === "number";
+  if (shouldThrow) {
+    var expectedException = after;
+    // If an exception is thrown, the class attribute shouldn't change.
+    after = before;
+  }
+  if (before === null)
+    e.removeAttribute("class");
+  else
+    e.setAttribute("class", before);
+
+  var contextMsg = "(checkModification: funcName=" + funcName + ",argument=" +
+                   argument + ",expectedRes=" + expectedRes + ",before=" +
+                   before + ",after=" + after + ")";
+
+  gMutationEvents = [];
+  e.addEventListener("DOMAttrModified", onAttrModified, false);
+  try {
+    var res = e.classList[funcName](argument);
+    if (shouldThrow)
+      ok(false, "classList modification didn't throw " + contextMsg);
+  } catch (e) {
+    if (!shouldThrow)
+      ok(false, "classList modification threw an exception " + contextMsg);
+    is(e.code, expectedException, "wrong exception thrown " + contextMsg);
+  }
+  e.removeEventListener("DOMAttrModified", onAttrModified, false);
+  if (expectedRes !== null)
+    is(res, expectedRes, "wrong return value from " + funcName +
+       " " + contextMsg);
+
+  var expectedAfter = after;
+  // XUL returns an empty string when getting a non-existing class attribute.
+  if (e.namespaceURI == XUL_NS && expectedAfter === null)
+    expectedAfter = "";
+
+  is(e.getAttribute("class"), expectedAfter, "wrong class after modification " +
+     contextMsg);
+  var expectedMutation = before != after;
+  is(gMutationEvents.length, expectedMutation ? 1 : 0,
+     "unexpected mutation event count " + contextMsg);
+  if (expectedMutation && gMutationEvents.length) {
+    is(gMutationEvents[0].attrChange,
+       before == null ? MutationEvent.ADDITION : MutationEvent.MODIFICATION,
+       "wrong type of attribute change " + contextMsg);
+    // If there wasn't any previous attribute, prevValue will return an empty
+    // string.
+    var expectedPrevValue = before === null ? "" : before;
+    is(gMutationEvents[0].prevValue, expectedPrevValue,
+       "wrong previous value " + contextMsg);
+    is(gMutationEvents[0].newValue, after, "wrong new value " + contextMsg);
+  }
+}
+
+function testClassList(e) {
+
+  // basic tests
+
+  isnot(e.classList, undefined, "no classList attribute");
+  is(typeof(e.classList.contains), "function",
+     "no classList.contains function");
+  is(typeof(e.classList.add), "function", "no classList.add function");
+  is(typeof(e.classList.remove), "function", "no classList.remove function");
+  is(typeof(e.classList.toggle), "function", "no classList.toggle function");
+  try {
+    e.classList = "foo";
+    ok(false, "assigning to classList didn't throw");
+  } catch (e) { }
+
+  // length attribute
+
+  is(e.classList.length, 0, "wrong classList.length value");
+  e.setAttribute("class", "");
+  is(e.classList.length, 0, "wrong classList.length value");
+  e.setAttribute("class", "   \t  \f");
+  is(e.classList.length, 0, "wrong classList.length value");
+
+  e.setAttribute("class", "a");
+  is(e.classList.length, 1, "wrong classList.length value");
+  e.setAttribute("class", "a A");
+  is(e.classList.length, 2, "wrong classList.length value");
+  e.setAttribute("class", "\r\na\t\f");
+  is(e.classList.length, 1, "wrong classList.length value");
+
+  e.setAttribute("class", "a a");
+  is(e.classList.length, 2, "wrong classList.length value");
+
+  e.setAttribute("class", "a a a a a a");
+  is(e.classList.length, 6, "wrong classList.length value");
+
+  e.setAttribute("class", "a a b b");
+  is(e.classList.length, 4, "wrong classList.length value");
+
+  e.setAttribute("class", "a A B b");
+  is(e.classList.length, 4, "wrong classList.length value");
+
+  e.setAttribute("class", "a b c c b a a b c c");
+  is(e.classList.length, 10, "wrong classList.length value");
+
+  // [Stringifies]
+
+  e.removeAttribute("class");
+  is(e.classList.toString(), "", "wrong classList.toString() value");
+  is(e.classList + "", "", "wrong classList string conversion value");
+
+  e.setAttribute("class", "foo");
+  is(e.classList.toString(), "foo", "wrong classList.toString() value");
+  is(e.classList + "", "foo", "wrong classList string conversion value");
+
+  // item() method
+
+  // TODO out of bounds array indexing should return undefined according to the
+  // WebIDL spec. They are returning an empty string at the moment.
+  var OOB_VALUE = "";
+  todo_is(OOB_VALUE, undefined, "Wrong out of bounds value");
+
+  e.setAttribute("class", "a");
+  is(e.classList.item(-1), null, "wrong classList.item() result");
+  is(e.classList[-1], OOB_VALUE, "wrong classList[] result");
+  is(e.classList.item(0), "a", "wrong classList.item() result");
+  is(e.classList[0], "a", "wrong classList.item() result");
+  is(e.classList.item(1), null, "wrong classList.item() result");
+  is(e.classList[1], OOB_VALUE, "wrong classList.item() result");
+
+  e.setAttribute("class", "aa AA aa");
+  is(e.classList.item(-1), null, "wrong classList.item() result");
+  is(e.classList[-1], OOB_VALUE, "wrong classList[] result");
+  is(e.classList.item(0), "aa", "wrong classList.item() result");
+  is(e.classList[0], "aa", "wrong classList[] result");
+  is(e.classList.item(1), "AA", "wrong classList.item() result");
+  is(e.classList[1], "AA", "wrong classList[] result");
+  is(e.classList.item(2), "aa", "wrong classList.item() result");
+  is(e.classList[2], "aa", "wrong classList[] result");
+  is(e.classList.item(3), null, "wrong classList.item() result");
+  is(e.classList[3], OOB_VALUE, "wrong classList[] result");
+  is(e.classList.item(0xffffffff), null, "wrong classList.item() result");
+  // XXX returns undefined for index >= 0xffffffff
+  todo_is(e.classList[0xffffffff], OOB_VALUE, "wrong classList[] result");
+  is(e.classList.item(0xfffffffe), null, "wrong classList.item() result");
+  is(e.classList[0xffffffe], OOB_VALUE, "wrong classList[] result");
+
+  e.setAttribute("class", "a b");
+  is(e.classList.item(-1), null, "wrong classList.item() result");
+  is(e.classList[-1], OOB_VALUE, "wrong classList[] result");
+  is(e.classList.item(0), "a", "wrong classList.item() result");
+  is(e.classList[0], "a", "wrong classList[] result");
+  is(e.classList.item(1), "b", "wrong classList.item() result");
+  is(e.classList[1], "b", "wrong classList[] result");
+  is(e.classList.item(2), null, "wrong classList.item() result");
+  is(e.classList[2], OOB_VALUE, "wrong classList[] result");
+
+  // contains() method
+
+  e.removeAttribute("class");
+  is(e.classList.contains("a"), false, "wrong classList.contains() result");
+  try {
+    e.classList.contains("");
+    ok(false, "classList.contains() didn't throw");
+  } catch (e) {
+    is(e.code, DOMException.SYNTAX_ERR, "wrong exception thrown");
+  }
+  try {
+    e.classList.contains("  ");
+    ok(false, "classList.contains() didn't throw");
+  } catch (e) {
+    is(e.code, DOMException.INVALID_CHARACTER_ERR, "wrong exception thrown");
+  }
+  try {
+    e.classList.contains("aa ");
+    ok(false, "classList.contains() didn't throw");
+  } catch (e) {
+    is(e.code, DOMException.INVALID_CHARACTER_ERR, "wrong exception thrown");
+  }
+
+  e.setAttribute("class", "");
+  is(e.classList.contains("a"), false, "wrong classList.contains() result");
+
+  e.setAttribute("class", "a");
+  is(e.classList.contains("a"), true, "wrong classList.contains() result");
+  is(e.classList.contains("aa"), false, "wrong classList.contains() result");
+  is(e.classList.contains("b"), false, "wrong classList.contains() result");
+
+  e.setAttribute("class", "aa AA");
+  is(e.classList.contains("aa"), true, "wrong classList.contains() result");
+  is(e.classList.contains("AA"), true, "wrong classList.contains() result");
+  is(e.classList.contains("aA"), false, "wrong classList.contains() result");
+
+  e.setAttribute("class", "a a a");
+  is(e.classList.contains("a"), true, "wrong classList.contains() result");
+  is(e.classList.contains("aa"), false, "wrong classList.contains() result");
+  is(e.classList.contains("b"), false, "wrong classList.contains() result");
+
+  e.setAttribute("class", "a b c");
+  is(e.classList.contains("a"), true, "wrong classList.contains() result");
+  is(e.classList.contains("b"), true, "wrong classList.contains() result");
+
+  // add() method
+
+  function checkAdd(before, argument, after) {
+    checkModification(e, "add", argument, null, before, after);
+  }
+
+  checkAdd(null, "", DOMException.SYNTAX_ERR);
+  checkAdd(null, " ", DOMException.INVALID_CHARACTER_ERR);
+  checkAdd(null, "aa ", DOMException.INVALID_CHARACTER_ERR);
+
+  checkAdd("a", "a", "a");
+  checkAdd("aa", "AA", "aa AA");
+  checkAdd("a b c", "a", "a b c");
+  checkAdd("a a a  b", "a", "a a a  b");
+  checkAdd(null, "a", "a");
+  checkAdd("", "a", "a");
+  checkAdd(" ", "a", " a");
+  checkAdd("   \f", "a", "   \fa");
+  checkAdd("a", "b", "a b");
+  checkAdd("a b c", "d", "a b c d");
+  checkAdd("a b c ", "d", "a b c d");
+
+  // remove() method
+
+  function checkRemove(before, argument, after) {
+    checkModification(e, "remove", argument, null, before, after);
+  }
+
+  checkRemove(null, "", DOMException.SYNTAX_ERR);
+  checkRemove(null, " ", DOMException.INVALID_CHARACTER_ERR);
+  checkRemove(null, "aa ", DOMException.INVALID_CHARACTER_ERR);
+
+  checkRemove(null, "a", null);
+  checkRemove("", "a", "");
+  checkRemove("a b  c", "d", "a b  c");
+  checkRemove("a b  c", "A", "a b  c");
+  checkRemove(" a a a ", "a", "");
+  checkRemove("a  b", "a", "b");
+  checkRemove("a  b  ", "a", "b  ");
+  checkRemove("a a b", "a", "b");
+  checkRemove("aa aa bb", "aa", "bb");
+  checkRemove("a a b a a c a a", "a", "b c");
+
+  checkRemove("a  b  c", "b", "a c");
+  checkRemove("aaa  bbb  ccc", "bbb", "aaa ccc");
+  checkRemove(" a  b  c ", "b", " a c ");
+  checkRemove("a b b b c", "b", "a c");
+
+  checkRemove("a  b  c", "c", "a  b");
+  checkRemove(" a  b  c ", "c", " a  b");
+  checkRemove("a b c c c", "c", "a b");
+
+  checkRemove("a b a c a d a", "a", "b c d");
+  checkRemove("AA BB aa CC AA dd aa", "AA", "BB aa CC dd aa");
+
+  checkRemove("\ra\na\ta\f", "a", "");
+
+  // toggle() method
+
+  function checkToggle(before, argument, expectedRes, after) {
+    checkModification(e, "toggle", argument, expectedRes, before, after);
+  }
+
+  checkToggle(null, "", null, DOMException.SYNTAX_ERR);
+  checkToggle(null, "aa ", null, DOMException.INVALID_CHARACTER_ERR);
+
+  checkToggle(null, "a", true, "a");
+  checkToggle("", "a", true, "a");
+  checkToggle(" ", "a", true, " a");
+  checkToggle("   \f", "a", true, "   \fa");
+  checkToggle("a", "b", true, "a b");
+  checkToggle("a", "A", true, "a A");
+  checkToggle("a b c", "d", true, "a b c d");
+  checkToggle("a b c", "d", true, "a b c d");
+
+  checkToggle("a", "a", false, "");
+  checkToggle(" a a a ", "a", false, "");
+  checkToggle(" A A A ", "a", true, " A A A a");
+  checkToggle(" a b c ", "b", false, " a c ");
+  checkToggle(" a b c b b", "b", false, " a c");
+  checkToggle(" a b  c  ", "c", false, " a b");
+  checkToggle(" a b c ", "a", false, "b c ");
+}
+var content = document.getElementById("content");
+
+var htmlNode = document.createElement("div");
+content.appendChild(htmlNode);
+testClassList(htmlNode);
+
+var xhtmlNode = document.createElementNS(XHTML_NS, "div");
+content.appendChild(xhtmlNode);
+testClassList(xhtmlNode);
+
+var xulNode = document.createElementNS(XUL_NS, "box");
+content.appendChild(xulNode);
+testClassList(xulNode);
+
+var mathMLNode = document.createElementNS(MATHML_NS, "math");
+content.appendChild(mathMLNode);
+testClassList(mathMLNode);
+
+// Nodes not meant to be styled have a null classList property.
+
+var xmlNode = document.createElementNS(null, "foo");
+content.appendChild(xmlNode);
+is(xmlNode.classList, null, "classList is not null for plain XML nodes");
+
+var fooNode = document.createElementNS("http://example.org/foo", "foo");
+content.appendChild(fooNode);
+is(fooNode.classList, null, "classList is not null for nodes in " +
+                            " http://example.org/foo namespace");
+
+</script>
+</pre>
+</body>
+</html>
--- a/content/canvas/public/nsICanvasRenderingContextInternal.h
+++ b/content/canvas/public/nsICanvasRenderingContextInternal.h
@@ -36,16 +36,17 @@
  * ***** END LICENSE BLOCK ***** */
 
 #ifndef nsICanvasRenderingContextInternal_h___
 #define nsICanvasRenderingContextInternal_h___
 
 #include "nsISupports.h"
 #include "nsICanvasElement.h"
 #include "nsIInputStream.h"
+#include "nsIDocShell.h"
 #include "gfxPattern.h"
 
 // {ed741c16-4039-469b-91da-dca742c51a9f}
 #define NS_ICANVASRENDERINGCONTEXTINTERNAL_IID \
   { 0xed741c16, 0x4039, 0x469b, { 0x91, 0xda, 0xdc, 0xa7, 0x42, 0xc5, 0x1a, 0x9f } }
 
 class gfxContext;
 class gfxASurface;
@@ -57,16 +58,18 @@ public:
   // This method should NOT hold a ref to aParentCanvas; it will be called
   // with nsnull when the element is going away.
   NS_IMETHOD SetCanvasElement(nsICanvasElement* aParentCanvas) = 0;
 
   // Sets the dimensions of the canvas, in pixels.  Called
   // whenever the size of the element changes.
   NS_IMETHOD SetDimensions(PRInt32 width, PRInt32 height) = 0;
 
+  NS_IMETHOD InitializeWithSurface(nsIDocShell *docShell, gfxASurface *surface, PRInt32 width, PRInt32 height) = 0;
+
   // Render the canvas at the origin of the given gfxContext
   NS_IMETHOD Render(gfxContext *ctx, gfxPattern::GraphicsFilter aFilter) = 0;
 
   // Gives you a stream containing the image represented by this context.
   // The format is given in aMimeTime, for example "image/png".
   //
   // If the image format does not support transparency or aIncludeTransparency
   // is false, alpha will be discarded and the result will be the image
--- a/content/canvas/src/nsCanvasRenderingContext2D.cpp
+++ b/content/canvas/src/nsCanvasRenderingContext2D.cpp
@@ -15,16 +15,17 @@
  * The Original Code is mozilla.org code.
  *
  * The Initial Developer of the Original Code is
  *   Vladimir Vukicevic <vladimir@pobox.com>
  * Portions created by the Initial Developer are Copyright (C) 2005
  * the Initial Developer. All Rights Reserved.
  *
  * Contributor(s):
+ *   Rob Arnold <tellrob@gmail.com>
  *   Eric Butler <zantifon@gmail.com>
  *
  * Alternatively, the contents of this file may be used under the terms of
  * either the GNU General Public License Version 2 or later (the "GPL"), or
  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  * in which case the provisions of the GPL or the LGPL are applicable instead
  * of those above. If you wish to allow use of your version of this file only
  * under the terms of either the GPL or the LGPL, and not to allow others to
@@ -59,17 +60,17 @@
 #include "nsICanvasElement.h"
 #include "nsIInterfaceRequestorUtils.h"
 #include "nsIFrame.h"
 #include "nsDOMError.h"
 #include "nsIScriptError.h"
 
 #include "nsICSSParser.h"
 #include "nsICSSStyleRule.h"
-#include "nsInspectorCSSUtils.h"
+#include "nsComputedDOMStyle.h"
 #include "nsStyleSet.h"
 
 #include "nsPrintfCString.h"
 
 #include "nsReadableUtils.h"
 
 #include "nsColor.h"
 #include "nsIRenderingContext.h"
@@ -311,16 +312,17 @@ public:
 
     nsresult Redraw();
     // this rect is in CSS pixels
     nsresult Redraw(const gfxRect& r);
 
     // nsICanvasRenderingContextInternal
     NS_IMETHOD SetCanvasElement(nsICanvasElement* aParentCanvas);
     NS_IMETHOD SetDimensions(PRInt32 width, PRInt32 height);
+    NS_IMETHOD InitializeWithSurface(nsIDocShell *shell, gfxASurface *surface, PRInt32 width, PRInt32 height);
     NS_IMETHOD Render(gfxContext *ctx, gfxPattern::GraphicsFilter aFilter);
     NS_IMETHOD GetInputStream(const char* aMimeType,
                               const PRUnichar* aEncoderOptions,
                               nsIInputStream **aStream);
     NS_IMETHOD GetThebesSurface(gfxASurface **surface);
     NS_IMETHOD SetIsOpaque(PRBool isOpaque);
 
     // nsISupports interface
@@ -356,16 +358,19 @@ protected:
     PRInt32 mWidth, mHeight;
     PRPackedBool mValid;
     PRPackedBool mOpaque;
 
     // the canvas element informs us when it's going away,
     // so these are not nsCOMPtrs
     nsICanvasElement* mCanvasElement;
 
+    // If mCanvasElement is not provided, then a docshell is
+    nsCOMPtr<nsIDocShell> mDocShell;
+
     // our CSS parser, for colors and whatnot
     nsCOMPtr<nsICSSParser> mCSSParser;
 
     // yay thebes
     nsRefPtr<gfxContext> mThebes;
     nsRefPtr<gfxASurface> mSurface;
 
     PRUint32 mSaveCount;
@@ -474,16 +479,30 @@ protected:
      */
     nsresult DrawPath(Style style, gfxRect *dirtyRect = nsnull);
 
     /**
      * Draws a rectangle in the given style; used by FillRect and StrokeRect.
      */
     nsresult DrawRect(const gfxRect& rect, Style style);
 
+    /**
+     * Gets the pres shell from either the canvas element or the doc shell
+     */
+    nsIPresShell *GetPresShell() {
+      nsIPresShell *presShell = nsnull;
+      nsCOMPtr<nsIContent> content = do_QueryInterface(mCanvasElement);
+      if (content) {
+          presShell = content->GetOwnerDoc()->GetPrimaryShell();
+      } else if (mDocShell) {
+          mDocShell->GetPresShell(&presShell);
+      }
+      return presShell;
+    }
+
     // text
     enum TextAlign {
         TEXT_ALIGN_START,
         TEXT_ALIGN_END,
         TEXT_ALIGN_LEFT,
         TEXT_ALIGN_RIGHT,
         TEXT_ALIGN_CENTER
     };