1<!DOCTYPE html> 2<html lang="en"> 3 <head> 4 <meta charset="utf-8"/> 5 <link href="https://media.base44.com/images/public/6932faec2ab0587dea6ed5f1/c0a01dbd9_ChatGPTImageMay3202609_29_23PM.png" rel="icon" type="image/svg+xml"/> 6 <meta content="width=device-width, initial-scale=1.0" name="viewport"/> 7 <link href="/manifest.json" rel="manifest"/> 8 <title> 9 FM Web Solutions 10 </title> 11 <meta content="FM Web Solutions manages 5 data types including contact submissions. Helps you organize, track, and share your work in 1 place for teams and solo users." name="description"/> 12 <meta content="website" property="og:type"/> 13 <meta content="en_US" property="og:locale"/> 14 <meta content="FM Web Solutions" property="og:site_name"/> 15 <meta content="YOUR_FACEBOOK_APP_ID" property="fb:app_id"/> 16 <meta content="FM Web Solutions" property="og:title"/> 17 <meta content="FM Web Solutions manages 5 data types including contact submissions. Helps you organize, track, and share your work in 1 place for teams and solo users." property="og:description"/> 18 <meta content="https://media.base44.com/images/public/6932faec2ab0587dea6ed5f1/c0a01dbd9_ChatGPTImageMay3202609_29_23PM.png/v1/fill/w_1200,h_630/c0a01dbd9_ChatGPTImageMay3202609_29_23PM.png" property="og:image"/> 19 <meta content="1200" property="og:image:width"/> 20 <meta content="630" property="og:image:height"/> 21 <meta content="https://fmwebsolutions.org" property="og:url"/> 22 <meta content="summary_large_image" name="twitter:card"/> 23 <meta content="FM Web Solutions" name="twitter:title"/> 24 <meta content="FM Web Solutions manages 5 data types including contact submissions. Helps you organize, track, and share your work in 1 place for teams and solo users." name="twitter:description"/> 25 <meta content="https://media.base44.com/images/public/6932faec2ab0587dea6ed5f1/c0a01dbd9_ChatGPTImageMay3202609_29_23PM.png/v1/fill/w_1200,h_630/c0a01dbd9_ChatGPTImageMay3202609_29_23PM.png" name="twitter:image"/> 26 <!-- Preload critical assets --> 27 <link as="image" href="https://qtrypzzcjebvfcihiynt.supabase.co/storage/v1/object/public/base44-prod/public/6932faec2ab0587dea6ed5f1/66b8bc415_ChatGPTImageFeb12202610_28_37AM.png" rel="preload"/> 28 <link as="image" href="https://images.unsplash.com/photo-1460925895917-afdab827c52f?w=800&q=80" rel="preload"/> 29 <!-- Google tag (gtag.js) -->
vendor: 69 bytes, lines 29-30
29 30 <script async="" src="https://www.googletagmanager.com/gtag/js?id=
30G-BN3NFQXYQP
vendor: 17 bytes, lines 30-32
30"> 31 </script> 32
32<script> 33
vendor: 145 bytes, lines 33-36
33window.dataLayer = window.dataLayer || []; 34 function gtag(){dataLayer.push(arguments);} 35 gtag('js', new Date()); 36 gtag('config', '
36G-BN3NFQXYQP
vendor: 6 bytes, lines 36-37
36'); 37
37</script>
37 38
38<script crossorigin="" src="/assets/index-CGBl_JYw.js" type="module"> 39 </script>
39 40 <link crossorigin="" href="/assets/index-Dik8Zmk5.css" rel="stylesheet"/> 41 <meta content="https://fmwebsolutions.org" name="twitter:url"/> 42
42<script> 43 (function () { 44 var titles = {"/about": "About | FM Web Solutions", "/alert-settings": "Alert Settings | FM Web Solutions", "/alertsettings": "Alert Settings | FM Web Solutions", "/backlinkanalysis": "Backlink Analysis | FM Web Solutions", "/backlink-analysis": "Backlink Analysis | FM Web Solutions", "/competitor-analysis": "Competitor Analysis | FM Web Solutions", "/competitoranalysis": "Competitor Analysis | FM Web Solutions", "/contact": "Contact | FM Web Solutions", "/contactsubmissions": "Contact Submissions | FM Web Solutions", "/contact-submissions": "Contact Submissions | FM Web Solutions", "/googleauthcallback": "Google Auth Callback | FM Web Solutions", "/google-auth-callback": "Google Auth Callback | FM Web Solutions", "/google-auth-setup": "Google Auth Setup | FM Web Solutions", "/googleauthsetup": "Google Auth Setup | FM Web Solutions", "/portfolio": "Portfolio | FM Web Solutions", "/seoaudit": "SEO Audit | FM Web Solutions", "/seo-audit": "SEO Audit | FM Web Solutions", "/services": "Services | FM Web Solutions", "/submit-ticket": "Submit Ticket | FM Web Solutions", "/submitticket": "Submit Ticket | FM Web Solutions", "/tickets": "Tickets | FM Web Solutions", "/about-us": "About Us | FM Web Solutions", "/our-clients": "Our Clients | FM Web Solutions", "/leads": "Leads | FM Web Solutions", "/": "FM Web Solutions", "/analytics": "Analytics | FM Web Solutions", "/admindashboard": "Admin Dashboard | FM Web Solutions", "/admin-dashboard": "Admin Dashboard | FM Web Solutions", "/blog": "Blog | FM Web Solutions", "/gscdashboard": "GSC Dashboard | FM Web Solutions", "/gsc-dashboard": "GSC Dashboard | FM Web Solutions", "/seo-dashboard": "SEO Dashboard | FM Web Solutions", "/seodashboard": "SEO Dashboard | FM Web Solutions", "/ga-dashboard": "GA Dashboard | FM Web Solutions", "/gadashboard": "GA Dashboard | FM Web Solutions", "/home": "FM Web Solutions"}; 45 // PascalCase boundaries -> "-", mirroring _PASCAL_BOUNDARY_RE without lookbehind 46 // (old Safari fails to PARSE a lookbehind, taking the whole script down). 47 var dashed = function (s) { 48 return s.replace(/([a-z0-9])([A-Z])/g, "$1-$2").replace(/([A-Z])([A-Z][a-z])/g, "$1-$2"); 49 }; 50 var decode = function (s) { 51 // A %2F inside ONE segment must not become a structural separator: /blog/foo%2Fbar is a 52 // dynamic slug, and letting it split would match a static /blog/foo/bar and write ITS title. 53 try { var d = decodeURIComponent(s); return d.indexOf("/") < 0 ? d : s; } catch (e) { return s; } 54 }; 55 var segments = function (path) { return path.split("/").filter(Boolean).map(decode); }; 56 var norm = function (path) { 57 var parts = segments(path).map(function (s) { return dashed(s).toLowerCase(); }); 58 return parts.length ? "/" + parts.join("/") : "/"; 59 }; 60 var lastPath = location.pathname, written = document.title, on = true; 61 var sync = function () { 62 // Path only: a hash/query change is the same page, and the SDK strips its own auth 63 // params with replaceState -- neither must clobber a server-rendered title in place. 64 if (!on || location.pathname === lastPath) return; 65 lastPath = location.pathname; 66 if (document.title !== written) { on = false; return; } 67 // Write ONLY a title the map proves. An unmapped path is a dynamic route (/blog/:slug) the 68 // map cannot carry, and writing a placeholder there is destructive, not merely vague: the 69 // prerender worker runs no setUserAgent, so its capture browser reads as human and executes 70 // this script, and coordinator.js's settle wait explicitly tolerates a full navigation -- 71 // a redirect landing on an unmapped path would bake the placeholder into the stored 72 // snapshot. Leaving the title alone degrades to today's behavior instead. 73 // Exact lookup only. A dash-stripped retry here would let a genuinely different /set-up 74 // claim /setup: the map carries a dash-free key only where a PascalCase boundary put the 75 // dashes there, and the client cannot tell the two apart. The map emits every reachable 76 // shape per segment instead (_client_url_variants). 77 var title = titles[norm(location.pathname)]; 78 if (title === undefined) return; 79 document.title = title; 80 // Re-read: the setter stores verbatim but the getter strips and collapses whitespace, so 81 // keeping the assigned string would make the next sync() read our own write as the app's. 82 written = document.title; 83 }; 84 var wrap = function (fn) { 85 // The history entry is already pushed by the time sync() runs, so a throw here would 86 // surface inside the host app's router and break navigation. This is injected into apps 87 // we cannot test, so it swallows rather than trusting the trace. 88 return function () { 89 var r = fn.apply(this, arguments);
90 try { sync(); } catch (e) {} 91 return r; 92 }; 93 }; 94 history.pushState = wrap(history.pushState); 95 history.replaceState = wrap(history.replaceState); 96 window.addEventListener("popstate", sync); 97})(); 98 </script>
98 99 <meta content="yes" name="mobile-web-app-capable"/> 100 <meta content="black" name="apple-mobile-web-app-status-bar-style"/> 101 <meta content="FM Web Solutions" name="apple-mobile-web-app-title"/> 102 <link href="https://fmwebsolutions.org" rel="canonical"/> 103
103<script data-seo-source="builder" type="application/ld+json"> 104 {"name": "FM Web Solutions", "@context": "https://schema.org", "@type": "WebSite", "url": "https://fmwebsolutions.org"} 105 </script>
105 106
106<script data-seo-source="builder" type="application/ld+json"> 107 {"name": "FM Web Solutions", "logo": "https://qtrypzzcjebvfcihiynt.supabase.co/storage/v1/object/public/base44-prod/public/6932faec2ab0587dea6ed5f1/cb70a68bc_logo.png", "@context": "https://schema.org", "@type": "Organization", "url": "https://fmwebsolutions.org"} 108 </script>
108 109
109<script data-seo-source="builder" type="application/ld+json"> 110 {"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{"name": "What is FM Web Solutions?", "@type": "Question", "acceptedAnswer": {"@type": "Answer", "text": "Professional website design and development services to help businesses establish a strong online presence and achieve their digital goals."}}]} 111 </script>
111 112 </head> 113 <body> 114 <div id="root"> 115 <div data-seo-source="builder" id="seo-snapshot" style="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;"> 116 <main> 117 <header> 118 <h1> 119 FM Web Solutions 120 </h1> 121 <p> 122 FM Web Solutions manages 5 data types including contact submissions. Helps you organize, track, and share your work in 1 place for teams and solo users. 123 </p> 124 </header> 125 <nav aria-label="Pages"> 126 <h2> 127 Pages 128 </h2> 129 <ul> 130 <li> 131 <a href="/About"> 132 About 133 </a> 134 â About on FM Web Solutions. FM Web Solutions manages 5 data types including contact submissions. 135 </li> 136 <li> 137 <a href="/AlertSettings"> 138 Alert Settings 139 </a> 140 â Alert Settings on FM Web Solutions. FM Web Solutions manages 5 data types including contact submissions. 141 </li> 142 <li> 143 <a href="/BacklinkAnalysis"> 144 Backlink Analysis 145 </a> 146 â Backlink Analysis on FM Web Solutions. FM Web Solutions manages 5 data types including contact submissions. 147 </li> 148 <li> 149 <a href="/CompetitorAnalysis"> 150 Competitor Analysis 151 </a> 152 â Competitor Analysis on FM Web Solutions. FM Web Solutions manages 5 data types including contact submissions. 153 </li> 154 <li> 155 <a href="/Contact"> 156 Contact 157 </a> 158 â Contact on FM Web Solutions. FM Web Solutions manages 5 data types including contact submissions. 159 </li> 160 <li> 161 <a href="/ContactSubmissions"> 162 Contact Submissions 163 </a> 164 â Contact Submissions on FM Web Solutions. FM Web Solutions manages 5 data types including contact submissions. 165 </li> 166 <li> 167 <a href="/GoogleAuthCallback"> 168 Google Auth Callback 169 </a> 170 â Google Auth Callback on FM Web Solutions. FM Web Solutions manages 5 data types including contact submissions. 171 </li> 172 <li> 173 <a href="/GoogleAuthSetup"> 174 Google Auth Setup 175 </a> 176 â Google Auth Setup on FM Web Solutions. FM Web Solutions manages 5 data types including contact submissions. 177 </li> 178 <li> 179 <a href="/Portfolio"> 180 Portfolio 181 </a> 182 â Portfolio on FM Web Solutions. FM Web Solutions manages 5 data types including contact submissions. 183 </li> 184 <li> 185 <a href="/SEOAudit"> 186 SEO Audit 187 </a> 188 â SEO Audit on FM Web Solutions. FM Web Solutions manages 5 data types including contact submissions. 189 </li> 190 <li> 191 <a href="/Services"> 192 Services 193 </a> 194 â Services on FM Web Solutions. FM Web Solutions manages 5 data types including contact submissions. 195 </li> 196 <li> 197 <a href="/SubmitTicket"> 198 Submit Ticket 199 </a> 200 â Submit Ticket on FM Web Solutions. FM Web Solutions manages 5 data types including contact submissions. 201 </li> 202 <li> 203 <a href="/Tickets"> 204 Tickets 205 </a> 206 â Tickets on FM Web Solutions. FM Web Solutions manages 5 data types including contact submissions. 207 </li> 208 <li> 209 <a href="/about-us"> 210 About Us 211 </a> 212 â About Us on FM Web Solutions. FM Web Solutions manages 5 data types including contact submissions. 213 </li> 214 <li> 215 <a href="/our-clients"> 216 Our Clients 217 </a> 218 â Our Clients on FM Web Solutions. FM Web Solutions manages 5 data types including contact submissions. 219 </li> 220 <li> 221 <a href="/Leads"> 222 Leads 223 </a> 224 â Leads on FM Web Solutions. FM Web Solutions manages 5 data types including contact submissions. 225 </li> 226 <li> 227 <a href="/Analytics"> 228 Analytics 229 </a> 230 â Analytics on FM Web Solutions. FM Web Solutions manages 5 data types including contact submissions. 231 </li> 232 <li> 233 <a href="/AdminDashboard"> 234 Admin Dashboard 235 </a> 236 â Admin Dashboard on FM Web Solutions. FM Web Solutions manages 5 data types including contact submissions. 237 </li> 238 <li> 239 <a href="/Blog"> 240 Blog 241 </a> 242 â Blog on FM Web Solutions. FM Web Solutions manages 5 data types including contact submissions. 243 </li> 244 <li> 245 <a href="/GSCDashboard"> 246 GSC Dashboard 247 </a> 248 â GSC Dashboard on FM Web Solutions. FM Web Solutions manages 5 data types including contact submissions. 249 </li> 250 <li> 251 <a href="/SEODashboard"> 252 SEO Dashboard 253 </a> 254 â SEO Dashboard on FM Web Solutions. FM Web Solutions manages 5 data types including contact submissions. 255 </li> 256 <li> 257 <a href="/GADashboard"> 258 GA Dashboard 259 </a> 260 â GA Dashboard on FM Web Solutions. FM Web Solutions manages 5 data types including contact submissions. 261 </li> 262 </ul> 263 </nav> 264 </main> 265 </div> 266 </div> 267 </body> 268</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.