PageSourceSearch

https://www.marketing-boerse.de/jslib/iam.js

js marketing-boerse.de collected 2026-09-24 17:48:28 UTC 50,087 bytes, 1,230 lines download raw bytes

1/*DO NOT HOST THIS SCRIPT ON YOUR OWN SERVER*/
2var szmvars = "";
3(function(global) {
4  var iomnames = "iom".split(',') || ['iom'];
5  iomnames = iomnames.length > 4 ? iomnames.slice(0, 3) : iomnames;
6  for (var i = 0, iLen = iomnames.length; i < iLen; i +=1) {
7    global[iomnames[i]] = (function () {
8      var domainPrefix = "6446ba9f",
9          dummySite = "dummy",
10          baseUrlDE = "de.ioam.de/tx.io",
11          baseUrlLSO = "de.ioam.de/aid.io",
12          optinUrl = "de.ioam.de/optin.php?re=",
13          qdsUrl = "irqs.ioam.de",
14          deBaseUrl = ".ioam.de/tx.io",
15          deBaseUrlLSO = ".ioam.de/aid.io",
16          deOptinUrl = ".ioam.de/optin.php?re=",
17          deSubdomain = ["imarex"],
18          cntBaseUrl = ".iocnt.net/tx.io",
19          cntBaseUrlLSO = ".iocnt.net/aid.io",
20          cntOptinUrl = ".iocnt.net/optin.php?re=",
21          cntQdsUrl = "irqs.iocnt.net",
22          cntSubdomain = ["at"],
23          eventList = ["", "inst", "init","open", "clse", "play", "resm", "stop", "fowa", "bakw", "recd", "paus", "forg", "bakg", "dele", "refr", "kill", "view", "alve", "fini", "mute", "aforg", "abakg", "aclse", "sple", "scvl", "serr", "spyr", "smdr", "sfpl", "sfqt", "ssqt", "stqt", "soqt", "sofc", "scfc", "scqt", "splr", "spli", "sprs", "spre", "smrs", "smre", "sors", "sore", "sack", "sapl", "sapa", "snsp"],
24          LSOBlacklist = [],
25          checkEvents = 1,
26          tb = 0,
27          sv = 1,
28          lastEvent = "",
29          emptyCode = "Leercode_nichtzuordnungsfaehig",
30          autoEvents = {
31            onfocus:"aforg",
32            onblur:"abakg",
33            onclose:"aclse"
34          },
35          nt = 2,
36          cookiewhitelist = '[]'.match(/[A-Za-z0-9]+/g) || [],
37          cookieName = "ioam2018",
38          cookieMaxRuns = 0,
39          socioToken = "e2cc088542d6964469c9c3a4fec80995",
40          OptoutCookieName = "ioamout",
41          frequency = 60000,
42          hbiAdShort = 5000,
43          hbiAdMedium = 10000,
44          hbiAdLong = 30000,
45          hbiShort = 10000,
46          hbiMedium = 30000,
47          hbiLong = 60000,
48          hbiExtraLong = 300000,
49          heart,
50          maxSendBoxes = 10;
51
52      var IAMPageElement = null,
53          IAMQSElement = null,
54          qdsParameter = {},
55          qdsPopupBlockDuration = 86400000,
56          result = {},
57          mode,
58          eventsEnabled = 0,
59          surveyCalled = 0,
60          inited = 0;
61
62      var lsottl = 86400000,
63          lsottlmin = 180000,
64          ioplusurl = "me.ioam.de";
65
66      var fpCookieDomain = getFpcd(location.hostname),
67          consentVendors = ('[730, 785]'.match(/[0-9]+/g) || []).map(function(vendor) { return parseInt(vendor, 10) }),
68          consentMaxCheckIntervals = parseInt('10', 10) || 10,
69          consentCheckIntervalLength = parseInt('60', 10) || 60,
70          cmpUiShownHandler = false,
71          consentCookieExpire = new Date();
72      consentCookieExpire.setDate(consentCookieExpire.getDate() + 28);
73      var consentCookieOptions = {
74            name: 'iom_consent',
75            domain: fpCookieDomain.length > 0 ? fpCookieDomain.slice(7, fpCookieDomain.length - 1) : '',
76            expires: consentCookieExpire.toUTCString(),
77            path: '/'
78          };
79      function setConsent(ct) {
80        processConsent(ct, { vendors: consentVendors, cookie: consentCookieOptions, resultKey: 'ct' }, result);
81      }
82      function loadConsentFromCookie(options) {
83        var value = '';
84        var date;
85        var valueMatch = document.cookie.match(new RegExp('(^| )' + options.name + '=([^;]+)'));
86        var valueParts;
87        if (valueMatch) {
88          valueParts = valueMatch[2].split('&');
89          value = valueParts[0];
90          date = valueParts[1];
91        }
92        return {
93          value: value,
94          date: date
95        };
96      }
97      function writeConsentToCookie(consent, options) {
98        var now = Date.now();
99        var cookie = '';
100        Object.keys(options).forEach(function(key, index, keys) {
101          var option = options[key];
102          if (key === 'name') {
103            cookie += option + '=' + consent + '&' + now;
104            cookie += index < keys.length ? '; ' : ''
105          } else {
106            if (option) {
107              cookie += key + '=' + option;
108              cookie += index < keys.length ? '; ' : ''
109            }
110          }
111        })
112        document.cookie = cookie;
113      }
114      function checkForConsent(consentString, vendors, vendor, purpose,offset) {
115        var result = false;
116        if (typeof consentString === 'string' && consentString.length === 2 + vend
116ors.length * 4) {
117          var vendorIndex = vendors.indexOf(vendor);
118          if (vendorIndex > -1) {
119            var start = 2;
120            var end = start + ((vendorIndex + 1) * 4);
121            var consentVendorPart = parseInt(consentString.slice(start, end), 16);
122            var purposeBit = Math.pow(2, (purpose + offset));
123            result = (consentVendorPart & purposeBit) === purposeBit;
124          }
125        }
126        return result;
127      }
128      function processConsent(consentString, consentOptions, iamResultSet) {
129        function extractConsentFromCmp(tcData, vendors) {
130          function extractPurposes(vendor, hasLegitimateInterest, hasSpecialFeatureOptins) {
131            function filter(data) {
132              return function(value) {
133                return data[value] === true;
134              };
135            }
136            function mapper(offset) {
137              return function(value) {
138                var exp = (parseInt(value) + offset);
139                return Math.pow(2, exp);
140              };
141            }
142            function merge(purposes1, purposes2) {
143              return purposes1.concat(purposes2.filter(function(item) {
144                return purposes1.indexOf(item) < 0;
145              }));
146            }
147            var purposes;
148            var legitimateInterests = [];
149            purposes = Object
150              .keys(tcData.purpose.consents)
151              .filter(filter(tcData.purpose.consents))
152              .map(mapper(-1));
153            if (hasLegitimateInterest) {
154              legitimateInterests = Object
155                .keys(tcData.purpose.legitimateInterests)
156                .filter(filter(tcData.purpose.legitimateInterests))
157                .map(mapper(-1));
158            }
159            if (legitimateInterests.length > 0) {
160              purposes = merge(purposes, legitimateInterests);
161            }
162            if (hasSpecialFeatureOptins) {
163              purposes = purposes.concat(Object.keys(tcData.specialFeatureOptins)
164                .filter(filter(tcData.specialFeatureOptins))
165                .map(mapper(9)));
166            }
167            return purposes;
168          }
169          function createPurposesBitfield(purposes) {
170            var result = 0x0000;
171            for (var i = 0, iLen = purposes.length; i < iLen; i += 1) {
172              result |= purposes[i];
173            }
174            return result;
175          }
176          function convertToConsentString(consent) {
177            function padStart(str, size) {
178              while (str.length < size) {
179                str = '0' + str;
180              }
181              return str;
182            }
183            var result = '';
184            for (var i = 0, iLen = consent.length; i < iLen; i += 1) {
185              var hex = consent[i].toString(16);
186              var hexLen = 4;
187              if (i === 0) {
188                hexLen = 2;
189              }
190              hex = padStart(hex, hexLen);
191              result += hex;
192            }
193            return result;
194          }
195          var consent = [0x01];
196          for (var i = 0, iLen = vendors.length; i < iLen; i += 1) {
197            var vendor = vendors[i];
198            if (tcData.vendor.consents[vendor] === true || tcData.vendor.legitimateInterests[vendor] === true) {
199              var purposes = [];
200              var hasLegitimateInterests = tcData.vendor.legitimateInterests[vendor];
201              var hasSpecialFeaturesOptins = Object.keys(tcData.specialFeatureOptins).length > 0;
202              purposes = extractPurposes(vendors[i], hasLegitimateInterests, hasSpecialFeaturesOptins);
203              consent.push(createPurposesBitfield(purposes));
204            } else {
205              consent.push(0x0000);
206            }
207          }
208          return convertToConsentString(consent);
209        }
210        function createDefaultConsentString(vendors, hasApi) {
211          var result = '';
212          for(var i = 0, iLen = vendors.length; i < iLen; i += 1) {
213            result += '0000';
214          }
215          result = (hasApi ? '01' : '00') + result;
216          return result;
217        }
218        function handleConsentLoaded(currentConsentString, options, resultSet) {
219          return function(tcData, success) {
220            var noop = function() {};
221            if (success && ['tcloaded', 'useractioncomplete'].indexOf(tcData.eventStatus) > -1) {
222              var extractedConsentString = tcData.gdprApplies
223                ? extractConsentFromCmp(tcData, options.vendors)
224                : createDefaultConsentString(options.vendors, true);
225              if (extractedConsentString !== currentConsentString) {
226                if (resultSet && options.resultKey) {
227                  resultSet[options.resultKey] = extractedConsentString;
228                }
229                writeConsentToCookie(extractedConsentString, consentOptions.cookie);
230              }
231              __tcfapi('removeEventListener', 2, noop, tcData.listenerId);
232            } else {
233              var failedConsentString = createDefaultConsentString(options.vendors, true);
234              if (resultSet && options.resultKey) {
235                resultSet[options.resultKey] = failedConsentString;
236              }
237              writeConsentToCookie(failedConsentString, consentOptions.cookie);
238            }
239          };
240        }
241        function handleCmpUiShown(currentConsentString, options, resultSet) {
242          return function(tcData, success) {
243            if (success && tcData.eventStatus === 'cmpuishown') {
244              __tcfapi('addEventListener', 2, handleConsentLoaded(currentConsentString, options, resultSet));
245            }
246          }
247        }
248        function hasTcfApi() {
249          return '__tcfapi' in window;
250        }
251        var interval = 0;
252        var intervalCount = 0;
253        var storedConsentString = loadConsentFromCookie(consentOptions.cookie).value;
254        var defaultConsentString = createDefaultConsentString(consentOptions.vendors, hasTcfApi());
255        if (hasTcfApi()) {
256          if (iamResultSet && consentOptions.resultKey) {
257            iamResultSet[consentOptions.resultKey] = storedConsentString || defaultConsentString;
258          }
259          __tcfapi('addEventListener', 2, handleConsentLoaded((storedConsentString || defaultConsentString), consentOptions, iamResultSet));
260          if (cmpUiShownHandler === false) {
261            __tcfapi('addEventListener', 2, handleCmpUiShown((storedConsentString || defaultConsentString), consentOptions, iamResultSet));
262            cmpUiShownHandler = true;
263          }
264        } else if (!hasTcfApi()){
265          interval = setInterval(function() {
266            intervalCount += 1;
267            if (hasTcfApi() || intervalCount >= consentMaxCheckIntervals) {
268              clearInterval(interval);
269              processConsent(consentString, consentOptions, iamResultSet);
270            }
271          }, consentCheckIntervalLength);
272        }
273        if (consentString && consentString !== storedConsentString && hasTcfApi() === false) {
274          writeConsentToCookie(consentString, consentOptions.cookie);
275          if (iamResultSet && consentOptions.resultKey) {
276            iamResultSet[consentOptions.resultKey] = consentString;
277          }
278        } else if (!consentString && storedConsentString && hasTcfApi() === false) {
279          if (iamResultSet && consentOptions.resultKey) {
280            iamResultSet[consentOptions.resultKey] = storedConsentString;
281          }
282        } else if (!consentString && !storedConsentString && hasTcfApi() === false) {
283          writeConsentToCookie(defaultConsentString, consentOptions.cookie);
284          if (iamResultSet && consentOptions.resultKey) {
285            iamResultSet[consentOptions.resultKey] = defaultConsentString;
286          }
287        }
288      }
289      function enableEvents() {
290        if ((tb == 1 || result.tb == "on") && result.tb != "off" && !eventsEnabled) {
291          eventsEnabled = 1;
292          mode = 1;
293          for(var e in autoEvents) {
294            (function(e) {
295              var oldEvent = window[e];
296              window[e] = function() {
297                if (lastEvent != autoEvents[e]) {
298                  lastEvent = autoEvents[e];
299                  event(autoEvents[e]);
300                }
301                if (typeof oldEvent == "function") oldEvent();
302              };
303            })(e);
304          }
305        }
306      }
307
308      function isDoNotTrack() {
309        if ((nt & 2) ? ((typeof result.nt == "undefined") ? (nt & 1) : result.nt) : nt & 1) {
310          if (window.navigator.msDoNotTrack && window.navigator.msDoNotTrack == "1") return true;
311          if (window.navigator.doNotTrack && (window.navigator.doNotTrack == "yes" || window.navigator.doNotTrack == "1")) return true;
312        }
313        return false;
314      }
315
316      var getInvitation = function (response) {
317        if (response && response.hasOwnProperty("block-status")){
318          var isEligibleForInvitation = ( "NONE" === response['block-status'].toUpperCase() );
319          if (isEligibleForInvitation) {
320            if (IAMQSElement) {
321              IAMQSElement.parentNode.removeChild(IAMQSElement);
322            }
323            IAMQSElement = createScriptTag(response['invite-url']);
324          }
325        }
326      };
327
328      function loadSurvey() {
329        szmvars = result.st + "//" + result.pt + "//" + result.cp + "//VIA_SZMNG";
330        var sampleType = (result.sv == "i2") ? "in" : result.sv;
331        var qdsHost = qdsUrl;
332        if (result.cn) {
333          sampleType += "_"+result.cn;
334          if (result.cn == "at") {
335            qdsHost = cntQdsUrl;
336          }
337        }
338
339        qdsParameter = {
340          siteIdentifier: result.cp,
341          offerIdentifier: result.st,
342          sampleType: sampleType,
343          pixelType: result.pt,
344          contentType: result.cp,
345          host: qdsHost,
346          port: "",
347          isFadeoutFlash: true,
348          isFadeoutFrame: true,
349          isFadeoutForm: true,
350          positionTop: 10,
351          positionLeft: 100,
352          zIndex: 1100000,
353          popupBlockDuration: qdsPopupBlockDuration,
354          keysForQueryParam : [
355            "offerIdentifier",
356            "siteIdentifier",
357            "sampleType",
358            "pixelType",
359            "isFadeoutFlash",
360            "isFadeoutFrame",
361            "isFadeoutForm",
362            "positionTop",
363            "positionLeft",
364            "zIndex"]
365        };
366
367        if(typeof window.iam_zindex !== 'undefined') {
368          qdsParameter.zIndex = window.iam_zindex;
369        }
370
371        if(typeof window.iam_fadeout_flash !== 'undefined') {
372          qdsParameter.isFadeoutFlash = window.iam_fadeout_flash;
373        }
374
375        if(typeof window.iam_fadeout_iframe !== 'undefined') {
376          qdsParameter.isFadeoutFrame = window.iam_fadeout_iframe;
377        }
378
379        if(typeof window.iam_fadeout_form !== 'undefined') {
380          qdsParameter.isFadeoutForm = window.iam_fadeout_form;
381        }
382
383        if(typeof window.iam_position_top !== 'undefined') {
384          qdsParameter.positionTop = window.iam_position_top;
385        }
386
387        if(typeof window.iam_position_left !== 'undefined') {
388          qdsParameter.positionLeft = window.iam_position_left;
389        }
390
391        var filterObjectByKeys = function (obj, keysToFilter) {
392          var result = {}, key;
393          var arrayLength = keysToFilter.length;
394          for (var i = 0; i < arrayLength; i++) {
395            key = keysToFilter[i];
396            if (obj.hasOwnProperty(key)) {
397              result[key] = obj[key];
398            }
399          }
400          return result;
401        };
402
403        var serializeToQueryString = function (obj) {
404          var str = [];
405          for (var key in obj)
406            if (obj.hasOwnProperty(key)) {
407              str.push(encodeURIComponent(key) + "=" + encodeURIComponent(obj[key]));
408            }
409          return str.join("&");
410        };
411
412        var createPopupcheckCookie = function (blockDuration) {
413          var blockedUntilDate = new Date();
414          blockedUntilDate.setTime(blockedUntilDate.getTime() + blockDuration);
415          var expires = "expires=" + blockedUntilDate.toUTCString();
416          document.cookie = "POPUPCHECK=" + blockedUntilDate.getTime().toString() + ";" + expires + ";path=/";
417        };
418
419        var hasPopupcheckCookie = function () {
420          var cookie = document.cookie.split(";");
421          for (var i = 0; i < cookie.length; i++) {
422            if (cookie[i].match("POPUPCHECK=.*")) {
423              var currentDate = new Date();
424              var now = currentDate.getTime();
425              currentDate.setTime(cookie[i].split("=")[1]);
426              var blockedUntilTime = currentDate.getTime();
427              if (now <= blockedUntilTime) {
428                return true;
429              }
430            }
431          }
432          return false;
433        };
434
435        if (hasPopupcheckCookie()) {
436          return;
437        }
438
439        if (sv && !surveyCalled && result.sv !== "ke" && result.sv === "dz") {
440          surveyCalled = 1;
441          iam_ng_nxss();
442        }
443
444        if (sv && !surveyCalled && result.sv !== "ke" && (result.sv === "in" || result.sv === "mo" || result.sv === "i2" )) {
445          surveyCalled = 1;
446          createPopupcheckCookie(qdsParameter.popupBlockDuration);
447          // var protocol = window.location.protocol;
448          var protocol = "https:";
449          var pathOfCheckInvitation = "identitystatus";
450          var queryParameter = filterObjectByKeys(qdsParameter, qdsParameter.keysForQueryParam);
451          var queryParameterString = "?" + serializeToQueryString(queryParameter);
452          if (window.XDomainRequest && document.documentMode === 9) {
453            var checkForInvitationUrl = protocol + '//' + qdsParameter.host + '/' + pathOfCheckInvitation + '/identity.js' + queryParameterString+'&callback=iom.gi&c='+Math.random();
454            createScriptTag(checkForInvitationUrl);
455          } else {
456            var checkForInvitationUrl = protocol + '//' + qdsParameter.host + '/' + pathOfCheckInvitation + queryParameterString+'&c='+Math.random();
457            var httpRequest = new XMLHttpRequest();
458            httpRequest.onreadystatechange = function () {
459              if (httpRequest.readyState === XMLHttpRequest.DONE && 200 === httpRequest.status) {
460                var response = JSON.parse(httpRequest.responseText);
461                getInvitation(response);
462              }
463            };
464            httpRequest.open('GET', checkForInvitationUrl, true);
465            httpRequest.withCredentials = true;
466            httpRequest.send(null);
467          }
468
469        }
470      }
471
472      function hash(key) {
473        var hash = 0;
474        for (var i=0; i<key.length; ++i) {
475          hash += key.charCodeAt(i);
476          hash += (hash << 10);
477          hash ^= (hash >> 6);
478        }
479        hash += (hash << 3);
480        hash ^= (hash >> 11);
481        hash += (hash << 15);
482        hash = Math.abs(hash & hash);
483        return hash.toString(36);
484      }
485
486      function activeXDetect() {
487        var result = "",
488            componentVersion,
489            components =[
490              "7790769C-0471-11D2-AF11-00C04FA35D02", "89820200-ECBD-11CF-8B85-00AA005B4340",
491              "283807B5-2C60-11D0-A31D-00AA00B92C03", "4F216970-C90C-11D1-B5C7-0000F8051515",
492              "44BBA848-CC51-11CF-AAFA-00AA00B6015C", "9381D8F2-0288-11D0-9501-00AA00B911A5",
493              "4F216970-C90C-11D1-B5C7-0000F8051515", "5A8D6EE0-3E18-11D0-821E-444553540000",
494              "89820200-ECBD-11CF-8B85-00AA005B4383", "08B0E5C0-4FCB-11CF-AAA5-00401C608555",
495              "45EA75A0-A269-11D1-B5BF-0000F8051515", "DE5AED00-A4BF-11D1-9948-00C04F98BBC9",
496              "22D6F312-B0F6-11D0-94AB-0080C74C7E95", "44BBA842-CC51-11CF-AAFA-00AA00B6015B",
497              "3AF36230-A269-11D1-B5BF-0000F8051515", "44BBA840-CC51-11CF-AAFA-00AA00B6015C",
498              "CC2A9BA0-3BDD-11D0-821E-444553540000", "08B0E5C0-4FCB-11CF-AAA5-00401C608500",
499              "D27CDB6E-AE6D-11CF-96B8-444553540000", "2A202491-F00D-11CF-87CC-0020AFEECF20"
500            ];
501        document.body.addBehavior( "#default#clientCaps" );
502        for (var i = 0; i < components.length; i++) {
503          componentVersion = document.body.getComponentVersion('{' + components[i] + '}', 'ComponentID');
504          if ( componentVersion !== null ) {
505            result += componentVersion;
506          } else {
507            result += "null";
508          }
509        }
510        return result;
511      }
512
513      function fingerprint() {
514        var nav = window.navigator, t = nav.userAgent;
515        t += getScreen();
516        if (nav.plugins.length > 0 ) {
517          for (var i = 0; i < nav.plugins.length; i++ ) {
518            t += nav.plugins[i].filename + nav.plugins[i].version + nav.plugins[i].description;
519          }
520        }
521        if (nav.mimeTypes.length > 0 ) {
522          for (var i = 0; i < nav.mimeTypes.length; i++ ) {
523            t += nav.mimeTypes[i].type;
524          }
525        }
526        if ( /MSIE (\d+\.\d+);/.test(nav.userAgent) ) {
527          try {
528            t += activeXDetect();
529          }
530          catch(e) {
531            // ignore
532          }
533        }
534        return hash(t);
535      }
536
537      function createScriptTag(url){
538        var el = document.createElement("script");
539        el.type = "text/javascript";
540        el.src = url;
541        var head = document.getElementsByTagName("head")[0];
542        if(head) {
543          head.appendChild(el);
544          return el;
545        }
546        else return false;
547      }
548
549      function createScriptTagAsync(url, cb){
550        var el = document.createElement("script");
551        el.type = "text/javascript";
552        el.src = url;
553        el.onload = cb;
554        el.async = true;
555        var head = document.getElementsByTagName("head")[0];
556        if(head) {
557          head.appendChild(el);
558          return el;
559        }
560        else return false;
561      }
562
563      function createIamSendBox(url) {
564        function appendSendBox(url) {
565          var sendBox = document.createElement("iframe");
566          sendBox.className = 'iamsendbox';
567          sendBox.style.position = 'absolute';
568          sendBox.style.left = sendBox.style.top = '-999px';
569          sendBox.src = url + '&mo=1';
570          document.body.appendChild(sendBox);
571        }
572        var sendBoxes = document.querySelectorAll('.iamsendbox');
573        if (sendBoxes.length < maxSendBoxes) {
574          appendSendBox(url);
575        } else {
576          sendBoxes[0].remove();
577          appendSendBox(url);
578        }
579      }
580
581      function transmitData(url, mode) {
582        if (url.split("/")[2].slice(url.split("/")[2].length-8) == ".ioam.de" || url.split("/")[2].slice(url.split("/")[2].length-10) == ".iocnt.net") {
583          switch (mode) {
584            case 1:
585              if (IAMPageElement) {
586                IAMPageElement.parentNode.removeChild(IAMPageElement);
587              }
588              IAMPageElement = createScriptTag(url+'&mo=1');
589              if (!IAMPageElement) (new Image()).src = url+'&mo=0';
590              break;
591            case 2:
592              (new Image()).src = url+'&mo=0';
593              break;
594            case 3:
595              createIamSendBox(url);
596              break;
597            case 0:
598            default:
599              document.write('<script src="'+url+'&mo=1"></script>');
600          }
601        }
602      }
603
604      function getScreen() {
605        return screen.width + "x" + screen.height + "x" + screen.colorDepth;
606      }
607
608      function arrayContains(arr, obj) {
609        var i;
610        for (i=0;i<arr.length;i++) {
611          if (arr[i]==obj) return true;
612        }
613        return false;
614      }
615
616      function transformVar(value) {
617        if (!value) value = "";
618        value = value.replace(/[?#].*/g, "");
619        value = value.replace(/[^a-zA-Z0-9,_\/-]+/g, ".");
620        if (value.length > 255) value = value.substr(0,254) + '+';
621        return value;
622      }
623
624      function transformRef(value) {
625        if (!value) value = "";
626        //value = value.replace(/[?#].*/g, "");
627        value = value.replace(/[^a-zA-Z0-9,_\/:-]+/g, ".");
628        if (value.length > 255) value = value.substr(0,254) + '+';
629        return value;
630      }
631
632      function getRefHost() {
633        var url = document.referrer.split("/");
634        return (url.length >= 3) ? url[2] : "";
635      }
636
637      function buildResult(params) {
638        result = {};
639        var i;
640        for (i in params) {
641          if (params.hasOwnProperty(i)) {
642            if (i != "cn" || (i == "cn" && (arrayContains(deSubdomain, params[i])) || (arrayContains(cntSubdomain, params[i])))) {
643              result[i] = params[i];
644            }
645          }
646        }
647        if (result.hasOwnProperty("fp")) {
648          result.fp = (result.fp != "" && typeof result.fp != "undefined") ? result.fp : emptyCode;
649          result.fp = transformVar(result.fp);
650          result.pt = "FP";
651        }
652        if (result.hasOwnProperty("np")) {
653          result.np = (result.np != "" && typeof result.np != "undefined") ? result.np : emptyCode;
654          result.np = transformVar(result.np);
655          result.pt = "NP";
656        }
657        if (result.hasOwnProperty("xp")) {
658          result.xp = (result.xp != "" && typeof result.xp != "undefined") ? result.xp : emptyCode;
659          result.xp = transformVar(result.xp);
660          result.pt = "XP";
661        }
662        if (result.hasOwnProperty("cp")) {
663          result.cp = (result.cp != "" && typeof result.cp != "undefined") ? result.cp : emptyCode;
664          result.cp = transformVar(result.cp);
665          result.pt = "CP";
666        }
667        if (result.hasOwnProperty("ms")) {
668          result.ms = (result.ms != "" && typeof result.ms != "undefined") ? result.ms : "";
669        }
670        if (!result.pt) {
671          result.cp = emptyCode;
672          result.pt = "CP";
673          result.er = "N13";
674        }
675        if (!result.hasOwnProperty("ps")) {
676          result.ps = "lin";
677          result.er = "N22";
678        } else {
679          if (!(arrayContains(['ack', 'lin', 'pio', 'out'], result.ps))) {
680            result.ps = "lin";
681            result.er = "N23";
682          }
683        }
684        result.rf = getRefHost();
685        if (!result.hasOwnProperty("sur") || (result.hasOwnProperty("sur") && result.sur != "yes")) {
686          result.r2 = transformRef(document.referrer);
687        }
688        result.ur = document.location.host;
689        result.xy = getScreen();
690        result.lo = "DE/Baden-Wurttemberg";
691        result.cb = "0010";
692        result.i2 = "00103e742109f036a64469c9c";
693        result.ep = parseInt('1709096685', 10);
694        result.vr = "434";
695        result.id = fingerprint();
696        result.st = result.st ? result.st : dummySite;
697        if (!result.hasOwnProperty("sc") || (result.hasOwnProperty("sc") && result.sc != "no")) {
698          var cookie = getFirstPartyCookie();
699          result.i3 = cookie.cookie;
700          result.n1 = cookie.length;
701        }
702        if (((arrayContains(cookiewhitelist, result.st)) || (result.hasOwnProperty("sc") && result.sc == "yes")) && result.i3 == "nocookie") {
703          result.i3 = setFirstPartyCookie();
704        }
705
706        if (!result.hasOwnProperty("cn") && result.st.charAt(2) == "_") {
707          var cn = result.st.substr(0,2);
708          if (arrayContains(deSubdomain, cn) || arrayContains(cntSubdomain, cn)) {
709            result.cn = cn;
710          } else {
711            result.er = "E12";
712          }
713        }
714
715        // DNT dissemination survey
716        try {
717          result.dntt = ((window.navigator.msDoNotTrack && window.navigator.msDoNotTrack == "1") || (window.navigator.doNotTrack && (window.navigator.doNotTrack == "yes" || window.navigator.doNotTrack == "1"))) ? "1" : "0";
718        } catch(e) {
719          // ignore
720        }
721      }
722
723      function event(event) {
724        var payLoad = "";
725        var i;
726        event = event || "";
727        stopHeart();
728        if (inited && !isDoNotTrack() && (!checkEvents || (checkEvents && arrayContains(eventList, event))) && result.ps !== "out") {
729          result.lt = (new Date()).getTime();
730          result.ev = event;
731          // var proto = ( window.location.protocol.slice(0,4) === 'http' ) ? window.location.protocol : "https:";
732          var proto = "https:";
733          var baseUrl = domainPrefix + '.' + baseUrlDE;
734          if (result.cn && arrayContains(deSubdomain, result.cn)) {
735            baseUrl = domainPrefix + '.' + deBaseUrl;
736          } else if (result.cn && arrayContains(cntSubdomain, result.cn)) {
737            baseUrl = result.cn + cntBaseUrl;
738          }
739          if ( !(arrayContains(LSOBlacklist, result.st)) && ( ((/iPhone/.test(window.navigator.userAgent) || /iPad/.test(window.navigator.userAgent)) && /Safari/.test(window.navigator.userAgent) && !(/Chrome/.test(window.navigator.userAgent)) && !(/CriOS/.test(window.navigator.userAgent))) || ( /Maple_201/.test(window.navigator.userAgent) || /SMART-TV/.test(window.navigator.userAgent) || /SmartTV201/.test(window.navigator.userAgent) ) ) ) {
740            if (result.cn && arrayContains(deSubdomain, result.cn)) {
741              baseUrl = domainPrefix + '.' + result.cn + deBaseUrlLSO;
742            } else if (result.cn && arrayContains(cntSubdomain, result.cn)) {
743              baseUrl = result.cn + cntBaseUrlLSO;
744            } else {
745              baseUrl = domainPrefix + '.' + baseUrlLSO;
746            }
747            mode = 3;
748            if (result.hasOwnProperty("sur") && result.sur == "yes") {
749              result.u2 = window.location.origin;
750            } else {
751              result.u2 = document.URL;
752            }
753          }
754          for (i in result) {
755            if (result.hasOwnProperty(i) && i!="cs" && i!="url") {
756              payLoad = payLoad + encodeURIComponent(i).slice(0,8) + "=" + encodeURIComponent(result[i]).slice(0,2048) + "&";
757            }
758          }
759          payLoad = payLoad.slice(0,4096);
760          result.cs = hash(payLoad);
761          result.url = proto + "//" + baseUrl + "?" + payLoad + "cs=" + result.cs;
762          transmitData(result.url, mode);
763          if (arrayContains(['play', 'resm', 'alve', 'mute', 'sfqt', 'ssqt', 'stqt', 'sapl', 'snsp'], event) && (mode === 1 || mode === 3) && result.hasOwnProperty('hb')) {
764            startHeart();
765          }
766          return result;
767        }
768        return {};
769      }
770
771      function forwardToOldSZM() {
772        if (result.oer === "yes" && !window.IVW && !document.IVW) {
773          var SZMProtocol = (window.location.protocol.slice(0,4) === 'http') ? window.location.protocol : "https:";
774          var SZMComment = (result.co) ? result.co + "_SENT_VIA_MIGRATION_TAG" : "SENT_VIA_MIGRATION_TAG";
775          var SZMCode = (result.oc) ? result.oc : ((result.cp) ? ((result.cp == emptyCode) ? "" : result.cp) : "");
776          var SZMContType = (result.pt !== null) ? result.pt : "CP";
777          (new Image()).src = SZMProtocol + "//" + result.st + ".ivwbox.de/cgi-bin/ivw/" + SZMContType.toUpperCase() + "/" + SZMCode + ";" + SZMComment + "?r=" + escape(document.referrer) + "&d=" + (Math.random()*100000);
778        }
779      }
780
781      function count(params, m) {
782        init(params,m);
783        return event(result.ev);
784      }
785
786      function init(params,m) {
787        if (!params.cn || params.cn !== 'at') {
788          processConsent(params.ct, { vendors: consentVendors, cookie: consentCookieOptions, resultKey: 'ct' }, params);
789        }
790        // Remove AMP consent string when provided
791        if (params.act) {
792          delete params.act;
793        }
794        mode = m;
795        buildResult(params);
796        if (result.sv) {
797          result.sv = (result.sv == "in" && mode == 1) ? "i2" : result.sv;
798        }
799        if (result.sv && result.sv !== 'ke' && checkForConsent(params.ct, consentVendors, 785, 9, -1) === false) {
800          result.sv = 'ke';
801        }
802        enableEvents();
803        loadSurvey();
804        checkOptoutCookie();
805        inited = 1;
806        forwardToOldSZM();
807        return {};
808      }
809
810      function hybrid(params,m) {
811        init(params,m);
812        var ioam_smi = (typeof localStorage === 'object' && typeof localStorage.getItem === 'function') ? localStorage.getItem("ioam_smi") : null;
813        var ioam_site = (typeof localStorage === 'object' && typeof localStorage.getItem === 'function') ? localStorage.getItem("ioam_site") : null;
814        var ioam_bo = (typeof localStorage === 'object' && typeof localStorage.getItem === 'function') ? localStorage.getItem("ioam_bo") : null;
815        if ( ioam_smi !== null && ioam_site !== null && ioam_bo !== null ) {
816          result.mi = ioam_smi;
817          result.fs = result.st;
818          result.st = ioam_site;
819          result.bo = ioam_bo;
820          if (result.fs == result.st) {
821            result.cp = (result.cp.slice(0,10) !== "___hyb2___") ? "___hyb2___"+result.fs+"___"+result.cp : result.cp;
822          } else {
823            result.cp = (result.cp.slice(0,9) !== "___hyb___") ? "___hyb___"+result.fs+"___"+result.cp : result.cp;
824          }
825          return event(result.ev);
826        } else if ( ioam_smi !== null && ioam_bo !== null ) {
827          return {};
828        } else {
829          if ( window.location.protocol.slice(0,4) !== 'http' || /IOAM\/\d+\.\d+/.test(window.navigator.userAgent) ) {
830            return {};
831          } else {
832            return event(result.ev);
833          }
834        }
835      }
836
837      function setMultiIdentifier(midentifier) {
838        if ( localStorage.getItem("ioam_smi") === null || localStorage.getItem("ioam_site") === null || localStorage.getItem("ioam_bo") === null || localStorage.getItem("ioam_smi") !== midentifier ) {
839          result.fs = result.st;
840          var JsonMIndetifier = null;
841          var NewSite = null;
842          if ( typeof midentifier === 'string' && typeof JSON === 'object' && typeof JSON.parse === 'function' ) {
843            try {
844              JsonMIndetifier = JSON.parse(midentifier);
845              if (JsonMIndetifier.hasOwnProperty( 'library' )) {
846                if (JsonMIndetifier.library.hasOwnProperty( 'offerIdentifier' )) {
847                  if ( JsonMIndetifier.library.offerIdentifier ) {
848                    NewSite = JsonMIndetifier.library.offerIdentifier;
849                  } else {
850                    result.er = "JSON(E10): offerIdentifier not valid";
851                  }
852                } else {
853                  result.er = "JSON(E10): no key offerIdentifier";
854                }
855              } else {
856                result.er = "JSON(E10): no key library";
857              }
858            } catch(err) {
859              result.er = "JSON(E10): "+err;
860            }
861          }
862          if ( NewSite !== null ) {
863            localStorage.setItem("ioam_site", NewSite);
864          }
865          result.st = NewSite;
866          result.mi = midentifier;
867          result.bo = (new Date()).getTime();
868          localStorage.setItem("ioam_smi", result.mi);
869          localStorage.setItem("ioam_bo", result.bo);
870          if (result.fs == result.st) {
871            result.cp = (result.cp.slice(0,10) !== "___hyb2___") ? "___hyb2___"+result.fs+"___"+result.cp : result.cp;
872          } else {
873            result.cp = (result.cp.slice(0,9) !== "___hyb___") ? "___hyb___"+result.fs+"___"+result.cp : result.cp;
874          }
875          return event(result.ev);
876        }
877        return {};
878      }
879
880      if (window.postMessage || window.JSON && {}.toString.call(window.JSON.parse) !== '[object Function]' && {}.toString.call(window.JSON.stringify) !== '[object Function]') {
881        var listener = function(msg) {
882          try {
883            var msgdata = JSON.parse(msg.data);
884          } catch(e) {
885            msgdata = { type:false };
886          }
887          if ({}.toString.call(msgdata) === '[object Object]' && msgdata.type == "iam_data") {
888            var respObj = {
889              seq : msgdata.seq,
890              iam_data : {
891                st: result.st,
892                cp: result.cp
893              }
894            };
895            msg.source.postMessage(JSON.stringify(respObj),msg.origin);
896          }
897        };
898        if (window.addEventListener) {
899          window.addEventListener("message", listener);
900        } else {
901          window.attachEvent("onmessage", listener);
902        }
903      }
904
905      function optin() {
906        var oiurl = ( window.location.protocol.slice(0,4) === 'http' ) ? window.location.protocol : "https:" + "//" + optinUrl;
907        var win = window.open(oiurl, '_blank');
908        win.focus();
909      }
910
911      function startHeart() {
912        // IE 9 Compatible
913        function heartbeat() {
914          return event("alve");
915        }
916        switch (result.hb) {
917          case "adshort":
918            frequency = hbiAdShort;
919            break;
920          case "admedium":
921            frequency = hbiAdMedium;
922            break;
923          case "adlong":
924            frequency = hbiAdLong;
925            break;
926          case "short":
927            frequency = hbiShort;
928            break;
929          case "medium":
930            frequency = hbiMedium;
931            break;
932          case "long":
933            frequency = hbiLong;
934            break;
935          case "extralong":
936            frequency = hbiExtraLong;
937            break;
938          default:
939            frequency = 0;
940        }
941        if (frequency != 0) {
942          try {
943            heart = setInterval(heartbeat, frequency);
944          } catch(e) {
945            // pass
946          }
947        }
948      }
949
950      function stopHeart() {
951        try {
952          clearInterval(heart);
953        } catch(e) {
954          // pass
955        }
956      }
957
958      function stringtohex(str) {
959        var res = [];
960        for (var n = 0, l = str.length; n < l; n ++) {
961          var hex = Number(str.charCodeAt(n)).toString(16);
962          res.push(hex);
963        }
964        return res.join('');
965      }
966
967      function getUniqueID() {
968        var max = 999999999999;
969        var min = 100000000000;
970        return (Math.floor(Math.random() * (max - min + 1)) + min).toString(16) + (Math.floor(Math.random() * (max - min + 1)) + min).toString(16) + stringtohex(result.cb) + (Math.floor(Math.random() * (max - min + 1)) + min).toString(16);
971      }
972
973      function expireDays() {
974        var max = 365;
975        var min = 300;
976        return Math.floor(Math.random() * (max - min + 1)) + min;
977      }
978
979      function getFirstPartyCookie() {
980        //FF Patch
981        try {
982          var cookie = document.cookie.split(";");
983          for (var i = 0; i < cookie.length; i++) {
984            if (cookie[i].match(cookieName + "=.*")) {
985              var ourcookie = cookie[i].split("=")[1].replace("!", ":");
986              var cookieParts = ourcookie.split(":");
987              var firstCookieParts = cookieParts.slice(0, cookieParts.length - 1).join(':');
988              var lastCookiePart = cookieParts.slice(-1).pop();
989              if (hash(firstCookieParts) === lastCookiePart) {
990                if (!result.hasOwnProperty("i3") || !result.i3) {
991                  updateFirstPartyCookie(ourcookie);
992                }
993                return {
994                  cookie: ourcookie,
995                  length: cookie.length
996                };
997              } else {
998                // checksum failed, cookie not trusted, delete cookie
999                result.er = "N19";
1000                try {
1001                  if (cookieMaxRuns < 3) {
1002                    cookieMaxRuns++;
1003                    setFirstPartyCookie(2000);
1004                  } else {
1005                    result.er = "N20";
1006                  }
1007                } catch(e) {
1008                  result.er = "N20";
1009                }
1010              }
1011            }
1012          }
1013        } catch(e) {
1014          return {cookie: "nocookie", length: 0};
1015        }
1016        return {cookie: "nocookie", length: cookie.length};
1017      }
1018
1019      function checkFirstPartyCookie() {
1020        var cookie = getFirstPartyCookie();
1021        if (cookie.cookie != "nocookie") {
1022          return true;
1023        } else {
1024          return false;
1025        }
1026      }
1027
1028      function getFpcd(cd) {
1029        var ctld ='acadaeafagaialamaoaqarasatauawaxazbabbbdbebfbgbhbibjbmbnbobrbsbtbwbybzcacccdcfcgchcickclcmcncocrcucvcwcxcyczdjdkdmdodzeceeegereseteufifjfkfmfofrgagdgegfggghgiglgmgngpgqgrgsgtgugwgyhkhmhnhrhthuidieiliminioiqirisitjejmjojpkekgkhkikmknkpkrkwkykzlalblclilklrlsltlulvlymamcmdmemgmhmkmlmmmnmompmqmrmsmtmumvmwmxmymznancnenfngninlnonpnrnunzompapepfpgphpkplpmpnprpsptpwpyqarerorsrurwsasbscsdsesgshsiskslsmsnsosrssstsvsxsysztctdtftgthtjtktltmtntotrtttvtwtzuaugukusuyuzvavcvevgvivnvuwfwsyeytzazmzw'.match(/.{1,2}(?=(.{2})+(?!.))|.{1,2}$/g),
1030            blkPrefixes = ['www', 'm', 'mobile'],
1031            urlParts = cd.split('.'),
1032            fpcd,
1033            ctldParts = [],
1034            hostParts = [],
1035            ctldPart = '',
1036            hostPart = '',
1037            i = 0,
1038            iLen = 0;
1039        if (!cd) return '';
1040        if (arrayContains(ctld, urlParts[urlParts.length -1])) {
1041          for (i = urlParts.length -1; i >= 0; i -= 1) {
1042            if ( i >= urlParts.length - 3 && urlParts[i].length <= 4) {
1043              ctldParts.push(urlParts[i]);
1044            } else {
1045              hostParts.push(urlParts[i]);
1046              break;
1047            }
1048          }
1049          ctldParts = ctldParts.reverse();
1050          for (i = 0, iLen = ctldParts.length;i < iLen; i += 1) {
1051            if (!arrayContains(blkPrefixes, ctldParts[i])) {
1052              ctldPart += i < iLen ? '.' + ctldParts[i] :  ctldParts[i];
1053            }
1054          }
1055          hostParts = hostParts.reverse();
1056          hostPart = hostParts[hostParts.length - 1] || '';
1057          if (arrayContains(blkPrefixes, hostPart)) {
1058            hostPart = '';
1059          }
1060        } else {
1061          hostPart = urlParts
1062          .slice(urlParts.length - 2, urlParts.length)
1063          .join('.') || '';
1064        }
1065        fpcd = hostPart + ctldPart;
1066        if (fpcd && fpcd.length > 4 && fpcd.split('.').length > 1) {
1067          // RFC 2109
1068          return 'domain=' + (fpcd[0] === '.' ? fpcd : (fpcd ? '.' + fpcd : '')) + ';';
1069        }
1070        return '';
1071      }
1072
1073      function updateFirstPartyCookie(cookievalue) {
1074        var domain = getFpcd(location.hostname);
1075        var expireValue = cookievalue.split(":")[1];
1076        var events = parseInt(cookievalue.split(":")[4]) + 1;
1077        var expireDate = new Date(new Date().setTime(expireValue));
1078        var now = new Date();
1079        var site = (result.st) ? result.st : "nosite";
1080        var code = (result.cp) ? result.cp : (result.np) ? result.np : (result.fp) ? result.fp : "nocode";
1081        var evnt = (result.ev) ? result.ev : "noevent";
1082        var cookval = cookievalue.split(":").slice(0,4).join(":") + ":" + events + ":" + site 
1082+ ":" + code + ":" + evnt + ":" + now.getTime().toString();
1083        cookval = cookval + ":" + hash(cookval);
1084        document.cookie = cookieName + "=" + cookval + ";expires=" + expireDate.toUTCString() + ";" + domain + ";path=/;";
1085      }
1086
1087      function setFirstPartyCookie(expire) {
1088        if (!expire) {
1089          expire = expireDays()*24*60*60*1000;
1090        }
1091        var domain = getFpcd(location.hostname);
1092        var expireDate = new Date(new Date().setTime(new Date().getTime()+expire));
1093        var setDate = new Date();
1094        var identifier;
1095        var site = (result.st) ? result.st : "nosite";
1096        var code = (result.cp) ? result.cp : (result.np) ? result.np : (result.fp) ? result.fp : "nocode";
1097        var evnt = (result.ev) ? result.ev : "noevent";
1098        if (result.hasOwnProperty("i2")) {
1099          identifier = result.i2;
1100        } else {
1101          identifier = getUniqueID();
1102        }
1103        var cookreturnval = identifier + ":" + expireDate.getTime().toString() + ":" + setDate.getTime().toString() + ":" + domain.replace("domain=", "").replace(";
1103", "") + ":1:" + site + ":" + code + ":" + evnt + ":" +  setDate.getTime().toString();
1104        var cookval = identifier + ":" + expireDate.getTime().toString() + ":" + setDate.getTime().toString() + ":" + domain.replace("domain=", "").replace(";", "") + ":2:" + site + ":" + code + ":" + evnt + ":" +  setDate.getTime().toString();
1105        cookval = cookval + ":" + hash(cookval);
1106        document.cookie = cookieName + "=" + cookval + ";expires=" + expireDate.toUTCString() + ";" + domain + ";path=/;";
1107        if (!checkFirstPartyCookie()) {
1108          // cookie not found, try it without domain
1109          document.cookie = cookieName + "=" + cookval + ";expires=" + expireDate.toUTCString() + ";path=/;";
1110          result.er = "N25";
1111          if (!checkFirstPartyCookie()) {
1112            result.er = "N26";
1113            return "nocookie";
1114          }
1115        }
1116        return cookreturnval;
1117      }
1118
1119      function createCORSRequest(method, url) {
1120        var xdhreq = new XMLHttpRequest();
1121        if ("withCredentials" in xdhreq) {
1122          xdhreq.open(method, url, true);
1123          xdhreq.withCredentials = true;
1124        } else if (typeof XDomainRequest != "undefined") {
1125          xdhreq = new XDomainRequest();
1126          xdhreq.open(method, url);
1127        } else {
1128          xdhreq = null;
1129        }
1130        return xdhreq;
1131      }
1132
1133      function setOptout(expire) {
1134        if (!expire) {
1135          // Year(s)*Days*Hours*Minutes*Seconds*1000
1136          expire = 1*24*60*60*1000;
1137        }
1138        var domain = getFpcd(location.hostname);
1139        var expireDate = new Date(new Date().setTime(new Date().getTime()+expire));
1140        document.cookie = OptoutCookieName + "=stop;expires=" + expireDate.toUTCString() + ";" + domain + ";path=/;";
1141        // delete 1st-Party-Cookie
1142        setFirstPartyCookie(2000);
1143      }
1144
1145      function checkOptoutCookie() {
1146        try {
1147          var cookie = document.cookie.split(";");
1148          for (var i = 0; i < cookie.length; i++) {
1149            if (cookie[i].match(OptoutCookieName + "=.*")) {
1150              result.ps = "out";
1151              return true;
1152            }
1153          }
1154          return false;
1155        } catch(e) {
1156          return false;
1157        }
1158      }
1159
1160      function delOptout() {
1161        setOptout(2000);
1162        // delete 1st-Party-Cookie
1163        setFirstPartyCookie(2000);
1164      }
1165
1166      function getPlus() {
1167        if (typeof localStorage === 'object' && typeof localStorage.getItem === 'function') {
1168          if (localStorage.getItem("ioamplusdata") !== null && localStorage.getItem("ioamplusttl") !== null) {
1169            var currentDate = new Date();
1170            var now = currentDate.getTime();
1171            currentDate.setTime(localStorage.getItem("ioamplusttl"));
1172            if (now <= currentDate.getTime()) {
1173              return true;
1174            }
1175          }
1176          var checkForSocio = 'https:' + '//' + ioplusurl + '/soziodata2.php?sc=' + socioToken + '&st=' + result.st + '&id=' + result.id;
1177          var XHR = createCORSRequest('GET', checkForSocio);
1178          if (XHR) {
1179            XHR.onload = function() {
1180              var response = XHR.responseText;
1181              var blockedUntilDate = new Date();
1182              try {
1183                if ((response.split(":")[1].split(",")[0]) == "0") {
1184                  blockedUntilDate.setTime(blockedUntilDate.getTime() + lsottlmin);
1185                  localStorage.setItem("ioamplusttl", blockedUntilDate.getTime().toString());
1186                  if (localStorage.getItem("ioamplusdata") == null) {
1187                    localStorage.setItem("ioamplusdata", response);
1188                  }
1189                } else {
1190                  blockedUntilDate.setTime(blockedUntilDate.getTime() + lsottl);
1191                  localStorage.setItem("ioamplusdata", response);
1192                  localStorage.setItem("ioamplusttl", blockedUntilDate.getTime().toString());
1193                }
1194              } catch(e) {
1195                // pass
1196              }
1197            };
1198            XHR.send();
1199            return true;
1200          }
1201        }
1202        return false;
1203      }
1204      return {
1205        count: count,
1206        c: count,
1207        i: init,
1208        init: init,
1209        e: event,
1210        event: event,
1211        h: hybrid,
1212        hybrid: hybrid,
1213        setMultiIdentifier: setMultiIdentifier,
1214        smi: setMultiIdentifier,
1215        oi: optin,
1216        optin: optin,
1217        setoptout: setOptout,
1218        soo: setOptout,
1219        deloptout: delOptout,
1220        doo: delOptout,
1221        getInvitation: getInvitation,
1222        gi: getInvitation,
1223        getPlus: getPlus,
1224        gp: getPlus,
1225        consent: setConsent,
1226        ct: setConsent
1227      };
1228    })();
1229  }
1230})(window)

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.