(function () { 'use strict'; var _config = window.disqus_polls_config; window.disqus_polls_config = function () { if (_config) { try { _config.call(this); } catch (err) { console.error('There was a problem with the Disqus Polls configuration.', err); } } this.server_side = { 'bin': 'embed:promoted_discovery:dynamic:network_default_hidden:fallthrough', 'disable_ads_ios': '', 'lazyload_viewports': '2', 'forum': { 'id': 11, 'disable_disqus_branding_on_polls': false }, 'service': 'dynamic', 'variant': 'fallthrough', 'sourceless_iframe': '1', 'disable_ads_android': '', 'forum_id': '11', 'sandbox_ads': '1', 'under_gdpr': '1', 'experiment': 'network_default_hidden', 'default_placement_url': '', 't': '1734619339', 'under_ccpa': '', 'poll_ad_placement_url': '//tempest.services.disqus.com/ads-iframe/aniview/?position=poll&shortname=disqus&experiment=network_default_hidden&variant=fallthrough&service=dynamic', 'can_disable_ads': '1', 'is_private': '1', 'skeleton_frame_enabled': '' }; }; }) (); (function () { 'use strict'; function O(e, t) { return Object.prototype.hasOwnProperty.call(e, t) } function C(e, t) { var r = e.length, i = Array.prototype.forEach; if (isNaN(r)) for (var n in e) O(e, n) && t(e[n], n, e); else if (i) i.call(e, t); else for (var o = 0; o < r; o++) t(e[o], o, e) } function me(e) { var t = [ ]; return C(e, function (r, i) { r !== void 0 && t.push(encodeURIComponent(i) + (r === null ? '' : '=' + encodeURIComponent(r))) }), t.join('&') } function P(e, t, r) { if (t && (e.indexOf('?') === - 1 ? e += '?' : e.charAt(e.length - 1) !== '&' && (e += '&'), e += me(t)), r) { var i = { }; return i[new Date().getTime()] = null, P(e, i) } var n = e.length; return e.charAt(n - 1) === '&' ? e.slice(0, n - 1) : e } var $ = window.document, Ze = $.head || $.getElementsByTagName('head') [0] || $.body; function Q(e, t, r, i) { var n = $.createElement('script'); n.src = P(e, t, r), n.async = !0, n.charset = 'UTF-8', n.onload = i, Ze.appendChild(n) } var et = 100, X = window.document; function tt() { var e = X.createElement('div'); return e.setAttribute('class', 'pub_300x250 pub_300x250m pub_728x90 text-ad textAd text_ad text_ads text-ads text-ad-links ad-text adSense adBlock adContent adBanner'), e.setAttribute('style', 'width: 1px !important; height: 1px !important; position: absolute !important; left: -10000px !important; top: -1000px !important;'), e } function rt(e) { if (e.offsetParent === null || e.offsetHeight === 0 || e.offsetLeft === 0 || e.offsetTop === 0 || e.offsetWidth === 0 || e.clientHeight === 0 || e.clientWidth === 0) return !0; if (window.getComputedStyle !== void 0) { var t = window.getComputedStyle(e, null); if (t && (t.getPropertyValue('display') === 'none' || t.getPropertyValue('visibility') === 'hidden')) return !0 } return !1 } function we(e) { var t = tt(); X.body.appendChild(t), setTimeout(function () { var r = rt(t); X.body.removeChild(t), e(r) }, et) } function it(e) { try { return e.self !== e.top } catch { return !0 } } function c(e) { return C(Array.prototype.slice.call(arguments, 1), function (t) { for (var r in t) O(t, r) && (e[r] = t[r]) }), e } var nt = window.location.protocol === 'https:', Z = { root: 'https://polls.services.disqus.com', shortener: 'http://disq.us', logger: 'https://x.disq.us', jester: '//referrer.disqus.com/juggler', glitter: void 0, login: 'https://disqus.com/next/login/', dotcomLogin: 'https://disqus.com/profile/login/', api: void 0, logout: void 0, authorize: 'https://disqus.com/api/oauth/2.0/authorize/' }; nt && (Z = c(Z, { logout: void 0 })); var ee = Z.jester; function ot(e) { var t = e.split('.'), r = t.length > 2 ? t[t.length - 2] : ''; return r.match(/^[0-9a-f]{32}$/i) && r } function st(e) { new window.Image().src = P(ee + '/stat.gif', { event: e }) } function at(e) { new window.Image().src = P(ee + '/event.gif', e) } function lt(e) { var t = new window.URLSearchParams; C(e, function (i, n) { i !== void 0 && t.append(n, i) }); var r = new window.XMLHttpRequest; r.open('POST', ee + '/event.json', !0), r.withCredentials = !0, r.send(t) } const g = { getLoaderVersionFromUrl: ot, logStat: st, reportJester: at, reportJesterPOST: lt }; function dt(e) { e = e || { }; var t = e.Math || window.Math, r = e.Date || window.Date; try { var i = new r().getTimezoneOffset(), n = 1, o = window.screen; o && o.availWidth ? n = o.availWidth * o.availHeight + o.colorDepth : o && o.width && (n = o.width * o.height); var s = window.document.documentElement, a = s.clientWidth * s.clientHeight; return t.abs(i * 17 + n * 25 - a) } catch { return 1 } } const ut = { get: dt }; function ct(e) { e = e || { }; var t = e.Uint32Array || window.Uint32Array, r = e.crypto || window.crypto, i = e.Math || window.Math; try { var n = new t(1); return r.getRandomValues(n), n[0] } catch { return i.floor(i.random() * 1000000000) } } function ft() { var e = window.performance, t = e && e.timing; if (!t) return 100000; var r = t.domainLookupEnd - t.domainLookupStart, i = t.connectEnd - t.connectStart, n = t.responseStart - t.navigationStart; return r * 11 + i * 13 + n * 17 } function ht(e) { e = e || { }; var t = e.Math || window.Math, r = Number(new Date().getTime().toString().substring(3)), i = t.abs(r + ft() - ut.get()).toString(32); return i += ct(e).toString(32), i } const ye = { generate: ht }; var te = window.document, R = te.createElement('iframe'); R.style.display = 'none'; function _(e, t) { var r = t && t[e] || null; try { return R.parentNode !== te.body && te.body.appendChild(R), R.contentWindow[e] || r } catch { return r } } const gt = { isIE: function () { return !!window.document.documentMode }, isSafari: function () { var e = window.navigator.userAgent.toLowerCase(); return e.indexOf('safari') > - 1 && e.indexOf('chrome') === - 1 }, isFirefox: function () { var e = window.navigator.userAgent.toLowerCase(); return e.indexOf('firefox') > - 1 && e.indexOf('chrome') === - 1 }, isChrome: function () { var e = window.navigator.userAgent.toLowerCase(); return e.indexOf('crios') > - 1 || !!window.chrome && window.navigator.vendor === 'Google Inc.' && window.opr === void 0 && e.indexOf('edge') === - 1 }, isEdge: function () { var e = window.navigator.userAgent.toLowerCase(); return e.indexOf('edge') > - 1 }, isOpera: function () { var e = window.navigator.userAgent.toLowerCase(); return e.indexOf('opera') > - 1 || e.indexOf('opr') > - 1 }, isCrawler: function (e) { e === void 0 && (e = window); var t = e.navigator.userAgent; return /bot|crawl|slurp|spider|facebookexternalhit|embedly|feedly|pinterest/i.test(t) } }; function re(e) { return Object.prototype.toString.call(e) === '[object String]' } let ie; window.getComputedStyle ? ie = function (e, t) { try { return window.document.defaultView.getComputedStyle(e, null).getPropertyValue(t) } catch { return null } } : ie = function (e, t, r) { return e.currentStyle[t] || e.currentStyle[r] }; const T = ie; function vt(e) { return e.replace(/\s+/g, '').toLowerCase() } function be(e, t, r) { var i = { }; re(t) ? i[t] = r : i = t; var n = c({ }, i); C(n, function (s, a) { var u = vt(a); u !== a && (delete n[a], n[u] = s), s === null && (n[u] = ''), s === void 0 && delete n[u] }); var o = e.style; C(n, function (s, a) { o.setProperty(a, String(s), 'important') }) } function Se(e) { return e.replace(/\s+/g, '').toLowerCase() } function pt(e) { return e = e.replace(/^#([a-f0-9])([a-f0-9])([a-f0-9])$/, '#$1$1$2$2$3$3'), e = e.slice(1), { red: parseInt(e.slice(0, 2), 16), green: parseInt(e.slice(2, 4), 16), blue: parseInt(e.slice(4, 6), 16) } } function _e(e) { var t = e.match(/^rgb\((\d+),(\d+),(\d+)\)$/); return { red: parseInt(t[1], 10), green: parseInt(t[2], 10), blue: parseInt(t[3], 10) } } function mt(e) { var t = e.match(/^rgba\((\d+),(\d+),(\d+),([\d.]+)\)$/); return { red: parseInt(t[1], 10), green: parseInt(t[2], 10), blue: parseInt(t[3], 10), alpha: parseFloat(t[4]) } } function Ee(e, t, r, i) { return t = window.document.createElement(t), be(t, { visibility: 'hidden', color: r }), e.appendChild(t), r = i(t), e.removeChild(t), r } function wt(e, t) { t = t || { }; var r = t.container || window.document.body; return window.getComputedStyle ? (e = Ee(r, 'span', e, function (i) { return window.getComputedStyle(i, null).getPropertyValue('color') }), _e(Se(e))) : (e = Ee(r, 'textarea', e, function (i) { return i.createTextRange().queryCommandValue('ForeColor') }), { red: e & 255, blue: e >>> 16, green: (e & 65280) >>> 8 }) } function ne(e, t) { e = Se(e); var r; if (e === 'transparent') return { red: 0, green: 0, blue: 0, alpha: 0 }; if (e.charAt(0) === '#') r = pt; else if (e.slice(0, 5) === 'rgba(') r = mt; else if (e.slice(0, 4) === 'rgb(') r = _e; else if (/^[a-z]+$/.test(e)) r = wt; else throw new Error('parseColor received unparseable color: ' + e); return r(e, t) } var S = window.document; function Ae(e) { for (var t = [ /(https?:)?\/\/(www\.)?disqus\.com\/forums\/([\w_-]+)/i, /(https?:)?\/\/(www\.)?([\w_-]+)\.disqus\.com/i, /(https?:)?\/\/(www\.)?dev\.disqus\.org\/forums\/([\w_-]+)/i, /(https?:)?\/\/(www\.)?([\w_-]+)\.dev\.disqus\.org/i ], r = 0; r < t.length; r++) { var i = e.match(t[r]); if (i && i.length && i.length === 4) return i[3] } return null } function yt(e, t, r) { var i = e.querySelector('script[src*="disqus"][src$="' + t + '"]'); if (i) { var n = i.getAttribute ? i.getAttribute('src') : i.src; r = r || Ae; var o = r(n); return o ? o.toLowerCase() : null } return null } function xe(e) { return e.toLowerCase().replace(/^\s+|\s+$/g, '').replace(/['"]/g, '') } function bt(e) { var t = 0, r = 1, i = 2; if (!(_('atob') && _('requestAnimationFrame'))) return r; try { e.postMessage('ping', '*') } catch { return i } return t } function Ce(e, t, r) { r = r || t; var i = T(e, t, r); return !i || /color/i.test(t) && ne(i).alpha === 0 ? e && Ce(e.parentNode, t, r) || i : i || null } function q(e, t, r, i) { re(t) && (t = S.createElement(t)); var n = null; return t.style.visibility = 'hidden', e.appendChild(t), n = Ce(t, r, i), e.removeChild(t), n } function St(e) { for (var t = q(e, 'span', 'font-family', 'fontFamily'), r = t.split(','), i = { courier: 1, times: 1, 'times new roman': 1, georgia: 1, palatino: 1, serif: 1 }, n, o = 0; o < r.length; o++) if (n = xe(r[o]), i.hasOwnProperty(n)) return !0; return !1 } function Ie(e) { var t = S.createElement('a'); return t.href = Number(new Date), ne(q(e, t, 'color'), { container: e }) } function oe(e) { var t = e.red, r = e.green, i = e.blue; if (e.hasOwnProperty('alpha')) { var n = e.alpha, o = function (s) { return Math.round(s * n + 255 * (1 - n)) }; t = o(t), r = o(r), i = o(i) } return (t * 299 + r * 587 + i * 114) / 1000 } var _t = function () { var e, t, r = function () { return !1 }; if ('hidden' in S) e = 'hidden', t = 'visibilitychange'; else if ('webkitHidden' in S) e = 'webkitHidden', t = 'webkitvisibilitychange'; else return { isHidden: r, listen: r, stopListening: r }; return { isHidden: function () { return S[e] }, listen: function (i) { return S.addEventListener(t, i) }, stopListening: function (i) { return S.removeEventListener(t, i) } } }(), Et = function () { var e = S.createElement('div'); e.style.visibility = 'hidden', e.style.width = '100px', e.style.msOverflowStyle = 'scrollbar', S.body.appendChild(e); var t = e.offsetWidth; e.style.overflow = 'scroll'; var r = S.createElement('div'); r.style.width = '100%', e.appendChild(r); var i = r.offsetWidth; return e.parentNode.removeChild(e), t - i }, At = { getItem: function (e) { try { return window.localStorage.getItem(e) } catch { } }, setItem: function (e, t) { try { return window.localStorage.setItem(e, t) } catch { } } }, Le = 1, xt = function (e) { if (e.nodeType === Le) { var t = T(e, 'max-height', 'maxHeight'), r = T(e, 'overflow-y', 'overflowY'); return t && t !== 'none' && r && r !== 'visible' } }, Ct = 4, It = function (e) { if (e.nodeType === Le) return e.scrollHeight - e.clientHeight > Ct }, Lt = function () { if (S.querySelector) { var e = S.querySelector('link[rel=canonical]'); if (e) return e.href } }; function Ot(e) { var t = q(e, 'span', 'background-color', 'backgroundColor'), r = ne(t, { container: e }); return r.alpha === 0 ? 'light' : oe(r) < 140 ? 'dark' : 'light' } function Tt(e) { var t = Ie(e); return t.alpha === 0 ? 'light' : oe(t) < 140 ? 'dark' : 'light' } const h = { MAX_Z_INDEX: 2147483647, getShortnameFromUrl: Ae, getForum: yt, getContrastYIQ: oe, getColorScheme: Ot, getElementStyle: q, getAnchorColor: Ie, getAnchorColorScheme: Tt, normalizeFontValue: xe, isSerif: St, getBrowserSupport: bt, pageVisibility: _t, getScrollbarWidth: Et, browser: gt, storage: At, appearsToHideContent: xt, hasOverflow: It, getCanonicalUrl: Lt }; var W = function (e, t) { this.win = e, this.configurator = t, this.config = { forum: void 0, page: { language: void 0, api_key: void 0, remote_auth_s3: void 0 }, pollId: void 0, server_side: { service: 'static', experiment: 'default', variant: 'control', default_placement_url: void 0, poll_ad_placement_url: void 0, can_disable_ads: void 0, sourceless_iframe: void 0, sandbox_ads: void 0, disable_ads_ios: void 0, disable_ads_android: void 0, forum_id: void 0, is_private: void 0, forum: { id: void 0, disable_disqus_branding_on_polls: void 0, polls_enabled: void 0 }, lazyload_viewports: void 0, skeleton_frame_enabled: void 0, forceSwitch: void 0, previewVersion: void 0 }, disable_ads: void 0, sso: { } } }; W.DISQUS_POLLS_GLOBALS = [ 'shortname' ]; var se = W.prototype; se.runConfigurator = function () { var e = this.configurator || this.win.disqus_polls_config; if (typeof e == 'function') try { e.call(this.config) } catch { } }, se.getValuesFromGlobals = function (e) { var t = this.win, r = this.config, i = r.page, n; C(W.DISQUS_POLLS_GLOBALS, function (o) { var s = t['disqus_polls_' + o]; typeof s < 'u' && (i[o] = s) }), r.pollId = e, this.runConfigurator(), r.forum || (n = i.shortname, r.forum = n ? n.toLowerCase() : h.getForum(t.document, 'polls.js')) }, se.toJSON = function (e, t) { var r = this.win, i = this.config, n = i.page, o = document.getElementById(t), s, a = h.getBrowserSupport(r); return this.getValuesFromGlobals(e), i.server_side.pollAdPlacementUrl && (s = ye.generate({ Math: _('Math', r), crypto: _('crypto', r), Uint32Array: _('Uint32Array', r), Date: _('Date', r) })), { impressionId: s || null, container: o, forum: i.forum, language: i.language, pollId: i.pollId, typeface: h.isSerif(o) ? 'serif' : 'sans-serif', anchorColor: h.getAnchorColor(o), colorScheme: h.getColorScheme(o), anchorColorScheme: h.getAnchorColorScheme(o), canonicalUrl: h.getCanonicalUrl(), url: n.url || r.location.href.replace(/#.*$/, ''), integration: n.integration, forumId: i.server_side.forum_id, disableAds: i.disable_ads, defaultPlacementUrl: i.server_side.default_placement_url, pollAdPlacementUrl: i.server_side.poll_ad_placement_url, sandboxAds: i.server_side.sandbox_ads, canDisableAds: i.server_side.can_disable_ads, sourcelessIframe: !!i.server_side.sourceless_iframe, disableAdsIos: !!i.server_side.disable_ads_ios, disableAdsAndroid: !!i.server_side.disable_ads_android, apiKey: n.api_key, remoteAuthS3: n.remote_auth_s3, sso: i.sso, unsupported: a, degraded: !!a || h.browser.isCrawler(), callbacks: i.callbacks, isPrivate: i.server_side.is_private, forumDetails: { id: i.server_side.forum && i.server_side.forum.id, disableDisqusBranding: !!(i.server_side.forum && i.server_side.forum.disable_disqus_branding_on_polls) }, lazyloadViewports: i.server_side.lazyload_viewports, skeletonFrameEnabled: !!i.server_side.skeleton_frame_enabled } }; function kt(e) { return e = e || window, /Mobile|iP(hone|od|ad)|Android|BlackBerry|IEMobile|Kindle|NetFront|Silk-Accelerated|(hpw|web)OS|Fennec|Minimo|Opera M(obi|ini)|Blazer|Dolfin|Dolphin|Skyfire|Zune/i.test(e.navigator.userAgent || e.navigator.vendor || e.opera) } function Oe(e) { return !!(e && (e.offsetWidth || e.offsetHeight || e.getClientRects().length) && T(e, 'visibility') !== 'hidden') } function Pt(e, t, r) { var i = function () { var n = e(); if (!n) return void setTimeout(i, r); t(n) }; i() } var D = window.document, Te = D.createElement('a'); function Nt(e) { return D.getElementById(e) || D.body || D.documentElement } function Bt(e) { return Te.href = e, Te.hostname } function Ht(e, t) { t = t || D.documentElement; for (var r = e, i = 0, n = 0; r && r !== t; ) i += r.offsetLeft, n += r.offsetTop, r = r.offsetParent; return { top: n, left: i, height: e.offsetHeight, width: e.offsetWidth } } const N = { getContainer: Nt, getHost: Bt, getOffset: Ht }; var ae = window.document.body; function Dt() { var e = ae.offsetHeight, t = parseInt(T(ae, 'margin-top', 'marginTop'), 10); t && (e += t); var r = parseInt(T(ae, 'margin-bottom', 'marginBottom'), 10); return r && (e += r), e } var ke = 'default', Pe = { polls: 'https://polls.services.disqus.com/poll' }, Ne = function (e) { return 'https://' + e.replace(/^\s*(\w+:)?\/\//, '') }, Vt = function (e, t, r, i) { var n = Pe[e]; if (!n) throw new Error('Unknown app: ' + e); var o = Ne(n), s = c({ base: ke }, t || { }), a = r ? '#' + me(r) : ''; return P(o, s) + a }; const Be = { BASE: ke, apps: Pe, get: Vt, ensureHTTPSProtocol: Ne }; var Ut = 10000, He = Math.floor(Math.random() * Ut + 1); function B(e) { He += 1; var t = String(He); return e ? e + t : t } var Mt = function (e) { var t = !1, r; return function () { return t || (t = !0, r = e.apply(this, arguments), e = null), r } }, Ft = Object.keys || function (e) { if (e !== Object(e)) throw new TypeError('Invalid object'); var t = [ ]; for (var r in e) O(e, r) && (t[t.length] = r); return t }, $t = [ ].slice, p = { on: function (e, t, r) { if (!z(this, 'on', e, [ t, r ]) || !t) return this; this._events = this._events || { }; var i = this._events[e] || (this._events[e] = [ ]); return i.push({ callback: t, context: r, ctx: r || this }), this }, once: function (e, t, r) { if (!z(this, 'once', e, [ t, r ]) || !t) return this; var i = this, n = Mt(function () { i.off(e, n), t.apply(this, arguments) }); return n._callback = t, this.on(e, n, r) }, off: function (e, t, r) { var i, n, o, s, a, u, f, L; if (!this._events || !z(this, 'off', e, [ t, r ])) return this; if (!e && !t && !r) return this._events = { }, this; for (s = e ? [ e ] : Ft(this._events), a = 0, u = s.length; a < u; a++) if (e = s[a], o = this._events[e]) { if (this._events[e] = i = [ ], t || r) for (f = 0, L = o.length; f < L; f++) n = o[f], (r && r !== n.context || t && t !== n.callback && t !== n.callback._callback) && i.push(n); i.length || delete this._events[e] } return this }, trigger: function (e) { if (!this._events) return this; var t = $t.call(arguments, 1); if (!z(this, 'trigger', e, t)) return this; var r = this._events[e], i = this._events.all; return r && Ve(r, t), i && Ve(i, arguments), this }, stopListening: function (e, t, r) { var i = this._listeners; if (!i) return this; var n = !t && !r; typeof t == 'object' && (r = this), e && ((i = { }) [e._listenerId] = e); for (var o in i) i[o].off(t, r, this), n && delete this._listeners[o]; return this } }, De = /\s+/, z = function (e, t, r, i) { if (!r) return !0; if (typeof r == 'object') { for (var n in r) e[t].apply(e, [ n, r[n] ].concat(i)); return !1 } if (De.test(r)) { for (var o = r.split(De), s = 0, a = o.length; s < a; s++) e[t].apply(e, [ o[s] ].concat(i)); return !1 } return !0 }, Ve = function (e, t) { var r, i, n = e.length, o = t[0], s = t[1], a = t[2]; switch (t.length) { case 0: for (i = 0; i < n; i++) (r = e[i]).callback.call(r.ctx); return; case 1: for (i = 0; i < n; i++) (r = e[i]).callback.call(r.ctx, o); return; case 2: for (i = 0; i < n; i++) (r = e[i]).callback.call(r.ctx, o, s); return; case 3: for (i = 0; i < n; i++) (r = e[i]).callback.call(r.ctx, o, s, a); return; default: for (i = 0; i < n; i++) (r = e[i]).callback.apply(r.ctx, t) } }, Rt = { listenTo: 'on', listenToOnce: 'once' }; C(Rt, function (e, t) { p[t] = function (r, i, n) { var o = this._listeners || (this._listeners = { }), s = r._listenerId || (r._listenerId = B('l')); return o[s] = r, typeof i == 'object' && (n = this), r[e](i, n, this), this } }), p.bind = p.on, p.unbind = p.off; const V = function (e) { this.uid = B('dsq-poll'), this.settings = e || { }; var t = [ ], r = this.constructor.prototype; do t.unshift(r), r = r.constructor.__super__; while (r); for (var i = 0, n = t.length; i < n; i++) r = t[i], O(r, 'events') && this.on(r.events, this), O(r, 'onceEvents') && this.once(r.onceEvents, this) }; c(V.prototype, p), V.prototype.destroy = function () { this.off(), this.stopListening() }, V.extend = function (e, t) { var r = this, i; e && O(e, 'constructor') ? i = e.constructor : i = function () { return r.apply(this, arguments) }, c(i, r, t); var n = function () { this.constructor = i }; return n.prototype = r.prototype, i.prototype = new n, e && c(i.prototype, e), i.__super__ = r.prototype, i }; var d = function (e) { e = e || { }, this.state = d.INIT, this.uid = e.uid || B('dsq-frame'), this.origin = e.origin, e.useSourcelessFrame ? this.host = N.getHost(window.location.href) : this.host = N.getHost(this.origin), this.target = e.target, this.sandbox = e.sandbox, this.window = null, d.windows[this.uid] = this, this.on('ready', function () { this.state = d.READY }, this), this.on('die', function () { this.state = d.KILLED }, this) }; c(d, { INIT: 0, READY: 1, KILLED: 2, windows: { }, postMessage: function (e, t, r) { return e.postMessage(t, r) } }), c(d.prototype, p), d.prototype.requiresWindow = function (e) { var t = this; return function () { var r = Array.prototype.slice.call(arguments), i = function () { var n = t.window; n ? e.apply(t, r) : setTimeout(i, 500) }; t.isReady() ? i() : t.on('ready', i) } }, d.prototype.sendMessage = function (e, t) { var r = JSON.stringify({ scope: 'client', name: e, data: t }); this.requiresWindow(function (i) { d.postMessage(this.window, i, this.origin) }) (r) }, d.prototype.hide = function () { }, d.prototype.show = function () { }, d.prototype.url = function () { return this.target }, d.prototype.destroy = function () { this.state = d.KILLED, this.off() }, d.prototype.isReady = function () { return this.state === d.READY }, d.prototype.isKilled = function () { return this.state === d.KILLED }; var qt = window.document, m = function (e) { d.call(this, e), this.styles = e.styles || { }, this.tabIndex = e.tabIndex || 0, this.title = e.title || 'Disqus Polls', this.sandbox = e.sandbox, this.container = e.container, this.elem = null }; c(m.prototype, d.prototype), m.prototype.load = function () { var e = this.elem = qt.createElement('iframe'); e.setAttribute('id', this.uid), e.setAttribute('name', this.uid), e.setAttribute('allowTransparency', 'true'), e.setAttribute('frameBorder', '0'), e.setAttribute('scrolling', 'no'), this.role && e.setAttribute('role', this.role), e.setAttribute('tabindex', this.tabIndex), e.setAttribute('title', this.title), typeof this.sandbox == 'string' && e.setAttribute('sandbox', this.sandbox), this.setInlineStyle(this.styles) }, m.prototype.getOffset = function (e) { return N.getOffset(this.elem, e) }, m.prototype.setInlineStyle = function (e, t) { return be(this.elem, e, t) }, m.prototype.removeInlineStyle = function (e) { var t = this.elem.style; if ('removeProperty' in t) return void t.removeProperty(e); t[e] = '' }, m.prototype.hide = function () { this.setInlineStyle('display', 'none') }, m.prototype.show = function () { this.removeInlineStyle('display') }, m.prototype.destroy = function () { return this.elem && this.elem.parentNode && (this.elem.parentNode.removeChild(this.elem), this.elem = null), d.prototype.destroy.call(this) }; var K = window, le; K.Object.prototype.toString.call(K.JSON) === '[object JSON]' ? le = K.JSON : le = _('JSON', K); const Wt = le || { }; function G(e, t, r) { var i, n, o, s, a = 0, u = function () { a = new Date, o = null, s = e.apply(i, n) }; return function () { var f = new Date, L = t - (f - a); return i = this, n = arguments, L <= 0 ? (clearTimeout(o), o = null, a = f, s = e.apply(i, n)) : o || (o = setTimeout(u, L + r)), s } } const Ue = '320px'; var Me = window.document; window.addEventListener('message', function (e) { var t; try { t = Wt.parse(e.data) } catch { return } var r = t.sender, i = O(d.windows, r) && d.windows[r]; i && N.getHost(e.origin) === i.host && (e.origin !== i.origin && (i.origin = e.origin), t.scope === 'host' && i.trigger(t.name, t.data), t.name === 'error' && v.trigger('error', t.data)) }), window.addEventListener('hashchange', function () { v.trigger('window.hashchange', { hash: window.location.hash }) }), window.addEventListener('resize', G(function () { v.trigger('window.resize') }, 250, 50)), Me.addEventListener('mousemove', G(function () { v.trigger('window.mousemove') }, 250, 50)); var zt = function () { v.trigger('window.scroll') }; window.addEventListener('scroll', G(zt, 250, 50), !1), Me.addEventListener('click', function () { v.trigger('window.click') }); var J = function (e) { e.uid = e.windowName, d.call(this, e) }; c(J.prototype, d.prototype), J.prototype.load = function () { var e = this.window = window.open('', this.uid || '_blank'); e.location = this.url() }, J.prototype.isKilled = function () { return d.prototype.isKilled() || this.window.closed }; var U = function (e) { var t = this; t.window = null, m.call(t, e), this.insertBeforeEl = e.insertBeforeEl, this.insertAfterEl = e.insertAfterEl, t.useSourcelessFrame = e.useSourcelessFrame, t.styles = c({ width: Ue, border: 'none', overflow: 'hidden', height: '0' }, e.styles || { }) }; c(U.prototype, m.prototype), U.prototype.load = function (e) { var t = this; m.prototype.load.call(t); var r = t.elem; if (r.setAttribute('width', Ue), t.useSourcelessFrame) { var i = function () { var s = new window.XMLHttpRequest; s.open('GET', t.url()), s.onreadystatechange = function () { r.contentWindow && s.readyState === r.contentWindow.XMLHttpRequest.DONE && s.status === 200 && (r.contentWindow.document.open(), r.contentWindow.document.write(s.responseText), r.contentWindow.document.close()) }, s.send() }; t.on('redirect', function (s) { t.target = s, i() }), i() } else r.setAttribute('src', t.url()); r.addEventListener('load', function () { t.window = r.contentWindow, e && e() }); var n = re(t.container) ? N.getContainer(t.container) : t.container, o = (t.insertAfterEl ? t.insertAfterEl.nextSibling : t.insertBeforeEl) || null; n.insertBefore(r, o) }, U.prototype.destroy = function () { return this.window = null, m.prototype.destroy.call(this) }; const v = { Iframe: m, Channel: U, off: p.off, on: p.on, trigger: p.trigger }; var Kt = window.document, H = V.extend({ name: null, loaderVersion: null, frame: null, origin: 'https://polls.services.disqus.com', state: null, getUrl: function (e, t) { return this.loaderVersion && (t = c({ version: this.loaderVersion }, t)), Be.ensureHTTPSProtocol(Be.get(this.name, e, t, this.settings.previewVersion)) }, getFrameSettings: function () { var e = { target: this.getUrl(), origin: this.origin, uid: this.uid, sandbox: this.sandbox }, t = this.settings; return t.windowName ? e.windowName = t.windowName : e.container = t.container || Kt.body, t.styles && (e.styles = t.styles), e.useSourcelessFrame = t.useSourcelessFrame, e }, getFrame: function () { var e = this.getFrameSettings(), t = e.windowName ? J : U; return new t(e) }, setState: function (e) { var t = this.constructor; if (!(e in t.states)) return !1; this.state = t.states[e], this.trigger('state:' + e) }, init: function () { var e = this, t; e.frame = t = this.getFrame(), e.listenTo(t, 'all', function (r, i) { e.trigger('frame:' + r, i, t) }), e.listenTo(t, 'resize', function (r) { e.lastResizedHeight = r.height }), e.trigger('change:frame', t), e.frame.load(function () { e.setState('LOADED') }), e.setState('INIT') }, destroy: function () { var e = this.frame; e && (this.stopListening(e), e.destroy()), this.setState('KILLED'), this.frame = null, V.prototype.destroy.call(this) }, events: { 'frame:ready': function () { this.setState('READY') } } }, { states: { INIT: 0, LOADED: 1, READY: 2, RUNNING: 3, KILLED: 4 } }), k = window.document, E = k.querySelector('html'), de = { polls: 'polls' }, ue = H.extend({ getUrl: function () { var e = this.settings, t = { f: e.forum, l: e.language, p: e.pollId, r: window.location.href }; e.unsupported && (t.n_s = e.unsupported); var r = this.getAdditionalArgs(); return r && (t = c(r, t)), H.prototype.getUrl.call(this, t) }, getAdditionalArgs: function () { return null }, getFrameInitParams: function (e) { var t = this.settings, r = { permalink: t.permalink, anchorColor: t.anchorColor, anchorColorScheme: t.anchorColorScheme, referrer: window.location.href, hostReferrer: k.referrer, canonicalUrl: t.canonicalUrl, colorScheme: t.colorScheme, typeface: t.typeface, remoteAuthS3: t.remoteAuthS3, apiKey: t.apiKey, sso: t.sso, parentWindowHash: window.location.hash, forceAutoStyles: t.forceAutoStyles, forceMobile: t.forceMobile, layout: t.layout, language: t.language, integration: t.integration, version: t.version, isPrivate: t.isPrivate, timestamp: this.timestamp, loadTime: this.getBootloaderTimingInfo(), isHeightRestricted: this.isHeightRestricted() }; return r.initialPosition = this.getViewportAndScrollStatus(), r }, listenToScrollEvent: function (e) { var t = this, r = t.getScrollContainer(); if (r === E) return t.listenTo(v, 'window.scroll', e), function () { t.stopListening(v, 'window.scroll', e) }; var i = G(function () { e.call(t) }, 250, 50); return r.addEventListener('scroll', i), function () { r.removeEventListener('scroll', i) } }, storeScrollContainer: function () { if (!this.settings.enableScrollContainer) { this.scrollContainer = E; return } var e, t, r = [ ]; if (this.potentialScrollContainers) for (t = 0; t < this.potentialScrollContainers.length && (e = this.potentialScrollContainers[t], !(e.clientHeight < e.scrollHeight)); t++) e = null; else { e = this.settings.container; do { var i = T(e, 'overflow-y', 'overflowY'); if ((i === 'scroll' || i === 'auto') && (r.push(e), e.clientHeight < e.scrollHeight)) break; e = e.parentNode } while (e && e !== E) }(!e || e === k.body) && (e = E), this.potentialScrollContainers || (this.potentialScrollContainers = r); var n = this.scrollContainer && this.scrollContainer !== e; this.scrollContainer = e, n && (this.stopListeningToScrollEvent && this.stopListeningToScrollEvent(), this.stopListeningToScrollEvent = this.listenToScrollEvent(this.communicateViewportAndScrollStatus)) }, getScrollContainer: function () { return this.scrollContainer || this.storeScrollContainer(), this.scrollContainer }, getViewportCoords: function () { return this.getScrollContainer() === E ? this.getWindowCoords() : this.getScrollContainerCoords() }, getWindowCoords: function () { if (typeof window.pageYOffset == 'number') this.getWindowScroll = function () { return window.pageYOffset }, this.getWindowHeight = function () { return window.innerHeight }; else { var e = E.clientHeight || E.clientWidth ? E : k.body; this.getWindowScroll = function () { return e.scrollTop }, this.getWindowHeight = function () { return e.clientHeight } } return this.getWindowCoords = function () { return { top: this.getWindowScroll(), height: this.getWindowHeight() } }, this.getWindowCoords() }, getScrollContainerCoords: function () { var e = this.getScrollContainer(); return { top: e.scrollTop, height: e.clientHeight } }, getBootloaderTimingInfo: function () { if (window.performance && window.performance.getEntriesByName) { var e = k.currentScript ? k.currentScript.src : 'https://' + this.settings.forum + '.disqus.com/' + de[this.name] + '.js', t = window.performance.getEntriesByName(e) [0]; return t && t.duration } }, getViewportAndScrollStatus: function () { var e = this.frame; if (!e || !e.getOffset || !Oe(e.elem)) return null; var t = this.getViewportCoords(); return { frameOffset: e.getOffset(this.getScrollContainer()), pageOffset: t.top, height: t.height } }, communicateViewportAndScrollStatus: function () { var e = this.getViewportAndScrollStatus(); if (e) { var t = e.frameOffset, r = t.top, i = r + t.height, n = e.pageOffset, o = e.height, s = n + o, a = !1, u = !1; r <= s + o && (a = i >= n, u = a && r <= s); var f = this.frame; f.sendMessage('window.scroll.always', e), a && f.sendMessage('window.scroll', e), u !== this.wasInViewport && (f.sendMessage(u ? 'window.inViewport' : 'window.scrollOffViewport'), this.wasInViewport = u) } }, getBestNextFrameHeight: function (e) { var t = this.getViewportAndScrollStatus(); if (!t || this.settings.enableScrollContainer || !this.getScrollContainer()) return e; var r = t.frameOffset; if (e >= r.height) return e; var i = Dt(), n = i - (r.height + r.top), o = t.pageOffset + t.height - (r.top + n); return o > e ? o + 1 : e }, isHeightRestricted: function (e) { e = e || { }; var t = this.settings.container, r = t.parentNode, i = r !== E && r !== k.body; function n() { return h.appearsToHideContent(t) || i && h.appearsToHideContent(r) } function o() { return h.appearsToHideContent(t) && h.hasOverflow(t) || i && h.appearsToHideContent(r) && h.hasOverflow(r) } return e.checkScrollHeight ? o() : n() }, events: { 'state:INIT': function () { this.settings.degraded || (this.settings.windowName || (this.stopListeningToScrollEvent = this.listenToScrollEvent(this.communicateViewportAndScrollStatus), this.listenTo(v, 'window.resize', this.communicateViewportAndScrollStatus)), this.timestamp = Number(new Date)) }, 'state:LOADED': function () { var e = this.frame, t = e.elem; this.settings.degraded ? (e.setInlineStyle('height', '500px'), t.setAttribute('scrolling', 'yes'), t.setAttribute('horizontalscrolling', 'no'), t.setAttribute('verticalscrolling', 'yes'), e.show()) : this.settings.windowName || (this.rendered = !1, e.setInlineStyle('height', '0'), t.setAttribute('scrolling', 'no'), t.setAttribute('horizontalscrolling', 'no'), t.setAttribute('verticalscrolling', 'no')) }, 'frame:ready': function (e, t) { var r = this.getFrameInitParams(e, t); t.sendMessage('init', r) }, 'frame:destroy': function () { this.destroy() }, 'frame:resize': function (e, t) { var r = e.height; t.elem && this.rendered && (r = this.getBestNextFrameHeight(r), t.setInlineStyle('height', r + 'px'), t.sendMessage(de[this.name] + '.resized')), this.storeScrollContainer(), this.communicateViewportAndScrollStatus() }, 'frame:rendered': function (e, t) { this.rendered = !0, this.wasInViewport = !1, t.trigger('resize', e), t.sendMessage(de[this.name] + '.rendered') }, 'frame:fail': function (e, t) { t.elem && t.setInlineStyle('height', e && e.height || '75px') }, 'frame:scrollTo': function (e, t) { if (!(!t.elem || !t.getOffset)) { var r = this.getScrollContainer(), i = t.getOffset(r), n = e.relative === 'window' ? e.top : i.top + e.top, o = this.getViewportCoords(); !e.force && n > o.top && n < o.top + o.height || (r === E ? window.scrollTo(0, n) : r.scrollTop = n) } } } }); function M(e) { return 'https://c.disquscdn.com/polls/latest/' + e } var Gt = { height: '52px', width: '64px', margin: '0 auto', overflow: 'hidden', position: 'relative', boxingSize: 'border-box' }, Jt = function (e) { return c({ background: 'url(' + M('loader.gif') + ') no-repeat' }, Gt) }, Yt = M('disqus-social-icon-light.svg'), jt = M('disqus-social-icon-dark.svg'), Qt = { display: 'block', margin: 'auto', width: '80px', height: '80px' }, Xt = function (e) { var t = e ? Yt : jt; return c({ background: 'url(' + t + ') center center / contain no-repeat' }, Qt) }, w = '#c2c6cc', I = '4px', Zt = function (e) { var t = window.document.createElement('div'), r = `
Disqus Polls seem to be taking longer than usual. Reload?
', i = window.document.getElementById('dsq-skeleton-poll-body'); e.settings.skeletonFrameEnabled && i ? i.insertAdjacentHTML('beforeend', r) : e.loadingElem.firstChild.insertAdjacentHTML('afterend', r) } }, clearSlowLoadingMessageTimer: function () { this.timeout && (clearTimeout(this.timeout), this.timeout = null) }, setSlowLoadingMessageTimer: function (e) { var t = this; t.clearSlowLoadingMessageTimer(), t.timeout = setTimeout(function () { t.showSlowLoadingMessage() }, e) }, addLoadingAnimOnContainerVisible: function () { var e = this, t; t = e.listenToScrollEvent(function () { var r = e.isContainerVisible(); (r || e.state >= e.constructor.states.RUNNING) && t(), r && e.addLoadingAnim() }) }, addLoadingAnim: function () { var e = this, t, r, i, n = e.settings.container; if (e.loadingElem) return e.loadingElem; if (!(e.state >= e.constructor.states.RUNNING) && !this.settings.degraded) { t = Y.createElement('div'), t.dir = 'ltr', t.style.overflow = 'hidden', t.style.width = '100%'; var o = e.settings.colorScheme === 'dark'; if (this.settings.skeletonFrameEnabled) { e.frame.once('resize', function () { e.frame.removeInlineStyle('display') }), e.frame.setInlineStyle('display', 'block'); var s = kt(window); t.appendChild(ce.getSkeletonFrameElement(s)), n.appendChild(t) } else if (e.settings.forumDetails && e.settings.forumDetails.disableDisqusBranding) { r = Y.createElement('div'), t.appendChild(r); var a = r.style; c(a, ce.getBubbleStyle(o)), n.appendChild(t) } else { i = Y.createElement('svg'), t.appendChild(i); var u = i.style; c(u, ce.getIconStyle(o)), n.appendChild(t) } return e.loadingElem = t, e.setSlowLoadingMessageTimer(15000), g.logStat('polls.bundle.loading.view'), e.loadingElem } }, removeLoadingAnim: function () { var e = this.loadingElem, t = this.settings.container; this.clearSlowLoadingMessageTimer(), e && e.parentNode === t && (t.removeChild(e), this.loadingElem = null) }, destroy: function () { this.removeLoadingAnim(), ue.prototype.destroy.call(this) } }), rr = function (e) { return new Fe(e) }; const ir = { PollApp: rr }; var j = window.document.createElement('a'), nr = function (e) { j.href = e; var t = j.href.split('/'); return t[0] + '//' + t[2] }, or = function (e) { return j.href = e, j.search }; const $e = { getOrigin: nr, getQuery: or }; var sr = [ 'allow-forms', 'allow-pointer-lock', 'allow-popups', 'allow-same-origin', 'allow-scripts', 'allow-top-navigation' ], ar = function (e) { return e ? sr.reduce(function (t, r) { return e[r] && (t += r + ' '), t }, '').trim() : '' }; const lr = { getAttribute: ar }; function Re(e, t) { return Object.prototype.hasOwnProperty.call(e, t) } function ge(e, t) { var r = e.length, i = Array.prototype.forEach; if (isNaN(r)) for (var n in e) Re(e, n) && t(e[n], n, e); else if (i) i.call(e, t); else for (var o = 0; o < r; o++) t(e[o], o, e) } function dr(e) { var t = [ ]; return ge(e, function (r, i) { r !== void 0 && t.push(encodeURIComponent(i) + (r === null ? '' : '=' + encodeURIComponent(r))) }), t.join('&') } function ur(e, t, r) { t && (e.indexOf('?') === - 1 ? e += '?' : e.charAt(e.length - 1) !== '&' && (e += '&'), e += dr(t)); var i = e.length; return e.charAt(i - 1) === '&' ? e.slice(0, i - 1) : e } function cr(e) { typeof e > 'u' && (e = window.location.search); var t = { }; return ge(e.substr(1).split('&'), function (r) { var i = r.split('=').map(function (n) { return decodeURIComponent(n.replace(/\+/g, '%20')) }); i[0] && (t[i[0]] = i[1]) }), t } function ve(e) { if (e = Number(e), isNaN(e) || e > 255) throw new Error('Color components should be numbers less than 256'); return e = e.toString(16), e.length === 1 ? '0' + e : String(e) } function fr(e) { return '#' + ve(e.red) + ve(e.green) + ve(e.blue) } function hr(e, t, r) { var i, n, o, s, a, u = function () { var f = new Date().getTime() - s; f < t && f >= 0 ? i = setTimeout(u, t - f) : (i = null, a = e.apply(o, n), i || (o = n = null)) }; return function () { return o = this, n = arguments, s = new Date().getTime(), i || (i = setTimeout(u, t)), a } } function gr(e, t, r) { r || (r = 0); var i, n, o, s, a = 0, u = function () { a = new Date, o = null, s = e.apply(i, n) }; return function () { var f = new Date, L = t - (f - a); return i = this, n = arguments, L <= 0 ? (clearTimeout(o), o = null, a = f, s = e.apply(i, n)) : o || (o = setTimeout(u, L + r)), s } } function qe(e) { return ge(Array.prototype.slice.call(arguments, 1), function (t) { for (var r in t) Re(t, r) && (e[r] = t[r]) }), e } function We(e, t) { for (var r = 0; r < e.length; ++r) if (e[r] === t) return r; return - 1 } function vr(e, t, r) { for (var i = 0; i < e.length; ++i) if (t.call(r, e[i], i, e)) return !0; return !1 } function pr(e, t) { try { return window.document.defaultView.getComputedStyle(e, null).getPropertyValue(t) } catch { return null } } function mr(e) { return !!(e && (e.offsetWidth || e.offsetHeight || e.getClientRects().length) && pr(e, 'visibility') !== 'hidden') } function wr(e) { return Object.prototype.toString.call(e) === '[object Function]' } function ze(e, t, r) { var i = e == null ? void 0 : e[t]; return i === void 0 && (i = r), wr(i) ? i.call(e) : i } function Ke(e) { return !!(e && e.nodeType === 1) } var y = { }; y.getElement = function (e) { return Ke(e) ? e : e && e.el }, y.EL_ID_ATTR = 'data-visibility-id', y.OBJ_ID_PROP = '_visibility_id', y.getId = function (e) { var t = null; return Ke(e) ? (t = e.getAttribute(y.EL_ID_ATTR) || null, t || (t = B(), e.setAttribute(y.EL_ID_ATTR, t))) : e && (t = e[y.OBJ_ID_PROP] || null, t || (t = e[y.OBJ_ID_PROP] = B())), t }, y.visiblePercent = function (e, t) { var r = 0; if (!t) return r; var i = e.top, n = i + e.height, o = t.visibleTop < i, s = t.visibleBottom > n; return !o && !s || o && s ? r = 1 : o ? r = (t.height - (i - t.visibleTop)) / t.height : s && (r = (n - t.visibleTop) / t.height), Math.round(r * 100) }; var l = { }; l.events = [ ], l.lastPos = null, l.clearCache = function (e) { if (e === void 0) l.getElementOffset.cache = { }; else { var t = y.getId(e); t && (l.getElementOffset.cache[t] = null) } }, l.calculateOffset = function (e) { if (!e || !mr(e)) return null; var t = e.ownerDocument.documentElement; return { height: e.offsetHeight, top: e.getBoundingClientRect().top + window.pageYOffset - (t.clientTop || 0) } }, l._getElementOffset = function (e) { var t = y.getElement(e); if (!t) return null; var r = l.calculateOffset(t); return r ? { visibleTop: r.top + (ze(e, 'topEdgeOffset') || 0), visibleBottom: r.top + r.height - (ze(e, 'bottomEdgeOffset') || 0), offsetTop: r.top, height: r.height } : null }, l.getElementOffset = function () { var e = function (t) { var r = e.cache, i = y.getId(t); if (i && r[i]) return r[i]; var n = l._getElementOffset(t); return i && n && (r[i] = n), n }; return e.cache = { }, e }(), l.EVENT_NAMES = [ 'enter', 'exit', 'visible', 'invisible', 'all' ], l.updateTracking = function (e) { var t, r = function (i) { return i ? function (n) { return i[n] } : function () { } }; vr(l.EVENT_NAMES, r(e._events)) ? (t = We(l.events, e), t === - 1 && l.events.push(e)) : (t = We(l.events, e), t !== - 1 && l.events.splice(t, 1)) }, l.processEvents = function (e) { l.lastPos = e; var t = l.events; if (t.length) for (var r = t.length - 1; r >= 0; --r) { var i = t[r], n = i.isVisible(e); n !== null && (n !== i.lastVisible && i.trigger(n ? 'enter' : 'exit', i, e), i.trigger(n ? 'visible' : 'invisible', i, e), i.lastVisible = n) } }; function x(e) { if (!(this instanceof x)) return new x(e); this.obj = e, this.lastVisible = !1 } var yr = hr(function () { l.processEvents(l.lastPos) }, 250); qe(x.prototype, p, { on: function (e) { var t = !(this._events && this._events[e]), r = p.on.apply(this, arguments); return t && l.updateTracking(this), yr(), r }, off: function (e) { var t = p.off.apply(this, arguments); return this._events && this._events[e] || l.updateTracking(this), t }, offset: function () { return l.getElementOffset(this.obj) }, isVisible: function (e) { if (e = e || l.lastPos, !e) return null; var t = e.top, r = t + e.height, i = this.offset(); return i ? i.offsetTop >= t && i.visibleTop < r || i.offsetTop + i.height <= r && i.visibleBottom > t : !1 }, invalidate: function () { return l.clearCache(this.obj), this } }), qe(x, { invalidate: l.clearCache, scroll: l.processEvents, _windowScrollHandlerBound: !1, _ignoreCache: !1, _windowScrollHandler: gr(function () { x._ignoreCache && x.invalidate(), l.processEvents({ top: window.pageYOffset, height: window.document.documentElement.clientHeight }) }, 250), bindWindowEvents: function (e) { this._windowScrollHandlerBound || (typeof e < 'u' && (x._ignoreCache = e), window.addEventListener('scroll', this._windowScrollHandler), window.addEventListener('resize', this._windowScrollHandler), this._windowScrollHandlerBound = !0, this._windowScrollHandler()) }, unbindWindowEvents: function () { x._ignoreCache = !1, window.removeEventListener('scroll', this._windowScrollHandler), window.removeEventListener('resize', this._windowScrollHandler), this._windowScrollHandlerBound = !1 } }); function br(e, t) { var r = null, i = !1; this.start = function () { i || (r = setTimeout(function () { i = !0, e() }, t)) }, this.clear = function () { clearTimeout(r) } } var Sr = H.extend({ name: 'ads', origin: void 0, onceEvents: { 'view:enter': function () { this._reportLegacy({ verb: 'view', adverb: '0ms-no50perc' }) }, 'view:iab': function () { this._reportLegacy({ verb: 'view', adverb: 'iab-scroll' }) } }, events: { 'frame:ready': function (e) { this.forumId = e.forumId, this._reportLegacy({ verb: 'load', extra_data: e.extraData, advertisement_id: e.advertisement_id, provider: e.provider }), this.bindViewEvents() }, 'frame:resize': function (e) { this.frame.setInlineStyle('height', e.height + 'px'), e.height === 0 ? this.trigger('ad-placement-empty') : (e.adWidth && this.frame.setInlineStyle('width', e.adWidth + 'px'), this.trigger('ad-placement-filled')) }, 'frame:click': function () { this._reportOnce({ verb: 'click' }, 'click') }, 'frame:hover': function () { this._reportOnce({ verb: 'hover' }, 'hover') }, 'frame:error-provider-not-ready': function (e) { this._reportLegacy({ verb: 'fail', object_type: 'provider', object_id: e.provider || this.getProvider(), adverb: 'provider_not_ready' }) }, 'frame:error-no-height': function (e) { this._reportLegacy({ verb: 'fail', object_type: 'provider', object_id: e.provider || this.getProvider(), adverb: 'no_height' }) }, 'frame:error': function (e) { this.settings.isOnHostPage && this.postMessageDirect({ event: 'error', data: { error: e } }) } }, constructor: function () { H.apply(this, arguments), this.origin = $e.getOrigin(this.settings.adUrl), this._reportOnceHistory = { }, this.settings.isOnHostPage && (this.detectLazyload = this.detectLazyload.bind(this), window.addEventListener('scroll', this.detectLazyload)); const e = this.settings.adUrl.indexOf('/ads-iframe/taboola/') >= 0; this.settings.useSourcelessFrame = this.settings.sourcelessIframe && this.settings.isOnHostPage && (!this.settings.defaultPlacementUrl || !this.settings.adBlockEnabled) && !e }, init: function () { if (this.settings.forum = cr($e.getQuery(this.settings.adUrl)).shortname, !!this.settings.forum) { var e = window.navigator && window.navigator.userAgent || window.navigator && window.navigator.vendor || window.opera, t = this.settings.disableAdsIos && /iP(hone|od|ad)/.test(e) || this.settings.disableAdsAndroid && /Android/.test(e), r = this.settings.disableAds; if (r && this.settings.canDisableAds || t) return void this.trigger('prevented-ad-load'); this._reportOnce({ verb: 'call', object_type: 'provider', object_id: this.getProvider(), adjective: 1 }, 'call'), this.settings.sandboxAds && (this.sandbox = lr.getAttribute({ 'allow-scripts': !0, 'allow-same-origin': !0, 'allow-forms': !0, 'allow-popups': !0 })), H.prototype.init.call(this) } }, detectLazyload: function () { if (!this.frame || !this.settings.isOnHostPage) return; const t = this.frame.elem.getBoundingClientRect().top - window.innerHeight, r = window.innerHeight * this.settings.lazyloadViewports; t < r && (this.postMessageDirect({ event: 'lazyload' }), window.removeEventListener('scroll', this.detectLazyload)) }, getProvider: function () { if (this._provider) return this._provider; var e = this.settings.adUrl.match(/provider=(\w+)/); return e && (this._provider = e[1]), this._provider }, getUrl: function () { var e = this.settings, t; return e.experiment.experiment === 'inthreaddisqusadstxt' && e.experiment.variant === 'active' && e.placement === 'inthread' ? t = window.document.location.href : e.isOnHostPage ? t = e.url || window.document.location.href : t = e.url || e.referrer, ur(e.adUrl, { anchorColor: fr(e.anchorColor), colorScheme: e.colorScheme, sourceUrl: t, typeface: e.typeface, canonicalUrl: e.canonicalUrl, disqus_version: e.version, deviceWidth: e.deviceWidth, maxWidth: e.maxWidth }) }, bindViewEvents: function () { if (!this._viewEventsBound) { this._viewEventsBound = !0, x.bindWindowEvents(!0); var e = this, t = function (o, s) { e.postMessageDirect({ event: o, percentViewable: s }) }, r = 1000, i = new br(function () { e.trigger('view:iab'), t('view:iab') }, r), n = !1; this.listenTo(x({ el: this.frame.elem }), { enter: function () { e.trigger('view:enter'), t('view:enter') }, exit: function () { t('view:exit'), n && (n = !1, t('view:50out'), i.clear()) }, visible: function (o, s) { var a = y.visiblePercent(s, o.offset()), u = 50; a >= u && !n ? (n = !0, t('view:50in'), i.start()) : a < u && n && (n = !1, t('view:50out'), i.clear()), t('view', a) } }) } }, postMessageDirect: function (e) { this.frame.requiresWindow(function (t) { var r = JSON.stringify(c({ }, t, { space: 'disqus' })); d.postMessage(this.window, r, this.origin), d.postMessage(this.window, 'disqus.' + t.event, this.origin) }) (e) }, _report: function (e, t = { }) { const r = this.settings, i = t.provider || this.getProvider(); e.forum_id = r.forumId || this.forumId; const n = 'poll', o = t.usePOST ? 'reportJesterPOST' : 'reportJester'; g[o](c({ imp: r.impressionId, experiment: r.experiment.experiment, variant: r.experiment.variant, service: r.experiment.service, area: r.placement, product: n, forum: r.forum, zone: 'thread', version: r.loaderVersion, page_url: r.referrer || window.document.location.href, page_referrer: r.hostReferrer || window.document.referrer, object_type: 'advertisement', provider: i, event: 'activity' }, e)) }, _reportLegacy: function (e) { var t = this.settings; this._report(c({ ad_product_name: 'iab_display', ad_product_layout: 'iab_display', bin: 'embed:promoted_discovery:' + t.experiment.service + ':' + t.experiment.experiment + ':' + t.experiment.variant, object_id: e.advertisement_id ? '[' + e.advertisement_id + ']' : '', section: 'default' }, e)) }, _reportOnce: function (e, t) { this._reportOnceHistory[t] || (this._reportLegacy(e), this._reportOnceHistory[t] = !0) }, getFrameSettings: function () { var e = H.prototype.getFrameSettings.call(this); return e.insertBeforeEl = this.settings.insertBeforeEl, e.insertAfterEl = this.settings.insertAfterEl, e } }), _r = function (e) { return e = e || { }, e.experiment || (e.experiment = { experiment: e.experimentName, variant: e.experimentVariant, service: e.experimentService }), new Sr(e) }; const Er = { Ads: _r }; var pe = window.document, Ge = new W(window), F = [ ], Ar = function (e) { return e.lastResizedHeight === void 0 ? parseInt(e.frame && e.frame.elem && e.frame.elem.style.height || 0, 10) : e.lastResizedHeight }, Je = !1, xr = function () { for (var e; e = F.pop(); ) e.triggeredSlowEvent && e.state !== e.constructor.states.RUNNING && g.logStat('reset_poll.slow'), e.destroy() }, Cr = function (e) { e = e || { }, xr(), e.reload && Qe(e.config) }, Ye = it(window), je = function () { if (pe.getElementsByClassName) { if (pe.readyState !== 'complete') return window.addEventListener('load', je); var e = pe.getElementsByClassName('dsq-brlink'), t = e && e.length && e[0]; t && t.parentNode.removeChild(t) } }, Ir = function (e) { F.length !== 0 && (e = e || { }, F.forEach(t=>{ t.frame.sendMessage('authenticate', e) })) }, Lr = 'current', Qe = function (e) { const r = window.document.getElementsByClassName('disqus_poll'); for (const n of r) { const o = B(); n.setAttribute('id', o); const s = n.getAttribute('data-disqus-poll-id'); Ge.configurator = e; var i = Ge.toJSON(s, o); i.version = Lr, i.loaderVersion = g.getLoaderVersionFromUrl(M('polls.bundle.js')), Je || (i.container.innerHTML = '', Je = !0), n.style.display = 'flex', n.style.flexWrap = 'wrap', n.style.alignItems = 'flex-end', n.style.justifyContent = 'center', je(), Or(i) } }, Xe = function (e) { var t = ir.PollApp(c({ }, e, { isHostIframed: Ye })); F.push(t), t.init(), Ye && t.on('frame:resize', function (o) { var s = o.height || Ar(this); window.postMessage(JSON.stringify({ scope: 'host', sender: 'dsq-poll', name: 'resize', data: { height: s } }), '*') }); var r = !!(!e.adBlockEnabled || e.defaultPlacementUrl), i = function (o, s) { return e.adBlockEnabled && e.defaultPlacementUrl && (o = P(e.defaultPlacementUrl, { position: s })), o }; if (e.pollAdPlacementUrl && r) { e.pollAdPlacementUrl = i(e.pollAdPlacementUrl, 'top'); var n = Er.Ads(c({ adUrl: e.pollAdPlacementUrl, placement: 'poll', isOnHostPage: !0 }, e, { insertAfterEl: t.frame.elem })); F.push(n), t.whenFullyVisible(function () { n.init() }) } }, Or = function (e) { e.adBlockEnabled === void 0 ? we(function (t) { e.adBlockEnabled = t, Xe(e) }) : Xe(e) }, b = window.DISQUS_POLLS || { }; b.reset || (b.reset = Cr), b.authenticate || (b.authenticate = Ir), b.request || (b.request = { }), b.request.get || (b.request.get = function (e, t, r) { Q(e, t, r) }), b.host || (b.host = { }), b.host._loadPoll || (b.host._loadPoll = Qe), window.DISQUS_POLLS = b }) (); DISQUS_POLLS.host._loadPoll() //https://disqus.disqus.com/polls.js