Pin Up Сasino ️ Giriş, Resmi Site, Hoşgeldin Bonus

Salsa Loca - Strasbourg Association de danse salsa à Strasbourg

Pin Up Сasino ️ Giriş, Resmi Site, Hoşgeldin Bonus

Pin Up Сasino ️ Giriş, Resmi Site, Hoşgeldin Bonusu

Pin Up Turkey Online Casino Sah Sitesi Giriş Empieza Kayıt

Aslında, kumarhane kumar empieza bahis işlevlerini kullanıcıları için en rahat şekilde birleştirmeyi başardı. Spor bahisleri yapmak için ya doğrudan web sitesinde buna geçmeniz veya aynı şeyi PC uygulamasında yapmanız gerekir. Yapmanız gereken tek şey, her şeyden önce, ofis kurallarına aşina olmaktır. Ancak u zaman rahatça bahis oynayabilir ve her şeyin nasıl çalıştığını anlayabilirsiniz.

Para çekme işlemi ise müşterinin hesabının” “doğrulanmasını ve bir süre daha beklemeyi gerektirir. Para çekmeden önce, katılımcı, (varsa) tam bonus çevrimi için talep edilen miktarı bağımsız olarak kontrol etmeli ve restriction koşullarına uymalıdır. Para çekme başvurusu kişisel hesabınızda yapılır empieza değerlendirilmek üzere online casino uzmanlarına gönderilir. Pin Up para çekme işlemleri ortalama olarak bir gün içinde gerçekleştirilir ancak daha uzun süren afin de çekme işlemleri sobre olabilir. Bu kulüpte, Pin Up bahis hizmeti aracılığıyla spor bahisleri için gerçek para kazanma fırsatı da vardır.

Pin-up Oyunu

Pin up apk kurulum dosyasını cihaza ayrıca kaydetmeye gerek yoktur. Pin Up’a kayıt olmak, casino müşterilerine sadece kendi fonlarını kullanarak para için oynama fırsatı verir. Onların yardımıyla Pin number Up slotlarında gerçek ödüller kazanabilirsiniz.

  • Pin up casino tr ‘ın tüm promosyonları ve bonus teklifleri orijinaliyle aynıdır.
  • Danışman yanıtının bekleme süresi sobre fazla 60 saniyedir.
  • Rahatlayabilir ve s?rf kendi zevkiniz için bahis oynayabilirsiniz.
  • Site, her biri kullanıcı kitlesi arasında özellikle talep gören yüzlerce farklı sağlayıcıdan oyunlara sahiptir.

Yönetici sohbete girer girmez sizi anında selamlayacak empieza sorulan soruya cevap verecektir. Gözünüzde nesnel bir vizyon oluşturmak için daha yakından bakalım. Kullanıcı, bölümler arası geçiş hızı alanında rakiplerle farkı hemen fark edecektir. Ruletlerin standart çeşitleri Avrupa, Amerika empieza Fransız ruletlerini içerir. Türlere bağlı olarak oyunun kuralları, bahisler ve çarktaki bölmelerin sayısı değişir pin-up.

Pin Web Sitesinde Giriş Ve Kayıt Yukarı Kumarhane Tr

Site ayrıca İngilizce, Almanca ve Türkçe dillerinde de mevcuttur. Resmi Pinup sitesinde bahisler lira, ruble, dolar ve european cinsinden yapılabilir. Böylece, her ziyaretçi rahat bir para birimi seçebilecek ve kendi zevkine göre oynayabilecektir.

Teşvikin nasıl etkinleştirileceğini, Pin Up reward nasıl kullanılır, maksimum kazanç miktarını öğreneceksiniz. Slot makineleri; en basit kurallar, ilgi çekici oyun deneyimi, parlak tasarım empieza çeşitli bonus özellikleri ile öne çıkan bir casino eğlencesidir. Pin Up platformunda gerçekten çok çeşitli casino eğlenceleri bulabilirsiniz. Platformdaki toplam oyun sayısı üç binden fazla seçeneğe ulaşıyor.

Pin Up Casino Az: Azərbaycan Istifadəçiləri Üçün Rəsmi Sayt

Pinup on-line casinonun mobil versiyonu IOS’un yanı sıra Android cihazlarda de uma desteklenmektedir. Ayrıca, herkes Pinup uygulamasını akıllı telefonlarına veya bilgisayar cihazlarına indirebilir ve yükleyebilir. Ayrıca, istediğiniz zaman tarayıcınızda Pinup’ın resmi sitesine gidebilirsiniz. İndirilebilir oyun istemcisinin çalışması, yüksek indirme hızı, yüksek kalite ve mükemmel arayüz ile karakterizedir. Kayıtlı Pin-Up çevrimiçi kullanıcıları için para yatırma bonusu, geri ödeme, yeni başlayanlar için hediyeler vb. Pinup casino operatöründen depozitosuz bonuslar almak için özel sitelerde özel promosyon kodları bulabilirsiniz.

  • Çeşitli taşınabilir cihazlarda kendi mobil uygulamasına sahip olan Pin Up platformu da bu konuda geride kalmıyor.
  • Oyuncunun bahis oynamadan önce para çekme talebinde bulunması, bonus teklifinin iptal edilmesine de yol açabilir.
  • Kart oyunları, içlerindeki her şeyin yalnızca şansa bağlı olmamasından ötürü ilgi çekicidir.
  • Ayrıca, herkes Pinup uygulamasını akıllı telefonlarına veya bilgisayar cihazlarına indirebilir ve yükleyebilir.

Kişisel bahis hesabınıza giriş yaparak, konuklar günün her saati spor bahisleri yapabilir ve maçları gerçek zamanlı olarak takip edebilirler. Pin Up hakkında oyunculardan gelen geri bildirimler, doğru tahmin edilen spor sonuçları için kazanç elde etmek için mükemmel fırsatları doğrulamaktadır. Zaten ilk girişten sonra, kumarhane sahiplerinin her şeyi olabildiğince uygun hale getirdikleri ve düzenli olarak güncellendikleri açıktır. Yalnızca yüzlerce slot makinesinin yanı sıra online poker, blackjack ve the woman türlü rulet vardır. Birkaç dakika içinde kendiniz için ilginç bir şey seçin ve ardından pra için oynamaya başlayın. Bir demo modu da var, ancak tam bir oyundan çok buradaki eğlence hakkında bilgi ??renmek için.

Pin Up Casino’da Metode Desteğe Nasıl Ulaşabilirim?

Oyuncuların sembol zincirleri toplamasına gerek yoktur; oyun alanında sobre az 6 aynı resmin görünmesi yeterlidir. Bu size kazanç sağlayacaktır ve sembollerin konumu önemli değildir. Türkiye’deki her kumarbaz, bireysel istek empieza istekleri karşılayacak ilginç Pin-up slot makinesi bulacaktır. Oyun kütüphanesinin temsilcilerinin çoğu demo modunda mevcuttur. Bu modu etkinleştirerek kullanıcı bahis sanal krediler alır.

  • Bunu yapmak için “Kayıt Ol” düğmesine tıklamaları, menşe ülkesini ve hesap para birimini seçmeleri empieza ayrıca bazı kişisel verileri sağlamaları gerekir.
  • Demo başlatma modunu kullanarak Pin Up casino kumar slotlarında özgürce eğlenebilirsiniz.
  • Uygulamaya kısa bir form aracılığıyla kayıt olabilirsiniz.
  • Pin up apk kurulum dosyasını cihaza ayrıca kaydetmeye gerek yoktur.
  • Pin up casino operatörü, şikayetler sobre dahil olmak üzere tüm soruları yanıtlayacaktır.

Durum sisteminde bir oyuncu ne kadar yüksek olursa, kişisel tatil arifesinde o kadar çok şey alır. Bu arada, VERY IMPORTANT PERSONEL hesabında doğum günü hediyesinden kazancınızı geri ödemenize gerek yoktur. ● Nakit geri ödeme sanal bakiyeye yatırılır ve bu bonusu kazanmak için seventy two saat verilir. Kullanıcı promosyonu geri kazanmak için zamana sahip değilse, ödül dengesi kaybolur. Pin up casino indir başlatmak için öncelikle uyarlanabilir siteyi kullanmanız empieza bir akıllı telefon veya tablet aracılığıyla ana sayfaya gitmeniz gerekir.

Casino Tari̇hçesi̇

Aynı bilgisayar veya mobil cihaz üzerinden Pin Upwards Casino’da farklı hesaplara (farklı kişilere kayıtlı) giriş yapmak yasaktır. Bu tür giriş denemeleri Pin Up güvenliği tarafından tespit edilecek ve bu tür kişisel hesapların engellenmesine yol açacaktır. Pin Up çeşitli promosyon programlarına sahiptir, bunların bir listesini Promosyonlar bölümünde bulabilirsiniz. Öngörülen koşulu yerine getirdikten sonra, oyuncu bonusu kişisel hesabında etkinleştirebilir. Para veya freespin miktarı hemen bonus bakiyesinde mevcut olacaktır.

  • Pin Up Bet bahis şirketinin yeni misafirleri için basit bir kayıt prosedürü vardır.
  • Yönetimin her zaman en yeni kullanıcıları teşvik ettiğini” “belirtmek gerekir.
  • PinUp’ta popüler sosyal ağlarda ve mesajlaşma programlarında açık kişisel sayfalar aracılığıyla kayıt vardır.
  • Uygulamanın ana özelliği, yalnızca kaydolduktan sonra kullanabilmenizdir.
  • Bahis şirketinin kuralları, bahisleri iptal etmenize ya da düzenlemenize izin verir, ancak belirli koşullara tabidir.

Hızla büyüyen bir mobil kitlenin ihtiyaçlarını karşılamak için casino, mobil bir sürüm veya uygulama sunar. Oyuncu Pin-up Casino indir bağlantısını takip edip, kendi cihazına kurarak zaman kaybetmek istemiyorsa sitenin mobil versiyonunu kullanması yeterli olacaktır. Tasarım olarak resmi siteden farklı değildir ve benzer özelliklere sahiptir. Casinonun en büyük avantajı, slotlar ve spor bahislerini bir arada bahis sunmasıdır. Bunun için ana bölümler arasında geçiş yapmanız yeterlidir. Yönetim, bahislerinizden en iyi ölçüde yararlanmanızı sağlayan yeni promosyonları düzenli olarak başlatır.

Oyun Sağlayıcıların Listesini Kontrol Edin

Pin Up kumarhanesinin resmi sitesini ziyaret ederek rahatça eğlenin ve kumar slotları oynayın, Türkiye, Rusya ve diğer ülkelerden yetişkin kullanıcılar olabilir. Site, Curacao’dan köklü bir düzenleyici kurum olan Antillephone N. V. Pin Up Club ayrıca bir bahis şirketi aracılığıyla ücretsiz spor bahisleri de sunmaktadır. Ayna, içeriği empieza tasarımı açısından resmî web sitesini ayrıntılı olarak kopyalar.

Lisansın varlığı, İnternet sayfasının güvenilirliğini ve adil ve şeffaf oyun sürecini gösterir. Türkiye’deki oyuncular online casinonun genel kabul görmüş standartlara ve düzenlemelere uygun olduğundan ve ödemeleri geciktirmediğinden emin olabilirler. Şu kita, bahis bölümü 55’ten fazla farklı spor sunuyor, bu nedenle her bahisçi kendisini ilgilendiren bir spor dalı bulacaktır. Platformda ayrıca bazı spor etkinliklerini yayınlamanıza izin veren yenilikçi bir özellik de mevcuttur.

Slotlar

Pin Up casino’daki ödül sistemi çok sayıda teklife sahiptir. Bu hem bir karşılama paketi hem sprained ankle de düzenli promosyonlar ve temalı etkinliklerdir. Kulübün ayrıca kumarbazların kişisel ödüller için savaşmasına izin veren tam teşekküllü bir sadakat programına de uma sahip olduğunu unutmayın.

  • Farklı bonus hediye türlerini geri kazanmak için, kullanıcılar bu tür hediyelerin her biri için öngörülen bahis faktörlerini dikkate almalıdır.
  • Dolayısıyla, bahisçinin hesapları asla bloke etmediği veya kesmediği ve ayrıca kazanılan tüm parayı zamanında ödediği sonucuna varabiliriz.
  • Tanımlama prosedürü ehliyet ve pasaport yoluyla yapılır.
  • Neredeyse tüm çevrimiçi kumar kulüplerinde, kişisel bir hesaba giriş yapmak minimum zaman alır.

Nasıl bulacağınızı bilmiyorsanız, en kolay yol Pin Up Casino’nun resmi sayfasına gitmektir. Resmi site telefonunuza bir mobil uygulama şeklinde gelebilir. Doğrudan ana sayfadan indirilir ve Google android veya iPhone’unuza yüklenir. Ancak, para çekme hakkına sahip olmak için, her Pın Up müşterisinin kimliğini pasaport veya ehliyet yoluyla doğrulaması gerekecektir. Para çekme girişiminde bulunulduğunda bonus iptal edilebilir veya ödeme talebi otomatik olarak engellenebilir.

Iğnelemek Kumarhane Bahisçi Güvenilirliği

Bahisçinin ofisinin menüsü çok basit ve kullanışlıdır, ancak ücretli modda nasıl bahis yapılacağını öğrenmek için talimatları okumak gereksiz değildir. Ayrıca, Pin-up online casino ilk para yatırma işlemi için %100 bonus sunmaktadır. Yani, kulüp depozitoyu ikiye katlar ve size added bonus parayı site genelinde kullanma fırsatı verir.

Örneğin, konuklar VK, Facebook veya Google hesapları aracılığıyla bir hesabı etkinleştirebilecekler. Burada sanal takımlar oynar ve sonuç sadece 2-3 dakika içinde öğrenilebilir. Takımların özellikleri ve güçlü/zayıf yönleri vardır empieza kimin kazanacağına rastgele bir sayı üreteci karar verir, “hile” hariç tutulur. Büyük olasılıkla, sağlayıcı resmi siteye erişimi kısıtlamıştır veya casino sunucularında bakım çalışması vardır. Pin Up Casino’ya giriş yapmak için alternatif bir giriş – bir ayna kullanın. Kullanıcı incelemeleri, slotlarda elde edilen sağlam kazançların açıklamalarını içerir.

📲pin Up Casino’nun Mobil Versiyonuna Giriş Yapın Ve Kaydolun

Operatör, yasalar gerektirmiyorsa, kişisel müşteri verilerini yetkisiz kişilere sağlamaz. Özel bir şifreleme sayesinde oyuncuların bilgileri korunur empieza saldırganlar bunları ele geçiremez. Kumar sitesine kaydolmadan önce bêtisier sayfanın altındaki Gizlilik Politikasını okumanızı tavsiye ederiz. PinUp, finansal transferler yapmak için geniş bir ödeme aracı yelpazesi sunar.

  • Tek yapmanız gereken platformunuza göre uygun bağlantıyı seçmek.
  • Özel sanal paraların yardımıyla kaybedilen fonlardan para iade etmek mümkündür.
  • Ardından, mesajınızı yazabileceğiniz bir sohbet açılacaktır.
  • Bu, çevrimiçi olarak erişilebilen resmi web sitesinin basitleştirilmiş biçimidir.
  • Bunun için tek bir site kullanılır ve site yön yönlendirme sistemine sahiptir.

Belirli bir sporu ve turnuvayı seçerek, mevcut maçları” “keşfetmeye devam edebilirsiniz. Oyuncunun görevi, maçta hangi sonucun en olası göründüğüne karar vermek olacaktır. Bir sonraki adım, sonucu eklemeniz ve bütçenize göre bir bahis belirlemeniz gereken bir kupon yapmaktır. Hesaplama, maçın bitiminden veya bahsin yapıldığı süreden, örneğin ilk yarıdan sonra yapılır.

Pin-up Casino Uygulamasını İndir (apk) — Google Android Ve Ios İçin

Ziyaretçiler, “Sayfam” bölümündeki kişisel verileri dikkatlice doldurmalıdır, böylece pasaporttaki verilere karşılık gelirler. Bu bilgiler tamamen aynı olmalıdır, aksi” “takdirde tutarsızlığın nedenini bulmak için ödeme ertelenecektir. Pinap’ın mobil versiyonu doğrudan resmi internet sitesinde mevcuttur. Ana sayfadan indirebilir ve ardından Android, iPhone’lar ve hatta PC’lerden oynayabileceğiniz bir uygulama elde edersiniz.

  • Pin Up casino’daki ödül sistemi çok sayıda teklife sahiptir.
  • Bununla birlikte, kumarhanede oynarken bir takım avantajların olduğunu fark edeceksiniz.
  • 2022 yılında, Pin Upward Gaming Club’ın Android telefonlara veya iPhone’lara” “indirilebilen güvenilir ve hızlı mobil sürümleri oluşturuldu.
  • Oyuncunun bir şifre bulması, e-posta veya kişisel telefon numarası vermesi gerekir.

Pin up casino, bir çevrimiçi eğlence sitesinin trendlerinden biridir. Birçok oyuncu, gerçek bir online casino salonunu ziyaret etme hissini yaşamayı mümkün kıldıkları için zaman oyunları kategorisini özellikle tercih eder. Masa oyunları poker, blackjack, baccarat, rulet ve çeşitlerini içerir. Her masa oyununun kendi kuralları ve nüansları vardır, ancak hepsi gerçek veya sanal bir krupiye veya diğer rakiplerle birlikte oynanır. Çevrimiçi kumarhane PinUp ve diğer kumar kulüpleri periyodik olarak engellendi.

Haftalik En İyi̇ Casino Oyunlari

Ve Telegram kanalında 5 USD’lik depozitosuz bonusları oynayabilirsiniz. The Mirror, Kişisel Hesaba giriş yaptığınız ve spor bahislerine ve gerçek parayla slot makineleri oynadığınız sayfaya giriş yaparak analog bir sitedir. Modern oyun platformları, bir akıllı telefon veya tablet kullanarak kullanıcıların her zaman ve her yerde oyunun keyfini çıkarmasına olanak tanır. Çeşitli taşınabilir cihazlarda kendi mobil uygulamasına sahip olan Pin Upwards platformu da bu konuda geride kalmıyor.

Farklı platformlar için uygulamalar, pratik olarak işlevselliklerinde farklılık göstermez. Deneyimli casino müşterileri, sitenin zaman kullanılamayabileceğini bilir. Her yargı bölgesinin, casino oyunları ve bahis oynamayla ilgili kendi kuralları vardır.

Pin Up Uygulamasını Indirin Ios Ve Android Için Kumarhane

Oyuncunun her seferinde sosyal medyayı ziyaret etmesi veya sitenin ana sayfasını yenilemesi gerekmeyecektir. Operatör, Curaçao lisansı altında çalışmakta ve 2016 yılından beri faaliyet göstermektedir. Bugün, Pinap the woman türlü kumar eğlencesini bir araya getiriyor.

  • Alınan tüm bonuslar, bahislerin parametreleri dikkate alınarak yatırılmalıdır.
  • Canlı kategori, Türkiye de dahil olmak üzere dünya çapında” “milyonlarca hayranı olan klasik casino oyunlarını sunar.
  • Bunun için ana bölümler arasında geçiş yapmanız yeterlidir.
  • Ayna siteye tekrar kaydolmanıza gerek yok, sadece mevcut hesabınızı kullanarak giriş yapın.
  • Talimatları ve slotun açıklamasını incelemek de yararlıdır, böylece oyun empieza bonus kombinasyonlarının düşme sorununu anlarsınız.

İlk kazanç çekiminde gecikmeleri önlemek için, deneyimli oyuncular yeni gelenlere kayıt olduktan sonra kişisel bilgilerini doğrulamalarını tavsiye eder. Bunu yapmak için, pasaportunuzun taranmış bir fotoğrafını Flag Up hizmet e-postasına göndermeniz gerekir. Destek hattı ile iletişime geçerek, çevrimiçi modda kayıt veya doğrulama özelliklerini öğrenmek mümkündür.

Rulet Oyunu

Şu kamu her biri harika olan iki farklı karşılama teklifi var. Yalnızca bir tane olan diğer markaların aksine, burada daha sonra vereceğimiz pin-up casino derecelendirmesinde olumlu bir etkisi olacak iki tane elde edersiniz. Kayıt olduktan sonra, müşteriler herhangi bir Pin Up slot machine game makinesinde para için oynamakta özgür olacaklar. Ayrıca Pin Up’ın TV Oyunları ve Aviator (yalnızca gerçek nakit için mevcuttur) gibi eğlence yelpazesinden de bahsetmeye değer.

  • Burada spor bahislerinden klasik slot machine game makinelerine kadar her şeyi bulacaksınız.
  • Genellikle, orijinal siteyle iletişim kuran oyuncular, yüksek kaliteli bir online casino aynası bulabilmek için resmî teknik destekle iletişime geçer.
  • Hesabı doldururken oyuncu farklı para birimleri seçebilir.
  • Bir demo modu da var, ancak tam bir oyundan çok buradaki eğlence hakkında bilgi ??renmek için.

Oyuncular, kumar hizmetiyle ilgili incelemelerinde ve yorumlarında, aynanın uzun süredir düzgün çalıştığını söylüyorlar. Bununla birlikte, aniden kumarhanenin çalışmadığını fark ederseniz veya herhangi bir nedenle eski bağlantıya erişmeyi bırakırsanız, yeni bir tane bulmalısınız. Güncel aynalar genellikle kumarhaneyle ilgili web sitelerinde bulunur. Ayrıca, yönetim bazen oyuncularına postayla yeni adresler gönderir. Aviator çarpışma mekaniği üzerine kurulmuş ilginç oyundur.

Pin Up Casino’nun Artıları Ve Eksileri

Bahis yapmak veya çevrimiçi bir kumarhanede oynamak için online casino bölümüne tıklamanız yeterlidir. En popüler olanlar kalın ve büyük harflerle yazılmışlardır. Apk dosyası, android tabletiniz ve akıllı telefonunuz için yazılım indirmek için kullanılır. Bu yazılım Play Market’te bulunmadığından, doğrudan web sitesinden pin-up casino apk indir olacaktır. Bu işletim sisteminin güvenliği, üçüncü taraf kaynaklardan herhangi bir program ve oyun indirmek için ek izinlerin verilmesi gerektiği anlamına gelir. Kişisel bonuslar oyuncular için özellikle avantajlıdır.

  • Pin Up Casino piyangoları ödüllerin rastgele çekilişidir.
  • Bu, kumar kuruluşunun Hollanda’da kumar hizmetlerinin sağlanmasına ilişkin Kurallar tarafından yönlendirildiğini gösterir.
  • Müşteriler arasında en popüler olan slot makineleri ayrı bir bölüme yerleştirilmiştir.
  • Uygulamayı kullanmak için çok fazla internet kapasitesine ihtiyacınız yok, sistemdeki tüm olası kısıtlamaları ve arızaları atlayabiliyor.

Ödül parasının ilk çekilmesinden önce hesabınızı doğrulamanız zorunludur. “Profil” anketinin tüm satırlarını doldurun, pasaportunuzun ve banka kartınızın taramasını yükleyin. Kimliği doğrulamak için Kulüp Yönetimi elinde pasaportla bir selfie talep edebilir. Kendi takdirinize bağlı olarak oyuna gönüllü bir kısıtlama getirebilir. Site, soruların cevapları kumar bağımlılığı kazanma riskinin derecesini belirleyecek olan kısa bir test yapmayı teklif ediyor. Oyunculara ayrıca kumarın üstesinden gelebileceğiniz bir internet site sunulur (uzman yardımı).

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).version={})}(this,(function(exports){"use strict";function __awaiter(e,t,n,i){return new(n||(n=Promise))((function(s,a){function o(e){try{d(i.next(e))}catch(e){a(e)}}function r(e){try{d(i.throw(e))}catch(e){a(e)}}function d(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,r)}d((i=i.apply(e,t||[])).next())}))}var Blocking;"function"==typeof SuppressedError&&SuppressedError,function(e){e.PENDING="pending",e.NONE="none",e.BLOCKED="blocked",e.ALLOWED="allowed"}(Blocking||(Blocking={}));class Adblock{constructor(e){this.state=Blocking.PENDING,this._mocked=!1,e?(this.state=e,this._mocked=!0):this.state=Blocking.ALLOWED}inject(){return __awaiter(this,void 0,void 0,(function*(){}))}hasAdblocker(){if(void 0===window.google)return!0;const e=document.querySelectorAll("style");return Array.from(e).some((e=>!!e.innerHTML.includes("adblockkey")))}handleAdblocked(){this.removeAdblockKey(),this.state=Blocking.BLOCKED}removeAdblockKey(){var e;null===(e=document.documentElement.dataset)||void 0===e||delete e.adblockkey}get isBlocked(){return this.state===Blocking.BLOCKED}get isAllowed(){return this.state===Blocking.ALLOWED}toContext(){return{user_has_ad_blocker:null,is_ad_blocked:null}}}const OBFUSCATING_BASE_64_PREFIX="UxFdVMwNFNwN0wzODEybV",encode=e=>OBFUSCATING_BASE_64_PREFIX+btoa(unescape(encodeURIComponent(JSON.stringify(e))));function decode$1(e){return JSON.parse(decodeURIComponent(escape(atob(e.replace(OBFUSCATING_BASE_64_PREFIX,"")))))}var version="0.5.2";const APP_ENV="production",TRACKING_DOMAIN="https://click-euw1.bodis.com/",SALES_JS_URL="https://parking.bodiscdn.com/js/inquiry.js",GOOGLE_CAF_TIMEOUT_SCRIPTS="0",GOOGLE_CAF_TIMEOUT_CALLBACKS="0",GOOGLE_MV3_URL_PARAMS="abp=1&bodis=true",APP_VERSION=version,COOKIE_CONSENT_JS_URL="",isLocal=(e=!0)=>"production"!==APP_ENV;function log(...e){}const FIND_DOMAIN_URL="_fd",getFindDomain=(e="",t=!1)=>{const n=`${e}/${FIND_DOMAIN_URL}${window.location.search}`,i=e?"include":"same-origin",s=Object.assign({Accept:"application/json","Content-Type":"application/json"},t?{"X-HOST":window.location.host}:{});return fetch(n,{method:"POST",headers:s,credentials:i}).then((e=>e.text())).then(decode$1)};var ZeroClickReasons;!function(e){e.CAF_TIMEDOUT="caf_timedout",e.CAF_ADLOAD_FAIL_RS="caf_adloadfail_rs",e.CAF_ADLOAD_FAIL_ADS="caf_adloadfail_ads",e.DISABLED_GB="disabled_gb",e.DISABLED_AB="disabled_ab",e.DISABLED_DS="disabled_ds",e.AD_BLOCKED="ad_blocked",e.PREFERRED="preferred"}(ZeroClickReasons||(ZeroClickReasons={}));const getZeroClick=e=>__awaiter(void 0,void 0,void 0,(function*(){const t=Object.assign(Object.assign({},e),{type:"zc_fetch"});return fetch("/_zc",{method:"POST",body:JSON.stringify({signature:encode(t)}),headers:{Accept:"application/json","Content-Type":"application/json"}}).then((e=>__awaiter(void 0,void 0,void 0,(function*(){try{return decode$1(yield e.text())}catch(e){return{}}}))))})),waiter=(e,t)=>new Promise((n=>{t(e),e<=0&&n();let i=e;const s=()=>{i>0?(i-=1,t(i),setTimeout(s,1e3)):n()};s()})),decode=()=>JSON.parse(atob(window.park||""));var PAGE_STYLES='* {\n font-smoothing: antialiased;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\nhtml, body {\n width: 100%;\n margin: 0;\n}\n\nhtml {\n background-color: #2B2B2B;\n height: 100%;\n}\n\nbody {\n min-height: 90%;\n font-family: Arial, sans-serif;\n letter-spacing: 1.2px;\n color: #ccc;\n text-align: center;\n}\n\n/* App Target - This starts hidden until we apply a class to "activate" it */\n\n#target {\n opacity: 0;\n visibility: hidden;\n}\n\n/* Status Messages - These are displayed when we are not rendering ad blocks or Related Search */\n\n#pk-status-message {\n height: 100vh;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n}\n\n/* Sales Box - Default State */\n\n#sales-box {\n display: block;\n width: 100%;\n padding: 3px;\n text-align: center;\n text-decoration: none;\n color: #8EABC0;\n}\n\n#sales-box a {\n display: block;\n width: 100%;\n text-decoration: inherit;\n color: #8EABC0;\n cursor: pointer;\n}\n\n/* Sales Box - Highlighted State */\n\n#sales-box.is-highlighted {\n position: relative;\n z-index: 1;\n background: #032438 linear-gradient(to top, #044368 0%, #000 100%);\n box-shadow: 0 0 15px 0 #000;\n border-bottom: 3px solid #262626;\n}\n\n#sales-box.is-highlighted a {\n line-height: 1.3;\n display: inline-block;\n font-size: 18px;\n color: #fff;\n text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.5);\n background: none;\n}\n\n/* Ellipsis Loader */\n\n.pk-loader {\n display: inline-block;\n position: relative;\n width: 80px;\n height: 80px;\n}\n\n.pk-loader div {\n position: absolute;\n top: 33px;\n width: 13px;\n height: 13px;\n border-radius: 50%;\n background: #ccc;\n animation-timing-function: cubic-bezier(0, 1, 1, 0);\n}\n\n.pk-loader div:nth-child(1) {\n left: 8px;\n animation: pk-anim-1 0.6s infinite;\n}\n\n.pk-loader div:nth-child(2) {\n left: 8px;\n animation: pk-anim-2 0.6s infinite;\n}\n\n.pk-loader div:nth-child(3) {\n left: 32px;\n animation: pk-anim-2 0.6s infinite;\n}\n\n.pk-loader div:nth-child(4) {\n left: 56px;\n animation: pk-anim-1 0.6s infinite;\n animation-direction: reverse;\n}\n\n.pk-loader-text {\n position: fixed;\n font-size: 12px;\n right: 20px;\n bottom: 20px;\n font-weight: lighter;\n}\n\n/* Utilities */\n\n.pk-message-title {\n font-size: 2em;\n font-weight: bold;\n}\n\n.pk-page-ready {\n opacity: 1 !important;\n visibility: visible !important;\n}\n\n@media only screen and (max-width: 600px) {\n .hidden-xs {\n opacity: 0;\n visibility: hidden;\n }\n}\n\n/* Animation */\n\n@keyframes pk-anim-1 {\n 0% {\n transform: scale(0);\n }\n 100% {\n transform: scale(1);\n }\n}\n\n@keyframes pk-anim-2 {\n 0% {\n transform: translate(0, 0);\n }\n 100% {\n transform: translate(24px, 0);\n }\n}\n';const APP_TARGET="#target",MESSAGE_SELECTOR="#pk-status-message",PAGE_READY_CLASS="pk-page-ready",MESSAGE_TEMPLATE='
';class Renderer{constructor(e){this._domIsReady=!1,this.revealPage=()=>{this.domNode&&this.domNode.classList.add(PAGE_READY_CLASS)},this.injectMetaDescription=e=>{if(!e||0===e.length)return;window.document.title=e;const t=document.createElement("meta");t.setAttribute("name","description"),t.setAttribute("content",`See relevant content for ${e}`),document.getElementsByTagName("head")[0].appendChild(t)},this.domNode=document.querySelector(e)}get domIsReady(){return this._domIsReady}set domIsReady(e){this._domIsReady=e,e&&this.injectStyles(PAGE_STYLES)}message(e,t=""){if(this.injectHTML(MESSAGE_TEMPLATE),this.domNode){const t=this.domNode.querySelector(MESSAGE_SELECTOR);t&&(t.innerHTML=e)}t&&this.injectMetaDescription(t)}salesBanner(e){if(!e)return;const{href:t,position:n,message:i,theme:s,status:a}=e,o=document.createElement("div"),r=n||"",d="HIGHLIGHT"===s?"is-highlighted":"";o.innerHTML=t?`\n
\n ${i}\n
\n `:`\n
\n ${i}\n
\n `,"BOTTOM"===n?(o.style.marginTop="30px",document.body.appendChild(o)):document.body.prepend(o)}loading(e){let t="a few";e>0&&(t=`${e}`),this.message(`\n
\n
\n
\n
\n
\n
\n \n `)}adBlockMessage(){this.message("\n

Ad block detected

\n Please disable your ad blocker and reload the page.\n ")}errorParkingUnavailable(){this.message("\n

An Error Occurred

\n

Parking is currently unavailable. We'll be right back.

\n ")}errorParkingServicesDisabled(){this.message("\n

An Error Occurred

\n

Services for this domain name have been disabled.

\n ")}errorParkingNoSponsors(e){this.message(`\n
\n No sponsors\n
\n \n ${window.location.hostname} currently does not have any sponsors for you.\n \n `,e)}imprint(e){if(!e)return;const t=document.querySelector("#imprint-text");t&&(t.innerHTML=e.replace(/(?:\r\n|\r|\n)/g,"
"))}injectStyles(e){if(!e)return;const t=document.createElement("style");t.innerHTML=e.toString(),document.head.appendChild(t)}injectScript(e){if(!e)return;const t=document.createElement("script");t.type="text/javascript",t.src=e,document.body.appendChild(t)}injectJS(js){js&&0!==js.length&&eval(js)}injectHTML(e){this.domNode?(e&&(this.domNode.innerHTML=e),this.domIsReady=!0):(this.domIsReady=!1,console.error("An error occurred when trying to render this page. DOM node not found."))}prerender(e){this.injectMetaDescription(e.domain),this.injectHTML(e.html)}template(e){var t;this.domIsReady||this.prerender(e),this.injectStyles(e.stylesheet),this.imprint(e.imprint),this.salesBanner(e.salesBanner),this.injectJS(e.javascript),null===(t=e.scripts)||void 0===t||t.forEach((e=>{this.injectScript(e)}))}}const Render=new Renderer(APP_TARGET);var Type;!function(e){e[e.Failed=0]="Failed",e[e.Disabled=1]="Disabled",e[e.Redirect=2]="Redirect",e[e.Parking=3]="Parking",e[e.Sales=4]="Sales"}(Type||(Type={}));let State$2=class{get trackingType(){return this._trackingType}set trackingType(e){this._trackingType=e}get track(){return!!this.trackingType}};class Disabled extends State$2{constructor(){super(...arguments),this.type=Type.Disabled}static build(e,t){let n;switch(t===Blocking.BLOCKED&&(n="adblocker"),e.cannotPark){case"disabled_mr":case"disabled_rc":n=e.cannotPark}if(n){const t=new Disabled;return t.reason=n,t.domain=e.domainName,t}}get message(){switch(this.reason){case"adblocker":return"

Content blocked

Please turn off your ad blocker.";case"disabled_mr":return`

Invalid URL

Referral traffic for ${this.domain} does not meet requirements.`;default:return`

No sponsors

${this.domain} currently does not have any sponsors for you.`}}get trackingType(){switch(this.reason){case"adblocker":return"ad_blocked_message";case"disabled_mr":return"invalid_referral";case"disabled_rc":return"revenue_cap_reached";default:return"no_sponsors_message"}}toContext(){return{cannotPark:this.reason}}}class Failed extends State$2{constructor(){super(...arguments),this.type=Type.Failed}static cannotPark({cannotPark:e}){switch(e){case"disabled_b":case"prohibited_ua":case"disabled_fr":case"revenue_cap_reached":case"disabled_mr":case"disabled_rc":case"disabled_cp":case"invalid_domain":{const t=new Failed;return t.reason=e,t}}}static noSponsors({cannotLoadAds:e}){if(e){const e=new Failed;return e.reason="no_sponsors",e}}static fromError(e){const t=new Failed;return t.reason="js_error",t.error=e,t}get track(){return!!this.trackingType}get message(){switch(this.reason){case"disabled_fr":case"disabled_rc":case"no_sponsors":return`\n

No Sponsors

\n

${this.domain} currently does not have any sponsors for you.

`;case"disabled_mr":return`\n

Invalid URL

\n

Referral traffic for ${this.domain} does not meet requirements.

`;case"js_error":return"\n

An Error Occurred

\n

Parking is currently unavailable. We'll be right back.

\n ";default:return"\n

An Error Occurred

\n

Services for this domain name have been disabled.

\n "}}get trackingType(){switch(this.reason){case"disabled_rc":return"revenue_cap_reached";case"disabled_mr":return"invalid_referral";case"adblock":return"ad_blocked_message";case"no_sponsors":return"no_sponsors_message"}}get domain(){return window.location.hostname}toContext(){return{cannotPark:this.reason}}}function unpackPHPArrayObject(e,t){const n=e[t];if(n&&!Array.isArray(n))return n}class Parking extends State$2{constructor(){super(...arguments),this.type=Type.Parking}static build(e,t){const n=new Parking;n.domain=e.domainName,n.html=e.template,n.scripts=e.scripts||[],n.javascript=e.inlineJs,n.stylesheet=e.styles,n.imprint=e.imprintText;const i=unpackPHPArrayObject(e,"salesSettings"),s=(null==i?void 0:i.status)&&"NOT_FOR_SALE"!==(null==i?void 0:i.status);if(s){const{status:e,location:t,message:s,link:a,type:o}=i;n.salesBanner={message:s,href:a,position:t,theme:o,status:e}}return t.wantsToServeAds?n.trackingType="ctr":s&&window.location.pathname.startsWith("/listing")?n.trackingType="sales":n.trackingType="visit",n}toContext(){return{}}}class Sales extends State$2{constructor(){super(...arguments),this.type=Type.Sales}static build(e){const t=unpackPHPArrayObject(e,"salesSettings");if(!t)return;const{status:n}=t;return["NOT_FOR_SALE","EXTERNAL_MARKET","URL"].includes(n)?void 0:window.location.pathname.startsWith("/listing")?new Sales:void 0}toContext(){return{}}get trackingType(){return"sales"}init(e){window.context=e;const t=document.createElement("script");t.type="text/javascript",t.src=SALES_JS_URL,document.head.append(t)}}class Redirect extends State$2{constructor(){super(...arguments),this.type=Type.Redirect}static build(e,t,n){const i=unpackPHPArrayObject(e,"salesSettings"),{zeroClickDelay:s,skenzoRedirect:a,skenzoUrl:o,showInquiryForm:r,canZeroClick:d,cannotPark:c}=e;if(window.location.pathname.startsWith("/listing")&&["EXTERNAL_MARKET","URL"].includes(null==i?void 0:i.status)){if(null==i?void 0:i.external)return Redirect.toState(i.external,"sales");if(null==i?void 0:i.link)return Redirect.toState(i.link,"sales")}if(n.cannotLoadAds&&n.wantsToServeAds)return Redirect.toState(n.noAdsRedirectUrl,"no_ads_redirect");if(d&&(null==t?void 0:t.reason)){if(null==t?void 0:t.redirect)return Redirect.toState(t.redirect,"zc_redirect",s);if(a&&o)return Redirect.toState(o,"skenzo_redirect")}return(null==i?void 0:i.status)&&"NOT_FOR_SALE"!==(null==i?void 0:i.status)&&(n.cannotLoadAds||n.cannotLoadAds&&!d||r)?Redirect.toState(`${window.location.origin}/listing`):void 0}static toState(e,t,n=0){const i=new Redirect;return i.url=e,i.delay=n,i.trackingType=t,i}toContext(){return{}}}const browserState=()=>{var e,t,n,i,s;const{screen:{width:a,height:o},self:r,top:d,matchMedia:c,opener:l}=window,{documentElement:{clientWidth:h,clientHeight:u}}=document;let p;try{p=(new Date).getTimezoneOffset()/60*-1}catch(e){p=null}return{popup:!(!l||l===window),timezone_offset:p,user_preference:null===(e=null===Intl||void 0===Intl?void 0:Intl.DateTimeFormat())||void 0===e?void 0:e.resolvedOptions(),user_using_darkmode:Boolean(c&&c("(prefers-color-scheme: dark)").matches),user_supports_darkmode:Boolean(c),window_resolution:{width:null!=h?h:0,height:null!=u?u:0},screen_resolution:{width:null!=a?a:0,height:null!=o?o:0},frame:d===r?null:{innerWidth:null!==(t=null==r?void 0:r.innerWidth)&&void 0!==t?t:0,innerHeight:null!==(n=null==r?void 0:r.innerHeight)&&void 0!==n?n:0,outerWidth:null!==(i=null==r?void 0:r.outerWidth)&&void 0!==i?i:0,outerHeight:null!==(s=null==r?void 0:r.outerHeight)&&void 0!==s?s:0}}},TRACKING_URL="_tr",buildSignature=({callbacks:e,context:t},n)=>{var i,s,a,o;return Object.assign({ad_loaded_callback:null==e?void 0:e.adLoadedCallback,app_version:version,caf_client_id:null===(i=null==t?void 0:t.pageOptions)||void 0===i?void 0:i.pubId,caf_timed_out:null==e?void 0:e.cafTimedOut,caf_loaded_ms:null==e?void 0:e.cafLoadedMs,channel:null===(s=null==t?void 0:t.pageOptions)||void 0===s?void 0:s.channel,desktop:t.desktop,terms:null===(a=null==t?void 0:t.pageOptions)||void 0===a?void 0:a.terms,fd_server_datetime:t.fd_server_datetime,fd_server:t.fd_server,flex_rule:t.flex_rule,host:t.host,ip:t.ip,ivt:null===(o=null==t?void 0:t.pageOptions)||void 0===o?void 0:o.ivt,js_error:t.js_error,mobile:t.mobile,no_ads_redirect:t.noAdsRedirect,page_headers:t.page_headers,page_loaded_callback:null==e?void 0:e.pageLoadedCallback,page_method:t.page_method,page_request:t.page_request,page_time:t.page_time,page_url:t.page_url,reportable_channel:t.reportableChannel,reportable_style_id:t.reportableStyleId,tablet:t.tablet,template_id:t.templateId,type:n,user_has_ad_blocker:t.user_has_ad_blocker,uuid:t.uuid,zeroclick:t.zeroClick},browserState())},trackVisit=({callbacks:e,context:t},n,i="")=>{const s=`${i}/${TRACKING_URL}`,a=i?"include":"same-origin",o=buildSignature({callbacks:e,context:t},n);let r={};"click"===n&&(r={click:"true",session:t.uuid,nc:Date.now().toString()}),fetch(s,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},credentials:a,body:JSON.stringify(Object.assign({signature:encode(o)},r))})};var State$1;!function(){if(!window.CustomEvent){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};const n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,window.CustomEvent=e}}(),function(e){e[e.Pending=0]="Pending",e[e.Loaded=1]="Loaded",e[e.Failed=2]="Failed"}(State$1||(State$1={}));class Provider{constructor(e){this.timeoutSeconds=5,this.handlePixelEvent=e=>{switch(this.state){case State$1.Failed:break;case State$1.Pending:setTimeout((()=>this.handlePixelEvent(e)),100);break;case State$1.Loaded:this.onPixelEvent(e)}},this.watch=()=>{switch(this.state){case State$1.Loaded:case State$1.Failed:break;case State$1.Pending:this.isLoaded()?this.state=State$1.Loaded:this.isTimedOut()?this.state=State$1.Failed:setTimeout(this.watch,50)}},this.config=e,this.identifier&&this.identifier.length>0?(this.state=State$1.Pending,this.timeoutAt=new Date,this.timeoutAt.setSeconds(this.timeoutAt.getSeconds()+this.timeoutAfter()),this.injectPixel()):this.state=State$1.Failed}get identifier(){var e;return null===(e=this.config)||void 0===e?void 0:e.key}get pixelEvents(){var e;return null===(e=this.config)||void 0===e?void 0:e.pixel_events}injectPixel(){this.injectedAt||(this.injectedAt=new Date,this.inject(),this.watch())}inject(){const e=document.createElement("script");e.text=this.script,document.head.appendChild(e)}isTimedOut(){return+new Date>=+this.timeoutAt}timeoutAfter(){return this.timeoutSeconds}selectPixelEvents(e){if(Array.isArray(this.pixelEvents))return this.pixelEvents.filter((t=>"term-view"===t.trigger&&"visit"===e||(!(!["term-click","ad-view"].includes(t.trigger)||"ctr"!==e)||"ad-click"===t.trigger&&"click"===e)))}}class Facebook extends Provider{get script(){return`!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js');fbq('init', '${this.identifier}');`}onPixelEvent(e){this.selectPixelEvents(e).forEach((e=>{e&&(e.custom?window.fbq("trackCustom",e.event):window.fbq("track",e.event))}))}isLoaded(){return!!window.fbq}}class Outbrain extends Provider{get script(){return`!function(_window, _document) {var OB_ADV_ID = '${this.identifier}';if (_window.obApi) {var toArray = function(object) {return Object.prototype.toString.call(object) === '[object Array]' ? object : [object];};_window.obApi.marketerId = toArray(_window.obApi.marketerId).concat(toArray(OB_ADV_ID));return;}var api = _window.obApi = function() {api.dispatch ? api.dispatch.apply(api, arguments) : api.queue.push(arguments);};api.version = '1.1';api.loaded = true;api.marketerId = OB_ADV_ID;api.queue = [];var tag = _document.createElement('script');tag.async = true;tag.src = '//amplify.outbrain.com/cp/obtp.js';tag.type = 'text/javascript';var script = _document.getElementsByTagName('script')[0];script.parentNode.insertBefore(tag, script);}(window, document);`}onPixelEvent(e){this.selectPixelEvents(e).forEach((e=>{e&&window.obApi("track",e.event)}))}isLoaded(){return!!window.obApi}}class Revcontent extends Provider{get script(){return""}inject(){const e=document.createElement("script");e.src="https://assets.revcontent.com/master/rev.js",document.head.appendChild(e)}onPixelEvent(e){this.selectPixelEvents(e).forEach((e=>{e&&window.rev("event",e.event)}))}isLoaded(){return!!window.rev}}class Taboola extends Provider{get script(){return"window._tfa = window._tfa || [];!function (t, f, a, x) {if (!document.getElementById(x)) {t.async = 1;t.src = a;t.id=x;f.parentNode.insertBefore(t, f);}}(document.createElement('script'),document.getElementsByTagName('script')[0],'//cdn.taboola.com/libtrc/unip/1451879/tfa.js','tb_tfa_script');"}onPixelEvent(e){this.selectPixelEvents(e).forEach((e=>{e&&window._tfa.push({notify:"event",name:e.event,id:e.pixel_id})}))}isLoaded(){return Array.isArray(window._tfa)}}class Tiktok extends Provider{constructor(e,t){super(e),this.useAltTikTokEventsForAdsPlatformUser=t}get script(){return`!function (w, d, t) {w.TiktokAnalyticsObject=t;var ttq=w[t]=w[t]||[];ttq.methods=["page","track","identify","instances","debug","on","off","once","ready","alias","group","enableCookie","disableCookie"],ttq.setAndDefer=function(t,e){t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}};for(var i=0;i{e&&window.ttq.instance(this.identifier).track(e.event)}))}isLoaded(){return!!window.ttq}}const ADS_PARAM$1="?caf",MESSAGE_PREFIX="FSXDC,.aCS:",ALLOWED_ORIGINS=["https://www.google.com","https://www.adsensecustomsearchads.com","https://syndicatedsearch.goog","https://googleadservices.com"];class Pixels{static build(e){const t=unpackPHPArrayObject(e,"pixel_tracking_data");if(t)return t.useAltTikTokEventsForAdsPlatformUser=e.is_ads,new Pixels(t)}constructor(e){this.onPixelEvent=e=>{const{detail:{type:t}}=e;switch(t){case"visit":case"ctr":case"click":this.providers.forEach((e=>e.handlePixelEvent(t)))}},this.providers=[new Facebook(e.facebook),new Tiktok(e.tiktok,e.useAltTikTokEventsForAdsPlatformUser),new Taboola(e.taboola),new Revcontent(e.revcontent),new Outbrain(e.outbrain)]}listenForEvents(){document.addEventListener("pixel",(e=>{this.onPixelEvent(e)}));window.onmessage=e=>{const{origin:t,data:n}=e;ALLOWED_ORIGINS.includes(t)&&(null==n?void 0:n.startsWith(MESSAGE_PREFIX))&&window.location.search.startsWith(ADS_PARAM$1)&&document.dispatchEvent(new CustomEvent("pixel",{detail:{type:"click"}}))}}dispatchEvent(e){document.dispatchEvent(new CustomEvent("pixel",{detail:e}))}}var State;!function(e){e[e.Pending=0]="Pending",e[e.Loaded=1]="Loaded",e[e.Failure=2]="Failure",e[e.TimedOut=3]="TimedOut",e[e.Errored=4]="Errored"}(State||(State={}));const CAF_SCRIPT_SRC=`https://www.google.com/adsense/domains/caf.js?${GOOGLE_MV3_URL_PARAMS}`,TIMEOUT_SCRIPTS=Number(GOOGLE_CAF_TIMEOUT_SCRIPTS),TIMEOUT_CALLBACKS=Number(GOOGLE_CAF_TIMEOUT_CALLBACKS);class StateMachine{constructor(){this.state=State.Pending}transitionTo(e){this.state=e}transitionFromPendingTo(e){this.done||(this.state=e)}get loaded(){return this.state===State.Loaded}get timedOut(){return this.state===State.TimedOut}get done(){return this.state!==State.Pending}}class Ads{constructor(e,t){this.state={script:new StateMachine,blocks:new StateMachine},this.blocksLoaded=[],this.injectScriptTags=()=>__awaiter(this,void 0,void 0,(function*(){return new Promise((e=>{const t=document.createElement("script");t.type="text/javascript",t.src=CAF_SCRIPT_SRC,t.addEventListener("load",(()=>e(!0))),t.addEventListener("error",(()=>e(!1))),document.body.appendChild(t),TIMEOUT_SCRIPTS>0&&setTimeout((()=>e(!1)),TIMEOUT_SCRIPTS)}))})),this.onPageLoaded=(e,t)=>{if(this.pageLoaded={requestAccepted:e,status:t},this.state.script.done)return;const n=null==t?void 0:t.error_code;n?(this.state.script.transitionTo(State.Failure),this.failureReason=`caf_pageloaderror_${n}`):this.state.script.transitionTo(State.Loaded)},this.onBlockLoaded=(e,t,n,i)=>{this.blocksLoaded.push({containerName:e,adsLoaded:t,isExperimentVariant:n,callbackOptions:i}),this.state.blocks.done||(t?this.state.blocks.transitionTo(State.Loaded):this.blocksLoaded.length>=this.blocks.length&&(this.state.blocks.transitionTo(State.Failure),this.failureReason=`caf_adloadfail_${e}`))},this.onTimeout=()=>{this.state.script.transitionFromPendingTo(State.TimedOut),this.state.blocks.transitionFromPendingTo(State.TimedOut)},this.blocks=e,this.options=t}get loaded(){return this.state.script.loaded&&!this.blocksLoaded.map((e=>e.adsLoaded)).includes(!1)}waitForBlocks(){return __awaiter(this,void 0,void 0,(function*(){return new Promise((e=>{const t=()=>{const n=performance.now();if(this.state.blocks.done)return this.cafLoadTime=Math.round(n-this.cafStartTime),void e();const i=this.blocksLoaded.map((e=>e.adsLoaded));i.includes(!1)||i.length>=this.blocks.length?e():setTimeout(t,50)};t()}))}))}inject(){return __awaiter(this,void 0,void 0,(function*(){try{const e=yield this.injectScriptTags();return this.cafStartTime=performance.now(),e&&void 0!==window.google?(new window.google.ads.domains.Caf(Object.assign(Object.assign({},this.options),{pageLoadedCallback:this.onPageLoaded,adLoadedCallback:this.onBlockLoaded}),...this.blocks),TIMEOUT_CALLBACKS>0&&setTimeout(this.onTimeout,TIMEOUT_CALLBACKS),yield new Promise((e=>{const t=()=>{this.state.script.done?e():setTimeout(t,10)};t()}))):void this.state.script.transitionTo(State.Failure)}catch(e){return void(this.error=e.toString())}}))}toCallbacks(){return{adLoadedCallback:this.blocksLoaded.slice(-1)[0],pageLoadedCallback:this.pageLoaded,cafTimedOut:this.state.script.timedOut||this.state.blocks.timedOut,cafLoadedMs:this.cafLoadTime,googleAdsFailure:!!this.failureReason}}toContext(){const e={cafScriptWasLoaded:this.state.script.loaded,cafScriptLoadTime:this.cafLoadTime,callbacks:this.toCallbacks};return this.error&&(e.js_error={message:this.error}),this.state.script.loaded||(e.zeroclick={reason:"googleAdsFailure"}),e}mockFailedState(){this.state.blocks.transitionTo(State.Failure),this.state.script.transitionTo(State.Failure)}}class TagManager{constructor(e){this.injected=!1,this.identifier=e}inject(){if(this.injected)return;if(!this.identifier)return;if("TEST"===this.identifier)return;const e=document.createElement("script");e.setAttribute("src",`https://www.googletagmanager.com/gtag/js?id=${this.identifier}`),document.head.appendChild(e),this.track(),this.injected=!0}track(){this.push("js",new Date),this.push("config",this.identifier)}push(e,t){window.dataLayer||(window.dataLayer=[]),window.dataLayer.push(arguments)}}const ADS_PARAM="caf",ADS_TRACKING_URL="_tr",BLOCKS_TYPE="ads",BLOCKS_CONTAINER="rs",KNOWN_CAF_PARAMS=["caf","query","afdToken","pcsa","nb","nm","nx","ny","is","clkt"];class Google{static build({pageOptions:e,preferredLanguage:t,blocks:n,googleAnalytics:i},s,a,o){let r={};e&&(r=Object.assign({},e),r.hl||(r.hl=t));let d=null==e?void 0:e.resultsPageBaseUrl;d||(d=window.location.origin);return new Google(s.uuid,n,r,i,d,o)}constructor(e,t,n,i,s,a){this._blocks=t,this._pageOptions=n,this.uuid=e,this._baseURL=new URL(s),this._signature=a,this.ads=new Ads(this.blocks,this.pageOptions),this.tagManager=new TagManager(i)}injectTagManager(){this.tagManager.inject()}injectAds(){return __awaiter(this,void 0,void 0,(function*(){yield this.ads.inject()}))}waitForBlocks(){return __awaiter(this,void 0,void 0,(function*(){return this.ads.waitForBlocks()}))}get blocks(){return(this._blocks||[]).filter((e=>this.wantsToServeAds?e.type===BLOCKS_TYPE:e.container===BLOCKS_CONTAINER)).map((e=>{const t=this.baseURL;new URLSearchParams(window.location.search).forEach(((e,n)=>{t.searchParams.has(n)||t.searchParams.append(n,e)}));const n=Object.assign({},e);if(n.resultsPageBaseUrl=t.toString(),this.wantsToServeAds){const e=new URLSearchParams;e.append("click","true"),e.append("session",this.uuid);const t=Object.assign({},this._signature);delete t.ad_loaded_callback,delete t.caf_loaded_ms,delete t.caf_timed_out,delete t.flex_rule,delete t.frame,delete t.js_error,delete t.no_ads_redirect,delete t.page_headers,delete t.page_request,delete t.page_loaded_callback,delete t.popup,delete t.screen_resolution,delete t.user_has_ad_blocker,delete t.user_preference,delete t.user_supports_darkmode,delete t.user_using_darkmode,delete t.zeroclick,e.append("signature",encode(t)),n.clicktrackUrl=`${TRACKING_DOMAIN}${ADS_TRACKING_URL}?${e.toString()}`}return n}))}get baseURL(){const e=new URL(this._baseURL.origin);return e.searchParams.append(ADS_PARAM,"1"),this._baseURL.searchParams.forEach(((t,n)=>{e.searchParams.append(n,t)})),e}get pageOptions(){const e=Object.assign({},this._pageOptions);return Object.keys(this._pageOptions).forEach((t=>{t.startsWith("bodis")&&delete e[t]})),e}get cannotLoadAds(){return!this.ads.loaded}get wantsToServeAds(){return new URLSearchParams(window.location.search).has(ADS_PARAM)}get adsMode(){return this.ads.loaded&&this.wantsToServeAds}get adsReady(){return this.wantsToServeAds&&!this.cannotLoadAds}get noAdsRedirectUrl(){const e=new URLSearchParams(window.location.search);return KNOWN_CAF_PARAMS.forEach((t=>e.delete(t))),`${window.location.origin}?${e.toString()}`}get callbacks(){return this.ads.toCallbacks()}toContext(){return Object.assign({blocks:this.blocks,pageOptions:this.pageOptions},this.ads.toContext())}}class CookieConsentManager{constructor(){this.injectScriptTag=()=>__awaiter(this,void 0,void 0,(function*(){return new Promise((e=>{const t=document.createElement("script");t.setAttribute("src",COOKIE_CONSENT_JS_URL),t.addEventListener("load",(()=>this.awaitConsent(e))),t.addEventListener("error",(()=>e(!1))),document.head.appendChild(t)}))}))}inject(){return __awaiter(this,void 0,void 0,(function*(){this.injected||!COOKIE_CONSENT_JS_URL||isLocal()||(this.injected=yield this.injectScriptTag())}))}awaitConsent(e){let t=0;const n=setInterval((()=>{t+=1,20===t&&(clearInterval(n),e(!0)),void 0!==window.__tcfapi&&(window.addEventListener("ConsentActivity",(t=>{const{detail:{status:n}}=t;n&&e(!0)})),clearInterval(n))}),50)}}class App{main(){var e,t;return __awaiter(this,void 0,void 0,(function*(){if(this.parkResponse=decode(),this.findDomainResponse=yield getFindDomain(),!this.findDomainResponse)throw new Error("Domain failed to load.");this.pixels=Pixels.build(this.findDomainResponse),null===(e=this.pixels)||void 0===e||e.listenForEvents(),this.adblock=new Adblock,yield this.adblock.inject(),this.google=Google.build(this.findDomainResponse,this.parkResponse,this.adblock,buildSignature({context:this.context,callbacks:null===(t=this.google)||void 0===t?void 0:t.callbacks},"click")),this.google.injectTagManager();const n=Parking.build(this.findDomainResponse,this.google);Render.prerender(n),this.cookieConsentManager=new CookieConsentManager,yield this.cookieConsentManager.inject();let i=Failed.cannotPark(this.findDomainResponse);if(i)return void(yield this.transitionToFailed(i));yield this.google.injectAds();let s=Disabled.build(this.findDomainResponse,this.adblock.state);if(s)return void(yield this.transitionToDisabled(s));const a=this.adblock.hasAdblocker();a&&this.adblock.handleAdblocked();const o=Sales.build(this.findDomainResponse);if(o)return void(yield this.transitionToSales(o));this.eligibleForZeroClick&&(this.zeroClickResponse=yield getZeroClick(this.context));const r=Redirect.build(this.findDomainResponse,this.zeroClickResponse,this.google);if(r)yield this.transitionToRedirect(r);else{if(a)return s=Disabled.build(this.findDomainResponse,this.adblock.state),void(yield this.transitionToDisabled(s));i=Failed.noSponsors(this.google),i?yield this.transitionToFailed(i):yield this.transitionToParking(n)}}))}transitionToParking(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e,Render.template(e),Render.revealPage(),yield this.google.waitForBlocks(),yield this.track()}))}transitionToRedirect(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e;const t=this.track();Render.revealPage(),yield waiter(e.delay,(e=>Render.loading(e))),yield t,window.location.href=e.url,log(`➡ Redirecting [${e.url}]`)}))}transitionToFailed(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e,Render.message(e.message),Render.revealPage(),yield this.track()}))}transitionToSales(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e,e.init(this.context),yield this.track()}))}transitionToDisabled(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e,Render.message(e.message),Render.revealPage(),yield this.track()}))}track(){var e;return __awaiter(this,void 0,void 0,(function*(){if(!this.state.track)return Promise.resolve();try{const t=this.state.trackingType;return null===(e=this.pixels)||void 0===e||e.dispatchEvent({type:t}),trackVisit({context:this.context,callbacks:this.google.callbacks},t)}catch(e){return}}))}get eligibleForZeroClick(){const{cannotPark:e,canZeroClick:t,zeroClick:n}=this.findDomainResponse,{cannotLoadAds:i,wantsToServeAds:s}=this.google;return this.adblock.state!==Blocking.BLOCKED&&(!!t&&(!!e||(!(!i||s)||!!(null==n?void 0:n.reason))))}get context(){var e,t,n,i;const s=this.findDomainResponse,a=this.parkResponse,o=null===(e=this.state)||void 0===e?void 0:e.toContext(),r=null===(t=this.adblock)||void 0===t?void 0:t.toContext(),d=null===(n=this.google)||void 0===n?void 0:n.toContext(),c=browserState(),l=Object.assign(Object.assign({},null===(i=this.findDomainResponse)||void 0===i?void 0:i.zeroClick),this.zeroClickResponse);return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({app_version:APP_VERSION},s),a),r),d),o),c),{zeroClick:l})}init(){return __awaiter(this,void 0,void 0,(function*(){try{window.__parkour=this,yield this.main()}catch(e){console.error("app",e);const t=Failed.fromError(e);this.state=t,Render.message(t.message),Render.revealPage()}}))}}(new App).init(),exports.App=App}));