Why Washington, D.C., and Oregon should vote yes on psychedelics.

Posted by:



Photo illustration by Slate. Photos by GeorgeRudy/iStock/Getty Images Plus and Veronika Demenko/iStock/Getty Images Plus.

This November, voters in five states will decide whether to make marijuana (recreational, medicinal, or both) legal—a process that has become fairly familiar in recent years. But other voters will be considering three more innovative ballot initiatives—involving psychedelic drugs.

Oregon residents will vote on Measures 109 and 110. District of Columbia voters will consider Initiative 81. Each measure takes a different approach and has strengths and weaknesses. But voters should approve them because their benefits outweigh the risks.

Psychedelics are a diverse group of substances. Many occur naturally in plants, animals, and fungi. Some have been used by indigenous cultures for millennia. Others were synthesized in 20th century pharmaceutical labs. They share an ability to alter human perception and cognition—shifting how people see the world, themselves, and those around them. This quality makes them useful for treating mental illness, which is often characterized by inflexible thought patterns.

Among the psychedelics, psilocybin is likely the safest. One literature review ranked it the least addictive and lethal drug of 20 substances studied. Instead of causing dependence, research increasingly suggests it may help people overcome addictions, depression, and anxiety disorders. The safety of other psychedelics is less well defined. For instance, a West African shrub called iboga is touted for its potential to curb addictions. However, concerns have been raised regarding its safety. That does not mean ibogaine should never be used. Instead, it means the risk-benefit analysis is different for ibogaine versus psilocybin.

Because of their therapeutic promise, the Food and Drug Administration designated two psychedelics “breakthrough therapies” for mental illness. Psilocybin received this distinction in 2018 for treating major depressive disorder and in 2019 for addressing treatment-resistant depression. MDMA earned breakthrough status in 2017 for treating post-traumatic stress disorder. These developments are meaningful because existing treatments for depression and PTSD are often ineffective. In addition, various psychedelics may benefit people with alcoholism, tobacco addiction, obsessive-compulsive disorder, and end-of-life anxiety and depression.

But despite their potential, most psychedelics are illegal. The Drug Enforcement Administration categorizes them as Schedule I controlled substances, which it claims have no accepted medical use and a high potential for abuse.

In the 1950s and 1960s, psychiatrists studied psychedelics as therapeutic aids. This period, called the “psychopharmacology revolution,” shifted the focus of psychiatry from psychoanalysis to drug therapy. But then came the war on drugs. In 1970, Congress passed the Controlled Substances Act, and three years later, Nixon established the DEA to enforce it. He put the country’s top law enforcement official, the U.S. attorney general, in charge of the agency and its policies. Nixon’s actions had terrible consequences. For 50 years, the war on drugs ripped families apart, destroyed lives, and devastated communities of color. It also set the field of psychiatry back half a century. Since then, psychiatry has advanced more slowly than other medical fields. Drug therapies haven’t evolved much, and many who try them receive little or no benefit. (It may surprise you to learn that electroconvulsive therapy, introduced in 1913, is still commonly used for treatment-resistant depression.)

Mental health professionals are not to blame. The brain is a complex organ with 86 billion neurons, and our understanding of the biological basis for mental illness is primitive compared with that for other conditions. But given our ignorance and the lack of truly effective therapies, removing psychedelics from active research, and ultimately from the clinician’s toolbox, was a mistake.

Critics argue cities and states should wait for FDA approval, but here are several problems with this approach: The DEA limits who can conduct research on psychedelics and how much can be produced each year. In 2020, no more than 30 grams of psilocybin can be made in the entire country. (Depending on the dosage used in a study, and on a person’s weight, 30 grams might equal 750 to 1,500 doses.) In addition to reducing availability, the restricted supply increases the cost of research. In 1999, the Multidisciplinary Association for Psychedelic Studies, a nonprofit scientific organization, obtained a quote from a DEA-licensed lab to synthesize 1 gram of MDMA for $10,000.

Inflated prices further restrict access for scientists, reduce the impact of charitable contributions to organizations like MAPS, and slow the pace of research. COVID-19 is causing further delays by disrupting clinical trials. Meanwhile, according to the Centers for Disease Control and Prevention, the pandemic is increasing national rates of mental illness, suicide, and substance use.

Frustrated with DEA restrictions, four U.S. cities have now decriminalized psychedelics, meaning they will not spend money and other resources on prosecuting people for personal use. Denver acted first, decriminalizing the use and possession of psilocybin-producing mushrooms in 2019. Oakland, California, followed with a more expansive approach, adding other natural psychedelics to the list and decriminalizing cultivation, purchasing, transporting, and distributing. In 2020, Santa Cruz, California, became the third city to decriminalize psilocybin and the second to decriminalize other psychedelics. In September, Ann Arbor, Michigan, followed suit.

D.C.’s Initiative 81 is similar to the measures passed in Oakland, Santa Cruz, and Ann Arbor. It decriminalizes plants and fungi containing ibogaine, mescaline, dimethyltryptamine, psilocybin, and a related compound called psilocyn. Oregon’s Measure 110 takes the broadest approach by decriminalizing all drugs including psychedelics and substances associated with addiction such as heroin, cocaine, and methamphetamines. Oregon partially decriminalized these drugs in 2017, reducing violations from felonies to misdemeanors. Measure 110 removes criminal penalties and replaces them with a $100 fine, which can be avoided by undergoing a health assessment at an addiction recovery center. (While it may be alarming to see cocaine and methamphetamine on the list of decriminalized drugs, there is evidence that this approach works. Portugal’s 2001 decriminalization efforts were successful, lowering consumption of most drug categories. Penalizing drug use by imprisoning people is ineffective, and its harmful effects ripple through families and communities.)

Oregon’s Measure 109 is the most innovative. Like Denver, it focuses on psilocybin. However, instead of taking a hands-off approach, leaving people to obtain and use psilocybin on their own, Measure 109 creates a regulated industry for psilocybin therapy. It will not allow Oregonians to grow psilocybin-producing mushrooms or purchase them in stores. Instead, trained facilitators licensed by the Oregon Health Authority will administer psilocybin-assisted therapy in supportive, controlled settings. If Measure 109 passes, there will be a two-year planning phase in which a governor-appointed committee will design the system and set licensing requirements. According to the measure, the board will include physicians, scientists, and public health experts who will act on the latest scientific evidence.

This would be an important change. Many people currently obtain psychedelics such as ayahuasca from strangers or self-appointed medicine men. There have been reports of sexual abuse. Consuming adulterated or contaminated substances is a concern, and some have died after traveling to foreign countries to participate in unregulated psychedelic retreats. By comparison, the ballot measures under consideration allow people to produce their own substances or, in the case of Oregon’s Measure 109, to obtain them under professional supervision from a system designed and overseen by medical and public health professionals.

Even if psychedelics provide less medical benefit than current evidence suggests, individuals and society may benefit from their availability. Those who receive psychedelics during clinical trials often rank the experience among the most meaningful of their lives. Psychedelics may enhance insight, empathy, and creativity in ways that fall outside the scope of medical care. On Oct. 28, a panel at Harvard Law School’s Petrie-Flom Center will discuss the potential for psychedelics to improve America’s future. It will discuss their role in addressing political polarization, climate change, and violence. There are also issues of equity and justice.

The upcoming votes on psychedelics arrive at a time when law enforcement—and the disparate impact that drug regulation has on marginalized communities—faces intense public scrutiny. But Congress has been slow to act, perpetuating harms inflicted by the drug war on minorities and people with mental health conditions. In 2020, voters in D.C. and Oregon can create meaningful change.

Future Tense
is a partnership of
Slate,
New America, and
Arizona State University
that examines emerging technologies, public policy, and society.

var r = n(14), o = n(56).find, i = n(51), a = n(60), c = "find", u = !0, s = a(c); c in [] && Array(1)[c](function () { u = !1; }), r({ target: "Array", proto: !0, forced: u || !s }, { find: function find(e, t) { return o(this, e, 1 o;) { a(r, n = t[o++]) && (~u(i, n) || i.push(n)); }

return i; }; }, function (e, t, n) { var r = n(25); e.exports = r("document"https://slate.com/,"documentElement"); }, function (e, t, n) { var o = n(87);

e.exports = function (e, t, n) { for (var r in t) { n && n.unsafe && e[r] ? e[r] = t[r] : o(e, r, t[r], n); }

return e; }; }, function (e, t, n) { "use strict";

function o() { return this; }

var i = n(88).IteratorPrototype, a = n(85), c = n(46), u = n(64), s = n(36);

e.exports = function (e, t, n) { var r = t + " Iterator"; return e.prototype = a(i, { next: c(1, n) }), u(e, r, !1, !0), s[r] = o, e; }; }, function (e, t, n) { var r = n(28); e.exports = !r(function () { function e() {}

return e.prototype.constructor = null, Object.getPrototypeOf(new e()) !== e.prototype; }); }, function (e, t, n) { var o = n(15), i = n(133); e.exports = Object.setPrototypeOf || ("__proto__" in {} ? function () { var n, r = !1, e = {};

try { (n = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").set).call(e, []), r = e instanceof Array; } catch (e) {}

return function (e, t) { return o(e), i(t), r ? n.call(e, t) : e.__proto__ = t, e; }; }() : void 0); }, function (e, t, n) { var r = n(23);

e.exports = function (e) { if (!r(e) && null !== e) throw TypeError("Can't set " + String(e) + " as a prototype"); return e; }; }, function (e, t, n) { "use strict";

var r = n(25), o = n(31), i = n(19), a = n(27), c = i("species");

e.exports = function (e) { var t = r(e), n = o.f; a && t && !t[c] && n(t, c, { configurable: !0, get: function get() { return this; } }); }; }, function (e, t) {}, function (e, t, n) { function r(c) { return function (e, t) { var n, r, o = String(s(e)), i = u(t), a = o.length; return i = t.length ? { value: e.target = void 0, done: !0 } : "keys" == n ? { value: r, done: !1 } : "values" == n ? { value: t[r], done: !1 } : { value: [r, t[r]], done: !1 }; }, "values"), i.Arguments = i.Array, o("keys"), o("values"), o("entries"); }, function (e, t) { e.exports = { CSSRuleList: 0, CSSStyleDeclaration: 0, CSSValueList: 0, ClientRectList: 0, DOMRectList: 0, DOMStringList: 0, DOMTokenList: 1, DataTransferItemList: 0, FileList: 0, HTMLAllCollection: 0, HTMLCollection: 0, HTMLFormElement: 0, HTMLSelectElement: 0, MediaList: 0, MimeTypeArray: 0, NamedNodeMap: 0, NodeList: 1, PaintRequestList: 0, Plugin: 0, PluginArray: 0, SVGLengthList: 0, SVGNumberList: 0, SVGPathSegList: 0, SVGPointList: 0, SVGStringList: 0, SVGTransformList: 0, SourceBufferList: 0, StyleSheetList: 0, TextTrackCueList: 0, TextTrackList: 0, TouchList: 0 }; }, function (e, t, n) { n(14)({ target: "Set", stat: !0 }, { from: n(141) }); }, function (e, t, n) { "use strict";

var s = n(18), d = n(21), f = n(17);

e.exports = function (e, t, n) { var r, o, i, a, c = arguments.length, u = 1 = n.length) { var a = u(r, n[i]); if (!(t || n[i] in r)) throw new c("base intrinsic for " + e + " exists, but the property is not available."); r = a ? a.get || a.value : r[n[i]]; } else r = r[n[i]]; }

return r; }; }, function (r, e, o) { "use strict";

(function (e) { var t = e.Symbol, n = o(175);

r.exports = function () { return "function" == typeof t && "function" == typeof Symbol && "symbol" == _typeof(t("foo")) && "symbol" == _typeof(Symbol("bar")) && n(); }; }).call(e, o(33)); }, function (e, t, n) { "use strict";

e.exports = function () { if ("function" != typeof Symbol || "function" != typeof Object.getOwnPropertySymbols) return !1; if ("symbol" == _typeof(Symbol.iterator)) return !0; var e = {}, t = Symbol("test"), n = Object(t); if ("string" == typeof t) return !1; if ("[object Symbol]" !== Object.prototype.toString.call(t)) return !1; if ("[object Symbol]" !== Object.prototype.toString.call(n)) return !1;

for (t in (e[t] = 42, e)) { return !1; }

if ("function" == typeof Object.keys && 0 !== Object.keys(e).length) return !1; if ("function" == typeof Object.getOwnPropertyNames && 0 !== Object.getOwnPropertyNames(e).length) return !1; var r = Object.getOwnPropertySymbols(e); if (1 !== r.length || r[0] !== t) return !1; if (!Object.prototype.propertyIsEnumerable.call(e, t)) return !1;

if ("function" == typeof Object.getOwnPropertyDescriptor) { var o = Object.getOwnPropertyDescriptor(e, t); if (42 !== o.value || !0 !== o.enumerable) return !1; }

return !0; }; }, function (e, t, n) { "use strict";

var r = n(97), o = n(43);

e.exports = function () { var e = r(); return o(Object, { is: e }, { is: function is() { return Object.is !== e; } }), e; }; }, function (e, t, n) { "use strict";

var r = n(178), o = RegExp.prototype.exec, i = Object.getOwnPropertyDescriptor, a = Object.prototype.toString, c = "function" == typeof Symbol && "symbol" == _typeof(Symbol.toStringTag);

e.exports = function (e) { if (!e || "object" != _typeof(e)) return !1; if (!c) return "[object RegExp]" === a.call(e); var t = i(e, "lastIndex"); return !(!t || !r(t, "value")) && function (e) { try { var t = e.lastIndex; return e.lastIndex = 0, o.call(e), !0; } catch (e) { return !1; } finally { e.lastIndex = t; } }(e); }; }, function (e, t, n) { "use strict";

var r = n(67); e.exports = r.call(Function.call, Object.prototype.hasOwnProperty); }, function (e, t, n) { "use strict";

var r = n(43), o = n(95), i = n(98), a = n(99), c = n(180), u = o(i); r(u, { getPolyfill: a, implementation: i, shim: c }), e.exports = u; }, function (e, t, n) { "use strict";

var r = n(43).supportsDescriptors, o = n(99), i = Object.getOwnPropertyDescriptor, a = Object.defineProperty, c = TypeError, u = Object.getPrototypeOf, s = /a/;

e.exports = function () { if (!r || !u) throw new c("RegExp.prototype.flags requires a true ES5 environment that supports property descriptors"); var e = o(), t = u(s), n = i(t, "flags"); return n && n.get === e || a(t, "flags", { configurable: !0, enumerable: !1, get: e }), e; }; }, function (e, t, n) { "use strict";

var r = Date.prototype.getDay, o = Object.prototype.toString, i = "function" == typeof Symbol && "symbol" == _typeof(Symbol.toStringTag);

e.exports = function (e) { return "object" == _typeof(e) && null !== e && (i ? function (e) { try { return r.call(e), !0; } catch (e) { return !1; } }(e) : "[object Date]" === o.call(e)); }; }, function (e, t, n) { "use strict";

t.a = function (e, t, n, r, o) { for (t = t.split ? t.split(".") : t, r = 0; r >> 0, i = 0; if (t) n = t;else { for (; i e.length) && (r = e.length);

for (var t = 0, a = new Array(r); t |

)/gm, "t").replace(/(

|

)/gm, "n").replace(/^
/gm, "").replace(/(
n|
)/gm, "n").replace(/

(.*)

/gm, "nn===== $1 =====nn").replace(https://cdn.myeboga.com/(.*)[2-6]>/gm, "nn*** $1 ***nn").replace(/(]+)>)/gim, ""), _.logMessage("https://console.appnexus.com/docs/understanding-the-debug-auction"), _.logMessage(t)), o; var a = "in response for ".concat(s.bidderCode, " adapter"); return e && e.error && (a += ": ".concat(e.error)), _.logError(a), o; }, getMappingFileInfo: function getMappingFileInfo() { return { url: "https://acdn.adnxs.com/prebid/appnexus-mapping/mappings.json", refreshInDays: 2 }; }, getUserSyncs: function getUserSyncs(e) { if (e.iframeEnabled) return [{ type: "iframe", url: "https://acdn.adnxs.com/ib/static/usersync/v3/async_usersync.html" }]; }, transformBidParams: function transformBidParams(t, e) { return t = _.convertTypes({ member: "string", invCode: "string", placementId: "number", keywords: _.transformBidderParamKeywords, publisherId: "number" }, t), e && (t.use_pmt_rule = "boolean" == typeof t.usePaymentRule && t.usePaymentRule, t.usePaymentRule && delete t.usePaymentRule, R(t.keywords) && t.keywords.forEach(j), Object.keys(t).forEach(function (e) { var r = _.convertCamelToUnderscore(e);

r !== e && (t[r] = t[e], delete t[e]); })), t; }, onBidWon: function onBidWon(e) { e.native && function (e) { var r = function (e) { var r; if (_.isStr(e) && P(e)) r = e;else if (_.isArray(e)) for (var t = 0; t nfor (var i = 0; i '));else {
if (!0 === d.b.getConfig("enableSendAllBids")) return;
p.native = {
title: (t = e.native).products[0].title,
body: t.products[0].description,
sponsoredBy: t.advertiser.description,
icon: t.advertiser.logo,
image: t.products[0].image,
clickUrl: t.products[0].click_url,
privacyLink: t.privacy.optout_click_url,
privacyIcon: t.privacy.optout_image_url,
cta: t.products[0].call_to_action,
price: t.products[0].price,
impressionTrackers: t.impression_pixels.map(function (t) {
return t.url;
})
}, p.mediaType = h.c;
}
} else e.video ? (p.vastUrl = e.displayurl, p.mediaType = h.d) : p.ad = e.creative;
c.push(p);
}), c;
},
onTimeout: function onTimeout(t) {
T() && Criteo.PubTag.Adapters.Prebid.GetAdapter(t.auctionId).handleBidTimeout();
},
onBidWon: function onBidWon(t) {
T() && Criteo.PubTag.Adapters.Prebid.GetAdapter(t.auctionId).handleBidWon(t);
},
onSetTargeting: function onSetTargeting(t) {
T() && Criteo.PubTag.Adapters.Prebid.GetAdapter(t.auctionId).handleSetTargeting(t);
}
};

function T() {
return "undefined" != typeof Criteo && Criteo.PubTag && Criteo.PubTag.Adapters && Criteo.PubTag.Adapters.Prebid;
}

function C(t) {
return f.deepAccess(t, "mediaTypes.banner.sizes") || t.sizes;
}

function A(t, e) {
return Array.isArray(t[0]) ? t.map(function (t) {
return e(t);
}) : [e(t)];
}

function S(t) {
return t[0] + "x" + t[1];
}

function I(t) {
return void 0 === t[0] && void 0 === t[1] ? "2x2" : t[0] + "x" + t[1];
}

function R(t) {
return void 0 !== f.deepAccess(t, "params.video") && void 0 !== f.deepAccess(t, "mediaTypes.video");
}

function x() {
try {
var t,
e,
r,
i,
o,
n = "criteo_fast_bid",
s = "// Hash: ",
a = y.getDataFromLocalStorage(n);
null !== a && (t = a.indexOf("n"), (e = a.substr(0, t).trim()).substr(0, s.length) !== s ? (f.logWarn("No hash found in FastBid"), y.removeDataFromLocalStorage(n)) : (r = e.substr(s.length), i = a.substr(t + 1), Object(p.verify)(i, r, g, b) ? (f.logInfo("Using Criteo FastBid"), (o = document.createElement("script")).type = "text/javascript", o.text = i, f.insertElement(o)) : (f.logWarn("Invalid Criteo FastBid found"), y.removeDataFromLocalStorage(n))));
} catch (t) {}
}

Object(i.registerBidder)(s);
},
382: function _(t, e, r) {
"use strict";

Object.defineProperty(e, "__esModule", {
value: !0
});
var a = r(383),
p = r(384);

e.verify = function (t, e, r, i) {
var o = new a.BigInteger(a.b64toHex(e)),
n = new a.BigInteger(a.b64toHex(r)),
s = o.modPowInt(i, n);
return a.removeExtraSymbols(s.toHexString()) === p.Sha256.hash(t);
};
},
383: function _(t, e, r) {
"use strict";

var i;
Object.defineProperty(e, "__esModule", {
value: !0
});
var o = (g.prototype.toHexString = function () {
if (this.s > o) && (e = !0, r = c(t)); 0 > (o += this.DB - 4)) : (t = this[i] >> (o -= 4) & 15, o this.DB ? (this[this.t - 1] |= (o & (1 > this.DB - i) : this[this.t - 1] |= o = this.DB && (i -= this.DB));
}

this.clamp(), r && g.ZERO.subTo(this, this);
}
}, g.prototype.negate = function () {
var t = T();
return g.ZERO.subTo(this, t), t;
}, g.prototype.abs = function () {
return this.s > i | s, s = (this[a] & o) = e.DV && (t[r + e.t] -= e.DV, t[r + e.t + 1] = 1);
}

0 > this.F2 : 0),
h = this.FV / d,
f = (1 = this.t) e.t = 0;else {
var i = t % this.DB,
o = this.DB - i,
n = (1 > i;

for (var s = r + 1; s > i;
}

0 >= this.DB;
}

if (t.t >= this.DB;
}

i += this.s;
} else {
for (i += this.s; r >= this.DB;
}

i -= t.s;
}

e.s = i > 15; 0 > 15,
c = a * p + u * s;
o = ((p = s * p + ((32767 & c) >> 30) + (c >>> 15) + a * u + (o >>> 30), r[i++] = 1073741823 & p;
}

return o;
}, g.prototype.am3 = function (t, e, r, i, o, n) {
for (var s = 16383 & e, a = e >> 14; 0 > 14,
c = a * p + u * s;
o = ((p = s * p + ((16383 & c) > 28) + (c >> 14) + a * u, r[i++] = 268435455 & p;
}

return o;
}, g);

function g(t) {
null !== t && this.fromHexString(t);
}

function T() {
return new o(null);
}

function C(t) {
var e,
r = 1;
return 0 != (e = t >>> 16) && (t = e, r += 16), 0 != (e = t >> 8) && (t = e, r += 8), 0 != (e = t >> 4) && (t = e, r += 4), 0 != (e = t >> 2) && (t = e, r += 2), 0 != (e = t >> 1) && (t = e, r += 1), r;
}

e.BigInteger = o, e.nbi = T, e.nbits = C;

for (var n = [], s = "0".charCodeAt(0), a = 0; a > 2), i = 3 & n, 1) : 1 == r ? (e += c(i > 4), i = 15 & n, 2) : 2 == r ? (e += c(i), e += c(n >> 2), i = 3 & n, 3) : (e += c(i > 4), e += c(15 & n), 0));
}

return 1 == r && (e += c(i > 15) * this.mpl & this.um) = t.DV;) {
t[r] -= t.DV, t[++r]++;
}
}

t.clamp(), t.drShiftTo(this.m.t, t), 0 > 15, this.um = (1 >> 0;

for (n[o - 1][14] = Math.floor(p), n[o - 1][15] = u, s = 0; s >> 0;
}

for (var h = r[0], f = r[1], l = r[2], m = r[3], v = r[4], y = r[5], b = r[6], g = r[7], d = 0; d >> 0, m = l, l = f, f = h, h = T + C >>> 0;
}

r[0] = r[0] + h >>> 0, r[1] = r[1] + f >>> 0, r[2] = r[2] + l >>> 0, r[3] = r[3] + m >>> 0, r[4] = r[4] + v >>> 0, r[5] = r[5] + y >>> 0, r[6] = r[6] + b >>> 0, r[7] = r[7] + g >>> 0;
}

for (var A = new Array(r.length), g = 0; g >> t | e >> 3;
}, S.q1 = function (t) {
return S.ROTR(17, t) ^ S.ROTR(19, t) ^ t >>> 10;
}, S.Ch = function (t, e, r) {
return t & e ^ ~t & r;
}, S.Maj = function (t, e, r) {
return t & e ^ t & r ^ e & r;
}, S);

function S() {}

e.Sha256 = i;
}
}, [380]);
pbjsChunk([187], {
481: function _(e, r, t) {
e.exports = t(482);
},
482: function _(e, r, t) {
"use strict";

Object.defineProperty(r, "__esModule", {
value: !0
}), t.d(r, "spec", function () {
return m;
});
var b = t(0),
y = t(2),
h = t(3),
i = t(11),
l = t.n(i),
a = t(483),
n = t.n(a),
s = t(1);

function v(e) {
return (v = "function" == typeof Symbol && "symbol" == _typeof(Symbol.iterator) ? function (e) {
return _typeof(e);
} : function (e) {
return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : _typeof(e);
})(e);
}

var o = [y.b, y.d],
g = 100,
w = 300,
x = 3600,
I = !0,
P = {
JPY: 1
};

function p(e) {
var r = {};
return r.id = e.bidId, r.ext = {}, r.ext.siteID = e.params.siteId, !e.params.hasOwnProperty("id") || "string" != typeof e.params.id && "number" != typeof e.params.id ? r.ext.sid = "".concat(e.params.size[0], "x").concat(e.params.size[1]) : r.ext.sid = String(e.params.id), e.params.hasOwnProperty("bidFloor") && e.params.hasOwnProperty("bidFloorCur") && (r.bidfloor = e.params.bidFloor, r.bidfloorcur = e.params.bidFloorCur), r;
}

function d(e) {
return Array.isArray(e) && 2 === e.length && n()(e[0]) && n()(e[1]);
}

function c(e, r) {
if (d(e)) return e[0] === r[0] && e[1] === r[1];

for (var t = 0; t e.length) && (r = e.length);

for (var t = 0, i = new Array(r); t n

nnx3c!-- Rubicon Project Ad Tag --x3en
nn

nn

")), n = v(f[r.size_id].split("x").map(function (e) {
return Number(e);
}), 2), i.width = n[0], i.height = n[1]), i.rubiconTargeting = (Array.isArray(r.targeting) ? r.targeting : []).reduce(function (e, r) {
return e[r.key] = r.values[0], e;
}, {
rpfl_elemid: s.adUnitCode
}), e.push(i)) : g.logError("Rubicon: bidRequest undefined at index position:".concat(t), c, d), e;
}, []).sort(function (e, r) {
return (r.cpm || 0) - (e.cpm || 0);
});
},
getUserSyncs: function getUserSyncs(e, r, t, i) {
if (!R && e.iframeEnabled) {
var n = "";
return t && "string" == typeof t.consentString && ("boolean" == typeof t.gdprApplies ? n += "?gdpr=".concat(Number(t.gdprApplies), "&gdpr_consent=").concat(t.consentString) : n += "?gdpr_consent=".concat(t.consentString)), i && (n += "".concat(n ? "&" : "?"https://slate.com/,"us_privacy=").concat(encodeURIComponent(i))), R = !0, {
type: "iframe",
url: a + n
};
}
},
transformBidParams: function transformBidParams(e) {
return g.convertTypes({
accountId: "number",
siteId: "number",
zoneId: "number"
}, e);
}
};

function _(e, r) {
var t,
i = 0 e.length) && (t = e.length);

for (var r = 0, n = new Array(t); r ‘;
var r, n;
};
};

var a = function a(e) {
var r = 0 = e && r.innerWidth r.length) && (e = r.length);

for (var t = 0, n = new Array(e); t b ? a : b;
}
/**
* Fast loop through watched elements
*/

function onScroll() {
list.forEach(updateVisibility);
}
/**
* updates seen property
* @param {Visble} item
* @param {{}} evt
* @fires Visible#shown
* @fires Visible#hidden
*/

function updateSeen(item, evt) {
var px = evt.visiblePx,
percent = evt.visiblePercent; // if some pixels are visible and we’re greater/equal to threshold

if (px && percent >= item.shownThreshold && !item.seen) {
item.seen = true;
setTimeout(function () {
item.trigger(“shown”, new VisibleEvent(“shown”, evt));
}, 15); // if no pixels or percent is less than threshold
} else if ((!px || percent = 0 && rect.left >= 0 && rect.bottom 1) {
result += getLinearSpacialHash(remainder, Math.floor(stepSize / base), optimalK – 1, base);
}

return result;
}
/**
* @param {ClientRect} rect
* @param {number} innerHeight
* @returns {number}
*/

function getVerticallyVisiblePixels(rect, innerHeight) {
return min(innerHeight, max(rect.bottom, 0)) – min(max(rect.top, 0), innerHeight);
}
/**
* Get offset of element relative to entire page
*
* @param {Element} el
* @returns {{left: number, top: number}}
* @see http://jsperf.com/offset-vs-getboundingclientrect/7
*/

function getPageOffset(el) {
var offsetLeft = el.offsetLeft,
offsetTop = el.offsetTop;

while (el = el.offsetParent) {
offsetLeft += el.offsetLeft;
offsetTop += el.offsetTop;
}

return {
left: offsetLeft,
top: offsetTop
};
}
/**
* Create a new Visible class to observe when elements enter and leave the viewport
*
* Call destroy function to stop listening (this is until we have better support for watching for Node Removal)
* @param {Element} el
* @param {{shownThreshold: number, hiddenThreshold: number}} [options]
* @class
* @example this.visible = new $visibility.Visible(el);
*/

Visible = function Visible(el, options) {
options = options || {};
this.el = el;
this.seen = false;
this.preload = false;
this.preloadThreshhold = options && options.preloadThreshhold || 0;
this.shownThreshold = options && options.shownThreshold || 0;
this.hiddenThreshold = options && min(options.shownThreshold, options.hiddenThreshold) || 0;
list.push(this);
updateVisibility(this); // set immediately to visible or not
};

Visible.prototype = {
/**
* Stop triggering.
*/
destroy: function destroy() {
// remove from list
list.splice(list.indexOf(this), 1);
}
/**
* @name Visible#on
* @function
* @param {‘shown’|’hidden’} e EventName
* @param {function} cb Callback
*/

/**
* @name Visible#trigger
* @function
* @param {‘shown’|’hidden’} e
* @param {{}}
*/

};
Eventify.enable(Visible.prototype);

VisibleEvent = function VisibleEvent(type, options) {
var _this = this;

this.type = type;
Object.keys(options).forEach(function (key) {
_this[key] = options[key];
});
}; // listen for scroll events (throttled)

$document.addEventListener(“scroll”, _throttle(onScroll, 200)); // public

this.getPageOffset = getPageOffset;
this.getLinearSpacialHash = getLinearSpacialHash;
this.getVerticallyVisiblePixels = getVerticallyVisiblePixels;
this.getViewportHeight = getViewportHeight;
this.getViewportWidth = getViewportWidth;
this.isElementNotHidden = isElementNotHidden;
this.isElementInViewport = isElementInViewport;
this.Visible = Visible;
}]);
}, {}];
require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==”function”&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(“Cannot find module ‘”+o+”‘”);throw f.code=”MODULE_NOT_FOUND”,f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==”function”&&require;for(var o=0;o

[ad_2]

Source link

0
UA-77446339-1