Error 500 Internal Server Error

GET http://topautosntest.sn-topauto.com/en/annonces/category/detail/-44

Exceptions

Neither the property "prenom" nor one of the methods "prenom()", "getprenom()", "isprenom()", "hasprenom()" or "__call()" exist and have public access in class "App\Entity\Professionel" in addannonce/details_annonce.html.twig at line 1087.

Exception

Twig\Error\ RuntimeError

Show exception properties
Twig\Error\RuntimeError {#1640
  -lineno: 1087
  -columnno: null
  -rawMessage: "Neither the property "prenom" nor one of the methods "prenom()", "getprenom()", "isprenom()", "hasprenom()" or "__call()" exist and have public access in class "App\Entity\Professionel"."
  -source: Twig\Source {#1534
    -code: """
      <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 mt-5 w-full">\r\n
        <div class="bg-blue-950 text-white py-3.5 px-5 rounded-lg border border-blue-900 shadow-sm flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3">\r\n
          <h1 class="text-base sm:text-xl font-black tracking-wide text-white uppercase flex items-center gap-2"><span>{{ annonce.marques }} {{ annonce.modeles }} {{ annonce.year }}</span></h1><nav aria-label="Fil d'ariane" class="flex items-center gap-2 text-xs sm:text-sm font-semibold text-slate-300">\r\n
            <a href="{{ path('app_home') }}" class="flex items-center gap-1 hover:text-orange-400 transition-colors cursor-pointer">\r\n
              <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-house w-4 h-4 text-slate-300" aria-hidden="true">\r\n
                <path d="M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8"></path>\r\n
                <path d="M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path>\r\n
              </svg><span>Accueil</span>\r\n
            </a><span class="text-slate-500 font-bold">»</span><span class="text-slate-300">Détails Annonce</span><span class="text-slate-500 font-bold">»</span><span class="text-orange-400 font-bold">{{ annonce.marques }} {{ annonce.modeles }}</span>\r\n
          </nav>\r\n
        </div>\r\n
      </div>\r\n
      <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 mt-3 mb-2 w-full">\r\n
        <div class="bg-white rounded-lg border border-slate-200 shadow-xs border-t-2 border-t-orange-500 px-5 py-3 flex flex-col md:flex-row items-center justify-between gap-3 text-xs">\r\n
          <div class="flex items-center gap-2">\r\n
            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sliders-vertical w-4 h-4 text-orange-500" aria-hidden="true">\r\n
              <path d="M10 8h4"></path>\r\n
              <path d="M12 21v-9"></path>\r\n
              <path d="M12 8V3"></path>\r\n
              <path d="M17 16h4"></path>\r\n
              <path d="M19 12V3"></path>\r\n
              <path d="M19 21v-5"></path>\r\n
              <path d="M3 14h4"></path>\r\n
              <path d="M5 10V3"></path>\r\n
              <path d="M5 21v-7"></path>\r\n
            </svg><span class="font-black tracking-wider text-blue-950 uppercase text-xs sm:text-sm">PANNEAU DE NAVIGATION</span>\r\n
          </div>\r\n
          <div class="flex flex-wrap items-center justify-center gap-4 sm:gap-6 font-bold text-slate-700">\r\n
            <button class="hover:text-orange-600 transition-colors cursor-pointer">Acheteur</button><button class="hover:text-orange-600 transition-colors cursor-pointer">Vendeur</button><button class="hover:text-orange-600 transition-colors cursor-pointer">Neuf</button><button class="hover:text-orange-600 transition-colors cursor-pointer">Occasion</button><button class="hover:text-orange-600 transition-colors cursor-pointer">Location</button><button class="hover:text-orange-700 transition-colors cursor-pointer text-orange-600 font-extrabold bg-orange-50 px-3 py-1 rounded-md border border-orange-200">Recherche Avancée</button>\r\n
          </div>\r\n
        </div>\r\n
      </div>\r\n
      <main class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-4 w-full grow space-y-5">\r\n
        <div class="bg-white rounded-lg border border-slate-200 p-2 sm:px-3 flex flex-col sm:flex-row items-start sm:items-center justify-between gap-2 shadow-xs">\r\n
          <div class="flex items-center gap-2.5">\r\n
            <div class="w-1.5 h-5 bg-orange-500 rounded-xs shrink-0"></div><span class="text-xs sm:text-sm font-extrabold text-blue-950">Publiée : <span class="font-semibold text-slate-700"> {{ annonce.createdAt|format_datetime('full', 'none', locale = 'fr') }}</span></span>\r\n
          </div>\r\n
          <div class="flex flex-col sm:flex-row items-center justify-between gap-2 py-2">\r\n
            <!-- Libellé -->\r\n
            <span class="text-xs font-extrabold text-slate-700">\r\n
              {{ 'Partager ce Véhicule'|trans }}:\r\n
            </span>\r\n
      \r\n
            <!-- Variables Twig -->\r\n
            {% set uri = app.request.uri %}\r\n
            {% set title = annonce.marques %}\r\n
      \r\n
            <!-- Conteneur des icônes -->\r\n
            <div class="flex flex-wrap items-center justify-center gap-2">\r\n
              \r\n
              <!-- Facebook -->\r\n
              <a\r\n
                href="http://www.facebook.com/sharer.php?u={{ uri }}"\r\n
                target="_blank"\r\n
                rel="noopener noreferrer"\r\n
                class="w-7 h-7 rounded-full bg-[#1877F2] hover:bg-[#166fe5] text-white flex items-center justify-center hover:scale-110 active:scale-95 transition-all shadow-xs cursor-pointer"\r\n
                title="Partager sur Facebook"\r\n
                aria-label="Partager sur Facebook"\r\n
              >\r\n
                <svg viewBox="0 0 24 24" width="100%" height="100%" fill="currentColor" class="w-3.5 h-3.5" aria-hidden="true" focusable="false">\r\n
                  <path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"></path>\r\n
                </svg>\r\n
              </a>\r\n
      \r\n
              <!-- X (Twitter) -->\r\n
              <a\r\n
                href="http://twitter.com/share?url={{ uri }}&text={{ title }}"\r\n
                target="_blank"\r\n
                rel="noopener noreferrer"\r\n
                class="w-7 h-7 rounded-full bg-slate-900 hover:bg-blue-900 text-white flex items-center justify-center hover:scale-110 active:scale-95 transition-all shadow-xs cursor-pointer border border-slate-700"\r\n
                title="Partager sur X (Twitter)"\r\n
                aria-label="Partager sur X (Twitter)"\r\n
              >\r\n
                <svg viewBox="0 0 24 24" width="100%" height="100%" fill="currentColor" class="w-3.5 h-3.5" aria-hidden="true" focusable="false">\r\n
                  <path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"></path>\r\n
                </svg>\r\n
              </a>\r\n
      \r\n
              <!-- Instagram -->\r\n
              <a\r\n
                href="http://www.instagram.com/"\r\n
                target="_blank"\r\n
                rel="noopener noreferrer"\r\n
                class="w-7 h-7 rounded-full bg-linear-to-tr from-[#F58529] via-[#DD2A7B] to-[#8134AF] text-white flex items-center justify-center hover:scale-110 active:scale-95 transition-all shadow-xs cursor-pointer"\r\n
                title="Partager sur Instagram"\r\n
                aria-label="Partager sur Instagram"\r\n
              >\r\n
                <svg viewBox="0 0 24 24" width="100%" height="100%" fill="currentColor" class="w-3.5 h-3.5" aria-hidden="true" focusable="false">\r\n
                  <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.44s-.644-1.44-1.439-1.44z"></path>\r\n
                </svg>\r\n
              </a>\r\n
      \r\n
              <!-- LinkedIn -->\r\n
              <a\r\n
                href="http://www.linkedin.com/shareArticle?url={{ uri }}&title={{ title }}"\r\n
                target="_blank"\r\n
                rel="noopener noreferrer"\r\n
                class="w-7 h-7 rounded-full bg-[#0A66C2] hover:bg-[#095196] text-white flex items-center justify-center hover:scale-110 active:scale-95 transition-all shadow-xs cursor-pointer"\r\n
                title="Partager sur LinkedIn"\r\n
                aria-label="Partager sur LinkedIn"\r\n
              >\r\n
                <svg viewBox="0 0 24 24" width="100%" height="100%" fill="currentColor" class="w-3.5 h-3.5" aria-hidden="true" focusable="false">\r\n
                  <path d="M19 0h-14c-2.761 0-5 2.239-5 5v14c0 2.761 2.239 5 5 5h14c2.762 0 5-2.239 5-5v-14c0-2.761-2.238-5-5-5zm-11 19h-3v-11h3v11zm-1.5-12.268c-.966 0-1.75-.79-1.75-1.764s.784-1.764 1.75-1.764 1.75.79 1.75 1.764-.783 1.764-1.75 1.764zm13.5 12.268h-3v-5.604c0-3.368-4-3.113-4 0v5.604h-3v-11h3v1.765c1.396-2.586 7-2.777 7 2.476v6.759z"></path>\r\n
                </svg>\r\n
              </a>\r\n
      \r\n
              <!-- Pinterest -->\r\n
              <a\r\n
                href="http://www.pinterest.com/pin/create/button/?url={{ uri }}&description={{ title }}"\r\n
                target="_blank"\r\n
                rel="noopener noreferrer"\r\n
                class="w-7 h-7 rounded-full bg-[#E60023] hover:bg-[#c9001f] text-white flex items-center justify-center hover:scale-110 active:scale-95 transition-all shadow-xs cursor-pointer"\r\n
                title="Partager sur Pinterest"\r\n
                aria-label="Partager sur Pinterest"\r\n
              >\r\n
                <svg viewBox="0 0 24 24" width="100%" height="100%" fill="currentColor" class="w-3.5 h-3.5" aria-hidden="true" focusable="false">\r\n
                  <path d="M12 0c-6.627 0-12 5.372-12 12 0 5.084 3.163 9.426 7.627 11.174-.105-.949-.2-2.405.042-3.441.218-.937 1.407-5.965 1.407-5.965s-.359-.719-.359-1.782c0-1.668.967-2.914 2.171-2.914 1.023 0 1.518.769 1.518 1.69 0 1.029-.655 2.568-.994 3.995-.283 1.194.599 2.169 1.777 2.169 2.133 0 3.772-2.249 3.772-5.495 0-2.873-2.064-4.882-5.012-4.882-3.414 0-5.418 2.561-5.418 5.207 0 1.031.397 2.138.893 2.738.098.119.112.224.083.345-.09.375-.291 1.199-.334 1.357-.056.208-.18.252-.415.153-1.546-.719-2.512-2.978-2.512-4.793 0-3.905 2.836-7.494 8.18-7.494 4.364 0 7.755 3.111 7.755 7.266 0 4.337-2.735 7.828-6.53 7.828-1.275 0-2.474-.663-2.884-1.448l-.786 3.003c-.285 1.096-1.055 2.47-1.572 3.313 1.144.354 2.361.547 3.626.547 6.627 0 12-5.373 12-12 0-6.628-5.373-12-12-12z"></path>\r\n
                </svg>\r\n
              </a>\r\n
      \r\n
              <!-- WhatsApp -->\r\n
              <a\r\n
                href="https://wa.me/?text={{ title }}%20{{ uri }}"\r\n
                target="_blank"\r\n
                rel="noopener noreferrer"\r\n
                class="w-7 h-7 rounded-full bg-[#25D366] hover:bg-[#20ba59] text-white flex items-center justify-center hover:scale-110 active:scale-95 transition-all shadow-xs cursor-pointer"\r\n
                title="Partager sur WhatsApp"\r\n
                aria-label="Partager sur WhatsApp"\r\n
              >\r\n
                <svg viewBox="0 0 24 24" width="100%" height="100%" fill="currentColor" class="w-3.5 h-3.5" aria-hidden="true" focusable="false">\r\n
                  <path d="M12.031 2C6.496 2 2 6.496 2 12.031c0 1.768.461 3.493 1.336 5.01L2 22l5.122-1.343a9.988 9.988 0 0 0 4.909 1.282h.004c5.535 0 10.031-4.496 10.031-10.031 0-2.68-1.043-5.2-2.936-7.094A9.99 9.99 0 0 0 12.031 2zm5.86 14.502c-.244.685-1.226 1.253-1.688 1.332-.462.079-1.066.113-1.724-.097-.399-.128-.915-.295-1.574-.582-2.774-1.206-4.577-4.004-4.717-4.189-.14-.185-1.134-1.509-1.134-2.879 0-1.37.718-2.043.974-2.323.256-.28.56-.35.748-.35.188 0 .375.002.539.01.173.01.405-.065.633.483.235.564.796 1.942.866 2.083.07.141.117.306.023.493-.094.187-.141.304-.28.468-.14.164-.294.366-.421.492-.141.14-.288.293-.124.575.164.282.729 1.202 1.564 1.947 1.074.958 1.977 1.256 2.259 1.396.282.14.446.117.61-.07.164-.187.704-.819.892-1.101.188-.282.376-.235.634-.141.258.094 1.643.774 1.925.915.282.14.469.211.54.329.07.117.07.68-.174 1.365z"></path>\r\n
                </svg>\r\n
              </a>\r\n
      \r\n
              <!-- YouTube -->\r\n
              <a\r\n
                href="https://www.youtube.com/"\r\n
                target="_blank"\r\n
                rel="noopener noreferrer"\r\n
                class="w-7 h-7 rounded-full bg-[#FF0000] hover:bg-[#d90000] text-white flex items-center justify-center hover:scale-110 active:scale-95 transition-all shadow-xs cursor-pointer"\r\n
                title="Vidéo YouTube"\r\n
                aria-label="Vidéo YouTube"\r\n
              >\r\n
                <svg viewBox="0 0 24 24" width="100%" height="100%" fill="currentColor" class="w-3.5 h-3.5" aria-hidden="true" focusable="false">\r\n
                  <path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"></path>\r\n
                </svg>\r\n
              </a>\r\n
      \r\n
            </div>\r\n
          </div>\r\n
        </div>\r\n
        <div class="bg-white rounded-lg border border-slate-200 flex flex-col sm:flex-row items-start sm:items-center justify-between shadow-xs overflow-hidden">\r\n
          <div class="p-2 sm:p-3 flex items-center gap-2">\r\n
            <div class="w-1.5 h-8 bg-orange-500 rounded-xs shrink-0"></div><h2 class="text-xl sm:text-2xl md:text-3xl font-black text-blue-950 tracking-tight">{{ annonce.marques }} {{ annonce.modeles }} {{ annonce.year }}</h2>\r\n
          </div>\r\n
          <div class="w-full sm:w-auto bg-linear-to-r from-orange-500 to-amber-500 text-white font-black text-xl sm:text-2xl md:text-3xl py-3 px-6 sm:px-12 flex items-center justify-center sm:justify-end shadow-md sm:[clip-path:polygon(30px_0%,100%_0%,100%_100%,0%_100%)]">\r\n
            <span>{{ annonce.price|number_format(0, ',', ' ') }} {{ annonce.device }}</span>\r\n
          </div>\r\n
        </div>\r\n
        <div class="bg-white rounded-lg border border-slate-200 p-2.5 sm:p-3 shadow-xs">\r\n
          <div class="grid grid-cols-2 sm:grid-cols-4 md:grid-cols-7 gap-2 text-xs font-bold">\r\n
            \r\n
            <!-- 1. Mes Favoris -->\r\n
            <a\r\n
              href="#"\r\n
              data-toggle="modal"\r\n
              data-target="#favorisModal"\r\n
              class="addToFavoritesBtn p-2.5 rounded-md border border-slate-200 bg-white hover:bg-slate-50 text-slate-700 transition-all flex items-center justify-center gap-1.5 cursor-pointer"\r\n
            >\r\n
              <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-heart w-4 h-4 text-orange-500 shrink-0" aria-hidden="true">\r\n
                <path d="M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5"></path>\r\n
              </svg>\r\n
              <span class="truncate">{{ 'Mes Favoris'|trans }}</span>\r\n
            </a>\r\n
      \r\n
            <!-- 2. Recommander -->\r\n
            <button\r\n
              type="button"\r\n
              data-toggle="modal"\r\n
              data-target="#exampleModal"\r\n
              data-id="{{ annonce.id }}"\r\n
              class="loadModalBtn p-2.5 rounded-md border border-slate-200 bg-white hover:bg-slate-50 text-slate-700 transition-all flex items-center justify-center gap-1.5 cursor-pointer"\r\n
            >\r\n
              <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-mail w-4 h-4 text-blue-600 shrink-0" aria-hidden="true">\r\n
                <path d="m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7"></path>\r\n
                <rect x="2" y="4" width="20" height="16" rx="2"></rect>\r\n
              </svg>\r\n
              <span class="truncate">{{ 'Recommander'|trans }}</span>\r\n
            </button>\r\n
      \r\n
            <!-- 3. Comparer (Conditionnel) -->\r\n
            {% if app.request.get('_route') is same as('app_show_annonce') %}\r\n
              <button\r\n
                type="button"\r\n
                data-id="{{ annonce.id }}"\r\n
                class="compare-btn1 p-2.5 rounded-md border transition-all flex items-center justify-center gap-1.5 cursor-pointer bg-white border-slate-200 hover:bg-slate-50 text-slate-700"\r\n
              >\r\n
                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-git-compare w-4 h-4 text-blue-800 shrink-0" aria-hidden="true">\r\n
                  <circle cx="18" cy="18" r="3"></circle>\r\n
                  <circle cx="6" cy="6" r="3"></circle>\r\n
                  <path d="M13 6h3a2 2 0 0 1 2 2v7"></path>\r\n
                  <path d="M11 18H8a2 2 0 0 1-2-2V9"></path>\r\n
                </svg>\r\n
                <span class="truncate">{{ 'Comparer'|trans }}</span>\r\n
              </button>\r\n
            {% endif %}\r\n
      \r\n
            <!-- 4. Planifier un Essai / Visite -->\r\n
            <a\r\n
              href="#"\r\n
              data-toggle="modal"\r\n
              data-target="#exampleModal3"\r\n
              class="p-2.5 rounded-md border border-slate-200 bg-white hover:bg-slate-50 text-slate-700 transition-all flex items-center justify-center gap-1.5 cursor-pointer"\r\n
            >\r\n
              <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-calendar w-4 h-4 text-amber-500 shrink-0" aria-hidden="true">\r\n
                <path d="M8 2v4"></path>\r\n
                <path d="M16 2v4"></path>\r\n
                <rect width="18" height="18" x="3" y="4" rx="2"></rect>\r\n
                <path d="M3 10h18"></path>\r\n
              </svg>\r\n
              <span class="truncate">{{ 'Planifier un Essai'|trans }}</span>\r\n
            </a>\r\n
      \r\n
            <!-- 5. Faire Une Offre -->\r\n
            <a\r\n
              href="#"\r\n
              data-toggle="modal"\r\n
              data-target="#exampleModal4"\r\n
              class="p-2.5 rounded-md border border-slate-200 bg-white hover:bg-slate-50 text-slate-700 transition-all flex items-center justify-center gap-1.5 cursor-pointer"\r\n
            >\r\n
              <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-dollar-sign w-4 h-4 text-emerald-600 shrink-0" aria-hidden="true">\r\n
                <line x1="12" x2="12" y1="2" y2="22"></line>\r\n
                <path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path>\r\n
              </svg>\r\n
              <span class="truncate">{{ 'Faire Une Offre'|trans }}</span>\r\n
            </a>\r\n
      \r\n
            <!-- 6. Doc PDF -->\r\n
            <a href="{{ annonce.brochureFile ? vich_uploader_asset(annonce, 'brochureFile') : '#' }}"\r\n
              {% if annonce.brochureFile %}download{% endif %}\r\n
              {% if not annonce.brochureFile %}title="{{ 'Pas de fichier pdf'|trans }}"{% endif %}\r\n
              class="p-2.5 rounded-md border border-slate-200 bg-white hover:bg-slate-50 text-slate-700 transition-all flex items-center justify-center gap-1.5 cursor-pointer"\r\n
            >\r\n
              <div class="flex items-center gap-1 text-orange-600 shrink-0">\r\n
                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-file-text w-4 h-4" aria-hidden="true">\r\n
                  <path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"></path>\r\n
                  <path d="M14 2v4a2 2 0 0 0 2 2h4"></path>\r\n
                  <path d="M10 9H8"></path>\r\n
                  <path d="M16 13H8"></path>\r\n
                  <path d="M16 17H8"></path>\r\n
                </svg>\r\n
                <span class="text-[9px] bg-orange-500 text-white font-black px-1 py-0.2 rounded-xs uppercase">PDF</span>\r\n
              </div>\r\n
              <span class="truncate">Doc PDF</span>\r\n
            </a>\r\n
      \r\n
            <!-- 7. Imprimer -->\r\n
            <button\r\n
              type="button"\r\n
              onclick="window.print()"\r\n
              class="p-2.5 rounded-md border border-slate-200 bg-white hover:bg-slate-50 text-slate-700 transition-all flex items-center justify-center gap-1.5 cursor-pointer col-span-2 sm:col-span-1"\r\n
            >\r\n
              <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-printer w-4 h-4 text-blue-700 shrink-0" aria-hidden="true">\r\n
                <path d="M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2"></path>\r\n
                <path d="M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6"></path>\r\n
                <rect x="6" y="14" width="12" height="8" rx="1"></rect>\r\n
              </svg>\r\n
              <span class="truncate">{{ 'Imprimer'|trans }}</span>\r\n
            </button>\r\n
      \r\n
          </div>\r\n
        </div>\r\n
        <div class="grid grid-cols-1 lg:grid-cols-12 gap-6 items-start">\r\n
          <div class="lg:col-span-8 space-y-6">\r\n
            {% set picture = annonce.pictures[0] %}\r\n
            {% if picture and picture.filename %}\r\n
              <div class="bg-white p-2.5 rounded-lg border border-slate-200 shadow-sm relative group">\r\n
                <div class="relative aspect-16/10 bg-slate-900 rounded-md overflow-hidden flex items-center justify-center max-h-200">\r\n
                  <img id="main-car-image" alt="{{ annonce.marques }} {{ annonce.modeles }} {{ annonce.year }}" class="w-full h-full object-cover select-none transition-transform duration-300" src="{{ vich_uploader_asset(picture, 'imageFile') }}"/ loading="lazy">\r\n
                  <button type="button" class="absolute left-3 top-1/2 -translate-y-1/2 w-10 h-10 rounded-full bg-blue-950/80 hover:bg-orange-500 text-white flex items-center justify-center transition-all cursor-pointer shadow-md z-10" aria-label="Image précédente">\r\n
                    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-left w-6 h-6" aria-hidden="true">\r\n
                      <path d="m15 18-6-6 6-6"></path>\r\n
                    </svg>\r\n
                  </button>\r\n
                  <button type="button" class="absolute right-3 top-1/2 -translate-y-1/2 w-10 h-10 rounded-full bg-blue-950/80 hover:bg-orange-500 text-white flex items-center justify-center transition-all cursor-pointer shadow-md z-10" aria-label="Image suivante">\r\n
                    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right w-6 h-6" aria-hidden="true">\r\n
                      <path d="m9 18 6-6-6-6"></path>\r\n
                    </svg>\r\n
                  </button>\r\n
                  {% if annonce.videos %}\r\n
                  <button type="button" class="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 bg-blue-950/85 hover:bg-orange-600 text-white px-5 py-3 rounded-full flex items-center gap-3 shadow-2xl backdrop-blur-xs border-2 border-white/30 transition-all hover:scale-110 active:scale-95 group/play cursor-pointer z-10" title="Lancer la lecture de la vidéo">\r\n
                    <div class="w-8 h-8 rounded-full bg-orange-500 group-hover/play:bg-white text-white group-hover/play:text-orange-600 flex items-center justify-center transition-colors shadow-md">\r\n
                      <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-play w-4 h-4 fill-current translate-x-0.5" aria-hidden="true">\r\n
                        <path d="M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z"></path>\r\n
                      </svg>\r\n
                    </div>\r\n
                    <span class="font-black text-xs sm:text-sm uppercase tracking-wider pr-1">Lancer la vidéo</span>\r\n
                  </button>\r\n
                  \r\n
                  <button type="button" class="absolute top-3 right-3 bg-blue-950/80 hover:bg-blue-900 text-white text-xs font-bold px-3 py-1.5 rounded-md flex items-center gap-1.5 transition-colors cursor-pointer z-10" id="btn-agrandir">\r\n
                    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-eye w-4 h-4 text-orange-400" aria-hidden="true">\r\n
                      <path d="M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"></path>\r\n
                      <circle cx="12" cy="12" r="3"></circle>\r\n
                    </svg><span>Agrandir</span>\r\n
                  </button><button type="button" class="absolute bottom-3 left-3 z-10 bg-blue-950/85 hover:bg-orange-600 text-white px-3 py-1.5 rounded-md flex items-center gap-2 transition-all shadow-md backdrop-blur-xs border border-white/20 group/vid cursor-pointer hover:scale-105 active:scale-95" title="Regarder et faire jouer la vidéo du véhicule" aria-label="Faire jouer la vidéo du véhicule">\r\n
                    <div class="w-5 h-5 rounded-full bg-orange-500 group-hover/vid:bg-white text-white group-hover/vid:text-orange-600 flex items-center justify-center transition-colors shadow-xs">\r\n
                      <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-play w-2.5 h-2.5 fill-current translate-x-0.5" aria-hidden="true">\r\n
                        <path d="M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z"></path>\r\n
                      </svg>\r\n
                    </div>\r\n
                    <div class="flex items-center gap-1.5">\r\n
                      <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-video w-3.5 h-3.5 text-orange-400 group-hover/vid:text-white" aria-hidden="true">\r\n
                        <path d="m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5"></path>\r\n
                        <rect x="2" y="6" width="14" height="12" rx="2"></rect>\r\n
                      </svg><span class="font-black text-xs tracking-wider uppercase">Vidéo HD</span>\r\n
                    </div>\r\n
                  </button>\r\n
                  {% endif %}\r\n
                  {% if annonce.pictures is defined and annonce.pictures|length > 0 %}\r\n
                  <div class="absolute bottom-3 right-3 bg-blue-950/80 text-white text-xs font-bold px-3 py-1 rounded-md z-10">\r\n
                      <span id="current-slide-index">1</span> / {{ annonce.pictures|length }}\r\n
                  </div>\r\n
              {% endif %}\r\n
            {% endif %}\r\n
              </div>\r\n
              <div class="grid grid-cols-5 sm:grid-cols-10 gap-1.5 mt-2.5">\r\n
                {% if annonce.videos is defined and annonce.videos %}\r\n
                  <button type="button" \r\n
                          class="relative aspect-square rounded-sm overflow-hidden border-2 transition-all cursor-pointer flex flex-col items-center justify-center border-slate-200 bg-blue-950 text-white hover:bg-blue-900 btn-trigger-video" \r\n
                          title="Faire jouer la vidéo">\r\n
                      <div class="w-6 h-6 rounded-full bg-orange-500 text-white flex items-center justify-center shadow-xs">\r\n
                          <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-play w-3 h-3 fill-current translate-x-0.5" aria-hidden="true">\r\n
                              <path d="M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z"></path>\r\n
                          </svg>\r\n
                      </div>\r\n
                      <span class="text-[10px] font-black uppercase mt-1 text-orange-400 tracking-wider">Vidéo</span>\r\n
                  </button>\r\n
                {% endif %}\r\n
                {% if annonce.pictures is defined %}\r\n
                  {% for key, picture in annonce.pictures %}\r\n
                      {% if picture and picture.filename %}\r\n
                          <button type="button" \r\n
                                  class="relative aspect-square rounded-sm overflow-hidden border-2 transition-all cursor-pointer {% if loop.first %}border-orange-500 ring-2 ring-orange-500/40{% else %}border-slate-200 opacity-75 hover:opacity-100{% endif %} thumb-item" \r\n
                                  data-imagenumber="{{ key }}">\r\n
                              <img src="{{ vich_uploader_asset(picture, 'imageFile') }}" \r\n
                                   data-lazy="{{ vich_uploader_asset(picture, 'imageFile') }}"\r\n
                                   alt="{{ annonce.category|default('Miniature') }}" \r\n
                                   class="w-full h-full object-cover img-child"\r\n
                                   loading="lazy">\r\n
                          </button>\r\n
                      {% endif %}\r\n
                  {% endfor %}\r\n
              {% endif %}\r\n
              </div>\r\n
            </div>\r\n
            <div class="grid grid-cols-2 sm:grid-cols-5 gap-2.5 text-center">\r\n
                {# 1. Carrosserie #}\r\n
                <div class="bg-slate-100/90 hover:bg-white p-3 rounded-xl border border-slate-200 hover:border-orange-300 hover:shadow-lg hover:shadow-orange-500/10 flex flex-col items-center justify-between cursor-pointer transition-all duration-300 group select-none" tabindex="0">\r\n
                    <div class="w-11 h-11 rounded-full bg-white group-hover:bg-linear-to-tr group-hover:from-orange-500 group-hover:to-amber-500 flex items-center justify-center shadow-xs mb-1.5 border border-slate-200 group-hover:border-orange-400 group-hover:scale-110 group-hover:rotate-6 transition-all duration-300">\r\n
                        <img src="{{ asset('images/power-c_2.png') }}" \r\n
                            alt="{{ 'Carrosserie'|trans }}" \r\n
                            width="20" \r\n
                            height="20" \r\n
                            loading="lazy" \r\n
                            decoding="async" \r\n
                            class="w-5 h-5 object-contain transition-transform duration-300">\r\n
                    </div>\r\n
                    <span class="text-[11px] font-bold text-slate-600 group-hover:text-slate-900 uppercase tracking-wider transition-colors">\r\n
                        {{ 'Carrosserie'|trans }}\r\n
                    </span>\r\n
                    <span class="text-xs font-black text-blue-950 group-hover:text-orange-600 mt-1 transition-colors leading-tight">\r\n
                        {{ annonce.carosseries|default('N/C') }}\r\n
                    </span>\r\n
                </div>\r\n
      \r\n
                {# 2. État #}\r\n
                <div class="bg-slate-100/90 hover:bg-white p-3 rounded-xl border border-slate-200 hover:border-orange-300 hover:shadow-lg hover:shadow-orange-500/10 flex flex-col items-center justify-between cursor-pointer transition-all duration-300 group select-none" tabindex="0">\r\n
                    <div class="w-11 h-11 rounded-full bg-white group-hover:bg-linear-to-tr group-hover:from-orange-500 group-hover:to-amber-500 flex items-center justify-center shadow-xs mb-1.5 border border-slate-200 group-hover:border-orange-400 group-hover:scale-110 group-hover:-rotate-6 transition-all duration-300">\r\n
                        <img src="{{ asset('images/condion-s.png') }}" \r\n
                            alt="{{ 'Etat'|trans }}" \r\n
                            width="20" \r\n
                            height="20" \r\n
                            loading="lazy" \r\n
                            decoding="async" \r\n
                            class="w-5 h-5 object-contain transition-transform duration-300">\r\n
                    </div>\r\n
                    <span class="text-[11px] font-bold text-slate-600 group-hover:text-slate-900 uppercase tracking-wider transition-colors">\r\n
                        {{ 'Etat'|trans }}\r\n
                    </span>\r\n
                    <span class="text-xs font-black text-blue-950 group-hover:text-orange-600 mt-1 transition-colors leading-tight">\r\n
                        {{ annonce.etats|default('N/C') }}\r\n
                    </span>\r\n
                </div>\r\n
      \r\n
                {# 3. Kilométrage #}\r\n
                <div class="bg-slate-100/90 hover:bg-white p-3 rounded-xl border border-slate-200 hover:border-orange-300 hover:shadow-lg hover:shadow-orange-500/10 flex flex-col items-center justify-between cursor-pointer transition-all duration-300 group select-none" tabindex="0">\r\n
                    <div class="w-11 h-11 rounded-full bg-white group-hover:bg-linear-to-tr group-hover:from-orange-500 group-hover:to-amber-500 flex items-center justify-center shadow-xs mb-1.5 border border-slate-200 group-hover:border-orange-400 group-hover:scale-110 group-hover:rotate-6 transition-all duration-300">\r\n
                        <img src="{{ asset('images/milage-s.png') }}" \r\n
                            alt="{{ 'Kilométrage'|trans }}" \r\n
                            width="20" \r\n
                            height="20" \r\n
                            loading="lazy" \r\n
                            decoding="async" \r\n
                            class="w-5 h-5 object-contain transition-transform duration-300">\r\n
                    </div>\r\n
                    <span class="text-[11px] font-bold text-slate-600 group-hover:text-slate-900 uppercase tracking-wider transition-colors">\r\n
                        {{ 'Kilométrage'|trans }}\r\n
                    </span>\r\n
                    <span class="text-xs font-black text-blue-950 group-hover:text-orange-600 mt-1 transition-colors leading-tight">\r\n
                        {% if annonce.kilometrage is defined and annonce.kilometrage %}\r\n
                            {{ annonce.kilometrage|number_format(0, ',', ' ') }} KM\r\n
                        {% else %}\r\n
                            N/C\r\n
                        {% endif %}\r\n
                    </span>\r\n
                </div>\r\n
      \r\n
                {# 4. Carburant #}\r\n
                <div class="bg-slate-100/90 hover:bg-white p-3 rounded-xl border border-slate-200 hover:border-orange-300 hover:shadow-lg hover:shadow-orange-500/10 flex flex-col items-center justify-between cursor-pointer transition-all duration-300 group select-none" tabindex="0">\r\n
                    <div class="w-11 h-11 rounded-full bg-white group-hover:bg-linear-to-tr group-hover:from-orange-500 group-hover:to-amber-500 flex items-center justify-center shadow-xs mb-1.5 border border-slate-200 group-hover:border-orange-400 group-hover:scale-110 group-hover:-rotate-6 transition-all duration-300">\r\n
                        <img src="{{ asset('images/fuel-s.png') }}" \r\n
                            alt="{{ 'Carburant'|trans }}" \r\n
                            width="20" \r\n
                            height="20" \r\n
                            loading="lazy" \r\n
                            decoding="async" \r\n
                            class="w-5 h-5 object-contain transition-transform duration-300">\r\n
                    </div>\r\n
                    <span class="text-[11px] font-bold text-slate-600 group-hover:text-slate-900 uppercase tracking-wider transition-colors">\r\n
                        {{ 'Carburant'|trans }}\r\n
                    </span>\r\n
                    <span class="text-xs font-black text-blue-950 group-hover:text-orange-600 mt-1 transition-colors leading-tight">\r\n
                        {{ annonce.carburants|default('N/C') }}\r\n
                    </span>\r\n
                </div>\r\n
      \r\n
                {# 5. Transmission #}\r\n
                <div class="bg-slate-100/90 hover:bg-white p-3 rounded-xl border border-slate-200 hover:border-orange-300 hover:shadow-lg hover:shadow-orange-500/10 flex flex-col items-center justify-between col-span-2 sm:col-span-1 cursor-pointer transition-all duration-300 group select-none" tabindex="0">\r\n
                    <div class="w-11 h-11 rounded-full bg-white group-hover:bg-linear-to-tr group-hover:from-orange-500 group-hover:to-amber-500 flex items-center justify-center shadow-xs mb-1.5 border border-slate-200 group-hover:border-orange-400 group-hover:scale-110 group-hover:rotate-6 transition-all duration-300">\r\n
                        <img src="{{ asset('images/transmission-s.png') }}" \r\n
                            alt="{{ 'Transmission'|trans }}" \r\n
                            width="20" \r\n
                            height="20" \r\n
                            loading="lazy" \r\n
                            decoding="async" \r\n
                            class="w-5 h-5 object-contain transition-transform duration-300">\r\n
                    </div>\r\n
                    <span class="text-[11px] font-bold text-slate-600 group-hover:text-slate-900 uppercase tracking-wider transition-colors">\r\n
                        {{ 'Transmission'|trans }}\r\n
                    </span>\r\n
                    <span class="text-xs font-black text-blue-950 group-hover:text-orange-600 mt-1 transition-colors leading-tight">\r\n
                        {% if annonce.transmission is defined and annonce.transmission %}\r\n
                            {% if 'Vitesses' in annonce.transmission %}\r\n
                                {{ annonce.transmission|replace({' Vitesses': '', ' ': ' V'})|nl2br }}\r\n
                            {% else %}\r\n
                                {{ annonce.transmission }}\r\n
                            {% endif %}\r\n
                        {% else %}\r\n
                            N/C\r\n
                        {% endif %}\r\n
                    </span>\r\n
                </div>\r\n
      \r\n
            </div>\r\n
            <div class="bg-white rounded-lg border border-slate-200 shadow-sm overflow-hidden">\r\n
              <div class="grid grid-cols-2 sm:grid-cols-5 border-b border-slate-200 bg-slate-100 text-xs font-bold text-slate-700" id="tabs-container">\r\n
                <button type="button" data-tab-target="#tab-presentation" class="tab-btn p-3.5 text-center transition-all border-r border-slate-200 cursor-pointer bg-blue-950 text-white font-black border-b-2 border-b-orange-500 shadow-xs">Présentation</button>\r\n
                <button type="button" data-tab-target="#tab-vue-ensemble" class="tab-btn p-3.5 text-center transition-all border-r border-slate-200 cursor-pointer hover:bg-orange-50 hover:text-orange-600 text-slate-700 bg-slate-50">Vue d'ensemble</button>\r\n
                <button type="button" data-tab-target="#tab-caracteristiques" class="tab-btn p-3.5 text-center transition-all border-r border-slate-200 cursor-pointer hover:bg-orange-50 hover:text-orange-600 text-slate-700 bg-slate-50">Caractéristiques et Options</button>\r\n
                <button type="button" data-tab-target="#tab-infos-generales" class="tab-btn p-3.5 text-center transition-all border-r border-slate-200 cursor-pointer hover:bg-orange-50 hover:text-orange-600 text-slate-700 bg-slate-50">Informations Générales</button>\r\n
                <button type="button" data-tab-target="#tab-emplacement" class="tab-btn p-3.5 text-center transition-all cursor-pointer col-span-2 sm:col-span-1 hover:bg-orange-50 hover:text-orange-600 text-slate-700 bg-slate-50">Emplacement</button>\r\n
              </div>\r\n
              <div class="p-6 space-y-6">\r\n
                <div class="text-center border-b border-slate-100 pb-3">\r\n
                  <h3 class="text-xl sm:text-2xl font-black text-blue-950 uppercase tracking-tight">{{ annonce.marques }} {{ annonce.modeles }} {{ annonce.year }}</h3>\r\n
                </div>\r\n
                <div id="tab-presentation" class="tab-panel space-y-6 animate-in fade-in">\r\n
                  <div class="p-4 bg-slate-50 border border-slate-200 rounded-md text-sm text-slate-800 leading-relaxed font-medium">{{ annonce.description }}</div>\r\n
                  <div class="space-y-3">\r\n
                    <h4 class="text-sm font-black text-blue-950 uppercase tracking-wide flex items-center gap-2">\r\n
                      <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sparkles w-4 h-4 text-orange-500" aria-hidden="true">\r\n
                        <path d="M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z"></path>\r\n
                        <path d="M20 2v4"></path>\r\n
                        <path d="M22 4h-4"></path>\r\n
                        <circle cx="4" cy="20" r="2"></circle>\r\n
                      </svg><span>Points forts du véhicule :</span>\r\n
                    </h4><div class="grid grid-cols-1 sm:grid-cols-2 gap-2.5 text-xs text-slate-700">\r\n
                      <div class="flex items-center gap-2 bg-slate-50 p-2.5 rounded-md border border-slate-200">\r\n
                        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check w-4 h-4 text-orange-500 shrink-0" aria-hidden="true">\r\n
                          <path d="M20 6 9 17l-5-5"></path>\r\n
                        </svg><span class="font-semibold">Modèle {{ annonce.marques }} {{ annonce.modeles }} ({{ annonce.year }})</span>\r\n
                      </div>\r\n
                      <div class="flex items-center gap-2 bg-slate-50 p-2.5 rounded-md border border-slate-200">\r\n
                        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check w-4 h-4 text-orange-500 shrink-0" aria-hidden="true">\r\n
                          <path d="M20 6 9 17l-5-5"></path>\r\n
                        </svg><span class="font-semibold">Transmission : {{ annonce.transmission }}</span>\r\n
                      </div>\r\n
                      <div class="flex items-center gap-2 bg-slate-50 p-2.5 rounded-md border border-slate-200">\r\n
                        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check w-4 h-4 text-orange-500 shrink-0" aria-hidden="true">\r\n
                          <path d="M20 6 9 17l-5-5"></path>\r\n
                        </svg><span class="font-semibold">Carburant : {{ annonce.carburants }}</span>\r\n
                      </div>\r\n
                      <div class="flex items-center gap-2 bg-slate-50 p-2.5 rounded-md border border-slate-200">\r\n
                        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check w-4 h-4 text-orange-500 shrink-0" aria-hidden="true">\r\n
                          <path d="M20 6 9 17l-5-5"></path>\r\n
                        </svg><span class="font-semibold">Kilométrage vérifié: {{ annonce.kilometrage }} KM</span>\r\n
                      </div>\r\n
                      <div class="flex items-center gap-2 bg-slate-50 p-2.5 rounded-md border border-slate-200">\r\n
                        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check w-4 h-4 text-orange-500 shrink-0" aria-hidden="true">\r\n
                          <path d="M20 6 9 17l-5-5"></path>\r\n
                        </svg><span class="font-semibold">Climatisation d'origine et intérieur soigné</span>\r\n
                      </div>\r\n
                    </div>\r\n
                  </div>\r\n
                </div>\r\n
                <div id="tab-vue-ensemble" class="tab-panel hidden space-y-4 animate-in fade-in">\r\n
                  <!-- ====== SPÉCIFICATIONS ===== -->\r\n
                  <div class="border border-slate-200 rounded-sm overflow-hidden bg-white shadow-2xs">\r\n
                      <div class="bg-slate-100/90 border-l-4 border-orange-500 px-3.5 py-2">\r\n
                          <h4 class="font-black text-xs sm:text-sm text-blue-950 uppercase tracking-wide">\r\n
                              {{ 'Spécifications'|trans }}\r\n
                          </h4>\r\n
                      </div>\r\n
                      <div class="divide-y divide-slate-200 text-xs sm:text-sm">\r\n
                          <div class="grid grid-cols-1 sm:grid-cols-2 divide-y sm:divide-y-0 sm:divide-x divide-slate-200">\r\n
                              <div class="flex items-center justify-between p-2.5 sm:px-4 bg-white hover:bg-slate-50/50">\r\n
                                  <span class="text-slate-600 font-medium w-44 shrink-0">{{ 'Type de Véhicule'|trans }} :</span>\r\n
                                  <span class="font-bold text-blue-950 text-right sm:text-left flex-1">{{ annonce.carosseries }}</span>\r\n
                              </div>\r\n
                              <div class="flex items-center justify-between p-2.5 sm:px-4 bg-white hover:bg-slate-50/50">\r\n
                                  <span class="text-slate-600 font-medium w-44 shrink-0">{{ 'Marque'|trans }} :</span>\r\n
                                  <span class="font-bold text-blue-950 text-right sm:text-left flex-1">{{ annonce.marques }}</span>\r\n
                              </div>\r\n
                          </div>\r\n
                          <div class="grid grid-cols-1 sm:grid-cols-2 divide-y sm:divide-y-0 sm:divide-x divide-slate-200">\r\n
                              <div class="flex items-center justify-between p-2.5 sm:px-4 bg-white hover:bg-slate-50/50">\r\n
                                  <span class="text-slate-600 font-medium w-44 shrink-0">{{ 'Modèle'|trans }} :</span>\r\n
                                  <span class="font-bold text-blue-950 text-right sm:text-left flex-1">{{ annonce.modeles }}</span>\r\n
                              </div>\r\n
                              <div class="flex items-center justify-between p-2.5 sm:px-4 bg-white hover:bg-slate-50/50">\r\n
                                  <span class="text-slate-600 font-medium w-44 shrink-0">{{ 'Année'|trans }} :</span>\r\n
                                  <span class="font-bold text-blue-950 text-right sm:text-left flex-1">{{ annonce.year }}</span>\r\n
                              </div>\r\n
                          </div>\r\n
                          <div class="grid grid-cols-1 sm:grid-cols-2 divide-y sm:divide-y-0 sm:divide-x divide-slate-200">\r\n
                              <div class="flex items-center justify-between p-2.5 sm:px-4 bg-white hover:bg-slate-50/50">\r\n
                                  <span class="text-slate-600 font-medium w-44 shrink-0">{{ "Numéro d'enregistrement"|trans }} :</span>\r\n
                                  <span class="font-bold text-blue-950 text-right sm:text-left flex-1">\r\n
                                      {% if annonce.numeroEnregistrement %}\r\n
                                          {{ annonce.numeroEnregistrement }}\r\n
                                      {% else %}\r\n
                                          <span class="text-slate-400">---</span>\r\n
                                      {% endif %}\r\n
                                  </span>\r\n
                              </div>\r\n
                              <div class="flex items-center justify-between p-2.5 sm:px-4 bg-white hover:bg-slate-50/50">\r\n
                                  <span class="text-slate-600 font-medium w-44 shrink-0">{{ 'Châssis'|trans }} :</span>\r\n
                                  <span class="font-bold text-blue-950 text-right sm:text-left flex-1">{{ annonce.numeroChassis }}</span>\r\n
                              </div>\r\n
                          </div>\r\n
                      </div>\r\n
                  </div>\r\n
      \r\n
                  <!-- ====== DÉTAILS MÉCANIQUES ===== -->\r\n
                  <div class="border border-slate-200 rounded-sm overflow-hidden bg-white shadow-2xs">\r\n
                      <div class="bg-slate-100/90 border-l-4 border-orange-500 px-3.5 py-2">\r\n
                          <h4 class="font-black text-xs sm:text-sm text-blue-950 uppercase tracking-wide">\r\n
                              {{ 'Détails Mécaniques'|trans }}\r\n
                          </h4>\r\n
                      </div>\r\n
                      <div class="divide-y divide-slate-200 text-xs sm:text-sm">\r\n
                          <div class="grid grid-cols-1 sm:grid-cols-2 divide-y sm:divide-y-0 sm:divide-x divide-slate-200">\r\n
                              <div class="flex items-center justify-between p-2.5 sm:px-4 bg-white hover:bg-slate-50/50">\r\n
                                  <span class="text-slate-600 font-medium w-44 shrink-0">{{ 'Cylindrée'|trans }} :</span>\r\n
                                  <span class="font-bold text-blue-950 text-right sm:text-left flex-1">\r\n
                                      {{ annonce.nbrcylindre }} {{ 'cylindres'|trans }}\r\n
                                  </span>\r\n
                              </div>\r\n
                              <div class="flex items-center justify-between p-2.5 sm:px-4 bg-white hover:bg-slate-50/50">\r\n
                                  <span class="text-slate-600 font-medium w-44 shrink-0">{{ 'Transmission'|trans }} :</span>\r\n
                                  <span class="font-bold text-blue-950 text-right sm:text-left flex-1">{{ annonce.transmission }}</span>\r\n
                              </div>\r\n
                          </div>\r\n
                          <div class="grid grid-cols-1 sm:grid-cols-2 divide-y sm:divide-y-0 sm:divide-x divide-slate-200">\r\n
                              <div class="flex items-center justify-between p-2.5 sm:px-4 bg-white hover:bg-slate-50/50">\r\n
                                  <span class="text-slate-600 font-medium w-44 shrink-0">{{ 'Capacité du moteur'|trans }} :</span>\r\n
                                  <span class="font-bold text-blue-950 text-right sm:text-left flex-1">\r\n
                                      {{ annonce.moteur | number_format(0, ',', ' ') }}\r\n
                                  </span>\r\n
                              </div>\r\n
                              <div class="flex items-center justify-between p-2.5 sm:px-4 bg-white hover:bg-slate-50/50">\r\n
                                  <span class="text-slate-600 font-medium w-44 shrink-0">{{ 'Carburant'|trans }} :</span>\r\n
                                  <span class="font-bold text-blue-950 text-right sm:text-left flex-1">{{ annonce.carburants }}</span>\r\n
                              </div>\r\n
                          </div>\r\n
                          <div class="grid grid-cols-1 sm:grid-cols-2 divide-y sm:divide-y-0 sm:divide-x divide-slate-200">\r\n
                              <div class="flex items-center justify-between p-2.5 sm:px-4 bg-white hover:bg-slate-50/50">\r\n
                                  <span class="text-slate-600 font-medium w-44 shrink-0">{{ 'Numéro de châssis'|trans }} :</span>\r\n
                                  <span class="font-bold text-blue-950 text-right sm:text-left flex-1">{{ annonce.numeroChassis }}</span>\r\n
                              </div>\r\n
                              <div class="flex items-center justify-between p-2.5 sm:px-4 bg-white hover:bg-slate-50/50">\r\n
                                  <span class="text-slate-600 font-medium w-44 shrink-0">{{ 'Accélération'|trans }} :</span>\r\n
                                  <span class="font-bold text-slate-400 text-right sm:text-left flex-1">---</span>\r\n
                              </div>\r\n
                          </div>\r\n
                          <div class="grid grid-cols-1 sm:grid-cols-2 divide-y sm:divide-y-0 sm:divide-x divide-slate-200">\r\n
                              <div class="flex items-center justify-between p-2.5 sm:px-4 bg-white hover:bg-slate-50/50">\r\n
                                  <span class="text-slate-600 font-medium w-44 shrink-0">{{ 'Kilométrage'|trans }} :</span>\r\n
                                  <span class="font-bold text-blue-950 text-right sm:text-left flex-1">{{ annonce.kilometrage }}</span>\r\n
                              </div>\r\n
                              <div class="flex items-center justify-between p-2.5 sm:px-4 bg-white hover:bg-slate-50/50">\r\n
                                  <span class="text-slate-600 font-medium w-44 shrink-0">{{ 'Emission CO2'|trans }} :</span>\r\n
                                  <span class="font-bold text-blue-950 text-right sm:text-left flex-1">\r\n
                                      {% if annonce.hasCO2 %}\r\n
                                          {{ annonce.hasCO2 }}\r\n
                                      {% else %}\r\n
                                          <span class="text-slate-400">---</span>\r\n
                                      {% endif %}\r\n
                                  </span>\r\n
                              </div>\r\n
                          </div>\r\n
                      </div>\r\n
                  </div>\r\n
      \r\n
                  <!-- ====== APPARENCE ET CONDITION ===== -->\r\n
                  <div class="border border-slate-200 rounded-sm overflow-hidden bg-white shadow-2xs">\r\n
                      <div class="bg-slate-100/90 border-l-4 border-orange-500 px-3.5 py-2">\r\n
                          <h4 class="font-black text-xs sm:text-sm text-blue-950 uppercase tracking-wide">\r\n
                              {{ 'Apparence et Condition'|trans }}\r\n
                          </h4>\r\n
                      </div>\r\n
                      <div class="divide-y divide-slate-200 text-xs sm:text-sm">\r\n
                          <div class="grid grid-cols-1 sm:grid-cols-2 divide-y sm:divide-y-0 sm:divide-x divide-slate-200">\r\n
                              <div class="flex items-center justify-between p-2.5 sm:px-4 bg-white hover:bg-slate-50/50">\r\n
                                  <span class="text-slate-600 font-medium w-44 shrink-0">{{ 'Couleur extérieure'|trans }} :</span>\r\n
                                  <span class="font-bold text-blue-950 text-right sm:text-left flex-1">{{ annonce.couleurExt }}</span>\r\n
                              </div>\r\n
                              <div class="flex items-center justify-between p-2.5 sm:px-4 bg-white hover:bg-slate-50/50">\r\n
                                  <span class="text-slate-600 font-medium w-44 shrink-0">{{ 'Couleur intérieure'|trans }} :</span>\r\n
                                  <span class="font-bold text-blue-950 text-right sm:text-left flex-1">{{ annonce.couleurInt }}</span>\r\n
                              </div>\r\n
                          </div>\r\n
                          <div class="grid grid-cols-1 sm:grid-cols-1 divide-y divide-slate-200">\r\n
                              <div class="flex items-center justify-between p-2.5 sm:px-4 bg-white hover:bg-slate-50/50">\r\n
                                  <span class="text-slate-600 font-medium w-44 shrink-0">{{ 'Etat'|trans }} :</span>\r\n
                                  <span class="font-bold text-emerald-600 text-right sm:text-left flex-1">{{ annonce.etats }}</span>\r\n
                              </div>\r\n
                          </div>\r\n
                      </div>\r\n
                  </div>\r\n
      \r\n
                  <!-- ====== PRIX ===== -->\r\n
                  <div class="border border-slate-200 rounded-sm overflow-hidden bg-white shadow-2xs">\r\n
                      <div class="bg-slate-100/90 border-l-4 border-orange-500 px-3.5 py-2">\r\n
                          <h4 class="font-black text-xs sm:text-sm text-blue-950 uppercase tracking-wide">\r\n
                              {{ 'Prix'|trans }}\r\n
                          </h4>\r\n
                      </div>\r\n
                      <div class="p-3 sm:px-4 flex items-center justify-between sm:justify-start gap-4">\r\n
                          <span class="text-slate-600 font-medium text-xs sm:text-sm w-44 shrink-0">{{ 'Prix'|trans }} :</span>\r\n
                          <span class="font-black text-orange-600 text-base sm:text-lg tracking-tight">\r\n
                              {{ annonce.price | number_format(0, ',', ' ') }} {{ annonce.device }}\r\n
                          </span>\r\n
                      </div>\r\n
                  </div>\r\n
      \r\n
                  <!-- ====== LOCALISATION ===== -->\r\n
                  <div class="border border-slate-200 rounded-sm overflow-hidden bg-white shadow-2xs">\r\n
                      <div class="bg-slate-100/90 border-l-4 border-orange-500 px-3.5 py-2">\r\n
                          <h4 class="font-black text-xs sm:text-sm text-blue-950 uppercase tracking-wide">\r\n
                              {{ 'Localisation'|trans }}\r\n
                          </h4>\r\n
                      </div>\r\n
                      <div class="divide-y divide-slate-200 text-xs sm:text-sm">\r\n
                          <div class="grid grid-cols-1 sm:grid-cols-2 divide-y sm:divide-y-0 sm:divide-x divide-slate-200">\r\n
                              <div class="flex items-center justify-between p-2.5 sm:px-4 bg-white hover:bg-slate-50/50">\r\n
                                  <span class="text-slate-600 font-medium w-44 shrink-0">{{ 'Région'|trans }} :</span>\r\n
                                  <span class="font-bold text-blue-950 text-right sm:text-left flex-1">{{ annonce.regions }}</span>\r\n
                              </div>\r\n
                              <div class="flex items-center justify-between p-2.5 sm:px-4 bg-white hover:bg-slate-50/50">\r\n
                                  <span class="text-slate-600 font-medium w-44 shrink-0">{{ 'Ville'|trans }} :</span>\r\n
                                  <span class="font-bold text-blue-950 text-right sm:text-left flex-1">{{ annonce.villes }}</span>\r\n
                              </div>\r\n
                          </div>\r\n
                          <div class="p-2.5 sm:px-4 flex items-center justify-between sm:justify-start gap-4 bg-white">\r\n
                              <span class="text-slate-600 font-medium w-44 shrink-0">{{ 'Commune'|trans }} :</span>\r\n
                              <span class="font-bold text-blue-950 text-right sm:text-left flex-1">{{ annonce.communes }}</span>\r\n
                          </div>\r\n
                      </div>\r\n
                  </div>\r\n
                 </div>\r\n
              </div>\r\n
              <div id="tab-caracteristiques" class="tab-panel hidden space-y-3 animate-in fade-in">\r\n
      \r\n
                  <div id="accordionSections" class="space-y-3">\r\n
                      {% if annonce.category == 'auto' %}\r\n
      \r\n
                          {% for section, items in {\r\n
                              'Carrosserie': annonce.carosserieEquip,\r\n
                              'Transmission': annonce.transmissionEquip,\r\n
                              'Intérieur': annonce.InterieurEquip,\r\n
                              'Extérieur': annonce.exterieurEquip,\r\n
                              'Électroniques': annonce.electroniqueEquip,\r\n
                              'Dispositif de sécurité': annonce.dispoSecurite\r\n
                          } %}\r\n
                              {% if items is defined and items is not empty %}\r\n
                                  <div class="border rounded-md overflow-hidden transition-all duration-200 bg-white shadow-2xs border-slate-200">\r\n
                                      <!-- BOUTON DE L'ACCORDÉON -->\r\n
                                      <button type="button" \r\n
                                              class="w-full flex items-center justify-between p-3.5 font-black text-xs sm:text-sm uppercase tracking-wide transition-all cursor-pointer select-none bg-blue-950 text-white"\r\n
                                              data-toggle="collapse" \r\n
                                              data-target="#collapseAuto{{ loop.index }}" \r\n
                                              aria-expanded="{% if loop.first %}true{% else %}false{% endif %}" \r\n
                                              aria-controls="collapseAuto{{ loop.index }}">\r\n
                                          <span class="flex items-center gap-2">\r\n
                                              <span class="w-2 h-2 rounded-full bg-orange-500"></span>\r\n
                                              <span>{{ section|trans }}</span>\r\n
                                          </span>\r\n
                                          <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down w-5 h-5 text-orange-400 transition-transform duration-200{% if loop.first %} rotate-180{% endif %}" aria-hidden="true">\r\n
                                              <path d="m6 9 6 6 6-6"></path>\r\n
                                          </svg>\r\n
                                      </button>\r\n
      \r\n
                                      <!-- CONTENU DE L'ACCORDÉON (Sans la classe 'collapse') -->\r\n
                                      <div id="collapseAuto{{ loop.index }}" class="accordion-content {% if not loop.first %}hidden{% endif %}" data-parent="#accordionSections">\r\n
                                          <div class="p-4 bg-slate-50/50 border-t border-slate-200">\r\n
                                              <div class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-2.5">\r\n
                                                  {% for item in items %}\r\n
                                                      <div class="bg-white border border-slate-200 hover:border-orange-500 hover:bg-orange-50/30 text-slate-700 hover:text-blue-950 text-center py-2.5 px-3 rounded-sm font-semibold text-xs sm:text-sm shadow-2xs transition-all cursor-default">\r\n
                                                          {{ item }}\r\n
                                                      </div>\r\n
                                                  {% endfor %}\r\n
                                              </div>\r\n
                                          </div>\r\n
                                      </div>\r\n
                                  </div>\r\n
                              {% endif %}\r\n
                          {% endfor %}\r\n
      \r\n
                      {% elseif annonce.category == 'moto' %}\r\n
      \r\n
                          {% for section, items in {\r\n
                              'Extérieur': annonce.intMoto,\r\n
                              'Électroniques': annonce.electroMoto,\r\n
                              'Dispositif de sécurité': annonce.disposecMoto,\r\n
                              'Dispositif de confort': annonce.dispconfMoto\r\n
                          } %}\r\n
                              {% if items is defined and items is not empty %}\r\n
                                  <div class="border rounded-md overflow-hidden transition-all duration-200 bg-white shadow-2xs border-slate-200">\r\n
                                      <button type="button" \r\n
                                              class="w-full flex items-center justify-between p-3.5 font-black text-xs sm:text-sm uppercase tracking-wide transition-all cursor-pointer select-none bg-blue-950 text-white"\r\n
                                              data-toggle="collapse" \r\n
                                              data-target="#collapseMoto{{ loop.index }}" \r\n
                                              aria-expanded="{% if loop.first %}true{% else %}false{% endif %}" \r\n
                                              aria-controls="collapseMoto{{ loop.index }}">\r\n
                                          <span class="flex items-center gap-2">\r\n
                                              <span class="w-2 h-2 rounded-full bg-orange-500"></span>\r\n
                                              <span>{{ section|trans }}</span>\r\n
                                          </span>\r\n
                                          <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down w-5 h-5 text-orange-400 transition-transform duration-200{% if loop.first %} rotate-180{% endif %}" aria-hidden="true">\r\n
                                              <path d="m6 9 6 6 6-6"></path>\r\n
                                          </svg>\r\n
                                      </button>\r\n
      \r\n
                                      <div id="collapseMoto{{ loop.index }}" class="accordion-content {% if not loop.first %}hidden{% endif %}" data-parent="#accordionSections">\r\n
                                          <div class="p-4 bg-slate-50/50 border-t border-slate-200">\r\n
                                              <div class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-2.5">\r\n
                                                  {% for item in items %}\r\n
                                                      <div class="bg-white border border-slate-200 hover:border-orange-500 hover:bg-orange-50/30 text-slate-700 hover:text-blue-950 text-center py-2.5 px-3 rounded-sm font-semibold text-xs sm:text-sm shadow-2xs transition-all cursor-default">\r\n
                                                          {{ item }}\r\n
                                                      </div>\r\n
                                                  {% endfor %}\r\n
                                              </div>\r\n
                                          </div>\r\n
                                      </div>\r\n
                                  </div>\r\n
                              {% endif %}\r\n
                          {% endfor %}\r\n
      \r\n
                      {% endif %}\r\n
                  </div>\r\n
      \r\n
              </div>\r\n
              <div id="tab-infos-generales" class="tab-panel hidden space-y-4 animate-in fade-in text-xs sm:text-sm text-slate-800">\r\n
      \r\n
                {# Spécifications Techniques #}\r\n
                {% if annonce.specificationtechniques is defined and annonce.specificationtechniques is not empty %}\r\n
                    <div class="p-4 bg-slate-50 border border-slate-200 rounded-md space-y-3">\r\n
                        <div class="flex items-center gap-2 font-bold text-blue-950 text-sm sm:text-base border-b border-slate-200 pb-2">\r\n
                            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cpu w-5 h-5 text-orange-500" aria-hidden="true">\r\n
                                <rect width="16" height="16" x="4" y="4" rx="2"></rect>\r\n
                                <rect width="6" height="6" x="9" y="9" rx="1"></rect>\r\n
                                <path d="M15 2v2"></path>\r\n
                                <path d="M15 20v2"></path>\r\n
                                <path d="M2 15h2"></path>\r\n
                                <path d="M2 9h2"></path>\r\n
                                <path d="M20 15h2"></path>\r\n
                                <path d="M20 9h2"></path>\r\n
                                <path d="M9 2v2"></path>\r\n
                                <path d="M9 20v2"></path>\r\n
                            </svg>\r\n
                            <span>{{ 'Spécifications Techniques'|trans }}</span>\r\n
                        </div>\r\n
                        <div class="prose prose-slate max-w-none text-xs sm:text-sm leading-relaxed text-slate-700">\r\n
                            {{ annonce.specificationtechniques | raw }}\r\n
                        </div>\r\n
                    </div>\r\n
                {% endif %}\r\n
      \r\n
                {# Informations Générales #}\r\n
                {% if annonce.infosgenerales is defined and annonce.infosgenerales is not empty %}\r\n
                    <div class="p-4 bg-slate-50 border border-slate-200 rounded-md space-y-3">\r\n
                        <div class="flex items-center gap-2 font-bold text-blue-950 text-sm sm:text-base border-b border-slate-200 pb-2">\r\n
                            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield-check w-5 h-5 text-emerald-600" aria-hidden="true">\r\n
                                <path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path>\r\n
                                <path d="m9 12 2 2 4-4"></path>\r\n
                            </svg>\r\n
                            <span>{{ 'Informations Générales'|trans }}</span>\r\n
                        </div>\r\n
                        <div class="prose prose-slate max-w-none text-xs sm:text-sm leading-relaxed text-slate-700">\r\n
                            {{ annonce.infosgenerales | raw }}\r\n
                        </div>\r\n
                    </div>\r\n
                {% endif %}\r\n
      \r\n
              </div>\r\n
              <div id="tab-emplacement" class="tab-panel hidden space-y-4 animate-in fade-in">        \r\n
                {# Carte avec overlay d'adresse #}\r\n
                <div class="relative rounded-lg overflow-hidden border border-slate-300 shadow-md bg-slate-100">\r\n
                    \r\n
                    {# Badge d'adresse en surimpression #}\r\n
                    <div class="absolute top-3 sm:top-4 left-3 sm:left-4 z-10 bg-white/95 backdrop-blur-xs px-3.5 py-2 rounded-md shadow-lg border border-slate-200 flex items-center gap-2 max-w-[90%] pointer-events-auto">\r\n
                        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-map-pin w-4 h-4 sm:w-5 sm:h-5 text-red-600 fill-red-600 shrink-0" aria-hidden="true">\r\n
                            <path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"></path>\r\n
                            <circle cx="12" cy="10" r="3"></circle>\r\n
                        </svg>\r\n
                        <span class="text-xs sm:text-sm font-black text-slate-900 tracking-tight truncate">\r\n
                            {{ annonce.address }}{% if annonce.communes %}, {{ annonce.communes }}{% endif %}{% if annonce.villes %}, {{ annonce.villes }}{% endif %}{% if annonce.regions %}, {{ annonce.regions }}{% endif %}\r\n
                        </span>\r\n
                    </div>\r\n
      \r\n
                    {# Iframe Google Maps dynamique (Lat/Lon) #}\r\n
                    {% if annonce.lat and annonce.lon %}\r\n
                        <iframe src="https://maps.google.com/maps?q={{ annonce.lat }},{{ annonce.lon }}&hl=fr&z=15&output=embed" \r\n
                                width="100%" \r\n
                                height="450" \r\n
                                allowfullscreen="" \r\n
                                loading="lazy" \r\n
                                referrerpolicy="no-referrer-when-downgrade" \r\n
                                class="w-full h-[380px] sm:h-[460px] block border-0" \r\n
                                title="Carte de localisation - {{ annonce.address }}">\r\n
                        </iframe>\r\n
                    {% else %}\r\n
                        <iframe src="https://maps.google.com/maps?q={{ (annonce.address ~ ', ' ~ annonce.villes ~ ', ' ~ annonce.regions)|url_encode }}&hl=fr&z=14&output=embed" \r\n
                                width="100%" \r\n
                                height="450" \r\n
                                allowfullscreen="" \r\n
                                loading="lazy" \r\n
                                referrerpolicy="no-referrer-when-downgrade" \r\n
                                class="w-full h-95 sm:h-115 block border-0" \r\n
                                title="Carte de localisation - {{ annonce.address }}">\r\n
                        </iframe>\r\n
                    {% endif %}\r\n
                </div>\r\n
      \r\n
                {# Carte de contact & Itinéraire #}\r\n
                <div class="p-4 sm:p-5 bg-linear-to-r from-blue-950 via-blue-900 to-slate-900 text-white rounded-lg border border-blue-800/80 shadow-md flex flex-col md:flex-row md:items-center justify-between gap-4">\r\n
                    <div class="space-y-1">\r\n
                        <div class="flex items-center gap-2">\r\n
                            <div class="w-2.5 h-2.5 rounded-full bg-orange-500 animate-ping"></div>\r\n
                            <h4 class="text-sm font-black text-white uppercase tracking-wider">Localisation & Visite sur Place</h4>\r\n
                        </div>\r\n
                        <p class="text-xs text-slate-300">\r\n
                            <strong class="text-orange-400">Adresse :</strong> \r\n
                            {{ annonce.address }}{% if annonce.communes %}, Commune de {{ annonce.communes }}{% endif %}{% if annonce.villes %}, {{ annonce.villes }}{% endif %}{% if annonce.regions %}, {{ annonce.regions }}{% endif %}\r\n
                        </p>\r\n
                        <p class="text-[11px] text-slate-400">Horaires : Du Lundi au Samedi de 08h30 à 19h00 • Dimanche sur rendez-vous</p>\r\n
                    </div>\r\n
      \r\n
                    <div class="flex flex-wrap items-center gap-2.5">\r\n
                        <a href="{% if annonce.lat and annonce.lon %}https://maps.google.com/maps?daddr={{ annonce.lat }},{{ annonce.lon }}{% else %}https://maps.google.com/maps?daddr={{ (annonce.address ~ ', ' ~ annonce.villes)|url_encode }}{% endif %}" \r\n
                          target="_blank" \r\n
                          rel="noopener noreferrer" \r\n
                          class="px-4 py-2.5 bg-orange-500 hover:bg-orange-600 text-white font-black text-xs uppercase tracking-wider rounded-md flex items-center gap-2 shadow-md transition-all cursor-pointer hover:scale-105 active:scale-95" \r\n
                          title="Calculer l'itinéraire">\r\n
                            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-navigation w-4 h-4" aria-hidden="true">\r\n
                                <polygon points="3 11 22 2 13 21 11 13 3 11"></polygon>\r\n
                            </svg>\r\n
                            <span>Itinéraire Google Maps</span>\r\n
                            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link w-3.5 h-3.5 opacity-80" aria-hidden="true">\r\n
                                <path d="M15 3h6v6"></path>\r\n
                                <path d="M10 14 21 3"></path>\r\n
                                <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path>\r\n
                            </svg>\r\n
                        </a>\r\n
                    </div>\r\n
                </div>\r\n
      \r\n
              </div>\r\n
            </div>\r\n
            <section class="pt-2 space-y-4">\r\n
                {# En-tête de section avec navigation #}\r\n
                <div class="flex items-center justify-between">\r\n
                    <div class="flex items-center gap-2">\r\n
                        <div class="w-2.5 h-5 bg-orange-500 rounded-sm"></div>\r\n
                        <h3 class="text-xl font-black text-orange-600 uppercase tracking-tight">\r\n
                            {{ 'ANNONCES SIMILAIRES'|trans }}\r\n
                        </h3>\r\n
                    </div>\r\n
                    <div class="flex items-center gap-1.5">\r\n
                        <button type="button" \r\n
                                class="w-8 h-8 rounded-md bg-blue-950 text-white hover:bg-orange-500 flex items-center justify-center transition-colors cursor-pointer shadow-sm" \r\n
                                aria-label="{{ 'Précédent'|trans }}" \r\n
                                title="{{ 'Annonces précédentes'|trans }}"\r\n
                                data-carousel-prev>\r\n
                            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="w-4 h-4" aria-hidden="true">\r\n
                                <path d="m15 18-6-6 6-6"></path>\r\n
                            </svg>\r\n
                        </button>\r\n
                        <button type="button" \r\n
                                class="w-8 h-8 rounded-md bg-blue-950 text-white hover:bg-orange-500 flex items-center justify-center transition-colors cursor-pointer shadow-sm" \r\n
                                aria-label="{{ 'Suivant'|trans }}" \r\n
                                title="{{ 'Annonces suivantes'|trans }}"\r\n
                                data-carousel-next>\r\n
                            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="w-4 h-4" aria-hidden="true">\r\n
                                <path d="m9 18 6-6-6-6"></path>\r\n
                            </svg>\r\n
                        </button>\r\n
                    </div>\r\n
                </div>\r\n
      \r\n
                {# Grille des annonces similaires #}\r\n
                {% if annoncesSimilar is empty %}\r\n
                    {% include "/annonce_by_category/noannonce.html.twig" %}\r\n
                {% else %}\r\n
                    {% set current_route = app.request.attributes.get('_route')|trim %}\r\n
      \r\n
                    <div class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-4 w-full! similarads">\r\n
                        {% for annonce in annoncesSimilar %}\r\n
                            {% set vehicle_title = (annonce.marques|default('') ~ ' ' ~ annonce.modeles|default(''))|trim %}\r\n
                            {% set vehicle_title = vehicle_title ? vehicle_title : 'Véhicule'|trans %}\r\n
                            \r\n
                            {% set target_url = (current_route == 'app_vitrines_show_annonce') \r\n
                                ? path('app_vitrines_show_annonce', {'proSlug': annonce.user.slug, 'annuaireId': annuaire.id, 'id': annonce.id, 'slug': annonce.slug}) \r\n
                                : path('app_show_annonce', {'_locale': app.request.locale, 'id': annonce.id, 'slug': annonce.slug}) \r\n
                            %}\r\n
      \r\n
                            <div class="bg-white rounded-2xl border border-slate-200 shadow-sm hover:shadow-xl transition-all duration-300 overflow-hidden flex flex-col justify-between group h-full">\r\n
                                <div>\r\n
                                    {# Zone Image + Overlay Interactif au Hover #}\r\n
                                    <div class="relative h-48 overflow-hidden bg-slate-900 group/img">\r\n
                                        {# Image principale #}\r\n
                                        {% if annonce.pictures is defined and annonce.pictures|length > 0 %}\r\n
                                            {% set picture = annonce.pictures[0] %}\r\n
                                            <img src="{{ vich_uploader_asset(picture, 'imageFile') }}" \r\n
                                                alt="{{ vehicle_title }}" \r\n
                                                loading="lazy" \r\n
                                                decoding="async" \r\n
                                                class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500">\r\n
                                        {% else %}\r\n
                                            <img src="{{ asset('images/default-car.jpg') }}" \r\n
                                                alt="{{ vehicle_title }}" \r\n
                                                loading="lazy" \r\n
                                                decoding="async" \r\n
                                                class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500">\r\n
                                        {% endif %}\r\n
      \r\n
                                        {# Badge Compteur de Photos (toujours visible) #}\r\n
                                        <div class="absolute top-2.5 right-2.5 z-10 bg-blue-950/80 backdrop-blur-xs text-white text-[10px] font-bold px-2 py-1 rounded flex items-center gap-1 pointer-events-none">\r\n
                                            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="w-3 h-3 text-orange-400" aria-hidden="true">\r\n
                                                <path d="M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z"></path>\r\n
                                                <circle cx="12" cy="13" r="3"></circle>\r\n
                                            </svg>\r\n
                                            <span>{{ annonce.pictures|length|default(0) }} {{ 'photos'|trans }}</span>\r\n
                                        </div>\r\n
      \r\n
                                        {# Overlay Orange (Visible au hover) #}\r\n
                                        <div class="absolute inset-0 bg-orange-600/90 backdrop-blur-[2px] opacity-0 group-hover:opacity-100 transition-all duration-300 z-20 flex flex-col items-center justify-center gap-3 p-3">\r\n
                                            \r\n
                                            {# Boutons d'Action au Hover #}\r\n
                                            <div class="flex items-center gap-2">\r\n
                                                {# Bouton Détails #}\r\n
                                                <a href="{{ target_url }}" class="w-9 h-9 rounded-full bg-white text-orange-600 hover:bg-orange-700 hover:text-white shadow-lg flex items-center justify-center transition-all duration-200 hover:scale-110" title="{{ 'Voir détail'|trans }}">\r\n
                                                    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="w-4 h-4">\r\n
                                                        <path d="M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"></path>\r\n
                                                        <circle cx="12" cy="12" r="3"></circle>\r\n
                                                    </svg>\r\n
                                                </a>\r\n
      \r\n
                                                {# Bouton Recommander / Partager #}\r\n
                                                <button type="button" data-target="#exampleModal" title="{{ 'Recommander à un ami'|trans }}" class="w-9 h-9 rounded-full bg-white text-orange-600 hover:bg-orange-700 hover:text-white shadow-lg flex items-center justify-center transition-all duration-200 hover:scale-110 compare_pgs loadModalBtn" data-id="{{ annonce.id }}">\r\n
                                                    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="w-4 h-4">\r\n
                                                        <circle cx="18" cy="5" r="3"></circle>\r\n
                                                        <circle cx="6" cy="12" r="3"></circle>\r\n
                                                        <circle cx="18" cy="19" r="3"></circle>\r\n
                                                        <line x1="8.59" x2="15.42" y1="13.51" y2="17.49"></line>\r\n
                                                        <line x1="15.41" x2="8.59" y1="6.51" y2="10.49"></line>\r\n
                                                    </svg>\r\n
                                                </button>\r\n
      \r\n
                                                {# Bouton Favoris #}\r\n
                                                <button type="button" data-target="#favorisModal" title="{{ 'Ajouter aux favoris'|trans }}" class="w-9 h-9 rounded-full bg-white text-orange-600 hover:bg-rose-500 hover:text-white shadow-lg flex items-center justify-center transition-all duration-200 hover:scale-110 addToFavoritesBtn compare_pgs" data-id="{{ annonce.id }}">\r\n
                                                    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="w-4 h-4">\r\n
                                                        <path d="M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5"></path>\r\n
                                                    </svg>\r\n
                                                </button>\r\n
      \r\n
                                                {# Bouton Comparateur #}\r\n
                                                {% if current_route != 'app_vitrines_show_annonce' %}\r\n
                                                    <a href="{{ path('annonce_compares', {'_locale': app.request.locale, 'id': annonce.id}) }}" title="{{ 'Ajouter au comparateur'|trans }}" class="w-9 h-9 rounded-full bg-white text-orange-600 hover:bg-blue-900 hover:text-white shadow-lg flex items-center justify-center transition-all duration-200 hover:scale-110 compare_pgs compare-btn" data-id="{{ annonce.id }}" data-url="{{ path('annonce_compares', {'_locale': app.request.locale, 'id': annonce.id}) }}">\r\n
                                                        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="w-4 h-4">\r\n
                                                            <circle cx="18" cy="18" r="3"></circle>\r\n
                                                            <circle cx="6" cy="6" r="3"></circle>\r\n
                                                            <path d="M13 6h3a2 2 0 0 1 2 2v7"></path>\r\n
                                                            <path d="M11 18H8a2 2 0 0 1-2-2V9"></path>\r\n
                                                        </svg>\r\n
                                                    </a>\r\n
                                                {% endif %}\r\n
                                            </div>\r\n
                                                {# Badges d'informations (Année, Boîte, Km) affichés au hover dans l'overlay #}\r\n
                                            <div class="absolute bottom-2 flex flex-wrap items-center justify-center gap-1.5 text-[11px] font-bold">\r\n
                                                {% if annonce.year is defined and annonce.year %}\r\n
                                                    <span class="px-2.5 py-1 rounded-md bg-white/20 text-white border border-white/30 shadow-xs">\r\n
                                                        {{ annonce.year }}\r\n
                                                    </span>\r\n
                                                {% endif %}\r\n
                                                {% if annonce.transmission is defined and annonce.transmission %}\r\n
                                                    <span class="px-2.5 py-1 rounded-md bg-white/20 text-white border border-white/30 shadow-xs">\r\n
                                                        {{ annonce.transmission|replace({'vitesses': 'V', 'vitesse': 'V', 'Vitesses': 'V', 'Vitesse': 'V'}) }}\r\n
                                                    </span>\r\n
                                                {% endif %}\r\n
                                                {% if annonce.kilometrage is defined and annonce.kilometrage is not null %}\r\n
                                                    <span class="px-2.5 py-1 rounded-md bg-white/20 text-white border border-white/30 shadow-xs">\r\n
                                                        {{ annonce.kilometrage|number_format(0, ',', ' ') }} km\r\n
                                                    </span>\r\n
                                                {% endif %}\r\n
                                            </div>\r\n
      \r\n
                                        </div>\r\n
                                    </div>\r\n
      \r\n
                                    {# Contenu principal sous l'image #}\r\n
                                    <div class="p-4">\r\n
                                        <h3 class="font-extrabold text-lg text-slate-900 group-hover:text-orange-600 transition-colors line-clamp-1 text-center">\r\n
                                            <a href="{{ target_url }}">\r\n
                                                {{ vehicle_title }}\r\n
                                            </a>\r\n
                                        </h3>\r\n
                                    </div>\r\n
                                </div>\r\n
      \r\n
                                {# Pied de carte : Prix du véhicule #}\r\n
                                <div class="bg-orange-600 text-white text-center py-2.5 px-3 font-black text-sm tracking-wide shadow-inner flex items-center justify-center gap-2 group-hover:bg-orange-700 transition-colors">\r\n
                                    <span>\r\n
                                        {{ annonce.price|default(0)|number_format(0, ',', ' ') }} {{ annonce.device|default('F. CFA') }}\r\n
                                    </span>\r\n
                                </div>\r\n
                            </div>\r\n
                        {% endfor %}\r\n
                    </div>\r\n
                {% endif %}\r\n
            </section>\r\n
          </div>\r\n
          <div class="lg:col-span-4 space-y-6">\r\n
            <div class="bg-white rounded-lg border border-slate-200 shadow-sm overflow-hidden">\r\n
              <div class="bg-blue-950 text-white text-center py-3.5 px-4">\r\n
                <h3 class="font-black text-base sm:text-lg tracking-wider uppercase">CONTACTER LE VENDEUR</h3>\r\n
              </div>\r\n
              <div class="p-5 space-y-5">\r\n
                <div class="flex items-center gap-3.5 justify-center p-1">\r\n
                    {# Avatar / Logo de l'annonceur #}\r\n
                     {% if annonceur.typeCompte == 'Professionnel' %}\r\n
                      <div class="w-14 h-14 rounded-full bg-blue-950 border-2 border-blue-900 p-0.5 flex flex-col items-center justify-center text-center shrink-0 shadow-md overflow-hidden">\r\n
                          <img src="{{ vich_uploader_asset(annonceur, 'logoimage') }}" \r\n
                              alt="{{ annonceur.nomProfessionel }}" \r\n
                              class="w-full h-full object-cover rounded-full"\r\n
                              loading="lazy">\r\n
                      </div>\r\n
                    {% endif %}\r\n
                    {# Informations de l'annonceur #}\r\n
                    <div class="space-y-1">\r\n
                        {# Nom / Raison sociale #}\r\n
                        <h4 class="text-lg font-black text-blue-950 leading-tight">\r\n
                            {% if annonceur.typeCompte == 'Professionnel' %}\r\n
                                {{ annonceur.nomProfessionel }}\r\n
                            {% else %}\r\n
                                {{ annonceur.prenom }} {{ annonceur.nom }}\r\n
                            {% endif %}\r\n
                        </h4>\r\n
      \r\n
                        {# Statut & Badges #}\r\n
                        <div class="flex items-center flex-wrap gap-2">\r\n
                            {% if annonceur.typeCompte == 'Professionnel' %}\r\n
                                <span class="text-[10px] text-slate-500 font-bold">{{ 'Vendeur'|trans }}</span>\r\n
                                <span class="bg-orange-600 text-white text-[10px] font-extrabold px-2 py-0.5 rounded-xs uppercase tracking-wider">\r\n
                                    PRO\r\n
                                </span>\r\n
                            {% elseif annonceur.typeCompte == 'Particulier' %}\r\n
                                {% if (annonceur.civility == 'Madame') or (annonceur.civility == 'Mademoiselle') %}\r\n
                                    <span class="text-[10px] text-slate-500 font-bold">{{ 'Vendeuse'|trans }}</span>\r\n
                                    <span class="bg-blue-900 text-white text-[10px] font-extrabold px-2 py-0.5 rounded-xs uppercase tracking-wider">\r\n
                                        {{ 'PARTICULIERE'|trans }}\r\n
                                    </span>\r\n
                                {% else %}\r\n
                                    <span class="text-[10px] text-slate-500 font-bold">{{ 'Vendeur'|trans }}</span>\r\n
                                    <span class="bg-blue-900 text-white text-[10px] font-extrabold px-2 py-0.5 rounded-xs uppercase tracking-wider">\r\n
                                        {{ 'PARTICULIER'|trans }}\r\n
                                    </span>\r\n
                                {% endif %}\r\n
                            {% endif %}\r\n
      \r\n
                            {# Badge WhatsApp (Optionnel) #}\r\n
                            <span class="inline-flex items-center gap-1 text-[10px] text-emerald-700 font-bold bg-emerald-50 px-2 py-0.5 rounded border border-emerald-200">\r\n
                                <span class="w-1.5 h-1.5 rounded-full bg-emerald-500 animate-pulse"></span>\r\n
                                {{ 'WhatsApp disponible'|trans }}\r\n
                            </span>\r\n
                        </div>\r\n
                    </div>\r\n
                </div>\r\n
                <div class="space-y-2.5">\r\n
                  {# 1. BOUTON CONTACTER PAR MAIL #}\r\n
                  <button type="button" \r\n
                          id="ctmail" \r\n
                          data-target="#contactSellbloc" \r\n
                          data-id="{{ annonce.id }}" \r\n
                          aria-expanded="false" \r\n
                          aria-controls="contactSellbloc" \r\n
                          class="w-full py-3 px-4 bg-orange-600 hover:bg-orange-700 active:scale-98 text-white font-black text-xs sm:text-sm uppercase tracking-wider rounded-lg transition-all flex items-center justify-center gap-2 shadow-xs cursor-pointer">\r\n
                      <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="w-4 h-4" aria-hidden="true">\r\n
                          <path d="m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7"></path>\r\n
                          <rect x="2" y="4" width="20" height="16" rx="2"></rect>\r\n
                      </svg>\r\n
                      <span>{{ 'CONTACTER PAR MAIL'|trans }}</span>\r\n
                  </button>\r\n
      \r\n
                  {# 2. BLOC FORMULAIRE DE CONTACT (Inclus dans l'accordéon #contactSellbloc) #}\r\n
                  <div id="contactSellbloc" data-id="{{ annonce.id }}" class="hidden p-2 sm:p-3 bg-white border border-slate-200 rounded-xl shadow-xs space-y-3.5 animate-in fade-in zoom-in-95 duration-200">\r\n
                     \r\n
                      <div id="contactFeedback" class="hidden text-xs text-center font-bold p-3 rounded-lg"></div>\r\n
                  </div>\r\n
      \r\n
                  {# 3. BOUTON WHATSAPP #}\r\n
                  {% if annonceur.tel is defined and annonceur.tel %}\r\n
                      <a id="contact-seller-whatsapp-btn" \r\n
                      href="https://api.whatsapp.com/send?phone={{ annonceur.tel|replace({' ': '', '+': ''}) }}&text={{ ('Bonjour, je vous contacte depuis la plateforme SN TopAuto au sujet de votre annonce : "' ~ annonce.marques ~ ' ' ~ annonce.modeles ~ '" (' ~ annonce.price|number_format(0, ',', ' ') ~ ' ' ~ annonce.device ~ '). Est-elle toujours disponible ?')|url_encode }}" \r\n
                      target="_blank" \r\n
                      rel="noopener noreferrer" \r\n
                      class="w-full py-3 px-4 bg-emerald-600 hover:bg-emerald-700 active:scale-98 text-white font-black text-xs sm:text-sm uppercase tracking-wider rounded-lg transition-all flex items-center justify-center gap-2.5 shadow-xs cursor-pointer" \r\n
                      title="Discuter sur WhatsApp">\r\n
                          <svg viewBox="0 0 24 24" width="100%" height="100%" fill="currentColor" class="w-5 h-5 text-white shrink-0" aria-hidden="true">\r\n
                              <path d="M12.031 2C6.496 2 2 6.496 2 12.031c0 1.768.461 3.493 1.336 5.01L2 22l5.122-1.343a9.988 9.988 0 0 0 4.909 1.282h.004c5.535 0 10.031-4.496 10.031-10.031 0-2.68-1.043-5.2-2.936-7.094A9.99 9.99 0 0 0 12.031 2zm5.86 14.502c-.244.685-1.226 1.253-1.688 1.332-.462.079-1.066.113-1.724-.097-.399-.128-.915-.295-1.574-.582-2.774-1.206-4.577-4.004-4.717-4.189-.14-.185-1.134-1.509-1.134-2.879 0-1.37.718-2.043.974-2.323.256-.28.56-.35.748-.35.188 0 .375.002.539.01.173.01.405-.065.633.483.235.564.796 1.942.866 2.083.07.141.117.306.023.493-.094.187-.141.304-.28.468-.14.164-.294.366-.421.492-.141.14-.288.293-.124.575.164.282.729 1.202 1.564 1.947 1.074.958 1.977 1.256 2.259 1.396.282.14.446.117.61-.07.164-.187.704-.819.892-1.101.188-.282.376-.235.634-.141.258.094 1.643.774 1.925.915.282.14.469.211.54.329.07.117.07.68-.174 1.365z"></path>\r\n
                          </svg>\r\n
                          <span>{{ 'CONTACTER SUR WHATSAPP'|trans }}</span>\r\n
                      </a>\r\n
                  {% endif %}\r\n
      \r\n
                  {# 4. BOUTON VOIR LE TÉLÉPHONE #}\r\n
                  {% if annonceur.tel is defined and annonceur.tel %}\r\n
                      <button id="ctphone" \r\n
                              type="button" \r\n
                              data-phone="{{ annonceur.tel }}" \r\n
                              data-id="{{ annonce.id }}"\r\n
                              class="w-full py-3 px-4 bg-blue-950 hover:bg-blue-900 active:scale-98 text-white font-black text-xs sm:text-sm uppercase tracking-wider rounded-lg transition-all flex items-center justify-center gap-2 shadow-xs cursor-pointer" \r\n
                              title="Afficher le numéro de téléphone">\r\n
                          <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="w-4 h-4 text-orange-400" aria-hidden="true">\r\n
                              <path d="M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384"></path>\r\n
                          </svg>\r\n
                          <span id="phone-label">{{ 'VOIR LE TÉLÉPHONE'|trans }}</span>\r\n
                      </button>\r\n
                  {% endif %}\r\n
              </div>\r\n
                <div class="text-center pt-1 space-y-1">\r\n
                  <span class="text-xs font-black text-blue-950 block">Ou</span><span class="text-xs font-bold text-slate-700 block">Faites-vous rappeler par le vendeur</span>\r\n
                </div>\r\n
                <form class="space-y-3 pt-1">\r\n
                  <div class="space-y-1">\r\n
                    <label class="text-xs font-extrabold text-slate-800 block">Prénom et Nom</label><input required="" placeholder="Prénom et Nom*" class="w-full px-3 py-2 bg-slate-50 border border-slate-200 text-xs text-slate-900 rounded-md focus:bg-white focus:outline-none focus:border-orange-500" type="text" value=""/>\r\n
                  </div>\r\n
                  <div class="space-y-1">\r\n
                    <label class="text-xs font-extrabold text-slate-800 block">Téléphone</label><input required="" placeholder="Votre téléphone(ex : +221 77 800 00 00) *" class="w-full px-3 py-2 bg-slate-50 border border-slate-200 text-xs text-slate-900 rounded-md focus:bg-white focus:outline-none focus:border-orange-500" type="tel" value=""/>\r\n
                  </div><button type="submit" class="w-full py-3 px-4 bg-orange-500 hover:bg-orange-600 active:scale-98 text-white font-black text-xs uppercase tracking-wider rounded-md transition-all flex items-center justify-center gap-2 shadow-xs cursor-pointer">\r\n
                    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-send w-4 h-4" aria-hidden="true">\r\n
                      <path d="M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z"></path>\r\n
                      <path d="m21.854 2.147-10.94 10.939"></path>\r\n
                    </svg><span>ENVOYER</span>\r\n
                  </button>\r\n
                </form>\r\n
              </div>\r\n
            </div>\r\n
            <div class="bg-blue-950 hover:bg-orange-500 text-white p-5 rounded-xl border border-blue-900 hover:border-orange-400 shadow-md hover:shadow-2xl hover:shadow-orange-500/30 space-y-4 text-center transition-all duration-300 group cursor-default relative overflow-hidden" style="transform: none;">\r\n
              <div class="absolute -top-12 -right-12 w-36 h-36 bg-white/10 rounded-full blur-xl opacity-0 group-hover:opacity-100 group-hover:scale-150 transition-all duration-500 pointer-events-none"></div><h4 class="text-sm font-black uppercase tracking-wider text-white flex items-center justify-center gap-2 drop-shadow-xs">\r\n
                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-fuel w-4 h-4 text-orange-400 group-hover:text-white group-hover:scale-125 group-hover:rotate-12 transition-all duration-300" aria-hidden="true">\r\n
                  <path d="M14 13h2a2 2 0 0 1 2 2v2a2 2 0 0 0 4 0v-6.998a2 2 0 0 0-.59-1.42L18 5"></path>\r\n
                  <path d="M14 21V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v16"></path>\r\n
                  <path d="M2 21h13"></path>\r\n
                  <path d="M3 9h11"></path>\r\n
                </svg>\r\n
                <span>Cote de consommation de carburant</span>\r\n
              </h4><div class="flex items-center justify-around py-3.5 border-y border-blue-900/80 group-hover:border-white/30 bg-blue-900/50 group-hover:bg-orange-600/30 rounded-xl px-2 transition-all duration-300">\r\n
                <div class="space-y-0.5 group-hover:translate-y-[-2px] transition-transform duration-300">\r\n
                  <span class="text-xs font-black text-blue-200 group-hover:text-orange-100 uppercase tracking-wider block transition-colors duration-300">Ville</span><span class="text-2xl font-black text-orange-400 group-hover:text-white drop-shadow-sm transition-colors duration-300">{{ annonce.consommationville }}</span>\r\n
                </div>\r\n
                <div class="w-12 h-12 rounded-full border border-blue-800 group-hover:border-white/60 flex items-center justify-center text-orange-400 group-hover:text-orange-600 bg-blue-900/80 group-hover:bg-white shadow-md group-hover:scale-115 group-hover:rotate-12 transition-all duration-300">\r\n
                  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-fuel w-6 h-6" aria-hidden="true">\r\n
                    <path d="M14 13h2a2 2 0 0 1 2 2v2a2 2 0 0 0 4 0v-6.998a2 2 0 0 0-.59-1.42L18 5"></path>\r\n
                    <path d="M14 21V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v16"></path>\r\n
                    <path d="M2 21h13"></path>\r\n
                    <path d="M3 9h11"></path>\r\n
                  </svg>\r\n
                </div>\r\n
                <div class="space-y-0.5 group-hover:translate-y-[-2px] transition-transform duration-300">\r\n
                  <span class="text-xs font-black text-blue-200 group-hover:text-orange-100 uppercase tracking-wider block transition-colors duration-300">Autoroute</span><span class="text-2xl font-black text-orange-400 group-hover:text-white drop-shadow-sm transition-colors duration-300">{{ annonce.consommationRoute }}</span>\r\n
                </div>\r\n
              </div>\r\n
              <p class="text-[14px] text-blue-200 group-hover:text-orange-50 leading-relaxed text-center px-1 font-medium transition-colors duration-300">La cote réelle variera en fonction des options, des conditions de conduite, des habitudes de conduite et de l'état du véhicule.</p>\r\n
            </div>\r\n
          </div>\r\n
        </div>\r\n
      </main>\r\n
      """
    -name: "addannonce/details_annonce.html.twig"
    -path: "/var/www/clients/client0/web1/web/topautosntest/templates/addannonce/details_annonce.html.twig"
  }
  -phpFile: "/var/www/clients/client0/web1/web/topautosntest/vendor/twig/twig/src/Extension/CoreExtension.php"
  -phpLine: 1902
}
  1. {# Nom / Raison sociale #}
  2. <h4 class="text-lg font-black text-blue-950 leading-tight">
  3. {% if annonceur.typeCompte == 'Professionnel' %}
  4. {{ annonceur.nomProfessionel }}
  5. {% else %}
  6. {{ annonceur.prenom }} {{ annonceur.nom }}
  7. {% endif %}
  8. </h4>
  9. {# Statut & Badges #}
  10. <div class="flex items-center flex-wrap gap-2">
  1. yield "
  2. ";
  3. } else {
  4. // line 1087
  5. yield " ";
  6. yield (string) $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, (isset($context["annonceur"]) || array_key_exists("annonceur", $context) ? $context["annonceur"] : (function () { throw new RuntimeError('Variable "annonceur" does not exist.', 1087, $this->source); })()), "prenom", [], "any", false, false, false, 1087), "html", null, true);
  7. yield " ";
  8. yield (string) $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, (isset($context["annonceur"]) || array_key_exists("annonceur", $context) ? $context["annonceur"] : (function () { throw new RuntimeError('Variable "annonceur" does not exist.', 1087, $this->source); })()), "nom", [], "any", false, false, false, 1087), "html", null, true);
  9. yield "
  10. ";
  11. }
in vendor/twig/twig/src/Template.php -> doDisplay (line 411)
  1. $context += $this->env->getGlobals();
  2. $blocks = array_merge($this->blocks, $blocks);
  3. try {
  4. $this->ensureSecurityChecked();
  5. yield from $this->doDisplay($context, $blocks);
  6. } catch (Error $e) {
  7. if (!$e->getSourceContext()) {
  8. $e->setSourceContext($this->getSourceContext());
  9. }
  1. // line 28
  2. yield " ";
  3. yield from $this->load("include/navs/topnav.html.twig", 28)->unwrap()->yield($context);
  4. // line 29
  5. yield " ";
  6. yield from $this->load("addannonce/details_annonce.html.twig", 29)->unwrap()->yield($context);
  7. // line 30
  8. yield " </div>
  9. ";
  10. // line 32
in vendor/twig/twig/src/Template.php -> block_body (line 458)
  1. }
  2. if (null !== $template) {
  3. try {
  4. $template->ensureSecurityChecked();
  5. yield from $template->$block($context, $blocks);
  6. } catch (Error $e) {
  7. if (!$e->getSourceContext()) {
  8. $e->setSourceContext($template->getSourceContext());
  9. }
  1. // line 20
  2. yield " </head>
  3. <body>
  4. ";
  5. // line 22
  6. yield from $this->unwrap()->yieldBlock('body', $context, $blocks);
  7. // line 24
  8. yield " ";
  9. yield from $this->unwrap()->yieldBlock('javascripts', $context, $blocks);
  10. // line 27
  11. yield " </body>
in vendor/twig/twig/src/Template.php -> doDisplay (line 411)
  1. $context += $this->env->getGlobals();
  2. $blocks = array_merge($this->blocks, $blocks);
  3. try {
  4. $this->ensureSecurityChecked();
  5. yield from $this->doDisplay($context, $blocks);
  6. } catch (Error $e) {
  7. if (!$e->getSourceContext()) {
  8. $e->setSourceContext($this->getSourceContext());
  9. }
  1. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  2. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "layout.html.twig"));
  3. $this->parent = $this->load("base.html.twig", 1);
  4. yield from $this->parent->unwrap()->yield($context, array_merge($this->blocks, $blocks));
  5. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  6. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
in vendor/twig/twig/src/Template.php -> doDisplay (line 411)
  1. $context += $this->env->getGlobals();
  2. $blocks = array_merge($this->blocks, $blocks);
  3. try {
  4. $this->ensureSecurityChecked();
  5. yield from $this->doDisplay($context, $blocks);
  6. } catch (Error $e) {
  7. if (!$e->getSourceContext()) {
  8. $e->setSourceContext($this->getSourceContext());
  9. }
  1. $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  2. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "addannonce/show_annonce.html.twig"));
  3. $this->parent = $this->load("layout.html.twig", 1);
  4. yield from $this->parent->unwrap()->yield($context, array_merge($this->blocks, $blocks));
  5. $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  6. $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
in vendor/twig/twig/src/Template.php -> doDisplay (line 411)
  1. $context += $this->env->getGlobals();
  2. $blocks = array_merge($this->blocks, $blocks);
  3. try {
  4. $this->ensureSecurityChecked();
  5. yield from $this->doDisplay($context, $blocks);
  6. } catch (Error $e) {
  7. if (!$e->getSourceContext()) {
  8. $e->setSourceContext($this->getSourceContext());
  9. }
  1. return $this->blocks;
  2. }
  3. public function display(array $context, array $blocks = []): void
  4. {
  5. foreach ($this->yield($context, $blocks) as $data) {
  6. echo $data;
  7. }
  8. }
  9. public function render(array $context): string
in vendor/twig/twig/src/Template.php -> display (line 381)
  1. ob_start();
  2. } else {
  3. ob_start(static function () { return ''; });
  4. }
  5. try {
  6. $this->display($context);
  7. } catch (\Throwable $e) {
  8. while (ob_get_level() > $level) {
  9. ob_end_clean();
  10. }
  1. yield from $this->template->yieldBlock($name, $context);
  2. }
  3. public function render(array $context = []): string
  4. {
  5. return $this->template->render($context);
  6. }
  7. /**
  8. * @return void
  9. */
  1. * @throws SyntaxError When an error occurred during compilation
  2. * @throws RuntimeError When an error occurred during rendering
  3. */
  4. public function render($name, array $context = []): string
  5. {
  6. return $this->load($name)->render($context);
  7. }
  8. /**
  9. * Displays a template.
  10. *
  1. if (null !== $block) {
  2. return $this->container->get('twig')->load($view)->renderBlock($block, $parameters);
  3. }
  4. return $this->container->get('twig')->render($view, $parameters);
  5. }
  6. private function doRender(string $view, ?string $block, array $parameters, ?Response $response, string $method): Response
  7. {
  8. $content = $this->doRenderView($view, $block, $parameters, $method);
  1. return $this->container->get('twig')->render($view, $parameters);
  2. }
  3. private function doRender(string $view, ?string $block, array $parameters, ?Response $response, string $method): Response
  4. {
  5. $content = $this->doRenderView($view, $block, $parameters, $method);
  6. $response ??= new Response();
  7. if (200 === $response->getStatusCode()) {
  8. foreach ($parameters as $v) {
  9. if ($v instanceof FormInterface && $v->isSubmitted() && !$v->isValid()) {
  1. * If an invalid form is found in the list of parameters, a 422 status code is returned.
  2. * Forms found in parameters are auto-cast to form views.
  3. */
  4. protected function render(string $view, array $parameters = [], ?Response $response = null): Response
  5. {
  6. return $this->doRender($view, null, $parameters, $response, __FUNCTION__);
  7. }
  8. /**
  9. * Renders a block in a view.
  10. *
AbstractController->render() in src/Controller/AddannonceController.php (line 116)
  1. $annonceur = $this->userRepository->find($annonce->getUser()->getId());
  2. $annoncesSimilar = $this->annonceRepository->findByAnnonceSimilar($annonce->getCarosseries());
  3. return $this->render('addannonce/show_annonce.html.twig', [
  4. 'annonce' => $annonce,
  5. 'annoncesSimilar' => $annoncesSimilar,
in vendor/symfony/http-kernel/HttpKernel.php -> showAnnonce (line 181)
  1. $this->dispatcher->dispatch($event, KernelEvents::CONTROLLER_ARGUMENTS);
  2. $controller = $event->getController();
  3. $arguments = $event->getArguments();
  4. // call controller
  5. $response = $controller(...$arguments);
  6. // view
  7. if (!$response instanceof Response) {
  8. $event = new ViewEvent($this, $request, $type, $response, $event);
  9. $this->dispatcher->dispatch($event, KernelEvents::VIEW);
  1. $request->headers->set('X-Php-Ob-Level', (string) ob_get_level());
  2. $this->requestStack->push($request);
  3. $response = null;
  4. try {
  5. return $response = $this->handleRaw($request, $type);
  6. } catch (\Throwable $e) {
  7. if ($e instanceof \Error && !$this->handleAllThrowables) {
  8. throw $e;
  9. }
  1. if (!$this->handlingHttpCache) {
  2. $this->resetServices = true;
  3. }
  4. try {
  5. return $this->getHttpKernel()->handle($request, $type, $catch);
  6. } finally {
  7. --$this->requestStackSize;
  8. }
  9. }
  1. ) {
  2. }
  3. public function run(): int
  4. {
  5. $response = $this->kernel->handle($this->request);
  6. if (Kernel::VERSION_ID >= 60400) {
  7. $response->send(false);
  8. if (\function_exists('fastcgi_finish_request') && !$this->debug) {
in vendor/autoload_runtime.php -> run (line 29)
  1. $app = $app(...$args);
  2. exit(
  3. $runtime
  4. ->getRunner($app)
  5. ->run()
  6. );
require_once('/var/www/clients/client0/web1/web/topautosntest/vendor/autoload_runtime.php') in public/index.php (line 5)
  1. <?php
  2. use App\Kernel;
  3. require_once dirname(__DIR__).'/vendor/autoload_runtime.php';
  4. return function (array $context) {
  5. return new Kernel(
  6. $context['APP_ENV'] ?? 'prod',
  7. (bool) ($context['APP_DEBUG'] ?? false)

Logs

Level Channel Message
INFO 02:40:04 request Matched route "_profiler".
{
    "route": "_profiler",
    "route_parameters": {
        "_route": "_profiler",
        "_controller": "web_profiler.controller.profiler::panelAction",
        "token": "905ba2"
    },
    "request_uri": "https://topautosntest.sn-topauto.com/_profiler/905ba2?panel=exception&type=request",
    "method": "GET"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\DebugHandlersListener::configure"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ValidateRequestListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\ValidateRequestListener::onKernelRequest"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\SessionListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\SessionListener::onKernelRequest"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::setDefaultLocale".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\LocaleListener::setDefaultLocale"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Component\AssetMapper\AssetMapperDevServerSubscriber::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\AssetMapper\\AssetMapperDevServerSubscriber::onKernelRequest"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\RouterListener::onKernelRequest"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\LocaleListener::onKernelRequest"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleAwareListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\LocaleAwareListener::onKernelRequest"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Bundle\SecurityBundle\Debug\TraceableFirewallListener::configureLogoutUrlGenerator".
{
    "event": "kernel.request",
    "listener": "Symfony\\Bundle\\SecurityBundle\\Debug\\TraceableFirewallListener::configureLogoutUrlGenerator"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Bundle\SecurityBundle\Debug\TraceableFirewallListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Bundle\\SecurityBundle\\Debug\\TraceableFirewallListener::onKernelRequest"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Knp\Bundle\PaginatorBundle\Subscriber\SlidingPaginationSubscriber::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Knp\\Bundle\\PaginatorBundle\\Subscriber\\SlidingPaginationSubscriber::onKernelRequest"
}
DEBUG 02:40:04 event Notified event "kernel.controller" to listener "Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController".
{
    "event": "kernel.controller",
    "listener": "Symfony\\Bundle\\FrameworkBundle\\DataCollector\\RouterDataCollector::onKernelController"
}
DEBUG 02:40:04 event Notified event "kernel.controller" to listener "Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController".
{
    "event": "kernel.controller",
    "listener": "Symfony\\Component\\HttpKernel\\DataCollector\\RequestDataCollector::onKernelController"
}
DEBUG 02:40:04 event Notified event "kernel.controller_arguments" to listener "Symfony\Component\Security\Http\EventListener\IsGrantedAttributeListener::onKernelControllerArguments".
{
    "event": "kernel.controller_arguments",
    "listener": "Symfony\\Component\\Security\\Http\\EventListener\\IsGrantedAttributeListener::onKernelControllerArguments"
}
DEBUG 02:40:04 event Notified event "kernel.controller_arguments" to listener "Symfony\Component\HttpKernel\EventListener\CacheAttributeListener::onKernelControllerArguments".
{
    "event": "kernel.controller_arguments",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\CacheAttributeListener::onKernelControllerArguments"
}
DEBUG 02:40:04 event Notified event "kernel.controller_arguments" to listener "ContainerODXbxK5\RequestPayloadValueResolverGhost3590451::onKernelControllerArguments".
{
    "event": "kernel.controller_arguments",
    "listener": "ContainerODXbxK5\\RequestPayloadValueResolverGhost3590451::onKernelControllerArguments"
}
DEBUG 02:40:04 event Notified event "kernel.controller_arguments" to listener "Symfony\Component\HttpKernel\EventListener\ErrorListener::onControllerArguments".
{
    "event": "kernel.controller_arguments",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\ErrorListener::onControllerArguments"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\DebugHandlersListener::configure"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ValidateRequestListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\ValidateRequestListener::onKernelRequest"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\SessionListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\SessionListener::onKernelRequest"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::setDefaultLocale".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\LocaleListener::setDefaultLocale"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Component\AssetMapper\AssetMapperDevServerSubscriber::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\AssetMapper\\AssetMapperDevServerSubscriber::onKernelRequest"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\RouterListener::onKernelRequest"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\LocaleListener::onKernelRequest"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleAwareListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\LocaleAwareListener::onKernelRequest"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Bundle\SecurityBundle\Debug\TraceableFirewallListener::configureLogoutUrlGenerator".
{
    "event": "kernel.request",
    "listener": "Symfony\\Bundle\\SecurityBundle\\Debug\\TraceableFirewallListener::configureLogoutUrlGenerator"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Bundle\SecurityBundle\Debug\TraceableFirewallListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Bundle\\SecurityBundle\\Debug\\TraceableFirewallListener::onKernelRequest"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Knp\Bundle\PaginatorBundle\Subscriber\SlidingPaginationSubscriber::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Knp\\Bundle\\PaginatorBundle\\Subscriber\\SlidingPaginationSubscriber::onKernelRequest"
}
DEBUG 02:40:04 event Notified event "kernel.controller" to listener "Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController".
{
    "event": "kernel.controller",
    "listener": "Symfony\\Bundle\\FrameworkBundle\\DataCollector\\RouterDataCollector::onKernelController"
}
DEBUG 02:40:04 event Notified event "kernel.controller" to listener "Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController".
{
    "event": "kernel.controller",
    "listener": "Symfony\\Component\\HttpKernel\\DataCollector\\RequestDataCollector::onKernelController"
}
DEBUG 02:40:04 event Notified event "kernel.controller_arguments" to listener "Symfony\Component\Security\Http\EventListener\IsGrantedAttributeListener::onKernelControllerArguments".
{
    "event": "kernel.controller_arguments",
    "listener": "Symfony\\Component\\Security\\Http\\EventListener\\IsGrantedAttributeListener::onKernelControllerArguments"
}
DEBUG 02:40:04 event Notified event "kernel.controller_arguments" to listener "Symfony\Component\HttpKernel\EventListener\CacheAttributeListener::onKernelControllerArguments".
{
    "event": "kernel.controller_arguments",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\CacheAttributeListener::onKernelControllerArguments"
}
DEBUG 02:40:04 event Notified event "kernel.controller_arguments" to listener "ContainerODXbxK5\RequestPayloadValueResolverGhost3590451::onKernelControllerArguments".
{
    "event": "kernel.controller_arguments",
    "listener": "ContainerODXbxK5\\RequestPayloadValueResolverGhost3590451::onKernelControllerArguments"
}
DEBUG 02:40:04 event Notified event "kernel.controller_arguments" to listener "Symfony\Component\HttpKernel\EventListener\ErrorListener::onControllerArguments".
{
    "event": "kernel.controller_arguments",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\ErrorListener::onControllerArguments"
}
DEBUG 02:40:04 event Notified event "kernel.response" to listener "Symfony\Component\AssetMapper\AssetMapperDevServerSubscriber::onKernelResponse".
{
    "event": "kernel.response",
    "listener": "Symfony\\Component\\AssetMapper\\AssetMapperDevServerSubscriber::onKernelResponse"
}
DEBUG 02:40:04 event Notified event "kernel.response" to listener "Symfony\Component\Security\Http\Firewall\ContextListener::onKernelResponse".
{
    "event": "kernel.response",
    "listener": "Symfony\\Component\\Security\\Http\\Firewall\\ContextListener::onKernelResponse"
}
DEBUG 02:40:04 event Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\ResponseListener::onKernelResponse".
{
    "event": "kernel.response",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\ResponseListener::onKernelResponse"
}
DEBUG 02:40:04 event Notified event "kernel.response" to listener "Symfony\Component\WebLink\EventListener\AddLinkHeaderListener::onKernelResponse".
{
    "event": "kernel.response",
    "listener": "Symfony\\Component\\WebLink\\EventListener\\AddLinkHeaderListener::onKernelResponse"
}
DEBUG 02:40:04 event Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelResponse".
{
    "event": "kernel.response",
    "listener": "Symfony\\Component\\HttpKernel\\DataCollector\\RequestDataCollector::onKernelResponse"
}
DEBUG 02:40:04 event Notified event "kernel.response" to listener "Symfony\Component\Security\Http\RememberMe\ResponseListener::onKernelResponse".
{
    "event": "kernel.response",
    "listener": "Symfony\\Component\\Security\\Http\\RememberMe\\ResponseListener::onKernelResponse"
}
DEBUG 02:40:04 event Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\CacheAttributeListener::onKernelResponse".
{
    "event": "kernel.response",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\CacheAttributeListener::onKernelResponse"
}
DEBUG 02:40:04 event Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelResponse".
{
    "event": "kernel.response",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\ProfilerListener::onKernelResponse"
}
DEBUG 02:40:04 event Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\ErrorListener::removeCspHeader".
{
    "event": "kernel.response",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\ErrorListener::removeCspHeader"
}
DEBUG 02:40:04 event Notified event "kernel.response" to listener "Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener::onKernelResponse".
{
    "event": "kernel.response",
    "listener": "Symfony\\Bundle\\WebProfilerBundle\\EventListener\\WebDebugToolbarListener::onKernelResponse"
}
DEBUG 02:40:04 event Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\DisallowRobotsIndexingListener::onResponse".
{
    "event": "kernel.response",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\DisallowRobotsIndexingListener::onResponse"
}
DEBUG 02:40:04 event Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\SessionListener::onKernelResponse".
{
    "event": "kernel.response",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\SessionListener::onKernelResponse"
}
DEBUG 02:40:04 event Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelFinishRequest".
{
    "event": "kernel.finish_request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\LocaleListener::onKernelFinishRequest"
}
DEBUG 02:40:04 event Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelFinishRequest".
{
    "event": "kernel.finish_request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\RouterListener::onKernelFinishRequest"
}
DEBUG 02:40:04 event Notified event "kernel.finish_request" to listener "Symfony\Bundle\SecurityBundle\Debug\TraceableFirewallListener::onKernelFinishRequest".
{
    "event": "kernel.finish_request",
    "listener": "Symfony\\Bundle\\SecurityBundle\\Debug\\TraceableFirewallListener::onKernelFinishRequest"
}
DEBUG 02:40:04 event Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleAwareListener::onKernelFinishRequest".
{
    "event": "kernel.finish_request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\LocaleAwareListener::onKernelFinishRequest"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\DebugHandlersListener::configure"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ValidateRequestListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\ValidateRequestListener::onKernelRequest"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\SessionListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\SessionListener::onKernelRequest"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::setDefaultLocale".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\LocaleListener::setDefaultLocale"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Component\AssetMapper\AssetMapperDevServerSubscriber::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\AssetMapper\\AssetMapperDevServerSubscriber::onKernelRequest"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\RouterListener::onKernelRequest"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\LocaleListener::onKernelRequest"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleAwareListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\LocaleAwareListener::onKernelRequest"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Bundle\SecurityBundle\Debug\TraceableFirewallListener::configureLogoutUrlGenerator".
{
    "event": "kernel.request",
    "listener": "Symfony\\Bundle\\SecurityBundle\\Debug\\TraceableFirewallListener::configureLogoutUrlGenerator"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Bundle\SecurityBundle\Debug\TraceableFirewallListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Bundle\\SecurityBundle\\Debug\\TraceableFirewallListener::onKernelRequest"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Knp\Bundle\PaginatorBundle\Subscriber\SlidingPaginationSubscriber::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Knp\\Bundle\\PaginatorBundle\\Subscriber\\SlidingPaginationSubscriber::onKernelRequest"
}
DEBUG 02:40:04 event Notified event "kernel.controller" to listener "Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController".
{
    "event": "kernel.controller",
    "listener": "Symfony\\Bundle\\FrameworkBundle\\DataCollector\\RouterDataCollector::onKernelController"
}
DEBUG 02:40:04 event Notified event "kernel.controller" to listener "Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController".
{
    "event": "kernel.controller",
    "listener": "Symfony\\Component\\HttpKernel\\DataCollector\\RequestDataCollector::onKernelController"
}
DEBUG 02:40:04 event Notified event "kernel.controller_arguments" to listener "Symfony\Component\Security\Http\EventListener\IsGrantedAttributeListener::onKernelControllerArguments".
{
    "event": "kernel.controller_arguments",
    "listener": "Symfony\\Component\\Security\\Http\\EventListener\\IsGrantedAttributeListener::onKernelControllerArguments"
}
DEBUG 02:40:04 event Notified event "kernel.controller_arguments" to listener "Symfony\Component\HttpKernel\EventListener\CacheAttributeListener::onKernelControllerArguments".
{
    "event": "kernel.controller_arguments",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\CacheAttributeListener::onKernelControllerArguments"
}
DEBUG 02:40:04 event Notified event "kernel.controller_arguments" to listener "ContainerODXbxK5\RequestPayloadValueResolverGhost3590451::onKernelControllerArguments".
{
    "event": "kernel.controller_arguments",
    "listener": "ContainerODXbxK5\\RequestPayloadValueResolverGhost3590451::onKernelControllerArguments"
}
DEBUG 02:40:04 event Notified event "kernel.controller_arguments" to listener "Symfony\Component\HttpKernel\EventListener\ErrorListener::onControllerArguments".
{
    "event": "kernel.controller_arguments",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\ErrorListener::onControllerArguments"
}
DEBUG 02:40:04 event Notified event "kernel.response" to listener "Symfony\Component\AssetMapper\AssetMapperDevServerSubscriber::onKernelResponse".
{
    "event": "kernel.response",
    "listener": "Symfony\\Component\\AssetMapper\\AssetMapperDevServerSubscriber::onKernelResponse"
}
DEBUG 02:40:04 event Notified event "kernel.response" to listener "Symfony\Component\Security\Http\Firewall\ContextListener::onKernelResponse".
{
    "event": "kernel.response",
    "listener": "Symfony\\Component\\Security\\Http\\Firewall\\ContextListener::onKernelResponse"
}
DEBUG 02:40:04 event Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\ResponseListener::onKernelResponse".
{
    "event": "kernel.response",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\ResponseListener::onKernelResponse"
}
DEBUG 02:40:04 event Notified event "kernel.response" to listener "Symfony\Component\WebLink\EventListener\AddLinkHeaderListener::onKernelResponse".
{
    "event": "kernel.response",
    "listener": "Symfony\\Component\\WebLink\\EventListener\\AddLinkHeaderListener::onKernelResponse"
}
DEBUG 02:40:04 event Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelResponse".
{
    "event": "kernel.response",
    "listener": "Symfony\\Component\\HttpKernel\\DataCollector\\RequestDataCollector::onKernelResponse"
}
DEBUG 02:40:04 event Notified event "kernel.response" to listener "Symfony\Component\Security\Http\RememberMe\ResponseListener::onKernelResponse".
{
    "event": "kernel.response",
    "listener": "Symfony\\Component\\Security\\Http\\RememberMe\\ResponseListener::onKernelResponse"
}
DEBUG 02:40:04 event Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\CacheAttributeListener::onKernelResponse".
{
    "event": "kernel.response",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\CacheAttributeListener::onKernelResponse"
}
DEBUG 02:40:04 event Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelResponse".
{
    "event": "kernel.response",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\ProfilerListener::onKernelResponse"
}
DEBUG 02:40:04 event Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\ErrorListener::removeCspHeader".
{
    "event": "kernel.response",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\ErrorListener::removeCspHeader"
}
DEBUG 02:40:04 event Notified event "kernel.response" to listener "Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener::onKernelResponse".
{
    "event": "kernel.response",
    "listener": "Symfony\\Bundle\\WebProfilerBundle\\EventListener\\WebDebugToolbarListener::onKernelResponse"
}
DEBUG 02:40:04 event Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\DisallowRobotsIndexingListener::onResponse".
{
    "event": "kernel.response",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\DisallowRobotsIndexingListener::onResponse"
}
DEBUG 02:40:04 event Notified event "kernel.response" to listener "Symfony\Component\HttpKernel\EventListener\SessionListener::onKernelResponse".
{
    "event": "kernel.response",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\SessionListener::onKernelResponse"
}
DEBUG 02:40:04 event Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelFinishRequest".
{
    "event": "kernel.finish_request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\LocaleListener::onKernelFinishRequest"
}
DEBUG 02:40:04 event Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelFinishRequest".
{
    "event": "kernel.finish_request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\RouterListener::onKernelFinishRequest"
}
DEBUG 02:40:04 event Notified event "kernel.finish_request" to listener "Symfony\Bundle\SecurityBundle\Debug\TraceableFirewallListener::onKernelFinishRequest".
{
    "event": "kernel.finish_request",
    "listener": "Symfony\\Bundle\\SecurityBundle\\Debug\\TraceableFirewallListener::onKernelFinishRequest"
}
DEBUG 02:40:04 event Notified event "kernel.finish_request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleAwareListener::onKernelFinishRequest".
{
    "event": "kernel.finish_request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\LocaleAwareListener::onKernelFinishRequest"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\DebugHandlersListener::configure"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ValidateRequestListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\ValidateRequestListener::onKernelRequest"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\SessionListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\SessionListener::onKernelRequest"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::setDefaultLocale".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\LocaleListener::setDefaultLocale"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Component\AssetMapper\AssetMapperDevServerSubscriber::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\AssetMapper\\AssetMapperDevServerSubscriber::onKernelRequest"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\RouterListener::onKernelRequest"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\LocaleListener::onKernelRequest"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleAwareListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\LocaleAwareListener::onKernelRequest"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Bundle\SecurityBundle\Debug\TraceableFirewallListener::configureLogoutUrlGenerator".
{
    "event": "kernel.request",
    "listener": "Symfony\\Bundle\\SecurityBundle\\Debug\\TraceableFirewallListener::configureLogoutUrlGenerator"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Symfony\Bundle\SecurityBundle\Debug\TraceableFirewallListener::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Symfony\\Bundle\\SecurityBundle\\Debug\\TraceableFirewallListener::onKernelRequest"
}
DEBUG 02:40:04 event Notified event "kernel.request" to listener "Knp\Bundle\PaginatorBundle\Subscriber\SlidingPaginationSubscriber::onKernelRequest".
{
    "event": "kernel.request",
    "listener": "Knp\\Bundle\\PaginatorBundle\\Subscriber\\SlidingPaginationSubscriber::onKernelRequest"
}
DEBUG 02:40:04 event Notified event "kernel.controller" to listener "Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController".
{
    "event": "kernel.controller",
    "listener": "Symfony\\Bundle\\FrameworkBundle\\DataCollector\\RouterDataCollector::onKernelController"
}
DEBUG 02:40:04 event Notified event "kernel.controller" to listener "Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController".
{
    "event": "kernel.controller",
    "listener": "Symfony\\Component\\HttpKernel\\DataCollector\\RequestDataCollector::onKernelController"
}
DEBUG 02:40:04 event Notified event "kernel.controller_arguments" to listener "Symfony\Component\Security\Http\EventListener\IsGrantedAttributeListener::onKernelControllerArguments".
{
    "event": "kernel.controller_arguments",
    "listener": "Symfony\\Component\\Security\\Http\\EventListener\\IsGrantedAttributeListener::onKernelControllerArguments"
}
DEBUG 02:40:04 event Notified event "kernel.controller_arguments" to listener "Symfony\Component\HttpKernel\EventListener\CacheAttributeListener::onKernelControllerArguments".
{
    "event": "kernel.controller_arguments",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\CacheAttributeListener::onKernelControllerArguments"
}
DEBUG 02:40:04 event Notified event "kernel.controller_arguments" to listener "ContainerODXbxK5\RequestPayloadValueResolverGhost3590451::onKernelControllerArguments".
{
    "event": "kernel.controller_arguments",
    "listener": "ContainerODXbxK5\\RequestPayloadValueResolverGhost3590451::onKernelControllerArguments"
}
DEBUG 02:40:04 event Notified event "kernel.controller_arguments" to listener "Symfony\Component\HttpKernel\EventListener\ErrorListener::onControllerArguments".
{
    "event": "kernel.controller_arguments",
    "listener": "Symfony\\Component\\HttpKernel\\EventListener\\ErrorListener::onControllerArguments"
}

Stack Trace

RuntimeError
Twig\Error\RuntimeError:
Neither the property "prenom" nor one of the methods "prenom()", "getprenom()", "isprenom()", "hasprenom()" or "__call()" exist and have public access in class "App\Entity\Professionel" in "addannonce/details_annonce.html.twig" at line 1087.

  at templates/addannonce/details_annonce.html.twig:1087
  at Twig\Extension\CoreExtension::getAttribute()
     (var/cache/dev/twig/23/2340ccaa0af8966aa432edb5be9747f3.php:1999)
  at __TwigTemplate_cbd584d1c2975eed8ed64c48b6d279c2->doDisplay()
     (vendor/twig/twig/src/Template.php:411)
  at Twig\Template->yield()
     (var/cache/dev/twig/70/70348ae47e5a9ad31b350dadae593b7c.php:181)
  at __TwigTemplate_6a47796dee31b7c27ccdcd97f1384cda->block_body()
     (vendor/twig/twig/src/Template.php:458)
  at Twig\Template->yieldBlock()
     (var/cache/dev/twig/9b/9b9ff25ed5a550e31d4db030b58c07b1.php:105)
  at __TwigTemplate_517dbc70fda6583a0a582ed1f030baba->doDisplay()
     (vendor/twig/twig/src/Template.php:411)
  at Twig\Template->yield()
     (var/cache/dev/twig/a5/a5da669e304189c85a9d9412e04755e1.php:55)
  at __TwigTemplate_29138719212615a57fa231cec4536a31->doDisplay()
     (vendor/twig/twig/src/Template.php:411)
  at Twig\Template->yield()
     (var/cache/dev/twig/70/70348ae47e5a9ad31b350dadae593b7c.php:57)
  at __TwigTemplate_6a47796dee31b7c27ccdcd97f1384cda->doDisplay()
     (vendor/twig/twig/src/Template.php:411)
  at Twig\Template->yield()
     (vendor/twig/twig/src/Template.php:366)
  at Twig\Template->display()
     (vendor/twig/twig/src/Template.php:381)
  at Twig\Template->render()
     (vendor/twig/twig/src/TemplateWrapper.php:51)
  at Twig\TemplateWrapper->render()
     (vendor/twig/twig/src/Environment.php:333)
  at Twig\Environment->render()
     (vendor/symfony/framework-bundle/Controller/AbstractController.php:452)
  at Symfony\Bundle\FrameworkBundle\Controller\AbstractController->doRenderView()
     (vendor/symfony/framework-bundle/Controller/AbstractController.php:457)
  at Symfony\Bundle\FrameworkBundle\Controller\AbstractController->doRender()
     (vendor/symfony/framework-bundle/Controller/AbstractController.php:257)
  at Symfony\Bundle\FrameworkBundle\Controller\AbstractController->render()
     (src/Controller/AddannonceController.php:116)
  at App\Controller\AddannonceController->showAnnonce()
     (vendor/symfony/http-kernel/HttpKernel.php:181)
  at Symfony\Component\HttpKernel\HttpKernel->handleRaw()
     (vendor/symfony/http-kernel/HttpKernel.php:76)
  at Symfony\Component\HttpKernel\HttpKernel->handle()
     (vendor/symfony/http-kernel/Kernel.php:208)
  at Symfony\Component\HttpKernel\Kernel->handle()
     (vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php:35)
  at Symfony\Component\Runtime\Runner\Symfony\HttpKernelRunner->run()
     (vendor/autoload_runtime.php:29)
  at require_once('/var/www/clients/client0/web1/web/topautosntest/vendor/autoload_runtime.php')
     (public/index.php:5)