https://cam.fapchat.com/pink?transaction_id=102bc0a0d92ed48173abbda013694f&aff_id=21&aff_sub=TJ_1006524281_PHUB_UPL_ALL&aff_sub2=KW_{Keywords};PUB_Pornhub+PC-+Underplayer+Adblock;SBAN_011498DFAPC18ALLEN6667L1;SCMP_1006524281;LOC_UPLVLM_74fc5c78-15b4-4af1-81eb-dac31733665e_706f4996-8bfc-4749-aa10-9848ab457669_bc1e1db8-c1c7-4d3e-a60a-e0bbdc45e65b&source=TS1-1006524281&file_id=585010&xid=4&bo=5696,5603,5645
Last Checked: Apr 17, 2023, 07:41 EDT
IP Address: | 169.150.221.147 |
ASN #: | AS60068 CDN77 ^_^, GB |
Location: | Unknown, Unknown, Unknown |
URL Reputation: |
|
Other submissions on 169.150.221.147:
-
http://s10.adtidy.net/
-
http://tcache92.com/
-
http://wcache12.com/
-
http://ipfs.tech/
-
http://spdtrk.com/
-
https://roblox.com.vc/
-
https://www.nica.com.au/js/dragdrop.js"
-
http://acache78.com/
-
http://ipfs.tech/
-
https://cdn.a00s.net/livecamaffiliates.min.js?v=1.9
Other submissions on fapchat.com:
No other submissions on this domain.
Previous checks:
No previous checks.
Domain Name: FAPCHAT.COM Registry Domain ID: 1270712127_DOMAIN_COM-VRSN Registrar WHOIS Server: whois.godaddy.com Registrar URL: https://www.godaddy.com Updated Date: 2020-09-21T16:55:30Z Creation Date: 2007-10-12T03:22:44Z Registrar Registration Expiration Date: 2025-10-12T03:22:44Z Registrar: GoDaddy.com, LLC Registrar IANA ID: 146 Registrar Abuse Contact Email: abuse@godaddy.com Registrar Abuse Contact Phone: +1.4806242505 Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited Domain Status: clientUpdateProhibited https://icann.org/epp#clientUpdateProhibited Domain Status: clientRenewProhibited https://icann.org/epp#clientRenewProhibited Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited Registry Registrant ID: Not Available From Registry Registrant Name: Registration Private Registrant Organization: Domains By Proxy, LLC Registrant Street: DomainsByProxy.com Registrant Street: 2155 E Warner Rd Registrant City: Tempe Registrant State/Province: Arizona Registrant Postal Code: 85284 Registrant Country: US Registrant Phone: +1.4806242599 Registrant Phone Ext: Registrant Fax: +1.4806242598 Registrant Fax Ext: Registrant Email: Select Contact Domain Holder link at https://www.godaddy.com/whois/results.aspx?domain=FAPCHAT.COM Registry Admin ID: Not Available From Registry Admin Name: Registration Private Admin Organization: Domains By Proxy, LLC Admin Street: DomainsByProxy.com Admin Street: 2155 E Warner Rd Admin City: Tempe Admin State/Province: Arizona Admin Postal Code: 85284 Admin Country: US Admin Phone: +1.4806242599 Admin Phone Ext: Admin Fax: +1.4806242598 Admin Fax Ext: Admin Email: Select Contact Domain Holder link at https://www.godaddy.com/whois/results.aspx?domain=FAPCHAT.COM Registry Tech ID: Not Available From Registry Tech Name: Registration Private Tech Organization: Domains By Proxy, LLC Tech Street: DomainsByProxy.com Tech Street: 2155 E Warner Rd Tech City: Tempe Tech State/Province: Arizona Tech Postal Code: 85284 Tech Country: US Tech Phone: +1.4806242599 Tech Phone Ext: Tech Fax: +1.4806242598 Tech Fax Ext: Tech Email: Select Contact Domain Holder link at https://www.godaddy.com/whois/results.aspx?domain=FAPCHAT.COM Name Server: NS-1569.AWSDNS-04.CO.UK Name Server: NS-1390.AWSDNS-45.ORG Name Server: NS-746.AWSDNS-29.NET Name Server: NS-496.AWSDNS-62.COM DNSSEC: unsigned URL of the ICANN WHOIS Data Problem Reporting System: http://wdprs.internic.net/ >>> Last update of WHOIS database: 2023-04-17T11:41:27Z <<< For more information on Whois status codes, please visit https://icann.org/epp TERMS OF USE: The data contained in this registrar's Whois database, while believed by the registrar to be reliable, is provided "as is" with no guarantee or warranties regarding its accuracy. This information is provided for the sole purpose of assisting you in obtaining information about domain name registration records. Any use of this data for any other purpose is expressly forbidden without the prior written permission of this registrar. By submitting an inquiry, you agree to these terms and limitations of warranty. In particular, you agree not to use this data to allow, enable, or otherwise support the dissemination or collection of this data, in part or in its entirety, for any purpose, such as transmission by e-mail, telephone, postal mail, facsimile or other means of mass unsolicited, commercial advertising or solicitations of any kind, including spam. You further agree not to use this data to enable high volume, automated or robotic electronic processes designed to collect or compile this data for any purpose, including mining this data for your own personal or commercial purposes. Failure to comply with these terms may result in termination of access to the Whois database. These terms may be subject to modification at any time without notice.
-
GET200 OK
https://ads.trafficjunky.net/cm?member_id=1004912501&buyeruid=A8581477053219737375
- https://rtb2-useast.afkwa.com/universalPixel?account=53470 https://dsp.adkernel.com/adkuid?r=https%3A%2F%2Frtb2-useast.afkwa.com%2FuniversalPixel%3Faccount%3D53470
- https://sync.adkernel.com/user-sync?zone=178556&t=image&r=https%3A%2F%2Fads.trafficjunky.net%2Fcm%3Fmember_id%3D1004912501%26buyeruid%3D%7BUID%7D https://ads.trafficjunky.net/cm?member_id=1004912501&buyeruid=A8581477053219737375
- https://dsp.adkernel.com/adkuid?r=https%3A%2F%2Frtb2-useast.afkwa.com%2FuniversalPixel%3Faccount%3D53470 https://rtb2-useast.afkwa.com/universalPixel?adkuid=A5365313236051572464&account=53470
<html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Chat Live with Hot Cam Girls and Nude Models | Fapchat</title> <meta name="description" content="Thousands of gorgeous cam girls and models strip nude and masturbate LIVE. Roleplaying babes offer a taste of an authentic and interactive cam porn experience. "> <link rel="canonical" href="https://cam.fapchat.com/pink"> <!-- Open Graph --> <meta property="og:title" content="Chat Live with Hot Cam Girls and Nude Models | Fapchat"> <meta property="og:description" content="Thousands of gorgeous cam girls and models strip nude and masturbate LIVE. Roleplaying babes offer a taste of an authentic and interactive cam porn experience. "> <meta property="og:url" content="https://cam.fapchat.com/pink"> <meta property="og:type" content="website"> <meta name="robots" content="noindex"> <!-- Favicons --> <link rel="shortcut icon" type="image/ico" href="/favicon.ico"> <!-- CSS --> <link rel="stylesheet" href="https://selfservicelps.webdev.staging.hydrahub.io/templates/designer/css/style.dotsass" as="style"> <link rel="stylesheet" href="/templates/designer/css/override/style.dotsass" as="style"> <!-- Preload --> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin=""> <!-- Third parties CSS --> <!-- Fonts --><link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700;800&display=swap" rel="stylesheet"> <!-- JavaScript --> <script type="text/javascript" async="" src="https://www.google-analytics.com/analytics.js"></script><script gtm="GTM-NTFRC7B" type="text/javascript" async="" src="https://www.google-analytics.com/gtm/optimize.js?id=GTM-KPSK3T8"></script><script async="" src="https://www.googletagmanager.com/gtm.js?id=GTM-NTFRC7B"></script><script> const pageEvent = { event: 'UA_CRData', optimizeContainerId: 'GTM-KPSK3T8', UA_ID: 'UA-19179658-46' } window.dataLayer = [pageEvent]; (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', 'GTM-NTFRC7B'); </script> <style> *, button { font-family: "Montserrat", sans-serif; } </style> </head> <body id="bodyBox"> <!-- Google Tag Manager (noscript) --> <noscript> <iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NTFRC7B" height="0" width="0" style="display:none;visibility:hidden"></iframe> </noscript> <!-- End Google Tag Manager (noscript) --> <style> .header-container { background: rgba(255, 255, 255, 1) ; background-position: center center ; background-size: cover ; background-repeat: no-repeat ; } .headerCtaLogin { color: #000000; } .$headerCtaClass:hover{ color: $header.textCtaLoginColorHover!important; } .video-container { background: url(/dA/178ee6fd54/backgroundImageMobile/bgmobile-pink.png), #ffd6e5 ; background-position: center top ; background-size: cover ; background-repeat: no-repeat ; } @media (min-width: 1024px) { .video-container { background: url(/dA/178ee6fd54/backgroundImage/bg-pink.png), #ffd6e5 ; background-position: center center ; background-size: cover ; background-repeat: no-repeat ; } } .bullets-container { background: #ffffff ; background-position: center center ; background-size: cover ; background-repeat: no-repeat ; } .features-container { background: url(/dA/21e327d7c7/backgroundImageMobile/feature2-pink.png), #ffd6e5 ; background-position: center center ; background-size: cover ; background-repeat: no-repeat ; } @media (min-width: 1024px) { .features-container { background: url(/dA/21e327d7c7/background/feature-pink.png), #ffd6e5 ; background-position: center center ; background-size: cover ; background-repeat: no-repeat ; } } .features-container { color: #03163f; align-items: flex-start; } .features-container strong { color: #03163f; } .features-container .wysiwyg{ } @media (min-width: 1024px){ .features-container .wysiwyg { } } .richtext-container { background: #ffffff ; background-position: center center; background-size: cover; background-repeat: no-repeat; } .richtext-container strong { color: #03163F; } .richtext-container a { color: #03163F; border: 4px solid #03163F; } .richtext-container a:hover { color: #ffffff; border: 4px solid #03163F; background: #03163F; } .footer-bg-wrap { background: #000000 ; background-position: center center ; background-size: cover ; background-repeat: no-repeat ; } </style> <main> <div style="display:none"> $footer.backgroundImage.shortyUrl $footer.backgroundImageMobile.shortyUrl $mailcatcher.backgroundImage.shortyUrl $mailcatcher.backgroundImageMobile.shortyUrl $mailcatcher.modalBackgroundImage.shortyUrl $mailcatcher.mobileModalBackgroundImage.shortyUrl $carousel.backgroundImage.shortyUrl $carousel.backgroundImageMobile.shortyUrl /dA/21e327d7c7/background/feature-pink.png /dA/21e327d7c7/backgroundImageMobile/feature2-pink.png $richText.backgroundImage.shortyUrl $richText.backgroundImageMobile.shortyUrl $hero.imgDesktop.shortyUrl $hero.imgMobile.shortyUrl $bullets.backgroundImage.shortyUrl $bullets.backgroundImageMobile.shortyUrl /dA/178ee6fd54/backgroundImage/bg-pink.png /dA/178ee6fd54/backgroundImageMobile/bgmobile-pink.png $header.backgroundImage.shortyUrl $header.backgroundImageMobile.shortyUrl </div> <div class="overlay" onclick="togglePanel()"></div> <section class="headerSection column"> <header class="header row header-container" style="order: 1; justify-content: space-between;"> <div class="leftHeader column"> <img src="/dA/2d5022d2c4/image/logo-fapchat.svg" alt="Logo" aria-label="Logo" data-event-label="header - Logo"> </div> <div class="rightHeader row"> <div class="cta-box column"> <a href="/out/signup-hp?a=21&t=102bc0a0d92ed48173abbda013694f&r=aHR0cHM6Ly9mYXBjaGF0LmNvbS9qb2luP2FmZl9pZD0yMSZ0cmFuc2FjdGlvbl9pZD0xMDJiYzBhMGQ5MmVkNDgxNzNhYmJkYTAxMzY5NGYmeGlkPTQ&v=597" rel="nofollow" class="cta urlManager headerCta0 ctaHeaderNavbar" data-event-label="header - CTA - Create my account"> Create my account </a> <style> .headerCta0 { color: #ffffff !important;background: #000000 !important;border-radius: 55px !important; transition: all 0.2s !important; } .headerCta0.ctaMobile { } .headerCta0:hover { color: #ffffff !important;background: #000000 !important; } </style> </div> </div> </header> </section> <section id="videoSection" class="video-container video-container-bg row with-background" style="order: 2;"> <video src="/dA/178ee6fd54/video/video_1280.mp4" poster="/dA/178ee6fd54/poster/bethbennetposter.jpg" playsinline="" controls="" data-event-label="video - controls"> </video> <img src="/dA/178ee6fd54/backgroundImage/bg-pink.png" style="display: none;"> <img src="/dA/178ee6fd54/backgroundImageMobile/bgmobile-pink.png" style="display: none;"> </section> <section id="bulletSection" class="bullets-container column" style="order: 3;"> <div class="column"> <div class="wysiwyg"><h1>STOP JUST WATCHING: <br><em><strong>BE PART OF THE ACTION!</strong></em></h1></div> <ul class="row"> <li class="column"> <img loading="lazy" src="/dA/7478696bb5/bullet1/phone-pink.png"> <span>SIGN UP IN A FLASH</span> </li> <li class="column"> <img loading="lazy" src="/dA/7478696bb5/bullet2/boobs-pink.png"> <span>CHAT WITH YOUR FAVORITE MODEL</span> </li> <li class="column"> <img loading="lazy" src="/dA/7478696bb5/bullet3/box-pink.png"> <span>RELEASE THE PRESSURE</span> </li> </ul> </div> <a href="/out/signup-hp?a=21&t=102bc0a0d92ed48173abbda013694f&r=aHR0cHM6Ly9mYXBjaGF0LmNvbS9qb2luP2FmZl9pZD0yMSZ0cmFuc2FjdGlvbl9pZD0xMDJiYzBhMGQ5MmVkNDgxNzNhYmJkYTAxMzY5NGYmeGlkPTQ&v=597" rel="nofollow" class="cta urlManager bulletsCta1 " data-event-label="bullets - CTA - SIGN UP NOW"> SIGN UP NOW </a> <style> .bulletsCta1 { color: #ffffff !important;background: #000000 !important;border-color: #000000 !important;border-style: solid !important;border-width: 4px !important;border-radius: 55px !important; transition: all 0.2s !important; } .bulletsCta1.ctaMobile { } .bulletsCta1:hover { color: #ffffff !important;background: #000000 !important;border-color: #000000 !important; } </style> </section> <section id="featureSection" class="features-container column" style="order: 5;"> <div class="wysiwyg"> <h1>ENJOY THE BEST FAP<strong><br><em>FOR YOUR BUCK</em></strong></h1> <p>REAL PEOPLE, REAL PLEASURE</p> <p><br>UNLIMITED FANTASIES</p> <p><br>SAFE & ANONYMOUS</p> <p><br>NO SURPRISE FEES</p> <p><br>NO ANNOYING AD</p> <p><br>NO JUDGMENT</p> <a href="/out/signup-hp?a=21&t=102bc0a0d92ed48173abbda013694f&r=aHR0cHM6Ly9mYXBjaGF0LmNvbS9qb2luP2FmZl9pZD0yMSZ0cmFuc2FjdGlvbl9pZD0xMDJiYzBhMGQ5MmVkNDgxNzNhYmJkYTAxMzY5NGYmeGlkPTQ&v=597" rel="nofollow" class="cta urlManager featuresCta2 " data-event-label="features - CTA - START A CHAT"> START A CHAT </a> <style> .featuresCta2 { color: #ffffff !important;background: #000000 !important;border-radius: 55px !important; transition: all 0.2s !important; } .featuresCta2.ctaMobile { } .featuresCta2:hover { color: #000000 !important;background: #00ffff !important; } </style> </div> </section> <section id="richTextSection" class="richtext-container" style="color: #03163F; order: 6;"> <div class="wysiwyg"> <h1><strong><em>FAP YOUR <br>STRESS AWAY<br></em></strong></h1> <p style="text-align: justify;">No one should ever feel ashamed about their urge to fap. <strong>Millions of people like you</strong> are getting bored of just watching videos that neither reflect reality nor their <strong>personal fantasies.</strong> Thanks to Fapchat, you can now fulfill your desires and take a load off in the most <strong>satisfying</strong> and <strong>interactive</strong> way possible!</p> <p style="text-align: justify;"><br>Chat <strong>in real time</strong> as often and for as long as you need in a <strong>safe & secure</strong> environment. What an awesome way to find comfort after a hard day! Choose among hundreds of women, men, trans and couples and <strong>fap anonymously</strong>, satisfactorily and shamelessly! </p> <p style="text-align: justify;"><br>Make them do whatever turns you on in exchange for a tip and <strong>fap your stress away</strong>, no strings attached! You don’t have to pay anything until you’re ready to try the full experience. Access unlimited public chat rooms <strong>for free</strong> and buy gold to tip your favorite models in gold shows, private shows or cam-to-cam sessions <strong>(1 gold = $1)</strong>!</p> <p style="text-align: justify;"><br>Go ahead, don’t hold your urge to fap. Reward yourself with a <strong>100% custom experience</strong> that will push your worries away. Let’s free yourself from your daily stress with some <strong>caring</strong> and <strong>kinky company</strong>. Make yourself at home on Fapchat!</p> </div> </section> </main> <footer class="footer-bg-wrap footer-container column column-between" style="color: #ffffff; order: 10;"> <a href="" aria-label="fapchat" target="_blank" data-event-label="footer - Logo"> <img class="logo" src="/dA/bcffd810d8/image/fapchat-logo-footer-pink.png" alt="fapchat"> </a> <div class="wysiwyg column column-end"> <p>© Copyright <span class="datetime">2023</span> – All Rights Reserved</p> <p> <a href="/2257" target="_blank" rel="nofollow" data-event-label="footer - 2257">2257</a> <a href="/antispam" target="_blank" rel="nofollow" data-event-label="footer - antispam">Anti-Spam</a> </p> <p> </p> <p> <img src="/asset/img/rta.svg" alt="Restricted to Adults" style="max-width: 35px;"> <img src="/asset/img/asacp.svg" alt="Association of Sites Advocating Child Protection"> </p> </div> </footer> <script src="https://gateway.fapchat.com/wswidget/ws-session-widget.min.js"></script> <script> let useFallbackLinks = false let reasonError = '' const widgetAffId = typeof customAffId !== 'undefined' ? customAffId : '5545'; const widgetOfferId = typeof customOfferId !== 'undefined' ? customOfferId : '8480'; const widgetUrlId = typeof customUrlId !== 'undefined' ? customUrlId : '31125'; const outlinks_set_id = typeof customOutlinksId !== 'undefined' ? customOutlinksId : '4'; const overrideUrl = typeof customOverrideUrl !== 'undefined' ? customOverrideUrl : 'https://cam.fapchat.com'; const useCampaignId = typeof customUseCampaignId !== 'undefined' ? customUseCampaignId : false ; const campaignId = typeof customCampaignId !== 'undefined' ? customCampaignId : '$CAMPAIGNID'; const sessionWidgetLoaded = new Promise((resolve, reject) => { sessionWidgetLoadedCorrectly = resolve sessionWidgetNotLoadedCorrectly = reject }) const generateFailData = () => { const params = new URLSearchParams(window.location.search) const affId = params.get('aff_id') const offerId = params.get('offer_id') const urlId = params.get('url_id') const transactionId = 'FAILED_'.concat(affId ? affId : widgetAffId, '_', offerId ? offerId : widgetOfferId, '_', urlId ? urlId : widgetUrlId) const sessionData = { session: { aff_id: affId ? affId : widgetAffId, offer_id: offerId ? offerId : widgetOfferId, url_id: urlId ? urlId : widgetUrlId, transaction_id: transactionId } } return sessionData } const generateReasonError = (session) => { const reason = `reason=NOWIDGET&aff_id=${session.aff_id}&offer_id=${session.offer_id}&url_id=${session.url_id}` return btoa(reason).replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '') } try { let options = { aff_id: widgetAffId, override_url: overrideUrl, outlinks_set_id: outlinks_set_id, fallback_outlinks: { } } if(useCampaignId && campaignId){ options.campaign_id = campaignId; } else{ options.offer_id = widgetOfferId; options.url_id = widgetUrlId; } sessionWidget.init(options, function callback (isSuccessful) { if(!isSuccessful) throw 'Unexpected loading Error' sessionWidgetLoadedCorrectly() }) } catch (err) { console.error('Could not load session', err) sessionWidgetNotLoadedCorrectly() if(typeof(sessionWidget) == 'undefined') { localStorage.setItem('sessionWidget', JSON.stringify(generateFailData())) } else { useFallbackLinks = true reasonError = generateReasonError(sessionWidget.session) } } const fallbackUrls = { } const getDefaultOulink = (outlinkTag = "signup") => { const currentSession = JSON.parse(localStorage.getItem('sessionWidget')).session let newUrl = fallbackUrls[outlinkTag] if (!newUrl) { console.error('URL not found') console.info('Default link used') newUrl = fallbackUrls["signup"] } Object.keys(currentSession).forEach(key => { const reg = new RegExp(`{${key}}`, 'g') newUrl = newUrl.replace(reg, currentSession[key] || '') }) return newUrl } </script> <script> const params = new URLSearchParams(window.location.search) const defaultVoluumOutlink = 'https://a.vfghc.com/click' const vlmParam = params.get('vlm') === "1" || params.get('voluum') === "1" document.addEventListener('DOMContentLoaded', () => { const setVoluumOutlinks = (className = "urlManager", overrideOutlink) => { const outlink = overrideOutlink ? `https://${overrideOutlink}/click` : defaultVoluumOutlink document.querySelectorAll(`.${className}`).forEach((element) => element.setAttribute("href", outlink)) } if (vlmParam) { let overrideOutlink = params.get('vlmd') setVoluumOutlinks('urlManager', overrideOutlink) } }) </script> <script> const outlinkType = "signup-hp" || "signup" const coupon = '' const originalLinkDomain = '' const replacementLinkTemplate = 'https://a.vfghc.com/click' const defaultOutlink = '' const replaceCTAUrlFromParameterLocation = () => { const params = new URLSearchParams(window.location.search) const offer_id = params.get('offer_id') const campaign_id = params.get('campaign_id') const aff_id = params.get('aff_id') const aff_sub = params.get('aff_sub') const aff_sub2 = params.get('aff_sub2') const aff_sub3 = params.get('aff_sub3') const aff_sub4 = params.get('aff_sub4') const aff_sub5 = params.get('aff_sub5') const source = params.get('source') const actions = params.get('actions') const file_id = params.get('file_id') const vlmd = params.get('vlmd') let url; if(vlmd) { url = `${vlmd}/click` if (!vlmd.includes('http://') && !vlmd.includes('https://')) { url = `https://${url}` } } else { url = replacementLinkTemplate } const newUrl = new URL(url) if (offer_id || campaign_id || aff_id || aff_sub || aff_sub2 || aff_sub3 || aff_sub4 || aff_sub5 || source || file_id) { if (offer_id) { newUrl.searchParams.set('offer_id', offer_id) } if (campaign_id) { newUrl.searchParams.set('campaign_id', campaign_id) } if (aff_id) { newUrl.searchParams.set('aff_id', aff_id) } if (aff_sub) { newUrl.searchParams.set('aff_sub', aff_sub) } if (aff_sub2) { newUrl.searchParams.set('aff_sub2', aff_sub2) } if (aff_sub3) { newUrl.searchParams.set('aff_sub3', aff_sub3) } if (aff_sub4) { newUrl.searchParams.set('aff_sub4', aff_sub4) } if (aff_sub5) { newUrl.searchParams.set('aff_sub5', aff_sub5) } if (source) { newUrl.searchParams.set('source', source) } if (actions) { newUrl.searchParams.set('actions', actions) } if (file_id) { newUrl.searchParams.set('file_id', file_id) } return newUrl.toString() } else return '' } const setElementsHref = (key = "signup", className = "urlManager", fallback = false) => { const outlinks = document.querySelectorAll(`.${className}`); outlinks.forEach(element => { if(element.tagName !== 'A') { return } const existingHref = element.getAttribute("href"); const outRoute = existingHref?.includes('/out') //if link exists and is external, add the aff params, for internal /path link, the try/catch will fail, no nothing if(!outRoute && existingHref && typeof sessionWidget !== 'undefined') { try { let outlink = new URL(existingHref); const session = sessionWidget.session; const params = { aff_id: session.aff_id, transaction_id: session.transaction_id, xid: session.outlinks_set_id } for (const key in params) { const value = params[key]; outlink.searchParams.set(key, value); } element.href = outlink.href; } catch (e) { } return } //pname and smid data attributes on the link, passed on as params to the session widget const pname = element.getAttribute('data-pname') const smid = element.getAttribute('data-smid') //custom outlink type on an individual link, pass this key to the session widget const dataOutlinkType = element.getAttribute('data-outlinkType') //key for the session widget, needs to be looped here, because each div can have custom key attriubutes let sessionWidgetKey = key; const params = {}; if(pname) { params.pname = pname; } if(smid) { params.smid = smid; } if(dataOutlinkType) { sessionWidgetKey = dataOutlinkType; } const outlink = !fallback ? sessionWidget.getOutlink(sessionWidgetKey, params) : getDefaultOulink() element.setAttribute("href", outlink) }) } const setElementsHrefWithCoupon = (coupon, key = "signup", className = "urlManager") => { const outlink = sessionWidget.getOutlinkDetails(key, coupon) document.querySelectorAll(`.${className}`).forEach((element) => element.setAttribute("href", outlink)) } const setElementsHrefWithVoluum = (coupon, key = "signup", className = "urlManager") => { const outlink = replaceCTAUrlFromParameterLocation() document.querySelectorAll(`.${className}`).forEach((element) => element.setAttribute("href", outlink)) } const setElementsJoinRoute = (form, urlParams, className = "urlManager") => { if (typeof sessionWidget !== 'undefined') { const params = {}; let pname = urlParams.get('pname') let smid = urlParams.get('smid') if(pname) { params.pname = pname; } if(smid) { params.smid = smid; } const outlinks = document.querySelectorAll(`.${className}`); outlinks.forEach(element => { let dataPname = element.getAttribute('data-pname') let dataSmid = element.getAttribute('data-smid') if(dataPname) { params.pname = dataPname; } if(dataSmid) { params.smid = dataSmid; } element.href = sessionWidget.getOutlinkDetails('signup-hp', params).url }) } } const setSessionWidget = () => { sessionWidgetLoaded?.then(() => { if (typeof vlmParam !== 'undefined' && vlmParam) return const queryString = window.location.search; const urlParams = new URLSearchParams(queryString); const allUrlParams = new URL(window.location.href).searchParams; const form = urlParams.get('form') if((form === '9') || (form === '10')) { setElementsJoinRoute(form, urlParams) } else if (coupon) { setElementsHrefWithCoupon({ coupon }, outlinkType) } else { setElementsHref(outlinkType) } }).catch((error) => { error ? console.error(error) : console.error('Session Widget failed to load, using fallback') if (useFallbackLinks) { const ctaUrlError = `/out/signup?err=${reasonError}` document.querySelectorAll(".urlManager").forEach((element) => element.setAttribute("href", ctaUrlError)) return } setElementsHref("signup", "urlManager", true) }) } setSessionWidget() </script> <script> const pushToDataLayer = data => { const errors = [] const dataToPush = { ...data, eventAction: data.eventAction || 'click', event: 'UA_CREvent' } const validationObj = ['eventCategory', 'eventLabel', 'eventAction'] const validate = event => typeof dataToPush[event] === 'string' validationObj.forEach(event => validate(event) || errors.push(`${event} invalid or missing`)) if (errors.length === 0) { window .dataLayer .push(dataToPush) } else { console.error(errors) } } </script><script> const _gtmHandler = (event) => { const { eventCategory = 'step 1', eventAction = 'click', eventLabel } = event.currentTarget.dataset const dataLayer = { eventCategory, eventAction, eventLabel } pushToDataLayer(dataLayer) } const GTMEventHandlers = (type) => { document.querySelectorAll('[data-event-label]').forEach(element => { if (type === 'remove') { element.removeEventListener('click', _gtmHandler) } else if (type === 'add') { element.addEventListener('click', _gtmHandler) } else { element.addEventListener('click', _gtmHandler) } }) } GTMEventHandlers('add') </script> <script> const fontFamily = '' || 'Montserrat' const fontWeights = '' || 'Montserrat[400,500,600,700,800]' if (fontFamily !== '') { const cleanFontWeights = fontWeights.split(`${fontFamily}`)[1].split('[')[1].split(']')[0].split(',').sort().map(w => w = `${w}`).toString().replaceAll(',', ';') const finalGoogleFontUrl = `https://fonts.googleapis.com/css2?family=${fontFamily}:wght@${cleanFontWeights}&display=swap` const htmlHeadElement = document.querySelector('head') Array.from(htmlHeadElement.childNodes).find(node => { if (node.nodeValue === " Fonts ") { const linkElement = document.createElement('link') linkElement.href = finalGoogleFontUrl linkElement.rel = "stylesheet" const cssStyling = ` <style> *, button { font-family: "${fontFamily.replaceAll('+', ' ')}", sans-serif; } </style> ` document.querySelector('head').insertBefore(linkElement, node.nextSibling) document.querySelector('head').insertAdjacentHTML('beforeend', cssStyling) } }) } </script> <script> const togglePanel = () => { document.querySelector(".overlay").classList.toggle("active") document.querySelector(".mobilePanel").classList.toggle("slideIn") } </script> <script> const videoLink = document.querySelector("#video") const videoLinkMobile = document.querySelector("#videoMobile") const videoSection = document.querySelector('#videoSection'); videoLink?.addEventListener('click', function () { videoSection.scrollIntoView(true); document.querySelector(".overlay").classList.toggle("active"); document.querySelector(".mobilePanel").classList.toggle("slideIn"); }); videoLinkMobile?.addEventListener('click', function () { videoSection.scrollIntoView(true); document.querySelector(".overlay").classList.toggle("active"); document.querySelector(".mobilePanel").classList.toggle("slideIn"); }); </script> <script> const bulletLink = document.querySelector('#bullets') const bulletLinkMobile = document.querySelector('#bulletsMobile') const bulletSection = document.querySelector('#bulletSection'); bulletLink?.addEventListener('click', function () { bulletSection.scrollIntoView(true); document.querySelector(".overlay").classList.toggle("active") document.querySelector(".mobilePanel").classList.toggle("slideIn") }); bulletLinkMobile?.addEventListener('click', function () { bulletSection.scrollIntoView(true); document.querySelector(".overlay").classList.toggle("active") document.querySelector(".mobilePanel").classList.toggle("slideIn") }); </script> <script> const featureLink = document.querySelector("#features") const featureLinkMobile = document.querySelector("#featuresMobile") const featureSection = document.querySelector('#featureSection'); featureLink?.addEventListener('click', function () { featureSection.scrollIntoView(true); document.querySelector(".overlay").classList.toggle("active"); document.querySelector(".mobilePanel").classList.toggle("slideIn"); }); featureLinkMobile?.addEventListener('click', function () { featureSection.scrollIntoView(true); document.querySelector(".overlay").classList.toggle("active"); document.querySelector(".mobilePanel").classList.toggle("slideIn"); }); </script> <script> const richTextAnchorTags = document.querySelectorAll('.richtext-container .wysiwyg a') richTextAnchorTags.forEach((anchor) => { anchor.classList.add('urlManager') }) const richTextLink = document.querySelector("#richText") const richTextLinkMobile = document.querySelector("#richTextMobile") const richTextSection = document.querySelector('#richTextSection'); richTextLink?.addEventListener('click', function () { richTextSection.scrollIntoView(true); document.querySelector(".overlay").classList.toggle("active"); document.querySelector(".mobilePanel").classList.toggle("slideIn"); }); richTextLinkMobile?.addEventListener('click', function () { richTextSection.scrollIntoView(true); document.querySelector(".overlay").classList.toggle("active"); document.querySelector(".mobilePanel").classList.toggle("slideIn"); }); </script> <script> const dateTimeElement = document.querySelector('.datetime') dateTimeElement.innerHTML = new Date().getFullYear() </script> <img style="width:1;height:1;display:none;" src="https://rtb2-useast.afkwa.com/universalPixel?account=53470"><img src="https://sync.adkernel.com/user-sync?zone=178556&t=image&r=https%3A%2F%2Fads.trafficjunky.net%2Fcm%3Fmember_id%3D1004912501%26buyeruid%3D%7BUID%7D" style="display:none" width="0" height="0"></body></html>