1 2 3<!DOCTYPE html> 4<html lang="en"> 5<head> 6 <meta charset="UTF-8"> 7 <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 8 <title>Login page - TimelinesAI</title> 9 <link rel="icon" href="/static/img/favicon/favicon.9d22dcd0a823.ico"/> 10 <link rel="icon" type="image/png" href="/static/img/favicon/favicon-32x32.20dabd51e0ff.png" sizes="32x32"/> 11 <link rel="icon" type="image/png" href="/static/img/favicon/favicon-16x16.bda746574050.png" sizes="16x16"/> 12 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@shoelace-style/[email protected]/cdn/themes/light.css" /> 13 <link rel="stylesheet" href="/static/css/bootstrap.min.ee7cc9e9bd5d.css"> 14 <link rel="stylesheet" href="/static/css/bootstrap-datetimepicker.min.fc28fdcaebe0.css"> 15 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic"> 16 <link rel="stylesheet" href="/static/css/bootstrap-datepicker.min.6c64af21a8a4.css"/> 17 <link rel="stylesheet" href="/static/css/daterangepicker.af9f42f313f1.css"/> 18 <link rel="stylesheet" href="/static/css/toastr.min.bc96861d9899.css"/> 19 <link href="/static/css/select2-4.0.13.min.9f54e6414f87.css" rel="stylesheet"/> 20 <link href="/static/css/fontawesome-free/css/all.min.220d3af32394.css" rel="stylesheet" /> 21 <link href="/static/css/fontawesome-free/css/solid.min.a5a4b24a648e.css" rel="stylesheet" /> 22 <link href="/static/css/fontawesome-free/css/brands.min.39f906b05775.css" rel="stylesheet" /> 23 <link href="/static/css/fontawesome-free/css/v4-shims.min.0e111e42b92a.css" rel="stylesheet" /> 24 <link href="/static/css/adminlte.f91facdf3368.css" rel="stylesheet" /> 25 <link href="/static/css/style.1c36de89b0e6.css" rel="stylesheet" /> 26 <link href="/static/css/timelines/base.5e7d21a0c537.css" rel="stylesheet" /> 27 <link href="/static/css/timelines/sidebar.fcc39e95aa63.css" rel="stylesheet" /> 28 <link href="/static/css/icheck_flat_blue.bc45717b0a59.css" rel="stylesheet"> 29 <link href="/static/css/balloon.f0023d951f40.css" rel="stylesheet"> 30 <link href="/static/css/checkbox-switch.74854563ebbc.css" rel="stylesheet"> 31 <link href="/static/css/intlTelInput.min.053300e047cf.css" rel="stylesheet"> 32 33
33<script type="module" src="https://cdn.jsdelivr.net/npm/@shoelace-style/[email protected]/cdn/shoelace-autoloader.js"></script>
vendor: 1 bytes, line 33
33
34<script> 35 window.startTime = new Date().getTime();</script>
35 36 37 38
39<script> 40 !function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(".");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement("script")).type="text/javascript",p.crossOrigin="anonymous",p.async=!0,p.src=s.api_host.replace(".i.posthog.com","-assets.i.posthog.com")+"/static/array.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a="posthog",u.people=u.people||[],u.toString=function(t){var e="posthog";return"posthog"!==a&&(e+="."+a),t||(e+=" (stub)"),e},u.people.toString=function(){return u.toString(1)+".people (stub)"},o="init ge bs pe cs gs capture Ae Fi Ss register register_once register_for_session unregister unregister_for_session Es getFeatureFlag getFeatureFlagPayload isFeatureEnabled reloadFeatureFlags updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures on onFeatureFlags onSurveysLoaded onSessionId getSurveys getActiveMatchingSurveys renderSurvey canRenderSurvey canRenderSurveyAsync identify setPersonProperties group resetGroups setPersonPropertiesForFlags resetPersonPropertiesForFlags setGroupPropertiesForFlags resetGroupPropertiesForFlags reset get_distinct_id getGroups get_session_id get_session_replay_url alias set_config startSessionRecording stopSessionRecording sessionRecordingStarted captureException loadToolbar get_property getSessionProperty ks ys createPersonProfile xs ps opt_in_capturing opt_out_capturing has_opted_in_capturing has_opted_out_capturing clear_opt_in_out_capturing ws debug $s getPageViewId captureTraceFeedback captureTraceMetric".split(" "),n=0;n<o.length;n++)g(u,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[]); 41 posthog.init("phc_K5ueEDZNi3i040uTKrpXxtUP6yGdgjYijjaQM7IqLRH", { 42 api_host: 'https://eu.i.posthog.com', 43 person_profiles: 'always', // to create profiles for anonymous users as well 44 persistence: 'cookie', 45 cross_subdomain_cookie: true, 46 autocapture: false, 47 capture_dead_clicks: false, 48 capture_pageleave: false, 49 capture_performance: { 50 web_vitals: false, 51 web_vitals_allowed_metrics: [] 52 }, 53 }); 54</script>
vendor: 1 bytes, line 54
54
55<script>
vendor: 323 bytes, line 55
55(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','
55GTM-PBPZWJN
vendor: 3 bytes, line 55
55');
55</script>
55<script src="/static/js/jquery-3.7.1.min.2c872dbe60f4.js"></script>
55 56
56<script src="/static/js/jquery-migrate-3.5.2.min.88d82ba2bc43.js"></script>
56 57
57<script src="/static/js/jquery.scrollTo.min.4f3d9d7281a2.js"></script>
57 58
58<script src="/static/js/bootstrap-3.3.7.min.5869c96cc8f1.js"></script>
58 59
59<script src="/static/js/select2-4.0.13.min.86fee17cd48a.js"></script>
59 60 61 <link href="/static/css/timelines/login.8d983f9a7948.css" rel="stylesheet"/> 62</head> 63<body class="sidebar-mini wysihtml5-supported login-page " data-reset-height='false'>
vendor: 68 bytes, lines 63-64
63 64<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
64GTM-PBPZWJN
vendor: 82 bytes, line 64
64" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
64<div class="app-container "> 65 <div id="content-wrapper" class="wrapper"> 66 67 68 <!-- Left side column. contains the logo and sidebar --> 69 70 71 72 73 <div class="content-wrapper" data-name="bg-content-wrapper"> 74 75 76 77 78 79 80 81<div class="login-box"> 82 <div class="login-logo"> 83 <a href="/"><img src="/static/img/logo-hr.bfdbfc55d875.png" style="max-width:240px;"/></a> 84 </div> 85 <!-- /.login-logo --> 86 <div class="login-box-body"> 87 <p class="login-box-msg">Sign in to start your session</p> 88 89 90 91 92 93 94 95 96 97 <form action="/accounts/login/" method="post"> 98 <div class="form-group has-feedback"> 99 <input type="email" name="email" placeholder="email" class="form-control" maxlength="254" required id="id_email"> 100 <span class="fa fa-envelope-o form-control-feedback"></span> 101 </div> 102 <div class="form-group has-feedback"> 103 <input type="password" name="password" placeholder="password" class="form-control" required id="id_password"> 104 <span class="fa fa-unlock-alt form-control-feedback"></span> 105 </div> 106 107 <div class="text-center"> 108 <button type="submit" class="btn btn-info btn-block btn-flat" data-testid="login-btn-signin">Sign In</button> 109 </div> 110 <input type="hidden" name="csrfmiddlewaretoken" value="ZIYtltzwqyAQmpjsWLlZd8hQ8YzcJE17gelWcO2Mz4eZYMsA5HB6YUdn0pT2x4vN" /> 111 <input type="hidden" name="next" value="" /> 112 </form> 113 <div class='text-center margin' style="display: flex; flex-direction: column; gap: 5px"> 114 <a href="/accounts/send_otp">Sign in with email code</a> 115 <a href='/accounts/reset_password'>Forgot your password?</a> 116 </div> 117 118 119 <div class="social-buttons"> 120 <!-- <a href="/login/google-oauth2/" title='Sign in with Google' class='btn btn-social-icon btn-google'><i class='fa fa-google'></i></a> --> 121 <a href="/login/google-oauth2/" title='Sign in with Google' > 122 <button class="gsi-material-button"> 123 <div class="gsi-material-button-state"></div> 124 <div class="gsi-material-button-content-wrapper"> 125 <div class="gsi-material-button-icon"> 126 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" xmlns:xlink="http://www.w3.org/1999/xlink" style="display: block;"> 127 <path fill="#EA4335" d="M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z"></path> 128 <path fill="#4285F4" d="M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z"></path> 129 <path fill="#FBBC05" d="M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z"></path> 130 <path fill="#34A853" d="M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z"></path> 131 <path fill="none" d="M0 0h48v48H0z"></path> 132 </svg> 133 </div> 134 <span style="display: none;">Sign in with Google</span> 135 </div> 136 </button> 137 </a> 138 </div> 139 140 141 <div class='signup-block'> 142 Don't have account yet?<br/> 143 <a href='/register/' class='btn btn-primary'>Sign-up</a> 144 </div> 145 146 </div> 147 <!-- /.login-box-body --> 148</div> 149 150 151 152 153</div> 154 155 156 157 158 </div> 159</div> 160 161 162 <div id="chat-info-modal-description-link" class="modal fade chat_info_modal_description" tabindex="-1" role="dialog" aria-hidden="true" style="z-index: 9999"> 163 <div class="modal-dialog" role="document"> 164 <div class="modal-content"> 165 <div class="modal-header"> 166 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
167 <span aria-hidden="true">×</span> 168 </button> 169 <h4 class="modal-title" id="chat-info-modal-description-link-label"></h4> 170 </div> 171 <div class="modal-body"></div> 172 <div class="modal-footer"> 173 <button type="button" class="btn-ui btn-ui-default" data-dismiss="modal">Close</button> 174 </div> 175 </div> 176 </div> 177 </div> 178 179<div class="chat_detail_pd_pinned_modal modal fade" id="pin-deal-modal" tabindex="-1" role="dialog" aria-hidden="true" style="z-index: 9999"> 180 <div class="modal-dialog" role="document"> 181 <div class="modal-content modal_add_agent" style="border-radius: 20px !important"> 182 <div class="modal-body"> 183 <div class="col-sm-12 custom-select-wrapper" 184 style="display: flex; flex-direction: column; gap: 10px; align-items: center;" 185 > 186 <p>Select and set a deal where WhatsApp messages continue to sync going forward</p> 187 <select id="deal-select" class="form-control pipedrive-card-select" style="width: 100%"> 188 <option value="">Loading...</option> 189 </select> 190 <div id="btn-reload-deals" class="reload-assistants"> 191 192 193 <svg class="" width="19" height="16" fill="none" viewBox="0 0 19 16" 194 xmlns="http://www.w3.org/2000/svg"> 195 <path d="M9.10449 10.8333L10.7758 12.4166L9.10449 13.9999" stroke="currentColor" stroke-width="1.5" 196 stroke-linecap="round" stroke-linejoin="round"></path> 197 <path d="M4.09093 2.91675H2.41963C2.198 2.91675 1.98545 3.00016 1.82874 3.14862C1.67203 3.29709 1.58398 3.49845 1.58398 3.70841L1.58398 11.625C1.58398 11.835 1.67203 12.0364 1.82874 12.1848C1.98545 12.3333 2.198 12.4167 2.41963 12.4167H10.7761" 198 stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path> 199 <path d="M9.10391 4.4999L7.43262 2.91658L9.10391 1.33325" stroke="currentColor" stroke-width="1.5" 200 stroke-linecap="round" stroke-linejoin="round"></path> 201 <path d="M14.1178 12.4167H15.7891C16.0107 12.4167 16.2233 12.3333 16.38 12.1848C16.5367 12.0364 16.6247 11.835 16.6247 11.625V3.70841C16.6247 3.49845 16.5367 3.29709 16.38 3.14862C16.2233 3.00016 16.0107 2.91675 15.7891 2.91675H7.43262" 202 stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path> 203 </svg> 204 205 206 Refresh the list 207 </div> 208 <div id="no-deals-block" 209 style="display: none; margin-top: 10px; color: #a00; text-align: center;"> 210 Pipedrive Person <a href="" target="_blank" 211 style="color: #a00; text-decoration: underline;" class="et"> 212 213 </a> doesn't have any deals yet.<br> 214 Create a deal for the person at Pipedrive first. 215 </div> 216 </div> 217 </div> 218 <div class="modal-footer"> 219 <button id="cancel-pin-deal" class="btn-ui btn-ui-default" data-dismiss="modal">Cancel</button> 220 <button id="save-pin-deal" class="btn-ui btn-ui-purple">Save</button> 221 </div> 222 </div> 223 </div> 224</div> 225 226<style> 227 .chat_detail_pd_pinned_modal .modal-footer { 228 display: flex; 229 justify-content: flex-end; 230 align-items: center; 231 } 232 233 .chat_detail_pd_pinned_modal p { 234 padding: 0; 235 font-size: 14px; 236 font-family: 'Outfit', sans-serif; 237 margin-bottom: 0; 238 } 239</style> 240<div class="chat_detail_pd_unpinned_modal modal fade" id="unpin-deal-modal" tabindex="-1" role="dialog" aria-hidden="true" style="z-index: 9999"> 241 <div class="modal-dialog" role="document"> 242 <div class="modal-content modal_add_agent" style="border-radius: 20px !important"> 243 <div class="modal-body"> 244 245 246 247 <p>Removing a pinned deal will revert to automatic daily selection of a deal / contact for message sync</p> 248 </div> 249 <div class="modal-footer"> 250 <button id="cancel-unpin-deal" class="btn-ui btn-ui-default" data-dismiss="modal">Cancel</button> 251 <button id="confirm-unpin-deal" class="btn-ui btn-ui-purple">Unpin</button> 252 </div> 253 </div> 254 </div> 255</div> 256 257<style> 258 .chat_detail_pd_unpinned_modal .modal-footer { 259 display: flex; 260 justify-content: flex-end; 261 align-items: center; 262 } 263 264 .chat_detail_pd_unpinned_modal p { 265 padding: 0; 266 font-size: 14px; 267 font-family: 'Outfit', sans-serif; 268 margin-bottom: 0; 269 } 270</style> 271 272 273 274 275 276 277<div class="modal fade" id="messages-controls-reopen-timeline-modal" tabindex="-1" role="dialog" aria-hidden="true"> 278 <div class="modal-dialog"> 279 <div class="modal-content"> 280 <div class="modal-header"> 281 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
282 <span aria-hidden="true">Ã</span> 283 </button> 284 <h4 class="modal-title">Reopen Timeline</h4> 285 </div> 286 <div class="modal-body"> 287 <p>Are you sure you want to reopen this timeline?</p> 288 </div> 289 <div class="modal-footer"> 290 <button type="button" class="btn btn-default pull-left" data-dismiss="modal">Cancel</button> 291 <button type="button" class="btn btn-primary btn-confirm-action">Reopen</button> 292 </div> 293 </div> 294 </div> 295</div> 296 297 298<div class="modal fade" id="messages-controls-close-timeline-modal" tabindex="-1" role="dialog" aria-hidden="true"> 299 <div class="modal-dialog"> 300 <div class="modal-content"> 301 <div class="modal-header"> 302 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 303 <span aria-hidden="true">Ã</span> 304 </button> 305 <h4 class="modal-title">Resolve Timeline</h4> 306 </div> 307 <div class="modal-body"> 308 <p>Are you sure you want to resolve this timeline?</p> 309 </div> 310 <div class="modal-footer"> 311 <button type="button" class="btn btn-default pull-left" data-dismiss="modal">Cancel</button> 312 <button type="button" class="btn btn-primary btn-confirm-action">Resolve</button> 313 </div> 314 </div> 315 </div> 316</div> 317 318 319<sl-dialog id="delete-filter-dialog" 320 label="Delete chat filter" 321 class="dialog-overview delete_filter_dialog"> 322 Are you sure you want to delete <b><span id="delete-filter-name"></span></b> filter? 323 This action cannot be undone. 324 325 <button id="js-delete-timeline-filter" 326 style="margin-right: 16px" 327 class="btn-ui btn-ui-purple" 328 slot="footer"> 329 Delete filter 330 331 332 </button> 333 334 <button id="delete-filter-cancel" 335 slot="footer" 336 class="btn-ui btn-ui-default"> 337 Cancel 338 </button> 339</sl-dialog> 340 341 342<div class="modal fade" id="visuals-timelines-close-timeline-modal" tabindex="-1" role="dialog" aria-hidden="true"> 343 <div class="modal-dialog"> 344 <div class="modal-content"> 345 <div class="modal-header"> 346 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 347 <span aria-hidden="true">Ã</span> 348 </button> 349 <h4 class="modal-title">Resolve Timeline</h4> 350 </div> 351 <div class="modal-body"> 352 <p>Are you sure you want to resolve this timeline?</p> 353 </div> 354 <div class="modal-footer"> 355 <button type="button" class="btn btn-default pull-left" data-dismiss="modal">Cancel</button> 356 <button type="button" class="btn btn-primary btn-confirm-action">Resolve</button> 357 </div> 358 </div> 359 </div> 360</div> 361 362 363 364<div class="modal fade" id="visuals-timelines-reopen-timeline-modal" tabindex="-1" role="dialog" aria-hidden="true"> 365 <div class="modal-dialog"> 366 <div class="modal-content"> 367 <div class="modal-header"> 368 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 369 <span aria-hidden="true">Ã</span> 370 </button> 371 <h4 class="modal-title">Reopen Timeline</h4> 372 </div> 373 <div class="modal-body"> 374 <p>Are you sure you want to reopen this timeline?</p> 375 </div> 376 <div class="modal-footer"> 377 <button type="button" class="btn btn-default pull-left" data-dismiss="modal">Cancel</button> 378 <button type="button" class="btn btn-primary btn-confirm-action">Reopen</button> 379 </div> 380 </div> 381 </div> 382</div> 383 384 385<sl-dialog id="waba-cancel-reason-dialog" label="Reason" class="dialog-overview"> 386 <p id="cancel-reason-dialog-body" style="margin: 0; word-wrap: break-word; text-align: center"></p> 387</sl-dialog>
388<script src="/static/js/timelines/chat_waba.48491b7cb38f.js"></script>
388 389
390<script> 391window.floating_notification_timeout = 10; 392var orgId = null; 393var role = null; 394var limit_mb = 0; 395const user_authenticated = false; 396 397</script>
vendor: 1 bytes, line 397
397
398<script src="/static/js/moment.min.aeb7908241d9.js"></script>
vendor: 1 bytes, line 398
398
399<script src="/static/js/daterangepicker.min.f73957376d7e.js"></script>
vendor: 1 bytes, line 399
399
400<script src="/static/js/bootstrap-datetimepicker.min.8a36160a466c.js"></script>
vendor: 1 bytes, line 400
400
401<script src="/static/js/socket.io.min-4.7.4.66c33313d3d4.js"></script>
vendor: 1 bytes, line 401
401
402<script src="/static/js/toastr.min.9cbd94fc0eec.js"></script>
vendor: 1 bytes, line 402
402
403<script src="/static/js/popper-1.14.3.min.4a28261efa0f.js"></script>
vendor: 1 bytes, line 403
403
404<script src="/static/js/clipboard.min.3f3688138a1b.js"></script>
vendor: 1 bytes, line 404
404
405<script src="/static/js/template.21d96df185bd.js"></script>
405
406<script src="/static/js/icheck.min.df8eccd3ee39.js"></script>
vendor: 1 bytes, line 406
406
407<script src="/static/js/jquery-cookie.bee6bb88c240.js"></script>
vendor: 1 bytes, line 407
407
408<script src="/static/js/timelines.8b3c3a33a735.js"></script>
vendor: 1 bytes, line 408
408
409<script src="/static/js/async.ea7857f28004.js"></script>
vendor: 1 bytes, line 409
409
410<script src="/static/js/tooltip.2edcf0323a40.js"></script>
vendor: 1 bytes, line 410
410
411<script src="/static/js/timelines/base.7515425279c2.js"></script>
vendor: 1 bytes, line 411
411
412<script src="/static/js/timelines/user_notifications.251653839565.js"></script>
412 413
414<script> 415 blockUserCabinet(); 416 if ($('.main-alert').length) { 417 $('.main-alert .close').on('click', function() { 418 var alert_id = $(this).attr('data-id'); 419 $('div#system-notification-'+alert_id).remove(); 420 api.dismissSystemNotifications(alert_id, {'onSuccess': function() {}}); 421 }); 422 } 423</script>
423 424
425<script> // user activity tracking 426const _ACTIVITY_COLLECT_INTERVAL = 1000; 427const _ACTIVITY_SENDING_INTERVAL = 120; 428const activity_events = ["mouseup", "keydown", "scroll", "mousemove"]; 429 430let has_activity = true; // user has opened page, so we have activity 431 432function _activity_event_handler() {has_activity = true} 433 434function _current_time_key() { 435 const ts_minute = Math.floor(Date.now()/(60*1000)) // minute number from epoch 436 return `${window.userId}_${window.workspace_id}_${ts_minute}` 437} 438 439if (user_authenticated) { 440 let to_send_cnt = _ACTIVITY_SENDING_INTERVAL // seconds counter, send data on very first turn 441 setInterval(function () { 442 let activity_tracker_str = localStorage.getItem('activity_tracker') 443 let activity_tracker_data 444 if (activity_tracker_str === null) activity_tracker_data = {} 445 else activity_tracker_data = JSON.parse(activity_tracker_str) 446 447 const ts_key = _current_time_key() 448 449 if (!document.hidden && has_activity) { 450// console.log('active tick', ts_key, activity_tracker_data, ts_key in activity_tracker_data) 451 if (!(ts_key in activity_tracker_data)) { 452// console.log('=== got tick', ts_key) 453 activity_tracker_data[ts_key] = 1 454 localStorage.setItem('activity_tracker', JSON.stringify(activity_tracker_data)) 455 } 456 has_activity = false 457 } 458 to_send_cnt += 1 459 if (to_send_cnt > _ACTIVITY_SENDING_INTERVAL) { 460// console.log('=== send collected') 461 to_send_cnt = 0 462 let ids_to_send = [] 463 for (const [key, _] of Object.entries(activity_tracker_data)) { 464 if (key !== ts_key) ids_to_send.push(key) 465 } 466 if (ids_to_send.length > 0) { 467// console.log('=== send', ids_to_send) 468 window.socket.emit('user_activity_track', ids_to_send) 469 for (const key of ids_to_send) { 470 delete activity_tracker_data[key] 471// console.log('=== deleted', key) 472 } 473 localStorage.setItem('activity_tracker', JSON.stringify(activity_tracker_data)) 474// console.log('=== store cleaned', activity_tracker_data) 475 } 476 } 477 }, _ACTIVITY_COLLECT_INTERVAL); 478 479 document.addEventListener("DOMContentLoaded", function () { 480 activity_events.forEach(function (e) { 481 document.addEventListener(e, _activity_event_handler) 482 }); 483 }); 484} 485</script>
vendor: 1 bytes, line 485
485
486<script> 487 (function (w, d, s, p, t) { 488 w.gr = w.gr || function () { 489 w.gr.ce = 60; 490 w.gr.q = w.gr.q || []; 491 w.gr.q.push(arguments); 492 }; 493 p = d.getElementsByTagName(s)[0]; 494 t = d.createElement(s); 495 t.async = true; 496 t.src = "https://script.getreditus.com/v2.js"; 497 p.parentNode.insertBefore(t, p); 498 })(window, document, "script"); 499 window.gr("initCustomer", "c22de9d3-800a-4536-8781-8739577c300b"); 500 window.gr("track", "pageview"); 501</script>
501 502
503<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"e89c8ea97b6043c4b16e2ff5023400cf","spa":2}' crossorigin="anonymous"></script>
503 504</body></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.