From 7702c52755fd86dde2d6df8dc8effc169a723adc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A3o=20Gottwald?= Date: Thu, 7 Jan 2016 13:38:42 +0100 Subject: [PATCH 01/16] Bug 1207424 - Remove Apps toolbar button. r=gijs --- browser/app/profile/firefox.js | 2 -- browser/base/content/browser.js | 5 ----- .../customizableui/CustomizableWidgets.jsm | 12 ------------ .../customizableui/customizableWidgets.properties | 3 --- browser/modules/BrowserUITelemetry.jsm | 1 - browser/themes/osx/browser.css | 8 -------- browser/themes/shared/browser.inc | 2 +- browser/themes/shared/menupanel.inc.css | 10 ---------- browser/themes/shared/toolbarbuttons.inc.css | 8 -------- 9 files changed, 1 insertion(+), 50 deletions(-) diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js index eacc097b3c1c..d518b8a7f9e4 100644 --- a/browser/app/profile/firefox.js +++ b/browser/app/profile/firefox.js @@ -1547,8 +1547,6 @@ pref("experiments.supported", true); // Enable GMP support in the addon manager. pref("media.gmp-provider.enabled", true); -pref("browser.apps.URL", "https://marketplace.firefox.com/discovery/"); - #ifdef NIGHTLY_BUILD pref("browser.polaris.enabled", false); pref("privacy.trackingprotection.ui.enabled", false); diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js index df18ee3aff18..8213641c3874 100644 --- a/browser/base/content/browser.js +++ b/browser/base/content/browser.js @@ -6408,11 +6408,6 @@ function BrowserOpenAddonsMgr(aView) { } } -function BrowserOpenApps() { - let appsURL = Services.urlFormatter.formatURLPref("browser.apps.URL"); - switchToTabHavingURI(appsURL, true) -} - function AddKeywordForSearchField() { let mm = gBrowser.selectedBrowser.messageManager; diff --git a/browser/components/customizableui/CustomizableWidgets.jsm b/browser/components/customizableui/CustomizableWidgets.jsm index 8f05cc68d523..68f6efc0f612 100644 --- a/browser/components/customizableui/CustomizableWidgets.jsm +++ b/browser/components/customizableui/CustomizableWidgets.jsm @@ -1141,18 +1141,6 @@ const CustomizableWidgets = [ let win = aEvent.view; win.MailIntegration.sendLinkForBrowser(win.gBrowser.selectedBrowser) } - }, { - id: "web-apps-button", - label: "web-apps-button.label", - tooltiptext: "web-apps-button.tooltiptext", - onCommand: function(aEvent) { - let win = aEvent.target && - aEvent.target.ownerDocument && - aEvent.target.ownerDocument.defaultView; - if (win && typeof win.BrowserOpenApps == "function") { - win.BrowserOpenApps(); - } - } }]; if (Services.prefs.getBoolPref("privacy.panicButton.enabled")) { diff --git a/browser/locales/en-US/chrome/browser/customizableui/customizableWidgets.properties b/browser/locales/en-US/chrome/browser/customizableui/customizableWidgets.properties index 015a8056d9f3..56cafaeca1f6 100644 --- a/browser/locales/en-US/chrome/browser/customizableui/customizableWidgets.properties +++ b/browser/locales/en-US/chrome/browser/customizableui/customizableWidgets.properties @@ -115,9 +115,6 @@ social-share-button.tooltiptext = Share this page panic-button.label = Forget panic-button.tooltiptext = Forget about some browsing history -web-apps-button.label = Apps -web-apps-button.tooltiptext = Discover Apps - # LOCALIZATION NOTE(devtools-webide-button.label, devtools-webide-button.tooltiptext): # widget is only visible after WebIDE has been started once (Tools > Web Developers > WebIDE) # %S is the keyboard shortcut diff --git a/browser/modules/BrowserUITelemetry.jsm b/browser/modules/BrowserUITelemetry.jsm index b1077f6b8741..b6ad5739d2e8 100644 --- a/browser/modules/BrowserUITelemetry.jsm +++ b/browser/modules/BrowserUITelemetry.jsm @@ -92,7 +92,6 @@ XPCOMUtils.defineLazyGetter(this, "PALETTE_ITEMS", function() { "feed-button", "email-link-button", "sync-button", - "web-apps-button", ]; let panelPlacements = DEFAULT_AREA_PLACEMENTS["PanelUI-contents"]; diff --git a/browser/themes/osx/browser.css b/browser/themes/osx/browser.css index 201853e53462..00cb4b59bbeb 100644 --- a/browser/themes/osx/browser.css +++ b/browser/themes/osx/browser.css @@ -890,10 +890,6 @@ toolbar .toolbarbutton-1 > .toolbarbutton-menubutton-dropmarker > .dropmarker-ic -moz-image-region: rect(18px, 702px, 36px, 684px); } - #web-apps-button@toolbarButtonPressed@ { - -moz-image-region: rect(18px, 720px, 36px, 702px); - } - /** * OSX has a unique set of icons when fullscreen is in the checked state. */ @@ -1061,10 +1057,6 @@ toolbar .toolbarbutton-1 > .toolbarbutton-menubutton-dropmarker > .dropmarker-ic -moz-image-region: rect(36px, 1404px, 72px, 1368px); } - #web-apps-button@toolbarButtonPressed@ { - -moz-image-region: rect(36px, 1440px, 72px, 1404px); - } - #add-share-provider { list-style-image: url(chrome://browser/skin/menuPanel-small@2x.png); -moz-image-region: rect(0px, 192px, 32px, 160px); diff --git a/browser/themes/shared/browser.inc b/browser/themes/shared/browser.inc index 98f758bdf251..82f6a43585a9 100644 --- a/browser/themes/shared/browser.inc +++ b/browser/themes/shared/browser.inc @@ -2,7 +2,7 @@ % Note that zoom-reset-button is a bit different since it doesn't use an image and thus has the image with display: none. %define nestedButtons #zoom-out-button, #zoom-reset-button, #zoom-in-button, #cut-button, #copy-button, #paste-button -%define primaryToolbarButtons #back-button, #forward-button, #home-button, #print-button, #downloads-button, #bookmarks-menu-button, #new-tab-button, #new-window-button, #fullscreen-button, #sync-button, #feed-button, #social-share-button, #open-file-button, #find-button, #developer-button, #preferences-button, #privatebrowsing-button, #save-page-button, #add-ons-button, #history-panelmenu, #nav-bar-overflow-button, #PanelUI-menu-button, #characterencoding-button, #email-link-button, #sidebar-button, @nestedButtons@, #e10s-button, #panic-button, #web-apps-button, #webide-button +%define primaryToolbarButtons #back-button, #forward-button, #home-button, #print-button, #downloads-button, #bookmarks-menu-button, #new-tab-button, #new-window-button, #fullscreen-button, #sync-button, #feed-button, #social-share-button, #open-file-button, #find-button, #developer-button, #preferences-button, #privatebrowsing-button, #save-page-button, #add-ons-button, #history-panelmenu, #nav-bar-overflow-button, #PanelUI-menu-button, #characterencoding-button, #email-link-button, #sidebar-button, @nestedButtons@, #e10s-button, #panic-button, #webide-button %ifdef XP_MACOSX % Prior to 10.7 there wasn't a native fullscreen button so we use #restore-button to exit fullscreen diff --git a/browser/themes/shared/menupanel.inc.css b/browser/themes/shared/menupanel.inc.css index 57e3300b8159..51067f168f9f 100644 --- a/browser/themes/shared/menupanel.inc.css +++ b/browser/themes/shared/menupanel.inc.css @@ -158,11 +158,6 @@ -moz-image-region: rect(32px, 896px, 64px, 864px); } - #web-apps-button[cui-areatype="menu-panel"], - toolbarpaletteitem[place="palette"] > #web-apps-button { - -moz-image-region: rect(0, 928px, 32px, 896px); - } - #webide-button[cui-areatype="menu-panel"], toolbarpaletteitem[place="palette"] > #webide-button { -moz-image-region: rect(0px, 960px, 32px, 928px); @@ -368,11 +363,6 @@ -moz-image-region: rect(64px, 1792px, 128px, 1728px); } - #web-apps-button[cui-areatype="menu-panel"], - toolbarpaletteitem[place="palette"] > #web-apps-button { - -moz-image-region: rect(0, 1856px, 64px, 1792px); - } - toolbaritem[sdkstylewidget="true"] > toolbarbutton { -moz-image-region: rect(0, 1664px, 64px, 1600px); } diff --git a/browser/themes/shared/toolbarbuttons.inc.css b/browser/themes/shared/toolbarbuttons.inc.css index 6e380f8d1658..17d12cdf3f01 100644 --- a/browser/themes/shared/toolbarbuttons.inc.css +++ b/browser/themes/shared/toolbarbuttons.inc.css @@ -167,10 +167,6 @@ toolbar[brighttext] #bookmarks-menu-button > .toolbarbutton-menubutton-dropmarke transform: scaleX(-1); } -#web-apps-button[cui-areatype="toolbar"] { - -moz-image-region: rect(0, 720px, 18px, 702px); -} - #webide-button[cui-areatype="toolbar"] { -moz-image-region: rect(0, 738px, 18px, 720px); } @@ -338,10 +334,6 @@ toolbar[brighttext] #bookmarks-menu-button > .toolbarbutton-menubutton-dropmarke %endif } - #web-apps-button[cui-areatype="toolbar"] { - -moz-image-region: rect(0, 1440px, 36px, 1404px); - } - #webide-button[cui-areatype="toolbar"] { -moz-image-region: rect(0, 1476px, 36px, 1440px); } From 23ffca4d0f06b7097911bcbf28790f0fdc21a0a9 Mon Sep 17 00:00:00 2001 From: Tyler Steiman Date: Thu, 7 Jan 2016 14:02:44 +0200 Subject: [PATCH 02/16] Bug 1231312 Simplify the string in browser.properties about certificate errors sent to website owners. r=past --- browser/base/content/browser.js | 24 +++++++++++++------ .../en-US/chrome/browser/browser.properties | 14 +++++------ 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js index 8213641c3874..f8469accfe70 100644 --- a/browser/base/content/browser.js +++ b/browser/base/content/browser.js @@ -3121,8 +3121,7 @@ function getDetailedCertErrorInfo(location, securityInfoAsString) { if (!securityInfoAsString) return ""; - let details = []; - details.push(location); + let certErrorDetails = location; const serhelper = Cc["@mozilla.org/network/serialization-helper;1"] .getService(Ci.nsISerializationHelper); @@ -3132,7 +3131,7 @@ function getDetailedCertErrorInfo(location, securityInfoAsString) { let errors = Cc["@mozilla.org/nss_errors_service;1"] .getService(Ci.nsINSSErrorsService); let code = securityInfo.errorCode; - details.push(errors.getErrorMessage(errors.getXPCOMFromNSSError(code))); + certErrorDetails += "\r\n\r\n" + errors.getErrorMessage(errors.getXPCOMFromNSSError(code)); const sss = Cc["@mozilla.org/ssservice;1"] .getService(Ci.nsISiteSecurityService); @@ -3143,8 +3142,15 @@ function getDetailedCertErrorInfo(location, securityInfoAsString) { Ci.nsISocketProvider.NO_PERMANENT_STORAGE : 0; let uri = Services.io.newURI(location, null, null); - details.push(sss.isSecureHost(sss.HEADER_HSTS, uri.host, flags)); - details.push(sss.isSecureHost(sss.HEADER_HPKP, uri.host, flags)); + + let hasHSTS = sss.isSecureHost(sss.HEADER_HSTS, uri.host, flags); + let hasHPKP = sss.isSecureHost(sss.HEADER_HPKP, uri.host, flags); + certErrorDetails += "\r\n\r\n" + + gNavigatorBundle.getFormattedString("certErrorDetailsHSTS.label", + [hasHSTS]); + certErrorDetails += "\r\n" + + gNavigatorBundle.getFormattedString("certErrorDetailsKeyPinning.label", + [hasHPKP]); let certChain = ""; if (securityInfo.failedCertChain) { @@ -3155,8 +3161,12 @@ function getDetailedCertErrorInfo(location, securityInfoAsString) { certChain += getPEMString(cert); } } - details.push(certChain); - return gNavigatorBundle.getFormattedString("certErrorDetails.label", details, 5); + + certErrorDetails += "\r\n\r\n" + + gNavigatorBundle.getString("certErrorDetailsCertChain.label") + + "\r\n\r\n" + certChain; + + return certErrorDetails; } // TODO: can we pull getDERString and getPEMString in from pippki.js instead of diff --git a/browser/locales/en-US/chrome/browser/browser.properties b/browser/locales/en-US/chrome/browser/browser.properties index 2cd9a04013c4..41f1c89f8dae 100644 --- a/browser/locales/en-US/chrome/browser/browser.properties +++ b/browser/locales/en-US/chrome/browser/browser.properties @@ -799,13 +799,13 @@ unmuteTab.accesskey = M weakCryptoOverriding.message = %S recommends that you don't enter your password, credit card and other personal information on this website. revokeOverride.label = Don't Trust This Website revokeOverride.accesskey = D -# LOCALIZATION NOTE (certErrorDetails.label): This is a text string that -# appears in the about:certerror page, so that the user can copy and send it to -# the server administrators for troubleshooting. %1$S is the visited URL, %2$S -# is the error message, %3$S is true or false, depending on whether the server -# supports HSTS, %4$S is true or false, depending on whether the server -# supports HPKP, %5$S is the certificate chain in PEM format. -certErrorDetails.label = %1$S\r\n\r\n%2$S\r\n\r\nHTTP Strict Transport Security: %3$S\r\nHTTP Public Key Pinning: %4$S\r\n\r\nCertificate chain:\r\n\r\n%5$S + +# LOCALIZATION NOTE (certErrorDetails*.label): These are text strings that +# appear in the about:certerror page, so that the user can copy and send them to +# the server administrators for troubleshooting. +certErrorDetailsHSTS.label = HTTP Strict Transport Security: %S +certErrorDetailsKeyPinning.label = HTTP Public Key Pinning: %S +certErrorDetailsCertChain.label = Certificate chain: # LOCALIZATION NOTE (tabgroups.migration.anonGroup): # %S is the group number/ID From 8ae68951a8699b91472700736550f244ed4f89ef Mon Sep 17 00:00:00 2001 From: Anup Kumar Date: Wed, 16 Dec 2015 09:43:00 +0100 Subject: [PATCH 03/16] Bug 1003204: Removed CommonUtils.exceptionStr() in services/common/ r=gfritzsche --- services/common/bagheeraclient.js | 7 ++---- services/common/hawkclient.js | 4 +--- services/common/hawkrequest.js | 2 +- .../common/modules-testing/bagheeraserver.js | 4 +--- .../common/modules-testing/storageserver.js | 10 ++++----- services/common/rest.js | 22 +++++++------------ services/common/tests/unit/head_helpers.js | 2 +- services/common/tokenserverclient.js | 7 ++---- services/common/utils.js | 3 +-- 9 files changed, 21 insertions(+), 40 deletions(-) diff --git a/services/common/bagheeraclient.js b/services/common/bagheeraclient.js index c678b4cf7b4c..dd41f65dcf9b 100644 --- a/services/common/bagheeraclient.js +++ b/services/common/bagheeraclient.js @@ -28,7 +28,6 @@ Cu.import("resource://gre/modules/Log.jsm"); Cu.import("resource://services-common/rest.js"); Cu.import("resource://services-common/utils.js"); - /** * Represents the result of a Bagheera request. */ @@ -185,8 +184,7 @@ BagheeraClient.prototype = Object.freeze({ let h = Services.telemetry.getHistogramById(options.telemetryCompressed); h.add(data.length); } catch (ex) { - this._log.warn("Unable to record telemetry for compressed payload size: " + - CommonUtils.exceptionStr(ex)); + this._log.warn("Unable to record telemetry for compressed payload size", ex); } } @@ -251,8 +249,7 @@ BagheeraClient.prototype = Object.freeze({ result.request = request; if (error) { - this._log.info("Transport failure on request: " + - CommonUtils.exceptionStr(error)); + this._log.info("Transport failure on request", error); result.transportSuccess = false; deferred.resolve(result); return; diff --git a/services/common/hawkclient.js b/services/common/hawkclient.js index 0b6c5eb1d248..7fad7fb99bb8 100644 --- a/services/common/hawkclient.js +++ b/services/common/hawkclient.js @@ -28,7 +28,6 @@ this.EXPORTED_SYMBOLS = ["HawkClient"]; var {interfaces: Ci, utils: Cu} = Components; -Cu.import("resource://services-common/utils.js"); Cu.import("resource://services-crypto/utils.js"); Cu.import("resource://services-common/hawkrequest.js"); Cu.import("resource://services-common/observers.js"); @@ -271,8 +270,7 @@ this.HawkClient.prototype = { // gets the same one. _onComplete.call(this, error); } catch (ex) { - log.error("Unhandled exception processing response:" + - CommonUtils.exceptionStr(ex)); + log.error("Unhandled exception processing response", ex); deferred.reject(ex); } } diff --git a/services/common/hawkrequest.js b/services/common/hawkrequest.js index cb679faf2283..7cd31a306612 100644 --- a/services/common/hawkrequest.js +++ b/services/common/hawkrequest.js @@ -168,7 +168,7 @@ this.Intl.prototype = { this._accepted = Services.prefs.getComplexValue( "intl.accept_languages", Ci.nsIPrefLocalizedString).data; } catch (err) { - this._log.error("Error reading intl.accept_languages pref: " + CommonUtils.exceptionStr(err)); + this._log.error("Error reading intl.accept_languages pref", err); } }, diff --git a/services/common/modules-testing/bagheeraserver.js b/services/common/modules-testing/bagheeraserver.js index 81328b40bf5a..1e51b92a9f97 100644 --- a/services/common/modules-testing/bagheeraserver.js +++ b/services/common/modules-testing/bagheeraserver.js @@ -12,7 +12,6 @@ Cu.import("resource://gre/modules/Log.jsm"); Cu.import("resource://services-common/utils.js"); Cu.import("resource://testing-common/httpd.js"); - /** * This is an implementation of the Bagheera server. * @@ -159,8 +158,7 @@ BagheeraServer.prototype = { if (ex instanceof HttpError) { this._log.info("HttpError thrown: " + ex.code + " " + ex.description); } else { - this._log.warn("Exception processing request: " + - CommonUtils.exceptionStr(ex)); + this._log.warn("Exception processing request", ex); } throw ex; diff --git a/services/common/modules-testing/storageserver.js b/services/common/modules-testing/storageserver.js index 5ebc04cd3257..7a529b6ea475 100644 --- a/services/common/modules-testing/storageserver.js +++ b/services/common/modules-testing/storageserver.js @@ -573,8 +573,7 @@ StorageServerCollection.prototype = { failed[record.id] = "no bso configured"; } } catch (ex) { - this._log.info("Exception when processing BSO: " + - CommonUtils.exceptionStr(ex)); + this._log.info("Exception when processing BSO", ex); failed[record.id] = "Exception when processing."; } } @@ -933,7 +932,7 @@ StorageServer.prototype = { } catch (ex) { _("=========================================="); _("Got exception starting Storage HTTP server on port " + this.port); - _("Error: " + CommonUtils.exceptionStr(ex)); + _("Error: " + Log.exceptionStr(ex)); _("Is there a process already listening on port " + this.port + "?"); _("=========================================="); do_throw(ex); @@ -1288,7 +1287,7 @@ StorageServer.prototype = { if (e instanceof HttpError) { this.respond(req, resp, e.code, e.description, "", {}, timestamp); } else { - this._log.warn(CommonUtils.exceptionStr(e)); + this._log.warn("StorageServer: handleDefault caught an error", e); throw e; } } @@ -1393,8 +1392,7 @@ StorageServer.prototype = { try { return handler.call(this, handler, req, resp, version, username, rest); } catch (ex) { - this._log.warn("Got exception during request: " + - CommonUtils.exceptionStr(ex)); + this._log.warn("Got exception during request", ex); throw ex; } } diff --git a/services/common/rest.js b/services/common/rest.js index df27318859a6..50c18d9c2432 100644 --- a/services/common/rest.js +++ b/services/common/rest.js @@ -361,7 +361,7 @@ RESTRequest.prototype = { channel.asyncOpen(this, null); } catch (ex) { // asyncOpen can throw in a bunch of cases -- e.g., a forbidden port. - this._log.warn("Caught an error in asyncOpen: " + CommonUtils.exceptionStr(ex)); + this._log.warn("Caught an error in asyncOpen", ex); CommonUtils.nextTick(onComplete.bind(this, ex)); } this.status = this.SENT; @@ -517,8 +517,7 @@ RESTRequest.prototype = { } } catch (ex) { this._log.warn("Exception thrown reading " + count + " bytes from " + - "the channel."); - this._log.warn(CommonUtils.exceptionStr(ex)); + "the channel", ex); throw ex; } } else { @@ -538,8 +537,7 @@ RESTRequest.prototype = { this.onProgress(); } catch (ex) { this._log.warn("Got exception calling onProgress handler, aborting " + - this.method + " " + channel.URI.spec); - this._log.debug("Exception: " + CommonUtils.exceptionStr(ex)); + this.method + " " + channel.URI.spec, ex); this.abort(); if (!this.onComplete) { @@ -606,7 +604,7 @@ RESTRequest.prototype = { } } } catch (ex) { - this._log.error("Error copying headers: " + CommonUtils.exceptionStr(ex)); + this._log.error("Error copying headers", ex); } this.channel = newChannel; @@ -642,8 +640,7 @@ RESTResponse.prototype = { try { status = this.request.channel.responseStatus; } catch (ex) { - this._log.debug("Caught exception fetching HTTP status code:" + - CommonUtils.exceptionStr(ex)); + this._log.debug("Caught exception fetching HTTP status code", ex); return null; } Object.defineProperty(this, "status", {value: status}); @@ -658,8 +655,7 @@ RESTResponse.prototype = { try { statusText = this.request.channel.responseStatusText; } catch (ex) { - this._log.debug("Caught exception fetching HTTP status text:" + - CommonUtils.exceptionStr(ex)); + this._log.debug("Caught exception fetching HTTP status text", ex); return null; } Object.defineProperty(this, "statusText", {value: statusText}); @@ -674,8 +670,7 @@ RESTResponse.prototype = { try { success = this.request.channel.requestSucceeded; } catch (ex) { - this._log.debug("Caught exception fetching HTTP success flag:" + - CommonUtils.exceptionStr(ex)); + this._log.debug("Caught exception fetching HTTP success flag", ex); return null; } Object.defineProperty(this, "success", {value: success}); @@ -694,8 +689,7 @@ RESTResponse.prototype = { headers[header.toLowerCase()] = value; }); } catch (ex) { - this._log.debug("Caught exception processing response headers:" + - CommonUtils.exceptionStr(ex)); + this._log.debug("Caught exception processing response headers", ex); return null; } diff --git a/services/common/tests/unit/head_helpers.js b/services/common/tests/unit/head_helpers.js index 41c245c7a689..b54045ec1d19 100644 --- a/services/common/tests/unit/head_helpers.js +++ b/services/common/tests/unit/head_helpers.js @@ -79,7 +79,7 @@ function httpd_setup (handlers, port=-1) { } catch (ex) { _("=========================================="); _("Got exception starting HTTP server on port " + port); - _("Error: " + CommonUtils.exceptionStr(ex)); + _("Error: " + Log.exceptionStr(ex)); _("Is there a process already listening on port " + port + "?"); _("=========================================="); do_throw(ex); diff --git a/services/common/tokenserverclient.js b/services/common/tokenserverclient.js index f7de0f78b75d..42b0aef5b3b1 100644 --- a/services/common/tokenserverclient.js +++ b/services/common/tokenserverclient.js @@ -16,7 +16,6 @@ var {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components; Cu.import("resource://gre/modules/Services.jsm"); Cu.import("resource://gre/modules/Log.jsm"); Cu.import("resource://services-common/rest.js"); -Cu.import("resource://services-common/utils.js"); Cu.import("resource://services-common/observers.js"); const PREF_LOG_LEVEL = "services.common.log.logger.tokenserverclient"; @@ -285,8 +284,7 @@ TokenServerClient.prototype = { try { cb(error, result); } catch (ex) { - self._log.warn("Exception when calling user-supplied callback: " + - CommonUtils.exceptionStr(ex)); + self._log.warn("Exception when calling user-supplied callback", ex); } cb = null; @@ -295,8 +293,7 @@ TokenServerClient.prototype = { try { client._processTokenResponse(this.response, callCallback); } catch (ex) { - this._log.warn("Error processing token server response: " + - CommonUtils.exceptionStr(ex)); + this._log.warn("Error processing token server response", ex); let error = new TokenServerClientError(ex); error.response = this.response; diff --git a/services/common/utils.js b/services/common/utils.js index 16a18a98a364..68418c5f8c4e 100644 --- a/services/common/utils.js +++ b/services/common/utils.js @@ -70,7 +70,6 @@ this.CommonUtils = { }, // Import these from Log.jsm for backward compatibility - exceptionStr: Log.exceptionStr, stackTrace: Log.stackTrace, /** @@ -102,7 +101,7 @@ this.CommonUtils = { return Services.io.newURI(URIString, null, null); } catch (e) { let log = Log.repository.getLogger("Common.Utils"); - log.debug("Could not create URI: " + CommonUtils.exceptionStr(e)); + log.debug("Could not create URI", e); return null; } }, From c14571be80146842ff2e386d368bf3d06e0688f7 Mon Sep 17 00:00:00 2001 From: Anup Kumar Date: Wed, 16 Dec 2015 09:46:00 +0100 Subject: [PATCH 04/16] Bug 1003204: Removed test_utils_exceptionStr.js and its entry in xpcshell.ini r=gfritzsche --- .../tests/unit/test_utils_exceptionStr.js | 17 ----------------- services/common/tests/unit/xpcshell.ini | 1 - 2 files changed, 18 deletions(-) delete mode 100644 services/common/tests/unit/test_utils_exceptionStr.js diff --git a/services/common/tests/unit/test_utils_exceptionStr.js b/services/common/tests/unit/test_utils_exceptionStr.js deleted file mode 100644 index d8f897c8345d..000000000000 --- a/services/common/tests/unit/test_utils_exceptionStr.js +++ /dev/null @@ -1,17 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ */ - -"use strict"; - -function run_test() { - run_next_test(); -} - -add_test(function test_exceptionStr_non_exceptions() { - do_check_eq(CommonUtils.exceptionStr(null), "null"); - do_check_eq(CommonUtils.exceptionStr(false), "false"); - do_check_eq(CommonUtils.exceptionStr(undefined), "undefined"); - do_check_eq(CommonUtils.exceptionStr(12), "12 No traceback available"); - - run_next_test(); -}); diff --git a/services/common/tests/unit/xpcshell.ini b/services/common/tests/unit/xpcshell.ini index aeee24365339..c817e7dd6637 100644 --- a/services/common/tests/unit/xpcshell.ini +++ b/services/common/tests/unit/xpcshell.ini @@ -19,7 +19,6 @@ support-files = [test_utils_encodeBase32.js] [test_utils_encodeBase64URL.js] [test_utils_ensureMillisecondsTimestamp.js] -[test_utils_exceptionStr.js] [test_utils_json.js] [test_utils_makeURI.js] [test_utils_namedTimer.js] From 4e1436bd052a6e069efc3ff82bac27dfdc48d1e8 Mon Sep 17 00:00:00 2001 From: Anup Kumar Date: Fri, 18 Dec 2015 04:05:00 +0100 Subject: [PATCH 05/16] Bug 1003204: Removed CommonUtils.exceptionStr() in toolkit/ r=gfritzsche --- toolkit/components/crashes/CrashManager.jsm | 9 +++---- toolkit/modules/ProfileAge.jsm | 2 +- toolkit/modules/SessionRecorder.jsm | 4 +-- toolkit/modules/Sqlite.jsm | 29 +++++++-------------- 4 files changed, 15 insertions(+), 29 deletions(-) diff --git a/toolkit/components/crashes/CrashManager.jsm b/toolkit/components/crashes/CrashManager.jsm index a70b0fb3b4bb..91166ca74fb7 100644 --- a/toolkit/components/crashes/CrashManager.jsm +++ b/toolkit/components/crashes/CrashManager.jsm @@ -14,7 +14,6 @@ Cu.import("resource://gre/modules/Services.jsm", this); Cu.import("resource://gre/modules/Task.jsm", this); Cu.import("resource://gre/modules/Timer.jsm", this); Cu.import("resource://gre/modules/XPCOMUtils.jsm", this); -Cu.import("resource://services-common/utils.js", this); Cu.import("resource://gre/modules/TelemetryController.jsm"); Cu.import("resource://gre/modules/KeyValueParser.jsm"); @@ -272,8 +271,7 @@ this.CrashManager.prototype = Object.freeze({ } } catch (ex) { if (ex instanceof OS.File.Error) { - this._log.warn("I/O error reading " + entry.path + ": " + - CommonUtils.exceptionStr(ex)); + this._log.warn("I/O error reading " + entry.path, ex); } else { // We should never encounter an exception. This likely represents // a coding error because all errors should be detected and @@ -282,7 +280,7 @@ this.CrashManager.prototype = Object.freeze({ // If we get here, report the error and delete the source file // so we don't see it again. Cu.reportError("Exception when processing crash event file: " + - CommonUtils.exceptionStr(ex)); + Log.exceptionStr(ex)); deletePaths.push(entry.path); } } @@ -297,8 +295,7 @@ this.CrashManager.prototype = Object.freeze({ try { yield OS.File.remove(path); } catch (ex) { - this._log.warn("Error removing event file (" + path + "): " + - CommonUtils.exceptionStr(ex)); + this._log.warn("Error removing event file (" + path + ")", ex); } } diff --git a/toolkit/modules/ProfileAge.jsm b/toolkit/modules/ProfileAge.jsm index 27393007068f..f6030e2da35f 100644 --- a/toolkit/modules/ProfileAge.jsm +++ b/toolkit/modules/ProfileAge.jsm @@ -156,7 +156,7 @@ this.ProfileAge.prototype = { function onStatFailure(e) { // Never mind. - self._log.debug("Stat failure: " + CommonUtils.exceptionStr(e)); + self._log.debug("Stat failure", e); } return OS.File.stat(entry.path) diff --git a/toolkit/modules/SessionRecorder.jsm b/toolkit/modules/SessionRecorder.jsm index 8cf31abb4304..3a547283b1da 100644 --- a/toolkit/modules/SessionRecorder.jsm +++ b/toolkit/modules/SessionRecorder.jsm @@ -15,7 +15,6 @@ Cu.import("resource://gre/modules/XPCOMUtils.jsm"); Cu.import("resource://gre/modules/Log.jsm"); Cu.import("resource://services-common/utils.js"); - // We automatically prune sessions older than this. const MAX_SESSION_AGE_MS = 7 * 24 * 60 * 60 * 1000; // 7 days. const STARTUP_RETRY_INTERVAL_MS = 5000; @@ -344,8 +343,7 @@ SessionRecorder.prototype = Object.freeze({ this._log.debug("Recording last sessions as #" + count + "."); this._prefs.set("previous." + count, JSON.stringify(obj)); } catch (ex) { - this._log.warn("Exception when migrating last session: " + - CommonUtils.exceptionStr(ex)); + this._log.warn("Exception when migrating last session", ex); } finally { this._log.debug("Resetting prefs from last session."); for (let pref of this._CURRENT_PREFS) { diff --git a/toolkit/modules/Sqlite.jsm b/toolkit/modules/Sqlite.jsm index 30e9e38e72ae..addd9d8649fb 100644 --- a/toolkit/modules/Sqlite.jsm +++ b/toolkit/modules/Sqlite.jsm @@ -24,8 +24,6 @@ XPCOMUtils.defineLazyModuleGetter(this, "OS", "resource://gre/modules/osfile.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "Log", "resource://gre/modules/Log.jsm"); -XPCOMUtils.defineLazyModuleGetter(this, "CommonUtils", - "resource://services-common/utils.js"); XPCOMUtils.defineLazyModuleGetter(this, "FileUtils", "resource://gre/modules/FileUtils.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "Task", @@ -580,14 +578,12 @@ ConnectionData.prototype = Object.freeze({ // The best we can do is proceed without a transaction and hope // things won't break. if (wrappedConnections.has(this._identifier)) { - this._log.warn("A new transaction could not be started cause the wrapped connection had one in progress: " + - CommonUtils.exceptionStr(ex)); + this._log.warn("A new transaction could not be started cause the wrapped connection had one in progress", ex); // Unmark the in progress transaction, since it's managed by // some other non-Sqlite.jsm client. See the comment above. this._hasInProgressTransaction = false; } else { - this._log.warn("A transaction was already in progress, likely a nested transaction: " + - CommonUtils.exceptionStr(ex)); + this._log.warn("A transaction was already in progress, likely a nested transaction", ex); throw ex; } } @@ -599,18 +595,15 @@ ConnectionData.prototype = Object.freeze({ // It's possible that the exception has been caused by trying to // close the connection in the middle of a transaction. if (this._closeRequested) { - this._log.warn("Connection closed while performing a transaction: " + - CommonUtils.exceptionStr(ex)); + this._log.warn("Connection closed while performing a transaction", ex); } else { - this._log.warn("Error during transaction. Rolling back: " + - CommonUtils.exceptionStr(ex)); + this._log.warn("Error during transaction. Rolling back", ex); // If we began a transaction, we must rollback it. if (this._hasInProgressTransaction) { try { yield this.execute("ROLLBACK TRANSACTION"); } catch (inner) { - this._log.warn("Could not roll back transaction: " + - CommonUtils.exceptionStr(inner)); + this._log.warn("Could not roll back transaction", inner); } } } @@ -629,8 +622,7 @@ ConnectionData.prototype = Object.freeze({ try { yield this.execute("COMMIT TRANSACTION"); } catch (ex) { - this._log.warn("Error committing transaction: " + - CommonUtils.exceptionStr(ex)); + this._log.warn("Error committing transaction", ex); throw ex; } } @@ -776,8 +768,7 @@ ConnectionData.prototype = Object.freeze({ break; } - self._log.warn("Exception when calling onRow callback: " + - CommonUtils.exceptionStr(e)); + self._log.warn("Exception when calling onRow callback", e); } } }, @@ -942,7 +933,7 @@ function openConnection(options) { new OpenedConnection(connection.QueryInterface(Ci.mozIStorageAsyncConnection), identifier, openedOptions)); } catch (ex) { - log.warn("Could not open database: " + CommonUtils.exceptionStr(ex)); + log.warn("Could not open database", ex); reject(ex); } }); @@ -1020,7 +1011,7 @@ function cloneStorageConnection(options) { let conn = connection.QueryInterface(Ci.mozIStorageAsyncConnection); resolve(new OpenedConnection(conn, identifier, openedOptions)); } catch (ex) { - log.warn("Could not clone database: " + CommonUtils.exceptionStr(ex)); + log.warn("Could not clone database", ex); reject(ex); } }); @@ -1070,7 +1061,7 @@ function wrapStorageConnection(options) { wrappedConnections.add(identifier); resolve(wrapper); } catch (ex) { - log.warn("Could not wrap database: " + CommonUtils.exceptionStr(ex)); + log.warn("Could not wrap database", ex); throw ex; } }); From 8056e9e2140925d3fdffcab8df81f99cae6d188e Mon Sep 17 00:00:00 2001 From: Anup Kumar Date: Wed, 6 Jan 2016 17:53:00 +0100 Subject: [PATCH 06/16] Bug 1003204: Removed CommonUtils.exceptionStr() in services/ r=gfritzsche --- .../datareporting/DataReportingService.js | 23 ++++---- services/datareporting/policy.jsm | 12 ++-- services/healthreport/healthreporter.jsm | 58 +++++++------------ services/healthreport/providers.jsm | 24 +++----- services/metrics/providermanager.jsm | 14 ++--- services/metrics/storage.jsm | 7 +-- 6 files changed, 49 insertions(+), 89 deletions(-) diff --git a/services/datareporting/DataReportingService.js b/services/datareporting/DataReportingService.js index 4dd318fd3ee9..dd86a8e48b09 100644 --- a/services/datareporting/DataReportingService.js +++ b/services/datareporting/DataReportingService.js @@ -9,11 +9,10 @@ const {classes: Cc, interfaces: Ci, utils: Cu} = Components; Cu.import("resource://gre/modules/ClientID.jsm"); Cu.import("resource://gre/modules/Preferences.jsm"); Cu.import("resource://gre/modules/XPCOMUtils.jsm"); -Cu.import("resource://services-common/utils.js"); Cu.import("resource://gre/modules/Promise.jsm"); -Cu.import("resource://gre/modules/Task.jsm"); Cu.import("resource://gre/modules/osfile.jsm"); - +XPCOMUtils.defineLazyModuleGetter(this, "Log", + "resource://gre/modules/Log.jsm"); const ROOT_BRANCH = "datareporting."; const POLICY_BRANCH = ROOT_BRANCH + "policy."; @@ -122,7 +121,7 @@ DataReportingService.prototype = Object.freeze({ this._os.addObserver(this, "sessionstore-windows-restored", true); } catch (ex) { Cu.reportError("Exception when initializing data reporting service: " + - CommonUtils.exceptionStr(ex)); + Log.exceptionStr(ex)); } break; @@ -215,7 +214,7 @@ DataReportingService.prototype = Object.freeze({ } catch (ex) { this._healthReporter = null; Cu.reportError("Exception when obtaining health reporter: " + - CommonUtils.exceptionStr(ex)); + Log.exceptionStr(ex)); } return this._healthReporter; @@ -230,9 +229,7 @@ DataReportingService.prototype = Object.freeze({ let ns = {}; // Lazy import so application startup isn't adversely affected. - Cu.import("resource://gre/modules/Task.jsm", ns); Cu.import("resource://gre/modules/HealthReport.jsm", ns); - Cu.import("resource://gre/modules/Log.jsm", ns); // How many times will we rewrite this code before rolling it up into a // generic module? See also bug 451283. @@ -247,22 +244,22 @@ DataReportingService.prototype = Object.freeze({ let loggingPrefs = new Preferences(HEALTHREPORT_LOGGING_BRANCH); if (loggingPrefs.get("consoleEnabled", true)) { let level = loggingPrefs.get("consoleLevel", "Warn"); - let appender = new ns.Log.ConsoleAppender(); - appender.level = ns.Log.Level[level] || ns.Log.Level.Warn; + let appender = new Log.ConsoleAppender(); + appender.level = Log.Level[level] || Log.Level.Warn; for (let name of LOGGERS) { - let logger = ns.Log.repository.getLogger(name); + let logger = Log.repository.getLogger(name); logger.addAppender(appender); } } if (loggingPrefs.get("dumpEnabled", false)) { let level = loggingPrefs.get("dumpLevel", "Debug"); - let appender = new ns.Log.DumpAppender(); - appender.level = ns.Log.Level[level] || ns.Log.Level.Debug; + let appender = new Log.DumpAppender(); + appender.level = Log.Level[level] || Log.Level.Debug; for (let name of LOGGERS) { - let logger = ns.Log.repository.getLogger(name); + let logger = Log.repository.getLogger(name); logger.addAppender(appender); } } diff --git a/services/datareporting/policy.jsm b/services/datareporting/policy.jsm index 511044db5b81..37133b6f7f4c 100644 --- a/services/datareporting/policy.jsm +++ b/services/datareporting/policy.jsm @@ -743,8 +743,7 @@ this.DataReportingPolicy.prototype = Object.freeze({ this._recordDataPolicyNotification(this.now(), this.currentPolicyVersion); this._userNotifyPromise = null; }).bind(this), ((error) => { - this._log.warn("Data policy notification presentation failed: " + - CommonUtils.exceptionStr(error)); + this._log.warn("Data policy notification presentation failed", error); this._userNotifyPromise = null; }).bind(this)); @@ -753,8 +752,7 @@ this.DataReportingPolicy.prototype = Object.freeze({ try { this._listener.onNotifyDataPolicy(request); } catch (ex) { - this._log.warn("Exception when calling onNotifyDataPolicy: " + - CommonUtils.exceptionStr(ex)); + this._log.warn("Exception when calling onNotifyDataPolicy", ex); } this._userNotifyPromise = deferred.promise; @@ -816,8 +814,7 @@ this.DataReportingPolicy.prototype = Object.freeze({ }.bind(this); let onError = function onError(error) { - this._log.error("Error when handling data submission result: " + - CommonUtils.exceptionStr(error)); + this._log.error("Error when handling data submission result", error); this._inProgressSubmissionRequest = null; this._handleSubmissionFailure(); }.bind(this); @@ -830,8 +827,7 @@ this.DataReportingPolicy.prototype = Object.freeze({ let promise = this._listener[handler](this._inProgressSubmissionRequest); chained = chained.then(() => promise, null); } catch (ex) { - this._log.warn("Exception when calling " + handler + ": " + - CommonUtils.exceptionStr(ex)); + this._log.warn("Exception when calling " + handler, ex); this._inProgressSubmissionRequest = null; this._handleSubmissionFailure(); return; diff --git a/services/healthreport/healthreporter.jsm b/services/healthreport/healthreporter.jsm index 3603b09d0f47..569e4079be4a 100644 --- a/services/healthreport/healthreporter.jsm +++ b/services/healthreport/healthreporter.jsm @@ -163,8 +163,7 @@ HealthReporterState.prototype = Object.freeze({ this._log.warn("Saved state file does not exist."); resetObjectState(); } catch (ex) { - this._log.error("Exception when reading state from disk: " + - CommonUtils.exceptionStr(ex)); + this._log.error("Exception when reading state from disk", ex); resetObjectState(); // Don't save in case it goes away on next run. @@ -372,8 +371,7 @@ AbstractHealthReporter.prototype = Object.freeze({ // which specifically does not save the state to a file. } } catch (ex) { - this._log.error("Error deleting last payload: " + - CommonUtils.exceptionStr(ex)); + this._log.error("Error deleting last payload", ex); } // As soon as we have could have storage, we need to register cleanup or @@ -470,8 +468,7 @@ AbstractHealthReporter.prototype = Object.freeze({ OS.File.remove(path); } catch (ex) { if (!ex.becauseNoSuchFile) { - this._log.error("Exception when removing outdated payload files: " + - CommonUtils.exceptionStr(ex)); + this._log.error("Exception when removing outdated payload files", ex); } } } @@ -538,8 +535,7 @@ AbstractHealthReporter.prototype = Object.freeze({ tm.registerTimer(timerName, this.collectMeasurements.bind(this), 24 * 60 * 60); } catch (ex) { - this._log.error("Error registering collection timer: " + - CommonUtils.exceptionStr(ex)); + this._log.error("Error registering collection timer", ex); } } @@ -615,8 +611,7 @@ AbstractHealthReporter.prototype = Object.freeze({ this._currentProviderInShutdown = provider.name; yield provider.shutdown(); } catch (ex) { - this._log.warn("Error when shutting down provider: " + - CommonUtils.exceptionStr(ex)); + this._log.warn("Error when shutting down provider", ex); } } this._log.info("Provider manager shut down."); @@ -630,8 +625,7 @@ AbstractHealthReporter.prototype = Object.freeze({ yield this._storage.close(); yield this._onStorageClose(); } catch (error) { - this._log.warn("Error when closing storage: " + - CommonUtils.exceptionStr(error)); + this._log.warn("Error when closing storage", error); } this._storage = null; } @@ -732,8 +726,8 @@ AbstractHealthReporter.prototype = Object.freeze({ let logMessage = message; if (ex) { - recordMessage += ": " + CommonUtils.exceptionStr(ex); - logMessage += ": " + CommonUtils.exceptionStr(ex); + recordMessage += ": " + Log.exceptionStr(ex); + logMessage += ": " + Log.exceptionStr(ex); } // Scrub out potentially identifying information from strings that could @@ -793,8 +787,7 @@ AbstractHealthReporter.prototype = Object.freeze({ TelemetryStopwatch.finish(TELEMETRY_COLLECT_CONSTANT, this); } catch (ex) { TelemetryStopwatch.cancel(TELEMETRY_COLLECT_CONSTANT, this); - this._log.warn("Error collecting constant data: " + - CommonUtils.exceptionStr(ex)); + this._log.warn("Error collecting constant data", ex); } // Daily data is collected if it hasn't yet been collected this @@ -814,8 +807,7 @@ AbstractHealthReporter.prototype = Object.freeze({ TelemetryStopwatch.finish(TELEMETRY_COLLECT_DAILY, this); } catch (ex) { TelemetryStopwatch.cancel(TELEMETRY_COLLECT_DAILY, this); - this._log.warn("Error collecting daily data from providers: " + - CommonUtils.exceptionStr(ex)); + this._log.warn("Error collecting daily data from providers", ex); } } @@ -1098,15 +1090,13 @@ AbstractHealthReporter.prototype = Object.freeze({ out[k] = ai[v]; } } catch (ex) { - this._log.warn("Could not obtain Services.appinfo: " + - CommonUtils.exceptionStr(ex)); + this._log.warn("Could not obtain Services.appinfo", ex); } try { out["updateChannel"] = UpdateUtils.UpdateChannel; } catch (ex) { - this._log.warn("Could not obtain update channel: " + - CommonUtils.exceptionStr(ex)); + this._log.warn("Could not obtain update channel", ex); } return out; @@ -1322,8 +1312,7 @@ this.HealthReporter.prototype = Object.freeze({ try { result = AbstractHealthReporter.prototype._onInitError.call(this, error); } catch (ex) { - this._log.error("Error when calling _onInitError: " + - CommonUtils.exceptionStr(ex)); + this._log.error("Error when calling _onInitError", ex); } // This bypasses a lot of the checks in policy, such as respect for @@ -1362,8 +1351,7 @@ this.HealthReporter.prototype = Object.freeze({ try { hrProvider.recordEvent("uploadTransportFailure", date); } catch (ex) { - this._log.error("Error recording upload transport failure: " + - CommonUtils.exceptionStr(ex)); + this._log.error("Error recording upload transport failure", ex); } } @@ -1376,8 +1364,7 @@ this.HealthReporter.prototype = Object.freeze({ try { hrProvider.recordEvent("uploadServerFailure", date); } catch (ex) { - this._log.error("Error recording server failure: " + - CommonUtils.exceptionStr(ex)); + this._log.error("Error recording server failure", ex); } } @@ -1389,8 +1376,7 @@ this.HealthReporter.prototype = Object.freeze({ try { hrProvider.recordEvent("uploadSuccess", date); } catch (ex) { - this._log.error("Error recording upload success: " + - CommonUtils.exceptionStr(ex)); + this._log.error("Error recording upload success", ex); } } @@ -1409,8 +1395,7 @@ this.HealthReporter.prototype = Object.freeze({ }, _onSubmitDataRequestFailure: function (error) { - this._log.error("Error processing request to submit data: " + - CommonUtils.exceptionStr(error)); + this._log.error("Error processing request to submit data", error); }, _formatDate: function (date) { @@ -1459,8 +1444,7 @@ this.HealthReporter.prototype = Object.freeze({ try { hrProvider.recordEvent(event, now); } catch (ex) { - this._log.error("Error when recording upload attempt: " + - CommonUtils.exceptionStr(ex)); + this._log.error("Error when recording upload attempt", ex); } } @@ -1480,8 +1464,7 @@ this.HealthReporter.prototype = Object.freeze({ try { hrProvider.recordEvent("uploadClientFailure", now); } catch (ex) { - this._log.error("Error when recording client failure: " + - CommonUtils.exceptionStr(ex)); + this._log.error("Error when recording client failure", ex); } } throw ex; @@ -1516,8 +1499,7 @@ this.HealthReporter.prototype = Object.freeze({ this.lastSubmitID); yield this._onBagheeraResult(request, true, this._now(), result); } catch (ex) { - this._log.error("Error processing request to delete data: " + - CommonUtils.exceptionStr(error)); + this._log.error("Error processing request to delete data", ex); } }.bind(this)); }, diff --git a/services/healthreport/providers.jsm b/services/healthreport/providers.jsm index 8c0e910c67e2..6fb782e639b0 100644 --- a/services/healthreport/providers.jsm +++ b/services/healthreport/providers.jsm @@ -231,8 +231,7 @@ AppInfoProvider.prototype = Object.freeze({ try { ai = Services.appinfo; } catch (ex) { - this._log.error("Could not obtain Services.appinfo: " + - CommonUtils.exceptionStr(ex)); + this._log.error("Could not obtain Services.appinfo", ex); yield recordEmptyAppInfo(); return; } @@ -314,8 +313,7 @@ AppInfoProvider.prototype = Object.freeze({ try { ai = Services.appinfo; } catch (ex) { - this._log.warn("Could not obtain Services.appinfo: " + - CommonUtils.exceptionStr(ex)); + this._log.warn("Could not obtain Services.appinfo", ex); throw ex; } @@ -335,8 +333,7 @@ AppInfoProvider.prototype = Object.freeze({ try { yield m.setLastText("updateChannel", UpdateUtils.UpdateChannel); } catch (ex) { - this._log.warn("Could not obtain update channel: " + - CommonUtils.exceptionStr(ex)); + this._log.warn("Could not obtain update channel", ex); } yield m.setLastText("distributionID", this._prefs.get("distribution.id", "")); @@ -349,8 +346,7 @@ AppInfoProvider.prototype = Object.freeze({ .getSelectedLocale("global"); yield m.setLastText("locale", locale); } catch (ex) { - this._log.warn("Could not obtain application locale: " + - CommonUtils.exceptionStr(ex)); + this._log.warn("Could not obtain application locale", ex); } // FUTURE this should be retrieved periodically or at upload time. @@ -377,8 +373,7 @@ AppInfoProvider.prototype = Object.freeze({ shellService = Cc["@mozilla.org/browser/shell-service;1"] .getService(Ci.nsIShellService); } catch (ex) { - this._log.warn("Could not obtain shell service: " + - CommonUtils.exceptionStr(ex)); + this._log.warn("Could not obtain shell service", ex); } let isDefault = -1; @@ -388,8 +383,7 @@ AppInfoProvider.prototype = Object.freeze({ // This uses the same set of flags used by the pref pane. isDefault = shellService.isDefaultBrowser(false, true) ? 1 : 0; } catch (ex) { - this._log.warn("Could not determine if default browser: " + - CommonUtils.exceptionStr(ex)); + this._log.warn("Could not determine if default browser", ex); } } @@ -506,8 +500,7 @@ SysInfoProvider.prototype = Object.freeze({ yield m[method](v, value); } catch (ex) { - this._log.warn("Error obtaining system info field: " + k + " " + - CommonUtils.exceptionStr(ex)); + this._log.warn("Error obtaining system info field: " + k, ex); } } }, @@ -908,8 +901,7 @@ AddonsProvider.prototype = Object.freeze({ pluginsField = JSON.stringify(data.plugins); gmPluginsField = JSON.stringify(data.gmPlugins); } catch (ex) { - this._log.warn("Exception when populating add-ons data structure: " + - CommonUtils.exceptionStr(ex)); + this._log.warn("Exception when populating add-ons data structure", ex); deferred.reject(ex); return; } diff --git a/services/metrics/providermanager.jsm b/services/metrics/providermanager.jsm index cf26d444b296..6b7e43ef874f 100644 --- a/services/metrics/providermanager.jsm +++ b/services/metrics/providermanager.jsm @@ -277,8 +277,7 @@ this.ProviderManager.prototype = Object.freeze({ try { yield inFlightPromise; } catch (ex) { - this._log.warn("Error when waiting for existing pull-only promise: " + - CommonUtils.exceptionStr(ex)); + this._log.warn("Error when waiting for existing pull-only promise", ex); } } @@ -363,8 +362,7 @@ this.ProviderManager.prototype = Object.freeze({ try { yield inFlightPromise; } catch (ex) { - this._log.warn("Error when waiting for existing pull-only promise: " + - CommonUtils.exceptionStr(ex)); + this._log.warn("Error when waiting for existing pull-only promise", ex); } } @@ -497,8 +495,7 @@ this.ProviderManager.prototype = Object.freeze({ try { onCollect(entry, result); } catch (ex) { - this._log.warn("onCollect callback threw: " + - CommonUtils.exceptionStr(ex)); + this._log.warn("onCollect callback threw", ex); } } @@ -545,7 +542,7 @@ this.ProviderManager.prototype = Object.freeze({ _recordProviderError: function (name, msg, ex) { msg = "Provider error: " + name + ": " + msg; if (ex) { - msg += ": " + CommonUtils.exceptionStr(ex); + msg += ": " + Log.exceptionStr(ex); } this._log.warn(msg); @@ -553,8 +550,7 @@ this.ProviderManager.prototype = Object.freeze({ try { this.onProviderError(msg); } catch (callError) { - this._log.warn("Exception when calling onProviderError callback: " + - CommonUtils.exceptionStr(callError)); + this._log.warn("Exception when calling onProviderError callback", callError); } } }, diff --git a/services/metrics/storage.jsm b/services/metrics/storage.jsm index 9c98da18d224..e158a4b8dd8a 100644 --- a/services/metrics/storage.jsm +++ b/services/metrics/storage.jsm @@ -26,7 +26,6 @@ Cu.import("resource://gre/modules/Task.jsm"); Cu.import("resource://gre/modules/Log.jsm"); Cu.import("resource://services-common/utils.js"); - // These do not account for leap seconds. Meh. function dateToDays(date) { return Math.floor(date.getTime() / MILLISECONDS_PER_DAY); @@ -1428,8 +1427,7 @@ MetricsStorageSqliteBackend.prototype = Object.freeze({ this._queuedInProgress = true; promise = func(); } catch (ex) { - this._log.warn("Queued operation threw during execution: " + - CommonUtils.exceptionStr(ex)); + this._log.warn("Queued operation threw during execution", ex); this._queuedInProgress = false; deferred.reject(ex); this._popAndPerformQueuedOperation(); @@ -1454,8 +1452,7 @@ MetricsStorageSqliteBackend.prototype = Object.freeze({ this._popAndPerformQueuedOperation(); }.bind(this), function onError(error) { - this._log.warn("Failure when performing queued operation: " + - CommonUtils.exceptionStr(error)); + this._log.warn("Failure when performing queued operation", error); this._queuedInProgress = false; deferred.reject(error); this._popAndPerformQueuedOperation(); From 072ebdb4653caadd461b2094dd075288378d792c Mon Sep 17 00:00:00 2001 From: Anup Kumar Date: Thu, 7 Jan 2016 07:09:00 +0100 Subject: [PATCH 07/16] Bug 1003204: Removed CommonUtils.exceptionStr() in services/sync r=markh r=gfritzsche --- services/sync/modules/addonsreconciler.js | 5 ++-- services/sync/modules/addonutils.js | 2 +- services/sync/modules/engines.js | 27 +++++++------------ services/sync/modules/engines/bookmarks.js | 12 +++------ services/sync/modules/engines/passwords.js | 9 +++---- services/sync/modules/identity.js | 2 +- services/sync/modules/policies.js | 2 +- services/sync/modules/record.js | 2 +- services/sync/modules/resource.js | 23 +++++++--------- services/sync/modules/service.js | 23 ++++++---------- services/sync/modules/stages/enginesync.js | 3 +-- services/sync/modules/util.js | 6 ++--- services/sync/tests/unit/head_http_server.js | 2 +- services/sync/tests/unit/test_addon_utils.js | 3 ++- services/sync/tests/unit/test_addons_store.js | 3 ++- .../sync/tests/unit/test_bookmark_engine.js | 6 ++--- .../tests/unit/test_fxa_node_reassignment.js | 2 +- .../sync/tests/unit/test_node_reassignment.js | 2 +- .../tests/unit/test_service_sync_locked.js | 12 ++++----- services/sync/tests/unit/test_utils_catch.js | 2 +- .../sync/tps/extensions/tps/resource/tps.jsm | 5 ++-- 21 files changed, 62 insertions(+), 91 deletions(-) diff --git a/services/sync/modules/addonsreconciler.js b/services/sync/modules/addonsreconciler.js index 58605f55d562..21b9eaeac22e 100644 --- a/services/sync/modules/addonsreconciler.js +++ b/services/sync/modules/addonsreconciler.js @@ -488,8 +488,7 @@ AddonsReconciler.prototype = { try { listener.changeListener.call(listener, date, change, state); } catch (ex) { - this._log.warn("Exception calling change listener: " + - Utils.exceptionStr(ex)); + this._log.warn("Exception calling change listener", ex); } } }, @@ -635,7 +634,7 @@ AddonsReconciler.prototype = { } } catch (ex) { - this._log.warn("Exception: " + Utils.exceptionStr(ex)); + this._log.warn("Exception", ex); } }, diff --git a/services/sync/modules/addonutils.js b/services/sync/modules/addonutils.js index 7e095d1f38bc..43512a170431 100644 --- a/services/sync/modules/addonutils.js +++ b/services/sync/modules/addonutils.js @@ -147,7 +147,7 @@ AddonUtilsInternal.prototype = { install.install(); } catch (ex) { - this._log.error("Error installing add-on: " + Utils.exceptionstr(ex)); + this._log.error("Error installing add-on", ex); cb(ex, null); } }.bind(this)); diff --git a/services/sync/modules/engines.js b/services/sync/modules/engines.js index 31018ec3b47a..0b0c5ea56c40 100644 --- a/services/sync/modules/engines.js +++ b/services/sync/modules/engines.js @@ -15,7 +15,6 @@ var {classes: Cc, interfaces: Ci, results: Cr, utils: Cu} = Components; Cu.import("resource://services-common/async.js"); Cu.import("resource://gre/modules/Log.jsm"); Cu.import("resource://services-common/observers.js"); -Cu.import("resource://services-common/utils.js"); Cu.import("resource://services-sync/constants.js"); Cu.import("resource://services-sync/identity.js"); Cu.import("resource://services-sync/record.js"); @@ -308,8 +307,7 @@ Store.prototype = { // ex.cause will carry its stack with it when rethrown. throw ex.cause; } catch (ex if !Async.isShutdownException(ex)) { - this._log.warn("Failed to apply incoming record " + record.id); - this._log.warn("Encountered exception: " + Utils.exceptionStr(ex)); + this._log.warn("Failed to apply incoming record " + record.id, ex); this.engine._noteApplyFailure(); failed.push(record.id); } @@ -578,16 +576,11 @@ EngineManager.prototype = { this._engines[name] = engine; } } catch (ex) { - this._log.error(CommonUtils.exceptionStr(ex)); - - let mesg = ex.message ? ex.message : ex; let name = engineObject || ""; name = name.prototype || ""; name = name.name || ""; - let out = "Could not initialize engine '" + name + "': " + mesg; - this._log.error(out); - + this._log.error(`Could not initialize engine ${name}`, ex); return engineObject; } }, @@ -817,7 +810,7 @@ SyncEngine.prototype = { return this._previousFailed; }, set previousFailed(val) { - let cb = (error) => this._log.error(Utils.exceptionStr(error)); + let cb = (error) => this._log.error("Failed to set previousFailed", error); // Coerce the array to a string for more efficient comparison. if (val + "" == this._previousFailed) { return; @@ -1000,8 +993,7 @@ SyncEngine.prototype = { } catch (ex if !Async.isShutdownException(ex)) { // Catch any error that escapes from applyIncomingBatch. At present // those will all be abort events. - this._log.warn("Got exception " + Utils.exceptionStr(ex) + - ", aborting processIncoming."); + this._log.warn("Got exception, aborting processIncoming", ex); aborting = ex; } this._tracker.ignoreAll = false; @@ -1069,7 +1061,7 @@ SyncEngine.prototype = { self._log.debug("Ignoring second retry suggestion."); // Fall through to error case. case SyncEngine.kRecoveryStrategy.error: - self._log.warn("Error decrypting record: " + Utils.exceptionStr(ex)); + self._log.warn("Error decrypting record", ex); self._noteApplyFailure(); failed.push(item.id); return; @@ -1080,7 +1072,7 @@ SyncEngine.prototype = { } } } catch (ex) { - self._log.warn("Error decrypting record: " + Utils.exceptionStr(ex)); + self._log.warn("Error decrypting record", ex); self._noteApplyFailure(); failed.push(item.id); return; @@ -1095,8 +1087,7 @@ SyncEngine.prototype = { failed.push(item.id); aborting = ex.cause; } catch (ex if !Async.isShutdownException(ex)) { - self._log.warn("Failed to reconcile incoming record " + item.id); - self._log.warn("Encountered exception: " + Utils.exceptionStr(ex)); + self._log.warn("Failed to reconcile incoming record " + item.id, ex); self._noteApplyFailure(); failed.push(item.id); return; @@ -1485,7 +1476,7 @@ SyncEngine.prototype = { out.encrypt(this.service.collectionKeys.keyForCollection(this.name)); up.pushData(out); } catch (ex if !Async.isShutdownException(ex)) { - this._log.warn("Error creating record: " + Utils.exceptionStr(ex)); + this._log.warn("Error creating record", ex); } // Partial upload @@ -1576,7 +1567,7 @@ SyncEngine.prototype = { this._log.trace("Trying to decrypt a record from the server.."); test.get(); } catch (ex if !Async.isShutdownException(ex)) { - this._log.debug("Failed test decrypt: " + Utils.exceptionStr(ex)); + this._log.debug("Failed test decrypt", ex); } return canDecrypt; diff --git a/services/sync/modules/engines/bookmarks.js b/services/sync/modules/engines/bookmarks.js index d59f3b26da79..f9c5165b7727 100644 --- a/services/sync/modules/engines/bookmarks.js +++ b/services/sync/modules/engines/bookmarks.js @@ -426,8 +426,7 @@ BookmarksEngine.prototype = { // Failure to create a backup is somewhat bad, but probably not bad // enough to prevent syncing of bookmarks - so just log the error and // continue. - this._log.warn("Got exception \"" + Utils.exceptionStr(ex) + - "\" backing up bookmarks, but continuing with sync."); + this._log.warn("Error while backing up bookmarks, but continuing with sync", ex); cb(); } ); @@ -442,9 +441,7 @@ BookmarksEngine.prototype = { try { guidMap = this._buildGUIDMap(); } catch (ex if !Async.isShutdownException(ex)) { - this._log.warn("Got exception \"" + Utils.exceptionStr(ex) + - "\" building GUID map." + - " Skipping all other incoming items."); + this._log.warn("Error while building GUID map, skipping all other incoming items", ex); throw {code: Engine.prototype.eEngineAbortApplyIncoming, cause: ex}; } @@ -691,7 +688,7 @@ BookmarksStore.prototype = { return true; } } catch(ex) { - this._log.debug("Failed to reparent item. " + Utils.exceptionStr(ex)); + this._log.debug("Failed to reparent item", ex); } return false; }, @@ -1323,8 +1320,7 @@ BookmarksStore.prototype = { let u = PlacesUtils.bookmarks.getBookmarkURI(itemID); this._tagURI(u, tags); } catch (e) { - this._log.warn("Got exception fetching URI for " + itemID + ": not tagging. " + - Utils.exceptionStr(e)); + this._log.warn(`Got exception fetching URI for ${itemID} not tagging`, e); // I guess it doesn't have a URI. Don't try to tag it. return; diff --git a/services/sync/modules/engines/passwords.js b/services/sync/modules/engines/passwords.js index b570ab654f3f..b6d155556dc8 100644 --- a/services/sync/modules/engines/passwords.js +++ b/services/sync/modules/engines/passwords.js @@ -69,7 +69,7 @@ PasswordEngine.prototype = { Svc.Prefs.set("deletePwdFxA", true); Svc.Prefs.reset("deletePwd"); // The old prefname we previously used. } catch (ex if !Async.isShutdownException(ex)) { - this._log.debug("Password deletes failed: " + Utils.exceptionStr(ex)); + this._log.debug("Password deletes failed", ex); } } }, @@ -233,8 +233,7 @@ PasswordStore.prototype = { try { Services.logins.addLogin(login); } catch(ex) { - this._log.debug("Adding record " + record.id + - " resulted in exception " + Utils.exceptionStr(ex)); + this._log.debug(`Adding record ${record.id} resulted in exception`, ex); } }, @@ -266,9 +265,7 @@ PasswordStore.prototype = { try { Services.logins.modifyLogin(loginItem, newinfo); } catch(ex) { - this._log.debug("Modifying record " + record.id + - " resulted in exception " + Utils.exceptionStr(ex) + - ". Not modifying."); + this._log.debug(`Modifying record ${record.id} resulted in exception; not modifying`, ex); } }, diff --git a/services/sync/modules/identity.js b/services/sync/modules/identity.js index 66c1e4b6b980..f6d52bd0f799 100644 --- a/services/sync/modules/identity.js +++ b/services/sync/modules/identity.js @@ -326,7 +326,7 @@ IdentityManager.prototype = { try { this._syncKeyBundle = new SyncKeyBundle(this.username, this.syncKey); } catch (ex) { - this._log.warn(Utils.exceptionStr(ex)); + this._log.warn("Failed to create sync bundle", ex); return null; } } diff --git a/services/sync/modules/policies.js b/services/sync/modules/policies.js index eb42f8d0edd5..8ba6ab6136c2 100644 --- a/services/sync/modules/policies.js +++ b/services/sync/modules/policies.js @@ -581,7 +581,7 @@ ErrorHandler.prototype = { this.checkServerError(exception, "engines/" + engine_name); Status.engines = [engine_name, exception.failureCode || ENGINE_UNKNOWN_FAIL]; - this._log.debug(engine_name + " failed: " + Utils.exceptionStr(exception)); + this._log.debug(engine_name + " failed", exception); Services.telemetry.getKeyedHistogramById("WEAVE_ENGINE_SYNC_ERRORS") .add(engine_name); diff --git a/services/sync/modules/record.js b/services/sync/modules/record.js index 654a88aef0af..d64559e1714c 100644 --- a/services/sync/modules/record.js +++ b/services/sync/modules/record.js @@ -239,7 +239,7 @@ RecordManager.prototype = { return this.set(url, record); } catch (ex if !Async.isShutdownException(ex)) { - this._log.debug("Failed to import record: " + Utils.exceptionStr(ex)); + this._log.debug("Failed to import record", ex); return null; } }, diff --git a/services/sync/modules/resource.js b/services/sync/modules/resource.js index 7b6f8327a877..e5db65391886 100644 --- a/services/sync/modules/resource.js +++ b/services/sync/modules/resource.js @@ -233,7 +233,7 @@ AsyncResource.prototype = { channel.asyncOpen(listener, null); } catch (ex) { // asyncOpen can throw in a bunch of cases -- e.g., a forbidden port. - this._log.warn("Caught an error in asyncOpen: " + CommonUtils.exceptionStr(ex)); + this._log.warn("Caught an error in asyncOpen", ex); CommonUtils.nextTick(callback.bind(this, ex)); } }, @@ -280,9 +280,7 @@ AsyncResource.prototype = { } catch(ex) { // Got a response, but an exception occurred during processing. // This shouldn't occur. - this._log.warn("Caught unexpected exception " + CommonUtils.exceptionStr(ex) + - " in _onComplete."); - this._log.debug(CommonUtils.stackTrace(ex)); + this._log.warn("Caught unexpected exception in _oncomplete", ex); } // Process headers. They can be empty, or the call can otherwise fail, so @@ -320,9 +318,7 @@ AsyncResource.prototype = { contentLength + "."); } } catch (ex) { - this._log.debug("Caught exception " + CommonUtils.exceptionStr(ex) + - " visiting headers in _onComplete."); - this._log.debug(CommonUtils.stackTrace(ex)); + this._log.debug("Caught exception visiting headers in _onComplete", ex); } let ret = new String(data); @@ -338,7 +334,7 @@ AsyncResource.prototype = { try { return JSON.parse(ret); } catch (ex) { - this._log.warn("Got exception parsing response body: \"" + CommonUtils.exceptionStr(ex)); + this._log.warn("Got exception parsing response body", ex); // Stringify to avoid possibly printing non-printable characters. this._log.debug("Parse fail: Response body starts: \"" + JSON.stringify((ret + "").slice(0, 100)) + @@ -544,7 +540,7 @@ ChannelListener.prototype = { siStream = Cc["@mozilla.org/scriptableinputstream;1"].createInstance(Ci.nsIScriptableInputStream); siStream.init(stream); } catch (ex) { - this._log.warn("Exception creating nsIScriptableInputStream." + CommonUtils.exceptionStr(ex)); + this._log.warn("Exception creating nsIScriptableInputStream", ex); this._log.debug("Parameters: " + req.URI.spec + ", " + stream + ", " + off + ", " + count); // Cannot proceed, so rethrow and allow the channel to cancel itself. throw ex; @@ -561,8 +557,7 @@ ChannelListener.prototype = { this._onProgress(); } catch (ex if !Async.isShutdownException(ex)) { this._log.warn("Got exception calling onProgress handler during fetch of " - + req.URI.spec); - this._log.debug(CommonUtils.exceptionStr(ex)); + + req.URI.spec, ex); this._log.trace("Rethrowing; expect a failure code from the HTTP channel."); throw ex; } @@ -577,7 +572,7 @@ ChannelListener.prototype = { try { CommonUtils.namedTimer(this.abortRequest, this._timeout, this, "abortTimer"); } catch (ex) { - this._log.warn("Got exception extending abort timer: " + CommonUtils.exceptionStr(ex)); + this._log.warn("Got exception extending abort timer", ex); } }, @@ -671,14 +666,14 @@ ChannelNotificationListener.prototype = { } } } catch (ex) { - this._log.error("Error copying headers: " + CommonUtils.exceptionStr(ex)); + this._log.error("Error copying headers", ex); } // We let all redirects proceed. try { callback.onRedirectVerifyCallback(Cr.NS_OK); } catch (ex) { - this._log.error("onRedirectVerifyCallback threw!" + CommonUtils.exceptionStr(ex)); + this._log.error("onRedirectVerifyCallback threw!", ex); } } }; diff --git a/services/sync/modules/service.js b/services/sync/modules/service.js index 9cd067fe27e1..6c18c7c7bb7a 100644 --- a/services/sync/modules/service.js +++ b/services/sync/modules/service.js @@ -21,7 +21,6 @@ const KEYS_WBO = "keys"; Cu.import("resource://gre/modules/Preferences.jsm"); Cu.import("resource://gre/modules/XPCOMUtils.jsm"); Cu.import("resource://gre/modules/Log.jsm"); -Cu.import("resource://services-common/utils.js"); Cu.import("resource://services-sync/constants.js"); Cu.import("resource://services-sync/engines.js"); Cu.import("resource://services-sync/engines/clients.js"); @@ -490,8 +489,7 @@ Sync11Service.prototype = { this.engineManager.register(ns[engineName]); } catch (ex) { - this._log.warn("Could not register engine " + name + ": " + - CommonUtils.exceptionStr(ex)); + this._log.warn("Could not register engine " + name, ex); } } @@ -688,8 +686,7 @@ Sync11Service.prototype = { } catch (ex) { // This means no keys are present, or there's a network error. - this._log.debug("Failed to fetch and verify keys: " - + Utils.exceptionStr(ex)); + this._log.debug("Failed to fetch and verify keys", ex); this.errorHandler.checkServerError(ex, "crypto/keys"); return false; } @@ -785,7 +782,7 @@ Sync11Service.prototype = { } } catch (ex) { // Must have failed on some network issue - this._log.debug("verifyLogin failed: " + Utils.exceptionStr(ex)); + this._log.debug("verifyLogin failed", ex); this.status.login = LOGIN_FAILED_NETWORK_ERROR; this.errorHandler.checkServerError(ex, "info/collections"); return false; @@ -858,8 +855,7 @@ Sync11Service.prototype = { try { cb.wait(); } catch (ex) { - this._log.debug("Password change failed: " + - CommonUtils.exceptionStr(ex)); + this._log.debug("Password change failed", ex); return false; } @@ -905,8 +901,7 @@ Sync11Service.prototype = { try { engine.removeClientData(); } catch(ex) { - this._log.warn("Deleting client data for " + engine.name + " failed:" - + Utils.exceptionStr(ex)); + this._log.warn(`Deleting client data for ${engine.name} failed`, ex); } } this._log.debug("Finished deleting client data."); @@ -1537,7 +1532,7 @@ Sync11Service.prototype = { try { response = res.delete(); } catch (ex) { - this._log.debug("Failed to wipe server: " + CommonUtils.exceptionStr(ex)); + this._log.debug("Failed to wipe server", ex); throw ex; } if (response.status != 200 && response.status != 404) { @@ -1554,8 +1549,7 @@ Sync11Service.prototype = { try { response = this.resource(url).delete(); } catch (ex) { - this._log.debug("Failed to wipe '" + name + "' collection: " + - Utils.exceptionStr(ex)); + this._log.debug("Failed to wipe '" + name + "' collection", ex); throw ex; } @@ -1701,8 +1695,7 @@ Sync11Service.prototype = { return this.getStorageRequest(url).get(function onComplete(error) { // Note: 'this' is the request. if (error) { - this._log.debug("Failed to retrieve '" + info_type + "': " + - Utils.exceptionStr(error)); + this._log.debug("Failed to retrieve '" + info_type + "'", error); return callback(error); } if (this.response.status != 200) { diff --git a/services/sync/modules/stages/enginesync.js b/services/sync/modules/stages/enginesync.js index d5351ff69962..f0ce2a4ae135 100644 --- a/services/sync/modules/stages/enginesync.js +++ b/services/sync/modules/stages/enginesync.js @@ -142,8 +142,7 @@ EngineSynchronizer.prototype = { try { this._updateEnabledEngines(); } catch (ex) { - this._log.debug("Updating enabled engines failed: " + - Utils.exceptionStr(ex)); + this._log.debug("Updating enabled engines failed", ex); this.service.errorHandler.checkServerError(ex, "meta/global"); this.onComplete(ex); return; diff --git a/services/sync/modules/util.js b/services/sync/modules/util.js index 7f1bf44c7e68..5c16e45efa8b 100644 --- a/services/sync/modules/util.js +++ b/services/sync/modules/util.js @@ -35,7 +35,6 @@ this.Utils = { // In the ideal world, references to these would be removed. nextTick: CommonUtils.nextTick, namedTimer: CommonUtils.namedTimer, - exceptionStr: CommonUtils.exceptionStr, stackTrace: CommonUtils.stackTrace, makeURI: CommonUtils.makeURI, encodeUTF8: CommonUtils.encodeUTF8, @@ -77,7 +76,7 @@ this.Utils = { return func.call(thisArg); } catch(ex) { - thisArg._log.debug("Exception: " + Utils.exceptionStr(ex)); + thisArg._log.debug("Exception", ex); if (exceptionCallback) { return exceptionCallback.call(thisArg, ex); } @@ -342,8 +341,7 @@ this.Utils = { // Ignore non-existent files. } catch (e) { if (that._log) { - that._log.debug("Failed to load json: " + - CommonUtils.exceptionStr(e)); + that._log.debug("Failed to load json", e); } } diff --git a/services/sync/tests/unit/head_http_server.js b/services/sync/tests/unit/head_http_server.js index 816889a1bc8f..d142cdfe0533 100644 --- a/services/sync/tests/unit/head_http_server.js +++ b/services/sync/tests/unit/head_http_server.js @@ -586,7 +586,7 @@ SyncServer.prototype = { } catch (ex) { _("=========================================="); _("Got exception starting Sync HTTP server."); - _("Error: " + Utils.exceptionStr(ex)); + _("Error: " + Log.exceptionStr(ex)); _("Is there a process already listening on port " + port + "?"); _("=========================================="); do_throw(ex); diff --git a/services/sync/tests/unit/test_addon_utils.js b/services/sync/tests/unit/test_addon_utils.js index beef78f7bb66..0931162c708a 100644 --- a/services/sync/tests/unit/test_addon_utils.js +++ b/services/sync/tests/unit/test_addon_utils.js @@ -3,6 +3,7 @@ "use strict"; +Cu.import("resource://gre/modules/Log.jsm"); Cu.import("resource://gre/modules/Preferences.jsm"); Cu.import("resource://services-sync/addonutils.js"); Cu.import("resource://services-sync/util.js"); @@ -35,7 +36,7 @@ function createAndStartHTTPServer(port=HTTP_PORT) { return server; } catch (ex) { _("Got exception starting HTTP server on port " + port); - _("Error: " + Utils.exceptionStr(ex)); + _("Error: " + Log.exceptionStr(ex)); do_throw(ex); } } diff --git a/services/sync/tests/unit/test_addons_store.js b/services/sync/tests/unit/test_addons_store.js index 10d5424c1af9..63a5a8ea164e 100644 --- a/services/sync/tests/unit/test_addons_store.js +++ b/services/sync/tests/unit/test_addons_store.js @@ -3,6 +3,7 @@ "use strict"; +Cu.import("resource://gre/modules/Log.jsm"); Cu.import("resource://gre/modules/Preferences.jsm"); Cu.import("resource://services-sync/addonutils.js"); Cu.import("resource://services-sync/engines/addons.js"); @@ -61,7 +62,7 @@ function createAndStartHTTPServer(port) { return server; } catch (ex) { _("Got exception starting HTTP server on port " + port); - _("Error: " + Utils.exceptionStr(ex)); + _("Error: " + Log.exceptionStr(ex)); do_throw(ex); } } diff --git a/services/sync/tests/unit/test_bookmark_engine.js b/services/sync/tests/unit/test_bookmark_engine.js index a27d1b2b63fb..f20b69667794 100644 --- a/services/sync/tests/unit/test_bookmark_engine.js +++ b/services/sync/tests/unit/test_bookmark_engine.js @@ -71,7 +71,7 @@ add_test(function test_ID_caching() { _("New mobile ID: " + newMobileID); } catch (ex) { err = ex; - _("Error: " + Utils.exceptionStr(err)); + _("Error: " + Log.exceptionStr(err)); } do_check_true(!err); @@ -220,7 +220,7 @@ add_task(function test_restorePromptsReupload() { engine.sync(); } catch(ex) { error = ex; - _("Got error: " + Utils.exceptionStr(ex)); + _("Got error: " + Log.exceptionStr(ex)); } do_check_true(!error); @@ -264,7 +264,7 @@ add_task(function test_restorePromptsReupload() { engine.sync(); } catch(ex) { error = ex; - _("Got error: " + Utils.exceptionStr(ex)); + _("Got error: " + Log.exceptionStr(ex)); } do_check_true(!error); diff --git a/services/sync/tests/unit/test_fxa_node_reassignment.js b/services/sync/tests/unit/test_fxa_node_reassignment.js index b48bb6e6a235..c019d61f6614 100644 --- a/services/sync/tests/unit/test_fxa_node_reassignment.js +++ b/services/sync/tests/unit/test_fxa_node_reassignment.js @@ -97,7 +97,7 @@ function getReassigned() { return false; } catch (ex) { do_throw("Got exception retrieving lastSyncReassigned: " + - Utils.exceptionStr(ex)); + Log.exceptionStr(ex)); } } diff --git a/services/sync/tests/unit/test_node_reassignment.js b/services/sync/tests/unit/test_node_reassignment.js index 7fe5ed7eda8d..351e1bfcda15 100644 --- a/services/sync/tests/unit/test_node_reassignment.js +++ b/services/sync/tests/unit/test_node_reassignment.js @@ -96,7 +96,7 @@ function getReassigned() { return false; } catch (ex) { do_throw("Got exception retrieving lastSyncReassigned: " + - Utils.exceptionStr(ex)); + Log.exceptionStr(ex)); } } diff --git a/services/sync/tests/unit/test_service_sync_locked.js b/services/sync/tests/unit/test_service_sync_locked.js index e2cbbfa92ea2..8d24a5133e26 100644 --- a/services/sync/tests/unit/test_service_sync_locked.js +++ b/services/sync/tests/unit/test_service_sync_locked.js @@ -11,8 +11,10 @@ function run_test() { function augmentLogger(old) { let d = old.debug; let i = old.info; - old.debug = function(m) { debug.push(m); d.call(old, m); } - old.info = function(m) { info.push(m); i.call(old, m); } + // For the purposes of this test we don't need to do full formatting + // of the 2nd param, as the ones we care about are always strings. + old.debug = function(m, p) { debug.push(p ? m + ": " + p : m); d.call(old, m, p); } + old.info = function(m, p) { info.push(p ? m + ": " + p : m); i.call(old, m, p); } return old; } @@ -28,9 +30,7 @@ function run_test() { Service.sync(); Service._locked = false; - do_check_eq(debug[debug.length - 2], - "Exception: Could not acquire lock. Label: \"service.js: login\". No traceback available"); - do_check_eq(info[info.length - 1], - "Cannot start sync: already syncing?"); + do_check_true(debug[debug.length - 2].startsWith("Exception: Could not acquire lock. Label: \"service.js: login\".")); + do_check_eq(info[info.length - 1], "Cannot start sync: already syncing?"); } diff --git a/services/sync/tests/unit/test_utils_catch.js b/services/sync/tests/unit/test_utils_catch.js index 302e20e2c311..5f50bf7e43c1 100644 --- a/services/sync/tests/unit/test_utils_catch.js +++ b/services/sync/tests/unit/test_utils_catch.js @@ -8,7 +8,7 @@ function run_test() { catch: Utils.catch, _log: { debug: function(str) { - didThrow = str.search(/^Exception: /) == 0; + didThrow = str.search(/^Exception/) == 0; }, info: function(str) { wasLocked = str.indexOf("Cannot start sync: already syncing?") == 0; diff --git a/services/sync/tps/extensions/tps/resource/tps.jsm b/services/sync/tps/extensions/tps/resource/tps.jsm index 2de1fd27b441..4644c51ccbe1 100644 --- a/services/sync/tps/extensions/tps/resource/tps.jsm +++ b/services/sync/tps/extensions/tps/resource/tps.jsm @@ -14,6 +14,7 @@ const {classes: Cc, interfaces: Ci, utils: Cu} = Components; var module = this; // Global modules +Cu.import("resource://gre/modules/Log.jsm"); Cu.import("resource://gre/modules/XPCOMUtils.jsm"); Cu.import("resource://gre/modules/Services.jsm"); Cu.import("resource://services-common/async.js"); @@ -138,7 +139,7 @@ var TPS = { this._errors++; let errInfo; if (exc) { - errInfo = Utils.exceptionStr(exc); // includes details and stack-trace. + errInfo = Log.exceptionStr(exc); // includes details and stack-trace. } else { // always write a stack even if no error passed. errInfo = Utils.stackTrace(new Error()); @@ -1051,4 +1052,4 @@ var Windows = { }; // Initialize TPS -TPS._init(); \ No newline at end of file +TPS._init(); From 7f57068e91630c21742cb11de1409b668e835465 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Mon, 28 Dec 2015 12:14:00 -0700 Subject: [PATCH 08/16] Bug 1227810 - split browser_ruleview_authored.js into three tests; r=pbrosset --- .../client/inspector/rules/test/browser.ini | 2 + .../rules/test/browser_rules_authored.js | 85 +------------------ .../test/browser_rules_authored_color.js | 59 +++++++++++++ .../test/browser_rules_authored_override.js | 54 ++++++++++++ 4 files changed, 117 insertions(+), 83 deletions(-) create mode 100644 devtools/client/inspector/rules/test/browser_rules_authored_color.js create mode 100644 devtools/client/inspector/rules/test/browser_rules_authored_override.js diff --git a/devtools/client/inspector/rules/test/browser.ini b/devtools/client/inspector/rules/test/browser.ini index 0a97b86a7009..7f9668e9a5e3 100644 --- a/devtools/client/inspector/rules/test/browser.ini +++ b/devtools/client/inspector/rules/test/browser.ini @@ -42,6 +42,8 @@ support-files = [browser_rules_add-rule_04.js] [browser_rules_add-rule_pseudo_class.js] [browser_rules_authored.js] +[browser_rules_authored_color.js] +[browser_rules_authored_override.js] [browser_rules_colorpicker-and-image-tooltip_01.js] [browser_rules_colorpicker-and-image-tooltip_02.js] [browser_rules_colorpicker-appears-on-swatch-click.js] diff --git a/devtools/client/inspector/rules/test/browser_rules_authored.js b/devtools/client/inspector/rules/test/browser_rules_authored.js index c661dda3909c..d3f769c8f12b 100644 --- a/devtools/client/inspector/rules/test/browser_rules_authored.js +++ b/devtools/client/inspector/rules/test/browser_rules_authored.js @@ -6,12 +6,6 @@ // Test for as-authored styles. -add_task(function*() { - yield basicTest(); - yield overrideTest(); - yield colorEditingTest(); -}); - function* createTestContent(style) { let content = ` +
Styled Node
`; + yield addTab("data:text/html;charset=utf-8," + encodeURIComponent(content)); + + let {inspector, view} = yield openRuleView(); + yield selectNode("#testid", inspector); + return view; +} + +add_task(function* () { + let colors = [ + {name: "hex", text: "#f0c", result: "#0f0"}, + {name: "rgb", text: "rgb(0,128,250)", result: "rgb(0, 255, 0)"}, + // Test case preservation. + {name: "hex", text: "#F0C", result: "#0F0"}, + ]; + + Services.prefs.setCharPref("devtools.defaultColorUnit", "authored"); + + for (let color of colors) { + let view = yield createTestContent("#testid {" + + " color: " + color.text + ";" + + "} "); + + let cPicker = view.tooltips.colorPicker; + let swatch = getRuleViewProperty(view, "#testid", "color").valueSpan + .querySelector(".ruleview-colorswatch"); + let onShown = cPicker.tooltip.once("shown"); + swatch.click(); + yield onShown; + + let testNode = yield getNode("#testid"); + + yield simulateColorPickerChange(view, cPicker, [0, 255, 0, 1], { + element: testNode, + name: "color", + value: "rgb(0, 255, 0)" + }); + + let spectrum = yield cPicker.spectrum; + let onHidden = cPicker.tooltip.once("hidden"); + EventUtils.sendKey("RETURN", spectrum.element.ownerDocument.defaultView); + yield onHidden; + + is(getRuleViewPropertyValue(view, "#testid", "color"), color.result, + "changing the color preserved the unit for " + color.name); + } +}); diff --git a/devtools/client/inspector/rules/test/browser_rules_authored_override.js b/devtools/client/inspector/rules/test/browser_rules_authored_override.js new file mode 100644 index 000000000000..fec49996476a --- /dev/null +++ b/devtools/client/inspector/rules/test/browser_rules_authored_override.js @@ -0,0 +1,54 @@ +/* vim: set ft=javascript ts=2 et sw=2 tw=80: */ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +// Test for as-authored styles. + +function* createTestContent(style) { + let content = ` +
Styled Node
`; + yield addTab("data:text/html;charset=utf-8," + encodeURIComponent(content)); + + let {inspector, view} = yield openRuleView(); + yield selectNode("#testid", inspector); + return view; +} + +add_task(function* () { + let gradientText1 = "(orange, blue);"; + let gradientText2 = "(pink, teal);"; + + let view = + yield createTestContent("#testid {" + + " background-image: linear-gradient" + + gradientText1 + + " background-image: -ms-linear-gradient" + + gradientText2 + + " background-image: linear-gradient" + + gradientText2 + + "} "); + + let elementStyle = view._elementStyle; + let rule = elementStyle.rules[1]; + + // Initially the last property should be active. + for (let i = 0; i < 3; ++i) { + let prop = rule.textProps[i]; + is(prop.name, "background-image", "check the property name"); + is(prop.overridden, i !== 2, "check overridden for " + i); + } + + rule.textProps[2].setEnabled(false); + yield rule._applyingModifications; + + // Now the first property should be active. + for (let i = 0; i < 3; ++i) { + let prop = rule.textProps[i]; + is(prop.overridden || !prop.enabled, i !== 0, + "post-change check overridden for " + i); + } +}); From 475b84dd56315abba6b750fb9825ab66fdd4763e Mon Sep 17 00:00:00 2001 From: James Long Date: Thu, 7 Jan 2016 11:53:56 -0500 Subject: [PATCH 09/16] Bug 1230345 - kill breakpoint sliding for most scenarios, only do it when we know we have scripts r=fitzgen --- .../mochitest/browser_dbg_source-maps-01.js | 14 +- devtools/server/actors/script.js | 308 +++++------------- devtools/server/actors/utils/TabSources.js | 4 +- .../server/tests/unit/test_breakpoint-01.js | 12 +- .../server/tests/unit/test_breakpoint-02.js | 11 +- .../server/tests/unit/test_breakpoint-03.js | 20 +- .../server/tests/unit/test_breakpoint-04.js | 17 +- .../server/tests/unit/test_breakpoint-05.js | 21 +- .../server/tests/unit/test_breakpoint-06.js | 31 +- .../server/tests/unit/test_breakpoint-07.js | 25 +- .../server/tests/unit/test_breakpoint-08.js | 28 +- .../server/tests/unit/test_breakpoint-09.js | 19 +- .../server/tests/unit/test_breakpoint-10.js | 13 +- .../server/tests/unit/test_breakpoint-11.js | 9 +- .../server/tests/unit/test_breakpoint-12.js | 17 +- .../server/tests/unit/test_breakpoint-13.js | 17 +- .../server/tests/unit/test_breakpoint-14.js | 17 +- ...on-column-with-no-offests-in-gcd-script.js | 57 ---- ...column-with-no-offsets-at-end-of-script.js | 55 ---- ...on-column-with-no-offsets-in-gcd-script.js | 57 ---- ...setBreakpoint-on-column-with-no-offsets.js | 59 ---- .../server/tests/unit/test_sourcemaps-03.js | 88 +++-- devtools/server/tests/unit/xpcshell.ini | 3 - 23 files changed, 270 insertions(+), 632 deletions(-) delete mode 100644 devtools/server/tests/unit/test_setBreakpoint-on-column-with-no-offests-in-gcd-script.js delete mode 100644 devtools/server/tests/unit/test_setBreakpoint-on-column-with-no-offsets-at-end-of-script.js delete mode 100644 devtools/server/tests/unit/test_setBreakpoint-on-column-with-no-offsets-in-gcd-script.js delete mode 100644 devtools/server/tests/unit/test_setBreakpoint-on-column-with-no-offsets.js diff --git a/devtools/client/debugger/test/mochitest/browser_dbg_source-maps-01.js b/devtools/client/debugger/test/mochitest/browser_dbg_source-maps-01.js index 5759cd203aeb..19c5f1c77348 100644 --- a/devtools/client/debugger/test/mochitest/browser_dbg_source-maps-01.js +++ b/devtools/client/debugger/test/mochitest/browser_dbg_source-maps-01.js @@ -79,15 +79,13 @@ function testSetBreakpointBlankLine() { let sourceForm = getSourceForm(gSources, COFFEE_URL); let source = gDebugger.gThreadClient.source(sourceForm); - source.setBreakpoint({ line: 7 }, aResponse => { + source.setBreakpoint({ line: 8 }, aResponse => { ok(!aResponse.error, - "Should be able to set a breakpoint in a coffee source file on a blank line."); - ok(aResponse.actualLocation, - "Because 7 is empty, we should have an actualLocation."); - is(aResponse.actualLocation.source.url, COFFEE_URL, - "actualLocation.actor should be source mapped to the coffee file."); - is(aResponse.actualLocation.line, 8, - "actualLocation.line should be source mapped back to 8."); + "Should be able to set a breakpoint in a coffee source file on a blank line."); + ok(!aResponse.isPending, + "Should not be a pending breakpoint."); + ok(!aResponse.actualLocation, + "Should not be a moved breakpoint."); deferred.resolve(); }); diff --git a/devtools/server/actors/script.js b/devtools/server/actors/script.js index 5040ff9ed205..fd3fcd3f68b9 100644 --- a/devtools/server/actors/script.js +++ b/devtools/server/actors/script.js @@ -2724,245 +2724,93 @@ SourceActor.prototype = { * @returns A Promise that resolves to the given BreakpointActor. */ _setBreakpoint: function (actor) { - let { originalLocation } = actor; - let { originalSourceActor, originalLine, originalColumn } = originalLocation; + const { originalLocation } = actor; + const { originalLine, originalSourceActor } = originalLocation; - return this._setBreakpointAtOriginalLocation(actor, originalLocation) - .then((actualLocation) => { - if (actualLocation) { - return actualLocation; - } - - // There were no scripts that matched the given location, so we need to - // perform breakpoint sliding. We try to slide the breakpoint by column - // first, and if that fails, by line instead. - if (!this.isSourceMapped) { - if (originalColumn !== undefined) { - // To perform breakpoint sliding for column breakpoints, we need to - // build a map from column numbers to a list of entry points for each - // column, implemented as a sparse array. An entry point is a (script, - // offsets) pair, and represents all offsets in that script that are - // entry points for the corresponding column. - let columnToEntryPointsMap = []; - - // Iterate over all scripts that correspond to this source actor and - // line number. - let scripts = this.scripts.getScriptsBySourceActor(this, originalLine); - for (let script of scripts) { - let columnToOffsetMap = script.getAllColumnOffsets() - .filter(({ lineNumber }) => { - return lineNumber === originalLine; - }) - - // Iterate over each column, and add their list of offsets to the - // map from column numbers to entry points by forming a (script, - // offsets) pair, where script is the current script, and offsets is - // the list of offsets for the current column. - for (let { columnNumber: column, offset } of columnToOffsetMap) { - let entryPoints = columnToEntryPointsMap[column]; - if (!entryPoints) { - // We dont have a list of entry points for the current column - // number yet, so create it and add it to the map. - entryPoints = []; - columnToEntryPointsMap[column] = entryPoints; - } - entryPoints.push({ script, offsets: [offset] }); - } - } - - // Now that we have a map from column numbers to a list of entry points - // for each column, we can use it to perform breakpoint sliding. Start - // at the original column of the breakpoint actor, and keep - // incrementing it by one, until either we find a line that has at - // least one entry point, or we go past the last column in the map. - // - // Note that by computing the entire map up front, and implementing it - // as a sparse array, we can easily tell when we went past the last - // column in the map. - let actualColumn = originalColumn + 1; - while (actualColumn < columnToEntryPointsMap.length) { - let entryPoints = columnToEntryPointsMap[actualColumn]; - if (entryPoints) { - setBreakpointAtEntryPoints(actor, entryPoints); - return new OriginalLocation( - originalSourceActor, - originalLine, - actualColumn - ); - } - ++actualColumn; - } - - return originalLocation; - } else { - // To perform breakpoint sliding for line breakpoints, we need to - // build a map from line numbers to a list of entry points for each - // line, implemented as a sparse array. An entry point is a (script, - // offsets) pair, and represents all offsets in that script that are - // entry points for the corresponding line. - let lineToEntryPointsMap = []; - - // Iterate over all scripts that correspond to this source actor. - let scripts = this.scripts.getScriptsBySourceActor(this); - for (let script of scripts) { - // Get all offsets for each line in the current script. This returns - // a map from line numbers fo a list of offsets for each line, - // implemented as a sparse array. - let lineToOffsetsMap = script.getAllOffsets(); - - // Iterate over each line, and add their list of offsets to the map - // from line numbers to entry points by forming a (script, offsets) - // pair, where script is the current script, and offsets is the list - // of offsets for the current line. - for (let line = 0; line < lineToOffsetsMap.length; ++line) { - let offsets = lineToOffsetsMap[line]; - if (offsets) { - let entryPoints = lineToEntryPointsMap[line]; - if (!entryPoints) { - // We dont have a list of entry points for the current line - // number yet, so create it and add it to the map. - entryPoints = []; - lineToEntryPointsMap[line] = entryPoints; - } - entryPoints.push({ script, offsets }); - } - } - } - - // Now that we have a map from line numbers to a list of entry points - // for each line, we can use it to perform breakpoint sliding. Start - // at the original line of the breakpoint actor, and keep incrementing - // it by one, until either we find a line that has at least one entry - // point, or we go past the last line in the map. - // - // Note that by computing the entire map up front, and implementing it - // as a sparse array, we can easily tell when we went past the last - // line in the map. - let actualLine = originalLine + 1; - while (actualLine < lineToEntryPointsMap.length) { - let entryPoints = lineToEntryPointsMap[actualLine]; - if (entryPoints) { - setBreakpointAtEntryPoints(actor, entryPoints); - break; - } - ++actualLine; - } - if (actualLine >= lineToEntryPointsMap.length) { - // We went past the last line in the map, so breakpoint sliding - // failed. Keep the BreakpointActor in the BreakpointActorMap as a - // pending breakpoint, so we can try again whenever a new script is - // introduced. - return originalLocation; - } - - return new OriginalLocation( - originalSourceActor, - actualLine - ); - } - } else { - let slideByColumn = (actualColumn) => { - return this.sources.getAllGeneratedLocations(new OriginalLocation( - this, - originalLine, - actualColumn - )).then((generatedLocations) => { - // Because getAllGeneratedLocations will always return the list of - // generated locations for the closest column that is greater than - // the one we are searching for if no exact match can be found, if - // the list of generated locations is empty, we've reached the end - // of the original line, and sliding continues by line. - if (generatedLocations.length === 0) { - return slideByLine(originalLine + 1); - } - - // If at least one script has an offset that matches one of the - // generated locations in the list, then breakpoint sliding - // succeeded. - if (this._setBreakpointAtAllGeneratedLocations(actor, generatedLocations)) { - return this.threadActor.sources.getOriginalLocation(generatedLocations[0]); - } - - // Try the next column in the original source. - return slideByColumn(actualColumn + 1); - }); - }; - - let slideByLine = (actualLine) => { - return this.sources.getAllGeneratedLocations(new OriginalLocation( - this, - actualLine - )).then((generatedLocations) => { - // Because getAllGeneratedLocations will always return the list of - // generated locations for the closest line that is greater than - // the one we are searching for if no exact match can be found, if - // the list of generated locations is empty, we've reached the end - // of the original source, and breakpoint sliding failed. - if (generatedLocations.length === 0) { - return originalLocation; - } - - // If at least one script has an offset that matches one of the - // generated locations in the list, then breakpoint sliding - // succeeded. - if (this._setBreakpointAtAllGeneratedLocations(actor, generatedLocations)) { - return this.threadActor.sources.getOriginalLocation(generatedLocations[0]); - } - - // Try the next line in the original source. - return slideByLine(actualLine + 1); - }); - }; - - if (originalColumn !== undefined) { - return slideByColumn(originalColumn + 1); - } else { - return slideByLine(originalLine + 1); - } - } - }).then((actualLocation) => { - // If the actual location on which the BreakpointActor ended up being - // set differs from the original line that was requested, both the - // BreakpointActor and the BreakpointActorMap need to be updated - // accordingly. - if (!actualLocation.equals(originalLocation)) { - let existingActor = this.breakpointActorMap.getActor(actualLocation); - if (existingActor) { - actor.onDelete(); - this.breakpointActorMap.deleteActor(originalLocation); - actor = existingActor; - } else { - this.breakpointActorMap.deleteActor(originalLocation); - actor.originalLocation = actualLocation; - this.breakpointActorMap.setActor(actualLocation, actor); - } - } - - return actor; - }); - }, - - _setBreakpointAtOriginalLocation: function (actor, originalLocation) { if (!this.isSourceMapped) { if (!this._setBreakpointAtGeneratedLocation( actor, GeneratedLocation.fromOriginalLocation(originalLocation) )) { - return promise.resolve(null); - } + const scripts = this.scripts.getScriptsBySourceActorAndLine( + this, + originalLine + ); - return promise.resolve(originalLocation); - } else { - return this.sources.getAllGeneratedLocations(originalLocation) - .then((generatedLocations) => { - if (!this._setBreakpointAtAllGeneratedLocations( - actor, - generatedLocations - )) { - return null; + // Never do breakpoint sliding for column breakpoints. + // Additionally, never do breakpoint sliding if no scripts + // exist on this line. + // + // Sliding can go horribly wrong if we always try to find the + // next line with valid entry points in the entire file. + // Scripts may be completely GCed and we never knew they + // existed, so we end up sliding through whole functions to + // the user's bewilderment. + // + // We can slide reliably if any scripts exist, however, due + // to how scripts are kept alive. A parent Debugger.Script + // keeps all of its children alive, so as long as we have a + // valid script, we can slide through it and know we won't + // slide through any of its child scripts. Additionally, if a + // script gets GCed, that means that all parents scripts are + // GCed as well, and no scripts will exist on those lines + // anymore. We will never slide through a GCed script. + if (originalLocation.originalColumn || scripts.length === 0) { + return promise.resolve(actor); } - return this.threadActor.sources.getOriginalLocation(generatedLocations[0]); + // Find the script that spans the largest amount of code to + // determine the bounds for sliding. + const largestScript = scripts.reduce((largestScript, script) => { + if (script.lineCount > largestScript.lineCount) { + return script; + } + return largestScript; + }); + const maxLine = largestScript.startLine + largestScript.lineCount - 1; + + let actualLine = originalLine; + for (; actualLine <= maxLine; actualLine++) { + const loc = new GeneratedLocation(this, actualLine); + if (this._setBreakpointAtGeneratedLocation(actor, loc)) { + break; + } + } + + // The above loop should never complete. We only did breakpoint sliding + // because we found scripts on the line we started from, + // which means there must be valid entry points somewhere + // within those scripts. + assert( + actualLine <= maxLine, + "Could not find any entry points to set a breakpoint on, " + + "even though I was told a script existed on the line I started " + + "the search with." + ); + + // Update the actor to use the new location (reusing a + // previous breakpoint if it already exists on that line). + const actualLocation = new OriginalLocation(originalSourceActor, actualLine); + const existingActor = this.breakpointActorMap.getActor(actualLocation); + this.breakpointActorMap.deleteActor(originalLocation); + if (existingActor) { + actor.onDelete(); + actor = existingActor; + } else { + actor.originalLocation = actualLocation; + this.breakpointActorMap.setActor(actualLocation, actor); + } + } + + return promise.resolve(actor); + } else { + return this.sources.getAllGeneratedLocations(originalLocation).then((generatedLocations) => { + this._setBreakpointAtAllGeneratedLocations( + actor, + generatedLocations + ); + + return actor; }); } }, diff --git a/devtools/server/actors/utils/TabSources.js b/devtools/server/actors/utils/TabSources.js index 3a56b55a332f..4020d715aa4f 100644 --- a/devtools/server/actors/utils/TabSources.js +++ b/devtools/server/actors/utils/TabSources.js @@ -632,8 +632,8 @@ TabSources.prototype = { originalColumn } = originalLocation; - let source = originalSourceActor.source || - originalSourceActor.generatedSource; + let source = (originalSourceActor.source || + originalSourceActor.generatedSource); return this.fetchSourceMap(source).then((map) => { if (map) { diff --git a/devtools/server/tests/unit/test_breakpoint-01.js b/devtools/server/tests/unit/test_breakpoint-01.js index 56986436edca..e75cbdd7ea8a 100644 --- a/devtools/server/tests/unit/test_breakpoint-01.js +++ b/devtools/server/tests/unit/test_breakpoint-01.js @@ -65,9 +65,11 @@ function test_simple_breakpoint() }); }); - Components.utils.evalInSandbox("var line0 = Error().lineNumber;\n" + - "debugger;\n" + // line0 + 1 - "var a = 1;\n" + // line0 + 2 - "var b = 2;\n", // line0 + 3 - gDebuggee); + Cu.evalInSandbox( + "var line0 = Error().lineNumber;\n" + + "debugger;\n" + // line0 + 1 + "var a = 1;\n" + // line0 + 2 + "var b = 2;\n", // line0 + 3 + gDebuggee + ); } diff --git a/devtools/server/tests/unit/test_breakpoint-02.js b/devtools/server/tests/unit/test_breakpoint-02.js index 211e6fa5221a..0bc6a2f40d36 100644 --- a/devtools/server/tests/unit/test_breakpoint-02.js +++ b/devtools/server/tests/unit/test_breakpoint-02.js @@ -57,8 +57,11 @@ function test_breakpoint_running() }); }); - gDebuggee.eval("var line0 = Error().lineNumber;\n" + - "debugger;\n" + - "var a = 1;\n" + // line0 + 2 - "var b = 2;\n"); // line0 + 3 + Cu.evalInSandbox( + "var line0 = Error().lineNumber;\n" + + "debugger;\n" + + "var a = 1;\n" + // line0 + 2 + "var b = 2;\n", // line0 + 3 + gDebuggee + ); } diff --git a/devtools/server/tests/unit/test_breakpoint-03.js b/devtools/server/tests/unit/test_breakpoint-03.js index 1bccac0518e9..5db5d4994603 100644 --- a/devtools/server/tests/unit/test_breakpoint-03.js +++ b/devtools/server/tests/unit/test_breakpoint-03.js @@ -2,7 +2,9 @@ http://creativecommons.org/publicdomain/zero/1.0/ */ /** - * Check that setting a breakpoint in a line without code will skip forward. + * Check that setting a breakpoint on a line without code will skip + * forward when we know the script isn't GCed (the debugger is connected, + * so it's kept alive). */ var gDebuggee; @@ -65,14 +67,18 @@ function test_skip_breakpoint() }); }); - // Continue until the breakpoint is hit. gThreadClient.resume(); }); }); - gDebuggee.eval("var line0 = Error().lineNumber;\n" + - "debugger;\n" + // line0 + 1 - "var a = 1;\n" + // line0 + 2 - "// A comment.\n" + // line0 + 3 - "var b = 2;"); // line0 + 4 + // Use `evalInSandbox` to make the debugger treat it as normal + // globally-scoped code, where breakpoint sliding rules apply. + Cu.evalInSandbox( + "var line0 = Error().lineNumber;\n" + + "debugger;\n" + // line0 + 1 + "var a = 1;\n" + // line0 + 2 + "// A comment.\n" + // line0 + 3 + "var b = 2;", // line0 + 4 + gDebuggee + ); } diff --git a/devtools/server/tests/unit/test_breakpoint-04.js b/devtools/server/tests/unit/test_breakpoint-04.js index 4f53f707ef49..ee3366c2e217 100644 --- a/devtools/server/tests/unit/test_breakpoint-04.js +++ b/devtools/server/tests/unit/test_breakpoint-04.js @@ -67,11 +67,14 @@ function test_child_breakpoint() }); - gDebuggee.eval("var line0 = Error().lineNumber;\n" + - "function foo() {\n" + // line0 + 1 - " this.a = 1;\n" + // line0 + 2 - " this.b = 2;\n" + // line0 + 3 - "}\n" + // line0 + 4 - "debugger;\n" + // line0 + 5 - "foo();\n"); // line0 + 6 + Cu.evalInSandbox( + "var line0 = Error().lineNumber;\n" + + "function foo() {\n" + // line0 + 1 + " this.a = 1;\n" + // line0 + 2 + " this.b = 2;\n" + // line0 + 3 + "}\n" + // line0 + 4 + "debugger;\n" + // line0 + 5 + "foo();\n", // line0 + 6 + gDebuggee + ); } diff --git a/devtools/server/tests/unit/test_breakpoint-05.js b/devtools/server/tests/unit/test_breakpoint-05.js index 555b28990531..cf5e630e20f9 100644 --- a/devtools/server/tests/unit/test_breakpoint-05.js +++ b/devtools/server/tests/unit/test_breakpoint-05.js @@ -2,7 +2,7 @@ http://creativecommons.org/publicdomain/zero/1.0/ */ /** - * Check that setting a breakpoint in a line without code in a child scrip + * Check that setting a breakpoint in a line without code in a child script * will skip forward. */ @@ -68,12 +68,15 @@ function test_child_skip_breakpoint() }); }); - gDebuggee.eval("var line0 = Error().lineNumber;\n" + - "function foo() {\n" + // line0 + 1 - " this.a = 1;\n" + // line0 + 2 - " // A comment.\n" + // line0 + 3 - " this.b = 2;\n" + // line0 + 4 - "}\n" + // line0 + 5 - "debugger;\n" + // line0 + 6 - "foo();\n"); // line0 + 7 + Cu.evalInSandbox( + "var line0 = Error().lineNumber;\n" + + "function foo() {\n" + // line0 + 1 + " this.a = 1;\n" + // line0 + 2 + " // A comment.\n" + // line0 + 3 + " this.b = 2;\n" + // line0 + 4 + "}\n" + // line0 + 5 + "debugger;\n" + // line0 + 6 + "foo();\n", // line0 + 7 + gDebuggee + ); } diff --git a/devtools/server/tests/unit/test_breakpoint-06.js b/devtools/server/tests/unit/test_breakpoint-06.js index 8b3b3f6207fe..c39675d719a4 100644 --- a/devtools/server/tests/unit/test_breakpoint-06.js +++ b/devtools/server/tests/unit/test_breakpoint-06.js @@ -69,18 +69,21 @@ function test_nested_breakpoint() }); - gDebuggee.eval("var line0 = Error().lineNumber;\n" + - "function foo() {\n" + // line0 + 1 - " function bar() {\n" + // line0 + 2 - " function baz() {\n" + // line0 + 3 - " this.a = 1;\n" + // line0 + 4 - " // A comment.\n" + // line0 + 5 - " this.b = 2;\n" + // line0 + 6 - " }\n" + // line0 + 7 - " baz();\n" + // line0 + 8 - " }\n" + // line0 + 9 - " bar();\n" + // line0 + 10 - "}\n" + // line0 + 11 - "debugger;\n" + // line0 + 12 - "foo();\n"); // line0 + 13 + Cu.evalInSandbox( + "var line0 = Error().lineNumber;\n" + + "function foo() {\n" + // line0 + 1 + " function bar() {\n" + // line0 + 2 + " function baz() {\n" + // line0 + 3 + " this.a = 1;\n" + // line0 + 4 + " // A comment.\n" + // line0 + 5 + " this.b = 2;\n" + // line0 + 6 + " }\n" + // line0 + 7 + " baz();\n" + // line0 + 8 + " }\n" + // line0 + 9 + " bar();\n" + // line0 + 10 + "}\n" + // line0 + 11 + "debugger;\n" + // line0 + 12 + "foo();\n", // line0 + 13 + gDebuggee + ) } diff --git a/devtools/server/tests/unit/test_breakpoint-07.js b/devtools/server/tests/unit/test_breakpoint-07.js index c86d5a03259d..12766ac0659a 100644 --- a/devtools/server/tests/unit/test_breakpoint-07.js +++ b/devtools/server/tests/unit/test_breakpoint-07.js @@ -68,15 +68,18 @@ function test_second_child_skip_breakpoint() }); }); - gDebuggee.eval("var line0 = Error().lineNumber;\n" + - "function foo() {\n" + // line0 + 1 - " bar();\n" + // line0 + 2 - "}\n" + // line0 + 3 - "function bar() {\n" + // line0 + 4 - " this.a = 1;\n" + // line0 + 5 - " // A comment.\n" + // line0 + 6 - " this.b = 2;\n" + // line0 + 7 - "}\n" + // line0 + 8 - "debugger;\n" + // line0 + 9 - "foo();\n"); // line0 + 10 + Cu.evalInSandbox( + "var line0 = Error().lineNumber;\n" + + "function foo() {\n" + // line0 + 1 + " bar();\n" + // line0 + 2 + "}\n" + // line0 + 3 + "function bar() {\n" + // line0 + 4 + " this.a = 1;\n" + // line0 + 5 + " // A comment.\n" + // line0 + 6 + " this.b = 2;\n" + // line0 + 7 + "}\n" + // line0 + 8 + "debugger;\n" + // line0 + 9 + "foo();\n", // line0 + 10 + gDebuggee + ) } diff --git a/devtools/server/tests/unit/test_breakpoint-08.js b/devtools/server/tests/unit/test_breakpoint-08.js index d1759be2df43..a1bca9c0c26b 100644 --- a/devtools/server/tests/unit/test_breakpoint-08.js +++ b/devtools/server/tests/unit/test_breakpoint-08.js @@ -48,8 +48,7 @@ function test_child_skip_breakpoint() let location = { line: gDebuggee.line0 + 3 }; source.setBreakpoint(location, function (aResponse, bpClient) { - // Check that the breakpoint has properly skipped forward one - // line. + // Check that the breakpoint has properly skipped forward one line. do_check_eq(aResponse.actualLocation.source.actor, source.actor); do_check_eq(aResponse.actualLocation.line, location.line + 1); @@ -78,13 +77,20 @@ function test_child_skip_breakpoint() } }); - gDebuggee.eval("var line0 = Error().lineNumber;\n" + - "function foo() {\n" + // line0 + 1 - " this.a = 1;\n" + // line0 + 2 - " // A comment.\n" + // line0 + 3 - " this.b = 2;\n" + // line0 + 3 - "}\n"); // line0 + 4 - gDebuggee.eval("var line1 = Error().lineNumber;\n" + - "debugger;\n" + // line1 + 1 - "foo();\n"); // line1 + 2 + Cu.evalInSandbox("var line0 = Error().lineNumber;\n" + + "function foo() {\n" + // line0 + 1 + " this.a = 1;\n" + // line0 + 2 + " // A comment.\n" + // line0 + 3 + " this.b = 2;\n" + // line0 + 4 + "}\n", // line0 + 5 + gDebuggee, + "1.7", + "script1.js"); + + Cu.evalInSandbox("var line1 = Error().lineNumber;\n" + + "debugger;\n" + // line1 + 1 + "foo();\n", // line1 + 2 + gDebuggee, + "1.7", + "script2.js"); } diff --git a/devtools/server/tests/unit/test_breakpoint-09.js b/devtools/server/tests/unit/test_breakpoint-09.js index c47347358d51..5735af904e70 100644 --- a/devtools/server/tests/unit/test_breakpoint-09.js +++ b/devtools/server/tests/unit/test_breakpoint-09.js @@ -71,15 +71,16 @@ function test_remove_breakpoint() }); - gDebuggee.eval("var line0 = Error().lineNumber;\n" + - "function foo(stop) {\n" + // line0 + 1 - " this.a = 1;\n" + // line0 + 2 - " if (stop) return;\n" + // line0 + 3 - " delete this.a;\n" + // line0 + 4 - " foo(true);\n" + // line0 + 5 - "}\n" + // line0 + 6 - "debugger;\n" + // line1 + 7 - "foo();\n"); // line1 + 8 + Cu.evalInSandbox("var line0 = Error().lineNumber;\n" + + "function foo(stop) {\n" + // line0 + 1 + " this.a = 1;\n" + // line0 + 2 + " if (stop) return;\n" + // line0 + 3 + " delete this.a;\n" + // line0 + 4 + " foo(true);\n" + // line0 + 5 + "}\n" + // line0 + 6 + "debugger;\n" + // line1 + 7 + "foo();\n", // line1 + 8 + gDebuggee); if (!done) { do_check_true(false); } diff --git a/devtools/server/tests/unit/test_breakpoint-10.js b/devtools/server/tests/unit/test_breakpoint-10.js index 75d1ab6fce95..2de01c60992b 100644 --- a/devtools/server/tests/unit/test_breakpoint-10.js +++ b/devtools/server/tests/unit/test_breakpoint-10.js @@ -79,10 +79,11 @@ function test_child_breakpoint() }); - gDebuggee.eval("var line0 = Error().lineNumber;\n" + - "debugger;\n" + // line0 + 1 - "var a, i = 0;\n" + // line0 + 2 - "for (i = 1; i <= 2; i++) {\n" + // line0 + 3 - " a = i;\n" + // line0 + 4 - "}\n"); // line0 + 5 + Cu.evalInSandbox("var line0 = Error().lineNumber;\n" + + "debugger;\n" + // line0 + 1 + "var a, i = 0;\n" + // line0 + 2 + "for (i = 1; i <= 2; i++) {\n" + // line0 + 3 + " a = i;\n" + // line0 + 4 + "}\n", // line0 + 5 + gDebuggee); } diff --git a/devtools/server/tests/unit/test_breakpoint-11.js b/devtools/server/tests/unit/test_breakpoint-11.js index f53d948d79a1..ef8eb8c4be86 100644 --- a/devtools/server/tests/unit/test_breakpoint-11.js +++ b/devtools/server/tests/unit/test_breakpoint-11.js @@ -80,8 +80,9 @@ function test_child_breakpoint() }); - gDebuggee.eval("var line0 = Error().lineNumber;\n" + - "debugger;\n" + // line0 + 1 - "var a = { b: 1, f: function() { return 2; } };\n" + // line0+2 - "var res = a.f();\n"); // line0 + 3 + Cu.evalInSandbox("var line0 = Error().lineNumber;\n" + + "debugger;\n" + // line0 + 1 + "var a = { b: 1, f: function() { return 2; } };\n" + // line0+2 + "var res = a.f();\n", // line0 + 3 + gDebuggee); } diff --git a/devtools/server/tests/unit/test_breakpoint-12.js b/devtools/server/tests/unit/test_breakpoint-12.js index d0488dc96970..a184e5aeb6ab 100644 --- a/devtools/server/tests/unit/test_breakpoint-12.js +++ b/devtools/server/tests/unit/test_breakpoint-12.js @@ -55,14 +55,15 @@ function test_child_skip_breakpoint() }); - gDebuggee.eval("var line0 = Error().lineNumber;\n" + - "function foo() {\n" + // line0 + 1 - " this.a = 1;\n" + // line0 + 2 - " // A comment.\n" + // line0 + 3 - " this.b = 2;\n" + // line0 + 4 - "}\n" + // line0 + 5 - "debugger;\n" + // line0 + 6 - "foo();\n"); // line0 + 7 + Cu.evalInSandbox("var line0 = Error().lineNumber;\n" + + "function foo() {\n" + // line0 + 1 + " this.a = 1;\n" + // line0 + 2 + " // A comment.\n" + // line0 + 3 + " this.b = 2;\n" + // line0 + 4 + "}\n" + // line0 + 5 + "debugger;\n" + // line0 + 6 + "foo();\n", // line0 + 7 + gDebuggee); } // Set many breakpoints at the same location. diff --git a/devtools/server/tests/unit/test_breakpoint-13.js b/devtools/server/tests/unit/test_breakpoint-13.js index 53b36f939e2b..307b058a4119 100644 --- a/devtools/server/tests/unit/test_breakpoint-13.js +++ b/devtools/server/tests/unit/test_breakpoint-13.js @@ -104,12 +104,13 @@ function test_simple_breakpoint() }); }); - gDebuggee.eval("var line0 = Error().lineNumber;\n" + - "function foo() {\n" + // line0 + 1 - " this.a = 1;\n" + // line0 + 2 <-- Breakpoint is set here. - "}\n" + // line0 + 3 - "debugger;\n" + // line0 + 4 - "foo();\n" + // line0 + 5 - "debugger;\n" + // line0 + 6 - "var b = 2;\n"); // line0 + 7 + Cu.evalInSandbox("var line0 = Error().lineNumber;\n" + + "function foo() {\n" + // line0 + 1 + " this.a = 1;\n" + // line0 + 2 <-- Breakpoint is set here. + "}\n" + // line0 + 3 + "debugger;\n" + // line0 + 4 + "foo();\n" + // line0 + 5 + "debugger;\n" + // line0 + 6 + "var b = 2;\n", // line0 + 7 + gDebuggee); } diff --git a/devtools/server/tests/unit/test_breakpoint-14.js b/devtools/server/tests/unit/test_breakpoint-14.js index 004b89d23e94..163b357bb371 100644 --- a/devtools/server/tests/unit/test_breakpoint-14.js +++ b/devtools/server/tests/unit/test_breakpoint-14.js @@ -102,12 +102,13 @@ function test_simple_breakpoint() }); }); - gDebuggee.eval("var line0 = Error().lineNumber;\n" + - "function foo() {\n" + // line0 + 1 - " this.a = 1;\n" + // line0 + 2 <-- Breakpoint is set here. - "}\n" + // line0 + 3 - "debugger;\n" + // line0 + 4 - "foo();\n" + // line0 + 5 - "debugger;\n" + // line0 + 6 - "var b = 2;\n"); // line0 + 7 + Cu.evalInSandbox("var line0 = Error().lineNumber;\n" + + "function foo() {\n" + // line0 + 1 + " this.a = 1;\n" + // line0 + 2 <-- Breakpoint is set here. + "}\n" + // line0 + 3 + "debugger;\n" + // line0 + 4 + "foo();\n" + // line0 + 5 + "debugger;\n" + // line0 + 6 + "var b = 2;\n", // line0 + 7 + gDebuggee); } diff --git a/devtools/server/tests/unit/test_setBreakpoint-on-column-with-no-offests-in-gcd-script.js b/devtools/server/tests/unit/test_setBreakpoint-on-column-with-no-offests-in-gcd-script.js deleted file mode 100644 index 8877d2e4bb3e..000000000000 --- a/devtools/server/tests/unit/test_setBreakpoint-on-column-with-no-offests-in-gcd-script.js +++ /dev/null @@ -1,57 +0,0 @@ -"use strict"; - -var SOURCE_URL = getFileUrl("setBreakpoint-on-column-with-no-offsets-in-gcd-script.js"); - -function run_test() { - return Task.spawn(function* () { - do_test_pending(); - - let global = testGlobal("test"); - loadSubScript(SOURCE_URL, global); - Cu.forceGC(); - - DebuggerServer.registerModule("xpcshell-test/testactors"); - DebuggerServer.init(() => true); - DebuggerServer.addTestGlobal(global); - let client = new DebuggerClient(DebuggerServer.connectPipe()); - yield connect(client); - - let tab = yield findTab(client, "test"); - let [, tabClient] = yield attachTab(client, tab); - let [, threadClient] = yield attachThread(tabClient); - yield resume(threadClient); - - let source = yield findSource(threadClient, SOURCE_URL); - let sourceClient = threadClient.source(source); - - let location = { line: 6, column: 17 }; - let [packet, breakpointClient] = yield setBreakpoint(sourceClient, location); - do_check_true(packet.isPending); - do_check_false("actualLocation" in packet); - - executeSoon(function () { - reload(tabClient).then(function () { - loadSubScript(SOURCE_URL, global); - }); - }); - packet = yield waitForPaused(threadClient); - do_check_eq(packet.type, "paused"); - let why = packet.why; - do_check_eq(why.type, "breakpoint"); - do_check_eq(why.actors.length, 1); - do_check_eq(why.actors[0], breakpointClient.actor); - let frame = packet.frame; - let where = frame.where; - do_check_eq(where.source.actor, source.actor); - do_check_eq(where.line, location.line); - do_check_eq(where.column, location.column + 7); - let variables = frame.environment.bindings.variables; - do_check_eq(variables.a.value, 1); - do_check_eq(variables.b.value.type, "undefined"); - do_check_eq(variables.c.value.type, "undefined"); - yield resume(threadClient); - - yield close(client); - do_test_finished(); - }); -} diff --git a/devtools/server/tests/unit/test_setBreakpoint-on-column-with-no-offsets-at-end-of-script.js b/devtools/server/tests/unit/test_setBreakpoint-on-column-with-no-offsets-at-end-of-script.js deleted file mode 100644 index 6d47cf755a2b..000000000000 --- a/devtools/server/tests/unit/test_setBreakpoint-on-column-with-no-offsets-at-end-of-script.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict"; - -var SOURCE_URL = getFileUrl("setBreakpoint-on-column-with-no-offsets-at-end-of-script.js"); - -function run_test() { - return Task.spawn(function* () { - do_test_pending(); - - DebuggerServer.registerModule("xpcshell-test/testactors"); - DebuggerServer.init(() => true); - - let global = createTestGlobal("test"); - DebuggerServer.addTestGlobal(global); - - let client = new DebuggerClient(DebuggerServer.connectPipe()); - yield connect(client); - - let { tabs } = yield listTabs(client); - let tab = findTab(tabs, "test"); - let [, tabClient] = yield attachTab(client, tab); - let [, threadClient] = yield attachThread(tabClient); - yield resume(threadClient); - - let promise = waitForNewSource(threadClient, SOURCE_URL); - loadSubScript(SOURCE_URL, global); - let { source } = yield promise; - let sourceClient = threadClient.source(source); - - let location = { line: 4, column: 38 }; - let [packet, breakpointClient] = yield setBreakpoint(sourceClient, location); - do_check_false(packet.isPending); - do_check_true("actualLocation" in packet); - let actualLocation = packet.actualLocation; - do_check_eq(actualLocation.line, 4); - do_check_eq(actualLocation.column, 41); - - packet = yield executeOnNextTickAndWaitForPause(function () { - Cu.evalInSandbox("f()", global); - }, client); - do_check_eq(packet.type, "paused"); - let why = packet.why; - do_check_eq(why.type, "breakpoint"); - do_check_eq(why.actors.length, 1); - do_check_eq(why.actors[0], breakpointClient.actor); - let where = packet.frame.where; - do_check_eq(where.source.actor, source.actor); - do_check_eq(where.line, actualLocation.line); - do_check_eq(where.column, actualLocation.column); - - yield resume(threadClient); - yield close(client); - - do_test_finished(); - }); -} diff --git a/devtools/server/tests/unit/test_setBreakpoint-on-column-with-no-offsets-in-gcd-script.js b/devtools/server/tests/unit/test_setBreakpoint-on-column-with-no-offsets-in-gcd-script.js deleted file mode 100644 index 004f86c32a21..000000000000 --- a/devtools/server/tests/unit/test_setBreakpoint-on-column-with-no-offsets-in-gcd-script.js +++ /dev/null @@ -1,57 +0,0 @@ -"use strict"; - -var SOURCE_URL = getFileUrl("setBreakpoint-on-column-with-no-offsets-in-gcd-script.js"); - -function run_test() { - return Task.spawn(function* () { - do_test_pending(); - - let global = testGlobal("test"); - loadSubScript(SOURCE_URL, global); - Cu.forceGC(); Cu.forceGC(); Cu.forceGC(); - - DebuggerServer.registerModule("xpcshell-test/testactors"); - DebuggerServer.init(() => true); - DebuggerServer.addTestGlobal(global); - let client = new DebuggerClient(DebuggerServer.connectPipe()); - yield connect(client); - - let { tabs } = yield listTabs(client); - let tab = findTab(tabs, "test"); - let [, tabClient] = yield attachTab(client, tab); - let [, threadClient] = yield attachThread(tabClient); - yield resume(threadClient); - - let { sources } = yield getSources(threadClient); - let source = findSource(sources, SOURCE_URL); - let sourceClient = threadClient.source(source); - - let location = { line: 6, column: 17 }; - let [packet, breakpointClient] = yield setBreakpoint(sourceClient, location); - do_check_true(packet.isPending); - do_check_false("actualLocation" in packet); - - packet = yield executeOnNextTickAndWaitForPause(function () { - reload(tabClient).then(function () { - loadSubScript(SOURCE_URL, global); - }); - }, client); - do_check_eq(packet.type, "paused"); - let why = packet.why; - do_check_eq(why.type, "breakpoint"); - do_check_eq(why.actors.length, 1); - do_check_eq(why.actors[0], breakpointClient.actor); - let frame = packet.frame; - let where = frame.where; - do_check_eq(where.source.actor, source.actor); - do_check_eq(where.line, location.line); - do_check_eq(where.column, 28); - let variables = frame.environment.bindings.variables; - do_check_eq(variables.a.value, 1); - do_check_eq(variables.c.value.type, "undefined"); - yield resume(threadClient); - - yield close(client); - do_test_finished(); - }); -} diff --git a/devtools/server/tests/unit/test_setBreakpoint-on-column-with-no-offsets.js b/devtools/server/tests/unit/test_setBreakpoint-on-column-with-no-offsets.js deleted file mode 100644 index fbd99ead5f08..000000000000 --- a/devtools/server/tests/unit/test_setBreakpoint-on-column-with-no-offsets.js +++ /dev/null @@ -1,59 +0,0 @@ -"use strict"; - -var SOURCE_URL = getFileUrl("setBreakpoint-on-column-with-no-offsets.js"); - -function run_test() { - return Task.spawn(function* () { - do_test_pending(); - - DebuggerServer.registerModule("xpcshell-test/testactors"); - DebuggerServer.init(() => true); - - let global = createTestGlobal("test"); - DebuggerServer.addTestGlobal(global); - - let client = new DebuggerClient(DebuggerServer.connectPipe()); - yield connect(client); - - let { tabs } = yield listTabs(client); - let tab = findTab(tabs, "test"); - let [, tabClient] = yield attachTab(client, tab); - let [, threadClient] = yield attachThread(tabClient); - yield resume(threadClient); - - let promise = waitForNewSource(threadClient, SOURCE_URL); - loadSubScript(SOURCE_URL, global); - let { source } = yield promise; - let sourceClient = threadClient.source(source); - - let location = { line: 4, column: 17 }; - let [packet, breakpointClient] = yield setBreakpoint(sourceClient, location); - do_check_false(packet.isPending); - do_check_true("actualLocation" in packet); - let actualLocation = packet.actualLocation; - do_check_eq(actualLocation.line, 4); - do_check_eq(actualLocation.column, 28); - - packet = yield executeOnNextTickAndWaitForPause(function () { - Cu.evalInSandbox("f()", global); - }, client); - do_check_eq(packet.type, "paused"); - let why = packet.why; - do_check_eq(why.type, "breakpoint"); - do_check_eq(why.actors.length, 1); - do_check_eq(why.actors[0], breakpointClient.actor); - let frame = packet.frame; - let where = frame.where; - do_check_eq(where.source.actor, source.actor); - do_check_eq(where.line, actualLocation.line); - do_check_eq(where.column, actualLocation.column); - let variables = frame.environment.bindings.variables; - do_check_eq(variables.a.value, 1); - do_check_eq(variables.c.value.type, "undefined"); - - yield resume(threadClient); - yield close(client); - - do_test_finished(); - }); -} diff --git a/devtools/server/tests/unit/test_sourcemaps-03.js b/devtools/server/tests/unit/test_sourcemaps-03.js index 57b4543b1bb9..56941d718ed9 100644 --- a/devtools/server/tests/unit/test_sourcemaps-03.js +++ b/devtools/server/tests/unit/test_sourcemaps-03.js @@ -27,58 +27,46 @@ function run_test() function testBreakpointMapping(aName, aCallback) { - // Pause so we can set a breakpoint. - gThreadClient.addOneTimeListener("paused", function (aEvent, aPacket) { - do_check_true(!aPacket.error); - do_check_eq(aPacket.why.type, "debuggerStatement"); + Task.spawn(function*() { + let response = yield waitForPause(gThreadClient); + do_check_eq(response.why.type, "debuggerStatement"); - getSource(gThreadClient, "http://example.com/www/js/" + aName + ".js").then(source => { - source.setBreakpoint({ - // Setting the breakpoint on an empty line so that it is pushed down one - // line and we can check the source mapped actualLocation later. - line: 3 - }, function (aResponse) { - do_check_true(!aResponse.error); - - // Actual location should come back source mapped still so that - // breakpoints are displayed in the UI correctly, etc. - do_check_eq(aResponse.actualLocation.line, 4); - do_check_eq(aResponse.actualLocation.source.url, - "http://example.com/www/js/" + aName + ".js"); - - // The eval will cause us to resume, then we get an unsolicited pause - // because of our breakpoint, we resume again to finish the eval, and - // finally receive our last pause which has the result of the client - // evaluation. - gThreadClient.eval(null, aName + "()", function (aResponse) { - do_check_true(!aResponse.error, "Shouldn't be an error resuming to eval"); - do_check_eq(aResponse.type, "resumed"); - - gThreadClient.addOneTimeListener("paused", function (aEvent, aPacket) { - do_check_eq(aPacket.why.type, "breakpoint"); - // Assert that we paused because of the breakpoint at the correct - // location in the code by testing that the value of `ret` is still - // undefined. - do_check_eq(aPacket.frame.environment.bindings.variables.ret.value.type, - "undefined"); - - gThreadClient.resume(function (aResponse) { - do_check_true(!aResponse.error); - - gThreadClient.addOneTimeListener("paused", function (aEvent, aPacket) { - do_check_eq(aPacket.why.type, "clientEvaluated"); - do_check_eq(aPacket.why.frameFinished.return, aName); - - gThreadClient.resume(function (aResponse) { - do_check_true(!aResponse.error); - aCallback(); - }); - }); - }); - }); - }); - }); + const source = yield getSource(gThreadClient, "http://example.com/www/js/" + aName + ".js"); + response = yield setBreakpoint(source, { + // Setting the breakpoint on an empty line so that it is pushed down one + // line and we can check the source mapped actualLocation later. + line: 3 }); + + // Should not slide breakpoints for sourcemapped sources + do_check_true(!response.actualLocation); + + yield setBreakpoint(source, { line: 4 }); + + // The eval will cause us to resume, then we get an unsolicited pause + // because of our breakpoint, we resume again to finish the eval, and + // finally receive our last pause which has the result of the client + // evaluation. + response = yield rdpRequest(gThreadClient, gThreadClient.eval, null, aName + "()"); + do_check_eq(response.type, "resumed"); + + response = yield waitForPause(gThreadClient); + do_check_eq(response.why.type, "breakpoint"); + // Assert that we paused because of the breakpoint at the correct + // location in the code by testing that the value of `ret` is still + // undefined. + do_check_eq(response.frame.environment.bindings.variables.ret.value.type, + "undefined"); + + response = yield resume(gThreadClient); + + response = yield waitForPause(gThreadClient); + do_check_eq(response.why.type, "clientEvaluated"); + do_check_eq(response.why.frameFinished.return, aName); + + response = yield resume(gThreadClient); + + aCallback(); }); gDebuggee.eval("(" + function () { diff --git a/devtools/server/tests/unit/xpcshell.ini b/devtools/server/tests/unit/xpcshell.ini index 91022153ee4c..5236cbe44eea 100644 --- a/devtools/server/tests/unit/xpcshell.ini +++ b/devtools/server/tests/unit/xpcshell.ini @@ -256,10 +256,7 @@ skip-if = os != 'linux' || debug || asan reason = bug 1014071 [test_setBreakpoint-on-column.js] [test_setBreakpoint-on-column-in-gcd-script.js] -[test_setBreakpoint-on-column-with-no-offsets.js] [test_setBreakpoint-on-column-with-no-offsets-at-end-of-line.js] -[test_setBreakpoint-on-column-with-no-offsets-at-end-of-script.js] -[test_setBreakpoint-on-column-with-no-offsets-in-gcd-script.js] [test_setBreakpoint-on-line.js] [test_setBreakpoint-on-line-in-gcd-script.js] [test_setBreakpoint-on-line-with-multiple-offsets.js] From 3c23fd311b48c7ac151c69614d649536c6443084 Mon Sep 17 00:00:00 2001 From: Victor Porof Date: Thu, 7 Jan 2016 19:00:34 +0200 Subject: [PATCH 10/16] Bug 1237254 - Wait for focus event before checking the focus element in browser_profiler_tree-abstract-01.js, r=me --- .../performance/test/browser_profiler_tree-abstract-01.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/devtools/client/performance/test/browser_profiler_tree-abstract-01.js b/devtools/client/performance/test/browser_profiler_tree-abstract-01.js index 508379112979..a869c1432cad 100644 --- a/devtools/client/performance/test/browser_profiler_tree-abstract-01.js +++ b/devtools/client/performance/test/browser_profiler_tree-abstract-01.js @@ -44,11 +44,14 @@ function* spawnTest() { // Expand the root and test the child items... let receivedExpandEvent = treeRoot.once("expand"); + let receivedInitialFocusEvent = treeRoot.once("focus"); EventUtils.sendMouseEvent({ type: "mousedown" }, treeRoot.target.querySelector(".arrow")); let eventItem = yield receivedExpandEvent; is(eventItem, treeRoot, "The 'expand' event target is correct."); + + yield receivedInitialFocusEvent; is(document.commandDispatcher.focusedElement, treeRoot.target, "The root node is now focused."); From 18cd297ebcd6000b7158921f34167263971a414d Mon Sep 17 00:00:00 2001 From: Julian Descottes Date: Wed, 6 Jan 2016 15:01:24 -0800 Subject: [PATCH 11/16] Bug 1157469 - use EventListenerService to update markupview event bubbles;r=bgrins Inspector actor now uses EventListenerService:addListenerChangeListener to propagate event listener changes as mutations with type 'events'. markupview will now trigger an update when receiving a mutation of type 'event', and the event bubble display will be updated --HG-- extra : commitid : 2lyppirGh91 --- devtools/client/markupview/markup-view.js | 10 +- .../test/browser_markupview_events.js | 36 ++++ .../markupview/test/doc_markup_events.html | 14 ++ .../test/helper_events_test_runner.js | 36 +++- devtools/server/actors/inspector.js | 31 +++ devtools/server/tests/mochitest/chrome.ini | 1 + .../test_inspector-mutations-events.html | 184 ++++++++++++++++++ 7 files changed, 302 insertions(+), 10 deletions(-) create mode 100644 devtools/server/tests/mochitest/test_inspector-mutations-events.html diff --git a/devtools/client/markupview/markup-view.js b/devtools/client/markupview/markup-view.js index bc93a26a904c..0aa40a4dc3ab 100644 --- a/devtools/client/markupview/markup-view.js +++ b/devtools/client/markupview/markup-view.js @@ -841,14 +841,13 @@ MarkupView.prototype = { // we're not viewing. continue; } - if (type === "attributes" || type === "characterData") { + if (type === "attributes" || type === "characterData" + || type === "events" || type === "pseudoClassLock") { container.update(); } else if (type === "childList" || type === "nativeAnonymousChildList") { container.childrenDirty = true; // Update the children to take care of changes in the markup view DOM. this._updateChildren(container, {flash: true}); - } else if (type === "pseudoClassLock") { - container.update(); } } @@ -2547,7 +2546,6 @@ function ElementEditor(aContainer, aNode) { let tagName = this.node.nodeName.toLowerCase(); this.tag.textContent = tagName; this.closeTag.textContent = tagName; - this.eventNode.style.display = this.node.hasEventListeners ? "inline-block" : "none"; this.update(); this.initialized = true; @@ -2643,6 +2641,10 @@ ElementEditor.prototype = { } } + // Update the event bubble display + this.eventNode.style.display = this.node.hasEventListeners ? + "inline-block" : "none"; + this.updateTextEditor(); }, diff --git a/devtools/client/markupview/test/browser_markupview_events.js b/devtools/client/markupview/test/browser_markupview_events.js index 8656a3a42710..56f9dbdd2ffa 100644 --- a/devtools/client/markupview/test/browser_markupview_events.js +++ b/devtools/client/markupview/test/browser_markupview_events.js @@ -152,6 +152,42 @@ const TEST_DATA = [ } ] }, + // #noevents tests check that dynamically added events are properly displayed + // in the markupview + { + selector: "#noevents", + expected: [] + }, + { + selector: "#noevents", + beforeTest: function* (inspector, testActor) { + let nodeMutated = inspector.once("markupmutation"); + yield testActor.eval("window.wrappedJSObject.addNoeventsClickHandler();"); + yield nodeMutated; + }, + expected: [ + { + type: "click", + filename: TEST_URL + ":106", + attributes: [ + "Bubbling", + "DOM2" + ], + handler: 'function noeventsClickHandler(event) {\n' + + ' alert("noevents has an event listener");\n' + + '}' + } + ] + }, + { + selector: "#noevents", + beforeTest: function* (inspector, testActor) { + let nodeMutated = inspector.once("markupmutation"); + yield testActor.eval("window.wrappedJSObject.removeNoeventsClickHandler();"); + yield nodeMutated; + }, + expected: [] + }, ]; add_task(runEventPopupTests); diff --git a/devtools/client/markupview/test/doc_markup_events.html b/devtools/client/markupview/test/doc_markup_events.html index a06f7b5a65e1..1a4f358971f9 100644 --- a/devtools/client/markupview/test/doc_markup_events.html +++ b/devtools/client/markupview/test/doc_markup_events.html @@ -102,6 +102,20 @@ alert("boundHandleEvent clicked"); } }; + + function noeventsClickHandler(event) { + alert("noevents has an event listener"); + }; + + function addNoeventsClickHandler() { + let noevents = document.getElementById("noevents"); + noevents.addEventListener("click", noeventsClickHandler); + }; + + function removeNoeventsClickHandler() { + let noevents = document.getElementById("noevents"); + noevents.removeEventListener("click", noeventsClickHandler); + }; diff --git a/devtools/client/markupview/test/helper_events_test_runner.js b/devtools/client/markupview/test/helper_events_test_runner.js index 52f96bb5dd44..371fe57918ba 100644 --- a/devtools/client/markupview/test/helper_events_test_runner.js +++ b/devtools/client/markupview/test/helper_events_test_runner.js @@ -7,12 +7,12 @@ * TEST_DATA array. */ function* runEventPopupTests() { - let {inspector} = yield addTab(TEST_URL).then(openInspector); + let {inspector, testActor} = yield addTab(TEST_URL).then(openInspector); yield inspector.markup.expandAll(); - for (let {selector, expected} of TEST_DATA) { - yield checkEventsForNode(selector, expected, inspector); + for (let test of TEST_DATA) { + yield checkEventsForNode(test, inspector, testActor); } // Wait for promises to avoid leaks when running this as a single test. @@ -25,12 +25,36 @@ function* runEventPopupTests() { * Generator function that takes a selector and expected results and returns * the event info. * - * @param {String} selector - * Selector pointing at the node to be inspected + * @param {Object} test + * A test object should contain the following properties: + * - selector {String} a css selector targeting the node to edit + * - expected {Array} array of expected event objects + * - type {String} event type + * - filename {String} filename:line where the evt handler is defined + * - attributes {Array} array of event attributes ({String}) + * - handler {String} string representation of the handler + * - beforeTest {Function} (optional) a function to execute on the page + * before running the test + * @param {InspectorPanel} inspector The instance of InspectorPanel currently + * opened + * @param {TestActorFront} testActor */ -function* checkEventsForNode(selector, expected, inspector) { +function* checkEventsForNode(test, inspector, testActor) { + let {selector, expected, beforeTest} = test; let container = yield getContainerForSelector(selector, inspector); + + if (typeof beforeTest === "function") { + yield beforeTest(inspector, testActor); + } + let evHolder = container.elt.querySelector(".markupview-events"); + + if (expected.length === 0) { + // if no event is expected, simply check that the event bubble is hidden + is(evHolder.style.display, "none", "event bubble should be hidden"); + return; + } + let tooltip = inspector.markup.tooltip; yield selectNode(selector, inspector); diff --git a/devtools/server/actors/inspector.js b/devtools/server/actors/inspector.js index 0d0a66f99b53..f61cc7f5104b 100644 --- a/devtools/server/actors/inspector.js +++ b/devtools/server/actors/inspector.js @@ -863,6 +863,8 @@ var NodeFront = protocol.FrontClass(NodeActor, { this._form.incompleteValue = change.incompleteValue; } else if (change.type === "pseudoClassLock") { this._form.pseudoClassLocks = change.pseudoClassLocks; + } else if (change.type === "events") { + this._form.hasEventListeners = change.hasEventListeners; } }, @@ -1348,6 +1350,32 @@ var WalkerActor = protocol.ActorClass({ this.layoutChangeObserver.on("reflows", this._onReflows); this._onResize = this._onResize.bind(this); this.layoutChangeObserver.on("resize", this._onResize); + + this._onEventListenerChange = this._onEventListenerChange.bind(this); + eventListenerService.addListenerChangeListener(this._onEventListenerChange); + }, + + /** + * Callback for eventListenerService.addListenerChangeListener + * @param nsISimpleEnumerator changesEnum + * enumerator of nsIEventListenerChange + */ + _onEventListenerChange: function(changesEnum) { + let changes = changesEnum.enumerate(); + while (changes.hasMoreElements()) { + let current = changes.getNext().QueryInterface(Ci.nsIEventListenerChange); + let target = current.target; + + if (this._refMap.has(target)) { + let actor = this._refMap.get(target); + let mutation = { + type: "events", + target: actor.actorID, + hasEventListeners: actor._hasEventListeners + }; + this.queueMutation(mutation); + } + } }, // Returns the JSON representation of this object over the wire. @@ -1414,6 +1442,9 @@ var WalkerActor = protocol.ActorClass({ this.layoutChangeObserver = null; releaseLayoutChangesObserver(this.tabActor); + eventListenerService.removeListenerChangeListener( + this._onEventListenerChange); + this.onMutations = null; this.tabActor = null; diff --git a/devtools/server/tests/mochitest/chrome.ini b/devtools/server/tests/mochitest/chrome.ini index 9d3b222c7607..c328b5dcdf1b 100644 --- a/devtools/server/tests/mochitest/chrome.ini +++ b/devtools/server/tests/mochitest/chrome.ini @@ -69,6 +69,7 @@ skip-if = buildapp == 'mulet' [test_inspector-hide.html] [test_inspector-insert.html] [test_inspector-mutations-attr.html] +[test_inspector-mutations-events.html] [test_inspector-mutations-childlist.html] [test_inspector-mutations-frameload.html] [test_inspector-mutations-value.html] diff --git a/devtools/server/tests/mochitest/test_inspector-mutations-events.html b/devtools/server/tests/mochitest/test_inspector-mutations-events.html new file mode 100644 index 000000000000..546122e445ef --- /dev/null +++ b/devtools/server/tests/mochitest/test_inspector-mutations-events.html @@ -0,0 +1,184 @@ + + + + + + Test for Bug 1157469 + + + + + + +Mozilla Bug 1157469 +Test Document +

+ +
+
+ + From 42980ba3b825e567ea326e2370b0d549c81eb068 Mon Sep 17 00:00:00 2001 From: Nicolas Chevobbe Date: Tue, 5 Jan 2016 12:58:48 +0100 Subject: [PATCH 12/16] Bug 1228080 - Split the animation-inspector's components into multiple files. r=pbro --HG-- extra : commitid : BvhS3xAo90X --- .../animationinspector/animation-panel.js | 6 +- .../client/animationinspector/components.js | 1350 ----------------- .../components/animation-details.js | 160 ++ .../components/animation-target-node.js | 320 ++++ .../components/animation-time-block.js | 157 ++ .../components/animation-timeline.js | 433 ++++++ .../components/keyframes.js | 70 + .../animationinspector/components/moz.build | 12 + .../components/rate-selector.js | 95 ++ devtools/client/animationinspector/moz.build | 5 +- .../test/browser_animation_timeline_header.js | 8 +- .../test/unit/test_getCssPropertyName.js | 2 +- .../test/unit/test_timeScale.js | 3 +- devtools/client/animationinspector/utils.js | 141 ++ 14 files changed, 1401 insertions(+), 1361 deletions(-) delete mode 100644 devtools/client/animationinspector/components.js create mode 100644 devtools/client/animationinspector/components/animation-details.js create mode 100644 devtools/client/animationinspector/components/animation-target-node.js create mode 100644 devtools/client/animationinspector/components/animation-time-block.js create mode 100644 devtools/client/animationinspector/components/animation-timeline.js create mode 100644 devtools/client/animationinspector/components/keyframes.js create mode 100644 devtools/client/animationinspector/components/moz.build create mode 100644 devtools/client/animationinspector/components/rate-selector.js diff --git a/devtools/client/animationinspector/animation-panel.js b/devtools/client/animationinspector/animation-panel.js index 190343417c10..e941cb246973 100644 --- a/devtools/client/animationinspector/animation-panel.js +++ b/devtools/client/animationinspector/animation-panel.js @@ -8,10 +8,8 @@ "use strict"; -const { - AnimationsTimeline, - RateSelector -} = require("devtools/client/animationinspector/components"); +const {AnimationsTimeline} = require("devtools/client/animationinspector/components/animation-timeline"); +const {RateSelector} = require("devtools/client/animationinspector/components/rate-selector"); const {formatStopwatchTime} = require("devtools/client/animationinspector/utils"); var $ = (selector, target = document) => target.querySelector(selector); diff --git a/devtools/client/animationinspector/components.js b/devtools/client/animationinspector/components.js deleted file mode 100644 index 40bc3fa076f7..000000000000 --- a/devtools/client/animationinspector/components.js +++ /dev/null @@ -1,1350 +0,0 @@ -/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ -/* vim: set ft=javascript ts=2 et sw=2 tw=80: */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -"use strict"; - -// Set of reusable UI components for the animation-inspector UI. -// All components in this module share a common API: -// 1. construct the component: -// let c = new ComponentName(); -// 2. initialize the markup of the component in a given parent node: -// c.init(containerElement); -// 3. render the component, passing in some sort of state: -// This may be called over and over again when the state changes, to update -// the component output. -// c.render(state); -// 4. destroy the component: -// c.destroy(); - -const {Cu} = require("chrome"); -Cu.import("resource://devtools/client/shared/widgets/ViewHelpers.jsm"); -const {Task} = Cu.import("resource://gre/modules/Task.jsm", {}); -const { - createNode, - drawGraphElementBackground, - findOptimalTimeInterval, - TargetNodeHighlighter -} = require("devtools/client/animationinspector/utils"); - -const STRINGS_URI = "chrome://devtools/locale/animationinspector.properties"; -const L10N = new ViewHelpers.L10N(STRINGS_URI); -const MILLIS_TIME_FORMAT_MAX_DURATION = 4000; -// The minimum spacing between 2 time graduation headers in the timeline (px). -const TIME_GRADUATION_MIN_SPACING = 40; -// List of playback rate presets displayed in the timeline toolbar. -const PLAYBACK_RATES = [.1, .25, .5, 1, 2, 5, 10]; -// When the container window is resized, the timeline background gets refreshed, -// but only after a timer, and the timer is reset if the window is continuously -// resized. -const TIMELINE_BACKGROUND_RESIZE_DEBOUNCE_TIMER = 50; - -/** - * UI component responsible for displaying a preview of the target dom node of - * a given animation. - * @param {InspectorPanel} inspector Requires a reference to the inspector-panel - * to highlight and select the node, as well as refresh it when there are - * mutations. - * @param {Object} options Supported properties are: - * - compact {Boolean} Defaults to false. If true, nodes will be previewed like - * tag#id.class instead of - */ -function AnimationTargetNode(inspector, options={}) { - this.inspector = inspector; - this.options = options; - - this.onPreviewMouseOver = this.onPreviewMouseOver.bind(this); - this.onPreviewMouseOut = this.onPreviewMouseOut.bind(this); - this.onSelectNodeClick = this.onSelectNodeClick.bind(this); - this.onMarkupMutations = this.onMarkupMutations.bind(this); - this.onHighlightNodeClick = this.onHighlightNodeClick.bind(this); - this.onTargetHighlighterLocked = this.onTargetHighlighterLocked.bind(this); - - EventEmitter.decorate(this); -} - -exports.AnimationTargetNode = AnimationTargetNode; - -AnimationTargetNode.prototype = { - init: function(containerEl) { - let document = containerEl.ownerDocument; - - // Init the markup for displaying the target node. - this.el = createNode({ - parent: containerEl, - attributes: { - "class": "animation-target" - } - }); - - // Icon to select the node in the inspector. - this.highlightNodeEl = createNode({ - parent: this.el, - nodeType: "span", - attributes: { - "class": "node-highlighter", - "title": L10N.getStr("node.highlightNodeLabel") - } - }); - - // Wrapper used for mouseover/out event handling. - this.previewEl = createNode({ - parent: this.el, - nodeType: "span", - attributes: { - "title": L10N.getStr("node.selectNodeLabel") - } - }); - - if (!this.options.compact) { - this.previewEl.appendChild(document.createTextNode("<")); - } - - // Tag name. - this.tagNameEl = createNode({ - parent: this.previewEl, - nodeType: "span", - attributes: { - "class": "tag-name theme-fg-color3" - } - }); - - // Id attribute container. - this.idEl = createNode({ - parent: this.previewEl, - nodeType: "span" - }); - - if (!this.options.compact) { - createNode({ - parent: this.idEl, - nodeType: "span", - attributes: { - "class": "attribute-name theme-fg-color2" - }, - textContent: "id" - }); - this.idEl.appendChild(document.createTextNode("=\"")); - } else { - createNode({ - parent: this.idEl, - nodeType: "span", - attributes: { - "class": "theme-fg-color2" - }, - textContent: "#" - }); - } - - createNode({ - parent: this.idEl, - nodeType: "span", - attributes: { - "class": "attribute-value theme-fg-color6" - } - }); - - if (!this.options.compact) { - this.idEl.appendChild(document.createTextNode("\"")); - } - - // Class attribute container. - this.classEl = createNode({ - parent: this.previewEl, - nodeType: "span" - }); - - if (!this.options.compact) { - createNode({ - parent: this.classEl, - nodeType: "span", - attributes: { - "class": "attribute-name theme-fg-color2" - }, - textContent: "class" - }); - this.classEl.appendChild(document.createTextNode("=\"")); - } else { - createNode({ - parent: this.classEl, - nodeType: "span", - attributes: { - "class": "theme-fg-color6" - }, - textContent: "." - }); - } - - createNode({ - parent: this.classEl, - nodeType: "span", - attributes: { - "class": "attribute-value theme-fg-color6" - } - }); - - if (!this.options.compact) { - this.classEl.appendChild(document.createTextNode("\"")); - this.previewEl.appendChild(document.createTextNode(">")); - } - - this.startListeners(); - }, - - startListeners: function() { - // Init events for highlighting and selecting the node. - this.previewEl.addEventListener("mouseover", this.onPreviewMouseOver); - this.previewEl.addEventListener("mouseout", this.onPreviewMouseOut); - this.previewEl.addEventListener("click", this.onSelectNodeClick); - this.highlightNodeEl.addEventListener("click", this.onHighlightNodeClick); - - // Start to listen for markupmutation events. - this.inspector.on("markupmutation", this.onMarkupMutations); - - // Listen to the target node highlighter. - TargetNodeHighlighter.on("highlighted", this.onTargetHighlighterLocked); - }, - - stopListeners: function() { - TargetNodeHighlighter.off("highlighted", this.onTargetHighlighterLocked); - this.inspector.off("markupmutation", this.onMarkupMutations); - this.previewEl.removeEventListener("mouseover", this.onPreviewMouseOver); - this.previewEl.removeEventListener("mouseout", this.onPreviewMouseOut); - this.previewEl.removeEventListener("click", this.onSelectNodeClick); - this.highlightNodeEl.removeEventListener("click", this.onHighlightNodeClick); - }, - - destroy: function() { - TargetNodeHighlighter.unhighlight().catch(e => console.error(e)); - - this.stopListeners(); - - this.el.remove(); - this.el = this.tagNameEl = this.idEl = this.classEl = null; - this.highlightNodeEl = this.previewEl = null; - this.nodeFront = this.inspector = this.playerFront = null; - }, - - get highlighterUtils() { - if (this.inspector && this.inspector.toolbox) { - return this.inspector.toolbox.highlighterUtils; - } - return null; - }, - - onPreviewMouseOver: function() { - if (!this.nodeFront || !this.highlighterUtils) { - return; - } - this.highlighterUtils.highlightNodeFront(this.nodeFront) - .catch(e => console.error(e)); - }, - - onPreviewMouseOut: function() { - if (!this.nodeFront || !this.highlighterUtils) { - return; - } - this.highlighterUtils.unhighlight() - .catch(e => console.error(e)); - }, - - onSelectNodeClick: function() { - if (!this.nodeFront) { - return; - } - this.inspector.selection.setNodeFront(this.nodeFront, "animationinspector"); - }, - - onHighlightNodeClick: function(e) { - e.stopPropagation(); - - let classList = this.highlightNodeEl.classList; - - let isHighlighted = classList.contains("selected"); - if (isHighlighted) { - classList.remove("selected"); - TargetNodeHighlighter.unhighlight().then(() => { - this.emit("target-highlighter-unlocked"); - }, e => console.error(e)); - } else { - classList.add("selected"); - TargetNodeHighlighter.highlight(this).then(() => { - this.emit("target-highlighter-locked"); - }, e => console.error(e)); - } - }, - - onTargetHighlighterLocked: function(e, animationTargetNode) { - if (animationTargetNode !== this) { - this.highlightNodeEl.classList.remove("selected"); - } - }, - - onMarkupMutations: function(e, mutations) { - if (!this.nodeFront || !this.playerFront) { - return; - } - - for (let {target} of mutations) { - if (target === this.nodeFront) { - // Re-render with the same nodeFront to update the output. - this.render(this.playerFront); - break; - } - } - }, - - render: Task.async(function*(playerFront) { - this.playerFront = playerFront; - this.nodeFront = undefined; - - try { - this.nodeFront = yield this.inspector.walker.getNodeFromActor( - playerFront.actorID, ["node"]); - } catch (e) { - if (!this.el) { - // The panel was destroyed in the meantime. Just log a warning. - console.warn("Cound't retrieve the animation target node, widget " + - "destroyed"); - } else { - // This was an unexpected error, log it. - console.error(e); - } - return; - } - - if (!this.nodeFront || !this.el) { - return; - } - - let {tagName, attributes} = this.nodeFront; - - this.tagNameEl.textContent = tagName.toLowerCase(); - - let idIndex = attributes.findIndex(({name}) => name === "id"); - if (idIndex > -1 && attributes[idIndex].value) { - this.idEl.querySelector(".attribute-value").textContent = - attributes[idIndex].value; - this.idEl.style.display = "inline"; - } else { - this.idEl.style.display = "none"; - } - - let classIndex = attributes.findIndex(({name}) => name === "class"); - if (classIndex > -1 && attributes[classIndex].value) { - let value = attributes[classIndex].value; - if (this.options.compact) { - value = value.split(" ").join("."); - } - - this.classEl.querySelector(".attribute-value").textContent = value; - this.classEl.style.display = "inline"; - } else { - this.classEl.style.display = "none"; - } - - this.emit("target-retrieved"); - }) -}; - -/** - * UI component responsible for displaying a playback rate selector UI. - * The rendering logic is such that a predefined list of rates is generated. - * If *all* animations passed to render share the same rate, then that rate is - * selected in the element, otherwise, the empty value is selected. + * If the rate that all animations share isn't part of the list of predefined + * rates, than that rate is added to the list. + */ +function RateSelector() { + this.onRateChanged = this.onRateChanged.bind(this); + EventEmitter.decorate(this); +} + +exports.RateSelector = RateSelector; + +RateSelector.prototype = { + init: function(containerEl) { + this.selectEl = createNode({ + parent: containerEl, + nodeType: "select", + attributes: {"class": "devtools-button"} + }); + + this.selectEl.addEventListener("change", this.onRateChanged); + }, + + destroy: function() { + this.selectEl.removeEventListener("change", this.onRateChanged); + this.selectEl.remove(); + this.selectEl = null; + }, + + getAnimationsRates: function(animations) { + return sortedUnique(animations.map(a => a.state.playbackRate)); + }, + + getAllRates: function(animations) { + let animationsRates = this.getAnimationsRates(animations); + if (animationsRates.length > 1) { + return PLAYBACK_RATES; + } + + return sortedUnique(PLAYBACK_RATES.concat(animationsRates)); + }, + + render: function(animations) { + let allRates = this.getAnimationsRates(animations); + let hasOneRate = allRates.length === 1; + + this.selectEl.innerHTML = ""; + + if (!hasOneRate) { + // When the animations displayed have mixed playback rates, we can't + // select any of the predefined ones, instead, insert an empty rate. + createNode({ + parent: this.selectEl, + nodeType: "option", + attributes: {value: "", selector: "true"}, + textContent: "-" + }); + } + for (let rate of this.getAllRates(animations)) { + let option = createNode({ + parent: this.selectEl, + nodeType: "option", + attributes: {value: rate}, + textContent: L10N.getFormatStr("player.playbackRateLabel", rate) + }); + + // If there's only one rate and this is the option for it, select it. + if (hasOneRate && rate === allRates[0]) { + option.setAttribute("selected", "true"); + } + } + }, + + onRateChanged: function() { + let rate = parseFloat(this.selectEl.value); + if (!isNaN(rate)) { + this.emit("rate-changed", rate); + } + } +}; + +let sortedUnique = arr => [...new Set(arr)].sort((a, b) => a > b); diff --git a/devtools/client/animationinspector/moz.build b/devtools/client/animationinspector/moz.build index ddad05fb324d..e98919ee8e3a 100644 --- a/devtools/client/animationinspector/moz.build +++ b/devtools/client/animationinspector/moz.build @@ -7,7 +7,10 @@ BROWSER_CHROME_MANIFESTS += ['test/browser.ini'] XPCSHELL_TESTS_MANIFESTS += ['test/unit/xpcshell.ini'] +DIRS += [ + 'components' +] + DevToolsModules( - 'components.js', 'utils.js', ) diff --git a/devtools/client/animationinspector/test/browser_animation_timeline_header.js b/devtools/client/animationinspector/test/browser_animation_timeline_header.js index 8945bec8a8b2..e3d861ce4ad9 100644 --- a/devtools/client/animationinspector/test/browser_animation_timeline_header.js +++ b/devtools/client/animationinspector/test/browser_animation_timeline_header.js @@ -8,9 +8,11 @@ requestLongerTimeout(2); // Check that the timeline shows correct time graduations in the header. -const {findOptimalTimeInterval} = require("devtools/client/animationinspector/utils"); -const {TimeScale} = require("devtools/client/animationinspector/components"); -// Should be kept in sync with TIME_GRADUATION_MIN_SPACING in components.js +const { + findOptimalTimeInterval, + TimeScale +} = require("devtools/client/animationinspector/utils"); +// Should be kept in sync with TIME_GRADUATION_MIN_SPACING in animation-timeline.js const TIME_GRADUATION_MIN_SPACING = 40; add_task(function*() { diff --git a/devtools/client/animationinspector/test/unit/test_getCssPropertyName.js b/devtools/client/animationinspector/test/unit/test_getCssPropertyName.js index 016cf48c30c7..4432c1e08d8f 100644 --- a/devtools/client/animationinspector/test/unit/test_getCssPropertyName.js +++ b/devtools/client/animationinspector/test/unit/test_getCssPropertyName.js @@ -7,7 +7,7 @@ var Cu = Components.utils; const {require} = Cu.import("resource://devtools/shared/Loader.jsm", {}); -const {getCssPropertyName} = require("devtools/client/animationinspector/components"); +const {getCssPropertyName} = require("devtools/client/animationinspector/components/animation-details"); const TEST_DATA = [{ jsName: "alllowercase", diff --git a/devtools/client/animationinspector/test/unit/test_timeScale.js b/devtools/client/animationinspector/test/unit/test_timeScale.js index 29fa35aaae67..9ee4b8a594f0 100644 --- a/devtools/client/animationinspector/test/unit/test_timeScale.js +++ b/devtools/client/animationinspector/test/unit/test_timeScale.js @@ -7,8 +7,7 @@ var Cu = Components.utils; const {require} = Cu.import("resource://devtools/shared/Loader.jsm", {}); -const {TimeScale} = require("devtools/client/animationinspector/components"); - +const {TimeScale} = require("devtools/client/animationinspector/utils"); const TEST_ANIMATIONS = [{ desc: "Testing a few standard animations", animations: [{ diff --git a/devtools/client/animationinspector/utils.js b/devtools/client/animationinspector/utils.js index bbf6eff2267b..49bc4481f973 100644 --- a/devtools/client/animationinspector/utils.js +++ b/devtools/client/animationinspector/utils.js @@ -7,11 +7,14 @@ "use strict"; const {Cu} = require("chrome"); +Cu.import("resource://devtools/client/shared/widgets/ViewHelpers.jsm"); const {Task} = Cu.import("resource://gre/modules/Task.jsm", {}); var {loader} = Cu.import("resource://devtools/shared/Loader.jsm"); loader.lazyRequireGetter(this, "EventEmitter", "devtools/shared/event-emitter"); +const STRINGS_URI = "chrome://devtools/locale/animationinspector.properties"; +const L10N = new ViewHelpers.L10N(STRINGS_URI); // How many times, maximum, can we loop before we find the optimal time // interval in the timeline graph. const OPTIMAL_TIME_INTERVAL_MAX_ITERS = 100; @@ -27,6 +30,8 @@ const TIME_INTERVAL_OPACITY_MIN = 32; // byte const TIME_INTERVAL_OPACITY_ADD = 32; +const MILLIS_TIME_FORMAT_MAX_DURATION = 4000; + /** * DOM node creation helper function. * @param {Object} Options to customize the node to be created. @@ -208,3 +213,139 @@ function formatStopwatchTime(time) { } exports.formatStopwatchTime = formatStopwatchTime; + +/** + * The TimeScale helper object is used to know which size should something be + * displayed with in the animation panel, depending on the animations that are + * currently displayed. + * If there are 5 animations displayed, and the first one starts at 10000ms and + * the last one ends at 20000ms, then this helper can be used to convert any + * time in this range to a distance in pixels. + * + * For the helper to know how to convert, it needs to know all the animations. + * Whenever a new animation is added to the panel, addAnimation(state) should be + * called. reset() can be called to start over. + */ +var TimeScale = { + minStartTime: Infinity, + maxEndTime: 0, + + /** + * Add a new animation to time scale. + * @param {Object} state A PlayerFront.state object. + */ + addAnimation: function(state) { + let {previousStartTime, delay, duration, + iterationCount, playbackRate} = state; + + // Negative-delayed animations have their startTimes set such that we would + // be displaying the delay outside the time window if we didn't take it into + // account here. + let relevantDelay = delay < 0 ? delay / playbackRate : 0; + previousStartTime = previousStartTime || 0; + + this.minStartTime = Math.min(this.minStartTime, + previousStartTime + relevantDelay); + let length = (delay / playbackRate) + + ((duration / playbackRate) * + (!iterationCount ? 1 : iterationCount)); + let endTime = previousStartTime + length; + this.maxEndTime = Math.max(this.maxEndTime, endTime); + }, + + /** + * Reset the current time scale. + */ + reset: function() { + this.minStartTime = Infinity; + this.maxEndTime = 0; + }, + + /** + * Convert a startTime to a distance in %, in the current time scale. + * @param {Number} time + * @return {Number} + */ + startTimeToDistance: function(time) { + time -= this.minStartTime; + return this.durationToDistance(time); + }, + + /** + * Convert a duration to a distance in %, in the current time scale. + * @param {Number} time + * @return {Number} + */ + durationToDistance: function(duration) { + return duration * 100 / this.getDuration(); + }, + + /** + * Convert a distance in % to a time, in the current time scale. + * @param {Number} distance + * @return {Number} + */ + distanceToTime: function(distance) { + return this.minStartTime + (this.getDuration() * distance / 100); + }, + + /** + * Convert a distance in % to a time, in the current time scale. + * The time will be relative to the current minimum start time. + * @param {Number} distance + * @return {Number} + */ + distanceToRelativeTime: function(distance) { + let time = this.distanceToTime(distance); + return time - this.minStartTime; + }, + + /** + * Depending on the time scale, format the given time as milliseconds or + * seconds. + * @param {Number} time + * @return {String} The formatted time string. + */ + formatTime: function(time) { + // Format in milliseconds if the total duration is short enough. + if (this.getDuration() <= MILLIS_TIME_FORMAT_MAX_DURATION) { + return L10N.getFormatStr("timeline.timeGraduationLabel", time.toFixed(0)); + } + + // Otherwise format in seconds. + return L10N.getFormatStr("player.timeLabel", (time / 1000).toFixed(1)); + }, + + getDuration: function() { + return this.maxEndTime - this.minStartTime; + }, + + /** + * Given an animation, get the various dimensions (in %) useful to draw the + * animation in the timeline. + */ + getAnimationDimensions: function({state}) { + let start = state.previousStartTime || 0; + let duration = state.duration; + let rate = state.playbackRate; + let count = state.iterationCount; + let delay = state.delay || 0; + + // The start position. + let x = this.startTimeToDistance(start + (delay / rate)); + // The width for a single iteration. + let w = this.durationToDistance(duration / rate); + // The width for all iterations. + let iterationW = w * (count || 1); + // The start position of the delay. + let delayX = this.durationToDistance((delay < 0 ? 0 : delay) / rate); + // The width of the delay. + let delayW = this.durationToDistance(Math.abs(delay) / rate); + // The width of the delay if it is positive, 0 otherwise. + let negativeDelayW = delay < 0 ? delayW : 0; + + return {x, w, iterationW, delayX, delayW, negativeDelayW}; + } +}; + +exports.TimeScale = TimeScale; From eaafce8b7fe05c1fd226cedb34b6e24bbd5a6470 Mon Sep 17 00:00:00 2001 From: Robert Strong Date: Thu, 7 Jan 2016 10:34:23 -0800 Subject: [PATCH 13/16] Bug 1237040 - Add configure.in support for NSIS 3.0b3 and remove support for NSIS 2.46u and NSIS 3.0a1. r=gps --- configure.in | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/configure.in b/configure.in index eff1a321c1ad..cc6189ac5ef8 100644 --- a/configure.in +++ b/configure.in @@ -6278,41 +6278,49 @@ dnl minimum minor version of Unicode NSIS isn't in the path dnl (unless in case of cross compiling, for which Unicode dnl is not yet sufficient). if test "$OS_ARCH" = "WINNT"; then - MIN_NSIS_MAJOR_VER=2 - MIN_NSIS_MINOR_VER=46 - MOZ_PATH_PROGS(MAKENSISU, $MAKENSISU makensis-3.0b1.exe makensisu-3.0a2.exe makensisu-2.46.exe makensis) + MIN_NSIS_MAJOR_VER=3 + MIN_NSIS_MINOR_VER=0 + MIN_NSIS_PRERELEASE_TYPE=b + MIN_NSIS_PRERELEASE_VER=1 + MOZ_PATH_PROGS(MAKENSISU, $MAKENSISU makensis-3.0b3.exe makensis-3.0b1.exe makensis) if test -n "$MAKENSISU" -a "$MAKENSISU" != ":"; then AC_MSG_RESULT([yes]) MAKENSISU_VER=`"$MAKENSISU" -version 2>/dev/null` changequote(,) - MAKENSISU_PARSED_VER=`echo "$MAKENSISU_VER" | sed -e '/-Unicode/!s/.*//g' -e 's/^v\([0-9]\+\.[0-9]\+\).*\-Unicode$/\1/g'` + MAKENSISU_PARSED_VER=`echo "$MAKENSISU_VER" | sed -e 's/^v\([0-9]\+\.[0-9]\+\).*$/\1/g'` changequote([,]) - if test "$MAKENSISU_PARSED_VER" = ""; then - changequote(,) - MAKENSISU_PARSED_VER=`echo "$MAKENSISU_VER" | sed -e 's/^v\([0-9]\+\.[0-9]\+\).*$/\1/g'` - changequote([,]) - fi MAKENSISU_MAJOR_VER=0 MAKENSISU_MINOR_VER=0 + MAKENSISU_PRERELEASE_TYPE=$MIN_NSIS_PRERELEASE_TYPE + MAKENSISU_PRERELEASE_VER=$MIN_NSIS_PRERELEASE_VER if test ! "$MAKENSISU_PARSED_VER" = ""; then MAKENSISU_MAJOR_VER=`echo $MAKENSISU_PARSED_VER | $AWK -F\. '{ print $1 }'` MAKENSISU_MINOR_VER=`echo $MAKENSISU_PARSED_VER | $AWK -F\. '{ print $2 }'` + changequote(,) + MAKENSISU_PARSED_PRERELEASE=`echo "$MAKENSISU_VER" | sed -e 's/^v[0-9]\+\.[0-9]\+\([^0-9]\+\)\([0-9]\+\).*$/\1.\2/g'` + changequote([,]) + if test ! "$MAKENSISU_PARSED_PRERELEASE" = "$MAKENSISU_VER"; then + MAKENSISU_PRERELEASE_TYPE=`echo $MAKENSISU_PARSED_PRERELEASE | $AWK -F\. '{ print $1 }'` + MAKENSISU_PRERELEASE_VER=`echo $MAKENSISU_PARSED_PRERELEASE | $AWK -F\. '{ print $2 }'` + fi fi - AC_MSG_CHECKING([for Unicode NSIS version $MIN_NSIS_MAJOR_VER.$MIN_NSIS_MINOR_VER or greater]) + AC_MSG_CHECKING([for NSIS version $MIN_NSIS_MAJOR_VER.$MIN_NSIS_MINOR_VER$MIN_NSIS_PRERELEASE_TYPE$MIN_NSIS_PRERELEASE_VER or greater]) if test "$MAKENSISU_MAJOR_VER" -eq $MIN_NSIS_MAJOR_VER -a \ - "$MAKENSISU_MINOR_VER" -ge $MIN_NSIS_MINOR_VER || - test "$MAKENSISU_MAJOR_VER" -gt $MIN_NSIS_MAJOR_VER; then + "$MAKENSISU_MINOR_VER" -ge $MIN_NSIS_MINOR_VER -a \ + "$MAKENSISU_PRERELEASE_TYPE" = "$MIN_NSIS_PRERELEASE_TYPE" -a \ + "$MAKENSISU_PRERELEASE_VER" -ge $MIN_NSIS_PRERELEASE_VER; then AC_MSG_RESULT([yes]) + AC_MSG_RESULT([Found NSIS Version: $MAKENSISU_VER]) else AC_MSG_RESULT([no]) if test -z "$CROSS_COMPILE"; then - AC_MSG_ERROR([To build the installer you must have the latest MozillaBuild or Unicode NSIS version $MIN_NSIS_MAJOR_VER.$MIN_NSIS_MINOR_VER or greater in your path.]) + AC_MSG_ERROR([To build the installer you must have the latest MozillaBuild or NSIS version $MIN_NSIS_MAJOR_VER.$MIN_NSIS_MINOR_VER$MIN_NSIS_PRERELEASE_TYPE$MIN_NSIS_PRERELEASE_VER or greater in your path.]) else MAKENSISU= fi fi elif test -z "$CROSS_COMPILE"; then - AC_MSG_ERROR([To build the installer you must have the latest MozillaBuild or Unicode NSIS version $MIN_NSIS_MAJOR_VER.$MIN_NSIS_MINOR_VER or greater in your path.]) + AC_MSG_ERROR([To build the installer you must have the latest MozillaBuild or NSIS version $MIN_NSIS_MAJOR_VER.$MIN_NSIS_MINOR_VER$MIN_NSIS_PRERELEASE_TYPE$MIN_NSIS_PRERELEASE_VER or greater in your path.]) else MAKENSISU= fi From 88f78499bf3c6a2072b0d0c7d61a5cccf99dd331 Mon Sep 17 00:00:00 2001 From: Fernando Campo Date: Thu, 7 Jan 2016 19:07:31 +0000 Subject: [PATCH 14/16] Bug 1205661 - Blue shade of icon in toolbar does not match other blue icons. r=mikedeboer --- browser/extensions/loop/jar.mn | 8 ++++---- .../extensions/loop/skin/linux/menuPanel.png | Bin 2834 -> 1475 bytes .../loop/skin/linux/menuPanel@2x.png | Bin 8223 -> 3144 bytes .../loop/skin/linux/toolbar-inverted.png | Bin 2731 -> 2551 bytes .../loop/skin/linux/toolbar-inverted@2x.png | Bin 5637 -> 5323 bytes .../extensions/loop/skin/linux/toolbar.png | Bin 4421 -> 3974 bytes .../extensions/loop/skin/linux/toolbar@2x.png | Bin 3605 -> 10115 bytes .../loop/skin/osx/menuPanel-yosemite.png | Bin 5882 -> 4424 bytes .../loop/skin/osx/menuPanel-yosemite@2x.png | Bin 11601 -> 8735 bytes .../extensions/loop/skin/osx/menuPanel.png | Bin 9703 -> 8025 bytes .../extensions/loop/skin/osx/menuPanel@2x.png | Bin 22824 -> 19003 bytes .../loop/skin/osx/toolbar-inverted.png | Bin 4060 -> 3568 bytes .../loop/skin/osx/toolbar-inverted@2x.png | Bin 10967 -> 7855 bytes .../loop/skin/osx/toolbar-yosemite.png | Bin 2561 -> 2135 bytes .../loop/skin/osx/toolbar-yosemite@2x.png | Bin 6047 -> 4500 bytes browser/extensions/loop/skin/osx/toolbar.png | Bin 4307 -> 3861 bytes .../extensions/loop/skin/osx/toolbar@2x.png | Bin 13249 -> 9729 bytes .../loop/skin/windows/menuPanel-aero.png | Bin 10263 -> 7871 bytes .../loop/skin/windows/menuPanel-aero@2x.png | Bin 20139 -> 21794 bytes .../loop/skin/windows/menuPanel.png | Bin 2834 -> 1475 bytes .../loop/skin/windows/menuPanel@2x.png | Bin 8223 -> 3144 bytes .../loop/skin/windows/toolbar-XP.png | Bin 4339 -> 3904 bytes .../loop/skin/windows/toolbar-XP@2x.png | Bin 10718 -> 9721 bytes .../loop/skin/windows/toolbar-aero.png | Bin 4437 -> 3988 bytes .../loop/skin/windows/toolbar-aero@2x.png | Bin 10973 -> 9845 bytes .../loop/skin/windows/toolbar-inverted.png | Bin 2731 -> 2551 bytes .../loop/skin/windows/toolbar-inverted@2x.png | Bin 5637 -> 5323 bytes .../loop/skin/windows/toolbar-lunaSilver.png | Bin 4451 -> 4001 bytes .../skin/windows/toolbar-lunaSilver@2x.png | Bin 11118 -> 9915 bytes .../loop/skin/windows/toolbar-win10.png | Bin 0 -> 768 bytes .../loop/skin/windows/toolbar-win10@2x.png | Bin 0 -> 1599 bytes .../loop/skin/windows/toolbar-win8.png | Bin 1121 -> 0 bytes .../loop/skin/windows/toolbar-win8@2x.png | Bin 3605 -> 0 bytes .../extensions/loop/skin/windows/toolbar.png | Bin 751 -> 752 bytes .../loop/skin/windows/toolbar@2x.png | Bin 1611 -> 1597 bytes browser/themes/windows/loop/toolbar-win10.png | Bin 0 -> 768 bytes .../themes/windows/loop/toolbar-win10@2x.png | Bin 0 -> 1599 bytes 37 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 browser/extensions/loop/skin/windows/toolbar-win10.png create mode 100644 browser/extensions/loop/skin/windows/toolbar-win10@2x.png delete mode 100644 browser/extensions/loop/skin/windows/toolbar-win8.png delete mode 100644 browser/extensions/loop/skin/windows/toolbar-win8@2x.png create mode 100644 browser/themes/windows/loop/toolbar-win10.png create mode 100644 browser/themes/windows/loop/toolbar-win10@2x.png diff --git a/browser/extensions/loop/jar.mn b/browser/extensions/loop/jar.mn index d90360d6e174..266a474062c7 100644 --- a/browser/extensions/loop/jar.mn +++ b/browser/extensions/loop/jar.mn @@ -19,13 +19,13 @@ % override chrome://loop/skin/toolbar.png chrome://loop/skin/toolbar-XP.png os=WINNT osversion<6 % override chrome://loop/skin/toolbar.png chrome://loop/skin/toolbar-aero.png os=WINNT osversion=6 % override chrome://loop/skin/toolbar.png chrome://loop/skin/toolbar-aero.png os=WINNT osversion=6.1 -% override chrome://loop/skin/toolbar.png chrome://loop/skin/toolbar-win8.png os=WINNT osversion=6.2 -% override chrome://loop/skin/toolbar.png chrome://loop/skin/toolbar-win8.png os=WINNT osversion=6.3 +% override chrome://loop/skin/toolbar.png chrome://loop/skin/toolbar-win10.png os=WINNT osversion=6.2 +% override chrome://loop/skin/toolbar.png chrome://loop/skin/toolbar-win10.png os=WINNT osversion=6.3 % override chrome://loop/skin/toolbar@2x.png chrome://loop/skin/toolbar-XP@2x.png os=WINNT osversion<6 % override chrome://loop/skin/toolbar@2x.png chrome://loop/skin/toolbar-aero@2x.png os=WINNT osversion=6 % override chrome://loop/skin/toolbar@2x.png chrome://loop/skin/toolbar-aero@2x.png os=WINNT osversion=6.1 -% override chrome://loop/skin/toolbar@2x.png chrome://loop/skin/toolbar-win8@2x.png os=WINNT osversion=6.2 -% override chrome://loop/skin/toolbar@2x.png chrome://loop/skin/toolbar-win8@2x.png os=WINNT osversion=6.3 +% override chrome://loop/skin/toolbar@2x.png chrome://loop/skin/toolbar-win10@2x.png os=WINNT osversion=6.2 +% override chrome://loop/skin/toolbar@2x.png chrome://loop/skin/toolbar-win10@2x.png os=WINNT osversion=6.3 skin/ (skin/*) content/modules/ (content/modules/*) * content/preferences/prefs.js (content/preferences/prefs.js) diff --git a/browser/extensions/loop/skin/linux/menuPanel.png b/browser/extensions/loop/skin/linux/menuPanel.png index 31f3671d4ce3714fcc446f8b7373234684f32be5..d7aaa2f62407957783e17c8d387999c11f937446 100644 GIT binary patch literal 1475 zcmY+E3sllq9LI5_d3;s&K&MF^n`V-_OvO~lP#5h8E4S=qh0n|~l`J1Ae^Mu=VxC5s zH6}AGw-ZP5k;5{vDWGYRkI+OzF>{I{%n*Y9Fm&&8?)`nvz2|#=k9+R#SNs+33u}u{ zEg%qxHTGc05hEvzdz-nL(OU8@eglD+mS97Izs@pQphH;*tXc zP4uAmNpTRkdv1s8E1I|)JKSav@x~Uu++kZBA|+$3)9ZWWIptjqYx?qNQ}0rjFTALo&mUCMx~~yA$Yy?8#y_IF|QBZ>ZzHP(rD}|5L2!cg+raQ&NG7 z#8Q6QJ*7PzzVzKIvTbHZOWLO7i64<$`r_a@ch4{;X()7u>w75)iI#Ij_fCoJLmL{|1`O5&M2Kp)YOnD#waUb4*=uV61vAJ7pT+}2|GQh z<4*9A_^QctXu!G@D)+6?`R79PXQE!Wo-BZZe{8T~Gzk@0ofTmkyzG^WX{0Yo6TG)o z6=9eHHJQ&--uUEcL|XR8M^TK)Qj-2zzAU(OCCPE}-y!h>>+tPCM5|=M6V5i97}*o0 z+HNmvS_zgZGZ4>JoS2K;fC7%JRnwMiP=P~i@vL8955JOkIm-b^l^w5FBYnf}fJ*S3 z!VyuLuDHWO)iP8}yP+Q_ElLs&J*!XGVs&(2z<7NhPQT)Q@dHBdMG3UKRNisieS6cw zVp&3CrW)9Uc`P$OL3n7;0&_)B&iahl(^j{A^iFGEP-QcUB*gc%%9a$+qHT>T9Mspg z-G^IE>>VlgP6Hf!MUBq#?$}*XBm-)GvpQa73Oz$w(bP$rV9wF5{7$jOn<@MLqY^SK zho^fDo}nm)uOB0D4L`GG!~LS?_3yaN=*lO0auAt#1Z_^vtJ+c#Y8k{3&*_+PY`dTb zo*LUBtrozo0~;^dOX992RX6?lfN4ewCZcDgD25wvdNofObq zj!h2a>zT=BwI9`Clx%F3S0_wyD4DgGK@zDx;VsFno^b0ZWnsN?A^e~`} zEinwimSrQEeIq$f1s6;xLyEC{39anfjFwCn-F*$05X>U^4acCjy5|_EL4>FrWdhsN za;;sZ-gh=|R?h{OqXzV0?(E$Q2Bo~H0obamcK`~vGo|N|HvBy{Zz#;zu1L}E8ofQz zb4$YEz@R$GR&@feuo5O2UL?)vAMRxJhKdDj2czEG47zHU+21) zQ@R4FH3y|XDH6D+wWpA9!IH(R0o9Sb!1!f<(|bCh+s=h_i$gkkemca4`!?_^ca zoNR@p3Sb37yAEkQ(zC84uDZ5REbSjD&H%+kbSrGh%T=DYBv{UlYnH)uPF~GIheo3> zqanSi+`X{GpFgApAmDm=*9G$mo{-~KRhZp1hc1bff|^|b1v+Jp^zAF@ky1moR@Lu6 z*dIt@Y`?L*3KmP!nPF9)pj=bOP?^cP^wiTyr0JzvU~agd0buG`MWNX?!=3id@Kd8R z?`g~aV2$y^Cou-`#^Zw~Nr=z}iJ**81(Pgf04`5o<*CeWg|qnruY3amt%~5z;<&_P z&Gom?lQ*+s6@o&)ShQKDA#q}{e&^%ciI zV-%DsN~2N-O|p-K5D-ui5wwUvJyxx?wAJGS5EWlNeJCIZr*(RIR6r?U1p?$DAVjNH zYwamjtS^$?fDKYn6N!mdsnvoHeDqMw_K)9PcCzelW|qy~e}D4*C$qaV^O?E%-TB?$ z{oUVK^r%NYQj^tVf*$p##{oTQ&b&MN0~3G|KrwKX{InN%8`ugw1N^%?_>&tp4+h2p zLxkT~e)?4SuL92lJ9?T{k32cx>*FVS+HuX9V+w%_qyY{EihzFd^GCotz;@s{;LpJB z99?5yU>YzP7=P~Jp%DYN0c(J2agKv=x~7&(_Uc&19j3H9!+_bqB;YWQ*ZV)6fI-ZvOwr_*ouh#T zz_sEG*{B0p4a@>Q@o`*#pbj`EM-Q;)fXlpwrjr{s4*(tkM&*bf0e%R)=fm+d?N3Qb zK$TxvSF6e|D6;dyPw9YD+MU6`<32(zFCp3YJ&uinz_T*ON)9dmCf)m1Ip?RYFf}Y= z!|wv)Qh$W1Zv*E7Z)NQ98#b2%n*h6u>wG!s^J!h|zY7=-ywQ~b?!2{4)Bco{1XTHz zb+xMef+9O_`~w_tO1pC!@K@lQIUaBB2F^>-aNRl%Xaq`9JVh1(%^q0;fm>wUR^a-+ z4LAe%Fpcw_2s8jEdSLVh_R02`3bin>}=enF9)SAHi4 zoYL;t;s67>De3dBIKZw{y|LW*1lM=Xz*Gt0ve77@Rva>}O~6FyQQgj0Aff769?#uR z#(43N`F)Say(FRa*9U~1GukxmPoN~A%3r>rR+WEfk)3zGH9#D2a=Vkt0lGuahyx_+ zYJW`D(%n!m^c%aU&@sTDfHAJ`rU5nXou)Qyz8+ZN4hCM6?UOMnXs`O0gxUKN zNtael`x6L+RQb!+*QoM)7uza)t4JL1iZ*9!hD5?1;1qe{_m?;}xtng5?)4LCoQ*)A z3<-=8uFn?&Pr5#T8+b9tPoA@Z7hIpe7iUh5)c*jJHuj^Dz!upaBR#esb!r56&wpsu zv_FB8kShQF^);&e!%J)xzExZu1vAxuhH)84 zlBi7B0~7*Gi`4JMOeOfy<-i8nz7kmL^Z32-vBdnDt*Z792EwZRCF`nH`9}q9HNF+D zjq#(M&O^YD$*&&5RHp!Z0UVJcyO?VgNdgAo%Xo}FEmGfs|HAa^F!PgOO6HdNJU)h0 zSS*;;s%rmWAgsz?ytZ1Ee}8nyR^wY`55$=Crt_dY(etVGz!kFn0cH|DIlGu^4aTfk z05chXJis-PdUp@(RX>-p0KiO4*^(da?|~Q0YE`v=C>U1dFIrQr%I_Dp)%aHVni!X~ zI17OpdA@*qq~RhN#CVr|6|kiiOKhG;eUVfwo$TXES$Ad z)&8MCsVe{8HC3wo!ctp}Z&j>~adESgY7EmL*`Ihk+uJALb4=R54pU7&DCu{%qum4C zD%($Hh_Me=e*`X)?R(=!zc$+7=I2XGfu8{^yltnd{X>CLRsKB>RH^chE49`5){wO^ zE^2m;$4m~ptG>SiN`EmE)V(otB*TG#WOoW>4AlYrSHj4DV(KloO0wfC$sQ%w-*sRn zy+4r8qvVF;znvyo%3Nx=Tu1yKN5`4hMH|k-|GeWaaiYUy3~2j2eyse1Sa{n`Rr`m7 zrKTnsudC$m1x7?UB7!tpj42U$1Im|tJg$Mll)`$>)zQrRqY=NmZ|dR z*Q{3MpD@r?;akHWG!A(F>(1#wG({ttgIQRZjqZ}}H@WeiL86Kzu5p+`={SFr803o_ zINuW_YW!ld{eP@`r|Hp#31Td-e^bBXDIPe+F%HF0f;A14gk?I^#%%a$Iy;?8Kgy%V~@4l3qS&H}K z?7ouVm_uTI5xKYXaTP(kb$w%`m-M_|mL#`C%6~ zaHKGXBz^yxWHFzTFP=1B30n@~u%19oVam`+tX%910$+)=9VPYaJ{_2sBF)Cbi;-?hyqaW_U0mLV6=+dSEZyQRq$^nVPE;2UdM3c~;Z002ovP6b4+LSTX)jHbu{ diff --git a/browser/extensions/loop/skin/linux/menuPanel@2x.png b/browser/extensions/loop/skin/linux/menuPanel@2x.png index f52cf225fd8f981fd5e2710042034c7591806eb9..505a4b13b8a8feb46e199c869217d82cdcfd38d8 100644 GIT binary patch literal 3144 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 BgmVA@ literal 8223 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 LT(9A_Tm1h3S&um3 diff --git a/browser/extensions/loop/skin/linux/toolbar-inverted.png b/browser/extensions/loop/skin/linux/toolbar-inverted.png index 31c0256b3e321dedfdc8d11a86b982b99eb52cfd..0eaf78fc3a43bece27deeb8645b60ad67d774bc7 100644 GIT binary patch delta 2542 zcmX|>dpy(s7sp+)E^5_RC^Uo=*~n!^TJE=ypIgY>l1uK3A$%lSE?=2qRwF}=P)%;j zC2}X1Lhj6EoBM`uA(#F1>+$`)|2psUdcB|LoIl>DNN__SRSGyp+0v{b2%Zx@f zN}suRDMqOZoVVZ?$5@_}yKh*p_7^6O`r1tVhDw+g{BcrC_O3CAok^?*$vk0 z*!%oWxSqX`K}|>VeqH{BtbNgIE78IRvyiq&CIWw4HvK9V-Nx&N8^+3br3lDSjmn@vi=- zMml5QDzD2?Fj@!UG+T}rDN}m2Cxd;YmkpL;GfDBSNW)ht4kFc#Hi>S$+-2-dX8)q? z-TC68k^h_$J(LqqzGY4ZhF%?(H8r*Lm5337aEJ>f?)b!v^o-o0Yg`IfR1Qj})5{mS z!dGJ{!AT18^5_|8)5#}%sN0)Nq84T>;+zSAkKNU1iXO3e z3d~dEE3%}O({?uwtmuew!Mf(Fa|*K^z2322oUmv*JQlCcg?iox3)wH?#fl4Q5(weJ zNP=VVjJTtd1xz849lD0Q$8>|!V_up*=!j9&<{X9K$QYDroo@hC-HK5$dD~@YuE0J2 z*=)zRF)g`?MuvZjz~|Ed@bHJO$Yx;ScDXG#&vq@0%!znKaJ+L5mH>&oXOZyxVJ*ya zX9|4BpU{OhSZsicI@rPLzwS=pm4gP|l`Fq6cu`t?4BnOnKJ|~2+rgiOuc)Cri%IwC zg(T4;VcJ}D0EqKs`Yc$sQ(>Jj>^n@k%L-awXC|M(cFtdN$2D}}3UUEETF775R?|s8 zdZ@bQ%aP4Lt^3<0H*o=b(A96mswlY(M+Qy7BT+FZ4&2 zdjy8A&sYJr$~t1HH*?nM(sWIGe?s5-mkbjB2IOV-2Jz%{%p2G@Bn)kS1Qm|C>_8Ir@$e#`lLpO*M=B;w8E=Q|L@T>v!Xg|9Pu4%VwN-cW0cd#kJiolLq_Kxc916#_ijpRrl2p z_xvPw{CTt*4%cf=#8X=h@(2rkmpMMyKyc=uGjJaQE!@(Yia7FYLO{f87yZ|Qsv28x z)XZ{Qq#pkA<|hh_4A3tWKB)Gz6G#Z>K)-0~{!lP9jY2qi!Y>DIEGI*5YCta@ds* z2#cibVQ&IFV7zWH-(y>U0&q3n-?fT{Ar{#}!&CZ?fbJ4t6tfcbt$+`;b@9Nl0+4%P zh^Weo<7WB@oU0{5Si@&oP;hjA?cPOtj306S!PN9wVt*q_ceCUyD)(Wa^ z3kHPMzgUjvn3-tSsL1L;(v|7SBP)*02S+BKs%79ixv_{hFCrcMu!DH1q;5j!93d+M z@sm8dkq;c}Kzasd=6x*0CjLgtS$;+2{^J?yyoDUAvnw~>65AIwEFExXQMY>s;4gM! zGXlzmG`$O9XThznI_>x?SYuH~>rabiVKc(I>rHRCcC%(jD%=Mt+KpEo&zEeqi*dOJ zW(st8D_GK<2j_?n>ZVCD*};f325w6ia{~?xn#YcWzE^vky3T0Yk%03B=PcIVaupnWGTW8lH1O?I+XMgpiBMa6 zfjyQ09_M*v_8L6mLxbGiCQhV|ER(>4=#2+F-`oBjt&DxtHhQ=EHBNAO4N_(Trk{mg z)(ZE*P;dEfcjA`NNn|moW z9jrwSYJj&U#Z%MAmj)`#<$rS^Asj7jCe_!L7#e=uS0;LFtP70P;0BJCg2ncGg*75e zbv^KF|3i!Ai=Iv^O?|N8iwCoZ>Qxuv&u7`lmp;cn{uyV;M29Q}{YxR-NBCVZwOJlj znk!@BOY`xP?{p15DHqO#YyIJc7Usa#N$55oWM!_s zr>PapBWt5WvS^p6X5;^6;Nn7U@V*4UXU}idc(r^|9$Wkq-6$lksJgHk-ShiG5&&nu zsRSy;G*Sh8C5En_;9ohr${})6#WXgNd#!BDXltbE1Qbl++CRqn=6Y{+Tw?zVHE0G8 delta 2724 zcmV;V3S0H}6RQ=FBYz5VNkl@2O{jby3R%l*Q0WlDU`(=bgE;GYT zK@rId%Ck^TaFY>A!r=`JD6oe!uVc>%(~%=jHv=AALPqkJh90_XMd<9QzCaIlTXA(lkNW>;0q8~XZh^xwT}HUsR@!wec|;Su05XhLN%S;tSDJafIT zzwgfQ@G!t0JFP?9)D(I&G8I%$^M`yqG8v$g#MDwC1!vR z!vxGqO8x-4 zY))LdZ}s{*iS?a&2^k5@pcyS^bxwG7Y4=j=!7IziNMHudXgN-iTdI9uZMOQR{Xj+n zGiXN38Nc#S^>e!|*5~#TG7^|U!{+dV(vOst*O4(UXyJjEA^m81Wj!?Q7cc1-Em?8? zFV9S>p@02yfIWJcK?AK&&JLe|x=x9V@QJj4{ybp&&?cj0I?ga-8Sp)cLP$C1U|vp`3|p%IoY42pJ2|@^iQlkHn?PxmK&y#$9ZyvR!}m zYLAhtySi0|i=PC*|6fjB{eS6!rzcFUpuM*!f95pUqla1Dx2Fc6 z9VsWq;rZMSiOhPLUMinCQ=RsOPn%K5_MwG`&GCqI&fTDhuzhqUf`GK*Ir=qUhZ?#1 zjYA=Zm8Em^TurrBc-WlT@$R{Ydy;HNG|LIds$HP}@@#^Ut9LdmG;FVr*K;-1TH#@H zCV#re=Zarf+Qh5c3Ghs+(0l)_*2vY~$<+q0<;V40O|@2d*qmpAlXIQ+S#3^*gaG@` z+w~4vJw~o}$W$5ZGdlEKO|@2dxEwAhy}G8hh47Y(hhG)FkVdYKiAzxU2ZhS{8hDuB z#`F^>YnqKlqj}m4w_~)Hp)Y_08ff8RbAJl`16#Tz5rk!)gLC10N0*|JX7I2%FXg<@ z@{jML2*)JnX;q$4&W&8{8ahK^@8uxpYv5sX(htS7lwDszIHtKdR0S{eXyj`DC|8AZ zfRmiBfrrfzEh=saTyvRlJT=9uYLZ7nBUe8=Ge%+O7%1m!;9+wdKB#SREhdEHuYc41 zs>TH;H*&R|I6?80Yp9&Bfrrbv7j*fjE-m3L)s?H7-s^ogx%yh~^#S@nKrded4|^c` zJ>E}0?KkLt6MCbt30ipAoVwW|T9q_{uq<|(c_3+q>!Fcm@US^=mr1mrHN_B)_2m-H z`zK^Kx%&NYWCQQ~N7~ERz{BRyPk*=e*o|buk>8xCDQI1MldHdKeQ{uSOJXly0}q?y zmr}2N;Vl*6@K04}0@BXiWuArAsPY>sDE=U~7= zLLLNoxE%h2or=(<(Ofg7ty-%r-hWVYO3|RD-}O3rF}nKGXS9XIrRvnzR=3eV$%deX zhdt2Yua9>9@{4Zh*(px=#DBY>FMta)(89y!vVUh1w~@p+JDO+lFUy(2Q+yOh;mg=v?67NnlN*u8C&JbDOPc-Wi`B~hy5 zzx{3q?r?$PYx@`zrc-S1#yXC6c zhY1PDyJng?cdgR(&4U`RPaCwpS?xOCZAzWjr)RV?*OscMMz3xY@97_c79RHEJ)&b5 zR$43;8=-6Gm-(k?uYZ_wgi`)1hbcw*d-o}zffgR-p+h8#nO}jKy!P93zy2ekm@$N6 z1`QtW*c|NX16<`*S)@%95k>g;Om=ASrm%fz;bC(;!ksH~E-bL^Y>g*NKAt7`b0uvG zQa}SOJZz3Q#;uZGrtQS76tXHiTrg+tPN@PKXyIXVCW+!I!+$>1+QK*dOk88L1#?96 zcPgNP7M|ba1TL%$KVq>-$_Q~=nJ=8PdY=LsXyIWW?!cBWa`RP$E}P9pzCERA;$E@< z?CJji&6r_93lF>uo40NMq8pkY&RM z^*I!_53NwnvVV<%s=W3DvP+pj))h&cTxUOj@8`mPeTlRgGiaa{%6VhEL{)7{B`1xk zWNY<;CU42idpX!|tBG&M3>s*Ka@^u}sH7Y9M7mK&{8LUgO_&*ZF9-X8l8pn+B> z$75x_D*6~9(MN40@N-4eM8E&v7xsbwYG}p`8ff7e@qY!*xXF%%w}*x-gtts4laXTL zYO~pF%gox*P4xu=FBYDlIR&?G-$o9>Cz^hJ^frCp(h9IgkLFl6Z{6NS_4|Zg;Ec1I zTzEwqY3YlICPG}3McLBbeeQQ2yQe2jF3kHe!SYo{BH`F|VWE*?;_5x^i)>3i47_j7 zGn1by{C`H5Vv*l@g>Y03rWh$EuBI1ndu>bDeRG}|?^r1PXwVYz$!)?R+3>TGV&ZDq zMuW|D-nRSZJUPL!aNgHLmbeN+IOZNP87U^Njy-0!dA`cr7jyB+TeEY@cu(wxu5Oi) zUZ8pC&K=87UEPL#Mf=shv*t8X?cV#mN=&Ao_yL~k;Jc7;!`YB<;}uz?rH6w03tzF?bF#yz=SkWSR919(F#%iT zafZy=IOCqyMDt!{q9v2oX_+BvC!gt~=DfZ&ysYl-s{|BZT4pHeNHU(#zih5Dq+00S z@PB?ml-fl+W7Hf`Ty|O1r^5tXgFy7NIXfwUset(*y;pG72)L@Ss<~xhUZsx>k8TG-TYFuvc zR41YH6pwNqJ9~GBjLlWC>esVE)gB?v5Bqc3IeAadC}>@({;()o?HA$t&^dMv;*5|t zm1>`*rRqtdc@Ld4-ep!sblydE(0d2eQ^XIR!!KT>lu?Q)Vdy<1sg&}E&iVb%^BpKh e;Nt&)JmS9?5k4gPOGB{$0000$v@S_Gs$eD@f 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 a2=pB!>-S3PE+GA+1gI%%Jt}!<5%NDZoQL87 literal 5637 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 Le_k&CF7W>W1j=!R diff --git a/browser/extensions/loop/skin/linux/toolbar.png b/browser/extensions/loop/skin/linux/toolbar.png index 8ba10aab2339e7978c41bd52360ca4e261ffeacf..188d92816ad66d64641192bebab07fe4203b344d 100644 GIT binary patch literal 3974 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 w%#(41H0hX+cgfim$H{yrpA2h`8qD~Fk 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 KOpAjYFAY4nbe9+(V9gN zVx?w<7{7Sh-}}Cw_kI4j*Y|r}*SXI3oO7T1b4MEJY0yz~Qv(11IxS6AL(+AQbnrtc zNoSf4PZI!ui9t(M$@n>Ny}$MwNQoAJDVw*{5lg|{L6yWikr!SpQohQ?WqST7nMzuu zwQ^^ML%+`WV$z*_!{P?SbqFgZ+H6ts0y$S}lKd`mW%t^DM5O3U%V#d>Ij5Xy&;-H+hdhILDQ{7S($F^uj8b)o{{}VEXcCyEpAW@NGo6^t>JwQ0 zzQ5ZPO2=0vEj8)! zwFy_g^~n0_-!*l$H_9P*D8)xz=lU}qk90S%2TGN50=SUw{1p3jsxuOQJt2%eU4-s+ zEN~^<_w;8*ut%9kI^OXLA^7Eh%i6E9lAp^(r$&ZeF3}e6sewa#8tUo|$r3hM&#EnI zWqIPT*5y9WbanfKr>Ccr92^{`isCz~M&kjYSwv^#9qI(8*CZN-hIc0(pTx>9#8|D& z*2*C(w^RG?r^x_sxAPQT5Y;k+u+1><$v$zh+v@y|VIYw_juzLWurih2Sk+M;{7r!D z2^EV7t078enFX~rr?jcPDZeQ+M1M>8uye#bEpL?rL!$v-y&$75=t$4N?}vft@KT^P zRr@i(Pzjz_#d&j_kwvguL7QPhl3uJlLQGN-V8#|#@`AWvJK@|VSD1@C!M8L*9~SBl z7*Y8Z5f=7htlS0(eILaLv;!*J3E5xy1|jurm;Q#ISsc`c2F(+UU{fA1Ox@fwrO)<- z5O1)w%=BQ47;Lj2w~pP1`K=19kLVD5#Uu3PL;V*4(&0a)j~;ow$CgF9PE)3^PsBS7 zo*WZv-3PMCE@@_IYiUJ7Wj%|=vZ27bvYc6fS&q2H)@~{pKq%@--#Qd`3sa{n>Q}2~ z;oETG!kI<^OUu;K!#$6?1{N&8b6#mi>$y2qBCT%edW2^$;WR#fa`gP?q@S99EFX&D zlW*X*9e3NBSG!)ld(R<;ydE$jNL-koH)P7W5>%bQXWW~OgrjoIsb4DtG#o)P%8#y) zAP?@m6#i~zFT&?nFu6M3lGjkvs&m=jlv_yY3aYBFmz!}-{KitotVwp!baP&((W8Q7 z1@YK7{2Xu#eD-qG9$OmUQsQdA=#`%r%8PFrX=f*OY9`P~US@E{R@whfcpzyK5N^>U+l{F@*TZn$b~7{cDhR^ZyU6O`=Zn`w9b|L5T9 zGc`y?Y(2Ko04L#n!Jmj*>YxFKpf?%KI|Fjkinc3Yb0G`{BhX_fJXb}gZh!oNha!iT4n&O5b8Zn;B*u?I^P%uq)qHvGT#}@o9K1a- z1M^34=QCya1(LNhY*!+4diJMXk}dF3z4AL!6&%1Z&u_h&`Yqr&)1&eyxcIdFH4|Ha zv|dyPY*M1A<4NH*X##*qo}d8)j3Us9PT>%jM=KxrW$ry&kN6xBdI_ZSNz+RK1{CV# zecseM*r`<^gCX9nBNFIZ0LYZKmEPOD} zSU3*0@bkVH|At?bR7B^0kkA}pWUttp^+v4#V}=e-cMBDrDLzUO7NDnfYJ>5a-LhDK z-r+GfirmR~xs8OmZQlM>WeQjbmIT={X)rj0Gx$)DP&FR;DqdG#fDj|Q+wRccVvDrt z%vm+`{2A6LNLgTK4A&aK>HPPVg9@?vyL3ZgR4lbXk?{gqsGbB|mArN6J1}&FhVzv! zlm2}$<5^52^nDo_q>w`rlrH#3M^jI+vfhinpN={`;IcbN#MLRwR}1(tN%QNDoltuj z4{D3$gq~ArtYoLVcp}tojVJ9KtMswO;^@=Xx_{9erERBWBbF$`bdl^ZsdUL_nJOM3 ztpzsG8M^6`ETVdS$z-3Mr)ow!qB*AQ7X-(LV!5stymM?vqYJx^7s+)J%Ba+V@G{_l z$j;u8+M9x>-vDfCDZ@iEdas=jAkt7N94;fD^a8a8tkW7+r}mwpACQ*pPjLkwkcM}p z4Ba0XE(VYW-7gWEdKuhqQ3LZT^vH5{z!!antJGfd@f70_`t;9yTngz$M82203MKJ%#bpAQy`lhU+(qRjo;lW$Df58{2J- z-TE6M{A6c&P=9zL{}u{%dQ-Cg(?s!& z?gqX%9g5aPo~q$LVqb2XiUw}?KO~|x!XNAP;x;loHz!KAzKc3R8nUv!q9a=>OOeO? zLS?Q_$_Gig1+#(co)%~NF`7-AZizez=j(;ij`FLQlcz2+Cn`2eqFWGf!=!db^pr-UEX&rm1NLCd-c7c7-E?V`rs%8JVQzew)wAaClMizD2EH zSbrwZfkVE$r`3z4>*9AZ;yoH|2WUoJ4xUk-?E=XIHi9}cqaF>EsEr5a#C;%7c1m}Ly0b0eg`6GcpP=f## zDekK3ZZ$m=WJ1x8usI04o-*iv;6$Gvfr0h=c0`oExI0?sN7{#%zrSUXoVVY~`gAp! zZ_iMZ`?k$c?rh-QJf-{TmZbU-%=X?(el-7+5kwY!%_-BpayH?9m6zJ`KIRzH7H|Og zD@7mWs)y7_*LP8IzDY#4;iDJ+m*UP`)h2zcl^L68ShWvi7v7KLwxl^@Y+|8wDN0Ri zgEl6{#u7t70-VdP}dThBm!s>iK=vnFw4(@T>$}xPx3ynZukdLbo=L0 zj)BbHW-pSsN(6ja%9{^ z&Km@a9D$O?IX|FetC97IU(Qa~*%m&xl2lXy=4%v*peQw=pBxAh8@|_vwfI-=;9dw~ z<>=C1AvM?GQJ(A`_3Z9v`}cF-^Q&JD5KivqpDg~X_2~ZYyoRUPvBgjD>K>&jE=e`n z=z2>USQiE7mv)M<%`qw}sx4o+gx!mVn1G>Bc; zu2?1*lwGH!mYbgsB0uUaMb5-Q32BM7=KHQbi@5_uH;{Nc9}ljO&7`~zgyA;66<`sBQ~i*O!S8F zS$o5S+>I|q31ZI>AczAft7W&1A#k*Ee;o-1F-vr`x0}ZXtWuPdZ@iyO)c$r#kwRfj z;X_6lK#d2N8$n|oijhyd4V`vg83wLm8~4tEez_3JQ%&=-eYJY7f!FmfTR)IGEdHx% zcn?UN)i3+ZeLUK`UZo8r7LM0_!xdUDWz01M{IF?X?0(A_##dt zPiXAW=egNhc3hel8vF>a6HnuR1w^WcxvU1Z;15f7gAxP3)mNMa)MoA@boOn}pRSem zFvn8Qj)>o}I(_p(xBE1mHOtTMDvwZBNhO zMI+`hktxlakUH>Vcn+rCe9yEV_RK5n<$gGsAJ3Bb8F#-wi6pul`6&O9Oy8`@va`Xq(2b2x56-BCiO;#{cYI!~zNid1 zpls%CF+b^zVH0DJm=+mUIwEW>@Q!OWU5tPKa-lQUhOOFrr0gbv{FVHW()3YezVGZCj&Ke5$UUe?vcinylFQDzmS2 zo3lZ~UyI}Ml)hCDijx8j^6c|nf9yJi?|7M8SH4cV<{rL z#kbY#^8e6Lol!>JqUE?Vx?cV21Bm6h`NBN1-)5!lp^AI=_{R2auuDd>Tb!UVC1Q2p zL12*2!u;d@v^_R?Z|{}id{~_#?etH(?f5U{6rTOT%S%M22I$<6CKFK}iu9N`@|_yQCD5?ivB%ne43oh786P^e_PfgR)vhK~~3i^)%N{N9QoDcTN3dFm7(_?Jz&kE#>3<+qe5H zBV5zVhi5EPObj^;HBn68zv2tUv^sP+bj+0H46zl*H?p0DHjWlEaaeJN;xdgIap4SU z>5`Lo`W%>DnO*NL5R;>J#SeVCkD!4!s6SvI_=aBR^T9>$HG?I*?bA*973fpjmar>_N3>_%bM?Hv{%y2BiVp6bxlun5J zA2^F*=Rn4eauPf-| zNlB5&Es(+XEqPvpRmn0QmS;~qc6)2<55is~K95k6yWtTpaujAfItk1c!)Yx3%+g3or&h!0uGSdtO23Ngu)I8q3C~4*H{QsJNasu$7Wo57> zeT+$9+4_LOErmzlTNy%+2xTgyO~K5yw;@^NW>`zn*5=9tF#9|<@om?v1sDrFId)l9 z6@vWGwj>A(nP6=AyNRBh@Jo5c8>q9~zvY`YV1))`NTnm}RzMUjeAKP9l=s0jSSbZV zpYe^U2~CKjUp_(OvRL7g1m(MqJ55){DjL_6Cs`iOmZp6n0jR6Jdnft+{d+fMo(w4C zpI6s2QZ(|Q>p}gTCYp?u<##+y&2>YRaTopT@;rm{zB~uK@8H6aM!FCM2EM^?ZD(y% zldcqV5-xUR=0o+y^K^;?875L{tA6&M>}W8^0{dA=FDaRN+Z21RGAB7eqom@6#LmtD z+D6zJVsL(YvCE6uOO=&?p!K7I6OVK}d}UXq4dn6-#U{GL&g7OM2yBAVjSu{caYl5Z zwHC!cORZ}}`AyE;hW9PzoH~@Ts})Md9#zAl6?#=O|Dx^u-m^T?>n{oJ$BTOKC}eX; z1#?mY5_^i$mZqk-)kGFYM#^7`i{Dez?@f;eXLiKQ8N`f@kBg~_hKtT5*SNe4at7Ua zw{;CTIrh<3A}Enbi8aJYaj%3EJpOdCuID;H6F;Y22)}kw5xhb^trvKVoC}Tl_YIjw zsPrSf;ms|tjH;@t*;SlTQP0|u`X2KOUc<(c_J#&GBFfp;5HkgBM|t@Hnn_*eyXT&) zMUX`^Ep;3#R>2hO)ee*9zN#Q66|S~Hlm>K?x`P}1KAPKrY`W+b`rv3kQPTXNYLK!T z@8H)38XA+*Fc+rwbvaaUn^p{E9)trb9}InFT+f;-e-jk`<;#~DZ4I%~4%cltNQ=|j zC7}tZ!5?uynQ3SsAWEC^1Z(=Xaq=W>Xp% z+}1sn=w}JKQ6C~4*{AY!vSsz+lrOuu@T!vAXktnC=we2Q`mB4zL(&g0B1H^4Yq!*q zZLM=JjW6q?JYg_ep0d-% zUyF4l6epwcMZ(giMBq2UAU6ZAe-Q42sh%YF#NhCSyU>siN<_4Nemj~|Y>Tebz`R!> zhDewZUU<~X{u5dk^zD3pa_fkSlvHyl@3H!uld!NbwLy@OW5*FSk_K{t%HQ(}G4iMMyUhx;XpU>4^ak1FzE zHKk^=m;PSajtgZ(jaY;P?LHZ1E_I8T)Rgk97#+JWuM3bmLMFMtY$+tEGv&R92a@PK z1Y!pna*CjOLHp_W|DvjuoO*-ae;s${M9bEI6DVR9859I2XM37xm`S{OYj}QpPCH8Y zTRtNucNJ@XVq#)pIfjCq{3}qRumNLk2&7kM7O3ain`qGK>z37!ySFz2YRKQd=dY#Q z4HlZ`CDT+NpYk6agH~N;dsKwR^glY%uYqmtUNj|^UhM7dl92nhpLIjABSrMcmt9cb zV)aU5M{<2>W?fLs^!FLhCsfpf5DTo)$3t(-`4ns>%7ReU>D-4q{Gv7DcksCnMb^Xa zDX9RL4pix}e-%eBDFJK=cEu}Uki$dYwC8Fn-E%N~Bmfc}t3cwoQkpcd^^zL6A`xaw z45kvpK#Dtf!^erZ-z?=qjP#k?thH;emr+^9+~r5c-0SP>hvY5-!o$QGD)CaCKp?c> zm909?CV-NX(xGN4icJ{GSl)uME?LRZz{Vxp&Y|E>$4+F{JUQ#@etGde0=4abmDfvJ zAnCejac_@m$ZLm&#A->{ps|+p9DyF76WBiZ!vi!Bs^Nl1)HAEkv1Ajk3`YNJx}MEG%b z<-hB0m?Km8(^GR-U-fd5N(s{Uk_Ibd5Vh1HmerAW9+GhMDcY<21wADwRu39~V#r4>Sz&^%J z@~v^f^x@RhMCr>9ZmZo-rY#<8g$p+Jkl4KjQa$h_f@lBWY>fC{-e%76{JS4F@>P9= zCAbbBf&sH1)p^`6gEBaiA{8IoFen-@-`^*_@o-Pp_P5|MY-I7FrkDOJ&y)<=N46H* z-=faX&np%=WX8E$i5ET+{MrbqY0SY)|5eZATh)RQrgzf#n%)wA3mU>~dqUsd>-x;J zQ%4+~<#g;`*K*tEnzGPhc3f~}D1Y|E!QN8jVq>ZB8mt;=V$x?J(l=*RgRbfA?XBMC zk$Iq`p`me#-|D>HZl`z8D*N%z>kWDJQx6H-3?4NC+*s$H77Q%?082XwQTT10s@{i) zz*GDIyocAGf=wBY)dcb7CTaV>qgwoWo#A!;@Q``~R*T^3WDVO6&)w_{Y_QX=Zk0Kw zsR%rSv^j-wzXkvRSs57_(}K(oHHsBu%`TC*ep$`%sDO5Epi(*Z}L~2#>U#pa-?^kHKnS zcS13+bV+`vvm?7PR(*4?YG`!tUfNoa+bO-5DFLfHejyum)l%l2aXRI+6Qt(0xxnSI zx>`bhldA2neZe}|U4YFnxc%&hxLKr-TTkg$McE{ZiERkEH&36blt^#N!$WGqNG>TU z$@u*FbN+%rm?3c&=x}?xNJ!U}y4c>-Z#0$rceB4^le{ardLuwjU72&D#y>q z+&8GgU>AnUmcwW}?R1rGh$t5LW`78nX0GOi`i^OrGxw60gvHm2N-?9*d}@h0k;c^@&_(M^yC zI%+68flo8*bdyDe#f5dP3XCMwHFA&i4$?1`Dw$WVvpZ(i9sNhIVV~(QMBMFpiBc#g z&@Bzm!$lm^*xLmiN1GpcO}5-7&~DZ*s-9@ajvPj7!|9y4H=B({ zJ~e(LbS)KAxd0J+zu>{#Vw6f@T-8Q52Qj9O9xB__IR08qaq#j%E_zJ*;(Rt{R^c;c zl%!T2rHUh)kiL_yt7_npk?c)$tj|J2##sfZj>>Zc!g(6)c>2K;0V`7yF*dL(PQ=jOov$dbR5xM>P!w3Z82xr5}u}3(3 z=tdHus5y85q!L4`-Nw~hZXhDX{JFS1GPg%7p_|fCZh&9X#DQf}9=k6(18Ks+Vs<>U z4#Z^&6n>wRg30~I>gmoApp!x7p{9;Ozc~lu=mYfW$PqJpMa&Qb%e$ux1Kzzsad}aq z?Sp<}FJVw+ow8-e3BDLl!_=cx>Ce&l#PT|EE< zoNmQ7-RazWc87-ZwRLZ#*WUl_w1VNT0f@H>0bhpnE1;{5wYAf4Bp%LoS6{;GTDK1- zi`eAGL)x5idlo$(6p8Pmb^12EX9?t%88*NE4GZWRw*|0%JHQ1d_ShBQ-R&X0U-K_% z0jdVBp)cmi!f6A=?w__$f~AM!#P8;-v~m+^|IB6uQ>=Z+S)qXBml-{ho7KfktZ!aU zkhA!BY0Ce14-n0&zBPO-_*}VHu1J-C7C%v%)z|y^=lQPdin?Ge&{Fz3|xPSTfOb-zEK>L<&i{P zybyK{V4x`gOG5w_7w`7naX0Ns^&^LmFVJ$7?XV(4#qcV+7U?C_Wk1-YV9db1(4n{+ z&TIcJI*RAQDlu&`66LFFJLo~e37`{2NxZs z6TAj9Ke^G5zay4M5!}3f3R|P7UKhf_ZP+aP@A*85%pBTCL-|8=wEoVqU+vha@Cz#%RYT?fxKgq%c1D95|g@edx*<0)_!*}bZee7@ zE0q&h1bORF^(A@f_wa$>8*@q2Bte374tJ#DG^0?|Gy=4#Jcy^VL`LwH%;QB~@Tz`g zbWe6sx=f^)3}I}pydx={G%Q{rH_217K}MASr%Lc`bAHvUma2LKPm5%aD5B!sk?!Ou zvXojNB^z*G=ur9+ySClT&+A6(|4V-_jh07PUhPl8S#t;f zQ%W=|gRnw2?VX*|xeV$HRW#^vo_+D18;|T{W^46nm0I=5enGIa^X*|tcF^AD@*vGQ z6Bok)LM3X|Y$T=bduR8|Z1j9K9UQ3I)r*@q%FXgrMb7zUVZU z)qup)BO|VEW#Jz$yA8BF8&5#g_|MF^oVlT+LjEYbjv74f@p)wnw$@TSyEFkGu1he{ zF}wTn3Xy!@$P<5~IlztK-i_K9CN3Ik{D8S4!KTNPH@mXpLzB{ITXHTYT>}GyH%dw) z_FvKS5VW5OH{F-Y+r!vaQBl#q(k|s5OJlu@e?;b-zQ<^^SXesg8yOL{+fp0*MHru4 ziE5KlhV+r5`}Nb-NRwyQm+WQ`w%4j<3|x=Gwr!xm%9QR*LLxS0-w`y)Q?Jw5D=N7_tIc~*mNqu~Zl3qXcky>NK8c~MT=apj z!JdcwKQzRLhu(3UQ)n%FA@A@!d0YNg=|)oo*=l5farmPt2-3zD944l9ZrQI-fvyER zpQg%o`WKs2XlyL5f~$CM9lbZTNW+lh0XDWPHQi~df%j-po6_RXE5;^cCMrh}wU}^8 z;=lP`kaYqpn^UMRkMyE`0;IGiv z?U=Ipp9Q^vG1oqYx04>qTGzzAiBHa7Zyza@yM%;GZRrFfTNcQMp;;jd6-a1gYZh1>8lNWm`)wRCq@u=Q%pIL~|H z5x8*fn=&jYI_da6xvji?hbY#`(`pFe?zpYBfPc7N_MOnrC#?Yvm_WW12|}T*`K}5E zxaa~?@wi4P&jenSfR|IBcDB4ob7n&AnYW<3X#&S798hXt4DTw1M zh=8+EmgX8;pi(RntRZYx_Rzi=k$h;^@UareY{;XoYb;kKBqfDw&ARS*^18==U*=00;6A`9nR6xcOR7psqsw!4-IS#6-9N0S~-i*{{Z5NRrc(iI3QNbgNLDAJ@C=>(7>QWcQiq=OWt_a;?BkSaCw z-a`oxk{f*A?|aX=?c8(!NqEK%pQnqX_`uwc%oE zVnWE!!H-%QBFCpD zc*t|dwpzMguyqB$oHfN9@I{(XR<`syPwkWWglB@}(${*k3Jb@8DLwNM`PL>{oB@bpN1Wx&yUU#FezcEI6ncJIReXaD`dLu7|3C|!WU zf@b7P!7VHQm3F;yPJOljOYgkoitBQicH6Sv%254K^8NV+ab zpG@s5J47-fef~YgG~Hq($|GSuBAdyEiJ7trKNn|ZAS7>Pj+W7$~(iTAPl4- z7~kEQdI*gM!%`30v8l%jbq`C9{hF{U*ESHy&KAKOR8QLJNJ);TKT18I!|3m7M%?=) z)U2#yKlN{I`cMQbBk+46ds4~fqA5O(L)MP=g}3@&o*zj1oHTi#A8izfEg#Kit}q+j zMIbp|*s_5voY|Ag+0g$_QRY?zR8ko*`2#eXDhWY+lRRI~0XJRjHu|xebzEN$@R`3} zhj%}0ui?jHk5m2cM%lC-YRGg~9oNL_nt+c#Nbzs-ngDv!9N5dnl_eFnphra~E%E^G zSe(4oI|=YToTLzLjvDI(#i}Sv`<30tR8!-BPv$KYeuHt}8jk`?db=@%B~%bPg#0{` z62;z|pssHC{q0rH+l6SSfv;yYxBte&o}k8_lJ{EXXNeFk=#f2OOHB@%VhuLs`w?Jg zNowm#?f)-f?}PGSfmoH0Y|RyP1Oq?jWYQ{A((Pcet8_8Cl%ULc#nV|u!-otqF_`|C zYO$WbI1P-aNn)O56yAJvh>%Tsqug?I2ytNzGA|UO_D`TD{9YuW%}m^?NQ^(J&3K0* z*pxFk(C!X-0%1ovZHKf7eW+qH1NI>!!S{L%9<2x1%Tom863XvUrgGhvG-%(J)+1Oh znsu^MvM>qUu0fb1U4OLFvPP&yFrVmiO0jx=_JjQOqmFX&=Ye((*ZSRpO_?HrlQTT= z8^o=Di;mFvzZM|1aLrNA=LYx$T87UV!4Xqaj}H2{GmmJ0aiN&5)hipIjfMcJbws2_Os$(i2Q7YBK$twBU*b(sX;t%eLAMlcvLD7j+m4+>?WwFT~H7idcI@A0DB znjS~&yFLS2f0hsUFQSnMCMV6y3_;pUCRhKeB|QK)5nHZY@^EUiPpLic*1j{A@E@V9I_9b4nA zv77Z?F>s#Ik52$K_#5AlKlU^+bB7r?uQ!-LW{+cUmix}7e|MbIGLb9ecn7c}8eYoQ z_~f~SNRktMgNpzZ$vRXqvkR6_25eJ1^5#q%oh(x=aw2D<+(2h zsekpr$ldf>es*h$7~!FBNApXk;-k;#V+imIV~})lWNqm|p11#;7Hhy09#uO3E^1K! z_1(eT)>>b^f~sgE>JKBqrVl{JvuD*x7ps3urg5P^uoK7g&7><_yj_YMe&q6>xPD0E z^uKZp0XNwsQJjjm&R-W#;ck0Z9a~S%gzQoigS^Anx$j5Z-;KiZg!+sLLOR;3SW}?8 zDz{IYSLG;`gWEZ7W59X9k(kfPHglrIf^sTOLrN0qIM;N>NW1Yf5whQf!i{P}$)Y=X@2f8{($L5m4S1%dMt4vvzQ({9fdK7&F=E_(wXy&z6D^ zO#1WZ&oNJB5S32=CeDjL!mWl}b&(v5ifY1h?k4Vls8VamjAD;DtxNRF?%~@DdJX65 z$6n3t51IXx&V4T08RV`PmU3`g-czCV&oh*AkSG^@0X)bVZh2=4HqEMuPD}bGq<~5= zXi==h9zuC>iv7$*zb+`pVIs&YAU;Yu9*9WYik>|!(OXqxb zmU^XlLtIS+S#I2T;(DuL`gL4avkQE3AV%F9q`7l+NF=2^Cc1aPMCbVlWX2I|lHOVS zXQO!Cmn9UgbjrE$`G#B0BL7LGaKjaGTbDoj5qX=W?KxYszl8J^;>)9MQ^Kx`=d;hB zzW((^_SyIDv&i#DE=k9IcB^|E8(wkm%c?X0CVi4tg4hBNuLc#8w%0%36`ik23VOGF zO*xyU9CKqKNg$#clfSxDuBbYK&_ryR14s7o@j?1kjlYuEV`Hm^sNjBgW2;<0B-63` zvOtL?2E3hvLuyth{*&{c@H?I5mNGHxeN~jQD(Sk}%V*kx-mzN+v$Fd3zph+Co_T*y z##ZKcIVRBtD18pmIv((`JldaJybeR}ghB7%sPg>?!#Tl%XrrD5Lm?!@`MZK|Q(J7j zA2LJSeYrvH{`df7FZ?~qGmxG4;!la$89!Y?=rM9}iJ&`oJN0y+h(iwvv|07wGpw;2 zu&yA!Xs4hLVxdgZlcTJR#x+9@>{m79fYs3>%!A=q} zan8v*mOCI(R)O+pql-80DQC6mMq*sRj>60NP||h^qJa{Q+8v8HTpJuBBEtg&Y$0{o zPn|mPkej`i)`l{ISd~km{|xs)B6E`wV>2_XYZ0&5Uo^OFXy+r5a-=9hp0{Muw;DeB zz}+xvdoA1!{Xb()@1yVNz?-a8sZ>(VCeS|qX`R{BUwuk-1+lu=S!c?yr~9ZrA7P}P zL(~s(R?_yU7&##%q9SIIl`_Q41cF<=4JKzypS*ovB_Fwz_p1&Ce`8-=XVo;y1b6dC zyIXWb?mrnC%-u{rRraP*7sPJ96Xho51RUJVvb>u9q7J0q!?Rs&wTx(Pxfq%E2}n6B zubuROGW$~Pr&{clYOwdY`Ge;5?x)`0l^i(}XB=3h{i!JFByjE1?W-|}F#JxkscWr8Pgk?js_5meQlUJpKfUx>16h|+mS702zr>qQiPBc2oM_MS+x&rp z*A!6)UlmM%>Adm#OZstsH4fi#rYgI?r$M7s;0d>Y3lTT}z zR*T3ttJu!z+OUUct^}ns3W23&b6pr39<2L6WgyU1Bc4u2&H8u*KyZ%5a%=z_0oD8u z8F+EMnZr!o0VFv%Y+~z@1*7yu)X>ndwL)>f)S&v#`O%14>tOS17YuYKolIR@FQw468JY@anzcxi~D&96AMdf8`DiaYX#E9#jXev zb8~Z9rO)>scpvgadEmh51yoamjGG=pa`wC>Rv_{>}hsOM=d#fZX~I!L8b``EkxGC1CPuGS*^;c+wO zSXPi_(S3`wJeicJ1xs9WS7HLUEXdC~(LjEQaSBwTA^+_(fo+}-Uro%8mJM@9Cq&00 zSXu-d9};@5^9df8p8DgTXyw!|8QpsMv|W4pltn;Nb9^uCY&9`I$HYPZfn5 z^N*mX?;B|?(`?f zGLk;Qdr%X|VU&)B3YfkKrd}ceUyNBMjGQ7yby^=ca!E-p9u}nV!<+T7HkekAM#q^s zndylx$Bowd?@dB_P=OtX+P;koXx`aZ$k^(4f3c3SzSh;b1X<$i8T;S#UMQubr@fgy zG96XaAl_D$gfWa;^z@Ytvmy@Vi^hh^Fj~LObiO>!Qtpwj(YoANmp9>myuK@mgKDUp z-U?<^L;Z$p|4v75O|drSz&-N$#iokAg!{Fz@g08rV`$s3Um_gcxu$7Tx(%(lf~9>^ zTg#b-4yOfEM%A*>PVR>gE3=4e(iJw3fffm)`jioAR;B?W~fc1+K7wk@buhq%(9;mwa6CAvU(R8>s$0_$vW$$<2e200OfkdGrX3YpLmT)Gipa*%X#<)jvz9EvtQs8JIbWfyy8$(P61ap{{N{EZ4fcU>B7__Q|}2 zhMb8I+Yf6+H$0*{&#^sot2n1F8;A+`)BCd<;UD;SlxO3oKQ`ZP-a$Vmf{9vorxfEf zwN8XsxaEXW|8lxL`_6K9c*(vCI=I#QD62lvW!5S4Cs?=(IU4=A$NaJ&(+p?y#|pGQ zS(X#iriu0a_?lnm8?v(UH^n_q!w`WIKLU>^{(=X8_qsU|=Ju29g>yyd>l;m7nq{>D z_o1WL;98G&S<^2Gk~1~dod~n=n}n9np+J5hqyl6IWOrD6vrpqmCPCFrv72g(N0~9z z_tB{9oXjIp4FXs=y*BoU7CV0Ftp7?9upsso5<+POcobmQg4HH-+8?FFndEg7!ym%4 zSW>G75UK4rv5sdx4HE?1kQTxGA0W#-sK<^wJ3CK2XRO!ApYWkJVg_UmiBSyuteyl- zB&$IoK?9`Jw=16hu2mOXYi-xwzlXA7Xx)dBR!IoQv9RhbeE)b3_5lF*f6HI`Oi#T# z+8e0xF=I7R8~HpR;h~nM%&{)G6W3%~*Y5lR8@>BEEANbdQv8`ZSrg{6fH~lEfu+m4 zr3y@XbPbzq*WD z2W6an{!3|BO&GwZ23sbSLs6L?jox_tHr|PljfO9=$4{bd2Phsr42_QL+=D*fLR7gM zhUc;iO}GAhdu+QsgzeAqb5rhbSy&y0?j^L*l9H+Z@#VP{lB$G#MPaDKb5HD`0W#KR z$UkFr4t4ul8r%^?cjd6@xC54lvYTh0`aalw-=e@v%qQWxl(=`ozp>}4F2YD%F zoUfL~rS(R!%55MBGZHo;`0aC!TM^dU@?H$T-=gHX&L_$JsZ7{{;i(%*@g7ho*NvD& z{cE>&f#GcYp{CT1>B}I|M2u&$Ec@d9*!>j9G0c!#yd9PYF|pKmUq^PkX;sY+Ij*4k z50Rw&ObgNE{)w*sV@`=eJd}ZfA@S}lz=d>H!Ag-@o8(bYS}#RnLuV_q1Xs?!54m>Z zPXz0YxVt*k;wdWaP)BF;DY>59O$OB&j6!XYt1QS2OnmedMF8B*W^h_OfjfK{q^Ak+ zYg@vMa?juN#^ZLtMor$RzXhzI@|?*$2hBX=pZ~Fgbtn1xA7M{am%FP!0OsarWE@|A zU@gl6VA-n0j`6O&w0#$mk=6@~!qCr?Fa;y%vO3Z+vr-RdBA%f z9FY-zes*gArS_pLrJg#VuN6B=r2f8$;=Z@o!9^uTP_4VJl{Ff zH7D@8)CB?Mch&p=AxTs7U&7*epx$@2mYoO)VsVZEqz|gwLnff}{N@Js_B%K4rA=`@ z1SM#;@G98j=k-=&?UtXaT6fH1YTGUNLlKUJguLj+k~b&v2iWBb#+^?K=XtMazg}9s zi?GH{fBr7{;&!c)1@WCg3k1}bg-5pR&kQuD*_-Nm-wrKPkRn?$q?#iB)&!=qUA79V zvUK?m1v4t5{=w)1PRQ^J1F8BCTK`OFU^-YNP^WQ;iQ9X7h`SF#_Ga9kqsEJ)pNH~Q zl=-wDi^r0QD=Z@jg4#H4lDEjU-7!lXMtn+0H@XO`^_i8Ro{fZ36KVhH?iU}(J z6c?vPBAENWi}Yn%{KsH?V-6!0{I4%B3Q~&RirImVI%B6=8I_NuQ7WLWjKiJ?-h$gn z?D=#uL6h^w3$6vJ?>=XrXk28X4VQV%Lm9ulctV~8l!0P5m=~rP&FH5gW06yGJLL~= zNO2BOb6mgs9#1R48rtx@PK5A9*NK{N4vvg1?{`s5Vt;;5ml{7G@C)M> z@G3R2>pW?17-2@)LKoy?s+8*;S{Oez0_Aufl%{lM!Q}%_iD{cIPw{sKux}T$t1<0M zlR0TyBY@}tX#qNA06qeGu6z;vDzKwI^y7(K^~)2c+Ot>to+mtO=RyG-Y}5lFy0!p_ zU%p?*H|YhVPU}_Du5CdFWY7G;w#MMG4M0wsEs2CH0PnviBY%-&@Ze%V{xZFw7jJra zc=%yOTk*5qHyMm153)BeUI!!Jd5oHKL6X`}JvWMzqCeAuq#}2eMPKYQBmUKJv zrE6I>6(kO{7Qm&h65Q*03CTXW7iS*FM}M>&IjiEwl5Py2J^p=LyqtOOltEW_r2RIs zpfO(GrFpCKp>j_MZ}s@Q0`)RD0><*x^0U$2`EEWqaR$sTs8r_R_aaom1sXhXuYT^> zoQbRNlICIMviC&T>!jPKa=inewv0_9qZM}5@M5WwjIxA*r@ONyo7>wnyuEOuqZhx{ za3^Z3KY39{dxJIA!E%M?63a0aeTiE8znBBVMO!py8xadM&|sC8w4j)A;sHByy-9CL z+>yiYWgN*ms%oIM~_Y>!HdMbza$7AKbfhQ`9gEAZXyc+>Ic!y(-r2Ouu{WXTL@|%KY|5} z)Gt&a-&Eb)*_oBHjw-}n;}ShSQ(_6YGxyCSbnJ}-Gqy_KQ1sLf2X!?lR8e}Xs@ckb zrjfXspXP6Y3ZjR(rxJ=0FJ@3lBTwzGj~8$rpZLsy+jACg_;_SF9K)8+AvVvjA`^?< zJ!#i%k(xelH8cOE;0P8#kjp!aNr9&7H36~-;*WRXJXou*r>*T~z5ij~pj3p?aIQOw#k~rMo~d{BF{*yHHdOCMVH_c{ zSj1;P7KW@BviBzvAp-8Jz!U6?{4l6j(RVvOI&Zdo50GgxF= z(JMbORBg;4d@vA!A!dVQ#7@0H>l)iEnNm`i&|p%E1SsRw*LH?L>(&G)H6*sQN9VEI z;MGfOLugsE<(>C(h9*ckz}Z2twj1ozBV)Pt?Do4IdT(tP1xVcIvKy)&8Q}T*bWKZ^ zO=Y{@Dq&#UU~Z@x_I_~F-U|lCTka7?SXLF?$9FWNG@-e)%agpS29vTF|3$j5<{)}f zXB#%?CH{T#%H&zXiD%V{FccIER+DeeXy0rpvBbhn_2E~gGN2+OI8N)M4)3d$D0f}; z#HS|13l46L?FsA$vp6+d!cq=9IyyR^I#0J<%-dH)pHOsJJPg@zYw+Xb|upNjEbR2Yw>n?A=VCFR?6DPBGr84D5;%SbOPZpBC zqG{xpq*p3De62F}sP21}H~on1+i|R6>Tsz3ygMSY!Z|GT8iczyi*enBf`-M^&tBmV zE*(EvnRpyOgYnoC4I7(lY}ospC-yO)_v!(;^MU>uM=Y-NLdT{vxfs^iSLrN#%NU2< zJqe|sc)Rzr;k8n(O+PX2H^E6+7ek!uoaIti;e9Bug}t=Vjm{=QW76+!`*KVtmRjMK z#&or`=)V3;ARA*v_C1rPI$;S3BV#QsBrNL|giwt#S#6iWj5!HkHvq==gTPHS%LyiA z`|5oa9N~(`Nd8;h0ZwHtyhErqhp=Dncvy=H(s;R26$i1uYtuR;e%@GW7y;)o6!!yP=#zmH!sik(?=VV%rlXx8K z-;88rg3k|EeqIpKH`0UNdmYDr&ILe-T0wB)dBGEkR-+I&0=Xbc^BV`I$>()TY*6yq z$ljM5QUSefBlZqv^6)D)n9w{@M{%rk0Uw)zBs&HKf{RNYRa1pPf*fvD;6ESY7)W5+ z*$ldK@oXU`E0uUVfaZwURfk54Vb1&&0^GXa^KJllY_T?kJD+xU|M*Pv+*N>1Vso|3 z4|7P|dccMp?8#gn3LciMJ`d{$2a4Xb@b}tM^`UqAIi-~5hZH~gK_*}*laab z0tDzN(d#SRAODO_F;N%+Ekx6JEv!L!eczw-5m>oYC;HW$Um9jVaUi$NM_ge zkf&!CXg`b;_5mlBjv6qBAJ+~iym9hZ5}MfxN7SB)AXcY+Qyr1^Ex2#^-vb}%8Z7>d Y-p@CEhPK_fKYjodWL0I#o|*;y50Nux8vpMObexT*iLWttGfR}f$DWwpkv?K-0#^DF6R?oLS|LC~!z1Q|%0X>_yV*TmRX? zi|$V8KH1n8Ri&k=nMRF(?PN^95m04l|7DFdxFfd1d~10FX-i{}l4$RgFeg=ekWBcT zU~7KR6XWuRxxZ>r$g+i)1H>+4O7nJ*37K%G^V8r%*yJp**imje2EEBG*zXREZddl8LKev%{0+n7_DpbWUX-CNr8NmSo3R*wYh-h(g51Xy3?k!n1I3 z4riIo<-6!}NFFm6gxts+#YxDb(@6W#Hd^D>W7QRFBAdHC;RtSFCj^AytfR7K1|3OQ zze%Asf1dByf`nn>1~gLV(J!T?;V)CgpqLx}-+amc*u-HMDWLVJN|NGDOG7dJrE3Qz zw-8lok&mxFR-uKw<1m$Wy^ae1#VJ_B#aVZB<(<^BG56PH3oJOF4EeyEbRt-gTVO`fdweGT>`HovDq5QhlEcNpe>vCm{JB{MLvjOWf;}m4 z?hpX~X!MtT4=)hnI8pKZtdh=00}Ryw2ucLalQA7V^NsGA$tu4dUfLexr8OG*bu{p77fR4o`u) z6dBY5I1{RjyqpSlp{_AM#3h6LaztBMX8QeeZB6)UWKf=Slx zQOy)}qTXpvbH{Oe&6vr)f%ib(zD$>nX7eZ_b|ixn3U-{-Xiq#AWJFxo>5;C1|kUVbi=ZbFmEsTruwd<7p(~LV0VkMfe4@ za}y-%5{t;bMpQ%CmggXs!m5+v^ZO?fu(Pu>Dl}R{YDHx1qj;!-5h2CSZ&^w3C0i+&y`lX%ET`_zdef{1}Jq_usI#gel|dM44` zotO1_4p{stV};8^x?xUnE2be`pq0o|}5-}Q1hzM-5cf8vwii&%#5MM>+am5{}v)9P1U7*^F}t}S8s{%oNDe&GyD^; z8ZlC#e}`Xh#bi>RdCo9N({scQ+d|10B#v*YTLW;dEBr4a*r!;!mx1vw5i#)DE!GR4 zppl$^X4sN)Z4@c;tUm>b_Z5ioG0qXK>*uP7j45ICS=%8;)miS61ca88DDc z3H0Jl-cF;HVU^Un%ww7GG!LL24YkY-4Mm&L*;o8o~Nhh zj}T1K4KFXRpX#-G*&~~dKHuu8w9FF)^W99W z!eFN-eMYCF*cqzs(BbV1L*I!A_VqM{N{H%yKPn2?a@gcHOYPo%2kjVmS z0^w;6vC|6^)Oe!I4){-jyr%kOYK4JiIA)KXgS4Tx|h3u?IEVv#YSn~S4#e* zCRs?zB!{+S_=l8|qM|_- zzqGWp9xqJn%^mwrD#TQs{#T*4Y6IXMDi2O2a#;DY1zq2Yj`3)YErMiX^dkM}88g_K zqh>+mrYm!5T}9!M*U_#6*K2OB;J>o0A!d`GR<&O@JfEiMUv9oK%WBNq&mXy0s*M&N zVPK=TeQBX;?z0`!$(Axc*sYi1Wx4g?-WbZmE zHj8!?S67Z<(Fdut_79PA(=%f!NZ{rDl4>AXpV<%3I3VQSc9=YIw_Bk?ytRL4B5d{K z`hm_?2baEyIpVjsZ^+6$G~Rf=n^$D2MAlb1c=NAY!w#wXlS*6*lE#>=20m?-M>+V3 z`tw^%uM1k6h)Z9{`}s|gVMl)~PS=$8hV9rdp}_Fq>>X=_;erhlQ{HhO?xxL)*Z?NT zT|AG}J?sh##9j~FCNL0rmj7{#=WDKkZ?q*9*A4(q6ePDhGD|IFk3zR3BMEf!Td(}G zv$KB=gz*as4zq$}WCoZBr2Q$#AfS$(CLd?#%P(!8I#Y9ahN2yl8Zg&BnfuVn09r=$ zlE`871NWqPPg~9k*U?^OvcQg;Q>?<-rXQ9_5o>}Du$)+>gWq@ioSz8O>*=da0DY9r zq*H0usfcjoUZoA_`?(&=5V2by#C;&c$Zj@y!DpvrD9}5PWh7!2) z1Y9ANZDdkfsJdZ)Z)$=J%o|u+Tbo}yrXv}cm~i`T8ugkd-I7G|cZSo`|IVbejNCQw z8)NAQM+q8evkBQH(e7yX)?@D2zv~Xp;G*Vg{iu%6ST{WX4eqUa5tMoIfPw_+&lk^) zA`h=*Enpd!{^dHZ5pxXg*%kLICm$#IM>jO+qjKiY`z|o|?ppB&t``*Ga>ts1`BdWp z7m{weeiJgfjmnQtx6heBk~!(TE+lLmuK-tfpIo+;^W{GTYTfeEE094OIzzHloI+kl z_2d;I8}BWfKqZ9rHIZ@W>@l?r-`qeLdn|Fd^}`n+^igViaqV(AEbQ!7x66O z<+JyM!IE0XHVh7&!FSWd(I7B*Z-dKU`N1}drxnSM{;gBfi?#xS(d`>#1HY~Tu!I&Q zkFkTKzT0qP-;3*o!Y5-Rjc!Xn^||egqjvj%;@tPgI(Q=w*78KqklH+WJ&uiQDO+Zo z&6X&l&iICkt$uT(YC!%o=RKmvsCAEqG8`MR!vjroa+m{HI%;iD>$9U#W8DF;QvF94 zai&|&nDLx~gCcwzhn9%Azn92AsPav->*A&F5tg?w{|lR2bf$GWT3h|CCS3NI;jl^4 ze-dvJKF9c@%f0IAic1{P5gH|9=-!Je9m38o&FDcBiQB<^N@Z?m=c_;GQCC-IvpO$jxrm6O+#ocHk8@8(2PR3>T{l}a)i_r=nI?U zr03YWbcT*0_H4+1E&BiqDCGIjdfq~|Fqo^J0<<%dZe(_ZEK5T0hEinH=&hj?8WCqvybH(~=|~uJ@4kA(oI1J+1;oqSOx$nlSM+I33|mIA znj_~?C8%U-zz^fw_|alRq{&L@V#Ne(hJlObu&hcdhNg0@@zN-@Lyek=1ru2RLuW+7 zJJzBi_#%pUYOn-Y#``|q1=d3Ek9vqFVc>acuK&B(zNeLmt9cDq)~wQ3jN8oYvIpnOuYFPO;S z$9`cnCNOuegzcu(r4lOrrFX?@?N^2GLo8-Wk9x8{d&4$Z=+JnQ*~s8N&I!~%lCa$E z^9XIW%Pp=WU59mV+hebUZI&7>iTfuF%#mgJZ)W_LEb*%~toh~gkPy6fgmb6%V@@sF zpc`^?(dUg&#`C%rZ(kZB&ir6c%|nsm?KBhAj3D-lyloWqCo$Kcz>w-1kkO8%;bE!u zee>&p?THH*Yrh-p&K?>Rgu(F@p~GRbzx4cNz}VOrKg;2BY-d`C@EC2-dNRrGSk`e_^hSm zRYeRO;QzqPitJ-qIpgTrq+y=7%&oJ;SZjYOFy}vBf89BI`A=$@@K0T7oy~6_D(xyn zao*gKueow8V^#6b5(!Q=l*9}R9Q4}iC$h;t^dI3ks8et9mAg%}rs!{Ol}ODd3#1moBU_V&GHYjNXDIK5gp5iR zv$acYHZ!@c)caz{1!<riKwg2% zVbdw!r;mkPv_-bNCr0QPe+YeIbsIVnBZR2_xR6%-9sJ!?V(+z7*3@U7qSTV_NSV`0YOdd`gKw7 zjMo?OQ^)WI=CZqjg8N)|g!-;W z98nxBt8T#>vX@?@D0Qz=^ZzOL4wIU7ROq1E2rbo%F?%gDbw0)wp!51@5pSgL<6Nyi zpa%Ee>vm#y{YN0Rt*x!abcsS`Pkg$zjQb_VL^896FrUw(8#X8T zT-~ZP3#3=kxwiI(GxFzsdsfwsMb@`+gqM1aej{AmrJi+iQ8vo^CqWjy8ubm%6NqwXA zX785vS_IzV7{c0C;%9lVLX!Pfz?n(KZR{{$z3ri{KZsu#Q;YL@W_Qu9mbqb3TZ7v{ z)kf$`dv%TDP)wW3{m5eJZ+6!9J1?i+v&^5O5tFZzY)^qL6N0(@I9!uiS3 zDUn*ZaRNf~wHOUQv%ort#ENdSaRk(KN;C_+TG3SvGDCYLnJkq<>@sb9B&?Uk;uD)5 zZkE7!8yu_vi|H8XH@>yKy}fkckr%0NWEu=u{W3B#s$EZ3_$8-Nj#t}n1QaaW-Oe_u z?k;wBfA3XCVPML{T=hl~b23?oYut~_&R)T?blM$56%pxzWx294q75Q?kQgZrlz`X+ z&)&gEe(ZqjSQfu^sjCLDA6$)LD^Q2{{V6c;S!swtsgi}5`xTeMK40WZ$*O3`P^rL# z>W+xI8-cacIW89&7ddn5ky5&v-dw_%HV_cARNWfwibbcEBjVbyuIs# z5^j@^+rJge5UxB3m3ev9TZd6PgqQ9lzu(ZHHB6!Z)1;R0IHpBopHh~6>Gjc7EUboJ zg819=84($jj8%Z8!@)mn46Q-jqi<>xjq48V4y&Nri}7BJ%}+zEGjm4sctL`AhB|X5 zQZMGVq|nrpqzdv^t-n??*mG&P%YUm+5{|Ud0{FyQn16pc{2g|5od+uiHNm%ofdxuK z2zkUgodWlU4EPxUj=xpr+uvpgtane@9zJ1l5YGQ_YaugeBsQ4t0ztD_tfaKEPn3pd!3KVjwSH6dxPVFS(QV`IML z%X?r05&o;@uSPT2ARM0rWiFO1OiIHUKqash8zkcBYc6hQ=jYosb#xkp@E>vK!(F~x z`&@qeLzSZSZi$4HRJWxcH#M1+jk6g$xxk?;Gh#o+Bpdz*eaW}^cU7e~dz=cFa@xw% z95GlpZbJD7M|TJoiGB#9VPglB4-^5iEn6Ql_$Wa7<2XpUSa>6FFS%$1reTwz*lVyO zodOsDqzuawN1OUHaG=~E6hmxI8=%W5*N(~^?AUl=SwXJ=J_L-Bvnbu`tZap)V8P44 zf2(z;(1@4adVTmwo28e^RDf@Ny7(Cu=j`lUMX&JTy`0I!_3<+8b}u+T6nU>dh0P*g zHS@zBrAqr3qbT|jS^GD)_^L>3$31ra(4_p4!o_LRs7ig|4a(#!KFhDoJn6JZap;GV+ zeC25qGANRvwco-o_|De1pds=)!pcXa|9dXA0(dj>^}4Yurlm9zoIMrt-Tzh=?e!H<+okk)P=&)?fud5F%k>=K27?* zhq2FeT9)xBXmVv{=8}B5nX$>vE+HcW(*%zt_<*NytfVBk-ZB5i9=}EOxKLz9R9iNY z3JMibRmMiWR-FMen;BLia5wg$I z9gi2*e@OYT_ctNtcjM9HaNp#C>?W5*-k`C6j8{gKPx1CO?yDBd-8TTxlXX6(`zkX- zN2b~eIVOm(?+j%G`>+cv#5@0^S<{TXd9X>`wi z{f`71Z9+7iqV0}L&Se8_1MoolRY<)Zr%e4!DVWgSC!PogWz;&2UMt%(X}|_dHev-1Zy{SPR&7TvPR^| zqlh*9YVCxKd~PXxQfg~_7|n*VhpVy94@ACSpQlrD92JQeFTl$%;e4MH=|2o?p@FY) zC;O45dRSAY4NRl=&5s8)k0pl`=GzzHeya3|n*WcWmT-Q;aJ#Y!fZI5EzVAA-aK70u zVMQ9ECdFF=MX8gXN;-z_Rxlzu>HBw73_W+Hy)a`55EG!l45m#E)4us{Dorr5#e`C+ zu=^>H`@&$pMwi!prCTu;|3L+_-z>W5&9ca9QmrN2yX9^HR#qFzP?_HFc!WVpE^{wm zgL`adk~@{Lw1?N9ABrmLml6|hG&D7vQe!DlEDNyHqdR)mgYYYvg}0Y{0Dr9Qnu6<^ z`>xMTr#tZ)NjQu< zp~MsjlB(&&xeb@%0}F#&6DFnr$vqJ))k8p5I-{wQ@ASe3T-;>N*r& zk(7X=YmF}Z`q+ixjcxT>VeuKOBtZKb7)SaB+rKlyVCb1#XsG#aU=<%I>*{oimS?x(4bTURsa#gZrIFFsOD8gtgE&e zYi;;(5-$B0_~&UbSn|W?{Xpr;0~U}pP`kg3NE}&QY!aH_vG3Ye=e!((8**c1n!WlF zL-A>GaS;s{53kD%a`&hmeGipXZKj~gk zes1DDSTGV)_P6e(Tnu87B8y88Bi;B9=jPWtVTBpr)aS;So=@);{-7;}iPVR)OQFCH zON6*l6UM82zR#PiXuINEUO(&>G~}w~nULwXv&5r}#nv}y^sP2M)_w3bc~T9sGju@yaEGHY0yy>sKPl8<^H**hY>{ z(xXr#1DBN)q9fU2u(ioTUkBk2mY&1k>m!^h`vtL33sHblkb|@Na}@Wy{6%HXiRNT{ zd}}Iumx!e(FmK_K`V=eDgyOwrJg4U1II5*E2h2+)96sX|wC2T1Mu2-;6R4v1OL?Yc z@CD`?$S)5*aHV5E?8$Zq}vh%aa9(^OE%AU>eTsnZ;H*cvq76bv|TUXna z7Iwuy(}mx;^gw(=A7?l>Yg@k_FNND;g+3M2Uuk6M6sb>@OAF;M%|XQ6=(db`pK7f> zJp5vL&`>l{u>GkqLHI6rEKH@AFTO}>^NMnk{WN(n=1$=j{T_a2I-O>Xk^wot|0;HM z=694I0eLzsr;ewM6y*2)KqD@k`D z<$97QTa?x_2-4=Uf!}B+Yteg^eZP;zA9s=#)t8NPGo6#8w2%T?MmN@WGW&>c(c5|r zD>dtnT3&MtNO-g?OBBdhwq2Jmf|1NJD|JgruHbKo2ECLqm&$!TMu=mYI4;*+g~Ky5 zbu2%AjGB7^dJw6!dg6-49}Q)E-0xPpC#3d0C=L$kcaqzsg}j-r$iO1&m|9%8HTJ;w zh&%DjnDY_vbUdA2ROR?X;2f?$#wBNdwlpLDL$`WPghcUF_UsWuH&ZWZK`P<(Vv07M z!c>J17bUaF=+GlWQAI}1-K)BpeZQi?2TL=}PtndY&BVBS`IB~*o4(L%rpu;w^uLOX z&$;7ZoqxIOkXZYG@B3Trvpbs)eJ`YaAo;6{i>-qL0}N5_6_K#)FK+c~8Wf!~{qtuh zC+k#_ZA6#jc0Q~$*(_Jz-rfeTHnNq5>M%dKQRY-zj z#Uu5XS%AB!n~vv>dsZ)}Ki5cb2^~Bwf}H4esPo8FQOnN{g`z3@Thv;L_H2{wGz-fl z8LlYl((Qu%99ytew&y)Fbci-{w%Q8@vP*lk^T3Dqqs_ASH2bLbKTJy{zp;PgJvmg8et0kg{9S3D1RESoNh3&Tk+8enG5 zzbg|?Z_`rqdqY+PqD&03T>6{X-n%7;1*Lf*aqTg4eA5^~cos50#R0#+@uXz%B1ZD!gP^s+V6g&09PbqFqT% zwUVee8kbX5Ux-=(--ax}stA-UsJ*pP?BKz1GfnL|2_oC~Py1NTc9ti4 zaM6NsJz>V;^n0|x{ay`Ho+%@NcNkf;4CI#oGTFhzwpI#Qh!XfygC8*82S!~;L3K@8 z4S9cWU7zK0#<_oFZw~e#J%58-tut4!32T6#JkVt*?o_*D)0zFD0`bNxJYtS3cd02$=rSEL>#Mf=Sd2Qjsa_h%mG30+HJ*!0 z6rQH_o^Ik~5hJ+Ws@MXhqWBj?vXg7N6z%+G!tA~X>SeVn2s^M>Z~te%Y6*{~Ge;k( zy>0t&Z04{wJyg~!D9UiB%}Le%ecpHqHD{WtC#6GruXdu1BO{BHD23`z(E|#E#nf}E zJl%rz7k-HEFG#-JJX!MDH^X~{&uIVoWzo$B!WDXe7ge(RLf>iPy|%U1=~=tGyGv>U zm)AcZN29e=T~#G{`E5TgE>0CU+*qRdQEnHS8#R??^M~5VkY~_ZdXs5~G#cgNhGU15 zIiu6x9lnRTjpez5eWy$O1CCqB8D5`DWNOh1HpJ}sh(6M`;~uRM#w#glUtbT3H>;UF zSxsrfGlRTB5SA8pQ<3y?O6^^4-2)jXPZSGNPDmuu+t03*FZF5(2}n$ypa)sN%PFtQ z;jNr)#odaEfvLoKBxOTq*e&COz9I3Cw2A^Ak4z#QBQNm5Y!ZSLt^> z+crO(L^XkwPt$XFm!~g3I8%R+kmyOF==v3{ygRLNng2PK9ZPiGtUo4oZZtiWjnDbk zaaRdz=|u0caOUokK$n+nw$o3NW+J=$kze7{ww`OG4sKN2^W?goD2-=^p7m~hiCX#i zD#^Zg;hcyMv$eQiT0P+b53;!R7A+r5van0{*Dt1mr_kZSr5R;6xNyllL8qVjznIZZ z=+#K>2thjzCb}rk<*KD~lXi}uK7G;zP3;zd(iR!^7Bd21|BQvsFD_nG)z+TcdO)Xo zO7@u~GiFy7E(?FNQcqXbeY39C|Hg=?z^1A4I3q>m42@E$3g9)n^DUl%-eXw(P zN#gonWvuR-@Ulq_i2iCKg>w;1q~<9(;=hCULwQbR_?Y(16nK7u2>Hx=*rJ1)f9T`k z;_lo`D3-F6QUR5tFW8-p{ScOEXi~d@>^1Lmg;+%s43&YvrmKZVy_bWTP4xLYVRkM$ zJ5CxvbMad?Xv$m7L{_2AWmNw0Z9v3n=sDa}V<%~aGU{yDcASS5LodgNe2&Z;5t4p2 zzDwx0+Xib5a$VZDa-;)e2PL@wM*si- diff --git a/browser/extensions/loop/skin/osx/menuPanel.png b/browser/extensions/loop/skin/osx/menuPanel.png index 779640ee38eedbfab0ccaf0f143b2c9d9c59d368..e9f88f9d8ca6b319050b956f744835379275e06f 100644 GIT binary patch literal 8025 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 T?124S3r=2IMXFlDH0b{UWk_C| diff --git a/browser/extensions/loop/skin/osx/menuPanel@2x.png b/browser/extensions/loop/skin/osx/menuPanel@2x.png index 733414ba8f04bd18b97f1c23e9cd73ec4f800fbf..0118ee233cf25b492632d4175c6f899e41e90be5 100644 GIT binary patch literal 19003 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 b$!P$%xH)L49c|+_00000NkvXXu0mjfwUQi7 literal 22824 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 O0000-C@6&WtDU7(_(Vo-V}_XhaC5B%La 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 literal 10967 zcmY*Fmj$_+D*L^+reO~#T*B$s)O@Ztl{k?0~u8}Fek<}#p;|brVcZdkT1+BWz zu3dYcq$n%(&h`36;$6Lv6NV!QkI-QvT}gPc-;WaiN33NA2IV=N;GfR?sUe+xtjZO# zQ6+MnkEBVS#L}ksWSV3892$;X#CBdK_GezA&y2Sc)=u9ea7VRUXJ>Uu{a#6XJh=bgFvAy_p3$&$%-|GR}0 zszzGJzH|Ip(Xcn-VvkMu^ODut`nrSwE34Vy#(3pXMtb^J3rkCR3v+W>)2nqv#qBw8 z$1j=I=yo3c5_5EpR#wzxl|2~Z;NY+v&Y{kFt#!D_5>wanzKvug(7bLLs%P+>e6KkiX>&%NQ4K4ND zx<$9HA_}4WK?N%Vuu+52rep$_5iC>;y3W2B2ovts#NCp+YNCKGbDi~xdAk3ekpl-w zvte-EiQ@gaiaMzK4b$dhIP?fKbK#r!SFu z3y*0;ZiQT8#ud`M8y+%1)Q*t9%Dvp1{(Ro#F;GzqitaH{j_UD!rhNAw>;(9v;N>fSe(xbwe?ozKEh)&T1$T|D!=?^fSF^1%udYoFwsbT=R9 z7{bSXhjHkEFJa4-HRqhGqah^|Obu;(c%!(D+pKwxvQdygG;4s0-2bERIOmUW&%nSs zDkg^Zou1yYe2>ajOeO2oormZKZY!~cR3hsXc5B^1>_SKQB7Ew1bu_G=a_?sPi5tff zZn40y^2Wg6;29zf<=0f(aerHg{}rW;EedI=W?T}ii73r7cT{#a|L}&~DXae`FVl^G z)|TRN_z^@eV^MpkfUzBwlo>cZIufgsIBqnG#@7Yr-3{4r*#qnb2yx(Grwguf(K>Qg zj|g6@Cqrr$=KFr&b%Cu{U8@THz-12=ZYGaT@m_A^ zp#T4bMiArGF}(6vMor_+56(A<7;e)ntvLv(FSat*1!bdNXhes|3U104Ok8Vi`F|gC z(66Om+Tc7h`JtBN+lgaU7)0ThJZG3SfA5dSsnhtJqd4j;#DGMR|(GU64qurMSyx0!Bo$YkSY&ULRgUN_D_b-l7tDer!KP zvovloJ)i0IaqBgbG-TzXSusLbK12F3wP?HCd>Xa2j{8{v9&IGv|7tr*S-x>{uncJW zu)2k|uSA)myanefC5~3f`Dyf* z$-u5^D>7(@oVJ0dMurk0k_j?K}#sF5B;q z;V+V@G{T`B&jzipUwPv&i^1~Eg73$p&hFn__8o1-qG#XuYpHT_TIiJf7-R>I)i&w8 z8$l*PA}Xc$d$WyX$r1vr3k#XAbbHj`BJZ6EjMFayFImGjxl);Hdw&hyyvh~vw%pU$ zBNdq`wr+|I#Xnt_4{i14dCQXT+HfK0kI&8wzn{1r>@IfYyX`F{&N*{vfaCeKVvEsl zE&0>hNg?kDIZ-2@;tJ$jh^g(iGtnNNCiSLo^MfDfX?UM|@{dPs?j@Z_(re#1Zb!V) z*a715&GWCdD)@7HsYnM?UWM6p0>&$lrjND0ihSSV=W#u|UDjpmyH(b=38;vCPu5Oi z$+8*x)H^Eq4bm6g^XHwHrB3;mxNHo)T+eeXw)xrFda(5OdyD4**5Z!_b1exv_0#Sc zES~i0*J0s*T2lW8Dg@SSK3&zsB(qzW%0DbiKm9{jZ`Gek=6-qMRRbkI-t|VqpjI## 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 delta 2552 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

>$o_b+ET)?)u_L~)l!hPkuFhzMw`M_^~ z5t*1PpL*E%$K4%Z{z~@9goo6n3g#@enpWOfCRf+;X|-jv3RVM)WZlb@!!?QSe9hKC zJ$Ue7Uc#ajmlzy3lP>2v@c?Hi7h>Z_71w#)`z*e%)Uv85j}aLa6{S^!#8*{1k$Wdx z9Zh}A7{epaUWh0iq#2w2*~Z1(ypgf0)_q*;`ow{s;K|BcoHMBOlGM>X;_*?(x^D_d z7Zq2(Nc$1bEG;xUEc!;#YQMfvHqFX=W-G`CZrzY#&U88&cy4o7Ed6Zr@iD-McrXR@ zLIo)5cT0?=t_IJ)^b>Nl>iA1y%WsM1)%ZbMmpl5CEs7+9rRC2BdLUbQPa@8Aum3H4 z*H7H1m-P?C9j!xFJxqIaB%KF&zWhl&)X<7_ZQ?Ya)>Lb;g2B9OhrBjVQ8+BIjUbQ+z`0G*$_tN!lWgjD*QIa2dydPnW4RMloH% z=M$5K&nvBQOjBvRr|;z~7PX)41DWLY3A(pI6tr*cRqXQgPFIDfQ=`a3TZ6gv)571U zIf>~$QTrVe7CS~ILM(27#=WepmM6H@{sxIA5x`2+FQ=~fzWKay-fvA!ey=;QD zsPbT+D}%zavTZSb}*YbU$xe(zjRD=9MG9=9zr78P8$& z9irg{Gk!_JCUKRv%c|*UA1;Q7gD+)J3YrsJj{Oopzjjz6G}}Dj!Dis#_g@yY_) zg7=cnv}Q5-F+EZ%i6PmZG(@)*u4rI!!pkk?bqxd(W z0&x^AbG{#x@U;DHvc?kkAsV6lkE~RJivB-4HYhn|_nNFbxXn#NB`%y5oFUtqT9ap{V7m!_nCIa{{*hF=GWRlRHmu{2cvIyUw?p>gFAJ0^1Z zfrr6!!YEmI;nM4MF}lv_8`8XM0KjaS(yoTQ*uxu;Hf(9GookSS1GICr09uP^va%Q` zt5I>Dk@speNDybU=9gvMyE@gJlF+zAW-R>0ckxgR)x5)Y-4tUNYS&1-W^zYVd54QlUQpWIVHtGw*(Pte z)?jbQ0R&+b@TfzR*Os5gvA$p_II8Oj1b_0{!QlCs>RZz5JZ4P9?Za=dFB`24QXFHv zlDOWXGP}+M&=;c*rs(Wjdkh1ZTt_U|81L@0^a{n&#-?!(NZ$fYyLS}HCIMbC>%6Yr zO}zo?pTdo>4WJ2>t|#or9vNeMbQ;Fj3<_^jhuMfs?d(v=ECv$dVlf?Z$&-nR5I z30$B*SksyJ#2j8b>Q}xsSrP1Up~ho1HrOeU_(Nm0n>le6kHnJSvUw1*@@X)A2;Gti zSQMv*J$T*6)K?M2G!meYi9A|d=ax;W>2;cPTZ@Gs`^RsjC2q)PhNG&t!?Pr5Oj-q> zyu}EK;_IE08&_&>ACP5+Rkb;UUHC{V$AI4pV^{_=z~E*L_Df=;bKj9kYNHpPM= z+}8T2=ZI~Bk^i<(=xW{6ELFD+`yY^d B(ii{$ literal 6047 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 S9f;d_$5T_%R;-n`di#IXsp2sJ diff --git a/browser/extensions/loop/skin/osx/toolbar.png b/browser/extensions/loop/skin/osx/toolbar.png index 1d45fe92e15a5de26e8222d43e0c6040001127f4..6c8b0103df96eedfaa14101b1d57614f539bcf92 100644 GIT binary patch literal 3861 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 lMO^&%x2Xo)>W}w#E>iYly literal 13249 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 diff --git a/browser/extensions/loop/skin/windows/menuPanel-aero.png b/browser/extensions/loop/skin/windows/menuPanel-aero.png index cfb51d6b69ea480d89ea371bb1fb273fedf2b137..033e647883b7d337376ecb2549aa11540437b7ce 100644 GIT binary patch literal 7871 zcmZvB1yoes7cU_oA|N3Rqaq;PDIwC*E!|y1N+XDbbkEQs1JXHkcS(bEBQi7$BZI&j zzIgv{z4g{zGqdLIbNAW%x6eLj|MrbkQ<1}eMD+*_4GmvGURne7yN>!idx(wt#_RLY zMnj_uQ;?R_@?JbN#MRQ$g&yAO-JIVI-#ICvm7YWIu z*}e^$CPaFFl^tZFccPc`Pfb1fRs1D+d|-J|$lj6nqk#FI6oK2dfyuaCMA+?@=g=@Z zsj1OF;X2WHw7#&Ys=P6@#fUsY;lV?fo1tKOKFEWZx-7C&y~P9m0+zD5xORR{Pmlkp z30kKKiV037UJ5?%nZjNiVqMkG1j5P-75=9tpdJgxKjWz3I7{xNp!s20J8wh7Td@aj z`hT@3gW4yM?v6Ac*bO&UnwMEan-p}ok0&U0$>|0#bQsWV>HFc&!`+tDr0TJQJZ{!i zW%ozq{M%Url8qg*v!Ana^I2QM1|ACshs~orc>RmnNHQhWHvWd$SqQ_v=Vts1(Z=7+*p|j}*B6s0u_Iq^ZN{KY}xId@Wy9gr@YUKBIc@`lX`8sW#FF4cSp*bT{=+ ze~I5k8oXz(0|HMSE(ubSA``i4y42b*?7Pr8fW!z7?F)tk+~vVt&J+`NVSlz5ZfjMp zXRV6A0o^&cLC+sQdu(@X5NbG+OGZ<&7an-_tq)p_9Ak=BUg%4sAS_spykurVZ6HRJ zL^SIdOs$v%@gojw~v$mPkC(A*jVEJ-U~zxRAId$smTgI!u&E~D=(gD;)G)LJx; zNEiiaQezQ4wz|1hBuIsu?leYiys~au-PLHURQw| z^}7~g#35NOkeErAS4CJUi*yhWLt}@5t;B}jVeDrDljn0r_(EOy__m(hhyLfKRc83L z(1a`F#*U1ZB-!e650eH3a@|%r!$KNh2sPEjzWL(S?jO=N?0I@dOVIZM(1#RC1BKJ4 zef^D_Vw)^GA4!%cKBjj1rv|&&vl-0i(&;OO1-r5=NgfXJK*-$UzbQNd_WAW{52G_R z=AoB!piHxGK6H6f-mXlqYw%N@?R0Wl-Eo%izuMME?ComVyb5!o$ z>A_~2TWyTY6?DO+R7AQAIB0@=xp1BU1ELP$8v#oBaMisw+%-&cp{^UAfU8$+ zKQz)+jLD+?-;z>O)Rse|ti?-LtZgJPtF!kz@$sjK_cDAs$Q`OBaS+b5vYZrARU1kD z%OrLgN4IVUUrHI;jk0qT? zxn|^hQSpud&Dl0S^^J)mHBl*9Rodv=>3$Fk9q8>o_D}u_){0dR*eWJ-MRS+mzvjy; z=2q5QI+VTo!$PJZ5@XCY<(H5~J*Is#UI|eGdTl1} zi4fU9GuIauN@*uKjYqH5sN%HcpSpR!!PK8Pc(=ysh@UiQ&OtoDbW@*#fl38~;&ElM zStyKBRMSk*&^0Cr%)`P>G!{7i)|_Q?)+w%uJQd{qytyC1tbY^&~t? zd?~XA|CD#iQ+sFw9p6^6wr56j%sJ|oq*Alh%)9ZG(tBfVU#6pweWz27a3!t32PFY+ zcCo(MH9Gm`6M074_3C(r`0k;TnRt|tAQnFrZOuv{N)vl9sU||K!@m`!LyoJN(oYE= zOv|}msIuk#Zc$l=z3YgRGyF_LH}R2-?~1c{Hh)Lud%GDM7Ypvv!>p=q-Qkk)%)6>B z^5$ElYLD)3`M=FefSgAmDe??$Lq*hldkZ=QHM$g*C!Xw8&Ix*Tlh)`AX{&tBV;%u@ zbnfVhEk-bF;^EsSFjn5Btc9yg3!G?^k|R`FYpn-O$;0f%^;S`Blg7hpuu&-0wVG8s+s% z-w_bnzKP^S6rz9`fYf9gTV z+%iN#0&hU?!gXG(Bi}2Exvr_}?lt`76xJgPaV)KmxvTZ9BhrN4lG-`Z+%Z&2u$xQ& zI#9~fLyL;BB)cPg9RS@mKF-kp`imulzVkqd$E;W0cugE0rO{vk;fg?0!4azUU+`%b znVYfeNT?CUXq*m-z6s;>zCjpjzT>wHU&!U3#jt(wwB~u#PF5p7xoo=qgCk7=xrmdV zgMfK0VIZV-mw%|BSc04 zeu+lLK_=p3lq0g#?>}6I<+5)7b6Y#^GZ};XgO78GDYp$KGdQZI-lKVI`$9%)-b%Q3 z4=)-rKr7;v+ZQB4_Db~YqOd9(xGg=zQLN4@o>2nJa zfY9n_px`s)vA1)RScDD>PT%Z9Nov@Oh6|X>IG#Yz63Yp`p-e>v45wVA#4#3a!gs)( zwNj$@?#JQfHUD#4O{03xr^1kXA>W{8gi(Cg(kH@-lFB= zjE|l?N$AWH(c7fzB;!EzK0PMV6_7)-O|Tw`LOLhPGvX$>{4Rg|3O7oH0YCUw1#@dx zk;Sntt?Ogz`DV^+K@6w{KCx(J+6@b$6)ao$vgY-KBXcxgdyF}9d5G-(Kw)qX{Wv$% zXx7>ukg8tmg75OAt2+{=PO@7y@^Qg=w&&j&7i_3ckuQ#E$Cd|4gJd5nQQJuwt$bk8 z{IC|nx=LSh?QFH8v(D5+adm*Cf{lZuA(J*(K`}1Uh20gcs;hUq6^Bdhe zGNn6UMGb2%;kEbb6ouibaUYEthaI%N_*k|`r}bq`@7nOkbw-p&&X`-NBPcu z?n1;$<*2!>V0rh+IDgt>(7c3@T3a>>HAHEcz1MJtBoGc`5434s8|We8t$fFe5`0Dl z7WF{;55X3hI!IXL=C~LBMV}T=LMw)Dt1h=3ND(EpUjLQqjJTNyr?L>*X9-9wwc z4#Dn*CZ(pfnGAX`OsPURDF=C9eerqX|CRf_u(TmVE_OYgP?5qjm3Bh?34e8f0T!z$ zgI-4pdY3X4#?8uByJL6cQ!9Lr#LIK&XwC9%8J$yaa(Orz%1U11+Xc(|>n6zw=yLG4 z!Xr&y_$J?Dd$lP1-@;2>3t&L{pPxBm?L!U7CNuxyL)Y%;rW`IOL6Xf9bpB$`BD-Qa zFs0Cy`2E&Z3Cme}nLqh18F<9Z^>&i1`&q~<=p%@v;Zu}-z3Q@tR_oi>e{Ek?>zc|! z)o1?F4*hkB5_dzK--|J3I^(PP@UiB^e}><0vyc{(JsGx;PChh9+=Abw)j+u-t0x?< zrD>Tr!XV3|h?DcIRZ6!@xwF~gFz<1r=eQMQ&Q?YrKfHOu8N5>&Q zW05ha;OLs{eDBD(?`L)^b%}bH~One{%ybF zYpQJ88h3?Xt=sB?)#<{#1vj`6nFQfAOTj3D+G9=tWnj~YVD%Y|iC<1J@=HTS(*1>G>-qbVe2MqW7sQyKVNjN#e zqZiHs`bXJa_G9=NRtuYK=B*OIK7se3O6aG%t4n9>Z1&>ONKfvtHJ&&^5BsGG0iO@s zgkM=ouzS#KC^6@cd2)jlXg-8R4q4uF<2YVw_L_*0s2>tmSAvey1Sw&M5@`%y#D~tM zqWFAnxHkqkzHA+zV+WsxL{-=xITGAc+DMBdF4q}V zCARC>fYy@Tu*2QjLNlBSn*<`Cz-`H-JM*wgl^-D~N@Y(loGm-8j?h0xbCYx@I!MgO zSs!x@M#rk^JO~{cZ&B=qWd*!FCO(po88rG3S+**n6zJ?}Za=h|zj=|-;5<@1hfbro zg7GLK=|27@GXpcTW`z>hzR)qb8z=G2KkzMT|<_fx_riBu`_8A%y(BoL0fOPccrSqiH8J_29%S=Ipt?78CaExOLG>J;bLUBx>f;nSgY( zGZ3*gF&S~@!-_Y4OBHS7Ag<_>wPGxsd%j`&1~1*{m&HY9gRM+p5cQMH^`m!pZ*Nz> zT|ZV{1Zv1IV`{9L@u+WPHm#xCnyA%~QBAy1Htr~9`LI7z-?Ny_p8kH)_R=%|du5oj z6!Op2ClncdfGV)DlyA=^IzH?tipe_hrPr%Uj{Vp)!tMy9zpficuA`wUZ4{M|Op+MZ z^)f55o@f^s>pka7H#AS@E5T3PzAJGipS20Nr>E;-*mb!>u$PRAls2mN|3n z!SaaGkB}H&L0iSV2BeTl2|mH*rca)vKE_QXw~zKF=n*LNlQ)087<5^!HWjW9s9%4^ zkxfoDLA;-)ZI;}9rHnSMtUNAt|2zUIz`Xd6IK;YWdz$~Jquup-g3Wa|o-7;Fv8lD) zPj9=a3zzT`me{}B0rwI3oSF8kr%FI^g-$t}d#$c=mp&HP1FZ#|UACulw|L64)CSq2 z+o*nF6`Q}(=5=^(Q?D%O>_0bc=J+>r3G^xNo-<#;iQDy}_-6eTR&|=!oVFLNpCS=- z&*%REzU!xnt~IQ2>40cuSB zp3<}O<<8D3By>2BthV`p!$Spnceox4nzJDuS+9u*396)@mXAqC`BcJRM$>HPW7q$+ z*xJ|~bVcf#rw8_7??hy3O(T~qc;bx!qc#nu;3W&1PHY=hBvay?GY2zpa=D zANIS7)Ansr%U2GxETd6l`DdDDKzc4TOY-!2W0pe^bnt{vfAvJ}G2|UFzD10ju?jeZ z0nGLJH0&6HRCPh|m$RZ!{*oo>AH@dY@Zz}tc|x12yBc%*d2I89bsWF;5?4tcS$JlOUgK(k+&82P;Wnd~$PB=Olf+$zktPxnVM4pV|e1kqTw79eb8g zK=!ZDUpo1?WIC0YGh~{hGy%z)a!th>!i}6AEuq2pG+qI~|K6wG;HVEWUc09HCv2FC z@UNayRY_@Cpj|}WdQ~;$-P4IN|-pc=EK~W_a6|^;d|oMd_r|{H^nR2Skr>t zT!*UAq~NNW$T7HUmsBNX8O@8r$+6^U#uu%t1l)b2lXAkI$*5-58R3qKDs_Lpm(N9U zN5#uJ(>_TO3T#bT!|IwLr;2f-*T_Y!Uqu>JD@wn5qasExMcz35@9AtzMh_9w(K#~2 zA4H3zm|?C=)XPN}2d@(kL4|%@RxYLCAa;{uE5wYPUEAb|SxNgdL+OHL7+QTFDX$!0 zXXZIMzbMXQ<xW=X3iQuD$&CvpWKStQq;ayh=SjYyA8zG5^2$QOMg1$9`q9 zY%g`ha>avxz9T9i(VU9n!te&&K&39E42Z6IK>wTDR-l+jU|&|Z1maCV!1q0A)|MqwqY zDIfo>EJ%x3OKWxv`j&lz4Q_Ex`=;fR!N(i9@v&NOgxe>23R!yDNNP4)Go8Kqy=eSg zS#i=VX>OvJ;xoVmV`BHO-n}{|(13u9xyK;!kyP@WN$EqjZXM|&v9^+;A|qg@uX-w7 z?GS~cs;K+F2BS9?0ch})^aTKV<#o3;qctzee^WuSeBsO*ruk8pCGVU`Nfge&gG}L( ztx(Lro2TUbG^wfoQ?ox?k{300E(xDmZyob;gx{h;enVak*h zy6?L|5x8#*Ohq#hqOt|Xw=;J5x?dEvrW%wf(t^b#Hg-j1c|i&BcT2YsCR-!eb-bNBdAe`<}?-DD5f1$7|p` zTHP^hmtt7-467s1jXlOOZP1b&nRY5XZ0^3>6YWjfb2J{On=kC2=qKA0owv{IYX5Ym%oTbm7 z735XYKam0);_)mZELdAZoFO*5+jUUr;<>8eg*u?1G^&!6aQ4L<5vsB86EIa214q|G z_AA?P7di@3%2q$p-w9QD)RR5;8wr!#1 z-O%A`V;y@SF%^oc(m%PLdW6D`DqWm~>C&bbA?f1E^f;{~jYW1`k5eu&!QWyt-r5gL zMu321)9=0*F-RFpNucmB%n`_f&wLU8E*>cY6y1)C z>9X|J$6y6*_J)T5?B1dh&#aF`Rq_vSKGOOm8?R)4OD^HSQql0{iiBNp`46~ATBoJR zG)Q(kz5daMAUj&PL~qTlxvm7N%--Dv=r^!1s=ID`Ux^SKDg6eW*qq#|Ulhpw8Y2Di z{%7Ec*bK*V_=w}<;&4yUGSD$0NSV`cs3zbF5j&BvH-Q(1sHct zS3>GEWSn~5kseX3_bGotqkSElK^Dn@TUfz_m` zadcT!I?KL)!$oh4J9vkNyhuh)#1y~*?qNLK4$M_X@7H`XH-6!!XOe(bCQs-?^#Su2INE7uK$Y1H4PF>Mi_P#6P5B(#sYAMb!%7KuSF zx&@7(wL-2I1pi_v;&Nc|Vg}h#O3I!@9OVE_3z{#yEr*0pr2~Ru zu_ulQ1N7TySiB^DQ-o2mwf*3EUQxq%z8%Lo8N^n8TYYcPIFbZ17T^>%n@^haOwVWT zd+R6!a!vdqU6x{5JMg*y5rj2C_VQ2l#i>+l<m00-&tp0eQ106)oAJ4VN zN95Vr(O&qoXN&_f5~6Bu3kP22-_*70Y}HqFyzN&t%U3-OTx;u_U>dF{#f?QDvQT~_ z4af`>ye#-mAN-xp{FS7d2;0kONfZK6q~P4QU(`fc#WH_U%SiH^l~(>C55@>A6Lt~m zbDaTOLs=aFsDOjoE8e5#GuXy#UwMQ9Rhy8H_Z>X3OI&^N7+Kwx)}51rmVlGOB#4z5 zOdSZRFKPKyalW?=|ux z-d?GD$j7&%@_PS=1yPt2gzn$PBi}%r?70XBEs@`MP+b^rA_}OiPo?j9f>?f+$l07iTh+5@jbOw zi*IFWrtG1ni~Hx2e`o&(9zUAs=BrR7lkU$!NBXPGRUvr#3!W(?#a_8Q>LGF}sSU3=zkE@q z6`$n!EQJN=7iF>fiizXUl64}awNb~T=ZR2BGn&9)6K?!nq9_yT(n>e~S|0U({H^WK z9C#wciW~Lis{iZefl#&>9uWsqs~rWs-gs6{v9_}X`TycqfYMh?Ho6fLQ02R4P}qCc zI?gAxYA+xz1~;wgKh9?*PNnL)w*KdKQDz?fF1PeMOF1hzh(GS+Vcj+EfpkI!gzYH- z3UiaEk`gj<;|pih4NW%r2WQ8L?7G#06hq)*3aagrYxJUGqTRm2Q4@C{4Un+g;lKYN zmAQlM{r@~?MhriS$8N({{Oqd7XaP9RopG7 z5$lYbm(%>3oA_cnoa~?|ha-p~5boH8M9dvF>Ug%#`Oj&-0HHpSaigeU;IG}acn;Po zA!bpad2WB^m*3+xBi8_FfZ@c+&#JB1MD>aU7e+AhTU zn3x&<7pnij12Jsbp2k@XuetK&TSSSXFmshsap|b;y z4efVZbc4>8hqza~UX4uqA?vQaxEczxzaB7CP1dO!Zl-MN6(-Cmo$>xg%Maw!6Aw6s3ZC}`$9h8k{4=U2Pt=dNZYZS4Ldm<2|)YtM*y zI__1Ft!$R??e;diR@#k*MZT@{G!wQXu{ikM(r+UStHB4%onMjI zB~}(zD@qc{#1bSA&|}X)1aaR{pGo54Pu-~sXg@MqLpx+(>XLy&->?JbJd)0NUS3CJuczZHk(mZLqn zdCh13X!YZ_w*n0!0r<%?06pf7c&IfJ`Py^F27|n|uUyo3P1y4_{nrBM_NBB&lki#O zjemBr-M0}l27opfC8(s&#~B^7&t(K!D2X4nLq8;PrJ|tq26!qtnFOA6xD#SsOTFrG z^dlo>w=A~#?55dgp_3`7qvCPM*Uq;il^rbd?;?ZhnK!S#$D$39Rp;^kjgB6&#r^pI}>l;qlH2jz&q@@5gWi1f3 z#taV8N|@kQ{3e5Ao->fE7Oy+F@{0Ho3+%A@@WmNw$NLNcQ@*KYU$Arnn|&L}lNSPe z_qWex5sJ6(bY%7E@XkB}1G#^CgcB@{B~E)up~FFEWw}b(sJqo}l-}_o_Nbx%Xl#-x zF+)pIP*eI6Qh6fQk#|(fkZuPCf>O;<_6bsA6rd#R*jyr!AqwCD-l!LL79!RjJDlTv zH>7-oZYkct)yCC}_HdHDE=|E;DchZU7XDrrvVSJzZNo9q?Ri^tLrKBP+F&F7pG&46 znCw#P3=?2u4F2VnnD8n-2XSO=)r+_k!cSwu6;ACmN=ZwDoBgGCyt=aA2P#F9Y?La` zL@q;T33hIHac(BQ_c=wvwE5_Ro`4ujDr%$u;^pf)lZ514Jj~zde0>PWh@t1SRwm~% zEVFVfXM`f}+027~g%JY}gO)-UV*u^wPZktC>{R(+w(2Da9B;&9)^uk@Wy(Aw{^BP0 zhMBAARU%+rAi+eV4~k%^IBSz-A?i&|nf&sEO5R_P#q0Vt)!7N(0KArS$>$NRJYPof z5TQa5``H0TdNq-P8y7k5fukE~1}@pfaudlhP|bM=FZq3f_Sz3USbUk z1G;!Guq_n+`e>sf>@4=?{_NLBz+!=RzPS8H%iJcY@X^`j0Ti?bVsq|>OeAKDQ-D{i z&fOy2_!~XWVmjVzT~G8=@O<<|sKoWf09J+2`)|@o|YKcmBWv(;nX$AXu&7|Y?t4pj;O|dj{ER#F0@aOFkm4srW3) z<*&Dr*T`i+e4=9CNBq+~@1b*p?vZVdtax)H&S$s~-d3!;6ww)T&2N+4x!WDspQihDXnIqt^bey;nKBPLA5po%5R0ka9zgy7z|dO>#vXQ z0BWeJ<<^r?;bAe6GkN0U^g0ZCeF=8fNr}lzMG7*eiZSQ3au8K)pCZqrrRm*e4e;=aS;( z&iCv_ZlqNIEG1K0Y!?IDKl}KJu@lU^ymWV^ChsNQbc3=(3mxs4n4+boGwCFISf*GJ z9r?VdCe(_Q!8GSy?fj+w3Tr)df0x89Xc}>#uqyvd@hO_dHb;BD3{gPZ`6gY=A|cO` zKNrHKo+Iay5bwRNJZpl?h+`(*dFTl{ZXJN}H&qM2wC*r=rIL)%0?u+aj-txakD#I5 zqmI0^a{7C{G2v};c^cK`g`FHiPq)YKkf>6Mw?sD;rXtPHtsrKV%q96INogYDV@1D` zk<|Lm+8qnqs8zI&M3f^tP(1%s^hu$ePZKZI^-Emi<5~SbF8X-m$5(9S1?nBrc`Mwi z-uyZPNDNz9_)iAQz<+DFk7Sh~D{lFt)?^HfA{O}6Z-(?n&h;io$SthmXTskp_uyKK- zvs+6xM!FwmpI)@!?)~i5*O%@)v`q?>2R_ubNtnzTm%qrj$9qdtQ~%ZE*^r_S4iw>c zHr+IG^~C`m?@4beHpD4aefSspr2grJDHd)ZhCQ#+P^rB@(0=`mlDKkd+)x`l?QG_YQuhBY^(-Mt^=`iywPxM2X8fEPb$X$6C( zazlI3m@P1Xt2RqK;v4aGQ(g1g_Cr6OUQ8JS5j!Qi7ddex8@=SpjVgXB+d}|DX zw`_#T)`CzJ@V1Fhi$bhany0S-ioPy81<_1opO$--Y+MervN44QQ?!8VCEwcJ8F}b3 zhM`#Slh9NKnKVfZ-2?eYeHjcu<}=&P;+ouF6=%0C`&-+jyII;-*aY3P68)8Cz*`TX(_2~oA= zQ*k>N9~Ou6Rm8VC3(uaoteLLhjxX2nxNo}Skb$VCB@J#hBOY0lyK+T-wfUs^sKaCM zyP0V7y2m-@VPK@=@!)nxPew6wLg<-11x>O zC^oxYhf%lttdx?b;gl=x(LuD*NOE!C)~uUxHsv8yZA({ksdkQ`QZ4R9V8A0=5@?$hzoC~!9ZkU_#eA-X7zBoZcCx)dG>;a=hOv=fiK6e?Vt@Erk$sHt(S zn+$p)wU1+oxILF^`vWT@cdUtcKU7dv-YMv(+c9?+KHuk-&r;Hy35W$r#?h zUo$mmgS!sp25Uk{EM_I??F3k%RHK1~H*3#kyLoDK3Ai!B5v?0Kn5sH1yAt)3Xo)XS z2PwJ7yLmtYWDHvou45@o0#BC(UhM+>b83rSGnna3?kY3AjZ^ z9v?N&crWJ<_TTMpzPBE!&A^LqytmOU(qnU+BF=RuDf8`mnCBfWN&Ex9nXgj3ubd(9 zBeFFzydRGS!e^jD+`tObP5b%niVIs3hvK*xCJu+LhOm$;g${f*tqU$7qdhBN7$q#4 z%~?wK?}Mn(c#%YusX8(DNH*nD7D3Cil{*(I{zAj~p4<YwJ1tsM(QZUUDScSzt~pt!60@@`TSHRYeUXva=iEXBDDSv>3A*b&7{^70ms zPz@ephRG~d#&o?8!iioTpZH*{Iaxj29H{Y)GbZr>+pGY{g{Y>s=kwWiifroq`#v~H z@2zCtke*X`De`(~O!`w=5;AsK(_N3=Rn(4>A&<|Gh?I9yDp%VtrHtz5ui^MZ!_3do zzdmXqiK-OIjcxPT)a#M1D!fIri_*P2U@6>O@qI&*?I&O%s(RcTDksa$>3Y7-g7<8W zsmAf*2n2VYYb>Z?W1$nMa|^mEgT*VZh!cK{Kq%)Nuso2Lr1S|zcaQMiU^QOv+bt8} z8K`MH(&Rn%I%6PYB=b z2fJu(3^Wwz)*B=CM`o9+XR&BT*_C{oF<%ed4ih&&P0%3bA8=8>!|J7W+zIcUIX~sO zuKCuwwoXh&Cb8OCP~#@~ArMM;U4iLVaX25pUU&1TU}hk_)u zR@g#@h9z7|Vx}XW25~73raf!gI};i~-dmE4vi9B17g$;$T6#Y3kraEe|CM-D4kZiD zmUAxJaRb@vLBZXL!QI&l@N}$*Z&am?6z0h)dL@MJH}Ju+yv*D`wsfTK$r9O%Bz(QE zToOWz?9{(aW|*ld6pL#sj0Yz*vFdp%m1s&VyEnc!`ML4*YJ1GuY%yLob~`gc&>xCD z%xDxXGJu$1oVp{DZW1mw9%teGlQuO~BK>bFc{=TBW}*@rMfcq10-PLHd42~GlPwSs$GqzQ(=GB7)}K=x_{{s#t{ z=*!mOoLlQ@o_~#)*Zo6g5Ea$C={@l)zU4mo&d}&~zSZy-0hW()n(oT$(sA3S;)y`5 z^o%EBu#@h;b$1QhmzaNsZ6?q4qG#q9E5lv?Mj`e62M!{`eAmP=WL*fo4=38$r`;hv zo?ZODg2gAv$NVY-0g-d_Js6kzUw)X2R-J%^ z{D;KYk>_3I^~ztN;Lvd*pPGx0PMp2_XfHn)FUYWk^f^8i<0)=o``jIw%8d2ZWr6f`hNFA|kHybyl1nm? zd`rPdh2b6AZS0?zlaq7@lk*(z`^J%U5^Wx=dCx=qV=-Euk8nB;#uc_Y?;uzH(~|j9 zwb{8MquT8}goo-j@~jj=v4@u;9_g5I5`tY6ksUKwBwSwssBWq{{nSknh`B!D+*I;5 za+=xvTQIA!tG)`R$j0l*B)3w6zPEpKZU<6#V&63@rs7N$Po~M5R`I`E%!Re=$3-Bd zj<(Wy^ZIcDQZ)ZO&0-2-C{-g6_7k%AN_l#-MhvVuOFrU!6Rlw2j-|6!fJ|G}!=(dw zR1AYNFdS&N{X|kT@xu}hq@ic*DM^+YtWEwyqZ7E2MUR@_)T)dPGWFKDoyX5+7sn5G z<#}vdx`c9^lUlt817gP7s|c+CKtc zONFT&N($lCn7RtUk&B`I*L|}rRog}1(FyQu$;=$jkrJ>v3D+gGWTB2fA{F3Eu(W-7 zD0m?3DyuLe418-}4{1R&f3;N80-T(wF6MMLSp2zWsB7NN+j}4?9kGL|G*TR_gjHym ziZ0g;G>e^o7V~C^Ng&A$z|-5~^t;7X|0~*$f5REj(H{!SQQE&PnF&+xs+9fN@eS}XZ`ZPejHQjOHX<7QLUr_@0uu=A?UjwsXYZ|XmU+CL!o|7>qdQpWa`e+N)6p6o374L{XoBaOiWhsDvITxQ zB#yF~VUPZ0olk!V;at`3hU%nGdo^?yXDF<%2}bkt4LUk4WljrnA6?0eIOq3!GM+&L z!Sn9N$DFuJ^eC61dg8X?Lv_H4I4GXZR`9 zRme}qfT!m&J}Ay z=4(E0T!aDy=^Pl-TltE8tZr&Q2lrbG1e6%53^SB<27abLut`Y7%GxYG!F!|9y+ddelw zJ0-AZ#RRaQF4O88fNXRXJL(Jb*%eqz+Z!1LonKrP&q3hJ6~L3eooDlqBqG}-<9oNT zZ3ayg>{JB%EONUODB|CY{2P1$a#Jg6QrFnm(ozH=h1u&xb*iZO@|ht4MXTe3YY*`8 zxs12jO*Y7Wjl_doo40G=jXGm)9S2TS=CS*Nt;OHKS!5jV0!bL7N!~T6fpyt7-E=O0 zQLJpX$XjLaR9W_=KPmd#>{er|$#g*Z3j{;55=!JL8IwgUy{1L~{3;||cw13Jnq0|J za+b}wm(^@YigvI85_Oqib(|9O8mF4RFm}sl&l3Lek}_Gf^HEXpkAy{mJ*ZPu?ewsKsx}HC0d~?C#T#~-^+U&)) z1HTqHkuHv%Bh+vm|?=)Sg*E_Xk zO?TY-nl2zoevG{@(z>Nm$CnlgcwsvGg)P(@GYU@n5xnicR9N(eB}!|SYN92uoNftW z-{U_{$SRuj>y`i-Y=T7(+nuV<=T$)(Qq@dQnU|H)kVcAVM(@?EdzLvetq%QxQ z&i&`_%p=DBh6+W8G)dyqBv=Hj&bQ{W%+t$}vriJUB{XiwmL7i~kDPM_8?H=)?{&ju zao9g^M1|N?XsiRP@b?xgnbqUoID_bv-MWrN^H zO)Gc#6j&G!2l;+mj^*6P6}@&d*1J;DR2;pz2DoCy?appEb<7(PAUz`Zhwp8C?EKXQ z(;3vvj7#rnAFmjc;>XAk%Wo*5b&$+dHki@0E!EL{{-#6@W+dW%#7NLS+}{W;;pa~W zK%}E_>cR76fJg6W%`ivN9tlcRQF_yDIVZe6C~gEmms1j22OkDKwz`mWfPQHkJP~Tu z=~1#XuS#W(=zGLdb6$axANTf!uFSZ{Wk_8&BG^ z3L`(3UNn6Z^H?fr*G}U0#B~3VeI9#`YDWsJu+UGtFj##D%Z4uEY!G(wx=y=Eej*Ld zobpMt?F?F5G##Ykql3~!_3*iQeJ-%3aR*#yYk-&ZRz z*Pjt4Fl?yb)WG5gGuv*^8+LWA2A3|jYmjLkVndI95Cd3sW_^g#GXiT$QieM^X!1{N z;aA(Wp5|2t&-ob7kq*O2fkNmMb!l?!xv32u;u`T4JB;x zmax$)f{Vgpx?+d?!4^l=j;|y8DaX-2IrL(qKu+kZehdSMDh92mpoHL)Kr+Q*N;#Q% z8P^l*I=n6pXf@4$suwA%gb>oRZS>5P=8j=-Vn7Y}U#VNHH1pdZh&W_o955^A-kVyH zU&a;T8#e)FFN4zSEO_+dB5$tu+CNZ$+Gt5h8eS-0+hC@e=JAd2tr*Sxi6%WqWh2{9 zB7mKvM(a2;-Sh4BWI9|EH^GJ9 z1wFJFo5ZUw!;q8jNRze>U})V3+FG+sGST7nz3sif1{P;8U^lupzXY7w--f7Vlik)c zXmEEEa+>1^_@LZR|80EhVOH0C!0+WKjaivXJvvUCvGoPIr&jk9@cla(vCYxa!OQnd z2quR5jCXh<38Gj4tRyT0_Tk&6&zjb|@5!|IFdE6s9dznjQ$1-1tzgNQ5uu@ce;9sD z4V!4);&i9ZlQ?ByiR3F7Rl<9Vuh$tqpyme8-fY9?Xz8*vs#N@%^sv$wySS6$20vWB zS>%g#(Jfi%BO`HaRMnu=_oikm9v(TvT7SmU|A^yw6dqb$>FN7)OAee@1ScaJo096* zD&3OUX7APYEe_-3t2vnpmC^+X$q~>XZhulc4f29!r?;6Uto)UY7dGcDX^Z9FcL!Of zl37JFC*iJSW0kiJrt%4{yX%+nr}4v6f6(E2-u3=TAR$l&T*|Jqr!FQK+Z8G)yxVlP z057=>E~#kfjxillBALCVvs~?*JZYSYcF3Z4*&X;L(pK8?X;-Z$HF21o8{c;)cVj5H1Yhf+ljBqDn<>lTPU%^W1Fqe><0T?X3lG5G4Uyqri&WXJFv<>KIx zD8AJ%>GIZ!3`?6kc_I1&=O}!v|EC`rH^iWbt4o-HC3EiD`_7cA?d8qD_4WNML_a?x z?+h^m1J{w+0y^`C*frDj!uphm=x}j`yHZh9HVkUc53f;1?TIx)`*M2`6V#W3s}dCF z{>N1Kl0AHtg(@^OXC+@o3o2RZIo&t+J{ur#0b_kjP32kkyB{uFO@GN3kB(2*aJ#BX zYo9>|aO3r}U@|rdGtsLTnpXtY)9Qca5;zS{;7IRYt#8UQpJpS~$de zekq>5o2$Rpu&B3aUM#OGIX3_Q|7YmWVr3OlcwiU?JU&X5^{;_*s5R(tPCj<-`=*qx zhFu)P+uzize)Fu)We-EQGIPPbg1xZzSy$?8hm_g=fpShri|ht=5^%GfvDhVVq5 zy`mwt?$50TEku}b7}R?hhpl5aX*U8duBVqEp{sMf=zTon*xgXNRVW5!Suaxia(pzH zR4QlY&T~!`+jsczV>cW`3cnq^^m3yAC10>~=F*1m(;xk+&sBcc-IH^*M6q6#PazqX z$70*sHhktu|FzTwPV=f#?T4E0(w_0*a(@~39B z%k%FwYD|1o&T<9sX?l1(yj)S?zT&ezR~C1LI9x6cb&;O2&#`ut=AK$qf7K2RRqToL z*NS5fShjl9Z27%HjhXQ$PcA=XF)*&Y&Ad&{rM9QOu=vbNRN477fAwHOs%(EkvsKe# z`7(mh^NjXpKPTh^RO5S7=tfOn;O=FMFc;wNZ$>sV6lL)T=_?XE*-H|wF>C67=+UWB z)BWvie1Hn03ej*3eBcloSb+sU)v5Ze%G9h9_Cp(6X;}urySf>-tuh$5swNm$eL^v? z?5LV(|hA1M%q zdL;B;MJI?|@J4uKF$N*Ep;k+vNFmxwj3L|CZxKCH_ytF6Gq78B&HM_XG{5Qr$6z!L z3X>IAWgJ|fqH{_LlcQG%Rd<-a%0OiyQ>CeZ-^?1*$W zSwmBAKUe>J>sViMDSVa`8dHWTp!pJ!?cSc;zPQTu`S=1!fe7MCJ{$a6J{y9!2WPm=g@yiN^B()mf&Uhv)e%^q-fS;ClnK&yv*$W@Ra+Y98ah0g&yD`Y)Wm#?PxeL}cxyA_J$*eYQRp(*#Aoov-zFq#^IWv2UD zm!u-seixFromLpsLH(fQ0-KrU5imax6EN2(vm0mbJL^owHW(D3vyam>r^!=+LvN#4 zM3T`YURhR7|1C0#C9nBitDszgF7%Wt8RwL8ZhCZx)~m#R_>sTS*hc5bNTEaM{W z(sWz-QFWW;#^bNMfZ%BUqmR`6`c0x)^RZBW&#%V$rqq-?OBR+gewlGPm7+VF;+n2I zD#L5gMCBH7<8kd$d#U8`M%W9oAL8&lr=dYCmKZZkTAoI#n?9cX+ zebPBnTJt`*au{DaqK+P6&*5p))*xNG z)Kf`Iy4jm0LG%auhdZQehh^kXto*$vuuA9I;6-^)*~-jO+$9Q8*UHS%e5UpE zj3>wc%2hycDEezm=Q+b6^R8WYGuPD(5{AlAnX2Pq$Yy7eEeeld9crjKNE{8i{(*X z8e=@_binN=78a)@N2cCK*I^`gH-ak7MH*(|Sgo!1Y%D)SWX%0RXlMg{;Vz-1N-jjvJc@{Ug1+*pZ_eBKWAgrC7 z=+mm1{71smW5o8OpWYH69e4UWd2Q#rq$Ofcr0c8=Z4CBYMH#--I!`mYOuUuMkW~$o zN(539=%t4ct;>kF@G5|;{UKq+@O7INddq*lfeA$6bZ+)koF(KIgt(9<+9a}XdazrtA7 zhrdKDD6%?P6Rx;3 z5P!=gNHDby@H$=o+Y{vQxL#`2lr-T8Eyet$;i3YE-0-Q8|NE;S!d1&%d!EL4dpV>y zYZ|fkm-jY4eV_AW{C61Yfu>jcJZcLDiCMxBu!)HD70jLR!h<4t6|Jj>eQMA~iKi)Q; zxs*|aP3abxCZOGriQlR1&U96eNEN#5cYLRt?kqFff8 zFIn|xvo(&^&hQ3?CL8PVCh<~&@d2Yuy=e}z0)UoY!DQ{+`}9mFq^PYGWNNwYl~E!s z)+EWclcim@ERwLi>sh`WeiKe$TPzPGA3%_Ul2^irs#1hyhnG$+8+i05KQgYQ924mD z+oQCJyi7x9JN>uH)!vUpIG>mfq*EO6(egDVhSIvDD?=toBhNVGp#Mgs9(rjsXS&b# z$QREZ@t%1)&z1_I7;L$*w5Q{PT0AzNn?gP;68llc|H|!{JsBkW`A6lI5UeYW~5I z=XT^in*>CsE_5@bkxHz@v7#qV^ z2@(YR8h1T^EQj-AfK0+!!9KyHB~#!hTkO3nI-phRD|=_pkO(<?wO^ zmK;zcFkKLG+JEQfDA}X=hZR&Vu}IuJ$EMo&T0V4LB9lao0HXp=#H4p2aE_bt;&AIB387rJIbze{Y+KuDlGKGiizu6dmOXiJ) z&a>@-D6l~La2XZakzw6Oie*@QVTjVer&Ox7`DN$^34?mI6HsoX-CG0Wjyk0iF<2A1 z9m?o*r4dW`Go*^6O82bhQ~CJ4i~oQ8c`G5wA!Kdq7=&qMUW}72{ljeR$=fbK(uXC zeugfo;)~tyZNEr~;LKI7hZ$rI-tN zPS3+{ct;XQ)2C`Tg5T*MZ7(U!x%Q<{&USH|pnx;aufIz+k@i@<)XZd>K98iJ&(gU*{fJt@xPJbKMjvot{x<&e%hm7f>d&nb22JdWoByoIT~-9d~LA7)pd4~}zkaH7na09Q<0km<0$N~ymqbj5N2 zl{!;EX)lKC9Y>~7F$uH5TIg66QTbv}2XrtrHY4WlzpQ9{81`&RK~tNzj%jFL9~(z5 z-4g19yyoqrqzB&Eg*rm2*rV0K-#{G%Wv6LPF&tbrv5qS@uW0S2x)VJ5Hh9$KujeHR zWwKVC+>G{5tspyMcnbN?Hte<jM9sjuDLqj*6wAvS2rLt7|@Iv zVhVV^LhE!uFCMj894awnK$Hd@CHlC>X>>rVo^;SZe6^IYg@0YE|JF|U&}Zhx@D@aH z8EM_wJT7cEYl-vMd%gKv&&L^FPNt=5P%@mRuM)=I$R-*`fJOfCWq^n*xaUw^<0z=QTiqjF8tr1h2+v+kUZ(LMLRS0thFuzwz%kg z*Six=cBKo4)J;F;jH>UcQN#c7^5JEQYKR{ob$k_bd+9g#i8;cn$<1@KC2wnx{HDI$ z;yhf=Cowc~@{2emr1lv6V}|;Fm_h6`}+b34NU9zwClMh{(DoqSyvN6RRT#LexR-@hR!K3@dq7s0e;nW zy&rW_`~SH#Zw7GhAY8reoG)r`hK$7ZvG>%1U4m27AE^00|J{9rS7wm%L#TT7%+{7= zqPm*1`R=M0hN|}?Bi1Hw^|vc@Kzj^uJkRbh8iE0_qG({reDS=n6%23D99Crv#bHAv z;9}IJWRX8wTUyzHgV*D*f864(^aUoI2ihH(w+jZ(%JEiHR;!h%W7elo-OED$wbRIV zh}14h>41Cm4BR&za9~Vyz*t8jw>LkcwaT@9s*iUU8ry?k`H^a0ib3m%QnWV&Qdozt zrEIrfcFb!EGv#$&(mZKEbo@AaJy5A*G8W~$p2KLQLM#jl6l)< zCg-+7n$Nrd|M+_#Jt>Bg^OaI>+bQ^s&#u8TR1zUiFQDs%>t}97$jn-~35UhrS;i>l zDH0%)(w9}eNH%(ag&o1TTF)pF%0R1e?p&LD!}ZoF(uffYM*>7(yluE8mCq`l{U>#U z9ZSrXAH}0fv#?RvhEAqZ4ZyPa%?*loraTKQerDa;&%PN=2Bm#9!teI`RN8or@^cp> z)(r#S8N9~G`{myi>Gu(P$=x1&sn(uye8z(b@3nEd652WX*4Jp?LIHDYV%;B1E28N0 z?O_2gnPBo&%uE6ZmAbGf+u!9%Z4{#<)^DvJ+JW3&D1dV%8qDs7O)jA4Lg5lU7FD)M zcJ19qoQN5)4O_C~%i;CI)EbBX_nuB&wm&!|{SoJgGQvA)&O>pO5=~42W{*o01REx= zjgeVDZVgY{uW%Uwn%$4O1Wfm`>byQ_WOc5)Ndh;)9V6;W*$Znd+Y8C7rd!Dw#Sk1y zrSbDGUFN63jG|D%fTo*9dcWnX@!)Litbso6$KSDJjRvV`cO?D-%B~6 z`8X4WrmV62m&@#yA-aI}f$#N4877#L-3<+?aPA?^|u2Mliq2+Wfl% zbI0xrFvfmEiUotRyYIi_%twS+v)?K3&gJqry)_UTlTbcCum4})H{=parb*T1^FELc z2qcmP&l6ydTL0dBdl+~sRzIb+fkwzf8;NZ|JGMCwWY*5As>euLqd|<(;~wEB;}ickrxhaSCg*rgirP|lTBGFL`&U*_A^eU&(SQLfCiZ6= zyXp^pqLYF9#NKla=m6}f>W-7jE`8?A^GcZ9?eGSW(O)q`wLU^{9N>GuX6n_`w3<h25>ZiL{X)|yHs3`ngOqfz351A+A@%|}H`G=^C|J}>e zeCXOZ1hC4)LhxCAT50XLNwvVI^BUrfnrzH)pMTB=+K@B>7II6E^EZws>g~gL3F`b+oG3~KbPmE zx_AhWHt&$65AYb5_!dG37eb5s2i;ck2n1~Vlj)k-sS-WhGu{NagpkZ`a0BfHMEknN zcyoJmE4fWu-})pC17lOWD9ktLVW|G+yx!K!p1b}Q6GDc7;UVrtI%HYf%e0nlT&+XR z#|e5*1Mb2QY-*a?zG>VN_}qd~rQE*$>nV`_SDs;ro&_c{>>LQ^v!kpfrCz+-<4DVC zg2K~MZ5-U|UE}xnO?sk~rik4&5tQV=0i+Vjb(3orSbQMRx73(N3I2(YSX zK6f3K?YnTC3xG7X*0@_ZL;tuk4;YM@zgV9G=L2QKulNCE{#`3i?Y_v%pKkfK_H<4( z>3ZTX3;vCg-ygMP9<{}cZXD8oYPlJyE{Wu$pR)r-eFFjAKl1TBJ~kN5sWQwV-)olSQ9M zB|$x6!Q-Vf2}fiH4ysCP-LBMZtYJb%rq0{%beNA>V-S;3`GZimpVhuPBLGKKJz5^)Z^I0%itErfz?`l`2`zl<|4@=54@jB-E z6!TT@CT@3swB=Vjb;nP$xU8+{4ezU?zV2al3fufq6dHE_Vz&t#8)>A7S@eDS2>fLG z?%tyoCj-&~|A{*3_lq6*RsbGjl4EOE5mZzE0`Sefs%S5Wu_gA0(mt~o$WNr$D#m@5 zzy7`EK-M32j$3iEa-iX0?-ss|%hWP&7S}sttZNQNR8Cq6Oo+^c9dz_{Z1;-BI;%W; zP;_=v3CXi`36oPw3gZ&%Q={48^>^p8qs100F%V$#v9t8FFVk1LThKp%CQQkqb|5`% zx&CaU&u|DxW%SG-`3eB1M0yzPKIIl^z_avz2Eu-x1#hi>8UyKxHDr#u+4h<|o7Dc+ zW%y09liL*}MMEn&zV3+oa*xke%h!V+GTs;4PO@G_)KvFY$cnu13Ds=b@}1S5`2W-l zZ_tuM_sd`UOF#OsnCaAd3_+@>Fd5IY%QF_xJ2-!=pT`(tp;`M^Nivel!rqAxm1(e( ze(MtEQLz{vd1{=@A(3D1x>qlN?p4T6v*fi*72NQz0}+UFMJZbG@HE1X6ZFsGEgAx$ z%s{kArUK%9CiXI8Bc%*nc2fIIYX5FO9dEKDz&O#ZF7&mESbTFmJ16I}CVVpy?yd37tYD~Qi&jn|30z^dKM2cccO&X+xratAvkdxzt=-jVT;<TEDqJ(690{iB|KfME+SCnld0D$h&);@>%NKe2p!Z`(ff5?QfsC4Q%()G6* zRuJ@&)wc^1^2>JXW5rMXWt(RL>JpcZvj5et`ThB{>%UnYfn0}K%baUpO=>4 z3dB-9kO&E-PhAEr-PPf9a1fcwYa_B$A7}8YS8nK!09yd(iW_088eXtb_`98##U4J( zqBZ5sUl!FrzKor6ldjBAOln)5E9zfFS*f|X{1GjpH)%#HIT{4+1l;4?tAdu^^Cs8O zbo8`uCgiK~RP)A^o3~$}cAllVwAcmFPsIchEn%iM^p`1FXOQ5k2Q8ee6siEb2R-a0 z(S#Js+}oRtNV3`{8$Ldd*Cp4Zr+g$-GLMAWE#1^lcx$i;E|$%S{RuaT{XI7f4_=cx zuLV5C)4cKLehbYhh#eS3#fmN6x$Wt#@vu$=3F7RtV1&! z5^>;w;j3O>F`xVBtL&!vQqRBa^1rJk9YD{OHZ0#8xl1qI>j6I42>QZ78Ljhf9kL$; z0x9)2TI*UG!DG9CNcdg)jr^i;szC-RM~dXOHr~J0fg@i2jjb}V)U)O_bb&j5L@-ox z`xQ)oBJ{WZcJCl#TsN6h?xR{o@7sHj!#r;H2-|AA2yOk1)6~z}-8=TOvJ=qX{2jQB zSqh{XnShJoED0=)o=dEe&T^&Iw(I%ahpgm%z_1Xa$ z1W*-QTg*E^jUx1}zkl?bp;;o~eAVXb}kbsX@J7+=88fl{E*kXDC@&SRe|03w`HNn0BftzUmh)_`cs zkp?RAPM5~Dr^jam_61K77nMI?pMAD|)-`D5B>FdJ$F?3UItV_k)~MpwL^f^*0$9Bj z*`aAKMsLlCMH4N=bC02_FVMfArc~1I=8!B$UI9QmQP+(3?ri6PDTdQ|N)bD6>2DC=jFJ^B8U~ILaP6^WIrm|| zE0fCNmW&quEpxl4il}dx@l!kj1)7t$<^w?E?+JjSyUlHJTFfJk#$bc@{;a9vKj`E;t8_ zxqE0ppA$}=}#Q^6$X*doz7f$0}(L=c>dlb0vAUk7xS zRJ)2omZB7*!q7xjqvQfL(q{vsLC)s#4rg3`IhepXUElpG3aT7D{<``7gOA5=9A4t# z14;0_HWvqI@vb&rzW!rGCG2cm17=R5Y>|L72@Z2q;bHLTWy>#xm@Jz&5Je3<2DPq# zzk~GVyOY$@jPsHE%od9H@pqwL9Y4NY6ok4u@>>e?bB;Z4nbLEpj8Oa3Kc;x+wV3#j zGCrV?sGInJ^KFE7hP1OVU&O>O8wVE|R}4=7I64LcXi1KJ&OAd-Xl)w+C^1j6n02bh z#Gk35LnOG7@xZs9C&T$%Ql3m%6EBNMHic?KkT<%$x#Ed6KDcg~2yxZ^7;I}pba*!C z20#uYTA3!C;ra?3(a2TH#tPb&VTMs7G$gb0PB`uWd1@BVTx8+y%F=iQp=meU2L z(TxObZzV;06yXgw(|!YtT&bRc(AW}^?m}zR;8?(WnF7cuR|RH8Up6Mzz<3Qhr55E{ zFiXAnL0V26G4ZYj&xNhbAjJoZvret5PP#hQGp))MRItt*X*)a19&s7iOY`Zx*R6eR zLbzNVn8+x?AQ{GA?n$q5yE`<_xb#JS)XoC|v%+B~~D zX}&WZ1BC67 z9f2lBa1siNKsEgewVuM&DJnJ7(DXCpJ(F$VS%|5{TB?lY*qb)sC%Q}pQ&|z&qeje6 zBc(YN_+$daF;NV*+bXxb@X<B_;4!`prKNb+mq&P6~PZSoK4cQ93YR)^?TYGr_wr>QaJ_ zy!7m+Czw!lQEh4zAs+^6rF*wG)NUYz%2cN05cGsvr}iJzqOGxEEF_r_>40xZfiE;Q z6a8@MRU`W4x!_jc;4=425N6XD$1gQL?-h7a{2T)>y1p%k_d>N zsLU!K)mFUU>a$HUf5`NKe+Ii;548|cR$44J8Hrecr%+i!EiMIu!7aZoPzX-iMZ*tMIgk^ zZ#|J@=pIgACZA)zdW}60z(2v3l5!^UhivT$$YxM%B<3K=AzYB45YWRjkx|G|*G!0Y zz!|1?YdO9lRx&X5ff*jG9O5{;{j?|1-}vQ;D9v8la$5N(U`GB6O0=`M`}B6@85wTw z3p6Cs&=yNzhKOt5C6l|S*K9sdH<8PM!axAR!;Q~YV|7QDu~=xYCy8)0c(31kr-~<6 z)BHSfWVoIbN}Vlv6zGcvl`px`z#MQmKLS{tYdu@($e7^S!hWANS}^SuYFf_Sy{2l3 zhF7I*%J)|~pW$IBvLs|Gt>5r9iDtGpAC(u|R`U9I8xE75;`MWM3lkj8E)lISa$^pJ z{RTHm1-zH5c??qMo~wRLDo0NASFAp!;6_)MJwb{l_1xIfnIW#tw9%xghwH6n@1XYV z`Jl-8u+g2cO~CZ_99#eUH=a`GP zc_Y3%`8GIjJgxmU?7cqU&z~+TrGb?{1obGkSlsHGx6a)LSTmqt7Bq4qdHWcWI9y#y z3+LGz&_~sOXP)9Uu+q}mt<8Gyt=$;NM9v!%jvsK@EiM~Wp=df?`vaaEfLnYx%N2We zi)9*G%*ng?RdxDY5|cfDkH{+LatZ|QqNGCc7C%%OM907w@(;(kayB) zlb4`|@cluVi%(Va2VH{qg+)j84s+@JMkRQ>Bp(Q zJDg8EDiJ(u2F`gI{A3NHm#C4;Zgn`rI6Phi%WC<_WeWcFDZ~N2S{qZB z!HIJ`1=c%Xe!^YkEE(_(vVa}SkFxAe62UK%nNYmcadLr32ojPuhpmT_Q*J?G2-?n6 zm|8YFb(#az@+9NP;|NS-zeNE#^C};yI!7wuqM#(_hrgWVb4abn6zEOn>iy5|KH$x&$b~i1u34A2@Xn|&y!8%e9 z3_+%$Z}PJxQoEl}_sI=tHwsva^YV;3@8IsJH{uoQEa!1?nz=t-eQh2OQye3d8iPyK zc62@A3zhN)<>xcax?&Xp>D2y^i)@ciDWbil4CI6MNfp*E%dHwVR6m+!kjB zoOMOHu+2a$ueQbi%-0qRFkRd;l&+1ZS7UzxTZ-ZZ8|vlb{4vZTKHy5AQ99=T{oW5* z0WLq?;ZpMPIh$^v(b=;%iY!MH^roS=>9mqVuifl7WqM`Bm>m4W(Z=2k0jwx^ee;_U z4)dQFhP(CBaTB%((GnZ2FOeV$ss21*rTbM`{lG!Oq;XBw!)q*7yla060htR3IGdgi zn|AxGq+1!b_XA#MwLsx^d~HMrCA-yWxUa^ziaKr=|16}Ma~qXs<8gUUAIntu4|OHm zRok05O>8#GVV?@cgMw~v#?Zogt2S4zdWGBG0zJ$0qD#GD>r{~Rr)%%+4Vz=L1`|r* zX>snVzD|yxR?cJZH$+$vImrlPmRmXKCC$E6{}g+0dEPI+A6;~LG^%wAA}Xja<9;s} zn1w&8s|@E%3HDH2kCd?5b9cFDxZJDqZzlYZuuNA4x9%XVuKvJtC$V@NsuT~8IWSrv zYAtwPnCs`Ch0AmTS+@9(UZFkY+`i`g(EuO zJh{Aw;&p^XUyd8^Ug$1VV=F}ZLfQ2#SqAZACrEWe9+L+w7Hg{@(#gZE402COQQn>_ zY2Z8}_iG_p7pQ-O&t|Aqn{~TXrr@ipTBt`WKsRKr^UwKti$r@F9?ERxuVNt*0*8xq zmJ)+Mmw9|LpLp*HB+NqhuQN?`xL?6o8Ipqe7&>_%qpidn3P=N3Lwblm1a^I-oZbjc zKzBFxewp`^Q8#8r5Zk&gYAhfrUH%gH^A&kW&M2U$!3JDMbs zfu*tXW7GKf4V+b3!6>B(7iu)fDF~B%AQq*mJzBw-G9-L<%7nwOy_ZWaw%AAd*cXb6 za&e1TIT72;;AFql_Xgo-(s*9^hE3r$sBXdc&h0l{{g9Ta#F`!ek7}g9KAn+aSY)h- zyOl{<;QW+`a(|*s!Ef24V%c|H{M*O%rrgSCPA+`LG320h$h&+Rj%R~q;X)ML* zcBFt-6D7+GSQC_unO~XTgUy2*Hs1Q&Z`WDrzP!+}76@UFc=!r?1CA@Hea?EfpyhG( z-F6?#4ou4~R)KHQ$7)bKDZUy<-Y9Z-oc~Je z>hl`6i*HY({mxy^u$J2P-5XMrK*qL4+Xv2~+!k$UcN04OA_pZCcp&LRx}ArywJo(q5p}N4x#33PiKgtQ^M!2qa9Mzg{V< zH*~;nf|lWRv_h&@$mo-s;<)U2RzRp>q*t{T-=dk0a0>SZj404ERHTi)$R_WAkb7Ql zcjMut`i{To5?Wm`233s|A#Okb`V8;qsd`SEMh}p8ZG>cWzTH)SB8jhPjdc2R@OTrA z00^z^Ol?01X}>bT$6-_x!i`6(f+SII#Nhit&7a)y^1QCn$NRNzaQ1_^l0_&B}F$;R4EIF^W2A9xg*yC|Qp zwL7mE2D?gHN))4{Vil8sCOC*}-fa~B{;1xsz9kiVgA542arOdSQUUreq;dc?DwP9X z`s7r(?^9d&$3~?oQJP1UtkkTUN;SAEIUk;?>i}`lbb#y$yf*+>-#)baj2ceXS@(h$ zAg7v1hYn1rS`kC&-yU3tDXCU4KbF$6>V=ncg0IaZzP6<>*4rHme{IrV!uLiJqlXq) zk`gMRk;Ic*TuQISz!D~IO|jJI7JkA$R5ra;$HS|HNUxN!psoXUe?T>RZ+-r_PO)hF znMt;G%=Cr9-4`QhsU63B8@M*iTsO4>#FOI;$!#Ct_WauT5lQ~&L)gUVS)YgdaVnGN z{C&-xXBzVddbc7@N}>Kmo?}Xzyx z*_+i(`t$F+aA*$e0K`7F1j zaia@ZHnCux8IR*v5dhyN8=qIq^VqOq%t;t_luWLccGcJUJ($92aAS}b|5@V$s<1e8 zrh!+5v((vv&7h3wqgFg_O;yfSP>hl@jxtQCXs3=BI{E0V++6q*LH+PnU2&GK6VkGi zyex7);u!d3lq%fES$NS}s-7Knn1c_^;BGxTRAdqsH~wcOvFsSw9Iq8aU&-uwbwR1N zA29ykgaOP|#(XIaVQ!YdB98RkllWtj_>-9h)Zhd+_YLgaX=u`rfEQ*CN7QD^koL#@H zcIpMiPN;a0v?$;2%?ifyqazh9scyFW%<9q39$~1tpP2UXS^}a38uRW!72zf0M-G;R zSW2piH}!Ncw%Vi&$&CJdaoq+?-9=237Yo36wQv>+98P_(x|Egs9>BgNs`X@OQHt+O zc(jtNu~OpY$l)=Pdk_JphMHvd*E{|EevbP373wSc&H-pu6$CCx0PwEX%m$#{`Mp!O zQGwHnUc2qU!s_%fX6q8CeAPrED7n=CeNntOgXN=9{&=OG#D!pamAHf>@B`!)$AIz z)D|Si=QEJB1;fI#{-K_Klgmjy@8YrHVm3dT@c?sgI8RfLx$boD*$qXlIE?SKpScZ8 zrR^nV+E*XNRc%MY1e#Fgn;BQl<;aeN;AfWW2QfB_N=%ENbsYA6z;p2##D^MGD$(b~ z#rv#w<#}I70ZLq&qM^sq`nLc{=MP!oAgZSp4GI{68Eo&rmZX!JT7JkOT(YY3(Ev{> z-WYH5p1Uc7m_WjlI1}IeiYEARS9(=>Po(Ec`fI3e0rG_P0-_du;>c5+k>=07v)pu` z0|9K}=!|klIq_|NwadyBpnO#Oulim;G9(ECV#ZePxT>q>4|PT`&#s;A91_sQ|Jv8g zZBGsmp5B~~<(qHtcn_U5AwdbnD#;SCChnD@E(v;&KLtIWNANpPeX02)S^k&f4ips; z9;nERgyc&f6)am|!|Ug(OAe1ZMJ;|+SFcT2)N)UWb5WD++L}~kw`JpPf%cB}`DbR}I&6am(iul+(&F#+R z0WR7<1Q_Tgy#crRdBh;BULps};l9=9(`OTIq=*3U;hP$0rn{k~6f(87{shq%f=4srxV#*=csh<+VBf)}s!lpAKPtJWHv)xp`CtNT&!K`lp8 zV%{B1=lJ~<(_u2cS97|};?b%NUMhU5C z(!8ns+pcK+51_i0$WAt(px>y9H{C!O!d&lx;(>}r++(ygl8U8@2XjaXe``v1YU~_+ zMLwSm@#`_M#DcHx^czbCoCC8R!y9pCi+u~D3PBOI%3IfoN>w*cY24q$ud`(pIm5OyAD9IA?<9@>x2vmM(ED^%`kSFt?n^b36J#v{l+bZII4k#)k^etE6 zwsDdG$FcKr6^?&p-3f$H-RU#ewbML{G|OS*(uZION}w4G zV)_C8vg3y=%iHCEvu{gTtHoln{;?Lq3XJFze*33yooc5^q{@Bc_&eXhUY(K<%jm4< zAG4-06QyWyNCJ^w^|XDS&8F5wP#8lqxP>guk!N_(K(k|v?Qe)XZ|y^@nFu1NLn~4o z@gJtqMiQi%V?<{G0cs9=5h)3)N4DE0$2wWtnzYcVJ8=G?G94o1VJaul;LM1rofu%* z$YK&VdAf8y=Yc?2EvvISOR6oB7S26<`a6~N9vje|WxyhM?Slykc|u>?UW+imYx=f4 zO3m7YhV(i!REj!ns-B}d3dRgVmzZrJ$ht3j45W;*2m}BF4ai{EG-!9RhpL9RQ(jL7 zhFngx>r{*^d}m$Z;Q0euPp-zteJNc z)%5e!jThHTHJqiH!!3T1vU1!z%PepZpc^=;dZgVR7NJd$(@v+>-u=|RI+%0EN%F}e zww!cSBCSj_K)+i^P{C%v}XyBP+5y)f3$&TW0JsW?PxRq+)5tM3 zc4jOvyYU~W90Xm(jJFoAhho0g4SoG!RetlwvQ`#)R3ooM+#%NV_J4j{uWXl8vGF;g zOoNn{q&*J7Y#8wU;j!GRNFG#4+y`UvN(ot<^U~&kGfPrpKf@o`Rj%1FGqSx3lV~&r zCgjDkbla~K zm9C{=(T{ae0ncv1HBpOAwCj#E6xk`Z_?kH`0a9@wb=mzX^89cPCPzKo5yOn`0-g`p z?*lZ+f*b#K-%b9lJ71^IwaEEl#Q=&O^HErIO*-RCsLA0(X(d8GhSt=!w;Y~?Tnd9R z;;!*>o?y?%xgV5Zq8ca?5}7=&ofyD)@bR4ZxA0Rn}RjGhefzsYIt%bh(T3xys(|Kki7nB=1-zQfX%* zXGOkUiuCC?0X=6g$siLR`zOeN!KWOMQ{IK!R^8goXigkl4wjq;w4%CiQmkS%MNl#C z^Wz#)1Njr}G&w)!cJaywLDj1Um0Om;tFMaU9L+(}qrArWKRH!M_W=wkhE+UPi_f|! z6@6k`Vyo)l<$+#?li;pk{6;RV6#dj<)QuK|S1jNs0#1S5yN_mP*ui78qv#+9KFfOqteVJ|Jrs;3i|6zbL(!H8PR}qi zm|4v}OacCF!ti)yO|4f9-#pwB6B>z>BS(ESiw?ALQy0is+FN{;zMVCvBBe z#)IQ1(E8EJTNjxzz3ic#2DBviR>;K&uU~v~+Mmi8YN=d9YeDTp2^IeUwUi2O#J-vN zadYbf@2qnHQ=c;=&|ko7ClKNMnMkOD8M!RH%Pq@a`<=cu5x*49%Bosf&q_4EPks0p zEY;G_ z^XUZ2hPPmoCIv#GuA1(k(`Y22`<4=%1xZQtVaI}!e&^(=FiV^vrl#m`?F+z2W5SnC z+X;5&&=5Y0vhl0)QoE<^nWtyuI#J^vwI<|9LwAC|Q3v5+|vjn{? z(PB+CD!|)FiGAG(VfZm$!*Zai*L38rPe%#U2Ukw3#Uva>{GWI>9iSJ_^(RpPRXlAX zaznN|68*EG%GVoB=%vRt^=H)qWe{l>{P^t{jDP%isnuztLvR zB`kyucja@idABqQe;r5Dhx=J~Zb;Gn8NlkKXgmW5jJ2TsWRsKAlS*x zG5B9Hf%#}~2t0%egKo`%So;=K)dS53Kg(Zre(Gks!B?Or=jXxkmRFghS3H0vWK7~Bje+>DFAQ(E zGfz2F8-*6K`^+_D_+?w1oW7i$^YPxE_QKo{7r;V)mJ8As)Ej}}pbl^nHTy}m)S$g! zv@P*(#w^QX+R&sX{9+r0{*{N$$nCS)5n+WVP9?=|*Kt=`_siZO)TtX`vzQwx0Z1Cw z3TD3D!=&299$_uS;2I#Tfd}2}5o?L0=l?6>I-{D(w(uJiQ5298X(C-fjEE7CE};lS zU?d7iiz6jUZ-P<>=~6lPx zb@#sC+239#o18Sm&aeIY`70O&zBvD5zs8ZYowQwi$<9S+A|W;X`pFr%akT=SvgE`G zZN8m?1$`Nfop%G%7B0G!KUen_*4db@LhTp=?<6^nTd`0+L7in=Rlvkt9s8_RzR3ZH zSW|wf!dqr)u$|+S_?3A9OA#;q?GTvnVE|ChlPQI9co^XTQ zdJokFhC>(xSbcgzE{*Vvw=Ll50Bk_|XL)41|H!`O;CpXy(x@9l-yf{vp*`Y617M;w zjp}Zt^~+mc?YIZ(Fe#J&e*ivBT$J>XDa9lSGPhGgF8wO|Kpf8eRtiC|O)Q_gqE9DU zpV_{cyu(o5P3lb6Bn^ytOa%_E%W~nlgr+~~tr@B3p^X@s8mU_bAUuP67O@gll~V{- zsMCnCBCf|BR>hVkh4RKzv%Mg(r;($)$lsRvf$%u zL|uL`L0cF^mSd0-Or1n(C2&$pBPeB=JR6d_Xw1j+b$*oOmeVQ!Y8&;w>y=RSl^4d3>^cmmk7T$ zC0vBd@Hg!4WkQDg)MB9Vzs~Zvzs&uEyUg<9!?v4e2Kx*&e;iCezU({MK2)a*P_EKS z9vqNeRc~uJgkBMt3;QV|-K5=5VE0|`R|?m)JQ0-0*WMMV&sG^|%rK$&XXSZ?o(D`V zg9}S$d)$daJEXh&OYyy`b? z&2c{+3pCyrk&jNICJNY>0vL|iKYyy3bq0)rmOLj6Zo$ToQr6#pRMcy3@hQ1ogI2^P~wJek_v}>bc=?3UPP`~p{3uTRCM#Q7c$X`nfR+b zkDK29#xF=Hs&wNPJ`?#cql7k)Ul*{;c_*2bsQE#Gmi%fk_ermwM*67Jn&mNZdQIB@ z#)`98{9?jLtD=@Wj;llD1bsE-qVj-Jp`G@`(hy z*a2L1hf)+!gSS4%Awi7UwF-G9FcMV&5e*fb8h^Y#0}jtm;w$2dY0VMgMGgK>8W@tW zchOYV=D-u6F)yPt*rtJA%= z#8jj#;l;*&z0uUUH{kxolD3cL`ywVldGKq?cSe#X#}azvY}`KWeOqDaE@o?tG0 z*9t{Q_tNfeK4E!Vzw8cn4>U)xPCVWFS<77(gy!hVh4ZDzOHc|Jc>0!7$=m~Mk1tvq z#XVK%!kLmp@e2r~|adpY{51y>llHd z$S-3~f|}C<(G^h%RiMRLr+DM6JcHZ4TaD^1y9w ziCp0}FtRvUK{glrMLNmm7w6#x=ku=1O?z&?{qRjxh;{!|(_Y3ClTJdPr-8yR+3a|~ zONzPoFXHTW_tqZ6EqERRLs$<_>w9?HA8>QTd*5O*CoypKo%;LVrL!+c(zxl|=Ip0X zs`K2K>-{P{-v%pM`~zyS_g$m-P)X8^{vV^W;+e=04e$LF8v}Va`D)pqek^QJ$DwoY%tZRA|5I=)>;f@(YFyh? zP>ox6SK8=;q^O!8j!_feOP)E7H#d8&b-7IZI9?^6yF4#@xGNiBi|?rTj-IfRI0xkbKTMgAEa?JdouWSIRU$P3CLbVgR8-^l)Lmy#HJwYpsG#uT}~ zU%Byy`ZmR>eC3~WQwAs2GzWOod~$?PF^j4+FRMXA=qM3iCL+U{jbs_vKxs4DYB(3X`LZUTA_QHYnig3tv%HA8|U%pV?HXlf@9A>U@2Tjx6v9>N_ZWJ76bVmd=pH=9zm1*R;hVr#IFtY{y~#9 z@y8bU-j!J?PTYfQR%V^!w@mk=fy#E(`8fqWHb-wirqX)M4{z!va6a9i3i7%j=Bm4& zW_I|@(S^B<&-u8sG!R;jg+YV|5SI1jE~Ca1n=wyixnnw^2SsB)4zHEV_zmP7XcIQ< z@l!PiO^b#I0GAJ!DO!^1`sZ3>tgo?A_rd0lut10~!mK>ZygEs(IpO?t6|j3n)qk38 zN=a^EC`WS_kM~N>dyfptknelD!X>IE+I)Eq6||h zVa|jT82}jI*E;7KWz~fda+~Hg`lZ7=P51!P@?27<~07m#!*p@K2j60nY@;yCB)j4UyQW39zQB>!Q&1Id&n*D=J_M^*X3t<((Flx ztY*l%B6}O71L#a`^;Qsm$k)MBJnEUD-I6|%ocx2?cQy*Tn!}Qcdv)CBOceIzOcv5=evX3DX;NH1r;tZ zjo81tb-dJE!64$G%{svbBs`dJ&IyFaz~cC<_-1yd89pTgTP!0 y`Mn;ps!7hh z5EE8%Sv*dM|ER3ebawE&SjDxl#hoGi@Pt;s>~>`jNf8S_-S-DIO2H2}UrgU0>``xC z6A9bG^zdxPiN(sx_TyzIhbyw<<%DFL@^x>mE{k2p{64v}8gVEkBH&Ui~HTMI(@7+UVB2cxf-{^)y)yNnJ4Ldl(`ym6Xa)2--*s-vhG*s zg0LNN@y=={gHYST^^QG3w>lH`j|1UeTarfC;}NuYA34f;%B{Lmd=j(iVYD)<^uGVk zm@{V}h{s9Jx&A!+!U|o+UaP;X#FkJ;aSx|%;I+_EnBj4ZKQj$uwu)bAop*^9J_5KIt5aE)M zwziEPt24mUu7m4W-E8LuP>Yq(r(b1}s*76T>Z@Ae+S6KMC0FPMTzA2hsUAHIqf>QY zf(gOPfCdo~>=(PGBZ`c1!Ld)26C&otyo}@kVd*lDab{;f@+r*h0O4BPMx-6W}Re1 zKQYEByrh4BNuqy$nu>pai%Njxl=;*l>#AuEDv3ueTR0U=r6vU<*pXYno|3>eK`Ym? z=VBmxlHeb&lK{<$!QV}@L^24;>WyIwS@8m$ z)AU^vaM0E97|;41!PBYfuWpK*NO~#)?V>9UYX`KyFx$z{ivcf@vvqeQ6dTN9Y1M1- zx6-*D&N~yqh6Lh-CG|vxhcf7up#V>g=#J;gRje|hdXJ2_>P186Iy-$fU(;mF4*37k;-YK80$SxUBx(?^B&F&65aF$97pO zV9$vGW%Q~|ut+IX%hg%#S4Pn#I%dWVdaTnmnxeaVFx_J=@iAH6o0uD#=tVfN~+Vk$`gyQ&SN7-I<{cGwym zHokRG$jE0s@}u7sYj~EwH~d(hHw!&>USaz;i(c7H-eMS)Z)KOA)|?Ra{Ft!p>Cocr=@b^Ry-N_qyYfc~2W?R4e#=Hv4fVf4 zmw=}Z_HT*FO$*+>mT(gt)8HvHTz*-hj$Or=8PP6O+-;IR`g6;d?eh5_PaPVw7T7Yw z^u1G;^pzHt@wD0+Ordj6eP1DL0;8^v2HwL2dn~wJefizf^|d+$D;*(k8KJeO8Fq~& z77p&J#<`y^t(fexY4O=NSy&BGK@nJ)NF;R3Qq4Rbad!?qv=<9&`2YH-KQoxrV~hgP zW@Qfa+jDt@{poT>qd}-Ot2MmaH+L6YAn<7dkOS|Q z);~Fmku8|htC{n&;XitE>>eK^nJ-pIT4!`dmN7|p-=JX8c_ZM2$xBtb)5sdObIWf3 zLd9()LBe${aW`u>CEhYK^b^r1G4bOxZP!|Gk@e#^b&r0cMbcw(tHrWU<-f|IC2VHc3(Kb+7< z|J)~-Kia7|GPrEnP|ulj)G&B4WBUPrv1&ymx%7MExnHZ{HO`5oNAitmyIh=-1!gWb zXSRbtomTaZx5?m%1O# zI}NT)4VRk>>#QAGz6z?a_)sUYn+HG3OQ#8kpY8Nv(a02;A_GlDLj9x&+5EI066i3M z!5=Jkb(wb!tysV9XkVeGZB09#1FU8!5-MvbqlMH_Ft|YCP{lIFx6UEZX7l3r`Lw6wqe!yM&+iHkRb@+ z(;={^mhNw!l;o0t4?J+@C8w@THUP>9FQ$zk!&EGr1Ea#V7G@krF3oNa+|}x8jNQTx zOOrLnsOSt;N`1eaSFss1%g#*@}jmF*&it#oL6n?F> zV!*B9&g_wFBvZv{o}fa;(I_V*h5o1jJxXsg(;m#cWOaB`y#L8BWR1Y`_kq{{TT9I2 z898-Nk3wqvtQc1pJ2AfW#*iGq#oSjpJ0wH+7|U1#E9Ae+ZeZs3`jnpB*Tdn0G=?`5 z$`iY4zi7;AYBpd%nXf)}|9dS!W&< zf_V=qIHQabjr69Cc)r(vA@ijiXuJ95>5+tIiBGU(q8a>6e$n7f$#4>zWJ$7S3A0<% zJg;#RDMsx4$TQ<~Ukv{cJ9EFfWzqEFX0P@JY+t`hHJ*i$VvAW=9sFpC&vENX=eDN~ zT`q;m2YZ4e{6CVh)3pe|o_{)y*F|1QyU^b>V*Dramluw0`@ zp2xU}_CH33X*eX`19Gx4wEE@J8)Khn6Sk@n62e3posH;@UK{oU;{^` zbnL(ME5F;jIhwP-{^oOSsCj&m9z7hrhb{Hc9%RrEfw~{zr`NiU4{P35?HOAt4>Q%U{clKKGpP67R+2AqD8fMq z1cf=@0r$n^$~j7Pb=q<&&+WDcx5V88f6wSq%*w+2{^Qnb_1XFs zVP;7$3h{j!Fy^BbC8lL+|Fy00=m|6LQGzB9o-kbbe(+#RSZ;qQKCYf^7}MU)OnWB=@33l`4J3L1TmR3UPf{xKc?R>R0_q#aO! z`_J7mg6-GlkSfHhgtjQY5pStb1;}SSP89B*>f-se72=p}H+p}VGh6ZUtnZs^)VmR( z?1}R6?Q1`RJ$}N0Ho}=?M&U!5^poxmNbsST=thp%1J*zk=nRhy3M;GoY`1uiR!Sy^ z!|5sKwTQ2tgSo=@K6>C&(7n6d(tJO~y-m(s4C=gd&bzCG5``Mn>1tt!qBn!%oPrq5 zwe{Wck)KWSG$*|PMzg|H`nEFBGR^F)KFHx%(cjco%j^_aOQw300jakSJbB+gx5yiN z_IfWVx)nd(g9{*x*wDfqvrH=|4*4SRsYDXee5lc-c)yNN` ziW6P-oy(+v-s8#zYDAQ`P1o;6N5;ZvWxyA}V*U!fukLO^N6$QO|HdW~5Dux&eRhhy zaZUx$d+>nDeI&FVGWD)83BW38FEIelTr!A)d*}5oL4pk;+Hy{+2=K`ZG$_F&eRp$y zqP@+^OHPXz@1H9dX9nMJSdMwBpe-BIr*`i%Sih;(qrMVJ0IdU?-r#f`)g%r&w7afb zJ^24Qy=C_O6qs&{Q>m;?)EKMjL*)_184~!H=E2##A_m^~X>ccsBuK{m-aSbDjYDch z)|kOqW=ik4Kb3-gf>@_CHJsDn29KutsE}8`-)XheOy$q7*zN6A%LVgC<{Gb_p{kHU z0lPT0NMomO0Za>UJ!Uu<_DZ>1nGDq!J60_5f!y6-yzMt@7=wI0>$YFu_TN{p&60bC zT}m@+J#H4WlZj>3bWYKBw$h;fJp!BHd?)Du_74xcpOr-7b2ILFl^R5lBAJfUa1yP| z<-s`2MK`8!2v>ANF_$vCCC@QsW@8jF8lX@xN<%f(ip1_nf%6yA)@ZmNYEmZ(Y(ve% zH+OlEN2qi`6=ku0xm1=2#C{CrMcDR|3LyGX3 z=U0Y_z(6F#ji$^4+YV`4r1^~(iL;lt!P=P$itx$_hRUOx`OLD7lOErR!3CyhR=BCH z13EN^2@Ed}YU1qEok9venvl@e?xrucx@~Wj-A#)H;#jHjcdV}!Lh%VIz8CUKr88l- zlqk=}b_|jMXG1@?4prZUYOf?SpJZw-?(2asudihxv?JcgTx<63h!hsJvLnWaop8Lc zSAD_T(Z*yfkyYwyuD^+(t%&gBDVcP>Q5c5VrpkTI+N=JB>-GF7{E{cnw=$e`jhl7q zvn>LSlkhixF7sysA>DSgV6Sj_7M^Z1*MvyxjL%13mqSws!iADwnJxIqcyolCkMNW{ z!*I9muCVzH|JWv}&GKB1XJL4avx@S)wt&+##dTcUUOq-Uc!epUsd6@V%s&P9ZAK3i zN1M$z#I)m`GhR>oZ!K=e#`)MP5OahQNQ!~O^h)L+IR|yucn-I}-5=`y&XVCQ-Jn;R z>xO%3^#yCgIr|EvrCS z91%UV<~nqJ^LlyzBE6l=c81Q))ETp8izb=BRQwGpvnAjg6r-;6sP+vp9xtPJJplDX zCg&@djCG5ZM?H%0*DNTEK5s-{EFTeS1|CG+D3x32?=*~T~ZVXb}m%#XcQ z!KTjYP`Gwp_wHjrh*a(|p2ltdE$SC9&{lo!Ute~6*+S`v)?d;z(A|@SK0MvUM`fUQS`-J}BWZ8{j2vC;Zr~qc(`Rmue^+ zQ8*g`Gnzo{LVKm{vv(Qbrl0U16T{iaB86okAGQ{LME9+5b zFOATT9(h~j^y^JUZM!I>C)St7)7Q-TywZu)U92rm$^84yFc)C2N=5m> zq&TUZ?a3*Jb|eI*)jcVPch{Jn8*28Oc;aX%Ha?ik#|^*S*qz;~f)Z}gU$Y$UNV7Bf z7hcw4q&6Htx?V|W{kqTmf#x>4!L77lzqPCi+KmVCf}z+M+LdJ}J+uUiPIE{@M8EzO zoUqRJ*Gd)y?DDEe^mzbnajxXb*-W!kJJ)IhR z135@_XKtA^`qz4QpwxI>6BxsHx&zV2_*%yBg;0vEQ+aZSjA3|8rKtq(-kEFjbi9_g z@yiK2@qU5ozw0RUs8s7IlZp3er&uc>b~$Yj?_Ce6toM2q5#K@(`QSWz5FcI2bM}(hw0}7ybxR$%sph3iCk_i#J~&pEukp0z{}elk1W?e7z@^5gP`tIBtR{)C z9PeSGqFH^XOxGDOANmJNuud4TN=pZ&q;caV&0xfEwdEx^dohJuUx=U7 zDrmCOGdBk8>@WBYwQGQz)#3JA1>ywqF@&$#>OjD&hk)K;*+FgFPFk)HuDq%(Ucjh7 zfM9OYimTggU0S39Rw!h;OBOOcH+>aJw<^~yE6;jN{zWYejM^?&-8>g4X;jZpTInM> z^9@$%$FwQad!x#;U&>TgkVScI!(qTN1#e|lNoaZLj8BrTnjBLb7nW4IpwOtUd7hrx zDCTjs;>@9ih59F^B>Y}!^1MZXkVVMZ=F_)oH_x3bk>C%^CxDF-Qq@kRo7r=gH|H)p z!#k%Zp!vw*5IUXOFf-DOCCtba8JW+ApRWG>TJx0|@ndrlDR z2!8%G|GW0`3F-P}t*Y~?`XwIKaZM6NR zM*1waGk&oX|K>_zKK)5AVM(UWvwm*)f49O1*M&nO|Y9D{_ zwRz<2hn;zS+Ux_zB@cJxJH#GbE1MeEQ_H^PUO9k`*|15|i-K_Su%Ew0Y&S$iS+H#& z;9+jjB7;+{#&S#VTKCKw;HWs|6$fK`2I%*vWc{`Bm19`&#aTDVPXNHnpu$1>;~-+4 zwOiQ1#7K|E=s3Th-}RR)7}^q{TksDj{{J# zd+C1+L6)~6RNlP$BkFejow^Kj%Z$xEiqYmZe$W^TU?==vNML9h!R@){DdLqD63|lLr+D>?@Hyk&fsB=r{k5}pdX|QOewegv&(6a$f zegw}U_6&2{IyJ8ss*30YTkNK&N&e2K-SJfdH9swhx;Vz_%J~IE5v2|TjA`GCXF`L` z^`p={*-(IjH#uNOkRFF4BiB5Qg)PyA;UhZU(3t>TOo)oUtSzt7;rj5RvDjX+r{SFj zI6v-jVD1Ki83LywdLa|){Iy4&xsmJmiH_ra5u@ZD3Y;R2>JBPgUm_cIkK*a;F62lX zPQVlHZ&bN?+>YL>3TgyCVe$O^;r6+>xkFjx8@)9+_rLu*7b2yP_AC48|IvLI) z)e%8~Zo{eRUiU+?sI6qaXi1yrhrF_}YFX6ZSlQ+=<69)Jvf*U(#zB#tNyOH0TtbBX z#cPhMET|en2r&aJ()=T=WE)PUJ3UdMO!``CDghh0|BaISHzgxC*+Qj%_`e9w%Kn&T zFhE<4&#eh&!=Zsg3OjGs5ke>qzWw2sKhIF;gmH90G1=GS;~K3(UbkzCmmj~FCSsSG zHQE{;|HQwtw5k|B`#mB*+?~iKADP3&!>J9CSQ(&plim-j!@=4C*;?&~WpCU7DhWkJ+$5X#0##j-&_5lj@0|(1 zAE#qAjzJDnEJ>zWn>bBma8XUz7S@H4Q&4~?JGF*@83G#^Iv^sn1X{sCmg)-XJ`QK2 ziBvDyplu|$6T(qxm0@5UY&Jtfb;RE1bsamVUE8V-S+ZOnqJ%^^Jop6Q=8*;?Aux?{ zT!oVWpz+nKx1EiAb*TON489&ezRtGaQm*UyIF~eqkR91)D|YG#7n?CLJKJ+%*~%a! z;?!NyFWh6J#>S(rj@Lqah zb|?t7^1~e4R0MfDepG!Tq-GM*M`mYER60W;zG!3`aqp7Q?9K0_M6&TSP_`-X@iw$Q zdkEpP3<-T8TJIsAt#%T{bu5nFI|&RNyLG|)-*K-P#z{mG>W+WcZ;4!L5>-;0E#d=T zU;Xn9>SP%)p~|reMLV9*+h0>hdjB+9k}x6ohA$E5udgxbDG0b5a*2t%qD*j{2&fs| z``UP#S&mZVBqCo2SMi7cxgHMV*>4u~5=5>TpR%3be(io_`xg96gND}AWG zUaa&#;mnwx{ji)$()YJH`xkPz{PwTwXY3rj)oiU&3@`NB3$W_~NWOS|&1H=z$J1=3 z${SY;{%0M`%>v7i?F8oW0V+xpU}{Xem&5y2*awQWgXT48v=NL)1)FbSp`fvj?-Cr< zzV<&nEvfbtXI(hZ7Pyn=&MP5#3L+k5+z#XI_W}@8X~-!Q1JJD-YVc1^Rci<@OJ0v6;c~D~60m4f!6QL!k7)=b4R;}Q$_)j5)zW*f(+R~)53Kcj<<0il zW8TkQ0VnI25W}VW4@OGpHza23LTS?&>e?-S(-df6BD-5Zhlo zA?R&Q%|70MvTr)7Us_TXh}i;<={4T)=r9`mY$G6#iGumd`xHFM^wKUit2wk+-ciXx z-Wz3d8fx(meeve%iU@4{)AEQ>arJ*al?%@q`w~J14p?`i_6x+}(4vx|n_2^I9vkLF zYQi05T$8k*CGMWoJk^*Bqodm zPi48|0FG;oh*xb6jS3_cM`>|@+dW4{6{CmA$>ViFf~@7jyuU1Q9R?g&O}ex&HWLcV~>qD z@*NkE$>|%j^|K5cu`eGoL{*6%XiHUA_dG(Nvbvr_KsGWbveZ_VM}Pe+{wi<3<#Y`l zC#bD|&gf`u`*K?W4*MBx13Mx|3m&I2*XcX&E=*iQ&I6UN(QL~BmVLCcdaf~y$Xn@k zyIz=E1;|!5Y3T`1XVSnX)e-gYPg_s)-*m@+z5dwS&P7{uP&4?_g=@qONiP>%R|B5_ zHIvS>hESBRN|5ob)`jYhbyCn^dwR3ZF7#N)lpstpaUy!;=%5*P!v_JKgWeXt{@6++ zozVM<;t#aD{fdaB`0K|jdN4rH+anvy0IFbrgSD;4m|TfJC@hjjD!v$e(LBm)u@3sW zI!Ikbk=sxpWYqJI3hMq!p;y1hgiOKlZ>^~P3O4r|X;?QHRYVLY@E}`ECzSv%yus>h zIQm5!HJi1fm0zg$)$MQErjYOtZrfg%?F9v5Diz&X11Lau$pG#&c3V`m;>69HaID75 z^>s;*7f>0P<^7|4RSe3XkmxoXiTgZL>2wLL_7=tcn`CPHbWm*$OZO3eP9$PDm+d5M ze~3|AUpq)k;cbObpKBwZhi&?fWC>Fn(itmrLnnG!ApOAoIG2qU9=Ux#OWB@I_u}U8 zdE^#-%_-E4tlMk{NC)wVpn(}Ft1>xxQpNEVhoQdZ6O{`wE}m(1E37K8_D<*C5eCSN z?>a0$WN#1*CzJ#us;U||qWF`>{0-lE25 z&&gl|roXpQMxp4ALxD@2m1sB#L+H*6^F6CyIyqiL!QGsEByS;)|7pdAY4+YrU$LE7 zMbMHB^5PvG=wbOgsfTPTiIvSVCbs2zW(65wyGQG|d;teF5?zesVJ~wKE1zgTE4?`N zriEfSCX%ThG68)apd%xsPs%eYq`TrR2lBC@|9@M0?d3n}ImK2psti%)K5{!}T)8pX9jW zmx*PRNudoqH2O4l;{)z0HE;F1BbF%t@WCI)yMs+^bBjs+WbuY+qP+$fguDhUVWRi~ zfZaPJQcG~4jWyS%e*I@8vWQ{Z(8*SCm*mqfb5RufG;6)COv(zg#r&ZvWNz)9R;}lF zrzfI)f+v?yj?~Yc1X4l3M3qVq>1qnuyH0g>e#kgev2t+v!-2TRkDJZNMHBPR1XDHS z*`+=oLL!j2`yLebPUH3C)rw=g{n=2{Z8JmYo6nJxlr$OkvLzwNC6x@>iqM38DCEky zcoV`(6_a9O;$n)2-^j&#m}g)@J71awQ*r5c5(#1UHjY~xqi|e!N($q%!dK5~AMMaR zE_mauwLiMvc-5UBuE*oNG{YOk(CO8Svqm`3kL0QaNRwlAGm7MN5g% zEC||7#g&bhlb8w=GI)khrW(W{HopD>?^PdMSeYZmyk?rjUm|ANTC-Vt^vc=2Cma<7 zXc4~)`icEs@Ni({LdkM2eR_s>BP+G~{gK#cN=XDV=By(xVOpauU!7hK83ru4sY-tj z?C0wp8$5nph$l;ylsTv1xL#%Vl-FX!HpUm2nVG(bDdOW1JhE+PRz_58Ao9yHC_9yN z8R4OD&H)2G%cm9HA za$=}Z2TaQ5$u(<@yHTV+k@iR82Eddr#qA$&e6~0`>@^y8!3+0eY;+65wQ)p4eD}Ma zzV_2fAZuXdh#vDhQcg=pm&!nqpQ0`Tju)Dm1C}&2h+%WOh`yF35h%P!x~~j+5>!Dc z>-{LOQN2a*(?m|7SvVVjLy*=yN?^+RxO(HFkQUlUTcIs<(k8Nn(VRY2`b8(JLYA87 zpH|1$oec`Q@tV-zkGIB+Cb#EWX*X6FHjWO@yl)mpCUW7&LNI5YSat)kV@CQdX1>Qd zzI;R8$$*Bs9e}dpnvwRgBY_RNnKh_!|3?ASyMDN{2+kgL1)6|loCk)z-o5lCji;yn zI$Wv&Kjd&SKF^n!% zJO_vB!smIRx3CU87#nm4rPc|&H?$!36q{IZ}$2^`8g zofwr7WCo^$_(JuPmTa<~@69eIi|g@{-*J0>@{NmCWMkTc{R>u+b73ee zz+BL{OY>TERnyMuPB6Gg?&U7Jh+0x=@v{xI!+-V>Ghc=!0%ylAqaq!S&K4(+tRGmRMdxk_&0HBw=lf6iM!|PQE#@>S6J?W ziEDIPl}{g4f13RM6<0oYEy!hOnJV4F0e4h9N^n^fP8}~S#kiF4PMD=foCN%IY_Xd* z8u()teQ|d+?wsWcw{M=B!JbQexxroe@`;7VyQ7Q$F2{Yp?+Y&r2DnF8y#45X{d@nw z)>vV8&lb19qt@wkDh=KGW_`QY;-DSWoTx%c5*GSf##Sylk@X?T@>3>c@h~iyy(do| z@6Y+{BcpnVwdxayrlEqPcy;>8-K9+X6*7nJ)@^ncz{9t<+cjPD!5Z;%xgcQsaBWh? z#MPUo3gxjd@URZz`&O<{xRoHs(}%13H4*8{nZ-Tq;*{|bm+y{Mn!X^w^&^9?6OMSK zMn?Q)FCg6DZ1JS9htIDk2eL}Yk}qA!C9)VahK@dY|n`Un`pIqylHMmfWq6Z zqiy^AHwXIKT3OusnubHK$h;G(mfcdr^XAcadLPX0<7i7}t_u(5iF_;-IIk-TxUGa$ zGx7Sq*{;|~&U2-??eEw~rv(kk}arF z$>!^U{iSx)PUHP&u5Fqik_NO3&t3{T;N}s|88`-mm@VR$xL!jNZzA_ia&_}2?VDxp z6#KU!iMzYipH75TRpl-w$6OVpgvgxmvRM=|_%G;qH3*>fELY#OGwF^#Q1(`J$kqo8 z+i41TBBt|WQQ7aZwCu0v(K@QFYrGwIH}!cWZ@1{Jnn{MrLLXvc8`@t{gXPX(VL~h^ zDiX)){A@-?U%jmGCn!W z?z=OPPHb56{) z@Z3x(1grJBeGkG5^77dEf7!NdG0XEk_Gnm3?Uw(CVSVA3Sd$(gbTH|7}@t$JM9FhGz z9-f9`?~DtaHgXMccMC(^V67}sY>F`UWUP!l(D=g+j5#5 zAto?r+vr9!I&pfCrTu(5S5jv2?oIO@>YDFVn)kPyr#0bA>ZoI$ z87Bpn!iv<{l}V1JZzGk9*#`#FaJ$+^_3y5ptlek?)d!VAhf4Qwmt=pMv_<`*AEF;?)pea>xK}L$MkfjJ(6MIg|wfnY^Oi zv5#R(o&9pu)-DF;28djGgj_=lDAX1AaN#g4T!jtpDw=OkY=b`DTfYt2i@9pNrwj_a zYE#6_BSCj|$R3!GqXd!lh?(1{ki7~BM`u?XUbXk#Ho z;^k0IiCdx}gzV$DwtIZv*-ci$!fi+2NCxLA`$?(X@8HJ+e%_!*?qkN6Alo3zo)7Fx z!8NvZ{k-bdQC}pRnp@V^*Ssw{AQ*@``9U6-1%o!2nv>Z)&nm>}a6fz?grdbtAa1=3 zqex(0AtVyw(gkCXO4i&7erH9%_}1e#YemQM^V!!r^zs26s$D1ft=H;he3xxT@BOy= zVZcloBSv08hJ+O>(0jpiJ>6ZhHKIYdDMAXY*+Pb^I>O!HoVz+gz*lbGc)$u03oK27 z#aD-%NAXG;D(=D^n9`CyII^+&{{90{J5hLTo5@-W($)z={<36P9qO30BYx7 z+&4fnIErzBK;DW3+Qg%w+H=}+9&rBzU7#9T{f?g9q279CV$J&ykG>)RAZQU=jSnv0 zmWIz^j~^rk8;PN4SJ^YLpy_n{Ys0oF#5#;@3!i zU=5>AUr!lPHtIr5)1W*&%q>hwVllS?$OS&qRRj=8{7?Ck#5OIwFEk-=6N+_{i9;9|8aS^f>T7%PItR}7KPR8nLgn}-k8 zno6%E)D_HV&%w0|*ql%0%CTHf3CZ#q+?_Ce>g(l^(!Ezyr5$dePuE#FC4#Qg1E{Gb zc_VF|Tr_oN*;eLJIxbR(m=8DYKHPncYFY{8*^BO-fx)8|QD5sh1chDlA_V(b>zK!Z z9ptPl&|py3Tx|?C3fAkmYbN6^l?h`SD^f})W{b)=)VbzwGixiMG%5xs7D!YjU}{_8 z>k_>{B&+IQ375`bgz2DTTMEp&w+l{-gsq4Pk%Y_*y2FY@!BhWg{l{nBI-m<3M4<|q zX5o*aKDronn4HRld6b1IDA%T}0EmNAn)8OVF0hOw^LeY#OEMR0k7og;xVtN)v;p=U z3m)$+X99Pvf|TU?VY%?UX8T|)9pM%LLag7!b(`S1=)4YCHintlLMDH5?zc-_2PD#K zSZqVdCvB*5+W5yiwz~6mmzGk?I(wMWKmul}UNN(w1EZFSjlg2W6C2=?D5m^L(et-I zzIa+~>xVrrNXiN>E%yU`{Alxb&j{;#Y4Ma;en1&g*44&ns55}bZh9l^gHyd?M>6{x3Em+S~HFk#cm*=H(PQ1Oovfvrv9rsUCg?{ z*QekN#|Z?IAVuyne*b|h)%$S433iB_#A&|~J>s+qpnZT|d^ViYoxhF6e9 z+R5K>rw|EE;gMpCDia1zy-g<4xxUdAZ{4zH@97`vp$5`%;T56yoan9}TSs>&832Z| zzuEz$gullOamb17r?`umBG|2H80lkwJiAL(gH_|qY`!h50PigP5~U&JooXTV-Ti9- z3%cV0*Dc|i1*|iPm1uO#kGo_hu1~nZEm&ed30S*^20v+jwXj$(=~UO3(>|X6#xze! zCS(Eo{6bTuH>!a}Tl`(ngIkT_Rz3+KTi3%%Ahpn+Ol8qCJJ*}3D@&T`VzG?9R{LWLUwnxbFWZeQ|bcVb5=Wrr3xsdgCAgZ!&u#%QZEyfy1 z2>u^QrFw%Mpxi3b-qZTS3Ws!?u{I#9$cyZ=)@4G$#;2G@aqM95lo|VLA^H! zEPi9!3U=1evd4+_TW;Om=(4j>?6$mM2H?wA-h0>VPu=LkzVJoVqMqqM!(?3t0NBBj z!9}otc3k>=cpc>Abmjr=^=nxcR&rUvjEeD7r4yNh<2j%FNIN}?jJN!bkcG@Ejl-z+ zAi?qhqc-$J_eGc>Fy;ID-i}IHS=z?FZE7Mt{I7Ou;Zei{Cw`Q=73xt3YGqPwtTN9v z)%i&QkKaFeX7%M}XBPtZ2cn!Hm_p~VOkBLXyI}vov>tA`NW?v(f@zXQY-lx8m^Bbp z8?dM1%cNA@U-!DJuc^a3zs4cAN&&QVPyX&I?ffV6tT4vAjQPtqo_%=g&aP1z24Ixu zsM_txGtnTREpE2EY%NPyV!Nd-w}jADL5uP=I=cAA;eASeS08$Ic%CuY2HNLxG{f$H zhJsXPVzFBK89j0BE$O9(wtB6?7OQoO2q!D;%JF^i5VH9DP5BE^tdsCSl9gS-^i9<; zPPIqzx@Z+Rn2KLG-h=TZD!>`$C$2_U%DiE8q?6?qkw)@Zxw-X=8)dQ zXB51mE$30dUlD-7#f1jbNV}X>24F!Q`y^$#DHqot*G*Nd-zwaiT`vdx)smsK7?F7; zwYh;Gk??dR7<$Aza}9;D-Hwekn~RrE0USTgvL_M7TP)x!NV_Jqq19y3#m$*$mR3o= z3eHwW6>Ms&bWF~yEe}Dh=p#cmp${fRYd&!v@*{&LRewLp24(D%29R*gP31z1^C z4{kRKuSS^KztCcVa@vBUY9CNZI07JvvVjS9siLy%Jn?uDJ41i=5my>3-CGWWvgu0d ztgUE(S%8^tu|6>^%gu5BoEyUXIdJ$;9dhKFWcHg(b7hbJnP%ULd4X-E5E1f9Q%(XLu7Nn3 zyG*FA0Re`NYAi<@$de85Ea5%ZrnY(XM-$AquuYB*KSSNMHY5}0FCE@+r}3MoU>D?~9B%!0%91e?8@iVnZxp z0PLH+>*Yv(N+n8fbDLr56+i2uY%M(>3=;*TF#lE*iZT}JAiw3UGY+=C@S$TwzptWaQ!|w4ym=xq&O_UqOd?}CC+U6nlg5g@9Q(^%a=C8L0nM$?& z<3#_LigYTAFT0X0T)>@+{_Gx3lko;|aj)WwqO#!9qYrYSJ#oZEd0$e?IEkC)w@&nA zgs>OQA~JbL#9^BzLab&duzOqSn>oWu=Ub#*H?J@9aU^S1H37!~lmncmX|<(IdGgVB zVUOsxr%4W_2MxMW^)#>B*}eWR8+vzV4%Vd4=WY@w)CWX-MZ~Z+KD%Q4!YavShyF?0 zXA^+mNlrO}$yrFiYh^Y_if9gE35rPP*X>cA2JR*>1tBG$>wvU_Or9@!$=#X`KM>RR zji1AEw%&(>#fmSPSsOUdXmN{k31$9^*ozpx$@BsP>20sq8`WZ%C?Z^aByzF6AJMbs zs(zcTkTm|I(VDa4>s=IdX^8yU!s7va2#x9^|9k#wM(_!DY$ajjv~IsCg0dHUUws*vmc7uj5=pWeQi;qWO0m@Qz@WX)||63 z)l%kjbuvla@!`4c^=;<=ZG7W!-F@;~IDR4URqY7D`*+s**XB5Fg}pstU+B~U+{&Gi z2)49lTkichO93U!S!W893c~^4NZ_kIrzCz|FWAraw_{8}v`t^O_8?V4x9Tn{F7dty zO_Q2m?RId|zna1K1fiz;<5vn~IO#OBrDN}#pbUbCwyi$Kn$nRglS<6|veWu7tta!8 zilWVPe?k@}x5jmAyFWqtc|AO<02Rp(krd ztH!Fi;35C@bLgvw-xTj(Kd*L0A94!aVzb*{w?|=7Y7SVw;&q!|dt;mR*6=FZ&F3fO zdVuXUo{8gb7D-Vcj7NcdDqcfPZ4qd5mi(9e06CaszdXTzBnD}sI%G}jwhAo{TvOmq zkpH%hs;DiyupiIgIu(p+_()I{&7xo2IFb?vJrG*l&r_TlZH9}MACHHtzs-!J{t{;P72PrmV4C7V($lrJR}RMqAo+t^{s z!YQ_^U*Ta5JZ36S{9unIeJs3&GWAvt+H>C%(q4w7&_h?xIYSxFXvFz0tFym8-)DFq zP%y^@S|H6J_PnC_MbR{kz!tV z7YvB1xaPc&K^0fT!+4V{)zvurih~sD_mv$rbSAA_3&zRLY*;YC4%OHVaRzZ0hvnbi z;k$_ddEyJw2k4&yepup`!}f^sCB5L9(J5yu=vxgo1KbeVAqHcY423wfowu2lX|?ya z#(0HxJp)Eq6vAnPbE%^*PfSc8olHSbAkF`&)}b24d?Q3((sNU&s)Hf=L>z8!<}>D7 z69=)xj7f+mx6*r_Vi6)ghk$;=!#AfK1i)Or6HGFS4`%+1=$q(=hu6aLF1D0EFZZMWQiPh6x53x-h&;!D;7dz&~M8%>Z(@S4-u?l{@;8`N=#Kf%a@@fB% zufJntS~2l|It3Z7(g@z~G|OvGZv+#ceIrw=ur-Q?*?aCn>Nl% zw*4W7&m?GQaQa4ByVXhwFl#O-WP;5g^DQuhRXJGOm4aUiPKGHY_|)XVVJ9}Jm_o3T z{ydy&Fr8oMF@oY&tNpQ6@q(`hnU7n+PA)~5yyx?;IG*el#pt{i^f#3Lxd}ON<7Qb3 z?H(AAkWh;;V*GHreeW5|`kW$Toa7(T9 z+hXwi3fxe6K5J!e`7TZI05XftTr#J^y-pNyGDTDul`A1MZtv3wsjo>Kc2s}iel>ek0`(__8f1nrWwPYc4Yr<6gz#?m@+BG zIe+D4X+WIRA@GBk3JscGB!3}0%4WBy!~C=cC!bdbb{&621n5MucqCFlP@ehvVGx~oU!+XpzvzCAz}@+A#Lg7ZP*_G z8OQ_%)hK+Jy>OLD9V{5H=znS;)!s8YdA$AyQlmO)xDK0=@&$GhEQhIEY zl)O8B2|Z-*<}jN|{-tIgl_EFVW{$+V5It?MJ4jEwb-iA7*7a4$URtlPJd6|yhA3r* z#);VB3Hth`7g3agsE1R?6a8$cZ$mt&D6_qNaQ{22X^BO)_(k&5Lpd*e-%3^L0j-u=RLZslOD+lK4YE&iT)p&P99%W8#fwPK&2 zc9*qYoyJ7dMcRoOafnOIDy*=e;VA#Lph|Gr+kV0ToxM&USn}z?p*^v=e$`UgkVu&R z@~?A^({*J6MRxARv71H|tRMLI7$eh!r9y)hz4|l^OC4vF5D zShTN&CS_W!mT&`Bj)nFqr_hQRa|T;u+ezYXY^AkqH5xhiP0z!_nUguh96lWe+esLR z^2NW-bLm}f^KM-|Pi5I(J~(1pDdtI?R@O+|ePuTO_!fKPO4}t+<%mN}nz(X?m&VIx zq3>zffS&&7?95ufEjt!YzHrk5h1@sE@Cs^$tboHp=5XwMek?9yV`d*I8hl}*$&H*p z1oV)Vj#z$n8o3V5JVXWcOvsbpw}k4~TF4FkLimLd_wfHTaivj7Xj{0la=H$v*(){D zEQgm?YBuL*tvB9^kXHO~gJ7G~n%R>1<>=p>pq@DPa#==ATwm-v{rmx~6QpeF?I7w@3ygd|5 zhc066F5HUZMBEG=i8p-q4_(-Zvz+|5GnZ#{Bco4tRUjNMYxTiRCCFsJ0Bdl(jJZ_RQ(DpY}4mlw!T{+{ubtTn@~NfMm4h`mJ*F_=`$4id~Tq~S2aUb zCQ7*i%V@jp;tt7 z{o1aPD7jPb+yEeR#bb*NH1G<%r3Qe1l#dhe{!k>zcen7bMB2UAy^-${Lef-V%X)sP z=zf0Cru}q~Kp=A^G@o2+TM9ChZH}ZjX8k9!++k7te&wBA!jglc57S zGB?}Hd))CURXU*;p}!Rw;Lv4X~eC$GM!-{qvg%tVq% zyZA0u;6yjtlt=a2&goaTuojCWe0?oWR;0eVN-`$8?r!vX9`Cy@?+rO_v0s5eR+f60 z7DZYWP!-E^mymVd)Wx&TGXCi83gEr<;j_BZnv6~<*n-ul{D+=Sl zhWJFr(|mrHu<7)(c!+qhqD4jFFH&8dYD<5#t+w_}3V6t02Hau#>Qj^#=YP!VCHxiO z?|z0zrm~uXAS`l0zn?|JRrTn@>e3=GG@zeuDPC4m74LuJ4CX>o{cT;7 zLj6hr${b-f6iygo){8a}#-^~Lb0=F$Kep)3E_ujBaGRfuUKHLVR?i+@Yp8Lw)##Vj zBS`E#kV30BysZOXM)t49M?N6n2U$%fs>6ObANw9vmU+mlfPzXwh{XdCLoqr0CTS-~lq$Wd_v5sYluls%qC(o{{KcaAL-hFu1LJaS@aF@cV8q+ju0?Q&{ z!V$TZ`%ed}*R<6ve7(O+x}&Og?!0i&4Y|4JBxgWTE)*)I#3}M2N^?`cpL|*k-108! zjCIvzbCqxovkANpspVoQKVBxvOhLc1TI3M}DWeHw0P2(wvYEV!avR%rnPH~L_RJfX z2mdpo1Wv}ZU1e7YKCk+18X%AV|G1VMEd;+cC%(%bcW&MJgl?bRua4F=R<~pR0{@~m ATmS$7 diff --git a/browser/extensions/loop/skin/windows/menuPanel.png b/browser/extensions/loop/skin/windows/menuPanel.png index 31f3671d4ce3714fcc446f8b7373234684f32be5..d7aaa2f62407957783e17c8d387999c11f937446 100644 GIT binary patch literal 1475 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 diff --git a/browser/extensions/loop/skin/windows/menuPanel@2x.png b/browser/extensions/loop/skin/windows/menuPanel@2x.png index f52cf225fd8f981fd5e2710042034c7591806eb9..505a4b13b8a8feb46e199c869217d82cdcfd38d8 100644 GIT binary patch literal 3144 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 BgmVA@ literal 8223 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 LT(9A_Tm1h3S&um3 diff --git a/browser/extensions/loop/skin/windows/toolbar-XP.png b/browser/extensions/loop/skin/windows/toolbar-XP.png index c4d6b950d5fedb6957efd7c31589e5439b05c1c2..126e2722ecb8751f02e4e8b61ab4cd535615e50e 100644 GIT binary patch literal 3904 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 Smnnb7XY{m;G%GY5p8gLpp}NHY literal 4339 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 diff --git a/browser/extensions/loop/skin/windows/toolbar-XP@2x.png b/browser/extensions/loop/skin/windows/toolbar-XP@2x.png index 8372dda3d73a55569b0ad46d0af47f808deda241..35f08fddbfd378b77707b1be087468b262bf6d53 100644 GIT binary patch literal 9721 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 diff --git a/browser/extensions/loop/skin/windows/toolbar-aero@2x.png b/browser/extensions/loop/skin/windows/toolbar-aero@2x.png index f4e7e1e7af9696db86b8b545772ba06eb2de15f6..07f8fecade57c6f6104e38f3560850cc3c8ef7a2 100644 GIT binary patch literal 9845 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 delta 2724 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 e;Nt&)JmS9?5k4gPOGB{$0000$v@S_Gs$eD@f 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 a2=pB!>-S3PE+GA+1gI%%Jt}!<5%NDZoQL87 literal 5637 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 Le_k&CF7W>W1j=!R diff --git a/browser/extensions/loop/skin/windows/toolbar-lunaSilver.png b/browser/extensions/loop/skin/windows/toolbar-lunaSilver.png index 318753d0d422c06a0d6596ff8c0d11f02401fbe7..f96cb6f3b318f5f24546a87a7331a6fdf5264b13 100644 GIT binary patch literal 4001 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 literal 4451 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 diff --git a/browser/extensions/loop/skin/windows/toolbar-lunaSilver@2x.png b/browser/extensions/loop/skin/windows/toolbar-lunaSilver@2x.png index 0035bc3a5f9647150dcd8e11b0a538b5c6ce6547..826534923bf05c8aac8faa7b44685b6b3a98ffea 100644 GIT binary patch literal 9915 zcmY*fcRU;1_pYjHDS7Q3R7>ruz1ynMBC0AjMeR-P+1ewt_EuG5&(w-hd+*wtpf<5Z z_$Au+{d|9aB>CswbI&=?bIv{YA@ns!o``^!;Kq#`L@yOyyutilU_KA-+{SztwQD@Q zaf9{K%NNhyy5Vfa;eJT-q-^UbCK2W_R`S?|*i2Wd!o4doKU!>k9+d`<<;vDjkTg1? zm>}4 zN1ku&p4ABsd@f=}@de=X(v&~W@y_cR|v9W(mOTodp2XxQBAbgFJ)b9HER-ML^cxi||Z!8jOXMmD!TXExqu zrQFrWOxIEXo*~iR9%9s979!VP^PpB8F*bD*T1?yV_Ndf1M@HFB{HE1)2$p#&+nDCN z@;S|5^sj#buC*r?;z!ye$hspsn>QXii3z{PrNte#2MZBL{~Z;&#Xt6Z-t7tvFoR~t z2?Yh^>P< zj-{l8YgJ8+RodDU8-ubpY(>an3ww4k$D$o-%WXzuzfWH7|iQk4@dT^yuBYbB%*_Mn;5)sjFON0N8zp*v>`GIs+Ol zT=M$dp&-^hI-y+UNbc8R;v$LullO*7qf#wd(hdSpSd|DKc&n1IFkyKEBpO(ppojq1 z$n8e!Z0$eCu5QAh5WzmZCNJ%L$U8k%&XnhRQV1(bPV)>~jZH17QP(in-~N%T;p_j; zAGRRcV2_IP)X<>Z_pcs#hjT7K+J6AGKLhMvaI$2wNVJmJy)R@jpo=ae1(pP#s6?@#jP z(=#Zww=cDo5}?B_#cwVreK;C96r8Jy!3XuGKP1WXBjsBHa@YA<{1fhJQJ1p9RlqA_ z0v&!~WQ!cu$$Bcz?;h_xWZ7!?hGfzct^g@$N#qtso z1k)S_9KzijC%1i1ZPffS}D)fuZPVkv!f<9$# zJ6vhQ>%Oixubd@%$J}OyF{=+~?a7s9>HQ%WV&q z{|ZOM`4)Kf0Hb|J)d&i`^`ANOa^@OVeWE*I`kPGfV~pRDbKX*yMy*}k1-q?UN#cNk zqS`lv9>CFW+vsx96`9F&K`!`#4+osk_aQ1gs`E11_+R`eFw8W(s_?#Ctp>U+lm#v> zt^?#>yyq0H(G?YiwBuCK;m;N!kwBSx@Lg;XUMC4mKPf!}EiF|)JL7KuGS0xsZo%+- zXU+v3r!fb!9Z1JDkw#4pj7VLcj%=BwyO*6Kd+a8DUL(j>Jy3P(@8x}Bn^0@Q37o68 zuHo4S4EnbZHIR~I%kVjPu<+>HwLN62rv~N?Rn7ND$A)0iB=fgpSkEnR&(T|D)cf2(`l4^3~y`Ye*J%rE3ei$ieNs&}hE|1B?d$-phybqUSYzqG%YGT{)LH&Av> z8Aa&^2yLzWge*(FPuq)TCd8#wny53}mMYot>}y*IRtJb{ogTuHs> zwtm|j9Rt@pyoXG=AHI(#+}C3t{`QXfevXzSWJojXImoH=gTnA%{#%jxt5 z&FasqlJ3}^b2=KR!s8fCM_j!SFr5gLn>XxFo1>+h0W0;d-(M}qXH~cltX@<7e-b4rJ0RN zw2KH|7qXrwJew#nDH?q99mm!xC3Co-oSR!K$HF{E3c-d*90YTsjN{5aaZ$1h_2}{j zEis}KxaaJ!pYtG0!2r?npf+z#kGiO9_9i1=>u_+x6ZydC5*m-wlii16c*JyHWS-eF zN`g~kN03oA>VdX?dd3~0^`bS#CXHY}AtB>^#C^7!#m~C#_RWx>_QQybabYuS1#!cS zd36!H9p=^ToorrRG)xaLmEUapB=S0@=z^D$F&DurO3K^3UX>9fLmgbQOQJg2_D3Tw zPw7$!lv}@G^CaUam}mAm+ZP0=*%SI{QK6gYr9rt#Q={PiEb72W=_?RcM)NgK#PLha zjJ-lJ>(Swdh#m`O!g8Bt)Hj(+?xDQg?yvS%kMy7F=uIfM|7$WIYP+$uTS8}NAqo$> z`R+xIf~4f~4VEADBr;m}-~e-DwTnIo3pS>LHFX~!)f~B;VGhYJ5?t@+{CIo1`>QwQ zw=YS3A2cK}#YRsE8~j4HYE|<<5Q-l^e_jy4s(CY+o0`EyJDr!|Qi&rY6XJotCf3 zMDWUqKc9_9`lqF%ZX?HTpYaQ&Jc?a}b6c|g7#P&YEjuwyd2++XI;^qA;hHh)NUw;E zeMoQBhApLr;A={R!u*>s^?tC_t#Y@ON81PK)QkJal9)s<+1b)xb0|I2UGAt?MbGR= zBf&)7X4#~y}ipIOdzba^$tqkH-65Y+5{*63MtC-K?E(E)Fk4w z&6vO5q!Da9z?nV-kz3arWi-O62<-(!OL#Q3&Jbk`Um-*pVhTyobTahRxM-7P8=15QosSwL8X=?}&r|Jc)xjC61zo?dAUgsV1mu!Hz` z5G+jX-9zpH<6n~fU{xAY#a>4E=Ef~h!N?i=M1^80(@eP|n3IC&pxBa)oMDSm!Zyc{ z)NT)Lf-@AeIKT40=(Xi{sJ7|VMm;Q}{JUk?TWoC73T9`T*+-G8nj8uEj zi-GYJ){Y~x5S=P$PuF0Ud$i}bfc9PKUK@GzHs`z*t?=3SCI+%#63Gi|t-=vVj{uFP zck3@*L5OhVtZ_&9eY=br`iL8_GC?RWz5K)RH!&Xt?Xz&W{an1B4OTlCZs#)?Z0Xz4 z0yLdZ+?$q^(eq6=2it>Gtmyq(RBcxv04ojLD(!*j`?J*+7ObP0DCJG%cTJhqwq(HAn3<W(3TT0($6F25i&2{jf7^U7bz>ZR{?tM`q5OiM5lzqm0qkvz@FBeE!mt9`?U z(;%kzrB+&C?c3B}7Cw>L{zzYR8A`%kvyRO=6y=k;i1DEQvFBZ8zh8V?0?RP98&s+G1xJU@ z$^+I#;;r$?9?3i!lZ})-1@kt4qQ5@pn>_pJyh_rOs@74#i09;lRID_gzUWXobpq!; z#y!uuCiV3~OIn*;`BeycI2AAF3xUfFYKA|Y*ou{Sui4df*R(IWo6}9LxUoF;c0+lEqO?dz-1rpaoq_G;|0dN^a)c}>{?=~FYdek- zrVTy9MYyTaAMDxvFh)i_lvts$5qlB}%wcy)5;hHCzDcFJrNuaa|1rU^ww3_vsc!uM z|MIEiA6(-~;cGgi-o#v=Izw6H7mQF)nnn{$h>1y-NEF%Db)qvsi;o{QfkdWoPWLmOnAzM|HtgD2#8a+#Sgs`1P4(pXRJV zPnX}+!+OgV8N&6I+h+6>)|!XIHe)Gi<1Gvp5F+p=#+wfTH;G#*t!8&PzMve8ue9{i zUi#%nW-A-@X3sZSbfh3!Rrry)1MVq`jURbe9PZxS-Mt^#YJ+V^p=!9G>LEYsuVXES zNt_zRM5gU~PG0MBe7qdB5ZKGN9w!Qd0^D^xgft z>^kw_O&Y|h(MmvRR6x>>Hm=eg_@kh{c@_^9U5?r)0G!1k1$B#XSx-(SV#-Mjod#QMWG$Ul|X-3;WcD)IVg9c9poK=ABX)6WOYMyMt4gumqQAD00a63V*_A4_{SKM`f*hzMd96`5TgWO0m6TL-DxPprP~@P@tP4R*lGR7+-Jd}!YJW&G zB4p`n0{zyJ|4Beo-M~i;ru9J=Mlf?50bJv=J{4%gQeorMRn|=UIqRcG>H$GHoL?2< z@PxGPusgI)Mc^?oun;penc71bVV zqrw##ak0IA3ud@=s>5jE=8ON(lyXTFl^1x3AE>rPP-fAEJ&paFH#kbimb@;Xdd+tG zE<#~O4K(Q)Hp%OXzm;8}aeyP_ySL<5gP&rQAh>ARs};AU}mFr((NeyynFiFa=y6Z1D~IbeKMeQu^>E4rDOD@3zv3lw&iY>$Ezz(*OOBIx|X0|voU5SCM_<523rUyq0+PI zQ%K3|Y?hl!!pPhU0vSrzmFO*5>m#Js{RflQ4;ZM zW_**11uwaByn@Lb{e8P){J1EQyJ{;{=;)vR@~^Xqx2a3&z7qaK*x}i%f2wglRPSG##rH(C2SIDqslqJ`>(A-9oTNH$7aNH zS5(K3o8c5@Rj$gI$E6gCf5=d)MndF(TUKdb=+x~tos^N7gbvT|gQ^HZtdRp@13eJv zD4ua&`$Hb@*;!k7XJ@waoqJ00vZ-DQ=g^lE3=*fszP39~JuNM2$7kp5x_gHa z=iMzV$aJ{pdqGUATp4!NZ?F53a57Ua6C8Oqlt7=E*%jPr(TQPkzLC(NOz-_O_svfu z5}7_5;R4wC7u)PRAhrkLDw>)W9N>nCX(5k@P6m-XgOqFEuiHJ??tqIcQM>mSe9mar zN;1H;Y|`i0w5fsrYEQqskGG?0!ZKlVD$^`23>7C{yy-sfpm$>VRA}jleiVZHMIld^y-MM z$b=X5$Q&on6SzWue>&c3tIpLnr636Ih( z8sS%Twg1puvYJ>Ln{LqAc;*p7F|taDmz zgKzUo=iP>7ZwDQw@p&G%f_4)IOzn73<)DGzspV*d00MJ09aYZox@=9XZR`M5Tdoep z^n^aE%?Q*y2kO>)91*6U%Lsr;D@n;7vdVnpHT8U|W7i^ouk4Ud@5crn!10S(7XUNk z(1FHBJ=~NNC8t#)51-je??1Yt!@hc0JWeN(Xd*g21c4_c-bOUCb0^iv7g-TaD$F!( zG6A#h!HikwOdSQmKXg5JT zj_83~i=g%@$>KGg7N`B!U1-zQYvGB@ zVi|4NAnRiM4N6sw)=oTl!3ZJX(p*vz%xKTZ=c^$o8h7z$;!CdThr<+6X3F);FwRCQ z8)JY*M;*52M-#0fm3&d$C<5`W29C7fNpeuYx)c%=< zMu|^ZaFe=(_k*BU5t)fZAT(yyj-ocYQZjJ-9G?2h2dgF6Bfy)XVcpSUMk^bQ(|x~w z(UXmet}xzme86S~V8T2^AAbwZpjV`?H3^#ybsFnq%#2FX2`dN&45(c`9gn1U_Ec#R zm(az$zi-2+Hyn7VeT;T0(}}>d9eB>QwH5{>jZh%z?BSK9%mcZX5ebj+U`Lfr=Z)j@ z4{AqTb>Be?Hbyi=}>mI2VjkVxG z`6Off=R^!C4r)r3FTgiA&mtw;QJ<+F3$AS_mc(7WlROkG8)$gNK~c9cSmhVqzNC9rw2Q;D1Q@GsnE!N5(kHY z?!a;h(QaN6E_3B%gqIMno%8PM96pwCnY^N%vLMG69PCJqqT4VO`g!h`qVvcA=AE40 zP-qY%mOLm+e60#x5K2nC6Z0)~h`D;ER>9UMsf~)%{nA+Ndv)*fF?J{h76oDk+M%yw z2ih;o8f6?#*tqK0SxRH-TAQDgWl^tAU2aW{#{-5N;b<*s{`0`|rm*WyAKZXoN_gV$ zhsz@ZS)X*W%<}D&8euzc6Ont@-yUuTCME%Y^d4w{IsGt|ymmOdmuUerI~#il?bIyT z(IT73rdxH4jF2bILhE#f!2K`O$X?c=4vy8Wjf7*1F&W1H^q(dRrGaFBMpRGU85!D$ zp5?LGGM?}_EIG;Rcv53-xG-4i@F9LpEX^%?`=-1x<3wx3H(5mkB4Q8)xrx_>Bf(pq z=Il<{iW^}KGoz#PkQH>!EfN_n@861lQuGrK${}y;kw`Kq?|$mFxK6W_YY=dn9fbc+ zStAsaX_G{qZ24KL;{EA0xZOg1t*9ERCCBu>6C$_DwOCh_`u#n|{nboUa*3KnYUz4n~wJqUr2Lb9Ev#^x$O$d96ldWyyPK zYFOc%NRM?Sk2gs`$)M2_6iqrmkI+WTAEYokg@OXZ>h0zRoee7nLM zOB!MH*yZxaMXbSZw)%dx_!oMQwgkIOZ|4B*`l*~|Y}G{G=Z0*|QVq6`74oiNxl;{U zch@}o+5f}-m%~c9D0qGnyqwPweo8!}!X^)MF+&u=_DQt#DKip$+pV+6zA_|j+eBiT z&AQBWv-zVtO5}T)Q#G_*y3JBKF^>6=w?G7);sGQ=U%Ug7RCf81;HgvDvuBj!jkREC zaOK70j%z=$bpN9^Dqs2l)h8$A>Bag#cp7!v@Ub5imxea7xA%NvK=#TFbqFaR3Pnlq zyJ&y#dhPY4?Z+mCvxhl88+p?5zmh9fFZ3&5mjnPcCW%1OKDuW{k)y8Q;hM6X>?^A! z-iiuYPSga}6}PCiHcE|#i&_xCChFm4@BaTI?r0+LN2&h2x2vbAf&%ho&TLl~r|g?y z00Rg_Qy-@brG@N2&HcT#_L&yB!NOs_1 z+>DAab9p`W`gD-^M(fkHcy<3&ZC|Xe^tZhww)2<6DI>W8vuZpV8hx!i5H6@Um4mT# zRuhT8sUi?)~6xN z@z}nS1y}DCG-Py!kw>m>=Da_*le6 z5RiT?BI0(}lw2*xUiJs!_2i3@u#a%_xHZCoN58CRs*palC%xPS$+Si6_Bm?{b=JmK zTVVwN8|#|MO4EdcnWCuO*_7_32uBpi=}@<*8nFOtkdIsB7P1w$B8*3^v#z<2%&3|* z00{()Jk<+y*z7u{cR!@Q-hQZT%-#@c&N6Sce6eKbuB=1VBZ`7TNR<8xpJvc5DD zrJER(PHF5#9JY9%pTL=!()tdXfcG~*Gi0=1ZQOTMQ zgXXOA5CK%k6ywRqT9(=hOmIqKvyL2d*30)C-{Y8E7Y_>~Dd&oSPfbWj=V!Im0A3** z56NeZ+mBx?=ZVGvKfFH0`_vrgk|eEKT@0I8N zFfKT_^sEK5jSmG8Xn@#l`G|!j>R5?!pcn!-k8d9VGNcM~Er*;AQjo)#!v z83KFYRU_>?UblPVwYPuQ!;kCfugeX1v)}5rfzteH209nn1Q=^siRPySG>~6Lin73) zwkzWAFNKI!4VGu;FxK19G+n1G&->0+;s=MekJVf9>e3e{2czTjt_&NeGY>ZtIh&>Y zpZh+@;WEW3(Vb}3BdgpOZvBq1%ibF@W2&;65lnv{V9uJvNkr7CD`kbD20mht` z$4>O7J;?QzhF{7Z*G`)qG{(1i%IxKFj(CS9TZplUTth5z>)bTG;WrClL1OSLv@9zp z6L}+yKJ5T6FnfeMt}Xh5@n}9(0)x2AFfXUos8||L{R07k6@IN>t`E{N>hB(j)0SpZ z$>lr0qE_=zN?HQ6v?@TQ4>Yt&xj4{;SAB9c^5J;;L|e;1y8MyUCbGdBXor8BY9~o_ zb5LqJGy$NgIV)vud3ozkry?SL9r4AyuSLEf{Uu>=a0Nte2zl9uMmmLE`baJx`4#$8 z>7Rsno7iS{OgRLnhAZ(5@a#CJYztoFMx5@8W*b_jHUaLyj6w#x*hRx_tf7Hhu-b-= zG+C`(@7e(tE4z1whmlFa%`TJr#Isfo|L&bbA)seyO%d+9j60R;lr}Yqy>}Qm<+nRW z#>vJ~`#cU#iK0H&l{ZiB?=mLSd!Lsp{|c_+&f<~6xt2>NGM*27#j{u}`cz367T+dR zIZ|tqTEA0qsXI2NwgPk-OXZ+X_eQ=h>2*q2S+AYm=I4>T-f6m-$Cv}1BYPz6YeUt5 ze{uvNBUgTph>k%voWQ!fIXwLfzMhGOE~#d~T7m`^VrT6`k7<4QuJSzG#HvI}9n>0g z8_*m=k@RhNRO*iVJFR8C*)LUq(qItHl)wRuobNYHzV^$}?`8*cR4AeobDbt-fr_yY z1<4u$$QPG$6W_bpu7Hx$$97w043{Tic)XG1AK@JuvNjnWOM%h7zA5R-(^1Ep(xUZ7 zgm(`j!okINdsNlA|f<7$91DBhU3` z>)f26*^cg&Uilya!gZ;iJVL)!Gt}i=Hn^XZ^;~lEE-B^T0ahP!sxsOlkmuaFM{>5l z+_5`FM-zuS3TEu*t0wb}@bNv2@+kH>5AG4UtA;_lA>&n4p6C2UC<)s2p$)PhecGPn z3r}ZnYB@-wjGB+D5`S{y*w%P;!f)we)R4Eip@-229IwtMPp(`fB~zo3o+$DiM_#dX z&+`M{DBzJ=$OFpTEK5wIZx`3vee=@|9%YEVn)nS>T_wfM*l^EZYkV0sH7N6~@df_M z%GJEz)mzEN$0C~%=?2oH2X6;_Q-Im~jR8=%FsPgMp2|MC%D!*ym1Fv>hx!oapVDr; Nlm)#ge*W&${{aQ31GE4D literal 11118 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 YqnQF(%&h7-G#HfJ(C)59E`f>v0UFvpF8}}l literal 0 HcmV?d00001 diff --git a/browser/extensions/loop/skin/windows/toolbar-win8.png b/browser/extensions/loop/skin/windows/toolbar-win8.png deleted file mode 100644 index 5159731dee2b30c0e966a06c41c6ef0805d95c11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1121 zcmV-n1fKheP)9*0} z+VQLBb(0R4KA$6xrg1typcUVEF5F}sX!Lb*z1@pBKEX`Y{sYThr|Ueg-H9)BXZ_kilf5$a8I#WI?{t}T z;@Whgj?{4RZ9^R)fgUttB2#d&b1tqs8}S52Jb~%hfYrL=F8yMT0n|XxUx;0xg!1_r zS)4`i;@T4?du1{WCY??BZ6=-Rb?L;NIFf(D50pg)umVqEsSE7EM(jj`3pL|DybImg zfi+;fMz98#Ag4PbvPxaL7U3d=Ds%w7 zIIcoai_yU-9!I6~BwBSxXa@e7iO8R$<1SvrX0K4hqyv*qWUyCEB+xIY3+%^LD*g%{ zLKb?ORJ6e@GmJ{-Hw@^GxbNXH3n6^d7`O?=X0OPm1Dj54uvbhZ@H`65g`R0DqK&F( z5iuq_x+8Qrrg;Kc2z(Q%3p3d(3dN!WtM`+<6BA*A?{GazXvYHFfI3{}Lcj_@JyT>L0*bAiv1Dv#+-7?w=-ib65zz@!sP@{Y{U^Pyqx z80h#&{bBGb)?pNSX1Lc@y2!`48+u%)^2fRI&Vz-%6vtuAgPt>}hTt@+pyyjGKoJa! zJbm0`uPd*(+NAUR);CQ$b=h=+j{A*wlS2=(c+@SPM?VDDU>PoVkweHqkM68S%lQAm z8QXcId0}zo!M=NFe1&S&uEHVpwVso>3q{?E#AdH3H0i*m6DNE>`r^+bR_zR)@jQQb z;#vF&J>{K7yoSKjdD++DZJkh`U~L}CXD{0E`=lJ#(t$}Q4wH5C#V=Kl1IMrz z4XD96oW_@U55K@OHXRA%e)aFjVeCf}(n#SabR&;~uM>&MUUcMw`uW5O_mW#aC5nsnA}+G5hV_PTW9j@ofz!tXT^s00000NkvXXu0mjfba5W( diff --git a/browser/extensions/loop/skin/windows/toolbar-win8@2x.png b/browser/extensions/loop/skin/windows/toolbar-win8@2x.png deleted file mode 100644 index c1fc1de1abb6ce7a4f1700f8a43b463af5e15164..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3605 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 KOpAwr!py z|4Sw}v-9*<_wARQjCN1n#kKnHjU zwxotd(8TMZbbr(1O&S?rcn`cDN>{lTrK@--UByG`(e}iVjh-G!020aQ+RG!~jpgy2 zg4V%Gm%NnEoN{<WEPZp=4g3NnB4yX!6AcO2bfpc&G?!qkDza*pSsRL^vBB|l< z*dI+?5s$*X{Od7_UuuYYLp8_W(FtI`v0f&l=?TDQhr@IQ93Iy%ls#aHcogpCXHOhi z%!FGqFMkg!AOm=lLC(s_`XfunFQp5;|MJj<(ic$SZr$NS254ntQ6FZ-aQ<9DTs zhw@cCl&|8Ud=(Gnt9U3s${zD~e0KSZKM5R_c~Mo!0bk$&9E7E?$?=~DDjrH#@ld*o zhtgF%l&<2T^k{kF8S??KSU$KDqMDHBpZCb`_?VYa;y?^cD8B%-Is7F^jj&b#0000< KMNUMnLSTYK-C^bc delta 727 zcmeys`kr-yO8quZ7srqa#*Qhv(xL)6udwW}NL2h-jZu0tE_Uzk0{xi={bwMw` z>{-8k*38*+vO>|wW<8{#Pp+2yxI99!uH|YBq|@J%|5zu$(>cxcHY#fZ<)0qRllU|_5*QY z{-v`kH0~a8eyJwsW&SasipMr+&y={Hvw9~u0#637U=}~n`?``vI8pb`gr7ARgxH*? zImmgH+vZJjiuoZhb$|OM-)pWgy*f5QHcQph|LZ(y?Wk#OarkrIbLP?qdu4Xd4an-gE5z6WS$q&Un48^0ZyEWFot(#8oc+ivZw`E!AL+<8`r)PdYXB+3vW>Y@e{b%^QYC)1xb+APUa zi}UQ51^vHFR+u&K$pTlKZ?C!3{Fy8*c&Dc97k|?9DuBo6WOtabZ{dtBzkzyibj-1mBeRO$RFKX+68nxv)3X=9X|O{|~6K zHkLCux7VlaS6b8H^T1ba=4yrG=80`@cF!}~Aau!T!IFvDr+|*E2^D);_2#;$i`-kb zbI}pp;&Y^pbrn;2@*l)Z|M_R*j>g3nyl8#mi?h@Eb=R$Rte{g0i0{SSkM?mK=2JQXkXSh2mgVB${(AnbfVl zVY57}V~cec(}Q+hCl7nLtkgU-M%%TJdw)6iFXwz;pYQpc^Eu!5=X}rm^Zgb_M;^9b zzKIZKx02CAyN&c?qLuOPiI@z=iT zT{bNZ?#cTJ7i}~$Fc9-xPO=x@Nv#~ER29RY18~B`V4cHxP>29_t6`BD zRPp{>F7$-8PPJYlYEaoVbegYrV~V5P2fCON5T?xeRI>gZVtBGAgOtx$R-XeFC{_71 zH6e+~?CU||x$grTItDX2I=TP$l)PKw$&x95s}W?c>&=-_jfy~|tjpM?!?XZ>(88|y zOhG;6jAEKid7_NdgUR>{TvsU(S7jYG;Y0L?!-#k(B$v@L511XHn$*v9FkfrFUli)* zPcZD7V7c;5T~dXnY_xfB?L}@lSfK83>g})9kSAt%EaT&sVhjYE8>0>w0VK_`qdKE< ztD(W~U?X4X@u^d6Ny!P^^%WR+4>z3GdefX{ZEs%Ku|Qb%4c8947s=ey8Oc|b^S_cQ zEx@<3m>+X)V@BQ#{7H684q!2t!Ar(EX`q^eZi z2Yt_jIK1)}p>ib6DC?(v`&Qz-L7e_&h9x3;tJ20nVk{~ptAlw&nh z>&0$=NOC)uIS)M~PCPBGzd&mlKybHCkS|NBne%ia;vp0?Nq@GwYzmxAJCDfdx7jLe z+M~%w<$;NzQHc7P^FND~?FLitjfs{^g;!M^xF7O754fyFlf227wHrux=gp57IMf#< zvk*t6;rR?b>DvCKYN6u#lcVBLgAJD8d}dDZlBmKPK#y9e?{8o~&eNI&V5tUQeHPG> zciYlda}I9$uL-bpj}j*>Ns8gJY5#|s^eCh0Y4JXk@w7~pVD&6v{Kg*7!!5=G;trIh zoSf46ERSB(S!Z`moIr{&e3yKh=5r^CC*dQFW|x448m8X!)9lx^@inU5hQn5l$WtM< zAKVsgB&sO)3T_>J+JJ!Ww#l|_G#%)&LBXlW_=_;UP+s;A22jkgSx$T*8-XXsfk}nl zux$IvO!zv)`nT52EYVR2Ld9QKftlza~mIjNv27cY@gT76gkH$-+Y&AG^suFet|I&<@;;~w~ otut;t+Pd67+wF|ju27y2nJO95T|FdP1iu9cHZ&5$Ihb7dA5|zS+W-In literal 1611 zcmZ8i4K&kh99}Gm?XHMT*!t#>&==xwS1GxLif(m6Szot9W{5E#AzR~QSMHgJsdUp+ z+EU7l%AdGLrh8ea)MnGBVVix%A|Z?cb{~+mG8zpOrUe4?ZM%s15PEa zoNA)lJj((1(oyY!ptD&ga_2^(`r6*LovlBkm3!aL3~!Y>MFNjYcNFNOsI1bYvx3yY z^+(1YS|!pOuTw)*WIlYpeWRBU{Po)Bxb85Wm-KcfCOHy7WZc2dJ>N9ZnCxfn0@KPZtXEu~eu3+*Nq@5-^&FgzEFJ@I~eDufXp6@9$64xqQbVoDiz$04R zU{)ZYrlfx~f95``i5m*5Mt{rsw9sl7SgQOj92oM2lO(Kb8VaFH~qx35q8;W;O}0W_lU8ss||dbwTNfD zGHviv@C`y+Ktv(jjN$LTD^#rD3*lE|CEKljD^x_>Bi9@|ib zJl3z}jKnaCVjT>tDzQy1Yz?6Wy3&8~q#@ve{=eytBF_8f$c06oeircUKWqfKRzLb(s zb7+G5MzZh~t@kQh6~9q4MxNY@=&UHhdYo%-wP@~|%IL%v0Oysc?n*8;Ft0Ao-%-q~ zmz`YKr+zz!DVo&*;@r>&O7HWr+^)k6ylRf)U>D$kdI6{0ttlHXmpo4QUZ!-*e3WWC zwWS+K>vPv*CfK#i*m~J2pm26{2>)Q{#J##o-n`Ax&T_w4$HE&J_T=I@6wyrI-N7R9 zx^PCcckyL4ChM8Vvx3o%^eRTD@VB~92^)4YnAu*WsmqyCY>&*2g3u4N=4Lmon0ZB2 zh?;zt3NAK^q`o$@w{qAs&N+ojv9IeUpGw?nTwB3++MRh_EI*tR@-UKr3U(l>JAGDeNkI^c-lf;*=!P?ScwX3k(cEF)dltVt-jN%J6n<_}HZ&ioG^O12d$hIRx2D%7O+PA;9> z%#s*oqEAy53KHftDW*hRnz>8tOtufFW>matm8Cfy8vkJ?#c$H?N^5C5K!}3;D|o zQ#-Jq(0t`YY;h5m640Y!HuQ40eh^Gito4hDN&w_{FN6{4SC zLXp%y^%Z<(IWT8l3Ve(!+oIm)_S#Yi5&H=Y6NTJFA#U)L95*==!7`P-$$CD1uZ}Yk z_8mZjtB*-f_WzJKC>b1bBScKl0jp(>v7eOs@e7tPn3>tte*B~5#`|Cnj0Y1h5a)pw Ys2sF>MY6B~`XpeXJHvw;wja;`8v`^>J^%m! diff --git a/browser/themes/windows/loop/toolbar-win10.png b/browser/themes/windows/loop/toolbar-win10.png new file mode 100644 index 0000000000000000000000000000000000000000..59337608dd99609eaa474c2f380ce8c3b717376e GIT binary patch literal 768 zcmV+b1ONPqP)ZQHhOH>hnRPVG3UZ3ngOpw?g8ZhxyVYq(p%*-HJU8)Bx`~I|bbW%a;n0`H!ZgMV4H}O!qiHFkTO0?Xf>sKs>tm zZlH4tzQIY~o}{~s+A{_I18?M=$qtVzX#_{aV{op(dQ|b{L1z(6g2lc)N%=7IqY%>^ zb9h`y38}ylug80?Nb)3gTFS8Z;?@Z zro%yxL%XJXJic#~Q;z52F*sL%J&9$p93IQO8f=5?5Sr}rtg5UZ!7`a^Pes@cnZT8d z@=isMCtUvb98!4<&J|RTd~&Bhz&WArhQGsZxGC$>&`w>Y-a$iouA@D#VZL}C$nzrN z83j3A9`5qW6N5NB+~rNq#a-US!(HCQ!(BdJp3skMS26U1=yC>nd44KQJd|(Zp?nh$ z<(qgY-^4@tarPuurRQVlBFpoz9v;FM_zUjKUTdiDDc!_F=_VdZH}O!qiHFinJd_?U yPf|4>2^(QE9EZ3j_?{qm_*EZyBoL{^C-4JMq@6f>$x7`20000o%=Z zQc_ZP`_=UbbS^?CnnkZNGP2 zrMv7|FQa??Bkz|U!L?F9R>#gBbh_1WO8R!(d#qS+e@%1C>at4q6vlMm{*vz0_{i5) z_xy?dFJ9SHw3bEly%NnNPcFf* zeC3y&r4qGi!Kf+zH5dmo(Bitz66(?4Aa63tc?v#P#X?;rB2Q%yEaLYVYqxWP^u7U| z#T%`O=G(ANTrt0n)-kWmEQ4{?Y_K5w{5O!9kY#Hb9RKVrpJIc4fule(p*A?5fvT!A zQ>?Qo{_Z|j<(jqDW^1*-T`2YwK~+wf#Q=L79@iFt(5QGg%>Clp;||7Q>do8b-9*f7 ziUB20KVMvEMt?x~(Ucu5CIIPs-rT2gfVpumgGQ}F(>O$T2aRJnMv4+ZF|I;e?6$9) zYh*enPCt0JsUQT{{{eX@QEb|WOsjccPi`{5wB6ibrGrP^Qq7a!%M@0ER$1(l7fR+! zLR@0Hpz}P~%Gb-~#N_57@{>pVh(46?W4@%w6E}f~SZqtG5a+G=vf?2SA%9J2Ggvkq zxZ?+y-Q83}af)6hrVSEQY+L6n>IfDtcm0z3ew*ky`QlmnE>;z0d1e~iKxs>$4HF}q z8*T616`r)$6-uyh?K$Dr#=I@T_{C8&kxRL9P9(KV1K&@E(Z!cPn6EKNvx4Cl{?B*3 zv)%sA7A!U2BKhMTckw(-Vmww!Ll~07efCljVF&1f;ZGqVl{taOpCFyRerf7|&eQ4u zqDP+MNQ0Fe8Tbz)YYFJhIJ&HID-loTC6BON^?g?4|LR${T(L z(3b6RdEeqIZV1n)$na!)hTuzp+#8kYm*M_$J{Z;p<{ZERC2j4@4S$ zRIf)CHS)9@W50^dMdvl70 zVQm=iGZ!%7aP->+2pMytG@>OT#od|A#3U^iy+ z&lMw+i>yV-0&)Ke=}o70+0A{mpR3noLa zI^W-0^D{ZUV_3A|QX>S0V`C!2rK@IAhx|M>_OsI$`|LM>>z_u7jz4@p8k*)IHHlE4 zUmJKkb@QL;g*+B`fe)!k@UOyz)92}BU(Q#d<} z=|B$JwH{r-2O>yb^hG$OY!D4vMUb%I`)MY*Y*2g5dd2w0Mv`v|oOv90DRR*4!vYNDAh1*?roh8~P0pUQR_I|x>R2BU>RV#V z0@`YAQt+Vf2vNT)Xz?&_qv8kAJ3X-{;;2@*x-R}mNrD|6`i_$`;Lyr;pX98DhnK3Q z){{J%;6efgQr8Ws_{t#oDQh{GJf^nxu)|Dttg09gU6!LH3H{E75)#9CiZMK|A|drS YqnQF(%&h7-G#HfJ(C)59E`f>v0UFvpF8}}l literal 0 HcmV?d00001 From 273d2c6fbb7dc239666eb2088ae679f1273dfe38 Mon Sep 17 00:00:00 2001 From: Mark Finkle Date: Thu, 7 Jan 2016 14:13:27 -0500 Subject: [PATCH 15/16] Bug 1237632 - Enable support for environment/profile/creationDate on Android r=gfritzsche --- .../components/telemetry/TelemetryEnvironment.jsm | 6 ++---- .../tests/unit/test_TelemetryEnvironment.js | 12 ------------ 2 files changed, 2 insertions(+), 16 deletions(-) diff --git a/toolkit/components/telemetry/TelemetryEnvironment.jsm b/toolkit/components/telemetry/TelemetryEnvironment.jsm index 49ccdef6ad23..283ce5029edf 100644 --- a/toolkit/components/telemetry/TelemetryEnvironment.jsm +++ b/toolkit/components/telemetry/TelemetryEnvironment.jsm @@ -699,10 +699,8 @@ function EnvironmentCache() { p = [ this._addonBuilder.init() ]; } - if (AppConstants.platform !== "android") { - this._currentEnvironment.profile = {}; - p.push(this._updateProfile()); - } + this._currentEnvironment.profile = {}; + p.push(this._updateProfile()); let setup = () => { this._initTask = null; diff --git a/toolkit/components/telemetry/tests/unit/test_TelemetryEnvironment.js b/toolkit/components/telemetry/tests/unit/test_TelemetryEnvironment.js index 13e2c4dc2ebb..c86756908b63 100644 --- a/toolkit/components/telemetry/tests/unit/test_TelemetryEnvironment.js +++ b/toolkit/components/telemetry/tests/unit/test_TelemetryEnvironment.js @@ -14,7 +14,6 @@ Cu.import("resource://testing-common/MockRegistrar.jsm", this); XPCOMUtils.defineLazyModuleGetter(this, "LightweightThemeManager", "resource://gre/modules/LightweightThemeManager.jsm"); -// Lazy load |ProfileAge| as it is not available on Android. XPCOMUtils.defineLazyModuleGetter(this, "ProfileAge", "resource://gre/modules/ProfileAge.jsm"); @@ -148,11 +147,6 @@ function spoofGfxAdapter() { } function spoofProfileReset() { - if (gIsAndroid) { - // ProfileAge is not available on Android. - return true; - } - let profileAccessor = new ProfileAge(); return profileAccessor.writeTimes({ @@ -293,12 +287,6 @@ function checkSettingsSection(data) { } function checkProfileSection(data) { - if (gIsAndroid) { - Assert.ok(!("profile" in data), - "There must be no profile section in Environment on Android."); - return; - } - Assert.ok("profile" in data, "There must be a profile section in Environment."); Assert.equal(data.profile.creationDate, truncateToDays(PROFILE_CREATION_DATE_MS)); Assert.equal(data.profile.resetDate, truncateToDays(PROFILE_RESET_DATE_MS)); From 67bd7924e0e1014d317b03a20637d994b76b47d0 Mon Sep 17 00:00:00 2001 From: Wes Kocher Date: Thu, 7 Jan 2016 11:47:47 -0800 Subject: [PATCH 16/16] Backed out changeset 72f014c66fe8 (bug 1237040) for breaking builds on windows 8 --HG-- extra : commitid : Bbf1lc2O69r --- configure.in | 36 ++++++++++++++---------------------- 1 file changed, 14 insertions(+), 22 deletions(-) diff --git a/configure.in b/configure.in index cc6189ac5ef8..eff1a321c1ad 100644 --- a/configure.in +++ b/configure.in @@ -6278,49 +6278,41 @@ dnl minimum minor version of Unicode NSIS isn't in the path dnl (unless in case of cross compiling, for which Unicode dnl is not yet sufficient). if test "$OS_ARCH" = "WINNT"; then - MIN_NSIS_MAJOR_VER=3 - MIN_NSIS_MINOR_VER=0 - MIN_NSIS_PRERELEASE_TYPE=b - MIN_NSIS_PRERELEASE_VER=1 - MOZ_PATH_PROGS(MAKENSISU, $MAKENSISU makensis-3.0b3.exe makensis-3.0b1.exe makensis) + MIN_NSIS_MAJOR_VER=2 + MIN_NSIS_MINOR_VER=46 + MOZ_PATH_PROGS(MAKENSISU, $MAKENSISU makensis-3.0b1.exe makensisu-3.0a2.exe makensisu-2.46.exe makensis) if test -n "$MAKENSISU" -a "$MAKENSISU" != ":"; then AC_MSG_RESULT([yes]) MAKENSISU_VER=`"$MAKENSISU" -version 2>/dev/null` changequote(,) - MAKENSISU_PARSED_VER=`echo "$MAKENSISU_VER" | sed -e 's/^v\([0-9]\+\.[0-9]\+\).*$/\1/g'` + MAKENSISU_PARSED_VER=`echo "$MAKENSISU_VER" | sed -e '/-Unicode/!s/.*//g' -e 's/^v\([0-9]\+\.[0-9]\+\).*\-Unicode$/\1/g'` changequote([,]) + if test "$MAKENSISU_PARSED_VER" = ""; then + changequote(,) + MAKENSISU_PARSED_VER=`echo "$MAKENSISU_VER" | sed -e 's/^v\([0-9]\+\.[0-9]\+\).*$/\1/g'` + changequote([,]) + fi MAKENSISU_MAJOR_VER=0 MAKENSISU_MINOR_VER=0 - MAKENSISU_PRERELEASE_TYPE=$MIN_NSIS_PRERELEASE_TYPE - MAKENSISU_PRERELEASE_VER=$MIN_NSIS_PRERELEASE_VER if test ! "$MAKENSISU_PARSED_VER" = ""; then MAKENSISU_MAJOR_VER=`echo $MAKENSISU_PARSED_VER | $AWK -F\. '{ print $1 }'` MAKENSISU_MINOR_VER=`echo $MAKENSISU_PARSED_VER | $AWK -F\. '{ print $2 }'` - changequote(,) - MAKENSISU_PARSED_PRERELEASE=`echo "$MAKENSISU_VER" | sed -e 's/^v[0-9]\+\.[0-9]\+\([^0-9]\+\)\([0-9]\+\).*$/\1.\2/g'` - changequote([,]) - if test ! "$MAKENSISU_PARSED_PRERELEASE" = "$MAKENSISU_VER"; then - MAKENSISU_PRERELEASE_TYPE=`echo $MAKENSISU_PARSED_PRERELEASE | $AWK -F\. '{ print $1 }'` - MAKENSISU_PRERELEASE_VER=`echo $MAKENSISU_PARSED_PRERELEASE | $AWK -F\. '{ print $2 }'` - fi fi - AC_MSG_CHECKING([for NSIS version $MIN_NSIS_MAJOR_VER.$MIN_NSIS_MINOR_VER$MIN_NSIS_PRERELEASE_TYPE$MIN_NSIS_PRERELEASE_VER or greater]) + AC_MSG_CHECKING([for Unicode NSIS version $MIN_NSIS_MAJOR_VER.$MIN_NSIS_MINOR_VER or greater]) if test "$MAKENSISU_MAJOR_VER" -eq $MIN_NSIS_MAJOR_VER -a \ - "$MAKENSISU_MINOR_VER" -ge $MIN_NSIS_MINOR_VER -a \ - "$MAKENSISU_PRERELEASE_TYPE" = "$MIN_NSIS_PRERELEASE_TYPE" -a \ - "$MAKENSISU_PRERELEASE_VER" -ge $MIN_NSIS_PRERELEASE_VER; then + "$MAKENSISU_MINOR_VER" -ge $MIN_NSIS_MINOR_VER || + test "$MAKENSISU_MAJOR_VER" -gt $MIN_NSIS_MAJOR_VER; then AC_MSG_RESULT([yes]) - AC_MSG_RESULT([Found NSIS Version: $MAKENSISU_VER]) else AC_MSG_RESULT([no]) if test -z "$CROSS_COMPILE"; then - AC_MSG_ERROR([To build the installer you must have the latest MozillaBuild or NSIS version $MIN_NSIS_MAJOR_VER.$MIN_NSIS_MINOR_VER$MIN_NSIS_PRERELEASE_TYPE$MIN_NSIS_PRERELEASE_VER or greater in your path.]) + AC_MSG_ERROR([To build the installer you must have the latest MozillaBuild or Unicode NSIS version $MIN_NSIS_MAJOR_VER.$MIN_NSIS_MINOR_VER or greater in your path.]) else MAKENSISU= fi fi elif test -z "$CROSS_COMPILE"; then - AC_MSG_ERROR([To build the installer you must have the latest MozillaBuild or NSIS version $MIN_NSIS_MAJOR_VER.$MIN_NSIS_MINOR_VER$MIN_NSIS_PRERELEASE_TYPE$MIN_NSIS_PRERELEASE_VER or greater in your path.]) + AC_MSG_ERROR([To build the installer you must have the latest MozillaBuild or Unicode NSIS version $MIN_NSIS_MAJOR_VER.$MIN_NSIS_MINOR_VER or greater in your path.]) else MAKENSISU= fi