Bienvenue sur LivreZone
LivreZone
Retour au catalogue
Éloge de l'attente : T. S. Eliot et Samuel Beckett : T. S. Eliot et Samuel Beckett

Éloge de l'attente : T. S. Eliot et Samuel Beckett : T. S. Eliot et Samuel Beckett

ISBN-13

9782701119823

Date de publication

01/01/1996

Résumé

L&#8217auteur sonde l&#8217attente dans ses rapports avec l&#8217histoire l&#8217écriture le moi à travers l&#8217étude de quelques &#339uvres d&#8217Eliot et de Beckett qui ont l&#8217attente </div> </div> <div class="w-full lg:w-2/5"> <div role="group" aria-label="Price"> <div x-data="initPrice3066415()" x-bind="eventListeners" class="price-box price-final_price" > <template x-if="!activeProductsPriceData && !isPriceHidden()"> <div class="price-container"> <div class="final-price inline-block" itemprop="offers" itemscope="" itemtype="http://schema.org/Offer"> <span id="product-price-3066415" class="price-wrapper title-font font-medium text-2xl text-blue-900"> <span class="price" x-html="getFormattedFinalPrice()"> <span class="price">230,00 DH</span> </span> </span> <meta itemprop="price" content="230"> <meta itemprop="priceCurrency" content="MAD"> </div> </div> </template> <template x-if="activeProductsPriceData && activeProductsPriceData.oldPrice && activeProductsPriceData[finalPriceKey].amount < activeProductsPriceData[regularPriceKey].amount "> <div class="old-price flex mr-2"> <span id="product-price-3066415" class="price-wrapper title-font font-regular text-xl line-through text-blue-900"> <span class="price" x-html="hyva.formatPrice(activeProductsPriceData[regularPriceKey].amount + getCustomOptionPrice())"></span> </span> </div> </template> <template x-if="activeProductsPriceData"> <div class="final-price inline-block"> <span id="product-price-3066415" class="price-wrapper title-font font-medium text-2xl text-blue-900"> <span class="price" x-html="getFormattedFinalPrice()"></span> </span> </div> </template> </div> </div> <div class="flex flex-col sm:flex-row justify-between my-4"> <!-- Stock externe (Livremoi_StockManagement) --> <div class="mt-3 w-full rounded-xl border-2 border-blue-600 bg-blue-50 px-4 py-3 text-center"> <span class="text-sm font-semibold text-gray-900">Sur commande</span> </div> </div> <div class="flex flex-col mt-4 ml-auto sm:mt-0"> <div x-data="initQtyField()" class="mx-0 mb-5"> <label for="qty[3066415]" class="font-semibold flex mb-2" > Quantité </label> <div class="flex justify-between items-center bg-gray-100 border"> <span class="cursor-pointer block px-4 py-3" @click="if (qty > 1) { qty = qty - 1 }"> <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="minus" class="w-3 h-3" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"> <path fill="currentColor" d="M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"></path> </svg> </span> <input name="qty" @private-content-loaded.window="onGetCartData($event.detail, $dispatch)" id="qty[3066415]" form="product_addtocart_form" type="text" pattern="[0-9]{0,4}" inputmode="numeric" min="1" max="1000" :value="qty" class="form-input px-2 py-2 text-center bg-transparent border-0 " x-model.number="qty" @change="$dispatch('update-qty-3066415', qty)" /> <span class="cursor-pointer block px-4 py-3 " @click="qty = qty + 1"> <svg focusable="false" data-prefix="fas" data-icon="plus" class="w-3 h-3" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"> <path fill="currentColor" d="M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"></path> </svg> </span> </div> </div> <button type="submit" form="product_addtocart_form" title="Ajouter&#x20;au&#x20;panier" class="btn btn-primary items-center justify-center" id="product-addtocart-button" > <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true" class="border-current" width="24" height="24" role="img"> <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"/> <title>shopping-cart</title></svg> <span class="hidden sm:block md:hidden lg:block">Ajouter au panier </span> </button> </div> <form method="post" action="https://www.livremoi.ma/checkout/cart/add/uenc/aHR0cHM6Ly93d3cubGl2cmVtb2kubWEvbGl2cmU5NzgyNzAxMTE5ODIzLWVsb2dlLWRlLWwtYXR0ZW50ZS1taWNoYWVsLWVkd2FyZHMuaHRtbA~~/product/3066415/" class="mb-6" id="product_addtocart_form" > <input type="hidden" name="product" value="3066415" /> <input type="hidden" name="selected_configurable_option" value="" /> <input type="hidden" name="related_product" id="related-products-field" value="" /> <input type="hidden" name="item" value="3066415"> <input name="form_key" type="hidden" value="PD5kTKBsE4LUBlYy" /> </form> <div class="flex mt-4 justify-end"> <button x-data="initWishlist_6a6fe2c8c4f90()" @click.prevent="addToWishlist(3066415)" title="Ajouter&#x20;&#xE0;&#x20;la&#x20;liste&#x20;d&#x27;achats" aria-label="Ajouter&#x20;&#xE0;&#x20;la&#x20;liste&#x20;d&#x27;achats" id="add-to-wishlist" class="w-full rounded-xl border border-0 flex items-center justify-center text-gray-500 hover:text-red-600 p-2"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" class="w-5 h-5" width="25" height="25" role="img"> <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"/> <title>heart</title></svg> <span class="block">Ajouter&#x20;&#xE0;&#x20;la&#x20;liste&#x20;d&#x27;achats</span> </button> </div> </div> </div> <div x-data="{ tab: 'tab0' }" class="prod-tabs mx-auto"> <!-- Tab Links --> <ul class="flex border-b"> <li class="mr-5"> <button :class="{ 'active border-black border-b-2': tab === 'tab0' }" class="inline-block py-2 text-blue-500 hover:text-blue-800 font-semibold" @click.prevent="tab = 'tab0'"> <div class="flex md:flex-row "> <h2 class="text-gray-900 text-lg title-font font-base text-center md:text-left w-full"> Description</span> </h2> </div> </button> </li> <li class="mr-5"> <button :class="{ 'active border-black border-b-2': tab === 'tab1' }" class="inline-block py-2 text-blue-500 hover:text-blue-800 font-semibold" @click.prevent="tab = 'tab1'"> <div class="flex md:flex-row "> <h2 class="text-gray-900 text-lg title-font font-base text-center md:text-left w-full"> Plus d&#039;infos </h2> </div> </button> </li> </ul> <!-- Tab Content --> <div x-show="tab === 'tab0'" class="py-4"> <div class="prose"> L&#8217auteur sonde l&#8217attente dans ses rapports avec l&#8217histoire l&#8217écriture le moi à travers l&#8217étude de quelques &#339uvres d&#8217Eliot et de Beckett qui ont l&#8217attente comme mode d&#8217être plus encore que comme thème En cette fin de siècle où s'efface dit-on l'idée d'une vérité à rechercher d'un recel à partager d'un lieu où habiter le temps est venu de faire l'éloge de l'attente notion d'abord fâcheuse mais qui se révèle néanmoins être une discipline prodigieuse et une sorte de folie qui sauve L'attente et ses notions connexes: l'attention la tension - le fait de tendre vers quelque chose et (par le biais de l'anglais) de guetter - sont sondées dans leurs rapports avec l'histoire avec l'écriture avec le moi et en filigrane avec la théologie L'analyse se poursuit dans une étude parallèle de quelques &#339uvres décisives de T S Eliot et de Samuel Beckett qui ont l'attente non seulement comme thème mais comme mode d'être et qui suggèrent malgré leur divergence des rapprochements inattendus C'est surtout de poésie qu'il s'agit dans le sens large du mot puisque la poésie est elle-même une attente une voie hasardeuse moins vers l'avenir que vers un présent renouvelé et sans cesse recommencé vers une présence toujours différée et donc toujours possible La poésie est l'espoir d'une poésie devenue espoir</div> </div> <div x-show="tab === 'tab1'" class="py-4"> <div class="table-wrapper max-w-prose overflow-x-auto" id="product-attributes"> <table class="additional-attributes w-full"> <tr class="border-b border-gray-300 last:border-b-0"> <th class="col label w-1/2 py-2 text-left text-gray-700 font-normal product-attribute-label" scope="row">ISBN / EAN</th> <td class="col data w-1/2 py-2 pl-2 text-left text-gray-900 product-attribute-value" data-th="ISBN&#x20;&#x2F;&#x20;EAN" >9782701119823</td> </tr> <tr class="border-b border-gray-300 last:border-b-0"> <th class="col label w-1/2 py-2 text-left text-gray-700 font-normal product-attribute-label" scope="row">Editeur</th> <td class="col data w-1/2 py-2 pl-2 text-left text-gray-900 product-attribute-value" data-th="Editeur" >Belin Éditeur</td> </tr> </table> </div> </div> </div> </div> </div> </div> </section> <section> <div class="product-options-bottom container flex flex-col md:flex-row flex-no-wrap gap-4"> </div> </section> <section> </section> </div></div></div></main><footer class="page-footer"><div class="footer content"><div class="text-white text-base leading-6 bg-black relative"> <div class=" py-2 "> <div class="container mx-auto py-7 lg:flex lg:justify-between gap-8"> <div x-data="{ open: false }"> <style>.cmsb265-flex { display: flex }</style> <style>#html-body [data-pb-style=K6OWVMW]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}</style><div data-content-type="row" data-appearance="contained" data-element="main"><div data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="inner" data-pb-style="K6OWVMW"><div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><div> <h4 style="font-weight: bold;">Livremoi – Mode d'emploi</h4> <ul style="display: flex; flex-direction: column; gap: 4px; margin-top: 16px; margin-bottom: 24px; padding-left: 0; list-style: none;"> <li><a href="https://livremoi.ma/clubs-livremoi">Connaissez-vous les Clubs Livresmoi.ma ?</a></li> <li><a href="/problemes-pour-voir-correctement-le-site.html">Problèmes pour voir correctement le site ?</a></li> <li><a href="/f-a-q.html#how_credit_card">Puis-je utiliser ma carte bancaire marocaine pour régler ma commande ?</a></li> <li><a href="/f-a-q.html#how_cheque">Puis-je payer par chèque ou par virement bancaire ?</a></li> <li><a href="/f-a-q.html#shipping">Quel est le délai de livraison et le prix ?</a></li> <li><a href="/f-a-q.html#recherche">Recherche non aboutie</a></li> <li><a href="/f-a-q.html#payment">Votre paiement en ligne n'a pas abouti ?</a></li> </ul> <!-- Icônes réseaux sociaux --> <div style="display: flex; align-items: center; gap: 8px; margin-top: 20px;"> <!-- Facebook --> <a href="http://www.facebook.com/LivreMoi.ma" target="_blank" title="Facebook"> <svg width="30" height="30" fill="#b91c1c" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> <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"/> </svg> </a> <!-- Twitter / X --> <a href="https://twitter.com/livremoi" target="_blank" title="Twitter"> <svg width="30" height="30" fill="#b91c1c" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> <path d="M23.953 4.57a10 10 0 01-2.825.775 4.958 4.958 0 002.163-2.723c-.951.555-2.005.959-3.127 1.184a4.92 4.92 0 00-8.384 4.482C7.69 8.095 4.067 6.13 1.64 3.162a4.822 4.822 0 00-.666 2.475c0 1.71.87 3.213 2.188 4.096a4.904 4.904 0 01-2.228-.616v.06a4.923 4.923 0 003.946 4.827 4.996 4.996 0 01-2.212.085 4.936 4.936 0 004.604 3.417 9.867 9.867 0 01-6.102 2.105c-.39 0-.779-.023-1.17-.067a13.995 13.995 0 007.557 2.209c9.053 0 13.998-7.496 13.998-13.985 0-.21 0-.42-.015-.63A9.935 9.935 0 0024 4.59z"/> </svg> </a> <!-- Instagram --> <a href="https://www.instagram.com/livre_moi" target="_blank" title="Instagram"> <svg width="30" height="30" fill="#b91c1c" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> <path d="M12 0C8.74 0 8.333.015 7.053.072 5.775.132 4.905.333 4.14.63c-.789.306-1.459.717-2.126 1.384S.935 3.35.63 4.14C.333 4.905.131 5.775.072 7.053.012 8.333 0 8.74 0 12s.015 3.667.072 4.947c.06 1.277.261 2.148.558 2.913.306.788.717 1.459 1.384 2.126.667.666 1.336 1.079 2.126 1.384.766.296 1.636.499 2.913.558C8.333 23.988 8.74 24 12 24s3.667-.015 4.947-.072c1.277-.06 2.148-.262 2.913-.558.788-.306 1.459-.718 2.126-1.384.666-.667 1.079-1.335 1.384-2.126.296-.765.499-1.636.558-2.913.06-1.28.072-1.687.072-4.947s-.015-3.667-.072-4.947c-.06-1.277-.262-2.149-.558-2.913-.306-.789-.718-1.459-1.384-2.126C21.319 1.347 20.651.935 19.86.63c-.765-.297-1.636-.499-2.913-.558C15.667.012 15.26 0 12 0zm0 2.16c3.203 0 3.585.016 4.85.071 1.17.055 1.805.249 2.227.415.562.217.96.477 1.382.896.419.42.679.819.896 1.381.164.422.36 1.057.413 2.227.057 1.266.07 1.646.07 4.85s-.015 3.585-.074 4.85c-.061 1.17-.256 1.805-.421 2.227-.224.562-.479.96-.899 1.382-.419.419-.824.679-1.38.896-.42.164-1.065.36-2.235.413-1.274.057-1.649.07-4.859.07-3.211 0-3.586-.015-4.859-.074-1.171-.061-1.816-.256-2.236-.421-.569-.224-.96-.479-1.379-.899-.421-.419-.69-.824-.9-1.38-.165-.42-.359-1.065-.42-2.235-.045-1.26-.061-1.649-.061-4.844 0-3.196.016-3.586.061-4.861.061-1.17.255-1.814.42-2.234.21-.57.479-.96.9-1.381.419-.419.81-.689 1.379-.898.42-.166 1.051-.361 2.221-.421 1.275-.045 1.65-.06 4.859-.06l.045.03zm0 3.678c-3.405 0-6.162 2.76-6.162 6.162 0 3.405 2.76 6.162 6.162 6.162 3.405 0 6.162-2.76 6.162-6.162 0-3.405-2.76-6.162-6.162-6.162zM12 16c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4zm7.846-10.405c0 .795-.646 1.44-1.44 1.44-.795 0-1.44-.646-1.44-1.44 0-.794.646-1.439 1.44-1.439.793-.001 1.44.645 1.44 1.439z"/> </svg> </a> <!-- LinkedIn (icône corrigée) --> <a href="https://www.linkedin.com/company/livremoi-ma" target="_blank" title="LinkedIn"> <svg width="30" height="30" fill="#b91c1c" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> <path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/> </svg> </a> </div> </div></div></div></div> </div> <div x-data="{ open: false }" class="flex-1 pt-4 lg:p-0"> <style>.cmsb268-flex { display: flex }</style> <style>#html-body [data-pb-style=DRWSHSV]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}</style><div data-content-type="row" data-appearance="contained" data-element="main"><div data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="inner" data-pb-style="DRWSHSV"><div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><div> <h4 style="font-weight: bold;">Questions ?</h4> <ul style="display: flex; flex-direction: column; gap: 4px; margin-top: 16px; margin-bottom: 24px; padding-left: 0; list-style: none;"> <li><a href="/contacts#ma_commande">Suivre ma commande</a></li> <li><a href="/contacts#documentation">Je ne trouve pas le titre que je cherche</a></li> <li><a href="/contacts#collectivite">Pour les collectivités</a></li> <li><a href="/contacts#autres_questions">Autres questions</a></li> </ul> </div></div></div></div> </div> <div x-data="{ open: false }" class="flex-1 pt-4 lg:p-0"> <style>.cmsb267-flex { display: flex }</style> <style>#html-body [data-pb-style=R3S4NW2]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}</style><div data-content-type="row" data-appearance="contained" data-element="main"><div data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="inner" data-pb-style="R3S4NW2"><div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><div> <h4 style="font-weight: bold;">Qui Sommes Nous</h4> <ul style="display: flex; flex-direction: column; gap: 4px; margin-top: 16px; margin-bottom: 24px; padding-left: 0; list-style: none;"> <li><a href="/contacts">Nous contacter</a></li> <li><a href="/apropos.html">Qui sommes nous</a></li> <li><a href="/vie-privee.html">Vie privée</a></li> <li><a href="/conditions-generales-vente.html">Conditions générales de vente</a></li> <li><a href="/recrutement.html">Recrutement</a></li> </ul> </div></div></div></div> </div> <div x-data="{ open: false }" class="flex-1 pt-4 lg:p-0"> <style>.cmsb266-flex { display: flex }</style> <style>#html-body [data-pb-style=CVS6OI6]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}</style><div data-content-type="row" data-appearance="contained" data-element="main"><div data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="inner" data-pb-style="CVS6OI6"><div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><div> <h4 style="font-weight: bold;">Libraire et accueil commercial</h4> <div style="display: flex; flex-direction: column; gap: 8px; margin-top: 16px; margin-bottom: 24px;"> <p>Livremoi Casablanca : 6 rue Abderrahmane Kawakib, Gauthier 20000 Casablanca<br> Livremoi Rabat : 3 ave. Atlas, Agdal 10000 Rabat</p> <p>contact@livremoi.ma</p> <p>Horaires des deux librairies :<br> Lundi / samedi de 09h30 à 20h00, dimanche et jours fériés de 10h00 à 19h00</p> </div> </div></div></div></div> </div> </div> </div> <div class="bg-black"> <div class="py-4 text-sm sm:flex justify-center container mx-auto px-7 border-t border-white text-center "> <div class="text-white"> © 2008-2026 M & M Strategy S.A. </div> </div> </div> </div> </div></footer> </div> <script async src="https://www.googletagmanager.com/gtag/js?id=G-FX3FSNQV7E"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-FX3FSNQV7E'); </script> <script> var BASE_URL = 'https://www.livremoi.ma/'; var THEME_PATH = 'https://www.livremoi.ma/static/version1781180853/frontend/HyvaLivrezmoi/default/fr_FR'; var COOKIE_CONFIG = { "expires": null, "path": "\u002F", "domain": ".www.livremoi.ma", "secure": true, "lifetime": "3600", "cookie_restriction_enabled": false }; var CURRENT_STORE_CODE = 'default'; var CURRENT_WEBSITE_ID = '1'; window.hyva = window.hyva || {} window.cookie_consent_groups = window.cookie_consent_groups || {} window.cookie_consent_groups['necessary'] = true; window.cookie_consent_config = window.cookie_consent_config || {}; window.cookie_consent_config['necessary'] = [].concat( window.cookie_consent_config['necessary'] || [], [ 'user_allowed_save_cookie', 'form_key', 'mage-messages', 'private_content_version', 'mage-cache-sessid', 'last_visited_store', 'section_data_ids' ] ); </script> <script> 'use strict'; (function( hyva, undefined ) { function lifetimeToExpires(options, defaults) { const lifetime = options.lifetime || defaults.lifetime; if (lifetime) { const date = new Date; date.setTime(date.getTime() + lifetime * 1000); return date; } return null; } function generateRandomString() { const allowedCharacters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', length = 16; let formKey = '', charactersLength = allowedCharacters.length; for (let i = 0; i < length; i++) { formKey += allowedCharacters[Math.round(Math.random() * (charactersLength - 1))] } return formKey; } const sessionCookieMarker = {noLifetime: true} const cookieTempStorage = {}; const internalCookie = { get(name) { const v = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)'); return v ? v[2] : null; }, set(name, value, days, skipSetDomain) { let expires, path, domain, secure, samesite; const defaultCookieConfig = { expires: null, path: '/', domain: null, secure: false, lifetime: null, samesite: 'lax' }; const cookieConfig = window.COOKIE_CONFIG || {}; expires = days && days !== sessionCookieMarker ? lifetimeToExpires({lifetime: 24 * 60 * 60 * days, expires: null}, defaultCookieConfig) : lifetimeToExpires(window.COOKIE_CONFIG, defaultCookieConfig) || defaultCookieConfig.expires; path = cookieConfig.path || defaultCookieConfig.path; domain = !skipSetDomain && (cookieConfig.domain || defaultCookieConfig.domain); secure = cookieConfig.secure || defaultCookieConfig.secure; samesite = cookieConfig.samesite || defaultCookieConfig.samesite; document.cookie = name + "=" + encodeURIComponent(value) + (expires && days !== sessionCookieMarker ? '; expires=' + expires.toGMTString() : '') + (path ? '; path=' + path : '') + (domain ? '; domain=' + domain : '') + (secure ? '; secure' : '') + (samesite ? '; samesite=' + samesite : 'lax'); }, isWebsiteAllowedToSaveCookie() { const allowedCookies = this.get('user_allowed_save_cookie'); if (allowedCookies) { const allowedWebsites = JSON.parse(unescape(allowedCookies)); return allowedWebsites[CURRENT_WEBSITE_ID] === 1; } return false; }, getGroupByCookieName(name) { const cookieConsentConfig = window.cookie_consent_config || {}; let group = null; for (let prop in cookieConsentConfig) { if (!cookieConsentConfig.hasOwnProperty(prop)) continue; if (cookieConsentConfig[prop].includes(name)) { group = prop; break; } } return group; }, isCookieAllowed(name) { const cookieGroup = this.getGroupByCookieName(name); return cookieGroup ? window.cookie_consent_groups[cookieGroup] : this.isWebsiteAllowedToSaveCookie(); }, saveTempStorageCookies() { for (const [name, data] of Object.entries(cookieTempStorage)) { if (this.isCookieAllowed(name)) { this.set(name, data['value'], data['days'], data['skipSetDomain']); delete cookieTempStorage[name]; } } } }; hyva.getCookie = (name) => { const cookieConfig = window.COOKIE_CONFIG || {}; if (cookieConfig.cookie_restriction_enabled && ! internalCookie.isCookieAllowed(name)) { return cookieTempStorage[name] ? cookieTempStorage[name]['value'] : null; } return internalCookie.get(name); } hyva.setCookie = (name, value, days, skipSetDomain) => { const cookieConfig = window.COOKIE_CONFIG || {}; if (cookieConfig.cookie_restriction_enabled && ! internalCookie.isCookieAllowed(name)) { cookieTempStorage[name] = {value, days, skipSetDomain}; return; } return internalCookie.set(name, value, days, skipSetDomain); } hyva.setSessionCookie = (name, value, skipSetDomain) => { return hyva.setCookie(name, value, sessionCookieMarker, skipSetDomain) } hyva.getBrowserStorage = () => { const browserStorage = window.localStorage || window.sessionStorage; if (!browserStorage) { console.warn('Browser Storage is unavailable'); return false; } try { browserStorage.setItem('storage_test', '1'); browserStorage.removeItem('storage_test'); } catch (error) { console.warn('Browser Storage is not accessible', error); return false; } return browserStorage; } hyva.postForm = (postParams) => { const form = document.createElement("form"); let data = postParams.data; if (! postParams.skipUenc && ! data.uenc) { data.uenc = btoa(window.location.href); } form.method = "POST"; form.action = postParams.action; Object.keys(postParams.data).map(key => { const field = document.createElement("input"); field.type = 'hidden' field.value = postParams.data[key]; field.name = key; form.appendChild(field); }); const form_key = document.createElement("input"); form_key.type = 'hidden'; form_key.value = hyva.getFormKey(); form_key.name="form_key"; form.appendChild(form_key); document.body.appendChild(form); form.submit(); } hyva.getFormKey = function () { let formKey = hyva.getCookie('form_key'); if (!formKey) { formKey = generateRandomString(); hyva.setCookie('form_key', formKey); } return formKey; } hyva.formatPrice = (value, showSign, options = {}) => { const formatter = new Intl.NumberFormat( 'fr\u002DFR', Object.assign({ style: 'currency', currency: 'MAD', signDisplay: showSign ? 'always' : 'auto' }, options) ); return (typeof Intl.NumberFormat.prototype.formatToParts === 'function') ? formatter.formatToParts(value).map(({type, value}) => { switch (type) { case 'currency': return 'DH' || value; case 'minusSign': return '- '; case 'plusSign': return '+ '; default : return value; } }).reduce((string, part) => string + part) : formatter.format(value); } const formatStr = function (str, nStart) { const args = Array.from(arguments).slice(2); return str.replace(/(%+)([0-9]+)/g, (m, p, n) => { const idx = parseInt(n) - nStart; if (args[idx] === null || args[idx] === void 0) { return m; } return p.length % 2 ? p.slice(0, -1).replace('%%', '%') + args[idx] : p.replace('%%', '%') + n; }) } hyva.str = function (string) { const args = Array.from(arguments); args.splice(1, 0, 1); return formatStr.apply(undefined, args); } hyva.strf = function () { const args = Array.from(arguments); args.splice(1, 0, 0); return formatStr.apply(undefined, args); } /** * Take a html string as `content` parameter and * extract an element from the DOM to replace in * the current page under the same selector, * defined by `targetSelector` */ hyva.replaceDomElement = (targetSelector, content) => { // Parse the content and extract the DOM node using the `targetSelector` const parser = new DOMParser(); const doc = parser.parseFromString(content, 'text/html'); const contentNode = doc.querySelector(targetSelector); // Bail if content can't be found if (!contentNode) { return; } hyva.activateScripts(contentNode) // Replace the old DOM node with the new content document.querySelector(targetSelector).replaceWith(contentNode); // Reload customerSectionData and display cookie-messages if present window.dispatchEvent(new CustomEvent("reload-customer-section-data")); hyva.initMessages(); } hyva.activateScripts = (contentNode) => { // Extract all the script tags from the content. // Script tags won't execute when inserted into a dom-element directly, // therefore we need to inject them to the head of the document. const tmpScripts = contentNode.getElementsByTagName('script'); if (tmpScripts.length > 0) { // Push all script tags into an array // (to prevent dom manipulation while iterating over dom nodes) const scripts = []; for (let i = 0; i < tmpScripts.length; i++) { scripts.push(tmpScripts[i]); } // Iterate over all script tags and duplicate+inject each into the head for (let i = 0; i < scripts.length; i++) { let script = document.createElement('script'); script.innerHTML = scripts[i].innerHTML; document.head.appendChild(script); // Remove the original (non-executing) node from the content scripts[i].parentNode.removeChild(scripts[i]); } } return contentNode; } const replace = {['+']: '-', ['/']: '_', ['=']: ','}; hyva.getUenc = () => btoa(window.location.href).replace(/[+/=]/g, match => replace[match]); let currentTrap; const focusableElements = (rootElement) => { const selector = 'button, [href], input, select, textarea, details, [tabindex]:not([tabindex="-1"]'; return Array.from(rootElement.querySelectorAll(selector)) .filter(el => { return el.style.display !== 'none' && !el.disabled && el.tabIndex !== -1 && (el.offsetWidth || el.offsetHeight || el.getClientRects().length) }) } const focusTrap = (e) => { const isTabPressed = e.key === 'Tab' || e.keyCode === 9; if (!isTabPressed) return; const focusable = focusableElements(currentTrap) const firstFocusableElement = focusable[0] const lastFocusableElement = focusable[focusable.length - 1] e.shiftKey ? document.activeElement === firstFocusableElement && (lastFocusableElement.focus(), e.preventDefault()) : document.activeElement === lastFocusableElement && (firstFocusableElement.focus(), e.preventDefault()) }; hyva.releaseFocus = (rootElement) => { if (currentTrap && (!rootElement || rootElement === currentTrap)) { currentTrap.removeEventListener('keydown', focusTrap) currentTrap = null } } hyva.trapFocus = (rootElement) => { if (!rootElement) return; hyva.releaseFocus() currentTrap = rootElement rootElement.addEventListener('keydown', focusTrap) const firstElement = focusableElements(rootElement)[0] firstElement && firstElement.focus() } hyva.alpineInitialized = (fn) => window.addEventListener('alpine:initialized', fn, {once: true}) window.addEventListener('user-allowed-save-cookie', () => internalCookie.saveTempStorageCookies()) }( window.hyva = window.hyva || {} )); </script> <script> (function initGoogleGA(){ const config = {"isCookieRestrictionModeEnabled":false,"currentWebsite":1,"cookieName":"user_allowed_save_cookie","pageTrackingData":{"optPageUrl":"","measurementId":"G-FX3FSNQV7E"},"ordersTrackingData":[],"googleAnalyticsAvailable":true}; const anonymize_ip = true; let allowServices = false, allowedCookies, allowedWebsites, measurementId; if (typeof hyva === 'undefined' || (!hyva.getBrowserStorage || !hyva.getCookie || !hyva.setCookie)) { console.warn("Hyvä helpers are not loaded yet. Make sure they are included before this script"); } if (config.isCookieRestrictionModeEnabled && typeof hyva !== 'undefined') { allowedCookies = hyva.getCookie(config.cookieName); if (allowedCookies !== null) { allowedWebsites = JSON.parse(unescape(allowedCookies)); if (allowedWebsites[config.currentWebsite] === 1) { allowServices = true; } } else { window.addEventListener('user-allowed-save-cookie', initGoogleGA, { once: true, passive: true }); } } else { allowServices = true; } if (allowServices) { measurementId = config.pageTrackingData.measurementId; if (!window.gtag) { const gtagScript = document.createElement('script'); gtagScript.type = 'text/javascript'; gtagScript.async = true; gtagScript.src = 'https://www.googletagmanager.com/gtag/js?id=' + measurementId; document.head.insertBefore(gtagScript, document.head.children[0]); window.dataLayer = window.dataLayer || []; window.gtag = function(){dataLayer.push(arguments)}; gtag('js', new Date()); gtag('set', 'developer_id.dYjhlMD', true); } gtag('config', measurementId, { 'anonymize_ip': anonymize_ip }); // Purchase Event if (config.ordersTrackingData.hasOwnProperty('currency')) { let purchaseObject = config.ordersTrackingData.orders[0]; purchaseObject['items'] = config.ordersTrackingData.products; gtag('event', 'purchase', purchaseObject); } } }()) </script> <script> if (!window.IntersectionObserver) { window.IntersectionObserver = function (callback) { this.observe = el => el && callback(this.takeRecords()); this.takeRecords = () => [{isIntersecting: true, intersectionRatio: 1}]; this.disconnect = () => {}; this.unobserve = () => {}; } } </script> <script> document.body.addEventListener('touchstart', () => {}, {passive: true}) </script> <script> function initHeader () { return { searchOpen: false, cart: {}, isMobile: true, init() { const matchMedia = window.matchMedia("(max-width: 1023px)"); this.onChangeMedia(matchMedia); if(typeof matchMedia.onchange !== 'object') { //prevent an old iOS Safari bug where addEventListener does not accept an event type parameter matchMedia.addListener((event) => this.onChangeMedia(event)); } else { matchMedia.addEventListener( "change", (event) => this.onChangeMedia(event) ) } }, onChangeMedia(mediaQuery) { if(this.isMobile !== mediaQuery.matches){ this.isMobile = mediaQuery.matches; if(this.isMobile){ this.$refs.searchContainerMobile.appendChild(this.$refs.searchForm); }else{ this.$refs.searchContainerDesktop.appendChild(this.$refs.searchForm); } } }, getData(data) { if (data.cart) { this.cart = data.cart } } } } </script> <script> 'use strict'; const initMenuMobile_6a6fcea0caf2d = () => { return { open: false, openMenu(event) { this.open = true this.$nextTick(() => hyva.trapFocus(this.$refs['menu-dialog'])) // Prevent from body scrolling while mobile menu opened document.body.classList.add('fixed', 'w-full') }, closeMenu(event) { event.stopPropagation() document.body.classList.remove('fixed', 'w-full') this.open = false this.$nextTick(() => this.$refs['open-menu-button'].focus() || hyva.releaseFocus()) }, toggleSubmenu(index) { this[index] = !this[index] if (this[index]) { const focusableElements = 'button:not([disabled]), a[href]:not([tabindex="-1"]), [tabindex]:not([tabindex="-1"])' this.$nextTick(() => { this.$refs['submenu-' + index]?.querySelector(focusableElements)?.focus() }) } }, } } </script> <script> 'use strict'; function initMiniSearch() { return { formAction: "https:\/\/www.livremoi.ma\/search\/standart\/", selectedCat: "0", minSearchLength: 2, suggestions: [], updateCategory(event) { const el = event.target; this.selectedCat = el.value; const url = el.getAttribute('data-search-url'); if (url) { this.formAction = url; } }, suggest() { const search = this.$refs.searchInput; if (search.value.length >= this.minSearchLength) { search.setCustomValidity(''); search.reportValidity(); this.fetchSuggestions(search.value); } else { this.suggestions = []; } }, fetchSuggestions(term) { fetch( window.BASE_URL + 'search/ajax/suggest?' + new URLSearchParams({q: term}), { headers: { 'X-Requested-With': 'XMLHttpRequest' } } ) .then(response => response.json()) .then(result => this.suggestions = result); }, search(term) { const search = this.$refs.searchInput; term = term || search.value; if (term.length < this.minSearchLength) { search.setCustomValidity("Longueur minimale de requ\u00eate recherche 2"); search.reportValidity(); } else { search.setCustomValidity(''); search.value = term; this.$refs.form.submit(); } }, focusElement(element) { if (element && element.nodeName === 'DIV') { element.focus(); return true; } return false; } } } </script> <script> function initCartDrawer() { return { open: false, isLoading: false, cart: {}, maxItemsToDisplay: 10, itemsCount: 0, getData(data) { if (data.cart) { this.cart = data.cart; this.itemsCount = data.cart.items && data.cart.items.length || 0; this.setCartItems(); } this.isLoading = false; }, cartItems: [], getItemCountTitle() { return hyva.strf('\u00250\u0020of\u0020\u00251\u0020products\u0020in\u0020cart\u0020displayed', this.maxItemsToDisplay, this.itemsCount) }, setCartItems() { this.cartItems = this.cart.items && this.cart.items.sort((a, b) => b.item_id - a.item_id) || []; if (this.maxItemsToDisplay > 0) { this.cartItems = this.cartItems.slice(0, parseInt(this.maxItemsToDisplay, 10)); } }, deleteItemFromCart(itemId) { this.isLoading = true; const formKey = hyva.getFormKey(); const postUrl = BASE_URL + 'checkout/sidebar/removeItem/'; fetch(postUrl, { "headers": { "content-type": "application/x-www-form-urlencoded; charset=UTF-8", }, "body": "form_key=" + formKey + "&item_id=" + itemId, "method": "POST", "mode": "cors", "credentials": "include" }).then(response => { if (response.redirected) { window.location.href = response.url; } else if (response.ok) { return response.json(); } else { window.dispatchMessages && window.dispatchMessages([{ type: 'warning', text: 'Could\u0020not\u0020remove\u0020item\u0020from\u0020quote.' }]); this.isLoading = false; } }).then(result => { window.dispatchMessages && window.dispatchMessages([{ type: result.success ? 'success' : 'error', text: result.success ? 'Vous\u0020avez\u0020supprim\u00E9\u0020l\u0027\u00E9l\u00E9ment.' : result.error_message }], result.success ? 5000 : 0) window.dispatchEvent(new CustomEvent('reload-customer-section-data')); }); }, scrollLock(use = true) { document.body.style.overflow = use ? "hidden" : ""; }, toggleCartDrawer(event) { if (event.detail && event.detail.isOpen !== undefined) { if (event.detail.isOpen) { this.openCartDrawer(); } else { this.open = false; this.scrollLock(false); this.$refs && this.$refs.cartDialogContent && hyva.releaseFocus(this.$refs.cartDialogContent); } } else { this.openCartDrawer() } }, openCartDrawer() { this.open = true; this.scrollLock(true); this.$nextTick(() => { this.$refs && this.$refs.cartDialogContent && hyva.trapFocus(this.$refs.cartDialogContent) }) }, closeCartDrawer() { this.$dispatch('toggle-cart', { isOpen: false }) }, getSectionDataExtraActions() { if (!this.cart.extra_actions) { return ''; } const contentNode = document.createElement('div'); contentNode.innerHTML = this.cart.extra_actions; hyva.activateScripts(contentNode); return contentNode.innerHTML; } } } </script> <script> function initAuthentication() { return { open: false, forceAuthentication: false, checkoutUrl: 'https://www.livremoi.ma/checkout/index/', errors: 0, hasCaptchaToken: 0, displayErrorMessage: false, errorMessages: [], setErrorMessages: function setErrorMessages(messages) { this.errorMessages = [messages]; this.displayErrorMessage = this.errorMessages.length; }, submitForm: function () { // Do not rename $form, the variable is expected to be declared in the recaptcha output const $form = document.querySelector('#login-form'); if (this.errors === 0) { this.dispatchLoginRequest($form); } }, onPrivateContentLoaded: function (data) { const isLoggedIn = data.customer && data.customer.firstname; if (data.cart && !isLoggedIn) { this.forceAuthentication = !data.cart.isGuestCheckoutAllowed; } }, redirectIfAuthenticated: function (event) { if (event.detail && event.detail.url) { this.checkoutUrl = event.detail.url; } if (!this.forceAuthentication) { window.location.href = this.checkoutUrl; } }, dispatchLoginRequest: function(form) { this.isLoading = true; const username = this.$refs['customer-email'].value; const password = this.$refs['customer-password'].value; const formKey = hyva.getFormKey(); const bodyFields = { 'username': username, 'password': password, 'formKey': formKey }; const fieldName = 'g\u002Drecaptcha\u002Dresponse'; const recaptchaField = fieldName && form[fieldName]; if (recaptchaField) { bodyFields[fieldName] = recaptchaField.value; } fetch('https://www.livremoi.ma/customer/ajax/login/', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-Requested-With': 'XMLHttpRequest' }, body: JSON.stringify(bodyFields) } ).then(response => { return response.json() } ).then(data=> { this.isLoading = false; if (data.errors) { dispatchMessages([{ type: 'error', text: data.message }], 5000); this.errors = 1; this.hasCaptchaToken = 0; } else { window.location.href = this.checkoutUrl; } }); } } } </script> <script> function initMessages() { "use strict"; return { messages: window.mageMessages || [], isEmpty() { return this.messages.reduce( function (isEmpty, message) { return isEmpty && message === undefined }, true ) }, removeMessage(messageIndex) { this.messages[messageIndex] = undefined; }, addMessages(messages, hideAfter) { messages.map((message) => { this.messages = this.messages.concat(message); if (hideAfter === undefined && message.type === 'success' && window.defaultSuccessMessageTimeout) { hideAfter = window.defaultSuccessMessageTimeout; } if (hideAfter) { this.setHideTimeOut(this.messages.length -1, hideAfter); } }); }, setHideTimeOut(messageIndex, hideAfter) { setTimeout((messageIndex) => { this.removeMessage(messageIndex); }, hideAfter, messageIndex); }, eventListeners: { ['@messages-loaded.window'](event) { this.addMessages(event.detail.messages, event.detail.hideAfter) }, ['@private-content-loaded.window'](event) { const data = event.detail.data; if ( data.messages && data.messages.messages && data.messages.messages.length ) { this.addMessages(data.messages.messages); } }, ['@clear-messages.window']() { this.messages = []; } } } } </script> <script> function initGallery () { let touchXDown, touchYDown; return { "active": 0, "videoData": {}, "activeVideoType": false, "autoplayVideo": false, "loopVideo": true, "relatedVideos": false, "vimeoPlayer": null, "fullscreen": false, "isSlider": false, "initialImages": [{"thumb":"https:\/\/images.epagine.fr\/823\/9782701119823_1_75.jpg","img":"https:\/\/images.epagine.fr\/823\/9782701119823_1_75.jpg","full":"https:\/\/images.epagine.fr\/823\/9782701119823_1_75.jpg","caption":"\u00c9loge de l'attente","position":100,"isMain":false,"type":"image","videoUrl":null}], "images": [{"thumb":"https:\/\/images.epagine.fr\/823\/9782701119823_1_75.jpg","img":"https:\/\/images.epagine.fr\/823\/9782701119823_1_75.jpg","full":"https:\/\/images.epagine.fr\/823\/9782701119823_1_75.jpg","caption":"\u00c9loge de l'attente","position":100,"isMain":false,"type":"image","videoUrl":null}], "appendOnReceiveImages": false, "activeSlide": 0, "itemCount": 0, "pageSize": 4, "pageFillers": 0, "focusTrapListener": null, init() { this.initActive(); this.$nextTick(() => this.calcPageSize()); }, receiveImages(images) { if (this.appendOnReceiveImages) { const initialUrls = this.initialImages.map(image => image.full); const newImages = images.filter(image => ! initialUrls.includes(image.full)); this.images = [].concat(this.initialImages, newImages); this.setActive(newImages.length ? this.initialImages.length : 0); } else { this.images = images; this.setActive(0); } }, resetGallery() { this.images = this.initialImages; this.setActive(0); }, initActive() { let active = this.images.findIndex(function(image) { return image.isMain === true }); if (active === -1) { active = 0; } this.setActive(active); }, setActive(index) { this.active = index; if (window.youtubePlayer) { window.youtubePlayer.stopVideo(); } if (this.vimeoPlayer) { this.vimeoPlayer.contentWindow.postMessage(JSON.stringify({"method": "pause"}), "*"); } if (this.images[index].type === 'video') { this.activateVideo(); } }, activateVideo() { const videoData = this.getVideoData(); if (!videoData) { return } this.activeVideoType = videoData.type; if (videoData.type === "youtube") { if (!window.youtubePlayer) { this.initYoutubeAPI(videoData); } else { window.youtubePlayer.loadVideoById(videoData.id); } } else if (videoData.type === "vimeo") { this.initVimeoVideo(videoData); } }, getVideoData() { const videoUrl = this.images[this.active] && this.images[this.active].videoUrl; if (!videoUrl) { return } let id, type, youtubeRegex, vimeoRegex, useYoutubeNoCookie = false; if (videoUrl.match(/youtube\.com|youtu\.be|youtube-nocookie.com/)) { id = videoUrl.replace(/^\/(embed\/|v\/)?/, '').replace(/\/.*/, ''); type = 'youtube'; youtubeRegex = /^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/)|(?:(?:watch)?\?v(?:i)?=|\&v(?:i)?=))([^#\&\?]*).*/; id = videoUrl.match(youtubeRegex)[1]; if (videoUrl.match(/youtube-nocookie.com/)) { useYoutubeNoCookie = true; } } else if (videoUrl.match(/vimeo\.com/)) { type = 'vimeo'; vimeoRegex = new RegExp(['https?:\\/\\/(?:www\\.|player\\.)?vimeo.com\\/(?:channels\\/(?:\\w+\\/)', '?|groups\\/([^\\/]*)\\/videos\\/|album\\/(\\d+)\\/video\\/|video\\/|)(\\d+)(?:$|\\/|\\?)' ].join('')); id = videoUrl.match(vimeoRegex)[3]; } return id ? { id: id, type: type, useYoutubeNoCookie: useYoutubeNoCookie } : false; }, initYoutubeAPI(videoData) { if (document.getElementById('loadYoutubeAPI')) { return; } const params = {}; const loadYoutubeAPI = document.createElement('script'); loadYoutubeAPI.src = 'https://www.youtube.com/iframe_api'; loadYoutubeAPI.id = 'loadYoutubeAPI'; const firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(loadYoutubeAPI, firstScriptTag); const host = (videoData.useYoutubeNoCookie) ? 'https://www.youtube-nocookie.com' : 'https://www.youtube.com'; if (this.autoplayVideo) { params.autoplay = this.autoplayVideo; } if (!this.relatedVideos) { params.rel = 0; } const fireYoutubeAPI = document.createElement('script'); fireYoutubeAPI.innerHTML = `function onYouTubeIframeAPIReady() { window.youtubePlayer = new YT.Player('youtube-player', { host: '${host}', videoId: '${videoData.id}', playerVars: ${JSON.stringify(params)}, }); }`; firstScriptTag.parentNode.insertBefore(fireYoutubeAPI, firstScriptTag); }, initVimeoVideo(videoData) { let additionalParams = '', src; const timestamp = new Date().getTime(); const vimeoContainer = document.getElementById("vimeo-player"); const videoId = videoData.id; if (!vimeoContainer || !videoId) return; if (this.autoplayVideo) { additionalParams += '&autoplay=1'; } if (this.loopVideo) { additionalParams += '&loop=1'; } src = 'https://player.vimeo.com/video/' + videoId + '?api=1&player_id=vimeo' + videoId + timestamp + additionalParams; vimeoContainer.innerHTML = `<iframe id="${'vimeo' + videoId + timestamp}" src="${src}" width="640" height="360" webkitallowfullscreen mozallowfullscreen allowfullscreen referrerPolicy="origin" allow="autoplay" class="object-center w-full h-full object-fit" />`; this.vimeoPlayer = vimeoContainer.childNodes[0]; }, getSlider() { return this.$refs.jsThumbSlides; }, calcPageSize() { const slider = this.getSlider(); if (slider) { const slideEl = slider.querySelector('.js_thumbs_slide'), marginRight = parseInt(window.getComputedStyle(slideEl).marginRight); this.itemCount = slider.querySelectorAll('.js_thumbs_slide').length; this.pageSize = Math.round(slider.clientWidth / (slideEl.clientWidth + marginRight)); this.pageFillers = ( this.pageSize * Math.ceil(this.itemCount / this.pageSize) ) - this.itemCount; this.isSlider = ((slider.clientWidth - (this.itemCount * (slideEl.clientWidth + marginRight))) < 0); } }, calcActive() { const slider = this.getSlider(); if (slider) { const sliderItems = this.itemCount + this.pageFillers; const calculatedActiveSlide = slider.scrollLeft / (slider.scrollWidth / sliderItems); this.activeSlide = Math.round(calculatedActiveSlide / this.pageSize) * this.pageSize; } }, scrollPrevious() { this.scrollTo(this.activeSlide - this.pageSize); }, scrollNext() { this.scrollTo(this.activeSlide + this.pageSize); }, scrollTo(idx) { const slider = this.getSlider(); if (slider) { const slideWidth = slider.scrollWidth / (this.itemCount + this.pageFillers); slider.scrollLeft = Math.floor(slideWidth) * idx; this.activeSlide = idx; } }, setActiveAndScrollTo(index) { this.setActive(index) if (this.isSlider) { this.scrollTo(index); } }, eventListeners: { ['@keydown.window.escape']() { this.closeFullScreen() }, ['@update-gallery.window'](event) { this.receiveImages(event.detail); }, ['@reset-gallery.window'](event) { this.resetGallery(); } }, focusTrapHandler: function(firstFocusableElement, lastFocusableElement, e) { const isTabPressed = e.key === 'Tab' || e.keyCode === 9; if (!isTabPressed) { return; } e.shiftKey ? document.activeElement === firstFocusableElement && (lastFocusableElement.focus(), e.preventDefault()) : document.activeElement === lastFocusableElement && (firstFocusableElement.focus(), e.preventDefault()); }, openFullscreen(node) { this.fullscreen = true; this.$nextTick(() => this.calcPageSize()); const focusableElements = 'button, [href], input, select, textarea'; const focusableContent = Array.from(node.querySelectorAll(focusableElements)) .filter(el => (el.attributes.tabindex >= 0 || !el.attributes.tabindex) && el.style.display !== 'none'); const firstFocusableElement = focusableContent.length > 0 ? focusableContent[0] : null; const lastFocusableElement = focusableContent.length > 0 ? focusableContent[focusableContent.length - 1] : null; this.focusTrapListener = this.focusTrapHandler.bind(this, firstFocusableElement, lastFocusableElement); document.addEventListener('keydown', this.focusTrapListener); }, closeFullScreen() { if (this.fullscreen) { this.$refs.galleryMainImage.focus(); } this.fullscreen = false; this.$nextTick(() => this.calcPageSize()); document.removeEventListener('keydown', this.focusTrapListener); }, handleTouchStart(event) { if (this.images.length <= 1) { return; } const firstTouch = event.touches[0]; touchXDown = firstTouch.clientX; touchYDown = firstTouch.clientY; }, handleTouchMove(event) { if (this.images.length <= 1 || !touchXDown || !touchYDown) { return; } const xDiff = touchXDown - event.touches[0].clientX; const yDiff = touchYDown - event.touches[0].clientY; if (Math.abs(xDiff) > Math.abs(yDiff)) { const newIndex = xDiff > 0 ? this.getNextIndex() : this.getPreviousIndex(); this.setActiveAndScrollTo(newIndex) } touchXDown = touchYDown = null; }, getPreviousIndex() { return this.active > 0 ? this.active - 1 : this.itemCount - 1; }, getNextIndex() { return this.active + 1 === this.itemCount ? 0 : this.active + 1; } } } </script> <script> function initPrice3066415() { const regularPriceInclTaxKey = 'oldPrice', regularPriceExclTaxKey = 'baseOldPrice', finalPriceInclTaxKey = 'finalPrice', finalPriceExclTaxKey = 'basePrice'; function calculateCustomOptionPrices(activeCustomOptions, customOptionPrices) { return activeCustomOptions.reduce((priceAccumulator, activeCustomOptionId) => { const customOptionPrice = customOptionPrices[activeCustomOptionId]; if (customOptionPrice) { return Number.parseFloat(priceAccumulator) + Number.parseFloat(customOptionPrice); } return priceAccumulator; }, 0); } return { regularPriceKey: regularPriceExclTaxKey, finalPriceKey: finalPriceExclTaxKey, activeProductsPriceData: false, initialFinalPrice: 230, calculatedFinalPrice: false, calculatedFinalPriceWithCustomOptions: false, initialTierPrices: [], showRegularPriceLabel: false, customOptionPrices: [], activeCustomOptions: [], qty: 1, updateCustomOptionActive(data) { let activeCustomOptions = this.activeCustomOptions; const customOptionId = data.customOptionId; if (data.active) { if (!activeCustomOptions.includes(customOptionId)) { activeCustomOptions.push(data.customOptionId); } } else { if (customOptionId && activeCustomOptions.includes(customOptionId)) { let index = activeCustomOptions.indexOf(customOptionId); activeCustomOptions.splice(index, 1); } } this.calculateFinalPriceWithCustomOptions() }, updateCustomOptionPrices(prices, basePrices) { if (prices) { this.customOptionPrices = prices; } this.calculateFinalPriceWithCustomOptions(); }, calculateFinalPrice() { const findApplicableTierPrice = (initialPrice, withTax) => { if (this.activeProductsPriceData && this.activeProductsPriceData.tierPrices) { const key = withTax ? 'price' : 'basePrice' return this.activeProductsPriceData.tierPrices.reduce((acc, tierPrice) => { if (this.qty >= tierPrice.qty && tierPrice[key] < acc) { return tierPrice[key]; } return acc; }, this.activeProductsPriceData[withTax ? finalPriceInclTaxKey : finalPriceExclTaxKey].amount); } else { const key = withTax ? 'price_incl_tax' : 'price_excl_tax'; return Object.values(this.initialTierPrices).reduce((acc, tierPrice) => { if (this.qty >= tierPrice.price_qty && tierPrice[key] < acc) { return tierPrice[key]; } return acc; }, initialPrice); } } this.calculatedFinalPrice = findApplicableTierPrice(this.initialFinalPrice, false); window.dispatchEvent(new CustomEvent("update-product-final-price", {detail: this.calculatedFinalPrice})); }, calculatePriceLabelVisibility() { this.showRegularPriceLabel = (this.calculatedFinalPrice === this.activeProductsPriceData[this.regularPriceKey].amount) && this.activeProductsPriceData.isMinimalPrice; }, calculateFinalPriceWithCustomOptions() { const finalPrice = this.calculatedFinalPrice || this.initialFinalPrice; this.calculatedFinalPriceWithCustomOptions = finalPrice + this.getCustomOptionPrice(); }, getCustomOptionPrice() { return calculateCustomOptionPrices(this.activeCustomOptions, this.customOptionPrices); }, getFormattedFinalPrice() { return hyva.formatPrice( this.calculatedFinalPriceWithCustomOptions || this.calculatedFinalPrice || this.initialFinalPrice ) }, isPriceHidden() { const finalPrice = this.calculatedFinalPriceWithCustomOptions || this.calculatedFinalPrice || this.initialFinalPrice; return false && finalPrice === 0; }, eventListeners: { ['@update-prices-3066415.window'](event) { this.activeProductsPriceData = event.detail; this.calculateFinalPrice(); this.calculateFinalPriceWithCustomOptions(); this.calculatePriceLabelVisibility(); }, ['@update-qty-3066415.window'](event) { this.qty = event.detail; this.calculateFinalPrice(); this.calculateFinalPriceWithCustomOptions(); }, ['@update-custom-option-active.window'](event) { this.updateCustomOptionActive(event.detail); }, ['@update-custom-option-prices.window'](event) { this.updateCustomOptionPrices(event.detail); }, } } } </script> <script> function initQtyField() { function findPathParam(key) { // get all path pairs after BASE_URL/front_name/action_path/action const baseUrl = (BASE_URL.substring(0, 2) === '//' ? 'http:' : '') + BASE_URL; const baseUrlParts = (new URL(baseUrl)).pathname.replace(/\/$/, '').split('/'); const pathParts = window.location.pathname.split('/').slice(baseUrlParts.length + 3); for (let i = 0; i < pathParts.length; i += 2) { if (pathParts[i] === key && pathParts.length > i) { return pathParts[i + 1]; } } } return { qty: 1, itemId: (new URLSearchParams(window.location.search)).get('id') || findPathParam('id'), productId: '3066415', onGetCartData: function onGetCartData(data, $dispatch) { const cart = data && data.data && data.data.cart; if (this.itemId && cart && cart.items) { const cartItem = cart.items.find((item) => { return item.item_id === this.itemId && item.product_id === this.productId; }); if (cartItem && cartItem.qty) { this.qty = cartItem.qty; $dispatch('update-qty-' + this.productId, this.qty); } } } }; } </script> <script> function initWishlist_6a6fe2c8c4f90() { return { addToWishlist(productId) { const postParams = { action: BASE_URL + "wishlist/index/add/", data: { product: productId, uenc: hyva.getUenc() } } postParams.data['form_key'] = hyva.getFormKey(); postParams.data['qty'] = document.getElementById(`qty[${productId}]`) ? document.getElementById(`qty[${productId}]`).value || 1 : 1; let postData = Object.keys(postParams.data).map(key => { return `${key}=${postParams.data[key]}`; }).join('&'); // take the all the input fields that configure this product // includes custom, configurable, grouped and bundled options Array.from(document.querySelectorAll( '[name^=options], [name^=super_attribute], [name^=bundle_option], [name^=super_group], [name^=links]') ).map(input => { if (input.type === "select-multiple") { Array.from(input.selectedOptions).forEach(option => { postData += `&${input.name}=${option.value}` }) } else { // skip "checkable inputs" that are not checked if(!(['radio', 'checkbox', 'select'].includes(input.type) && !input.checked)) { postData += `&${input.name}=${input.value}` } } }); fetch(postParams.action, { "headers": { "content-type": "application/x-www-form-urlencoded; charset=UTF-8", }, "body": postData, "method": "POST", "mode": "cors", "credentials": "include" }).then((response) => { if (response.redirected) { window.location.href = response.url; } else if (response.ok) { return response.json(); } else { typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( [{ type: "warning", text: "Could not add item to wishlist." }], 5000 ); } }).then((response) => { if (!response) { return; } typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( [{ type: (response.success) ? "success" : "error", text: (response.success) ? "Produit a été ajouté à votre liste d&#039;achats." : response.error_message }], 5000 ); const reloadCustomerDataEvent = new CustomEvent("reload-customer-section-data"); window.dispatchEvent(reloadCustomerDataEvent); }).catch((error) => { typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( [{ type: "error", text: error }], 5000 ); }); } } } </script> <script> function initNewsletterForm() { return { errors: 0, hasCaptchaToken: 0, displayErrorMessage: false, errorMessages: [], setErrorMessages(messages) { this.errorMessages = [messages] this.displayErrorMessage = this.errorMessages.length }, submitForm() { const $form = document.querySelector('#newsletter-validate-detail'); if (this.errors === 0) { $form.submit(); } } } } </script> <script> (() => { function src_default(Alpine) { Alpine.directive("intersect", (el, { value, expression, modifiers }, { evaluateLater, cleanup }) => { let evaluate = evaluateLater(expression); let options = { rootMargin: getRootMargin(modifiers), threshold: getThreshhold(modifiers) }; let observer = new IntersectionObserver((entries) => { entries.forEach((entry) => { if (entry.isIntersecting === (value === "leave")) return; evaluate(); modifiers.includes("once") && observer.disconnect(); }); }, options); observer.observe(el); cleanup(() => { observer.disconnect(); }); }); } function getThreshhold(modifiers) { if (modifiers.includes("full")) return 0.99; if (modifiers.includes("half")) return 0.5; if (!modifiers.includes("threshold")) return 0; let threshold = modifiers[modifiers.indexOf("threshold") + 1]; if (threshold === "100") return 1; if (threshold === "0") return 0; return Number(`.${threshold}`); } function getLengthValue(rawValue) { let match = rawValue.match(/^(-?[0-9]+)(px|%)?$/); return match ? match[1] + (match[2] || "px") : void 0; } function getRootMargin(modifiers) { const key = "margin"; const fallback = "0px 0px 0px 0px"; const index = modifiers.indexOf(key); if (index === -1) return fallback; let values = []; for (let i = 1; i < 5; i++) { values.push(getLengthValue(modifiers[index + i] || "")); } values = values.filter((v) => v !== void 0); return values.length ? values.join(" ").trim() : fallback; } document.addEventListener("alpine:init", () => { window.Alpine.plugin(src_default); }); })(); </script> <script> for (const [selector, deferUntil] of Object.entries({".product-slider section[x-data]":"intersect",".product-info [x-data]":"intersect","#filters-content [x-data]":"intersect","#review_form":"intersect","section[x-data^=initRecentlyViewedProductsComponent]":"intersect","div[x-data^=initBundleOptions]":"intersect","#product_addtocart_form [x-data]":"intersect","#notice-cookie-block":"intersect"})) { document.querySelectorAll(selector).forEach(el => el.setAttribute('x-defer', `${deferUntil}`)); } </script> <script> (function () { "use strict"; const hasAlpine = new Promise(resolve => { window.addEventListener('alpine:initialized', resolve, {once: true, passive: true}); }); const hasInteract = new Promise(resolve => { (events => { const onInteract = () => { resolve(); events.forEach(type => window.removeEventListener(type, onInteract)); } events.forEach(type => window.addEventListener(type, onInteract, {once: true, passive: true})) })(['touchstart', 'mouseover', 'wheel', 'scroll', 'keydown']) }); const onIntersect = (el) => { return new Promise(resolve => { const observer = new IntersectionObserver(entries => { for (const entry of entries) { if (entry.isIntersecting) { observer.disconnect() resolve(); } } }, {}); observer.observe(el); }); } function runComponent(el) { hasAlpine.then(() => { el.removeAttribute('x-ignore'); queueMicrotask(() => Alpine.initTree(el)); }); } function initDeferredComponents() { document.querySelectorAll('[x-data][x-defer]').forEach(el => { el.setAttribute('x-ignore', ''); const deferUntil = (el.getAttribute('x-defer') || '').trim(); switch (deferUntil) { case 'interact': hasInteract.then(() => runComponent(el)); break; case 'intersect': onIntersect(el).then(() => runComponent(el)) break; case 'idle': window.requestIdleCallback ? window.requestIdleCallback(() => runComponent(el), {timeout: 4000}) : setTimeout(() => runComponent(el), 4000); break; case 'eager': runComponent(el); break; default: if (deferUntil.startsWith('event:') && deferUntil.length > 6) { window.addEventListener(deferUntil.substring(6), () => runComponent(el), {once: true, passive: true}); } } }); } window.addEventListener('alpine:init', initDeferredComponents, {once: true, passive: true}); })() </script> <script> (()=>{function g(n){n.directive("collapse",e),e.inline=(t,{modifiers:i})=>{i.includes("min")&&(t._x_doShow=()=>{},t._x_doHide=()=>{})};function e(t,{modifiers:i}){let r=l(i,"duration",250)/1e3,u=l(i,"min",0),h=!i.includes("min");t._x_isShown||(t.style.height=`${u}px`),!t._x_isShown&&h&&(t.hidden=!0),t._x_isShown||(t.style.overflow="hidden");let c=(d,s)=>{let o=n.setStyles(d,s);return s.height?()=>{}:o},f={transitionProperty:"height",transitionDuration:`${r}s`,transitionTimingFunction:"cubic-bezier(0.4, 0.0, 0.2, 1)"};t._x_transition={in(d=()=>{},s=()=>{}){h&&(t.hidden=!1),h&&(t.style.display=null);let o=t.getBoundingClientRect().height;t.style.height="auto";let a=t.getBoundingClientRect().height;o===a&&(o=u),n.transition(t,n.setStyles,{during:f,start:{height:o+"px"},end:{height:a+"px"}},()=>t._x_isShown=!0,()=>{t.getBoundingClientRect().height==a&&(t.style.overflow=null)})},out(d=()=>{},s=()=>{}){let o=t.getBoundingClientRect().height;n.transition(t,c,{during:f,start:{height:o+"px"},end:{height:u+"px"}},()=>t.style.overflow="hidden",()=>{t._x_isShown=!1,t.style.height==`${u}px`&&h&&(t.style.display="none",t.hidden=!0)})}}}}function l(n,e,t){if(n.indexOf(e)===-1)return t;let i=n[n.indexOf(e)+1];if(!i)return t;if(e==="duration"){let r=i.match(/([0-9]+)ms/);if(r)return r[1]}if(e==="min"){let r=i.match(/([0-9]+)px/);if(r)return r[1]}return i}document.addEventListener("alpine:init",()=>{window.Alpine.plugin(g)});})(); </script> <script type="module" src="https://www.livremoi.ma/static/version1781180853/frontend/HyvaLivrezmoi/default/fr_FR/Hyva_Theme/js/alpine3.min.js" defer crossorigin ></script> <script> 'use strict'; function dispatchMessages(messages, hideAfter) { const messagesEvent = new CustomEvent("messages-loaded", { detail: { messages: messages, hideAfter: hideAfter } }); window.dispatchEvent(messagesEvent); } if (typeof hyva === 'undefined' || (!hyva.getBrowserStorage || !hyva.getCookie || !hyva.setCookie)) { console.warn("Hyvä helpers are not loaded yet. Make sure they are included before this script"); } (function( hyva, undefined ) { hyva.initFormKey = () => { const inputSelector = 'input[name="form_key"]', formKey = hyva.getFormKey(); Array.from(document.querySelectorAll(inputSelector)).map(function (input) { input.value = formKey }); } hyva.initMessages = () => { try { const messages = hyva.getCookie('mage-messages'); window.mageMessages = messages ? JSON.parse(decodeURIComponent(messages).replace(/\+/g, ' ')) : []; dispatchMessages(window.mageMessages); // empty `mage-messages` cookie const skipSetDomain = true; hyva.setCookie('mage-messages','', -1, skipSetDomain); } catch (error) { console.warn('Error parsing Cookie Messages:', error); } } window.addEventListener('DOMContentLoaded', hyva.initFormKey); hyva.alpineInitialized(hyva.initMessages) }( window.hyva = window.hyva || {} )); </script> <script> 'use strict'; { const private_content_key = 'mage-cache-storage'; const private_content_expire_key = 'mage-cache-timeout'; const private_content_version_key = 'private_content_version'; const section_data_ids_key = 'section_data_ids'; const mage_cache_session_id_key = 'mage-cache-sessid'; const last_visited_store_key = 'last_visited_store'; const ttl = 3600; if (typeof hyva === 'undefined' || (!hyva.getBrowserStorage || !hyva.getCookie || !hyva.setCookie)) { console.warn("Hyvä helpers are not loaded yet. Make sure they are included before this script"); } function loadSectionData () { const browserStorage = hyva.getBrowserStorage(); if (!browserStorage) { typeof window.dispatchMessages !== "undefined" && window.dispatchMessages( [{ type: "warning", text: "Please enable LocalStorage in your browser." }] ); return; } try { let isInvalid = false; if (hyva.getCookie(last_visited_store_key) !== CURRENT_STORE_CODE) { isInvalid = true; } hyva.setCookie(last_visited_store_key, CURRENT_STORE_CODE, false, false); if (!hyva.getCookie(mage_cache_session_id_key)) { isInvalid = true; browserStorage.removeItem(private_content_key); const skipSetDomain = true; const days = false; hyva.setCookie(mage_cache_session_id_key, true, days, skipSetDomain) } const cookieVersion = hyva.getCookie(private_content_version_key); const storageVersion = browserStorage.getItem(private_content_version_key); if (cookieVersion && !storageVersion || cookieVersion !== storageVersion) { isInvalid = true; } const privateContentExpires = browserStorage.getItem(private_content_expire_key); if (privateContentExpires && new Date(privateContentExpires) < new Date()) { browserStorage.removeItem(private_content_key); } if (isInvalid) { if (! cookieVersion && document.getElementById('default-section-data')) { const privateContent = JSON.parse(document.getElementById('default-section-data').innerText.trim()); dispatchPrivateContent(privateContent); } else { fetchPrivateContent([]); } } else if (cookieVersion && storageVersion && cookieVersion === storageVersion) { const privateContent = JSON.parse(browserStorage.getItem(private_content_key)); if ( privateContent && privateContentExpires && privateContent.cart && privateContent.customer ) { dispatchPrivateContent(privateContent); } else { fetchPrivateContent([]); } } else { dispatchPrivateContent({}); } } catch (error) { console.warn('Error retrieving Private Content:', error); } } hyva.alpineInitialized(loadSectionData) window.addEventListener('reload-customer-section-data', loadSectionData); function dispatchPrivateContent(data) { const privateContentEvent = new CustomEvent("private-content-loaded", { detail: { data: data } }); window.dispatchEvent(privateContentEvent); } function fetchPrivateContent(sections) { fetch(`${BASE_URL}customer/section/load/?sections=${encodeURIComponent(sections.join(','))}`, { method: 'GET', headers: { 'Content-Type': 'application/json', 'X-Requested-With': 'XMLHttpRequest' } }) .then(response => response.json()) .then( data => { if (data) { try { const browserStorage = hyva.getBrowserStorage(); // merge new data preserving non-invalidated sections const oldSectionData = JSON.parse(browserStorage.getItem(private_content_key) || '{}') || {}; if ((! data.cart || ! data.cart.cartId) && oldSectionData['checkout-data']) { delete oldSectionData['checkout-data']; } const newSectionData = Object.assign(oldSectionData, data); dispatchPrivateContent(newSectionData); // don't persist messages, they've been dispatched already if (newSectionData.messages && newSectionData.messages.messages ) { newSectionData.messages.messages = []; } browserStorage.setItem(private_content_key, JSON.stringify(newSectionData)); const expiresAt = new Date(Date.now() + (ttl * 1000)).toISOString(); browserStorage.setItem(private_content_expire_key, expiresAt); const newCookieVersion = hyva.getCookie(private_content_version_key); browserStorage.setItem(private_content_version_key, newCookieVersion); // We don't need the section_data_ids in Hyvä, but we store them for compatibility // with Luma Fallback. Otherwise, not all sections are loaded in Luma Checkout hyva.setCookie( section_data_ids_key, JSON.stringify( Object.keys(data).reduce((sectionDataIds, sectionKey) => { sectionDataIds[sectionKey] = data[sectionKey]['data_id']; return sectionDataIds; }, {}) ), false, true ); } catch (error) { console.warn("Couldn't store privateContent", error); } } } ); } } </script> <script> (() => { document.addEventListener('submit', event => event.target.action = event.target.action.replace('%25uenc%25', hyva.getUenc())); })() </script> <script> (events => { const dispatchUserInteractionEvent = () => { events.forEach(type => window.removeEventListener(type, dispatchUserInteractionEvent)) window.dispatchEvent(new Event('init-external-scripts')) }; events.forEach(type => window.addEventListener(type, dispatchUserInteractionEvent, {once: true, passive: true})) })(['touchstart', 'mouseover', 'wheel', 'scroll', 'keydown']) </script> <script> function initConfigurableOptions(productId, optionConfig) { function findPathParam(key) { const baseUrl = (BASE_URL.substring(0, 2) === '//' ? 'http:' : '') + BASE_URL; const baseUrlParts = (new URL(baseUrl)).pathname.replace(/\/$/, '').split('/'); const pathParts = window.location.pathname.split('/').slice(baseUrlParts.length + 3); for (let i = 0; i < pathParts.length; i += 2) { if (pathParts[i] === key && pathParts.length > i) { return pathParts[i + 1]; } } } return { optionConfig, productId, itemId: (new URLSearchParams(window.location.search)).get('id') || findPathParam('id'), allowedAttributeOptions: [], selectedValues: [], init() { this.findAllowedAttributeOptions(); this.$nextTick(() => { if (typeof this.optionConfig.defaultValues === 'object') { for (const [attributeId, value] of Object.entries(this.optionConfig.defaultValues)) { this.changeOption(attributeId, value + ''); } } }); }, findSimpleIndex() { this.productIndex = this.calculateSimpleIndexForPartialSelection(this.selectedValues); }, calculateSimpleIndexForPartialSelection(selectedValues) { if (selectedValues.length === 0) return 0; let productIndexIds = Object.keys(this.optionConfig.index); Object.keys(this.optionConfig.attributes).forEach((attribute) => { const productsWithAttributeMatch = selectedValues[attribute] ? productIndexIds.filter((productIndex) => { return this.optionConfig.index[productIndex][attribute] === this.selectedValues[attribute] }) : []; productIndexIds = productsWithAttributeMatch.length ? productsWithAttributeMatch : productIndexIds }) return productIndexIds[0]; }, calculateSimpleIndexForFullSelection(selectedValues) { const productIndexes = this.optionConfig.index; return Object.keys(productIndexes).find(productIndex => { const productCandidateOptions = productIndexes[productIndex]; for (const productOption in productCandidateOptions) { if ( ! selectedValues[productOption] || selectedValues[productOption] !== productCandidateOptions[productOption] ) { return false; } } return productIndex; }); }, productIndex: 0, findAllowedAttributeOptions() { this.allowedAttributeOptions = this.calculateAllowedAttributeOptions(this.selectedValues); }, calculateAllowedAttributeOptions(selectedValues) { const allAttributes = this.optionConfig.attributes; const allAttributesSorted = Object.values(allAttributes).sort((a,b) => { return a.position - b.position }); const newAllowedAttributeOptions = []; allAttributesSorted.forEach(attribute => { const selectionWithoutAttr = Object.assign({}, this.removeAttrFromSelection(selectedValues, attribute.id)); const availableIndexes = this.calculateAvailableProductIndexes(selectionWithoutAttr); newAllowedAttributeOptions[attribute.id] = allAttributes[attribute.id].options.filter(option => { return !!option.products.find(product => { return availableIndexes.includes(product); }) }); }); return newAllowedAttributeOptions; }, calculateAvailableProductIndexes(selectedOptions) { if (Object.keys(selectedOptions).length === 0) { if (Object.values(this.optionConfig.salable || {}).length) { return [].concat.apply([], [].concat.apply([], Object.values(this.optionConfig.salable).map(Object.values))).filter((x, i, a) => a.indexOf(x) === i) } return Object.keys(this.optionConfig.index); } const selectedIds = Object.keys(selectedOptions); if (Object.values(this.optionConfig.salable || {}).length) { const selectedOptionIndexes = selectedIds.map(attrId => { const optionValue = selectedOptions[attrId]; return this.optionConfig.salable[attrId] && this.optionConfig.salable[attrId][optionValue] || [] }) return selectedOptionIndexes.reduce((acc, optionIndexes) => { return acc.filter(index => optionIndexes.includes(index)); }); } else { const productIndexes = this.optionConfig.index; return Object.keys(productIndexes).filter(index => { for (const attrId of selectedIds) { if (productIndexes[index][attrId] !== `${selectedOptions[attrId]}`) return false } return true }); } }, findAttributeByOptionId(optionId) { for (const attributeId in this.optionConfig.attributes) { const attributeOptions = this.optionConfig.attributes[attributeId].options || []; if (attributeOptions.find(option => option.id === optionId)) { return attributeId; } } }, getAllowedAttributeOptions(attributeId) { return this.allowedAttributeOptions[attributeId] || [] }, getProductIdsForOption(option) { const attributeId = this.findAttributeByOptionId(option.id); const allOptions = this.optionConfig.attributes[attributeId]; const opt = (allOptions && allOptions.options || []).find(o => o.id === option.id); return opt && opt.products ? opt.products : []; }, findProductIdsForPartialSelection(optionSelection) { const candidateProducts = Object.values(optionSelection).reduce((candidates, optionId) => { const newCandidates = this.getProductIdsForOption({id: optionId}); return candidates === null ? newCandidates : candidates.filter(productId => newCandidates.includes(productId)); }, null); return candidateProducts || []; }, findCheapestProductForPartialSelection(optionSelection) { const candidateProducts = this.findProductIdsForPartialSelection(optionSelection); return candidateProducts.reduce((cheapest, simpleIdx) => { // in the first iteration we start with simpleIdx as the currently cheapest product if (! this.optionConfig.optionPrices[cheapest]) return simpleIdx; const knownCheapestPrice = this.optionConfig.optionPrices[cheapest].finalPrice.amount; return knownCheapestPrice > this.optionConfig.optionPrices[simpleIdx].finalPrice.amount ? simpleIdx : cheapest; }, 0) }, findProductIdToUseForOptionPrice(option) { // try to find a product for a complete selection const attributeId = this.findAttributeByOptionId(option.id); const optionSelection = Object.assign({}, this.selectedValues, {[attributeId]: option.id}); const matchingSimpleIndex = this.calculateSimpleIndexForFullSelection(optionSelection); // if there is no complete selection, use the cheapest product for the option return matchingSimpleIndex || this.findCheapestProductForPartialSelection(optionSelection); }, getAttributeOptionLabel(option) { const optionProduct = this.findProductIdToUseForOptionPrice(option); if ((! optionProduct) || (optionProduct === this.productIndex)) { return option.label; } const currentPrice = this.getOptionPriceAdjustmentBasePrice(); if (this.optionConfig.optionPrices[optionProduct]) { const optionPrice = this.optionConfig.optionPrices[optionProduct].finalPrice.amount; if (optionPrice !== currentPrice){ return option.label + ' ' + hyva.formatPrice(optionPrice - currentPrice, true); } } return option.label; }, getOptionPriceAdjustmentBasePrice() { if (this.optionConfig.optionPrices[this.productIndex]) { return this.optionConfig.optionPrices[this.productIndex].finalPrice.amount } const cheapestForSelection = this.findCheapestProductForPartialSelection(this.selectedValues); return this.optionConfig.optionPrices[cheapestForSelection] ? this.optionConfig.optionPrices[cheapestForSelection].finalPrice.amount : this.optionConfig.prices.finalPrice.amount; // default price if no option selection }, clearOptionIfActive(optionId, value) { if (this.selectedValues[optionId] === value) { this.blurLabel() this.changeOption(optionId, '') } }, removeAttrFromSelection(selectedValues, attributeId) { attributeId = parseInt(attributeId); return selectedValues.reduce((newSelection, val, attr) => { if (attr !== attributeId) { newSelection[attr] = val; } return newSelection; }, []); }, changeOption(attributeId, value) { if (value === '') { this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId) } else if (value && this.getAllowedAttributeOptions(attributeId).find(option => option.id === value)) { this.selectedValues[attributeId] = value; } this.findSimpleIndex(); this.findAllowedAttributeOptions(); this.updatePrices(); this.updateGallery(); window.dispatchEvent( new CustomEvent( 'configurable-selection-changed', { detail: { productId: this.productId, optionId: attributeId, value: value, productIndex: this.productIndex, selectedValues: this.selectedValues, candidates: this.findProductIdsForPartialSelection(this.selectedValues), } } ) ); }, calculateIsMinimalPrice() { return ( this.selectedValues.filter(value => !!value).length < Object.keys(this.optionConfig.attributes).length ); }, updatePrices() { const value = this.productIndex ? this.optionConfig.optionPrices[this.productIndex] : this.optionConfig.prices; window.dispatchEvent( new CustomEvent( "update-prices-" + this.productId, { detail: Object.assign( value, { isMinimalPrice: this.calculateIsMinimalPrice() } ) } ) ); }, updateGallery () { if (this.productIndex) { const images = this.optionConfig.images[this.productIndex]; images && window.dispatchEvent(new CustomEvent( "update-gallery", { detail: this.sortImagesByPosition(images) } )); } else { window.dispatchEvent(new Event("reset-gallery")); } }, sortImagesByPosition(images) { return images.sort((x, y) => { return x.position === y.position ? 0 : (parseInt(x.position) > parseInt(y.position) ? 1 : -1) }); }, onGetCartData(data) { if (this.productId === '3066415') { this.preselectCartItems(data); this.preselectQuerystringItems(); this.preselectLocationHashItems(); } }, preselectCartItems(data) { // pre-select options based on cart data for current (quote) itemId const cart = data && data.cart; if (cart && cart.items) { const cartItem = cart.items.find((item) => { return ( item.item_id === this.itemId && item.product_id === this.productId ) }); if (cartItem && cartItem.options && cartItem.options.length) { cartItem.options.map(option => { this.changeOption(option.option_id, option.option_value); }) } } }, preselectQuerystringItems() { // pre-select option like ?size=167 const urlQueryParams = new URLSearchParams(window.location.search.replace('?','')); this.preselectItemsBasedOnLocation(attribute => urlQueryParams.get(attribute.code)); }, preselectLocationHashItems() { // pre-select option like #144=167 const urlHashParams = new URLSearchParams(window.location.hash.replace('#','')); this.preselectItemsBasedOnLocation(attribute => urlHashParams.get(attribute.id)); }, preselectItemsBasedOnLocation(getLocationValue) { Object.values(this.optionConfig.attributes).map(attribute => { this.changeOption(attribute.id, getLocationValue(attribute)) }); } } } </script> <script> function initSwatchOptions(swatchConfig) { return { swatchConfig, getAttributeSwatchData(attributeId) { const swatchConfig = Object.assign({}, this.swatchConfig[attributeId]); swatchConfig['details'] = JSON.parse(swatchConfig['additional_data']); return swatchConfig; }, getAllAttributeOptions(attributeId) { return ( this.optionConfig.attributes[attributeId] && this.optionConfig.attributes[attributeId].options ) || [] }, optionIsActive(attributeId, optionId) { // return true if a product with this option is in stock return !!this.getAllowedAttributeOptions(attributeId).find( option => option.id === optionId ) }, optionIsEnabled(attributeId, optionId) { // return true if a product with this option is enabled for (const productId in this.optionConfig.index) { if (this.optionConfig.index[productId][attributeId] === optionId) { return true; } } return false; }, mapSwatchTypeNumberToTypeCode(typeNumber) { switch ("" + typeNumber) { case "1": return "color" case "2": return "image" case "3": return "empty" case "0": default: return "text" } }, getTypeOfFirstOption(attributeId) { for (const optionId in this.swatchConfig[attributeId]) { const option = this.swatchConfig[attributeId][optionId]; if (typeof option.type !== 'undefined') { return this.mapSwatchTypeNumberToTypeCode(option.type); } } }, getVisualSwatchType(attributeId, targetOptionId) { // If a type configuration is present for the given option id, use it const config = this.swatchConfig[attributeId]; if (config[targetOptionId] && typeof config[targetOptionId].type !== 'undefined') { return this.mapSwatchTypeNumberToTypeCode(config[targetOptionId].type); } // Otherwise - if no config is present for the target option - use the type of the first option // with a type property from the attribute, thus assuming its the same type as the target option. // (This edge case condition can occur on single swatch products if some options are not salable) return this.getTypeOfFirstOption(attributeId); }, getSwatchType(attributeId, optionId) { // Deserialize the attribute details the first time they are used if (this.swatchConfig[attributeId] && ! this.swatchConfig[attributeId].details) { this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId); } const type = this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details && this.swatchConfig[attributeId].details.swatch_input_type || "empty"; return type === 'visual' ? this.getVisualSwatchType(attributeId, optionId) : type; }, isTextSwatch(attributeId, optionId) { return this.getSwatchType(attributeId, optionId) === 'text'; }, isVisualSwatch(attributeId, optionId) { const type = this.getSwatchType(attributeId, optionId); return ['image', 'color'].includes(type); }, getSwatchBackgroundStyle(attributeId, optionId) { const config = this.getSwatchConfig(attributeId, optionId); const type = this.getSwatchType(attributeId, optionId); if (type === "color") { return 'background-color:' + config.value; } else if (type === "image") { return "background: #ffffff url('" + config.value + "') no-repeat center"; } else { return ''; } }, getSwatchText(attributeId, optionId) { const config = this.getSwatchConfig(attributeId, optionId); return config.label || config.value || this.getOptionLabelFromOptionConfig(attributeId, optionId); }, getOptionLabelFromOptionConfig(attributeId, optionId) { // Fallback if no value is present in swatchConfig data // Reference issue https://gitlab.hyva.io/hyva-themes/magento2-default-theme/-/issues/190 const option = this.getAllAttributeOptions(attributeId).filter(option => option.id === optionId); return option && option[0] && option[0].label ||''; }, getSwatchConfig(attributeId, optionId) { return this.swatchConfig[attributeId] && this.swatchConfig[attributeId][optionId] ? this.swatchConfig[attributeId][optionId] : false; }, activeTooltipItem: false, tooltipPositionElement: false, isTooltipVisible() { return this.activeTooltipItem && this.getSwatchConfig( this.activeTooltipItem.attribute, this.activeTooltipItem.item ); }, isFirstItemCol() { return this.activeTooltipItem.index === 0; }, getTooltipImageStyle(attributeId, optionId) { const config = this.getSwatchConfig(attributeId, optionId); const type = this.getSwatchType(attributeId, optionId); if (type === "color") { return 'background-color:' + config.value + '; width: 110px; height: 90px;'; } else if (type === "image") { return "background: #ffffff url('" + config.thumb + "') center center no-repeat; width: 110px; height: 90px;"; } else { return 'display:none'; } }, getTooltipPosition() { return this.tooltipPositionElement ? `top: ${this.tooltipPositionElement.offsetTop}px;` + `left: ${ this.tooltipPositionElement.offsetLeft - ( this.tooltipPositionElement.closest('.snap') && this.tooltipPositionElement.closest('.snap').scrollLeft || 0 ) }px;` : '' }, getTooltipLabel() { return this.getSwatchConfig(this.activeTooltipItem.attribute, this.activeTooltipItem.item).label }, focusedLabel: false, focusLabel(optionId) { this.focusedLabel = optionId; }, blurLabel() { this.focusedLabel = false; }, showSwatches: false, initShowSwatchesIntersect() { if ('IntersectionObserver' in window && !window.scrollY) { let io = new IntersectionObserver( entries => { entries.map(entry => { if (entry.isIntersecting) { this.showSwatches = true; io.unobserve(this.$root); } }) } ); io.observe(this.$root); } else { this.showSwatches = true } } } } </script> <script> 'use strict'; const grecaptchaV2LoadCallbacks = []; function executeRecaptchaLoadCallbacks () { while (window.grecaptcha && grecaptchaV2LoadCallbacks.length > 0) { const callback = grecaptchaV2LoadCallbacks.pop(); typeof callback === 'string' ? window[callback]() : callback(); } } (function() { const loadRecaptchaScript = (event) => { if (window.grecaptcha || !event.target.form) { return; } const url = 'https://www.google.com/recaptcha/api.js?onload=executeRecaptchaLoadCallbacks'; const siteKey = '6LdkmBwfAAAAAMf7hXnEEpPl8RBt8Q9CogQsLjum'; const script = document.createElement('script'); script.type = 'text/javascript'; script.src = siteKey ? `${url}&render=${siteKey}` : `${url}&render=explicit`; script.async = true; document.head.appendChild(script); script.addEventListener('load', () => { Array.from(document.querySelectorAll('button[data-recaptcha-btn]:disabled')).forEach(btn => btn.removeAttribute('disabled')); }); } window.forceLoadRecaptchaScript = (form) => { loadRecaptchaScript({target: {form: form || 'dummy'}}); executeRecaptchaLoadCallbacks(); }; document.body.addEventListener('input', loadRecaptchaScript, { once: true }); document.body.addEventListener('focus', loadRecaptchaScript, { once: true }); }()); </script> <script type="application/json" id="default-section-data"> {"messages":[],"customer":[],"compare-products":[],"last-ordered-items":[],"cart":[],"directory-data":{"AD":{"name":"Andorre"},"AE":{"name":"\u00c9mirats arabes unis"},"AF":{"name":"Afghanistan"},"AG":{"name":"Antigua-et-Barbuda"},"AI":{"name":"Anguilla"},"AL":{"name":"Albanie","regions":{"859":{"code":"AL-01","name":"Berat"},"860":{"code":"AL-09","name":"Dib\u00ebr"},"861":{"code":"AL-02","name":"Durr\u00ebs"},"862":{"code":"AL-03","name":"Elbasan"},"863":{"code":"AL-04","name":"Fier"},"864":{"code":"AL-05","name":"Gjirokast\u00ebr"},"865":{"code":"AL-06","name":"Kor\u00e7\u00eb"},"866":{"code":"AL-07","name":"Kuk\u00ebs"},"867":{"code":"AL-08","name":"Lezh\u00eb"},"868":{"code":"AL-10","name":"Shkod\u00ebr"},"869":{"code":"AL-11","name":"Tiran\u00eb"},"870":{"code":"AL-12","name":"Vlor\u00eb"}}},"AM":{"name":"Arm\u00e9nie"},"AN":{"name":null},"AO":{"name":"Angola"},"AQ":{"name":"Antarctique"},"AR":{"name":"Argentine","regions":{"872":{"code":"AR-B","name":"Buenos Aires"},"873":{"code":"AR-K","name":"Catamarca"},"874":{"code":"AR-H","name":"Chaco"},"875":{"code":"AR-U","name":"Chubut"},"871":{"code":"AR-C","name":"Ciudad Aut\u00f3noma de Buenos Aires"},"876":{"code":"AR-X","name":"C\u00f3rdoba"},"877":{"code":"AR-W","name":"Corrientes"},"878":{"code":"AR-E","name":"Entre R\u00edos"},"879":{"code":"AR-P","name":"Formosa"},"880":{"code":"AR-Y","name":"Jujuy"},"881":{"code":"AR-L","name":"La Pampa"},"882":{"code":"AR-F","name":"La Rioja"},"883":{"code":"AR-M","name":"Mendoza"},"884":{"code":"AR-N","name":"Misiones"},"885":{"code":"AR-Q","name":"Neuqu\u00e9n"},"886":{"code":"AR-R","name":"R\u00edo Negro"},"887":{"code":"AR-A","name":"Salta"},"888":{"code":"AR-J","name":"San Juan"},"889":{"code":"AR-D","name":"San Luis"},"890":{"code":"AR-Z","name":"Santa Cruz"},"891":{"code":"AR-S","name":"Santa Fe"},"892":{"code":"AR-G","name":"Santiago del Estero"},"893":{"code":"AR-V","name":"Tierra del Fuego"},"894":{"code":"AR-T","name":"Tucum\u00e1n"}}},"AS":{"name":"Samoa am\u00e9ricaines"},"AT":{"name":"Autriche","regions":{"102":{"code":"BL","name":"Burgenland"},"99":{"code":"KN","name":"K\u00e4rnten"},"96":{"code":"NO","name":"Nieder\u00f6sterreich"},"97":{"code":"OO","name":"Ober\u00f6sterreich"},"98":{"code":"SB","name":"Salzburg"},"100":{"code":"ST","name":"Steiermark"},"101":{"code":"TI","name":"Tirol"},"103":{"code":"VB","name":"Vorarlberg"},"95":{"code":"WI","name":"Wien"}}},"AU":{"name":"Australie","regions":{"569":{"code":"ACT","name":"Australian Capital Territory"},"570":{"code":"NSW","name":"New South Wales"},"576":{"code":"NT","name":"Northern Territory"},"572":{"code":"QLD","name":"Queensland"},"573":{"code":"SA","name":"South Australia"},"574":{"code":"TAS","name":"Tasmania"},"571":{"code":"VIC","name":"Victoria"},"575":{"code":"WA","name":"Western Australia"}}},"AW":{"name":"Aruba"},"AX":{"name":"\u00celes \u00c5land"},"AZ":{"name":"Azerba\u00efdjan"},"BA":{"name":"Bosnie-Herz\u00e9govine"},"BB":{"name":"Barbade"},"BD":{"name":"Bangladesh"},"BE":{"name":"Belgique","regions":{"577":{"code":"VAN","name":"Antwerpen"},"578":{"code":"WBR","name":"Brabant wallon"},"579":{"code":"BRU","name":"Brussels-Capital Region"},"580":{"code":"WHT","name":"Hainaut"},"582":{"code":"WLG","name":"Li\u00e8ge"},"581":{"code":"VLI","name":"Limburg"},"583":{"code":"WLX","name":"Luxembourg"},"584":{"code":"WNA","name":"Namur"},"585":{"code":"VOV","name":"Oost-Vlaanderen"},"586":{"code":"VBR","name":"Vlaams-Brabant"},"587":{"code":"VWV","name":"West-Vlaanderen"}}},"BF":{"name":"Burkina Faso"},"BG":{"name":"Bulgarie","regions":{"654":{"code":"BG-01","name":"Blagoevgrad"},"655":{"code":"BG-02","name":"Burgas"},"661":{"code":"BG-08","name":"Dobrich"},"660":{"code":"BG-07","name":"Gabrovo"},"679":{"code":"BG-26","name":"Haskovo"},"662":{"code":"BG-09","name":"Kardzhali"},"663":{"code":"BG-10","name":"Kyustendil"},"664":{"code":"BG-11","name":"Lovech"},"665":{"code":"BG-12","name":"Montana"},"666":{"code":"BG-13","name":"Pazardzhik"},"667":{"code":"BG-14","name":"Pernik"},"668":{"code":"BG-15","name":"Pleven"},"669":{"code":"BG-16","name":"Plovdiv"},"670":{"code":"BG-17","name":"Razgrad"},"671":{"code":"BG-18","name":"Ruse"},"680":{"code":"BG-27","name":"Shumen"},"672":{"code":"BG-19","name":"Silistra"},"673":{"code":"BG-20","name":"Sliven"},"674":{"code":"BG-21","name":"Smolyan"},"675":{"code":"BG-22","name":"Sofia City"},"676":{"code":"BG-23","name":"Sofia Province"},"677":{"code":"BG-24","name":"Stara Zagora"},"678":{"code":"BG-25","name":"Targovishte"},"656":{"code":"BG-03","name":"Varna"},"657":{"code":"BG-04","name":"Veliko Tarnovo"},"658":{"code":"BG-05","name":"Vidin"},"659":{"code":"BG-06","name":"Vratsa"},"681":{"code":"BG-28","name":"Yambol"}}},"BH":{"name":"Bahre\u00efn"},"BI":{"name":"Burundi"},"BJ":{"name":"B\u00e9nin"},"BL":{"name":"Saint-Barth\u00e9lemy"},"BM":{"name":"Bermudes"},"BN":{"name":"Brunei"},"BO":{"name":"Bolivie","regions":{"903":{"code":"BO-H","name":"Chuquisaca"},"902":{"code":"BO-C","name":"Cochabamba"},"904":{"code":"BO-B","name":"El Beni"},"905":{"code":"BO-L","name":"La Paz"},"906":{"code":"BO-O","name":"Oruro"},"907":{"code":"BO-N","name":"Pando"},"908":{"code":"BO-P","name":"Potos\u00ed"},"909":{"code":"BO-S","name":"Santa Cruz"},"910":{"code":"BO-T","name":"Tarija"}}},"BQ":{"name":"Pays-Bas carib\u00e9ens"},"BR":{"name":"Br\u00e9sil","regions":{"485":{"code":"AC","name":"Acre"},"486":{"code":"AL","name":"Alagoas"},"487":{"code":"AP","name":"Amap\u00e1"},"488":{"code":"AM","name":"Amazonas"},"489":{"code":"BA","name":"Bahia"},"490":{"code":"CE","name":"Cear\u00e1"},"511":{"code":"DF","name":"Distrito Federal"},"491":{"code":"ES","name":"Esp\u00edrito Santo"},"492":{"code":"GO","name":"Goi\u00e1s"},"493":{"code":"MA","name":"Maranh\u00e3o"},"494":{"code":"MT","name":"Mato Grosso"},"495":{"code":"MS","name":"Mato Grosso do Sul"},"496":{"code":"MG","name":"Minas Gerais"},"497":{"code":"PA","name":"Par\u00e1"},"498":{"code":"PB","name":"Para\u00edba"},"499":{"code":"PR","name":"Paran\u00e1"},"500":{"code":"PE","name":"Pernambuco"},"501":{"code":"PI","name":"Piau\u00ed"},"502":{"code":"RJ","name":"Rio de Janeiro"},"503":{"code":"RN","name":"Rio Grande do Norte"},"504":{"code":"RS","name":"Rio Grande do Sul"},"505":{"code":"RO","name":"Rond\u00f4nia"},"506":{"code":"RR","name":"Roraima"},"507":{"code":"SC","name":"Santa Catarina"},"508":{"code":"SP","name":"S\u00e3o Paulo"},"509":{"code":"SE","name":"Sergipe"},"510":{"code":"TO","name":"Tocantins"}}},"BS":{"name":"Bahamas"},"BT":{"name":"Bhoutan"},"BV":{"name":"\u00cele Bouvet"},"BW":{"name":"Botswana"},"BY":{"name":"Bi\u00e9lorussie","regions":{"895":{"code":"BY-BR","name":"Bresckaja voblas\u0107"},"896":{"code":"BY-HO","name":"Homie\u013askaja voblas\u0107"},"897":{"code":"BY-HM","name":"Horad Minsk"},"898":{"code":"BY-HR","name":"Hrodzienskaja voblas\u0107"},"899":{"code":"BY-MA","name":"Mahilio\u016dskaja voblas\u0107"},"900":{"code":"BY-MI","name":"Minskaja voblas\u0107"},"901":{"code":"BY-VI","name":"Viciebskaja voblas\u0107"}}},"BZ":{"name":"Belize"},"CA":{"name":"Canada","regions":{"66":{"code":"AB","name":"Alberta"},"67":{"code":"BC","name":"British Columbia"},"68":{"code":"MB","name":"Manitoba"},"70":{"code":"NB","name":"New Brunswick"},"69":{"code":"NL","name":"Newfoundland and Labrador"},"72":{"code":"NT","name":"Northwest Territories"},"71":{"code":"NS","name":"Nova Scotia"},"73":{"code":"NU","name":"Nunavut"},"74":{"code":"ON","name":"Ontario"},"75":{"code":"PE","name":"Prince Edward Island"},"76":{"code":"QC","name":"Quebec"},"77":{"code":"SK","name":"Saskatchewan"},"78":{"code":"YT","name":"Yukon Territory"}}},"CC":{"name":"\u00celes Cocos"},"CD":{"name":"Congo-Kinshasa"},"CF":{"name":"R\u00e9publique centrafricaine"},"CG":{"name":"Congo-Brazzaville"},"CH":{"name":"Suisse","regions":{"104":{"code":"AG","name":"Aargau"},"106":{"code":"AR","name":"Appenzell Ausserrhoden"},"105":{"code":"AI","name":"Appenzell Innerrhoden"},"108":{"code":"BL","name":"Basel-Landschaft"},"109":{"code":"BS","name":"Basel-Stadt"},"107":{"code":"BE","name":"Bern"},"110":{"code":"FR","name":"Friburg"},"111":{"code":"GE","name":"Geneva"},"112":{"code":"GL","name":"Glarus"},"113":{"code":"GR","name":"Graub\u00fcnden"},"114":{"code":"JU","name":"Jura"},"115":{"code":"LU","name":"Lucerne"},"116":{"code":"NE","name":"Neuch\u00e2tel"},"117":{"code":"NW","name":"Nidwalden"},"118":{"code":"OW","name":"Obwalden"},"120":{"code":"SH","name":"Schaffhausen"},"122":{"code":"SZ","name":"Schwyz"},"121":{"code":"SO","name":"Solothurn"},"119":{"code":"SG","name":"St. Gallen"},"123":{"code":"TG","name":"Thurgau"},"124":{"code":"TI","name":"Ticino"},"125":{"code":"UR","name":"Uri"},"126":{"code":"VD","name":"Vaud"},"127":{"code":"VS","name":"Wallis"},"128":{"code":"ZG","name":"Zug"},"129":{"code":"ZH","name":"Z\u00fcrich"}}},"CI":{"name":"C\u00f4te d\u2019Ivoire"},"CK":{"name":"\u00celes Cook"},"CL":{"name":"Chili","regions":{"911":{"code":"CL-AI","name":"Ais\u00e9n del General Carlos Iba\u00f1ez del Campo"},"912":{"code":"CL-AN","name":"Antofagasta"},"913":{"code":"CL-AP","name":"Arica y Parinacota"},"915":{"code":"CL-AT","name":"Atacama"},"916":{"code":"CL-BI","name":"Biob\u00edo"},"917":{"code":"CL-CO","name":"Coquimbo"},"914":{"code":"CL-AR","name":"La Araucan\u00eda"},"918":{"code":"CL-LI","name":"Libertador General Bernardo O'Higgins"},"919":{"code":"CL-LL","name":"Los Lagos"},"920":{"code":"CL-LR","name":"Los R\u00edos"},"921":{"code":"CL-MA","name":"Magallanes"},"922":{"code":"CL-ML","name":"Maule"},"923":{"code":"CL-NB","name":"\u00d1uble"},"924":{"code":"CL-RM","name":"Regi\u00f3n Metropolitana de Santiago"},"925":{"code":"CL-TA","name":"Tarapac\u00e1"},"926":{"code":"CL-VS","name":"Valpara\u00edso"}}},"CM":{"name":"Cameroun"},"CN":{"name":"Chine","regions":{"588":{"code":"CN-AH","name":"Anhui Sheng"},"589":{"code":"CN-BJ","name":"Beijing Shi"},"590":{"code":"CN-CQ","name":"Chongqing Shi"},"591":{"code":"CN-FJ","name":"Fujian Sheng"},"592":{"code":"CN-GS","name":"Gansu Sheng"},"593":{"code":"CN-GD","name":"Guangdong Sheng"},"594":{"code":"CN-GX","name":"Guangxi Zhuangzu Zizhiqu"},"595":{"code":"CN-GZ","name":"Guizhou Sheng"},"596":{"code":"CN-HI","name":"Hainan Sheng"},"597":{"code":"CN-HE","name":"Hebei Sheng"},"598":{"code":"CN-HL","name":"Heilongjiang Sheng"},"599":{"code":"CN-HA","name":"Henan Sheng"},"600":{"code":"CN-HK","name":"Hong Kong SAR"},"601":{"code":"CN-HB","name":"Hubei Sheng"},"602":{"code":"CN-HN","name":"Hunan Sheng"},"603":{"code":"CN-JS","name":"Jiangsu Sheng"},"604":{"code":"CN-JX","name":"Jiangxi Sheng"},"605":{"code":"CN-JL","name":"Jilin Sheng"},"606":{"code":"CN-LN","name":"Liaoning Sheng"},"607":{"code":"CN-MO","name":"Macao SAR"},"608":{"code":"CN-NM","name":"Nei Mongol Zizhiqu"},"609":{"code":"CN-NX","name":"Ningxia Huizi Zizhiqu"},"610":{"code":"CN-QH","name":"Qinghai Sheng"},"611":{"code":"CN-SN","name":"Shaanxi Sheng"},"612":{"code":"CN-SD","name":"Shandong Sheng"},"613":{"code":"CN-SH","name":"Shanghai Shi"},"614":{"code":"CN-SX","name":"Shanxi Sheng"},"615":{"code":"CN-SC","name":"Sichuan Sheng"},"616":{"code":"CN-TW","name":"Taiwan Sheng"},"617":{"code":"CN-TJ","name":"Tianjin Shi"},"618":{"code":"CN-XJ","name":"Xinjiang Uygur Zizhiqu"},"619":{"code":"CN-XZ","name":"Xizang Zizhiqu"},"620":{"code":"CN-YN","name":"Yunnan Sheng"},"621":{"code":"CN-ZJ","name":"Zhejiang Sheng"}}},"CO":{"name":"Colombie","regions":{"682":{"code":"CO-AMA","name":"Amazonas"},"683":{"code":"CO-ANT","name":"Antioquia"},"684":{"code":"CO-ARA","name":"Arauca"},"685":{"code":"CO-ATL","name":"Atl\u00e1ntico"},"686":{"code":"CO-BOL","name":"Bol\u00edvar"},"687":{"code":"CO-BOY","name":"Boyac\u00e1"},"688":{"code":"CO-CAL","name":"Caldas"},"689":{"code":"CO-CAQ","name":"Caquet\u00e1"},"690":{"code":"CO-CAS","name":"Casanare"},"691":{"code":"CO-CAU","name":"Cauca"},"692":{"code":"CO-CES","name":"Cesar"},"693":{"code":"CO-CHO","name":"Choc\u00f3"},"694":{"code":"CO-COR","name":"C\u00f3rdoba"},"695":{"code":"CO-CUN","name":"Cundinamarca"},"696":{"code":"CO-GUA","name":"Guain\u00eda"},"697":{"code":"CO-GUV","name":"Guaviare"},"698":{"code":"CO-HUL","name":"Huila"},"699":{"code":"CO-LAG","name":"La Guajira"},"700":{"code":"CO-MAG","name":"Magdalena"},"701":{"code":"CO-MET","name":"Meta"},"702":{"code":"CO-NAR","name":"Nari\u00f1o"},"703":{"code":"CO-NSA","name":"Norte de Santander"},"704":{"code":"CO-PUT","name":"Putumayo"},"705":{"code":"CO-QUI","name":"Quind\u00edo"},"706":{"code":"CO-RIS","name":"Risaralda"},"707":{"code":"CO-SAP","name":"San Andr\u00e9s y Providencia"},"708":{"code":"CO-SAN","name":"Santander"},"709":{"code":"CO-SUC","name":"Sucre"},"710":{"code":"CO-TOL","name":"Tolima"},"711":{"code":"CO-VAC","name":"Valle del Cauca"},"712":{"code":"CO-VAU","name":"Vaup\u00e9s"},"713":{"code":"CO-VID","name":"Vichada"}}},"CR":{"name":"Costa Rica","regions":{"1109":{"code":"CR-AL","name":"Alajuela"},"1110":{"code":"CR-CA","name":"Cartago"},"1112":{"code":"CR-GU","name":"Guanacaste"},"1111":{"code":"CR-HE","name":"Heredia"},"1114":{"code":"CR-LI","name":"Lim\u00f3n"},"1113":{"code":"CR-PU","name":"Puntarenas"},"1108":{"code":"CR-SJ","name":"San Jos\u00e9"}}},"CU":{"name":"Cuba"},"CV":{"name":"Cap-Vert"},"CW":{"name":"Cura\u00e7ao"},"CX":{"name":"\u00cele Christmas"},"CY":{"name":"Chypre"},"CZ":{"name":"Tch\u00e9quie","regions":{"1117":{"code":"CZ-31","name":"Jiho\u010desk\u00fd kraj"},"1125":{"code":"CZ-64","name":"Jihomoravsk\u00fd kraj"},"1119":{"code":"CZ-41","name":"Karlovarsk\u00fd kraj"},"1124":{"code":"CZ-63","name":"Kraj Vyso\u010dina"},"1122":{"code":"CZ-52","name":"Kr\u00e1lov\u00e9hradeck\u00fd kraj"},"1121":{"code":"CZ-51","name":"Libereck\u00fd kraj"},"1128":{"code":"CZ-80","name":"Moravskoslezsk\u00fd kraj"},"1126":{"code":"CZ-71","name":"Olomouck\u00fd kraj"},"1123":{"code":"CZ-53","name":"Pardubick\u00fd kraj"},"1118":{"code":"CZ-32","name":"Plze\u0148sk\u00fd kraj"},"1115":{"code":"CZ-10","name":"Praha, Hlavn\u00ed m\u011bsto"},"1116":{"code":"CZ-20","name":"St\u0159edo\u010desk\u00fd kraj"},"1120":{"code":"CZ-42","name":"\u00dasteck\u00fd kraj"},"1127":{"code":"CZ-72","name":"Zl\u00ednsk\u00fd kraj"}}},"DE":{"name":"Allemagne","regions":{"80":{"code":"BAW","name":"Baden-W\u00fcrttemberg"},"81":{"code":"BAY","name":"Bayern"},"82":{"code":"BER","name":"Berlin"},"83":{"code":"BRG","name":"Brandenburg"},"84":{"code":"BRE","name":"Bremen"},"85":{"code":"HAM","name":"Hamburg"},"86":{"code":"HES","name":"Hessen"},"87":{"code":"MEC","name":"Mecklenburg-Vorpommern"},"79":{"code":"NDS","name":"Niedersachsen"},"88":{"code":"NRW","name":"Nordrhein-Westfalen"},"89":{"code":"RHE","name":"Rheinland-Pfalz"},"90":{"code":"SAR","name":"Saarland"},"91":{"code":"SAS","name":"Sachsen"},"92":{"code":"SAC","name":"Sachsen-Anhalt"},"93":{"code":"SCN","name":"Schleswig-Holstein"},"94":{"code":"THE","name":"Th\u00fcringen"}}},"DJ":{"name":"Djibouti"},"DK":{"name":"Danemark","regions":{"927":{"code":"DK-84","name":"Hovedstaden"},"928":{"code":"DK-82","name":"Midtjylland"},"929":{"code":"DK-81","name":"Nordjylland"},"930":{"code":"DK-85","name":"Sj\u00e6lland"},"931":{"code":"DK-83","name":"Syddanmark"}}},"DM":{"name":"Dominique"},"DO":{"name":"R\u00e9publique dominicaine"},"DZ":{"name":"Alg\u00e9rie"},"EC":{"name":"\u00c9quateur","regions":{"932":{"code":"EC-A","name":"Azuay"},"933":{"code":"EC-B","name":"Bol\u00edvar"},"934":{"code":"EC-F","name":"Ca\u00f1ar"},"935":{"code":"EC-C","name":"Carchi"},"936":{"code":"EC-H","name":"Chimborazo"},"937":{"code":"EC-X","name":"Cotopaxi"},"938":{"code":"EC-O","name":"El Oro"},"939":{"code":"EC-E","name":"Esmeraldas"},"940":{"code":"EC-W","name":"Gal\u00e1pagos"},"941":{"code":"EC-G","name":"Guayas"},"942":{"code":"EC-I","name":"Imbabura"},"943":{"code":"EC-L","name":"Loja"},"944":{"code":"EC-R","name":"Los R\u00edos"},"945":{"code":"EC-M","name":"Manab\u00ed"},"946":{"code":"EC-S","name":"Morona Santiago"},"947":{"code":"EC-N","name":"Napo"},"948":{"code":"EC-D","name":"Orellana"},"949":{"code":"EC-Y","name":"Pastaza"},"950":{"code":"EC-P","name":"Pichincha"},"951":{"code":"EC-SE","name":"Santa Elena"},"952":{"code":"EC-SD","name":"Santo Domingo de los Ts\u00e1chilas"},"953":{"code":"EC-U","name":"Sucumb\u00edos"},"954":{"code":"EC-T","name":"Tungurahua"},"955":{"code":"EC-Z","name":"Zamora Chinchipe"}}},"EE":{"name":"Estonie","regions":{"340":{"code":"EE-37","name":"Harjumaa"},"341":{"code":"EE-39","name":"Hiiumaa"},"342":{"code":"EE-44","name":"Ida-Virumaa"},"344":{"code":"EE-51","name":"J\u00e4rvamaa"},"343":{"code":"EE-49","name":"J\u00f5gevamaa"},"346":{"code":"EE-59","name":"L\u00e4\u00e4ne-Virumaa"},"345":{"code":"EE-57","name":"L\u00e4\u00e4nemaa"},"348":{"code":"EE-67","name":"P\u00e4rnumaa"},"347":{"code":"EE-65","name":"P\u00f5lvamaa"},"349":{"code":"EE-70","name":"Raplamaa"},"350":{"code":"EE-74","name":"Saaremaa"},"351":{"code":"EE-78","name":"Tartumaa"},"352":{"code":"EE-82","name":"Valgamaa"},"353":{"code":"EE-84","name":"Viljandimaa"},"354":{"code":"EE-86","name":"V\u00f5rumaa"}}},"EG":{"name":"\u00c9gypte"},"EH":{"name":"Sahara occidental"},"ER":{"name":"\u00c9rythr\u00e9e"},"ES":{"name":"Espagne","regions":{"130":{"code":"A Coru\u0441a","name":"A Coru\u00f1a"},"131":{"code":"Alava","name":"Alava"},"132":{"code":"Albacete","name":"Albacete"},"133":{"code":"Alicante","name":"Alicante"},"134":{"code":"Almeria","name":"Almeria"},"135":{"code":"Asturias","name":"Asturias"},"136":{"code":"Avila","name":"Avila"},"137":{"code":"Badajoz","name":"Badajoz"},"138":{"code":"Baleares","name":"Baleares"},"139":{"code":"Barcelona","name":"Barcelona"},"140":{"code":"Burgos","name":"Burgos"},"141":{"code":"Caceres","name":"Caceres"},"142":{"code":"Cadiz","name":"Cadiz"},"143":{"code":"Cantabria","name":"Cantabria"},"144":{"code":"Castellon","name":"Castellon"},"145":{"code":"Ceuta","name":"Ceuta"},"146":{"code":"Ciudad Real","name":"Ciudad Real"},"147":{"code":"Cordoba","name":"Cordoba"},"148":{"code":"Cuenca","name":"Cuenca"},"149":{"code":"Girona","name":"Girona"},"150":{"code":"Granada","name":"Granada"},"151":{"code":"Guadalajara","name":"Guadalajara"},"152":{"code":"Guipuzcoa","name":"Guipuzcoa"},"153":{"code":"Huelva","name":"Huelva"},"154":{"code":"Huesca","name":"Huesca"},"155":{"code":"Jaen","name":"Jaen"},"156":{"code":"La Rioja","name":"La Rioja"},"157":{"code":"Las Palmas","name":"Las Palmas"},"158":{"code":"Leon","name":"Leon"},"159":{"code":"Lleida","name":"Lleida"},"160":{"code":"Lugo","name":"Lugo"},"161":{"code":"Madrid","name":"Madrid"},"162":{"code":"Malaga","name":"Malaga"},"163":{"code":"Melilla","name":"Melilla"},"164":{"code":"Murcia","name":"Murcia"},"165":{"code":"Navarra","name":"Navarra"},"166":{"code":"Ourense","name":"Ourense"},"167":{"code":"Palencia","name":"Palencia"},"168":{"code":"Pontevedra","name":"Pontevedra"},"169":{"code":"Salamanca","name":"Salamanca"},"170":{"code":"Santa Cruz de Tenerife","name":"Santa Cruz de Tenerife"},"171":{"code":"Segovia","name":"Segovia"},"172":{"code":"Sevilla","name":"Sevilla"},"173":{"code":"Soria","name":"Soria"},"174":{"code":"Tarragona","name":"Tarragona"},"175":{"code":"Teruel","name":"Teruel"},"176":{"code":"Toledo","name":"Toledo"},"177":{"code":"Valencia","name":"Valencia"},"178":{"code":"Valladolid","name":"Valladolid"},"179":{"code":"Vizcaya","name":"Vizcaya"},"180":{"code":"Zamora","name":"Zamora"},"181":{"code":"Zaragoza","name":"Zaragoza"}}},"ET":{"name":"\u00c9thiopie"},"FI":{"name":"Finlande","regions":{"339":{"code":"Ahvenanmaa","name":"Ahvenanmaa"},"333":{"code":"Etel\u00e4-Karjala","name":"Etel\u00e4-Karjala"},"326":{"code":"Etel\u00e4-Pohjanmaa","name":"Etel\u00e4-Pohjanmaa"},"325":{"code":"Etel\u00e4-Savo","name":"Etel\u00e4-Savo"},"337":{"code":"It\u00e4-Uusimaa","name":"It\u00e4-Uusimaa"},"322":{"code":"Kainuu","name":"Kainuu"},"335":{"code":"Kanta-H\u00e4me","name":"Kanta-H\u00e4me"},"330":{"code":"Keski-Pohjanmaa","name":"Keski-Pohjanmaa"},"331":{"code":"Keski-Suomi","name":"Keski-Suomi"},"338":{"code":"Kymenlaakso","name":"Kymenlaakso"},"320":{"code":"Lappi","name":"Lappi"},"334":{"code":"P\u00e4ij\u00e4t-H\u00e4me","name":"P\u00e4ij\u00e4t-H\u00e4me"},"328":{"code":"Pirkanmaa","name":"Pirkanmaa"},"327":{"code":"Pohjanmaa","name":"Pohjanmaa"},"323":{"code":"Pohjois-Karjala","name":"Pohjois-Karjala"},"321":{"code":"Pohjois-Pohjanmaa","name":"Pohjois-Pohjanmaa"},"324":{"code":"Pohjois-Savo","name":"Pohjois-Savo"},"329":{"code":"Satakunta","name":"Satakunta"},"336":{"code":"Uusimaa","name":"Uusimaa"},"332":{"code":"Varsinais-Suomi","name":"Varsinais-Suomi"}}},"FJ":{"name":"Fidji"},"FK":{"name":"\u00celes Malouines"},"FM":{"name":"Micron\u00e9sie"},"FO":{"name":"\u00celes F\u00e9ro\u00e9"},"FR":{"name":"France","regions":{"182":{"code":"1","name":"Ain"},"183":{"code":"2","name":"Aisne"},"184":{"code":"3","name":"Allier"},"185":{"code":"4","name":"Alpes-de-Haute-Provence"},"187":{"code":"6","name":"Alpes-Maritimes"},"188":{"code":"7","name":"Ard\u00e8che"},"189":{"code":"8","name":"Ardennes"},"190":{"code":"9","name":"Ari\u00e8ge"},"191":{"code":"10","name":"Aube"},"192":{"code":"11","name":"Aude"},"193":{"code":"12","name":"Aveyron"},"249":{"code":"67","name":"Bas-Rhin"},"194":{"code":"13","name":"Bouches-du-Rh\u00f4ne"},"195":{"code":"14","name":"Calvados"},"196":{"code":"15","name":"Cantal"},"197":{"code":"16","name":"Charente"},"198":{"code":"17","name":"Charente-Maritime"},"199":{"code":"18","name":"Cher"},"200":{"code":"19","name":"Corr\u00e8ze"},"201":{"code":"2A","name":"Corse-du-Sud"},"203":{"code":"21","name":"C\u00f4te-d'Or"},"204":{"code":"22","name":"C\u00f4tes-d'Armor"},"205":{"code":"23","name":"Creuse"},"261":{"code":"79","name":"Deux-S\u00e8vres"},"206":{"code":"24","name":"Dordogne"},"207":{"code":"25","name":"Doubs"},"208":{"code":"26","name":"Dr\u00f4me"},"273":{"code":"91","name":"Essonne"},"209":{"code":"27","name":"Eure"},"210":{"code":"28","name":"Eure-et-Loir"},"211":{"code":"29","name":"Finist\u00e8re"},"212":{"code":"30","name":"Gard"},"214":{"code":"32","name":"Gers"},"215":{"code":"33","name":"Gironde"},"250":{"code":"68","name":"Haut-Rhin"},"202":{"code":"2B","name":"Haute-Corse"},"213":{"code":"31","name":"Haute-Garonne"},"225":{"code":"43","name":"Haute-Loire"},"234":{"code":"52","name":"Haute-Marne"},"252":{"code":"70","name":"Haute-Sa\u00f4ne"},"256":{"code":"74","name":"Haute-Savoie"},"269":{"code":"87","name":"Haute-Vienne"},"186":{"code":"5","name":"Hautes-Alpes"},"247":{"code":"65","name":"Hautes-Pyr\u00e9n\u00e9es"},"274":{"code":"92","name":"Hauts-de-Seine"},"216":{"code":"34","name":"H\u00e9rault"},"217":{"code":"35","name":"Ille-et-Vilaine"},"218":{"code":"36","name":"Indre"},"219":{"code":"37","name":"Indre-et-Loire"},"220":{"code":"38","name":"Is\u00e8re"},"221":{"code":"39","name":"Jura"},"222":{"code":"40","name":"Landes"},"223":{"code":"41","name":"Loir-et-Cher"},"224":{"code":"42","name":"Loire"},"226":{"code":"44","name":"Loire-Atlantique"},"227":{"code":"45","name":"Loiret"},"228":{"code":"46","name":"Lot"},"229":{"code":"47","name":"Lot-et-Garonne"},"230":{"code":"48","name":"Loz\u00e8re"},"231":{"code":"49","name":"Maine-et-Loire"},"232":{"code":"50","name":"Manche"},"233":{"code":"51","name":"Marne"},"235":{"code":"53","name":"Mayenne"},"236":{"code":"54","name":"Meurthe-et-Moselle"},"237":{"code":"55","name":"Meuse"},"238":{"code":"56","name":"Morbihan"},"239":{"code":"57","name":"Moselle"},"240":{"code":"58","name":"Ni\u00e8vre"},"241":{"code":"59","name":"Nord"},"242":{"code":"60","name":"Oise"},"243":{"code":"61","name":"Orne"},"257":{"code":"75","name":"Paris"},"244":{"code":"62","name":"Pas-de-Calais"},"245":{"code":"63","name":"Puy-de-D\u00f4me"},"246":{"code":"64","name":"Pyr\u00e9n\u00e9es-Atlantiques"},"248":{"code":"66","name":"Pyr\u00e9n\u00e9es-Orientales"},"251":{"code":"69","name":"Rh\u00f4ne"},"253":{"code":"71","name":"Sa\u00f4ne-et-Loire"},"254":{"code":"72","name":"Sarthe"},"255":{"code":"73","name":"Savoie"},"259":{"code":"77","name":"Seine-et-Marne"},"258":{"code":"76","name":"Seine-Maritime"},"275":{"code":"93","name":"Seine-Saint-Denis"},"262":{"code":"80","name":"Somme"},"263":{"code":"81","name":"Tarn"},"264":{"code":"82","name":"Tarn-et-Garonne"},"272":{"code":"90","name":"Territoire-de-Belfort"},"277":{"code":"95","name":"Val-d'Oise"},"276":{"code":"94","name":"Val-de-Marne"},"265":{"code":"83","name":"Var"},"266":{"code":"84","name":"Vaucluse"},"267":{"code":"85","name":"Vend\u00e9e"},"268":{"code":"86","name":"Vienne"},"270":{"code":"88","name":"Vosges"},"271":{"code":"89","name":"Yonne"},"260":{"code":"78","name":"Yvelines"}}},"GA":{"name":"Gabon"},"GB":{"name":"Royaume-Uni"},"GD":{"name":"Grenade"},"GE":{"name":"G\u00e9orgie"},"GF":{"name":"Guyane fran\u00e7aise"},"GG":{"name":"Guernesey"},"GH":{"name":"Ghana"},"GI":{"name":"Gibraltar"},"GL":{"name":"Groenland"},"GM":{"name":"Gambie"},"GN":{"name":"Guin\u00e9e"},"GP":{"name":"Guadeloupe"},"GQ":{"name":"Guin\u00e9e \u00e9quatoriale"},"GR":{"name":"Gr\u00e8ce","regions":{"969":{"code":"GR-69","name":"\u00c1gion \u00d3ros"},"956":{"code":"GR-A","name":"Anatolik\u00ed Makedon\u00eda kai Thr\u00e1ki"},"957":{"code":"GR-I","name":"Attik\u00ed"},"958":{"code":"GR-G","name":"Dytik\u00ed Ell\u00e1da"},"959":{"code":"GR-C","name":"Dytik\u00ed Makedon\u00eda"},"960":{"code":"GR-F","name":"Ion\u00eda N\u00edsia"},"961":{"code":"GR-D","name":"\u00cdpeiros"},"962":{"code":"GR-B","name":"Kentrik\u00ed Makedon\u00eda"},"963":{"code":"GR-M","name":"Kr\u00edti"},"964":{"code":"GR-L","name":"N\u00f3tio Aiga\u00edo"},"965":{"code":"GR-J","name":"Pelop\u00f3nnisos"},"966":{"code":"GR-H","name":"Stere\u00e1 Ell\u00e1da"},"967":{"code":"GR-E","name":"Thessal\u00eda"},"968":{"code":"GR-K","name":"V\u00f3reio Aiga\u00edo"}}},"GS":{"name":"G\u00e9orgie du Sud-et-les \u00celes Sandwich du Sud"},"GT":{"name":"Guatemala"},"GU":{"name":"Guam"},"GW":{"name":"Guin\u00e9e-Bissau"},"GY":{"name":"Guyana","regions":{"970":{"code":"GY-BA","name":"Barima-Waini"},"971":{"code":"GY-CU","name":"Cuyuni-Mazaruni"},"972":{"code":"GY-DE","name":"Demerara-Mahaica"},"973":{"code":"GY-EB","name":"East Berbice-Corentyne"},"974":{"code":"GY-ES","name":"Essequibo Islands-West Demerara"},"975":{"code":"GY-MA","name":"Mahaica-Berbice"},"976":{"code":"GY-PM","name":"Pomeroon-Supenaam"},"977":{"code":"GY-PT","name":"Potaro-Siparuni"},"978":{"code":"GY-UD","name":"Upper Demerara-Berbice"},"979":{"code":"GY-UT","name":"Upper Takutu-Upper Essequibo"}}},"HK":{"name":"R.A.S. chinoise de Hong Kong"},"HM":{"name":"\u00celes Heard-et-MacDonald"},"HN":{"name":"Honduras"},"HR":{"name":"Croatie","regions":{"518":{"code":"HR-07","name":"Bjelovarsko-bilogorska \u017eupanija"},"523":{"code":"HR-12","name":"Brodsko-posavska \u017eupanija"},"530":{"code":"HR-19","name":"Dubrova\u010dko-neretvanska \u017eupanija"},"532":{"code":"HR-21","name":"Grad Zagreb"},"529":{"code":"HR-18","name":"Istarska \u017eupanija"},"515":{"code":"HR-04","name":"Karlova\u010dka \u017eupanija"},"517":{"code":"HR-06","name":"Koprivni\u010dko-kri\u017eeva\u010dka \u017eupanija"},"513":{"code":"HR-02","name":"Krapinsko-zagorska \u017eupanija"},"520":{"code":"HR-09","name":"Li\u010dko-senjska \u017eupanija"},"531":{"code":"HR-20","name":"Me\u0111imurska \u017eupanija"},"525":{"code":"HR-14","name":"Osje\u010dko-baranjska \u017eupanija"},"522":{"code":"HR-11","name":"Po\u017ee\u0161ko-slavonska \u017eupanija"},"519":{"code":"HR-08","name":"Primorsko-goranska \u017eupanija"},"526":{"code":"HR-15","name":"\u0160ibensko-kninska \u017eupanija"},"514":{"code":"HR-03","name":"Sisa\u010dko-moslava\u010dka \u017eupanija"},"528":{"code":"HR-17","name":"Splitsko-dalmatinska \u017eupanija"},"516":{"code":"HR-05","name":"Vara\u017edinska \u017eupanija"},"521":{"code":"HR-10","name":"Viroviti\u010dko-podravska \u017eupanija"},"527":{"code":"HR-16","name":"Vukovarsko-srijemska \u017eupanija"},"524":{"code":"HR-13","name":"Zadarska \u017eupanija"},"512":{"code":"HR-01","name":"Zagreba\u010dka \u017eupanija"}}},"HT":{"name":"Ha\u00efti"},"HU":{"name":"Hongrie"},"ID":{"name":"Indon\u00e9sie"},"IE":{"name":"Irlande"},"IL":{"name":"Isra\u00ebl"},"IM":{"name":"\u00cele de Man"},"IN":{"name":"Inde","regions":{"533":{"code":"AN","name":"Andaman and Nicobar Islands"},"534":{"code":"AP","name":"Andhra Pradesh"},"535":{"code":"AR","name":"Arunachal Pradesh"},"536":{"code":"AS","name":"Assam"},"537":{"code":"BR","name":"Bihar"},"538":{"code":"CH","name":"Chandigarh"},"539":{"code":"CT","name":"Chhattisgarh"},"540":{"code":"DN","name":"Dadra and Nagar Haveli"},"541":{"code":"DD","name":"Daman and Diu"},"542":{"code":"DL","name":"Delhi"},"543":{"code":"GA","name":"Goa"},"544":{"code":"GJ","name":"Gujarat"},"545":{"code":"HR","name":"Haryana"},"546":{"code":"HP","name":"Himachal Pradesh"},"547":{"code":"JK","name":"Jammu and Kashmir"},"548":{"code":"JH","name":"Jharkhand"},"549":{"code":"KA","name":"Karnataka"},"550":{"code":"KL","name":"Kerala"},"1156":{"code":"LA","name":"Ladakh"},"551":{"code":"LD","name":"Lakshadweep"},"552":{"code":"MP","name":"Madhya Pradesh"},"553":{"code":"MH","name":"Maharashtra"},"554":{"code":"MN","name":"Manipur"},"555":{"code":"ML","name":"Meghalaya"},"556":{"code":"MZ","name":"Mizoram"},"557":{"code":"NL","name":"Nagaland"},"558":{"code":"OR","name":"Odisha"},"559":{"code":"PY","name":"Puducherry"},"560":{"code":"PB","name":"Punjab"},"561":{"code":"RJ","name":"Rajasthan"},"562":{"code":"SK","name":"Sikkim"},"563":{"code":"TN","name":"Tamil Nadu"},"564":{"code":"TG","name":"Telangana"},"565":{"code":"TR","name":"Tripura"},"566":{"code":"UP","name":"Uttar Pradesh"},"567":{"code":"UT","name":"Uttarakhand"},"568":{"code":"WB","name":"West Bengal"}}},"IO":{"name":"Territoire britannique de l\u2019oc\u00e9an Indien"},"IQ":{"name":"Irak"},"IR":{"name":"Iran"},"IS":{"name":"Islande","regions":{"986":{"code":"IS-07","name":"Austurland"},"980":{"code":"IS-01","name":"H\u00f6fu\u00f0borgarsv\u00e6\u00f0i"},"985":{"code":"IS-06","name":"Nor\u00f0urland eystra"},"984":{"code":"IS-05","name":"Nor\u00f0urland vestra"},"987":{"code":"IS-08","name":"Su\u00f0urland"},"981":{"code":"IS-02","name":"Su\u00f0urnes"},"983":{"code":"IS-04","name":"Vestfir\u00f0ir"},"982":{"code":"IS-03","name":"Vesturland"}}},"IT":{"name":"Italie","regions":{"714":{"code":"AG","name":"Agrigento"},"715":{"code":"AL","name":"Alessandria"},"716":{"code":"AN","name":"Ancona"},"717":{"code":"AO","name":"Aosta"},"719":{"code":"AR","name":"Arezzo"},"720":{"code":"AP","name":"Ascoli-Piceno"},"721":{"code":"AT","name":"Asti"},"722":{"code":"AV","name":"Avellino"},"723":{"code":"BA","name":"Bari"},"724":{"code":"BT","name":"Barletta-Andria-Trani"},"725":{"code":"BL","name":"Belluno"},"726":{"code":"BN","name":"Benevento"},"727":{"code":"BG","name":"Bergamo"},"728":{"code":"BI","name":"Biella"},"729":{"code":"BO","name":"Bologna"},"730":{"code":"BZ","name":"Bolzano"},"731":{"code":"BS","name":"Brescia"},"732":{"code":"BR","name":"Brindisi"},"733":{"code":"CA","name":"Cagliari"},"734":{"code":"CL","name":"Caltanissetta"},"735":{"code":"CB","name":"Campobasso"},"736":{"code":"CI","name":"Carbonia Iglesias"},"737":{"code":"CE","name":"Caserta"},"738":{"code":"CT","name":"Catania"},"739":{"code":"CZ","name":"Catanzaro"},"740":{"code":"CH","name":"Chieti"},"741":{"code":"CO","name":"Como"},"742":{"code":"CS","name":"Cosenza"},"743":{"code":"CR","name":"Cremona"},"744":{"code":"KR","name":"Crotone"},"745":{"code":"CN","name":"Cuneo"},"746":{"code":"EN","name":"Enna"},"747":{"code":"FM","name":"Fermo"},"748":{"code":"FE","name":"Ferrara"},"749":{"code":"FI","name":"Firenze"},"750":{"code":"FG","name":"Foggia"},"751":{"code":"FC","name":"Forli-Cesena"},"752":{"code":"FR","name":"Frosinone"},"753":{"code":"GE","name":"Genova"},"754":{"code":"GO","name":"Gorizia"},"755":{"code":"GR","name":"Grosseto"},"756":{"code":"IM","name":"Imperia"},"757":{"code":"IS","name":"Isernia"},"718":{"code":"AQ","name":"L'Aquila"},"758":{"code":"SP","name":"La-Spezia"},"759":{"code":"LT","name":"Latina"},"760":{"code":"LE","name":"Lecce"},"761":{"code":"LC","name":"Lecco"},"762":{"code":"LI","name":"Livorno"},"763":{"code":"LO","name":"Lodi"},"764":{"code":"LU","name":"Lucca"},"765":{"code":"MC","name":"Macerata"},"766":{"code":"MN","name":"Mantova"},"767":{"code":"MS","name":"Massa-Carrara"},"768":{"code":"MT","name":"Matera"},"769":{"code":"VS","name":"Medio Campidano"},"770":{"code":"ME","name":"Messina"},"771":{"code":"MI","name":"Milano"},"772":{"code":"MO","name":"Modena"},"773":{"code":"MB","name":"Monza-Brianza"},"774":{"code":"NA","name":"Napoli"},"775":{"code":"NO","name":"Novara"},"776":{"code":"NU","name":"Nuoro"},"777":{"code":"OG","name":"Ogliastra"},"778":{"code":"OT","name":"Olbia Tempio"},"779":{"code":"OR","name":"Oristano"},"780":{"code":"PD","name":"Padova"},"781":{"code":"PA","name":"Palermo"},"782":{"code":"PR","name":"Parma"},"783":{"code":"PV","name":"Pavia"},"784":{"code":"PG","name":"Perugia"},"785":{"code":"PU","name":"Pesaro-Urbino"},"786":{"code":"PE","name":"Pescara"},"787":{"code":"PC","name":"Piacenza"},"788":{"code":"PI","name":"Pisa"},"789":{"code":"PT","name":"Pistoia"},"790":{"code":"PN","name":"Pordenone"},"791":{"code":"PZ","name":"Potenza"},"792":{"code":"PO","name":"Prato"},"793":{"code":"RG","name":"Ragusa"},"794":{"code":"RA","name":"Ravenna"},"795":{"code":"RC","name":"Reggio-Calabria"},"796":{"code":"RE","name":"Reggio-Emilia"},"797":{"code":"RI","name":"Rieti"},"798":{"code":"RN","name":"Rimini"},"799":{"code":"RM","name":"Roma"},"800":{"code":"RO","name":"Rovigo"},"801":{"code":"SA","name":"Salerno"},"802":{"code":"SS","name":"Sassari"},"803":{"code":"SV","name":"Savona"},"804":{"code":"SI","name":"Siena"},"805":{"code":"SR","name":"Siracusa"},"806":{"code":"SO","name":"Sondrio"},"807":{"code":"TA","name":"Taranto"},"808":{"code":"TE","name":"Teramo"},"809":{"code":"TR","name":"Terni"},"810":{"code":"TO","name":"Torino"},"811":{"code":"TP","name":"Trapani"},"812":{"code":"TN","name":"Trento"},"813":{"code":"TV","name":"Treviso"},"814":{"code":"TS","name":"Trieste"},"815":{"code":"UD","name":"Udine"},"816":{"code":"VA","name":"Varese"},"817":{"code":"VE","name":"Venezia"},"818":{"code":"VB","name":"Verbania"},"819":{"code":"VC","name":"Vercelli"},"820":{"code":"VR","name":"Verona"},"821":{"code":"VV","name":"Vibo-Valentia"},"822":{"code":"VI","name":"Vicenza"},"823":{"code":"VT","name":"Viterbo"}}},"JE":{"name":"Jersey"},"JM":{"name":"Jama\u00efque"},"JO":{"name":"Jordanie"},"JP":{"name":"Japon"},"KE":{"name":"Kenya"},"KG":{"name":"Kirghizstan"},"KH":{"name":"Cambodge"},"KI":{"name":"Kiribati"},"KM":{"name":"Comores"},"KN":{"name":"Saint-Christophe-et-Ni\u00e9v\u00e8s"},"KP":{"name":"Cor\u00e9e du Nord"},"KR":{"name":"Cor\u00e9e du Sud"},"KW":{"name":"Kowe\u00eft"},"KY":{"name":"\u00celes Ca\u00efmans"},"KZ":{"name":"Kazakhstan"},"LA":{"name":"Laos"},"LB":{"name":"Liban"},"LC":{"name":"Sainte-Lucie"},"LI":{"name":"Liechtenstein"},"LK":{"name":"Sri Lanka"},"LR":{"name":"Liberia"},"LS":{"name":"Lesotho"},"LT":{"name":"Lituanie","regions":{"475":{"code":"LT-AL","name":"Alytaus Apskritis"},"476":{"code":"LT-KU","name":"Kauno Apskritis"},"477":{"code":"LT-KL","name":"Klaip\u0117dos Apskritis"},"478":{"code":"LT-MR","name":"Marijampol\u0117s Apskritis"},"479":{"code":"LT-PN","name":"Panev\u0117\u017eio Apskritis"},"480":{"code":"LT-SA","name":"\u0160iauli\u0173 Apskritis"},"481":{"code":"LT-TA","name":"Taurag\u0117s Apskritis"},"482":{"code":"LT-TE","name":"Tel\u0161i\u0173 Apskritis"},"483":{"code":"LT-UT","name":"Utenos Apskritis"},"484":{"code":"LT-VL","name":"Vilniaus Apskritis"}}},"LU":{"name":"Luxembourg"},"LV":{"name":"Lettonie","regions":{"471":{"code":"\u0100da\u017eu novads","name":"\u0100da\u017eu novads"},"366":{"code":"Aglonas novads","name":"Aglonas novads"},"367":{"code":"LV-AI","name":"Aizkraukles novads"},"368":{"code":"Aizputes novads","name":"Aizputes novads"},"369":{"code":"Akn\u012bstes novads","name":"Akn\u012bstes novads"},"370":{"code":"Alojas novads","name":"Alojas novads"},"371":{"code":"Alsungas novads","name":"Alsungas novads"},"372":{"code":"LV-AL","name":"Al\u016bksnes novads"},"373":{"code":"Amatas novads","name":"Amatas novads"},"374":{"code":"Apes novads","name":"Apes novads"},"375":{"code":"Auces novads","name":"Auces novads"},"376":{"code":"Bab\u012btes novads","name":"Bab\u012btes novads"},"377":{"code":"Baldones novads","name":"Baldones novads"},"378":{"code":"Baltinavas novads","name":"Baltinavas novads"},"379":{"code":"LV-BL","name":"Balvu novads"},"380":{"code":"LV-BU","name":"Bauskas novads"},"381":{"code":"Bever\u012bnas novads","name":"Bever\u012bnas novads"},"382":{"code":"Broc\u0113nu novads","name":"Broc\u0113nu novads"},"383":{"code":"Burtnieku novads","name":"Burtnieku novads"},"384":{"code":"Carnikavas novads","name":"Carnikavas novads"},"387":{"code":"LV-CE","name":"C\u0113su novads"},"385":{"code":"Cesvaines novads","name":"Cesvaines novads"},"386":{"code":"Ciblas novads","name":"Ciblas novads"},"388":{"code":"Dagdas novads","name":"Dagdas novads"},"355":{"code":"LV-DGV","name":"Daugavpils"},"389":{"code":"LV-DA","name":"Daugavpils novads"},"390":{"code":"LV-DO","name":"Dobeles novads"},"391":{"code":"Dundagas novads","name":"Dundagas novads"},"392":{"code":"Durbes novads","name":"Durbes novads"},"393":{"code":"Engures novads","name":"Engures novads"},"472":{"code":"\u0112rg\u013cu novads","name":"\u0112rg\u013cu novads"},"394":{"code":"Garkalnes novads","name":"Garkalnes novads"},"395":{"code":"Grobi\u0146as novads","name":"Grobi\u0146as novads"},"396":{"code":"LV-GU","name":"Gulbenes novads"},"397":{"code":"Iecavas novads","name":"Iecavas novads"},"398":{"code":"Ik\u0161\u0137iles novads","name":"Ik\u0161\u0137iles novads"},"399":{"code":"Il\u016bkstes novads","name":"Il\u016bkstes novads"},"400":{"code":"In\u010dukalna novads","name":"In\u010dukalna novads"},"401":{"code":"Jaunjelgavas novads","name":"Jaunjelgavas novads"},"402":{"code":"Jaunpiebalgas novads","name":"Jaunpiebalgas novads"},"403":{"code":"Jaunpils novads","name":"Jaunpils novads"},"357":{"code":"J\u0113kabpils","name":"J\u0113kabpils"},"405":{"code":"LV-JK","name":"J\u0113kabpils novads"},"356":{"code":"LV-JEL","name":"Jelgava"},"404":{"code":"LV-JL","name":"Jelgavas novads"},"358":{"code":"LV-JUR","name":"J\u016brmala"},"406":{"code":"Kandavas novads","name":"Kandavas novads"},"412":{"code":"K\u0101rsavas novads","name":"K\u0101rsavas novads"},"473":{"code":"\u0136eguma novads","name":"\u0136eguma novads"},"474":{"code":"\u0136ekavas novads","name":"\u0136ekavas novads"},"407":{"code":"Kokneses novads","name":"Kokneses novads"},"410":{"code":"LV-KR","name":"Kr\u0101slavas novads"},"408":{"code":"Krimuldas novads","name":"Krimuldas novads"},"409":{"code":"Krustpils novads","name":"Krustpils novads"},"411":{"code":"LV-KU","name":"Kuld\u012bgas novads"},"413":{"code":"Lielv\u0101rdes novads","name":"Lielv\u0101rdes novads"},"359":{"code":"LV-LPX","name":"Liep\u0101ja"},"360":{"code":"LV-LE","name":"Liep\u0101jas novads"},"417":{"code":"L\u012bgatnes novads","name":"L\u012bgatnes novads"},"414":{"code":"LV-LM","name":"Limba\u017eu novads"},"418":{"code":"L\u012bv\u0101nu novads","name":"L\u012bv\u0101nu novads"},"415":{"code":"Lub\u0101nas novads","name":"Lub\u0101nas novads"},"416":{"code":"LV-LU","name":"Ludzas novads"},"419":{"code":"LV-MA","name":"Madonas novads"},"421":{"code":"M\u0101lpils novads","name":"M\u0101lpils novads"},"422":{"code":"M\u0101rupes novads","name":"M\u0101rupes novads"},"420":{"code":"Mazsalacas novads","name":"Mazsalacas novads"},"423":{"code":"Nauk\u0161\u0113nu novads","name":"Nauk\u0161\u0113nu novads"},"424":{"code":"Neretas novads","name":"Neretas novads"},"425":{"code":"N\u012bcas novads","name":"N\u012bcas novads"},"426":{"code":"LV-OG","name":"Ogres novads"},"427":{"code":"Olaines novads","name":"Olaines novads"},"428":{"code":"Ozolnieku novads","name":"Ozolnieku novads"},"432":{"code":"P\u0101rgaujas novads","name":"P\u0101rgaujas novads"},"433":{"code":"P\u0101vilostas novads","name":"P\u0101vilostas novads"},"434":{"code":"P\u013cavi\u0146u novads","name":"P\u013cavi\u0146u novads"},"429":{"code":"LV-PR","name":"Prei\u013cu novads"},"430":{"code":"Priekules novads","name":"Priekules novads"},"431":{"code":"Prieku\u013cu novads","name":"Prieku\u013cu novads"},"435":{"code":"Raunas novads","name":"Raunas novads"},"361":{"code":"LV-REZ","name":"R\u0113zekne"},"442":{"code":"LV-RE","name":"R\u0113zeknes novads"},"436":{"code":"Riebi\u0146u novads","name":"Riebi\u0146u novads"},"362":{"code":"LV-RIX","name":"R\u012bga"},"363":{"code":"LV-RI","name":"R\u012bgas novads"},"437":{"code":"Rojas novads","name":"Rojas novads"},"438":{"code":"Ropa\u017eu novads","name":"Ropa\u017eu novads"},"439":{"code":"Rucavas novads","name":"Rucavas novads"},"440":{"code":"Rug\u0101ju novads","name":"Rug\u0101ju novads"},"443":{"code":"R\u016bjienas novads","name":"R\u016bjienas novads"},"441":{"code":"Rund\u0101les novads","name":"Rund\u0101les novads"},"444":{"code":"Salacgr\u012bvas novads","name":"Salacgr\u012bvas novads"},"445":{"code":"Salas novads","name":"Salas novads"},"446":{"code":"Salaspils novads","name":"Salaspils novads"},"447":{"code":"LV-SA","name":"Saldus novads"},"448":{"code":"Saulkrastu novads","name":"Saulkrastu novads"},"455":{"code":"S\u0113jas novads","name":"S\u0113jas novads"},"449":{"code":"Siguldas novads","name":"Siguldas novads"},"451":{"code":"Skr\u012bveru novads","name":"Skr\u012bveru novads"},"450":{"code":"Skrundas novads","name":"Skrundas novads"},"452":{"code":"Smiltenes novads","name":"Smiltenes novads"},"453":{"code":"Stopi\u0146u novads","name":"Stopi\u0146u novads"},"454":{"code":"Stren\u010du novads","name":"Stren\u010du novads"},"456":{"code":"LV-TA","name":"Talsu novads"},"458":{"code":"T\u0113rvetes novads","name":"T\u0113rvetes novads"},"457":{"code":"LV-TU","name":"Tukuma novads"},"459":{"code":"Vai\u0146odes novads","name":"Vai\u0146odes novads"},"460":{"code":"LV-VK","name":"Valkas novads"},"364":{"code":"Valmiera","name":"Valmiera"},"461":{"code":"LV-VM","name":"Valmieras novads"},"462":{"code":"Varak\u013c\u0101nu novads","name":"Varak\u013c\u0101nu novads"},"469":{"code":"V\u0101rkavas novads","name":"V\u0101rkavas novads"},"463":{"code":"Vecpiebalgas novads","name":"Vecpiebalgas novads"},"464":{"code":"Vecumnieku novads","name":"Vecumnieku novads"},"365":{"code":"LV-VEN","name":"Ventspils"},"465":{"code":"LV-VE","name":"Ventspils novads"},"466":{"code":"Vies\u012btes novads","name":"Vies\u012btes novads"},"467":{"code":"Vi\u013cakas novads","name":"Vi\u013cakas novads"},"468":{"code":"Vi\u013c\u0101nu novads","name":"Vi\u013c\u0101nu novads"},"470":{"code":"Zilupes novads","name":"Zilupes novads"}}},"LY":{"name":"Libye"},"MA":{"name":"Maroc"},"MC":{"name":"Monaco"},"MD":{"name":"Moldavie"},"ME":{"name":"Mont\u00e9n\u00e9gro"},"MF":{"name":"Saint-Martin"},"MG":{"name":"Madagascar"},"MH":{"name":"\u00celes Marshall"},"MK":{"name":"Mac\u00e9doine du Nord"},"ML":{"name":"Mali"},"MM":{"name":"Myanmar (Birmanie)"},"MN":{"name":"Mongolie"},"MO":{"name":"R.A.S. chinoise de Macao"},"MP":{"name":"\u00celes Mariannes du Nord"},"MQ":{"name":"Martinique"},"MR":{"name":"Mauritanie"},"MS":{"name":"Montserrat"},"MT":{"name":"Malte"},"MU":{"name":"Maurice"},"MV":{"name":"Maldives"},"MW":{"name":"Malawi"},"MX":{"name":"Mexique","regions":{"622":{"code":"AGU","name":"Aguascalientes"},"623":{"code":"BCN","name":"Baja California"},"624":{"code":"BCS","name":"Baja California Sur"},"625":{"code":"CAM","name":"Campeche"},"626":{"code":"CHP","name":"Chiapas"},"627":{"code":"CHH","name":"Chihuahua"},"628":{"code":"CMX","name":"Ciudad de M\u00e9xico"},"629":{"code":"COA","name":"Coahuila"},"630":{"code":"COL","name":"Colima"},"631":{"code":"DUR","name":"Durango"},"632":{"code":"MEX","name":"Estado de M\u00e9xico"},"633":{"code":"GUA","name":"Guanajuato"},"634":{"code":"GRO","name":"Guerrero"},"635":{"code":"HID","name":"Hidalgo"},"636":{"code":"JAL","name":"Jalisco"},"637":{"code":"MIC","name":"Michoac\u00e1n"},"638":{"code":"MOR","name":"Morelos"},"639":{"code":"NAY","name":"Nayarit"},"640":{"code":"NLE","name":"Nuevo Le\u00f3n"},"641":{"code":"OAX","name":"Oaxaca"},"642":{"code":"PUE","name":"Puebla"},"643":{"code":"QUE","name":"Quer\u00e9taro"},"644":{"code":"ROO","name":"Quintana Roo"},"645":{"code":"SLP","name":"San Luis Potos\u00ed"},"646":{"code":"SIN","name":"Sinaloa"},"647":{"code":"SON","name":"Sonora"},"648":{"code":"TAB","name":"Tabasco"},"649":{"code":"TAM","name":"Tamaulipas"},"650":{"code":"TLA","name":"Tlaxcala"},"651":{"code":"VER","name":"Veracruz"},"652":{"code":"YUC","name":"Yucat\u00e1n"},"653":{"code":"ZAC","name":"Zacatecas"}}},"MY":{"name":"Malaisie"},"MZ":{"name":"Mozambique"},"NA":{"name":"Namibie"},"NC":{"name":"Nouvelle-Cal\u00e9donie"},"NE":{"name":"Niger"},"NF":{"name":"\u00cele Norfolk"},"NG":{"name":"Nigeria"},"NI":{"name":"Nicaragua"},"NL":{"name":"Pays-Bas"},"NO":{"name":"Norv\u00e8ge"},"NP":{"name":"N\u00e9pal"},"NR":{"name":"Nauru"},"NU":{"name":"Niue"},"NZ":{"name":"Nouvelle-Z\u00e9lande"},"OM":{"name":"Oman"},"PA":{"name":"Panama"},"PE":{"name":"P\u00e9rou","regions":{"1007":{"code":"PE-AMA","name":"Amazonas"},"1008":{"code":"PE-ANC","name":"Ancash"},"1009":{"code":"PE-APU","name":"Apur\u00edmac"},"1010":{"code":"PE-ARE","name":"Arequipa"},"1011":{"code":"PE-AYA","name":"Ayacucho"},"1012":{"code":"PE-CAJ","name":"Cajamarca"},"1013":{"code":"PE-CUS","name":"Cusco"},"1014":{"code":"PE-CAL","name":"El Callao"},"1015":{"code":"PE-HUV","name":"Huancavelica"},"1016":{"code":"PE-HUC","name":"Hu\u00e1nuco"},"1017":{"code":"PE-ICA","name":"Ica"},"1018":{"code":"PE-JUN","name":"Jun\u00edn"},"1019":{"code":"PE-LAL","name":"La Libertad"},"1020":{"code":"PE-LAM","name":"Lambayeque"},"1021":{"code":"PE-LIM","name":"Lima"},"1022":{"code":"PE-LOR","name":"Loreto"},"1023":{"code":"PE-MDD","name":"Madre de Dios"},"1024":{"code":"PE-MOQ","name":"Moquegua"},"1006":{"code":"PE-LMA","name":"Municipalidad Metropolitana de Lima"},"1025":{"code":"PE-PAS","name":"Pasco"},"1026":{"code":"PE-PIU","name":"Piura"},"1027":{"code":"PE-PUN","name":"Puno"},"1028":{"code":"PE-SAM","name":"San Mart\u00edn"},"1029":{"code":"PE-TAC","name":"Tacna"},"1030":{"code":"PE-TUM","name":"Tumbes"},"1031":{"code":"PE-UCA","name":"Ucayali"}}},"PF":{"name":"Polyn\u00e9sie fran\u00e7aise"},"PG":{"name":"Papouasie-Nouvelle-Guin\u00e9e"},"PH":{"name":"Philippines"},"PK":{"name":"Pakistan"},"PL":{"name":"Pologne","regions":{"824":{"code":"PL-02","name":"dolno\u015bl\u0105skie"},"825":{"code":"PL-04","name":"kujawsko-pomorskie"},"826":{"code":"PL-06","name":"lubelskie"},"827":{"code":"PL-08","name":"lubuskie"},"830":{"code":"PL-14","name":"mazowieckie"},"829":{"code":"PL-12","name":"ma\u0142opolskie"},"831":{"code":"PL-16","name":"opolskie"},"832":{"code":"PL-18","name":"podkarpackie"},"833":{"code":"PL-20","name":"podlaskie"},"834":{"code":"PL-22","name":"pomorskie"},"835":{"code":"PL-24","name":"\u015bl\u0105skie"},"836":{"code":"PL-26","name":"\u015bwi\u0119tokrzyskie"},"837":{"code":"PL-28","name":"warmi\u0144sko-mazurskie"},"838":{"code":"PL-30","name":"wielkopolskie"},"839":{"code":"PL-32","name":"zachodniopomorskie"},"828":{"code":"PL-10","name":"\u0142\u00f3dzkie"}}},"PM":{"name":"Saint-Pierre-et-Miquelon"},"PN":{"name":"\u00celes Pitcairn"},"PS":{"name":"Territoires palestiniens"},"PT":{"name":"Portugal","regions":{"1032":{"code":"PT-01","name":"Aveiro"},"1033":{"code":"PT-02","name":"Beja"},"1034":{"code":"PT-03","name":"Braga"},"1035":{"code":"PT-04","name":"Bragan\u00e7a"},"1036":{"code":"PT-05","name":"Castelo Branco"},"1037":{"code":"PT-06","name":"Coimbra"},"1038":{"code":"PT-07","name":"\u00c9vora"},"1039":{"code":"PT-08","name":"Faro"},"1040":{"code":"PT-09","name":"Guarda"},"1041":{"code":"PT-10","name":"Leiria"},"1042":{"code":"PT-11","name":"Lisboa"},"1043":{"code":"PT-12","name":"Portalegre"},"1044":{"code":"PT-13","name":"Porto"},"1051":{"code":"PT-30","name":"Regi\u00e3o Aut\u00f3noma da Madeira"},"1050":{"code":"PT-20","name":"Regi\u00e3o Aut\u00f3noma dos A\u00e7ores"},"1045":{"code":"PT-14","name":"Santar\u00e9m"},"1046":{"code":"PT-15","name":"Set\u00fabal"},"1047":{"code":"PT-16","name":"Viana do Castelo"},"1048":{"code":"PT-17","name":"Vila Real"},"1049":{"code":"PT-18","name":"Viseu"}}},"PW":{"name":"Palaos"},"PY":{"name":"Paraguay","regions":{"989":{"code":"PY-16","name":"Alto Paraguay"},"990":{"code":"PY-10","name":"Alto Paran\u00e1"},"991":{"code":"PY-13","name":"Amambay"},"988":{"code":"PY-ASU","name":"Asunci\u00f3n"},"992":{"code":"PY-19","name":"Boquer\u00f3n"},"993":{"code":"PY-5","name":"Caaguaz\u00fa"},"994":{"code":"PY-6","name":"Caazap\u00e1"},"995":{"code":"PY-14","name":"Canindey\u00fa"},"996":{"code":"PY-11","name":"Central"},"997":{"code":"PY-1","name":"Concepci\u00f3n"},"998":{"code":"PY-3","name":"Cordillera"},"999":{"code":"PY-4","name":"Guair\u00e1"},"1000":{"code":"PY-7","name":"Itap\u00faa"},"1001":{"code":"PY-8","name":"Misiones"},"1002":{"code":"PY-12","name":"\u00d1eembuc\u00fa"},"1003":{"code":"PY-9","name":"Paraguar\u00ed"},"1004":{"code":"PY-15","name":"Presidente Hayes"},"1005":{"code":"PY-2","name":"San Pedro"}}},"QA":{"name":"Qatar"},"RE":{"name":"La R\u00e9union"},"RO":{"name":"Roumanie","regions":{"278":{"code":"AB","name":"Alba"},"279":{"code":"AR","name":"Arad"},"280":{"code":"AG","name":"Arge\u015f"},"281":{"code":"BC","name":"Bac\u0103u"},"282":{"code":"BH","name":"Bihor"},"283":{"code":"BN","name":"Bistri\u0163a-N\u0103s\u0103ud"},"284":{"code":"BT","name":"Boto\u015fani"},"286":{"code":"BR","name":"Br\u0103ila"},"285":{"code":"BV","name":"Bra\u015fov"},"287":{"code":"B","name":"Bucure\u015fti"},"288":{"code":"BZ","name":"Buz\u0103u"},"290":{"code":"CL","name":"C\u0103l\u0103ra\u015fi"},"289":{"code":"CS","name":"Cara\u015f-Severin"},"291":{"code":"CJ","name":"Cluj"},"292":{"code":"CT","name":"Constan\u0163a"},"293":{"code":"CV","name":"Covasna"},"294":{"code":"DB","name":"D\u00e2mbovi\u0163a"},"295":{"code":"DJ","name":"Dolj"},"296":{"code":"GL","name":"Gala\u0163i"},"297":{"code":"GR","name":"Giurgiu"},"298":{"code":"GJ","name":"Gorj"},"299":{"code":"HR","name":"Harghita"},"300":{"code":"HD","name":"Hunedoara"},"301":{"code":"IL","name":"Ialomi\u0163a"},"302":{"code":"IS","name":"Ia\u015fi"},"303":{"code":"IF","name":"Ilfov"},"304":{"code":"MM","name":"Maramure\u015f"},"305":{"code":"MH","name":"Mehedin\u0163i"},"306":{"code":"MS","name":"Mure\u015f"},"307":{"code":"NT","name":"Neam\u0163"},"308":{"code":"OT","name":"Olt"},"309":{"code":"PH","name":"Prahova"},"311":{"code":"SJ","name":"S\u0103laj"},"310":{"code":"SM","name":"Satu-Mare"},"312":{"code":"SB","name":"Sibiu"},"313":{"code":"SV","name":"Suceava"},"314":{"code":"TR","name":"Teleorman"},"315":{"code":"TM","name":"Timi\u015f"},"316":{"code":"TL","name":"Tulcea"},"318":{"code":"VL","name":"V\u00e2lcea"},"317":{"code":"VS","name":"Vaslui"},"319":{"code":"VN","name":"Vrancea"}}},"RS":{"name":"Serbie"},"RU":{"name":"Russie"},"RW":{"name":"Rwanda"},"SA":{"name":"Arabie saoudite"},"SB":{"name":"\u00celes Salomon"},"SC":{"name":"Seychelles"},"SD":{"name":"Soudan"},"SE":{"name":"Su\u00e8de","regions":{"1062":{"code":"SE-K","name":"Blekinge l\u00e4n"},"1063":{"code":"SE-W","name":"Dalarnas l\u00e4n"},"1065":{"code":"SE-X","name":"G\u00e4vleborgs l\u00e4n"},"1064":{"code":"SE-I","name":"Gotlands l\u00e4n"},"1066":{"code":"SE-N","name":"Hallands l\u00e4n"},"1067":{"code":"SE-Z","name":"J\u00e4mtlands l\u00e4n"},"1068":{"code":"SE-F","name":"J\u00f6nk\u00f6pings l\u00e4n"},"1069":{"code":"SE-H","name":"Kalmar l\u00e4n"},"1070":{"code":"SE-G","name":"Kronobergs l\u00e4n"},"1071":{"code":"SE-BD","name":"Norrbottens l\u00e4n"},"1081":{"code":"SE-T","name":"\u00d6rebro l\u00e4n"},"1082":{"code":"SE-E","name":"\u00d6sterg\u00f6tlands l\u00e4n"},"1072":{"code":"SE-M","name":"Sk\u00e5ne l\u00e4n"},"1074":{"code":"SE-D","name":"S\u00f6dermanlands l\u00e4n"},"1073":{"code":"SE-AB","name":"Stockholms l\u00e4n"},"1075":{"code":"SE-C","name":"Uppsala l\u00e4n"},"1076":{"code":"SE-S","name":"V\u00e4rmlands l\u00e4n"},"1077":{"code":"SE-AC","name":"V\u00e4sterbottens l\u00e4n"},"1078":{"code":"SE-Y","name":"V\u00e4sternorrlands l\u00e4n"},"1079":{"code":"SE-U","name":"V\u00e4stmanlands l\u00e4n"},"1080":{"code":"SE-O","name":"V\u00e4stra G\u00f6talands l\u00e4n"}}},"SG":{"name":"Singapour"},"SH":{"name":"Sainte-H\u00e9l\u00e8ne"},"SI":{"name":"Slov\u00e9nie"},"SJ":{"name":"Svalbard et Jan Mayen"},"SK":{"name":"Slovaquie"},"SL":{"name":"Sierra Leone"},"SM":{"name":"Saint-Marin"},"SN":{"name":"S\u00e9n\u00e9gal"},"SO":{"name":"Somalie"},"SR":{"name":"Suriname","regions":{"1052":{"code":"SR-BR","name":"Brokopondo"},"1053":{"code":"SR-CM","name":"Commewijne"},"1054":{"code":"SR-CR","name":"Coronie"},"1055":{"code":"SR-MA","name":"Marowijne"},"1056":{"code":"SR-NI","name":"Nickerie"},"1057":{"code":"SR-PR","name":"Para"},"1058":{"code":"SR-PM","name":"Paramaribo"},"1059":{"code":"SR-SA","name":"Saramacca"},"1060":{"code":"SR-SI","name":"Sipaliwini"},"1061":{"code":"SR-WA","name":"Wanica"}}},"ST":{"name":"Sao Tom\u00e9-et-Principe"},"SV":{"name":"Salvador"},"SX":{"name":"Saint-Martin (partie n\u00e9erlandaise)"},"SY":{"name":"Syrie"},"SZ":{"name":"Eswatini"},"TC":{"name":"\u00celes Turques-et-Ca\u00efques"},"TD":{"name":"Tchad"},"TF":{"name":"Terres australes fran\u00e7aises"},"TG":{"name":"Togo"},"TH":{"name":"Tha\u00eflande"},"TJ":{"name":"Tadjikistan"},"TK":{"name":"Tokelau"},"TL":{"name":"Timor oriental"},"TM":{"name":"Turkm\u00e9nistan"},"TN":{"name":"Tunisie"},"TO":{"name":"Tonga"},"TR":{"name":"Turquie"},"TT":{"name":"Trinit\u00e9-et-Tobago"},"TV":{"name":"Tuvalu"},"TW":{"name":"Ta\u00efwan"},"TZ":{"name":"Tanzanie"},"UA":{"name":"Ukraine","regions":{"1153":{"code":"UA-43","name":"Avtonomna Respublika Krym"},"1129":{"code":"UA-71","name":"Cherkaska oblast"},"1130":{"code":"UA-74","name":"Chernihivska oblast"},"1131":{"code":"UA-77","name":"Chernivetska oblast"},"1132":{"code":"UA-12","name":"Dnipropetrovska oblast"},"1133":{"code":"UA-14","name":"Donetska oblast"},"1134":{"code":"UA-26","name":"Ivano-Frankivska oblast"},"1135":{"code":"UA-63","name":"Kharkivska oblast"},"1136":{"code":"UA-65","name":"Khersonska oblast"},"1137":{"code":"UA-68","name":"Khmelnytska oblast"},"1138":{"code":"UA-35","name":"Kirovohradska oblast"},"1154":{"code":"UA-30","name":"Kyiv"},"1139":{"code":"UA-32","name":"Kyivska oblast"},"1140":{"code":"UA-09","name":"Luhanska oblast"},"1141":{"code":"UA-46","name":"Lvivska oblast"},"1142":{"code":"UA-48","name":"Mykolaivska oblast"},"1143":{"code":"UA-51","name":"Odeska oblast"},"1144":{"code":"UA-53","name":"Poltavska oblast"},"1145":{"code":"UA-56","name":"Rivnenska oblast"},"1155":{"code":"UA-40","name":"Sevastopol"},"1146":{"code":"UA-59","name":"Sumska oblast"},"1147":{"code":"UA-61","name":"Ternopilska oblast"},"1148":{"code":"UA-05","name":"Vinnytska oblast"},"1149":{"code":"UA-07","name":"Volynska oblast"},"1150":{"code":"UA-21","name":"Zakarpatska oblast"},"1151":{"code":"UA-23","name":"Zaporizka oblast"},"1152":{"code":"UA-18","name":"Zhytomyrska oblast"}}},"UG":{"name":"Ouganda"},"UM":{"name":"\u00celes mineures \u00e9loign\u00e9es des \u00c9tats-Unis"},"US":{"name":"\u00c9tats-Unis","regions":{"1":{"code":"AL","name":"Alabama"},"2":{"code":"AK","name":"Alaska"},"3":{"code":"AS","name":"American Samoa"},"4":{"code":"AZ","name":"Arizona"},"5":{"code":"AR","name":"Arkansas"},"6":{"code":"AE","name":"Armed Forces Africa"},"7":{"code":"AA","name":"Armed Forces Americas"},"8":{"code":"AE","name":"Armed Forces Canada"},"9":{"code":"AE","name":"Armed Forces Europe"},"10":{"code":"AE","name":"Armed Forces Middle East"},"11":{"code":"AP","name":"Armed Forces Pacific"},"12":{"code":"CA","name":"California"},"13":{"code":"CO","name":"Colorado"},"14":{"code":"CT","name":"Connecticut"},"15":{"code":"DE","name":"Delaware"},"16":{"code":"DC","name":"District of Columbia"},"17":{"code":"FM","name":"Federated States Of Micronesia"},"18":{"code":"FL","name":"Florida"},"19":{"code":"GA","name":"Georgia"},"20":{"code":"GU","name":"Guam"},"21":{"code":"HI","name":"Hawaii"},"22":{"code":"ID","name":"Idaho"},"23":{"code":"IL","name":"Illinois"},"24":{"code":"IN","name":"Indiana"},"25":{"code":"IA","name":"Iowa"},"26":{"code":"KS","name":"Kansas"},"27":{"code":"KY","name":"Kentucky"},"28":{"code":"LA","name":"Louisiana"},"29":{"code":"ME","name":"Maine"},"30":{"code":"MH","name":"Marshall Islands"},"31":{"code":"MD","name":"Maryland"},"32":{"code":"MA","name":"Massachusetts"},"33":{"code":"MI","name":"Michigan"},"34":{"code":"MN","name":"Minnesota"},"35":{"code":"MS","name":"Mississippi"},"36":{"code":"MO","name":"Missouri"},"37":{"code":"MT","name":"Montana"},"38":{"code":"NE","name":"Nebraska"},"39":{"code":"NV","name":"Nevada"},"40":{"code":"NH","name":"New Hampshire"},"41":{"code":"NJ","name":"New Jersey"},"42":{"code":"NM","name":"New Mexico"},"43":{"code":"NY","name":"New York"},"44":{"code":"NC","name":"North Carolina"},"45":{"code":"ND","name":"North Dakota"},"46":{"code":"MP","name":"Northern Mariana Islands"},"47":{"code":"OH","name":"Ohio"},"48":{"code":"OK","name":"Oklahoma"},"49":{"code":"OR","name":"Oregon"},"50":{"code":"PW","name":"Palau"},"51":{"code":"PA","name":"Pennsylvania"},"52":{"code":"PR","name":"Puerto Rico"},"53":{"code":"RI","name":"Rhode Island"},"54":{"code":"SC","name":"South Carolina"},"55":{"code":"SD","name":"South Dakota"},"56":{"code":"TN","name":"Tennessee"},"57":{"code":"TX","name":"Texas"},"58":{"code":"UT","name":"Utah"},"59":{"code":"VT","name":"Vermont"},"60":{"code":"VI","name":"Virgin Islands"},"61":{"code":"VA","name":"Virginia"},"62":{"code":"WA","name":"Washington"},"63":{"code":"WV","name":"West Virginia"},"64":{"code":"WI","name":"Wisconsin"},"65":{"code":"WY","name":"Wyoming"}}},"UY":{"name":"Uruguay","regions":{"840":{"code":"UY-AR","name":"Artigas"},"841":{"code":"UY-CA","name":"Canelones"},"842":{"code":"UY-CL","name":"Cerro Largo"},"843":{"code":"UY-CO","name":"Colonia"},"844":{"code":"UY-DU","name":"Durazno"},"845":{"code":"UY-FS","name":"Flores"},"846":{"code":"UY-FD","name":"Florida"},"847":{"code":"UY-LA","name":"Lavalleja"},"848":{"code":"UY-MA","name":"Maldonado"},"849":{"code":"UY-MO","name":"Montevideo"},"850":{"code":"UY-PA","name":"Paysandu"},"851":{"code":"UY-RN","name":"R\u00edo Negro"},"852":{"code":"UY-RV","name":"Rivera"},"853":{"code":"UY-RO","name":"Rocha"},"854":{"code":"UY-SA","name":"Salto"},"855":{"code":"UY-SJ","name":"San Jos\u00e9"},"856":{"code":"UY-SO","name":"Soriano"},"857":{"code":"UY-TA","name":"Tacuaremb\u00f3"},"858":{"code":"UY-TT","name":"Treinta y Tres"}}},"UZ":{"name":"Ouzb\u00e9kistan"},"VA":{"name":"\u00c9tat de la Cit\u00e9 du Vatican"},"VC":{"name":"Saint-Vincent-et-les Grenadines"},"VE":{"name":"Venezuela","regions":{"1085":{"code":"VE-Z","name":"Amazonas"},"1086":{"code":"VE-B","name":"Anzo\u00e1tegui"},"1087":{"code":"VE-C","name":"Apure"},"1088":{"code":"VE-D","name":"Aragua"},"1089":{"code":"VE-E","name":"Barinas"},"1090":{"code":"VE-F","name":"Bol\u00edvar"},"1091":{"code":"VE-G","name":"Carabobo"},"1092":{"code":"VE-H","name":"Cojedes"},"1093":{"code":"VE-Y","name":"Delta Amacuro"},"1083":{"code":"VE-W","name":"Dependencias Federales"},"1084":{"code":"VE-A","name":"Distrito Capital"},"1094":{"code":"VE-I","name":"Falc\u00f3n"},"1095":{"code":"VE-J","name":"Gu\u00e1rico"},"1096":{"code":"VE-K","name":"Lara"},"1097":{"code":"VE-L","name":"M\u00e9rida"},"1098":{"code":"VE-M","name":"Miranda"},"1099":{"code":"VE-N","name":"Monagas"},"1100":{"code":"VE-O","name":"Nueva Esparta"},"1101":{"code":"VE-P","name":"Portuguesa"},"1102":{"code":"VE-R","name":"Sucre"},"1103":{"code":"VE-S","name":"T\u00e1chira"},"1104":{"code":"VE-T","name":"Trujillo"},"1105":{"code":"VE-X","name":"Vargas"},"1106":{"code":"VE-U","name":"Yaracuy"},"1107":{"code":"VE-V","name":"Zulia"}}},"VG":{"name":"\u00celes Vierges britanniques"},"VI":{"name":"\u00celes Vierges des \u00c9tats-Unis"},"VN":{"name":"Vi\u00eat Nam"},"VU":{"name":"Vanuatu"},"WF":{"name":"Wallis-et-Futuna"},"WS":{"name":"Samoa"},"XK":{"name":"Kosovo"},"YE":{"name":"Y\u00e9men"},"YT":{"name":"Mayotte"},"ZA":{"name":"Afrique du Sud"},"ZM":{"name":"Zambie"},"ZW":{"name":"Zimbabwe"},"data_id":1785717448},"captcha":[],"instant-purchase":[],"loggedAsCustomer":[],"persistent":[],"review":[],"payments":[],"wishlist":{"items":[]},"recently_viewed_product":[],"recently_compared_product":[],"product_data_storage":[],"paypal-billing-agreement":[]}</script> <script> 'use strict'; function GoogleAnalytics () { let self = this; this.config = { isCookieRestrictionModeEnabled: 0, currentWebsite: 1, cookieName: "user_allowed_save_cookie", ordersTrackingData: [], pageTrackingData: {"optPageUrl":"","isAnonymizedIpActive":false,"accountId":"G-FX3FSNQV7E"}, } this.initGoogleAnalytics = function () { let allowServices = false, allowedCookies, allowedWebsites; if (self.config.isCookieRestrictionModeEnabled) { allowedCookies = hyva.getCookie(self.config.cookieName); if (allowedCookies !== null) { allowedWebsites = JSON.parse(decodeURIComponent(allowedCookies)); if (allowedWebsites[self.config.currentWebsite] === 1) { allowServices = true; } } } else { allowServices = true; } if (allowServices) { (function (i, s, o, g, r, a, m) { i.GoogleAnalyticsObject = r; i[r] = i[r] || function () { (i[r].q = i[r].q || []).push(arguments) }, i[r].l = 1 * new Date(); a = s.createElement(o), m = s.getElementsByTagName(o)[0]; a.defer = 1; a.src = g; m.parentNode.insertBefore(a, m) })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga'); // Process page info ga('create', self.config.pageTrackingData.accountId, 'auto'); if (self.config.pageTrackingData.isAnonymizedIpActive) { ga('set', 'anonymizeIp', true); } // Process orders data if (self.config.ordersTrackingData.hasOwnProperty('currency')) { ga('require', 'ec', 'ec.js'); ga('set', 'currencyCode', self.config.ordersTrackingData.currency); // Collect product data for GA if (self.config.ordersTrackingData.products) { self.config.ordersTrackingData.products.forEach(function (value) { ga('ec:addProduct', value); }); } // Collect orders data for GA if (self.config.ordersTrackingData.orders) { self.config.ordersTrackingData.orders.forEach(function (value) { ga('ec:setAction', 'purchase', value); }); } ga('send', 'pageview'); } else { // Process Data if not orders ga('send', 'pageview' + self.config.pageTrackingData.optPageUrl); } } }; } window.addEventListener("load", new GoogleAnalytics().initGoogleAnalytics); </script> </body> </html>

0 annonce en vente actuellement
Je veux vendre ce livre

Du même rayon