PageSourceSearch

https://bbqpirat.com/assets/index-SY8ZA-Nn.js

js bbqpirat.com collected 2026-10-02 01:23:54 UTC 308,866 bytes, 172 lines download raw bytes

1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/PricingPage-BvOJaOCQ.js","assets/query-B13Ixf5M.js","assets/i18n-DLeQGtBE.js","assets/router-DXnLpR9F.js","assets/AboutPage-C7v3dIal.js","assets/ui-CIC5EaF8.js","assets/motion-Co0aF76W.js","assets/stores-BstUfRI6.js","assets/SupportPage-BPLVtS5S.js","assets/SetupPage-BE9ApEDg.js","assets/Card-CL6iLdCg.js","assets/Input-DHyonOwR.js","assets/ParticleBackground-DVeO4Jqa.js","assets/index-WTyNXO4X.js","assets/PrivacyPolicyPage-CAyFH46r.js","assets/TermsPage-C7e3oYxF.js","assets/RefundPage-CHc3XNqF.js","assets/CookiesPage-CfysrQWW.js","assets/LoginPage-DFsoBJnf.js","assets/forms-D0O1-WMG.js","assets/useAuthForm-B2YIZ0t1.js","assets/RegisterPage-Cq7dge57.js","assets/ResetPasswordPage-BzzbExSN.js","assets/VerifyEmailPage-BCp4-iEL.js","assets/RegisterSuccessPage-BpXMsXMR.js","assets/VpnAccessPage-umc0Iizv.js","assets/CtaBlock-hSBtP0EZ.js","assets/VpnYoutubePage-BNhvvjla.js","assets/VpnDiscordPage-X50lILGu.js","assets/VpnGamesPage-DcTaf9wU.js","assets/VpnRussiaPage-uHDuuFHx.js","assets/VpnTelegramPage-DrUfhL1p.js","assets/VpnBlockedPage-DuRfHolK.js","assets/ProxyTelegramPage-Djn5qzXt.js","assets/DonatePage-CBKEt0So.js","assets/VpnEncryptionPage-DmIxHYtA.js","assets/RichText-kn1UjP9I.js","assets/VpnSpeedPage-BOIWEXNn.js","assets/VpnServersPage-BLy7vXwY.js","assets/VpnDevicesPage-BEzXM0Qv.js","assets/VpnSupportPage-CnT3CxoR.js","assets/VpnGuaranteePage-DnBbVXVw.js","assets/LinksPage-CoS2bymS.js","assets/PartnerLandingPage-Dixa9XPr.js","assets/BlogIndexPage-DxbheFXK.js","assets/blog-7rR9E1sr.js","assets/BlogPostPage-D_7v9UVa.js","assets/BlogPostPage-1gd2RHeE.css","assets/DashboardPage-B9oxAPbe.js","assets/userService-CwINiNjM.js","assets/MiniAppPage-CqqDQDjW.js","assets/CheckoutPage-CAAFuh3C.js","assets/SuccessPage-CBnbI55T.js","assets/LocalizationTest-pA9ZE6tv.js","assets/CartDebug-DT4pcwyU.js"])))=>i.map(i=>d[i]);
2import{j as e,Q as t,a as r}from"./query-B13Ixf5M.js";import{i as n,b as o,g as s,a as i,R as a,u as l}from"./i18n-DLeQGtBE.js";import{r as c,u as d,a as u,L as p,B as m,R as h,b as f,N as b}from"./router-DXnLpR9F.js";import{c as g,S as y,X as _,T as x,U as v,a as w,L as N,M as P}from"./ui-CIC5EaF8.js";import{m as S,A as k}from"./motion-Co0aF76W.js";import{c as T}from"./stores-BstUfRI6.js";!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))t(e);new MutationObserver(e=>{for(const r of e)if("childList"===r.type)for(const e of r.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&t(e)}).observe(document,{childList:!0,subtree:!0})}function t(e){if(e.ep)return;e.ep=!0;const t=function(e){const t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?t.credentials="include":"anonymous"===e.crossOrigin?t.credentials="omit":t.credentials="same-origin",t}(e);fetch(e.href,t)}}();var V,E={};var A=function(){if(V)return E;V=1;var e=c();return E.createRoot=e.createRoot,E.hydrateRoot=e.hydrateRoot,E}();const O={home2:{label:"7 days free · 7 countries",title_start:"Grilling at",title_accent:"full speed",lead:"One key for your phone, laptop and TV. Set up in a couple of minutes right from Telegram.",cta_primary:"Try for free",cta_secondary:"Pricing",trust:["7 days free","Refund per terms","Cards accepted"],mock:{status:"Connected",session:"session 1 h 12 min",note:"This is how a connection looks in the app"},stats:{users:"users",countries:"server countries",uptime:"uptime",price_from:"from 110 ₽",price_label:"per month"},plans:{title:"Pricing",lead:"Every plan gets the same servers and speed. They differ only in the number of devices.",per_month:"per month",devices_one:"device",devices_few:"devices",devices_many:"devices",popular:"Most popular",choose:"Choose",all:"All plans and periods"},features:{title:"What you get",lead:"Setup takes a couple of minutes, then the service just works.",items:[{title:"Every device",text:"iPhone, Android, Windows, macOS and TV — one key for all."},{title:"Right from Telegram",text:"Your key arrives in the bot. No passwords, no long sign-ups."},{title:"Servers in 7 countries",text:"Pick a country yourself or let auto-select find the fastest."},{title:"24/7 support",text:"Real people answer in Telegram, not canned replies."}]},final:{title:"Try a week for free",lead:"No card required. Like it — pick a plan."}},pricing2:{title:"Pricing",lead:"One subscription — you pick the number of devices and the term. No hidden charges, cancel in one click.",plan_title:"Subscription",plan_note:"Every server and full speed on any plan. Only the number of devices differs.",devices:"Devices",period:"Term",protocol:"Protocol",months:{1:"1 month",3:"3 months",6:"6 months",12:"12 months"},other:"Other",custom_hint:"Any number of devices from 1 to 50 and any term from 1 to 12 months. Priced on the same discount grid as the ready-made plans.",devices_word:{one:"device",few:"devices",many:"devices"},months_word:{one:"month",few:"months",many:"months"}
2,for_period:"for {{period}}",per_month:"that is {{price}} per month",benefit:"save {{percent}}%",bonus:"+ {{days}} bonus days — the subscription lasts {{total}} days",features:["All servers and countries","Full speed, no traffic limits","A key for every device","24/7 support in Telegram"],checkout:"Checkout",add_cart:"Add to cart",added:"Added to cart",trial_title:"A week for free",trial_note:"Try before you pay: 7 days, one device, every server.",trial_features:["No card","No auto-renewal","The key arrives in Telegram within a minute"],trial_cta:"Get it in Telegram",trial_cabinet:"Activate in the cabinet",loading:"Loading prices…",offline:"Standard prices shown — the actual ones are confirmed at checkout.",pay_note:"Russian cards, SBP, Telegram Stars. Refunds under the offer."},support2:{title:"Support",lead:"Real people answer. To save time, check the list below first — these four reasons cover most requests.",checks:[{title:"“Connected”, but pages don't load",text:"Turn the VPN off and on again and try another country in the app. If a specific one helps, tell us which."},{title:"The key won't add to the app",text:"Copy the link again from the bot or the cabinet. Add it as a subscription (“Add subscription”), not as a single server."},{title:"It worked and then stopped",text:"Check the subscription term in the bot. If it's active, delete the profile in the app and add the link again: the server list will refresh."},{title:"Paid, but no subscription",text:"Wait a minute and refresh the cabinet — keys are issued once the bank confirms the payment. Still nothing — send us the amount and time of payment."}],contact_title:"Write to us",contact_lead:"Include your device and app, what you see on the screen, and when it stopped working. That way we sort it out in one message instead of five.",bot:"Support in Telegram",group:"Telegram group",foot_setup:"Setup instructions",foot_refund:"Refund terms"},about2:{title:"About",p1:"BBQ VPN has been running since 2024. It started as a Telegram bot; the website and the mini app came later — they share the same subscription and keys, so use whichever is handier.",h_do:"What we do",p_do:"We keep servers in 7 countries and make sure the connection stays fast and stable. When a server starts performing worse, we replace it — the app pulls the fresh list itself, nothing to reconfigure.",h_how:"How it works",p_how:"One subscription for your phone, laptop and TV. Every device gets its own key and works independently. The first 7 days are free, no card required.",h_not:"What we don't do",not:["we don't log visited sites or store traffic contents;","we don't share data with third parties, except the payment service to process payments;","we don't charge for what doesn't work — refund terms are described separately."],h_contact:"Contact",p_contact:"Support is in Telegram — we answer ourselves, no auto-replies. Terms of service are in the offer.",cta_plans:"See pricing",cta_trial:"Try for free"},seo:{home:{title:"BBQ VPN — Reliable VPN for Everyone",description:"Fast and secure VPN service. Military-grade encryption, servers worldwide, 24/7 support. Protect your privacy!"},pricing:{title:"Pricing — BBQ VPN",description:"Choose the perfect BBQ VPN plan. Free trial available, flexible subscriptions starting from $2/month."},about:{title:"About Us — BBQ VPN",description:"Learn about BBQ VPN's mission. We build a reliable VPN service to keep the internet free and open for everyone."},support:{title:"Support — BBQ VPN",description:"Need help? BBQ VPN Support Center — FAQ, live chat, and 24/7 email support."},privacy:{title:"Privacy Policy — BBQ VPN",description:"BBQ VPN Privacy Policy. Learn how we protect your data and ensure your privacy."},terms:{title:"Terms of Service — BBQ VPN",description:"BBQ VPN Terms of Service. Rules for using the service and responsibilities."},refund:{title:"Refund Policy — BBQ VPN",description:"BBQ VPN Refund Policy. 7-day money-back guarantee — conditions and process."},cookies:{title:"Cookie Policy — BBQ VPN",description:"BBQ VPN Cookie Policy. How we use cookies on our website."},setup:{title:"VPN Setup Guide — BBQ VPN",description:"Step-by-step BBQ VPN setup instructions for all devices: Windows, macOS, Android, iOS."}},nav:{home:"Home",pricing:"Buy",about:"About",support:"Support",privacy:"Privacy",dashboard:"Dashboard",logout:"Logout",login:"Login",register:"Sign Up",language:"Language",cart:"Cart",hello:"Hello, {{name}}",setup:"Setup",more:"More"},auth:{email:"Email",email_placeholder:"Enter your email address",password:"Password",name:"Full Name",confirm_password:"Confirm Password",login:"Login",register:"Sign Up",create_account:"Create Account",remember_me:"Remember me",forgot_password:"Forgot Password?",or:"or",welcome_back:"Welcome Back!",login_subtitle:"Sign in to your account",register_subtitle:"Create a new account to access all features",login_with_telegram:"Login with Telegram",register_with_telegram:"Register with Telegram",google_login:"Sign in with Google",google_not_loaded:"Google service failed to load. Please refresh the page.",google_error:"Google authentication error",dont_have_account:"Don't have an account?",already_have_account:"Already have an account?",login_help:"Need help with login?",need_help:"Need Help?",back_home:"Back to Home",agree_to:"I accept the",terms:"Terms of Service",consent_pdn:"and consent to the processing of my personal data under the",and:"and",privacy:"Privacy Policy",register_benefits:"Why Choose Us?",benefit_security:"Maximum data security",benefit_speed:"High connection speed",benefit_global:"Servers worldwide",benefit_guarantee:"7-day money-back guarantee",reset_password:{title:"Reset Password",description:"Enter your email to reset your password.",email_sent:{title:"Email Sent",description:"Check your email for a link to reset your password."},send_email:"Send Reset Email",back_to_login:"Back to Login"},reset_password_subtitle:"Enter your email and we'll send you a link to reset your password",send_reset_link:"Send Reset Link",check_email:"Check Your Email",reset_link_sent:"We've sent a password reset link to your email. Check your inbox and follow the instructions.",resend_link:"Resend Link",create_new_password:"Create New Password",create_new_password_subtitle:"Enter your new password below",reset_link_invali
2d:"This link is invalid or has expired. Please request a new password reset.",new_password:"New Password",password_reset_success:"Password Reset Successfully!",password_reset_success_subtitle:"Your password has been changed. You can now sign in with your new password.",sign_in_now:"Sign In Now"},validation:{email_required:"Email is required",email_invalid:"Invalid email format",password_required:"Password is required",password_min_length:"Password must be at least 8 characters",password_weak:"Password is too weak",password_hint:"Minimum 8 characters, including letters and numbers",confirm_password_required:"Password confirmation is required",passwords_dont_match:"Passwords don't match",name_required:"Name is required",name_min_length:"Name must be at least 2 characters",terms_required:"Registration requires consent to personal data processing",required:"This field is required"},support:{title:"Support Center",description:"Get help with your VPN service",faq:{title:"FAQ",description:"Find answers to common questions",button:"View FAQ"},chat:{title:"Live Chat",description:"Chat with our support team",button:"Start Chat"},email:{title:"Email Support",description:"Send us an email",button:"Send Email"},contact:{title:"Contact Us",description:"Have questions or need help? We're always ready to assist you!",name:"Name",name_placeholder:"Your name",email:"Email",email_placeholder:"[email protected]",subject:"Subject",subject_placeholder:"How can we help?",message:"Message",message_placeholder:"Describe your issue...",send:"Send Message"}},mission:{title:"Our Mission",description:"We provide the best VPN services to protect your privacy.",heading:"Company Goals",text:"We are confident in our product and ready to offer you internet freedom without restrictions."},stats:{title:"Our Statistics",description:"Data about our achievements and constant growth.",heading:"Key Indicators",text:"We are proud of our achievements and happy to provide excellent support to our users.",active_users:"Active Users",servers_worldwide:"Servers Worldwide",uptime:"Uptime"},principles:{title:"Our Principles",description:"Core values and principles of our company.",heading:"Foundations of Success",text:"We highly value honesty, innovation and customer satisfaction."},about:{ready_title:"Ready to Get Started?",ready_desc:"Join thousands of users who are already using our services",get_started:"Get Started Now"},pricing:{title:"Pricing Plans",subtitle:"Choose the perfect plan for your needs",trial:"Trial",monthly:"Monthly",semi_annual:"Semi-Annual",annual:"Annual",months:"mo.",per_month:"/month",per_key_month:"/key per mo.",devices_one:"{{count}} device",devices_other:"{{count}} devices",save:"Save {{percentage}}%",bonus_days:"+{{days}} days free",discount_per_key:"{{percentage}}% better value per key",best_value:"Best Value",choose_plan:"Choose Plan",total_price:"Total: {{price}} for {{days}} days",free:"Free",trial_period:"Trial period: {{days}} days",protocol:{outline:"Outline",vless:"VLESS"},features:{encryption:"Military-grade encryption",servers:"Servers worldwide",logs:"Secure connection",support:"24/7 support",platforms:"All platforms",guarantee:"7-day guarantee",quality_guarantee:"Quality Guarantee"},bottom:{secure_payment:"Secure Payment",secure_payment_desc:"Protected payment processing",instant_activation:"Instant Activation",instant_activation_desc:"Start using immediately",money_back:"Money-back Guarantee",money_back_desc:"7 days to get your money back",quality_guarantee:"Quality Guarantee",quality_guarantee_desc:"We guarantee access to the resources you need"},plans:{starter:"Starter",comfort:"Comfort",maximum:"Maximum",friends:"Friends",family:"Family","friends-pack":"Friends Pack","family-pack":"Family Pack","max-comfort":"Max Comfort",trial:"Trial","test-week":"Test Week","admin-custom":"Administrator",custom:"Custom plan"}},plans_preview:{title:"Choose Your Perfect Plan",subtitle:"Popular plans for every need",choose_plan:"Choose Plan",bottom_text:"Or view all our pricing plans",view_all_plans:"View All Plans"},checkout:{payment_done:"Payment received — your subscription is active, keys are in the Keys tab.",payment_not_finished:"Payment was not completed — your order is still in the cart, you can retry.",promo_discount:"{{percent}}% promo discount from the bot",promo_until:"until {{date}}",promo_placeholder:"Enter promo code",promo_apply:"Apply",promo_checking:"Checking…",promo_applied:"Promo code applied",promo_failed:"Couldn't apply the promo code",promo_login_required:"Sign in to apply a promo code",promo_replace:"Replace",promo_keep:"Keep current",
2your_order:"Your Order",item:"item",items:"items",subtotal:"Subtotal",tax:"Tax",total:"Total",continue_shopping:"Continue Shopping",proceed_to_billing:"Proceed to Billing",billing_information:"Billing Information",first_name:"First Name",last_name:"Last Name",email:"Email",phone:"Phone",country:"Country",city:"City",back_to_cart:"Back to Cart",continue_to_payment:"Continue to Payment",payment_method:"Payment Method",one_item_at_a_time:"Checkout handles one plan at a time. Leave a single item in the cart and pay for the rest in a separate order.",payment_failed:"Could not create the payment. Please try again.",credit_card:"Credit Card",card_number:"Card Number",expiry:"Expiry",cvv:"CVV",cardholder_name:"Cardholder Name",order_summary:"Order Summary",secure_payment:"Secure Payment",back_to_billing:"Back to Billing",complete_payment:"Complete Payment",processing_payment:"Processing Payment",please_wait:"Please wait...",cart:"Cart",billing:"Billing",payment:"Payment",title:"Checkout",empty_cart:"Cart is Empty",empty_cart_desc:"Add items to your cart to continue",go_to_pricing:"Go to Pricing",payment_details:"Payment Details",card:"Card",processing:"Processing...",pay_now:"Pay Now",consent_before:"By clicking “Pay Now” you accept the",consent_middle:"and consent to personal data processing under the",login_required:"Please log in or register (30 sec) to purchase a subscription"},cart:{title:"Cart",empty:"Cart is empty",browse_plans:"Browse Plans",quantity:"Quantity: {{count}}",remove:"Remove",subtotal:"Subtotal",total:"Total",checkout:"Checkout"},dashboard:{overview:"Overview",keys:"Keys",subscriptions:"Subscriptions",extend:"Purchases & Renewals",referral:"Referral",linking:"Linking",settings:"Settings",support:"Support",welcome:"Welcome",welcome_subtitle:"Here's a quick overview of your activity",keys_subtitle:"Manage your VPN keys",generate_key:"Generate Key",search_keys:"Search keys...",all_protocols:"All protocols",filter:"Filter",no_keys_found:"No keys found",no_keys_description:"You don't have any VPN keys yet",generate_first_key:"Generate first key",active:"Active",inactive:"Inactive",created:"Created",vpn_key:"VPN key",last_used:"Last used",active_keys:"Active keys",add_subscription:"Add Subscription",subscriptions_subtitle:"Manage your active subscriptions and plans",linking_subtitle:"Link your Telegram account for notifications and management",telegram_account:"Telegram account",not_connected:"Not connected",open_telegram_bot:"Open Telegram bot",how_to_link:"How to link your account:",linking_step_1:"Open our Telegram bot",open_bot:"Open bot",linking_step_2:"Send this code to the bot",linking_code:"Linking code",generate_new:"Generate new",linking_step_3:"Wait for confirmation",linking_note:"Note",linking_note_text:"Code is valid for 10 minutes. After linking, you can manage subscriptions through Telegram.",telegram_features:"Telegram Features",feature_key_management:"Key Management",feature_key_management_desc:"Create and manage VPN keys",feature_usage_stats:"Usage Statistics",feature_usage_stats_desc:"View traffic and connection statistics",feature_notifications:"Notifications",feature_notifications_desc:"Automatic notifications about important events",feature_support:"Support",feature_support_desc:"Quick access to technical support",notification_settings:"Notification Settings",notification_subscription_expiry:"Subscription Expiry",notification_subscription_expiry_desc:"Notifications 7, 3, and 1 day before expiry",notification_key_generation:"Key Generation",notification_key_generation_desc:"Notifications about new VPN key creation",notification_system_updates:"System Updates",notification_system_updates_desc:"Information about system updates",notification_promotions:"Promotions",notification_promotions_desc:"Special offers and discounts",link_telegram_for_notifications:"Link Telegram to receive notifications",security_note:"Security",security_note_text:"Your data is protected. We only use your Telegram account ID for sending notifications.",confirm_unlink_telegram:"Are you sure you want to unlink Telegram?",active_subscriptions:"Active Subscriptions",expired_subscriptions:"Expired Subscriptions",total_devices:"Total Devices",days_until_renewal:"Days Until Renewal",total_annual_cost:"Total Annual Cost",days_remaining:"days remaining",per_year:"/year",auto_renew_on:"Auto-renewal enabled",auto_renew_off:"Auto-renewal disabled",total_keys:"Total Keys",data_used:"Data Used",devices:"Devices",server:"Server",data_usage:"Data Usage",expires:"Expires",expired_on:"Expired on ",recent_activity:"Recent Activity",view_all_activity:"View All Activity",system_status:"System Status",all_systems_operational:"All systems operational",servers:"Servers",uptime:"uptime",speed:"Speed",optimal:"optimal",security:"Security",secure:"secure",quick_actions:{title:"Quick Actions",generate_key:"Generate Key",generate_key_desc:"Create a new VPN key",extend_plan:"Extend Plan",extend_plan_desc:"Extend subscription period",link_telegram:"Link Telegram",link_telegram_desc:"Connect your Telegram"},extend_subscription:"Extend Subscription",manage_billing:"Manage Billing",download_invoice:"Download Invoice",disable_auto_renew:"Disable Auto-renewal",enable_auto_renew:"Enable Auto-renewal",renew_subscription:"Renew Subscription",no_active_subscriptions:"No Active Subscriptions",no_active_subscriptions_desc:"Start by choosing a suitable plan",get_subscription:"Get Subscription",devices_subtitle:"See which devices use your subscription and free up slots",devices_slots_title:"Device slots",devices_slots_used:"{{used}} of {{limit}} in use",devices_slots_used_unknown:"{{used}} in use",devices_slots_free:"{{n}} free",devices_slots_full:"all slots taken",devices_plan:"Plan",devices_list_title:"Linked devices",devices_refresh:"Refresh",devices_unlink:"Unlink",devices_unlink_all:"Unlink all",devices_unknown_device:"Unknown device",devices_unknown_platform:"Platform unknown",devices_last_seen:"Last activity",devices_linked_at:"Linked",devices_no_data:"no data",devices_inactive_badge:"idle for {{days}} d.",devices_empty_title:"No linked devices",devices_empty_desc:"A device shows up here after it connects to your subscription for the first time.",devices_no_subscription_title:"No active subscription",devices_no_subscription_desc:"Device slots come with a plan. Pick one and your devices will show up here.",devices_no_subscription_cta:"Choose a plan",devices_confirm_title:"Unlink this device?",devices_confirm_text:"The slot is freed right away. The device will simply stop updating the subscription — to use it again you will have to link it back.",devices_confirm_all_title:"Unlink all devices?",devices_confirm_all_text:"All {{n}} devices will lose access to the subscription. This cannot be undone — every device will have to be linked again.",devices_confirm_button:"Unlink",devices_cancel:"Cancel",devices_note_title:"How unlinking works",devices_note_text:"Unlinking frees the slot immediately: the device simply stops updating the subscription and loses access on its next refresh. The subscription itself, its expiry date and your keys are not affected — only the slot is released, so a new device can take it.",devices_toast_unlinked:"Device unlinked, the slot is free",devices_toast_unlinked_all:"All devices unlinked",devices_toast_already_unlinked:"This device was already unlinked — the list is up to date",devices_error_load:"Could not load the device list",devices_error_panel:"The VPN panel is not responding. Try again in a minute.",devices_error_generic:"Something went wrong. Please try again.",devices_retry:"Try again"},hero:{badge:"Grilling at full speed!",free_trial_badge:"7 days free",title:{reliable:"Reliable",secure:"Secure",vpn:"VPN",for_everyone:"for Everyone"},description:"Get unlimited internet access with maximum security and speed",stats:{users:"Users",servers:"Servers",countries:"Countries",uptime:"Uptime"},cta:{get_started:"Get Started",learn_more:"Learn More"},trust:{protection:"Maximum Protection",fast_speed:"High Speed",quality_guarantee:"Quality Guarantee",no_logs:"No Logs",fast_speeds:"Fast Speeds",money_back:"7-day Money-back"}},success:{title:"Payment Successfully Processed!",description:"Thank y
2ou for your purchase! Your subscription is now active.",subtitle:"Your order has been confirmed",go_to_dashboard:"Go to Dashboard",go_to_home:"Go to Home",next_steps:"Next Steps:",check_email:"Check your email",download_app:"Download our app",setup_guide:"Follow the setup guide",order_number:"Order Number",order_summary:"Order Summary",total:"Total",order_date:"Order Date",email:"Email",download_invoice:"Download Invoice",quick_actions:"Quick Actions",view_keys:"View Keys",contact_support:"Contact Support",estimated_delivery:"Instant activation",next_steps_description:"Follow these steps to start using your VPN",security_note:"Security Note",security_note_description:"Your payment was processed securely. We do not store your card details.",cta:{title:"Ready to Get Started?",description:"Set up your VPN in minutes",dashboard:"Go to Dashboard",setup:"Setup Guide"},steps:{email:{title:"Check Email",description:"We sent confirmation to your email"},keys:{title:"Get Your Keys",description:"View and copy your VPN keys"},setup:{title:"Setup VPN",description:"Follow the setup guide for your device"}}},time:{days_ago_one:"{{count}} day ago",days_ago_other:"{{count}} days ago",hours_ago_one:"{{count}} hour ago",hours_ago_other:"{{count}} hours ago",minutes_ago_one:"{{count}} minute ago",minutes_ago_other:"{{count}} minutes ago",just_now:"Just now"},account_linking:{status:"Link Status",email_account:"Email Account",telegram_account:"Telegram Account",source:"Source",link_by_code:"Link by Code",enter_code:"Enter the code from Telegram bot",link_accounts:"Link Accounts",how_to_link:"How to Link",step_1:"Open our Telegram bot",step_2:"Send the /link command",step_3:"Copy the code and paste it here",step_4:"Click 'Link Accounts'"},common:{loading:"Loading..."},features:{title:"Why BBQ VPN?",subtitle:"We provide enterprise-grade security with consumer-friendly experience",encryption:{title:"Military Encryption",description:"AES-256 encryption protects your data from hackers and surveillance"},speed:{title:"Lightning Fast",description:"Optimized servers ensure maximum speed without compromising security"},network:{title:"Reliable Network",description:"4 high-performance servers in Russia, Europe, and the USA for a stable connection"},devices:{title:"All Devices",description:"Native apps for all popular platforms"},support:{title:"24/7 Support",description:"Expert technical support available around the clock"},guarantee:{title:"Quality Guarantee",description:"We guarantee the quality of our service"},learn_more:"Learn more →"},trust:{title:"Trusted Worldwide",subtitle:"Join thousands of satisfied customers who trust BBQ VPN",stats:{users:"Active Users",servers:"Servers",countries:"Countries",uptime:"Uptime"},testimonials:{title:"What Our Users Say"},platforms:{title:"Available on All Platforms",description:"Download our apps or configure manually on any device"}},footer:{description:"BBQ VPN provides secure VPN service for users worldwide",product:"Product",support:"Support",contact_us:"Contact Us",pricing:"Pricing",features:"Features",setup_guides:"Setup Guides",about:"About Us",help_center:"Help Center",contact:"Contact",faq:"FAQ",status:"Server Status",privacy:"Privacy Policy",terms:"Terms of Service",cookie_banner:"We use cookies: essential ones for sign-in and payments, analytics (Yandex Metrika, Google Tag Manager) only with your consent.",cookie_more:"Learn more",cookie_accept:"Accept all",cookie_necessary:"Essential only",refund:"Refund Policy",cookies:"Cookie Policy",live_chat:"Live Chat",rights_reserved:"All rights reserved."},seo_links:{title:"VPN for Popular Services",subtitle:"Fast, private connection for any service",links:{access:{label:"Unrestricted VPN",desc:"Free access to any resources"},youtube:{label:"VPN for YouTube",desc:"Watch YouTube without slowdowns"},discord:{label:"VPN for Discord",desc:"Chat without restrictions"},games:{label:"VPN for Gaming",desc:"Play without lag or region locks"},russia:{label:"VPN in Russia 2026",desc:"Works despite TSPU blocks"},telegram:{label:"VPN for Telegram",desc:"Telegram always online"},proxy:{label:"Telegram Proxy",desc:"Fast proxy without installing apps"},encryption:{label:"VPN Encryption",desc:"AES-256 encryption for data protection"},speed:{label:"Fast VPN",desc:"VPN without speed loss up to 100 Mbps"},servers:{label:"VPN Servers",desc:"Servers in Russia, Europe, and USA"},devices:{label:"VPN for All Devices",desc:"Android, iOS, Windows, macOS, Linux"},vpnSupport:{label:"VPN Support",desc:"24/7 technical support"},guarantee:{label:"Money-Back Guarantee",desc:"7-day trial, 7-day refund after the first payment"}}},testimonials:{user1:{name:"Maxim K.",role:"Freelancer",text:"Finally a VPN that actually works in Russia. YouTube and Instagram are fast, Telegram never drops. Been using it for 6 months without a single issue."},user2:{name:"Anna R.",role:"Student",text:"Tried the free trial and bought a subscription right away. Setup took 5 minutes directly in Telegram — no complicated configurations."},user3:{name:"Dmitry V.",role:"Developer",text:"Stable speeds even during peak hours. GitHub, npm, Docker Hub all work flawlessly. Very reasonable pricing."}},errors:{network:"Network error. Please check your connection.",server:"Server error. Please try again later.",validation:"Please check your input.",not_found:{title:"Page Not Found",description:"The page you are looking for does not exist.",go_home:"Go Home"}},seoPages:{common:{tryFree:"Try for free",viewPricing:"View pricing",trialNote:"7 days free — no credit card required",createAccount:"Create a free account",relatedPages:"Read also:",usefulPages:"Useful pages",checkUnlimited:"Unlimited traffic",checkSpeed:"Speed up to 100 Mbps",checkPayment:"Pay by card or Stars",checkCancel:"Cancel anytime"},encryption:{title:"VPN with AES-256 Encryption — Data Protection | BBQ VPN",description:"Secure VPN with military-grade AES-256 encryption. Traffic protection from surveillance and data leaks. VLESS + REALITY protocol. No logs. 7-day free trial.",h1:"VPN with AES-256 encryption",h1Gradient:" — complete data protection",heroText:"A secure VPN with military-grade encryption. The VLESS + REALITY protocol disguises your traffic as ordinary HTTPS — your ISP can't tell you're using a VPN. AES-256 traffic encryption, a strict no-logs policy, and DNS and WebRTC leak protection.",featuresTitle:"Why BBQ VPN is the most secure VPN",features:[{title:"AES-256 encryption",description:"AES-256 is a military-grade standard. Your traffic cannot be decrypted even if intercepted. BBQ VPN uses AES-256 to protect all of your data."},{title:"VLESS + REALITY protocol",description:"The VLESS protocol with REALITY technology disguises VPN traffic as normal HTTPS. The connection looks like an ordinary website visit, so it stays stable on any network."},{title:"No-logs policy",description:"BBQ VPN does not store activity logs, browsing history, or DNS queries. We don't know 
2which sites you visit — and we can't share that data with third parties."},{title:"Leak protection",description:"Full protection against DNS and WebRTC leaks. Your real IP address stays hidden even if the VPN connection drops. A secure VPN for true data protection."}],stepsTitle:"How to protect your data with a VPN — 3 simple steps",steps:[{title:"Sign up for free",description:'Create an account on the website or via the <a href="https://t.me/BBQ_VPN_BOT?start=track_site_faq_encryption" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Telegram bot</a> <a href="https://t.me/BBQ_VPN_BOT?start=track_site_faq_encryption" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">@BBQ_VPN_BOT</a> — no credit card required'},{title:"Install the Happ app",description:'Download <a href="https://happ.su/" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Happ</a> for your device — Android, iOS, Windows, macOS, or Smart TV'},{title:"Your traffic is protected",description:"Connect to a server — all traffic is encrypted with AES-256 and routed through a secure VLESS tunnel"}],platformsTitle:"A secure VPN on any device",platformsSubtitle:"AES-256 VPN traffic encryption works on Android, iOS, Windows, macOS, Linux, and Smart TV. One subscription — all platforms protected.",ctaTitle:"Protect your data — 7 days free",ctaDescription:"Free trial without a credit card. Paid plans starting from $1.30/month.",ctaChecks:["AES-256 encryption","No activity logs","Pay by card or Stars","Cancel anytime"],extraTitle:"How VPN encryption works",extraSubtitle:"VPN traffic encryption is a cornerstone of online security.",extra:[{title:"How VPN traffic encryption works",content:"When you connect to BBQ VPN, all of your internet traffic passes through an encrypted tunnel. AES-256 encrypts every data packet — from search queries to passwords and banking transactions. Even if an attacker intercepts your traffic, they'll see only meaningless gibberish. The VLESS protocol adds another layer of protection by disguising traffic as regular HTTPS."},{title:"Why you need a no-logs VPN",content:"A no-logs VPN means the service doesn't keep any history of your activity. BBQ VPN does not record which sites you visit, which files you download, or what DNS queries you send. This is a fundamental principle — even in response to third-party requests, we can't hand over data we don't have. A no-logs policy is essential for a truly secure VPN."}],faq:[{title:"Why do you need VPN traffic encryption?",content:"VPN traffic encryption protects your data from being intercepted on public Wi-Fi, from ISP surveillance, and from man-in-the-middle attacks. Without an encrypted VPN, your ISP can see every site you visit, and attackers on open networks can steal passwords and payment details. BBQ VPN uses AES-256 — the same encryption standard used by banks and government agencies to protect classified information."},{title:"Which VPN with encryption should you choose in 2026?",content:"In 2026 it's important to choose a VPN with a modern encryption protocol. Outdated protocols like PPTP and L2TP are slower and cope worse with modern networks. BBQ VPN uses the VLESS protocol with REALITY technology — the latest standard that disguises VPN traffic as ordinary HTTPS. Compared to OpenVPN, VLESS has lower overhead and higher speed at the same AES-256 encryption level. A secure VPN in 2026 means VLESS + REALITY + AES-256."},{title:"A no-logs VPN — why does it matter?",content:"A no-logs VPN ensures your activity history isn't stored anywhere. Many VPN services claim a no-logs policy but still keep metadata — connection times, traffic volume, IP addresses. BBQ VPN keeps no activity logs as a matter of principle. We don't know 
2which sites you visit and can't share that information on request. VPN data protection starts with no logs — it's the foundation of online privacy."},{title:"How is VLESS different from OpenVPN?",content:"VLESS is a modern VPN protocol designed as a lightweight alternative to VMess and OpenVPN. Its main advantage is minimal encryption overhead, which enables speeds of up to 100 Mbps. REALITY technology lets VLESS disguise traffic as regular HTTPS, making it indistinguishable from ordinary web browsing for deep packet inspection (DPI) systems. OpenVPN, in contrast, has a distinctive signature and is easily detected by ISPs. BBQ VPN uses VLESS + REALITY + AES-256 — the optimal combination of speed, security, and resistance to blocks."}],relatedLinks:[{to:"/vpn-speed",label:"Fast VPN with no speed loss"},{to:"/vpn-servers",label:"VPN servers in Russia and Europe"},{to:"/pricing",label:"BBQ VPN pricing"},{to:"/setup",label:"Setup guide"}]},speed:{title:"Fast VPN with No Speed Loss — Up to 100 Mbps | BBQ VPN",description:"The fastest VPN in Russia. VLESS protocol up to 100 Mbps with no quality loss. VPN for 4K streaming and gaming. 7 days free.",h1:"Fast VPN",h1Gradient:" with no speed loss",heroText:"The fastest VPN with the VLESS protocol — speeds up to 100 Mbps with no buffering. A VPN for 4K streaming, online gaming, and file downloads. Low ping thanks to servers in Russia and Europe. VPN speed you won't be able to tell apart from a direct connection.",featuresTitle:"Why BBQ VPN is the fastest VPN",features:[{title:"Speeds up to 100 Mbps",description:"The VLESS protocol with minimal overhead delivers speeds of up to 100 Mbps. A fast VPN with no speed loss — you won't even notice you're on a VPN."},{title:"Buffer-free 4K streaming",description:"Watch YouTube, Netflix, and other services in 4K without delay. A VPN for streaming with servers optimized for video content."},{title:"Low ping for gaming",description:"Minimal latency thanks to servers in Russia and Europe. A low-ping VPN for CS2, Valorant, Dota 2, and other online games."},{title:"Optimized servers",description:"BBQ VPN servers are located in Russia, the Netherlands, Switzerland, and the US. Automatic selection of the closest server for maximum VPN speed."}],stepsTitle:"A fast VPN in 3 steps",steps:[{title:"Sign up for free",description:'Create an account on the website or via the <a href="https://t.me/BBQ_VPN_BOT?start=track_site_faq_speed" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Telegram bot</a> <a href="https://t.me/BBQ_VPN_BOT?start=track_site_faq_speed" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">@BBQ_VPN_BOT</a> — no credit card required'},{title:"Pick the closest server",description:"Connect to a server in Russia for the lowest ping or to a European server to access content"},{title:"Enjoy the speed",description:"Stream 4K video, play online, and download files — without any speed loss"}],platformsTitle:"A fast VPN on any device",platformsSubtitle:"Maximum VPN speed on Android, iOS, Windows, macOS, Linux, and Smart TV. One subscription — all platforms.",ctaTitle:"Test the speed — 7 days free",ctaDescription:"Free trial without a credit card. Paid plans starting from $1.30/month.",ctaChecks:["Speed up to 100 Mbps","Unlimited traffic","Pay by card or Stars","Cancel anytime"],extraTitle:"Why VLESS is faster than OpenVPN",extraSubtitle:"A comparison of VPN protocol speeds and tips for gamers.",extra:[{title:"Why VLESS is faster than OpenVPN",content:"OpenVPN uses double encryption and a TCP wrapper, which creates significant overhead — speeds can drop by 30-50%. The VLESS protocol works with minimal overhead: data is encrypted once, and REALITY technology provides masking without adding load. The result — VPN speeds of up to 100 Mbps at the same security level. A fast VPN means VLESS."},{title:"VPN for online gaming",content:"Low ping is critical for online gaming. BBQ VPN offers servers in Russia with latency from 5 ms and servers in Europe with ping from 30 ms. The VLESS protocol adds no noticeable delay — your ping in CS2, Valorant, or Dota 2 will stay nearly the same as without a VPN. Play with DDoS protection and no ISP restrictions."}],faq:[{title:"Why does a VPN slow down the internet, and how can you avoid it?",content:"VPNs slow down the internet because of data encryption and routing through a remote server. Outdated protocols like OpenVPN and PPTP create significant overhead — speeds can drop by 40-60%. BBQ VPN solves this with the VLESS protocol, which has minimal overhead. VPN speeds with VLESS reach up to 100 Mbps, comparable to a direct connection. To get maximum speed, pick the closest server — for users in Russia that's the Russian node. A fast VPN with no speed loss is a reality with BBQ VPN."},{title:"The best VPN for streaming in 2026",content:"4K streaming requires a stable speed of at least 25 Mbps. BBQ VPN delivers up to 100 Mbps — enough for several 4K streams at once. BBQ VPN's streaming service is optimized for YouTube, Netflix, Twitch, and other platforms. Servers in Russia, Europe, and the US let you pick the optimal route for any service. The 
2VLESS protocol ensures a stable connection without drops — video loads instantly, with no buffering."},{title:"A low-ping VPN for gaming",content:"For online gaming, it's not just speed that matters — ping (the latency between your device and the game server) is critical too. BBQ VPN offers Russian servers with ping from 5 ms — practically imperceptible latency for any game. European servers deliver ping from 30 ms, which is acceptable for most shooters and MOBAs. BBQ VPN is the optimal choice for gamers who need DDoS protection and ISP-bypass without hurting gameplay. The VLESS protocol adds no noticeable delay thanks to minimal overhead."}],relatedLinks:[{to:"/vpn-encryption",label:"VPN with AES-256 encryption"},{to:"/vpn-servers",label:"VPN servers in Russia and Europe"},{to:"/vpn-youtube",label:"VPN for YouTube"},{to:"/pricing",label:"BBQ VPN pricing"}]},servers:{title:"VPN Servers in Russia, Europe, and the USA | BBQ VPN",description:"BBQ VPN servers in Russia, the Netherlands, Switzerland, Romania, and the USA. Stable connection. VLESS + REALITY. 7 days free.",h1:"VPN servers",h1Gradient:" in Russia, Europe, and the USA",heroText:"BBQ VPN servers are located in Russia, the Netherlands, Switzerland, Sweden, and the US. VLESS + REALITY protocol and the best server choice for every task. Russian VPN servers for YouTube, European and US servers for international content.",featuresTitle:"BBQ VPN server locations",features:[{title:"Servers in Russia",description:"A Russian node for access to YouTube, Rutube, and other services. The lowest ping for users in Russia — from 5 ms. Russian VPN servers for maximum speed."},{title:"Servers in Europe",description:"Servers in the Netherlands, Switzerland, and Sweden. European VPN servers for access to European content, services, and apps without restrictions."},{title:"US server",description:"A US server for access to American content — Netflix US, Hulu, HBO Max, and others. US VPN servers with a high-speed connection."},{title:"Automatic server selection",description:'The <a href="https://happ.su/" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Happ</a> app automatically picks the best server based on your location and task. Or choose a server manually — for maximum control.'}],stepsTitle:"Connecting to a server — 3 simple steps",steps:[{title:"Sign up for free",description:'Create an account on the website or via the <a href="https://t.me/BBQ_VPN_BOT?start=track_site_faq_servers" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Telegram bot</a> <a href="https://t.me/BBQ_VPN_BOT?start=track_site_faq_servers" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">@BBQ_VPN_BOT</a> — no credit card required'},{title:"Pick a server",description:'Open the server list in the <a href="https://happ.su/" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Happ</a> app and choose the country you need — Russia, Europe, or the US'},{title:"Connect",description:"Tap the connect button — within a second you're already routed through the chosen VPN server"}],platformsTitle:"VPN servers on any device",platformsSubtitle:"Connect to BBQ VPN servers from Android, iOS, Windows, macOS, Linux, and Smart TV. One subscription — all platforms and all servers.",ctaTitle:"Access to all servers — 7 days free",ctaDescription:"Free trial without a credit card. Paid plans starting from $1.30/month.",ctaChecks:["Servers in 5+ countries","Unlimited traffic","Pay by card or Stars","Cancel anytime"],extraTitle:"Why VPN servers in different c
2ountries matter",extraSubtitle:"Your server choice affects speed, content access, and privacy level.",extra:[{title:"Why VPN servers in different countries matter",content:"Different servers serve different purposes. A Russian server provides the lowest ping and YouTube access via the Russian node. European servers unlock access to services unavailable from Russia. A US server is needed for American content — Netflix, Hulu, and other platforms. BBQ VPN offers servers in 5+ countries — pick the optimal one for your task."},{title:"Russian servers for YouTube",content:"The BBQ VPN Russian node keeps video smooth — traffic passes through a secure VLESS tunnel. At the same time, your IP remains Russian, which matters for services with geo-restrictions. Connection speed via the Russian server is up to 100 Mbps with ping from 5 ms."}],faq:[{title:"VPN servers in Russia — why do you need a Russian node?",content:"VPN servers in Russia serve two main purposes. First, the Russian node provides the lowest ping for users in Russia — from 5 ms, which is critical for online gaming and video calls. Second, traffic through a Russian VPN server goes through a secure VLESS tunnel — YouTube, Instagram, and other throttled services work at full speed. At the same time, your IP address remains Russian, which is important for accessing Russian services with geo-restrictions. BBQ VPN offers servers in Moscow with high throughput and a stable 24/7 connection."},{title:"VPN servers in Europe",content:"BBQ VPN's European VPN servers are located in the Netherlands, Switzerland, and Sweden. The Netherlands is one of the best VPN locations thanks to favorable legislation and excellent network infrastructure. Switzerland is known for strict privacy laws. Sweden offers high speed and stability. European VPN servers give you access to European services, including streaming platforms with regional restrictions. Ping to European servers from Russia is 30-60 ms — comfortable for web browsing and streaming."},{title:"VPN servers in the USA",content:"BBQ VPN's US VPN server is located in Los Angeles — one of the largest internet hubs on the US West Coast. US VPN servers are essential for accessing American content: Netflix US, Hulu, HBO Max, and Amazon Prime Video with the US catalog. You can also use the US server to access services that only work in the US — for example, certain banking apps and stores. Connection speed to the US server is up to 80 Mbps, with ping from 120 ms — enough for comfortable streaming and web browsing."}],relatedLinks:[{to:"/vpn-speed",label:"Fast VPN with no speed loss"},{to:"/vpn-encryption",label:"VPN with AES-256 encryption"},{to:"/vpn-youtube",label:"VPN for YouTube"},{to:"/pricing",label:"BBQ VPN pricing"}]},devices:{title:"VPN for All Devices — Android, iOS, Windows, macOS | BBQ VPN",description:"BBQ VPN works on all devices: Android, iPhone, Windows, macOS, Linux, Smart TV. One subscription — up to 12 devices. Setup in 2 minutes. 7 days free.",h1:"VPN for all devices",h1Gradient:" — one subscription",heroText:"One BBQ VPN subscription covers up to 12 devices. A VPN for phones on Android and iPhone, a VPN for computers on Windows and macOS, and a VPN for every device including Linux and Smart TV. Setup in 2 minutes, 7 days free without a credit card.",featuresTitle:"BBQ VPN works on every platform",features:[{title:"Android and iOS",description:'Install BBQ VPN on your phone in 2 minutes. The <a href="https://happ.su/" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Happ</a> app is available on Google Play and the App Store. A VPN for your phone that works reliably and doesn\'t drain the battery.'},{title:"Windows and macOS",description:'A VPN for computers on Windows 10/11 and macOS. The <a href="https://happ.su/" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Happ</a> client launches with one click. Protect your work PC and laptop with a single subscription.'}
2,{title:"Linux",description:'Support for Ubuntu, Debian, Fedora, and other distros. Set up via the command line or the graphical <a href="https://happ.su/" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Happ</a> client. A VPN for advanced users.'},{title:"Smart TV",description:"A VPN for TVs — Android TV, Apple TV, Fire TV Stick. Watch YouTube, streaming services, and IPTV without restrictions on the big screen."}],stepsTitle:"Connect a VPN to all your devices — 3 steps",steps:[{title:"Sign up for free",description:'Create an account at bbqpirat.com or via the <a href="https://t.me/BBQ_VPN_BOT?start=track_site_faq_devices" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Telegram bot</a> <a href="https://t.me/BBQ_VPN_BOT?start=track_site_faq_devices" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">@BBQ_VPN_BOT</a> — no credit card required'},{title:"Download the Happ app",description:'Install <a href="https://happ.su/" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Happ</a> on your device — Android, iOS, Windows, macOS, Linux, or Smart TV'},{title:"Connect all your devices",description:"Add the subscription to each device using the link from your account — up to 12 devices on one account"}],platformsTitle:"Supported platforms",platformsSubtitle:"VPN for Android, iOS, Windows, macOS, Linux, and Smart TV. One subscription — all devices.",ctaTitle:"Connect all your devices free for 7 days",ctaDescription:"Free trial without a credit card. Paid plans starting from $1.30/month.",ctaChecks:["Up to 12 devices","Unlimited traffic","All platforms","Cancel anytime"],extraTitle:"VPN for Android — step by step",extraSubtitle:"Set up a VPN on Android in 2 minutes — download Happ and connect.",extra:[{title:"How to install a VPN on Android",type:"list",items:["Sign up at bbqpirat.com or via @BBQ_VPN_BOT","Download the Happ app from Google Play or the APK from the website","Open the subscription link from your account",'Tap "Connect" — your VPN is up and running']},{title:"A VPN for multiple devices",content:"With BBQ VPN you can connect up to 12 devices on a single subscription. Phone, tablet, laptop, work computer, and Smart TV — all protected by one account. Family plans let you share the subscription with family members. Each device connects independently and can use different servers."}],faq:[{title:"A VPN for your phone — Android and iPhone",content:'BBQ VPN for phones works on Android 7+ and iOS 15+. The <a href="https://happ.su/" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Happ</a> app installs in a minute and requires no complex configuration. The Android VPN connects automatically on launch — your traffic is always protected. The iPhone VPN is just as simple: download <a href="https://happ.su/" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Happ</a> from the App Store, add the subscription, and tap "Connect". The VPLESS protocol ensures a stable connection even on mobile networks.'},{title:"A VPN for your computer — Windows, macOS, Linux",content:'BBQ VPN for computers supports Windows 10/11, macOS 12+, and popular Linux distributions. The Windows VPN installs via the <a href="https://happ.su/" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Happ</a> client — run the installer, add the subscription, and connect in one click. The macOS VPN works the same way. For Linux there\'s both a graphical client and command-line configuration. Connection speeds of up to 100 Mbps on all platforms.'},{title:"A VPN for all devices — family plans",content:"BBQ VPN offers plans for multiple devices — from 1 to 12. One subscription covers every device in the family: smartphones, tablets, computers, and TVs. A VPN for all devices starts at $1.30/month per device, with discounts on 6- and 12-month plans. The 7-day free trial lets you test it on every device without a credit card."}],relatedLinks:[{to:"/setup",label:"Setup guide"},{to:"/vpn-speed",label:"VPN speed"},{to:"/vpn-support",label:"24/7 support"},{to:"/pricing",label:"Pricing and plans"}]},support:{title:"VPN with 24/7 Support — Fast Response | BBQ VPN",description:"BBQ VPN with 24/7 technical support. Fast response, setup help, Telegram bot. Reliable support without waiting. 7 days free.",h1:"VPN with",h1Gradient:" 24/7 support — always on",heroText:"Technical support via a Telegram bot. Help with setup on any device, reply within 5 minutes. Reliable support without queues — we solve any issue quickly and to the point. 7 days free without a credit card.",featuresTitle:"Why BBQ VPN support is the best",features:[{title:"Telegram support bot",description:'Message <a href="https://t.me/BBQ_VPN_BOT?start=track_site_faq_support" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">@BBQ_VPN_BOT</a> in Telegram and get help instantly. The bot answers common questions and a live operator steps in when needed.'},{title:"Reply within 5 minutes",description:"Average response time — 5 minutes. No tickets, no queues. We reply fast because we value your time."}
2,{title:"Real human support",description:"Fully staffed support with real people. No language barriers — we'll explain everything clearly and help set up the VPN on any device."},{title:"Guides and instructions",description:"Detailed step-by-step setup instructions for Android, iOS, Windows, macOS, and Smart TV. Video tutorials and text guides."}],stepsTitle:"How to get help — 3 simple steps",steps:[{title:"Describe the issue",description:'Message the <a href="https://t.me/BBQ_VPN_BOT?start=track_site_faq_support" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Telegram bot</a> <a href="https://t.me/BBQ_VPN_BOT?start=track_site_faq_support" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">@BBQ_VPN_BOT</a> or the website — describe what isn\'t working or what you need to set up'},{title:"Get a solution",description:"An operator will reply within 5 minutes with step-by-step instructions or connect remotely to help"},{title:"Problem solved",description:"Make sure everything works. We don't close a ticket until you confirm the issue is resolved"}],platformsTitle:"We help you set up a VPN on any device",platformsSubtitle:"VPN setup support for Android, iOS, Windows, macOS, Linux, and Smart TV.",ctaTitle:"Try BBQ VPN with 24/7 support",ctaDescription:"7 days free. Support available around the clock.",ctaChecks:["Reply within 5 minutes","Real human support","Setup assistance","Plans from $1.30/mo"],extraTitle:"Support via Telegram",extraSubtitle:"The fastest way to get help is to message our bot on Telegram.",extra:[{title:"Support via Telegram",type:"list",items:["Open Telegram and find @BBQ_VPN_BOT",'Tap "Support" in the bot menu',"Describe the issue — the bot will suggest a solution or switch you to an operator","Get a reply within 5 minutes"]},{title:"Setup instructions",content:'The bbqpirat.com website has detailed instructions for setting up a VPN on every device. Step-by-step guides with screenshots will help you install the <a href="https://happ.su/" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Happ</a> app and connect to the VPN in 2 minutes. If anything goes wrong — message support and we\'ll help set up the VPN remotely.'}],faq:[{title:"Why fast support matters",content:"Most VPN services respond slowly with canned, templated replies. If you run into a connection or setup issue, that turns into hours of back-and-forth. BBQ VPN offers real, fast, and reliable support. Our operators understand the specifics of local ISPs and will help solve any problem quickly and to the point. VPN tech support runs 24/7, no days off."},{title:"Help setting up a VPN on any device",content:"Not sure how to install a VPN on Android or iPhone? Can't connect on Windows or macOS? BBQ VPN support will help you set up a VPN on any device. We provide step-by-step instructions and can walk you through setup remotely via Telegram. VPN setup assistance is included in every plan — even the 7-day free trial."},{title:"VPN tech support via Telegram",content:'Telegram is the most convenient way to reach VPN tech support. The <a href="https://t.me/BBQ_VPN_BOT?start=track_site_faq_support" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">@BBQ_VPN_BOT</a> bot instantly answers common questions: how to download the app, how to add a subscription, how to change servers. For complex questions a live operator takes over with an average 5-minute response time. A VPN with Telegram-based tech support is fast, convenient, and free of bureaucracy.'}],relatedLinks:[{to:"/support",label:"Support center"},{to:"/setup",label:"Setup guide"},{to:"/vpn-devices",label:"VPN for all devices"},{to:"/pricing",label:"Pricing and plans"}]}
2,guarantee:{title:"VPN with Money-Back Guarantee — 7 Days Free | BBQ VPN",description:"Try BBQ VPN free for 7 days with no credit card. Money-back guarantee. No risk. Plans from $1.30/month.",h1:"VPN with a",h1Gradient:" money-back guarantee",heroText:"Try BBQ VPN free for 7 days without a credit card. Money-back guarantee after payment. A risk-free VPN — test the speed and stability before you pay. Unlimited VPN plans from $1.30/month.",featuresTitle:"BBQ VPN — no risk, no hidden terms",features:[{title:"7 days free",description:"A full-featured trial period with no limits. Unlimited traffic, all servers, maximum speed — 7 days free for every new user."},{title:"No credit card required",description:"You don't need a credit card to activate the free trial. No hidden charges. Just sign up and start using the VPN."},{title:"Money back",description:"Not for you? Full refund within 7 days of your first payment, no awkward questions. After that and on renewals — a refund for the unused days. Transparent refund policy."},{title:"No risk",description:"Try it for free, check the speed and stability, and only then decide. No commitments and no auto-renewals."}],stepsTitle:"How to try the VPN for free — 3 steps",steps:[{title:"Sign up for free",description:'Create an account at bbqpirat.com or via the <a href="https://t.me/BBQ_VPN_BOT?start=track_site_faq_guarantee" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Telegram bot</a> <a href="https://t.me/BBQ_VPN_BOT?start=track_site_faq_guarantee" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">@BBQ_VPN_BOT</a> — no credit card, no commitments'},{title:"Use the VPN for 7 days",description:'Install the <a href="https://happ.su/" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Happ</a> app, connect, and use the VPN without limits. All features are available for free'},{title:"Decide if it's right for you",description:"After the trial pick a plan from $1.30/month, or simply don't renew — no hidden charges"}],platformsTitle:"Try for free on any device",platformsSubtitle:"7 days free on Android, iOS, Windows, macOS, Linux, and Smart TV.",ctaTitle:"Start free — pay only if you like it",ctaDescription:"7 days with no restrictions. Plans from $1.30/month after the trial.",ctaChecks:["7 days free","No credit card required","Money-back guarantee","Cancel anytime"],extraTitle:"How to get a free VPN",extraSubtitle:"The BBQ VPN free trial — no tricks, no hidden terms.",extra:[{title:"How to get a free VPN",type:"list",items:["Sign up at bbqpirat.com or via @BBQ_VPN_BOT","Get a free 7-day VPN key automatically","Download Happ and add the subscription","Use the VPN with no limits — no card required"]},{title:"Refund policy",content:'If BBQ VPN didn\'t meet your expectations after payment — we\'ll refund you: the full amount within 7 days of the first payment, later — the unused days. Message support via the <a href="https://t.me/BBQ_VPN_BOT?start=track_site_faq_guarantee" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Telegram bot</a> <a href="https://t.me/BBQ_VPN_BOT?start=track_site_faq_guarantee" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">@BBQ_VPN_BOT</a>, tell us the reason, and we\'ll process the refund with no awkward questions. See the Refund Policy page for details.'}],faq:[{title:"Try a VPN for free — 7 days with no limits",content:"BBQ VPN offers a free 7-day trial for every new user. Unlike many VPN services, we don't require a credit card to activate the trial. You get full access to all servers and features: unlimited traffic, speeds up to 100 Mbps, all platforms. Trying a VPN for free is that simple: sign up and use it. No hidden charges, no auto-billing."},{title:"Money-back guarantee for VPN",content:"After the trial you can choose a paid plan starting from $1.30/month. If the VPN doesn't work for you — within 7 days of the first payment we refund the full amount, later — the unused days. Just message support on Telegram and we'll process it. Our VPN money-back guarantee is our 
2confidence in the service. We don't lock in customers with hidden terms — only with an honest service."},{title:"Risk-free VPN — transparent terms",content:"BBQ VPN operates on full transparency. No auto-renewals without your consent. No hidden fees. Pricing is shown on the site with no fine print. A risk-free VPN means 7 days free, a money-back guarantee, and 24/7 support. Try BBQ VPN and see for yourself — from $1.30/month for a reliable and fast VPN with the VLESS protocol."}],relatedLinks:[{to:"/refund",label:"Refund policy"},{to:"/pricing",label:"Pricing and plans"},{to:"/vpn-encryption",label:"VPN encryption"},{to:"/vpn-speed",label:"VPN speed"}]}}};n.use(o).init({resources:{en:{translation:O},ru:{translation:{home2:{label:"7 дней бесплатно · 7 стран",title_start:"Жарим на",title_accent:"полной скорости",lead:"Один ключ — на телефон, ноутбук и телевизор. Подключение за пару минут прямо из Telegram.",cta_primary:"Попробовать бесплатно",cta_secondary:"Тарифы",trust:["7 дней без оплаты","Возврат по оферте","Карта и СБП"],mock:{status:"Подключено",session:"сеанс 1 ч 12 мин",note:"Так выглядит подключение в приложении"},stats:{users:"пользователей",countries:"стран с серверами",uptime:"время работы",price_from:"от 110 ₽",price_label:"в месяц"},plans:{title:"Тарифы",lead:"Все тарифы дают одинаковые серверы и скорость. Отличаются только числом устройств.",per_month:"в месяц",devices_one:"устройство",devices_few:"устройства",devices_many:"устройств",popular:"Чаще выбирают",choose:"Выбрать",all:"Все тарифы и сроки"},features:{title:"Что вы получаете",lead:"Подключение занимает пару минут, дальше сервис просто работает.",items:[{title:"Все устройства",text:"iPhone, Android, Windows, macOS и телевизор — один ключ на всё."},{title:"Прямо из Telegram",text:"Ключ приходит в бота. Без паролей и долгих регистраций."},{title:"Серверы в 7 странах",text:"Выбираете страну сами или доверяете автовыбору по скорости."},{title:"Поддержка 24/7",text:"Отвечаем в Telegram живыми людьми, а не шаблонами."}]},final:{title:"Попробуйте неделю бесплатно",lead:"Без привязки карты. Понравится — выберете тариф."}},pricing2:{title:"Тарифы",lead:"Одна подписка, вы выбираете число устройств и срок. Рубли, без скрытых списаний, отмена в один клик.",plan_title:"Подписка",plan_note:"Все серверы и полная скорость на любом тарифе. Отличается только число устройств.",devices:"Устройств",period:"Срок",protocol:"Протокол",months:{1:"1 месяц",3:"3 месяца",6:"6 месяцев",12:"12 месяцев"},other:"Другое",custom_hint:"Любое число устройств от 1 до 50 и срок от 1 до 12 месяцев. Цена считается по той же сетке скидок, что у готовых тарифов.",devices_word:{one:"устройство",few:"устройства",many:"устройств"},months_word:{one:"месяц",few:"месяца",many:"месяцев"},for_period:"за {{period}}",per_month:"это {{price}} в месяц",benefit:"выгода {{percent}}%",bonus:"+ {{days}} дней в подарок — подписка действует {{total}} дней",features:["Все серверы и страны","Полная скорость, без лимитов трафика","Ключ на каждое устройство","Поддержка 24/7 в Telegram"],checkout:"Оформить",add_cart:"В корзин
2у",added:"Добавлено в корзину",trial_title:"Неделя бесплатно",trial_note:"Попробуйте до оплаты: 7 дней, одно устройство, все серверы.",trial_features:["Без карты","Без автопродления","Ключ приходит в Telegram за минуту"],trial_cta:"Получить в Telegram",trial_cabinet:"Активировать в кабинете",loading:"Загружаем цены…",offline:"Показаны стандартные цены — актуальные подтвердятся при оплате.",pay_note:"Карта РФ, СБП, Telegram Stars. Возврат — по оферте."},support2:{title:"Поддержка",lead:"Отвечаем сами, живыми людьми. Чтобы не терять время на уточнения, посмотрите список ниже — там четыре причины, из-за которых пишут чаще всего.",checks:[{title:"«Подключено», но страницы не грузятся",text:"Выключите VPN, включите заново и попробуйте другую страну в приложении. Если помогает конкретная — напишите какая."},{title:"Ключ не добавляется в приложение",text:"Скопируйте ссылку заново из бота или кабинета. Добавляйте её как подписку («Добавить подписку»), а не как отдельный сервер."},{title:"Работало и перестало",text:"Проверьте срок подписки в боте. Если срок есть — удалите профиль в приложении и добавьте ссылку заново: список серверов обновится."},{title:"Оплатили, а подписки нет",text:"Подождите минуту и обновите кабинет — ключи выдаются после подтверждения платежа банком. Не появились — напишите нам сумму и время оплаты."}],contact_title:"Написать нам",contact_lead:"Приложите к сообщению: устройство и приложение, что видно на экране, и когда перестало работать. С этим разбираемся за одно сообщение вместо пяти.",bot:"Поддержка в Telegram",group:"Группа в Telegram",foot_setup:"Инструкции по подключению",foot_refund:"Условия возврата"},about2:{title:"О сервисе",p1:"BBQ VPN работает с 2024 года. Начинали с Telegram-бота, потом появились сайт и мини-приложение — подписка и ключи у них общие, пользуйтесь тем, что удобнее.",h_do:"Что мы делаем",p_do:"Держим серверы в 7 странах и следим, чтобы связь была быстрой и стабильной. Когда сервер начинает работать хуже, мы его меняем — приложение подтягивает свежий список само, перенастраивать ничего не нужно.",h_how:"Как это устроено",p_how:"Одна подписка — на телефон, ноутбук и телевизор. Каждое устройство получает свой ключ и работает независимо. Первые 7 дней бесплатно, без карты.",h_not:"Чего мы не делаем",not:["не ведём журналы посещаемых сайтов и не храним содержимое трафика;","не передаём данные третьим лицам, кроме платёжного сервиса для проведения оплаты;","не берём деньги за то, что не работает — условия возврата описаны отдельно."],h_contact:"Связь",p_contact:"Поддержка — в Telegram, отвечаем сами, без автоответчиков. Условия оказания услуг — в оферте.",cta_plans:"К тарифам",cta_trial:"Попробовать бесплатно"},seo:{home:{title:"BBQ VPN — Надёжный VPN для каждого",description:"Быстрый и безопасный VPN-сервис. Военное шифрование, серверы по всему миру, поддержка 24/7. Защитите свою конфиденциальность!"},pricing:{title:"Тарифы BBQ VPN — от 110₽/мес",description:"Выберите подходящий тарифный план BBQ VPN. Пробный период бесплатно, гибкие подписки от 110₽/мес."},about:{title:"О нас — BBQ VPN",description:"Узнайте о миссии BBQ VPN. Мы создаём надёжный VPN-сервис, чтобы интернет оставался свободным и открытым для каждого."},support:{title:"Поддержка — BBQ VPN",description:"Нужна помощь? Центр поддержки BBQ VPN — FAQ, онлайн-чат и email-поддержка 24/7."},privacy:{title:"Политика конфиденциальности — BBQ VPN",description:"Политика конфиденциальности BBQ VPN. Узнайте, как мы защищаем ваши данные и обеспечиваем приватность."},terms:{title:"Условия использования — BBQ VPN",description:"Условия использования сервиса BBQ VPN. Правила предоставления услуг и ответственность сторон."},refund:{title:"Возврат средств — BBQ VPN",description:"Политика возврата средств BBQ VPN. Гарантия возврата 7 дней — условия и порядок."},cookies:{title:"Cookies — BBQ VPN",description:"Политика использования файлов cookie на сайте BBQ VPN."},setup:{title:"Настройка VPN — BBQ VPN",description:"Пошаговые инструкции по настройке BBQ VPN на всех устройствах: Windows, macOS, Android, iOS."}},nav:{home:"Главная",pricing:"Купить",about:"О нас",supp
2ort:"Поддержка",privacy:"Конфиденциальность",dashboard:"Личный кабинет",logout:"Выйти",login:"Войти",register:"Регистрация",language:"Язык",cart:"Корзина",hello:"Привет, {{name}}",setup:"Настройка",more:"Ещё"},auth:{email:"Электронная почта",email_placeholder:"Введите ваш email",password:"Пароль",name:"Полное имя",confirm_password:"Подтвердите пароль",login:"Войти",register:"Регистрация",create_account:"Создать аккаунт",remember_me:"Запомнить меня",forgot_password:"Забыли пароль?",or:"или",welcome_back:"С возвращением!",login_subtitle:"Войдите в свой аккаунт",register_subtitle:"Создайте новый аккаунт для доступа ко всем функциям",login_with_telegram:"Войти через Telegram",register_with_telegram:"Регистрация через Telegram",google_login:"Войти через Google",google_not_loaded:"Google сервис не загрузился. Попробуйте обновить страницу.",google_error:"Ошибка авторизации через Google",dont_have_account:"Нет аккаунта?",already_have_account:"Уже есть аккаунт?",login_help:"Нужна помощь с входом?",need_help:"Нужна помощь?",back_home:"На главную",agree_to:"Я принимаю",terms:"Условия использования",consent_pdn:"и даю согласие на обработку моих персональных данных в соответствии с",and:"и",privacy:"Политикой конфиденциальности",register_benefits:"Почему выбирают нас?",benefit_security:"Максимальная безопасность данных",benefit_speed:"Высокая скорость соединения",benefit_global:"Серверы по всему миру",benefit_guarantee:"Гарантия возврата 7 дней",reset_password:{title:"Сброс пароля",description:"Введите свой email для сброса пароля.",email_sent:{title:"Письмо отправлено",description:"Проверьте вашу почту для ссылки на сброс пароля."},send_email:"Отправить письмо",back_to_login:"Вернуться к входу"},reset_password_subtitle:"Введите ваш email, и мы отправим ссылку для сброса пароля",send_reset_link:"Отправить ссылку",check_email:"Проверьте почту",reset_link_sent:"Мы отправили ссылку для сброса пароля на ваш email. Проверьте входящие и следуйте инструкциям.",resend_link:"Отправить повторно",create_new_password:"Создать новый пароль",create_new_password_subtitle:"Введите новый пароль ниже",reset_link_invalid:"Ссылка недействительна или устарела. Запросите сброс пароля ещё раз.",new_password:"Новый пароль",password_reset_success:"Пароль успешно сброшен!",password_reset_success_subtitle:"Ваш пароль изменён. Теперь вы можете войти с новым паролем.",sign_in_now:"Войти сейчас"},validation:{email_required:"Email обязателен",email_invalid:"Неверный формат email",password_required:"Пароль обязателен",password_min_length:"Пароль должен содержать минимум 8 символов",password_weak:"Пароль слишком слабый",password_hint:"Минимум 8 символов, включая буквы и цифры",confirm_password_required:"Подтверждение пароля обязательно",passwords_dont_match:"Пароли не совпадают",name_required:"Имя обязательно",name_min_length:"Имя должно содержать минимум 2 символа",terms_required:"Без согласия на обработку персональных данных зарегистрироваться нельзя",required:"Это поле обязательно"},support:{title:"Центр поддержки",description:"Получите помощь по вашему VPN сервису",faq:{title:"Часто задаваемые вопросы",description:"Найдите ответы на распространенные вопросы",button:"Посмотреть FAQ"},chat:{title:"Живой чат",description:"Общайтесь с нашей командой поддержки",button:"Начать чат"},email:{title:"Email Поддержка",description:"Отправьте нам email",button:"Отправить email"},contact:{title:"Свяжитесь с нами",description:"Есть вопросы или нужна помощь? Мы всегда готовы помочь вам!",name:"Имя",name_placeholder:"Ваше имя",email:"Электронная почта",email_placeholder:"ваш@email.com",subject:"Тема",subject_placeholder:"Чем мы можем помочь?",message:"Сообщение",message_placeholder:"Опишите вашу проблему...",send:"Отправить Сообщение"}},mission:{title:"Наша миссия",description:"Мы предоставляем лучшие VPN-сервисы для защиты вашей конфиденциальности.",heading:"Цели компании",text:"Мы верим, что доступ к информации должен быть свободным, вне зависимости от геополитических границ. Сегодня миллионы людей сталкиваются с искусственными ограничениями, мешающими учёбе, работе и свободному общению. Мы создаём решение, которое помогает обойти эти барьеры — потому что сами столкнулись с этой проблемой и знаем, как важно оставаться на связи с миром. Наша цель — сделать интернет по-настоящему открытым и доступным для всех."},stats:{title:"Наша статистика",description:"Данные о наших достижениях и постоянном росте.",text:"Мы гордимся нашими достижениями и рады предоставлять отличную поддержку нашим пользователям.",heading:"Ключевые показатели",active_users:"Активных пользователей",servers_worldwide:"Серверов по всему миру",uptime:"Время работы"}
2,principles:{title:"Наши принципы",description:"Ключевые ценности и принципы нашей компании.",heading:"Основы успеха",text:"Мы высоко ценим честность, инновации и удовлетворённость клиентов."},about:{ready_title:"Готовы начать?",ready_desc:"Присоединяйтесь к тысячам пользователей, которые уже пользуются нашими услугами",get_started:"Начать сейчас"},pricing:{title:"Тарифные планы",subtitle:"Выберите подходящий тариф для ваших потребностей",trial:"Тестовый",monthly:"Месячный",semi_annual:"Полугодовой",annual:"Годовой",per_month:"/мес",per_key_month:"/ключ в мес.",months:"мес.",devices_one:"{{count}} устройство",devices_few:"{{count}} устройства",devices_many:"{{count}} устройств",save:"Скидка {{percentage}}%",bonus_days:"+{{days}} дней бесплатно",discount_per_key:"На {{percentage}}% выгоднее за ключ",best_value:"Лучшее предложение",choose_plan:"Выбрать план",total_price:"Итого: <strong>{{price}} за {{days}} дней</strong>",free:"Бесплатно",trial_period:"Пробный период: {{days}} дней",protocol:{outline:"Outline",vless:"VLESS"},features:{encryption:"Надежное шифрование",servers:"Серверы по всему миру",logs:"Безопасное подключение",support:"24/7 поддержка",platforms:"Все платформы",guarantee:"Гарантия 7 дней",quality_guarantee:"Гарантия качества"},bottom:{secure_payment:"Безопасная оплата",secure_payment_desc:"Защищенная обработка платежей",instant_activation:"Мгновенная активация",instant_activation_desc:"Начните пользоваться немедленно",money_back:"Гарантия возврата",money_back_desc:"7 дней на возврат средств",quality_guarantee:"Гарантия качества",quality_guarantee_desc:"Гарантируем доступ к нужным ресурсам"},plans:{starter:"Старт",comfort:"Комфорт",maximum:"Максимум",friends:"Для друзей",family:"Семейный","friends-pack":"Для друзей","family-pack":"Семейный","max-comfort":"Максимум комфорта",trial:"Тестовый 7 дней","test-week":"Тестовый 7 дней","admin-custom":"Администраторский",custom:"Свой тариф"}},plans_preview:{title:"Выберите подходящий план",subtitle:"Популярные тарифы для любых потребностей",choose_plan:"Выбрать план",bottom_text:"Или посмотрите все наши тарифные планы",view_all_plans:"Смотреть все планы"},checkout:{payment_done:"Оплата прошла — подписка активирована, ключи в разделе «Ключи».",payment_not_finished:"Оплата не завершена — заказ сохранён в корзине, можно повторить.",promo_discount:"Скидка {{percent}}% по промокоду из бота",promo_until:"до {{date}}",promo_placeholder:"Введите промокод",promo_apply:"Применить",promo_checking:"Проверяем…",promo_applied:"Промокод применён",promo_failed:"Не получилось применить промокод",promo_login_required:"Войдите в аккаунт, чтобы применить промокод",promo_replace:"Заменить",promo_keep:"Оставить прежний",your_order:"Ваш заказ",item:"товар",items:"товаров",subtotal:"Подитог",tax:"Налог",total:"Итого",continue_shopping:"Продолжить покупки",proceed_to_billing:"К оплате",billing_information:"Платёжная информация",first_name:"Имя",last_name:"Фамилия",email:"Email",phone:"Телефон",country:"Страна",city:"Город",back_to_cart:"Обратно в корзин
2у",continue_to_payment:"К оплате",payment_method:"Способ оплаты",one_item_at_a_time:"Оплата идёт по одному тарифу за раз. Оставьте в корзине одну позицию, остальные оплатите следующим заказом.",payment_failed:"Не удалось создать платёж. Попробуйте ещё раз.",credit_card:"Банковская карта",card_number:"Номер карты",expiry:"Срок действия",cvv:"CVV",cardholder_name:"Имя владельца карты",order_summary:"Сводка заказа",secure_payment:"Безопасная оплата",back_to_billing:"Обратно к платёжным данным",complete_payment:"Завершить оплату",processing_payment:"Обработка платежа",please_wait:"Пожалуйста, подождите...",cart:"Корзина",billing:"Платёжные данные",payment:"Оплата",title:"Оформление заказа",empty_cart:"Корзина пуста",empty_cart_desc:"Добавьте товары в корзину, чтобы продолжить",go_to_pricing:"К тарифам",payment_details:"Платёжные данные",card:"Карта",processing:"Обработка...",pay_now:"Оплатить сейчас",consent_before:"Нажимая «Оплатить сейчас», вы принимаете",consent_middle:"и даёте согласие на обработку персональных данных согласно",login_required:"Чтобы оформить подписку — войдите или зарегистрируйтесь (это займёт 30 секунд)"},cart:{title:"Корзина",empty:"Корзина пуста",browse_plans:"К тарифам",quantity:"Количество: {{count}}",remove:"Удалить",subtotal:"Подытог",total:"Итого",checkout:"Оформить заказ"},dashboard:{overview:"Обзор",keys:"Ключи",subscriptions:"Подписки",extend:"Покупки и Продления",referral:"Рефералы",linking:"Привязка",settings:"Настройки",support:"Поддержка",welcome:"Добро пожаловать",welcome_subtitle:"Вот краткий обзор вашей активности",keys_subtitle:"Управляйте своими VPN ключами",generate_key:"Генерировать ключ",search_keys:"Поиск ключей...",all_protocols:"Все протоколы",filter:"Фильтр",no_keys_found:"Ключи не найдены",no_keys_description:"У вас пока нет VPN ключей",generate_first_key:"Генерировать первый ключ",active:"Активный",inactive:"Неактивный",created:"Создан",vpn_key:"VPN ключ",last_used:"Последнее использование",active_keys:"Активных ключей",add_subscription:"Добавить подписку",subscriptions_subtitle:"Управляйте своими активными подписками и планами",linking_subtitle:"Привяжите свой аккаунт Telegram для уведомлений и управления",telegram_account:"Telegram аккаунт",not_connected:"Не подключен",open_telegram_bot:"Открыть Telegram бота",how_to_link:"Как привязать аккаунт:",linking_step_1:"Откройте нашего Telegram бота",open_bot:"Открыть бота",linking_step_2:"Отправьте этот код боту",linking_code:"Код для привязки",generate_new:"Сгенерировать новый",linking_step_3:"Дождитесь подтверждения",linking_note:"Примечание",linking_note_text:"Код действителен в течение 10 минут. После привязки вы сможете управлять подписками через Telegram.",telegram_features:"Возможности через Telegram",feature_key_management:"Управление ключами",feature_key_management_desc:"Создание и управление VPN ключами",feature_usage_stats:"Статистика использования",feature_usage_stats_desc:"Просмотр статистики трафика и подключений",feature_notifications:"Уведомления",feature_notifications_desc:"Автоматические уведомления о важных событиях",feature_support:"Поддержка",feature_support_desc:"Быстрый доступ к технической поддержке",notification_settings:"Настройки уведомлений",notification_subscription_expiry:"Окончание подписки",notification_subscription_expiry_desc:"Уведомления за 7, 3 и 1 день до окончания",notification_key_generation:"Создание ключей",notification_key_generation_desc:"Уведомления о создании Ð
2½Ð¾Ð²Ñ‹Ñ… VPN ключей",notification_system_updates:"Системные обновления",notification_system_updates_desc:"Информация об обновлениях системы",notification_promotions:"Акции и предложения",notification_promotions_desc:"Специальные предложения и скидки",link_telegram_for_notifications:"Привяжите Telegram для получения уведомлений",security_note:"Безопасность",security_note_text:"Ваши данные защищены. Мы используем только ID вашего Telegram аккаунта для отправки уведомлений.",confirm_unlink_telegram:"Вы уверены, что хотите отвязать Telegram?",active_subscriptions:"Активные подписки",expired_subscriptions:"Истёкшие подписки",total_devices:"Всего устройств",days_until_renewal:"Дней до обновления",total_annual_cost:"Общая годовая стоимость",days_remaining:"дней осталось",per_year:"/год",auto_renew_on:"Автопродление включено",auto_renew_off:"Автопродление отключено",total_keys:"Всего ключей",data_used:"Использовано данных",devices:"Устройства",server:"Сервер",data_usage:"Использование данных",expires:"Истекает",expired_on:"Истек ",recent_activity:"Последняя активность",view_all_activity:"Посмотреть всю активность",system_status:"Статус системы",all_systems_operational:"Все системы работают",servers:"Серверы",uptime:"время работы",speed:"Скорость",optimal:"оптимальная",security:"Безопасность",secure:"защищено",quick_actions:{title:"Быстрые действия",generate_key:"Генерировать ключ",generate_key_desc:"Создать новый VPN ключ",extend_plan:"Продлить план",extend_plan_desc:"Увеличить срок подписки",link_telegram:"Привязать Telegram",link_telegram_desc:"Подключить ваш Telegram"},extend_subscription:"Продлить подписку",manage_billing:"Управление оплатой",download_invoice:"Скачать счёт",disable_auto_renew:"Отключить автопродление",enable_auto_renew:"Включить автопродление",renew_subscription:"Обновить подписку",no_active_subscriptions:"Нет активных подписок",no_active_subscriptions_desc:"Начните с выбора подходящего плана",get_subscription:"Получить подписку",devices_subtitle:"Смотрите, какие устройства пользуются подпиской, и освобождайте слоты",devices_slots_title:"Слоты устройств",devices_slots_used:"занято {{used}} из {{limit}}",devices_slots_used_unknown:"занято {{used}}",devices_slots_free:"свободно {{n}}",devices_slots_full:"все слоты заняты",devices_plan:"Тариф",devices_list_title:"Привязанные устройства",devices_refresh:"Обновить",devices_unlink:"Отвязать",devices_unlink_all:"Отвязать все",devices_unknown_device:"Неизвестное устройство",devices_unknown_platform:"Платформа неизвестна",devices_last_seen:"Последняя активность",devices_linked_at:"Привязано",devices_no_data:"нет данных",devices_inactive_badge:"нет активности {{days}} дн.",devices_empty_title:"Привязанных устройств нет",devices_empty_desc:"Устройство появится в списке после первого подключения к подписке.",devices_no_subscription_title:"Нет активной подписки",devices_no_subscription_desc:"Слоты устройств появл
2яются вместе с тарифом. Выберите подходящий — и список появится здесь.",devices_no_subscription_cta:"Выбрать тариф",devices_confirm_title:"Отвязать это устройство?",devices_confirm_text:"Слот освободится сразу. Устройство просто перестанет обновлять подписку — чтобы пользоваться им снова, придётся привязать его заново.",devices_confirm_all_title:"Отвязать все устройства?",devices_confirm_all_text:"Доступ к подписке потеряют все {{n}} устройств. Действие необратимо — каждое устройство придётся привязывать заново.",devices_confirm_button:"Отвязать",devices_cancel:"Отмена",devices_note_title:"Что происходит при отвязке",devices_note_text:"Отвязка освобождает слот сразу: устройство просто перестанет обновлять подписку и при следующем обновлении потеряет доступ. Сама подписка, её срок и ключи не меняются — освобождается только слот, и его сможет занять новое устройство.",devices_toast_unlinked:"Устройство отвязано, слот свободен",devices_toast_unlinked_all:"Все устройства отвязаны",devices_toast_already_unlinked:"Это устройство уже было отвязано — список обновлён",devices_error_load:"Не удалось загрузить список устройств",devices_error_panel:"VPN-панель не отвечает. Попробуйте через минуту.",devices_error_generic:"Что-то пошло не так. Попробуйте ещё раз.",devices_retry:"Повторить"},hero:{badge:"Жарим на полной скорости!",free_trial_badge:"7 дней бесплатно",title:{reliable:"Надёжный",secure:"Надёжный",vpn:"VPN",for_everyone:"для каждого"},description:"Получите неограниченный доступ к интернету с максимальной безопасностью и скоростью",stats:{users:"Пользователей",servers:"Серверов",countries:"Стран",uptime:"Аптайм"},cta:{get_started:"Начать сейчас",learn_more:"Узнать больше"},trust:{protection:"Максимальная защита",fast_speed:"Высокая скорость",quality_guarantee:"Гарантия качества",no_logs:"Никаких логов",fast_speeds:"Высокая скорость",money_back:"Гарантия 7 дней"}},success:{title:"Платёж успешно обработан!",description:"Спасибо за покупку! Ваша подписка активирована.",subtitle:"Ваш заказ подтверждён",go_to_dashboard:"Перейти в панель",go_to_home:"На главную",next_steps:"Следующие шаги:",check_email:"Проверьте вашу почту",download_app:"Скачайте наше приложение",setup_guide:"Следуйте руководству по настройке",order_number:"Номер заказа",order_summary:"Информация о заказе",total:"Итого",order_date:"Дата заказа",email:"Email",download_invoice:"Скачать чек",quick_actions:"Быстрые действия",view_keys:"Посмотреть ключи",contact_support:"Связаться с поддержкой",estimated_delivery:"Мгновенная активация",next_steps_description:"Следуйте этим шагам, чтобы начать использовать VPN",security_note:"Безопасность",security_note_description:"Ваш платёж обработан безопасно. Мы не храним данные вашей карты.",cta:{title:"Готовы начать?",description:"Настройте VPN за несколько минут",dashboard:"Перейти в панель",setup:"Руководство по настройке"},steps:{email:{title:"Проверьте почту",description:"Мы отправили подтверждение на ваш email"},keys:{title:"Получите ключи",description:"Посмотрите и скопируйте ваши VPN ключи"},setup:{title:"Настройте VPN",description:"Следуйте руководству для вашего устройства"}}},time:{days_ago_one:"{{count}} день назад",days_ago_few:"{{count}} дня назад",days_ago_many:"{{count}} дней назад",hours_ago_one:"{{count}} час назад",hours_ago_few:"{{count}} часа назад",hours_ago_many:"{{count}} часов назад",minutes_ago_one:"{{count}} минуту назад",minutes_ago_few:"{{count}} минуты назад",minutes_ago_many:"{{count}} минут назад",just_now:"Только что"},account_linking:{status:"Статус привязки",email_account:"Email аккаунт",telegram_account:"Telegram аккаунт",source:"Источник",link_by_code:"Привязать по коду",enter_code:"Введите код из Telegram бота",link_accounts:"Привязать аккаунты",how_to_link:"Как привязать",step_1:"Откройте нашего Telegram бота",step_2:"Отправьте команду /link",step_3:"Скопируйте код и вставьте его здесь",
2step_4:"Нажмите «Привязать аккаунты»"},common:{loading:"Загрузка..."},features:{title:"Почему BBQ VPN?",subtitle:"Мы предоставляем корпоративную безопасность с удобным пользовательским интерфейсом",encryption:{title:"Военное шифрование",description:"Шифрование AES-256 защищает ваши данные от хакеров и слежки"},speed:{title:"Молниеносная скорость",description:"Оптимизированные серверы обеспечивают максимальную скорость"},network:{title:"Надёжная сеть",description:"4 высокопроизводительных сервера в России, Европе и США для стабильного соединения"},devices:{title:"Все устройства",description:"Приложения для всех популярных платформ"},support:{title:"Поддержка 24/7",description:"Экспертная поддержка доступна круглосуточно"},guarantee:{title:"Гарантия качества",description:"Мы гарантируем качество нашего сервиса"},learn_more:"Подробнее →"},trust:{title:"Нам доверяют по всему миру",subtitle:"Присоединяйтесь к тысячам довольных клиентов",stats:{users:"Активные пользователи",servers:"Сервера",countries:"Страны",uptime:"Время работы"},testimonials:{title:"Отзывы наших пользователей"},platforms:{title:"Доступно на всех платформах",description:"Скачайте наши приложения или настройте вручную"}},footer:{description:"BBQ VPN предоставляет безопасный VPN-сервис для пользователей по всему миру",product:"Продукт",support:"Поддержка",contact_us:"Связаться с нами",pricing:"Тарифы",features:"Возможности",setup_guides:"Инструкции",about:"О нас",help_center:"Центр помощи",contact:"Контакты",faq:"FAQ",status:"Статус серверов",privacy:"Политика конфиденциальности",terms:"Условия использования",cookie_banner:"Мы используем cookie: необходимые — для входа и оплаты, аналитические (Яндекс Метрика, Google Tag Manager) — только с вашего согласия.",cookie_more:"Подробнее",cookie_accept:"Принять все",cookie_necessary:"Только необходимые",refund:"Политика возврата",cookies:"Политика cookies",live_chat:"Онлайн чат",rights_reserved:"Все права защищены."},seo_links:{title:"VPN для популярных сервисов",subtitle:"Быстрое и приватное подключение для любых сервисов",links:{access:{label:"VPN без ограничений",desc:"Свободный доступ к любым ресурсам"},youtube:{label:"VPN для YouTube",desc:"Смотрите YouTube в высоком качестве"},discord:{label:"VPN для Discord",desc:"Стабильная связь и низкий пинг"},games:{label:"VPN для игр",desc:"Играйте без лагов и регионального ограничения"},russia:{label:"VPN в России 2026",desc:"Российский сервер с низким пингом"},telegram:{label:"VPN для Telegram",desc:"Telegram всегда онлайн"},proxy:{label:"Прокси для Telegram",desc:"Быстрый прокси без установки приложений"},encryption:{label:"VPN с шифрованием",desc:"Шифрование AES-256 для защиты данных"},speed:{label:"Быстрый VPN",desc:"VPN без потери скорости до 100 Мбит/с"},servers:{label:"Серверы VPN",desc:"Серверы в России, Европе и США"},devices:{label:"VPN для всех устройств",desc:"Android, iOS, Windows, macOS, Linux"},vpnSupport:{label:"Поддержка VPN",desc:"Стабильная техподдержка 24/7"},guarantee:{label:"Гарантия возврата",desc:"7 дней пробно, 7 дней на возврат после первой оплаты"}}},testimonials:{user1:{name:"Максим К.",role:"Фрилансер",text:"Наконец-то нормальный VPN. YouTube и Instagram летают, связь стабильная. Пользуюсь уже полгода — ни разу не подвёл."},user2:{name:"Анна Р.",role:"Студентка",text:"Попробовала бесплатный период и сразу купила подписку. Всё настраивается за 5 минут прямо в Telegram, никаких сложных настроек."},user3:{name:"Дмитрий В.",role:"Разработчик",text:"Скорость стабильная даже в часы пик. GitHub, npm, Docker Hub — всё работает без проблем. Цена более чем адекватная."}},errors:{network:"Ошибка сети. Проверьте подключение.",server:"Ошибка сервера. Попробуйте позже.",validation:"Проверьте введённые данные.",not_found:{title:"Страница не найдена",description:"Страница, которую вы ищете, не существует.",go_home:"На главную"}},seoPages:{common:{tryFree:"Попробовать бесплатно",viewPricing:"Посмотреть тарифы",trialNote:"7 дней бесплатно — без привязки карты",createAccount:"Создать аккаунт бесплатно",relatedPages:"Читайте также:",usefulPages:"Полезные страницы",checkUnlimited:"Безлимитный трафик",checkSpeed:"Скорость до 100 Мбит/с",checkPayment:"Оплата картой или Stars",checkCancel:"Отмена в любой момент"},encryption:{title:"VPN с шифрованием AES-256 — защита данных | BBQ VPN",description:"Безопасный VPN с военным шифрованием AES-256. Защита трафика от слежки и утечек данных. Протокол VLESS + REALITY. Без логов. Тест 7 дней бесплатно.",h1:"VPN с шифрованием AES-256",h1Gradient:" — полная защита данных",heroText:"Безопасный VPN с шифрованием военного уровня. Протокол VLESS + REALITY маскирует трафик под обычный HTTPS — провайдер не видит, что вы используете впн. Шифрование VPN-трафика AES-256, политика без логов, защита от утечек DNS и WebRTC.",featuresTitle:"Почему BBQ VPN — самый безопасный VPN",features:[{title:"Шифрование AES-256",description:"Алгоритм AES-256 — стандарт военного уровня. Ваш трафик невозможно расшифровать даже при перехвате. BBQ VPN использует AES-256 для защиты всех данных."},{title:"Протокол VLESS + REALITY",description:"Протокол VLESS с технологией REALITY маскирует VPN-трафик под обычный HTTPS. Соединение выглядит как обычный визит на сайт, поэтому работает стабильно в любых сетях."},{title:"Политика без логов",description:"BBQ VPN не хранит логи активности, историю посещений и DNS-запросы. Мы не знаем, какие сайты вы посещаете — и не можем передать эти данные третьим лицам."},{title:"Защита от утечек",description:"Полная защита от утечек DNS и WebRTC. Ваш реальный IP-адрес остаётся скрытым даже при обрыве VPN-соединения. Безопасный впн для защиты данных."}],stepsTitle:"Как защитить данные с VPN — 3 простых шага",steps:[{title:"Зарегистрируйтесь бесплатно",description:'Создайте аккаунт на сайте или через <a href="https://t.me/BBQ_VPN_BOT?start=track_site_faq_encryption" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Telegram-бот</a> <a href="https://t.me/BBQ_VPN_BOT?start=track_site_faq_encryption" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">@BBQ_VPN_BOT</a> — без привязки карты'},{title:"Установите приложение Happ",description:'Скачайте <a href="https://happ.su/" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Happ</a> для вашего устройства — Android, iOS, Windows, macOS или Smart TV'},{title:"Ваш трафик под защитой",description:"Подключитесь к серверу — весь трафик шифруется AES-256 и проходит через безопасный туннель VLESS"}],platformsTitle:"Безопасный VPN на любом устройстве",platformsSubtitle:"Шифрование VPN-трафика AES-256 работает на Android, iOS, Windows, macOS, Linux и Smart TV. Одна подписка — все платформы защищены.",ctaTitle:"Защитите свои данные — 7 дней бесплатно",ctaDescription:"Тестовый период без привязки карты. Платные тарифы — от 110₽/мес.",ctaChecks:["Шифрование AES-256","Без логов активности","Оплата картой или Stars","Отмена в любой момент"],extraTitle:"Как работает шифрование VPN",extraSubtitle:"Шифрование VPN-трафика — ключевой элемент безопасности в интернете.",extra:[{title:"Как работает шифрование VPN-трафика",content:"Когда вы подключаетесь к BBQ VPN, всё ваше интернет-соединение проходит через зашифрованный туннель. Алгоритм AES-256 шифрует каждый пакет данных — от поисковых запросов до паролей и банковских операций. Даже если злоумышленник перехватит ваш трафик, он увидит лишь бессмысленный набор символов. Протокол VLESS добавляет ещё один уровень защиты — маскировку под обычный HTTPS-трафик."},{title:"Зачем нужен VPN без логов",content:"VPN без логов означает, что сервис не сохраняет историю вашей активности. BBQ VPN не записывает, какие сайты вы посещаете, какие файлы скачиваете и какие DNS-запросы отправляете. Это принципиальная позиция — даже по запросу третьих лиц мы не можем предоставить данные, которых у нас нет. Политика без логов — обязательное условие по-настоящему безопасного VPN."}],faq:[{title:"Зачем нужно шифрование VPN-трафика?",content:"Шифрование VPN-трафика защищает ваши данные от перехвата в публичных Wi-Fi сетях, от слежки интернет-провайдера и от атак типа «человек посередине». Без VPN с шифрованием ваш провайдер видит все сайты, которые вы посещаете, а злоумышленники в открытых сетях могут перехватить пароли и платёжные данные. BBQ VPN использует алгоритм шифрования AES-256 — тот же стандарт, который применяют банки и государственные организации для защиты секретной информации."},{title:"Какой VPN с шифрованием выбрать в 2026 году?",content:"В 2026 Ð
2³Ð¾Ð´Ñƒ важно выбирать VPN с современным протоколом шифрования. Устаревшие протоколы вроде PPTP и L2TP медленнее и хуже держат современные сети. BBQ VPN использует протокол VLESS с технологией REALITY — это новейший стандарт, который маскирует VPN-трафик под обычный HTTPS. В отличие от OpenVPN, VLESS обеспечивает меньший оверхед и более высокую скорость при том же уровне шифрования AES-256. Безопасный VPN в 2026 — это VLESS + REALITY + AES-256."},{title:"VPN без логов — зачем это важно?",content:"VPN без логов гарантирует, что ваша история активности нигде не сохраняется. Многие VPN-сервисы заявляют о политике no-logs, но при этом хранят метаданные — время подключения, объём трафика, IP-адреса. BBQ VPN принципиально не ведёт журналов активности. Мы не знаем, какие сайты вы посещаете, и не можем предоставить эту информацию по запросу. Защита данных VPN начинается с отсутствия логов — это фундамент приватности в интернете."},{title:"Чем VLESS отличается от OpenVPN?",content:"VLESS — это современный VPN-протокол, разработанный как облегчённая альтернатива VMess и OpenVPN. Главное преимущество VLESS — минимальный оверхед при шифровании, что обеспечивает скорость до 100 Мбит/с. Технология REALITY позволяет VLESS маскировать трафик под обычный HTTPS, делая его похожим на обычный веб-сёрфинг. OpenVPN, напротив, тяжелее и медленнее на слабых соединениается провайдерами. BBQ VPN использует VLESS + REALITY + AES-256 — оптимальное сочетание скорости, безопасности и стабильности соединения."}],relatedLinks:[{to:"/vpn-speed",label:"Быстрый VPN без потери скорости"},{to:"/vpn-servers",label:"VPN серверы в России и Европе"},{to:"/pricing",label:"Тарифы BBQ VPN"},{to:"/setup",label:"Инструкция по настройке"}]},speed:{title:"Быстрый VPN без потери скорости — до 100 Мбит/с | BBQ VPN",description:"Самый быстрый VPN в России. Протокол VLESS до 100 Мбит/с без потери качества. VPN для стриминга 4K, игр. 7 дней бесплатно.",h1:"Быстрый VPN",h1Gradient:" без потери скорости",heroText:"Самый быстрый VPN с протоколом VLESS — скорость до 100 Мбит/с без буферизации. VPN для стриминга 4K, онлайн-игр и скачивания файлов. Низкий пинг благодаря серверам в России и Европе. Скорость VPN, которую вы не отличите от прямого соединения.",featuresTitle:"Почему BBQ VPN — самый быстрый VPN",features:[{title:"Скорость до 100 Мбит/с",description:"Протокол VLESS с минимальным оверхедом обеспечивает скорость до 100 Мбит/с. Быстрый VPN без потери скорости — вы не заметите, что подключены через впн."},{title:"Стриминг в 4K без буферизации",description:"Смотрите YouTube, Netflix и другие сервисы в 4K без задержек. VPN для стриминга с оптимизированными серверами для видеоконтента."},{title:"Низкий пинг для игр",description:"Минимальная задержка благодаря серверам в России и Европе. VPN с низким пингом для CS2, Valorant, Dota 2 и других онлайн-игр."},{title:"Оптимизированные серверы",description:"Серверы BBQ VPN расположены в России, НидерÐ
2»Ð°Ð½Ð´Ð°Ñ…, Швейцарии и США. Автоматический выбор ближайшего сервера для максимальной скорости VPN."}],stepsTitle:"Быстрый VPN за 3 шага",steps:[{title:"Зарегистрируйтесь бесплатно",description:'Создайте аккаунт на сайте или через <a href="https://t.me/BBQ_VPN_BOT?start=track_site_faq_speed" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Telegram-бот</a> <a href="https://t.me/BBQ_VPN_BOT?start=track_site_faq_speed" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">@BBQ_VPN_BOT</a> — без привязки карты'},{title:"Выберите ближайший сервер",description:"Подключитесь к серверу в России для минимального пинга или к европейскому для доступа к контенту"},{title:"Наслаждайтесь скоростью",description:"Стримьте видео в 4K, играйте онлайн и скачивайте файлы — без потери скорости"}],platformsTitle:"Быстрый VPN на любом устройстве",platformsSubtitle:"Максимальная скорость VPN на Android, iOS, Windows, macOS, Linux и Smart TV. Одна подписка — все платформы.",ctaTitle:"Проверьте скорость — 7 дней бесплатно",ctaDescription:"Тестовый период без привязки карты. Платные тарифы — от 110₽/мес.",ctaChecks:["Скорость до 100 Мбит/с","Безлимитный трафик","Оплата картой или Stars","Отмена в любой момент"],extraTitle:"Почему VLESS быстрее OpenVPN",extraSubtitle:"Сравнение скорости VPN-протоколов и советы для геймеров.",extra:[{title:"Почему VLESS быстрее OpenVPN",content:"OpenVPN использует двойное шифрование и TCP-обёртку, что создаёт значительный оверхед — скорость падает на 30-50%. Протокол VLESS работает с минимальным оверхедом: данные шифруются один раз, а технология REALITY обеспечивает маскировку без дополнительной нагрузки. Результат — скорость VPN до 100 Мбит/с при том же уровне безопасности. Быстрый VPN — это VLESS."},{title:"VPN для онлайн-игр",content:"Для онлайн-игр критичен низкий пинг. BBQ VPN предлагает серверы в России с задержкой от 5 мс и серверы в Европе с пингом от 30 мс. Протокол VLESS не добавляет заметной задержки — ваш пинг в CS2, Valorant или Dota 2 останется практически таким же, как без VPN. Играйте с защитой от DDoS и без ограничений провайдера."}],faq:[{title:"Почему VPN замедляет интернет и как этого избежать?",content:"VPN замедляет интернет из-за шифрования данных и маршрутизации через удалённый сервер. Устаревшие протоколы вроде OpenVPN и PPTP создают значительный оверхед — скорость может падать на 40-60%. BBQ VPN решает эту проблему с помощью протокола VLESS, который имеет минимальный оверхед. Скорость VPN с VLESS — до 100 Мбит/с, что сопоставимо с прямым подключением. Чтобы получить максимальную скорость, выбирайте ближайший сервер — для пользователей из России это российская нода. Быстрый VPN без потери скорости — это реальность с BBQ VPN."},{title:"Лучший VPN для стриминга в 2026 году",content:"Для стриминга в 4K необходима стабильная скорость не менее 25 Мбит/с. BBQ VPN обеспечивает скорость до 100 Мбит/с — этого достаточно даже для нескольких потоков 4K одновременно. VPN для стриминга от BBQ VPN оптимизирован для YouTube, Netflix, Twitch и других платформ. Серверы в России, Европе и США позволяют выбрать оптимальный маршрут для любого сервиса. Протокол VLESS обеспечивает стабильное соединение без обрывов — видео загружается мгновенно, без буферизации."},{title:"VPN с низким пингом для игр",content:"Для онлайн-игр критично не только скорость, но и пинг — задержка между вашим устройством и игровым сервером. BBQ VPN предлагает серверы в России с пингом от 5 мс — это практически незаметная задержка для любой игры. Европейские серверы обеспечивают пинг от 30 мс, что приемлемо для большинства шутеров и MOBA. VPN с низким пингом от BBQ VPN — оптимальный выбор для геймеров, которым нужна защита от DDoS-атак и стабильный канал без ущерба для игрового процесса. Протокол VLESS не добавляет заметной задержки благодаря минимальному оверхеду."}],relatedLinks:[{to:"/vpn-encryption",label:"VPN с шифрованием AES-256"},{to:"/vpn-servers",label:"VPN серверы в России и Европе"},{to:"/vpn-youtube",label:"VPN для YouTube"},{to:"/pricing",label:"Тарифы BBQ VPN"}]},servers:{title:"VPN серверы в России, Европе и США | BBQ VPN",description:"VPN серверы BBQ VPN в России, НидерÐ
2»Ð°Ð½Ð´Ð°Ñ…, Швейцарии, Румынии и США. Стабильное соединение. VLESS + REALITY. 7 дней бесплатно.",h1:"VPN серверы",h1Gradient:" в России, Европе и США",heroText:"VPN серверы BBQ VPN расположены в России, Нидерландах, Швейцарии, Швеции и США. Протокол VLESS + REALITY, оптимальный выбор сервера для каждой задачи. VPN серверы Россия для YouTube, серверы Европа и США для зарубежного контента.",featuresTitle:"География серверов BBQ VPN",features:[{title:"Серверы в России",description:"Российская нода для доступа к YouTube, Rutube и другим сервисам. Минимальный пинг для пользователей из России — от 5 мс. VPN серверы Россия для максимальной скорости."},{title:"Серверы в Европе",description:"Серверы в Нидерландах, Швейцарии и Швеции. VPN серверы Европа для доступа к европейскому контенту, сервисам и приложениям без ограничений."},{title:"Сервер в США",description:"Американский сервер для доступа к US-контенту — Netflix US, Hulu, HBO Max и другим сервисам. VPN серверы США с высокой скоростью соединения."},{title:"Автоматический выбор сервера",description:'Приложение <a href="https://happ.su/" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Happ</a> автоматически выбирает оптимальный сервер на основе вашего местоположения и задачи. Или выберите сервер вручную — для максимального контроля.'}],stepsTitle:"Подключение к серверу — 3 простых шага",steps:[{title:"Зарегистрируйтесь бесплатно",description:'Создайте аккаунт на сайте или через <a href="https://t.me/BBQ_VPN_BOT?start=track_site_faq_servers" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Telegram-бот</a> <a href="https://t.me/BBQ_VPN_BOT?start=track_site_faq_servers" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">@BBQ_VPN_BOT</a> — без привязки карты'},{title:"Выберите сервер",description:'Откройте список серверов в приложении <a href="https://happ.su/" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Happ</a> и выберите нужную страну — Россия, Европа или США'},{title:"Подключитесь",description:"Нажмите кнопку подключения — через секунду вы уже работаете через выбранный VPN-сервер"}],platformsTitle:"VPN серверы на любом устройстве",platformsSubtitle:"Подключайтесь к серверам BBQ VPN с Android, iOS, Windows, macOS, Linux и Smart TV. Одна подписка — все платформы и все серверы.",ctaTitle:"Доступ ко всем серверам — 7 дней бесплатно",ctaDescription:"Тестовый период без привязки карты. Платные тарифы — от 110₽/мес.",ctaChecks:["Серверы в 5+ странах","Безлимитный трафик","Оплата картой или Stars","Отмена в любой момент"],extraTitle:"Зачем VPN серверы в разных странах",extraSubtitle:"Выбор сервера влияет на скорость, доступ к контенту и уровень приватности.",extra:[{title:"Зачем VPN серверы в разных странах",content:"Разные серверы нужны для разных задач. Российский сервер обеспечивает минимальный пинг и доступ к YouTube через российскую ноду. Европейские серверы открывают доступ к сервисам, недоступным из России. Американский сервер нужен для US-контента — Netflix, Hulu и других платформ. BBQ VPN предлагает серверы в 5+ странах — выбирайте оптимальный для вашей задачи."},{title:"Российские серверы для YouTube",content:"Российская нода BBQ VPN держит видео плавным — трафик проходит через защищённый туннель VLESS. При этом ваш IP остаётся российским, что важно для сервисов с геоограничениями. Скорость соединения через российский сервер — до 100 Мбит/с с пингом от 5 мс."}],faq:[{title:"VPN серверы в России — зачем нужна российская нода?",content:"VPN серверы в России нужны для двух основных задач. Во-первых, российская нода обеспечивает минимальный пинг для пользователей из России — от 5 мс, что критично для онлайн-игр и видеозвонков. Во-вторых, трафик через российский VPN-сервер проходит по защищённому туннелю VLESS — YouTube, Instagram и другие сервисы работают на полной скорости. При этом ваш IP-адрес остаётся российским, что важно для доступа к российским сервисам с геоограничениями. BBQ VPN предлагает серверы в Москве с высокой пропускной способностью и стабильным соединением 24/7."},{title:"VPN серверы в Европе",content:"Европейские VPN серверы BBQ VPN расположены в НидерÐ
2»Ð°Ð½Ð´Ð°Ñ…, Швейцарии и Швеции. Нидерланды — одна из лучших локаций для VPN благодаря лояльному законодательству и отличной сетевой инфраструктуре. Швейцария известна строгими законами о конфиденциальности. Швеция обеспечивает высокую скорость и стабильность. VPN серверы Европа открывают доступ к европейским сервисам, включая стриминговые платформы с региональными ограничениями. Пинг до европейских серверов из России составляет 30-60 мс — комфортный для веб-сёрфинга и стриминга."},{title:"VPN серверы в США",content:"Американский VPN-сервер BBQ VPN расположен в Лос-Анджелесе — одном из крупнейших интернет-хабов на западном побережье США. VPN серверы США необходимы для доступа к американскому контенту: Netflix US, Hulu, HBO Max, Amazon Prime Video с американским каталогом. Также через американский сервер можно получить доступ к сервисам, которые работают только в США — например, некоторые банковские приложения и магазины. Скорость соединения с американским сервером составляет до 80 Мбит/с, пинг — от 120 мс, что достаточно для комфортного стриминга и веб-сёрфинга."}],relatedLinks:[{to:"/vpn-speed",label:"Быстрый VPN без потери скорости"},{to:"/vpn-encryption",label:"VPN с шифрованием AES-256"},{to:"/vpn-youtube",label:"VPN для YouTube"},{to:"/pricing",label:"Тарифы BBQ VPN"}]},devices:{title:"VPN для всех устройств — Android, iOS, Windows, macOS | BBQ VPN",description:"BBQ VPN работает на всех устройствах: Android, iPhone, Windows, macOS, Linux, Smart TV. Одна подписка — до 12 устройств. Настройка за 2 минуты. 7 дней бесплатно.",h1:"VPN для всех устройств",h1Gradient:" — одна подписка",heroText:"Одна подписка BBQ VPN — до 12 устройств. VPN для телефона на Android и iPhone, vpn для компьютера на Windows и macOS, vpn на все устройства включая Linux и Smart TV. Настройка за 2 минуты, 7 дней бесплатно без привязки карты.",featuresTitle:"BBQ VPN работает на всех платформах",features:[{title:"Android и iOS",description:'Установите BBQ VPN на смартфон за 2 минуты. Приложение <a href="https://happ.su/" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Happ</a> доступно в Google Play и App Store. VPN для телефона работает стабильно и не разряжает батарею.'},{title:"Windows и macOS",description:'VPN для компьютера на Windows 10/11 и macOS. Клиент <a href="https://happ.su/" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Happ</a> запускается в один клик. Защитите рабочий ПК и ноутбук одной подпиской.'},{title:"Linux",description:'Поддержка Ubuntu, Debian, Fedora и других дистрибутивов. Настройка через командную строку или графический клиент <a href="https://happ.su/" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Happ</a>. VPN для продвинутых пользователей.'},{title:"Smart TV",description:"VPN для телевизора — Android T
2V, Apple TV, Fire TV Stick. Смотрите YouTube, стриминги и IPTV без ограничений на большом экране."}],stepsTitle:"Подключите VPN на все устройства — 3 шага",steps:[{title:"Зарегистрируйтесь бесплатно",description:'Создайте аккаунт на сайте bbqpirat.com или через <a href="https://t.me/BBQ_VPN_BOT?start=track_site_faq_devices" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Telegram-бот</a> <a href="https://t.me/BBQ_VPN_BOT?start=track_site_faq_devices" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">@BBQ_VPN_BOT</a> — без привязки карты'},{title:"Скачайте приложение Happ",description:'Установите <a href="https://happ.su/" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Happ</a> на ваше устройство — Android, iOS, Windows, macOS, Linux или Smart TV'},{title:"Подключите все устройства",description:"Добавьте подписку на каждое устройство по ссылке из личного кабинета — до 12 устройств на одном аккаунте"}],platformsTitle:"Поддерживаемые платформы",platformsSubtitle:"VPN для Android, iOS, Windows, macOS, Linux и Smart TV. Одна подписка — все устройства.",ctaTitle:"Подключите все устройства бесплатно на 7 дней",ctaDescription:"Тестовый период без привязки карты. Платные тарифы — от 110₽/мес.",ctaChecks:["До 12 устройств","Безлимитный трафик","Все платформы","Отмена в любой момент"],extraTitle:"VPN для Android — пошагово",extraSubtitle:"Настройте VPN на Android за 2 минуты — скачайте Happ и подключитесь.",extra:[{title:"Как установить VPN на Android",type:"list",items:["Зарегистрируйтесь на bbqpirat.com или через @BBQ_VPN_BOT","Скачайте приложение Happ из Google Play или APK с сайта","Откройте ссылку подписки из личного кабинета","Нажмите «Подключиться» — VPN работает"]},{title:"VPN для нескольких устройств",content:"С BBQ VPN вы можете подключить до 12 устройств на одну подписку. Телефон, планшет, ноутбук, рабочий компьютер и Smart TV — всё защищено одним аккаунтом. Семейные тарифы позволяют делить подписку между членами семьи. Каждое устройство подключается независимо и может использовать разные серверы."}],faq:[{title:"VPN для телефона — Android и iPhone",content:'VPN для телефона от BBQ VPN работает на Android 7+ и iOS 15+. Приложение <a href="https://happ.su/" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Happ</a> устанавливается за минуту и не требует сложной настройки. VPN для Android подключается автоматически при запуске — ваш трафик всегда защищён. VPN для iPhone работает так же просто: скачайте <a href="https://happ.su/" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Happ</a> из App Store, добавьте подписку и нажмите «Подключиться». Протокол VLESS обеспечивает стабильное соединение даже в мобильных сетях.'},{title:"VPN для компьютера — Windows, macOS, Linux",content:'BBQ VPN для компьютера поддерживает Windows 10/11, macOS 12+ и популярные дистрибутивы Linux. VPN для Windows устанавливается через клиент <a href="https://happ.su/" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Happ</a> — запустите установщик, добавьте подписку и подключитесь в один клик. VPN для macOS работает аналогично. Для Linux доступен как графический клиент, так и настройка через командную строку. Скорость соединения до 100 Мбит/с на всех платформах.'},{title:"VPN на все устройства — семейные тарифы",content:"BBQ VPN предлагает тарифы на несколько устройств — от 1 до 12. Одна подписка покрывает все устройства семьи: смартфоны, планшеты, компьютеры и телевизоры. VPN на все устройства стоит от 110₽/мес за 1 устройство, с выгодными тарифами при покупке на 6 или 12 месяцев. Бесплатный тестовый период 7 дней позволяет проверить работу на каждом устройстве без привязки карты."}
2],relatedLinks:[{to:"/setup",label:"Инструкция по настройке"},{to:"/vpn-speed",label:"Скорость VPN"},{to:"/vpn-support",label:"Поддержка 24/7"},{to:"/pricing",label:"Тарифы и цены"}]},support:{title:"VPN с поддержкой 24/7 — быстрый ответ | BBQ VPN",description:"BBQ VPN с техподдержкой 24/7. Быстрый ответ, помощь в настройке, Telegram-бот. Стабильная поддержка без ожидания. 7 дней бесплатно.",h1:"VPN с поддержкой",h1Gradient:" 24/7 — всегда на связи",heroText:"Техподдержка VPN через Telegram-бот. Помощь в настройке на любом устройстве, ответ за 5 минут. Стабильная поддержка без очередей — решаем любые вопросы быстро и по делу. 7 дней бесплатно без привязки карты.",featuresTitle:"Почему поддержка BBQ VPN — лучшая",features:[{title:"Telegram-бот поддержки",description:'Напишите <a href="https://t.me/BBQ_VPN_BOT?start=track_site_faq_support" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">@BBQ_VPN_BOT</a> в Telegram и получите помощь мгновенно. Бот ответит на частые вопросы, а живой оператор подключится при необходимости.'},{title:"Ответ за 5 минут",description:"Среднее время ответа — 5 минут. Никаких тикетов и очередей. Мы отвечаем быстро, потому что ценим ваше время."},{title:"Живые операторы",description:"Полноценная поддержка с реальными людьми — никаких шаблонных ответов. Объясним всё понятно и поможем настроить VPN на любом устройстве."},{title:"Инструкции и гайды",description:"Подробные пошаговые инструкции по настройке VPN на Android, iOS, Windows, macOS и Smart TV. Видеоуроки и текстовые гайды."}],stepsTitle:"Как получить помощь — 3 простых шага",steps:[{title:"Опишите проблему",description:'Напишите в <a href="https://t.me/BBQ_VPN_BOT?start=track_site_faq_support" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Telegram-бот</a> <a href="https://t.me/BBQ_VPN_BOT?start=track_site_faq_support" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">@BBQ_VPN_BOT</a> или на сайте — опишите, что не работает или что нужно настроить'},{title:"Получите решение",description:"Оператор ответит за 5 минут с пошаговой инструкцией или подключится удалённо для помощи"},{title:"Проблема решена",description:"Убедитесь, что всё работает. Мы не закрываем обращение, пока вы не подтвердите, что проблема решена"}],platformsTitle:"Помогаем настроить VPN на любом устройстве",platformsSubtitle:"Поддержка по настройке VPN на Android, iOS, Windows, macOS, Linux и Smart TV.",ctaTitle:"Попробуйте BBQ VPN с поддержкой 24/7",ctaDescription:"7 дней бесплатно. Быстрая поддержка в любое время суток.",ctaChecks:["Ответ за 5 минут","Живые операторы","Помощь с настройкой","Тарифы от 110₽/мес"],extraTitle:"Поддержка через Telegram",extraSubtitle:"Самый быстрый способ получить помощь — написать нашему боту в Telegram.",extra:[{title:"Поддержка через Telegram",type:"list",items:["Откройте Telegram и найдите @BBQ_VPN_BOT","Нажмите «Поддержка» в меню бота","Опишите проблему — бот предложит решение или переключит на оператора","Получите ответ в течение 5 минут"]},{title:"Инструкции по настройке",content:'На сайте bbqpirat.com доступны подробные инструкции по настройке VPN на каждом устройстве. Пошаговые гайды с скриншотами помогут установить приложение <a href="https://happ.su/" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Happ</a> и подключиться к VPN за 2 минуты. Если что-то не получается — напишите в поддержку, и мы поможем настроить VPN удалённо.'}],faq:[{title:"Почему быстрая поддержка важна",content:"Большинство VPN-сервисов отвечают медленно и формально — шаблонами и за несколько часов. Если у вас возникла проблема с подключением или настройкой, это превращается в долгую переписку. BBQ VPN — это VPN со стабильной и быстрой поддержкой. Наши операторы понимают особенности локальных провайдеров и помогают решить любую проблему быстро и по делу. Техподдержка VPN работает 24/7 без выходных."},{title:"Помощь в настройке VPN на любом устройстве",content:"Не знаете, как установить VPN на Android или iPhone? Не можете подключиться на Windows или macOS? Поддержка BBQ VPN поможет настроить VPN на любом устройстве. Мы предоставляем пошаговые инструкции и можем провести настройку удалённо через Telegram. Помощь в настройке VPN включена в любой тариф — даже в бесплатный тестовый период Ð
2½Ð° 7 дней."},{title:"Техподдержка VPN через Telegram",content:'Telegram — самый удобный способ связаться с техподдержкой VPN. Бот <a href="https://t.me/BBQ_VPN_BOT?start=track_site_faq_support" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">@BBQ_VPN_BOT</a> отвечает мгновенно на типовые вопросы: как скачать приложение, как добавить подписку, как сменить сервер. Для сложных вопросов подключается живой оператор со средним временем ответа 5 минут. VPN с техподдержкой через Telegram — это быстро, удобно и без бюрократии.'}],relatedLinks:[{to:"/support",label:"Центр поддержки"},{to:"/setup",label:"Инструкция по настройке"},{to:"/vpn-devices",label:"VPN для всех устройств"},{to:"/pricing",label:"Тарифы и цены"}]},guarantee:{title:"VPN с гарантией возврата денег — 7 дней бесплатно | BBQ VPN",description:"Попробуйте BBQ VPN бесплатно 7 дней без привязки карты. Гарантия возврата денег. Без риска. Тарифы от 110₽/мес.",h1:"VPN с гарантией",h1Gradient:" возврата денег",heroText:"Попробуйте BBQ VPN бесплатно 7 дней без привязки карты. Гарантия возврата денег после оплаты. VPN без риска — оцените скорость и стабильность, прежде чем платить. Тарифы от 110₽/мес за безлимитный VPN.",featuresTitle:"BBQ VPN — без риска и скрытых условий",features:[{title:"7 дней бесплатно",description:"Полноценный тестовый период без ограничений. Безлимитный трафик, все серверы, максимальная скорость — 7 дней бесплатно для каждого нового пользователя."},{title:"Без привязки карты",description:"Для активации бесплатного периода не нужна банковская карта. Никаких скрытых списаний. Просто зарегистрируйтесь и пользуйтесь VPN."},{title:"Возврат денег",description:"Не подошло — вернём всю сумму в течение 7 дней после первой оплаты, без лишних вопросов. Позже и при продлении — возврат за неиспользованные дни. Прозрачная политика возврата."},{title:"Без риска",description:"Попробуйте бесплатно, оцените скорость и стабильность, и только потом решайте. Никаких обязательств и автоматических продлений."}],stepsTitle:"Как попробовать VPN бесплатно — 3 шага",steps:[{title:"Зарегистрируйтесь бесплатно",description:'Создайте аккаунт на bbqpirat.com или через <a href="https://t.me/BBQ_VPN_BOT?start=track_site_faq_guarantee" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Telegram-бот</a> <a href="https://t.me/BBQ_VPN_BOT?start=track_site_faq_guarantee" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">@BBQ_VPN_BOT</a> — без привязки карты и обязательств'},{title:"Пользуйтесь VPN 7 дней",description:'Установите приложение <a href="https://happ.su/" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Happ</a>, подключитесь и пользуйтесь VPN без ограничений. Все функции доступны бесплатно'},{title:"Решите, подходит ли вам",description:"После тестового периода выберите тариф от 110₽/мес или просто не продлевайте — никаких скрытых списаний"}],platformsTitle:"Попробуйте бесплатно на любом устройстве",platformsSubtitle:"7 дней бесплатно на Android, iOS, Windows, macOS, Linux и Smart TV.",ctaTitle:"Начните бесплатно — платите только если понравится",ctaDescription:"7 дней без ограничений. Тарифы от 110₽/мес после тестового периода.",ctaChecks:["7 дней бесплатно","Без привязки карты","Гарантия возврата","Отмена в любой момент"],extraTitle:"Как получить бесплатный VPN",extraSubtitle:"Бесплатный тестовый период BBQ VPN — без подвохов и скрытых условий.",extra:[{title:"Как получить бесплатный VPN",type:"list",items:["Зарегистрируйтесь на bbqpirat.com или через @BBQ_VPN_BOT","Получите бесплатный VPN-ключ на 7 дней автоматически","Скачайте Happ и добавьте подписку","Пользуйтесь VPN без ограничений — карта не нужна"]},{title:"Политика возврата",content:'Если после оплаты BBQ VPN не оправдал ожиданий — мы вернём деньги: всю сумму в течение 7 дней после первой оплаты, позже — за неиспользованные дни. Напишите в поддержку через <a href="https://t.me/BBQ_VPN_BOT?start=track_site_faq_guarantee" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">Telegram-бот</a> <a href="https://t.me/BBQ_VPN_BOT?start=track_site_faq_guarantee" target="_blank" rel="noopener noreferrer" class="text-bbq-red hover:text-bbq-dark-red font-semibold underline underline-offset-2 decoration-bbq-red/40 hover:decoration-bbq-red transition-colors">@BBQ_VPN_BOT</a>, укажите причину, и мы оформим возврат без лишних вопросов. Подробности — на странице «Политика возврата».'}],faq:[{title:"VPN бесплатно попробовать — 7 дней без ограничений",content:"BBQ VPN предлагает бесплатный пробный период 7 дней для каждого нового пользователя. В отличие от многих VPN-сервисов, мы не требуем привязку банковской карты для активации тестового периода. Вы получаете полный доступ ко всем серверам и функциям: безлимитный трафик, скорость до 100 Мбит/с, все платформы. VPN бесплатно попробовать — это просто: зарегистрируйтесь и пользуйтесь. Никаких скрытых платежей и автоматических списаний."},{title:"Гарантия возврата денег за VPN",content:"После тестового периода вы можете выбрать платный тариф от 110₽/мес. Если VPN не подойдёт — в течение 7 дней после первой оплаты мы вернём всю сумму, позже — за неиспользованные дни. Просто напишите в поддержку через Telegram, и мы оформим возврат. Гарантия возврата денег за VPN — это наша уверенность в качестве сервиса. Мы не удерживаем клиентов скрытыми условиями — только честным сервисом."},{title:"VPN без риска — прозрачные условия",content:"BBQ VPN работает по принципу полной прозрачности. Никаких автоматических продлений без вашего согласия. Никаких скрытых комиссий. Тарифы указаны на сайте без мелкого шрифта. VPN без риска — это 7 дней бесплатно, гарантия возврата и поддержка 24/7 на русском языке. Попробуйте BBQ VPN и убедитесь сами — от 110₽/мес за надёжный и быстрый VPN с протоколом VLESS."}],relatedLinks:[{to:"/refund",label:"Политика возврата"},{to:"/pricing",label:"Тарифы и цены"},{to:"/vpn-encryption",label:"Шифрование VPN"},{to:"/vpn-speed",label:"Скорость VPN"}]}}}}},lng:"ru",fallbackLng:"ru",debug:!1,interpolation:{escapeValue:!1},react:{useSuspense:!1}});const j={},B=function(e,t,r){let n=Promise.resolve();if(t&&t.length>0){let e=function(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:"fulfilled",value:e}),e=>({status:"rejected",reason:e}))))};document.getElementsByTagName("link");const r=document.querySelector("meta[property=csp-nonce]"),o=r?.nonce||r?.getAttribute("nonce");n=e(t.map(e=>{if((e=function(e){return"/"+e}(e))in j)return;j[e]=!0;const t=e.endsWith(".css"),r=t?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${e}"]${r}`))return;const n=document.createElement("link");return n.rel=t?"stylesheet":"modulepreload",t||(n.as="script"),n.crossOrigin="",n.href=e,o&&n.setAttribute("nonce",o),document.head.appendChild(n),t?new Promise((t,r)=>{n.addEventListener("load",t),n.addEventListener("error",()=>r(new Error(`Unable to preload CSS for ${e}`)))}):void 0}))}function o(e){const t=new Event("vite:preloadError",{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return n.then(t=>{for(const e of t||[])"rejected"===e.status&&o(e.reason);return e().catch(o)})};var R,L;const C=s(function(){if(L)return R;L=1;var e="undefined"!=typeof Element,t="function"==typeof Map,r="function"==typeof Set,n="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;
2function o(s,i){if(s===i)return!0;if(s&&i&&"object"==typeof s&&"object"==typeof i){if(s.constructor!==i.constructor)return!1;var a,l,c,d;if(Array.isArray(s)){if((a=s.length)!=i.length)return!1;for(l=a;0!==l--;)if(!o(s[l],i[l]))return!1;return!0}if(t&&s instanceof Map&&i instanceof Map){if(s.size!==i.size)return!1;for(d=s.entries();!(l=d.next()).done;)if(!i.has(l.value[0]))return!1;for(d=s.entries();!(l=d.next()).done;)if(!o(l.value[1],i.get(l.value[0])))return!1;return!0}if(r&&s instanceof Set&&i instanceof Set){if(s.size!==i.size)return!1;for(d=s.entries();!(l=d.next()).done;)if(!i.has(l.value[0]))return!1;return!0}if(n&&ArrayBuffer.isView(s)&&ArrayBuffer.isView(i)){if((a=s.length)!=i.length)return!1;for(l=a;0!==l--;)if(s[l]!==i[l])return!1;return!0}if(s.constructor===RegExp)return s.source===i.source&&s.flags===i.flags;if(s.valueOf!==Object.prototype.valueOf&&"function"==typeof s.valueOf&&"function"==typeof i.valueOf)return s.valueOf()===i.valueOf();if(s.toString!==Object.prototype.toString&&"function"==typeof s.toString&&"function"==typeof i.toString)return s.toString()===i.toString();if((a=(c=Object.keys(s)).length)!==Object.keys(i).length)return!1;for(l=a;0!==l--;)if(!Object.prototype.hasOwnProperty.call(i,c[l]))return!1;if(e&&s instanceof Element)return!1;for(l=a;0!==l--;)if(("_owner"!==c[l]&&"__v"!==c[l]&&"__o"!==c[l]||!s.$$typeof)&&!o(s[c[l]],i[c[l]]))return!1;return!0}return s!=s&&i!=i}return R=function(e,t){try{return o(e,t)}catch(r){if((r.message||"").match(/stack|recursion/i))return!1;throw r}}}());var q,D;var I=D?q:(D=1,q=function(e,t,r,n,o,s,i,a){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[r,n,o,s,i,a],d=0;(l=new Error(t.replace(/%s/g,function(){return c[d++]}))).name="Invariant Violation"}throw l.framesToPop=1,l}});const U=s(I);var M,Q;const F=s(Q?M:(Q=1,M=function(e,t,r,n){var o=r?r.call(n,e,t):void 0;if(void 0!==o)return!!o;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var s=Object.keys(e),i=Object.keys(t);if(s.length!==i.length)return!1;for(var a=Object.prototype.hasOwnProperty.bind(t),l=0;l<s.length;l++){var c=s[l];if(!a(c))return!1;var d=e[c],u=t[c];if(!1===(o=r?r.call(n,d,u,c):void 0)||void 0===o&&d!==u)return!1}return!0}));var H=(e=>(e.BASE="base",e.BODY="body",e.HEAD="head",e.HTML="html",e.LINK="link",e.META="meta",e.NOSCRIPT="noscript",e.SCRIPT="script",e.STYLE="style",e.TITLE="title",e.FRAGMENT="Symbol(react.fragment)",e))(H||{}),z={rel:["amphtml","canonical","alternate"]},$={type:["application/ld+json"]},W={charset:"",name:["generator","robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},Y=Object.values(H),G={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},K=Object.entries(G).reduce((e,[t,r])=>(e[r]=t,e),{}),J="data-rh",X="defaultTitle",Z="defer",ee="encodeSpecialCharacters",te="onChangeClientState",re="titleTemplate",ne="prioritizeSeoTags",oe=(e,t)=>{for(let r=e.length-1;r>=0;r-=1){const n=e[r];if(Object.prototype.hasOwnProperty.call(n,t))return n[t]}return null},se=e=>{let t=oe(e,"title");const r=oe(e,re);if(Array.isArray(t)&&(t=t.join("")),r&&t)return r.replace(/%s/g,()=>t);const n=oe(e,X);return t||n||void 0},ie=e=>oe(e,te)||(()=>{}),ae=(e,t)=>t.filter(t=>void 0!==t[e]).map(t=>t[e]).reduce((e,t)=>({...e,...t}),{}),le=(e,t)=>t.filter(e=>void 0!==e.base).map(e=>e.base).reverse().reduce((t,r)=>{if(!t.length){const n=Object.keys(r);for(let o=0;o<n.length;o+=1){const s=n[o].toLowerCase();if(-1!==e.indexOf(s)&&r[s])return t.concat(r)}}return t},[]),ce=(e,t,r)=>{const n={};return r.filter(t=>!!Array.isArray(t[e])||(void 0!==t[e]&&(t[e],console&&console.warn),!1)).map(t=>t[e]).reverse().reduce((e,r)=>{const o={};r.filter(e=>{let r;const s=Object.keys(e);for(let n=0;n<s.length;n+=1){const o=s[n],i=o.toLowerCase();-1===t.indexOf(i)||"rel"===r&&"canonical"===e[r].toLowerCase()||"rel"===i&&"stylesheet"===e[i].toLowerCase()||(r=i),-1===t.indexOf(o)||"innerHTML"!==o&&"cssText"!==o&&"itemprop"!==o||(r=o)}if(!r||!e[r])return!1;const i=e[r].toLowerCase();return n[r]||(n[r]={}),o[r]||(o[r]={}),!n[r][i]&&(o[r][i]=!0,!0)}
2).reverse().forEach(t=>e.push(t));const s=Object.keys(o);for(let t=0;t<s.length;t+=1){const e=s[t],r={...n[e],...o[e]};n[e]=r}return e},[]).reverse()},de=(e,t)=>{if(Array.isArray(e)&&e.length)for(let r=0;r<e.length;r+=1){if(e[r][t])return!0}return!1},ue=e=>Array.isArray(e)?e.join(""):e,pe=(e,t)=>Array.isArray(e)?e.reduce((e,r)=>(((e,t)=>{const r=Object.keys(e);for(let n=0;n<r.length;n+=1)if(t[r[n]]&&t[r[n]].includes(e[r[n]]))return!0;return!1})(r,t)?e.priority.push(r):e.default.push(r),e),{priority:[],default:[]}):{default:e,priority:[]},me=(e,t)=>({...e,[t]:void 0}),he=["noscript","script","style"],fe=(e,t=!0)=>!1===t?String(e):String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;"),be=e=>Object.keys(e).reduce((t,r)=>{const n=void 0!==e[r]?`${r}="${e[r]}"`:`${r}`;return t?`${t} ${n}`:n},""),ge=(e,t={})=>Object.keys(e).reduce((t,r)=>(t[G[r]||r]=e[r],t),t),ye=(e,t)=>t.map((t,r)=>{const n={key:r,[J]:!0};return Object.keys(t).forEach(e=>{const r=G[e]||e;if("innerHTML"===r||"cssText"===r){const e=t.innerHTML||t.cssText;n.dangerouslySetInnerHTML={__html:e}}else n[r]=t[e]}),a.createElement(e,n)}),_e=(e,t,r=!0)=>{switch(e){case"title":return{toComponent:()=>((e,t,r)=>{const n=ge(r,{key:t,[J]:!0});return[a.createElement("title",n,t)]})(0,t.title,t.titleAttributes),toString:()=>((e,t,r,n)=>{const o=be(r),s=ue(t);return o?`<${e} ${J}="true" ${o}>${fe(s,n)}</${e}>`:`<${e} ${J}="true">${fe(s,n)}</${e}>`})(e,t.title,t.titleAttributes,r)};case"bodyAttributes":case"htmlAttributes":return{toComponent:()=>ge(t),toString:()=>be(t)};default:return{toComponent:()=>ye(e,t),toString:()=>((e,t,r=!0)=>t.reduce((t,n)=>{const o=n,s=Object.keys(o).filter(e=>!("innerHTML"===e||"cssText"===e)).reduce((e,t)=>{const n=void 0===o[t]?t:`${t}="${fe(o[t],r)}"`;return e?`${e} ${n}`:n},""),i=o.innerHTML||o.cssText||"",a=-1===he.indexOf(e);return`${t}<${e} ${J}="true" ${s}${a?"/>":`>${i}</${e}>`}`},""))(e,t,r)}}},xe=e=>{const{baseTag:t,bodyAttributes:r,encode:n=!0,htmlAttributes:o,noscriptTags:s,styleTags:i,title:a="",titleAttributes:l,prioritizeSeoTags:c}=e;let{linkTags:d,metaTags:u,scriptTags:p}=e,m={toComponent:()=>{},toString:()=>""};return c&&({priorityMethods:m,linkTags:d,metaTags:u,scriptTags:p}=(({metaTags:e,linkTags:t,scriptTags:r,encode:n})=>{const o=pe(e,W),s=pe(t,z),i=pe(r,$);return{priorityMethods:{toComponent:()=>[...ye("meta",o.priority),...ye("link",s.priority),...ye("script",i.priority)],toString:()=>`${_e("meta",o.priority,n)} ${_e("link",s.priority,n)} ${_e("script",i.priority,n)}`},metaTags:o.default,linkTags:s.default,scriptTags:i.default}})(e)),{priority:m,base:_e("base",t,n),bodyAttributes:_e("bodyAttributes",r,n),htmlAttributes:_e("htmlAttributes",o,n),link:_e("link",d,n),meta:_e("meta",u,n),noscript:_e("noscript",s,n),script:_e("script",p,n),style:_e("style",i,n),title:_e("title",{title:a,titleAttributes:l},n)}},ve=[],we=!("undefined"==typeof window||!window.document||!window.document.createElement),Ne=class{instances=[];canUseDOM=we;context;value={setHelmet:e=>{this.context.helmet=e},helmetInstances:{get:()=>this.canUseDOM?ve:this.instances,add:e=>{(this.canUseDOM?ve:this.instances).push(e)},remove:e=>{const t=(this.canUseDOM?ve:this.instances).indexOf(e);(this.canUseDOM?ve:this.instances).splice(t,1)}}};constructor(e,t){this.context=e,this.canUseDOM=t||!1,t||(e.helmet=xe({baseTag:[],bodyAttributes:{},htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))}},Pe=a.createContext({}),Se=class e extends i.Component{static canUseDOM=we;helmetData;constructor(t){super(t),this.helmetData=new Ne(this.props.context||{},e.canUseDOM)}render(){return a.createElement(Pe.Provider,{value:this.helmetData.value},this.props.children)}},ke=(e,t)=>{const r=document.head||document.querySelector("head"),n=r.querySelectorAll(`${e}[${J}]`),o=[].slice.call(n),s=[];let i;return t&&t.length&&t.forEach(t=>{const r=document.createElement(e);for(const e in t)if(Object.prototype.hasOwnProperty.call(t,e))if("innerHTML"===e)r.innerHTML=t.innerHTML;else if("cssText"===e)r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText));else{const n=e,o=void 0===t[n]?"":t[n];r.setAttribute(e,o)}r.setAttribute(J,"true"),o.some((e,t)=>(i=t,r.isEqualNode(e)))?o.splice(i,1):s.push(r)}
2),o.forEach(e=>e.parentNode?.removeChild(e)),s.forEach(e=>r.appendChild(e)),{oldTags:o,newTags:s}},Te=(e,t)=>{const r=document.getElementsByTagName(e)[0];if(!r)return;const n=r.getAttribute(J),o=n?n.split(","):[],s=[...o],i=Object.keys(t);for(const a of i){const e=t[a]||"";r.getAttribute(a)!==e&&r.setAttribute(a,e),-1===o.indexOf(a)&&o.push(a);const n=s.indexOf(a);-1!==n&&s.splice(n,1)}for(let a=s.length-1;a>=0;a-=1)r.removeAttribute(s[a]);o.length===s.length?r.removeAttribute(J):r.getAttribute(J)!==i.join(",")&&r.setAttribute(J,i.join(","))},Ve=(e,t)=>{const{baseTag:r,bodyAttributes:n,htmlAttributes:o,linkTags:s,metaTags:i,noscriptTags:a,onChangeClientState:l,scriptTags:c,styleTags:d,title:u,titleAttributes:p}=e;Te("body",n),Te("html",o),((e,t)=>{void 0!==e&&document.title!==e&&(document.title=ue(e)),Te("title",t)})(u,p);const m={baseTag:ke("base",r),linkTags:ke("link",s),metaTags:ke("meta",i),noscriptTags:ke("noscript",a),scriptTags:ke("script",c),styleTags:ke("style",d)},h={},f={};Object.keys(m).forEach(e=>{const{newTags:t,oldTags:r}=m[e];t.length&&(h[e]=t),r.length&&(f[e]=m[e].oldTags)}),t&&t(),l(e,h,f)},Ee=null,Ae=e=>{Ee&&cancelAnimationFrame(Ee),e.defer?Ee=requestAnimationFrame(()=>{Ve(e,()=>{Ee=null})}):(Ve(e),Ee=null)},Oe=class extends i.Component{rendered=!1;shouldComponentUpdate(e){return!F(e,this.props)}componentDidUpdate(){this.emitChange()}componentWillUnmount(){const{helmetInstances:e}=this.props.context;e.remove(this),this.emitChange()}emitChange(){const{helmetInstances:e,setHelmet:t}=this.props.context;let r=null;const n=(o=e.get().map(e=>{const t={...e.props};return delete t.context,t}),{baseTag:le(["href"],o),bodyAttributes:ae("bodyAttributes",o),defer:oe(o,Z),encode:oe(o,ee),htmlAttributes:ae("htmlAttributes",o),linkTags:ce("link",["rel","href"],o),metaTags:ce("meta",["name","charset","http-equiv","property","itemprop"],o),noscriptTags:ce("noscript",["innerHTML"],o),onChangeClientState:ie(o),scriptTags:ce("script",["src","innerHTML"],o),styleTags:ce("style",["cssText"],o),title:se(o),titleAttributes:ae("titleAttributes",o),prioritizeSeoTags:de(o,ne)});var o;Se.canUseDOM?Ae(n):xe&&(r=xe(n)),t(r)}init(){if(this.rendered)return;this.rendered=!0;const{helmetInstances:e}=this.props.context;e.add(this),this.emitChange()}render(){return this.init(),null}},je=class extends i.Component{static defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1};shouldComponentUpdate(e){return!C(me(this.props,"helmetData"),me(e,"helmetData"))}mapNestedChildrenToProps(e,t){if(!t)return null;switch(e.type){case"script":case"noscript":return{innerHTML:t};case"style":return{cssText:t};default:throw new Error(`<${e.type} /> elements are self-closing and can not contain children. Refer to our API for more information.`)}}flattenArrayTypeChildren(e,t,r,n){return{...t,[e.type]:[...t[e.type]||[],{...r,...this.mapNestedChildrenToProps(e,n)}]}}mapObjectTypeChildren(e,t,r,n){switch(e.type){case"title":return{...t,[e.type]:n,titleAttributes:{...r}};case"body":return{...t,bodyAttributes:{...r}};case"html":return{...t,htmlAttributes:{...r}};default:return{...t,[e.type]:{...r}}}}mapArrayTypeChildrenToProps(e,t){let r={...t};return Object.keys(e).forEach(t=>{r={...r,[t]:e[t]}}),r}warnOnInvalidChildren(e,t){return U(Y.some(t=>e.type===t),"function"==typeof e.type?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":`Only elements types ${Y.join(", ")} are allowed. Helmet does not support rendering <${e.type}> elements. Refer to our API for more information.`),U(!t||"string"==typeof t||Array.isArray(t)&&!t.some(e=>"string"!=typeof e),`Helmet expects a string as a child of <${e.type}>. Did you forget to wrap your children in braces? ( <${e.type}>{\`\`}</${e.type}> ) Refer to our API for more information.`),!0}mapChildrenToProps(e,t){let r={};return a.Children.forEach(e,e=>{if(!e||!e.props)return;const{children:n,...o}=e.props,s=Object.keys(o).reduce((e,t)=>(e[K[t]||t]=o[t],e),{});let{type:i}=e;
2switch("symbol"==typeof i?i=i.toString():this.warnOnInvalidChildren(e,n),i){case"Symbol(react.fragment)":t=this.mapChildrenToProps(n,t);break;case"link":case"meta":case"noscript":case"script":case"style":r=this.flattenArrayTypeChildren(e,r,s,n);break;default:t=this.mapObjectTypeChildren(e,t,s,n)}}),this.mapArrayTypeChildrenToProps(r,t)}render(){const{children:e,...t}=this.props;let r={...t},{helmetData:n}=t;if(e&&(r=this.mapChildrenToProps(e,r)),n&&!(n instanceof Ne)){n=new Ne(n.context,!0),delete r.helmetData}return n?a.createElement(Oe,{...r,context:n.value}):a.createElement(Pe.Consumer,null,e=>a.createElement(Oe,{...r,context:e}))}};let Be,Re,Le,Ce={data:""},qe=/(?:([\u0080-\uFFFF\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\s*)/g,De=/\/\*[^]*?\*\/|  +/g,Ie=/\n+/g,Ue=(e,t)=>{let r="",n="",o="";for(let s in e){let i=e[s];"@"==s[0]?"i"==s[1]?r=s+" "+i+";":n+="f"==s[1]?Ue(i,s):s+"{"+Ue(i,"k"==s[1]?"":t)+"}":"object"==typeof i?n+=Ue(i,t?t.replace(/([^,])+/g,e=>s.replace(/([^,]*:\S+\([^)]*\))|([^,])+/g,t=>/&/.test(t)?t.replace(/&/g,e):e?e+" "+t:t)):s):null!=i&&(s=/^--/.test(s)?s:s.replace(/[A-Z]/g,"-$&").toLowerCase(),o+=Ue.p?Ue.p(s,i):s+":"+i+";")}return r+(t&&o?t+"{"+o+"}":o)+n},Me={},Qe=e=>{if("object"==typeof e){let t="";for(let r in e)t+=r+Qe(e[r]);return t}return e};function Fe(e){let t=this||{},r=e.call?e(t.p):e;return((e,t,r,n,o)=>{let s=Qe(e),i=Me[s]||(Me[s]=(e=>{let t=0,r=11;for(;t<e.length;)r=101*r+e.charCodeAt(t++)>>>0;return"go"+r})(s));if(!Me[i]){let t=s!==e?e:(e=>{let t,r,n=[{}];for(;t=qe.exec(e.replace(De,""));)t[4]?n.shift():t[3]?(r=t[3].replace(Ie," ").trim(),n.unshift(n[0][r]=n[0][r]||{})):n[0][t[1]]=t[2].replace(Ie," ").trim();return n[0]})(e);Me[i]=Ue(o?{["@keyframes "+i]:t}:t,r?"":"."+i)}let a=r&&Me.g?Me.g:null;return r&&(Me.g=Me[i]),l=Me[i],c=t,d=n,(u=a)?c.data=c.data.replace(u,l):-1===c.data.indexOf(l)&&(c.data=d?l+c.data:c.data+l),i;var l,c,d,u})(r.unshift?r.raw?((e,t,r)=>e.reduce((e,n,o)=>{let s=t[o];if(s&&s.call){let e=s(r),t=e&&e.props&&e.props.className||/^go/.test(e)&&e;s=t?"."+t:e&&"object"==typeof e?e.props?"":Ue(e,""):!1===e?"":e}return e+n+(null==s?"":s)},""))(r,[].slice.call(arguments,1),t.p):r.reduce((e,r)=>Object.assign(e,r&&r.call?r(t.p):r),{}):r,(e=>{if("object"==typeof window){let t=(e?e.querySelector("#_goober"):window._goober)||Object.assign(document.createElement("style"),{innerHTML:" ",id:"_goober"});return t.nonce=window.__nonce__,t.parentNode||(e||document.head).appendChild(t),t.firstChild}return e||Ce})(t.target),t.g,t.o,t.k)}Fe.bind({g:1});let He=Fe.bind({k:1});function ze(e,t){let r=this||{};return function(){let t=arguments;return function n(o,s){let i=Object.assign({},o),a=i.className||n.className;r.p=Object.assign({theme:Re&&Re()},i),r.o=/ *go\d+/.test(a),i.className=Fe.apply(r,t)+(a?" "+a:"");let l=e;return e[0]&&(l=i.as||e,delete i.as),Le&&l[0]&&Le(i),Be(l,i)}}}var $e=(e,t)=>(e=>"function"==typeof e)(e)?e(t):e,We=(()=>{let e=0;return()=>(++e).toString()})(),Ye=(()=>{let e;return()=>{if(void 0===e&&typeof window<"u"){let t=matchMedia("(prefers-reduced-motion: reduce)");e=!t||t.matches}return e}})(),Ge="default",Ke=(e,t)=>{let{toastLimit:r}=e.settings;switch(t.type){case 0:return{...e,toasts:[t.toast,...e.toasts].slice(0,r)};case 1:return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case 2:let{toast:n}=t;return Ke(e,{type:e.toasts.find(e=>e.id===n.id)?1:0,toast:n});case 3:let{toastId:o}=t;return{...e,toasts:e.toasts.map(e=>e.id===o||void 0===o?{...e,dismissed:!0,visible:!1}:e)};case 4:return void 0===t.toastId?{...e,toasts:[]}:{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)};case 5:return{...e,pausedAt:t.time};case 6:let s=t.time-(e.pausedAt||0);return{...e,pausedAt:void 0,toasts:e.toasts.map(e=>({...e,pauseDuration:e.pauseDuration+s}))}}},Je=[],Xe={toasts:[],pausedAt:void 0,settings:{toastLimit:20}},Ze={},et=(e,t=Ge)=>{Ze[t]=Ke(Ze[t]||Xe,e),Je.forEach(([e,r])=>{e===t&&r(Ze[t])})},tt=e=>Object.keys(Ze).forEach(t=>et(e,t)),rt=(e=Ge)=>t=>{et(t,e)},nt={blank:4e3,error:4e3,success:2e3,loading:1/0,custom:4e3},ot=e=>(t,r)=>{let n=((e,t="blank",r)=>({createdAt:Date.now(),visible:!0,dismissed:!1,type:t,ariaProps:{role:"status","aria-live":"polite"},message:e,pauseDuration:0,...r,id:(null==r?void 0:r.id)||We()}))(t,e,r);return rt(n.toasterId||(e=>Object.keys(Ze).find(t=>Ze[t].toasts.some(t=>t.id===e)))(n.id))({type:2,toast:n}),n.id},st=(e,t)=>
2ot("blank")(e,t);st.error=ot("error"),st.success=ot("success"),st.loading=ot("loading"),st.custom=ot("custom"),st.dismiss=(e,t)=>{let r={type:3,toastId:e};t?rt(t)(r):tt(r)},st.dismissAll=e=>st.dismiss(void 0,e),st.remove=(e,t)=>{let r={type:4,toastId:e};t?rt(t)(r):tt(r)},st.removeAll=e=>st.remove(void 0,e),st.promise=(e,t,r)=>{let n=st.loading(t.loading,{...r,...null==r?void 0:r.loading});return"function"==typeof e&&(e=e()),e.then(e=>{let o=t.success?$e(t.success,e):void 0;return o?st.success(o,{id:n,...r,...null==r?void 0:r.success}):st.dismiss(n),e}).catch(e=>{let o=t.error?$e(t.error,e):void 0;o?st.error(o,{id:n,...r,...null==r?void 0:r.error}):st.dismiss(n)}),e};var it,at,lt,ct,dt=(e,t="default")=>{let{toasts:r,pausedAt:n}=((e={},t=Ge)=>{let[r,n]=i.useState(Ze[t]||Xe),o=i.useRef(Ze[t]);i.useEffect(()=>(o.current!==Ze[t]&&n(Ze[t]),Je.push([t,n]),()=>{let e=Je.findIndex(([e])=>e===t);e>-1&&Je.splice(e,1)}),[t]);let s=r.toasts.map(t=>{var r,n,o;return{...e,...e[t.type],...t,removeDelay:t.removeDelay||(null==(r=e[t.type])?void 0:r.removeDelay)||(null==e?void 0:e.removeDelay),duration:t.duration||(null==(n=e[t.type])?void 0:n.duration)||(null==e?void 0:e.duration)||nt[t.type],style:{...e.style,...null==(o=e[t.type])?void 0:o.style,...t.style}}});return{...r,toasts:s}})(e,t),o=i.useRef(new Map).current,s=i.useCallback((e,t=1e3)=>{if(o.has(e))return;let r=setTimeout(()=>{o.delete(e),a({type:4,toastId:e})},t);o.set(e,r)},[]);i.useEffect(()=>{if(n)return;let e=Date.now(),o=r.map(r=>{if(r.duration===1/0)return;let n=(r.duration||0)+r.pauseDuration-(e-r.createdAt);if(!(n<0))return setTimeout(()=>st.dismiss(r.id,t),n);r.visible&&st.dismiss(r.id)});return()=>{o.forEach(e=>e&&clearTimeout(e))}},[r,n,t]);let a=i.useCallback(rt(t),[t]),l=i.useCallback(()=>{a({type:5,time:Date.now()})},[a]),c=i.useCallback((e,t)=>{a({type:1,toast:{id:e,height:t}})},[a]),d=i.useCallback(()=>{n&&a({type:6,time:Date.now()})},[n,a]),u=i.useCallback((e,t)=>{let{reverseOrder:n=!1,gutter:o=8,defaultPosition:s}=t||{},i=r.filter(t=>(t.position||s)===(e.position||s)&&t.height),a=i.findIndex(t=>t.id===e.id),l=i.filter((e,t)=>t<a&&e.visible).length;return i.filter(e=>e.visible).slice(...n?[l+1]:[0,l]).reduce((e,t)=>e+(t.height||0)+o,0)},[r]);return i.useEffect(()=>{r.forEach(e=>{if(e.dismissed)s(e.id,e.removeDelay);else{let t=o.get(e.id);t&&(clearTimeout(t),o.delete(e.id))}})},[r,s]),{toasts:r,handlers:{updateHeight:c,startPause:l,endPause:d,calculateOffset:u}}},ut=He`
3from {
4  transform: scale(0) rotate(45deg);
5	opacity: 0;
6}
7to {
8 transform: scale(1) rotate(45deg);
9  opacity: 1;
10}`,pt=He`
11from {
12  transform: scale(0);
13  opacity: 0;
14}
15to {
16  transform: scale(1);
17  opacity: 1;
18}`,mt=He`
19from {
20  transform: scale(0) rotate(90deg);
21	opacity: 0;
22}
23to {
24  transform: scale(1) rotate(90deg);
25	opacity: 1;
26}`,ht=ze("div")`
27  width: 20px;
28  opacity: 0;
29  height: 20px;
30  border-radius: 10px;
31  background: ${e=>e.primary||"#ff4b4b"};
32  position: relative;
33  transform: rotate(45deg);
34
35  animation: ${ut} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)
36    forwards;
37  animation-delay: 100ms;
38
39  &:after,
40  &:before {
41    content: '';
42    animation: ${pt} 0.15s ease-out forwards;
43    animation-delay: 150ms;
44    position: absolute;
45    border-radius: 3px;
46    opacity: 0;
47    background: ${e=>e.secondary||"#fff"};
48    bottom: 9px;
49    left: 4px;
50    height: 2px;
51    width: 12px;
52  }
53
54  &:before {
55    animation: ${mt} 0.15s ease-out forwards;
56    animation-delay: 180ms;
57    transform: rotate(90deg);
58  }
59`,ft=He`
60  from {
61    transform: rotate(0deg);
62  }
63  to {
64    transform: rotate(360deg);
65  }
66`,bt=ze("div")`
67  width: 12px;
68  height: 12px;
69  box-sizing: border-box;
70  border: 2px solid;
71  border-radius: 100%;
72  border-color: ${e=>e.secondary||"#e0e0e0"};
73  border-right-color: ${e=>e.primary||"#616161"};
74  animation: ${ft} 1s linear infinite;
75`,gt=He`
76from {
77  transform: scale(0) rotate(45deg);
78	opacity: 0;
79}
80to {
81  transform: scale(1) rotate(45deg);
82	opacity: 1;
83}`,yt=He`
840% {
85	height: 0;
86	width: 0;
87	opacity: 0;
88}
8940% {
90  height: 0;
91	width: 6px;
92	opacity: 1;
93}
94100% {
95  opacity: 1;
96  height: 10px;
97}`,_t=ze("div")`
98  width: 20px;
99  opacity: 0;
100  height: 20px;
101  border-radius: 10px;
102  background: ${e=>e.primary||"#61d345"};
103  position: relative;
104  transform: rotate(45deg);
105
106  animation: ${gt} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)
107    forwards;
108  animation-delay: 100ms;
109  &:after {
110    content: '';
111    box-sizing: border-box;
112    animation: ${yt} 0.2s ease-out forwards;
113    opacity: 0;
114    animation-delay: 200ms;
115    position: absolute;
116    border-right: 2px solid;
117    border-bottom: 2px solid;
118    border-color: ${e=>e.secondary||"#fff"};
119    bottom: 6px;
120    left: 6px;
121    height: 10px;
122    width: 6px;
123  }
124`,xt=ze("div")`
125  position: absolute;
126`,vt=ze("div")`
127  position: relative;
128  display: flex;
129  justify-content: center;
130  align-items: center;
131  min-width: 20px;
132  min-height: 20px;
133`,wt=He`
134from {
135  transform: scale(0.6);
136  opacity: 0.4;
137}
138to {
139  transform: scale(1);
140  opacity: 1;
141}`,Nt=ze("div")`
142  position: relative;
143  transform: scale(0.6);
144  opacity: 0.4;
145  min-width: 20px;
146  animation: ${wt} 0.3s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275)
147    forwards;
148`,Pt=({toast:e})=>{let{icon:t,type:r,iconTheme:n}=e;return void 0!==t?"string"==typeof t?i.createElement(Nt,null,t):t:"blank"===r?null:i.createElement(vt,null,i.createElement(bt,{...n}),"loading"!==r&&i.createElement(xt,null,"error"===r?i.createElement(ht,{...n}):i.createElement(_t,{...n})))},St=e=>`\n0% {transform: translate3d(0,${-200*e}%,0) scale(.6); opacity:.5;}\n100% {transform: translate3d(0,0,0) scale(1); opacity:1;}\n`,kt=e=>`\n0% {transform: translate3d(0,0,-1px) scale(1); opacity:1;}\n100% {transform: translate3d(0,${-150*e}%,-1px) scale(.6); opacity:0;}\n`,Tt=ze("div")`
149  display: flex;
150  align-items: center;
151  background: #fff;
152  color: #363636;
153  line-height: 1.3;
154  will-change: transform;
155  box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1), 0 3px 3px rgba(0, 0, 0, 0.05);
156  max-width: 350px;
157  pointer-events: auto;
158  padding: 8px 10px;
159  border-radius: 8px;
160`,Vt=ze("div")`
161  display: flex;
162  justify-content: center;
163  margin: 4px 10px;
164  color: inherit;
165  flex: 1 1 auto;
166  white-space: pre-line;
167`,Et=i.memo(({toast:e,position:t,style:r,children:n})=>{let o=e.height?((e,t)=>{let r=e.includes("top")?1:-1,[n,o]=Ye()?["0%{opacity:0;} 100%{opacity:1;}","0%{opacity:1;} 100%{opacity:0;}"]:[St(r),kt(r)];return{animation:t?`${He(n)} 0.35s cubic-bezier(.21,1.02,.73,1) forwards`:`${He(o)} 0.4s forwards cubic-bezier(.06,.71,.55,1)`}})(e.position||t||"top-center",e.visible):{opacity:0},s=i.createElement(Pt,{toast:e}),a=i.createElement(Vt,{...e.ariaProps},$e(e.message,e));return i.createElement(Tt,{className:e.className,style:{...o,...r,...e.style}},"function"==typeof n?n({icon:s,message:a}):i.createElement(i.Fragment,null,s,a))});it=i.createElement,Ue.p=at,Be=it,Re=lt,Le=ct;var At=({id:e,className:t,style:r,onHeightUpdate:n,children:o})=>{let s=i.useCallback(t=>{if(t){let r=()=>{let r=t.getBoundingClientRect().height;n(e,r)};r(),new MutationObserver(r).observe(t,{subtree:!0,childList:!0,characterData:!0})}},[e,n]);return i.createElement("div",{ref:s,className:t,style:r},o)},Ot=Fe`
168  z-index: 9999;
169  > * {
170    pointer-events: auto;
171  }
172`,jt=({reverseOrder:e,position:t="top-center",toastOptions:r,gutter:n,children:o,toasterId:s,containerStyle:a,containerClassName:l})=>{let{toasts:c,handlers:d}=dt(r,s);return i.createElement("div",{"data-rht-toaster":s||"",style:{position:"fixed",zIndex:9999,top:16,left:16,right:16,bottom:16,pointerEvents:"none",...a},className:l,onMouseEnter:d.startPause,onMouseLeave:d.endPause},c.map(r=>{let s=r.position||t,a=((e,t)=>{let r=e.includes("top"),n=r?{top:0}:{bottom:0},o=e.includes("center")?{justifyContent:"center"}:e.includes("right")?{justifyContent:"flex-end"}:{};return{left:0,right:0,display:"flex",position:"absolute",transition:Ye()?void 0:"all 230ms cubic-bezier(.21,1.02,.73,1)",transform:`translateY(${t*(r?1:-1)}px)`,...n,...o}})(s,d.calculateOffset(r,{reverseOrder:e,gutter:n,defaultPosition:t}));return i.createElement(At,{id:r.id,key:r.id,onHeightUpdate:d.updateHeight,className:r.visible?Ot:"",style:a},"custom"===r.type?$e(r.message,r):o?o(r):i.createElement(Et,{toast:r,position:s}))}))},Bt=st;const Rt=i.forwardRef(({children:t,variant:r="primary",size:n="md",disabled:o=!1,loading:s=!1,onClick:i,className:a,type:l="button",...c},d)=>
172{const u=/(^|\s)(bg-|hover:bg-|pricing-button|ui-btn)/.test(a||""),p=/(^|\s)(p[xy]?-|text-(xs|sm|base|lg|xl)|pricing-button|ui-btn)/.test(a||""),m=g("inline-flex items-center justify-center font-medium focus:outline-none disabled:opacity-50 disabled:cursor-not-allowed",!u&&{primary:"text-white bg-[linear-gradient(135deg,#dc2626,#ea580c_55%,#f59e0b)] shadow-[0_14px_36px_-16px_rgb(234_88_12/0.8)] hover:brightness-110",secondary:"bg-white/10 hover:bg-white/15 text-white",outline:"border border-white/20 bg-white/5 hover:bg-white/10 hover:border-white/30 text-white",ghost:"hover:bg-white/5 text-amber-400",danger:"bg-red-600 hover:bg-red-700 text-white focus:ring-red-500"}[r],!p&&{sm:"px-3 py-1.5 text-sm rounded-xl",md:"px-4 py-2 text-sm rounded-xl",lg:"px-6 py-3 text-base rounded-xl",xl:"px-8 py-4 text-lg rounded-xl"}[n],a);return e.jsxs(S.button,{ref:d,className:m,disabled:o||s,type:l,onClick:e=>{o||s||i?.(e)},whileHover:{scale:o||s?1:1.05},whileTap:{scale:o||s?1:.95},...c,children:[s&&e.jsxs("svg",{className:"animate-spin -ml-1 mr-3 h-5 w-5",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[e.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),e.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),t]})});Rt.displayName="Button";const Lt=`${window.location.protocol}//${window.location.host}`,Ct="BBQ VPN",qt="BBQ_VPN_BOT",Dt={OUTLINE:"outline",VLESS:"vless"},It={MONTHLY:1,SEMI_ANNUAL:6,ANNUAL:12},Ut=[{id:"trial",nameKey:"pricing.plans.trial",icon:"🎁",devices:1,prices:{[It.MONTHLY]:0,[It.SEMI_ANNUAL]:0,[It.ANNUAL]:0},bonusDays:{[It.SEMI_ANNUAL]:0,[It.ANNUAL]:0},trialDays:7,popular:!1},{id:"starter",nameKey:"pricing.plans.starter",icon:"🚀",devices:1,prices:{[It.MONTHLY]:110,[It.SEMI_ANNUAL]:99,[It.ANNUAL]:88},bonusDays:{[It.SEMI_ANNUAL]:14,[It.ANNUAL]:28}},{id:"comfort",nameKey:"pricing.plans.comfort",icon:"🛋",devices:2,popular:!0,prices:{[It.MONTHLY]:209,[It.SEMI_ANNUAL]:188,[It.ANNUAL]:167},bonusDays:{[It.SEMI_ANNUAL]:14,[It.ANNUAL]:28}},{id:"maximum",nameKey:"pricing.plans.maximum",icon:"🌟",devices:3,badge:{text:"МАКСИМУМ",type:"popular",gradient:"from-purple-500 via-pink-500 to-red-500"},prices:{[It.MONTHLY]:298,[It.SEMI_ANNUAL]:268,[It.ANNUAL]:238},bonusDays:{[It.SEMI_ANNUAL]:14,[It.ANNUAL]:28}},{id:"friends",nameKey:"pricing.plans.friends",icon:"👥",devices:5,prices:{[It.MONTHLY]:472,[It.SEMI_ANNUAL]:424,[It.ANNUAL]:377},bonusDays:{[It.SEMI_ANNUAL]:14,[It.ANNUAL]:28}},{id:"family",nameKey:"pricing.plans.family",icon:"👨‍👩‍👧‍👦",devices:8,prices:{[It.MONTHLY]:717,[It.SEMI_ANNUAL]:645,[It.ANNUAL]:573},bonusDays:{[It.SEMI_ANNUAL]:14,[It.ANNUAL]:28}},{id:"max-comfort",nameKey:"pricing.plans.max-comfort",icon:"🏆",devices:12,ultra:!0,badge:{text:"УЛЬТРА ТОП",type:"ultra",gradient:"from-yellow-400 via-orange-500 to-pink-500"},prices:{[It.MONTHLY]:1021,[It.SEMI_ANNUAL]:919,[It.ANNUAL]:817},bonusDays:{[It.SEMI_ANNUAL]:14,[It.ANNUAL]:28}},{id:"admin-custom",nameKey:"pricing.plans.admin-custom",icon:"👨‍💻",devices:1,prices:{[It.MONTHLY]:0,[It.SEMI_ANNUAL]:0,[It.ANNUAL]:0},bonusDays:{[It.SEMI_ANNUAL]:0,[It.ANNUAL]:0}}],Mt={HOME:"/",PRICING:"/#plans",ABOUT:"/about",SUPPORT:"/support",SETUP:"/setup",PRIVACY_POLICY:"/privacy-policy",TERMS:"/terms",REFUND:"/refund",COOKIES:"/cookies",LOGIN:"/login",REGISTER:"/register",RESET_PASSWORD:"/reset-password",DASHBOARD:"/dboards",PARTNER:"/partner",CHECKOUT:"/checkout",SUCCESS:"/checkout/success"},Qt={OVERVIEW:"overview",KEYS:"keys",DEVICES:"devices",EXTEND:"extend",REFERRAL:"referral",LINKING:"linking",PARTNER:"partner",SETTINGS:"settings",SUPPORT:"support"},Ft=[{code:"en",name:"English",flag:"🇺🇸"},{code:"ru",name:"Русский",flag:"🇷🇺"}],Ht={AUTH_TOKEN:"bbq_auth_token",USER_DATA:"bbq_user_data",LANGUAGE:"bbq_language",CART:"bbq_cart"},zt=Object.freeze(Object.defineProperty({__proto__:null,API_BASE_URL:Lt,APP_NAME:Ct,DASHBOARD_TABS:Qt,LANGUAGES:Ft,PRICING_PLANS:Ut,ROUTES:Mt,STORAGE_KEYS:Ht,SUBSCRIPTION_PERIODS:It,TELEGRAM_BOT_NAME:qt,VPN_PROTOCOLS:Dt},Symbol.toStringTag,{value:"Module"}));function $t(e,t){return function(){return e.apply(t,arguments)}}const{toString:Wt}=Object.prototype,{getPrototypeOf:Yt}=Object,{iterator:Gt,toStringTag:Kt}=Symbol,Jt=(({hasOwnProperty:e})=>(t,r)=>e.call(t,r))(Object.prototype),Xt=e=>"string"==typeof e&&("__proto__"===e||"constructor"===e||"prototype"===e),Zt=(e,t,r)=>e===Object.prototype||!r&&null===t,er=(e,t)=>{let r=e;const n=[];for(;null!=r;){if(-1!==n.indexOf(r))return!1;n.push(r);const o=Yt(r);if(Zt(r,o,r===e))return!1;if(Jt(r,t))return!0;r=o}return!1},tr=(e=>t=>{const r=Wt.call(t);return e[r]||(e[r]=r.slice(8,-1).toLowerCase())})(Object.create(null)),rr=e=>(e=e.toLowerCase(),t=>tr(t)===e),nr=e=>t=>typeof t===e,{isArray:or}=Array,sr=nr("undefined");function ir(e){return null!==e&&!sr(e)&&null!==e.constructor&&!sr(e.constructor)&&cr(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const ar=rr("ArrayBuffer");const lr=nr("string"),cr=nr("function"),dr=nr("number"),ur=e=>null!==e&&"object"==typeof e,pr=e=>{if(!ur(e))return!1;const t=Yt(e);return!(null!==t&&t!==Object.prototype&&null!==Yt(t)||er(e,Kt)||er(e,Gt))},mr=rr("Date"),hr=rr("File"),fr=rr("Blob"),br=rr("FileList"),gr=rr("Set");const yr="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},_r=void 0!==yr.FormData?yr.FormData:void 0,xr=rr("URLSearchParams"),[vr,wr,Nr,Pr]=["ReadableStream","Request","Response","Headers"].map(rr);function Sr(e,t,{allOwnKeys:r=!1}={}){if(null==e)return;let n,o;
vendor: 4,150 bytes, line 172
172if("object"!=typeof e&&(e=[e]),or(e))for(n=0,o=e.length;n<o;n++)t.call(null,e[n],n,e);else{if(ir(e))return;const o=r?Object.getOwnPropertyNames(e):Object.keys(e),s=o.length;let i;for(n=0;n<s;n++)i=o[n],t.call(null,e[i],i,e)}}function kr(e,t){if(ir(e))return null;t=t.toLowerCase();const r=Object.keys(e);let n,o=r.length;for(;o-- >0;)if(n=r[o],t===n.toLowerCase())return n;return null}const Tr="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,Vr=e=>!sr(e)&&e!==Tr;const Er=(e=>t=>e&&t instanceof e)("undefined"!=typeof Uint8Array&&Yt(Uint8Array)),Ar=rr("HTMLFormElement"),{propertyIsEnumerable:Or}=Object.prototype,jr=rr("RegExp"),Br=(e,t)=>{const r=Object.getOwnPropertyDescriptors(e),n={};Sr(r,(r,o)=>{let s;!1!==(s=t(r,o,e))&&(n[o]=s||r)}),Object.defineProperties(e,n)};const Rr=rr("AsyncFunction"),Lr=(Cr="function"==typeof setImmediate,qr=cr(Tr.postMessage),Cr?setImmediate:qr?(Dr=`axios@${Math.random()}`,Ir=[],Tr.addEventListener("message",({source:e,data:t})=>{e===Tr&&t===Dr&&Ir.length&&Ir.shift()()},!1),e=>{Ir.push(e),Tr.postMessage(Dr,"*")}):e=>setTimeout(e));var Cr,qr,Dr,Ir;const Ur="undefined"!=typeof queueMicrotask?queueMicrotask.bind(Tr):"undefined"!=typeof process&&process.nextTick||Lr,Mr=e=>null!=e&&cr(e[Gt]),Qr={isArray:or,isArrayBuffer:ar,isBuffer:ir,isFormData:e=>{if(!e)return!1;if(_r&&e instanceof _r)return!0;const t=Yt(e);if(!t||t===Object.prototype)return!1;if(!cr(e.append))return!1;const r=tr(e);return"formdata"===r||"object"===r&&cr(e.toString)&&"[object FormData]"===e.toString()},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&ar(e.buffer),t},isString:lr,isNumber:dr,isBoolean:e=>!0===e||!1===e,isObject:ur,isPlainObject:pr,isEmptyObject:e=>{if(!ur(e)||ir(e))return!1;try{return 0===Object.keys(e).length&&Object.getPrototypeOf(e)===Object.prototype}catch(it){return!1}},isReadableStream:vr,isRequest:wr,isResponse:Nr,isHeaders:Pr,isUndefined:sr,isDate:mr,isFile:hr,isReactNativeBlob:e=>!(!e||void 0===e.uri),isReactNative:e=>e&&void 0!==e.getParts,isBlob:fr,isRegExp:jr,isFunction:cr,isStream:e=>ur(e)&&cr(e.pipe),isURLSearchParams:xr,isTypedArray:Er,isFileList:br,forEach:Sr,merge:function e(...t){const{caseless:r,skipUndefined:n}=Vr(this)&&this||{},o={},s=(t,s)=>{if("__proto__"===s||"constructor"===s||"prototype"===s)return;const i=r&&"string"==typeof s&&kr(o,s)||s,a=Jt(o,i)?o[i]:void 0;pr(a)&&pr(t)?o[i]=e(a,t):pr(t)?o[i]=e({},t):or(t)?o[i]=t.slice():n&&sr(t)||(o[i]=t)};for(let i=0,a=t.length;i<a;i++){const e=t[i];if(!e||ir(e))continue;if(Sr(e,s),"object"!=typeof e||or(e))continue;const r=Object.getOwnPropertySymbols(e);for(let t=0;t<r.length;t++){const n=r[t];Or.call(e,n)&&s(e[n],n)}}return o},extend:(e,t,r,{allOwnKeys:n}={})=>(Sr(t,(t,n)=>{r&&cr(t)?Object.defineProperty(e,n,{__proto__:null,value:$t(t,r),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(e,n,{__proto__:null,value:t,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:n}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,r,n)=>{e.prototype=Object.create(t.prototype,n),Object.defineProperty(e.prototype,"constructor",{__proto__:null,value:e,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(e,"super",{__proto__:null,value:t.prototype}),r&&Object.assign(e.prototype,r)},toFlatObject:(e,t,r,n)=>{let o,s,i;const a={};if(t=t||{},null==e)return t;do{for(o=Object.getOwnPropertyNames(e),s=o.length;s-- >0;)i=o[s],n&&!n(i,e,t)||a[i]||(t[i]=e[i],a[i]=!0);e=!1!==r&&Yt(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:tr,kindOfTest:rr,endsWith:(e,t,r)=>{e=String(e),(void 0===r||r>e.length)&&(r=e.length),r-=t.length;const n=e.indexOf(t,r);return-1!==n&&n===r},toArray:e=>{if(!e)return null;if(or(e))return e;let t=e.length;if(!dr(t))return null;const r=new Array(t);for(;t-- >0;)r[t]=e[t];return r},forEachEntry:(e,t)=>{const r=(e&&e[Gt]).call(e);let n;for(;(n=r.next())&&!n.done;){const r=n.value;t.call(e,r[0],r[1])}},matchAll:(e,t)=>
vendor: 4,530 bytes, line 172
172{let r;const n=[];for(;null!==(r=e.exec(t));)n.push(r);return n},isHTMLForm:Ar,hasOwnProperty:Jt,hasOwnProp:Jt,hasOwnInPrototypeChain:er,getSafeProp:(e,t)=>null!=e&&er(e,t)?e[t]:void 0,toSafeFlatObject:e=>{if(null==e||"object"!=typeof e&&"function"!=typeof e)return e;const t=Yt(e);if(null===t&&(e=>{if(!Object.isExtensible(e))return!1;const t=Object.getOwnPropertyNames(e);return Object.getOwnPropertySymbols&&t.push(...Object.getOwnPropertySymbols(e)),t.every(t=>{if(Xt(t))return!1;const r=Object.getOwnPropertyDescriptor(e,t);return!!r&&r.configurable&&!0===r.writable})})(e))return e;const r=Object.create(null),n=Object.create(null),o=[];let s=e;for(;null!=s&&-1===o.indexOf(s);){o.push(s);const i=s===e?t:Yt(s);if(Zt(s,i,s===e))break;const a=Object.getOwnPropertyNames(s);Object.getOwnPropertySymbols&&a.push(...Object.getOwnPropertySymbols(s));for(const t of a)Xt(t)||Jt(n,t)||(r[t]=e[t],n[t]=!0);s=i}return r},reduceDescriptors:Br,freezeMethods:e=>{Br(e,(t,r)=>{if(cr(e)&&["arguments","caller","callee"].includes(r))return!1;const n=e[r];cr(n)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")}))})},toObjectSet:(e,t)=>{const r={},n=e=>{e.forEach(e=>{r[e]=!0})};return or(e)?n(e):n(String(e).split(t)),r},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(e,t,r){return t.toUpperCase()+r}),noop:()=>{},toFiniteNumber:(e,t)=>null!=e&&Number.isFinite(e=+e)?e:t,findKey:kr,global:Tr,isContextDefined:Vr,isSpecCompliantForm:function(e){return!!(e&&cr(e.append)&&"FormData"===e[Kt]&&e[Gt])},toJSONObject:e=>{const t=new WeakSet,r=e=>{if(ur(e)){if(t.has(e))return;if(ir(e))return e;if(!("toJSON"in e)){let n;if(t.add(e),gr(e)){n=[];for(const t of e){const e=r(t);!sr(e)&&n.push(e)}}else n=or(e)?[]:{},Sr(e,(e,t)=>{const o=r(e);!sr(o)&&(n[t]=o)});return t.delete(e),n}}return e};return r(e)},isAsyncFn:Rr,isThenable:e=>e&&(ur(e)||cr(e))&&cr(e.then)&&cr(e.catch),setImmediate:Lr,asap:Ur,isIterable:Mr,isSafeIterable:e=>null!=e&&er(e,Gt)&&Mr(e)},Fr=Qr.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]);const Hr=new RegExp("[\\u0000-\\u0008\\u000a-\\u001f\\u007f]+","g"),zr=new RegExp("[^\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+","g");function $r(e,t){return Qr.isArray(e)?e.map(e=>$r(e,t)):function(e){let t=0,r=e.length;for(;t<r;){const r=e.charCodeAt(t);if(9!==r&&32!==r)break;t+=1}for(;r>t;){const t=e.charCodeAt(r-1);if(9!==t&&32!==t)break;r-=1}return 0===t&&r===e.length?e:e.slice(t,r)}(String(e).replace(t,""))}function Wr(e){const t=Object.create(null);return Qr.forEach(e.toJSON(),(e,r)=>{t[r]=(e=>$r(e,zr))(e)}),t}const Yr=Symbol("internals");function Gr(e){return e&&String(e).trim().toLowerCase()}function Kr(e){return!1===e||null==e?e:Qr.isArray(e)?e.map(Kr):(e=>$r(e,Hr))(String(e))}const Jr=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/;function Xr(e){let t=0,r=e.length;for(;t<r;){const r=e.charCodeAt(t);if(9!==r&&32!==r)break;t+=1}for(;r>t;){const t=e.charCodeAt(r-1);if(9!==t&&32!==t)break;r-=1}return 0===t&&r===e.length?e:e.slice(t,r)}function Zr(e,t,r,n,o){return Qr.isFunction(n)?n.call(this,t,r):(o&&(t=r),Qr.isString(t)?Qr.isString(n)?-1!==t.indexOf(n):Qr.isRegExp(n)?n.test(t):void 0:void 0)}let en=class{constructor(e){e&&this.set(e)}set(e,t,r){const n=this;function o(e,t,r){const o=Gr(t);if(!o)return;const s=Qr.findKey(n,o);(!s||void 0===n[s]||!0===r||void 0===r&&!1!==n[s])&&(n[s||t]=Kr(e))}const s=(e,t)=>Qr.forEach(e,(e,r)=>o(e,r,t));if(Qr.isPlainObject(e)||e instanceof this.constructor)s(e,t);else if(Qr.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))s((e=>{const t={};let r,n,o;return e&&e.split("\n").forEach(function(e){o=e.indexOf(":"),r=e.substring(0,o).trim().toLowerCase(),n=e.substring(o+1).trim();const s=Qr.hasOwnProp(t,r);!r||s&&Qr.hasOwnProp(Fr,r)||("set-cookie"===r?s?t[r].push(n):t[r]=[n]:t[r]=s?t[r]+", "+n:n)}),t})(e),t);else if(Qr.isObject(e)&&Qr.isSafeIterable(e)){let r,n,o=Object.create(null);for(const t of e){if(!Qr.isArray(t))throw new TypeError("Object iterator must return a key-value pair");n=t[0],Qr.hasOwnProp(o,n)?(r=o[n],o[n]=Qr.isArray(r)?[...r,t[1]]:[r,t[1]]):o[n]=t[1]}s(o,t)}else null!=e&&o(t,e,r);return this}get(e,t){if(e=Gr(e)){const r=Qr.findKey(this,e);if(r){const e=this[r];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),r=/([^\s,;
vendor: 37,853 bytes, line 172
172=]+)\s*(?:=\s*([^,;]+))?/g;let n;for(;n=r.exec(e);)t[n[1]]=n[2];return t}(e);if(Qr.isFunction(t))return t.call(this,e,r);if(Qr.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=Gr(e)){const r=Qr.findKey(this,e);return!(!r||void 0===this[r]||t&&!Zr(0,this[r],r,t))}return!1}delete(e,t){const r=this;let n=!1;function o(e){if(e=Gr(e)){const o=Qr.findKey(r,e);!o||t&&!Zr(0,r[o],o,t)||(delete r[o],n=!0)}}return Qr.isArray(e)?e.forEach(o):o(e),n}clear(e){const t=Object.keys(this);let r=t.length,n=!1;for(;r--;){const o=t[r];e&&!Zr(0,this[o],o,e,!0)||(delete this[o],n=!0)}return n}normalize(e){const t=this,r={};return Qr.forEach(this,(n,o)=>{const s=Qr.findKey(r,o);if(s)return t[s]=Kr(n),void delete t[o];const i=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,t,r)=>t.toUpperCase()+r)}(o):String(o).trim();i!==o&&delete t[o],t[i]=Kr(n),r[i]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return Qr.forEach(this,(r,n)=>{null!=r&&!1!==r&&(t[n]=e&&Qr.isArray(r)?r.join(", "):r)}),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,t])=>e+": "+t).join("\n")}getSetCookie(){const e=this.get("set-cookie");return Qr.isArray(e)?e:null==e||!1===e?[]:[e]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static parseParameters(e){return function(e){const t=Object.create(null),r=String(e);let n=0,o=!1,s=!1;function i(e){const o=Xr(r.slice(n,e)),s=o.indexOf("=");if(s<1)return;const i=Xr(o.slice(0,s));if(!Jr.test(i))return;const a=i.toLowerCase();if("__proto__"===a||"constructor"===a||"prototype"===a)return;const l=Xr(o.slice(s+1));t[a]=function(e){const t=e.length-1;if(t<1||34!==e.charCodeAt(0)||34!==e.charCodeAt(t))return e;let r="";for(let n=1;n<t;n++){const o=e.charCodeAt(n);if(34===o)return e;if(92===o&&(n+=1,n>=t))return e;r+=e[n]}return r}(l)}for(let a=0;a<r.length;a++){const e=r.charCodeAt(a);o?s?s=!1:92===e?s=!0:34===e&&(o=!1):34===e?o=!0:44!==e&&59!==e||(i(a),n=a+1)}return i(r.length),t}(e)}static concat(e,...t){const r=new this(e);return t.forEach(e=>r.set(e)),r}static accessor(e){const t=(this[Yr]=this[Yr]={accessors:{}}).accessors,r=this.prototype;function n(e){const n=Gr(e);t[n]||(!function(e,t){const r=Qr.toCamelCase(" "+t);["get","set","has"].forEach(n=>{Object.defineProperty(e,n+r,{__proto__:null,value:function(e,r,o){return this[n].call(this,t,e,r,o)},configurable:!0})})}(r,e),t[n]=!0)}return Qr.isArray(e)?e.forEach(n):n(e),this}};en.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),Qr.reduceDescriptors(en.prototype,({value:e},t)=>{let r=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[r]=e}}}),Qr.freezeMethods(en);const tn="[REDACTED ****]";function rn(e,t){const r=new Set(t.map(e=>String(e).toLowerCase())),n=[],o=e=>{if(null===e||"object"!=typeof e)return e;if(Qr.isBuffer(e))return e;if(-1!==n.indexOf(e))return;let t;if(e instanceof en&&(e=e.toJSON()),n.push(e),Qr.isArray(e))t=[],e.forEach((e,r)=>{const n=o(e);Qr.isUndefined(n)||(t[r]=n)});else{if(!Qr.isPlainObject(e)&&function(e){if(Qr.hasOwnProp(e,"toJSON"))return!0;let t=Object.getPrototypeOf(e);for(;t&&t!==Object.prototype;){if(Qr.hasOwnProp(t,"toJSON"))return!0;t=Object.getPrototypeOf(t)}return!1}(e))return n.pop(),e;t=Object.create(null);for(const[n,s]of Object.entries(e)){const e=r.has(n.toLowerCase())?tn:o(s);Qr.isUndefined(e)||(t[n]=e)}}return n.pop(),t};return o(e)}function nn(e){try{return String(e)}catch(t){return""}}let on=class e extends Error{static from(t,r,n,o,s,i){let a=t.message;!a&&Qr.isArray(t.errors)&&t.errors.length&&(a=function(e){return e.errors.map(e=>{try{return e&&e.message?nn(e.message):nn(e)}catch(t){return""}}).filter(Boolean).join("; ")||e.name||"AggregateError"}(t));const l=new e(a,r||t.code,n,o,s);return Object.defineProperty(l,"cause",{__proto__:null,value:t,writable:!0,enumerable:!1,configurable:!0}),l.name=t.name,null!=t.status&&null==l.status&&(l.status=t.status),i&&Object.assign(l,i),l}constructor(e,t,r,n,o){super(e),Object.defineProperty(this,"message",{__proto__:null,value:e,enumerable:!0,writable:!0,configurable:!0}),this.name="AxiosError",this.isAxiosError=!0,t&&(this.code=t),r&&(this.config=r),n&&(this.request=n),o&&(this.response=o,this.status=o.status)}toJSON(){const e=this.config,t=e&&Qr.hasOwnProp(e,"redact")?e.redact:void 0,r=Qr.isArray(t)&&t.length>0?rn(e,t):Qr.toJSONObject(e);return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:r,code:this.code,status:this.status}}};on.ERR_BAD_OPTION_VALUE="ERR_BAD_OPTION_VALUE",on.ERR_BAD_OPTION="ERR_BAD_OPTION",on.ECONNABORTED="ECONNABORTED",on.ETIMEDOUT="ETIMEDOUT",on.ECONNREFUSED="ECONNREFUSED",on.ERR_NETWORK="ERR_NETWORK",on.ERR_FR_TOO_MANY_REDIRECTS="ERR_FR_TOO_MANY_REDIRECTS",on.ERR_DEPRECATED="ERR_DEPRECATED",on.ERR_BAD_RESPONSE="ERR_BAD_RESPONSE",on.ERR_BAD_REQUEST="ERR_BAD_REQUEST",on.ERR_CANCELED="ERR_CANCELED",on.ERR_NOT_SUPPORT="ERR_NOT_SUPPORT",on.ERR_INVALID_URL="ERR_INVALID_URL",on.ERR_FORM_DATA_DEPTH_EXCEEDED="ERR_FORM_DATA_DEPTH_EXCEEDED";function sn(e){return Qr.isPlainObject(e)||Qr.isArray(e)}function an(e){return Qr.endsWith(e,"[]")?e.slice(0,-2):e}function ln(e,t,r){return e?e.concat(t).map(function(e,t){return e=an(e),!r&&t?"["+e+"]":e}).join(r?".":""):t}const cn=Qr.toFlatObject(Qr,{},null,function(e){return/^is[A-Z]/.test(e)});function dn(e,t,r){if(!Qr.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const n=(e,t)=>{const n=Qr.getSafeProp(r,e);return Qr.isUndefined(n)?t:n},o=n("metaTokens",!0),s=n("visitor")||h,i=n("dots",!1),a=n("indexes",!1),l=n("Blob")||"undefined"!=typeof Blob&&Blob,c=n("maxDepth",100),d=l&&Qr.isSpecCompliantForm(t),u=[];if(!Qr.isFunction(s))throw new TypeError("visitor must be a function");function p(e){if(null===e)return"";if(Qr.isDate(e))return e.toISOString();if(Qr.isBoolean(e))return e.toString();if(!d&&Qr.isBlob(e))throw new on("Blob is not supported. Use a Buffer instead.");if(Qr.isArrayBuffer(e)||Qr.isTypedArray(e)){if(d&&"function"==typeof l)return new l([e]);throw new on("Blob is not supported. Use a Buffer instead.",on.ERR_NOT_SUPPORT)}return e}function m(e){if(e>c)throw new on("Object is too deeply nested ("+e+" levels). Max depth: "+c,on.ERR_FORM_DATA_DEPTH_EXCEEDED)}function h(e,r,n){let s=e;if(Qr.isReactNative(t)&&Qr.isReactNativeBlob(e))return t.append(ln(n,r,i),p(e)),!1;if(e&&!n&&"object"==typeof e)if(Qr.endsWith(r,"{}"))r=o?r:r.slice(0,-2),e=function(e,t){if(c===1/0)return JSON.stringify(e);const r=[];return JSON.stringify(e,function(e,n){if(!Qr.isObject(n))return n;for(;r.length&&r[r.length-1]!==this;)r.pop();return r.push(n),m(t+r.length-1),n})}(e,1);else if(Qr.isArray(e)&&function(e){return Qr.isArray(e)&&!e.some(sn)}(e)||(Qr.isFileList(e)||Qr.endsWith(r,"[]"))&&(s=Qr.toArray(e)))return r=an(r),s.forEach(function(e,n){!Qr.isUndefined(e)&&null!==e&&t.append(!0===a?ln([r],n,i):null===a?r:r+"[]",p(e))}),!1;return!!sn(e)||(t.append(ln(n,r,i),p(e)),!1)}const f=Object.assign(cn,{defaultVisitor:h,convertValue:p,isVisitable:sn});if(!Qr.isObject(e))throw new TypeError("data must be an object");return function e(r,n,o=0){if(!Qr.isUndefined(r)){if(m(o),-1!==u.indexOf(r))throw new Error("Circular reference detected in "+n.join("."));u.push(r),Qr.forEach(r,function(r,i){!0===(!(Qr.isUndefined(r)||null===r)&&s.call(t,r,Qr.isString(i)?i.trim():i,n,f))&&e(r,n?n.concat(i):[i],o+1)}),u.pop()}}(e),t}function un(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"};return encodeURIComponent(e).replace(/[!'()~]|%20/g,function(e){return t[e]})}function pn(e,t){this._pairs=[],e&&dn(e,this,t)}const mn=pn.prototype;function hn(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function fn(e,t,r){if(!t)return e;e=e||"";const n=Qr.isFunction(r)?{serialize:r}:r,o=Qr.getSafeProp(n,"encode")||hn,s=Qr.getSafeProp(n,"serialize");let i;if(i=s?s(t,n):Qr.isURLSearchParams(t)?t.toString():new pn(t,n).toString(o),i){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e}mn.append=function(e,t){this._pairs.push([e,t])},mn.toString=function(e){const t=e?t=>e.call(this,t,un):un;return this._pairs.map(function(e){return t(e[0])+"="+t(e[1])},"").join("&")};const bn=Symbol("internals");function gn(e){return e?e.length:0}function yn(e){if(e)for(;e.length&&null===e[e.length-1];)e.pop()}function _n(e,t){const r=e.handlers,n=gn(r);r!==t.handlersRef?(t.handlersRef=r,t.handlerEntries.clear()):n!==t.handlersLength&&(n?t.handlerEntries.forEach(function(e,n){r[e.index]!==e.handler&&t.handlerEntries.delete(n)}):t.handlerEntries.clear()),t.handlersLength=n}class xn{constructor(){this.handlers=[],this[bn]={handlersRef:this.handlers,handlersLength:this.handlers.length,handlerEntries:new Map,iterationDepth:0,nextId:0}}use(e,t,r){const n={fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null},o=this[bn];null==this.handlers&&(this.handlers=[]),_n(this,o);const s=o.nextId++;return this.handlers.push(n),o.handlerEntries.set(s,{handler:n,index:this.handlers.length-1}),o.handlersLength=this.handlers.length,s}eject(e){const t=this[bn];_n(this,t);const r=t.handlerEntries.get(e);if(r){if(t.handlerEntries.delete(e),this.handlers[r.index]!==r.handler)return;this.handlers[r.index]=null,t.iterationDepth||(yn(this.handlers),t.handlersLength=this.handlers.length)}}clear(){this.handlers&&(this.handlers=[],_n(this,this[bn]))}forEach(e){const t=this[bn];_n(this,t),t.iterationDepth++;try{Qr.forEach(this.handlers,function(t){null!==t&&e(t)})}finally{--t.iterationDepth||(_n(this,t),yn(this.handlers),t.handlersLength=gn(this.handlers))}}}const vn={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1,legacyInterceptorReqResOrdering:!0,advertiseZstdAcceptEncoding:!1,validateStatusUndefinedResolves:!0},wn={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:pn,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},Nn="undefined"!=typeof window&&"undefined"!=typeof document,Pn="object"==typeof navigator&&navigator||void 0,Sn=Nn&&(!Pn||["ReactNative","NativeScript","NS"].indexOf(Pn.product)<0),kn="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,Tn=Nn&&window.location.href||"http://localhost",Vn={...Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:Nn,hasStandardBrowserEnv:Sn,hasStandardBrowserWebWorkerEnv:kn,navigator:Pn,origin:Tn},Symbol.toStringTag,{value:"Module"})),...wn};function En(e){if(e>100)throw new on("FormData field is too deeply nested ("+e+" levels). Max depth: 100",on.ERR_FORM_DATA_DEPTH_EXCEEDED)}function An(e){function t(e,r,n,o){En(o);let s=e[o++];if("__proto__"===s)return!0;const i=Number.isFinite(+s),a=o>=e.length;if(s=!s&&Qr.isArray(n)?n.length:s,a)return Qr.hasOwnProp(n,s)?n[s]=Qr.isArray(n[s])?n[s].concat(r):[n[s],r]:n[s]=r,!i;Qr.hasOwnProp(n,s)&&Qr.isObject(n[s])||(n[s]=[]);return t(e,r,n[s],o)&&Qr.isArray(n[s])&&(n[s]=function(e){const t={},r=Object.keys(e);let n;const o=r.length;let s;for(n=0;n<o;n++)s=r[n],t[s]=e[s];return t}(n[s])),!i}if(Qr.isFormData(e)&&Qr.isFunction(e.entries)){const r={};return Qr.forEachEntry(e,(e,n)=>{t(function(e){const t=[],r=/[^.[\]]+|\[([^.[\]]*)]/g;let n;for(;null!==(n=r.exec(e));)En(t.length),t.push("[]"===n[0]?"":n[1]||n[0]);return t}(e),n,r,0)}),r}return null}const On=Object.freeze(["get","delete","head","options","post","put","patch","purge","link","unlink","query"]),jn=(e,t)=>null!=e&&Qr.hasOwnProp(e,t)?e[t]:void 0;const Bn={transitional:vn,adapter:["xhr","http","fetch"],transformRequest:[function(e,t){const r=t.getContentType()||"",n=r.indexOf("application/json")>-1,o=Qr.isObject(e);o&&Qr.isHTMLForm(e)&&(e=new FormData(e));if(Qr.isFormData(e))return n?JSON.stringify(An(e)):e;if(Qr.isArrayBuffer(e)||Qr.isBuffer(e)||Qr.isStream(e)||Qr.isFile(e)||Qr.isBlob(e)||Qr.isReadableStream(e))return e;if(Qr.isArrayBufferView(e))return e.buffer;if(Qr.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let s;if(o){const t=jn(this,"formSerializer");if(r.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return dn(e,new Vn.classes.URLSearchParams,{visitor:function(e,t,r,n){return Vn.isNode&&Qr.isBuffer(e)?(this.append(t,e.toString("base64")),!1):n.defaultVisitor.apply(this,arguments)},...t})}(e,t).toString();if((s=Qr.isFileList(e))||r.indexOf("multipart/form-data")>-1){const r=jn(this,"env"),n=r&&r.FormData;return dn(s?{"files[]":e}:e,n&&new n,t)}}return o||n?(t.setContentType("application/json",!1),function(e,t,r){if(Qr.isString(e))try{return(t||JSON.parse)(e),Qr.trim(e)}catch(it){if("SyntaxError"!==it.name)throw it}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=jn(this,"transitional")||Bn.transitional,r=t&&t.forcedJSONParsing,n=jn(this,"responseType"),o="json"===n;if(Qr.isResponse(e)||Qr.isReadableStream(e))return e;if(e&&Qr.isString(e)&&(r&&!n||o)){const r=!(t&&t.silentJSONParsing)&&o;try{return JSON.parse(e,jn(this,"parseReviver"))}catch(it){if(r){if("SyntaxError"===it.name)throw on.from(it,on.ERR_BAD_RESPONSE,this,null,jn(this,"response"));throw it}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Vn.classes.FormData,Blob:Vn.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};function Rn(e,t){const r=this||Bn,n=t||r,o=en.from(n.headers);let s=n.data;return Qr.forEach(e,function(e){s=e.call(r,s,o.normalize(),t?t.status:void 0)}),o.normalize(),s}function Ln(e){return!(!e||!e.__CANCEL__)}Qr.forEach(On,e=>{Bn.headers[e]={}});let Cn=class extends on{constructor(e,t,r){super(null==e?"canceled":e,on.ERR_CANCELED,t,r),this.name="CanceledError",this.__CANCEL__=!0}};function qn(e,t,r){const n=r.config.validateStatus;r.status&&n&&!n(r.status)?t(new on("Request failed with status code "+r.status,r.status>=400&&r.status<500?on.ERR_BAD_REQUEST:on.ERR_BAD_RESPONSE,r.config,r.request,r)):e(r)}const Dn=/[\t\n\r]/g;function In(e){if("string"!=typeof e)return e;let t=0;for(;t<e.length&&e.charCodeAt(t)<=32;)t++;return e.slice(t).replace(Dn,"")}function Un(e){const t=/^([-+\w]{1,25}):(?:\/\/)?/.exec(e);return t&&t[1]||""}const Mn=(e,t,r=3)=>{let n=0;const o=function(e,t){e=e||10;const r=new Array(e),n=new Array(e);let o,s=0,i=0;return t=void 0!==t?t:1e3,function(a){const l=Date.now(),c=n[i];o||(o=l),r[s]=a,n[s]=l;let d=i,u=0;for(;d!==s;)u+=r[d++],d%=e;if(s=(s+1)%e,s===i&&(i=(i+1)%e),l-o<t)return;const p=c&&l-c;return p?Math.round(1e3*u/p):void 0}}(50,250);return function(e,t){let r,n,o=0,s=1e3/t;const i=(t,s=Date.now())=>{o=s,r=null,n&&(clearTimeout(n),n=null),e(...t)};return[(...e)=>{const t=Date.now(),a=t-o;a>=s?i(e,t):(r=e,n||(n=setTimeout(()=>{n=null,i(r)},s-a)))},()=>r&&i(r),(...e)=>i(e)]}(r=>{if(!r||!Qr.isNumber(r.loaded))return;const s=r.loaded,i=r.lengthComputable?r.total:void 0,a=Math.max(0,null!=i?Math.min(s,i):s),l=Math.max(0,a-n),c=o(l);n=Math.max(n,a);e({loaded:a,total:i,progress:i?a/i:void 0,bytes:l,rate:c||void 0,estimated:c&&i?(i-a)/c:void 0,event:r,lengthComputable:null!=i,[t?"download":"upload"]:!0})},r)},Qn=(e,t)=>{const r=null!=e;return[n=>t[0]({lengthComputable:r,total:e,loaded:n}),t[1]]},Fn=(e,t=Qr.asap)=>(...r)=>t(()=>e(...r)),Hn=Vn.hasStandardBrowserEnv?((e,t)=>r=>(r=new URL(r,Vn.origin),e.protocol===r.protocol&&e.host===r.host&&(t||e.port===r.port)))(new URL(Vn.origin),Vn.navigator&&/(msie|trident)/i.test(Vn.navigator.userAgent)):()=>!0,zn=Vn.hasStandardBrowserEnv?{write(e,t,r,n,o,s,i){if("undefined"==typeof document)return;const a=[`${e}=${encodeURIComponent(t)}`];Qr.isNumber(r)&&a.push(`expires=${new Date(r).toUTCString()}`),Qr.isString(n)&&a.push(`path=${n}`),Qr.isString(o)&&a.push(`domain=${o}`),!0===s&&a.push("secure"),Qr.isString(i)&&a.push(`SameSite=${i}`),document.cookie=a.join("; ")},read(e){if("undefined"==typeof document)return null;const t=document.cookie.split(";");for(let r=0;r<t.length;r++){const n=t[r].replace(/^\s+/,""),o=n.indexOf("=");if(-1!==o&&n.slice(0,o)===e)try{return decodeURIComponent(n.slice(o+1))}catch(it){return n.slice(o+1)}}return null},remove(e){this.write(e,"",Date.now()-864e5,"/")}}:{write(){},read:()=>null,remove(){}};const $n=/^https?:(?!\/\/)/i;function Wn(e){const t=e.replace(/^(https?:\/{0,2})[^/?#]*@/i,`$1${tn}@`),r=t.indexOf("#"),n=(-1===r?t:t.slice(0,r)).replace(/([?&][^=&#]*=)[^&#]*/g,`$1${tn}`);return-1===r?n:`${n}#${o=t.slice(r+1),o?o.replace(/(^|&)([^=&]*=)?[^&]+/g,(e,t,r="")=>`${t}${r}${tn}`):o}`;var o}function Yn(e,t){if("string"==typeof e){const r=In(e);if($n.test(r))throw new on(`Invalid URL ${JSON.stringify(Wn(r))}: missing "//" after protocol`,on.ERR_INVALID_URL,t)}}function Gn(e,t,r,n){Yn(t,n);let o=!("string"==typeof(s=t)&&/^([a-z][a-z\d+\-.]*:)?\/\//i.test(s));var s;return e&&(o||!1===r)?(Yn(e,n),function(e,t){if(!t)return e;let r=e.length;for(;r>0&&47===e.charCodeAt(r-1);)r--;return e.slice(0,r)+"/"+t.replace(/^\/+/,"")}(e,t)):t}const Kn=e=>e instanceof en?{...e}:e;function Jn(e,t){e=e||{},t=t||{};const r=Object.create(null);function n(e,t,r,n){return Qr.isPlainObject(e)&&Qr.isPlainObject(t)?Qr.merge.call({caseless:n},e,t):Qr.isPlainObject(t)?Qr.merge({},t):Qr.isArray(t)?t.slice():t}function o(e,t,r,o){return Qr.isUndefined(t)?Qr.isUndefined(e)?void 0:n(void 0,e,0,o):n(e,t,0,o)}function s(e,t){if(!Qr.isUndefined(t))return n(void 0,t)}function i(e,t){return Qr.isUndefined(t)?Qr.isUndefined(e)?void 0:n(void 0,e):n(void 0,t)}function a(r,o,s){return Qr.hasOwnProp(t,s)?n(r,o):Qr.hasOwnProp(e,s)?n(void 0,r):void 0}Object.defineProperty(r,"hasOwnProperty",{__proto__:null,value:Object.prototype.hasOwnProperty,enumerable:!1,writable:!0,configurable:!0});const l={url:s,method:s,data:s,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutErrorMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,allowedSocketPaths:i,responseEncoding:i,validateStatus:a,headers:(e,t,r)=>o(Kn(e),Kn(t),0,!0)};var c;return Qr.forEach((c={...e,...t},Object.getOwnPropertySymbols&&Object.getOwnPropertyDescriptor?Object.keys(c).concat(Object.getOwnPropertySymbols(c).filter(e=>Object.getOwnPropertyDescriptor(c,e).enumerable)):Object.keys(c)),function(n){if("__proto__"===n||"constructor"===n||"prototype"===n)return;const s=Qr.hasOwnProp(l,n)?l[n]:o,i=s(Qr.hasOwnProp(e,n)?e[n]:void 0,Qr.hasOwnProp(t,n)?t[n]:void 0,n);Qr.isUndefined(i)&&s!==a||(r[n]=i)}),Qr.hasOwnProp(t,"validateStatus")&&Qr.isUndefined(t.validateStatus)&&!1===function(r){const n=Qr.hasOwnProp(t,"transitional")?t.transitional:void 0;if(!Qr.isUndefined(n)){if(!Qr.isPlainObject(n))return;if(Qr.hasOwnProp(n,r))return n[r]}const o=Qr.hasOwnProp(e,"transitional")?e.transitional:void 0;if(Qr.isPlainObject(o)&&Qr.hasOwnProp(o,r))return o[r]}("validateStatusUndefinedResolves")&&(Qr.hasOwnProp(e,"validateStatus")?r.validateStatus=n(void 0,e.validateStatus):delete r.validateStatus),r}const Xn=["content-type","content-length"];function Zn(e){const t=Jn({},e),r=e=>Qr.hasOwnProp(t,e)?t[e]:void 0,n=r("data");let o=r("withXSRFToken");const s=r("xsrfHeaderName"),i=r("xsrfCookieName");let a=r("headers");const l=r("auth"),c=r("baseURL"),d=r("allowAbsoluteUrls"),u=r("url");if(t.headers=a=en.from(a),t.url=fn(Gn(c,u,d,t),r("params"),r("paramsSerializer")),l){const t=Qr.getSafeProp(l,"username")||"",r=Qr.getSafeProp(l,"password")||"";try{a.set("Authorization","Basic "+btoa(t+":"+(r?encodeURIComponent(r).replace(/%([0-9A-F]{2})/gi,(e,t)=>String.fromCharCode(parseInt(t,16))):"")))}catch(it){throw on.from(it,on.ERR_BAD_OPTION_VALUE,e)}}if(Qr.isFormData(n)){const e=Qr.getSafeProp(n,"getHeaders");Vn.hasStandardBrowserEnv||Vn.hasStandardBrowserWebWorkerEnv||Qr.isReactNative(n)?a.setContentType(void 0):Qr.isFunction(e)&&function(e,t,r){"content-only"===r?Object.entries(t||{}).forEach(([t,r])=>{Xn.includes(t.toLowerCase())&&e.set(t,r)}):e.set(t)}(a,e.call(n),r("formDataHeaderPolicy"))}if(Vn.hasStandardBrowserEnv){Qr.isFunction(o)&&(o=o(t));if(!0===o||null==o&&Hn(t.url)){const e=s&&i&&zn.read(i);e&&a.set(s,e)}}return t}const eo="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise(function(t,r){const n=Zn(e);let o=n.data;const s=en.from(n.headers).normalize();let i,a,l,c,d,u,{responseType:p,onUploadProgress:m,onDownloadProgress:h}=n;function f(){c&&c(),d&&d(),n.cancelToken&&n.cancelToken.unsubscribe(i),n.signal&&n.signal.removeEventListener("abort",i)}let b=new XMLHttpRequest;function g(o){if(!b)return;if(!(0!==b.status||"file"===(Un(In(n.url))||Un(Vn.origin))||b.responseURL&&b.responseURL.startsWith("file:")))return r(new on("Request aborted",on.ECONNABORTED,e,b)),f(),void(b=null);try{o?u&&u(o):d&&d()}catch(i){setTimeout(()=>{throw i})}if(!b)return;const s=en.from("getAllResponseHeaders"in b&&b.getAllResponseHeaders());qn(function(e){t(e),f()},function(e){r(e),f()},{data:p&&"text"!==p&&"json"!==p?b.response:b.responseText,status:b.status,statusText:b.statusText,headers:s,config:e,request:b}),b=null}b.open(n.method.toUpperCase(),n.url,!0),b.timeout=n.timeout,"onloadend"in b?b.onloadend=g:b.onreadystatechange=function(){b&&4===b.readyState&&(0!==b.status||b.responseURL&&b.responseURL.startsWith("file:"))&&setTimeout(g)},b.onabort=function(){b&&(r(new on("Request aborted",on.ECONNABORTED,e,b)),f(),b=null)},b.onerror=function(t){const n=t&&t.message?t.message:"Network Error",o=new on(n,on.ERR_NETWORK,e,b);o.event=t||null,r(o),f(),b=null},b.ontimeout=function(){let t=n.timeout?"timeout of "+n.timeout+"ms exceeded":"timeout exceeded";const o=n.transitional||vn;n.timeoutErrorMessage&&(t=n.timeoutErrorMessage),r(new on(t,o.clarifyTimeoutError?on.ETIMEDOUT:on.ECONNABORTED,e,b)),f(),b=null},void 0===o&&s.setContentType(null),"setRequestHeader"in b&&Qr.forEach(Wr(s),function(e,t){b.setRequestHeader(t,e)}),Qr.isUndefined(n.withCredentials)||(b.withCredentials=!!n.withCredentials),p&&"json"!==p&&(b.responseType=n.responseType),h&&([l,d,u]=Mn(h,!0),b.addEventListener("progress",l)),m&&b.upload&&([a,c]=Mn(m),b.upload.addEventListener("progress",a),b.upload.addEventListener("loadend",c)),(n.cancelToken||n.signal)&&(i=t=>{b&&(r(!t||t.type?new Cn(null,e,b):t),b.abort(),f(),b=null)},n.cancelToken&&n.cancelToken.subscribe(i),n.signal&&(n.signal.aborted?i():n.signal.addEventListener("abort",i)));const y=Un(n.url);if(y&&!Vn.protocols.includes(y))return r(new on("Unsupported protocol "+y+":",on.ERR_BAD_REQUEST,e)),void f();b.send(o||null)})},to=(e,t)=>{if(e=e?e.filter(Boolean):[],!t&&!e.length)return;const r=new AbortController;let n=!1;const o=function(e){if(!n){n=!0,i();const t=e instanceof Error?e:this.reason;r.abort(t instanceof on?t:new Cn(t instanceof Error?t.message:t))}};let s=t&&setTimeout(()=>{s=null,o(new on(`timeout of ${t}ms exceeded`,on.ETIMEDOUT))},t);const i=()=>{e&&(s&&clearTimeout(s),s=null,e.forEach(e=>{e.unsubscribe?e.unsubscribe(o):e.removeEventListener("abort",o)}),e=null)};e.forEach(e=>{n||(e.aborted?o.call(e):e.addEventListener("abort",o,{once:!0}))});const{signal:a}=r;return a.unsubscribe=()=>Qr.asap(i),a},ro=function*(e,t){let r=e.byteLength;if(r<t)return void(yield e);let n,o=0;for(;o<r;)n=o+t,yield e.slice(o,n),o=n},no=async function*(e){if(e[Symbol.asyncIterator])return void(yield*e);const t=e.getReader();try{for(;;){const{done:e,value:r}=await t.read();if(e)break;yield r}}finally{await t.cancel()}},oo=(e,t,r,n)=>{const o=async function*(e,t){for await(const r of no(e))yield*ro(r,t)}(e,t);let s,i=0,a=e=>{s||(s=!0,n&&n(e))};return new ReadableStream({async pull(e){try{const{done:t,value:n}=await o.next();if(t)return a(),void e.close();let s=n.byteLength;if(r){let e=i+=s;r(e)}e.enqueue(new Uint8Array(n))}catch(t){throw a(t),t}},cancel:e=>(a(e),o.return())},{highWaterMark:2})},so=e=>e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102,io=(e,t,r)=>t+2<r&&so(e.charCodeAt(t+1))&&so(e.charCodeAt(t+2)),ao=e=>e<=57?e-48:(223&e)-55,lo=e=>e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||43===e||47===e||45===e||95===e,co=e=>9===e||10===e||12===e||13===e||32===e,uo=e=>{const t=e.length;let r=0,n=0,o=!1;for(let s=0;s<t;s++){let i=e.charCodeAt(s);37===i&&io(e,s,t)&&(i=16*ao(e.charCodeAt(s+1))+ao(e.charCodeAt(s+2)),s+=2),co(i)||(61!==i?!lo(i)||n>0?o=!0:r++:n++)}return o||n>2||n>0&&(r+n)%4!=0||r%4==1?(e=>{const t=e.length;let r=0;return t>0&&61===e.charCodeAt(t-1)&&(r++,t>1&&61===e.charCodeAt(t-2)&&r++),Math.floor(3*(t-r)/4)})(e):(e=>{const t=e%4;return 3*Math.floor(e/4)+(2===t?1:3===t?2:0)})(r)};function po(e){const t="string"==typeof e?e.indexOf("#"):-1;return((e,t)=>{if(!e||"string"!=typeof e)return 0;if(!e.startsWith("data:"))return 0;const r=e.indexOf(",");if(r<0)return 0;const n=e.slice(5,r),o=e.slice(r+1);if(/;base64/i.test(n))return t(o);let s=0;for(let i=0,a=o.length;i<a;i++){const e=o.charCodeAt(i);if(37===e&&io(o,i,a))s+=1,i+=2;else if(e<128)s+=1;else if(e<2048)s+=2;else if(e>=55296&&e<=56319&&i+1<a){const e=o.charCodeAt(i+1);e>=56320&&e<=57343?(s+=4,i++):s+=3}else s+=3}return s})(-1===t?e:e.slice(0,t),uo)}const mo="1.20.0",ho={cache:"default",redirect:"follow",referrer:"about:client",referrerPolicy:"",mode:"cors",integrity:"",keepalive:!1,priority:"auto",window:null},{isFunction:fo}=Qr,bo=e=>{if(!Qr.isString(e))return e;try{return decodeURIComponent(e)}catch(t){return e}},go=(e,...t)=>{try{return!!e(...t)}catch(it){return!1}},yo=e=>{const t=void 0!==Qr.global&&null!==Qr.global?Qr.global:globalThis,{ReadableStream:r,TextEncoder:n}=t;e=Qr.merge.call({skipUndefined:!0},{Request:t.Request,Response:t.Response},e);const{fetch:o,Request:s,Response:i}=e,a=o?fo(o):"function"==typeof fetch,l=fo(s),c=fo(i);if(!a)return!1;const d=a&&fo(r),u=a&&("function"==typeof n?(e=>t=>e.encode(t))(new n):async e=>new Uint8Array(await new s(e).arrayBuffer())),p=l&&d&&go(()=>{let e=!1;const t=new s(Vn.origin,{body:new r,method:"POST",get duplex(){return e=!0,"half"}}),n=t.headers.has("Content-Type");return null!=t.body&&t.body.cancel(),e&&!n}),m=c&&d&&go(()=>Qr.isReadableStream(new i("").body)),h={stream:m&&(e=>e.body)};a&&["text","arrayBuffer","blob","formData","stream"].forEach(e=>{!h[e]&&(h[e]=(t,r)=>{let n=t&&t[e];if(n)return n.call(t);throw new on(`Response type '${e}' is not supported`,on.ERR_NOT_SUPPORT,r)})});const f=async e=>{if(null==e)return 0;if(Qr.isBlob(e))return e.size;if(Qr.isSpecCompliantForm(e)){const t=new s(Vn.origin,{method:"POST",body:e});return(await t.arrayBuffer()).byteLength}return Qr.isArrayBufferView(e)||Qr.isArrayBuffer(e)?e.byteLength:(Qr.isURLSearchParams(e)&&(e+=""),Qr.isString(e)?(await u(e)).byteLength:void 0)};return async e=>{let{url:t,method:r,data:a,signal:c,cancelToken:u,timeout:b,onDownloadProgress:g,onUploadProgress:y,responseType:_,headers:x,withCredentials:v="same-origin",fetchOptions:w,maxContentLength:N,maxBodyLength:P,maxRedirects:S}=Zn(e);const k=Qr.isNumber(N)&&N>-1,T=Qr.isNumber(P)&&P>-1;let V=o||fetch;_=_?(_+"").toLowerCase():"text";let E=to([c,u&&u.toAbortSignal()],b),A=null;const O=E&&E.unsubscribe&&(()=>{E.unsubscribe()});let j,B=null;const R=()=>new on("Request body larger than maxBodyLength limit",on.ERR_BAD_REQUEST,e,A);try{let o;const c=(C="auth",Qr.hasOwnProp(e,C)?e[C]:void 0);if(c){const e=Qr.getSafeProp(c,"username")||"";o={username:e,password:Qr.getSafeProp(c,"password")||""}}if((e=>{const t=e.indexOf("://");let r=e;return-1!==t&&(r=r.slice(t+3)),r.includes("@")||r.includes(":")})(t)){const e=new URL(t,Vn.origin);if(!o&&(e.username||e.password)){const t=bo(e.username);o={username:t,password:bo(e.password)}}(e.username||e.password)&&(e.username="",e.password="",t=e.href)}if(o&&(x.delete("authorization"),x.set("Authorization","Basic "+btoa((L=(o.username||"")+":"+(o.password||""),encodeURIComponent(L).replace(/%([0-9A-F]{2})/gi,(e,t)=>String.fromCharCode(parseInt(t,16))))))),k&&"string"==typeof t&&t.startsWith("data:")){if(po(t)>N)throw new on("maxContentLength size of "+N+" exceeded",on.ERR_BAD_RESPONSE,e,A)}if(T&&"get"!==r&&"head"!==r){const e=await f(a);if("number"==typeof e&&isFinite(e)&&(j=e,e>P))throw R()}const u=T&&(Qr.isReadableStream(a)||Qr.isStream(a)),b=(e,t,r)=>oo(e,65536,e=>{if(T&&e>P)throw B=R();t&&t(e)},r);if(p&&"get"!==r&&"head"!==r&&(y||u)){if(j=null==j?await(async(e,t)=>{const r=Qr.toFiniteNumber(e.getContentLength());return null==r?f(t):r})(x,a):j,0!==j||u){let e,r=new s(t,{method:"POST",body:a,duplex:"half"});if(Qr.isFormData(a)&&(e=r.headers.get("content-type"))&&x.setContentType(e),r.body){const[e,t]=y&&Qn(j,Mn(Fn(y)))||[];a=b(r.body,e,t)}}}else if(u&&!l&&d&&"get"!==r&&"head"!==r)a=b(a);else if(u&&l&&!p&&"get"!==r&&"head"!==r)throw new on("Stream request bodies are not supported by the current fetch implementation",on.ERR_NOT_SUPPORT,e,A);Qr.isString(v)||(v=v?"include":"omit");const q=l&&"credentials"in s.prototype;if(Qr.isFormData(a)){const e=x.getContentType();e&&/^multipart\/form-data/i.test(e)&&!/boundary=/i.test(e)&&x.delete("content-type")}x.set("User-Agent","axios/"+mo,!1);const D=null==w?w:Object.assign(Object.create(null),w);D&&(delete D.body,delete D.headers,delete D.method,delete D.signal,delete D.duplex,delete D.credentials);const I=Object.assign(Object.create(null),D,{signal:E,method:r.toUpperCase(),headers:Wr(x.normalize()),body:a,duplex:"half",credentials:q?v:void 0});l&&(Qr.forEach(ho,(e,t)=>{void 0===I[t]&&(I[t]=e)}),void 0===I.signal&&(I.signal=null),void 0===I.body&&(I.body=null)),0===S&&(I.redirect="manual",D&&(D.redirect="manual")),A=l&&new s(t,I);let U=await(l?V(A,D):V(t,I));const M=en.from(U.headers);if(k){const t=Qr.toFiniteNumber(M.getContentLength());if(null!=t&&t>N)throw new on("maxContentLength size of "+N+" exceeded",on.ERR_BAD_RESPONSE,e,A)}const Q=m&&("stream"===_||"response"===_);if(m&&U.body&&(g||k||Q&&O)){const t={};["status","statusText","headers"].forEach(e=>{t[e]=U[e]});const r=Qr.toFiniteNumber(M.getContentLength()),[n,o]=g&&Qn(r,Mn(Fn(g),!0))||[];let s=0;const a=t=>{if(k&&(s=t,s>N))throw new on("maxContentLength size of "+N+" exceeded",on.ERR_BAD_RESPONSE,e,A);n&&n(t)};U=new i(oo(U.body,65536,a,()=>{o&&o(),O&&O()}),t)}_=_||"text";let F=await h[Qr.findKey(h,_)||"text"](U,e);if(k&&!m&&!Q){let t;if(null!=F&&("number"==typeof F.byteLength?t=F.byteLength:"number"==typeof F.size?t=F.size:"string"==typeof F&&(t="function"==typeof n?(new n).encode(F).byteLength:F.length)),"number"==typeof t&&t>N)throw new on("maxContentLength size of "+N+" exceeded",on.ERR_BAD_RESPONSE,e,A)}return!Q&&O&&O(),await new Promise((t,r)=>{qn(t,r,{data:F,headers:en.from(U.headers),status:U.status,statusText:U.statusText,config:e,request:A})})}catch(q){if(O&&O(),E&&E.aborted&&E.reason instanceof on){const t=E.reason;throw t.config=e,A&&(t.request=A),q!==t&&Object.defineProperty(t,"cause",{__proto__:null,value:q,writable:!0,enumerable:!1,configurable:!0}),t}if(B)throw A&&!B.request&&(B.request=A),B;if(q instanceof on)throw A&&!q.request&&(q.request=A),q;if(q&&"TypeError"===q.name&&/Load failed|fetch/i.test(q.message)){const t=new on("Network Error",on.ERR_NETWORK,e,A,q&&q.response);throw Object.defineProperty(t,"cause",{__proto__:null,value:q.cause||q,writable:!0,enumerable:!1,configurable:!0}),t}throw on.from(q,q&&q.code,e,A,q&&q.response)}var L,C}},_o=new Map,xo=e=>{let t=e&&e.env||{};const{fetch:r,Request:n,Response:o}=t,s=[n,o,r];let i,a,l=s.length,c=_o;for(;l--;)i=s[l],a=c.get(i),void 0===a&&c.set(i,a=l?new Map:yo(t)),c=a;return a};xo();const vo={http:null,xhr:eo,fetch:{get:xo}};Qr.forEach(vo,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{__proto__:null,value:t})}catch(it){}Object.defineProperty(e,"adapterName",{__proto__:null,value:t})}});const wo=e=>`- ${e}`,No=e=>Qr.isFunction(e)||null===e||!1===e;const Po={getAdapter:function(e,t){e=Qr.isArray(e)?e:[e];const{length:r}=e;let n,o;const s={};for(let i=0;i<r;i++){let r;if(n=e[i],o=n,!No(n)&&(o=vo[(r=String(n)).toLowerCase()],void 0===o))throw new on(`Unknown adapter '${r}'`);if(o&&(Qr.isFunction(o)||(o=o.get(t))))break;s[r||"#"+i]=o}if(!o){const e=Object.entries(s).map(([e,t])=>`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build"));let t=r?e.length>1?"since :\n"+e.map(wo).join("\n"):" "+wo(e[0]):"as no adapter specified";throw new on("There is no suitable adapter to dispatch the request "+t,on.ERR_NOT_SUPPORT)}return o},adapters:vo};function So(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Cn(null,e)}function ko(e){const t=Qr.toSafeFlatObject(e);So(t),t.headers=en.from(Qr.getSafeProp(t,"headers")),t.data=Rn.call(t,t.transformRequest),-1!==["post","put","patch"].indexOf(t.method)&&t.headers.setContentType("application/x-www-form-urlencoded",!1);return Po.getAdapter(t.adapter||Bn.adapter,t)(t).then(function(e){So(t),t.response=e;try{e.data=Rn.call(t,t.transformResponse,e)}finally{delete t.response}return e.headers=en.from(e.headers),e},function(e){if(!Ln(e)&&(So(t),e&&e.response)){t.response=e.response;try{e.response.data=Rn.call(t,t.transformResponse,e.response)}finally{delete t.response}e.response.headers=en.from(e.response.headers)}return Promise.reject(e)})}const To={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{To[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});const Vo={};To.transitional=function(e,t,r){return(n,o,s)=>{if(!1===e)throw new on(function(e,t){return"[Axios v"+mo+"] Transitional option '"+e+"'"+t+(r?". "+r:"")}(o," has been removed"+(t?" in "+t:"")),on.ERR_DEPRECATED);return t&&!Vo[o]&&(Vo[o]=!0),!e||e(n,o,s)}},To.spelling=function(e){return(e,t)=>!0};const Eo={assertOptions:function(e,t,r){if("object"!=typeof e||null===e)throw new on("options must be an object",on.ERR_BAD_OPTION_VALUE);const n=Object.keys(e);let o=n.length;for(;o-- >0;){const s=n[o],i=Object.prototype.hasOwnProperty.call(t,s)?t[s]:void 0;if(i){const t=e[s],r=void 0===t||i(t,s,e);if(!0!==r)throw new on("option "+s+" must be "+r,on.ERR_BAD_OPTION_VALUE);continue}if(!0!==r)throw new on("Unknown option "+s,on.ERR_BAD_OPTION)}},validators:To},Ao=Eo.validators;let Oo=class{constructor(e){this.defaults=e||{},this.interceptors={request:new xn,response:new xn}}async request(e,t){try{return await this._request(e,t)}catch(r){if(r instanceof Error)try{let e={};Error.captureStackTrace?Error.captureStackTrace(e):e=new Error;const t=e.stack;let n="";if("string"==typeof t){const e=t.indexOf("\n");n=-1===e?"":t.slice(e+1)}if(r.stack){if(n){const e=n.indexOf("\n"),t=-1===e?-1:n.indexOf("\n",e+1),o=-1===t?"":n.slice(t+1);String(r.stack).endsWith(o)||(r.stack+="\n"+n)}}else r.stack=n}catch(it){}throw r}}_request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=Jn(this.defaults,t);const{transitional:r,paramsSerializer:n,headers:o}=t;void 0!==r&&Eo.assertOptions(r,{silentJSONParsing:Ao.transitional(Ao.boolean),forcedJSONParsing:Ao.transitional(Ao.boolean),clarifyTimeoutError:Ao.transitional(Ao.boolean),legacyInterceptorReqResOrdering:Ao.transitional(Ao.boolean),advertiseZstdAcceptEncoding:Ao.transitional(Ao.boolean),validateStatusUndefinedResolves:Ao.transitional(Ao.boolean)},!1),null!=n&&(Qr.isFunction(n)?t.paramsSerializer={serialize:n}:Eo.assertOptions(n,{encode:Ao.function,serialize:Ao.function},!0)),void 0!==t.allowAbsoluteUrls||(void 0!==this.defaults.allowAbsoluteUrls?t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:t.allowAbsoluteUrls=!0),Eo.assertOptions(t,{baseUrl:Ao.spelling("baseURL"),withXsrfToken:Ao.spelling("withXSRFToken")},!0),t.method=(Qr.getSafeProp(t,"method")||Qr.getSafeProp(this.defaults,"method")||"get").toLowerCase();let s=o&&Qr.merge(o.common,o[t.method]);o&&Qr.forEach(On.concat("common"),e=>{delete o[e]}),t.headers=en.concat(s,o);const i=[];let a=!0;this.interceptors.request.forEach(function(e){if("function"==typeof e.runWhen&&!1===e.runWhen(t))return;a=a&&e.synchronous;const r=t.transitional||vn;r&&r.legacyInterceptorReqResOrdering?i.unshift(e.fulfilled,e.rejected):i.push(e.fulfilled,e.rejected)});const l=[];let c;this.interceptors.response.forEach(function(e){l.push(e.fulfilled,e.rejected)});let d,u=0;if(!a){const e=[ko.bind(this),void 0];for(e.unshift(...i),e.push(...l),d=e.length,c=Promise.resolve(t);u<d;)c=c.then(e[u++],e[u++]);return c}d=i.length;let p=t;for(;u<d;){const e=i[u++],t=i[u++];try{p=e?e(p):p}catch(m){if(!t){c=Promise.reject(m);break}try{const e=t.call(this,m);Qr.isThenable(e)&&(c=Promise.resolve(e).then(()=>ko.call(this,p)))}catch(h){c=Promise.reject(h)}break}}if(!c)try{c=ko.call(this,p)}catch(m){c=Promise.reject(m)}for(u=0,d=l.length;u<d;)c=c.then(l[u++],l[u++]);return c}getUri(e){return fn(Gn((e=Jn(this.defaults,e)).baseURL,e.url,e.allowAbsoluteUrls,e),e.params,e.paramsSerializer)}};Qr.forEach(["delete","get","head","options"],function(e){Oo.prototype[e]=function(t,r){return this.request(Jn(r||{},{method:e,url:t,data:r&&Qr.hasOwnProp(r,"data")?r.data:void 0}))}}),Qr.forEach(["post","put","patch","query"],function(e){function t(t){return function(r,n,o){return this.request(Jn(o||{},{method:e,headers:t?{"Content-Type":"multipart/form-data"}:{},url:r,data:n}))}}Oo.prototype[e]=t(),"query"!==e&&(Oo.prototype[e+"Form"]=t(!0))});const jo={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,Re
172setContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,ContentTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,UnprocessableContent:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerReturnsAnUnknownError:520,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(jo).forEach(([e,t])=>{void 0===jo[t]&&(jo[t]=e)});const Bo=function e(t){const r=new Oo(t),n=$t(Oo.prototype.request,r);return Qr.extend(n,Oo.prototype,r,{allOwnKeys:!0}),Qr.extend(n,r,null,{allOwnKeys:!0}),n.create=function(r){return e(Jn(t,r))},n}(Bn);Bo.Axios=Oo,Bo.CanceledError=Cn,Bo.CancelToken=class e{constructor(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");let t;this.promise=new Promise(function(e){t=e});const r=this;this.promise.then(e=>{if(!r._listeners)return;let t=r._listeners.length;for(;t-- >0;)r._listeners[t](e);r._listeners=null}),this.promise.then=e=>{let t;const n=new Promise(e=>{r.subscribe(e),t=e}).then(e);return n.cancel=function(){r.unsubscribe(t)},n},e(function(e,n,o){r.reason||(r.reason=new Cn(e,n,o),t(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}toAbortSignal(){const e=new AbortController,t=t=>{e.abort(t)};return this.subscribe(t),e.signal.unsubscribe=()=>this.unsubscribe(t),e.signal}static source(){let t;return{token:new e(function(e){t=e}),cancel:t}}},Bo.isCancel=Ln,Bo.VERSION=mo,Bo.toFormData=dn,Bo.AxiosError=on,Bo.Cancel=Bo.CanceledError,Bo.all=function(e){return Promise.all(e)},Bo.spread=function(e){return function(t){return e.apply(null,t)}},Bo.isAxiosError=function(e){return Qr.isObject(e)&&!0===e.isAxiosError},Bo.mergeConfig=Jn,Bo.AxiosHeaders=en,Bo.formToJSON=e=>An(Qr.isHTMLForm(e)?new FormData(e):e),Bo.getAdapter=Po.getAdapter,Bo.HttpStatusCode=jo,Bo.default=Bo;const{Axios:Ro,AxiosError:Lo,CanceledError:Co,isCancel:qo,CancelToken:Do,VERSION:Io,all:Uo,Cancel:Mo,isAxiosError:Qo,spread:Fo,toFormData:Ho,AxiosHeaders:zo,HttpStatusCode:$o,formToJSON:Wo,getAdapter:Yo,mergeConfig:Go,create:Ko}=Bo,Jo="X-Auth-Transport",Xo="cookie",Zo=()=>{try{return localStorage.getItem(Ht.AUTH_TOKEN)}catch{return null}},es=(e={})=>{const t={[Jo]:Xo,...e},r=Zo();return r&&(t.Authorization=`Bearer ${r}`),t},ts=()=>{localStorage.removeItem(Ht.AUTH_TOKEN),localStorage.removeItem(Ht.USER_DATA),window.location.href="/login"},rs=async(e,t={})=>{try{const n=await fetch(e,{credentials:"same-origin",...t,headers:es({"Content-Type":"application/json",...t.headers})});return 401===(r=n.status)||403===r?void ts():n}catch(n){throw n}var r};const ns=Bo.create({baseURL:`${window.location.protocol}//${window.location.host}/api`,timeout:1e4,withCredentials:!0,headers:{"Content-Type":"application/json",[Jo]:Xo}});ns.interceptors.request.use(e=>{const t=Zo();return t&&(e.headers.Authorization=`Bearer ${t}`),e},e=>Promise.reject(e)),ns.interceptors.response.use(e=>e,e=>("ERR_NETWORK"===e.code||"ERR_CONNECTION_REFUSED"===e.code?e.userMessage="Ошибка сети. Проверьте подключение к Интернету.":401===e.response?.status?(localStorage.removeItem(Ht.AUTH_TOKEN),localStorage.removeItem(Ht.USER_DATA),e.userMessage="СессиÑ
172 истекла. Пожалуйста, войдите в систему снова.",e.config?.skipAuthRedirect||window.location.pathname.includes("/login")||setTimeout(()=>{window.location.href="/login?reason=session_expired"},1e3)):403===e.response?.status?e.userMessage="Недостаточно прав для выполнения этого действия.":e.response?.status>=500?e.userMessage="Ошибка сервера. Попробуйте позже.":400===e.response?.status?e.userMessage=e.response.data?.message||"Некорректные данные. Проверьте введённую информацию.":404===e.response?.status?e.userMessage="Запрашиваемые данные не найдены.":e.userMessage="Произошла ошибка. Попробуйте позже.",Promise.reject(e)));const os=e=>{e&&localStorage.setItem(Ht.USER_DATA,JSON.stringify(e))},ss=()=>{localStorage.removeItem(Ht.AUTH_TOKEN),localStorage.removeItem(Ht.USER_DATA)},is=T(e=>({isAuthenticated:!1,user:null,isLoading:!1,error:null,login:async t=>{e({isLoading:!0,error:null});try{const r=(await ns.post("/auth/login",t)).data;if(!r.success)throw new Error(r.message||"Login failed");return os(r.user),e({isAuthenticated:!0,user:r.user,isLoading:!1,error:null}),r}catch(r){throw e({isLoading:!1,error:r.response?.data?.message||r.message}),r}},register:async t=>{e({isLoading:!0,error:null});try{const r=(await ns.post("/auth/register",t)).data;if(!r.success)throw new Error(r.message||"Registration failed");return e({isLoading:!1,error:null}),r}catch(r){throw e({isLoading:!1,error:r.response?.data?.message||r.message}),r}},loginWithTelegram:async t=>{e({isLoading:!0,error:null});try{const r=(await ns.post("/auth/telegram",t)).data;if(!r.success)throw new Error(r.message||"Telegram login failed");if(!r.user)throw new Error("No user data in Telegram login response");return os(r.user),e({isAuthenticated:!0,user:r.user,isLoading:!1,error:null}),r}catch(r){throw e({isLoading:!1,error:r.response?.data?.message||r.message}),r}},logout:async()=>{ss(),e({isAuthenticated:!1,user:null,error:null});try{await ns.post("/auth/logout",null,{skipAuthRedirect:!0})}catch{}},loadFromStorage:async()=>{const t=(()=>{try{const e=localStorage.getItem(Ht.USER_DATA);return e?JSON.parse(e):null}catch{return null}})(),r=!!localStorage.getItem(Ht.AUTH_TOKEN);if(!t&&!r)return e({isAuthenticated:!1,user:null,error:null}),!1;t&&e({isAuthenticated:!0,user:t,error:null});try{const{data:t}=await ns.get("/auth/session",{skipAuthRedirect:!0});if(!t?.authenticated)throw new Error("not authenticated");return localStorage.removeItem(Ht.AUTH_TOKEN),os(t.user),e({isAuthenticated:!0,user:t.user,error:null}),!0}catch(n){return 401===n.response?.status?(ss(),e({isAuthenticated:!1,user:null,error:null}),!1):!!t}},resetPassword:async t=>{e({isLoading:!0,error:null});try{return await ns.post("/auth/reset-password",{email:t}),e({isLoading:!1}),!0}catch(r){throw e({isLoading:!1,error:r.message}),r}},updateProfile:async t=>{e({isLoading:!0,error:null});try{const r=(await ns.put("/user/profile",t)).data;return os(r),e({user:r,isLoading:!1,error:null}),r}catch(r){throw e({isLoading:!1,error:r.message}),r}},linkTelegramAccount:async t=>{e({isLoading:!0,error:null});try{const r=(await ns.post("/user/link-telegram",{linkingCode:t})).data;return os(r),e({user:r,isLoading:!1,error:null}),r}catch(r){throw e({isLoading:!1,error:r.message}),r}},generateLinkingCode:async t=>{e({isLoading:!0,error:null});try{const r=(await ns.post("/auth/generate-linking-code",{userId:t})).data;return e({isLoading:!1}),r}catch(r){throw e({isLoading:!1,error:r.message}),r}},linkAccounts:async t=>{e({isLoading:!0,error:null});try{const r=(await ns.post("/auth/link",t)).data;return r.user&&(os(r.user),e({user:r.user})),e({isLoading:!1}),r}catch(r){throw e({isLoading:!1,error:r.message}),r}},authViaTelegramWebApp:async t=>{e({isLoading:!0,error:null});try{const r=(await ns.post("/auth/telegram-webapp",{initData:t})).data;if(!r.success)throw new Error(r.message||"Mini App auth failed");return os(r.user),e({isAuthenticated:!0,user:r.user,isLoading:!1,error:null}),r}catch(r){throw e({isLoading:!1,error:r.response?.data?.message||r.message}),r}},clearError:()=>{e({error:null})},setAuthData:t=>{const{user:r}=t||{};r&&(os(r),e({isAuthenticated:!0,user:r,error:null,isLoading:!1}))}})),as=T((e,t)=>
172({isMobileMenuOpen:!1,currentLanguage:"ru",theme:"light",activeDashboardTab:Qt.OVERVIEW,notifications:[],isLoading:!1,loadingMessage:"",modals:{login:!1,register:!1,resetPassword:!1,keyDetails:!1,planUpgrade:!1,accountLinking:!1},toast:null,sidebarCollapsed:window.innerWidth<1024,toggleMobileMenu:()=>{e(e=>({isMobileMenuOpen:!e.isMobileMenuOpen}))},closeMobileMenu:()=>{e({isMobileMenuOpen:!1})},setLanguage:t=>{e({currentLanguage:t}),localStorage.setItem(Ht.LANGUAGE,t)},toggleTheme:()=>{e(e=>{const t="light"===e.theme?"dark":"light";return localStorage.setItem("bbq_theme",t),{theme:t}})},setActiveDashboardTab:t=>{e({activeDashboardTab:t})},addNotification:t=>{const r={id:Date.now().toString(),timestamp:new Date,read:!1,...t};e(e=>({notifications:[r,...e.notifications]}))},markNotificationAsRead:t=>{e(e=>({notifications:e.notifications.map(e=>e.id===t?{...e,read:!0}:e)}))},removeNotification:t=>{e(e=>({notifications:e.notifications.filter(e=>e.id!==t)}))},clearAllNotifications:()=>{e({notifications:[]})},getUnreadNotificationsCount:()=>{const{notifications:e}=t();return e.filter(e=>!e.read).length},setLoading:(t,r="")=>{e({isLoading:t,loadingMessage:r})},openModal:t=>{e(e=>({modals:{...e.modals,[t]:!0}}))},closeModal:t=>{e(e=>({modals:{...e.modals,[t]:!1}}))},closeAllModals:()=>{e(e=>({modals:Object.keys(e.modals).reduce((e,t)=>(e[t]=!1,e),{})}))},showToast:r=>{e({toast:{id:Date.now(),...r}});const n=r.duration||5e3;setTimeout(()=>{t().hideToast()},n)},hideToast:()=>{e({toast:null})},toggleSidebar:()=>{e(e=>({sidebarCollapsed:!e.sidebarCollapsed}))},loadFromStorage:()=>{try{const t=localStorage.getItem(Ht.LANGUAGE),r=localStorage.getItem("bbq_theme");if(t&&Ft.find(e=>e.code===t))e({currentLanguage:t});else{const t=navigator.language.split("-")[0],r=Ft.find(e=>e.code===t);r&&e({currentLanguage:r.code})}r&&e({theme:r})}catch(t){}},isModalOpen:e=>{const{modals:r}=t();return r[e]||!1},getLanguageByCode:e=>Ft.find(t=>t.code===e)})),ls=e=>ns.get(`/subscriptions/user/${e}`),cs=e=>ns.get(`/subscriptions/user/${e}/active`),ds=e=>ns.post("/subscriptions",e),us=(e,t)=>ns.post(`/subscriptions/${e}/renew`,t),ps=e=>ns.get(`/payments/${e}/status`),ms=e=>ns.post("/payments/yoomoney/create",e),hs=e=>ns.get(`/payments/yoomoney/${e}/status`),fs=()=>ns.get("/config/tariff-plans"),bs=e=>{const t=Number(e)||1;return 1===t?"1month":`${t}months`},gs=(e,t)=>{return r=e?.[bs(t)],Math.round((Number(r)||0)/100);var r},ys=Object.freeze({STARTER:"🚀",COMFORT:"🛋",MAXIMUM:"🌟",FRIENDS_PACK:"👥",FAMILY_PACK:"👨‍👩‍👧‍👦",MAX_COMFORT:"🏆",TEST_WEEK:"🎁",PROMO:"🎉",ADMIN_CUSTOM:"👨‍💻"}),_s=e=>ys[e]||"📦",xs=()=>{const[e,t]=i.useState([]),[r,n]=i.useState(!0),[o,s]=i.useState(null),[a,l]=i.useState(!1);return i.useEffect(()=>{(async()=>{try{n(!0),s(null);const e=await fs();if(!(e.data&&e.data.success&&e.data.plans))throw new Error("Invalid API response format");{const r=e.data.plans.map(e=>{const t="MAX_COMFORT"===e.name;const r=(e=>{const t=String(e||"").toLowerCase().replace(/_/g,"-");return{"friends-pack":"friends","family-pack":"family","test-week":"trial"}[t]||t})(e.name);return{id:r,nameKey:`pricing.plans.${r}`,icon:_s(e.name),devices:e.deviceCount,prices:{1:e.pricing["1month"],6:e.pricing["6months"],12:e.pricing["12months"]},bonusDays:{6:e.bonusDays["6months"],12:e.bonusDays["12months"]},popular:e.popular||!1,ultra:t,displayName:e.displayName,description:e.description,features:e.features,_apiData:e}});t(r),l(!0)}}catch(e){s(e.message),l(!1),B(async()=>{const{PRICING_PLANS:e}=await Promise.resolve().then(()=>zt);return{PRICING_PLANS:e}},void 0).then(({PRICING_PLANS:e})=>{t(e)}).catch(e=>{t([])})}finally{n(!1)}})()},[]),{plans:e,loading:r,error:o,useApiData:a}},vs=(e,t)=>{return r=e?._apiData?.bonusDays,n=t,Number(r?.[bs(n)])||0;var r,n},ws=(e,t)=>{if(!e)return 0;if(Ps(e)||"admin-custom"===e.id)return 0;if(e._apiData)return((e,t)=>gs(e?._apiData?.pricing,t))(e,t);{if(!e.prices)return 0;let r=void 0!==e.prices[t]?Math.round(e.prices[t]*t):void 0;if(void 0===r){const n=e.prices[It.MONTHLY]||e.prices[1];if(n)r=Math.round(n*t);else{const n=[12,6,1];for(const o of n)if(void 0!==e.prices[o]){r=Math.round(e.prices[o]*t);break}}}return r||0}},Ns=(e,t)=>{if(!e)return{price:0,totalDays:0,bonusDays:0,pricePerMonth:0};if(Ps(e))return{price:0,totalDays:7,bonusDays:0,pricePerMonth:0};if("admin-custom"===e.id)return{price:0,totalDays:30,bonusDays:0,pricePerMonth:0};const r=ws(e,t),n=((e,t)=>e._apiData?vs(e,t):e.bonusDays&&e.bonusDays[t]||0)(e,t);return{price:r,totalDays:30*t+n,bonusDays:n,pricePerMonth:t>0?Math.round(r/t):0}},Ps=e=>"trial"===e.id||"test-week"===e.id||e.id.includes("test")||e.trialDays>0,Ss=(e,t=!1)=>e.filter(e=>!(!t&&Ps(e))&&(!e.id.includes("promo")&&(!e.id.includes("extension")&&"admin-custom"!==e.id))),ks=T((e,t)=>
172({selectedPlan:null,selectedProtocol:Dt.VLESS,selectedPeriod:It.MONTHLY,items:[],isLoading:!1,error:null,setSelectedPlan:r=>{e({selectedPlan:r}),t().saveToStorage()},setSelectedProtocol:r=>{e({selectedProtocol:r}),t().saveToStorage()},setSelectedPeriod:r=>{e({selectedPeriod:r}),t().saveToStorage()},addToCart:(r,n,o)=>{const{items:s}=t(),i=s.find(e=>e.plan.id===r.id&&(e.plan.devices||1)===(r.devices||1)&&e.protocol===n&&e.period===o);if(i)e({items:s.map(e=>e.id===i.id?{...e,quantity:e.quantity+1}:e)});else{const t={id:`${r.id}-${r.devices||1}-${n}-${o}-${Date.now()}`,plan:r,protocol:n,period:o,quantity:1,totalPrice:Ns(r,o)};e({items:[...s,t]})}t().items;t().saveToStorage()},removeFromCart:r=>{const{items:n}=t();e({items:n.filter(e=>e.id!==r)}),t().saveToStorage()},updateQuantity:(r,n)=>{if(n<=0)return void t().removeFromCart(r);const{items:o}=t();e({items:o.map(e=>e.id===r?{...e,quantity:n}:e)}),t().saveToStorage()},clearCart:()=>{e({items:[]}),localStorage.removeItem(Ht.CART)},getCartTotal:()=>{const{items:e}=t();return e.reduce((e,t)=>e+t.totalPrice.price*t.quantity,0)},getCartItemsCount:()=>{const{items:e}=t();return e.reduce((e,t)=>e+t.quantity,0)},proceedToCheckout:async()=>{e({isLoading:!0,error:null});try{const{items:r}=t();if(0===r.length)throw new Error("Cart is empty");const n={items:r.map(e=>({planId:e.plan.id,protocol:e.protocol,period:e.period,quantity:e.quantity,price:e.totalPrice.price})),total:t().getCartTotal(),timestamp:(new Date).toISOString()};return e({isLoading:!1}),n}catch(r){throw e({isLoading:!1,error:r.message}),r}},saveToStorage:()=>{const e=t(),r={selectedPlan:e.selectedPlan,selectedProtocol:e.selectedProtocol,selectedPeriod:e.selectedPeriod,items:e.items};localStorage.setItem(Ht.CART,JSON.stringify(r))},loadFromStorage:()=>{try{const t=localStorage.getItem(Ht.CART);if(t){const r=JSON.parse(t);r.items&&r.items.length>0&&r.items.forEach((e,t)=>{}),e({selectedPlan:r.selectedPlan||null,selectedProtocol:r.selectedProtocol||Dt.VLESS,selectedPeriod:r.selectedPeriod||It.MONTHLY,items:r.items||[]})}}catch(t){localStorage.removeItem(Ht.CART)}},clearError:()=>{e({error:null})}})),Ts=["/blog","/vpn-blocked","/vpn-russia-2026","/vpn-youtube","/vpn-discord","/vpn-games","/vpn-telegram","/vpn-access"];function Vs(e){return!!e&&Ts.some(t=>e===t||e.startsWith(t+"/"))}function Es(e){return(e||[]).filter(e=>!Vs(e&&e.to))}const As=.011,Os=(e,t="ru")=>{if("en"===t){return`$${r=e,Math.round(r*As*100)/100}`}var r;return`${e} ₽`},js=()=>{const{i18n:e}=l(),t=e.language||"ru";return{formatPrice:e=>Os(e,t),formatPriceWithPeriod:(e,r)=>((e,t,r="ru")=>{const n=Os(e,r);if("en"===r)return`${n}${{month:"/month",year:"/year",week:"/week",day:"/day"}[t]||""}`;return`${n}${{month:"/мес",year:"/год",week:"/нед",day:"/день"}[t]||""}`})(e,r,t),getCurrencySymbol:()=>((e="ru")=>"en"===e?"$":"₽")(t),getCurrencyName:()=>((e="ru")=>"en"===e?"USD":"RUB")(t),isUSD:()=>"en"===t,currentLanguage:t}},Bs=()=>{const{t:t}=l(),{formatPrice:r}=js(),n=d(),[o,s]=i.useState(!1),{items:a,getCartTotal:c,getCartItemsCount:u,removeFromCart:p,clearCart:m}=ks(),h=a.length>0,f=u(),b=c();return e.jsxs("div",{className:"relative",children:[e.jsxs("button",{onClick:()=>s(!o),"aria-label":"Корзина",className:"relative grid h-10 w-10 place-items-center rounded-xl border border-white/10 bg-white/5 text-haze transition-colors hover:border-white/25 hover:text-white",children:[e.jsx(y,{size:19}),h&&e.jsx("span",{className:"absolute -top-1.5 -right-1.5 flex h-5 w-5 items-center justify-center rounded-full bg-flame text-xs font-semibold text-white",children:f})]}),e.jsx(k,{children:o&&e.jsx(S.div,{initial:{opacity:0,y:-10,scale:.95},animate:{opacity:1,y:0,scale:1},exit:{opacity:0,y:-10,scale:.95},transition:{duration:.2},className:"absolute right-0 top-full mt-2 w-80 bg-white rounded-lg shadow-xl border border-gray-200 z-50",children:e.jsxs("div",{className:"p-4",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsx("h3",{className:"text-lg font-semibold text-gray-900",children:t("cart.title")}),e.jsx("button",{onClick:()=>s(!1),className:"text-gray-400 hover:text-gray-600",children:e.jsx(_,{size:20})})]}),h?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"space-y-3 mb-4",children:a.map(n=>e.jsxs("div",{className:"flex items-center justify-between p-3 bg-gray-50 rounded-lg",children:[e.jsxs("div",{className:"flex-1",children:[e.jsx("h4",{className:"font-medium text-gray-900",children:n.plan.name}),e.jsxs("p",{className:"text-sm text-gray-600",children:[n.period," мес • ",n.protocol.toUpperCase()]}),n.quantity>1&&e.jsx("p",{className:"text-xs text-gray-500",children:t("cart.quantity",{count:n.quantity})})]}),e.jsxs("div",{className:"text-right",children:[e.jsx("p",{className:"font-semibold text-gray-900",children:r(n.totalPrice.price*n.quantity)}),n.period>1&&e.jsx("p",{className:"text-xs text-green-600",children:t("pricing.save",{percentage:Math.round(100*(1-(6===n.period?.9:.8)))})}),e.jsx("button",{onClick:()=>p(n.id),className:"text-red-500 hover:text-red-700 text-xs mt-1",children:t("cart.remove")})]})]},n.id))}),e.jsxs("div",{className:"border-t pt-3 space-y-2",children:[e.jsxs("div",{className:"flex justify-between text-sm",children:[e.jsx("span",{className:"text-gray-600",children:t("cart.subtotal")}),e.jsx("span",{className:"text-gray-900",children:r(b)})]}),e.jsxs("div",{className:"flex justify-between font-semibold text-lg border-t pt-2",children:[e.jsx("span",{className:"text-gray-900",children:t("cart.total")}),e.jsx("span",{className:"text-bbq-red",children:r(b)})]})]}),e.jsxs("div",{className:"flex space-x-2 mt-4",children:[e.jsx(Rt,{onClick:()=>{s(!1),n(Mt.CHECKOUT)},variant:"primary",size:"sm",className:"flex-1",children:t("cart.checkout")}),e.jsx(Rt,{onClick:()=>{m(),s(!1)},variant:"secondary",size:"sm",className:"px-3",children:e.jsx(x,{size:16})})]})]}):e.jsxs("div",{className:"text-center py-8",children:[e.jsx(y,{size:48,className:"mx-auto text-gray-300 mb-4"}),e.jsx("p",{className:"text-gray-500 mb-4",children:t("cart.empty")}),e.jsx(Rt,{onClick:()=>{s(!1),n(Mt.PRICING)},variant:"primary",size:"sm",children:t("cart.browse_plans")})]})]})})}),o&&e.jsx(S.div,{initial:{opacity:0}
172,animate:{opacity:1},exit:{opacity:0},onClick:()=>s(!1),className:"fixed inset-0 bg-black bg-opacity-25 z-40"})]})},Rs="bbq_bot_link_cache_v1";function Ls(e="track_site_trl"){const t=`https://t.me/BBQ_VPN_BOT?start=${e}`,[r,n]=i.useState(t);return i.useEffect(()=>{let e=!1;return(async()=>{try{const t=new URLSearchParams(window.location.search),r=t.get("utm_source");if(!r)return;const o={utm_source:r,utm_medium:t.get("utm_medium")||void 0,utm_campaign:t.get("utm_campaign")||void 0,utm_content:t.get("utm_content")||void 0,utm_term:t.get("utm_term")||void 0},s=JSON.stringify(o);try{const t=sessionStorage.getItem(Rs);if(t){const{key:r,url:o,ts:i}=JSON.parse(t);if(r===s&&Date.now()-i<18e5)return void(e||n(o))}}catch{}const i=await fetch(`${Lt}/api/utm/short-code`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)});if(!i.ok)return;const a=await i.json();if(e)return;if(a.url){n(a.url);try{sessionStorage.setItem(Rs,JSON.stringify({key:s,url:a.url,ts:Date.now()}))}catch{}}}catch(it){}})(),()=>{e=!0}},[e,t]),r}const Cs=(e,t="ru")=>"en"===t?1===e?`${e} device`:`${e} devices`:((e,t,r,n)=>{const o=Math.abs(e),s=o%10,i=o%100;return i>=11&&i<=19?`${e} ${n}`:1===s?`${e} ${t}`:s>=2&&s<=4?`${e} ${r}`:`${e} ${n}`})(e,"устройство","устройства","устройств"),qs=e=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e),Ds=e=>e.length>=8,Is=async e=>{try{return await navigator.clipboard.writeText(e),!0}catch(t){const r=document.createElement("textarea");return r.value=e,document.body.appendChild(r),r.select(),document.execCommand("copy"),document.body.removeChild(r),!0}},Us=e=>e?e.firstName?e.lastName?`${e.firstName} ${e.lastName}`:e.firstName:e.name&&""!==e.name.trim()?e.name:e.username&&""!==e.username.trim()?e.username:e.email&&""!==e.email.trim()?e.email.split("@")[0]:"User":"User",Ms=({className:t=""})=>e.jsx("span",{className:g("grid place-items-center rounded-xl text-white",t),style:{background:"linear-gradient(135deg, #dc2626, #ea580c 55%, #f59e0b)",boxShadow:"0 10px 26px -10px rgba(234,88,12,.8)"},children:e.jsx("svg",{width:"58%",height:"58%",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:e.jsx("path",{d:"M12 3c.5 3-2 4.5-2 7.5a2 2 0 004 0c0-1 .5-1.8 1-2.5 2 2 3 4 3 6.2A6 6 0 016 14.2C6 10 9.5 7 12 3z"})})}),Qs=()=>{const{t:t,i18n:r}=l(),n=u(),o=Ls("track_site_trl"),{isAuthenticated:s,user:a,logout:c}=is(),{isMobileMenuOpen:d,toggleMobileMenu:m,closeMobileMenu:h,currentLanguage:f,setLanguage:b}=as(),{getCartItemsCount:x}=ks(),T=x();i.useEffect(()=>{h()},[n.pathname,h]);const V=Es([{to:Mt.PRICING,label:"en"===f?"Pricing":"Тарифы"},{to:Mt.SETUP,label:"en"===f?"How to connect":"Как подключиться"},{to:Mt.SUPPORT,label:t("nav.support")},{to:Mt.ABOUT,label:"en"===f?"About":"О сервисе"}]),E=e=>e===Mt.HOME?n.pathname===e:n.pathname.startsWith(e),A=e=>{b(e),r.changeLanguage(e)},O=()=>{c(),h()},j="absolute top-full right-0 mt-2 rounded-2xl border border-white/10 bg-ink-raise/95 p-1.5 shadow-2xl backdrop-blur-xl opacity-0 invisible group-hover:opacity-100 group-hover:visible transition-all duration-200 z-50",B="flex w-full items-center gap-2 rounded-xl px-3.5 py-2.5 text-left text-[18px] text-haze transition-colors hover:bg-white/5 hover:text-white";return e.jsxs("header",{className:"fixed left-0 right-0 top-0 z-50 border-b border-white/10 bg-ink/75 text-white backdrop-blur-xl",children:[e.jsx("div",{className:"mx-auto max-w-[1200px] px-[clamp(16px,4vw,40px)]",children:e.jsxs("div",{className:"flex h-16 items-center justify-between lg:h-20",children:[e.jsxs(p,{to:Mt.HOME,className:"flex items-center gap-3",children:[e.jsx(Ms,{className:"h-9 w-9"}),e.jsxs("span",{className:"font-display text-[22px] font-extrabold tracking-tight",children:["BBQ ",e.jsx("span",{className:"ui-fire-text",children:"VPN"})]})]}),e.jsx("nav",{className:"hidden items-center gap-8 lg:flex",children:V.map(t=>e.jsx(p,{to:t.to,className:g("text-[18.5px] font-medium transition-colors",E(t.to)?"text-white":"text-haze hover:text-white"),children:t.label},t.to))}),e.jsxs("div",{className:"hidden items-center gap-3 lg:flex",children:[e.jsxs("div",{className:"group relative",children:[e.jsx("button",{type:"button",title:t("nav.language"),className:"h-10 rounded-xl border border-white/10 bg-white/5 px-3 font-mono text-[16.5px] uppercase text-haze transition-colors hover:text-white",children:f}),e.jsx("div",{className:g(j,"w-40"),children:Ft.map(t=>e.jsxs("button",{type:"button",onClick:()=>A(t.code),className:g(B,f===t.code&&"text-white"),children:[e.jsx("span",{children:t.flag}),e.jsx("span",{children:t.name})]},t.code))})]}),e.jsx(Bs,{}),s?e.jsxs("div",{className:"group relative",children:[e.jsxs("button",{type:"button",className:"flex h-10 items-center gap-2 rounded-xl border border-white/10 bg-white/5 px-3.5 text-[18px] text-haze transition-colors hover:text-white",children:[e.jsx(v,{size:17}),e.jsx("span",{className:"max-w-[140px] truncate",children:Us(a)})]}),e.jsxs("div",{className:g(j,"w-52"),children:[e.jsxs(p,{to:Mt.DASHBOARD,className:B,children:[e.jsx(w,{size:16}),t("nav.dashboard")]}),e.jsxs("button",{type:"button",onClick:O,className:B,children:[e.jsx(N,{size:16}),t("nav.logout")]})]})]}):e.jsxs(e.Fragment,{children:[e.jsx(p,{to:Mt.LOGIN,className:"px-2 text-[18.5px] font-medium text-haze transition-colors hover:text-white",children:t("auth.login")}),e.jsx("a",{href:o,target:"_blank",rel:"noopener noreferrer",className:"ui-btn px-5 py-2.5 text-[18.5px]",children:"en"===f?"Try free":"Попробовать"})]})]}),e.jsxs("div",{className:"flex items-center gap-2 lg:hidden",children:[e.jsxs(p,{to:Mt.CHECKOUT,"aria-label":t("nav.cart"),className:"relative grid h-10 w-10 place-items-center rounded-xl border border-white/10 bg-white/5 text-haze",children:[e.jsx(y,{size:19}),T>0&&e.jsx("span",{className:"absolute -right-1.5 -top-1.5 flex h-5 w-5 items-center justify-center rounded-full bg-flame text-xs font-semibold text-white",children:T})]}),e.jsxs(p,{to:s?Mt.DASHBOARD:Mt.LOGIN,className:"flex h-10 items-center gap-1.5 rounded-xl border border-white/10 bg-white/5 px-3 text-[17px] font-semibold text-white",children:[e.jsx(v,{size:17}),e.jsx("span",{className:"max-w-[72px] truncate",children:t(s?"nav.dashboard":"auth.login")})]}),e.jsx("button",{type:"button",onClick:m,"aria-label":d?"Закрыть меню":"Открыть меню",className:"grid h-10 w-10 place-items-center rounded-xl border border-white/10 bg-white/5 text-white",children:d?e.jsx(_,{size:20}):e.jsx(P,{size:20})})]})]})}),e.jsx(k,{children:d&&e.jsx(S.div,{className:"border-t border-white/10 bg-ink/95 backdrop-blur-xl lg:hidden",initial:{opacity:0,height:0}
172,animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0},transition:{duration:.2},children:e.jsxs("div",{className:"space-y-6 px-[clamp(16px,4vw,40px)] py-6",children:[e.jsx("nav",{className:"grid gap-1",children:V.map(t=>e.jsx(p,{to:t.to,onClick:h,className:g("rounded-xl px-3 py-3 text-[20px] font-medium",E(t.to)?"bg-white/5 text-white":"text-haze"),children:t.label},t.to))}),e.jsx("div",{className:"flex gap-2 border-t border-white/10 pt-4",children:Ft.map(t=>e.jsxs("button",{type:"button",onClick:()=>A(t.code),className:g("flex items-center gap-2 rounded-xl border px-3.5 py-2 text-[16.5px]",f===t.code?"border-amber/50 bg-amber/10 text-white":"border-white/10 text-haze"),children:[e.jsx("span",{children:t.flag}),e.jsx("span",{children:t.name})]},t.code))}),e.jsx("div",{className:"grid gap-2 border-t border-white/10 pt-4",children:s?e.jsxs(e.Fragment,{children:[e.jsxs(p,{to:Mt.DASHBOARD,onClick:h,className:"ui-btn-quiet",children:[e.jsx(w,{size:16}),t("nav.dashboard")]}),e.jsxs("button",{type:"button",onClick:O,className:"ui-btn-quiet",children:[e.jsx(N,{size:16}),t("nav.logout")]})]}):e.jsxs(e.Fragment,{children:[e.jsx("a",{href:o,target:"_blank",rel:"noopener noreferrer",className:"ui-btn",children:"en"===f?"Try free":"Попробовать бесплатно"}),e.jsx(p,{to:Mt.REGISTER,onClick:h,className:"ui-btn-quiet",children:t("auth.register")})]})})]})})})]})},Fs=e=>()=>{window.ym&&window.ym(106270385,"reachGoal",e)},Hs=()=>{const{t:t,i18n:r}=l(),n=Ls("track_site_footer"),o="en"===r.language,s=(new Date).getFullYear(),i=Es([{label:t("footer.pricing"),to:Mt.PRICING},{label:o?"Setup":"Установка",to:Mt.SETUP},{label:o?"Telegram proxy":"Прокси для Telegram",to:"/proxy-telegram"},{label:o?"Encryption":"Шифрование",to:"/vpn-encryption"},{label:o?"Speed":"Скорость",to:"/vpn-speed"},{label:o?"Servers":"Серверы",to:"/vpn-servers"},{label:o?"Devices":"Устройства",to:"/vpn-devices"},{label:o?"Guarantee":"Гарантия",to:"/vpn-guarantee"},{label:o?"Partner program":"Партнёрам",to:Mt.PARTNER},{label:t("footer.about"),to:Mt.ABOUT},{label:o?"All links":"Все ссылки",to:"/links"}]),a=Es([{label:t("footer.privacy"),to:Mt.PRIVACY_POLICY},{label:t("footer.terms"),to:Mt.TERMS},{label:t("footer.refund"),to:Mt.REFUND},{label:t("footer.cookies"),to:Mt.COOKIES}]),c="text-[18px] text-smoke transition-colors hover:text-white";return e.jsx("footer",{className:"relative border-t border-white/10 bg-ink text-white",children:e.jsxs("div",{className:"mx-auto max-w-[1200px] px-[clamp(16px,4vw,40px)] py-10",children:[e.jsxs("div",{className:"flex flex-col gap-6 lg:flex-row lg:items-center lg:justify-between",children:[e.jsxs(p,{to:Mt.HOME,className:"flex items-center gap-3",children:[e.jsx(Ms,{className:"h-8 w-8"}),e.jsxs("span",{className:"font-display text-[20px] font-extrabold",children:["BBQ ",e.jsx("span",{className:"ui-fire-text",children:"VPN"})]})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-x-6 gap-y-3",children:[e.jsx(p,{to:Mt.SUPPORT,className:c,children:t("footer.help_center")}),e.jsx("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:c,onClick:Fs("telegram_bot_footer_click"),children:o?"Telegram bot":"Telegram-бот"}),e.jsx("a",{href:"https://t.me/+kYsAXRZTw-cxMjdi",target:"_blank",rel:"noopener noreferrer",className:c,onClick:Fs("telegram_contact_click"),children:o?"Telegram group":"Группа в Telegram"})]})]}),e.jsx("nav",{"aria-label":o?"Site sections":"Разделы сайта",className:"mt-8 flex flex-wrap gap-x-6 gap-y-2.5 border-t border-white/10 pt-8",children:i.map(t=>e.jsx(p,{to:t.to,className:c,children:t.label},t.to))}),e.jsxs("div",{className:"mt-6 flex flex-col gap-3 text-[17px] text-smoke lg:flex-row lg:items-center lg:justify-between",children:[e.jsx("div",{className:"flex flex-wrap gap-x-5 gap-y-2",children:a.map(t=>e.jsx(p,{to:t.to,className:"transition-colors hover:text-white",children:t.label},t.to))}),e.jsxs("p",{children:["© ",s," ",Ct,". ",t("footer.rights_reserved")]})]})]})})},zs="bbq_cookie_consent",$s="all",Ws="necessary",Ys=()=>{try{localStorage.removeItem(zs)}catch{}},Gs=()=>{const{t:t}=l(),[r,n]=i.useState(()=>(()=>{try{const e=localStorage.getItem(zs);return e===$s||e===Ws?e:null}catch{return null}})());if(r)return null;const o=e=>{(e=>{try{localStorage.setItem(zs,e)}catch{}e===$s&&"undefined"!=typeof window&&window.__bbqAnalytics?.load&&window.__bbqAnalytics.load()})(e),n(e)};return e.jsx("div",{role:"dialog","aria-live":"polite","aria-label":t("footer.cookie_banner"),"data-testid":"cookie-consent",className:"fixed inset-x-0 bottom-0 z-50 p-3 sm:p-4",children:e.jsxs("div",{className:"mx-auto max-w-4xl rounded-2xl bg-gray-900 text-gray-100 shadow-2xl p-4 sm:p-5 flex flex-col sm:flex-row sm:items-center gap-3 sm:gap-5",children:[e.jsxs("p",{className:"text-sm leading-relaxed flex-1",children:["🍪 ",t("footer.cookie_banner")," ",e.jsx(p,{to:"/cookies",className:"underline text-orange-300 hover:text-orange-200",children:t("footer.cookie_more")})]}),e.jsxs("div",{className:"flex gap-2 shrink-0",children:[e.jsx("button",{type:"button",onClick:()=>o(Ws),className:"px-4 py-2 text-sm rounded-lg border border-gray-600 hover:bg-gray-800 transition-colors",children:t("footer.cookie_necessary")}),e.jsx("button",{type:"button",onClick:()=>o($s),className:"px-4 py-2 text-sm rounded-lg bg-bbq-red hover:bg-bbq-dark-red text-white font-semibold transition-colors",children:t("footer.cookie_accept")})]})]})})},Ks=Array.from({length:28},(e,t)=>({left:37*t%100+"%",delay:`-${7*t%23}s`,dur:13+5*t%11+"s",size:2+t%4})),Js=(e,t,r)=>e+(t-e)*r,Xs=()=>{const t=i.useRef(null);return(e=>{i.useEffect(()=>{const t=e.current;if(!t||window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const r=window.matchMedia("(pointer: fine)").matches,n={x:0,y:0,s:0},o={x:0,y:0,s:0};let s=0;const i=()=>{o.x=Js(o.x,n.x,.05),o.y=Js(o.y,n.y,.05),o.s=Js(o.s,n.s,.1),t.style.setProperty("--mx",o.x.toFixed(4)),t.style.setProperty("--my",o.y.toFixed(4)),t.style.setProperty("--sy",o.s.toFixed(4));const e=Math.abs(o.x-n.x)+Math.abs(o.y-n.y)+Math.abs(o.s-n.s);s=e<.001?0:requestAnimationFrame(i)},a=()=>{s||(s=requestAnimationFrame(i))},l=e=>{n.x=e.clientX/window.innerWidth-.5,n.y=e.clientY/window.innerHeight-.5,a()},c=()=>{n.s=Math.min(window.scrollY/window.innerHeight,3),a()};return c(),r&&window.addEventListener("pointermove",l,{passive:!0}),window.addEventListener("scroll",c,{passive:!0}),()=>{cancelAnimationFrame(s),window.removeEventListener("pointermove",l),window.removeEventListener("scroll",c)}},[e])})(t),e.jsxs("div",{ref:t,"aria-hidden":"true",className:"bg-live pointer-events-none fixed inset-0 -z-10 overflow-hidden bg-ink",children:[e.jsx("div",{className:"bg-live__layer bg-live__layer--photo",children:e.jsx("div",{className:"bg-live__photo"})}),e.jsx("div",{className:"bg-live__shade"}),e.jsx("div",{className:"bg-live__tint"}),e.jsx("div",{className:"bg-live__layer bg-live__layer--rays",children:e.jsx("div",{className:"bg-live__rays"})}),e.jsx("div",{className:"bg-live__layer bg-live__layer--far",children:e.jsx("div",{className:"bg-live__smoke bg-live__smoke--far"})}),e.jsxs("div",{className:"bg-live__layer bg-live__layer--glow",children:[e.jsx("div",{className:"bg-live__glow bg-live__glow--a"}),e.jsx("div",{className:"bg-live__glow bg-live__glow--b"}),e.jsx("div",{className:"bg-live__glow bg-live__glow--c"})]}),e.jsx("div",{className:"bg-live__layer bg-live__layer--near",children:e.jsx("div",{className:"bg-live__smoke bg-live__smoke--near"})}),Ks.map((t,r)=>e.jsx("span",{className:"bg-live__ember",style:{left:t.left,width:t.size,height:t.size,animationDelay:t.delay,animationDuration:t.dur}},r)),e.jsx("div",{className:"bg-live__vignette"})]})},Zs=({}?.VITE_SITE_ORIGIN||"https://bbqpirat.com").replace(/\/$/,""),ei=({titleKey:t,descriptionKey:r,title:n,description:o,path:s="/",noindex:i=!1,faq:a,article:c,breadcrumbs:d,image:u})=>{const{t:p}=l(),m=n||p(t),h=o||p(r),f=`${Zs}${s}`,b=a&&a.length>0?{"@context":"https://schema.org","@type":"FAQPage",mainEntity:a.map(({q:e,a:t})=>
172({"@type":"Question",name:e,acceptedAnswer:{"@type":"Answer",text:t}}))}:null,g=c?{"@context":"https://schema.org","@type":"Article",headline:m,description:h,url:f,mainEntityOfPage:f,inLanguage:"ru",author:{"@type":c.author?.type||"Organization",name:c.author?.name||"BBQ VPN Team",url:c.author?.url||Zs},publisher:{"@type":"Organization",name:"BBQ VPN","@id":`${Zs}/#organization`,logo:{"@type":"ImageObject",url:`${Zs}/bbq-icon.svg`}},...c.datePublished&&{datePublished:c.datePublished},...c.dateModified&&{dateModified:c.dateModified},...c.section&&{articleSection:c.section},...u&&{image:[u]}}:null,y=d&&d.length>0?{"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:d.map((e,t)=>({"@type":"ListItem",position:t+1,name:e.name,item:e.url.startsWith("http")?e.url:`${Zs}${e.url}`}))}:null;return e.jsxs(je,{children:[e.jsx("title",{children:m}),e.jsx("meta",{name:"robots",content:i?"noindex, follow":"index, follow"}),e.jsx("meta",{name:"description",content:h}),e.jsx("link",{rel:"canonical",href:f}),e.jsx("meta",{property:"og:title",content:m}),e.jsx("meta",{property:"og:description",content:h}),e.jsx("meta",{property:"og:url",content:f}),e.jsx("meta",{property:"og:type",content:c?"article":"website"}),e.jsx("meta",{name:"twitter:title",content:m}),e.jsx("meta",{name:"twitter:description",content:h}),u&&e.jsx("meta",{property:"og:image",content:u}),u&&e.jsx("meta",{name:"twitter:image",content:u}),u&&e.jsx("meta",{name:"twitter:card",content:"summary_large_image"}),c?.datePublished&&e.jsx("meta",{property:"article:published_time",content:c.datePublished}),c?.dateModified&&e.jsx("meta",{property:"article:modified_time",content:c.dateModified}),b&&e.jsx("script",{type:"application/ld+json",children:JSON.stringify(b)}),g&&e.jsx("script",{type:"application/ld+json",children:JSON.stringify(g)}),y&&e.jsx("script",{type:"application/ld+json",children:JSON.stringify(y)})]})},ti={width:20,height:20,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"},ri=t=>e.jsx("svg",{...ti,...t,children:e.jsx("path",{d:"M5 12.5l4.5 4.5L19 7.5"})}),ni=t=>e.jsxs("svg",{...ti,...t,children:[e.jsx("path",{d:"M12 3v9"}),e.jsx("path",{d:"M6.3 6.8a8 8 0 1011.4 0"})]}),oi=[{code:"DE",name:"Германия",ms:34,active:!0},{code:"NL",name:"Нидерланды",ms:41},{code:"PL",name:"Польша",ms:29}],si=()=>{const{t:t}=l();return e.jsxs("figure",{className:"home-mock relative mx-auto w-full max-w-[400px]",children:[e.jsxs("div",{className:"ui-surface rounded-[28px] p-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"font-display text-[20px] font-bold tracking-tight",children:"BBQ VPN"}),e.jsxs("span",{className:"flex items-center gap-2 text-[16.5px] font-medium text-emerald-400",children:[e.jsx("span",{className:"home-mock__dot h-2 w-2 rounded-full bg-emerald-400"}),t("home2.mock.status")]})]}),e.jsxs("div",{className:"my-8 flex flex-col items-center",children:[e.jsx("div",{className:"home-mock__orb relative grid h-[124px] w-[124px] place-items-center rounded-full",children:e.jsx(ni,{width:44,height:44,className:"relative text-white"})}),e.jsx("div",{className:"mt-5 font-display text-[24px] font-bold",children:"Германия"}),e.jsx("div",{className:"mt-1 font-mono text-[16px] text-smoke",children:t("home2.mock.session")})]}),e.jsx("ul",{className:"grid gap-2",children:oi.map(t=>e.jsxs("li",{className:"flex items-center justify-between rounded-2xl border px-4 py-3 text-[18.5px] "+(t.active?"border-amber/40 bg-amber/10":"border-white/10 bg-white/[0.03]"),children:[e.jsxs("span",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"grid h-7 w-9 place-items-center rounded-lg bg-white/10 font-mono text-[11.5px]",children:t.code}),t.name]}),e.jsxs("span",{className:"font-mono text-[16.5px] text-smoke",children:[t.ms," мс"]})]},t.code))})]}),e.jsx("figcaption",{className:"mt-3 text-center text-[16.5px] text-smoke",children:t("home2.mock.note")})]})},ii=()=>{const{t:t}=l(),r=Ls("track_site_trl"),n=t("home2.trust",{returnObjects:!0});return e.jsx("section",{className:"relative",children:e.jsxs("div",{className:"mx-auto grid max-w-[1200px] items-center gap-14 px-[clamp(16px,4vw,40px)] pb-[clamp(56px,8vw,100px)] pt-[clamp(36px,6vw,72px)] lg:grid-cols-[1.1fr_0.9fr]",children:[e.jsxs("div",{className:"home-rise",children:[e.jsxs("span",{className:"ui-label mb-6 inline-flex items-center gap-3",children:[e.jsx("span",{className:"h-px w-7 bg-current opacity-60"}),t("home2.label")]}),e.jsxs("h1",{className:"mb-6 max-w-[14ch] font-display text-[clamp(46px,6.6vw,88px)] font-extrabold leading-[1.02] tracking-[-0.02em] text-balance",children:[t("home2.title_start")," ",e.jsx("span",{className:"ui-fire-text",children:t("home2.title_accent")})]}),e.jsx("p",{className:"mb-9 max-w-[46ch] text-[clamp(19px,1.7vw,23px)] leading-relaxed text-haze",children:t("home2.lead")}),e.jsxs("div",{className:"mb-8 flex flex-col gap-3 sm:flex-row",children:[e.jsx("a",{href:r,target:"_blank",rel:"noopener noreferrer",className:"ui-btn",children:t("home2.cta_primary")}),e.jsx(p,{to:Mt.PRICING,className:"ui-btn-quiet",children:t("home2.cta_secondary")})]}),e.jsx("ul",{className:"flex flex-wrap gap-2.5",children:Array.isArray(n)&&n.map(t=>e.jsxs("li",{className:"flex items-center gap-2.5 rounded-full border border-white/12 bg-ink/60 px-4 py-2.5 text-[16.5px] font-medium text-white backdrop-blur-md",children:[e.jsx("span",{className:"grid h-6 w-6 place-items-center rounded-full bg-amber/20 text-amber",children:e.jsx(ri,{width:13,height:13})}),t]},t))})]}),e.jsx(si,{})]})})},ai=()=>{const{t:t}=l(),r=[{value:"6 000+",label:t("home2.stats.users")},{value:"7",label:t("home2.stats.countries")},{value:"99.9%",label:t("home2.stats.uptime")},{value:t("home2.stats.price_from"),label:t("home2.stats.price_label")}];return e.jsx("section",{className:"border-y border-white/10 bg-white/[0.02]",children:e.jsx("dl",{className:"mx-auto grid max-w-[1200px] grid-cols-2 gap-y-8 px-[clamp(16px,4vw,40px)] py-9 lg:grid-cols-4",children:r.map(t=>e.jsxs("div",{children:[e.jsx("dt",{className:"sr-only",children:t.label}),e.jsx("dd",{className:"font-display text-[clamp(30px,3.4vw,42px)] font-extrabold leading-none tabular-nums",children:t.value}),e.jsx("dd",{className:"mt-2 text-[18.5px] text-smoke",children:t.label})]},t.label))})})},li=({label:t,values:r,current:n,onPick:o,render:s=String,badge:i,children:a})=>e.jsxs("div",{children:[e.jsx("div",{className:"ui-label mb-2",children:t}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[r.map(t=>{const r=t===n,a=i?.(t);return e.jsxs("button",{type:"button",onClick:()=>o(t),"aria-pressed":r,className:"rounded-xl border px-4 py-2.5 text-[19.5px] transition-colors "+(r?"border-amber/70 bg-amber/15 text-white":"border-white/10 bg-white/[0.04] text-haze hover:border-white/25 hover:text-white"),children:[s(t),a&&e.jsx("span",{className:"ml-2 roun
172ded-full bg-amber/20 px-2 py-0.5 text-[16px] font-semibold text-amber",children:a})]},t)}),a]})]}),ci=({value:t,min:r,max:n,onChange:o,label:s,word:i})=>{const a=e=>{Number.isFinite(e)&&o(Math.min(n,Math.max(r,Math.round(e))))},l="grid h-[46px] w-11 place-items-center rounded-xl border border-white/10 bg-white/[0.04] text-[22px] text-haze transition-colors hover:border-white/25 hover:text-white disabled:opacity-40";return e.jsxs("div",{className:"inline-flex items-center gap-2",children:[e.jsx("button",{type:"button",className:l,onClick:()=>a(t-1),disabled:t<=r,"aria-label":`${s}: −1`,children:"−"}),e.jsx("input",{type:"number",inputMode:"numeric",min:r,max:n,value:t,onChange:e=>a(Number(e.target.value)),"aria-label":s,className:"h-[46px] w-16 rounded-xl border border-amber/60 bg-amber/10 text-center font-display text-[22px] font-bold text-white outline-none [appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none"}),e.jsx("button",{type:"button",className:l,onClick:()=>a(t+1),disabled:t>=n,"aria-label":`${s}: +1`,children:"+"}),i&&e.jsx("span",{className:"ml-1 text-[19.5px] text-haze",children:i})]})};const di=new class{async createYooMoneyPayment({tariffId:e,months:t=1,protocol:r="EXTENSION",source:n="web",devices:o}){try{return(await ms({tariffId:e,months:t,...o?{devices:o}:{},protocol:r,source:n})).data}catch(s){throw this.handleError(s)}}async getPaymentStatus(e){try{return(await ps(e)).data}catch(t){throw this.handleError(t)}}async checkYooMoneyPaymentStatus(e){try{return(await hs(e)).data}catch(t){throw this.handleError(t)}}async createSubscription(e){try{return(await ds(e)).data}catch(t){throw this.handleError(t)}}async renewSubscription(e,t){try{return(await us(e,t)).data}catch(r){throw this.handleError(r)}}async getUserSubscriptions(e){try{return(await ls(e)).data}catch(t){throw this.handleError(t)}}async getActiveSubscriptions(e){try{return(await cs(e)).data}catch(t){throw this.handleError(t)}}async pollYooMoneyPaymentStatus(e,{intervalMs:t=5e3,maxAttempts:r=120,onUp
172date:n}={}){return new Promise((o,s)=>{let i=0;const a=setInterval(async()=>{i++;try{const t=await this.checkYooMoneyPaymentStatus(e);"function"==typeof n&&n(t),"succeeded"===t.status?(clearInterval(a),o(t)):"canceled"===t.status||"failed"===t.status?(clearInterval(a),s(new Error("Платеж отменен или не удался"))):i>=r&&(clearInterval(a),s(new Error("Время ожидания платежа истекло")))}catch(t){clearInterval(a),s(t)}},t)})}validatePaymentData(e){const t={};return(!e.amount||e.amount<=0)&&(t.amount="Invalid payment amount"),e.currency||(t.currency="Currency is required"),e.tariffPlan||(t.tariffPlan="Tariff plan is required"),(!e.months||e.months<=0)&&(t.months="Invalid subscription period"),e.protocol||(t.protocol="Protocol is required"),{isValid:0===Object.keys(t).length,errors:t}}validateSubscriptionData(e){const t={};return e.userId||(t.userId="User ID is required"),e.tariffPlan||(t.tariffPlan="Tariff plan is required"),(!e.months||e.months<=0)&&(t.months="Invalid subscription period"),e.protocol||(t.protocol="Protocol is required"),{isValid:0===Object.keys(t).length,errors:t}}calculateSubscriptionPrice(e,t,r){let n=({BASIC:299,STANDARD:499,PREMIUM:799}[e]||299)*t;return 6===t?n*=.9:12===t&&(n*=.8),"VLESS"===r&&(n+=50*t),Math.round(n)}calculateBonusDays(e){switch(e){case 6:return 14;case 12:return 28;default:return 0}}formatPrice(e,t="RUB"){return"RUB"===t?`${e} ₽`:"USD"===t?`$${(e/90).toFixed(2)}`:`${e} ${t}`}handleError(e){if(e.response){const t=e.response.data?.message||e.response.data?.error||"Payment processing error";return new Error(t)}return e.request?new Error("Network error. Please check your connection."):e}async simulatePayment(e){return new Promise((e,t)=>{setTimeout(()=>{Math.random()>
172.1?e({success:!0,paymentId:`pay_${Date.now()}`,status:"SUCCESS",message:"Payment processed successfully"}):t(new Error("Payment failed. Please try again."))},2e3)})}},ui=e=>Math.min(.2,.02*(e-1)),pi=(e,t,r=110)=>{if(!((e,t)=>Number.isInteger(e)&&Number.isInteger(t)&&e>=1&&e<=50&&t>=1&&t<=12)(e,t))return null;const n=Math.ceil(e*((e,t=110)=>t*(1-.09*Math.log(e)))(e,r)*t*(1-ui(t))),o=(e=>e>=6?Math.round(7*e/3):0)(t);return{price:n,pricePerMonth:Math.round(n/t),bonusDays:o,totalDays:30*t+o}},mi=[1,6,12],hi=(e,t,r=110)=>{const n=pi(e,t,r);return n?{id:"custom",custom:!0,nameKey:"pricing.plans.custom",devices:e,prices:{[t]:n.price/t},bonusDays:{[t]:n.bonusDays},popular:!1}:null},fi=[1,3,6,12],bi=(e,t)=>{const r=e%10,n=e%100;return 1===r&&11!==n?t.one:r>=2&&r<=4&&(n<12||n>14)?t.few:t.many},gi="other",yi=Dt.VLESS,_i=e=>!Ps(e)&&!e.id.includes("promo")&&!e.id.includes("extension")&&"admin-custom"!==e.id,xi=({children:t})=>e.jsxs("li",{className:"flex items-start gap-3 text-[19.5px] text-haze",children:[e.jsx("span",{className:"mt-0.5 grid h-5 w-5 shrink-0 place-items-center rounded-md bg-amber/15 text-amber",children:e.jsx(ri,{width:13,height:13})}),t]}),vi=({showTrial:t=!0,title:r,compact:n=!1})=>{const{t:o}=l(),{formatPrice:s}=js(),a=d(),{user:c}=is(),u=Ls("track_site_pricing"),{addToCart:p,setSelectedPlan:m,setSelectedProtocol:h,setSelectedPeriod:f}=ks(),{plans:b=[],loading:g=!1,error:y=null}=xs()||{},_=i.useMemo(()=>((e,t=Ut)=>{if(!e||0===e.length)return t;const r=e.map(e=>({...e,icon:e.icon||"📦",nameKey:e.nameKey||`pricing.plans.${e.id}`,devices:e.devices||1,prices:e.prices||{},bonusDays:e.bonusDays||{},popular:e.popular||!1})),n=r.map(e=>e.id),o=t.filter(e=>!n.includes(e.id));return[...r,...o]})(b,Ut).filter(_i).sort((e,t)=>e.devices-t.devices),[b]),x=_.map(e=>e.devices),[v,w]=i.useState(2),[N,P]=i.useState(It.SEMI_ANNUAL),[S,k]=i.useState(!1),[T,V]=i.useState(!1),[E,A]=i.useState(!1),O=_.find(e=>1===e.devices),j=O&&ws(O,1)||void 0,B=(e,t)=>((e,t,r,n=110)=>{const o=e.find(e=>e.devices===t&&!e.custom);return o&&mi.includes(r)?o:hi(t,r,n)})(_,e,t,j),R=B(v,N),L=Boolean(R)&&!R.custom,C=R?Ns(R,N):null,q=L?((e,t)=>{if(t<=1)return{amount:0,percentage:0};const r=ws(e,1)*t,n=r-ws(e,t);return{amount:n,percentage:Math.round(n/r*100)}})(R,N):{percentage:Math.round(100*ui(N))},D=o("pricing2.months_word",{returnObjects:!0}),I=`${N} ${bi(N,D)}`,U=bi(v,o("pricing2.devices_word",{returnObjects:!0})),M=()=>{m(R),h(yi),f(N),p(R,yi,N)};return e.jsxs("div",{children:[e.jsxs("header",{className:n?"mb-6":"mb-[clamp(28px,4vw,48px)] max-w-[54ch]",children:[e.jsx("h2",{className:n?"font-display text-[26px] font-bold":"font-display text-[clamp(36px,4.4vw,58px)] font-extrabold leading-[1.05] tracking-[-0.02em]",children:r||o("pricing2.title")}),!n&&e.jsx("p",{className:"mt-3 text-[20.5px] text-haze",children:o("pricing2.lead")})]}),g&&e.jsx("p",{className:"mb-4 text-haze",children:o("pricing2.loading")}),y&&!g&&e.jsx("p",{className:"mb-4 text-[18.5px] text-smoke",children:o("pricing2.offline")}),e.jsxs("div",{className:t?"grid gap-4 lg:grid-cols-[1.25fr_0.75fr]":"grid gap-4",children:[e.jsxs("article",{className:"ui-surface home-plan--popular flex flex-col rounded-[24px] border-amber/40 p-[clamp(20px,3vw,32px)]",children:[e.jsx("h3",{className:"font-display text-[26px] font-bold",children:o("pricing2.plan_title")}),e.jsx("p",{className:"mt-1.5 mb-6 text-[19.5px] text-haze",children:o("pricing2.plan_note")}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2.5",children:[e.jsx(li,{label:o("pricing2.devices"),values:[...x,gi],current:S?gi:v,onPick:e=>{e===gi?k(!0):(k(!1),w(e))},render:e=>e===gi?o("pricing2.other"):String(e)}),S&&e.jsx(ci,{value:v,min:1,max:50,onChange:w,label:o("pricing2.devices"),word:U})]}),e.jsxs("div",{className:"grid gap-2.5",children:[e.jsx(li,{label:o("pricing2.period"),values:[...fi,gi],current:T?gi:N,onPick:e=>{e===gi?V(!0):(V(!1),P(e))},render:e=>o(e===gi?"pricing2.other":`pricing2.months.${e}`),badge:e=>{if(e===gi)return;const t=Ns(B(v,e),e).bonusDays;return t>0?`+${t}`:void 0}}),T&&e.jsx(ci,{value:N,min:1,max:12,onChange:P,label:o("pricing2.period"),word:bi(N,D)})]}),(S||T)&&e.jsx("p",{className:"text-[18px] text-smoke",children:o("pricing2.custom_hint")})]}),e.jsxs("div",{className:"mt-7 mb-6",children:[e.jsxs("div",{className:"flex flex-wrap items-end gap-x-3 gap-y-1",children:[e.jsx("span",{className:"font-display text-[clamp(40px,4.6vw,56px)] font-extrabold leading-none tabular-nums",children:C?s(C.price):"—"}),e.jsxs("span",{className:"pb-1 text-[19.5px] text-smoke",children:[o("pricing2.for_period",{period:I})," · ",v," ",U]})]}),e.jsxs("div",{className:"mt-1.5 text-[18.5px] text-smoke",children:[C&&N>1&&o("pricing2.per_month",{price:s(C.pricePerMonth)}),q.percentage>0&&e.jsx("span",{className:"ml-2 text-amber",children:o("pricing2.benefit",{percent:q.percentage})})]}),C?.bonusDays>0&&e.jsx("div",{className:"mt-1 text-[18.5px] text-amber",children:o("pricing2.bonus",{days:C.bonusDays,total:C.totalDays})})]}),e.jsx("ul",{className:"mb-7 grid gap-2.5",children:o("pricing2.features",{returnObjects:!0}).map(t=>e.jsx(xi,{children:t},t))}),e.jsxs("div",{className:"mt-auto grid gap-2.5",children:[e.jsx("button",{type:"button",disabled:!R,className:"ui-btn w-full",onClick:()=>{M(),a(Mt.CHECKOUT)},children:o("pricing2.checkout")}),e.jsx("button",{type:"button",disabled:!R,className:"ui-btn-quiet w-full",onClick:()=>{M(),Bt.success(o("pricing2.added"))},children:o("pricing2.add_cart")})]})]}),t&&e.jsxs("article",{className:"ui-surface flex flex-col rounded-[24px] p-[clamp(20px,3vw,32px)] lg:self-start",children:[e.jsx("h3",{className:"font-display text-[26px] font-bold",children:o("pricing2.trial_title")}),e.jsx("p",{className:"mt-1.5 mb-6 text-[19.5px] text-haze",children:o("pricing2.trial_note")}),e.jsx("div",{className:"mb-6 font-display text-[clamp(40px,4.6vw,56px)] font-extrabold leading-none",children:s(0)}),e.jsx("ul",{className:"mb-7 grid gap-2.5",children:o("pricing2.trial_features",{returnObjects:!0}).map(t=>e.jsx(xi,{children:t},t))}),e.jsxs("div",{className:"grid gap-2.5",children:[e.jsx("a",{href:u,target:"_blank",rel:"noopener noreferrer",className:"ui-btn w-full",children:o("pricing2.trial_cta")}),c?.id&&e.jsx("button",{type:"button",disabled:E,className:"ui-btn-quiet w-full",onClick:async()=>{A(!0);try{const e=await di.createYooMoneyPayment({tariffId:"TEST_WEEK",months:1,protocol:yi.toUpperCase()});if(!e.success||!e.trial)throw new Error(e.message||"Ошибка активации");Bt.success(e.message||"Тестовый период активирован",{duration:5e3}),a(Mt.DASHBOARD)}catch(it){Bt.error(it.message||"Не удалось активировать тестовый период")}finally{A(!1)}},children:o("pricing2.trial_cabinet")})]})]})]}),e.jsx("p",{className:"mt-6 text-[18.5px] text-smoke",children:o("pricing2.pay_note")})]})},wi=()=>{const{hash:t}=u();return i.useEffect(()=>{if("#plans"!==t)return;const e=window.setTimeout(()=>{document.getElementById("plans")?.scrollIntoView({behavior:"smooth",block:"start"})},80);return()=>window.clearTimeout(e)},[t]),e.jsx("section",{id:"plans",className:"scroll-mt-24 py-[clamp(56px,9vw,112px)]",children:e.jsx("div",{className:"mx-auto max-w-[1200px] px-[clamp(16px,4vw,40px)]",children:e.jsx(vi,{})})})},Ni=[t=>e.jsxs("svg",{...ti,...t,children:[e.jsx("rect",{x:"3",y:"4",width:"13",height:"10",rx:"1.5"}),e.jsx("path",{d:"M7 18h5"}),e.jsx("rect",{x:"17",y:"8",width:"4",height:"12",rx:"1"})]}),t=>e.jsxs("svg",{...ti,...t,children:[e.jsx("path",{d:"M21 3L10 14"}),e.jsx("path",{d:"M21 3l-6.5 18-3.5-7-7-3.5z"})]}),t=>e.jsxs("svg",{...ti,...t,children:[e.jsx("circle",{cx:"12",cy:"12",r:"9"}),e.jsx("path",{d:"M3 12h18M12 3c2.5 2.6 3.8 5.6 3.8 9s-1.3 6.4-3.8 9c-2.5-2.6-3.8-5.6-3.8-9S9.5 5.6 12 3z"})]}),t=>e.jsx("svg",{...ti,...t,children:e.jsx("path",{d:"M20 12a8 8 0 01-11.6 7.1L4 20l.9-4.4A8 8 0 1120 12z"})}
172)],Pi=[!0,!1,!1,!0],Si=()=>{const{t:t}=l(),r=t("home2.features.items",{returnObjects:!0});return e.jsx("section",{id:"features",className:"pb-[clamp(56px,9vw,112px)]",children:e.jsxs("div",{className:"mx-auto max-w-[1200px] px-[clamp(16px,4vw,40px)]",children:[e.jsxs("header",{className:"mb-[clamp(28px,4vw,48px)]",children:[e.jsx("h2",{className:"font-display text-[clamp(36px,4.4vw,58px)] font-extrabold tracking-[-0.02em]",children:t("home2.features.title")}),e.jsx("p",{className:"mt-3 max-w-[54ch] text-[20px] text-haze",children:t("home2.features.lead")})]}),e.jsx("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-3",children:Array.isArray(r)&&r.map((t,r)=>{const n=Ni[r%Ni.length];return e.jsxs("article",{className:"ui-surface rounded-[22px] p-7 "+(Pi[r]?"lg:col-span-2":""),children:[e.jsx("span",{className:"grid h-11 w-11 place-items-center rounded-2xl border border-amber/30 bg-amber/10 text-amber",children:e.jsx(n,{})}),e.jsx("h3",{className:"mb-2 mt-5 font-display text-[22px] font-bold",children:t.title}),e.jsx("p",{className:"text-[19.5px] leading-relaxed text-haze",children:t.text})]},t.title)})})]})})},ki=()=>{const{t:t}=l(),r=Ls("track_site_trl");return e.jsx("section",{className:"pb-[clamp(56px,9vw,112px)]",children:e.jsx("div",{className:"mx-auto max-w-[1200px] px-[clamp(16px,4vw,40px)]",children:e.jsxs("div",{className:"home-final ui-surface relative overflow-hidden rounded-[28px] px-[clamp(24px,5vw,64px)] py-[clamp(40px,6vw,72px)] text-center",children:[e.jsx("h2",{className:"font-display text-[clamp(34px,4vw,52px)] font-extrabold tracking-[-0.02em]",children:t("home2.final.title")}),e.jsx("p",{className:"mx-auto mt-3 max-w-[44ch] text-[20px] text-haze",children:t("home2.final.lead")}),e.jsx("a",{href:r,target:"_blank",rel:"noopener noreferrer",className:"ui-btn mt-8",children:t("home2.cta_primary")})]})})})},Ti=()=>e.jsxs("div",{className:"relative text-white",children:[e.jsx(ei,{titleKey:"seo.home.title",descriptionKey:"seo.home.description",path:"/",faq:[{q:"Сколько стоит VPN от BBQ?",a:"Цены начинаются от 110₽/месяц за тариф «Старт» (1 устройство). Тариф «Комфорт» (2 устройства) — 209₽/мес, «Максимум» (3 устройства) — 298₽/мес. При оплате на 6 или 12 месяцев действует скидка до 20%."},{q:"Сколько устройств можно подключить?",a:"В зависимости от тарифа: Старт — 1, Комфорт — 2, Максимум — 3, Друзья — 5, Семья — 8, Максимум комфорта — 12. В своём тарифе — любое число от 1 до 50. Каждое устройство получает свой ключ и работает независимо."},{q:"Есть ли бесплатный пробный период?",a:"Да, 7 дней бесплатно через Telegram-бота @BBQ_VPN_BOT. Без привязки карты, без автопродления."},{q:"Можно ли вернуть деньги если не подошло?",a:"Да. В течение 3 дней с момента покупки возвращаем 100% оплаты по запросу в поддержку — без объяснения причин."},{q:"Как оплатить из России?",a:"Российские банковские карты (Visa, Mastercard, МИР), СБП, Telegram Stars. Оплата через ЮKassa."}]}),e.jsx(ii,{}),e.jsx(ai,{}),e.jsx(wi,{}),e.jsx(Si,{}),e.jsx(ki,{})]}),Vi=()=>{const{pathname:e}=u();return i.useEffect(()=>{window.scrollTo(0,0)},[e]),null},Ei=i.lazy(()=>B(()=>import("./PricingPage-BvOJaOCQ.js"),__vite__mapDeps([0,1,2,3]))),Ai=i.lazy(()=>B(()=>import("./AboutPage-C7v3dIal.js"),__vite__mapDeps([4,1,2,3,5,6,7]))),Oi=i.lazy(()=>B(()=>import("./SupportPage-BPLVtS5S.js"),__vite__mapDeps([8,1,2,3,5,6,7]))),ji=i.lazy(()=>B(()=>import("./SetupPage-BE9ApEDg.js"),__vite__mapDeps([9,1,2,10,5,6,11,12,13,3,7]))),Bi=i.lazy(()=>B(()=>import("./PrivacyPolicyPage-CAyFH46r.js"),__vite__mapDeps([14,1,2,10,5,6,11,12,13,3,7]))),Ri=i.lazy(()=>B(()=>
172import("./TermsPage-C7e3oYxF.js"),__vite__mapDeps([15,1,2,10,5,6,11,12,13,3,7]))),Li=i.lazy(()=>B(()=>import("./RefundPage-CHc3XNqF.js"),__vite__mapDeps([16,1,2,10,5,6,11,12,13,3,7]))),Ci=i.lazy(()=>B(()=>import("./CookiesPage-CfysrQWW.js"),__vite__mapDeps([17,1,2,10,5,6,11,12,13,3,7]))),qi=i.lazy(()=>B(()=>import("./LoginPage-DFsoBJnf.js"),__vite__mapDeps([18,1,2,19,11,5,6,20,3,10,12,13,7]))),Di=i.lazy(()=>B(()=>import("./RegisterPage-Cq7dge57.js"),__vite__mapDeps([21,1,2,19,11,5,6,20,3,10,12,13,7]))),Ii=i.lazy(()=>B(()=>import("./ResetPasswordPage-BzzbExSN.js"),__vite__mapDeps([22,1,2,10,5,6,11,12,13,3,7]))),Ui=i.lazy(()=>B(()=>import("./VerifyEmailPage-BCp4-iEL.js"),__vite__mapDeps([23,1,2,10,5,6,11,12,13,3,7]))),Mi=i.lazy(()=>B(()=>import("./RegisterSuccessPage-BpXMsXMR.js"),__vite__mapDeps([24,1,2,10,5,6,11,12,13,3,7]))),Qi=i.lazy(()=>B(()=>import("./VpnAccessPage-umc0Iizv.js"),__vite__mapDeps([25,1,2,10,5,6,11,12,13,26,3,7]))),Fi=i.lazy(()=>B(()=>import("./VpnYoutubePage-BNhvvjla.js"),__vite__mapDeps([27,1,2,10,5,6,11,12,13,26,3,7]))),Hi=i.lazy(()=>B(()=>import("./VpnDiscordPage-X50lILGu.js"),__vite__mapDeps([28,1,2,10,5,6,11,12,13,26,3,7]))),zi=i.lazy(()=>B(()=>import("./VpnGamesPage-DcTaf9wU.js"),__vite__mapDeps([29,1,2,10,5,6,11,12,13,26,3,7]))),$i=i.lazy(()=>B(()=>import("./VpnRussiaPage-uHDuuFHx.js"),__vite__mapDeps([30,1,2,10,5,6,11,12,13,26,3,7]))),Wi=i.lazy(()=>B(()=>import("./VpnTelegramPage-DrUfhL1p.js"),__vite__mapDeps([31,1,2,10,5,6,11,12,13,26,3,7]))),Yi=i.lazy(()=>B(()=>import("./VpnBlockedPage-DuRfHolK.js"),__vite__mapDeps([32,1,2,10,5,6,11,12,13,26,3,7]))),Gi=i.lazy(()=>B(()=>import("./ProxyTelegramPage-Djn5qzXt.js"),__vite__mapDeps([33,1,2,10,5,6,11,12,13,26,3,7]))),Ki=i.lazy(()=>B(()=>import("./DonatePage-CBKEt0So.js"),__vite__mapDeps([34,1,2,10,5,6,11,12,13,26,3,7]))),Ji=i.lazy(()=>B(()=>import("./VpnEncryptionPage-DmIxHYtA.js"),__vite__mapDeps([35,1,2,10,5,6,11,12,13,26,3,36,7]))),Xi=i.lazy(()=>B(()=>import("./VpnSpeedPage-BOIWEXNn.js"),__vite__mapDeps([37,1,2,10,5,6,11,12,13,26,3,36,7]))),Zi=i.lazy(()=>B(()=>import("./VpnServersPage-BLy7vXwY.js"),__vite__mapDeps([38,1,2,10,5,6,11,12,13,26,3,36,7]))),ea=i.lazy(()=>B(()=>import("./VpnDevicesPage-BEzXM0Qv.js"),__vite__mapDeps([39,1,2,10,5,6,11,12,13,26,3,36,7]))),ta=i.lazy(()=>B(()=>import("./VpnSupportPage-CnT3CxoR.js"),__vite__mapDeps([40,1,2,10,5,6,11,12,13,26,3,36,7]))),ra=i.lazy(()=>B(()=>import("./VpnGuaranteePage-DnBbVXVw.js"),__vite__mapDeps([41,1,2,10,5,6,11,12,13,26,3,36,7]))),na=i.lazy(()=>B(()=>import("./LinksPage-CoS2bymS.js"),__vite__mapDeps([42,1,2,10,5,6,11,12,13,3,7]))),oa=i.lazy(()=>B(()=>import("./PartnerLandingPage-Dixa9XPr.js"),__vite__mapDeps([43,1,2,10,5,6,11,12,13,3,7]))),sa=i.lazy(()=>B(()=>import("./BlogIndexPage-DxbheFXK.js"),__vite__mapDeps([44,1,2,45,3,5,6,7]))),ia=i.lazy(()=>B(()=>import("./BlogPostPage-D_7v9UVa.js"),__vite__mapDeps([46,1,2,45,3,5,6,7,47]))),aa=i.lazy(()=>B(()=>import("./DashboardPage-B9oxAPbe.js"),__vite__mapDeps([48,1,2,49,10,5,6,13,3,11,7]))),la=i.lazy(()=>B(()=>import("./MiniAppPage-CqqDQDjW.js"),__vite__mapDeps([50,1,2,5,6,3,7]))),ca=i.lazy(()=>B(()=>import("./CheckoutPage-CAAFuh3C.js"),__vite__mapDeps([51,1,2,10,5,6,11,49,3,7]))),da=i.lazy(()=>B(()=>import("./SuccessPage-CBnbI55T.js"),__vite__mapDeps([52,1,2,10,5,6,3,7])));i.lazy(()=>B(()=>import("./LocalizationTest-pA9ZE6tv.js"),__vite__mapDeps([53,1,2,3,5,6,7]))),i.lazy(()=>B(()=>import("./CartDebug-DT4pcwyU.js"),__vite__mapDeps([54,1,2,3,5,6,7])));const ua=()=>e.jsx("div",{className:"min-h-screen","aria-hidden":"true"}),pa=new t({defaultOptions:{queries:{retry:1,refetchOnWindowFocus:!1}}}),ma=({children:t})=>{const{isAuthenticated:r}=is();return r?t:e.jsx(b,{to:Mt.LOGIN,replace:!0})},ha=/^\/(?:[a-zA-Z0-9_\-?=&%.][a-zA-Z0-9_\-/?=&%.]*)?$/,fa=({children:t})=>{const{isAuthenticated:r}=is(),{search:n}=u();if(r){const t=new URLSearchParams(n).get("redirect"),r=t&&ha.test(t)?t:Mt.DASHBOARD;return e.jsx(b,{to:r,replace:!0})}return t};function ba(){const{loadFromStorage:t}=is(),{loadFromStorage:n}=as(),{loadFromStorage:o}=ks(),{i18n:s}=l();return i.useEffect(()=>{t(),n(),o()},[t,n,o]),i.useEffect(()=>{const{currentLanguage:e}=as.getState();e&&e!==s.language&&s.changeLanguage(e)},[s]),i.useEffect(()=>as.subscribe(e=>{e.currentLanguage&&e.currentLanguage!==s.language&&s.changeLanguage(e.currentLanguage)}),[s]),e.jsx(Se,{children:e.jsx(r,{client:pa,children:e.jsx(m,{future:{v7_startTransition:!0,v7_relativeSplatPath:!0},children:e.jsx(ga,{})})})})}function ga(){const t=(()=>{const{pathname:e}=u();return e.startsWith("/app")}
172)(),{pathname:r}=u(),n=r.split("/")[1]||"home";return i.useEffect(()=>{if(t)return;const{body:e}=document,r=e.style.backgroundColor;return e.style.backgroundColor="#0a0608",()=>{e.style.backgroundColor=r}},[t]),e.jsxs(e.Fragment,{children:[e.jsx(Vi,{}),t?e.jsx(i.Suspense,{fallback:e.jsx(ua,{}),children:e.jsxs(h,{children:[e.jsx(f,{path:"/app",element:e.jsx(la,{})}),e.jsx(f,{path:"/app/*",element:e.jsx(la,{})})]})}):e.jsxs("div",{className:"site-dark min-h-screen text-white",children:[e.jsx(Xs,{}),e.jsx("a",{href:"#main-content",className:"sr-only focus:not-sr-only focus:absolute focus:z-50 focus:p-4 focus:bg-ink focus:text-amber",children:"Skip to content"}),e.jsx(Qs,{}),e.jsx("main",{id:"main-content",className:"pt-16 lg:pt-20",children:e.jsx(i.Suspense,{fallback:e.jsx(ua,{}),children:e.jsx("div",{className:"route-in",children:e.jsxs(h,{children:[e.jsx(f,{path:Mt.HOME,element:e.jsx(Ti,{})}),e.jsx(f,{path:"/pricing",element:e.jsx(Ei,{})}),e.jsx(f,{path:Mt.ABOUT,element:e.jsx(Ai,{})}),e.jsx(f,{path:Mt.SUPPORT,element:e.jsx(Oi,{})}),e.jsx(f,{path:"/setup",element:e.jsx(ji,{})}),e.jsx(f,{path:"/vpn-access",element:Vs("/vpn-access")?e.jsx(b,{to:"/",replace:!0}):e.jsx(Qi,{})}),e.jsx(f,{path:"/vpn-youtube",element:Vs("/vpn-youtube")?e.jsx(b,{to:"/",replace:!0}):e.jsx(Fi,{})}),e.jsx(f,{path:"/vpn-discord",element:Vs("/vpn-discord")?e.jsx(b,{to:"/",replace:!0}):e.jsx(Hi,{})}),e.jsx(f,{path:"/vpn-games",element:Vs("/vpn-games")?e.jsx(b,{to:"/",replace:!0}):e.jsx(zi,{})}),e.jsx(f,{path:"/vpn-russia-2026",element:Vs("/vpn-russia-2026")?e.jsx(b,{to:"/",replace:!0}):e.jsx($i,{})}),e.jsx(f,{path:"/vpn-telegram",element:Vs("/vpn-telegram")?e.jsx(b,{to:"/",replace:!0}):e.jsx(Wi,{})}),e.jsx(f,{path:"/vpn-blocked",element:Vs("/vpn-blocked")?e.jsx(b,{to:"/",replace:!0}):e.jsx(Yi,{})}),e.jsx(f,{path:"/proxy-telegram",element:e.jsx(Gi,{})}),e.jsx(f,{path:"/donate",element:e.jsx(Ki,{})}),e.jsx(f,{path:"/vpn-encryption",element:e.jsx(Ji,{})}),e.jsx(f,{path:"/vpn-speed",element:e.jsx(Xi,{})}),e.jsx(f,{path:"/vpn-servers",element:e.jsx(Zi,{})}),e.jsx(f,{path:"/vpn-devices",element:e.jsx(ea,{})}),e.jsx(f,{path:"/vpn-support",element:e.jsx(ta,{})}),e.jsx(f,{path:"/vpn-guarantee",element:e.jsx(ra,{})}),e.jsx(f,{path:"/links",element:e.jsx(na,{})}),e.jsx(f,{path:Mt.PARTNER,element:e.jsx(oa,{})}),e.jsx(f,{path:"/blog",element:Vs("/blog")?e.jsx(b,{to:"/",replace:!0}):e.jsx(sa,{})}),e.jsx(f,{path:"/blog/:slug",element:Vs("/blog")?e.jsx(b,{to:"/",replace:!0}):e.jsx(ia,{})}),e.jsx(f,{path:Mt.PRIVACY_POLICY,element:e.jsx(Bi,{})}),!1,e.jsx(f,{path:Mt.LOGIN,element:e.jsx(fa,{children:e.jsx(qi,{})})}),e.jsx(f,{path:Mt.REGISTER,element:e.jsx(fa,{children:e.jsx(Di,{})})}),e.jsx(f,{path:Mt.RESET_PASSWORD,element:e.jsx(fa,{children:e.jsx(Ii,{})})}),e.jsx(f,{path:"/verify-email",element:e.jsx(Ui,{})}),e.jsx(f,{path:"/register-success",element:e.jsx(Mi,{})}),e.jsx(f,{path:"/dboards/*",element:e.jsx(ma,{children:e.jsx(aa,{})})}),e.jsx(f,{path:Mt.CHECKOUT,element:e.jsx(ca,{})}),e.jsx(f,{path:Mt.SUCCESS,element:e.jsx(da,{})}),e.jsx(f,{path:Mt.PRIVACY_POLICY,element:e.jsx(Bi,{})}),e.jsx(f,{path:Mt.TERMS,element:e.jsx(Ri,{})}),e.jsx(f,{path:Mt.REFUND,element:e.jsx(Li,{})}),e.jsx(f,{path:Mt.COOKIES,element:e.jsx(Ci,{})}),e.jsx(f,{path:"*",element:e.jsx(ya,{})})]})},n)})}),e.jsx(Hs,{})]}),e.jsx(Gs,{}),e.jsx(jt,{position:"top-right",toastOptions:{duration:4e3,style:{background:"#363636",color:"#fff"},success:{style:{background:"#10b981"}},error:{style:{background:"#ef4444"}}}})]})}const ya=()=>{const{t:t}=l();return e.jsx("div",{className:"min-h-screen flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:"ui-fire-text mb-2 font-display text-[clamp(80px,14vw,140px)] font-extrabold leading-none",children:"404"}),e.jsx("h1",{className:"text-4xl font-bold text-gray-900 mb-4",children:t("errors.not_found.title")}),e.jsx("p",{className:"text-gray-600 mb-8",children:t("errors.not_found.description")}),e.jsx(p,{to:Mt.HOME,children:e.jsx(Rt,{children:t("errors.not_found.go_home")})})]})})},_a="bbq_visit_sent";!function(){if("undefined"==typeof window)return;if(!function(e){try{return!e.getItem(_a)&&(e.setItem(_a,"1"),!0)}catch{return!0}}(window.sessionStorage))return;const e=JSON.stringify(function(e,t){const r={path:e||"/"};return t&&""!==t.trim()&&(r.referrer=t),r}(window.location.pathname,document.referrer));fetch("/api/visit",{method:"POST",headers:{"Content-Type":"application/json"},body:e,keepalive:!0}
172).catch(()=>{})}(),A.createRoot(document.getElementById("root")).render(e.jsx(i.StrictMode,{children:e.jsx(ba,{})}));export{Xo as A,Rt as B,ri as C,Qt as D,je as H,vi as P,Mt as R,ei as S,qt as T,Dt as V,Ms as a,Ds as b,Jo as c,ns as d,is as e,Bo as f,Us as g,rs as h,qs as i,ts as j,Is as k,js as l,ks as m,st as n,It as o,xs as p,Ss as q,Ys as r,es as s,as as t,Ls as u,di as v,Cs as w,Ht as x,Bt as z};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.