UNPKG

lighthouse

Version:

Automated auditing, performance metrics, and best practices for the web.

820 lines (766 loc) • 182 kB
"use strict";(()=>{var Re=.8999999999999999,Ne=.5,Ie=.49999999999999994;function He(o){let e=Math.sign(o);o=Math.abs(o);let t=.254829592,n=-.284496736,r=1.421413741,i=-1.453152027,a=1.061405429,s=1/(1+.3275911*o),c=s*(t+s*(n+s*(r+s*(i+s*a))));return e*(1-c*Math.exp(-o*o))}function fe({median:o,p10:e},t){if(o<=0)throw new Error("median must be greater than zero");if(e<=0)throw new Error("p10 must be greater than zero");if(e>=o)throw new Error("p10 must be less than the median");if(t<=0)return 1;let n=.9061938024368232,r=Math.max(Number.MIN_VALUE,t/o),i=Math.log(r),a=Math.max(Number.MIN_VALUE,e/o),l=-Math.log(a),s=i*n/l,c=(1-He(s))/2,d;return t<=e?d=Math.max(.9,Math.min(1,c)):t<=o?d=Math.max(Ne,Math.min(Re,c)):d=Math.max(0,Math.min(Ie,c)),d}var U="\u2026",Oe="\xA0",ve=.9,$e={PASS:{label:"pass",minScore:ve},AVERAGE:{label:"average",minScore:.5},FAIL:{label:"fail"},ERROR:{label:"error"}},Ve=["com","co","gov","edu","ac","org","go","gob","or","net","in","ne","nic","gouv","web","spb","blog","jus","kiev","mil","wi","qc","ca","bel","on"],E=class o{static get RATINGS(){return $e}static get PASS_THRESHOLD(){return ve}static get MS_DISPLAY_VALUE(){return`%10d${Oe}ms`}static getFinalDisplayedUrl(e){if(e.finalDisplayedUrl)return e.finalDisplayedUrl;if(e.finalUrl)return e.finalUrl;throw new Error("Could not determine final displayed URL")}static getMainDocumentUrl(e){return e.mainDocumentUrl||e.finalUrl}static getFullPageScreenshot(e){return e.fullPageScreenshot?e.fullPageScreenshot:e.audits["full-page-screenshot"]?.details}static getEntityFromUrl(e,t){return t&&t.find(r=>r.origins.find(i=>e.startsWith(i)))||o.getPseudoRootDomain(e)}static splitMarkdownCodeSpans(e){let t=[],n=e.split(/`(.*?)`/g);for(let r=0;r<n.length;r++){let i=n[r];if(!i)continue;let a=r%2!==0;t.push({isCode:a,text:i})}return t}static splitMarkdownLink(e){let t=[],n=e.split(/\[([^\]]+?)\]\((https?:\/\/.*?)\)/g);for(;n.length;){let[r,i,a]=n.splice(0,3);r&&t.push({isLink:!1,text:r}),i&&a&&t.push({isLink:!0,text:i,linkHref:a})}return t}static truncate(e,t,n="\u2026"){if(e.length<=t)return e;let i=new Intl.Segmenter(void 0,{granularity:"grapheme"}).segment(e)[Symbol.iterator](),a=0;for(let l=0;l<=t-n.length;l++){let s=i.next();if(s.done)return e;a=s.value.index}for(let l=0;l<n.length;l++)if(i.next().done)return e;return e.slice(0,a)+n}static getURLDisplayName(e,t){t=t||{numPathParts:void 0,preserveQuery:void 0,preserveHost:void 0};let n=t.numPathParts!==void 0?t.numPathParts:2,r=t.preserveQuery!==void 0?t.preserveQuery:!0,i=t.preserveHost||!1,a;if(e.protocol==="about:"||e.protocol==="data:")a=e.href;else{a=e.pathname;let s=a.split("/").filter(c=>c.length);n&&s.length>n&&(a=U+s.slice(-1*n).join("/")),i&&(a=`${e.host}/${a.replace(/^\//,"")}`),r&&(a=`${a}${e.search}`)}let l=64;if(e.protocol!=="data:"&&(a=a.slice(0,200),a=a.replace(/([a-f0-9]{7})[a-f0-9]{13}[a-f0-9]*/g,`$1${U}`),a=a.replace(/([a-zA-Z0-9-_]{9})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9-_]{10,}/g,`$1${U}`),a=a.replace(/(\d{3})\d{6,}/g,`$1${U}`),a=a.replace(/\u2026+/g,U),a.length>l&&a.includes("?")&&(a=a.replace(/\?([^=]*)(=)?.*/,`?$1$2${U}`),a.length>l&&(a=a.replace(/\?.*/,`?${U}`)))),a.length>l){let s=a.lastIndexOf(".");s>=0?a=a.slice(0,l-1-(a.length-s))+`${U}${a.slice(s)}`:a=a.slice(0,l-1)+U}return a}static getChromeExtensionOrigin(e){let t=new URL(e);return t.protocol+"//"+t.host}static parseURL(e){let t=new URL(e);return{file:o.getURLDisplayName(t),hostname:t.hostname,origin:t.protocol==="chrome-extension:"?o.getChromeExtensionOrigin(e):t.origin}}static createOrReturnURL(e){return e instanceof URL?e:new URL(e)}static getPseudoTld(e){let t=e.split(".").slice(-2);return Ve.includes(t[0])?`.${t.join(".")}`:`.${t[t.length-1]}`}static getPseudoRootDomain(e){let t=o.createOrReturnURL(e).hostname,r=o.getPseudoTld(t).split(".");return t.split(".").slice(-r.length).join(".")}static filterRelevantLines(e,t,n){if(t.length===0)return e.slice(0,n*2+1);let r=3,i=new Set;return t=t.sort((a,l)=>(a.lineNumber||0)-(l.lineNumber||0)),t.forEach(({lineNumber:a})=>{let l=a-n,s=a+n;for(;l<1;)l++,s++;i.has(l-r-1)&&(l-=r);for(let c=l;c<=s;c++){let d=c;i.add(d)}}),e.filter(a=>i.has(a.lineNumber))}static computeLogNormalScore(e,t){let n=fe(e,t);return n>.9&&(n+=.05*(n-.9)),Math.floor(n*100)/100}};function Ge(o){let e=o.createFragment(),t=o.createElement("style");t.append(` .lh-3p-filter { color: var(--color-gray-600); float: right; padding: 6px var(--stackpack-padding-horizontal); } .lh-3p-filter-label, .lh-3p-filter-input { vertical-align: middle; user-select: none; } .lh-3p-filter-input:disabled + .lh-3p-ui-string { text-decoration: line-through; } `),e.append(t);let n=o.createElement("div","lh-3p-filter"),r=o.createElement("label","lh-3p-filter-label"),i=o.createElement("input","lh-3p-filter-input");i.setAttribute("type","checkbox"),i.setAttribute("checked","");let a=o.createElement("span","lh-3p-ui-string");a.append("Show 3rd party resources");let l=o.createElement("span","lh-3p-filter-count");return r.append(" ",i," ",a," (",l,") "),n.append(" ",r," "),e.append(n),e}function Be(o){let e=o.createFragment(),t=o.createElement("div","lh-audit"),n=o.createElement("details","lh-expandable-details"),r=o.createElement("summary"),i=o.createElement("div","lh-audit__header lh-expandable-details__summary"),a=o.createElement("span","lh-audit__score-icon"),l=o.createElement("span","lh-audit__title-and-text"),s=o.createElement("span","lh-audit__title"),c=o.createElement("span","lh-audit__display-text");l.append(" ",s," ",c," ");let d=o.createElement("div","lh-chevron-container");i.append(" ",a," ",l," ",d," "),r.append(" ",i," ");let h=o.createElement("div","lh-audit__description"),p=o.createElement("div","lh-audit__stackpacks");return n.append(" ",r," ",h," ",p," "),t.append(" ",n," "),e.append(t),e}function qe(o){let e=o.createFragment(),t=o.createElement("div","lh-category-header"),n=o.createElement("div","lh-score__gauge");n.setAttribute("role","heading"),n.setAttribute("aria-level","2");let r=o.createElement("div","lh-category-header__description");return t.append(" ",n," ",r," "),e.append(t),e}function je(o){let e=o.createFragment(),t=o.createElementNS("http://www.w3.org/2000/svg","svg","lh-chevron");t.setAttribute("viewBox","0 0 100 100");let n=o.createElementNS("http://www.w3.org/2000/svg","g","lh-chevron__lines"),r=o.createElementNS("http://www.w3.org/2000/svg","path","lh-chevron__line lh-chevron__line-left");r.setAttribute("d","M10 50h40");let i=o.createElementNS("http://www.w3.org/2000/svg","path","lh-chevron__line lh-chevron__line-right");return i.setAttribute("d","M90 50H50"),n.append(" ",r," ",i," "),t.append(" ",n," "),e.append(t),e}function We(o){let e=o.createFragment(),t=o.createElement("div","lh-audit-group"),n=o.createElement("details","lh-clump"),r=o.createElement("summary"),i=o.createElement("div","lh-audit-group__summary"),a=o.createElement("div","lh-audit-group__header"),l=o.createElement("span","lh-audit-group__title"),s=o.createElement("span","lh-audit-group__itemcount");a.append(" ",l," ",s," "," "," ");let c=o.createElement("div","lh-clump-toggle"),d=o.createElement("span","lh-clump-toggletext--show"),h=o.createElement("span","lh-clump-toggletext--hide");return c.append(" ",d," ",h," "),i.append(" ",a," ",c," "),r.append(" ",i," "),n.append(" ",r," "),t.append(" "," ",n," "),e.append(t),e}function Ke(o){let e=o.createFragment(),t=o.createElement("div","lh-crc-container"),n=o.createElement("style");n.append(` .lh-crc .lh-tree-marker { width: 12px; height: 26px; display: block; float: left; background-position: top left; } .lh-crc .lh-horiz-down { background: url('data:image/svg+xml;utf8,<svg width="16" height="26" viewBox="0 0 16 26" xmlns="http://www.w3.org/2000/svg"><g fill="%23D8D8D8" fill-rule="evenodd"><path d="M16 12v2H-2v-2z"/><path d="M9 12v14H7V12z"/></g></svg>'); } .lh-crc .lh-right { background: url('data:image/svg+xml;utf8,<svg width="16" height="26" viewBox="0 0 16 26" xmlns="http://www.w3.org/2000/svg"><path d="M16 12v2H0v-2z" fill="%23D8D8D8" fill-rule="evenodd"/></svg>'); } .lh-crc .lh-up-right { background: url('data:image/svg+xml;utf8,<svg width="16" height="26" viewBox="0 0 16 26" xmlns="http://www.w3.org/2000/svg"><path d="M7 0h2v14H7zm2 12h7v2H9z" fill="%23D8D8D8" fill-rule="evenodd"/></svg>'); } .lh-crc .lh-vert-right { background: url('data:image/svg+xml;utf8,<svg width="16" height="26" viewBox="0 0 16 26" xmlns="http://www.w3.org/2000/svg"><path d="M7 0h2v27H7zm2 12h7v2H9z" fill="%23D8D8D8" fill-rule="evenodd"/></svg>'); } .lh-crc .lh-vert { background: url('data:image/svg+xml;utf8,<svg width="16" height="26" viewBox="0 0 16 26" xmlns="http://www.w3.org/2000/svg"><path d="M7 0h2v26H7z" fill="%23D8D8D8" fill-rule="evenodd"/></svg>'); } .lh-crc .lh-crc-tree { font-size: 14px; width: 100%; overflow-x: auto; } .lh-crc .lh-crc-node { height: 26px; line-height: 26px; white-space: nowrap; } .lh-crc .lh-crc-node__longest { color: var(--color-average-secondary); } .lh-crc .lh-crc-node__tree-value { margin-left: 10px; } .lh-crc .lh-crc-node__tree-value div { display: inline; } .lh-crc .lh-crc-node__chain-duration { font-weight: 700; } .lh-crc .lh-crc-initial-nav { color: #595959; font-style: italic; } .lh-crc__summary-value { margin-bottom: 10px; } `);let r=o.createElement("div"),i=o.createElement("div","lh-crc__summary-value"),a=o.createElement("span","lh-crc__longest_duration_label"),l=o.createElement("b","lh-crc__longest_duration");i.append(" ",a," ",l," "),r.append(" ",i," ");let s=o.createElement("div","lh-crc"),c=o.createElement("div","lh-crc-initial-nav");return s.append(" ",c," "," "),t.append(" ",n," ",r," ",s," "),e.append(t),e}function Je(o){let e=o.createFragment(),t=o.createElement("div","lh-crc-node"),n=o.createElement("span","lh-crc-node__tree-marker"),r=o.createElement("span","lh-crc-node__tree-value");return t.append(" ",n," ",r," "),e.append(t),e}function Ze(o){let e=o.createFragment(),t=o.createElement("div","lh-element-screenshot"),n=o.createElement("div","lh-element-screenshot__content"),r=o.createElement("div","lh-element-screenshot__image"),i=o.createElement("div","lh-element-screenshot__mask"),a=o.createElementNS("http://www.w3.org/2000/svg","svg");a.setAttribute("height","0"),a.setAttribute("width","0");let l=o.createElementNS("http://www.w3.org/2000/svg","defs"),s=o.createElementNS("http://www.w3.org/2000/svg","clipPath");s.setAttribute("clipPathUnits","objectBoundingBox"),l.append(" ",s," "," "),a.append(" ",l," "),i.append(" ",a," ");let c=o.createElement("div","lh-element-screenshot__element-marker");return r.append(" ",i," ",c," "),n.append(" ",r," "),t.append(" ",n," "),e.append(t),e}function Qe(o){let e=o.createFragment(),t=o.createElement("div","lh-exp-gauge-component"),n=o.createElement("div","lh-exp-gauge__wrapper");n.setAttribute("target","_blank");let r=o.createElement("div","lh-exp-gauge__svg-wrapper"),i=o.createElementNS("http://www.w3.org/2000/svg","svg","lh-exp-gauge"),a=o.createElementNS("http://www.w3.org/2000/svg","g","lh-exp-gauge__inner"),l=o.createElementNS("http://www.w3.org/2000/svg","circle","lh-exp-gauge__bg"),s=o.createElementNS("http://www.w3.org/2000/svg","circle","lh-exp-gauge__base lh-exp-gauge--faded"),c=o.createElementNS("http://www.w3.org/2000/svg","circle","lh-exp-gauge__arc"),d=o.createElementNS("http://www.w3.org/2000/svg","text","lh-exp-gauge__percentage");a.append(" ",l," ",s," ",c," ",d," ");let h=o.createElementNS("http://www.w3.org/2000/svg","g","lh-exp-gauge__outer"),p=o.createElementNS("http://www.w3.org/2000/svg","circle","lh-cover");h.append(" ",p," ");let g=o.createElementNS("http://www.w3.org/2000/svg","text","lh-exp-gauge__label");return g.setAttribute("text-anchor","middle"),g.setAttribute("x","0"),g.setAttribute("y","60"),i.append(" ",a," ",h," ",g," "),r.append(" ",i," "),n.append(" ",r," "),t.append(" ",n," "),e.append(t),e}function Ye(o){let e=o.createFragment(),t=o.createElement("style");t.append(` .lh-footer { padding: var(--footer-padding-vertical) calc(var(--default-padding) * 2); max-width: var(--report-content-max-width); margin: 0 auto; } .lh-footer .lh-generated { text-align: center; } `),e.append(t);let n=o.createElement("footer","lh-footer"),r=o.createElement("ul","lh-meta__items");r.append(" ");let i=o.createElement("div","lh-generated"),a=o.createElement("b");a.append("Lighthouse");let l=o.createElement("span","lh-footer__version"),s=o.createElement("a","lh-footer__version_issue");return s.setAttribute("href","https://github.com/GoogleChrome/Lighthouse/issues"),s.setAttribute("target","_blank"),s.setAttribute("rel","noopener"),s.append("File an issue"),i.append(" "," Generated by ",a," ",l," | ",s," "),n.append(" ",r," ",i," "),e.append(n),e}function Xe(o){let e=o.createFragment(),t=o.createElement("a","lh-fraction__wrapper"),n=o.createElement("div","lh-fraction__content-wrapper"),r=o.createElement("div","lh-fraction__content"),i=o.createElement("div","lh-fraction__background");r.append(" ",i," "),n.append(" ",r," ");let a=o.createElement("div","lh-fraction__label");return t.append(" ",n," ",a," "),e.append(t),e}function et(o){let e=o.createFragment(),t=o.createElement("a","lh-gauge__wrapper"),n=o.createElement("div","lh-gauge__svg-wrapper"),r=o.createElementNS("http://www.w3.org/2000/svg","svg","lh-gauge");r.setAttribute("viewBox","0 0 120 120");let i=o.createElementNS("http://www.w3.org/2000/svg","circle","lh-gauge-base");i.setAttribute("r","56"),i.setAttribute("cx","60"),i.setAttribute("cy","60"),i.setAttribute("stroke-width","8");let a=o.createElementNS("http://www.w3.org/2000/svg","circle","lh-gauge-arc");a.setAttribute("r","56"),a.setAttribute("cx","60"),a.setAttribute("cy","60"),a.setAttribute("stroke-width","8"),r.append(" ",i," ",a," "),n.append(" ",r," ");let l=o.createElement("div","lh-gauge__percentage"),s=o.createElement("div","lh-gauge__label");return t.append(" "," ",n," ",l," "," ",s," "),e.append(t),e}function tt(o){let e=o.createFragment(),t=o.createElement("style");t.append(` /* CSS Fireworks. Originally by Eddie Lin https://codepen.io/paulirish/pen/yEVMbP */ .lh-pyro { display: none; z-index: 1; pointer-events: none; } .lh-score100 .lh-pyro { display: block; } .lh-score100 .lh-lighthouse stop:first-child { stop-color: hsla(200, 12%, 95%, 0); } .lh-score100 .lh-lighthouse stop:last-child { stop-color: hsla(65, 81%, 76%, 1); } .lh-pyro > .lh-pyro-before, .lh-pyro > .lh-pyro-after { position: absolute; width: 5px; height: 5px; border-radius: 2.5px; box-shadow: 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff, 0 0 #fff; animation: 1s bang ease-out infinite backwards, 1s gravity ease-in infinite backwards, 5s position linear infinite backwards; animation-delay: 1s, 1s, 1s; } .lh-pyro > .lh-pyro-after { animation-delay: 2.25s, 2.25s, 2.25s; animation-duration: 1.25s, 1.25s, 6.25s; } @keyframes bang { to { opacity: 1; box-shadow: -70px -115.67px #47ebbc, -28px -99.67px #eb47a4, 58px -31.67px #7eeb47, 13px -141.67px #eb47c5, -19px 6.33px #7347eb, -2px -74.67px #ebd247, 24px -151.67px #eb47e0, 57px -138.67px #b4eb47, -51px -104.67px #479eeb, 62px 8.33px #ebcf47, -93px 0.33px #d547eb, -16px -118.67px #47bfeb, 53px -84.67px #47eb83, 66px -57.67px #eb47bf, -93px -65.67px #91eb47, 30px -13.67px #86eb47, -2px -59.67px #83eb47, -44px 1.33px #eb47eb, 61px -58.67px #47eb73, 5px -22.67px #47e8eb, -66px -28.67px #ebe247, 42px -123.67px #eb5547, -75px 26.33px #7beb47, 15px -52.67px #a147eb, 36px -51.67px #eb8347, -38px -12.67px #eb5547, -46px -59.67px #47eb81, 78px -114.67px #eb47ba, 15px -156.67px #eb47bf, -36px 1.33px #eb4783, -72px -86.67px #eba147, 31px -46.67px #ebe247, -68px 29.33px #47e2eb, -55px 19.33px #ebe047, -56px 27.33px #4776eb, -13px -91.67px #eb5547, -47px -138.67px #47ebc7, -18px -96.67px #eb47ac, 11px -88.67px #4783eb, -67px -28.67px #47baeb, 53px 10.33px #ba47eb, 11px 19.33px #5247eb, -5px -11.67px #eb4791, -68px -4.67px #47eba7, 95px -37.67px #eb478b, -67px -162.67px #eb5d47, -54px -120.67px #eb6847, 49px -12.67px #ebe047, 88px 8.33px #47ebda, 97px 33.33px #eb8147, 6px -71.67px #ebbc47; } } @keyframes gravity { from { opacity: 1; } to { transform: translateY(80px); opacity: 0; } } @keyframes position { 0%, 19.9% { margin-top: 4%; margin-left: 47%; } 20%, 39.9% { margin-top: 7%; margin-left: 30%; } 40%, 59.9% { margin-top: 6%; margin-left: 70%; } 60%, 79.9% { margin-top: 3%; margin-left: 20%; } 80%, 99.9% { margin-top: 3%; margin-left: 80%; } } `),e.append(t);let n=o.createElement("div","lh-header-container"),r=o.createElement("div","lh-scores-wrapper-placeholder");return n.append(" ",r," "),e.append(n),e}function nt(o){let e=o.createFragment(),t=o.createElement("div","lh-metric"),n=o.createElement("div","lh-metric__innerwrap"),r=o.createElement("div","lh-metric__icon"),i=o.createElement("span","lh-metric__title"),a=o.createElement("div","lh-metric__value"),l=o.createElement("div","lh-metric__description");return n.append(" ",r," ",i," ",a," ",l," "),t.append(" ",n," "),e.append(t),e}function rt(o){let e=o.createFragment(),t=o.createElement("div","lh-scorescale"),n=o.createElement("span","lh-scorescale-range lh-scorescale-range--fail");n.append("0\u201349");let r=o.createElement("span","lh-scorescale-range lh-scorescale-range--average");r.append("50\u201389");let i=o.createElement("span","lh-scorescale-range lh-scorescale-range--pass");return i.append("90\u2013100"),t.append(" ",n," ",r," ",i," "),e.append(t),e}function ot(o){let e=o.createFragment(),t=o.createElement("style");t.append(` .lh-scores-container { display: flex; flex-direction: column; padding: var(--default-padding) 0; position: relative; width: 100%; } .lh-sticky-header { --gauge-circle-size: var(--gauge-circle-size-sm); --plugin-badge-size: 16px; --plugin-icon-size: 75%; --gauge-wrapper-width: 60px; --gauge-percentage-font-size: 13px; position: fixed; left: 0; right: 0; top: var(--topbar-height); font-weight: 500; display: none; justify-content: center; background-color: var(--sticky-header-background-color); border-bottom: 1px solid var(--color-gray-200); padding-top: var(--score-container-padding); padding-bottom: 4px; z-index: 2; pointer-events: none; } .lh-devtools .lh-sticky-header { /* The report within DevTools is placed in a container with overflow, which changes the placement of this header unless we change \`position\` to \`sticky.\` */ position: sticky; } .lh-sticky-header--visible { display: grid; grid-auto-flow: column; pointer-events: auto; } /* Disable the gauge arc animation for the sticky header, so toggling display: none does not play the animation. */ .lh-sticky-header .lh-gauge-arc { animation: none; } .lh-sticky-header .lh-gauge__label, .lh-sticky-header .lh-fraction__label { display: none; } .lh-highlighter { width: var(--gauge-wrapper-width); height: 1px; background-color: var(--highlighter-background-color); /* Position at bottom of first gauge in sticky header. */ position: absolute; grid-column: 1; bottom: -1px; left: 0px; right: 0px; } `),e.append(t);let n=o.createElement("div","lh-scores-wrapper"),r=o.createElement("div","lh-scores-container"),i=o.createElement("div","lh-pyro"),a=o.createElement("div","lh-pyro-before"),l=o.createElement("div","lh-pyro-after");return i.append(" ",a," ",l," "),r.append(" ",i," "),n.append(" ",r," "),e.append(n),e}function it(o){let e=o.createFragment(),t=o.createElement("div","lh-snippet"),n=o.createElement("style");return n.append(` :root { --snippet-highlight-light: #fbf1f2; --snippet-highlight-dark: #ffd6d8; } .lh-snippet__header { position: relative; overflow: hidden; padding: 10px; border-bottom: none; color: var(--snippet-color); background-color: var(--snippet-background-color); border: 1px solid var(--report-border-color-secondary); } .lh-snippet__title { font-weight: bold; float: left; } .lh-snippet__node { float: left; margin-left: 4px; } .lh-snippet__toggle-expand { padding: 1px 7px; margin-top: -1px; margin-right: -7px; float: right; background: transparent; border: none; cursor: pointer; font-size: 14px; color: #0c50c7; } .lh-snippet__snippet { overflow: auto; border: 1px solid var(--report-border-color-secondary); } /* Container needed so that all children grow to the width of the scroll container */ .lh-snippet__snippet-inner { display: inline-block; min-width: 100%; } .lh-snippet:not(.lh-snippet--expanded) .lh-snippet__show-if-expanded { display: none; } .lh-snippet.lh-snippet--expanded .lh-snippet__show-if-collapsed { display: none; } .lh-snippet__line { background: white; white-space: pre; display: flex; } .lh-snippet__line:not(.lh-snippet__line--message):first-child { padding-top: 4px; } .lh-snippet__line:not(.lh-snippet__line--message):last-child { padding-bottom: 4px; } .lh-snippet__line--content-highlighted { background: var(--snippet-highlight-dark); } .lh-snippet__line--message { background: var(--snippet-highlight-light); } .lh-snippet__line--message .lh-snippet__line-number { padding-top: 10px; padding-bottom: 10px; } .lh-snippet__line--message code { padding: 10px; padding-left: 5px; color: var(--color-fail); font-family: var(--report-font-family); } .lh-snippet__line--message code { white-space: normal; } .lh-snippet__line-icon { padding-top: 10px; display: none; } .lh-snippet__line--message .lh-snippet__line-icon { display: block; } .lh-snippet__line-icon:before { content: ""; display: inline-block; vertical-align: middle; margin-right: 4px; width: var(--score-icon-size); height: var(--score-icon-size); background-image: var(--fail-icon-url); } .lh-snippet__line-number { flex-shrink: 0; width: 40px; text-align: right; font-family: monospace; padding-right: 5px; margin-right: 5px; color: var(--color-gray-600); user-select: none; } `),t.append(" ",n," "),e.append(t),e}function at(o){let e=o.createFragment(),t=o.createElement("div","lh-snippet__snippet"),n=o.createElement("div","lh-snippet__snippet-inner");return t.append(" ",n," "),e.append(t),e}function lt(o){let e=o.createFragment(),t=o.createElement("div","lh-snippet__header"),n=o.createElement("div","lh-snippet__title"),r=o.createElement("div","lh-snippet__node"),i=o.createElement("button","lh-snippet__toggle-expand"),a=o.createElement("span","lh-snippet__btn-label-collapse lh-snippet__show-if-expanded"),l=o.createElement("span","lh-snippet__btn-label-expand lh-snippet__show-if-collapsed");return i.append(" ",a," ",l," "),t.append(" ",n," ",r," ",i," "),e.append(t),e}function st(o){let e=o.createFragment(),t=o.createElement("div","lh-snippet__line"),n=o.createElement("div","lh-snippet__line-number"),r=o.createElement("div","lh-snippet__line-icon"),i=o.createElement("code");return t.append(" ",n," ",r," ",i," "),e.append(t),e}function ct(o){let e=o.createFragment(),t=o.createElement("style");return t.append(`/** * @license * Copyright 2017 Google LLC * SPDX-License-Identifier: Apache-2.0 */ /* Naming convention: If a variable is used for a specific component: --{component}-{property name}-{modifier} Both {component} and {property name} should be kebab-case. If the target is the entire page, use 'report' for the component. The property name should not be abbreviated. Use the property name the variable is intended for - if it's used for multiple, a common descriptor is fine (ex: 'size' for a variable applied to 'width' and 'height'). If a variable is shared across multiple components, either create more variables or just drop the "{component}-" part of the name. Append any modifiers at the end (ex: 'big', 'dark'). For colors: --color-{hue}-{intensity} {intensity} is the Material Design tag - 700, A700, etc. */ .lh-vars { /* Palette using Material Design Colors * https://www.materialui.co/colors */ --color-amber-50: #FFF8E1; --color-blue-200: #90CAF9; --color-blue-900: #0D47A1; --color-blue-A700: #2962FF; --color-blue-primary: #06f; --color-cyan-500: #00BCD4; --color-gray-100: #F5F5F5; --color-gray-300: #CFCFCF; --color-gray-200: #E0E0E0; --color-gray-400: #BDBDBD; --color-gray-50: #FAFAFA; --color-gray-500: #9E9E9E; --color-gray-600: #757575; --color-gray-700: #616161; --color-gray-800: #424242; --color-gray-900: #212121; --color-gray: #000000; --color-green-700: #080; --color-green: #0c6; --color-lime-400: #D3E156; --color-orange-50: #FFF3E0; --color-orange-700: #C33300; --color-orange: #fa3; --color-red-700: #c00; --color-red: #f33; --color-teal-600: #00897B; --color-white: #FFFFFF; /* Context-specific colors */ --color-average-secondary: var(--color-orange-700); --color-average: var(--color-orange); --color-fail-secondary: var(--color-red-700); --color-fail: var(--color-red); --color-hover: var(--color-gray-50); --color-informative: var(--color-blue-900); --color-pass-secondary: var(--color-green-700); --color-pass: var(--color-green); --color-not-applicable: var(--color-gray-600); /* Component variables */ --audit-description-padding-left: calc(var(--score-icon-size) + var(--score-icon-margin-left) + var(--score-icon-margin-right)); --audit-explanation-line-height: 16px; --audit-group-margin-bottom: calc(var(--default-padding) * 6); --audit-group-padding-vertical: 8px; --audit-margin-horizontal: 5px; --audit-padding-vertical: 8px; --category-padding: calc(var(--default-padding) * 6) var(--edge-gap-padding) calc(var(--default-padding) * 4); --chevron-line-stroke: var(--color-gray-600); --chevron-size: 12px; --default-padding: 8px; --edge-gap-padding: calc(var(--default-padding) * 4); --env-item-background-color: var(--color-gray-100); --env-item-font-size: 28px; --env-item-line-height: 36px; --env-item-padding: 10px 0px; --env-name-min-width: 220px; --footer-padding-vertical: 16px; --gauge-circle-size-big: 96px; --gauge-circle-size: 48px; --gauge-circle-size-sm: 32px; --gauge-label-font-size-big: 18px; --gauge-label-font-size: var(--report-font-size-secondary); --gauge-label-line-height-big: 24px; --gauge-label-line-height: var(--report-line-height-secondary); --gauge-percentage-font-size-big: 38px; --gauge-percentage-font-size: var(--report-font-size-secondary); --gauge-wrapper-width: 120px; --header-line-height: 24px; --highlighter-background-color: var(--report-text-color); --icon-square-size: calc(var(--score-icon-size) * 0.88); --image-preview-size: 48px; --link-color: var(--color-blue-primary); --locale-selector-background-color: var(--color-white); --metric-toggle-lines-fill: #7F7F7F; --metric-value-font-size: calc(var(--report-font-size) * 1.8); --metrics-toggle-background-color: var(--color-gray-200); --plugin-badge-background-color: var(--color-white); --plugin-badge-size-big: calc(var(--gauge-circle-size-big) / 2.7); --plugin-badge-size: calc(var(--gauge-circle-size) / 2.7); --plugin-icon-size: 65%; --report-background-color: #fff; --report-border-color-secondary: #ebebeb; --report-font-family-monospace: monospace, 'Roboto Mono', 'Menlo', 'dejavu sans mono', 'Consolas', 'Lucida Console'; --report-font-family: system-ui, Roboto, Helvetica, Arial, sans-serif; --report-font-size: 14px; --report-font-size-secondary: 12px; --report-icon-size: var(--score-icon-background-size); --report-line-height: 24px; --report-line-height-secondary: 20px; --report-monospace-font-size: calc(var(--report-font-size) * 0.85); --report-text-color-secondary: var(--color-gray-800); --report-text-color: var(--color-gray-900); --report-content-max-width: calc(60 * var(--report-font-size)); /* defaults to 840px */ --report-content-min-width: 360px; --report-content-max-width-minus-edge-gap: calc(var(--report-content-max-width) - var(--edge-gap-padding) * 2); --score-container-padding: 8px; --score-icon-background-size: 24px; --score-icon-margin-left: 6px; --score-icon-margin-right: 14px; --score-icon-margin: 0 var(--score-icon-margin-right) 0 var(--score-icon-margin-left); --score-icon-size: 12px; --score-icon-size-big: 16px; --screenshot-overlay-background: rgba(0, 0, 0, 0.3); --section-padding-vertical: calc(var(--default-padding) * 6); --snippet-background-color: var(--color-gray-50); --snippet-color: #0938C2; --stackpack-padding-horizontal: 10px; --sticky-header-background-color: var(--report-background-color); --sticky-header-buffer: var(--topbar-height); --sticky-header-height: calc(var(--gauge-circle-size-sm) + var(--score-container-padding) * 2 + 1em); --table-group-header-background-color: #EEF1F4; --table-group-header-text-color: var(--color-gray-700); --table-higlight-background-color: #F5F7FA; --tools-icon-color: var(--color-gray-600); --topbar-background-color: var(--color-white); --topbar-height: 32px; --topbar-logo-size: 24px; --topbar-padding: 0 8px; --toplevel-warning-background-color: hsla(30, 100%, 75%, 10%); --toplevel-warning-message-text-color: var(--color-average-secondary); --toplevel-warning-padding: 18px; --toplevel-warning-text-color: var(--report-text-color); /* SVGs */ --plugin-icon-url-dark: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" viewBox="0 0 24 24" fill="%23FFFFFF"><path d="M0 0h24v24H0z" fill="none"/><path d="M20.5 11H19V7c0-1.1-.9-2-2-2h-4V3.5C13 2.12 11.88 1 10.5 1S8 2.12 8 3.5V5H4c-1.1 0-1.99.9-1.99 2v3.8H3.5c1.49 0 2.7 1.21 2.7 2.7s-1.21 2.7-2.7 2.7H2V20c0 1.1.9 2 2 2h3.8v-1.5c0-1.49 1.21-2.7 2.7-2.7 1.49 0 2.7 1.21 2.7 2.7V22H17c1.1 0 2-.9 2-2v-4h1.5c1.38 0 2.5-1.12 2.5-2.5S21.88 11 20.5 11z"/></svg>'); --plugin-icon-url: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" viewBox="0 0 24 24" fill="%23757575"><path d="M0 0h24v24H0z" fill="none"/><path d="M20.5 11H19V7c0-1.1-.9-2-2-2h-4V3.5C13 2.12 11.88 1 10.5 1S8 2.12 8 3.5V5H4c-1.1 0-1.99.9-1.99 2v3.8H3.5c1.49 0 2.7 1.21 2.7 2.7s-1.21 2.7-2.7 2.7H2V20c0 1.1.9 2 2 2h3.8v-1.5c0-1.49 1.21-2.7 2.7-2.7 1.49 0 2.7 1.21 2.7 2.7V22H17c1.1 0 2-.9 2-2v-4h1.5c1.38 0 2.5-1.12 2.5-2.5S21.88 11 20.5 11z"/></svg>'); --pass-icon-url: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><title>check</title><path fill="%23178239" d="M24 4C12.95 4 4 12.95 4 24c0 11.04 8.95 20 20 20 11.04 0 20-8.96 20-20 0-11.05-8.96-20-20-20zm-4 30L10 24l2.83-2.83L20 28.34l15.17-15.17L38 16 20 34z"/></svg>'); --average-icon-url: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><title>info</title><path fill="%23E67700" d="M24 4C12.95 4 4 12.95 4 24s8.95 20 20 20 20-8.95 20-20S35.05 4 24 4zm2 30h-4V22h4v12zm0-16h-4v-4h4v4z"/></svg>'); --fail-icon-url: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><title>warn</title><path fill="%23C7221F" d="M2 42h44L24 4 2 42zm24-6h-4v-4h4v4zm0-8h-4v-8h4v8z"/></svg>'); --error-icon-url: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 3 15"><title>error</title><path d="M0 15H 3V 12H 0V" fill="%23FF4E42"/><path d="M0 9H 3V 0H 0V" fill="%23FF4E42"/></svg>'); --swap-locale-icon-url: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="%23000000"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"/></svg>'); } @media not print { .lh-dark { /* Pallete */ --color-gray-200: var(--color-gray-800); --color-gray-300: #616161; --color-gray-400: var(--color-gray-600); --color-gray-700: var(--color-gray-400); --color-gray-50: #757575; --color-gray-600: var(--color-gray-500); --color-green-700: var(--color-green); --color-orange-700: var(--color-orange); --color-red-700: var(--color-red); --color-teal-600: var(--color-cyan-500); /* Context-specific colors */ --color-hover: rgba(0, 0, 0, 0.2); --color-informative: var(--color-blue-200); /* Component variables */ --env-item-background-color: #393535; --link-color: var(--color-blue-200); --locale-selector-background-color: var(--color-gray-200); --plugin-badge-background-color: var(--color-gray-800); --report-background-color: var(--color-gray-900); --report-border-color-secondary: var(--color-gray-200); --report-text-color-secondary: var(--color-gray-400); --report-text-color: var(--color-gray-100); --snippet-color: var(--color-cyan-500); --topbar-background-color: var(--color-gray); --toplevel-warning-background-color: hsl(33deg 14% 18%); --toplevel-warning-message-text-color: var(--color-orange-700); --toplevel-warning-text-color: var(--color-gray-100); --table-group-header-background-color: rgba(186, 196, 206, 0.15); --table-group-header-text-color: var(--color-gray-100); --table-higlight-background-color: rgba(186, 196, 206, 0.09); /* SVGs */ --plugin-icon-url: var(--plugin-icon-url-dark); } } /** * This media query is a temporary fallback for browsers that do not support \`@container query\`. * TODO: remove this media query when \`@container query\` is fully supported by browsers * See https://github.com/GoogleChrome/lighthouse/pull/16332 */ @media only screen and (max-width: 480px) { .lh-vars { --audit-group-margin-bottom: 20px; --edge-gap-padding: var(--default-padding); --env-name-min-width: 120px; --gauge-circle-size-big: 96px; --gauge-circle-size: 72px; --gauge-label-font-size-big: 22px; --gauge-label-font-size: 14px; --gauge-label-line-height-big: 26px; --gauge-label-line-height: 20px; --gauge-percentage-font-size-big: 34px; --gauge-percentage-font-size: 26px; --gauge-wrapper-width: 112px; --header-padding: 16px 0 16px 0; --image-preview-size: 24px; --plugin-icon-size: 75%; --report-font-size: 14px; --report-line-height: 20px; --score-icon-margin-left: 2px; --score-icon-size: 10px; --topbar-height: 28px; --topbar-logo-size: 20px; } } @container lh-container (max-width: 480px) { .lh-vars { --audit-group-margin-bottom: 20px; --edge-gap-padding: var(--default-padding); --env-name-min-width: 120px; --gauge-circle-size-big: 96px; --gauge-circle-size: 72px; --gauge-label-font-size-big: 22px; --gauge-label-font-size: 14px; --gauge-label-line-height-big: 26px; --gauge-label-line-height: 20px; --gauge-percentage-font-size-big: 34px; --gauge-percentage-font-size: 26px; --gauge-wrapper-width: 112px; --header-padding: 16px 0 16px 0; --image-preview-size: 24px; --plugin-icon-size: 75%; --report-font-size: 14px; --report-line-height: 20px; --score-icon-margin-left: 2px; --score-icon-size: 10px; --topbar-height: 28px; --topbar-logo-size: 20px; } } .lh-vars.lh-devtools { --audit-explanation-line-height: 14px; --audit-group-margin-bottom: 20px; --audit-group-padding-vertical: 12px; --audit-padding-vertical: 4px; --category-padding: 12px; --default-padding: 12px; --env-name-min-width: 120px; --footer-padding-vertical: 8px; --gauge-circle-size-big: 72px; --gauge-circle-size: 64px; --gauge-label-font-size-big: 22px; --gauge-label-font-size: 14px; --gauge-label-line-height-big: 26px; --gauge-label-line-height: 20px; --gauge-percentage-font-size-big: 34px; --gauge-percentage-font-size: 26px; --gauge-wrapper-width: 97px; --header-line-height: 20px; --header-padding: 16px 0 16px 0; --screenshot-overlay-background: transparent; --plugin-icon-size: 75%; --report-font-size: 12px; --report-line-height: 20px; --score-icon-margin-left: 2px; --score-icon-size: 10px; --section-padding-vertical: 8px; } .lh-container:has(.lh-sticky-header) { --sticky-header-buffer: calc(var(--topbar-height) + var(--sticky-header-height)); } .lh-container:not(.lh-topbar + .lh-container) { --topbar-height: 0; --sticky-header-height: 0; --sticky-header-buffer: 0; } .lh-max-viewport { display: flex; flex-direction: column; min-height: 100vh; width: 100%; } .lh-devtools.lh-root { height: 100%; } .lh-devtools.lh-root img { /* Override devtools default 'min-width: 0' so svg without size in a flexbox isn't collapsed. */ min-width: auto; } .lh-devtools .lh-container { overflow-y: scroll; height: calc(100% - var(--topbar-height)); /** The .lh-container is the scroll parent in DevTools so we exclude the topbar from the sticky header buffer. */ --sticky-header-buffer: 0; } .lh-devtools .lh-container:has(.lh-sticky-header) { /** The .lh-container is the scroll parent in DevTools so we exclude the topbar from the sticky header buffer. */ --sticky-header-buffer: var(--sticky-header-height); } @media print { .lh-devtools .lh-container { overflow: unset; } } .lh-devtools .lh-sticky-header { /* This is normally the height of the topbar, but we want it to stick to the top of our scroll container .lh-container\` */ top: 0; } .lh-devtools .lh-element-screenshot__overlay { position: absolute; } @keyframes fadeIn { 0% { opacity: 0;} 100% { opacity: 0.6;} } .lh-root *, .lh-root *::before, .lh-root *::after { box-sizing: border-box; } .lh-root { font-family: var(--report-font-family); font-size: var(--report-font-size); margin: 0; line-height: var(--report-line-height); background: var(--report-background-color); color: var(--report-text-color); } .lh-root [hidden] { display: none !important; } .lh-root pre { margin: 0; } .lh-root pre, .lh-root code { font-family: var(--report-font-family-monospace); } .lh-root details > summary { cursor: pointer; } .lh-hidden { display: none !important; } .lh-container { /* Text wrapping in the report is so much FUN! We have a \`word-break: break-word;\` globally here to prevent a few common scenarios, namely long non-breakable text (usually URLs) found in: 1. The footer 2. .lh-node (outerHTML) 3. .lh-code With that sorted, the next challenge is appropriate column sizing and text wrapping inside our .lh-details tables. Even more fun. * We don't want table headers ("Est Savings (ms)") to wrap or their column values, but we'd be happy for the URL column to wrap if the URLs are particularly long. * We want the narrow columns to remain narrow, providing the most column width for URL * We don't want the table to extend past 100% width. * Long URLs in the URL column can wrap. Util.getURLDisplayName maxes them out at 64 characters, but they do not get any overflow:ellipsis treatment. */ word-break: break-word; container-name: lh-container; container-type: inline-size; } .lh-audit-group a, .lh-category-header__description a, .lh-audit__description a, .lh-warnings a, .lh-footer a, .lh-table-column--link a { color: var(--link-color); } .lh-audit__description, .lh-audit__stackpack, .lh-list-section__description { --inner-audit-padding-right: var(--stackpack-padding-horizontal); padding-left: var(--audit-description-padding-left); padding-right: var(--inner-audit-padding-right); padding-top: 8px; padding-bottom: 8px; } .lh-details { margin-top: var(--default-padding); margin-bottom: var(--default-padding); margin-left: var(--audit-description-padding-left); } .lh-audit__stackpack { display: flex; align-items: center; } .lh-audit__stackpack__img { max-width: 30px; margin-right: var(--default-padding) } /* Report header */ .lh-report-icon { display: flex; align-items: center; padding: 10px 12px; cursor: pointer; } .lh-report-icon[disabled] { opacity: 0.3; pointer-events: none; } .lh-report-icon::before { content: ""; margin: 4px; background-repeat: no-repeat; width: var(--report-icon-size); height: var(--report-icon-size); opacity: 0.7; display: inline-block; vertical-align: middle; } .lh-report-icon:hover::before { opacity: 1; } .lh-dark .lh-report-icon::before { filter: invert(1); } .lh-report-icon--print::before { background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M19 8H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zm-3 11H8v-5h8v5zm3-7c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm-1-9H6v4h12V3z"/><path fill="none" d="M0 0h24v24H0z"/></svg>'); } .lh-report-icon--copy::before { background-image: url('data:image/svg+xml;utf8,<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h24v24H0z" fill="none"/><path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/></svg>'); } .lh-report-icon--open::before { background-image: url('data:image/svg+xml;utf8,<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h24v24H0z" fill="none"/><path d="M19 4H5c-1.11 0-2 .9-2 2v12c0 1.1.89 2 2 2h4v-2H5V8h14v10h-4v2h4c1.1 0 2-.9 2-2V6c0-1.1-.89-2-2-2zm-7 6l-4 4h3v6h2v-6h3l-4-4z"/></svg>'); } .lh-report-icon--download::before { background-image: url('data:image/svg+xml;utf8,<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z"/><path d="M0 0h24v24H0z" fill="none"/></svg>'); } .lh-report-icon--dark::before { background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 100 125"><path d="M50 23.587c-16.27 0-22.799 12.574-22.799 21.417 0 12.917 10.117 22.451 12.436 32.471h20.726c2.32-10.02 12.436-19.554 12.436-32.471 0-8.843-6.528-21.417-22.799-21.417zM39.637 87.161c0 3.001 1.18 4.181 4.181 4.181h.426l.41 1.231C45.278 94.449 46.042 95 48.019 95h3.963c1.978 0 2.74-.551 3.365-2.427l.409-1.231h.427c3.002 0 4.18-1.18 4.18-4.181V80.91H39.637v6.251zM50 18.265c1.26 0 2.072-.814 2.072-2.073v-9.12C52.072 5.813 51.26 5 50 5c-1.259 0-2.072.813-2.072 2.073v9.12c0 1.259.813 2.072 2.072 2.072zM68.313 23.727c.994.774 2.135.634 2.91-.357l5.614-7.187c.776-.992.636-2.135-.356-2.909-.992-.776-2.135-.636-2.91.357l-5.613 7.186c-.778.993-.636 2.135.355 2.91zM91.157 36.373c-.306-1.222-1.291-1.815-2.513-1.51l-8.85 2.207c-1.222.305-1.814 1.29-1.51 2.512.305 1.223 1.291 1.814 2.513 1.51l8.849-2.206c1.223-.305 1.816-1.291 1.511-2.513zM86.757 60.48l-8.331-3.709c-1.15-.512-2.225-.099-2.736 1.052-.512 1.151-.1 2.224 1.051 2.737l8.33 3.707c1.15.514 2.225.101 2.736-1.05.513-1.149.1-2.223-1.05-2.737zM28.779 23.37c.775.992 1.917 1.131 2.909.357.992-.776 1.132-1.917.357-2.91l-5.615-7.186c-.775-.992-1.917-1.132-2.909-.357s-1.131 1.917-.356 2.909l5.614 7.187zM21.715 39.583c.305-1.223-.288-2.208-1.51-2.513l-8.849-2.207c-1.222-.303-2.208.289-2.513 1.511-.303 1.222.288 2.207 1.511 2.512l8.848 2.206c1.222.304 2.208-.287 2.513-1.509zM21.575 56.771l-8.331 3.711c-1.151.511-1.563 1.586-1.05 2.735.511 1.151 1.586 1.563 2.736 1.052l8.331-3.711c1.151-.511 1.563-1.586 1.05-2.735-.512-1.15-1.585-1.562-2.736-1.052z"/></svg>'); } .lh-report-icon--treemap::before { background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="black"><path d="M3 5v14h19V5H3zm2 2h15v4H5V7zm0 10v-4h4v4H5zm6 0v-4h9v4h-9z"/></svg>'); } .lh-report-icon--date::before { background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M7 11h2v2H7v-2zm14-5v14a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h1V2h2v2h8V2h2v2h1a2 2 0 012 2zM5 8h14V6H5v2zm14 12V10H5v10h14zm-4-7h2v-2h-2v2zm-4 0h2v-2h-2v2z"/></svg>'); } .lh-report-icon--devices::before { background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 6h18V4H4a2 2 0 00-2 2v11H0v3h14v-3H4V6zm19 2h-6a1 1 0 00-1 1v10c0 .6.5 1 1 1h6c.6 0 1-.5 1-1V9c0-.6-.5-1-1-1zm-1 9h-4v-7h4v7z"/></svg>'); } .lh-report-icon--world::before { background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm7 6h-3c-.3-1.3-.8-2.5-1.4-3.6A8 8 0 0 1 18.9 8zm-7-4a14 14 0 0 1 2 4h-4a14 14 0 0 1 2-4zM4.3 14a8.2 8.2 0 0 1 0-4h3.3a16.5 16.5 0 0 0 0 4H4.3zm.8 2h3a14 14 0 0 0 1.3 3.6A8 8 0 0 1 5.1 16zm3-8H5a8 8 0 0 1 4.3-3.6L8 8zM12 20a14 14 0 0 1-2-4h4a14 14 0 0 1-2 4zm2.3-6H9.7a14.7 14.7 0 0 1 0-4h4.6a14.6 14.6 0 0 1 0 4zm.3 5.6c.6-1.2 1-2.4 1.4-3.6h3a8 8 0 0 1-4.4 3.6zm1.8-5.6a16.5 16.5 0 0 0 0-4h3.3a8.2 8.2 0 0 1 0 4h-3.3z"/></svg>'); } .lh-report-icon--stopwatch::before { background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M15 1H9v2h6V1zm-4 13h2V8h-2v6zm8.1-6.6L20.5 6l-1.4-1.4L17.7 6A9 9 0 0 0 3 13a9 9 0 1 0 16-5.6zm-7 12.6a7 7 0 1 1 0-14 7 7 0 0 1 0 14z"/></svg>'); } .lh-report-icon--networkspeed::before { background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M15.9 5c-.2 0-.3 0-.4.2v.2L10.1 17a2 2 0 0 0-.2 1 2 2 0 0 0 4 .4l2.4-12.9c0-.3-.2-.5-.5-.5zM1 9l2 2c2.9-2.9 6.8-4 10.5-3.6l1.2-2.7C10 3.8 4.7 5.3 1 9zm20 2 2-2a15.4 15.4 0 0 0-5.6-3.6L17 8.2c1.5.7 2.9 1.6 4.1 2.8zm-4 4 2-2a9.9 9.9 0 0 0-2.7-1.9l-.5 3 1.2.9zM5 13l2 2a7.1 7.1 0 0 1 4-2l1.3-2.9C9.7 10.1 7 11 5 13z"/></svg>'); } .lh-report-icon--samples-one::before { background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><circle cx="7" cy="14" r="3"/><path d="M7 18a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm4-2a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm5.6 17.6a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/></svg>'); } .lh-report-icon--samples-many::before { background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M7 18a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm4-2a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm5.6 17.6a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/><circle cx="7" cy="14" r="3"/><circle cx="11" cy="6" r="3"/></svg>'); } .lh-report-icon--chrome::before { background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="-50 -50 562 562"><path d="M256 25.6v25.6a204 204 0 0 1 144.8 60 204 204 0 0 1 60 144.8 204 204 0 0 1-60 144.8 204 204 0 0 1-144.8 60 204 204 0 0 1-144.8-60 204 204 0 0 1-60-144.8 204 204 0 0 1 60-144.8 204 204 0 0 1 144.8-60V0a256 256 0 1 0 0 512 256 256 0 0 0 0-512v25.6z"/><path d="M256 179.2v25.6a51.3 51.3 0 0 1 0 102.4 51.3 51.3 0 0 1 0-102.4v-51.2a102.3 102.3 0 1 0-.1 204.7 102.3 102.3 0 0 0 .1-204.7v25.6z"/><path d="M256 204.8h217.6a25.6 25.6 0 0 0 0-51.2H256a25.6 25.6 0 0 0 0 51.2m44.3 76.8L191.5 470.1a25.6 25.6 0 1 0 44.4 25.6l108.8-188.5a25.6 25.6 0 1 0-44.4-25.6m-88.6 0L102.9 93.2a25.7 25.7 0 0 0-35-9.4 25.7 25.7 0 0 0-9.4 35l108.8 188.5a25.7 25.7 0 0 0 35 9.4 25.9 25.9 0 0 0 9.4-35.1"/></svg>'); } .lh-report-icon--external::before { background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg"><path d="M3.15 11.9a1.01 1.01 0 0 1-.743-.307 1.01 1.