(window.webpackJsonpAPI=window.webpackJsonpAPI||[]).push([[0],{168:function(e,a){},258:function(e,a,t){e.exports=t(498)},263:function(e,a,t){},282:function(e,a){},283:function(e,a){},284:function(e,a){},285:function(e,a){},286:function(e,a){},484:function(e,a,t){},498:function(e,a,t){"use strict";t.r(a);var n=t(0),s=t.n(n),l=t(53),r=t.n(l),c=(t(263),t(8)),i=t(10),o=t(9),m=t(7),u=t(11),d=t(24),p=t(63),h=t(20),E=t.n(h);var g=function(){var e=document.createElement("link");e.href="/css/geocoder.css",e.rel="stylesheet",e.async=!0,document.head.appendChild(e)},f=t(13),y=t(206),v=t(117),b=t(5),N=t(78),_=(t(96),t(177),t(209)),A=t(210),P=t(211),C=t(120),S=t(212),k=t(213),T=t(230),O=t(216),I=t(215),w=t(214),R=t(246),j=t(222),M=t(223),U=t(207),x=t(208),L=t(225),H=t(119),W=t(224),D=t(18),G=t(501),B=function(e){function a(e){var t;return Object(c.a)(this,a),(t=Object(i.a)(this,Object(o.a)(a).call(this,e))).state={modal:!1,nestedModal:!1,closeAll:!1,signupEmail:"",signupPassword:"",loading:!1,loadingSSO:!1,success:!1,isSignup:!0,isSsoLogin:!0,errorMessage:"",baseWebUrl:"https://ip2loc.com",baseApiUrl:"https://api.ip2loc.com"},t.toggle=t.toggle.bind(Object(f.a)(t)),t.handleEmailPasswordSubmit=t.handleEmailPasswordSubmit.bind(Object(f.a)(t)),t.handleValidSubmit=t.handleValidSubmit.bind(Object(f.a)(t)),t.handleSSOSubmit=t.handleSSOSubmit.bind(Object(f.a)(t)),t.handleInvalidSubmit=t.handleInvalidSubmit.bind(Object(f.a)(t)),t.updateSignupEmail=t.updateSignupEmail.bind(Object(f.a)(t)),t.updateSignupPassword=t.updateSignupPassword.bind(Object(f.a)(t)),t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"toggle",value:function(e){}},{key:"componentDidMount",value:function(){var e=this;this.props.onMounted&&this.props.onMounted({toggle:function(a){return e.toggle(a)}})}},{key:"updateSignupEmail",value:function(e){this.setState({signupEmail:e.target.value})}},{key:"updateSignupPassword",value:function(e){this.setState({signupPassword:e.target.value})}},{key:"handleInvalidSubmit",value:function(e,a,t){this.setState({email:t.email,error:!0})}},{key:"handleEmailPasswordSubmit",value:function(){console.log("handleEmailPasswordSubmit: "+this.state.baseWebUrl),this.setState({isSsoLogin:!1}),this.form.submit()}},{key:"handleSSOSubmit",value:function(){console.log("handleSSOSubmit: "+this.state.baseWebUrl),this.setState({isSsoLogin:!0}),this.form.submit()}},{key:"handleValidSubmit",value:function(){var e=this;console.log("Your input email is: "+this.state.signupEmail),console.log("baseWebUrl: "+this.state.baseWebUrl);var a=this.state.baseWebUrl;this.state.isSsoLogin?a+="/auth/email/request":a=a+"/user/"+(this.state.isSignup?"signup":"login"),this.setState({loading:!0}),fetch(a,{method:"post",headers:{Accept:"application/json"},body:JSON.stringify({email:this.state.signupEmail})}).then((function(e){return e.json()})).then((function(a){if(console.log("response success = "+a.success+", error = "+a.error),a.success)e.setState({errorMessage:"",success:!0});else switch(console.log("success: false"+a.error),a.error){case 208:e.setState({errorMessage:"Email already exists!"});break;case 403:e.setState({errorMessage:"Invalid Email!"});break;case 404:e.setState({errorMessage:"Email not exists!"});break;case 429:e.setState({errorMessage:"Too many requests, try again later."});break;default:e.setState({errorMessage:"Server Error: "+a.error})}})).catch((function(a){console.error(a),console.log("success: false catch!"),e.setState({errorMessage:"can't reach server"})})).finally((function(){e.setState({loading:!1})}))}},{key:"render",value:function(){var e=this;return s.a.createElement(R.a,{isOpen:this.state.modal,toggle:this.toggle,className:this.props.className},s.a.createElement(j.a,{toggle:this.toggle},this.state.isSignup?"Sign up":"Login"),s.a.createElement(M.a,null,this.state.success?s.a.createElement(D.AvForm,null,s.a.createElement(U.a,{form:!0},s.a.createElement(x.a,{md:12},s.a.createElement(L.a,null))),s.a.createElement(D.AvGroup,null,this.state.errorMessage?s.a.createElement(H.a,{color:"danger"},this.state.errorMessage):s.a.createElement(H.a,{color:"success"},"Successful! Check your Email. ",s.a.createElement(b.a,{icon:"check"}))),s.a.createElement(v.a,{color:"primary",className:"float-left",id:"buttonOk",onClick:this.handleValidSubmit},s.a.createElement("span",null,"Resend "),s.a.createElement(G.a,null))):s.a.createElement(D.AvForm,{ref:function(a){return e.form=a},onValidSubmit:this.handleValidSubmit,onInvalidSubmit:this.handleInvalidSubmit},s.a.createElement(U.a,{form:!0},s.a.createElement(x.a,{md:12},s.a.createElement(L.a,null,s.a.createElement(D.AvField,{onChange:this.updateSignupEmail,name:"email",label:"Email Address",type:"email",id:"useremail",required:!0})))),this.state.isSignup?s.a.createElement(D.AvGroup,{check:!0},s.a.createElement("small",null,"By signing up, you agree to our terms of service and privacy policy.")):"",this.state.errorMessage?s.a.createElement(H.a,{color:"danger"},this.state.errorMessage):"",s.a.createElement("br",null),s.a.createElement("div",{className:"col-md-12 text-center"},s.a.createElement(v.a,{color:"primary",block:!0,id:"buttonsso",onClick:this.handleSSOSubmit,disabled:this.state.loading&&this.state.isSsoLogin},this.state.loading&&this.state.isSsoLogin?s.a.createElement("span",null,s.a.createElement(b.a,{icon:"spinner",spin:!0})," "):s.a.createElement("span",null,"Submit"))))),s.a.createElement(W.a,null))}}]),a}(s.a.Component),F=Object(p.g)(B),z=t(25),K=function(e){function a(e){var t;Object(c.a)(this,a),t=Object(i.a)(this,Object(o.a)(a).call(this,e)),console.log("REACT_APP_ENVIRONMENT is => ",Object({NODE_ENV:"production",PUBLIC_URL:".",REACT_APP_FLAVOR:"geocoder",REACT_APP_TITLE:"ip2loc",REACT_APP_HOME_TITLE:"IP 2 Location API, detect Language, Currency and more from IP Address",REACT_APP_HOME_TITLE_2_LINE:"Ready to Save Time and Money?",REACT_APP_HOME_TITLE_3_LINE:"",REACT_APP_HOME_H1:"[ACCENT]IP 2 Location API[/ACCENT], detect Language, Currency and more from IP Address",REACT_APP_HOME_H2:"",REACT_APP_HOME_HERO_SHOT_H2:"[ACCENT]Benefit[/ACCENT] from ip2loc's [ACCENT]reliable[/ACCENT] and [ACCENT]developer-friendly[/ACCENT] tools.",REACT_APP_HOME_HERO_WHY_0:"The Power of Geolocation: Use it for Targeted Advertising, Fraud Prevention, Website Localization, Content Personalization, Geotargeting and much more.",REACT_APP_HOME_HERO_WHY_1:"Targeted Advertising: Tailoring ads based on geographic location of website visitors.",REACT_APP_HOME_HERO_WHY_2:"Fraud Prevention: Detecting fraudulent activities by comparing IP location with user's billing or shipping address.",REACT_APP_HOME_HERO_WHY_3:"Website Localization: Automatically presenting website in appropriate language and currency based on visitor's location.",REACT_APP_HOME_HERO_WHY_4:"Content Personalization: Personalizing website content based on visitor's location.",REACT_APP_HOME_HERO_WHY_5:"Targeting regions or countries with marketing campaigns.",REACT_APP_HOME_TITLE_FREE:"Free contingent: 15.000 Requests per month!",REACT_APP_HOME_TEST_IT:"Geolocation is a powerful tool that businesses can use to target their advertising, prevent fraud, localize their website, personalize content, and target specific locations for their products or services. IP 2 Location API is a popular geolocation service that can detect a user's location, language, currency, and other details from their IP address.",REACT_APP_KEYWORDS:"ip api, ip to location api, geoip api, ip to country api",REACT_APP_DESCRIPTION:"IP to location REST API using JSON, XML and Yaml supporting PHP, JavaScript, Node, Java, and more.",REACT_APP_HOME_CALL2ACTION:"Get your [LIGHT]API Key[/LIGHT] now",REACT_APP_DEV_BASE_WEB_URL:"http://localhost:8080",REACT_APP_DEV_BASE_API_URL:"http://0.0.0.0:8080",REACT_APP_BASE_WEB_URL:"https://ip2loc.com",REACT_APP_BASE_API_URL:"https://api.ip2loc.com",REACT_APP_COLOR:"#355691",REACT_APP_BACKGROUND_COLOR:"#00a8ff",REACT_APP_BACKGROUND_IMAGE:"/img/world.svg"})),console.log("REACT_APP_ENVIRONMENT flavor => ","geocoder"),console.log("REACT_APP_ENVIRONMENT flavor => ","geocoder"),t.toggleNav=t.toggleNav.bind(Object(f.a)(t)),t.logout=t.logout.bind(Object(f.a)(t)),t.goToPageAccount=t.goToPageAccount.bind(Object(f.a)(t));var n=e.cookies;return t.state={isOpen:!1,session:void 0!==n.get("session"),baseWebUrl:"https://ip2loc.com"},console.log("cookies has session : "+t.state.session),console.log("cookies session: "+n.get("session")),console.log("loggedInOnly: "+t.props.loggedInOnly),t.props.loggedInOnly&&!t.state.session&&t.props.history.push("/login"),t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"toggleNav",value:function(){this.setState({isOpen:!this.state.isOpen})}},{key:"toggleModalMounted",value:function(e){this.modalSignup=e}},{key:"toggleSignup",value:function(){this.modalSignup.toggle(!0)}},{key:"toggleLogin",value:function(){this.modalSignup.toggle(!1)}},{key:"goToPageAccount",value:function(){this.props.history.push("/dashboard"),console.log("goToPageAccount: /dashboard")}},{key:"logout",value:function(){var e=this;console.log("logout now... ");var a=this.state.baseWebUrl+"/auth/logout";this.setState({loading:!0}),fetch(a,{method:"post",headers:{Accept:"application/json"}}).then((function(e){return e.json()})).then((function(a){console.log("response success = "+a.success+", error = "+a.error),a.success?(console.log("logout: true"),e.setState({session:!1}),e.props.history.push("/#")):console.log("logout: false"+a.error)})).catch((function(a){console.error(a),console.log("success: false catch!"),e.setState({errorMessage:"can't reach server"})})).finally((function(){e.setState({loading:!1})}))}},{key:"render",value:function(){return s.a.createElement(_.a,{light:!0,expand:"md",className:"navbar fixed-top navbar-custom"},s.a.createElement(F,{onMounted:this.toggleModalMounted.bind(this)}),s.a.createElement(A.a,{href:"/"},s.a.createElement("img",{src:"/img/ip2loc-icon.svg",height:"40",width:"40"})," ","ip2loc",""),s.a.createElement(P.a,{onClick:this.toggleNav}),s.a.createElement(C.a,{isOpen:this.state.isOpen,navbar:!0},s.a.createElement(S.a,{className:"ml-auto d-flex justify-content-center"},s.a.createElement(k.a,{id:"btn_pricing",href:"/pricing"},"Pricing"),s.a.createElement(k.a,{id:"btn_pricing",href:"/documentation"},"Documentation"),this.state.session?"":s.a.createElement(k.a,{id:"btn_register",href:"/login",className:"btn-try-for-free",onClick:this.toggleSignup.bind(this)},"Try for Free \u2794"),this.state.session?s.a.createElement(T.a,{nav:!0,inNavbar:!0},s.a.createElement(O.a,{id:"nav_item_account",nav:!0,caret:!0},"Account"),s.a.createElement(I.a,{right:!0},s.a.createElement(w.a,{id:"nav_item_dashboard",onClick:this.goToPageAccount.bind(this)},"Dashboard"),s.a.createElement(w.a,{divider:!0}),s.a.createElement(w.a,{id:"nav_item_logout",onClick:this.logout.bind(this)},"Logout"))):s.a.createElement(k.a,{href:"/login",onClick:this.toggleLogin.bind(this),id:"nav_item_login"},"Login"))))}}]),a}(n.Component),q=Object(p.g)(Object(z.b)(K));function Y(e){return e.toUpperCase()}function V(e){return e.replace(/\[ACCENT\]/g,'').replace(/\[\/ACCENT\]/g,"").replace(/\[LIGHT\]/g,'').replace(/\[\/LIGHT\]/g,"")}var J=t(72),Z=function(e){function a(e){return Object(c.a)(this,a),Object(i.a)(this,Object(o.a)(a).call(this,e))}return Object(u.a)(a,e),Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("div",null,s.a.createElement("table",{className:"col-md-6",class:"table"},s.a.createElement("tbody",null,s.a.createElement("tr",null,s.a.createElement("td",null,s.a.createElement(b.a,{icon:"phone",color:"#00a8ff"})," calling codes"),s.a.createElement("td",null,s.a.createElement(b.a,{icon:"map-signs",color:"#00a8ff"})," capital"),s.a.createElement("td",null,s.a.createElement(b.a,{icon:"atlas",color:"#00a8ff"})," continent code")),s.a.createElement("tr",null,s.a.createElement("td",null,s.a.createElement(b.a,{icon:"globe-americas",color:"#00a8ff"})," continent name"),s.a.createElement("td",null,s.a.createElement(b.a,{icon:"flag",color:"#00a8ff"})," country"),s.a.createElement("td",null,s.a.createElement(b.a,{icon:"flag-usa",color:"#00a8ff"})," country emoji")),s.a.createElement("tr",null,s.a.createElement("td",null,s.a.createElement(b.a,{icon:"globe-europe",color:"#00a8ff"})," eu membership"),s.a.createElement("td",null,s.a.createElement(b.a,{icon:"signature",color:"#00a8ff"})," country name"),s.a.createElement("td",null,s.a.createElement(b.a,{icon:"coins",color:"#00a8ff"})," currencies")),s.a.createElement("tr",null,s.a.createElement("td",null,s.a.createElement(b.a,{icon:"ethernet",color:"#00a8ff"})," ipVersion"),s.a.createElement("td",null,s.a.createElement(b.a,{icon:"globe",rotation:90,color:"#00a8ff"})," latitude"),s.a.createElement("td",null,s.a.createElement(b.a,{icon:"globe",color:"#00a8ff"})," longitude")),s.a.createElement("tr",null,s.a.createElement("td",null,s.a.createElement(b.a,{icon:"map",color:"#00a8ff"})," subdivision"),s.a.createElement("td",null,s.a.createElement(b.a,{icon:"map-marked-alt",color:"#00a8ff"})," subdivision id"),s.a.createElement("td",null,s.a.createElement(b.a,{icon:"clock",color:"#00a8ff"})," time zone")),s.a.createElement("tr",null,s.a.createElement("td",null,s.a.createElement(b.a,{icon:"route",color:"#00a8ff"})," zip"),s.a.createElement("td",null,s.a.createElement(b.a,{icon:"border-all",color:"#00a8ff"})," proxy"),s.a.createElement("td",null,s.a.createElement(b.a,{icon:"dumpster-fire",color:"#00a8ff"})," tor")))),s.a.createElement("br",null),s.a.createElement("br",null))}}]),a}(n.Component),Q=(Object(p.g)(Z),function(e){function a(){return Object(c.a)(this,a),Object(i.a)(this,Object(o.a)(a).apply(this,arguments))}return Object(u.a)(a,e),Object(m.a)(a,[{key:"render",value:function(){var e=this;return s.a.createElement("div",null,s.a.createElement("h4",{className:"subsubheading"},"ProducePDF provides"),s.a.createElement("table",{className:"col-md-6",class:"table list-group"},s.a.createElement("tbody",null,s.a.createElement("tr",null,s.a.createElement("td",null,s.a.createElement(b.a,{icon:"file-pdf",color:"#00a8ff"})," tailored pdf documents in seconds")),s.a.createElement("tr",null,s.a.createElement("td",null,s.a.createElement(b.a,{icon:"file-code",color:"#00a8ff"})," produce beautiful pdf from html files")),s.a.createElement("tr",null,s.a.createElement("td",null,s.a.createElement(b.a,{icon:"file-contract",color:"#00a8ff"})," transform online available html to pdf")),s.a.createElement("tr",null,s.a.createElement("td",null,s.a.createElement(b.a,{icon:"globe",color:"#00a8ff"})," real browser based PDF engine")))),s.a.createElement("br",null),s.a.createElement(v.a,{color:"primary",onClick:function(){return e.props.history.push("/documentation")}},"Example API Response"),s.a.createElement("br",null))}}]),a}(n.Component)),$=Object(p.g)(Q),X=t(122),ee=t.n(X),ae=(t(245),t(3)),te=t.n(ae),ne=(n.Component,t(220)),se=t(227),le=t(226),re=function(e){function a(){return Object(c.a)(this,a),Object(i.a)(this,Object(o.a)(a).apply(this,arguments))}return Object(u.a)(a,e),Object(m.a)(a,[{key:"render",value:function(){return ee.a.highlightAll(),s.a.createElement("pre",null,s.a.createElement("code",{className:ae(this.props.language,"myStyle.cardTextStyle")},this.props.code))}}]),a}(n.Component),ce={cardsize:{position:"relative",width:"480px",height:"360px"},cardcenter:{float:"none",margin:"0 auto"}},ie=function(e){function a(e){var t;return Object(c.a)(this,a),(t=Object(i.a)(this,Object(o.a)(a).call(this,e))).state={activeTab:"1",address:"66.249.90.77",result:"",baseApiUrl:"https://api.ip2loc.com"},t.toggle=t.toggle.bind(Object(f.a)(t)),t.input=s.a.createRef(),t.updateIp=t.updateIp.bind(Object(f.a)(t)),t.handleSubmit=t.handleSubmit.bind(Object(f.a)(t)),t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){var e=this.state.baseApiUrl+"/t8wiiODrLK9j0nYkAQWIgr7pvRMWFf3L/detect";this.fetch(e)}},{key:"fetch",value:function(e){function a(a){return e.apply(this,arguments)}return a.toString=function(){return e.toString()},a}((function(e){var t=this;fetch(e).then((function(e){return e.json()})).then((function(e){if(e.success){var n=a.responseToState(e);t.setState({result:JSON.stringify(n,null,2)}),t.setState({address:n.ip})}})).catch((function(e){return console.error(e)})).finally((function(){return t.setState({loading:!1})}))}))},{key:"updateIp",value:function(e){this.setState({address:e.target.value})}},{key:"handleSubmit",value:function(){var e=this;console.log("Your input ip is: "+this.state.address);var t=this.state.baseApiUrl+"/t8wiiODrLK9j0nYkAQWIgr7pvRMWFf3L/"+this.state.address;fetch(t,{method:"get",headers:{Accept:"application/json"}}).then((function(e){return e.json()})).then((function(t){if(t.success){var n=a.responseToState(t);console.log("response: "+n),e.setState({address:n.ip}),e.setState({result:JSON.stringify(n,null,2)})}else console.log(t.body)})).catch((function(e){return console.error(e)})).finally((function(){return e.setState({loading:!1})}))}},{key:"toggle",value:function(e){this.state.activeTab!==e&&this.setState({activeTab:e})}},{key:"render",value:function(){var e=this;return s.a.createElement("div",{style:ce.cardsize},s.a.createElement(se.a,null,s.a.createElement(le.a,{type:"text",onChange:this.updateIp,onKeyPress:function(a){"Enter"===a.key&&e.handleSubmit()},id:"ipSearch",ref:this.input,placeholder:"supports Ipv4 and Ipv6 addresses",value:this.state.address}),s.a.createElement(v.a,{onClick:this.handleSubmit},s.a.createElement(b.a,{icon:"search"}))),s.a.createElement(re,{language:"language-javascript",code:this.state.result}))}}],[{key:"responseToState",value:function(e){return{ip:e.connection.ip,city:e.location.city,country:e.location.country.alpha_2,country_emoji:e.location.country.emoji,country_eu_member:e.location.country.eu_member,country_name:e.location.country.name,dialing_code:e.location.country.dialing_code[0],latitude:e.location.latitude,longitude:e.location.longitude,time_zone:e.time.zone,zip_code:e.location.country.zip_code}}}]),a}(n.Component),oe=function(e){function a(){return Object(c.a)(this,a),Object(i.a)(this,Object(o.a)(a).apply(this,arguments))}return Object(u.a)(a,e),Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement(J.a,{query:"(max-width: 500px)",align:"center"},(function(e){return e?s.a.createElement(ne.a,{className:te()("cardrotatedScaled")},s.a.createElement(ie,null)):s.a.createElement(ne.a,{className:"cardrotated"},s.a.createElement(ie,null))}))}}]),a}(n.Component),me=(n.Component,{cardsize:{position:"relative",width:"364px",height:"550px",background:'url("/img/file-conversion.svg")',backgroundSize:"364px 570px",backgroundRepeat:"no-repeat",borderRadius:"5px",padding:"2px"},cardcenter:{float:"none",margin:"0 auto"}}),ue={cMapUrl:"cmaps/",cMapPacked:!0,standardFontDataUrl:"standard_fonts/"},de=function(e){function a(e){var t;return Object(c.a)(this,a),(t=Object(i.a)(this,Object(o.a)(a).call(this,e))).goToPrevPage=function(){t.state.pageNumber>1&&t.setState((function(e){return{pageNumber:e.pageNumber-1}}))},t.goToNextPage=function(){t.state.pageNumber1&&void 0!==arguments[1]&&arguments[1],t=a?"":",";return"boolean"===e.type||"number"===e.type?s.a.createElement("div",{key:e.key},s.a.createElement("span",{className:"code-key"},'"',e.key,'"'),": ",s.a.createElement("span",{className:"code-boolean"},e.value),t):s.a.createElement("div",{key:e.key},s.a.createElement("span",{className:"code-key"},'"',e.key,'"'),": ",s.a.createElement("span",{className:"code-string"},'"',e.value,'"'),t)}},{key:"render",value:function(){var e=this,a=!1!==this.props.showHeader;return s.a.createElement("div",{className:"use-cases-section"},a&&s.a.createElement("div",{className:"section-header"},s.a.createElement("span",{className:"section-label"},"Use Cases"),s.a.createElement("h2",{className:"section-title"},"Built for Real-World Applications"),s.a.createElement("p",{className:"section-subtitle"},"From fraud detection to personalization, see how developers use our API")),s.a.createElement("div",{className:"use-cases-grid"},ye.map((function(a,t){return s.a.createElement("a",{className:"use-case-card use-case-card-link",href:"/use-cases/".concat(a.slug),key:t,"aria-label":"Use case: ".concat(a.title)},s.a.createElement("div",{className:"use-case-icon"},s.a.createElement(b.a,{icon:a.icon})),s.a.createElement("div",{className:"use-case-title"},a.title),s.a.createElement("div",{className:"use-case-desc"},a.desc),s.a.createElement("div",{className:"use-case-code"},s.a.createElement("code",null,"{",a.code.map((function(t,n){return e.renderCodeLine(t,n===a.code.length-1)})),"}")))}))))}}]),a}(n.Component),be=Object(p.g)(ve),Ne=function(e){function a(e){var t;return Object(c.a)(this,a),(t=Object(i.a)(this,Object(o.a)(a).call(this,e))).state={address:"66.249.90.77",result:null,baseApiUrl:"https://api.ip2loc.com"},t.input=s.a.createRef(),t.updateIp=t.updateIp.bind(Object(f.a)(t)),t.handleSubmit=t.handleSubmit.bind(Object(f.a)(t)),t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){var e=this.state.baseApiUrl+"/t8wiiODrLK9j0nYkAQWIgr7pvRMWFf3L/detect";this.fetch(e)}},{key:"fetch",value:function(e){function a(a){return e.apply(this,arguments)}return a.toString=function(){return e.toString()},a}((function(e){var t=this;fetch(e).then((function(e){return e.json()})).then((function(e){if(e.success){var n=a.responseToState(e);t.setState({result:n}),t.setState({address:n.ip})}})).catch((function(e){return console.error(e)})).finally((function(){return t.setState({loading:!1})}))}))},{key:"updateIp",value:function(e){this.setState({address:e.target.value})}},{key:"handleSubmit",value:function(){var e=this,t=this.state.baseApiUrl+"/t8wiiODrLK9j0nYkAQWIgr7pvRMWFf3L/"+this.state.address;fetch(t,{method:"get",headers:{Accept:"application/json"}}).then((function(e){return e.json()})).then((function(t){if(t.success){var n=a.responseToState(t);e.setState({address:n.ip}),e.setState({result:n})}})).catch((function(e){return console.error(e)})).finally((function(){return e.setState({loading:!1})}))}},{key:"renderJsonLine",value:function(e,a){var t=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=t?"":",";return"boolean"===typeof a?s.a.createElement("div",{className:"json-line",key:e},s.a.createElement("span",{className:"json-key"},'"',e,'"'),s.a.createElement("span",{className:"json-colon"},": "),s.a.createElement("span",{className:a?"json-true":"json-false"},a.toString()),n):"number"===typeof a?s.a.createElement("div",{className:"json-line",key:e},s.a.createElement("span",{className:"json-key"},'"',e,'"'),s.a.createElement("span",{className:"json-colon"},": "),s.a.createElement("span",{className:"json-number"},a),n):s.a.createElement("div",{className:"json-line",key:e},s.a.createElement("span",{className:"json-key"},'"',e,'"'),s.a.createElement("span",{className:"json-colon"},": "),s.a.createElement("span",{className:"json-string"},'"',a,'"'),n)}},{key:"render",value:function(){var e=this,a=this.state.result,t=a?Object.keys(a):[];return s.a.createElement("div",{className:"api-console-v2"},s.a.createElement("div",{className:"console-header"},s.a.createElement("div",{className:"window-buttons"},s.a.createElement("span",{className:"window-btn red"}),s.a.createElement("span",{className:"window-btn yellow"}),s.a.createElement("span",{className:"window-btn green"})),s.a.createElement("div",{className:"console-title"},"Live API Response - Your IP")),s.a.createElement("div",{className:"console-search"},s.a.createElement(se.a,{className:"console-input-group"},s.a.createElement(le.a,{type:"text",onChange:this.updateIp,onKeyPress:function(a){"Enter"===a.key&&e.handleSubmit()},id:"ipSearchV2",ref:this.input,placeholder:"Enter IP address...",value:this.state.address,className:"console-input"}),s.a.createElement(v.a,{onClick:this.handleSubmit,className:"console-lookup-btn"},"Lookup"))),s.a.createElement("div",{className:"console-response"},s.a.createElement("pre",{className:"json-output"},s.a.createElement("code",null,"{",a&&t.map((function(n,s){return e.renderJsonLine(n,a[n],s===t.length-1)})),"}"))))}}],[{key:"responseToState",value:function(e){return{ip:e.connection.ip,country:e.location.country.alpha_2,country_name:e.location.country.name,country_emoji:e.location.country.emoji,city:e.location.city,latitude:e.location.latitude,longitude:e.location.longitude,timezone:e.time.zone,currency:e.currencies&&e.currencies.length>0?e.currencies[0]:"EUR",eu_member:e.location.country.eu_member,is_proxy:e.connection.is_proxy||!1,is_tor:e.connection.is_tor||!1}}}]),a}(n.Component),_e=t(79);function Ae(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,n)}return t}var Pe="operational",Ce=s.a.createContext({loading:!1,error:null,overall:Pe,status:null,uptimeHistory:null,updatedAt:null,consentRequired:!1,includeUptimeHistory:!1,requestUptimeHistory:function(){}});var Se=function(e){function a(e){var t;return Object(c.a)(this,a),(t=Object(i.a)(this,Object(o.a)(a).call(this,e))).requestUptimeHistory=function(e){var a=!0===e;a!==t.state.includeUptimeHistory&&t.setState({includeUptimeHistory:a,uptimeHistory:a?t.state.uptimeHistory:null},(function(){return t.fetchStatus()}))},t.state={loading:!1,error:null,overall:Pe,status:null,uptimeHistory:null,updatedAt:null,consentRequired:!1,includeUptimeHistory:!1},t._isMounted=!1,t._timer=null,t._inFlight=!1,t._needsRefetch=!1,t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){var e=this;this._isMounted=!0,this.fetchStatus();var a="number"===typeof this.props.intervalMs?this.props.intervalMs:5e3;this._timer=setInterval((function(){return e.fetchStatus()}),a)}},{key:"componentWillUnmount",value:function(){this._isMounted=!1,this._timer&&clearInterval(this._timer)}},{key:"fetchStatus",value:function(){var e=this,a=function(e,a){if(!e)return null;var t=e.replace(/\/$/,"")+"/api/status";return a?t+"?include=uptime_history":t}(this.props.baseWebUrl,this.state.includeUptimeHistory);a&&(this._inFlight?this._needsRefetch=!0:(this._inFlight=!0,this.setState({loading:!0}),fetch(a).then((function(e){return e.json()})).then((function(a){e._isMounted&&(a&&a.success?e.setState({loading:!1,error:null,overall:a.overall||Pe,status:a.status||null,uptimeHistory:a.uptime_history||null,updatedAt:a.updated_at||null,consentRequired:!0===a.consent_required}):e.setState({loading:!1,error:"status endpoint returned error"}))})).catch((function(a){e._isMounted&&e.setState({loading:!1,error:a?String(a):"status fetch failed"})})).finally((function(){e._inFlight=!1,e._needsRefetch&&(e._needsRefetch=!1,e.fetchStatus())}))))}},{key:"render",value:function(){var e=function(e){for(var a=1;alocation->country->name;\necho "City: " . $data->location->city;')}[e]||""}},{key:"copyCode",value:function(){var e=this,a=this.getPlainTextCode(this.state.activeTab);navigator.clipboard.writeText(a).then((function(){e.setState({copied:!0}),setTimeout((function(){return e.setState({copied:!1})}),2e3)}))}},{key:"render",value:function(){var e=this,a=this.props,t=a.apiKey,n=a.baseApiUrl,l=a.showResponse,r=void 0===l||l,c=this.state,i=c.activeTab,o=c.copied,m=t||"YOUR_API_KEY",u=n||"https://api.ip2loc.com";return s.a.createElement("div",{className:"code-tabs-container"},s.a.createElement("div",{className:"code-tabs-header"},s.a.createElement("div",{className:"code-tabs"},s.a.createElement("button",{className:"code-tab ".concat("curl"===i?"active":""),onClick:function(){return e.switchTab("curl")}},"cURL"),s.a.createElement("button",{className:"code-tab ".concat("python"===i?"active":""),onClick:function(){return e.switchTab("python")}},"Python"),s.a.createElement("button",{className:"code-tab ".concat("node"===i?"active":""),onClick:function(){return e.switchTab("node")}},"Node.js"),s.a.createElement("button",{className:"code-tab ".concat("php"===i?"active":""),onClick:function(){return e.switchTab("php")}},"PHP")),s.a.createElement("button",{className:"code-copy-btn ".concat(o?"copied":""),onClick:this.copyCode},o?s.a.createElement(s.a.Fragment,null,s.a.createElement("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2"},s.a.createElement("polyline",{points:"20 6 9 17 4 12"})),"Copied!"):s.a.createElement(s.a.Fragment,null,s.a.createElement("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2"},s.a.createElement("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),s.a.createElement("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})),"Copy"))),s.a.createElement("div",{className:"code-content"},"curl"===i&&s.a.createElement("pre",{className:"code-block"},s.a.createElement("code",null,s.a.createElement("span",{className:"code-comment"},"# Get location data for any IP"),"\n",s.a.createElement("span",{className:"code-function"},"curl")," ",s.a.createElement("span",{className:"code-string"},'"',u,"/",m,'/8.8.8.8"'),r&&s.a.createElement(s.a.Fragment,null,"\n","\n",s.a.createElement("span",{className:"code-comment"},"# Response"),"\n","{","\n"," ",s.a.createElement("span",{className:"code-key"},'"success"'),": ",s.a.createElement("span",{className:"code-keyword"},"true"),",","\n"," ",s.a.createElement("span",{className:"code-key"},'"connection"'),": ","{","\n"," ",s.a.createElement("span",{className:"code-key"},'"ip"'),": ",s.a.createElement("span",{className:"code-string"},'"8.8.8.8"'),",","\n"," ",s.a.createElement("span",{className:"code-key"},'"ip_version"'),": ",s.a.createElement("span",{className:"code-string"},'"4"'),"\n"," ","}",",","\n"," ",s.a.createElement("span",{className:"code-key"},'"location"'),": ","{","\n"," ",s.a.createElement("span",{className:"code-key"},'"country"'),": ","{","\n"," ",s.a.createElement("span",{className:"code-key"},'"name"'),": ",s.a.createElement("span",{className:"code-string"},'"United States"'),",","\n"," ",s.a.createElement("span",{className:"code-key"},'"alpha_2"'),": ",s.a.createElement("span",{className:"code-string"},'"US"'),"\n"," ","}",",","\n"," ",s.a.createElement("span",{className:"code-key"},'"city"'),": ",s.a.createElement("span",{className:"code-string"},'"Mountain View"'),"\n"," ","}","\n","}"))),"python"===i&&s.a.createElement("pre",{className:"code-block"},s.a.createElement("code",null,s.a.createElement("span",{className:"code-keyword"},"import")," requests","\n","\n","response = requests.",s.a.createElement("span",{className:"code-function"},"get"),"(","\n"," ",s.a.createElement("span",{className:"code-string"},'"',u,"/",m,'/8.8.8.8"'),"\n",")","\n","\n","data = response.",s.a.createElement("span",{className:"code-function"},"json"),"()","\n",s.a.createElement("span",{className:"code-function"},"print"),"(",s.a.createElement("span",{className:"code-string"},'f"Country: ',"{","data['location']['country']['name']","}",'"'),")","\n",s.a.createElement("span",{className:"code-function"},"print"),"(",s.a.createElement("span",{className:"code-string"},'f"City: ',"{","data['location']['city']","}",'"'),")")),"node"===i&&s.a.createElement("pre",{className:"code-block"},s.a.createElement("code",null,s.a.createElement("span",{className:"code-keyword"},"const")," response = ",s.a.createElement("span",{className:"code-keyword"},"await")," ",s.a.createElement("span",{className:"code-function"},"fetch"),"(","\n"," ",s.a.createElement("span",{className:"code-string"},'"',u,"/",m,'/8.8.8.8"'),"\n",");","\n","\n",s.a.createElement("span",{className:"code-keyword"},"const")," data = ",s.a.createElement("span",{className:"code-keyword"},"await")," response.",s.a.createElement("span",{className:"code-function"},"json"),"();","\n","\n","console.",s.a.createElement("span",{className:"code-function"},"log"),"(",s.a.createElement("span",{className:"code-string"},"`Country: $","{","data.location.country.name","}","`"),");","\n","console.",s.a.createElement("span",{className:"code-function"},"log"),"(",s.a.createElement("span",{className:"code-string"},"`City: $","{","data.location.city","}","`"),");")),"php"===i&&s.a.createElement("pre",{className:"code-block"},s.a.createElement("code",null,s.a.createElement("span",{className:"code-keyword"},"location->country->name;","\n",s.a.createElement("span",{className:"code-keyword"},"echo")," ",s.a.createElement("span",{className:"code-string"},'"City: "')," . ",s.a.createElement("span",{className:"code-variable"},"$data"),"->location->city;"))))}}]),a}(n.Component),we=function(e){function a(e){var t;return Object(c.a)(this,a),(t=Object(i.a)(this,Object(o.a)(a).call(this,e))).freeContingent=t.freeContingent.bind(Object(f.a)(t)),t.state={freeContingent:"Ready to Save Time and Money?"},t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"freeContingent",value:function(){window.location.href="/changeplan?plan=medium"}},{key:"render",value:function(){return s.a.createElement("div",null,s.a.createElement(q,null),s.a.createElement("div",{className:"head-color nav-padding"},s.a.createElement("div",{className:"nav-padding"},s.a.createElement("div",{className:"container"},s.a.createElement("div",{className:"row align-items-center hero-row"},s.a.createElement("div",{className:"col-lg-6 col-md-12 hero-headline hero-headline-v2"},s.a.createElement("div",{className:"uptime-badge"},s.a.createElement("span",{className:"uptime-dot"}),"99.9% Uptime SLA"),s.a.createElement("h1",{className:"heading"},"IP Geolocation API",s.a.createElement("span",{className:"accent"},"for Developers")),s.a.createElement("div",{className:"subheading"},"Get accurate location data from any IP address in under 50ms. Country, city, timezone, currency, and 15+ data points with a single API call."),s.a.createElement("div",{className:"hero-cta"},s.a.createElement(v.a,{className:"btn-hero-primary",color:"primary",href:"/login"},"Start Free - 30 Day Trial \u2192"),s.a.createElement(v.a,{className:"btn-hero-secondary",outline:!0,color:"dark",href:"/documentation"},"View Documentation")),s.a.createElement("div",{className:"hero-stats"},s.a.createElement("div",{className:"hero-stat"},s.a.createElement("div",{className:"hero-stat-value"},"<50ms"),s.a.createElement("div",{className:"hero-stat-label"},"Response Time")),s.a.createElement("div",{className:"hero-stat"},s.a.createElement("div",{className:"hero-stat-value"},"99.8%"),s.a.createElement("div",{className:"hero-stat-label"},"Accuracy")),s.a.createElement("div",{className:"hero-stat"},s.a.createElement("div",{className:"hero-stat-value"},"1B+"),s.a.createElement("div",{className:"hero-stat-label"},"API Calls Served")))),s.a.createElement("div",{className:"col-lg-6 col-md-12 hero-console"},s.a.createElement(Ne,null))))),s.a.createElement("div",{className:"head-curve"},s.a.createElement("br",null),s.a.createElement("br",null))),s.a.createElement("div",{className:"trusted-section"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"trusted-content"},s.a.createElement("div",{className:"trusted-avatars"},s.a.createElement("img",{src:"/img/avatars/avatar1.png",alt:"Developer",className:"trusted-avatar"}),s.a.createElement("img",{src:"/img/avatars/avatar2.png",alt:"Developer",className:"trusted-avatar"}),s.a.createElement("img",{src:"/img/avatars/avatar3.png",alt:"Developer",className:"trusted-avatar"}),s.a.createElement("img",{src:"/img/avatars/avatar4.png",alt:"Developer",className:"trusted-avatar"}),s.a.createElement("img",{src:"/img/avatars/avatar5.png",alt:"Developer",className:"trusted-avatar"})),s.a.createElement("span",{className:"trusted-text"},"Trusted by 10,000+ Developers")))),s.a.createElement("div",{className:"code-snippets-section"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"section-header text-center"},s.a.createElement("span",{className:"section-label"},"Quick Start"),s.a.createElement("h2",{className:"section-title"},"One API Call. All the Data."),s.a.createElement("p",{className:"section-subtitle"},"Integrate in minutes with any language. No SDK required.")),s.a.createElement(Ie,null))),s.a.createElement("div",{id:"features"},s.a.createElement(fe,null)),s.a.createElement("div",{id:"use-cases"},s.a.createElement(be,null)),!1,!1,"",s.a.createElement("div",{className:"cta-section-v2"},s.a.createElement("div",{className:"cta-content-v2"},s.a.createElement("span",{className:"cta-label"},"Get Started Today"),s.a.createElement("h2",{className:"cta-title-v2"},"Ready to Build Something Amazing?"),s.a.createElement("p",{className:"cta-subtitle-v2"},"Join thousands of developers using our IP Geolocation API. Start with a free 30-day trial."),s.a.createElement("button",{className:"cta-button-v2",onClick:this.freeContingent},"Get Your Free API Key",s.a.createElement("span",{className:"arrow"},"\u2192")),s.a.createElement("div",{className:"cta-features"},s.a.createElement("div",{className:"cta-feature"},s.a.createElement(b.a,{icon:"check-circle"}),s.a.createElement("span",null,"No credit card required")),s.a.createElement("div",{className:"cta-feature"},s.a.createElement(b.a,{icon:"check-circle"}),s.a.createElement("span",null,"30-day free trial")),s.a.createElement("div",{className:"cta-feature"},s.a.createElement(b.a,{icon:"check-circle"}),s.a.createElement("span",null,"Cancel anytime"))))),s.a.createElement(Oe,null))}}]),a}(n.Component),Re=function(e){function a(e){var t;Object(c.a)(this,a),t=Object(i.a)(this,Object(o.a)(a).call(this,e)),g(),console.log("--\x3e");var n=E.a.parse(t.props.location.search);return console.log(n.plan),t.state={gtmId:"GTM-PNZNW4R"},t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){document.title="ip2loc"}}]),Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement(we,null)}}]),a}(n.Component),je=(t(484),t(252)),Me=function(e){function a(e){var t;return Object(c.a)(this,a),(t=Object(i.a)(this,Object(o.a)(a).call(this,e))).state={loading:!0,status:"loading",message:"Activating your account...",baseWebUrl:"https://ip2loc.com"},g(),t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){var e=this;document.title="Account Activation";var a=E.a.parse(this.props.location.search),t=this.state.baseWebUrl+"/auth/email/activate";fetch(t,{method:"post",headers:{Accept:"application/json"},body:JSON.stringify({token:a.token})}).then((function(e){return e.json()})).then((function(a){if(a.success)e.setState({loading:!1,status:"success",message:"Your account has been activated successfully!"}),setTimeout((function(){e.props.history.push(a.plan?"/dashboard":"/plans")}),2500);else switch(a.error){case 208:e.setState({loading:!1,status:"warning",message:"This account has already been activated."});break;case 404:e.setState({loading:!1,status:"error",message:"Invalid or expired activation token."});break;default:e.setState({loading:!1,status:"error",message:"An unexpected error occurred. Please try again."})}})).catch((function(a){console.error(a),e.setState({loading:!1,status:"error",message:"Could not connect to the server. Please try again later."})}))}},{key:"getIcon",value:function(){switch(this.state.status){case"loading":return s.a.createElement(b.a,{icon:"spinner",spin:!0});case"success":return s.a.createElement(b.a,{icon:"check-circle"});case"warning":return s.a.createElement(b.a,{icon:"exclamation-circle"});case"error":return s.a.createElement(b.a,{icon:"times-circle"});default:return s.a.createElement(b.a,{icon:"spinner",spin:!0})}}},{key:"getIconClass",value:function(){switch(this.state.status){case"loading":return"activation-icon loading";case"success":return"activation-icon success";case"warning":return"activation-icon warning";case"error":return"activation-icon error";default:return"activation-icon"}}},{key:"render",value:function(){return s.a.createElement("div",{className:"d-flex flex-column min-vh-100"},s.a.createElement(q,null),s.a.createElement("main",{className:"flex-fill"},s.a.createElement("div",{className:"success-page"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"success-card"},s.a.createElement("div",{className:this.getIconClass()},this.getIcon()),s.a.createElement("h1",null,"Account Activation"),s.a.createElement("p",{className:"success-message"},this.state.message),"success"===this.state.status&&s.a.createElement("p",{className:"redirect-notice"},"Redirecting you automatically..."),("warning"===this.state.status||"error"===this.state.status)&&s.a.createElement("div",{className:"success-actions"},s.a.createElement("a",{href:"/signin",className:"btn-primary-custom"},s.a.createElement(b.a,{icon:"sign-in-alt",className:"mr-2"}),"Go to Sign In")))))),s.a.createElement(Oe,null))}}]),a}(n.Component),Ue=function(e){function a(e){var t;return Object(c.a)(this,a),t=Object(i.a)(this,Object(o.a)(a).call(this,e)),g(),t.state={loading:!0,status:"loading",message:"Signing you in...",baseWebUrl:"https://ip2loc.com"},t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){var e=this;document.title="Sign In";var a=E.a.parse(this.props.location.search),t=this.state.baseWebUrl+"/auth/email/signin";fetch(t,{method:"post",headers:{Accept:"application/json"},body:JSON.stringify({token:a.token})}).then((function(e){return e.json()})).then((function(a){if(a.success)e.setState({loading:!1,status:"success",message:"Sign in successful!"}),setTimeout((function(){e.props.history.push(a.plan?"/dashboard":"/plans")}),2e3);else switch(a.error){case 208:e.setState({loading:!1,status:"warning",message:"This account has already been activated."});break;case 498:e.setState({loading:!1,status:"error",message:"Token is no longer valid. Please request a new sign-in link."});break;default:e.setState({loading:!1,status:"error",message:"An unexpected error occurred. Please try again."})}})).catch((function(a){console.error(a),e.setState({loading:!1,status:"error",message:"Could not connect to the server. Please try again later."})}))}},{key:"getIcon",value:function(){switch(this.state.status){case"loading":return s.a.createElement(b.a,{icon:"spinner",spin:!0});case"success":return s.a.createElement(b.a,{icon:"check-circle"});case"warning":return s.a.createElement(b.a,{icon:"exclamation-circle"});case"error":return s.a.createElement(b.a,{icon:"times-circle"});default:return s.a.createElement(b.a,{icon:"spinner",spin:!0})}}},{key:"getIconClass",value:function(){switch(this.state.status){case"loading":return"activation-icon loading";case"success":return"activation-icon success";case"warning":return"activation-icon warning";case"error":return"activation-icon error";default:return"activation-icon"}}},{key:"render",value:function(){return s.a.createElement("div",{className:"d-flex flex-column min-vh-100"},s.a.createElement(q,null),s.a.createElement("main",{className:"flex-fill"},s.a.createElement("div",{className:"success-page"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"success-card"},s.a.createElement("div",{className:this.getIconClass()},this.getIcon()),s.a.createElement("h1",null,"Sign In"),s.a.createElement("p",{className:"success-message"},this.state.message),"success"===this.state.status&&s.a.createElement("p",{className:"redirect-notice"},"Redirecting you to your dashboard..."),("warning"===this.state.status||"error"===this.state.status)&&s.a.createElement("div",{className:"success-actions"},s.a.createElement("a",{href:"/login",className:"btn-primary-custom"},s.a.createElement(b.a,{icon:"sign-in-alt",className:"mr-2"}),"Request New Link")))))),s.a.createElement(Oe,null))}}]),a}(n.Component),xe=(t(485),t(164)),Le=(n.Component,t(229)),He={height:"14px"},We=(n.Component,function(e){function a(e){var t;return Object(c.a)(this,a),t=Object(i.a)(this,Object(o.a)(a).call(this,e)),g(),t.state={apiKey:"YOUR_API_KEY",baseWebUrl:"https://ip2loc.com",baseApiUrl:"https://api.ip2loc.com",copiedEndpoint:null},t.copyToClipboard=t.copyToClipboard.bind(Object(f.a)(t)),t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){document.title="API Documentation - ip2loc";var e=this.state.baseWebUrl+"/user/apiKey";this.fetchApiKey(e)}},{key:"fetchApiKey",value:function(e){var a=this;fetch(e).then((function(e){return e.json()})).then((function(e){e.success&&e.apiKey&&a.setState({apiKey:e.apiKey})})).catch((function(e){return console.error(e)}))}},{key:"copyToClipboard",value:function(e,a){var t=this;navigator.clipboard.writeText(e).then((function(){t.setState({copiedEndpoint:a}),setTimeout((function(){return t.setState({copiedEndpoint:null})}),2e3)}))}},{key:"render",value:function(){var e=this,a=this.state,t=a.apiKey,n=a.baseApiUrl,l=a.copiedEndpoint,r="YOUR_API_KEY"!==t;return s.a.createElement("div",{className:"d-flex flex-column min-vh-100"},s.a.createElement(q,null),s.a.createElement("main",{className:"flex-fill nav-padding"},s.a.createElement("div",{className:"docs-hero"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"docs-hero-content"},s.a.createElement("span",{className:"docs-badge"},"Documentation"),s.a.createElement("h1",{className:"docs-title"},"API Reference"),s.a.createElement("p",{className:"docs-subtitle"},"Everything you need to integrate IP geolocation into your application. Get started in minutes with our simple REST API."),r&&s.a.createElement("div",{className:"docs-api-key-banner"},s.a.createElement("span",{className:"api-key-label"},"Your API Key:"),s.a.createElement("code",{className:"api-key-value"},t),s.a.createElement("button",{className:"api-key-copy ".concat("apikey"===l?"copied":""),onClick:function(){return e.copyToClipboard(t,"apikey")}},"apikey"===l?"Copied!":"Copy"))))),s.a.createElement("div",{className:"docs-nav-section"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"docs-nav-cards"},s.a.createElement("a",{href:"#quickstart",className:"docs-nav-card"},s.a.createElement("div",{className:"docs-nav-icon"},"\ud83d\ude80"),s.a.createElement("div",{className:"docs-nav-text"},s.a.createElement("h4",null,"Quick Start"),s.a.createElement("p",null,"Get up and running in 2 minutes"))),s.a.createElement("a",{href:"#endpoints",className:"docs-nav-card"},s.a.createElement("div",{className:"docs-nav-icon"},"\ud83d\udd17"),s.a.createElement("div",{className:"docs-nav-text"},s.a.createElement("h4",null,"Endpoints"),s.a.createElement("p",null,"API endpoints reference"))),s.a.createElement("a",{href:"#parameters",className:"docs-nav-card"},s.a.createElement("div",{className:"docs-nav-icon"},"\u2699\ufe0f"),s.a.createElement("div",{className:"docs-nav-text"},s.a.createElement("h4",null,"Parameters"),s.a.createElement("p",null,"Available data fields"))),s.a.createElement("a",{href:"#examples",className:"docs-nav-card"},s.a.createElement("div",{className:"docs-nav-icon"},"\ud83d\udcbb"),s.a.createElement("div",{className:"docs-nav-text"},s.a.createElement("h4",null,"Code Examples"),s.a.createElement("p",null,"Ready-to-use snippets")))))),s.a.createElement("div",{className:"docs-section",id:"quickstart"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"docs-section-header"},s.a.createElement("h2",null,"Quick Start"),s.a.createElement("p",null,"Make your first API call in seconds. Our REST API returns JSON responses and requires only your API key for authentication.")),s.a.createElement("div",{className:"docs-step"},s.a.createElement("div",{className:"docs-step-number"},"1"),s.a.createElement("div",{className:"docs-step-content"},s.a.createElement("h3",null,"Get Your API Key"),s.a.createElement("p",null,r?s.a.createElement(s.a.Fragment,null,"Your API key is shown above. Use it in all your requests."):s.a.createElement(s.a.Fragment,null,s.a.createElement("a",{href:"/login"},"Sign up for free")," to get your API key. Start with a free 30-day trial.")))),s.a.createElement("div",{className:"docs-step"},s.a.createElement("div",{className:"docs-step-number"},"2"),s.a.createElement("div",{className:"docs-step-content"},s.a.createElement("h3",null,"Make Your First Request"),s.a.createElement("p",null,"Use any HTTP client to call our API. Here's a simple example:"),s.a.createElement(Ie,{apiKey:t,baseApiUrl:n,showResponse:!0}))))),s.a.createElement("div",{className:"docs-section docs-section-alt",id:"endpoints"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"docs-section-header"},s.a.createElement("h2",null,"API Endpoints"),s.a.createElement("p",null,"All endpoints return JSON responses. Authentication is done via API key in the URL.")),s.a.createElement("div",{className:"docs-endpoint-card"},s.a.createElement("div",{className:"endpoint-header"},s.a.createElement("span",{className:"endpoint-method"},"GET"),s.a.createElement("span",{className:"endpoint-label"},"Detect Current IP")),s.a.createElement("div",{className:"endpoint-url-row"},s.a.createElement("code",{className:"endpoint-url"},n,"/",t,"/detect"),s.a.createElement("button",{className:"endpoint-copy ".concat("detect"===l?"copied":""),onClick:function(){return e.copyToClipboard("".concat(n,"/").concat(t,"/detect"),"detect")}},"detect"===l?"\u2713":"Copy")),s.a.createElement("p",{className:"endpoint-desc"},"Automatically detects and returns location data for the requesting IP address.")),s.a.createElement("div",{className:"docs-endpoint-card"},s.a.createElement("div",{className:"endpoint-header"},s.a.createElement("span",{className:"endpoint-method"},"GET"),s.a.createElement("span",{className:"endpoint-label"},"Lookup Specific IP")),s.a.createElement("div",{className:"endpoint-url-row"},s.a.createElement("code",{className:"endpoint-url"},n,"/",t,"/8.8.8.8"),s.a.createElement("button",{className:"endpoint-copy ".concat("lookup"===l?"copied":""),onClick:function(){return e.copyToClipboard("".concat(n,"/").concat(t,"/8.8.8.8"),"lookup")}},"lookup"===l?"\u2713":"Copy")),s.a.createElement("p",{className:"endpoint-desc"},"Returns location data for a specific IPv4 or IPv6 address.")),s.a.createElement("div",{className:"docs-endpoint-card"},s.a.createElement("div",{className:"endpoint-header"},s.a.createElement("span",{className:"endpoint-method"},"GET"),s.a.createElement("span",{className:"endpoint-label"},"With Include Parameter")),s.a.createElement("div",{className:"endpoint-url-row"},s.a.createElement("code",{className:"endpoint-url"},n,"/",t,"/detect?include=city,country_name"),s.a.createElement("button",{className:"endpoint-copy ".concat("include"===l?"copied":""),onClick:function(){return e.copyToClipboard("".concat(n,"/").concat(t,"/detect?include=city,country_name"),"include")}},"include"===l?"\u2713":"Copy")),s.a.createElement("p",{className:"endpoint-desc"},"Use the ",s.a.createElement("code",null,"include")," parameter to request only specific fields and reduce response size.")))),s.a.createElement("div",{className:"docs-section",id:"parameters"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"docs-section-header"},s.a.createElement("h2",null,"Available Parameters"),s.a.createElement("p",null,"Use the ",s.a.createElement("code",null,"include")," query parameter to select which fields to return. Separate multiple fields with commas.")),s.a.createElement("div",{className:"docs-params-grid"},s.a.createElement("div",{className:"docs-param-category"},s.a.createElement("h4",null,"Location Data"),s.a.createElement("div",{className:"docs-param-list"},s.a.createElement("div",{className:"docs-param"},s.a.createElement("code",null,"city"),s.a.createElement("span",null,'"Brooklyn"')),s.a.createElement("div",{className:"docs-param"},s.a.createElement("code",null,"capital"),s.a.createElement("span",null,'"Washington D.C."')),s.a.createElement("div",{className:"docs-param"},s.a.createElement("code",null,"country_name"),s.a.createElement("span",null,'"United States"')),s.a.createElement("div",{className:"docs-param"},s.a.createElement("code",null,"country_alpha_2"),s.a.createElement("span",null,'"US"')),s.a.createElement("div",{className:"docs-param"},s.a.createElement("code",null,"country_alpha_3"),s.a.createElement("span",null,'"USA"')),s.a.createElement("div",{className:"docs-param"},s.a.createElement("code",null,"country_emoji"),s.a.createElement("span",null,'"\ud83c\uddfa\ud83c\uddf8"')),s.a.createElement("div",{className:"docs-param"},s.a.createElement("code",null,"country_subdivision"),s.a.createElement("span",null,'"New York"')),s.a.createElement("div",{className:"docs-param"},s.a.createElement("code",null,"country_subdivision_id"),s.a.createElement("span",null,'"NY"')),s.a.createElement("div",{className:"docs-param"},s.a.createElement("code",null,"country_zip_code"),s.a.createElement("span",null,'"11205"')))),s.a.createElement("div",{className:"docs-param-category"},s.a.createElement("h4",null,"Geographic Data"),s.a.createElement("div",{className:"docs-param-list"},s.a.createElement("div",{className:"docs-param"},s.a.createElement("code",null,"continent_code"),s.a.createElement("span",null,'"NA"')),s.a.createElement("div",{className:"docs-param"},s.a.createElement("code",null,"continent_name"),s.a.createElement("span",null,'"North America"')),s.a.createElement("div",{className:"docs-param"},s.a.createElement("code",null,"location_latitude"),s.a.createElement("span",null,"40.6955")),s.a.createElement("div",{className:"docs-param"},s.a.createElement("code",null,"location_longitude"),s.a.createElement("span",null,"-73.9667")),s.a.createElement("div",{className:"docs-param"},s.a.createElement("code",null,"time_zone"),s.a.createElement("span",null,'"America/New_York"')))),s.a.createElement("div",{className:"docs-param-category"},s.a.createElement("h4",null,"Additional Data"),s.a.createElement("div",{className:"docs-param-list"},s.a.createElement("div",{className:"docs-param"},s.a.createElement("code",null,"ip"),s.a.createElement("span",null,'"161.185.160.93"')),s.a.createElement("div",{className:"docs-param"},s.a.createElement("code",null,"ip_version"),s.a.createElement("span",null,"4")),s.a.createElement("div",{className:"docs-param"},s.a.createElement("code",null,"country_eu_member"),s.a.createElement("span",null,"false")),s.a.createElement("div",{className:"docs-param"},s.a.createElement("code",null,"country_dialing_code"),s.a.createElement("span",null,'["1"]')),s.a.createElement("div",{className:"docs-param"},s.a.createElement("code",null,"currency_code"),s.a.createElement("span",null,'["USD"]')))),s.a.createElement("div",{className:"docs-param-category"},s.a.createElement("h4",null,"Security Data"),s.a.createElement("div",{className:"docs-param-list"},s.a.createElement("div",{className:"docs-param"},s.a.createElement("code",null,"is_proxy"),s.a.createElement("span",null,"false")),s.a.createElement("div",{className:"docs-param"},s.a.createElement("code",null,"is_tor"),s.a.createElement("span",null,"false")),s.a.createElement("div",{className:"docs-param"},s.a.createElement("code",null,"proxy_type"),s.a.createElement("span",null,"null"))))))),s.a.createElement("div",{className:"docs-section docs-section-alt",id:"response"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"docs-section-header"},s.a.createElement("h2",null,"Full Response Example"),s.a.createElement("p",null,"Here's a complete API response with all available fields.")),s.a.createElement("div",{className:"docs-response-example"},s.a.createElement("div",{className:"response-header"},s.a.createElement("span",null,"JSON Response"),s.a.createElement("button",{className:"endpoint-copy ".concat("response"===l?"copied":""),onClick:function(){return e.copyToClipboard(JSON.stringify({success:!0,connection:{ip:"161.185.160.93",ip_version:"4"},location:{capital:"Washington D.C.",city:"New York",continent:{code:"NA",name:"North America"},country:{alpha_2:"US",alpha_3:"USA",dialing_code:["1"],emoji:"\ud83c\uddfa\ud83c\uddf8",eu_member:!1,name:"United States",subdivision:"New York",subdivision_id:"NY",zip_code:"10003"},latitude:40.7359,longitude:-73.9904},security:{is_proxy:!1,is_tor:!1,proxy_type:null},time:{zone:"America/New_York"},currency:{code:["USD","USN","USS"]}},null,2),"response")}},"response"===l?"\u2713 Copied":"Copy")),s.a.createElement("pre",{className:"response-body"},"{","\n"," ",s.a.createElement("span",{className:"code-key"},'"success"'),": ",s.a.createElement("span",{className:"code-boolean"},"true"),",","\n"," ",s.a.createElement("span",{className:"code-key"},'"connection"'),": ","{","\n"," ",s.a.createElement("span",{className:"code-key"},'"ip"'),": ",s.a.createElement("span",{className:"code-string"},'"161.185.160.93"'),",","\n"," ",s.a.createElement("span",{className:"code-key"},'"ip_version"'),": ",s.a.createElement("span",{className:"code-string"},'"4"'),"\n"," ","}",",","\n"," ",s.a.createElement("span",{className:"code-key"},'"location"'),": ","{","\n"," ",s.a.createElement("span",{className:"code-key"},'"capital"'),": ",s.a.createElement("span",{className:"code-string"},'"Washington D.C."'),",","\n"," ",s.a.createElement("span",{className:"code-key"},'"city"'),": ",s.a.createElement("span",{className:"code-string"},'"New York"'),",","\n"," ",s.a.createElement("span",{className:"code-key"},'"continent"'),": ","{","\n"," ",s.a.createElement("span",{className:"code-key"},'"code"'),": ",s.a.createElement("span",{className:"code-string"},'"NA"'),",","\n"," ",s.a.createElement("span",{className:"code-key"},'"name"'),": ",s.a.createElement("span",{className:"code-string"},'"North America"'),"\n"," ","}",",","\n"," ",s.a.createElement("span",{className:"code-key"},'"country"'),": ","{","\n"," ",s.a.createElement("span",{className:"code-key"},'"alpha_2"'),": ",s.a.createElement("span",{className:"code-string"},'"US"'),",","\n"," ",s.a.createElement("span",{className:"code-key"},'"alpha_3"'),": ",s.a.createElement("span",{className:"code-string"},'"USA"'),",","\n"," ",s.a.createElement("span",{className:"code-key"},'"dialing_code"'),": [",s.a.createElement("span",{className:"code-string"},'"1"'),"],","\n"," ",s.a.createElement("span",{className:"code-key"},'"emoji"'),": ",s.a.createElement("span",{className:"code-string"},'"\ud83c\uddfa\ud83c\uddf8"'),",","\n"," ",s.a.createElement("span",{className:"code-key"},'"eu_member"'),": ",s.a.createElement("span",{className:"code-boolean"},"false"),",","\n"," ",s.a.createElement("span",{className:"code-key"},'"name"'),": ",s.a.createElement("span",{className:"code-string"},'"United States"'),",","\n"," ",s.a.createElement("span",{className:"code-key"},'"subdivision"'),": ",s.a.createElement("span",{className:"code-string"},'"New York"'),",","\n"," ",s.a.createElement("span",{className:"code-key"},'"subdivision_id"'),": ",s.a.createElement("span",{className:"code-string"},'"NY"'),",","\n"," ",s.a.createElement("span",{className:"code-key"},'"zip_code"'),": ",s.a.createElement("span",{className:"code-string"},'"10003"'),"\n"," ","}",",","\n"," ",s.a.createElement("span",{className:"code-key"},'"latitude"'),": ",s.a.createElement("span",{className:"code-number"},"40.7359"),",","\n"," ",s.a.createElement("span",{className:"code-key"},'"longitude"'),": ",s.a.createElement("span",{className:"code-number"},"-73.9904"),"\n"," ","}",",","\n"," ",s.a.createElement("span",{className:"code-key"},'"security"'),": ","{","\n"," ",s.a.createElement("span",{className:"code-key"},'"is_proxy"'),": ",s.a.createElement("span",{className:"code-boolean"},"false"),",","\n"," ",s.a.createElement("span",{className:"code-key"},'"is_tor"'),": ",s.a.createElement("span",{className:"code-boolean"},"false"),",","\n"," ",s.a.createElement("span",{className:"code-key"},'"proxy_type"'),": ",s.a.createElement("span",{className:"code-null"},"null"),"\n"," ","}",",","\n"," ",s.a.createElement("span",{className:"code-key"},'"time"'),": ","{","\n"," ",s.a.createElement("span",{className:"code-key"},'"zone"'),": ",s.a.createElement("span",{className:"code-string"},'"America/New_York"'),"\n"," ","}",",","\n"," ",s.a.createElement("span",{className:"code-key"},'"currency"'),": ","{","\n"," ",s.a.createElement("span",{className:"code-key"},'"code"'),": [",s.a.createElement("span",{className:"code-string"},'"USD"'),", ",s.a.createElement("span",{className:"code-string"},'"USN"'),", ",s.a.createElement("span",{className:"code-string"},'"USS"'),"]","\n"," ","}","\n","}")))),s.a.createElement("div",{className:"docs-section",id:"examples"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"docs-section-header"},s.a.createElement("h2",null,"Code Examples"),s.a.createElement("p",null,"Copy and paste these examples to get started quickly in your preferred language.")),s.a.createElement(Ie,{apiKey:t,baseApiUrl:n,showResponse:!1}),s.a.createElement("div",{className:"docs-cta-box"},s.a.createElement("h3",null,"Ready to get started?"),s.a.createElement("p",null,"Create your free account and start your 30-day free trial."),s.a.createElement("a",{href:"/login",className:"docs-cta-btn"},"Get Your API Key \u2192"))))),s.a.createElement(Oe,null))}}]),a}(n.Component)),De=t(256),Ge=function(e){function a(){var e,t;Object(c.a)(this,a);for(var n=arguments.length,s=new Array(n),l=0;l response.json())\n .then(response => {\n if (response.success) {\n if (response.country_eu_member) {\n showGdpr()\n }\n }\n });',exampleAjax1:'$.getJSON("',exampleAjax2:'/detect?include=country_eu_member,ip", function(result){\n if(result.country_eu_member){\n $("div").append(result.ip);\n }\n});',examplePhp1:"$ch = curl_init('",examplePhp2:"/detect?include=country_eu_member');\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n$result = curl_exec($ch);\ncurl_close($ch);\n$response = json_decode($result, true);\necho $response['country_eu_member'];",exampleCurl1:"curl ",exampleCurl2:"/detect?include=country_eu_member",exampleSelected:'{\n country_emoji: "\ud83c\uddfa\ud83c\uddf8",\n country_eu_member: true,\n}',exampleResponse:'{\n connection: {\n ip: "161.185.160.93",\n ip_version: "4"\n },\n currency: {\n code: [\n "USD",\n "USN",\n "USS"\n ]\n },\n location: {\n capital: "Washington D.C.",\n city: "New York",\n continent: {\n code: "NA",\n name: "North America"\n },\n country: {\n alpha_2: "US",\n alpha_3: "USA",\n dialing_code: [\n "1"\n ],\n emoji: "\ud83c\uddfa\ud83c\uddf8",\n eu_member: false,\n name: "United States",\n subdivision: "New York",\n subdivision_id: "NY",\n zip_code: "10003"\n },\n latitude: 40.7359,\n longitude: -73.9904\n },\n security: {\n is_proxy: false,\n is_tor: false,\n proxy_type: null\n },\n success: true,\n time: {\n zone: "America/New_York"\n }\n}'},t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){document.title="Documentation";var e=this.state.baseWebUrl+"/user/apiKey";this.fetch(e)}},{key:"fetch",value:function(e){function a(a){return e.apply(this,arguments)}return a.toString=function(){return e.toString()},a}((function(e){var a=this;this.setState({loading:!0}),fetch(e).then((function(e){return e.json()})).then((function(e){e.success&&(console.log("apiKey: "+e.apiKey),a.setState({apiKey:e.apiKey}))})).catch((function(e){console.error(e)})).finally((function(){return a.setState({loading:!1})}))}))},{key:"render",value:function(){return s.a.createElement(We,null)}}]),a}(n.Component),Fe=Object(p.g)(Be),ze=function(e){function a(e){var t;return Object(c.a)(this,a),t=Object(i.a)(this,Object(o.a)(a).call(this,e)),g(),t.state={loading:!0,status:"loading",message:"Checking status...",baseWebUrl:"https://ip2loc.com"},t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){var e=this;document.title="Status";var a=E.a.parse(this.props.location.search),t=this.state.baseWebUrl+"/auth/email/signin";fetch(t,{method:"post",headers:{Accept:"application/json"},body:JSON.stringify({token:a.token})}).then((function(e){return e.json()})).then((function(a){if(a.success)e.setState({loading:!1,status:"success",message:"Sign in successful!"});else switch(a.error){case 208:e.setState({loading:!1,status:"warning",message:"Already activated"});break;case 498:e.setState({loading:!1,status:"error",message:"Token not valid, please request a new one."});break;default:e.setState({loading:!1,status:"error",message:"Unknown Error: "+a.error})}})).catch((function(a){console.error(a),e.setState({loading:!1,status:"error",message:"Could not connect to the server."})}))}},{key:"getIcon",value:function(){switch(this.state.status){case"loading":return s.a.createElement(b.a,{icon:"spinner",spin:!0});case"success":return s.a.createElement(b.a,{icon:"check-circle"});case"warning":return s.a.createElement(b.a,{icon:"exclamation-circle"});case"error":return s.a.createElement(b.a,{icon:"times-circle"});default:return s.a.createElement(b.a,{icon:"spinner",spin:!0})}}},{key:"getIconClass",value:function(){switch(this.state.status){case"loading":return"activation-icon loading";case"success":return"activation-icon success";case"warning":return"activation-icon warning";case"error":return"activation-icon error";default:return"activation-icon"}}},{key:"render",value:function(){return s.a.createElement("div",{className:"d-flex flex-column min-vh-100"},s.a.createElement(q,null),s.a.createElement("main",{className:"flex-fill"},s.a.createElement("div",{className:"success-page"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"success-card"},s.a.createElement("div",{className:this.getIconClass()},this.getIcon()),s.a.createElement("h1",null,"Status"),s.a.createElement("p",{className:"success-message"},this.state.message))))),s.a.createElement(Oe,null))}}]),a}(n.Component),Ke=t(94),qe=ke(function(e){function a(e){var t;return Object(c.a)(this,a),t=Object(i.a)(this,Object(o.a)(a).call(this,e)),g(),t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){document.title="System Status - ip2loc",this.props.publicStatus&&"function"===typeof this.props.publicStatus.requestUptimeHistory&&this.props.publicStatus.requestUptimeHistory(!0)}},{key:"componentWillUnmount",value:function(){this.props.publicStatus&&"function"===typeof this.props.publicStatus.requestUptimeHistory&&this.props.publicStatus.requestUptimeHistory(!1)}},{key:"createFallbackUptimeHistory",value:function(){for(var e=new Date,a=[],t=89;t>=0;t--){var n=new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()));n.setUTCDate(n.getUTCDate()-t),a.push({date:n.toISOString().slice(0,10),status:"operational"})}var s={period_days:90,uptime_percentage:99.99,days:a};return{api:s,website:s,dashboard:s}}},{key:"mapStatusToServices",value:function(e){var a={api:{name:"API Service",description:"IP Geolocation API endpoints"},website:{name:"Website",description:"Public website"},dashboard:{name:"Dashboard",description:"User dashboard & authentication"}};return Object.entries(e).map((function(e){var t=Object(Ke.a)(e,2),n=t[0],s=t[1],l=a[n];return{key:n,name:l?l.name:n,status:s,description:l?l.description:""}}))}},{key:"getUptimeClass",value:function(e){switch(e){case"operational":return"operational";case"degraded":return"degraded";case"down":return"major";default:return"operational"}}},{key:"formatUptimePercentage",value:function(e){var a="number"===typeof e?e:Number(e);return Number.isFinite(a)?"".concat(a.toFixed(2),"%"):"\u2014"}},{key:"getStatusBadge",value:function(e){switch(e){case"operational":return s.a.createElement("span",{className:"status-item-badge operational"},"Operational");case"degraded":return s.a.createElement("span",{className:"status-item-badge degraded"},"Degraded Performance");case"down":return s.a.createElement("span",{className:"status-item-badge major"},"Major Outage");default:return s.a.createElement("span",{className:"status-item-badge operational"},"Operational")}}},{key:"getAllOperational",value:function(e,a){return e?"operational"===e:(a||[]).every((function(e){return"operational"===e.status}))}},{key:"render",value:function(){var e=this,a=this.props.publicStatus||{},t=a.overall||"operational",n=["operational","degraded","down"].includes(t)?t:"operational",l=a.status||{api:"operational",website:"operational",dashboard:"operational"},r=this.mapStatusToServices(l),c=a.uptimeHistory||this.createFallbackUptimeHistory(),i=a.updatedAt?new Date(a.updatedAt).toLocaleString("de-DE"):(new Date).toLocaleString("de-DE"),o=!0===a.loading&&!a.status,m=this.getAllOperational(n,r);return s.a.createElement("div",{className:"d-flex flex-column min-vh-100"},s.a.createElement(q,null),s.a.createElement("main",{className:"flex-fill nav-padding"},s.a.createElement("div",{className:"status-hero ".concat(m?"all-operational":"has-issues")},s.a.createElement(y.a,null,s.a.createElement("div",{className:"status-hero-content"},s.a.createElement("div",{className:"status-badge ".concat(m?"operational":"issues")},m?s.a.createElement(s.a.Fragment,null,s.a.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"currentColor"},s.a.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z",clipRule:"evenodd"})),"All Systems Operational"):s.a.createElement(s.a.Fragment,null,s.a.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"currentColor"},s.a.createElement("path",{fillRule:"evenodd",d:"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z",clipRule:"evenodd"})),"Some Systems Have Issues")),s.a.createElement("h1",{className:"status-title"},"System Status"),s.a.createElement("p",{className:"status-subtitle"},"Current status of all ","ip2loc"," services")))),s.a.createElement("div",{className:"status-content"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"status-card"},s.a.createElement("div",{className:"status-card-header"},s.a.createElement("h2",null,"Services"),i&&s.a.createElement("span",{className:"status-updated"},"Last updated: ",i)),o?s.a.createElement("div",{className:"status-loading"},s.a.createElement("div",{className:"status-spinner"}),s.a.createElement("span",null,"Checking status...")):s.a.createElement("div",{className:"status-list"},r.map((function(a,t){return s.a.createElement("div",{key:t,className:"status-item"},s.a.createElement("div",{className:"status-item-info"},s.a.createElement("h3",{className:"status-item-name"},a.name),s.a.createElement("p",{className:"status-item-description"},a.description)),e.getStatusBadge(a.status))})))),s.a.createElement("div",{className:"status-card"},s.a.createElement("div",{className:"status-card-header"},s.a.createElement("h2",null,"Uptime History")),s.a.createElement("div",{className:"uptime-bars"},(r||[]).map((function(a){var t=c&&a.key?c[a.key]:null;return t&&Array.isArray(t.days)?s.a.createElement("div",{key:a.key,className:"uptime-row"},s.a.createElement("span",{className:"uptime-label"},a.name),s.a.createElement("div",{className:"uptime-bar-container"},t.days.map((function(a,t){return s.a.createElement("div",{key:t,className:"uptime-day ".concat(e.getUptimeClass(a.status)),title:"".concat(a.date,": ").concat(a.status)})}))),s.a.createElement("span",{className:"uptime-percentage"},e.formatUptimePercentage(t.uptime_percentage))):null}))),s.a.createElement("p",{className:"uptime-legend"},s.a.createElement("span",{className:"legend-item"},s.a.createElement("span",{className:"legend-color operational"})," Operational"),s.a.createElement("span",{className:"legend-item"},s.a.createElement("span",{className:"legend-color degraded"})," Degraded"),s.a.createElement("span",{className:"legend-item"},s.a.createElement("span",{className:"legend-color major"})," Outage"))),s.a.createElement("div",{className:"status-subscribe"},s.a.createElement("h3",null,"Stay Updated"),s.a.createElement("p",null,"Bookmark this page for real-time status updates."))))),s.a.createElement(Oe,null))}}]),a}(n.Component)),Ye=t(73),Ve=t.n(Ye),Je=function(e){function a(e){var t;return Object(c.a)(this,a),t=Object(i.a)(this,Object(o.a)(a).call(this,e)),g(),t.state={loading:!1,success:!1,error:null,name:"",email:"",company:"",employees:"",monthly_requests:"",message:"",turnstileToken:null,baseWebUrl:"https://ip2loc.com"},t.handleSubmit=t.handleSubmit.bind(Object(f.a)(t)),t.handleInputChange=t.handleInputChange.bind(Object(f.a)(t)),t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){document.title="Enterprise Solutions - ip2loc"}},{key:"handleInputChange",value:function(e){var a=e.target,t=a.name,n=a.value;this.setState(Object(_e.a)({},t,n))}},{key:"handleSubmit",value:function(e){var a=this;if(e.preventDefault(),this.state.turnstileToken){this.setState({loading:!0,error:null});var t={name:this.state.name,email:this.state.email,company:this.state.company,employees:this.state.employees,monthly_requests:this.state.monthly_requests,message:this.state.message,type:"enterprise",turnstileToken:this.state.turnstileToken};fetch(this.state.baseWebUrl+"/contact",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}).then((function(e){return e.json()})).then((function(e){e.success?a.setState({success:!0}):a.setState({error:e.error||"An error occurred. Please try again."})})).catch((function(e){console.error(e),a.setState({error:"An error occurred. Please try again."})})).finally((function(){return a.setState({loading:!1})}))}else this.setState({error:"Please complete the security check"})}},{key:"render",value:function(){var e=this;return s.a.createElement("div",{className:"d-flex flex-column min-vh-100"},s.a.createElement(q,null),s.a.createElement("main",{className:"flex-fill nav-padding"},s.a.createElement("div",{className:"enterprise-hero"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"enterprise-hero-content"},s.a.createElement("span",{className:"enterprise-badge"},"Enterprise"),s.a.createElement("h1",{className:"enterprise-title"},"Tailored Solutions for",s.a.createElement("br",null),s.a.createElement("span",{className:"gradient-text"},"Enterprise Scale")),s.a.createElement("p",{className:"enterprise-subtitle"},"Custom pricing, dedicated support, and SLA guarantees for organizations processing millions of requests.")))),s.a.createElement("div",{className:"enterprise-content"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"enterprise-grid"},s.a.createElement("div",{className:"enterprise-benefits"},s.a.createElement("h2",null,"Enterprise Benefits"),s.a.createElement("div",{className:"benefit-card"},s.a.createElement("div",{className:"benefit-icon"},s.a.createElement("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2"},s.a.createElement("path",{d:"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"}))),s.a.createElement("div",{className:"benefit-text"},s.a.createElement("h3",null,"99.99% SLA Guarantee"),s.a.createElement("p",null,"Enterprise-grade reliability with contractual uptime guarantees and priority incident response."))),s.a.createElement("div",{className:"benefit-card"},s.a.createElement("div",{className:"benefit-icon"},s.a.createElement("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2"},s.a.createElement("path",{d:"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"}),s.a.createElement("circle",{cx:"9",cy:"7",r:"4"}),s.a.createElement("path",{d:"M23 21v-2a4 4 0 0 0-3-3.87"}),s.a.createElement("path",{d:"M16 3.13a4 4 0 0 1 0 7.75"}))),s.a.createElement("div",{className:"benefit-text"},s.a.createElement("h3",null,"Dedicated Support"),s.a.createElement("p",null,"Direct access to our engineering team with priority support channels and dedicated account manager."))),s.a.createElement("div",{className:"benefit-card"},s.a.createElement("div",{className:"benefit-icon"},s.a.createElement("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2"},s.a.createElement("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",ry:"2"}),s.a.createElement("line",{x1:"3",y1:"9",x2:"21",y2:"9"}),s.a.createElement("line",{x1:"9",y1:"21",x2:"9",y2:"9"}))),s.a.createElement("div",{className:"benefit-text"},s.a.createElement("h3",null,"Custom Volume Pricing"),s.a.createElement("p",null,"Flexible pricing models designed for high-volume usage with significant cost savings at scale."))),s.a.createElement("div",{className:"benefit-card"},s.a.createElement("div",{className:"benefit-icon"},s.a.createElement("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2"},s.a.createElement("path",{d:"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"}),s.a.createElement("polyline",{points:"3.27 6.96 12 12.01 20.73 6.96"}),s.a.createElement("line",{x1:"12",y1:"22.08",x2:"12",y2:"12"}))),s.a.createElement("div",{className:"benefit-text"},s.a.createElement("h3",null,"Global Infrastructure"),s.a.createElement("p",null,"Multi-region deployment with automatic failover ensures lowest latency worldwide."))),s.a.createElement("div",{className:"enterprise-stats"},s.a.createElement("div",{className:"stat"},s.a.createElement("span",{className:"stat-value"},"<50ms"),s.a.createElement("span",{className:"stat-label"},"Avg Response")),s.a.createElement("div",{className:"stat"},s.a.createElement("span",{className:"stat-value"},"99.99%"),s.a.createElement("span",{className:"stat-label"},"Uptime")),s.a.createElement("div",{className:"stat"},s.a.createElement("span",{className:"stat-value"},"Global"),s.a.createElement("span",{className:"stat-label"},"Coverage")))),s.a.createElement("div",{className:"enterprise-form-container"},this.state.success?s.a.createElement("div",{className:"enterprise-success"},s.a.createElement("div",{className:"success-icon"},s.a.createElement("svg",{width:"48",height:"48",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2"},s.a.createElement("path",{d:"M22 11.08V12a10 10 0 1 1-5.93-9.14"}),s.a.createElement("polyline",{points:"22 4 12 14.01 9 11.01"}))),s.a.createElement("h3",null,"Thank You!"),s.a.createElement("p",null,"Our enterprise team will contact you within 24 hours to discuss your requirements.")):s.a.createElement("form",{className:"enterprise-form",onSubmit:this.handleSubmit},s.a.createElement("h2",null,"Contact Our Sales Team"),s.a.createElement("p",{className:"form-subtitle"},"Tell us about your needs and we'll create a custom solution."),this.state.error&&s.a.createElement("div",{className:"form-error"},this.state.error),s.a.createElement("div",{className:"form-row"},s.a.createElement("div",{className:"form-group-enterprise"},s.a.createElement("label",{htmlFor:"name"},"Full Name *"),s.a.createElement("input",{type:"text",id:"name",name:"name",value:this.state.name,onChange:this.handleInputChange,required:!0,placeholder:"John Smith"})),s.a.createElement("div",{className:"form-group-enterprise"},s.a.createElement("label",{htmlFor:"email"},"Work Email *"),s.a.createElement("input",{type:"email",id:"email",name:"email",value:this.state.email,onChange:this.handleInputChange,required:!0,placeholder:"john@company.com"}))),s.a.createElement("div",{className:"form-row"},s.a.createElement("div",{className:"form-group-enterprise"},s.a.createElement("label",{htmlFor:"company"},"Company Name *"),s.a.createElement("input",{type:"text",id:"company",name:"company",value:this.state.company,onChange:this.handleInputChange,required:!0,placeholder:"Acme Corporation"})),s.a.createElement("div",{className:"form-group-enterprise"},s.a.createElement("label",{htmlFor:"employees"},"Company Size"),s.a.createElement("select",{id:"employees",name:"employees",value:this.state.employees,onChange:this.handleInputChange},s.a.createElement("option",{value:""},"Select..."),s.a.createElement("option",{value:"50-200"},"50-200 employees"),s.a.createElement("option",{value:"200-500"},"200-500 employees"),s.a.createElement("option",{value:"500-1000"},"500-1,000 employees"),s.a.createElement("option",{value:"1000-5000"},"1,000-5,000 employees"),s.a.createElement("option",{value:"5000+"},"5,000+ employees")))),s.a.createElement("div",{className:"form-group-enterprise"},s.a.createElement("label",{htmlFor:"monthly_requests"},"Estimated Monthly API Requests"),s.a.createElement("select",{id:"monthly_requests",name:"monthly_requests",value:this.state.monthly_requests,onChange:this.handleInputChange},s.a.createElement("option",{value:""},"Select..."),s.a.createElement("option",{value:"3-10M"},"3-10 Million"),s.a.createElement("option",{value:"10-50M"},"10-50 Million"),s.a.createElement("option",{value:"50-100M"},"50-100 Million"),s.a.createElement("option",{value:"100M+"},"100+ Million"))),s.a.createElement("div",{className:"form-group-enterprise"},s.a.createElement("label",{htmlFor:"message"},"How can we help? *"),s.a.createElement("textarea",{id:"message",name:"message",value:this.state.message,onChange:this.handleInputChange,required:!0,rows:"4",placeholder:"Tell us about your use case, technical requirements, or any questions..."})),s.a.createElement("div",{className:"turnstile-container"},s.a.createElement(Ve.a,{sitekey:Object({NODE_ENV:"production",PUBLIC_URL:".",REACT_APP_FLAVOR:"geocoder",REACT_APP_TITLE:"ip2loc",REACT_APP_HOME_TITLE:"IP 2 Location API, detect Language, Currency and more from IP Address",REACT_APP_HOME_TITLE_2_LINE:"Ready to Save Time and Money?",REACT_APP_HOME_TITLE_3_LINE:"",REACT_APP_HOME_H1:"[ACCENT]IP 2 Location API[/ACCENT], detect Language, Currency and more from IP Address",REACT_APP_HOME_H2:"",REACT_APP_HOME_HERO_SHOT_H2:"[ACCENT]Benefit[/ACCENT] from ip2loc's [ACCENT]reliable[/ACCENT] and [ACCENT]developer-friendly[/ACCENT] tools.",REACT_APP_HOME_HERO_WHY_0:"The Power of Geolocation: Use it for Targeted Advertising, Fraud Prevention, Website Localization, Content Personalization, Geotargeting and much more.",REACT_APP_HOME_HERO_WHY_1:"Targeted Advertising: Tailoring ads based on geographic location of website visitors.",REACT_APP_HOME_HERO_WHY_2:"Fraud Prevention: Detecting fraudulent activities by comparing IP location with user's billing or shipping address.",REACT_APP_HOME_HERO_WHY_3:"Website Localization: Automatically presenting website in appropriate language and currency based on visitor's location.",REACT_APP_HOME_HERO_WHY_4:"Content Personalization: Personalizing website content based on visitor's location.",REACT_APP_HOME_HERO_WHY_5:"Targeting regions or countries with marketing campaigns.",REACT_APP_HOME_TITLE_FREE:"Free contingent: 15.000 Requests per month!",REACT_APP_HOME_TEST_IT:"Geolocation is a powerful tool that businesses can use to target their advertising, prevent fraud, localize their website, personalize content, and target specific locations for their products or services. IP 2 Location API is a popular geolocation service that can detect a user's location, language, currency, and other details from their IP address.",REACT_APP_KEYWORDS:"ip api, ip to location api, geoip api, ip to country api",REACT_APP_DESCRIPTION:"IP to location REST API using JSON, XML and Yaml supporting PHP, JavaScript, Node, Java, and more.",REACT_APP_HOME_CALL2ACTION:"Get your [LIGHT]API Key[/LIGHT] now",REACT_APP_DEV_BASE_WEB_URL:"http://localhost:8080",REACT_APP_DEV_BASE_API_URL:"http://0.0.0.0:8080",REACT_APP_BASE_WEB_URL:"https://ip2loc.com",REACT_APP_BASE_API_URL:"https://api.ip2loc.com",REACT_APP_COLOR:"#355691",REACT_APP_BACKGROUND_COLOR:"#00a8ff",REACT_APP_BACKGROUND_IMAGE:"/img/world.svg"}).REACT_APP_TURNSTILE_SITE_KEY||"0x4AAAAAAAgTKs8rn4hbKDNe",onVerify:function(a){return e.setState({turnstileToken:a})}})),s.a.createElement("button",{type:"submit",className:"btn-enterprise-submit",disabled:this.state.loading},this.state.loading?s.a.createElement(s.a.Fragment,null,s.a.createElement("span",{className:"spinner"}),"Sending..."):s.a.createElement(s.a.Fragment,null,"Contact Sales",s.a.createElement("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2"},s.a.createElement("line",{x1:"5",y1:"12",x2:"19",y2:"12"}),s.a.createElement("polyline",{points:"12 5 19 12 12 19"})))),s.a.createElement("p",{className:"form-privacy"},"By submitting, you agree to our ",s.a.createElement("a",{href:"/dataprotection"},"Privacy Policy"),"."))))))),s.a.createElement(Oe,null))}}]),a}(n.Component);function Ze(e,a){return console.log("getTargetSite:",e.type?e.type:"empty",a||"empty"),a?"/changeplan?plan="+e.key:e.amount<=0?"/changeplan?plan="+e.key:"v2"===e.type?"checkout?plan="+e.key:"/changeplan?plan="+e.key}var Qe=function(e){function a(e){var t;Object(c.a)(this,a),t=Object(i.a)(this,Object(o.a)(a).call(this,e)),g();var n=e.cookies;return t.state={baseWebUrl:"https://ip2loc.com",plans:[],current_plan:"",session:void 0!==n.get("session")},t.handleEnterpriseClick=t.handleEnterpriseClick.bind(Object(f.a)(t)),t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){this.fetchPlans()}},{key:"fetchPlans",value:function(){var e=this;console.log("--fetch--"+this.state.baseWebUrl+"/plans"),fetch(this.state.baseWebUrl+"/plans",{method:"POST"}).then((function(e){return e.json()})).then((function(a){a.success?(e.setState({plans:a.plans}),e.setState({current_plan:a.current_plan})):console.log("--error--")}))}}]),Object(m.a)(a,[{key:"handleEnterpriseClick",value:function(){this.props.history.push("/enterprise")}},{key:"getFeatures",value:function(e,a){var t=["All data points included","HTTPS encryption","JSON & XML response"];return[].concat(t,0===a?["Email support"]:1===a?["Priority support"]:2===a?["Priority support"]:["Dedicated support"])}},{key:"getButtonText",value:function(e){return"0"===e.amount?"Start Free":(e.trial,"Get Started")}},{key:"render",value:function(){var e=this;return s.a.createElement("div",{className:"d-flex flex-column min-vh-100"},s.a.createElement(q,{loggedInOnly:this.props.loggedInOnly}),s.a.createElement("main",{className:"flex-fill nav-padding"},s.a.createElement("div",{className:"pricing-section-v2"},s.a.createElement("div",{className:"container"},s.a.createElement("div",{className:"pricing-header-v2"},this.props.loggedInOnly&&s.a.createElement("h1",null,"Select Plan"),s.a.createElement("span",{className:"pricing-label"},"Pricing"),s.a.createElement("h2",{className:"pricing-title-v2"},"Simple, Transparent Pricing"),s.a.createElement("p",{className:"pricing-subtitle-v2"},"Start free and scale as you grow. No hidden fees.")),s.a.createElement("div",{className:"pricing-grid-v2"},this.state.plans.map((function(a,t){return s.a.createElement("div",{className:"pricing-card-v2 ".concat(2===t?"popular":""),key:a.key||t},2===t&&s.a.createElement("div",{className:"popular-badge"},"Most Popular"),s.a.createElement("div",{className:"plan-name"},a.title),s.a.createElement("div",{className:"plan-price"},s.a.createElement("span",{className:"price-currency"},a.symbol),s.a.createElement("span",{className:"price-amount"},e.props.loggedInOnly||"0"===a.trial?a.amount:0),s.a.createElement("span",{className:"price-period"},"/mo")),s.a.createElement("div",{className:"plan-then-price"},e.props.loggedInOnly||"0"===a.trial||"0"===a.amount?s.a.createElement(s.a.Fragment,null,"\xa0"):s.a.createElement(s.a.Fragment,null,"then ",a.symbol,a.amount,"/mo")),s.a.createElement("div",{className:"plan-requests"},a.description),s.a.createElement("ul",{className:"plan-features"},e.getFeatures(a,t).map((function(e,a){return s.a.createElement("li",{key:a},s.a.createElement(b.a,{icon:"check",className:"feature-check"}),s.a.createElement("span",null,e))}))),s.a.createElement("a",{href:Ze(a,e.props.current_plan),id:"plan-"+a.key,className:"plan-button ".concat(2===t?"primary":"secondary")},e.getButtonText(a)))})),s.a.createElement("div",{className:"pricing-card-v2 enterprise"},s.a.createElement("div",{className:"enterprise-badge-card"},"Enterprise"),s.a.createElement("div",{className:"plan-name"},"Enterprise"),s.a.createElement("div",{className:"plan-price enterprise-price"},s.a.createElement("span",{className:"price-custom"},"Custom")),s.a.createElement("div",{className:"plan-then-price"},"\xa0"),s.a.createElement("div",{className:"plan-requests"},"5M+ requests/mo"),s.a.createElement("ul",{className:"plan-features"},s.a.createElement("li",null,s.a.createElement(b.a,{icon:"check",className:"feature-check"}),s.a.createElement("span",null,"All data points included")),s.a.createElement("li",null,s.a.createElement(b.a,{icon:"check",className:"feature-check"}),s.a.createElement("span",null,"99.99% SLA guarantee")),s.a.createElement("li",null,s.a.createElement(b.a,{icon:"check",className:"feature-check"}),s.a.createElement("span",null,"Dedicated account manager")),s.a.createElement("li",null,s.a.createElement(b.a,{icon:"check",className:"feature-check"}),s.a.createElement("span",null,"Custom volume pricing")),s.a.createElement("li",null,s.a.createElement(b.a,{icon:"check",className:"feature-check"}),s.a.createElement("span",null,"Priority support 24/7"))),s.a.createElement("button",{onClick:this.handleEnterpriseClick,className:"plan-button enterprise-button"},"Contact us")))))),s.a.createElement(Oe,null))}}]),a}(n.Component),$e=Object(p.g)(Object(z.b)(Qe)),Xe=function(e){function a(){return Object(c.a)(this,a),Object(i.a)(this,Object(o.a)(a).apply(this,arguments))}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){document.title="Pricing"}},{key:"render",value:function(){return s.a.createElement($e,{loggedInOnly:!1})}}]),a}(n.Component),ea=function(e){function a(e){var t;return Object(c.a)(this,a),t=Object(i.a)(this,Object(o.a)(a).call(this,e)),g(),t.state={url:"https://ip2loc.com"},t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){document.title="Terms and Conditions - ip2loc"}},{key:"render",value:function(){return s.a.createElement("div",{className:"d-flex flex-column min-vh-100"},s.a.createElement(q,null),s.a.createElement("main",{className:"flex-fill nav-padding"},s.a.createElement("div",{className:"page-hero"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"page-hero-content"},s.a.createElement("span",{className:"page-badge"},"Legal"),s.a.createElement("h1",{className:"page-title"},"Terms and Conditions"),s.a.createElement("p",{className:"page-subtitle"},"Please read these terms carefully before using our services.")))),s.a.createElement("div",{className:"page-content"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"page-content-card"},s.a.createElement("p",null,"These terms and conditions outline the rules and regulations for the use of ","ip2loc","'s Website and API Services."),s.a.createElement("p",null,"By accessing this website we assume you accept these terms and conditions in full. Do not continue to use ","ip2loc","'s website if you do not accept all of the terms and conditions stated on this page."),s.a.createElement("h2",null,"Definitions"),s.a.createElement("p",null,'The following terminology applies to these Terms and Conditions, Privacy Statement and Disclaimer Notice and any or all Agreements: "Client", "You" and "Your" refers to you, the person accessing this website and accepting the Company\'s terms and conditions. "The Company", "Ourselves", "We", "Our" and "Us", refers to our Company. "Party", "Parties", or "Us", refers to both the Client and ourselves.'),s.a.createElement("h2",null,"Cookies"),s.a.createElement("p",null,"We employ the use of cookies. By using ","ip2loc","'s website you consent to the use of cookies in accordance with ","ip2loc","'s privacy policy."),s.a.createElement("p",null,"Most modern interactive websites use cookies to retrieve user details for each visit. Cookies are used in some areas of our site to enable the functionality of this area and ease of use for visitors."),s.a.createElement("h2",null,"License"),s.a.createElement("p",null,"Unless otherwise stated, ","ip2loc"," and/or its licensors own the intellectual property rights for all material on ","ip2loc",". All intellectual property rights are reserved."),s.a.createElement("p",null,"You must not:"),s.a.createElement("ul",null,s.a.createElement("li",null,"Republish material from ","ip2loc"),s.a.createElement("li",null,"Sell, rent or sub-license material from ","ip2loc"),s.a.createElement("li",null,"Reproduce, duplicate or copy material from ","ip2loc"),s.a.createElement("li",null,"Redistribute content from ","ip2loc"," (unless content is specifically made for redistribution)")),s.a.createElement("h2",null,"API Usage"),s.a.createElement("p",null,"Use of our API is subject to rate limits and fair use policies. Excessive use or abuse of the API may result in temporary or permanent suspension of access."),s.a.createElement("ul",null,s.a.createElement("li",null,"API keys are for your use only and should not be shared"),s.a.createElement("li",null,"You are responsible for all activity under your API key"),s.a.createElement("li",null,"We reserve the right to modify API functionality with reasonable notice")),s.a.createElement("h2",null,"Hyperlinking to our Content"),s.a.createElement("p",null,"The following organizations may link to our website without prior written approval:"),s.a.createElement("ul",null,s.a.createElement("li",null,"Government agencies"),s.a.createElement("li",null,"Search engines"),s.a.createElement("li",null,"News organizations"),s.a.createElement("li",null,"Online directory distributors")),s.a.createElement("h2",null,"Reservation of Rights"),s.a.createElement("p",null,"We reserve the right at any time and in its sole discretion to request that you remove all links or any particular link to our website. You agree to immediately remove all links to our website upon such request."),s.a.createElement("h2",null,"Content Liability"),s.a.createElement("p",null,"We shall have no responsibility or liability for any content appearing on your website. You agree to indemnify and defend us against all claims arising out of or based upon your website."),s.a.createElement("h2",null,"Disclaimer"),s.a.createElement("p",null,"To the maximum extent permitted by applicable law, we exclude all representations, warranties and conditions relating to our website and the use of this website."),s.a.createElement("p",null,"Nothing in this disclaimer will:"),s.a.createElement("ul",null,s.a.createElement("li",null,"Limit or exclude our or your liability for death or personal injury resulting from negligence"),s.a.createElement("li",null,"Limit or exclude our or your liability for fraud or fraudulent misrepresentation"),s.a.createElement("li",null,"Limit any of our or your liabilities in any way that is not permitted under applicable law")),s.a.createElement("p",null,"To the extent that the website and the information and services on the website are provided free of charge, we will not be liable for any loss or damage of any nature."))))),s.a.createElement(Oe,null))}}]),a}(n.Component),aa=function(e){function a(e){var t;return Object(c.a)(this,a),t=Object(i.a)(this,Object(o.a)(a).call(this,e)),g(),t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){document.title="FAQ - ip2loc"}}]),Object(m.a)(a,[{key:"render",value:function(){var e=[{q:"What happens if my volume is exceeded?",a:"An email will be sent to alert you when you reach 75% of your limit and when you reach 100%. You can upgrade your plan at any time to get more requests."},{q:"How many API requests can ip2loc handle?",a:"We scale based on demand. If you expect higher volume, contact us and we\u2019ll help you validate fit and choose an appropriate plan."},{q:"Can I cancel anytime?",a:"Yes. You can upgrade, downgrade, or cancel your subscription at any time. There are no long-term contracts or cancellation fees."},{q:"What can I do if I require a larger volume?",a:"Contact our support team and we will assist you in finding a suitable enterprise plan tailored to your needs."},{q:"Where can I see uptime and recent history?",a:s.a.createElement(s.a.Fragment,null,"We publish live uptime and recent history on our ",s.a.createElement("a",{href:"/system-status"},"System Status")," page.")},{q:"How often is your database updated?",a:s.a.createElement(s.a.Fragment,null,"Update frequency depends on the data field and its upstream source: some inputs can refresh multiple times per day, others daily, and some change less frequently. For performance, certain lookups may be cached with a TTL, so changes may take some time to propagate. See also ",s.a.createElement("a",{href:"/company"},"Company"),".")},{q:"Where does your data come from?",a:s.a.createElement(s.a.Fragment,null,"We combine multiple sources (depending on field), including public registries and other upstream datasets, and reconcile them to improve coverage and consistency. See ",s.a.createElement("a",{href:"/company"},"Company")," for a high-level overview.")}];return s.a.createElement("div",{className:"d-flex flex-column min-vh-100"},s.a.createElement(q,null),s.a.createElement("main",{className:"flex-fill nav-padding"},s.a.createElement("div",{className:"page-hero"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"page-hero-content"},s.a.createElement("span",{className:"page-badge"},"Support"),s.a.createElement("h1",{className:"page-title"},"Frequently Asked Questions"),s.a.createElement("p",{className:"page-subtitle"},"Find answers to common questions about our API, billing, and technical implementation.")))),s.a.createElement("div",{className:"page-content"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"faq-list"},e.map((function(e,a){return s.a.createElement("div",{className:"faq-item",key:"general-".concat(a)},s.a.createElement("div",{className:"faq-question"},s.a.createElement("div",{className:"faq-icon"},"Q"),s.a.createElement("h3",null,e.q)),s.a.createElement("div",{className:"faq-answer"},s.a.createElement("p",null,e.a)))})),[{q:"How does IP geolocation technology work?",a:"IP geolocation works by mapping IP addresses to geographic locations using a combination of data sources including regional internet registries, ISP data, and user-contributed information."},{q:"How accurate is the geolocation data?",a:"Accuracy varies by country, region, and IP type (e.g. mobile, VPNs, proxies). Country-level tends to be more reliable than city-level. For critical workflows, we recommend testing with your traffic."},{q:"How can businesses use geolocation for targeted advertising?",a:"Businesses can use geolocation to target advertising to specific geographic regions, personalize content based on location, and deliver region-specific offers and promotions."},{q:"What is geotargeting?",a:"Geotargeting involves delivering different content or advertisements to users based on their geographic location, enabling personalized experiences and localized marketing campaigns."},{q:"How can geolocation be used for fraud prevention?",a:"By comparing the location of a user's IP address with their billing address or usual login locations, businesses can detect suspicious activity and prevent fraudulent transactions."},{q:"What data points are available in the API response?",a:"Depending on plan and availability, responses can include country, city/region, latitude/longitude, timezone, currency, and network context (e.g. ASN/ISP). Some security-related signals may be available depending on the dataset."}].map((function(e,a){return s.a.createElement("div",{className:"faq-item",key:"geocoder-".concat(a)},s.a.createElement("div",{className:"faq-question"},s.a.createElement("div",{className:"faq-icon"},"Q"),s.a.createElement("h3",null,e.q)),s.a.createElement("div",{className:"faq-answer"},s.a.createElement("p",null,e.a)))}))),s.a.createElement("div",{className:"docs-cta-box",style:{marginTop:"48px"}},s.a.createElement("h3",null,"Still have questions?"),s.a.createElement("p",null,"Our support team is here to help you with any questions."),s.a.createElement("a",{href:"/contact",className:"docs-cta-btn"},"Contact Support \u2192"))))),s.a.createElement(Oe,null))}}]),a}(n.Component),ta=t(82),na=t(74),sa=t.n(na),la=t(124),ra=function(e){function a(e){var t;return Object(c.a)(this,a),(t=Object(i.a)(this,Object(o.a)(a).call(this,e))).state={baseApiUrl:"https://ip2loc.com",errorMessage:"",loading:!1,redirect:!1},t.submit=t.submit.bind(Object(f.a)(t)),t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"submit",value:function(){var e=Object(la.a)(sa.a.mark((function e(a){var t,n,s=this;return sa.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.setState({errorMessage:""}),e.next=3,this.props.stripe.createToken({name:"Name"});case 3:if(t=e.sent,null==(n=t.token)){e.next=9;break}return this.setState({loading:!0}),e.next=9,fetch(this.state.baseApiUrl+"/user/charge",{method:"POST",headers:{"Content-Type":"text/plain"},body:JSON.stringify({token:n.id,paymentId:this.props.paymentId})}).then((function(e){return e.json()})).then((function(e){e.success?(console.log("success: "+e.success),console.log("redirect_to_url: "+e.redirect_to_url),e.redirect_to_url?(s.setState({redirect:!0}),window.location.href=e.redirect_to_url):e.plan_changed?s.props.history.push("/planchangedsuccess?plan="+e.planKey):s.props.history.push("/registrationsuccess?plan="+e.planKey)):s.setState({errorMessage:e.detail})})).catch((function(e){return console.error(e)})).finally((function(){s.setState({loading:s.state.redirect})}));case 9:case"end":return e.stop()}}),e,this)})));return function(a){return e.apply(this,arguments)}}()},{key:"render",value:function(){return s.a.createElement("div",{className:"checkout"},s.a.createElement(ta.CardElement,{id:"cardElement",style:{base:{fontSize:"18px"}},className:te()("cardCss.StripeElement")}),this.state.errorMessage?s.a.createElement(H.a,{color:"danger"},this.state.errorMessage):"",s.a.createElement(v.a,{color:"primary",block:!0,className:"float-lg-left float-left",disabled:this.state.loading,id:"buttonSubmit",onClick:this.submit},s.a.createElement("span",null,this.state.loading?s.a.createElement(b.a,{icon:"spinner",spin:!0}):"Continue \xbb")))}}]),a}(n.Component),ca=Object(p.g)(Object(ta.injectStripe)(ra)),ia=function(e){function a(e){var t;return Object(c.a)(this,a),t=Object(i.a)(this,Object(o.a)(a).call(this,e)),g(),t.state={baseApiUrl:"https://api.ip2loc.com",baseWebUrl:"https://ip2loc.com",apiKey:"pk_live_2JJ2KOurc4CFf56BUcc5pdDl00eDMqRrm4",tax:0,amountTax:0,amountTotal:0,processing:!1,errorMessage:""},t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("div",{className:"checkout-card"},s.a.createElement("div",{className:"checkout-card-body"},s.a.createElement(ta.StripeProvider,{apiKey:this.state.apiKey},s.a.createElement("div",{className:"addCardDetails"},s.a.createElement("h2",{id:"addCardDetails"},void 0===this.state.signupWithPlanSelected?"Update":"Add"," Your Card Details"),s.a.createElement("small",null,"We use Stripe's secure and encrypted platform for all transactions."),s.a.createElement("br",null),s.a.createElement("br",null),s.a.createElement("img",{src:"../img/powered_by_stripe.svg",alt:"Logo",align:"left"}),s.a.createElement("br",null),s.a.createElement(ta.Elements,null,s.a.createElement(ca,{paymentId:this.props.paymentId})))),s.a.createElement("br",null),s.a.createElement("div",{className:"text-center"},s.a.createElement("small",null,"This ordering process is carried out by our payment service provider Stripe.")),s.a.createElement("div",{className:"text-center additional"},s.a.createElement("a",{href:"https://stripe.com/legal/ssa",target:"_blank",rel:"noopener noreferrer"},s.a.createElement("small",null,"Services Agreement")),s.a.createElement("span",null," | "),s.a.createElement("a",{href:"https://stripe.com/privacy",target:"_blank",rel:"noopener noreferrer"},s.a.createElement("small",null,"Privacy Policy")))))}}]),a}(n.Component),oa=t(228),ma=[["Afghanistan","AF"],["\xc5land Islands","AX"],["Albania","AL"],["Algeria","DZ"],["American Samoa","AS"],["Andorra","AD"],["Angola","AO"],["Anguilla","AI"],["Antarctica","AQ"],["Antigua and Barbuda","AG"],["Argentina","AR"],["Armenia","AM"],["Aruba","AW"],["Australia","AU"],["Austria","AT"],["Azerbaijan","AZ"],["Bahamas","BS"],["Bahrain","BH"],["Bangladesh","BD"],["Barbados","BB"],["Belarus","BY"],["Belgium","BE"],["Belize","BZ"],["Benin","BJ"],["Bermuda","BM"],["Bhutan","BT"],["Bolivia, Plurinational State of","BO"],["Bonaire, Sint Eustatius and Saba","BQ"],["Bosnia and Herzegovina","BA"],["Botswana","BW"],["Bouvet Island","BV"],["Brazil","BR"],["British Indian Ocean Territory","IO"],["Brunei Darussalam","BN"],["Bulgaria","BG"],["Burkina Faso","BF"],["Burundi","BI"],["Cambodia","KH"],["Cameroon","CM"],["Canada","CA"],["Cape Verde","CV"],["Cayman Islands","KY"],["Central African Republic","CF"],["Chad","TD"],["Chile","CL"],["China","CN"],["Christmas Island","CX"],["Cocos (Keeling) Islands","CC"],["Colombia","CO"],["Comoros","KM"],["Congo","CG"],["Congo, the Democratic Republic of the","CD"],["Cook Islands","CK"],["Costa Rica","CR"],["C\xf4te d'Ivoire","CI"],["Croatia","HR"],["Cuba","CU"],["Cura\xe7ao","CW"],["Cyprus","CY"],["Czech Republic","CZ"],["Denmark","DK"],["Djibouti","DJ"],["Dominica","DM"],["Dominican Republic","DO"],["Ecuador","EC"],["Egypt","EG"],["El Salvador","SV"],["Equatorial Guinea","GQ"],["Eritrea","ER"],["Estonia","EE"],["Ethiopia","ET"],["Falkland Islands (Malvinas)","FK"],["Faroe Islands","FO"],["Fiji","FJ"],["Finland","FI"],["France","FR"],["French Guiana","GF"],["French Polynesia","PF"],["French Southern Territories","TF"],["Gabon","GA"],["Gambia","GM"],["Georgia","GE"],["Germany","DE"],["Ghana","GH"],["Gibraltar","GI"],["Greece","GR"],["Greenland","GL"],["Grenada","GD"],["Guadeloupe","GP"],["Guam","GU"],["Guatemala","GT"],["Guernsey","GG"],["Guinea","GN"],["Guinea-Bissau","GW"],["Guyana","GY"],["Haiti","HT"],["Heard Island and McDonald Islands","HM"],["Holy See (Vatican City State)","VA"],["Honduras","HN"],["Hong Kong","HK"],["Hungary","HU"],["Iceland","IS"],["India","IN"],["Indonesia","ID"],["Iran, Islamic Republic of","IR"],["Iraq","IQ"],["Ireland","IE"],["Isle of Man","IM"],["Israel","IL"],["Italy","IT"],["Jamaica","JM"],["Japan","JP"],["Jersey","JE"],["Jordan","JO"],["Kazakhstan","KZ"],["Kenya","KE"],["Kiribati","KI"],["Korea, Democratic People's Republic of","KP"],["Korea, Republic of","KR"],["Kuwait","KW"],["Kyrgyzstan","KG"],["Lao People's Democratic Republic","LA"],["Latvia","LV"],["Lebanon","LB"],["Lesotho","LS"],["Liberia","LR"],["Libya","LY"],["Liechtenstein","LI"],["Lithuania","LT"],["Luxembourg","LU"],["Macao","MO"],["Macedonia, the Former Yugoslav Republic of","MK"],["Madagascar","MG"],["Malawi","MW"],["Malaysia","MY"],["Maldives","MV"],["Mali","ML"],["Malta","MT"],["Marshall Islands","MH"],["Martinique","MQ"],["Mauritania","MR"],["Mauritius","MU"],["Mayotte","YT"],["Mexico","MX"],["Micronesia, Federated States of","FM"],["Moldova, Republic of","MD"],["Monaco","MC"],["Mongolia","MN"],["Montenegro","ME"],["Montserrat","MS"],["Morocco","MA"],["Mozambique","MZ"],["Myanmar","MM"],["Namibia","NA"],["Nauru","NR"],["Nepal","NP"],["Netherlands","NL"],["New Caledonia","NC"],["New Zealand","NZ"],["Nicaragua","NI"],["Niger","NE"],["Nigeria","NG"],["Niue","NU"],["Norfolk Island","NF"],["Northern Mariana Islands","MP"],["Norway","NO"],["Oman","OM"],["Pakistan","PK"],["Palau","PW"],["Palestine, State of","PS"],["Panama","PA"],["Papua New Guinea","PG"],["Paraguay","PY"],["Peru","PE"],["Philippines","PH"],["Pitcairn","PN"],["Poland","PL"],["Portugal","PT"],["Puerto Rico","PR"],["Qatar","QA"],["R\xe9union","RE"],["Romania","RO"],["Russian Federation","RU"],["Rwanda","RW"],["Saint Barth\xe9lemy","BL"],["Saint Helena, Ascension and Tristan da Cunha","SH"],["Saint Kitts and Nevis","KN"],["Saint Lucia","LC"],["Saint Martin (French part)","MF"],["Saint Pierre and Miquelon","PM"],["Saint Vincent and the Grenadines","VC"],["Samoa","WS"],["San Marino","SM"],["Sao Tome and Principe","ST"],["Saudi Arabia","SA"],["Senegal","SN"],["Serbia","RS"],["Seychelles","SC"],["Sierra Leone","SL"],["Singapore","SG"],["Sint Maarten (Dutch part)","SX"],["Slovakia","SK"],["Slovenia","SI"],["Solomon Islands","SB"],["Somalia","SO"],["South Africa","ZA"],["South Georgia and the South Sandwich Islands","GS"],["South Sudan","SS"],["Spain","ES"],["Sri Lanka","LK"],["Sudan","SD"],["Suriname","SR"],["Svalbard and Jan Mayen","SJ"],["Swaziland","SZ"],["Sweden","SE"],["Switzerland","CH"],["Syrian Arab Republic","SY"],["Taiwan, Province of China","TW"],["Tajikistan","TJ"],["Tanzania, United Republic of","TZ"],["Thailand","TH"],["Timor-Leste","TL"],["Togo","TG"],["Tokelau","TK"],["Tonga","TO"],["Trinidad and Tobago","TT"],["Tunisia","TN"],["Turkey","TR"],["Turkmenistan","TM"],["Turks and Caicos Islands","TC"],["Tuvalu","TV"],["Uganda","UG"],["Ukraine","UA"],["United Arab Emirates","AE"],["United Kingdom","GB"],["United States","US"],["United States Minor Outlying Islands","UM"],["Uruguay","UY"],["Uzbekistan","UZ"],["Vanuatu","VU"],["Venezuela, Bolivarian Republic of","VE"],["Viet Nam","VN"],["Virgin Islands, British","VG"],["Virgin Islands, U.S.","VI"],["Wallis and Futuna","WF"],["Western Sahara","EH"],["Yemen","YE"],["Zambia","ZM"],["Zimbabwe","ZW"]],ua=function(e){function a(e){var t;return Object(c.a)(this,a),t=Object(i.a)(this,Object(o.a)(a).call(this,e)),g(),t.state={baseApiUrl:"https://api.ip2loc.com",baseWebUrl:"https://ip2loc.com",tax:0,amountTax:0,amountTotal:0,processing:!1,errorMessage:"",countries:ma,countryPreSelected:""},t.handleValidSubmit=t.handleValidSubmit.bind(Object(f.a)(t)),t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){document.title="Choose Plan";var e=this.state.baseApiUrl+"/t8wiiODrLK9j0nYkAQWIgr7pvRMWFf3L/detect";this.fetchCountry(e)}},{key:"fetchCountry",value:function(e){var a=this;fetch(e).then((function(e){return e.json()})).then((function(e){e.success&&(console.log("response.country: "+e.location.country.alpha_2),a.setState({countryPreSelected:e.location.country.alpha_2}))})).catch((function(e){return console.error(e)}))}},{key:"handleCheckout",value:function(){console.log("handleCheckout: "+this.state.baseWebUrl),this.setState({processing:!0}),this.form.submit()}}]),Object(m.a)(a,[{key:"handleValidSubmit",value:function(e,a){var t=this;console.log("handleValidSubmit:CVSPL"),console.log("event = "+JSON.stringify(e,null,2)),console.log("values = "+JSON.stringify(a,null,2)),console.log("Your plan is: "+this.props.planSelected),console.log("Your input email is: "+this.props.email);var n=this.state.baseWebUrl+"/user/createPaymentLink";console.log("baseWebUrl: "+n),this.setState({loading:!0}),this.setState({errorMessage:""}),fetch(n,{method:"post",headers:{Accept:"application/json"},body:JSON.stringify(a,null,2)}).then((function(e){return e.json()})).then((function(e){if(console.log("response success = "+e.success+", error = "+e.error),e.success)console.log("success: "+e.success),console.log("redirect_to_url: "+e.redirect_to_url),e.redirect_to_url&&(t.setState({redirect:!0}),window.location.href=e.redirect_to_url);else switch(console.log("success: false"+e.error),t.setState({recaptcha:""}),e.error){case 422:console.log("422: "+e.field+" / "+e.detail),console.log("422: touchedInputs:"+JSON.stringify(t.form.state.touchedInputs,null,2)),t.form.state.invalidInputs[e.field]=e.detail,t.setState({errorMessage:e.detail});break;case 500:t.setState({errorMessage:e.detail});break;case 429:t.setState({errorMessage:"Too many requests, try again later."});break;default:t.setState({errorMessage:"Server Error: "+e.error})}})).catch((function(e){console.error(e),console.log("success: false catch!"),t.setState({errorMessage:"can't reach server"})})).finally((function(){t.setState({loading:!1})}))}},{key:"render",value:function(){var e=this;return s.a.createElement("div",{className:"checkout-form-wrapper"},s.a.createElement(D.AvForm,{ref:function(a){return e.form=a},onValidSubmit:this.handleValidSubmit,onInvalidSubmit:this.handleInvalidSubmit},s.a.createElement(D.AvField,{type:"hidden",name:"plan",value:this.props.planSelected}),s.a.createElement(U.a,{form:!0},s.a.createElement(x.a,{md:12},s.a.createElement("div",{className:"checkout-progress"},"Step 1 of 2"),s.a.createElement("h2",null,"Start Your Free Trial"),s.a.createElement("small",null,"No credit card charged today. Cancel anytime."))),s.a.createElement(U.a,{form:!0},s.a.createElement(x.a,{md:12},s.a.createElement(L.a,null,s.a.createElement(D.AvField,{onChange:this.updateSignupEmail,name:"email",label:"Email Address",type:"email",id:"useremail",required:!0,value:this.props.email,readOnly:!0})))),s.a.createElement(U.a,{form:!0},s.a.createElement(x.a,{md:12},s.a.createElement(D.AvField,{value:this.state.countryPreSelected,type:"select",name:"countryIso2",label:this.state.paymentRequired?"Select your Country *":"Select your Country",required:this.state.paymentRequired},s.a.createElement("option",{value:"",disabled:!0,selected:!0},"Select your Country"),this.state.countries.map((function(e){return s.a.createElement("option",{value:e[1]},e[0])}))))),s.a.createElement(U.a,{form:!0},s.a.createElement(x.a,{md:12},s.a.createElement(D.AvGroup,{check:!0},s.a.createElement(D.AvInput,{type:"checkbox",name:"updatesCheckbox"}),s.a.createElement(oa.a,{check:!0,for:"updatesCheckbox"},"Keep me updated on new features")),s.a.createElement("br",null),s.a.createElement(v.a,{color:"primary",block:!0,id:"checkout",disabled:this.state.loading&&this.state.processing},this.state.loading&&this.state.processing?s.a.createElement("span",null,s.a.createElement(b.a,{icon:"spinner",spin:!0})," "):s.a.createElement("span",null,"Continue to Stripe")))),this.state.isSignup?s.a.createElement(D.AvGroup,{check:!0},s.a.createElement("small",null,"By signing up, you agree to our terms of service and privacy policy.")):"",this.state.errorMessage?s.a.createElement(H.a,{color:"danger"},this.state.errorMessage):""),s.a.createElement("div",{className:"checkout-trust-signals"},s.a.createElement("div",{className:"trust-item"},s.a.createElement(b.a,{icon:"lock"}),s.a.createElement("span",null,"256-bit SSL encrypted")),s.a.createElement("div",{className:"trust-item"},s.a.createElement(b.a,{icon:"shield-alt"}),s.a.createElement("span",null,"Secure payment by Stripe"))),s.a.createElement("div",{className:"checkout-testimonial"},s.a.createElement("p",null,'"Fast integration, reliable API. Exactly what we needed."'),s.a.createElement("span",{className:"testimonial-author"},"\u2014 Backend Developer, San Francisco")),s.a.createElement("div",{className:"text-center additional"},s.a.createElement("a",{href:"https://stripe.com/legal/ssa",target:"_blank",rel:"noopener noreferrer"},s.a.createElement("small",null,"Services Agreement")),s.a.createElement("span",null," | "),s.a.createElement("a",{href:"https://stripe.com/privacy",target:"_blank",rel:"noopener noreferrer"},s.a.createElement("small",null,"Privacy Policy"))))}}]),a}(n.Component),da=function(e){function a(e){var t;Object(c.a)(this,a),t=Object(i.a)(this,Object(o.a)(a).call(this,e)),g();var n=E.a.parse(t.props.location.search),s=n.paymentId;return t.state={baseApiUrl:"https://api.ip2loc.com",baseWebUrl:"https://ip2loc.com",paymentId:s,signupWithPlanSelected:n.plan,plan:[],email:"",tax:0,amountTax:0,amountTotal:0,processing:!1,errorMessage:"",gtmId:"GTM-PNZNW4R",validationPayment:!1},t.checkPaymentIntent=t.checkPaymentIntent.bind(Object(f.a)(t)),console.log(s),t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){document.title="Checkout",this.fetchPlan()}},{key:"fetchPlan",value:function(){var e=this,a=E.a.parse(this.props.location.search);if(void 0!==a.plan){var t=this.state.baseWebUrl+"/user/plans/"+a.plan+"?paymentId="+a.paymentId;console.log("--fetch--"+t),fetch(t,{method:"POST"}).then((function(e){return e.json()})).then((function(a){a.success?(console.log("--ok-- "+a.plan.title),e.setState({plan:a.plan,tax:a.tax,amountTax:a.amountTax,amountTotal:a.amountTotal,email:a.email})):console.log("--error--")}))}}}]),Object(m.a)(a,[{key:"checkPaymentIntent",value:function(e,a){var t=this;null!=e&&null!=a&&(console.log("paymentIntent: "+e),console.log("paymentId: "+a),console.log("baseApiUrl: "+this.state.baseApiUrl),console.log("validationPayment: "+this.state.validationPayment),this.setState({loading:!0}),fetch(this.state.baseWebUrl+"/user/paymentIntent",{method:"POST",headers:{"Content-Type":"text/plain"},body:JSON.stringify({paymentId:a,paymentIntent:e})}).then((function(e){return e.json()})).then((function(e){console.log("response success"+e.success),e.success?(console.log("strong payment success: "+e.success+" plan: "+e.plan),t.props.history.push("/registrationsuccess?plan="+e.planKey)):t.setState({errorMessage:e.detail})})).catch((function(e){return console.error(e)})).finally((function(){t.setState({loading:t.state.redirect})})))}},{key:"checkSetupIntent",value:function(e,a){var t=this;null!=e&&null!=a&&(console.log("paymentIntent: "+e),console.log("paymentId: "+a),console.log("baseApiUrl: "+this.state.baseApiUrl),console.log("validationPayment: "+this.state.validationPayment),this.setState({loading:!0}),fetch(this.state.baseWebUrl+"/user/setupIntent",{method:"POST",headers:{"Content-Type":"text/plain"},body:JSON.stringify({paymentId:a,setupIntent:e})}).then((function(e){return e.json()})).then((function(e){console.log("response success"+e.success),e.success?(console.log("strong payment success: "+e.success+" plan: "+e.plan),t.props.history.push("/registrationsuccess?plan="+e.planKey)):t.setState({errorMessage:e.detail})})).catch((function(e){return console.error(e)})).finally((function(){t.setState({loading:t.state.redirect})})))}},{key:"render",value:function(){return s.a.createElement("div",{className:"d-flex flex-column min-vh-100"},s.a.createElement(q,{loggedInOnly:!0}),s.a.createElement("main",{className:"flex-fill checkout-main"},s.a.createElement("div",{className:"checkout-header"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"checkout-header-content"},s.a.createElement("h1",null,"Checkout"),s.a.createElement("p",null,"Complete your subscription purchase securely.")))),this.state.validationPayment?s.a.createElement(y.a,{className:"checkout-container"},s.a.createElement(U.a,{className:"justify-content-center"},s.a.createElement(x.a,{lg:"6",md:"8"},s.a.createElement("div",{className:"checkout-card"},s.a.createElement("div",{className:"checkout-card-body text-center"},this.state.errorMessage?s.a.createElement(H.a,{color:"danger"},"Error: ",this.state.errorMessage):s.a.createElement("div",{className:"checkout-processing"},s.a.createElement("div",{className:"processing-spinner"},s.a.createElement(b.a,{icon:"spinner",spin:!0})),s.a.createElement("p",null,"Validating payment..."))))))):s.a.createElement(y.a,{className:"checkout-container"},s.a.createElement(U.a,{className:"justify-content-center align-items-center"},void 0!==this.state.signupWithPlanSelected&&s.a.createElement(x.a,{lg:"4",md:"12",className:"mb-4 mb-lg-0"},this.PlanDetails()),s.a.createElement(x.a,{lg:(this.state.signupWithPlanSelected,"8"),md:"12"},this.CheckoutBasedOnType(this.state.plan.type))))),s.a.createElement(Oe,null))}},{key:"PlanDetails",value:function(){return s.a.createElement("div",{className:"checkout-card plan-details-card"},s.a.createElement("div",{className:"checkout-card-header"},s.a.createElement("div",{className:"card-icon"},s.a.createElement(b.a,{icon:"shopping-cart"})),s.a.createElement("h3",null,"Order Summary")),s.a.createElement("div",{className:"checkout-card-body"},s.a.createElement("div",{className:"plan-summary"},s.a.createElement("h2",{id:"planTitle",className:"plan-name"},this.state.plan.title," Plan"),"0"!==this.state.plan.trial&&s.a.createElement("div",{className:"trial-badge"},s.a.createElement(b.a,{icon:"gift"}),this.state.plan.trial,"-Day Free Trial"),s.a.createElement("p",{className:"plan-description"},this.state.plan.quantity<1e5?"For beginners and small projects.":this.state.plan.quantity<1e6?"Our most popular plan for medium projects.":"Extensive API usage for large projects.")),s.a.createElement("ul",{className:"plan-features-checkout"},s.a.createElement("li",null,s.a.createElement(b.a,{icon:"check",className:"feature-check"}),s.a.createElement("span",null,this.state.plan.description,"/",this.state.plan.time)),s.a.createElement("li",null,s.a.createElement(b.a,{icon:"check",className:"feature-check"}),s.a.createElement("span",null,"HTTPS Encryption")),s.a.createElement("li",null,s.a.createElement(b.a,{icon:"check",className:"feature-check"}),s.a.createElement("span",null,"All Data Points")),s.a.createElement("li",null,s.a.createElement(b.a,{icon:"check",className:"feature-check"}),s.a.createElement("span",null,"Cancel Anytime"))),s.a.createElement("div",{className:"price-breakdown"},s.a.createElement("div",{className:"price-row"},s.a.createElement("span",null,"Subtotal"),s.a.createElement("span",null,"0"===this.state.plan.trial?"".concat(this.state.plan.symbol).concat(this.state.plan.amount):"$0.00")),s.a.createElement("div",{className:"price-row"},s.a.createElement("span",null,"Tax"),s.a.createElement("span",null,"0"===this.state.plan.trial?"".concat(this.state.plan.symbol).concat(this.state.amountTax):"$0.00")),s.a.createElement("div",{className:"price-row total"},s.a.createElement("span",null,"Total"),s.a.createElement("span",null,"0"===this.state.plan.trial?"".concat(this.state.plan.symbol).concat(this.state.amountTotal):"$0.00")),s.a.createElement("div",{className:"price-note"},"Then ",this.state.plan.symbol,"0"===this.state.plan.trial?this.state.amountTotal:this.state.plan.amount," per ",this.state.plan.time,"."))))}},{key:"CheckoutBasedOnType",value:function(e){return"v1"===e?s.a.createElement(ia,{paymentId:this.state.paymentId,plan:this.state}):"v2"===e?s.a.createElement(ua,{email:this.state.email,plan:this.state.plan,planSelected:this.state.signupWithPlanSelected}):void 0}}]),a}(n.Component),pa=function(e){function a(){return Object(c.a)(this,a),Object(i.a)(this,Object(o.a)(a).apply(this,arguments))}return Object(u.a)(a,e),Object(m.a)(a,[{key:"render",value:function(){var e=this;return s.a.createElement("div",{className:"dashboard-sidebar"},s.a.createElement("div",{className:"sidebar-card"},s.a.createElement("nav",{className:"sidebar-nav"},[{key:"dashboard",label:"Dashboard",icon:"th-large",href:"/dashboard"},{key:"subscription",label:"Subscription",icon:"layer-group",href:"/subscription"},{key:"payment",label:"Payment",icon:"credit-card",href:"/payment"}].map((function(a){return s.a.createElement("a",{key:a.key,href:a.href,className:"sidebar-nav-item ".concat(e.props.selected===a.key?"active":"")},s.a.createElement("div",{className:"sidebar-nav-icon"},s.a.createElement(b.a,{icon:a.icon})),s.a.createElement("span",{className:"sidebar-nav-label"},a.label),e.props.selected===a.key&&s.a.createElement("div",{className:"sidebar-nav-indicator"}))})))))}}]),a}(n.Component),ha=function(e){function a(e){var t;Object(c.a)(this,a),t=Object(i.a)(this,Object(o.a)(a).call(this,e)),g();var n=e.cookies;return t.state={gtmId:"GTM-PNZNW4R",loading:!1,name:"",apiKey:"",planKey:"",planTitle:"",usage:"1/2",email:"",period:"",invoices:null,baseWebUrl:"https://ip2loc.com",baseApiUrl:"https://api.ip2loc.com",session:void 0!==n.get("session"),apiKeyCopied:!1},t.state.session||t.props.history.push("/"),t.copyApiKey=t.copyApiKey.bind(Object(f.a)(t)),t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){document.title="Dashboard";var e=this.state.baseWebUrl+"/user/dashboard";this.fetch(e)}},{key:"fetch",value:function(e){function a(a){return e.apply(this,arguments)}return a.toString=function(){return e.toString()},a}((function(e){var a=this;console.log("Fetching URL:",e),this.setState({loading:!0}),fetch(e).then((function(e){return console.log("Response received"),e.json()})).then((function(e){console.log("Processed JSON response"),e.success?(console.log("Response is successful"),!0===e.planSelectionRequired&&a.props.history.push("/plans"),a.setState({apiKey:e.apiKey}),a.setState({name:e.name}),a.setState({planKey:e.planKey}),a.setState({planTitle:e.planTitle}),a.setState({usage:e.usage}),a.setState({email:e.email}),a.setState({period:e.period}),a.setState({invoices:e.invoices}),console.log("name: "+e.invoices)):console.log("Response is not successful")})).catch((function(e){console.error(e)})).finally((function(){return a.setState({loading:!1})}))}))}]),Object(m.a)(a,[{key:"copyApiKey",value:function(){var e=this;navigator.clipboard.writeText(this.state.apiKey),this.setState({apiKeyCopied:!0}),setTimeout((function(){return e.setState({apiKeyCopied:!1})}),2e3)}},{key:"render",value:function(){return s.a.createElement("div",{className:"d-flex flex-column min-vh-100"},s.a.createElement(q,{loggedInOnly:!0}),s.a.createElement("main",{className:"flex-fill dashboard-main"},s.a.createElement("div",{className:"dashboard-header"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"dashboard-header-content"},s.a.createElement("div",{className:"dashboard-welcome"},s.a.createElement("h1",null,"Welcome back",this.state.name?", ".concat(this.state.name):""),s.a.createElement("p",null,"Manage your API keys, subscription, and account settings."))))),s.a.createElement(y.a,{className:"dashboard-container"},s.a.createElement(U.a,null,s.a.createElement(x.a,{lg:"3",md:"4",className:"mb-4"},s.a.createElement(pa,{selected:"dashboard"})),s.a.createElement(x.a,{lg:"9",md:"8"},s.a.createElement("div",{className:"dashboard-card api-key-card"},s.a.createElement("div",{className:"dashboard-card-header"},s.a.createElement("div",{className:"card-icon"},s.a.createElement(b.a,{icon:"key"})),s.a.createElement("h3",null,"Your API Key")),s.a.createElement("div",{className:"dashboard-card-body"},s.a.createElement("div",{className:"api-key-display"},s.a.createElement("code",{id:"apiKey",className:"api-key-value"},this.state.apiKey||"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022"),s.a.createElement("button",{className:"copy-btn",onClick:this.copyApiKey,title:"Copy to clipboard"},s.a.createElement(b.a,{icon:this.state.apiKeyCopied?"check":"copy"}),this.state.apiKeyCopied?"Copied!":"Copy")),s.a.createElement("p",{className:"api-key-hint"},"Use this key in your API requests. Keep it secret!"))),s.a.createElement("div",{className:"dashboard-stats-grid"},s.a.createElement("div",{className:"dashboard-card stat-card"},s.a.createElement("div",{className:"stat-icon plan-icon"},s.a.createElement(b.a,{icon:"layer-group"})),s.a.createElement("div",{className:"stat-content"},s.a.createElement("span",{className:"stat-label"},"Current Plan"),s.a.createElement("span",{id:"planTitle",className:"stat-value"},this.state.planTitle||"Loading..."))),s.a.createElement("div",{className:"dashboard-card stat-card"},s.a.createElement("div",{className:"stat-icon usage-icon"},s.a.createElement(b.a,{icon:"chart-bar"})),s.a.createElement("div",{className:"stat-content"},s.a.createElement("span",{className:"stat-label"},"API Usage"),s.a.createElement("span",{className:"stat-value"},this.state.usage||"0/0"))),s.a.createElement("div",{className:"dashboard-card stat-card"},s.a.createElement("div",{className:"stat-icon period-icon"},s.a.createElement(b.a,{icon:"calendar-alt"})),s.a.createElement("div",{className:"stat-content"},s.a.createElement("span",{className:"stat-label"},"Billing Period"),s.a.createElement("span",{className:"stat-value"},this.state.period||"N/A")))),s.a.createElement("div",{className:"dashboard-card"},s.a.createElement("div",{className:"dashboard-card-header"},s.a.createElement("div",{className:"card-icon"},s.a.createElement(b.a,{icon:"user"})),s.a.createElement("h3",null,"Account Information")),s.a.createElement("div",{className:"dashboard-card-body"},s.a.createElement("div",{className:"info-grid"},s.a.createElement("div",{className:"info-item"},s.a.createElement("span",{className:"info-label"},"Email"),s.a.createElement("span",{className:"info-value"},this.state.email||"-")),s.a.createElement("div",{className:"info-item"},s.a.createElement("span",{className:"info-label"},"Name"),s.a.createElement("span",{className:"info-value"},this.state.name||"-"))))),this.state.invoices&&this.state.invoices.length>0&&s.a.createElement("div",{className:"dashboard-card"},s.a.createElement("div",{className:"dashboard-card-header"},s.a.createElement("div",{className:"card-icon"},s.a.createElement(b.a,{icon:"file-invoice"})),s.a.createElement("h3",null,"Recent Invoices")),s.a.createElement("div",{className:"dashboard-card-body"},s.a.createElement("div",{className:"invoices-list"},this.state.invoices.map((function(e,a){return s.a.createElement("a",{key:a,href:e.link,className:"invoice-item",target:"_blank",rel:"noopener noreferrer"},s.a.createElement(b.a,{icon:"file-pdf",className:"invoice-icon"}),s.a.createElement("span",null,e.name),s.a.createElement(b.a,{icon:"external-link-alt",className:"link-icon"}))}))))))))),s.a.createElement(Oe,null))}}]),a}(n.Component),Ea=Object(p.g)(Object(z.b)(ha)),ga=function(e){function a(e){var t;Object(c.a)(this,a),t=Object(i.a)(this,Object(o.a)(a).call(this,e)),g();var n=E.a.parse(t.props.location.search);return console.log(n.sessionId),t.state={},t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){document.title="Checkout Success"}}]),Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("div",{className:"d-flex flex-column min-vh-100"},s.a.createElement(q,null),s.a.createElement("main",{className:"flex-fill"},s.a.createElement("div",{className:"success-page"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"success-card"},s.a.createElement("div",{className:"success-icon"},s.a.createElement(b.a,{icon:"check-circle"})),s.a.createElement("h1",null,"Checkout Successful"),s.a.createElement("p",{className:"success-message"},"Thank you for your purchase! Your subscription is now active."),s.a.createElement("div",{className:"success-actions"},s.a.createElement("a",{href:"/dashboard",className:"btn-primary-custom"},s.a.createElement(b.a,{icon:"tachometer-alt",className:"mr-2"}),"Go to Dashboard")))))),s.a.createElement(Oe,null))}}]),a}(n.Component),fa=function(e){function a(e){var t;Object(c.a)(this,a),t=Object(i.a)(this,Object(o.a)(a).call(this,e)),g();var n=E.a.parse(t.props.location.search);return console.log(n.sessionId),t.state={},t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){document.title="Checkout Cancelled"}}]),Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("div",{className:"d-flex flex-column min-vh-100"},s.a.createElement(q,null),s.a.createElement("main",{className:"flex-fill"},s.a.createElement("div",{className:"success-page"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"success-card"},s.a.createElement("div",{className:"activation-icon warning"},s.a.createElement(b.a,{icon:"times-circle"})),s.a.createElement("h1",null,"Checkout Cancelled"),s.a.createElement("p",{className:"success-message"},"Your checkout was cancelled. No charges have been made."),s.a.createElement("div",{className:"success-actions"},s.a.createElement("a",{href:"/pricing",className:"btn-primary-custom"},s.a.createElement(b.a,{icon:"arrow-left",className:"mr-2"}),"Back to Pricing")))))),s.a.createElement(Oe,null))}}]),a}(n.Component),ya=function(e){function a(e){var t;return Object(c.a)(this,a),(t=Object(i.a)(this,Object(o.a)(a).call(this,e))).setReCaptchaToken=function(e){t.setState({recaptcha:e})},g(),t.state={subjects:[[1,"General Inquiry"],[2,"Billing Inquiry"],[3,"Technical Inquiry"],[4,"Other"]],subject:"General Inquiry",email:"",message:"",baseWebUrl:"https://ip2loc.com",captchaSiteKey:"0x4AAAAAABuWWtOfbf_-dsn0",recaptcha:"",loading:!1,success:!1,errorMessage:""},t.handleOnChange=t.handleOnChange.bind(Object(f.a)(t)),t.setReCaptchaToken=t.setReCaptchaToken.bind(Object(f.a)(t)),t.handleSubmit=t.handleSubmit.bind(Object(f.a)(t)),t.turnstileRef=s.a.createRef(),t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){document.title="Contact - ip2loc"}}]),Object(m.a)(a,[{key:"handleOnChange",value:function(e){this.setState(Object(_e.a)({},e.target.name,e.target.value))}},{key:"handleSubmit",value:function(e){var a=this;if(e.preventDefault(),this.state.email&&this.state.message){var t={subject:this.state.subject,email:this.state.email,message:this.state.message,recaptcha:this.state.recaptcha},n=this.state.baseWebUrl+"/user/contact";this.setState({loading:!0,errorMessage:""}),fetch(n,{method:"post",headers:{Accept:"application/json"},body:JSON.stringify(t)}).then((function(e){return e.json()})).then((function(e){if(e.success)a.setState({errorMessage:"",success:!0});else switch(a.setState({recaptcha:""}),e.error){case 422:a.setState({errorMessage:e.detail||"Validation error"});break;case 429:a.setState({errorMessage:"Too many requests, try again later."});break;default:a.setState({errorMessage:e.detail||"Server Error"})}})).catch((function(e){console.error(e),a.setState({errorMessage:"Can't reach server. Please try again."})})).finally((function(){a.setState({loading:!1})}))}else this.setState({errorMessage:"Please fill in all required fields."})}},{key:"render",value:function(){var e=this;return s.a.createElement("div",{className:"d-flex flex-column min-vh-100"},s.a.createElement(q,null),s.a.createElement("main",{className:"flex-fill nav-padding"},s.a.createElement("div",{className:"page-hero"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"page-hero-content"},s.a.createElement("span",{className:"page-badge"},"Support"),s.a.createElement("h1",{className:"page-title"},"Contact Us"),s.a.createElement("p",{className:"page-subtitle"},"Have a question or need help? We're here for you. Our team typically responds within 24 hours.")))),s.a.createElement("div",{className:"page-content"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"contact-grid"},s.a.createElement("div",{className:"contact-info"},s.a.createElement("h3",null,"Get in Touch"),s.a.createElement("div",{className:"contact-info-item"},s.a.createElement("div",{className:"contact-info-icon"},s.a.createElement("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2"},s.a.createElement("circle",{cx:"12",cy:"12",r:"10"}),s.a.createElement("polyline",{points:"12 6 12 12 16 14"}))),s.a.createElement("div",{className:"contact-info-text"},s.a.createElement("h4",null,"Response Time"),s.a.createElement("p",null,"Within 24 hours"))),s.a.createElement("div",{className:"contact-info-item"},s.a.createElement("div",{className:"contact-info-icon"},s.a.createElement("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2"},s.a.createElement("path",{d:"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"}),s.a.createElement("circle",{cx:"12",cy:"10",r:"3"}))),s.a.createElement("div",{className:"contact-info-text"},s.a.createElement("h4",null,"Location"),s.a.createElement("p",null,"Amstetten, Austria")))),s.a.createElement("div",{className:"contact-form-card"},this.state.success?s.a.createElement("div",null,s.a.createElement(H.a,{color:"success"},s.a.createElement("strong",null,"Message sent successfully!"),s.a.createElement("br",null),"We will get back to you as soon as possible.")):s.a.createElement("form",{onSubmit:this.handleSubmit},s.a.createElement("h3",null,"Send us a Message"),s.a.createElement("div",{className:"form-group-modern"},s.a.createElement("label",{htmlFor:"subject"},"Subject"),s.a.createElement("select",{id:"subject",name:"subject",value:this.state.subject,onChange:this.handleOnChange},this.state.subjects.map((function(e){return s.a.createElement("option",{key:e[0],value:e[1]},e[1])})))),s.a.createElement("div",{className:"form-group-modern"},s.a.createElement("label",{htmlFor:"email"},"Email Address *"),s.a.createElement("input",{type:"email",id:"email",name:"email",value:this.state.email,onChange:this.handleOnChange,placeholder:"your@email.com",required:!0})),s.a.createElement("div",{className:"form-group-modern"},s.a.createElement("label",{htmlFor:"message"},"Message * (Max. 2000 characters)"),s.a.createElement("textarea",{id:"message",name:"message",value:this.state.message,onChange:this.handleOnChange,placeholder:"How can we help you?",maxLength:"2000",required:!0})),this.state.errorMessage&&s.a.createElement(H.a,{color:"danger"},this.state.errorMessage),s.a.createElement("div",{style:{display:"flex",justifyContent:"center",margin:"16px 0"}},s.a.createElement(Ve.a,{sitekey:this.state.captchaSiteKey,ref:this.turnstileRef,onVerify:this.setReCaptchaToken,onSuccess:this.setReCaptchaToken,onExpire:function(){return e.setState({recaptcha:""})},onError:function(){return e.setState({recaptcha:""})},options:{appearance:"interaction-only",theme:"auto",size:"compact",retry:"auto",refreshExpired:"auto",action:"contact"}})),s.a.createElement("button",{type:"submit",className:"btn-submit-modern",disabled:this.state.loading},this.state.loading?s.a.createElement("span",null,s.a.createElement(b.a,{icon:"spinner",spin:!0})," Sending..."):s.a.createElement("span",null,"Send Message")))))))),s.a.createElement(Oe,null))}}]),a}(n.Component),va=function(e){function a(e){var t;return Object(c.a)(this,a),t=Object(i.a)(this,Object(o.a)(a).call(this,e)),g(),t.state={},t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){document.title="Imprint - ip2loc"}},{key:"render",value:function(){var e=Object({NODE_ENV:"production",PUBLIC_URL:".",REACT_APP_FLAVOR:"geocoder",REACT_APP_TITLE:"ip2loc",REACT_APP_HOME_TITLE:"IP 2 Location API, detect Language, Currency and more from IP Address",REACT_APP_HOME_TITLE_2_LINE:"Ready to Save Time and Money?",REACT_APP_HOME_TITLE_3_LINE:"",REACT_APP_HOME_H1:"[ACCENT]IP 2 Location API[/ACCENT], detect Language, Currency and more from IP Address",REACT_APP_HOME_H2:"",REACT_APP_HOME_HERO_SHOT_H2:"[ACCENT]Benefit[/ACCENT] from ip2loc's [ACCENT]reliable[/ACCENT] and [ACCENT]developer-friendly[/ACCENT] tools.",REACT_APP_HOME_HERO_WHY_0:"The Power of Geolocation: Use it for Targeted Advertising, Fraud Prevention, Website Localization, Content Personalization, Geotargeting and much more.",REACT_APP_HOME_HERO_WHY_1:"Targeted Advertising: Tailoring ads based on geographic location of website visitors.",REACT_APP_HOME_HERO_WHY_2:"Fraud Prevention: Detecting fraudulent activities by comparing IP location with user's billing or shipping address.",REACT_APP_HOME_HERO_WHY_3:"Website Localization: Automatically presenting website in appropriate language and currency based on visitor's location.",REACT_APP_HOME_HERO_WHY_4:"Content Personalization: Personalizing website content based on visitor's location.",REACT_APP_HOME_HERO_WHY_5:"Targeting regions or countries with marketing campaigns.",REACT_APP_HOME_TITLE_FREE:"Free contingent: 15.000 Requests per month!",REACT_APP_HOME_TEST_IT:"Geolocation is a powerful tool that businesses can use to target their advertising, prevent fraud, localize their website, personalize content, and target specific locations for their products or services. IP 2 Location API is a popular geolocation service that can detect a user's location, language, currency, and other details from their IP address.",REACT_APP_KEYWORDS:"ip api, ip to location api, geoip api, ip to country api",REACT_APP_DESCRIPTION:"IP to location REST API using JSON, XML and Yaml supporting PHP, JavaScript, Node, Java, and more.",REACT_APP_HOME_CALL2ACTION:"Get your [LIGHT]API Key[/LIGHT] now",REACT_APP_DEV_BASE_WEB_URL:"http://localhost:8080",REACT_APP_DEV_BASE_API_URL:"http://0.0.0.0:8080",REACT_APP_BASE_WEB_URL:"https://ip2loc.com",REACT_APP_BASE_API_URL:"https://api.ip2loc.com",REACT_APP_COLOR:"#355691",REACT_APP_BACKGROUND_COLOR:"#00a8ff",REACT_APP_BACKGROUND_IMAGE:"/img/world.svg"}).REACT_APP_IMPRINT_EMAIL,a=Object({NODE_ENV:"production",PUBLIC_URL:".",REACT_APP_FLAVOR:"geocoder",REACT_APP_TITLE:"ip2loc",REACT_APP_HOME_TITLE:"IP 2 Location API, detect Language, Currency and more from IP Address",REACT_APP_HOME_TITLE_2_LINE:"Ready to Save Time and Money?",REACT_APP_HOME_TITLE_3_LINE:"",REACT_APP_HOME_H1:"[ACCENT]IP 2 Location API[/ACCENT], detect Language, Currency and more from IP Address",REACT_APP_HOME_H2:"",REACT_APP_HOME_HERO_SHOT_H2:"[ACCENT]Benefit[/ACCENT] from ip2loc's [ACCENT]reliable[/ACCENT] and [ACCENT]developer-friendly[/ACCENT] tools.",REACT_APP_HOME_HERO_WHY_0:"The Power of Geolocation: Use it for Targeted Advertising, Fraud Prevention, Website Localization, Content Personalization, Geotargeting and much more.",REACT_APP_HOME_HERO_WHY_1:"Targeted Advertising: Tailoring ads based on geographic location of website visitors.",REACT_APP_HOME_HERO_WHY_2:"Fraud Prevention: Detecting fraudulent activities by comparing IP location with user's billing or shipping address.",REACT_APP_HOME_HERO_WHY_3:"Website Localization: Automatically presenting website in appropriate language and currency based on visitor's location.",REACT_APP_HOME_HERO_WHY_4:"Content Personalization: Personalizing website content based on visitor's location.",REACT_APP_HOME_HERO_WHY_5:"Targeting regions or countries with marketing campaigns.",REACT_APP_HOME_TITLE_FREE:"Free contingent: 15.000 Requests per month!",REACT_APP_HOME_TEST_IT:"Geolocation is a powerful tool that businesses can use to target their advertising, prevent fraud, localize their website, personalize content, and target specific locations for their products or services. IP 2 Location API is a popular geolocation service that can detect a user's location, language, currency, and other details from their IP address.",REACT_APP_KEYWORDS:"ip api, ip to location api, geoip api, ip to country api",REACT_APP_DESCRIPTION:"IP to location REST API using JSON, XML and Yaml supporting PHP, JavaScript, Node, Java, and more.",REACT_APP_HOME_CALL2ACTION:"Get your [LIGHT]API Key[/LIGHT] now",REACT_APP_DEV_BASE_WEB_URL:"http://localhost:8080",REACT_APP_DEV_BASE_API_URL:"http://0.0.0.0:8080",REACT_APP_BASE_WEB_URL:"https://ip2loc.com",REACT_APP_BASE_API_URL:"https://api.ip2loc.com",REACT_APP_COLOR:"#355691",REACT_APP_BACKGROUND_COLOR:"#00a8ff",REACT_APP_BACKGROUND_IMAGE:"/img/world.svg"}).REACT_APP_IMPRINT_PHONE,t=Object({NODE_ENV:"production",PUBLIC_URL:".",REACT_APP_FLAVOR:"geocoder",REACT_APP_TITLE:"ip2loc",REACT_APP_HOME_TITLE:"IP 2 Location API, detect Language, Currency and more from IP Address",REACT_APP_HOME_TITLE_2_LINE:"Ready to Save Time and Money?",REACT_APP_HOME_TITLE_3_LINE:"",REACT_APP_HOME_H1:"[ACCENT]IP 2 Location API[/ACCENT], detect Language, Currency and more from IP Address",REACT_APP_HOME_H2:"",REACT_APP_HOME_HERO_SHOT_H2:"[ACCENT]Benefit[/ACCENT] from ip2loc's [ACCENT]reliable[/ACCENT] and [ACCENT]developer-friendly[/ACCENT] tools.",REACT_APP_HOME_HERO_WHY_0:"The Power of Geolocation: Use it for Targeted Advertising, Fraud Prevention, Website Localization, Content Personalization, Geotargeting and much more.",REACT_APP_HOME_HERO_WHY_1:"Targeted Advertising: Tailoring ads based on geographic location of website visitors.",REACT_APP_HOME_HERO_WHY_2:"Fraud Prevention: Detecting fraudulent activities by comparing IP location with user's billing or shipping address.",REACT_APP_HOME_HERO_WHY_3:"Website Localization: Automatically presenting website in appropriate language and currency based on visitor's location.",REACT_APP_HOME_HERO_WHY_4:"Content Personalization: Personalizing website content based on visitor's location.",REACT_APP_HOME_HERO_WHY_5:"Targeting regions or countries with marketing campaigns.",REACT_APP_HOME_TITLE_FREE:"Free contingent: 15.000 Requests per month!",REACT_APP_HOME_TEST_IT:"Geolocation is a powerful tool that businesses can use to target their advertising, prevent fraud, localize their website, personalize content, and target specific locations for their products or services. IP 2 Location API is a popular geolocation service that can detect a user's location, language, currency, and other details from their IP address.",REACT_APP_KEYWORDS:"ip api, ip to location api, geoip api, ip to country api",REACT_APP_DESCRIPTION:"IP to location REST API using JSON, XML and Yaml supporting PHP, JavaScript, Node, Java, and more.",REACT_APP_HOME_CALL2ACTION:"Get your [LIGHT]API Key[/LIGHT] now",REACT_APP_DEV_BASE_WEB_URL:"http://localhost:8080",REACT_APP_DEV_BASE_API_URL:"http://0.0.0.0:8080",REACT_APP_BASE_WEB_URL:"https://ip2loc.com",REACT_APP_BASE_API_URL:"https://api.ip2loc.com",REACT_APP_COLOR:"#355691",REACT_APP_BACKGROUND_COLOR:"#00a8ff",REACT_APP_BACKGROUND_IMAGE:"/img/world.svg"}).REACT_APP_IMPRINT_VAT_ID,n=Object({NODE_ENV:"production",PUBLIC_URL:".",REACT_APP_FLAVOR:"geocoder",REACT_APP_TITLE:"ip2loc",REACT_APP_HOME_TITLE:"IP 2 Location API, detect Language, Currency and more from IP Address",REACT_APP_HOME_TITLE_2_LINE:"Ready to Save Time and Money?",REACT_APP_HOME_TITLE_3_LINE:"",REACT_APP_HOME_H1:"[ACCENT]IP 2 Location API[/ACCENT], detect Language, Currency and more from IP Address",REACT_APP_HOME_H2:"",REACT_APP_HOME_HERO_SHOT_H2:"[ACCENT]Benefit[/ACCENT] from ip2loc's [ACCENT]reliable[/ACCENT] and [ACCENT]developer-friendly[/ACCENT] tools.",REACT_APP_HOME_HERO_WHY_0:"The Power of Geolocation: Use it for Targeted Advertising, Fraud Prevention, Website Localization, Content Personalization, Geotargeting and much more.",REACT_APP_HOME_HERO_WHY_1:"Targeted Advertising: Tailoring ads based on geographic location of website visitors.",REACT_APP_HOME_HERO_WHY_2:"Fraud Prevention: Detecting fraudulent activities by comparing IP location with user's billing or shipping address.",REACT_APP_HOME_HERO_WHY_3:"Website Localization: Automatically presenting website in appropriate language and currency based on visitor's location.",REACT_APP_HOME_HERO_WHY_4:"Content Personalization: Personalizing website content based on visitor's location.",REACT_APP_HOME_HERO_WHY_5:"Targeting regions or countries with marketing campaigns.",REACT_APP_HOME_TITLE_FREE:"Free contingent: 15.000 Requests per month!",REACT_APP_HOME_TEST_IT:"Geolocation is a powerful tool that businesses can use to target their advertising, prevent fraud, localize their website, personalize content, and target specific locations for their products or services. IP 2 Location API is a popular geolocation service that can detect a user's location, language, currency, and other details from their IP address.",REACT_APP_KEYWORDS:"ip api, ip to location api, geoip api, ip to country api",REACT_APP_DESCRIPTION:"IP to location REST API using JSON, XML and Yaml supporting PHP, JavaScript, Node, Java, and more.",REACT_APP_HOME_CALL2ACTION:"Get your [LIGHT]API Key[/LIGHT] now",REACT_APP_DEV_BASE_WEB_URL:"http://localhost:8080",REACT_APP_DEV_BASE_API_URL:"http://0.0.0.0:8080",REACT_APP_BASE_WEB_URL:"https://ip2loc.com",REACT_APP_BASE_API_URL:"https://api.ip2loc.com",REACT_APP_COLOR:"#355691",REACT_APP_BACKGROUND_COLOR:"#00a8ff",REACT_APP_BACKGROUND_IMAGE:"/img/world.svg"}).REACT_APP_IMPRINT_COMPANY_REGISTER,l=Object({NODE_ENV:"production",PUBLIC_URL:".",REACT_APP_FLAVOR:"geocoder",REACT_APP_TITLE:"ip2loc",REACT_APP_HOME_TITLE:"IP 2 Location API, detect Language, Currency and more from IP Address",REACT_APP_HOME_TITLE_2_LINE:"Ready to Save Time and Money?",REACT_APP_HOME_TITLE_3_LINE:"",REACT_APP_HOME_H1:"[ACCENT]IP 2 Location API[/ACCENT], detect Language, Currency and more from IP Address",REACT_APP_HOME_H2:"",REACT_APP_HOME_HERO_SHOT_H2:"[ACCENT]Benefit[/ACCENT] from ip2loc's [ACCENT]reliable[/ACCENT] and [ACCENT]developer-friendly[/ACCENT] tools.",REACT_APP_HOME_HERO_WHY_0:"The Power of Geolocation: Use it for Targeted Advertising, Fraud Prevention, Website Localization, Content Personalization, Geotargeting and much more.",REACT_APP_HOME_HERO_WHY_1:"Targeted Advertising: Tailoring ads based on geographic location of website visitors.",REACT_APP_HOME_HERO_WHY_2:"Fraud Prevention: Detecting fraudulent activities by comparing IP location with user's billing or shipping address.",REACT_APP_HOME_HERO_WHY_3:"Website Localization: Automatically presenting website in appropriate language and currency based on visitor's location.",REACT_APP_HOME_HERO_WHY_4:"Content Personalization: Personalizing website content based on visitor's location.",REACT_APP_HOME_HERO_WHY_5:"Targeting regions or countries with marketing campaigns.",REACT_APP_HOME_TITLE_FREE:"Free contingent: 15.000 Requests per month!",REACT_APP_HOME_TEST_IT:"Geolocation is a powerful tool that businesses can use to target their advertising, prevent fraud, localize their website, personalize content, and target specific locations for their products or services. IP 2 Location API is a popular geolocation service that can detect a user's location, language, currency, and other details from their IP address.",REACT_APP_KEYWORDS:"ip api, ip to location api, geoip api, ip to country api",REACT_APP_DESCRIPTION:"IP to location REST API using JSON, XML and Yaml supporting PHP, JavaScript, Node, Java, and more.",REACT_APP_HOME_CALL2ACTION:"Get your [LIGHT]API Key[/LIGHT] now",REACT_APP_DEV_BASE_WEB_URL:"http://localhost:8080",REACT_APP_DEV_BASE_API_URL:"http://0.0.0.0:8080",REACT_APP_BASE_WEB_URL:"https://ip2loc.com",REACT_APP_BASE_API_URL:"https://api.ip2loc.com",REACT_APP_COLOR:"#355691",REACT_APP_BACKGROUND_COLOR:"#00a8ff",REACT_APP_BACKGROUND_IMAGE:"/img/world.svg"}).REACT_APP_IMPRINT_SUPERVISORY_AUTHORITY;return s.a.createElement("div",{className:"d-flex flex-column min-vh-100"},s.a.createElement(q,null),s.a.createElement("main",{className:"flex-fill nav-padding"},s.a.createElement("div",{className:"page-hero"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"page-hero-content"},s.a.createElement("span",{className:"page-badge"},"Legal"),s.a.createElement("h1",{className:"page-title"},"Imprint"),s.a.createElement("p",{className:"page-subtitle"},"Legal information and company details according to applicable regulations.")))),s.a.createElement("div",{className:"page-content"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"page-content-card"},s.a.createElement("div",{className:"page-meta"},"Last updated: ","2025-12-19"),s.a.createElement("p",null,"Information obligation according to \xa75 E-Commerce Law, \xa714 Corporate Code, \xa763 Trade Regulations and Disclosure Obligation according to \xa725 Media Act."),s.a.createElement("div",{className:"imprint-info"},s.a.createElement("h3",null,"ip2loc"),s.a.createElement("address",null,"Roman Hochst\xf6ger",s.a.createElement("br",null),"Gartenstra\xdfe 21",s.a.createElement("br",null),"3300 Amstetten",s.a.createElement("br",null),"Austria")),s.a.createElement("div",{className:"imprint-row"},s.a.createElement("span",{className:"imprint-label"},"Contact:"),s.a.createElement("span",{className:"imprint-value"},s.a.createElement("a",{href:"/contact"},"Contact Form"))),e&&s.a.createElement("div",{className:"imprint-row"},s.a.createElement("span",{className:"imprint-label"},"Email:"),s.a.createElement("span",{className:"imprint-value"},s.a.createElement("a",{href:"mailto:".concat(e)},e))),a&&s.a.createElement("div",{className:"imprint-row"},s.a.createElement("span",{className:"imprint-label"},"Phone:"),s.a.createElement("span",{className:"imprint-value"},a)),s.a.createElement("div",{className:"imprint-row"},s.a.createElement("span",{className:"imprint-label"},"Member of:"),s.a.createElement("span",{className:"imprint-value"},"WKO, UBIT")),t&&s.a.createElement("div",{className:"imprint-row"},s.a.createElement("span",{className:"imprint-label"},"VAT ID:"),s.a.createElement("span",{className:"imprint-value"},t)),n&&s.a.createElement("div",{className:"imprint-row"},s.a.createElement("span",{className:"imprint-label"},"Register:"),s.a.createElement("span",{className:"imprint-value"},n)),l&&s.a.createElement("div",{className:"imprint-row"},s.a.createElement("span",{className:"imprint-label"},"Authority:"),s.a.createElement("span",{className:"imprint-value"},l)),s.a.createElement("div",{className:"imprint-row"},s.a.createElement("span",{className:"imprint-label"},"Professional Law:"),s.a.createElement("span",{className:"imprint-value"},"Trade Regulations: ",s.a.createElement("a",{href:"https://www.ris.bka.gv.at",target:"_blank",rel:"noopener noreferrer"},"www.ris.bka.gv.at"))),s.a.createElement("h2",null,"Company"),s.a.createElement("p",null,"Learn more about how we operate and how our dataset is sourced on our ",s.a.createElement("a",{href:"/company"},"Company")," page."),s.a.createElement("h2",null,"Disclaimer"),s.a.createElement("p",null,"We are constantly developing the contents of this website and strive to provide correct and up-to-date information."),s.a.createElement("p",null,"Unfortunately, we cannot assume any liability for the correctness of all content on this website, especially for those provided by third parties."),s.a.createElement("p",null,"If you notice any problematic or illegal content, please contact us immediately. You will find the contact details above."))))),s.a.createElement(Oe,null))}}]),a}(n.Component),ba=function(e){function a(e){var t;return Object(c.a)(this,a),t=Object(i.a)(this,Object(o.a)(a).call(this,e)),g(),t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){document.title="Privacy Policy - ip2loc"}},{key:"render",value:function(){var e=Object({NODE_ENV:"production",PUBLIC_URL:".",REACT_APP_FLAVOR:"geocoder",REACT_APP_TITLE:"ip2loc",REACT_APP_HOME_TITLE:"IP 2 Location API, detect Language, Currency and more from IP Address",REACT_APP_HOME_TITLE_2_LINE:"Ready to Save Time and Money?",REACT_APP_HOME_TITLE_3_LINE:"",REACT_APP_HOME_H1:"[ACCENT]IP 2 Location API[/ACCENT], detect Language, Currency and more from IP Address",REACT_APP_HOME_H2:"",REACT_APP_HOME_HERO_SHOT_H2:"[ACCENT]Benefit[/ACCENT] from ip2loc's [ACCENT]reliable[/ACCENT] and [ACCENT]developer-friendly[/ACCENT] tools.",REACT_APP_HOME_HERO_WHY_0:"The Power of Geolocation: Use it for Targeted Advertising, Fraud Prevention, Website Localization, Content Personalization, Geotargeting and much more.",REACT_APP_HOME_HERO_WHY_1:"Targeted Advertising: Tailoring ads based on geographic location of website visitors.",REACT_APP_HOME_HERO_WHY_2:"Fraud Prevention: Detecting fraudulent activities by comparing IP location with user's billing or shipping address.",REACT_APP_HOME_HERO_WHY_3:"Website Localization: Automatically presenting website in appropriate language and currency based on visitor's location.",REACT_APP_HOME_HERO_WHY_4:"Content Personalization: Personalizing website content based on visitor's location.",REACT_APP_HOME_HERO_WHY_5:"Targeting regions or countries with marketing campaigns.",REACT_APP_HOME_TITLE_FREE:"Free contingent: 15.000 Requests per month!",REACT_APP_HOME_TEST_IT:"Geolocation is a powerful tool that businesses can use to target their advertising, prevent fraud, localize their website, personalize content, and target specific locations for their products or services. IP 2 Location API is a popular geolocation service that can detect a user's location, language, currency, and other details from their IP address.",REACT_APP_KEYWORDS:"ip api, ip to location api, geoip api, ip to country api",REACT_APP_DESCRIPTION:"IP to location REST API using JSON, XML and Yaml supporting PHP, JavaScript, Node, Java, and more.",REACT_APP_HOME_CALL2ACTION:"Get your [LIGHT]API Key[/LIGHT] now",REACT_APP_DEV_BASE_WEB_URL:"http://localhost:8080",REACT_APP_DEV_BASE_API_URL:"http://0.0.0.0:8080",REACT_APP_BASE_WEB_URL:"https://ip2loc.com",REACT_APP_BASE_API_URL:"https://api.ip2loc.com",REACT_APP_COLOR:"#355691",REACT_APP_BACKGROUND_COLOR:"#00a8ff",REACT_APP_BACKGROUND_IMAGE:"/img/world.svg"}).REACT_APP_IMPRINT_EMAIL;return s.a.createElement("div",{className:"d-flex flex-column min-vh-100"},s.a.createElement(q,null),s.a.createElement("main",{className:"flex-fill nav-padding"},s.a.createElement("div",{className:"page-hero"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"page-hero-content"},s.a.createElement("span",{className:"page-badge"},"Legal"),s.a.createElement("h1",{className:"page-title"},"Privacy Policy"),s.a.createElement("p",{className:"page-subtitle"},"How we collect, use, and protect your personal information.")))),s.a.createElement("div",{className:"page-content"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"page-content-card"},s.a.createElement("div",{className:"page-meta"},"Last updated: ","2025-12-19"),s.a.createElement("p",null,"The protection of your personal data is important to us. This privacy policy describes, at a high level, how we process personal data when you visit our website and use our services."),s.a.createElement("h2",null,"Controller & Contact"),s.a.createElement("p",null,"Controller information is available in our ",s.a.createElement("a",{href:"/imprint"},"Imprint"),". For privacy-related questions, contact us via the ",s.a.createElement("a",{href:"/contact"},"contact form"),e?s.a.createElement(s.a.Fragment,null," or at ",s.a.createElement("a",{href:"mailto:".concat(e)},e)):"","."),s.a.createElement("h2",null,"What We Process"),s.a.createElement("p",null,"Depending on how you use our services, we may process:"),s.a.createElement("ul",null,s.a.createElement("li",null,"Account and contact data (e.g. email address) when you create an account or contact us"),s.a.createElement("li",null,"Technical data (e.g. IP address, device/browser information) required to deliver and secure the website"),s.a.createElement("li",null,"Usage and security signals to prevent abuse and ensure reliability"),s.a.createElement("li",null,"Billing-related data when you subscribe to a paid plan")),s.a.createElement("p",null,"We aim to minimize data and retain it only as long as needed for the respective purpose or as required by law."),s.a.createElement("h2",null,"Cookies & Consent"),s.a.createElement("p",null,"We use cookies and similar technologies for essential functionality (e.g. authentication/session), and\u2014depending on your choice\u2014for analytics and marketing."),s.a.createElement("p",null,"Your consent choice is stored so we can remember your preferences on subsequent visits."),s.a.createElement("p",null,"You can change or revoke consent in your browser settings (e.g. by deleting stored consent data) and by adjusting cookie settings. Disabling certain cookies may limit functionality."),s.a.createElement("h2",null,"Tag Management & Analytics"),s.a.createElement("p",null,"We may use Google Tag Manager to manage website tags. Analytics measurement is performed only if you consent to analytics cookies (depending on our current tag configuration)."),s.a.createElement("p",null,"Where possible, we configure analytics to reduce personal data and avoid collecting unnecessary identifiers."),s.a.createElement("h2",null,"Payments"),s.a.createElement("p",null,"For payments we use Stripe as a payment service provider. Stripe processes payment information to complete transactions. Refer to Stripe\u2019s privacy policy for details:"," ",s.a.createElement("a",{href:"https://stripe.com/privacy",target:"_blank",rel:"noopener noreferrer"},"stripe.com/privacy"),"."),s.a.createElement("h2",null,"Abuse Prevention"),s.a.createElement("p",null,"To protect our forms and services against abuse, we may use automated abuse-prevention mechanisms (e.g. CAPTCHA-like services) which process technical signals to distinguish humans from bots."),s.a.createElement("h2",null,"Your Rights"),s.a.createElement("p",null,"In principle, you have the following rights regarding your stored data:"),s.a.createElement("ul",null,s.a.createElement("li",null,"Right to information"),s.a.createElement("li",null,"Right to correction"),s.a.createElement("li",null,"Right to deletion"),s.a.createElement("li",null,"Right to restriction"),s.a.createElement("li",null,"Right to data portability"),s.a.createElement("li",null,"Right to revocation and objection")),s.a.createElement("p",null,"If you believe that the processing of your data violates data protection law, you can contact us via ",s.a.createElement("a",{href:"/contact"},"contact")," and/or lodge a complaint with your competent supervisory authority."),s.a.createElement("h2",null,"More Transparency"),s.a.createElement("p",null,"For live uptime and historical availability, see ",s.a.createElement("a",{href:"/system-status"},"System Status"),". For information about data sourcing and update cadence, see ",s.a.createElement("a",{href:"/company"},"Company"),"."))))),s.a.createElement(Oe,null))}}]),a}(n.Component),Na=function(e){function a(e){var t;return Object(c.a)(this,a),t=Object(i.a)(this,Object(o.a)(a).call(this,e)),g(),t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){document.title="Company - ip2loc"}},{key:"render",value:function(){return s.a.createElement("div",{className:"d-flex flex-column min-vh-100"},s.a.createElement(q,null),s.a.createElement("main",{className:"flex-fill nav-padding"},s.a.createElement("div",{className:"page-hero"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"page-hero-content"},s.a.createElement("span",{className:"page-badge"},"Company"),s.a.createElement("h1",{className:"page-title"},"About ","ip2loc"),s.a.createElement("p",{className:"page-subtitle"},"Transparency about how we operate, where our data comes from, and how updates work.")))),s.a.createElement("div",{className:"page-content"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"page-content-card"},s.a.createElement("div",{className:"page-meta"},"Last updated: ","2025-12-19"),s.a.createElement("h2",null,"At a Glance"),s.a.createElement("ul",null,s.a.createElement("li",null,"Operator details: see our ",s.a.createElement("a",{href:"/imprint"},"Imprint")),s.a.createElement("li",null,"Privacy & data processing: see our ",s.a.createElement("a",{href:"/dataprotection"},"Privacy Policy")),s.a.createElement("li",null,"Live uptime & recent history: ",s.a.createElement("a",{href:"/system-status"},"System Status")),s.a.createElement("li",null,"Use case examples: ",s.a.createElement("a",{href:"/#use-cases"},"Homepage section"))),s.a.createElement("h2",null,"What We Do"),s.a.createElement("p",null,"ip2loc"," provides an IP geolocation API that helps developers enrich IP addresses with location and network context (e.g. country, city, timezone, ASN/ISP where available)."),s.a.createElement("p",null,"ip2loc"," is designed as a lightweight, developer-friendly service for IP enrichment and contextual signals, not as a sole source of truth for legal decisions."),s.a.createElement("h2",null,"Data Sources (High-Level)"),s.a.createElement("p",null,"Our dataset is built from multiple sources. Depending on the data field, we combine and reconcile information from public registries and other upstream sources. We continuously work to improve coverage and consistency."),s.a.createElement("h2",null,"Update Cadence & TTL"),s.a.createElement("p",null,"Update frequency depends on the data type and the underlying source: some inputs change frequently and can be updated multiple times per day, others update daily, and some are naturally more stable. In addition, certain lookups may be cached for performance and protected by a time-to-live (TTL), so changes may take some time to propagate end-to-end."),s.a.createElement("p",null,"If you need field-level details for your specific use case (e.g. compliance, audits, or procurement), contact us via the ",s.a.createElement("a",{href:"/contact"},"contact form"),"."),s.a.createElement("h2",null,"Transparency"),s.a.createElement("p",null,"We publish operational status and uptime history on ",s.a.createElement("a",{href:"/system-status"},"System Status"),". For planned maintenance or incidents, check that page for the latest updates."),s.a.createElement("div",{className:"docs-cta-box",style:{marginTop:"36px"}},s.a.createElement("h3",null,"Questions or enterprise requirements?"),s.a.createElement("p",null,"Tell us what you need (volume, fields, compliance) and we\u2019ll help you evaluate fit."),s.a.createElement("a",{href:"/enterprise",className:"docs-cta-btn"},"Contact Sales \u2192")))))),s.a.createElement(Oe,null))}}]),a}(n.Component);var _a={"fraud-prevention":{title:"Fraud Prevention",subtitle:"Reduce fraud risk by adding IP context as a lightweight signal at login and checkout.",illustration:"/img/usecases/fraud-prevention.svg",icon:"shield-alt",defaultInclude:"ip,country_alpha_2,country_name,city,time_zone,is_proxy,is_tor",what:["Catch suspicious sign-ins (unexpected country/region or unusual timezone)","Add consistency checks (e.g. compare with a user\u2019s typical region and billing country where applicable)","Step up verification when risk is high (2FA, manual review) instead of hard-blocking legitimate users"],steps:["Resolve the user\u2019s IP during login or checkout","Compare results against expected context (profile, billing country, past logins)","Apply simple rules or a risk score (start small, iterate)","Trigger step-up actions and log events for auditability"],fields:["country, region, city","timezone","latitude/longitude (optional, for distance/velocity heuristics)","network context (e.g. ASN/ISP where available)","security indicators (e.g. TOR/VPN/proxy signals where available)"],tips:["Treat geolocation as probabilistic\u2014use it as one signal among many.","Expect lower reliability at city-level for mobile networks, VPNs, and large corporate NATs."],exampleResponse:[{key:"country_alpha_2",value:"DE",type:"string"},{key:"country_name",value:"Germany",type:"string"},{key:"city",value:"Nuremberg",type:"string"},{key:"time_zone",value:"Europe/Berlin",type:"string"},{key:"is_proxy",value:"false",type:"boolean"},{key:"is_tor",value:"false",type:"boolean"}],scenarios:[{title:"Stop risky payments before chargebacks",challenge:"Orders that don\u2019t match expected user context can be higher risk (especially when location and network signals look unusual).",actions:["Compare country/region against billing country (where applicable)","If signals are suspicious, step up verification (3DS, manual review) instead of auto-decline","Log the signals you used so rules can be tuned over time"],include:"country_alpha_2,country_name,city,time_zone,is_proxy,is_tor"},{title:"Secure logins and reduce account takeovers",challenge:"Attackers often test credentials from unfamiliar locations or anonymous networks.",actions:["Detect logins from new country/region or unexpected timezone for the account","Trigger 2FA when signals indicate higher risk","Rate-limit suspicious patterns and monitor repeated attempts"],include:"ip,country_alpha_2,city,time_zone,is_proxy,is_tor"},{title:"Protect signup and checkout forms from abuse",challenge:"Abuse and automation can increase support load and degrade conversion.",actions:["Use IP context to decide when to show CAPTCHA / additional verification","Block obvious TOR/proxy traffic only if your product can tolerate false positives","Keep user experience smooth for low-risk traffic"],include:"country_alpha_2,country_name,is_proxy,is_tor"}],faqs:[{q:"Should I block users based on IP location?",a:"In most cases, treat IP geolocation as a signal. Prefer step-up verification (2FA/CAPTCHA/manual review) over hard-blocking to avoid false positives."},{q:"How reliable is city-level geolocation for fraud decisions?",a:"City-level can be less reliable for mobile networks, VPNs, and large corporate NATs. Country and timezone tend to be more stable signals."},{q:"How do I keep this privacy-friendly?",a:"Store only what you need (prefer aggregated metrics over raw IPs). Document your purpose and align with your privacy policy and consent settings."}],nextLinks:[{label:"Read API docs",href:"/documentation"},{label:"Check live status",href:"/system-status"}]},"content-personalization":{title:"Content Personalization",subtitle:"Reduce friction by setting smart defaults for language, timezone, and regional content.",illustration:"/img/usecases/content-personalization.svg",icon:"sliders-h",defaultInclude:"country_alpha_2,country_name,city,time_zone,currency_code,country_dialing_code",what:["Show region-appropriate defaults from the first visit","Reduce onboarding form fields by auto-filling location context","Improve relevance without relying on persistent personal profiles"],steps:["Resolve the visitor\u2019s IP on first visit or during signup","Set defaults (timezone, region, content variant) and always provide an override","Cache results for performance and refresh when needed (TTL-based)"],fields:["country, region, city","timezone","latitude/longitude (optional, for nearby location experiences)"],tips:["Avoid forced redirects\u2014prefer a suggestion banner or preselected defaults.","Always store the user\u2019s explicit preference when they override defaults."],exampleResponse:[{key:"country_alpha_2",value:"DE",type:"string"},{key:"country_name",value:"Germany",type:"string"},{key:"time_zone",value:"Europe/Berlin",type:"string"},{key:"currency_code",value:"EUR",type:"string"},{key:"country_dialing_code",value:"49",type:"string"}],scenarios:[{title:"Smart forms with fewer fields",challenge:"Long forms increase drop-off. Users abandon when they have to type obvious location details.",actions:["Pre-fill country and dialing code where appropriate","Offer a manual override and remember it once chosen","Use timezone to format dates and scheduling defaults"],include:"country_alpha_2,country_name,country_dialing_code,time_zone,city"},{title:"Local currency and region-aware defaults",challenge:"A one-size-fits-all experience makes international users work harder to understand pricing and content.",actions:["Default currency display and locale settings based on IP context","Personalize content variants (copy, testimonials, docs) by region","Avoid forced redirects\u2014use suggestions instead"],include:"country_alpha_2,country_name,currency_code,time_zone"},{title:"Timezone-aware experiences",challenge:"Scheduling and reporting feels broken when default timezone is wrong.",actions:["Default to local timezone for dashboards and reports","Use timezone to schedule emails and maintenance windows","Let users change timezone and store their preference"],include:"time_zone,country_alpha_2"}],faqs:[{q:"Should I redirect users based on country automatically?",a:"Prefer a suggestion banner or a preselected default. Forced redirects can feel jarring and can be wrong with VPNs or travelers."},{q:"What should I store?",a:"Store the user\u2019s explicit preference (language/currency) when they choose it. Avoid storing raw IPs unless you have a clear need."}],nextLinks:[{label:"Read API docs",href:"/documentation"},{label:"More use cases",href:"/#use-cases"}]},"targeted-advertising":{title:"Targeted Advertising",subtitle:"Localize landing pages and measure outcomes by region (where permitted by law and your policies).",illustration:"/img/usecases/targeted-advertising.svg",icon:"bullseye",defaultInclude:"country_alpha_2,country_name,country_eu_member,continent_code,city,time_zone",what:["Route visitors to region-specific landing pages and offers","Apply geo-based campaign rules only where permitted (and where consent requirements are met)","Measure performance by country/region with aggregated reporting"],steps:["Resolve IP at page load (server-side or edge where possible)","Select a localized variant (copy, currency defaults, compliance banner, etc.)","Store only what you need\u2014prefer aggregated metrics over raw IP storage"],fields:["country, region, city","continent / EU membership (where available)","timezone (optional, for scheduling/analytics segmentation)"],tips:["Use geolocation for localization and segmentation\u2014not for identity or sensitive decisions.","Align with your consent and privacy policies before enabling marketing tags."],exampleResponse:[{key:"country_alpha_2",value:"DE",type:"string"},{key:"country_name",value:"Germany",type:"string"},{key:"country_eu_member",value:"true",type:"boolean"},{key:"continent_code",value:"EU",type:"string"},{key:"time_zone",value:"Europe/Berlin",type:"string"}],scenarios:[{title:"Localized landing pages by region",challenge:"Users convert better when the first page matches their context (language, compliance, region-specific copy).",actions:["Select a localized variant at page load (server-side where possible)","Keep an explicit locale switcher and remember the choice","Use aggregated reporting to compare regions"],include:"country_alpha_2,country_name,continent_code,time_zone"},{title:"Compliance-aware flows",challenge:"Different regions can have different consent/compliance requirements.",actions:["Use EU membership as one signal for showing GDPR-related UI (not as legal advice)","Prefer user consent and explicit settings over assumptions","Keep consent state separate from geolocation logic"],include:"country_eu_member,country_alpha_2,country_name"},{title:"Geo segmentation for marketing analytics",challenge:"You want region-level insights without building a complex pipeline.",actions:["Attach country/region tags to events (aggregated where possible)","Measure conversion by geography to guide campaign budgets","Avoid storing raw IPs for longer than needed"],include:"country_alpha_2,country_name,city"}],faqs:[{q:"Can IP geolocation be wrong for ad targeting?",a:"Yes\u2014VPNs, proxies, and mobile carrier routing can affect results. Use it for segmentation and localization, not as a strict identity signal."},{q:"Do I need consent for geolocation-based personalization?",a:"Requirements depend on what you do with the data and your jurisdiction. Align implementation with your privacy policy and consent settings."}],nextLinks:[{label:"Read API docs",href:"/documentation"},{label:"Privacy policy",href:"/dataprotection"}]},"website-localization":{title:"Website Localization",subtitle:"Offer the right language and currency from the first page view\u2014without asking the user.",illustration:"/img/usecases/website-localization.svg",icon:"globe",defaultInclude:"country_alpha_2,country_name,country_emoji,currency_code,time_zone,city",what:["Set locale and currency defaults automatically","Offer regional domains or content variants where it improves UX","Make international visitors feel \u201cat home\u201d while keeping control in their hands"],steps:["Resolve IP on first visit","Apply non-destructive defaults (language, currency) and show a switcher","Persist the user\u2019s choice once they select a preference"],fields:["country","currency (where available)","timezone","postal code (where available)"],tips:["Prefer a gentle suggestion over forced redirects.","Provide a clear language/currency switcher and remember the selection."],exampleResponse:[{key:"country_alpha_2",value:"DE",type:"string"},{key:"country_name",value:"Germany",type:"string"},{key:"country_emoji",value:"\ud83c\udde9\ud83c\uddea",type:"string"},{key:"currency_code",value:"EUR",type:"string"},{key:"time_zone",value:"Europe/Berlin",type:"string"}],scenarios:[{title:"Language and currency defaults",challenge:"International visitors bounce when content and prices feel unfamiliar.",actions:["Default currency display and locale using IP context","Show a language/currency switcher and remember the user\u2019s selection","Avoid forced redirects; use a gentle suggestion instead"],include:"country_alpha_2,country_name,country_emoji,currency_code,time_zone"},{title:"Region-specific content and docs",challenge:"Different regions may need different messaging, FAQs, and compliance copy.",actions:["Serve region-specific content blocks (shipping, taxes, support hours)","Keep it reversible and user-controlled","Measure impact using aggregated geo metrics"],include:"country_alpha_2,country_name,city,time_zone"}],faqs:[{q:"Is city-level accurate enough for localization?",a:"City-level accuracy varies. For most localization, country + timezone are usually sufficient, with a user-controlled override."},{q:"What\u2019s the safest UX pattern?",a:"Preselect defaults and allow a one-click override. Remember the user\u2019s explicit choice."}],nextLinks:[{label:"Read API docs",href:"/documentation"},{label:"More use cases",href:"/#use-cases"}]}};var Aa=function(e){function a(e){var t;return Object(c.a)(this,a),t=Object(i.a)(this,Object(o.a)(a).call(this,e)),g(),t.state={copiedId:null},t.copyToClipboard=t.copyToClipboard.bind(Object(f.a)(t)),t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){var e=this.props.match&&this.props.match.params?this.props.match.params.slug:null,a=e?_a[e]:null;document.title=(a&&a.title?a.title:"Use Case")+" - ip2loc"}},{key:"copyToClipboard",value:function(e,a){var t=this;navigator.clipboard&&"function"===typeof navigator.clipboard.writeText&&navigator.clipboard.writeText(e).then((function(){t.setState({copiedId:a}),setTimeout((function(){return t.setState({copiedId:null})}),2e3)}))}},{key:"render",value:function(){var e=this,a=this.props.match&&this.props.match.params?this.props.match.params.slug:null,t=a?_a[a]:null,n=Object.entries(_a).filter((function(e){return Object(Ke.a)(e,1)[0]!==a})).map((function(e){var a=Object(Ke.a)(e,2),t=a[0],n=a[1];return{slug:t,title:n.title,icon:n.icon||"bolt"}}));return t?s.a.createElement("div",{className:"d-flex flex-column min-vh-100"},s.a.createElement(q,null),s.a.createElement("main",{className:"flex-fill nav-padding"},s.a.createElement("div",{className:"page-hero"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"page-hero-content"},s.a.createElement("span",{className:"page-badge"},"Use Case"),s.a.createElement("h1",{className:"page-title"},t.title),s.a.createElement("p",{className:"page-subtitle"},t.subtitle),s.a.createElement("div",{className:"hero-cta usecase-hero-cta"},s.a.createElement("a",{href:"/login",className:"btn btn-primary btn-hero-primary"},"Get an API key \u2192"),s.a.createElement("a",{href:"/documentation",className:"btn btn-outline-secondary btn-hero-secondary"},"View docs"),s.a.createElement("a",{href:"/system-status",className:"btn btn-outline-secondary btn-hero-secondary"},"Live status")),t.illustration?s.a.createElement("img",{className:"page-hero-illustration",src:t.illustration,alt:"".concat(t.title," illustration"),loading:"lazy"}):null))),s.a.createElement("div",{className:"page-content"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"page-content-card"},s.a.createElement("div",{className:"page-meta"},s.a.createElement("a",{href:"/#use-cases"},"Use cases")," \xb7 ",s.a.createElement("a",{href:"/documentation"},"Documentation")),s.a.createElement("h2",null,"Key Building Blocks"),s.a.createElement("div",{className:"usecase-pill-grid"},(t.fields||[]).map((function(e){return s.a.createElement("div",{className:"usecase-pill",key:e},s.a.createElement(b.a,{icon:"check-circle"}),s.a.createElement("span",null,e))}))),s.a.createElement("h2",null,"How This Helps"),s.a.createElement("ul",null,t.what.map((function(e){return s.a.createElement("li",{key:e},e)}))),Array.isArray(t.scenarios)&&t.scenarios.length>0&&s.a.createElement(s.a.Fragment,null,s.a.createElement("h2",null,"Common Scenarios"),s.a.createElement("div",{className:"usecase-scenarios"},t.scenarios.map((function(n,l){var r="".concat(a,"-scenario-").concat(l),c=n.include||t.defaultInclude,i="".concat("https://api.ip2loc.com","/YOUR_API_KEY/detect?include=").concat(c);return s.a.createElement("div",{className:"docs-endpoint-card usecase-scenario-card",key:r},s.a.createElement("div",{className:"usecase-scenario-head"},s.a.createElement("div",{className:"usecase-scenario-icon"},s.a.createElement(b.a,{icon:t.icon||"bolt"})),s.a.createElement("div",{className:"usecase-scenario-title"},n.title)),n.challenge?s.a.createElement("p",{className:"usecase-muted"},s.a.createElement("span",{className:"usecase-label"},"Challenge:")," ",n.challenge):null,Array.isArray(n.actions)&&n.actions.length>0?s.a.createElement(s.a.Fragment,null,s.a.createElement("div",{className:"usecase-label"},"Approach"),s.a.createElement("ul",{className:"usecase-tight-list"},n.actions.map((function(e){return s.a.createElement("li",{key:e},e)})))):null,s.a.createElement("div",{className:"endpoint-header",style:{marginTop:"16px"}},s.a.createElement("span",{className:"endpoint-method",style:{background:"#0ea5e9"}},"GET"),s.a.createElement("span",{className:"endpoint-label"},"Recommended request")),s.a.createElement("div",{className:"endpoint-url-row"},s.a.createElement("code",{className:"endpoint-url"},i),s.a.createElement("button",{className:"endpoint-copy ".concat(e.state.copiedId===r?"copied":""),onClick:function(){return e.copyToClipboard(i,r)}},e.state.copiedId===r?"\u2713":"Copy")),s.a.createElement("p",{className:"endpoint-desc"},"Tip: use ",s.a.createElement("code",null,"include")," to keep payloads small and fast."))})))),Array.isArray(t.steps)&&t.steps.length>0&&s.a.createElement(s.a.Fragment,null,s.a.createElement("h2",null,"Suggested Implementation"),s.a.createElement("ol",null,t.steps.map((function(e){return s.a.createElement("li",{key:e},e)})))),s.a.createElement("h2",null,"See It in Action"),s.a.createElement("p",null,"Copy a ready-to-run request and test with your own API key. For more examples and responses, see the"," ",s.a.createElement("a",{href:"/documentation#endpoints"},"documentation"),"."),s.a.createElement("div",{className:"docs-endpoint-card"},s.a.createElement("div",{className:"endpoint-header"},s.a.createElement("span",{className:"endpoint-method"},"GET"),s.a.createElement("span",{className:"endpoint-label"},"Detect current IP (selected fields)")),s.a.createElement("div",{className:"endpoint-url-row"},s.a.createElement("code",{className:"endpoint-url"},"".concat("https://api.ip2loc.com","/YOUR_API_KEY/detect?include=").concat(t.defaultInclude)),s.a.createElement("button",{className:"endpoint-copy ".concat(this.state.copiedId==="".concat(a,"-see-it")?"copied":""),onClick:function(){return e.copyToClipboard("".concat("https://api.ip2loc.com","/YOUR_API_KEY/detect?include=").concat(t.defaultInclude),"".concat(a,"-see-it"))}},this.state.copiedId==="".concat(a,"-see-it")?"\u2713":"Copy")),s.a.createElement("p",{className:"endpoint-desc"},"Prefer proof over promises: check ",s.a.createElement("a",{href:"/system-status"},"live uptime")," and recent history.")),s.a.createElement("h2",null,"Example Output (Selected)"),s.a.createElement("div",{className:"use-case-code"},s.a.createElement("code",null,"{",t.exampleResponse.map((function(e,a){return s.a.createElement("div",{key:e.key},s.a.createElement("span",{className:"code-key"},'"',e.key,'"'),": ",function(e){return"boolean"===e.type||"number"===e.type?s.a.createElement("span",{className:"code-boolean"},e.value):s.a.createElement("span",{className:"code-string"},'"',e.value,'"')}(e),a===t.exampleResponse.length-1?"":",")})),"}")),Array.isArray(t.tips)&&t.tips.length>0&&s.a.createElement(s.a.Fragment,null,s.a.createElement("h2",null,"Notes"),s.a.createElement("ul",null,t.tips.map((function(e){return s.a.createElement("li",{key:e},e)})))),Array.isArray(t.faqs)&&t.faqs.length>0&&s.a.createElement(s.a.Fragment,null,s.a.createElement("h2",null,"FAQ"),s.a.createElement("div",{className:"usecase-faq"},t.faqs.map((function(e){return s.a.createElement("details",{className:"usecase-faq-item",key:e.q},s.a.createElement("summary",null,e.q),s.a.createElement("div",{className:"usecase-faq-body"},s.a.createElement("p",null,e.a)))})))),n.length>0&&s.a.createElement(s.a.Fragment,null,s.a.createElement("h2",null,"Related Use Cases"),s.a.createElement("div",{className:"usecase-related"},n.map((function(e){return s.a.createElement("a",{className:"usecase-related-card",href:"/use-cases/".concat(e.slug),key:e.slug},s.a.createElement("div",{className:"usecase-related-icon"},s.a.createElement(b.a,{icon:e.icon})),s.a.createElement("div",{className:"usecase-related-title"},e.title))})))),s.a.createElement("h2",null,"Next Steps"),s.a.createElement("ul",null,t.nextLinks.map((function(e){return s.a.createElement("li",{key:e.href},s.a.createElement("a",{href:e.href},e.label))})),s.a.createElement("li",null,s.a.createElement("a",{href:"/contact"},"Ask about enterprise requirements"))),s.a.createElement("div",{className:"docs-cta-box",style:{marginTop:"36px"}},s.a.createElement("h3",null,"Build and validate in minutes"),s.a.createElement("p",null,"Get an API key, integrate quickly, and validate fit with real requests."),s.a.createElement("a",{href:"/login",className:"docs-cta-btn"},"Get an API Key \u2192"),s.a.createElement("div",{style:{marginTop:"14px"}},s.a.createElement("a",{href:"/system-status",style:{color:"rgba(255,255,255,0.95)",fontWeight:500,textDecoration:"underline"}},"See live status"),s.a.createElement("span",{style:{color:"rgba(255,255,255,0.85)"}}," \xb7 "),s.a.createElement("a",{href:"/enterprise",style:{color:"rgba(255,255,255,0.95)",fontWeight:500,textDecoration:"underline"}},"Talk to sales"))))))),s.a.createElement(Oe,null)):s.a.createElement("div",{className:"d-flex flex-column min-vh-100"},s.a.createElement(q,null),s.a.createElement("main",{className:"flex-fill nav-padding"},s.a.createElement("div",{className:"page-hero"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"page-hero-content"},s.a.createElement("span",{className:"page-badge"},"Use Cases"),s.a.createElement("h1",{className:"page-title"},"Use case not found"),s.a.createElement("p",{className:"page-subtitle"},"This page doesn\u2019t exist. See the use cases on the homepage.")))),s.a.createElement("div",{className:"page-content"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"page-content-card"},s.a.createElement("a",{href:"/#use-cases"},"Back to use cases \u2192"))))),s.a.createElement(Oe,null))}}]),a}(n.Component),Pa=t(93),Ca=function(e){function a(e){var t;return Object(c.a)(this,a),t=Object(i.a)(this,Object(o.a)(a).call(this,e)),g(),t.state={planTitle:"",baseWebUrl:"https://ip2loc.com"},t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){document.title="Registration Success",this.fetchPlan()}},{key:"fetchPlan",value:function(){var e=Object(la.a)(sa.a.mark((function e(){var a,t,n,s;return sa.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=E.a.parse(this.props.location.search),t="".concat(this.state.baseWebUrl,"/user/plans/").concat(a.plan),e.prev=2,e.next=5,fetch(t,{method:"POST",headers:{"Content-Type":"application/json"}});case 5:if((n=e.sent).ok){e.next=8;break}return e.abrupt("return");case 8:return e.next=10,n.json();case 10:(s=e.sent).success&&this.setState({planTitle:s.plan.title}),e.next=17;break;case 14:e.prev=14,e.t0=e.catch(2),console.error("Fetch error:",e.t0);case 17:case"end":return e.stop()}}),e,this,[[2,14]])})));return function(){return e.apply(this,arguments)}}()}]),Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("div",{className:"d-flex flex-column min-vh-100"},s.a.createElement(q,null),s.a.createElement("main",{className:"flex-fill"},s.a.createElement("div",{className:"success-page"},s.a.createElement(y.a,null,s.a.createElement("div",{id:"registrationSuccess",className:"success-card"},s.a.createElement("div",{className:"success-icon"},s.a.createElement(b.a,{icon:"check-circle"})),s.a.createElement("h1",null,"Registration Successful"),s.a.createElement("p",{className:"success-message"},"You have successfully signed up for the ",s.a.createElement("strong",null,this.state.planTitle)," plan."),s.a.createElement("div",{className:"success-info"},s.a.createElement(b.a,{icon:"envelope",className:"info-icon"}),s.a.createElement("p",null,"Please check your email inbox for an activation link. If you haven't received the email within 5 minutes, please check your spam folder or"," ",s.a.createElement("a",{href:this.state.baseWebUrl+"/contact"},"contact us")," for assistance.")),s.a.createElement("div",{className:"success-actions"},s.a.createElement("a",{href:"/dashboard",className:"btn-primary-custom"},s.a.createElement(b.a,{icon:"tachometer-alt",className:"mr-2"}),"Go to Dashboard")))))),s.a.createElement(Oe,null))}}]),a}(n.Component),Sa=function(e){function a(e){var t;Object(c.a)(this,a),t=Object(i.a)(this,Object(o.a)(a).call(this,e)),g();var n=e.cookies;return t.state={gtmId:"GTM-PNZNW4R",loading:!1,name:"",apiKey:"",planKey:"",planTitle:"",quantity:0,period:"",renews_at:"",subscriptions_status:"",baseWebUrl:"https://ip2loc.com",baseApiUrl:"https://api.ip2loc.com",session:void 0!==n.get("session"),plans:[]},t.handleChangePlan=t.handleChangePlan.bind(Object(f.a)(t)),t.state.session||t.props.history.push("/"),t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"handleChangePlan",value:function(e,a){"v2"!==e.type||a?this.props.history.push("/changeplan?plan=".concat(e.key)):this.props.history.push("/checkout?plan=".concat(e.key))}},{key:"componentDidMount",value:function(){document.title="Subscription";var e=this.state.baseWebUrl+"/user/subscription";this.fetch(e)}},{key:"fetch",value:function(e){function a(a){return e.apply(this,arguments)}return a.toString=function(){return e.toString()},a}((function(e){var a=this;this.setState({loading:!0}),fetch(e).then((function(e){return e.json()})).then((function(e){e.success&&(a.setState({name:e.name}),a.setState({planKey:e.planKey}),a.setState({planTitle:e.planTitle}),a.setState({quantity:e.limit}),a.setState({renews_at:e.renews_at}),a.setState({subscriptions_status:e.subscriptions_status}),a.setState({plans:e.plans}))})).catch((function(e){console.error(e)})).finally((function(){return a.setState({loading:!1})}))}))}]),Object(m.a)(a,[{key:"getButtonText",value:function(e){return this.state.planKey===e.key?this.state.renews_at||"Current Plan":Number(this.state.quantity)=1?"primary":"secondary"),id:"button"+a.key},e.getButtonText(a)))}))))),s.a.createElement("div",{className:"dashboard-card enterprise-cta-card"},s.a.createElement("div",{className:"enterprise-cta-content"},s.a.createElement("div",{className:"enterprise-cta-text"},s.a.createElement("h4",null,"Need more requests?"),s.a.createElement("p",null,"Contact us for custom enterprise solutions with dedicated support and volume pricing.")),s.a.createElement("button",{onClick:function(){return e.props.history.push("/enterprise")},className:"enterprise-cta-btn"},s.a.createElement(b.a,{icon:"building",className:"mr-2"}),"Contact us"))))))),s.a.createElement(Oe,null))}}]),a}(n.Component),ka=Object(p.g)(Object(z.b)(Sa)),Ta=function(e){function a(e){var t;Object(c.a)(this,a),t=Object(i.a)(this,Object(o.a)(a).call(this,e)),g();var n=e.cookies;return t.state={gtmId:"GTM-PNZNW4R",loading:!1,name:"",paymentMethod:"",invoices:null,baseWebUrl:"https://ip2loc.com",baseApiUrl:"https://api.ip2loc.com",session:void 0!==n.get("session")},t.state.session||t.props.history.push("/"),t.handleRequestUpdateUrl=t.handleRequestUpdateUrl.bind(Object(f.a)(t)),t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){document.title="Payment";var e=this.state.baseWebUrl+"/user/payment";this.fetch(e)}},{key:"fetch",value:function(e){function a(a){return e.apply(this,arguments)}return a.toString=function(){return e.toString()},a}((function(e){var a=this;this.setState({loading:!0}),fetch(e).then((function(e){return e.json()})).then((function(e){e.success&&(a.setState({apiKey:e.apiKey}),a.setState({name:e.name}),a.setState({usage:e.usage}),a.setState({email:e.email}),a.setState({period:e.period}),a.setState({invoices:e.invoices}),a.setState({paymentMethod:e.payment_method}))})).catch((function(e){console.error(e)})).finally((function(){return a.setState({loading:!1})}))}))},{key:"handleRequestUpdateUrl",value:function(){var e=this,a=this.state.baseWebUrl+"/user/paymentMethodUpdate";fetch(a,{method:"get",headers:{Accept:"application/json"}}).then((function(e){return e.json()})).then((function(a){a.success?e.props.history.push(a.url):console.log(a.body)})).catch((function(e){return console.error(e)})).finally((function(){return e.setState({loading:!1})}))}}]),Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("div",{className:"d-flex flex-column min-vh-100"},s.a.createElement(q,{loggedInOnly:!0}),s.a.createElement("main",{className:"flex-fill dashboard-main"},s.a.createElement("div",{className:"dashboard-header"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"dashboard-header-content"},s.a.createElement("div",{className:"dashboard-welcome"},s.a.createElement("h1",null,"Payment"),s.a.createElement("p",null,"Manage your payment methods and view invoices."))))),s.a.createElement(y.a,{className:"dashboard-container"},s.a.createElement(U.a,null,s.a.createElement(x.a,{lg:"3",md:"4",className:"mb-4"},s.a.createElement(pa,{selected:"payment"})),s.a.createElement(x.a,{lg:"9",md:"8"},s.a.createElement("div",{className:"dashboard-card"},s.a.createElement("div",{className:"dashboard-card-header"},s.a.createElement("div",{className:"card-icon"},s.a.createElement(b.a,{icon:"credit-card"})),s.a.createElement("h3",null,"Payment Method")),s.a.createElement("div",{className:"dashboard-card-body"},s.a.createElement("div",{className:"payment-method-display"},s.a.createElement("div",{className:"payment-method-info"},s.a.createElement("div",{className:"payment-method-icon"},s.a.createElement(b.a,{icon:"credit-card"})),s.a.createElement("div",{className:"payment-method-details"},s.a.createElement("span",{className:"payment-method-label"},"Current Method"),s.a.createElement("span",{id:"paymentMethod",className:"payment-method-value"},this.state.paymentMethod||"No payment method on file"))),s.a.createElement("button",{id:"paymentChangeButton",className:"update-payment-btn",onClick:this.handleRequestUpdateUrl},s.a.createElement(b.a,{icon:"edit",className:"mr-2"}),"Update")))),s.a.createElement("div",{className:"dashboard-card"},s.a.createElement("div",{className:"dashboard-card-header"},s.a.createElement("div",{className:"card-icon"},s.a.createElement(b.a,{icon:"file-invoice"})),s.a.createElement("h3",null,"Invoices")),s.a.createElement("div",{className:"dashboard-card-body"},this.state.invoices&&this.state.invoices.length>0?s.a.createElement("div",{className:"invoices-list"},this.state.invoices.map((function(e,a){return s.a.createElement("a",{key:a,href:e.link,className:"invoice-item",target:"_blank",rel:"noopener noreferrer"},s.a.createElement("div",{className:"invoice-item-left"},s.a.createElement(b.a,{icon:"file-pdf",className:"invoice-icon"}),s.a.createElement("span",{className:"invoice-name"},e.name)),s.a.createElement(b.a,{icon:"external-link-alt",className:"link-icon"}))}))):s.a.createElement("div",{className:"no-invoices"},s.a.createElement(b.a,{icon:"file-invoice",className:"no-invoices-icon"}),s.a.createElement("p",null,"No invoices available yet.")))),s.a.createElement("div",{className:"dashboard-card help-card"},s.a.createElement("div",{className:"help-card-content"},s.a.createElement(b.a,{icon:"question-circle",className:"help-icon"}),s.a.createElement("div",{className:"help-text"},s.a.createElement("h4",null,"Need help with billing?"),s.a.createElement("p",null,"Contact our support team for any billing-related questions.")),s.a.createElement("a",{href:"/contact",className:"help-link"},s.a.createElement(b.a,{icon:"envelope",className:"mr-2"}),"Contact Support"))))))),s.a.createElement(Oe,null))}}]),a}(n.Component),Oa=Object(p.g)(Object(z.b)(Ta)),Ia=function(e){function a(e){var t;Object(c.a)(this,a),t=Object(i.a)(this,Object(o.a)(a).call(this,e)),g(),console.log("--\x3e");var n=E.a.parse(t.props.location.search);console.log(n.plan);var s="undefined"!==typeof n.plan&&null!=n.plan?n.plan:"";return t.state={gtmId:"GTM-PNZNW4R",plans:[],countries:[["Afghanistan","AF"],["\xc5land Islands","AX"],["Albania","AL"],["Algeria","DZ"],["American Samoa","AS"],["Andorra","AD"],["Angola","AO"],["Anguilla","AI"],["Antarctica","AQ"],["Antigua and Barbuda","AG"],["Argentina","AR"],["Armenia","AM"],["Aruba","AW"],["Australia","AU"],["Austria","AT"],["Azerbaijan","AZ"],["Bahamas","BS"],["Bahrain","BH"],["Bangladesh","BD"],["Barbados","BB"],["Belarus","BY"],["Belgium","BE"],["Belize","BZ"],["Benin","BJ"],["Bermuda","BM"],["Bhutan","BT"],["Bolivia, Plurinational State of","BO"],["Bonaire, Sint Eustatius and Saba","BQ"],["Bosnia and Herzegovina","BA"],["Botswana","BW"],["Bouvet Island","BV"],["Brazil","BR"],["British Indian Ocean Territory","IO"],["Brunei Darussalam","BN"],["Bulgaria","BG"],["Burkina Faso","BF"],["Burundi","BI"],["Cambodia","KH"],["Cameroon","CM"],["Canada","CA"],["Cape Verde","CV"],["Cayman Islands","KY"],["Central African Republic","CF"],["Chad","TD"],["Chile","CL"],["China","CN"],["Christmas Island","CX"],["Cocos (Keeling) Islands","CC"],["Colombia","CO"],["Comoros","KM"],["Congo","CG"],["Congo, the Democratic Republic of the","CD"],["Cook Islands","CK"],["Costa Rica","CR"],["C\xf4te d'Ivoire","CI"],["Croatia","HR"],["Cuba","CU"],["Cura\xe7ao","CW"],["Cyprus","CY"],["Czech Republic","CZ"],["Denmark","DK"],["Djibouti","DJ"],["Dominica","DM"],["Dominican Republic","DO"],["Ecuador","EC"],["Egypt","EG"],["El Salvador","SV"],["Equatorial Guinea","GQ"],["Eritrea","ER"],["Estonia","EE"],["Ethiopia","ET"],["Falkland Islands (Malvinas)","FK"],["Faroe Islands","FO"],["Fiji","FJ"],["Finland","FI"],["France","FR"],["French Guiana","GF"],["French Polynesia","PF"],["French Southern Territories","TF"],["Gabon","GA"],["Gambia","GM"],["Georgia","GE"],["Germany","DE"],["Ghana","GH"],["Gibraltar","GI"],["Greece","GR"],["Greenland","GL"],["Grenada","GD"],["Guadeloupe","GP"],["Guam","GU"],["Guatemala","GT"],["Guernsey","GG"],["Guinea","GN"],["Guinea-Bissau","GW"],["Guyana","GY"],["Haiti","HT"],["Heard Island and McDonald Islands","HM"],["Holy See (Vatican City State)","VA"],["Honduras","HN"],["Hong Kong","HK"],["Hungary","HU"],["Iceland","IS"],["India","IN"],["Indonesia","ID"],["Iran, Islamic Republic of","IR"],["Iraq","IQ"],["Ireland","IE"],["Isle of Man","IM"],["Israel","IL"],["Italy","IT"],["Jamaica","JM"],["Japan","JP"],["Jersey","JE"],["Jordan","JO"],["Kazakhstan","KZ"],["Kenya","KE"],["Kiribati","KI"],["Korea, Democratic People's Republic of","KP"],["Korea, Republic of","KR"],["Kuwait","KW"],["Kyrgyzstan","KG"],["Lao People's Democratic Republic","LA"],["Latvia","LV"],["Lebanon","LB"],["Lesotho","LS"],["Liberia","LR"],["Libya","LY"],["Liechtenstein","LI"],["Lithuania","LT"],["Luxembourg","LU"],["Macao","MO"],["Macedonia, the Former Yugoslav Republic of","MK"],["Madagascar","MG"],["Malawi","MW"],["Malaysia","MY"],["Maldives","MV"],["Mali","ML"],["Malta","MT"],["Marshall Islands","MH"],["Martinique","MQ"],["Mauritania","MR"],["Mauritius","MU"],["Mayotte","YT"],["Mexico","MX"],["Micronesia, Federated States of","FM"],["Moldova, Republic of","MD"],["Monaco","MC"],["Mongolia","MN"],["Montenegro","ME"],["Montserrat","MS"],["Morocco","MA"],["Mozambique","MZ"],["Myanmar","MM"],["Namibia","NA"],["Nauru","NR"],["Nepal","NP"],["Netherlands","NL"],["New Caledonia","NC"],["New Zealand","NZ"],["Nicaragua","NI"],["Niger","NE"],["Nigeria","NG"],["Niue","NU"],["Norfolk Island","NF"],["Northern Mariana Islands","MP"],["Norway","NO"],["Oman","OM"],["Pakistan","PK"],["Palau","PW"],["Palestine, State of","PS"],["Panama","PA"],["Papua New Guinea","PG"],["Paraguay","PY"],["Peru","PE"],["Philippines","PH"],["Pitcairn","PN"],["Poland","PL"],["Portugal","PT"],["Puerto Rico","PR"],["Qatar","QA"],["R\xe9union","RE"],["Romania","RO"],["Russian Federation","RU"],["Rwanda","RW"],["Saint Barth\xe9lemy","BL"],["Saint Helena, Ascension and Tristan da Cunha","SH"],["Saint Kitts and Nevis","KN"],["Saint Lucia","LC"],["Saint Martin (French part)","MF"],["Saint Pierre and Miquelon","PM"],["Saint Vincent and the Grenadines","VC"],["Samoa","WS"],["San Marino","SM"],["Sao Tome and Principe","ST"],["Saudi Arabia","SA"],["Senegal","SN"],["Serbia","RS"],["Seychelles","SC"],["Sierra Leone","SL"],["Singapore","SG"],["Sint Maarten (Dutch part)","SX"],["Slovakia","SK"],["Slovenia","SI"],["Solomon Islands","SB"],["Somalia","SO"],["South Africa","ZA"],["South Georgia and the South Sandwich Islands","GS"],["South Sudan","SS"],["Spain","ES"],["Sri Lanka","LK"],["Sudan","SD"],["Suriname","SR"],["Svalbard and Jan Mayen","SJ"],["Swaziland","SZ"],["Sweden","SE"],["Switzerland","CH"],["Syrian Arab Republic","SY"],["Taiwan, Province of China","TW"],["Tajikistan","TJ"],["Tanzania, United Republic of","TZ"],["Thailand","TH"],["Timor-Leste","TL"],["Togo","TG"],["Tokelau","TK"],["Tonga","TO"],["Trinidad and Tobago","TT"],["Tunisia","TN"],["Turkey","TR"],["Turkmenistan","TM"],["Turks and Caicos Islands","TC"],["Tuvalu","TV"],["Uganda","UG"],["Ukraine","UA"],["United Arab Emirates","AE"],["United Kingdom","GB"],["United States","US"],["United States Minor Outlying Islands","UM"],["Uruguay","UY"],["Uzbekistan","UZ"],["Vanuatu","VU"],["Venezuela, Bolivarian Republic of","VE"],["Viet Nam","VN"],["Virgin Islands, British","VG"],["Virgin Islands, U.S.","VI"],["Wallis and Futuna","WF"],["Western Sahara","EH"],["Yemen","YE"],["Zambia","ZM"],["Zimbabwe","ZW"]],countryPreSelected:"",planSelected:s,baseWebUrl:"https://ip2loc.com",baseApiUrl:"https://api.ip2loc.com",paymentRequired:!1,loading:!1,success:!1,apiKey:"YOUR_API_KEY",firstname:"",lastname:"",address:"",postalcode:"",city:"",state:"",country:"",companyname:"",companywebsite:"",taxid:""},t.state.plans.forEach((function(e){console.log("value = "+e[0]),e[0]===s&&(t.state.planSelected=e[0],console.log("value == hash"))})),console.log("planSelected --\x3e "+t.state.planSelected),console.log("selectedPlan --\x3e "+s),console.log("paymentRequired --\x3e "+t.state.paymentRequired),t.planSelectDropdown=t.planSelectDropdown.bind(Object(f.a)(t)),t.handleInvalidSubmit=t.handleInvalidSubmit.bind(Object(f.a)(t)),t.handleValidSubmit=t.handleValidSubmit.bind(Object(f.a)(t)),t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){document.title="ChangePlan",this.fetchPlans(),this.fetchPrepareChangeSubscription(this.state.baseWebUrl+"/user/preparechangesubscription")}},{key:"fetchPrepareChangeSubscription",value:function(e){var a=this;fetch(e).then((function(e){return e.json()})).then((function(e){e.success&&(console.log("response.country: "+e.firstname),a.setState({firstname:e.firstname,lastname:e.lastname,address:e.address,postalcode:e.postalcode,city:e.city,state:e.state,companyname:e.companyname,companywebsite:e.companywebsite,taxid:e.taxid}),e.country&&a.setState({countryPreSelected:e.country}))})).catch((function(e){return console.error(e)}))}},{key:"fetchPlans",value:function(){var e=this,a="".concat(this.state.baseWebUrl,"/user/plans");console.log("--fetch-- userplans: "+a),fetch(a,{method:"POST"}).then((function(e){return e.json()})).then((function(a){if(a.success){var t=a.plans;e.setState({plans:t},(function(){t.find((function(a){return a.key===e.state.planSelected}))||t.length>0&&e.setState({planSelected:t[0].key}),e.setState({paymentRequired:t.some((function(a){return a.key===e.state.planSelected&&a.amount>0}))}),console.log(t),console.log("--ok--")}))}else console.log("--error--")})).catch((function(e){console.error(e),console.log("--error-- beim Abrufen der Pl\xe4ne")}))}}]),Object(m.a)(a,[{key:"planSelectDropdown",value:function(e){this.setState({paymentRequired:this.state.plans.some((function(a){return a.key==e.target.value&&a.amount>0}))})}},{key:"handleInvalidSubmit",value:function(e,a,t){console.log("handleInvalidSubmit"),console.log("event = "+JSON.stringify(e,null,2)),console.log("values = "+JSON.stringify(t,null,2)),console.log("errors = "+JSON.stringify(a,null,2))}},{key:"handleValidSubmit",value:function(e,a){var t=this;console.log("handleValidSubmit:CP"),console.log("event = "+JSON.stringify(e,null,2)),console.log("values = "+JSON.stringify(a,null,2)),console.log("Your plan is: "+this.state.planSelected),console.log("Your input email is: "+this.state.email),console.log("baseWebUrl: "+this.state.baseWebUrl);var n=this.state.baseWebUrl+"/user/changeplan";this.setState({loading:!0}),this.setState({errorMessage:""}),fetch(n,{method:"post",headers:{Accept:"application/json"},body:JSON.stringify(a,null,2)}).then((function(e){return e.json()})).then((function(e){if(console.log("response success = "+e.success+", error = "+e.error),e.success)if(void 0!==e.paymentId){console.log("paymentId: "+e.paymentId);var a="/checkout?plan="+e.planKey+"&paymentId="+e.paymentId;t.props.history.push(a)}else t.props.history.push("/registrationsuccess?plan="+e.planKey);else switch(console.log("success: false"+e.error),e.error){case 422:console.log("422: "+e.field+" / "+e.detail),console.log("422: touchedInputs:"+JSON.stringify(t.form.state.touchedInputs,null,2)),t.form.state.invalidInputs[e.field]=e.detail,t.setState({errorMessage:e.detail});break;case 500:t.setState({errorMessage:e.detail});break;case 429:t.setState({errorMessage:"Too many requests, try again later."});break;default:t.setState({errorMessage:"Server Error: "+e.error})}})).catch((function(e){console.error(e),console.log("success: false catch!"),t.setState({errorMessage:"can't reach server"})})).finally((function(){t.setState({loading:!1})}))}},{key:"fetch",value:function(e){function a(a){return e.apply(this,arguments)}return a.toString=function(){return e.toString()},a}((function(e){var a=this;this.setState({loading:!0}),fetch(e).then((function(e){return e.json()})).then((function(e){e.success&&(console.log("apiKey: "+e.apiKey),a.setState({apiKey:e.apiKey}))})).catch((function(e){console.error(e),a.props.history.push("/#")})).finally((function(){return a.setState({loading:!1})}))}))},{key:"render",value:function(){var e=this;return s.a.createElement("div",{className:"d-flex flex-column min-vh-100"},s.a.createElement(q,{loggedInOnly:!0}),s.a.createElement("main",{className:"flex-fill checkout-main"},s.a.createElement("div",{className:"checkout-header"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"checkout-header-content"},s.a.createElement("h1",null,"Change Plan"),s.a.createElement("p",null,"Update your subscription and billing information.")))),s.a.createElement(y.a,{className:"checkout-container"},s.a.createElement(U.a,{className:"justify-content-center"},s.a.createElement(x.a,{lg:"8",md:"10"},this.state.success?s.a.createElement("div",{className:"checkout-card"},s.a.createElement("div",{className:"checkout-success"},s.a.createElement("div",{className:"success-icon"},s.a.createElement(b.a,{icon:"check-circle"})),s.a.createElement("h3",null,"Success!"),s.a.createElement("p",null,"Check your email for confirmation."))):s.a.createElement(D.AvForm,{className:"checkout-form",ref:function(a){return e.form=a},onValidSubmit:this.handleValidSubmit,onInvalidSubmit:this.handleInvalidSubmit},s.a.createElement("div",{className:"checkout-card"},s.a.createElement("div",{className:"checkout-card-header"},s.a.createElement("div",{className:"card-icon"},s.a.createElement(b.a,{icon:"layer-group"})),s.a.createElement("h3",null,"Selected Plan")),s.a.createElement("div",{className:"checkout-card-body"},s.a.createElement(D.AvField,{value:this.state.planSelected,type:"select",name:"planKey",disabled:!0,className:"plan-select-field",onChange:this.planSelectDropdown},this.state.plans.map((function(e){return s.a.createElement("option",{value:e.key,key:e.key},"0"==e.trial?e.title+" "+e.description+" "+e.symbol+e.amount:"Try "+e.trial+" days for Free - "+e.title+" "+e.description)}))))),this.state.paymentRequired&&s.a.createElement(s.a.Fragment,null,s.a.createElement("div",{className:"checkout-card"},s.a.createElement("div",{className:"checkout-card-header"},s.a.createElement("div",{className:"card-icon"},s.a.createElement(b.a,{icon:"map-marker-alt"})),s.a.createElement("h3",null,"Billing Address")),s.a.createElement("div",{className:"checkout-card-body"},s.a.createElement("div",{className:"form-row-grid"},s.a.createElement("div",{className:"form-group-checkout"},s.a.createElement(D.AvField,{name:"firstname",label:"First Name *",type:"text",id:"firstname",required:this.state.paymentRequired,value:this.state.firstname})),s.a.createElement("div",{className:"form-group-checkout"},s.a.createElement(D.AvField,{name:"lastname",label:"Last Name *",type:"text",id:"lastname",required:this.state.paymentRequired,value:this.state.lastname}))),s.a.createElement("div",{className:"form-group-checkout"},s.a.createElement(D.AvField,{name:"address",label:"Address *",type:"text",id:"address",required:this.state.paymentRequired,value:this.state.address})),s.a.createElement("div",{className:"form-row-grid"},s.a.createElement("div",{className:"form-group-checkout"},s.a.createElement(D.AvField,{name:"postalcode",label:"Postal Code *",type:"text",id:"postalcode",required:this.state.paymentRequired,value:this.state.postalcode})),s.a.createElement("div",{className:"form-group-checkout"},s.a.createElement(D.AvField,{name:"city",label:"City *",type:"text",id:"city",required:this.state.paymentRequired,value:this.state.city}))),s.a.createElement("div",{className:"form-row-grid"},s.a.createElement("div",{className:"form-group-checkout"},s.a.createElement(D.AvField,{name:"state",label:"State",type:"text",id:"state",value:this.state.state})),s.a.createElement("div",{className:"form-group-checkout"},s.a.createElement(D.AvField,{value:this.state.countryPreSelected,type:"select",name:"countryIso2",label:"Country *",required:this.state.paymentRequired},s.a.createElement("option",{value:"",disabled:!0},"Select your Country"),this.state.countries.map((function(e){return s.a.createElement("option",{value:e[1],key:e[1]},e[0])}))))))),s.a.createElement("div",{className:"checkout-card"},s.a.createElement("div",{className:"checkout-card-header"},s.a.createElement("div",{className:"card-icon"},s.a.createElement(b.a,{icon:"building"})),s.a.createElement("h3",null,"Company (Optional)")),s.a.createElement("div",{className:"checkout-card-body"},s.a.createElement("div",{className:"form-row-grid"},s.a.createElement("div",{className:"form-group-checkout"},s.a.createElement(D.AvField,{name:"companyname",label:"Company Name",type:"text",id:"companyname",value:this.state.companyname})),s.a.createElement("div",{className:"form-group-checkout"},s.a.createElement(D.AvField,{name:"companywebsite",label:"Company Website",type:"text",id:"website",value:this.state.companywebsite}))),s.a.createElement("div",{className:"form-group-checkout"},s.a.createElement(D.AvField,{name:"taxid",label:"Tax ID / VAT Number",type:"text",id:"taxid",value:this.state.taxid}),s.a.createElement("small",{className:"form-hint"},"Required for reverse charge (business customers)"))))),this.state.errorMessage&&s.a.createElement(H.a,{color:"danger",className:"checkout-alert"},this.state.errorMessage),s.a.createElement("button",{type:"submit",className:"checkout-submit-btn",id:"buttonprimary",disabled:this.state.loading},this.state.loading?s.a.createElement("span",null,s.a.createElement(b.a,{icon:"spinner",spin:!0})," Processing..."):s.a.createElement("span",null,"Continue ",s.a.createElement(b.a,{icon:"arrow-right"})))))))),s.a.createElement(Oe,null))}}]),a}(n.Component),wa=function(e){function a(e){var t;return Object(c.a)(this,a),t=Object(i.a)(this,Object(o.a)(a).call(this,e)),g(),t.state={planTitle:"",baseWebUrl:"https://ip2loc.com"},t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){document.title="Plan Changed",this.fetchPlan()}},{key:"fetchPlan",value:function(){var e=this,a=E.a.parse(this.props.location.search);fetch(this.state.baseWebUrl+"/user/plans/"+a.plan).then((function(e){return e.json()})).then((function(a){a.success&&e.setState({planTitle:a.plan.title})}))}}]),Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("div",{className:"d-flex flex-column min-vh-100"},s.a.createElement(q,{loggedInOnly:!0}),s.a.createElement("main",{className:"flex-fill"},s.a.createElement("div",{className:"success-page"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"success-card"},s.a.createElement("div",{className:"success-icon"},s.a.createElement(b.a,{icon:"check-circle"})),s.a.createElement("h1",null,"Plan Changed Successfully"),s.a.createElement("p",{className:"success-message"},"You have successfully changed to the ",s.a.createElement("strong",null,this.state.planTitle)," plan."),s.a.createElement("div",{className:"success-actions"},s.a.createElement("a",{href:"/dashboard",className:"btn-primary-custom"},s.a.createElement(b.a,{icon:"tachometer-alt",className:"mr-2"}),"Go to Dashboard")))))),s.a.createElement(Oe,null))}}]),a}(n.Component),Ra=function(e){function a(e){var t;return Object(c.a)(this,a),t=Object(i.a)(this,Object(o.a)(a).call(this,e)),g(),t.state={baseWebUrl:"https://ip2loc.com"},t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){document.title="SSO Login Success"}}]),Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("div",{className:"d-flex flex-column min-vh-100"},s.a.createElement(q,null),s.a.createElement("main",{className:"flex-fill"},s.a.createElement("div",{className:"success-page"},s.a.createElement(y.a,null,s.a.createElement("div",{id:"registrationSuccess",className:"success-card"},s.a.createElement("div",{className:"success-icon"},s.a.createElement(b.a,{icon:"envelope"})),s.a.createElement("h1",null,"Check Your Email"),s.a.createElement("p",{className:"success-message"},"We've sent you a sign-in link. Please check your inbox."),s.a.createElement("div",{className:"success-info"},s.a.createElement(b.a,{icon:"info-circle",className:"info-icon"}),s.a.createElement("p",null,"If you haven't received the email within 5 minutes, please check your spam folder or"," ",s.a.createElement("a",{href:this.state.baseWebUrl+"/contact"},"contact us")," for assistance.")),s.a.createElement("div",{className:"success-actions"},s.a.createElement("a",{href:"/login",className:"btn-primary-custom"},s.a.createElement(b.a,{icon:"arrow-left",className:"mr-2"}),"Back to Login")))))),s.a.createElement(Oe,null))}}]),a}(n.Component),ja=function(e){function a(e){var t;Object(c.a)(this,a),t=Object(i.a)(this,Object(o.a)(a).call(this,e)),g();var n=e.cookies;return t.state={loading:!1,name:"",apiKey:"",planKey:"",planTitle:"",usage:"1/2",email:"",period:"",invoices:null,baseWebUrl:"https://ip2loc.com",baseApiUrl:"https://api.ip2loc.com",session:void 0!==n.get("session")},t.state.session||t.props.history.push("/"),t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){document.title="Settings";var e=this.state.baseWebUrl+"/user/dashboard";this.fetch(e)}},{key:"fetch",value:function(e){function a(a){return e.apply(this,arguments)}return a.toString=function(){return e.toString()},a}((function(e){var a=this;this.setState({loading:!0}),fetch(e).then((function(e){return e.json()})).then((function(e){e.success&&a.setState({apiKey:e.apiKey,name:e.name,planKey:e.planKey,planTitle:e.planTitle,usage:e.usage,email:e.email,period:e.period,invoices:e.invoices})})).catch((function(e){console.error(e)})).finally((function(){return a.setState({loading:!1})}))}))}]),Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("div",{className:"d-flex flex-column min-vh-100"},s.a.createElement(q,null),s.a.createElement("main",{className:"flex-fill"},s.a.createElement("div",{className:"dashboard-header"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"dashboard-header-content"},s.a.createElement("h1",null,"Account Settings"),s.a.createElement("p",null,"You are logged in as ",s.a.createElement("span",{id:"name"},this.state.name))))),s.a.createElement(y.a,{className:"dashboard-container"},s.a.createElement(U.a,null,s.a.createElement(x.a,{lg:"3",md:"4",className:"mb-4"},s.a.createElement(pa,{selected:"settings"})),s.a.createElement(x.a,{lg:"9",md:"8"},s.a.createElement("div",{className:"settings-card"},s.a.createElement("div",{className:"settings-card-header"},s.a.createElement(b.a,{icon:"key",className:"settings-icon"}),s.a.createElement("h3",null,"Your API Key")),s.a.createElement("div",{className:"settings-card-body"},s.a.createElement("div",{className:"api-key-display"},s.a.createElement("code",{id:"apiKey",className:"api-key-value"},this.state.apiKey)))),s.a.createElement("div",{className:"settings-card"},s.a.createElement("div",{className:"settings-card-header"},s.a.createElement(b.a,{icon:"layer-group",className:"settings-icon"}),s.a.createElement("h3",null,"Your Plan")),s.a.createElement("div",{className:"settings-card-body"},s.a.createElement("div",{className:"settings-row"},s.a.createElement("span",{className:"settings-label"},"Subscription"),s.a.createElement("span",{id:"planTitle",className:"settings-value"},this.state.planTitle)),s.a.createElement("div",{className:"settings-row"},s.a.createElement("span",{className:"settings-label"},"Usage"),s.a.createElement("span",{className:"settings-value"},this.state.usage)))),s.a.createElement("div",{className:"settings-card"},s.a.createElement("div",{className:"settings-card-header"},s.a.createElement(b.a,{icon:"user",className:"settings-icon"}),s.a.createElement("h3",null,"Your Account")),s.a.createElement("div",{className:"settings-card-body"},s.a.createElement("div",{className:"settings-row"},s.a.createElement("span",{className:"settings-label"},"Email"),s.a.createElement("span",{className:"settings-value"},this.state.email)),s.a.createElement("div",{className:"settings-row"},s.a.createElement("span",{className:"settings-label"},"Name"),s.a.createElement("span",{className:"settings-value"},this.state.name)))),s.a.createElement("div",{className:"settings-card"},s.a.createElement("div",{className:"settings-card-header"},s.a.createElement(b.a,{icon:"credit-card",className:"settings-icon"}),s.a.createElement("h3",null,"Your Payments")),s.a.createElement("div",{className:"settings-card-body"},s.a.createElement("div",{className:"settings-row"},s.a.createElement("span",{className:"settings-label"},"Plan"),s.a.createElement("span",{className:"settings-value"},this.state.planTitle)),s.a.createElement("div",{className:"settings-row"},s.a.createElement("span",{className:"settings-label"},"Current Period"),s.a.createElement("span",{className:"settings-value"},this.state.period)))),this.state.invoices&&s.a.createElement("div",{className:"settings-card"},s.a.createElement("div",{className:"settings-card-header"},s.a.createElement(b.a,{icon:"file-invoice",className:"settings-icon"}),s.a.createElement("h3",null,"Your Invoices")),s.a.createElement("div",{className:"settings-card-body"},s.a.createElement("div",{className:"invoices-list"},this.state.invoices.map((function(e,a){return s.a.createElement("a",{key:a,href:e.link,className:"invoice-item"},s.a.createElement(b.a,{icon:"file-pdf",className:"invoice-icon"}),e.name)}))))))))),s.a.createElement(Oe,null))}}]),a}(n.Component),Ma=Object(p.g)(Object(z.b)(ja)),Ua=t(221),xa=function(e){function a(e){return Object(c.a)(this,a),Object(i.a)(this,Object(o.a)(a).call(this,e))}return Object(u.a)(a,e),Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("div",{className:"d-flex flex-column min-vh-100"},s.a.createElement(q,null),s.a.createElement("main",{className:"flex-fill nav-padding"},s.a.createElement(Le.a,null,s.a.createElement("h1",null,"Use Cases")),s.a.createElement(ne.a,null,s.a.createElement(Ua.a,null,s.a.createElement("div",null,s.a.createElement("div",null,s.a.createElement("h2",null,"The Power of Geolocation:"),s.a.createElement("p",null,"In today's digital age, geolocation technology has become a powerful tool for businesses to better understand their customers and target them more effectively. From targeted advertising to fraud prevention and geotargeting, businesses can use geolocation to enhance their marketing strategies and provide better customer experiences. In this article, we will discuss the various ways in which geolocation can be used for targeted advertising, fraud prevention, website localization, content personalization, and geotargeting."),s.a.createElement("h2",null,"Introduction:"),s.a.createElement("p",null,"Geolocation technology is the process of identifying the real-world location of an object or person using digital information. This technology has become increasingly important in recent years, as businesses have sought to better understand their customers and provide them with more personalized experiences. With geolocation data, businesses can gain insights into where their customers are located, what their preferences are, and how they behave."),s.a.createElement("h2",null,"Targeted Advertising:"),s.a.createElement("p",null,"One of the most significant uses of geolocation is targeted advertising. By using geolocation data, businesses can target their advertising to specific geographic regions, such as cities, states, or even neighborhoods. This allows them to tailor their advertising to the interests and needs of their local customers, which can increase the effectiveness of their campaigns."),s.a.createElement("h2",null,"Fraud Prevention:"),s.a.createElement("p",null,"Geolocation can also be used for fraud prevention. By tracking the location of a customer's device, businesses can detect if a transaction is being made from a location that is different from the customer's usual location. This can help prevent fraudulent transactions and protect businesses from financial losses."),s.a.createElement("h2",null,"Website Localization:"),s.a.createElement("p",null,"Geolocation can also be used to localize websites. By detecting the location of a user's device, businesses can automatically display their website in the user's preferred language and currency. This can help businesses to better serve their international customers and provide them with a better user experience."),s.a.createElement("h2",null,"Content Personalization:"),s.a.createElement("p",null,"Another way that geolocation can be used is for content personalization. By tracking a user's location, businesses can provide them with more relevant content based on their interests and preferences. For example, a retail website might show different products to customers in different regions based on their preferences and purchasing habits."),s.a.createElement("h2",null,"Geotargeting:"),s.a.createElement("p",null,"Finally, geolocation can be used for geotargeting. This involves targeting customers based on their location and providing them with customized offers and promotions. For example, a restaurant might send a promotion to customers in a particular neighborhood, or a retail store might offer a discount to customers who visit their store in person."),s.a.createElement("h2",null,"Conclusion:"),s.a.createElement("p",null,"In conclusion, geolocation technology has become an essential tool for businesses looking to enhance their marketing strategies and provide better customer experiences. By using geolocation data, businesses can target their advertising more effectively, prevent fraud, localize their websites, personalize their content, and geotarget their customers. As technology continues to evolve, it is likely that geolocation will become even more critical to businesses in the years ahead.")))))),s.a.createElement(Oe,null))}}]),a}(n.Component),La=Object(p.g)(xa),Ha=function(e){var a=e.onError,t=e.googleClientId,n=e.baseWebUrl;return s.a.createElement("div",{className:"google-login-container"},s.a.createElement("button",{type:"button",className:"social-login-btn mb-3",onClick:function(){try{var e=t;if(!e)return console.error("Google Client ID not configured"),void(a&&a(new Error("Google authentication not configured")));var s="".concat(n,"/auth/oauth/callback"),l=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15);sessionStorage.setItem("oauth_state",l);var r=new URLSearchParams({client_id:e,redirect_uri:s,response_type:"code",scope:"openid profile email",state:l}),c="https://accounts.google.com/o/oauth2/v2/auth?".concat(r.toString());window.location.href=c}catch(i){console.error("Google login error:",i),a&&a(i)}},style:{display:"flex",alignItems:"center",justifyContent:"center",gap:"10px",width:"100%",padding:"12px 16px",border:"1px solid #ddd",borderRadius:"6px",background:"white",cursor:"pointer",fontSize:"14px",fontWeight:"500",transition:"all 0.2s"}},s.a.createElement("svg",{width:"18",height:"18",viewBox:"0 0 18 18"},s.a.createElement("path",{fill:"#4285F4",d:"M16.51 8H8.98v3h4.3c-.18 1-.74 1.48-1.6 2.04v2.01h2.6a7.8 7.8 0 0 0 2.38-5.88c0-.57-.05-.66-.15-1.18z"}),s.a.createElement("path",{fill:"#34A853",d:"M8.98 17c2.16 0 3.97-.72 5.3-1.94l-2.6-2a4.8 4.8 0 0 1-7.18-2.54H1.83v2.07A8 8 0 0 0 8.98 17z"}),s.a.createElement("path",{fill:"#FBBC05",d:"M4.5 10.52a4.8 4.8 0 0 1 0-3.04V5.41H1.83a8 8 0 0 0 0 7.18l2.67-2.07z"}),s.a.createElement("path",{fill:"#EA4335",d:"M8.98 4.18c1.17 0 2.23.4 3.06 1.2l2.3-2.3A8 8 0 0 0 1.83 5.4L4.5 7.49a4.77 4.77 0 0 1 4.48-3.3z"})),s.a.createElement("span",null,"Continue with Google")))},Wa=function(e){function a(e){var t;Object(c.a)(this,a),(t=Object(i.a)(this,Object(o.a)(a).call(this,e))).setReCaptchaToken=function(e){console.log("got recaptcha token"),t.setState({recaptcha:e})},t.handleOAuthError=function(e){console.error("OAuth error:",e),t.setState({oauthError:e.message||"Authentication failed"})},g(),console.log("--\x3e");var n=E.a.parse(t.props.location.search);return console.log(n.plan),t.state={gtmId:"GTM-PNZNW4R",baseWebUrl:"https://ip2loc.com",baseApiUrl:"https://api.ip2loc.com",captchaSiteKey:"0x4AAAAAABuWWtOfbf_-dsn0",googleClientId:"75933923085-pvirjm5re4acmk7cg5atfiulb781oi5j.apps.googleusercontent.com",recaptcha:"",email:"",errorMessage:"",loading:!1,success:!1,oauthError:""},t.handleSSOSubmit=t.handleSSOSubmit.bind(Object(f.a)(t)),t.updateSignupEmail=t.updateSignupEmail.bind(Object(f.a)(t)),t.handleValidSubmit=t.handleValidSubmit.bind(Object(f.a)(t)),t.handleOAuthError=t.handleOAuthError.bind(Object(f.a)(t)),t.setReCaptchaToken=t.setReCaptchaToken.bind(Object(f.a)(t)),t.recaptcha=s.a.createRef(),t.turnstileRef=s.a.createRef(),t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){document.title="Login"}},{key:"componentWillUnmount",value:function(){this.setState({recaptcha:""})}}]),Object(m.a)(a,[{key:"updateSignupEmail",value:function(e){this.setState({signupEmail:e.target.value})}},{key:"handleSSOSubmit",value:function(){console.log("handleSSOSubmit: "+this.state.baseWebUrl),this.setState({isSsoLogin:!0}),this.form.submit()}},{key:"handleInvalidSubmit",value:function(e,a,t){console.log("handleInvalidSubmit event: "+e),console.log("handleInvalidSubmit errors: "+a),console.log("handleInvalidSubmit values: "+t)}},{key:"handleValidSubmit",value:function(){var e=this;console.log("Your input email is: "+this.state.signupEmail),console.log("baseWebUrl: "+this.state.baseWebUrl);var a=this.state.baseWebUrl+"/auth/email/request";this.setState({loading:!0}),fetch(a,{method:"post",headers:{Accept:"application/json"},body:JSON.stringify({email:this.state.signupEmail,recaptcha:this.state.recaptcha})}).then((function(e){return e.json()})).then((function(a){if(console.log("response success = "+a.success+", error = "+a.error),a.success)e.setState({errorMessage:"",success:!0});else switch(console.log("success: false"+a.error),a.error){case 208:e.setState({errorMessage:"Email already exists!"});break;case 403:e.setState({errorMessage:"Invalid Email!"});break;case 404:e.setState({errorMessage:"Email not exists!"});break;case 429:e.setState({errorMessage:"Too many requests, try again later."});break;default:e.setState({errorMessage:"Server Error: "+a.error})}})).catch((function(a){console.error(a),console.log("success: false catch!"),e.setState({errorMessage:"can't reach server"})})).finally((function(){e.setState({loading:!1})}))}},{key:"render",value:function(){var e=this;return s.a.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},s.a.createElement(D.AvForm,{ref:function(a){return e.form=a},onValidSubmit:this.handleValidSubmit,onInvalidSubmit:this.handleInvalidSubmit,className:"form-login text-center",model:{},validateOnBlur:!0},s.a.createElement("img",{className:"mb-4",src:"/img/ip2loc-icon.svg",alt:"",width:"72",height:"72"}),s.a.createElement("h2",{className:"h3 mb-3 font-weight-normal"},"Sign in to ip2loc"),this.state.success?s.a.createElement("div",null,s.a.createElement(D.AvForm,null,s.a.createElement(D.AvGroup,null,this.state.errorMessage?s.a.createElement(H.a,{color:"danger"},this.state.errorMessage):s.a.createElement(H.a,{color:"success",id:"successSignupEmailMessage"},"We sent you a link to log in to ",this.state.signupEmail,".",s.a.createElement(b.a,{icon:"check"}))))):s.a.createElement("div",null,s.a.createElement("p",{className:"login-subtitle"},"Quick, secure, and passwordless access to your account."),s.a.createElement(Ha,{googleClientId:this.state.googleClientId,baseWebUrl:this.state.baseWebUrl,onError:this.handleOAuthError}),s.a.createElement("div",{className:"login-divider"},s.a.createElement("div",{className:"login-divider-line"}),s.a.createElement("span",{className:"login-divider-text"},"or use your email"),s.a.createElement("div",{className:"login-divider-line"})),s.a.createElement(D.AvField,{onChange:this.updateSignupEmail,className:"form-control",placeholder:"you@company.com",name:"email",id:"useremail",label:"",type:"email",required:!0,validate:{required:{value:!0,errorMessage:"Email is required"},email:{value:!0,errorMessage:"Invalid email address"}},autoFocus:!0}),s.a.createElement("div",{className:"turnstile-wrapper"},s.a.createElement(Ve.a,{sitekey:this.state.captchaSiteKey,ref:this.turnstileRef,onVerify:this.setReCaptchaToken,onSuccess:this.setReCaptchaToken,onExpire:function(){return e.setState({recaptcha:""})},onError:function(){return e.setState({recaptcha:""})},options:{appearance:"interaction-only",theme:"auto",size:"compact",retry:"auto",refreshExpired:"auto",action:"login"}})),s.a.createElement(v.a,{color:"primary",block:!0,id:this.state.recaptcha?"buttonsso":void 0,onClick:this.handleSSOSubmit,className:"mt-3 mb-3"},this.state.loading?s.a.createElement("span",null,s.a.createElement(b.a,{icon:"spinner",spin:!0})," "):s.a.createElement("span",null,"Continue with Email")),s.a.createElement("p",{className:"form-login-small"},"By continuing, you agree to our ",s.a.createElement("a",{href:"/termsandconditions",className:"form-login-small",target:"_blank",rel:"noopener noreferrer"},"Terms")," and ",s.a.createElement("a",{href:"/dataprotection",className:"form-login-small",target:"_blank",rel:"noopener noreferrer"},"Privacy Policy"),"."),this.state.errorMessage?s.a.createElement(H.a,{color:"danger"},this.state.errorMessage):"")))}}]),a}(n.Component),Da=function(e){function a(){return Object(c.a)(this,a),Object(i.a)(this,Object(o.a)(a).apply(this,arguments))}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){document.title="Plans"}},{key:"render",value:function(){return s.a.createElement($e,{loggedInOnly:!0})}}]),a}(n.Component),Ga=function(e){function a(e){var t;Object(c.a)(this,a),t=Object(i.a)(this,Object(o.a)(a).call(this,e)),g();var n=E.a.parse(t.props.location.search),s=n.paymentId;return t.state={baseApiUrl:"https://api.ip2loc.com",baseWebUrl:"https://ip2loc.com",paymentId:s,signupWithPlanSelected:n.plan,plan:[],email:"",tax:0,amountTax:0,amountTotal:0,processing:!1,errorMessage:"",validationPayment:!1},t.checkPaymentIntent=t.checkPaymentIntent.bind(Object(f.a)(t)),n.payment_intent?(t.state.validationPayment=!0,t.checkPaymentIntent(n.payment_intent,s,n.action)):n.setup_intent_client_secret?(t.state.validationPayment=!0,t.checkSetupIntent(n.setup_intent_client_secret,s,n.action)):n.checkout_session_id&&(t.state.validationPayment=!0,t.checkCheckoutSession(n.checkout_session_id,s,n.action)),t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){document.title="Checkout Verification",this.fetchPlan()}},{key:"fetchPlan",value:function(){var e=this,a=E.a.parse(this.props.location.search);if(void 0!==a.plan){var t=this.state.baseWebUrl+"/user/plans/"+a.plan+"?paymentId="+a.paymentId;fetch(t,{method:"POST"}).then((function(e){return e.json()})).then((function(a){a.success&&e.setState({plan:a.plan,email:a.email,tax:a.tax,amountTax:a.amountTax,amountTotal:a.amountTotal})}))}}}]),Object(m.a)(a,[{key:"checkPaymentIntent",value:function(e,a,t){var n=this;null!=e&&null!=a&&(this.setState({loading:!0}),fetch(this.state.baseWebUrl+"/user/paymentIntent",{method:"POST",headers:{"Content-Type":"text/plain"},body:JSON.stringify({paymentId:a,paymentIntent:e})}).then((function(e){return e.json()})).then((function(e){e.success?"card_update"==t?n.props.history.push("/planchangedsuccess?plan="+e.planKey):n.props.history.push("/registrationsuccess?plan="+e.planKey):n.setState({errorMessage:e.detail})})).catch((function(e){return console.error(e)})).finally((function(){n.setState({loading:n.state.redirect})})))}},{key:"checkSetupIntent",value:function(e,a,t){var n=this;null!=e&&null!=a&&(this.setState({loading:!0}),fetch(this.state.baseWebUrl+"/user/setupIntent",{method:"POST",headers:{"Content-Type":"text/plain"},body:JSON.stringify({paymentId:a,setupIntent:e})}).then((function(e){return e.json()})).then((function(e){e.success?"card_update"==t?n.props.history.push("/planchangedsuccess?plan="+e.planKey):n.props.history.push("/registrationsuccess?plan="+e.planKey):n.setState({errorMessage:e.detail})})).catch((function(e){return console.error(e)})).finally((function(){n.setState({loading:n.state.redirect})})))}},{key:"checkCheckoutSession",value:function(e,a,t){var n=this;null!=e&&null!=a&&(this.setState({loading:!0}),fetch(this.state.baseWebUrl+"/user/checkoutSession",{method:"POST",headers:{"Content-Type":"text/plain"},body:JSON.stringify({paymentId:a,checkoutSession:e})}).then((function(e){return e.json()})).then((function(e){e.success?"card_update"==t?n.props.history.push("/planchangedsuccess?plan="+e.planKey):n.props.history.push("/registrationsuccess?plan="+e.planKey):n.setState({errorMessage:e.detail})})).catch((function(e){return console.error(e)})).finally((function(){n.setState({loading:n.state.redirect})})))}},{key:"render",value:function(){return s.a.createElement("div",{className:"d-flex flex-column min-vh-100"},s.a.createElement(q,null),s.a.createElement("main",{className:"flex-fill"},s.a.createElement("div",{className:"success-page"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"success-card"},this.state.errorMessage?s.a.createElement(s.a.Fragment,null,s.a.createElement("div",{className:"activation-icon error"},s.a.createElement(b.a,{icon:"times-circle"})),s.a.createElement("h1",null,"Verification Failed"),s.a.createElement("p",{className:"success-message"},this.state.errorMessage),s.a.createElement("div",{className:"success-actions"},s.a.createElement("a",{href:"/pricing",className:"btn-primary-custom"},s.a.createElement(b.a,{icon:"arrow-left",className:"mr-2"}),"Back to Pricing"))):s.a.createElement(s.a.Fragment,null,s.a.createElement("div",{className:"activation-icon loading"},s.a.createElement(b.a,{icon:"spinner",spin:!0})),s.a.createElement("h1",null,"Verifying Payment"),s.a.createElement("p",{className:"success-message"},"Please wait while we verify your checkout...")))))),s.a.createElement(Oe,null))}}]),a}(n.Component),Ba=function(e){function a(e){var t;Object(c.a)(this,a),t=Object(i.a)(this,Object(o.a)(a).call(this,e)),g();var n=E.a.parse(t.props.location.search),s=n.paymentId;return t.state={baseApiUrl:"https://api.ip2loc.com",baseWebUrl:"https://ip2loc.com",paymentId:s,signupWithPlanSelected:n.plan,plan:[],email:"",tax:0,amountTax:0,amountTotal:0,processing:!1,errorMessage:"",validationPayment:!1},console.log(s),t}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){document.title="Update Payment Details"}}]),Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("div",{className:"d-flex flex-column min-vh-100"},s.a.createElement(q,{loggedInOnly:!0}),s.a.createElement("main",{className:"flex-fill checkout-main"},s.a.createElement("div",{className:"checkout-header"},s.a.createElement(y.a,null,s.a.createElement("div",{className:"checkout-header-content"},s.a.createElement("h1",null,"Update Payment Details"),s.a.createElement("p",null,"Update your payment method securely.")))),this.state.validationPayment?s.a.createElement(y.a,{className:"checkout-container"},s.a.createElement(U.a,{className:"justify-content-center"},s.a.createElement(x.a,{lg:"6",md:"8"},s.a.createElement("div",{className:"checkout-card"},s.a.createElement("div",{className:"checkout-card-body text-center"},this.state.errorMessage?s.a.createElement(H.a,{color:"danger"},"Error: ",this.state.errorMessage):s.a.createElement("div",{className:"checkout-processing"},s.a.createElement("div",{className:"processing-spinner"},s.a.createElement(b.a,{icon:"spinner",spin:!0})),s.a.createElement("p",null,"Validating payment..."))))))):s.a.createElement(y.a,{className:"checkout-container"},s.a.createElement(U.a,{className:"justify-content-center"},void 0!==this.state.signupWithPlanSelected&&s.a.createElement(x.a,{lg:"5",md:"6",className:"mb-4"},this.PlanDetails()),s.a.createElement(x.a,{lg:"5",md:"6"},s.a.createElement(ia,{paymentId:this.state.paymentId}))))),s.a.createElement(Oe,null))}},{key:"PlanDetails",value:function(){return s.a.createElement("div",{className:"checkout-card plan-details-card"},s.a.createElement("div",{className:"checkout-card-header"},s.a.createElement("div",{className:"card-icon"},s.a.createElement(b.a,{icon:"credit-card"})),s.a.createElement("h3",null,"Payment Update")),s.a.createElement("div",{className:"checkout-card-body"},s.a.createElement("div",{className:"plan-summary"},s.a.createElement("h2",{id:"planTitle",className:"plan-name"},this.state.plan.title," Plan"),"0"!==this.state.plan.trial&&s.a.createElement("div",{className:"trial-badge"},s.a.createElement(b.a,{icon:"gift"}),this.state.plan.trial,"-Day Free Trial"),s.a.createElement("p",{className:"plan-description"},this.state.plan.quantity<1e5?"For beginners and small projects.":this.state.plan.quantity<1e6?"Our most popular plan for medium projects.":"Extensive API usage for large projects.")),s.a.createElement("ul",{className:"plan-features-checkout"},s.a.createElement("li",null,s.a.createElement(b.a,{icon:"check",className:"feature-check"}),s.a.createElement("span",null,this.state.plan.description,"/",this.state.plan.time)),s.a.createElement("li",null,s.a.createElement(b.a,{icon:"check",className:"feature-check"}),s.a.createElement("span",null,"HTTPS Encryption")),s.a.createElement("li",null,s.a.createElement(b.a,{icon:"check",className:"feature-check"}),s.a.createElement("span",null,"All Data Points")),s.a.createElement("li",null,s.a.createElement(b.a,{icon:"check",className:"feature-check"}),s.a.createElement("span",null,"Cancel Anytime"))),s.a.createElement("div",{className:"price-breakdown"},s.a.createElement("div",{className:"price-row"},s.a.createElement("span",null,"Subtotal"),s.a.createElement("span",null,"0"===this.state.plan.trial?"".concat(this.state.plan.symbol).concat(this.state.plan.amount):"$0.00")),s.a.createElement("div",{className:"price-row"},s.a.createElement("span",null,"Tax"),s.a.createElement("span",null,"0"===this.state.plan.trial?"".concat(this.state.plan.symbol).concat(this.state.amountTax):"$0.00")),s.a.createElement("div",{className:"price-row total"},s.a.createElement("span",null,"Total"),s.a.createElement("span",null,"0"===this.state.plan.trial?"".concat(this.state.plan.symbol).concat(this.state.amountTotal):"$0.00")),s.a.createElement("div",{className:"price-note"},"Then ",this.state.plan.symbol,"0"===this.state.plan.trial?this.state.amountTotal:this.state.plan.amount," per ",this.state.plan.time,"."))))}}]),a}(n.Component),Fa=t(257),za=t.n(Fa);Pa.b.add(je.a);var Ka=function(e){function a(){var e;return Object(c.a)(this,a),(e=Object(i.a)(this,Object(o.a)(a).call(this))).handleConsentUpdate=function(e){console.log("handleConsentUpdate: m"+e.marketing+" a"+e.analytics+" p"+e.preferences+" n"+e.necessary);var a={ad_storage:e.marketing?"granted":"denied",ad_user_data:e.marketing?"granted":"denied",ad_personalization:e.marketing?"granted":"denied",analytics_storage:e.analytics?"granted":"denied",personalization_storage:e.preferences?"granted":"denied",functionality_storage:e.necessary?"granted":"denied",security_storage:e.necessary?"granted":"denied"};window.gtag?(window.gtag("consent","update",a),localStorage.setItem("consentMode",JSON.stringify(a)),console.log("Consent updated:",a),e.marketing&&(window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"cookie_consent_marketing_accept",consentDetails:e}))):console.error("gtag function is not available. 002")},e.state={baseWebUrl:"https://ip2loc.com",gtmId:"GTM-PNZNW4R"},e}return Object(u.a)(a,e),Object(m.a)(a,[{key:"componentDidMount",value:function(){this.initializeGtag(),this.initializeConsentMode(),this.initializeGTM()}},{key:"initializeGtag",value:function(){console.log("initializeGtag"),window.dataLayer=window.dataLayer||[],window.gtag=function(){window.dataLayer.push(arguments)}}},{key:"initializeGTM",value:function(){console.log("initializeGTM");var e=this.state.gtmId;za.a.initialize({gtmId:e}),console.log("Google Tag Manager initialized with default consent.")}},{key:"initializeConsentMode",value:function(){var e=localStorage.getItem("consentMode");if(e)try{var a=JSON.parse(e);window.gtag("consent","update",a),console.log("Consent aus dem Speicher geladen und aktualisiert:",a)}catch(t){console.error("Fehler beim Parsen der gespeicherten Zustimmung:",t)}else window.gtag?(window.gtag("consent","default",{ad_storage:"denied",ad_user_data:"denied",ad_personalization:"denied",analytics_storage:"denied",personalization_storage:"denied",functionality_storage:"granted",security_storage:"granted"}),console.log("Consent updated: default")):console.error("gtag function is not available. 004"),console.log("Keine gespeicherte Zustimmung gefunden. Standardzustimmung bleibt 'denied'.")}}]),Object(m.a)(a,[{key:"render",value:function(){var e=this;return console.log("REACT_APP_ENVIRONMENT flavor => ","geocoder"),s.a.createElement(Se,{baseWebUrl:this.state.baseWebUrl,intervalMs:5e3},s.a.createElement(d.a,null,s.a.createElement("div",null,s.a.createElement(p.d,null,s.a.createElement(p.b,{exact:!0,path:"/",component:Re}),s.a.createElement(p.b,{exact:!0,path:"/activation",component:Me}),s.a.createElement(p.b,{exact:!0,path:"/signin",component:Ue}),s.a.createElement(p.b,{exact:!0,path:"/contact",component:ya}),s.a.createElement(p.b,{exact:!0,path:"/enterprise",component:Je}),s.a.createElement(p.b,{exact:!0,path:"/status",component:ze}),s.a.createElement(p.b,{exact:!0,path:"/system-status",component:qe}),s.a.createElement(p.b,{exact:!0,path:"/documentation",component:Fe}),s.a.createElement(p.b,{exact:!0,path:"/useCases",component:La}),s.a.createElement(p.b,{exact:!0,path:"/pricing",component:Xe}),s.a.createElement(p.b,{exact:!0,path:"/plans",component:Da}),s.a.createElement(p.b,{exact:!0,path:"/login",component:Wa}),s.a.createElement(p.b,{exact:!0,path:"/changeplan",component:Ia}),s.a.createElement(p.b,{exact:!0,path:"/registrationsuccess",component:Ca}),s.a.createElement(p.b,{exact:!0,path:"/checkemailsso",component:Ra}),s.a.createElement(p.b,{exact:!0,path:"/planchangedsuccess",component:wa}),s.a.createElement(p.b,{exact:!0,path:"/faq",component:aa}),s.a.createElement(p.b,{exact:!0,path:"/termsandconditions",component:ea}),s.a.createElement(p.b,{exact:!0,path:"/imprint",component:va}),s.a.createElement(p.b,{exact:!0,path:"/dataprotection",component:ba}),s.a.createElement(p.b,{exact:!0,path:"/company",component:Na}),s.a.createElement(p.b,{exact:!0,path:"/use-cases/:slug",component:Aa}),s.a.createElement(p.a,{exact:!0,from:"/use-cases",to:"/#use-cases"}),s.a.createElement(p.b,{exact:!0,path:"/dashboard",component:Ea}),s.a.createElement(p.b,{exact:!0,path:"/subscription",component:ka}),s.a.createElement(p.b,{exact:!0,path:"/payment",component:Oa}),s.a.createElement(p.b,{exact:!0,path:"/settings",component:Ma}),s.a.createElement(p.b,{exact:!0,path:"/checkout",component:da}),s.a.createElement(p.b,{exact:!0,path:"/updatePaymentDetails",component:Ba}),s.a.createElement(p.b,{exact:!0,path:"/checkoutVerification",component:Ga}),s.a.createElement(p.b,{exact:!0,path:"/checkoutSuccess",component:ga}),s.a.createElement(p.b,{exact:!0,path:"/checkoutCancel",component:fa}),s.a.createElement(p.b,{exact:!0,component:Error})),s.a.createElement(Ce.Consumer,null,(function(a){return a&&a.consentRequired?s.a.createElement(Ge,{onConsentChange:e.handleConsentUpdate,gtmId:e.state.gtmId}):null})))))}}]),a}(n.Component),qa=Object(z.b)(Ka);Boolean("localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));r.a.render(s.a.createElement(z.a,null,s.a.createElement(qa,null)),document.getElementById("root")),"serviceWorker"in navigator&&navigator.serviceWorker.ready.then((function(e){e.unregister()}))}},[[258,152,153]]]);