! function() { ! function() { function t(t, c) { t = t || "", c = c || {}; for (var u in e) e.hasOwnProperty(u) && (c.autoFix && (c["fix_" + u] = !0), c.fix = c.fix || c["fix_" + u]); var f = [], l = function(t) { return "string" == typeof t ? t.replace(a, function(t) { return l.cache[t] || (l.element.innerHTML = t, l.cache[t] = l.element.innerText || l.element.textContent), l.cache[t] }) : t }; l.element = document.createElement("div"), l.cache = { "&": "&" }; var p = function(e) { try { e = escapeIframe(e) } catch (t) {} t += e }, d = function(e) { t = e + t }, h = { comment: /^"); if (e >= 0) return { content: t.substr(4, e), length: e + 3 } }, endTag: function() { var e = t.match(i); if (e) return { tagName: e[1], length: e[0].length } }, atomicTag: function() { var e = g.startTag(); if (e) { var n = t.slice(e.length); if (n.match(new RegExp("\\s*" + e.tagName + "\\s*>", "i"))) { var i = n.match(new RegExp("([\\s\\S]*?)\\s*" + e.tagName + "\\s*>", "i")); if (i) return { tagName: e.tagName, attrs: e.attrs, content: i[1], length: i[0].length + e.length } } } }, startTag: function() { var e = t.match(n); if (e) { var i = {}; return e[2].replace(r, function(t, e) { var n = arguments[2] || arguments[3] || arguments[4] || o.test(e) && e || null; i[e] = l(n) }), { tagName: e[1], attrs: i, unary: !!e[3], length: e[0].length } } }, chars: function() { var e = t.indexOf("<"); return { length: e >= 0 ? e : t.length } } }, m = function() { for (var e in h) if (h[e].test(t)) { s && console.log("suspected " + e); var n = g[e](); return n ? (s && console.log("parsed " + e, n), n.type = n.type || e, n.text = t.substr(0, n.length), t = t.slice(n.length), n) : null } }, y = function(t) { for (var e; e = m();) if (t[e.type] && t[e.type](e) === !1) return }, v = function() { var e = t; return t = "", e }, w = function() { return t }; return c.fix && ! function() { var e = /^(AREA|BASE|BASEFONT|BR|COL|FRAME|HR|IMG|INPUT|ISINDEX|LINK|META|PARAM|EMBED)$/i, n = /^(COLGROUP|DD|DT|LI|OPTIONS|P|TD|TFOOT|TH|THEAD|TR)$/i, i = []; i.last = function() { return this[this.length - 1] }, i.lastTagNameEq = function(t) { var e = this.last(); return e && e.tagName && e.tagName.toUpperCase() === t.toUpperCase() }, i.containsTagName = function(t) { for (var e, n = 0; e = this[n]; n++) if (e.tagName === t) return !0; return !1 }; var r = function(t) { return t && "startTag" === t.type && (t.unary = e.test(t.tagName) || t.unary), t }, o = m, a = function() { var e = t, n = r(o()); return t = e, n }, s = function() { var t = i.pop(); d("" + t.tagName + ">") }, u = { startTag: function(t) { var e = t.tagName; "TR" === e.toUpperCase() && i.lastTagNameEq("TABLE") ? (d("
"), l()) : c.fix_selfClose && n.test(e) && i.containsTagName(e) ? i.lastTagNameEq(e) ? s() : (d("" + t.tagName + ">"), l()) : t.unary || i.push(t) }, endTag: function(t) { var e = i.last(); e ? c.fix_tagSoup && !i.lastTagNameEq(t.tagName) ? s() : i.pop() : c.fix_tagSoup && f() } }, f = function() { o(), l() }, l = function() { var t = a(); t && u[t.type] && u[t.type](t) }; m = function() { return l(), r(o()) } }(), { append: p, readToken: m, readTokens: y, clear: v, rest: w, stack: f } } var e = function() { var t, e = {}, n = this.document.createElement("div"); return t = "", n.innerHTML = t, e.tagSoup = n.innerHTML !== t, n.innerHTML = "
", e.selfClose = 2 === n.childNodes.length, e }(), n = /^<([\-A-Za-z0-9_:]+)((?:\s+[\w\-]+(?:\s*=?\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/, i = /^<\/([\-A-Za-z0-9_:]+)[^>]*>/, r = /([\-A-Za-z0-9_:]+)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g, o = /^(checked|compact|declare|defer|disabled|ismap|multiple|nohref|noresize|noshade|nowrap|readonly|selected)$/i, a = /(?[\w.\-]+?;)/gm, s = !1; t.supports = e, t.tokenToString = function(t) { var e = { comment: function(t) { return "<--" + t.content + "-->" }, endTag: function(t) { return "" + t.tagName + ">" }, atomicTag: function(t) { return console.log(t), e.startTag(t) + t.content + e.endTag(t) }, startTag: function(t) { var e = "<" + t.tagName; for (var n in t.attrs) { var i = t.attrs[n]; e += " " + n + '="' + (i ? i.replace(/(^|[^\\])"/g, '$1\\"') : "") + '"' } return e + (t.unary ? "/>" : ">") }, chars: function(t) { return t.text } }; return e[t.type](t) }, t.escapeAttributes = function(t) { var e = {}; for (var n in t) { var i = t[n]; e[n] = i && i.replace(/(^|[^\\])"/g, '$1\\"') } return e }; for (var c in e) t.browserHasFlaw = t.browserHasFlaw || !e[c] && c; this.htmlParser = t }(), function() { function t() {} function e(t) { return t !== p && null !== t } function n(t) { return "function" == typeof t } function i(t, e, n) { var i, r = t && t.length || 0; for (i = 0; i < r; i++) e.call(n, t[i], i) } function r(t, e, n) { var i; for (i in t) t.hasOwnProperty(i) && e.call(n, i, t[i]) } function o(t, e) { return r(e, function(e, n) { t[e] = n }), t } function a(t, n) { return t = t || {}, r(n, function(n, i) { e(t[n]) || (t[n] = i) }), t } function s(t) { try { return h.call(t) } catch (n) { var e = []; return i(t, function(t) { e.push(t) }), e } } function c(t) { return !!(t && "tagName" in t) && !!~t.tagName.toLowerCase().indexOf("script") } function u(t) { return !!(t && "tagName" in t) && !!~t.tagName.toLowerCase().indexOf("style") } var f = { afterAsync: t, afterDequeue: t, afterStreamStart: t, afterWrite: t, beforeEnqueue: t, beforeWrite: function(t) { return t }, done: t, error: function(t) { throw t }, releaseAsync: !1, highPriority: !1 }, l = this, p = void 0; if (!l.postscribe) { var d = !1, h = Array.prototype.slice, g = function(t) { return t[t.length - 1] }, m = function() { function t(t, n, i) { var r = f + n; if (2 === arguments.length) { var o = t.getAttribute(r); return e(o) ? String(o) : o } e(i) && "" !== i ? t.setAttribute(r, i) : t.removeAttribute(r) } function a(e, n) { var i = e.ownerDocument; o(this, { root: e, options: n, win: i.defaultView || i.parentWindow, doc: i, parser: htmlParser("", { autoFix: !1 }), actuals: [e], proxyHistory: "", proxyRoot: i.createElement(e.nodeName), scriptStack: [], writeQueue: [] }), t(this.proxyRoot, "proxyof", 0) } var f = "data-ps-"; return a.prototype.write = function() { [].push.apply(this.writeQueue, arguments); for (var t; !this.deferredRemote && this.writeQueue.length;) t = this.writeQueue.shift(), n(t) ? this.callFunction(t) : this.writeImpl(t) }, a.prototype.callFunction = function(t) { var e = { type: "function", value: t.name || t.toString() }; this.onScriptStart(e), t.call(this.win, this.doc), this.onScriptDone(e) }, a.prototype.writeImpl = function(t) { this.parser.append(t); for (var e, n, i, r = []; (e = this.parser.readToken()) && !(n = c(e)) && !(i = u(e));) r.push(e); this.writeStaticTokens(r), n && this.handleScriptToken(e), i && this.handleStyleToken(e) }, a.prototype.writeStaticTokens = function(t) { var e = this.buildChunk(t); if (e.actual) return e.html = this.proxyHistory + e.actual, this.proxyHistory += e.proxy, this.proxyRoot.innerHTML = e.html, d && (e.proxyInnerHTML = this.proxyRoot.innerHTML), this.walkChunk(), d && (e.actualInnerHTML = this.root.innerHTML), e }, a.prototype.buildChunk = function(t) { var e = this.actuals.length, n = [], r = [], o = []; return i(t, function(t) { if (n.push(t.text), t.attrs) { if (!/^noscript$/i.test(t.tagName)) { var i = e++; r.push(t.text.replace(/(\/?>)/, " " + f + "id=" + i + " $1")), "ps-script" !== t.attrs.id && "ps-style" !== t.attrs.id && o.push("atomicTag" === t.type ? "" : "<" + t.tagName + " " + f + "proxyof=" + i + (t.unary ? " />" : ">")) } } else r.push(t.text), o.push("endTag" === t.type ? t.text : "") }), { tokens: t, raw: n.join(""), actual: r.join(""), proxy: o.join("") } }, a.prototype.walkChunk = function() { for (var n, i = [this.proxyRoot]; e(n = i.shift());) { var r = 1 === n.nodeType, o = r && t(n, "proxyof"); if (!o) { r && (this.actuals[t(n, "id")] = n, t(n, "id", null)); var a = n.parentNode && t(n.parentNode, "proxyof"); a && this.actuals[a].appendChild(n) } i.unshift.apply(i, s(n.childNodes)) } }, a.prototype.handleScriptToken = function(t) { var e = this.parser.clear(); e && this.writeQueue.unshift(e), t.src = t.attrs.src || t.attrs.SRC, t.src && this.scriptStack.length ? this.deferredRemote = t : this.onScriptStart(t); var n = this; this.writeScriptToken(t, function() { n.onScriptDone(t) }) }, a.prototype.handleStyleToken = function(t) { var e = this.parser.clear(); e && this.writeQueue.unshift(e), t.type = t.attrs.type || t.attrs.TYPE || "text/css", this.writeStyleToken(t), e && this.write() }, a.prototype.writeStyleToken = function(t) { var e = this.buildStyle(t); this.insertStyle(e), t.content && (e.styleSheet && !e.sheet ? e.styleSheet.cssText = t.content : e.appendChild(this.doc.createTextNode(t.content))) }, a.prototype.buildStyle = function(t) { var e = this.doc.createElement(t.tagName); return e.setAttribute("type", t.type), r(t.attrs, function(t, n) { e.setAttribute(t, n) }), e }, a.prototype.insertStyle = function(t) { this.writeImpl(''); var e = this.doc.getElementById("ps-style"); e.parentNode.replaceChild(t, e) }, a.prototype.onScriptStart = function(t) { t.outerWrites = this.writeQueue, this.writeQueue = [], this.scriptStack.unshift(t) }, a.prototype.onScriptDone = function(t) { return t !== this.scriptStack[0] ? void this.options.error({ message: "Bad script nesting or script finished twice" }) : (this.scriptStack.shift(), this.write.apply(this, t.outerWrites), void(!this.scriptStack.length && this.deferredRemote && (this.onScriptStart(this.deferredRemote), this.deferredRemote = null))) }, a.prototype.writeScriptToken = function(t, e) { var n = this.buildScript(t), i = this.shouldRelease(n), r = this.options.afterAsync; t.src && (n.src = t.src, this.scriptLoadHandler(n, i ? r : function() { e(), r() })); try { this.insertScript(n), t.src && !i || e() } catch (t) { this.options.error(t), e() } }, a.prototype.buildScript = function(t) { var e = this.doc.createElement(t.tagName); return r(t.attrs, function(t, n) { e.setAttribute(t, n) }), t.content && (e.text = t.content), e }, a.prototype.insertScript = function(t) { this.writeImpl(''); var e = this.doc.getElementById("ps-script"); e.parentNode.replaceChild(t, e) }, a.prototype.scriptLoadHandler = function(t, e) { function n() { t = t.onload = t.onreadystatechange = t.onerror = null } function i() { n(), e() } function r(t) { n(), a(t), e() } var a = this.options.error; o(t, { onload: function() { i() }, onreadystatechange: function() { /^(loaded|complete)$/.test(t.readyState) && i() }, onerror: function() { r({ message: "remote script failed " + t.src }) } }) }, a.prototype.shouldRelease = function(t) { var e = /^script$/i.test(t.nodeName); return !e || !!(this.options.releaseAsync && t.src && t.hasAttribute("async")) }, a }(); l.postscribe = function() { function e() { var t, e = u.shift(); e && (t = g(e), t.afterDequeue(), e.stream = i.apply(null, e), t.afterStreamStart()) } function i(n, i, a) { function u(t) { t = a.beforeWrite(t), p.write(t), a.afterWrite(t) } p = new m(n, a), p.id = c++, p.name = a.name || p.id, r.streams[p.name] = p; var f = n.ownerDocument, l = { close: f.close, open: f.open, write: f.write, writeln: f.writeln }; o(f, { close: t, open: t, write: function() { return u(s(arguments).join("")) }, writeln: function() { return u(s(arguments).join("") + "\n") } }); var d = p.win.onerror || t; return p.win.onerror = function(t, e, n) { a.error({ msg: t + " - " + e + ":" + n }), d.apply(p.win, arguments) }, p.write(i, function() { o(f, l), p.win.onerror = d, a.done(), p = null, e() }), p } function r(i, r, o) { n(o) && (o = { done: o }), o = a(o, f), i = /^#/.test(i) ? l.document.getElementById(i.substr(1)) : i.jquery ? i[0] : i; var s = [i, r, o]; return i.postscribe = { cancel: function() { s.stream ? s.stream.abort() : s[1] = t } }, o.beforeEnqueue(s), o.highPriority ? u.unshift(s) : u.push(s), p || e(), i.postscribe } var c = 0, u = [], p = null; return o(r, { streams: {}, queue: u, WriteStream: m }) }() } }(); var isArray = function(t) { return t instanceof Array }, isObject = function(t) { return null !== t && "object" == typeof t }, each = function(t, e) { if ("array" == typeof t) for (var n = 0; n < t.length; n++) e(n, t[n]); else for (var i in t) t.hasOwnProperty(i) && e(i, t[i]) }, clone = function(t) { var e; if (null == t || "object" != typeof t) return t; if (t instanceof Date) return e = new Date, e.setTime(t.getTime()), e; if (t instanceof Array) { e = []; for (var n = 0, i = t.length; n < i; n++) e[n] = clone(t[n]); return e } if (isDomObject(t)) return t; if (t instanceof Object) { e = {}; for (var r in t) t.hasOwnProperty(r) && (e[r] = clone(t[r])); return e } throw new Error("Unable to copy obj! Its type isn't supported.") }, isDomObject = function(t) { try { return t instanceof HTMLElement } catch (e) { return "object" == typeof t && 1 === t.nodeType && "object" == typeof t.style && "object" == typeof t.ownerDocument } }, merge = function() { var t = []; Array.prototype.push.apply(t, arguments); var e = !1; "boolean" == typeof t[0] && (e = t[0], t.shift()); for (var n = t[0], i = 1; i < t.length; i++) each(t[i], function(t, i) { if (isArray(n[t]) && isArray(i)) for (var r = 0; r < i.length; r++) n[t].indexOf(i[r]) === -1 && n[t].push(clone(i[r])); e && isObject(n[t]) && isObject(i) ? n[t] = merge(!0, {}, n[t], i) : n[t] = clone(i) }); return n }, addClass = function(t, e) { t.classList.contains(e) || t.classList.add(e) }, removeClass = function(t, e) { t.classList.contains(e) && t.classList.remove(e) }, getSiblings = function(t) { var e = []; for (t.parentNode.firstChild; sibling; sibling = sibling.nextSibling) 1 === sibling.nodeType && sibling !== t && e.push(sibling); return e }, addUrlParameter = function(t, e) { var n = []; return each(e, function(t, e) { n.push(t + "=" + encodeURIComponent(e)) }), n.length ? t + (t.indexOf("?") === -1 ? "?" : "&") + n.join("&") : t }, evalCode = function(node) { var childNodes = node.childNodes; "undefined" != typeof childNodes && each(childNodes, function(index, childNode) { childNode.nodeName && "script" === childNode.nodeName.toLowerCase() ? eval(childNode.innerText) : evalCode(childNode) }) }; window.AdManager = new function() { var t = this; this.version = "1.0.0", this.config = { requestType: "javascript", async: !1, yieldlab: !0, conditions: { mobile: !1 } }, this.isMobile = function() { return /(ipad|iphone|ios|android|windows rt|windows nt 6\.[2,3]; arm)/i.test(navigator.userAgent) }(), this.counter = 0, this.init = function(e) { t.setConfig(e), location.search.toLowerCase().indexOf("admanager=debug") !== -1 && window.opener && (window.addEventListener("message", function(t) { var e; try { e = JSON.parse(t.data) } catch (t) { e = t.data } switch (e.type) { case "AdCreator:showPreview": AdManager.addHtmlToPosition(e.position, e.data) } }), document.addEventListener("DOMContentLoaded", function() { window.opener.postMessage("AdManager:ready", "*") })) }, this.setConfig = function(e) { each(e, function(e, n) { t.config[e] = n }) }, this.positions = {}, this.createPosition = function(e) { if (this.counter++, !this.config.serverUrl) return console.error("Kein serverUrl angegeben."), void console.error("AdManager.init({ serverUrl: '//adserver.de' });"); 1 === this.counter && (this.config.yieldlab && t.initYieldlab(), this.includeScript("//imagesrv.adition.com/js/adition.js")); var n = t.getPosition(e); if (!t.hasPrioad() || n.prio || t.prioadRequested) { if ("undefined" != typeof n.conditions && t.checkConditions(n), !n.disabled) { var i = t.createPositionUrl(n), r = t.getPositionContainer(n); "javascript" === n.requestType ? t.includeScript(i, { target: r, async: n.async, callback: function() { if ("function" == typeof n.callback && n.callback(), n.prio) { t.prioadRequested = !0; for (var e = 0; e < t.stack.length; e++) t.createPosition(t.stack[e]) } } }) : console.error("Unknown request type: " + n.requestType) } } else t.stack.push(e) }, this.initYieldlab = function() { this.config.yieldlab = !1; var e = []; var consentCookiePrefixes = ["euconsent-v2", "__cmpconsent", "TCF_COOKIE"]; // Datenschutzcookie Yieldlab var PFTC2String = ""; for (var i = 0; i < consentCookiePrefixes.length; i++) { var cookiePrefix = consentCookiePrefixes[i]; var cookiePattern = new RegExp('(^|;)\\s*' + cookiePrefix + '.*?\\s*=\\s*([^;]+)'); var cookieMatch = document.cookie.match(cookiePattern); if (cookieMatch) { PFTC2String = cookieMatch.pop(); break; // Stop the loop if a valid cookie is found } } // Jetzt ist der TCF String im PFTC2String gespeichert console.log("TCF String:", PFTC2String); window.adition_yieldlab = window.adition_yieldlab || {}, each(this.positions, function(n, i) { i.hasOwnProperty("yieldlab_id") && i.yieldlab_id && e.push(i.yieldlab_id); var r = t.getPositionParam(n, "wp_id", !1); r && (window.adition_yieldlab[r] = { adslotId: i.yieldlab_id, checkId: i.yieldlab_check }) }), e.length && this.includeScript("//ad.yieldlab.net/yp/" + e.join(",")+"?ts="+Date.now()+"&consent="+PFTC2String) }, this.includeScript = function(t, e) { var n = merge({ target: !1, async: !1, callback: !1 }, e); if ("loading" !== document.readyState || n.asyn) if (n.target && "function" == typeof postscribe) postscribe(n.target, ''); else { var i = n.target ? n.target : document.querySelector("head"); if (i) { var r = document.createElement("script"); r.src = t, "function" == typeof n.callback && (r.onload = n.callback), i.appendChild(r) } } else document.write(''), "function" == typeof n.callback && n.callback() }, this.getPositionContainer = function(t) { return document.querySelector('[data-admanager-position="' + t.name + '"]') }, this.hasPrioad = function() { return each(t.positions, function(t, e) { if (e.prio) return !0 }), !1 }, this.getPrioadPositonName = function() { var e = null; return each(t.positions, function(t, n) { if (n.prio) return e = !0, !0 }), e }, this.prioadRequested = !1, this.stack = [], this.createPositionUrl = function(t) { return this.config.serverUrl + this.createParamString(t) }, this.createParamString = function(t) { var e = []; return t.params && each(t.params, function(n, i) { e.push(n + "=" + encodeURIComponent("function" == typeof i ? i(t) : i)) }), e.length ? "?" + e.join("&") : "" }, this.getPosition = function(e) { return "undefined" == typeof t.positions[e] && (t.positions[e] = merge(!0, {}, t.config)), "undefined" == typeof t.positions[e].name && (t.positions[e].name = e), t.positions[e] }, this.getPositionParam = function(t, e, n) { var i = this.getPosition(t); return "undefined" != typeof i.params && "undefined" != typeof i.params[e] ? i.params[e] : n }, this.setConditions = function(e) { each(e, function(e, n) { t.setPositionConditions(e, n) }) }, this.setPositionConditions = function(e, n) { each(n, function(n, i) { t.setPositionCondition(e, n, i) }) }, this.setPositionCondition = function(e, n, i) { var r = t.getPosition(e); "undefined" == typeof r.conditions && (r.conditions = {}), r.conditions[n] = i }, this.checkConditions = function(e) { each(e.conditions, function(n, i) { switch (n) { case "viewportWidthGt": window.innerWidth <= i && t.setPositionConfig(e.name, "disabled", !0); break; case "viewportWidthLt": window.innerWidth >= i && t.setPositionConfig(e.name, "disabled", !0); break; case "viewportHeightGt": window.innerHeight <= i && t.setPositionConfig(e.name, "disabled", !0); break; case "viewportHeightLt": window.innerHeight >= i && t.setPositionConfig(e.name, "disabled", !0); break; case "mobile": t.isMobile && !i && t.setPositionConfig(e.name, "disabled", !0); break; case "desktop": t.isMobile || i || t.setPositionConfig(e.name, "disabled", !0) } }) }, this.setParams = function(e) { each(e, function(e, n) { t.setPositionParams(e, n) }) }, this.setPositionParams = function(e, n) { each(n, function(n, i) { t.setPositionParam(e, n, i) }) }, this.setPositionParam = function(e, n, i) { var r = t.getPosition(e); "undefined" == typeof r.params && (r.params = {}), r.params[n] = i }, this.setConfigs = function(e) { each(e, function(e, n) { t.setPositionConfigs(e, n) }) }, this.setPositionConfigs = function(e, n) { each(n, function(n, i) { t.setPositionConfig(e, n, i) }) }, this.setPositionConfig = function(e, n, i) { var r = t.getPosition(e); r[n] = i }, this.disablePositon = function(e) { t.setPositionConfig(e, "disabled", !0) }, this.enablePositon = function(e) { t.setPositionConfig(e, "disabled", !1) }, this.addHtmlToPosition = function(e, n) { var i = t.getPosition(e), r = t.getPositionContainer(i); r && t.addHtmlToContainer(r, n) }, this.addHtmlToContainer = function(t, e) { t.innerHTML = e, evalCode(t) } }, AdManager.init({ serverUrl: "//adfarm1.adition.com/js", params: { wp_id: function(t) { return t.name }, gdpr: function() { EUUser = 1; return EUUser }, gdpr_consent: function() { var consentCookiePrefixes = ["euconsent-v2", "__cmpconsent", "TCF_COOKIE"]; // Datenschutzcookie Adition var PFTC2String = ""; for (var i = 0; i < consentCookiePrefixes.length; i++) { var cookiePrefix = consentCookiePrefixes[i]; var cookiePattern = new RegExp('(^|;)\\s*' + cookiePrefix + '.*?\\s*=\\s*([^;]+)'); var cookieMatch = document.cookie.match(cookiePattern); if (cookieMatch) { PFTC2String = cookieMatch.pop(); break; // Stop the loop if a valid cookie is found } } // Jetzt ist der TCF String im PFTC2String gespeichert console.log("TCF String:", PFTC2String); return PFTC2String; }, ts: function() { return (new Date).getTime() } } }), AdManager.setProfileParams = function(t) { each(t, function(t, e) { each(e, function(e, n) { AdManager.setPositionProfileParam(t, e, n) }) }) }, AdManager.setPositionProfileParams = function(t, e) { each(e, function(e, n) { AdManager.setPositionProfileParam(t, e, n) }) }, AdManager.setPositionProfileParam = function(t, e, n) { AdManager.setPositionParam(t, "prf[" + e + "]", n) } }();