1<!DOCTYPE html> 2<html class="theme-blue " lang="en"> 3 <head> 4 <link rel="stylesheet" href="https://rsms.me/inter/inter.css" media="all" data-turbo-track="reload" /> 5<link href="/assets/logo/favicon-fa4690a4.png" rel="shortcut icon" /> 6<link href="/assets/logo/icon-acc1c7a7.png" rel="apple-touch-icon" />
7<script> 8 // change under Account Details 9 class ColorSchemePreference { 10 constructor() { 11 this.validSchemes = ['dark', 'light', 'system']; 12 this.storageKey = 'color_scheme_preference'; 13 this.eventName = 'color-scheme:changed'; 14 this.mediaQuery = window.matchMedia('(prefers-color-scheme: dark)'); 15 this.el = document.documentElement; 16 17 this.mediaQuery.addEventListener('change', e => this.preference === 'system' && (this.#shown = e.matches ? 'dark' : 'light')); 18 if (!this.el.classList.contains("light", "dark")) this.#shown = this.preference === 'system' ? this.#auto() : this.preference; 19 } 20 21 get preference() { return localStorage.getItem(this.storageKey) || 'system'; } 22 set preference(scheme) { 23 if (!this.validSchemes.includes(scheme)) throw new Error('Invalid color scheme'); 24 const stored = scheme === 'system' ? null : scheme; 25 this.#shown = stored ?? this.#auto(); 26 stored === null ? localStorage.removeItem(this.storageKey) : localStorage.setItem(this.storageKey, scheme); 27 window.dispatchEvent(new CustomEvent(this.eventName, { detail: { colorScheme: scheme } })); 28 } 29 get current() { return this.#shown; } 30 31 get #shown() { return this.el.classList.contains('dark') ? 'dark' : 'light'; } 32 set #shown(scheme) { this.el.classList.remove('dark', 'light'); this.el.classList.add(scheme); } 33 #auto() { return this.mediaQuery.matches ? 'dark' : 'light'; } 34 } 35 36 window.colorScheme = new ColorSchemePreference(); 37</script>
vendor: 1 bytes, line 37
37
38<script src="/assets/application-bdf78b2f.js" data-turbo-track="reload"></script>
38 39<link rel="stylesheet" href="/assets/application-65636f83.css" media="all" data-turbo-track="reload" />
40<script src="/assets/application.light-aae23a5e.js" data-turbo-track="reload"></script>
40 41<link rel="stylesheet" href="/assets/application.light-265da79c.css" media="all" data-turbo-track="reload" /> 42 <title>CPAConnect</title> 43 44<meta charset="utf-8" /> 45<meta content="ie=edge" http-equiv="x-ua-compatible" /> 46<meta content="cpa connect" name="keywords" /> 47<meta content="Easy to use and client-friendly account management software. Built by CPAs, for CPAs." name="description" /> 48<meta content="width=device-width, initial-scale=1" name="viewport" /> 49<meta name="turbo-prefetch" content="false"> 50 51<meta name="mobile-web-app-capable" content="yes" /> 52 53<meta name="csrf-param" content="authenticity_token" /> 54<meta name="csrf-token" content="wV5HmO-TMBvW1H959zsoO-pjNnXdWMqNtsR-GKCHzrBQKhOERxffH7hTjxCbYIhevckV1s82wb68OcAdN1JuZA" /> 55 56<meta name="turbo-cache-control" content="no-cache"> 57 58 59<meta name="intl_tel_input_utils_path" content="/assets/intl-tel-input-utils-a91cc13d.js"> 60 61 62 63 64
65<script type="text/javascript" defer> 66 function fixDatePicker($scope) { 67 setTimeout(function() { 68 $scope.find('.single-daterange:not(.with-time)').each(function() { 69 let $picker = jQuery(this).data('daterangepicker') 70 if ($picker) { 71 $picker.autoApply = true; 72 $picker.container.find('.drp-buttons').hide(); 73 } 74 }); 75 }, 100); 76 } 77 78 jQuery(document).on('turbo:render', function(event) { 79 console.log('turbo:render'); 80 //console.log(event); 81 fixDatePicker(jQuery('body')); 82 jQuery('input[type=number]').on('wheel',function(e){ jQuery(this).blur(); }); 83 }); 84 85 jQuery(document).on('turbo:load', function(event) { 86 console.log('turbo:load'); 87 //console.log(event); 88 fixDatePicker(jQuery('body')); 89 jQuery('input[type=number]').on('wheel',function(e){ jQuery(this).blur(); }); 90 }); 91 92 // monitor every time we're about to close a menu 93 jQuery(document).on('select2:closing', function(e) { 94 // save in case we want it 95 var $sel2 = jQuery(e.target).data("select2"); 96 var $sel = $sel2.$element; 97 var $selDropdown = $sel2.$results.find(".select2-results__option--highlighted") 98 const id = $selDropdown.attr('id') 99 if (!id?.includes('-')) return; 100 const newValue = id.split('-').pop() 101 // must be closed by a mouse or keyboard - listen when that event is finished 102 // this must fire once and only once for every possible menu close 103 // otherwise the handler will be sitting around with unintended side affects 104 jQuery("html").once('keyup mouseup', function (e) { 105 // if close was due to a tab, use the highlighted value 106 var KEYS = { UP: 38, DOWN: 40, TAB: 9 } 107 if (e.keyCode === KEYS.TAB) { 108 if (newValue != undefined) { 109 $sel.val(newValue); 110 $sel.trigger('change'); 111 } 112 } 113 }); 114 }); 115 116 jQuery.fn.once = function (events, callback) { 117 return this.each(function() { 118 jQuery(this).on(events, myCallback); 119 function myCallback(e) { 120 jQuery(this).off(events, myCallback); 121 callback.call(this, e); 122 } 123 }); 124 }; 125 126</script>
126 127 128 129 </head> 130 <body class="devise_layout electron-draggable bg-white dark:bg-base-700 sm:bg-gradient-to-br from-secondary-200 to-primary-400 dark:from-primary-900 dark:to-primary-600 text-base-700 text-sm font-normal dark:text-base-300"> 131 <div data-turn-enter data-turn-exit> 132 133<div class="min-h-screen flex flex-col justify-center sm:py-12"> 134 <div class="mx-auto w-full max-w-md p-1.5"> 135 <div class="sm:bg-white py-8 px-10 sm:shadow sm:dark:shadow-lg rounded-lg sm:dark:bg-slate-700 dark:bg-opacity-80"> 136 <div class="sm:mx-auto sm:w-full sm:max-w-md py-5"> 137 <img alt="" src="/assets/logo/logo-cca-ebb921bd.png" width="371" height="100" class="theme-logo mx-auto py-3" /> 138 139 <h1 class="mt-6 text-center text-3xl font-semibold tracking-tight dark:text-white"> 140 Sign In 141 </h1> 142 143 <div class="border-b border-base-200 pb-4 dark:border-base-600" style="position: relative;"> 144 <div style="background-color: var(--primary-500); width: 26px; height: 3px; position: absolute; left: 0; bottom: -2px; border: 1px solid var(--primary-500); border-radius: 1px;"></div> 145</div> 146 147 </div> 148 149 <div class="electron-undraggable pt-5 space-y-5"> 150 <form class="form" id="new_user" action="/users/pre_otp" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="fNQVdfr879DBwMDJcM-6JhZxSgvc75AdoQbrCEhLJA0Frl1N4y-RvmCny46tAuqBdYdwtHzTrg0xPJkZbOx4Zw" autocomplete="off" /> 151 152 153 154 155 156 157 158 <div id="step-1" class="space-y"> 159 160 161 162<div class="required"> 163 164 <label class="block" for="user_email">Your Email Address</label> 165 166 <div class="mt-1.5"> 167 <input autofocus="autofocus" id="user_email" aria-required="true" class=" block w-full rounded-md shadow-sm font-light text-sm dark:bg-slate-800 dark:text-slate-300 focus:ring-primary-500 focus:border-primary-500 border-slate-300 dark:border-slate-900" type="email" value="" name="user[email]" /> 168 </div> 169 170 171 172 173</div> 174 175 176 <input type="submit" name="commit" value="Next" class="button full" data-disable-with="Next" /> 177 </div> 178 179 <div id="step-2" class="hidden space-y"> 180 181<div data-controller="fields--password"> 182 183 184<div class="required"> 185 186 <label class="block" for="user_password">Your Password</label> 187 188 <div class="mt-1.5"> 189 <input id="user_password" aria-required="true" class=" block w-full rounded-md shadow-sm font-light text-sm dark:bg-slate-800 dark:text-slate-300 focus:ring-primary-500 focus:border-primary-500 border-slate-300 dark:border-slate-900" type="password" name="user[password]" /> 190 </div> 191 192 193 <p class="mt-1.5 text-xs text-slate-500 dark:text-slate-400"> 194 <a href="/users/password/new">Forgot your password?</a> 195 196 197 198 </p> 199 200 201</div> 202 203 204</div> 205 206 <div id="step-2-otp" class="hidden"> 207 208 209 210<div class=""> 211 212 <label class="block" for="user_otp_attempt">Two-Factor Authentication Code</label> 213 214 <div class="mt-1.5"> 215 <input id="user_otp_attempt" class=" block w-full rounded-md shadow-sm font-light text-sm dark:bg-slate-800 dark:text-slate-300 focus:ring-primary-500 focus:border-primary-500 border-slate-300 dark:border-slate-900" type="text" name="user[otp_attempt]" /> 216 </div> 217 218 219 <p class="mt-1.5 text-xs text-slate-500 dark:text-slate-400"> 220 221 You can find this in the authenticator application you configured when adding 2FA to your account. 222 223 </p> 224 225 226</div> 227 228 229 </div> 230 231 <input type="submit" name="commit" value="Sign In" class="button full" id="sign_in_submit" data-disable-with="Sign In" /> 232 </div> 233 234 235 <div class="flex items-center"> 236 <input name="user[remember_me]" type="hidden" value="0" autocomplete="off" /><input class="focus:ring-primary-500 h-4 w-4 text-primary-500 border-slate-300 dark:bg-slate-800 dark:border-slate-900 rounded disabled:bg-slate-200 disabled:dark:bg-slate-700 " type="checkbox" value="1" name="user[remember_me]" id="user_remember_me" /> 237 <label class="pl-2" for="user_remember_me">Remember me</label> 238 </div> 239 240</form> 241 242 243 </div> 244 </div> 245 </div> 246</div> 247 248 249 </div> 250
250<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":"e139027d3af64e2a887d047d83c979ac","r":1,"spa":2}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 250
250
251<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a45b2367287cefe5',t:'MTc5MTE4OTgwMg=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
251</body> 252</html> 253
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.