1<!DOCTYPE html><html lang="en"><head><meta name="description" content="MedaData facilitates expert research services with an unmatched real-world psychiatric dataset."> 2<meta name="keywords" content="psychiatric medications, real-world data, real-world evidence, real world data, prospective study, research services, behavioral health"> 3<meta property="og:title" content="CONTACT"> 4<meta property="og:description" content="MedaData facilitates expert research services with an unmatched real-world psychiatric dataset."> 5<meta property="og:image" content="https://htmlpub.com/api/og?id=gg1x1lcpx32tjslsbqxxqmm5&v=1790196147035"> 6<meta property="og:image:width" content="1200"> 7<meta property="og:image:height" content="630"> 8<meta property="og:url" content="https://www.medadataresearch.com/contact"> 9<meta name="twitter:url" content="https://www.medadataresearch.com/contact"> 10<meta property="og:type" content="website"> 11<meta property="og:site_name" content="www.medadataresearch.com"> 12<meta property="og:locale" content="en_US"> 13<meta property="fb:app_id" content="4198265810445529"> 14<meta name="twitter:card" content="summary_large_image"> 15<meta name="twitter:title" content="CONTACT"> 16<meta name="twitter:description" content="MedaData facilitates expert research services with an unmatched real-world psychiatric dataset."> 17<meta name="twitter:image" content="https://htmlpub.com/api/og?id=gg1x1lcpx32tjslsbqxxqmm5&v=1790196147035"> 18<meta name="twitter:image:width" content="1200"> 19<meta name="twitter:image:height" content="630"> 20<meta name="robots" content="index, follow"> 21<link rel="canonical" href="https://www.medadataresearch.com/contact"> 22<link rel="icon" href="https://www.medadataresearch.com/api/library/c0hftw5fl4hxscgzg7fflpki"> 23<title>CONTACT</title><style data-hp-2739 data-hp-3884>@media (max-width:959px){.site-header .column:has([data-widget-type="LpNavReact"]),.site-header .column:has([data-widget-type="LpButtonReact"]),.site-header .column:has([data-widget-type="LpSpaceReact"]){display:none !important}.site-header .site-nav .layout+.layout{display:none !important}.site-header .js-mobile-nav-trigger{opacity:1 !important}.site-header .js-image-logo,.site-header .site-nav .container{transition:none !important}}</style> 24 <meta charset="utf-8"> 25 <!-- BUILT WITH LEADPAGES https://www.leadpages.com --> 26 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 27 <meta name="viewport" content="width=device-width, initial-scale=1"> 28 29 30 31 32 33 34 35 <meta name="leadpages-served-by" content="sites"> 36 <meta name="leadpages-serving-domain" content="www.medadataresearch.com"> 37 <meta name="leadpages-legacy-pixel-domain" content="https://my.leadpages.net"> 38 <meta name="leadpages-meta-id" content="W9DsqEXC6MfLusABMHro35:ea3eeb3d-594c-ef0d-5345-b40c17a81024"> 39 <meta name="leadpages-edition" content="TM8JZpNhSs3WFrcrnyfAM3"> 40 <meta name="active-route" content="ea3eeb3d-594c-ef0d-5345-b40c17a81024"> 41 42 43 <link rel="stylesheet" href="https://classic-assets.leadpages.com/static-leadpages-net/fonts/font-awesome/6.4.2/css/all.min.css" referrerpolicy="no-referrer"> 44 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin=""> 45 <link rel="preload" as="style" href="https://fonts.googleapis.com/css?family=Lato:300,400,500,700|Montserrat:300,400,500,700|Roboto:300,400,500,700"> 46 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:300,400,500,700|Montserrat:300,400,500,700|Roboto:300,400,500,700" type="text/css" referrerpolicy="no-referrer" media="print" onload="this.media='all'"> 47 48 49 <style data-id="run-styles">/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}
49code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}*,*::before,*::after{box-sizing:border-box}html{height:100%;width:100%}html{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;background-color:#fff;box-sizing:border-box;color:#000;font-family:Roboto,sans-serif;font-size:1em;line-height:1.5;min-height:100%;position:relative}html.is-leadbox{background-color:transparent}body{min-height:100%}h1,h2,h3,h4,h1.jumbo{margin:0}p{margin:0}a{font-size:inherit}img{max-width:100%;width:100%}section{position:relative;transition:opacity .5s ease-in,min-height .5s ease-in,height .5s ease-in}.container{width:100%}.row-compose,.widget-row,.layout,.inner-column,.column{position:relative}.site-header .layout{align-items:center;min-height:64px}.column{display:flex;flex-direction:column}.inner-column{flex:1 1 auto}.inner-column:not(.area-placeholder){min-height:1px}.widget{word-wrap:break-word;padding:1vw;padding:1cqw}.leadbox .widget{padding:1vw;padding:1cqw}.bar .widget{padding:1vw;padding:1cqw}.has-background-image{background-position:center center;background-repeat:no-repeat}.has-background-size-cover{background-size:cover}.has-background-size-center{background-size:contain}.has-background-size-repeat{background-repeat:repeat}.flex-display{display:flex}.flex-direction-column{flex-direction:column}.flex-direction-column .container{min-height:1px}.flex-direction-row{flex-direction:row}.flex-justify-flex-start{justify-content:flex-start}.flex-justify-center{justify-content:center}.flex-justify-flex-end{justify-content:flex-end}[class*=section-arrow--]::before{border:solid transparent;border-color:rgba(0,0,0,0);content:"";height:0;pointer-events:none;position:absolute;width:0;z-index:1}.section-arrow--top::before{border-bottom-color:inherit;border-width:0 30px 18px;bottom:100%;left:50%;transform:translateX(-50%)}.section-arrow--bottom::before{border-top-color:inherit;border-width:18px 30px 0;left:50%;top:100%;transform:translateX(-50%)}.section-arrow--left::before{border-bottom-color:inherit;border-width:0 30px 24px;bottom:100%;right:50%;transform:translateX(50%)}@media(min-width: 48em){.section-arrow--left::before{border-bottom-color:transparent;border-right-color:inherit;border-width:30px 24px 30px 0;bottom:0;right:100%;top:50%;transform:translateY(-50%) translateX(0)}}.section-arrow--right::before{border-top-color:inherit;border-width:24px 30px 0;left:50%;top:100%;transform:translateX(-50%)}@media(min-width: 48em){.section-arrow--right::before{border-left-color:inherit;border-top-color:transparent;border-width:30px 0 30px 24px;left:100%;top:50%;transform:translateY(-50%) translateX(0)}}.page .is-delayed{min-height:0;height:0;opacity:0;overflow:hidden;padding-bottom:0;padding-top:0}.is-visible{height:auto;opacity:1;overflow:visible}.lp-text a,.lp-text-react a,.lp-headline a{color:inherit;text-decoration:underline}.lp-text a>span,.lp-text-react a>span,.lp-headline a>span{color:inherit;text-decoration:underline}.lp-text a:hover,.lp-text a:active,.lp-text-react a:hover,.lp-text-react a:active,.lp-headline a:hover,.lp-headline a:active{text-decoration:none}.lp-text a:hover>span,.lp-text a:active>span,.lp-text-react a:hover>span,.lp-text-react a:active>span,.lp-headline a:hover>span,.lp-headline a:active>span{text-decoration:none}.lp-blog-feed a{text-decoration:none}.lp-blog-feed a:hover,.lp-blog-feed a:active{text-decoration:none}.lp-blog-feed a:hover>span,.lp-blog-feed a:active>span{text-decoration:none}.lp-blog-feed a.pagination-arrow{color:inherit;margin:auto 40px}.lp-blog-feed a.pagination-arrow.disabled{color:inherit;pointer-events:none;opacity:.3}.lp-blog-post a{color:inherit;text-decoration:none}.lp-blog-post a>span{color:inherit;text-decoration:none}.lp-blog-post a:hover,.lp-blog-post a:active{text-decoration:none}.lp-blog-post a:hover>span,.lp-blog-post a:active>span{text-decoration:none}.lp-blog-post a.pagination-arrow{margin:auto 40px}.lp-blog-post a.pagination-arrow.disabled{pointer-events:none;opacity:.3}.lp-post-body p{min-height:18px;margin:20px 0}.lp-post-body h1,.lp-post-body h2,.lp-post-body h3,.lp-post-body h4,.lp-post-body h5,.lp-post-body h6{margin:24px 0}.lp-post-body img{width:auto}.widget-widget>iframe{max-width:100%;width:100%}.inner-composite{display:flex}.page grammarly-btn{display:none}.page .lp-form__input+span,.page .lp-form-react__input+span{display:none !important}@media(max-width: 480px){.hidden-mobile{display:none !important}}@media(min-width: 481px)and (max-width: 768px){.hidden-tablet{display:none !important}}@media(min-width: 769px){.hidden-desktop{display:none !important}}
49.hide-section{display:none}form .widget-column{padding-top:1vw;padding-bottom:1vw;padding-top:1cqw;padding-bottom:1cqw}form .widget-column .widget{padding-bottom:0;padding-top:0}form .widget-column .widget .lp-button-react-wrapper{margin-top:12px}form[data-form-id] button:disabled{opacity:.5;pointer-events:none;transition:opacity 7.5s ease}@keyframes animation-circular-rotate{0%{transform-origin:50% 50%}100%{transform:rotate(360deg)}}@-webkit-keyframes animation-circular-rotate{0%{transform-origin:50% 50%}100%{transform:rotate(360deg)}}@-webkit-keyframes animation-circular-progress{0%{stroke-dasharray:1px,200px;stroke-dashoffset:0px}50%{stroke-dasharray:100px,200px;stroke-dashoffset:-15px}100%{stroke-dasharray:100px,200px;stroke-dashoffset:-125px}}@keyframes animation-circular-progress{0%{stroke-dasharray:1px,200px;stroke-dashoffset:0px}50%{stroke-dasharray:100px,200px;stroke-dashoffset:-15px}100%{stroke-dasharray:100px,200px;stroke-dashoffset:-125px}}.container{margin-left:auto;margin-right:auto;max-width:1140px}.container--fluid{max-width:none}.flex{display:flex;flex-direction:row;flex-wrap:wrap;margin-left:0;margin-right:0;max-width:100%}[class*=flex__]{flex:0 0 auto;min-height:1px;padding-left:0;padding-right:0}.flex--12 .flex__item--xs-1{flex-basis:8.3333333333%;max-width:8.3333333333%}.flex--12 .flex__item--xs-2{flex-basis:16.6666666667%;max-width:16.6666666667%}.flex--12 .flex__item--xs-3{flex-basis:25%;max-width:25%}.flex--12 .flex__item--xs-4{flex-basis:33.3333333333%;max-width:33.3333333333%}.flex--12 .flex__item--xs-5{flex-basis:41.6666666667%;max-width:41.6666666667%}.flex--12 .flex__item--xs-6{flex-basis:50%;max-width:50%}.flex--12 .flex__item--xs-7{flex-basis:58.3333333333%;max-width:58.3333333333%}.flex--12 .flex__item--xs-8{flex-basis:66.6666666667%;max-width:66.6666666667%}.flex--12 .flex__item--xs-9{flex-basis:75%;max-width:75%}.flex--12 .flex__item--xs-10{flex-basis:83.3333333333%;max-width:83.3333333333%}.flex--12 .flex__item--xs-11{flex-basis:91.6666666667%;max-width:91.6666666667%}.flex--12 .flex__item--xs-12{flex-basis:100%;max-width:100%}.flex--12 .flex__offset--xs-1{margin-left:8.3333333333%}.flex--12 .flex__offset--xs-2{margin-left:16.6666666667%}.flex--12 .flex__offset--xs-3{margin-left:25%}.flex--12 .flex__offset--xs-4{margin-left:33.3333333333%}.flex--12 .flex__offset--xs-5{margin-left:41.6666666667%}.flex--12 .flex__offset--xs-6{margin-left:50%}.flex--12 .flex__offset--xs-7{margin-left:58.3333333333%}.flex--12 .flex__offset--xs-8{margin-left:66.6666666667%}.flex--12 .flex__offset--xs-9{margin-left:75%}.flex--12 .flex__offset--xs-10{margin-left:83.3333333333%}.flex--12 .flex__offset--xs-11{margin-left:91.6666666667%}.flex--10 .flex__item--xs-1{flex-basis:10%;max-width:10%}.flex--10 .flex__item--xs-2{flex-basis:20%;max-width:20%}.flex--10 .flex__item--xs-3{flex-basis:30%;max-width:30%}.flex--10 .flex__item--xs-4{flex-basis:40%;max-width:40%}.flex--10 .flex__item--xs-5{flex-basis:50%;max-width:50%}.flex--10 .flex__item--xs-6{flex-basis:60%;max-width:60%}.flex--10 .flex__item--xs-7{flex-basis:70%;max-width:70%}.flex--10 .flex__item--xs-8{flex-basis:80%;max-width:80%}.flex--10 .flex__item--xs-9{flex-basis:90%;max-width:90%}.flex--10 .flex__item--xs-10{flex-basis:100%;max-width:100%}.flex--10 .flex__offset--xs-1{margin-left:10%}.flex--10 .flex__offset--xs-2{margin-left:20%}.flex--10 .flex__offset--xs-3{margin-left:30%}.flex--10 .flex__offset--xs-4{margin-left:40%}.flex--10 .flex__offset--xs-5{margin-left:50%}.flex--10 .flex__offset--xs-6{margin-left:60%}.flex--10 .flex__offset--xs-7{margin-left:70%}.flex--10 .flex__offset--xs-8{margin-left:80%}.flex--10 .flex__offset--xs-9{margin-left:90%}.flex--xs-start{justify-content:flex-start}.flex--xs-center{justify-content:center}.flex--xs-end{justify-content:flex-end}.flex--xs-around{justify-content:space-around}.flex--xs-between{justify-content:space-between}.flex--xs-top{align-items:flex-start}.flex--xs-middle{align-items:center}.flex--xs-bottom{align-items:flex-end}.flex--xs-first{order:-1}.flex--xs-last{order:1}.flex__item--xs-auto{flex:1 1 auto}.flex__item--xs-grow{flex-grow:1}.flex__item--xs-no-grow{flex-grow:0}.flex__item--xs-shrink{flex-shrink:1}.flex__item--xs-no-shrink{flex-shrink:0}.flex__item--xs-none{flex:none}.flex--xs-inline-flex{display:inline-flex}.flex--xs-flex-nowrap{flex-wrap:nowrap}.flex--xs-flex-wrap-rev{flex-wrap:wrap-reverse}.flex--xs-horizontal-rev{flex-direction:column-reverse}.flex--xs-vertical{flex-direction:column}.flex--xs-vertical-rev{flex-direction:row-reverse}@media(min-width: 480px){.flex--12 .flex__item--sm-1{flex-basis:8.3333333333%;max-width:8.3333333333%}.flex--12 .flex__item--sm-2{flex-basis:16.6666666667%;max-width:16.6666666667%}.flex--12 .flex__item--sm-3{flex-basis:25%;max-width:25%}.flex--12 .flex__item--sm-4{flex-basis:33.3333333333%;max-width:33.3333333333%}.flex--12 .flex__item--sm-5{flex-basis:41.6666666667%;max-width:41.6666666667%}.flex--12 .flex__item--sm-6{flex-basis:50%;max-width:50%}.flex--12 .flex__item--sm-7{flex-basis:58.3333333333%;max-width:58.3333333333%}.flex--12 .flex__item--sm-8{flex-basis:66.6666666667%;max-width:66.6666666667%}.flex--12 .flex__item--sm-9{flex-basis:75%;max-width:75%}.flex--12 .flex__item--sm-10{flex-basis:83.3333333333%;max-width:83.3333333333%}.flex--12 .flex__item--sm-11{flex-basis:91.6666666667%;max-width:91.6666666667%}.flex--12 .flex__item--sm-12{flex-basis:100%;max-width:100%}.flex--12 .flex__offset--sm-1{margin-left:8.3333333333%}.flex--12 .flex__offset--sm-2{margin-left:16.6666666667%}.flex--12 .flex__offset--sm-3{margin-left:25%}.flex--12 .flex__offset--sm-4{margin-left:33.3333333333%}.flex--12 .flex__offset--sm-5{margin-left:41.6666666667%}.flex--12 .flex__offset--sm-6{margin-left:50%}.flex--12 .flex__offset--sm-7{margin-left:58.3333333333%}.flex--12 .flex__offset--sm-8{margin-left:66.6666666667%}.flex--12 .flex__offset--sm-9{margin-left:75%}.flex--12 .flex__offset--sm-10{margin-left:83.3333333333%}.flex--12 .flex__offset--sm-11{margin-left:91.6666666667%}.flex--10 .flex__item--sm-1{flex-basis:10%;max-width:10%}.flex--10 .flex__item--sm-2{flex-basis:20%;max-width:20%}.flex--10 .flex__item--sm-3{flex-basis:30%;max-width:30%}.flex--10 .flex__item--sm-4{flex-basis:40%;max-width:40%}.flex--10 .flex__item--sm-5{flex-basis:50%;max-width:50%}.flex--10 .flex__item--sm-6{flex-basis:60%;max-width:60%}.flex--10 .flex__item--sm-7{flex-basis:70%;max-width:70%}.flex--10 .flex__item--sm-8{flex-basis:80%;max-width:80%}.flex--10 .flex__item--sm-9{flex-basis:90%;max-width:90%}.flex--10 .flex__item--sm-10{flex-basis:100%;max-width:100%}.flex--10 .flex__offset--sm-1{margin-left:10%}.flex--10 .flex__offset--sm-2{margin-left:20%}.flex--10 .flex__offset--sm-3{margin-left:30%}.flex--10 .flex__offset--sm-4{margin-left:40%}.flex--10 .flex__offset--sm-5{margin-left:50%}.flex--10 .flex__offset--sm-6{margin-left:60%}.flex--10 .flex__offset--sm-7{margin-left:70%}.flex--10 .flex__offset--sm-8{margin-left:80%}.flex--10 .flex__offset--sm-9{margin-left:90%}.flex--sm-start{justify-content:flex-start}.flex--sm-center{justify-content:center}.flex--sm-end{justify-content:flex-end}.flex--sm-around{justify-content:space-around}.flex--sm-between{justify-content:space-between}.flex--sm-top{align-items:flex-start}.flex--sm-middle{align-items:center}.flex--sm-bottom{align-items:flex-end}.flex--sm-first{order:-1}.flex--sm-last{order:1}
49.flex__item--sm-auto{flex:1 1 auto}.flex__item--sm-grow{flex-grow:1}.flex__item--sm-no-grow{flex-grow:0}.flex__item--sm-shrink{flex-shrink:1}.flex__item--sm-no-shrink{flex-shrink:0}.flex__item--sm-none{flex:none}.flex--sm-inline-flex{display:inline-flex}.flex--sm-flex-nowrap{flex-wrap:nowrap}.flex--sm-flex-wrap-rev{flex-wrap:wrap-reverse}.flex--sm-horizontal-rev{flex-direction:column-reverse}.flex--sm-vertical{flex-direction:column}.flex--sm-vertical-rev{flex-direction:row-reverse}}@media(min-width: 768px){.flex--12 .flex__item--md-1{flex-basis:8.3333333333%;max-width:8.3333333333%}.flex--12 .flex__item--md-2{flex-basis:16.6666666667%;max-width:16.6666666667%}.flex--12 .flex__item--md-3{flex-basis:25%;max-width:25%}.flex--12 .flex__item--md-4{flex-basis:33.3333333333%;max-width:33.3333333333%}.flex--12 .flex__item--md-5{flex-basis:41.6666666667%;max-width:41.6666666667%}.flex--12 .flex__item--md-6{flex-basis:50%;max-width:50%}.flex--12 .flex__item--md-7{flex-basis:58.3333333333%;max-width:58.3333333333%}.flex--12 .flex__item--md-8{flex-basis:66.6666666667%;max-width:66.6666666667%}.flex--12 .flex__item--md-9{flex-basis:75%;max-width:75%}.flex--12 .flex__item--md-10{flex-basis:83.3333333333%;max-width:83.3333333333%}.flex--12 .flex__item--md-11{flex-basis:91.6666666667%;max-width:91.6666666667%}.flex--12 .flex__item--md-12{flex-basis:100%;max-width:100%}.flex--12 .flex__offset--md-1{margin-left:8.3333333333%}.flex--12 .flex__offset--md-2{margin-left:16.6666666667%}.flex--12 .flex__offset--md-3{margin-left:25%}.flex--12 .flex__offset--md-4{margin-left:33.3333333333%}.flex--12 .flex__offset--md-5{margin-left:41.6666666667%}.flex--12 .flex__offset--md-6{margin-left:50%}.flex--12 .flex__offset--md-7{margin-left:58.3333333333%}.flex--12 .flex__offset--md-8{margin-left:66.6666666667%}.flex--12 .flex__offset--md-9{margin-left:75%}.flex--12 .flex__offset--md-10{margin-left:83.3333333333%}.flex--12 .flex__offset--md-11{margin-left:91.6666666667%}.flex--10 .flex__item--md-1{flex-basis:10%;max-width:10%}.flex--10 .flex__item--md-2{flex-basis:20%;max-width:20%}.flex--10 .flex__item--md-3{flex-basis:30%;max-width:30%}.flex--10 .flex__item--md-4{flex-basis:40%;max-width:40%}.flex--10 .flex__item--md-5{flex-basis:50%;max-width:50%}.flex--10 .flex__item--md-6{flex-basis:60%;max-width:60%}.flex--10 .flex__item--md-7{flex-basis:70%;max-width:70%}.flex--10 .flex__item--md-8{flex-basis:80%;max-width:80%}.flex--10 .flex__item--md-9{flex-basis:90%;max-width:90%}.flex--10 .flex__item--md-10{flex-basis:100%;max-width:100%}.flex--10 .flex__offset--md-1{margin-left:10%}.flex--10 .flex__offset--md-2{margin-left:20%}.flex--10 .flex__offset--md-3{margin-left:30%}.flex--10 .flex__offset--md-4{margin-left:40%}.flex--10 .flex__offset--md-5{margin-left:50%}.flex--10 .flex__offset--md-6{margin-left:60%}.flex--10 .flex__offset--md-7{margin-left:70%}.flex--10 .flex__offset--md-8{margin-left:80%}.flex--10 .flex__offset--md-9{margin-left:90%}.flex--md-start{justify-content:flex-start}.flex--md-center{justify-content:center}.flex--md-end{justify-content:flex-end}.flex--md-around{justify-content:space-around}.flex--md-between{justify-content:space-between}.flex--md-top{align-items:flex-start}.flex--md-middle{align-items:center}.flex--md-bottom{align-items:flex-end}.flex--md-first{order:-1}.flex--md-last{order:1}.flex__item--md-auto{flex:1 1 auto}.flex__item--md-grow{flex-grow:1}.flex__item--md-no-grow{flex-grow:0}.flex__item--md-shrink{flex-shrink:1}.flex__item--md-no-shrink{flex-shrink:0}.flex__item--md-none{flex:none}.flex--md-inline-flex{display:inline-flex}.flex--md-flex-nowrap{flex-wrap:nowrap}.flex--md-flex-wrap-rev{flex-wrap:wrap-reverse}.flex--md-horizontal-rev{flex-direction:column-reverse}.flex--md-vertical{flex-direction:column}.flex--md-vertical-rev{flex-direction:row-reverse}}@media(min-width: 1024px){.flex--12 .flex__item--lg-1{flex-basis:8.3333333333%;max-width:8.3333333333%}.flex--12 .flex__item--lg-2{flex-basis:16.6666666667%;max-width:16.6666666667%}.flex--12 .flex__item--lg-3{flex-basis:25%;max-width:25%}.flex--12 .flex__item--lg-4{flex-basis:33.3333333333%;max-width:33.3333333333%}.flex--12 .flex__item--lg-5{flex-basis:41.6666666667%;max-width:41.6666666667%}.flex--12 .flex__item--lg-6{flex-basis:50%;max-width:50%}.flex--12 .flex__item--lg-7{flex-basis:58.3333333333%;max-width:58.3333333333%}.flex--12 .flex__item--lg-8{flex-basis:66.6666666667%;max-width:66.6666666667%}.flex--12 .flex__item--lg-9{flex-basis:75%;max-width:75%}.flex--12 .flex__item--lg-10{flex-basis:83.3333333333%;max-width:83.3333333333%}.flex--12 .flex__item--lg-11{flex-basis:91.6666666667%;max-width:91.6666666667%}.flex--12 .flex__item--lg-12{flex-basis:100%;max-width:100%}.flex--12 .flex__offset--lg-1{margin-left:8.3333333333%}.flex--12 .flex__offset--lg-2{margin-left:16.6666666667%}.flex--12 .flex__offset--lg-3{margin-left:25%}.flex--12 .flex__offset--lg-4{margin-left:33.3333333333%}.flex--12 .flex__offset--lg-5{margin-left:41.6666666667%}.flex--12 .flex__offset--lg-6{margin-left:50%}.flex--12 .flex__offset--lg-7{margin-left:58.3333333333%}.flex--12 .flex__offset--lg-8{margin-left:66.6666666667%}.flex--12 .flex__offset--lg-9{margin-left:75%}.flex--12 .flex__offset--lg-10{margin-left:83.3333333333%}.flex--12 .flex__offset--lg-11{margin-left:91.6666666667%}.flex--10 .flex__item--lg-1{flex-basis:10%;max-width:10%}.flex--10 .flex__item--lg-2{flex-basis:20%;max-width:20%}.flex--10 .flex__item--lg-3{flex-basis:30%;max-width:30%}.flex--10 .flex__item--lg-4{flex-basis:40%;max-width:40%}.flex--10 .flex__item--lg-5{flex-basis:50%;max-width:50%}.flex--10 .flex__item--lg-6{flex-basis:60%;max-width:60%}.flex--10 .flex__item--lg-7{flex-basis:70%;max-width:70%}.flex--10 .flex__item--lg-8{flex-basis:80%;max-width:80%}.flex--10 .flex__item--lg-9{flex-basis:90%;max-width:90%}.flex--10 .flex__item--lg-10{flex-basis:100%;max-width:100%}.flex--10 .flex__offset--lg-1{margin-left:10%}.flex--10 .flex__offset--lg-2{margin-left:20%}.flex--10 .flex__offset--lg-3{margin-left:30%}.flex--10 .flex__offset--lg-4{margin-left:40%}.flex--10 .flex__offset--lg-5{margin-left:50%}.flex--10 .flex__offset--lg-6{margin-left:60%}.flex--10 .flex__offset--lg-7{margin-left:70%}.flex--10 .flex__offset--lg-8{margin-left:80%}.flex--10 .flex__offset--lg-9{margin-left:90%}.flex--lg-start{justify-content:flex-start}.flex--lg-center{justify-content:center}.flex--lg-end{justify-content:flex-end}.flex--lg-around{justify-content:space-around}.flex--lg-between{justify-content:space-between}.flex--lg-top{align-items:flex-start}.flex--lg-middle{align-items:center}.flex--lg-bottom{align-items:flex-end}.flex--lg-first{order:-1}.flex--lg-last{order:1}.flex__item--lg-auto{flex:1 1 auto}.flex__item--lg-grow{flex-grow:1}.flex__item--lg-no-grow{flex-grow:0}.flex__item--lg-shrink{flex-shrink:1}.flex__item--lg-no-shrink{flex-shrink:0}.flex__item--lg-none{flex:none}.flex--lg-inline-flex{display:inline-flex}.flex--lg-flex-nowrap{flex-wrap:nowrap}.flex--lg-flex-wrap-rev{flex-wrap:wrap-reverse}.flex--lg-horizontal-rev{flex-direction:column-reverse}.flex--lg-vertical{flex-direction:column}.flex--lg-vertical-rev{flex-direction:row-reverse}}@media(min-width: 1280px){.flex--12 .flex__item--xl-1{flex-basis:8.3333333333%;max-width:8.3333333333%}.flex--12 .flex__item--xl-2{flex-basis:16.6666666667%;max-width:16.6666666667%}.flex--12 .flex__item--xl-3{flex-basis:25%;max-width:25%}.flex--12 .flex__item--xl-4{flex-basis:33.3333333333%;max-width:33.3333333333%}.flex--12 .flex__item--xl-5{flex-basis:41.6666666667%;max-width:41.6666666667%}.flex--12 .flex__item--xl-6{flex-basis:50%;max-width:50%}.flex--12 .flex__item--xl-7{flex-basis:58.3333333333%;max-width:58.3333333333%}.flex--12 .flex__item--xl-8{flex-basis:66.6666666667%;max-width:66.6666666667%}.flex--12 .flex__item--xl-9{flex-basis:75%;max-width:75%}.flex--12 .flex__item--xl-10{flex-basis:83.3333333333%;max-width:83.3333333333%}.flex--12 .flex__item--xl-11{flex-basis:91.6666666667%;max-width:91.6666666667%}.flex--12 .flex__item--xl-12{flex-basis:100%;max-width:100%}.flex--12 .flex__offset--xl-1{margin-left:8.3333333333%}.flex--12 .flex__offset--xl-2{margin-left:16.6666666667%}.flex--12 .flex__offset--xl-3{margin-left:25%}.flex--12 .flex__offset--xl-4{margin-left:33.3333333333%}.flex--12 .flex__offset--xl-5{margin-left:41.6666666667%}.flex--12 .flex__offset--xl-6{margin-left:50%}.flex--12 .flex__offset--xl-7{margin-left:58.3333333333%}.flex--12 .flex__offset--xl-8{margin-left:66.6666666667%}.flex--12 .flex__offset--xl-9{margin-left:75%}.flex--12 .flex__offset--xl-10{margin-left:83.3333333333%}.flex--12 .flex__offset--xl-11{margin-left:91.6666666667%}.flex--10 .flex__item--xl-1{flex-basis:10%;max-width:10%}.flex--10 .flex__item--xl-2{flex-basis:20%;max-width:20%}.flex--10 .flex__item--xl-3{flex-basis:30%;max-width:30%}.flex--10 .flex__item--xl-4{flex-basis:40%;max-width:40%}.flex--10 .flex__item--xl-5{flex-basis:50%;max-width:50%}.flex--10 .flex__item--xl-6{flex-basis:60%;max-width:60%}.flex--10 .flex__item--xl-7{flex-basis:70%;max-width:70%}.flex--10 .flex__item--xl-8{flex-basis:80%;max-width:80%}.flex--10 .flex__item--xl-9{flex-basis:90%;max-width:90%}.flex--10 .flex__item--xl-10{flex-basis:100%;max-width:100%}.flex--10 .flex__offset--xl-1{margin-left:10%}.flex--10 .flex__offset--xl-2{margin-left:20%}.flex--10 .flex__offset--xl-3{margin-left:30%}.flex--10 .flex__offset--xl-4{margin-left:40%}.flex--10 .flex__offset--xl-5{margin-left:50%}.flex--10 .flex__offset--xl-6{margin-left:60%}.flex--10 .flex__offset--xl-7{margin-left:70%}.flex--10 .flex__offset--xl-8{margin-left:80%}.flex--10 .flex__offset--xl-9{margin-left:90%}.flex--xl-start{justify-content:flex-start}.flex--xl-center{justify-content:center}.flex--xl-end{justify-content:flex-end}.flex--xl-around{justify-content:space-around}.flex--xl-between{justify-content:space-between}.flex--xl-top{align-items:flex-start}.flex--xl-middle{align-items:center}.flex--xl-bottom{align-items:flex-end}.flex--xl-first{order:-1}.flex--xl-last{order:1}.flex__item--xl-auto{flex:1 1 auto}.flex__item--xl-grow{flex-grow:1}.flex__item--xl-no-grow{flex-grow:0}.flex__item--xl-shrink{flex-shrink:1}.flex__item--xl-no-shrink{flex-shrink:0}.flex__item--xl-none{flex:none}.flex--xl-inline-flex{display:inline-flex}.flex--xl-flex-nowrap{flex-wrap:nowrap}.flex--xl-flex-wrap-rev{flex-wrap:wrap-reverse}.flex--xl-horizontal-rev{flex-direction:column-reverse}.flex--xl-vertical{flex-direction:column}.flex--xl-vertical-rev{flex-direction:row-reverse}}.font-scale-1{font-size:.5625rem}.font-scale-2{font-size:.625rem}.font-scale-3{font-size:.75rem}.font-scale-4{font-size:.875rem}.font-scale-5{font-size:1rem}.font-scale-6{font-size:1.125rem}.font-scale-7{font-size:1.3125rem}.font-scale-8{font-size:1.5rem}.font-scale-9{font-size:1.6875rem}.font-scale-10{font-size:1.875rem}.font-scale-11{font-size:2.0625rem}.font-scale-12{font-size:2.25rem}.font-scale-13{font-size:2.5rem}.font-scale-14{font-size:2.75rem}.font-scale-15{font-size:3rem}.font-scale-16{font-size:3.25rem}.font-scale-17{font-size:3.5rem}.font-scale-18{font-size:3.75rem}@media(min-width: 480px){.font-scale-1{font-size:.5625rem}.font-scale-2{font-size:.625rem}.font-scale-3{font-size:.75rem}.font-scale-4{font-size:.875rem}.font-scale-5{font-size:1rem}.font-scale-6{font-size:1.125rem}.font-scale-7{font-size:1.3125rem}.font-scale-8{font-size:1.5rem}.font-scale-9{font-size:1.75rem}.font-scale-10{font-size:2rem}.font-scale-11{font-size:2.375rem}.font-scale-12{font-size:2.75rem}.font-scale-13{font-size:3.125rem}.font-scale-14{font-size:3.5rem}.font-scale-15{font-size:3.875rem}.font-scale-16{font-size:4.25rem}.font-scale-17{font-size:4.625rem}.font-scale-18{font-size:5rem}}@media(min-width: 768px){.font-scale-1{font-size:.625rem}.font-scale-2{font-size:.75rem}.font-scale-3{font-size:.875rem}.font-scale-4{font-size:1rem}.font-scale-5{font-size:1.125rem}.font-scale-6{font-size:1.25rem}.font-scale-7{font-size:1.5rem}.font-scale-8{font-size:1.75rem}.font-scale-9{font-size:2rem}.font-scale-10{font-size:2.5rem}.font-scale-11{font-size:3rem}.font-scale-12{font-size:3.5rem}.font-scale-13{font-size:4rem}.font-scale-14{font-size:4.5rem}.font-scale-15{font-size:5rem}.font-scale-16{font-size:5.5rem}.font-scale-17{font-size:6rem}.font-scale-18{font-size:6.5rem}}.line-height-scale-1{line-height:.875}.line-height-scale-2{line-height:1}.line-height-scale-3{line-height:1.125}.line-height-scale-4{line-height:1.25}.line-height-scale-5{line-height:1.375}.line-height-scale-6{line-height:1.5}.line-height-scale-7{line-height:1.625}.line-height-scale-8{line-height:1.75}.line-height-scale-9{line-height:1.875}.line-height-scale-10{line-height:2}.lp-text-react p,.lp-text-react h1,.lp-text-react h2,.lp-text-react h3{min-height:1em;white-space:pre-wrap}.lp-text-react p:empty:before,.lp-text-react h1:empty:before,.lp-text-react h2:empty:before,.lp-text-react h3:empty:before{content:" ";white-space:pre}p.gutter-bottom-1,.lp-list.gutter-bottom-1{margin-bottom:0em}p.gutter-bottom-2,.lp-list.gutter-bottom-2{margin-bottom:0.25em}p.gutter-bottom-3,.lp-list.gutter-bottom-3{margin-bottom:0.4375em}
49p.gutter-bottom-4,.lp-list.gutter-bottom-4{margin-bottom:0.5em}p.gutter-bottom-5,.lp-list.gutter-bottom-5{margin-bottom:0.5625em}p.gutter-bottom-6,.lp-list.gutter-bottom-6{margin-bottom:0.625em}p.gutter-bottom-7,.lp-list.gutter-bottom-7{margin-bottom:0.6875em}p.gutter-bottom-8,.lp-list.gutter-bottom-8{margin-bottom:0.75em}p.gutter-bottom-9,.lp-list.gutter-bottom-9{margin-bottom:0.8125em}p.gutter-bottom-10,.lp-list.gutter-bottom-10{margin-bottom:0.875em}p.gutter-bottom-11,.lp-list.gutter-bottom-11{margin-bottom:0.9375em}p.gutter-bottom-12,.lp-list.gutter-bottom-12{margin-bottom:1em}p.gutter-bottom-13,.lp-list.gutter-bottom-13{margin-bottom:1.25em}p.gutter-bottom-14,.lp-list.gutter-bottom-14{margin-bottom:1.5em}h1.gutter-bottom-1,h2.gutter-bottom-1,h3.gutter-bottom-1{padding-bottom:0em}h1.gutter-bottom-2,h2.gutter-bottom-2,h3.gutter-bottom-2{padding-bottom:0.25em}h1.gutter-bottom-3,h2.gutter-bottom-3,h3.gutter-bottom-3{padding-bottom:0.4375em}h1.gutter-bottom-4,h2.gutter-bottom-4,h3.gutter-bottom-4{padding-bottom:0.5em}h1.gutter-bottom-5,h2.gutter-bottom-5,h3.gutter-bottom-5{padding-bottom:0.5625em}h1.gutter-bottom-6,h2.gutter-bottom-6,h3.gutter-bottom-6{padding-bottom:0.625em}h1.gutter-bottom-7,h2.gutter-bottom-7,h3.gutter-bottom-7{padding-bottom:0.6875em}h1.gutter-bottom-8,h2.gutter-bottom-8,h3.gutter-bottom-8{padding-bottom:0.75em}h1.gutter-bottom-9,h2.gutter-bottom-9,h3.gutter-bottom-9{padding-bottom:0.8125em}h1.gutter-bottom-10,h2.gutter-bottom-10,h3.gutter-bottom-10{padding-bottom:0.875em}h1.gutter-bottom-11,h2.gutter-bottom-11,h3.gutter-bottom-11{padding-bottom:0.9375em}h1.gutter-bottom-12,h2.gutter-bottom-12,h3.gutter-bottom-12{padding-bottom:1em}h1.gutter-bottom-13,h2.gutter-bottom-13,h3.gutter-bottom-13{padding-bottom:1.25em}h1.gutter-bottom-14,h2.gutter-bottom-14,h3.gutter-bottom-14{padding-bottom:1.5em}.lp-button{text-decoration:none}.is-bold{font-weight:700}.is-italic{font-style:italic}.is-strikethrough{text-decoration:line-through}.is-underline,.is-underline label{text-decoration:underline}.is-strikethrough.is-underline{text-decoration:line-through underline}.text-align-left{text-align:left}.text-align-right{text-align:right}.text-align-center{text-align:center}.lp-list{list-style:none;margin:0;padding:0}.lp-list.text-align-left li{padding-left:24px}.lp-list.text-align-left li::before{position:absolute}.lp-list.text-align-left.lp-list--numbered li{padding-left:30px}.lp-list.text-align-left.lp-list--icon li{padding-left:1.5em}.lp-list li{position:relative;width:100%;white-space:pre-wrap}.lp-list li:not(:last-child){margin-bottom:.5em}.lp-list li::before{display:inline-block;font-size:1em;font-weight:700}.lp-list--numbered{counter-reset:numbered}.lp-list--numbered.text-align-left li::before{left:-3px;top:1px}.lp-list--numbered.text-align-center li::before,.lp-list--numbered.text-align-right li::before{margin-right:10px}.lp-list--numbered li{counter-increment:numbered}.lp-list--numbered li::before{content:counter(numbered)}.lp-list--bullet.text-align-center li,.lp-list--bullet.text-align-right li{padding-left:12px}.lp-list--bullet li::before{content:"â¢";text-align:center;transform:scale(1.5);transform-origin:center right}.lp-list--checkmark.text-align-left li{padding-left:20px}.lp-list--checkmark.text-align-left li::before{left:2px;top:2px}.lp-list--checkmark.text-align-center li::before,.lp-list--checkmark.text-align-right li::before{transform:translateY(-3px)}.lp-list--checkmark li::before{content:"ï";font-family:"Font Awesome 5 Free";font-weight:900;transform:scale(0.85)}.lp-list--icon.text-align-center li::before,.lp-list--icon.text-align-right li::before{transform:translateY(-3px)}.lp-list--checkmark.text-align-left.font-scale-1 li{padding-left:15px}.lp-list--checkmark.text-align-left.font-scale-1 li::before{left:-4px}.lp-list--checkmark.text-align-left.font-scale-2 li{padding-left:15px}.lp-list--checkmark.text-align-left.font-scale-2 li::before{left:-4px}.lp-list--checkmark.text-align-left.font-scale-3 li{padding-left:15px}.lp-list--checkmark.text-align-left.font-scale-3 li::before{left:-4px}.lp-list--checkmark.text-align-left.font-scale-4 li::before{left:-6px}.lp-list--checkmark.text-align-left.font-scale-5 li::before{left:-6px}.lp-list--checkmark.text-align-left.font-scale-6 li::before{left:-6px}.lp-list--checkmark.text-align-left.font-scale-7 li{padding-left:25px}.lp-list--checkmark.text-align-left.font-scale-7 li::before{left:-10px}.lp-list--checkmark.text-align-left.font-scale-8 li{padding-left:25px}.lp-list--checkmark.text-align-left.font-scale-8 li::before{left:-10px}.lp-list--checkmark.text-align-left.font-scale-9 li{padding-left:25px}.lp-list--checkmark.text-align-left.font-scale-9 li::before{left:-10px}.lp-list--checkmark.text-align-left.font-scale-10 li{padding-left:25px}.lp-list--checkmark.text-align-left.font-scale-10 li::before{left:-10px}.lp-list--checkmark.text-align-left.font-scale-10 li{padding-left:35px}.lp-list--checkmark.text-align-left.font-scale-11 li{padding-left:1.05em}.lp-list--checkmark.text-align-left.font-scale-11 li::before{left:-0.1em}.lp-list--checkmark.text-align-left.font-scale-12 li{padding-left:1.05em}.lp-list--checkmark.text-align-left.font-scale-12 li::before{left:-0.1em}.lp-list--checkmark.text-align-left.font-scale-13 li{padding-left:1.05em}.lp-list--checkmark.text-align-left.font-scale-13 li::before{left:-0.1em}.lp-list--checkmark.text-align-left.font-scale-14 li{padding-left:1.05em}.lp-list--checkmark.text-align-left.font-scale-14 li::before{left:-0.1em}.lp-list--checkmark.text-align-left.font-scale-15 li{padding-left:1.05em}.lp-list--checkmark.text-align-left.font-scale-15 li::before{left:-0.1em}.lp-list--checkmark.text-align-left.font-scale-16 li{padding-left:1.05em}.lp-list--checkmark.text-align-left.font-scale-16 li::before{left:-0.1em}.lp-list--checkmark.text-align-left.font-scale-17 li{padding-left:1.05em}.lp-list--checkmark.text-align-left.font-scale-17 li::before{left:-0.1em}.lp-list--checkmark.text-align-left.font-scale-18 li{padding-left:1.05em}.lp-list--checkmark.text-align-left.font-scale-18 li::before{left:-0.1em}.lp-list--bullet.text-align-left.font-scale-1 li{padding-left:15px}.lp-list--bullet.text-align-left.font-scale-1 li::before{top:2px;left:-2px}.lp-list--bullet.text-align-left.font-scale-2 li{padding-left:15px}.lp-list--bullet.text-align-left.font-scale-2 li::before{top:2px;left:-2px}.lp-list--bullet.text-align-left.font-scale-3 li{padding-left:15px}.lp-list--bullet.text-align-left.font-scale-3 li::before{top:2px;left:-2px}.lp-list--bullet.text-align-left.font-scale-4 li{padding-left:20px}.lp-list--bullet.text-align-left.font-scale-4 li::before{left:0}.lp-list--bullet.text-align-left.font-scale-5 li{padding-left:20px}.lp-list--bullet.text-align-left.font-scale-5 li::before{left:0}.lp-list--bullet.text-align-left.font-scale-6 li{padding-left:20px}.lp-list--bullet.text-align-left.font-scale-6 li::before{left:0}.lp-list--bullet.text-align-left.font-scale-7 li::before{left:2px}.lp-list--bullet.text-align-left.font-scale-8 li::before{left:2px}.lp-list--bullet.text-align-left.font-scale-9 li::before{left:2px}.lp-list--bullet.text-align-left.font-scale-10 li{padding-left:35px}.lp-list--bullet.text-align-left.font-scale-10 li::before{left:6px}.lp-list--bullet.text-align-left.font-scale-11 li{padding-left:1.05em}.lp-list--bullet.text-align-left.font-scale-11 li::before{left:.25em;line-height:.75em;top:.18em}.lp-list--bullet.text-align-left.font-scale-12 li{padding-left:1.05em}.lp-list--bullet.text-align-left.font-scale-12 li::before{left:.25em;line-height:.75em;top:.18em}.lp-list--bullet.text-align-left.font-scale-13 li{padding-left:1.05em}.lp-list--bullet.text-align-left.font-scale-13 li::before{left:.25em;line-height:.75em;top:.18em}.lp-list--bullet.text-align-left.font-scale-14 li{padding-left:1.05em}.lp-list--bullet.text-align-left.font-scale-14 li::before{left:.25em;line-height:.75em;top:.18em}.lp-list--bullet.text-align-left.font-scale-15 li{padding-left:1.05em}.lp-list--bullet.text-align-left.font-scale-15 li::before{left:.25em;line-height:.75em;top:.18em}.lp-list--bullet.text-align-left.font-scale-16 li{padding-left:1.05em}.lp-list--bullet.text-align-left.font-scale-16 li::before{left:.25em;line-height:.75em;top:.18em}.lp-list--bullet.text-align-left.font-scale-17 li{padding-left:1.05em}.lp-list--bullet.text-align-left.font-scale-17 li::before{left:.25em;line-height:.75em;top:.18em}.lp-list--bullet.text-align-left.font-scale-18 li{padding-left:1.05em}.lp-list--bullet.text-align-left.font-scale-18 li::before{left:.25em;line-height:.75em;top:.18em}.lp-list--numbered.text-align-left.font-scale-1 li{padding-left:15px}.lp-list--numbered.text-align-left.font-scale-1 li:nth-child(n+10){padding-left:20px}.lp-list--numbered.text-align-left.font-scale-1 li::before{left:-3px}.lp-list--numbered.text-align-left.font-scale-2 li{padding-left:15px}.lp-list--numbered.text-align-left.font-scale-2 li:nth-child(n+10){padding-left:20px}.lp-list--numbered.text-align-left.font-scale-2 li::before{left:-3px}.lp-list--numbered.text-align-left.font-scale-3 li{padding-left:15px}.lp-list--numbered.text-align-left.font-scale-3 li:nth-child(n+10){padding-left:20px}.lp-list--numbered.text-align-left.font-scale-3 li::before{left:-3px}.lp-list--numbered.text-align-left.font-scale-4 li{padding-left:20px}.lp-list--numbered.text-align-left.font-scale-4 li:nth-child(n+10){padding-left:30px}.lp-list--numbered.text-align-left.font-scale-4 li::before{left:-3px}.lp-list--numbered.text-align-left.font-scale-5 li{padding-left:20px}.lp-list--numbered.text-align-left.font-scale-5 li:nth-child(n+10){padding-left:30px}.lp-list--numbered.text-align-left.font-scale-5 li::before{left:-3px}.lp-list--numbered.text-align-left.font-scale-6 li{padding-left:20px}.lp-list--numbered.text-align-left.font-scale-6 li:nth-child(n+10){padding-left:30px}.lp-list--numbered.text-align-left.font-scale-6 li::before{left:-3px}.lp-list--numbered.text-align-left.font-scale-7 li{padding-left:25px}.lp-list--numbered.text-align-left.font-scale-7 li:nth-child(n+10){padding-left:45px}.lp-list--numbered.text-align-left.font-scale-7 li::before{left:-3px}.lp-list--numbered.text-align-left.font-scale-8 li{padding-left:25px}.lp-list--numbered.text-align-left.font-scale-8 li:nth-child(n+10){padding-left:45px}.lp-list--numbered.text-align-left.font-scale-8 li::before{left:-3px}.lp-list--numbered.text-align-left.font-scale-9 li{padding-left:25px}.lp-list--numbered.text-align-left.font-scale-9 li:nth-child(n+10){padding-left:45px}.lp-list--numbered.text-align-left.font-scale-9 li::before{left:-3px}.lp-list--numbered.text-align-left.font-scale-10 li{padding-left:35px}.lp-list--numbered.text-align-left.font-scale-10 li:nth-child(n+10){padding-left:60px}.lp-list--numbered.text-align-left.font-scale-10 li::before{left:-2px}.lp-list--numbered.text-align-left.font-scale-11 li{padding-left:1.05em}.lp-list--numbered.text-align-left.font-scale-11 li:nth-child(n+10){padding-left:1.625em}.lp-list--numbered.text-align-left.font-scale-11 li::before{left:-2px;line-height:.75em;top:.18em}.lp-list--numbered.text-align-left.font-scale-12 li{padding-left:1.05em}.lp-list--numbered.text-align-left.font-scale-12 li:nth-child(n+10){padding-left:1.625em}.lp-list--numbered.text-align-left.font-scale-12 li::before{left:-2px;line-height:.75em;top:.18em}.lp-list--numbered.text-align-left.font-scale-13 li{padding-left:1.05em}.lp-list--numbered.text-align-left.font-scale-13 li:nth-child(n+10){padding-left:1.625em}.lp-list--numbered.text-align-left.font-scale-13 li::before{left:-2px;line-height:.75em;top:.18em}.lp-list--numbered.text-align-left.font-scale-14 li{padding-left:1.05em}.lp-list--numbered.text-align-left.font-scale-14 li:nth-child(n+10){padding-left:1.625em}.lp-list--numbered.text-align-left.font-scale-14 li::before{left:-2px;line-height:.75em;top:.18em}.lp-list--numbered.text-align-left.font-scale-15 li{padding-left:1.05em}.lp-list--numbered.text-align-left.font-scale-15 li:nth-child(n+10){padding-left:1.625em}.lp-list--numbered.text-align-left.font-scale-15 li::before{left:-2px;line-height:.75em;top:.18em}.lp-list--numbered.text-align-left.font-scale-16 li{padding-left:1.05em}.lp-list--numbered.text-align-left.font-scale-16 li:nth-child(n+10){padding-left:1.625em}.lp-list--numbered.text-align-left.font-scale-16 li::before{left:-2px;line-height:.75em;top:.18em}.lp-list--numbered.text-align-left.font-scale-17 li{padding-left:1.05em}.lp-list--numbered.text-align-left.font-scale-17 li:nth-child(n+10){padding-left:1.625em}.lp-list--numbered.text-align-left.font-scale-17 li::before{left:-2px;line-height:.75em;top:.18em}.lp-list--numbered.text-align-left.font-scale-18 li{padding-left:1.05em}.lp-list--numbered.text-align-left.font-scale-18 li:nth-child(n+10){padding-left:1.625em}.lp-list--numbered.text-align-left.font-scale-18 li::before{left:-2px;line-height:.75em;top:.18em}.lp-list--icon.text-align-left li::before{left:-6px}.lp-list--icon.text-align-left.font-scale-1 li{padding-left:20px}.lp-list--icon.text-align-left.font-scale-2 li{padding-left:20px}.lp-list--icon.text-align-left.font-scale-3 li{padding-left:20px}.lp-list--icon.text-align-left.font-scale-7 li{padding-left:40px}.lp-list--icon.text-align-left.font-scale-8 li{padding-left:40px}.lp-list--icon.text-align-left.font-scale-9 li{padding-left:40px}.lp-list--icon.text-align-left.font-scale-10 li{padding-left:40px}.lp-list--icon.text-align-left.font-scale-10 li{padding-left:55px}.lp-list--icon.text-align-left.font-scale-11 li::before{left:-5px}.lp-list--icon.text-align-left.font-scale-12 li::before{left:-5px}.lp-list--icon.text-align-left.font-scale-13 li::before{left:-5px}.lp-list--icon.text-align-left.font-scale-14 li::before{left:-5px}.lp-list--icon.text-align-left.font-scale-15 li::before{left:-5px}.lp-list--icon.text-align-left.font-scale-16 li::before{left:-5px}.lp-list--icon.text-align-left.font-scale-17 li::before{left:-5px}.lp-list--icon.text-align-left.font-scale-18 li::before{left:-5px}@media(max-width: 480px){.lp-list--checkmark.text-align-left.font-scale-7 li::before{left:-5px}.lp-list--checkmark.text-align-left.font-scale-8 li::before{left:-5px}.lp-list--checkmark.text-align-left.font-scale-9 li::before{left:-5px}.lp-list--checkmark.text-align-left.font-scale-10 li::before{left:-5px}.lp-list--checkmark.text-align-left.font-scale-11 li::before{left:-5px}.lp-list--checkmark.text-align-left.font-scale-12 li::before{left:-5px}.lp-list--checkmark.text-align-left.font-scale-13 li::before{left:-5px}.lp-list--checkmark.text-align-left.font-scale-14 li::before{left:-5px}.lp-list--checkmark.text-align-left.font-scale-15 li::before{left:-5px}.lp-list--checkmark.text-align-left.font-scale-16 li::before{left:-5px}.lp-list--checkmark.text-align-left.font-scale-17 li::before{left:-5px}.lp-list--checkmark.text-align-left.font-scale-18 li::before{left:-5px}.lp-list--numbered.text-align-left.font-scale-1 li:nth-child(n+10){padding-left:20px}.lp-list--numbered.text-align-left.font-scale-2 li:nth-child(n+10){padding-left:20px}.lp-list--numbered.text-align-left.font-scale-3 li:nth-child(n+10){padding-left:20px}.lp-list--numbered.text-align-left.font-scale-4 li:nth-child(n+10){padding-left:25px}.lp-list--numbered.text-align-left.font-scale-5 li:nth-child(n+10){padding-left:25px}.lp-list--numbered.text-align-left.font-scale-6 li:nth-child(n+10){padding-left:25px}.lp-list--numbered.text-align-left.font-scale-7 li:nth-child(n+10){padding-left:35px}.lp-list--numbered.text-align-left.font-scale-8 li:nth-child(n+10){padding-left:35px}.lp-list--numbered.text-align-left.font-scale-9 li:nth-child(n+10){padding-left:35px}.lp-list--numbered.text-align-left.font-scale-10 li:nth-child(n+10){padding-left:40px}.lp-list--icon.text-align-left.font-scale-7 li{padding-left:28px}.lp-list--icon.text-align-left.font-scale-7 li::before{left:-5px}.lp-list--icon.text-align-left.font-scale-8 li{padding-left:28px}.lp-list--icon.text-align-left.font-scale-8 li::before{left:-5px}.lp-list--icon.text-align-left.font-scale-9 li{padding-left:28px}.lp-list--icon.text-align-left.font-scale-9 li::before{left:-5px}.lp-list--icon.text-align-left.font-scale-10 li{padding-left:35px}.lp-list--icon.text-align-left.font-scale-11 li{padding-left:1.25em}.lp-list--icon.text-align-left.font-scale-11 li::before{left:-5px}.lp-list--icon.text-align-left.font-scale-12 li{padding-left:1.25em}.lp-l
49ist--icon.text-align-left.font-scale-12 li::before{left:-5px}.lp-list--icon.text-align-left.font-scale-13 li{padding-left:1.25em}.lp-list--icon.text-align-left.font-scale-13 li::before{left:-5px}.lp-list--icon.text-align-left.font-scale-14 li{padding-left:1.25em}.lp-list--icon.text-align-left.font-scale-14 li::before{left:-5px}.lp-list--icon.text-align-left.font-scale-15 li{padding-left:1.25em}.lp-list--icon.text-align-left.font-scale-15 li::before{left:-5px}.lp-list--icon.text-align-left.font-scale-16 li{padding-left:1.25em}.lp-list--icon.text-align-left.font-scale-16 li::before{left:-5px}.lp-list--icon.text-align-left.font-scale-17 li{padding-left:1.25em}.lp-list--icon.text-align-left.font-scale-17 li::before{left:-5px}.lp-list--icon.text-align-left.font-scale-18 li{padding-left:1.25em}.lp-list--icon.text-align-left.font-scale-18 li::before{left:-5px}}[data-widget-type=lp-image-text] .composite-box,[data-widget-type=lp-calendar-text] .composite-box{align-items:stretch}[data-widget-type=lp-image-text] .composite-column-compose,[data-widget-type=lp-calendar-text] .composite-column-compose{display:flex}[data-widget-type=lp-image-text] .layout-TC .composite-column-compose,[data-widget-type=lp-image-text] .layout-BC .composite-column-compose,[data-widget-type=lp-calendar-text] .layout-TC .composite-column-compose,[data-widget-type=lp-calendar-text] .layout-BC .composite-column-compose{flex-direction:column}[data-widget-type=lp-image-text] .layout-TR .composite-row-compose,[data-widget-type=lp-image-text] .layout-CR .composite-row-compose,[data-widget-type=lp-image-text] .layout-BR .composite-row-compose,[data-widget-type=lp-image-text] .layout-TL .composite-row-compose,[data-widget-type=lp-image-text] .layout-CL .composite-row-compose,[data-widget-type=lp-image-text] .layout-BL .composite-row-compose,[data-widget-type=lp-calendar-text] .layout-TR .composite-row-compose,[data-widget-type=lp-calendar-text] .layout-CR .composite-row-compose,[data-widget-type=lp-calendar-text] .layout-BR .composite-row-compose,[data-widget-type=lp-calendar-text] .layout-TL .composite-row-compose,[data-widget-type=lp-calendar-text] .layout-CL .composite-row-compose,[data-widget-type=lp-calendar-text] .layout-BL .composite-row-compose{flex:1 1 100%;flex-direction:row}[data-widget-type=lp-image-text] .layout-TR .composite-row-compose,[data-widget-type=lp-image-text] .layout-TL .composite-row-compose,[data-widget-type=lp-calendar-text] .layout-TR .composite-row-compose,[data-widget-type=lp-calendar-text] .layout-TL .composite-row-compose{align-items:flex-start}[data-widget-type=lp-image-text] .layout-CR .composite-row-compose,[data-widget-type=lp-image-text] .layout-CL .composite-row-compose,[data-widget-type=lp-calendar-text] .layout-CR .composite-row-compose,[data-widget-type=lp-calendar-text] .layout-CL .composite-row-compose{align-items:center}[data-widget-type=lp-image-text] .layout-BR .composite-row-compose,[data-widget-type=lp-image-text] .layout-BL .composite-row-compose,[data-widget-type=lp-calendar-text] .layout-BR .composite-row-compose,[data-widget-type=lp-calendar-text] .layout-BL .composite-row-compose{align-items:flex-end}@media(max-width: 767px){.section .composite{padding:8px}}.leadbox .section,.leadbox .page>section{padding:initial}@media(max-width: 479px){.inner-column{padding:8px}}@media(min-width: 480px)and (max-width: 767px){.inner-column{padding:12px}}/*# sourceMappingURL=page-styles.css.map */</style> 50 <style> 51 .body--nav-open { overflow-y: hidden; } 52 </style> 53 54
54<script> 55 // Force window to top on page load, so hash can be smooth scrolled later. 56 if (window.location.hash) { 57 window.LPSite = {}; 58 try { 59 window.LPSite.hashCache = decodeURIComponent(window.location.hash); 60 } catch { 61 window.LPSite.hashCache = window.location.hash; 62 } 63 window.history.replaceState(null, null, '#'); 64 } 65 </script>
65 66 67 68 <meta name="page-analytics-property" content="5bfsYKqwKVVj4DKifSpfmD-default-prop"> 69
69<script type="text/javascript"> 70 (function(a,c,d,b,e,f){a[d]=b;a[b]||(a[b]=function(){a[b].q=a[b].q||[];a[b].q.push(arguments)},d=c.createElement(e),d.async=!0,d.src=f,c=c.getElementsByTagName(e)[0],c.parentNode.insertBefore(d,c))})(window,document,"LeadPagesCenterObject","center","script","https://js.center.io/center.js"); 71 center('create', '5bfsYKqwKVVj4DKifSpfmD-default-prop', '5bfsYKqwKVVj4DKifSpfmD-default-prop', {customId: 'site-W9DsqEXC6MfLusABMHro35'}); 72 73 center('send','view','site','W9DsqEXC6MfLusABMHro35:ea3eeb3d-594c-ef0d-5345-b40c17a81024',null,{customId:'site-W9DsqEXC6MfLusABMHro35:ea3eeb3d-594c-ef0d-5345-b40c17a81024'}); 74 </script>
74 75 <meta name="google-adsense-platform-account" content="ca-host-pub-5592227420017134"> 76 <meta name="google-adsense-platform-domain" content="leadpages.com"> 77 78 <style id="htmlpub-migrated-fonts"> 79@font-face{font-family:'Gilroy';src:url(/api/library/sz42kbmwlnmp2axnkz1h65ur) format('woff2'),url(/api/library/ka584cqmtwn1iu24jix4cubx) format('woff');font-weight:400;font-style:normal;font-display:swap;} 80@font-face{font-family:'Gilroy';src:url(/api/library/xwngolxl72eba9hwfdqt6m1v) format('woff2'),url(/api/library/axm2epjpba4ippddok750uew) format('woff');font-weight:700;font-style:normal;font-display:swap;} 81</style> 82</head> 83 84 <body><a href="https://pages.lpcontent.net/cdn-cgi/content?id=tBdkPxbqbJW7xGHoaN_k4B_bLhenv4lk9v9AkFIkJ5I-1790901077.4676342-1.2.1.1-Ib.hlhYi3Db16nOy_yyynK47y_a9EB6rqTgpZUvF5CkghPgD.gxlfaHgL3aLlMi." aria-hidden="true" rel="nofollow noopener" style="display: none !important; visibility: hidden !important"></a> 85 86 <style data-emotion-css="16l4s3y r2ag0e 119qg5r 2jofpk 10xsv1r 1x26rdx mi4w0s">.page-background{position:fixed;height:100vh;top:0;left:0;right:0;bottom:0;z-index:-1;background-color:rgb(0,0,40);}section{margin:0 auto;}.container{max-width:1140px;}@media (min-width:calc(1140px / 16)em){.widget{padding:calc(1140px / 100);}}h1{color:rgb(0,0,0);font-family:"Gilroy",sans-serif;font-weight:bold;font-style:normal;}h2{color:rgb(0,0,0);font-family:"Gilroy",sans-serif;font-weight:bold;font-style:normal;}h3{color:rgb(0,0,0);font-family:"Lato",sans-serif;font-weight:normal;font-style:normal;}p{color:rgb(0,0,0);font-family:"Montserrat",sans-serif;font-weight:normal;font-style:normal;}ul{color:rgb(0,0,0);font-family:"Montserrat",sans-serif;font-weight:normal;font-style:normal;}h1{font-size:5.5rem;}h2{font-size:1.75rem;}h3{font-size:1.125rem;}p{font-size:1rem;}ul{font-size:1rem;}.lp-list.lp-list--bullet.text-align-left li::before{left:0;}.lp-list.lp-list--bullet.text-align-left li{padding-left:20px;}.lp-list.lp-list--numbered.text-align-left li::before{left:-3px;}.lp-list.lp-list--numbered.text-align-left li{padding-left:20px;}.lp-list.lp-list--numbered.text-align-left li:nth-child(n + 10){padding-left:30px;}@media only screen and (max-width:480px){.lp-list.lp-list--numbered.text-align-left li:nth-child(n + 10){padding-left:25px;}}.lp-list.lp-list--icon.text-align-left li::before{left:-6px;}.lp-list.lp-list--checkmark.text-align-left li::before{left:-6px;}h1{padding-bottom:0em;}h2{padding-bottom:0em;}h3{padding-bottom:0em;}p{margin-bottom:0em;}p,.lp-list{margin-bottom:0em;}ul{margin-bottom:0em;}h1{line-height:1.25;}h2{line-height:1.125;}h3{line-height:1.125;}p{line-height:1.625;}ul{line-height:1.625;}@media (min-width:480px){h1{font-size:4.25rem;}}@media (min-width:768px){h1{font-size:5.5rem;}}@media (min-width:480px){h2{font-size:1.5rem;}}@media (min-width:768px){h2{font-size:1.75rem;}}@media (min-width:480px){h3{font-size:1rem;}}@media (min-width:768px){h3{font-size:1.125rem;}}@media (min-width:480px){p{font-size:0.875rem;}}@media (min-width:768px){p{font-size:1rem;}}@media (min-width:480px){ul{font-size:0.875rem;}}@media (min-width:768px){ul{font-size:1rem;}}.lp-alert,.lp-calendar-react .date,.lp-calendar-react .month,.lp-form-v2-input-react{font-family:"Montserrat",sans-serif;}.lp-form-v2-input-react{color:rgb(0,0,0);}form.is-disabled .error-prompt--disabled{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}form.is-disabled .form-field,form.is-disabled .lp-button-react,form.is-disabled .lp-product-summary-react{opacity:0.4;pointer-events:none;}form.is-invalid .error-prompt--invalid{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}form.has-info .error-prompt--info{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}</style><style data-emotion-css="1rm4c50">.css-1rm4c50 .mobile-nav-trigger{position:absolute;right:23px;top:20px;opacity:0;}.css-1rm4c50 .column.mobile-hide-column{display:none;}.css-1rm4c50 .layout.mobile-hide-layout{display:none;}.css-1rm4c50 .mobile-nav-trigger--show{opacity:1;}</style><div class="site-header js-site-header css-1rm4c50" data-scrolling="static" data-min-height="3" data-max-height="3" data-min-font-size="2" data-max-font-size="4" data-min-logo-width="37" data-max-logo-width="234" data-persist-part-id="qs9a6748nxuai4pt21t7fok6" data-persist-part-kind="header"><style data-emotion-css="p62xri">.css-p62xri .flexed-header .layout{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;}.css-p62xri .flexed-header .layout .column:nth-of-type(1){-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;max-width:initial;}.css-p62xri .flexed-header .layout .column:nth-of-type(2){-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;max-width:initial;}.css-p62xri .flexed-header .layout .column:nth-of-type(3){-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;max-width:initial;}.css-p62xri .flexed-header .widget{padding:16px;}</style><div class="site-nav css-p62xri"><style data-emotion-css="1wpoh5r">.css-1wpoh5r{background-color:rgba(0,0,40,1);border-color:rgba(0,0,40,1);background-size:cover;background-position:center center;background-repeat:no-repeat;}.css-1wpoh5r > .container{padding-top:3vw;padding-right:vw;padding-bottom:3vw;padding-left:vw;padding-top:3cqw;padding-right:cqw;padding-bottom:3cqw;padding-left:cqw;}.site-header .css-1wpoh5r > .container{padding-top:10px;padding-right:0;padding-bottom:10px;padding-left:0;-webkit-transition:padding 0.03s ease;transition:padding 0.03s ease;}.bar .css-1wpoh5r{padding:0 50px;}@media (max-width:23.75em){.bar .css-1wpoh5r{padding:0 25px;}}@media (min-width:71.25em){.css-1wpoh5r > .container{padding-top:34.2px;padding-right:NaNpx;padding-bottom:34.2px;padding-left:NaNpx;}}</style><section class="header-section flexed-header section css-1wpoh5r" data-guid="73350b05-d41a-3dc1-cb68-113151418d66"><div class="container" id="header-section"><div class="layout flex flex--12" data-guid="ae79c9ba-59cd-a394-35a8-fdcd98d55279"><style data-emotion-css="1gailv9">.css-1gailv9{padding-top:0vw;padding-right:0vw;padding-bottom:0vw;padding-left:0vw;padding-top:0cqw;padding-right:0cqw;padding-bottom:0cqw;padding-left:0cqw;}@media(min-width:71.25em){.css-1gailv9.column{padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.css-1gailv9.column > .inner-column{padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:11.4px;}}</style><div class="column flex__item--md-3 flex__item--xs-12 css-1gailv9" data-guid="8d9ba638-a259-7f37-177f-a111bca28b3e">
86<style data-emotion-css="19wqggs">.css-19wqggs{background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0);border-radius:0px;background-size:cover;background-position:center center;background-repeat:no-repeat;padding-top:0vw;padding-right:0vw;padding-bottom:0vw;padding-left:1vw;padding-top:0cqw;padding-right:0cqw;padding-bottom:0cqw;padding-left:1cqw;}.bar .css-19wqggs{padding-top:0;padding-bottom:0;}</style><div class="inner-column css-19wqggs"><style data-emotion-css="47r3vg">.section--center-widgets .css-47r3vg{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}@media (max-width:767px){.bar .css-47r3vg{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}</style><div class="row flex flex--12 css-47r3vg"><style data-emotion-css="8x0d4x">.section--center-widgets .css-8x0d4x{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto;max-width:100%;}</style><div class="composite flex__item--md-12 flex__item--xs-12 css-8x0d4x"><div class="inner-composite flex flex--12"><div class="widget-column flex__item--md-12 flex__item--xs-12"><div class="widget-row flex flex--12"><div class="flex__item--md-12 flex__item--xs-12"><div data-widget-id="7129c46e-fbe1-bcb1-c959-1dd94d8a4399" class="widget"><div><style data-emotion-css="94ohs6">@media (max-width:959px){.css-94ohs6{text-align:center;}}</style><div class="css-94ohs6"><style data-emotion-css="11g9kr1">.css-11g9kr1{-webkit-text-decoration:none;text-decoration:none;}</style><a data-widget-link="true" href="./" target="_top" data-link-type="site-route" data-route-guid="97724f5e-6fe3-cbd6-45e5-143e3151233f" data-route-slug="" class="css-11g9kr1 lp-image-react-container lp-icon-react__icon--linked" data-widget-type="LpLogoReact"><style data-emotion-css="1mzizu">.css-1mzizu{width:234px;vertical-align:bottom;}</style><img class="js-image-logo header-logo-element css-1mzizu" src="/api/library/n9yuu925tnjn98vo14aplkcc" alt="" data-image-upload-source="builder3"></a></div></div></div></div></div></div></div></div></div></div></div><style data-emotion-css="12b8izt">.css-12b8izt{padding-top:0vw;padding-right:0vw;padding-bottom:0vw;padding-left:0vw;padding-top:0cqw;padding-right:0cqw;padding-bottom:0cqw;padding-left:0cqw;}@media(min-width:71.25em){.css-12b8izt.column{padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.css-12b8izt.column > .inner-column{padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}}</style><div class="column flex__item--md-6 flex__item--xs-12 css-12b8izt" data-guid="d7fdabec-73fc-161f-5df6-47d544b69729"><style data-emotion-css="c14f2p">.css-c14f2p{background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0);border-radius:0px;background-size:cover;background-position:center center;background-repeat:no-repeat;padding-top:0vw;padding-right:0vw;padding-bottom:0vw;padding-left:0vw;padding-top:0cqw;padding-right:0cqw;padding-bottom:0cqw;padding-left:0cqw;}.bar .css-c14f2p{padding-top:0;padding-bottom:0;}</style><div class="inner-column css-c14f2p"><div class="row flex flex--12 css-47r3vg"><div class="composite flex__item--md-12 flex__item--xs-12 css-8x0d4x"><div class="inner-composite flex flex--12"><div class="widget-column flex__item--md-12 flex__item--xs-12"><div class="widget-row flex flex--12"><div class="flex__item--md-12 flex__item--xs-12"><div data-widget-id="e18f8904-4a5a-3b8f-76c7-901eb763e2ce" class="widget"><style data-emotion-css="idf1c2">.css-idf1c2{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}.css-idf1c2 .lp-nav__link{display:inline-block;cursor:pointer;position:relative;font-weight:bold;-webkit-text-decoration:none;text-decoration:none;}.css-idf1c2 .lp-nav__link:hover:after{bottom:0;opacity:0.7;-webkit-transition:all 0.1s ease;transition:all 0.1s ease;}.css-idf1c2 .lp-nav__link:after{content:'';position:absolute;bottom:-6px;height:2px;width:100%;left:0;right:0;opacity:0;pointer-events:none;}.css-idf1c2 .lp-nav__link.lp-nav__link--active:after{bottom:0;opacity:1;}.css-idf1c2 .lp-nav__link.lp-subnav__link:hover:after{left:-12px;}.css-idf1c2 .lp-nav__link.lp-subnav__link:after{left:-18px;height:70%;width:2px;bottom:0;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);}.css-idf1c2 .lp-nav__link.lp-subnav__link.lp-nav__link--active:after{left:-12px;}.css-idf1c2 .lp-subnav--popper{display:none;z-index:999;}.css-idf1c2 .lp-subnav--popper.lp-subnav--open{display:block;}.css-idf1c2 .lp-subnav--popper.lp-subnav--open .lp-subnav{display:block;}@media (max-width:959px){.css-idf1c2 .lp-nav__link{width:100%;}.css-idf1c2 .lp-nav__link:hover:after{left:-12px;}.css-idf1c2 .lp-nav__link:after{left:-18px;height:70%;width:2px;bottom:0;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);}.css-idf1c2 .lp-nav__link.lp-nav__link--active:after{left:-12px;}}
86.css-idf1c2.w-e18f8904-4a5a-3b8f-76c7-901eb763e2ce{-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;font-family:"Gilroy",sans-serif;font-size:calc(0.8em + (0.1em * 1));}.css-idf1c2.w-e18f8904-4a5a-3b8f-76c7-901eb763e2ce .lp-nav__link{color:rgba(255,255,255,1);font-weight:bold;font-style:normal;margin-left:calc(12px + 0.3em);margin-right:12px;padding:calc(10px + 0.2em) 0;}.css-idf1c2.w-e18f8904-4a5a-3b8f-76c7-901eb763e2ce .lp-nav__link:hover,.css-idf1c2.w-e18f8904-4a5a-3b8f-76c7-901eb763e2ce .lp-nav__link.lp-nav__link--active[data-link-type="site-route"]{color:rgba(255,255,255,1);}.css-idf1c2.w-e18f8904-4a5a-3b8f-76c7-901eb763e2ce .lp-nav__link:hover svg,.css-idf1c2.w-e18f8904-4a5a-3b8f-76c7-901eb763e2ce .lp-nav__link.lp-nav__link--active[data-link-type="site-route"] svg{fill:rgba(255,255,255,1);}.css-idf1c2.w-e18f8904-4a5a-3b8f-76c7-901eb763e2ce .lp-nav__link:hover:after,.css-idf1c2.w-e18f8904-4a5a-3b8f-76c7-901eb763e2ce .lp-nav__link.lp-nav__link--active[data-link-type="site-route"]:after{background-color:rgba(255,255,255,1);}@media (min-width:958px){.css-idf1c2.w-e18f8904-4a5a-3b8f-76c7-901eb763e2ce .lp-nav__link-container:last-child .lp-nav__link{margin-right:12px;}.css-idf1c2.w-e18f8904-4a5a-3b8f-76c7-901eb763e2ce .lp-nav__link-container:last-child .lp-nav__link.lp-subnav__link{margin-right:0px;}.css-idf1c2.w-e18f8904-4a5a-3b8f-76c7-901eb763e2ce .lp-nav__link-container:first-child .lp-nav__link{margin-left:12px;}.css-idf1c2.w-e18f8904-4a5a-3b8f-76c7-901eb763e2ce .lp-nav__link-container:first-child .lp-nav__link.lp-subnav__link{margin-left:0px;}}.css-idf1c2.w-e18f8904-4a5a-3b8f-76c7-901eb763e2ce .lp-nav__link.lp-subnav__link{margin-left:12px;margin-right:calc(12px + 0.3em);padding:calc(10px + 0.2em) 0;}</style><div class="lp-nav w-e18f8904-4a5a-3b8f-76c7-901eb763e2ce flex-end css-idf1c2" data-widget-type="LpNavReact"><style data-emotion-css="1oevijs">.css-1oevijs{position:relative;z-index:999;}@media (max-width:959px){.css-1oevijs{width:100%;}}</style><div class="lp-nav__link-container css-1oevijs"><a data-widget-link="true" href="./" target="_top" data-link-type="site-route" data-route-guid="97724f5e-6fe3-cbd6-45e5-143e3151233f" data-route-slug="" class="lp-nav__link">ABOUT US</a></div><div class="lp-nav__link-container css-1oevijs"><style data-emotion-css="gbl7kh">.css-gbl7kh{padding-right:24px !important;}@media (min-width:960px){.css-gbl7kh::after{width:calc(100% - 24px) !important;}}</style><a data-widget-link="true" href="the-data" target="_top" data-link-type="site-route" data-route-guid="061d5db1-628f-7184-9027-75dee7c7a4e2" data-route-slug="the-data" class="lp-nav__link css-gbl7kh">THE DATA<style data-emotion-css="k7ybhg">.css-k7ybhg{fill:rgba(255,255,255,1);cursor:pointer;margin-left:6px;}.css-k7ybhg.subnav__icon--mobile{display:none;}@media (max-width:959px){.css-k7ybhg.subnav__icon--mobile{display:inline-block;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);-webkit-transition:0.1s all ease;transition:0.1s all ease;margin:0em 0 0 0;position:absolute;right:0;}.css-k7ybhg.subnav__icon--mobile[data-collapsed='false']{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);}}.css-k7ybhg.subnav__icon--desktop{display:none;position:absolute;top:50%;right:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);}@media (min-width:960px){.css-k7ybhg.subnav__icon--desktop{display:inline-block;}}.lp-subnav .css-k7ybhg.subnav__icon--desktop{-webkit-transform:translateY(-50%) rotate(-90deg);-ms-transform:translateY(-50%) rotate(-90deg);transform:translateY(-50%) rotate(-90deg);}</style><svg xmlns="http://www.w3.org/2000/svg" width="10" height="5" viewBox="0 0 10 5" class="subnav__icon--desktop css-k7ybhg"><polygon points="0 0 5 5 10 0"></polygon></svg></a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" class="subnav__icon--mobile js-mobile-subnav-trigger css-k7ybhg" data-collapsed="true"><path d="M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z"></path><path fill="none" d="M0 0h24v24H0V0z"></path></svg><style data-emotion-css="1cck64h">.css-1cck64h{position:relative;background:rgba(0,0,40,1);padding:0 0 0 32px;overflow:hidden;-webkit-transition:height 0.3s ease-out;transition:height 0.3s ease-out;height:0px;}@media (min-width:960px){.css-1cck64h{display:none;overflow:initial;min-width:168px;max-width:320px;height:auto;border-radius:3px;box-shadow:0 3px 6px 0 rgba(0,0,0,0.23),0 3px 6px 0 rgba(0,0,0,0.16);padding:12px;-webkit-transition:-webkit-transform 0.5s ease 0.2s;-webkit-transition:transform 0.5s ease 0.2s;transition:transform 0.5s ease 0.2s;-webkit-transform:translateY(-20px);-ms-transform:translateY(-20px);transform:translateY(-20px);}.css-1cck64h.lp-subnav--animate-in{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);}.css-1cck64h .lp-nav__link.lp-subnav__link{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;
86-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;overflow-wrap:break-word;word-break:break-all;word-break:break-word;word-wrap:break-word;}}@media (max-width:959px){.css-1cck64h > div:last-of-type{padding-bottom:16px;}}</style><div class="lp-subnav w-e18f8904-4a5a-3b8f-76c7-901eb763e2ce css-1cck64h" data-collapsed="true"><a data-widget-link="true" href="the-team" target="_top" data-link-type="site-route" data-route-guid="91141048-1f0c-bdcd-9bc2-48ba13e20bb1" data-route-slug="the-team" class="lp-nav__link lp-subnav__link">THE TEAM</a><a data-widget-link="true" href="capabilities" target="_top" data-link-type="site-route" data-route-guid="df09f96c-b099-7245-5d8f-cb6c65240644" data-route-slug="capabilities" class="lp-nav__link lp-subnav__link">PARTNERSHIP</a></div></div><div class="lp-nav__link-container css-1oevijs"><a data-widget-link="true" href="publications" target="_top" data-link-type="site-route" data-route-guid="8e78de7e-a298-2c43-1708-b32c8818f2f8" data-route-slug="publications" class="lp-nav__link">PUBLICATIONS</a></div></div></div></div></div></div></div></div></div></div></div><style data-emotion-css="1n30rf1">.css-1n30rf1{padding-top:0vw;padding-right:0vw;padding-bottom:0vw;padding-left:0vw;padding-top:0cqw;padding-right:0cqw;padding-bottom:0cqw;padding-left:0cqw;}@media(min-width:71.25em){.css-1n30rf1.column{padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.css-1n30rf1.column > .inner-column{padding-top:0px;padding-right:11.4px;padding-bottom:0px;padding-left:0px;}}</style><div class="column flex__item--md-3 flex__item--xs-12 css-1n30rf1" data-guid="34cec33a-552a-89e3-f374-423639e6cf9a"><style data-emotion-css="1vwrro9">.css-1vwrro9{background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0);border-radius:0px;background-size:cover;background-position:center center;background-repeat:no-repeat;padding-top:0vw;padding-right:1vw;padding-bottom:0vw;padding-left:0vw;padding-top:0cqw;padding-right:1cqw;padding-bottom:0cqw;padding-left:0cqw;}.bar .css-1vwrro9{padding-top:0;padding-bottom:0;}</style><div class="inner-column css-1vwrro9"><div class="row flex flex--12 css-47r3vg"><div class="composite flex__item--md-12 flex__item--xs-12 css-8x0d4x"><div class="inner-composite flex flex--12"><div class="widget-column flex__item--md-12 flex__item--xs-12"><div class="widget-row flex flex--12"><div class="flex__item--md-12 flex__item--xs-12"><div data-widget-id="ff17a9e5-c4b6-9ecc-0971-8cd97bc1170f" class="widget"><style data-emotion-css="y13kug">.css-y13kug{position:relative;z-index:0;text-align:center;}</style><div class="lp-button-react-wrapper css-y13kug" data-widget-type="LpButtonReact"><style data-emotion-css="1qxvm0z">.css-1qxvm0z{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;border-style:solid;border-width:1px;text-align:center;font-family:'Lato',sans-serif;text-shadow:none;-webkit-transition:color 0.2s linear,background 0.2s linear,border-color 0.2s linear, text-shadow 0.2s linear;transition:color 0.2s linear,background 0.2s linear,border-color 0.2s linear, text-shadow 0.2s linear;-webkit-text-decoration:none;text-decoration:none;position:relative;width:100%;font-weight:bold;min-height:36px;min-width:72px;padding:8px 18px;background:transparent;font-family:"Montserrat",sans-serif;border-radius:10000px;}.css-1qxvm0z::before{border-radius:10000px;}.css-1qxvm0z,.css-1qxvm0z:focus,.css-1qxvm0z:active{border-color:rgb(17,209,219);color:rgb(17,209,219);}.css-1qxvm0z:hover{background-color:rgb(17,209,219);color:rgb(0,0,0);}</style><a data-widget-link="true" href="contact" target="_top" data-link-type="site-route" data-route-guid="ea3eeb3d-594c-ef0d-5345-b40c17a81024" data-route-slug="contact" class="lp-button-react w-ff17a9e5-c4b6-9ecc-0971-8cd97bc1170f lp-button-react--full is-bold lp-button-react--small lp-button-react--line font-scale-3 line-height-scale-3 css-1qxvm0z">CONTACT US</a></div></div></div></div></div></div></div></div></div></div></div></div></section></div><div class="js-mobile-nav-trigger mobile-nav-trigger" data-qa-selector="side-nav-menu-trigger"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" class="fas fa-bars lp-icon-react__icon"><path d="M0 0h24v24H0z" fill="none"></path><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z" fill="rgba(255, 255, 255, 1)"></path></svg></div><style data-emotion-css="4prg6b">.css-4prg6b{position:fixed;top:0;bottom:0;right:0;width:240px;background-color:rgba(0,0,40,1);z-index:11;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%);-webkit-transition:-webkit-transform 0.2s ease-out;-webkit-transition:transform 0.2s ease-out;transition:transform 0.2s ease-out;padding:24px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-flow:column nowrap;-ms-flex-flow:column nowrap;flex-flow:column nowrap;overflow-y:auto;}.css-4prg6b.show-side-nav{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);-webkit-transition:-webkit-transform 0.2s ease-in;-webkit-transition:transform 0.2s ease-in;transition:transform 0.2s ease-in;}</style><div class="js-side-nav css-4prg6b"><style data-emotion-css="ow1ier">.css-ow1ier{padding-bottom:24px;}</style><div class="css-ow1ier"><style data-emotion-css="lsqhzm">.css-lsqhzm{font-size:21px;}</style><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" class="js-close-side-nav lp-icon-react__icon css-lsqhzm" aria-hidden="true"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" fill="rgba(255, 255, 255, 1)"></path><path d="M0 0h24v24H0z" fill="none"></path></svg></div><style data-emotion-css="l8o4jq">.css-l8o4jq .composite .widget{padding:0;}.css-l8o4jq .composite .widget .lp-nav{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-flow:column nowrap;-ms-flex-flow:column nowrap;flex-flow:column nowrap;-webkit-box-pack:start;
86-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}.css-l8o4jq .composite .widget .lp-nav__link{margin:0;padding:0.2em 0;cursor:pointer;position:relative;font-weight:bold;-webkit-text-decoration:none;-webkit-text-decoration:none;text-decoration:none;}</style><div class="css-l8o4jq"><div class="composite flex__item--md-12 flex__item--xs-12 css-8x0d4x"><div class="inner-composite flex flex--12"><div class="widget-column flex__item--md-12 flex__item--xs-12"><div class="widget-row flex flex--12"><div class="flex__item--md-12 flex__item--xs-12"><div data-widget-id="e18f8904-4a5a-3b8f-76c7-901eb763e2ce" class="widget"><div class="lp-nav w-e18f8904-4a5a-3b8f-76c7-901eb763e2ce flex-end css-idf1c2" data-widget-type="LpNavReact"><div class="lp-nav__link-container css-1oevijs"><a data-widget-link="true" href="./" target="_top" data-link-type="site-route" data-route-guid="97724f5e-6fe3-cbd6-45e5-143e3151233f" data-route-slug="" class="lp-nav__link">ABOUT US</a></div><div class="lp-nav__link-container css-1oevijs"><a data-widget-link="true" href="the-data" target="_top" data-link-type="site-route" data-route-guid="061d5db1-628f-7184-9027-75dee7c7a4e2" data-route-slug="the-data" class="lp-nav__link css-gbl7kh">THE DATA<svg xmlns="http://www.w3.org/2000/svg" width="10" height="5" viewBox="0 0 10 5" class="subnav__icon--desktop css-k7ybhg"><polygon points="0 0 5 5 10 0"></polygon></svg></a><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" class="subnav__icon--mobile js-mobile-subnav-trigger css-k7ybhg" data-collapsed="true"><path d="M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z"></path><path fill="none" d="M0 0h24v24H0V0z"></path></svg><div class="lp-subnav w-e18f8904-4a5a-3b8f-76c7-901eb763e2ce css-1cck64h" data-collapsed="true"><a data-widget-link="true" href="the-team" target="_top" data-link-type="site-route" data-route-guid="91141048-1f0c-bdcd-9bc2-48ba13e20bb1" data-route-slug="the-team" class="lp-nav__link lp-subnav__link">THE TEAM</a><a data-widget-link="true" href="capabilities" target="_top" data-link-type="site-route" data-route-guid="df09f96c-b099-7245-5d8f-cb6c65240644" data-route-slug="capabilities" class="lp-nav__link lp-subnav__link">PARTNERSHIP</a></div></div><div class="lp-nav__link-container css-1oevijs"><a data-widget-link="true" href="publications" target="_top" data-link-type="site-route" data-route-guid="8e78de7e-a298-2c43-1708-b32c8818f2f8" data-route-slug="publications" class="lp-nav__link">PUBLICATIONS</a></div></div></div></div></div></div></div></div></div><style data-emotion-css="1qtcj7h">.css-1qtcj7h{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding:24px 0 96px;}.css-1qtcj7h .composite{width:100%;}</style><div class="css-1qtcj7h"><div class="composite flex__item--md-12 flex__item--xs-12 css-8x0d4x"><div class="inner-composite flex flex--12"><div class="widget-column flex__item--md-12 flex__item--xs-12"><div class="widget-row flex flex--12"><div class="flex__item--md-12 flex__item--xs-12"><div data-widget-id="ff17a9e5-c4b6-9ecc-0971-8cd97bc1170f" class="widget"><div class="lp-button-react-wrapper css-y13kug" data-widget-type="LpButtonReact"><a data-widget-link="true" href="contact" target="_top" data-link-type="site-route" data-route-guid="ea3eeb3d-594c-ef0d-5345-b40c17a81024" data-route-slug="contact" class="lp-button-react w-ff17a9e5-c4b6-9ecc-0971-8cd97bc1170f lp-button-react--full is-bold lp-button-react--small lp-button-react--line font-scale-3 line-height-scale-3 css-1qxvm0z">CONTACT US</a></div></div></div></div></div></div></div></div></div><style data-emotion-css="j5w9t3">.css-j5w9t3.side-nav-shield{display:none;}.css-j5w9t3.side-nav-shield.side-nav-shield--show{background-color:rgba(0,0,0,0.4);bottom:0;display:block;left:0;position:fixed;right:0;top:0;z-index:10;}</style><div class="js-side-nav-shield side-nav-shield css-j5w9t3"></div>
86<script data-persist-part-script-for="qs9a6748nxuai4pt21t7fok6"> 87(function(){ 88 var root = document.currentScript && document.currentScript.closest('[data-persist-part-id]'); 89 if (!root || root.__hpHeaderRuntimeInit) return; 90 root.__hpHeaderRuntimeInit = true; 91 "use strict";function ownKeys(t,e){var o=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),o.push.apply(o,n)}return o}function _objectSpread(t){for(var e=1;e<arguments.length;e++){var o=null!=arguments[e]?arguments[e]:{};e%2?ownKeys(o,!0).forEach(function(e){_defineProperty(t,e,o[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(o)):ownKeys(o).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(o,e))})}return t}function _defineProperty(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function _slicedToArray(e,t){return _arrayWithHoles(e)||_iterableToArrayLimit(e,t)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function _iterableToArrayLimit(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var o=[],n=!0,r=!1,a=void 0;try{for(var i,c=e[Symbol.iterator]();!(n=(i=c.next()).done)&&(o.push(i.value),!t||o.length!==t);n=!0);}catch(e){r=!0,a=e}finally{try{n||null==c.return||c.return()}finally{if(r)throw a}}return o}}function _arrayWithHoles(e){if(Array.isArray(e))return e}!function(a,u){function t(e){var t=_slicedToArray(e.match(/(\d+)(px|em)/),2)[1];return parseInt(t,10)}function e(e){return 5*(e-1)}function o(e){return 1.2+.2*(e-1)}function n(o){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:"ease";return function(e){var t=" ".concat(e,"s ").concat(n);return o.map(function(e){return e+t}).join(", ")}}var i=n(["font-size"]),c=n(["width"]),s=n(["padding-top","padding-bottom"]),f=n(["top"],"linear");function r(e){return e.getBoundingClientRect().height}function l(e){return e.getBoundingClientRect().top}function S(o,n){return function(e,t){return o?Math.max(e,t*n):e}}var _,d,g,h,m,y,p,v,L,E=20,O={BODY_NAV_OPEN:"body--nav-open",FLEXED_HEADER:"flexed-header",FULL_ROW:"flex__item--md-12",HALF_ROW:"flex__item--md-6",MOBILE_HIDE_COLUMN:"mobile-hide-column",MOBILE_HIDE_LAYOUT:"mobile-hide-layout",NAV_LINK:"lp-nav__link",QUARTER_ROW:"flex__item--md-3",SHOW_NAV:"show-side-nav",SHOW_NAV_SHIELD:"side-nav-shield--show",SHOW_NAV_TRIGGER:"mobile-nav-trigger--show",STICKY:"sticky",STICKY_NAV_SCROLLED_DOWN:"scrolled-down",SUBNAV_TRIGGER:"js-mobile-subnav-trigger"},b=function(){var e=u.querySelector(".site-nav"),t=e.querySelectorAll(".layout"),o=t[0],n=t[1],r=_objectSpread({body:u.body,hamburger:u.querySelector(".js-mobile-nav-trigger"),headerSpacer:u.querySelector(".js-header-spacer"),imageLogo:e.querySelector(".js-image-logo"),header:u.querySelector(".site-header"),siteNavContainer:e.querySelector(".container"),siteNavSection:e.querySelector("section"),firstRow:o,secondRow:n,textLogo:e.querySelector(".js-text-logo")},n&&{logoWidgetColumn:o.querySelector(".column:nth-of-type(2)"),logoWidget:o.querySelector(".column:nth-of-type(2) .widget")},{columnSpacers:[],bar:null});r.siteNavPaddedElement=r.secondRow||r.siteNavContainer,r.headerSpacer&&(r.headerTrack=r.headerSpacer.querySelector(".js-header-track"));for(var a=r.header.querySelectorAll(".column"),i=0;i<a.length;i+=1){var c=a[i],s=c.querySelector('[data-widget-type="LpNavReact"]'),l=c.querySelector('[data-widget-type="LpButtonReact"]'),d=c.querySelector('[data-widget-type="LpSpaceReact"]');s&&(r.columnNav=c),l&&(r.columnCta=c),d&&r.columnSpacers.push(c)}return r.sideNav=r.header.querySelector(".js-side-nav"),r.closeSideNav=r.sideNav.querySelector(".js-close-side-nav"),r.sideNavShield=r.header.querySelector(".js-side-nav-shield"),r}(),R=b.header.dataset,N=R&&R.scrolling,w=e(R&&R.minHeight),A=e(R&&R.maxHeight),x=o(R&&R.minFontSize),I=o(R&&R.maxFontSize),T=R&&R.minLogoWidth,C=R&&R.maxLogoWidth,q={text:1.4,image:Math.max(65,R.minLogoWidth||100),padding:e(1)},H=a.matchMedia("(min-width: ".concat(960,"px)")),W=0,D=0,M=!1,j=!1,B=1;function k(){return H.matches}function P(e,t){e&&!e.classList.contains(t)&&e.classList.add(t)}function V(e,t){e&&e.classList.contains(t)&&e.classList.remove(t)}function F(){b.sideNav.classList.toggle(O.SHOW_NAV),b.sideNavShield.classList.toggle(O.SHOW_NAV_SHIELD),b.body.classList.toggle(O.BODY_NAV_OPEN)}function U(){V(b.sideNav,O.SHOW_NAV),V(b.sideNavShield,O.SHOW_NAV_SHIELD),V(b.body,O.BODY_NAV_OPEN)}function Y(e){var t=!!e.target.dataset.widgetLink,o=e.target.classList.contains(O.NAV_LINK);(t||o)&&U()}function G(e){var t=e.target;t.classList.contains(O.SUBNAV_TRIGGER)||(t=t.parentElement);for(var o,n=t.parentElement,r=0;r<n.children.length;r+=1){var a=n.children[r];a.classList.contains("lp-subnav")&&(o=a)}o&&("true"===o.getAttribute("data-collapsed")?(function(t){var e=t.scrollHeight;t.style.height="".concat(e,"px"),t.addEventListener("transitionend",function e(){t.removeEventListener("transitionend",e),t.style.height="auto"}
91),t.setAttribute("data-collapsed","false")}(o),o.setAttribute("data-collapsed","false"),t.setAttribute("data-collapsed","false")):(function(e){var t=e.scrollHeight,o=e.style.transition;e.style.transition="",requestAnimationFrame(function(){e.style.height="".concat(t,"px"),e.style.transition=o,requestAnimationFrame(function(){e.style.height="".concat(0,"px")})}),e.setAttribute("data-collapsed","true")}(o),t.setAttribute("data-collapsed","true")))}function z(e,t){var o=t.text,n=t.image,r=t.padding;"sticky"!==N||b.secondRowLogo||(b.textLogo?b.textLogo.style.cssText="font-size: ".concat(o,"em; transition: ").concat(i(e),";"):b.imageLogo.style.cssText="width: ".concat(n,"px; transition: ").concat(c(e),";")),b.siteNavPaddedElement.style.cssText="padding: ".concat(r,"px 0; transition: ").concat(s(e),";")}function K(e){e?(b.imageLogo&&(b.imageLogo.style.cssText=""),v&&z(.1,v),b.header.classList.contains(O.SHOW_NAV)&&U(),P(b.siteNavSection,O.FLEXED_HEADER),V(b.columnCta,O.MOBILE_HIDE_COLUMN),V(b.columnNav,O.MOBILE_HIDE_COLUMN),b.columnSpacers.forEach(function(e){return V(e,O.MOBILE_HIDE_COLUMN)}),V(b.hamburger,O.SHOW_NAV_TRIGGER),V(b.secondRow,O.MOBILE_HIDE_LAYOUT)):(v||(v={}),b.textLogo&&b.textLogo.style&&b.textLogo.style.fontSize&&(v.text=t(b.textLogo.style.fontSize)),b.imageLogo&&b.imageLogo.style&&b.imageLogo.style.fontSize&&(v.image=t(b.imageLogo.style.width)),b.siteNavPaddedElement&&b.siteNavPaddedElement.style&&b.siteNavPaddedElement.style.paddingTop&&(v.padding=t(b.siteNavPaddedElement.style.paddingTop)),z(.1,q),V(b.siteNavSection,O.FLEXED_HEADER),P(b.columnCta,O.MOBILE_HIDE_COLUMN),P(b.columnNav,O.MOBILE_HIDE_COLUMN),b.columnSpacers.forEach(function(e){return P(e,O.MOBILE_HIDE_COLUMN)}),P(b.hamburger,O.SHOW_NAV_TRIGGER),P(b.secondRow,O.MOBILE_HIDE_LAYOUT))}var X=function e(t){var o=["lpages","googleapis","localhost"],n=u.querySelector('meta[name="leadpages-serving-domain"]');if(n&&o.push(n.getAttribute("content")),o.some(function(e){return-1!==t.origin.indexOf(e)})){if("REPOSITION"===t.data.type)_=t.data.payload.position;else if("LOAD"===t.data.type)_=t.data.payload.position,b.bar=u.querySelector(".lp-bar__pusher");else if("CLOSE"===t.data.type)return b.bar=null,a.removeEventListener("message",e),d&&a.cancelAnimationFrame(d),void(d=a.requestAnimationFrame(function(){b.header.style.top=j?"".concat(b.header.getBoundingClientRect().top-W,"px"):0,W=0}));d&&a.cancelAnimationFrame(d),d=a.requestAnimationFrame(function(){j&&function(e){var t=e.type;"LOAD"!==t&&"RESIZE"!==t&&"REPOSITION"!==t||("bottom"===_&&0!==W?(b.header.style.top="".concat(l(b.header)-W,"px"),W=0):"top"===_&&(g&&(clearTimeout(g),g=null),g=setTimeout(function(){if("top"===_){var e=r(b.bar);b.header.style.top="".concat(l(b.header)+(e-W),"px"),W=e,g=null}},350)))}(t.data),d=null})}};function Q(){L&&(L.unobserve(b.headerTrack),L.disconnect(),L=null);var e=b.header.getBoundingClientRect().height,t=b.headerTrack.getBoundingClientRect().height;b.headerTrack.style.minHeight="".concat(Math.max(t,e),"px"),(L=new IntersectionObserver(te,{threshold:function(e){if(e<=0)return 0;for(var t=[],o=1;o<=e;o+=1)t.push(o/e);return t}(b.headerTrack.getBoundingClientRect().height)})).observe(b.headerTrack)}function Z(){k()?function(e,t){var o="".concat(I,"em"),n="".concat(A,"px 0"),r="".concat(C,"px"),a=e.cloneNode(!0);a.querySelectorAll("[id]").forEach(function(e){e.removeAttribute("id")});var i=a.querySelector(".js-text-logo"),c=a.querySelector(".js-image-logo"),s=a.querySelector(".site-nav .container"),l=a.querySelector(".scrolled-down");if(l&&l.classList.remove("scrolled-down"),a.style.position="fixed",a.style.top="9999px",i&&(i.style.fontSize=o,i.style.transition=null),c&&(c.style.width=r,c.style.transition=null),s.style.padding=n,s.style.transition=null,b.body.appendChild(a),b.textLogo){var d=a.getBoundingClientRect().height;b.body.removeChild(a),t(d)}else p=function(){setTimeout(function(){var e=a.getBoundingClientRect().height;b.body.removeChild(a),t(e)},E)},(m=new Image).onload=p,m.onerror=p,m.src=b.imageLogo.src}(b.header,function(e){b.headerSpacer.style.height="".concat(e,"px"),Q()}):b.headerSpacer.style.height="".concat(b.header.getBoundingClientRect().height,"px")}function J(){if(0<(a.scrollY||a.pageYOffset)&&(b.header.classList.add(O.STICKY),b.headerSpacer.classList.add(O.STICKY),j=!0,a.removeEventListener("scroll",J),b.bar&&"top"===_)){var e=r(b.bar);b.header.style.transition=f(0),b.header.style.top="".concat(l(b.header)+(e-W),"px"),W=e}}var $,ee,te=($=function(e){if(0!==e.length){var t,o,n,r,a,i=e.reduce(function(e,t){return t.time>e.time?t:e},{time:-1/0}),c=i.isIntersecting,s=i.boundingClientRect,l=i.intersectionRect,d=l.height/s.height,u=S(c,d),g=b.firstRow&&b.secondRow,h=0<s.height?s.top:s.top-s.height;if(g){var m=b.firstRow.getBoundingClientRect().height,y=-1*m;t=S(c,Math.min(1,l.height/(s.height-m)))(w,A),o=Math.max(y,h),b.bar&&"top"===_&&(o=0<o?W:o+W),a=h<=y,n=T,r=x}else t=u(w,A),o=b.bar&&"top"===_?W:0,n=u(T,C),r=u(x,I);var p=function(e,t){var o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:300,n=3<arguments.length&&void 0!==arguments[3]?arguments[3]:.3,r=_slicedToArray([e,t].sort(function(e,t){return e-t}),2),a=r[0],i=r[1];return Math.min(1,(i-a)/o)*n}(D,o,300,.25),v=function(e,t){return Math.max(.07,.3*Math.abs(e-t))}(B,d);B=d,D=o;var L={text:r,image:n,padding:t};b.header.style.transition=f(p),b.header.style.top="".concat(o,"px"),b.header.classList.toggle(O.STICKY_NAV_SCROLLED_DOWN,h<0),g&&(b.secondRowLogo.classList.toggle("fade-in",a),b.secondRowLogo.classList.toggle("allow-pointer-events",a)),z(v,L),M||(M=!0,setTimeout(function(){requestAnimationFrame(function(){Z()})},p+20))}},function(){for(var e=this,t=arguments.length,o=new Array(t),n=0;n<t;n++)o[n]=arguments[n];ee&&a.cancelAnimationFrame(ee),ee=a.requestAnimationFrame(function(){$.apply(e,o)})});function oe(){if(b.secondRow){b.secondRowWidgets=b.secondRow.querySelectorAll(".widget");var e="font-size: ".concat(x,"em;"),t="width: ".concat(T,"px;");if(1<b.secondRowWidgets.length){var o=b.logoWidget.childNodes[0].cloneNode(!0);b.secondRowLogo=b.textLogo?o.querySelector(".js-text-logo"):o.querySelector(".js-image-logo"),b.secondRowLogoWidget=b.secondRowWidgets[0],b.secondRowLogo.style.cssText=b.textLogo?e:t,b.secondRowLogoWidget.innerHTML="",b.secondRowLogoWidget.appendChild(o)}else{var n=b.logoWidgetColumn.cloneNode(!0);b.secondRowLogoWidget=n.querySelector(".widget"),b.secondRowLogo=b.textLogo?n.querySelector(".js-text-logo"):n.querySelector(".js-image-logo");var r=b.secondRow.querySelector(".column");r.classList.remove(O.FULL_ROW),r.classList.add(O.HALF_ROW),n.classList.remove(O.HALF_ROW),n.classList.add(O.QUARTER_ROW),b.secondRowLogo.style.cssText=b.textLogo?e:t,b.secondRow.prepend(n)}a.headerNav&&b.secondRowLogoWidget.querySelector("a").addEventListener("click",a.headerNav.handleNavLinkClick)}Q()}function ne(e){e?oe():(L&&(L.unobserve(b.headerTrack),L.disconnect(),L=null),m&&(m.removeEventListener("load",p),m.removeEventListener("error",p)),y&&(y.removeEventListener("load",h),y.removeEventListener("error",h)),M=!(B=1))}function re(e){var t=e.matches;K(t),"sticky"===N&&ne(t)}!function(){H.addListener(re),b.closeSideNav.addEventListener("click",U),b.hamburger.addEventListener("click",F),b.sideNav.addEventListener("click",Y),b.sideNavShield.addEventListener("click",U);var e=k();e||(b.hamburger.classList.add(O.SHOW_NAV_TRIGGER),b.columnCta&&b.columnCta.classList.add(O.MOBILE_HIDE_COLUMN),b.columnSpacers.forEac
91h(function(e){return e.classList.add(O.MOBILE_HIDE_COLUMN)}),b.columnNav.classList.add(O.MOBILE_HIDE_COLUMN));for(var t=u.querySelectorAll(".js-mobile-subnav-trigger"),o=0;o<t.length;o+=1)t[o].addEventListener("click",G);K(e),"sticky"===N&&(a.addEventListener("resize",function(r){var a,i=1<arguments.length&&void 0!==arguments[1]?arguments[1]:100;return function(){for(var e=this,t=arguments.length,o=new Array(t),n=0;n<t;n++)o[n]=arguments[n];clearTimeout(a),a=setTimeout(function(){r.apply(e,o)},i)}}(Z,200)),a.addEventListener("message",X),a.addEventListener("scroll",J),b.bar||(b.bar=u.querySelector(".lp-bar__pusher")),e&&(b.textLogo?oe():(h=function(){setTimeout(function(){oe()},E)},(y=new Image).onload=h,y.onerror=h,y.src=b.imageLogo.src)))}()}(window,document); 92})(); 93</script>
93</div> 94 <div class="page-background"> 95 </div> 96 <style data-emotion-css="16l4s3y r2ag0e 119qg5r 2jofpk 10xsv1r 1x26rdx mi4w0s">.page-background{position:fixed;height:100vh;top:0;left:0;right:0;bottom:0;z-index:-1;background-color:rgb(0,0,40);}section{margin:0 auto;}.container{max-width:1140px;}@media (min-width:calc(1140px / 16)em){.widget{padding:calc(1140px / 100);}}h1{color:rgb(0,0,0);font-family:"Gilroy",sans-serif;font-weight:bold;font-style:normal;}h2{color:rgb(0,0,0);font-family:"Gilroy",sans-serif;font-weight:bold;font-style:normal;}h3{color:rgb(0,0,0);font-family:"Lato",sans-serif;font-weight:normal;font-style:normal;}p{color:rgb(0,0,0);font-family:"Montserrat",sans-serif;font-weight:normal;font-style:normal;}ul{color:rgb(0,0,0);font-family:"Montserrat",sans-serif;font-weight:normal;font-style:normal;}h1{font-size:5.5rem;}h2{font-size:1.75rem;}h3{font-size:1.125rem;}p{font-size:1rem;}ul{font-size:1rem;}.lp-list.lp-list--bullet.text-align-left li::before{left:0;}.lp-list.lp-list--bullet.text-align-left li{padding-left:20px;}.lp-list.lp-list--numbered.text-align-left li::before{left:-3px;}.lp-list.lp-list--numbered.text-align-left li{padding-left:20px;}.lp-list.lp-list--numbered.text-align-left li:nth-child(n + 10){padding-left:30px;}@media only screen and (max-width:480px){.lp-list.lp-list--numbered.text-align-left li:nth-child(n + 10){padding-left:25px;}}.lp-list.lp-list--icon.text-align-left li::before{left:-6px;}.lp-list.lp-list--checkmark.text-align-left li::before{left:-6px;}h1{padding-bottom:0em;}h2{padding-bottom:0em;}h3{padding-bottom:0em;}p{margin-bottom:0em;}p,.lp-list{margin-bottom:0em;}ul{margin-bottom:0em;}h1{line-height:1.25;}h2{line-height:1.125;}h3{line-height:1.125;}p{line-height:1.625;}ul{line-height:1.625;}@media (min-width:480px){h1{font-size:4.25rem;}}@media (min-width:768px){h1{font-size:5.5rem;}}@media (min-width:480px){h2{font-size:1.5rem;}}@media (min-width:768px){h2{font-size:1.75rem;}}@media (min-width:480px){h3{font-size:1rem;}}@media (min-width:768px){h3{font-size:1.125rem;}}@media (min-width:480px){p{font-size:0.875rem;}}@media (min-width:768px){p{font-size:1rem;}}@media (min-width:480px){ul{font-size:0.875rem;}}@media (min-width:768px){ul{font-size:1rem;}}.lp-alert,.lp-calendar-react .date,.lp-calendar-react .month,.lp-form-v2-input-react{font-family:"Montserrat",sans-serif;}.lp-form-v2-input-react{color:rgb(0,0,0);}form.is-disabled .error-prompt--disabled{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}form.is-disabled .form-field,form.is-disabled .lp-button-react,form.is-disabled .lp-product-summary-react{opacity:0.4;pointer-events:none;}form.is-invalid .error-prompt--invalid{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}form.has-info .error-prompt--info{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}</style><style data-emotion-css="1o3acgz">.css-1o3acgz{background-image:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,0)),url(undefined);}</style><div class="site css-1o3acgz"><div class="route" data-slug="contact" data-guid="ea3eeb3d-594c-ef0d-5345-b40c17a81024" data-page-title="CONTACT" data-description="MedaData facilitates expert research services with an unmatched real-world psychiatric dataset." data-keywords="psychiatric medications, real-world data, real-world evidence, real world data, prospective study, research services, behavioral health" data-robots=""><div class="page"><style data-emotion-css="jhnazd">.css-jhnazd{background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0);background-image:linear-gradient(rgba(0,0,40,1),rgba(0,0,40,1)),url("/api/library/gn0i4zk6obrji7bxh2yi8he1");background-size:cover;background-position:center center;background-repeat:no-repeat;}.css-jhnazd > .container{padding-top:3vw;padding-right:2vw;padding-bottom:0vw;padding-left:2vw;padding-top:3cqw;padding-right:2cqw;padding-bottom:0cqw;padding-left:2cqw;}.site-header .css-jhnazd > .container{padding-top:10px;padding-right:0;padding-bottom:10px;padding-left:0;-webkit-transition:padding 0.03s ease;transition:padding 0.03s ease;}.bar .css-jhnazd{padding:0 50px;}@media (max-width:23.75em){.bar .css-jhnazd{padding:0 25px;}}@media (min-width:71.25em){.css-jhnazd > .container{padding-top:34.2px;padding-right:22.8px;padding-bottom:0px;padding-left:22.8px;}}</style><section class="has-background-image has-background-size-cover section css-jhnazd" data-guid="06d80a7c-36b3-9ffa-92e1-101f9d47160b" data-background="/api/library/gn0i4zk6obrji7bxh2yi8he1"><div class="container" id="hero"><div class="layout flex flex--12" data-guid="530dc145-382e-8987-3895-f35e9f6cd1f5"><style data-emotion-css="i2ziv0">.css-i2ziv0{padding-top:0vw;padding-right:0vw;padding-bottom:0vw;padding-left:0vw;padding-top:0cqw;padding-right:0cqw;padding-bottom:0cqw;padding-left:0cqw;}@media(min-width:71.25em){.css-i2ziv0.column{padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.css-i2ziv0.column > .inner-column{padding-top:79.8px;padding-right:114px;padding-bottom:34.2px;padding-left:114px;}}</style><div class="column flex__item--md-12 flex__item--xs-12 css-i2ziv0" data-guid="3376778b-86f6-23b1-0fc2-506f5f911c59"><style data-emotion-css="de71n7">
96.css-de71n7{background-color:rgba(255,255,255,1);border-color:rgba(255,255,255,1);border-radius:0px;background-size:cover;background-position:center center;background-repeat:no-repeat;padding-top:7vw;padding-right:10vw;padding-bottom:3vw;padding-left:10vw;padding-top:7cqw;padding-right:10cqw;padding-bottom:3cqw;padding-left:10cqw;}.bar .css-de71n7{padding-top:0;padding-bottom:0;}</style><div class="inner-column css-de71n7"><style data-emotion-css="47r3vg">.section--center-widgets .css-47r3vg{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}@media (max-width:767px){.bar .css-47r3vg{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}</style><div class="row flex flex--12 css-47r3vg"><style data-emotion-css="8x0d4x">.section--center-widgets .css-8x0d4x{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto;max-width:100%;}</style><div class="composite flex__item--md-12 flex__item--xs-12 css-8x0d4x"><div class="inner-composite flex flex--12"><div class="widget-column flex__item--md-12 flex__item--xs-12"><div class="widget-row flex flex--12"><div class="flex__item--md-12 flex__item--xs-12"><div data-widget-id="7ab95289-be97-6509-7935-bf7348fc8d78" class="widget"><div class="lp-text-react lp-headline-react" data-widget-type="LpTextReact"><h1 class="lp-headline text-align-center font-scale-11 line-height-scale-4 gutter-bottom-1 headline">Weâd love to hear from you.</h1></div></div></div></div></div></div></div></div><div class="row flex flex--12 css-47r3vg"><div class="composite flex__item--md-12 flex__item--xs-12 css-8x0d4x"><div class="inner-composite flex flex--12"><div class="widget-column flex__item--md-12 flex__item--xs-12"><div class="widget-row flex flex--12"><div class="flex__item--md-12 flex__item--xs-12"><div data-widget-id="20876d79-fde9-6cfa-3db3-4b0bd97270cf" class="widget"><div class="lp-text-react lp-headline-react" data-widget-type="LpTextReact"><p class="text-align-left">Whether you have a question or want to get started right away, weâve got you. We may be busy, but weâll get back to you within 24 hours.</p></div></div></div></div></div></div></div></div></div></div></div></div></section><style data-emotion-css="9hbkbi">.css-9hbkbi{background-color:rgba(255,255,255,1);border-color:rgba(255,255,255,1);background-size:cover;background-position:center center;background-repeat:no-repeat;}.css-9hbkbi > .container{padding-top:5vw;padding-right:10vw;padding-bottom:6vw;padding-left:10vw;padding-top:5cqw;padding-right:10cqw;padding-bottom:6cqw;padding-left:10cqw;}.site-header .css-9hbkbi > .container{padding-top:20px;padding-right:0;padding-bottom:20px;padding-left:0;-webkit-transition:padding 0.03s ease;transition:padding 0.03s ease;}.bar .css-9hbkbi{padding:0 50px;}@media (max-width:23.75em){.bar .css-9hbkbi{padding:0 25px;}}@media (min-width:71.25em){.css-9hbkbi > .container{padding-top:57px;padding-right:114px;padding-bottom:68.4px;padding-left:114px;}}</style><section class="section css-9hbkbi" data-guid="6391cf75-a2b5-eb0a-7baa-eae1d8b7a216"><div class="container" id="image-text"><div class="layout flex flex--12" data-guid="7ac7c5e6-be36-73c7-2e0c-e992c3f36af8"><style data-emotion-css="vfaad">.css-vfaad{padding-top:0vw;padding-right:0vw;padding-bottom:0vw;padding-left:0vw;padding-top:0cqw;padding-right:0cqw;padding-bottom:0cqw;padding-left:0cqw;}@media(min-width:71.25em){.css-vfaad.column{padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.css-vfaad.column > .inner-column{padding-top:11.4px;padding-right:11.4px;padding-bottom:11.4px;padding-left:11.4px;}}</style><div class="column flex__item--md-2 flex__item--xs-12 css-vfaad" data-guid="be6e2fa4-db91-f7d2-709c-1ac11dbd0d75"><style data-emotion-css="eeduzr">.css-eeduzr{background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0);border-radius:0px;background-size:cover;background-position:center center;background-repeat:no-repeat;padding-top:1vw;padding-right:1vw;padding-bottom:1vw;padding-left:1vw;padding-top:1cqw;padding-right:1cqw;padding-bottom:1cqw;padding-left:1cqw;}.bar .css-eeduzr{padding-top:0;padding-bottom:0;}</style><div class="inner-column css-eeduzr"></div></div><div class="column flex__item--md-8 flex__item--xs-12 css-vfaad" data-guid="f69fc444-2738-9e69-a88f-0413aa318ff1"><div class="inner-column css-eeduzr"><div class="row flex flex--12 css-47r3vg"><div class="composite flex__item--md-12 flex__item--xs-12 css-8x0d4x"><div class="inner-composite flex flex--12"><div class="widget-column flex__item--md-12 flex__item--xs-12"><div class="widget-row flex flex--12"><div class="flex__item--md-12 flex__item--xs-12"><div data-widget-id="261572da-53b1-3f4c-23ab-0b0ac443c384" class="widget"><div class="lp-text-react lp-headline-react" data-widget-type="LpTextReact"><h1 class="lp-headline text-align-left font-scale-9 line-height-scale-3 gutter-bottom-1 headline">We just need a little info from you.</h1></div></div></div></div></div></div></div></div><div class="row flex flex--12 css-47r3vg"><div class="composite flex__item--md-12 flex__item--xs-12 css-8x0d4x"><div class="inner-composite flex flex--12"></div><div>
96<form name="medadata_jan_3_2023_11_28_28_a" data-persist-form-source-id="Gf5benkZZbHmqHkAVuzG6m" data-success-message="Thank you! Your submission has been received."><div class="widget-column flex__item--md-12 flex__item--xs-12"><div class="widget-row flex flex--12"><div class="flex__item--md-12 flex__item--xs-12"><div data-widget-id="e96c7448-259d-212f-306b-c4734ff96f2e" class="widget"><style data-emotion-css="1tzflw6">.css-1tzflw6 .confirm-existence{display:none;}.css-1tzflw6 .error-prompt{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:1px solid #4c515d;border-radius:3px;color:#4c515d;display:none;margin-bottom:12px;padding:18px;}.css-1tzflw6 .error-prompt .error-prompt__icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex:0 0 48px;-ms-flex:0 0 48px;flex:0 0 48px;}.css-1tzflw6 .error-prompt .error-prompt__icon .disabled-checkout{height:30px;width:48px;}.css-1tzflw6 .error-prompt .error-prompt__details{margin-left:12px;}.css-1tzflw6 .error-prompt .error-prompt__details .error-title{color:inherit;font-weight:700;}.css-1tzflw6 .error-prompt .error-prompt__details .error-description{color:inherit;}.css-1tzflw6 .error-prompt.error-prompt--invalid{color:#fa3246;border-color:#fa3246;background-color:#fee0e3;}.css-1tzflw6 .error-prompt.error-prompt--invalid .error-prompt__icon{-webkit-flex-basis:16px;-ms-flex-preferred-size:16px;flex-basis:16px;}.css-1tzflw6 .error-prompt.error-prompt--invalid .error-prompt__icon .error-line{width:16px;height:16px;}.css-1tzflw6 .error-prompt.error-prompt--invalid .error-prompt__icon .error-line path{fill:#fa3246;}.css-1tzflw6 .lp-form-react__input--billing{padding:0.4em 0.5em !important;background-color:white;}.css-1tzflw6 .form-field{margin-bottom:12px;}.css-1tzflw6 .form-field.last-visible{margin-bottom:0;}.css-1tzflw6 .form-field.input-hidden{display:none;}.css-1tzflw6 .lp-form-field .lp-form-field__field-block-title{font-weight:700;}.css-1tzflw6 .lp-form-react__group{width:100%;}.css-1tzflw6 .lp-form-react__group.is-success{-webkit-animation:animation-1dcx35r 1s;animation:animation-1dcx35r 1s;}.css-1tzflw6 .lp-form-react__group.js-required{margin-bottom:12px;}.css-1tzflw6 .lp-form-react__group.js-required .lp-form-react__input{border:1px solid #fa3246;box-shadow:#fa3246 0 0 1.5px 1px;}.css-1tzflw6 .lp-form-react__group.js-required .lp-form-react__error--required{opacity:1;height:auto;margin-top:6px;}.css-1tzflw6 .lp-form-react__group.js-invalid .lp-form-react__input{border:1px solid #fa3246;box-shadow:#fa3246 0 0 1.5px 1px;}.css-1tzflw6 .lp-form-react__group.js-invalid .lp-form-react__error--invalid{opacity:1;height:auto;margin-top:6px;}.css-1tzflw6 .lp-form-react__group.js-stripe-invalid .lp-form-react__input{border:1px solid #fa3246;box-shadow:#fa3246 0 0 1.5px 1px;}.css-1tzflw6 .lp-form-react__group.js-stripe-invalid .lp-form-react__error--stripe-invalid{opacity:1;height:auto;margin-top:6px;}.css-1tzflw6 .lp-form-react__label{-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;}.css-1tzflw6 .lp-form-react__input{display:block;width:100%;height:2em;margin:0;padding:0 0.5em;line-height:inherit;border-radius:3px;-webkit-transition:border-color 200ms ease;transition:border-color 200ms ease;}.css-1tzflw6 .lp-form-react__textarea{padding:0.5em;height:auto;resize:none;}.css-1tzflw6 .lp-form-react__error{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:baseline;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;width:100%;font-size:0.75em;text-align:left;color:#fa3246;font-weight:400;-webkit-text-decoration:none;text-decoration:none;font-style:normal;margin:0;height:0;opacity:0;overflow:hidden;-webkit-transition:all 200ms ease;transition:all 200ms ease;}.css-1tzflw6 .lp-form-react__error i{margin-right:6px;}.css-1tzflw6 .lp-form-react-radio-container,.css-1tzflw6 .lp-form-react-checkbox-container{line-height:1;margin-bottom:6px;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.css-1tzflw6 .lp-form-react-radio-container:first-of-type,.css-1tzflw6 .lp-form-react-checkbox-container:first-of-type{margin-top:6px;}.css-1tzflw6 .lp-form-react-radio-container:last-of-type,.css-1tzflw6 .lp-form-react-checkbox-container:last-of-type{margin-bottom:12px;}.css-1tzflw6 input[type='radio'].lp-form-react-radio{opacity:0;width:0;}.css-1tzflw6 input[type='radio'].lp-form-react-radio:focus + label:hover .lp-form-react-radio-button .lp-form-react-radio-button__checked{opacity:0.6;}.css-1tzflw6 input[type='radio'].lp-form-react-radio + label{cursor:pointer;}.css-1tzflw6 input[type='radio'].lp-form-react-radio + label .lp-form-react-radio-button{display:inline-block;position:relative;width:16px;height:16px;vertical-align:middle;margin:0 6px 0 0;cursor:pointer;}.css-1tzflw6 input[type='radio'].lp-form-react-radio + label .lp-form-react-radio-button .lp-form-react-radio-button__unchecked,.css-1tzflw6 input[type='radio'].lp-form-react-radio + label .lp-form-react-radio-button .lp-form-react-radio-button__checked{position:absolute;top:0;left:0;width:16px;height:16px;-webkit-transition:opacity 0.3s ease;transition:opacity 0.3s ease;}.css-1tzflw6 input[type='radio'].lp-form-react-radio + label .lp-form-react-radio-button .lp-form-react-radio-button__unchecked path,.css-1tzflw6 input[type='radio'].lp-form-react-radio + label .lp-form-react-radio-button .lp-form-react-radio-button__checked path{fill:#4c515d;}.css-1tzflw6 input[type='radio'].lp-form-react-radio + label .lp-form-react-radio-button .lp-form-react-radio-button__unchecked{z-index:1;opacity:1;}.css-1tzflw6 input[type='radio'].lp-form-react-radio + label .lp-form-react-radio-button .lp-form-react-radio-button__checked{z-index:0;opacity:0;}.css-1tzflw6 input[type='radio'].lp-form-react-radio + label:hover .lp-form-react-radio-button .lp-form-react-radio-button__checked{opacity:0.6;}.css-1tzflw6 input[type='radio'].lp-form-react-radio:checked + label .lp-form-react-radio-button .lp-form-react-radio-button__checked,.css-1tzflw6 input[type='radio'].lp-form-react-radio:checked + label:hover .lp-form-react-radio-button .lp-form-react-radio-button__checked{opacity:1;}.css-1tzflw6 input.lp-form-react-checkbox[type='checkbox']{display:none;}.css-1tzflw6 input.lp-form-react-checkbox[type='checkbox'] + label{cursor:pointer;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}.css-1tzflw6 input.lp-form-react-checkbox[type='checkbox'] + label:hover span svg,.css-1tzflw6 input.lp-form-react-checkbox[type='checkbox'] + label:focus span svg,.css-1tzflw6 input.lp-form-react-checkbox[type='checkbox'] + label:active span svg{opacity:1;}.css-1tzflw6 input.lp-form-react-checkbox[type='checkbox'] + label .checkbox{height:16px;margin:0;-webkit-transition:background-color 0.3s ease,border-color 0.3s ease;transition:background-color 0.3s ease,border-color 0.3s ease;}.css-1tzflw6 input.lp-form-react-checkbox[type='checkbox'] + label .checkbox .lp-form-react__checkbox-label-container{position:relative;width:20px;height:20px;}.css-1tzflw6 input.lp-form-react-checkbox[type='checkbox'] + label .checkbox .checkbox__unchecked,.css-1tzflw6 input.lp-form-react-checkbox[type='checkbox'] + label .checkbox .checkbox__checked{position:absolute;top:0;left:0;width:16px;height:16px;-webkit-transition:opacity 0.3s ease;transition:opacity 0.3s ease;}.css-1tzflw6 input.lp-form-react-checkbox[type='checkbox'] + label .checkbox .checkbox__unchecked path,.css-1tzflw6 input.lp-form-react-checkbox[type='checkbox'] + label .checkbox .checkbox__checked path{fill:#4c515d;}.css-1tzflw6 input.lp-form-react-checkbox[type='checkbox'] + label .checkbox .checkbox__unchecked{z-index:1;opacity:1;}.css-1tzflw6 input.lp-form-react-checkbox[type='checkbox'] + label .checkbox .checkbox__checked{z-index:0;opacity:0;}.css-1tzflw6 input.lp-form-react-checkbox[type='checkbox']:checked + label .checkbox .checkbox__checked,.css-1tzflw6 input.lp-form-react-checkbox[type='checkbox']:checked + label:hover .checkbox .checkbox__checked{opacity:1;}@media (hover:hover){.css-1tzflw6 input.lp-form-react-checkbox[type='checkbox'] + label:hover .checkbox .checkbox__checked{opacity:0.6;}}.css-1tzflw6 select.lp-form-react-select{height:2em;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;padding:0;background-color:#fff;}.css-1tzflw6 .flex-container{margin-left:-12px;margin-right:-12px;}.css-1tzflw6 .flex.flex-form [class*='flex__item--']{padding-left:12px;padding-right:12px;}.css-1tzflw6 .labels-are-inside input::-webkit-input-placeholder{font-size:1em;font-weight:inherit;opacity:1;}.css-1tzflw6 .labels-are-inside input::-moz-placeholder{font-size:1em;font-weight:inherit;opacity:1;}.css-1tzflw6 .labels-are-inside input:-ms-input-placeholder{font-size:1em;font-weight:inherit;opacity:1;}.css-1tzflw6 .labels-are-inside input::placeholder{font-size:1em;font-weight:inherit;opacity:1;}.css-1tzflw6 .labels-are-inside textarea::-webkit-input-placeholder{font-size:1em;font-weight:inherit;opacity:1;}.css-1tzflw6 .labels-are-inside textarea::-moz-placeholder{font-size:1em;font-weight:inherit;opacity:1;}.css-1tzflw6 .labels-are-inside textarea:-ms-input-placeholder{font-size:1em;font-weight:inherit;opacity:1;}.css-1tzflw6 .labels-are-inside textarea::placeholder{font-size:1em;font-weight:inherit;opacity:1;}
96.css-1tzflw6 .labels-are-inside .coupon-entered .apply-coupon-button{top:0.4em;}.css-1tzflw6 input.lp-form-react__input::-webkit-input-placeholder{font-size:1em;}.css-1tzflw6 input.lp-form-react__input::-moz-placeholder{font-size:1em;}.css-1tzflw6 input.lp-form-react__input:-ms-input-placeholder{font-size:1em;}.css-1tzflw6 input.lp-form-react__input::-webkit-input-placeholder{font-size:1em;}.css-1tzflw6 input.lp-form-react__input::-moz-placeholder{font-size:1em;}.css-1tzflw6 input.lp-form-react__input:-ms-input-placeholder{font-size:1em;}.css-1tzflw6 input.lp-form-react__input::placeholder{font-size:1em;}.css-1tzflw6 textarea.lp-form-react__textarea::-webkit-input-placeholder{font-size:1em;}.css-1tzflw6 textarea.lp-form-react__textarea::-moz-placeholder{font-size:1em;}.css-1tzflw6 textarea.lp-form-react__textarea:-ms-input-placeholder{font-size:1em;}.css-1tzflw6 textarea.lp-form-react__textarea::-webkit-input-placeholder{font-size:1em;}.css-1tzflw6 textarea.lp-form-react__textarea::-moz-placeholder{font-size:1em;}.css-1tzflw6 textarea.lp-form-react__textarea:-ms-input-placeholder{font-size:1em;}.css-1tzflw6 textarea.lp-form-react__textarea::placeholder{font-size:1em;}.css-1tzflw6 .lp-form-react__input{border:1px solid rgb(189,189,189);color:#020020;font-size:inherit;}.css-1tzflw6 .lp-form-react__input:focus{border:1px solid rgb(189,189,189);box-shadow:rgb(189,189,189) 0 0 1.5px 1px;outline:0;}.css-1tzflw6 .lp-form-react__input::-webkit-input-placeholder{color:#767676;opacity:1;}.css-1tzflw6 .lp-form-react__input::-moz-placeholder{color:#767676;opacity:1;}.css-1tzflw6 .lp-form-react__input:-ms-input-placeholder{color:#767676;opacity:1;}.css-1tzflw6 .lp-form-react__input::placeholder{color:#767676;opacity:1;}.css-1tzflw6 .StripeElement--focus{border:1px solid rgb(189,189,189);box-shadow:rgb(189,189,189) 0 0 1.5px 1px;outline:0;}.css-1tzflw6 .lp-form-react__label{color:rgba(76,81,93,1);font-family:"Montserrat",sans-serif;}.css-1tzflw6 .labels-are-inside .lp-form-react__input{color:#020020;}.css-1tzflw6 .labels-are-inside .lp-form-react__input::-webkit-input-placeholder{color:rgba(76,81,93,1);font-family:"Montserrat",sans-serif;}.css-1tzflw6 .labels-are-inside .lp-form-react__input::-moz-placeholder{color:rgba(76,81,93,1);font-family:"Montserrat",sans-serif;}.css-1tzflw6 .labels-are-inside .lp-form-react__input:-ms-input-placeholder{color:rgba(76,81,93,1);font-family:"Montserrat",sans-serif;}.css-1tzflw6 .labels-are-inside .lp-form-react__input::placeholder{color:rgba(76,81,93,1);font-family:"Montserrat",sans-serif;}.css-1tzflw6 .lp-form-react-radio{font-family:"Montserrat",sans-serif;}.css-1tzflw6 .lp-form-react-radio + label{color:rgb(189,189,189);font-family:"Montserrat",sans-serif;}.css-1tzflw6 .lp-form-react-radio + label .lp-form-react-radio-button__unchecked path,.css-1tzflw6 .lp-form-react-radio + label .lp-form-react-radio-button__checked path{fill:rgb(189,189,189);}.css-1tzflw6 .lp-form-field__field-block-title{font-family:"Montserrat",sans-serif;color:rgba(76,81,93,1);}.css-1tzflw6 select.lp-form-react-select{border:1px solid rgb(189,189,189);font-family:"Montserrat",sans-serif;}.css-1tzflw6 select.lp-form-react-select:focus{outline-color:rgb(189,189,189);}.css-1tzflw6 .lp-form-react__select-option{font-family:"Montserrat",sans-serif;}.css-1tzflw6 input.lp-form-react-checkbox[type='checkbox'] + label{color:rgba(76,81,93,1);font-family:"Montserrat",sans-serif;}.css-1tzflw6 input.lp-form-react-checkbox[type='checkbox'] + label .checkbox__unchecked path,.css-1tzflw6 input.lp-form-react-checkbox[type='checkbox'] + label .checkbox__checked path{fill:rgb(189,189,189);}.css-1tzflw6 .lp-form-react__description{color:rgba(76,81,93,1);font-family:"Montserrat",sans-serif;font-size:0.875rem;}.css-1tzflw6 .lp-form-react__privacy-link{color:rgba(76,81,93,1);-webkit-text-decoration:underline;text-decoration:underline;padding:10px 0;}.css-1tzflw6 .lp-form-react__privacy-link a{color:inherit;}.css-1tzflw6 .lp-form-react__confirm label,.css-1tzflw6 .lp-form-react__order-bump-checkbox label{font-size:0.875rem;}</style>
96<div class="lp-form-react w-e96c7448-259d-212f-306b-c4734ff96f2e css-1tzflw6" data-widget-type="LpInputReact"><div class="error-prompt error-prompt--disabled"><div class="error-prompt__icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 30" class="disabled-checkout"><path style="fill:#656A78" d="M36.8 1h-30c-1.7 0-3 1.3-3 3v20c0 1.7 1.3 3 3 3h24.8c-0.1-0.1-0.1-0.1-0.2-0.2 -0.6-0.6-1-1.2-1.4-1.8H6.8c-0.5 0-1-0.5-1-1V12h32v2.1c0.7 0.1 1.4 0.3 2 0.6V4C39.8 2.3 38.5 1 36.8 1zM37.8 6h-32V4c0-0.5 0.5-1 1-1h30c0.5 0 1 0.5 1 1V6z"></path><path style="fill:#FA5A6A" d="M36.7 14c2.1 0 3.8 0.7 5.3 2.2s2.2 3.2 2.2 5.3 -0.7 3.8-2.2 5.3S38.8 29 36.7 29s-3.8-0.7-5.3-2.2c-1.5-1.5-2.2-3.2-2.2-5.3s0.7-3.8 2.2-5.3C32.9 14.7 34.6 14 36.7 14zM37.4 22.2v-4.5h-1.5v4.5H37.4zM37.4 25.3v-1.5h-1.5v1.5H37.4z"></path></svg></div><div class="error-prompt__details"><p class="error-title"></p><p class="error-description"></p></div></div><div class="error-prompt error-prompt--invalid"><div class="error-prompt__icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" class="error-line"><g data-name="Layer 2"><g data-name="Layer 1"><path d="M50 10a39.9 39.9 0 0 1 15.3 2.9 40.1 40.1 0 0 1 12.9 8.8 40.1 40.1 0 0 1 8.8 12.9A39.7 39.7 0 0 1 90 50a39.9 39.9 0 0 1-2.9 15.3 40.2 40.2 0 0 1-8.8 12.9 40.3 40.3 0 0 1-13 8.8A39.6 39.6 0 0 1 50 90a39.9 39.9 0 0 1-15.3-2.9 39.8 39.8 0 0 1-12.9-8.8 40.4 40.4 0 0 1-8.8-12.9A39.6 39.6 0 0 1 10 50a40 40 0 0 1 2.9-15.3 39.8 39.8 0 0 1 8.8-12.9 40.1 40.1 0 0 1 12.9-8.8A39.8 39.8 0 0 1 50 10ZM50 0A48.4 48.4 0 0 0 14.7 14.7 48.4 48.4 0 0 0 0 50 48.4 48.4 0 0 0 14.7 85.3 48.3 48.3 0 0 0 50 100 48.4 48.4 0 0 0 85.3 85.3 48.3 48.3 0 0 0 100 50 48.4 48.4 0 0 0 85.3 14.7 48.3 48.3 0 0 0 50 0h0Z"></path><path d="M55 55V24.8H45V55Zm0 20.3V65.1H45V75.3Z"></path></g></g></svg></div><div class="error-prompt__details"><p class="error-description"></p></div></div><div class="error-prompt error-prompt--info"><div class="error-prompt__icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 30" class="disabled-checkout"><path style="fill:#656A78" d="M36.8 1h-30c-1.7 0-3 1.3-3 3v20c0 1.7 1.3 3 3 3h24.8c-0.1-0.1-0.1-0.1-0.2-0.2 -0.6-0.6-1-1.2-1.4-1.8H6.8c-0.5 0-1-0.5-1-1V12h32v2.1c0.7 0.1 1.4 0.3 2 0.6V4C39.8 2.3 38.5 1 36.8 1zM37.8 6h-32V4c0-0.5 0.5-1 1-1h30c0.5 0 1 0.5 1 1V6z"></path><path style="fill:#FA5A6A" d="M36.7 14c2.1 0 3.8 0.7 5.3 2.2s2.2 3.2 2.2 5.3 -0.7 3.8-2.2 5.3S38.8 29 36.7 29s-3.8-0.7-5.3-2.2c-1.5-1.5-2.2-3.2-2.2-5.3s0.7-3.8 2.2-5.3C32.9 14.7 34.6 14 36.7 14zM37.4 22.2v-4.5h-1.5v4.5H37.4zM37.4 25.3v-1.5h-1.5v1.5H37.4z"></path></svg></div><div class="error-prompt__details"><p class="error-title"></p><p class="error-description"></p></div></div><div data-input-container="true" class="form-field font-scale-4"><div class="lp-form-react__group js-form-group" id="input-73b32524fba3dbeda8637d768f79a52a-Gf5benkZZbHmqHkAVuzG6m"><label for="73b32524fba3dbeda8637d768f79a52a-Gf5benkZZbHmqHkAVuzG6m" class="lp-form-react__label"><span>First Name</span><input type="text" autocomplete="given-name" class="lp-form-react__input js-input-mapping " id="73b32524fba3dbeda8637d768f79a52a-Gf5benkZZbHmqHkAVuzG6m" style="font-family:"Montserrat", sans-serif" data-url="" maxlength="500" placeholder="First Name" name="first_name" value=""></label><label for="73b32524fba3dbeda8637d768f79a52a-Gf5benkZZbHmqHkAVuzG6m" class="lp-form-react__error lp-form-react__error--required"><i class="fas fa-exclamation-circle"></i><span>Please enter your First Name</span></label><label for="73b32524fba3dbeda8637d768f79a52a-Gf5benkZZbHmqHkAVuzG6m" class="lp-form-react__error lp-form-react__error--invalid"><i class="fas fa-exclamation-circle"></i><span>Please enter a valid First Name</span></label></div></div><div data-input-container="true" class="form-field font-scale-4"><div class="lp-form-react__group js-form-group" id="input-e6a1c359f6aaa31e03dbb5ccf164cf8d-Gf5benkZZbHmqHkAVuzG6m"><label for="e6a1c359f6aaa31e03dbb5ccf164cf8d-Gf5benkZZbHmqHkAVuzG6m" class="lp-form-react__label"><span>Last Name</span><input type="text" autocomplete="family-name" class="lp-form-react__input js-input-mapping " id="e6a1c359f6aaa31e03dbb5ccf164cf8d-Gf5benkZZbHmqHkAVuzG6m" style="font-family:"Montserrat", sans-serif" data-url="" maxlength="500" placeholder="Last Name" name="last_name" value=""></label><label for="e6a1c359f6aaa31e03dbb5ccf164cf8d-Gf5benkZZbHmqHkAVuzG6m" class="lp-form-react__error lp-form-react__error--required"><i class="fas fa-exclamation-circle"></i><span>Please enter your Last Name</span></label><label for="e6a1c359f6aaa31e03dbb5ccf164cf8d-Gf5benkZZbHmqHkAVuzG6m" class="lp-form-react__error lp-form-react__error--invalid"><i class="fas fa-exclamation-circle"></i><span>Please enter a valid Last Name</span></label></div></div><div data-input-container="true" class="form-field font-scale-4"><div class="lp-form-react__group js-form-group" id="input-5d358d4e97fedc91eb4d7c8eecf372a8-Gf5benkZZbHmqHkAVuzG6m"><label for="5d358d4e97fedc91eb4d7c8eecf372a8-Gf5benkZZbHmqHkAVuzG6m" class="lp-form-react__label"><span>Email</span><input type="email" autocomplete="email" class="lp-form-react__input js-input-mapping " id="5d358d4e97fedc91eb4d7c8eecf372a8-Gf5benkZZbHmqHkAVuzG6m" style="font-family:"Montserrat", sans-serif" data-url="" maxlength="500" placeholder="Email address" name="email" required="" value=""></label><label for="5d358d4e97fedc91eb4d7c8eecf372a8-Gf5benkZZbHmqHkAVuzG6m" class="lp-form-react__error lp-form-react__error--required"><i class="fas fa-exclamation-circle"></i><span>Please enter your Email</span></label><label for="5d358d4e97fedc91eb4d7c8eecf372a8-Gf5benkZZbHmqHkAVuzG6m" class="lp-form-react__error lp-form-react__error--invalid"><i class="fas fa-exclamation-circle"></i><span>Please enter a valid Email</span></label></div></div><div data-input-container="true" class="form-field font-scale-4 last-visible"><div class="lp-form-react__group js-form-group" id="input-0096f36417320b5436955662a452de24-Gf5benkZZbHmqHkAVuzG6m"><label for="0096f36417320b5436955662a452de24-Gf5benkZZbHmqHkAVuzG6m" class="lp-form-react__label"><span>Comment</span><textarea class="lp-form-react__input lp-form-react__textarea js-input-mapping" id="0096f36417320b5436955662a452de24-Gf5benkZZbHmqHkAVuzG6m" style="font-family:"Montserrat", sans-serif" data-url="" rows="4" placeholder="Comment" name="comment"></textarea></label><label for="" class="lp-form-react__error lp-form-react__error--required"><i class="fas fa-exclamation-circle"></i><span>Please enter your Comment</span></label></div></div><div class="confirm-existence"><label class="confirm-existence__label" for="confirm-existence">If you are human, leave this blank.<input type="text" class="confirm-existence__input" name="confirm-existence"></label></div></div></div></div></div><div class="widget-row flex flex--12"><div class="flex__item--md-12 flex__item--xs-12"><div data-widget-id="1c1362ab-089e-4352-1d39-532ac0159faa" class="widget"><style data-emotion-css="y13kug">.css-y13kug{position:relative;z-index:0;text-align:center;}</style><div class="lp-button-react-wrapper css-y13kug" data-widget-type="LpButtonReact"><style data-emotion-css="2kalac">.css-2kalac{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;
96-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;border-style:solid;border-width:1px;text-align:center;font-family:'Lato',sans-serif;text-shadow:none;-webkit-transition:color 0.2s linear,background 0.2s linear,border-color 0.2s linear, text-shadow 0.2s linear;transition:color 0.2s linear,background 0.2s linear,border-color 0.2s linear, text-shadow 0.2s linear;-webkit-text-decoration:none;text-decoration:none;position:relative;width:100%;font-weight:bold;min-height:36px;min-width:72px;padding:8px 18px;font-family:"Roboto",sans-serif;border-radius:10000px;}.css-2kalac.is-loading,.css-2kalac.is-loading:hover,.css-2kalac.is-loading:active,.css-2kalac.is-loading:focus,.css-2kalac.is-success,.css-2kalac.is-success:hover,.css-2kalac.is-success:active,.css-2kalac.is-success:focus{color:transparent;text-shadow:none;}.css-2kalac.is-loading .lp-button-loading,.css-2kalac.is-success .lp-button-success{display:block;}.css-2kalac.is-loading:hover .lp-button-loading svg{stroke:rgba(255,255,255,1);}.css-2kalac.is-success:hover .lp-button-success svg{fill:rgba(255,255,255,1);}.css-2kalac .lp-button-loading{-webkit-animation:animation-circular-rotate 1.4s linear infinite;animation:animation-circular-rotate 1.4s linear infinite;display:none;position:absolute;width:24px;height:24px;top:50%;left:50%;margin-left:-12px;margin-top:-12px;}.css-2kalac .lp-button-loading svg{stroke:rgba(255,255,255,1);display:block;}.css-2kalac .lp-button-loading svg circle{-webkit-animation:animation-circular-progress 1.4s ease-in-out infinite;animation:animation-circular-progress 1.4s ease-in-out infinite;stroke-dasharray:80px,200px;stroke-dashoffset:0px;-webkit-transform-origin:0px 0px;-ms-transform-origin:0px 0px;transform-origin:0px 0px;}.css-2kalac .lp-button-success{display:none;position:absolute;width:24px;height:24px;top:50%;left:50%;margin-left:-12px;margin-top:-12px;}.css-2kalac .lp-button-success svg{stroke:none;fill:rgba(255,255,255,1);display:block;}.css-2kalac::before{border-radius:10000px;}.css-2kalac,.css-2kalac:focus,.css-2kalac:active{border-color:rgb(12,10,74);background:rgb(12,10,74);color:rgba(255,255,255,1);}.css-2kalac:hover{background-color:rgb(4,3,23);border-color:rgb(4,3,23);color:rgba(255,255,255,1);}</style><button type="submit" class="lp-button-react w-1c1362ab-089e-4352-1d39-532ac0159faa lp-button-react--full is-bold lp-button-react--small lp-button-react--flat lp-btn-flat font-scale-4 line-height-scale-3 css-2kalac" formtarget="_top">SUBMIT 97<div class="lp-button-loading"> 98 <svg viewBox="22 22 44 44" aria-hidden="true"> 99 <circle cx="44" cy="44" r="20.2" fill="none" stroke-width="3.6"></circle> 100 </svg> 101</div> 102<div class="lp-button-success"> 103 <svg viewBox="0 0 24 24" aria-hidden="true"> 104 <path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"></path> 105 </svg> 106</div> 107</button></div></div></div></div></div></form><div class="form-errors"></div></div></div></div></div></div><div class="column flex__item--md-2 flex__item--xs-12 css-vfaad" data-guid="f296f258-30b4-ea2f-9c05-c9adda8c81cc"><div class="inner-column css-eeduzr"></div></div></div></div></section><style data-emotion-css="1wslggt">.css-1wslggt{background-color:rgba(255,255,255,1);border-color:rgba(255,255,255,1);background-size:cover;background-position:center center;background-repeat:no-repeat;}.css-1wslggt > .container{padding-top:0vw;padding-right:1vw;padding-bottom:6vw;padding-left:1vw;padding-top:0cqw;padding-right:1cqw;padding-bottom:6cqw;padding-left:1cqw;}.site-header .css-1wslggt > .container{padding-top:-5px;padding-right:0;padding-bottom:-5px;padding-left:0;-webkit-transition:padding 0.03s ease;transition:padding 0.03s ease;}.bar .css-1wslggt{padding:0 50px;}@media (max-width:23.75em){.bar .css-1wslggt{padding:0 25px;}}@media (min-width:71.25em){.css-1wslggt > .container{padding-top:0px;padding-right:11.4px;padding-bottom:68.4px;padding-left:11.4px;}}</style><section class="section css-1wslggt" data-guid="f3daf65f-2785-bc8a-1f64-15e1c4e5d12a"><div class="container" id="next"><div class="layout flex flex--12" data-guid="b765f8ff-8937-b9e8-5dad-d1b7b3d1fbbd"><style data-emotion-css="1m43sgt">.css-1m43sgt{padding-top:0vw;padding-right:0vw;padding-bottom:0vw;padding-left:0vw;padding-top:0cqw;padding-right:0cqw;padding-bottom:0cqw;padding-left:0cqw;}@media(min-width:71.25em){.css-1m43sgt.column{padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.css-1m43sgt.column > .inner-column{padding-top:68.4px;padding-right:114px;padding-bottom:68.4px;padding-left:114px;}}</style><div class="column flex__item--md-12 flex__item--xs-12 css-1m43sgt" data-guid="578cffa1-23b5-e8b5-f44f-eabc537eb622"><style data-emotion-css="dukh25">.css-dukh25{background-color:rgba(244,244,244,1);border-color:rgba(244,244,244,1);border-radius:0px;background-size:cover;background-position:center center;background-repeat:no-repeat;padding-top:6vw;padding-right:10vw;padding-bottom:6vw;padding-left:10vw;padding-top:6cqw;padding-right:10cqw;padding-bottom:6cqw;padding-left:10cqw;}.bar .css-dukh25{padding-top:0;padding-bottom:0;}</style><div class="inner-column css-dukh25"><div class="row flex flex--12 css-47r3vg"><div class="composite flex__item--md-12 flex__item--xs-12 css-8x0d4x"><div class="inner-composite flex flex--12"><div class="widget-column flex__item--md-12 flex__item--xs-12"><div class="widget-row flex flex--12"><div class="flex__item--md-12 flex__item--xs-12"><div data-widget-id="b1c4748c-30eb-1eca-d641-10d5914c3e3d" class="widget">
107<style data-emotion-css="1yltisf">.css-1yltisf{text-align:center;}</style><div class="css-1yltisf"><div><style data-emotion-css="1ud3fu4">.css-1ud3fu4{display:inline-block;vertical-align:middle;max-width:57px;}@media (max-width:530px){.site-header .composite .widget .css-1ud3fu4{max-width:calc(100% - 80px);}}</style><img class="lp-image-react w-b1c4748c-30eb-1eca-d641-10d5914c3e3d css-1ud3fu4" src="/api/library/ff6h513ypy0jppswnlxk9jsd" data-image-upload-source="" alt="" style="width:100%"></div></div></div></div></div></div></div></div></div><div class="row flex flex--12 css-47r3vg"><div class="composite flex__item--md-12 flex__item--xs-12 css-8x0d4x"><div class="inner-composite flex flex--12"><div class="widget-column flex__item--md-12 flex__item--xs-12"><div class="widget-row flex flex--12"><div class="flex__item--md-12 flex__item--xs-12"><div data-widget-id="5bc2512e-4966-41e5-de35-576c3f7a41d2" class="widget"><div class="lp-text-react lp-headline-react" data-widget-type="LpTextReact"><h2 class="lp-headline text-align-center subhead">Donât just take it from us.</h2></div></div></div></div></div></div></div></div><div class="row flex flex--12 css-47r3vg"><div class="composite flex__item--md-12 flex__item--xs-12 css-8x0d4x"><div class="inner-composite flex flex--12"><div class="widget-column flex__item--md-12 flex__item--xs-12"><div class="widget-row flex flex--12"><div class="flex__item--md-12 flex__item--xs-12"><div data-widget-id="dbed73f8-5f4b-dbae-8ff4-3099b8b60977" class="widget"><div class="lp-text-react lp-headline-react" data-widget-type="LpTextReact"><p class="text-align-center font-scale-5 line-height-scale-8 gutter-bottom-1">Check out some research from our team.</p></div></div></div></div></div></div></div></div><div class="row flex flex--12 css-47r3vg"><div class="composite flex__item--md-12 flex__item--xs-12 css-8x0d4x"><div class="inner-composite flex flex--12"><div class="widget-column flex__item--md-12 flex__item--xs-12"><div class="widget-row flex flex--12"><div class="flex__item--md-12 flex__item--xs-12"><div data-widget-id="cfba5b11-f512-d7fb-f6a1-213e652c7eca" class="widget"><style data-emotion-css="piwg9t">.css-piwg9t{position:relative;z-index:0;text-align:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}</style><div class="lp-button-react-wrapper css-piwg9t" data-widget-type="LpButtonReact"><style data-emotion-css="ronf9c">.css-ronf9c{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;border-style:solid;border-width:1px;text-align:center;font-family:'Lato',sans-serif;text-shadow:none;-webkit-transition:color 0.2s linear,background 0.2s linear,border-color 0.2s linear, text-shadow 0.2s linear;transition:color 0.2s linear,background 0.2s linear,border-color 0.2s linear, text-shadow 0.2s linear;-webkit-text-decoration:none;text-decoration:none;position:relative;font-weight:bold;min-height:36px;min-width:72px;padding:8px 18px;background:transparent;font-family:"Montserrat",sans-serif;border-radius:10000px;}.css-ronf9c::before{border-radius:10000px;}.css-ronf9c,.css-ronf9c:focus,.css-ronf9c:active{border-color:rgb(17,209,219);color:rgb(17,209,219);}.css-ronf9c:hover{background-color:rgb(17,209,219);color:rgb(0,0,0);}</style><a data-widget-link="true" href="https://www.rcbm.net/behavioral-medicine/publications/" target="_top" data-link-type="external" class="lp-button-react w-cfba5b11-f512-d7fb-f6a1-213e652c7eca is-bold lp-button-react--small lp-button-react--line font-scale-3 line-height-scale-3 css-ronf9c" contenteditable="false">VIEW RESEARCH</a></div></div></div></div></div></div></div></div></div></div></div></div></section><style data-emotion-css="y5jwta">.css-y5jwta{background-color:rgba(255,1,66,1);border-color:rgba(255,1,66,1);background-image:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,0)),url("/api/library/itl9beglicem2ujptt3583j7");background-size:cover;background-position:center center;background-repeat:no-repeat;min-height:90vh;}.css-y5jwta > .container{padding-top:1vw;padding-right:1vw;padding-bottom:1vw;padding-left:1vw;padding-top:1cqw;padding-right:1cqw;padding-bottom:1cqw;padding-left:1cqw;}.site-header .css-y5jwta > .container{padding-top:0px;padding-right:0;padding-bottom:0px;padding-left:0;-webkit-transition:padding 0.03s ease;transition:padding 0.03s ease;}.bar .css-y5jwta{padding:0 50px;}@media (max-width:23.75em){.bar .css-y5jwta{padding:0 25px;}}@media (min-width:71.25em){.css-y5jwta > .container{padding-top:11.4px;padding-right:11.4px;padding-bottom:11.4px;padding-left:11.4px;}}</style><section class="flex-display flex-direction-column flex-justify-center has-background-image has-background-size-cover section css-y5jwta" data-guid="9c06339c-8feb-7c2f-bc81-d69595d5c092" data-background="/api/library/itl9beglicem2ujptt3583j7"><div class="container" id="pre-footer"><div class="layout flex flex--12" data-guid="f713cdd2-a204-c2c6-2cc6-1c4c32d68934"><div class="column flex__item--md-12 flex__item--xs-12 css-vfaad" data-guid="3bf7a45c-2f0b-af69-886d-e92f1b87ab14"><div class="inner-column css-eeduzr"><div class="row flex flex--12 css-47r3vg"><div class="composite flex__item--md-12 flex__item--xs-12 css-8x0d4x"><div class="inner-composite flex flex--12"><div class="widget-column flex__item--md-12 flex__item--xs-12"><div class="widget-row flex flex--12"><div class="flex__item--md-12 flex__item--xs-12"><div data-widget-id="c7db772d-79f4-e5df-4855-4ac3fa89377f" class="widget"><div class="css-1yltisf"><div><style data-emotion-css="spfjl0">.css-spfjl0{display:inline-block;vertical-align:middle;max-width:325px;}@media (max-width:530px){.site-header .composite .widget .css-spfjl0{max-width:calc(100% - 80px);}}</style><img class="lp-image-react w-c7db772d-79f4-e5df-4855-4ac3fa89377f css-spfjl0" src="/api/library/jba8j1110pobjxggzfl7jk12" data-image-upload-source="" alt="" style="width:100%"></div></div></div></div></div></div></div></div></div><div class="row flex flex--12 css-47r3vg"><div class="composite flex__item--md-12 flex__item--xs-12 css-8x0d4x"><div class="inner-composite flex flex--12"><div class="widget-column flex__item--md-12 flex__item--xs-12"><div class="widget-row flex flex--12"><div class="flex__item--md-12 flex__item--xs-12"><div data-widget-id="23ee011d-5e2e-1ba1-b69f-dab9bdbfbbda" class="widget"><div class="lp-text-react lp-headline-react" data-widget-type="LpTextReact"><h1 class="lp-headline text-align-center font-scale-13 line-height-scale-3 gutter-bottom-1 headline"><span style="color: rgb(255, 249, 246);">
107Letâs work together.</span></h1></div></div></div></div></div></div></div></div><div class="row flex flex--12 css-47r3vg"><div class="composite flex__item--md-6 flex__item--xs-12 css-8x0d4x"><div class="inner-composite flex flex--6"><div class="widget-column flex__item--md-12 flex__item--xs-12"><div class="widget-row flex flex--12"><div class="flex__item--md-12 flex__item--xs-12"><div data-widget-id="c86bcf91-5e8c-3f2e-52f3-b72733eaacb3" class="widget"><style data-emotion-css="1klih5i">.css-1klih5i{height:6px;}@media (min-width:48em){.css-1klih5i{height:48px;}}</style><div class="lp-space-react w-c86bcf91-5e8c-3f2e-52f3-b72733eaacb3 css-1klih5i" data-widget-type="LpSpaceReact"></div></div></div></div></div></div></div><div class="composite flex__item--md-6 flex__item--xs-12 css-8x0d4x"><div class="inner-composite flex flex--6"><div class="widget-column flex__item--md-12 flex__item--xs-12"><div class="widget-row flex flex--12"><div class="flex__item--md-12 flex__item--xs-12"><div data-widget-id="f811a443-b23c-9c97-fb2f-712afc6adf93" class="widget"><div class="lp-space-react w-f811a443-b23c-9c97-fb2f-712afc6adf93 css-1klih5i" data-widget-type="LpSpaceReact"></div></div></div></div></div></div></div></div></div></div></div><div class="layout flex flex--12" data-guid="01686f31-1463-f6e7-a18a-b85b35681c62"><div class="column flex__item--md-12 flex__item--xs-12 css-vfaad" data-guid="2cc893d2-bec4-f839-54a3-9d3a221f5fd1"><div class="inner-column css-eeduzr"><div class="row flex flex--12 css-47r3vg"><div class="composite flex__item--md-12 flex__item--xs-12 css-8x0d4x"><div class="inner-composite flex flex--12"><div class="widget-column flex__item--md-12 flex__item--xs-12"><div class="widget-row flex flex--12"><div class="flex__item--md-12 flex__item--xs-12"><div data-widget-id="e974b337-3544-d4b2-9a54-ea772ed308d3" class="widget"><div class="lp-space-react w-e974b337-3544-d4b2-9a54-ea772ed308d3 css-1klih5i" data-widget-type="LpSpaceReact"></div></div></div></div></div></div></div></div></div></div></div></div></section><div class="site-footer" data-persist-part-id="apxw2xi0j3r0ruuw2sslotfh" data-persist-part-kind="footer"><style data-emotion-css="1c2c5tq">.css-1c2c5tq{background-color:rgba(0,0,40,1);border-color:rgba(0,0,40,1);background-size:cover;background-position:center center;background-repeat:no-repeat;}.css-1c2c5tq > .container{padding-top:1vw;padding-right:1vw;padding-bottom:1vw;padding-left:1vw;padding-top:1cqw;padding-right:1cqw;padding-bottom:1cqw;padding-left:1cqw;}.site-header .css-1c2c5tq > .container{padding-top:0px;padding-right:0;padding-bottom:0px;padding-left:0;-webkit-transition:padding 0.03s ease;transition:padding 0.03s ease;}.bar .css-1c2c5tq{padding:0 50px;}@media (max-width:23.75em){.bar .css-1c2c5tq{padding:0 25px;}}@media (min-width:71.25em){.css-1c2c5tq > .container{padding-top:11.4px;padding-right:11.4px;padding-bottom:11.4px;padding-left:11.4px;}}</style><section class="section css-1c2c5tq" data-guid="349c532b-2f13-d978-5171-4b35b55195bb"><div class="container" id="site-footer"><div class="layout flex flex--12" data-guid="aad8b62e-1d0a-e63d-afbe-086e9e3c6338"><div class="column flex__item--md-12 flex__item--xs-12 css-vfaad" data-guid="ecf20179-d41e-a7a8-1f27-323fbe640175"><div class="inner-column css-eeduzr"><div class="row flex flex--12 css-47r3vg"><div class="composite flex__item--md-12 flex__item--xs-12 css-8x0d4x"><div class="inner-composite flex flex--12"><div class="widget-column flex__item--md-12 flex__item--xs-12"><div class="widget-row flex flex--12"><div class="flex__item--md-12 flex__item--xs-12"><div data-widget-id="ef0be4dc-d8b6-63cb-86f5-eb6a7dab0c08" class="widget"><div class="lp-text-react lp-headline-react" data-widget-type="LpTextReact"><p class="text-align-center"><span style="color: rgb(255, 255, 255);">© 2022 All Rights Reserved </span></p></div></div></div></div></div></div></div></div></div></div></div></div></section></div></div></div></div> 108
108<script src="https://embed.lpcontent.net/leadboxes/current/embed.js" async="" defer=""></script>
108 109 110 111
112<script type="text/javascript" data-scriptname="TAILOR">(function(){var exports={};var module={exports: exports};"use strict";function initFunc(){console.assert(window.sup&&window.sup.Tailor,"tailor successfully loaded")}Object.defineProperty(exports,"__esModule",{value:!0}),function(t){function e(t,s){if(!t||!t.parentElement)return null;if(t.parentElement)var i=t.parentElement.querySelectorAll(s);if(i&&1===Array.prototype.filter.call(i,function(e){return e===t}).length)return t;return e(t.parentElement,s)}function s(t){var e;for(e in this.rules=[],this.readQueue=[],this.writeQueue=[],this.opts={parentSelector:"[data-widget-id]"},t)this.opts[e]=t[e]}function i(t){return parseInt(t,10)}function r(t,e){return function(s){return t(s)?e:""}}function n(t,e,s){return s=Math.round(s),(!t||s>=t)&&(!e||s<=e)}s.prototype.register=function(t){if(t&&this.isValid(t.el)){for(var e in t.classFunctions=this.parseBreakPoints(t.breakPoints),t.classNames=[],t.breakPoints)t.classNames.push(t.breakPoints[e]);this.rules.push(t),this.triggerReCalcClassNames()}},s.prototype.isValid=function(t){return!!(t&&e(t,this.opts.parentSelector))},s.prototype.parseBreakPoints=function(t){var e,s=[];for(var a in t){var o=t[a];switch(a.charAt(0)){case"<":e=n.bind(this,null,parseInt(a.slice(1),10));break;case">":e=n.bind(this,parseInt(a.slice(1),10),null);break;default:var u=a.split("-").map(i);e=n.bind(this,u[0],u[1])}s.push(r(e,o))}return s},s.prototype.triggerReCalcClassNames=function(){this.timeout&&clearTimeout(this.timeout),this.timeout=setTimeout(this.reCalcClassNames.bind(this),150)},s.prototype.stillValid=function(t){return!!this.isValid(t.el)||(this.remove(t),!1)},s.prototype.makeTasks=function(s){var i={},r=[];return i.el=s.el,i.add=s.classFunctions.reduce(function(s,n){var a,o=e(i.el,this.opts.parentSelector);a=function(e){var s=t.getComputedStyle(e,null),i=s.getPropertyValue("padding-left"),r=s.getPropertyValue("padding-right");return parseFloat(i)+parseFloat(r)}(o);var u=n(o.offsetWidth-a<t.innerWidth?o.offsetWidth-a:t.innerWidth);return u&&(r.push(u),i.el.classList.contains(u)||s.push(u)),s}.bind(this),[]),i.remove=s.classNames.filter(function(t){return-1===r.indexOf(t)&&i.el.classList.contains(t)},this),i},s.prototype.reCalcClassNames=function(){this.readQueue=this.rules.slice(0),this.writeQueue=this.readQueue.filter(this.stillValid,this).map(this.makeTasks,this),this.writeClassNames()},s.prototype.writeClassNames=function(){for(;this.writeQueue.length;){var t=this.writeQueue.pop();t.add.forEach(function(e){t.el.classList.add(e)}),t.remove.forEach(function(e){t.el.classList.remove(e)})}},s.prototype.remove=function(t){this.rules=this.rules.filter(function(e){return e!==t})},t.sup=t.sup||{},t.sup.Tailor=s,t.sup.tailor=new s,t.addEventListener("resize",t.sup.tailor.triggerReCalcClassNames.bind(t.sup.tailor))}(window),exports.default=initFunc;;var i=module.exports.default||module.exports;return typeof i==="function"?i.apply(null, arguments):void 0;}());</script>
vendor: 1 bytes, line 112
112
113<script type="text/javascript" data-scriptname="MAPPER">(function(){var exports={};var module={exports: exports};"use strict";function unwrapExports(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function createCommonjsModule(e,r){return e(r={exports:{}},r.exports),r.exports}Object.defineProperty(exports,"__esModule",{value:!0});var _typeof_1=createCommonjsModule(function(e){function r(t){return e.exports=r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,r(t)}e.exports=r,e.exports.__esModule=!0,e.exports.default=e.exports});unwrapExports(_typeof_1);var toPrimitive_1=createCommonjsModule(function(e){var r=_typeof_1.default;e.exports=function(e,t){if("object"!=r(e)||!e)return e;var o=e[Symbol.toPrimitive];if(void 0!==o){var n=o.call(e,t||"default");if("object"!=r(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)},e.exports.__esModule=!0,e.exports.default=e.exports});unwrapExports(toPrimitive_1);var toPropertyKey_1=createCommonjsModule(function(e){var r=_typeof_1.default;e.exports=function(e){var t=toPrimitive_1(e,"string");return"symbol"==r(t)?t:t+""},e.exports.__esModule=!0,e.exports.default=e.exports});unwrapExports(toPropertyKey_1);var defineProperty=createCommonjsModule(function(e){e.exports=function(e,r,t){return(r=toPropertyKey_1(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e},e.exports.__esModule=!0,e.exports.default=e.exports}),_defineProperty=unwrapExports(defineProperty),arrayWithHoles=createCommonjsModule(function(e){e.exports=function(e){if(Array.isArray(e))return e},e.exports.__esModule=!0,e.exports.default=e.exports});unwrapExports(arrayWithHoles);var iterableToArrayLimit=createCommonjsModule(function(e){e.exports=function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var o,n,u,i,a=[],s=!0,p=!1;try{if(u=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;s=!1}else for(;!(s=(o=u.call(t)).done)&&(a.push(o.value),a.length!==r);s=!0);}catch(e){p=!0,n=e}finally{try{if(!s&&null!=t.return&&(i=t.return(),Object(i)!==i))return}finally{if(p)throw n}}return a}},e.exports.__esModule=!0,e.exports.default=e.exports});unwrapExports(iterableToArrayLimit);var arrayLikeToArray=createCommonjsModule(function(e){e.exports=function(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,o=Array(r);t<r;t++)o[t]=e[t];return o},e.exports.__esModule=!0,e.exports.default=e.exports});unwrapExports(arrayLikeToArray);var unsupportedIterableToArray=createCommonjsModule(function(e){e.exports=function(e,r){if(e){if("string"==typeof e)return arrayLikeToArray(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?arrayLikeToArray(e,r):void 0}},e.exports.__esModule=!0,e.exports.default=e.exports});unwrapExports(unsupportedIterableToArray);var nonIterableRest=createCommonjsModule(function(e){e.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.__esModule=!0,e.exports.default=e.exports});unwrapExports(nonIterableRest);var slicedToArray=createCommonjsModule(function(e){e.exports=function(e,r){return arrayWithHoles(e)||iterableToArrayLimit(e,r)||unsupportedIterableToArray(e,r)||nonIterableRest()},e.exports.__esModule=!0,e.exports.default=e.exports}),_slicedToArray=unwrapExports(slicedToArray);function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};
113r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})}return e}function getLocationSearch(){return window.location.search||""}function getQueryString(){return getLocationSearch().replace("?","")}function serializeQueryString(e){return Object.keys(e).map(function(r){return"".concat(encodeURIComponent(r),"=").concat(encodeURIComponent(e[r]))}).join("&")}function deserializeQueryString(e){return e.split("&").reduce(function(e,r){var t=e,o=r.split("="),n=_slicedToArray(o,2),u=n[0],i=void 0===u?"":u,a=n[1],s=void 0===a?"":a;return""!==i&&""!==s&&(t[decodeURIComponent(i)]=decodeURIComponent(s)),t},{})}function getQueryValue(e){return deserializeQueryString(getQueryString())[e]}function appendToQuery(e,r){return serializeQueryString(_objectSpread(_objectSpread({},deserializeQueryString(e)),r))}function addQueriesToUrl(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(0===Object.keys(r).length)return e;var t=e.split("?"),o=_slicedToArray(t,2),n=o[0],u=o[1],i=void 0===u?"":u;if(!i)return[n].concat(serializeQueryString(r)).join("?");var a=i.split("#"),s=_slicedToArray(a,2),p=s[0],c=s[1],l=void 0===c?"":c;return p=appendToQuery(p,r),l&&(p="".concat(p,"#").concat(l)),"".concat(n,"?").concat(p)}function module$1(){window.sup||(window.sup={}),window.sup.widgetTypes||(window.sup.widgetTypes={}),window.sup.widgets||(window.sup.widgets=[]),window.sup.register=function(e,r){window.sup.widgetTypes[e]=r,window.sup.scan(e)},window.sup.scan=function(e){var r=window.sup.widgetTypes[e];if(r&&"function"==typeof r){var t=document.querySelectorAll('[data-widget-type="'.concat(e,'"]'));Array.prototype.forEach.call(t,function(e){window.sup.widgets.push(r(e))})}};var e=getQueryValue("customerToken");if(e){var r=document.querySelectorAll("[data-widget-link]");Array.prototype.forEach.call(r,function(r){r.href=addQueriesToUrl(r.href,{customerToken:e})})}}exports.default=module$1;;var i=module.exports.default||module.exports;return typeof i==="function"?i.apply(null, arguments):void 0;}());</script>
vendor: 1 bytes, line 113
113
114<script type="text/javascript" data-scriptname="IFRAME">(function(){var exports={};var module={exports: exports};"use strict";function initFunc(){if(window.FB||/(marketplace\/template|suppress_hero=true)/.test(window.location.href)){var e=document.querySelectorAll(".section");Array.prototype.slice.call(e).forEach(function(e){var t=e;if(t.style.minHeight&&-1!==t.style.minHeight.indexOf("vh")){var i=10*parseInt(t.style.minHeight,10);t.style.minHeight="".concat(i,"px")}})}}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=initFunc;;var i=module.exports.default||module.exports;return typeof i==="function"?i.apply(null, arguments):void 0;}());</script>
vendor: 1 bytes, line 114
114
115<script type="text/javascript" data-scriptname="INTERSECTION_OBSERVER">(function(){var exports={};var module={exports: exports};"use strict";function initFunc(){}Object.defineProperty(exports,"__esModule",{value:!0}),function(t,e){function n(t){this.time=t.time,this.target=t.target,this.rootBounds=t.rootBounds,this.boundingClientRect=t.boundingClientRect,this.intersectionRect=t.intersectionRect||{top:0,bottom:0,left:0,right:0,width:0,height:0},this.isIntersecting=!!t.intersectionRect;var e=this.boundingClientRect,n=e.width*e.height,o=this.intersectionRect,i=o.width*o.height;this.intersectionRatio=n?Number((i/n).toFixed(4)):this.isIntersecting?1:0}function o(t,e){var n,o,i,r=e||{};if("function"!=typeof t)throw new Error("callback must be a function");if(r.root&&1!=r.root.nodeType)throw new Error("root must be an Element");this._checkForIntersections=(n=this._checkForIntersections.bind(this),o=this.THROTTLE_TIMEOUT,i=null,function(){i||(i=setTimeout(function(){n(),i=null},o))}),this._callback=t,this._observationTargets=[],this._queuedEntries=[],this._rootMarginValues=this._parseRootMargin(r.rootMargin),this.thresholds=this._initThresholds(r.threshold),this.root=r.root||null,this.rootMargin=this._rootMarginValues.map(function(t){return t.value+t.unit}).join(" ")}function i(t,e,n,o){"function"==typeof t.addEventListener?t.addEventListener(e,n,o||!1):"function"==typeof t.attachEvent&&t.attachEvent("on"+e,n)}function r(t,e,n,o){"function"==typeof t.removeEventListener?t.removeEventListener(e,n,o||!1):"function"==typeof t.detatchEvent&&t.detatchEvent("on"+e,n)}function s(t){var e;try{e=t.getBoundingClientRect()}catch(t){}return e?(e.width&&e.height||(e={top:e.top,right:e.right,bottom:e.bottom,left:e.left,width:e.right-e.left,height:e.bottom-e.top}),e):{top:0,bottom:0,left:0,right:0,width:0,height:0}}function h(t,e){for(var n=e;n;){if(n==t)return!0;n=c(n)}return!1}function c(t){var e=t.parentNode;return e&&11==e.nodeType&&e.host?e.host:e&&e.assignedSlot?e.assignedSlot.parentNode:e}"IntersectionObserver"in t&&"IntersectionObserverEntry"in t&&"intersectionRatio"in t.IntersectionObserverEntry.prototype?"isIntersecting"in t.IntersectionObserverEntry.prototype||Object.defineProperty(t.IntersectionObserverEntry.prototype,"isIntersecting",{get:function(){return this.intersectionRatio>0}}):(o.prototype.THROTTLE_TIMEOUT=100,o.prototype.POLL_INTERVAL=null,o.prototype.USE_MUTATION_OBSERVER=!0,o.prototype.observe=function(t){if(!this._observationTargets.some(function(e){return e.element==t})){if(!t||1!=t.nodeType)throw new Error("target must be an Element");this._registerInstance(),this._observationTargets.push({element:t,entry:null}),this._monitorIntersections(),this._checkForIntersections()}},o.prototype.unobserve=function(t){this._observationTargets=this._observationTargets.filter(function(e){return e.element!=t}),this._observationTargets.length||(this._unmonitorIntersections(),this._unregisterInstance())},o.prototype.disconnect=function(){this._observationTargets=[],this._unmonitorIntersections(),this._unregisterInstance()},o.prototype.takeRecords=function(){var t=this._queuedEntries.slice();return this._queuedEntries=[],t},o.prototype._initThresholds=function(t){var e=t||[0];return Array.isArray(e)||(e=[e]),e.sort().filter(function(t,e,n){if("number"!=typeof t||isNaN(t)||t<0||t>1)throw new Error("threshold must be a number between 0 and 1 inclusively");return t!==n[e-1]})},o.prototype._parseRootMargin=function(t){var e=(t||"0px").split(/\s+/).map(function(t){var e=/^(-?\d*\.?\d+)(px|%)$/.exec(t);if(!e)throw new Error("rootMargin must be specified in pixels or percent");return{value:parseFloat(e[1]),unit:e[2]}});return e[1]=e[1]||e[0],e[2]=e[2]||e[0],e[3]=e[3]||e[1],e},o.prototype._monitorIntersections=function(){this._monitoringIntersections||(this._monitoringIntersections=!0,this.POLL_INTERVAL?this._monitoringInterval=setInterval(this._checkForIntersections,this.POLL_INTERVAL):(i(t,"resize",this._checkForIntersections,!0),i(e,"scroll",this._checkForIntersections,!0),this.USE_MUTATION_OBSERVER&&"MutationObserver"in t&&(this._domObserver=new MutationObserver(this._checkForIntersections),this._domObserver.observe(e,{attributes:!0,childList:!0,characterData:!0,subtree:!0}))))},o.prototype._unmonitorIntersections=function(){this._monitoringIntersections&&(this._monitoringIntersections=!1,clearInterval(this._monitoringInterval),this._monitoringInterval=null,r(t,"resize",this._checkForIntersections,!0),r(e,"scroll",this._checkForIntersections,!0),this._domObserver&&(this._domObserver.disconnect(),this._domObserver=null))},o.prototype._checkForIntersections=function(){var e=this._rootIsInDom(),o=e?this._getRootRect():{top:0,bottom:0,left:0,right:0,width:0,height:0};
115this._observationTargets.forEach(function(i){var r=i.element,h=s(r),c=this._rootContainsTarget(r),u=i.entry,a=e&&c&&this._computeTargetAndRootIntersection(r,o),l=i.entry=new n({time:t.performance&&performance.now&&performance.now(),target:r,boundingClientRect:h,rootBounds:o,intersectionRect:a});u?e&&c?this._hasCrossedThreshold(u,l)&&this._queuedEntries.push(l):u&&u.isIntersecting&&this._queuedEntries.push(l):this._queuedEntries.push(l)},this),this._queuedEntries.length&&this._callback(this.takeRecords(),this)},o.prototype._computeTargetAndRootIntersection=function(n,o){if("none"!=t.getComputedStyle(n).display){for(var i,r,h,u,a,l,p,d,g=s(n),f=c(n),_=!1;!_;){var v=null,m=1==f.nodeType?t.getComputedStyle(f):{};if("none"==m.display)return;if(f==this.root||f==e?(_=!0,v=o):f!=e.body&&f!=e.documentElement&&"visible"!=m.overflow&&(v=s(f)),v&&(i=v,r=g,h=void 0,u=void 0,a=void 0,l=void 0,p=void 0,d=void 0,h=Math.max(i.top,r.top),u=Math.min(i.bottom,r.bottom),a=Math.max(i.left,r.left),l=Math.min(i.right,r.right),d=u-h,!(g=(p=l-a)>=0&&d>=0&&{top:h,bottom:u,left:a,right:l,width:p,height:d})))break;f=c(f)}return g}},o.prototype._getRootRect=function(){var t;if(this.root)t=s(this.root);else{var n=e.documentElement,o=e.body;t={top:0,left:0,right:n.clientWidth||o.clientWidth,width:n.clientWidth||o.clientWidth,bottom:n.clientHeight||o.clientHeight,height:n.clientHeight||o.clientHeight}}return this._expandRectByRootMargin(t)},o.prototype._expandRectByRootMargin=function(t){var e=this._rootMarginValues.map(function(e,n){return"px"==e.unit?e.value:e.value*(n%2?t.width:t.height)/100}),n={top:t.top-e[0],right:t.right+e[1],bottom:t.bottom+e[2],left:t.left-e[3]};return n.width=n.right-n.left,n.height=n.bottom-n.top,n},o.prototype._hasCrossedThreshold=function(t,e){var n=t&&t.isIntersecting?t.intersectionRatio||0:-1,o=e.isIntersecting?e.intersectionRatio||0:-1;if(n!==o)for(var i=0;i<this.thresholds.length;i++){var r=this.thresholds[i];if(r==n||r==o||r<n!=r<o)return!0}},o.prototype._rootIsInDom=function(){return!this.root||h(e,this.root)},o.prototype._rootContainsTarget=function(t){return h(this.root||e,t)},o.prototype._registerInstance=function(){},o.prototype._unregisterInstance=function(){},t.IntersectionObserver=o,t.IntersectionObserverEntry=n)}(window,document),exports.default=initFunc;;var i=module.exports.default||module.exports;return typeof i==="function"?i.apply(null, arguments):void 0;}());</script>
115 116
117<script type="text/javascript" data-scriptname="CONVERSION_CLICK">(function(){var exports={};var module={exports: exports};"use strict";function setup(){var e=document.querySelector('meta[name="leadpages-meta-id"]').content,t=document.querySelector('meta[name="active-route"]'),n=document.querySelectorAll("a[data-widget-link][data-conversion-click]");Array.prototype.forEach.call(n,function(n){var o="external"===n.dataset.linkType&&"_top"===n.target;n.addEventListener("click",function(c){if(window.center&&window.center.loaded){var a=t&&t.content?{customId:"site-".concat(e,":").concat(t.content)}:{};(o=o&&!n.getAttribute("data-standalone-leadbox"))&&(c.preventDefault(),a.callback=function(){window.top.location.href=n.href});try{window.center("get","identity",function(){return window.center("send","conversion",null,null,null,a)})}catch(e){o&&(window.top.location.href=n.href)}}})})}function initFunc(){"complete"===document.readyState?setup():window.addEventListener("DOMContentLoaded",setup)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=initFunc,exports.setup=setup;;var i=module.exports.default||module.exports;return typeof i==="function"?i.apply(null, arguments):void 0;}());</script>
vendor: 1 bytes, line 117
117
118<script type="text/javascript" data-scriptname="POWERED_BY">(function(){var exports={};var module={exports: exports};"use strict";function addPoweredBy(){var e='\n <div id="powered-by-container" class="powered-by__container">\n <div class="powered-by__sub_container">\n <div class="powered-by__top_container">\n <svg height="24" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg" style="margin-right:6px">\n <g clip-path="url(#paint0_angular_26_506_clip_path)"><g transform="matrix(-0.00960912 0.00960912 -0.0100269 -0.0100269 19.0863 8.76573)"><foreignObject x="-1608.46" y="-1608.46" width="3216.92" height="3216.92"><div xmlns="http://www.w3.org/1999/xhtml" style="background:conic-gradient(from 90deg,rgba(255, 255, 255, 1) 0deg,rgba(255, 255, 255, 0.8) 216deg,rgba(255, 255, 255, 0) 360deg);height:100%;width:100%;opacity:1"></div></foreignObject></g></g><path fill-rule="evenodd" clip-rule="evenodd" d="M11.8138 0.000976562C10.0343 0.000976562 8.5918 1.44349 8.5918 3.22293V8.59277H19.3317V19.3326H11.8138C10.0343 19.3326 8.5918 17.8901 8.5918 16.1107V16.1108C8.5918 17.8902 10.0343 19.3327 11.8137 19.3327H24.7016C26.481 19.3327 27.9236 17.8902 27.9236 16.1108V0.000976562H11.8138Z"/>\n <g clip-path="url(#paint1_angular_26_506_clip_path)"><g transform="matrix(0.00960912 -0.00960912 0.0100269 0.0100269 10.4945 17.3575)"><foreignObject x="-1608.46" y="-1608.46" width="3216.92" height="3216.92"><div xmlns="http://www.w3.org/1999/xhtml" style="background:conic-gradient(from 90deg,rgba(255, 255, 255, 1) 0deg,rgba(255, 255, 255, 0.9) 144deg,rgba(255, 255, 255, 0.8) 216deg,rgba(255, 255, 255, 0) 360deg);height:100%;width:100%;opacity:1"></div></foreignObject></g></g><path fill-rule="evenodd" clip-rule="evenodd" d="M3.22 8.59277C1.44164 8.59277 0 10.0344 0 11.8128V24.7026C0 26.482 1.44251 27.9245 3.22195 27.9245H16.1118C17.8901 27.9245 19.3318 26.4829 19.3318 24.7045V8.59277H19.3317V19.3326H11.8138C10.0344 19.3326 8.59186 17.8901 8.59186 16.1107V8.59277H3.22Z"/>\n <defs><clipPath id="paint0_angular_26_506_clip_path"><path fill-rule="evenodd" clip-rule="evenodd" d="M11.8138 0.000976562C10.0343 0.000976562 8.5918 1.44349 8.5918 3.22293V8.59277H19.3317V19.3326H11.8138C10.0343 19.3326 8.5918 17.8901 8.5918 16.1107V16.1108C8.5918 17.8902 10.0343 19.3327 11.8137 19.3327H24.7016C26.481 19.3327 27.9236 17.8902 27.9236 16.1108V0.000976562H11.8138Z"/></clipPath><clipPath id="paint1_angular_26_506_clip_path"><path fill-rule="evenodd" clip-rule="evenodd" d="M3.22 8.59277C1.44164 8.59277 0 10.0344 0 11.8128V24.7026C0 26.482 1.44251 27.9245 3.22195 27.9245H16.1118C17.8901 27.9245 19.3318 26.4829 19.3318 24.7045V8.59277H19.3317V19.3326H11.8138C10.0344 19.3326 8.59186 17.8901 8.59186 16.1107V8.59277H3.22Z"/></clipPath></defs>\n </svg>\n <div class="powered-by__top_text">\n Powered by Leadpages\n </div>\n </div>\n <div class="powered-by__bottom_container">\n <div class="powered-by__bottom_header">Turn Clicks into Customers</div>\n <div class="powered-by__bottom_body">Create your own code-free websites, landing pages, and conversion tools with a free, 14-day trial.</div>\n <div class="powered-by__bottom_link"><a href="https://lp.leadpages.com/powered-by-leadpages/?utm_source=Leadpages&utm_medium=customerpages&utm_campaign=powered_by" target="_blank">Get Started â</a></div>\n </div>\n </div>\n </div>\n ',n='\n <link\n rel="preload"\n href="https://classic-assets.leadpages.com/static-leadpages-net/fonts/opensans/OpenSans-Regular.woff2"\n as="font"\n type="font/woff2"\n crossorigin\n />\n <link\n rel="preload"\n href="https://classic-assets.leadpages.com/static-leadpages-net/fonts/opensans/OpenSans-Bold.woff2"\n as="font"\n type="font/woff2"\n crossorigin\n />\n <link\n href="https://classic-assets.leadpages.com/static-leadpages-net/fonts/opensans_typeset.css"\n rel="stylesheet"\n type="text/css"\n />\n <style id="powered-by-style">\n .powered-by__container {\n position: relative;\n min-height: 36px;\n background-color: #000;\n transition: all 1s ease-in;\n }\n .powered-by__sub_container {\n justify-content: flex-start;\n flex-direction: column;\n position: absolute;\n transition: top .2s ease-in;\n background-color: #000;\n overflow: hidden;\n top: 0px;\n left: 0px;\n right: 0px;\n bottom: 0px;\n }\n .powered-by__container:hover .powered-by__sub_container {\n top: -142px;\n }\n .powered-by__container:hover .powered-by__top_container {\n min-height: 66px;\n }\n .powered-by__bottom_container {\n flex-direction: column;\n text-align: center;\n }\n .powered-by__top_container,\n .powered-by__bottom_container,\n .powered-by__bottom_top_bar,\n .powered-by__container {\n display: flex;\n width: 100%;\n justify-content: center;\n align-items: center;\n font-family: "Open Sans", "Segoe UI", Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 12px;\n color: #FFF;\n }\n .powered-by__bottom_top_bar {\n padding-bottom: 24px;\n }\n .powered-by__top_container {\n transition: all .1s ease-in .1s;\n min-height: 36px;\n }\n .powered-by__top_text {\n cursor: default;\n }\n .powered-by__bottom_header {\n flex-direction: column;\n text-align: center;\n margin-bottom: 8px;\n font-weight: 700;\n }\n .powered-by__bottom_body {\n flex-direction: column;\n text-align: center;\n line-height: 18px;\n letter-spacing: 0;\n width: 350px;\n margin-bottom: 18px;\n }\n .powered-by__bottom_link a {\n font-weight: 700;\n font-size: 16px;\n color: #FFF;\n text-decoration: none;\n }\n </style>\n ',t=document.getElementById("powered-by-style");t?t.outerHTML=n:document.head.insertAdjacentHTML("beforeend",n);var o=document.getElementById("powered-by-container");
118o?o.outerHTML=e:document.body.insertAdjacentHTML("beforeend",e)}function setup(){var e=!!document.cookie.split("; ").find(function(e){return"lpPoweredBy=1"===e});if(!1===e)try{e="1"===new URLSearchParams(window.location.search).get("lpPoweredBy")}catch(e){}!0===e&&addPoweredBy()}function init(){"complete"===document.readyState?setup():window.addEventListener("DOMContentLoaded",setup)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=init;;var i=module.exports.default||module.exports;return typeof i==="function"?i.apply(null, arguments):void 0;}());</script>
vendor: 1 bytes, line 118
118
119<script type="text/javascript" data-scriptname="REDUCE_MOTION">(function(){var exports={};var module={exports: exports};"use strict";function toggleThumbnail(e){document.querySelectorAll("iframe").forEach(function(t){var n=t.getAttribute("src");if(n){var o=t.parentElement.querySelector('[data-qa-selector="background-video-thumbnail"]'),c=function(e,t){e&&(e.style.display=t)},a=function(e){t.setAttribute("src","".concat(e,"&cb=").concat((new Date).getTime()))};n.includes("youtube.com")&&o?(c(o,e?"block":"none"),c(t,e?"none":"block")):n.includes("wistia.net")?a(n.replace(/autoPlay=(true|false)/,"autoPlay=".concat(!e))):n.includes("vimeo.com")&&a(n.replace("autoplay=".concat(e?1:0),"autoplay=".concat(e?0:1)))}})}function handleMotionPreference(){toggleThumbnail(window.matchMedia("(prefers-reduced-motion: reduce)").matches)}"undefined"!=typeof window&&(document.addEventListener("DOMContentLoaded",handleMotionPreference),window.matchMedia("(prefers-reduced-motion: reduce)").addEventListener("change",handleMotionPreference));;var i=module.exports.default||module.exports;return typeof i==="function"?i.apply(null, arguments):void 0;}());</script>
vendor: 1 bytes, line 119
119
vendor: 4,203 bytes, line 120
120<script type="text/javascript" data-scriptname="SMOOTHSCROLL">"use strict";function _typeof(o){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o})(o)}!function(n,f){if(!("scrollBehavior"in f.documentElement.style&&!0!==n.__forceSmoothScrollPolyfill__)){var o,t=n.HTMLElement||n.Element,i=468,p={scroll:n.scroll||n.scrollTo,scrollBy:n.scrollBy,elementScroll:t.prototype.scroll||d,scrollIntoView:t.prototype.scrollIntoView},a=n.performance&&n.performance.now?n.performance.now.bind(n.performance):Date.now,l=(o=n.navigator.userAgent,new RegExp(["MSIE ","Trident/","Edge/"].join("|")).test(o)?1:0);n.scroll=n.scrollTo=function(){void 0!==arguments[0]&&(!0!==e(arguments[0])?s.call(n,f.body,void 0!==arguments[0].left?~~arguments[0].left:n.scrollX||n.pageXOffset,void 0!==arguments[0].top?~~arguments[0].top:n.scrollY||n.pageYOffset):p.scroll.call(n,void 0!==arguments[0].left?arguments[0].left:"object"!==_typeof(arguments[0])?arguments[0]:n.scrollX||n.pageXOffset,void 0!==arguments[0].top?arguments[0].top:void 0!==arguments[1]?arguments[1]:n.scrollY||n.pageYOffset))},n.scrollBy=function(){void 0!==arguments[0]&&(e(arguments[0])?p.scrollBy.call(n,void 0!==arguments[0].left?arguments[0].left:"object"!==_typeof(arguments[0])?arguments[0]:0,void 0!==arguments[0].top?arguments[0].top:void 0!==arguments[1]?arguments[1]:0):s.call(n,f.body,~~arguments[0].left+(n.scrollX||n.pageXOffset),~~arguments[0].top+(n.scrollY||n.pageYOffset)))},t.prototype.scroll=t.prototype.scrollTo=function(){if(void 0!==arguments[0])if(!0!==e(arguments[0])){var o=arguments[0].left,t=arguments[0].top;s.call(this,this,void 0===o?this.scrollLeft:~~o,void 0===t?this.scrollTop:~~t)}else{if("number"==typeof arguments[0]&&void 0===arguments[1])throw new SyntaxError("Value could not be converted");p.elementScroll.call(this,void 0!==arguments[0].left?~~arguments[0].left:"object"!==_typeof(arguments[0])?~~arguments[0]:this.scrollLeft,void 0!==arguments[0].top?~~arguments[0].top:void 0!==arguments[1]?~~arguments[1]:this.scrollTop)}},t.prototype.scrollBy=function(){void 0!==arguments[0]&&(!0!==e(arguments[0])?this.scroll({left:~~arguments[0].left+this.scrollLeft,top:~~arguments[0].top+this.scrollTop,behavior:arguments[0].behavior}):p.elementScroll.call(this,void 0!==arguments[0].left?~~arguments[0].left+this.scrollLeft:~~arguments[0]+this.scrollLeft,void 0!==arguments[0].top?~~arguments[0].top+this.scrollTop:~~arguments[1]+this.scrollTop))},t.prototype.scrollIntoView=function(){if(!0!==e(arguments[0])){var o=function(o){for(var t,l,e;!1==((o=o.parentNode)===f.body)&&!1===(l=r(t=o,"Y")&&c(t,"Y"),e=r(t,"X")&&c(t,"X"),l||e););return o}(this),t=o.getBoundingClientRect(),l=this.getBoundingClientRect();o!==f.body?(s.call(this,o,o.scrollLeft+l.left-t.left,o.scrollTop+l.top-t.top),"fixed"!==n.getComputedStyle(o).position&&n.scrollBy({left:t.left,top:t.top,behavior:"smooth"})):n.scrollBy({left:l.left,top:l.top,behavior:"smooth"})}else p.scrollIntoView.call(this,void 0===arguments[0]||arguments[0])}}function d(o,t){this.scrollLeft=o,this.scrollTop=t}function e(o){if(null===o||"object"!==_typeof(o)||void 0===o.behavior||"auto"===o.behavior||"instant"===o.behavior)return!0;if("object"===_typeof(o)&&"smooth"===o.behavior)return!1;throw new TypeError("behavior member of ScrollOptions "+o.behavior+" is not a valid value for enumeration ScrollBehavior.")}function r(o,t){return"Y"===t?o.clientHeight+l<o.scrollHeight:"X"===t?o.clientWidth+l<o.scrollWidth:void 0}function c(o,t){var l=n.getComputedStyle(o,null)["overflow"+t];return"auto"===l||"scroll"===l}function y(o){var t,l,e,r=(a()-o.startTime)/i;t=function(o){return.5*(1-Math.cos(Math.PI*o))}(r=1<r?1:r),l=o.startX+(o.x-o.startX)*t,e=o.startY+(o.y-o.startY)*t,o.method.call(o.scrollable,l,e),l===o.x&&e===o.y||n.requestAnimationFrame(y.bind(n,o))}function s(o,t,l){var e,r,i,c,s=a();c=o===f.body?(r=(e=n).scrollX||n.pageXOffset,i=n.scrollY||n.pageYOffset,p.scroll):(r=(e=o).scrollLeft,i=o.scrollTop,d),y({scrollable:e,method:c,startTime:s,startX:r,startY:i,x:t,y:l})}}(window,document);</script>
vendor: 1 bytes, line 120
120
121<script type="text/javascript" data-scriptname="CUSTOMEVENT">"use strict";!function(){if("function"==typeof window.CustomEvent)return;function t(t,e){e=e||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent("CustomEvent");return n.initCustomEvent(t,e.bubbles,e.cancelable,e.detail),n}t.prototype=window.Event.prototype,window.CustomEvent=t}();</script>
vendor: 1 bytes, line 121
121
122<script type="text/javascript" data-scriptname="forEach">"use strict";window.NodeList&&!NodeList.prototype.forEach&&(NodeList.prototype.forEach=Array.prototype.forEach);</script>
vendor: 1 bytes, line 122
122
123<script type="text/javascript" data-scriptname="siteCommon">"use strict";var LPSite=window.LPSite||{};function navigateToRoute(e){if("NAVIGATE_TO_ROUTE"===e.data.type){var t=e.data.url;if(window.headerNav&&window.headerNav.router&&window.headerNav.showPage){var n=""===t||!!document.querySelector("[data-home-slug=".concat(t,"]"))?window.headerNav.homePage:document.querySelector("[data-slug=".concat(t,"]"));window.headerNav.router.navigate(t),window.headerNav.showPage(n)}else{var i=window.location,a=i.protocol,o=i.hostname;window.location.href="".concat(a,"//").concat(o,"/").concat(t)}}}LPSite.const={},LPSite.util={},"undefined"!=typeof global&&(global.LPSite=LPSite),function(){this.MIN_DESKTOP_WIDTH=960,this.MQ_DESKTOP=window.matchMedia("(min-width: ".concat(this.MIN_DESKTOP_WIDTH,"px)")),this.MQ_PREFERS_REDUCED_MOTION=window.matchMedia("(prefers-reduced-motion: reduce)"),this.HEADER_CLASS="js-site-header",this.LINK_CLASS="lp-nav__link",this.ACTIVE_LINK_CLASS="lp-nav__link--active",this.SUBNAV_CLASS="lp-subnav__link",this.SUBNAV_NAVIGATED_CLASS="lp-subnav--navigated"}.apply(LPSite.const),function(){var i=this;this.isDesktop=function(){return LPSite.const.MQ_DESKTOP.matches},this.prefersReducedMotion=function(){return LPSite.const.MQ_PREFERS_REDUCED_MOTION.matches},this.stripHash=function(e){return e.slice(0,e.lastIndexOf("#"))},this.stripTrailingSlash=function(e){return e.replace(/\/$/,"")},this.getCurrentPageBaseUrl=function(){try{var e=new URL(window.location.href),t=e.protocol,n=e.host,i=e.pathname,a=i.endsWith("/")?i.slice(0,-1):i;return"".concat(t,"//").concat(n).concat(a)}catch(e){return console.error("Failed to parse the window location href:",e),null}},this.addNavigateToRouteListener=function(){return window.addEventListener("message",navigateToRoute)},this.getSubnavTrigger=function(e){for(var t=e.parentElement.parentElement.parentElement.parentElement,n=null,i=0;i<t.children.length;i+=1){var a=t.children[i];if(a.classList.contains(LPSite.const.LINK_CLASS)){n=a;break}}return n},this.closeParentSubnav=function(e){var t=e.parentElement.parentElement.parentElement,n=i.getSubnavTrigger(e);i.isDesktop()&&requestAnimationFrame(function(){t.classList.add(LPSite.const.SUBNAV_NAVIGATED_CLASS),t.addEventListener("transitionend",function e(){t.removeEventListener("transitionend",e),n.addEventListener("mouseover",function e(){n.removeEventListener("mouseover",e),requestAnimationFrame(function(){t.classList.remove(LPSite.const.SUBNAV_NAVIGATED_CLASS)})})})})}}.apply(LPSite.util);</script>
vendor: 1 bytes, line 123
123
124<script type="text/javascript" data-scriptname="DELAY_SCRIPT">"use strict";!function(){var e=document.querySelectorAll("[data-delay-display-seconds]");[].forEach.call(e,function(e){var s=e.getAttribute("data-delay-display-seconds");setTimeout(function(){e.classList.add("is-visible"),e.classList.remove("is-delayed"),e.classList.remove("hide-section"),window.sup.tailor.triggerReCalcClassNames()},1e3*s)})}();</script>
vendor: 1 bytes, line 124
124
125<script type="text/javascript" data-scriptname="IMAGE_CLICKGUARD_SCRIPT">"use strict";window.addEventListener("contextmenu",function(t){var e=t.target.getAttribute("data-image-upload-source");"shutterstock_api"!==e&&"getty_api"!==e||t.preventDefault()});</script>
vendor: 1 bytes, line 125
125
126<script type="text/javascript" data-scriptname="SUBMISSION">(function(){var exports={};var module={exports: exports};"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function commonjsRequire(){throw new Error("Dynamic requires are not currently supported by rollup-plugin-commonjs")}function unwrapExports(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function createCommonjsModule(e,t){return e(t={exports:{}},t.exports),t.exports}var _typeof_1=createCommonjsModule(function(e){function t(r){return e.exports=t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,t(r)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports}),_typeof=unwrapExports(_typeof_1),toPrimitive_1=createCommonjsModule(function(e){var t=_typeof_1.default;e.exports=function(e,r){if("object"!=t(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,r||"default");if("object"!=t(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(e)},e.exports.__esModule=!0,e.exports.default=e.exports});unwrapExports(toPrimitive_1);var toPropertyKey_1=createCommonjsModule(function(e){var t=_typeof_1.default;e.exports=function(e){var r=toPrimitive_1(e,"string");return"symbol"==t(r)?r:r+""},e.exports.__esModule=!0,e.exports.default=e.exports});unwrapExports(toPropertyKey_1);var defineProperty=createCommonjsModule(function(e){e.exports=function(e,t,r){return(t=toPropertyKey_1(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports}),_defineProperty=unwrapExports(defineProperty),arrayWithHoles=createCommonjsModule(function(e){e.exports=function(e){if(Array.isArray(e))return e},e.exports.__esModule=!0,e.exports.default=e.exports});unwrapExports(arrayWithHoles);var iterableToArrayLimit=createCommonjsModule(function(e){e.exports=function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],u=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);u=!0);}catch(e){l=!0,o=e}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}},e.exports.__esModule=!0,e.exports.default=e.exports});unwrapExports(iterableToArrayLimit);var arrayLikeToArray=createCommonjsModule(function(e){e.exports=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n},e.exports.__esModule=!0,e.exports.default=e.exports});unwrapExports(arrayLikeToArray);var unsupportedIterableToArray=createCommonjsModule(function(e){e.exports=function(e,t){if(e){if("string"==typeof e)return arrayLikeToArray(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?arrayLikeToArray(e,t):void 0}},e.exports.__esModule=!0,e.exports.default=e.exports});unwrapExports(unsupportedIterableToArray);var nonIterableRest=createCommonjsModule(function(e){e.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.__esModule=!0,e.exports.default=e.exports});unwrapExports(nonIterableRest);var slicedToArray=createCommonjsModule(function(e){e.exports=function(e,t){return arrayWithHoles(e)||iterableToArrayLimit(e,t)||unsupportedIterableToArray(e,t)||nonIterableRest()},e.exports.__esModule=!0,e.exports.default=e.exports}),_slicedToArray=unwrapExports(slicedToArray);function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};
126t%2?ownKeys(Object(r),!0).forEach(function(t){_defineProperty(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function createElement(e){return document.createElement(e)}function getLocationSearch(){return window.location.search||""}function generateUUID(){var e=(new Date).getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(t){var r=16*(e+Math.random())%16|0;return("x"===t?r:7&r|8).toString(16)})}function getQueryString(){return getLocationSearch().replace("?","")}function getNextUrlWithCurrentPageParameters(e){var t=getQueryString();return t?"".concat(e).concat(-1!==e.indexOf("?")?"&":"?").concat(t):e}function serializeQueryString(e){return Object.keys(e).map(function(t){return"".concat(encodeURIComponent(t),"=").concat(encodeURIComponent(e[t]))}).join("&")}function deserializeQueryString(e){return e.split("&").reduce(function(e,t){var r=e,n=t.split("="),o=_slicedToArray(n,2),i=o[0],a=void 0===i?"":i,s=o[1],u=void 0===s?"":s;return""!==a&&""!==u&&(r[decodeURIComponent(a)]=decodeURIComponent(u)),r},{})}function appendToQuery(e,t){return serializeQueryString(_objectSpread(_objectSpread({},deserializeQueryString(e)),t))}function addQueriesToUrl(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(0===Object.keys(t).length)return e;var r=e.split("?"),n=_slicedToArray(r,2),o=n[0],i=n[1],a=void 0===i?"":i;if(!a)return[o].concat(serializeQueryString(t)).join("?");var s=a.split("#"),u=_slicedToArray(s,2),l=u[0],c=u[1],d=void 0===c?"":c;return l=appendToQuery(l,t),d&&(l="".concat(l,"#").concat(d)),"".concat(o,"?").concat(l)}function buildRedirectUrl(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r="";if(e){var n=e.indexOf("#"),o=-1===n?"":e.substr(n),i=getNextUrlWithCurrentPageParameters(-1===n?e:e.substr(0,n));i=addQueriesToUrl(i,t),r="".concat(i).concat(o)}return r}function serializeInput(e){return"".concat(encodeURIComponent(e.getAttribute("name")),"=").concat(encodeURIComponent(e.value))}var CHECK_INPUTS=["radio","checkbox"];function shouldSerializeInput(e){return!e.getAttribute("data-lp-payments")&&(!!e.getAttribute("name")&&!!e[CHECK_INPUTS.indexOf(e.type)>-1?"checked":"value"])}function toggleClass(e,t){var r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=e.className?e.className.split(" "):[],o=n.indexOf(t);r&&-1===o?n.push(t):r||-1===o||n.splice(o,1),e.className=n.join(" ")}function queryForElementValue(e,t){var r=e.querySelector(t);return r&&r.value||""}var sslCheck=/^https:/i;function checkForSSL(){return sslCheck.test(window.location.href)}function ownKeys$1(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function _objectSpread$1(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys$1(Object(r),!0).forEach(function(t){_defineProperty(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys$1(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var META_TAG_MAP={"leadpages-meta-id":"id","leadpages-served-by":"served_by","leadpages-serving-tags":"serving_tags","leadpages-legacy-pixel-domain":"serving_domain"},DEFAULT_META={id:-1,served_by:"",type:"optin",pageId:"",serving_tags:"",serving_domain:"",uuid:generateUUID()};function metaPropForElement(e){return e&&e.name&&META_TAG_MAP[e.name]||null}function mapMetaData(e){return Array.prototype.reduce.call(e,function(e,t){var r=metaPropForElement(t);return r?_objectSpread$1(_objectSpread$1({},e),{},_defineProperty({},r,t.content)):e},_objectSpread$1({},DEFAULT_META))}function getMetaElements(){return document.querySelectorAll("meta")}function gatherMetaData(){return mapMetaData(getMetaElements())}var classCallCheck=createCommonjsModule(function(e){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},e.exports.__esModule=!0,e.exports.default=e.exports}),_classCallCheck=unwrapExports(classCallCheck),createClass=createCommonjsModule(function(e){function t(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,toPropertyKey_1(n.key),n)}}e.exports=function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e},e.exports.__esModule=!0,e.exports.default=e.exports}),_createClass=unwrapExports(createClass),es6Promise=createCommonjsModule(function(e,t){e.exports=function(){function e(e){return"function"==typeof e}var t=Array.isArray?Array.isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)},r=0,n=void 0,o=void 0,i=function(e,t){p[r]=e,p[r+1]=t,2===(r+=2)&&(o?o(h):g())},a="undefined"!=typeof window?window:void 0,s=a||{},u=s.MutationObserver||s.WebKitMutationObserver,l="undefined"==typeof self&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),c="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel;function d(){var e=setTimeout;return function(){return e(h,1)}}var p=new Array(1e3);function h(){for(var e=0;e<r;e+=2){var t=p[e],n=p[e+1];t(n),p[e]=void 0,p[e+1]=void 0}r=0}var y,f,m,C,g=void 0;function _(e,t){var r=this,n=new this.constructor(S);void 0===n[E]&&F(n);var o=r._state;if(o){var a=arguments[o-1];i(function(){return k(o,n,a,r._result)})}else D(r,n,e,t);return n}function v(e){if(e&&"object"===_typeof(e)&&e.constructor===this)return e;var t=new this(S);return I(t,e),t}l?g=function(){return process.nextTick(h)}:u?(f=0,m=new u(h),C=document.createTextNode(""),m.observe(C,{characterData:!0}
vendor: 3,776 bytes, line 126
126),g=function(){C.data=f=++f%2}):c?((y=new MessageChannel).port1.onmessage=h,g=function(){return y.port2.postMessage(0)}):g=void 0===a&&"function"==typeof commonjsRequire?function(){try{var e=Function("return this")().require("vertx");return void 0!==(n=e.runOnLoop||e.runOnContext)?function(){n(h)}:d()}catch(e){return d()}}():d();var E=Math.random().toString(36).substring(2);function S(){}var b=void 0,A=1,P=2,T={error:null};function O(e){try{return e.then}catch(e){return T.error=e,T}}function L(t,r,n){r.constructor===t.constructor&&n===_&&r.constructor.resolve===v?function(e,t){t._state===A?N(e,t._result):t._state===P?w(e,t._result):D(t,void 0,function(t){return I(e,t)},function(t){return w(e,t)})}(t,r):n===T?(w(t,T.error),T.error=null):void 0===n?N(t,r):e(n)?function(e,t,r){i(function(e){var n=!1,o=function(e,t,r,n){try{e.call(t,r,n)}catch(e){return e}}(r,t,function(r){n||(n=!0,t!==r?I(e,r):N(e,r))},function(t){n||(n=!0,w(e,t))},e._label);!n&&o&&(n=!0,w(e,o))},e)}(t,r,n):N(t,r)}function I(e,t){var r,n;e===t?w(e,new TypeError("You cannot resolve a promise with itself")):(n=_typeof(r=t),null===r||"object"!==n&&"function"!==n?N(e,t):L(e,t,O(t)))}function R(e){e._onerror&&e._onerror(e._result),M(e)}function N(e,t){e._state===b&&(e._result=t,e._state=A,0!==e._subscribers.length&&i(M,e))}function w(e,t){e._state===b&&(e._state=P,e._result=t,i(R,e))}function D(e,t,r,n){var o=e._subscribers,a=o.length;e._onerror=null,o[a]=t,o[a+A]=r,o[a+P]=n,0===a&&e._state&&i(M,e)}function M(e){var t=e._subscribers,r=e._state;if(0!==t.length){for(var n=void 0,o=void 0,i=e._result,a=0;a<t.length;a+=3)n=t[a],o=t[a+r],n?k(r,n,o,i):o(i);e._subscribers.length=0}}function k(t,r,n,o){var i=e(n),a=void 0,s=void 0,u=void 0,l=void 0;if(i){if((a=function(e,t){try{return e(t)}catch(e){return T.error=e,T}}(n,o))===T?(l=!0,s=a.error,a.error=null):u=!0,r===a)return void w(r,new TypeError("A promises callback cannot return that same promise."))}else a=o,u=!0;r._state!==b||(i&&u?I(r,a):l?w(r,s):t===A?N(r,a):t===P&&w(r,a))}var U=0;function F(e){e[E]=U++,e._state=void 0,e._result=void 0,e._subscribers=[]}var j=function(){function e(e,r){this._instanceConstructor=e,this.promise=new e(S),this.promise[E]||F(this.promise),t(r)?(this.length=r.length,this._remaining=r.length,this._result=new Array(this.length),0===this.length?N(this.promise,this._result):(this.length=this.length||0,this._enumerate(r),0===this._remaining&&N(this.promise,this._result))):w(this.promise,new Error("Array Methods must be provided an Array"))}return e.prototype._enumerate=function(e){for(var t=0;this._state===b&&t<e.length;t++)this._eachEntry(e[t],t)},e.prototype._eachEntry=function(e,t){var r=this._instanceConstructor,n=r.resolve;if(n===v){var o=O(e);if(o===_&&e._state!==b)this._settledAt(e._state,t,e._result);else if("function"!=typeof o)this._remaining--,this._result[t]=e;else if(r===x){var i=new r(S);L(i,e,o),this._willSettleAt(i,t)}else this._willSettleAt(new r(function(t){return t(e)}),t)}else this._willSettleAt(n(e),t)},e.prototype._settledAt=function(e,t,r){var n=this.promise;n._state===b&&(this._remaining--,e===P?w(n,r):this._result[t]=r),0===this._remaining&&N(n,this._result)},e.prototype._willSettleAt=function(e,t){var r=this;D(e,void 0,function(e){return r._settledAt(A,t,e)},function(e){return r._settledAt(P,t,e)})},e}(),x=function(){function t(e){this[E]=U++,this._result=this._state=void 0,this._subscribers=[],S!==e&&("function"!=typeof e&&function(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}(),this instanceof t?function(e,t){try{t(function(t){I(e,t)},function(t){w(e,t)})}catch(t){w(e,t)}}(this,e):function(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object c
126onstructor cannot be called as a function.")}())}return t.prototype.catch=function(e){return this.then(null,e)},t.prototype.finally=function(t){var r=this.constructor;return e(t)?this.then(function(e){return r.resolve(t()).then(function(){return e})},function(e){return r.resolve(t()).then(function(){throw e})}):this.then(t,t)},t}();return x.prototype.then=_,x.all=function(e){return new j(this,e).promise},x.race=function(e){var r=this;return t(e)?new r(function(t,n){for(var o=e.length,i=0;i<o;i++)r.resolve(e[i]).then(t,n)}):new r(function(e,t){return t(new TypeError("You must pass an array to race."))})},x.resolve=v,x.reject=function(e){var t=new this(S);return w(t,e),t},x._setScheduler=function(e){o=e},x._setAsap=function(e){i=e},x._asap=i,x.polyfill=function(){var e=void 0;if(void 0!==commonjsGlobal)e=commonjsGlobal;else if("undefined"!=typeof self)e=self;else try{e=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}var t=e.Promise;if(t){var r=null;try{r=Object.prototype.toString.call(t.resolve())}catch(e){}if("[object Promise]"===r&&!t.cast)return}e.Promise=x},x.Promise=x,x}()});function ownKeys$2(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function _objectSpread$2(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys$2(Object(r),!0).forEach(function(t){_defineProperty(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys$2(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var FETCH_DEFAULTS={method:"GET",headers:{}};function makeParams(e){return Object.keys(e).map(function(t){return"".concat(encodeURIComponent(t),"=").concat(encodeURIComponent(e[t]))}).join("&")}function rebuildUrlWithParams(e,t){var r=makeParams(t),n=e.split("?"),o=_slicedToArray(n,2),i=o[0],a=o[1];return a&&(r="".concat(r,"&").concat(a)),"".concat(i,"?").concat(r)}var _ctaLayoutsMap,_contentTypes$SITE,_contentTypes$PAGE,_contentWidths,Request=function(){function e(){var t=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};_classCallCheck(this,e),this.opts=this.hashDefaults(r),this.xhr=new XMLHttpRequest,this.promise=new es6Prom
126ise(function(e,r){t.reject=r,t.resolve=e}),this.xhr.onreadystatechange=function(){return t.handleStateChange()},this.xhr.ontimeout=function(){return t.handleReject()}}return _createClass(e,[{key:"handleStateChange",value:function(){var e=this.xhr;4===e.readyState&&(0===e.status||e.status>=400?this.handleReject():this.handleSuccess())}},{key:"handleReject",value:function(){return this.reject(this.xhr)}},{key:"handleSuccess",value:function(){var e=this.xhr,t=this.resolve;try{t(JSON.parse(e.response,e))}catch(r){t(e.response)}}},{key:"hashDefaults",value:function(e){return _objectSpread$2(_objectSpread$2({},FETCH_DEFAULTS),e)}},{key:"setTimeout",value:function(e){this.xhr.timeout=e}},{key:"prepare",value:function(e,t,r){var n=_objectSpread$2(_objectSpread$2({},r),{},{url:t});return n.params&&(n.url=rebuildUrlWithParams(t,n.params)),e.open(n.method,n.url,!0),n.timeout&&this.setTimeout(n.timeout),Object.keys(n.headers).forEach(function(t){return e.setRequestHeader(t,n.headers[t])}),n}},{key:"send",value:function(e){var t=this.xhr,r=this.opts,n=this.promise,o=this.prepare(t,e,r);return t.send(o.body),n}}]),e}();function fetch(e,t){return new fetch.Request(t).send(e)}fetch.Request=Request;var _widgetTypes$COUNTDOW,_widgetTypes$PROGRESS,_widgetTypes$CALENDAR,_widgetTypes$CHECKOUT,_widgetVerbiages,_errorMessages,headerLayoutTypes={LNl:"LNl",LNlC:"LNlC",LNm:"LNm",LNmC:"LNmC",LNr:"LNr",LNrC:"LNrC",NlL_:"NlL_",NlL_C:"NlL_C",L$Nm:"L$Nm",L$_NmC:"L$_NmC"}
126,ctaLayoutsMap=(_defineProperty(_ctaLayoutsMap={},headerLayoutTypes.LNl,headerLayoutTypes.LNlC),_defineProperty(_ctaLayoutsMap,headerLayoutTypes.LNlC,headerLayoutTypes.LNl),_defineProperty(_ctaLayoutsMap,headerLayoutTypes.LNm,headerLayoutTypes.LNmC),_defineProperty(_ctaLayoutsMap,headerLayoutTypes.LNmC,headerLayoutTypes.LNm),_defineProperty(_ctaLayoutsMap,headerLayoutTypes.LNr,headerLayoutTypes.LNrC),_defineProperty(_ctaLayoutsMap,headerLayoutTypes.LNrC,headerLayoutTypes.LNr),_defineProperty(_ctaLayoutsMap,headerLayoutTypes.NlL_,headerLayoutTypes.NlL_C),_defineProperty(_ctaLayoutsMap,headerLayoutTypes.NlL_C,headerLayoutTypes.NlL_),_defineProperty(_ctaLayoutsMap,headerLayoutTypes.L$Nm,headerLayoutTypes.L$_NmC),_defineProperty(_ctaLayoutsMap,headerLayoutTypes.L$_NmC,headerLayoutTypes.L$Nm),_ctaLayoutsMap),widgetTypes={HEADLINE:"LpHeadlineReact",TEXT:"LpTextReact",FORM:"lp-form-react",FORM_V2:"lp-form-v2-react",FORM_V2_INPUT:"LpFormV2InputReact",CHECKOUT:"lp-checkout-react",BUTTON:"LpButtonReact",LINK:"LpLinkReact",IMAGE:"LpImageReact",LOGO:"LpLogoReact",IMAGE_AND_TEXT:"lpImageTextReact",NAV:"LpNavReact",SPACE:"LpSpaceReact",VIDEO:"LpVideoReact",ICON:"LpIconReact",LINE:"LpLineReact",COUNTDOWN:"LpCountdownTimerReact",PROGRESS_BAR:"LpProgressbarReact",SHARE:"LpShareReact",LIKE:"LpLikeReact",HTML:"LpHtmlReact",CALENDAR:"LpCalendarReact",CALENDLY:"LpCalendlyEmbedReact",OPEN_TABLE:"LpOpenTableEmbedReact",PRODUCT_SUMMARY:"LpProductSummaryReact",INPUT:"LpInputReact",BLOG_FEED:"LpBlogFeedReact",BLOG_POST:"LpBlogPostReact"},contentTypes={BAR:"LeadbarV3",BOX:"LeadboxV3",PAGE:"LeadpageV3",SITE:"SiteV3"},linkTypes={CALENDLY:"calendly",EXTERNAL:"external",LEADPAGE:"leadpage",LEADBOX:"leadbox",SECTION:"section",SITE_ROUTE:"site-route",ROUTE_SECTION:"route-section",REMAIN:"remain",DEFAULT:"default"},widgetLanguages={English:"en",Spanish:"es",French:"fr",German:"de",Portuguese:"pt-BR",Italian:"it"},contentSizes={small:"small",medium:"medium",large:"large"},contentWidths=(_defineProperty(_contentWidths={},contentTypes.SITE,(_defineProperty(_contentTypes$SITE={},contentSizes.small,"960px"),_defineProperty(_contentTypes$SITE,contentSizes.medium,"1140px"),_defineProperty(_contentTypes$SITE,contentSizes.large,"1280px"),_contentTypes$SITE)),_defineProperty(_contentWidths,contentTypes.PAGE,(_defineProperty(_contentTypes$PAGE={},contentSizes.small,"800px"),_defineProperty(_contentTypes$PAGE,contentSizes.medium,"960px"),_defineProperty(_contentTypes$PAGE,contentSizes.large,"1140px"),_contentTypes$PAGE)),_contentWidths),English=widgetLanguages.English,Spanish=widgetLanguages.Spanish,French=widgetLanguages.French,German=widgetLanguages.German,Portuguese=widgetLanguages.Portuguese,Italian=widgetLanguages.Italian,widgetVerbiages=(_defineProperty(_widgetVerbiages={},widgetTypes.COUNTDOWN,(_defineProperty(_widgetTypes$COUNTDOW={},English,{Days:"Days",Hours:"Hours",Minutes:"Minutes",Seconds:"Seconds"}),_defineProperty(_widgetTypes$COUNTDOW,Spanish,{Days:"Dias",Hours:"Horas",Minutes:"Minutos",Seconds:"Segundos"}),_defineProperty(_widgetTypes$COUNTDOW,French,{Days:"Jours",Hours:"Heures",Minutes:"Minutes",Seconds:"Secondes"}),_defineProperty(_widgetTypes$COUNTDOW,German,{Days:"Tage",Hours:"Stunden",Minutes:"Minuten",Seconds:"Sekunden"}),_defineProperty(_widgetTypes$COUNTDOW,Portuguese,{Days:"Dias",Hours:"Horas",Minutes:"Minutos",Seconds:"Segundos"}),_defineProperty(_widgetTypes$COUNTDOW,Italian,{Days:"Giorni",Hours:"Ore",Minutes:"Minuti",Seconds:"Secondi"}),_widgetTypes$COUNTDOW)),_defineProperty(_widgetVerbiages,widgetTypes.PROGRESS_BAR,(_defineProperty(_widgetTypes$PROGRESS={},English,{Complete:"Complete"}),_defineProperty(_widgetTypes$PROGRESS,Spanish,{Complete:"Completo"}),_defineProperty(_widgetTypes$PROGRESS,French,{Complete:"Terminé"}),_defineProperty(_widgetTypes$PROGRESS,German,{Complete:"Abgeschlossen"}),_defineProperty(_widgetTypes$PROGRESS,Portuguese,{Complete:"Completo"}),_defineProperty(_widgetTypes$PROGRESS,Italian,{Complete:"Completato"}),_widgetTypes$PROGRESS)),_defineProperty(_widgetVerbiages,widgetTypes.CALENDAR,(_defineProperty(_widgetTypes$CALENDAR={},English,{January:"January",February:"February",March:"March",April:"April",May:"May",June:"June",July:"July",August:"August",September:"September",October:"October",November:"November",December:"December"}),_defineProperty(_widgetTypes$CALENDAR,Spanish,{January:"Enero",February:"Febrero",March:"Marcha",April:"Abril",May:"Mayo",June:"Junio",July:"Julio",August:"Agosto",September:"Septiembre",October:"Octubre",November:"Noviembre",December:"Diciembre"}),_defineProperty(_widgetTypes$CALENDAR,French,{January:"Janvier",February:"Février",March:"Mars",April:"Avril",May:"Mai",June:"Juin",July:"Juillet",August:"Août",September:"Septembre",October:"Octobre",November:"Novembre",December:"Décembre"}),_defineProperty(_widgetTypes$CALENDAR,German,{January:"Januar",February:"Februar",March:"März",April:"April",May:"Mai",June:"Juni",July:"Juli",August:"August",September:"September",October:"Oktober",November:"November",December:"Dezember"}),_defineProperty(_widgetTypes$CALENDAR,Portuguese,{January:"Janeiro",February:"Fevereiro",March:"Março",April:"Abril",May:"Maio",June:"Junho",July:"Julho",August:"Agosto",September:"Setembro",October:"Outubro",November:"Novembro",December:"Dezembro"}),_defineProperty(_widgetTypes$CALENDAR,Italian,{January:"Gennaio",February:"Febbraio",March:"Marzo",April:"Aprile",May:"Maggio",June:"Giugno",July:"Luglio",August:"Agosto",September:"Settembre",October:"Ottobre",November:"Novembre",December:"Dicembre"}),_widgetTypes$CALENDAR)),_defineProperty(_widgetVerbiages,widgetTypes.CHECKOUT,(_defineProperty(_widgetTypes$CHECKOUT={},English,{Pay:"Pay",OrderSummary:"Order Summary",ShippingInformation:"Shipping Information",CreditCard:"Credit Card",Name:"Name",AddressLine1:"Address Line 1",AddressLine2:"Address Line 2",Country:"Country",Day:"day",EveryDay:function(e){return"every ".concat(e," days")},Week:"week",EveryWeek:function(e){return"every ".concat(e," weeks")},Month:"month",EveryMonth:function(e){return"every ".concat(e," months")},Year:"year",EveryYear:function(e){return"every ".concat(e," year")},ZipFields:{PostalCode:"Postal Code",ZipCode:"Zip Code",Pin:"Pin"},CityFields:{City:"City",TownCity:"Town or City",Suburb:"Suburb"},StateFields:{State:"State",Province:"Province",Department:"Department"},OrderBump:{CheckboxLabel:function(e){return"Yes, add ".concat(e," -")}},Coupon:{Apply:"Apply",Remove:"Remove"}}),_defineProperty(_widgetTypes$CHECKOUT,Spanish,{Pay:"Paga",OrderSummary:"Resumen de la Orden",ShippingInformation:"Información de envÃo",CreditCard:"Tarjeta de Crédito",Name:"Nombre",AddressLine1:"Dirección LÃnea 1",AddressLine2:"Dirección LÃnea 2",Country:"PaÃ
126s",Day:"dÃa",EveryDay:function(e){return"cada ".concat(e," diario")},Week:"semana",EveryWeek:function(e){return"cada ".concat(e," semanas")},Month:"mes",EveryMonth:function(e){return"cada ".concat(e," meses")},Year:"año",EveryYear:function(e){return"cada ".concat(e," años")},ZipFields:{PostalCode:"Código Postal",ZipCode:"Código Postal",Pin:"Código Postal"},CityFields:{City:"Ciudad",TownCity:"Pueblo o Ciudad",Suburb:"Suburbio"},StateFields:{State:"Estado",Province:"Provincia",Department:"Departamento"},OrderBump:{CheckboxLabel:function(e){return"SÃ, agregue ".concat(e," -")}},Coupon:{Apply:"Aplicar",Remove:"Eliminar"}}),_defineProperty(_widgetTypes$CHECKOUT,French,{Pay:"Payez",OrderSummary:"Récapitulatif de la Commande",ShippingInformation:"Informations sur la livraison",CreditCard:"Carte de crédit",Name:"Nom",AddressLine1:"Adresse 1",AddressLine2:"Adresse 2",Country:"De Campagne",Day:"jour",EveryDay:function(e){return"tous les ".concat(e," jours")},Week:"semaine",EveryWeek:function(e){return"toutes les ".concat(e," semaines")},Month:"mois",EveryMonth:function(e){return"tous les ".concat(e," mois")},Year:"an",EveryYear:function(e){return"tous les ".concat(e," ans")},ZipFields:{PostalCode:"Code Postal",ZipCode:"Code Postal",Pin:"Code Postal"},CityFields:{City:"Ville",TownCity:"Ville",Suburb:"Banlieue"},StateFields:{State:"Ãtat",Province:"Province",Department:"Département"},OrderBump:{CheckboxLabel:function(e){return"Oui, ajouter ".concat(e," -")}},Coupon:{Apply:"Appliquer",Remove:"Supprimer"}}),_defineProperty(_widgetTypes$CHECKOUT,German,{Pay:"Zahlen Sie",OrderSummary:"Bestellübersicht",ShippingInformation:"Versandinformationen",CreditCard:"Kreditkarte",Name:"Name",AddressLine1:"Anschrift Zeile 1",AddressLine2:"Anschrift Zeile 2",Country:"Land",Day:"tag",EveryDay:function(e){return"alle ".concat(e," tage")},Week:"woche",EveryWeek:function(e){return"alle ".concat(e," wochen")},Month:"monat",EveryMonth:function(e){return"alle ".concat(e," monate")},Year:"jahr",EveryYear:function(e){return"alle ".concat(e," jahre")},ZipFields:{PostalCode:"Postleitzahl",ZipCode:"Postleitzahl",Pin:"Postleitzahl"},CityFields:{City:"Stadt",TownCity:"Stadt",Suburb:"Vorort"},StateFields:{State:"Zustand",Province:"Provinz",Department:"Abteilung"},OrderBump:{CheckboxLabel:function(e){return"Ja, hinzufügen ".concat(e," -")}},Coupon:{Apply:"Anwenden",Remove:"Entfernen"}}),_defineProperty(_widgetTypes$CHECKOUT,Portuguese,{Pay:"Pague",OrderSummary:"Resumo do Pedido",ShippingInformation:"Informação de envio",CreditCard:"Cartão de Crédito",Name:"Nome",AddressLine1:"Endereço Linha 1",AddressLine2:"Endereço Linha 2",Country:"Terra",Day:"dia",EveryDay:function(e){return"a cada ".concat(e," dias")},Week:"semana",EveryWeek:function(e){return"a cada ".concat(e," semanas")},Month:"mês",EveryMonth:function(e){return"a cada ".concat(e," meses")},Year:"ano",EveryYear:function(e){return" a cada ".concat(e," anos")},ZipFields:{PostalCode:"Código Postal",ZipCode:"Código Postal",Pin:"Código Postal"},CityFields:{City:"Cidade",TownCity:"Vila ou Cidade",Suburb:"Subúrbio"},StateFields:{State:"Estado",Province:"ProvÃncia",Department:"Departamento"},OrderBump:{CheckboxLabel:function(e){return"Sim, adicione ".concat(e," -")}},Coupon:{Apply:"Aplicar",Remove:"Remover"}}),_defineProperty(_widgetTypes$CHECKOUT,Italian,{Pay:"Paga",OrderSummary:"Riepilogo dell'ordine",ShippingInformation:"Informazioni sulla spedizione",CreditCard:"Carta di Credito",Name:"Nome",AddressLine1:"Indirizzo Linea 1",AddressLine2:"Indirizzo Linea 2",Country:"Nazione",Day:"giorno",EveryDay:function(e){return"ogni ".concat(e," giorni")},Week:"settimana",EveryWeek:function(e){return"ogni ".concat(e," settimane")},Month:"mese",EveryMonth:function(e){return"ogni ".concat(e," mesi")},Year:"anno",EveryYear:function(e){return" ogni ".concat(e," annis")},ZipFields:{PostalCode:"Codice Postale",ZipCode:"Codice Postale",Pin:"Codice Postale"},CityFields:{City:"Città ",TownCity:"Paese o Città ",Suburb:"Sobborgo"},StateFields:{State:"Stato",Province:"Provincia",Department:"Dipartimento"},OrderBump:{CheckboxLabel:function(e){return"SÃ, aggiungi ".concat(e," -")}},Coupon:{Apply:"Applica",Remove:"Rimuovi"}}),_widgetTypes$CHECKOUT)),_widgetVerbiages),errorMessages=(_defineProperty(_errorMessages={},English,{getRequiredMessage:function(e){return"Please enter your ".concat(e)},getInvalidMessage:function(e){return"Please enter a valid ".concat(e)},getInvalidCouponMessage:function(){return"Invalid coupon."}}),_defineProperty(_errorMessages,Spanish,{getRequiredMessage:function(){return"Campo requerido"},getInvalidMessage:function(){return"Campo inválido`"},getInvalidCouponMessage:function(){return"Cupón inválido."}}),_defineProperty(_errorMessages,French,{getRequiredMessage:function(){return"Champ obligatoire"}
126,getInvalidMessage:function(){return"Champ invalide`"},getInvalidCouponMessage:function(){return"Coupon invalide."}}),_defineProperty(_errorMessages,German,{getRequiredMessage:function(){return"Pflichtfeld"},getInvalidMessage:function(){return"Feld ungültig`"},getInvalidCouponMessage:function(){return"Ungültiger Gutschein."}}),_defineProperty(_errorMessages,Portuguese,{getRequiredMessage:function(){return"Campo requerido"},getInvalidMessage:function(){return"Campo inválido"},getInvalidCouponMessage:function(){return"Cupom inválido."}}),_defineProperty(_errorMessages,Italian,{getRequiredMessage:function(){return"Campo richiesto"},getInvalidMessage:function(){return"Campo non valido"},getInvalidCouponMessage:function(){return"Buono non valido."}}),_errorMessages);function getVerbiageForWidget(e,t){return(widgetVerbiages[e]||{})[t||widgetLanguages.English]||{}}function getCheckoutVerbiages(e){return getVerbiageForWidget(widgetTypes.CHECKOUT,e||widgetLanguages.English)}var CountryCodes={UnitedStates:"US",France:"FR",UnitedKingdom:"GB",India:"IN",Canada:"CA",Australia:"AU",Brazil:"BR",Italy:"IT",Germany:"DE",Netherlands:"NE",Spain:"ES",Mexico:"MX",Colombia:"CO"};function makeFieldMap(e){var t,r=e.ZipFields,n=e.CityFields,o=e.StateFields;return _defineProperty(t={},CountryCodes.UnitedStates,{PostalCode:r.ZipCode,City:n.City,State:o.State}),_defineProperty(t,CountryCodes.France,{PostalCode:r.PostalCode,City:n.City,hideStateField:!0}),_defineProperty(t,CountryCodes.UnitedKingdom,{PostalCode:r.PostalCode,City:n.TownCity,hideStateField:!0}),_defineProperty(t,CountryCodes.Canada,{PostalCode:r.PostalCode,City:n.City,State:o.Province}),_defineProperty(t,CountryCodes.India,{PostalCode:r.Pin,City:n.City,State:o.State}),_defineProperty(t,CountryCodes.Australia,{PostalCode:r.PostalCode,City:n.Suburb,State:o.State}),_defineProperty(t,CountryCodes.Brazil,{PostalCode:r.PostalCode,City:n.City,State:o.State}),_defineProperty(t,CountryCodes.Italy,{PostalCode:r.PostalCode,City:n.City,State:o.Province}),_defineProperty(t,CountryCodes.Germany,{PostalCode:r.PostalCode,City:n.City,hideStateField:!0}),_defineProperty(t,CountryCodes.Netherlands,{PostalCode:r.PostalCode,City:n.City,hideStateField:!0}),_defineProperty(t,CountryCodes.Spain,{PostalCode:r.PostalCode,City:n.City,State:o.Province}),_defineProperty(t,CountryCodes.Mexico,{PostalCode:r.PostalCode,City:n.City,State:o.State}),_defineProperty(t,CountryCodes.Colombia,{PostalCode:r.PostalCode,City:n.City,State:o.Department}),_defineProperty(t,"DEFAULT",{PostalCode:r.PostalCode,City:n.City,State:o.State}),t}var LanguageCodeMap={"en-US":CountryCodes.UnitedStates,fr:CountryCodes.France,"en-GB":CountryCodes.UnitedKingdom,hi:CountryCodes.India,"fr-ca":CountryCodes.Canada,"en-ca":CountryCodes.Canada,"en-au":CountryCodes.Australia,"pt-br":CountryCodes.Brazil,it:CountryCodes.Italy,de:CountryCodes.Germany,nl:CountryCodes.Netherlands,es:CountryCodes.Spain,"es-mx":CountryCodes.Mexico,"es-co":CountryCodes.Colombia};function getNavigatorLanguageCode(){var e="";try{e=LanguageCodeMap[window.navigator.language]}catch(e){}return e||CountryCodes.UnitedStates}function getShippingLabels(e,t){var r=e||getNavigatorLanguageCode(),n=makeFieldMap(t),o=n[r]||n.DEFAULT;return{ShippingInformation:t.ShippingInformation,Name:t.Name,AddressLine1:t.AddressLine1,AddressLine2:t.AddressLine2,Country:t.Country,City:o.City,PostalCode:o.PostalCode,State:o.State,hideStateField:o.hideStateField}}var BILLING_FIELD="billing_card",SHIPPING_FIELD_CONTAINER="shipping_field_container",SHIPPING_NAME="shipping_name",SHIPPING_LINE1="shipping_address_line1",SHIPPING_LINE2="shipping_address_line2",SHIPPING_CITY="shipping_address_city",SHIPPING_STATE="shipping_address_state",SHIPPING_COUNTRY="shipping_address_country_code",SHIPPING_ZIP="shipping_address_zip",SHIPPING_INPUT_MAP={name:'[data-lp-payments="'.concat(SHIPPING_NAME,'"]'),line1:'[data-lp-payments="'.concat(SHIPPING_LINE1,'"]'),line2:'[data-lp-payments="'.concat(SHIPPING_LINE2,'"]'),city:'[data-lp-payments="'.concat(SHIPPING_CITY,'"]'),state:'[data-lp-payments="'.concat(SHIPPING_STATE,'"]'),country:'[data-lp-payments="'.concat(SHIPPING_COUNTRY,'"]'),postal_code:'[data-lp-payments="'.concat(SHIPPING_ZIP,'"]')},DATA_ATTRS={LP_TRANSACTION_TOKEN:"data-detail-token",API_URI:"data-api-uri",LP_ENV:"data-lp-env",LP_PAYMENTS:"data-lp-payments",PRICE:"data-price",TRANSACTION_NAME:"data-transaction-name",TOTAL_PRICE:"data-total-price",SKU_FORMATTED_PRICE:"data-sku-formatted-
126price",SHIPPING_REQUIRED:"data-shipping-required",DETAIL_UUID:"data-detail-uuid",DETAIL_TOKEN:"data-detail-token",PAGE_ID:"data-page-id",PRODUCT_ID:"data-product-id",PRODUCT_FIELD_TYPE:"data-product-field-type",ORDER_BUMP_ID:"data-order-bump-id",COUPON_CODE:"data-coupon-code",COUPON_DISCOUNT:"data-coupon-discount"},DATE_SELECTOR=".js-date-field",SALUTATION_SELECTOR=".js-salutation-field",COUNTRY_SELECTOR=".js-country-field",STATE_SELECTOR=".js-state-field",COUNTRY_CODE_PHONE_NUMBER_SELECTOR=".js-country-code-phone-number",forEach=function(e,t){return Array.prototype.forEach.call(e,t)};function toggleFieldDisplay(e,t){if(e&&e.parentElement&&e.parentElement.parentElement&&e.parentElement.parentElement.parentElement){var r=e.parentElement.parentElement.parentElement;r.classList.contains("form-field")&&(r.style.display=t)}}function updateFieldLabel(e,t){var r=e.parentElement,n=r&&r.firstChild;n&&"SPAN"===n.nodeName&&(n.innerText=t)}function createOption(e,t){var r=document.createElement("option");return r.text=e,r.value=t,r}function convertTimeStamp(e,t){var r=e.replace(/\//g,"-");if(-1===r.indexOf("-")){var n="".concat(r.slice(0,2),"-").concat(r.slice(2,4));8===r.length&&(n+="-".concat(r.slice(4))),r=n}try{var o;if("DateTimeField"===t)o=new Date(r).toISOString();else if("DateField"===t||"BirthdateField"===t){var i=r.split("-"),a=i.pop();i.unshift(a),o=i.join("-")}else o=r;return o}catch(e){return console.error(e),""}}var FormHelper=function(){function e(t){_classCallCheck(this,e),this.form=t,this.language=this.form.getAttribute("data-lp-language"),this.verbiages=this.language?getCheckoutVerbiages(this.language):null,this.setupHiddenDateField(),this.setupListeners(),this.setupSalutation(),(t.querySelector(COUNTRY_SELECTOR)||t.querySelector(STATE_SELECTOR))&&(this.setupCountry(),this.setupState()),this.setupCountryCodePhoneNumber()}return _createClass(e,[{key:"setupSalutation",value:function(){var e=this,t=this.form.querySelectorAll(SALUTATION_SELECTOR),r=[{name:"Mr.",value:"Mr."},{name:"Mrs.",value:"Mrs."},{name:"Dr.",value:"Dr."},{name:"Ms.",value:"Ms."}];forEach(t,function(t){t.options&&1===t.options.length&&e.setOptions(t,r)})}},{key:"setupCountry",value:function(){var e=this,t=window.iso3166.data,r=this.form.querySelectorAll(COUNTRY_SELECTOR);if(r&&r.length){var n=Object.keys(t).map(function(e){return{name:t[e].name,value:e}}).sort(function(e,t){return e.name.localeCompare(t.name)});forEach(r,function(t){t.addEventListener("change",e.countryChangeListener.bind(e)),e.setOptions(t,n)})}}},{key:"setupShippingFieldLabels",value:function(e){if(this.language&&this.verbiages){var t=e||getNavigatorLanguageCode()||"US",r=this.verbiages?getShippingLabels(t,this.verbiages):null,n=this.form.querySelectorAll(SHIPPING_INPUT_MAP.state),o=r&&r.PostalCode?this.form.querySelectorAll(SHIPPING_INPUT_MAP.postal_code):null,i=r&&r.City?this.form.querySelectorAll(SHIPPING_INPUT_MAP.city):null;n&&n.length>0&&forEach(n,function(e){r.hideStateField?(toggleFieldDisplay(e,"none"),e.removeAttribute("required")):(updateFieldLabel(e,r.State),toggleFieldDisplay(e,"block"),e.setAttribute("required","true"))}),o&&o.length>0&&forEach(o,function(e){updateFieldLabel(e,r.PostalCode)}),i&&i.length>0&&forEach(i,function(e){updateFieldLabel(e,r.City)})}}},{key:"setupState",value:function(){var e=this,t=this.language?getNavigatorLanguageCode():"US",r=window.iso3166.country(t).sub,n=this.form.querySelectorAll(STATE_SELECTOR);if(n&&n.length){var o=Object.keys(r).map(function(e){return{name:r[e].name,value:e}}).sort(function(e,t){return e.name.localeCompare(t.name)});forEach(n,function(t){e.setOptions(t,o)})}}},{key:"countryChangeListener",value:function(e){var t=this,r=window.iso3166.data,n=this.form.querySelectorAll(STATE_SELECTOR),o=e.target.value,i=[];n&&n.length&&(Object.keys(r).forEach(function(e){e===o&&(i=Object.keys(r[e].sub).map(function(t){return{name:r[e].sub[t].name,value:t}}).sort(function(e,t){return e.name.localeCompare(t.name)}))}),forEach(n,function(e){t.setOptions(e,i)})),this.setupShippingFieldLabels(o)}},{key:"setOptions",value:function(e,t,r){for(;e.firstChild;)e.removeChild(e.firstChild);if(r)e.appendChild(createOption(r.name,r.value));else{var n=e.getAttribute("data-default-placeholder")||"Select an option";e.appendChild(createOption(n,""))}return t.forEach(function(t){e.appendChild(createOption(t.name,t.value))}),this}},{key:"setupListeners",value:function(){var e=this,t=this.form.querySelectorAll(DATE_SELECTOR);forEach(t,function(t){t.addEventListener("keyup",e.changeListener.bind(e)),t.addEventListener("change",e.changeListener.bind(e)),t.value&&e.updateHiddenField(t)})}}
126,{key:"setupHiddenDateField",value:function(){var e=this,t=this.form.querySelectorAll(DATE_SELECTOR);forEach(t,function(t){var r=document.createElement("input");r.setAttribute("type","hidden");var n=t.getAttribute("name");r.setAttribute("name",n),t.removeAttribute("name"),t.dataset.name=n,e.form.appendChild(r)})}},{key:"updateHiddenField",value:function(e){var t=this.form.querySelector('[name="'.concat(e.dataset.name,'"]')),r="";e.checkValidity()&&""!==e.value&&(r=convertTimeStamp(e.value,e.dataset.kind));t.value=r}},{key:"changeListener",value:function(e){var t=e.srcElement||e.currentTarget||e.target;this.updateHiddenField(t)}},{key:"setupCountryCodePhoneNumber",value:function(){var e=this,t=window.phoneCountryCodes,r=this.form.querySelectorAll(COUNTRY_CODE_PHONE_NUMBER_SELECTOR);if(r&&r.length>0){var n=t.sort(function(e,t){var r=Object.keys(e)[0].toLowerCase(),n=Object.keys(t)[0].toLowerCase();return r<n?-1:r>n?1:0}).map(function(e){var t=Object.keys(e)[0];return{name:"+".concat(e[t]," ").concat(t),value:e[t]}});forEach(r,function(t){e.setOptions(t,n,{name:"+1 United States",value:"001"})})}}}]),e}(),REQUIRED_CLASS_NAME="js-required",REQUIRED_GROUP_CLASS_NAME="js-form-group-required",INVALID_CLASS_NAME="js-invalid",GROUP_CLASS_NAME="js-form-group",INPUT_SELECTOR="input, select, textarea",EMAIL_INPUT_SELECTOR='input[type="email"]',CAN_VALIDATE="function"==typeof document.createElement("input").checkValidity;function getParent(e){var t=e;do{if(!(t=t.parentElement)||t.classList.contains(GROUP_CLASS_NAME))return t}while(t)}function isInRequiredGroup(e){var t=getParent(e);return!(!t||!t.classList.contains(REQUIRED_GROUP_CLASS_NAME))&&t}function showError(e){var t=getParent(e);return t&&(e.validity.valueMissing||!e.checked?t.classList.add(REQUIRED_CLASS_NAME):t.classList.add(INVALID_CLASS_NAME)),e}function hideError(e){var t=getParent(e);return t&&(t.classList.remove(INVALID_CLASS_NAME),t.classList.remove(REQUIRED_CLASS_NAME)),e}function testCheckboxGroup(e){var t=e.querySelectorAll(INPUT_SELECTOR);return(t=Array.prototype.slice.call(t)).filter(function(e){return CAN_VALIDATE&&e.checkValidity(),e.checked}).length>0}function testInput(e){var t=isInRequiredGroup(e);return t?testCheckboxGroup(t)?null:e:CAN_VALIDATE?(e.checkValidity(),e.validity?null:e):null}function handleInput(e){e&&e.preventDefault&&e.preventDefault();var t=e.srcElement||e.currentTarget||e.target;testInput(t)?(hideError(t),showError(t)):hideError(t)}function validateForm(e){var t=e.querySelectorAll(EMAIL_INPUT_SELECTOR);if(!t||0===t.length||""===t[0].value||""===t[0].name)return!1;var r=e.querySelectorAll(INPUT_SELECTOR);return(r=Array.prototype.slice.call(r)).forEach(hideError),(r=r.map(testInput).filter(function(e){return e})).length?(r.forEach(showError),!1):!CAN_VALIDATE||e.checkValidity()}function initFormValidation(e){var t=e.querySelectorAll(INPUT_SELECTOR);Array.prototype.forEach.call(t,function(e){e.addEventListener("blur",handleInput),e.addEventListener("invalid",function(t){hideError(e),t.preventDefault();var r=isInRequiredGroup(e);if(r&&!testCheckboxGroup(r))return!1;return showError(e)})})}var ALERT_DEFAULT_ERROR_MESSAGE="Oops! Something went wrong. Please refresh and try again.";function buildErrorName(e){return"FORM_ERROR_".concat(e)}function findErrorsArray(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e.errors?e.errors:e._status?e._status.errors:(console.warn("Unable to resolve error for SubmissionError: ",e),[ALERT_DEFAULT_ERROR_MESSAGE])}function getErrorMessage(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.response||e.responseText||e;if("string"==typeof t)try{t=JSON.parse(t)}catch(e){return t}return t.message?t.message:findErrorsArray(t).map(function(e){return e.message}).join("\n")}var SubmissionError=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ALERT_DEFAULT_ERROR_MESSAGE,r=arguments.length>1?arguments[1]:void 0;_classCallCheck(this,e),this.message=getErrorMessage(t),this.originalObject=t,this.setErrorName(r)}return _createClass(e,[{key:"setErrorName",value:function(e){this.name=buildErrorName(e||generateUUID())}}]),e}();function parseError(e,t){return e instanceof SubmissionError?e:new SubmissionError(e,t)}function ownKeys$3(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function _objectSpread$3(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};
126t%2?ownKeys$3(Object(r),!0).forEach(function(t){_defineProperty(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys$3(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var _Array$prototype=Array.prototype,forEach$1=_Array$prototype.forEach,filter=_Array$prototype.filter,DEFAULTS={groupClassName:"js-form-group",requiredGroupClassName:"js-form-group-required",invalidClassName:"js-invalid",requiredClassName:"js-required",inputSelector:"input, select, textarea"},ERROR_CONTAINER=".error-prompt--invalid .error-description",ERROR_CLASS="is-invalid",LOADING_CLASS="is-loading",SUCCESS_CLASS="is-success",ENABLED_BUTTON_OPACITY="1",DISABLED_BUTTON_OPACITY="0.5",LOADING_ANIMATION_INTERVAL=600,SUCCESS_INTERVAL=1e3;function queryFromFormRoot(e,t){return e.parentElement.parentElement.parentElement.querySelector(t)}function parsePhoneNumber(e,t){var r="";if(!e||!e.replace(" ",""))return r;var n=e.replace(/[- ()]/g,"");return r=t?"".concat(t," ").concat(n):n}var Form=function(){function e(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};_classCallCheck(this,e),this.el=t,this.buttonEl=t.querySelector('button[type="submit"]'),this.helper=new FormHelper(t),initFormValidation(t),this.isEnabled=!0,this.options=_objectSpread$3(_objectSpread$3({},DEFAULTS),r),this.redirectParams={}}return _createClass(e,[{key:"getAttr",value:function(e){return this.el.getAttribute(e)||""}},{key:"removeAttr",value:function(e){return this.el.removeAttribute(e)}},{key:"setAttr",value:function(e,t){return this.el.setAttribute(e,t)}},{key:"setRedirectParam",value:function(e,t){this.redirectParams[e]=t}},{key:"isPayment",value:function(){return!!this.getAttr("data-lp-payments")}},{key:"addSubmitHandler",value:function(e){this.el.addEventListener("submit",e)}},{key:"enable",value:function(){this.buttonEl.removeAttribute("disabled"),this.buttonEl.style.opacity=ENABLED_BUTTON_OPACITY,this.buttonLoadingAnimation&&(window.clearTimeout(this.buttonLoadingAnimation),this.buttonLoadingAnimation=null),toggleClass(this.buttonEl,LOADING_CLASS,!1),toggleClass(this.buttonEl,SUCCESS_CLASS,!1),this.removeAttr("disabled"),this.isEnabled=!0}},{key:"disable",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.buttonEl.setAttribute("disabled",!0),this.buttonEl.style.opacity=DISABLED_BUTTON_OPACITY,t.skipLoadingMessage||(toggleClass(this.buttonEl,LOADING_CLASS,!0),this.buttonLoadingAnimation=window.setTimeout(function(){e.showSuccessCb&&e.showSuccessCb(),e.buttonLoadingAnimation=null},LOADING_ANIMATION_INTERVAL)),this.setAttr("disabled",!0),this.isEnabled=!1}},{key:"hide",value:function(){this.el.style.display="none"}},{key:"getErrorMessageContainer",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ERROR_CONTAINER;return this.el.querySelector(e)}},{key:"hideError",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ERROR_CONTAINER,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ERROR_CLASS,r=this.getErrorMessageContainer(e);toggleClass(this.el,t,!1),r.innerHTML=""}},{key:"handleError",value:function(e,t){var r=parseError(e,t);return this.displayError(r.message),this.enable(),r}},{key:"displayError",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ERROR_CONTAINER,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:ERROR_CLASS;if(e)try{this.hideError(),this.getErrorMessageContainer(t).innerHTML=e,toggleClass(this.el,r,!0)}catch(t){console.error("'displayError' failed to display error: ".concat(e)),console.error(t)}}},{key:"getPhoneNumberElements",value:function(){return this.el.querySelectorAll("[type=tel]")}},{key:"formatPhoneNumbers",value:function(){try{forEach$1.call(this.getPhoneNumberElements(),function(e){var t=e,r=queryFromFormRoot(t,"select"),n=queryFromFormRoot(t,".js-input-hidden-phone-number"),o=r?r.value:"",i=parsePhoneNumber(t.value,o);r&&n?(n.value=i,t.removeAttribute("name"),r.removeAttribute("name")):t.value=i})}catch(e){console.error("formatPhoneNumbers",e)}}},{key:"getSubmitUrl",value:function(){return this.getAttr("action")}},{key:"getBackupUrl",value:function(){return this.getAttr("data-backup-host")}},{key:"getThankYouUrl",value:function(){return this.getAttr("data-thank-you")}},{key:"getThankYouType",value:function(){return this.getAttr("data-thank-you-type")}},{key:"getThankYouGuid",value:function(){return this.getAttr("data-thank-you-guid")}},{key:"getRedirectUrl",value:function(){return buildRedirectUrl(this.getThankYouUrl(),this.redirectParams)}},{key:"getFormData",value:function(){var e=this.el.querySelectorAll(this.options.inputSelector);return filter.call(e,function(e){return shouldSerializeInput(e)}).map(function(e){return serializeInput(e)}).join("&")}},{key:"setCompleted",value:function(){var e=this,t=function(){toggleClass(e.buttonEl,LOADING_CLASS,!1),toggleClass(e.buttonEl,SUCCESS_CLASS,!0),window.setTimeout(function(){toggleClass(e.buttonEl,SUCCESS_CLASS,!1),e.showSuccessCb=null},SUCCESS_INTERVAL)};this.buttonLoadingAnimation?this.showSuccessCb=t:t()}},{key:"getSubmitButton",value:function(){return this.el.querySelector("button")}},{key:"isValid",value:function(){return this.isEnabled&&validateForm(this.el)}}]),e}(),ITEM_TYPE={SKU:"sku",PLAN:"plan",RECURRING:"recurring",ONE_TIME:"one_time"},UI_FIELD_TYPE={PRIMARY:"primary",ORDER_BUMP:"orderBump"},ZERO_DECIMAL_CURRENCIES=["BIF","CLP","DJF","GNF","JPY","KMF","KRW","LAK","PYG","RWF","UGX","VND","VUV","XAF","XOF","XPF"],Intervals={Day:"day",Week:"week",Month:"month",Year:"year"};function formatCurrency(e,t,r){var n=r;return n>0&&!ZERO_DECIMAL_CURRENCIES.includes(t.toUpperCase())&&(n/=100),new Intl.NumberFormat(e,{style:"currency",currency:t}).format(n)}function getPrice(e){return e.unit_amount||0===e.unit_amount?e.unit_amount:e.price||0===e.price?e.price:e.amount||0===e.amount?e.amount:null}function formatPrice(e){var t=getPrice(e);return null===t?e.formattedPrice:formatCurrency(navigator.language,e.currency,t)}function getSingleInterval(e,t){switch(t){case Intervals.Day:return e.Day;case Intervals.Week:return e.Week;case Intervals.Month:return e.Month;case Intervals.Year:return e.Year;default:return""}}function getMultiInterval(e,t,r){switch(t){case Intervals.Day:return e.EveryDay(r);case Intervals.Week:return e.EveryWeek(r);case Intervals.Month:return e.EveryMonth(r);case Intervals.Year:return e.EveryYear(r);default:return""}}function formatPriceSummary(e,t){var r=getCheckoutVerbiages(t),n=formatPrice(e);return e.type!==ITEM_TYPE.RECURRING&&e.type!==ITEM_TYPE.PLAN||(e.intervalCount>1?n+=" ".concat(getMultiInterval(r,e.interval,e.intervalCount)):n+=" / ".concat(getSingleInterval(r,e.interval))),n}var FONT_SCALE=[.5625,.625,.75,.875,1,1.125,1.3125,1.5,1.6875,1.875,2.0625,2.25,2.5,2.75,3,3.25,3.5,3.75],FONT_SCALE_MD=[.5625,.625,.75,.875,1,1.125,1.3125,1.5,1.75,2,2.375,2.75,3.125,3.5,3.875,4.25,4.625,5],FONT_SCALE_LG=[.625,.75,.875,1,1.125,1.25,1.5,1.75,2,2.5,3,3.5,4,4.5,5,5.5,6,6.5],BREAK_SM=480,BREAK_MD=768,PAGE_BASE_FONT=16,getFontScale=function(e){return e<BREAK_SM?FONT_SCALE:e>=BREAK_SM&&e<BREAK_MD?FONT_SCALE_MD:FONT_SCALE_LG},determineFontSize=function(e,t){var r=getFontScale(t);return null==r?void 0:r[e-1]},fontSizeInPx=function(e,t){var r=determineFontSize(e,t);return"".concat(r*PAGE_BASE_FONT,"px")},INPUT_FONT_COLOR="#020020",INPUT_INVALID="#fa3246",INPUT_PLACEHOLDER_COLOR="#767676",INVALID_CARD_STYLES={color:"inherit",iconColor:INPUT_INVALID},getStylesFromOptions=function(e){var t=e.fontFamily,r=e.fontSize,n=e.isBold,o=e.isItalic,i=e.isUnderline,a=e.labelPosition,s=e.labels;return{fontFamily:t,fontSize:fontSizeInPx(r,window.innerWidth),fontStyle:o?"italic":"normal",fontWeight:n?700:400,textDecoration:i?"underline":"none",color:INPUT_FONT_COLOR,fontSmoothing:"antialiased",iconColor:INPUT_PLACEHOLDER_COLOR,"::placeholder":{color:"Inside"===a?s||INPUT_FONT_COLOR:INPUT_PLACEHOLDER_COLOR,fontSize:"1em"}}},STRIPE_INVALID_CLASS="js-stripe-invalid",Stripe=function(){function e(t){var r=t.formEl,n=t.publicKey,o=void 0===n?"TEST":n,i=t.fonts,a=t.handleCardFocus,s=t.language,u=void 0===s?widgetLanguages.English:s;if(_classCallCheck(this,e),!window.Stripe)throw Error("Stripe not loaded.");this.inputEl=r.querySelector("[data-lp-payments=".concat(BILLING_FIELD,"]")),this.errorEl=r.querySelector("[data-lp-payments-error]"),this.formControlEl=this.inputEl.parentElement&&this.inputEl.parentElement.parentElement,this.fonts=i||[this.inputEl.getAttribute("data-font-url")],this.stripe=window.Stripe(o,{locale:u}),this.hasPublicKey="TEST"!==o,this.handleCardFocus=a,this.init()}return _createClass(e,[{key:"setupResizeListener",value:function(){var e,t=this,r=function(){var e=fontSizeInPx(t.options.fontSize,window.innerWidth);t.updateCard({fontSize:e})};window.addEventListener("resize",function(){clearTimeout(e),e=setTimeout(r,250)})}},{key:"setupValidation",value:function(){var e=this;this.formControlEl&&(this.card.addEventListener("change",function(t){var r=t.error;
126r?(e.formControlEl.classList.add(STRIPE_INVALID_CLASS),e.errorEl.textContent=r.message):(e.formControlEl.classList.remove(STRIPE_INVALID_CLASS),e.errorEl.textContent="")}),this.handleCardFocus&&this.card.addEventListener("focus",function(){e.handleCardFocus()}))}},{key:"init",value:function(){this.options={fontFamily:this.inputEl.getAttribute("data-font-family")||"",fontSize:this.inputEl.getAttribute("data-font-size"),isBold:this.inputEl.getAttribute("data-is-bold"),isItalic:this.inputEl.getAttribute("data-is-italic"),isUnderline:this.inputEl.getAttribute("data-is-underline"),labelPosition:this.inputEl.getAttribute("data-label-position"),labels:this.inputEl.getAttribute("data-labels")};var e=this.fonts.map(function(e){return{cssSrc:e}});this.elements=this.stripe.elements({fonts:e}),this.card=this.elements.create("card",{style:{base:getStylesFromOptions(this.options),invalid:INVALID_CARD_STYLES}}),this.card.mount(this.inputEl),this.setupResizeListener(),this.setupValidation()}},{key:"updateCardStyles",value:function(e){this.options=e,this.updateCard(getStylesFromOptions(e))}},{key:"updateCard",value:function(e){this.card.update({style:{base:e}})}},{key:"createPaymentMethod",value:function(e){return this.stripe.createPaymentMethod("card",this.card,{billing_details:e})}},{key:"handleCardPayment",value:function(e,t){return this.stripe.handleCardPayment(e,this.card,{payment_method_data:{billing_details:t}})}}]),e}(),classNames={applied:"coupon-applied",applyButton:"apply-coupon-button",entered:"coupon-entered",error:"coupon-error",removeButton:"remove-coupon-button"},CouponAdapter=function(){function e(t,r){_classCallCheck(this,e),this.form=t,this.formGroup=r,this.enabled=!1,this.enableCoupon=this.enableCoupon.bind(this),this.toggleCouponEntered=this.toggleCouponEntered.bind(this),this.handleClickApply=this.handleClickApply.bind(this),this.handleClickRemove=this.handleClickRemove.bind(this),this.setupCoupon()}return _createClass(e,[{key:"fetchCoupon",value:function(e){return new Promise(function(t){return setTimeout(function(){t({valid:""!==e&&"invalid"!==e})},1e3)})}},{key:"toggleCouponEntered",value:function(e){var t=e.target.value;toggleClass(this.formGroup,classNames.entered,""!==t),this.formGroup.classList.remove(this.form.options.invalidClassName)}},{key:"enableCoupon",value:function(e){this.applyButton.classList.remove("is-loading"),this.form.enable(),this.data=e,this.enabled=e.valid,toggleClass(this.formGroup,this.form.options.invalidClassName,!e.valid),toggleClass(this.formGroup,classNames.applied,e.valid),e.valid&&(this.appliedCouponCode.textContent=this.input.value,this.appliedCouponCode.setAttribute("title",this.input.value))}},{key:"handleClickApply",value:function(){var e=this;this.applyButton.classList.add("is-loading"),this.form.disable({skipLoadingMessage:!0}),this.fetchCoupon(this.input.value).then(this.enableCoupon).catch(function(t){e.applyButton.classList.remove("is-loading"),e.form.enable(),e.form.handleError(t,"coupon-error")})}},{key:"handleClickRemove",value:function(){this.couponData=null,this.couponEnabled=!1,this.appliedCouponCode.textContent="",this.appliedCouponCode.setAttribute("title",""),this.formGroup.classList.remove(classNames.applied)}},{key:"setupCoupon",value:function(){this.input=this.formGroup.querySelector('input[name="coupon-field"]'),this.input.addEventListener("keyup",this.toggleCouponEntered),this.appliedCouponCode=this.formGroup.querySelector("[".concat(DATA_ATTRS.COUPON_CODE,"]"));var e=this.formGroup.querySelector(".".concat(classNames.applyButton));e&&(this.applyButton=e,e.addEventListener("click",this.handleClickApply));var t=this.formGroup.querySelector(".".concat(classNames.removeButton));t&&t.addEventListener("click",this.handleClickRemove)}}]),e}();function ownKeys$4(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function _objectSpread$4(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};
126t%2?ownKeys$4(Object(r),!0).forEach(function(t){_defineProperty(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys$4(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var SHIPPING_INPUT_CONTAINER="[data-lp-payments=".concat(SHIPPING_FIELD_CONTAINER,"]"),EMAIL_INPUT='input[type="email"]',FORM_ERRORS={PURCHASE_VERIFICATION:"purchaseVerification",PAYMENT_ERROR:"payment-error"},TRANSACTION_STATES={ERROR:"error",COMPLETE:"complete",ACTION_REQUIRED:"action_required"},POLL_TIMER=2e3,PREVIEW_ERROR='This form has not been set up yet. Connect a Stripe product to this form or visit our <a target="_blank" href="https://support.leadpages.net/hc/en-us/articles/115007085728-Checkouts-overview">Checkouts Overview</a> for more information.',PREVIEW__ERROR_CONTAINER=".error-prompt--info .error-title",PREVIEW_ERROR_CLASS="has-info",DETAIL_NOT_FOUND_ERROR="There was a problem verifying this product.",DISABLED_CONTAINER=".error-prompt--disabled .error-title",DISABLED_CLASS="is-disabled",PaymentAdapter=function(){function e(t,r){var n=this,o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];_classCallCheck(this,e),this.time=Date.now(),this.form=t,this.submissionCallback=r,this.previewMode=o,this.lpEnv=this.form.getAttr(DATA_ATTRS.LP_ENV),this.isSecure=checkForSSL(),this.language=this.form.el.getAttribute("data-lp-language")||"en",this.verbiages=getCheckoutVerbiages(this.language);var i="development"===this.lpEnv||"docker"===this.lpEnv;this.isSecure||i?(this.form.addSubmitHandler(function(e){return n.handleSubmit(e)}),this.fetchHeaders={"Content-Type":"application/json","LP-TRANSACTION-TOKEN":this.form.getAttr(DATA_ATTRS.LP_TRANSACTION_TOKEN)},this.form.disable({skipLoadingMessage:!0}),this.lineItem=null,this.pollCount=0,this.transactionsUri="".concat(this.form.getAttr(DATA_ATTRS.API_URI),"/atm/v1"),this.setupForm()):this.form.hide()}return _createClass(e,[{key:"setupForm",value:function(){var e=this;return this.fetchDetail().then(function(t){return e.setupFormForDetail(t)}).catch(function(){e.stripe=new Stripe({formEl:e.form.el,publicKey:"TEST",language:e.language}),e.previewMode?e.form.displayError(PREVIEW_ERROR,PREVIEW__ERROR_CONTAINER,PREVIEW_ERROR_CLASS):e.form.displayError(DETAIL_NOT_FOUND_ERROR,DISABLED_CONTAINER,DISABLED_CLASS)})}},{key:"setupFormForDetail",value:function(e){this.setFormPaymentInfo(e),this.stripe=new Stripe({formEl:this.form.el,publicKey:e.stripePublicKey,handleCardFocus:this.form.hideError.bind(this.form),language:this.language})}},{key:"setFormPaymentInfo",value:function(e){var t=this;this.lineItem=e.lineItems[0],this.form.setAttr(DATA_ATTRS.PRICE,this.lineItem.decimalPrice),this.form.setAttr(DATA_ATTRS.TRANSACTION_NAME,e.name);var r=this.form.el.querySelector("[".concat(DATA_ATTRS.TOTAL_PRICE,"]"));r&&(r.textContent=formatPrice(this.lineItem)),e.lineItems.forEach(function(e){var r=t.form.el.querySelectorAll("[".concat(DATA_ATTRS.SKU_FORMATTED_PRICE,'="').concat(e.id,'"]'));Array.prototype.forEach.call(r,function(r){r.textContent=formatPriceSummary(e,t.language)})}),this.needsShipping=e.shippable||!!this.lineItem.shippable,this.needsShipping?this.setupShippingFields(e.customerToken&&e.customerToken.fields):this.removeShippingFields();var n=this.form.el.querySelector("[".concat(DATA_ATTRS.ORDER_BUMP_ID,"]"));if(this.orderBumpEnabled=!1,n){var o=n.dataset.orderBumpId;this.orderBump=e.lineItems.find(function(e){return e.id===o});var i=n.querySelector(".lp-form-react__checkbox-label");i&&(i.textContent="".concat(this.verbiages.OrderBump.CheckboxLabel(this.orderBump.productName)," ").concat(formatPrice(this.orderBump)));var a={currency:this.lineItem.currency,price:getPrice(this.lineItem)+getPrice(this.orderBump)},s=n.querySelector('input[type="checkbox"]'),u=this.form.el.querySelector("[".concat(DATA_ATTRS.PRODUCT_ID,'="').concat(o,'"][').concat(DATA_ATTRS.PRODUCT_FIELD_TYPE,'="').concat(UI_FIELD_TYPE.ORDER_BUMP,'"]'));s.addEventListener("change",function(e){t.orderBumpEnabled=e.target.checked,r.textContent=e.target.checked?formatPrice(a):formatPrice(t.lineItem),u&&toggleClass(u,"hidden",!t.orderBumpEnabled)})}var l=this.form.el.querySelector(".lp-form-react__coupon-field");l&&(this.coupon=new CouponAdapter(this.form,l)),e.isEnabled?this.form.enable():this.form.displayError(e.disabledMessage,DISABLED_CONTAINER,DISABLED_CLASS)}},{key:"removeShippingFields",value:function(){var e=this.form.el.querySelector(SHIPPING_INPUT_CONTAINER);e&&e.parentElement&&e.parentElement.removeChild(e)}},{key:"setupShippingFields",value:function(){var e=this,t=this.form.el.querySelector(SHIPPING_INPUT_CONTAINER);t&&(this.hasShippingFields=!0,Object.keys(SHIPPING_INPUT_MAP).map(function(t){var r=e.form.el.querySelector(SHIPPING_INPUT_MAP[t]);r.hasAttribute(DATA_ATTRS.SHIPPING_REQUIRED)?r.setAttribute("required","true"):r.removeAttribute("required")}),this.form.helper.setupShippingFieldLabels(),t.style.display="block")}},{key:"fetchDetail",value:function(){return fetch("".concat(this.transactionsUri,"/detail
126s/").concat(this.form.getAttr(DATA_ATTRS.DETAIL_UUID)),{headers:this.fetchHeaders})}},{key:"handleSubmit",value:function(e){return e&&e.preventDefault(),!!this.form.isValid()&&(this.form.disable(),this.submit())}},{key:"submit",value:function(){var e=this;return this.previewMode?this.submissionCallback():this.createPaymentMethod().then(function(t){return e.postTransaction(t)}).then(function(t){return e.pollTransaction(t)}).catch(function(t){throw e.form.handleError(t,FORM_ERRORS.PAYMENT_ERROR)}).then(this.submissionCallback)}},{key:"serializeShippingData",value:function(){var e=this.form.el;return Object.keys(SHIPPING_INPUT_MAP).reduce(function(t,r){var n=queryForElementValue(e,SHIPPING_INPUT_MAP[r]);return _objectSpread$4(_objectSpread$4({},t),{},_defineProperty({},r,n))},{})}},{key:"getPaymentData",value:function(){return{detailToken:this.form.getAttr(DATA_ATTRS.DETAIL_TOKEN),pageUuid:this.form.getAttr(DATA_ATTRS.PAGE_ID),patronEmail:queryForElementValue(this.form.el,EMAIL_INPUT)}}},{key:"setBillingDetails",value:function(){var e={email:queryForElementValue(this.form.el,EMAIL_INPUT)};if(this.needsShipping){var t=this.serializeShippingData();e.address={city:t.city,country:t.country,line1:t.line1,line2:t.line2,postal_code:t.postal_code,state:t.state},e.name=t.name}this.billingDetails=e,this.stripeBillingDetails=this.hasShippingFields?this.billingDetails:{email:e.email}}},{key:"createPaymentMethod",value:function(){var e=this;return this.setBillingDetails(),new es6Promise(function(t,r){e.stripe.createPaymentMethod(e.stripeBillingDetails).then(function(e){e.error?r(e.error):t({paymentMethodId:e.paymentMethod.id})})})}},{key:"postTransaction",value:function(e){var t=e.paymentMethodId,r=_objectSpread$4(_objectSpread$4({},this.getPaymentData()),{},{paymentMethodId:t,lineItems:[{type:this.lineItem.type,id:this.lineItem.id,price:this.lineItem.price}]});return this.orderBump&&this.orderBumpEnabled&&r.lineItems.push({type:this.orderBump.type,id:this.orderBump.id,price:this.orderBump.price}),this.billingDetails.address&&(r.shipping=_objectSpread$4(_objectSpread$4({},this.billingDetails.address),{},{zip:this.billingDetails.address.postal_code}),delete r.shipping.postal_code,r.shipping.name=this.billingDetails.name),this.pollCount=0,fetch("".concat(this.transactionsUri,"/transactions"),{method:"POST",headers:this.fetchHeaders,body:JSON.stringify(r)})}},{key:"getTransaction",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e._meta&&e._meta.id;return fetch("".concat(this.transactionsUri,"/transactions/").concat(t),{headers:this.fetchHeaders})}},{key:"pollTransaction",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.pollCount+=1,new es6Promise(function(r,n){t&&t.state!==TRANSACTION_STATES.ERROR?t.state===TRANSACTION_STATES.COMPLETE?r(t):t.state===TRANSACTION_STATES.ACTION_REQUIRED?e.stripe.handleCardPayment(t.paymentIntentClientSecret,e.stripeBillingDetails).then(function(e){var t=e.error,o=e.paymentIntent;t?n(t):r(o)}):window.setTimeout(function(){e.getTransaction(t).then(function(t){return r(e.pollTransaction(t))})},POLL_TIMER):n(t||"no transaction found")})}}]),e}(),TrackingAdapter=function(){function e(t,r,n){_classCallCheck(this,e),this.form=t,this.meta=r,this.payment=n}return _createClass(e,[{key:"track",value:function(){this.meta.email=queryForElementValue(this.form.el,'[type="email"]');var e=document.querySelector('meta[name="active-route"]');return this.meta.customId=e&&e.content?"site-".concat(this.meta.id,":").concat(e.content):null,es6Promise.all([this.loadTrackingPixel(),this.loadCenterTracking()]).catch(function(e){return console.error("tracking pixel failure: ",e)})}},{key:"loadTrackingPixel",value:function(){var e=this,t=this.form.getAttr("data-form-id");return this.meta.serving_domain&&t?new es6Promise(function(r){var n=createElement("img");n.addEventListener("load",function(e){return r(e)}),n.addEventListener("error",function(e){return r(e)}),n.src=e.getTrackingPixelUrl(t)}):es6Promise.resolve()}},{key:"getTrackingPixelUrl",value:function(e){return addQueriesToUrl("".concat(this.meta.serving_domain,"/forms/pixel/").concat(e,"/"),this.meta)}},{key:"loadCenterTracking",value:function(){var e=this;return window.center&&window.center.loaded?this.getCenterIdentity().then(function(){return e.sendCenterEvent()}):es6Promise.resolve()}}
126,{key:"getCenterIdentity",value:function(){return new es6Promise(function(e){window.center("get","identity",function(t){return e(t)})})}},{key:"sendCenterEvent",value:function(){var e=this;return new es6Promise(function(t){var r=queryForElementValue(e.form.el,'input[name="confirm-existence"]')?"spam-conversion":"conversion",n={callback:function(){return t()}};e.meta.customId&&(n.customId=e.meta.customId),window.center("send",r,null,null,null,n)})}}]),e}();function ownKeys$5(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function _objectSpread$5(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys$5(Object(r),!0).forEach(function(t){_defineProperty(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys$5(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var RECAPTCHA_V2_COMPACT_VW=460,forEach$2=Array.prototype.forEach;function waitForGrecaptcha(){return new es6Promise(function(e){window.grecaptcha&&window.grecaptcha.render?window.grecaptcha.ready(function(){return e()}):setTimeout(function(){return e(waitForGrecaptcha())},200)})}var Submission=function(){function e(t){var r=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};_classCallCheck(this,e),this.time=Date.now(),this.form=new Form(t),this.meta=_objectSpread$5({},n),this.submissionUuid=generateUUID(),this.submissionToken=window.sup.rt||"",this.payment=null,this.previewMode=-1!==window.location.pathname.indexOf("preview.html"),window.sup&&"function"==typeof window.sup.initFormValidation&&window.sup.initFormValidation(t),this.form.isPayment()?this.payment=new PaymentAdapter(this.form,function(){return r.submit()},this.previewMode):this.form.addSubmitHandler(function(e){return r.handleSubmit(e)}),this.initRecaptcha()}return _createClass(e,[{key:"initRecaptcha",value:function(){var e=this;this.reCaptchaEle=this.form.el.querySelector(".lp-g-recaptcha"),this.reCaptchaEle&&(this.isRecaptcha=!0,waitForGrecaptcha().then(function(){var t,r={callback:e.handleReCaptchaUpdate.bind(e)};try{t=window.top.innerWidth}catch(e){t=window.outerWidth}t<RECAPTCHA_V2_COMPACT_VW&&(r.size="compact"),e.grecaptcha=window.grecaptcha.render(e.reCaptchaEle,r)}))}},{key:"handleReCaptchaUpdate",value:function(e){""===e?this.showCaptchaError():this.removeCaptchaError()}},{key:"handleSubmit",value:function(e){return e&&e.preventDefault(),!!this.form.isValid()&&(this.isRecaptcha&&""===window.grecaptcha.getResponse(this.grecaptcha)?(this.showCaptchaError(),!1):(this.form.disable(),this.addSpamInput(),this.submit()))}},{key:"removeCaptchaError",value:function(){this.reCaptchaEle&&this.reCaptchaEle.parentElement.classList.remove("js-required")}},{key:"showCaptchaError",value:function(){this.reCaptchaEle&&this.reCaptchaEle.parentElement.classList.add("js-required")}},{key:"addSpamInput",value:function(){var e=Date.now();if(this.form.el&&!this.form.el.querySelector('input[name="lp_spam_t"]')){var t=document.createElement("input");t.setAttribute("name","lp_spam_t"),t.setAttribute("type","hidden"),t.value=e-this.time,this.form.el.appendChild(t)}}},{key:"submit",value:function(){var e=this;return this.previewMode?this.completeSubmission():(this.addSpamInput(),this.preSubmission().then(function(){return e.sendSubmission()}).then(function(){return e.trackSubmission()}).then(function(){return e.completeSubmission()}).catch(function(e){return console.error("submission:submit failure",e)}))}},{key:"preSubmission",value:function(){return this.form.formatPhoneNumbers(),es6Promise.resolve()}},{key:"trackSubmission",value:function(){return new TrackingAdapter(this.form,this.meta,this.payment).track()}},{key:"sendSubmission",value:function(){var e=this,t=addQueriesToUrl(this.form.getSubmitUrl(),{skip_redirect:!0});return this.postSubmit(t).catch(function(r){if(422===(null==r?void 0:r.status))throw e.form.handleError();return e.postSubmit(e.getBackupUrl(t))})}},{key:"getBackupUrl",value:function(e){var t=e.split("/").splice(3).join("/"),r=this.form.getBackupUrl();return"".concat(r,"/").concat(t)}},{key:"postSubmit",value:function(e){return fetch(e,{method:"POST",headers:{"Content-type":"application/x-www-form-urlencoded","x-submission-id":this.submissionUuid,"x-submission-token":this.submissionToken,"x-submission-source":this.meta.serving_tags},body:this.form.getFormData()})}},{key:"completeSubmission",value:function(){this.form.setCompleted();var e=this.findCloseButtons();forEach$2.call(e,function(e){return e.click()});var t=this.form.getRedirectUrl();t&&this.redirectTo(t)}},{key:"findCloseButtons",value:function(){return document.querySelectorAll(".js-close")}},{key:"redirectTo",value:function(e){this.form.getThankYouType()===linkTypes.SITE_ROUTE?window.top.postMessage({type:"NAVIGATE_TO_ROUTE",url:e,id:this.form.getThankYouGuid()},"*"):window.top.location.href=e}}]),e}(),map=Array.prototype.map;function initSubmission(e){var t=gatherMetaData();return map.call(e,function(e){return new Submission(e,t)})}function initFunc(){window.sup=window.sup||{};var e=document.querySelectorAll('form[data-form-version="1"]');window.sup.forms=initSubmission(e)}exports.default=initFunc,exports.initSubmission=initSubmission;;var i=module.exports.default||module.exports;return typeof i==="function"?i.apply(null, arguments):void 0;}());</script>
vendor: 1 bytes, line 126
126
127<script type="text/javascript" data-scriptname="POPPER">(function(){var exports={};var module={exports: exports};"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function unwrapExports(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function createCommonjsModule(e,t){return e(t={exports:{}},t.exports),t.exports}var popper_min=createCommonjsModule(function(e,t){!function(e){function t(e){return{width:(e=e.getBoundingClientRect()).width,height:e.height,top:e.top,right:e.right,bottom:e.bottom,left:e.left,x:e.left,y:e.top}}function r(e){return"[object Window]"!==e.toString()?(e=e.ownerDocument)?e.defaultView:window:e}function n(e){return{scrollLeft:(e=r(e)).pageXOffset,scrollTop:e.pageYOffset}}function o(e){return e instanceof r(e).Element||e instanceof Element}function i(e){return e instanceof r(e).HTMLElement||e instanceof HTMLElement}function a(e){return e?(e.nodeName||"").toLowerCase():null}function s(e){return(o(e)?e.ownerDocument:e.document).documentElement}function f(e){return t(s(e)).left+n(e).scrollLeft}function p(e,o,p){void 0===p&&(p=!1),e=t(e);var c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return p||("body"!==a(o)&&(c=o!==r(o)&&i(o)?{scrollLeft:o.scrollLeft,scrollTop:o.scrollTop}:n(o)),i(o)?((u=t(o)).x+=o.clientLeft,u.y+=o.clientTop):(o=s(o))&&(u.x=f(o))),{x:e.left+c.scrollLeft-u.x,y:e.top+c.scrollTop-u.y,width:e.width,height:e.height}}function c(e){return{x:e.offsetLeft,y:e.offsetTop,width:e.offsetWidth,height:e.offsetHeight}}function u(e){return"html"===a(e)?e:e.parentNode||e.host||document.ownerDocument||document.documentElement}function d(e){return r(e).getComputedStyle(e)}function l(e,t){void 0===t&&(t=[]);var n=function e(t){if(0<=["html","body","#document"].indexOf(a(t)))return t.ownerDocument.body;if(i(t)){var r=d(t);if(/auto|scroll|overlay|hidden/.test(r.overflow+r.overflowY+r.overflowX))return t}return e(u(t))}(e);return n=(e="body"===a(n))?r(n):n,t=t.concat(n),e?t:t.concat(l(u(n)))}function m(e){var t;return!i(e)||!(t=e.offsetParent)||void 0!==window.InstallTrigger&&"fixed"===d(t).position?null:t}function h(e){var t=r(e);for(e=m(e);e&&0<=["table","td","th"].indexOf(a(e));)e=m(e);return e&&"body"===a(e)&&"static"===d(e).position?t:e||t}function v(e){var t;return function(){return t||(t=new Promise(function(r){Promise.resolve().then(function(){t=void 0,r(e())})})),t}}function g(e){return e.split("-")[0]}function b(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return!t.some(function(e){return!(e&&"function"==typeof e.getBoundingClientRect)})}function y(e){void 0===e&&(e={});var t=e.defaultModifiers,r=void 0===t?[]:t,n=void 0===(e=e.defaultOptions)?C:e;return function(e,t,i){function a(){f.forEach(function(e){return e()}),f=[]}void 0===i&&(i=n);var s={placement:"bottom",orderedModifiers:[],options:Object.assign({},C,{},n),modifiersData:{},elements:{reference:e,popper:t},attributes:{},styles:{}},f=[],u=!1,d={state:s,setOptions:function(i){return a(),s.options=Object.assign({},n,{},s.options,{},i),s.scrollParents={reference:o(e)?l(e):[],popper:l(t)},i=function(e){var t=function(e){var t=new Map,r=new Set,n=[];return e.forEach(function(e){t.set(e.name,e)}),e.forEach(function(e){r.has(e.name)||function e(o){r.add(o.name),[].concat(o.requires||[],o.requiresIfExists||[]).forEach(function(n){r.has(n)||(n=t.get(n))&&e(n)}),n.push(o)}(e)}),n}(e);return A.reduce(function(e,r){return e.concat(t.filter(function(e){return e.phase===r}))},[])}(function(e){var t=e.reduce(function(e,t){var r=e[t.name];return e[t.name]=r?Object.assign({},r,{},t,{options:Object.assign({},r.options,{},t.options),data:Object.assign({},r.data,{},t.data)}):t,e},{});return Object.keys(t).map(function(e){return t[e]})}([].concat(r,s.options.modifiers))),s.orderedModifiers=i.filter(function(e){return e.enabled}),s.orderedModifiers.forEach(function(e){var t=e.name,r=e.options;r=void 0===r?{}:r,"function"==typeof(e=e.effect)&&(t=e({state:s,name:t,instance:d,options:r}),f.push(t||function(){}))}),d.update()}
127,forceUpdate:function(){if(!u){var e=s.elements,t=e.reference;if(b(t,e=e.popper))for(s.rects={reference:p(t,h(e),"fixed"===s.options.strategy),popper:c(e)},s.reset=!1,s.placement=s.options.placement,s.orderedModifiers.forEach(function(e){return s.modifiersData[e.name]=Object.assign({},e.data)}),t=0;t<s.orderedModifiers.length;t++)if(!0===s.reset)s.reset=!1,t=-1;else{var r=s.orderedModifiers[t];e=r.fn;var n=r.options;n=void 0===n?{}:n,r=r.name,"function"==typeof e&&(s=e({state:s,options:n,name:r,instance:d})||s)}}},update:v(function(){return new Promise(function(e){d.forceUpdate(),e(s)})}),destroy:function(){a(),u=!0}};return b(e,t)?(d.setOptions(i).then(function(e){!u&&i.onFirstUpdate&&i.onFirstUpdate(e)}),d):d}}function w(e){return 0<=["top","bottom"].indexOf(e)?"x":"y"}function x(e){var t=e.reference,r=e.element,n=(e=e.placement)?g(e):null;e=e?e.split("-")[1]:null;var o=t.x+t.width/2-r.width/2,i=t.y+t.height/2-r.height/2;switch(n){case"top":o={x:o,y:t.y-r.height};break;case"bottom":o={x:o,y:t.y+t.height};break;case"right":o={x:t.x+t.width,y:i};break;case"left":o={x:t.x-r.width,y:i};break;default:o={x:t.x,y:t.y}}if(null!=(n=n?w(n):null))switch(i="y"===n?"height":"width",e){case"start":o[n]=Math.floor(o[n])-Math.floor(t[i]/2-r[i]/2);break;case"end":o[n]=Math.floor(o[n])+Math.ceil(t[i]/2-r[i]/2)}return o}function O(e){var t,n=e.popper,o=e.popperRect,i=e.placement,a=e.offsets,f=e.position,p=e.gpuAcceleration,c=e.adaptive,u=window.devicePixelRatio||1;e=Math.round(a.x*u)/u||0,u=Math.round(a.y*u)/u||0;var d=a.hasOwnProperty("x");a=a.hasOwnProperty("y");var l,m="left",v="top",g=window;if(c){var b=h(n);b===r(n)&&(b=s(n)),"top"===i&&(v="bottom",u-=b.clientHeight-o.height,u*=p?1:-1),"left"===i&&(m="right",e-=b.clientWidth-o.width,e*=p?1:-1)}return n=Object.assign({position:f},c&&S),p?Object.assign({},n,((l={})[v]=a?"0":"",l[m]=d?"0":"",l.transform=2>(g.devicePixelRatio||1)?"translate("+e+"px, "+u+"px)":"translate3d("+e+"px, "+u+"px, 0)",l)):Object.assign({},n,((t={})[v]=a?u+"px":"",t[m]=d?e+"px":"",t.transform="",t))}function M(e){return e.replace(/left|right|bottom|top/g,function(e){return I[e]})}function j(e){return e.replace(/start|end/g,function(e){return N[e]})}function E(e,t){var r=!(!t.getRootNode||!t.getRootNode().host);if(e.contains(t))return!0;if(r)do{if(t&&e.isSameNode(t))return!0;t=t.parentNode||t.host}while(t);return!1}function D(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function P(e,o){if("viewport"===o)e=D({width:(e=r(e)).innerWidth,height:e.innerHeight,x:0,y:0});else if(i(o))e=t(o);else{var a=s(e);e=r(a),o=n(a),(a=p(s(a),e)).height=Math.max(a.height,e.innerHeight),a.width=Math.max(a.width,e.innerWidth),a.x=-o.scrollLeft,a.y=-o.scrollTop,e=D(a)}return e}function L(e,t,n){return t="clippingParents"===t?function(e){var t=l(e),r=0<=["absolute","fixed"].indexOf(d(e).position)&&i(e)?h(e):e;return o(r)?t.filter(function(e){return o(e)&&E(e,r)}):[]}(e):[].concat(t),(n=(n=[].concat(t,[n])).reduce(function(t,n){var o=P(e,n),p=r(n=i(n)?n:s(e)),c=i(n)?d(n):{};parseFloat(c.borderTopWidth);var u=parseFloat(c.borderRightWidth)||0,l=parseFloat(c.borderBottomWidth)||0,m=parseFloat(c.borderLeftWidth)||0;c="html"===a(n);var h=f(n),v=n.clientWidth+u,g=n.clientHeight+l;return c&&50<p.innerHeight-n.clientHeight&&(g=p.innerHeight-l),l=c?0:n.clientTop,u=n.clientLeft>m?u:c?p.innerWidth-v-h:n.offsetWidth-v,p=c?p.innerHeight-g:n.offsetHeight-g,n=c?h:n.clientLeft,t.top=Math.max(o.top+l,t.top),t.right=Math.min(o.right-u,t.right),t.bottom=Math.min(o.bottom-p,t.bottom),t.left=Math.max(o.left+n,t.left),t},P(e,n[0]))).width=n.right-n.left,n.height=n.bottom-n.top,n.x=n.left,n.y=n.top,n}function k(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},{},e)}function B(e,t){return t.reduce(function(t,r){return t[r]=e,t},{})}function T(e,r){void 0===r&&(r={});var n=r;r=void 0===(r=n.placement)?e.placement:r;var i=n.boundary,a=void 0===i?"clippingParents":i,f=void 0===(i=n.rootBoundary)?"viewport":i;i=void 0===(i=n.elementContext)?"popper":i;var p=n.altBoundary,c=void 0!==p&&p;n=k("number"!=typeof(n=void 0===(n=n.padding)?0:n)?n:B(n,R));var u=e.elements.reference;p=e.rects.popper,a=L(o(c=e.elements[c?"popper"===i?"reference":"popper":i])?c:s(e.elements.popper),a,f),c=x({reference:f=t(u),element:p,strategy:"absolute",placement:r}),p=D(Object.assign({},p,{},c)),f="popper"===i?p:f;
127var d={top:a.top-f.top+n.top,bottom:f.bottom-a.bottom+n.bottom,left:a.left-f.left+n.left,right:f.right-a.right+n.right};if(e=e.modifiersData.offset,"popper"===i&&e){var l=e[r];Object.keys(d).forEach(function(e){var t=0<=["right","bottom"].indexOf(e)?1:-1,r=0<=["top","bottom"].indexOf(e)?"y":"x";d[e]+=l[r]*t})}return d}function W(e,t,r){return void 0===r&&(r={x:0,y:0}),{top:e.top-t.height-r.y,right:e.right-t.width+r.x,bottom:e.bottom-t.height+r.y,left:e.left-t.width-r.x}}function H(e){return["top","right","bottom","left"].some(function(t){return 0<=e[t]})}var R=["top","bottom","right","left"],_=R.reduce(function(e,t){return e.concat([t+"-start",t+"-end"])},[]),q=[].concat(R,["auto"]).reduce(function(e,t){return e.concat([t,t+"-start",t+"-end"])},[]),A="beforeRead read afterRead beforeMain main afterMain beforeWrite write afterWrite".split(" "),C={placement:"bottom",modifiers:[],strategy:"absolute"},F={passive:!0},S={top:"auto",right:"auto",bottom:"auto",left:"auto"},I={left:"right",right:"left",bottom:"top",top:"bottom"},N={start:"end",end:"start"},U=[{name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,o=(e=e.options).scroll,i=void 0===o||o,a=void 0===(e=e.resize)||e,s=r(t.elements.popper),f=[].concat(t.scrollParents.reference,t.scrollParents.popper);return i&&f.forEach(function(e){e.addEventListener("scroll",n.update,F)}),a&&s.addEventListener("resize",n.update,F),function(){i&&f.forEach(function(e){e.removeEventListener("scroll",n.update,F)}),a&&s.removeEventListener("resize",n.update,F)}},data:{}},{name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state;t.modifiersData[e.name]=x({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},{name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,r=e.options;e=void 0===(e=r.gpuAcceleration)||e,r=void 0===(r=r.adaptive)||r,e={placement:g(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:e},t.styles.popper=Object.assign({},t.styles.popper,{},O(Object.assign({},e,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:r}))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,{},O(Object.assign({},e,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},{name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach(function(e){var r=t.styles[e]||{},n=t.attributes[e]||{},o=t.elements[e];i(o)&&a(o)&&(Object.assign(o.style,r),Object.keys(n).forEach(function(e){var t=n[e];!1===t?o.removeAttribute(e):o.setAttribute(e,!0===t?"":t)}))})},effect:function(e){var t=e.state,r={popper:{position:"absolute",left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,r.popper),t.elements.arrow&&Object.assign(t.elements.arrow.style,r.arrow),function(){Object.keys(t.elements).forEach(function(e){var n=t.elements[e],o=t.attributes[e]||{};e=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:r[e]).reduce(function(e,t){return e[t]="",e},{}),i(n)&&a(n)&&(Object.assign(n.style,e),Object.keys(o).forEach(function(e){n.removeAttribute(e)}))})}},requires:["computeStyles"]},{name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,r=e.name,n=void 0===(e=e.options.offset)?[0,0]:e,o=(e=q.reduce(function(e,r){var o=t.rects,i=g(r),a=0<=["left","top"].indexOf(i)?-1:1,s="function"==typeof n?n(Object.assign({},o,{placement:r})):n;return o=(o=s[0])||0,s=((s=s[1])||0)*a,i=0<=["left","right"].indexOf(i)?{x:s,y:o}:{x:o,y:s},e[r]=i,e},{}))[t.placement],i=o.y;t.modifiersData.popperOffsets.x+=o.x,t.modifiersData.popperOffsets.y+=i,t.modifiersData[r]=e}},{name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,r=e.options;if(e=e.name,!t.modifiersData[e]._skip){var n=r.fallbackPlacements,o=r.padding,i=r.boundary,a=r.rootBoundary,s=r.altBoundary,f=void 0===(r=r.flipVariations)||r,p=g(r=t.options.placement);n=n||(p!==r&&f?function(e){if("auto"===g(e))return[];var t=M(e);return[j(e),t,j(t)]}(r):[M(r)]);var c=[r].concat(n).reduce(function(e,r){return e.concat("auto"===g(r)?function(e,t){void 0===t&&(t={});
127var r=t.boundary,n=t.rootBoundary,o=t.padding,i=t.flipVariations,a=t.placement.split("-")[1],s=(a?i?_:_.filter(function(e){return e.split("-")[1]===a}):R).reduce(function(t,i){return t[i]=T(e,{placement:i,boundary:r,rootBoundary:n,padding:o})[g(i)],t},{});return Object.keys(s).sort(function(e,t){return s[e]-s[t]})}(t,{placement:r,boundary:i,rootBoundary:a,padding:o,flipVariations:f}):r)},[]);n=t.rects.reference,r=t.rects.popper;var u=new Map;p=!0;for(var d=c[0],l=0;l<c.length;l++){var m=c[l],h=g(m),v="start"===m.split("-")[1],b=0<=["top","bottom"].indexOf(h),y=b?"width":"height",w=T(t,{placement:m,boundary:i,rootBoundary:a,altBoundary:s,padding:o});if(v=b?v?"right":"left":v?"bottom":"top",n[y]>r[y]&&(v=M(v)),y=M(v),(h=[0>=w[h],0>=w[v],0>=w[y]]).every(function(e){return e})){d=m,p=!1;break}u.set(m,h)}if(p)for(s=function(e){var t=c.find(function(t){if(t=u.get(t))return t.slice(0,e).every(function(e){return e})});if(t)return d=t,"break"},n=f?3:1;0<n&&"break"!==s(n);n--);t.placement!==d&&(t.modifiersData[e]._skip=!0,t.placement=d,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}},{name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,r=e.options;e=e.name;var n=r.mainAxis,o=void 0===n||n;n=void 0!==(n=r.altAxis)&&n;var i=r.tether;i=void 0===i||i;var a=r.tetherOffset,s=void 0===a?0:a;r=T(t,{boundary:r.boundary,rootBoundary:r.rootBoundary,padding:r.padding,altBoundary:r.altBoundary}),a=g(t.placement);var f=t.placement.split("-")[1],p=!f,u=w(a);a="x"===u?"y":"x";var d=t.modifiersData.popperOffsets,l=t.rects.reference,m=t.rects.popper,v="function"==typeof s?s(Object.assign({},t.rects,{placement:t.placement})):s;if(s={x:0,y:0},o){var b="y"===u?"top":"left",y="y"===u?"bottom":"right",x="y"===u?"height":"width";o=d[u];var O=d[u]+r[b],M=d[u]-r[y],j=i?-m[x]/2:0,E="start"===f?l[x]:m[x];f="start"===f?-m[x]:-l[x],m=t.elements.arrow,m=i&&m?c(m):{width:0,height:0};var D=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0};b=D[b],y=D[y],m=Math.max(0,Math.min(l[x],m[x])),E=p?l[x]/2-j-m-b-v:E-m-b-v,p=p?-l[x]/2+j+m+y+v:f+m+y+v,v=t.elements.arrow&&h(t.elements.arrow),l=t.modifiersData.offset?t.modifiersData.offset[t.placement][u]:0,v=d[u]+E-l-(v?"y"===u?v.clientTop||0:v.clientLeft||0:0),p=d[u]+p-l,i=Math.max(i?Math.min(O,v):O,Math.min(o,i?Math.max(M,p):M)),d[u]=i,s[u]=i-o}n&&(n=d[a],i=Math.max(n+r["x"===u?"top":"left"],Math.min(n,n-r["x"===u?"bottom":"right"])),t.modifiersData.popperOffsets[a]=i,s[a]=i-n),t.modifiersData[e]=s},requiresIfExists:["offset"]},{name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,r=e.state;e=e.name;var n=r.elements.arrow,o=r.modifiersData.popperOffsets,i=g(r.placement),a=w(i);if(i=0<=["left","right"].indexOf(i)?"height":"width",n){var s=r.modifiersData[e+"#persistent"].padding;n=c(n);var f="y"===a?"top":"left",p="y"===a?"bottom":"right",u=r.rects.reference[i]+r.rects.reference[a]-o[a]-r.rects.popper[i];o=o[a]-r.rects.reference[a];var d=r.elements.arrow&&h(r.elements.arrow);i=Math.max(s[f],Math.min(r.rects.popper[i]/2-n[i]/2+(u/2-o/2-(d?"y"===a?d.clientLeft||0:d.clientTop||0:0)),r.rects.popper[i]-n[i]-s[p])),r.modifiersData[e]=((t={})[a]=i,t)}},effect:function(e){var t=e.state,r=e.options;e=e.name;var n=r.element;n=void 0===n?"[data-popper-arrow]":n,r=void 0===(r=r.padding)?0:r,("string"!=typeof n||(n=t.elements.popper.querySelector(n)))&&E(t.elements.popper,n)&&(t.elements.arrow=n,t.modifiersData[e+"#persistent"]={padding:k("number"!=typeof r?r:B(r,R))})},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]},{name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state;e=e.name;var r=t.rects.reference,n=t.rects.popper,o=t.modifiersData.preventOverflow,i=T(t,{elementContext:"reference"}),a=T(t,{altBoundary:!0});r=W(i,r),n=W(a,n,o),o=H(r),a=H(n),t.modifiersData[e]={referenceClippingOffsets:r,popperEscapeOffsets:n,isReferenceHidden:o,hasPopperEscaped:a},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":o,"data-popper-escaped":a})}}],V=y({defaultModifiers:U});e.createPopper=V,e.defaultModifiers=U,e.popperGenerator=y,Object.defineProperty(e,"__esMo
127dule",{value:!0})}(t)}),Popper=unwrapExports(popper_min);function initFunc(){window.createPopper=Popper.createPopper}exports.default=initFunc;;var i=module.exports.default||module.exports;return typeof i==="function"?i.apply(null, arguments):void 0;}());</script>
vendor: 1 bytes, line 127
127
128<script type="text/javascript" data-scriptname="siteSectionLinks">"use strict";!function(i,l){var n=i.LPSite||{},t=n.const,e=t.HEADER_CLASS,a=t.SUBNAV_CLASS,r=n.util,o=r.stripHash,s=r.stripTrailingSlash,c=r.getCurrentPageBaseUrl,u=r.prefersReducedMotion,h=r.closeParentSubnav,d=l.querySelector(".".concat(e)),g=c(),f="sticky"===d.dataset.scrolling,p=l.querySelectorAll("[data-link-type=route-section]"),v="top",S=function(t){return"a"===t.toLowerCase()};function y(t){var e=l.querySelector('[data-guid="'.concat(t,'"]')),n=l.querySelector(".lp-bar__pusher"),a=0;if(n&&"top"===v&&(a=n.getBoundingClientRect().height),f||n){var r=f?d.getBoundingClientRect().height:0,o=e.getBoundingClientRect().top+i.scrollY-r-a;i.scrollTo({top:o,left:0,behavior:"smooth"})}else e.scrollIntoView({behavior:"smooth"})}function m(t){if(function(t){var e=S(t.tagName)?t:t.parentElement;if(!S(e.tagName))return!1;var n=0<e.hash.length,a=s(o(e.href))===g;return n&&a}(t.target)){t.preventDefault();var e=t.currentTarget;y(e.dataset.routeSectionGuid),e.classList.contains(a)&&h(e),t.target.hash!==i.location.hash&&i.history.pushState(null,null,e.href)}}
128p.forEach(function(t){return t.addEventListener("click",m)}),i.addEventListener("load",function(){var t=n.hashCache;if(!u()&&t){var e=l.getElementById(t.substring(1)).parentElement.dataset.guid;setTimeout(function(){y(e),i.history.replaceState(null,null,t)},200)}}),i.addEventListener("message",function(t){var e=t.data;"REPOSITION"===e.type&&(v=e.payload.position)})}(window,document);</script>
vendor: 1 bytes, line 128
128
129<script type="text/javascript" data-scriptname="siteHeaderNav">"use strict";!function(t,e){var r=t.LPSite||{},a=r.const,c=a.HEADER_CLASS,i=a.LINK_CLASS,n=a.ACTIVE_LINK_CLASS,o=r.util,s=o.getCurrentPageBaseUrl,S=o.stripTrailingSlash,l=o.addNavigateToRouteListener,u=e.querySelector(".".concat(c)).querySelectorAll(".".concat(i)),L=s();l(),u.forEach(function(t){S(t.href)===L&&t.classList.add(n)})}(window,document);</script>
129 130
131<script type="text/javascript" data-scriptname="LpInputReact">(function(){var exports={};var module={exports: exports};"use strict";module.exports=function(t){function n(t){var n,r=t;try{var e=t.getAttribute("data-url");if(e){var i=(n=e,window.location.search.substring(1).split("&").map(function(t){return t.split("=")}).filter(function(t){return t[0]===n}).map(function(t){return decodeURIComponent(t[1])}).pop());i&&(r.value=i)}}catch(t){return}}t(function(t){if(t)for(var r=t.querySelectorAll(".js-input-mapping"),e=0;e<r.length;e+=1)n(r[e])})};;var i=module.exports.default||module.exports;return typeof i==="function"?i.apply(null, arguments):void 0;})(function(i){window.sup.register('LpInputReact',i)});</script>
vendor: 1 bytes, line 131
131
132<script type="text/javascript" data-scriptname="LpNavReact">(function(){var exports={};var module={exports: exports};"use strict";module.exports=function(e,t){e(function(e){if(!t){var a=document.getElementById("header-section").querySelector(".lp-nav"),n=a.querySelectorAll(".lp-nav__link-container"),s=a.cloneNode();s.setAttribute("id","siteSubnavPortal"),s.classList.add("lp-nav","lp-nav__link-container"),n.forEach(function(e){var t=null;function a(a){if(a.relatedTarget){var s=a.relatedTarget===e,r=!1;a.relatedTarget.classList&&a.relatedTarget.classList.contains&&(r=a.relatedTarget.classList.contains("lp-subnav")),t&&!r&&!s&&(l.classList.remove("lp-subnav--open"),n.classList.remove("lp-subnav--animate-in"),t.destroy(),t=null)}}var n=e.querySelector(".lp-subnav");if(n){var l=document.createElement("div"),r=n.querySelectorAll("a");l.classList.add("lp-subnav--popper"),l.appendChild(n),s.appendChild(l),e.addEventListener("mouseenter",function(){l.classList.add("lp-subnav--open"),setTimeout(function(){n.classList.add("lp-subnav--animate-in")},0),t=window.createPopper(e,l,{placement:"bottom-start",strategy:document.querySelector('.site-header[data-scrolling="sticky"]')?"fixed":"absolute"})}),e.addEventListener("mouseleave",a),s.addEventListener("mouseleave",a),r.forEach(function(e){e.addEventListener("click",a)})}}),s.querySelector(".lp-subnav--popper")&&document.body.appendChild(s)}})};;var i=module.exports.default||module.exports;return typeof i==="function"?i.apply(null, arguments):void 0;})(function(i){window.sup.register('LpNavReact',i)});</script>
132 133
133<script type="text/javascript"> 134 (function(){performance&&performance.timing&&window.addEventListener("load",function(){return setTimeout(function(){var e=document.querySelector("meta[name='leadpages-serving-domain']");if(e||e.content!==location.hostname){var t=performance.timing;(new Image).src="https://api.leadpages.io/analytics/v1/observations/capture?version=1.7.13&origin=page-speed&kind=timer,timer,timer,timer,timer,timer,timer,timer,timer,timer&label=domain-lookup,connect,request,ttfb,response,loading,interactive,content-loaded,complete,load&value="+[t.domainLookupEnd-t.domainLookupStart,t.connectEnd-t.connectStart,t.responseStart-t.requestStart,t.responseStart-t.fetchStart,t.responseEnd-t.responseStart,t.domLoading-t.fetchStart,t.domInteractive-t.fetchStart,t.domContentLoadedEventEnd-t.fetchStart,t.domComplete-t.fetchStart,(t.loadEventEnd||t.loadEventStart)-t.fetchStart].join(",")}},0)})}()); 135 </script>
135 136 137 138 139 140 141
142<script data-htmlpub-analytics> 143(function(){ 144var PID="gg1x1lcpx32tjslsbqxxqmm5"; 145var EXP_ID=""; 146var EXP_VARIANT=""; 147var API="/collect"; 148var APP_ORIGIN="https://htmlpub.com"; 149var FLUSH_INTERVAL=5000; 150var FLUSH_MAX=20; 151 152// HP-4568 consent gate. Runs onGranted() at most once, only when analytics 153// storage is permitted. See app/src/lib/analytics-consent-gate.ts. 154function hpConsent(onGranted){ 155var started=false; 156function start(){if(started)return;started=true;try{onGranted();}catch(e){}} 157 158// Browser-level objection (Global Privacy Control / legacy Do-Not-Track) is 159// terminal: it is the visitor speaking directly, so no later CMP "accept all" 160// re-enables tracking for this page view. Mirrors the Customers.ai pixel gate. 161try{ 162if(navigator.globalPrivacyControl===true)return; 163var dnt=navigator.doNotTrack||window.doNotTrack||navigator.msDoNotTrack; 164if(dnt==="1"||dnt===1||dnt===true)return; 165}catch(e){} 166 167// Analytics/statistics consent per whichever CMP the page carries: 168// 1 granted / 0 denied / -1 present but undecided / null no CMP detected 169function hpConsentState(){ 170// Google consent mode v2 first: vendor-neutral, so a CMP writing it (directly 171// or via GTM) is authoritative even before its own JS API initialises. Last 172// write wins, matching gtag's 'default' then 'update'. 173try{ 174var dl=window.dataLayer; 175if(dl&&dl.length){ 176var seen=null; 177for(var i=0;i<dl.length;i++){ 178var entry=dl[i]; 179if(!entry||entry[0]!=="consent"||!entry[2])continue; 180var mode=entry[2].analytics_storage; 181if(mode==="granted")seen=1;else if(mode==="denied")seen=0; 182} 183if(seen!==null)return seen; 184} 185}catch(e){} 186// Cookiebot. Its object appears only once uc.js has run, so fall back to the 187// script tag it is installed as to tell "undecided" from "absent". 188try{ 189var cb=window.Cookiebot||window.CookieConsent; 190if(cb&&cb.consent)return cb.consent.statistics?1:(cb.hasResponse?0:-1); 191if(document.getElementById("Cookiebot")||document.querySelector("script[src*='consent.cookiebot.com'],script[src*='consentcdn.cookiebot.com']"))return -1; 192}catch(e){} 193// OneTrust: statistics is the reserved C0002 group. OneTrust comma-pads the 194// list itself, so the delimited match cannot hit C00020. Every runtime signal 195// it exposes appears only after otSDKStub.js runs, so without the script-tag 196// fallback a blocked or async stub reads as "no CMP" and we would track â the 197// exact bug, on the pages most likely to care. 198try{ 199var groups=window.OptanonActiveGroups||window.OnetrustActiveGroups; 200if(typeof groups==="string"&&groups)return groups.indexOf(",C0002,")>-1?1:0; 201if(window.OneTrust||window.Optanon||document.getElementById("onetrust-consent-sdk")||document.querySelector("script[src*='cookielaw.org'],script[src*='onetrust.com']"))return -1; 202}catch(e){} 203// CookieYes 204try{ 205if(typeof window.getCkyConsent==="function"){ 206var cky=window.getCkyConsent(); 207if(cky&&cky.categories)return cky.categories.analytics?1:0; 208} 209if(document.querySelector("script[src*='cookieyes.com'],script[src*='cookie-script.com']"))return -1; 210}catch(e){} 211// Iubenda: purpose 4 is measurement. 212try{ 213var iub=window._iub; 214if(iub&&iub.cs&&iub.cs.consent&&iub.cs.consent.purposes)return iub.cs.consent.purposes[4]?1:0;
215if(iub||document.querySelector("script[src*='iubenda.com']"))return -1; 216}catch(e){} 217return null; 218} 219 220var state=hpConsentState(); 221if(state===null||state===1){start();return;} 222 223// CMP present, analytics not granted: write nothing, send nothing, and listen 224// for a later grant. The poll is a catch-all for CMPs whose event names we do 225// not know; it stops after 60s rather than running forever. 226function recheck(){if(hpConsentState()===1)start();} 227var EVENTS=["CookiebotOnAccept","CookiebotOnConsentReady","CookieConsentDeclaration","cookieyes-consent-update","consent.onetrust","OneTrustGroupsUpdated","iubenda-consent-given","hp-analytics-consent"]; 228for(var evt=0;evt<EVENTS.length;evt++){try{window.addEventListener(EVENTS[evt],recheck,false);}catch(e){}} 229var polls=0; 230var timer=setInterval(function(){recheck();if(started||++polls>=120)clearInterval(timer);},500); 231} 232 233// Everything below mints an identifier or sends a beacon, so all of it waits 234// for consent. window.__hpupPushEvent is the exception: it binds synchronously 235// here and only forwards once consent arrives. Binding it late would let the 236// popup embed bundle's fallback shim (app/src/lib/popups/embed-bundle.ts, 237// registered under the same "if not already defined" test) claim the name first 238// and reroute pop-up events. Pre-consent calls are dropped, not queued â they 239// have no visitorId. SYNC with app/src/lib/analytics-tracking-script.ts. 240var hpPush=null; 241if(!window.__hpupPushEvent){window.__hpupPushEvent=function(t,p){try{if(hpPush)hpPush(t,p);}catch(e){}};} 242hpConsent(function(){ 243 244function uuid(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(c){var r=Math.random()*16|0;return(c==="x"?r:(r&3|8)).toString(16)});} 245function getOrSet(store,key){try{var v=store.getItem(key);if(v)return v;v=uuid();store.setItem(key,v);return v;}catch(e){return uuid();}} 246 247var visitorId=getOrSet(localStorage,"_hp_vid"); 248var sessionId=getOrSet(sessionStorage,"_hp_sid"); 249 250var params=new URLSearchParams(location.search); 251var utmSource=params.get("utm_source")||undefined; 252var utmMedium=params.get("utm_medium")||undefined; 253var utmCampaign=params.get("utm_campaign")||undefined; 254// Ad-platform click IDs (conversion feedback loop) â captured like the UTMs. 255// SYNC with canonical at app/src/lib/analytics-tracking-script.ts. 256var gclid=params.get("gclid")||undefined; 257var fbclid=params.get("fbclid")||undefined; 258var msclkid=params.get("msclkid")||undefined; 259 260var vw=window.innerWidth||0; 261var vh=window.innerHeight||0; 262var ua=navigator.userAgent||""; 263var isMobileUA=/Android|iPhone|iPod|iPad|webOS|BlackBerry|IEMobile|Opera Mini/i.test(ua); 264var maxScreenDim=Math.max(screen.width||0,screen.height||0); 265var deviceType=isMobileUA?(maxScreenDim<=812||vw<768?"mobile":"tablet"):"desktop"; 266 267function detectBrowser(){ 268if(ua.indexOf("Edg/")>-1)return"Edge"; 269if(ua.indexOf("Chrome/")>-1)return"Chrome"; 270if(ua.indexOf("Safari/")>-1&&ua.indexOf("Chrome/")===-1)return"Safari"; 271if(ua.indexOf("Firefox/")>-1)return"Firefox"; 272return"Other"; 273} 274function detectOS(){ 275if(ua.indexOf("iPhone")>-1||ua.indexOf("iPad")>-1)return"iOS"; 276if(ua.indexOf("Android")>-1)return"Android"; 277if(ua.indexOf("Mac OS")>-1)return"macOS"; 278if(ua.indexOf("Windows")>-1)return"Windows"; 279if(ua.indexOf("Linux")>-1)return"Linux"; 280return"Other"; 281} 282var browserFamily=detectBrowser(); 283var osFamily=detectOS(); 284 285var buffer=[]; 286function makeEvent(type,payload){ 287return{pageId:PID,eventType:type,visitorId:visitorId,sessionId:sessionId,payload:payload||undefined,referrer:document.referrer||undefined,utmSource:utmSource,utmMedium:utmMedium,utmCampaign:utmCampaign,gclid:gclid,fbclid:fbclid,msclkid:msclkid,deviceType:deviceType,browserFamily:browserFamily,osFamily:osFamily,viewportWidth:vw,viewportHeight:vh,experimentId:EXP_ID||undefined,experimentVariant:EXP_VARIANT||undefined,timestamp:Date.now()}; 288} 289function pushEvent(type,payload){buffer.push(makeEvent(type,payload));if(buffer.length>=FLUSH_MAX)flush();} 290 291// HP-1557 â expose a single-arg helper so the popups runtime (separate IIFE, 292// no shared closure with analytics) can feed events into the same buffer. 293// Defensive: only set if not already defined so a future second analytics 294// injection doesn't clobber an in-flight handler. HP-4568: the name is bound 295// above, outside the consent gate; this is where it starts forwarding. 296hpPush=pushEvent; 297// NOTE (HP-3461): this copy deliberately does NOT register window.__hpTrack, even 298// though the app copy registers both names. checkout-script.ts guards on 299// __hpTrack, and inject.ts appends that script to every edge-served page, so 300// adding the name here would start writing checkout_started for the entire edge 301// fleet (pubhtml.com + all custom domains) where that beacon has always been a 302// no-op â beginning an ecommerce event series mid-history, and moving the derived 303// checkout_abandoned with it, from a change about page engagement. It is a real 304// gap and wants its own change with a backfill story. 305// (No backticks anywhere in this file: it is one big template literal, so a 306// backtick in a comment terminates the string. This exact comment did it once.) 307 308function readMmuid(){try{var v=localStorage.getItem("mmuid");return v&&v.length<=128?v:undefined;}catch(e){return undefined;}} 309 310function flush(){ 311if(buffer.length===0)return; 312var batch=buffer.splice(0,FLUSH_MAX); 313var payload={events:batch}; 314var mmuid=readMmuid(); 315if(mmuid)payload.mmuid=mmuid; 316try{navigator.sendBeacon(API,JSON.stringify(payload));}catch(e){} 317} 318 319// Engaged time-on-page (HP-3592) â count a second only while the tab is 320// visible AND the visitor was active in the last 30s; emit the accrued DELTA 321// every 30 engaged seconds and on hide/pagehide. Registered BEFORE the flush 322// handlers below so the final delta lands in the buffer before the last 323// beacon fires (listener registration order = firing order). 324// SYNC with canonical at app/src/lib/analytics-tracking-script.ts. 325var dwellSec=0,dwellSent=0,dwellLastActive=Date.now(); 326var DWELL_IDLE_MS=30000,DWELL_EMIT_SEC=30,DWELL_CAP_SEC=1800; 327function dwellActive(){dwellLastActive=Date.now();} 328document.addEventListener("scroll",dwellActive,{passive:true}); 329document.addEventListener("mousemove",dwellActive,{passive:true}); 330document.addEventListener("keydown",dwellActive,true); 331document.addEventListener("touchstart",dwellActive,{passive:true}); 332document.addEventListener("click",dwellActive,true); 333function dwellEmit(){var d=dwellSec-dwellSent;if(d>0){dwellSent=dwellSec;pushEvent("dwell",{seconds:d});}} 334var dwellTimer=setInterval(function(){ 335if(document.visibilityState!=="visible")return; 336if(Date.now()-dwellLastActive>DWELL_IDLE_MS)return; 337dwellSec++; 338if(dwellSec-dwellSent>=DWELL_EMIT_SEC)dwellEmit(); 339if(dwellSec>=DWELL_CAP_SEC){dwellEmit();clearInterval(dwellTimer);} 340},1000); 341document.addEventListener("visibilitychange",function(){if(document.visibilityState==="hidden")dwellEmit();}); 342window.addEventListener("pagehide",dwellEmit); 343 344setInterval(flush,FLUSH_INTERVAL); 345document.addEventListener("visibilitychange",function(){if(document.visibilityState==="hidden")flush();}); 346window.addEventListener("pagehide",flush); 347 348pushEvent("page_view"); 349 350// On-platform conversion goal ("a thank-you page I own"): report the current 351// pageId plus the visitor's experiment assignments (_hp_exp_<id> cookies) so the 352// server can count this page-view as a conversion. Fires once per session per 353// page. HP-2925 Layer 1: must fire on EVERY page, not just experiment 354// participants â a standalone "Offsite event" goal has no experiment cookie, so 355// gating on cookies means the server never gets to attribute it. The server 356// no-ops cheaply when the page is neither an experiment nor a goal target. 357// SYNC with canonical at app/src/lib/analytics-tracking-script.ts. 358(function(){ 359try{ 360if(!APP_ORIGIN)return; 361var guard="_hp_goal:"+PID; 362if(sessionStorage.getItem(guard))return; 363sessionStorage.setItem(guard,"1"); 364var exps=[];var ck=document.cookie.split(";"); 365for(var i=0;i<ck.length;i++){var kv=ck[i].split("=");var k=(kv[0]||"").trim();if(k.indexOf("_hp_exp_")===0){exps.push({id:k.slice(8),variant:decodeURIComponent((kv[1]||"").trim())});}} 366var body=JSON.stringify({pageId:PID,visitorId:visitorId,sessionId:sessionId,experiments:exps}); 367var url=APP_ORIGIN+"/api/experiments/onsite-conversion"; 368if(navigator.sendBeacon){navigator.sendBeacon(url,new Blob([body],{type:"text/plain"}));} 369else{fetch(url,{method:"POST",headers:{"Content-Type":"application/json"},body:body,keepalive:true}).catch(function(){});} 370}catch(e){} 371})(); 372 373// HP-3461 â milestones reached WITHOUT the visitor scrolling carry {auto:1}. 374// checkScroll runs on a 1s timer regardless of input and at scrollY=0 pct is 375// just winH/docH, so any page under ~4 screens tall banked scroll_depth:25 from 376// every visitor who did nothing (a page fitting the viewport banked 100). Those
377// rows mark the session engaged in the rollup, which pushed the bounce rate of 378// every short page toward zero and inflated avgScrollDepth the same way. The 379// events still fire (that depth WAS visible, and the scroll funnel wants it); 380// the stamp lets the bounce query demand a real interaction. 381// SYNC with app/src/lib/analytics-tracking-script.ts. 382var scrollMilestones={25:false,50:false,75:false,100:false}; 383var scrollUserMoved=false; 384function checkScroll(){ 385var docH=Math.max(document.body.scrollHeight,document.documentElement.scrollHeight); 386var scrollY=window.scrollY||window.pageYOffset; 387var winH=window.innerHeight; 388if(docH<=winH){if(!scrollMilestones[100]){scrollMilestones[100]=true;pushEvent("scroll_depth",{depth:100,auto:1});}return;} 389var pct=Math.round(((scrollY+winH)/docH)*100); 390[25,50,75,100].forEach(function(m){if(pct>=m&&!scrollMilestones[m]){scrollMilestones[m]=true;pushEvent("scroll_depth",scrollUserMoved?{depth:m}:{depth:m,auto:1});}}); 391} 392window.addEventListener("scroll",function(){scrollUserMoved=true;checkScroll();},{passive:true}); 393setTimeout(checkScroll,1000); 394 395// HP-1557 â when a click/submit happens inside a pop-up, add the popup's id + 396// name to the payload. Customers track conversions on the standard form_submit / 397// element_click types; this is just attribution metadata so the analytics surface 398// can say "this conversion came from the Welcome offer pop-up". Matches the 399// canonical data-persist-popup marker and the legacy data-htmlpub-popup one. 400function popupAttribution(node){ 401var p=node&&node.closest&&node.closest("[data-persist-popup],[data-htmlpub-popup]"); 402if(!p)return null; 403var nm=p.getAttribute("data-persist-popup-name");if(nm===null)nm=p.getAttribute("data-htmlpub-popup-name"); 404return{popupId:p.getAttribute("id")||"",popupName:(nm||"").replace(/^\s+|\s+$/g,"")}; 405} 406 407document.addEventListener("click",function(e){ 408var el=e.target; 409if(!el||!el.tagName)return; 410var tag=el.tagName.toLowerCase(); 411if(!(tag==="a"||tag==="button"||tag==="input"||tag==="select"||tag==="textarea"||el.getAttribute("role")==="button"||el.closest("a,button,[role=button]")))return; 412var docH=Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,1); 413var rect=el.getBoundingClientRect(); 414var payload={x:Math.min(1,Math.max(0,(rect.left+rect.width/2)/(document.documentElement.clientWidth||1))),y:Math.min(1,Math.max(0,(rect.top+rect.height/2+(window.scrollY||0))/docH)),selector:el.id?"#"+el.id:tag+(el.className&&typeof el.className==="string"?"."+el.className.trim().split(/\s+/).slice(0,2).join("."):""),viewportWidth:vw,viewportHeight:vh}; 415// HP-3227 â toggling "count clicks as conversions" on a button stamps 416// data-lp-conversion="<configId>" on that element, and both the rollup worker 417// and the dashboard read match a click goal by that id. This tracker never 418// reported it, so a goal whose stored selector is the placeholder 419// a[data-lp-conversion] had nothing to match on and counted zero conversions 420// forever, no matter how many buttons were toggled on. Read from the closest 421// stamped ancestor, since the click target is often an inner <span> of the CTA. 422// SYNC with app/src/lib/analytics-tracking-script.ts. 423var lpConvEl=el.closest?el.closest("[data-lp-conversion]"):null; 424var lpConvId=lpConvEl?lpConvEl.getAttribute("data-lp-conversion"):null; 425if(lpConvId)payload.lpConversion=lpConvId; 426// HP-1557 â only attribute element_click to a pop-up when the actual 427// click target is a button-shaped CTA. A click on the email input 428// inside a lead-capture popup would otherwise inflate the popup's 429// "Button clicks" count on the dashboard. 430var isCtaClick=(tag==="a"||tag==="button"||el.getAttribute("role")==="button"||(el.closest&&el.closest("a,button,[role=button]"))); 431if(isCtaClick){var pa=popupAttribution(el);if(pa){payload.popupId=pa.popupId;payload.popupName=pa.popupName;}} 432// HP-3461 â two NON-IDENTIFYING facts about the clicked anchor: the host it leaves 433// for (external only) and the file extension. The selector above records only "#id" 434// or "tag.class", so a PDF link and any other button were indistinguishable and no 435// past click can be reclassified. The full href is NOT stored: pathnames carry 436// customer identity and this is the highest-volume table (see absUrl). 437// SYNC with app/src/lib/analytics-tracking-script.ts. 438var hrefEl=tag==="a"?el:(el.closest&&el.closest("a[href]")); 439var clickUrl=hrefEl?absUrl(hrefEl):null; 440var clickFacts=clickUrl?linkFacts(clickUrl):null; 441if(clickFacts&&clickFacts.external)payload.linkHost=clickFacts.host; 442if(clickFacts&&clickFacts.ext)payload.linkExt=clickFacts.ext;
443var clickKey=clickUrl?linkClickKey(clickUrl):null; 444if(clickKey)payload.linkKey=clickKey; 445pushEvent("element_click",payload); 446// Classify into a micro-conversion. Emitted ALONGSIDE the element_click, never 447// instead of it, so a classification we later decide was wrong can be re-derived. 448if(hrefEl)classifyLinkClick(hrefEl,clickUrl); 449// HP-2811 â same-tab anchor navigation races the page unload before the 5s 450// flush timer; visibilitychange/pagehide flushes are unreliable (esp. iOS 451// Safari, same-tab nav), so element_click goals for outbound CTAs (e.g. a 452// HubSpot Meetings link) see 0 conversions despite real clicks. Mirror the 453// form_submit flush pattern for anchors that will navigate this tab. 454var navAnchor=tag==="a"?el:(el.closest&&el.closest("a[href]")); 455if(navAnchor&&navAnchor.getAttribute("target")!=="_blank"&&!e.ctrlKey&&!e.metaKey&&!e.shiftKey){ 456var navHref=(navAnchor.getAttribute("href")||"").replace(/^\s+/,""); 457if(navHref&&navHref.charAt(0)!=="#"&&navHref.slice(0,11).toLowerCase()!=="javascript:")flush(); 458} 459},true); 460 461document.addEventListener("submit",function(e){ 462var f=e.target; 463if(!f||f.tagName!=="FORM")return; 464var payload={formIdentifier:f.id||f.getAttribute("name")||"form-"+([].indexOf.call(document.forms,f))}; 465var pa=popupAttribution(f); 466if(pa){payload.popupId=pa.popupId;payload.popupName=pa.popupName;} 467pushEvent("form_submit",payload); 468flush();// send now â a thank-you-page redirect may navigate away before the 5s timer, dropping the experiment conversion 469},true); 470 471// âââ HP-3461 on-page micro-conversions ââââââââââââââââââââââââââââââââââââââ 472// Kinds + classification rules mirror app/src/lib/analytics/page-engagement-kinds.ts 473// (the server-side reference). Literal here because this compiles to an inline 474// string and cannot import; page-engagement-kinds.test.ts asserts both script 475// copies only ever emit registered kinds. 476// SYNC with app/src/lib/analytics-tracking-script.ts. 477 478// Resolve an anchor for RULE MATCHING only â the url itself is never sent. Only 479// host + extension are reported (linkFacts): customer delivery links routinely put 480// identity in the PATH (/thank-you/jane-doe, /download/lead/8842/Invoice-Jane-Doe.pdf), 481// and AnalyticsEvent is the highest-volume table with no redaction pass and no 482// consent gate, so a stored pathname is PII a DSAR erase cannot reach. 483function absUrl(a){ 484try{ 485var raw=(a.getAttribute("href")||"").replace(/^\s+/,""); 486if(!raw||raw.charAt(0)==="#"||raw.slice(0,11).toLowerCase()==="javascript:")return null; 487var u=new URL(raw,location.href); 488if(u.protocol!=="http:"&&u.protocol!=="https:")return null; 489return u; 490}catch(e){return null;} 491} 492// Host + extension, derived from the WHOLE url (never a truncated copy) so a long 493// signed URL cannot lose its extension to a length cap and read as plain navigation. 494function linkFacts(u){ 495var p=u.pathname.toLowerCase(); 496var dot=p.lastIndexOf("."); 497var ext=dot<0?"":p.slice(dot+1); 498if(ext.length>8)ext=""; 499return{host:u.hostname.toLowerCase(),ext:ext,external:u.hostname!==location.hostname}; 500} 501// Stable join key for WHICH link was clicked: FNV-1a hash of the canonicalized 502// URL (lowercase host, no fragment, no trailing slash, query kept minus our own 503// runtime decoration params). The raw href is still never stored (HP-3461) â 504// the dashboard re-derives each key from the page's OWN html and joins on the 505// hash (app/src/lib/analytics/link-click-key.ts, the reference implementation; 506// its test extracts this copy and asserts they agree). 507// SYNC with app/src/lib/analytics-tracking-script.ts and lib/analytics/link-click-key.ts. 508function linkClickKey(u){ 509try{ 510var c=new URL(u.toString()); 511c.hash=""; 512c.hostname=c.hostname.toLowerCase(); 513if(c.pathname.length>1&&c.pathname.slice(-1)==="/")c.pathname=c.pathname.slice(0,-1); 514if(c.search){ 515var strip=["lp_click_id","lp_page_id","lp_ts","_exp","_var","_vid","_pvar","client_reference_id"]; 516var kept=new URLSearchParams(); 517c.searchParams.forEach(function(v,k){if(strip.indexOf(k)<0)kept.append(k,v);}); 518var q=kept.toString(); 519c.search=q?"?"+q:""; 520} 521var t=c.toString(); 522var h=0x811c9dc5; 523for(var i=0;i<t.length;i++){h^=t.charCodeAt(i);h=Math.imul(h,0x01000193);} 524var x=(h>>>0).toString(16); 525while(x.length<8)x="0"+x; 526return x; 527}catch(e){return null;} 528} 529 530var DL_EXT=["pdf","epub","zip","csv","xlsx","xls","docx","doc","pptx","ppt","mp3","wav"]; 531// calendar.google.com is deliberately ABSENT: the standard add-to-calendar button 532// is not a booking, and host-only matching cannot tell them apart, so including it
533// reported bookings on pages where nobody booked. Host entries only â this copy 534// matches on hostname, so a host/path entry could never match here. 535var BOOK_HOSTS=["calendly.com","cal.com","acuityscheduling.com"]; 536 537// Every kind counts at most once PER PAGE LOAD: three clicks on the same PDF is one 538// download, and a scrubbed video cannot re-bank a quartile. 539// 540// IN-MEMORY, and it must stay that way. This used to consult sessionStorage and 541// return true from its catch block, so wherever storage throws (sandboxed iframe, 542// "block all cookies", in-app webviews, full quota) every timeupdate re-emitted 543// three quartiles â 12+/sec, which trips the collect route's 30-req/min-per-IP 544// limit and then 429s that visitor's REAL page_view / form_submit / conversion 545// beacons. A session-scoped key also outlived the page load, so a batch lost to a 546// 429 or a closed tab could never be re-reported. The server counts DISTINCT 547// SESSIONS per kind, so duplicates across page views are deduped there anyway. 548var microFired={}; 549function latch(kind,id){ 550var k=kind+":"+(id||""); 551if(microFired[k])return false; 552microFired[k]=true; 553return true; 554} 555function microEvent(kind,id){ 556if(!latch(kind,id))return; 557pushEvent("page_engagement",id?{kind:kind,id:id}:{kind:kind}); 558} 559 560function classifyLinkClick(a,u){ 561try{ 562if(!u)return; 563var f=linkFacts(u); 564if((a.hasAttribute&&a.hasAttribute("download"))||(f.ext&&DL_EXT.indexOf(f.ext)>-1)){ 565// id is the EXTENSION, not the file name: "Invoice-Jane-Doe.pdf" is as 566// identifying as the path we refuse to store, and phase 1 renders only an 567// aggregate count. 568microEvent("file_download",f.ext||undefined); 569return; 570} 571if(!f.external)return; 572for(var i=0;i<BOOK_HOSTS.length;i++){ 573var b=BOOK_HOSTS[i]; 574if(f.host===b||f.host.slice(-(b.length+1))==="."+b){microEvent("booking_open",b);return;} 575} 576}catch(e){} 577} 578 579// <video> only. YouTube/Vimeo/Loom/Wistia are cross-origin iframes whose 580// playback is invisible without the provider's JS API plus an embed-URL rewrite, 581// both deferred out of phase 1 â a page whose only video is an embed reports NO 582// video kinds, which the read side must treat as "not measurable", not as 0%. 583function videoId(v){ 584try{ 585if(v.id)return v.id.slice(0,128); 586var src=v.currentSrc||v.getAttribute("src")||""; 587if(!src)return undefined; 588var seg=src.split("?")[0].split("/"); 589return (seg[seg.length-1]||"").slice(0,128)||undefined; 590}catch(e){return undefined;} 591} 592// Autoplay policy only lets a video start by itself while MUTED, so "muted and the 593// visitor has never touched the page" is the signature of decorative playback. 594// A <video autoplay muted loop playsinline> hero fires 'play' on every load, so 595// counting it would report "100% played the video" on exactly the pages most likely 596// to have a hero video. Unmuted playback always counts: it needs a gesture. 597// mousedown as well as pointerdown: a path delivering only mouse events would 598// otherwise never set this, silently disabling the feature with nothing in the logs. 599var userGestured=false; 600function markGesture(){userGestured=true;} 601document.addEventListener("pointerdown",markGesture,true); 602document.addEventListener("mousedown",markGesture,true); 603document.addEventListener("keydown",markGesture,true); 604document.addEventListener("touchstart",markGesture,{passive:true,capture:true}); 605// Decide ONCE at 'play' and LATCH on the element. Re-checking the live flag on every 606// timeupdate was a real bug found in Chrome: a decorative muted autoplay correctly 607// suppressed video_start, then one unrelated trusted keystroke flipped userGestured 608// and every later timeupdate passed â banking p25/p50/p75 for a video nobody chose 609// to watch, with NO video_start, leaving the read side dividing by a zero 610// denominator. Unmuted playback always counts: it cannot start without a gesture. 611function decidePlay(v){ 612var intent=(!v.muted)||userGestured; 613try{v.__hpIntent=intent?1:0;}catch(e){} 614return intent; 615} 616// Undefined = never saw this element's 'play' (script injected mid-playback): fail 617// closed, since crediting is the direction that corrupts the headline percentage. 618function countedPlay(v){return v.__hpIntent===1;} 619// Unmuting a decorative video IS intent, and no 'play' fires for it, so re-decide. 620// Emitting video_start keeps the stream coherent: a start precedes its quartiles. 621function onVideoVolume(e){ 622var v=e.target; 623if(!v||v.tagName!=="VIDEO")return; 624if(v.muted||v.paused||v.__hpIntent===1)return; 625v.__hpIntent=1; 626microEvent("video_start",videoId(v)); 627} 628function onVideoTime(e){ 629var v=e.target; 630if(!v||v.tagName!=="VIDEO")return; 631// Consult the LATCHED decision, never the live flag â see decidePlay. 632if(!countedPlay(v))return; 633var d=v.duration; 634// Live streams / metadata not yet loaded report 0, NaN or Infinity â a quartile 635// of an unknown duration is meaningless, so report the play and nothing more. 636if(!isFinite(d)||d<=0)return; 637var pct=(v.currentTime/d)*100; 638var id=videoId(v); 639if(pct>=25)microEvent("video_p25",id); 640if(pct>=50)microEvent("video_p50",id); 641if(pct>=75)microEvent("video_p75",id); 642// p100 comes from 'ended', not a threshold: the last timeupdate can land a 643// fraction short of duration, so a full watch would never bank it. 644} 645document.addEventListener("play",function(e){var v=e.target;if(v&&v.tagName==="VIDEO"&&decidePlay(v))microEvent("video_start",videoId(v));},true); 646document.addEventListener("timeupdate",onVideoTime,true); 647document.addEventListener("volumechange",onVideoVolume,true); 648// SYNC-START embed-video-listeners (app/edge twins pinned by page-engagement-kinds.test.ts) 649// âââ Embedded video: Vimeo (HP-3461) ââââââââââââââââââââââââââââââââââââââââ 650// <video> is handled above by reading the element directly. A Vimeo embed is a 651// CROSS-ORIGIN iframe, so its state is unreadable â but the player reports its own 652// progress over postMessage, and needs NO change to the embed URL. A plainly pasted 653// Vimeo embed becomes measurable as-is. (YouTube is different: it is silent unless 654// enablejsapi=1 is on the URL. Handled separately.) 655// 656// Verified against live players, and two details cost an attempt each: 657// 1. SUBSCRIBE ON THE PLAYER'S ready MESSAGE, not the iframe's load event.
658// Subscribing on load races the player's own init: the addEventListener calls 659// are silently dropped, no ACK comes back, and no timeupdate ever arrives â it 660// looks exactly like "Vimeo does not work". 661// 2. ATTRIBUTE BY e.source, not player_id. Vimeo only echoes a player_id if the 662// embed URL carries one, and a customer's pasted embed has none. 663// 664// Vimeo sends OBJECTS (YouTube sends JSON strings), and timeupdate carries 665// data.percent as a 0..1 fraction, so quartiles need no arithmetic of our own. 666function vimeoHostOk(origin){ 667try{ 668var h=new URL(origin).hostname.toLowerCase(); 669return h==="player.vimeo.com"||h==="vimeo.com"||h.slice(-10)===".vimeo.com"; 670}catch(e){return false;} 671} 672// Low-cardinality, non-identifying label: the numeric video id off the embed URL, 673// prefixed so it cannot collide with a <video> filename in the tally. 674function vimeoLabel(f){ 675try{ 676var m=(f.getAttribute("src")||"").match(/vimeo\.com\/video\/(\d+)/); 677return m?"vimeo:"+m[1]:"vimeo"; 678}catch(e){return "vimeo";} 679} 680function vimeoFrameFor(src){ 681try{ 682var fr=document.querySelectorAll("iframe"); 683for(var i=0;i<fr.length;i++){if(fr[i].contentWindow===src)return fr[i];} 684}catch(e){} 685return null; 686} 687function vimeoSubscribe(f){ 688try{ 689var w=f.contentWindow; 690var evs=["play","timeupdate","ended"]; 691for(var i=0;i<evs.length;i++)w.postMessage({method:"addEventListener",value:evs[i]},"*"); 692}catch(e){} 693} 694window.addEventListener("message",function(e){ 695try{ 696if(!vimeoHostOk(e.origin))return; 697var d=e.data; 698if(!d||typeof d!=="object")return; 699var f=vimeoFrameFor(e.source); 700if(!f)return; 701if(d.event==="ready"){vimeoSubscribe(f);return;} 702var id=vimeoLabel(f); 703if(d.event==="play"){ 704// Same intent rule as <video>, minus the muted check we cannot read through an 705// iframe: browser policy only permits unprompted autoplay while MUTED, so 706// "playback began before the visitor touched anything" is the decorative case. 707if(!userGestured)return; 708f.__hpEmbedCounted=1; 709microEvent("video_start",id); 710return; 711} 712if(f.__hpEmbedCounted!==1)return; 713if(d.event==="timeupdate"){ 714var pct=d.data&&typeof d.data.percent==="number"?d.data.percent*100:-1; 715if(pct<0)return; 716if(pct>=25)microEvent("video_p25",id); 717if(pct>=50)microEvent("video_p50",id); 718if(pct>=75)microEvent("video_p75",id); 719// p100 comes from 'ended', as with <video>: the last timeupdate lands short. 720}else if(d.event==="ended"){ 721microEvent("video_p25",id);microEvent("video_p50",id);microEvent("video_p75",id);microEvent("video_p100",id); 722} 723}catch(err){} 724}); 725 726// âââ Embedded video: YouTube (HP-3461) ââââââââââââââââââââââââââââââââââââââ 727// YouTube is SILENT unless the embed URL carries enablejsapi=1 â verified live: a 728// plain embed answers nothing, even if we send it the handshake. So this listener 729// only hears players whose URL has that flag; adding it to customer HTML at serve 730// time is a separate commit, deliberately, because that mutates what visitors load. 731// 732// With the flag, the protocol is: post a listening message, then the player streams 733// infoDelivery with playerState, currentTime and duration. 734// 735// The handshake repeats on a timer, and the honest reason is that it catches frames 736// that appear after load (a tab, an accordion, a script-mounted embed). Whether a 737// player also STOPS streaming when we stop asking was not established: repeats are 738// answered "alreadyInitialized", which suggests the first one is what arms it. The 739// polling stays because the version with polling is the one verified to work end to 740// end, and trading that for an unverified optimisation would risk silently losing 741// every embed metric. The steady-state cost is one postMessage per api-enabled 742// frame every 2s. 743// 744// Unlike Vimeo, YouTube sends JSON STRINGS, so the payload needs parsing before it 745// looks like anything. 746// 747// playerState is YouTube's enum: -1 unstarted, 0 ended, 1 playing, 2 paused, 748// 3 buffering, 5 cued. 749function ytHostOk(origin){ 750try{ 751var h=new URL(origin).hostname.toLowerCase(); 752return h==="www.youtube.com"||h==="youtube.com"||h==="www.youtube-nocookie.com"||h==="youtube-nocookie.com"; 753}catch(e){return false;} 754} 755function ytLabel(f){ 756try{ 757var m=(f.getAttribute("src")||"").match(/\/embed\/([A-Za-z0-9_-]{11})/); 758return m?"youtube:"+m[1]:"youtube"; 759}catch(e){return "youtube";} 760} 761function ytFrameFor(src){ 762try{ 763var fr=document.querySelectorAll("iframe"); 764for(var i=0;i<fr.length;
764i++){if(fr[i].contentWindow===src)return fr[i];} 765}catch(e){} 766return null; 767} 768// Ask every api-enabled YouTube frame to start reporting, and keep asking. Cheap: a 769// postMessage to a frame that is not a YouTube player is simply ignored. 770function ytListen(){ 771try{ 772var fr=document.querySelectorAll('iframe[src*="enablejsapi=1"]'); 773for(var i=0;i<fr.length;i++){ 774try{fr[i].contentWindow.postMessage('{"event":"listening","id":"hp","channel":"widget"}',"*");}catch(e){} 775} 776}catch(e){} 777} 778setTimeout(ytListen,1200); 779setInterval(ytListen,2000); 780window.addEventListener("message",function(e){ 781try{ 782if(!ytHostOk(e.origin))return; 783var d=e.data; 784// YouTube sends strings; anything else is not its API talking. 785if(typeof d!=="string")return; 786try{d=JSON.parse(d);}catch(x){return;} 787if(!d||typeof d!=="object"||d.event!=="infoDelivery")return; 788var info=d.info; 789if(!info||typeof info!=="object")return; 790var f=ytFrameFor(e.source); 791if(!f)return; 792var id=ytLabel(f); 793var state=info.playerState; 794// Same intent rule as Vimeo and <video>, but YouTube hands us no discrete 'play' 795// event: infoDelivery repeats playerState 1 for the WHOLE of playback. So the 796// decision is made on the TRANSITION into playing and latched there, never 797// re-read. Re-reading it is precisely the bug decidePlay documents, and it is 798// reachable here in a way it is not for <video>: a muted autoplay is correctly 799// suppressed, then one unrelated trusted click (the form, alt-tab, a screenshot) 800// flips userGestured and the next state-1 update promotes a video nobody chose 801// into a counted play, quartiles and all. Latching on the transition also keeps 802// the <video> semantics that a chosen REPLAY after a decorative autoplay counts, 803// because that arrives as 2 then 1. 804var prev=f.__hpYtPrev; 805f.__hpYtPrev=state; 806if(state===1&&prev!==1){ 807f.__hpEmbedCounted=userGestured?1:0; 808if(f.__hpEmbedCounted===1)microEvent("video_start",id); 809} 810if(f.__hpEmbedCounted!==1)return; 811if(state===0){ 812// Ended implies every quartile, even if a throttled tab skipped an update. 813microEvent("video_p25",id);microEvent("video_p50",id);microEvent("video_p75",id);microEvent("video_p100",id); 814return; 815} 816var dur=info.duration,cur=info.currentTime; 817// A live stream reports duration 0, and a quartile of an unknown length is 818// meaningless â report the play and nothing more. 819if(typeof dur!=="number"||typeof cur!=="number"||!isFinite(dur)||dur<=0)return; 820var pct=(cur/dur)*100; 821if(pct>=25)microEvent("video_p25",id); 822if(pct>=50)microEvent("video_p50",id); 823if(pct>=75)microEvent("video_p75",id); 824// p100 comes from playerState 0, not a threshold: the final update lands short. 825}catch(err){} 826}); 827// SYNC-END embed-video-listeners 828document.addEventListener("ended",function(e){ 829var v=e.target; 830if(!v||v.tagName!=="VIDEO")return; 831if(!countedPlay(v))return; 832var id=videoId(v); 833// Watched to the end implies every quartile, even if a throttled background tab 834// skipped a timeupdate. 835microEvent("video_p25",id);microEvent("video_p50",id);microEvent("video_p75",id);microEvent("video_p100",id); 836},true); 837 838// âââ Scheduler widgets (HP-3461 phase 3) ââââââââââââââââââââââââââââââââââââ 839// An inline Calendly/Cal.com embed is a CROSS-ORIGIN iframe, so we cannot see a 840// click inside it â which is why booking_open (a click on an outbound scheduling 841// link) is absent on exactly the pages most likely to take bookings. The widget 842// broadcasts its own progress to the parent window, so we get told instead of 843// guessing. No SDK needed; Calendly posts these regardless. 844// 845// SECURITY: any frame can post a message claiming to be a booking, and this ships 846// on every published page, so the sender's ORIGIN must be a recognised scheduling 847// host AND the message must match the provider's shape. Everything else is ignored. 848// PRIVACY: only WHICH STEP is read. event.data.payload (invitee details on 849// event_scheduled) is never touched. 850// SYNC with app/src/lib/analytics-tracking-script.ts. 851function schedulerOrigin(origin){ 852try{ 853var h=new URL(origin).hostname.toLowerCase(); 854for(var i=0;i<BOOK_HOSTS.length;i++){ 855var b=BOOK_HOSTS[i]; 856if(h===b||h.slice(-(b.length+1))==="."+b)return b; 857} 858}catch(e){} 859return null; 860} 861// calendly.profile_page_viewed is deliberately ignored: it fires for a profile
862// listing rather than a bookable calendar, so it would inflate the funnel's top. 863window.addEventListener("message",function(e){ 864try{ 865var host=schedulerOrigin(e.origin); 866if(!host)return; 867var d=e.data; 868if(!d||typeof d!=="object")return; 869// Calendly's vocabulary reads off d.event and is prefixed; Cal.com's reads off 870// d.type and is not. Verified against live widgets on both, plus Cal.com's own 871// EventDataMap in packages/embeds/embed-core/src/sdk-action-manager.ts. 872// calendly.profile_page_viewed is ignored: it fires for a profile listing rather 873// than a bookable calendar, so it would inflate the top of the funnel. 874// 875// Cal.com HAS NO time-selection event. Its full enum (27 keys) contains nothing for 876// picking a date or slot -- availabilityLoaded and slotsFetched are the widget 877// LOADING options, not a visitor choosing one. So Cal.com reports 2 of the 3 steps, 878// and booking_time_selected is left ABSENT for it rather than synthesised from the 879// booking. Fabricating it would make every Cal.com page show a flat 100% from 880// "selected" to "completed" -- a number that looks measured and is not. Absent 881// already means "not measurable here" everywhere else in this feature (see the 882// video quartiles), and the read side honours that. 883// 884// Emissions are LITERALS, one branch per step, so the sync seam in 885// page-engagement-kinds.test.ts can see them -- it caught booking_completed going 886// unverifiable when this was table-driven. 887var name=typeof d.event==="string"?d.event:(typeof d.type==="string"?d.type:null); 888if(!name)return; 889if(host==="calendly.com"){ 890if(name==="calendly.event_scheduled"){ 891microEvent("booking_viewed",host); 892microEvent("booking_time_selected",host); 893microEvent("booking_completed",host); 894// The booking is the outcome this exists to catch and the visitor usually leaves 895// for the confirmation, so flush rather than wait out the 5s timer. 896flush(); 897}else if(name==="calendly.date_and_time_selected"){ 898microEvent("booking_viewed",host); 899microEvent("booking_time_selected",host); 900}else if(name==="calendly.event_type_viewed"){ 901microEvent("booking_viewed",host); 902} 903}else if(host==="cal.com"){ 904// bookingSuccessfulV2 deprecates bookingSuccessful and both are still in the enum, 905// so accept either -- customers sit on different embed versions. 906if(name==="bookingSuccessfulV2"||name==="bookingSuccessful"){ 907// NOTE: no booking_time_selected here. Cal.com cannot report it. 908microEvent("booking_viewed",host); 909microEvent("booking_completed",host); 910flush(); 911}else if(name==="bookerViewed"){ 912microEvent("booking_viewed",host); 913} 914} 915// No acuityscheduling.com branch, and there never can be one. Its embed script 916// exchanges only sizing/load/scrollTo/scrollBy/gaMeasurementId with the parent and 917// takes a Google Analytics client id INWARD â there is no booking message to hear. 918// Acuity reports outward only through its webhooks (HP-4041's inbound conversion 919// webhook is the route). A branch here would be dead code. See lib/scheduling-hosts. 920// Its origin stays accepted by the gate above, which costs nothing: an origin that 921// never speaks simply never matches. 922}catch(err){} 923}); 924 925// Consent usually arrives seconds after load, so a bare load listener would 926// never fire and rum_timing would vanish from every CMP-gated page. The 927// navigation/paint entries report the same absolute numbers whenever read. 928function hpRumTiming(){ 929setTimeout(function(){ 930try{ 931var perf=performance.getEntriesByType("navigation")[0]; 932if(perf){ 933var ev=makeEvent("rum_timing",{loadTimeMs:Math.round(perf.loadEventEnd-perf.startTime),ttfbMs:Math.round(perf.responseStart-perf.startTime),fcpMs:undefined}); 934var paintEntries=performance.getEntriesByType("paint"); 935for(var i=0;i<paintEntries.length;i++){if(paintEntries[i].name==="first-contentful-paint"){ev.payload.fcpMs=Math.round(paintEntries[i].startTime);break;}} 936buffer.push(ev); 937} 938}catch(e){} 939},2000); 940} 941if(document.readyState==="complete")hpRumTiming();else window.addEventListener("load",hpRumTiming); 942}); 943})(); 944</script>
944<script data-page-id="gg1x1lcpx32tjslsbqxxqmm5" data-page-slug="contact" data-api-url="https://htmlpub.com" data-turnstile-key="0x4AAAAAAD7Sp6X7R_qRx-Cz" data-htmlpub-forms> 945(function(){ 946var s=document.querySelector("script[data-htmlpub-forms]"); 947var pageId=s.getAttribute("data-page-id"); 948var slug=s.getAttribute("data-page-slug"); 949var api=s.getAttribute("data-api-url")+"/api/forms/submit"; 950// Owner-mode: editor previews and the in-app shell load this script with 951// data-owner="1". We still listen for submits (the editor surfaces success 952// state to the user via the toolbar), but we MUST NOT fire conversion 953// pixels â that would pollute the customer's Meta / TikTok pixel data 954// with editor test traffic indistinguishable from real visitors. 955var _hpIsOwner=s.getAttribute("data-owner")==="1"; 956// Preview-mode: the editor's Preview loads owner-gated (draft access + no pixel 957// pollution) but must show the true visitor experience. _hpIsPreview lets visitor-UX 958// blocks (multi-step paging) run even though _hpIsOwner is set; pixel/submission gates 959// stay owner-only. 960var _hpIsPreview=s.getAttribute("data-preview")==="1"; 961var _hpAutomaticConversionEventsEnabled=s.getAttribute("data-automatic-conversion-events")!=="0"; 962var _hpTurnstileKey=s.getAttribute("data-turnstile-key")||""; 963// data-persist-hidden: fields hidden via the inspector â hidden from visitors on 964// the live page but still submitted (attribution/UTM). The edit canvas (owner, NOT 965// preview) skips the rule so the inspector keeps them visible with a "Hidden" chip; 966// Preview applies it so it matches the published page. 967if(!_hpIsOwner||_hpIsPreview){try{var _hpHideStyle=document.createElement("style");_hpHideStyle.setAttribute("data-htmlpub-forms-hide","");_hpHideStyle.textContent="[data-persist-hidden]{display:none!important}";(document.head||document.documentElement).appendChild(_hpHideStyle);}catch(e){}} 968// Multiple-choice radio/checkbox width normalization is NOT injected at runtime. 969// The editor bakes an inline width:auto onto each option input (idempotently), so the 970// fix persists in the saved HTML and follows the normal draft -> publish flow instead 971// of overriding every served form's checkboxes/radios on every page load. 972// A field hidden from visitors (data-persist-hidden -> display:none) that ALSO carries native 973// required cannot be focused, so on a single-step form native constraint validation would 974// silently abort submit on it (the multi-step path already skips hidden fields via 975// _hpValidatable). Drop the required attribute from hidden controls on the served page so 976// submission is never blocked by a field the visitor can't see; the field still submits its value. 977if(!_hpIsOwner||_hpIsPreview){try{var _hpHidReq=document.querySelectorAll("[data-persist-hidden][required],[data-persist-hidden] [required]");for(var _hphr=0;_hphr<_hpHidReq.length;_hphr++)_hpHidReq[_hphr].removeAttribute("required");}catch(e){}} 978// The form's real submit button â never one of the authored multi-step nav buttons 979// (data-persist-ms-back/next), which may be type-less if hand-authored. 980function _hpFindSubmit(form){return form.querySelector("[type=submit]:not([data-persist-ms-back]):not([data-persist-ms-next]),button[type=submit]:not([data-persist-ms-back]):not([data-persist-ms-next]),button:not([type]):not([data-persist-ms-back]):not([data-persist-ms-next])");} 981// A checkbox group marked required-as-a-group (data-persist-group-required) is satisfied when 982// AT LEAST ONE member is checked â native required on each box would wrongly demand ALL. 983// Returns true if every such group within the given scope is satisfied; otherwise reports validity on 984// the first empty group (clearing on the next change) and returns false. 985function _hpGroupReqOK(scope){ 986var boxes=scope.querySelectorAll('input[type="checkbox"][data-persist-group-required]'); 987var groups={}; 988for(var i=0;i<boxes.length;i++){var n=boxes[i].name||("__hp"+i);if(!groups[n])groups[n]=[];groups[n].push(boxes[i]);} 989for(var nm in groups){if(!Object.prototype.hasOwnProperty.call(groups,nm))continue; 990var g=groups[nm],any=false,first=null; 991for(var j=0;j<g.length;j++){if(g[j].closest&&g[j].closest("[data-persist-hidden]"))continue;if(!first)first=g[j];if(g[j].checked)any=true;} 992if(first&&!any){try{first.setCustomValidity("Please select at least one option.");
992if(first.reportValidity)first.reportValidity();var _clr=function(){try{first.setCustomValidity("");}catch(e){}for(var k=0;k<g.length;k++)g[k].removeEventListener("change",_clr);};for(var k2=0;k2<g.length;k2++)g[k2].addEventListener("change",_clr);}catch(e){}return false;}} 993return true; 994} 995// Pick a Turnstile theme (light/dark) from the first opaque background behind the form, so the 996// widget matches the PAGE rather than defaulting to the visitor's system theme ("auto"). Parses 997// the rgb() string without a regex escape (template-literal safe). Falls back to "auto". 998function _hpPickTheme(el){ 999try{ 1000var n=el; 1001while(n&&n.nodeType===1){ 1002var bg=window.getComputedStyle(n).backgroundColor||""; 1003if(bg.indexOf("rgb")===0){ 1004var p=bg.replace(/[^0-9.,]/g,"").split(","); 1005var a=p.length>3?parseFloat(p[3]):1; 1006if(a>0.1){var lum=(0.299*+p[0]+0.587*+p[1]+0.114*+p[2])/255;return lum>0.5?"light":"dark";} 1007} 1008n=n.parentElement; 1009} 1010}catch(e){} 1011return "auto"; 1012} 1013// Inject the Turnstile widget on a spam-protected form via the platform-origin bridge iframe. 1014// The widget CANNOT render inline on a customer's custom domain: Turnstile binds a widget to a 1015// hostname allowlist (Enterprise caps at 200, no wildcards), so customer domains can't be listed. 1016// Instead we embed /turnstile-bridge served from data-api-url (a platform origin that IS on the 1017// allowlist); it renders the widget there and postMessages the token back (see the listener below). 1018// Placed ABOVE the submit's outermost row so on a multi-step footer nav it sits on its own line. 1019// Starts 0px (interaction-only is invisible); the bridge posts a resize only if a challenge appears. 1020// Idempotent; no-op without the feature flag or inside a sandboxed iframe (the /p shell renders its 1021// own widget on the app origin). 1022function _hpInjectCaptcha(f){ 1023if(!_hpTurnstileKey||inSandbox||!f||f.querySelector("iframe[data-hp-turnstile]"))return; 1024var base=(s.getAttribute("data-api-url")||""); 1025if(base&&base.charAt(base.length-1)==="/")base=base.slice(0,-1); 1026if(!base)return; 1027var fr=document.createElement("iframe"); 1028fr.setAttribute("data-hp-turnstile",""); 1029fr.setAttribute("title","Spam protection"); 1030fr.setAttribute("scrolling","no"); 1031fr.style.cssText="width:100%;max-width:320px;height:0;border:0;display:block;overflow:hidden;"; 1032fr.src=base+"/turnstile-bridge?theme="+encodeURIComponent(_hpPickTheme(f)); 1033var sb=_hpFindSubmit(f); 1034if(sb){var row=sb;while(row.parentNode&&row.parentNode!==f)row=row.parentNode;if(row.parentNode===f)f.insertBefore(fr,row);else if(sb.parentNode)sb.parentNode.insertBefore(fr,sb);else f.appendChild(fr);}else f.appendChild(fr); 1035} 1036// Receive the Turnstile token from the platform-origin bridge iframe. Origin-checked against 1037// data-api-url. Stores the token on the owning form for the submit path; resizes the iframe when 1038// Managed mode shows an actual challenge (invisible/auto-pass stays 0px). One listener serves 1039// every captcha form on the page. 1040(function(){ 1041var _hpBO="";try{_hpBO=new URL(s.getAttribute("data-api-url")||"",location.href).origin;}catch(e){} 1042window.addEventListener("message",function(e){ 1043if(!_hpBO||e.origin!==_hpBO)return; 1044var d=e.data;if(!d||d.source!=="hp-turnstile")return; 1045var frs=document.querySelectorAll("iframe[data-hp-turnstile]"),host=null; 1046for(var i=0;i<frs.length;i++){if(frs[i].contentWindow===e.source){host=frs[i];break;}} 1047if(!host)return; 1048var form=host.closest?host.closest("form"):null; 1049if(d.type==="token"){if(form){form.__hpCaptchaToken=(d.token||"");form.__hpCaptchaError=false;}} 1050else if(d.type==="expired"){if(form)form.__hpCaptchaToken="";} 1051// A terminal bridge error (misconfigured/unreachable widget, keys mismatch) means no token can 1052// ever be produced; flag it so the submit gate fails OPEN rather than trapping the visitor forever 1053// (the server still fails open for the same unconfigured case). Distinct from expired (retr
1053yable). 1054else if(d.type==="error"){if(form){form.__hpCaptchaToken="";form.__hpCaptchaError=true;}} 1055else if(d.type==="resize"){var h=+d.height||0;host.style.height=(h>0?h:0)+"px";host.style.margin=(h>0?"12px 0":"0");} 1056}); 1057})(); 1058// Bounded wait for a Turnstile token, with a single re-challenge (decided fail policy #1/#2). 1059// The bridge delivers the token via postMessage, which can land slightly AFTER the visitor 1060// clicks submit (invisible challenge still resolving). Give it a bounded window; if none 1061// arrives, force ONE fresh challenge (reload the bridge iframe) and wait a final window; if 1062// STILL none, proceed anyway â the server accepts the lead and flags it unverified rather 1063// than dropping it. done() runs exactly once: as soon as a token appears, the bridge reports 1064// a terminal error, or the budget is spent. 1065function _hpWaitForCaptcha(f,done){ 1066var WAIT=3000,STEP=100,called=false; 1067function finish(){if(called)return;called=true;done();} 1068function poll(deadline,onExpire){ 1069if((f.__hpCaptchaToken||"")!==""||f.__hpCaptchaError){finish();return;} 1070if(Date.now()>=deadline){onExpire();return;} 1071setTimeout(function(){poll(deadline,onExpire);},STEP); 1072} 1073poll(Date.now()+WAIT,function(){ 1074if((f.__hpCaptchaToken||"")!==""||f.__hpCaptchaError){finish();return;} 1075try{var fr=f.querySelector("iframe[data-hp-turnstile]");if(fr)fr.src=fr.src;}catch(e){} 1076poll(Date.now()+WAIT,finish); 1077}); 1078} 1079// reCAPTCHA enforcement (HP-1475): only pages whose owner opted in emit this 1080// flag. It gates the client-side submit block below so pages that merely carry 1081// a decorative widget (the pre-HP-1475 status quo) keep working unchanged. 1082var _hpRecaptchaEnforced=s.getAttribute("data-recaptcha-enforced")==="1"; 1083var corrId=0; 1084var pendingCallbacks={}; 1085 1086// Detect if we're in a sandboxed iframe 1087var inSandbox=false; 1088try{inSandbox=window!==window.parent;}catch(e){inSandbox=true;} 1089 1090function cleanKey(s){return s.toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_|_$/g,"").substring(0,30);} 1091// SYNC: mirror worker-pages/src/scripts/forms.ts and app/src/lib/extract-form-fields.ts 1092function looksLikeRawId(s){return /^[a-f0-9]{32}$/i.test(s)||/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/i.test(s)||/^[a-f0-9]{32}-[A-Za-z0-9_-]{20,40}$/.test(s);} 1093function fieldKey(el,idx){ 1094if(el.name&&!looksLikeRawId(el.name))return el.name; 1095if(el.id&&!looksLikeRawId(el.id))return el.id; 1096var df=el.getAttribute("data-field")||el.getAttribute("data-name"); 1097if(df&&!looksLikeRawId(df))return df; 1098// Type-based semantic hint. <input type="email"> without an explicit name 1099// should still be identified as "email" so the lead-capture extractor can 1100// find the address. Same for tel/url. Critical when the page builder 1101// (HTMLPub editor / Sacca's offers.leadpages.com pages) emits inputs 1102// without name attributes â without this, the email field gets keyed off 1103// its placeholder ("alex_at_youragency_com") and no lead is extracted. 1104if(el.type==="email")return "email"; 1105if(el.type==="tel")return "phone"; 1106if(el.type==="url")return "url"; 1107// Sibling label pattern: <label>Foo</label><input ...> inside a wrapper. 1108// Common in modern form layouts. The existing closest(label) check below 1109// only catches WRAPPING labels, not sibling ones. 1110var prev=el.previousElementSibling; 1111if(prev&&prev.tagName==="LABEL"&&prev.textContent){var pk=cleanKey(prev.textContent);if(pk)return pk;} 1112if(el.placeholder){var ck=cleanKey(el.placeholder);if(ck)return ck;} 1113var al=el.getAttribute("aria-label"); 1114if(al){var ck2=cleanKey(al);if(ck2)return ck2;} 1115if(el.id){var lbl=document.querySelector('label[for="'+el.id+'"]');if(lbl&&lbl.textContent){var ck3=cleanKey(lbl.textContent);if(ck3)return ck3;}} 1116var par=el.closest?el.closest("label"):null; 1117if(par&&par.textContent){var ck4=cleanKey(par.textContent);if(ck4)return ck4;} 1118return (el.type||"field")+"_"+idx; 1119} 1120// Known third-party tracking field patterns to ignore 1121var _blocklist=/^(lp[_s]?plan|ub[_s]?plan|gtrans|__hstc|__hssc|__hsfp|hutk|_mkto_trk|_biz_uid|_biz_nA|_biz_pendingA|_biz_flagsA|mkt_tok|li_fat_id|_ga|_gid|_fbp|_fbc|_uetsid|_uetvid|mc_cid|mc_eid|_drip_client_|__ss|__ss_referrer|ss_campaign|ss_source|ss_cid|siq_|sq_|_uc_|tl|sl|vote|query|_hp_vid|g-recaptcha-response)$/i; 1122function _isInjected(el){
1123// Skip hidden inputs not present in the original page HTML. 1124// Third-party scripts (Customers.ai, HubSpot, etc.) inject hidden fields 1125// at runtime. We detect these by checking if they were present at DOMContentLoaded. 1126if(el.type==="hidden"&&!el.hasAttribute("data-hp-original"))return true; 1127return false; 1128} 1129function collect(f){ 1130var d={}; 1131var els=f.elements||f.querySelectorAll("input,textarea,select"); 1132var used={}; 1133var hasVisibleValue=false; 1134for(var i=0;i<els.length;i++){ 1135var el=els[i]; 1136if(el.type==="file"||el.type==="submit"||el.type==="button")continue; 1137if((el.type==="checkbox"||el.type==="radio")&&!el.checked)continue; 1138if(_isInjected(el))continue; 1139// International-phone controls: the visible national input (data-hp-phone-nat) and 1140// the injected country <select> (data-hp-phone-cc) are NOT collected â the hidden 1141// E.164 companion carries the value under the field's name. The national input still 1142// counts toward hasVisibleValue so a phone-only form isn't treated as empty. 1143if(el.hasAttribute&&el.hasAttribute("data-hp-phone-nat")){if(el.value&&el.value.trim())hasVisibleValue=true;continue;} 1144if(el.hasAttribute&&el.hasAttribute("data-hp-phone-cc"))continue; 1145// Empty URL-param inputs are dropped from the payload so direct-traffic 1146// submissions from a form with data-persist-capture-utms (or hand-authored 1147// data-persist-url-param inputs) don't ship 7 blank attribution columns 1148// into every submission, integration webhook, CSV export, and CAPI event. 1149// Author-provided value="direct" (or any non-empty default) still ships. 1150if(el.type==="hidden"&&!(el.value||"").trim()&&el.hasAttribute("data-persist-url-param"))continue; 1151var key=fieldKey(el,i); 1152if(_blocklist.test(key))continue; 1153if(used[key]){key=key+"_"+i;} 1154used[key]=true; 1155d[key]=el.value; 1156if(el.type!=="hidden"&&el.value&&el.value.trim())hasVisibleValue=true; 1157} 1158// Require at least one visible field with a value â pure hidden-field submissions are noise 1159if(!hasVisibleValue)return {}; 1160return d; 1161} 1162 1163// Generate a UUID v4 (browser-side). Used as the eventID that ties the 1164// fbq/ttq browser event to the matching CAPI event the server sends via 1165// the integration queue â provider workflow, so pixel platforms can dedup. 1166function _hpUuid(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(c){var r=Math.random()*16|0;return(c==="x"?r:(r&3|8)).toString(16);});} 1167 1168// Fire the canonical "Lead" event on every installed pixel platform. Only 1169// platforms that booted (window.fbq, window.ttq, window.gtag, window.dataLayer) 1170// receive a call â others no-op cleanly. The eventID is threaded into the 1171// provider-specific dedup parameter (Meta: eventID, TikTok: event_id). 1172function _hpFireLead(formIdent,data,eventId){ 1173 if(_hpIsOwner||!_hpAutomaticConversionEventsEnabled)return; 1174 var em=null,ph=null,fn=null,ln=null; 1175 for(var k in data){ 1176 if(!Object.prototype.hasOwnProperty.call(data,k))continue; 1177 var v=(data[k]||"").toString().trim(); 1178 if(!v)continue; 1179 var kl=k.toLowerCase(); 1180 if(!em&&/email/.test(kl)&&/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(v))em=v; 1181 else if(!ph&&/phone|tel|mobile/.test(kl))ph=v; 1182 else if(!fn&&/first.?name|fname/.test(kl))fn=v; 1183 else if(!ln&&/last.?name|lname/.test(kl))ln=v; 1184 } 1185 var custom={};if(em)custom.em=em;if(ph)custom.ph=ph;if(fn)custom.fn=fn;if(ln)custom.ln=ln; 1186 try{if(window.fbq)window.fbq("track","Lead",custom,{eventID:eventId});}catch(e){} 1187 try{if(window.ttq&&window.ttq.track)window.ttq.track("SubmitForm",custom,{event_id:eventId});}catch(e){} 1188 try{if(window.gtag)window.gtag("event","generate_lead",{event_id:eventId,lp_form_id:formIdent});}catch(e){} 1189 try{if(window.dataLayer&&window.dataLayer.push)window.dataLayer.push({event:"lp_form_submit",lp_event_id:eventId,lp_form_id:formIdent});}catch(e){} 1190} 1191 1192// First-interaction hook: when the visitor focuses any form field for the 1193// first time on this page, fire the platform's "started a form" event. 1194// Once per form per page (debounced via _hpFiredInitFocus). 1195var _hpFiredInitFocus={}; 1196function _hpFireInitiateCheckout(formIdent){ 1197 if(_hpIsOwner||!_hpAutomaticConversionEventsEnabled)return; 1198 if(_hpFiredInitFocus[formIdent])return; 1199 _hpFiredInitFocus[formIdent]=true; 1200 var eid=_hpUuid(); 1201 try{if(window.fbq)window.fbq("track","InitiateCheckout",{}
1201,{eventID:eid});}catch(e){} 1202 try{if(window.ttq&&window.ttq.track)window.ttq.track("InitiateCheckout",{},{event_id:eid});}catch(e){} 1203 try{if(window.gtag)window.gtag("event","form_start",{event_id:eid,lp_form_id:formIdent});}catch(e){} 1204 try{if(window.dataLayer&&window.dataLayer.push)window.dataLayer.push({event:"lp_form_start",lp_event_id:eid,lp_form_id:formIdent});}catch(e){} 1205} 1206// HP-3461 â the same first-interaction moment, reported to OUR analytics. It has 1207// been detected here all along and told to Facebook, TikTok, Google and GTM 1208// (above) while our own funnel never heard about it, so "169 started the form, 17 1209// finished" was unanswerable from first-party data. 1210// 1211// Deliberately NOT inside _hpFireInitiateCheckout: that is gated on 1212// _hpAutomaticConversionEventsEnabled, the customer's AD-PIXEL preference, and 1213// switching off automatic ad conversion events must not blind our own analytics. 1214// 1215// Requires a real visitor gesture. A focusin alone is not evidence of intent: 1216// <input autofocus>, a popup that focuses its email field on open, and browser 1217// autofill all fire it with nobody touching the keyboard, which would report a 1218// form_start for ~every session and make the abandonment number this feature 1219// exists to answer ("169 started, 17 finished") read as a 100% start rate on a 1220// page nobody typed into. _hpFireInitiateCheckout above has always had this bug; 1221// it only ever fed ad pixels, so nobody noticed. 1222// 1223// Owner previews self-gate: analyticsTrackingScript returns on data-owner="1" 1224// BEFORE registering window.__hpupPushEvent, so this finds no bridge and no-ops. 1225// (The edge serves only public traffic, so the same code is correct on both 1226// hosts. Known gap, pre-existing and not widened by form_start: the Nova page 1227// switcher omits ?token=, so isOwnerForAnalytics misses it and page_view / 1228// scroll_depth / element_click already report from that path.) 1229// SYNC with worker-pages/src/scripts/forms.ts â these files must stay byte-identical. 1230var _hpFormStartGesture=false; 1231function _hpMarkFormGesture(){_hpFormStartGesture=true;} 1232document.addEventListener("pointerdown",_hpMarkFormGesture,true); 1233document.addEventListener("keydown",_hpMarkFormGesture,true); 1234document.addEventListener("touchstart",_hpMarkFormGesture,{passive:true,capture:true}); 1235// Object.create(null), not {}: the key is formId(), i.e. the author-controlled 1236// id/name attribute. With a bare object a form named "constructor" or "toString" 1237// reads as already-fired on its very first focus and never reports at all, and 1238// "__proto__" cannot even be latched â the page would show submissions with no 1239// starts whatsoever. 1240var _hpFiredFormStart=Object.create(null); 1241function _hpReportFormStart(formIdent){ 1242 if(!_hpFormStartGesture)return; 1243 var k=String(formIdent||""); 1244 if(_hpFiredFormStart[k])return; 1245 _hpFiredFormStart[k]=true; 1246 try{if(window.__hpupPushEvent)window.__hpupPushEvent("page_engagement",{kind:"form_start",id:k.slice(0,128)});}catch(e){} 1247} 1248document.addEventListener("focusin",function(e){ 1249 var el=e.target; 1250 if(!el||(el.tagName!=="INPUT"&&el.tagName!=="TEXTAREA"&&el.tagName!=="SELECT"))return; 1251 if(el.type==="hidden"||el.type==="submit"||el.type==="button")return; 1252 var f=el.closest&&(el.closest("form")||el.closest("[data-htmlpub-fake-form]")); 1253 if(!f)return; 1254 _hpReportFormStart(formId(f)); 1255 _hpFireInitiateCheckout(formId(f)); 1256},true); 1257 1258// Set _hp_email cookie when we find an email in form data (for CRM personalization) 1259function setEmailCookie(data){ 1260var email=null; 1261for(var k in data){ 1262if(!data.hasOwnProperty(k))continue; 1263var v=(data[k]||"").toString(); 1264if(/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(v.trim())){email=v.trim();break;} 1265} 1266if(email){ 1267try{var enc=btoa(email.toLowerCase().trim());document.cookie="_hp_email="+encodeURIComponent(enc)+";path=/;max-age=31536000;SameSite=Lax;Secure";}catch(e){} 1268} 1269} 1270 1271// Read _hpid from URL and set cookie for future visits 1272(function(){ 1273var p=new URLSearchParams(window.location.search); 1274var hpid=p.get("_hpid"); 1275if(hpid){ 1276try{var decoded=atob(hpid);if(decoded.indexOf("@")!==-1){document.cookie="_hp_email="+encodeURIComponent(hpid)+";path=/;max-age=31536000;SameSite=Lax;Secure";}}catch(e){} 1277} 1278})(); 1279 1280// URL-parameter auto-populate. Any input/textarea/select with 1281// data-persist-url-param="<name>" gets its value set from 1282// URLSearchParams(location.search).get(<name>) on script boot. Enables UTM / 1283// gclid / fbclid / any-custom-param capture into form submissions without a
1284// custom head script. An author (or the AI builder) drops 1285// <input type="hidden" name="utm_source" data-persist-url-param="utm_source"> 1286// and the runtime fills it in from ?utm_source=... on page load. Runs 1287// BEFORE the data-hp-original tagging pass below so the populated hidden 1288// inputs get stamped and pass _isInjected. utm_* names are not on 1289// _blocklist. Missing params leave any pre-existing value intact so authors 1290// can specify a fallback via a plain value="" on the input. Selector is 1291// scoped to form fields so a stray attribute on a non-form element is a 1292// no-op rather than a silent property write. Repeated params 1293// (?utm_source=a&utm_source=b) resolve to the first value ("a") per the 1294// URLSearchParams.get() spec. 1295try{ 1296var _hpUrlParams=new URLSearchParams(window.location.search); 1297document.querySelectorAll("input[data-persist-url-param],textarea[data-persist-url-param],select[data-persist-url-param]").forEach(function(el){ 1298var pname=el.getAttribute("data-persist-url-param"); 1299if(!pname)return; 1300var pv=_hpUrlParams.get(pname); 1301if(pv!==null&&pv!=="")el.value=pv; 1302}); 1303}catch(e){} 1304 1305// Standard-UTM auto-capture. A form with data-persist-capture-utms gets the 1306// seven standard attribution params (utm_source, utm_medium, utm_campaign, 1307// utm_term, utm_content, gclid, fbclid, msclkid) auto-injected as hidden inputs + 1308// populated from URLSearchParams if the URL carries them. Editor UI toggles 1309// the attribute; runtime does the injection. Idempotent by name, so a form 1310// with a pre-existing named hidden input (author-written or AI-authored) 1311// keeps its own definition and is only value-populated by the URL-param 1312// pass above. Runs BEFORE the data-hp-original tagging pass below so the 1313// injected inputs get stamped and pass _isInjected on submission. 1314try{ 1315var _HP_STD_UTMS=["utm_source","utm_medium","utm_campaign","utm_term","utm_content","gclid","fbclid","msclkid"]; 1316document.querySelectorAll("form[data-persist-capture-utms]").forEach(function(f){ 1317_HP_STD_UTMS.forEach(function(n){ 1318if(f.querySelector('input[name="'+n+'"]'))return; 1319var inp=document.createElement("input"); 1320inp.type="hidden"; 1321inp.name=n; 1322inp.setAttribute("data-persist-url-param",n); 1323var v=_hpUrlParams.get(n); 1324if(v!==null&&v!=="")inp.value=v; 1325f.appendChild(inp); 1326}); 1327}); 1328}catch(e){} 1329 1330// Cloudflare Turnstile CAPTCHA. A form with data-persist-captcha gets the bridge iframe 1331// injected before its submit control when the feature flag is set. TOP-LEVEL path only â in 1332// the sandboxed /p/ iframe the parent shell renders the widget (opaque origin can't run 1333// Turnstile). Owner/editor previews skip it. The bridge posts the token back (listener near 1334// _hpInjectCaptcha), stashed on the form and read by submitData as the top-level captchaToken. 1335if(!_hpIsOwner&&!inSandbox){try{ 1336document.querySelectorAll("form[data-persist-captcha]").forEach(function(f){ 1337// Multi-step forms defer injection to the LAST step (see the multi-step render), so the 1338// widget renders fresh + visible next to the submit and never appears on an earlier step. 1339if(f.hasAttribute("data-persist-multistep"))return; 1340_hpInjectCaptcha(f); 1341}); 1342}catch(e){}} 1343 1344// Authored multi-step progress indicator â a real [data-persist-ms-progress] element the 1345// editor builds as page content (variant "text" | "bar" | "dots"), so the author restyles it 1346// like anything else on the page. Only its STATE is written here; the structure is authored 1347// markup and is never rebuilt, or a restyle would be thrown away on every step. MIRROR of 1348// syncMsProgressState in visual-editor/iframe-script/utils.ts, which does the same for the 1349// edit canvas â that file cannot be imported from here (this script is a self-contained twin 1350// of a separate Cloudflare-worker package; see form-scripts-sync.test.ts), so the two copies 1351// must agree on every attribute name below. Not to be confused with the TRANSIENT 1352// data-htmlpub-ms-progress line further down, injected only for a form with no authored nav. 1353function _hpMsProgress(f,cur,total){ 1354var p=f.querySelector("[data-persist-ms-progress]"); 1355if(!p)return; 1356var t=p.querySelector("[data-persist-ms-progress-text]"); 1357if(t)t.textContent="Step "+(cur+1)+" of "+total; 1358var fill=p.querySelector("[data-persist-ms-progress-fill]"); 1359if(fill)fill.style.width=(total>0?((cur+1)/total)*100:100)+"%"; 1360var dots=p.querySelectorAll("[data-persist-ms-progress-dot]"); 1361for(var i=0;i<dots.length;i++)dots[i].style.opacity=(i<=cur?"1":"0.25"); 1362// A connector counts as travelled only once the step AFTER it is reached. 1363var lines=p.querySelectorAll("[data-persist-ms-progress-line]"); 1364for(var j=0;j<lines.length;j++)lines[j].style.opacity=(j<cur?"1":"0.25"); 1365} 1366 1367// ââ Multi-step forms ââ a form[data-persist-multistep] shows one [data-persist-step] 1368// container at a time, and validates the current step's required fields before advancing. 1369// Navigation uses the AUTHORED, page-styled buttons the editor creates â
1370// [data-persist-ms-next] (advance) + [data-persist-ms-back] (retreat) â with the real submit 1371// shown only on the last step. Legacy / hand-authored forms with no such buttons get a 1372// transient injected Back/Next + progress line (data-htmlpub-*, never saved) so they still 1373// work. The controller is stashed on the form as __hpMultiStep so the submit handler advances 1374// instead of submitting until the last step. The edit canvas (owner, NOT preview) skips this 1375// so every field stays visible for editing; Preview (data-preview="1") runs it. 1376if(!_hpIsOwner||_hpIsPreview){try{ 1377document.querySelectorAll("form[data-persist-multistep]").forEach(function(f){ 1378var steps=[].slice.call(f.querySelectorAll("[data-persist-step]")); 1379if(steps.length<2){ 1380// A single-step form has no navigation â hide any authored Back/Next so they don't render 1381// as dead buttons; the submit stays as the only action. 1382var _hpDead=f.querySelectorAll("[data-persist-ms-back],[data-persist-ms-next]"); 1383for(var _hpd=0;_hpd<_hpDead.length;_hpd++)_hpDead[_hpd].style.display="none"; 1384// Same reasoning for an authored progress indicator: with no steps to advance through it 1385// would sit there reading "Step 1 of 1". 1386var _hpProg1=f.querySelector("[data-persist-ms-progress]"); 1387if(_hpProg1)_hpProg1.style.display="none"; 1388// A degenerate multi-step form (0 or 1 real steps) behaves like a plain form, but the boot-time 1389// captcha pass skipped it (it carries data-persist-multistep) and the last-step inject below 1390// never runs. Inject the widget here â otherwise the server enforces a token this page never 1391// produces and every submission is rejected (100% lead loss), while the editor still shows the 1392// placeholder. Mirrors the non-multistep boot path (owner/preview skip via !_hpIsOwner). 1393if(!_hpIsOwner&&f.hasAttribute("data-persist-captcha"))_hpInjectCaptcha(f); 1394return; 1395} 1396steps.sort(function(a,b){return (parseInt(a.getAttribute("data-persist-step"),10)||0)-(parseInt(b.getAttribute("data-persist-step"),10)||0);}); 1397// Suppress native whole-form constraint validation: a required field in a 1398// not-yet-reached (display:none) step would otherwise abort submission and block 1399// Enter-to-advance. We validate each step in JS instead (validateStep on every hop 1400// + the last step on final submit), so required fields are still enforced. 1401f.noValidate=true; 1402// Exclude the authored nav buttons so a type-less [data-persist-ms-*] button is never picked as the submit. 1403var submit=_hpFindSubmit(f); 1404var submitDisp=submit?submit.style.display:""; 1405var cur=0; 1406// Prefer the authored nav buttons; fall back to injecting them for legacy forms. 1407var next=f.querySelector("[data-persist-ms-next]"); 1408var back=f.querySelector("[data-persist-ms-back]"); 1409var prog=null; 1410if(!next){ 1411// Skipped when the form carries an AUTHORED indicator: the transient one exists only to 1412// stand in for a form that has none, and rendering both reads as a duplicate. 1413if(!f.querySelector("[data-persist-ms-progress]")){ 1414prog=document.createElement("div"); 1415prog.setAttribute("data-htmlpub-ms-progress",""); 1416prog.style.cssText="font-family:system-ui,sans-serif;font-size:13px;opacity:0.7;margin-bottom:8px;"; 1417if(steps[0].parentNode)steps[0].parentNode.insertBefore(prog,steps[0]); 1418} 1419var nav=document.createElement("div"); 1420nav.setAttribute("data-htmlpub-ms-nav",""); 1421nav.style.cssText="display:flex;gap:8px;margin-top:8px;"; 1422// Reuse an authored Back if the form has one (only Next was missing) â don't inject a duplicate. 1423if(!back){back=document.createElement("button");back.type="button";back.setAttribute("data-htmlpub-ms-back","");back.textContent="Back";} 1424next=document.createElement("button");next.type="button";next.setAttribute("data-htmlpub-ms-next","");next.textContent="Next"; 1425if(submit&&submit.className){next.className=submit.className;if(!back.className)back.className=submit.className;} 1426nav.appendChild(back);nav.appendChild(next); 1427var lastStep=steps[steps.length-1]; 1428if(lastStep.parentNode)lastStep.parentNode.insertBefore(nav,lastStep.nextSibling); 1429} 1430var nextDisp=next?next.style.display:""; 1431var backDisp=back?back.style.display:""; 1432function render(){ 1433for(var i=0;i<steps.length;i++)steps[i].style.display=(i===cur?"":"none"); 1434if(prog)prog.textContent="Step "+(cur+1)+" of "+steps.length; 1435_hpMsProgress(f,cur,steps.length); 1436var last=cur===steps.length-1; 1437if(back)back.style.display=cur>0?backDisp:"none"; 1438if(next)next.style.display=last?"none":nextDisp; 1439if(submit)submit.style.display=last?submitDisp:"none"; 1440// Spam protection: inject the Turnstile widget the moment the visitor reaches the last step 1441// (fresh + visible so its token populates reliably â hiding it via display:none does not). 1442if(last&&!_hpIsOwner&&f.hasAttribute("data-persist-captcha"))_hpInjectCaptcha(f); 1443} 1444function _hpValidatable(c){ 1445// Skip fields the visitor can't see/act on â a data-persist-hidden (display:none) or 1446// disabled required field can't show a validation bubble and would silently trap them. 1447if(c.disabled)return false;
1448if(c.closest&&c.closest("[data-persist-hidden]"))return false; 1449return typeof c.checkValidity==="function"; 1450} 1451function validateStep(){ 1452var ctrls=steps[cur].querySelectorAll("input,select,textarea"); 1453for(var i=0;i<ctrls.length;i++){ 1454if(_hpValidatable(ctrls[i])&&!ctrls[i].checkValidity()){ 1455if(typeof ctrls[i].reportValidity==="function")ctrls[i].reportValidity(); 1456return false; 1457} 1458} 1459return _hpGroupReqOK(steps[cur]); 1460} 1461function validateOutside(){ 1462// Required controls authored OUTSIDE any step container are never in validateStep's scope; 1463// f.noValidate is on form-wide, so validate them on final submit or they'd submit empty. 1464var all=f.querySelectorAll("input,select,textarea"); 1465for(var i=0;i<all.length;i++){ 1466var c=all[i]; 1467if(c.closest&&c.closest("[data-persist-step]"))continue; 1468if(_hpValidatable(c)&&!c.checkValidity()){ 1469if(typeof c.reportValidity==="function")c.reportValidity(); 1470return false; 1471} 1472} 1473return true; 1474} 1475function advance(){if(cur<steps.length-1&&validateStep()){cur++;render();}} 1476if(next)next.addEventListener("click",function(e){if(e&&e.preventDefault)e.preventDefault();advance();}); 1477if(back)back.addEventListener("click",function(e){if(e&&e.preventDefault)e.preventDefault();if(cur>0){cur--;render();}}); 1478// validate() re-checks the CURRENT step + any required controls outside all steps â the 1479// submit handler calls it on the last step before sending (native validation is off). 1480f.__hpMultiStep={isLast:function(){return cur>=steps.length-1;},advance:advance,validate:function(){return validateStep()&&validateOutside();}}; 1481render(); 1482}); 1483}catch(e){}} 1484 1485// ââ International phone ââ input[type=tel][data-persist-phone] gets a country 1486// dial-code <select> injected before it + a hidden E.164 companion that carries the 1487// real submitted value (+<dial><national digits>) under the field's name. The visible 1488// tel input keeps the national number for display and is excluded from collect() 1489// (data-hp-phone-nat); the <select> is excluded too (data-hp-phone-cc). On every 1490// input / country change the E.164 is reassembled and validated â E.164 spec (7â15 1491// total digits) plus a GENEROUS per-country national-length range where the length is 1492// well known â via setCustomValidity, so native validation blocks a malformed submit 1493// on single-step forms and validateStep() enforces it on multi-step ones. Runs BEFORE 1494// the data-hp-original tagging pass so the hidden companion is stamped and collected. 1495// Runs in owner mode too so the editor preview shows the selector (the validity flag 1496// is harmless there â owner previews don't submit real leads). data-persist-phone / 1497// data-persist-phone-country are persistent (never stripped from the AI diff); the 1498// injected select + companion are data-hp-* (transient) and never saved. 1499try{ 1500var _HP_PHONE=[["US","United States","1",10,10,0],["CA","Canada","1",10,10,0],["GB","United Kingdom","44",9,10,0],["AU","Australia","61",9,9,0],["DE","Germany","49",0,0,0],["FR","France","33",9,9,0],["IN","India","91",10,10,0],["BR","Brazil","55",10,11,0],["MX","Mexico","52",10,10,0],["ES","Spain","34",9,9,0],["IT","Italy","39",9,11,1],["NL","Netherlands","31",9,9,0],["AE","United Arab Emirates","971",9,9,0],["SG","Singapore","65",8,8,0],["JP","Japan","81",9,11,0],["CN","China","86",8,11,0],["ZA","South Africa","27",9,9,0],["NG","Nigeria","234",10,10,0],["IE","Ireland","353",7,9,0],["NZ","New Zealand","64",8,10,0],["AR","Argentina","54",0,0,0],["AT","Austria","43",0,0,0],["BE","Belgium","32",0,0,0],["BD","Bangladesh","880",0,0,0],["BG","Bulgaria","359",0,0,0],["BH","Bahrain","973",8,8,0],["BO","Bolivia","591",0,0,0],["CH","Switzerland","41",9,9,0],["CL","Chile","56",0,0,0],["CO","Colombia","57",8,10,0],["CR","Costa Rica","506",8,8,0],["CY","Cyprus","357",8,8,0],["CZ","Czechia","420",9,9,0],["DK","Denmark","45",8,8,0],["DO","Dominican Republic","1",10,10,0],["EC","Ecuador","593",0,0,0],["EG","Egypt","20",0,0,0],["EE","Estonia","372",0,0,0],["FI","Finland","358",0,0,0],["GR","Greece","30",10,10,0],["GT","Guatemala","502",8,8,0],["HK","Hong Kong","852",8,8,0],["HR","Croatia","385",0,0,0],["HU","Hungary","36",0,0,0],["ID","Indonesia","62",0,0,0],["IL","Israel","972",8,9,0],["JO","Jordan","962",0,0,0],["KE","Kenya","254",0,0,0],["KR","South Korea","82",0,0,0],["KW","Kuwait","965",8,8,0],["LK","Sri Lanka","94",9,9,0],["LT","Lithuania","370",8,8,0],["LU","Luxembourg","352",0,0,0],["LV","Latvia","371",8,8,0],["MA","Morocco","212",9,9,0],["MY","Malaysia","60",0,0,0],["NO","Norway","47",8,8,0],["OM","Oman","968",8,8,0],["PA","Panama","507",0,0,0],["PE","Peru","51",9,9,0],["PH","Philippines","63",9,10,0],["PK","Pakistan","92",10,10,0],["PL","Poland","48",9,9,0],["PT","Portugal","351",9,9,0],["PY","Paraguay","595",0,0,0],["QA","Qatar","974",8,8,0],["RO","Romania","40",9,9,0],["RS","Serbia","381",0,0,0],["RU","Russia","7",10,10,0],["SA","Saudi Arabia","966",9,9,0],["SE","Sweden","46",0,0,0],["SK","Slovakia","421",9,9,0],["SI","Slovenia","386",0,0,0],["TH","Thailand","66",9,9,0],["TN","Tunisia","216",8,8,0],["TR","Turkey","90",10,10,0],["TW","Taiwan","886",0,0,0],["UA","Ukraine","380",9,9,0],["UY","Uruguay","598",0,0,0],["VE","Venezuela","58",0,0,0],["VN","Vietnam","84",0,0,0]]; 1501var _hpPhoneByIso={};for(var _hppi=0;_hppi<_HP_PHONE.length;_hppi++){_hpPhoneByIso[_HP_PHONE[_hppi][0]]=_HP_PHONE[_hppi];} 1502var _hpDigits=function(s){return (s||"").replace(/[^0-9]/g,"");}; 1503var _hpFlag=function(iso){try{return String.fromCodePoint(0x1F1E6+(iso.charCo
1503deAt(0)-65))+String.fromCodePoint(0x1F1E6+(iso.charCodeAt(1)-65));}catch(e){return "";}}; 1504// Reduce the typed digits to the country's national significant number (NSN): strip a 1505// user-typed country code (guarded by the expected NSN length so a valid number is never 1506// shortened) and a national trunk prefix "0" (guarded so it never drops below the country 1507// minimum; suppressed for keepLeadingZero countries like Italy). Lead-safe: each strip 1508// fires only when it yields a still-plausible NSN, so "07911 123456", "06 12 34 56 78" and 1509// "1 (415) 555-2671" all assemble to correct E.164 and pass validation. 1510var _hpNSN=function(nat,cur){ 1511var dial=cur[2],min=cur[3],max=cur[4],keep0=cur[5]; 1512if(dial&&nat.length>dial.length&&nat.substring(0,dial.length)===dial){ 1513var rest=nat.substring(dial.length); 1514var restT=(!keep0&&rest.charAt(0)==="0")?rest.replace(/^0+/,""):rest; 1515if(min&&max){ 1516// Known national length: keep whichever candidate fits the country's range. 1517if(restT.length>=min&&restT.length<=max)nat=restT; 1518else if(rest.length>=min&&rest.length<=max)nat=rest; 1519} 1520// Variable-length country (min/max unknown): do NOT strip the leading dial-code digits â 1521// for those countries a real national number can legitimately begin with its own dial 1522// code, and chopping it corrupts the number (F4). "+"-prefixed input is handled before 1523// _hpNSN, so this only affects the ambiguous no-"+" case; keep the digits as typed. 1524} 1525if(!keep0&&nat.charAt(0)==="0"){var s=nat.replace(/^0+/,"");if(!min||s.length>=min)nat=s;} 1526// Russia/Kazakhstan (dial 7) use "8" as the national trunk prefix, not "0". Strip a lone 1527// leading "8", guarded by the country minimum so a valid NSN is never shortened (F3). 1528if(dial==="7"&&nat.charAt(0)==="8"){var s8=nat.replace(/^8/,"");if(!min||s8.length>=min)nat=s8;} 1529return nat; 1530}; 1531document.querySelectorAll('input[type="tel"][data-persist-phone]').forEach(function(inp){ 1532if(inp.getAttribute("data-hp-phone-on")==="1")return; 1533inp.setAttribute("data-hp-phone-on","1"); 1534// Key the E.164 companion the SAME way collect()/extract-form-fields key a plain tel 1535// input (name -> id -> data-field -> "phone"), computed BEFORE any DOM mutation so 1536// enabling international never changes which lead column the number lands in. 1537var nm=fieldKey(inp,0); 1538var iso=(inp.getAttribute("data-persist-phone-country")||"US").toUpperCase(); 1539if(!_hpPhoneByIso[iso])iso="US"; 1540// Custom country combobox. A native <select> can't show a compact "flag +dial" when 1541// CLOSED and full country names when OPEN: its closed text IS the selected option's 1542// text, and a same-value close fires no event to swap it back. So we build a small 1543// self-contained combobox â a styled trigger button showing "flag +dial" + a panel 1544// listing full country names. curIso tracks the selection for E.164 assembly. Lay it 1545// out side by side with the number in a flex row (standard international-phone layout); 1546// the trigger copies the number input's border/radius/padding/font/colors so it matches 1547// whatever the page's forms look like (align-items:stretch matches their heights). 1548var curIso=iso; 1549// Brand accent for the selected-row tint + checkmark, sampled from the form's primary 1550// (submit) button background so the dropdown matches the page. A light tint keeps the 1551// dark option text legible. Falls back to a neutral blue; transparent / near-white 1552// buttons are ignored so the accent stays visible. 1553var _hpAccent="#2563eb",_hpAccentTint="rgba(37,99,235,0.12)"; 1554try{ 1555var _hpBtnForm=inp.closest?inp.closest("form"):null; 1556var _hpBtn=_hpBtnForm?_hpFindSubmit(_hpBtnForm):null; 1557if(_hpBtn){ 1558var _bg=window.getComputedStyle(_hpBtn).backgroundColor||""; 1559var _pp=_bg.replace(/[^0-9,.]/g,"").split(","); 1560var _rr=parseInt(_pp[0],10),_gg=parseInt(_pp[1],10),_bb=parseInt(_pp[2],10),_aa=_pp.length>3?parseFloat(_pp[3]):1; 1561if(!isNaN(_rr)&&!isNaN(_gg)&&!isNaN(_bb)&&_aa>0.1&&(_rr+_gg+_bb)<720){_hpAccent="rgb("+_rr+","+_gg+","+_bb+")";_hpAccentTint="rgba("+_rr+","+_gg+","+_bb+",0.12)";} 1562} 1563}catch(e){} 1564// Use the AUTHORED wrapper (data-persist-phone-field) that the editor saved, so the 1565// published layout is identical to the edit canvas. Create one only as a fallback for 1566// legacy pages saved before the authored wrapper existed (served pages aren't re-saved, 1567// so a runtime-created wrapper is harmless there). 1568var wrap=inp.closest?inp.closest("[data-persist-phone-field]"):null; 1569if(!wrap){ 1570wrap=document.createElement("span"); 1571wrap.setAttribute("data-persist-phone-field",""); 1572wrap.style.cssText="display:flex;align-items:stretch;gap:6px;width:100%;position:relative;"; 1573if(inp.parentNode)inp.parentNode.insertBefore(wrap,inp); 1574wrap.appendChild(inp); 1575} 1576if(!wrap.style.position)wrap.style.position="relative"; 1577// A <span role=button>, NOT a <button>: the widget sits inside the field's <label>, and 1578// a <label> forwards clicks to its first LABELABLE descendant. A <button> would become 1579// that control, so clicking a list item fires a synthetic click on the trigger and 1580// re-opens the panel. A <span> isn't labelable, so the label keeps targeting the number 1581// input; preventDefault on the trigger/list clicks stops any residual label forwarding. 1582var trig=document.createElement("span"); 1583trig.setAttribute("role","button"); 1584trig.setAttribute("tabindex","0"); 1585trig.setAttribute("data-hp-phone-cc",""); 1586trig.setAttribute("aria-haspopup","listbox");
1587trig.setAttribute("aria-expanded","false"); 1588trig.setAttribute("aria-label","Country calling code"); 1589trig.style.cssText="flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;box-sizing:border-box;"; 1590try{ 1591var _cs=window.getComputedStyle(inp); 1592var _cp=["fontFamily","fontSize","fontWeight","color","backgroundColor","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","paddingTop","paddingBottom","paddingLeft","paddingRight","boxSizing","lineHeight"]; 1593for(var _cpi=0;_cpi<_cp.length;_cpi++){try{if(_cs[_cp[_cpi]])trig.style[_cp[_cpi]]=_cs[_cp[_cpi]];}catch(e){}} 1594}catch(e){} 1595var trigLabel=document.createElement("span"); 1596trig.appendChild(trigLabel); 1597var trigCaret=document.createElement("span");trigCaret.textContent="â¾";trigCaret.style.cssText="opacity:0.55;font-size:0.8em;"; 1598trig.appendChild(trigCaret); 1599var panel=document.createElement("ul"); 1600panel.setAttribute("role","listbox"); 1601panel.setAttribute("data-hp-phone-list",""); 1602panel.style.cssText="display:none;position:absolute;top:100%;left:0;z-index:2147483000;margin:4px 0 0;padding:4px 0;list-style:none;max-height:260px;overflow-y:auto;min-width:240px;background:#fff;color:#111;border:1px solid rgba(0,0,0,0.15);border-radius:8px;box-shadow:0 8px 28px rgba(0,0,0,0.18);font-family:system-ui,-apple-system,sans-serif;font-size:14px;text-align:left;"; 1603// Hover + selected-item styling (one shared, id-guarded stylesheet â inline styles can't 1604// express :hover / ::after). Injected on the live page only; never touches the editor. 1605if(!document.getElementById("hp-phone-cc-style")){var _phSt=document.createElement("style");_phSt.id="hp-phone-cc-style";_phSt.textContent="ul[data-hp-phone-list] li[role=option]:hover{background:rgba(0,0,0,0.06);}ul[data-hp-phone-list] li[aria-selected=true]{font-weight:600;background:var(--hp-accent-tint,rgba(37,99,235,0.12));}ul[data-hp-phone-list] li[aria-selected=true]::after{content:'â';float:right;margin-left:12px;color:var(--hp-accent,#2563eb);}";(document.head||document.documentElement).appendChild(_phSt);} 1606panel.style.setProperty("--hp-accent",_hpAccent); 1607panel.style.setProperty("--hp-accent-tint",_hpAccentTint); 1608for(var pci=0;pci<_HP_PHONE.length;pci++){ 1609var pc=_HP_PHONE[pci]; 1610var li=document.createElement("li"); 1611li.setAttribute("role","option"); 1612li.setAttribute("data-iso",pc[0]); 1613li.setAttribute("data-dial",pc[2]); 1614li.setAttribute("aria-selected",pc[0]===iso?"true":"false"); 1615li.textContent=_hpFlag(pc[0])+" "+pc[1]+" +"+pc[2]; 1616li.style.cssText="padding:7px 14px;cursor:pointer;white-space:nowrap;"; 1617panel.appendChild(li); 1618} 1619var renderTrig=function(){var c=_hpPhoneByIso[curIso];trigLabel.textContent=_hpFlag(curIso)+" +"+(c?c[2]:"");}; 1620var closePanel=function(){panel.style.display="none";trig.setAttribute("aria-expanded","false");}; 1621var openPanel=function(){panel.style.display="block";trig.setAttribute("aria-expanded","true");}; 1622inp.style.flex="1"; 1623inp.style.minWidth="0"; 1624wrap.insertBefore(trig,inp); // trigger sits before the number input (input already in the wrap) 1625wrap.appendChild(panel); 1626var hid=document.createElement("input"); 1627hid.type="hidden"; 1628hid.name=nm; 1629hid.setAttribute("data-hp-phone-e164",""); 1630wrap.appendChild(hid); 1631inp.setAttribute("data-hp-phone-nat",""); 1632inp.removeAttribute("name"); 1633var _hpSyncPhone=function(){ 1634var raw=(inp.value||"").trim(); 1635var cur=_hpPhoneByIso[curIso]; 1636var dial=cur?cur[2]:""; 1637var e164="",nsnLen=0,isIntl=false; 1638if(raw.charAt(0)==="+"){e164="+"+_hpDigits(raw);isIntl=true;} 1639else{var nsn=_hpNSN(_hpDigits(raw),cur);nsnLen=nsn.length;e164=nsn?("+"+dial+nsn):"";} 1640hid.value=e164; 1641var msg=""; 1642if(raw){ 1643var total=_hpDigits(e164).length; 1644// Hard rules only: E.164 spec (7-15 total digits) + a per-country MINIMUM NSN length 1645// (catches a genuinely incomplete number, e.g. a US local number with no area code). No 1646// per-country maximum -> an over-long entry (usually the visitor including extra 1647// country/trunk digits) is accepted, never rejected. A "+"-prefixed entry skips the 1648// per-country floor entirely (the visitor owns their own format). 1649if(total<7||total>15)msg="Enter a valid phone number."; 1650else if(!isIntl&&nsnLen&&cur&&cur[3]&&nsnLen<cur[3])msg="Enter a valid "+cur[1]+" phone number."; 1651} 1652if(typeof inp.setCustomValidity==="function")inp.setCustomValidity(msg); 1653};
1654var selectIso=function(newIso){if(_hpPhoneByIso[newIso])curIso=newIso;for(var _si=0;_si<panel.children.length;_si++){var _c=panel.children[_si];if(_c.getAttribute&&_c.getAttribute("role")==="option")_c.setAttribute("aria-selected",_c.getAttribute("data-iso")===curIso?"true":"false");}renderTrig();closePanel();_hpSyncPhone();}; 1655panel.addEventListener("click",function(e){var t=e.target;while(t&&t!==panel&&!(t.getAttribute&&t.getAttribute("role")==="option"))t=t.parentNode;if(t&&t.getAttribute&&t.getAttribute("role")==="option"){e.preventDefault();selectIso(t.getAttribute("data-iso"));try{inp.focus();}catch(_e){}}}); 1656trig.addEventListener("click",function(e){e.preventDefault();if(panel.style.display==="block")closePanel();else openPanel();}); 1657trig.addEventListener("keydown",function(e){if(e.key==="Escape"){closePanel();}else if(e.key==="ArrowDown"||e.key==="Enter"||e.key===" "){e.preventDefault();openPanel();}}); 1658document.addEventListener("click",function(e){if(!wrap.contains(e.target))closePanel();}); 1659inp.addEventListener("input",_hpSyncPhone); 1660inp.addEventListener("blur",_hpSyncPhone); 1661renderTrig(); 1662_hpSyncPhone(); 1663}); 1664}catch(e){} 1665 1666// Tag all hidden inputs present in the original HTML so we can distinguish 1667// them from ones injected later by third-party scripts (Customers.ai, etc.) 1668document.querySelectorAll('input[type="hidden"]').forEach(function(el){el.setAttribute("data-hp-original","1");}); 1669 1670function showNotice(f,text,ok){ 1671var m=document.createElement("div"); 1672m.textContent=text; 1673m.style.cssText="padding:12px 16px;margin:8px 0;border-radius:6px;font-family:system-ui,sans-serif;font-size:14px;"+(ok?"background:#f0fdf4;color:#166534;border:1px solid #bbf7d0":"background:#fef2f2;color:#991b1b;border:1px solid #fecaca"); 1674f.parentNode.insertBefore(m,f.nextSibling); 1675setTimeout(function(){m.remove()},5000); 1676} 1677// showMsg wraps showNotice; the optional 3rd arg lets callers override the default success/error 1678// copy (e.g. the Turnstile "still verifying" gate). Omit it for the standard success/error notices. 1679function showMsg(f,ok,msg){showNotice(f,msg||(ok?(f.getAttribute("data-success-message")||"Thank you! Your submission has been received."):"Something went wrong. Please try again."),ok);} 1680// reCAPTCHA v2 (HP-1475). The response token lives in a hidden 1681// <textarea name="g-recaptcha-response"> that grecaptcha creates inside the 1682// widget's container; scoping the lookup to the submitted form/container picks 1683// the right token when a page renders more than one widget. 1684function _hpCaptchaToken(f){ 1685try{var ta=f.querySelector&&f.querySelector('textarea[name="g-recaptcha-response"]');return ta&&ta.value?ta.value:"";}catch(e){return "";} 1686} 1687 1688function formId(f){ 1689if(f.tagName==="FORM")return f.id||f.getAttribute("name")||"form-"+([].indexOf.call(document.forms,f)); 1690return f.id||"section-"+([].indexOf.call(document.querySelectorAll("[data-htmlpub-fake-form]"),f)); 1691} 1692 1693// Listen for postMessage responses from parent shell 1694if(inSandbox){ 1695window.addEventListener("message",function(e){ 1696var d=e.data; 1697if(d&&d.type==="htmlpub-form-submit-result"&&d.correlationId){ 1698var cb=pendingCallbacks[d.correlationId]; 1699if(cb){ 1700delete pendingCallbacks[d.correlationId]; 1701cb(d.success,d.captchaRequired,d.error); 1702} 1703} 1704}); 1705} 1706 1707function isSafeRedirectUrl(url){ 1708if(!url)return false; 1709if(/^https?:\/\//i.test(url))return true; 1710if(url.charAt(0)==="/"&&url.charAt(1)!=="/")return true; 1711return false; 1712} 1713// Migrated Builder3 site headers use relative hrefs that break on trailing-slash landing URLs; drop the trailing slash on same-origin targets (/thank-you/ -> /thank-you). 1714function stripTrailingSlash(url){ 1715try{var u=new URL(url,window.location.origin);if(u.origin===window.location.origin&&u.pathname.length>1&&u.pathname.charAt(u.pathname.length-1)==="/")return u.pathname.replace(/\/+$/,"")+u.search+u.hash;}catch(e){} 1716return url; 1717} 1718function maybeRedirectUrl(url){ 1719if(window.htmlpubEditorMode)return; 1720if(!isSafeRedirectUrl(url))return; 1721if(/\/api\/forms\/submit$/.test(url))return; 1722setTimeout(function(){window.location.href=stripTrailingSlash(url);},600); 1723} 1724function maybeRedirect(f){maybeRedirectUrl(f.getAttribute("action"));} 1725function reportFail(kind,status,fident){ 1726try{if(window.__hpupPushEvent)window.__hpupPushEvent("form_submit_failed",{failureKind:kind,httpStatus:status||0,host:location.host,path:location.pathname,apiBase:s.getAttribute("data-api-url")||"",formIdentifier:fident,pageId:pageId,pageSlug:slug});}catch(e){} 1727} 1728function submitData(f,data){
1729var btn=_hpFindSubmit(f); 1730if(btn)btn.disabled=true; 1731 1732// Generate one eventID per submission, threaded through three places: 1733// (a) the JSON payload to /api/forms/submit â integration queue 1734// (b) the postMessage to the parent shell (which forwards to the same API) 1735// (c) the browser pixel events fired on success below 1736// Both browser and server emit the SAME id to the same downstream provider 1737// so Meta / TikTok dedup them as a single conversion. 1738var eventId=_hpUuid(); 1739var fident=formId(f); 1740// Per-form Turnstile token â delivered by the bridge iframe via postMessage (see the listener 1741// near _hpInjectCaptcha) and stashed on the form element. 1742var _hpCapTok=(f.__hpCaptchaToken||""); 1743// stable editor-stamped form id â native lead-magnet routing; "" when unbound 1744var fkey=f.getAttribute("data-persist-form-id")||""; 1745// Classic form uuid re-stamped on migrated forms â per-form scope for carried Classic Zaps 1746var fsrc=f.getAttribute("data-persist-form-source-id")||""; 1747 1748// reCAPTCHA gate (HP-1475): when the page enforces reCAPTCHA but the visitor 1749// hasn't solved the challenge, block the submit with an inline error instead 1750// of POSTing an unverifiable payload the server will reject anyway. Gated on 1751// the enforcement flag (not mere widget presence) so pages with a decorative 1752// widget are unaffected. The server remains the security boundary â it 1753// re-verifies the token against Google. A form that opts into per-form Turnstile 1754// (data-persist-captcha) is handled by the Turnstile gate below instead â skip it here so a 1755// Turnstile form on a reCAPTCHA-enforced page isn't blocked for lacking a reCAPTCHA token 1756// (mirrors the server, which skips its reCAPTCHA block for forms in captchaFormIds). 1757var captchaToken=_hpCaptchaToken(f); 1758if(_hpRecaptchaEnforced&&!captchaToken&&!(f.hasAttribute&&f.hasAttribute("data-persist-captcha"))){ 1759if(btn)btn.disabled=false; 1760showNotice(f,"Please complete the reCAPTCHA challenge before submitting.",false); 1761reportFail("captcha_required",0,fident); 1762return; 1763} 1764 1765if(inSandbox){ 1766var id="fs-"+(++corrId); 1767var timer=setTimeout(function(){ 1768delete pendingCallbacks[id]; 1769if(btn)btn.disabled=false; 1770reportFail("timeout",0,fident);showMsg(f,false); 1771},10000); 1772 1773pendingCallbacks[id]=function(success,captchaRequired,errMsg){ 1774clearTimeout(timer); 1775if(btn)btn.disabled=false; 1776if(success){setEmailCookie(data);_hpFireLead(fident,data,eventId);showMsg(f,true);if(typeof f.reset==="function")f.reset();maybeRedirect(f);} 1777else if(captchaRequired){showMsg(f,false,"Spam protection is still verifying â please wait a moment and submit again.");} 1778else{reportFail("relay_error",0,fident);showMsg(f,false,errMsg||undefined);} 1779}; 1780 1781var vid="";try{vid=localStorage.getItem("_hp_vid")||"";}catch(e){} 1782parent.postMessage({type:"htmlpub-form-submit",correlationId:id,pageId:pageId,pageSlug:slug,formIdentifier:fident,formKey:fkey,classicFormUuid:fsrc,data:data,visitorId:vid,eventId:eventId,captchaToken:(_hpCapTok||captchaToken),formNeedsCaptcha:!!(f.hasAttribute&&f.hasAttribute("data-persist-captcha"))},"*"); 1783}else{ 1784// Send in top-level (direct fetch) mode. Wrapped in _hpProceed so it can be deferred 1785// until the Turnstile token has had a bounded chance to arrive (see _hpWaitForCaptcha). 1786function _hpProceed(){ 1787var vid2="";try{vid2=localStorage.getItem("_hp_vid")||"";}catch(e){} 1788// The captcha token rides EVERY attempt (not just the first). It is single-use, 1789// but the server checks its verified-eventId cache before re-verifying, so a 1790// re-sent already-spent token short-circuits to pass, while a token that was never 1791// spent (attempt 0 failed at the transport / rate-limit layer before verify) still 1792// verifies on retry. Stripping it from retries silently dropped leads on captcha 1793// forms whenever attempt 0 hit a 429/5xx/network error. [HP-2467] Prefer the per-form 1794// Turnstile token; fall back to the reCAPTCHA token (a form uses one mechanism). Read 1795// the FRESHEST token here â it may have arrived via postMessage during the bounded wait, 1796// after _hpCapTok was snapshotted at the top of submitData. 1797var _capTok=(f.__hpCaptchaToken||"")||_hpCapTok||captchaToken; 1798var _hpBody=JSON.stringify({pageId:pageId,pageSlug:slug,formIdentifier:fident,formKey:fkey,classicFormUuid:fsrc,data:data,visitorId:vid2,eventId:eventId,captchaToken:_capTok}); 1799// Retry transient failures so a network blip / 5xx / 429 doesn't silently lose 1800// a lead. Every attempt reuses the same eventId, so the server dedups to 1801// exactly one row + one set of side-effects. Backoff: immediate, 15s, 30s, 1802// 2min, then give up. Failed submits don't redirect, so the page stays open 1803// and the delayed retries can run. The submit button stays disabled across 1804// retries to prevent a manual re-submit (which would mint a new eventId). [HP-2467] 1805var _hpDelays=[0,15000,30000,120000]; 1806function _hpAttempt(n){ 1807fetch(api,{method:"POST",keepalive:true,headers:{"Content-Type":"application/json"},body:_hpBody}).then(function(r){ 1808if(r.ok){if(btn)btn.disabled=false;setEmailCookie(data);_hpFireLead(fident,data,eventId);showMsg(f,true);if(typeof f.reset==="function")f.reset(); 1809// The Turnstile token is single-use; after a successful submit clear it and reload the bridge 1810// iframe so a subsequent submit on the same (non-reset / non-redirected) form gets a FRESH token 1811// instead of re-sending the spent one and being rejected. 1812try{f.__hpCaptchaToken="";f.__hpCaptchaError=false;var _hpCf=f.querySelector("iframe[data-hp-turnstile]");if(_hpCf)_hpCf.src=_hpCf.src;}catch(e){} 1813maybeRedirect(f);return;} 1814if((r.status>=500||r.status===429)&&n<_hpDelays.length){setTimeout(function(){_hpAttempt(n+1);},_hpDelays[n]);return;} 1815if(btn)btn.disabled=false;reportFail("http_error",r.status,fident); 1816// A 403 on a captcha-protected form means the token was spent/invalid â refresh the widget 1817// so a retry gets a fresh one (otherwise "try again" resends the same rejected token).
1818try{if(r.status===403){f.__hpCaptchaToken="";f.__hpCaptchaError=false;var _hpCfe=f.querySelector("iframe[data-hp-turnstile]");if(_hpCfe)_hpCfe.src=_hpCfe.src;}}catch(e){} 1819// Surface the server's specific message (e.g. "CAPTCHA verification failed") instead of a 1820// generic one; fall back to the generic message when the body isn't JSON. 1821try{r.json().then(function(d){showMsg(f,false,(d&&d.error)||undefined);},function(){showMsg(f,false);});}catch(e){showMsg(f,false);} 1822}).catch(function(){ 1823if(n<_hpDelays.length){setTimeout(function(){_hpAttempt(n+1);},_hpDelays[n]);return;} 1824if(btn)btn.disabled=false;reportFail("network",0,fident);showMsg(f,false); 1825}); 1826} 1827_hpAttempt(0); 1828} 1829// Spam-protected form whose Turnstile widget exists but hasn't produced a token yet 1830// (fast submit, or the challenge is still loading). Per the decided fail policy, give the 1831// widget a bounded window plus ONE re-challenge, then submit anyway (the server accepts + 1832// flags unverified â never lose a lead) instead of the old "please submit again" dead end. 1833// Skip the wait when: owner preview (widget is owner-gated), a token is already in hand, the 1834// bridge reported a TERMINAL error (no token could ever come), or no widget is present (site 1835// key unconfigured â nothing to wait for, server fails open). The button stays disabled 1836// during the (sub-second-typical, 6s-worst-case) wait so the visitor can't double-submit. 1837if(_hpIsOwner||_hpCapTok!==""||f.__hpCaptchaError||!f.querySelector("iframe[data-hp-turnstile]")){ 1838_hpProceed(); 1839}else{ 1840_hpWaitForCaptcha(f,_hpProceed); 1841} 1842} 1843} 1844 1845// Snapshot forms in the server-rendered HTML at init; third-party embeds (ConvertKit/ActiveCampaign) inject their <form> later, so they're excluded. 1846var _hpNativeForms=(function(){try{return new WeakSet([].slice.call(document.querySelectorAll("form")));}catch(e){return null;}})(); 1847document.addEventListener("submit",function(e){ 1848var f=e.target; 1849if(f.tagName!=="FORM")return; 1850if(_hpNativeForms&&!_hpNativeForms.has(f)){reportFail("skipped_non_native",0,formId(f));return;}// injected after init (popup/third-party) â don't hijack it; telemeter so silently-dropped non-native submits are visible [HP-2467] 1851e.preventDefault(); 1852// Multi-step: if this form is split into steps and the visitor isn't on the last 1853// one yet, advance (validate current step + Next) instead of submitting. Captures 1854// Enter-in-field and any early submit so a partial lead is never sent. On the last 1855// step, validate it in JS first (the form is novalidate, so nothing else does). [P3] 1856if(f.__hpMultiStep){ 1857if(!f.__hpMultiStep.isLast()){f.__hpMultiStep.advance();return;} 1858if(f.__hpMultiStep.validate&&!f.__hpMultiStep.validate())return; 1859} 1860// "Select at least one" enforcement for required checkbox groups (single-step forms have no 1861// __hpMultiStep validate pass, and it's a cheap final guard for multi-step too). 1862if(!_hpGroupReqOK(f))return; 1863var data=collect(f); 1864if(Object.keys(data).length===0){if(f.querySelector&&f.querySelector("input,textarea,select"))reportFail("skipped_empty",0,formId(f));return;}// nothing collected â telemeter only when the form actually has fields (real form, nothing captured) [HP-2467] 1865submitData(f,data); 1866},true); 1867 1868// --- Fake form interception (inputs outside <form>) --- 1869var lastFakeSubmit=0; 1870// Walk up from the clicked element to find a "form-like" container: 1871// - has 1-20 inputs/textareas/selects (excluding hidden/submit/button types) 1872// - has â¤4 button-like descendants (more = page scaffolding, not a form) 1873// - the clicked element sits AFTER the last input in document order 1874// (real submits sit below fields; uses DOCUMENT_POSITION_PRECEDING = 2) 1875// Walk depth capped at 3 â further up is <section>, <main>, or <body>. 1876function findFormLikeContainer(t){ 1877var cur=t.parentElement; 1878for(var depth=0;cur&&depth<3;depth++){ 1879if(cur.tagName==="FORM")return null;// real form, skip 1880var inputs=cur.querySelectorAll("input:not([type=hidden]):not([type=submit]):not([type=button]),textarea,select"); 1881if(inputs.length>=1&&inputs.length<=20){ 1882var ctas=cur.querySelectorAll("button,a[href],[role=button],input[type=submit]"); 1883if(ctas.length<=4){ 1884return (t.compareDocumentPosition(inputs[inputs.length-1])&2)?cur:null; 1885} 1886} 1887cur=cur.parentElement; 1888} 1889return null; 1890} 1891// <a> with a real href is navigation, never a submit. Allow empty href / "#" / 1892// no href (button-styled anchors). <button type="button"> is explicitly non-submit. 1893function isPlausibleSubmit(t){ 1894if(t.tagName==="A"){ 1895var href=t.getAttribute("href"); 1896if(href!==null){ 1897href=(href+"").trim(); 1898if(href!==""&&href!=="#")return false;
1899} 1900} 1901if(t.tagName==="BUTTON"&&t.getAttribute("type")==="button")return false; 1902return true; 1903} 1904document.addEventListener("click",function(e){ 1905var t=e.target.closest?e.target.closest("button,a,[role=button],input[type=submit]"):null; 1906if(!t)return; 1907if(t.closest("form"))return;// inside a real form, native handler covers it 1908// Third-party consent-management (CMP) dialogs (Cookiebot/OneTrust/Osano/ 1909// TrustArc/CookieYes) inject a body-level dialog whose "Accept" button + single 1910// pre-checked "necessary" checkbox otherwise look form-like. Cheap early-exit 1911// for known vendors; the lead-field guard below is the load-bearing check. 1912// Vendor tokens are boundary-anchored (CookieYes cky-* matched as whole class 1913// tokens; TrustArc truste-/truste_/trustarc) so they never collide with 1914// sticky-*/trusted* names. [HP-3292] 1915try{if(t.closest("[id*='Cookiebot' i],[id*='CybotCookiebot' i],[id*='onetrust' i],[id*='osano' i],[id*='truste-' i],[id*='truste_' i],[id*='trustarc' i],[class*='cookie-consent' i],[class*='cookieconsent' i],[class^='cky-' i],[class*=' cky-' i]"))return;}catch(e){} 1916if(!isPlausibleSubmit(t))return; 1917var now=Date.now(); 1918if(now-lastFakeSubmit<2000)return; 1919var container=findFormLikeContainer(t); 1920if(!container)return; 1921// A genuine lead always carries at least one typed (non checkbox/radio) field 1922// with a value. A form-like container whose only populated field is a 1923// checkbox/radio is a consent/cookie dialog, not a form â never fire a lead for 1924// it. Keys off DOM field TYPE, never payload values, so real leads whose data 1925// merely contains vendor-name substrings are unaffected. [HP-3292] 1926var _leadFields=container.querySelectorAll("input:not([type=hidden]):not([type=submit]):not([type=button]):not
1926([type=checkbox]):not([type=radio]),textarea,select"); 1927var _hasLeadField=false; 1928for(var _lf=0;_lf<_leadFields.length;_lf++){if((_leadFields[_lf].value||"").trim()){_hasLeadField=true;break;}} 1929if(!_hasLeadField)return; 1930var data=collect(container); 1931if(Object.keys(data).length===0)return; 1932// Skip if all field values are empty (button click near empty form fields) 1933var hasAnyValue=Object.keys(data).some(function(k){return data[k]&&String(data[k]).trim();}); 1934if(!hasAnyValue)return; 1935lastFakeSubmit=now; 1936container.setAttribute("data-htmlpub-fake-form",""); 1937submitData(container,data); 1938// Notify analytics script about this fake form submission 1939try{document.dispatchEvent(new CustomEvent("htmlpub:form-submit",{detail:{formIdentifier:formId(container)}}));}catch(e){} 1940},true); 1941 1942// Always report form count to parent (even for non-owner views) 1943function reportFormCount(){ 1944var forms=document.querySelectorAll("form"); 1945var count=forms.length; 1946var labels=[]; 1947for(var i=0;i<forms.length;i++){ 1948var ff=forms[i]; 1949var label=ff.getAttribute("aria-label")||ff.getAttribute("name")||ff.getAttribute("id")||""; 1950if(!label){ 1951var heading=ff.querySelector("h1,h2,h3,h4,h5,h6,label,legend"); 1952if(heading) label=heading.textContent.trim().substring(0,50); 1953} 1954labels.push(label||("Form "+(i+1))); 1955} 1956// needsCaptcha tells the parent shell (sandbox path) to render a Turnstile 1957// widget on its own origin: the sandboxed iframe has an opaque origin so it 1958// can't run Turnstile itself. Owner previews never require the token. 1959var _hpNeedsCaptcha=!_hpIsOwner&&!!document.querySelector("form[data-persist-captcha]"); 1960if(inSandbox) parent.postMessage({type:"htmlpub-form-count",count:count,labels:labels,needsCaptcha:_hpNeedsCaptcha},"*"); 1961} 1962function initFormCount(){ 1963reportFormCount(); 1964if(typeof MutationObserver!=="undefined"){ 1965new MutationObserver(function(){reportFormCount();}).observe(document.body||document.documentElement,{childList:true,subtree:true}); 1966} 1967} 1968if(document.readyState==="loading"){document.addEventListener("DOMContentLoaded",initFormCount);} 1969else{initFormCount();} 1970 1971// Leadbox/leadbar iframe form bridge. SYNC with worker-pages/src/scripts/forms.ts. 1972window.addEventListener("message",function(e){ 1973if(!e||!e.data||e.data.type!=="htmlpub:iframe-form-submit")return; 1974var fid=String(e.data.formIdentifier||"iframe-form").slice(0,255); 1975var fsid=e.data.formSourceId?String(e.data.formSourceId).slice(0,255):""; 1976var raw=e.data.data; 1977if(!raw||typeof raw!=="object")return; 1978var clean={}; 1979for(var k in raw){ 1980if(!Object.prototype.hasOwnProperty.call(raw,k))continue; 1981if(looksLikeRawId(k))continue; 1982if(_blocklist.test(k))continue; 1983clean[k]=raw[k]; 1984} 1985var redirect=typeof e.data.redirect==="string"?e.data.redirect:""; 1986var relayCaptcha=typeof e.data.captchaToken==="string"?e.data.captchaToken:undefined; 1987fetch(api,{method:"POST",keepalive:true,headers:{"Content-Type":"application/json"},body:JSON.stringify({pageId:pageId,pageSlug:slug,formIdentifier:fid,formSourceId:fsid,data:clean,captchaToken:relayCaptcha})}).then(function(r){if(r.ok){if(redirect)maybeRedirectUrl(redirect);}else{reportFail("http_error",r.status,fid);}}).catch(function(){reportFail("network",0,fid);}); 1988},false); 1989})(); 1990</script>
1990<script data-htmlpub-popups> 1991(function(){ 1992"use strict"; 1993 1994var SCOPE = "pathname"; 1995var PAGE_ID = "gg1x1lcpx32tjslsbqxxqmm5"; 1996 1997var DEFAULTS = { 1998 overlay: { color: "#000000", opacity: 0.5, clickToClose: true }, 1999 close: { enabled: true, position: "top-right", escapeToClose: true }, 2000 animation: { open: "fade", close: "fade", durationMs: 250 }, 2001 frequency: { visitsBefore: 0, daysCooldown: 0 } 2002}; 2003 2004function parseJsonAttr(raw, fallback) { 2005 if (!raw) return fallback; 2006 try { 2007 var p = JSON.parse(raw); 2008 if (p && typeof p === "object") return p; 2009 } catch(e) {} 2010 return fallback; 2011} 2012 2013// Back-compat: pages published before the data-persist-popup* rename carry the 2014// legacy data-htmlpub-popup* names. Read canonical first, fall back to legacy. 2015// suffix is "" for the marker, "-name", "-overlay", "-target", etc. 2016function pAttr(el, suffix) { 2017 var v = el.getAttribute("data-persist-popup" + suffix); 2018 return v !== null ? v : el.getAttribute("data-htmlpub-popup" + suffix); 2019} 2020 2021function readConfig(el) { 2022 var overlay = parseJsonAttr(pAttr(el, "-overlay"), {}); 2023 var closeCfg = parseJsonAttr(pAttr(el, "-close"), {}); 2024 var anim = parseJsonAttr(pAttr(el, "-animation"), {}); 2025 var triggers = parseJsonAttr(pAttr(el, "-triggers"), {}); 2026 var frequency = parseJsonAttr(pAttr(el, "-frequency"), {}); 2027 return { 2028 overlay: { 2029 color: typeof overlay.color === "string" ? overlay.color : DEFAULTS.overlay.color, 2030 opacity: typeof overlay.opacity === "number" ? overlay.opacity : DEFAULTS.overlay.opacity, 2031 clickToClose: overlay.clickToClose !== false 2032 }, 2033 close: { 2034 enabled: closeCfg.enabled !== false, 2035 position: closeCfg.position === "top-left" ? "top-left" : "top-right", 2036 escapeToClose: closeCfg.escapeToClose !== false 2037 }, 2038 animation: { 2039 open: typeof anim.open === "string" ? anim.open : DEFAULTS.animation.open, 2040 close: typeof anim.close === "string" ? anim.close : DEFAULTS.animation.close, 2041 durationMs: typeof anim.durationMs === "number" ? anim.durationMs : DEFAULTS.animation.durationMs 2042 }, 2043 triggers: triggers, 2044 frequency: { 2045 visitsBefore: typeof frequency.visitsBefore === "number" ? frequency.visitsBefore : 0, 2046 daysCooldown: typeof frequency.daysCooldown === "number" ? frequency.daysCooldown : 0 2047 }, 2048 // "none" = the marker's content owns its own chrome, so this runtime paints none of it. 2049 // Migrated Classic pop-ups: the marker holds an <iframe> whose document already draws the 2050 // mask, centring, card and close button. Nova-authored pop-ups never set it. 2051 chrome: pAttr(el, "-chrome") === "none" ? "none" : "default" 2052 }; 2053} 2054 2055// ââ LocalStorage helpers â scoped per pathname so two pages on the same 2056// origin track their popups independently. Wrapped in try/catch because 2057// Safari private mode + iframe sandboxing can throw on access. 2058var STORE_PREFIX = SCOPE === "popup-id" ? "_hpup:popup:" : ("_hpup:" + (location.pathname || "/") + ":"); 2059function lsGet(key) { 2060 try { return localStorage.getItem(STORE_PREFIX + key); } catch(e) { return null; } 2061} 2062function lsSet(key, value) { 2063 try { localStorage.setItem(STORE_PREFIX + key, value); } catch(e) {} 2064} 2065 2066// Bump the visit counter once per pageload. Used by visitsBefore. In embed 2067// (popup-id) scope callers pass the popup id as a suffix so each standalone 2068// popup tracks its own visit count â a busy host page with two embedded popups 2069// must not let one popup's pageviews satisfy another's visitsBefore gate. 2070function recordVisit(suffix) { 2071 var key = "visits" + (suffix ? ":" + suffix : ""); 2072 var prev = parseInt(lsGet(key) || "0", 10); 2073 if (!isFinite(prev) || prev < 0) prev = 0; 2074 lsSet(key, String(prev + 1)); 2075 return prev + 1; 2076} 2077 2078function isEligible(cfg, popupId, currentVisit) { 2079 // visitsBefore: 0 = show on first visit. So eligible iff currentVisit > visitsBefore. 2080 if (cfg.frequency.visitsBefore > 0 && currentVisit <= cfg.frequency.visitsBefore) return false; 2081 // daysCooldown: don't reshow until N days have passed since last close. 2082 if (cfg.frequency.daysCooldown > 0) { 2083 var last = parseInt(lsGet("close:" + popupId) || "0", 10); 2084 if (last > 0) { 2085 var elapsedMs = Date.now() - last; 2086 if (elapsedMs < cfg.frequency.daysCooldown * 86400000) return false;
2087 } 2088 } 2089 return true; 2090} 2091 2092function composeRgba(color, opacity) { 2093 var hex = color.match(/^#([0-9a-f]{6})$/i); 2094 if (hex) { 2095 var n = parseInt(hex[1], 16); 2096 return "rgba(" + ((n >> 16) & 0xff) + "," + ((n >> 8) & 0xff) + "," + (n & 0xff) + "," + opacity + ")"; 2097 } 2098 var rgb = color.match(/^rgb(?:a)?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/); 2099 if (rgb) return "rgba(" + rgb[1] + "," + rgb[2] + "," + rgb[3] + "," + opacity + ")"; 2100 return "rgba(0,0,0," + opacity + ")"; 2101} 2102 2103function animStart(kind) { 2104 if (kind === "slide-up") return { opacity: 0, transform: "translate(-50%, -40%)" }; 2105 if (kind === "slide-down") return { opacity: 0, transform: "translate(-50%, -60%)" }; 2106 if (kind === "zoom") return { opacity: 0, transform: "translate(-50%, -50%) scale(0.92)" }; 2107 if (kind === "none") return { opacity: 1, transform: "translate(-50%, -50%)" }; 2108 return { opacity: 0, transform: "translate(-50%, -50%)" }; // fade 2109} 2110function animEnd() { 2111 return { opacity: 1, transform: "translate(-50%, -50%) scale(1)" }; 2112} 2113 2114// Body scroll lock â refcounted because two popups can technically be in 2115// the open state at once (different triggers firing back-to-back). The 2116// first lock saves the body's prior overflow + padding-right and replaces 2117// them; subsequent locks just bump the count. We only restore once every 2118// popup that locked has closed, so a still-open popup keeps the page held. 2119// padding-right compensates for the scrollbar disappearing â without it, 2120// the dimmed page behind the overlay shifts right at the moment of open. 2121var _hpupLockCount = 0; 2122var _hpupSavedOverflow = ""; 2123var _hpupSavedPaddingRight = ""; 2124function lockBodyScroll() { 2125 if (_hpupLockCount === 0) { 2126 var scrollbarWidth = window.innerWidth - document.documentElement.clientWidth; 2127 _hpupSavedOverflow = document.body.style.overflow || ""; 2128 _hpupSavedPaddingRight = document.body.style.paddingRight || ""; 2129 if (scrollbarWidth > 0) document.body.style.paddingRight = scrollbarWidth + "px"; 2130 document.body.style.overflow = "hidden"; 2131 } 2132 _hpupLockCount++; 2133} 2134function unlockBodyScroll() { 2135 if (_hpupLockCount === 0) return; 2136 _hpupLockCount--; 2137 if (_hpupLockCount === 0) { 2138 if (_hpupSavedOverflow) document.body.style.overflow = _hpupSavedOverflow; 2139 else document.body.style.removeProperty("overflow"); 2140 if (_hpupSavedPaddingRight) document.body.style.paddingRight = _hpupSavedPaddingRight; 2141 else document.body.style.removeProperty("padding-right"); 2142 } 2143} 2144 2145// Build the overlay backdrop. Returns the element. Wired with the right 2146// pointer behaviour for the popup's clickToClose setting. 2147function buildOverlay(cfg, onOverlayClick) { 2148 var ov = document.createElement("div"); 2149 ov.setAttribute("data-htmlpub-popup-backdrop", ""); 2150 ov.style.cssText = "position:fixed;inset:0;background:" + composeRgba(cfg.overlay.color, cfg.overlay.opacity) + 2151 ";z-index:2147483646;opacity:0;transition:opacity " + cfg.animation.durationMs + "ms ease;"; 2152 if (cfg.overlay.clickToClose) ov.addEventListener("click", onOverlayClick); 2153 return ov; 2154} 2155 2156// Inject a close â button if the popup doesn't already have one. We mark our 2157// injected button so re-show calls don't duplicate it. 2158function ensureCloseButton(el, cfg, onClose) { 2159 if (el.querySelector("[data-htmlpub-popup-close-btn]")) return; 2160 if (!cfg.close.enabled) return; 2161 var btn = document.createElement("button"); 2162 btn.setAttribute("type", "button"); 2163 btn.setAttribute("aria-label", "Close pop-up"); 2164 btn.setAttribute("data-htmlpub-popup-close-btn", ""); 2165 var posStyle = cfg.close.position === "top-left" ? "left:12px;" : "right:12px;"; 2166 btn.style.cssText = "position:absolute;top:12px;" + posStyle + 2167 "width:28px;height:28px;border-radius:9999px;border:0;background:rgba(0,0,0,0.45);color:#fff;" + 2168 "font:16px/1 system-ui,-apple-system,sans-serif;cursor:pointer;display:flex;align-items:center;" + 2169 "justify-content:center;z-index:1;padding:0;"; 2170 btn.textContent = "Ã"; 2171 btn.addEventListener("click", function(e){ e.preventDefault(); e.stopPropagation(); onClose(); }); 2172 // Ensure the popup itself is a positioning context so absolute close button 2173 // anchors to it. Cheap: only sets if not already positioned. 2174 var pos = getComputedStyle(el).position; 2175 if (pos === "static" || !pos) el.style.position = "relative"; 2176 el.appendChild(btn); 2177} 2178 2179// ââ Per-popup wiring ââââââââââââââââââââââââââââââââââââââââââââââââââââââ 2180// Each popup gets its own controller closing over its element + config + 2181// trigger cleanup so we can tear down listeners on close. 2182 2183// HP-1557 â fire an analytics event for this popup. Hands off to the 2184// analytics.ts buffer via window.__hpupPushEvent (registered there). If 2185// analytics isn't loaded for some reason we silently no-op rather than 2186// breaking the popup runtime. 2187function emitPopupEvent(eventType, popup, extras) { 2188 if (typeof window.__hpupPushEvent !== "function") return; 2189 var payload = { 2190 popupId: popup.getAttribute("id") || "", 2191 popupName: (pAttr(popup, "-name") || "").replace(/^\s+|\s+$/g, "") 2192 }; 2193 // Standalone-embed pop-ups carry their page id via data-hp-popup-cuid (set by 2194 // the embed bundle) so analytics can attribute to a specific pop-up; the DOM 2195 // id in popupId is a shared name-slug. In-page pop-ups have no cuid so this 2196 // stays absent. 2197 var _hpCuid = popup.getAttribute("data-hp-popup-cuid"); 2198 if (_hpCuid) payload.popupCuid = _hpCuid; 2199 if (extras && typeof extras === "object") { 2200 for (var k in extras) { 2201 if (Object.prototype.hasOwnProperty.call(extras, k)) payload[k] = extras[k]; 2202 } 2203 } 2204 window.__hpupPushEvent(eventType, payload); 2205} 2206 2207// Single-open invariant: only one popup may be visible at a time. 2208// show() force-closes whatever is up before painting itself. 2209var _hpupCurrentOpen = null; 2210 2211function wirePopup(el, currentVisit) { 2212 var cfg = readConfig(el); 2213 var popupId = el.getAttribute("id") || ""; 2214 if (!popupId) return; 2215 // The editor stores popups hidden via inline display:none. We never strip 2216 // that â we toggle it at show/close time so a never-shown popup stays 2217 // invisible (matching its rendered state in the DOM). 2218 var originalDisplay = el.style.display || ""; 2219 var isOpen = false;
2220 var overlay = null; 2221 var keyListener = null; 2222 var sizeObserver = null; 2223 var cleanups = []; // trigger listener removers; called on first show 2224 2225 function cleanupTriggers() { 2226 for (var i = 0; i < cleanups.length; i++) { 2227 try { cleanups[i](); } catch(e) {} 2228 } 2229 cleanups = []; 2230 } 2231 2232 // Why a popup was opened â informs the parent analytics event so the 2233 // dashboard can distinguish "fired by timer" vs. "explicit user click". 2234 // Updated by callers before show() and reset to null after emit. 2235 var lastShowReason = null; 2236 2237 // HP-4147 â the overflow choice in show() is a measurement, and measurements 2238 // go stale. Content can grow AFTER open: an inline checkout's Stripe Payment 2239 // Element progressively reveals card fields and then a "Save your info" 2240 // section as the buyer types. A popup that opened short (overflow:visible, so 2241 // its shadow paints) and then grows past maxHeight spills below the viewport 2242 // instead of scrolling, and because show() locked the body scroll there is 2243 // nothing left for a touch drag to move â the Pay button becomes unreachable 2244 // and closing + reopening is the only way out (reopening re-runs show(), which 2245 // re-measures against the now-tall content and lands on "auto"). So re-decide 2246 // on every resize â but only ever upgrade to "auto", never back to "visible". 2247 // 2248 // One-way on purpose. Reverting to "visible" when content shrinks back under 2249 // maxHeight sounds harmless (it hands HP-3771 its shadow back) but it 2250 // re-releases horizontal spill that "auto" had been containing, so a wide 2251 // child paints outside the popup over the page, and it discards scrollTop, 2252 // bouncing the buyer to the top of the form. Both were measured in Chromium 2253 // at a Pixel viewport. Staying in "auto" costs only the shadow, and only for 2254 // the rest of an open in which content already exceeded the viewport: "auto" 2255 // paints no scrollbar once content fits again, it merely clips. close() 2256 // strips every inline style, so the next open re-decides from scratch. 2257 function syncOverflow() { 2258 if (!isOpen) return; 2259 // Guarded on a real change. Toggling overflow lays out a scrollbar, which 2260 // resizes content, which re-enters this observer â an unguarded write there 2261 // is a feedback loop that never settles. 2262 if (el.scrollHeight > el.clientHeight + 1 && el.style.overflow !== "auto") { 2263 el.style.overflow = "auto"; 2264 } 2265 } 2266 2267 function observeSize() { 2268 if (sizeObserver || typeof ResizeObserver === "undefined") return; 2269 sizeObserver = new ResizeObserver(syncOverflow); 2270 // Observing el catches the growth that crosses maxHeight, since its own box 2271 // tracks content right up to the clamp. Observing its element children 2272 // catches growth that continues past the clamp, where el's box is pinned and 2273 // reports no resize at all â content 1px under maxHeight that then expands 2274 // would otherwise never re-decide. 2275 sizeObserver.observe(el); 2276 for (var childIndex = 0; childIndex < el.children.length; childIndex++) { 2277 sizeObserver.observe(el.children[childIndex]); 2278 } 2279 } 2280 2281 function unobserveSize() { 2282 if (!sizeObserver) return; 2283 sizeObserver.disconnect(); 2284 sizeObserver = null; 2285 } 2286 2287 function show(reason) { 2288 if (isOpen) return; 2289 if (_hpupCurrentOpen && _hpupCurrentOpen !== el && typeof _hpupCurrentOpen._hpupClose === "function") { 2290 _hpupCurrentOpen._hpupClose("replaced", true); 2291 } 2292 _hpupCurrentOpen = el; 2293 isOpen = true; 2294 lastShowReason = reason || "explicit"; 2295 cleanupTriggers(); 2296 lockBodyScroll(); 2297 // chrome:none â the content paints its own â (Classic's .js-close, inside the iframe). 2298 var bare = cfg.chrome === "none"; 2299 if (!bare) ensureCloseButton(el, cfg, function(){ close("close_button"); }); 2300 2301 var start = animStart(cfg.animation.open); 2302 var end = animEnd(); 2303 2304 // Centered fixed positioning with a high z-index so we float above any 2305 // page content + checkout / chat widgets. 2306 el.style.display = "block"; 2307 el.style.position = "fixed"; 2308 el.style.zIndex = "2147483647"; 2309 2310 if (bare) { 2311 // Full-viewport shell. An <iframe> has no intrinsic content height (~150px, and it never 2312 // reports its content size to the parent), so the shrink-wrapped-card model below cannot 2313 // measure it â centring, the maxHeight/maxWidth clamps and the overflow logic all assume a 2314 // box that sizes to its content. Reproduce CDA's model instead: the frame fills the 2315 // viewport and the Classic document inside owns mask, centring and card. 2316 // 2317 // No transform either: every animStart transform carries translate(-50%,-50%), which 2318 // centres a card and would shove a full-viewport shell off screen. Opacity alone. 2319 el.style.top = "0"; 2320 el.style.left = "0"; 2321 el.style.width = "100%"; 2322 el.style.height = "100%"; 2323 el.style.opacity = String(start.opacity); 2324 el.style.transition = "opacity " + cfg.animation.durationMs + "ms ease"; 2325 openClassicFrame(el); 2326 } else { 2327 el.style.top = "50%"; 2328 el.style.left = "50%"; 2329 el.style.transform = start.transform; 2330 el.style.opacity = String(start.opacity); 2331 el.style.maxHeight = "calc(100vh - 32px)"; 2332 el.style.maxWidth = "calc(100vw - 32px)"; 2333 // HP-3771 â "auto" clips any box-shadow set on the popup's own content: 2334 // box-shadow doesn't affect layout size, so this element shrink-wraps to its 2335 // content and its own overflow then clips the shadow it should cast. 2336 // 2337 // But "visible" unconditionally is not safe either. This element is 2338 // position:fixed and centred, so content taller than maxHeight does not 2339 // clip â it spills past the viewport with no scrollbar and nothing can 2340 // reach it. A lead-capture form taller than the viewport would lose its 2341 // submit button. So decide per popup, after layout: overflow stays "auto" 2342 // only when the content genuinely overflows (scrolling wins), and is 2343 // "visible" otherwise (shadow wins). Short popups are the overwhelmingly 2344 // common case, so the shadow renders for almost everyone. 2345 //
2346 // syncOverflow re-applies this same rule for the rest of the open (HP-4147). 2347 el.style.overflow = "visible"; 2348 syncOverflow(); 2349 el.style.transition = "opacity " + cfg.animation.durationMs + "ms ease, transform " + cfg.animation.durationMs + "ms ease"; 2350 } 2351 2352 if (!el.parentNode) document.body.appendChild(el); 2353 if (!bare) { 2354 // Backdrop. Inserted before the popup so the popup naturally paints on top. 2355 // chrome:none skips it â the Classic document paints its own .js-leadbox-mask, and a second 2356 // backdrop would darken the page twice. 2357 overlay = buildOverlay(cfg, function(){ close("overlay_click"); }); 2358 (el.parentNode || document.body).insertBefore(overlay, el); 2359 2360 // Started only once el is attached, so the observer's first delivery measures 2361 // real geometry rather than the 0x0 of a detached node. 2362 observeSize(); 2363 } 2364 2365 // Force reflow so the next style change animates from start, not jumps. 2366 /* eslint-disable-next-line no-unused-expressions */ void el.offsetWidth; 2367 2368 el.style.opacity = String(end.opacity); 2369 if (!bare) el.style.transform = end.transform; 2370 if (overlay) overlay.style.opacity = "1"; 2371 2372 if (cfg.close.escapeToClose) { 2373 keyListener = function(e) { if (e.key === "Escape") close("escape"); }; 2374 document.addEventListener("keydown", keyListener); 2375 } 2376 2377 emitPopupEvent("popup_view", el, { reason: lastShowReason }); 2378 lastShowReason = null; 2379 } 2380 2381 function close(reason, hard) { 2382 if (!isOpen) return; 2383 isOpen = false; 2384 emitPopupEvent("popup_dismiss", el, { reason: reason || "unknown" }); 2385 var start = animStart(cfg.animation.close); 2386 el.style.opacity = String(start.opacity); 2387 // Same reason as show(): the close transform centres a card, and applying it to a 2388 // full-viewport shell would slide it off screen instead of fading it out. 2389 if (cfg.chrome !== "none") el.style.transform = start.transform; 2390 if (overlay) overlay.style.opacity = "0"; 2391 2392 if (keyListener) { 2393 document.removeEventListener("keydown", keyListener); 2394 keyListener = null; 2395 } 2396 2397 var afterAnim = function() { 2398 if (_hpupCurrentOpen === el) _hpupCurrentOpen = null; 2399 unobserveSize(); 2400 el.style.display = originalDisplay || "none"; 2401 el.style.removeProperty("position"); 2402 el.style.removeProperty("top"); 2403 el.style.removeProperty("left"); 2404 el.style.removeProperty("transform"); 2405 el.style.removeProperty("opacity"); 2406 el.style.removeProperty("z-index"); 2407 el.style.removeProperty("max-height"); 2408 el.style.removeProperty("max-width"); 2409 // Only the chrome:none branch sets these, and teardown must remove exactly what this show 2410 // set â a marker can legitimately carry an author's own inline width/height, and stripping 2411 // it on close would resize the pop-up the second time it opens. 2412 if (cfg.chrome === "none") { 2413 el.style.removeProperty("width"); 2414 el.style.removeProperty("height"); 2415 } 2416 el.style.removeProperty("overflow"); 2417 el.style.removeProperty("transition"); 2418 if (overlay && overlay.parentNode) overlay.parentNode.removeChild(overlay); 2419 overlay = null; 2420 // Tear down the close button â its click handler closes over THIS 2421 // show's overlay reference. Leaving it across opens means a second 2422 // show's X would call the previous close() with a stale overlay and 2423 // leave the current overlay floating. 2424 var existingBtn = el.querySelector("[data-htmlpub-popup-close-btn]"); 2425 if (existingBtn && existingBtn.parentNode) existingBtn.parentNode.removeChild(existingBtn); 2426 // Release the scroll lock only after the popup is fully torn down so 2427 // the page doesn't pop back to scrollable while the close animation 2428 // is still painting. 2429 unlockBodyScroll(); 2430 lsSet("close:" + popupId, String(Date.now())); 2431 }; 2432 if (hard || cfg.animation.close === "none") afterAnim(); 2433 else setTimeout(afterAnim, cfg.animation.durationMs); 2434 } 2435 2436 // ââ Triggers ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 2437 // Only wire if the popup is eligible to show this pageload (frequency 2438 // rules). Click-to-open via [data-htmlpub-popup-target] always works, 2439 // regardless of eligibility â it's an explicit user action. 2440 var eligible = isEligible(cfg, popupId, currentVisit); 2441 2442 if (eligible) { 2443 var t = cfg.triggers || {}; 2444
2445 if (t.timed && typeof t.timed.delaySec === "number") { 2446 var delayMs = Math.max(0, t.timed.delaySec) * 1000; 2447 var timer = setTimeout(function(){ show("timed"); }, delayMs); 2448 cleanups.push(function(){ clearTimeout(timer); }); 2449 } 2450 2451 if (t.exitIntent === true) { 2452 // Mobile / touch devices don't have a meaningful "exit toward chrome" 2453 // gesture. Standard heuristic: skip if no mouse pointer is available. 2454 if (!matchMedia("(pointer: coarse)").matches) { 2455 var onMove = function(e) { 2456 if (e.clientY < 8) show("exit_intent"); 2457 }; 2458 document.addEventListener("mousemove", onMove); 2459 cleanups.push(function(){ document.removeEventListener("mousemove", onMove); }); 2460 } 2461 } 2462 2463 if (typeof t.scrollPercent === "number" && t.scrollPercent > 0) { 2464 var threshold = Math.max(1, Math.min(100, t.scrollPercent)); 2465 var onScroll = function() { 2466 var doc = document.documentElement; 2467 var scrolled = (window.scrollY || doc.scrollTop || 0); 2468 var max = (doc.scrollHeight - doc.clientHeight) || 1; 2469 var pct = (scrolled / max) * 100; 2470 if (pct >= threshold) show("scroll"); 2471 }; 2472 window.addEventListener("scroll", onScroll, { passive: true }); 2473 cleanups.push(function(){ window.removeEventListener("scroll", onScroll); }); 2474 } 2475 } 2476 2477 // Note: in-popup form submits and CTA clicks are NOT emitted as separate 2478 // popup_* events. They already fire as form_submit / element_click via 2479 // analytics.ts's global listeners, which now attach popupId + popupName 2480 // to the payload so customers can still see which pop-up the conversion 2481 // came from while continuing to track the standard goal types. 2482 2483 // Expose the show function on the element so [data-htmlpub-popup-target] 2484 // clicks (wired globally below) can find and trigger it without re-parsing 2485 // the config. _hpupShow / _hpupClose are deliberately namespaced + ugly to 2486 // avoid colliding with user code. 2487 el._hpupShow = show; 2488 el._hpupClose = close; 2489 // Returned so boot() can flush unfired trigger listeners on pagehide. 2490 return cleanupTriggers; 2491} 2492 2493// A served Classic leadbox renders INACTIVE: its controller only adds js-active to the dialog 2494// and mask when it receives an "open" message, so a frame nobody tells to open is a full-viewport 2495// sheet showing nothing. 2496// 2497// TWO WIRE FORMATS, because there are two leadbox builds in the corpus and they do NOT agree â 2498// measured across all 462 live clones on 2026-09-09, not inferred from one of them (D71): 2499// 2500// · newer build (410 of 462): a handleMessage controller that accepts EITHER the bare string 2501// "open" or {type:"open"}. 2502// · OLDER build (52 of 462): a hand-rolled listener whose whole test is 2503// window.addEventListener('message', function(e){ e && e.data && 'open' === e.data && j.open() }) 2504// read verbatim out of the served bundle. The test 'open' === e.data is a STRING identity check, so 2505// an object payload fails it silently and that pop-up never opens. 2506// 2507// This function used to post ONLY {type:"open"}, and the comment here used to assert both builds 2508// took it. They do not: every old-build pop-up rendered a full-viewport dark sheet with an 2509// invisible modal â no error, no console message, and zero lead capture. So post BOTH forms. The 2510// duplicate is harmless in each direction: the old build ignores the object, and the newer one's 2511// open() just re-adds the class and refocuses. 2512// 2513// The string form is also what Classic's own embed.js sent, which is why the defect stayed hidden 2514// on the two pages that still carried embed.js â its copy opened correctly beside our blank one. 2515// (The close relay below had this right already: it reads Classic's bare-string "close leadbox" 2516// off the wire. Open is the direction that was guessed.) 2517// 2518// Posted on both paths because the ordering is not ours to control: if the frame is already 2519// loaded the immediate post lands, and if it is not, the load listener catches it. Opening twice 2520// is harmless â open() just re-adds the class and refocuses. 2521function openClassicFrame(el) { 2522 var frame = el.querySelector("iframe"); 2523 if (!frame) return; 2524 var post = function() { 2525 // targetOrigin "*": the frame is served sandboxed, so its origin is opaque and cannot be 2526 // named. The payload is a bare open signal carrying nothing worth protecting. 2527 try { 2528 if (!frame.contentWindow) return; 2529 // String FIRST: it is the format the old build needs, and the one that was missing. 2530 frame.contentWindow.postMessage("open", "*"); 2531 frame.contentWindow.postMessage({ type: "open" }, "*"); 2532 } catch(e) {} 2533 }; 2534 post(); 2535 frame.addEventListener("load", post); 2536} 2537 2538// Global close relay. A chrome:none pop-up's â lives INSIDE its iframe (Classic's .js-close), so 2539// the click is invisible to this document â the frame posts htmlpub:leadbox-close instead and we 2540// close the marker holding it. Without this the Classic card hides itself and the full-viewport 2541// iframe stays put, covering the page with an invisible sheet that swallows every click. 2542// 2543// Identify the marker by matching iframe.contentWindow against e.source, NOT by the message's 2544// uuid: a page can carry several migrated pop-ups, and a uuid can be placed more than once. This 2545// is the technique CDA's own injected handler used. 2546function handleCloseRelay(e) { 2547 if (!e || !e.data) return; 2548 // Classic's own leadbox controller posts the bare STRING "close leadbox" to window.parent when 2549 // it closes (300ms after the fade, from its close() method) â read out of the served bundle, not 2550 // guessed. It is already the wire format, so nothing needs injecting into the frame. The 2551 // namespaced form is accepted too, for anything we serve ourselves later. 2552 var type = typeof e.data === "string" ? e.data : e.data.type; 2553 if (type !== "close leadbox" && type !== "htmlpub:leadbox-close") return; 2554 var frames = document.querySelectorAll("[data-persist-popup] iframe, [data-htmlpub-popup] iframe"); 2555 for (var i = 0; i < frames.length; i++) { 2556 if (frames[i].contentWindow !== e.source) continue; 2557 var marker = frames[i].closest("[data-persist-popup], [data-htmlpub-popup]"); 2558 if (marker && typeof marker._hpupClose === "function") marker._hpupClose("close_relay"); 2559 return; 2560 } 2561} 2562 2563// The migrated pop-up runs in a sandboxed cross-origin iframe and cannot read this page's anal
2563ytics 2564// session/visitor ids (opaque origin blocks its storage). Hand them over when the in-frame capture 2565// script asks â matching e.source to one of our own pop-up iframes so we only answer our own frames. 2566// The ids exist only once analytics consent has minted them, so with no consent nothing is sent and 2567// the ingest keeps the lead but skips the conversion event (there is no page_view session to join). 2568// The page id rides along either way, so the lead files under the page that was served, whatever 2569// URL the browser reports. 2570function handleSessionReq(e) { 2571 if (!e || !e.data || e.data.type !== "hp-popup-session-req" || !e.source) return; 2572 var frames = document.querySelectorAll("[data-persist-popup] iframe, [data-htmlpub-popup] iframe"); 2573 var mine = false; 2574 for (var i = 0; i < frames.length; i++) { if (frames[i].contentWindow === e.source) { mine = true; break; } } 2575 if (!mine) return; 2576 var sid = null, vid = null; 2577 try { sid = sessionStorage.getItem("_hp_sid"); } catch(err) {} 2578 try { vid = localStorage.getItem("_hp_vid"); } catch(err) {} 2579 try { e.source.postMessage({ type: "hp-popup-session", sid: sid, vid: vid, pid: PAGE_ID }, "*"); } catch(err) {} 2580} 2581 2582// Global click-to-open dispatcher. Targets carry [data-persist-popup-target] 2583// (or legacy [data-htmlpub-popup-target]) or href="#popup-â¦" (for plain anchors 2584// that the link picker auto-generated). 2585function handleTargetClick(e) { 2586 var t = e.target; 2587 if (!t || !t.closest) return; 2588 var hit = t.closest("[data-persist-popup-target], [data-htmlpub-popup-target], a[href^='#popup-'], a[href^='#modal-'], a[href^='#dialog-']"); 2589 if (!hit) return; 2590 var id = pAttr(hit, "-target"); 2591 if (!id) { 2592 var href = hit.getAttribute("href") || ""; 2593 if (href.charAt(0) === "#") id = href.slice(1); 2594 } 2595 if (!id) return; 2596 var popup = document.getElementById(id); 2597 if (!popup || pAttr(popup, "") === null) return; 2598 e.preventDefault(); 2599 if (typeof popup._hpupShow === "function") popup._hpupShow("click_target"); 2600} 2601 2602// ââ Boot ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 2603 2604function flushTeardowns(list) { 2605 for (var j = 0; j < list.length; j++) { 2606 try { list[j](); } catch(e) {} 2607 } 2608} 2609 2610function boot() { 2611 if (SCOPE === "popup-id") { 2612 // Embed mode: each standalone popup ships its OWN copy of this runtime, so 2613 // a single global boot guard would make a second embedded popup bail. Wire 2614 // each popup once via a per-element marker, count visits per popup id, and 2615 // attach the global click / pagehide listeners only once across copies. 2616 var list = document.querySelectorAll("[data-persist-popup],[data-htmlpub-popup]"); 2617 if (!list.length) return; 2618 if (!window.__hpupTeardowns) window.__hpupTeardowns = []; 2619 for (var n = 0; n < list.length; n++) { 2620 var pel = list[n]; 2621 if (pel.__hpupWired) continue; 2622 pel.__hpupWired = true; 2623 var pt = wirePopup(pel, recordVisit(pel.getAttribute("id") || "")); 2624 if (typeof pt === "function") window.__hpupTeardowns.push(pt); 2625 } 2626 if (!window.__hpupClickWired) { 2627 window.__hpupClickWired = true; 2628 document.addEventListener("click", handleTargetClick, false); 2629 window.addEventListener("message", handleCloseRelay, false); 2630 window.addEventListener("message", handleSessionReq, false); 2631 window.addEventListener("pagehide", function(){ flushTeardowns(window.__hpupTeardowns || []); }); 2632 } 2633 return; 2634 } 2635 2636 // In-page mode: one runtime per page wires every popup. Guard against 2637 // double-injection (HMR, accidental double-include). 2638 if (window.__hpupBooted) return; 2639 window.__hpupBooted = true; 2640 var popups = document.querySelectorAll("[data-persist-popup],[data-htmlpub-popup]"); 2641 if (!popups.length) return; 2642 var visit = recordVisit(); 2643 var teardowns = []; 2644 for (var i = 0; i < popups.length; i++) { 2645 var t = wirePopup(popups[i], visit); 2646 if (typeof t === "function") teardowns.push(t); 2647 } 2648 document.addEventListener("click", handleTargetClick, false); 2649 window.addEventListener("message", handleCloseRelay, false); 2650 window.addEventListener("message", handleSessionReq, false); 2651 // Flush unfired trigger listeners on pagehide. 2652 window.addEventListener("pagehide", function(){ flushTeardowns(teardowns); }); 2653} 2654 2655if (document.readyState === "loading") { 2656 document.addEventListener("DOMContentLoaded", boot); 2657} else { 2658 boot(); 2659} 2660 2661})(); 2662</script>
2662<script data-htmlpub-countdown-runtime> 2663(function(){ 2664var nodes=document.querySelectorAll('[data-htmlpub-countdown]'); 2665if(!nodes.length)return; 2666function pad(n){n=String(n);return n.length<2?'0'+n:n;} 2667function setDigit(root,sel,val){var el=root.querySelector(sel);if(el)el.textContent=pad(val);} 2668function tick(node,endMs){ 2669var diff=Math.max(0,endMs-Date.now()); 2670var s=Math.floor(diff/1000); 2671var d=Math.floor(s/86400);s-=d*86400; 2672var h=Math.floor(s/3600);s-=h*3600; 2673var m=Math.floor(s/60);s-=m*60; 2674setDigit(node,'.countdown-days',d); 2675setDigit(node,'.countdown-hours',h); 2676setDigit(node,'.countdown-minutes',m); 2677setDigit(node,'.countdown-seconds',s); 2678if(diff===0){ 2679var redirect=node.getAttribute('data-redirect'); 2680var inFrame=false;try{inFrame=window!==window.top;}catch(e){inFrame=true;} 2681if(redirect&&!inFrame){try{window.location.href=redirect;}catch(e){}} 2682return true; 2683} 2684return false; 2685} 2686function endMsFor(node){ 2687var mode=node.getAttribute('data-htmlpub-countdown'); 2688if(mode==='fixed'){ 2689var target=node.getAttribute('data-target'); 2690var t=target?Date.parse(target):NaN; 2691return isNaN(t)?0:t; 2692} 2693if(mode==='evergreen'){ 2694var dur=parseInt(node.getAttribute('data-duration')||'0',10); 2695if(!dur)return 0; 2696var idx=Array.prototype.indexOf.call(nodes,node); 2697var base='htmlpub_cd_'+(node.getAttribute('data-persist-countdown-id')||node.id||(location.pathname+'|'+dur+'|'+idx)); 2698var ver=parseInt(node.getAttribute('data-persist-countdown-reset')||'0',10)||0; 2699var key=ver>0?base+'|v'+ver:base; 2700if(ver>0){try{for(var li=localStorage.length-1;li>=0;li--){var lk=localStorage.key(li);if(!lk)continue;if(lk===base){localStorage.removeItem(lk);continue;}if(lk.indexOf(base+'|v')===0){var lv=lk.slice(base.length+2);if(/^[0-9]+$/.test(lv)&&parseInt(lv,10)<ver){localStorage.removeItem(lk);}}}}catch(e){}} 2701var first=null; 2702try{first=localStorage.getItem(key);}catch(e){} 2703if(!first){first=String(Date.now());try{localStorage.setItem(key,first);}catch(e){}} 2704return parseInt(first,10)+dur*1000; 2705} 2706return 0; 2707} 2708for(var i=0;i<nodes.length;i++){(function(node){ 2709var endMs=endMsFor(node); 2710if(!endMs)return; 2711if(tick(node,endMs))return; 2712var iv=setInterval(function(){if(tick(node,endMs))clearInterval(iv);},1000); 2713})(nodes[i]);} 2714})(); 2715</script>
2715<script data-text-anim-runtime> 2716(function(){ 2717var nodes=document.querySelectorAll('[data-persist-text-anim]'); 2718if(!nodes.length)return; 2719try{if(window.matchMedia('(prefers-reduced-motion: reduce)').matches)return;}catch(e){} 2720var KEYFRAMES={ 2721fadeIn:[{opacity:0},{opacity:1}], 2722slideUp:[{opacity:0,transform:'translateY(32px)'},{opacity:1,transform:'translateY(0)'}], 2723slideDown:[{opacity:0,transform:'translateY(-32px)'},{opacity:1,transform:'translateY(0)'}], 2724slideLeft:[{opacity:0,transform:'translateX(32px)'},{opacity:1,transform:'translateX(0)'}], 2725slideRight:[{opacity:0,transform:'translateX(-32px)'},{opacity:1,transform:'translateX(0)'}], 2726zoomIn:[{opacity:0,transform:'scale(0.85)'},{opacity:1,transform:'scale(1)'}], 2727blurIn:[{opacity:0,filter:'blur(8px)'},{opacity:1,filter:'blur(0)'}], 2728bounceIn:[{offset:0,opacity:0,transform:'translateY(40px)'},{offset:0.55,opacity:1,transform:'translateY(-8px)'},{offset:0.8,transform:'translateY(4px)'},{offset:1,transform:'translateY(0)'}] 2729}; 2730var DEFAULTS={duration:600,delay:0,easing:'ease-out'}; 2731function readInt(el,attr,fallback,min){ 2732var n=parseInt(el.getAttribute(attr)||'',10); 2733if(!isFinite(n)||n<min)return fallback; 2734return n; 2735} 2736function arm(el){ 2737var type=el.getAttribute('data-persist-text-anim')||'fadeIn'; 2738var frames=KEYFRAMES[type]; 2739if(!frames)return null; 2740var duration=readInt(el,'data-persist-text-anim-duration',DEFAULTS.duration,1); 2741var delay=readInt(el,'data-persist-text-anim-delay',DEFAULTS.delay,0); 2742var easing=el.getAttribute('data-persist-text-anim-easing')||DEFAULTS.easing; 2743try{ 2744var anim=el.animate(frames,{duration:duration,delay:delay,easing:easing,fill:'both'}); 2745anim.pause(); 2746anim.currentTime=0; 2747return anim; 2748}catch(e){return null;} 2749} 2750if('IntersectionObserver' in window){ 2751var io=new IntersectionObserver(function(entries){ 2752for(var i=0;i<entries.length;i++){ 2753var en=entries[i]; 2754if(!en.isIntersecting)continue; 2755io.unobserve(en.target); 2756var armed=en.target._hpTextAnim; 2757if(!armed)continue; 2758en.target._hpTextAnim=null; 2759try{armed.play();}catch(e){} 2760} 2761},{threshold:0.15}); 2762for(var j=0;j<nodes.length;j++){ 2763var pending=arm(nodes[j]); 2764if(!pending)continue; 2765nodes[j]._hpTextAnim=pending; 2766io.observe(nodes[j]); 2767} 2768}else{ 2769for(var k=0;k<nodes.length;k++){ 2770var immediate=arm(nodes[k]); 2771if(immediate)try{immediate.play();}catch(e){} 2772} 2773} 2774})(); 2775</script>
2775<script data-htmlpub-nav> 2776(function(){ 2777"use strict"; 2778 2779function closeAllSubmenus(except) { 2780 var panels = document.querySelectorAll('[data-persist-nav-submenu-panel]'); 2781 for (var i = 0; i < panels.length; i++) { 2782 var panel = panels[i]; 2783 if (panel === except) continue; 2784 panel.classList.remove('is-open'); 2785 var trigger = panel.__hpNavTrigger; 2786 if (trigger) trigger.setAttribute('aria-expanded', 'false'); 2787 } 2788} 2789 2790function wireSubmenus() { 2791 var triggers = document.querySelectorAll('[data-persist-nav-submenu]'); 2792 if (!triggers.length) return; 2793 for (var i = 0; i < triggers.length; i++) { 2794 (function(trigger) { 2795 if (trigger.__hpNavWired) return; 2796 trigger.__hpNavWired = true; 2797 var panelId = trigger.getAttribute('data-persist-nav-submenu'); 2798 var panel = panelId ? document.getElementById(panelId) : (trigger.parentElement ? trigger.parentElement.querySelector('[data-persist-nav-submenu-panel]') : null); 2799 if (!panel) return; 2800 panel.__hpNavTrigger = trigger; 2801 trigger.setAttribute('aria-haspopup', 'true'); 2802 trigger.setAttribute('aria-expanded', 'false'); 2803 trigger.addEventListener('click', function(e) { 2804 var isOpen = panel.classList.contains('is-open'); 2805 e.preventDefault(); 2806 e.stopPropagation(); 2807 closeAllSubmenus(isOpen ? null : panel); 2808 panel.classList.toggle('is-open', !isOpen); 2809 trigger.setAttribute('aria-expanded', isOpen ? 'false' : 'true'); 2810 }); 2811 })(triggers[i]); 2812 } 2813 document.addEventListener('click', function(e) { 2814 var t = e.target; 2815 if (t && t.closest && t.closest('[data-persist-nav-submenu-panel], [data-persist-nav-submenu]')) return; 2816 closeAllSubmenus(null); 2817 }); 2818} 2819 2820function wireMobileMenu() { 2821 var toggles = document.querySelectorAll('[data-persist-nav-mobile-toggle], [data-persist-nav-tablet-toggle]'); 2822 if (!toggles.length) return; 2823 for (var i = 0; i < toggles.length; i++) { 2824 (function(toggle) { 2825 if (toggle.__hpNavWired) return; 2826 toggle.__hpNavWired = true; 2827 var isTablet = toggle.hasAttribute('data-persist-nav-tablet-toggle'); 2828 var targetId = isTablet ? toggle.getAttribute('data-persist-nav-tablet-toggle') : toggle.getAttribute('data-persist-nav-mobile-toggle'); 2829 var panelSelector = isTablet ? '[data-persist-nav-tablet-panel]' : '[data-persist-nav-mobile-panel]'; 2830 var panel = targetId ? document.getElementById(targetId) : (toggle.parentElement ? toggle.parentElement.querySelector(panelSelector) : null); 2831 if (!panel) return; 2832 toggle.setAttribute('aria-expanded', 'false'); 2833 toggle.addEventListener('click', function(e) { 2834 var isOpen = panel.classList.contains('is-open'); 2835 e.preventDefault(); 2836 e.stopPropagation(); 2837 if (isOpen) panel.classList.remove('is-open'); else panel.classList.add('is-open'); 2838 toggle.setAttribute('aria-expanded', isOpen ? 'false' : 'true'); 2839 }); 2840 })(toggles[i]); 2841 } 2842} 2843 2844function wireScrollBackground() { 2845 // Every nav this system manages, not just ones with scroll-bg/blur 2846 // currently set â a page published while an OLDER build still applied 2847 // blur directly to nav carries that inline backdrop-filter baked into 2848 // its served HTML even after blur is later turned off, so the self-heal 2849 // below has to run regardless of the CURRENT attribute state. 2850 var navs = document.querySelectorAll('[data-persist-nav-id]'); 2851 if (!navs.length) return; 2852 for (var i = 0; i < navs.length; i++) { 2853 (function(nav) { 2854 // Self-heal: strip a stale inline backdrop-filter baked into a page 2855 // saved before this fix (HP-3558 round 15 follow-up) â see the 2856 // dedicated blur-layer comment below for why it must never live on 2857 // nav itself. 2858 if (nav.style.getPropertyValue('backdrop-filter') || nav.style.getPropertyValue('-webkit-backdrop-filter')) { 2859 nav.style.removeProperty('backdrop-filter'); 2860 nav.style.removeProperty('-webkit-backdrop-filter'); 2861 } 2862 // "Transparent" (data-persist-nav-always-transparent, HP-3558 round 2863 // 16) â the non-sticky counterpart of scroll-bg above. "Useful over a 2864 // hero image" only holds if nav visually overlaps whatever follows 2865 // it, so lift it out of flow the same way Sticky's own 2866 // position:fixed/sticky already does, rather than leaving it 2867 // position:static (which just reveals blank page background above 2868 // the hero, not the hero itself â see iframe-script/utils.ts's
2869 // ensureNavScrollBackground for the matching editor-side comment). 2870 var alwaysTransparent = nav.hasAttribute('data-persist-nav-always-transparent'); 2871 if (alwaysTransparent) { 2872 var navCsForOverlay = window.getComputedStyle(nav); 2873 if (!navCsForOverlay || (navCsForOverlay.position !== 'fixed' && navCsForOverlay.position !== 'sticky')) { 2874 nav.style.position = 'absolute'; 2875 nav.style.top = '0px'; 2876 nav.style.left = '0px'; 2877 nav.style.right = '0px'; 2878 if (!nav.style.zIndex) nav.style.zIndex = '1000'; 2879 } 2880 } 2881 // Blur needs no scroll-reactivity â a blurred OPAQUE background 2882 // looks identical to an unblurred one, so it's simplest and correct 2883 // to apply it once, unconditionally, regardless of scroll state. 2884 // Applied to a dedicated decorative layer BEHIND nav's real 2885 // content, never to nav itself â backdrop-filter promotes whatever 2886 // element carries it into a new containing block for any 2887 // position:fixed descendant, which silently shrank the full-screen/ 2888 // bottom-drawer hamburger panel (both position:fixed) down to nav's 2889 // own small box instead of the viewport when it lived on nav 2890 // directly (HP-3558 round 15 follow-up: "the full-screen hamburger 2891 // menu... ended up being covered by the next section"). 2892 var blur = nav.getAttribute('data-persist-nav-scroll-blur'); 2893 if (blur) { 2894 var blurLayer = nav.querySelector('[data-persist-nav-scroll-blur-layer]'); 2895 if (!blurLayer) { 2896 blurLayer = document.createElement('div'); 2897 blurLayer.setAttribute('data-persist-nav-scroll-blur-layer', ''); 2898 // z-index:-1 required â without it, backdrop-filter's own 2899 // compositing samples nav's LATER siblings (logo/links/CTA) too, 2900 // visibly blurring them despite painting after this layer in 2901 // plain DOM order. Safe from escaping behind nav's own box into 2902 // the page below because Sticky header always sets an explicit, 2903 // non-auto nav.style.zIndex â position:fixed/sticky + a non-auto 2904 // z-index already makes nav its own stacking context. 2905 blurLayer.style.cssText = 'position:absolute;inset:0;pointer-events:none;z-index:-1;'; 2906 nav.insertBefore(blurLayer, nav.firstChild); 2907 var navCs = window.getComputedStyle(nav); 2908 if (!navCs || navCs.position === 'static' || !navCs.position) nav.style.position = 'relative'; 2909 } 2910 // Self-heal a layer saved before the z-index fix landed (see 2911 // iframe-script/utils.ts's ensureNavScrollBackground for the 2912 // matching editor-side comment). 2913 if (blurLayer.style.zIndex !== '-1') blurLayer.style.zIndex = '-1'; 2914 blurLayer.style.setProperty('backdrop-filter', 'blur(' + blur + ')', 'important'); 2915 blurLayer.style.setProperty('-webkit-backdrop-filter', 'blur(' + blur + ')', 'important'); 2916 } 2917 if (alwaysTransparent) { 2918 nav.style.setProperty('background-color', 'transparent', 'important'); 2919 return; 2920 } 2921 var color = nav.getAttribute('data-persist-nav-scroll-bg'); 2922 if (!color || nav.__hpNavScrollWired) return; 2923 nav.__hpNavScrollWired = true; 2924 function sync() { 2925 nav.style.setProperty('background-color', window.scrollY > 24 ? color : 'transparent', 'important'); 2926 } 2927 window.addEventListener('scroll', sync, { passive: true }); 2928 sync(); 2929 })(navs[i]); 2930 } 2931} 2932 2933function boot() { 2934 wireSubmenus(); 2935 wireMobileMenu(); 2936 wireScrollBackground(); 2937} 2938 2939if (document.readyState === "loading") { 2940 document.addEventListener("DOMContentLoaded", boot); 2941} else { 2942 boot(); 2943} 2944 2945})(); 2946</script>
2946<script data-htmlpub-dtr> 2947(function(){ 2948if(false)return; 2949var params=new URLSearchParams(location.search); 2950if(!params.toString())return; 2951function run(){ 2952var MAX=500; 2953var replacements=[]; 2954function strip(s){return s.replace(/<[^>]*>/g,"");} 2955function clean(s){try{s=decodeURIComponent(s);}catch(e){}s=strip(s);if(s.length>MAX)s=s.slice(0,MAX);return s;} 2956function replace(el,val,param){ 2957if(!el||!val)return; 2958var orig=el.textContent||""; 2959var cleaned=clean(val); 2960if(cleaned===orig)return; 2961el.setAttribute("data-dtr-original",orig); 2962el.textContent=cleaned; 2963replacements.push({param:param,target:el.tagName.toLowerCase()+(el.id?"#"+el.id:""),original:orig,replacement:cleaned}); 2964} 2965// 1. Explicit data-dtr attributes 2966var dtrMap={headline:"utm_headline",subheadline:"utm_subheadline",cta:"utm_cta"}; 2967var explicitFound={}; 2968for(var key in dtrMap){ 2969var pv=params.get(dtrMap[key]); 2970if(pv){ 2971var els=document.querySelectorAll('[data-dtr="'+key+'"]'); 2972if(els.length>0){ 2973explicitFound[key]=true; 2974for(var i=0;i<els.length;i++)replace(els[i],pv,dtrMap[key]); 2975} 2976} 2977} 2978// 2. Custom data-dtr-param attributes 2979var customEls=document.querySelectorAll("[data-dtr-param]"); 2980for(var j=0;j<customEls.length;j++){ 2981var pn=customEls[j].getAttribute("data-dtr-param"); 2982if(pn){var cv=params.get(pn);if(cv)replace(customEls[j],cv,pn);} 2983} 2984// 3. Auto-detect fallback for standard params (only if no explicit match) 2985if(!explicitFound.headline){ 2986var hv=params.get("utm_headline"); 2987if(hv){var h1=document.querySelector("h1");if(h1)replace(h1,hv,"utm_headline");} 2988} 2989if(!explicitFound.subheadline){ 2990var sv=params.get("utm_subheadline"); 2991if(sv){var sub=document.querySelector("h2")||document.querySelector(".subtitle")||document.querySelector(".subheadline");if(sub)replace(sub,sv,"utm_subheadline");} 2992} 2993if(!explicitFound.cta){ 2994var cv2=params.get("utm_cta"); 2995if(cv2){var btn=document.querySelector('a.cta,button.cta,a[class*="cta"],button[class*="cta"]')||document.querySelector("a.btn,button.btn,a.button,button[type=submit]")||document.querySelector('a[href]:not([href^="#"]):not([href^="mailto"]):not([href^="tel"])>span,a[href]:not([href^="#"]):not([href^="mailto"]):not([href^="tel"])')||document.querySelector("button");if(btn)replace(btn,cv2,"utm_cta");} 2996} 2997// 4. Generic dtr_* prefix params 2998params.forEach(function(val,key){ 2999if(key.indexOf("dtr_")===0){ 3000var slug=key.slice(4); 3001var targets=document.querySelectorAll('[data-dtr-param="'+key+'"]'); 3002if(targets.length>0){for(var k=0;k<targets.length;k++)replace(targets[k],val,key);} 3003} 3004}); 3005// Fire analytics event 3006if(replacements.length===0)return; 3007var PID="gg1x1lcpx32tjslsbqxxqmm5"; 3008var API="https://htmlpub.com"+"/api/analytics/collect"; 3009function vid(){try{return localStorage.getItem("_hp_vid")||""}catch(e){return""}} 3010function sid(){try{return sessionStorage.getItem("_hp_sid")||""}catch(e){return""}} 3011var ev={pageId:PID,eventType:"dtr_applied",visitorId:vid(),sessionId:sid(),payload:{replacements:replacements},timestamp:Date.now()}; 3012var body=JSON.stringify({events:[ev]}); 3013try{if(navigator.sendBeacon){navigator.sendBeacon(API,new Blob([body],{type:"text/plain"}));} 3014else{fetch(API,{method:"POST",headers:{"Content-Type":"application/json"},body:body,keepalive:true}).catch(function(){});}}catch(e){} 3015} 3016if(document.readyState==="loading"){document.addEventListener("DOMContentLoaded",run);}else{run();} 3017})(); 3018</script>
3018<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:'a43f9a762be4253f',t:'MTc5MDkwMTA3Nw=='};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>
3018</body><!-- v5.1.13 --></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.