1(function() { 2 function supportsCSSGrid() { 3 return typeof document.createElement("div").style.grid === "string"; 4 } 5 function supportsProxy() { 6 return "Proxy" in window; 7 } 8 function isBrowserVersionBelow({ name, version: version2, versionStartPosition = 1 }) { 9 const regex = new RegExp(`${name}/([0-9]+).`); 10 const match = navigator.userAgent.match(regex); 11 const identifiedVersion = match && match[versionStartPosition] && parseInt(match[versionStartPosition], 10); 12 return identifiedVersion && identifiedVersion < version2; 13 } 14 const isUnsupportedChrome = isBrowserVersionBelow({ 15 name: "Chrom(e|ium)", 16 version: 70, 17 versionStartPosition: 2 18 }); 19 const isUnsupportedFirefox = isBrowserVersionBelow({ 20 name: "Firefox", 21 version: 78 22 }); 23 const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); 24 const isUnsupportedSafari = isSafari && isBrowserVersionBelow({ 25 name: "Version", 26 version: 13 27 }); 28 const isBrowserSupported = supportsCSSGrid() && supportsProxy() && !isUnsupportedChrome && !isUnsupportedSafari && !isUnsupportedFirefox; 29 const path2 = window.location.pathname; 30 const notSupportedBrowsersPath = "/browser-not-supported"; 31 if (path2 !== notSupportedBrowsersPath && !isBrowserSupported) { 32 window.location.href = notSupportedBrowsersPath; 33 } else if (path2 === notSupportedBrowsersPath && isBrowserSupported) { 34 window.location.href = "/"; 35 } 36})()
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.