1<!DOCTYPE html> 2<html lang="en"> 3 <head> 4 <meta charset="utf-8" /> 5 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=yes" /> 6 <meta name="theme-color" content="#000000" /> 7 <link rel="icon" href="/favicon.ico" /> 8 <link rel="apple-touch-icon" href="/apple-touch-icon.png" /> 9 <title>Zenlytic</title> 10 <!-- Immediately apply cached customizations from localStorage --> 11
11<script> 12 (function () { 13 try { 14 const cached = localStorage.getItem('zenlytic_site_customization'); 15 if (!cached) return; 16 17 const customization = JSON.parse(cached); 18 19 // Helper function to update or create a link element 20 function updateOrCreateLink(selector, rel, href) { 21 let link = document.querySelector(selector); 22 if (!link) { 23 link = document.createElement('link'); 24 link.rel = rel; 25 document.head.appendChild(link); 26 } 27 link.href = href; 28 } 29 30 // Helper function to create meta tag 31 function createMetaTag(name, content) { 32 const meta = document.createElement('meta'); 33 meta.setAttribute('name', name); 34 meta.setAttribute('content', content); 35 document.head.appendChild(meta); 36 } 37 38 // Apply cached customizations immediately 39 if (customization.pageTitle) { 40 document.title = customization.pageTitle; 41 } 42 43 if (customization.favicon) { 44 updateOrCreateLink('link[rel="icon"]', 'icon', customization.favicon); 45 } 46 47 if (customization.description) { 48 createMetaTag('description', customization.description); 49 } 50 51 if (customization.appleTouchIcon) { 52 updateOrCreateLink( 53 'link[rel="apple-touch-icon"]', 54 'apple-touch-icon', 55 customization.appleTouchIcon 56 ); 57 } 58 } catch (e) { 59 // Silently fail if localStorage is not available or corrupted 60 console.warn('Failed to load cached site customization:', e); 61 } 62 })(); 63 </script>
63 64 65 <!-- This is needed because Vite doesn't set global automatically, without it things like Chakra will not have global styles --> 66
66<script> 67 window.global = window; 68 </script>
68 69 70 <!-- Runtime configuration - must load before analytics scripts --> 71 <!-- This file should be provided by customers with their specific configuration or should rely on Zenlytic's default specifications. --> 72
72<script src="/env.js"></script>
72 73 74 <!-- Google Tag Manager - disabled in VPC (no public internet) --> 75
75<script> 76 if (window.__RUNTIME_CONFIG__?.DEPLOYMENT_TYPE !== 'customer_vpc') {
vendor: 475 bytes, lines 76-86
76 77 (function (w, d, s, l, i) { 78 w[l] = w[l] || []; 79 w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' }); 80 var f = d.getElementsByTagName(s)[0], 81 j = d.createElement(s), 82 dl = l != 'dataLayer' ? '&l=' + l : ''; 83 j.async = true; 84 j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; 85 f.parentNode.insertBefore(j, f); 86 })(window, document, 'script', 'dataLayer', '
86GTM-TNM5SWM
vendor: 10 bytes, lines 86-87
86'); 87
87} 88 </script>
88 89 <!-- End Google Tag Manager --> 90 <!-- Load segment - disabled in VPC (no public internet) --> 91
91<script> 92 if (window.__RUNTIME_CONFIG__?.DEPLOYMENT_TYPE !== 'customer_vpc') { 93 !(function () { 94 var i = 'analytics', 95 analytics = (window[i] = window[i] || []); 96 if (!analytics.initialize) 97 if (analytics.invoked) 98 window.console && 99 console.error && 100 console.error('Segment snippet included twice.'); 101 else { 102 analytics.invoked = !0; 103 analytics.methods = [ 104 'trackSubmit', 105 'trackClick', 106 'trackLink', 107 'trackForm', 108 'pageview', 109 'identify', 110 'reset', 111 'group', 112 'track', 113 'ready', 114 'alias', 115 'debug', 116 'page', 117 'screen', 118 'once', 119 'off', 120 'on', 121 'addSourceMiddleware', 122 'addIntegrationMiddleware', 123 'setAnonymousId', 124 'addDestinationMiddleware', 125 'register', 126 ]; 127 analytics.factory = function (e) { 128 return function () { 129 if (window[i].initialized) return window[i][e].apply(window[i], arguments); 130 var n = Array.prototype.slice.call(arguments); 131 if ( 132 ['track', 'screen', 'alias', 'group', 'page', 'identify'].indexOf(e) > -1 133 ) { 134 var c = document.querySelector("link[rel='canonical']"); 135 n.push({ 136 __t: 'bpc', 137 c: (c && c.getAttribute('href')) || void 0, 138 p: location.pathname, 139 u: location.href, 140 s: location.search, 141 t: document.title, 142 r: document.referrer, 143 }); 144 } 145 n.unshift(e); 146 analytics.push(n); 147 return analytics; 148 }; 149 }; 150 for (var n = 0; n < analytics.methods.length; n++) { 151 var key = analytics.methods[n]; 152 analytics[key] = analytics.factory(key); 153 } 154 analytics.load = function (key, n) { 155 var t = document.createElement('script'); 156 t.type = 'text/javascript'; 157 t.async = !0; 158 t.setAttribute('data-global-segment-analytics-key', i); 159 t.src = 'https://cdn.segment.com/analytics.js/v1/' + key + '/analytics.min.js'; 160 var r = document.getElementsByTagName('script')[0]; 161 r.parentNode.insertBefore(t, r); 162 analytics._loadOptions = n; 163 }; 164 var writeKey = 165 (window.__RUNTIME_CONFIG__ && window.__RUNTIME_CONFIG__.REACT_APP_SEGMENT_WRITE_KEY) || 166 ''; 167 // Guard against unsubstituted '%...%' placeholders from older builds so the 168 // snippet stays an in-memory queue (no-op) rather than 404-ing the SDK request. 169 if (writeKey && writeKey.indexOf('%') !== 0) { 170 analytics._writeKey = writeKey; 171 analytics.SNIPPET_VERSION = '5.2.0'; 172 analytics.load(writeKey); 173 } 174 // Page-view tracking is fired by useAutoPageView once the SPA mounts. 175 } 176 })(); 177 } 178 </script>
178 179 180 <!-- 181 manifest.json provides metadata used when your web app is installed on a 182 user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/ 183 --> 184 <link rel="manifest" href="/manifest.json" /> 185 186 <!-- Google Fonts - disabled in VPC (no public internet) --> 187
187<script> 188 if (window.__RUNTIME_CONFIG__?.DEPLOYMENT_TYPE !== 'customer_vpc') { 189 var link = document.createElement('link'); 190 link.rel = 'stylesheet'; 191 link.type = 'text/css'; 192 link.href = 'https://fonts.googleapis.com/css?family=Roboto|Montserrat|Avenir+Next'; 193 document.head.appendChild(link); 194 } 195 </script>
195 196 197 <!-- For google business indexing --> 198
198<script type="application/ld+json"> 199 { 200 "@context": "https://schema.org", 201 "@type": "Organization", 202 "url": "https://zenlytic.com", 203 "logo": "https://zenlytic.com/apple-touch-icon.png" 204 } 205 </script>
205 206 207 <!-- OpenAI Ads Manager Pixel - disabled in VPC (no public internet) --> 208
208<script> 209 if (window.__RUNTIME_CONFIG__?.DEPLOYMENT_TYPE !== 'customer_vpc') { 210 !function(w,d,s,u){if(w.oaiq)return;var q=function(){q.q.push(arguments)};q.q=[];w.oaiq=q;var f=d.createElement(s);f.async=!0;f.src=u;var n=d.getElementsByTagName(s)[0];n.parentNode.insertBefore(f,n)}(window,document,"script","https://cdn.openai.com/ads/oaiq.js"); 211 oaiq("setup", "SUcCkFtBtBADtuhsCSS8P1"); 212 } 213 </script>
213 214
214<script type="module" crossorigin src="/assets/index-Zws1LfcT.js"></script>
214 215 <link rel="modulepreload" crossorigin href="/assets/agGrid-npcJdf-k.js"> 216 <link rel="modulepreload" crossorigin href="/assets/monaco-CuRTR_TQ.js"> 217 <link rel="modulepreload" crossorigin href="/assets/chakra-mifYdLM0.js"> 218 <link rel="modulepreload" crossorigin href="/assets/react-gAL7j0sw.js"> 219 <link rel="modulepreload" crossorigin href="/assets/lodash-Cu2itTmt.js"> 220 <link rel="modulepreload" crossorigin href="/assets/moment-D9U7a-XX.js"> 221 <link rel="modulepreload" crossorigin href="/assets/vega-y9sDXgov.js"> 222 <link rel="modulepreload" crossorigin href="/assets/highlight-mHbfg4Jh.js"> 223 <link rel="modulepreload" crossorigin href="/assets/faker-D89R1nUL.js"> 224 <link rel="stylesheet" crossorigin href="/assets/monaco-TcA9sZdS.css"> 225 <link rel="stylesheet" crossorigin href="/assets/index-CcYXTtPb.css"> 226 </head> 227 228 <body style="overflow: hidden; background-color: white"> 229 <noscript>You need to enable JavaScript to run this app.</noscript> 230 <div id="root"></div> 231 232 </body> 233</html>
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.