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.0" /> 6 <title>CA Rachana Ranade Stock Market Courses</title> 7 8 <!-- âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 9 SEO meta â HARDCODED here on purpose (like the Meta Pixel below). 10 This is a Blazor WASM SPA: real page content renders ~3-5s after the 11 initial HTML, so a crawler that reads only the raw HTML (or renders 12 slowly / catches the "Loadingâ¦" state) has no description to use and 13 falls back to scraping visible body text â which is how the "Loading⦠14 An unhandled error has occurred" placeholder ended up as the Google 15 snippet. A static description in the initial HTML gives crawlers real 16 text regardless of when/whether the WASM app has finished rendering. 17 âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ --> 18 <meta name="description" content="CA Rachana Ranade â India's leading finance educator. Learn stock market investing, technical & fundamental analysis, and personal finance through structured online courses, webinars, and free financial calculators." /> 19 <link rel="canonical" href="https://www.rachanaranade.in/" /> 20 21 <!-- Open Graph (Facebook / LinkedIn / WhatsApp link previews) --> 22 <meta property="og:type" content="website" /> 23 <meta property="og:site_name" content="CA Rachana Ranade" /> 24 <meta property="og:title" content="CA Rachana Ranade Stock Market Courses" /> 25 <meta property="og:description" content="Learn stock market investing, technical & fundamental analysis, and personal finance from CA Rachana Ranade â India's leading finance educator." /> 26 <meta property="og:url" content="https://www.rachanaranade.in/" /> 27 <meta property="og:image" content="https://www.rachanaranade.in/apple-touch-icon.png" /> 28 29 <!-- Twitter card --> 30 <meta name="twitter:card" content="summary_large_image" /> 31 <meta name="twitter:title" content="CA Rachana Ranade Stock Market Courses" /> 32 <meta name="twitter:description" content="Learn stock market investing and personal finance from CA Rachana Ranade â India's leading finance educator." /> 33 <meta name="twitter:image" content="https://www.rachanaranade.in/apple-touch-icon.png" /> 34 35 <!-- Organization + WebSite structured data. Helps Google recognise the site 36 as an official branded entity (knowledge panel) and is a supporting 37 signal for sitelinks â though sitelinks themselves are granted 38 automatically by Google based on site structure/authority, not by any 39 markup. No SearchAction is included because the site has no on-site 40 search page. --> 41
41<script type="application/ld+json"> 42 { 43 "@context": "https://schema.org", 44 "@type": "Organization", 45 "name": "CA Rachana Ranade", 46 "url": "https://www.rachanaranade.in/", 47 "logo": "https://www.rachanaranade.in/apple-touch-icon.png", 48 "description": "CA Rachana Ranade â India's leading finance educator. Stock market investing, technical & fundamental analysis, and personal finance courses.", 49 "sameAs": [ 50 "https://www.youtube.com/@CARachanaRanade", 51 "https://www.instagram.com/ca_rachana_ranade/", 52 "https://twitter.com/CA_Rachana" 53 ] 54 } 55 </script>
55 56
56<script type="application/ld+json"> 57 { 58 "@context": "https://schema.org", 59 "@type": "WebSite", 60 "name": "CA Rachana Ranade", 61 "url": "https://www.rachanaranade.in/" 62 } 63 </script>
63 64 65 <base href="/" /> 66 <link rel="preconnect" href="https://fonts.googleapis.com" /> 67 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> 68 <link href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;700&family=Playfair+Display:wght@400;500;600;700&display=swap" rel="stylesheet" /> 69 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" /> 70 <link rel="stylesheet" href="css/app.css" /> 71 <link rel="icon" type="image/png" href="favicon.png" /> 72 <link rel="stylesheet" href="RachanaAcademy.Client.styles.css" /> 73 74 <!-- âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 75 Meta Pixel (Facebook Pixel) â Pixel ID: 377456566231495 76 âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 77 HARDCODED here on purpose (NOT via the admin Script Injections UI). 78 The Script Injection system runs inside Blazor WASM, ~3-5s after the 79 initial HTML response. Meta's pixel-detection scanner reads only the 80 raw initial HTML and does NOT execute JS, so a WASM-injected pixel is 81 invisible to it â Events Manager reports "no pixel found". Hardcoding 82 here makes Meta detect it and fires PageView instantly. 83 (Confirmed: the dynamic Script-Injection approach did NOT work for 84 Meta detection â this hardcoded version is the working one.) 85 86 IMPORTANT â avoid duplicate PageView: 87 ⢠Keep this hardcoded block as the single base pixel, AND 88 ⢠DISABLE/DELETE the "Pixcel code" entry in admin/script-injections. 89 The three action events (AddToCart / AddPaymentInfo / Purchase) fire 90 from js/meta-pixel-interop.js, which only calls fbq('track', â¦) and 91 relies on THIS init having loaded fbq. If the Pixel ID ever changes, 92 update it in the two places below. 93 âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ --> 94 <!-- Facebook Pixel Code --> 95
95<script>
vendor: 470 bytes, lines 95-104
95 96 !function(f,b,e,v,n,t,s) 97 {if(f.fbq)return;n=f.fbq=function(){n.callMethod? 98 n.callMethod.apply(n,arguments):n.queue.push(arguments)}; 99 if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; 100 n.queue=[];t=b.createElement(e);t.async=!0; 101 t.src=v;s=b.getElementsByTagName(e)[0]; 102 s.parentNode.insertBefore(t,s)}(window,document,'script', 103 'https://connect.facebook.net/en_US/fbevents.js'); 104 fbq('init', '
104377456566231495
vendor: 42 bytes, lines 104-106
104'); 105 fbq('track', 'PageView'); 106
106</script>
106 107 <noscript> 108 <img height="1" width="1" style="display:none" 109 src="https://www.facebook.com/tr?id=377456566231495&ev=PageView&noscript=1" /> 110 </noscript> 111 <!-- End Facebook Pixel Code --> 112</head> 113<body> 114 <div id="app"> 115 <div style="display:flex;justify-content:center;align-items:center;min-height:100vh;background:#fafaf8"> 116 <div style="text-align:center"> 117 <div style="width:48px;height:48px;border:4px solid #FFC947;border-top-color:transparent;border-radius:50%;animation:spin .7s linear infinite;margin:0 auto 16px"></div> 118 <p style="font-family:'DM Sans',sans-serif;color:#8a8a8a;font-size:.9rem;letter-spacing:1px">Loading...</p> 119 </div> 120 </div> 121 </div> 122 <div id="blazor-error-ui"> 123 An unhandled error has occurred. 124 <a href="" class="reload">Reload</a> 125 <a class="dismiss">🗙</a> 126 </div> 127 <style> 128 @keyframes spin { to { transform: rotate(360deg); } } 129 #blazor-error-ui { background:lightyellow; bottom:0; box-shadow:0 -1px 2px rgba(0,0,0,.2); display:none; left:0; padding:.6rem 1.25rem .7rem; position:fixed; width:100%; z-index:1000; } 130 #blazor-error-ui .dismiss { cursor:pointer; position:absolute; right:.75rem; top:.5rem; } 131 </style> 132 <!-- Blazor WASM â autostart=false. Blazor.start() is called by 133 blazor-boot.js, which is loaded LAST (after all app interop scripts 134 below) so interop objects like CodeEditorInterop are always defined 135 before any component calls them on first render. --> 136
136<script src="_framework/blazor.webassembly.js" autostart="false"></script>
136 137 138 <!-- ââ Razorpay Checkout SDK ââ --> 139
139<script src="https://checkout.razorpay.com/v1/checkout.js"></script>
139 140 141 <!-- ââ Video Player: HLS.js + Plyr ââ --> 142
142<script src="https://cdnjs.cloudflare.com/ajax/libs/hls.js/1.4.12/hls.min.js"></script>
142 143 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/plyr/3.7.8/plyr.min.css" /> 144
144<script src="https://cdnjs.cloudflare.com/ajax/libs/plyr/3.7.8/plyr.min.js"></script>
144 145 146 <!-- Quill rich-text editor (admin blog / product descriptions) --> 147 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/quill/1.3.7/quill.snow.min.css" /> 148
148<script src="https://cdnjs.cloudflare.com/ajax/libs/quill/1.3.7/quill.min.js"></script>
148 149 150 <!-- CodeMirror 5 â syntax-highlighted HTML/JS editor for the admin 151 Content Pages "Body HTML" field. htmlmixed mode highlights embedded 152
152<script> (JS) and <style> (CSS) too. Loaded from cdnjs (already 153 allowed by CSP). --> 154 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.16/codemirror.min.css" /> 155 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.16/theme/material-darker.min.css" /> 156
156<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.16/codemirror.min.js"></script>
156 157
157<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.16/mode/xml/xml.min.js"></script>
157 158
158<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.16/mode/javascript/javascript.min.js"></script>
158 159
159<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.16/mode/css/css.min.js"></script>
159 160
160<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.16/mode/htmlmixed/htmlmixed.min.js"></script>
160 161 162 <!-- ââ App Interop scripts ââ --> 163
163<script src="js/crypto-interop.js"></script>
163 164
164<script src="js/dom-interop.js"></script>
164 165
165<script src="js/razorpay-interop.js"></script>
165 166
166<script src="js/player-interop.js?v=quality1"></script>
166 167
167<script src="js/download-interop.js"></script>
167 168
168<script src="js/payu-interop.js"></script>
168 169
169<script src="js/richtext-interop.js"></script>
169 170 <!-- CCAvenue retained for legacy / fallback (no longer the default INR gateway) --> 171
171<script src="js/ccavenue-interop.js"></script>
171 172 <!-- ââ Google Identity Services (GSI) removed â using OAuth 2.0 Authorization Code flow ââ --> 173 <!-- Google reCAPTCHA v2 â explicit render mode --> 174 <!-- app-helpers.js defines onRecaptchaApiLoad and MUST load before reCAPTCHA --> 175
175<script src="js/app-helpers.js"></script>
vendor: 127 bytes, lines 175-177
175 176 <script src="https://www.google.com/recaptcha/api.js?render=explicit&onload=onRecaptchaApiLoad" async defer></script> 177
177<script src="js/recaptcha-interop.js"></script>
177 178
178<script src="js/script-injection-interop.js"></script>
178 179
179<script src="js/dynamic-page-frame.js"></script>
179 180
180<script src="js/firebase-push-interop.js"></script>
180 181
181<script src="js/affiliate-interop.js"></script>
181 182
182<script src="js/meta-pixel-interop.js"></script>
182 183
183<script src="js/ga4-interop.js"></script>
183 184
184<script src="js/openai-pixel-interop.js"></script>
184 185 186 <!-- Start Blazor LAST â after every app interop script above has loaded, so 187 interop objects (CodeEditorInterop, DomInterop, etc.) are guaranteed 188 defined before any component invokes them on first render. --> 189
189<script src="js/blazor-boot.js"></script>
vendor: 1 bytes, line 189
189
190<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":"0c038862b4ea40de88e632b433a829ed","r":1,"spa":2}' crossorigin="anonymous"></script>
190 191</body> 192</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.