1<!doctype html> 2<html lang="en"> 3<head> 4<meta charset="utf-8"> 5 6<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 7 8<title>Supabase Pro Kit</title>
9<script type="text/javascript"> 10 window.bubble_session_uid = '1791015888291x752488622728941300'; 11</script>
vendor: 1 bytes, line 11
11
12<script type="text/javascript"> 13 window.headers_source_maps = [["plugin_main_headers_1497473108162x748255442121523200",217,218],["plugin_main_headers_1618916043803x877032991371296800",219,465],["plugin_main_headers_1661717622628x490300288223674400",466,473],["plugin_main_headers_1685954909750x760203255294197800",474,481],["plugin_main_headers_1687446439843x865924681433350100_current",482,488],["plugin_page_headers_AAD",489,491]] 14</script>
vendor: 1 bytes, line 14
14
15<script type="text/javascript"> 16function make_proxy(target, name) { 17 return new Proxy(target, { 18 get: function(target, prop) { 19 if (prop in target) { 20 return target[prop]; 21 } 22 throw new Error('The variable ' + name + ' is not fully initialized yet'); 23 } 24 }); 25} 26window.appquery = make_proxy({ 27 app_version: function() { return "live"; }, 28 last_change: function() { return "58086769689";}, 29}, 'appquery'); 30window.Lib = new Proxy(function() {}, { 31 get: function(target, prop) { 32 if (prop === 'is_skeleton') { 33 return true; 34 } 35 throw new Error('The variable ' + Lib + ' is not fully initialized yet'); 36 }, 37 apply: function() { 38 return make_proxy({ 39 current_user: function() { 40 return make_proxy({ id: "1791015888291x752488622728941300" }, 'Lib().current_user'); 41 } 42 }, 'Lib()'); 43 } 44}); 45</script>
vendor: 1 bytes, line 45
45
46<script type="text/javascript"> 47function load_error_function (event) { 48 return window.load_error_log.push({ msg: event.message, error_url: event.filename, line: event.lineno, col: event.colno }) 49} 50window.load_error_log = []; 51window.addEventListener('error', load_error_function); 52window.disableLoadErrorFunction = function () { 53 window.removeEventListener('error', load_error_function); 54} 55</script>
55 56<meta name="referrer" content="origin">
57<script type="text/javascript"> 58if (!window._bubble_page_load_data) { 59 window._bubble_page_load_data = {} 60} 61if (!window._bubble_page_load_data.js_execution_timings) { 62 window._bubble_page_load_data.js_execution_timings = {} 63} 64window._bubble_page_load_data.js_execution_timings['pre_early_js'] = Date.now(); 65</script>
65<script type="text/javascript" crossorigin="anonymous" charset="UTF-8" src="/package/early_js/05ae9fe83d6b755291132aab9d325d70918aafd336da1bd91a41a31c8b25734b/early.js"></script>
65<script type="text/javascript"> 66if (!window._bubble_page_load_data) { 67 window._bubble_page_load_data = {} 68} 69if (!window._bubble_page_load_data.js_execution_timings) { 70 window._bubble_page_load_data.js_execution_timings = {} 71} 72window._bubble_page_load_data.js_execution_timings['post_early_js'] = Date.now(); 73</script>
vendor: 1 bytes, line 73
73
74<script type="text/javascript">(function () { 75 function onWebFontFinish () { 76 window.google_web_fonts_active = true; 77if (window.google_web_fonts_active_cb) { 78 window.google_web_fonts_active_cb(); 79} 80 (function fontface_loaded_snippet (font) { 81 if (window.fontface_loaded == null) { 82 window.fontface_loaded = {} 83 } 84 if (font != null) { 85 window.fontface_loaded[font] = true 86 } else { 87 window.all_fontface_loaded = true 88 } 89 if (window.fontface_webfonts_loaded_cb) { 90 return window.fontface_webfonts_loaded_cb(font) 91 } 92})() 93 } 94 const WebFontConfig = {'google': { families: ["Inter:regular","Inter:500","Inter:600","Inter:700","Inter:800","Lato:regular","Lato:400","Lato:900","Lato:700","Open Sans:regular","Open Sans:500","Open Sans:600","Open Sans:700"] }, 95 active: function() { 96 onWebFontFinish() 97 }, 98 inactive: function() { 99 console.log('Failed to load all the fonts'); 100 onWebFontFinish() 101 }, 102 fontinactive: function(family_name, fvd) { 103 console.log('fontinactive being called for ' + family_name + ', Google says the fonts didnt render'); 104 onWebFontFinish() 105 } 106 } 107 window.WebFont.load(WebFontConfig); 108})();</script>
vendor: 1 bytes, line 108
108
109<script> 110(function initialize_data() { 111const xhr = new XMLHttpRequest(); 112xhr.onreadystatechange = function() { 113 if (this.readyState === 4 && this.status === 200) { 114 const data = JSON.parse(this.responseText); 115 116 function init_data() { 117 data.forEach(function(d) { 118 Lib().db_instance().initialize_data(d.id, d.data, d.type, d.version); 119 }) 120 } 121 122 if (window.Lib && window.Lib.is_skeleton == null) { 123 init_data(); 124 } else { 125 window.Lib_post_load = init_data; 126 } 127 } 128}; 129xhr.open("GET", "https://supabase-editor.bubbleapps.io/api/1.1/init/data?location=" + encodeURIComponent(window.location.href), true); 130xhr.send(); 131})(); 132</script>
vendor: 1 bytes, line 132
132
133<script type="text/javascript">window.gm_key = "AIzaSyBn3K88r3-FFQkFILuOvZPCaInjtGfdLG4";</script>
vendor: 1 bytes, line 133
133
134<script type="text/javascript">window.glrl_key_status = false;</script>
vendor: 1 bytes, line 134
134
135<script type="text/javascript">window.bubble_page_load_id = "1791015888331x1257";</script>
vendor: 1 bytes, line 135
135
136<script type="text/javascript">window.bubble_plp_token = "1791015888894.jYYE6I0218XEqmP7Ex1fuXow2MvL/ouOqtlnv9e4D0I=";</script>
vendor: 1 bytes, line 136
136
137<script type="text/javascript">window.bubble_is_leanjs = false;</script>
vendor: 1 bytes, line 137
137
138<script type="text/javascript">window.bubble_shim_modules = false;</script>
138 139<link rel="icon" type="image/png" href="https://78f8d3f59561a5591bfd1ffe7532073d.cdn.bubble.io/f1530294839424x143528842134401200/Icon-no-clearspace.png" /> 140<meta name="fragment" content="!"> 141<meta name="description" content="Bubble introduces a new way to build a web application. Itâs a point-and-click programming tool. Bubble hosts all applications on its cloud platform."> 142<meta name="description" content="Bubble introduces a new way to build a web application. Itâs a point-and-click programming tool. Bubble hosts all applications on its cloud platform."> 143<meta name="twitter:card" content="summary_large_image" /> 144<meta property="og:title" content="Check out my Bubble app" /> 145<meta name="twitter:title" content="Check out my Bubble app" /> 146<meta property="og:site_name" content="Bubble" /> 147<meta name="twitter:site_name" content="Bubble" /> 148<meta property="og:description" content="Bubble is the only platform that lets you switch between AI prompting and visual editing to go beyond prototypes and launch real apps â no code required. " /> 149<meta name="twitter:description" content="Bubble is the only platform that lets you switch between AI prompting and visual editing to go beyond prototypes and launch real apps â no code required. " /> 150<link rel="image_src" href="https://78f8d3f59561a5591bfd1ffe7532073d.cdn.bubble.io/f1762463484754x595287411041153000/Bubbleio%20opengraph.png" /> 151<meta property="og:image" content="https://78f8d3f59561a5591bfd1ffe7532073d.cdn.bubble.io/f1762463484754x595287411041153000/Bubbleio%20opengraph.png" /> 152<meta name="twitter:image:src" content="https://78f8d3f59561a5591bfd1ffe7532073d.cdn.bubble.io/f1762463484754x595287411041153000/Bubbleio%20opengraph.png" /> 153<meta property="og:url" content="https://supabase-editor.bubbleapps.io/" /> 154<meta property="og:type" content="website" /> 155<meta property="fb:app_id" content="340887986039814" /> 156<meta name="twitter:card" content="summary_large_image" /> 157<meta name="viewport" content="width=device-width,initial-scale=1.0">
158<script type="text/javascript">window._p = '{"id":"app_plugin_demo","no_branding":false,"import_export_csv":false,"custom_domain":false}';</script>
vendor: 1 bytes, line 158
158
159<script type="text/javascript">window.bubble_page_name = "index";</script>
vendor: 1 bytes, line 159
159
160<script type="text/javascript">window.__bubble_module_mode = false;</script>
160 161<link type="text/css" href="/package/run_css/a970c890582c05ba9c41b6da4ec3c83f91de016b1881fa0df751f068de10d722/supabase-editor/live/index/xfalse/xfalse/run.css" rel="stylesheet">
162<script type="text/javascript"> 163if (!window._bubble_page_load_data) { 164 window._bubble_page_load_data = {} 165} 166if (!window._bubble_page_load_data.js_execution_timings) { 167 window._bubble_page_load_data.js_execution_timings = {} 168} 169window._bubble_page_load_data.js_execution_timings['pre_run_js'] = Date.now(); 170</script>
vendor: 1 bytes, line 170
170
171<script type="text/javascript" crossorigin="anonymous" charset="UTF-8" src="/package/pre_run_jquery_js/dee903a9e36db713e4c86d0cdd96d921e37be0c1293ed8dee29e2e4d7713b9ff/pre_run_jquery.js"></script>
vendor: 1 bytes, line 171
171
172<script type="text/javascript" crossorigin="anonymous" charset="UTF-8" src="/package/run_js/7071f7b382ccc6d041103d870a4570d077555f03000bb5d6d4422cbe7bed9355/xfalse/x29/run.js"></script>
vendor: 1 bytes, line 172
172
173<script type="text/javascript"> 174if (!window._bubble_page_load_data) { 175 window._bubble_page_load_data = {} 176} 177if (!window._bubble_page_load_data.js_execution_timings) { 178 window._bubble_page_load_data.js_execution_timings = {} 179} 180window._bubble_page_load_data.js_execution_timings['post_run_js'] = Date.now(); 181</script>
vendor: 1 bytes, line 181
181
182<script type="text/javascript"> 183if (!window._bubble_page_load_data) { 184 window._bubble_page_load_data = {} 185} 186if (!window._bubble_page_load_data.js_execution_timings) { 187 window._bubble_page_load_data.js_execution_timings = {} 188} 189window._bubble_page_load_data.js_execution_timings['pre_static_js'] = Date.now(); 190</script>
190<script type="text/javascript" crossorigin="anonymous" charset="UTF-8" src="/package/static_js/a110fb4d9d1d537d5d068e5ee47a47c038a4b06faae64f2a364270ed1d363538/supabase-editor/live/index/xnull/xfalse/xfalse/xfalse/static.js"></script>
190<script type="text/javascript"> 191if (!window._bubble_page_load_data) { 192 window._bubble_page_load_data = {} 193} 194if (!window._bubble_page_load_data.js_execution_timings) { 195 window._bubble_page_load_data.js_execution_timings = {} 196} 197window._bubble_page_load_data.js_execution_timings['post_static_js'] = Date.now(); 198</script>
vendor: 1 bytes, line 198
198
199<script type="text/javascript"> 200if (!window._bubble_page_load_data) { 201 window._bubble_page_load_data = {} 202} 203if (!window._bubble_page_load_data.js_execution_timings) { 204 window._bubble_page_load_data.js_execution_timings = {} 205} 206window._bubble_page_load_data.js_execution_timings['pre_dynamic_js'] = Date.now(); 207</script>
207<script type="text/javascript" crossorigin="anonymous" charset="UTF-8" src="/package/dynamic_js/9a38c6e41f7680f9f4734d886b62c528e0771340b2e868e404fafb49ca44f236/supabase-editor/live/index/xnull/xfalse/xfalse/en_us/xfalse/xfalse/dynamic.js"></script>
207<script type="text/javascript"> 208if (!window._bubble_page_load_data) { 209 window._bubble_page_load_data = {} 210} 211if (!window._bubble_page_load_data.js_execution_timings) { 212 window._bubble_page_load_data.js_execution_timings = {} 213} 214window._bubble_page_load_data.js_execution_timings['post_dynamic_js'] = Date.now(); 215</script>
vendor: 1 bytes, line 215
215
216<script type="text/javascript">window._bubble_page_load_data.js_execution_timings.plugin_js_start_execution = Date.now();</script>
216 217<!-- 1497473108162x748255442121523200 -->
218<script type="text/javascript" src="//78f8d3f59561a5591bfd1ffe7532073d.cdn.bubble.io/f1618227041113x740068462949819800/clipboard.min.js"></script>
218 219<!-- 1618916043803x877032991371296800 -->
220<script defer src="//meta.cdn.bubble.io/f1678588430465x230578802325048350/icons.js"></script>
220 221
222<script> 223 const allSelect2 = /\[(hi.*)\](.*)\[\/(hi.*)\]/; 224 const colormatch2 = /#[0-9A-f]{3,6}#/; 225 const fillMatcher2 = /fill="currentColor"/; 226 227 function replaceIcon(btn) { 228 const btn_nodes = Array.from(btn.childNodes); 229 230 if (!btn_nodes) return; 231 232 const text_node = btn_nodes.find( 233 (node) => node.nodeName === "#text" && node.data.trim().length > 0 234 ); 235 236 if (!text_node) return; 237 238 let content = text_node.data; 239 240 let iconColor = content.match(colormatch2); 241 242 content = content.replace(colormatch2, ""); 243 244 const iconMarkup = content.match(allSelect2); 245 if (!iconMarkup) { 246 if (btn.getAttribute("data-heroicon-last-text")) { 247 const current_text = Array.from(btn.childNodes).find( 248 (node) => node.nodeName === "#text" && node.data.trim().length > 0 249 ); 250 if ( 251 current_text && 252 current_text.data !== btn.getAttribute("data-heroicon-last-text") 253 ) { 254 btn.setAttribute("data-heroicon-last-text", current_text.data); 255 btn.childNodes.forEach((node) => { 256 if (node.nodeName !== "#text") { 257 node.remove(); 258 } 259 if (node.nodeName === "#text" && node.data.trim().length == 0) { 260 node.remove(); 261 } 262 }); 263 } 264 } 265 return; 266 } 267 268 if (iconMarkup[1] != iconMarkup[3]) return; 269 270 const iconProps = iconMarkup[1].slice(2).split("-"); 271 272 const props = { 273 name: iconMarkup[2], 274 size: "20px", 275 color: btn.innerHTML.match(colormatch2) 276 ? btn.innerHTML.match(colormatch2)[0].slice(0, -1) 277 : undefined, 278 set: "mini", 279 position: undefined, 280 iconHTML: undefined, 281 style: 'style="', 282 spacing: "8px", 283 stroke_width: "1.5px", 284 }; 285 286 if (props.color) { 287 props.iconHTML = props.iconHTML.replace( 288 fillMatcher2, 289 "fill=" + iconColor 290 ); 291 } 292 293 iconProps.forEach((property) => { 294 switch (property) { 295 case "l": 296 props.position = "left"; 297 break; 298 case "r": 299 props.position = "right"; 300 break; 301 case "b": 302 props.position = "center"; 303 break; 304 case "o": 305 props.set = "outlined"; 306 break; 307 case "s": 308 props.set = "solid"; 309 break; 310 } 311 if (/m[0-99]+/.test(property)) { 312 const matched = property.match(/m([0-99]+)/); 313 props.spacing = `${matched[1]}px`; 314 } 315 if (/w[0-99]+/.test(property)) { 316 const matched = property.match(/w([0-99]+)/); 317 props.stroke_width = `${matched[1]}px`; 318 } 319 320 const number = Number(property); 321 322 if (number && number > 0) { 323 props.size = String(number) + "px"; 324 } 325 }); 326 327 if (window[`heroicons_${props.set}`].has(props.name)) { 328 props.iconHTML = window[`heroicons_${props.set}`].get(props.name); 329 } else { 330 return; 331 } 332 333 btn.classList.add("heroicon"); 334 335 props.style += ` ${props.set == "outlined" ? ` stroke-width: ${props.stroke_width};` : "" 336 } height: ${props.size}; width: ${props.size}; `; 337 338 let insertBefore = props.iconHTML.lastIndexOf("viewBox"); 339 340 btn.childNodes.forEach((node) => { 341 if (node.nodeName === "#text" && node.data.trim().length > 0) { 342 node.data = node.data.replace(allSelect2, ""); 343 btn.setAttribute("data-heroicon-last-text", node.data); 344 } 345 }); 346 347 btn.childNodes.forEach((node) => { 348 if (node.nodeName !== "#text") { 349 node.remove(); 350 } 351 if (node.nodeName === "#text" && node.data.trim().length == 0) { 352 node.remove(); 353 } 354 }); 355 356 if (props.position == "left") { 357 let styledHTML = 358 props.iconHTML.substring(0, insertBefore) + 359 props.style + 360 `margin-right:${props.spacing}"` + 361 props.iconHTML.substring(insertBefore); 362 btn.insertAdjacentHTML("afterbegin", styledHTML); 363 } else if (props.position == "right") { 364 let styledHTML = 365 props.iconHTML.substring(0, insertBefore) + 366 props.style + 367 `margin-left:${props.spacing}"` + 368 props.iconHTML.substring(insertBefore); 369 btn.insertAdjacentHTML("beforeend", styledHTML); 370 } else { 371 let styledHTML = 372 props.iconHTML.substring(0, insertBefore) + 373 props.style + 374 `"` + 375 props.iconHTML.substring(insertBefore); 376 btn.insertAdjacentHTML("beforeend", styledHTML); 377 } 378 } 379 380 document.addEventListener("DOMContentLoaded", function () {
381 let config = { 382 subtree: true, 383 childList: true, 384 attributes: true, 385 characterData: true, 386 }; 387 388 let callback = function (mutationsList, observer) { 389 for (let mutation of mutationsList) { 390 if (mutation.target.tagName === "BUTTON") { 391 replaceIcon(mutation.target); 392 } else if (mutation.addedNodes) { 393 mutation.addedNodes.forEach((node) => { 394 if (node.tagName == "BUTTON") { 395 replaceIcon(node); 396 } 397 }); 398 } else if ( 399 mutation.target.nodeName === "#text" && 400 mutation.target.parentElement && 401 mutation.target.parentElement.tagName === "BUTTON" 402 ) { 403 replaceIcon(mutation.target.parentElement); 404 } 405 Array.from(document.querySelectorAll("button")).forEach((btn) => 406 replaceIcon(btn) 407 ); 408 } 409 }; 410 411 const observer = new MutationObserver(callback); 412 observer.observe(document, config); 413 }); 414</script>
414 415 416<style> 417 .animate-spin>circle { 418 color: inherit; 419 opacity: 25%; 420 } 421 422 .animate-spin { 423 animation: 1s linear infinite spin; 424 } 425 426 @keyframes spin { 427 from { 428 transform: rotate(0); 429 } 430 431 to { 432 transform: rotate(360deg); 433 } 434 } 435 436 .heroicon { 437 display: inline-flex !important; 438 align-items: center !important; 439 gap: 0 !important; 440 } 441 442 .dots_one { 443 stroke: currentColor; 444 fill: currentColor; 445 animation: dots 0.8s linear infinite; 446 animation-delay: -0.8s; 447 margin-right: 1px; 448 } 449 450 .dots_two { 451 animation-delay: -0.65s; 452 } 453 454 .dots_three { 455 animation-delay: -0.5s; 456 } 457 458 @keyframes dots { 459 460 93.75%, 461 100% { 462 opacity: 0.2; 463 } 464 } 465</style> 466<!-- 1661717622628x490300288223674400 -->
467<script type="text/javascript"> 468 (function(c,l,a,r,i,t,y){ 469 c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)}; 470 t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i+"?ref=bubble"; 471 y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y); 472 })(window, document, "clarity", "script", "w9fjnea711"); 473</script>
473 474<!-- 1685954909750x760203255294197800 -->
475<script>window.ncgColorPrimary = " ";</script>
vendor: 1 bytes, line 475
475
476<script>window.ncgFonts = " ";</script>
vendor: 1 bytes, line 476
476
477<script src="https://unpkg.com/@popperjs/core@2"></script>
vendor: 1 bytes, line 477
477
478<script src="https://unpkg.com/tippy.js@6"></script>
478 479<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/build/css/intlTelInput.css">
480<script src="https://cdn.jsdelivr.net/npm/[email protected]/build/js/intlTelInput.min.js"></script>
vendor: 1 bytes, line 480
480
481<script src="https://cdn.nocodegarden.io/uxtoolbox.latest.min.js"></script>
481 482<!-- 1687446439843x865924681433350100_current -->
483<script>window.ncgSupabaseURL = "https://sbuejvhlztawdreabenf.supabase.co";</script>
vendor: 1 bytes, line 483
483
484<script>window.ncgSupabaseAPIKey = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InNidWVqdmhsenRhd2RyZWFiZW5mIiwicm9sZSI6ImFub24iLCJpYXQiOjE3MDc0NjA5MzIsImV4cCI6MjAyMzAzNjkzMn0.a1sno5z-QDhUoLnU1ZV3dsBTFZvTrqG7E6HnH4fnbHU";</script>
vendor: 1 bytes, line 484
484
485<script>window.ncgSupabaseLogLevel = "debug";</script>
vendor: 1 bytes, line 485
485
486<script>window.ncgSupabasePublishableKey = "sb_publishable_A3ZntJeopIrCTPt9Ij4gOg_5K0mmp2J";</script>
486 487<!--
487<script type="module" src="//78f8d3f59561a5591bfd1ffe7532073d.cdn.bubble.io/f1777376078495x567987969693639600/supabase-ncg-2.7.3.min.js"></script>
487-->
488<script type="module" src="//78f8d3f59561a5591bfd1ffe7532073d.cdn.bubble.io/f1780994253408x672157396527105000/supabase-ncg-2.7.4.min.js"></script>
488 489<!-- AAD -->
490<script src="//78f8d3f59561a5591bfd1ffe7532073d.cdn.bubble.io/f1511634801837x947863827459514100/bounceback.min.js"></script>
490 491
492<script type="text/javascript">window._bubble_page_load_data.js_execution_timings.plugin_js_end_execution = Date.now();</script>
492 493</head> 494<body>
494<script type="text/javascript"> 495window.addEventListener('DOMContentLoaded', function () { 496 if (window.appquery == null) { 497 (function() { 498 const html = ` 499 <div class="error-card"> 500 <div class="error-section"> 501 <div class="error-title">Your browser was unable to load some necessary resources</div> 502 <div class="error-message">Contact your IT network administrator to allow access to: 503 ⢠d3dqmih97rcqmh.cloudfront.net 504 ⢠78f8d3f59561a5591bfd1ffe7532073d.cdn.bubble.io/ 505 ⢠d1muf25xaso8hp.cloudfront.net</div> 506 </div> 507 </div> 508 ` 509 510 const css = document.createElement('style') 511 css.type = 'text/css' 512 css.appendChild( 513 document.createTextNode(` 514 .error-overlay { 515 width: 100%; 516 height: 100%; 517 background: rgba(0,0,0,0.30); 518 overflow: hidden; 519 display: flex; 520 justify-content: center; 521 align-items: flex-start; 522 position: fixed; 523 inset: 0; 524 z-index: 999999; 525 } 526 527 .error-card { 528 width: 500px; 529 margin: 40px; 530 background: white; 531 box-shadow: 0px 1px 2px rgba(0,0,0,0.10); 532 border-radius: 8px; 533 display: flex; 534 flex-direction: column; 535 } 536 537 .error-section { 538 padding: 40px; 539 display: flex; 540 flex-direction: column; 541 gap: 12px; 542 } 543 544 .error-title { 545 color: #1A1A1A; 546 font-size: 18px; 547 font-family: Arial, sans-serif; 548 font-weight: 600; 549 line-height: 28px; 550 } 551 552 .error-message { 553 color: #525252; 554 font-size: 14px; 555 font-family: Arial, sans-serif; 556 font-weight: 400; 557 line-height: 20px; 558 white-space: pre-wrap; 559 } 560 `) 561 ) 562 document.head.appendChild(css) 563 564 const container = document.createElement('div') 565 container.className = 'error-overlay' 566 container.innerHTML = html 567 document.body.appendChild(container) 568 })() 569 httpRequest = new XMLHttpRequest(); 570httpRequest.open('POST', '/user/m', true); 571httpRequest.setRequestHeader('Content-Type', 'application/json'); 572httpRequest.send(JSON.stringify({measures: {page_load_error: 1, url: document.location.href, errors: window.load_error_log}})); 573 }; 574}); 575</script>
575<script type="text/javascript">window.addEventListener('DOMContentLoaded', function () {if (window.appquery && window.app == null) {(function() { 576 const html = ` 577 <div class="error-card"> 578 <div class="error-section"> 579 <div class="error-title">Your browser was unable to load the application</div> 580 <div class="error-message">We've been notified of the issue. Please try again in a few moments and make sure not to use ad-blockers.</div> 581 </div> 582 </div> 583 ` 584 585 const css = document.createElement('style') 586 css.type = 'text/css' 587 css.appendChild( 588 document.createTextNode(` 589 .error-overlay { 590 width: 100%; 591 height: 100%; 592 background: rgba(0,0,0,0.30); 593 overflow: hidden; 594 display: flex; 595 justify-content: center; 596 align-items: flex-start; 597 position: fixed; 598 inset: 0; 599 z-index: 999999; 600 } 601 602 .error-card { 603 width: 500px; 604 margin: 40px; 605 background: white; 606 box-shadow: 0px 1px 2px rgba(0,0,0,0.10); 607 border-radius: 8px; 608 display: flex; 609 flex-direction: column; 610 } 611 612 .error-section { 613 padding: 40px; 614 display: flex; 615 flex-direction: column; 616 gap: 12px; 617 } 618 619 .error-title { 620 color: #1A1A1A; 621 font-size: 18px; 622 font-family: Arial, sans-serif; 623 font-weight: 600; 624 line-height: 28px; 625 } 626 627 .error-message { 628 color: #525252; 629 font-size: 14px; 630 font-family: Arial, sans-serif; 631 font-weight: 400; 632 line-height: 20px; 633 white-space: pre-wrap; 634 } 635 `) 636 ) 637 document.head.appendChild(css) 638 639 const container = document.createElement('div') 640 container.className = 'error-overlay' 641 container.innerHTML = html 642 document.body.appendChild(container) 643 })()}});</script>
643 644<img style="display: none;" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" /> 645</body> 646</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.