Municipios libres de circos con animales salvajes en España

Andalucía:

  1. Adra (Almería)
  2. Aguilar de la Frontera (Córdoba)
  3. Aljaraque (Huelva)
  4. Aracena (Huelva)
  5. Arcos de la Frontera (Cádiz)
  6. Ayamonte (Huelva)
  7. Baena (Córdoba)
  8. Barbate (Cádiz)
  9. Benahavís (Málaga)
  10. Benalmádena (Málaga)
  11. Bollullos del Condado (Huelva)
  12. Campillos (Málaga)
  13. Castilleja del Campo (Sevilla)
  14. Cádiz
  15. Cájar (Granada)
  16. Casares (Málaga)
  17. Chipiona (Cádiz)
  18. Conil (Cádiz)
  19. Córdoba
  20. Écija (Sevilla)
  21. El Bosque (Cádiz)
  22. Estepona (Málaga)
  23. Gerena (Sevilla)
  24. Huelva
  25. Huétor Tajar (Granada)
  26. Iznalloz (Granada)
  27. Jerez de la Frontera (Cádiz)
  28. La Carolina (Jaén)
  29. Lepe (Huelva)
  30. Málaga
  31. Manilva (Málaga)
  32. Marbella (Málaga)
  33. Marchena (Sevilla)
  34. Mijas (Málaga)
  35. Motril (Granada)
  36. Nerva (Huelva)
  37. Nijar (Almería)
  38. Padul (Granada)
  39. Pozoblanco (Córdoba)
  40. Priego de Córdoba (Córdoba)
  41. Puebla de Guzmán (Huelva)
  42. Puerto Real (Cádiz)
  43. Rincón de la Victoria (Málaga)
  44. Ronda (Málaga)
  45. Rota (Cádiz)
  46. Sanlúcar de Barrameda (Cádiz)
  47. San Fernando (Cádiz)
  48. San Roque (Cádiz)
  49. Tarifa (Cádiz)
  50. Trebujena (Cádiz)
  51. Utrera (Sevilla)
  52. Vegas del Genil (Granada)

*Aragón: Las Cortes de Aragón aprueban el 7 de febrero de 2019 una modificación de la ley de protección animal de Aragón para prohibir la utilización de animales salvajes en circos en todo el territorio autonómico, convirtiéndose en la séptima Comunidad Autónoma en aprobar esta medida.

  1. Borja (Zaragoza)
  2. Huesca
  3. Mallén (Zaragoza)
  4. Monzón (Huesca)
  5. Muel (Zaragoza)
  6. Zaragoza

*Principado de Asturias: La Junta General del Principado de Asturias aprueba el 15 de marzo de 2019 una modificación de la ley de espectáculos públicos de Asturias para prohibir la utilización de animales salvajes en circos en todo el territorio autonómico, convirtiéndose en la novena Comunidad Autónoma en aprobar esta medida.

  1. Aller
  2. Carreño
  3. Caso
  4. Castrillón
  5. Corvera
  6. Gijón
  7. Grado
  8. Llanes
  9. Mieres
  10. Morcín
  11. Oviedo
  12. Parres

*Islas Baleares: El Parlamento Balear aprueba el 24 de julio de 2017 una ley que prohíbe la utilización de animales en los circos en todo el territorio autonómico, convirtiéndose en la segunda Comunidad Autónoma en aprobar esta medida.

  1. Algaida (Mallorca)
  2. Ariany (Mallorca)
  3. Artà (Mallorca)
  4. Calvià (Mallorca)
  5. Capdepera (Mallorca)
  6. Consell (Mallorca)
  7. Esporles (Mallorca)
  8. Manacor (Mallorca)
  9. Palma de Mallorca
  10. Pollença (Mallorca)
  11. Puigpunyent (Mallorca)
  12. Santa María del Camí (Mallorca)
  13. Sencelles (Mallorca)
  14. Sóller (Mallorca)
  15. Valldemosa (Mallorca)
  16. Vila (Ibiza)

Canarias:

  1. Adeje
  2. Arrecife (Las Palmas)
  3. El Rosario (Santa Cruz de Tenerife)
  4. Isla de Fuerteventura (incluye 6 municipios: La Antigua, Betancuria, La Oliva, Pájara, Puerto del Rosario, Tuineje)
  5. Gáldar (Las Palmas)
  6. Güímar (Santa Cruz de Tenerife)
  7. Las Palmas de Gran Canaria
  8. Los Llanos de Aridane (La Palma, Santa Cruz de Tenerife)
  9. Mogán (Las Palmas)
  10. Puerto de la Cruz (Santa Cruz de Tenerife)
  11. Telde (Las Palmas)
  12. San Bartolomé (Las Palmas)
  13. San Cristóbal de la Laguna (Santa Cruz de Tenerife)
  14. Santa Cruz de Tenerife
  15. Santa Lucía de Tirajana (Las Palmas)

Cantabria:

  1. Camargo
  2. Castro-Urdiales
  3. El Astillero
  4. Laredo
  5. Los Corrales de Buelna
  6. Noja
  7. Piélagos
  8. Reocín
  9. Santa Cruz de Bezana
  10. Santa María de Cayón
  11. Suances
  12. Torrelavega
  13. Val de San Vicente

*Castilla-La Mancha: Las Cortes de Castilla-La Mancha aprueban el 3 de agosto de 2020 una modificación de la ley de protección animal de Castilla-La Mancha para prohibir la utilización de animales salvajes en circos en todo el territorio autonómico, convirtiéndose en la undécima Comunidad Autónoma en aprobar esta medida.

  1. Albacete
  2. Alcázar de San Juan (Ciudad Real)
  3. Caudete (Albacete)
  4. Cuenca
  5. Guadalajara
  6. Illescas (Toledo)
  7. La Roda (Albacete)
  8. Madridejos (Toledo)
  9. Olías del Rey (Toledo)
  10. Talavera de la Reina (Toledo)
  11. Toledo
  12. Torrejón del Rey (Guadalajara)

Castilla y León:

  1. Aranda de Duero (Burgos)
  2. Burgos
  3. Doñinos de Salamanca
  4. La Cistérniga (Valladolid)
  5. Laguna de Duero (Valladolid)
  6. León
  7. Medina del Campo
  8. Miranda de Ebro (Burgos)
  9. Palencia
  10. Ponferrada
  11. San Andrés del Rabanedo (León)
  12. Santovenia de Pisuerga (Valladolid)
  13. Segovia
  14. Trigueros del Valle (Valladolid)
  15. Valladolid
  16. Venta de Baños (Palencia)
  17. Zamora

*Cataluña: El Parlamento de Cataluña aprobó el 22 de julio de 2015 una ley que prohíbe la utilización de animales salvajes en los circos en todo el territorio autonómico, convirtiéndose en la primera Comunidad Autónoma en aprobar esta medida. La ley se aprueba con una moratoria de dos años y entra en vigor en julio de 2017.

  1. Abrera (Barcelona)
  2. Aiguafreda (Barcelona)
  3. Arenys de Mar (Barcelona)
  4. Arenys de Munt (Barcelona)
  5. Argentona (Barcelona)
  6. Badalona (Barcelona)
  7. Badia del Vallés (Barcelona)
  8. Balaguer (Lleida)
  9. Banyoles (Girona)
  10. Barcelona
  11. Berga (Barcelona)
  12. Bescanó (Girona)
  13. Blanes (Girona)
  14. Cabrera de Mar (Barcelona)
  15. Cabrils (Barcelona)
  16. Cadaqués (Girona)
  17. Calonge-Sant Antoni (Girona)
  18. Calldetenes (Barcelona)
  19. Callús (Barcelona)
  20. Canet de Mar (Barcelona)
  21. Cardedeu (Barcelona)
  22. Cardona (Barcelona)
  23. Cassà de la Selva (Girona)
  24. Castellar del Vallès (Barcelona)
  25. Castellcir (Barcelona)
  26. Castelldefels (Barcelona)
  27. Castelló d’Empúries (Girona)
  28. Castellterçol (Barcelona)
  29. Cerdanyola (Barcelona)
  30. Collsuspina (Barcelona)
  31. Cornellà de Llobregat (Barcelona)
  32. Cunit (Tarragona)
  33. El Prat del Llobregat (Barcelona)
  34. El Vendrell (Tarragona)
  35. Gavà (Barcelona)
  36. Girona
  37. Granollers (Barcelona)
  38. Hospitalet de Llobregat (Barcelona)
  39. Igualada (Barcelona)
  40. Jorba (Barcelona)
  41. L’Atmetlla del Vallès (Barcelona)
  42. L’Escala (Girona)
  43. L’Esquirol. Santa Maria de Corcó (Barcelona)
  44. La Bisbal (Girona)
  45. La Garriga (Barcelona)
  46. La Llagosta (Barcelona)
  47. La Riera de Gaià (Tarragona)
  48. Les Borges Blanques (Lleida)
  49. Les Franqueses del Vallès (Barcelona)
  50. Llagostera (Girona)
  51. Lleida
  52. Lliça de Vall (Barcelona)
  53. Lloret de Mar (Girona)
  54. Manlleu (Barcelona)
  55. Manresa (Barcelona)
  56. Martorell (Barcelona)
  57. Martorelles (Barcelona)
  58. Masnou (Barcelona)
  59. Mataró (Barcelona)
  60. Moià (Barcelona)
  61. Molins de Rei (Barcelona)
  62. Mollerussa (Lleida)
  63. Mollet del Vallès (Barcelona)
  64. Montcada i Reixac (Barcelona)
  65. Montmeló (Barcelona)
  66. Montornes del Vallés (Barcelona)
  67. Navarcles (Barcelona)
  68. Olot (Girona)
  69. Palafrugell (Girona)
  70. Palau Solità i Plegamans (Barcelona)
  71. Pallejà (Barcelona)
  72. Pals (Girona)
  73. Parets del Vallès (Barcelona)
  74. Piera (Barcelona)
  75. Platja d’Aro (Girona)
  76. Premià de Dalt (Barcelona)
  77. Ripollet (Barcelona)
  78. Roses (Girona)
  79. Rubí (Barcelona)
  80. Santa Coloma de Farners (Girona)
  81. Santa Coloma de Gramanet (Barcelona)
  82. Santa Maria de Martorelles (Barcelona)
  83. Santa Perpètua de la Mogoda (Barcelona)
  84. Sant Adrià del Besós (Barcelona)
  85. Sant Boi de Llobregat (Barcelona)
  86. Sant Cebrià de Vallalta (Barcelona)
  87. Sant Cugat (Barcelona)
  88. Sant Esteve de Palautordera (Barcelona)
  89. Sant Feliu de Guixols (Girona)
  90. Sant Feliu de Llobregat (Barcelona)
  91. Sant Fost de Campsentelles (Barcelona)
  92. Sant Joan de les Abadesses (Girona)
  93. Sant Just Desvern (Barcelona)
  94. Sant Pere de Riudebitlles (Barcelona)
  95. Sant Quirze de Besora (Barcelona)
  96. Sant Vicenç de Montalt (Barcelona)
  97. Sant Vicenç dels Horts (Barcelona)
  98. Seva (Barcelona)
  99. Sitges (Barcelona)
  100. Súria (Barcelona)
  101. Tagamanent (Barcelona)
  102. Tarragona
  103. Teià (Barcelona)
  104. Terrassa (Barcelona)
  105. Tordera (Barcelona)
  106. Torelló (Barcelona)
  107. Torrelles de Llobregat (Barcelona)
  108. Torroella de Montgrí (Girona)
  109. Tossa de mar (Girona)
  110. Ullastrell (Barcelona)
  111. Vacarisses (Barcelona)
  112. Valldoreix (Barcelona)
  113. Vallgorguina (Barcelona)
  114. Vallromanes (Barcelona)
  115. Vic (Barcelona)
  116. Viladamant (Girona)
  117. Viladrau (Girona)
  118. Vilafranca del Penedés (Barcelona)
  119. Vilanova i la Geltrú (Barcelona)
  120. Vilassar de Dalt (Barcelona)
  121. Vilassar de Mar (Barcelona)

Ciudad Autónoma de Ceuta: es oficialmente declarada en el Boletín Oficial de la Ciudad de Ceuta “Ciudad Libre de maltrato animal” el 13 de septiembre de 2016 y con ello «Libre de Circos con Animales Salvajes».

*Comunidad Valenciana: Las Cortes Valencianas aprueban el 19 de diciembre de 2018 una ley que prohíbe la utilización de animales en los circos en todo el territorio autonómico, convirtiéndose en la sexta Comunidad Autónoma en aprobar esta medida.

  1. Albalat de la Ribera (Valencia)
  2. Alcoy (Alicante)
  3. Alicante
  4. Altea (Alicante)
  5. Aspe (Alicante)
  6. Benetússer (Valencia)
  7. Bétera (Valencia)
  8. Burjassot (Valencia)
  9. Borriana (Castellón)
  10. Callosa de Segura (Alicante)
  11. Carcaixent (Valencia)
  12. Cullera (Valencia)
  13. El Campello (Alicante)
  14. Elche (Alicante)
  15. Elda (Alicante)
  16. Gandía (Valencia)
  17. Guardamar del Segura (Alicante)
  18. Ibi (Alicante)
  19. La Vall d’Uix (Castellón)
  20. L´Horta Sud (Valencia)
  21. L´Horta Nord (Valencia)
  22. Monovar (Alicante)
  23. Mutxamel (Alicante)
  24. Novelda (Alicante)
  25. Onil (Alicante)
  26. Ontinyent (Valencia)
  27. Orihuela (Alicante)
  28. Paterna (Valencia)
  29. Petrer (Alicante)
  30. Picassent (Valencia)
  31. Pilar de la Horadada (Alicante)
  32. Sagunto (Valencia)
  33. Salinas (Alicante)
  34. Santa Pola (Alicante)
  35. Sant Joan d’Alacant (Alicante)
  36. Tavernes (Valencia)
  37. Torrent (Valencia)
  38. Torrevieja (Alicante)
  39. Valencia
  40. Villena (Alicante)

*Extremadura: La Asamblea de Extremadura aprueba el 14 de marzo de 2019 una modificación de la ley de espectáculos públicos de Extremadura para prohibir la utilización de animales salvajes en circos en todo el territorio autonómico, convirtiéndose en la octava Comunidad Autónoma en aprobar esta medida.

  1. Badajoz
  2. Campanario (Badajoz)
  3. Castuera (Badajoz)
  4. Guareña (Badajoz)
  5. Mérida
  6. Montijo (Badajoz)
  7. Villanueva de la Serena (Badajoz)
  8. Villanueva de la Vera (Cáceres)
  9. Zafra (Badajoz)

*Galicia: El Parlamento de Galicia aprueba el 26 de septiembre de 2017 la nueva ley de protección animal que incluye la prohibición de los circos con animales salvajes en todo el territorio autonómico, convirtiéndose en la tercera Comunidad Autónoma en aprobar esta medida.
(A nivel municipal, según datos de la Xunta de Galicia, han recibido un total de 71 declaraciones de municipios que se han convertido en libres de circos con animales. Desde InfoCircos tenemos constancia de los 57 siguientes, pero habría que añadir los 17 restantes que así se lo han comunicado a la Xunta.)

  1. A Coruña
  2. A Estrada (Pontevedra)
  3. A Guarda (Pontevedra)
  4. A Pobra do Brollón (Lugo)
  5. A Pobra do Caramiñal (La Coruña)
  6. Ames (La Coruña)
  7. Ares (La Coruña)
  8. As Neves (Pontevedra)
  9. As Pontes (La Coruña)
  10. Bergondo (La Coruña)
  11. Betanzos (La Coruña)
  12. Boiro (La Coruña)
  13. Burela (Lugo)
  14. Cabanas (La Coruña)
  15. Caldas de Reis (Pontevedra)
  16. Cambados (Pontevedra)
  17. Cambre (La Coruña)
  18. Cangas do Morrazo (Pontevedra)
  19. Carballo (La Coruña)
  20. Catoira (Pontevedra)
  21. Cedeira (La Coruña)
  22. Coristanco (La Coruña)
  23. Cuntis (Pontevedra)
  24. Dodro (La Coruña)
  25. Fene (La Coruña)
  26. Ferrol (La Coruña)
  27. Fisterra (La Coruña)
  28. Foz (Lugo)
  29. Gondomar (Pontevedra)
  30. Lalín (Pontevedra)
  31. Lugo
  32. Manzaneda (Orense)
  33. Moaña (Pontevedra)
  34. Mos (Pontevedra)
  35. Mugardos (La Coruña)
  36. Narón (La Coruña)
  37. Nigrán (Pontevedra)
  38. O Irixo (Orense)
  39. Ordés (La Coruña)
  40. Ourense
  41. Poio (Pontevedra)
  42. Ponteareas (Pontevedra)
  43. Pontevedra
  44. Redondela (Pontevedra)
  45. Rianxo (La Coruña)
  46. Ribadeo (Lugo)
  47. Sada (La Coruña)
  48. Santiago de Compostela
  49. Sanxenxo (Pontevedra)
  50. Teo (La Coruña)
  51. Tomiño (Pontevedra)
  52. Tui (Pontevedra)
  53. Valdoviño (La Coruña)
  54. Vedra (La Coruña)
  55. Vigo (Pontevedra)
  56. Vilagarcía de Arousa (Pontevedra)
  57. Viveiro (Lugo)

*La Rioja: El Parlamento de La Rioja aprueba el 22 de noviembre de 2018 la nueva ley de protección animal que incluye la prohibición de los circos con animales en todo el territorio autonómico, convirtiéndose en la quinta Comunidad Autónoma en aprobar esta medida.

  1. Calahorra
  2. Haro
  3. Logroño

Comunidad de Madrid:

  1. Alcalá de Henares
  2. Alcobendas
  3. Alcorcón
  4. Aldea del Fresno
  5. Alpedrete
  6. Ambite
  7. Arganda del Rey
  8. Arroyomolinos
  9. Batres
  10. Buitrago del Lozoya
  11. Bustarviejo
  12. Casarrubuelos
  13. Cercedilla
  14. Ciempozuelos
  15. Cobeña
  16. Collado Villalba
  17. Colmenar Viejo
  18. Colmenarejo
  19. Corpa
  20. Coslada
  21. El Álamo
  22. El Atazar
  23. El Boalo/Cerceda/Mataelpino
  24. Fuenlabrada
  25. Fuente el Saz de Jarama
  26. Getafe
  27. Guadalix de la Sierra
  28. Hoyo de Manzanares
  29. Leganés
  30. Loeches
  31. Lozoya
  32. Lozoyuela
  33. *MADRID
  34. Mejorada del Campo
  35. Moraleja de Enmedio
  36. Moralzarzal
  37. Móstoles
  38. Navalafuente
  39. Navalagamella
  40. Navalcarnero
  41. Nuevo Baztán
  42. Paracuellos del Jarama
  43. Parla
  44. Pedrezuela
  45. Pezuela de las Torres
  46. Pinilla del Valle
  47. Pinto
  48. Puentes Viejas
  49. Quijorna
  50. Rivas
  51. Robledo de Chavela
  52. San Fernando de Henares
  53. San Martín de la Vega
  54. San Sebastián de los Reyes
  55. Serranillos del Valle
  56. Soto del Real
  57. Talamanca del Jarama
  58. Torrejón de la Calzada
  59. Torrejón de Velasco
  60. Torrelodones
  61. Torres de la Alameda
  62. Tres Cantos
  63. Valdemorillo
  64. Valdemoro
  65. Velilla de San Antonio
  66. Villanueva del Pardillo
  67. Villavieja del Lozoya

*MADRID CIUDAD: El Ayuntamiento de Madrid modifica la ordenanza municipal de protección de los animales el 27 de marzo de 2019 con el fin de no permitir los circos con animales salvajes en la ciudad de Madrid. La medida incluye un plazo transitorio de 1 año para que los circos puedan adaptarse a la nueva situación, por lo que aún podrán actuar en la capital hasta marzo de 2020.

*Región de Murcia: La Asamblea de Murcia aprueba el 26 de octubre de 2017 la nueva ley de protección animal de la Región de Murcia que incluye la prohibición de los circos con animales salvajes en todo el territorio autonómico, convirtiéndose en la cuarta Comunidad Autónoma en aprobar esta medida.

  1. Alcantarilla
  2. Alhama de Murcia
  3. Beniel
  4. Bullas
  5. Campos del Río
  6. Caravaca de la Cruz
  7. Fortuna
  8. Jumilla
  9. Librilla
  10. Molina de Segura
  11. Torre Pacheco
  12. Totana

*Navarra: El Parlamento de Navarra aprueba el 28 de marzo de 2019 la nueva ley foral de protección animal que incluye la prohibición de los circos con animales en Navarra, convirtiéndose en la décima Comunidad Autónoma en aprobar esta medida.

  1. Ansoáin
  2. Ayegui
  3. Barañáin
  4. Burlada
  5. Estella – Lizarra
  6. Huarte
  7. Mendavia
  8. Noain
  9. Olite
  10. Pamplona – Iruñea
  11. Sangüesa
  12. Tafalla
  13. Tudela
  14. Valle de Egües
  15. Zizur Mayor

*País Vasco: El Parlamento Vasco aprueba el 30 de junio de 2022 la nueva Ley de Protección Animal del País Vasco, que incluye la prohibición de los circos con animales en el País Vasco, convirtiéndose en la duodécima Comunidad Autónoma en aprobar esta medida. 

  1. Vitoria-Gasteiz (Álava)
  2. Abanto-Zierbena (Vizcaya)
  3. Barakaldo (Vizcaya)
  4. Basauri (Vizcaya)
  5. Bilbao (Vizcaya)
  6. Donostia-San Sebastián (Guipúzcoa)
  7. Galdakao (Vizcaya)
  8. Getxo (Vizcaya)
  9. Hernani (Guipúzcoa)
  10. Portugalete (Vizcaya)
  11. Santurtzi (Vizcaya)
  12. Sestao (Vizcaya)
  13. Sopelana (Vizcaya)

Países libres de circos con animales

Algunos países donde se ha prohibido el uso de cualquier animal, de animales salvajes o de especies
CITES en los circos son: Austria, Bélgica, Bolivia, Bosnia Herzegovina, Bulgaria, República Checa, Chipre, Colombia, Costa Rica, Croacia, Dinamarca, El Salvador, Escocia, Eslovaquia, Eslovenia, Estonia, Finlandia, Grecia, Guatemala, Holanda, Hungría, India, Irán, Irlanda, Israel, Letonia, Lituania, Luxemburgo, Macedonia, Malta, México, Noruega, Panamá, Paraguay, Perú, Polonia, Portugal, Rumanía, Singapur, Taiwan o Suecia, entre otros.

Asimismo, existen numerosas prohibiciones municipales y regionales en países como Australia,
Brasil, Reino Unido, Canadá y Estados Unidos, entre otros.


!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-usw2.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}));