PageSourceSearch

https://www.est-ensemble.fr/sites/default/files/js/js_Pj-7b8XWl8fu_3XjgiX8RS7FTCHlm_oeK5A9aah0hxQ.js

js est-ensemble.fr collected 2026-09-24 09:18:23 UTC 453,408 bytes, 8,792 lines download raw bytes

1/*! Respond.js v1.0.1pre: min/max-width media query polyfill. (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs */
2(function(e,h){e.respond={};respond.update=function(){};respond.mediaQueriesSupported=h;if(h){return}var u=e.document,r=u.documentElement,i=[],k=[],p=[],o={},g=30,f=u.getElementsByTagName("head")[0]||r,b=f.getElementsByTagName("link"),d=[],a=function(){var B=b,w=B.length,z=0,y,x,A,v;for(;z<w;z++){y=B[z],x=y.href,A=y.media,v=y.rel&&y.rel.toLowerCase()==="stylesheet";if(!!x&&v&&!o[x]){if(y.styleSheet&&y.styleSheet.rawCssText){m(y.styleSheet.rawCssText,x,A);o[x]=true}else{if(!/^([a-zA-Z]+?:(\/\/)?)/.test(x)||x.replace(RegExp.$1,"").split("/")[0]===e.location.host){d.push({href:x,media:A})}}}}t()},t=function(){if(d.length){var v=d.shift();n(v.href,function(w){m(w,v.href,v.media);o[v.href]=true;t()})}},m=function(G,v,x){var E=G.match(/@media[^\{]+\{([^\{\}]+\{[^\}\{]+\})+/gi),H=E&&E.length||0,v=v.substring(0,v.lastIndexOf("/")),w=function(I){return I.replace(/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,"$1"+v+"$2$3")},y=!H&&x,B=0,A,C,D,z,F;if(v.length){v+="/"}if(y){H=1}for(;B<H;B++){A=0;if(y){C=x;k.push(w(G))}else{C=E[B].match(/@media ([^\{]+)\{([\S\s]+?)$/)&&RegExp.$1;k.push(RegExp.$2&&w(RegExp.$2))}z=C.split(",");F=z.length;for(;A<F;A++){D=z[A];i.push({media:D.match(/(only\s+)?([a-zA-Z]+)(\sand)?/)&&RegExp.$2,rules:k.length-1,minw:D.match(/\(min\-width:[\s]*([\s]*[0-9]+)px[\s]*\)/)&&parseFloat(RegExp.$1),maxw:D.match(/\(max\-width:[\s]*([\s]*[0-9]+)px[\s]*\)/)&&parseFloat(RegExp.$1)})}}j()},l,q,j=function(E){var v="clientWidth",x=r[v],D=u.compatMode==="CSS1Compat"&&x||u.body[v]||x,z={},C=u.createDocumentFragment(),B=b[b.length-1],w=(new Date()).getTime();if(E&&l&&w-l<g){clearTimeout(q);q=setTimeout(j,g);return}else{l=w}for(var y in i){var F=i[y];if(!F.minw&&!F.maxw||(!F.minw||F.minw&&D>=F.minw)&&(!F.maxw||F.maxw&&D<=F.maxw)){if(!z[F.media]){z[F.media]=[]}z[F.media].push(k[F.rules])}}for(var y in p){if(p[y]&&p[y].parentNode===f){f.removeChild(p[y])}}for(var y in z){var G=u.createElement("style"),A=z[y].join("\n");G.type="text/css";G.media=y;if(G.styleSheet){G.styleSheet.cssText=A}else{G.appendChild(u.createTextNode(A))}C.appendChild(G);p.push(G)}f.insertBefore(C,B.nextSibling)},n=function(v,x){var w=c();if(!w){return}w.open("GET",v,true);w.onreadystatechange=function(){if(w.readyState!=4||w.status!=200&&w.status!=304){return}x(w.responseText)};if(w.readyState==4){return}w.send(null)},c=(function(){var v=false;try{v=new XMLHttpRequest()}catch(w){v=new ActiveXObject("Microsoft.XMLHTTP")}return function(){return v}})();a();respond.update=a;function s(){j(true)}if(e.addEventListener){e.addEventListener("resize",s,false)}else{if(e.attachEvent){e.attachEvent("onresize",s)}}})(this,(function(f){if(f.matchMedia){return true}var e,i=document,c=i.documentElement,g=c.firstElementChild||c.firstChild,h=!i.body,d=i.body||i.createElement("body"),b=i.createElement("div"),a="only all";b.id="mq-test-1";b.style.cssText="position:absolute;top:-99em";d.appendChild(b);b.innerHTML='_<style media="'+a+'"> #mq-test-1 { width: 9px; }</style>';if(h){c.insertBefore(d,g)}b.removeChild(b.firstChild);e=b.offsetWidth==9;if(h){c.removeChild(d)}else{d.removeChild(b)}return e})(this));;
3/*jslint browser: true, evil: true */
4
5var scripts = document.getElementsByTagName('script'),
6    path = scripts[scripts.length - 1].src.split('?')[0],
7    tarteaucitronForceCDN = (tarteaucitronForceCDN === undefined) ? '' : tarteaucitronForceCDN,
8    cdn = (tarteaucitronForceCDN === '') ? path.split('/').slice(0, -1).join('/') + '/' : tarteaucitronForceCDN,
9    alreadyLaunch = (alreadyLaunch === undefined) ? 0 : alreadyLaunch,
10    tarteaucitronForceLanguage = (tarteaucitronForceLanguage === undefined) ? '' : tarteaucitronForceLanguage,
11    tarteaucitronForceExpire = (tarteaucitronForceExpire === undefined) ? '' : tarteaucitronForceExpire,
12    tarteaucitronCustomText = (tarteaucitronCustomText === undefined) ? '' : tarteaucitronCustomText,
13    // tarteaucitronExpireInDay: true for day(s) value - false for hour(s) value
14    tarteaucitronExpireInDay = (tarteaucitronExpireInDay === undefined || typeof tarteaucitronExpireInDay !== "boolean") ? true : tarteaucitronExpireInDay,
15    timeExpire = 31536000000,
16    tarteaucitronProLoadServices,
17    tarteaucitronNoAdBlocker = false;
18
19
20
21var tarteaucitron = {
22    "version": 20210509,
23    "cdn": cdn,
24    "user": {},
25    "lang": {},
26    "services": {},
27    "added": [],
28    "idprocessed": [],
29    "state": [],
30    "launch": [],
31    "parameters": {},
32    "isAjax": false,
33    "reloadThePage": false,
34    "events": {
35        "init": function () {},
36        "load": function () {},
37    },
38    "init": function (params) {
39        "use strict";
40        var origOpen;
41
42        tarteaucitron.parameters = params;
43        if (alreadyLaunch === 0) {
44            alreadyLaunch = 1;
45            if (window.addEventListener) {
46                window.addEventListener("load", function () {
47                    tarteaucitron.initEvents.loadEvent(false);
48                }, false);
49                window.addEventListener("scroll", function () {
50                    tarteaucitron.initEvents.scrollEvent();
51                }, false);
52
53                window.addEventListener("keydown", function (evt) {
54                    tarteaucitron.initEvents.keydownEvent(false, evt);
55                }, false);
56                window.addEventListener("hashchange", function () {
57                    tarteaucitron.initEvents.hashchangeEvent();
58                }, false);
59                window.addEventListener("resize", function () {
60                    tarteaucitron.initEvents.resizeEvent();
61                }, false);
62            } else {
63                window.attachEvent("onload", function () {
64                    tarteaucitron.initEvents.loadEvent(true);
65                });
vendor: 5,716 bytes, lines 65-198
65
66                window.attachEvent("onscroll", function () {
67                    tarteaucitron.initEvents.scrollEvent();
68                });
69                window.attachEvent("onkeydown", function (evt) {
70                    tarteaucitron.initEvents.keydownEvent(true, evt);
71
72                });
73                window.attachEvent("onhashchange", function () {
74                    tarteaucitron.initEvents.hashchangeEvent();
75                });
76                window.attachEvent("onresize", function () {
77                    tarteaucitron.initEvents.resizeEvent();
78                });
79            }
80
81            if (typeof XMLHttpRequest !== 'undefined') {
82                origOpen = XMLHttpRequest.prototype.open;
83                XMLHttpRequest.prototype.open = function () {
84
85                    if (window.addEventListener) {
86                        this.addEventListener("load", function () {
87                            if (typeof tarteaucitronProLoadServices === 'function') {
88                                tarteaucitronProLoadServices();
89                            }
90                        }, false);
91                    } else if (typeof this.attachEvent !== 'undefined') {
92                        this.attachEvent("onload", function () {
93                            if (typeof tarteaucitronProLoadServices === 'function') {
94                                tarteaucitronProLoadServices();
95                            }
96                        });
97                    } else {
98                        if (typeof tarteaucitronProLoadServices === 'function') {
99                            setTimeout(tarteaucitronProLoadServices, 1000);
100                        }
101                    }
102
103                    try {
104                        origOpen.apply(this, arguments);
105                    } catch (err) {}
106                };
107            }
108        }
109
110        if(tarteaucitron.events.init) {
111            tarteaucitron.events.init();
112        }
113    },
114    "initEvents": {
115        "loadEvent": function (isOldBrowser) {
116            tarteaucitron.load();
117            tarteaucitron.fallback(['tarteaucitronOpenPanel'], function (elem) {
118                if (isOldBrowser) {
119                    elem.attachEvent("onclick", function (event) {
120                        tarteaucitron.userInterface.openPanel();
121                        event.preventDefault();
122                    });
123                } else {
124                    elem.addEventListener("click", function (event) {
125                        tarteaucitron.userInterface.openPanel();
126                        event.preventDefault();
127                    }, false);
128                }
129            }, true);
130        },
131        "keydownEvent": function (isOldBrowser, evt) {
132            if (evt.keyCode === 27) {
133                tarteaucitron.userInterface.closePanel();
134            }
135
136            if (isOldBrowser) {
137                if ( evt.keyCode === 9 && focusableEls.indexOf(evt.target) >= 0) {
138                    if ( evt.shiftKey ) /* shift + tab */ {
139                        if (document.activeElement === firstFocusableEl) {
140                            lastFocusableEl.focus();
141                            evt.preventDefault();
142                        }
143                    } else /* tab */ {
144                        if (document.activeElement === lastFocusableEl) {
145                            firstFocusableEl.focus();
146                            evt.preventDefault();
147                        }
148                    }
149                }
150            }
151        },
152        "hashchangeEvent": function () {
153            if (document.location.hash === tarteaucitron.hashtag && tarteaucitron.hashtag !== '') {
154                tarteaucitron.userInterface.openPanel();
155            }
156        },
157        "resizeEvent": function () {
158            var tacElem = document.getElementById('tarteaucitron');
159            var tacCookieContainer = document.getElementById('tarteaucitronCookiesListContainer');
160
161            if (tacElem && tacElem.style.display === 'block') {
162                tarteaucitron.userInterface.jsSizing('main');
163            }
164
165            if (tacCookieContainer && tacCookieContainer.style.display === 'block') {
166                tarteaucitron.userInterface.jsSizing('cookie');
167            }
168        },
169        "scrollEvent": function () {
170            var scrollPos = window.pageYOffset || document.documentElement.scrollTop;
171            var heightPosition;
172            var tacPercentage = document.getElementById('tarteaucitronPercentage');
173            var tacAlertBig = document.getElementById('tarteaucitronAlertBig');
174
175            if (tacAlertBig && !tarteaucitron.highPrivacy) {
176                if (tacAlertBig.style.display === 'block') {
177                    heightPosition = tacAlertBig.offsetHeight + 'px';
178
179                    if (scrollPos > (screen.height * 2)) {
180                        tarteaucitron.userInterface.respondAll(true);
181                    } else if (scrollPos > (screen.height / 2)) {
182                        document.getElementById('tarteaucitronDisclaimerAlert').innerHTML = '<strong>' + tarteaucitron.lang.alertBigScroll + '</strong> ' + tarteaucitron.lang.alertBig;
183                    }
184
185                    if (tacPercentage) {
186                        if (tarteaucitron.orientation === 'top') {
187                            tacPercentage.style.top = heightPosition;
188                        } else {
189                            tacPercentage.style.bottom = heightPosition;
190                        }
191                        tacPercentage.style.width = ((100 / (screen.height * 2)) * scrollPos) + '%';
192                    }
193                }
194            }
195        },
196    },
197    "load": function () {
198        "use strict";
199        var cdn = tarteaucitron.cdn,
200            language = tarteaucitron.getLanguage(),
201            useJSDelivrMinifiedJS = (cdn.indexOf('cdn.jsdelivr.net') >= 0),
202            pathToLang = cdn + 'lang/tarteaucitron.' + language + (useJSDelivrMinifiedJS ? '.min' : '') + '.js?v=' + tarteaucitron.version,
203            pathToServices = cdn + 'tarteaucitron.services' + (useJSDelivrMinifiedJS ? '.min' : '') + '.js?v=' + tarteaucitron.version,
204            linkElement = document.createElement('link'),
205            defaults = {
206                "adblocker": false,
207                "hashtag": '#tarteaucitron',
208                "cookieName": 'tarteaucitron',
209                "highPrivacy": true,
210                "orientation": "middle",
211                "bodyPosition": "bottom",
212                "removeCredit": false,
213                "showAlertSmall": false,
214                "showIcon": true,
215                "iconPosition": "BottomRight",
216                "cookieslist": false,
217                "handleBrowserDNTRequest": false,
218                "DenyAllCta": true,
219                "AcceptAllCta" : true,
220                "moreInfoLink": true,
221                "privacyUrl": "",
222                "useExternalCss": false,
223                "useExternalJs": false,
224                "mandatory": true,
225                "closePopup": false,
226                "groupServices": false
227            },
228            params = tarteaucitron.parameters;
229
230        // Don't show the middle bar if we are on the privacy policy or more page
231        if (((tarteaucitron.parameters.readmoreLink !== undefined && window.location.href == tarteaucitron.parameters.readmoreLink) || window.location.href == tarteaucitron.parameters.privacyUrl) && tarteaucitron.parameters.orientation == "middle") {
232            tarteaucitron.parameters.orientation = "bottom";
233        }
234
235        // Step -1
236        if (typeof tarteaucitronCustomPremium !== 'undefined') {
237            tarteaucitronCustomPremium();
238        }
239
240        // Step 0: get params
241        if (params !== undefined) {
242
243            for (var k in defaults) {
244                if(!tarteaucitron.parameters.hasOwnProperty(k)) {
245                    tarteaucitron.parameters[k] = defaults[k];
246                }
247            }
248        }
249
250        // global
251        tarteaucitron.orientation = tarteaucitron.parameters.orientation;
252        tarteaucitron.hashtag = tarteaucitron.parameters.hashtag;
253        tarteaucitron.highPrivacy = tarteaucitron.parameters.highPrivacy;
254        tarteaucitron.handleBrowserDNTRequest = tarteaucitron.parameters.handleBrowserDNTRequest;
255
256        // Step 1: load css
257        if ( !tarteaucitron.parameters.useExternalCss ) {
258            linkElement.rel = 'stylesheet';
259            linkElement.type = 'text/css';
260            linkElement.href = cdn + 'css/tarteaucitron' + (useJSDelivrMinifiedJS ? '.min' : '') + '.css?v=' + tarteaucitron.version;
261            document.getElementsByTagName('head')[0].appendChild(linkElement);
262        }
263        // Step 2: load language and services
264        tarteaucitron.addInternalScript(pathToLang, '', function () {
265
266          if(tarteaucitronCustomText !== ''){
267            tarteaucitron.lang = tarteaucitron.AddOrUpdate(tarteaucitron.lang, tarteaucitronCustomText);
268          }
269            tarteaucitron.addInternalScript(pathToServices, '', function () {
270
271                // css for the middle bar TODO: add it on the css file
272                if (tarteaucitron.orientation === 'middle') {
273                    var customThemeMiddle = document.createElement('style'),
274                        cssRuleMiddle = 'div#tarteaucitronRoot.tarteaucitronBeforeVisible:before {content: \'\';position: fixed;width: 100%;height: 100%;background: white;top: 0;left: 0;z-index: 999;opacity: 0.5;}div#tarteaucitronAlertBig:before {content: \'' + tarteaucitron.lang.middleBarHead + '\';font-size: 35px;}body #tarteaucitronRoot div#tarteaucitronAlertBig {width: 60%;min-width: 285px;height: auto;margin: auto;left: 50%;top: 50%;transform: translate(-50%, -50%);box-shadow: 0 0 9000px #000;border-radius: 20px;padding: 35px 25px;}
274span#tarteaucitronDisclaimerAlert {padding: 0 30px;}#tarteaucitronRoot span#tarteaucitronDisclaimerAlert {margin: 10px 0 30px;display: block;text-align: center;font-size: 21px;}@media screen and (max-width: 900px) {div#tarteaucitronAlertBig button {margin: 0 auto 10px!important;display: block!important;}}';
275
276                    customThemeMiddle.type = 'text/css';
277                    if (customThemeMiddle.styleSheet) {
278                        customThemeMiddle.styleSheet.cssText = cssRuleMiddle;
279                    } else {
280                        customThemeMiddle.appendChild(document.createTextNode(cssRuleMiddle));
281                    }
282                    document.getElementsByTagName('head')[0].appendChild(customThemeMiddle);
283                }
284
285                // css for the popup bar TODO: add it on the css file
286                if (tarteaucitron.orientation === 'popup') {
287                    var customThemePopup = document.createElement('style'),
288                        cssRulePopup = 'div#tarteaucitronAlertBig:before {content: \'' + tarteaucitron.lang.middleBarHead + '\';font-size: 22px;}body #tarteaucitronRoot div#tarteaucitronAlertBig {bottom: 0;top: auto!important;left: 8px!important;right: auto!important;transform: initial!important;border-radius: 5px 5px 0 0!important;max-width: 250px!important;width: Calc(100% - 16px)!important;min-width: 0!important;padding: 25px 0;}span#tarteaucitronDisclaimerAlert {padding: 0 30px;font-size: 15px!important;}#tarteaucitronRoot span#tarteaucitronDisclaimerAlert {margin: 10px 0 30px;display: block;text-align: center;font-size: 21px;}div#tarteaucitronAlertBig button {margin: 0 auto 10px!important;display: block!important;width: Calc(100% - 60px);box-sizing: border-box;}';
289
290                    customThemePopup.type = 'text/css';
291                    if (customThemePopup.styleSheet) {
292                        customThemePopup.styleSheet.cssText = cssRulePopup;
293                    } else {
294                        customThemePopup.appendChild(document.createTextNode(cssRulePopup));
295                    }
296                    document.getElementsByTagName('head')[0].appendChild(customThemePopup);
297                }
298
299                var body = document.body,
300                    div = document.createElement('div'),
301                    html = '',
302                    index,
303                    orientation = 'Top',
304                    cat = ['ads', 'analytic', 'api', 'comment', 'social', 'support', 'video', 'other'],
305                    i;
306
307                cat = cat.sort(function (a, b) {
308                    if (tarteaucitron.lang[a].title > tarteaucitron.lang[b].title) { return 1; }
309                    if (tarteaucitron.lang[a].title < tarteaucitron.lang[b].title) { return -1; }
310                    return 0;
311                });
312
313                // Step 3: prepare the html
314                html += '<div id="tarteaucitronPremium"></div>';
315                html += '<button type="button" id="tarteaucitronBack" aria-label="' + tarteaucitron.lang.close + '"></button>';
316                html += '<div id="tarteaucitron" role="dialog" aria-modal="true" aria-describedby="tarteaucitronInfo" aria-labelledby="dialogTitle" tabindex="-1">';
317                html += '   <button type="button" id="tarteaucitronClosePanel">';
318                html += '       ' + tarteaucitron.lang.close;
319                html += '   </button>';
320                html += '   <div id="tarteaucitronServices">';
321                html += '      <div class="tarteaucitronLine tarteaucitronMainLine" id="tarteaucitronMainLineOffset">';
322                html += '         <span class="tarteaucitronH1" role="heading" aria-level="1" id="dialogTitle">'+ tarteaucitron.lang.title + '</span>';
323                html += '         <div id="tarteaucitronInfo">';
324                html += '         ' + tarteaucitron.lang.disclaimer;
325                if (tarteaucitron.parameters.privacyUrl !== "") {
326                    html += '   <br/><br/>';
327                    html += '   <button type="button" id="tarteaucitronPrivacyUrlDialog">';
328                    html += '       ' + tarteaucitron.lang.privacyUrl;
329                    html += '   </button>';
330                }
331                html += '         </div>';
332                html += '         <div class="tarteaucitronName">';
vendor: 7,928 bytes, lines 333-428
333                html += '            <span class="tarteaucitronH2" role="heading" aria-level="2">' + tarteaucitron.lang.all + '</span>';
334                html += '         </div>';
335                html += '         <div class="tarteaucitronAsk" id="tarteaucitronScrollbarAdjust">';
336                html += '            <button type="button" id="tarteaucitronAllAllowed" class="tarteaucitronAllow">';
337                html += '               <span class="tarteaucitronCheck"></span> ' + tarteaucitron.lang.allowAll;
338                html += '            </button> ';
339                html += '            <button type="button" id="tarteaucitronAllDenied" class="tarteaucitronDeny">';
340                html += '               <span class="tarteaucitronCross"></span> ' + tarteaucitron.lang.denyAll;
341                html += '            </button>';
342                html += '         </div>';
343                html += '      </div>';
344                html += '      <div class="tarteaucitronBorder">';
345                html += '         <div class="clear"></div><ul>';
346
347
348                if (tarteaucitron.parameters.mandatory == true) {
349                   html += '<li id="tarteaucitronServicesTitle_mandatory">';
350                   html += '<div class="tarteaucitronTitle">';
351                   html += '   <button type="button" tabindex="-1"><span class="tarteaucitronPlus"></span> ' + tarteaucitron.lang.mandatoryTitle + '</button>';
352                   html += '</div>';
353                   html += '<ul id="tarteaucitronServices_mandatory">';
354                   html += '<li class="tarteaucitronLine">';
355                   html += '   <div class="tarteaucitronName">';
356                   html += '       <span class="tarteaucitronH3" role="heading" aria-level="3">' + tarteaucitron.lang.mandatoryText + '</span>';
357                   html += '       <span class="tarteaucitronListCookies"></span><br/>';
358                   html += '   </div>';
359                   html += '   <div class="tarteaucitronAsk">';
360                   html += '       <button type="button" class="tarteaucitronAllow" tabindex="-1" disabled>';
361                   html += '           <span class="tarteaucitronCheck"></span> ' + tarteaucitron.lang.allow;
362                   html += '       </button> ';
363                   html += '       <button type="button" class="tarteaucitronDeny" style="visibility:hidden" tabindex="-1">';
364                   html += '           <span class="tarteaucitronCross"></span> ' + tarteaucitron.lang.deny;
365                   html += '       </button> ';
366                   html += '   </div>';
367                   html += '</li>';
368                   html += '</ul></li>';
369                }
370
371                for (i = 0; i < cat.length; i += 1) {
372                    html += '         <li id="tarteaucitronServicesTitle_' + cat[i] + '" class="tarteaucitronHidden">';
373                    html += '            <div class="tarteaucitronTitle">';
374                    html += '               <button type="button" class="catToggleBtn" data-cat="tarteaucitronDetails' + cat[i] + '"><span class="tarteaucitronPlus"></span> ' + tarteaucitron.lang[cat[i]].title + '</button>';
375                    html += '            </div>';
376                    html += '            <div id="tarteaucitronDetails' + cat[i] + '" class="tarteaucitronDetails tarteaucitronInfoBox">';
377                    html += '               ' + tarteaucitron.lang[cat[i]].details;
378                    html += '            </div>';
379                    html += '         <ul id="tarteaucitronServices_' + cat[i] + '"></ul></li>';
380                }
381                html += '             <li id="tarteaucitronNoServicesTitle" class="tarteaucitronLine">' + tarteaucitron.lang.noServices + '</li>';
382                html += '         </ul>';
383                html += '         <div class="tarteaucitronHidden tarteaucitron-spacer-20" id="tarteaucitronScrollbarChild"></div>';
384                if (tarteaucitron.parameters.removeCredit === false) {
385                    html += '     <a class="tarteaucitronSelfLink" href="https://tarteaucitron.io/" rel="nofollow noreferrer noopener" target="_blank" title="tarteaucitron ' + tarteaucitron.lang.newWindow + '"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHcAAAAeCAYAAAAWwoEYAAADl0lEQVRoge1Y0W3bQAx9CjKARlC+9GVUmqDJBHEmiDyB6wkcTxBngtgTxJ0gzgQW4C/9aYOmE6g4lTQo+k6y3Rb94QOERNQd+cjj8XiGwWAwGAwGg8FgMBgMBoPB8F8RNRXe+whEKe7c36ZCAeCRxC9Rig2PUd8kPgAsoxSfQ3YAzAA8D/HwYYCb05kBKKO0teFkmbC1jlKsAnq/Abjn+QBqAIsoRS30ttwG/HNz1wH/XIxWTicLdvtW7xTAGEAMtP685CNsBTe2d/BLydfXAG57SEnMAST0zgYZSUCPk02bCvkJduIzuJzDLfPolbY+tLKmar+/8+IRePy4qdpE03qHuH8fipFb4N2+XdA3AJ/0vaQxt7s9FvkIS2XvtqnwM0rxpOQfbnE5G2LhTCmUO2fHIngOmcv+KG3HafDchB6ntwjYqenR2PqC7sOZ3E7FXHB0vqxoFyUyLh7OEH7LOGouvhhN3eIBeKXv0n5MsufdHqXcwYR5U2EbpV35lSspVPJmQj4TcgRK7jTg5IzmPUhhwM5a2WHUFCx+NgiDucmgh7idikLovHFlL0pxQ9xzX+IIP9Y6FrJsqhjlQpZRAkFVDCjZfcCHt6bqJDmuh5ylCWx0RVnk3oumaknqTH5sqrY0fBWyULaHUIgAgxb46MxV3DbieAhxOxUxjSuljig9lMQ/Bcfoi9BTEv9aLORSndVxYOH525sUDC6u2gWxcNzBNRxPanyh3ktKinOgy3WoxPbtUM0t6RkbQnzBnFPgi9GCOEubY9UffIryz9iKRe8s/FUfEWosJJGxagp85bpUO3VywQ46lOtAWfNxKwa4JXQ+628+bpxYGXXMzp5rXH401VEyXwIdowXFaKWSMFHvMTVmGnc+P3oXV2QOiBCfgex8QtcQCbcQE/H+eoHzrkFo1KM7zVO4jVVj5s6lRiWF7zyXyfRMc97J3tzj87mYqZ7E2YjzUct9GUi4tjHLR8dVkBLjQcuHFleWvQfRNEhFR7uX7pkctOwvZXsft7sAtyldEUIN2UTeLxnEfxKYswzdi88BdbZ8hifUoSMftQvP+muRwN6+Q3DeqqRExP9QmTtcheiHh0Ot1x2i2km1bP9pbufw5zZdyWsOrh7vQae5OZWbsMv30pi7cd/CKj3coPEVaCP4Zhx4eQWhOZ1Y9MTXGyP8/iGjEyfa1T4fO/4Lea9vBoPBYDAYDAaDwWAwGAwGwz8GgF8siXCCbrSRhgAAAABJRU5ErkJggg==" alt="tarteaucitron.io" /></a>';
386                }
387                html += '       </div>';
388                html += '   </div>';
389                html += '</div>';
390
391                if (tarteaucitron.parameters.orientation === 'bottom') {
392                    orientation = 'Bottom';
393                }
394
395                if (tarteaucitron.parameters.highPrivacy && !tarteaucitron.parameters.AcceptAllCta) {
396                    html += '<div tabindex="-1" id="tarteaucitronAlertBig" class="tarteaucitronAlertBig' + orientation + '">';
397                    //html += '<div class="tarteaucitronAlertBigWrapper">';
398                    html += '   <span id="tarteaucitronDisclaimerAlert">';
399                    html += '       ' + tarteaucitron.lang.alertBigPrivacy;
400                    html += '   </span>';
401                    //html += '   <span class="tarteaucitronAlertBigBtnWrapper">';
402                    html += '   <button type="button" id="tarteaucitronPersonalize">';
403                    html += '       ' + tarteaucitron.lang.personalize;
404                    html += '   </button>';
405
406                    if (tarteaucitron.parameters.privacyUrl !== "") {
407                        html += '   <button type="button" id="tarteaucitronPrivacyUrl">';
408                        html += '       ' + tarteaucitron.lang.privacyUrl;
409                        html += '   </button>';
410                    }
411
412                    //html += '   </span>';
413                    //html += '</div>';
414                    html += '</div>';
415                } else {
416                    html += '<div tabindex="-1" id="tarteaucitronAlertBig" class="tarteaucitronAlertBig' + orientation + '">';
417                    //html += '<div class="tarteaucitronAlertBigWrapper">';
418                    html += '   <span id="tarteaucitronDisclaimerAlert">';
419
420                    if (tarteaucitron.parameters.highPrivacy) {
421                        html += '       ' + tarteaucitron.lang.alertBigPrivacy;
422                    } else {
423                        html += '       ' + tarteaucitron.lang.alertBigClick + ' ' + tarteaucitron.lang.alertBig;
424                    }
425
426                    html += '   </span>';
427                    //html += '   <span class="tarteaucitronAlertBigBtnWrapper">';
428                    html += '   <button type="button" class="tarteaucitronCTAButton tarteaucitronAllow" id="tarteaucitronPersonalize2">';
429                    html += '       <span class="tarteaucitronCheck"></span> ' + tarteaucitron.lang.acceptAll;
430                    html += '   </button>';
431
432                    html += '   <button type="button" id="tarteaucitronCloseAlert">';
433                    html += '       ' + tarteaucitron.lang.personalize;
434                    html += '   </button>';
435
436                    if (tarteaucitron.parameters.DenyAllCta) {
437                                    html += '   <button type="button" class="tarteaucitronCTAButton tarteaucitronDeny" id="tarteaucitronAllDenied2">';
438                                    html += '       <span class="tarteaucitronCross"></span> ' + tarteaucitron.lang.denyAll;
439                                    html += '   </button>';
440                                    //html += '   <br/><br/>';
441                    }
442
443                    if (tarteaucitron.parameters.privacyUrl !== "") {
444                        html += '   <button type="button" id="tarteaucitronPrivacyUrl">';
445                        html += '       ' + tarteaucitron.lang.privacyUrl;
446                        html += '   </button>';
447                    }
448
449                    //html += '   </span>';
450                    //html += '</div>';
451                    html += '</div>';
452                    html += '<div id="tarteaucitronPercentage"></div>';
453                }
454
455                if (tarteaucitron.parameters.showIcon === true) {
456                    html += '<div id="tarteaucitronIcon" class="tarteaucitronIcon' + tarteaucitron.parameters.iconPosition + '">';
457                    html += '   <button type="button" id="tarteaucitronManager">';
458                    html += '       <img src="' + (tarteaucitron.parameters.iconSrc ? tarteaucitron.parameters.iconSrc : 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAGA0lEQVRoge1a207bWBRdBtJwLYZhKDMVmlSK1LxNkPo+ZH6g8B6p5AuALwC+APoFoVLeoT8whPeRSt+CZKmZVu3AiIsRlEtCktGyjy8xzuXYhvahS0JJHJ/4rLP3XnuffcAPfGdQ7mM6jRLSAF4BxqsbewB2lRS2o35mpEQaJcwCyANIdLi1DGBNSWEzqmdHRqRRwjqAJclhtExOSUEP+/xIiDRKhhUWfL7ShTtBuJnqcw+/z4Ql0xNmMEwSSz4ku
458NIzSgpjSsqYJP/GeE185wYJroedRyiLNEpGLLzzrHSuk+83SgbxvOcyyRaDziWsRVZkSRDinpzPbwVGWIucuohsKynMS47fAQyls/BMSRmKJo3AFhG5wm2N1wF+Zs3zebbFfR0RxrXcJHQlgH+LMW616pR/WiIMEXfW3mtzXyeEGWsjKot8c4TOI98L+iKaR5PS6IUk88RLAO9F8UjrbYoYMOosNavpfmODIiwRXRR/G3ohaWVo1RU/c30jV8ab2mV8qVGzHWBOLyTLZiWs5Rolg/C3ySOi0tXP/k4aEwOwSBKPJs7Rp16ABJTe+p1xVX0It/owqqdDEMRoqd3RFxqDPh20Ig6VEPVC0i5RSCD+6wl6HlW7GksSlUMV11/GrUs5NasFLusDE9ELSVphXemtJwaT/8JyIRvxNNCfBmIiNdR04LII3DSrbe0yjqvyJF/ppptqVlt+MCLCEh/oOkPPP6N38Mb5cnQBGFsEqmXg5j3QMwoMzwGnr4HYbybBq13gZAOom/FO63zdf2qQArCsZrUN2TlJy69eSDKYV+6Q4MpP75ivHzPA53ngaBW4eGuSOt0A/lsGPmXMz0+3TFJcTfFbPfFbfnwlhON+iQhlWmA82CQ4ocQ7c6KcfL3DHuls0yT6Sx4YnLXJDCQOIRRv5yGIJBgP8Sdisj2qubpc5UGJmo+W49ifVmzL8HcpGhQPvZCUKiCliIhEN0tr2OCqHuSA8gwQ/92MkU7gxEmeVqGrTTgpxPXbUrtGWYus0I9thRIraagRQUIDf7Qn4yZhKRiFQIyhfMfUr3yblokVWSJ6k8xSnc7eNN/RjowfCYiFoDUFer1S3gW6JiJ8Nt30EMbEhU+vzSIztuRYjRLsR8IHLjlf7HZ+MrWWEXxNmbvapt4jGSqZRYSkGUetSNTPzHsui5YMQ2ajJUNks6mw4wT54Ok2ShnzzIPCUGshzawCRKy5FqvrTZe0RWzQGvw79m67XZjKmxJrLsICjtZa55gxXy+6F4sYsEtxTqhXdRTLC8ulSDaWoCLsolfN+8YUhOsJV709H7Cudr0LlVEtzqBcN+shEyThdR941OnAbF8pirKJqXyupTRTtQSReiVmXW1j7oBErB0d9xM2WEd5J9ZKYtuR4WKwwBSoORbpGrJ5ZI9lt71irJmGX1px0JYE26uNErawr2zfIcP4OHEKXm66PA3wjpCNEfpJunI4muifPjKvsFCkGjExTq63yxMJsZNMYF/J4HmDC5A3Yq36jy0ClePHVhwuu/b1HSFlEfHD5ZtD1bEK44Qu1mWys6tbWmZyPWckzlPTGiRw/XHCuk+q4Rek+mVrVL/UppwrdDEGNV2kpyuhccgc5Oxm9vWnn+19vJrVpLor0kTUrGacMplb1CfOFyTD4o9uNrHqr2Z+ZMSp1c2XcVSORnh9Q81q3k599ETgkNnjg0nGzi10K7rX+bZpHbrblPcY5A4Zxk2xcjzCvTpd9027Aa0QtouyyrKFRR6D/04DwkFGvHPXM3Qda/Jb4nPgI7hQLVM1q5HIBt2MzQNa57Z1DiiLAGa5Mi+O4Sz3Mpp6laPHO6InII3ITnX1QtI+EOX+m9ZxleOZ/j9PiuKoLi3aqXPuEoSye/Vhkm+LalbLtHhMS0R6zu7aZ3vP2jOjL7QVv4McxhcDnZIelAQibGIbULOapf3PuE1Vs9qeaOTdkVKr00gCQiw4NlBzDvf1Lxx+uP5r3Dgv5KQZRzWn+GRwz8jmDS8itUg7iB6vLuJCF5Uty4A9mVKkFR6MiJDachST/oHvHgD+B4SoUIitpF05AAAAAElFTkSuQmCC') + '" alt="' + tarteaucitron.lang.icon + '" title="' + tarteaucitron.lang.icon + '">';
459                    html += '   </button>';
460                    html += '</div>';
461                }
462
463                if (tarteaucitron.parameters.showAlertSmall === true) {
464                    html += '<div id="tarteaucitronAlertSmall" class="tarteaucitronAlertSmall' + orientation + '">';
465                    html += '   <button type="button" id="tarteaucitronManager">';
466                    html += '       ' + tarteaucitron.lang.alertSmall;
467                    html += '       <span id="tarteaucitronDot">';
468                    html += '           <span id="tarteaucitronDotGreen"></span>';
469                    html += '           <span id="tarteaucitronDotYellow"></span>';
470                    html += '           <span id="tarteaucitronDotRed"></span>';
471                    html += '       </span>';
472                    if (tarteaucitron.parameters.cookieslist === true) {
473                        html += '   </button><!-- @whitespace';
474                        html += '   --><button type="button" id="tarteaucitronCookiesNumber">0</button>';
475                        html += '   <div id="tarteaucitronCookiesListContainer">';
476                        html += '       <button type="button" id="tarteaucitronClosePanelCookie">';
477                        html += '           ' + tarteaucitron.lang.close;
478                        html += '       </button>';
479                        html += '       <div class="tarteaucitronCookiesListMain" id="tarteaucitronCookiesTitle">';
480                        html += '            <span class="tarteaucitronH2" role="heading" aria-level="2" id="tarteaucitronCookiesNumberBis">0 cookie</span>';
481                        html += '       </div>';
482                        html += '       <div id="tarteaucitronCookiesList"></div>';
483                        html += '    </div>';
484                    } else {
485                        html += '   </div>';
486                    }
487                    html += '</div>';
488                }
489
490                tarteaucitron.addInternalScript(tarteaucitron.cdn + 'advertising' + (useJSDelivrMinifiedJS ? '.min' : '') + '.js?v=' + tarteaucitron.version, '', function () {
491                    if (tarteaucitronNoAdBlocker === true || tarteaucitron.parameters.adblocker === false) {
492
493                        // create a wrapper container at the same level than tarteaucitron so we can add an aria-hidden when tarteaucitron is opened
494                        /*var wrapper = document.createElement('div');
495                        wrapper.id = "tarteaucitronContentWrapper";
496
497                        while (document.body.firstChild)
498                        {
499                            wrapper.appendChild(document.body.firstChild);
500                        }
501
502                        // Append the wrapper to the body
503                        document.body.appendChild(wrapper);*/
504
505                        div.id = 'tarteaucitronRoot';
506                        if (tarteaucitron.parameters.bodyPosition === 'top') {
507                            // Prepend tarteaucitron: #tarteaucitronRoot first-child of the body for better accessibility
508                            var bodyFirstChild = body.firstChild;
509                            body.insertBefore(div, bodyFirstChild);
510                        }
511                        else {
512                            // Append tarteaucitron: #tarteaucitronRoot last-child of the body
513                            body.appendChild(div, body);
514                        }
515                        div.innerHTML = html;
516
517                        //ie compatibility
518                        var tacRootAvailableEvent;
519                        if(typeof(Event) === 'function') {
520                            tacRootAvailableEvent = new Event("tac.root_available");
521                        }else if (typeof(document.createEvent) === 'function'){
522                            tacRootAvailableEvent = document.createEvent('Event');
523                            tacRootAvailableEvent.initEvent("tac.root_available", true, true);
524                        }
525                        //end ie compatibility
526
527                        if (typeof(window.dispatchEvent) === 'function') {window.dispatchEvent(tacRootAvailableEvent);}
528
529                        if (tarteaucitron.job !== undefined) {
530                            tarteaucitron.job = tarteaucitron.cleanArray(tarteaucitron.job);
531                            for (index = 0; index < tarteaucitron.job.length; index += 1) {
532                                tarteaucitron.addService(tarteaucitron.job[index]);
533                            }
534                        } else {
535                            tarteaucitron.job = [];
536                        }
537
538                        if (tarteaucitron.job.length === 0) {
539                            tarteaucitron.userInterface.closeAlert();
540                        }
541
542                        tarteaucitron.isAjax = true;
543
544                        tarteaucitron.job.push = function (id) {
545
546                            // ie <9 hack
547                            if (typeof tarteaucitron.job.indexOf === 'undefined') {
548                                tarteaucitron.job.indexOf = function (obj, start) {
549                                    var i,
550                                        j = this.length;
551                                    for (i = (start || 0); i < j; i += 1) {
552                                        if (this[i] === obj) { return i; }
553                                    }
554                                    return -1;
555                                };
556                            }
557
558                            if (tarteaucitron.job.indexOf(id) === -1) {
559                                Array.prototype.push.call(this, id);
560                            }
561                            tarteaucitron.launch[id] = false;
562                            tarteaucitron.addService(id);
563                        };
564
565                        if (document.location.hash === tarteaucitron.hashtag && tarteaucitron.hashtag !== '') {
566                            tarteaucitron.userInterface.openPanel();
567                        }
568
569                        tarteaucitron.cookie.number();
570                        setInterval(tarteaucitron.cookie.number, 60000);
571                    }
572                }, tarteaucitron.parameters.adblocker);
573
574                if (tarteaucitron.parameters.adblocker === true) {
575                    setTimeout(function () {
576                        if (tarteaucitronNoAdBlocker === false) {
577                            html = '<div id="tarteaucitronAlertBig" class="tarteaucitronAlertBig' + orientation + ' tarteaucitron-display-block" role="alert" aria-live="polite">';
578                            html += '   <p id="tarteaucitronDisclaimerAlert">';
579                            html += '       ' + tarteaucitron.lang.adblock + '<br/>';
580                            html += '       <strong>' + tarteaucitron.lang.adblock_call + '</strong>';
581                            html += '   </p>';
582                            html += '   <button type="button" class="tarteaucitronCTAButton" id="tarteaucitronCTAButton">';
583                            html += '       ' + tarteaucitron.lang.reload;
584                            html += '   </button>';
585                            html += '</div>';
586                            html += '<div id="tarteaucitronPremium"></div>';
587
588                            div.id = 'tarteaucitronRoot';
589                            if (tarteaucitron.parameters.bodyPosition === 'top') {
590                                // Prepend tarteaucitron: #tarteaucitronRoot first-child of the body for better accessibility
591                                var bodyFirstChild = body.firstChild;
592                                body.insertBefore(div, bodyFirstChild);
593                            }
594                            else {
595                                // Append tarteaucitron: #tarteaucitronRoot last-child of the body
596                                body.appendChild(div, body);
597                            }
598                            div.innerHTML = html;
599                        }
600                    }, 1500);
601                }
602                if(tarteaucitron.parameters.closePopup === true){
603                    setTimeout(function() {
604                        var closeElement = document.getElementById('tarteaucitronAlertBig'),
605                            closeSpan = document.createElement('span');
606                        if (closeElement) {
607                            closeSpan.textContent = 'X';
608                            closeSpan.setAttribute('id', "tarteaucitronCloseCross");
609                            closeElement.insertBefore(closeSpan, closeElement.firstElementChild);
610                        }
611                    }, 100);
612                }
613
614
615                if(tarteaucitron.parameters.groupServices === true) {
616                    var tac_group_style = document.createElement('style');
617                    tac_group_style.innerHTML = '.tarteaucitronTitle{display:none}';
618                    document.head.appendChild(tac_group_style);
619                    var cats = document.querySelectorAll('[id^="tarteaucitronServicesTitle_"]')
620                    Array.prototype.forEach.call(cats, function(item) {
621                        var cat = item.getAttribute('id').replace(/^(tarteaucitronServicesTitle_)/, "");
622                        if (cat !== "mandatory") {
623                            var html = '';
624                            html += '<li  class="tarteaucitronLine">';
625                            html += '   <div class="tarteaucitronName">';
626                            html += '       <span class="tarteaucitronH3" role="heading" aria-level="2">'+tarteaucitron.lang[cat].title+'</span>';
627                            html += '       <span>'+tarteaucitron.lang[cat].details+'</span>';
628                            html += '   <button type="button" aria-expanded="false" class="tarteaucitron-toggle-group" id="tarteaucitron-toggle-group-'+cat+'">'+tarteaucitron.lang.alertSmall+' ('+document.getElementById("tarteaucitronServices_"+cat).childElementCount+')</button>';
629                            html += '   </div>';
630                            html += '   <div class="tarteaucitronAsk" id="tarteaucitron-group-'+cat+'">';
631                            html += '       <button type="button" aria-label="' + tarteaucitron.lang.allow + ' ' + tarteaucitron.lang[cat].title + '" class="tarteaucitronAllow" id="tarteaucitron-accept-group-'+cat+'">';
vendor: 2,990 bytes, lines 632-671
632                            html += '           <span class="tarteaucitronCheck"></span> ' + tarteaucitron.lang.allow;
633                            html += '       </button> ';
634                            html += '       <button type="button" aria-label="' + tarteaucitron.lang.deny + ' ' + tarteaucitron.lang[cat].title + '" class="tarteaucitronDeny" id="tarteaucitron-reject-group-'+cat+'">';
635                            html += '           <span class="tarteaucitronCross"></span> ' + tarteaucitron.lang.deny;
636                            html += '       </button>';
637                            html += '   </div>';
638                            html += '</li>';
639                            var ul = document.createElement('ul');
640                            ul.innerHTML = html;
641                            item.insertBefore(ul, item.querySelector('#tarteaucitronServices_'+cat+''));
642                            document.querySelector('#tarteaucitronServices_' + cat).style.display = 'none';
643                            tarteaucitron.addClickEventToId("tarteaucitron-toggle-group-" + cat, function () {
644                                tarteaucitron.userInterface.toggle('tarteaucitronServices_' + cat);
645                               if (document.getElementById('tarteaucitronServices_' + cat).style.display == 'block') {
646                                    tarteaucitron.userInterface.addClass('tarteaucitronServicesTitle_' + cat, 'tarteaucitronIsExpanded');
647                                    document.getElementById('tarteaucitron-toggle-group-'+cat).setAttribute('aria-expanded', 'true');
648                                } else {
649                                    tarteaucitron.userInterface.removeClass('tarteaucitronServicesTitle_' + cat, 'tarteaucitronIsExpanded');
650                                    document.getElementById('tarteaucitron-toggle-group-'+cat).setAttribute('aria-expanded', 'false');
651                                }
652                            });
653                            tarteaucitron.addClickEventToId("tarteaucitron-accept-group-" + cat, function () {
654                                tarteaucitron.userInterface.respondAll(true, cat);
655                            });
656                            tarteaucitron.addClickEventToId("tarteaucitron-reject-group-" + cat, function () {
657                                tarteaucitron.userInterface.respondAll(false, cat);
658                            });
659                        }
660                    });
661                }
662                tarteaucitron.userInterface.color("", true);
663
664                // add a little timeout to be sure everything is accessible
665                setTimeout(function () {
666
667                    // Setup events
668                    tarteaucitron.addClickEventToId("tarteaucitronCloseCross", function () {
669                        tarteaucitron.userInterface.closeAlert();
670                    });
671                    tarteaucitron.addClickEventToId("tarteaucitronPersonalize", function () {
672                        tarteaucitron.userInterface.openPanel();
673                    });
674                    tarteaucitron.addClickEventToId("tarteaucitronPersonalize2", function () {
675                        tarteaucitron.userInterface.respondAll(true);
676                    });
677                    tarteaucitron.addClickEventToId("tarteaucitronManager", function () {
678                        tarteaucitron.userInterface.openPanel();
679                    });
680                    tarteaucitron.addClickEventToId("tarteaucitronBack", function () {
681                        tarteaucitron.userInterface.closePanel();
682                    });
683                    tarteaucitron.addClickEventToId("tarteaucitronClosePanel", function () {
684                        tarteaucitron.userInterface.closePanel();
685                    });
686                    tarteaucitron.addClickEventToId("tarteaucitronClosePanelCookie", function () {
687                        tarteaucitron.userInterface.closePanel();
688                    });
689                    tarteaucitron.addClickEventToId("tarteaucitronPrivacyUrl", function () {
690                        document.location = tarteaucitron.parameters.privacyUrl;
691                    });
692                    tarteaucitron.addClickEventToId("tarteaucitronPrivacyUrlDialog", function () {
693                        document.location = tarteaucitron.parameters.privacyUrl;
694                    });
695                    tarteaucitron.addClickEventToId("tarteaucitronCookiesNumber", function () {
696                        tarteaucitron.userInterface.toggleCookiesList();
697                    });
698                    tarteaucitron.addClickEventToId("tarteaucitronAllAllowed", function () {
699                        tarteaucitron.userInterface.respondAll(true);
700                    });
701                    tarteaucitron.addClickEventToId("tarteaucitronAllDenied", function () {
702                        tarteaucitron.userInterface.respondAll(false);
703                    });
704                    tarteaucitron.addClickEventToId("tarteaucitronAllDenied2", function () {
705                        tarteaucitron.userInterface.respondAll(false, '', true);
706                        if (tarteaucitron.reloadThePage === true) {
707                            window.location.reload();
708                        }
709                    });
710                    tarteaucitron.addClickEventToId("tarteaucitronCloseAlert", function () {
711                        tarteaucitron.userInterface.openPanel();
712                    });
713                    tarteaucitron.addClickEventToId("tarteaucitronCTAButton", function () {
714                        location.reload();
715                    });
716                    var toggleBtns = document.getElementsByClassName("catToggleBtn"), i;
717                    for (i = 0; i < toggleBtns.length; i++) {
718                        toggleBtns[i].dataset.index = i;
719                        tarteaucitron.addClickEventToElement(toggleBtns[i], function () {
720                            tarteaucitron.userInterface.toggle('tarteaucitronDetails' + cat[this.dataset.index], 'tarteaucitronInfoBox');
721                            return false;
722                        });
723                    }
724
725                    var allowBtns = document.getElementsByClassName("tarteaucitronAllow");
726                    for (i = 0; i < allowBtns.length; i++) {
727                        tarteaucitron.addClickEventToElement(allowBtns[i], function () {
728                            tarteaucitron.userInterface.respond(this, true);
729                        });
730                    }
731                    var denyBtns = document.getElementsByClassName("tarteaucitronDeny");
732                    for (i = 0; i < denyBtns.length; i++) {
733                        tarteaucitron.addClickEventToElement(denyBtns[i], function () {
734                            tarteaucitron.userInterface.respond(this, false);
735                        });
736                    }
737                    if(tarteaucitron.events.load) {
738                        tarteaucitron.events.load();
739                    }
740                }, 500);
741
742            });
743        });
744    },
745    "addService": function (serviceId) {
746        "use strict";
747        var html = '',
748            s = tarteaucitron.services,
749            service = s[serviceId],
750            cookie = tarteaucitron.cookie.read(),
751            hostname = document.location.hostname,
752            hostRef = document.referrer.split('/')[2],
753            isNavigating = (hostRef === hostname && window.location.href !== tarteaucitron.parameters.privacyUrl),
754            isAutostart = (!service.needConsent),
755            isWaiting = (cookie.indexOf(service.key + '=wait') >= 0),
756            isDenied = (cookie.indexOf(service.key + '=false') >= 0),
757            isAllowed = ((cookie.indexOf(service.key + '=true') >= 0) || (!service.needConsent && cookie.indexOf(service.key + '=false') < 0)),
758            isResponded = (cookie.indexOf(service.key + '=false') >= 0 || cookie.indexOf(service.key + '=true') >= 0),
759            isDNTRequested = (navigator.doNotTrack === "1" || navigator.doNotTrack === "yes" || navigator.msDoNotTrack === "1" || window.doNotTrack === "1"),
760            currentStatus = (isAllowed) ? tarteaucitron.lang.allowed : tarteaucitron.lang.disallowed;
761
762        if (tarteaucitron.added[service.key] !== true) {
763            tarteaucitron.added[service.key] = true;
764
765            html += '<li id="' + service.key + 'Line" class="tarteaucitronLine">';
766            html += '   <div class="tarteaucitronName">';
767            html += '       <span class="tarteaucitronH3" role="heading" aria-level="3">' + service.name + '</span>';
768            html += '       <span class="tacCurrentStatus" id="tacCurrentStatus' + service.key + '"></span>';
769            html += '       <span id="tacCL' + service.key + '" class="tarteaucitronListCookies"></span><br/>';
770            if (tarteaucitron.parameters.moreInfoLink == true) {
771
772                var link = 'https://tarteaucitron.io/service/' + service.key + '/';
773                if (service.readmoreLink !== undefined && service.readmoreLink !== '') {
774                    link = service.readmoreLink;
775                }
776                if (tarteaucitron.parameters.readmoreLink !== undefined && tarteaucitron.parameters.readmoreLink !== '') {
777                    link = tarteaucitron.parameters.readmoreLink;
778                }
779                html += '       <a href="' + link + '" target="_blank" rel="noreferrer noopener nofollow" title="'+ tarteaucitron.lang.cookieDetail + ' ' + service.name + ' ' + tarteaucitron.lang.ourSite + ' ' + tarteaucitron.lang.newWindow +'" 
779class="tarteaucitronReadmoreInfo">';
780                html += '           ' + tarteaucitron.lang.more;
781                html += '       </a>';
782                html += '       <span class="tarteaucitronReadmoreSeparator"> - </span>';
783                html += '       <a href="' + service.uri + '" target="_blank" rel="noreferrer noopener" title="' + tarteaucitron.lang.source + ' ' + service.name + ' ' + tarteaucitron.lang.newWindow + '" class="tarteaucitronReadmoreOfficial">';
784                html += '           ' + tarteaucitron.lang.source;
785                html += '       </a>';
786            }
787
788            html += '   </div>';
789            html += '   <div class="tarteaucitronAsk">';
790            html += '       <button type="button" aria-label="' + tarteaucitron.lang.allow + ' ' + service.name + '" id="' + service.key + 'Allowed" class="tarteaucitronAllow">';
791            html += '           <span class="tarteaucitronCheck"></span> ' + tarteaucitron.lang.allow;
792            html += '       </button> ';
793            html += '       <button type="button" aria-label="' + tarteaucitron.lang.deny + ' ' + service.name + '" id="' + service.key + 'Denied" class="tarteaucitronDeny">';
794            html += '           <span class="tarteaucitronCross"></span> ' + tarteaucitron.lang.deny;
795            html += '       </button>';
796            html += '   </div>';
797            html += '</li>';
798
799            tarteaucitron.userInterface.css('tarteaucitronServicesTitle_' + service.type, 'display', 'block');
800
801            if (document.getElementById('tarteaucitronServices_' + service.type) !== null) {
802                document.getElementById('tarteaucitronServices_' + service.type).innerHTML += html;
803            }
804
805            tarteaucitron.userInterface.css('tarteaucitronNoServicesTitle', 'display', 'none');
806
807            tarteaucitron.userInterface.order(service.type);
808
809            tarteaucitron.addClickEventToId(service.key + 'Allowed', function () {
810                tarteaucitron.userInterface.respond(this, true);
811            });
812
813            tarteaucitron.addClickEventToId(service.key + 'Denied', function () {
814                tarteaucitron.userInterface.respond(this, false);
815            });
816        }
817
818        tarteaucitron.pro('!' + service.key + '=' + isAllowed);
819
820        // allow by default for non EU
821        if (isResponded === false && tarteaucitron.user.bypass === true) {
822            isAllowed = true;
823            tarteaucitron.cookie.create(service.key, true);
824        }
825
826        if ((!isResponded && (isAutostart || (isNavigating && isWaiting)) && !tarteaucitron.highPrivacy) || isAllowed) {
827            if (!isAllowed || (!service.needConsent && cookie.indexOf(service.key + '=false') < 0)) {
828                tarteaucitron.cookie.create(service.key, true);
829            }
830            if (tarteaucitron.launch[service.key] !== true) {
831                tarteaucitron.launch[service.key] = true;
832                if (typeof tarteaucitronMagic === 'undefined' || tarteaucitronMagic.indexOf("_" + service.key + "_") < 0) { service.js(); }
833                tarteaucitron.sendEvent(service.key + '_loaded');
834            }
835            tarteaucitron.state[service.key] = true;
836            tarteaucitron.userInterface.color(service.key, true);
837        } else if (isDenied) {
838            if (typeof service.fallback === 'function') {
839                if (typeof tarteaucitronMagic === 'undefined' || tarteaucitronMagic.indexOf("_" + service.key + "_") < 0) { service.fallback(); }
840            }
841            tarteaucitron.state[service.key] = false;
842            tarteaucitron.userInterface.color(service.key, false);
843        } else if (!isResponded && isDNTRequested && tarteaucitron.handleBrowserDNTRequest) {
844            tarteaucitron.cookie.create(service.key, 'false');
845            if (typeof service.fallback === 'function') {
846                if (typeof tarteaucitronMagic === 'undefined' || tarteaucitronMagic.indexOf("_" + service.key + "_") < 0) { service.fallback(); }
847            }
848            tarteaucitron.state[service.key] = false;
849            tarteaucitron.userInterface.color(service.key, false);
850        } else if (!isResponded) {
851            tarteaucitron.cookie.create(service.key, 'wait');
852            if (typeof service.fallback === 'function') {
853                if (typeof tarteaucitronMagic === 'undefined' || tarteaucitronMagic.indexOf("_" + service.key + "_") < 0) { service.fallback(); }
854            }
855            tarteaucitron.userInterface.color(service.key, 'wait');
856            tarteaucitron.userInterface.openAlert();
857        }
858
859        tarteaucitron.cookie.checkCount(service.key);
860        tarteaucitron.sendEvent(service.key + '_added')
861    },
862    "sendEvent" : function(event_key) {
863        if(event_key !== undefined) {
864            //ie compatibility
865            var send_event_item;
866            if(typeof(Event) === 'function') {
867                send_event_item = new Event(event_key);
868            }else if (typeof(document.createEvent) === 'function'){
869                send_event_item = document.createEvent('Event');
870                send_event_item.initEvent(event_key, true, true);
871            }
872            //end ie compatibility
873
874            document.dispatchEvent(send_event_item);
875        }
876    },
877    "cleanArray": function cleanArray(arr) {
878        "use strict";
879        var i,
880            len = arr.length,
881            out = [],
882            obj = {},
883            s = tarteaucitron.services;
884
885        for (i = 0; i < len; i += 1) {
886            if (!obj[arr[i]]) {
887                obj[arr[i]] = {};
888                if (tarteaucitron.services[arr[i]] !== undefined) {
889                    out.push(arr[i]);
890                }
891            }
892        }
893
894        out = out.sort(function (a, b) {
895            if (s[a].type + s[a].key > s[b].type + s[b].key) { return 1; }
896            if (s[a].type + s[a].key < s[b].type + s[b].key) { return -1; }
897            return 0;
898        });
899
900        return out;
901    },
902    "userInterface": {
903        "css": function (id, property, value) {
904            "use strict";
905            if (document.getElementById(id) !== null) {
906
907                if (property == "display" && value == "none" && (id == "tarteaucitron" || id == "tarteaucitronBack" || id == "tarteaucitronAlertBig")) {
908                    document.getElementById(id).style["opacity"] = "0";
909
910                    setTimeout(function() {document.getElementById(id).style[property] = value;}, 200);
911                } else {
912
913                    document.getElementById(id).style[property] = value;
914
915                    if (property == "display" && value == "block" && (id == "tarteaucitron" || id == "tarteaucitronAlertBig")) {
916                        document.getElementById(id).style["opacity"] = "0";
917                        setTimeout(function() {document.getElementById(id).style["opacity"] = "1";}, 1);
918                    }
919
920                    if (property == "display" && value == "block" && id == "tarteaucitronBack") {
921                        document.getElementById(id).style["opacity"] = "0";
922                        setTimeout(function() {document.getElementById(id).style["opacity"] = "0.7";}, 1);
923                    }
924                }
925            }
926        },
927        "addClass": function (id, className) {
928            "use strict";
929            if (document.getElementById(id) !== null && document.getElementById(id).classList !== undefined) {
930                document.getElementById(id).classList.add(className);
931            }
932        },
933        "removeClass": function (id, className) {
934            "use strict";
935            if (document.getElementById(id) !== null && document.getElementById(id).classList !== undefined) {
936                document.getElementById(id).classList.remove(className);
937            }
938        },
939        "respondAll": function (status, type, allowSafeAnalytics) {
940            "use strict";
941            var s = tarteaucitron.services,
942                service,
943                key,
944                index = 0;
945
946            for (index = 0; index < tarteaucitron.job.length; index += 1) {
947
948                if (typeof type !== 'undefined' && type !== '' && s[tarteaucitron.job[index]].type !== type) {
949                    continue;
950                }
951
952                if (allowSafeAnalytics && typeof s[tarteaucitron.job[index]].safeanalytic !== "undefined" && s[tarteaucitron.job[index]].safeanalytic === true) {
953                    continue;
954                }
955
956                service = s[tarteaucitron.job[index]];
957                key = service.key;
958                if (tarteaucitron.state[key] !== status) {
959                    if (status === false && tarteaucitron.launch[key] === true) {
960                        tarteaucitron.reloadThePage = true;
961                    }
962                    if (tarteaucitron.launch[key] !== true && status === true) {
963
964                        tarteaucitron.pro('!' + key + '=engage');
965
966                        tarteaucitron.launch[key] = true;
967                        if (typeof tarteaucitronMagic === 'undefined' || tarteaucitronMagic.indexOf("_" + key + "_") < 0) { tarteaucitron.services[key].js(); }
968                        tarteaucitron.sendEvent(key + '_loaded');
969                    }
970                    var itemStatusElem = document.getElementById('tacCurrentStatus'+key);
971                    if(status == true){
972                        itemStatusElem.innerHTML = tarteaucitron.lang.allowed + " - ";
973                    }else{
974                        itemStatusElem.innerHTML = tarteaucitron.lang.disallowed + " - ";
975                    }
976                    tarteaucitron.state[key] = status;
977                    tarteaucitron.cookie.create(key, status);
978                    tarteaucitron.userInterface.color(key, status);
979                }
980            }
981        },
982        "respond": function (el, status) {
983            "use strict";
984            if (el.id === '') {
985                return;
986            }
987            var key = el.id.replace(new RegExp("(Eng[0-9]+|Allow|Deni)ed", "g"), '');
988
vendor: 19,109 bytes, lines 989-1391
989            if (key.substring(0, 13) === 'tarteaucitron' || key === '') {return;}
990
991            // return if same state
992            if (tarteaucitron.state[key] === status) {
993                return;
994            }
995
996            if (status === false && tarteaucitron.launch[key] === true) {
997                tarteaucitron.reloadThePage = true;
998            }
999
1000            // if not already launched... launch the service
1001            if (status === true) {
1002                if (tarteaucitron.launch[key] !== true) {
1003
1004                    tarteaucitron.pro('!' + key + '=engage');
1005
1006                    tarteaucitron.launch[key] = true;
1007                    tarteaucitron.sendEvent(key + '_loaded');
1008                    if (typeof tarteaucitronMagic === 'undefined' || tarteaucitronMagic.indexOf("_" + key + "_") < 0) { tarteaucitron.services[key].js(); }
1009                }
1010            }
1011            var itemStatusElem = document.getElementById('tacCurrentStatus'+key);
1012            if(status == true){
1013                itemStatusElem.innerHTML = tarteaucitron.lang.allowed + " - ";
1014            }else{
1015                itemStatusElem.innerHTML = tarteaucitron.lang.disallowed + " - ";
1016            }
1017            tarteaucitron.state[key] = status;
1018            tarteaucitron.cookie.create(key, status);
1019            tarteaucitron.userInterface.color(key, status);
1020        },
1021        "color": function (key, status) {
1022            "use strict";
1023            var c = 'tarteaucitron',
1024                nbDenied = 0,
1025                nbPending = 0,
1026                nbAllowed = 0,
1027                sum = tarteaucitron.job.length,
1028                index,
1029                s = tarteaucitron.services;
1030
1031            if (key !== "") {
1032
1033            if (status === true) {
1034                tarteaucitron.userInterface.addClass(key + 'Line', 'tarteaucitronIsAllowed');
1035                tarteaucitron.userInterface.removeClass(key + 'Line', 'tarteaucitronIsDenied');
1036                document.getElementById(key + 'Allowed').setAttribute('aria-pressed', 'true');
1037                document.getElementById(key + 'Denied').setAttribute('aria-pressed', 'false');
1038            } else if (status === false) {
1039                tarteaucitron.userInterface.removeClass(key + 'Line', 'tarteaucitronIsAllowed');
1040                tarteaucitron.userInterface.addClass(key + 'Line', 'tarteaucitronIsDenied');
1041                document.getElementById(key + 'Allowed').setAttribute('aria-pressed', 'false');
1042                document.getElementById(key + 'Denied').setAttribute('aria-pressed', 'true');
1043            } else {
1044                document.getElementById(key + 'Allowed').setAttribute('aria-pressed', 'false');
1045                document.getElementById(key + 'Denied').setAttribute('aria-pressed', 'false');
1046            }
1047
1048            // check if all services are allowed
1049            var sumToRemove = 0;
1050            for (index = 0; index < sum; index += 1) {
1051
1052                if (typeof s[tarteaucitron.job[index]].safeanalytic !== "undefined" && s[tarteaucitron.job[index]].safeanalytic === true) {
1053                    sumToRemove += 1;
1054                    continue;
1055                }
1056
1057                if (tarteaucitron.state[tarteaucitron.job[index]] === false) {
1058                    nbDenied += 1;
1059                } else if (tarteaucitron.state[tarteaucitron.job[index]] === undefined) {
1060                    nbPending += 1;
1061                } else if (tarteaucitron.state[tarteaucitron.job[index]] === true) {
1062                    nbAllowed += 1;
1063                }
1064            }
1065            sum -= sumToRemove;
1066
1067            tarteaucitron.userInterface.css(c + 'DotGreen', 'width', ((100 / sum) * nbAllowed) + '%');
1068            tarteaucitron.userInterface.css(c + 'DotYellow', 'width', ((100 / sum) * nbPending) + '%');
1069            tarteaucitron.userInterface.css(c + 'DotRed', 'width', ((100 / sum) * nbDenied) + '%');
1070
1071            if (nbDenied === 0 && nbPending === 0) {
1072                tarteaucitron.userInterface.removeClass(c + 'AllDenied', c + 'IsSelected');
1073                tarteaucitron.userInterface.addClass(c + 'AllAllowed', c + 'IsSelected');
1074
1075                tarteaucitron.userInterface.addClass(c + 'MainLineOffset', c + 'IsAllowed');
1076                tarteaucitron.userInterface.removeClass(c + 'MainLineOffset', c + 'IsDenied');
1077
1078                document.getElementById(c + 'AllDenied').setAttribute('aria-pressed', 'false');
1079                document.getElementById(c + 'AllAllowed').setAttribute('aria-pressed', 'true');
1080
1081            } else if (nbAllowed === 0 && nbPending === 0) {
1082                tarteaucitron.userInterface.removeClass(c + 'AllAllowed', c + 'IsSelected');
1083                tarteaucitron.userInterface.addClass(c + 'AllDenied', c + 'IsSelected');
1084
1085                tarteaucitron.userInterface.removeClass(c + 'MainLineOffset', c + 'IsAllowed');
1086                tarteaucitron.userInterface.addClass(c + 'MainLineOffset', c + 'IsDenied');
1087
1088                document.getElementById(c + 'AllDenied').setAttribute('aria-pressed', 'true');
1089                document.getElementById(c + 'AllAllowed').setAttribute('aria-pressed', 'false');
1090
1091            } else {
1092                tarteaucitron.userInterface.removeClass(c + 'AllAllowed', c + 'IsSelected');
1093                tarteaucitron.userInterface.removeClass(c + 'AllDenied', c + 'IsSelected');
1094
1095                tarteaucitron.userInterface.removeClass(c + 'MainLineOffset', c + 'IsAllowed');
1096                tarteaucitron.userInterface.removeClass(c + 'MainLineOffset', c + 'IsDenied');
1097
1098                document.getElementById(c + 'AllDenied').setAttribute('aria-pressed', 'false');
1099                document.getElementById(c + 'AllAllowed').setAttribute('aria-pressed', 'false');
1100            }
1101
1102            // close the alert if all service have been reviewed
1103            if (nbPending === 0) {
1104                tarteaucitron.userInterface.closeAlert();
1105            }
1106
1107            if (tarteaucitron.services[key].cookies.length > 0 && status === false) {
1108                tarteaucitron.cookie.purge(tarteaucitron.services[key].cookies);
1109            }
1110
1111            if (status === true) {
1112                if (document.getElementById('tacCL' + key) !== null) {
1113                    document.getElementById('tacCL' + key).innerHTML = '...';
1114                }
1115                setTimeout(function () {
1116                    tarteaucitron.cookie.checkCount(key);
1117                }, 2500);
1118            } else {
1119                tarteaucitron.cookie.checkCount(key);
1120            }
1121
1122            }
1123
1124	    // groups
1125            var cats = document.querySelectorAll('[id^="tarteaucitronServicesTitle_"]')
1126            Array.prototype.forEach.call(cats, function(item) {
1127                var cat = item.getAttribute('id').replace(/^(tarteaucitronServicesTitle_)/, ""),
1128                    total = document.getElementById("tarteaucitronServices_"+cat).childElementCount;
1129                var doc = document.getElementById("tarteaucitronServices_"+cat),
1130                    groupdenied = 0,
1131                    groupallowed = 0;
1132                for (var ii = 0; ii < doc.children.length; ii++) {
1133                    if (doc.children[ii].className == "tarteaucitronLine tarteaucitronIsDenied") {
1134                        groupdenied++;
1135                    }
1136                    if (doc.children[ii].className == "tarteaucitronLine tarteaucitronIsAllowed") {
1137                        groupallowed++;
1138                    }
1139                }
1140                if (total === groupallowed) {
1141                    tarteaucitron.userInterface.removeClass('tarteaucitron-group-'+cat, 'tarteaucitronIsDenied');
1142                    tarteaucitron.userInterface.addClass('tarteaucitron-group-'+cat, 'tarteaucitronIsAllowed');
1143
1144                    if (document.getElementById('tarteaucitron-reject-group-'+cat)) {
1145                        document.getElementById('tarteaucitron-reject-group-'+cat).setAttribute('aria-pressed', 'false');
1146                        document.getElementById('tarteaucitron-accept-group-'+cat).setAttribute('aria-pressed', 'true');
1147                    }
1148                }
1149                if (total === groupdenied) {
1150                    tarteaucitron.userInterface.addClass('tarteaucitron-group-'+cat, 'tarteaucitronIsDenied');
1151                    tarteaucitron.userInterface.removeClass('tarteaucitron-group-'+cat, 'tarteaucitronIsAllowed');
1152
1153                    if (document.getElementById('tarteaucitron-reject-group-'+cat)) {
1154                        document.getElementById('tarteaucitron-reject-group-'+cat).setAttribute('aria-pressed', 'true');
1155                        document.getElementById('tarteaucitron-accept-group-'+cat).setAttribute('aria-pressed', 'false');
1156                    }
1157                }
1158                if (total !== groupdenied && total !== groupallowed) {
1159                    tarteaucitron.userInterface.removeClass('tarteaucitron-group-'+cat, 'tarteaucitronIsDenied');
1160                    tarteaucitron.userInterface.removeClass('tarteaucitron-group-'+cat, 'tarteaucitronIsAllowed');
1161
1162                    if (document.getElementById('tarteaucitron-reject-group-'+cat)) {
1163                        document.getElementById('tarteaucitron-reject-group-'+cat).setAttribute('aria-pressed', 'false');
1164                        document.getElementById('tarteaucitron-accept-group-'+cat).setAttribute('aria-pressed', 'false');
1165                    }
1166                }
1167                groupdenied = 0;
1168                groupallowed = 0;
1169            });
1170
1171        },
1172        "openPanel": function () {
1173            "use strict";
1174
1175            tarteaucitron.userInterface.css('tarteaucitron', 'display', 'block');
1176            tarteaucitron.userInterface.css('tarteaucitronBack', 'display', 'block');
1177            tarteaucitron.userInterface.css('tarteaucitronCookiesListContainer', 'display', 'none');
1178
1179            document.getElementById('tarteaucitronClosePanel').focus();
1180            if (document.getElementsByTagName('body')[0].classList !== undefined) {
1181                document.getElementsByTagName('body')[0].classList.add('tarteaucitron-modal-open');
1182            }
1183            tarteaucitron.userInterface.focusTrap();
1184            tarteaucitron.userInterface.jsSizing('main');
1185
1186            //ie compatibility
1187            var tacOpenPanelEvent;
1188            if(typeof(Event) === 'function') {
1189                tacOpenPanelEvent = new Event("tac.open_panel");
1190            }else if (typeof(document.createEvent) === 'function'){
1191                tacOpenPanelEvent = document.createEvent('Event');
1192                tacOpenPanelEvent.initEvent("tac.open_panel", true, true);
1193            }
1194            //end ie compatibility
1195
1196            if (typeof(window.dispatchEvent) === 'function') {window.dispatchEvent(tacOpenPanelEvent);}
1197        },
1198        "closePanel": function () {
1199            "use strict";
1200
1201            if (document.location.hash === tarteaucitron.hashtag) {
1202                if (window.history) {
1203                    window.history.replaceState('', document.title, window.location.pathname + window.location.search);
1204                } else {
1205                    document.location.hash = '';
1206                }
1207            }
1208            tarteaucitron.userInterface.css('tarteaucitron', 'display', 'none');
1209            tarteaucitron.userInterface.css('tarteaucitronCookiesListContainer', 'display', 'none');
1210
1211            tarteaucitron.fallback(['tarteaucitronInfoBox'], function (elem) {
1212                elem.style.display = 'none';
1213            }, true);
1214
1215            if (tarteaucitron.reloadThePage === true) {
1216                window.location.reload();
1217            } else {
1218                tarteaucitron.userInterface.css('tarteaucitronBack', 'display', 'none');
1219            }
1220            if (document.getElementById('tarteaucitronCloseAlert') !== null) {
1221                document.getElementById('tarteaucitronCloseAlert').focus();
1222            }
1223            if (document.getElementsByTagName('body')[0].classList !== undefined) {
1224                document.getElementsByTagName('body')[0].classList.remove('tarteaucitron-modal-open');
1225            }
1226
1227            //ie compatibility
1228            var tacClosePanelEvent;
1229            if(typeof(Event) === 'function') {
1230                tacClosePanelEvent = new Event("tac.close_panel");
1231            }else if (typeof(document.createEvent) === 'function'){
1232                tacClosePanelEvent = document.createEvent('Event');
1233                tacClosePanelEvent.initEvent("tac.close_panel", true, true);
1234            }
1235            //end ie compatibility
1236
1237            if (typeof(window.dispatchEvent) === 'function') {window.dispatchEvent(tacClosePanelEvent);}
1238        },
1239        "focusTrap": function() {
1240            "use strict";
1241
1242            var focusableEls,
1243                firstFocusableEl,
1244                lastFocusableEl,
1245                filtered;
1246
1247            focusableEls = document.getElementById('tarteaucitron').querySelectorAll('a[href], button');
1248            filtered = [];
1249
1250            // get only visible items
1251            for (var i = 0, max = focusableEls.length; i < max; i++) {
1252                if (focusableEls[i].offsetHeight > 0) {
1253                   filtered.push(focusableEls[i]);
1254                }
1255            }
1256
1257            firstFocusableEl = filtered[0];
1258            lastFocusableEl = filtered[filtered.length - 1];
1259
1260            //loop focus inside tarteaucitron
1261            document.getElementById('tarteaucitron').addEventListener("keydown", function (evt) {
1262
1263                if ( evt.key === 'Tab' || evt.keyCode === 9 ) {
1264
1265                    if ( evt.shiftKey ) /* shift + tab */ {
1266                        if (document.activeElement === firstFocusableEl) {
1267                            lastFocusableEl.focus();
1268                            evt.preventDefault();
1269                        }
1270                    } else /* tab */ {
1271                        if (document.activeElement === lastFocusableEl) {
1272                            firstFocusableEl.focus();
1273                            evt.preventDefault();
1274                        }
1275                    }
1276                }
1277            })
1278        },
1279        "openAlert": function () {
1280            "use strict";
1281            var c = 'tarteaucitron';
1282            tarteaucitron.userInterface.css(c + 'Percentage', 'display', 'block');
1283            tarteaucitron.userInterface.css(c + 'AlertSmall', 'display', 'none');
1284            tarteaucitron.userInterface.css(c + 'Icon', 'display', 'none');
1285            tarteaucitron.userInterface.css(c + 'AlertBig',   'display', 'block');
1286            tarteaucitron.userInterface.addClass(c + 'Root',   'tarteaucitronBeforeVisible');
1287
1288            //ie compatibility
1289            var tacOpenAlertEvent;
1290            if(typeof(Event) === 'function') {
1291                tacOpenAlertEvent = new Event("tac.open_alert");
1292            }else if (typeof(document.createEvent) === 'function'){
1293                tacOpenAlertEvent = document.createEvent('Event');
1294                tacOpenAlertEvent.initEvent("tac.open_alert", true, true);
1295            }
1296            //end ie compatibility
1297
1298            if (document.getElementById('tarteaucitronAlertBig') !== null) {
1299                document.getElementById('tarteaucitronAlertBig').focus();
1300            }
1301
1302            if (typeof(window.dispatchEvent) === 'function') {window.dispatchEvent(tacOpenAlertEvent);}
1303        },
1304        "closeAlert": function () {
1305            "use strict";
1306            var c = 'tarteaucitron';
1307            tarteaucitron.userInterface.css(c + 'Percentage', 'display', 'none');
1308            tarteaucitron.userInterface.css(c + 'AlertSmall', 'display', 'block');
1309            tarteaucitron.userInterface.css(c + 'Icon', 'display', 'block');
1310            tarteaucitron.userInterface.css(c + 'AlertBig',   'display', 'none');
1311            tarteaucitron.userInterface.removeClass(c + 'Root',   'tarteaucitronBeforeVisible');
1312            tarteaucitron.userInterface.jsSizing('box');
1313
1314            //ie compatibility
1315            var tacCloseAlertEvent;
1316            if(typeof(Event) === 'function') {
1317                tacCloseAlertEvent = new Event("tac.close_alert");
1318            }else if (typeof(document.createEvent) === 'function'){
1319                tacCloseAlertEvent = document.createEvent('Event');
1320                tacCloseAlertEvent.initEvent("tac.close_alert", true, true);
1321            }
1322            //end ie compatibility
1323
1324            if (typeof(window.dispatchEvent) === 'function') {window.dispatchEvent(tacCloseAlertEvent);}
1325        },
1326        "toggleCookiesList": function () {
1327            "use strict";
1328            var div = document.getElementById('tarteaucitronCookiesListContainer');
1329
1330            if (div === null) {
1331                return;
1332            }
1333
1334            if (div.style.display !== 'block') {
1335                tarteaucitron.cookie.number();
1336                div.style.display = 'block';
1337                tarteaucitron.userInterface.jsSizing('cookie');
1338                tarteaucitron.userInterface.css('tarteaucitron', 'display', 'none');
1339                tarteaucitron.userInterface.css('tarteaucitronBack', 'display', 'block');
1340                tarteaucitron.fallback(['tarteaucitronInfoBox'], function (elem) {
1341                    elem.style.display = 'none';
1342                }, true);
1343            } else {
1344                div.style.display = 'none';
1345                tarteaucitron.userInterface.css('tarteaucitron', 'display', 'none');
1346                tarteaucitron.userInterface.css('tarteaucitronBack', 'display', 'none');
1347            }
1348        },
1349        "toggle": function (id, closeClass) {
1350            "use strict";
1351            var div = document.getElementById(id);
1352
1353            if (div === null) {
1354                return;
1355            }
1356
1357            if (closeClass !== undefined) {
1358                tarteaucitron.fallback([closeClass], function (elem) {
1359                    if (elem.id !== id) {
1360                        elem.style.display = 'none';
1361                    }
1362                }, true);
1363            }
1364
1365            if (div.style.display !== 'block') {
1366                div.style.display = 'block';
1367            } else {
1368                div.style.display = 'none';
1369            }
1370        },
1371        "order": function (id) {
1372            "use strict";
1373            var main = document.getElementById('tarteaucitronServices_' + id),
1374                allDivs,
1375                store = [],
1376                i;
1377
1378            if (main === null) {
1379                return;
1380            }
1381
1382            allDivs = main.childNodes;
1383
1384            if (typeof Array.prototype.map === 'function' && typeof Enumerable === 'undefined') {
1385                Array.prototype.map.call(main.children, Object).sort(function (a, b) {
1386                //var mainChildren = Array.from(main.children);
1387                //mainChildren.sort(function (a, b) {
1388                    if (tarteaucitron.services[a.id.replace(/Line/g, '')].name > tarteaucitron.services[b.id.replace(/Line/g, '')].name) { return 1; }
1389                    if (tarteaucitron.services[a.id.replace(/Line/g, '')].name < tarteaucitron.services[b.id.replace(/Line/g, '')].name) { return -1; }
1390                    return 0;
1391                }
1391).forEach(function (element) {
1392                    main.appendChild(element);
1393                });
1394            }
1395        },
1396        "jsSizing": function (type) {
1397            "use strict";
1398            var scrollbarMarginRight = 10,
1399                scrollbarWidthParent,
1400                scrollbarWidthChild,
1401                servicesHeight,
1402                e = window,
1403                a = 'inner',
1404                windowInnerHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight,
1405                mainTop,
1406                mainHeight,
1407                closeButtonHeight,
1408                headerHeight,
1409                cookiesListHeight,
1410                cookiesCloseHeight,
1411                cookiesTitleHeight,
1412                paddingBox,
1413                alertSmallHeight,
1414                cookiesNumberHeight;
1415
1416            if (type === 'box') {
1417                if (document.getElementById('tarteaucitronAlertSmall') !== null && document.getElementById('tarteaucitronCookiesNumber') !== null) {
1418
1419                    // reset
1420                    tarteaucitron.userInterface.css('tarteaucitronCookiesNumber', 'padding', '0px 10px');
1421
1422                    // calculate
1423                    alertSmallHeight = document.getElementById('tarteaucitronAlertSmall').offsetHeight;
1424                    cookiesNumberHeight = document.getElementById('tarteaucitronCookiesNumber').offsetHeight;
1425                    paddingBox = (alertSmallHeight - cookiesNumberHeight) / 2;
1426
1427                    // apply
1428                    tarteaucitron.userInterface.css('tarteaucitronCookiesNumber', 'padding', paddingBox + 'px 10px');
1429                }
1430            } else if (type === 'main') {
1431
1432                // get the real window width for media query
1433                if (window.innerWidth === undefined) {
1434                    a = 'client';
1435                    e = document.documentElement || document.body;
1436                }
1437
1438                // height of the services list container
1439                if (document.getElementById('tarteaucitron') !== null && document.getElementById('tarteaucitronClosePanel') !== null && document.getElementById('tarteaucitronMainLineOffset') !== null) {
1440
1441                    // reset
1442                    tarteaucitron.userInterface.css('tarteaucitronServices', 'height', 'auto');
1443
1444                    // calculate
1445                    mainHeight = document.getElementById('tarteaucitron').offsetHeight;
1446                    closeButtonHeight = document.getElementById('tarteaucitronClosePanel').offsetHeight;
1447
1448                    // apply
1449                    servicesHeight = (mainHeight - closeButtonHeight + 2);
1450                    tarteaucitron.userInterface.css('tarteaucitronServices', 'height', servicesHeight + 'px');
1451                    tarteaucitron.userInterface.css('tarteaucitronServices', 'overflow-x', 'auto');
1452                }
1453
1454                // align the main allow/deny button depending on scrollbar width
1455                if (document.getElementById('tarteaucitronServices') !== null && document.getElementById('tarteaucitronScrollbarChild') !== null) {
1456
1457                    // media query
1458                    if (e[a + 'Width'] <= 479) {
1459                        //tarteaucitron.userInterface.css('tarteaucitronScrollbarAdjust', 'marginLeft', '11px');
1460                    } else if (e[a + 'Width'] <= 767) {
1461                        scrollbarMarginRight = 12;
1462                    }
1463
1464                    scrollbarWidthParent = document.getElementById('tarteaucitronServices').offsetWidth;
1465                    scrollbarWidthChild = document.getElementById('tarteaucitronScrollbarChild').offsetWidth;
1466                    //tarteaucitron.userInterface.css('tarteaucitronScrollbarAdjust', 'marginRight', ((scrollbarWidthParent - scrollbarWidthChild) + scrollbarMarginRight) + 'px');
1467                }
1468
1469                // center the main panel
1470                if (document.getElementById('tarteaucitron') !== null) {
1471
1472                    // media query
1473                    if (e[a + 'Width'] <= 767) {
1474                        mainTop = 0;
1475                    } else {
1476                        mainTop = ((windowInnerHeight - document.getElementById('tarteaucitron').offsetHeight) / 2) - 21;
1477                    }
1478
1479                    if (document.getElementById('tarteaucitronMainLineOffset') !== null) {
1480                        if (document.getElementById('tarteaucitron').offsetHeight < (windowInnerHeight / 2)) {
1481                            mainTop -= document.getElementById('tarteaucitronMainLineOffset').offsetHeight;
1482                        }
1483                    }
1484
1485                    // correct
1486                    if (mainTop < 0) {
1487                        mainTop = 0;
1488                    }
1489
1490                    // apply
1491                    tarteaucitron.userInterface.css('tarteaucitron', 'top', mainTop + 'px');
1492                }
1493
1494
1495            } else if (type === 'cookie') {
1496
1497                // put cookies list at bottom
1498                if (document.getElementById('tarteaucitronAlertSmall') !== null) {
1499                    tarteaucitron.userInterface.css('tarteaucitronCookiesListContainer', 'bottom', (document.getElementById('tarteaucitronAlertSmall').offsetHeight) + 'px');
1500                }
1501
1502                // height of cookies list
1503                if (document.getElementById('tarteaucitronCookiesListContainer') !== null) {
1504
1505                    // reset
1506                    tarteaucitron.userInterface.css('tarteaucitronCookiesList', 'height', 'auto');
1507
1508                    // calculate
1509                    cookiesListHeight = document.getElementById('tarteaucitronCookiesListContainer').offsetHeight;
1510                    cookiesCloseHeight = document.getElementById('tarteaucitronClosePanelCookie').offsetHeight;
1511                    cookiesTitleHeight = document.getElementById('tarteaucitronCookiesTitle').offsetHeight;
1512
1513                    // apply
1514                    tarteaucitron.userInterface.css('tarteaucitronCookiesList', 'height', (cookie
vendor: 9,899 bytes, lines 1514-1717
1514sListHeight - cookiesCloseHeight - cookiesTitleHeight - 2) + 'px');
1515                }
1516            }
1517        }
1518    },
1519    "cookie": {
1520        "owner": {},
1521        "create": function (key, status) {
1522            "use strict";
1523
1524            if (tarteaucitronForceExpire !== '') {
1525                // The number of day(s)/hour(s) can't be higher than 1 year
1526                if ((tarteaucitronExpireInDay && tarteaucitronForceExpire < 365) || (!tarteaucitronExpireInDay && tarteaucitronForceExpire < 8760)) {
1527                    if (tarteaucitronExpireInDay) {
1528                        // Multiplication to tranform the number of days to milliseconds
1529                        timeExpire = tarteaucitronForceExpire * 86400000;
1530                    } else {
1531                        // Multiplication to tranform the number of hours to milliseconds
1532                        timeExpire = tarteaucitronForceExpire * 3600000;
1533                    }
1534                }
1535            }
1536
1537            var d = new Date(),
1538                time = d.getTime(),
1539                expireTime = time + timeExpire, // 365 days
1540                regex = new RegExp("!" + key + "=(wait|true|false)", "g"),
1541                cookie = tarteaucitron.cookie.read().replace(regex, ""),
1542                value = tarteaucitron.parameters.cookieName + '=' + cookie + '!' + key + '=' + status,
1543                domain = (tarteaucitron.parameters.cookieDomain !== undefined && tarteaucitron.parameters.cookieDomain !== '') ? '; domain=' + tarteaucitron.parameters.cookieDomain : '',
1544                secure = location.protocol === 'https:' ? '; Secure' : '';
1545
1546            d.setTime(expireTime);
1547            document.cookie = value + '; expires=' + d.toGMTString() + '; path=/' + domain + secure + '; samesite=lax';
1548        },
1549        "read": function () {
1550            "use strict";
1551            var nameEQ = tarteaucitron.parameters.cookieName + "=",
1552                ca = document.cookie.split(';'),
1553                i,
1554                c;
1555
1556            for (i = 0; i < ca.length; i += 1) {
1557                c = ca[i];
1558                while (c.charAt(0) === ' ') {
1559                    c = c.substring(1, c.length);
1560                }
1561                if (c.indexOf(nameEQ) === 0) {
1562                    return c.substring(nameEQ.length, c.length);
1563                }
1564            }
1565            return '';
1566        },
1567        "purge": function (arr) {
1568            "use strict";
1569            var i;
1570
1571            for (i = 0; i < arr.length; i += 1) {
1572
1573                var rgxpCookie = new RegExp("^(.*;)?\\s*" + arr[i] + "\\s*=\\s*[^;]+(.*)?$");
1574                if (document.cookie.match(rgxpCookie)) {
1575                    document.cookie = arr[i] + '=; expires=Thu, 01 Jan 2000 00:00:00 GMT; path=/;';
1576                    document.cookie = arr[i] + '=; expires=Thu, 01 Jan 2000 00:00:00 GMT; path=/; domain=.' + location.hostname + ';';
1577                    document.cookie = arr[i] + '=; expires=Thu, 01 Jan 2000 00:00:00 GMT; path=/; domain=.' + location.hostname.split('.').slice(-2).join('.') + ';';
1578                }
1579            }
1580        },
1581        "checkCount": function (key) {
1582            "use strict";
1583            var arr = tarteaucitron.services[key].cookies,
1584                nb = arr.length,
1585                nbCurrent = 0,
1586                html = '',
1587                i,
1588                status = document.cookie.indexOf(key + '=true');
1589
1590            if (status >= 0 && nb === 0) {
1591                html += tarteaucitron.lang.useNoCookie;
1592            } else if (status >= 0) {
1593                for (i = 0; i < nb; i += 1) {
1594                    if (document.cookie.indexOf(arr[i] + '=') !== -1) {
1595                        nbCurrent += 1;
1596                        if (tarteaucitron.cookie.owner[arr[i]] === undefined) {
1597                            tarteaucitron.cookie.owner[arr[i]] = [];
1598                        }
1599                        if (tarteaucitron.cookie.crossIndexOf(tarteaucitron.cookie.owner[arr[i]], tarteaucitron.services[key].name) === false) {
1600                            tarteaucitron.cookie.owner[arr[i]].push(tarteaucitron.services[key].name);
1601                        }
1602                    }
1603                }
1604
1605                if (nbCurrent > 0) {
1606                    html += tarteaucitron.lang.useCookieCurrent + ' ' + nbCurrent + ' cookie';
1607                    if (nbCurrent > 1) {
1608                        html += 's';
1609                    }
1610                    html += '.';
1611                } else {
1612                    html += tarteaucitron.lang.useNoCookie;
1613                }
1614            } else if (nb === 0) {
1615                html = tarteaucitron.lang.noCookie;
1616            } else {
1617                html += tarteaucitron.lang.useCookie + ' ' + nb + ' cookie';
1618                if (nb > 1) {
1619                    html += 's';
1620                }
1621                html += '.';
1622            }
1623
1624            if (document.getElementById('tacCL' + key) !== null) {
1625                document.getElementById('tacCL' + key).innerHTML = html;
1626            }
1627        },
1628        "crossIndexOf": function (arr, match) {
1629            "use strict";
1630            var i;
1631            for (i = 0; i < arr.length; i += 1) {
1632                if (arr[i] === match) {
1633                    return true;
1634                }
1635            }
1636            return false;
1637        },
1638        "number": function () {
1639            "use strict";
1640            var cookies = document.cookie.split(';'),
1641                nb = (document.cookie !== '') ? cookies.length : 0,
1642                html = '',
1643                i,
1644                name,
1645                namea,
1646                nameb,
1647                c,
1648                d,
1649                s = (nb > 1) ? 's' : '',
1650                savedname,
1651                regex = /^https?\:\/\/([^\/?#]+)(?:[\/?#]|$)/i,
1652                regexedDomain = (tarteaucitron.cdn.match(regex) !== null) ? tarteaucitron.cdn.match(regex)[1] : tarteaucitron.cdn,
1653                host = (tarteaucitron.domain !== undefined) ? tarteaucitron.domain : regexedDomain;
1654
1655            cookies = cookies.sort(function (a, b) {
1656                namea = a.split('=', 1).toString().replace(/ /g, '');
1657                nameb = b.split('=', 1).toString().replace(/ /g, '');
1658                c = (tarteaucitron.cookie.owner[namea] !== undefined) ? tarteaucitron.cookie.owner[namea] : '0';
1659                d = (tarteaucitron.cookie.owner[nameb] !== undefined) ? tarteaucitron.cookie.owner[nameb] : '0';
1660                if (c + a > d + b) { return 1; }
1661                if (c + a < d + b) { return -1; }
1662                return 0;
1663            });
1664
1665            if (document.cookie !== '') {
1666                for (i = 0; i < nb; i += 1) {
1667                    name = cookies[i].split('=', 1).toString().replace(/ /g, '');
1668                    if (tarteaucitron.cookie.owner[name] !== undefined && tarteaucitron.cookie.owner[name].join(' // ') !== savedname) {
1669                        savedname = tarteaucitron.cookie.owner[name].join(' // ');
1670                        html += '<div class="tarteaucitronHidden">';
1671                        html += '     <span class="tarteaucitronTitle tarteaucitronH3" role="heading" aria-level="3">';
1672                        html += '        ' + tarteaucitron.cookie.owner[name].join(' // ');
1673                        html += '    </span>';
1674                        html += '</div><ul class="cookie-list">';
1675                    } else if (tarteaucitron.cookie.owner[name] === undefined && host !== savedname) {
1676                        savedname = host;
1677                        html += '<div class="tarteaucitronHidden">';
1678                        html += '     <span class="tarteaucitronTitle tarteaucitronH3" role="heading" aria-level="3">';
1679                        html += '        ' + host;
1680                        html += '    </span>';
1681                        html += '</div><ul class="cookie-list">';
1682                    }
1683                    html += '<li class="tarteaucitronCookiesListMain">';
1684                    html += '    <div class="tarteaucitronCookiesListLeft"><button type="button" class="purgeBtn" data-cookie="' + tarteaucitron.fixSelfXSS(cookies[i].split('=', 1)) + '"><strong>&times;</strong></button> <strong>' + tarteaucitron.fixSelfXSS(name) + '</strong>';
1685                    html += '    </div>';
1686                    html += '    <div class="tarteaucitronCookiesListRight">' + tarteaucitron.fixSelfXSS(cookies[i].split('=').slice(1).join('=')) + '</div>';
1687                    html += '</li>';
1688                }
1689                html += '</ul>';
1690            } else {
1691                html += '<div class="tarteaucitronCookiesListMain">';
1692                html += '    <div class="tarteaucitronCookiesListLeft"><strong>-</strong></div>';
1693                html += '    <div class="tarteaucitronCookiesListRight"></div>';
1694                html += '</div>';
1695            }
1696
1697            html += '<div class="tarteaucitronHidden tarteaucitron-spacer-20"></div>';
1698
1699            if (document.getElementById('tarteaucitronCookiesList') !== null) {
1700                document.getElementById('tarteaucitronCookiesList').innerHTML = html;
1701            }
1702
1703            if (document.getElementById('tarteaucitronCookiesNumber') !== null) {
1704                document.getElementById('tarteaucitronCookiesNumber').innerHTML = nb;
1705            }
1706
1707            if (document.getElementById('tarteaucitronCookiesNumberBis') !== null) {
1708                document.getElementById('tarteaucitronCookiesNumberBis').innerHTML = nb + ' cookie' + s;
1709            }
1710
1711            var purgeBtns = document.getElementsByClassName("purgeBtn");
1712            for (i = 0; i < purgeBtns.length; i++) {
1713                tarteaucitron.addClickEventToElement(purgeBtns[i], function () {
1714                    tarteaucitron.cookie.purge([this.dataset.cookie]);
1715                    tarteaucitron.cookie.number();
1716                    tarteaucitron.userInterface.jsSizing('cookie');
1717                    return false;
1718                });
1719            }
1720
1721            for (i = 0; i < tarteaucitron.job.length; i += 1) {
1722                tarteaucitron.cookie.checkCount(tarteaucitron.job[i]);
1723            }
1724        }
1725    },
1726    "fixSelfXSS": function(html) {
1727        return html.toString().replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;");
1728    },
1729    "getLanguage": function () {
1730        "use strict";
1731
1732        var availableLanguages = 'bg,ca,cn,cs,da,de,el,en,es,fi,fr,hu,it,ja,lt,lv,nl,no,oc,pl,pt,ro,ru,se,sk,sv,tr,vi,zh',
1733            defaultLanguage = 'en';
1734
1735        if (tarteaucitronForceLanguage !== '') {
1736            if (availableLanguages.indexOf(tarteaucitronForceLanguage) !== -1) {
1737                return tarteaucitronForceLanguage;
1738            }
1739        }
1740
1741        if (!navigator) { return 'en'; }
1742
1743        var lang = navigator.language || navigator.browserLanguage ||
1744                navigator.systemLanguage || navigator.userLang || null,
1745            userLanguage = lang ? lang.substr(0, 2) : null;
1746
1747        if (availableLanguages.indexOf(userLanguage) === -1) {
1748            return defaultLanguage;
1749        }
1750        return userLanguage;
1751    },
1752    "getLocale": function () {
1753        "use strict";
1754        if (!navigator) { return 'en_US'; }
1755
1756        var lang = navigator.language || navigator.browserLanguage ||
1757                navigator.systemLanguage || navigator.userLang || null,
1758            userLanguage = lang ? lang.substr(0, 2) : null;
1759
1760        if (userLanguage === 'fr') {
1761            return 'fr_FR';
1762        } else if (userLanguage === 'en') {
1763            return 'en_US';
1764        } else if (userLanguage === 'de') {
1765            return 'de_DE';
1766        } else if (userLanguage === 'es') {
1767            return 'es_ES';
1768        } else if (userLanguage === 'it') {
1769            return 'it_IT';
1770        } else if (userLanguage === 'pt') {
1771            return 'pt_PT';
1772        } else if (userLanguage === 'nl') {
1773            return 'nl_NL';
1774        } else if (userLanguage === 'el') {
1775            return 'el_EL';
1776        } else {
1777            return 'en_US';
1778        }
1779    },
1780    "addScript": function (url, id, callback, execute, attrName, attrVal, internal) {
1781        "use strict";
1782        var script,
1783            done = false;
1784
1785        if (execute === false) {
1786            if (typeof callback === 'function') {
1787                callback();
1788            }
1789        } else {
1790            script = document.createElement('script');
1791            script.id = (id !== undefined) ? id : '';
1792            script.async = true;
1793            script.src = url;
1794
1795            if (attrName !== undefined && attrVal !== undefined) {
1796                script.setAttribute(attrName, attrVal);
1797            }
1798
1799            if (typeof callback === 'function') {
1800                if ( !tarteaucitron.parameters.useExternalJs || !internal ) {
1801                    script.onreadystatechange = script.onload = function () {
1802                        var state = script.readyState;
1803                        if (!done && (!state || /loaded|complete/.test(state))) {
1804                            done = true;
1805                            callback();
1806                        }
1807                    };
1808                } else {
1809                    callback();
1810                }
1811            }
1812
1813            if ( !tarteaucitron.parameters.useExternalJs || !internal ) {
1814                document.getElementsByTagName('head')[0].appendChild(script);
1815            }
1816        }
1817    },
1818    "addInternalScript": function (url, id, callback, execute, attrName, attrVal) {
1819        tarteaucitron.addScript(url, id, callback, execute, attrName, attrVal, true);
1820    },
1821    "makeAsync": {
1822        "antiGhost": 0,
1823        "buffer": '',
1824        "init": function (url, id) {
1825            "use strict";
1826            var savedWrite = document.write,
1827                savedWriteln = document.writeln;
1828
1829            document.write = function (content) {
1830                tarteaucitron.makeAsync.buffer += content;
1831            };
1832            document.writeln = function (content) {
1833                tarteaucitron.makeAsync.buffer += content.concat("\n");
1834            };
1835
1836            setTimeout(function () {
1837                document.write = savedWrite;
1838                document.writeln = savedWriteln;
1839            }, 20000);
1840
1841            tarteaucitron.makeAsync.getAndParse(url, id);
1842        },
1843        "getAndParse": function (url, id) {
1844            "use strict";
1845            if (tarteaucitron.makeAsync.antiGhost > 9) {
1846                tarteaucitron.makeAsync.antiGhost = 0;
1847                return;
1848            }
1849            tarteaucitron.makeAsync.antiGhost += 1;
1850            tarteaucitron.addInternalScript(url, '', function () {
1851                if (document.getElementById(id) !== null) {
1852                    document.getElementById(id).innerHTML += "<span class='tarteaucitron-display-none'>&nbsp;</span>" + tarteaucitron.makeAsync.buffer;
1853                    tarteaucitron.makeAsync.buffer = '';
1854                    tarteaucitron.makeAsync.execJS(id);
1855                }
1856            });
1857        },
1858        "execJS": function (id) {
1859            /* not strict because third party scripts may have errors */
1860            var i,
1861                scripts,
1862                childId,
1863                type;
1864
1865            if (document.getElementById(id) === null) {
1866                return;
1867            }
1868
1869            scripts = document.getElementById(id).getElementsByTagName('script');
1870            for (i = 0; i < scripts.length; i += 1) {
1871                type = (scripts[i].getAttribute('type') !== null) ? scripts[i].getAttribute('type') : '';
1872                if (type === '') {
1873                    type = (scripts[i].getAttribute('language') !== null) ? scripts[i].getAttribute('language') : '';
1874                }
1875                if (scripts[i].getAttribute('src') !== null && scripts[i].getAttribute('src') !== '') {
1876                    childId = id + Math.floor(Math.random() * 99999999999);
1877                    document.getElementById(id).innerHTML += '<div id="' + childId + '"></div>';
1878                    tarteaucitron.makeAsync.getAndParse(scripts[i].getAttribute('src'), childId);
1879                } else if (type.indexOf('javascript') !== -1 || type === '') {
1880                    eval(scripts[i].innerHTML);
1881                }
1882            }
1883        }
1884    },
1885    "fallback": function (matchClass, content, noInner) {
1886        "use strict";
1887        var elems = document.getElementsByTagName('*'),
1888            i,
1889            index = 0;
1890
1891        for (i in elems) {
1892            if (elems[i] !== undefined) {
1893                for (index = 0; index < matchClass.length; index += 1) {
1894                    if ((' ' + elems[i].className + ' ')
1895                            .indexOf(' ' + matchClass[index] + ' ') > -1) {
1896                        if (typeof content === 'function') {
1897                            if (noInner === true) {
1898                                content(elems[i]);
1899                            } else {
1900                                elems[i].innerHTML = content(elems[i]);
1901                            }
1902                        } else {
1903                            elems[i].innerHTML = content;
1904                        }
1905                    }
1906                }
1907            }
1908        }
1909    },
1910    "engage": function (id) {
1911        "use strict";
1912        var html = '',
1913            r = Math.floor(Math.random() * 100000),
1914            engage = tarteaucitron.services[id].name + ' ' + tarteaucitron.lang.fallback;
1915
1916        if (tarteaucitron.lang['engage-' + id] !== undefined) {
1917            engage = tarteaucitron.lang['engage-' + id];
1918        }
1919
1920        html += '<div class="tac_activate tac_activate_' + id + '">';
1921        html += '   <div class="tac_float">';
1922        html += '      ' + engage;
1923        html += '      <button type="button" class="tarteaucitronAllow" id="Eng' + r + 'ed' + id + '">';
1924        html += '          <span class="tarteaucitronCheck"></span> ' + tarteaucitron.lang.allow;
1925        html += '       </button>';
1926        html += '   </div>';
1927        html += '</div>';
1928
1929        return html;
1930    },
1931    "extend": function (a, b) {
1932        "use strict";
1933        var prop;
1934        for (prop in b) {
1935            if (b.hasOwnProperty(prop)) {
1936                a[prop] = b[prop];
1937            }
1938        }
1939    },
1940    "proTemp": '',
1941    "proTimer": function () {
1942        "use strict";
1943        setTimeout(tarteaucitron.proPing, 500);
1944    },
1945    "pro": function (list) {
1946        "use strict";
1947        tarteaucitron.proTemp += list;
1948        clearTimeout(tarteaucitron.proTimer);
1949        tarteaucitron.proTimer = setTimeout(tarteaucitron.proPing, 500);
1950    },
1951    "proPing": function () {
1952        "use strict";
1953        if (tarteaucitron.uuid !== '' && tarteaucitron.uuid !== undefined && tarteaucitron.proTemp !== '' && tarteaucitronStatsEnabled) {
1954            var div = document.getElementById('tarteaucitronPremium'),
1955                timestamp = new Date().getTime(),
1956                url = 'https://tarteaucitron.io/log/?';
1957
1958            if (div === null) {
1959                return;
1960            }
1961
1962            url += 'account=' + tarteaucitron.uuid + '&';
1963            url += 'domain=' + tarteaucitron.domain + '&';
1964            url += 'status=' + encodeURIComponent(tarteaucitron.proTemp) + '&';
1965            url += '_time=' + timestamp;
1966
1967            div.innerHTML = '<img src="' + url + '" class="tarteaucitron-display-none" alt="" />';
1968
1969            tarteaucitron.proTemp = '';
1970        }
1971
1972        tarteaucitron.cookie.number();
1973    },
1974    "AddOrUpdate" : function(source, custom){
1975        /**
1976         Utility function to Add or update the fields of obj1 with the ones in obj2
1977         */
1978        for(var key in custom){
1979            if(custom[key] instanceof Object){
1980                source[key] = tarteaucitron.AddOrUpdate(source[key], custom[key]);
1981            }else{
1982                source[key] = custom[key];
1983            }
1984        }
1985        return source;
1986    },
1987    "getElemWidth": function(elem) {
1988        return elem.getAttribute('width') || elem.clientWidth;
1989    },
1990    "getElemHeight": function(elem) {
1991        return elem.getAttribute('height') || elem.clientHeight;
1992    },
1993    "addClickEventToId": function (elemId, func) {
1994        tarteaucitron.addClickEventToElement(document.getElementById(elemId), func);
1995    },
1996    "addClickEventToElement": function (e, func) {
1997        if (e) {
1998            if (e.addEventListener) {
1999                e.addEventListener("click", func);
2000            } else {
2001                e.attachEvent("onclick", func);
2002            }
2003        }
2004    },
2005    "triggerJobsAfterAjaxCall": function() {
2006        tarteaucitron.job.forEach(function(e) { tarteaucitron.job.push(e) });
2007        var i;
2008        var allowBtns = document.getElementsByClassName("tarteaucitronAllow");
2009        for (i = 0; i < allowBtns.length; i++) {
2010            tarteaucitron.addClickEventToElement(allowBtns[i], function () {
2011                tarteaucitron.userInterface.respond(this, true);
2012            });
2013        }
2014        var denyBtns = document.getElementsByClassName("tarteaucitronDeny");
2015        for (i = 0; i < denyBtns.length; i++) {
2016            tarteaucitron.addClickEventToElement(denyBtns[i], function () {
2017                tarteaucitron.userInterface.respond(this, false);
2018            });
2019        }
2020    }
2021};
2022;
2023/*global tarteaucitron, ga, Shareaholic, stLight, clicky, top, google, Typekit, FB, ferankReady, IN, stButtons, twttr, PCWidget*/
2024/*jslint regexp: true, nomen: true*/
2025
2026// generic iframe
2027tarteaucitron.services.iframe = {
2028    "key": "iframe",
2029    "type": "other",
2030    "name": "Web content",
2031    "uri": "",
2032    "needConsent": true,
2033    "cookies": [],
2034    "js": function () {
2035        "use strict";
2036        tarteaucitron.fallback(['tac_iframe'], function (x) {
2037            var frame_title = tarteaucitron.fixSelfXSS(x.getAttribute("title")),
2038                width = x.getAttribute("width"),
2039                height = x.getAttribute("height"),
2040                allowfullscreen = x.getAttribute("allowfullscreen"),
2041                url = x.getAttribute("data-url");
2042
2043            return '<iframe title="' + frame_title + '" src="' + url + '" width="' + width + '" height="' + height + '" scrolling="no" allowtransparency' + (allowfullscreen == '0' ? '' : ' webkitallowfullscreen mozallowfullscreen allowfullscreen') + '></iframe>';
2044        });
2045    },
2046    "fallback": function () {
2047        "use strict";
2048        var id = 'iframe';
2049        tarteaucitron.fallback(['tac_iframe'], function (elem) {
2050            elem.style.width = elem.getAttribute('width') + 'px';
2051            elem.style.height = elem.getAttribute('height') + 'px';
2052            return tarteaucitron.engage(id);
2053        });
2054    }
2055};
2056
2057
2058// elfsight
2059tarteaucitron.services.elfsight = {
2060    "key": "elfsight",
2061    "type": "support",
2062    "name": "Elfsight",
2063    "uri": "https://elfsight.com/privacy-policy/",
2064    "needConsent": true,
2065    "cookies": ['__cfduid', '_p_hfp_client_id', 'session_id'],
2066    "js": function () {
2067        "use strict";
2068
2069        tarteaucitron.addScript('https://apps.elfsight.com/p/platform.js');
2070    }
2071};
2072
2073// plezi
2074tarteaucitron.services.plezi = {
2075    "key": "plezi",
2076    "type": "analytic",
2077    "name": "Plezi",
2078    "uri": "https://www.plezi.co/fr/mentions-legales/",
2079    "needConsent": true,
2080    "cookies": [],
2081    "js": function () {
2082        "use strict";
2083
2084        if (tarteaucitron.user.pleziTenant === undefined || tarteaucitron.user.pleziTw === undefined) {
2085            return;
2086        }
2087
2088        tarteaucitron.addScript('https://app.plezi.co/scripts/ossleads_analytics.js?tenant=' + tarteaucitron.user.pleziTenant + '&tw=' + tarteaucitron.user.pleziTw);
2089    }
2090};
2091
2092
2093// smartsupp
2094tarteaucitron.services.smartsupp = {
2095    "key": "smartsupp",
2096    "type": "support",
2097    "name": "Smartsupp",
2098    "uri": "https://www.smartsupp.com/help/privacy/",
2099    "needConsent": true,
2100    "cookies": ['ssupp.vid', 'ssupp.visits', 'AWSALB', 'AWSALBCORS'],
2101    "js": function () {
2102        "use strict";
2103
2104        if (tarteaucitron.user.smartsuppKey === undefined) {
2105            return;
2106        }
2107
2108        window._smartsupp = window._smartsupp || {};
2109        window._smartsupp.key = tarteaucitron.user.smartsuppKey;
2110        window.smartsupp = function() {
2111            window.smartsupp._.push(arguments)
2112        };
2113        window.smartsupp._ = [];
2114
2115        tarteaucitron.addScript('https://www.smartsuppchat.com/loader.js');
2116    }
2117};
2118
2119
2120
2121// sharpspring
2122tarteaucitron.services.sharpspring = {
2123    "key": "sharpspring",
2124    "type": "analytic",
2125    "name": "SharpSpring",
2126    "uri": "https://sharpspring.com/legal/sharpspring-cookie-policy/",
2127    "needConsent": true,
2128    "cookies": ['koitk', '__ss', '__ss_tk', '__ss_referrer'],
2129    "js": function () {
2130        "use strict";
2131
2132        if (tarteaucitron.user.ssId === undefined || tarteaucitron.user.ssAccount === undefined) {
2133            return;
2134        }
2135
2136        window._ss = window._ss || [];
2137        window._ss.push(['_setDomain', 'https://' + tarteaucitron.user.ssId + '.marketingautomation.services/net']);
2138        window._ss.push(['_setAccount', tarteaucitron.user.ssAccount]);
2139        window._ss.push(['_trackPageView']);
2140
2141        window._pa = window._pa || {};
2142
2143        tarteaucitron.addScript('https://' + tarteaucitron.user.ssId + '.marketingautomation.services/client/ss.js');
2144    }
2145};
2146
2147// pardot
2148tarteaucitron.services.pardot = {
2149    "key": "pardot",
2150    "type": "analytic",
2151    "name": "Pardot",
2152    "uri": "https://www.salesforce.com/company/privacy/full_privacy/",
2153    "needConsent": true,
2154    "cookies": ['visitor_id'],
2155    "js": function () {
2156        "use strict";
2157        if (tarteaucitron.user.piAId === undefined || tarteaucitron.user.piCId === undefined) {
2158            return;
2159        }
2160
2161        window.piAId = tarteaucitron.user.piAId;
2162        window.piCId = tarteaucitron.user.piCId;
2163        window.piHostname = 'pi.pardot.com';
2164
2165        tarteaucitron.addScript('https://pi.pardot.com/pd.js');
2166    }
2167};
2168
2169// Open Web Analytics
2170tarteaucitron.services.openwebanalytics = {
2171    "key": "openwebanalytics",
2172    "type": "analytic",
2173    "name": "Open Web Analytics",
2174    "uri": "",
2175    "needConsent": true,
2176    "cookies": [],
2177    "js": function () {
2178        "use strict";
2179
2180        if (tarteaucitron.user.openwebanalyticsId === undefined || tarteaucitron.user.openwebanalyticsHost === undefined) {
2181            return;
2182        }
2183
2184        window.owa_baseUrl = tarteaucitron.user.openwebanalyticsHost;
2185        window.owa_cmds = window.owa_cmds || [];
2186        window.owa_cmds.push(['setSiteId', tarteaucitron.user.openwebanalyticsId]);
2187        window.owa_cmds.push(['trackPageView']);
2188        window.owa_cmds.push(['trackClicks']);
2189
2190        tarteaucitron.addScript(window.owa_baseUrl + 'modules/base/js/owa.tracker-combined-min.js');
2191    }
2192};
2193
2194// xandr universal pixel
2195// https://docs.xandr.com/bundle/invest_invest-standard/page/topics/universal-pixel-overview.html
2196tarteaucitron.services.xandr = {
2197    "key": "xandr",
2198    "type": "ads",
2199    "name": "Xandr (Universal)",
2200    "uri": "https://www.xandr.com/privacy/cookie-policy/",
2201    "needConsent": true,
2202    "cookies": ['uuid2', 'uids', 'sess', 'icu', 'anj', 'usersync'],
2203    "js": function () {
2204        "use strict";
2205        if (tarteaucitron.user.xandrId === undefined) {
2206            return;
2207        }
2208
2209        if (!window.pixie) {
2210            var n = window.pixie = function(e, i, a) {
2211                n.actionQueue.push({
2212                    action: e,
2213                    actionValue: i,
2214                    params: a
2215                })
2216            };
2217            n.actionQueue = [];
2218        }
2219
2220        tarteaucitron.addScript('https://acdn.adnxs.com/dmp/up/pixie.js', '', function() {
2221            window.pixie('init', tarteaucitron.user.xandrId);
2222            window.pixie('event', 'PageView');
2223        });
2224    }
2225};
2226
2227// xandr segment
2228// https://docs.xandr.com/bundle/invest_invest-standard/page/topics/segment-pixels-advanced.html
2229tarteaucitron.services.xandrsegment = {
2230    "key": "xandrsegment",
2231    "type": "ads",
2232    "name": "Xandr (Segment)",
2233    "uri": "https://www.xandr.com/privacy/cookie-policy/",
2234    "needConsent": true,
2235    "cookies": ['uuid2', 'uids', 'sess', 'icu', 'anj', 'usersync'],
2236    "js": function () {
2237        "use strict";
2238        var uniqIds = [],
2239            i,
2240            uri;
2241
2242        tarteaucitron.fallback(['xandrsegment-canvas'], function (x) {
2243            var uniqId = '_' + Math.random().toString(36).substr(2, 9);
2244            uniqIds.push(uniqId);
2245            return '<div id="' + uniqId + '" xandrsegmentAdd="' + x.getAttribute('xandrsegmentAdd') + '" xandrsegmentAddCode="' + x.getAttribute('xandrsegmentAddCode')  + '" xandrsegmentRemove="' + x.getAttribute('xandrsegmentRemove') + '" xandrsegmentRemoveCode="' + x.getAttribute('xandrsegmentRemoveCode') + '" xandrsegmentMember="' + x.getAttribute('xandrsegmentMember') + '" xandrsegmentRedir="' + x.getAttribute('xandrsegmentRedir') + '" xandrsegmentValue="' + x.getAttribute('xandrsegmentValue') + '" xandrsegmentOther="' + x.getAttribute('xandrsegmentOther') + '"></div>';
2246        });
2247
2248        for (i = 0; i < uniqIds.length; i += 1) {
2249            uri = '//ib.adnxs.com/seg?t=2&';
2250            uri += 'add=' + document.getElementById(uniqIds[i]).getAttribute('xandrsegmentAdd') + '&';
2251            uri += 'add_code=' + document.getElementById(uniqIds[i]).getAttribute('xandrsegmentAddCode') + '&';
2252            uri += 'remove=' + document.getElementById(uniqIds[i]).getAttribute('xandrsegmentRemove') + '&';
2253            uri += 'remove_code=' + document.getElementById(uniqIds[i]).getAttribute('xandrsegmentRemoveCode') + '&';
2254            uri += 'member=' + document.getElementById(uniqIds[i]).getAttribute('xandrsegmentMember') + '&';
2255            uri += 'redir=' + document.getElementById(uniqIds[i]).getAttribute('xandrsegmentRedir') + '&';
2256            uri += 'value=' + document.getElementById(uniqIds[i]).getAttribute('xandrsegmentValue')  + '&';
2257            uri += 'other=' + document.getElementById(uniqIds[i]).getAttribute('xandrsegmentOther');
2258
2259            document.getElementById(uniqIds[i]).innerHTML = '<img src=\'' + uri + '\' width=\'1\' height=\'1\' />';
2260        }
2261    },
2262    "fallback": function () {
2263        "use strict";
2264        var id = 'xandrsegment';
2265        tarteaucitron.fallback(['xandrsegment-canvas'], tarteaucitron.engage(id));
2266    }
2267};
2268
2269// xandr conversion
2270// https://docs.xandr.com/bundle/invest_invest-standard/page/topics/working-with-conversion-pixels.html
2271tarteaucitron.services.xandrconversion = {
2272    "key": "xandrconversion",
2273    "type": "ads",
2274    "name": "Xandr (Conversion)",
2275    "uri": "https://www.xandr.com/privacy/cookie-policy/",
2276    "needConsent": true,
2277    "cookies": ['uuid2', 'uids', 'sess', 'icu', 'anj', 'usersync'],
2278    "js": function () {
2279        "use strict";
2280        var uniqIds = [],
2281            i,
2282            uri;
2283
2284        tarteaucitron.fallback(['xandrconversion-canvas'], function (x) {
2285            var uniqId = '_' + Math.random().toString(36).substr(2, 9);
2286            uniqIds.push(uniqId);
2287            return '<div id="' + uniqId + '" xandrconversionId="' + x.getAttribute('xandrconversionId') + '" xandrconversionSeg="' + x.getAttribute('xandrconversionSeg') + '" xandrconversionOrderId="' + x.getAttribute('xandrconversionOrderId') + '" xandrconversionValue="' + x.getAttribute('xandrconversionValue') + '" xandrconversionRedir="' + x.getAttribute('xandrconversionRedir') + '" xandrconversionOther="' + x.getAttribute('xandrconversionOther') + '"></div>';
2288        });
2289
2290        for (i = 0; i < uniqIds.length; i += 1) {
2291            uri = '//ib.adnxs.com/px?t=2&';
2292            uri += 'id=' + document.getElementById(uniqIds[i]).getAttribute('xandrconversionId') + '&';
2293            uri += 'seg=' + document.getElementById(uniqIds[i]).getAttribute('xandrconversionSeg') + '&';
2294            uri += 'order_id=' + document.getElementById(uniqIds[i]).getAttribute('xandrconversionOrderId') + '&';
2295            uri += 'value=' + document.getElementById(uniqIds[i]).getAttribute('xandrconversionValue') + '&';
2296            uri += 'redir=' + document.getElementById(uniqIds[i]).getAttribute('xandrconversionRedir') + '&';
2297            uri += 'other=' + document.getElementById(uniqIds[i]).getAttribute('xandrconversionOther');
2298
2299            document.getElementById(uniqIds[i]).innerHTML = '<img src=\'' + uri + '\' width=\'1\' height=\'1\' />';
2300        }
2301    },
2302    "fallback": function () {
2303        "use strict";
2304        var id = 'xandrconversion';
2305        tarteaucitron.fallback(['xandrconversion-canvas'], tarteaucitron.engage(id));
2306    }
2307};
2308
2309// helloasso
2310tarteaucitron.services.helloasso = {
2311    "key": "helloasso",
2312    "type": "api",
2313    "name": "HelloAsso",
2314    "uri": "https://www.helloasso.com/confidentialite",
2315    "needConsent": true,
2316    "cookies": [],
2317    "js": function () {
2318        "use strict";
2319        tarteaucitron.fallback(['tac_helloasso'], function (x) {
2320            var frame_title = tarteaucitron.fixSelfXSS(x.getAttribute("title") || 'HelloAsso iframe'),
2321                width = x.getAttribute("width"),
2322                height = x.getAttribute("height"),
2323                url = x.getAttribute("data-url"),
2324                allowfullscreen = x.getAttribute("allowfullscreen");
2325
2326            return '<iframe title="' + frame_title + '" id="haWidget" src="' + url + '" width="' + width + '" height="' + height + '" scrolling="auto" allowtransparency ' + (allowfullscreen == '0' ? '' : ' webkitallowfullscreen mozallowfullscreen allowfullscreen') + '></iframe>';
2327        });
2328    },
2329    "fallback": function () {
2330        "use strict";
2331        var id = 'helloasso';
2332        tarteaucitron.fallback(['tac_helloasso'], function (elem) {
2333            elem.style.width = elem.getAttribute('width') + 'px';
2334            elem.style.height = elem.getAttribute('height') + 'px';
2335            return tarteaucitron.engage(id);
2336        });
2337    }
2338};
2339
2340// podcloud
2341tarteaucitron.services.podcloud = {
2342    "key": "podcloud",
2343    "type": "video",
2344    "name": "podCloud",
2345    "uri": "https://podcloud.fr/privacy",
2346    "needConsent": true,
2347    "cookies": [],
2348    "js": function () {
2349        "use strict";
2350        tarteaucitron.fallback(['tac_podcloud'], function (x) {
2351            var frame_title = tarteaucitron.fixSelfXSS(x.getAttribute("title") || 'podCloud iframe'),
2352                width = x.getAttribute("width"),
2353                height = x.getAttribute("height"),
2354                url = x.getAttribute("data-url"),
2355                allowfullscreen= x.getAttribute("allowfullscreen");
2356
2357            return '<iframe title="' + frame_title + '" src="' + url + '" width="' + width + '" height="' + height + '" scrolling="auto" allowtransparency ' + (allowfullscreen == '0' ? '' : ' webkitallowfullscreen mozallowfullscreen allowfullscreen') + '></iframe>';
2358        });
2359    },
2360    "fallback": function () {
2361        "use strict";
2362        var id = 'podcloud';
2363        tarteaucitron.fallback(['tac_podcloud'], function (elem) {
2364            elem.style.width = elem.getAttribute('width') + 'px';
2365            elem.style.height = elem.getAttribute('height') + 'px';
2366            return tarteaucitron.engage(id);
2367        });
2368    }
2369};
2370
2371// facebookpost
2372tarteaucitron.services.facebookpost = {
vendor: 4,586 bytes, lines 2373-2474
2373    "key": "facebookpost",
2374    "type": "social",
2375    "name": "Facebook (post)",
2376    "uri": "https://www.facebook.com/policy.php",
2377    "needConsent": true,
2378    "cookies": [],
2379    "js": function () {
2380        "use strict";
2381        tarteaucitron.fallback(['tac_facebookpost'], function (x) {
2382            var frame_title = tarteaucitron.fixSelfXSS(x.getAttribute("title") || 'Facebook iframe'),
2383                width = x.getAttribute("width"),
2384                height = x.getAttribute("height"),
2385                url = x.getAttribute("data-url"),
2386                appId = x.getAttribute("data-appid"),
2387                allowfullscreen = x.getAttribute("allowfullscreen");
2388
2389            return '<iframe title="' + frame_title + '" src="https://www.facebook.com/plugins/post.php?href=' + encodeURIComponent(url) + '&amp;width=' + width + '&amp;show_text=false&amp;appId=' + appId + '&amp;height=' + height + '" width="' + width + '" height="' + height + '" scrolling="auto" allowtransparency ' + (allowfullscreen == '0' ? '' : ' webkitallowfullscreen mozallowfullscreen allowfullscreen') + '></iframe>';
2390        });
2391    },
2392    "fallback": function () {
2393        "use strict";
2394        var id = 'facebookpost';
2395        tarteaucitron.fallback(['tac_facebookpost'], function (elem) {
2396            elem.style.width = elem.getAttribute('width') + 'px';
2397            elem.style.height = elem.getAttribute('height') + 'px';
2398            return tarteaucitron.engage(id);
2399        });
2400    }
2401};
2402
2403// amplitude
2404tarteaucitron.services.amplitude = {
2405    "key": "amplitude",
2406    "type": "analytic",
2407    "name": "Amplitude",
2408    "uri": "https://amplitude.com/privacy",
2409    "needConsent": true,
2410    "cookies": [],
2411    "js": function () {
2412        "use strict";
2413        if (tarteaucitron.user.amplitude === undefined) {
2414            return;
2415        }
2416        tarteaucitron.addScript('https://cdn.amplitude.com/libs/amplitude-5.8.0-min.gz.js', '', function() {
2417
2418          window.amplitude = {
2419             _q: [],
2420             _iq: {}
2421          };
2422          function s(e,t){e.prototype[t]=function(){this._q.push([t].concat(Array.prototype.slice.call(arguments,0)));return this}}
2423          var o=function(){this._q=[];return this};
2424          var a=["add","append","clearAll","prepend","set","setOnce","unset"];
2425          for(var u=0;u<a.length;u++){s(o,a[u])}
2426          amplitude.Identify=o;
2427          var c=function(){this._q=[];return this};
2428          var l=["setProductId","setQuantity","setPrice","setRevenueType","setEventProperties"];
2429          for(var p=0;p<l.length;p++){s(c,l[p])}
2430          amplitude.Revenue=c;
2431          var d=["init","logEvent","logRevenue","setUserId","setUserProperties","setOptOut","setVersionName","setDomain","setDeviceId","enableTracking","setGlobalUserProperties","identify","clearUserProperties","setGroup","logRevenueV2","regenerateDeviceId","groupIdentify","onInit","logEventWithTimestamp","logEventWithGroups","setSessionId","resetSessionId"];
2432          function v(e){function t(t){e[t]=function(){e._q.push([t].concat(Array.prototype.slice.call(arguments,0)))}}for(var n=0;n<d.length;n++){t(d[n])}}
2433          v(amplitude);
2434          amplitude.getInstance=function(e){e=(!e||e.length===0?"$default_instance":e).toLowerCase();if(!amplitude._iq.hasOwnProperty(e)){amplitude._iq[e]={_q:[]};v(amplitude._iq[e])}return amplitude._iq[e]};
2435
2436          amplitude.getInstance().init(tarteaucitron.user.amplitude);
2437        });
2438    }
2439};
2440
2441// abtasty
2442tarteaucitron.services.abtasty = {
2443    "key": "abtasty",
2444    "type": "api",
2445    "name": "ABTasty",
2446    "uri": "https://www.abtasty.com/terms-of-use/",
2447    "needConsent": true,
2448    "cookies": ['ABTasty', 'ABTastySession'],
2449    "js": function () {
2450        "use strict";
2451        if (tarteaucitron.user.abtastyID === undefined) {
2452            return;
2453        }
2454        tarteaucitron.addScript('//try.abtasty.com/'+tarteaucitron.user.abtastyID+'.js');
2455    }
2456};
2457
2458
2459// yandex metrica
2460tarteaucitron.services.metrica = {
2461    "key": "metrica",
2462    "type": "analytic",
2463    "name": "Yandex Metrica",
2464    "uri": "https://yandex.com/legal/confidential/",
2465    "needConsent": true,
2466    "cookies": ['_ym_metrika_enabled','_ym_isad', '_ym_uid', '_ym_d','yabs-sid','_ym_debug','_ym_mp2_substs','_ym_hostIndex','_ym_mp2_track','yandexuid','usst'],
2467    "js": function () {
2468        "use strict";
2469        if (tarteaucitron.user.yandexmetrica === undefined) {
2470            return;
2471        }
2472        tarteaucitron.addScript('https://mc.yandex.ru/metrika/tag.js', '', function() {
2473
2474           (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
2475            m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
2476           (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
2477
2478           ym(tarteaucitron.user.yandexmetrica, "init", {
2479                clickmap:true,
2480                trackLinks:true,
2481                accurateTrackBounce:true,
2482                webvisor:true,
2483                ecommerce:"dataLayer"
2484            });
2485        });
2486    }
2487};
2488
2489// addthis
2490tarteaucitron.services.addthis = {
2491    "key": "addthis",
2492    "type": "social",
2493    "name": "AddThis",
2494    "uri": "https://www.addthis.com/privacy/privacy-policy#publisher-visitors",
2495    "needConsent": true,
2496    "cookies": ['__atuvc', '__atuvs'],
2497    "js": function () {
2498        "use strict";
2499        if (tarteaucitron.user.addthisPubId === undefined) {
2500            return;
2501        }
2502        if (tarteaucitron.isAjax === true) {
2503            window.addthis = null;
2504            window._adr = null;
2505            window._atc = null;
2506            window._atd = null;
2507            window._ate = null;
2508            window._atr = null;
2509            window._atw = null;
2510        }
2511        tarteaucitron.fallback(['addthis_inline_share_toolbox'], '');
2512        tarteaucitron.addScript('//s7.addthis.com/js/300/addthis_widget.js#pubid=' + tarteaucitron.user.addthisPubId);
2513    },
2514    "fallback": function () {
2515        "use strict";
2516        var id = 'addthis';
2517        tarteaucitron.fallback(['addthis_inline_share_toolbox'], tarteaucitron.engage(id));
2518    }
2519};
2520
2521// addtoanyfeed
2522tarteaucitron.services.addtoanyfeed = {
2523    "key": "addtoanyfeed",
2524    "type": "social",
2525    "name": "AddToAny (feed)",
2526    "uri": "https://www.addtoany.com/privacy",
2527    "needConsent": true,
2528    "cookies": [],
2529    "js": function () {
2530        "use strict";
2531        if (tarteaucitron.user.addtoanyfeedUri === undefined) {
2532            return;
2533        }
2534        tarteaucitron.user.addtoanyfeedSubscribeLink = 'https://www.addtoany.com/subscribe?linkurl=' + tarteaucitron.user.addtoanyfeedUri;
2535        window.a2a_config = window.a2a_config || {};
2536        window.a2a_config.linkurl = tarteaucitron.user.addtoanyfeedUri;
2537        tarteaucitron.addScript('//static.addtoany.com/menu/feed.js');
2538    },
2539    "fallback": function () {
2540        "use strict";
2541        tarteaucitron.user.addtoanyfeedSubscribeLink = 'https://www.addtoany.com/subscribe?linkurl=' + tarteaucitron.user.addtoanyfeedUri;
2542    }
2543};
2544
2545// addtoanyshare
2546tarteaucitron.services.addtoanyshare = {
2547    "key": "addtoanyshare",
2548    "type": "social",
2549    "name": "AddToAny (share)",
2550    "uri": "https://www.addtoany.com/privacy",
2551    "needConsent": true,
2552    "cookies": [],
2553    "js": function () {
2554        "use strict";
2555        tarteaucitron.fallback(['tac_addtoanyshare'], '');
2556        tarteaucitron.addScript('//static.addtoany.com/menu/page.js');
2557    },
2558    "fallback": function () {
2559        "use strict";
2560        var id = 'addtoanyshare';
2561        tarteaucitron.fallback(['tac_addtoanyshare'], tarteaucitron.engage(id));
2562    }
2563};
2564
2565// aduptech ads
2566tarteaucitron.services.aduptech_ads = {
2567    "key": "aduptech_ads",
2568    "type": "ads",
2569    "name": "Ad Up Technology (ads)",
2570    "uri": "https://www.adup-tech.com/datenschutz",
2571    "needConsent": true,
2572    "cookies": [],
2573    "js": function () {
2574        "use strict";
2575
2576        var IDENTIFIER = "aduptech_ads",
2577            API_URL = "https://s.d.adup-tech.com/jsapi";
2578
2579        var elements = document.getElementsByClassName(IDENTIFIER);
2580        if (!elements || elements.length === 0) {
2581            return;
2582        }
2583
2584        tarteaucitron.fallback([IDENTIFIER], "");
2585
2586        tarteaucitron.addScript(API_URL, "", function() {
2587            for (var i = 0; i < elements.length; i++) {
2588                var element = elements[i];
2589
2590                if (!element.getAttribute("id")) {
2591                    element.setAttribute("id", IDENTIFIER + Math.random().toString(36).substr(2, 9));
2592                }
2593
2594                window.uAd.embed(element.getAttribute("id"), {
2595                    placementKey: element.getAttribute("placementKey"),
2596                    responsive: Boolean(element.getAttribute("responsive")),
2597                    lazy: Boolean(element.getAttribute("lazy")),
2598                    adtest: Boolean(element.getAttribute("test")),
2599                    query: element.getAttribute("query") || "",
2600                    minCpc: element.getAttribute("minCpc") || "",
2601                    pageUrl: element.getAttribute("pageUrl") || "",
2602                    skip: element.getAttribute("skip") || ""
2603                });
2604            }
2605        });
2606
2607    },
2608    "fallback": function () {
2609        "use strict";
2610        tarteaucitron.fallback(["aduptech_ads"], tarteaucitron.engage("aduptech_ads"));
2611    }
2612};
2613
2614// aduptech conversion
2615tarteaucitron.services.aduptech_conversion = {
2616    "key": "aduptech_conversion",
2617    "type": "ads",
2618    "name": "Ad Up Technology (conversion)",
2619    "uri": "https://www.adup-tech.com/datenschutz",
2620    "needConsent": true,
2621    "cookies": [],
2622    "js": function () {
2623        "use strict";
2624
2625        var IDENTIFIER = "aduptech_conversion",
2626            CONVERSION_PIXEL_BASE_URL = "https://d.adup-tech.com/campaign/conversion";
2627
2628        var elements = document.getElementsByClassName(IDENTIFIER);
2629        if (!elements || elements.length === 0) {
2630            return;
2631        }
2632
2633        tarteaucitron.fallback([IDENTIFIER], "");
2634
2635        for (var i = 0; i < elements.length; i++) {
2636            var element = elements[i];
2637
2638            if (!element.getAttribute("advertiserId") || !element.getAttribute("conversionCode")) {
2639                continue;
2640            }
2641
2642            var url = CONVERSION_PIXEL_BASE_URL +
2643                "/" + encodeURIComponent(element.getAttribute("advertiserId")) +
2644                "?t=" + encodeURIComponent(element.getAttribute("conversionCode"));
2645
2646            if (element.getAttribute("price")) {
2647                url += "&price=" + encodeURIComponent(element.getAttribute("price"));
2648            }
2649
2650            if (element.getAttribute("quantity")) {
2651                url += "&quantity=" + encodeURIComponent(element.getAttribute("quantity"));
2652            }
2653
2654            if (element.getAttribute("total")) {
2655                url += "&total=" + encodeURIComponent(element.getAttribute("total"));
2656            }
2657
2658            if (element.getAttribute("orderId")) {
2659                url += "&order_id=" + encodeURIComponent(element.getAttribute("orderId"));
2660            }
2661
2662            if (element.getAttribute("itemNumber")) {
2663                url += "&item_number=" + encodeURIComponent(element.getAttribute("itemNumber"));
2664            }
2665
2666            if (element.getAttribute("description")) {
2667                url += "&description=" + encodeURIComponent(element.getAttribute("description"));
2668            }
2669
2670            (new Image()).src = url;
2671        }
2672    }
2673};
2674
2675// aduptech retargeting
2676tarteaucitron.services.aduptech_retargeting = {
2677    "key": "aduptech_retargeting",
2678    "type": "ads",
2679    "name": "Ad Up Technology (retargeting)",
2680    "uri": "https://www.adup-tech.com/datenschutz",
2681    "needConsent": true,
2682    "cookies": [],
2683    "js": function () {
2684        "use strict";
2685
2686        var IDENTIFIER = "aduptech_retargeting",
2687            API_URL = "https://s.d.adup-tech.com/services/retargeting.js";
2688
2689        var elements = document.getElementsByClassName(IDENTIFIER);
2690        if (!elements || elements.length === 0) {
2691            return;
2692        }
2693
2694        tarteaucitron.fallback([IDENTIFIER], "");
2695
2696        window.AdUpRetargeting = function(api) {
2697            for (var i = 0; i < elements.length; i++) {
2698                var element = elements[i];
2699
2700                api.init();
2701
2702                api.setAccount(element.getAttribute("account"));
2703
2704                if (element.getAttribute("email")) {
2705                    api.setEmail(element.getAttribute("email"));
2706                } else if (element.getAttribute("hashedEmail")) {
2707                    api.setHashedEmail(element.getAttribute("hashedEmail"));
2708                }
2709
2710                if (element.getAttribute("product")) {
2711                    try {
2712                        api.setProduct(JSON.parse(element.getAttribute("product")));
2713                    } catch (e) {
2714                        api.setProduct(element.getAttribute("product"));
2715                    }
2716                }
2717
2718                if (element.getAttribute("transaction")) {
2719                    try {
2720                        api.setTransaction(JSON.parse(element.getAttribute("transaction")));
2721                    } catch (e) {
2722                        api.setTransaction(element.getAttribute("transaction"));
2723                    }
2724                }
2725
2726                if (element.getAttribute("demarkUser")) {
2727                    api.setDemarkUser();
2728                } else if (element.getAttribute("demarkProducts")) {
2729                    api.setDemarkProducts();
2730                }
2731
2732                if (element.getAttribute("conversionCode")) {
2733                    api.setConversionCode(element.getAttribute("conversionCode"));
2734                }
2735
2736                if (element.getAttribute("device")) {
2737                    var setter = "set" + element.getAttribute("device").charAt(0).toUpperCase() + element.getAttribute("device").slice(1);
2738                    if (typeof api[setter] === 'function') {
2739                        api[setter]();
2740                    }
2741                }
2742
2743                if (element.getAttribute("track")) {
2744                    var tracker = "track" + element.getAttribute("track").charAt(0).toUpperCase() + element.getAttribute("track").slice(1);
2745                    if (typeof api[tracker] === "function") {
2746                        api[tracker]();
2747                    } else {
2748                        api.trackHomepage();
2749                    }
2750                }
2751            };
2752        };
2753
2754        tarteaucitron.addScript(API_URL);
2755    }
2756};
2757
2758// alexa
2759tarteaucitron.services.alexa = {
2760    "key": "alexa",
2761    "type": "analytic",
2762    "name": "Alexa",
2763    "uri": "https://www.alexa.com/help/privacy",
2764    "needConsent": true,
2765    "cookies": ['__asc', '__auc'],
2766    "js": function () {
2767        "use strict";
2768        if (tarteaucitron.user.alexaAccountID === undefined) {
2769            return;
2770        }
2771        window._atrk_opts = {
2772            atrk_acct: tarteaucitron.user.alexaAccountID,
2773            domain: window.location.hostname.match(/[^\.]*\.[^.]*$/)[0],
2774            dynamic: true
2775        };
2776        tarteaucitron.addScript('https://d31qbv1cthcecs.cloudfront.net/atrk.js');
2777    }
2778};
2779
2780// amazon
2781tarteaucitron.services.amazon = {
2782    "key": "amazon",
2783    "type": "ads",
2784    "name": "Amazon",
2785    "uri": "https://www.amazon.com/gp/help/customer/display.html/ref=help_search_1-1?ie=UTF8&nodeId=201909010&qid=1544617177&sr=1-1",
2786    "needConsent": true,
2787    "cookies": [],
2788    "js": function () {
2789        "use strict";
2790        tarteaucitron.fallback(['amazon_product'], function (x) {
2791            var frame_title = tarteaucitron.fixSelfXSS(x.getAttribute("title") || 'Amazon iframe'),
2792                amazonId = x.getAttribute("amazonid"),
2793                productId = x.getAttribute("productid"),
2794                url = '//ws-eu.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&OneJS=1&Operation=GetAdHtml&MarketPlace=' + tarteaucitron.getLanguage().toUpperCase() + '&source=ss&ref=ss_til&ad_type=product_link&tracking_id=' + amazonId + '&marketplace=amazon&region=' + tarteaucitron.getLanguage().toUpperCase() + '&placement=' + productId + '&asins=' + productId + '&show_border=true&link_opens_in_new_window=true',
2795                iframe = '<iframe title="' + frame_title + '" style="width:120px;height:240px;" marginwidth="0" marginheight="0" scrolling="no" src="' + url + '"></iframe>';
2796
2797            return iframe;
2798        });
2799    },
2800    "fallback": function () {
2801        "use strict";
2802        var id = 'amazon';
2803        tarteaucitron.fallback(['amazon_product'], tarteaucitron.engage(id));
2804    }
2805};
2806
2807// calameo
2808tarteaucitron.services.calameo = {
2809    "key": "calameo",
2810    "type": "video",
2811    "name": "Calameo",
2812    "uri": "https://fr.calameo.com/privacy",
2813    "needConsent": true,
2814    "cookies": [],
2815    "js": function () {
2816        "use strict";
2817        tarteaucitron.fallback(['calameo-canvas'], function (x) {
2818            var frame_title = tarteaucitron.fixSelfXSS(x.getAttribute("title") || 'Calameo iframe'),
2819                id = x.getAttribute("data-id"),
2820                width = x.getAttribute("width"),
2821                height = x.getAttribute("height"),
2822                url = '//v.calameo.com/?bkcode=' + id,
2823                allowfullscreen = x.getAttribute("allowfullscreen");
2824
2825            return '<iframe title="' + frame_title + '" src="' + url + '" width="' + width + '" height="' + height + '" scrolling="no" allowtransparency ' + (allowfullscreen == '0' ? '' : ' webkitallowfullscreen mozallowfullscreen allowfullscreen') + '></iframe>';
2826        });
2827    },
2828    "fallback": function () {
2829        "use strict";
2830        var id = 'calameo';
2831        tarteaucitron.fallback(['calameo-canvas'], function (elem) {
2832            elem.style.width = elem.getAttribute('width') + 'px';
2833            elem.style.height = elem.getAttribute('height') + 'px';
2834            return tarteaucitron.engage(id);
2835        });
2836    }
2837};
2838
2839// clicky
2840tarteaucitron.services.clicky = {
2841    "key": "clicky",
2842    "type": "analytic",
2843    "name": "Clicky",
2844    "uri": "https://clicky.com/terms",
2845    "needConsent": true,
2846    "cookies": ['_jsuid', '_eventqueue', '_referrer_og', '_utm_og', '_first_pageview', 'clicky_olark', 'no_trackyy_' + tarteaucitron.user.clickyId, 'unpoco_' + tarteaucitron.user.clickyId, 'heatmaps_g2g_' + tarteaucitron.user.clickyId],
2847    "js": function () {
2848        "use strict";
2849        if (tarteaucitron.user.clickyId === undefined) {
2850            return;
2851        }
2852        tarteaucitron.addScript('//static.getclicky.com/js', '', function () {
2853            if (typeof clicky.init === 'function') {
2854                clicky.init(tarteaucitron.user.clickyId);
2855            }
2856            if (typeof tarteaucitron.user.clickyMore === 'function') {
2857                tarteaucitron.user.clickyMore();
2858            }
2859        });
2860    }
2861};
2862
2863// clicmanager
2864tarteaucitron.services.clicmanager = {
2865    "key": "clicmanager",
2866    "type": "ads",
2867    "name": "Clicmanager",
2868    "uri": "http://www.clicmanager.fr/infos_legales.php",
2869    "needConsent": true,
2870    "cookies": [],
2871    "js": function () {
2872        "use strict";
2873        var uniqIds = [],
2874            i,
2875            uri;
2876
2877        tarteaucitron.fallback(['clicmanager-canvas'], function (x) {
2878            var uniqId = '_' + Math.random().toString(36).substr(2, 9);
2879            uniqIds.push(uniqId);
2880            return '<div id="' + uniqId + '" c="' + x.getAttribute('c') + '" s="' + x.getAttribute('s') + '" t="' + x.getAttribute('t') + '"></div>';
2881        });
2882
2883        for (i = 0; i < uniqIds.length; i += 1) {
2884            uri = '//ads.clicmanager.fr/exe.php?';
2885            uri += 'c=' + document.getElementById(uniqIds[i]).getAttribute('c') + '&';
2886            uri += 's=' + document.getElementById(uniqIds[i]).getAttribute('s') + '&';
2887            uri += 't=' + document.getElementById(uniqIds[i]).getAttribute('t');
2888
2889            tarteaucitron.makeAsync.init(uri, uniqIds[i]);
2890        }
2891    },
2892    "fallback": function () {
2893        "use strict";
2894        var id = 'clicmanager';
2895        tarteaucitron.fallback(['clicmanager-canvas'], tarteaucitron.engage(id));
2896    }
2897};
2898
2899// compteur
2900tarteaucitron.services.compteur = {
2901    "key": "compteur",
2902    "type": "analytic",
2903    "name": "Compteur.fr",
2904    "uri": "https://www.compteur.fr/help_privacy_policy.htm",
2905    "needConsent": true,
2906    "cookies": [],
2907    "js": function () {
2908        "use strict";
2909        if (tarteaucitron.user.compteurID === undefined) {
2910            return;
2911        }
2912        tarteaucitron.addScript('https://server2.compteur.fr/log7.js', '', function() {wtslog7(tarteaucitron.user.compteurID,1);});
2913    }
2914};
2915
2916// contentsquare
2917tarteaucitron.services.contentsquare = {
2918    "key": "contentsquare",
2919    "type": "api",
2920    "name": "ContentSquare",
2921    "uri": "https://docs.contentsquare.com/uxa-en/#collected-data",
2922    "needConsent": true,
2923    "cookies": ['_cs_id', '_cs_s', '_cs_vars', '_cs_ex', '_cs_c', '_cs_optout'],
2924    "js": function () {
2925        "use strict";
2926        if (tarteaucitron.user.contentsquareID === undefined) {
2927            return;
2928        }
2929        tarteaucitron.addScript('//t.contentsquare.net/uxa/'+tarteaucitron.user.contentsquareID+'.js');
2930    }
2931};
2932
2933// crazyegg
2934tarteaucitron.services.crazyegg = {
2935    "key": "crazyegg",
2936    "type": "analytic",
2937    "name": "Crazy Egg",
2938    "uri": "https://www.crazyegg.com/privacy",
2939    "needConsent": true,
2940    "cookies": [],
2941    "js": function () {
2942        "use strict";
2943
2944        if (tarteaucitron.user.crazyeggId === undefined) {
2945            return;
2946        }
2947
2948        tarteaucitron.addScript('//script.crazyegg.com/pages/scripts/' + tarteaucitron.user.crazyeggId.substr(0, 4) + '/' + tarteaucitron.user.crazyeggId.substr(4, 4) + '.js');
2949    }
2950};
2951
2952// clarity
2953tarteaucitron.services.clarity = {
2954    "key": "clarity",
2955    "type": "analytic",
2956    "name": "Clarity",
2957    "uri": "https://clarity.microsoft.com/",
2958    "needConsent": true,
2959    "cookies": [],
2960    "js": function () {
2961        "use strict";
2962
2963        window["clarity"]= window["clarity"]||function(){(window["clarity"].q= window["clarity"].q||[]).push(arguments)};
2964
2965        tarteaucitron.addScript('https://www.clarity.ms/tag/' + tarteaucitron.user.clarity);
2966    }
2967};
2968
2969// criteo
2970tarteaucitron.services.criteo = {
2971    "key": "criteo",
2972    "type": "ads",
2973    "name": "Criteo",
2974    "uri": "http://www.criteo.com/privacy/",
2975    "needConsent": true,
2976    "cookies": [],
2977    "js": function () {
2978        "use strict";
2979        document.MAX_ct0 = '';
2980        var uniqIds = [],
2981            i,
2982            uri;
2983
2984        tarteaucitron.fallback(['criteo-canvas'], function (x) {
2985            var uniqId = '_' + Math.random().toString(36).substr(2, 9);
2986            uniqIds.push(uniqId);
2987            return '<div id="' + uniqId + '" zoneid="' + x.getAttribute('zoneid') + '"></div>';
2988        });
2989
2990        for (i = 0; i < uniqIds.length; i += 1) {
2991            uri = '//cas.criteo.com/delivery/ajs.php?';
2992            uri += 'zoneid=' + document.getElementById(uniqIds[i]).getAttribute('zoneid');
2993            uri += '&nodis=1&cb=' + Math.floor(Math.random() * 99999999999);
2994            uri += '&loc=' + encodeURI(window.location);
2995            uri += (document.MAX_used !== ',') ? '&exclude=' + document.MAX_used : '';
2996            uri += (document.charset !== undefined ? '&charset=' + document.charset : '');
2997            uri += (document.characterSet !== undefined ? '&charset=' + document.characterSet : '');
2998            uri += (document.referrer !== undefined) ? '&referer=' + encodeURI(document.referrer) : '';
2999            uri += (document.context !== undefined) ? '&context=' + encodeURI(document.context) : '';
3000            uri += ((document.MAX_ct0 !== undefined) && (document.MAX_ct0.substring(0, 4) === 'http')) ? '&ct0=' + encodeURI(document.MAX_ct0) : '';
3001            uri += (document.mmm_fo !== undefined) ? '&mmm_fo=1' : '';
3002
3003            tarteaucitron.makeAsync.init(uri, uniqIds[i]);
3004        }
3005    },
3006    "fallback": function () {
3007        "use strict";
3008        var id = 'criteo';
3009        tarteaucitron.fallback(['criteo-canvas'], tarteaucitron.engage(id));
3010    }
3011};
3012
3013// artetv
3014tarteaucitron.services.artetv = {
3015    "key": "artetv",
3016    "type": "video",
3017    "name": "Arte.tv",
3018    "uri": "https://www.arte.tv/sites/fr/corporate/donnees-personnelles/",
3019    "needConsent": true,
3020    "cookies": [],
3021    "js": function () {
3022        "use strict";
3023        tarteaucitron.fallback(['artetv_player'], function (x) {
3024            var frame_title = tarteaucitron.fixSelfXSS(x.getAttribute("title") || 'Arte.tv iframe'),
3025                video_json = x.getAttribute("json"),
3026                video_width = x.getAttribute("width"),
3027                video_height = x.getAttribute("height"),
3028                video_frame,
3029                video_allowfullscreen = x.getAttribute("allowfullscreen");
3030
3031            if (video_json === undefined) {
3032                return "";
3033            }
3034
3035            video_frame = '<iframe title="' + frame_title + '" style="transition-duration: 0; transition-property: no; margin: 0 auto; position: relative; display: block; background-color: #000000;" src="https://www.arte.tv/player/v5/index.php?json_url=' + video_json + '" width="' + video_width + '" height="' + video_height + '" scrolling="no" ' + (video_allowfullscreen == '0' ? '' : ' webkitallowfullscreen mozallowfullscreen allowfullscreen') + '></iframe>';
3036            return video_frame;
3037        });
3038    },
3039    "fallback": function () {
3040        "use strict";
3041        var id = 'artetv';
3042        tarteaucitron.fallback(['artetv_player'], function (elem) {
3043            elem.style.width = elem.getAttribute('width') + 'px';
3044            elem.style.height = elem.getAttribute('height') + 'px';
3045            return tarteaucitron.engage(id);
3046        });
3047    }
3048};
3049
3050// dailymotion
3051tarteaucitron.services.dailymotion = {
3052    "key": "dailymotion",
3053    "type": "video",
3054    "name": "Dailymotion",
3055    "uri": "https://www.dailymotion.com/legal/privacy",
3056    "needConsent": true,
3057    "cookies": ['ts', 'dmvk', 'hist', 'v1st', 's_vi'],
3058    "js": function () {
3059        "use strict";
3060        tarteaucitron.fallback(['dailymotion_player'], function (x) {
3061            var frame_title = tarteaucitron.fixSelfXSS(x.getAttribute("title") || 'Dailymotion iframe'),
3062                video_id = x.getAttribute("videoID"),
3063                video_width = x.getAttribute("width"),
3064                frame_width = 'width=',
3065                video_height = x.getAttribute("height"),
3066                frame_height = 'height=',
3067                video_frame,
3068                embed_type = x.getAttribute("embedType"),
3069                allowfullscreen = x.getAttribute("allowfullscreen"),
3070                params = 'info=' + x.getAttribute("showinfo") + '&autoPlay=' + x.getAttribute("autoplay");
3071
3072            if (video_id === undefined) {
3073                return "";
3074            }
3075            if (video_width !== undefined) {
3076                frame_width += '"' + video_width + '" ';
3077            } else {
3078                frame_width += '"" ';
3079            }
3080            if (video_height !== undefined) {
3081                frame_height +=  '"' + video_height + '" ';
3082            } else {
3083                frame_height += '"" ';
3084            }
3085            if (embed_type === undefined || !['video', 'playlist'].includes(embed_type) ) {
3086                embed_type = "video";
3087            }
3088            video_frame = '<iframe title="' + frame_title + '" src="//www.dailymotion.com/embed/' + embed_type + '/' + video_id + '?' + params + '" ' + frame_width + frame_height + (allowfullscreen == '0' ? '' : ' webkitallowfullscreen mozallowfullscreen allowfullscreen') + '></iframe>';
3089            return video_frame;
3090        });
3091    },
3092    "fallback": function () {
3093        "use strict";
3094        var id = 'dailymotion';
3095        tarteaucitron.fallback(['dailymotion_player'], function (elem) {
3096            elem.style.width = elem.getAttribute('width') + 'px';
3097            elem.style.height = elem.getAttribute('height') + 'px';
3098            return tarteaucitron.engage(id);
3099        });
3100    }
3101};
3102
3103// dating affiliation
3104tarteaucitron.services.datingaffiliation = {
3105    "key": "datingaffiliation",
3106    "type": "ads",
3107    "name": "Dating Affiliation",
3108    "uri": "http://www.dating-affiliation.com/conditions-generales.php",
3109    "needConsent": true,
3110    "cookies": [],
3111    "js": function () {
3112        "use strict";
3113        tarteaucitron.fallback(['datingaffiliation-canvas'], function (x) {
3114            var frame_title = tarteaucitron.fixSelfXSS(x.getAttribute("title") || 'Dating Affiliation iframe'),
3115                comfrom = x.getAttribute("data-comfrom"),
3116                r = x.getAttribute("data-r"),
3117                p = x.getAttribute("data-p"),
3118                cf0 = x.getAttribute("data-cf0"),
3119                langue = x.getAttribute("data-langue"),
3120                forward_affiliate = x.getAttribute("data-forwardAffiliate"),
3121                cf2 = x.getAttribute("data-cf2"),
3122                cfsa2 = x.getAttribute("data-cfsa2"),
3123                width = x.getAttribute("width"),
3124                height = x.getAttribute("height"),
3125                url = 'http://www.tools-affil2.com/rotaban/ban.php?' + comfrom;
3126
3127            return '<iframe title="' + frame_title + '" src="' + url + '&r=' + r + '&p=' + p + '&cf0=' 
3127+ cf0 + '&langue=' + langue + '&forward_affiliate=' + forward_affiliate + '&cf2=' + cf2 + '&cfsa2=' + cfsa2 + '" width="' + width + '" height="' + height + '" marginheight="0" marginwidth="0" scrolling="no"></iframe>';
3128        });
3129    },
3130    "fallback": function () {
3131        "use strict";
3132        var id = 'datingaffiliation';
3133        tarteaucitron.fallback(['datingaffiliation-canvas'], function (elem) {
3134            elem.style.width = elem.getAttribute('width') + 'px';
3135            elem.style.height = elem.getAttribute('height') + 'px';
3136            return tarteaucitron.engage(id);
3137        });
3138    }
3139};
3140
3141// dating affiliation popup
3142tarteaucitron.services.datingaffiliationpopup = {
3143    "key": "datingaffiliationpopup",
3144    "type": "ads",
3145    "name": "Dating Affiliation (Pop Up)",
3146    "uri": "http://www.dating-affiliation.com/conditions-generales.php",
3147    "needConsent": true,
3148    "cookies": ['__utma', '__utmb', '__utmc', '__utmt_Tools', '__utmv', '__utmz', '_ga', '_gat', '_gat_UA-65072040-17', '__da-pu-xflirt-ID-pc-o169'],
3149    "js": function () {
3150        "use strict";
3151        var uniqIds = [],
3152            i,
3153            uri;
3154
3155        tarteaucitron.fallback(['datingaffiliationpopup-canvas'], function (x) {
3156            var uniqId = '_' + Math.random().toString(36).substr(2, 9);
3157            uniqIds.push(uniqId);
3158            return '<div id="' + uniqId + '" uri="' + x.getAttribute('uri') + '" comfrom="' + x.getAttribute('comfrom') + '" promo="' + x.getAttribute('promo') + '" productid="' + x.getAttribute('productid') + '" submitconfig="' + x.getAttribute('submitconfig') + '" ur="' + x.getAttribute('ur') + '" brand="' + x.getAttribute('brand') + '" lang="' + x.getAttribute('lang') + '" cf0="' + x.getAttribute('cf0') + '" cf2="' + x.getAttribute('cf2') + '" subid1="' + x.getAttribute('subid1') + '" cfsa2="' + x.getAttribute('cfsa2') + '" subid2="' + x.getAttribute('subid2') + '" nicheid="' + x.getAttribute('nicheid') + '" degreid="' + x.getAttribute('degreid') + '" bt="' + x.getAttribute('bt') + '" vis="' + x.getAttribute('vis') + '" hid="' + x.getAttribute('hid') + '" snd="' + x.getAttribute('snd') + '" aabd="' + x.getAttribute('aabd') + '" aabs="' + x.getAttribute('aabs') + '"></div>';
3159        });
3160
3161        for (i = 0; i < uniqIds.length; i += 1) {
3162            uri = 'http://www.promotools.biz/da/popunder/script.php?';
3163            uri += 'comfrom=' + document.getElementById(uniqIds[i]).getAttribute('comfrom') + '&';
3164            uri += 'promo=' + document.getElementById(uniqIds[i]).getAttribute('promo') + '&';
3165            uri += 'product_id=' + document.getElementById(uniqIds[i]).getAttribute('productid') + '&';
3166            uri += 'submitconfig=' + document.getElementById(uniqIds[i]).getAttribute('submitconfig') + '&';
3167            uri += 'ur=' + document.getElementById(uniqIds[i]).getAttribute('ur') + '&';
3168            uri += 'brand=' + document.getElementById(uniqIds[i]).getAttribute('brand') + '&';
3169            uri += 'lang=' + document.getElementById(uniqIds[i]).getAttribute('lang') + '&';
3170            uri += 'cf0=' + document.getElementById(uniqIds[i]).getAttribute('cf0') + '&';
3171            uri += 'cf2=' + document.getElementById(uniqIds[i]).getAttribute('cf2') + '&';
3172            uri += 'subid1=' + document.getElementById(uniqIds[i]).getAttribute('subid1') + '&';
3173            uri += 'cfsa2=' + document.getElementById(uniqIds[i]).getAttribute('cfsa2') + '&';
3174            uri += 'subid2=' + document.getElementById(uniqIds[i]).getAttribute('subid2') + '&';
3175            uri += 'nicheId=' + document.getElementById(uniqIds[i]).getAttribute('nicheid') + '&';
3176            uri += 'degreId=' + document.getElementById(uniqIds[i]).getAttribute('degreid') + '&';
3177            uri += 'bt=' + document.getElementById(uniqIds[i]).getAttribute('bt') + '&';
3178            uri += 'vis=' + document.getElementById(uniqIds[i]).getAttribute('vis') + '&';
3179            uri += 'hid=' + document.getElementById(uniqIds[i]).getAttribute('hid') + '&';
3180            uri += 'snd=' + document.getElementById(uniqIds[i]).getAttribute('snd') + '&';
3181            uri += 'aabd=' + document.getElementById(uniqIds[i]).getAttribute('aabd') + '&';
3182            uri += 'aabs=' + document.getElementById(uniqIds[i]).getAttribute('aabs');
3183
3184            tarteaucitron.makeAsync.init(uri, uniqIds[i]);
3185        }
3186    },
3187    "fallback": function () {
3188        "use strict";
3189        var id = 'datingaffiliationpopup';
3190        tarteaucitron.fallback(['datingaffiliationpopup-canvas'], tarteaucitron.engage(id));
3191    }
3192};
3193
3194// deezer
3195tarteaucitron.services.deezer = {
3196    "key": "deezer",
3197    "type": "video",
3198    "name": "Deezer",
3199    "uri": "https://www.deezer.com/legal/personal-datas",
3200    "needConsent": true,
3201    "cookies": [],
3202    "js": function () {
3203        "use strict";
3204        tarteaucitron.fallback(['deezer_player'], function (x) {
3205            var frame_title = tarteaucitron.fixSelfXSS(x.getAttribute("title") || 'Deezer iframe'),
3206                deezer_id = x.getAttribute("deezerID"),
3207                deezer_width = x.getAttribute("width"),
3208                frame_width = 'width=',
3209                deezer_height = x.getAttribute("height"),
3210                frame_height = 'height=',
3211                deezer_frame,
3212                embed_theme = x.getAttribute("theme"),
3213                embed_type = x.getAttribute("embedType"),
3214                radius = x.getAttribute("radius"),
3215                tracklist = x.getAttribute("tracklist"),
3216                allowfullscreen = x.getAttribute("allowfullscreen"),
3217                params;
3218
3219            if (deezer_id === undefined) {
3220                return "";
3221            }
3222            if (deezer_width !== undefined) {
3223                frame_width += '"' + deezer_width + '" ';
3224            } else {
3225                frame_width += '"" ';
3226            }
3227            if (deezer_height !== undefined) {
3228                frame_height +=  '"' + deezer_height + '" ';
3229            } else {
3230                frame_height += '"" ';
3231            }
3232            if (embed_theme === undefined || !['auto', 'light', 'dark'].includes(embed_theme) ) {
3233                embed_theme = "auto";
3234            }
3235            if (embed_type === undefined || !['album', 'track', 'playlist'].includes(embed_type) ) {
3236                embed_type = "album";
3237            }
3238            if (radius === undefined || !['true', 'false'].includes(radius) ) {
3239                radius = "true";
3240            }
3241            if (tracklist === undefined || !['true', 'false'].includes(tracklist) ) {
3242                tracklist = "true";
3243            }
3244            params = 'tracklist=' + tracklist + '&radius=' + radius;
3245            deezer_frame = '<iframe title="' + frame_title + '" src="//widget.deezer.com/widget/' + embed_theme + '/' + embed_type + '/' + deezer_id + '?' + params + '" ' + frame_width + frame_height + ' ' + (allowfullscreen == '0' ? '' : ' webkitallowfullscreen mozallowfullscreen allowfullscreen') + '></iframe>';
3246            return deezer_frame;
3247        });
3248    },
3249    "fallback": function () {
3250        "use strict";
3251        var id = 'deezer';
3252        tarteaucitron.fallback(['deezer_player'], function (elem) {
3253            elem.style.width = elem.getAttribute('width') + 'px';
3254            elem.style.height = elem.getAttribute('height') + 'px';
3255            return tarteaucitron.engage(id);
3256        });
3257    }
3258};
3259
3260// leadforensics
3261tarteaucitron.services.leadforensics = {
3262    "key": "leadforensics",
3263    "type": "analytic",
3264    "name": "LeadForensics",
3265    "uri": "https://www.leadforensics.com/privacy-policy/",
3266    "needConsent": true,
3267    "cookies": ['trackalyzer'],
3268    "js": function () {
3269        "use strict";
3270        if (tarteaucitron.user.leadforensicsSf14gv === undefined ||
3271            tarteaucitron.user.leadforensicsIidentifier === undefined) {
3272            return;
3273        }
3274
3275        window.sf14gv = tarteaucitron.user.leadforensicsSf14gv;
3276
3277        (function() {
3278            var sf14g = document.createElement('script'); sf14g.async = true;
3279            sf14g.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 't.sf14g.com/sf14g.js';
3280            var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(sf14g, s);
3281        })();
3282
3283        tarteaucitron.addScript('//secure.leadforensics.com/js/' + tarteaucitron.user.leadforensicsIidentifier + '.js');
3284    }
3285};
3286
3287// disqus
3288tarteaucitron.services.disqus = {
3289    "key": "disqus",
3290    "type": "comment",
3291    "name": "Disqus",
3292    "uri": "https://help.disqus.com/customer/portal/articles/466259-privacy-policy",
3293    "needConsent": true,
3294    "cookies": [],
3295    "js": function () {
3296        "use strict";
vendor: 14,871 bytes, lines 3297-3769
3297        if (tarteaucitron.user.disqusShortname === undefined) {
3298            return;
3299        }
3300        tarteaucitron.addScript('//' + tarteaucitron.user.disqusShortname + '.disqus.com/embed.js');
3301        tarteaucitron.addScript('//' + tarteaucitron.user.disqusShortname + '.disqus.com/count.js');
3302    },
3303    "fallback": function () {
3304        "use strict";
3305        var id = 'disqus';
3306
3307        if (document.getElementById('disqus_thread')) {
3308            document.getElementById('disqus_thread').innerHTML = tarteaucitron.engage(id);
3309        }
3310    }
3311};
3312
3313// ekomi
3314tarteaucitron.services.ekomi = {
3315    "key": "ekomi",
3316    "type": "social",
3317    "name": "eKomi",
3318    "uri": "http://www.ekomi-us.com/us/privacy/",
3319    "needConsent": true,
3320    "cookies": [],
3321    "js": function () {
3322        "use strict";
3323        if (tarteaucitron.user.ekomiCertId === undefined) {
3324            return;
3325        }
3326        window.eKomiIntegrationConfig = [
3327            {certId: tarteaucitron.user.ekomiCertId}
3328        ];
3329        tarteaucitron.addScript('//connect.ekomi.de/integration_1410173009/' + tarteaucitron.user.ekomiCertId + '.js');
3330    }
3331};
3332
3333// etracker
3334tarteaucitron.services.etracker = {
3335    "key": "etracker",
3336    "type": "analytic",
3337    "name": "eTracker",
3338    "uri": "https://www.etracker.com/en/data-protection.html",
3339    "needConsent": true,
3340    "cookies": [],
3341    "js": function () {
3342        "use strict";
3343        if (tarteaucitron.user.etracker === undefined) {
3344            return;
3345        }
3346
3347        tarteaucitron.addScript('//static.etracker.com/code/e.js', '_etLoader', function () {}, true, "data-secure-code", tarteaucitron.user.etracker);
3348    }
3349};
3350
3351// facebook
3352tarteaucitron.services.facebook = {
3353    "key": "facebook",
3354    "type": "social",
3355    "name": "Facebook",
3356    "uri": "https://www.facebook.com/policy.php",
3357    "needConsent": true,
3358    "cookies": ['xs', 'sb', 'fr', 'datr', 'dpr', 'c_user'],
3359    "js": function () {
3360        "use strict";
3361        tarteaucitron.fallback(['fb-post', 'fb-follow', 'fb-activity', 'fb-send', 'fb-share-button', 'fb-like', 'fb-video'], '');
3362        tarteaucitron.addScript('//connect.facebook.net/' + tarteaucitron.getLocale() + '/sdk.js#xfbml=1&version=v2.0', 'facebook-jssdk');
3363        if (tarteaucitron.isAjax === true) {
3364            if (typeof FB !== "undefined") {
3365                FB.XFBML.parse();
3366            }
3367        }
3368    },
3369    "fallback": function () {
3370        "use strict";
3371        var id = 'facebook';
3372        tarteaucitron.fallback(['fb-post', 'fb-follow', 'fb-activity', 'fb-send', 'fb-share-button', 'fb-like', 'fb-video'], tarteaucitron.engage(id));
3373    }
3374};
3375
3376// facebooklikebox
3377tarteaucitron.services.facebooklikebox = {
3378    "key": "facebooklikebox",
3379    "type": "social",
3380    "name": "Facebook (like box)",
3381    "uri": "https://www.facebook.com/policy.php",
3382    "needConsent": true,
3383    "cookies": [],
3384    "js": function () {
3385        "use strict";
3386        tarteaucitron.fallback(['fb-like-box', 'fb-page'], '');
3387        tarteaucitron.addScript('//connect.facebook.net/' + tarteaucitron.getLocale() + '/sdk.js#xfbml=1&version=v2.3', 'facebook-jssdk');
3388        if (tarteaucitron.isAjax === true) {
3389            if (typeof FB !== "undefined") {
3390                FB.XFBML.parse();
3391            }
3392        }
3393    },
3394    "fallback": function () {
3395        "use strict";
3396        var id = 'facebooklikebox';
3397        tarteaucitron.fallback(['fb-like-box', 'fb-page'], tarteaucitron.engage(id));
3398    }
3399};
3400
3401// facebookcomment
3402tarteaucitron.services.facebookcomment = {
3403    "key": "facebookcomment",
3404    "type": "comment",
3405    "name": "Facebook (commentaire)",
3406    "uri": "https://www.facebook.com/policy.php",
3407    "needConsent": true,
3408    "cookies": [],
3409    "js": function () {
3410        "use strict";
3411        tarteaucitron.fallback(['fb-comments'], '');
3412        tarteaucitron.addScript('//connect.facebook.net/' + tarteaucitron.getLocale() + '/sdk.js#xfbml=1&version=v2.0', 'facebook-jssdk');
3413        if (tarteaucitron.isAjax === true) {
3414            if (typeof FB !== "undefined") {
3415                FB.XFBML.parse();
3416            }
3417        }
3418    },
3419    "fallback": function () {
3420        "use strict";
3421        var id = 'facebookcomment';
3422        tarteaucitron.fallback(['fb-comments'], tarteaucitron.engage(id));
3423    }
3424};
3425
3426// ferank
3427tarteaucitron.services.ferank = {
3428    "key": "ferank",
3429    "type": "analytic",
3430    "name": "FERank",
3431    "uri": "https://www.ferank.fr/respect-vie-privee/#mesureaudience",
3432    "needConsent": false,
3433    "cookies": [],
3434    "js": function () {
3435        "use strict";
3436        tarteaucitron.addScript('//static.ferank.fr/pixel.js', '', function () {
3437            if (typeof tarteaucitron.user.ferankMore === 'function') {
3438                tarteaucitron.user.ferankMore();
3439            }
3440        });
3441    }
3442};
3443
3444// pingdom
3445tarteaucitron.services.pingdom = {
3446    "key": "pingdom",
3447    "type": "api",
3448    "name": "Pingdom",
3449    "uri": "https://www.solarwinds.com/general-data-protection-regulation-cloud",
3450    "needConsent": true,
3451    "cookies": [],
3452    "js": function () {
3453        "use strict";
3454
3455        if (tarteaucitron.user.pingdomId === undefined) {
3456            return;
3457        }
3458
3459        window._prum = [['id', tarteaucitron.user.pingdomId], ['mark', 'firstbyte', (new Date()).getTime()]];
3460
3461        tarteaucitron.addScript('https://rum-static.pingdom.net/prum.min.js');
3462    }
3463};
3464
3465
3466// simpleanalytics
3467tarteaucitron.services.simpleanalytics = {
3468    "key": "simpleanalytics",
3469    "type": "analytic",
3470    "name": "Simple Analytics",
3471    "uri": "https://docs.simpleanalytics.com/what-we-collect",
3472    "needConsent": false,
3473    "cookies": [],
3474    "js": function () {
3475        "use strict";
3476        tarteaucitron.addScript('https://scripts.simpleanalyticscdn.com/latest.js');
3477    }
3478};
3479
3480// stonly
3481tarteaucitron.services.stonly = {
3482    "key": "stonly",
3483    "type": "api",
3484    "name": "Stonly",
3485    "uri": "https://stonly.com/privacy",
3486    "needConsent": true,
3487    "cookies": [],
3488    "js": function () {
3489        "use strict";
3490        if (tarteaucitron.user.stonlyId === undefined) {
3491            return;
3492        }
3493
3494        window.STONLY_WID = tarteaucitron.user.stonlyId;
3495        window.StonlyWidget || ((window.w = window.StonlyWidget = function() {
3496           window.w._api ? window.w._api.apply(window.w, arguments) : window.w.queue.push(arguments)
3497        }).queue = []);
3498
3499        tarteaucitron.addScript('https://stonly.com/js/widget/v2/stonly-widget.js?v=' + Date.now());
3500    }
3501};
3502
3503// stripe
3504/*tarteaucitron.services.stripe = {
3505    "key": "stripe",
3506    "type": "api",
3507    "name": "Stripe",
3508    "uri": "https://stripe.com/cookies-policy/legal",
3509    "needConsent": true,
3510    "cookies": [],
3511    "js": function () {
3512        "use strict";
3513        tarteaucitron.addScript('https://js.stripe.com/v3/');
3514    }
3515};*/
3516
3517// ferank pub
3518tarteaucitron.services.ferankpub = {
3519    "key": "ferankpub",
3520    "type": "ads",
3521    "name": "FERank (pub)",
3522    "uri": "https://www.ferank.fr/respect-vie-privee/#regiepublicitaire",
3523    "needConsent": false,
3524    "cookies": [],
3525    "js": function () {
3526        "use strict";
3527        tarteaucitron.addScript('//static.ferank.fr/publicite.async.js');
3528        if (tarteaucitron.isAjax === true) {
3529            if (typeof ferankReady === 'function') {
3530                ferankReady();
3531            }
3532        }
3533    },
3534    "fallback": function () {
3535        "use strict";
3536        var id = 'ferankpub';
3537        tarteaucitron.fallback(['ferank-publicite'], tarteaucitron.engage(id));
3538    }
3539};
3540
3541// get+
3542tarteaucitron.services.getplus = {
3543    "key": "getplus",
3544    "type": "analytic",
3545    "name": "Get+",
3546    "uri": "http://www.getplus.fr/Conditions-generales-de-vente_a226.html",
3547    "needConsent": true,
3548    "cookies": ['_first_pageview', '_jsuid', 'no_trackyy_' + tarteaucitron.user.getplusId, '_eventqueue'],
3549    "js": function () {
3550        "use strict";
3551        if (tarteaucitron.user.getplusId === undefined) {
3552            return;
3553        }
3554
3555        window.webleads_site_ids = window.webleads_site_ids || [];
3556        window.webleads_site_ids.push(tarteaucitron.user.getplusId);
3557        tarteaucitron.addScript('//stats.webleads-tracker.com/js');
3558    }
3559};
3560
3561// google+
3562tarteaucitron.services.ytsubscribe = {
3563    "key": "ytsubscribe",
3564    "type": "social",
3565    "name": "YouTube Subscribe Button",
3566    "uri": "https://policies.google.com/privacy",
3567    "needConsent": true,
3568    "cookies": [],
3569    "js": function () {
3570        "use strict";
3571        tarteaucitron.addScript('https://apis.google.com/js/platform.js');
3572    },
3573    "fallback": function () {
3574        "use strict";
3575        var id = 'gplus';
3576        tarteaucitron.fallback(['g-ytsubscribe'], tarteaucitron.engage(id));
3577    }
3578};
3579
3580// google+
3581tarteaucitron.services.gplus = {
3582    "key": "gplus",
3583    "type": "social",
3584    "name": "Google+",
3585    "uri": "https://policies.google.com/privacy",
3586    "needConsent": true,
3587    "cookies": [],
3588    "js": function () {
3589        "use strict";
3590        tarteaucitron.addScript('https://apis.google.com/js/platform.js');
3591    },
3592    "fallback": function () {
3593        "use strict";
3594        var id = 'gplus';
3595        tarteaucitron.fallback(['g-plus', 'g-plusone'], tarteaucitron.engage(id));
3596    }
3597};
3598
3599// google+ badge
3600tarteaucitron.services.gplusbadge = {
3601    "key": "gplusbadge",
3602    "type": "social",
3603    "name": "Google+ (badge)",
3604    "uri": "https://policies.google.com/privacy",
3605    "needConsent": true,
3606    "cookies": [],
3607    "js": function () {
3608        "use strict";
3609        tarteaucitron.addScript('https://apis.google.com/js/platform.js');
3610    },
3611    "fallback": function () {
3612        "use strict";
3613        var id = 'gplusbadge';
3614        tarteaucitron.fallback(['g-page', 'g-person'], tarteaucitron.engage(id));
3615    }
3616};
3617
3618// google adsense
3619tarteaucitron.services.adsense = {
3620    "key": "adsense",
3621    "type": "ads",
3622    "name": "Google Adsense",
3623    "uri": "https://adssettings.google.com/",
3624    "needConsent": true,
3625    "cookies": [],
3626    "js": function () {
3627        "use strict";
3628        tarteaucitron.addScript('https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js');
3629    },
3630    "fallback": function () {
3631        "use strict";
3632        var id = 'adsense';
3633        tarteaucitron.fallback(['adsbygoogle'], tarteaucitron.engage(id));
3634    }
3635};
3636
3637// google partners badge
3638tarteaucitron.services.googlepartners = {
3639    "key": "googlepartners",
3640    "type": "ads",
3641    "name": "Google Partners Badge",
3642    "uri": "https://adssettings.google.com/",
3643    "needConsent": true,
3644    "cookies": [],
3645    "js": function () {
3646        "use strict";
3647        tarteaucitron.addScript('https://apis.google.com/js/platform.js');
3648    },
3649    "fallback": function () {
3650        "use strict";
3651        var id = 'googlepartners';
3652        tarteaucitron.fallback(['g-partnersbadge'], tarteaucitron.engage(id));
3653    }
3654};
3655
3656// google adsense search (form)
3657tarteaucitron.services.adsensesearchform = {
3658    "key": "adsensesearchform",
3659    "type": "ads",
3660    "name": "Google Adsense Search (form)",
3661    "uri": "https://adssettings.google.com/",
3662    "needConsent": true,
3663    "cookies": [],
3664    "js": function () {
3665        "use strict";
3666        tarteaucitron.addScript('//www.google.com/coop/cse/brand?form=cse-search-box&lang=' + tarteaucitron.getLanguage());
3667    }
3668};
3669
3670// google adsense search (result)
3671tarteaucitron.services.adsensesearchresult = {
3672    "key": "adsensesearchresult",
3673    "type": "ads",
3674    "name": "Google Adsense Search (result)",
3675    "uri": "https://adssettings.google.com/",
3676    "needConsent": true,
3677    "cookies": [],
3678    "js": function () {
3679        "use strict";
3680        if (tarteaucitron.user.adsensesearchresultCx === undefined) {
3681            return;
3682        }
3683        tarteaucitron.addScript('//www.google.com/cse/cse.js?cx=' + tarteaucitron.user.adsensesearchresultCx);
3684    },
3685    "fallback": function () {
3686        "use strict";
3687        var id = 'adsensesearchresult';
3688
3689        if (document.getElementById('gcse_searchresults')) {
3690            document.getElementById('gcse_searchresults').innerHTML = tarteaucitron.engage(id);
3691        }
3692    }
3693};
3694
3695// googleadwordsconversion
3696tarteaucitron.services.googleadwordsconversion = {
3697    "key": "googleadwordsconversion",
3698    "type": "ads",
3699    "name": "Google Adwords (conversion)",
3700    "uri": "https://www.google.com/settings/ads",
3701    "needConsent": true,
3702    "cookies": [],
3703    "js": function () {
3704        "use strict";
3705        if (tarteaucitron.user.adwordsconversionId === undefined) {
3706            return;
3707        }
3708
3709        tarteaucitron.addScript('//www.googleadservices.com/pagead/conversion_async.js', '', function () {
3710            window.google_trackConversion({
3711                google_conversion_id: tarteaucitron.user.adwordsconversionId,
3712                google_conversion_label: tarteaucitron.user.adwordsconversionLabel,
3713                google_conversion_language: tarteaucitron.user.adwordsconversionLanguage,
3714                google_conversion_format: tarteaucitron.user.adwordsconversionFormat,
3715                google_conversion_color: tarteaucitron.user.adwordsconversionColor,
3716                google_conversion_value: tarteaucitron.user.adwordsconversionValue,
3717                google_conversion_currency: tarteaucitron.user.adwordsconversionCurrency,
3718                google_custom_params: {
3719                    parameter1: tarteaucitron.user.adwordsconversionCustom1,
3720                    parameter2: tarteaucitron.user.adwordsconversionCustom2
3721                }
3722            });
3723        });
3724    }
3725};
3726
3727// googleadwordsremarketing
3728tarteaucitron.services.googleadwordsremarketing = {
3729    "key": "googleadwordsremarketing",
3730    "type": "ads",
3731    "name": "Google Adwords (remarketing)",
3732    "uri": "https://www.google.com/settings/ads",
3733    "needConsent": true,
3734    "cookies": [],
3735    "js": function () {
3736        "use strict";
3737        if (tarteaucitron.user.adwordsremarketingId === undefined) {
3738            return;
3739        }
3740
3741        tarteaucitron.addScript('//www.googleadservices.com/pagead/conversion_async.js', '', function () {
3742            window.google_trackConversion({
3743                google_conversion_id: tarteaucitron.user.adwordsremarketingId,
3744                google_remarketing_only: true
3745            });
3746        });
3747    }
3748};
3749
3750// google analytics (old)
3751tarteaucitron.services.gajs = {
3752    "key": "gajs",
3753    "type": "analytic",
3754    "name": "Google Analytics (ga.js)",
3755    "uri": "https://policies.google.com/privacy",
3756    "needConsent": true,
3757    "cookies": (function () {
3758        var googleIdentifier = tarteaucitron.user.gajsUa,
3759        tagUaCookie = '_gat_gtag_' + googleIdentifier,
3760        tagGCookie = '_ga_' + googleIdentifier;
3761
3762        tagUaCookie = tagUaCookie.replace(/-/g, '_');
3763        tagGCookie = tagGCookie.replace(/G-/g, '');
3764
3765        return ['_ga', '_gat', '_gid', '__utma', '__utmb', '__utmc', '__utmt', '__utmz', tagUaCookie, tagGCookie];
3766    })(),
3767    "js": function () {
3768        "use strict";
3769        window._gaq = window._gaq || [];
3770        window._gaq.push(['_setAccount', tarteaucitron.user.gajsUa]);
3771
3772        if (tarteaucitron.user.gajsAnonymizeIp) {
3773            window._gaq.push (['_gat._anonymizeIp']);
3774        }
3775
3776        if (tarteaucitron.user.gajsPageView) {
3777            window._gaq.push(['_trackPageview, ' + tarteaucitron.user.gajsPageView]);
3778        } else {
3779            window._gaq.push(['_trackPageview']);
3780        }
3781
3782        tarteaucitron.addScript('//www.google-analytics.com/ga.js', '', function () {
3783            if (typeof tarteaucitron.user.gajsMore === 'function') {
3784                tarteaucitron.user.gajsMore();
3785            }
3786        });
3787    }
3788};
3789
3790// google analytics
3791tarteaucitron.services.analytics = {
3792    "key": "analytics",
3793    "type": "analytic",
3794    "name": "Google Analytics (universal)",
3795    "uri": "https://policies.google.com/privacy",
3796    "needConsent": true,
3797    "cookies": (function () {
3798        var googleIdentifier = tarteaucitron.user.analyticsUa,
3799        tagUaCookie = '_gat_gtag_' + googleIdentifier,
3800        tagGCookie = '_ga_' + googleIdentifier;
3801
3802        tagUaCookie = tagUaCookie.replace(/-/g, '_');
3803        tagGCookie = tagGCookie.replace(/G-/g, '');
3804
3805        return ['_ga', '_gat', '_gid', '__utma', '__utmb', '__utmc', '__utmt', '__utmz', tagUaCookie, tagGCookie];
3806    })(),
3807    "js": function () {
3808        "use strict";
3809        window.GoogleAnalyticsObject = 'ga';
3810        window.ga = window.ga || function () {
3811            window.ga.q = window.ga.q || [];
3812            window.ga.q.push(arguments);
3813        };
3814        window.ga.l = new Date();
3815        tarteaucitron.addScript('https://www.google-analytics.com/analytics.js', '', function () {
3816            var uaCreate = {'cookieExpires': 34128000};
3817            tarteaucitron.extend(uaCreate, tarteaucitron.user.analyticsUaCreate || {});
3818            ga('create', tarteaucitron.user.analyticsUa, uaCreate);
3819
3820            if (tarteaucitron.user.analyticsAnonymizeIp) {
3821                ga('set', 'anonymizeIp', true);
3822            }
3823
3824            if (typeof tarteaucitron.user.analyticsPrepare === 'function') {
3825                tarteaucitron.user.analyticsPrepare();
3826            }
3827
3828            if (tarteaucitron.user.analyticsPageView) {
3829                ga('send', 'pageview', tarteaucitron.user.analyticsPageView);
3830            } else {
3831                ga('send', 'pageview');
3832            }
3833
3834            if (typeof tarteaucitron.user.analyticsMore === 'function') {
3835                tarteaucitron.user.analyticsMore();
3836            }
3837        });
3838    }
3839};
3840
3841// google analytics
3842tarteaucitron.services.gtag = {
3843    "key": "gtag",
3844    "type": "analytic",
3845    "name": "Google Analytics (gtag.js)",
3846    "uri": "https://policies.google.com/privacy",
3847    "needConsent": true,
3848    "cookies": (function () {
3849        var googleIdentifier = tarteaucitron.user.gtagUa,
3850        tagUaCookie = '_gat_gtag_' + googleIdentifier,
3851        tagGCookie = '_ga_' + googleIdentifier;
3852
3853        tagUaCookie = tagUaCookie.replace(/-/g, '_');
3854        tagGCookie = tagGCookie.replace(/G-/g, '');
3855
3856        return ['_ga', '_gat', '_gid', '__utma', '__utmb', '__utmc', '__utmt', '__utmz', tagUaCookie, tagGCookie];
3857    })(),
3858    "js": function () {
3859        "use strict";
3860        window.dataLayer = window.dataLayer || [];
3861        tarteaucitron.addScript('https://www.googletagmanager.com/gtag/js?id=' + tarteaucitron.user.gtagUa, '', function () {
3862            window.gtag = function gtag(){dataLayer.push(arguments);}
3863            gtag('js', new Date());
3864
3865            if (tarteaucitron.user.gtagCrossdomain) {
3866                /**
3867                 * https://support.google.com/analytics/answer/7476333?hl=en
3868                 * https://developers.google.com/analytics/devguides/collection/gtagjs/cross-domain
3869                 */
3870                gtag('config',tarteaucitron.user.gtagUa,{ 'anonymize_ip': true },{linker: {domains: tarteaucitron.user.gtagCrossdomain,}});
3871            } else {
3872                gtag('config', tarteaucitron.user.gtagUa, { 'anonymize_ip': true });
3873            }
3874
3875            if (typeof tarteaucitron.user.gtagMore === 'function') {
3876                tarteaucitron.user.gtagMore();
3877            }
3878        });
3879    }
3880};
3881
3882tarteaucitron.services.firebase = {
3883    "key": "firebase",
3884    "type": "analytic",
3885    "name": "Firebase",
3886    "uri": "https://firebase.google.com/support/privacy",
3887    "needConsent": true,
3888    "cookies": [],
3889    "js": function () {
3890        "use strict";
3891
3892        if (tarteaucitron.user.firebaseApiKey === undefined) {
3893            return;
3894        }
3895
3896        tarteaucitron.addScript('https://www.gstatic.com/firebasejs/8.6.2/firebase-app.js', '', function() {
3897            tarteaucitron.addScript('https://www.gstatic.com/firebasejs/8.6.2/firebase-analytics.js', '', function() {
3898
3899                var firebaseConfig = {
3900                  apiKey: tarteaucitron.user.firebaseApiKey,
3901                  authDomain: tarteaucitron.user.firebaseAuthDomain,
3902                  databaseURL: tarteaucitron.user.firebaseDatabaseUrl,
3903                  projectId: tarteaucitron.user.firebaseProjectId,
3904                  storageBucket: tarteaucitron.user.firebaseStorageBucket,
3905                  appId: tarteaucitron.user.firebaseAppId,
3906                  measurementId: tarteaucitron.user.firebaseMeasurementId,
3907                };
3908                firebase.initializeApp(firebaseConfig);
3909                firebase.analytics();
3910            });
3911        });
3912    }
3913};
3914
3915// genially
3916tarteaucitron.services.genially = {
3917    "key": "genially",
3918    "type": "api",
3919    "name": "genially",
3920    "uri": "https://www.genial.ly/cookies",
3921    "needConsent": true,
3922    "cookies": ['_gat', '_ga', '_gid'],
3923    "js": function () {
3924        "use strict";
3925
3926        tarteaucitron.fallback(['tac_genially'], function (x) {
3927            var frame_title = tarteaucitron.fixSelfXSS(x.getAttribute("title") || 'genially iframe'),
3928                width = x.getAttribute("width"),
3929                height = x.getAttribute("height"),
3930                geniallyid = x.getAttribute("geniallyid"),
3931                allowfullscreen= x.getAttribute("allowfullscreen");
3932
3933            return '<div style="position: relative; padding-bottom: 109.00%; padding-top: 0; height: 0;"><iframe style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;" title="' + frame_title + '" src="https://view.genial.ly/' + geniallyid + '" width="' + width + '" height="' + height + '" scrolling="auto" allowtransparency ' + (allowfullscreen == '0' ? '' : ' webkitallowfullscreen mozallowfullscreen allowfullscreen') + '></iframe></div>';
3934        });
3935    },
3936    "fallback": function () {
3937        "use strict";
3938        var id = 'genially';
3939        tarteaucitron.fallback(['tac_genially'], function (elem) {
3940            elem.style.width = elem.getAttribute('width') + 'px';
3941            elem.style.height = elem.getAttribute('height') + 'px';
3942            return tarteaucitron.engage(id);
3943        });
3944    }
3945};
3946
3947// google maps
3948tarteaucitron.services.googlemaps = {
3949    "key": "googlemaps",
3950    "type": "api",
3951    "name": "Google Maps",
3952    "uri": "https://policies.google.com/privacy",
3953    "needConsent": true,
3954    "cookies": [],
3955    "js": function () {
3956        "use strict";
3957        var mapOptions,
3958            map,
3959            uniqIds = [],
3960            i;
3961
3962        if (tarteaucitron.user.mapscallback === undefined) {
3963            tarteaucitron.user.mapscallback = 'tac_googlemaps_callback';
3964        }
3965
3966        // Add Google Maps libraries if any (https://developers.google.com/maps/documentation/javascript/libraries)
3967        var googleMapsLibraries = '';
3968        if (tarteaucitron.user.googlemapsLibraries) {
3969            googleMapsLibraries = '&libraries=' + tarteaucitron.user.googlemapsLibraries;
3970        }
3971
3972        tarteaucitron.addScript('//maps.googleapis.com/maps/api/js?v=3.exp&key=' + tarteaucitron.user.googlemapsKey + '&callback='+tarteaucitron.user.mapscallback + googleMapsLibraries);
3973
3974        window.tac_googlemaps_callback = function () {
3975            tarteaucitron.fallback(['googlemaps-canvas'], function (x) {
3976                var uniqId = '_' + Math.random().toString(36).substr(2, 9);
3977                uniqIds.push(uniqId);
3978                return '<div id="' + uniqId + '" zoom="' + x.getAttribute('zoom') + '" latitude="' + x.getAttribute('latitude') + '" longitude="' + x.getAttribute('longitude') + '" style="width:' + x.offsetWidth + 'px;height:' + x.offsetHeight + 'px"></div>';
3979            });
3980
3981            var i;
3982            for (i = 0; i < uniqIds.length; i += 1) {
3983                mapOptions = {
3984                    zoom: parseInt(document.getElementById(uniqIds[i]).getAttribute('zoom'), 10),
3985                    center: new google.maps.LatLng(parseFloat(document.getElementById(uniqIds[i]).getAttribute('latitude'), 10), parseFloat(document.getElementById(uniqIds[i]).getAttribute('longitude'), 10))
3986                };
3987                map = new google.maps.Map(document.getElementById(uniqIds[i]), mapOptions);
3988		new google.maps.Marker({position:{lat:parseFloat(document.getElementById(uniqIds[i]).getAttribute('latitude'), 10),lng:parseFloat(document.getElementById(uniqIds[i]).getAttribute('longitude'), 10)},map:map});
3989            }
3990        };
3991    },
3992    "fallback": function () {
3993        "use strict";
3994        var id = 'googlemaps';
3995        tarteaucitron.fallback(['googlemaps-canvas'], tarteaucitron.engage(id));
3996    }
3997};
3998
3999// googlemaps search
4000tarteaucitron.services.googlemapssearch = {
4001    "key": "googlemapssearch",
4002    "type": "api",
4003    "name": "Google Maps Search API",
4004    "uri": "https://policies.google.com/privacy",
4005    "needConsent": true,
4006    "cookies": ['nid'],
4007    "js": function () {
4008        "use strict";
4009        tarteaucitron.fallback(['googlemapssearch'], function (x) {
4010            var frame_title = tarteaucitron.fixSelfXSS(x.getAttribute("title") || 'Google search iframe'),
4011                width = x.getAttribute("width"),
4012                height = x.getAttribute("height"),
4013                // url = x.getAttribute("data-url");
4014                query = escape(x.getAttribute("data-search")),
4015                key = x.getAttribute("data-api-key");
4016
4017            return '<iframe title="' + frame_title + '" width="' + width +'" height="' + height + '" style="border:0" src="https://www.google.com/maps/embed/v1/place?q='+query+'&key='+key+'" allowfullscreen></iframe> '
4018        });
4019    },
4020    "fallback": function () {
4021        "use strict";
4022        var id = 'googlemapssearch';
4023        tarteaucitron.fallback(['googlemapssearch'], function (elem) {
4024            elem.style.width = elem.getAttribute('width') + 'px';
4025            elem.style.height = elem.getAttribute('height') + 'px';
4026            return tarteaucitron.engage(id);
4027        });
4028    }
4029};
4030
4031// googlemaps embed iframe
4032tarteaucitron.services.googlemapsembed = {
4033    "key": "googlemapsembed",
4034    "type": "api",
4035    "name": "Google Maps Embed",
4036    "uri": "https://policies.google.com/privacy",
4037    "needConsent": true,
4038    "cookies": ['apisid', 'hsid', 'nid', 'sapisid', 'sid', 'sidcc', 'ssid', '1p_jar'],
4039    "js": function () {
4040        "use strict";
4041        tarteaucitron.fallback(['googlemapsembed'], function (x) {
4042            var frame_title = tarteaucitron.fixSelfXSS(x.getAttribute("title") || 'Google maps iframe'),
4043                width = tarteaucitron.getElemWidth(x),
4044                height = tarteaucitron.getElemHeight(x),
4045                url = x.getAttribute("data-url");
4046
4047            return '<iframe title="' + frame_title + '" src="' + url + '" width="' + width + '" height="' + height + '" scrolling="no" allowtransparency allowfullscreen></iframe>';
4048        });
4049    },
4050    "fallback": function () {
4051        "use strict";
4052        var id = 'googlemapsembed';
4053        tarteaucitron.fallback(['googlemapsembed'], function (elem) {
4054            elem.style.width = tarteaucitron.getElemWidth(elem) + 'px';
4055            elem.style.height = tarteaucitron.getElemHeight(elem) + 'px';
4056            return tarteaucitron.engage(id);
4057        });
4058    }
4059};
4060
4061// google tag manager
4062tarteaucitron.services.googletagmanager = {
4063    "key": "googletagmanager",
4064    "type": "api",
4065    "name": "Google Tag Manager",
4066    "uri": "https://policies.google.com/privacy",
4067    "needConsent": true,
4068    "cookies": ['_ga', '_gat', '__utma', '__utmb', '__utmc', '__utmt', '__utmz', '__gads', '_drt_', 'FLC', 'exchange_uid', 'id', 'fc', 'rrs', 'rds', 'rv', 'uid', 'UIDR', 'UID', 'clid', 'ipinfo', 'acs'],
4069    "js": function () {
4070        "use strict";
4071        if (tarteaucitron.user.googletagmanagerId === undefined) {
4072            return;
4073        }
4074        window.dataLayer = window.dataLayer || [];
4075        window.dataLayer.push({
4076            'gtm.start': new Date().getTime(),
4077            event: 'gtm.js'
4078        });
4079        tarteaucitron.addScript('https://www.googletagmanager.com/gtm.js?id=' + tarteaucitron.user.googletagmanagerId);
4080    }
4081};
4082
4083// google tag manager multiple
4084tarteaucitron.services.multiplegoogletagmanager = {
4085  "key": "multiplegoogletagmanager",
4086  "type": "api",
4087  "name": "Google Tag Manager",
4088  "uri": "https://policies.google.com/privacy",
4089  "needConsent": true,
4090  "cookies": ['_ga', '_gat', '__utma', '__utmb', '__utmc', '__utmt', '__utmz', '__gads', '_drt_', 'FLC', 'exchange_uid', 'id', 'fc', 'rrs', 'rds', 'rv', 'uid', 'UIDR', 'UID', 'clid', 'ipinfo', 'acs'],
4091  "js": function () {
4092    "use strict";
4093    if (tarteaucitron.user.multiplegoogletagmanagerId === undefined) {
4094      return;
4095    }
4096    window.dataLayer = window.dataLayer || [];
4097    window.dataLayer.push({
4098      'gtm.start': new Date().getTime(),
4099      event: 'gtm.js'
4100    });
4101
4102    tarteaucitron.user.multiplegoogletagmanagerId.forEach(function (id) {
4103      tarteaucitron.addScript('https://www.googletagmanager.com/gtm.js?id=' + id);
4104    });
4105
4106  }
4107};
4108
4109// google webfonts
4110tarteaucitron.services.googlefonts = {
4111  "key": "googlefonts",
4112  "type": "api",
4113  "name": "Google Webfonts",
4114  "uri": "https://policies.google.com/privacy",
4115  "needConsent": true,
4116  "cookies": [],
4117  "js": function () {
4118    "use strict";
4119    if (tarteaucitron.user.googleFonts === undefined) {
4120      return;
4121    }
4122    tarteaucitron.addScript('//ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js', '', function () {
4123      WebFont.load({
4124        google: {
4125          families: tarteaucitron.user.googleFonts
4126        }
4127      });
4128    });
4129  }
4130};
4131
4132// hubspot
4133tarteaucitron.services.hubspot = {
4134    "key": "hubspot",
4135    "type": "analytic",
4136    "name": "Hubspot",
4137    "uri": "https://legal.hubspot.com/privacy-policy",
4138    "needConsent": true,
4139    "cookies": ['hubspotutk', 'fr', '__hstc', '__hssrc', '__hssc', '__cfduid'],
4140    "js": function () {
4141        "use strict";
4142        tarteaucitron.addScript('//js.hs-scripts.com/' + tarteaucitron.user.hubspotId + '.js', 'hs-script-loader');
4143    }
4144};
4145
4146// instagram
4147tarteaucitron.services.instagram = {
4148    "key": "instagram",
4149    "type": "social",
4150    "name": "Instagram",
4151    "uri": "https://www.instagram.com/legal/privacy/",
4152    "needConsent": true,
4153    "cookies": ['shbts', 'sessionid', 'csrftoken', 'rur', 'shbid', 'mid', 'ds_usr_id', 'ig_did', 'ig_cb', 'datr'],
4154    "js": function () {
4155        "use strict";
4156        tarteaucitron.fallback(['instagram_post'], function (x) {
4157            var frame_title = tarteaucitron.fixSelfXSS(x.getAttribute("title") || 'Instagram iframe'),
4158                post_id = x.getAttribute('postId'),
4159                post_permalink = x.getAttribute('data-instgrm-permalink'),
4160                embed_width = x.getAttribute('width'),
4161                embed_height = x.getAttribute('height'),
4162                frame_width,
4163                frame_height,
4164                post_frame;
4165
4166            if (post_permalink != null) {
4167                tarteaucitron.addScript('//www.instagram.com/embed.js', 'instagram-embed');
4168
4169                return '';
4170            }
4171
4172            if (post_id === undefined) {
4173                return "";
4174            }
4175
4176            if (embed_width !== undefined) {
4177                frame_width = 'width="' + embed_width + '" ';
4178            } else {
4179                frame_width = '"" ';
4180            }
4181            if (embed_height !== undefined) {
4182                frame_height = 'height="' + embed_height + '" ';
4183            } else {
4184                frame_height = '"" ';
4185            }
4186
4187            post_frame = '<iframe title="' + frame_title + '" src="//www.instagram.com/' + post_id + '/embed" ' + frame_width + frame_height + '></iframe>';
4188
4189            return post_frame;
4190        });
4191    },
4192    "fallback": function () {
4193        "use strict";
4194        var id = 'instagram';
4195        tarteaucitron.fallback(['instagram_post'], function (elem) {
4196            elem.style.width = elem.getAttribute('width') + 'px';
4197            elem.style.height = elem.getAttribute('height') + 'px';
4198            return tarteaucitron.engage(id);
4199        });
4200    }
4201};
4202
4203// jsapi
4204tarteaucitron.services.jsapi = {
4205    "key": "jsapi",
4206    "type": "api",
4207    "name": "Google jsapi",
4208    "uri": "https://policies.google.com/privacy",
4209    "needConsent": true,
4210    "cookies": [],
4211    "js": function () {
4212        "use strict";
4213        tarteaucitron.addScript('//www.google.com/jsapi');
4214    }
4215};
4216
4217// twitterwidgetsapi
4218tarteaucitron.services.twitterwidgetsapi = {
4219    "key": "twitterwidgetsapi",
4220    "type": "api",
4221    "name": "Twitter Widgets API",
4222    "uri": "https://support.twitter.com/articles/20170514",
4223    "needConsent": true,
4224    "cookies": [],
4225    "js": function () {
4226        "use strict";
4227        tarteaucitron.fallback(['tacTwitterAPI'], '');
4228        tarteaucitron.addScript('//platform.twitter.com/widgets.js', 'twitter-wjs');
4229    },
4230    "fallback": function () {
4231        "use strict";
4232        var id = 'twitterwidgetsapi';
4233        tarteaucitron.fallback(['tacTwitterAPI'], tarteaucitron.engage(id));
4234    }
4235};
4236
4237// recaptcha
4238tarteaucitron.services.recaptcha = {
vendor: 4,461 bytes, lines 4239-4382
4239    "key": "recaptcha",
4240    "type": "api",
4241    "name": "reCAPTCHA",
4242    "uri": "https://policies.google.com/privacy",
4243    "needConsent": true,
4244    "cookies": ['nid'],
4245    "js": function () {
4246        "use strict";
4247        window.tacRecaptchaOnLoad = tarteaucitron.user.recaptchaOnLoad || function() {};
4248        tarteaucitron.fallback(['g-recaptcha'], '');
4249
4250        if (tarteaucitron.user.recaptchaapi === undefined) {
4251            tarteaucitron.addScript('https://www.google.com/recaptcha/api.js?onload=tacRecaptchaOnLoad');
4252        } else {
4253            tarteaucitron.addScript('https://www.google.com/recaptcha/api.js?onload=tacRecaptchaOnLoad&render=' + tarteaucitron.user.recaptchaapi);
4254        }
4255
4256    },
4257    "fallback": function () {
4258        "use strict";
4259        var id = 'recaptcha';
4260        tarteaucitron.fallback(['g-recaptcha'], tarteaucitron.engage(id));
4261    }
4262};
4263
4264// linkedin
4265tarteaucitron.services.linkedin = {
4266    "key": "linkedin",
4267    "type": "social",
4268    "name": "Linkedin",
4269    "uri": "https://www.linkedin.com/legal/cookie_policy",
4270    "needConsent": true,
4271    "cookies": [],
4272    "js": function () {
4273        "use strict";
4274        tarteaucitron.fallback(['tacLinkedin'], '');
4275        tarteaucitron.addScript('//platform.linkedin.com/in.js');
4276        if (tarteaucitron.isAjax === true) {
4277            if (typeof IN !== "undefined") {
4278                IN.parse();
4279            }
4280        }
4281    },
4282    "fallback": function () {
4283        "use strict";
4284        var id = 'linkedin';
4285        tarteaucitron.fallback(['tacLinkedin'], tarteaucitron.engage(id));
4286    }
4287};
4288
4289// mautic
4290tarteaucitron.services.mautic = {
4291    "key": "mautic",
4292    "type": "analytic",
4293    "name": "Mautic",
4294    "uri": "https://www.mautic.org/privacy-policy/",
4295    "needConsent": true,
4296    "cookies": ['mtc_id', 'mtc_sid'],
4297    "js": function () {
4298        "use strict";
4299        if (tarteaucitron.user.mauticurl === undefined) {
4300            return;
4301        }
4302
4303        window.MauticTrackingObject = 'mt';
4304        window.mt = window.mt || function () {
4305            window.mt.q = window.mt.q || [];
4306            window.mt.q.push(arguments);
4307        };
4308
4309        tarteaucitron.addScript(tarteaucitron.user.mauticurl, '', function() {
4310            mt('send', 'pageview');
4311        });
4312    }
4313};
4314
4315// microsoftcampaignanalytics
4316tarteaucitron.services.microsoftcampaignanalytics = {
4317    "key": "microsoftcampaignanalytics",
4318    "type": "analytic",
4319    "name": "Microsoft Campaign Analytics",
4320    "uri": "https://privacy.microsoft.com/privacystatement/",
4321    "needConsent": true,
4322    "cookies": [],
4323    "js": function () {
4324        "use strict";
4325        if (tarteaucitron.user.microsoftcampaignanalyticsUUID === undefined) {
4326            return;
4327        }
4328
4329        tarteaucitron.addScript('//flex.atdmt.com/mstag/site/' + tarteaucitron.user.microsoftcampaignanalyticsUUID + '/mstag.js', 'mstag_tops', function () {
4330            window.mstag = {loadTag : function () {}, time : (new Date()).getTime()};
4331            window.mstag.loadTag("analytics", {dedup: "1", domainId: tarteaucitron.user.microsoftcampaignanalyticsdomainId, type: "1", actionid: tarteaucitron.user.microsoftcampaignanalyticsactionId});
4332        });
4333    }
4334};
4335
4336// onesignal
4337tarteaucitron.services.onesignal = {
4338    "key": "onesignal",
4339    "type": "api",
4340    "name": "OneSignal",
4341    "uri": "https://onesignal.com/privacy_policy",
4342    "needConsent": true,
4343    "cookies": [],
4344    "js": function () {
4345        "use strict";
4346        if (tarteaucitron.user.onesignalAppId === undefined) {
4347            return;
4348        }
4349        window.OneSignal = window.OneSignal || [];
4350
4351        window.OneSignal.push(function() {
4352           window.OneSignal.init({
4353              appId: tarteaucitron.user.onesignalAppId,
4354           });
4355        });
4356
4357        tarteaucitron.addScript('https://cdn.onesignal.com/sdks/OneSignalSDK.js');
4358    }
4359};
4360
4361// pinterest
4362tarteaucitron.services.pinterest = {
4363    "key": "pinterest",
4364    "type": "social",
4365    "name": "Pinterest",
4366    "uri": "https://about.pinterest.com/privacy-policy",
4367    "needConsent": true,
4368    "cookies": [],
4369    "js": function () {
4370        "use strict";
4371        tarteaucitron.fallback(['tacPinterest'], '');
4372        tarteaucitron.addScript('//assets.pinterest.com/js/pinit.js');
4373    },
4374    "fallback": function () {
4375        "use strict";
4376        var id = 'pinterest';
4377        tarteaucitron.fallback(['tacPinterest'], tarteaucitron.engage(id));
4378    }
4379};
4380
4381// prelinker
4382tarteaucitron.services.prelinker = {
4383    "key": "prelinker",
4384    "type": "ads",
4385    "name": "Prelinker",
4386    "uri": "http://www.prelinker.com/index/index/cgu/",
4387    "needConsent": true,
4388    "cookies": ['_sp_id.32f5', '_sp_ses.32f5'],
4389    "js": function () {
4390        "use strict";
4391        var uniqIds = [],
4392            i,
4393            uri;
4394
4395        tarteaucitron.fallback(['prelinker-canvas'], function (x) {
4396            var uniqId = '_' + Math.random().toString(36).substr(2, 9);
4397            uniqIds.push(uniqId);
4398            return '<div id="' + uniqId + '" siteId="' + x.getAttribute('siteId') + '" bannerId="' + x.getAttribute('bannerId') + '" defaultLanguage="' + x.getAttribute('defaultLanguage') + '" tracker="' + x.getAttribute('tracker') + '"></div>';
4399        });
4400
4401        for (i = 0; i < uniqIds.length; i += 1) {
4402            uri = 'http://promo.easy-dating.org/banner/index?';
4403            uri += 'site_id=' + document.getElementById(uniqIds[i]).getAttribute('siteId') + '&';
4404            uri += 'banner_id=' + document.getElementById(uniqIds[i]).getAttribute('bannerId') + '&';
4405            uri += 'default_language=' + document.getElementById(uniqIds[i]).getAttribute('defaultLanguage') + '&';
4406            uri += 'tr4ck=' + document.getElementById(uniqIds[i]).getAttribute('trackrt');
4407
4408            tarteaucitron.makeAsync.init(uri, uniqIds[i]);
4409        }
4410    },
4411    "fallback": function () {
4412        "use strict";
4413        var id = 'prelinker';
4414        tarteaucitron.fallback(['prelinker-canvas'], tarteaucitron.engage(id));
4415    }
4416};
4417
4418// prezi
4419tarteaucitron.services.prezi = {
4420    "key": "prezi",
4421    "type": "video",
4422    "name": "Prezi",
4423    "uri": "https://prezi.com/privacy-policy/",
4424    "needConsent": true,
4425    "cookies": [],
4426    "js": function () {
4427        "use strict";
4428        tarteaucitron.fallback(['prezi-canvas'], function (x) {
4429            var frame_title = tarteaucitron.fixSelfXSS(x.getAttribute("title") || 'Prezi iframe'),
4430                id = x.getAttribute("data-id"),
4431                width = x.getAttribute("width"),
4432                height = x.getAttribute("height"),
4433                url = 'https://prezi.com/embed/' + id + '/?bgcolor=ffffff&amp;lock_to_path=0&amp;autoplay=0&amp;autohide_ctrls=0';
4434
4435            return '<iframe title="' + frame_title + '" src="' + url + '" width="' + width + '" height="' + height + '" scrolling="no" allowtransparency allowfullscreen></iframe>';
4436        });
4437    },
4438    "fallback": function () {
4439        "use strict";
4440        var id = 'prezi';
4441        tarteaucitron.fallback(['prezi-canvas'], function (elem) {
4442            elem.style.width = elem.getAttribute('width') + 'px';
4443            elem.style.height = elem.getAttribute('height') + 'px';
4444            return tarteaucitron.engage(id);
4445        });
4446    }
4447};
4448
4449// pubdirecte
4450tarteaucitron.services.pubdirecte = {
4451    "key": "pubdirecte",
4452    "type": "ads",
4453    "name": "Pubdirecte",
4454    "uri": "http://pubdirecte.com/contact.php",
4455    "needConsent": true,
4456    "cookies": [],
4457    "js": function () {
4458        "use strict";
4459        var uniqIds = [],
4460            i,
4461            uri;
4462
4463        tarteaucitron.fallback(['pubdirecte-canvas'], function (x) {
4464            var uniqId = '_' + Math.random().toString(36).substr(2, 9);
4465            uniqIds.push(uniqId);
4466            return '<div id="' + uniqId + '" pid="' + x.getAttribute('pid') + '" ref="' + x.getAttribute('ref') + '"></div>';
4467        });
4468
4469        for (i = 0; i < uniqIds.length; i += 1) {
4470            uri = '//www.pubdirecte.com/script/banniere.php?';
4471            uri += 'id=' + document.getElementById(uniqIds[i]).getAttribute('pid') + '&';
4472            uri += 'ref=' + document.getElementById(uniqIds[i]).getAttribute('ref');
4473
4474            tarteaucitron.makeAsync.init(uri, uniqIds[i]);
4475        }
4476    },
4477    "fallback": function () {
4478        "use strict";
4479        var id = 'pubdirecte';
4480        tarteaucitron.fallback(['pubdirecte-canvas'], tarteaucitron.engage(id));
4481    }
4482};
4483
4484// purechat
4485tarteaucitron.services.purechat = {
4486    "key": "purechat",
4487    "type": "support",
4488    "name": "PureChat",
4489    "uri": "https://www.purechat.com/privacy",
4490    "needConsent": true,
4491    "cookies": [],
4492    "js": function () {
4493        "use strict";
4494        if (tarteaucitron.user.purechatId === undefined) {
4495            return;
4496        }
4497
4498        tarteaucitron.addScript('//app.purechat.com/VisitorWidget/WidgetScript', '', function () {
4499            try {
4500                window.w = new PCWidget({ c: tarteaucitron.user.purechatId, f: true });
4501            } catch (e) {}
4502        });
4503    }
4504};
4505
4506// rumbletalk
4507tarteaucitron.services.rumbletalk = {
4508    "key": "rumbletalk",
4509    "type": "social",
4510    "name": "RumbleTalk",
4511    "needConsent": true,
4512    "cookies": ['AWSALB'],
4513    "js": function () {
4514        "use strict";
4515        if (tarteaucitron.user.rumbletalkid === undefined) {
4516            return;
4517        }
4518
4519        tarteaucitron.addScript('https://rumbletalk.com/client/?' + tarteaucitron.user.rumbletalkid);
4520
4521        tarteaucitron.fallback(['rumbletalk'], function (x) {
4522            var width = tarteaucitron.getElemWidth(x),
4523                height = tarteaucitron.getElemHeight(x),
4524                id = x.getAttribute("data-id");
4525
4526                return '<div style="height: ' + height + 'px; width: ' + width + 'px;"><div id="' + id + '"></div></div>';
4527      });
4528    },
4529    "fallback": function () {
4530      "use strict";
4531        var id = 'rumbletalk';
4532            tarteaucitron.fallback(['rumbletalk'], function (elem) {
4533                elem.style.width = tarteaucitron.getElemWidth(elem) + 'px';
4534                elem.style.height = tarteaucitron.getElemHeight(elem) + 'px';
4535
4536                return tarteaucitron.engage(id);
4537            });
4538    }
4539  };
4540
4541// shareaholic
4542tarteaucitron.services.shareaholic = {
4543    "key": "shareaholic",
4544    "type": "social",
4545    "name": "Shareaholic",
4546    "uri": "https://shareaholic.com/privacy/choices",
4547    "needConsent": true,
4548    "cookies": ['__utma', '__utmb', '__utmc', '__utmz', '__utmt_Shareaholic%20Pageviews'],
4549    "js": function () {
4550        "use strict";
4551        if (tarteaucitron.user.shareaholicSiteId === undefined) {
4552            return;
4553        }
4554
4555        tarteaucitron.fallback(['shareaholic-canvas'], '');
4556        tarteaucitron.addScript('//dsms0mj1bbhn4.cloudfront.net/assets/pub/shareaholic.js', '', function () {
4557            try {
4558                Shareaholic.init(tarteaucitron.user.shareaholicSiteId);
4559            } catch (e) {}
4560        });
4561    },
4562    "fallback": function () {
4563        "use strict";
4564        var id = 'shareaholic';
4565        tarteaucitron.fallback(['shareaholic-canvas'], tarteaucitron.engage(id));
4566    }
4567};
4568
4569// shareasale
4570tarteaucitron.services.shareasale = {
4571    "key": "shareasale",
4572    "type": "ads",
4573    "name": "ShareASale",
4574    "uri": "https://www.shareasale.com/PrivacyPolicy.pdf",
4575    "needConsent": true,
4576    "cookies": [],
4577    "js": function () {
4578        "use strict";
4579        var uniqIds = [],
4580            i,
4581            uri;
4582
4583        tarteaucitron.fallback(['shareasale-canvas'], function (x) {
4584            var uniqId = '_' + Math.random().toString(36).substr(2, 9);
4585            uniqIds.push(uniqId);
4586            return '<div id="' + uniqId + '" amount="' + x.getAttribute('amount') + '" tracking="' + x.getAttribute('tracking') + '" transtype="' + x.getAttribute('transtype') + '" persale="' + x.getAttribute('persale') + '" perlead="' + x.getAttribute('perlead') + '" perhit="' + x.getAttribute('perhit') + '" merchantID="' + x.getAttribute('merchantID') + '"></div>';
4587        });
4588
4589        for (i = 0; i < uniqIds.length; i += 1) {
4590            uri = 'https://shareasale.com/sale.cfm?';
4591            uri += 'amount=' + document.getElementById(uniqIds[i]).getAttribute('amount') + '&';
4592            uri += 'tracking=' + document.getElementById(uniqIds[i]).getAttribute('tracking') + '&';
4593            uri += 'transtype=' + document.getElementById(uniqIds[i]).getAttribute('transtype') + '&';
4594            uri += 'persale=' + document.getElementById(uniqIds[i]).getAttribute('persale') + '&';
4595            uri += 'perlead=' + document.getElementById(uniqIds[i]).getAttribute('perlead') + '&';
4596            uri += 'perhit=' + document.getElementById(uniqIds[i]).getAttribute('perhit') + '&';
4597            uri += 'merchantID=' + document.getElementById(uniqIds[i]).getAttribute('merchantID');
4598
4599            document.getElementById(uniqIds[i]).innerHTML = '<img src=\'' + uri + '\' width=\'1\' height=\'1\' />';
4600        }
4601    },
4602    "fallback": function () {
4603        "use strict";
4604        var id = 'shareasale';
4605        tarteaucitron.fallback(['shareasale-canvas'], tarteaucitron.engage(id));
4606    }
4607};
4608
4609// sharethis
4610tarteaucitron.services.sharethis = {
4611    "key": "sharethis",
4612    "type": "social",
4613    "name": "ShareThis",
4614    "uri": "http://www.sharethis.com/legal/privacy/",
4615    "needConsent": true,
4616    "cookies": ['__unam'],
4617    "js": function () {
4618        "use strict";
4619        if (tarteaucitron.user.sharethisPublisher === undefined) {
4620            return;
4621        }
4622        var switchTo5x = true,
4623            uri = ('https:' === document.location.protocol ? 'https://ws' : 'http://w') + '.sharethis.com/button/buttons.js';
4624
4625        tarteaucitron.fallback(['tacSharethis'], '');
4626        tarteaucitron.addScript(uri, '', function () {
4627            stLight.options({publisher: tarteaucitron.user.sharethisPublisher, doNotHash: false, doNotCopy: false, hashAddressBar: false});
4628        });
4629
4630        if (tarteaucitron.isAjax === true) {
4631            if (typeof stButtons !== "undefined") {
4632                stButtons.locateElements();
4633            }
4634        }
4635    },
4636    "fallback": function () {
4637        "use strict";
4638        var id = 'sharethis';
4639        tarteaucitron.fallback(['tacSharethis'], tarteaucitron.engage(id));
4640    }
4641};
4642
4643// slideshare
4644tarteaucitron.services.slideshare = {
4645    "key": "slideshare",
4646    "type": "video",
4647    "name": "SlideShare",
4648    "uri": "https://www.linkedin.com/legal/privacy-policy",
4649    "needConsent": true,
4650    "cookies": [],
4651    "js": function () {
4652        "use strict";
4653        tarteaucitron.fallback(['slideshare-canvas'], function (x) {
4654            var frame_title = tarteaucitron.fixSelfXSS(x.getAttribute("title") || 'Slideshare iframe'),
4655                id = x.getAttribute("data-id"),
4656                width = x.getAttribute("width"),
4657                height = x.getAttribute("height"),
4658                url = '//www.slideshare.net/slideshow/embed_code/' + id;
4659
4660            return '<iframe title="' + frame_title + '" src="' + url + '" width="' + width + '" height="' + height + '" scrolling="no" allowtransparency allowfullscreen></iframe>';
4661        });
4662    },
4663    "fallback": function () {
4664        "use strict";
4665        var id = 'slideshare';
4666        tarteaucitron.fallback(['slideshare-canvas'], function (elem) {
4667            elem.style.width = elem.getAttribute('width') + 'px';
4668            elem.style.height = elem.getAttribute('height') + 'px';
4669            return tarteaucitron.engage(id);
4670        });
4671    }
4672};
4673
4674// soundcloud
4675tarteaucitron.services.soundcloud = {
4676    key: 'soundcloud',
4677    type: 'video',
4678    name: 'SoundCloud',
4679    needConsent: true,
4680    cookies: ['sc_anonymous_id', 'sclocale'],
4681    js: function () {
4682        "use strict";
4683        tarteaucitron.fallback(['soundcloud_player'], function (x) {
4684            var frame_title = tarteaucitron.fixSelfXSS(x.getAttribute("title") || 'Soundcloud iframe'),
4685                player_height = x.getAttribute('data-height'),
4686                frame_height  = 'height="' + player_height + '" ',
4687                playable_id   = x.getAttribute('data-playable-id'),
4688                playable_type = x.getAttribute('data-playable-type'),
4689                playable_url    = x.getAttribute('data-playable-url'),
4690                color         = x.getAttribute('data-color'),
4691                autoplay      = x.getAttribute('data-auto-play'),
4692                hideRelated   = x.getAttribute('data-hide-related'),
4693                showComments  = x.getAttribute('data-show-comments'),
4694                showUser      = x.getAttribute('data-show-user'),
4695                showReposts   = x.getAttribute('data-show-reposts'),
4696                showTeaser    = x.getAttribute('data-show-teaser'),
4697                visual        = x.getAttribute('data-visual'),
4698                artwork       = x.getAttribute('data-artwork');
4699
4700            var allowAutoplay = autoplay === 'true' ? 'allow="autoplay"' : '';
4701
4702            if (playable_id === undefined && playable_url === undefined) {
4703                return "";
4704            }
4705
4706            // Allow to embed from API results (playable_type + playable_id)
4707            var qs = '?url=https%3A//api.soundcloud.com/' + playable_type + '/' + playable_id;
4708            // Or from raw URL from Soundcloud website
4709            if (playable_url && playable_url.length >0)     qs = '?url=' + escape(playable_url);
4710
4711            if (hideRelated && hideRelated.length > 0)      qs += '&hide_related=' + hideRelated;
4712            if (color && color.length > 0)                  qs += '&color=' + color.replace('#', '%23');
4713            if (autoplay && autoplay.length > 0)            qs += '&auto_play=' + autoplay;
4714            if (showComments && showComments.length > 0)    qs += '&show_comments=' + showComments;
4715            if (hideRelated && hideRelated.length > 0)      qs += '&hide_related=' + hideRelated;
4716            if (showUser && showUser.length > 0)            qs += '&show_user=' + showUser;
4717            if (showReposts && showReposts.length > 0)      qs += '&show_reposts=' + showReposts;
4718            if (showTeaser && showTeaser.length > 0)        qs += '&show_teaser=' + showTeaser;
4719            if (visual && visual.length > 0)                qs += '&visual=' + visual;
4720            if (artwork && artwork.length >
4720 0)              qs += '&show_artwork=' + artwork;
4721
4722            return '<iframe title="' + frame_title + '" width="100%" ' + frame_height + ' scrolling="no" ' + allowAutoplay + ' src="https://w.soundcloud.com/player/' + qs + '"></iframe>';
4723        });
4724    },
4725    fallback: function () {
4726        "use strict";
4727        tarteaucitron.fallback(['soundcloud_player'], function (elem) {
4728            elem.style.height = elem.getAttribute('data-height') + 'px';
4729            return tarteaucitron.engage('soundcloud');
4730        });
4731    }
4732};
4733
4734// spotify
4735tarteaucitron.services.spotify = {
4736    "key": "spotify",
4737    "type": "video",
4738    "name": "Spotify",
4739    "uri": "https://www.spotify.com/us/legal/privacy-policy/",
4740    "needConsent": true,
4741    "cookies": ['sp_landing', '_ga', 'sp_ab', 'sp_landingref', 'sp_t', 'sp_usid', 'OptanonConsent', 'sp_m', 'spot'],
4742    "js": function () {
4743        "use strict";
4744        tarteaucitron.fallback(['spotify_player'], function (x) {
4745            var frame_title = tarteaucitron.fixSelfXSS(x.getAttribute("title") || 'Spotify iframe'),
4746                spotify_id = x.getAttribute("spotifyID"),
4747                spotify_width = x.getAttribute("width"),
4748                frame_width = 'width=',
4749                spotify_height = x.getAttribute("height"),
4750                frame_height = 'height=',
4751                spotify_frame;
4752
4753            if (spotify_id === undefined) {
4754                return "";
4755            }
4756            if (spotify_width !== undefined) {
4757                frame_width += '"' + spotify_width + '" ';
4758            } else {
4759                frame_width += '"" ';
4760            }
4761            if (spotify_height !== undefined) {
4762                frame_height +=  '"' + spotify_height + '" ';
4763            } else {
4764                frame_height += '"" ';
4765            }
4766            spotify_frame = '<iframe title="' + frame_title + '" src="//open.spotify.com/embed/' + spotify_id + '" ' + frame_width + frame_height + ' allowfullscreen></iframe>';
4767            return spotify_frame;
4768        });
4769    },
4770    "fallback": function () {
4771        "use strict";
4772        var id = 'spotify';
4773        tarteaucitron.fallback(['spotify_player'], function (elem) {
4774            elem.style.width = elem.getAttribute('width') + 'px';
4775            elem.style.height = elem.getAttribute('height') + 'px';
4776            return tarteaucitron.engage(id);
4777        });
4778    }
4779};
4780
4781// statcounter
4782tarteaucitron.services.statcounter = {
4783    "key": "statcounter",
4784    "type": "analytic",
4785    "name": "StatCounter",
4786    "uri": "https://fr.statcounter.com/about/legal/#privacy",
4787    "needConsent": true,
4788    "cookies": ['sc_is_visitor_unique'],
4789    "js": function () {
4790        "use strict";
4791        var uniqIds = [],
4792            i,
4793            uri = '//statcounter.com/counter/counter.js';
4794
4795        tarteaucitron.fallback(['statcounter-canvas'], function (x) {
4796            var uniqId = '_' + Math.random().toString(36).substr(2, 9);
4797            uniqIds.push(uniqId);
4798            return '<div id="' + uniqId + '"></div>';
4799        });
4800
4801        for (i = 0; i < uniqIds.length; i += 1) {
4802            tarteaucitron.makeAsync.init(uri, uniqIds[i]);
4803        }
4804    },
4805    "fallback": function () {
4806        "use strict";
4807        var id = 'statcounter';
4808        tarteaucitron.fallback(['statcounter-canvas'], tarteaucitron.engage(id));
4809    }
4810};
4811
4812// timelinejs
4813tarteaucitron.services.timelinejs = {
4814    "key": "timelinejs",
4815    "type": "api",
4816    "name": "Timeline JS",
4817    "uri": "http://timeline.knightlab.com/#help",
4818    "needConsent": true,
4819    "cookies": [],
4820    "js": function () {
4821        "use strict";
4822        tarteaucitron.fallback(['timelinejs-canvas'], function (x) {
4823            var frame_title = tarteaucitron.fixSelfXSS(x.getAttribute("title") || 'Twitter iframe'),
4824                spreadsheet_id = x.getAttribute("spreadsheet_id"),
4825                width = x.getAttribute("width"),
4826                height = x.getAttribute("height"),
4827                lang = x.getAttribute("lang_2_letter"),
4828                font = x.getAttribute("font"),
4829                map = x.getAttribute("map"),
4830                start_at_end = x.getAttribute("start_at_end"),
4831                hash_bookmark = x.getAttribute("hash_bookmark"),
4832                start_at_slide = x.getAttribute("start_at_slide"),
4833                start_zoom = x.getAttribute("start_zoom"),
4834                url = '//cdn.knightlab.com/libs/timeline/latest/embed/index.html?source=' + spreadsheet_id + '&font=' + font + '&maptype=' + map + '&lang=' + lang + '&start_at_end=' + start_at_end + '&hash_bookmark=' + hash_bookmark + '&start_at_slide=' + start_at_slide + '&start_zoom_adjust=' + start_zoom + '&height=' + height;
4835
4836            return '<iframe title="' + frame_title + '" src="' + url + '" width="' + width + '" height="' + height + '" allowtransparency allowfullscreen></iframe>';
4837        });
4838    },
4839    "fallback": function () {
4840        "use strict";
4841        var id = 'timelinejs';
4842        tarteaucitron.fallback(['timelinejs-canvas'], function (elem) {
4843            elem.style.width = elem.getAttribute('width') + 'px';
4844            elem.style.height = elem.getAttribute('height') + 'px';
4845            return tarteaucitron.engage(id);
4846        });
4847    }
4848};
4849
4850// tagcommander
4851tarteaucitron.services.tagcommander = {
4852    "key": "tagcommander",
4853    "type": "api",
4854    "name": "TagCommander",
4855    "uri": "https://www.commandersact.com/en/privacy/",
4856    "needConsent": true,
4857    "cookies": [],
4858    "js": function () {
4859        "use strict";
4860        if (tarteaucitron.user.tagcommanderid === undefined) {
4861            return;
4862        }
4863        tarteaucitron.addScript('https://cdn.tagcommander.com/' + tarteaucitron.user.tagcommanderid + '.js');
4864    }
4865};
4866
4867// typekit
4868tarteaucitron.services.typekit = {
4869    "key": "typekit",
4870    "type": "api",
4871    "name": "Typekit (adobe)",
4872    "uri": "https://www.adobe.com/privacy.html",
4873    "needConsent": true,
4874    "cookies": [],
4875    "js": function () {
4876        "use strict";
4877        if (tarteaucitron.user.typekitId === undefined) {
4878            return;
4879        }
4880        tarteaucitron.addScript('//use.typekit.net/' + tarteaucitron.user.typekitId + '.js', '', function () {
4881            try {
4882                Typekit.load();
4883            } catch (e) {}
4884        });
4885    }
4886};
4887
4888// twenga
4889tarteaucitron.services.twenga = {
4890    "key": "twenga",
4891    "type": "ads",
4892    "name": "Twenga",
4893    "uri": "http://www.twenga.com/privacy.php",
4894    "needConsent": true,
4895    "cookies": [],
4896    "js": function () {
4897        "use strict";
4898
4899        if (tarteaucitron.user.twengaId === undefined || tarteaucitron.user.twengaLocale === undefined) {
4900            return;
4901        }
4902
4903        tarteaucitron.addScript('//tracker.twenga.' + tarteaucitron.user.twengaLocale + '/st/tracker_' + tarteaucitron.user.twengaId + '.js');
4904    }
4905};
4906
4907// twitter
4908tarteaucitron.services.twitter = {
4909    "key": "twitter",
4910    "type": "social",
4911    "name": "Twitter",
4912    "uri": "https://support.twitter.com/articles/20170514",
4913    "needConsent": true,
4914    "cookies": [],
4915    "js": function () {
4916        "use strict";
4917        tarteaucitron.fallback(['tacTwitter'], '');
4918        tarteaucitron.addScript('//platform.twitter.com/widgets.js', 'twitter-wjs');
4919    },
4920    "fallback": function () {
4921        "use strict";
4922        var id = 'twitter';
4923        tarteaucitron.fallback(['tacTwitter'], tarteaucitron.engage(id));
4924    }
4925};
4926
4927// twitter embed
4928tarteaucitron.services.twitterembed = {
4929    "key": "twitterembed",
4930    "type": "social",
4931    "name": "Twitter (cards)",
4932    "uri": "https://support.twitter.com/articles/20170514",
4933    "needConsent": true,
4934    "cookies": [],
4935    "js": function () {
4936        "use strict";
4937        var uniqIds = [],
4938            i,
4939            e,
4940            html;
4941
4942        tarteaucitron.fallback(['twitterembed-canvas'], function (x) {
4943            var uniqId = '_' + Math.random().toString(36).substr(2, 9);
4944            uniqIds.push(uniqId);
4945            html = '<div id="' + uniqId + '" ';
4946            html += 'tweetid="' + x.getAttribute('tweetid') + '" ';
4947            html += 'theme="' + x.getAttribute('theme') + '" ';
4948            html += 'cards="' + x.getAttribute('cards') + '" ';
4949            html += 'conversation="' + x.getAttribute('conversation') + '" ';
4950            html += 'data-width="' + x.getAttribute('data-width') + '" ';
4951            html += 'data-align="' + x.getAttribute('data-align') + '" ';
4952            html += '></div>';
4953            return html;
4954        });
4955
4956        tarteaucitron.addScript('//platform.twitter.com/widgets.js', 'twitter-wjs', function () {
4957            var i;
4958            for (i = 0; i < uniqIds.length; i += 1) {
4959                e = document.getElementById(uniqIds[i]);
4960                twttr.widgets.createTweet(
4961                    e.getAttribute('tweetid'),
4962                    e,
4963                    {
4964                        theme: e.getAttribute('theme'),
4965                        cards: e.getAttribute('cards'),
4966                        conversation: e.getAttribute('conversation'),
4967                        lang: tarteaucitron.getLanguage(),
4968                        dnt: true,
4969                        width: e.getAttribute('data-width'),
4970                        align: e.getAttribute('data-align')
4971                    }
4972                );
4973            }
4974        });
4975    },
4976    "fallback": function () {
4977        "use strict";
4978        var id = 'twitterembed';
4979        tarteaucitron.fallback(['twitterembed-canvas'], function (elem) {
4980            elem.style.width = elem.getAttribute('data-width') + 'px';
4981            return tarteaucitron.engage(id);
4982        });
4983    }
4984};
4985
4986// twitter timeline
4987tarteaucitron.services.twittertimeline = {
4988    "key": "twittertimeline",
4989    "type": "social",
4990    "name": "Twitter (timelines)",
4991    "uri": "https://support.twitter.com/articles/20170514",
4992    "needConsent": true,
4993    "cookies": [],
4994    "js": function () {
4995        "use strict";
4996        tarteaucitron.fallback(['tacTwitterTimelines'], '');
4997        tarteaucitron.addScript('//platform.twitter.com/widgets.js', 'twitter-wjs');
4998    },
4999    "fallback": function () {
5000        "use strict";
5001        var id = 'twittertimeline';
5002        tarteaucitron.fallback(['tacTwitterTimelines'], tarteaucitron.engage(id));
5003    }
5004};
5005
5006// twitter universal website tag
5007tarteaucitron.services.twitteruwt = {
5008    "key": "twitteruwt",
5009    "type": "analytic",
5010    "name": "Twitter Universal Website Tag",
5011    "uri": "https://business.twitter.com/en/help/campaign-measurement-and-analytics/conversion-tracking-for-websites.html",
5012    "needConsent": true,
5013    "cookies": [],
5014    "js": function () {
5015        "use strict";
5016
5017        window.twq = function () {
5018            window.twq.exe ? window.twq.exe.apply(window.twq, arguments) : window.twq.queue.push(arguments);
5019        }
5020        window.twq.version = '1.1';
5021        window.twq.queue = [];
5022
5023        tarteaucitron.addScript('https://static.ads-twitter.com/uwt.js', '', function () {
5024            window.twq('init', tarteaucitron.user.twitteruwtId);
5025            window.twq('track', 'PageView');
5026        });
5027    }
5028};
5029
5030// user voice
5031tarteaucitron.services.uservoice = {
5032    "key": "uservoice",
5033    "type": "support",
5034    "name": "UserVoice",
5035    "uri": "https://www.uservoice.com/privacy/",
5036    "needConsent": true,
5037    "cookies": [],
5038    "js": function () {
5039        "use strict";
5040        if (tarteaucitron.user.userVoiceApi === undefined) {
5041            return;
5042        }
5043        tarteaucitron.addScript('//widget.uservoice.com/' + tarteaucitron.user.userVoiceApi + '.js');
5044    }
5045};
5046
5047// vimeo
5048tarteaucitron.services.vimeo = {
5049    "key": "vimeo",
5050    "type": "video",
5051    "name": "Vimeo",
5052    "uri": "https://vimeo.com/privacy",
5053    "needConsent": true,
5054    "cookies": ['__utmt_player', '__utma', '__utmb', '__utmc', '__utmv', 'vuid', '__utmz', 'player'],
5055    "js": function () {
5056        "use strict";
5057        tarteaucitron.fallback(['vimeo_player'], function (x) {
5058            var frame_title = tarteaucitron.fixSelfXSS(x.getAttribute("data-title") || x.getAttribute("title") || 'Vimeo iframe'),
5059                video_width = x.getAttribute("data-width") || x.getAttribute("width"),
5060                frame_width = 'width=',
5061                video_height = x.getAttribute("data-height") || x.getAttribute("height"),
5062                frame_height = 'height=',
5063
5064                video_id = x.getAttribute("data-videoID") || x.getAttribute("videoID"),
5065                video_allowfullscreen = x.getAttribute("data-allowfullscreen"),
5066                video_autopause = x.getAttribute("data-autopause") || '',
5067                video_autoplay = x.getAttribute("data-autoplay") || x.getAttribute("autoplay") || '',
5068                video_background = x.getAttribute("data-background") || '',
5069                video_byline = x.getAttribute("data-byline") || x.getAttribute("byline") || '',
5070                video_color = x.getAttribute("data-color") || '',
5071                video_controls = x.getAttribute("data-controls") || '',
5072                video_loop = x.getAttribute("data-loop") || x.getAttribute("loop") || '',
5073                video_maxheight = x.getAttribute("data-maxheight") || '',
5074                video_maxwidth = x.getAttribute("data-maxwidth") || '',
5075                video_muted = x.getAttribute("data-muted") || '',
5076                video_playsinline = x.getAttribute("data-playsinline") || '',
5077                video_portrait = x.getAttribute("data-portrait") || x.getAttribute("portrait") || '',
5078                video_speed = x.getAttribute("data-speed") || '',
5079                video_title = x.getAttribute("data-title") || x.getAttribute("title") || '',
5080                video_transparent = x.getAttribute("data-transparent") || '',
5081
5082                video_frame;
5083
5084
5085            if (video_id === undefined) {
5086                return "";
5087            }
5088            if (video_width !== undefined) {
5089                frame_width += '"' + video_width + '" ';
5090            } else {
5091                frame_width += '"" ';
5092            }
5093            if (video_height !== undefined) {
5094                frame_height += '"' + video_height + '" ';
5095            } else {
5096                frame_height += '"" ';
5097            }
5098
5099            var video_qs = "?";
5100
5101            if (video_title.length > 0) {
5102                video_qs += "title=" + video_title;
5103            }
5104
5105            if (video_byline.length > 0) {
5106                if (video_qs.length > 0) {
5107                    video_qs += "&";
5108                }
5109                video_qs += "byline=" + video_byline;
5110            }
5111
5112            if (video_portrait.length > 0) {
5113                if (video_qs.length > 0) {
5114                    video_qs += "&";
5115                }
5116                video_qs += "portrait=" + video_portrait;
5117            }
5118
5119            if (video_loop.length > 0) {
5120                if (video_qs.length > 0) {
5121                    video_qs += "&";
5122                }
5123                video_qs += "loop=" + video_loop;
5124            }
5125
5126            if (video_autoplay.length > 0) {
5127                if (video_qs.length > 0) {
5128                    video_qs += "&";
5129                }
5130                video_qs += "autoplay=" + video_autoplay;
5131            }
5132
5133            if (video_autopause.length > 0) {
5134                if (video_qs.length > 0) {
5135                    video_qs += "&";
5136                }
5137                video_qs += "autopause=" + video_autopause;
5138            }
5139
5140            if (video_background.length > 0) {
5141                if (video_qs.length > 0) {
5142                    video_qs += "&";
5143                }
5144                video_qs += "background=" + video_background;
5145            }
5146
5147            if (video_color.length > 0) {
5148                if (video_qs.length > 0) {
5149                    video_qs += "&";
5150                }
5151                video_qs += "color=" + video_color;
5152            }
5153
5154            if (video_controls.length > 0) {
5155                if (video_qs.length > 0) {
5156                    video_qs += "&";
5157                }
5158                video_qs += "controls=" + video_controls;
5159            }
5160
5161            if (video_maxheight.length > 0) {
5162                if (video_qs.length > 0) {
5163                    video_qs += "&";
5164                }
5165                video_qs += "maxheight=" + video_maxheight;
5166            }
5167
5168            if (video_maxwidth.length > 0) {
5169                if (video_qs.length > 0) {
5170                    video_qs += "&";
5171                }
5172                video_qs += "maxwidth=" + video_maxwidth;
5173            }
5174
5175            if (video_muted.length > 0) {
5176                if (video_qs.length > 0) {
5177                    video_qs += "&";
5178                }
5179                video_qs += "muted=" + video_muted;
5180            }
5181
5182            if (video_playsinline.length > 0) {
5183                if (video_qs.length > 0) {
5184                    video_qs += "&";
5185                }
5186                video_qs += "playsinline=" + video_playsinline;
5187            }
5188
5189            if (video_speed.length > 0) {
5190                if (video_qs.length > 0) {
5191                    video_qs += "&";
5192                }
5193                video_qs += "speed=" + video_speed;
5194            }
5195
5196            if (video_transparent.length > 0) {
5197                if (video_qs.length > 0) {
5198                    video_qs += "&";
5199                }
5200                video_qs += "transparent=" + video_transparent;
5201            }
5202
5203            if (video_qs === "?") {
5204                video_qs = "";
5205            }
5206
5207            video_frame = '<iframe title="' + frame_title + '" src="//player.vimeo.com/video/' + video_id + video_qs + '" ' + frame_width + frame_height  + (video_allowfullscreen == '0' ? '' : ' webkitallowfullscreen mozallowfullscreen allowfullscreen') + '></iframe>';
5208
5209            return video_frame;
5210        });
5211    },
5212    "fallback": function () {
5213        "use strict";
5214        var id = 'vimeo';
5215        tarteaucitron.fallback(['vimeo_player'], function (elem) {
5216            elem.style.width = elem.getAttribute('width') + 'px';
5217            elem.style.height = elem.getAttribute('height') + 'px';
5218            return tarteaucitron.engage(id);
5219        });
5220    }
5221};
5222
5223// visualrevenue
5224tarteaucitron.services.visualrevenue = {
5225    "key": "visualrevenue",
5226    "type": "analytic",
5227    "name": "VisualRevenue",
5228    "uri": "http://www.outbrain.com/legal/privacy-713/",
5229    "needConsent": true,
5230    "cookies": ['__vrf', '__vrm', '__vrl', '__vry', '__vru', '__vrid', '__vrz'],
5231    "js": function () {
5232        "use strict";
5233        if (tarteaucitron.user.visualrevenueId === undefined) {
5234            return;
5235        }
5236        window._vrq = window._vrq || [];
5237        window._vrq.push(['id', tarteaucitron.user.visualrevenueId]);
5238        window._vrq.push(['automate', true]);
5239        window._vrq.push(['track', function () {}]);
5240        tarteaucitron.addScript('http://a.visualrevenue.com/vrs.js');
5241    }
5242};
5243
5244// verizon dot tag
5245tarteaucitron.services.verizondottag = {
5246    "key": "verizondottag",
5247    "type": "analytic",
5248    "name": "Verizon Dot Tag",
5249    "uri": "https://developer.verizonmedia.com/native/guide/audience-management/dottags/",
5250    "needConsent": true,
5251    "cookies": [],
5252    "js": function () {
5253        "use strict";
5254
5255        window.dotq = window.dotq || [];
5256        window.dotq.push({
5257            'projectId': tarteaucitron.user.verizondottagProjectId,
5258            'properties': {'pixelId': tarteaucitron.user.verizondottagPixelId}
5259        });
5260
5261        tarteaucitron.addScript('https://s.yimg.com/wi/ytc.js', '', function () {
5262            //const items = window.dotq;
5263            window.dotq = [];
5264            window.dotq.push = function (item) {
5265                YAHOO.ywa.I13N.fireBeacon([item])
5266            };
5267            YAHOO.ywa.I13N.fireBeacon(items)
5268        });
5269    }
5270};
5271
5272// vshop
5273tarteaucitron.services.vshop = {
vendor: 4,922 bytes, lines 5274-5423
5274    "key": "vshop",
5275    "type": "ads",
5276    "name": "vShop",
5277    "uri": "http://vshop.fr/privacy-policy",
5278    "needConsent": true,
5279    "cookies": [],
5280    "js": function () {
5281        "use strict";
5282        tarteaucitron.fallback(['vcashW'], '');
5283        tarteaucitron.addScript('//vshop.fr/js/w.js');
5284    },
5285    "fallback": function () {
5286        "use strict";
5287        var id = 'vshop';
5288        tarteaucitron.fallback(['vcashW'], tarteaucitron.engage(id));
5289    }
5290};
5291
5292// wysistat
5293tarteaucitron.services.wysistat = {
5294    "key": "wysistat",
5295    "type": "analytic",
5296    "name": "Wysistat",
5297    "uri": "http://wysistat.net/contact/",
5298    "needConsent": true,
5299    "cookies": ['Wysistat'],
5300    "js": function () {
5301        "use strict";
5302        if (tarteaucitron.user.wysistat === undefined) {
5303            return;
5304        }
5305        tarteaucitron.addScript('//www.wysistat.com/statistique.js', '', function () {
5306            window.stat(tarteaucitron.user.wysistat.cli, tarteaucitron.user.wysistat.frm, tarteaucitron.user.wysistat.prm, tarteaucitron.user.wysistat.ce, tarteaucitron.user.wysistat.page, tarteaucitron.user.wysistat.roi, tarteaucitron.user.wysistat.prof, tarteaucitron.user.wysistat.cpt);
5307        });
5308    }
5309};
5310
5311// xiti
5312tarteaucitron.services.xiti = {
5313    "key": "xiti",
5314    "type": "analytic",
5315    "name": "Xiti",
5316    "uri": "https://helpcentre.atinternet-solutions.com/hc/fr/categories/360002439300-Privacy-Centre",
5317    "needConsent": true,
5318    "cookies": [],
5319    "js": function () {
5320        "use strict";
5321        if (tarteaucitron.user.xitiId === undefined) {
5322            return;
5323        }
5324        var Xt_param = 's=' + tarteaucitron.user.xitiId + '&p=',
5325            Xt_r,
5326            Xt_h,
5327            Xt_i,
5328            Xt_s,
5329            div = document.createElement('div');
5330        try {
5331            Xt_r = top.document.referrer;
5332        } catch (e) {
5333            Xt_r = document.referrer;
5334        }
5335        Xt_h = new Date();
5336        Xt_i = '<img style="display:none" border="0" alt="" ';
5337        Xt_i += 'src="http://logv3.xiti.com/hit.xiti?' + Xt_param;
5338        Xt_i += '&hl=' + Xt_h.getHours() + 'x' + Xt_h.getMinutes() + 'x' + Xt_h.getSeconds();
5339        if (parseFloat(navigator.appVersion) >= 4) {
5340            Xt_s = screen;
5341            Xt_i += '&r=' + Xt_s.width + 'x' + Xt_s.height + 'x' + Xt_s.pixelDepth + 'x' + Xt_s.colorDepth;
5342        }
5343
5344        div.innerHTML = Xt_i + '&ref=' + Xt_r.replace(/[<>"]/g, '').replace(/&/g, '$') + '" title="Internet Audience">';
5345        document.getElementsByTagName('body')[0].appendChild(div.firstChild);
5346
5347        if (typeof tarteaucitron.user.xitiMore === 'function') {
5348            tarteaucitron.user.xitiMore();
5349        }
5350    }
5351};
5352
5353// AT Internet
5354tarteaucitron.services.atinternet = {
5355    "key": "atinternet",
5356    "type": "analytic",
5357    "name": "AT Internet (privacy by design)",
5358    "uri": "https://helpcentre.atinternet-solutions.com/hc/fr/categories/360002439300-Privacy-Centre",
5359    "needConsent": true,
5360    "safeanalytic": false,
5361    "cookies": ['atidvisitor', 'atreman', 'atredir', 'atsession'],
5362    "js": function () {
5363        "use strict";
5364        if (tarteaucitron.user.atLibUrl === undefined) {
5365            return;
5366        }
5367
5368        if (tarteaucitron.user.atinternetAlreadyLoaded !== undefined) {
5369            return;
5370        }
5371
5372        tarteaucitron.addScript(tarteaucitron.user.atLibUrl, '', function() {
5373
5374            window.tag = new ATInternet.Tracker.Tag();
5375
5376            if (typeof tarteaucitron.user.atMore === 'function') {
5377                tarteaucitron.user.atMore();
5378            }
5379
5380            if (typeof window.tag.privacy !== 'undefined') {
5381                window.tag.privacy.setVisitorOptin();
5382            }
5383
5384            if (tarteaucitron.user.atinternetSendData !== false) {
5385                window.tag.page.send();
5386            }
5387        });
5388    },
5389    "fallback": function () {
5390        "use strict";
5391        if (tarteaucitron.user.atLibUrl === undefined) {
5392            return;
5393        }
5394
5395        tarteaucitron.user.atinternetAlreadyLoaded = true;
5396
5397        tarteaucitron.addScript(tarteaucitron.user.atLibUrl, '', function() {
5398
5399            window.tag = new ATInternet.Tracker.Tag();
5400
5401            if (typeof tarteaucitron.user.atMore === 'function') {
5402                tarteaucitron.user.atMore();
5403            }
5404
5405            if (typeof window.tag.privacy !== 'undefined') {
5406
5407                var visitorMode = window.tag.privacy.getVisitorMode();
5408                if (visitorMode !== null && visitorMode.name !== undefined && visitorMode.name == "optout") {
5409                    window.tag.privacy.setVisitorOptout();
5410                } else {
5411                    window.tag.privacy.setVisitorMode('cnil', 'exempt');
5412                }
5413            }
5414
5415            if (tarteaucitron.user.atinternetSendData !== false) {
5416                window.tag.page.send();
5417            }
5418        });
5419    }
5420};
5421
5422// AT Internet
5423tarteaucitron.services.atinternethightrack = {
5424    "key": "atinternethightrack",
5425    "type": "analytic",
5426    "name": "AT Internet",
5427    "uri": "https://helpcentre.atinternet-solutions.com/hc/fr/categories/360002439300-Privacy-Centre",
5428    "needConsent": true,
5429    "cookies": ['atidvisitor', 'atreman', 'atredir', 'atsession'],
5430    "js": function () {
5431        "use strict";
5432        if (tarteaucitron.user.atLibUrl === undefined) {
5433            return;
5434        }
5435
5436        tarteaucitron.addScript(tarteaucitron.user.atLibUrl, '', function() {
5437
5438            var tag = new ATInternet.Tracker.Tag();
5439
5440            if (typeof tarteaucitron.user.atMore === 'function') {
5441                tarteaucitron.user.atMore();
5442            }
5443        })
5444    }
5445};
5446
5447// youtube
5448tarteaucitron.services.youtube = {
5449    "key": "youtube",
5450    "type": "video",
5451    "name": "YouTube",
5452    "uri": "https://policies.google.com/privacy",
5453    "needConsent": true,
5454    "cookies": ['VISITOR_INFO1_LIVE', 'YSC', 'PREF', 'GEUP'],
5455    "js": function () {
5456        "use strict";
5457        tarteaucitron.fallback(['youtube_player'], function (x) {
5458            var frame_title = tarteaucitron.fixSelfXSS(x.getAttribute("title") || 'Youtube iframe'),
5459                video_id = x.getAttribute("videoID"),
5460                srcdoc = x.getAttribute("srcdoc"),
5461                loading = x.getAttribute("loading"),
5462                video_width = x.getAttribute("width"),
5463                frame_width = 'width=',
5464                video_height = x.getAttribute("height"),
5465                frame_height = 'height=',
5466                video_frame,
5467                allowfullscreen = x.getAttribute("allowfullscreen"),
5468                attrs = ["theme", "rel", "controls", "showinfo", "autoplay", "mute", "start", "loop"],
5469                params = attrs.filter(function (a) {
5470                  return x.getAttribute(a) !== null;
5471                }).map(function (a) {
5472                  return a + "=" + x.getAttribute(a);
5473               }).join("&");
5474
5475            if (video_id === undefined) {
5476                return "";
5477            }
5478            if (video_width !== undefined) {
5479                frame_width += '"' + video_width + '" ';
5480            } else {
5481                frame_width += '"" ';
5482            }
5483            if (video_height !== undefined) {
5484                frame_height +=  '"' + video_height + '" ';
5485            } else {
5486                frame_height += '"" ';
5487            }
5488
5489            if (srcdoc !== undefined && srcdoc !== null && srcdoc !== "") {
5490                srcdoc =  'srcdoc="' + srcdoc + '" ';
5491            } else {
5492                srcdoc = '';
5493            }
5494
5495            if (loading !== undefined && loading !== null && loading !== "") {
5496                loading =  'loading ';
5497            } else {
5498                loading = '';
5499            }
5500
5501            video_frame = '<iframe title="' + frame_title + '" type="text/html" ' + frame_width + frame_height + ' src="//www.youtube-nocookie.com/embed/' + video_id + '?' + params + '"' + (allowfullscreen == '0' ? '' : ' webkitallowfullscreen mozallowfullscreen allowfullscreen') + ' ' + srcdoc + ' ' + loading + '></iframe>';
5502            return video_frame;
5503        });
5504    },
5505    "fallback": function () {
5506        "use strict";
5507        var id = 'youtube';
5508        tarteaucitron.fallback(['youtube_player'], function (elem) {
5509            elem.style.width = elem.getAttribute('width') + 'px';
5510            elem.style.height = elem.getAttribute('height') + 'px';
5511            return tarteaucitron.engage(id);
5512        });
5513    }
5514};
5515
5516// youtube playlist
5517tarteaucitron.services.youtubeplaylist = {
5518    "key": "youtubeplaylist",
5519    "type": "video",
5520    "name": "YouTube (playlist)",
5521    "uri": "https://policies.google.com/privacy",
5522    "needConsent": true,
5523    "cookies": ['VISITOR_INFO1_LIVE', 'YSC', 'PREF', 'GEUP'],
5524    "js": function () {
5525        "use strict";
5526        tarteaucitron.fallback(['youtube_playlist_player'], function (x) {
5527            var frame_title = tarteaucitron.fixSelfXSS(x.getAttribute("title") || 'Youtube iframe'),
5528                playlist_id = x.getAttribute("playlistID"),
5529                video_width = x.getAttribute("width"),
5530                frame_width = 'width=',
5531                video_height = x.getAttribute("height"),
5532                frame_height = 'height=',
5533                video_frame,
5534                allowfullscreen = x.getAttribute("allowfullscreen"),
5535                params = 'theme=' + x.getAttribute("theme") + '&rel=' + x.getAttribute("rel") + '&controls=' + x.getAttribute("controls") + '&showinfo=' + x.getAttribute("showinfo") + '&autoplay=' + x.getAttribute("autoplay") + '&mute=' + x.getAttribute("mute");
5536
5537            if (playlist_id === undefined) {
5538                return "";
5539            }
5540            if (video_width !== undefined) {
5541                frame_width += '"' + video_width + '" ';
5542            } else {
5543                frame_width += '"" ';
5544            }
5545            if (video_height !== undefined) {
5546                frame_height +=  '"' + video_height + '" ';
5547            } else {
5548                frame_height += '"" ';
5549            }
5550            video_frame = '<iframe title="' + frame_title + '" type="text/html" ' + frame_width + frame_height + ' src="//www.youtube-nocookie.com/embed/videoseries?list=' + playlist_id + '&' + params + '"' + (allowfullscreen == '0' ? '' : ' webkitallowfullscreen mozallowfullscreen allowfullscreen') + '></iframe>';
5551            return video_frame;
5552        });
5553    },
5554    "fallback": function () {
5555        "use strict";
5556        var id = 'youtubeplaylist';
5557        tarteaucitron.fallback(['youtube_playlist_player'], function (elem) {
5558            elem.style.width = elem.getAttribute('width') + 'px';
5559            elem.style.height = elem.getAttribute('height') + 'px';
5560            return tarteaucitron.engage(id);
5561        });
5562    }
5563};
5564
5565// zopim
5566tarteaucitron.services.zopim = {
5567    "key": "zopim",
5568    "type": "support",
5569    "name": "Zopim",
5570    "uri": "https://www.zopim.com/privacy",
5571    "needConsent": true,
5572    "cookies": ['__zlcid', '__zprivacy'],
5573    "js": function () {
5574        "use strict";
5575        if (tarteaucitron.user.zopimID === undefined) {
5576            return;
5577        }
5578        tarteaucitron.addScript('//v2.zopim.com/?' + tarteaucitron.user.zopimID);
5579    }
5580};
5581
5582// kameleoon
5583tarteaucitron.services.kameleoon = {
5584    "key": "kameleoon",
5585    "type": "analytic",
5586    "name": "Kameleoon",
5587    "uri": "https://www.kameleoon.com/fr/compliance/rgpd",
5588    "needConsent": true,
5589    "cookies": [],
5590    "js": function () {
5591        "use strict";
5592        if (tarteaucitron.user.kameleoon !== undefined) {
5593            tarteaucitron.addScript("https://" + tarteaucitron.user.kameleoon + ".kameleoon.eu/kameleoon.js");
5594        }
5595    }
5596};
5597
5598// linkedin insight
5599tarteaucitron.services.linkedininsighttag = {
5600    "key": "linkedininsighttag",
5601    "type": "ads",
5602    "name": "Linkedin Insight",
5603    "uri": "https://www.linkedin.com/legal/cookie_policy",
5604    "needConsent": true,
5605    "cookies": [],
5606    "js": function () {
5607        "use strict";
5608        if (tarteaucitron.user.linkedininsighttag !== undefined) {
5609            window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || [];
5610            window._linkedin_data_partner_ids.push(tarteaucitron.user.linkedininsighttag);
5611        }
5612
5613        tarteaucitron.addScript('https://snap.licdn.com/li.lms-analytics/insight.min.js');
5614    }
5615};
5616
5617// xiti smartTag
5618tarteaucitron.services.xiti_smarttag = {
5619    "key": "xiti_smarttag",
5620    "type": "analytic",
5621    "name": "Xiti (SmartTag)",
5622    "uri": "https://helpcentre.atinternet-solutions.com/hc/fr/categories/360002439300-Privacy-Centre",
5623    "needConsent": true,
5624    "cookies": ["atidvisitor", "atreman", "atredir", "atsession", "attvtreman", "attvtsession"],
5625    "js": function () {
5626        "use strict";
5627        if (tarteaucitron.user.xiti_smarttagLocalPath !== undefined) {
5628            tarteaucitron.addScript(tarteaucitron.user.xiti_smarttagLocalPath, 'smarttag', null, null, "onload", "addTracker();");
5629        } else {
5630            var xitiSmarttagId = tarteaucitron.user.xiti_smarttagSiteId;
5631            if (xitiSmarttagId === undefined) {
5632                return;
5633            }
5634
5635            tarteaucitron.addScript('//tag.aticdn.net/' + xitiSmarttagId + '/smarttag.js', 'smarttag', null, null, "onload", "addTracker();");
5636        }
5637    }
5638};
5639
5640// facebook pixel
5641tarteaucitron.services.facebookpixel = {
5642    "key": "facebookpixel",
5643    "type": "ads",
5644    "name": "Facebook Pixel",
5645    "uri": "https://www.facebook.com/policy.php",
5646    "needConsent": true,
5647    "cookies": ['datr', 'fr', 'reg_ext_ref', 'reg_fb_gate', 'reg_fb_ref', 'sb', 'wd', 'x-src'],
5648    "js": function () {
5649        "use strict";
5650        var n;
5651        if(window.fbq)return;
5652        n=window.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)} ;
5653        if(!window._fbq)window._fbq=n;
5654        n.push=n;
5655        n.loaded=!0;
5656        n.version='2.0';
5657        n.queue=[];
5658        tarteaucitron.addScript('https://connect.facebook.net/en_US/fbevents.js');
5659        fbq('init', tarteaucitron.user.facebookpixelId);
5660        fbq('track', 'PageView');
5661
5662        if (typeof tarteaucitron.user.facebookpixelMore === 'function') {
5663            tarteaucitron.user.facebookpixelMore();
5664        }
5665    }
5666};
5667
5668//Issuu
5669tarteaucitron.services.issuu = {
5670    "key": "issuu",
5671    "type": "other",
5672    "name": "Issuu",
5673    "uri": "https://issuu.com/legal/privacy",
5674    "needConsent": true,
5675    "cookies": ['__qca', 'iutk', 'mc'],
5676    "js": function () {
5677        "use strict";
5678        tarteaucitron.fallback(['issuu_player'], function (x) {
5679            var frame_title = tarteaucitron.fixSelfXSS(x.getAttribute("title") || 'Issuu iframe'),
5680                issuu_id = x.getAttribute("issuuID"),
5681                issuu_width = x.getAttribute("width"),
5682                frame_width = 'width=',
5683                issuu_height = x.getAttribute("height"),
5684                frame_height = 'height=',
5685                issuu_frame,
5686                issuu_embed;
5687
5688            if (issuu_id === undefined) {
5689                return "";
5690            }
5691            if (issuu_width !== undefined) {
5692                frame_width += '"' + issuu_width + '" ';
5693            } else {
5694                frame_width += '"" ';
5695            }
5696            if (issuu_height !== undefined) {
5697                frame_height +=  '"' + issuu_height + '" ';
5698            } else {
5699                frame_height += '"" ';
5700            }
5701
5702
5703            if (issuu_id.match(/\d+\/\d+/)) { issuu_embed = '#' + issuu_id; } else if (issuu_id.match(/d=(.*)&u=(.*)/)) { issuu_embed = '?' + issuu_id; }
5704
5705
5706            issuu_frame = '<iframe title="' + frame_title + '" type="text/html" ' + frame_width + frame_height + ' src="//e.issuu.com/embed.html' + issuu_embed + '"></iframe>';
5707
5708            return issuu_frame;
5709        });
5710    },
5711    "fallback": function () {
5712        "use strict";
5713        var id = 'issuu';
5714        tarteaucitron.fallback(['issuu_player'], function (elem) {
5715            elem.style.width = elem.getAttribute('width') + 'px';
5716            elem.style.height = elem.getAttribute('height') + 'px';
5717            return tarteaucitron.engage(id);
5718        });
5719    }
5720};
5721
5722// webmecanik
5723tarteaucitron.services.webmecanik = {
vendor: 5,579 bytes, lines 5724-5888
5724    "key": "webmecanik",
5725    "type": "analytic",
5726    "name": "Webmecanik",
5727    "uri": "https://webmecanik.com/tos",
5728    "needConsent": true,
5729    "cookies": ['mtc_id', 'mtc_sid'],
5730    "js": function () {
5731        "use strict";
5732        if (tarteaucitron.user.webmecanikurl === undefined) {
5733            return;
5734        }
5735
5736        window.MauticTrackingObject = 'mt';
5737        window.mt = window.mt || function () {
5738            window.mt.q = window.mt.q || [];
5739            window.mt.q.push(arguments);
5740        };
5741
5742        tarteaucitron.addScript(tarteaucitron.user.webmecanikurl, '', function() {
5743            mt('send', 'pageview');
5744        });
5745    }
5746};
5747
5748// google analytics multiple
5749tarteaucitron.services.multiplegtag = {
5750    "key": "multiplegtag",
5751    "type": "analytic",
5752    "name": "Google Analytics (gtag.js)",
5753    "uri": "https://support.google.com/analytics/answer/6004245",
5754    "needConsent": true,
5755    "cookies": (function () {
5756
5757        var cookies = ['_ga', '_gat', '_gid', '__utma', '__utmb', '__utmc', '__utmt', '__utmz'];
5758
5759        if (tarteaucitron.user.multiplegtagUa !== undefined) {
5760            tarteaucitron.user.multiplegtagUa.forEach(function(ua) {
5761                cookies.push('_gat_gtag_' + ua.replace(/-/g, '_'));
5762                cookies.push('_ga_' + ua.replace(/G-/g, ''));
5763            });
5764        }
5765
5766        return cookies;
5767    })(),
5768    "js": function () {
5769        "use strict";
5770        window.dataLayer = window.dataLayer || [];
5771
5772	if (tarteaucitron.user.multiplegtagUa !== undefined) {
5773            tarteaucitron.user.multiplegtagUa.forEach(function(ua) {
5774                tarteaucitron.addScript('https://www.googletagmanager.com/gtag/js?id=' + ua, '', function () {
5775                    window.gtag = function gtag(){dataLayer.push(arguments);}
5776                    gtag('js', new Date());
5777                    gtag('config', ua);
5778                });
5779            });
5780	}
5781    }
5782};
5783
5784// Koban
5785tarteaucitron.services.koban = {
5786    "key": "koban",
5787    "type": "analytic",
5788    "name": "Koban",
5789    "uri": "https://koban.cloud/tos",
5790    "needConsent": true,
5791    "cookies": ['kbntrk'],
5792    "js": function () {
5793        "use strict";
5794        if (tarteaucitron.user.kobanurl === undefined) {
5795            return;
5796        }
5797        if (tarteaucitron.user.kobanapi === undefined) {
5798            return;
5799        }
5800        window.KobanObject = 'kb';
5801        window.kb = window.kb || function() {
5802            window.kb.q = window.kb.q || [];
5803            window.kb.q.push(arguments);
5804        };
5805        window.kb.l = new Date();
5806        kb('reg', tarteaucitron.user.kobanapi);
5807        tarteaucitron.addScript(tarteaucitron.user.kobanurl, '', function() {
5808        });
5809    }
5810};
5811
5812// matomo
5813
5814/*
5815    1. Set the following variable before the initialization :
5816
5817    tarteaucitron.user.matomoId = YOUR_SITE_ID_FROM_MATOMO;
5818    tarteaucitron.user.matomoHost = "YOUR_MATOMO_URL"; //eg: https://stat.mydomain.com/
5819
5820    2. Push the service :
5821
5822    (tarteaucitron.job = tarteaucitron.job || []).push('matomo');
5823
5824    3. HTML
5825    You don't need to add any html code, if the service is autorized, the javascript is added. otherwise no.
5826 */
5827tarteaucitron.services.matomo = {
5828    "key": "matomo",
5829    "type": "analytic",
5830    "name": "Matomo (privacy by design)",
5831    "uri": "https://matomo.org/faq/general/faq_146/",
5832    "needConsent": false,
5833    "cookies": ['_pk_ref', '_pk_cvar', '_pk_id', '_pk_ses', '_pk_hsr', 'piwik_ignore', '_pk_uid'],
5834    "js": function () {
5835        "use strict";
5836        if (tarteaucitron.user.matomoId === undefined) {
5837            return;
5838        }
5839
5840        window._paq = window._paq || [];
5841        window._paq.push(["setSiteId", tarteaucitron.user.matomoId]);
5842        window._paq.push(["setTrackerUrl", tarteaucitron.user.matomoHost + "piwik.php"]);
5843        window._paq.push(["setDoNotTrack", 1]);
5844        window._paq.push(["trackPageView"]);
5845        window._paq.push(["setIgnoreClasses", ["no-tracking", "colorbox"]]);
5846        window._paq.push(["enableLinkTracking"]);
5847        window._paq.push([function() {
5848            var self = this;
5849            function getOriginalVisitorCookieTimeout() {
5850                var now = new Date(),
5851                nowTs = Math.round(now.getTime() / 1000),
5852                visitorInfo = self.getVisitorInfo();
5853                var createTs = parseInt(visitorInfo[2]);
5854                var cookieTimeout = 33696000; // 13 mois en secondes
5855                var originalTimeout = createTs + cookieTimeout - nowTs;
5856                return originalTimeout;
5857            }
5858            this.setVisitorCookieTimeout( getOriginalVisitorCookieTimeout() );
5859        }]);
5860
5861        tarteaucitron.addScript(tarteaucitron.user.matomoHost + 'piwik.js', '', '', true, 'defer', true);
5862
5863        // waiting for piwik to be ready to check first party cookies
5864        var interval = setInterval(function() {
5865            if (typeof Piwik === 'undefined') return
5866
5867            clearInterval(interval)
5868
5869            // make piwik/matomo cookie accessible by getting tracker
5870            Piwik.getTracker();
5871
5872            // looping throught cookies
5873            var theCookies = document.cookie.split(';');
5874            for (var i = 1 ; i <= theCookies.length; i++) {
5875                var cookie = theCookies[i-1].split('=');
5876                var cookieName = cookie[0].trim();
5877
5878                // if cookie starts like a piwik one, register it
5879                if (cookieName.indexOf('_pk_') === 0) {
5880                    tarteaucitron.services.matomo.cookies.push(cookieName);
5881                }
5882            }
5883        }, 100)
5884    }
5885};
5886
5887
5888tarteaucitron.services.matomohightrack = {
5889    "key": "matomohightrack",
5890    "type": "analytic",
5891    "name": "Matomo",
5892    "uri": "https://matomo.org/faq/general/faq_146/",
5893    "needConsent": false,
5894    "cookies": ['_pk_ref', '_pk_cvar', '_pk_id', '_pk_ses', '_pk_hsr', 'piwik_ignore', '_pk_uid'],
5895    "js": function () {
5896        "use strict";
5897        if (tarteaucitron.user.matomoId === undefined) {
5898            return;
5899        }
5900
5901        window._paq = window._paq || [];
5902        window._paq.push(["setSiteId", tarteaucitron.user.matomoId]);
5903        window._paq.push(["setTrackerUrl", tarteaucitron.user.matomoHost + "piwik.php"]);
5904        window._paq.push(["trackPageView"]);
5905        window._paq.push(["setIgnoreClasses", ["no-tracking", "colorbox"]]);
5906        window._paq.push(["enableLinkTracking"]);
5907        window._paq.push([function() {
5908            var self = this;
5909        }]);
5910
5911        tarteaucitron.addScript(tarteaucitron.user.matomoHost + 'piwik.js', '', '', true, 'defer', true);
5912
5913        // waiting for piwik to be ready to check first party cookies
5914        var interval = setInterval(function() {
5915            if (typeof Piwik === 'undefined') return
5916
5917            clearInterval(interval)
5918            Piwik.getTracker();
5919
5920            var theCookies = document.cookie.split(';');
5921            for (var i = 1 ; i <= theCookies.length; i++) {
5922                var cookie = theCookies[i-1].split('=');
5923                var cookieName = cookie[0].trim();
5924
5925                if (cookieName.indexOf('_pk_') === 0) {
5926                    tarteaucitron.services.matomo.cookies.push(cookieName);
5927                }
5928            }
5929        }, 100)
5930    }
5931};
5932
5933// Hotjar
5934 /*
5935    1. Set the following variable before the initialization :
5936     tarteaucitron.user.hotjarId = YOUR_WEBSITE_ID;
5937    tarteaucitron.user.HotjarSv = XXXX; // Can be found in your website tracking code as "hjvs=XXXX"
5938     2. Push the service :
5939     (tarteaucitron.job = tarteaucitron.job || []).push('hotjar');
5940     3. HTML
5941    You don't need to add any html code, if the service is autorized, the javascript is added. otherwise no.
5942  */
5943tarteaucitron.services.hotjar = {
5944    "key": "hotjar",
5945    "type": "analytic",
5946    "name": "Hotjar",
5947    "uri": "https://help.hotjar.com/hc/en-us/categories/115001323967-About-Hotjar",
5948    "needConsent": true,
5949    "cookies": ["hjClosedSurveyInvites", "_hjDonePolls", "_hjMinimizedPolls", "_hjDoneTestersWidgets", "_hjMinimizedTestersWidgets", "_hjDoneSurveys", "_hjIncludedInSample", "_hjShownFeedbackMessage", "_hjAbsoluteSessionInProgress", "_hjIncludeInPageviewSample", "_hjid"],
5950    "js": function () {
5951        "use strict";
5952        if (tarteaucitron.user.hotjarId === undefined || tarteaucitron.user.HotjarSv === undefined) {
5953            return;
5954        }
5955         window.hj = window.hj || function() {
5956            (window.hj.q = window.hj.q || []).push(arguments)
5957        };
5958        window._hjSettings = {
5959            hjid: tarteaucitron.user.hotjarId,
5960            hjsv: tarteaucitron.user.HotjarSv
5961        };
5962         var uri = 'https://static.hotjar.com/c/hotjar-';
5963        var extension = '.js?sv=';
5964        tarteaucitron.addScript(uri + window._hjSettings.hjid + extension + window._hjSettings.hjsv);
5965    }
5966};
5967
5968// bing ads universal event tracking
5969tarteaucitron.services.bingads = {
5970    'key': 'bingads',
5971    'type': 'ads',
5972    'name': 'Bing Ads Universal Event Tracking',
5973    'uri': 'https://advertise.bingads.microsoft.com/en-us/resources/policies/personalized-ads',
5974    'needConsent': true,
5975    'cookies': ['_uetmsclkid', '_uetvid', '_uetsid'],
5976    'js': function () {
5977        'use strict';
5978        //var u = tarteaucitron.user.bingadsTag || 'uetq';
5979        window.uetq = window.uetq || [];
5980
5981        tarteaucitron.addScript('https://bat.bing.com/bat.js', '', function () {
5982            var bingadsCreate = {ti: tarteaucitron.user.bingadsID};
5983
5984            if ('bingadsStoreCookies' in tarteaucitron.user) {
5985                bingadsCreate['storeConvTrackCookies'] = tarteaucitron.user.bingadsStoreCookies;
5986            }
5987
5988            bingadsCreate.q = window.uetq;
5989            window.uetq = new UET(bingadsCreate);
5990            window.uetq.push('pageLoad');
5991        });
5992    }
5993};
5994
5995//Matterport
5996tarteaucitron.services.matterport = {
5997  "key": "matterport",
5998  "type": "other",
5999  "name": "Matterport",
6000  "uri": "https://matterport.com/es/legal/privacy-policy/",
6001  "needConsent": true,
6002  "cookies": ['__cfduid', 'ajs_anonymous_id', 'ajs_group_id', 'ajs_user_id'],
6003  "js": function () {
6004    "use strict";
6005    tarteaucitron.fallback(['matterport'], function (x) {
6006      var frame_title = tarteaucitron.fixSelfXSS(x.getAttribute("title") || 'Matterport iframe'),
6007        matterport_id = x.getAttribute("matterportID"),
6008        matterport_width = x.getAttribute("width"),
6009        frame_width = 'width=',
6010        matterport_height = x.getAttribute("height"),
6011        frame_height = 'height=',
6012        matterport_parameters = x.getAttribute("parameters"),
6013        matterport_allowfullscreen = x.getAttribute('allowfullscreen'),
6014        matterport_frame;
6015
6016      if (matterport_id === undefined) {
6017        return "";
6018      }
6019      if (matterport_width !== undefined) {
6020        frame_width += '"' + matterport_width + '" ';
6021      } else {
6022        frame_width += '"" ';
6023      }
6024      if (matterport_height !== undefined) {
6025        frame_height += '"' + matterport_height + '" ';
6026      } else {
6027        frame_height += '"" ';
6028      }
6029      if (matterport_parameters === undefined) {
6030        return "";
6031      }
6032
6033      matterport_frame = '<iframe title="' + frame_title + '" type="text/html" ' + frame_width + frame_height + ' src="https://my.matterport.com/show/?m=' + matterport_id + '&utm_source=hit-content' + matterport_parameters + '"' + (matterport_allowfullscreen == '0' ? '' : ' webkitallowfullscreen mozallowfullscreen allowfullscreen') + '></iframe>';
6034      return matterport_frame;
6035    });
6036  },
6037  "fallback": function () {
6038    "use strict";
6039    var id = 'matterport';
6040    tarteaucitron.fallback(['matterport'], function (elem) {
6041      elem.style.width = elem.getAttribute('width') + 'px';
6042      elem.style.height = elem.getAttribute('height') + 'px';
6043      return tarteaucitron.engage(id);
6044    });
6045  }
6046};
6047
6048// Adform
6049tarteaucitron.services.adform = {
vendor: 4,102 bytes, lines 6050-6182
6050    "key": "adform",
6051    "type": "ads",
6052    "name": "Adform",
6053    "uri": "https://site.adform.com/privacy-center/overview/",
6054    "needConsent": true,
6055    "cookies": [],
6056    "js": function () {
6057        "use strict";
6058
6059        if (tarteaucitron.user.adformpm === undefined || tarteaucitron.user.adformpagename === undefined) {
6060            return;
6061        }
6062
6063        window._adftrack = {
6064            pm: tarteaucitron.user.adformpm,
6065            divider: encodeURIComponent('|'),
6066            pagename: encodeURIComponent(tarteaucitron.user.adformpagename)
6067        };
6068
6069        tarteaucitron.addScript("https://track.adform.net/serving/scripts/trackpoint/async/");
6070    }
6071};
6072
6073// Active Campaign
6074tarteaucitron.services.activecampaign = {
6075    "key": "activecampaign",
6076    "type": "ads",
6077    "name": "Active Campaign",
6078    "uri": "https://www.activecampaign.com/privacy-policy/",
6079    "needConsent": true,
6080    "cookies": [],
6081    "js": function () {
6082        "use strict";
6083        if (tarteaucitron.user.actid === undefined) {
6084            return;
6085        }
6086
6087        window.trackcmp_email = '';
6088
6089        tarteaucitron.addScript('https://trackcmp.net/visit?actid='+tarteaucitron.user.actid+'&e='+encodeURIComponent(trackcmp_email)+'&r='+encodeURIComponent(document.referrer)+'&u='+encodeURIComponent(window.location.href));
6090    }
6091};
6092
6093// tawk.to
6094tarteaucitron.services.tawkto = {
6095    "key": "tawkto",
6096    "type": "support",
6097    "name": "Tawk.to chat",
6098    "uri": "https://www.tawk.to/data-protection/",
6099    "needConsent": true,
6100    "cookies": [],
6101    "js": function () {
6102        "use strict";
6103        if (tarteaucitron.user.tawktoId === undefined) {
6104            return;
6105        }
6106
6107        window.Tawk_API=window.Tawk_API||{};
6108        window.Tawk_LoadStart=new Date();
6109
6110        tarteaucitron.addScript('https://embed.tawk.to/' + tarteaucitron.user.tawktoId + '/default');
6111    }
6112
6113};
6114
6115// getquanty
6116tarteaucitron.services.getquanty = {
6117    "key": "getquanty",
6118    "type": "analytic",
6119    "name": "GetQuanty",
6120    "uri": "https://www.getquanty.com/mentions-legales/",
6121    "needConsent": true,
6122    "cookies": ['_first_pageview', 'eqy_sessionid', 'eqy_siteid','cluid','eqy_company', 'cluid', 'gq_utm', '_jsuid'],
6123    "js": function () {
6124        "use strict";
6125        if (tarteaucitron.user.getguanty === undefined) {
6126            return;
6127        }
6128
6129        if (tarteaucitron.user.getquantyAlreadyLoaded !== undefined) {
6130            return;
6131        }
6132
6133        tarteaucitron.addScript('https://get.smart-data-systems.com/gq?site_id=' + tarteaucitron.user.getguanty + '&consent=1');
6134    },
6135    "fallback": function () {
6136        "use strict";
6137        if (tarteaucitron.user.getguanty === undefined) {
6138            return;
6139        }
6140
6141        tarteaucitron.user.getquantyAlreadyLoaded = true;
6142
6143        tarteaucitron.addScript('https://get.smart-data-systems.com/gq?site_id=' + tarteaucitron.user.getguanty + '&notrack=1');
6144    }
6145};
6146
6147// emolytics
6148tarteaucitron.services.emolytics = {
6149    "key": "emolytics",
6150    "type": "analytic",
6151    "name": "Emolytics",
6152    "uri": "https://www.emolytics.com/main/privacy-policy.php",
6153    "needConsent": true,
6154    "cookies": ['__hssc', '__hssrc', '__hstc', '_ga', '_gid', 'hubspotutk', 'lang', 'incap_ses_', 'nlbi_', 'visid_incap_'],
6155    "js": function () {
6156        "use strict";
6157        if (tarteaucitron.user.emolyticsID === undefined) {
6158            return;
6159        }
6160        var scriptEmolytics = document.createElement('script');
6161        scriptEmolytics.text = 'var getsmily_id="'+tarteaucitron.user.emolyticsID+'";';
6162        document.getElementsByTagName('body')[0].appendChild(scriptEmolytics);
6163        tarteaucitron.addScript('https://cdn.emolytics.com/script/emolytics-widget.js')
6164    }
6165};
6166
6167// youtubeapi
6168tarteaucitron.services.youtubeapi = {
6169    "key": "youtubeapi",
6170    "type": "video",
6171    "name": "Youtube (Js API)",
6172    "uri": "https://policies.google.com/privacy",
6173    "needConsent": true,
6174    "cookies": [],
6175    "js": function () {
6176        "use strict";
6177        tarteaucitron.addScript('https://www.youtube.com/player_api');
6178    }
6179};
6180
6181// Facil'ITI
6182tarteaucitron.services.faciliti = {
6183    "key": "faciliti",
6184    "type": "other",
6185    "name": "Facil'ITI",
6186    "uri": "https://ws.facil-iti.com/mentions-legales.html",
6187    "needConsent": true,
6188    "cookies": ['FACIL_ITI_LS'],
6189    "js": function () {
6190        "use strict";
6191        if (tarteaucitron.user.facilitiID === undefined) {
6192            return;
6193        }
6194
6195        (function(w, d, s, f) {
6196            w[f] = w[f] || {conf: function () { (w[f].data = w[f].data || []).push(arguments);}};
6197            var l = d.createElement(s), e = d.getElementsByTagName(s)[0];
6198            l.async = 1; l.src = 'https://ws.facil-iti.com/tag/faciliti-tag.min.js'; e.parentNode.insertBefore(l, e);
6199        }(window, document, 'script', 'FACIL_ITI'));
6200        FACIL_ITI.conf('userId', tarteaucitron.user.facilitiID);
6201    }
6202};
6203
6204// userlike
6205tarteaucitron.services.userlike = {
6206    "key": "userlike",
6207    "type": "support",
6208    "name": "Userlike",
6209    "uri": "https://www.userlike.com/en/terms#privacy-policy",
6210    "needConsent": true,
6211    "cookies": ['uslk_s', 'uslk_e'],
6212    "js": function () {
6213        "use strict";
6214        if (tarteaucitron.user.userlikeKey === undefined) {
6215            return;
6216        }
6217        tarteaucitron.addScript('//userlike-cdn-widgets.s3-eu-west-1.amazonaws.com/' + tarteaucitron.user.userlikeKey);
6218    }
6219};
6220
6221// adobeanalytics
6222tarteaucitron.services.adobeanalytics = {
6223    "key": "adobeanalytics",
6224    "type": "analytic",
6225    "name": "Adobe Analytics",
6226    "uri": "https://www.adobe.com/privacy/policy.html",
6227    "needConsent": true,
6228    "cookies": ['s_ecid', 's_cc', 's_sq', 's_vi', 's_fid'],
6229    "js": function () {
6230        "use strict";
6231        if (tarteaucitron.user.adobeanalyticskey === undefined) {
6232            return;
6233        }
6234        tarteaucitron.addScript('//assets.adobedtm.com/launch-' + tarteaucitron.user.adobeanalyticskey + '.min.js');
6235    }
6236};
6237
6238// woopra customer journey analytics
6239tarteaucitron.services.woopra = {
6240    'key': 'woopra',
6241    'type': 'analytic',
6242    'name': 'Woopra Customer Journey Analytics',
6243    'uri': 'https://www.woopra.com/privacy',
6244    'needConsent': true,
6245    'cookies': ['wooTracker', 'intercom-session-erbfalba', 'intercom-id-erbfalba'],
6246    'js': function () {
6247        'use strict';
6248        //var w = tarteaucitron.user.woopraDomain;
6249        //window[w] = window[w] || [];
6250
6251        (function(){
6252		  var t,i,e,n=window,o=document,a=arguments,s="script",r=["config","track","identify","visit","push","call","trackForm","trackClick"],c=function(){var t,i=this;for(i._e=[],t=0;r.length>t;t++)(function(t){i[t]=function(){return i._e.push([t].concat(Array.prototype.slice.call(arguments,0))),i}})(r[t])};for(n._w=n._w||{},t=0;a.length>t;t++)n._w[a[t]]=n[a[t]]=n[a[t]]||new c;i=o.createElement(s),i.async=1,i.src="//static.woopra.com/js/w.js",e=o.getElementsByTagName(s)[0],e.parentNode.insertBefore(i,e)
6253		})("woopra");
6254
6255		woopra.config({
6256		    domain: tarteaucitron.user.woopraDomain
6257		});
6258		woopra.track();
6259    }
6260};
6261
6262// ausha
6263tarteaucitron.services.ausha = {
6264    key: "ausha",
6265    type: "video",
6266    name: "Ausha",
6267    uri: "https://www.ausha.co/protection-personal-data/",
6268    needConsent: true,
6269    cookies: [],
6270    js: function () {
6271        "use strict";
6272        tarteaucitron.fallback(['ausha_player'], function (x) {
6273            var player_height = x.getAttribute('data-height'),
6274                podcast_id    = x.getAttribute('data-podcast-id'),
6275                player_id     = x.getAttribute('data-player-id'),
6276                playlist      = x.getAttribute('data-playlist'),
6277                color         = x.getAttribute('data-color');
6278
6279            if (podcast_id === undefined) {
6280                return "";
6281            }
6282
6283            var src = 'https://player.ausha.co/index.html?podcastId=' + podcast_id + '&v=3';
6284
6285            if (playlist && playlist.length > 0)    src += '&playlist=' + playlist;
6286            if (color && color.length > 0)          src += '&color=' + color.replace('#', '%23');
6287            if (player_id && player_id.length > 0)  src += '&playerId=' + player_id;
6288
6289            return '<iframe id="' + player_id + '" loading="lazy" width="100%" height="' + player_height + '" scrolling="no" frameborder="no" src="' + src + '"></iframe>';
6290        });
6291
6292        tarteaucitron.addScript('//player.ausha.co/ausha-player.js', 'ausha-player');
6293    },
6294    fallback: function () {
6295        "use strict";
6296        tarteaucitron.fallback(['ausha_player'], function (elem) {
6297            elem.style.height = elem.getAttribute('data-height') + 'px';
6298            return tarteaucitron.engage('ausha');
6299        });
6300    }
6301};
6302
6303// visiblee
6304tarteaucitron.services.visiblee = {
6305    key: "visiblee",
6306    type: "analytic",
6307    name: "Visiblee",
6308    uri: "http://confidentiality.visiblee.io/fr/confidentialite",
6309    needConsent: true,
6310    cookies: ["visitor_v2", tarteaucitron.user.visibleedomain, "check", "campaign_ref_"+tarteaucitron.user.visibleedomain, "reload_"+tarteaucitron.user.visibleedomain],
6311    js: function () {
6312        "use strict";
6313
6314        if (tarteaucitron.user.visibleeclientid === undefined) {
6315            return;
6316        }
6317        tarteaucitron.addScript('//www.link-page.info/tracking_'+tarteaucitron.user.visibleeclientid+'.js', 'visiblee');
6318    }
6319};
6320
6321// bandcamp
6322tarteaucitron.services.bandcamp = {
6323    key: "bandcamp",
6324    type: "video",
6325    name: "Bandcamp",
6326    uri: "https://bandcamp.com",
6327    readmoreLink: "https://bandcamp.com/privacy",
6328    needConsent: true,
6329    cookies: ['client_id', 'BACKENDID', '_comm_playlist'],
6330    js: function () {
6331        "use strict";
6332        tarteaucitron.fallback(['bandcamp_player'], function (x) {
6333            var frame_title = tarteaucitron.fixSelfXSS(x.getAttribute("title") || 'Bandcamp iframe'),
6334                album_id        = x.getAttribute("albumID"),
6335                bandcamp_width  = x.getAttribute("width"),
6336                frame_width     = 'width=',
6337                bandcamp_height = x.getAttribute("height"),
6338                frame_height    = 'height=',
6339                attrs = ["size", "bgcol", "linkcol", "artwork", "minimal", "tracklist", "package", "transparent"],
6340                params = attrs.filter(function (a) {
6341                    return x.getAttribute(a) !== null;
6342                }).map(function (a) {
6343                    if (a && a.length > 0) return a + "=" + x.getAttribute(a);
6344                }).join("/");
6345
6346                if (album_id === null) {
6347                    return "";
6348                }
6349
6350                if (bandcamp_width !== null || bandcamp_width !== "") {
6351                    frame_width += '"' + bandcamp_width + '" ';
6352                } else {
6353                    frame_width += '"" ';
6354                }
6355                if (bandcamp_height !== null || bandcamp_height !== "") {
6356                    frame_height += '"' + bandcamp_height + '" ';
6357                } else {
6358                    frame_height += '"" ';
6359                }
6360
6361                var src = 'https://bandcamp.com/EmbeddedPlayer/album=' + album_id + '/' + params;
6362
6363                return '<iframe title="' + frame_title + '"' + frame_width + frame_height + 'src="' + src + '" frameborder="0" allowfullscreen seamless></iframe>';
6364        });
6365    },
6366    fallback: function () {
6367        "use strict";
6368        tarteaucitron.fallback(['bandcamp_player'], function (elem) {
6369            elem.style.width = elem.getAttribute('width');
6370            elem.style.height = elem.getAttribute('height');
6371            return tarteaucitron.engage('bandcamp');
6372        });
6373    }
6374};
6375;
6376/*global tarteaucitron */
6377tarteaucitron.lang = {
6378
6379    "middleBarHead": "☝ 🍪",
6380    "adblock": "Bonjour! Ce site joue la transparence et vous donne le choix des services tiers à activer.",
6381    "adblock_call": "Merci de désactiver votre adblocker pour commencer la personnalisation.",
6382    "reload": "Recharger la page",
6383
6384    "alertBigScroll": "En continuant de défiler,",
6385    "alertBigClick": "En poursuivant votre navigation,",
6386    "alertBig": "vous acceptez l'utilisation de services tiers pouvant installer des cookies",
6387
6388    "alertBigPrivacy": "Ce site utilise des cookies et vous donne le contrôle sur ceux que vous souhaitez activer",
6389    "alertSmall": "Gestion des services",
6390    "acceptAll": "Tout accepter",
6391    "personalize": "Personnaliser",
6392    "close": "Fermer",
6393
6394    "privacyUrl": "Politique de confidentialité",
6395
6396    "all": "Préférences pour tous les services",
6397
6398    "info": "Protection de votre vie privée",
6399    "disclaimer": "Sur <a href=\"https://www.est-ensemble.fr/\">https://www.est-ensemble.fr/</a> nous utilisons des outils de mesure d’audience pour comprendre le parcours de navigation des utilisateurs afin d’optimiser l’ergonomie et la mise en avant des contenus les plus pertinents. Certaines fonctionnalités du site telles que les lecteurs vidéos font par ailleurs appel à des services proposés par des tiers. Le détail des cookies qui pourraient être installés dans votre navigateur et des informations qu’ils retiennent figure ci-dessous. Vous pouvez accepter ou refuser les cookies en fonction de leurs usages et suivants vos préférences.",
6400    "allow": "Autoriser",
6401    "deny": "Interdire",
6402    "noCookie": "Ce service ne dépose aucun cookie.",
6403    "useCookie": "Ce service peut déposer",
6404    "useCookieCurrent": "Ce service a déposé",
6405    "useNoCookie": "Ce service n'a déposé aucun cookie.",
6406    "more": "En savoir plus",
6407    "source": "Voir le site officiel",
6408    "credit": "Gestion des cookies par tarteaucitron.js",
6409    "noServices": "Ce site n'utilise aucun cookie nécessitant votre consentement.",
6410
6411    "toggleInfoBox": "Afficher/masquer les informations sur le stockage des cookies",
6412    "title": "Gestion de vos préférences sur les cookies",
6413    "cookieDetail": "Détail des cookies",
6414    "ourSite": "sur notre site",
6415    "newWindow": "(nouvelle fenêtre)",
6416    "allowAll": "Tout accepter",
6417    "denyAll": "Tout refuser",
6418
6419    "icon": "Cookies",
6420
6421    "fallback": "est désactivé.",
6422    "allowed": "autorisé",
6423    "disallowed": "interdit",
6424
6425    "ads": {
6426        "title": "Régies publicitaires",
6427        "details": "Les régies publicitaires permettent de générer des revenus en commercialisant les espaces publicitaires du site."
6428    },
6429    "analytic": {
6430        "title": "Mesure d'audience",
6431        "details": "Les services de mesure d'audience permettent de générer des statistiques de fréquentation utiles à l'amélioration du site."
6432    },
6433    "social": {
6434        "title": "Réseaux sociaux",
6435        "details": "Les réseaux sociaux permettent d'améliorer la convivialité du site et aident à sa promotion via les partages."
6436    },
6437    "video": {
6438        "title": "Vidéos",
6439        "details": "Les services de partage de vidéo permettent d'enrichir le site de contenu multimédia et augmentent sa visibilité."
6440    },
6441    "comment": {
6442        "title": "Commentaires",
6443        "details": "Les gestionnaires de commentaires facilitent le dépôt de vos commentaires et luttent contre le spam."
6444    },
6445    "support": {
6446        "title": "Support",
6447        "details": "Les services de support vous permettent d'entrer en contact avec l'équipe du site et d'aider à son amélioration."
6448    },
6449    "api": {
6450        "title": "APIs",
6451        "details": "Les APIs permettent de charger des scripts : géolocalisation, moteurs de recherche, traductions, ..."
6452    },
6453    "other": {
6454        "title": "Autre",
6455        "details": "Services visant à afficher du contenu web."
6456    },
6457
6458    "mandatoryTitle": "Cookies obligatoires",
6459    "mandatoryText": "Ce site utilise des cookies nécessaires à son bon fonctionnement. Ils ne peuvent pas être désactivés."
6460};
6461;
6462(function ($) {
6463  Drupal.behaviors.tacjs = {
6464  attach: function(context) {
6465    tarteaucitron.init({
6466      privacyUrl: "" /* Privacy policy url */,
6467
6468      hashtag: "#tarteaucitron" /* Open the panel with this hashtag */,
6469      cookieName: "tarteaucitron" /* Cookie name */,
6470
6471      orientation: "bottom" /* Banner position (top - bottom - middle - popup) */,
6472
6473      groupServices: false /* Group services by category */,
6474
6475      showAlertSmall: false /* Show the small banner on bottom right */,
6476      cookieslist: false /* Show the cookie list */,
6477
6478      showIcon: false /* Show cookie icon to manage cookies */,
6479      // "iconSrc": "", /* Optionnal: URL or base64 encoded image */
6480      iconPosition:
6481        "BottomRight" /* Position of the icon between BottomRight, BottomLeft, TopRight and TopLeft */,
6482
6483      adblocker: false /* Show a Warning if an adblocker is detected */,
6484
6485      DenyAllCta: true /* Show the deny all button */,
6486      AcceptAllCta: true /* Show the accept all button when highPrivacy on */,
6487      highPrivacy: true /* HIGHLY RECOMMANDED Disable auto consent */,
6488
6489      handleBrowserDNTRequest: false /* If Do Not Track == 1, disallow all */,
6490
6491      removeCredit: true /* Remove credit link */,
6492      moreInfoLink: true /* Show more info link */,
6493      useExternalCss: true /* If false, the tarteaucitron.css file will be loaded */,
6494      useExternalJs: true,
6495
6496      //"cookieDomain": ".my-multisite-domaine.fr", /* Shared cookie for subdomain website */
6497
6498      readmoreLink:
6499        "" /* Change the default readmore link pointing to tarteaucitron.io */,
6500
6501      mandatory: false /* Show a message about mandatory cookies */,
6502    });
6503
6504    (tarteaucitron.job = tarteaucitron.job || []).push("gtag");
6505    tarteaucitron.user.gtagUa= "G-2G4S7R60ZS";
6506    (tarteaucitron.job = tarteaucitron.job || []).push("twitterwidgetsapi");
6507    (tarteaucitron.job = tarteaucitron.job || []).push("facebooklikebox");
6508    (tarteaucitron.job = tarteaucitron.job || []).push("ytsubscribe");
6509    (tarteaucitron.job = tarteaucitron.job || []).push("youtube");
6510    (tarteaucitron.job = tarteaucitron.job || []).push("recaptcha");
6511
6512    var allowBtns = document.getElementsByClassName("tarteaucitronAllow");
6513    for (i = 0; i < allowBtns.length; i++) {
6514        tarteaucitron.addClickEventToElement(allowBtns[i], function () {
6515            tarteaucitron.userInterface.respond(this, true);
6516        });
6517    }
6518  }
6519}
6520
6521})(jQuery);
6522;
6523// html5shiv @rem remysharp.com/html5-enabling-script
6524// iepp v1.6.2 @jon_neal iecss.com/print-protector
6525// Dual licensed under the MIT or GPL Version 2 licenses
6526/*@cc_on(function(a,b){function r(a){var b=-1;while(++b<f)a.createElement(e[b])}if(!(!window.attachEvent||!b.createStyleSheet||!function(){var a=document.createElement("div");a.innerHTML="<elem></elem>";return a.childNodes.length!==1}())){a.iepp=a.iepp||{};var c=a.iepp,d=c.html5elements||"abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",e=d.split("|"),f=e.length,g=new RegExp("(^|\\s)("+d+")","gi"),h=new RegExp("<(/*)("+d+")","gi"),i=/^\s*[\{\}]\s*$/,j=new RegExp("(^|[^\\n]*?\\s)("+d+")([^\\n]*)({[\\n\\w\\W]*?})","gi"),k=b.createDocumentFragment(),l=b.documentElement,m=l.firstChild,n=b.createElement("body"),o=b.createElement("style"),p=/print|all/,q;c.getCSS=function(a,b){if(a+""===undefined)return"";var d=-1,e=a.length,f,g=[];while(++d<e){f=a[d];if(f.disabled)continue;b=f.media||b,p.test(b)&&g.push(c.getCSS(f.imports,b),f.cssText),b="all"}return g.join("")},c.parseCSS=function(a){var b=[],c;while((c=j.exec(a))!=null)b.push(((i.exec(c[1])?"\n":c[1])+c[2]+c[3]).replace(g,"$1.iepp_$2")+c[4]);return b.join("\n")},c.writeHTML=function(){var a=-1;q=q||b.body;while(++a<f){var c=b.getElementsByTagName(e[a]),d=c.length,g=-1;while(++g<d)c[g].className.indexOf("iepp_")<0&&(c[g].className+=" iepp_"+e[a])}k.appendChild(q),l.appendChild(n),n.className=q.className,n.id=q.id,n.innerHTML=q.innerHTML.replace(h,"<$1font")},c._beforePrint=function(){o.styleSheet.cssText=c.parseCSS(c.getCSS(b.styleSheets,"all")),c.writeHTML()},c.restoreHTML=function(){n.innerHTML="",l.removeChild(n),l.appendChild(q)},c._afterPrint=function(){c.restoreHTML(),o.styleSheet.cssText=""},r(b),r(k);if(c.disablePP)return;m.insertBefore(o,m.firstChild),o.media="print",o.className="iepp-printshim",a.attachEvent("onbeforeprint",c._beforePrint),a.attachEvent("onafterprint",c._afterPrint)}})(this,document);@*/
6527;
6528/*! Respond.js v1.0.1pre: min/max-width media query polyfill. (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs */
6529(function(e,h){e.respond={};respond.update=function(){};respond.mediaQueriesSupported=h;if(h){return}var u=e.document,r=u.documentElement,i=[],k=[],p=[],o={},g=30,f=u.getElementsByTagName("head")[0]||r,b=f.getElementsByTagName("link"),d=[],a=function(){var B=b,w=B.length,z=0,y,x,A,v;for(;z<w;z++){y=B[z],x=y.href,A=y.media,v=y.rel&&y.rel.toLowerCase()==="stylesheet";if(!!x&&v&&!o[x]){if(y.styleSheet&&y.styleSheet.rawCssText){m(y.styleSheet.rawCssText,x,A);o[x]=true}else{if(!/^([a-zA-Z]+?:(\/\/)?)/.test(x)||x.replace(RegExp.$1,"").split("/")[0]===e.location.host){d.push({href:x,media:A})}}}}t()},t=function(){if(d.length){var v=d.shift();n(v.href,function(w){m(w,v.href,v.media);o[v.href]=true;t()})}},m=function(G,v,x){var E=G.match(/@media[^\{]+\{([^\{\}]+\{[^\}\{]+\})+/gi),H=E&&E.length||0,v=v.substring(0,v.lastIndexOf("/")),w=function(I){return I.replace(/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,"$1"+v+"$2$3")},y=!H&&x,B=0,A,C,D,z,F;if(v.length){v+="/"}if(y){H=1}for(;B<H;B++){A=0;if(y){C=x;k.push(w(G))}else{C=E[B].match(/@media ([^\{]+)\{([\S\s]+?)$/)&&RegExp.$1;k.push(RegExp.$2&&w(RegExp.$2))}z=C.split(",");F=z.length;for(;A<F;A++){D=z[A];i.push({media:D.match(/(only\s+)?([a-zA-Z]+)(\sand)?/)&&RegExp.$2,rules:k.length-1,minw:D.match(/\(min\-width:[\s]*([\s]*[0-9]+)px[\s]*\)/)&&parseFloat(RegExp.$1),maxw:D.match(/\(max\-width:[\s]*([\s]*[0-9]+)px[\s]*\)/)&&parseFloat(RegExp.$1)})}}j()},l,q,j=function(E){var v="clientWidth",x=r[v],D=u.compatMode==="CSS1Compat"&&x||u.body[v]||x,z={},C=u.createDocumentFragment(),B=b[b.length-1],w=(new Date()).getTime();if(E&&l&&w-l<g){clearTimeout(q);q=setTimeout(j,g);return}else{l=w}for(var y in i){var F=i[y];if(!F.minw&&!F.maxw||(!F.minw||F.minw&&D>=F.minw)&&(!F.maxw||F.maxw&&D<=F.maxw)){if(!z[F.media]){z[F.media]=[]}z[F.media].push(k[F.rules])}}for(var y in p){if(p[y]&&p[y].parentNode===f){f.removeChild(p[y])}}for(var y in z){var G=u.createElement("style"),A=z[y].join("\n");G.type="text/css";G.media=y;if(G.styleSheet){G.styleSheet.cssText=A}else{G.appendChild(u.createTextNode(A))}C.appendChild(G);p.push(G)}f.insertBefore(C,B.nextSibling)},n=function(v,x){var w=c();if(!w){return}w.open("GET",v,true);
6529w.onreadystatechange=function(){if(w.readyState!=4||w.status!=200&&w.status!=304){return}x(w.responseText)};if(w.readyState==4){return}w.send(null)},c=(function(){var v=false;try{v=new XMLHttpRequest()}catch(w){v=new ActiveXObject("Microsoft.XMLHTTP")}return function(){return v}})();a();respond.update=a;function s(){j(true)}if(e.addEventListener){e.addEventListener("resize",s,false)}else{if(e.attachEvent){e.attachEvent("onresize",s)}}})(this,(function(f){if(f.matchMedia){return true}var e,i=document,c=i.documentElement,g=c.firstElementChild||c.firstChild,h=!i.body,d=i.body||i.createElement("body"),b=i.createElement("div"),a="only all";b.id="mq-test-1";b.style.cssText="position:absolute;top:-99em";d.appendChild(b);b.innerHTML='_<style media="'+a+'"> #mq-test-1 { width: 9px; }</style>';if(h){c.insertBefore(d,g)}b.removeChild(b.firstChild);e=b.offsetWidth==9;if(h){c.removeChild(d)}else{d.removeChild(b)}return e})(this));;
6530
6531(function ($) {
6532
6533/**
6534 * This script transforms a set of fieldsets into a stack of vertical
6535 * tabs. Another tab pane can be selected by clicking on the respective
6536 * tab.
6537 *
6538 * Each tab may have a summary which can be updated by another
6539 * script. For that to work, each fieldset has an associated
6540 * 'verticalTabCallback' (with jQuery.data() attached to the fieldset),
6541 * which is called every time the user performs an update to a form
6542 * element inside the tab pane.
6543 */
6544Drupal.behaviors.verticalTabs = {
6545  attach: function (context) {
6546    $('.vertical-tabs-panes', context).once('vertical-tabs', function () {
6547      var focusID = $(':hidden.vertical-tabs-active-tab', this).val();
6548      var tab_focus;
6549
6550      // Check if there are some fieldsets that can be converted to vertical-tabs
6551      var $fieldsets = $('> fieldset', this);
6552      if ($fieldsets.length == 0) {
6553        return;
6554      }
6555
6556      // Create the tab column.
6557      var tab_list = $('<ul class="vertical-tabs-list"></ul>');
6558      $(this).wrap('<div class="vertical-tabs clearfix"></div>').before(tab_list);
6559
6560      // Transform each fieldset into a tab.
6561      $fieldsets.each(function () {
6562        var vertical_tab = new Drupal.verticalTab({
6563          title: $('> legend', this).text(),
6564          fieldset: $(this)
6565        });
6566        tab_list.append(vertical_tab.item);
6567        $(this)
6568          .removeClass('collapsible collapsed')
6569          .addClass('vertical-tabs-pane')
6570          .data('verticalTab', vertical_tab);
6571        if (this.id == focusID) {
6572          tab_focus = $(this);
6573        }
6574      });
6575
6576      $('> li:first', tab_list).addClass('first');
6577      $('> li:last', tab_list).addClass('last');
6578
6579      if (!tab_focus) {
6580        // If the current URL has a fragment and one of the tabs contains an
6581        // element that matches the URL fragment, activate that tab.
6582        if (window.location.hash && $(window.location.hash, this).length) {
6583          tab_focus = $(window.location.hash, this).closest('.vertical-tabs-pane');
6584        }
6585        else {
6586          tab_focus = $('> .vertical-tabs-pane:first', this);
6587        }
6588      }
6589      if (tab_focus.length) {
6590        tab_focus.data('verticalTab').focus();
6591      }
6592    });
6593  }
6594};
6595
6596/**
6597 * The vertical tab object represents a single tab within a tab group.
6598 *
6599 * @param settings
6600 *   An object with the following keys:
6601 *   - title: The name of the tab.
6602 *   - fieldset: The jQuery object of the fieldset that is the tab pane.
6603 */
6604Drupal.verticalTab = function (settings) {
6605  var self = this;
6606  $.extend(this, settings, Drupal.theme('verticalTab', settings));
6607
6608  this.link.click(function () {
6609    self.focus();
6610    return false;
6611  });
6612
6613  // Keyboard events added:
6614  // Pressing the Enter key will open the tab pane.
6615  this.link.keydown(function(event) {
6616    if (event.keyCode == 13) {
6617      self.focus();
6618      // Set focus on the first input field of the visible fieldset/tab pane.
6619      $("fieldset.vertical-tabs-pane :input:visible:enabled:first").focus();
6620      return false;
6621    }
6622  });
6623
6624  // Pressing the Enter key lets you leave the tab again.
6625  this.fieldset.keydown(function(event) {
6626    // Enter key should not trigger inside <textarea> to allow for multi-line entries.
6627    if (event.keyCode == 13 && event.target.nodeName != "TEXTAREA") {
6628      // Set focus on the selected tab button again.
6629      $(".vertical-tab-button.selected a").focus();
6630      return false;
6631    }
6632  });
6633
6634  this.fieldset
6635    .bind('summaryUpdated', function () {
6636      self.updateSummary();
6637    })
6638    .trigger('summaryUpdated');
6639};
6640
6641Drupal.verticalTab.prototype = {
6642  /**
6643   * Displays the tab's content pane.
6644   */
6645  focus: function () {
6646    this.fieldset
6647      .siblings('fieldset.vertical-tabs-pane')
6648        .each(function () {
6649          var tab = $(this).data('verticalTab');
6650          tab.fieldset.hide();
6651          tab.item.removeClass('selected');
6652        })
6653        .end()
6654      .show()
6655      .siblings(':hidden.vertical-tabs-active-tab')
6656        .val(this.fieldset.attr('id'));
6657    this.item.addClass('selected');
6658    // Mark the active tab for screen readers.
6659    $('#active-vertical-tab').remove();
6660    this.link.append('<span id="active-vertical-tab" class="offscreen">' + Drupal.t('(active tab)') + '</span>');
6661  },
6662
6663  /**
6664   * Updates the tab's summary.
6665   */
6666  updateSummary: function () {
6667    this.summary.html(this.fieldset.drupalGetSummary());
6668  },
6669
6670  /**
6671   * Shows a vertical tab pane.
6672   */
6673  tabShow: function () {
6674    // Display the tab.
6675    this.item.show();
6676    // Update .first marker for items. We need recurse from parent to retain the
6677    // actual DOM element order as jQuery implements sortOrder, but not as public
6678    // method.
6679    this.item.parent().children('.vertical-tab-button').removeClass('first')
6680      .filter(':visible:first').addClass('first');
6681    // Display the fieldset.
6682    this.fieldset.removeClass('vertical-tab-hidden').show();
6683    // Focus this tab.
6684    this.focus();
6685    return this;
6686  },
6687
6688  /**
6689   * Hides a vertical tab pane.
6690   */
6691  tabHide: function () {
6692    // Hide this tab.
6693    this.item.hide();
6694    // Update .first marker for items. We need recurse from parent to retain the
6695    // actual DOM element order as jQuery implements sortOrder, but not as public
6696    // method.
6697    this.item.parent().children('.vertical-tab-button').removeClass('first')
6698      .filter(':visible:first').addClass('first');
6699    // Hide the fieldset.
6700    this.fieldset.addClass('vertical-tab-hidden').hide();
6701    // Focus the first visible tab (if there is one).
6702    var $firstTab = this.fieldset.siblings('.vertical-tabs-pane:not(.vertical-tab-hidden):first');
6703    if ($firstTab.length) {
6704      $firstTab.data('verticalTab').focus();
6705    }
6706    return this;
6707  }
6708};
6709
6710/**
6711 * Theme function for a vertical tab.
6712 *
6713 * @param settings
6714 *   An object with the following keys:
6715 *   - title: The name of the tab.
6716 * @return
6717 *   This function has to return an object with at least these keys:
6718 *   - item: The root tab jQuery element
6719 *   - link: The anchor tag that acts as the clickable area of the tab
6720 *       (jQuery version)
6721 *   - summary: The jQuery element that contains the tab summary
6722 */
6723Drupal.theme.prototype.verticalTab = function (settings) {
6724  var class_name = 'vertical-tab-button';
6725  if ($('.error', settings.fieldset).length>0) {
6726    class_name += ' vertical-tab-button-error';
6727  }
6728  var tab = {};
6729  tab.item = $('<li class="'+class_name+'" tabindex="-1"></li>')
6730    .append(tab.link = $('<a href="#"></a>')
6731      .append(tab.title = $('<strong></strong>').text(settings.title))
6732      .append(tab.summary = $('<span class="summary"></span>')
6733    )
6734  );
6735  return tab;
6736};
6737
6738})(jQuery);
6739;
6740/**
6741 * jQuery bxSlider v3.0
6742 * http://bxslider.com
6743 *
6744 * Copyright 2010, Steven Wanderski
6745 * http://stevenwanderski.com
6746 *
6747 * Free to use and abuse under the MIT license.
6748 * http://www.opensource.org/licenses/mit-license.php
6749 * 
6750 */
6751
6752
6753(function($){
6754	$.fn.bxSlider = function(options){
6755				
6756		var defaults = {
6757			mode: 'horizontal',									// 'horizontal', 'vertical', 'fade'
6758			infiniteLoop: true,									// true, false - display first slide after last
6759			hideControlOnEnd: false,						// true, false - if true, will hide 'next' control on last slide and 'prev' control on first
6760			controls: true,											// true, false - previous and next controls
6761			speed: 500,													// integer - in ms, duration of time slide transitions will occupy
6762			easing: 'swing',                    // used with jquery.easing.1.3.js - see http://gsgd.co.uk/sandbox/jquery/easing/ for available options
6763			pager: false,												// true / false - display a pager
6764			pagerSelector: null,								// jQuery selector - element to contain the pager. ex: '#pager'
6765			pagerType: 'full',									// 'full', 'short' - if 'full' pager displays 1,2,3... if 'short' pager displays 1 / 4
6766			pagerLocation: 'bottom',						// 'bottom', 'top' - location of pager
6767			pagerShortSeparator: '/',						// string - ex: 'of' pager would display 1 of 4
6768			pagerActiveClass: 'pager-active',		// string - classname attached to the active pager link
6769			nextText: 'next',										// string - text displayed for 'next' control
6770			nextImage: '',											// string - filepath of image used for 'next' control. ex: 'images/next.jpg'
6771			nextSelector: null,									// jQuery selector - element to contain the next control. ex: '#next'
6772			prevText: 'prev',										// string - text displayed for 'previous' control
6773			prevImage: '',											// string - filepath of image used for 'previous' control. ex: 'images/prev.jpg'
6774			prevSelector: null,									// jQuery selector - element to contain the previous control. ex: '#next'
6775			captions: false,										// true, false - display image captions (reads the image 'title' tag)
6776			captionsSelector: null,							// jQuery selector - element to contain the captions. ex: '#captions'
6777			auto: false,												// true, false - make slideshow change automatically
6778			autoDirection: 'next',							// 'next', 'prev' - direction in which auto show will traverse
6779			autoControls: false,								// true, false - show 'start' and 'stop' controls for auto show
6780			autoControlsSelector: null,					// jQuery selector - element to contain the auto controls. ex: '#auto-controls'
6781			autoStart: true,										// true, false - if false show will wait for 'start' control to activate
6782			autoHover: false,										// true, false - if true show will pause on mouseover
6783			autoDelay: 0,                       // integer - in ms, the amount of time before starting the auto show
6784			pause: 3000,												// integer - in ms, the duration between each slide transition
6785			startText: 'start',									// string - text displayed for 'start' control
6786			startImage: '',											// string - filepath of image used for 'start' control. ex: 'images/start.jpg'
6787			stopText: 'stop',										// string - text displayed for 'stop' control
6788			stopImage: '',											// string - filepath of image used for 'stop' control. ex: 'images/stop.jpg'
6789			ticker: false,											// true, false - continuous motion ticker mode (think news ticker)
6790																					// note: autoControls, autoControlsSelector, and autoHover apply to ticker!
6791			tickerSpeed: 5000,								  // float - use value between 1 and 5000 to determine ticker speed - the smaller the value the faster the ticker speed
6792			tickerDirection: 'next',						// 'next', 'prev' - direction in which ticker show will traverse
6793			tickerHover: false,                 // true, false - if true ticker will pause on mouseover
6794			wrapperClass: 'bx-wrapper',					// string - classname attached to the slider wraper
6795			startingSlide: 0, 									// integer - show will start on specified slide. note: slides are zero based!
6796			displaySlideQty: 1,									// integer - number of slides to display at once
6797			moveSlideQty: 1,										// integer - number of slides to move at once
6798			randomStart: false,									// true, false - if true show will start on a random slide
6799			onBeforeSlide: function(){},				// function(currentSlideNumber, totalSlideQty, currentSlideHtmlObject) - advanced use only! see the tutorial here: http://bxslider.com/custom-pager
6800			onAfterSlide: function(){},					// function(currentSlideNumber, totalSlideQty, currentSlideHtmlObject) - advanced use only! see the tutorial here: http://bxslider.com/custom-pager
6801			onLastSlide: function(){},					// function(currentSlideNumber, totalSlideQty, currentSlideHtmlObject) - advanced use only! see the tutorial here: http://bxslider.com/custom-pager
6802			onFirstSlide: function(){},					// function(currentSlideNumber, totalSlideQty, currentSlideHtmlObject) - advanced use only! see the tutorial here: http://bxslider.com/custom-pager
6803			onNextSlide: function(){},					// function(currentSlideNumber, totalSlideQty, currentSlideHtmlObject) - advanced use only! see the tutorial here: http://bxslider.com/custom-pager
6804			onPrevSlide: function(){},					// function(currentSlideNumber, totalSlideQty, currentSlideHtmlObject) - advanced use only! see the tutorial here: http://bxslider.com/custom-pager
6805			buildPager: null										// function(slideIndex, slideHtmlObject){ return string; } - advanced use only! see the tutorial here: http://bxslider.com/custom-pager
6806		}
6807		
6808		var options = $.extend(defaults, options);
6809		
6810		// cache the base element
6811		var base = this;
6812		// initialize (and localize) all variables
6813		var $parent = '';
6814		var $origElement = '';
6815		var $children = '';
6816		var $outerWrapper = '';
6817		var $firstChild = '';
6818		var childrenWidth = '';
6819		var childrenOuterWidth = '';
6820		var wrapperWidth = '';
6821		var wrapperHeight = '';
6822		var $pager = '';	
6823		var interval = '';
6824		var $autoControls = '';
6825		var $stopHtml = '';
6826		var $startContent = '';
6827		var $stopContent = '';
6828		var autoPlaying = true;
6829		var loaded = false;
6830		var childrenMaxWidth = 0;
6831		var childrenMaxHeight = 0;
6832		var currentSlide = 0;	
6833		var origLeft = 0;
6834		var origTop = 0;
6835		var origShowWidth = 0;
6836		var origShowHeight = 0;
6837		var tickerLeft = 0;
6838		var tickerTop = 0;
6839		var isWorking = false;
6840    
6841		var firstSlide = 0;
6842		var lastSlide = $children.length - 1;
6843		
6844						
6845		// PUBLIC FUNCTIONS
6846						
6847		/**
6848		 * Go to specified slide
6849		 */		
6850		this.goToSlide = function(number, stopAuto){
6851			if(!isWorking){
6852				isWorking = true;
6853				// set current slide to argument
6854				currentSlide = number;
6855				options.onBeforeSlide(currentSlide, $children.length, $children.eq(currentSlide));
6856				// check if stopAuto argument is supplied
6857				if(typeof(stopAuto) == 'undefined'){
6858					var stopAuto = true;
6859				}
6860				if(stopAuto){
6861					// if show is auto playing, stop it
6862					if(options.auto){
6863						base.stopShow(true);
6864					}
6865				}			
6866				slide = number;
6867				// check for first slide callback
6868				if(slide == firstSlide){
6869					options.onFirstSlide(currentSlide, $children.length, $children.eq(currentSlide));
6870				}
6871				// check for last slide callback
6872				if(slide == lastSlide){
6873					options.onLastSlide(currentSlide, $children.length, $children.eq(currentSlide));
6874				}
6875				// horizontal
6876				if(options.mode == 'horizontal'){
6877					$parent.animate({'left': '-'+getSlidePosition(slide, 'left')+'px'}, options.speed, options.easing, function(){
6878						isWorking = false;
6879						// perform the callback function
6880						options.onAfterSlide(currentSlide, $children.length, $children.eq(currentSlide));
6881					});
6882				// vertical
6883				}else if(options.mode == 'vertical'){
6884					$parent.animate({'top': '-'+getSlidePosition(slide, 'top')+'px'}, options.speed, options.easing, function(){
6885						isWorking = false;
6886						// perform the callback function
6887						options.onAfterSlide(currentSlide, $children.length, $children.eq(currentSlide));
6888					});			
6889				// fade	
6890				}else if(options.mode == 'fade'){
6891					setChildrenFade();
6892				}
6893				// check to remove controls on last/first slide
6894				checkEndControls();
6895				// accomodate multi slides
6896				if(options.moveSlideQty > 1){
6897					number = Math.floor(number / options.moveSlideQty);
6898				}
6899				// make the current slide active
6900				makeSlideActive(number);
6901				// display the caption
6902				showCaptions();
6903			}
6904		}
6905		
6906		/**
6907		 * Go to next slide
6908		 */		
6909		this.goToNextSlide = function(stopAuto){
6910			// check if stopAuto argument is supplied
6911			if(typeof(stopAuto) == 'undefined'){
6912				var stopAuto = true;
6913			}
6914			if(stopAuto){
6915				// if show is auto playing, stop it
6916				if(options.auto){
6917					base.stopShow(true);
6918				}
6919			}			
6920			// makes slideshow finite
6921			if(!options.infiniteLoop){
6922				if(!isWorking){
6923					var slideLoop = false;
6924					// make current slide the old value plus moveSlideQty
6925					currentSlide = (currentSlide + (options.moveSlideQty));
6926					// if current slide has looped on itself
6927					if(currentSlide <= lastSlide){
6928						checkEndControls();
6929						// next slide callback
6930						options.onNextSlide(currentSlide, $children.length, $children.eq(currentSlide));
6931						// move to appropriate slide
6932						base.goToSlide(currentSlide);						
6933					}else{
6934						currentSlide -= options.moveSlideQty;
6935					}
6936				} // end if(!isWorking)		
6937			}else{ 
6938				if(!isWorking){
6939					isWorking = true;					
6940					var slideLoop = false;
6941					// make current slide the old value plus moveSlideQty
6942					currentSlide = (currentSlide + options.moveSlideQty);
6943					// if current slide has looped on itself
6944					if(currentSlide > lastSlide){
6945						currentSlide = currentSlide % $children.length;
6946						slideLoop = true;
6947					}
6948					// next slide callback
6949					options.onNextSlide(currentSlide, $children.length, $children.eq(currentSlide));
6950					// slide before callback
6951					options.onBeforeSlide(currentSlide, $children.length, $children.eq(currentSlide));
6952					if(options.mode == 'horizontal'){						
6953						// get the new 'left' property for $parent
6954						var parentLeft = (options.moveSlideQty * childrenOuterWidth);
6955						// animate to the new 'left'
6956						$parent.animate({'left': '-='+parentLeft+'px'}, options.speed, options.easing, function(){
6957							isWorking = false;
6958							// if its time to loop, reset the $parent
6959							if(slideLoop){
6960								$parent.css('left', '-'+getSlidePosition(currentSlide, 'left')+'px');
6961							}
6962							// perform the callback function
6963							options.onAfterSlide(currentSlide, $children.length, $children.eq(currentSlide));
6964						});
6965					}else if(options.mode == 'vertical'){
6966						// get the new 'left' property for $parent
6967						var parentTop = (options.moveSlideQty * childrenMaxHeight);
6968						// animate to the new 'left'
6969						$parent.animate({'top': '-='+parentTop+'px'}, options.speed, options.easing, function(){
6970							isWorking = false;
6971							// if its time to loop, reset the $parent
6972							if(slideLoop){
6973								$parent.css('top', '-'+getSlidePosition(currentSlide, 'top')+'px');
6974							}
6975							// perform the callback function
6976							options.onAfterSlide(currentSlide, $children.length, $children.eq(currentSlide));
6977						});
6978					}else if(options.mode == 'fade'){
6979						setChildrenFade();
6980					}					
6981					// make the current slide active
6982					if(options.moveSlideQty > 1){
6983						makeSlideActive(Math.ceil(currentSlide / options.moveSlideQty));
6984					}else{
6985						makeSlideActive(currentSlide);
6986					}
6987					// display the caption
6988					showCaptions();
6989				} // end if(!isWorking)
6990				
6991			}	
6992		} // end function
6993		
6994		/**
6995		 * Go to previous slide
6996		 */		
6997		this.goToPreviousSlide = function(stopAuto){
6998			// check if stopAuto argument is supplied
6999			if(typeof(stopAuto) == 'undefined'){
7000				var stopAuto = true;
7001			}
7002			if(stopAuto){
7003				// if show is auto playing, stop it
7004				if(options.auto){
7005					base.stopShow(true);
7006				}
7007			}			
7008			// makes slideshow finite
7009			if(!options.infiniteLoop){	
7010				if(!isWorking){
7011					var slideLoop = false;
7012					// make current slide the old value plus moveSlideQty
7013					currentSlide = currentSlide - options.moveSlideQty;
7014					// if current slide has looped on itself
7015					if(currentSlide < 0){
7016						currentSlide = 0;
7017						// if specified, hide the control on the last slide
7018						if(options.hideControlOnEnd){
7019							$('.bx-prev', $outerWrapper).hide();
7020						}
7021					}
7022					checkEndControls();
7023					// next slide callback
7024					options.onPrevSlide(currentSlide, $children.length, $children.eq(currentSlide));
7025					// move to appropriate slide
7026					base.goToSlide(currentSlide);
7027				}							
7028			}else{
7029				if(!isWorking){
7030					isWorking = true;			
7031					var slideLoop = false;
7032					// make current slide the old value plus moveSlideQty
7033					currentSlide = (currentSlide - (options.moveSlideQty));
7034					// if current slide has looped on itself
7035					if(currentSlide < 0){
7036						negativeOffset = (currentSlide % $children.length);
7037						if(negativeOffset == 0){
7038							currentSlide = 0;
7039						}else{
7040							currentSlide = ($children.length) + negativeOffset; 
7041						}
7042						slideLoop = true;
7043					}
7044					// next slide callback
7045					options.onPrevSlide(currentSlide, $children.length, $children.eq(currentSlide));
7046					// slide before callback
7047					options.onBeforeSlide(currentSlide, $children.length, $children.eq(currentSlide));
7048					if(options.mode == 'horizontal'){
7049						// get the new 'left' property for $parent
7050						var parentLeft = (options.moveSlideQty * childrenOuterWidth);
7051						// animate to the new 'left'
7052						$parent.animate({'left': '+='+parentLeft+'px'}, options.speed, options.easing, function(){
7053							isWorking = false;
7054							// if its time to loop, reset the $parent
7055							if(slideLoop){
7056								$parent.css('left', '-'+getSlidePosition(currentSlide, 'left')+'px');
7057							}
7058							// perform the callback function
7059							options.onAfterSlide(currentSlide, $children.length, $children.eq(currentSlide));
7060						});
7061					}else if(options.mode == 'vertical'){
7062						// get the new 'left' property for $parent
7063						var parentTop = (options.moveSlideQty * childrenMaxHeight);
7064						// animate to the new 'left'
7065						$parent.animate({'top': '+='+parentTop+'px'}, options.speed, options.easing, function(){
7066							isWorking = false;
7067							// if its time to loop, reset the $parent
7068							if(slideLoop){
7069								$parent.css('top', '-'+getSlidePosition(currentSlide, 'top')+'px');
7070							}
7071							// perform the callback function
7072							options.onAfterSlide(currentSlide, $children.length, $children.eq(currentSlide));
7073						});
7074					}else if(options.mode == 'fade'){
7075						setChildrenFade();
7076					}					
7077					// make the current slide active
7078					if(options.moveSlideQty > 1){
7079						makeSlideActive(Math.ceil(currentSlide / options.moveSlideQty));
7080					}else{
7081						makeSlideActive(currentSlide);
7082					}
7083					// display the caption
7084					showCaptions();
7085				} // end if(!isWorking)				
7086			}
7087		} // end function
7088		
7089		/**
7090		 * Go to first slide
7091		 */		
7092		this.goToFirstSlide = function(stopAuto){
7093			// check if stopAuto argument is supplied
7094			if(typeof(stopAuto) == 'undefined'){
7095				var stopAuto = true;
7096			}
7097			base.goToSlide(firstSlide, stopAuto);
7098		}
7099		
7100		/**
7101		 * Go to last slide
7102		 */		
7103		this.goToLastSlide = function(){
7104			// check if stopAuto argument is supplied
7105			if(typeof(stopAuto) == 'undefined'){
7106				var stopAuto = true;
7107			}
7108			base.goToSlide(lastSlide, stopAuto);
7109		}
7110		
7111		/**
7112		 * Get the current slide
7113		 */		
7114		this.getCurrentSlide = function(){
7115			return currentSlide;
7116		}
7117		
7118		/**
7119		 * Get the total slide count
7120		 */		
7121		this.getSlideCount = function(){
7122			return $children.length;
7123		}
7124		
7125		/**
7126		 * Stop the slideshow
7127		 */		
7128		this.stopShow = function(changeText){
7129			clearInterval(interval);
7130			// check if changeText argument is supplied
7131			if(typeof(changeText) == 'undefined'){
7132				var changeText = true;
7133			}
7134			if(changeText && options.autoControls){
7135				$autoControls.html($startContent).removeClass('stop').addClass('start');
7136				autoPlaying = false;
7137			}
7138		}
7139		
7140		/**
7141		 * Start the slideshow
7142		 */		
7143		this.startShow = function(changeText){
7144			// check if changeText argument is supplied
7145			if(typeof(changeText) == 'undefined'){
7146				var changeText = true;
7147			}
7148			setAutoInterval();
7149			if(changeText && options.autoControls){
7150				$autoControls.html($stopContent).removeClass('start').addClass('stop');
7151				autoPlaying = true;
7152			}
7153		}
7154		
7155		/**
7156		 * Stops the ticker
7157		 */		
7158		this.stopTicker = function(changeText){
7159			$parent.stop();
7160			// check if changeText argument is supplied
7161			if(typeof(changeText) == 'undefined'){
7162				var changeText = true;
7163			}
7164			if(changeText && options.ticker){
7165				$autoControls.html($startContent).removeClass('stop').addClass('start');
7166				autoPlaying = false;
7167			}			
7168		}
7169		
7170		/**
7171		 * Starts the ticker
7172		 */		
7173		this.startTicker = function(changeText){
7174			if(options.mode == 'horizontal'){
7175				if(options.tickerDirection == 'next'){
7176					// get the 'left' property where the ticker stopped
7177					var stoppedLeft = parseInt($parent.css('left'));
7178					// calculate the remaining distance the show must travel until the loop
7179					var remainingDistance = (origShowWidth + stoppedLeft) + $children.eq(0).width();			
7180				}else if(options.tickerDirection == 'prev'){
7181					// get the 'left' property where the ticker stopped
7182					var stoppedLeft = -parseInt($parent.css('left'));
7183					// calculate the remaining distance the show must travel until the loop
7184					var remainingDistance = (stoppedLeft) - $children.eq(0).width();
7185				}
7186				// calculate the speed ratio to seamlessly finish the loop
7187				var finishingSpeed = (remainingDistance * options.tickerSpeed) / origShowWidth;
7188				// call the show
7189				moveTheShow(tickerLeft, remainingDistance, finishingSpeed);					
7190			}else if(options.mode == 'vertical'){
7191				if(options.tickerDirection == 'next'){
7192					// get the 'top' property where the ticker stopped
7193					var stoppedTop = parseInt($parent.css('top'));
7194					// calculate the remaining distance the show must travel until the loop
7195					var remainingDistance = (origShowHeight + stoppedTop) + $children.eq(0).height();			
7196				}else if(options.tickerDirection == 'prev'){
7197					// get the 'left' property where the ticker stopped
7198					var stoppedTop = -parseInt($parent.css('top'));
7199					// calculate the remaining distance the show must travel until the loop
7200					var remainingDistance = (stoppedTop) - $children.eq(0).height();
7201				}
7202				// calculate the speed ratio to seamlessly finish the loop
7203				var finishingSpeed = (remainingDistance * options.tickerSpeed) / origShowHeight;
7204				// call the show
7205				moveTheShow(tickerTop, remainingDistance, finishingSpeed);
7206				// check if changeText argument is supplied
7207				if(typeof(changeText) == 'undefined'){
7208					var changeText = true;
7209				}
7210				if(changeText && options.ticker){
7211					$autoControls.html($stopContent).removeClass('start').addClass('stop');
7212					autoPlaying = true;
7213				}						
7214			}
7215		}
7216				
7217		/**
7218		 * Initialize a new slideshow
7219		 */		
7220		this.initShow = function(){
7221			
7222			// reinitialize all variables
7223			// base = this;
7224			$parent = $(this);
7225			$origElement = $parent.clone();
7226			$children = $parent.children();
7227			$outerWrapper = '';
7228			$firstChild = $parent.children(':first');
7229			childrenWidth = $firstChild.width();
7230			childrenMaxWidth = 0;
7231			childrenOuterWidth = $firstChild.outerWidth();
7232			childrenMaxHeight = 0;
7233			wrapperWidth = getWrapperWidth();
7234			wrapperHeight = getWrapperHeight();
7235			isWorking = false;
7236			$pager = '';	
7237			currentSlide = 0;	
7238			origLeft = 0;
7239			origTop = 0;
7240			interval = '';
7241			$autoControls = '';
7242			$stopHtml = '';
7243			$startContent = '';
7244			$stopContent = '';
7245			autoPlaying = true;
7246			loaded = false;
7247			origShowWidth = 0;
7248			origShowHeight = 0;
7249			tickerLeft = 0;
7250			tickerTop = 0;
7251      
7252			firstSlide = 0;
7253			lastSlide = $children.length - 1;
7254						
7255			// get the largest child's height and width
7256			$children.each(function(index) {
7257			  if($(this).outerHeight() > childrenMaxHeight){
7258					childrenMaxHeight = $(this).outerHeight();
7259				}
7260				if($(this).outerWidth() > childrenMaxWidth){
7261					childrenMaxWidth = $(this).outerWidth();
7262				}
7263			});
7264
7265			// get random slide number
7266			if(options.randomStart){
7267				var randomNumber = Math.floor(Math.random() * $children.length);
7268				currentSlide = randomNumber;
7269				origLeft = childrenOuterWidth * (options.moveSlideQty + randomNumber);
7270				origTop = childrenMaxHeight * (options.moveSlideQty + randomNumber);
7271			// start show at specific slide
7272			}else{
7273				currentSlide = options.startingSlide;
7274				origLeft = childrenOuterWidth * (options.moveSlideQty + options.startingSlide);
7275				origTop = childrenMaxHeight * (options.moveSlideQty + options.startingSlide);
7276			}
7277						
7278			// set initial css
7279			initCss();
7280			
7281			// check to show pager
7282			if(options.pager && !options.ticker){
7283				if(options.pagerType == 'full'){
7284					showPager('full');
7285				}else if(options.pagerType == 'short'){
7286					showPager('short');
7287				}
7288			}
7289						
7290			// check to show controls
7291			if(options.controls && !options.ticker){
7292				setControlsVars();
7293			}
7294						
7295			// check if auto
7296			if(options.auto || options.ticker){
7297				// check if auto controls are displayed
7298				if(options.autoControls){
7299					setAutoControlsVars();
7300				}
7301				// check if show should auto start
7302				if(options.autoStart){
7303					// check if autostart should delay
7304					setTimeout(function(){
7305						base.startShow(true);
7306					}, options.autoDelay);
7307				}else{
7308					base.stopShow(true);
7309				}
7310				// check if show should pause on hover
7311				if(options.autoHover && !options.ticker){
7312					setAutoHover();
7313				}
7314			}						
7315			// make the starting slide active
7316			if(options.moveSlideQty > 1){
7317				makeSlideActive(Math.ceil(currentSlide / options.moveSlideQty));
7318			}else{			
7319				makeSlideActive(currentSlide);			
7320			}
7321			// check for finite show and if controls should be hidden
7322			checkEndControls();
7323			// show captions
7324			if(options.captions){
7325				showCaptions();
7326			}
7327			// perform the callback function
7328			options.onAfterSlide(currentSlide, $children.length, $children.eq(currentSlide));
7329		}
7330		
7331		/**
7332		 * Destroy the current slideshow
7333		 */		
7334		this.destroyShow = function(){			
7335			// stop the auto show
7336			clearInterval(interval);
7337			// remove any controls / pagers that have been appended
7338			$('.bx-next, .bx-prev, .bx-pager, .bx-auto', $outerWrapper).remove();
7339			// unwrap all bx-wrappers
7340			$parent.unwrap().unwrap().removeAttr('style');
7341			// remove any styles that were appended
7342			$parent.children().removeAttr('style').not('.pager').remove();
7343			// remove any childrent that were appended
7344			$children.removeClass('pager');
7345			
7346		}
7347		
7348		/**
7349		 * Reload the current slideshow
7350		 */		
7351		this.reloadShow = function(){
7352			base.destroyShow();
7353			base.initShow();
7354		}
7355		
7356		// PRIVATE FUNCTIONS
7357		
7358		/**
7359		 * Creates all neccessary styling for the slideshow
7360		 */		
7361		function initCss(){
7362			// layout the children
7363			setChildrenLayout(options.startingSlide);
7364			// CSS for horizontal mode
7365			if(options.mode == 'horizontal'){
7366				// wrap the <ul> in div that acts as a window and make the <ul> uber wide
7367				$parent
7368				.wrap('<div class="'+options.wrapperClass+'" style="width:'+wrapperWidth+'px; position:relative;"></div>')
7369				.wrap('<div class="bx-window" style="position:relative; overflow:hidden; width:'+wrapperWidth+'px;"></div>')
7370				.css({
7371				  width: '99999px',
7372				  position: 'relative',
7373					left: '-'+(origLeft)+'px'
7374				});
7375				$parent.children().css({
7376					width: childrenWidth,
7377				  'float': 'left',
7378				  listStyle: 'none'
7379				});					
7380				$outerWrapper = $parent.parent().parent();
7381				$children.addClass('pager');
7382			// CSS for vertical mode
7383			}else if(options.mode == 'vertical'){
7384				// wrap the <ul> in div that acts as a window and make the <ul> uber tall
7385				$parent
7386				.wrap('<div class="'+options.wrapperClass+'" style="width:'+childrenMaxWidth+'px; position:relative;"></div>')
7387				.wrap('<div class="bx-window" style="width:'+childrenMaxWidth+'px; height:'+wrapperHeight+'px; position:relative; overflow:hidden;"></div>')
7388				.css({
7389				  height: '99999px',
7390				  position: 'relative',
7391					top: '-'+(origTop)+'px'
7392				});
7393				$parent.children().css({
7394				  listStyle: 'none',
7395					height: childrenMaxHeight
7396				});					
7397				$outerWrapper = $parent.parent().parent();
7398				$children.addClass('pager');
7399			// CSS for fade mode
7400			}else if(options.mode == 'fade'){
7401				// wrap the <ul> in div that acts as a window
7402				$parent
7403				.wrap('<div class="'+options.wrapperClass+'" style="width:'+childrenMaxWidth+'px; position:relative;"></div>')
7404				.wrap('<div class="bx-window" style="height:'+childrenMaxHeight+'px; width:'+childrenMaxWidth+'px; position:relative; overflow:hidden;"></div>');
7405				$parent.children().css({
7406				  listStyle: 'none',
7407				  position: 'absolute',
7408					top: 0,
7409					left: 0,
7410					zIndex: 98
7411				});					
7412				$outerWrapper = $parent.parent().parent();
7413				$children.not(':eq('+currentSlide+')').fadeTo(0, 0);
7414				$children.eq(currentSlide).css('zIndex', 99);
7415			}
7416			// if captions = true setup a div placeholder
7417			if(options.captions && options.captionsSelector == null){
7418				$outerWrapper.append('<div class="bx-captions"></div>');
7419			}			
7420		}
7421		
7422		/**
7423		 * Depending on mode, lays out children in the proper setup
7424		 */		
7425		function setChildrenLayout(){			
7426			// lays out children for horizontal or vertical modes
7427			if(options.mode == 'horizontal' || options.mode == 'vertical'){
7428								
7429				// get the children behind
7430				var $prependedChildren = getArraySample($children, 0, options.moveSlideQty, 'backward');
7431				
7432				// add each prepended child to the back of the original element
7433				$.each($prependedChildren, function(index) {
7434					$parent.prepend($(this));
7435				});			
7436				
7437				// total number of slides to be hidden after the window
7438				var totalNumberAfterWindow = ($children.length + options.moveSlideQty) - 1;
7439				// number of original slides hidden after the window
7440				var pagerExcess = $children.length - options.displaySlideQty;
7441				// number of slides to append to the original hidden slides
7442				var numberToAppend = totalNumberAfterWindow - pagerExcess;
7443				// get the sample of extra slides to append
7444				var $appendedChildren = getArraySample($children, 0, numberToAppend, 'forward');
7445				
7446				if(options.infiniteLoop){
7447					// add each appended child to the front of the original element
7448					$.each($appendedChildren, function(index) {
7449						$parent.append($(this));
7450					});
7451				}
7452			}
7453		}
7454		
7455		/**
7456		 * Sets all variables associated with the controls
7457		 */		
7458		function setControlsVars(){
7459			// check if text or images should be used for controls
7460			// check "next"
7461			if(options.nextImage != ''){
7462				nextContent = options.nextImage;
7463				nextType = 'image';
7464			}else{
7465				nextContent = options.nextText;
7466				nextType = 'text';
7467			}
7468			// check "prev"
7469			if(options.prevImage != ''){
7470				prevContent = options.prevImage;
7471				prevType = 'image';
7472			}else{
7473				prevContent = options.prevText;
7474				prevType = 'text';
7475			}
7476			// show the controls
7477			showControls(nextType, nextContent, prevType, prevContent);
7478		}			
7479		
7480		/**
7481		 * Puts slideshow into auto mode
7482		 *
7483		 * @param int pause number of ms the slideshow will wait between slides 
7484		 * @param string direction 'forward', 'backward' sets the direction of the slideshow (forward/backward)
7485		 * @param bool controls determines if start/stop controls will be displayed
7486		 */		
7487		function setAutoInterval(){
7488			if(options.auto){
7489				// finite loop
7490				if(!options.infiniteLoop){
7491					if(options.autoDirection == 'next'){
7492						interval = setInterval(function(){
7493							currentSlide += options.moveSlideQty;
7494							// if currentSlide has exceeded total number
7495							if(currentSlide > lastSlide){
7496								currentSlide = currentSlide % $children.length;
7497							}
7498							base.goToSlide(currentSlide, false);
7499						}, options.pause);
7500					}else if(options.autoDirection == 'prev'){
7501						interval = setInterval(function(){
7502							currentSlide -= options.moveSlideQty;
7503							// if currentSlide is smaller than zero
7504							if(currentSlide < 0){
7505								negativeOffset = (currentSlide % $children.length);
7506								if(negativeOffset == 0){
7507									currentSlide = 0;
7508								}else{
7509									currentSlide = ($children.length) + negativeOffset; 
7510								}
7511							}
7512							base.goToSlide(currentSlide, false);
7513						}, options.pause);
7514					}
7515				// infinite loop
7516				}else{
7517					if(options.autoDirection == 'next'){
7518						interval = setInterval(function(){
7519							base.goToNextSlide(false);
7520						}, options.pause);
7521					}else if(options.autoDirection == 'prev'){
7522						interval = setInterval(function(){
7523							base.goToPreviousSlide(false);
7524						}, options.pause);
7525					}
7526				}
7527			
7528			}else if(options.ticker){
7529				
7530				options.tickerSpeed *= 10;
7531												
7532				// get the total width of the original show
7533				$('.pager', $outerWrapper).each(function(index) {
7534				  origShowWidth += $(this).width();
7535					origShowHeight += $(this).height();
7536				});
7537				
7538				// if prev start the show from the last slide
7539				if(options.tickerDirection == 'prev' && options.mode == 'horizontal'){
7540					$parent.css('left', '-'+(origShowWidth+origLeft)+'px');
7541				}else if(options.tickerDirection == 'prev' && options.mode == 'vertical'){
7542					$parent.css('top', '-'+(origShowHeight+origTop)+'px');
7543				}
7544				
7545				if(options.mode == 'horizontal'){
7546					// get the starting left position
7547					tickerLeft = parseInt($parent.css('left'));
7548					// start the ticker
7549					moveTheShow(tickerLeft, origShowWidth, options.tickerSpeed);
7550				}else if(options.mode == 'vertical'){
7551					// get the starting top position
7552					tickerTop = parseInt($parent.css('top'));
7553					// start the ticker
7554					moveTheShow(tickerTop, origShowHeight, options.tickerSpeed);
7555				}												
7556				
7557				// check it tickerHover applies
7558				if(options.tickerHover){
7559					setTickerHover();
7560				}					
7561			}			
7562		}
7563		
7564		function moveTheShow(leftCss, distance, speed){
7565			// if horizontal
7566			if(options.mode == 'horizontal'){
7567				// if next
7568				if(options.tickerDirection == 'next'){
7569					$parent.animate({'left': '-='+distance+'px'}, speed, 'linear', function(){
7570						$parent.css('left', leftCss);
7571						moveTheShow(leftCss, origShowWidth, options.tickerSpeed);
7572					});
7573				// if prev
7574				}else if(options.tickerDirection == 'prev'){
7575					$parent.animate({'left': '+='+distance+'px'}, speed, 'linear', function(){
7576						$parent.css('left', leftCss);
7577						moveTheShow(leftCss, origShowWidth, options.tickerSpeed);
7578					});
7579				}
7580			// if vertical		
7581			}else if(options.mode == 'vertical'){
7582				// if next
7583				if(options.tickerDirection == 'next'){
7584					$parent.animate({'top': '-='+distance+'px'}, speed, 'linear', function(){
7585						$parent.css('top', leftCss);
7586						moveTheShow(leftCss, origShowHeight, options.tickerSpeed);
7587					});
7588				// if prev
7589				}else if(options.tickerDirection == 'prev'){
7590					$parent.animate({'top': '+='+distance+'px'}, speed, 'linear', function(){
7591						$parent.css('top', leftCss);
7592						moveTheShow(leftCss, origShowHeight, options.tickerSpeed);
7593					});
7594				}
7595			}
7596		}		
7597		
7598		/**
7599		 * Sets all variables associated with the controls
7600		 */		
7601		function setAutoControlsVars(){
7602			// check if text or images should be used for controls
7603			// check "start"
7604			if(options.startImage != ''){
7605				startContent = options.startImage;
7606				startType = 'image';
7607			}else{
7608				startContent = options.startText;
7609				startType = 'text';
7610			}
7611			// check "stop"
7612			if(options.stopImage != ''){
7613				stopContent = options.stopImage;
7614				stopType = 'image';
7615			}else{
7616				stopContent = options.stopText;
7617				stopType = 'text';
7618			}
7619			// show the controls
7620			showAutoControls(startType, startContent, stopType, stopContent);
7621		}
7622		
7623		/**
7624		 * Handles hover events for auto shows
7625		 */		
7626		function setAutoHover(){
7627			// hover over the slider window
7628			$outerWrapper.find('.bx-window').hover(function() {
7629				if(autoPlaying){
7630					base.stopShow(false);
7631				}
7632			}, function() {
7633				if(autoPlaying){
7634					base.startShow(false);
7635				}
7636			});
7637		}
7638		
7639		/**
7640		 * Handles hover events for ticker mode
7641		 */		
7642		function setTickerHover(){
7643			// on hover stop the animation
7644			$parent.hover(function() {
7645				if(autoPlaying){
7646					base.stopTicker(false);
7647				}
7648			}, function() {
7649				if(autoPlaying){
7650					base.startTicker(false);
7651				}
7652			});
7653		}		
7654		
7655		/**
7656		 * Handles fade animation
7657		 */		
7658		function setChildrenFade(){
7659			// fade out any other child besides the current
7660			$children.not(':eq('+currentSlide+')').fadeTo(options.speed, 0).css('zIndex', 98);
7661			// fade in the current slide
7662			$children.eq(currentSlide).css('zIndex', 99).fadeTo(options.speed, 1, function(){
7663				isWorking = false;
7664				// perform the callback function
7665				options.onAfterSlide(currentSlide, $children.length, $children.eq(currentSlide));
7666			});
7667		};
7668				
7669		/**
7670		 * Makes slide active
7671		 */		
7672		function makeSlideActive(number){
7673			if(options.pagerType == 'full' && options.pager){
7674				// remove all active classes
7675				$('a', $pager).removeClass(options.pagerActiveClass);
7676				// assign active class to appropriate slide
7677				$('a', $pager).eq(number).addClass(options.pagerActiveClass);
7678			}else if(options.pagerType == 'short' && options.pager){
7679				$('.bx-pager-current', $pager).html(currentSlide+1);
7680			}
7681		}
7682				
7683		/**
7684		 * Displays next/prev controls
7685		 *
7686		 * @param string nextType 'image', 'text'
7687		 * @param string nextContent if type='image', specify a filepath to the image. if type='text', specify text.
7688		 * @param string prevType 'image', 'text'
7689		 * @param string prevContent if type='image', specify a filepath to the image. if type='text', specify text.
7690		 */		
7691		function showControls(nextType, nextContent, prevType, prevContent){
7692			// create pager html elements
7693			var $nextHtml = $('<a href="" class="bx-next"></a>');
7694			var $prevHtml = $('<a href="" class="bx-prev"></a>');
7695			// check if next is 'text' or 'image'
7696			if(nextType == 'text'){
7697				$nextHtml.html(nextContent);
7698			}else{
7699				$nextHtml.html('<img src="'+nextContent+'" />');
7700			}
7701			// check if prev is 'text' or 'image'
7702			if(prevType == 'text'){
7703				$prevHtml.html(prevContent);
7704			}else{
7705				$prevHtml.html('<img src="'+prevContent+'" />');
7706			}
7707			// check if user supplied a selector to populate next control
7708			if(options.prevSelector){
7709				$(options.prevSelector).append($prevHtml);
7710			}else{
7711				$outerWrapper.append($prevHtml);
7712			}
7713			// check if user supplied a selector to populate next control
7714			if(options.nextSelector){
7715				$(options.nextSelector).append($nextHtml);
7716			}else{
7717				$outerWrapper.append($nextHtml);
7718			}
7719			// click next control
7720			$nextHtml.click(function() {
7721				base.goToNextSlide();
7722				return false;
7723			});
7724			// click prev control
7725			$prevHtml.click(function() {
7726				base.goToPreviousSlide();
7727				return false;
7728			});
7729		}
7730		
7731		/**
7732		 * Displays the pager
7733		 *
7734		 * @param string type 'full', 'short'
7735		 */		
7736		function showPager(type){
7737			// sets up logic for finite multi slide shows
7738			var pagerQty = $children.length;
7739			// if we are moving more than one at a time and we have a finite loop
7740			if(options.moveSlideQty > 1){
7741				// if slides create an odd number of pages
7742				if($children.length % options.moveSlideQty != 0){
7743					// pagerQty = $children.length / options.moveSlideQty + 1;
7744					pagerQty = Math.ceil($children.length / options.moveSlideQty);
7745				// if slides create an even number of pages
7746				}else{
7747					pagerQty = $children.length / options.moveSlideQty;
7748				}
7749			}
7750			var pagerString = '';
7751			// check if custom build function was supplied
7752			if(options.buildPager){
7753				for(var i=0; i<pagerQty; i++){
7754					pagerString += options.buildPager(i, $children.eq(i * options.moveSlideQty));
7755				}
7756				
7757			// if not, use default pager
7758			}else if(type == 'full'){
7759				// build the full pager
7760				for(var i=1; i<=pagerQty; i++){
7761					pagerString += '<a href="" class="pager-link pager-'+i+'">'+i+'</a>';
7762				}
7763			}else if(type == 'short') {
7764				// build the short pager
7765				pagerString = '<span class="bx-pager-current">'+(options.startingSlide+1)+'</span> '+options.pagerShortSeparator+' <span class="bx-pager-total">'+$children.length+'<span>';
7766			}	
7767			// check if user supplied a pager selector
7768			if(options.pagerSelector){
7769				$(options.pagerSelector).append(pagerString);
7770				$pager = $(options.pagerSelector);
7771			}else{
7772				var $pagerContainer = $('<div class="bx-pager"></div>');
7773				$pagerContainer.append(pagerString);
7774				// attach the pager to the DOM
7775				if(options.pagerLocation == 'top'){
7776					$outerWrapper.prepend($pagerContainer);
7777				}else if(options.pagerLocation == 'bottom'){
7778					$outerWrapper.append($pagerContainer);
7779				}
7780				// cache the pager element
7781				$pager = $('.bx-pager', $outerWrapper);
7782			}
7783			$pager.children().click(function() {
7784				// only if pager is full mode
7785				if(options.pagerType == 'full'){
7786					// get the index from the link
7787					var slideIndex = $pager.children().index(this);
7788					// accomodate moving more than one slide
7789					if(options.moveSlideQty > 1){
7790						slideIndex *= options.moveSlideQty;
7791					}
7792					base.goToSlide(slideIndex);
7793				}
7794				return false;
7795			});
7796		}
7797				
7798		/**
7799		 * Displays captions
7800		 */		
7801		function showCaptions(){
7802			// get the title from each image
7803		  var caption = $('img', $children.eq(currentSlide)).attr('title');
7804			// if the caption exists
7805			if(caption != ''){
7806				// if user supplied a selector
7807				if(options.captionsSelector){
7808					$(options.captionsSelector).html(caption);
7809				}else{
7810					$('.bx-captions', $outerWrapper).html(caption);
7811				}
7812			}else{
7813				// if user supplied a selector
7814				if(options.captionsSelector){
7815					$(options.captionsSelector).html('&nbsp;');
7816				}else{
7817					$('.bx-captions', $outerWrapper).html('&nbsp;');
7818				}				
7819			}
7820		}
7821		
7822		/**
7823		 * Displays start/stop controls for auto and ticker mode
7824		 *
7825		 * @param string type 'image', 'text'
7826		 * @param string next [optional] if type='image', specify a filepath to the image. if type='text', specify text.
7827		 * @param string prev [optional] if type='image', specify a filepath to the image. if type='text', specify text.
7828		 */
7829		function showAutoControls(startType, startContent, stopType, stopContent){
7830			// create pager html elements
7831			$autoControls = $('<a href="" class="bx-start"></a>');
7832			// check if start is 'text' or 'image'
7833			if(startType == 'text'){
7834				$startContent = startContent;
7835			}else{
7836				$startContent = '<img src="'+startContent+'" />';
7837			}
7838			// check if stop is 'text' or 'image'
7839			if(stopType == 'text'){
7840				$stopContent = stopContent;
7841			}else{
7842				$stopContent = '<img src="'+stopContent+'" />';
7843			}
7844			// check if user supplied a selector to populate next control
7845			if(options.autoControlsSelector){
7846				$(options.autoControlsSelector).append($autoControls);
7847			}else{
7848				$outerWrapper.append('<div class="bx-auto"></div>');
7849				$('.bx-auto', $outerWrapper).html($autoControls);
7850			}
7851						
7852			// click start control
7853			$autoControls.click(function() {
7854				if(options.ticker){
7855					if($(this).hasClass('stop')){
7856						base.stopTicker();
7857					}else if($(this).hasClass('start')){
7858						base.startTicker();
7859					}
7860				}else{
7861					if($(this).hasClass('stop')){
7862						base.stopShow(true);
7863					}else if($(this).hasClass('start')){
7864						base.startShow(true);
7865					}
7866				}
7867				return false;
7868			});
7869			
7870		}
7871		
7872		/**
7873		 * Checks if show is in finite mode, and if slide is either first or last, then hides the respective control
7874		 */		
7875		function checkEndControls(){
7876			if(!options.infiniteLoop && options.hideControlOnEnd){
7877				// check previous
7878				if(currentSlide == firstSlide){
7879					$('.bx-prev', $outerWrapper).hide();				
7880				}else{
7881					$('.bx-prev', $outerWrapper).show();
7882				}
7883				// check next
7884				if(currentSlide == lastSlide){
7885					$('.bx-next', $outerWrapper).hide();
7886				}else{
7887					$('.bx-next', $outerWrapper).show();
7888				}
7889			}
7890		}
7891		
7892		/**
7893		 * Returns the left offset of the slide from the parent container
7894		 */		
7895		function getSlidePosition(number, side){			
7896			if(side == 'left'){
7897				var position = $('.pager', $outerWrapper).eq(number).position().left;
7898			}else if(side == 'top'){
7899				var position = $('.pager', $outerWrapper).eq(number).position().top;
7900			}
7901			return position;
7902		}
7903		
7904		/**
7905		 * Returns the width of the wrapper
7906		 */		
7907		function getWrapperWidth(){
7908			var wrapperWidth = $firstChild.outerWidth() * options.displaySlideQty;
7909			return wrapperWidth;
7910		}
7911		
7912		/**
7913		 * Returns the height of the wrapper
7914		 */		
7915		function getWrapperHeight(){
7916			// if displaying multiple slides, multiple wrapper width by number of slides to display
7917			var wrapperHeight = $firstChild.outerHeight() * options.displaySlideQty;
7918			return wrapperHeight;
7919		}
7920		
7921		/**
7922		 * Returns a sample of an arry and loops back on itself if the end of the array is reached
7923		 *
7924		 * @param array array original array the sample is derived from
7925		 * @param int start array index sample will start
7926		 * @param int length number of items in the sample
7927		 * @param string direction 'forward', 'backward' direction the loop should travel in the array
7928		 */		
7929		function getArraySample(array, start, length, direction){
7930			// initialize empty array
7931			var sample = [];
7932			// clone the length argument
7933			var loopLength = length;
7934			// determines when the empty array should start being populated
7935			var startPopulatingArray = false;
7936			// reverse the array if direction = 'backward'
7937			if(direction == 'backward'){
7938				array = $.makeArray(array);
7939				array.reverse();
7940			}
7941			// loop through original array until the length argument is met
7942			while(loopLength > 0){				
7943				// loop through original array
7944				$.each(array, function(index, val) {
7945					// check if length has been met
7946					if(loopLength > 0){
7947						// don't do anything unless first index has been reached
7948					  if(!startPopulatingArray){
7949							// start populating empty array
7950							if(index == start){
7951								startPopulatingArray = true;
7952								// add element to array
7953								sample.push($(this).clone());
7954								// decrease the length clone variable
7955								loopLength--;
7956							}
7957						}else{
7958							// add element to array
7959							sample.push($(this).clone());
7960							// decrease the length clone variable
7961							loopLength--;
7962						}
7963					// if length has been met, break loose
7964					}else{
7965						return false;
7966					}			
7967				});				
7968			}
7969			return sample;
7970		}
7971												
7972		this.each(function(){			
7973			base.initShow();
7974		});
7975				
7976		return this;						
7977	}		
7978		
7979})(jQuery);
7980
7981;
7982/*!
7983 * Collapse plugin for jQuery
7984 * http://github.com/danielstocks/jQuery-Collapse/
7985 *
7986 * @author Daniel Stocks (http://webcloud.se)
7987 * @version 0.9.1
7988 * @updated 17-AUG-2010
7989 * 
7990 * Copyright 2010, Daniel Stocks
7991 * Released under the MIT, BSD, and GPL Licenses.
7992 */
7993 
7994(function($) {
7995    
7996    // Use a cookie counter to allow multiple instances of the plugin
7997    var cookieCounter = 0;
7998    
7999    $.fn.extend({
8000        collapse: function(options) {
8001            
8002            var defaults = {
8003                head : "h3",
8004                group : "div, ul",
8005                cookieName : "collapse",
8006                // Default function for showing content
8007                show: function() { 
8008                    this.show();
8009                },
8010                // Default function for hiding content
8011                hide: function() { 
8012                    this.hide();
8013                }
8014            };
8015            var op = $.extend(defaults, options);
8016            
8017            // Default CSS classes
8018            var active = "active",
8019                inactive = "inactive";
8020            
8021            return this.each(function() {
8022                
8023                // Increment coookie counter to ensure cookie name integrity
8024                cookieCounter++;
8025                var obj = $(this),
8026                    // Find all headers and wrap them in <a> for accessibility.
8027                    sections = obj.find(op.head).wrapInner('<a href="#"></a>'),
8028                    l = sections.length,
8029                    cookie = op.cookieName + "_" + cookieCounter;
8030                    // Locate all panels directly following a header
8031                    var panel = obj.find(op.head).map(function() {
8032                        var head = $(this)
8033                        if(!head.hasClass(active)) {
8034                            return head.next(op.group).hide()[0];
8035                        }
8036                        return head.next(op.group)[0];
8037                    });
8038    
8039                // Bind event for showing content
8040                obj.bind("show", function(e, bypass) {
8041                    var obj = $(e.target);
8042                    // ARIA attribute
8043                    obj.attr('aria-hidden', false)
8044                        .prev()
8045                        .removeClass(inactive)
8046                        .addClass(active);
8047                    // Bypass method for instant display
8048                    if(bypass) {
8049                        obj.show();
8050                    } else {
8051                        op.show.call(obj);
8052                    }
8053                });
8054
8055                // Bind event for hiding content
8056                obj.bind("hide", function(e, bypass) {
8057                    var obj = $(e.target);
8058                    obj.attr('aria-hidden', true)
8059                        .prev()
8060                        .removeClass(active)
8061                        .addClass(inactive);
8062                    if(bypass) {
8063                        obj.hide();
8064                    } else {
8065                        op.hide.call(obj);
8066                    }
8067                });
8068                
8069                // Look for existing cookies
8070                if(cookieSupport) {
8071                    for (var c=0;c<=l;c++) {
8072                        var val = $.cookie(cookie + c);
8073                        // Show content if associating cookie is found
8074                        if ( val == c + "open" ) {
8075                            panel.eq(c).trigger('show', [true]);
8076                        // Hide content
8077                        } else if ( val == c + "closed") {
8078                            panel.eq(c).trigger('hide', [true]);
8079                        }
8080                    }
8081                }
8082                
8083                // Delegate click event to show/hide content.
8084                obj.bind("click", function(e) {
8085                    var t = $(e.target);
8086                    // Check if header was clicked
8087                    if(!t.is(op.head)) {
8088                        // What about link inside header.
8089                        if ( t.parent().is(op.head) ) {
8090                            t = t.parent();
8091                        } else {
8092                            return;
8093                        }
8094                        e.preventDefault();
8095                    }
8096                    // Figure out what position the clicked header has.
8097                    var num = sections.index(t),
8098                        cookieName = cookie + num,
8099                        cookieVal = num,
8100                        content = t.next(op.group);
8101                    // If content is already active, hide it.
8102                    if(t.hasClass(active)) {
8103                        content.trigger('hide');
8104                        cookieVal += 'closed';
8105                        if(cookieSupport) {
8106                            $.cookie(cookieName, cookieVal, { path: '/', expires: 10 });
8107                        }
8108                        return;
8109                    }
8110                    // Otherwise show it.
8111                    content.trigger('show');
8112                    cookieVal += 'open';
8113                    if(cookieSupport) {
8114                        $.cookie(cookieName, cookieVal, { path: '/', expires: 10 });
8115                    }
8116                });
8117            });
8118        }
8119    });
8120
8121    // Make sure can we eat cookies without getting into trouble.
8122    var cookieSupport = (function() {
8123        //we don't need cookies
8124        return false;
8125    })();
8126})(jQuery);;
8127/**
8128 * Cookie plugin
8129 *
8130 * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
8131 * Dual licensed under the MIT and GPL licenses:
8132 * http://www.opensource.org/licenses/mit-license.php
8133 * http://www.gnu.org/licenses/gpl.html
8134 *
8135 */
8136
8137/**
8138 * Create a cookie with the given name and value and other optional parameters.
8139 *
8140 * @example $.cookie('the_cookie', 'the_value');
8141 * @desc Set the value of a cookie.
8142 * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
8143 * @desc Create a cookie with all available options.
8144 * @example $.cookie('the_cookie', 'the_value');
8145 * @desc Create a session cookie.
8146 * @example $.cookie('the_cookie', null);
8147 * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
8148 *       used when the cookie was set.
8149 *
8150 * @param String name The name of the cookie.
8151 * @param String value The value of the cookie.
8152 * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
8153 * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
8154 *                             If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
8155 *                             If set to null or omitted, the cookie will be a session cookie and will not be retained
8156 *                             when the the browser exits.
8157 * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
8158 * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
8159 * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
8160 *                        require a secure protocol (like HTTPS).
8161 * @type undefined
8162 *
8163 * @name $.cookie
8164 * @cat Plugins/Cookie
8165 * @author Klaus Hartl/[email protected]
8166 */
8167
8168/**
8169 * Get the value of a cookie with the given name.
8170 *
8171 * @example $.cookie('the_cookie');
8172 * @desc Get the value of a cookie.
8173 *
8174 * @param String name The name of the cookie.
8175 * @return The value of the cookie.
8176 * @type String
8177 *
8178 * @name $.cookie
8179 * @cat Plugins/Cookie
8180 * @author Klaus Hartl/[email protected]
8181 */
8182jQuery.cookie = function(name, value, options) {
8183    if (typeof value != 'undefined') { // name and value given, set cookie
8184        options = options || {};
8185        if (value === null) {
8186            value = '';
8187            options.expires = -1;
8188        }
8189        var expires = '';
8190        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
8191            var date;
8192            if (typeof options.expires == 'number') {
8193                date = new Date();
8194                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
8195            } else {
8196                date = options.expires;
8197            }
8198            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
8199        }
8200        // CAUTION: Needed to parenthesize options.path and options.domain
8201        // in the following expressions, otherwise they evaluate to undefined
8202        // in the packed version for some reason...
8203        var path = options.path ? '; path=' + (options.path) : '';
8204        var domain = options.domain ? '; domain=' + (options.domain) : '';
8205        var secure = options.secure ? '; secure' : '';
8206        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
8207    } else { // only name given, get cookie
8208        var cookieValue = null;
8209        if (document.cookie && document.cookie != '') {
8210            var cookies = document.cookie.split(';');
8211            for (var i = 0; i < cookies.length; i++) {
8212                var cookie = jQuery.trim(cookies[i]);
8213                // Does this cookie string begin with the name we want?
8214                if (cookie.substring(0, name.length + 1) == (name + '=')) {
8215                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
8216                    break;
8217                }
8218            }
8219        }
8220        return cookieValue;
8221    }
8222};;
8223(function($){$.fn.lazyload=function(options){var settings={threshold:0,failurelimit:0,event:"scroll",effect:"show",container:window};if(options){$.extend(settings,options);}
8224var elements=this;if("scroll"==settings.event){$(settings.container).bind("scroll",function(event){var counter=0;elements.each(function(){if($.abovethetop(this,settings)||$.leftofbegin(this,settings)){}else if(!$.belowthefold(this,settings)&&!$.rightoffold(this,settings)){$(this).trigger("appear");}else{if(counter++>settings.failurelimit){return false;}}});var temp=$.grep(elements,function(element){return!element.loaded;});elements=$(temp);});}
8225this.each(function(){var self=this;if(undefined==$(self).attr("original")){$(self).attr("original",$(self).attr("src"));}
8226if("scroll"!=settings.event||undefined==$(self).attr("src")||settings.placeholder==$(self).attr("src")||($.abovethetop(self,settings)||$.leftofbegin(self,settings)||$.belowthefold(self,settings)||$.rightoffold(self,settings))){if(settings.placeholder){$(self).attr("src",settings.placeholder);}else{$(self).removeAttr("src");}
8227self.loaded=false;}else{self.loaded=true;}
8228$(self).one("appear",function(){if(!this.loaded){$("<img />").bind("load",function(){$(self).hide().attr("src",$(self).attr("original"))
8229[settings.effect](settings.effectspeed);self.loaded=true;}).attr("src",$(self).attr("original"));};});if("scroll"!=settings.event){$(self).bind(settings.event,function(event){if(!self.loaded){$(self).trigger("appear");}});}});$(settings.container).trigger(settings.event);return this;};$.belowthefold=function(element,settings){if(settings.container===undefined||settings.container===window){var fold=$(window).height()+$(window).scrollTop();}else{var fold=$(settings.container).offset().top+$(settings.container).height();}
8230return fold<=$(element).offset().top-settings.threshold;};$.rightoffold=function(element,settings){if(settings.container===undefined||settings.container===window){var fold=$(window).width()+$(window).scrollLeft();}else{var fold=$(settings.container).offset().left+$(settings.container).width();}
8231return fold<=$(element).offset().left-settings.threshold;};$.abovethetop=function(element,settings){if(settings.container===undefined||settings.container===window){var fold=$(window).scrollTop();}else{var fold=$(settings.container).offset().top;}
8232return fold>=$(element).offset().top+settings.threshold+$(element).height();};$.leftofbegin=function(element,settings){if(settings.container===undefined||settings.container===window){var fold=$(window).scrollLeft();}else{var fold=$(settings.container).offset().left;}
8233return fold>=$(element).offset().left+settings.threshold+$(element).width();};$.extend($.expr[':'],{"below-the-fold":"$.belowthefold(a, {threshold : 0, container: window})","above-the-fold":"!$.belowthefold(a, {threshold : 0, container: window})","right-of-fold":"$.rightoffold(a, {threshold : 0, container: window})","left-of-fold":"!$.rightoffold(a, {threshold : 0, container: window})"});})(jQuery);;
8234/**
8235 * jQuery.ScrollTo - Easy element scrolling using jQuery.
8236 * Copyright (c) 2007-2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
8237 * Dual licensed under MIT and GPL.
8238 * Date: 9/11/2008
8239 * @author Ariel Flesler
8240 * @version 1.4
8241 *
8242 * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
8243 */
8244;(function(h){var m=h.scrollTo=function(b,c,g){h(window).scrollTo(b,c,g)};m.defaults={axis:'y',duration:1};m.window=function(b){return h(window).scrollable()};h.fn.scrollable=function(){return this.map(function(){var b=this.parentWindow||this.defaultView,c=this.nodeName=='#document'?b.frameElement||b:this,g=c.contentDocument||(c.contentWindow||c).document,i=c.setInterval;return c.nodeName=='IFRAME'||i&&h.browser.safari?g.body:i?g.documentElement:this})};h.fn.scrollTo=function(r,j,a){if(typeof j=='object'){a=j;j=0}if(typeof a=='function')a={onAfter:a};a=h.extend({},m.defaults,a);j=j||a.speed||a.duration;a.queue=a.queue&&a.axis.length>1;if(a.queue)j/=2;a.offset=n(a.offset);a.over=n(a.over);return this.scrollable().each(function(){var k=this,o=h(k),d=r,l,e={},p=o.is('html,body');switch(typeof d){case'number':case'string':if(/^([+-]=)?\d+(px)?$/.test(d)){d=n(d);break}d=h(d,this);case'object':if(d.is||d.style)l=(d=h(d)).offset()}h.each(a.axis.split(''),function(b,c){var g=c=='x'?'Left':'Top',i=g.toLowerCase(),f='scroll'+g,s=k[f],t=c=='x'?'Width':'Height',v=t.toLowerCase();if(l){e[f]=l[i]+(p?0:s-o.offset()[i]);if(a.margin){e[f]-=parseInt(d.css('margin'+g))||0;e[f]-=parseInt(d.css('border'+g+'Width'))||0}e[f]+=a.offset[i]||0;if(a.over[i])e[f]+=d[v]()*a.over[i]}else e[f]=d[i];if(/^\d+$/.test(e[f]))e[f]=e[f]<=0?0:Math.min(e[f],u(t));if(!b&&a.queue){if(s!=e[f])q(a.onAfterFirst);delete e[f]}});q(a.onAfter);function q(b){o.animate(e,j,a.easing,b&&function(){b.call(this,r,a)})};function u(b){var c='scroll'+b,g=k.ownerDocument;return p?Math.max(g.documentElement[c],g.body[c]):k[c]}}).end()};function n(b){return typeof b=='object'?b:{top:b,left:b}}})(jQuery);;
8245(function($) {
8246  $(window).load(function() {
8247    // Add class if js
8248    $("html").addClass("js");
8249  });
8250
8251  $(document).ready(function() {
8252    
8253    var nav_skiplink = $("#nav_skiplink")
8254    
8255    // liens d'evitement
8256    nav_skiplink
8257    .find('a')
8258    .focus(function() {
8259        nav_skiplink.addClass('accessibility_on');
8260    })
8261    .blur(function() {
8262        nav_skiplink.removeClass('accessibility_on');
8263    });
8264    
8265    // External link added on other hostnames link
8266    $(":not(a.diaporama)").filter(function() {
8267      return this.hostname && this.hostname !== location.hostname;
8268    }).addClass('link-external');
8269
8270    // open link in new window
8271    $("a.link-external").click(function(event) {
8272        window.open(this.href);
8273        event.preventDefault();
8274    });
8275    
8276    // default top page smooth scroll
8277    $('.toppage').find('a').click(function(event) {
8278        $.scrollTo('#top', 1000);
8279        event.preventDefault();
8280    });
8281  });
8282  
8283  
8284})(jQuery);
8285;
8286/*
8287 * jQuery.BiggerLink v2.0.1
8288 * http://www.ollicle.com/eg/jquery/biggerlink/
8289 *
8290 * Copyright (c) 2009 Oliver Boermans
8291 * http://creativecommons.org/licenses/MIT/
8292 *
8293 * 2009-11-22 (22 Nov 2009)
8294*/ 
8295(function($) {
8296	$.fn.biggerlink = function(options) {
8297
8298		// Default settings
8299		var settings = {
8300			biggerclass:'bl-bigger', 	// class added to the first contained link and others that trigger it
8301			hoverclass:'bl-hover', 		// class added to parent element on hover/focus
8302			hoverclassparent:'bl-hoverparent', // class added to parent parent element on hover/focus
8303			hoverclass2:'bl-hover2', 	// class added to parent element on hover/focus of other links
8304			clickableclass:'bl-hot', 	// class added to parent element with behaviour
8305			otherstriggermaster: true,	// will all links in containing biggerlink element trigger the first link
8306			follow: 'auto'				// follow master link on click? : 'auto',true,false
8307		};
8308		if(options) {
8309			$.extend(settings, options);
8310		}
8311		$(this).filter(function(){
8312			 return $('a',this).length > 0;
8313
8314		}).addClass(settings.clickableclass).css('cursor', 'pointer').each(function(i){
8315			
8316			// store element references
8317			var big = $(this).data('biggerlink',{hovered:false,focused:false,hovered2:false,focused2:false});
8318			var links = {
8319				all: $('a',this),
8320				big: $(this),
8321				master: $('a:first',this).data('biggerlink',{status:'master'}).addClass(settings.biggerclass),
8322				other: $('a',this).not($('a:first',this)).data('biggerlink',{status:'other'})
8323			};
8324			
8325			
8326			$('a',this).andSelf().each(function(){
8327				var newdata = $.extend($(this).data('biggerlink'),links);
8328				$(this).data('biggerlink',newdata);
8329			});
8330			
8331			
8332			
8333			// Add title of first link with title to parent if not already set
8334			var thistitle = big.attr('title');
8335			var newtitle = big.data('biggerlink').master.attr('title');
8336			if(newtitle && !thistitle)
8337			{
8338				big.attr('title', newtitle);
8339			}
8340			
8341
8342
8343		// events on biggerlink element
8344		
8345		big
8346			.mouseover(function(event){
8347				window.status = $(this).data('biggerlink').master.get(0).href;
8348				$(this).addClass(settings.hoverclass);
8349				$(this).parent().addClass(settings.hoverclassparent);
8350				$(this).data('biggerlink').hovered = true;
8351			})
8352			.mouseout(function(event){
8353				window.status = '';
8354				if(!$(this).data('biggerlink').focused)
8355				{
8356					$(this).parent().removeClass(settings.hoverclass);
8357					$(this).parent().removeClass(settings.hoverclassparent);
8358				}
8359				$(this).data('biggerlink').hovered = false;
8360			})
8361			.bind('click',function(event){
8362
8363				// if clicked direct or non-link
8364				if(!$(event.target).closest('a').length)
8365				{
8366					$(this).data('biggerlink').master.trigger({type:'click',source:'biggerlink'});
8367					event.stopPropagation();
8368				}
8369			});
8370			
8371			
8372			
8373			// focus/blur
8374			
8375			links.all
8376			.bind('focus',function(){
8377				$(this).data('biggerlink').big.addClass(settings.hoverclass);
8378				$(this).data('biggerlink').big.data('biggerlink').focused = true;
8379			}).bind('blur',function(){
8380				if(!$(this).data('biggerlink').big.data('biggerlink').hovered)
8381				{
8382					$(this).data('biggerlink').big.removeClass(settings.hoverclass);
8383				}
8384				$(this).data('biggerlink').big.data('biggerlink').focused = false;
8385			});
8386			
8387		
8388			
8389			// click/focus/blur event on master (first) link within biggerlink
8390		
8391			links.master
8392			.bind('click',function(event){
8393				if(event.source == 'biggerlink')
8394				{
8395					if(settings.follow === true || settings.follow == 'auto' && event.result !== false)
8396					{
8397						window.location = $(this).attr('href');
8398					}
8399					else
8400					{
8401						event.stopPropagation();
8402					}
8403				}
8404			});
8405			
8406			
8407			// links other than the first (master) link also within biggerlink
8408			
8409			// other links are independent
8410			if(settings.otherstriggermaster)
8411			{
8412				links.other.addClass(settings.biggerclass)
8413				.bind('click',function(event){
8414					// trigger click events on master link instead
8415					$(this).data('biggerlink').master.trigger({type:'click',source:'biggerlink'});
8416					
8417					// stop this link being followed
8418					event.preventDefault();
8419					
8420					// prevent events on parent elements being triggered
8421					event.stopPropagation();
8422				});
8423			}
8424			
8425			// other links are slaves of master link 
8426			else
8427			{
8428				links.other
8429				.bind('focus',function(){
8430					$(this).data('biggerlink').big.addClass(settings.hoverclass2);
8431					$(this).data('biggerlink').big.data('biggerlink').focused2 = true;
8432				})
8433				.bind('blur',function(){
8434					if(!$(this).data('biggerlink').big.data('biggerlink').hovered2)
8435					{
8436						$(this).data('biggerlink').big.removeClass(settings.hoverclass2);
8437					}
8438					$(this).data('biggerlink').big.data('biggerlink').focused2 = false;
8439					
8440				})
8441				.bind('mouseover',function(event){
8442					$(this).data('biggerlink').big.addClass(settings.hoverclass2);
8443					$(this).data('biggerlink').big.data('biggerlink').hovered2 = true;
8444					event.stopPropagation();
8445				})
8446				.bind('mouseout',function(event){
8447					if(!$(this).data('biggerlink').big.data('biggerlink').focused2)
8448					{
8449						$(this).data('biggerlink').big.removeClass(settings.hoverclass2);
8450					}
8451					$(this).data('biggerlink').big.data('biggerlink').hovered2 = false;
8452					event.stopPropagation();
8453				});
8454				
8455				if(!links.other.attr('title'))
8456				{
8457					links.other.attr('title','');
8458				}
8459			}
8460		});
8461		return this;
8462	};
8463})(jQuery);
8464
8465
8466;
8467/*
8468 * jQuery Reveal Plugin 1.0
8469 * www.ZURB.com
8470 * Copyright 2010, ZURB
8471 * Free to use under the MIT license.
8472 * http://www.opensource.org/licenses/mit-license.php
8473*/
8474
8475
8476(function($) {
8477
8478/*---------------------------
8479 Defaults for Reveal
8480----------------------------*/
8481	 
8482/*---------------------------
8483 Listener for data-reveal-id attributes
8484----------------------------*/
8485
8486	$('a[data-reveal-id]').live('click', function(e) {
8487		e.preventDefault();
8488		var modalLocation = $(this).attr('data-reveal-id');
8489		$('#'+modalLocation).reveal($(this).data());
8490	});
8491
8492/*---------------------------
8493 Extend and Execute
8494----------------------------*/
8495
8496    $.fn.reveal = function(options) {
8497        
8498        
8499        var defaults = {  
8500	    	animation: 'fadeAndPop', //fade, fadeAndPop, none
8501		    animationspeed: 300, //how fast animtions are
8502		    closeonbackgroundclick: true, //if you click background will modal close?
8503		    dismissmodalclass: 'close-reveal-modal' //the class of a button or element that will close an open modal
8504    	}; 
8505    	
8506        //Extend dem' options
8507        var options = $.extend({}, defaults, options); 
8508	
8509        return this.each(function() {
8510        
8511/*---------------------------
8512 Global Variables
8513----------------------------*/
8514        	var modal = $(this),
8515        		topMeasure  = parseInt(modal.css('top')),
8516				topOffset = modal.height() + topMeasure,
8517          		locked = false,
8518				modalBG = $('.reveal-modal-bg');
8519
8520/*---------------------------
8521 Create Modal BG
8522----------------------------*/
8523			if(modalBG.length == 0) {
8524				modalBG = $('<div class="reveal-modal-bg" />').insertAfter(modal);
8525			}		    
8526     
8527/*---------------------------
8528 Open & Close Animations
8529----------------------------*/
8530			//Entrance Animations
8531			modal.bind('reveal:open', function () {
8532			  modalBG.unbind('click.modalEvent');
8533				$('.' + options.dismissmodalclass).unbind('click.modalEvent');
8534				if(!locked) {
8535					lockModal();
8536					if(options.animation == "fadeAndPop") {
8537						modal.css({'top': $(document).scrollTop()-topOffset, 'opacity' : 0, 'visibility' : 'visible'});
8538						modalBG.fadeIn(options.animationspeed/2);
8539						modal.delay(options.animationspeed/2).animate({
8540							"top": $(document).scrollTop()+topMeasure + 'px',
8541							"opacity" : 1
8542						}, options.animationspeed,unlockModal());					
8543					}
8544					if(options.animation == "fade") {
8545						modal.css({'opacity' : 0, 'visibility' : 'visible', 'top': $(document).scrollTop()+topMeasure});
8546						modalBG.fadeIn(options.animationspeed/2);
8547						modal.delay(options.animationspeed/2).animate({
8548							"opacity" : 1
8549						}, options.animationspeed,unlockModal());					
8550					} 
8551					if(options.animation == "none") {
8552						modal.css({'visibility' : 'visible', 'top':$(document).scrollTop()+topMeasure});
8553						modalBG.css({"display":"block"});	
8554						unlockModal()				
8555					}
8556				}
8557				modal.unbind('reveal:open');
8558			}); 	
8559
8560			//Closing Animation
8561			modal.bind('reveal:close', function () {
8562			  if(!locked) {
8563					lockModal();
8564					if(options.animation == "fadeAndPop") {
8565						modalBG.delay(options.animationspeed).fadeOut(options.animationspeed);
8566						modal.animate({
8567							"top":  $(document).scrollTop()-topOffset + 'px',
8568							"opacity" : 0
8569						}, options.animationspeed/2, function() {
8570							modal.css({'top':topMeasure, 'opacity' : 1, 'visibility' : 'hidden'});
8571							unlockModal();
8572						});					
8573					}  	
8574					if(options.animation == "fade") {
8575						modalBG.delay(options.animationspeed).fadeOut(options.animationspeed);
8576						modal.animate({
8577							"opacity" : 0
8578						}, options.animationspeed, function() {
8579							modal.css({'opacity' : 1, 'visibility' : 'hidden', 'top' : topMeasure});
8580							unlockModal();
8581						});					
8582					}  	
8583					if(options.animation == "none") {
8584						modal.css({'visibility' : 'hidden', 'top' : topMeasure});
8585						modalBG.css({'display' : 'none'});	
8586					}		
8587				}
8588				modal.unbind('reveal:close');
8589			});     
8590   	
8591/*---------------------------
8592 Open and add Closing Listeners
8593----------------------------*/
8594        	//Open Modal Immediately
8595    	modal.trigger('reveal:open')
8596			
8597			//Close Modal Listeners
8598			var closeButton = $('.' + options.dismissmodalclass).bind('click.modalEvent', function () {
8599			  modal.trigger('reveal:close')
8600			});
8601			
8602			if(options.closeonbackgroundclick) {
8603				modalBG.css({"cursor":"pointer"})
8604				modalBG.bind('click.modalEvent', function () {
8605				  modal.trigger('reveal:close')
8606				});
8607			}
8608			$('body').keyup(function(e) {
8609        		if(e.which===27){ modal.trigger('reveal:close'); } // 27 is the keycode for the Escape key
8610			});
8611			
8612			
8613/*---------------------------
8614 Animations Locks
8615----------------------------*/
8616			function unlockModal() { 
8617				locked = false;
8618			}
8619			function lockModal() {
8620				locked = true;
8621			}	
8622			
8623        });//each call
8624    }//orbit plugin call
8625})(jQuery);
8626        
8627;
vendor: 66,664 bytes, lines 8628-8630
8628/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){var b=function(){if(a&&a.fn&&a.fn.select2&&a.fn.select2.amd)var b=a.fn.select2.amd;var b;return function(){if(!b||!b.requirejs){b?c=b:b={};var a,c,d;!function(b){function e(a,b){return u.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n=b&&b.split("/"),o=s.map,p=o&&o["*"]||{};if(a&&"."===a.charAt(0))if(b){for(a=a.split("/"),g=a.length-1,s.nodeIdCompat&&w.test(a[g])&&(a[g]=a[g].replace(w,"")),a=n.slice(0,n.length-1).concat(a),k=0;k<a.length;k+=1)if(m=a[k],"."===m)a.splice(k,1),k-=1;else if(".."===m){if(1===k&&(".."===a[2]||".."===a[0]))break;k>0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}else 0===a.indexOf("./")&&(a=a.substring(2));if((n||p)&&o){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),n)for(l=n.length;l>0;l-=1)if(e=o[n.slice(0,l).join("/")],e&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&p&&p[d]&&(i=p[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,c){return function(){var d=v.call(arguments,0);return"string"!=typeof d[0]&&1===d.length&&d.push(null),n.apply(b,d.concat([a,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){q[a]=b}}function j(a){if(e(r,a)){var c=r[a];delete r[a],t[a]=!0,m.apply(b,c)}if(!e(q,a)&&!e(t,a))throw new Error("No "+a);return q[a]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return function(){return s&&s.config&&s.config[a]||{}}}var m,n,o,p,q={},r={},s={},t={},u=Object.prototype.hasOwnProperty,v=[].slice,w=/\.js$/;o=function(a,b){var c,d=k(a),e=d[0];return a=d[1],e&&(e=f(e,b),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(b)):f(a,b):(a=f(a,b),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},p={require:function(a){return g(a)},exports:function(a){var b=q[a];return"undefined"!=typeof b?b:q[a]={}},module:function(a){return{id:a,uri:"",exports:q[a],config:l(a)}}},m=function(a,c,d,f){var h,k,l,m,n,s,u=[],v=typeof d;if(f=f||a,"undefined"===v||"function"===v){for(c=!c.length&&d.length?["require","exports","module"]:c,n=0;n<c.length;n+=1)if(m=o(c[n],f),k=m.f,"require"===k)u[n]=p.require(a);else if("exports"===k)u[n]=p.exports(a),s=!0;else if("module"===k)h=u[n]=p.module(a);else if(e(q,k)||e(r,k)||e(t,k))u[n]=j(k);else{if(!m.p)throw new Error(a+" missing "+k);m.p.load(m.n,g(f,!0),i(k),{}),u[n]=q[k]}l=d?d.apply(q[a],u):void 0,a&&(h&&h.exports!==b&&h.exports!==q[a]?q[a]=h.exports:l===b&&s||(q[a]=l))}else a&&(q[a]=d)},a=c=n=function(a,c,d,e,f){if("string"==typeof a)return p[a]?p[a](c):j(o(a,c).f);if(!a.splice){if(s=a,s.deps&&n(s.deps,s.callback),!c)return;c.splice?(a=c,c=d,d=null):a=b}return c=c||function(){},"function"==typeof d&&(d=e,e=f),e?m(b,a,c,d):setTimeout(function(){m(b,a,c,d)},4),n},n.config=function(a){return n(a)},a._defined=q,d=function(a,b,c){if("string"!=typeof a)throw new Error("See almond README: incorrect module build, no module name");b.splice||(c=b,b=[]),e(q,a)||e(r,a)||(r[a]=[a,b,c])},d.amd={jQuery:!0}}(),b.requirejs=a,b.require=c,b.define=d}}(),b.define("almond",function(){}),b.define("jquery",[],function(){var b=a||$;return null==b&&console&&console.error&&console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."),b}),b.define("select2/utils",["jquery"],function(a){function b(a){var b=a.prototype,c=[];for(var d in b){var e=b[d];"function"==typeof e&&"constructor"!==d&&c.push(d)}return c}var c={};c.Extend=function(a,b){function c(){this.constructor=a}var d={}.hasOwnProperty;for(var e in b)d.call(b,e)&&(a[e]=b[e]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},c.Decorate=function(a,c){function d(){var b=Array.prototype.unshift,d=c.prototype.constructor.length,e=a.prototype.constructor;d>0&&(b.call(arguments,a.prototype.constructor),e=c.prototype.constructor),e.apply(this,arguments)}function e(){this.constructor=d}var f=b(c),g=b(a);c.displayName=a.displayName,d.prototype=new e;for(var h=0;h<g.length;h++){var i=g[h];d.prototype[i]=a.prototype[i]}for(var j=(function(a){var b=function(){};a in d.prototype&&(b=d.prototype[a]);var e=c.prototype[a];return function(){var a=Array.prototype.unshift;return a.call(arguments,b),e.apply(this,arguments)}}),k=0;k<f.length;k++){var l=f[k];d.prototype[l]=j(l)}return d};var d=function(){this.listeners={}};return d.prototype.on=function(a,b){this.listeners=this.listeners||{},a in this.listeners?this.listeners[a].push(b):this.listeners[a]=[b]},d.prototype.trigger=function(a){var b=Array.prototype.slice,c=b.call(arguments,1);this.listeners=this.listeners||{},null==c&&(c=[]),0===c.length&&c.push({}),c[0]._type=a,a in this.listeners&&this.invoke(this.listeners[a],b.call(arguments,1)),"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},d.prototype.invoke=function(a,b){for(var c=0,d=a.length;d>c;c++)a[c].apply(this,b)},c.Observable=d,c.generateChars=function(a){for(var b="",c=0;a>c;c++){var d=Math.floor(36*Math.random());b+=d.toString(36)}return b},c.bind=function(a,b){return function(){a.apply(b,arguments)}},c._convertData=function(a){for(var b in a){var c=b.split("-"),d=a;if(1!==c.length){for(var e=0;e<c.length;e++){var f=c[e];f=f.substring(0,1).toLowerCase()+f.substring(1),f in d||(d[f]={}),e==c.length-1&&(d[f]=a[b]),d=d[f]}delete a[b]}}return a},c.hasScroll=function(b,c){var d=a(c),e=c.style.overflowX,f=c.style.overflowY;return e!==f||"hidden"!==f&&"visible"!==f?"scroll"===e||"scroll"===f?!0:d.innerHeight()<c.scrollHeight||d.innerWidth()<c.scrollWidth:!1},c.escapeMarkup=function(a){var b={"\\":"&#92;","&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#47;"};return"string"!=typeof a?a:String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})},c.appendMany=function(b,c){if("1.7"===a.fn.jquery.substr(0,3)){var d=a();a.map(c,function(a){d=d.add(a)}),c=d}b.append(c)},c}),b.define("select2/results",["jquery","./utils"],function(a,b){function c(a,b,d){this.$element=a,this.data=d,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<ul class="select2-results__options" role="tree"></ul>');return this.options.get("multiple")&&b.attr("aria-multiselectable","true"),this.$results=b,b},c.prototype.clear=function(){this.$results.empty()},c.prototype.displayMessage=function(b){var c=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var d=a('<li role="treeitem" aria-live="assertive" class="select2-results__option"></li>'),e=this.options.get("translations").get(b.message);d.append(c(e(b.args))),d[0].className+=" select2-results__message",this.$results.append(d)},c.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},c.prototype.append=function(a){this.hideLoading();var b=[];if(null==a.results||0===a.results.length)return void(0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"}));a.results=this.sort(a.results);for(var c=0;c<a.results.length;c++){var d=a.results[c],e=this.option(d);b.push(e)}this.$results.append(b)},c.prototype.position=function(a,b){var c=b.find(".select2-results");c.append(a)},c.prototype.sort=function(a){var b=this.options.get("sorter");return b(a)},c.prototype.highlightFirstItem=function(){var a=this.$results.find(".select2-results__option[aria-selected]"),b=a.filter("[aria-selected=true]");b.length>0?b.first().trigger("mouseenter"):a.first().trigger("mouseenter"),this.ensureHighlightVisible()},c.prototype.setClasses=function(){var b=this;this.data.current(function(c){var d=a.map(c,function(a){return a.id.toString()}),e=b.$results.find(".select2-results__option[aria-selected]");e.each(function(){var b=a(this),c=a.data(this,"data"),e=""+c.id;null!=c.element&&c.element.selected||null==c.element&&a.inArray(e,d)>-1?b.attr("aria-selected","true"):b.attr("aria-selected","false")})})},c.prototype.showLoading=function(a){this.hideLoading();var b=this.options.get("translations").get("searching"),c={disabled:!0,loading:!0,text:b(a)},d=this.option(c);d.className+=" loading-results",this.$results.prepend(d)},c.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},c.prototype.option=function(b){var c=document.createElement("li");c.className="select2-results__option";var d={role:"treeitem","aria-selected":"false"};b.disabled&&(delete d["aria-selected"],d["aria-disabled"]="true"),null==b.id&&delete d["aria-selected"],null!=b._resultId&&(c.id=b._resultId),b.title&&(c.title=b.title),b.children&&(d.role="group",d["aria-label"]=b.text,delete d["aria-selected"]);for(var e in d){var f=d[e];c.setAttribute(e,f)}if(b.children){var g=a(c),h=document.createElement("strong");h.className="select2-results__group";a(h);this.template(b,h);for(var i=[],j=0;j<b.children.length;j++){var k=b.children[j],l=this.option(k);i.push(l)}var m=a("<ul></ul>",{"class":"select2-results__options select2-results__options--nested"});m.append(i),g.append(h),g.append(m)}else this.template(b,c);return a.data(c,"data",b),c},c.prototype.bind=function(b,c){var d=this,e=b.id+"-results";this.$results.attr("id",e),b.on("results:all",function(a){d.clear(),d.append(a.data),b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("results:append",function(a){d.append(a.data),b.isOpen()&&d.setClasses()}),b.on("query",function(a){d.hideMessages(),d.showLoading(a)}),b.on("select",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("unselect",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("open",function(){d.$results.attr("aria-expanded","true"),d.$results.attr("aria-hidden","false"),d.setClasses(),d.ensureHighlightVisible()}),b.on("close",function(){d.$results.attr("aria-expanded","false"),d.$results.attr("aria-hidden","true"),d.$results.removeAttr("aria-activedescendant")}),b.on("results:toggle",function(){var a=d.getHighlightedResults();0!==a.length&&a.trigger("mouseup")}),b.on("results:select",function(){var a=d.getHighlightedResults();if(0!==a.length){var b=a.data("data");"true"==a.attr("aria-selected")?d.trigger("close",{}):d.trigger("select",{data:b})}}),b.on("results:previous",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a);if(0!==c){var e=c-1;0===a.length&&(e=0);var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top,h=f.offset().top,i=d.$results.scrollTop()+(h-g);0===e?d.$results.scrollTop(0):0>h-g&&d.$results.scrollTop(i)}}),b.on("results:next",function(){var a=d.getHighlightedResults(),b=d.$results.find("[aria-selected]"),c=b.index(a),e=c+1;if(!(e>=b.length)){var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top+d.$results.outerHeight(!1),h=f.offset().top+f.outerHeight(!1),i=d.$results.scrollTop()+h-g;0===e?d.$results.scrollTop(0):h>g&&d.$results.scrollTop(i)}}),b.on("results:focus",function(a){a.element.addClass("select2-results__option--highlighted")}),b.on("results:message",function(a){d.displayMessage(a)}),a.fn.mousewheel&&this.$results.on("mousewheel",function(a){var b=d.$results.scrollTop(),c=d.$results.get(0).scrollHeight-b+a.deltaY,e=a.deltaY>0&&b-a.deltaY<=0,f=a.deltaY<0&&c<=d.$results.height();e?(d.$results.scrollTop(0),a.preventDefault(),a.stopPropagation()):f&&(d.$results.scrollTop(d.$results.get(0).scrollHeight-d.$results.height()),a.preventDefault(),a.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[aria-selected]",function(b){var c=a(this),e=c.data("data");return"true"===c.attr("aria-selected")?void(d.options.get("multiple")?d.trigger("unselect",{originalEvent:b,data:e}):d.trigger("close",{})):void d.trigger("select",{originalEvent:b,data:e})}),this.$results.on("mouseenter",".select2-results__option[aria-selected]",function(b){var c=a(this).data("data");d.getHighlightedResults().removeClass("select2-results__option--highlighted"),d.trigger("results:focus",{data:c,element:a(this)})})},c.prototype.getHighlightedResults=function(){var a=this.$results.find(".select2-results__option--highlighted");return a},c.prototype.destroy=function(){this.$results.remove()},c.prototype.ensureHighlightVisible=function(){var a=this.getHighlightedResults();if(0!==a.length){var b=this.$results.find("[aria-selected]"),c=b.index(a),d=this.$results.offset().top,e=a.offset().top,f=this.$results.scrollTop()+(e-d),g=e-d;f-=2*a.outerHeight(!1),2>=c?this.$results.scrollTop(0):(g>this.$results.outerHeight()||0>g)&&this.$results.scrollTop(f)}},c.prototype.template=function(b,c){var d=this.options.get("templateResult"),e=this.options.get("escapeMarkup"),f=d(b,c);null==f?c.style.display="none":"string"==typeof f?c.innerHTML=e(f):a(c).append(f)},c}),b.define("select2/keys",[],function(){var a={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46};return a}),b.define("select2/selection/base",["jquery","../utils","../keys"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,b.Observable),d.prototype.render=function(){var b=a('<span class="select2-selection" role="combobox"  aria-haspopup="true" aria-expanded="false"></span>');return this._tabindex=0,null!=this.$element.data("old-tabindex")?this._tabindex=this.$element.data("old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),b.attr("title",this.$element.attr("title")),b.attr("tabindex",this._tabindex),this.$selection=b,b},d.prototype.bind=function(a,b){var d=this,e=(a.id+"-container",a.id+"-results");this.container=a,this.$selection.on("focus",function(a){d.trigger("focus",a)}),this.$selection.on("blur",function(a){d._handleBlur(a)}),this.$selection.on("keydown",function(a){d.trigger("keypress",a),a.which===c.SPACE&&a.preventDefault()}),a.on("results:focus",function(a){d.$selection.attr("aria-activedescendant",a.data._resultId)}),a.on("selection:update",function(a){d.update(a.data)}),a.on("open",function(){d.$selection.attr("aria-expanded","true"),d.$selection.attr("aria-owns",e),d._attachCloseHandler(a)}),a.on("close",function(){d.$selection.attr("aria-expanded","false"),d.$selection.removeAttr("aria-activedescendant"),d.$selection.removeAttr("aria-owns"),d.$selection.focus(),d._detachCloseHandler(a)}),a.on("enable",function(){d.$selection.attr("tabindex",d._tabindex)}),a.on("disable",function(){d.$selection.attr("tabindex","-1")})},d.prototype._handleBlur=function(b){var c=this;window.setTimeout(function(){document.activeElement==c.$selection[0]||a.contains(c.$selection[0],document.activeElement)||c.trigger("blur",b)},1)},d.prototype._attachCloseHandler=function(b){a(document.body).on("mousedown.select2."+b.id,function(b){var c=a(b.target),d=c.closest(".select2"),e=a(".select2.select2-container--open");e.each(function(){var b=a(this);if(this!=d[0]){var c=b.data("element");c.select2("close")}})})},d.prototype._detachCloseHandler=function(b){a(document.body).off("mousedown.select2."+b.id)},d.prototype.position=function(a,b){var c=b.find(".selection");c.append(a)},d.prototype.destroy=function(){this._detachCloseHandler(this.container)},d.prototype.update=function(a){throw new Error("The `update` method must be defined in child classes.")},d}),b.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(a,b,c,d){function e(){e.__super__.constructor.apply(this,arguments)}return c.Extend(e,b),e.prototype.render=function(){var a=e.__super__.render.call(this);return a.addClass("select2-selection--single"),a.html('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'),a},e.prototype.bind=function(a,b){var c=this;e.__super__.bind.apply(this,arguments);var d=a.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",d),this.$selection.attr("aria-labelledby",d),this.$selection.on("mousedown",function(a){1===a.which&&c.trigger("toggle",{originalEvent:a})}),this.$selection.on("focus",function(a){}),this.$selection.on("blur",function(a){}),a.on("focus",function(b){a.isOpen()||c.$selection.focus()}),a.on("selection:update",function(a){c.update(a.data)})},e.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},e.prototype.display=function(a,b){var c=this.options.get("templateSelection"),d=this.options.get("escapeMarkup");return d(c(a,b))},e.prototype.selectionContainer=function(){return a("<span></span>")},e.prototype.update=function(a){if(0===a.length)return void this.clear();var b=a[0],c=this.$selection.find(".select2-selection__rendered"),d=this.display(b,c);c.empty().append(d),c.prop("title",b.title||b.text)},e}),b.define("select2/selection/multiple",["jquery","./base","../utils"],function(a,b,c){function d(a,b){d.__super__.constructor.apply(this,arguments)}return c.Extend(d,b),d.prototype.render=function(){var a=d.__super__.render.call(this);return a.addClass("select2-selection--multiple"),a.html('<ul class="select2-selection__rendered"></ul>'),a},d.prototype.bind=function(b,c){var e=this;d.__super__.bind.apply(this,arguments),this.$selection.on("click",function(a){e.trigger("toggle",{originalEvent:a})}),this.$selection.on("click",".select2-selection__choice__remove",function(b){if(!e.options.get("disabled")){var c=a(this),d=c.parent(),f=d.data("data");e.trigger("unselect",{originalEvent:b,data:f})}})},d.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},d.prototype.display=function(a,b){var c=this.options.get("templateSelection"),d=this.options.get("escapeMarkup");return d(c(a,b))},d.prototype.selectionContainer=function(){var b=a('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">&times;</span></li>');return b},d.prototype.update=function(a){if(this.clear(),0!==a.length){for(var b=[],d=0;d<a.length;d++){var e=a[d],f=this.selectionContainer(),g=this.display(e,f);f.append(g),f.prop("title",e.title||e.text),f.data("data",e),b.push(f)}var h=this.$selection.find(".select2-selection__rendered");c.appendMany(h,b)}},d}),b.define("select2/selection/placeholder",["../utils"],function(a){function b(a,b,c){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c)}return b.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},b.prototype.createPlaceholder=function(a,b){var c=this.selectionContainer();return c.html(this.display(b)),c.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"),c},b.prototype.update=function(a,b){var c=1==b.length&&b[0].id!=this.placeholder.id,d=b.length>1;if(d||c)return a.call(this,b);this.clear();var e=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(e)},b}),b.define("select2/selection/allowClear",["jquery","../keys"],function(a,b){function c(){}return c.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",function(a){d._handleClear(a)}),b.on("keypress",function(a){d._handleKeyboardClear(a,b)})},c.prototype._handleClear=function(a,b){if(!this.options.get("disabled")){var c=this.$selection.find(".select2-selection__clear");if(0!==c.length){b.stopPropagation();for(var d=c.data("data"),e=0;e<d.length;e++){var f={data:d[e]};if(this.trigger("unselect",f),f.prevented)return}this.$element.val(this.placeholder.id).trigger("change"),this.trigger("toggle",{})}}},c.prototype._handleKeyboardClear=function(a,c,d){d.isOpen()||(c.which==b.DELETE||c.which==b.BACKSPACE)&&this._handleClear(c)},c.prototype.update=function(b,c){if(b.call(this,c),!(this.$selection.find(".select2-selection__placeholder").length>0||0===c.length)){var d=a('<span class="select2-selection__clear">&times;</span>');d.data("data",c),this.$selection.find(".select2-selection__rendered").prepend(d)}},c}),b.define("select2/selection/search",["jquery","../utils","../keys"],function(a,b,c){function d(a,b,c){a.call(this,b,c)}return d.prototype.render=function(b){var c=a('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" aria-autocomplete="list" /></li>');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return this._transferTabIndex(),d},d.prototype.bind=function(a,b,d){var e=this;a.call(this,b,d),b.on("open",function(){e.$search.trigger("focus")}),b.on("close",function(){e.$search.val(""),e.$search.removeAttr("aria-activedescendant"),e.$search.trigger("focus")}),b.on("enable",function(){e.$search.prop("disabled",!1),e._transferTabIndex()}),b.on("disable",function(){e.$search.prop("disabled",!0)}),b.on("focus",function(a){e.$search.trigger("focus")}),b.on("results:focus",function(a){e.$search.attr("aria-activedescendant",a.id)}),this.$selection.on("focusin",".select2-search--inline",function(a){e.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){e._handleBlur(a)}),this.$selection.on("keydown",".select2-search--inline",function(a){a.stopPropagation(),e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented();var b=a.which;if(b===c.BACKSPACE&&""===e.$search.val()){var d=e.$searchContainer.prev(".select2-selection__choice");if(d.length>0){var f=d.data("data");e.searchRemoveChoice(f),a.preventDefault()}}});var f=document.documentMode,g=f&&11>=f;this.$selection.on("input.searchcheck",".select2-search--inline",function(a){return g?void e.$selection.off("input.search input.searchcheck"):void e.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(a){if(g&&"input"===a.type)return void e.$selection.off("input.search input.searchcheck");var b=a.which;b!=c.SHIFT&&b!=c.CTRL&&b!=c.ALT&&b!=c.TAB&&e.handleSearch(a)})},d.prototype._transferTabIndex=function(a){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){var c=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),c&&this.$search.focus()},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.$search.val(b.text),this.handleSearch()},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{var b=this.$search.val().length+1;a=.75*b+"em"}this.$search.css("width",a)},d}),b.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting"],g=["opening","closing","selecting","unselecting"];b.call(this,c,d),c.on("*",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("select2/diacritics",[],function(){var a={"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"};return a}),b.define("select2/data/base",["../utils"],function(a){function b(a,c){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(a){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(a,b){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(a,b){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d=b.id+"-result-";return d+=a.generateChars(4),d+=null!=c.id?"-"+c.id.toString():"-"+a.generateChars(4)},b}),b.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(a.selected=!0,c(a.element).is("option"))return a.element.selected=!0,void this.$element.trigger("change");
8629if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f<a.length;f++){var g=a[f].id;-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")});else{var d=a.id;this.$element.val(d),this.$element.trigger("change")}},d.prototype.unselect=function(a){var b=this;if(this.$element.prop("multiple"))return a.selected=!1,c(a.element).is("option")?(a.element.selected=!1,void this.$element.trigger("change")):void this.current(function(d){for(var e=[],f=0;f<d.length;f++){var g=d[f].id;g!==a.id&&-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")})},d.prototype.bind=function(a,b){var c=this;this.container=a,a.on("select",function(a){c.select(a.data)}),a.on("unselect",function(a){c.unselect(a.data)})},d.prototype.destroy=function(){this.$element.find("*").each(function(){c.removeData(this,"data")})},d.prototype.query=function(a,b){var d=[],e=this,f=this.$element.children();f.each(function(){var b=c(this);if(b.is("option")||b.is("optgroup")){var f=e.item(b),g=e.matches(a,f);null!==g&&d.push(g)}}),b({results:d})},d.prototype.addOptions=function(a){b.appendMany(this.$element,a)},d.prototype.option=function(a){var b;a.children?(b=document.createElement("optgroup"),b.label=a.text):(b=document.createElement("option"),void 0!==b.textContent?b.textContent=a.text:b.innerText=a.text),a.id&&(b.value=a.id),a.disabled&&(b.disabled=!0),a.selected&&(b.selected=!0),a.title&&(b.title=a.title);var d=c(b),e=this._normalizeItem(a);return e.element=b,c.data(b,"data",e),d},d.prototype.item=function(a){var b={};if(b=c.data(a[0],"data"),null!=b)return b;if(a.is("option"))b={id:a.val(),text:a.text(),disabled:a.prop("disabled"),selected:a.prop("selected"),title:a.prop("title")};else if(a.is("optgroup")){b={text:a.prop("label"),children:[],title:a.prop("title")};for(var d=a.children("option"),e=[],f=0;f<d.length;f++){var g=c(d[f]),h=this.item(g);e.push(h)}b.children=e}return b=this._normalizeItem(b),b.element=a[0],c.data(a[0],"data",b),b},d.prototype._normalizeItem=function(a){c.isPlainObject(a)||(a={id:a,text:a}),a=c.extend({},{text:""},a);var b={selected:!1,disabled:!1};return null!=a.id&&(a.id=a.id.toString()),null!=a.text&&(a.text=a.text.toString()),null==a._resultId&&a.id&&null!=this.container&&(a._resultId=this.generateResultId(this.container,a)),c.extend({},b,a)},d.prototype.matches=function(a,b){var c=this.options.get("matcher");return c(a,b)},d}),b.define("select2/data/array",["./select","../utils","jquery"],function(a,b,c){function d(a,b){var c=b.get("data")||[];d.__super__.constructor.call(this,a,b),this.addOptions(this.convertToOptions(c))}return b.Extend(d,a),d.prototype.select=function(a){var b=this.$element.find("option").filter(function(b,c){return c.value==a.id.toString()});0===b.length&&(b=this.option(a),this.addOptions(b)),d.__super__.select.call(this,a)},d.prototype.convertToOptions=function(a){function d(a){return function(){return c(this).val()==a.id}}for(var e=this,f=this.$element.find("option"),g=f.map(function(){return e.item(c(this)).id}).get(),h=[],i=0;i<a.length;i++){var j=this._normalizeItem(a[i]);if(c.inArray(j.id,g)>=0){var k=f.filter(d(j)),l=this.item(k),m=c.extend(!0,{},j,l),n=this.option(m);k.replaceWith(n)}else{var o=this.option(j);if(j.children){var p=this.convertToOptions(j.children);b.appendMany(o,p)}h.push(o)}}return h},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(a,b){this.ajaxOptions=this._applyDefaults(b.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),d.__super__.constructor.call(this,a,b)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return c.extend({},a,{q:a.term})},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f)},function(){d.status&&"0"===d.status||e.trigger("results:message",{message:"errorLoading"})});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url.call(this.$element,a)),"function"==typeof f.data&&(f.data=f.data.call(this.$element,a)),this.ajaxOptions.delay&&null!=a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");void 0!==f&&(this.createTag=f);var g=d.get("insertTag");if(void 0!==g&&(this.insertTag=g),b.call(this,c,d),a.isArray(e))for(var h=0;h<e.length;h++){var i=e[h],j=this._normalizeItem(i),k=this.option(j);this.$element.append(k)}}return b.prototype.query=function(a,b,c){function d(a,f){for(var g=a.results,h=0;h<g.length;h++){var i=g[h],j=null!=i.children&&!d({results:i.children},!0),k=i.text===b.term;if(k||j)return f?!1:(a.data=g,void c(a))}if(f)return!0;var l=e.createTag(b);if(null!=l){var m=e.option(l);m.attr("data-select2-tag",!0),e.addOptions([m]),e.insertTag(g,l)}a.results=g,c(a)}var e=this;return this._removeOldTags(),null==b.term||null!=b.page?void a.call(this,b,c):void a.call(this,b,d)},b.prototype.createTag=function(b,c){var d=a.trim(c.term);return""===d?null:{id:d,text:d}},b.prototype.insertTag=function(a,b,c){b.unshift(c)},b.prototype._removeOldTags=function(b){var c=(this._lastTag,this.$element.find("option[data-select2-tag]"));c.each(function(){this.selected||a(this).remove()})},b}),b.define("select2/data/tokenizer",["jquery"],function(a){function b(a,b,c){var d=c.get("tokenizer");void 0!==d&&(this.tokenizer=d),a.call(this,b,c)}return b.prototype.bind=function(a,b,c){a.call(this,b,c),this.$search=b.dropdown.$search||b.selection.$search||c.find(".select2-search__field")},b.prototype.query=function(b,c,d){function e(b){var c=g._normalizeItem(b),d=g.$element.find("option").filter(function(){return a(this).val()===c.id});if(!d.length){var e=g.option(c);e.attr("data-select2-tag",!0),g._removeOldTags(),g.addOptions([e])}f(c)}function f(a){g.trigger("select",{data:a})}var g=this;c.term=c.term||"";var h=this.tokenizer(c,this.options,e);h.term!==c.term&&(this.$search.length&&(this.$search.val(h.term),this.$search.focus()),c.term=h.term),b.call(this,c,d)},b.prototype.tokenizer=function(b,c,d,e){for(var f=d.get("tokenSeparators")||[],g=c.term,h=0,i=this.createTag||function(a){return{id:a.term,text:a.term}};h<g.length;){var j=g[h];if(-1!==a.inArray(j,f)){var k=g.substr(0,h),l=a.extend({},c,{term:k}),m=i(l);null!=m?(e(m),g=g.substr(h+1)||"",h=0):h++}else h++}return{term:g}},b}),b.define("select2/data/minimumInputLength",[],function(){function a(a,b,c){this.minimumInputLength=c.get("minimumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){return b.term=b.term||"",b.term.length<this.minimumInputLength?void this.trigger("results:message",{message:"inputTooShort",args:{minimum:this.minimumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumInputLength",[],function(){function a(a,b,c){this.maximumInputLength=c.get("maximumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){return b.term=b.term||"",this.maximumInputLength>0&&b.term.length>this.maximumInputLength?void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;return d.maximumSelectionLength>0&&f>=d.maximumSelectionLength?void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}}):void a.call(d,b,c)})},a}),b.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('<span class="select2-dropdown"><span class="select2-results"></span></span>');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.bind=function(){},c.prototype.position=function(a,b){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("select2/dropdown/search",["jquery","../utils"],function(a,b){function c(){}return c.prototype.render=function(b){var c=b.call(this),d=a('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" /></span>');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},c.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(b){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.val("")}),c.on("focus",function(){c.isOpen()&&e.$search.focus()}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){var b=e.showSearch(a);b?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}})},c.prototype.handleSearch=function(a){if(!this._keyUpPrevented){var b=this.$search.val();this.trigger("query",{term:b})}this._keyUpPrevented=!1},c.prototype.showSearch=function(a,b){return!0},c}),b.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){var c=e.$results.offset().top+e.$results.outerHeight(!1),d=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1);c+50>=d&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('<li class="select2-results__option select2-results__option--load-more"role="treeitem" aria-disabled="true"></li>'),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),b.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(b,c,d){this.$dropdownParent=d.get("dropdownParent")||a(document.body),b.call(this,c,d)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.destroy=function(a){a.call(this),this.$dropdownContainer.remove()},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a("<span></span>"),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(a){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c,d){var e=this,f="scroll.select2."+d.id,g="resize.select2."+d.id,h="orientationchange.select2."+d.id,i=this.$container.parents().filter(b.hasScroll);i.each(function(){a(this).data("select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),i.on(f,function(b){var c=a(this).data("select2-scroll-position");a(this).scrollTop(c.y)}),a(window).on(f+" "+g+" "+h,function(a){e._positionDropdown(),e._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c,d){var e="scroll.select2."+d.id,f="resize.select2."+d.id,g="orientationchange.select2."+d.id,h=this.$container.parents().filter(b.hasScroll);h.off(e),a(window).off(e+" "+f+" "+g)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=this.$container.offset();f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.top<f.top-h.height,k=i.bottom>f.bottom+h.height,l={left:f.left,top:g.bottom},m=this.$dropdownParent;"static"===m.css("position")&&(m=m.offsetParent());var n=m.offset();l.top-=n.top,l.left-=n.left,c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-n.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){var a={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(a.minWidth=a.width,a.position="relative",a.width="auto"),this.$dropdown.css(a)},c.prototype._showDropdown=function(a){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),b.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d<b.length;d++){var e=b[d];e.children?c+=a(e.children):c++}return c}function b(a,b,c,d){this.minimumResultsForSearch=c.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),a.call(this,b,c,d)}return b.prototype.showSearch=function(b,c){return a(c.data.results)<this.minimumResultsForSearch?!1:b.call(this,c)},b}),b.define("select2/dropdown/selectOnClose",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("close",function(a){d._handleSelectOnClose(a)})},a.prototype._handleSelectOnClose=function(a,b){if(b&&null!=b.originalSelect2Event){var c=b.originalSelect2Event;if("select"===c._type||"unselect"===c._type)return}var d=this.getHighlightedResults();if(!(d.length<1)){var e=d.data("data");null!=e.element&&e.element.selected||null==e.element&&e.selected||this.trigger("select",{data:e})}},a}),b.define("select2/dropdown/closeOnSelect",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("select",function(a){d._selectTriggered(a)}),b.on("unselect",function(a){d._selectTriggered(a)})},a.prototype._selectTriggered=function(a,b){var c=b.originalEvent;c&&c.ctrlKey||this.trigger("close",{originalEvent:c,originalSelect2Event:b})},a}),b.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(a){var b=a.input.length-a.maximum,c="Please delete "+b+" character";return 1!=b&&(c+="s"),c},inputTooShort:function(a){var b=a.minimum-a.input.length,c="Please enter "+b+" or more characters";return c},loadingMore:function(){return"Loading more results…"},maximumSelected:function(a){var b="You can only select "+a.maximum+" item";return 1!=a.maximum&&(b+="s"),b},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),b.define("select2/defaults",["jquery","require","./results","./selection/single","./selection/multiple","./selection/placeholder","./selection/allowClear","./selection/search","./selection/eventRelay","./utils","./translation","./diacritics","./data/select","./data/array","./data/ajax","./data/tags","./data/tokenizer","./data/minimumInputLength","./data/maximumInputLength","./data/maximumSelectionLength","./dropdown","./dropdown/search","./dropdown/hidePlaceholder","./dropdown/infiniteScroll","./dropdown/attachBody","./dropdown/minimumResultsForSearch","./dropdown/selectOnClose","./dropdown/closeOnSelect","./i18n/en"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C){function D(){this.reset()}D.prototype.apply=function(l){if(l=a.extend(!0,{},this.defaults,l),null==l.dataAdapter){if(null!=l.ajax?l.dataAdapter=o:null!=l.data?l.dataAdapter=n:l.dataAdapter=m,l.minimumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),(null!=l.tokenSeparators||null!=l.tokenizer)&&(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}if(0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),null!=l.dropdownCssClass||null!=l.dropdownCss||null!=l.adaptDropdownCssClass){var F=b(l.amdBase+"compat/dropdownCss");l.dropdownAdapter=j.Decorate(l.dropdownAdapter,F)}l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter){if(l.multiple?l.selectionAdapter=e:l.selectionAdapter=d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),null!=l.containerCssClass||null!=l.containerCss||null!=l.adaptContainerCssClass){var G=b(l.amdBase+"compat/containerCss");l.selectionAdapter=j.Decorate(l.selectionAdapter,G)}l.selectionAdapter=j.Decorate(l.selectionAdapter,i)}if("string"==typeof l.language)if(l.language.indexOf("-")>0){var H=l.language.split("-"),I=H[0];l.language=[l.language,I]}else l.language=[l.language];if(a.isArray(l.language)){var J=new k;l.language.push("en");for(var K=l.language,L=0;L<K.length;L++){var M=K[L],N={};try{N=k.loadPath(M)}catch(O){try{M=this.defaults.amdLanguageBase+M,N=k.loadPath(M)}catch(P){l.debug&&window.console&&console.warn&&console.warn('Select2: The language file for "'+M+'" could not be automatically loaded. A fallback will be used instead.');continue}}J.extend(N)}l.translations=J}else{var Q=k.loadPath(this.defaults.amdLanguageBase+"en"),R=new k(l.language);R.extend(Q),l.translations=R}return l},D.prototype.reset=function(){function b(a){function b(a){return l[a]||a}return a.replace(/[^\u0000-\u007E]/g,b)}function c(d,e){if(""===a.trim(d.term))return e;if(e.children&&e.children.length>0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){var h=e.children[g],i=c(d,h);null==i&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var j=b(e.text).toUpperCase(),k=b(d.term).toUpperCase();return j.indexOf(k)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(this.defaults,f)};var E=new D;return E}),b.define("select2/options",["require","jquery","./defaults","./utils"],function(a,b,c,d){function e(b,e){if(this.options=b,null!=e&&this.fromElement(e),this.options=c.apply(this.options),e&&e.is("input")){var f=a(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=d.Decorate(this.options.dataAdapter,f)}}return e.prototype.fromElement=function(a){var c=["select2"];null==this.options.multiple&&(this.options.multiple=a.prop("multiple")),null==this.options.disabled&&(this.options.disabled=a.prop("disabled")),null==this.options.language&&(a.prop("lang")?this.options.language=a.prop("lang").toLowerCase():a.closest("[lang]").prop("lang")&&(this.options.language=a.closest("[lang]").prop("lang"))),null==this.options.dir&&(a.prop("dir")?this.options.dir=a.prop("dir"):a.closest("[dir]").prop("dir")?this.options.dir=a.closest("[dir]").prop("dir"):this.options.dir="ltr"),a.prop("disabled",this.options.disabled),a.prop("multiple",this.options.multiple),a.data("select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),a.data("data",a.data("select2Tags")),a.data("tags",!0)),a.data("ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),a.attr("ajax--url",a.data("ajaxUrl")),a.data("ajax--url",a.data("ajaxUrl")));var e={};e=b.fn.jquery&&"1."==b.fn.jquery.substr(0,2)&&a[0].dataset?b.extend(!0,{},a[0].dataset,a.data()):a.data();var f=b.extend(!0,{},e);f=d._convertData(f);for(var g in f)b.inArray(g,c)>-1||(b.isPlainObject(this.options[g])?b.extend(this.options[g],f[g]):this.options[g]=f[g]);return this},e.prototype.get=function(a){return this.options[a]},e.prototype.set=function(a,b){this.options[a]=b},e}),b.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,c){null!=a.data("select2")&&a.data("select2").destroy(),this.$element=a,this.id=this._generateId(a),c=c||{},this.options=new b(c,a),e.__super__.constructor.call(this);var d=a.attr("tabindex")||0;a.data("old-tabindex",d),a.attr("tabindex","-1");var f=this.options.get("dataAdapter");this.dataAdapter=new f(a,this.options);var g=this.render();this._placeContainer(g);var h=this.options.get("selectionAdapter");this.selection=new h(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,g);var i=this.options.get("dropdownAdapter");this.dropdown=new i(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,g);var j=this.options.get("resultsAdapter");this.results=new j(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var k=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){k.trigger("selection:update",{data:a})}),a.addClass("select2-hidden-accessible"),a.attr("aria-hidden","true"),this._syncAttributes(),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b=b.replace(/(:|\.|\[|\]|,)/g,""),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return 0>=e?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;i>h;h+=1){var j=g[h].replace(/\s/g,""),k=j.match(c);if(null!==k&&k.length>=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this.$element.on("focus.select2",function(a){b.trigger("focus",a)}),this._syncA=c.bind(this._syncAttributes,this),this._syncS=c.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._syncA),a.each(c,b._syncS)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",b._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",b._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",b._syncS,!1))},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle","focus"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("focus",function(a){b.focus(a)}),this.selection.on("*",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var a=this;this.on("open",function(){a.$container.addClass("select2-container--open")}),this.on("close",function(){a.$container.removeClass("select2-container--open")}),this.on("enable",function(){a.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){a.$container.addClass("select2-container--disabled")}),this.on("blur",function(){a.$container.removeClass("select2-container--focus")}),this.on("query",function(b){a.isOpen()||a.trigger("open",{}),this.dataAdapter.query(b,function(c){a.trigger("results:all",{data:c,query:b})})}),this.on("query:append",function(b){this.dataAdapter.query(b,function(c){a.trigger("results:append",{data:c,query:b})})}),this.on("keypress",function(b){var c=b.which;a.isOpen()?c===d.ESC||c===d.TAB||c===d.UP&&b.altKey?(a.close(),b.preventDefault()):c===d.ENTER?(a.trigger("results:select",{}),b.preventDefault()):c===d.SPACE&&b.ctrlKey?(a.trigger("results:toggle",{}),b.preventDefault()):c===d.UP?(a.trigger("results:previous",{}),b.preventDefault()):c===d.DOWN&&(a.trigger("results:next",{}),b.preventDefault()):(c===d.ENTER||c===d.SPACE||c===d.DOWN&&b.altKey)&&(a.open(),b.preventDefault())})},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},e.prototype._syncSubtree=function(a,b){var c=!1,d=this;if(!a||!a.target||"OPTION"===a.target.nodeName||"OPTGROUP"===a.target.nodeName){if(b)if(b.addedNodes&&b.addedNodes.length>0)for(var e=0;e<b.addedNodes.length;e++){var f=b.addedNodes[e];f.selected&&(c=!0)}else b.removedNodes&&b.removedNodes.length>0&&(c=!0);else c=!0;c&&this.dataAdapter.current(function(a){d.trigger("selection:update",{data:a})})}},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting"};if(void 0===b&&(b={}),a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||this.trigger("query",{})},e.prototype.close=function(){this.isOpen()&&this.trigger("close",{})},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},e.prototype.focus=function(a){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),(null==a||0===a.length)&&(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",this.$element.data("old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null;
8630},e.prototype.render=function(){var b=a('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),b.data("element",this.$element),b},e}),b.define("jquery-mousewheel",["jquery"],function(a){return a}),b.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults"],function(a,b,c,d){if(null==a.fn.select2){var e=["open","close","destroy"];a.fn.select2=function(b){if(b=b||{},"object"==typeof b)return this.each(function(){var d=a.extend(!0,{},b);new c(a(this),d)}),this;if("string"==typeof b){var d,f=Array.prototype.slice.call(arguments,1);return this.each(function(){var c=a(this).data("select2");null==c&&window.console&&console.error&&console.error("The select2('"+b+"') method was called on an element that is not using Select2."),d=c[b].apply(c,f)}),a.inArray(b,e)>-1?this:d}throw new Error("Invalid arguments for Select2: "+b)}}return null==a.fn.select2.defaults&&(a.fn.select2.defaults=d),c}),{define:b.define,require:b.require}}(),c=b.require("jquery.select2");return a.fn.select2.amd=b,c});
vendor: 15,022 bytes, lines 8630-8634
8630;
8631/*! jQuery Validation Plugin - v1.21.0 - 7/17/2024
8632 * https://jqueryvalidation.org/
8633 * Copyright (c) 2024 Jörn Zaefferer; Licensed MIT */
8634!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){a.extend(a.fn,{validate:function(b){if(!this.length)return void(b&&b.debug&&window.console&&console.warn("Nothing selected, can't validate, returning nothing."));var c=a.data(this[0],"validator");return c?c:(this.attr("novalidate","novalidate"),c=new a.validator(b,this[0]),a.data(this[0],"validator",c),c.settings.onsubmit&&(this.on("click.validate",":submit",function(b){c.submitButton=b.currentTarget,a(this).hasClass("cancel")&&(c.cancelSubmit=!0),void 0!==a(this).attr("formnovalidate")&&(c.cancelSubmit=!0)}),this.on("submit.validate",function(b){function d(){var d,e;return c.submitButton&&(c.settings.submitHandler||c.formSubmitted)&&(d=a("<input type='hidden'/>").attr("name",c.submitButton.name).val(a(c.submitButton).val()).appendTo(c.currentForm)),!(c.settings.submitHandler&&!c.settings.debug)||(e=c.settings.submitHandler.call(c,c.currentForm,b),d&&d.remove(),void 0!==e&&e)}return c.settings.debug&&b.preventDefault(),c.cancelSubmit?(c.cancelSubmit=!1,d()):c.form()?c.pendingRequest?(c.formSubmitted=!0,!1):d():(c.focusInvalid(),!1)})),c)},valid:function(){var b,c,d;return a(this[0]).is("form")?b=this.validate().form():(d=[],b=!0,c=a(this[0].form).validate(),this.each(function(){b=c.element(this)&&b,b||(d=d.concat(c.errorList))}),c.errorList=d),b},rules:function(b,c){var d,e,f,g,h,i,j=this[0],k="undefined"!=typeof this.attr("contenteditable")&&"false"!==this.attr("contenteditable");if(null!=j&&(!j.form&&k&&(j.form=this.closest("form")[0],j.name=this.attr("name")),null!=j.form)){if(b)switch(d=a.data(j.form,"validator").settings,e=d.rules,f=a.validator.staticRules(j),b){case"add":a.extend(f,a.validator.normalizeRule(c)),delete f.messages,e[j.name]=f,c.messages&&(d.messages[j.name]=a.extend(d.messages[j.name],c.messages));break;case"remove":return c?(i={},a.each(c.split(/\s/),function(a,b){i[b]=f[b],delete f[b]}),i):(delete e[j.name],f)}return g=a.validator.normalizeRules(a.extend({},a.validator.classRules(j),a.validator.attributeRules(j),a.validator.dataRules(j),a.validator.staticRules(j)),j),g.required&&(h=g.required,delete g.required,g=a.extend({required:h},g)),g.remote&&(h=g.remote,delete g.remote,g=a.extend(g,{remote:h})),g}}});var b=function(a){return a.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")};a.extend(a.expr.pseudos||a.expr[":"],{blank:function(c){return!b(""+a(c).val())},filled:function(c){var d=a(c).val();return null!==d&&!!b(""+d)},unchecked:function(b){return!a(b).prop("checked")}}),a.validator=function(b,c){this.settings=a.extend(!0,{},a.validator.defaults,b),this.currentForm=c,this.init()},a.validator.format=function(b,c){return 1===arguments.length?function(){var c=a.makeArray(arguments);return c.unshift(b),a.validator.format.apply(this,c)}:void 0===c?b:(arguments.length>2&&c.constructor!==Array&&(c=a.makeArray(arguments).slice(1)),c.constructor!==Array&&(c=[c]),a.each(c,function(a,c){b=b.replace(new RegExp("\\{"+a+"\\}","g"),function(){return c})}),b)},a.extend(a.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",pendingClass:"pending",validClass:"valid",errorElement:"label",focusCleanup:!1,focusInvalid:!0,errorContainer:a([]),errorLabelContainer:a([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,customElements:[],onfocusin:function(a){this.lastActive=a,this.settings.focusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass),this.hideThese(this.errorsFor(a)))},onfocusout:function(a){this.checkable(a)||!(a.name in this.submitted)&&this.optional(a)||this.element(a)},onkeyup:function(b,c){var d=[16,17,18,20,35,36,37,38,39,40,45,144,225];9===c.which&&""===this.elementValue(b)||a.inArray(c.keyCode,d)!==-1||(b.name in this.submitted||b.name in this.invalid)&&this.element(b)},onclick:function(a){a.name in this.submitted?this.element(a):a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).addClass(c).removeClass(d):a(b).addClass(c).removeClass(d)},unhighlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).removeClass(c).addClass(d):a(b).removeClass(c).addClass(d)}},setDefaults:function(b){a.extend(a.validator.defaults,b)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",equalTo:"Please enter the same value again.",maxlength:a.validator.format("Please enter no more than {0} characters."),minlength:a.validator.format("Please enter at least {0} characters."),rangelength:a.validator.format("Please enter a value between {0} and {1} characters long."),range:a.validator.format("Please enter a value between {0} and {1}."),max:a.validator.format("Please enter a value less than or equal to {0}."),min:a.validator.format("Please enter a value greater than or equal to {0}."),step:a.validator.format("Please enter a multiple of {0}.")},autoCreateRanges:!1,prototype:{init:function(){function b(b){var c="undefined"!=typeof a(this).attr("contenteditable")&&"false"!==a(this).attr("contenteditable");if(!this.form&&c&&(this.form=a(this).closest("form")[0],this.name=a(this).attr("name")),d===this.form){var e=a.data(this.form,"validator"),f="on"+b.type.replace(/^validate/,""),g=e.settings;g[f]&&!a(this).is(g.ignore)&&g[f].call(e,this,b)}}this.labelContainer=a(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||a(this.currentForm),this.containers=a(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var c,d=this.currentForm,e=this.groups={};a.each(this.settings.groups,function(b,c){"string"==typeof c&&(c=c.split(/\s/)),a.each(c,function(a,c){e[c]=b})}),c=this.settings.rules,a.each(c,function(b,d){c[b]=a.validator.normalizeRule(d)});var f=[":text","[type='password']","[type='file']","select","textarea","[type='number']","[type='search']","[type='tel']","[type='url']","[type='email']","[type='datetime']","[type='date']","[type='month']","[type='week']","[type='time']","[type='datetime-local']","[type='range']","[type='color']","[type='radio']","[type='checkbox']","[contenteditable]","[type='button']"],g=["select","option","[type='radio']","[type='checkbox']"];a(this.currentForm).on("focusin.validate focusout.validate keyup.validate",f.concat(this.settings.customElements).join(", "),b).on("click.validate",g.concat(this.settings.customElements).join(", "),b),this.settings.invalidHandler&&a(this.currentForm).on("invalid-form.validate",this.settings.invalidHandler)},form:function(){return this.checkForm(),a.extend(this.submitted,this.errorMap),this.invalid=a.extend({},this.errorMap),this.valid()||a(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(b){var c,d,e=this.clean(b),f=this.validationTargetFor(e),g=this,h=!0;return void 0===f?delete this.invalid[e.name]:(this.prepareElement(f),this.currentElements=a(f),d=this.groups[f.name],d&&a.each(this.groups,function(a,b){b===d&&a!==f.name&&(e=g.validationTargetFor(g.clean(g.findByName(a))),e&&e.name in g.invalid&&(g.currentElements.push(e),h=g.check(e)&&h))}),c=this.check(f)!==!1,h=h&&c,c?this.invalid[f.name]=!1:this.invalid[f.name]=!0,this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),a(b).attr("aria-invalid",!c)),h},showErrors:function(b){if(b){var c=this;a.extend(this.errorMap,b),this.errorList=a.map(this.errorMap,function(a,b){return{message:a,element:c.findByName(b)[0]}}),this.successList=a.grep(this.successList,function(a){return!(a.name in b)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){a.fn.resetForm&&a(this.currentForm).resetForm(),this.invalid={},this.submitted={},this.prepareForm(),this.hideErrors();var b=this.elements().removeData("previousValue").removeAttr("aria-invalid");this.resetElements(b)},resetElements:function(a){var b;if(this.settings.unhighlight)for(b=0;a[b];b++)this.settings.unhighlight.call(this,a[b],this.settings.errorClass,""),this.findByName(a[b].name).removeClass(this.settings.validClass);else a.removeClass(this.settings.errorClass).removeClass(this.settings.validClass)},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(a){var b,c=0;for(b in a)void 0!==a[b]&&null!==a[b]&&a[b]!==!1&&c++;return c},hideErrors:function(){this.hideThese(this.toHide)},hideThese:function(a){a.not(this.containers).text(""),this.addWrapper(a).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{a(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").trigger("focus").trigger("focusin")}catch(b){}},findLastActive:function(){var b=this.lastActive;return b&&1===a.grep(this.errorList,function(a){return a.element.name===b.name}).length&&b},elements:function(){var b=this,c={},d=["input","select","textarea","[contenteditable]"];return a(this.currentForm).find(d.concat(this.settings.customElements).join(", ")).not(":submit, :reset, :image, :disabled").not(this.settings.ignore).filter(function(){var d=this.name||a(this).attr("name"),e="undefined"!=typeof a(this).attr("contenteditable")&&"false"!==a(this).attr("contenteditable");return!d&&b.settings.debug&&window.console&&console.error("%o has no name assigned",this),e&&(this.form=a(this).closest("form")[0],this.name=d),this.form===b.currentForm&&(!(d in c||!b.objectLength(a(this).rules()))&&(c[d]=!0,!0))})},clean:function(b){return a(b)[0]},errors:function(){var b=this.settings.errorClass.split(" ").join(".");return a(this.settings.errorElement+"."+b,this.errorContext)},resetInternals:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=a([]),this.toHide=a([])},reset:function(){this.resetInternals(),this.currentElements=a([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(a){this.reset(),this.toHide=this.errorsFor(a)},elementValue:function(b){var c,d,e=a(b),f=b.type,g="undefined"!=typeof e.attr("contenteditable")&&"false"!==e.attr("contenteditable");return"radio"===f||"checkbox"===f?this.findByName(b.name).filter(":checked").val():"number"===f&&"undefined"!=typeof b.validity?b.validity.badInput?"NaN":e.val():(c=g?e.text():e.val(),"file"===f?"C:\\fakepath\\"===c.substr(0,12)?c.substr(12):(d=c.lastIndexOf("/"),d>=0?c.substr(d+1):(d=c.lastIndexOf("\\"),d>=0?c.substr(d+1):c)):"string"==typeof c?c.replace(/\r/g,""):c)},check:function(b){b=this.validationTargetFor(this.clean(b));var c,d,e,f,g=a(b).rules(),h=a.map(g,function(a,b){return b}).length,i=!1,j=this.elementValue(b);this.abortRequest(b),"function"==typeof g.normalizer?f=g.normalizer:"function"==typeof this.settings.normalizer&&(f=this.settings.normalizer),f&&(j=f.call(b,j),delete g.normalizer);for(d in g){e={method:d,parameters:g[d]};try{if(c=a.validator.methods[d].call(this,j,b,e.parameters),"dependency-mismatch"===c&&1===h){i=!0;continue}if(i=!1,"pending"===c)return void(this.toHide=this.toHide.not(this.errorsFor(b)));if(!c)return this.formatAndAdd(b,e),!1}catch(k){throw this.settings.debug&&window.console&&console.log("Exception occurred when checking element "+b.id+", check the '"+e.method+"' method.",k),k instanceof TypeError&&(k.message+=".  Exception occurred when checking element "+b.id+", check the '"+e.method+"' method."),k}}if(!i)return this.objectLength(g)&&this.successList.push(b),!0},customDataMessage:function(b,c){return a(b).data("msg"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase())||a(b).data("msg")},customMessage:function(a,b){var c=this.settings.messages[a];return c&&(c.constructor===String?c:c[b])},findDefined:function(){for(var a=0;a<arguments.length;a++)if(void 0!==arguments[a])return arguments[a]},defaultMessage:function(b,c){"string"==typeof c&&(c={method:c});var d=this.findDefined(this.customMessage(b.name,c.method),this.customDataMessage(b,c.method),!this.settings.ignoreTitle&&b.title||void 0,a.validator.messages[c.method],"<strong>Warning: No message defined for "+b.name+"</strong>"),e=/\$?\{(\d+)\}/g;return"function"==typeof d?d=d.call(this,c.parameters,b):e.test(d)&&(d=a.validator.format(d.replace(e,"{$1}"),c.parameters)),d},formatAndAdd:function(a,b){var c=this.defaultMessage(a,b);this.errorList.push({message:c,element:a,method:b.method}),this.errorMap[a.name]=c,this.submitted[a.name]=c},addWrapper:function(a){return this.settings.wrapper&&(a=a.add(a.parent(this.settings.wrapper))),a},defaultShowErrors:function(){var a,b,c;for(a=0;this.errorList[a];a++)c=this.errorList[a],this.settings.highlight&&this.settings.highlight.call(this,c.element,this.settings.errorClass,this.settings.validClass),this.showLabel(c.element,c.message);if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);if(this.settings.unhighlight)for(a=0,b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return a(this.errorList).map(function(){return this.element})},showLabel:function(b,c){var d,e,f,g,h=this.errorsFor(b),i=this.idOrName(b),j=a(b).attr("aria-describedby");h.length?(h.removeClass(this.settings.validClass).addClass(this.settings.errorClass),this.settings&&this.settings.escapeHtml?h.text(c||""):h.html(c||"")):(h=a("<"+this.settings.errorElement+">").attr("id",i+"-error").addClass(this.settings.errorClass),this.settings&&this.settings.escapeHtml?h.text(c||""):h.html(c||""),d=h,this.settings.wrapper&&(d=h.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.length?this.labelContainer.append(d):this.settings.errorPlacement?this.settings.errorPlacement.call(this,d,a(b)):d.insertAfter(b),h.is("label")?h.attr("for",i):0===h.parents("label[for='"+this.escapeCssMeta(i)+"']").length&&(f=h.attr("id"),j?j.match(new RegExp("\\b"+this.escapeCssMeta(f)+"\\b"))||(j+=" "+f):j=f,a(b).attr("aria-describedby",j),e=this.groups[b.n
8634ame],e&&(g=this,a.each(g.groups,function(b,c){c===e&&a("[name='"+g.escapeCssMeta(b)+"']",g.currentForm).attr("aria-describedby",h.attr("id"))})))),!c&&this.settings.success&&(h.text(""),"string"==typeof this.settings.success?h.addClass(this.settings.success):this.settings.success(h,b)),this.toShow=this.toShow.add(h)},errorsFor:function(b){var c=this.escapeCssMeta(this.idOrName(b)),d=a(b).attr("aria-describedby"),e="label[for='"+c+"'], label[for='"+c+"'] *";return d&&(e=e+", #"+this.escapeCssMeta(d).replace(/\s+/g,", #")),this.errors().filter(e)},escapeCssMeta:function(a){return void 0===a?"":a.replace(/([\\!"#$%&'()*+,./:;<=>?@\[\]^`{|}~])/g,"\\$1")},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(b){return this.checkable(b)&&(b=this.findByName(b.name)),a(b).not(this.settings.ignore)[0]},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(b){return a(this.currentForm).find("[name='"+this.escapeCssMeta(b)+"']")},getLength:function(b,c){switch(c.nodeName.toLowerCase()){case"select":return a("option:selected",c).length;case"input":if(this.checkable(c))return this.findByName(c.name).filter(":checked").length}return b.length},depend:function(a,b){return!this.dependTypes[typeof a]||this.dependTypes[typeof a](a,b)},dependTypes:{"boolean":function(a){return a},string:function(b,c){return!!a(b,c.form).length},"function":function(a,b){return a(b)}},optional:function(b){var c=this.elementValue(b);
vendor: 8,925 bytes, lines 8634-8639
8634return!a.validator.methods.required.call(this,c,b)&&"dependency-mismatch"},elementAjaxPort:function(a){return"validate"+a.name},startRequest:function(b){this.pending[b.name]||(this.pendingRequest++,a(b).addClass(this.settings.pendingClass),this.pending[b.name]=!0)},stopRequest:function(b,c){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[b.name],a(b).removeClass(this.settings.pendingClass),c&&0===this.pendingRequest&&this.formSubmitted&&this.form()&&0===this.pendingRequest?(a(this.currentForm).trigger("submit"),this.submitButton&&a("input:hidden[name='"+this.submitButton.name+"']",this.currentForm).remove(),this.formSubmitted=!1):!c&&0===this.pendingRequest&&this.formSubmitted&&(a(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},abortRequest:function(b){var c;this.pending[b.name]&&(c=this.elementAjaxPort(b),a.ajaxAbort(c),this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[b.name],a(b).removeClass(this.settings.pendingClass))},previousValue:function(b,c){return c="string"==typeof c&&c||"remote",a.data(b,"previousValue")||a.data(b,"previousValue",{old:null,valid:!0,message:this.defaultMessage(b,{method:c})})},destroy:function(){this.resetForm(),a(this.currentForm).off(".validate").removeData("validator").find(".validate-equalTo-blur").off(".validate-equalTo").removeClass("validate-equalTo-blur").find(".validate-lessThan-blur").off(".validate-lessThan").removeClass("validate-lessThan-blur").find(".validate-lessThanEqual-blur").off(".validate-lessThanEqual").removeClass("validate-lessThanEqual-blur").find(".validate-greaterThanEqual-blur").off(".validate-greaterThanEqual").removeClass("validate-greaterThanEqual-blur").find(".validate-greaterThan-blur").off(".validate-greaterThan").removeClass("validate-greaterThan-blur")}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(b,c){b.constructor===String?this.classRuleSettings[b]=c:a.extend(this.classRuleSettings,b)},classRules:function(b){var c={},d=a(b).attr("class");return d&&a.each(d.split(" "),function(){this in a.validator.classRuleSettings&&a.extend(c,a.validator.classRuleSettings[this])}),c},normalizeAttributeRule:function(a,b,c,d){/min|max|step/.test(c)&&(null===b||/number|range|text/.test(b))&&(d=Number(d),isNaN(d)&&(d=void 0)),d||0===d?a[c]=d:b===c&&"range"!==b&&(a["date"===b?"dateISO":c]=!0)},attributeRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)"required"===c?(d=b.getAttribute(c),""===d&&(d=!0),d=!!d):d=f.attr(c),this.normalizeAttributeRule(e,g,c,d);return e.maxlength&&/-1|2147483647|524288/.test(e.maxlength)&&delete e.maxlength,e},dataRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)d=f.data("rule"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase()),""===d&&(d=!0),this.normalizeAttributeRule(e,g,c,d);return e},staticRules:function(b){var c={},d=a.data(b.form,"validator");return d.settings.rules&&(c=a.validator.normalizeRule(d.settings.rules[b.name])||{}),c},normalizeRules:function(b,c){return a.each(b,function(d,e){if(e===!1)return void delete b[d];if(e.param||e.depends){var f=!0;switch(typeof e.depends){case"string":f=!!a(e.depends,c.form).length;break;case"function":f=e.depends.call(c,c)}f?b[d]=void 0===e.param||e.param:(a.data(c.form,"validator").resetElements(a(c)),delete b[d])}}),a.each(b,function(a,d){b[a]="function"==typeof d&&"normalizer"!==a?d(c):d}),a.each(["minlength","maxlength"],function(){b[this]&&(b[this]=Number(b[this]))}),a.each(["rangelength","range"],function(){var a;b[this]&&(Array.isArray(b[this])?b[this]=[Number(b[this][0]),Number(b[this][1])]:"string"==typeof b[this]&&(a=b[this].replace(/[\[\]]/g,"").split(/[\s,]+/),b[this]=[Number(a[0]),Number(a[1])]))}),a.validator.autoCreateRanges&&(null!=b.min&&null!=b.max&&(b.range=[b.min,b.max],delete b.min,delete b.max),null!=b.minlength&&null!=b.maxlength&&(b.rangelength=[b.minlength,b.maxlength],delete b.minlength,delete b.maxlength)),b},normalizeRule:function(b){if("string"==typeof b){var c={};a.each(b.split(/\s/),function(){c[this]=!0}),b=c}return b},addMethod:function(b,c,d){a.validator.methods[b]=c,a.validator.messages[b]=void 0!==d?d:a.validator.messages[b],c.length<3&&a.validator.addClassRules(b,a.validator.normalizeRule(b))},methods:{required:function(b,c,d){if(!this.depend(d,c))return"dependency-mismatch";if("select"===c.nodeName.toLowerCase()){var e=a(c).val();return e&&e.length>0}return this.checkable(c)?this.getLength(b,c)>0:void 0!==b&&null!==b&&b.length>0},email:function(a,b){return this.optional(b)||/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(a)},url:function(a,b){return this.optional(b)||/^(?:(?:(?:https?|ftp):)?\/\/)(?:(?:[^\]\[?\/<~#`!@$^&*()+=}|:";',>{ ]|%[0-9A-Fa-f]{2})+(?::(?:[^\]\[?\/<~#`!@$^&*()+=}|:";',>{ ]|%[0-9A-Fa-f]{2})*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/i.test(a)},date:function(){var a=!1;return function(b,c){return a||(a=!0,this.settings.debug&&window.console&&console.warn("The `date` method is deprecated and will be removed in version '2.0.0'.\nPlease don't use it, since it relies on the Date constructor, which\nbehaves very differently across browsers and locales. Use `dateISO`\ninstead or one of the locale specific methods in `localizations/`\nand `additional-methods.js`.")),this.optional(c)||!/Invalid|NaN/.test(new Date(b).toString())}}(),dateISO:function(a,b){return this.optional(b)||/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(a)},number:function(a,b){return this.optional(b)||/^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:-?\.\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\d+$/.test(a)},minlength:function(a,b,c){var d=Array.isArray(a)?a.length:this.getLength(a,b);return this.optional(b)||d>=c},maxlength:function(a,b,c){var d=Array.isArray(a)?a.length:this.getLength(a,b);return this.optional(b)||d<=c},rangelength:function(a,b,c){var d=Array.isArray(a)?a.length:this.getLength(a,b);return this.optional(b)||d>=c[0]&&d<=c[1]},min:function(a,b,c){return this.optional(b)||a>=c},max:function(a,b,c){return this.optional(b)||a<=c},range:function(a,b,c){return this.optional(b)||a>=c[0]&&a<=c[1]},step:function(b,c,d){var e,f=a(c).attr("type"),g="Step attribute on input type "+f+" is not supported.",h=["text","number","range"],i=new RegExp("\\b"+f+"\\b"),j=f&&!i.test(h.join()),k=function(a){var b=(""+a).match(/(?:\.(\d+))?$/);return b&&b[1]?b[1].length:0},l=function(a){return Math.round(a*Math.pow(10,e))},m=!0;if(j)throw new Error(g);return e=k(d),(k(b)>e||l(b)%l(d)!==0)&&(m=!1),this.optional(c)||m},equalTo:function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.not(".validate-equalTo-blur").length&&e.addClass("validate-equalTo-blur").on("blur.validate-equalTo",function(){a(c).valid()}),b===e.val()},remote:function(b,c,d,e){if(this.optional(c))return"dependency-mismatch";e="string"==typeof e&&e||"remote";var f,g,h,i=this.previousValue(c,e);return this.settings.messages[c.name]||(this.settings.messages[c.name]={}),i.originalMessage=i.originalMessage||this.settings.messages[c.name][e],this.settings.messages[c.name][e]=i.message,d="string"==typeof d&&{url:d}||d,h=a.param(a.extend({data:b},d.data)),null!==i.valid&&i.old===h?i.valid:(i.old=h,i.valid=null,f=this,this.startRequest(c),g={},g[c.name]=b,a.ajax(a.extend(!0,{mode:"abort",port:this.elementAjaxPort(c),dataType:"json",data:g,context:f.currentForm,success:function(a){var d,g,h,j=a===!0||"true"===a;f.settings.messages[c.name][e]=i.originalMessage,j?(h=f.formSubmitted,f.toHide=f.errorsFor(c),f.formSubmitted=h,f.successList.push(c),f.invalid[c.name]=!1,f.showErrors()):(d={},g=a||f.defaultMessage(c,{method:e,parameters:b}),d[c.name]=i.message=g,f.invalid[c.name]=!0,f.showErrors(d)),i.valid=j,f.stopRequest(c,j)}},d)),"pending")}}});var c,d={};return a.ajaxPrefilter?a.ajaxPrefilter(function(b,c,e){var f=b.port;"abort"===b.mode&&(a.ajaxAbort(f),d[f]=e)}):(c=a.ajax,a.ajax=function(b){var e=("mode"in b?b:a.ajaxSettings).mode,f=("port"in b?b:a.ajaxSettings).port;return"abort"===e?(a.ajaxAbort(f),d[f]=c.apply(this,arguments),d[f]):c.apply(this,arguments)}),a.ajaxAbort=function(a){d[a]&&(d[a].abort(),delete d[a])},a});;
8635(function ($) {
8636
8637  $(document).ready(function () {
8638    $('.tarteaucitron-open-panel').click(function (event) {
8639        event.preventDefault();
8640      tarteaucitron.userInterface.openPanel();
8641    });
8642      if (!$.cookie('newsletter_inscription')) {
8643        $.cookie('newsletter_inscription', true);
8644        $(".block-ee-popin").addClass("showen")
8645      }
8646
8647     if (!$.cookie('popin_image')) {
8648       $.cookie('popin_image', true);
8649       $(".block-ee-img").addClass("showen")
8650     }
8651
8652      $("#ee-popin-form").validate({
8653        rules: {
8654          email: {
8655            required: true,
8656            email: true
8657          }
8658        },
8659        messages : {
8660          email: {
8661            required: "Email ne doit pas être vide.",
8662            email: "Email n'est pas une adresse e-mail valide."
8663          }
8664        }
8665      });
8666
8667       $(".ee-popin-close").click(function(e) {
8668         e.preventDefault();
8669         $(".block-ee-popin").removeClass("showen")
8670       })
8671
8672      $(".ee-popin-close").click(function(e) {
8673        e.preventDefault();
8674        $(".block-ee-img").removeClass("showen")
8675      });
8676
8677      $(".close-icon").click(function(e) {
8678        e.preventDefault();
8679        $("#block-ee-banner-ee-banner-block").css("display", "none");
8680    });
8681
8682      //cookies compliance
8683      $('.savoir-plus').click(function(){
8684          $('.agree-button').click();
8685      });
8686      $('.close-cookies').click(function(){
8687          $('.agree-button').click();
8688      });
8689
8690      if ($('body').hasClass('section-pass-piscines')) {
8691          $(".messages.error").insertAfter(".messages.swarning");
8692      }
8693
8694      $('#edit-field-ee-ville-tid').select2();
8695      $('#edit-field-secteur-d-activit-tid').select2();
8696
8697      $('.accordio').on('click', function (e) {
8698          $(this).toggleClass('accor');
8699          $(this).find('.collapsible').toggle();
8700      });
8701
8702      //masquer lien
8703      $(".diff tbody tr:nth-child(2)").css('display', 'none');
8704      $(".diff tbody tr:nth-child(3)").css('display', 'none');
8705
8706      // Egalisateur de colonnes déchets
8707      var tallest = 0;
8708      $('.info-pratique-content').each(function () {
8709          var thisHeight = $(this).height();
8710          if (thisHeight > tallest) {
8711              tallest = thisHeight;
8712          }
8713      });
8714      $('.info-pratique-content').height(tallest);
8715
8716      // Impression .js
8717      $('a.print-page').click(function () {
8718          window.print();
8719          return false;
8720      });
8721
8722      // Map de la home
8723      $('.block_map li').mouseover(function () {
8724          var town = $(this).attr("class");
8725          $("." + town).addClass('hover');
8726      });
8727      $('.block_map li').mouseout(function () {
8728          $("li").removeClass('hover');
8729      });
8730
8731      // Add rel nofollow on comments link if hostname is external
8732      $(".comment a, #block-ee-derniers-commentaires a").filter(function () {
8733          return this.hostname && this.hostname !== location.hostname;
8734      }).attr('rel', 'nofollow');
8735
8736      //Retour en haut de page
8737      $(document).ready(function () {
8738
8739          // hide #back-top first
8740          $("#toppage").hide();
8741
8742          // fade in #back-top
8743          $(function () {
8744              $(window).scroll(function () {
8745                  if ($(this).scrollTop() > 800) {
8746                      $('#toppage').fadeIn();
8747                  } else {
8748                      $('#toppage').fadeOut();
8749                  }
8750              });
8751
8752              // scroll body to 0px on click
8753              $('#toppage a > span').click(function () {
8754                  $('body,html').animate({
8755                      scrollTop: 0
8756                  }, 800);
8757                  return false;
8758              });
8759          });
8760
8761      });
8762    //Footer: regroupement de li en plusieurs ul avec 5 li par ligne
8763   const $originalUl = $('.region-footer-second ul.menu').first();
8764    if ($originalUl.length) {
8765      const $parent = $originalUl.parent();
8766      const $items = $originalUl.find('li');
8767      const groupSize = 5;
8768      const baseClass = $originalUl.attr('class');
8769
8770     $originalUl.remove();
8771
8772     for (let i = 0; i < $items.length; i += groupSize) {
8773       const $newUl = $('<ul></ul>')
8774         .addClass(baseClass)
8775         .addClass(i === 0 ? 'first' : 'second'); // Add 'first' to the first <ul>, 'second' to others
8776       $items.slice(i, i + groupSize).appendTo($newUl);
8777       $parent.append($newUl);
8778     }
8779    }
8780  });
8781
8782  Drupal.behaviors.popin_form = {
8783    attach: function () {
8784      $('#ee-popin-form').ajaxComplete(function(event, xhr, settings) {
8785        if (xhr.status === 200) {
8786          $('#block-ee-popin-popin-form .block-title').text(Drupal.t('MERCI POUR VOTRE INSCRIPTION À LA LETTRE D\'EST ENSEMBLE')).addClass( "title" );
8787        }
8788      });
8789    }
8790  }
8791}(jQuery));
8792;

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