Bug 1476509 - Implement a new clock skew error page r=flod draft
authortrisha <tgupta@mozilla.com>
Thu, 02 Aug 2018 22:59:04 +0530
changeset 828653 dea410c0ac708718da4ee11553e5115005b8e50e
parent 828327 61e553ff703e2d93db2f03aa901d1976e8084723
push id118694
push userbmo:guptatrisha97@gmail.com
push dateMon, 13 Aug 2018 09:21:40 +0000
reviewersflod
bugs1476509
milestone63.0a1
Bug 1476509 - Implement a new clock skew error page r=flod MozReview-Commit-ID: 5WmgrxUcSZ6
browser/base/content/aboutNetError-new.xhtml
browser/base/content/aboutNetError.js
browser/base/content/aboutNetError.xhtml
browser/base/content/browser.js
browser/base/content/illustrations/blue-berror.svg
browser/base/content/test/static/browser_misused_characters_in_strings.js
browser/base/jar.mn
browser/locales/en-US/chrome/overrides/netError.dtd
browser/modules/NetErrorContent.jsm
browser/themes/shared/aboutNetError-new.css
browser/themes/shared/aboutNetError.css
--- a/browser/base/content/aboutNetError-new.xhtml
+++ b/browser/base/content/aboutNetError-new.xhtml
@@ -61,16 +61,17 @@
         <h1 id="et_nssFailure2">&nssFailure2.title;</h1>
         <h1 id="et_nssBadCert">&certerror.longpagetitle2;</h1>
         <h1 id="et_cspBlocked">&cspBlocked.title;</h1>
         <h1 id="et_remoteXUL">&remoteXUL.title;</h1>
         <h1 id="et_corruptedContentErrorv2">&corruptedContentErrorv2.title;</h1>
         <h1 id="et_sslv3Used">&sslv3Used.title;</h1>
         <h1 id="et_inadequateSecurityError">&inadequateSecurityError.title;</h1>
         <h1 id="et_blockedByPolicy">&blockedByPolicy.title;</h1>
+        <h1 id="et_clockSkewError">&clockSkewError.title;</h1>
       </div>
       <div id="errorDescriptionsContainer">
         <div id="ed_generic">&generic.longDesc;</div>
         <div id="ed_captivePortal">&captivePortal.longDesc2;</div>
         <div id="ed_dnsNotFound">&dnsNotFound.longDesc1;</div>
         <div id="ed_fileNotFound">&fileNotFound.longDesc;</div>
         <div id="ed_fileAccessDenied">&fileAccessDenied.longDesc;</div>
         <div id="ed_malformedURI"></div>
@@ -91,31 +92,32 @@
         <div id="ed_nssFailure2">&nssFailure2.longDesc2;</div>
         <div id="ed_nssBadCert">&certerror.introPara1;</div>
         <div id="ed_cspBlocked">&cspBlocked.longDesc;</div>
         <div id="ed_remoteXUL">&remoteXUL.longDesc;</div>
         <div id="ed_corruptedContentErrorv2">&corruptedContentErrorv2.longDesc;</div>
         <div id="ed_sslv3Used">&sslv3Used.longDesc2;</div>
         <div id="ed_inadequateSecurityError">&inadequateSecurityError.longDesc;</div>
         <div id="ed_blockedByPolicy"></div>
+        <div id="ed_clockSkewError">&clockSkewError.longDesc;</div>
       </div>
       <div id="errorDescriptions2Container">
           <div id="ed2_nssBadCert_SEC_ERROR_EXPIRED_CERTIFICATE">&certerror.expiredCert.secondPara;</div>
       </div>
       <div id="whatCanYouDoAboutItTitleContainer">
         <div id="edd_nssBadCert"><strong>&certerror.whatCanYouDoAboutItTitle;</strong></div>
       </div>
       <div id="whatCanYouDoAboutItContainer">
         <div id="es_nssBadCert_SEC_ERROR_UNKNOWN_ISSUER">&certerror.unknownIssuer.whatCanYouDoAboutIt;</div>
-        <div id="es_nssBadCert_SEC_ERROR_EXPIRED_CERTIFICATE">&certerror.expiredCert.whatCanYouDoAboutIt;</div>
-        <div id="es_nssBadCert_SEC_ERROR_EXPIRED_ISSUER_CERTIFICATE">&certerror.expiredCert.whatCanYouDoAboutIt;</div>
-        <div id="es_nssBadCert_SEC_ERROR_OCSP_FUTURE_RESPONSE">&certerror.expiredCert.whatCanYouDoAboutIt;</div>
-        <div id="es_nssBadCert_SEC_ERROR_OCSP_OLD_RESPONSE">&certerror.expiredCert.whatCanYouDoAboutIt;</div>
-        <div id="es_nssBadCert_MOZILLA_PKIX_ERROR_NOT_YET_VALID_CERTIFICATE">&certerror.expiredCert.whatCanYouDoAboutIt;</div>
-        <div id="es_nssBadCert_MOZILLA_PKIX_ERROR_NOT_YET_VALID_ISSUER_CERTIFICATE">&certerror.expiredCert.whatCanYouDoAboutIt;</div>
+        <div id="es_nssBadCert_SEC_ERROR_EXPIRED_CERTIFICATE">&certerror.expiredCert.whatCanYouDoAboutIt2;</div>
+        <div id="es_nssBadCert_SEC_ERROR_EXPIRED_ISSUER_CERTIFICATE">&certerror.expiredCert.whatCanYouDoAboutIt2;</div>
+        <div id="es_nssBadCert_SEC_ERROR_OCSP_FUTURE_RESPONSE">&certerror.expiredCert.whatCanYouDoAboutIt2;</div>
+        <div id="es_nssBadCert_SEC_ERROR_OCSP_OLD_RESPONSE">&certerror.expiredCert.whatCanYouDoAboutIt2;</div>
+        <div id="es_nssBadCert_MOZILLA_PKIX_ERROR_NOT_YET_VALID_CERTIFICATE">&certerror.expiredCert.whatCanYouDoAboutIt2;</div>
+        <div id="es_nssBadCert_MOZILLA_PKIX_ERROR_NOT_YET_VALID_ISSUER_CERTIFICATE">&certerror.expiredCert.whatCanYouDoAboutIt2;</div>
         <div id="es_nssBadCert_SSL_ERROR_BAD_CERT_DOMAIN">&certerror.badCertDomain.whatCanYouDoAboutIt;</div>
         <div id="es_nssBadCert_SEC_ERROR_OCSP_INVALID_SIGNING_CERT">&certerror.badCertDomain.whatCanYouDoAboutIt;</div>
       </div>
     </div>
 
     <!-- PAGE CONTAINER (for styling purposes only) -->
     <div id="errorPageContainer" class="container">
       <div id="text-container">
@@ -171,29 +173,32 @@
         <div id="prefChangeContainer" class="button-container">
           <p>&prefReset.longDesc;</p>
           <button id="prefResetButton" class="primary" autocomplete="off">&prefReset.label;</button>
         </div>
 
         <div id="certErrorAndCaptivePortalButtonContainer" class="button-container">
           <button id="returnButton" class="primary" autocomplete="off">&returnToPreviousPage1.label;</button>
           <button id="openPortalLoginPageButton" class="primary" autocomplete="off">&openPortalLoginPage.label2;</button>
+          <button id="errorTryAgain" class="primary" autocomplete="off">&retry.label;</button>
           <button id="advancedButton" autocomplete="off">&continue1.label;</button>
+          <button id="moreInformationButton" autocomplete="off">&moreInformation.label;</button>
         </div>
       </div>
 
       <div id="netErrorButtonContainer" class="button-container">
         <button id="errorTryAgain" class="primary" autocomplete="off">&retry.label;</button>
       </div>
 
       <div id="advancedPanelContainer">
         <div id="badCertAdvancedPanel" class="advanced-panel">
           <p id="badCertTechnicalInfo"/>
           <div id="advancedPanelButtonContainer" class="button-container">
             <button id="advancedPanelReturnButton" class="primary" autocomplete="off">&returnToPreviousPage1.label;</button>
+            <button id="advancedPanelErrorTryAgain" class="primary" autocomplete="off">&retry.label;</button>
             <div class="exceptionDialogButtonContainer">
               <button id="exceptionDialogButton">&securityOverride.exceptionButtonLabel;</button>
             </div>
           </div>
         </div>
 
         <div id="certificateErrorReporting">
             <p class="toggle-container-with-text">
--- a/browser/base/content/aboutNetError.js
+++ b/browser/base/content/aboutNetError.js
@@ -77,33 +77,35 @@ function showPrefChangeContainer() {
 function setupAdvancedButton() {
   // Get the hostname and add it to the panel
   var panel = document.getElementById("badCertAdvancedPanel");
   for (var span of panel.querySelectorAll("span.hostname")) {
     span.textContent = document.location.hostname;
   }
 
   // Register click handler for the weakCryptoAdvancedPanel
-  document.getElementById("advancedButton")
-          .addEventListener("click", function togglePanelVisibility() {
+  document.getElementById("advancedButton").addEventListener("click", togglePanelVisibility);
+  document.getElementById("moreInformationButton").addEventListener("click", togglePanelVisibility);
+
+  function togglePanelVisibility() {
     toggleDisplay(panel);
     if (gIsCertError) {
       // Toggling the advanced panel must ensure that the debugging
       // information panel is hidden as well, since it's opened by the
       // error code link in the advanced panel.
       var div = document.getElementById("certificateErrorDebugInformation");
       div.style.display = "none";
     }
 
     if (panel.style.display == "block") {
       // send event to trigger telemetry ping
       var event = new CustomEvent("AboutNetErrorUIExpanded", {bubbles: true});
       document.dispatchEvent(event);
     }
-  });
+  }
 
   if (!gIsCertError) {
     return;
   }
 
   if (getCSSClass() == "expertBadCert") {
     toggleDisplay(document.getElementById("badCertAdvancedPanel"));
     // Toggling the advanced panel must ensure that the debugging
@@ -372,12 +374,17 @@ function addAutofocus(buttonId, position
   }
 }
 
 let errorTryAgain = document.getElementById("errorTryAgain");
 errorTryAgain.addEventListener("click", function() {
   retryThis(this);
 });
 
+let advancedPanelErrorTryAgain = document.getElementById("advancedPanelErrorTryAgain");
+advancedPanelErrorTryAgain.addEventListener("click", function() {
+  retryThis(this);
+});
+
 // Note: It is important to run the script this way, instead of using
 // an onload handler. This is because error pages are loaded as
 // LOAD_BACKGROUND, which means that onload handlers will not be executed.
 initPage();
--- a/browser/base/content/aboutNetError.xhtml
+++ b/browser/base/content/aboutNetError.xhtml
@@ -145,26 +145,30 @@
           <p>&prefReset.longDesc;</p>
           <button id="prefResetButton" class="primary" autocomplete="off">&prefReset.label;</button>
         </div>
 
         <div id="certErrorAndCaptivePortalButtonContainer" class="button-container">
           <button id="returnButton" class="primary" autocomplete="off">&returnToPreviousPage.label;</button>
           <button id="openPortalLoginPageButton" class="primary" autocomplete="off">&openPortalLoginPage.label2;</button>
           <button id="advancedButton" autocomplete="off">&advanced.label;</button>
+          <button id="moreInformationButton" autocomplete="off">&moreInformation.label;</button>
         </div>
       </div>
 
       <div id="netErrorButtonContainer" class="button-container">
         <button id="errorTryAgain" class="primary" autocomplete="off">&retry.label;</button>
       </div>
 
       <div id="advancedPanelContainer">
         <div id="badCertAdvancedPanel" class="advanced-panel">
           <p id="badCertTechnicalInfo"/>
+          <div id="advancedPanelButtonContainer" class="button-container">
+            <button id="advancedPanelErrorTryAgain" class="primary" autocomplete="off">&retry.label;</button>
+          </div>
           <div class="exceptionDialogButtonContainer">
             <button id="exceptionDialogButton">&securityOverride.exceptionButtonLabel;</button>
           </div>
         </div>
 
         <div id="certificateErrorDebugInformation">
           <button id="copyToClipboard">&certerror.copyToClipboard.label;</button>
           <div id="certificateErrorText"/>
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -3004,16 +3004,17 @@ var BrowserOnClick = {
         goBackFromErrorPage();
         break;
 
       case "advancedPanelReturnButton":
         goBackFromErrorPage();
         break;
 
       case "advancedButton":
+      case "moreInformationButton":
         if (isTopFrame) {
           secHistogram.add(Ci.nsISecurityUITelemetry.WARNING_BAD_CERT_TOP_UNDERSTAND_RISKS);
         }
 
         securityInfo = getSecurityInfo(securityInfoAsString);
         sslStatus = securityInfo.SSLStatus;
         let errorInfo = getDetailedCertErrorInfo(location,
                                                  securityInfo);
new file mode 100644
--- /dev/null
+++ b/browser/base/content/illustrations/blue-berror.svg
@@ -0,0 +1,83 @@
+<!-- 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/. -->
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 221.72 184.08">
+  <defs>
+    <linearGradient id="a" x1="41.64" x2="186.34" y1="42.04" y2="186.73" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#ccfbff"/>
+      <stop offset="1" stop-color="#c9e4ff"/>
+    </linearGradient>
+    <linearGradient id="c" x1="70.5" x2="215.2" y1="13.17" y2="157.87" href="#a"/>
+    <linearGradient id="b" x1="58.88" x2="188.27" y1="46.79" y2="176.18" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#00c8d7"/>
+      <stop offset="1" stop-color="#0a84ff"/>
+    </linearGradient>
+    <linearGradient id="d" x1="55.56" x2="184.95" y1="50.11" y2="179.5" href="#b"/>
+    <linearGradient id="e" x1="28.59" x2="173.29" y1="55.09" y2="199.78" href="#a"/>
+    <linearGradient id="f" x1="66.82" x2="196.2" y1="38.86" y2="168.25" href="#b"/>
+    <linearGradient id="g" x1="51.82" x2="196.52" y1="31.85" y2="176.55" href="#a"/>
+    <linearGradient id="h" x1="46.04" x2="182.33" y1="46.64" y2="182.93" href="#b"/>
+    <linearGradient id="i" x1="74.81" x2="204.19" y1="30.87" y2="160.26" href="#b"/>
+    <linearGradient id="j" x1="71.48" x2="200.87" y1="34.19" y2="163.58" href="#b"/>
+    <linearGradient id="k" x1="58.65" x2="158.03" y1="76.32" y2="175.7" href="#a"/>
+    <linearGradient id="l" x1="47.95" x2="177.33" y1="57.73" y2="187.11" href="#b"/>
+    <linearGradient id="m" x1="66.54" x2="165.92" y1="68.43" y2="167.81" href="#a"/>
+    <linearGradient id="n" x1="62.64" x2="162.02" y1="72.32" y2="171.7" href="#a"/>
+    <linearGradient id="o" x1="65.19" x2="209.88" y1="18.49" y2="163.19" href="#a"/>
+    <linearGradient id="p" x1="72.88" x2="217.58" y1="10.8" y2="155.49" href="#a"/>
+    <linearGradient id="q" x1="61.64" x2="206.34" y1="22.03" y2="166.73" href="#a"/>
+    <linearGradient id="r" x1="63.95" x2="198.65" y1="31.06" y2="165.75" href="#b"/>
+    <linearGradient id="s" x1="69.39" x2="204.08" y1="25.62" y2="160.31" href="#b"/>
+    <linearGradient id="t" x1="66.77" x2="201.46" y1="28.24" y2="162.93" href="#b"/>
+    <linearGradient id="u" x1="71.02" x2="205.71" y1="23.99" y2="158.69" href="#b"/>
+    <linearGradient id="v" x1="69.27" x2="203.96" y1="25.74" y2="160.44" href="#b"/>
+    <linearGradient id="w" x1="64.3" x2="198.99" y1="30.71" y2="165.41" href="#b"/>
+    <linearGradient id="x" x1="65.73" x2="200.43" y1="29.27" y2="163.97" href="#b"/>
+  </defs>
+  <path fill="none" d="M180.15 34.4c-0.13 -0.34 -3.24 -8.16 -11.05 -7.09 -2.38 0.32 -4 1.25 -4.84 2.76a5.21 5.21 0 0 0 -0.51 1.36 6.79 6.79 0 0 1 4.85 -2.43c8.3 -1.13 11.59 7.4 11.59 7.4a6.23 6.23 0 0 1 0.72 -1.76 0.52 0.52 0 0 1 -0.25 0.11 0.51 0.51 0 0 1 -0.51 -0.35zm-9.99 93.38h0.14a0.44 0.44 0 0 1 0.13 -0.42 1.89 1.89 0 0 1 1.56 -0.62 1.23 1.23 0 0 1 0.47 0.22 1 1 0 0 0 0.32 -0.71c0 -0.83 -1.18 -1.53 -2.59 -1.54a1.39 1.39 0 0 1 0.09 0.5 1.5 1.5 0 0 1 -1.5 1.5 1.46 1.46 0 0 1 -0.66 -0.16 3.3 3.3 0 0 1 -0.43 0.19 2.93 2.93 0 0 0 2.47 1.04zm-3.48 -0.85h-0.27a3.88 3.88 0 0 1 -1.85 -0.47 17.88 17.88 0 0 1 -2.79 0.91 59.25 59.25 0 0 1 -2.77 7.83c-1.58 3.17 -4 6.33 -7.25 7.5a4.78 4.78 0 0 1 -4.52 -0.93c-0.25 1.62 -0.52 3.2 -0.79 4.72a62 62 0 0 0 3 6.08h13.58a59 59 0 0 0 3.45 -8.46 134.51 134.51 0 0 0 4 -15.34h-0.25a3.59 3.59 0 0 1 -3.54 -1.84zm-41.39 46.13a44.59 44.59 0 0 1 -0.26 -5.28c-4.57 0.43 -9.18 0.54 -12.7 0.54 -5.07 0 -10.14 -0.22 -14.61 -0.64a44.77 44.77 0 0 1 -0.27 5.46c4.48 -0.29 9.4 -0.45 14.57 -0.45 4.67 0 9.15 0.13 13.27 0.37zm30.87 -13.86c1.86 0 3.76 -1.58 5.65 -4.63h-11.24c1.79 2.7 3.72 4.63 5.59 4.63z"/>
+  <path fill="#eeeef2" d="M154 76.58h47.63a1 1 0 0 0 0 -2h-47.7a13.9 13.9 0 0 1 0.07 1.42v0.58z"/>
+  <path fill="#fff" d="M36.45 14.11a19.76 19.76 0 0 0 0.54 6h0.95a25.42 25.42 0 0 1 -1.49 -6z"/>
+  <path fill="#eeeef2" d="M157.67 69a0.5 0.5 0 0 0 0 1h33.63a0.5 0.5 0 0 0 0 -1zm-118.56 -48.13a0.51 0.51 0 0 0 0 -0.48c0 -0.06 -2.29 -5.24 -1.69 -10.21a10.4 10.4 0 0 1 1.17 -3.83c1.57 -2.83 4.6 -4.57 9 -5.17 14.41 -1.96 20.28 12.82 20.34 13a0.51 0.51 0 0 0 0.5 0.32 0.49 0.49 0 0 0 0.45 -0.4c0.12 -0.34 1.79 -8.35 10.12 -6.77s14.81 14.08 14.87 14.2a0.5 0.5 0 0 0 0.45 0.27h22a0.5 0.5 0 0 0 0.5 -0.5 0.5 0.5 0 0 0 -0.5 -0.5h-21.74c-1 -1.93 -7.15 -12.87 -15.44 -14.45 -7.14 -1.35 -9.91 3.75 -10.84 6.25 -1.82 -3.6 -8.21 -14.13 -20.82 -12.41 -4.72 0.64 -8 2.55 -9.73 5.67a13.77 13.77 0 0 0 -1.3 8.25 25.42 25.42 0 0 0 1.49 6h-24.47a0.5 0.5 0 0 0 -0.5 0.5 0.51 0.51 0 0 0 0.5 0.5h25.22a0.5 0.5 0 0 0 0.42 -0.24zm182.11 60.33h-68.31a13.196 13.196 0 0 1 -0.49 1h68.8a0.5 0.5 0 0 0 0.5 -0.5 0.5 0.5 0 0 0 -0.5 -0.5z"/>
+  <path fill="#fff" d="M13 26.2h104a1 1 0 0 0 0 -2h-24.1c-2.09 -3.88 -7.5 -12.62 -14.28 -13.91 -8.89 -1.69 -10.62 7.16 -10.62 7.16s-5.94 -15.35 -20.88 -13.31c-5.5 0.74 -8.33 3.15 -9.67 6 -0.6 5 1.67 10.15 1.69 10.21a0.5 0.5 0 0 1 -0.45 0.71h-1.45a22.73 22.73 0 0 0 1 2.95h-25.24l7.72 0.15h-7.72a1 1 0 1 0 0 2z"/>
+  <path fill="#eeeef2" d="M73.39 59.8a1 1 0 0 0 -1 -1h-39.83a1 1 0 0 0 0 2h39.83a1 1 0 0 0 1 -1zm-20.39 -4.87a0.5 0.5 0 0 0 0.5 -0.5 0.51 0.51 0 0 0 -0.5 -0.5h-11.3a0.5 0.5 0 0 0 -0.5 0.5 0.5 0.5 0 0 0 0.5 0.5zm6.33 56.77h-58.33a1 1 0 0 0 0 2h55.76a6.27 6.27 0 0 1 2.57 -2zm5.61 0h-0.74l0.39 0.16zm66.18 67.3a5.8 5.8 0 0 1 -3.66 -1.3c-1.18 -1 -1.84 -2.11 -2.17 -4.61 -4.12 -0.24 -8.6 -0.37 -13.27 -0.37 -5.17 0 -10.09 0.16 -14.57 0.45 -0.33 2.44 -1 3.58 -2.16 4.53a5.8 5.8 0 0 1 -3.66 1.3c-2.81 0 -5.08 -2 -6.84 -4.5 -6.35 1 -10.26 2.4 -10.26 3.91 0 3.15 16.78 5.7 37.49 5.7s37.49 -2.55 37.49 -5.7c0 -1.6 -4.39 -3 -11.43 -4.09 -1.77 2.56 -4.08 4.68 -6.96 4.68z"/>
+  <path fill="#fff" d="M147.18 141.77a4.78 4.78 0 0 0 4.52 0.93c3.25 -1.17 5.67 -4.33 7.25 -7.5a59.25 59.25 0 0 0 2.82 -7.81l-1.08 0.23a9 9 0 0 1 -2.51 0.55c-1.41 4.26 -4.32 11 -8.41 11a3.93 3.93 0 0 1 -1.9 -0.5l-0.23 0.11c-0.15 1.03 -0.3 2.02 -0.46 2.99z"/>
+  <path fill="#eeeef2" d="M29.08 107.44a0.5 0.5 0 0 0 0.5 0.5h38.49a0.5 0.5 0 0 0 0.5 -0.5 0.5 0.5 0 0 0 -0.5 -0.5h-38.49a0.5 0.5 0 0 0 -0.5 0.5z"/>
+  <path fill="#fff" d="M154 76.58v-0.56a13.9 13.9 0 0 0 -0.08 -1.44 12.73 12.73 0 0 0 -12.67 -11.31 12.58 12.58 0 0 0 -5.4 1.2l-1 2a16.24 16.24 0 0 1 1.27 1.1 9.76 9.76 0 0 1 11.75 15.36l-1.47 1.47c0.45 4 0.72 8.27 0.82 12.83a17.86 17.86 0 0 1 3.21 -1.66q-0.16 -5.3 -0.65 -10.07l0.46 -0.45a13.32 13.32 0 0 0 2.14 -2.84 13.196 13.196 0 0 0 0.49 -1 12.75 12.75 0 0 0 1.13 -4.63zm-80.63 44.29c-0.82 -1.14 -1.69 -2.27 -2.49 -3.19 0.84 1.19 1.75 2.57 2.56 3.7zm-11.13 -4.46a1.34 1.34 0 0 0 -0.72 -0.21h-0.1a4.16 4.16 0 0 1 0.91 0.26z"/>
+  <path fill="#fff" d="M141.43 154.62a62.66 62.66 0 0 1 -2.28 9.84c-1.22 3.46 -4.45 11.51 -8.28 11.51a2.8 2.8 0 0 1 -1.76 -0.62c-0.84 -0.68 -1.45 -1.18 -1.3 -10.93a122.38 122.38 0 0 1 -15.73 0.9 149.39 149.39 0 0 1 -17.65 -1c0.16 9.83 -0.48 10.35 -1.29 11a2.75 2.75 0 0 1 -1.76 0.63c-3.83 0 -7.06 -8.05 -8.28 -11.51a48.37 48.37 0 0 1 -1.54 -5.85c-1.94 -3.93 -3.47 -11.43 -4.55 -22.3a4.56 4.56 0 0 1 -3.01 -2.6c-1.14 -1.61 -3.87 -6.58 -5.28 -9.2l-1.94 0.49a7.76 7.76 0 0 1 -1.82 0.23 5.79 5.79 0 0 1 -4.12 -1.62l-2.56 -0.65a3.3 3.3 0 0 1 0.14 -6.42 3 3 0 0 1 0.41 -0.85 3.27 3.27 0 0 1 2.74 -1.47 3.33 3.33 0 0 1 1.83 0.55l0.94 0.63c2.54 -1.67 3.7 -1.67 4.11 -1.67a3.81 3.81 0 0 1 2.75 1.36l-0.34 -2.38a4.53 4.53 0 0 1 0 -1 4.62 4.62 0 0 1 0.1 -1.24 4.56 4.56 0 0 1 4.47 -3.54h0.17a202.19 202.19 0 0 1 0.74 -21.55l-2.9 -2.89a9.76 9.76 0 0 1 13.8 -13.8l1.75 1.75c2.26 -0.65 5 -1.44 7.74 -2.17a7.74 7.74 0 0 1 0.12 -1.07 7.1 7.1 0 0 1 0.79 -2.18c-2.43 0.64 -5.08 1.38 -7.6 2.1l-0.5 -0.5a12.76 12.76 0 0 0 -18 18l1.89 1.89c-0.41 4.63 -0.63 10.9 -0.63 18a7.55 7.55 0 0 0 -4.54 5.32 7.65 7.65 0 0 0 -0.15 0.94 8.93 8.93 0 0 0 -3.13 1l-0.35 0.16 -0.39 -0.16a6.15 6.15 0 0 0 -2.43 -0.5 6.32 6.32 0 0 0 -5 2.5c-0.07 0.1 -0.16 0.2 -0.23 0.31a0.57 0.57 0 0 0 -0.08 0.13 6.28 6.28 0 0 0 -3.25 4c-0.42 1.63 -0.53 4.06 0.33 5.51s2.38 4.08 4 4.5c1.55 1.21 5.5 1.25 7.63 0 0.63 -0.37 1.48 -0.08 2.23 -0.25 1.58 2.89 3.18 5.72 4.18 7.2a7.54 7.54 0 0 0 2.89 3.18c1.08 10 2.58 17.13 4.49 21.23a46 46 0 0 0 1.57 5.88 38.53 38.53 0 0 0 4.27 9c1.76 2.51 4 4.5 6.84 4.5a5.8 5.8 0 0 0 3.66 -1.3c1.17 -0.95 1.83 -2.09 2.16 -4.53a44.77 44.77 0 0 0 0.27 -5.46c4.47 0.42 9.54 0.64 14.61 0.64 3.52 0 8.13 -0.11 12.7 -0.54a44.59 44.59 0 0 0 0.26 5.28c0.33 2.5 1 3.65 2.17 4.61a5.8 5.8 0 0 0 3.66 1.3c2.88 0 5.19 -2.09 7 -4.68a38.86 38.86 0 0 0 4.15 -8.84 64.69 64.69 0 0 0 2.39 -10.24c0.48 -2 1 -4.4 1.45 -7 -1 -2.17 -1.76 -4.21 -2.3 -5.72 -0.86 4.65 -1.64 8.84 -2.43 12.16z"/>
+  <path fill="#fff" d="M58.93 118.47a1.27 1.27 0 0 0 -1.06 0.8 1.88 1.88 0 0 1 0.41 -0.32 3.43 3.43 0 0 0 0.65 -0.48zm85.46 -34.86l0.31 -0.31 -0.32 0.27zm-52.14 88.84a84.62 84.62 0 0 0 0.16 -9.43h-0.09c0.09 3.65 0.1 7.24 -0.07 9.43zm37.62 -9.51c0 2.2 -0.06 4.33 0 6.12 -0.08 -1.83 -0.05 -3.96 0 -6.12zm17.77 -24.13l0.23 -0.11a7.76 7.76 0 0 1 -3 -3.63 268.89 268.89 0 0 1 -0.79 5.4 76.1 76.1 0 0 0 2.29 6c0.27 -1.52 0.54 -3.1 0.79 -4.72 0.18 -0.95 0.33 -1.94 0.48 -2.94zm-4.52 -4.87c0.07 -0.69 0.15 -1.36 0.22 -2q-0.14 1.08 -0.27 2.13zm15.15 -6.03l-0.09 0.26a9 9 0 0 0 2.51 -0.55 20.79 20.79 0 0 1 -2.42 0.29zm4.39 -93.4a10.76 10.76 0 0 0 0.2 2.88h0.51a14.66 14.66 0 0 1 -0.71 -2.88z"/>
+  <path fill="#eeeef2" d="M164.52 38.16a0.51 0.51 0 0 0 0 -0.48 11.53 11.53 0 0 1 -0.81 -6.25 5.21 5.21 0 0 1 0.51 -1.36c0.84 -1.51 2.46 -2.44 4.84 -2.76 7.81 -1.07 10.92 6.75 11.05 7.09a0.51 0.51 0 0 0 0.51 0.32 0.52 0.52 0 0 0 0.25 -0.11 0.5 0.5 0 0 0 0.2 -0.29 4.39 4.39 0 0 1 5.33 -3.56c4.58 0.87 8.09 7.15 8.13 7.21a0.48 0.48 0 0 0 0.43 0.26h12.21a0.5 0.5 0 0 0 0.5 -0.5 0.5 0.5 0 0 0 -0.5 -0.5h-11.87c-0.74 -1.26 -4.12 -6.59 -8.66 -7.46a5.18 5.18 0 0 0 -6.1 3.17c-1.27 -2.35 -4.87 -7.5 -11.58 -6.59 -2.7 0.36 -4.58 1.46 -5.58 3.26a8.09 8.09 0 0 0 -0.72 4.93 14.66 14.66 0 0 0 0.71 2.88h-13.29a0.5 0.5 0 0 0 -0.5 0.5 0.5 0.5 0 0 0 0.5 0.5h14a0.5 0.5 0 0 0 0.44 -0.26z"/>
+  <path fill="#fff" d="M149.9 42.22h57.8a1 1 0 0 0 0 -2h-13.59c-1.13 -2.1 -4.16 -7.1 -8 -7.83a4.55 4.55 0 0 0 -5 1.9 0.5 0.5 0 0 1 -0.2 0.29 6.23 6.23 0 0 0 -0.72 1.76s-3.29 -8.5 -11.59 -7.34a6.79 6.79 0 0 0 -4.85 2.46 11.53 11.53 0 0 0 0.81 6.25 0.51 0.51 0 0 1 0 0.48 0.5 0.5 0 0 1 -0.42 0.23h-1a14 14 0 0 0 0.57 1.65h-14l9 0.18h-8.81a1 1 0 0 0 0 2zm-53.24 26.05c1.09 -0.3 2.16 -0.58 3.17 -0.84 0.65 -2.25 3.25 -3.8 7 -4.48l-0.79 -13.75a2.1 2.1 0 0 1 0 -0.66v-0.28a0.76 0.76 0 0 1 0.06 -0.16v-0.06c1 -3.36 9 -3.66 16.64 -2.19a38.87 38.87 0 0 1 10.41 3.42c3.88 2 4.43 3.89 4.2 5.06a2.48 2.48 0 0 1 -0.45 1l-5.88 12.17c0.22 0.13 0.46 0.27 0.67 0.41a15.76 15.76 0 0 1 2 1.55l0.34 -0.35a9.92 9.92 0 0 1 2 -1.56 16.24 16.24 0 0 0 -1.27 -1.1l1 -2 3.71 -7.67a5.25 5.25 0 0 0 0.76 -1.88 2.56 2.56 0 0 0 0.06 -0.57c0.62 -7.59 -14.08 -10.83 -17.05 -11.41a41.83 41.83 0 0 0 -11.81 -0.75c-6.2 0.64 -8 3.37 -8.42 5.54a5.49 5.49 0 0 0 0 2l0.64 10.93c-3.42 1.07 -5.2 2.77 -6.11 4.33a7.1 7.1 0 0 0 -0.86 2.23 7.74 7.74 0 0 0 -0.02 1.07z"/>
+  <path fill="#eeeef2" d="M72.38 152.57h-66.88a1 1 0 0 0 0 2h66.88a1 1 0 0 0 0 -2zm78.19 2h11.24a32.566 32.566 0 0 0 1.12 -2h-13.58c0.4 0.7 0.81 1.37 1.22 2zm65.18 0a1 1 0 0 0 0 -2h-51.75a33.88 33.88 0 0 1 -1.1 2zm-67.95 -1a1 1 0 0 0 1 1h0.58a40.557 40.557 0 0 1 -1.09 -1.84 1 1 0 0 0 -0.49 0.84z"/>
+  <path fill="url(#a)" d="M87.76 79.65a45.87 45.87 0 0 1 14.58 -6.38 7.65 7.65 0 0 1 -2.56 -3.76c-3.25 0.84 -7 1.9 -9.88 2.73a0.47 0.47 0 0 1 -0.25 0.18c-5.3 1.52 -6.41 5.17 -6.45 5.32a0.51 0.51 0 0 1 -0.48 0.36h-0.14a0.5 0.5 0 0 1 -0.34 -0.62c0 -0.16 1 -3.51 5.47 -5.41l-2 -2a7.75 7.75 0 0 0 -11 11l3.57 3.58a202.84 202.84 0 0 0 -0.82 23.9 2.91 2.91 0 0 0 2.65 1.38 5.08 5.08 0 0 0 2.89 -1.65c-0.43 -13.72 0.78 -25.99 4.76 -28.63z"/>
+  <path fill="url(#c)" d="M138.33 82.24a76.63 76.63 0 0 1 2.48 19.86 2.32 2.32 0 0 0 0.46 -0.54 3 3 0 0 0 0.25 -0.78 2.33 2.33 0 0 0 0 -0.83 1 1 0 0 1 0.72 -1.19 1.15 1.15 0 0 1 0.26 0 1 1 0 0 1 1 0.72 3.52 3.52 0 0 1 0.1 0.86c0.39 -0.4 0.79 -0.8 1.22 -1.19l0.52 -0.43a145.32 145.32 0 0 0 -0.95 -15l0.32 -0.27 1.79 -1.8a7.75 7.75 0 1 0 -11 -11l-0.4 0.4a6.7 6.7 0 0 1 0.77 1.25 12.86 12.86 0 0 1 6 5.68 0.51 0.51 0 0 1 -0.2 0.68 0.53 0.53 0 0 1 -0.24 0.06 0.49 0.49 0 0 1 -0.44 -0.26 12.09 12.09 0 0 0 -4.72 -4.84 4.08 4.08 0 0 1 0 1.35 4.61 4.61 0 0 1 -1.91 2.79c2.12 1.37 3.52 2.97 3.97 4.48z"/>
+  <path fill="#f2f8ff" d="M101.53 100.7a7.5 7.5 0 1 0 -7.53 -7.5 7.51 7.51 0 0 0 7.53 7.5zm-1.16 -9.81l1.63 -2.66a1.38 1.38 0 0 1 1.93 -0.44 1.4 1.4 0 0 1 0.44 1.93l-1.66 2.66a1.4 1.4 0 0 1 -2.38 -1.49zm-3.05 4.43a1 1 0 0 1 1.38 0.29 3.65 3.65 0 0 0 5.88 0 1 1 0 0 1 1.68 1.09 5.64 5.64 0 0 1 -9.23 0 1 1 0 0 1 0.29 -1.38z"/>
+  <path fill="#f2f8ff" d="M85.07 115.26c1.79 1.61 0.31 3.63 -1.31 6.21 1.29 14 3.84 26.85 6.42 30 9.77 12 39.38 11 45.06 -2.26 0.58 -1.38 4.27 -18.23 5.31 -36.28l-0.09 -0.08c-1.58 -1.77 -1.57 -4.61 -0.28 -7.58 -2.81 1.59 -7.3 2.4 -13.43 2.4h-1.7a2.34 2.34 0 0 1 -0.25 0.3c-7.4 7.17 -13.45 10.81 -18 10.81a7.05 7.05 0 0 1 -2.48 -0.43 4.84 4.84 0 0 1 -1.45 -0.81 4.31 4.31 0 0 1 -1.28 -1.47 1 1 0 0 1 1.76 -0.94 3.35 3.35 0 0 0 0.75 0.84 3.93 3.93 0 0 0 0.9 0.5 2.91 2.91 0 0 0 0.89 0.14 4.2 4.2 0 0 0 1.81 -0.47c1.9 -0.92 2.72 -2.9 3.67 -5.18a20.6 20.6 0 0 1 2.87 -5.27c2.18 -2.64 4.35 -4 6.44 -4a4.42 4.42 0 0 1 2.26 0.6c0.71 -1.32 2.28 -2.36 5.08 -2.36a13.29 13.29 0 0 1 1.93 0.14 16.6 16.6 0 0 1 4.69 1.59 10 10 0 0 0 3.88 1.22 3.84 3.84 0 0 0 1.07 -0.15 3.35 3.35 0 0 0 1.22 -0.65 76.63 76.63 0 0 0 -2.48 -19.86c-0.45 -1.51 -1.85 -3.11 -4 -4.59a12 12 0 0 1 -4.9 1.94 27.09 27.09 0 0 1 -5.19 0.46 41 41 0 0 1 -7.82 -0.79c-6.19 -1.2 -11.22 -3.43 -14.12 -6a45.87 45.87 0 0 0 -14.58 6.38c-4 2.64 -5.19 14.91 -4.81 28.63 3.37 -3.25 6.65 -10.76 8.09 -14.69a1.87 1.87 0 1 1 2.38 -2.87 8.53 8.53 0 1 1 -0.35 3 1.83 1.83 0 0 1 -0.9 0.24h-0.2c-1.07 2.83 -4.79 12.13 -9 15.65 0 1.08 0.09 2.16 0.14 3.25a10.17 10.17 0 0 0 2 2.43zm21.37 8.09a2.5 2.5 0 0 1 1.4 -1.8 4.18 4.18 0 0 1 3.5 -0.2 6.75 6.75 0 0 1 2.89 2.6 1.75 1.75 0 0 1 0.45 -0.55c1.18 -0.88 4.2 -1 5.1 -1a1 1 0 0 1 0.5 0.13l0.08 0.06a6.78 6.78 0 0 1 3.38 -2.33 4.31 4.31 0 0 1 3.45 0.65 2.63 2.63 0 0 1 1.28 2 5.41 5.41 0 0 1 -1.49 3.61c0.9 1.15 2.35 3.32 2 5.07a2.48 2.48 0 0 1 -1.4 1.8h-0.07c0.08 1.66 -0.15 3.57 -1.47 4.16 -2.5 1.11 -4.44 -2.77 -4.44 -2.77a13.26 13.26 0 0 1 -2.21 1.1c-1.39 0.56 -3.88 -0.55 -3.88 -0.55s-1.94 3.05 -4.71 2.77c-1.56 -0.15 -2 -2.13 -2 -3.84a7.105 7.105 0 0 1 -0.53 -0.3 2.67 2.67 0 0 1 -1.28 -2 5.44 5.44 0 0 1 1.5 -3.62c-0.93 -1.06 -2.39 -3.24 -2.05 -4.99zm26 -32.21l1.67 -2.66a1.38 1.38 0 0 1 1.93 -0.44 1.4 1.4 0 0 1 0.44 1.93l-1.66 2.66a1.4 1.4 0 0 1 -2.38 -1.49zm-3.05 4.43a1 1 0 0 1 1.38 0.29 3.72 3.72 0 0 0 2.94 1.49 3.66 3.66 0 0 0 2.94 -1.5 1 1 0 0 1 1.68 1.1 5.64 5.64 0 0 1 -9.23 0 1 1 0 0 1 0.32 -1.38zm-14.24 -0.83c3 -3.23 10 -4.76 12.31 -4.28a1.74 1.74 0 0 1 1.43 1.08 2.86 2.86 0 0 1 -0.33 2.43c-1.17 2.11 -4.76 4.78 -6.11 5.06a1.24 1.24 0 0 1 -0.31 0c-1.51 0 -6.38 -1 -7.2 -2.5a1.52 1.52 0 0 1 0.24 -1.79z"/>
+  <path fill="url(#b)" d="M100.82 92.82a1.41 1.41 0 0 0 1.93 -0.44l1.66 -2.66a1.4 1.4 0 0 0 -0.44 -1.93 1.38 1.38 0 0 0 -1.93 0.44l-1.67 2.66a1.4 1.4 0 0 0 0.45 1.93z"/>
+  <path fill="url(#d)" d="M101.64 99.1a5.71 5.71 0 0 0 4.62 -2.4 1 1 0 0 0 -1.68 -1.09 3.65 3.65 0 0 1 -5.88 0 1 1 0 1 0 -1.7 1.09 5.68 5.68 0 0 0 4.64 2.4z"/>
+  <path fill="url(#e)" d="M143.28 119a6.57 6.57 0 0 1 1.45 -4v-0.43a5.54 5.54 0 0 1 -4.2 -1.57c-1 18 -4.73 34.9 -5.31 36.28 -5.68 13.26 -35.29 14.24 -45.06 2.26 -2.58 -3.17 -5.13 -16 -6.42 -30 1.62 -2.58 3.1 -4.6 1.31 -6.21a10.17 10.17 0 0 1 -1.94 -2.43c0 -1.09 -0.1 -2.17 -0.14 -3.25a5.29 5.29 0 0 1 -2.67 1.34 3.11 3.11 0 0 1 -0.43 0 4 4 0 0 1 -3.12 -1.77l-0.75 -0.22a3 3 0 0 0 -0.59 -0.06 2.59 2.59 0 0 0 -2.52 2 2.53 2.53 0 0 0 0 0.82 2.5 2.5 0 0 0 0 0.67l1.26 9.57a57.556 57.556 0 0 0 -0.78 -1.1l0.07 0.51c-0.81 -1.13 -1.72 -2.51 -2.56 -3.7 -1 -1.16 -1.92 -2 -2.48 -2 -0.93 0 -2.59 1 -4.08 2.09l-2 -1.33a4.16 4.16 0 0 0 -0.91 -0.26 1.27 1.27 0 0 0 -1 0.56 1.29 1.29 0 0 0 0.35 1.79l0.74 0.49 -2.18 -0.55a1.17 1.17 0 0 0 -0.32 0h-0.11a3.43 3.43 0 0 1 -0.65 0.48 1.88 1.88 0 0 0 -0.41 0.32 0.8 0.8 0 0 0 -0.08 0.16 1.29 1.29 0 0 0 0.93 1.57l3.13 0.8a3.85 3.85 0 0 0 3.06 1.41 5.53 5.53 0 0 0 1.34 -0.17l3.45 -0.87s4.91 9.19 6 10.54a2.6 2.6 0 0 0 2.44 1.74 2.36 2.36 0 0 0 0.37 0l0.31 -0.08v0.34c1.54 -2.55 0 -13 -0.69 -16.85a0.5 0.5 0 0 1 0.85 -0.44l1.78 1.78a0.5 0.5 0 0 1 0 0.71 0.51 0.51 0 0 1 -0.71 0l-0.66 -0.66c0.67 4 2.06 13.82 0.1 16.29a1.79 1.79 0 0 1 -0.45 0.43c1 9.77 2.44 18 4.48 22a46 46 0 0 0 1.52 5.8c2.29 6.53 4.93 10.17 6.39 10.17a0.75 0.75 0 0 0 0.5 -0.18 2.63 2.63 0 0 0 0.37 -1.34c0.17 -2.19 0.16 -5.78 0.07 -9.46a18.09 18.09 0 0 1 -4.91 -2.74 0.5 0.5 0 0 1 -0.08 -0.7 0.51 0.51 0 0 1 0.71 -0.08 16.67 16.67 0 0 0 4.82 2.64 141.89 141.89 0 0 0 19.22 1.21 117.14 117.14 0 0 0 16 -1c2.25 -0.5 6.8 -2 6.85 -2.06a0.5 0.5 0 0 1 0.63 0.32 0.5 0.5 0 0 1 -0.31 0.63c-0.15 0 -3.08 1 -5.42 1.7 -0.05 2.16 -0.08 4.29 -0.06 6.12 0.05 2.59 0.21 4.45 0.56 4.73a0.75 0.75 0 0 0 0.5 0.18c1.46 0 4.1 -3.64 6.39 -10.17a62.11 62.11 0 0 0 2.21 -9.58c1.06 -4.47 2.4 -11.63 3.53 -20.14s0 0 0.06 -0.05q0.13 -1 0.27 -2.13a359.26 359.26 0 0 0 0.88 -9.7 6.32 6.32 0 0 1 -0.9 -3.17z"/>
+  <path fill="url(#f)" d="M122.17 99.06a1.24 1.24 0 0 0 0.31 0c1.35 -0.28 4.94 -3 6.11 -5.06a2.86 2.86 0 0 0 0.33 -2.43 1.74 1.74 0 0 0 -1.43 -1.08c-2.32 -0.48 -9.28 1.05 -12.31 4.28a1.52 1.52 0 0 0 -0.21 1.82c0.82 1.41 5.69 2.47 7.2 2.47z"/>
+  <path fill="url(#g)" d="M144.71 128.26a0.1 0.1 0 0 1 0.07 -0.06s0.06 0 0 0c1.56 6.7 3.31 9 5 9 2.71 0 5.22 -6 6.36 -9.28a19.57 19.57 0 0 1 -4.07 -0.59 3.12 3.12 0 0 1 -1.31 1.3 1.5 1.5 0 0 1 -0.55 0.11 1.31 1.31 0 0 1 -0.61 -0.15c-0.3 -0.15 -0.94 -0.47 -1.13 -2.61a11.46 11.46 0 0 1 -3.33 -2.54c-0.14 1.56 -0.28 3.15 -0.43 4.82z"/>
+  <path fill="url(#h)" d="M146.44 84.39l1.47 -1.47a9.76 9.76 0 0 0 -11.75 -15.36 9.92 9.92 0 0 0 -2 1.56l-0.34 0.35a15.76 15.76 0 0 0 -2 -1.55c-0.21 -0.14 -0.45 -0.28 -0.67 -0.41l5.88 -12.17a2.48 2.48 0 0 0 0.45 -1c0.23 -1.17 -0.32 -3 -4.2 -5.06a38.87 38.87 0 0 0 -10.41 -3.42c-7.61 -1.47 -15.64 -1.17 -16.64 2.19v0.06a0.76 0.76 0 0 0 -0.06 0.16v0.28a2.1 2.1 0 0 0 0 0.66l0.71 13.79c-3.8 0.68 -6.4 2.23 -7 4.48 -1 0.26 -2.08 0.54 -3.17 0.84 -2.69 0.73 -5.48 1.52 -7.74 2.17l-1.75 -1.75a9.76 9.76 0 0 0 -13.8 13.8l2.9 2.89a202.19 202.19 0 0 0 -0.74 21.55h-0.17a4.56 4.56 0 0 0 -4.47 3.54 4.62 4.62 0 0 0 -0.1 1.24 4.53 4.53 0 0 0 0 1l0.34 2.38a3.81 3.81 0 0 0 -2.75 -1.36c-0.41 0 -1.57 0 -4.11 1.67l-0.94 -0.63a3.33 3.33 0 0 0 -1.83 -0.55 3.27 3.27 0 0 0 -2.74 1.47 3 3 0 0 0 -0.41 0.85 3.3 3.3 0 0 0 -0.14 6.42l2.56 0.65a5.79 5.79 0 0 0 4.12 1.62 7.76 7.76 0 0 0 1.82 -0.23l1.94 -0.49c1.41 2.62 4.14 7.59 5.28 9.2a4.56 4.56 0 0 0 3.02 2.55c1.08 10.87 2.61 18.37 4.55 22.3a48.37 48.37 0 0 0 1.54 5.85c1.22 3.46 4.45 11.51 8.28 11.51a2.75 2.75 0 0 0 1.76 -0.63c0.81 -0.65 1.45 -1.17 1.29 -11a149.39 149.39 0 0 0 17.65 1 122.38 122.38 0 0 0 15.73 -0.9c-0.15 9.75 0.46 10.25 1.3 10.93a2.8 2.8 0 0 0 1.76 0.62c3.83 0 7.06 -8.05 8.28 -11.51a62.66 62.66 0 0 0 2.28 -9.84c0.79 -3.32 1.6 -7.51 2.34 -12.08 0.54 1.51 1.33 3.55 2.3 5.72 0.66 1.48 1.41 3 2.22 4.47 0.35 0.63 0.72 1.25 1.09 1.84 2 3.18 4.36 5.63 6.78 5.63s4.81 -2.29 6.78 -5.63a33.88 33.88 0 0 0 1.1 -2c4.15 -8.25 6.75 -20.56 7.27 -23.19a2.75 2.75 0 0 0 0.59 -0.07 1.45 1.45 0 0 0 1 -0.64 1.14 1.14 0 0 0 0 -0.84 2.1 2.1 0 0 0 0.8 -1.59c0 -1.42 -1.59 -2.54 -3.62 -2.54h-0.42a2.4 2.4 0 0 0 -0.31 -0.91 6.5 6.5 0 0 0 1.35 -3.87c0 -5 -6.15 -9 -13.75 -9a21.93 21.93 0 0 0 -2.45 0.15c5.09 -4.56 7 -10.71 4.3 -13.74 -1.74 -1.95 -5 -2.12 -8.42 -0.79a17.86 17.86 0 0 0 -3.21 1.66c0 -4.56 -0.27 -8.85 -0.72 -12.83zm-16.95 -18.24a28.52 28.52 0 0 1 -11.17 -0.86 52.63 52.63 0 0 1 -9.52 -3.84l-0.54 -9.39c2.7 2 7.5 3.73 12.41 4.68a44 44 0 0 0 8.2 0.85 26 26 0 0 0 2.73 -0.13 14.94 14.94 0 0 0 2.29 -0.4zm-0.2 1l-2 4.57a22.43 22.43 0 0 1 -10.15 -0.25 23.77 23.77 0 0 1 -8.5 -4v-5a53.39 53.39 0 0 0 9.34 3.72 29.54 29.54 0 0 0 11.31 1zm-14.63 -20.15a41.36 41.36 0 0 1 7.74 0.81 36.94 36.94 0 0 1 9.85 3.19c2.69 1.42 3.25 2.52 3.18 2.91s-1 1.21 -4 1.52a36.81 36.81 0 0 1 -10.34 -0.69c-8.86 -1.72 -13.25 -5 -13 -6.14 0.09 -0.74 2.44 -1.6 6.57 -1.6zm-13 21.15c0.27 -1.41 2.23 -2.58 5.31 -3.17l0.17 2.84a1.26 1.26 0 0 0 0.12 0.48c0.56 1.08 5 4.13 10.37 5.12a30.8 30.8 0 0 0 5.62 0.58c3.47 0 4.8 -0.87 5 -1a0.93 0.93 0 0 0 0.31 -0.37l1.6 -3.31 0.47 0.28c2.6 1.69 3.94 3.47 3.67 4.89s-2.18 2.56 -5.23 3.15a33.5 33.5 0 0 1 -12.25 -0.33c-9.59 -1.87 -15.68 -6.31 -15.13 -9.16zm41.65 63.75c-0.07 0.68 -0.15 1.35 -0.22 2l-0.05 0.09s0 0.05 -0.06 0.05c-1.13 8.51 -2.47 15.67 -3.53 20.14a62.11 62.11 0 0 1 -2.21 9.58c-2.24 6.57 -4.91 10.24 -6.37 10.24a0.75 0.75 0 0 1 -0.5 -0.18c-0.35 -0.28 -0.51 -2.14 -0.56 -4.73v-6.12c2.34 -0.65 5.27 -1.65 5.42 -1.7a0.5 0.5 0 0 0 0.31 -0.63 0.5 0.5 0 0 0 -0.63 -0.32c-0.05 0 -4.6 1.56 -6.85 2.06a117.14 117.14 0 0 1 -16 1 141.89 141.89 0 0 1 -19.22 -1.21 16.67 16.67 0 0 1 -4.84 -2.7 0.51 0.51 0 0 0 -0.71 0.08 0.5 0.5 0 0 0 0.08 0.7 18.09 18.09 0 0 0 4.95 2.75h0.09a84.62 84.62 0 0 1 -0.16 9.43 2.63 2.63 0 0 1 -0.37 1.34 0.75 0.75 0 0 1 -0.5 0.18c-1.46 0 -4.1 -3.64 -6.39 -10.17a46 46 0 0 1 -1.52 -5.78c-2 -3.93 -3.51 -12.2 -4.48 -22a1.79 1.79 0 0 0 0.54 -0.46c2 -2.47 0.57 -12.3 -0.1 -16.29l0.66 0.66a0.51 0.51 0 0 0 0.71 0 0.5 0.5 0 0 0 0 -0.71l-1.8 -1.8a0.5 0.5 0 0 0 -0.85 0.44c0.73 3.9 2.23 14.3 0.69 16.85v-0.34l-0.31 0.08a2.36 2.36 0 0 1 -0.37 0 2.6 2.6 0 0 1 -2.44 -1.74c-1.1 -1.35 -6 -10.54 -6 -10.54l-3.45 0.87a5.53 5.53 0 0 1 -1.34 0.17 3.85 3.85 0 0 1 -3.06 -1.41l-3.13 -0.8a1.29 1.29 0 0 1 -0.93 -1.57 0.8 0.8 0 0 1 0.08 -0.16 1.27 1.27 0 0 1 1.06 -0.8h0.05a1.17 1.17 0 0 1 0.32 0l2.18 0.55 -0.74 -0.49a1.29 1.29 0 0 1 -0.35 -1.79 1.27 1.27 0 0 1 1 -0.56h0.1a1.34 1.34 0 0 1 0.72 0.21l0.09 0.06 2 1.33c1.49 -1.1 3.15 -2.09 4.08 -2.09 0.56 0 1.47 0.81 2.48 2 0.8 0.92 1.67 2 2.49 3.19 0.27 0.37 0.53 0.74 0.78 1.1l-1.36 -9.56a2.5 2.5 0 0 1 0 -0.67 2.53 2.53 0 0 1 0 -0.82 2.59 2.59 0 0 1 2.52 -2 3 3 0 0 1 0.69 0.09l0.82 0.19a4 4 0 0 0 3.07 1.81 3.11 3.11 0 0 0 0.43 0 5.29 5.29 0 0 0 2.68 -1.42c4.18 -3.52 7.9 -12.82 9 -15.65h0.2a1.83 1.83 0 0 0 0.9 -0.24 8.46 8.46 0 1 0 0.35 -3 1.87 1.87 0 1 0 -2.45 2.87c-1.44 3.93 -4.72 11.44 -8 14.72a5.08 5.08 0 0 1 -2.76 1.65 2.91 2.91 0 0 1 -2.65 -1.38 202.84 202.84 0 0 1 0.82 -23.9l-3.57 -3.58a7.75 7.75 0 1 1 11 -11l2 2c-4.43 1.9 -5.43 5.25 -5.47 5.41a0.5 0.5 0 0 0 0.34 0.62h0.14a0.51 0.51 0 0 0 0.48 -0.36c0 -0.15 1.15 -3.8 6.45 -5.32a0.47 0.47 0 0 0 0.25 -0.18c2.9 -0.83 6.63 -1.89 9.88 -2.73a7.65 7.65 0 0 0 2.56 3.76c2.9 2.56 7.93 4.79 14.12 6a41 41 0 0 0 7.82 0.79 27.09 27.09 0 0 0 5.19 -0.46 12 12 0 0 0 4.9 -1.94 4.61 4.61 0 0 0 1.91 -2.79 4.08 4.08 0 0 0 0 -1.35 12.09 12.09 0 0 1 4.59 4.83 0.49 0.49 0 0 0 0.44 0.26 0.53 0.53 0 0 0 0.24 -0.06 0.51 0.51 0 0 0 0.2 -0.68 12.86 12.86 0 0 0 -6 -5.68 6.7 6.7 0 0 0 -0.77 -1.25l0.4 -0.4a7.75 7.75 0 0 1 11 11l-1.79 1.8 -0.31 0.31a145.32 145.32 0 0 1 0.95 15l-0.52 0.43a27.596 27.596 0 0 0 -1.22 1.19 3.52 3.52 0 0 0 -0.1 -0.86 1 1 0 0 0 -1 -0.72 1.15 1.15 0 0 0 -0.26 0 1 1 0 0 0 -0.72 1.19 2.33 2.33 0 0 1 0 0.83 3 3 0 0 1 -0.25 0.78 2.32 2.32 0 0 1 -0.46 0.54 3.35 3.35 0 0 1 -1.22 0.65 3.84 3.84 0 0 1 -1.07 0.15 10 10 0 0 1 -3.88 -1.22 16.6 16.6 0 0 0 -4.69 -1.59 13.29 13.29 0 0 0 -1.97 -0.02c-2.8 0 -4.37 1 -5.08 2.36a4.42 4.42 0 0 0 -2.26 -0.6c-2.09 0 -4.26 1.34 -6.44 4a20.6 20.6 0 0 0 -2.87 5.27c-1 2.28 -1.77 4.26 -3.67 5.18a4.2 4.2 0 0 1 -1.81 0.47 2.91 2.91 0 0 1 -0.89 -0.14 3.93 3.93 0 0 1 -0.9 -0.5 3.35 3.35 0 0 1 -0.75 -0.84 1 1 0 0 0 -1.76 0.94 4.31 4.31 0 0 0 1.28 1.47 4.84 4.84 0 0 0 1.45 0.81 7.05 7.05 0 0 0 2.48 0.43c4.55 0 10.6 -3.64 18 -10.81a2.34 2.34 0 0 0 0.25 -0.3h1.7c6.13 0 10.62 -0.81 13.43 -2.4 -1.29 3 -1.3 5.81 0.28 7.58l0.09 0.08a5.54 5.54 0 0 0 4.2 1.57v0.43a6.57 6.57 0 0 0 -1.45 4 6.32 6.32 0 0 0 0.94 3.25c-0.22 2.92 -0.52 6.22 -0.88 9.65zm-49.31 -38.7a7.5 7.5 0 1 1 7.5 7.5 7.51 7.51 0 0 1 -7.5 -7.5zm54.46 32.8c0.19 2.14 0.83 2.46 1.13 2.61a1.31 1.31 0 0 0 0.61 0.15 1.5 1.5 0 0 0 0.55 -0.11 3.12 3.12 0 0 0 1.31 -1.3 19.57 19.57 0 0 0 4.07 0.59c-1.14 3.23 -3.65 9.28 -6.36 9.28 -1.68 0 -3.43 -2.3 -5 -9a0.1 0.1 0 0 0 -0.07 0.06c0.15 -1.67 0.29 -3.28 0.42 -4.82a11.46 11.46 0 0 0 3.34 2.54zm17.92 18.13a59 59 0 0 1 -3.45 8.46 32.566 32.566 0 0 1 -1.12 2c-1.89 3.05 -3.79 4.63 -5.65 4.63s-3.8 -1.93 -5.59 -4.63a40.66 40.66 0 0 1 -1.22 -2 62 62 0 0 1 -3 -6.08c-1 -2.27 -1.76 -4.42 -2.29 -6a268.89 268.89 0 0 0 0.79 -5.4 7.76 7.76 0 0 0 3 3.63 3.93 3.93 0 0 0 1.9 0.5c4.09 0 7 -6.77 8.41 -11l0.09 -0.26a20.79 20.79 0 0 0 2.42 -0.29l1.08 -0.23a17.88 17.88 0 0 0 2.79 -0.91 3.88 3.88 0 0 0 1.85 0.47h0.27a3.59 3.59 0 0 0 3.48 1.85h0.25a134.51 134.51 0 0 1 -4.01 15.24zm1.74 -17.57a1.46 1.46 0 0 0 0.66 0.16 1.5 1.5 0 0 0 1.5 -1.5 1.39 1.39 0 0 0 -0.09 -0.5c1.41 0 2.59 0.71 2.59 1.54a1 1 0 0 1 -0.32 0.71 1.23 1.23 0 0 0 -0.47 -0.22 1.89 1.89 0 0 0 -1.56 0.62 0.44 0.44 0 0 0 -0.13 0.42h-0.14a2.93 2.93 0 0 1 -2.47 -1 3.3 3.3 0 0 0 0.43 -0.25zm-11.21 -14.88c5.83 0 10.55 2.52 10.55 5.64s-4.72 5.68 -10.55 5.68 -10.55 -2.53 -10.55 -5.65 4.72 -5.69 10.55 -5.69z"/>
+  <path fill="#59acff" d="M144.79 128.16s0.03 0 0 0z"/>
+  <path fill="url(#i)" d="M132.92 93.07a1.41 1.41 0 0 0 1.93 -0.44l1.66 -2.63a1.4 1.4 0 0 0 -0.44 -1.93 1.38 1.38 0 0 0 -1.93 0.44l-1.67 2.66a1.4 1.4 0 0 0 0.45 1.9z"/>
+  <path fill="url(#j)" d="M129.13 97a5.64 5.64 0 0 0 9.23 0 1 1 0 0 0 -1.68 -1.1 3.66 3.66 0 0 1 -2.94 1.5 3.72 3.72 0 0 1 -2.94 -1.49 1 1 0 0 0 -1.67 1.09z"/>
+  <path fill="#d9ebff" d="M124.1 133.65a6.12 6.12 0 0 1 -2.5 -2.05 6.08 6.08 0 0 1 -4.09 1.29 5.88 5.88 0 0 1 -1.79 -0.24 1.82 1.82 0 0 1 -0.6 -0.35 6.76 6.76 0 0 1 -3.43 2.38 4.07 4.07 0 0 1 -2.92 -0.34c0.07 1.71 0.49 3.69 2 3.84 2.77 0.28 4.71 -2.77 4.71 -2.77s2.49 1.11 3.88 0.55a13.26 13.26 0 0 0 2.21 -1.1s1.94 3.88 4.44 2.77c1.32 -0.59 1.55 -2.5 1.47 -4.16a4.43 4.43 0 0 1 -1.94 0.47 4 4 0 0 1 -1.44 -0.29z"/>
+  <path fill="url(#k)" d="M110.48 129.17c-0.68 0.66 -1.6 1.92 -1.53 2.67a0.68 0.68 0 0 0 0.37 0.52 2.38 2.38 0 0 0 1.9 0.38 5.58 5.58 0 0 0 2.78 -2.27l-0.14 -1.08 -1.76 1.45a0.52 0.52 0 0 1 -0.32 0.11 0.5 0.5 0 0 1 -0.31 -0.89l2.17 -1.78 -2.59 -1.39a0.5 0.5 0 0 1 -0.21 -0.68 0.51 0.51 0 0 1 0.68 -0.2l2.06 1.11v-0.18c-0.36 -0.93 -1.48 -3.14 -3 -3.74a2 2 0 0 0 -0.75 -0.14 2.5 2.5 0 0 0 -1.11 0.28 0.5 0.5 0 0 0 -0.33 0.39c-0.18 1 1.16 3 2.13 4a1 1 0 0 1 -0.04 1.44z"/>
+  <path fill="url(#l)" d="M107 132a2.67 2.67 0 0 0 1.28 2 7.105 7.105 0 0 0 0.53 0.3 4.07 4.07 0 0 0 2.92 0.34 6.76 6.76 0 0 0 3.43 -2.38 1.82 1.82 0 0 0 0.6 0.35 5.88 5.88 0 0 0 1.79 0.24 6.08 6.08 0 0 0 4.09 -1.29 6.12 6.12 0 0 0 2.5 2.05 4 4 0 0 0 1.49 0.29 4.43 4.43 0 0 0 1.94 -0.47h0.07a2.48 2.48 0 0 0 1.4 -1.8c0.33 -1.75 -1.12 -3.92 -2 -5.07a5.41 5.41 0 0 0 1.49 -3.61 2.63 2.63 0 0 0 -1.28 -2 4.31 4.31 0 0 0 -3.45 -0.65 6.78 6.78 0 0 0 -3.38 2.33l-0.08 -0.06a1 1 0 0 0 -0.5 -0.13c-0.9 0 -3.92 0.07 -5.1 1a1.75 1.75 0 0 0 -0.45 0.55 6.75 6.75 0 0 0 -2.89 -2.6 4.18 4.18 0 0 0 -3.5 0.2 2.5 2.5 0 0 0 -1.4 1.8c-0.34 1.75 1.12 3.93 2 5.07a5.44 5.44 0 0 0 -1.5 3.54zm17.26 -9.79a2.37 2.37 0 0 1 1.89 0.39 0.65 0.65 0 0 1 0.37 0.52c0.08 0.74 -0.85 2 -1.53 2.67a1 1 0 0 0 0 1.38c1 1.08 2.3 3.12 2.12 4.06 0 0.12 -0.06 0.25 -0.33 0.38a2.16 2.16 0 0 1 -1.86 0.14 6 6 0 0 1 -2.53 -2.79v-0.33l1.15 0.92a0.51 0.51 0 0 0 0.31 0.11 0.5 0.5 0 0 0 0.32 -0.89l-1.81 -1.45v-0.42l1.39 -1.39a0.5 0.5 0 0 0 0 -0.7 0.5 0.5 0 0 0 -0.71 0l-0.87 0.87a8.16 8.16 0 0 0 -0.44 -1.45 5.28 5.28 0 0 1 2.49 -1.98zm-8.32 2.79a10.91 10.91 0 0 1 3.52 -0.51c0.89 1 1.07 4.93 0.69 5.78 -0.34 0.45 -2.64 0.91 -3.72 0.56 -0.69 -0.62 -1.04 -4.83 -0.49 -5.83zm-7.54 -1.23a0.5 0.5 0 0 1 0.33 -0.39 2.5 2.5 0 0 1 1.11 -0.28 2 2 0 0 1 0.75 0.14c1.49 0.6 2.61 2.81 3 3.74v0.18l-2.07 -1.16a0.51 0.51 0 0 0 -0.68 0.2 0.5 0.5 0 0 0 0.21 0.68l2.59 1.39 -2.17 1.78a0.5 0.5 0 0 0 0.31 0.89 0.52 0.52 0 0 0 0.32 -0.11l1.76 -1.45 0.14 1.08a5.58 5.58 0 0 1 -2.78 2.27 2.38 2.38 0 0 1 -1.9 -0.38 0.68 0.68 0 0 1 -0.37 -0.52c-0.07 -0.75 0.85 -2 1.53 -2.67a1 1 0 0 0 0 -1.39c-0.92 -1.06 -2.26 -3.09 -2.08 -4.04z"/>
+  <path fill="url(#m)" d="M122.93 124.85a0.5 0.5 0 0 1 0.71 0 0.5 0.5 0 0 1 0 0.7l-1.39 1.39v0.42l1.81 1.45a0.5 0.5 0 0 1 -0.32 0.89 0.51 0.51 0 0 1 -0.31 -0.11l-1.15 -0.92v0.33a6 6 0 0 0 2.53 2.79 2.16 2.16 0 0 0 1.86 -0.14c0.27 -0.13 0.31 -0.26 0.33 -0.38 0.18 -0.94 -1.16 -3 -2.12 -4.06a1 1 0 0 1 0 -1.38c0.68 -0.66 1.61 -1.93 1.53 -2.67a0.65 0.65 0 0 0 -0.37 -0.52 2.37 2.37 0 0 0 -1.89 -0.39 5.28 5.28 0 0 0 -2.6 2 8.16 8.16 0 0 1 0.44 1.45z"/>
+  <path fill="url(#n)" d="M120.15 130.23c0.38 -0.85 0.2 -4.83 -0.69 -5.78a10.91 10.91 0 0 0 -3.52 0.51c-0.55 1 -0.2 5.25 0.49 5.83 1.08 0.35 3.38 -0.11 3.72 -0.56z"/>
+  <path fill="url(#o)" d="M116.84 77.3a33.5 33.5 0 0 0 12.25 0.33c3 -0.59 4.95 -1.74 5.23 -3.15s-1.07 -3.2 -3.67 -4.89l-0.47 -0.28 -1.6 3.31a0.93 0.93 0 0 1 -0.31 0.37c-0.19 0.14 -1.52 1 -5 1a30.8 30.8 0 0 1 -5.62 -0.58c-5.32 -1 -9.81 -4 -10.37 -5.12a1.26 1.26 0 0 1 -0.12 -0.48l-0.16 -2.81c-3.08 0.59 -5 1.76 -5.31 3.17 -0.55 2.83 5.54 7.27 15.15 9.13z"/>
+  <path fill="url(#p)" d="M128.87 57.59a44 44 0 0 1 -8.2 -0.85c-4.91 -1 -9.71 -2.65 -12.41 -4.68l0.54 9.39a52.63 52.63 0 0 0 9.52 3.84 28.52 28.52 0 0 0 11.17 0.86l4.4 -9.09a14.94 14.94 0 0 1 -2.29 0.4 26 26 0 0 1 -2.73 0.13z"/>
+  <path fill="#fff" d="M121.05 54.78a36.81 36.81 0 0 0 10.34 0.69c3 -0.31 4 -1.13 4 -1.52s-0.49 -1.49 -3.18 -2.91a36.94 36.94 0 0 0 -9.85 -3.23 41.36 41.36 0 0 0 -7.74 -0.81c-4.13 0 -6.48 0.86 -6.63 1.64 -0.19 1.18 4.2 4.42 13.06 6.14z"/>
+  <path fill="#f2f8ff" d="M108.71 62.53v5a23.77 23.77 0 0 0 8.5 4 22.43 22.43 0 0 0 10.15 0.25l2 -4.57a29.54 29.54 0 0 1 -11.24 -0.94 53.39 53.39 0 0 1 -9.41 -3.74z"/>
+  <path fill="url(#q)" d="M156.91 123c5.83 0 10.55 -2.53 10.55 -5.65s-4.72 -5.64 -10.55 -5.64 -10.55 2.52 -10.55 5.64 4.72 5.65 10.55 5.65zm-7.78 -6.75h0.37a4.49 4.49 0 0 1 2.2 -2 0.49 0.49 0 0 1 0.57 -0.79l0.6 0.32a12.44 12.44 0 0 1 3.54 -0.57v-0.32a0.5 0.5 0 0 1 1 0v0.33a11.84 11.84 0 0 1 3.78 0.78l0.62 -0.31a0.51 0.51 0 0 1 0.67 0.23 0.5 0.5 0 0 1 -0.17 0.63 4.06 4.06 0 0 1 1.6 1.59h0.5a0.5 0.5 0 0 1 0.5 0.5 0.5 0.5 0 0 1 -0.5 0.5h-0.23v0.05a2.92 2.92 0 0 1 -1.28 2.23 0.5 0.5 0 0 1 0 0.16 0.49 0.49 0 0 1 -0.46 0.31 0.47 0.47 0 0 1 -0.17 0 10.53 10.53 0 0 1 -4.58 1.28v0.38a0.5 0.5 0 1 1 -1 0v-0.35a12.1 12.1 0 0 1 -4.52 -0.85l-0.23 0.13a0.47 0.47 0 0 1 -0.25 0.07 0.5 0.5 0 0 1 -0.43 -0.25 0.48 0.48 0 0 1 0 -0.42 3.36 3.36 0 0 1 -1.91 -2.59h-0.13a0.51 0.51 0 0 1 -0.5 -0.47 0.5 0.5 0 0 1 0.41 -0.62z"/>
+  <path fill="#f2f8ff" d="M157.48 116.86l5.11 2a0.49 0.49 0 0 1 0.31 0.49 2.92 2.92 0 0 0 1.28 -2.23v-0.05h-1.4a0.5 0.5 0 0 1 -0.5 -0.5 0.51 0.51 0 0 1 0.5 -0.5h1.13a4.06 4.06 0 0 0 -1.6 -1.59h-0.06z"/>
+  <path fill="#f2f8ff" d="M151.78 116.54a0.49 0.49 0 0 1 -0.47 0.53l-2 0.12a3.36 3.36 0 0 0 1.91 2.59 0.45 0.45 0 0 1 0.21 -0.26l1.5 -0.88a0.5 0.5 0 0 1 0.5 0.87l-1.27 0.74a12.1 12.1 0 0 0 4.52 0.85v-1.1a0.5 0.5 0 0 1 1 0v1.12a10.53 10.53 0 0 0 4.58 -1.28l-5.75 -2.25a0.5 0.5 0 0 1 -0.29 -0.65 0.49 0.49 0 0 1 0.24 -0.63l4.75 -2.32a11.84 11.84 0 0 0 -3.78 -0.78v0.8a0.5 0.5 0 1 1 -1 0v-0.81a12.44 12.44 0 0 0 -3.54 0.57l0.78 0.43a0.49 0.49 0 0 1 0.2 0.67 0.49 0.49 0 0 1 -0.44 0.26 0.53 0.53 0 0 1 -0.24 -0.06l-1.38 -0.75 -0.09 -0.08a4.49 4.49 0 0 0 -2.2 2l1.75 -0.11a0.51 0.51 0 0 1 0.51 0.41z"/>
+  <path fill="url(#r)" d="M153.59 118.82a0.5 0.5 0 0 0 -0.68 -0.18l-1.5 0.88a0.45 0.45 0 0 0 -0.21 0.26 0.48 0.48 0 0 0 0 0.42 0.5 0.5 0 0 0 0.43 0.25 0.47 0.47 0 0 0 0.25 -0.07l0.23 -0.13 1.27 -0.74a0.51 0.51 0 0 0 0.21 -0.69z"/>
+  <path fill="url(#s)" d="M156.2 116.88a0.5 0.5 0 0 0 0.29 0.65l5.75 2.25a0.47 0.47 0 0 0 0.17 0 0.49 0.49 0 0 0 0.46 -0.31 0.5 0.5 0 0 0 0 -0.16 0.49 0.49 0 0 0 -0.31 -0.49l-5.11 -2 4.77 -2.34h0.06a0.5 0.5 0 0 0 0.17 -0.63 0.51 0.51 0 0 0 -0.67 -0.23l-0.62 0.31 -4.75 2.32a0.49 0.49 0 0 0 -0.21 0.63z"/>
+  <path fill="url(#t)" d="M153.17 115a0.53 0.53 0 0 0 0.24 0.06 0.49 0.49 0 0 0 0.44 -0.26 0.49 0.49 0 0 0 -0.2 -0.67l-0.78 -0.43 -0.6 -0.32a0.49 0.49 0 0 0 -0.57 0.79l0.09 0.08z"/>
+  <path fill="url(#u)" d="M162.28 116.57a0.5 0.5 0 0 0 0.5 0.5h1.63a0.5 0.5 0 0 0 0.5 -0.5 0.5 0.5 0 0 0 -0.5 -0.5h-1.63a0.51 0.51 0 0 0 -0.5 0.5z"/>
+  <path fill="url(#v)" d="M156.91 114.45a0.5 0.5 0 0 0 0.5 -0.5v-1.13a0.5 0.5 0 0 0 -1 0v1.18a0.5 0.5 0 0 0 0.5 0.45z"/>
+  <path fill="url(#w)" d="M149.16 117.2h0.13l2 -0.12a0.49 0.49 0 0 0 0.47 -0.53 0.51 0.51 0 0 0 -0.53 -0.47l-1.75 0.11h-0.37a0.5 0.5 0 0 0 -0.47 0.53 0.51 0.51 0 0 0 0.52 0.48z"/>
+  <path fill="url(#x)" d="M157.16 119.45a0.5 0.5 0 0 0 -0.5 0.5v1.5a0.5 0.5 0 1 0 1 0v-1.45a0.5 0.5 0 0 0 -0.5 -0.55z"/>
+</svg>
--- a/browser/base/content/test/static/browser_misused_characters_in_strings.js
+++ b/browser/base/content/test/static/browser_misused_characters_in_strings.js
@@ -13,17 +13,17 @@ let gWhitelist = [{
     key: "certerror.introPara",
     type: "single-quote"
   }, {
     file: "netError.dtd",
     key: "certerror.introPara1",
     type: "single-quote"
   }, {
     file: "netError.dtd",
-    key: "certerror.expiredCert.whatCanYouDoAboutIt",
+    key: "certerror.expiredCert.whatCanYouDoAboutIt2",
     type: "single-quote"
   }, {
     file: "netError.dtd",
     key: "certerror.whatShouldIDo.badStsCertExplanation1",
     type: "single-quote"
   }, {
     file: "netError.dtd",
     key: "inadequateSecurityError.longDesc",
@@ -32,16 +32,20 @@ let gWhitelist = [{
     file: "netError.dtd",
     key: "certerror.wrongSystemTime2",
     type: "single-quote"
   }, {
     file: "netError.dtd",
     key: "certerror.wrongSystemTimeWithoutReference",
     type: "single-quote"
   }, {
+    file: "netError.dtd",
+    key: "clockSkewError.longDesc",
+    type: "single-quote"
+  }, {
     file: "phishing-afterload-warning-message.dtd",
     key: "safeb.palm.advisory.desc2",
     type: "single-quote"
   }, {
     file: "phishing-afterload-warning-message.dtd",
     key: "safeb.blocked.malwarePage.errorDesc.override",
     type: "single-quote"
   }, {
--- a/browser/base/jar.mn
+++ b/browser/base/jar.mn
@@ -13,16 +13,17 @@ browser.jar:
         content/browser/aboutRobots.xhtml             (content/aboutRobots.xhtml)
         content/browser/aboutRobots.js                (content/aboutRobots.js)
         content/browser/aboutRobots.css               (content/aboutRobots.css)
 
         content/browser/illustrations/error-connection-failure.svg (content/illustrations/error-connection-failure.svg)
         content/browser/illustrations/error-server-not-found.svg (content/illustrations/error-server-not-found.svg)
         content/browser/illustrations/error-malformed-url.svg (content/illustrations/error-malformed-url.svg)
         content/browser/illustrations/under-construction.svg (content/illustrations/under-construction.svg)
+        content/browser/illustrations/blue-berror.svg (content/illustrations/blue-berror.svg)
         content/browser/aboutNetError.xhtml            (content/aboutNetError.xhtml)
         content/browser/aboutNetError.js               (content/aboutNetError.js)
         content/browser/aboutNetError-new.xhtml        (content/aboutNetError-new.xhtml)
         content/browser/aboutRobots-icon.png          (content/aboutRobots-icon.png)
         content/browser/aboutRobots-widget-left.png   (content/aboutRobots-widget-left.png)
         content/browser/aboutTabCrashed.css           (content/aboutTabCrashed.css)
         content/browser/aboutTabCrashed.js            (content/aboutTabCrashed.js)
         content/browser/aboutTabCrashed.xhtml         (content/aboutTabCrashed.xhtml)
--- a/browser/locales/en-US/chrome/overrides/netError.dtd
+++ b/browser/locales/en-US/chrome/overrides/netError.dtd
@@ -6,16 +6,17 @@
 %brandDTD;
 
 <!ENTITY loadError.label "Problem loading page">
 <!ENTITY retry.label "Try Again">
 <!ENTITY returnToPreviousPage.label "Go Back">
 <!ENTITY returnToPreviousPage1.label "Go Back (Recommended)">
 <!ENTITY advanced.label "Advanced">
 <!ENTITY continue1.label "Continue…">
+<!ENTITY moreInformation.label "More Information">
 
 <!-- Specific error messages -->
 
 <!ENTITY connectionFailure.title "Unable to connect">
 <!ENTITY connectionFailure.longDesc "&sharedLongDesc;">
 
 <!ENTITY deniedPortAccess.title "This address is restricted">
 <!ENTITY deniedPortAccess.longDesc "">
@@ -159,18 +160,18 @@ was trying to connect. -->
 
 <!ENTITY certerror.whatCanYouDoAboutItTitle "What can you do about it?">
 
 <!ENTITY certerror.unknownIssuer.whatCanYouDoAboutIt "
 <p>The issue is most likely with the website, and there is nothing you can do to resolve it.</p>
 <p>If you are on a corporate network or using anti-virus software, you can reach out to the support teams for assistance. You can also notify the website’s administrator about the problem.</p>
 ">
 
-<!ENTITY certerror.expiredCert.whatCanYouDoAboutIt "
-<p>Your computer clock is set to <span id='wrongSystemTime_systemDate'/>. Make sure your computer is set to the correct date, time, and time zone in your system settings, and then refresh <span class='hostname'/>.</p>
+<!ENTITY certerror.expiredCert.whatCanYouDoAboutIt2 "
+<p>Your computer clock is set to <span id='wrongSystemTime_systemDate2'/>. Make sure your computer is set to the correct date, time, and time zone in your system settings, and then refresh <span class='hostname'/>.</p>
 <p>If your clock is already set to the right time, the website is likely misconfigured, and there is nothing you can do to resolve the issue. You can notify the website’s administrator about the problem.</p>
 ">
 
 <!ENTITY certerror.badCertDomain.whatCanYouDoAboutIt "
 <p>The issue is most likely with the website, and there is nothing you can do to resolve it. You can notify the website’s administrator about the problem.</p>
 ">
 
 <!ENTITY sharedLongDesc "
@@ -221,10 +222,13 @@ certificate.">
 
 <!ENTITY inadequateSecurityError.title "Your connection is not secure">
 <!-- LOCALIZATION NOTE (inadequateSecurityError.longDesc) - Do not translate
      "NS_ERROR_NET_INADEQUATE_SECURITY". -->
 <!ENTITY inadequateSecurityError.longDesc "<p><span class='hostname'></span> uses security technology that is outdated and vulnerable to attack. An attacker could easily reveal information which you thought to be safe. The website administrator will need to fix the server first before you can visit the site.</p><p>Error code: NS_ERROR_NET_INADEQUATE_SECURITY</p>">
 
 <!ENTITY blockedByPolicy.title "Blocked Page">
 
+<!ENTITY clockSkewError.title "Your computer clock is wrong">
+<!ENTITY clockSkewError.longDesc "Your computer thinks it is <span id='wrongSystemTime_systemDate1'/>, which prevents &brandShortName; from connecting securely. To visit <span class='hostname'></span>, update your computer clock in your system settings to the current date, time, and time zone, and then refresh <span class='hostname'></span>.">
+
 <!ENTITY prefReset.longDesc "It looks like your network security settings might be causing this. Do you want the default settings to be restored?">
 <!ENTITY prefReset.label "Restore default settings">
--- a/browser/modules/NetErrorContent.jsm
+++ b/browser/modules/NetErrorContent.jsm
@@ -378,50 +378,31 @@ var NetErrorContent = {
       case SEC_ERROR_EXPIRED_CERTIFICATE:
       case SEC_ERROR_EXPIRED_ISSUER_CERTIFICATE:
       case SEC_ERROR_OCSP_FUTURE_RESPONSE:
       case SEC_ERROR_OCSP_OLD_RESPONSE:
       case MOZILLA_PKIX_ERROR_NOT_YET_VALID_CERTIFICATE:
       case MOZILLA_PKIX_ERROR_NOT_YET_VALID_ISSUER_CERTIFICATE:
 
         learnMoreLink.href = baseURL + "time-errors";
-        if (newErrorPagesEnabled) {
-          let dateOptions = { year: "numeric", month: "long", day: "numeric", hour: "numeric", minute: "numeric" };
-          let systemDate = new Services.intl.DateTimeFormat(undefined, dateOptions).format(new Date());
-          doc.getElementById("wrongSystemTime_systemDate").textContent = systemDate;
-          let errDesc = doc.getElementById("ed2_nssBadCert_SEC_ERROR_EXPIRED_CERTIFICATE");
-          let sd = doc.getElementById("errorShortDescText2");
-          if (sd) {
-            // eslint-disable-next-line no-unsanitized/property
-            sd.innerHTML = errDesc.innerHTML;
-          }
-          if (es) {
-            // eslint-disable-next-line no-unsanitized/property
-            es.innerHTML = errWhatToDo.innerHTML;
-          }
-          if (est) {
-            // eslint-disable-next-line no-unsanitized/property
-            est.innerHTML = errWhatToDoTitle.innerHTML;
-          }
-          updateContainerPosition();
-        break;
-        }
+        let clockSkew = false;
         // We check against the remote-settings server time first if available, because that allows us
         // to give the user an approximation of what the correct time is.
         let difference = Services.prefs.getIntPref(PREF_SERVICES_SETTINGS_CLOCK_SKEW_SECONDS, 0);
         let lastFetched = Services.prefs.getIntPref(PREF_SERVICES_SETTINGS_LAST_FETCHED, 0) * 1000;
 
         let now = Date.now();
         let certRange = this._getCertValidityRange(docShell);
 
         let approximateDate = now - difference * 1000;
         // If the difference is more than a day, we last fetched the date in the last 5 days,
         // and adjusting the date per the interval would make the cert valid, warn the user:
         if (Math.abs(difference) > 60 * 60 * 24 && (now - lastFetched) <= 60 * 60 * 24 * 5 &&
             certRange.notBefore < approximateDate && certRange.notAfter > approximateDate) {
+          clockSkew = true;
           let formatter = new Services.intl.DateTimeFormat(undefined, {
             dateStyle: "short"
           });
           let systemDate = formatter.format(new Date());
           // negative difference means local time is behind server time
           approximateDate = formatter.format(new Date(approximateDate));
 
           doc.getElementById("wrongSystemTime_URL").textContent = doc.location.hostname;
@@ -443,28 +424,68 @@ var NetErrorContent = {
           let buildDate = new Date(year, month, day);
           let systemDate = new Date();
 
           // We don't check the notBefore of the cert with the build date,
           // as it is of course almost certain that it is now later than the build date,
           // so we shouldn't exclude the possibility that the cert has become valid
           // since the build date.
           if (buildDate > systemDate && new Date(certRange.notAfter) > buildDate) {
+            clockSkew = true;
             let formatter = new Services.intl.DateTimeFormat(undefined, {
               dateStyle: "short"
             });
 
             doc.getElementById("wrongSystemTimeWithoutReference_URL")
               .textContent = doc.location.hostname;
             doc.getElementById("wrongSystemTimeWithoutReference_systemDate")
               .textContent = formatter.format(systemDate);
-
-            doc.getElementById("errorShortDesc").style.display = "none";
-            doc.getElementById("wrongSystemTimeWithoutReferencePanel").style.display = "block";
+          }
+        }
+        if (!newErrorPagesEnabled) {
+          break;
+        }
+        let dateOptions = { year: "numeric", month: "long", day: "numeric", hour: "numeric", minute: "numeric" };
+        let systemDate = new Services.intl.DateTimeFormat(undefined, dateOptions).format(new Date());
+        doc.getElementById("wrongSystemTime_systemDate1").textContent = systemDate;
+        if (clockSkew) {
+          doc.body.classList.add("illustrated", "clockSkewError");
+          let clockErrTitle = doc.getElementById("et_clockSkewError");
+          let clockErrDesc = doc.getElementById("ed_clockSkewError");
+          // eslint-disable-next-line no-unsanitized/property
+          doc.querySelector(".title-text").textContent = clockErrTitle.textContent;
+          let desc = doc.getElementById("errorShortDescText");
+          doc.getElementById("errorShortDesc").style.display = "block";
+          doc.getElementById("wrongSystemTimePanel").style.display = "none";
+          doc.getElementById("certificateErrorReporting").style.display = "none";
+          if (desc) {
+            // eslint-disable-next-line no-unsanitized/property
+            desc.innerHTML = clockErrDesc.innerHTML;
           }
+          let errorPageContainer = doc.getElementById("errorPageContainer");
+          let textContainer = doc.getElementById("text-container");
+          errorPageContainer.style.backgroundPosition = `left top calc(50vh - ${textContainer.clientHeight / 2}px)`;
+        } else {
+            doc.getElementById("wrongSystemTime_systemDate2").textContent = systemDate;
+            let errDesc = doc.getElementById("ed2_nssBadCert_SEC_ERROR_EXPIRED_CERTIFICATE");
+            let sd = doc.getElementById("errorShortDescText2");
+            if (sd) {
+              // eslint-disable-next-line no-unsanitized/property
+              sd.innerHTML = errDesc.innerHTML;
+            }
+            if (es) {
+              // eslint-disable-next-line no-unsanitized/property
+              es.innerHTML = errWhatToDo.innerHTML;
+            }
+            if (est) {
+              // eslint-disable-next-line no-unsanitized/property
+              est.textContent = errWhatToDoTitle.textContent;
+              est.style.fontWeight = "bold";
+            }
+            updateContainerPosition();
         }
         break;
     }
   },
 
   handleEvent(aGlobal, aEvent) {
     // Documents have a null ownerDocument.
     let doc = aEvent.originalTarget.ownerDocument || aEvent.originalTarget;
--- a/browser/themes/shared/aboutNetError-new.css
+++ b/browser/themes/shared/aboutNetError-new.css
@@ -23,16 +23,21 @@ body.captiveportal .title {
 body.certerror .title {
   background-image: url("cert-error-new.svg");
 }
 
 body.blocked .title {
   background-image: url("chrome://global/skin/icons/blocked.svg");
 }
 
+body.clockSkewError .title {
+  background-image: none;
+  background-repeat: no-repeat;
+}
+
 #errorContainer {
   display: none;
 }
 
 /* Pressing the retry button will cause the cursor to flicker from a pointer to
  * not-allowed. Override the disabled cursor behaviour since we will never show
  * the button disabled as the initial state. */
 button:disabled {
@@ -77,21 +82,33 @@ body:not(.neterror) #netErrorButtonConta
 body.captiveportal #returnButton {
   display: none;
 }
 
 body:not(.captiveportal) #openPortalLoginPageButton {
   display: none;
 }
 
+body:not(.clockSkewError) #errorTryAgain {
+  display: none;
+}
+
+body:not(.clockSkewError) #advancedPanelErrorTryAgain {
+  display: none;
+}
+
+body:not(.clockSkewError) #moreInformationButton {
+  display: none;
+}
+
 #openPortalLoginPageButton {
   margin-inline-start: 0;
 }
 
-body:not(.neterror) #advancedButton {
+body:not(.neterror):not(.clockSkewError) #advancedButton {
   display: block;
 }
 
 #certificateErrorReporting {
   display: none;
   padding-bottom: 10px;
 }
 
@@ -216,16 +233,44 @@ span#hostname {
 .dnsNotFound #errorPageContainer {
   background-image: url("chrome://browser/content/illustrations/error-server-not-found.svg");
 }
 
 .malformedURI #errorPageContainer {
   background-image: url("chrome://browser/content/illustrations/error-malformed-url.svg");
 }
 
+.clockSkewError #errorPageContainer {
+  background-image: url("chrome://browser/content/illustrations/blue-berror.svg");
+  background-size: 18.5em;
+}
+
+.clockSkewError #returnButton {
+  display: none;
+}
+
+.clockSkewError #advancedButton {
+  display: none;
+}
+
+.clockSkewError #advancedPanelErrorTryAgain,
+.clockSkewError #errorTryAgain,
+.clockSkewError #moreInformationButton {
+  display: block;
+  margin-top: 0.3em;
+}
+
+.clockSkewError #exceptionDialogButton {
+  display: none;
+}
+
+.clockSkewError #advancedPanelReturnButton {
+  display: none;
+}
+
 .malformedURI #errorTryAgain {
   display: none;
 }
 
 #wrongSystemTimePanel {
   display: none;
 }
 
--- a/browser/themes/shared/aboutNetError.css
+++ b/browser/themes/shared/aboutNetError.css
@@ -50,16 +50,24 @@ button:disabled {
 body:not(.neterror) #certErrorAndCaptivePortalButtonContainer {
   display: flex;
 }
 
 body:not(.neterror) #netErrorButtonContainer {
   display: none;
 }
 
+#advancedPanelErrorTryAgain {
+  display: none;
+}
+
+#moreInformationButton {
+  display: none;
+}
+
 #errorTryAgain {
   margin-top: 1.2em;
 }
 
 #advancedButton {
   display: none;
 }