1"use strict";(self.webpackChunkultimate_jekyll=self.webpackChunkultimate_jekyll||[]).push([[3069],{3069(e,t,o){o.r(t);var n=o(200),r=o(5652),a=o(8129);const s=()=>new Promise(async function(e){return await a.A.dom().ready(),function(){const e=new n.FormManager("#contact-form",{allowResubmit:!1,resetOnSuccess:!0});e.on("honeypot",()=>{gtag("event","contact_form_spam",{content_type:"honeypot"})}),e.on("submit",async({data:t})=>{const o=a.A.config.brand.contact["slapform-form-id"];if(console.log("Contact form submission:",t),!o)throw a.A.sentry().captureException(new Error("Contact form is not configured - missing slapform ID")),new Error("Contact form is not configured properly. Please try again later.");var n;n=t.subject||"general",gtag("event","generate_lead",{lead_source:"contact_form",subject:n}),fbq("track","Lead",{content_name:"Contact Form",content_category:n}),ttq.track("Contact",{content_id:"contact-form",content_type:"product",content_name:"Contact Form"});const s={first_name:t.first_name,last_name:t.last_name,email:t.email,company:t.company||"",subject:t.subject,message:t.message,uid:t.uid||""},c=`https://api.slapform.com/${o}`;try{const t=await(0,r.A)(c,{method:"POST",body:s,response:"json",cacheBreaker:!1,timeout:3e4});console.log("Contact form submitted successfully:",t),e.showSuccess("Thank you for your message! We'll get back to you within 24 hours.")}catch(e){console.error("Contact form submission failed:",e),(e.message?.includes("network")||e.message?.includes("timeout")||!e.message?.includes("Failed"))&&a.A.sentry().captureException(new Error("Contact form submission error",{cause:e}));let t="An error occurred while sending your message. ";throw e.message?.includes("network")?t+="Please check your internet connection and try again.":e.message?.includes("timeout")?t+="The request timed out. Please try again.":e.message?.includes("Failed")?t=e.message:t+="Please try again or contact us directly.",new Error(t)}})}(),document.querySelectorAll('a[href="#form"], a[href="#chat"]').forEach(e=>{e.addEventListener("click",t=>{t.preventDefault();const o=e.getAttribute("href");if("#chat"!==o){if("#form"===o){const e=document.getElementById("form");if(!e)return;e.scrollIntoView({behavior:"smooth",block:"start"});const t=()=>{const e=document.querySelector("#contact-form input");e&&(e.focus(),!("ontouchstart"in window)&&e.select&&e.select())};t(),setTimeout(t,800)}}else try{a.A._chatsy?.open()}catch(e){a.A.sentry().captureException(new Error("Error opening chat",{cause:e})),a.A.utilities().showNotification("Chat is currently unavailable. Please try again later.","danger")}})}),e()});o.dn(s),o.d(t,["default",0,s])},5652(e,t,o){o.d(t,{A:()=>i});var n=(e=>"undefined"!=typeof require?require:"undefined"!=typeof Proxy?new Proxy(e,{get:(e,t)=>("undefined"!=typeof require?require:e)[t]}):e)(function(e){if("undefined"!=typeof require)return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});function r(e){const t={};return e&&e.headers?(e.headers.forEach(function(e,o){try{t[o]=JSON.parse(e)}catch(n){t[o]=e}}),t):t}function a(e,t,o){return"body"===o.output?t:{status:e.status,headers:r(e),body:t}}function s(e){return new Promise(function(t){setTimeout(t,e)})}async function c(e,t){const o=function(e,t){if(!(e=e||t.url))throw new Error("No URL provided.");return(t=t||{}).timeout=t.timeout||6e4,t.tries=void 0===t.tries?1:t.tries,t.log=void 0!==t.log&&t.log,t.method=(t.method||"get").toLowerCase(),t.cacheBreaker=void 0===t.cacheBreaker||t.cacheBreaker,t.contentType=(void 0===t.contentType?"":t.contentType).toLowerCase(),t.response=(void 0===t.response?"raw":t.response).toLowerCase(),t.output=void 0===t.output?"body":t.output,t.authorization=void 0!==t.authorization&&t.authorization,t.attachResponseHeaders=void 0!==t.attachResponseHeaders&&t.attachResponseHeaders,t.download=t.download||!1,t.headers=t.headers||{},t.query=t.query||{},t.body=t.body||null,{url:e,options:t}}(e,t);e=o.url,t=o.options;const{url:c,config:i}=function(e,t){const o=t.body&&"object"==typeof t.body,n=o&&"function"==typeof t.body.append,r={method:t.method.toUpperCase(),headers:{...t.headers},body:null};
1if(t.body&&(r.body=n?t.body:o?JSON.stringify(t.body):t.body),(o&&!n||"json"===t.contentType)&&(r.headers["Content-Type"]="application/json"),"GET"===r.method&&(delete r.body,delete r.headers["Content-Type"]),t.authorization){const e=t.authorization;r.headers.Authorization=e.match(/^Bearer |^Basic |^Digest /)?e:`Bearer ${e}`}const a=new URL(e);Object.keys(t.query).forEach(function(e){a.searchParams.set(e,t.query[e])});const s=!0===t.cacheBreaker?Math.floor(Date.now()/1e3):t.cacheBreaker;return s&&a.searchParams.set("cb",s),t.log&&console.log("Fetch configuration:",{bodyIsFormData:n,bodyIsObject:o,options:t,config:r}),{url:a.toString(),config:r}}(e,t);return async function(e,t){const o=t.tries,n=0===o;let r;for(let a=1;n||a<=o;a++){if(a>1){const e=Math.min(3e3*(a-1),6e4);await s(e)}let c,i;t.log&&console.log(`Fetch (${a}/${t.tries}): attempt`),t.timeout>0&&(c=new AbortController,i=setTimeout(function(){c.abort()},t.timeout));try{const t=await e(c?c.signal:void 0);return clearTimeout(i),t}catch(e){if(clearTimeout(i),r="AbortError"===e.name?new Error("Request timed out"):e,!n&&a>=o)throw r}}}(async function(e){const o={...i};e&&(o.signal=e);const s="undefined"!=typeof window&&window.fetch||globalThis.fetch;t.log&&console.log("Fetching:",c);const u=await s(c,o);if(u.ok&&t.download){const e=await function(e,t){const{Readable:o}=n("stream"),r=n("fs-jetpack"),a=n("mime-types"),s=n("path");return new Promise(function(n,c){const i=e.headers.get("content-type"),u=(a.extension(i)||"").replace("jpeg","jpg");if(!r.exists(t.download)){const e=s.dirname(t.download);r.dir(e)}s.extname(t.download)||(t.download+=`.${u}`);const d=o.fromWeb(e.body),l=r.createWriteStream(t.download);d.pipe(l),d.on("error",function(e){c(new Error(`Failed to download: ${e}`))}),l.on("finish",function(){n({res:e,path:t.download})})})}(u,t);return a(u,e,t)}if(!u.ok){const e=await function(e,t){const o=r(e);return e.text().then(function(n){const r=new Error(n||e.statusText||"Unknown error");if(r.status=e.status,o["bm-properties"])try{Object.keys(o["bm-properties"]).forEac
1h(function(e){r[e]=o["bm-properties"][e]})}catch(e){console.warn("Failed to add bm-properties to error object",e)}return t.attachResponseHeaders&&Object.keys(o).forEach(function(e){"bm-properties"!==e&&(r[e]=o[e])}),r})}(u,t);throw e}const d=await async function(e,t){if("raw"===t.response)return e;const o=await e.text();if("json"===t.response)try{return JSON.parse(o)}catch(e){throw new Error(`Response is not JSON: ${e}`)}return o}(u,t);return a(u,d,t)},t)}"undefined"!=typeof window&&(window.WonderfulFetch=c);var i=c}}]);
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.