function ispassive() { var t = !1; try { addeventlistener("test", null, object.defineproperty({}, "passive", { get: function() { t = !0 } })) } catch(t) {} return t } ! function(t, e, i) { function n(n, r) { this.wrapper = "string" == typeof n ? e.queryselector(n) : n, this.scroller = this.wrapper.children[0], this.scrollerstyle = this.scroller.style, this.options = { zoommin: 1, zoommax: 4, startzoom: 1, resizescrollbars: !0, mousewheelspeed: 20, snapthreshold: .334, disablepointer: !a.haspointer, disabletouch: a.haspointer || !a.hastouch, disablemouse: a.haspointer || a.hastouch, startx: 0, starty: 0, scrolly: !0, directionlockthreshold: 5, momentum: !0, bounce: !0, bouncetime: 600, bounceeasing: "", preventdefault: !0, preventdefaultexception: { tagname: /^(input|textarea|button|select)$/ }, hwcompositing: !0, usetransition: !0, usetransform: !0, bindtowrapper: void 0 === t.onmousedown }; for (var s in r) this.options[s] = r[s]; this.translatez = this.options.hwcompositing && a.hasperspective ? " translatez(0)": "", this.options.usetransition = a.hastransition && this.options.usetransition, this.options.usetransform = a.hastransform && this.options.usetransform, this.options.eventpassthrough = !0 === this.options.eventpassthrough ? "vertical": this.options.eventpassthrough, this.options.preventdefault = !this.options.eventpassthrough && this.options.preventdefault, this.options.scrolly = "vertical" != this.options.eventpassthrough && this.options.scrolly, this.options.scrollx = "horizontal" != this.options.eventpassthrough && this.options.scrollx, this.options.freescroll = this.options.freescroll && !this.options.eventpassthrough, this.options.directionlockthreshold = this.options.eventpassthrough ? 0 : this.options.directionlockthreshold, this.options.bounceeasing = "string" == typeof this.options.bounceeasing ? a.ease[this.options.bounceeasing] || a.ease.circular: this.options.bounceeasing, this.options.resizepolling = void 0 === this.options.resizepolling ? 60 : this.options.resizepolling, !0 === this.options.tap && (this.options.tap = "tap"), this.options.usetransition || this.options.usetransform || /relative|absolute/i.test(this.scrollerstyle.position) || (this.scrollerstyle.position = "relative"), "scale" == this.options.shrinkscrollbars && (this.options.usetransition = !1), this.options.invertwheeldirection = this.options.invertwheeldirection ? -1 : 1, this.x = 0, this.y = 0, this.directionx = 0, this.directiony = 0, this._events = {}, this.scale = i.min(i.max(this.options.startzoom, this.options.zoommin), this.options.zoommax), this._init(), this.refresh(), this.scrollto(this.options.startx, this.options.starty), this.enable() } function r(t, i, n) { var r = e.createelement("div"), s = e.createelement("div"); return ! 0 === n && (r.style.csstext = "position:absolute;z-index:9999", s.style.csstext = "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);border-radius:3px"), s.classname = "iscrollindicator", "h" == t ? (!0 === n && (r.style.csstext += ";height:7px;left:2px;right:2px;bottom:0", s.style.height = "100%"), r.classname = "iscrollhorizontalscrollbar") : (!0 === n && (r.style.csstext += ";width:7px;bottom:2px;top:2px;right:1px", s.style.width = "100%"), r.classname = "iscrollverticalscrollbar"), r.style.csstext += ";overflow:hidden", i || (r.style.pointerevents = "none"), r.appendchild(s), r } function s(i, n) { this.wrapper = "string" == typeof n.el ? e.queryselector(n.el) : n.el, this.wrapperstyle = this.wrapper.style, this.indicator = this.wrapper.children[0], this.indicatorstyle = this.indicator.style, this.scroller = i, this.options = { listenx: !0, listeny: !0, interactive: !1, resize: !0, defaultscrollbars: !1, shrink: !1, fade: !1, speedratiox: 0, speedratioy: 0 }; for (var r in n) this.options[r] = n[r]; if (this.sizeratiox = 1, this.sizeratioy = 1, this.maxposx = 0, this.maxposy = 0, this.options.interactive && (this.options.disabletouch || (a.addevent(this.indicator, "touchstart", this), a.addevent(t, "touchend", this)), this.options.disablepointer || (a.addevent(this.indicator, a.prefixpointerevent("pointerdown"), this), a.addevent(t, a.prefixpointerevent("pointerup"), this)), this.options.disablemouse || (a.addevent(this.indicator, "mousedown", this), a.addevent(t, "mouseup", this))), this.options.fade) { this.wrapperstyle[a.style.transform] = this.scroller.translatez; var s = a.style.transitionduration; if (!s) return; this.wrapperstyle[s] = a.isbadandroid ? "0.0001ms": "0ms"; var l = this; a.isbadandroid && o(function() { "0.0001ms" === l.wrapperstyle[s] && (l.wrapperstyle[s] = "0s") }), this.wrapperstyle.opacity = "0" } } var o = t.requestanimationframe || t.webkitrequestanimationframe || t.mozrequestanimationframe || t.orequestanimationframe || t.msrequestanimationframe || function(e) { t.settimeout(e, 1e3 / 60) }, a = function() { function n(t) { return ! 1 !== o && ("" === o ? t: o + t.charat(0).touppercase() + t.substr(1)) } var r = {}, s = e.createelement("div").style, o = function() { for (var t = ["t", "webkitt", "mozt", "mst", "ot"], e = 0, i = t.length; e < i; e++) if (t[e] + "ransform" in s) return t[e].substr(0, t[e].length - 1); return ! 1 } (); r.gettime = date.now || function() { return (new date).gettime() }, r.extend = function(t, e) { for (var i in e) t[i] = e[i] }, r.addevent = function(t, e, i, n) { t.addeventlistener(e, i, !!n) }, r.removeevent = function(t, e, i, n) { t.removeeventlistener(e, i, !!n) }, r.prefixpointerevent = function(e) { return t.mspointerevent ? "mspointer" + e.charat(7).touppercase() + e.substr(8) : e }, r.momentum = function(t, e, n, r, s, o) { var a, l, c = t - e, h = i.abs(c) / n; return o = void 0 === o ? 6e-4: o, a = t + h * h / (2 * o) * (c < 0 ? -1 : 1), l = h / o, a < r ? (a = s ? r - s / 2.5 * (h / 8) : r, c = i.abs(a - t), l = c / h) : a > 0 && (a = s ? s / 2.5 * (h / 8) : 0, c = i.abs(t) + a, l = c / h), { destination: i.round(a), duration: l } }; var a = n("transform"); return r.extend(r, { hastransform: !1 !== a, hasperspective: n("perspective") in s, hastouch: "ontouchstart" in t, haspointer: !(!t.pointerevent && !t.mspointerevent), hastransition: n("transition") in s }), r.isbadandroid = function() { var e = t.navigator.appversion; if (/android/.test(e) && !/chrome\/\d/.test(e)) { var i = e.match(/safari\/(\d+.\d)/); return ! (i && "object" == typeof i && i.length >= 2) || parsefloat(i[1]) < 535.19 } return ! 1 } (), r.extend(r.style = {}, { transform: a, transitiontimingfunction: n("transitiontimingfunction"), transitionduration: n("transitionduration"), transitiondelay: n("transitiondelay"), transformorigin: n("transformorigin"), touchaction: n("touchaction") }), r.hasclass = function(t, e) { return new regexp("(^|\\s)" + e + "(\\s|$)").test(t.classname) }, r.addclass = function(t, e) { if (!r.hasclass(t, e)) { var i = t.classname.split(" "); i.push(e), t.classname = i.join(" ") } }, r.removeclass = function(t, e) { if (r.hasclass(t, e)) { var i = new regexp("(^|\\s)" + e + "(\\s|$)", "g"); t.classname = t.classname.replace(i, " ") } }, r.offset = function(t) { for (var e = -t.offsetleft, i = -t.offsettop; t = t.offsetparent;) e -= t.offsetleft, i -= t.offsettop; return { left: e, top: i } }, r.preventdefaultexception = function(t, e) { for (var i in e) if (e[i].test(t[i])) return ! 0; return ! 1 }, r.extend(r.eventtype = {}, { touchstart: 1, touchmove: 1, touchend: 1, mousedown: 2, mousemove: 2, mouseup: 2, pointerdown: 3, pointermove: 3, pointerup: 3, mspointerdown: 3, mspointermove: 3, mspointerup: 3 }), r.extend(r.ease = {}, { quadratic: { style: "cubic-bezier(0.25, 0.46, 0.45, 0.94)", fn: function(t) { return t * (2 - t) } }, circular: { style: "cubic-bezier(0.1, 0.57, 0.1, 1)", fn: function(t) { return i.sqrt(1 - --t * t) } }, back: { style: "cubic-bezier(0.175, 0.885, 0.32, 1.275)", fn: function(t) { return (t -= 1) * t * (5 * t + 4) + 1 } }, bounce: { style: "", fn: function(t) { return (t /= 1) < 1 / 2.75 ? 7.5625 * t * t: t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375 } }, elastic: { style: "", fn: function(t) { return 0 === t ? 0 : 1 == t ? 1 : .4 * i.pow(2, -10 * t) * i.sin((t - .055) * (2 * i.pi) / .22) + 1 } } }), r.tap = function(t, i) { var n = e.createevent("event"); n.initevent(i, !0, !0), n.pagex = t.pagex, n.pagey = t.pagey, t.target.dispatchevent(n) }, r.click = function(i) { var n, r = i.target; /(select|input|textarea)/i.test(r.tagname) || (n = e.createevent(t.mouseevent ? "mouseevents": "event"), n.initevent("click", !0, !0), n.view = i.view || t, n.detail = 1, n.screenx = r.screenx || 0, n.screeny = r.screeny || 0, n.clientx = r.clientx || 0, n.clienty = r.clienty || 0, n.ctrlkey = !!i.ctrlkey, n.altkey = !!i.altkey, n.shiftkey = !!i.shiftkey, n.metakey = !!i.metakey, n.button = 0, n.relatedtarget = null, n._constructed = !0, r.dispatchevent(n)) }, r.gettouchaction = function(t, e) { var i = "none"; return "vertical" === t ? i = "pan-y": "horizontal" === t && (i = "pan-x"), e && "none" != i && (i += " pinch-zoom"), i }, r.getrect = function(t) { if (t instanceof svgelement) { var e = t.getboundingclientrect(); return { top: e.top, left: e.left, width: e.width, height: e.height } } return { top: t.offsettop, left: t.offsetleft, width: t.offsetwidth, height: t.offsetheight } }, r } (); n.prototype = { version: "5.2.0-snapshot", _init: function() { this._initevents(), this.options.zoom && this._initzoom(), (this.options.scrollbars || this.options.indicators) && this._initindicators(), this.options.mousewheel && this._initwheel(), this.options.snap && this._initsnap(), this.options.keybindings && this._initkeys() }, destroy: function() { this._initevents(!0), cleartimeout(this.resizetimeout), this.resizetimeout = null, this._execevent("destroy") }, _transitionend: function(t) { t.target == this.scroller && this.isintransition && (this._transitiontime(), this.resetposition(this.options.bouncetime) || (this.isintransition = !1, this._execevent("scrollend"))) }, _start: function(t) { if (1 != a.eventtype[t.type]) { if (0 !== (t.which ? t.button: t.button < 2 ? 0 : 4 == t.button ? 1 : 2)) return } if (this.enabled && (!this.initiated || a.eventtype[t.type] === this.initiated)) { ! this.options.preventdefault || a.isbadandroid || a.preventdefaultexception(t.target, this.options.preventdefaultexception) || t.preventdefault(); var e, n = t.touches ? t.touches[0] : t; this.initiated = a.eventtype[t.type], this.moved = !1, this.distx = 0, this.disty = 0, this.directionx = 0, this.directiony = 0, this.directionlocked = 0, this.starttime = a.gettime(), this.options.usetransition && this.isintransition ? (this._transitiontime(), this.isintransition = !1, e = this.getcomputedposition(), this._translate(i.round(e.x), i.round(e.y)), this._execevent("scrollend")) : !this.options.usetransition && this.isanimating && (this.isanimating = !1, this._execevent("scrollend")), this.startx = this.x, this.starty = this.y, this.absstartx = this.x, this.absstarty = this.y, this.pointx = n.pagex, this.pointy = n.pagey, this._execevent("beforescrollstart") } }, _move: function(t) { if (this.enabled && a.eventtype[t.type] === this.initiated) { this.options.preventdefault && t.preventdefault(); var e, n, r, s, o = t.touches ? t.touches[0] : t, l = o.pagex - this.pointx, c = o.pagey - this.pointy, h = a.gettime(); if (this.pointx = o.pagex, this.pointy = o.pagey, this.distx += l, this.disty += c, r = i.abs(this.distx), s = i.abs(this.disty), !(h - this.endtime > 300 && r < 10 && s < 10)) { if (this.directionlocked || this.options.freescroll || (r > s + this.options.directionlockthreshold ? this.directionlocked = "h": s >= r + this.options.directionlockthreshold ? this.directionlocked = "v": this.directionlocked = "n"), "h" == this.directionlocked) { if ("vertical" == this.options.eventpassthrough) t.preventdefault(); else if ("horizontal" == this.options.eventpassthrough) return void(this.initiated = !1); c = 0 } else if ("v" == this.directionlocked) { if ("horizontal" == this.options.eventpassthrough) t.preventdefault(); else if ("vertical" == this.options.eventpassthrough) return void(this.initiated = !1); l = 0 } l = this.hashorizontalscroll ? l: 0, c = this.hasverticalscroll ? c: 0, e = this.x + l, n = this.y + c, (e > 0 || e < this.maxscrollx) && (e = this.options.bounce ? this.x + l / 3 : e > 0 ? 0 : this.maxscrollx), (n > 0 || n < this.maxscrolly) && (n = this.options.bounce ? this.y + c / 3 : n > 0 ? 0 : this.maxscrolly), this.directionx = l > 0 ? -1 : l < 0 ? 1 : 0, this.directiony = c > 0 ? -1 : c < 0 ? 1 : 0, this.moved || this._execevent("scrollstart"), this.moved = !0, this._translate(e, n), h - this.starttime > 300 && (this.starttime = h, this.startx = this.x, this.starty = this.y) } } }, _end: function(t) { if (this.enabled && a.eventtype[t.type] === this.initiated) { this.options.preventdefault && !a.preventdefaultexception(t.target, this.options.preventdefaultexception) && t.preventdefault(); var e, n, r = (t.changedtouches && t.changedtouches[0], a.gettime() - this.starttime), s = i.round(this.x), o = i.round(this.y), l = i.abs(s - this.startx), c = i.abs(o - this.starty), h = 0, p = ""; if (this.isintransition = 0, this.initiated = 0, this.endtime = a.gettime(), !this.resetposition(this.options.bouncetime)) { if (this.scrollto(s, o), !this.moved) return this.options.tap && a.tap(t, this.options.tap), this.options.click && a.click(t), void this._execevent("scrollcancel"); if (this._events.flick && r < 200 && l < 100 && c < 100) return void this._execevent("flick"); if (this.options.momentum && r < 300 && (e = this.hashorizontalscroll ? a.momentum(this.x, this.startx, r, this.maxscrollx, this.options.bounce ? this.wrapperwidth: 0, this.options.deceleration) : { destination: s, duration: 0 }, n = this.hasverticalscroll ? a.momentum(this.y, this.starty, r, this.maxscrolly, this.options.bounce ? this.wrapperheight: 0, this.options.deceleration) : { destination: o, duration: 0 }, s = e.destination, o = n.destination, h = i.max(e.duration, n.duration), this.isintransition = 1), this.options.snap) { var u = this._nearestsnap(s, o); this.currentpage = u, h = this.options.snapspeed || i.max(i.max(i.min(i.abs(s - u.x), 1e3), i.min(i.abs(o - u.y), 1e3)), 300), s = u.x, o = u.y, this.directionx = 0, this.directiony = 0, p = this.options.bounceeasing } if (s != this.x || o != this.y) return (s > 0 || s < this.maxscrollx || o > 0 || o < this.maxscrolly) && (p = a.ease.quadratic), void this.scrollto(s, o, h, p); this._execevent("scrollend") } } }, _resize: function() { var t = this; cleartimeout(this.resizetimeout), this.resizetimeout = settimeout(function() { t.refresh() }, this.options.resizepolling) }, resetposition: function(t) { var e = this.x, i = this.y; return t = t || 0, !this.hashorizontalscroll || this.x > 0 ? e = 0 : this.x < this.maxscrollx && (e = this.maxscrollx), !this.hasverticalscroll || this.y > 0 ? i = 0 : this.y < this.maxscrolly && (i = this.maxscrolly), (e != this.x || i != this.y) && (this.scrollto(e, i, t, this.options.bounceeasing), !0) }, disable: function() { this.enabled = !1 }, enable: function() { this.enabled = !0 }, refresh: function() { a.getrect(this.wrapper), this.wrapperwidth = this.wrapper.clientwidth, this.wrapperheight = this.wrapper.clientheight; var t = a.getrect(this.scroller); this.scrollerwidth = i.round(t.width * this.scale), this.scrollerheight = i.round(t.height * this.scale), this.maxscrollx = this.wrapperwidth - this.scrollerwidth, this.maxscrolly = this.wrapperheight - this.scrollerheight, this.hashorizontalscroll = this.options.scrollx && this.maxscrollx < 0, this.hasverticalscroll = this.options.scrolly && this.maxscrolly < 0, this.hashorizontalscroll || (this.maxscrollx = 0, this.scrollerwidth = this.wrapperwidth), this.hasverticalscroll || (this.maxscrolly = 0, this.scrollerheight = this.wrapperheight), this.endtime = 0, this.directionx = 0, this.directiony = 0, a.haspointer && !this.options.disablepointer && (this.wrapper.style[a.style.touchaction] = a.gettouchaction(this.options.eventpassthrough, !0), this.wrapper.style[a.style.touchaction] || (this.wrapper.style[a.style.touchaction] = a.gettouchaction(this.options.eventpassthrough, !1))), this.wrapperoffset = a.offset(this.wrapper), this._execevent("refresh"), this.resetposition() }, on: function(t, e) { this._events[t] || (this._events[t] = []), this._events[t].push(e) }, off: function(t, e) { if (this._events[t]) { var i = this._events[t].indexof(e); i > -1 && this._events[t].splice(i, 1) } }, _execevent: function(t) { if (this._events[t]) { var e = 0, i = this._events[t].length; if (i) for (; e < i; e++) this._events[t][e].apply(this, [].slice.call(arguments, 1)) } }, scrollby: function(t, e, i, n) { t = this.x + t, e = this.y + e, i = i || 0, this.scrollto(t, e, i, n) }, scrollto: function(t, e, i, n) { n = n || a.ease.circular, this.isintransition = this.options.usetransition && i > 0; var r = this.options.usetransition && n.style; ! i || r ? (r && (this._transitiontimingfunction(n.style), this._transitiontime(i)), this._translate(t, e)) : this._animate(t, e, i, n.fn) }, scrolltoelement: function(t, e, n, r, s) { if (t = t.nodetype ? t: this.scroller.queryselector(t)) { var o = a.offset(t); o.left -= this.wrapperoffset.left, o.top -= this.wrapperoffset.top; var l = a.getrect(t), c = a.getrect(this.wrapper); ! 0 === n && (n = i.round(l.width / 2 - c.width / 2)), !0 === r && (r = i.round(l.height / 2 - c.height / 2)), o.left -= n || 0, o.top -= r || 0, o.left = o.left > 0 ? 0 : o.left < this.maxscrollx ? this.maxscrollx: o.left, o.top = o.top > 0 ? 0 : o.top < this.maxscrolly ? this.maxscrolly: o.top, e = void 0 === e || null === e || "auto" === e ? i.max(i.abs(this.x - o.left), i.abs(this.y - o.top)) : e, this.scrollto(o.left, o.top, e, s) } }, _transitiontime: function(t) { if (this.options.usetransition) { t = t || 0; var e = a.style.transitionduration; if (e) { if (this.scrollerstyle[e] = t + "ms", !t && a.isbadandroid) { this.scrollerstyle[e] = "0.0001ms"; var i = this; o(function() { "0.0001ms" === i.scrollerstyle[e] && (i.scrollerstyle[e] = "0s") }) } if (this.indicators) for (var n = this.indicators.length; n--;) this.indicators[n].transitiontime(t) } } }, _transitiontimingfunction: function(t) { if (this.scrollerstyle[a.style.transitiontimingfunction] = t, this.indicators) for (var e = this.indicators.length; e--;) this.indicators[e].transitiontimingfunction(t) }, _translate: function(t, e) { if (this.options.usetransform ? this.scrollerstyle[a.style.transform] = "translate(" + t + "px," + e + "px) scale(" + this.scale + ") " + this.translatez: (t = i.round(t), e = i.round(e), this.scrollerstyle.left = t + "px", this.scrollerstyle.top = e + "px"), this.x = t, this.y = e, this.indicators) for (var n = this.indicators.length; n--;) this.indicators[n].updateposition() }, _initevents: function(e) { var i = e ? a.removeevent: a.addevent, n = this.options.bindtowrapper ? this.wrapper: t; i(t, "orientationchange", this), i(t, "resize", this), this.options.click && i(this.wrapper, "click", this, !0), this.options.disablemouse || (i(this.wrapper, "mousedown", this), i(n, "mousemove", this), i(n, "mousecancel", this), i(n, "mouseup", this)), a.haspointer && !this.options.disablepointer && (i(this.wrapper, a.prefixpointerevent("pointerdown"), this), i(n, a.prefixpointerevent("pointermove"), this), i(n, a.prefixpointerevent("pointercancel"), this), i(n, a.prefixpointerevent("pointerup"), this)), a.hastouch && !this.options.disabletouch && (i(this.wrapper, "touchstart", this), i(n, "touchmove", this), i(n, "touchcancel", this), i(n, "touchend", this)), i(this.scroller, "transitionend", this), i(this.scroller, "webkittransitionend", this), i(this.scroller, "otransitionend", this), i(this.scroller, "mstransitionend", this) }, getcomputedposition: function() { var e, i, n = t.getcomputedstyle(this.scroller, null); return this.options.usetransform ? (n = n[a.style.transform].split(")")[0].split(", "), e = +(n[12] || n[4]), i = +(n[13] || n[5])) : (e = +n.left.replace(/[^-\d.]/g, ""), i = +n.top.replace(/[^-\d.]/g, "")), { x: e, y: i } }, _initindicators: function() { function t(t) { if (a.indicators) for (var e = a.indicators.length; e--;) t.call(a.indicators[e]) } var e, i = this.options.interactivescrollbars, n = "string" != typeof this.options.scrollbars, o = [], a = this; this.indicators = [], this.options.scrollbars && (this.options.scrolly && (e = { el: r("v", i, this.options.scrollbars), interactive: i, defaultscrollbars: !0, customstyle: n, resize: this.options.resizescrollbars, shrink: this.options.shrinkscrollbars, fade: this.options.fadescrollbars, listenx: !1 }, this.wrapper.appendchild(e.el), o.push(e)), this.options.scrollx && (e = { el: r("h", i, this.options.scrollbars), interactive: i, defaultscrollbars: !0, customstyle: n, resize: this.options.resizescrollbars, shrink: this.options.shrinkscrollbars, fade: this.options.fadescrollbars, listeny: !1 }, this.wrapper.appendchild(e.el), o.push(e))), this.options.indicators && (o = o.concat(this.options.indicators)); for (var l = o.length; l--;) this.indicators.push(new s(this, o[l])); this.options.fadescrollbars && (this.on("scrollend", function() { t(function() { this.fade() }) }), this.on("scrollcancel", function() { t(function() { this.fade() }) }), this.on("scrollstart", function() { t(function() { this.fade(1) }) }), this.on("beforescrollstart", function() { t(function() { this.fade(1, !0) }) })), this.on("refresh", function() { t(function() { this.refresh() }) }), this.on("destroy", function() { t(function() { this.destroy() }), delete this.indicators }) }, _initzoom: function() { this.scrollerstyle[a.style.transformorigin] = "0 0" }, _zoomstart: function(t) { var e = i.abs(t.touches[0].pagex - t.touches[1].pagex), n = i.abs(t.touches[0].pagey - t.touches[1].pagey); this.touchesdistancestart = i.sqrt(e * e + n * n), this.startscale = this.scale, this.originx = i.abs(t.touches[0].pagex + t.touches[1].pagex) / 2 + this.wrapperoffset.left - this.x, this.originy = i.abs(t.touches[0].pagey + t.touches[1].pagey) / 2 + this.wrapperoffset.top - this.y, this._execevent("zoomstart") }, _zoom: function(t) { if (this.enabled && a.eventtype[t.type] === this.initiated) { this.options.preventdefault && t.preventdefault(); var e, n, r, s = i.abs(t.touches[0].pagex - t.touches[1].pagex), o = i.abs(t.touches[0].pagey - t.touches[1].pagey), l = i.sqrt(s * s + o * o), c = 1 / this.touchesdistancestart * l * this.startscale; this.scaled = !0, c < this.options.zoommin ? c = .5 * this.options.zoommin * i.pow(2, c / this.options.zoommin) : c > this.options.zoommax && (c = 2 * this.options.zoommax * i.pow(.5, this.options.zoommax / c)), e = c / this.startscale, n = this.originx - this.originx * e + this.startx, r = this.originy - this.originy * e + this.starty, this.scale = c, this.scrollto(n, r, 0) } }, _zoomend: function(t) { if (this.enabled && a.eventtype[t.type] === this.initiated) { this.options.preventdefault && t.preventdefault(); var e, i, n; this.isintransition = 0, this.initiated = 0, this.scale > this.options.zoommax ? this.scale = this.options.zoommax: this.scale < this.options.zoommin && (this.scale = this.options.zoommin), this.refresh(), n = this.scale / this.startscale, e = this.originx - this.originx * n + this.startx, i = this.originy - this.originy * n + this.starty, e > 0 ? e = 0 : e < this.maxscrollx && (e = this.maxscrollx), i > 0 ? i = 0 : i < this.maxscrolly && (i = this.maxscrolly), this.x == e && this.y == i || this.scrollto(e, i, this.options.bouncetime), this.scaled = !1, this._execevent("zoomend") } }, zoom: function(t, e, i, n) { if (t < this.options.zoommin ? t = this.options.zoommin: t > this.options.zoommax && (t = this.options.zoommax), t != this.scale) { var r = t / this.scale; e = void 0 === e ? this.wrapperwidth / 2 : e, i = void 0 === i ? this.wrapperheight / 2 : i, n = void 0 === n ? 300 : n, e = e + this.wrapperoffset.left - this.x, i = i + this.wrapperoffset.top - this.y, e = e - e * r + this.x, i = i - i * r + this.y, this.scale = t, this.refresh(), e > 0 ? e = 0 : e < this.maxscrollx && (e = this.maxscrollx), i > 0 ? i = 0 : i < this.maxscrolly && (i = this.maxscrolly), this.scrollto(e, i, n) } }, _wheelzoom: function(t) { var e, n, r = this; if (cleartimeout(this.wheeltimeout), this.wheeltimeout = settimeout(function() { r._execevent("zoomend") }, 400), "deltax" in t) e = -t.deltay / i.abs(t.deltay); else if ("wheeldeltax" in t) e = t.wheeldeltay / i.abs(t.wheeldeltay); else if ("wheeldelta" in t) e = t.wheeldelta / i.abs(t.wheeldelta); else { if (! ("detail" in t)) return; e = -t.detail / i.abs(t.wheeldelta) } n = this.scale + e / 5, this.zoom(n, t.pagex, t.pagey, 0) }, _initwheel: function() { a.addevent(this.wrapper, "wheel", this), a.addevent(this.wrapper, "mousewheel", this), a.addevent(this.wrapper, "dommousescroll", this), this.on("destroy", function() { cleartimeout(this.wheeltimeout), this.wheeltimeout = null, a.removeevent(this.wrapper, "wheel", this), a.removeevent(this.wrapper, "mousewheel", this), a.removeevent(this.wrapper, "dommousescroll", this) }) }, _wheel: function(t) { if (this.enabled) { t.preventdefault(); var e, n, r, s, o = this; if (void 0 === this.wheeltimeout && o._execevent("scrollstart"), cleartimeout(this.wheeltimeout), this.wheeltimeout = settimeout(function() { o.options.snap || o._execevent("scrollend"), o.wheeltimeout = void 0 }, 400), "deltax" in t) 1 === t.deltamode ? (e = -t.deltax * this.options.mousewheelspeed, n = -t.deltay * this.options.mousewheelspeed) : (e = -t.deltax, n = -t.deltay); else if ("wheeldeltax" in t) e = t.wheeldeltax / 120 * this.options.mousewheelspeed, n = t.wheeldeltay / 120 * this.options.mousewheelspeed; else if ("wheeldelta" in t) e = n = t.wheeldelta / 120 * this.options.mousewheelspeed; else { if (! ("detail" in t)) return; e = n = -t.detail / 3 * this.options.mousewheelspeed } if (e *= this.options.invertwheeldirection, n *= this.options.invertwheeldirection, this.hasverticalscroll || (e = n, n = 0), this.options.snap) return r = this.currentpage.pagex, s = this.currentpage.pagey, e > 0 ? r--:e < 0 && r++, n > 0 ? s--:n < 0 && s++, void this.gotopage(r, s); r = this.x + i.round(this.hashorizontalscroll ? e: 0), s = this.y + i.round(this.hasverticalscroll ? n: 0), this.directionx = e > 0 ? -1 : e < 0 ? 1 : 0, this.directiony = n > 0 ? -1 : n < 0 ? 1 : 0, r > 0 ? r = 0 : r < this.maxscrollx && (r = this.maxscrollx), s > 0 ? s = 0 : s < this.maxscrolly && (s = this.maxscrolly), this.scrollto(r, s, 0) } }, _initsnap: function() { this.currentpage = {}, "string" == typeof this.options.snap && (this.options.snap = this.scroller.queryselectorall(this.options.snap)), this.on("refresh", function() { var t, e, n, r, s, o, l, c = 0, h = 0, p = 0, u = this.options.snapstepx || this.wrapperwidth, d = this.options.snapstepy || this.wrapperheight; if (this.pages = [], this.wrapperwidth && this.wrapperheight && this.scrollerwidth && this.scrollerheight) { if (!0 === this.options.snap) for (n = i.round(u / 2), r = i.round(d / 2); p > -this.scrollerwidth;) { for (this.pages[c] = [], t = 0, s = 0; s > -this.scrollerheight;) this.pages[c][t] = { x: i.max(p, this.maxscrollx), y: i.max(s, this.maxscrolly), width: u, height: d, cx: p - n, cy: s - r }, s -= d, t++; p -= u, c++ } else for (o = this.options.snap, t = o.length, e = -1; c < t; c++) l = a.getrect(o[c]), (0 === c || l.left <= a.getrect(o[c - 1]).left) && (h = 0, e++), this.pages[h] || (this.pages[h] = []), p = i.max( - l.left, this.maxscrollx), s = i.max( - l.top, this.maxscrolly), n = p - i.round(l.width / 2), r = s - i.round(l.height / 2), this.pages[h][e] = { x: p, y: s, width: l.width, height: l.height, cx: n, cy: r }, p > this.maxscrollx && h++; this.gotopage(this.currentpage.pagex || 0, this.currentpage.pagey || 0, 0), this.options.snapthreshold % 1 == 0 ? (this.snapthresholdx = this.options.snapthreshold, this.snapthresholdy = this.options.snapthreshold) : (this.snapthresholdx = i.round(this.pages[this.currentpage.pagex][this.currentpage.pagey].width * this.options.snapthreshold), this.snapthresholdy = i.round(this.pages[this.currentpage.pagex][this.currentpage.pagey].height * this.options.snapthreshold)) } }), this.on("flick", function() { var t = this.options.snapspeed || i.max(i.max(i.min(i.abs(this.x - this.startx), 1e3), i.min(i.abs(this.y - this.starty), 1e3)), 300); this.gotopage(this.currentpage.pagex + this.directionx, this.currentpage.pagey + this.directiony, t) }) }, _nearestsnap: function(t, e) { if (!this.pages.length) return { x: 0, y: 0, pagex: 0, pagey: 0 }; var n = 0, r = this.pages.length, s = 0; if (i.abs(t - this.absstartx) < this.snapthresholdx && i.abs(e - this.absstarty) < this.snapthresholdy) return this.currentpage; for (t > 0 ? t = 0 : t < this.maxscrollx && (t = this.maxscrollx), e > 0 ? e = 0 : e < this.maxscrolly && (e = this.maxscrolly); n < r; n++) if (t >= this.pages[n][0].cx) { t = this.pages[n][0].x; break } for (r = this.pages[n].length; s < r; s++) if (e >= this.pages[0][s].cy) { e = this.pages[0][s].y; break } return n == this.currentpage.pagex && (n += this.directionx, n < 0 ? n = 0 : n >= this.pages.length && (n = this.pages.length - 1), t = this.pages[n][0].x), s == this.currentpage.pagey && (s += this.directiony, s < 0 ? s = 0 : s >= this.pages[0].length && (s = this.pages[0].length - 1), e = this.pages[0][s].y), { x: t, y: e, pagex: n, pagey: s } }, gotopage: function(t, e, n, r) { r = r || this.options.bounceeasing, t >= this.pages.length ? t = this.pages.length - 1 : t < 0 && (t = 0), e >= this.pages[t].length ? e = this.pages[t].length - 1 : e < 0 && (e = 0); var s = this.pages[t][e].x, o = this.pages[t][e].y; n = void 0 === n ? this.options.snapspeed || i.max(i.max(i.min(i.abs(s - this.x), 1e3), i.min(i.abs(o - this.y), 1e3)), 300) : n, this.currentpage = { x: s, y: o, pagex: t, pagey: e }, this.scrollto(s, o, n, r) }, next: function(t, e) { var i = this.currentpage.pagex, n = this.currentpage.pagey; i++, i >= this.pages.length && this.hasverticalscroll && (i = 0, n++), this.gotopage(i, n, t, e) }, prev: function(t, e) { var i = this.currentpage.pagex, n = this.currentpage.pagey; i--, i < 0 && this.hasverticalscroll && (i = 0, n--), this.gotopage(i, n, t, e) }, _initkeys: function(e) { var i, n = { pageup: 33, pagedown: 34, end: 35, home: 36, left: 37, up: 38, right: 39, down: 40 }; if ("object" == typeof this.options.keybindings) for (i in this.options.keybindings)"string" == typeof this.options.keybindings[i] && (this.options.keybindings[i] = this.options.keybindings[i].touppercase().charcodeat(0)); else this.options.keybindings = {}; for (i in n) this.options.keybindings[i] = this.options.keybindings[i] || n[i]; a.addevent(t, "keydown", this), this.on("destroy", function() { a.removeevent(t, "keydown", this) }) }, _key: function(t) { if (this.enabled) { var e, n = this.options.snap, r = n ? this.currentpage.pagex: this.x, s = n ? this.currentpage.pagey: this.y, o = a.gettime(), l = this.keytime || 0; switch (this.options.usetransition && this.isintransition && (e = this.getcomputedposition(), this._translate(i.round(e.x), i.round(e.y)), this.isintransition = !1), this.keyacceleration = o - l < 200 ? i.min(this.keyacceleration + .25, 50) : 0, t.keycode) { case this.options.keybindings.pageup: this.hashorizontalscroll && !this.hasverticalscroll ? r += n ? 1 : this.wrapperwidth: s += n ? 1 : this.wrapperheight; break; case this.options.keybindings.pagedown: this.hashorizontalscroll && !this.hasverticalscroll ? r -= n ? 1 : this.wrapperwidth: s -= n ? 1 : this.wrapperheight; break; case this.options.keybindings.end: r = n ? this.pages.length - 1 : this.maxscrollx, s = n ? this.pages[0].length - 1 : this.maxscrolly; break; case this.options.keybindings.home: r = 0, s = 0; break; case this.options.keybindings.left: r += n ? -1 : 5 + this.keyacceleration >> 0; break; case this.options.keybindings.up: s += n ? 1 : 5 + this.keyacceleration >> 0; break; case this.options.keybindings.right: r -= n ? -1 : 5 + this.keyacceleration >> 0; break; case this.options.keybindings.down: s -= n ? 1 : 5 + this.keyacceleration >> 0; break; default: return } if (n) return void this.gotopage(r, s); r > 0 ? (r = 0, this.keyacceleration = 0) : r < this.maxscrollx && (r = this.maxscrollx, this.keyacceleration = 0), s > 0 ? (s = 0, this.keyacceleration = 0) : s < this.maxscrolly && (s = this.maxscrolly, this.keyacceleration = 0), this.scrollto(r, s, 0), this.keytime = o } }, _animate: function(t, e, i, n) { function r() { var u, d, f, m = a.gettime(); if (m >= p) return s.isanimating = !1, s._translate(t, e), void(s.resetposition(s.options.bouncetime) || s._execevent("scrollend")); m = (m - h) / i, f = n(m), u = (t - l) * f + l, d = (e - c) * f + c, s._translate(u, d), s.isanimating && o(r) } var s = this, l = this.x, c = this.y, h = a.gettime(), p = h + i; this.isanimating = !0, r() }, handleevent: function(t) { switch (t.type) { case "touchstart": case "pointerdown": case "mspointerdown": case "mousedown": this._start(t), this.options.zoom && t.touches && t.touches.length > 1 && this._zoomstart(t); break; case "touchmove": case "pointermove": case "mspointermove": case "mousemove": if (this.options.zoom && t.touches && t.touches[1]) return void this._zoom(t); this._move(t); break; case "touchend": case "pointerup": case "mspointerup": case "mouseup": case "touchcancel": case "pointercancel": case "mspointercancel": case "mousecancel": if (this.scaled) return void this._zoomend(t); this._end(t); break; case "orientationchange": case "resize": this._resize(); break; case "transitionend": case "webkittransitionend": case "otransitionend": case "mstransitionend": this._transitionend(t); break; case "wheel": case "dommousescroll": case "mousewheel": if ("zoom" == this.options.wheelaction) return void this._wheelzoom(t); this._wheel(t); break; case "keydown": this._key(t) } } }, s.prototype = { handleevent: function(t) { switch (t.type) { case "touchstart": case "pointerdown": case "mspointerdown": case "mousedown": this._start(t); break; case "touchmove": case "pointermove": case "mspointermove": case "mousemove": this._move(t); break; case "touchend": case "pointerup": case "mspointerup": case "mouseup": case "touchcancel": case "pointercancel": case "mspointercancel": case "mousecancel": this._end(t) } }, destroy: function() { this.options.fadescrollbars && (cleartimeout(this.fadetimeout), this.fadetimeout = null), this.options.interactive && (a.removeevent(this.indicator, "touchstart", this), a.removeevent(this.indicator, a.prefixpointerevent("pointerdown"), this), a.removeevent(this.indicator, "mousedown", this), a.removeevent(t, "touchmove", this), a.removeevent(t, a.prefixpointerevent("pointermove"), this), a.removeevent(t, "mousemove", this), a.removeevent(t, "touchend", this), a.removeevent(t, a.prefixpointerevent("pointerup"), this), a.removeevent(t, "mouseup", this)), this.options.defaultscrollbars && this.wrapper.parentnode && this.wrapper.parentnode.removechild(this.wrapper) }, _start: function(e) { var i = e.touches ? e.touches[0] : e; e.preventdefault(), e.stoppropagation(), this.transitiontime(), this.initiated = !0, this.moved = !1, this.lastpointx = i.pagex, this.lastpointy = i.pagey, this.starttime = a.gettime(), this.options.disabletouch || a.addevent(t, "touchmove", this), this.options.disablepointer || a.addevent(t, a.prefixpointerevent("pointermove"), this), this.options.disablemouse || a.addevent(t, "mousemove", this), this.scroller._execevent("beforescrollstart") }, _move: function(t) { var e, i, n, r, s = t.touches ? t.touches[0] : t; a.gettime(); this.moved || this.scroller._execevent("scrollstart"), this.moved = !0, e = s.pagex - this.lastpointx, this.lastpointx = s.pagex, i = s.pagey - this.lastpointy, this.lastpointy = s.pagey, n = this.x + e, r = this.y + i, this._pos(n, r), t.preventdefault(), t.stoppropagation() }, _end: function(e) { if (this.initiated) { if (this.initiated = !1, e.preventdefault(), e.stoppropagation(), a.removeevent(t, "touchmove", this), a.removeevent(t, a.prefixpointerevent("pointermove"), this), a.removeevent(t, "mousemove", this), this.scroller.options.snap) { var n = this.scroller._nearestsnap(this.scroller.x, this.scroller.y), r = this.options.snapspeed || i.max(i.max(i.min(i.abs(this.scroller.x - n.x), 1e3), i.min(i.abs(this.scroller.y - n.y), 1e3)), 300); this.scroller.x == n.x && this.scroller.y == n.y || (this.scroller.directionx = 0, this.scroller.directiony = 0, this.scroller.currentpage = n, this.scroller.scrollto(n.x, n.y, r, this.scroller.options.bounceeasing)) } this.moved && this.scroller._execevent("scrollend") } }, transitiontime: function(t) { t = t || 0; var e = a.style.transitionduration; if (e && (this.indicatorstyle[e] = t + "ms", !t && a.isbadandroid)) { this.indicatorstyle[e] = "0.0001ms"; var i = this; o(function() { "0.0001ms" === i.indicatorstyle[e] && (i.indicatorstyle[e] = "0s") }) } }, transitiontimingfunction: function(t) { this.indicatorstyle[a.style.transitiontimingfunction] = t }, refresh: function() { this.transitiontime(), this.options.listenx && !this.options.listeny ? this.indicatorstyle.display = this.scroller.hashorizontalscroll ? "block": "none": this.options.listeny && !this.options.listenx ? this.indicatorstyle.display = this.scroller.hasverticalscroll ? "block": "none": this.indicatorstyle.display = this.scroller.hashorizontalscroll || this.scroller.hasverticalscroll ? "block": "none", this.scroller.hashorizontalscroll && this.scroller.hasverticalscroll ? (a.addclass(this.wrapper, "iscrollbothscrollbars"), a.removeclass(this.wrapper, "iscrolllonescrollbar"), this.options.defaultscrollbars && this.options.customstyle && (this.options.listenx ? this.wrapper.style.right = "8px": this.wrapper.style.bottom = "8px")) : (a.removeclass(this.wrapper, "iscrollbothscrollbars"), a.addclass(this.wrapper, "iscrolllonescrollbar"), this.options.defaultscrollbars && this.options.customstyle && (this.options.listenx ? this.wrapper.style.right = "2px": this.wrapper.style.bottom = "2px")), a.getrect(this.wrapper), this.options.listenx && (this.wrapperwidth = this.wrapper.clientwidth, this.options.resize ? (this.indicatorwidth = i.max(i.round(this.wrapperwidth * this.wrapperwidth / (this.scroller.scrollerwidth || this.wrapperwidth || 1)), 8), this.indicatorstyle.width = this.indicatorwidth + "px") : this.indicatorwidth = this.indicator.clientwidth, this.maxposx = this.wrapperwidth - this.indicatorwidth, "clip" == this.options.shrink ? (this.minboundaryx = 8 - this.indicatorwidth, this.maxboundaryx = this.wrapperwidth - 8) : (this.minboundaryx = 0, this.maxboundaryx = this.maxposx), this.sizeratiox = this.options.speedratiox || this.scroller.maxscrollx && this.maxposx / this.scroller.maxscrollx), this.options.listeny && (this.wrapperheight = this.wrapper.clientheight, this.options.resize ? (this.indicatorheight = i.max(i.round(this.wrapperheight * this.wrapperheight / (this.scroller.scrollerheight || this.wrapperheight || 1)), 8), this.indicatorstyle.height = this.indicatorheight + "px") : this.indicatorheight = this.indicator.clientheight, this.maxposy = this.wrapperheight - this.indicatorheight, "clip" == this.options.shrink ? (this.minboundaryy = 8 - this.indicatorheight, this.maxboundaryy = this.wrapperheight - 8) : (this.minboundaryy = 0, this.maxboundaryy = this.maxposy), this.maxposy = this.wrapperheight - this.indicatorheight, this.sizeratioy = this.options.speedratioy || this.scroller.maxscrolly && this.maxposy / this.scroller.maxscrolly), this.updateposition() }, updateposition: function() { var t = this.options.listenx && i.round(this.sizeratiox * this.scroller.x) || 0, e = this.options.listeny && i.round(this.sizeratioy * this.scroller.y) || 0; this.options.ignoreboundaries || (t < this.minboundaryx ? ("scale" == this.options.shrink && (this.width = i.max(this.indicatorwidth + t, 8), this.indicatorstyle.width = this.width + "px"), t = this.minboundaryx) : t > this.maxboundaryx ? "scale" == this.options.shrink ? (this.width = i.max(this.indicatorwidth - (t - this.maxposx), 8), this.indicatorstyle.width = this.width + "px", t = this.maxposx + this.indicatorwidth - this.width) : t = this.maxboundaryx: "scale" == this.options.shrink && this.width != this.indicatorwidth && (this.width = this.indicatorwidth, this.indicatorstyle.width = this.width + "px"), e < this.minboundaryy ? ("scale" == this.options.shrink && (this.height = i.max(this.indicatorheight + 3 * e, 8), this.indicatorstyle.height = this.height + "px"), e = this.minboundaryy) : e > this.maxboundaryy ? "scale" == this.options.shrink ? (this.height = i.max(this.indicatorheight - 3 * (e - this.maxposy), 8), this.indicatorstyle.height = this.height + "px", e = this.maxposy + this.indicatorheight - this.height) : e = this.maxboundaryy: "scale" == this.options.shrink && this.height != this.indicatorheight && (this.height = this.indicatorheight, this.indicatorstyle.height = this.height + "px")), this.x = t, this.y = e, this.scroller.options.usetransform ? this.indicatorstyle[a.style.transform] = "translate(" + t + "px," + e + "px)" + this.scroller.translatez: (this.indicatorstyle.left = t + "px", this.indicatorstyle.top = e + "px") }, _pos: function(t, e) { t < 0 ? t = 0 : t > this.maxposx && (t = this.maxposx), e < 0 ? e = 0 : e > this.maxposy && (e = this.maxposy), t = this.options.listenx ? i.round(t / this.sizeratiox) : this.scroller.x, e = this.options.listeny ? i.round(e / this.sizeratioy) : this.scroller.y, this.scroller.scrollto(t, e) }, fade: function(t, e) { if (!e || this.visible) { cleartimeout(this.fadetimeout), this.fadetimeout = null; var i = t ? 250 : 500, n = t ? 0 : 300; t = t ? "1": "0", this.wrapperstyle[a.style.transitionduration] = i + "ms", this.fadetimeout = settimeout(function(t) { this.wrapperstyle.opacity = t, this.visible = +t }.bind(this, t), n) } } }, n.utils = a, "undefined" != typeof module && module.exports ? module.exports = n: "function" == typeof define && define.amd ? define(function() { return n }) : t.iscroll = n } (window, document, math), ! function(t) { t.fn.slide = function(e) { return t.fn.slide.defaults = { type: "slide", effect: "fade", autoplay: !1, delaytime: 500, intertime: 2500, triggertime: 150, defaultindex: 0, titcell: ".hd li", maincell: ".bd", targetcell: null, trigger: "mouseover", scroll: 1, vis: 1, titonclassname: "on", autopage: !1, prevcell: ".prev", nextcell: ".next", pagestatecell: ".pagestate", opp: !1, pnloop: !0, easing: "swing", startfun: null, endfun: null, switchload: null, playstatecell: ".playstate", mouseoverstop: !0, defaultplay: !0, returndefault: !1 }, this.each(function() { var i = t.extend({}, t.fn.slide.defaults, e), n = t(this), r = i.effect, s = t(i.prevcell, n), o = t(i.nextcell, n), a = t(i.pagestatecell, n), l = t(i.playstatecell, n), c = t(i.titcell, n), h = c.size(), p = t(i.maincell, n), u = p.children().size(), d = i.switchload, f = t(i.targetcell, n), m = parseint(i.defaultindex), v = parseint(i.delaytime), g = parseint(i.intertime); parseint(i.triggertime); var y, b = parseint(i.scroll), t = parseint(i.vis), w = "false" != i.autoplay && 0 != i.autoplay, _ = "false" != i.opp && 0 != i.opp, c = "false" != i.autopage && 0 != i.autopage, s = "false" != i.pnloop && 0 != i.pnloop, x = "false" != i.mouseoverstop && 0 != i.mouseoverstop, k = "false" != i.defaultplay && 0 != i.defaultplay, e = "false" != i.returndefault && 0 != i.returndefault, p = 0, m = 0, i = 0, a = 0, j = i.easing, d = null, o = null, z = null, n = i.titonclassname, b = c.index(n.find("." + n)), l = m = -1 == b ? m: b, r = m, h = m, f = u >= t ? 0 != u % b ? u % b: b: 0, x = "leftmarquee" == r || "topmarquee" == r, y = function() { t.isfunction(i.startfun) && i.startfun(m, h, n, t(i.titcell, n), p, f, s, o) }, v = function() { t.isfunction(i.endfun) && i.endfun(m, h, n, t(i.titcell, n), p, f, s, o) }, w = function() { c.removeclass(n), k && c.eq(r).addclass(n) }; if ("menu" == i.type) return k && c.removeclass(n).eq(m).addclass(n), c.hover(function() { y = t(this).find(i.targetcell); var e = c.index(t(this)); o = settimeout(function() { switch (m = e, c.removeclass(n).eq(m).addclass(n), y(), r) { case "fade": y.stop(!0, !0).animate({ opacity: "show" }, v, j, v); break; case "slidedown": y.stop(!0, !0).animate({ height: "show" }, v, j, v) } }, i.triggertime) }, function() { switch (cleartimeout(o), r) { case "fade": y.animate({ opacity: "hide" }, v, j); break; case "slidedown": y.animate({ height: "hide" }, v, j) } }), void(e && n.hover(function() { cleartimeout(z) }, function() { z = settimeout(w, v) })); if (0 == h && (h = u), x && (h = 2), c) { if (u >= t) if ("leftloop" == r || "toploop" == r) h = 0 != u % b ? 1 + (0 ^ u / b) : u / b; else { var g = u - t; 0 >= (h = 1 + parseint(0 != g % b ? g / b + 1 : g / b)) && (h = 1) } else h = 1; c.html(""); var q = ""; if (1 == i.autopage || "true" == i.autopage) for (var u = 0; h > u; u++) q += "
  • " + (u + 1) + "
  • "; else for (var u = 0; h > u; u++) q += i.autopage.replace("$", u + 1); c.html(q); var c = c.children() } if (u >= t) { p.children().each(function() { t(this).width() > i && (i = t(this).width(), m = t(this).outerwidth(!0)), t(this).height() > a && (a = t(this).height(), p = t(this).outerheight(!0)) }); var k = p.children(), q = function() { for (var t = 0; t > t; t++) k.eq(t).clone().addclass("clone").appendto(p); for (var t = 0; f > t; t++) k.eq(u - t - 1).clone().addclass("clone").prependto(p) }; switch (r) { case "fold": p.css({ position: "relative", width: m, height: p }).children().css({ position: "absolute", width: i, left: 0, top: 0, display: "none" }); break; case "top": p.wrap('
    ').css({ top: -m * b * p, position: "relative", padding: "0", margin: "0" }).children().css({ height: a }); break; case "left": p.wrap('
    ').css({ width: u * m, left: -m * b * m, position: "relative", overflow: "hidden", padding: "0", margin: "0" }).children().css({ float: "left", width: i }); break; case "leftloop": case "leftmarquee": q(), p.wrap('
    ').css({ width: (u + t + f) * m, position: "relative", overflow: "hidden", padding: "0", margin: "0", left: -(f + m * b) * m }).children().css({ float: "left", width: i }); break; case "toploop": case "topmarquee": q(), p.wrap('
    ').css({ height: (u + t + f) * p, position: "relative", padding: "0", margin: "0", top: -(f + m * b) * p }).children().css({ height: a }) } } var $ = function(t) { var e = t * b; return t == h ? e = u: -1 == t && 0 != u % b && (e = -u % b), e }, z = function(e) { var i = function(i) { for (var n = i; t + i > n; n++) e.eq(n).find("img[" + d + "]").each(function() { var e = t(this); if (e.attr("src", e.attr(d)).removeattr(d), p.find(".clone")[0]) for (var i = p.children(), n = 0; n < i.size(); n++) i.eq(n).find("img[" + d + "]").each(function() { t(this).attr(d) == e.attr("src") && t(this).attr("src", t(this).attr(d)).removeattr(d) }) }) }; switch (r) { case "fade": case "fold": case "top": case "left": case "slidedown": i(m * b); break; case "leftloop": case "toploop": i(f + $(h)); break; case "leftmarquee": case "topmarquee": var n = "leftmarquee" == r ? p.css("left").replace("px", "") : p.css("top").replace("px", ""), s = "leftmarquee" == r ? m: p, o = f; if (0 != n % s) { var a = math.abs(0 ^ n / s); o = 1 == m ? f + a: f + a - 1 } i(o) } }, j = function(t) { if (!k || l != m || t || x) { if (x ? m >= 1 ? m = 1 : 0 >= m && (m = 0) : (h = m, m >= h ? m = 0 : 0 > m && (m = h - 1)), y(), null != d && z(p.children()), f[0] && (y = f.eq(m), null != d && z(f), "slidedown" == r ? (f.not(y).stop(!0, !0).slideup(v), y.slidedown(v, j, function() { p[0] || v() })) : (f.not(y).stop(!0, !0).hide(), y.animate({ opacity: "show" }, v, function() { p[0] || v() }))), u >= t) switch (r) { case "fade": p.children().stop(!0, !0).eq(m).animate({ opacity: "show" }, v, j, function() { v() }).siblings().hide(); break; case "fold": p.children().stop(!0, !0).eq(m).animate({ opacity: "show" }, v, j, function() { v() }).siblings().animate({ opacity: "hide" }, v, j); break; case "top": p.stop(!0, !1).animate({ top: -m * b * p }, v, j, function() { v() }); break; case "left": p.stop(!0, !1).animate({ left: -m * b * m }, v, j, function() { v() }); break; case "leftloop": var e = h; p.stop(!0, !0).animate({ left: -($(h) + f) * m }, v, j, function() { - 1 >= e ? p.css("left", -(f + (h - 1) * b) * m) : e >= h && p.css("left", -f * m), v() }); break; case "toploop": var e = h; p.stop(!0, !0).animate({ top: -($(h) + f) * p }, v, j, function() { - 1 >= e ? p.css("top", -(f + (h - 1) * b) * p) : e >= h && p.css("top", -f * p), v() }); break; case "leftmarquee": var i = p.css("left").replace("px", ""); 0 == m ? p.animate({ left: ++i }, 0, function() { p.css("left").replace("px", "") >= 0 && p.css("left", -u * m) }) : p.animate({ left: --i }, 0, function() { p.css("left").replace("px", "") <= -(u + f) * m && p.css("left", -f * m) }); break; case "topmarquee": var n = p.css("top").replace("px", ""); 0 == m ? p.animate({ top: ++n }, 0, function() { p.css("top").replace("px", "") >= 0 && p.css("top", -u * p) }) : p.animate({ top: --n }, 0, function() { p.css("top").replace("px", "") <= -(u + f) * p && p.css("top", -f * p) }) } c.removeclass(n).eq(m).addclass(n), l = m, s || (o.removeclass("nextstop"), s.removeclass("prevstop"), 0 == m && s.addclass("prevstop"), m == h - 1 && o.addclass("nextstop")), a.html("" + (m + 1) + "/" + h) } }; k && j(!0), e && n.hover(function() { cleartimeout(z) }, function() { z = settimeout(function() { m = r, k ? j() : "slidedown" == r ? y.slideup(v, w) : y.animate({ opacity: "hide" }, v, w), l = m }, 300) }); var tt = function(t) { d = setinterval(function() { _ ? m--:m++, j() }, t || g) }, et = function(t) { d = setinterval(j, t || g) }, it = function() { x || (clearinterval(d), tt()) }, nt = function() { (s || m != h - 1) && (m++, j(), x || it()) }, rt = function() { (s || 0 != m) && (m--, j(), x || it()) }, st = function() { clearinterval(d), x ? et() : tt(), l.removeclass("pausestate") }, ot = function() { clearinterval(d), l.addclass("pausestate") }; if (w ? x ? (_ ? m--:m++, et(), x && p.hover(ot, st)) : (tt(), x && n.hover(ot, st)) : (x && (_ ? m--:m++), l.addclass("pausestate")), l.click(function() { l.hasclass("pausestate") ? st() : ot() }), "mouseover" == i.trigger ? c.hover(function() { var t = c.index(this); o = settimeout(function() { m = t, j(), it() }, i.triggertime) }, function() { cleartimeout(o) }) : c.click(function() { m = c.index(this), j(), it() }), x) { if (o.mousedown(nt), s.mousedown(rt), s) { var at, lt = function() { at = settimeout(function() { clearinterval(d), et(0 ^ g / 10) }, 150) }, ct = function() { cleartimeout(at), clearinterval(d), et() }; o.mousedown(lt), o.mouseup(ct), s.mousedown(lt), s.mouseup(ct) } "mouseover" == i.trigger && (o.hover(nt, function() {}), s.hover(rt, function() {})) } else o.click(nt), s.click(rt) }) } } (jquery), jquery.easing.jswing = jquery.easing.swing, jquery.extend(jquery.easing, { def: "easeoutquad", swing: function(t, e, i, n, r) { return jquery.easing[jquery.easing.def](t, e, i, n, r) }, easeinquad: function(t, e, i, n, r) { return n * (e /= r) * e + i }, easeoutquad: function(t, e, i, n, r) { return - n * (e /= r) * (e - 2) + i }, easeinoutquad: function(t, e, i, n, r) { return (e /= r / 2) < 1 ? n / 2 * e * e + i: -n / 2 * (--e * (e - 2) - 1) + i }, easeincubic: function(t, e, i, n, r) { return n * (e /= r) * e * e + i }, easeoutcubic: function(t, e, i, n, r) { return n * ((e = e / r - 1) * e * e + 1) + i }, easeinoutcubic: function(t, e, i, n, r) { return (e /= r / 2) < 1 ? n / 2 * e * e * e + i: n / 2 * ((e -= 2) * e * e + 2) + i }, easeinquart: function(t, e, i, n, r) { return n * (e /= r) * e * e * e + i }, easeoutquart: function(t, e, i, n, r) { return - n * ((e = e / r - 1) * e * e * e - 1) + i }, easeinoutquart: function(t, e, i, n, r) { return (e /= r / 2) < 1 ? n / 2 * e * e * e * e + i: -n / 2 * ((e -= 2) * e * e * e - 2) + i }, easeinquint: function(t, e, i, n, r) { return n * (e /= r) * e * e * e * e + i }, easeoutquint: function(t, e, i, n, r) { return n * ((e = e / r - 1) * e * e * e * e + 1) + i }, easeinoutquint: function(t, e, i, n, r) { return (e /= r / 2) < 1 ? n / 2 * e * e * e * e * e + i: n / 2 * ((e -= 2) * e * e * e * e + 2) + i }, easeinsine: function(t, e, i, n, r) { return - n * math.cos(e / r * (math.pi / 2)) + n + i }, easeoutsine: function(t, e, i, n, r) { return n * math.sin(e / r * (math.pi / 2)) + i }, easeinoutsine: function(t, e, i, n, r) { return - n / 2 * (math.cos(math.pi * e / r) - 1) + i }, easeinexpo: function(t, e, i, n, r) { return 0 == e ? i: n * math.pow(2, 10 * (e / r - 1)) + i }, easeoutexpo: function(t, e, i, n, r) { return e == r ? i + n: n * (1 - math.pow(2, -10 * e / r)) + i }, easeinoutexpo: function(t, e, i, n, r) { return 0 == e ? i: e == r ? i + n: (e /= r / 2) < 1 ? n / 2 * math.pow(2, 10 * (e - 1)) + i: n / 2 * (2 - math.pow(2, -10 * --e)) + i }, easeincirc: function(t, e, i, n, r) { return - n * (math.sqrt(1 - (e /= r) * e) - 1) + i }, easeoutcirc: function(t, e, i, n, r) { return n * math.sqrt(1 - (e = e / r - 1) * e) + i }, easeinoutcirc: function(t, e, i, n, r) { return (e /= r / 2) < 1 ? -n / 2 * (math.sqrt(1 - e * e) - 1) + i: n / 2 * (math.sqrt(1 - (e -= 2) * e) + 1) + i }, easeinelastic: function(t, e, i, n, r) { var s = 1.70158, o = 0, a = n; if (0 == e) return i; if (1 == (e /= r)) return i + n; if (o || (o = .3 * r), a < math.abs(n)) { a = n; var s = o / 4 } else var s = o / (2 * math.pi) * math.asin(n / a); return - a * math.pow(2, 10 * (e -= 1)) * math.sin(2 * (e * r - s) * math.pi / o) + i }, easeoutelastic: function(t, e, i, n, r) { var s = 1.70158, o = 0, a = n; if (0 == e) return i; if (1 == (e /= r)) return i + n; if (o || (o = .3 * r), a < math.abs(n)) { a = n; var s = o / 4 } else var s = o / (2 * math.pi) * math.asin(n / a); return a * math.pow(2, -10 * e) * math.sin(2 * (e * r - s) * math.pi / o) + n + i }, easeinoutelastic: function(t, e, i, n, r) { var s = 1.70158, o = 0, a = n; if (0 == e) return i; if (2 == (e /= r / 2)) return i + n; if (o || (o = .3 * r * 1.5), a < math.abs(n)) { a = n; var s = o / 4 } else var s = o / (2 * math.pi) * math.asin(n / a); return 1 > e ? -.5 * a * math.pow(2, 10 * (e -= 1)) * math.sin(2 * (e * r - s) * math.pi / o) + i: .5 * a * math.pow(2, -10 * (e -= 1)) * math.sin(2 * (e * r - s) * math.pi / o) + n + i }, easeinback: function(t, e, i, n, r, s) { return void 0 == s && (s = 1.70158), n * (e /= r) * e * ((s + 1) * e - s) + i }, easeoutback: function(t, e, i, n, r, s) { return void 0 == s && (s = 1.70158), n * ((e = e / r - 1) * e * ((s + 1) * e + s) + 1) + i }, easeinoutback: function(t, e, i, n, r, s) { return void 0 == s && (s = 1.70158), (e /= r / 2) < 1 ? n / 2 * e * e * ((1 + (s *= 1.525)) * e - s) + i: n / 2 * ((e -= 2) * e * ((1 + (s *= 1.525)) * e + s) + 2) + i }, easeinbounce: function(t, e, i, n, r) { return n - jquery.easing.easeoutbounce(t, r - e, 0, n, r) + i }, easeoutbounce: function(t, e, i, n, r) { return (e /= r) < 1 / 2.75 ? 7.5625 * n * e * e + i: 2 / 2.75 > e ? n * (7.5625 * (e -= 1.5 / 2.75) * e + .75) + i: 2.5 / 2.75 > e ? n * (7.5625 * (e -= 2.25 / 2.75) * e + .9375) + i: n * (7.5625 * (e -= 2.625 / 2.75) * e + .984375) + i }, easeinoutbounce: function(t, e, i, n, r) { return r / 2 > e ? .5 * jquery.easing.easeinbounce(t, 2 * e, 0, n, r) + i: .5 * jquery.easing.easeoutbounce(t, 2 * e - r, 0, n, r) + .5 * n + i } }), ! function() { "use strict"; var t, e = function(i, n) { function r(t) { return math.floor(t) } function s() { b.autoplaytimeoutid = settimeout(function() { b.params.loop ? (b.fixloop(), b._slidenext(), b.emit("onautoplay", b)) : b.isend ? n.autoplaystoponlast ? b.stopautoplay() : (b._slideto(0), b.emit("onautoplay", b)) : (b._slidenext(), b.emit("onautoplay", b)) }, b.params.autoplay) } function o(e, i) { var n = t(e.target); if (!n.is(i)) if ("string" == typeof i) n = n.parents(i); else if (i.nodetype) { var r; return n.parents().each(function(t, e) { e === i && (r = i) }), r ? i: void 0 } if (0 !== n.length) return n[0] } function a(t, e) { e = e || {}; var i = window.mutationobserver || window.webkitmutationobserver, n = new i(function(t) { t.foreach(function(t) { b.onresize(!0), b.emit("onobserverupdate", b, t) }) }); n.observe(t, { attributes: void 0 === e.attributes || e.attributes, childlist: void 0 === e.childlist || e.childlist, characterdata: void 0 === e.characterdata || e.characterdata }), b.observers.push(n) } function l(t) { t.originalevent && (t = t.originalevent); var e = t.keycode || t.charcode; if (!b.params.allowswipetonext && (b.ishorizontal() && 39 === e || !b.ishorizontal() && 40 === e)) return ! 1; if (!b.params.allowswipetoprev && (b.ishorizontal() && 37 === e || !b.ishorizontal() && 38 === e)) return ! 1; if (! (t.shiftkey || t.altkey || t.ctrlkey || t.metakey || document.activeelement && document.activeelement.nodename && ("input" === document.activeelement.nodename.tolowercase() || "textarea" === document.activeelement.nodename.tolowercase()))) { if (37 === e || 39 === e || 38 === e || 40 === e) { var i = !1; if (b.container.parents(".swiper-slide").length > 0 && 0 === b.container.parents(".swiper-slide-active").length) return; var n = { left: window.pagexoffset, top: window.pageyoffset }, r = window.innerwidth, s = window.innerheight, o = b.container.offset(); b.rtl && (o.left = o.left - b.container[0].scrollleft); for (var a = [[o.left, o.top], [o.left + b.width, o.top], [o.left, o.top + b.height], [o.left + b.width, o.top + b.height]], l = 0; l < a.length; l++) { var c = a[l]; c[0] >= n.left && c[0] <= n.left + r && c[1] >= n.top && c[1] <= n.top + s && (i = !0) } if (!i) return } b.ishorizontal() ? ((37 === e || 39 === e) && (t.preventdefault ? t.preventdefault() : t.returnvalue = !1), (39 === e && !b.rtl || 37 === e && b.rtl) && b.slidenext(), (37 === e && !b.rtl || 39 === e && b.rtl) && b.slideprev()) : ((38 === e || 40 === e) && (t.preventdefault ? t.preventdefault() : t.returnvalue = !1), 40 === e && b.slidenext(), 38 === e && b.slideprev()) } } function c(t) { t.originalevent && (t = t.originalevent); var e = b.mousewheel.event, i = 0, n = b.rtl ? -1 : 1; if ("mousewheel" === e) if (b.params.mousewheelforcetoaxis) if (b.ishorizontal()) { if (! (math.abs(t.wheeldeltax) > math.abs(t.wheeldeltay))) return; i = t.wheeldeltax * n } else { if (! (math.abs(t.wheeldeltay) > math.abs(t.wheeldeltax))) return; i = t.wheeldeltay } else i = math.abs(t.wheeldeltax) > math.abs(t.wheeldeltay) ? -t.wheeldeltax * n: -t.wheeldeltay; else if ("dommousescroll" === e) i = -t.detail; else if ("wheel" === e) if (b.params.mousewheelforcetoaxis) if (b.ishorizontal()) { if (! (math.abs(t.deltax) > math.abs(t.deltay))) return; i = -t.deltax * n } else { if (! (math.abs(t.deltay) > math.abs(t.deltax))) return; i = -t.deltay } else i = math.abs(t.deltax) > math.abs(t.deltay) ? -t.deltax * n: -t.deltay; if (0 !== i) { if (b.params.mousewheelinvert && (i = -i), b.params.freemode) { var r = b.getwrappertranslate() + i * b.params.mousewheelsensitivity, s = b.isbeginning, o = b.isend; if (r >= b.mintranslate() && (r = b.mintranslate()), r <= b.maxtranslate() && (r = b.maxtranslate()), b.setwrappertransition(0), b.setwrappertranslate(r), b.updateprogress(), b.updateactiveindex(), (!s && b.isbeginning || !o && b.isend) && b.updateclasses(), b.params.freemodesticky ? (cleartimeout(b.mousewheel.timeout), b.mousewheel.timeout = settimeout(function() { b.slidereset() }, 300)) : b.params.lazyloading && b.lazy && b.lazy.load(), 0 === r || r === b.maxtranslate()) return } else { if ((new window.date).gettime() - b.mousewheel.lastscrolltime > 60) if (0 > i) if (b.isend && !b.params.loop || b.animating) { if (b.params.mousewheelreleaseonedges) return ! 0 } else b.slidenext(); else if (b.isbeginning && !b.params.loop || b.animating) { if (b.params.mousewheelreleaseonedges) return ! 0 } else b.slideprev(); b.mousewheel.lastscrolltime = (new window.date).gettime() } return b.params.autoplay && b.stopautoplay(), t.preventdefault ? t.preventdefault() : t.returnvalue = !1, !1 } } function h(e, i) { e = t(e); var n, r, s, o = b.rtl ? -1 : 1; n = e.attr("data-swiper-parallax") || "0", r = e.attr("data-swiper-parallax-x"), s = e.attr("data-swiper-parallax-y"), r || s ? (r = r || "0", s = s || "0") : b.ishorizontal() ? (r = n, s = "0") : (s = n, r = "0"), r = r.indexof("%") >= 0 ? parseint(r, 10) * i * o + "%": r * i * o + "px", s = s.indexof("%") >= 0 ? parseint(s, 10) * i + "%": s * i + "px", e.transform("translate3d(" + r + ", " + s + ",0px)") } function p(t) { return 0 !== t.indexof("on") && (t = t[0] !== t[0].touppercase() ? "on" + t[0].touppercase() + t.substring(1) : "on" + t), t } if (! (this instanceof e)) return new e(i, n); var u = { direction: "horizontal", toucheventstarget: "container", initialslide: 0, speed: 300, autoplay: !1, autoplaydisableoninteraction: !0, autoplaystoponlast: !1, iosedgeswipedetection: !1, iosedgeswipethreshold: 20, freemode: !1, freemodemomentum: !0, freemodemomentumratio: 1, freemodemomentumbounce: !0, freemodemomentumbounceratio: 1, freemodesticky: !1, freemodeminimumvelocity: .02, autoheight: !1, setwrappersize: !1, virtualtranslate: !1, effect: "slide", coverflow: { rotate: 50, stretch: 0, depth: 100, modifier: 1, slideshadows: !0 }, flip: { slideshadows: !0, limitrotation: !0 }, cube: { slideshadows: !0, shadow: !0, shadowoffset: 20, shadowscale: .94 }, fade: { crossfade: !1 }, parallax: !1, scrollbar: null, scrollbarhide: !0, scrollbardraggable: !1, scrollbarsnaponrelease: !1, keyboardcontrol: !1, mousewheelcontrol: !1, mousewheelreleaseonedges: !1, mousewheelinvert: !1, mousewheelforcetoaxis: !1, mousewheelsensitivity: 1, hashnav: !1, breakpoints: void 0, spacebetween: 0, slidesperview: 1, slidespercolumn: 1, slidespercolumnfill: "column", slidespergroup: 1, centeredslides: !1, slidesoffsetbefore: 0, slidesoffsetafter: 0, roundlengths: !1, touchratio: 1, touchangle: 45, simulatetouch: !0, shortswipes: !0, longswipes: !0, longswipesratio: .5, longswipesms: 300, followfinger: !0, onlyexternal: !1, threshold: 0, touchmovestoppropagation: !0, uniquenavelements: !0, pagination: null, paginationelement: "span", paginationclickable: !1, paginationhide: !1, paginationbulletrender: null, paginationprogressrender: null, paginationfractionrender: null, paginationcustomrender: null, paginationtype: "bullets", resistance: !0, resistanceratio: .85, nextbutton: null, prevbutton: null, watchslidesprogress: !1, watchslidesvisibility: !1, grabcursor: !1, preventclicks: !0, preventclickspropagation: !0, slidetoclickedslide: !1, lazyloading: !1, lazyloadinginprevnext: !1, lazyloadinginprevnextamount: 1, lazyloadingontransitionstart: !1, preloadimages: !0, updateonimagesready: !0, loop: !1, loopadditionalslides: 0, loopedslides: null, control: void 0, controlinverse: !1, controlby: "slide", allowswipetoprev: !0, allowswipetonext: !0, swipehandler: null, noswiping: !0, noswipingclass: "swiper-no-swiping", slideclass: "swiper-slide", slideactiveclass: "swiper-slide-active", slidevisibleclass: "swiper-slide-visible", slideduplicateclass: "swiper-slide-duplicate", slidenextclass: "swiper-slide-next", slideprevclass: "swiper-slide-prev", wrapperclass: "swiper-wrapper", bulletclass: "swiper-pagination-bullet", bulletactiveclass: "swiper-pagination-bullet-active", buttondisabledclass: "swiper-button-disabled", paginationcurrentclass: "swiper-pagination-current", paginationtotalclass: "swiper-pagination-total", paginationhiddenclass: "swiper-pagination-hidden", paginationprogressbarclass: "swiper-pagination-progressbar", observer: !1, observeparents: !1, a11y: !1, prevslidemessage: "previous slide", nextslidemessage: "next slide", firstslidemessage: "this is the first slide", lastslidemessage: "this is the last slide", paginationbulletmessage: "go to slide {{index}}", runcallbacksoninit: !0 }, d = n && n.virtualtranslate; n = n || {}; var f = {}; for (var m in n) if ("object" != typeof n[m] || null === n[m] || n[m].nodetype || n[m] === window || n[m] === document || "undefined" != typeof dom7 && n[m] instanceof dom7 || "undefined" != typeof jquery && n[m] instanceof jquery) f[m] = n[m]; else { f[m] = {}; for (var v in n[m]) f[m][v] = n[m][v] } for (var g in u) if (void 0 === n[g]) n[g] = u[g]; else if ("object" == typeof n[g]) for (var y in u[g]) void 0 === n[g][y] && (n[g][y] = u[g][y]); var b = this; if (b.params = n, b.originalparams = f, b.classnames = [], void 0 !== t && "undefined" != typeof dom7 && (t = dom7), (void 0 !== t || (t = "undefined" == typeof dom7 ? window.dom7 || window.zepto || window.jquery: dom7)) && (b.$ = t, b.currentbreakpoint = void 0, b.getactivebreakpoint = function() { if (!b.params.breakpoints) return ! 1; var t, e = !1, i = []; for (t in b.params.breakpoints) b.params.breakpoints.hasownproperty(t) && i.push(t); i.sort(function(t, e) { return parseint(t, 10) > parseint(e, 10) }); for (var n = 0; n < i.length; n++)(t = i[n]) >= window.innerwidth && !e && (e = t); return e || "max" }, b.setbreakpoint = function() { var t = b.getactivebreakpoint(); if (t && b.currentbreakpoint !== t) { var e = t in b.params.breakpoints ? b.params.breakpoints[t] : b.originalparams, i = b.params.loop && e.slidesperview !== b.params.slidesperview; for (var n in e) b.params[n] = e[n]; b.currentbreakpoint = t, i && b.destroyloop && b.reloop(!0) } }, b.params.breakpoints && b.setbreakpoint(), b.container = t(i), 0 !== b.container.length)) { if (b.container.length > 1) { var t = []; return b.container.each(function() { t.push(new e(this, n)) }), t } b.container[0].swiper = b, b.container.data("swiper", b), b.classnames.push("swiper-container-" + b.params.direction), b.params.freemode && b.classnames.push("swiper-container-free-mode"), b.support.flexbox || (b.classnames.push("swiper-container-no-flexbox"), b.params.slidespercolumn = 1), b.params.autoheight && b.classnames.push("swiper-container-autoheight"), (b.params.parallax || b.params.watchslidesvisibility) && (b.params.watchslidesprogress = !0), ["cube", "coverflow", "flip"].indexof(b.params.effect) >= 0 && (b.support.transforms3d ? (b.params.watchslidesprogress = !0, b.classnames.push("swiper-container-3d")) : b.params.effect = "slide"), "slide" !== b.params.effect && b.classnames.push("swiper-container-" + b.params.effect), "cube" === b.params.effect && (b.params.resistanceratio = 0, b.params.slidesperview = 1, b.params.slidespercolumn = 1, b.params.slidespergroup = 1, b.params.centeredslides = !1, b.params.spacebetween = 0, b.params.virtualtranslate = !0, b.params.setwrappersize = !1), ("fade" === b.params.effect || "flip" === b.params.effect) && (b.params.slidesperview = 1, b.params.slidespercolumn = 1, b.params.slidespergroup = 1, b.params.watchslidesprogress = !0, b.params.spacebetween = 0, b.params.setwrappersize = !1, void 0 === d && (b.params.virtualtranslate = !0)), b.params.grabcursor && b.support.touch && (b.params.grabcursor = !1), b.wrapper = b.container.children("." + b.params.wrapperclass), b.params.pagination && (b.paginationcontainer = t(b.params.pagination), b.params.uniquenavelements && "string" == typeof b.params.pagination && b.paginationcontainer.length > 1 && 1 === b.container.find(b.params.pagination).length && (b.paginationcontainer = b.container.find(b.params.pagination)), "bullets" === b.params.paginationtype && b.params.paginationclickable ? b.paginationcontainer.addclass("swiper-pagination-clickable") : b.params.paginationclickable = !1, b.paginationcontainer.addclass("swiper-pagination-" + b.params.paginationtype)), (b.params.nextbutton || b.params.prevbutton) && (b.params.nextbutton && (b.nextbutton = t(b.params.nextbutton), b.params.uniquenavelements && "string" == typeof b.params.nextbutton && b.nextbutton.length > 1 && 1 === b.container.find(b.params.nextbutton).length && (b.nextbutton = b.container.find(b.params.nextbutton))), b.params.prevbutton && (b.prevbutton = t(b.params.prevbutton), b.params.uniquenavelements && "string" == typeof b.params.prevbutton && b.prevbutton.length > 1 && 1 === b.container.find(b.params.prevbutton).length && (b.prevbutton = b.container.find(b.params.prevbutton)))), b.ishorizontal = function() { return "horizontal" === b.params.direction }, b.rtl = b.ishorizontal() && ("rtl" === b.container[0].dir.tolowercase() || "rtl" === b.container.css("direction")), b.rtl && b.classnames.push("swiper-container-rtl"), b.rtl && (b.wrongrtl = "-webkit-box" === b.wrapper.css("display")), b.params.slidespercolumn > 1 && b.classnames.push("swiper-container-multirow"), b.device.android && b.classnames.push("swiper-container-android"), b.container.addclass(b.classnames.join(" ")), b.translate = 0, b.progress = 0, b.velocity = 0, b.lockswipetonext = function() { b.params.allowswipetonext = !1 }, b.lockswipetoprev = function() { b.params.allowswipetoprev = !1 }, b.lockswipes = function() { b.params.allowswipetonext = b.params.allowswipetoprev = !1 }, b.unlockswipetonext = function() { b.params.allowswipetonext = !0 }, b.unlockswipetoprev = function() { b.params.allowswipetoprev = !0 }, b.unlockswipes = function() { b.params.allowswipetonext = b.params.allowswipetoprev = !0 }, b.params.grabcursor && (b.container[0].style.cursor = "move", b.container[0].style.cursor = "-webkit-grab", b.container[0].style.cursor = "-moz-grab", b.container[0].style.cursor = "grab"), b.imagestoload = [], b.imagesloaded = 0, b.loadimage = function(t, e, i, n, r) { function s() { r && r() } var o; t.complete && n ? s() : e ? (o = new window.image, o.onload = s, o.onerror = s, i && (o.srcset = i), e && (o.src = e)) : s() }, b.preloadimages = function() { function t() { void 0 !== b && null !== b && (void 0 !== b.imagesloaded && b.imagesloaded++, b.imagesloaded === b.imagestoload.length && (b.params.updateonimagesready && b.update(), b.emit("onimagesready", b))) } b.imagestoload = b.container.find("img"); for (var e = 0; e < b.imagestoload.length; e++) b.loadimage(b.imagestoload[e], b.imagestoload[e].currentsrc || b.imagestoload[e].getattribute("src"), b.imagestoload[e].srcset || b.imagestoload[e].getattribute("srcset"), !0, t) }, b.autoplaytimeoutid = void 0, b.autoplaying = !1, b.autoplaypaused = !1, b.startautoplay = function() { return void 0 === b.autoplaytimeoutid && ( !! b.params.autoplay && (!b.autoplaying && (b.autoplaying = !0, b.emit("onautoplaystart", b), void s()))) }, b.stopautoplay = function(t) { b.autoplaytimeoutid && (b.autoplaytimeoutid && cleartimeout(b.autoplaytimeoutid), b.autoplaying = !1, b.autoplaytimeoutid = void 0, b.emit("onautoplaystop", b)) }, b.pauseautoplay = function(t) { b.autoplaypaused || (b.autoplaytimeoutid && cleartimeout(b.autoplaytimeoutid), b.autoplaypaused = !0, 0 === t ? (b.autoplaypaused = !1, s()) : b.wrapper.transitionend(function() { b && (b.autoplaypaused = !1, b.autoplaying ? s() : b.stopautoplay()) })) }, b.mintranslate = function() { return - b.snapgrid[0] }, b.maxtranslate = function() { return - b.snapgrid[b.snapgrid.length - 1] }, b.updateautoheight = function() { var t = b.slides.eq(b.activeindex)[0]; if (void 0 !== t) { var e = t.offsetheight; e && b.wrapper.css("height", e + "px") } }, b.updatecontainersize = function() { var t, e; t = void 0 !== b.params.width ? b.params.width: b.container[0].clientwidth, e = void 0 !== b.params.height ? b.params.height: b.container[0].clientheight, 0 === t && b.ishorizontal() || 0 === e && !b.ishorizontal() || (t = t - parseint(b.container.css("padding-left"), 10) - parseint(b.container.css("padding-right"), 10), e = e - parseint(b.container.css("padding-top"), 10) - parseint(b.container.css("padding-bottom"), 10), b.width = t, b.height = e, b.size = b.ishorizontal() ? b.width: b.height) }, b.updateslidessize = function() { b.slides = b.wrapper.children("." + b.params.slideclass), b.snapgrid = [], b.slidesgrid = [], b.slidessizesgrid = []; var t, e = b.params.spacebetween, i = -b.params.slidesoffsetbefore, n = 0, s = 0; if (void 0 !== b.size) { "string" == typeof e && e.indexof("%") >= 0 && (e = parsefloat(e.replace("%", "")) / 100 * b.size), b.virtualsize = -e, b.rtl ? b.slides.css({ marginleft: "", margintop: "" }) : b.slides.css({ marginright: "", marginbottom: "" }); var o; b.params.slidespercolumn > 1 && (o = math.floor(b.slides.length / b.params.slidespercolumn) === b.slides.length / b.params.slidespercolumn ? b.slides.length: math.ceil(b.slides.length / b.params.slidespercolumn) * b.params.slidespercolumn, "auto" !== b.params.slidesperview && "row" === b.params.slidespercolumnfill && (o = math.max(o, b.params.slidesperview * b.params.slidespercolumn))); var a, l = b.params.slidespercolumn, c = o / l, h = c - (b.params.slidespercolumn * c - b.slides.length); for (t = 0; t < b.slides.length; t++) { a = 0; var p = b.slides.eq(t); if (b.params.slidespercolumn > 1) { var u, d, f; "column" === b.params.slidespercolumnfill ? (d = math.floor(t / l), f = t - d * l, (d > h || d === h && f === l - 1) && ++f >= l && (f = 0, d++), u = d + f * o / l, p.css({ "-webkit-box-ordinal-group": u, "-moz-box-ordinal-group": u, "-ms-flex-order": u, "-webkit-order": u, order: u })) : (f = math.floor(t / c), d = t - f * c), p.css({ "margin-top": 0 !== f && b.params.spacebetween && b.params.spacebetween + "px" }).attr("data-swiper-column", d).attr("data-swiper-row", f) } "none" !== p.css("display") && ("auto" === b.params.slidesperview ? (a = b.ishorizontal() ? p.outerwidth(!0) : p.outerheight(!0), b.params.roundlengths && (a = r(a))) : (a = (b.size - (b.params.slidesperview - 1) * e) / b.params.slidesperview, b.params.roundlengths && (a = r(a)), b.ishorizontal() ? b.slides[t].style.width = a + "px": b.slides[t].style.height = a + "px"), b.slides[t].swiperslidesize = a, b.slidessizesgrid.push(a), b.params.centeredslides ? (i = i + a / 2 + n / 2 + e, 0 === t && (i = i - b.size / 2 - e), math.abs(i) < .001 && (i = 0), s % b.params.slidespergroup == 0 && b.snapgrid.push(i), b.slidesgrid.push(i)) : (s % b.params.slidespergroup == 0 && b.snapgrid.push(i), b.slidesgrid.push(i), i = i + a + e), b.virtualsize += a + e, n = a, s++) } b.virtualsize = math.max(b.virtualsize, b.size) + b.params.slidesoffsetafter; var m; if (b.rtl && b.wrongrtl && ("slide" === b.params.effect || "coverflow" === b.params.effect) && b.wrapper.css({ width: b.virtualsize + b.params.spacebetween + "px" }), (!b.support.flexbox || b.params.setwrappersize) && (b.ishorizontal() ? b.wrapper.css({ width: b.virtualsize + b.params.spacebetween + "px" }) : b.wrapper.css({ height: b.virtualsize + b.params.spacebetween + "px" })), b.params.slidespercolumn > 1 && (b.virtualsize = (a + b.params.spacebetween) * o, b.virtualsize = math.ceil(b.virtualsize / b.params.slidespercolumn) - b.params.spacebetween, b.wrapper.css({ width: b.virtualsize + b.params.spacebetween + "px" }), b.params.centeredslides)) { for (m = [], t = 0; t < b.snapgrid.length; t++) b.snapgrid[t] < b.virtualsize + b.snapgrid[0] && m.push(b.snapgrid[t]); b.snapgrid = m } if (!b.params.centeredslides) { for (m = [], t = 0; t < b.snapgrid.length; t++) b.snapgrid[t] <= b.virtualsize - b.size && m.push(b.snapgrid[t]); b.snapgrid = m, math.floor(b.virtualsize - b.size) - math.floor(b.snapgrid[b.snapgrid.length - 1]) > 1 && b.snapgrid.push(b.virtualsize - b.size) } 0 === b.snapgrid.length && (b.snapgrid = [0]), 0 !== b.params.spacebetween && (b.ishorizontal() ? b.rtl ? b.slides.css({ marginleft: e + "px" }) : b.slides.css({ marginright: e + "px" }) : b.slides.css({ marginbottom: e + "px" })), b.params.watchslidesprogress && b.updateslidesoffset() } }, b.updateslidesoffset = function() { for (var t = 0; t < b.slides.length; t++) b.slides[t].swiperslideoffset = b.ishorizontal() ? b.slides[t].offsetleft: b.slides[t].offsettop }, b.updateslidesprogress = function(t) { if (void 0 === t && (t = b.translate || 0), 0 !== b.slides.length) { void 0 === b.slides[0].swiperslideoffset && b.updateslidesoffset(); var e = -t; b.rtl && (e = t), b.slides.removeclass(b.params.slidevisibleclass); for (var i = 0; i < b.slides.length; i++) { var n = b.slides[i], r = (e - n.swiperslideoffset) / (n.swiperslidesize + b.params.spacebetween); if (b.params.watchslidesvisibility) { var s = -(e - n.swiperslideoffset), o = s + b.slidessizesgrid[i]; (s >= 0 && s < b.size || o > 0 && o <= b.size || 0 >= s && o >= b.size) && b.slides.eq(i).addclass(b.params.slidevisibleclass) } n.progress = b.rtl ? -r: r } } }, b.updateprogress = function(t) { void 0 === t && (t = b.translate || 0); var e = b.maxtranslate() - b.mintranslate(), i = b.isbeginning, n = b.isend; 0 === e ? (b.progress = 0, b.isbeginning = b.isend = !0) : (b.progress = (t - b.mintranslate()) / e, b.isbeginning = b.progress <= 0, b.isend = b.progress >= 1), b.isbeginning && !i && b.emit("onreachbeginning", b), b.isend && !n && b.emit("onreachend", b), b.params.watchslidesprogress && b.updateslidesprogress(t), b.emit("onprogress", b, b.progress) }, b.updateactiveindex = function() { var t, e, i, n = b.rtl ? b.translate: -b.translate; for (e = 0; e < b.slidesgrid.length; e++) void 0 !== b.slidesgrid[e + 1] ? n >= b.slidesgrid[e] && n < b.slidesgrid[e + 1] - (b.slidesgrid[e + 1] - b.slidesgrid[e]) / 2 ? t = e: n >= b.slidesgrid[e] && n < b.slidesgrid[e + 1] && (t = e + 1) : n >= b.slidesgrid[e] && (t = e); (0 > t || void 0 === t) && (t = 0), i = math.floor(t / b.params.slidespergroup), i >= b.snapgrid.length && (i = b.snapgrid.length - 1), t !== b.activeindex && (b.snapindex = i, b.previousindex = b.activeindex, b.activeindex = t, b.updateclasses()) }, b.updateclasses = function() { b.slides.removeclass(b.params.slideactiveclass + " " + b.params.slidenextclass + " " + b.params.slideprevclass); var e = b.slides.eq(b.activeindex); e.addclass(b.params.slideactiveclass); var i = e.next("." + b.params.slideclass).addclass(b.params.slidenextclass); b.params.loop && 0 === i.length && b.slides.eq(0).addclass(b.params.slidenextclass); var n = e.prev("." + b.params.slideclass).addclass(b.params.slideprevclass); if (b.params.loop && 0 === n.length && b.slides.eq( - 1).addclass(b.params.slideprevclass), b.paginationcontainer && b.paginationcontainer.length > 0) { var r, s = b.params.loop ? math.ceil((b.slides.length - 2 * b.loopedslides) / b.params.slidespergroup) : b.snapgrid.length; if (b.params.loop ? (r = math.ceil((b.activeindex - b.loopedslides) / b.params.slidespergroup), r > b.slides.length - 1 - 2 * b.loopedslides && (r -= b.slides.length - 2 * b.loopedslides), r > s - 1 && (r -= s), 0 > r && "bullets" !== b.params.paginationtype && (r = s + r)) : r = void 0 !== b.snapindex ? b.snapindex: b.activeindex || 0, "bullets" === b.params.paginationtype && b.bullets && b.bullets.length > 0 && (b.bullets.removeclass(b.params.bulletactiveclass), b.paginationcontainer.length > 1 ? b.bullets.each(function() { t(this).index() === r && t(this).addclass(b.params.bulletactiveclass) }) : b.bullets.eq(r).addclass(b.params.bulletactiveclass)), "fraction" === b.params.paginationtype && (b.paginationcontainer.find("." + b.params.paginationcurrentclass).text(r + 1), b.paginationcontainer.find("." + b.params.paginationtotalclass).text(s)), "progress" === b.params.paginationtype) { var o = (r + 1) / s, a = o, l = 1; b.ishorizontal() || (l = o, a = 1), b.paginationcontainer.find("." + b.params.paginationprogressbarclass).transform("translate3d(0,0,0) scalex(" + a + ") scaley(" + l + ")").transition(b.params.speed) } "custom" === b.params.paginationtype && b.params.paginationcustomrender && (b.paginationcontainer.html(b.params.paginationcustomrender(b, r + 1, s)), b.emit("onpaginationrendered", b, b.paginationcontainer[0])) } b.params.loop || (b.params.prevbutton && b.prevbutton && b.prevbutton.length > 0 && (b.isbeginning ? (b.prevbutton.addclass(b.params.buttondisabledclass), b.params.a11y && b.a11y && b.a11y.disable(b.prevbutton)) : (b.prevbutton.removeclass(b.params.buttondisabledclass), b.params.a11y && b.a11y && b.a11y.enable(b.prevbutton))), b.params.nextbutton && b.nextbutton && b.nextbutton.length > 0 && (b.isend ? (b.nextbutton.addclass(b.params.buttondisabledclass), b.params.a11y && b.a11y && b.a11y.disable(b.nextbutton)) : (b.nextbutton.removeclass(b.params.buttondisabledclass), b.params.a11y && b.a11y && b.a11y.enable(b.nextbutton)))) }, b.updatepagination = function() { if (b.params.pagination && b.paginationcontainer && b.paginationcontainer.length > 0) { var t = ""; if ("bullets" === b.params.paginationtype) { for (var e = b.params.loop ? math.ceil((b.slides.length - 2 * b.loopedslides) / b.params.slidespergroup) : b.snapgrid.length, i = 0; e > i; i++) t += b.params.paginationbulletrender ? b.params.paginationbulletrender(i, b.params.bulletclass) : "<" + b.params.paginationelement + ' class="' + b.params.bulletclass + '">"; b.paginationcontainer.html(t), b.bullets = b.paginationcontainer.find("." + b.params.bulletclass), b.params.paginationclickable && b.params.a11y && b.a11y && b.a11y.initpagination() } "fraction" === b.params.paginationtype && (t = b.params.paginationfractionrender ? b.params.paginationfractionrender(b, b.params.paginationcurrentclass, b.params.paginationtotalclass) : ' / ', b.paginationcontainer.html(t)), "progress" === b.params.paginationtype && (t = b.params.paginationprogressrender ? b.params.paginationprogressrender(b, b.params.paginationprogressbarclass) : '', b.paginationcontainer.html(t)), "custom" !== b.params.paginationtype && b.emit("onpaginationrendered", b, b.paginationcontainer[0]) } }, b.update = function(t) { function e() { i = math.min(math.max(b.translate, b.maxtranslate()), b.mintranslate()), b.setwrappertranslate(i), b.updateactiveindex(), b.updateclasses() } if (b.updatecontainersize(), b.updateslidessize(), b.updateprogress(), b.updatepagination(), b.updateclasses(), b.params.scrollbar && b.scrollbar && b.scrollbar.set(), t) { var i; b.controller && b.controller.spline && (b.controller.spline = void 0), b.params.freemode ? (e(), b.params.autoheight && b.updateautoheight()) : (("auto" === b.params.slidesperview || b.params.slidesperview > 1) && b.isend && !b.params.centeredslides ? b.slideto(b.slides.length - 1, 0, !1, !0) : b.slideto(b.activeindex, 0, !1, !0)) || e() } else b.params.autoheight && b.updateautoheight() }, b.onresize = function(t) { b.params.breakpoints && b.setbreakpoint(); var e = b.params.allowswipetoprev, i = b.params.allowswipetonext; b.params.allowswipetoprev = b.params.allowswipetonext = !0, b.updatecontainersize(), b.updateslidessize(), ("auto" === b.params.slidesperview || b.params.freemode || t) && b.updatepagination(), b.params.scrollbar && b.scrollbar && b.scrollbar.set(), b.controller && b.controller.spline && (b.controller.spline = void 0); var n = !1; if (b.params.freemode) { var r = math.min(math.max(b.translate, b.maxtranslate()), b.mintranslate()); b.setwrappertranslate(r), b.updateactiveindex(), b.updateclasses(), b.params.autoheight && b.updateautoheight() } else b.updateclasses(), n = ("auto" === b.params.slidesperview || b.params.slidesperview > 1) && b.isend && !b.params.centeredslides ? b.slideto(b.slides.length - 1, 0, !1, !0) : b.slideto(b.activeindex, 0, !1, !0); b.params.lazyloading && !n && b.lazy && b.lazy.load(), b.params.allowswipetoprev = e, b.params.allowswipetonext = i }; var w = ["mousedown", "mousemove", "mouseup"]; window.navigator.pointerenabled ? w = ["pointerdown", "pointermove", "pointerup"] : window.navigator.mspointerenabled && (w = ["mspointerdown", "mspointermove", "mspointerup"]), b.touchevents = { start: b.support.touch || !b.params.simulatetouch ? "touchstart": w[0], move: b.support.touch || !b.params.simulatetouch ? "touchmove": w[1], end: b.support.touch || !b.params.simulatetouch ? "touchend": w[2] }, (window.navigator.pointerenabled || window.navigator.mspointerenabled) && ("container" === b.params.toucheventstarget ? b.container: b.wrapper).addclass("swiper-wp8-" + b.params.direction), b.initevents = function(t) { var e = t ? "off": "on", i = t ? "removeeventlistener": "addeventlistener", r = "container" === b.params.toucheventstarget ? b.container[0] : b.wrapper[0], s = b.support.touch ? r: document, o = !!b.params.nested; b.browser.ie ? (r[i](b.touchevents.start, b.ontouchstart, !1), s[i](b.touchevents.move, b.ontouchmove, o), s[i](b.touchevents.end, b.ontouchend, !1)) : (b.support.touch && (r[i](b.touchevents.start, b.ontouchstart, !1), r[i](b.touchevents.move, b.ontouchmove, o), r[i](b.touchevents.end, b.ontouchend, !1)), !n.simulatetouch || b.device.ios || b.device.android || (r[i]("mousedown", b.ontouchstart, !1), document[i]("mousemove", b.ontouchmove, o), document[i]("mouseup", b.ontouchend, !1))), window[i]("resize", b.onresize), b.params.nextbutton && b.nextbutton && b.nextbutton.length > 0 && (b.nextbutton[e]("click", b.onclicknext), b.params.a11y && b.a11y && b.nextbutton[e]("keydown", b.a11y.onenterkey)), b.params.prevbutton && b.prevbutton && b.prevbutton.length > 0 && (b.prevbutton[e]("click", b.onclickprev), b.params.a11y && b.a11y && b.prevbutton[e]("keydown", b.a11y.onenterkey)), b.params.pagination && b.params.paginationclickable && (b.paginationcontainer[e]("click", "." + b.params.bulletclass, b.onclickindex), b.params.a11y && b.a11y && b.paginationcontainer[e]("keydown", "." + b.params.bulletclass, b.a11y.onenterkey)), (b.params.preventclicks || b.params.preventclickspropagation) && r[i]("click", b.preventclicks, !0) }, b.attachevents = function() { b.initevents() }, b.detachevents = function() { b.initevents(!0) }, b.allowclick = !0, b.preventclicks = function(t) { b.allowclick || (b.params.preventclicks && t.preventdefault(), b.params.preventclickspropagation && b.animating && (t.stoppropagation(), t.stopimmediatepropagation())) }, b.onclicknext = function(t) { t.preventdefault(), (!b.isend || b.params.loop) && b.slidenext() }, b.onclickprev = function(t) { t.preventdefault(), (!b.isbeginning || b.params.loop) && b.slideprev() }, b.onclickindex = function(e) { e.preventdefault(); var i = t(this).index() * b.params.slidespergroup; b.params.loop && (i += b.loopedslides), b.slideto(i) }, b.updateclickedslide = function(e) { var i = o(e, "." + b.params.slideclass), n = !1; if (i) for (var r = 0; r < b.slides.length; r++) b.slides[r] === i && (n = !0); if (!i || !n) return b.clickedslide = void 0, void(b.clickedindex = void 0); if (b.clickedslide = i, b.clickedindex = t(i).index(), b.params.slidetoclickedslide && void 0 !== b.clickedindex && b.clickedindex !== b.activeindex) { var s, a = b.clickedindex; if (b.params.loop) { if (b.animating) return; s = t(b.clickedslide).attr("data-swiper-slide-index"), b.params.centeredslides ? a < b.loopedslides - b.params.slidesperview / 2 || a > b.slides.length - b.loopedslides + b.params.slidesperview / 2 ? (b.fixloop(), a = b.wrapper.children("." + b.params.slideclass + '[data-swiper-slide-index="' + s + '"]:not(.swiper-slide-duplicate)').eq(0).index(), settimeout(function() { b.slideto(a) }, 0)) : b.slideto(a) : a > b.slides.length - b.params.slidesperview ? (b.fixloop(), a = b.wrapper.children("." + b.params.slideclass + '[data-swiper-slide-index="' + s + '"]:not(.swiper-slide-duplicate)').eq(0).index(), settimeout(function() { b.slideto(a) }, 0)) : b.slideto(a) } else b.slideto(a) } }; var _, c, s, x, k, e, p, m, i, a, j = "input, select, textarea, button", d = date.now(), o = []; b.animating = !1, b.touches = { startx: 0, starty: 0, currentx: 0, currenty: 0, diff: 0 }; var z, n; if (b.ontouchstart = function(e) { if (e.originalevent && (e = e.originalevent), (z = "touchstart" === e.type) || !("which" in e) || 3 !== e.which) { if (b.params.noswiping && o(e, "." + b.params.noswipingclass)) return void(b.allowclick = !0); if (!b.params.swipehandler || o(e, b.params.swipehandler)) { var i = b.touches.currentx = "touchstart" === e.type ? e.targettouches[0].pagex: e.pagex, n = b.touches.currenty = "touchstart" === e.type ? e.targettouches[0].pagey: e.pagey; if (! (b.device.ios && b.params.iosedgeswipedetection && i <= b.params.iosedgeswipethreshold)) { if (_ = !0, c = !1, s = !0, k = void 0, n = void 0, b.touches.startx = i, b.touches.starty = n, x = date.now(), b.allowclick = !0, b.updatecontainersize(), b.swipedirection = void 0, b.params.threshold > 0 && (m = !1), "touchstart" !== e.type) { var r = !0; t(e.target).is(j) && (r = !1), document.activeelement && t(document.activeelement).is(j) && document.activeelement.blur(), r && e.preventdefault() } b.emit("ontouchstart", b, e) } } } }, b.ontouchmove = function(e) { if (e.originalevent && (e = e.originalevent), !z || "mousemove" !== e.type) { if (e.preventedbynestedswiper) return b.touches.startx = "touchmove" === e.type ? e.targettouches[0].pagex: e.pagex, void(b.touches.starty = "touchmove" === e.type ? e.targettouches[0].pagey: e.pagey); if (b.params.onlyexternal) return b.allowclick = !1, void(_ && (b.touches.startx = b.touches.currentx = "touchmove" === e.type ? e.targettouches[0].pagex: e.pagex, b.touches.starty = b.touches.currenty = "touchmove" === e.type ? e.targettouches[0].pagey: e.pagey, x = date.now())); if (z && document.activeelement && e.target === document.activeelement && t(e.target).is(j)) return c = !0, void(b.allowclick = !1); if (s && b.emit("ontouchmove", b, e), !(e.targettouches && e.targettouches.length > 1)) { if (b.touches.currentx = "touchmove" === e.type ? e.targettouches[0].pagex: e.pagex, b.touches.currenty = "touchmove" === e.type ? e.targettouches[0].pagey: e.pagey, void 0 === k) { var i = 180 * math.atan2(math.abs(b.touches.currenty - b.touches.starty), math.abs(b.touches.currentx - b.touches.startx)) / math.pi; k = b.ishorizontal() ? i > b.params.touchangle: 90 - i > b.params.touchangle } if (k && b.emit("ontouchmoveopposite", b, e), void 0 === n && b.browser.ietouch && (b.touches.currentx !== b.touches.startx || b.touches.currenty !== b.touches.starty) && (n = !0), _) { if (k) return void(_ = !1); if (n || !b.browser.ietouch) { b.allowclick = !1, b.emit("onslidermove", b, e), e.preventdefault(), b.params.touchmovestoppropagation && !b.params.nested && e.stoppropagation(), c || (n.loop && b.fixloop(), p = b.getwrappertranslate(), b.setwrappertransition(0), b.animating && b.wrapper.trigger("webkittransitionend transitionend otransitionend mstransitionend mstransitionend"), b.params.autoplay && b.autoplaying && (b.params.autoplaydisableoninteraction ? b.stopautoplay() : b.pauseautoplay()), a = !1, b.params.grabcursor && (b.container[0].style.cursor = "move", b.container[0].style.cursor = "-webkit-grabbing", b.container[0].style.cursor = "-moz-grabbin", b.container[0].style.cursor = "grabbing")), c = !0; var r = b.touches.diff = b.ishorizontal() ? b.touches.currentx - b.touches.startx: b.touches.currenty - b.touches.starty; r *= b.params.touchratio, b.rtl && (r = -r), b.swipedirection = r > 0 ? "prev": "next", e = r + p; var s = !0; if (r > 0 && e > b.mintranslate() ? (s = !1, b.params.resistance && (e = b.mintranslate() - 1 + math.pow( - b.mintranslate() + p + r, b.params.resistanceratio))) : 0 > r && e < b.maxtranslate() && (s = !1, b.params.resistance && (e = b.maxtranslate() + 1 - math.pow(b.maxtranslate() - p - r, b.params.resistanceratio))), s && (e.preventedbynestedswiper = !0), !b.params.allowswipetonext && "next" === b.swipedirection && p > e && (e = p), !b.params.allowswipetoprev && "prev" === b.swipedirection && e > p && (e = p), b.params.followfinger) { if (b.params.threshold > 0) { if (! (math.abs(r) > b.params.threshold || m)) return void(e = p); if (!m) return m = !0, b.touches.startx = b.touches.currentx, b.touches.starty = b.touches.currenty, e = p, void(b.touches.diff = b.ishorizontal() ? b.touches.currentx - b.touches.startx: b.touches.currenty - b.touches.starty) } (b.params.freemode || b.params.watchslidesprogress) && b.updateactiveindex(), b.params.freemode && (0 === o.length && o.push({ position: b.touches[b.ishorizontal() ? "startx": "starty"], time: x }), o.push({ position: b.touches[b.ishorizontal() ? "currentx": "currenty"], time: (new window.date).gettime() })), b.updateprogress(e), b.setwrappertranslate(e) } } } } } }, b.ontouchend = function(e) { if (e.originalevent && (e = e.originalevent), s && b.emit("ontouchend", b, e), s = !1, _) { b.params.grabcursor && c && _ && (b.container[0].style.cursor = "move", b.container[0].style.cursor = "-webkit-grab", b.container[0].style.cursor = "-moz-grab", b.container[0].style.cursor = "grab"); var i = date.now(), n = i - x; if (b.allowclick && (b.updateclickedslide(e), b.emit("ontap", b, e), 300 > n && i - d > 300 && (i && cleartimeout(i), i = settimeout(function() { b && (b.params.paginationhide && b.paginationcontainer.length > 0 && !t(e.target).hasclass(b.params.bulletclass) && b.paginationcontainer.toggleclass(b.params.paginationhiddenclass), b.emit("onclick", b, e)) }, 300)), 300 > n && 300 > i - d && (i && cleartimeout(i), b.emit("ondoubletap", b, e))), d = date.now(), settimeout(function() { b && (b.allowclick = !0) }, 0), !_ || !c || !b.swipedirection || 0 === b.touches.diff || e === p) return void(_ = c = !1); _ = c = !1; var r; if (r = b.params.followfinger ? b.rtl ? b.translate: -b.translate: -e, b.params.freemode) { if (r < -b.mintranslate()) return void b.slideto(b.activeindex); if (r > -b.maxtranslate()) return void(b.slides.length < b.snapgrid.length ? b.slideto(b.snapgrid.length - 1) : b.slideto(b.slides.length - 1)); if (b.params.freemodemomentum) { if (o.length > 1) { var s = o.pop(), o = o.pop(), a = s.position - o.position, l = s.time - o.time; b.velocity = a / l, b.velocity = b.velocity / 2, math.abs(b.velocity) < b.params.freemodeminimumvelocity && (b.velocity = 0), (l > 150 || (new window.date).gettime() - s.time > 300) && (b.velocity = 0) } else b.velocity = 0; o.length = 0; var c = 1e3 * b.params.freemodemomentumratio, h = b.velocity * c, p = b.translate + h; b.rtl && (p = -p); var u, d = !1, f = 20 * math.abs(b.velocity) * b.params.freemodemomentumbounceratio; if (p < b.maxtranslate()) b.params.freemodemomentumbounce ? (p + b.maxtranslate() < -f && (p = b.maxtranslate() - f), u = b.maxtranslate(), d = !0, a = !0) : p = b.maxtranslate(); else if (p > b.mintranslate()) b.params.freemodemomentumbounce ? (p - b.mintranslate() > f && (p = b.mintranslate() + f), u = b.mintranslate(), d = !0, a = !0) : p = b.mintranslate(); else if (b.params.freemodesticky) { var m, v = 0; for (v = 0; v < b.snapgrid.length; v += 1) if (b.snapgrid[v] > -p) { m = v; break } p = math.abs(b.snapgrid[m] - p) < math.abs(b.snapgrid[m - 1] - p) || "next" === b.swipedirection ? b.snapgrid[m] : b.snapgrid[m - 1], b.rtl || (p = -p) } if (0 !== b.velocity) c = b.rtl ? math.abs(( - p - b.translate) / b.velocity) : math.abs((p - b.translate) / b.velocity); else if (b.params.freemodesticky) return void b.slidereset(); b.params.freemodemomentumbounce && d ? (b.updateprogress(u), b.setwrappertransition(c), b.setwrappertranslate(p), b.ontransitionstart(), b.animating = !0, b.wrapper.transitionend(function() { b && a && (b.emit("onmomentumbounce", b), b.setwrappertransition(b.params.speed), b.setwrappertranslate(u), b.wrapper.transitionend(function() { b && b.ontransitionend() })) })) : b.velocity ? (b.updateprogress(p), b.setwrappertransition(c), b.setwrappertranslate(p), b.ontransitionstart(), b.animating || (b.animating = !0, b.wrapper.transitionend(function() { b && b.ontransitionend() }))) : b.updateprogress(p), b.updateactiveindex() } return void((!b.params.freemodemomentum || n >= b.params.longswipesms) && (b.updateprogress(), b.updateactiveindex())) } var g, y = 0, t = b.slidessizesgrid[0]; for (g = 0; g < b.slidesgrid.length; g += b.params.slidespergroup) void 0 !== b.slidesgrid[g + b.params.slidespergroup] ? r >= b.slidesgrid[g] && r < b.slidesgrid[g + b.params.slidespergroup] && (y = g, t = b.slidesgrid[g + b.params.slidespergroup] - b.slidesgrid[g]) : r >= b.slidesgrid[g] && (y = g, t = b.slidesgrid[b.slidesgrid.length - 1] - b.slidesgrid[b.slidesgrid.length - 2]); var w = (r - b.slidesgrid[y]) / t; if (n > b.params.longswipesms) { if (!b.params.longswipes) return void b.slideto(b.activeindex); "next" === b.swipedirection && (w >= b.params.longswipesratio ? b.slideto(y + b.params.slidespergroup) : b.slideto(y)), "prev" === b.swipedirection && (w > 1 - b.params.longswipesratio ? b.slideto(y + b.params.slidespergroup) : b.slideto(y)) } else { if (!b.params.shortswipes) return void b.slideto(b.activeindex); "next" === b.swipedirection && b.slideto(y + b.params.slidespergroup), "prev" === b.swipedirection && b.slideto(y) } } }, b._slideto = function(t, e) { return b.slideto(t, e, !0, !0) }, b.slideto = function(t, e, i, n) { void 0 === i && (i = !0), void 0 === t && (t = 0), 0 > t && (t = 0), b.snapindex = math.floor(t / b.params.slidespergroup), b.snapindex >= b.snapgrid.length && (b.snapindex = b.snapgrid.length - 1); var r = -b.snapgrid[b.snapindex]; b.params.autoplay && b.autoplaying && (n || !b.params.autoplaydisableoninteraction ? b.pauseautoplay(e) : b.stopautoplay()), b.updateprogress(r); for (var s = 0; s < b.slidesgrid.length; s++) - math.floor(100 * r) >= math.floor(100 * b.slidesgrid[s]) && (t = s); return ! (!b.params.allowswipetonext && r < b.translate && r < b.mintranslate()) && (!(!b.params.allowswipetoprev && r > b.translate && r > b.maxtranslate() && (b.activeindex || 0) !== t) && (void 0 === e && (e = b.params.speed), b.previousindex = b.activeindex || 0, b.activeindex = t, b.rtl && -r === b.translate || !b.rtl && r === b.translate ? (b.params.autoheight && b.updateautoheight(), b.updateclasses(), "slide" !== b.params.effect && b.setwrappertranslate(r), !1) : (b.updateclasses(), b.ontransitionstart(i), 0 === e ? (b.setwrappertranslate(r), b.setwrappertransition(0), b.ontransitionend(i)) : (b.setwrappertranslate(r), b.setwrappertransition(e), b.animating || (b.animating = !0, b.wrapper.transitionend(function() { b && b.ontransitionend(i) }))), !0))) }, b.ontransitionstart = function(t) { void 0 === t && (t = !0), b.params.autoheight && b.updateautoheight(), b.lazy && b.lazy.ontransitionstart(), t && (b.emit("ontransitionstart", b), b.activeindex !== b.previousindex && (b.emit("onslidechangestart", b), b.activeindex > b.previousindex ? b.emit("onslidenextstart", b) : b.emit("onslideprevstart", b))) }, b.ontransitionend = function(t) { b.animating = !1, b.setwrappertransition(0), void 0 === t && (t = !0), b.lazy && b.lazy.ontransitionend(), t && (b.emit("ontransitionend", b), b.activeindex !== b.previousindex && (b.emit("onslidechangeend", b), b.activeindex > b.previousindex ? b.emit("onslidenextend", b) : b.emit("onslideprevend", b))), b.params.hashnav && b.hashnav && b.hashnav.sethash() }, b.slidenext = function(t, e, i) { return b.params.loop ? !b.animating && (b.fixloop(), b.container[0].clientleft, b.slideto(b.activeindex + b.params.slidespergroup, e, t, i)) : b.slideto(b.activeindex + b.params.slidespergroup, e, t, i) }, b._slidenext = function(t) { return b.slidenext(!0, t, !0) }, b.slideprev = function(t, e, i) { return b.params.loop ? !b.animating && (b.fixloop(), b.container[0].clientleft, b.slideto(b.activeindex - 1, e, t, i)) : b.slideto(b.activeindex - 1, e, t, i) }, b._slideprev = function(t) { return b.slideprev(!0, t, !0) }, b.slidereset = function(t, e, i) { return b.slideto(b.activeindex, e, t) }, b.setwrappertransition = function(t, e) { b.wrapper.transition(t), "slide" !== b.params.effect && b.effects[b.params.effect] && b.effects[b.params.effect].settransition(t), b.params.parallax && b.parallax && b.parallax.settransition(t), b.params.scrollbar && b.scrollbar && b.scrollbar.settransition(t), b.params.control && b.controller && b.controller.settransition(t, e), b.emit("onsettransition", b, t) }, b.setwrappertranslate = function(t, e, i) { var n = 0, s = 0; b.ishorizontal() ? n = b.rtl ? -t: t: s = t, b.params.roundlengths && (n = r(n), s = r(s)), b.params.virtualtranslate || (b.support.transforms3d ? b.wrapper.transform("translate3d(" + n + "px, " + s + "px, 0px)") : b.wrapper.transform("translate(" + n + "px, " + s + "px)")), b.translate = b.ishorizontal() ? n: s; var o, a = b.maxtranslate() - b.mintranslate(); o = 0 === a ? 0 : (t - b.mintranslate()) / a, o !== b.progress && b.updateprogress(t), e && b.updateactiveindex(), "slide" !== b.params.effect && b.effects[b.params.effect] && b.effects[b.params.effect].settranslate(b.translate), b.params.parallax && b.parallax && b.parallax.settranslate(b.translate), b.params.scrollbar && b.scrollbar && b.scrollbar.settranslate(b.translate), b.params.control && b.controller && b.controller.settranslate(b.translate, i), b.emit("onsettranslate", b, b.translate) }, b.gettranslate = function(t, e) { var i, n, r, s; return void 0 === e && (e = "x"), b.params.virtualtranslate ? b.rtl ? -b.translate: b.translate: (r = window.getcomputedstyle(t, null), window.webkitcssmatrix ? (n = r.transform || r.webkittransform, n.split(",").length > 6 && (n = n.split(", ").map(function(t) { return t.replace(",", ".") }).join(", ")), s = new window.webkitcssmatrix("none" === n ? "": n)) : (s = r.moztransform || r.otransform || r.mstransform || r.mstransform || r.transform || r.getpropertyvalue("transform").replace("translate(", "matrix(1, 0, 0, 1,"), i = s.tostring().split(",")), "x" === e && (n = window.webkitcssmatrix ? s.m41: 16 === i.length ? parsefloat(i[12]) : parsefloat(i[4])), "y" === e && (n = window.webkitcssmatrix ? s.m42: 16 === i.length ? parsefloat(i[13]) : parsefloat(i[5])), b.rtl && n && (n = -n), n || 0) }, b.getwrappertranslate = function(t) { return void 0 === t && (t = b.ishorizontal() ? "x": "y"), b.gettranslate(b.wrapper[0], t) }, b.observers = [], b.initobservers = function() { if (b.params.observeparents) for (var t = b.container.parents(), e = 0; e < t.length; e++) a(t[e]); a(b.container[0], { childlist: !1 }), a(b.wrapper[0], { attributes: !1 }) }, b.disconnectobservers = function() { for (var t = 0; t < b.observers.length; t++) b.observers[t].disconnect(); b.observers = [] }, b.createloop = function() { b.wrapper.children("." + b.params.slideclass + "." + b.params.slideduplicateclass).remove(); var e = b.wrapper.children("." + b.params.slideclass); "auto" !== b.params.slidesperview || b.params.loopedslides || (b.params.loopedslides = e.length), b.loopedslides = parseint(b.params.loopedslides || b.params.slidesperview, 10), b.loopedslides = b.loopedslides + b.params.loopadditionalslides, b.loopedslides > e.length && (b.loopedslides = e.length); var i, n = [], r = []; for (e.each(function(i, s) { var o = t(this); i < b.loopedslides && r.push(s), i < e.length && i >= e.length - b.loopedslides && n.push(s), o.attr("data-swiper-slide-index", i) }), i = 0; i < r.length; i++) b.wrapper.append(t(r[i].clonenode(!0)).addclass(b.params.slideduplicateclass)); for (i = n.length - 1; i >= 0; i--) b.wrapper.prepend(t(n[i].clonenode(!0)).addclass(b.params.slideduplicateclass)) }, b.destroyloop = function() { b.wrapper.children("." + b.params.slideclass + "." + b.params.slideduplicateclass).remove(), b.slides.removeattr("data-swiper-slide-index") }, b.reloop = function(t) { var e = b.activeindex - b.loopedslides; b.destroyloop(), b.createloop(), b.updateslidessize(), t && b.slideto(e + b.loopedslides, 0, !1) }, b.fixloop = function() { var t; b.activeindex < b.loopedslides ? (t = b.slides.length - 3 * b.loopedslides + b.activeindex, t += b.loopedslides, b.slideto(t, 0, !1, !0)) : ("auto" === b.params.slidesperview && b.activeindex >= 2 * b.loopedslides || b.activeindex > b.slides.length - 2 * b.params.slidesperview) && (t = -b.slides.length + b.activeindex + b.loopedslides, t += b.loopedslides, b.slideto(t, 0, !1, !0)) }, b.appendslide = function(t) { if (b.params.loop && b.destroyloop(), "object" == typeof t && t.length) for (var e = 0; e < t.length; e++) t[e] && b.wrapper.append(t[e]); else b.wrapper.append(t); b.params.loop && b.createloop(), b.params.observer && b.support.observer || b.update(!0) }, b.prependslide = function(t) { b.params.loop && b.destroyloop(); var e = b.activeindex + 1; if ("object" == typeof t && t.length) { for (var i = 0; i < t.length; i++) t[i] && b.wrapper.prepend(t[i]); e = b.activeindex + t.length } else b.wrapper.prepend(t); b.params.loop && b.createloop(), b.params.observer && b.support.observer || b.update(!0), b.slideto(e, 0, !1) }, b.removeslide = function(t) { b.params.loop && (b.destroyloop(), b.slides = b.wrapper.children("." + b.params.slideclass)); var e, i = b.activeindex; if ("object" == typeof t && t.length) { for (var n = 0; n < t.length; n++) e = t[n], b.slides[e] && b.slides.eq(e).remove(), i > e && i--; i = math.max(i, 0) } else e = t, b.slides[e] && b.slides.eq(e).remove(), i > e && i--, i = math.max(i, 0); b.params.loop && b.createloop(), b.params.observer && b.support.observer || b.update(!0), b.params.loop ? b.slideto(i + b.loopedslides, 0, !1) : b.slideto(i, 0, !1) }, b.removeallslides = function() { for (var t = [], e = 0; e < b.slides.length; e++) t.push(e); b.removeslide(t) }, b.effects = { fade: { settranslate: function() { for (var t = 0; t < b.slides.length; t++) { var e = b.slides.eq(t), i = e[0].swiperslideoffset, n = -i; b.params.virtualtranslate || (n -= b.translate); var r = 0; b.ishorizontal() || (r = n, n = 0); var s = b.params.fade.crossfade ? math.max(1 - math.abs(e[0].progress), 0) : 1 + math.min(math.max(e[0].progress, -1), 0); e.css({ opacity: s }).transform("translate3d(" + n + "px, " + r + "px, 0px)") } }, settransition: function(t) { if (b.slides.transition(t), b.params.virtualtranslate && 0 !== t) { var e = !1; b.slides.transitionend(function() { if (!e && b) { e = !0, b.animating = !1; for (var t = ["webkittransitionend", "transitionend", "otransitionend", "mstransitionend", "mstransitionend"], i = 0; i < t.length; i++) b.wrapper.trigger(t[i]) } }) } } }, flip: { settranslate: function() { for (var e = 0; e < b.slides.length; e++) { var i = b.slides.eq(e), n = i[0].progress; b.params.flip.limitrotation && (n = math.max(math.min(i[0].progress, 1), -1)); var r = i[0].swiperslideoffset, s = -180 * n, o = s, a = 0, l = -r, c = 0; if (b.ishorizontal() ? b.rtl && (o = -o) : (c = l, l = 0, a = -o, o = 0), i[0].style.zindex = -math.abs(math.round(n)) + b.slides.length, b.params.flip.slideshadows) { var h = b.ishorizontal() ? i.find(".swiper-slide-shadow-left") : i.find(".swiper-slide-shadow-top"), p = b.ishorizontal() ? i.find(".swiper-slide-shadow-right") : i.find(".swiper-slide-shadow-bottom"); 0 === h.length && (h = t('
    '), i.append(h)), 0 === p.length && (p = t('
    '), i.append(p)), h.length && (h[0].style.opacity = math.max( - n, 0)), p.length && (p[0].style.opacity = math.max(n, 0)) } i.transform("translate3d(" + l + "px, " + c + "px, 0px) rotatex(" + a + "deg) rotatey(" + o + "deg)") } }, settransition: function(e) { if (b.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e), b.params.virtualtranslate && 0 !== e) { var i = !1; b.slides.eq(b.activeindex).transitionend(function() { if (!i && b && t(this).hasclass(b.params.slideactiveclass)) { i = !0, b.animating = !1; for (var e = ["webkittransitionend", "transitionend", "otransitionend", "mstransitionend", "mstransitionend"], n = 0; n < e.length; n++) b.wrapper.trigger(e[n]) } }) } } }, cube: { settranslate: function() { var e, i = 0; b.params.cube.shadow && (b.ishorizontal() ? (e = b.wrapper.find(".swiper-cube-shadow"), 0 === e.length && (e = t('
    '), b.wrapper.append(e)), e.css({ height: b.width + "px" })) : (e = b.container.find(".swiper-cube-shadow"), 0 === e.length && (e = t('
    '), b.container.append(e)))); for (var n = 0; n < b.slides.length; n++) { var r = b.slides.eq(n), s = 90 * n, o = math.floor(s / 360); b.rtl && (s = -s, o = math.floor( - s / 360)); var a = math.max(math.min(r[0].progress, 1), -1), l = 0, c = 0, h = 0; n % 4 == 0 ? (l = 4 * -o * b.size, h = 0) : (n - 1) % 4 == 0 ? (l = 0, h = 4 * -o * b.size) : (n - 2) % 4 == 0 ? (l = b.size + 4 * o * b.size, h = b.size) : (n - 3) % 4 == 0 && (l = -b.size, h = 3 * b.size + 4 * b.size * o), b.rtl && (l = -l), b.ishorizontal() || (c = l, l = 0); var p = "rotatex(" + (b.ishorizontal() ? 0 : -s) + "deg) rotatey(" + (b.ishorizontal() ? s: 0) + "deg) translate3d(" + l + "px, " + c + "px, " + h + "px)"; if (1 >= a && a > -1 && (i = 90 * n + 90 * a, b.rtl && (i = 90 * -n - 90 * a)), r.transform(p), b.params.cube.slideshadows) { var u = b.ishorizontal() ? r.find(".swiper-slide-shadow-left") : r.find(".swiper-slide-shadow-top"), d = b.ishorizontal() ? r.find(".swiper-slide-shadow-right") : r.find(".swiper-slide-shadow-bottom"); 0 === u.length && (u = t('
    '), r.append(u)), 0 === d.length && (d = t('
    '), r.append(d)), u.length && (u[0].style.opacity = math.max( - a, 0)), d.length && (d[0].style.opacity = math.max(a, 0)) } } if (b.wrapper.css({ "-webkit-transform-origin": "50% 50% -" + b.size / 2 + "px", "-moz-transform-origin": "50% 50% -" + b.size / 2 + "px", "-ms-transform-origin": "50% 50% -" + b.size / 2 + "px", "transform-origin": "50% 50% -" + b.size / 2 + "px" }), b.params.cube.shadow) if (b.ishorizontal()) e.transform("translate3d(0px, " + (b.width / 2 + b.params.cube.shadowoffset) + "px, " + -b.width / 2 + "px) rotatex(90deg) rotatez(0deg) scale(" + b.params.cube.shadowscale + ")"); else { var f = math.abs(i) - 90 * math.floor(math.abs(i) / 90), m = 1.5 - (math.sin(2 * f * math.pi / 360) / 2 + math.cos(2 * f * math.pi / 360) / 2), v = b.params.cube.shadowscale, g = b.params.cube.shadowscale / m, y = b.params.cube.shadowoffset; e.transform("scale3d(" + v + ", 1, " + g + ") translate3d(0px, " + (b.height / 2 + y) + "px, " + -b.height / 2 / g + "px) rotatex(-90deg)") } var t = b.issafari || b.isuiwebview ? -b.size / 2 : 0; b.wrapper.transform("translate3d(0px,0," + t + "px) rotatex(" + (b.ishorizontal() ? 0 : i) + "deg) rotatey(" + (b.ishorizontal() ? -i: 0) + "deg)") }, settransition: function(t) { b.slides.transition(t).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(t), b.params.cube.shadow && !b.ishorizontal() && b.container.find(".swiper-cube-shadow").transition(t) } }, coverflow: { settranslate: function() { for (var e = b.translate, i = b.ishorizontal() ? -e + b.width / 2 : -e + b.height / 2, n = b.ishorizontal() ? b.params.coverflow.rotate: -b.params.coverflow.rotate, r = b.params.coverflow.depth, s = 0, o = b.slides.length; o > s; s++) { var a = b.slides.eq(s), l = b.slidessizesgrid[s], c = a[0].swiperslideoffset, h = (i - c - l / 2) / l * b.params.coverflow.modifier, p = b.ishorizontal() ? n * h: 0, u = b.ishorizontal() ? 0 : n * h, d = -r * math.abs(h), f = b.ishorizontal() ? 0 : b.params.coverflow.stretch * h, m = b.ishorizontal() ? b.params.coverflow.stretch * h: 0; math.abs(m) < .001 && (m = 0), math.abs(f) < .001 && (f = 0), math.abs(d) < .001 && (d = 0), math.abs(p) < .001 && (p = 0), math.abs(u) < .001 && (u = 0); var v = "translate3d(" + m + "px," + f + "px," + d + "px) rotatex(" + u + "deg) rotatey(" + p + "deg)"; if (a.transform(v), a[0].style.zindex = 1 - math.abs(math.round(h)), b.params.coverflow.slideshadows) { var g = b.ishorizontal() ? a.find(".swiper-slide-shadow-left") : a.find(".swiper-slide-shadow-top"), y = b.ishorizontal() ? a.find(".swiper-slide-shadow-right") : a.find(".swiper-slide-shadow-bottom"); 0 === g.length && (g = t('
    '), a.append(g)), 0 === y.length && (y = t('
    '), a.append(y)), g.length && (g[0].style.opacity = h > 0 ? h: 0), y.length && (y[0].style.opacity = -h > 0 ? -h: 0) } } if (b.browser.ie) { b.wrapper[0].style.perspectiveorigin = i + "px 50%" } }, settransition: function(t) { b.slides.transition(t).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(t) } } }, b.lazy = { initialimageloaded: !1, loadimageinslide: function(e, i) { if (void 0 !== e && (void 0 === i && (i = !0), 0 !== b.slides.length)) { var n = b.slides.eq(e), r = n.find(".swiper-lazy:not(.swiper-lazy-loaded):not(.swiper-lazy-loading)"); ! n.hasclass("swiper-lazy") || n.hasclass("swiper-lazy-loaded") || n.hasclass("swiper-lazy-loading") || (r = r.add(n[0])), 0 !== r.length && r.each(function() { var e = t(this); e.addclass("swiper-lazy-loading"); var r = e.attr("data-background"), s = e.attr("data-src"), o = e.attr("data-srcset"); b.loadimage(e[0], s || r, o, !1, function() { if (r ? (e.css("background-image", 'url("' + r + '")'), e.removeattr("data-background")) : (o && (e.attr("srcset", o), e.removeattr("data-srcset")), s && (e.attr("src", s), e.removeattr("data-src"))), e.addclass("swiper-lazy-loaded").removeclass("swiper-lazy-loading"), n.find(".swiper-lazy-preloader, .preloader").remove(), b.params.loop && i) { var t = n.attr("data-swiper-slide-index"); if (n.hasclass(b.params.slideduplicateclass)) { var a = b.wrapper.children('[data-swiper-slide-index="' + t + '"]:not(.' + b.params.slideduplicateclass + ")"); b.lazy.loadimageinslide(a.index(), !1) } else { var l = b.wrapper.children("." + b.params.slideduplicateclass + '[data-swiper-slide-index="' + t + '"]'); b.lazy.loadimageinslide(l.index(), !1) } } b.emit("onlazyimageready", b, n[0], e[0]) }), b.emit("onlazyimageload", b, n[0], e[0]) }) } }, load: function() { var e; if (b.params.watchslidesvisibility) b.wrapper.children("." + b.params.slidevisibleclass).each(function() { b.lazy.loadimageinslide(t(this).index()) }); else if (b.params.slidesperview > 1) for (e = b.activeindex; e < b.activeindex + b.params.slidesperview; e++) b.slides[e] && b.lazy.loadimageinslide(e); else b.lazy.loadimageinslide(b.activeindex); if (b.params.lazyloadinginprevnext) if (b.params.slidesperview > 1 || b.params.lazyloadinginprevnextamount && b.params.lazyloadinginprevnextamount > 1) { var i = b.params.lazyloadinginprevnextamount, n = b.params.slidesperview, r = math.min(b.activeindex + n + math.max(i, n), b.slides.length), s = math.max(b.activeindex - math.max(n, i), 0); for (e = b.activeindex + b.params.slidesperview; r > e; e++) b.slides[e] && b.lazy.loadimageinslide(e); for (e = s; e < b.activeindex; e++) b.slides[e] && b.lazy.loadimageinslide(e) } else { var o = b.wrapper.children("." + b.params.slidenextclass); o.length > 0 && b.lazy.loadimageinslide(o.index()); var a = b.wrapper.children("." + b.params.slideprevclass); a.length > 0 && b.lazy.loadimageinslide(a.index()) } }, ontransitionstart: function() { b.params.lazyloading && (b.params.lazyloadingontransitionstart || !b.params.lazyloadingontransitionstart && !b.lazy.initialimageloaded) && b.lazy.load() }, ontransitionend: function() { b.params.lazyloading && !b.params.lazyloadingontransitionstart && b.lazy.load() } }, b.scrollbar = { istouched: !1, setdragposition: function(t) { var e = b.scrollbar, i = b.ishorizontal() ? "touchstart" === t.type || "touchmove" === t.type ? t.targettouches[0].pagex: t.pagex || t.clientx: "touchstart" === t.type || "touchmove" === t.type ? t.targettouches[0].pagey: t.pagey || t.clienty, n = i - e.track.offset()[b.ishorizontal() ? "left": "top"] - e.dragsize / 2, r = -b.mintranslate() * e.movedivider, s = -b.maxtranslate() * e.movedivider; r > n ? n = r: n > s && (n = s), n = -n / e.movedivider, b.updateprogress(n), b.setwrappertranslate(n, !0) }, dragstart: function(t) { var e = b.scrollbar; e.istouched = !0, t.preventdefault(), t.stoppropagation(), e.setdragposition(t), cleartimeout(e.dragtimeout), e.track.transition(0), b.params.scrollbarhide && e.track.css("opacity", 1), b.wrapper.transition(100), e.drag.transition(100), b.emit("onscrollbardragstart", b) }, dragmove: function(t) { var e = b.scrollbar; e.istouched && (t.preventdefault ? t.preventdefault() : t.returnvalue = !1, e.setdragposition(t), b.wrapper.transition(0), e.track.transition(0), e.drag.transition(0), b.emit("onscrollbardragmove", b)) }, dragend: function(t) { var e = b.scrollbar; e.istouched && (e.istouched = !1, b.params.scrollbarhide && (cleartimeout(e.dragtimeout), e.dragtimeout = settimeout(function() { e.track.css("opacity", 0), e.track.transition(400) }, 1e3)), b.emit("onscrollbardragend", b), b.params.scrollbarsnaponrelease && b.slidereset()) }, enabledraggable: function() { var e = b.scrollbar, i = b.support.touch ? e.track: document; t(e.track).on(b.touchevents.start, e.dragstart), t(i).on(b.touchevents.move, e.dragmove), t(i).on(b.touchevents.end, e.dragend) }, disabledraggable: function() { var e = b.scrollbar, i = b.support.touch ? e.track: document; t(e.track).off(b.touchevents.start, e.dragstart), t(i).off(b.touchevents.move, e.dragmove), t(i).off(b.touchevents.end, e.dragend) }, set: function() { if (b.params.scrollbar) { var e = b.scrollbar; e.track = t(b.params.scrollbar), b.params.uniquenavelements && "string" == typeof b.params.scrollbar && e.track.length > 1 && 1 === b.container.find(b.params.scrollbar).length && (e.track = b.container.find(b.params.scrollbar)), e.drag = e.track.find(".swiper-scrollbar-drag"), 0 === e.drag.length && (e.drag = t('
    '), e.track.append(e.drag)), e.drag[0].style.width = "", e.drag[0].style.height = "", e.tracksize = b.ishorizontal() ? e.track[0].offsetwidth: e.track[0].offsetheight, e.divider = b.size / b.virtualsize, e.movedivider = e.divider * (e.tracksize / b.size), e.dragsize = e.tracksize * e.divider, b.ishorizontal() ? e.drag[0].style.width = e.dragsize + "px": e.drag[0].style.height = e.dragsize + "px", e.divider >= 1 ? e.track[0].style.display = "none": e.track[0].style.display = "", b.params.scrollbarhide && (e.track[0].style.opacity = 0) } }, settranslate: function() { if (b.params.scrollbar) { var t, e = b.scrollbar, i = (b.translate, e.dragsize); t = (e.tracksize - e.dragsize) * b.progress, b.rtl && b.ishorizontal() ? (t = -t, t > 0 ? (i = e.dragsize - t, t = 0) : -t + e.dragsize > e.tracksize && (i = e.tracksize + t)) : 0 > t ? (i = e.dragsize + t, t = 0) : t + e.dragsize > e.tracksize && (i = e.tracksize - t), b.ishorizontal() ? (b.support.transforms3d ? e.drag.transform("translate3d(" + t + "px, 0, 0)") : e.drag.transform("translatex(" + t + "px)"), e.drag[0].style.width = i + "px") : (b.support.transforms3d ? e.drag.transform("translate3d(0px, " + t + "px, 0)") : e.drag.transform("translatey(" + t + "px)"), e.drag[0].style.height = i + "px"), b.params.scrollbarhide && (cleartimeout(e.timeout), e.track[0].style.opacity = 1, e.timeout = settimeout(function() { e.track[0].style.opacity = 0, e.track.transition(400) }, 1e3)) } }, settransition: function(t) { b.params.scrollbar && b.scrollbar.drag.transition(t) } }, b.controller = { linearspline: function(t, e) { this.x = t, this.y = e, this.lastindex = t.length - 1; var i, n; this.x.length, this.interpolate = function(t) { return t ? (n = r(this.x, t), i = n - 1, (t - this.x[i]) * (this.y[n] - this.y[i]) / (this.x[n] - this.x[i]) + this.y[i]) : 0 }; var r = function() { var t, e, i; return function(n, r) { for (e = -1, t = n.length; t - e > 1;) n[i = t + e >> 1] <= r ? e = i: t = i; return t } } () }, getinterpolatefunction: function(t) { b.controller.spline || (b.controller.spline = b.params.loop ? new b.controller.linearspline(b.slidesgrid, t.slidesgrid) : new b.controller.linearspline(b.snapgrid, t.snapgrid)) }, settranslate: function(t, i) { function n(e) { t = e.rtl && "horizontal" === e.params.direction ? -b.translate: b.translate, "slide" === b.params.controlby && (b.controller.getinterpolatefunction(e), s = -b.controller.spline.interpolate( - t)), s && "container" !== b.params.controlby || (r = (e.maxtranslate() - e.mintranslate()) / (b.maxtranslate() - b.mintranslate()), s = (t - b.mintranslate()) * r + e.mintranslate()), b.params.controlinverse && (s = e.maxtranslate() - s), e.updateprogress(s), e.setwrappertranslate(s, !1, b), e.updateactiveindex() } var r, s, o = b.params.control; if (b.isarray(o)) for (var a = 0; a < o.length; a++) o[a] !== i && o[a] instanceof e && n(o[a]); else o instanceof e && i !== o && n(o) }, settransition: function(t, i) { function n(e) { e.setwrappertransition(t, b), 0 !== t && (e.ontransitionstart(), e.wrapper.transitionend(function() { s && (e.params.loop && "slide" === b.params.controlby && e.fixloop(), e.ontransitionend()) })) } var r, s = b.params.control; if (b.isarray(s)) for (r = 0; r < s.length; r++) s[r] !== i && s[r] instanceof e && n(s[r]); else s instanceof e && i !== s && n(s) } }, b.hashnav = { init: function() { if (b.params.hashnav) { b.hashnav.initialized = !0; var t = document.location.hash.replace("#", ""); if (t) for (var e = 0, i = b.slides.length; i > e; e++) { var n = b.slides.eq(e), r = n.attr("data-hash"); if (r === t && !n.hasclass(b.params.slideduplicateclass)) { var s = n.index(); b.slideto(s, 0, b.params.runcallbacksoninit, !0) } } } }, sethash: function() { b.hashnav.initialized && b.params.hashnav && (document.location.hash = b.slides.eq(b.activeindex).attr("data-hash") || "") } }, b.disablekeyboardcontrol = function() { b.params.keyboardcontrol = !1, t(document).off("keydown", l) }, b.enablekeyboardcontrol = function() { b.params.keyboardcontrol = !0, t(document).on("keydown", l) }, b.mousewheel = { event: !1, lastscrolltime: (new window.date).gettime() }, b.params.mousewheelcontrol) { try { new window.wheelevent("wheel"), b.mousewheel.event = "wheel" } catch(t) { (window.wheelevent || b.container[0] && "wheel" in b.container[0]) && (b.mousewheel.event = "wheel") } ! b.mousewheel.event && window.wheelevent, b.mousewheel.event || void 0 === document.onmousewheel || (b.mousewheel.event = "mousewheel"), b.mousewheel.event || (b.mousewheel.event = "dommousescroll") } b.disablemousewheelcontrol = function() { return !! b.mousewheel.event && (b.container.off(b.mousewheel.event, c), !0) }, b.enablemousewheelcontrol = function() { return !! b.mousewheel.event && (b.container.on(b.mousewheel.event, c), !0) }, b.parallax = { settranslate: function() { b.container.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]").each(function() { h(this, b.progress) }), b.slides.each(function() { var e = t(this); e.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]").each(function() { h(this, math.min(math.max(e[0].progress, -1), 1)) }) }) }, settransition: function(e) { void 0 === e && (e = b.params.speed), b.container.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]").each(function() { var i = t(this), n = parseint(i.attr("data-swiper-parallax-duration"), 10) || e; 0 === e && (n = 0), i.transition(n) }) } }, b._plugins = []; for (var b in b.plugins) { var l = b.plugins[b](b, b.params[b]); l && b._plugins.push(l) } return b.callplugins = function(t) { for (var e = 0; e < b._plugins.length; e++) t in b._plugins[e] && b._plugins[e][t](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]) }, b.emittereventlisteners = {}, b.emit = function(t) { b.params[t] && b.params[t](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]); var e; if (b.emittereventlisteners[t]) for (e = 0; e < b.emittereventlisteners[t].length; e++) b.emittereventlisteners[t][e](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]); b.callplugins && b.callplugins(t, arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]) }, b.on = function(t, e) { return t = p(t), b.emittereventlisteners[t] || (b.emittereventlisteners[t] = []), b.emittereventlisteners[t].push(e), b }, b.off = function(t, e) { var i; if (t = p(t), void 0 === e) return b.emittereventlisteners[t] = [], b; if (b.emittereventlisteners[t] && 0 !== b.emittereventlisteners[t].length) { for (i = 0; i < b.emittereventlisteners[t].length; i++) b.emittereventlisteners[t][i] === e && b.emittereventlisteners[t].splice(i, 1); return b } }, b.once = function(t, e) { t = p(t); var i = function() { e(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]), b.off(t, i) }; return b.on(t, i), b }, b.a11y = { makefocusable: function(t) { return t.attr("tabindex", "0"), t }, addrole: function(t, e) { return t.attr("role", e), t }, addlabel: function(t, e) { return t.attr("aria-label", e), t }, disable: function(t) { return t.attr("aria-disabled", !0), t }, enable: function(t) { return t.attr("aria-disabled", !1), t }, onenterkey: function(e) { 13 === e.keycode && (t(e.target).is(b.params.nextbutton) ? (b.onclicknext(e), b.isend ? b.a11y.notify(b.params.lastslidemessage) : b.a11y.notify(b.params.nextslidemessage)) : t(e.target).is(b.params.prevbutton) && (b.onclickprev(e), b.isbeginning ? b.a11y.notify(b.params.firstslidemessage) : b.a11y.notify(b.params.prevslidemessage)), t(e.target).is("." + b.params.bulletclass) && t(e.target)[0].click()) }, liveregion: t(''), notify: function(t) { var e = b.a11y.liveregion; 0 !== e.length && (e.html(""), e.html(t)) }, init: function() { b.params.nextbutton && b.nextbutton && b.nextbutton.length > 0 && (b.a11y.makefocusable(b.nextbutton), b.a11y.addrole(b.nextbutton, "button"), b.a11y.addlabel(b.nextbutton, b.params.nextslidemessage)), b.params.prevbutton && b.prevbutton && b.prevbutton.length > 0 && (b.a11y.makefocusable(b.prevbutton), b.a11y.addrole(b.prevbutton, "button"), b.a11y.addlabel(b.prevbutton, b.params.prevslidemessage)), t(b.container).append(b.a11y.liveregion) }, initpagination: function() { b.params.pagination && b.params.paginationclickable && b.bullets && b.bullets.length && b.bullets.each(function() { var e = t(this); b.a11y.makefocusable(e), b.a11y.addrole(e, "button"), b.a11y.addlabel(e, b.params.paginationbulletmessage.replace(/{{index}}/, e.index() + 1)) }) }, destroy: function() { b.a11y.liveregion && b.a11y.liveregion.length > 0 && b.a11y.liveregion.remove() } }, b.init = function() { b.params.loop && b.createloop(), b.updatecontainersize(), b.updateslidessize(), b.updatepagination(), b.params.scrollbar && b.scrollbar && (b.scrollbar.set(), b.params.scrollbardraggable && b.scrollbar.enabledraggable()), "slide" !== b.params.effect && b.effects[b.params.effect] && (b.params.loop || b.updateprogress(), b.effects[b.params.effect].settranslate()), b.params.loop ? b.slideto(b.params.initialslide + b.loopedslides, 0, b.params.runcallbacksoninit) : (b.slideto(b.params.initialslide, 0, b.params.runcallbacksoninit), 0 === b.params.initialslide && (b.parallax && b.params.parallax && b.parallax.settranslate(), b.lazy && b.params.lazyloading && (b.lazy.load(), b.lazy.initialimageloaded = !0))), b.attachevents(), b.params.observer && b.support.observer && b.initobservers(), b.params.preloadimages && !b.params.lazyloading && b.preloadimages(), b.params.autoplay && b.startautoplay(), b.params.keyboardcontrol && b.enablekeyboardcontrol && b.enablekeyboardcontrol(), b.params.mousewheelcontrol && b.enablemousewheelcontrol && b.enablemousewheelcontrol(), b.params.hashnav && b.hashnav && b.hashnav.init(), b.params.a11y && b.a11y && b.a11y.init(), b.emit("oninit", b) }, b.cleanupstyles = function() { b.container.removeclass(b.classnames.join(" ")).removeattr("style"), b.wrapper.removeattr("style"), b.slides && b.slides.length && b.slides.removeclass([b.params.slidevisibleclass, b.params.slideactiveclass, b.params.slidenextclass, b.params.slideprevclass].join(" ")).removeattr("style").removeattr("data-swiper-column").removeattr("data-swiper-row"), b.paginationcontainer && b.paginationcontainer.length && b.paginationcontainer.removeclass(b.params.paginationhiddenclass), b.bullets && b.bullets.length && b.bullets.removeclass(b.params.bulletactiveclass), b.params.prevbutton && t(b.params.prevbutton).removeclass(b.params.buttondisabledclass), b.params.nextbutton && t(b.params.nextbutton).removeclass(b.params.buttondisabledclass), b.params.scrollbar && b.scrollbar && (b.scrollbar.track && b.scrollbar.track.length && b.scrollbar.track.removeattr("style"), b.scrollbar.drag && b.scrollbar.drag.length && b.scrollbar.drag.removeattr("style")) }, b.destroy = function(t, e) { b.detachevents(), b.stopautoplay(), b.params.scrollbar && b.scrollbar && b.params.scrollbardraggable && b.scrollbar.disabledraggable(), b.params.loop && b.destroyloop(), e && b.cleanupstyles(), b.disconnectobservers(), b.params.keyboardcontrol && b.disablekeyboardcontrol && b.disablekeyboardcontrol(), b.params.mousewheelcontrol && b.disablemousewheelcontrol && b.disablemousewheelcontrol(), b.params.a11y && b.a11y && b.a11y.destroy(), b.emit("ondestroy"), !1 !== t && (b = null) }, b.init(), b } }; e.prototype = { issafari: function() { var t = navigator.useragent.tolowercase(); return t.indexof("safari") >= 0 && t.indexof("chrome") < 0 && t.indexof("android") < 0 } (), isuiwebview: /(iphone|ipod|ipad).*applewebkit(?!.*safari)/i.test(navigator.useragent), isarray: function(t) { return "[object array]" === object.prototype.tostring.apply(t) }, browser: { ie: window.navigator.pointerenabled || window.navigator.mspointerenabled, ietouch: window.navigator.mspointerenabled && window.navigator.msmaxtouchpoints > 1 || window.navigator.pointerenabled && window.navigator.maxtouchpoints > 1 }, device: function() { var t = navigator.useragent, e = t.match(/(android);?[\s\/]+([\d.]+)?/), i = t.match(/(ipad).*os\s([\d_]+)/), n = t.match(/(ipod)(.*os\s([\d_]+))?/), r = !i && t.match(/(iphone\sos)\s([\d_]+)/); return { ios: i || r || n, android: e } } (), support: { touch: window.modernizr && !0 === modernizr.touch || function() { return !! ("ontouchstart" in window || window.documenttouch && document instanceof documenttouch) } (), transforms3d: window.modernizr && !0 === modernizr.csstransforms3d || function() { var t = document.createelement("div").style; return "webkitperspective" in t || "mozperspective" in t || "operspective" in t || "msperspective" in t || "perspective" in t } (), flexbox: function() { for (var t = document.createelement("div").style, e = "alignitems webkitalignitems webkitboxalign msflexalign mozboxalign webkitflexdirection msflexdirection mozboxdirection mozboxorient webkitboxdirection webkitboxorient".split(" "), i = 0; i < e.length; i++) if (e[i] in t) return ! 0 } (), observer: function() { return "mutationobserver" in window || "webkitmutationobserver" in window } () }, plugins: {} }; for (var i = ["jquery", "zepto", "dom7"], n = 0; n < i.length; n++) window[i[n]] && function(t) { t.fn.swiper = function(i) { var n; return t(this).each(function() { var t = new e(this, i); n || (n = t) }), n } } (window[i[n]]); var r; r = "undefined" == typeof dom7 ? window.dom7 || window.zepto || window.jquery: dom7, r && ("transitionend" in r.fn || (r.fn.transitionend = function(t) { function e(s) { if (s.target === this) for (t.call(this, s), i = 0; i < n.length; i++) r.off(n[i], e) } var i, n = ["webkittransitionend", "transitionend", "otransitionend", "mstransitionend", "mstransitionend"], r = this; if (t) for (i = 0; i < n.length; i++) r.on(n[i], e); return this }), "transform" in r.fn || (r.fn.transform = function(t) { for (var e = 0; e < this.length; e++) { var i = this[e].style; i.webkittransform = i.mstransform = i.mstransform = i.moztransform = i.otransform = i.transform = t } return this }), "transition" in r.fn || (r.fn.transition = function(t) { "string" != typeof t && (t += "ms"); for (var e = 0; e < this.length; e++) { var i = this[e].style; i.webkittransitionduration = i.mstransitionduration = i.mstransitionduration = i.moztransitionduration = i.otransitionduration = i.transitionduration = t } return this })), window.swiper = e } (), "undefined" != typeof module ? module.exports = window.swiper: "function" == typeof define && define.amd && define([], function() { "use strict"; return window.swiper }), function(t, e) { "object" == typeof exports && "undefined" != typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : t.videojs = e() } (this, function() { "use strict"; function t(t, e) { return e = { exports: {} }, t(e, e.exports), e.exports } function e(t, e) { re(t).foreach(function(i) { return e(t[i], i) }) } function i(t, e) { var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0; return re(t).reduce(function(i, n) { return e(i, t[n], n) }, i) } function n(t) { for (var i = arguments.length, n = array(i > 1 ? i - 1 : 0), r = 1; r < i; r++) n[r - 1] = arguments[r]; return object.assign ? object.assign.apply(object, [t].concat(n)) : (n.foreach(function(i) { i && e(i, function(e, i) { t[i] = e }) }), t) } function r(t) { return !! t && "object" === (void 0 === t ? "undefined": de(t)) } function s(t) { return r(t) && "[object object]" === le.call(t) && t.constructor === object } function o(t) { return t.replace(/\n\r?\s*/g, "") } function a(t, e) { if (!t || !e) return ""; if ("function" == typeof re.getcomputedstyle) { var i = re.getcomputedstyle(t); return i ? i[e] : "" } return t.currentstyle[e] || "" } function l(t) { return "string" == typeof t && /\s/.test(t) } function c(t) { if (/\s/.test(t)) throw new error("class has illegal whitespace characters") } function h(t) { return new regexp("(^|\\s)" + t + "($|\\s)") } function p() { return ce === re.document && void 0 !== ce.createelement } function u(t) { return r(t) && 1 === t.nodetype } function d(t) { return function(e, i) { if (!l(e)) return ce[t](null); l(i) && (i = ce.queryselector(i)); var n = u(i) ? i: ce; return n[t] && n[t](e) } } function f() { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "div", e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, n = arguments[3], r = ce.createelement(t); return object.getownpropertynames(e).foreach(function(t) { var i = e[t]; - 1 !== t.indexof("aria-") || "role" === t || "type" === t ? (ve.warn(we(ge, t, i)), r.setattribute(t, i)) : "textcontent" === t ? m(r, i) : r[t] = i }), object.getownpropertynames(i).foreach(function(t) { r.setattribute(t, i[t]) }), n && o(r, n), r } function m(t, e) { return void 0 === t.textcontent ? t.innertext = e: t.textcontent = e, t } function v(t, e) { e.firstchild ? e.insertbefore(t, e.firstchild) : e.appendchild(t) } function g(t, e) { return c(e), t.classlist ? t.classlist.contains(e) : h(e).test(t.classname) } function y(t, e) { return t.classlist ? t.classlist.add(e) : g(t, e) || (t.classname = (t.classname + " " + e).trim()), t } function b(t, e) { return t.classlist ? t.classlist.remove(e) : (c(e), t.classname = t.classname.split(/\s+/).filter(function(t) { return t !== e }).join(" ")), t } function t(t, e, i) { var n = g(t, e); if ("function" == typeof i && (i = i(t, e)), "boolean" != typeof i && (i = !n), i !== n) return i ? y(t, e) : b(t, e), t } function w(t, e) { object.getownpropertynames(e).foreach(function(i) { var n = e[i]; null === n || void 0 === n || !1 === n ? t.removeattribute(i) : t.setattribute(i, !0 === n ? "": n) }) } function _(t) { var e = {}; if (t && t.attributes && t.attributes.length > 0) for (var i = t.attributes, n = i.length - 1; n >= 0; n--) { var r = i[n].name, s = i[n].value; "boolean" != typeof t[r] && -1 === ",autoplay,controls,loop,muted,default,".indexof("," + r + ",") || (s = null !== s), e[r] = s } return e } function c(t, e) { return t.getattribute(e) } function s(t, e, i) { t.setattribute(e, i) } function x(t, e) { t.removeattribute(e) } function k() { ce.body.focus(), ce.onselectstart = function() { return ! 1 } } function e() { ce.onselectstart = function() { return ! 0 } } function p(t) { if (t && t.getboundingclientrect && t.parentnode) { var e = t.getboundingclientrect(), i = {}; return ["bottom", "height", "left", "right", "top", "width"].foreach(function(t) { void 0 !== e[t] && (i[t] = e[t]) }), i.height || (i.height = parsefloat(a(t, "height"))), i.width || (i.width = parsefloat(a(t, "width"))), i } } function m(t) { var e = void 0; if (t.getboundingclientrect && t.parentnode && (e = t.getboundingclientrect()), !e) return { left: 0, top: 0 }; var i = ce.documentelement, n = ce.body, r = i.clientleft || n.clientleft || 0, s = re.pagexoffset || n.scrollleft, o = e.left + s - r, a = i.clienttop || n.clienttop || 0, l = re.pageyoffset || n.scrolltop, c = e.top + l - a; return { left: math.round(o), top: math.round(c) } } function i(t, e) { var i = {}, n = m(t), r = t.offsetwidth, s = t.offsetheight, o = n.top, a = n.left, l = e.pagey, c = e.pagex; return e.changedtouches && (c = e.changedtouches[0].pagex, l = e.changedtouches[0].pagey), i.y = math.max(0, math.min(1, (o - l + s) / s)), i.x = math.max(0, math.min(1, (c - a) / r)), i } function a(t) { return r(t) && 3 === t.nodetype } function j(t) { for (; t.firstchild;) t.removechild(t.firstchild); return t } function d(t) { return "function" == typeof t && (t = t()), (array.isarray(t) ? t: [t]).map(function(t) { return "function" == typeof t && (t = t()), u(t) || a(t) ? t: "string" == typeof t && /\s/.test(t) ? ce.createtextnode(t) : void 0 }).filter(function(t) { return t }) } function o(t, e) { return d(e).foreach(function(e) { return t.appendchild(e) }), t } function z(t, e) { return o(j(t), e) } function n() { return qe++ } function b(t) { var e = t[ze]; return e || (e = t[ze] = n()), $e[e] || ($e[e] = {}), $e[e] } function l(t) { var e = t[ze]; return !! e && !!object.getownpropertynames($e[e]).length } function r(t) { var e = t[ze]; if (e) { delete $e[e]; try { delete t[ze] } catch(e) { t.removeattribute ? t.removeattribute(ze) : t[ze] = null } } } function h(t, e) { var i = b(t); 0 === i.handlers[e].length && (delete i.handlers[e], t.removeeventlistener ? t.removeeventlistener(e, i.dispatcher, !1) : t.detachevent && t.detachevent("on" + e, i.dispatcher)), object.getownpropertynames(i.handlers).length <= 0 && (delete i.handlers, delete i.dispatcher, delete i.disabled), 0 === object.getownpropertynames(i).length && r(t) } function f(t, e, i, n) { i.foreach(function(i) { t(e, i, n) }) } function x(t) { function e() { return ! 0 } function i() { return ! 1 } if (!t || !t.ispropagationstopped) { var n = t || re.event; t = {}; for (var r in n)"layerx" !== r && "layery" !== r && "keylocation" !== r && "webkitmovementx" !== r && "webkitmovementy" !== r && ("returnvalue" === r && n.preventdefault || (t[r] = n[r])); if (t.target || (t.target = t.srcelement || ce), t.relatedtarget || (t.relatedtarget = t.fromelement === t.target ? t.toelement: t.fromelement), t.preventdefault = function() { n.preventdefault && n.preventdefault(), t.returnvalue = !1, n.returnvalue = !1, t.defaultprevented = !0 }, t.defaultprevented = !1, t.stoppropagation = function() { n.stoppropagation && n.stoppropagation(), t.cancelbubble = !0, n.cancelbubble = !0, t.ispropagationstopped = e }, t.ispropagationstopped = i, t.stopimmediatepropagation = function() { n.stopimmediatepropagation && n.stopimmediatepropagation(), t.isimmediatepropagationstopped = e, t.stoppropagation() }, t.isimmediatepropagationstopped = i, null !== t.clientx && void 0 !== t.clientx) { var s = ce.documentelement, o = ce.body; t.pagex = t.clientx + (s && s.scrollleft || o && o.scrollleft || 0) - (s && s.clientleft || o && o.clientleft || 0), t.pagey = t.clienty + (s && s.scrolltop || o && o.scrolltop || 0) - (s && s.clienttop || o && o.clienttop || 0) } t.which = t.charcode || t.keycode, null !== t.button && void 0 !== t.button && (t.button = 1 & t.button ? 0 : 4 & t.button ? 1 : 2 & t.button ? 2 : 0) } return t } function y(t, e, i) { if (array.isarray(e)) return f(y, t, e, i); var n = b(t); if (n.handlers || (n.handlers = {}), n.handlers[e] || (n.handlers[e] = []), i.guid || (i.guid = n()), n.handlers[e].push(i), n.dispatcher || (n.disabled = !1, n.dispatcher = function(e, i) { if (!n.disabled) { e = x(e); var r = n.handlers[e.type]; if (r) for (var s = r.slice(0), o = 0, a = s.length; o < a && !e.isimmediatepropagationstopped(); o++) try { s[o].call(t, e, i) } catch(t) { ve.error(t) } } }), 1 === n.handlers[e].length) if (t.addeventlistener) { var r = !1; je && ti.indexof(e) > -1 && (r = { passive: !0 }), t.addeventlistener(e, n.dispatcher, r) } else t.attachevent && t.attachevent("on" + e, n.dispatcher) } function v(t, e, i) { if (l(t)) { var n = b(t); if (n.handlers) { if (array.isarray(e)) return f(v, t, e, i); var r = function(e) { n.handlers[e] = [], h(t, e) }; if (e) { var s = n.handlers[e]; if (s) { if (!i) return void r(e); if (i.guid) for (var o = 0; o < s.length; o++) s[o].guid === i.guid && s.splice(o--, 1); h(t, e) } } else for (var a in n.handlers) r(a) } } } function w(t, e, i) { var n = l(t) ? b(t) : {}, r = t.parentnode || t.ownerdocument; if ("string" == typeof e && (e = { type: e, target: t }), e = x(e), n.dispatcher && n.dispatcher.call(t, e, i), r && !e.ispropagationstopped() && !0 === e.bubbles) w.call(null, r, e, i); else if (!r && !e.defaultprevented) { var s = b(e.target); e.target[e.type] && (s.disabled = !0, "function" == typeof e.target[e.type] && e.target[e.type](), s.disabled = !1) } return ! e.defaultprevented } function g(t, e, i) { if (array.isarray(e)) return f(g, t, e, i); var n = function n() { v(t, e, n), i.apply(this, arguments) }; n.guid = i.guid = i.guid || n(), y(t, e, n) } function q(t, e) { e && (ni = e), re.settimeout(ri, t) } function u(t) { var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, i = e.eventbuskey; if (i) { if (!t[i].nodename) throw new error('the eventbuskey "' + i + '" does not refer to an element.'); t.eventbusel_ = t[i] } else t.eventbusel_ = f("span", { classname: "vjs-event-bus" }); return n(t, gi), t.on("dispose", function() { return t.off() }), t } function k(t, e) { return n(t, yi), t.state = n({}, t.state, e), "function" == typeof t.handlestatechanged && hi(t) && t.on("statechanged", t.handlestatechanged), t } function q(t) { return "string" != typeof t ? t: t.charat(0).touppercase() + t.slice(1) } function $(t, e) { return q(t) === q(e) } function z() { for (var t = {}, i = arguments.length, n = array(i), r = 0; r < i; r++) n[r] = arguments[r]; return n.foreach(function(i) { i && e(i, function(e, i) { if (!s(e)) return void(t[i] = e); s(t[i]) || (t[i] = {}), t[i] = z(t[i], e) }) }), t } function j(t, e, i) { if ("number" != typeof e || e < 0 || e > i) throw new error("failed to execute '" + t + "' on 'timeranges': the index provided (" + e + ") is non-numeric or out of bounds (0-" + i + ").") } function tt(t, e, i, n) { return j(t, n, i.length - 1), i[n][e] } function et(t) { return void 0 === t || 0 === t.length ? { length: 0, start: function() { throw new error("this timeranges object is empty") }, end: function() { throw new error("this timeranges object is empty") } }: { length: t.length, start: tt.bind(null, "start", 0, t), end: tt.bind(null, "end", 1, t) } } function it(t, e) { return array.isarray(t) ? et(t) : void 0 === t || void 0 === e ? et() : et([[t, e]]) } function nt(t, e) { var i = 0, n = void 0, r = void 0; if (!e) return 0; t && t.length || (t = it(0, 0)); for (var s = 0; s < t.length; s++) n = t.start(s), r = t.end(s), r > e && (r = e), i += r - n; return i / e } function rt(t) { if (t instanceof rt) return t; "number" == typeof t ? this.code = t: "string" == typeof t ? this.message = t: r(t) && ("number" == typeof t.code && (this.code = t.code), n(this, t)), this.message || (this.message = rt.defaultmessages[this.code] || "") } function st(t, e) { var i, n = null; try { i = json.parse(t, e) } catch(t) { n = t } return [n, i] } function ot(t) { var e = tn.call(t); return "[object function]" === e || "function" == typeof t && "[object regexp]" !== e || "undefined" != typeof window && (t === window.settimeout || t === window.alert || t === window.confirm || t === window.prompt) } function at(t, e, i) { if (!ji(e)) throw new typeerror("iterator must be a function"); arguments.length < 3 && (i = this), "[object array]" === rn.call(t) ? lt(t, e, i) : "string" == typeof t ? ct(t, e, i) : ht(t, e, i) } function lt(t, e, i) { for (var n = 0, r = t.length; n < r; n++) sn.call(t, n) && e.call(i, t[n], n, t) } function ct(t, e, i) { for (var n = 0, r = t.length; n < r; n++) e.call(i, t.charat(n), n, t) } function ht(t, e, i) { for (var n in t) sn.call(t, n) && e.call(i, t[n], n, t) } function pt() { for (var t = {}, e = 0; e < arguments.length; e++) { var i = arguments[e]; for (var n in i) cn.call(i, n) && (t[n] = i[n]) } return t } function ut(t) { for (var e in t) if (t.hasownproperty(e)) return ! 1; return ! 0 } function dt(t, e, i) { var n = t; return ji(e) ? (i = e, "string" == typeof t && (n = { uri: t })) : n = ln(e, { uri: t }), n.callback = i, n } function ft(t, e, i) { return e = dt(t, e, i), mt(e) } function mt(t) { function e() { 4 === a.readystate && settimeout(r, 0) } function i() { var t = void 0; if (t = a.response ? a.response: a.responsetext || vt(a), v) try { t = json.parse(t) } catch(t) {} return t } function n(t) { return cleartimeout(h), t instanceof error || (t = new error("" + (t || "unknown xmlhttprequest error"))), t.statuscode = 0, o(t, g) } function r() { if (!c) { var e; cleartimeout(h), e = t.usexdr && void 0 === a.status ? 200 : 1223 === a.status ? 204 : a.status; var n = g, r = null; return 0 !== e ? (n = { body: i(), statuscode: e, method: u, headers: {}, url: p, rawrequest: a }, a.getallresponseheaders && (n.headers = an(a.getallresponseheaders()))) : r = new error("internal xmlhttprequest error"), o(r, n, n.body) } } if (void 0 === t.callback) throw new error("callback argument missing"); var s = !1, o = function(e, i, n) { s || (s = !0, t.callback(e, i, n)) }, a = t.xhr || null; a || (a = t.cors || t.usexdr ? new ft.xdomainrequest: new ft.xmlhttprequest); var l, c, h, p = a.url = t.uri || t.url, u = a.method = t.method || "get", d = t.body || t.data, f = a.headers = t.headers || {}, m = !!t.sync, v = !1, g = { body: void 0, headers: {}, statuscode: 0, method: u, url: p, rawrequest: a }; if ("json" in t && !1 !== t.json && (v = !0, f.accept || f.accept || (f.accept = "application/json"), "get" !== u && "head" !== u && (f["content-type"] || f["content-type"] || (f["content-type"] = "application/json"), d = json.stringify(!0 === t.json ? d: t.json))), a.onreadystatechange = e, a.onload = r, a.onerror = n, a.onprogress = function() {}, a.onabort = function() { c = !0 }, a.ontimeout = n, a.open(u, p, !m, t.username, t.password), m || (a.withcredentials = !!t.withcredentials), !m && t.timeout > 0 && (h = settimeout(function() { if (!c) { c = !0, a.abort("timeout"); var t = new error("xmlhttprequest timeout"); t.code = "etimedout", n(t) } }, t.timeout)), a.setrequestheader) for (l in f) f.hasownproperty(l) && a.setrequestheader(l, f[l]); else if (t.headers && !ut(t.headers)) throw new error("headers cannot be set on an xdomainrequest object"); return "responsetype" in t && (a.responsetype = t.responsetype), "beforesend" in t && "function" == typeof t.beforesend && t.beforesend(a), a.send(d || null), a } function vt(t) { if ("document" === t.responsetype) return t.responsexml; var e = t.responsexml && "parsererror" === t.responsexml.documentelement.nodename; return "" !== t.responsetype || e ? null: t.responsexml } function gt() {} function yt(t, e) { this.name = "parsingerror", this.code = t.code, this.message = e || t.message } function bt(t) { function e(t, e, i, n) { return 3600 * (0 | t) + 60 * (0 | e) + (0 | i) + (0 | n) / 1e3 } var i = t.match(/^(\d+):(\d{2})(:\d{2})?\.(\d{3})/); return i ? i[3] ? e(i[1], i[2], i[3].replace(":", ""), i[4]) : i[1] > 59 ? e(i[1], i[2], 0, i[4]) : e(0, i[1], i[2], i[4]) : null } function tt() { this.values = _n(null) } function wt(t, e, i, n) { var r = n ? t.split(n) : [t]; for (var s in r) if ("string" == typeof r[s]) { var o = r[s].split(i); if (2 === o.length) { var a = o[0], l = o[1]; e(a, l) } } } function _t(t, e, i) { function n() { var e = bt(t); if (null === e) throw new yt(yt.errors.badtimestamp, "malformed timestamp: " + s); return t = t.replace(/^[^\sa-za-z-]+/, ""), e } function r() { t = t.replace(/^\s+/, "") } var s = t; if (r(), e.starttime = n(), r(), "--\x3e" !== t.substr(0, 3)) throw new yt(yt.errors.badtimestamp, "malformed time stamp (time stamps must be separated by '--\x3e'): " + s); t = t.substr(3), r(), e.endtime = n(), r(), function(t, e) { var n = new tt; wt(t, function(t, e) { switch (t) { case "region": for (var r = i.length - 1; r >= 0; r--) if (i[r].id === e) { n.set(t, i[r].region); break } break; case "vertical": n.alt(t, e, ["rl", "lr"]); break; case "line": var s = e.split(","), o = s[0]; n.integer(t, o), n.percent(t, o) && n.set("snaptolines", !1), n.alt(t, o, ["auto"]), 2 === s.length && n.alt("linealign", s[1], ["start", "middle", "end"]); break; case "position": s = e.split(","), n.percent(t, s[0]), 2 === s.length && n.alt("positionalign", s[1], ["start", "middle", "end"]); break; case "size": n.percent(t, e); break; case "align": n.alt(t, e, ["start", "middle", "end", "left", "right"]) } }, /:/, /\s/), e.region = n.get("region", null), e.vertical = n.get("vertical", ""), e.line = n.get("line", "auto"), e.linealign = n.get("linealign", "start"), e.snaptolines = n.get("snaptolines", !0), e.size = n.get("size", 100), e.align = n.get("align", "middle"), e.position = n.get("position", { start: 0, left: 0, middle: 50, end: 100, right: 100 }, e.align), e.positionalign = n.get("positionalign", { start: "start", left: "start", middle: "middle", end: "end", right: "end" }, e.align) } (t, e) } function ct(t, e) { function i(t) { return cn[t] } for (var n, r = t.document.createelement("div"), s = r, o = []; null !== (n = function() { if (!e) return null; var t = e.match(/^([^<]*)(<[^>]+>?)?/); return function(t) { return e = e.substr(t.length), t } (t[1] ? t[1] : t[2]) } ());) if ("<" !== n[0]) s.appendchild(t.document.createtextnode(function(t) { for (; c = t.match(/&(amp|lt|gt|lrm|rlm|nbsp);/);) t = t.replace(c[0], i); return t } (n))); else { if ("/" === n[1]) { o.length && o[o.length - 1] === n.substr(2).replace(">", "") && (o.pop(), s = s.parentnode); continue } var a, l = bt(n.substr(1, n.length - 2)); if (l) { a = t.document.createprocessinginstruction("timestamp", l), s.appendchild(a); continue } var c = n.match(/^<([^.\s\/0-9>]+)(\.[^\s\\>]+)?([^>\\]+)?(\\?)>?$/); if (!c) continue; if (! (a = function(e, i) { var n = sn[e]; if (!n) return null; var r = t.document.createelement(n); r.localname = n; var s = xn[e]; return s && i && (r[s] = i.trim()), r } (c[1], c[3]))) continue; if (! function(t, e) { return ! kn[e.localname] || kn[e.localname] === t.localname } (s, a)) continue; c[2] && (a.classname = c[2].substr(1).replace(".", " ")), o.push(c[1]), s.appendchild(a), s = a } return r } function st(t) { for (var e = 0; e < en.length; e++) { var i = en[e]; if (t >= i[0] && t <= i[1]) return ! 0 } return ! 1 } function xt(t) { function e(t, e) { for (var i = e.childnodes.length - 1; i >= 0; i--) t.push(e.childnodes[i]) } function i(t) { if (!t || !t.length) return null; var n = t.pop(), r = n.textcontent || n.innertext; if (r) { var s = r.match(/^.*(\n|\r)/); return s ? (t.length = 0, s[0]) : r } return "ruby" === n.tagname ? i(t) : n.childnodes ? (e(t, n), i(t)) : void 0 } var n, r = [], s = ""; if (!t || !t.childnodes) return "ltr"; for (e(r, t); s = i(r);) for (var o = 0; o < s.length; o++) if (n = s.charcodeat(o), st(n)) return "rtl"; return "ltr" } function kt(t) { if ("number" == typeof t.line && (t.snaptolines || t.line >= 0 && t.line <= 100)) return t.line; if (!t.track || !t.track.texttracklist || !t.track.texttracklist.mediaelement) return - 1; for (var e = t.track, i = e.texttracklist, n = 0, r = 0; r < i.length && i[r] !== e; r++)"showing" === i[r].mode && n++; return - 1 * ++n } function et() {} function pt(t, e, i) { var n = /msie\s8\.0/.test(navigator.useragent), r = "rgba(255, 255, 255, 1)", s = "rgba(0, 0, 0, 0.8)"; n && (r = "rgb(255, 255, 255)", s = "rgb(0, 0, 0)"), et.call(this), this.cue = e, this.cuediv = ct(t, e.text); var o = { color: r, backgroundcolor: s, position: "relative", left: 0, right: 0, top: 0, bottom: 0, display: "inline" }; n || (o.writingmode = "" === e.vertical ? "horizontal-tb": "lr" === e.vertical ? "vertical-lr": "vertical-rl", o.unicodebidi = "plaintext"), this.applystyles(o, this.cuediv), this.div = t.document.createelement("div"), o = { textalign: "middle" === e.align ? "center": e.align, font: i.font, whitespace: "pre-line", position: "absolute" }, n || (o.direction = xt(this.cuediv), o.writingmode = "" === e.vertical ? "horizontal-tb": "lr" === e.vertical ? "vertical-lr": "vertical-rl".stylesunicodebidi = "plaintext"), this.applystyles(o), this.div.appendchild(this.cuediv); var a = 0; switch (e.positionalign) { case "start": a = e.position; break; case "middle": a = e.position - e.size / 2; break; case "end": a = e.position - e.size } "" === e.vertical ? this.applystyles({ left: this.formatstyle(a, "%"), width: this.formatstyle(e.size, "%") }) : this.applystyles({ top: this.formatstyle(a, "%"), height: this.formatstyle(e.size, "%") }), this.move = function(t) { this.applystyles({ top: this.formatstyle(t.top, "px"), bottom: this.formatstyle(t.bottom, "px"), left: this.formatstyle(t.left, "px"), right: this.formatstyle(t.right, "px"), height: this.formatstyle(t.height, "px"), width: this.formatstyle(t.width, "px") }) } } function mt(t) { var e, i, n, r, s = /msie\s8\.0/.test(navigator.useragent); if (t.div) { i = t.div.offsetheight, n = t.div.offsetwidth, r = t.div.offsettop; var o = (o = t.div.childnodes) && (o = o[0]) && o.getclientrects && o.getclientrects(); t = t.div.getboundingclientrect(), e = o ? math.max(o[0] && o[0].height || 0, t.height / o.length) : 0 } this.left = t.left, this.right = t.right, this.top = t.top || r, this.height = t.height || i, this.bottom = t.bottom || r + (t.height || i), this.width = t.width || n, this.lineheight = void 0 !== e ? e: t.lineheight, s && !this.lineheight && (this.lineheight = 13) } function it(t, e, i, n) { var r = new mt(e), s = e.cue, o = kt(s), a = []; if (s.snaptolines) { var l; switch (s.vertical) { case "": a = ["+y", "-y"], l = "height"; break; case "rl": a = ["+x", "-x"], l = "width"; break; case "lr": a = ["-x", "+x"], l = "width" } var c = r.lineheight, h = c * math.round(o), p = i[l] + c, u = a[0]; math.abs(h) > p && (h = h < 0 ? -1 : 1, h *= math.ceil(p / c) * c), o < 0 && (h += "" === s.vertical ? i.height: i.width, a = a.reverse()), r.move(u, h) } else { var d = r.lineheight / i.height * 100; switch (s.linealign) { case "middle": o -= d / 2; break; case "end": o -= d } switch (s.vertical) { case "": e.applystyles({ top: e.formatstyle(o, "%") }); break; case "rl": e.applystyles({ left: e.formatstyle(o, "%") }); break; case "lr": e.applystyles({ right: e.formatstyle(o, "%") }) } a = ["+y", "-x", "+x", "-y"], r = new mt(e) } var f = function(t, e) { for (var r, s = new mt(t), o = 1, a = 0; a < e.length; a++) { for (; t.overlapsoppositeaxis(i, e[a]) || t.within(i) && t.overlapsany(n);) t.move(e[a]); if (t.within(i)) return t; var l = t.intersectpercentage(i); o > l && (r = new mt(t), o = l), t = new mt(s) } return r || s } (r, a); e.move(f.tocsscompatvalues(i)) } function at() {} function jt(t) { return "string" == typeof t && !!in[t.tolowercase()] && t.tolowercase() } function dt(t) { return "string" == typeof t && !!an[t.tolowercase()] && t.tolowercase() } function ot(t) { for (var e = 1; e < arguments.length; e++) { var i = arguments[e]; for (var n in i) t[n] = i[n] } return t } function zt(t, e, i) { var n = this, r = /msie\s8\.0/.test(navigator.useragent), s = {}; r ? n = document.createelement("custom") : s.enumerable = !0, n.hasbeenreset = !1; var o = "", a = !1, l = t, c = e, h = i, p = null, u = "", d = !0, f = "auto", m = "start", v = 50, g = "middle", y = 50, b = "middle"; if (object.defineproperty(n, "id", ot({}, s, { get: function() { return o }, set: function(t) { o = "" + t } })), object.defineproperty(n, "pauseonexit", ot({}, s, { get: function() { return a }, set: function(t) { a = !!t } })), object.defineproperty(n, "starttime", ot({}, s, { get: function() { return l }, set: function(t) { if ("number" != typeof t) throw new typeerror("start time must be set to a number."); l = t, this.hasbeenreset = !0 } })), object.defineproperty(n, "endtime", ot({}, s, { get: function() { return c }, set: function(t) { if ("number" != typeof t) throw new typeerror("end time must be set to a number."); c = t, this.hasbeenreset = !0 } })), object.defineproperty(n, "text", ot({}, s, { get: function() { return h }, set: function(t) { h = "" + t, this.hasbeenreset = !0 } })), object.defineproperty(n, "region", ot({}, s, { get: function() { return p }, set: function(t) { p = t, this.hasbeenreset = !0 } })), object.defineproperty(n, "vertical", ot({}, s, { get: function() { return u }, set: function(t) { var e = jt(t); if (!1 === e) throw new syntaxerror("an invalid or illegal string was specified."); u = e, this.hasbeenreset = !0 } })), object.defineproperty(n, "snaptolines", ot({}, s, { get: function() { return d }, set: function(t) { d = !!t, this.hasbeenreset = !0 } })), object.defineproperty(n, "line", ot({}, s, { get: function() { return f }, set: function(t) { if ("number" != typeof t && t !== mn) throw new syntaxerror("an invalid number or illegal string was specified."); f = t, this.hasbeenreset = !0 } })), object.defineproperty(n, "linealign", ot({}, s, { get: function() { return m }, set: function(t) { var e = dt(t); if (!e) throw new syntaxerror("an invalid or illegal string was specified."); m = e, this.hasbeenreset = !0 } })), object.defineproperty(n, "position", ot({}, s, { get: function() { return v }, set: function(t) { if (t < 0 || t > 100) throw new error("position must be between 0 and 100."); v = t, this.hasbeenreset = !0 } })), object.defineproperty(n, "positionalign", ot({}, s, { get: function() { return g }, set: function(t) { var e = dt(t); if (!e) throw new syntaxerror("an invalid or illegal string was specified."); g = e, this.hasbeenreset = !0 } })), object.defineproperty(n, "size", ot({}, s, { get: function() { return y }, set: function(t) { if (t < 0 || t > 100) throw new error("size must be between 0 and 100."); y = t, this.hasbeenreset = !0 } })), object.defineproperty(n, "align", ot({}, s, { get: function() { return b }, set: function(t) { var e = dt(t); if (!e) throw new syntaxerror("an invalid or illegal string was specified."); b = e, this.hasbeenreset = !0 } })), n.displaystate = void 0, r) return n } function nt(t) { return "string" == typeof t && !!dn[t.tolowercase()] && t.tolowercase() } function bt(t) { return "number" == typeof t && t >= 0 && t <= 100 } function lt() { var t = 100, e = 3, i = 0, n = 100, r = 0, s = 100, o = ""; object.defineproperties(this, { width: { enumerable: !0, get: function() { return t }, set: function(e) { if (!bt(e)) throw new error("width must be between 0 and 100."); t = e } }, lines: { enumerable: !0, get: function() { return e }, set: function(t) { if ("number" != typeof t) throw new typeerror("lines must be set to a number."); e = t } }, regionanchory: { enumerable: !0, get: function() { return n }, set: function(t) { if (!bt(t)) throw new error("regionanchorx must be between 0 and 100."); n = t } }, regionanchorx: { enumerable: !0, get: function() { return i }, set: function(t) { if (!bt(t)) throw new error("regionanchory must be between 0 and 100."); i = t } }, viewportanchory: { enumerable: !0, get: function() { return s }, set: function(t) { if (!bt(t)) throw new error("viewportanchory must be between 0 and 100."); s = t } }, viewportanchorx: { enumerable: !0, get: function() { return r }, set: function(t) { if (!bt(t)) throw new error("viewportanchorx must be between 0 and 100."); r = t } }, scroll: { enumerable: !0, get: function() { return o }, set: function(t) { var e = nt(t); if (!1 === e) throw new syntaxerror("an invalid or illegal string was specified."); o = e } } }) } function rt(t, e, i, n) { var r = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : {}, s = t.texttracks(); r.kind = e, i && (r.label = i), n && (r.language = n), r.tech = t; var o = new wn.text.trackclass(r); return s.addtrack(o), o } function ht(t, e) { bn[t] = bn[t] || [], bn[t].push(e) } function ft(t, e, i) { t.settimeout(function() { return gt(e, bn[e.type], i, t) }, 1) } function xt(t, e) { t.foreach(function(t) { return t.settech && t.settech(e) }) } function yt(t, e, i) { return t.reduceright(wt(i), e[i]()) } function vt(t, e, i, n) { return e[i](t.reduce(wt(i), n)) } function wt(t) { return function(e, i) { return i[t] ? i[t](e) : e } } function gt() { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [], i = arguments[2], r = arguments[3], s = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : [], o = arguments.length > 5 && void 0 !== arguments[5] && arguments[5], a = e[0], l = e.slice(1); if ("string" == typeof a) gt(t, bn[a], i, r, s, o); else if (a) { var c = a(r); c.setsource(n({}, t), function(e, n) { if (e) return gt(t, l, i, r, s, o); s.push(c), gt(n, t.type === n.type ? l: bn[n.type], i, r, s, o) }) } else l.length ? gt(t, l, i, r, s, o) : o ? i(t, s) : gt(t, bn["*"], i, r, s, !0) } function qt(t, e) { return "rgba(" + parseint(t[1] + t[1], 16) + "," + parseint(t[2] + t[2], 16) + "," + parseint(t[3] + t[3], 16) + "," + e + ")" } function ut(t, e, i) { try { t.style[e] = i } catch(t) { return } } function kt(t) { var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : t; t = t < 0 ? 0 : t; var i = math.floor(t % 60), n = math.floor(t / 60 % 60), r = math.floor(t / 3600), s = math.floor(e / 60 % 60), o = math.floor(e / 3600); return (isnan(t) || t === 1 / 0) && (r = n = i = "-"), r = r > 0 || o > 0 ? r + ":": "", n = ((r || s >= 10) && n < 10 ? "0" + n: n) + ":", i = i < 10 ? "0" + i: i, r + n + i } function qt(t, e) { if (e && (t = e(t)), t && "none" !== t) return t } function $t(t, e) { return qt(t.options[t.options.selectedindex].value, e) } function zt(t, e, i) { if (e) for (var n = 0; n < t.options.length; n++) if (qt(t.options[n].value, i) === e) { t.selectedindex = n; break } } function jt(t, e, i) { var n = void 0; if ("string" == typeof t) { var s = jt.getplayers(); if (0 === t.indexof("#") && (t = t.slice(1)), s[t]) return e && ve.warn('player "' + t + '" is already initialised. options will not be applied.'), i && s[t].ready(i), s[t]; n = qe("#" + t) } else n = t; if (!n || !n.nodename) throw new typeerror("the element or id supplied is not valid. (videojs)"); if (n.player || os.players[n.playerid]) return n.player || os.players[n.playerid]; e = e || {}, jt.hooks("beforesetup").foreach(function(t) { var i = t(n, z(e)); if (!r(i) || array.isarray(i)) return void ve.error("please return an object in beforesetup hooks"); e = z(e, i) }); var o = bi.getcomponent("player"), a = new o(n, e, i); return jt.hooks("setup").foreach(function(t) { return t(a) }), a } var te, ee = "6.2.5", ie = "undefined" != typeof window ? window: "undefined" != typeof global ? global: "undefined" != typeof self ? self: {}; te = "undefined" != typeof window ? window: void 0 !== ie ? ie: "undefined" != typeof self ? self: {}; var ne, re = te, se = {}, oe = (object.freeze || object)({ default: se }), ae = oe && se || oe, le = void 0 !== ie ? ie: "undefined" != typeof window ? window: {}; "undefined" != typeof document ? ne = document: (ne = le["__global_document_cache@4"]) || (ne = le["__global_document_cache@4"] = ae); var ce = ne, he = re.navigator && re.navigator.useragent || "", pe = /applewebkit\/([\d.]+)/i.exec(he), ue = pe ? parsefloat(pe.pop()) : null, de = /ipad/i.test(he), fe = /iphone/i.test(he) && !de, me = /ipod/i.test(he), ve = fe || de || me, ge = function() { var t = he.match(/os (\d+)_/i); return t && t[1] ? t[1] : null } (), ye = /android/i.test(he), be = function() { var t = he.match(/android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i); if (!t) return null; var e = t[1] && parsefloat(t[1]), i = t[2] && parsefloat(t[2]); return e && i ? parsefloat(t[1] + "." + t[2]) : e || null } (), te = ye && /webkit/i.test(he) && be < 2.3, we = ye && be < 5 && ue < 537, _e = /firefox/i.test(he), ce = /edge/i.test(he), se = !ce && /chrome/i.test(he), xe = function() { var t = he.match(/chrome\/(\d+)/); return t && t[1] ? parsefloat(t[1]) : null } (), ke = /msie\s8\.0/.test(he), ee = function() { var t = /msie\s(\d+)\.\d/.exec(he), e = t && parsefloat(t[1]); return ! e && /trident\/7.0/i.test(he) && /rv:11.0/.test(he) && (e = 11), e } (), pe = /safari/i.test(he) && !se && !ye && !ce, me = pe || ve, ie = p() && ("ontouchstart" in re || re.documenttouch && re.document instanceof re.documenttouch), ae = p() && "backgroundsize" in re.document.createelement("video").style, je = (object.freeze || object)({ is_ipad: de, is_iphone: fe, is_ipod: me, is_ios: ve, ios_version: ge, is_android: ye, android_version: be, is_old_android: te, is_native_android: we, is_firefox: _e, is_edge: ce, is_chrome: se, chrome_version: xe, is_ie8: ke, ie_version: ee, is_safari: pe, is_any_safari: me, touch_enabled: ie, background_size_supported: ae }), de = "function" == typeof symbol && "symbol" == typeof symbol.iterator ? function(t) { return typeof t }: function(t) { return t && "function" == typeof symbol && t.constructor === symbol && t !== symbol.prototype ? "symbol": typeof t }, oe = function(t, e) { if (! (t instanceof e)) throw new typeerror("cannot call a class as a function") }, ze = function(t, e) { if ("function" != typeof e && null !== e) throw new typeerror("super expression must either be null or a function, not " + typeof e); t.prototype = object.create(e && e.prototype, { constructor: { value: t, enumerable: !1, writable: !0, configurable: !0 } }), e && (object.setprototypeof ? object.setprototypeof(t, e) : t.__proto__ = e) }, ne = function(t, e) { if (!t) throw new referenceerror("this hasn't been initialised - super() hasn't been called"); return ! e || "object" != typeof e && "function" != typeof e ? t: e }, be = function(t, e) { return t.raw = e, t }, le = object.prototype.tostring, re = function(t) { return r(t) ? object.keys(t) : [] }, he = void 0, fe = "all", xe = [], ye = function(t, e) { var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : !!ee && ee < 11, n = he.levels[fe], s = new regexp("^(" + n + ")$"); "log" !== t && e.unshift(t.touppercase() + ":"), xe && xe.push([].concat(e)), e.unshift("videojs:"); var o = re.console && re.console[t]; o && n && s.test(t) && (i && (e = e.map(function(t) { if (r(t) || array.isarray(t)) try { return json.stringify(t) } catch(e) { return string(t) } return string(t) }).join(" ")), o.apply ? o[array.isarray(e) ? "apply": "call"](re.console, e) : o(e)) }; he = function() { for (var t = arguments.length, e = array(t), i = 0; i < t; i++) e[i] = arguments[i]; ye("log", e) }, he.levels = { all: "log|warn|error", error: "error", off: "", warn: "warn|error", default: fe }, he.level = function(t) { if ("string" == typeof t) { if (!he.levels.hasownproperty(t)) throw new error('"' + t + '" in not a valid log level'); fe = t } return fe }, he.history = function() { return xe ? [].concat(xe) : [] }, he.history.clear = function() { xe && (xe.length = 0) }, he.history.disable = function() { null !== xe && (xe.length = 0, xe = null) }, he.history.enable = function() { null === xe && (xe = []) }, he.error = function() { for (var t = arguments.length, e = array(t), i = 0; i < t; i++) e[i] = arguments[i]; return ye("error", e) }, he.warn = function() { for (var t = arguments.length, e = array(t), i = 0; i < t; i++) e[i] = arguments[i]; return ye("warn", e) }; var ve = he, we = function(t) { for (var e = "", i = 0; i < arguments.length; i++) e += o(t[i]) + (arguments[i + 1] || ""); return e }, ge = be(["setting attributes in the second argument of createel()\n has been deprecated. use the third argument instead.\n createel(type, properties, attributes). attempting to set ", " to ", "."], ["setting attributes in the second argument of createel()\n has been deprecated. use the third argument instead.\n createel(type, properties, attributes). attempting to set ", " to ", "."]), qe = d("queryselector"), ue = d("queryselectorall"), ke = (object.freeze || object)({ isreal: p, isel: u, createel: f, textcontent: m, prependto: v, hasclass: g, addclass: y, removeclass: b, toggleclass: t, setattributes: w, getattributes: _, getattribute: c, setattribute: s, removeattribute: x, blocktextselection: k, unblocktextselection: e, getboundingclientrect: p, findposition: m, getpointerposition: i, istextnode: a, emptyel: j, normalizecontent: d, appendcontent: o, insertcontent: z, $: qe, $$: ue }), qe = 1, $e = {}, ze = "vdata" + (new date).gettime(), je = !1; ! function() { try { var t = object.defineproperty({}, "passive", { get: function() { je = !0 } }); re.addeventlistener("test", null, t) } catch(t) {} } (); var ti = ["touchstart", "touchmove"], ei = (object.freeze || object)({ fixevent: x, on: y, off: v, trigger: w, one: g }), ii = !1, ni = void 0, ri = function() { if (p()) { var t = ce.getelementsbytagname("video"), e = ce.getelementsbytagname("audio"), i = []; if (t && t.length > 0) for (var n = 0, r = t.length; n < r; n++) i.push(t[n]); if (e && e.length > 0) for (var s = 0, o = e.length; s < o; s++) i.push(e[s]); if (i && i.length > 0) for (var a = 0, l = i.length; a < l; a++) { var c = i[a]; if (!c || !c.getattribute) { q(1); break } if (void 0 === c.player) { var h = c.getattribute("data-setup"); null !== h && ni(c) } } else ii || q(1) } }; p() && "complete" === ce.readystate ? ii = !0 : g(re, "load", function() { ii = !0 }); var si = function(t) { var e = ce.createelement("style"); return e.classname = t, e }, oi = function(t, e) { t.stylesheet ? t.stylesheet.csstext = e: t.textcontent = e }, ai = function(t, e, i) { e.guid || (e.guid = n()); var n = function() { return e.apply(t, arguments) }; return n.guid = i ? i + "_" + e.guid: e.guid, n }, li = function(t, e) { var i = date.now(); return function() { var n = date.now(); n - i >= e && (t.apply(void 0, arguments), i = n) } }, ci = function() {}; ci.prototype.allowedevents_ = {}, ci.prototype.on = function(t, e) { var i = this.addeventlistener; this.addeventlistener = function() {}, y(this, t, e), this.addeventlistener = i }, ci.prototype.addeventlistener = ci.prototype.on, ci.prototype.off = function(t, e) { v(this, t, e) }, ci.prototype.removeeventlistener = ci.prototype.off, ci.prototype.one = function(t, e) { var i = this.addeventlistener; this.addeventlistener = function() {}, g(this, t, e), this.addeventlistener = i }, ci.prototype.trigger = function(t) { var e = t.type || t; "string" == typeof t && (t = { type: e }), t = x(t), this.allowedevents_[e] && this["on" + e] && this["on" + e](t), w(this, t) }, ci.prototype.dispatchevent = ci.prototype.trigger; var hi = function(t) { return t instanceof ci || !!t.eventbusel_ && ["on", "one", "off", "trigger"].every(function(e) { return "function" == typeof t[e] }) }, pi = function(t) { return "string" == typeof t && /\s/.test(t) || array.isarray(t) && !!t.length }, ui = function(t) { if (!t.nodename && !hi(t)) throw new error("invalid target; must be a dom node or evented object.") }, di = function(t) { if (!pi(t)) throw new error("invalid event type; must be a non-empty string or array.") }, fi = function(t) { if ("function" != typeof t) throw new error("invalid listener; must be a function.") }, mi = function(t, e) { var i = e.length < 3 || e[0] === t || e[0] === t.eventbusel_, n = void 0, r = void 0, s = void 0; return i ? (n = t.eventbusel_, e.length >= 3 && e.shift(), r = e[0], s = e[1]) : (n = e[0], r = e[1], s = e[2]), ui(n), di(r), fi(s), s = ai(t, s), { istargetingself: i, target: n, type: r, listener: s } }, vi = function(t, e, i, n) { ui(t), t.nodename ? ei[e](t, i, n) : t[e](i, n) }, gi = { on: function() { for (var t = this, e = arguments.length, i = array(e), n = 0; n < e; n++) i[n] = arguments[n]; var r = mi(this, i), s = r.istargetingself, o = r.target, a = r.type, l = r.listener; if (vi(o, "on", a, l), !s) { var c = function() { return t.off(o, a, l) }; c.guid = l.guid; var h = function() { return t.off("dispose", c) }; h.guid = l.guid, vi(this, "on", "dispose", c), vi(o, "on", "dispose", h) } }, one: function() { for (var t = this, e = arguments.length, i = array(e), n = 0; n < e; n++) i[n] = arguments[n]; var r = mi(this, i), s = r.istargetingself, o = r.target, a = r.type, l = r.listener; if (s) vi(o, "one", a, l); else { var c = function e() { for (var i = arguments.length, n = array(i), r = 0; r < i; r++) n[r] = arguments[r]; t.off(o, a, e), l.apply(null, n) }; c.guid = l.guid, vi(o, "one", a, c) } }, off: function(t, e, i) { if (!t || pi(t)) v(this.eventbusel_, t, e); else { var n = t, r = e; ui(n), di(r), fi(i), i = ai(this, i), this.off("dispose", i), n.nodename ? (v(n, r, i), v(n, "dispose", i)) : hi(n) && (n.off(r, i), n.off("dispose", i)) } }, trigger: function(t, e) { return w(this.eventbusel_, t, e) } }, yi = { state: {}, setstate: function(t) { var i = this; "function" == typeof t && (t = t()); var n = void 0; return e(t, function(t, e) { i.state[e] !== t && (n = n || {}, n[e] = { from: i.state[e], to: t }), i.state[e] = t }), n && hi(this) && this.trigger({ changes: n, type: "statechanged" }), n } }, bi = function() { function t(e, i, n) { if (oe(this, t), !e && this.play ? this.player_ = e = this: this.player_ = e, this.options_ = z({}, this.options_), i = this.options_ = z(this.options_, i), this.id_ = i.id || i.el && i.el.id, !this.id_) { var r = e && e.id && e.id() || "no_player"; this.id_ = r + "_component_" + n() } this.name_ = i.name || null, i.el ? this.el_ = i.el: !1 !== i.createel && (this.el_ = this.createel()), u(this, { eventbuskey: this.el_ ? "el_": null }), k(this, this.constructor.defaultstate), this.children_ = [], this.childindex_ = {}, this.childnameindex_ = {}, !1 !== i.initchildren && this.initchildren(), this.ready(n), !1 !== i.reporttouchactivity && this.enabletouchactivity() } return t.prototype.dispose = function() { if (this.trigger({ type: "dispose", bubbles: !1 }), this.children_) for (var t = this.children_.length - 1; t >= 0; t--) this.children_[t].dispose && this.children_[t].dispose(); this.children_ = null, this.childindex_ = null, this.childnameindex_ = null, this.el_ && (this.el_.parentnode && this.el_.parentnode.removechild(this.el_), r(this.el_), this.el_ = null) }, t.prototype.player = function() { return this.player_ }, t.prototype.options = function(t) { return ve.warn("this.options() has been deprecated and will be moved to the constructor in 6.0"), t ? (this.options_ = z(this.options_, t), this.options_) : this.options_ }, t.prototype.el = function() { return this.el_ }, t.prototype.createel = function(t, e, i) { return f(t, e, i) }, t.prototype.localize = function(t, e) { var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : t, n = this.player_.language && this.player_.language(), r = this.player_.languages && this.player_.languages(), s = r && r[n], o = n && n.split("-")[0], a = r && r[o], l = i; return s && s[t] ? l = s[t] : a && a[t] && (l = a[t]), e && (l = l.replace(/\{(\d+)\}/g, function(t, i) { var n = e[i - 1], r = n; return void 0 === n && (r = t), r })), l }, t.prototype.contentel = function() { return this.contentel_ || this.el_ }, t.prototype.id = function() { return this.id_ }, t.prototype.name = function() { return this.name_ }, t.prototype.children = function() { return this.children_ }, t.prototype.getchildbyid = function(t) { return this.childindex_[t] }, t.prototype.getchild = function(t) { if (t) return t = q(t), this.childnameindex_[t] }, t.prototype.addchild = function(e) { var i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : this.children_.length, r = void 0, s = void 0; if ("string" == typeof e) { s = q(e); var o = i.componentclass || s; i.name = s; var a = t.getcomponent(o); if (!a) throw new error("component " + o + " does not exist"); if ("function" != typeof a) return null; r = new a(this.player_ || this, i) } else r = e; if (this.children_.splice(n, 0, r), "function" == typeof r.id && (this.childindex_[r.id()] = r), s = s || r.name && q(r.name()), s && (this.childnameindex_[s] = r), "function" == typeof r.el && r.el()) { var l = this.contentel().children, c = l[n] || null; this.contentel().insertbefore(r.el(), c) } return r }, t.prototype.removechild = function(t) { if ("string" == typeof t && (t = this.getchild(t)), t && this.children_) { for (var e = !1, i = this.children_.length - 1; i >= 0; i--) if (this.children_[i] === t) { e = !0, this.children_.splice(i, 1); break } if (e) { this.childindex_[t.id()] = null, this.childnameindex_[t.name()] = null; var n = t.el(); n && n.parentnode === this.contentel() && this.contentel().removechild(t.el()) } } }, t.prototype.initchildren = function() { var e = this, i = this.options_.children; if (i) { var n = this.options_, r = function(t) { var i = t.name, r = t.opts; if (void 0 !== n[i] && (r = n[i]), !1 !== r) { ! 0 === r && (r = {}), r.playeroptions = e.options_.playeroptions; var s = e.addchild(i, r); s && (e[i] = s) } }, s = void 0, o = t.getcomponent("tech"); s = array.isarray(i) ? i: object.keys(i), s.concat(object.keys(this.options_).filter(function(t) { return ! s.some(function(e) { return "string" == typeof e ? t === e: t === e.name }) })).map(function(t) { var n = void 0, r = void 0; return "string" == typeof t ? (n = t, r = i[n] || e.options_[n] || {}) : (n = t.name, r = t), { name: n, opts: r } }).filter(function(e) { var i = t.getcomponent(e.opts.componentclass || q(e.name)); return i && !o.istech(i) }).foreach(r) } }, t.prototype.buildcssclass = function() { return "" }, t.prototype.ready = function(t) { var e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1]; t && (this.isready_ ? e ? t.call(this) : this.settimeout(t, 1) : (this.readyqueue_ = this.readyqueue_ || [], this.readyqueue_.push(t))) }, t.prototype.triggerready = function() { this.isready_ = !0, this.settimeout(function() { var t = this.readyqueue_; this.readyqueue_ = [], t && t.length > 0 && t.foreach(function(t) { t.call(this) }, this), this.trigger("ready") }, 1) }, t.prototype.$ = function(t, e) { return qe(t, e || this.contentel()) }, t.prototype.$$ = function(t, e) { return ue(t, e || this.contentel()) }, t.prototype.hasclass = function(t) { return g(this.el_, t) }, t.prototype.addclass = function(t) { y(this.el_, t) }, t.prototype.removeclass = function(t) { b(this.el_, t) }, t.prototype.toggleclass = function(t, e) { t(this.el_, t, e) }, t.prototype.show = function() { this.removeclass("vjs-hidden") }, t.prototype.hide = function() { this.addclass("vjs-hidden") }, t.prototype.lockshowing = function() { this.addclass("vjs-lock-showing") }, t.prototype.unlockshowing = function() { this.removeclass("vjs-lock-showing") }, t.prototype.getattribute = function(t) { return c(this.el_, t) }, t.prototype.setattribute = function(t, e) { s(this.el_, t, e) }, t.prototype.removeattribute = function(t) { x(this.el_, t) }, t.prototype.width = function(t, e) { return this.dimension("width", t, e) }, t.prototype.height = function(t, e) { return this.dimension("height", t, e) }, t.prototype.dimensions = function(t, e) { this.width(t, !0), this.height(e) }, t.prototype.dimension = function(t, e, i) { if (void 0 !== e) return null !== e && e === e || (e = 0), -1 !== ("" + e).indexof("%") || -1 !== ("" + e).indexof("px") ? this.el_.style[t] = e: this.el_.style[t] = "auto" === e ? "": e + "px", void(i || this.trigger("componentresize")); if (!this.el_) return 0; var n = this.el_.style[t], r = n.indexof("px"); return - 1 !== r ? parseint(n.slice(0, r), 10) : parseint(this.el_["offset" + q(t)], 10) }, t.prototype.currentdimension = function(t) { var e = 0; if ("width" !== t && "height" !== t) throw new error("currentdimension only accepts width or height value"); if ("function" == typeof re.getcomputedstyle) { var i = re.getcomputedstyle(this.el_); e = i.getpropertyvalue(t) || i[t] } if (0 === (e = parsefloat(e))) { var n = "offset" + q(t); e = this.el_[n] } return e }, t.prototype.currentdimensions = function() { return { width: this.currentdimension("width"), height: this.currentdimension("height") } }, t.prototype.currentwidth = function() { return this.currentdimension("width") }, t.prototype.currentheight = function() { return this.currentdimension("height") }, t.prototype.focus = function() { this.el_.focus() }, t.prototype.blur = function() { this.el_.blur() }, t.prototype.emittapevents = function() { var t = 0, e = null, i = void 0; this.on("touchstart", function(n) { 1 === n.touches.length && (e = { pagex: n.touches[0].pagex, pagey: n.touches[0].pagey }, t = (new date).gettime(), i = !0) }), this.on("touchmove", function(t) { if (t.touches.length > 1) i = !1; else if (e) { var n = t.touches[0].pagex - e.pagex, r = t.touches[0].pagey - e.pagey, s = math.sqrt(n * n + r * r); s > 10 && (i = !1) } }); var n = function() { i = !1 }; this.on("touchleave", n), this.on("touchcancel", n), this.on("touchend", function(n) { e = null, !0 === i && (new date).gettime() - t < 200 && (n.preventdefault(), this.trigger("tap")) }) }, t.prototype.enabletouchactivity = function() { if (this.player() && this.player().reportuseractivity) { var t = ai(this.player(), this.player().reportuseractivity), e = void 0; this.on("touchstart", function() { t(), this.clearinterval(e), e = this.setinterval(t, 250) }); var i = function(i) { t(), this.clearinterval(e) }; this.on("touchmove", t), this.on("touchend", i), this.on("touchcancel", i) } }, t.prototype.settimeout = function(t, e) { t = ai(this, t); var i = re.settimeout(t, e), n = function() { this.cleartimeout(i) }; return n.guid = "vjs-timeout-" + i, this.on("dispose", n), i }, t.prototype.cleartimeout = function(t) { re.cleartimeout(t); var e = function() {}; return e.guid = "vjs-timeout-" + t, this.off("dispose", e), t }, t.prototype.setinterval = function(t, e) { t = ai(this, t); var i = re.setinterval(t, e), n = function() { this.clearinterval(i) }; return n.guid = "vjs-interval-" + i, this.on("dispose", n), i }, t.prototype.clearinterval = function(t) { re.clearinterval(t); var e = function() {}; return e.guid = "vjs-interval-" + t, this.off("dispose", e), t }, t.prototype.requestanimationframe = function(t) { var e = this; if (this.supportsraf_) { t = ai(this, t); var i = re.requestanimationframe(t), n = function() { return e.cancelanimationframe(i) }; return n.guid = "vjs-raf-" + i, this.on("dispose", n), i } return this.settimeout(t, 1e3 / 60) }, t.prototype.cancelanimationframe = function(t) { if (this.supportsraf_) { re.cancelanimationframe(t); var e = function() {}; return e.guid = "vjs-raf-" + t, this.off("dispose", e), t } return this.cleartimeout(t) }, t.registercomponent = function(e, i) { if ("string" != typeof e || !e) throw new error('illegal component name, "' + e + '"; must be a non-empty string.'); var n = t.getcomponent("tech"), r = n && n.istech(i), s = t === i || t.prototype.isprototypeof(i.prototype); if (r || !s) { var o = void 0; throw o = r ? "techs must be registered using tech.registertech()": "must be a component subclass", new error('illegal component, "' + e + '"; ' + o + ".") } e = q(e), t.components_ || (t.components_ = {}); var a = t.getcomponent("player"); if ("player" === e && a && a.players) { var l = a.players, c = object.keys(l); if (l && c.length > 0 && c.map(function(t) { return l[t] }).every(boolean)) throw new error("can not register player component after player has been created.") } return t.components_[e] = i, i }, t.getcomponent = function(e) { if (e) return e = q(e), t.components_ && t.components_[e] ? t.components_[e] : void 0 }, t } (); bi.prototype.supportsraf_ = "function" == typeof re.requestanimationframe && "function" == typeof re.cancelanimationframe, bi.registercomponent("component", bi); for (var ti = {}, wi = [["requestfullscreen", "exitfullscreen", "fullscreenelement", "fullscreenenabled", "fullscreenchange", "fullscreenerror"], ["webkitrequestfullscreen", "webkitexitfullscreen", "webkitfullscreenelement", "webkitfullscreenenabled", "webkitfullscreenchange", "webkitfullscreenerror"], ["webkitrequestfullscreen", "webkitcancelfullscreen", "webkitcurrentfullscreenelement", "webkitcancelfullscreen", "webkitfullscreenchange", "webkitfullscreenerror"], ["mozrequestfullscreen", "mozcancelfullscreen", "mozfullscreenelement", "mozfullscreenenabled", "mozfullscreenchange", "mozfullscreenerror"], ["msrequestfullscreen", "msexitfullscreen", "msfullscreenelement", "msfullscreenenabled", "msfullscreenchange", "msfullscreenerror"]], _i = wi[0], ci = void 0, si = 0; si < wi.length; si++) if (wi[si][1] in ce) { ci = wi[si]; break } if (ci) for (var xi = 0; xi < ci.length; xi++) ti[_i[xi]] = ci[xi]; rt.prototype.code = 0, rt.prototype.message = "", rt.prototype.status = null, rt.errortypes = ["media_err_custom", "media_err_aborted", "media_err_network", "media_err_decode", "media_err_src_not_supported", "media_err_encrypted"], rt.defaultmessages = { 1 : "you aborted the media playback", 2 : "a network error caused the media download to fail part-way.", 3 : "the media playback was aborted due to a corruption problem or because the media used features your browser did not support.", 4 : "the media could not be loaded, either because the server or network failed or because the format is not supported.", 5 : "the media is encrypted and we do not have the keys to decrypt it." }; for (var ki = 0; ki < rt.errortypes.length; ki++) rt[rt.errortypes[ki]] = ki, rt.prototype[rt.errortypes[ki]] = ki; var ei = st, pi = function(t) { return ["kind", "label", "language", "id", "inbandmetadatatrackdispatchtype", "mode", "src"].reduce(function(e, i, n) { return t[i] && (e[i] = t[i]), e }, { cues: t.cues && array.prototype.map.call(t.cues, function(t) { return { starttime: t.starttime, endtime: t.endtime, text: t.text, id: t.id } }) }) }, mi = function(t) { var e = t.$$("track"), i = array.prototype.map.call(e, function(t) { return t.track }); return array.prototype.map.call(e, function(t) { var e = pi(t.track); return t.src && (e.src = t.src), e }).concat(array.prototype.filter.call(t.texttracks(), function(t) { return - 1 === i.indexof(t) }).map(pi)) }, ii = function(t, e) { return t.foreach(function(t) { var i = e.addremotetexttrack(t).track; ! t.src && t.cues && t.cues.foreach(function(t) { return i.addcue(t) }) }), e.texttracks() }, ai = { texttrackstojson: mi, jsontotexttracks: ii, tracktojson_: pi }, ji = "vjs-modal-dialog", di = function(t) { function e(i, n) { oe(this, e); var r = ne(this, t.call(this, i, n)); return r.opened_ = r.hasbeenopened_ = r.hasbeenfilled_ = !1, r.closeable(!r.options_.uncloseable), r.content(r.options_.content), r.contentel_ = f("div", { classname: ji + "-content" }, { role: "document" }), r.descel_ = f("p", { classname: ji + "-description vjs-control-text", id: r.el().getattribute("aria-describedby") }), m(r.descel_, r.description()), r.el_.appendchild(r.descel_), r.el_.appendchild(r.contentel_), r } return ze(e, t), e.prototype.createel = function() { return t.prototype.createel.call(this, "div", { classname: this.buildcssclass(), tabindex: -1 }, { "aria-describedby": this.id() + "_description", "aria-hidden": "true", "aria-label": this.label(), role: "dialog" }) }, e.prototype.buildcssclass = function() { return ji + " vjs-hidden " + t.prototype.buildcssclass.call(this) }, e.prototype.handlekeypress = function(t) { 27 === t.which && this.closeable() && this.close() }, e.prototype.label = function() { return this.localize(this.options_.label || "modal window") }, e.prototype.description = function() { var t = this.options_.description || this.localize("this is a modal window."); return this.closeable() && (t += " " + this.localize("this modal can be closed by pressing the escape key or activating the close button.")), t }, e.prototype.open = function() { if (!this.opened_) { var t = this.player(); this.trigger("beforemodalopen"), this.opened_ = !0, (this.options_.fillalways || !this.hasbeenopened_ && !this.hasbeenfilled_) && this.fill(), this.wasplaying_ = !t.paused(), this.options_.pauseonopen && this.wasplaying_ && t.pause(), this.closeable() && this.on(this.el_.ownerdocument, "keydown", ai(this, this.handlekeypress)), t.controls(!1), this.show(), this.conditionalfocus_(), this.el().setattribute("aria-hidden", "false"), this.trigger("modalopen"), this.hasbeenopened_ = !0 } }, e.prototype.opened = function(t) { return "boolean" == typeof t && this[t ? "open": "close"](), this.opened_ }, e.prototype.close = function() { if (this.opened_) { var t = this.player(); this.trigger("beforemodalclose"), this.opened_ = !1, this.wasplaying_ && this.options_.pauseonopen && t.play(), this.closeable() && this.off(this.el_.ownerdocument, "keydown", ai(this, this.handlekeypress)), t.controls(!0), this.hide(), this.el().setattribute("aria-hidden", "true"), this.trigger("modalclose"), this.conditionalblur_(), this.options_.temporary && this.dispose() } }, e.prototype.closeable = function(t) { if ("boolean" == typeof t) { var e = this.closeable_ = !!t, i = this.getchild("closebutton"); if (e && !i) { var n = this.contentel_; this.contentel_ = this.el_, i = this.addchild("closebutton", { controltext: "close modal dialog" }), this.contentel_ = n, this.on(i, "close", this.close) } ! e && i && (this.off(i, "close", this.close), this.removechild(i), i.dispose()) } return this.closeable_ }, e.prototype.fill = function() { this.fillwith(this.content()) }, e.prototype.fillwith = function(t) { var e = this.contentel(), i = e.parentnode, n = e.nextsibling; this.trigger("beforemodalfill"), this.hasbeenfilled_ = !0, i.removechild(e), this.empty(), z(e, t), this.trigger("modalfill"), n ? i.insertbefore(e, n) : i.appendchild(e); var r = this.getchild("closebutton"); r && i.appendchild(r.el_) }, e.prototype.empty = function() { this.trigger("beforemodalempty"), j(this.contentel()), this.trigger("modalempty") }, e.prototype.content = function(t) { return void 0 !== t && (this.content_ = t), this.content_ }, e.prototype.conditionalfocus_ = function() { var t = ce.activeelement, e = this.player_.el_; this.previouslyactiveel_ = null, (e.contains(t) || e === t) && (this.previouslyactiveel_ = t, this.focus(), this.on(ce, "keydown", this.handlekeydown)) }, e.prototype.conditionalblur_ = function() { this.previouslyactiveel_ && (this.previouslyactiveel_.focus(), this.previouslyactiveel_ = null), this.off(ce, "keydown", this.handlekeydown) }, e.prototype.handlekeydown = function(t) { if (9 === t.which) { for (var e = this.focusableels_(), i = this.el_.queryselector(":focus"), n = void 0, r = 0; r < e.length; r++) if (i === e[r]) { n = r; break } ce.activeelement === this.el_ && (n = 0), t.shiftkey && 0 === n ? (e[e.length - 1].focus(), t.preventdefault()) : t.shiftkey || n !== e.length - 1 || (e[0].focus(), t.preventdefault()) } }, e.prototype.focusableels_ = function() { var t = this.el_.queryselectorall("*"); return array.prototype.filter.call(t, function(t) { return (t instanceof re.htmlanchorelement || t instanceof re.htmlareaelement) && t.hasattribute("href") || (t instanceof re.htmlinputelement || t instanceof re.htmlselectelement || t instanceof re.htmltextareaelement || t instanceof re.htmlbuttonelement) && !t.hasattribute("disabled") || t instanceof re.htmliframeelement || t instanceof re.htmlobjectelement || t instanceof re.htmlembedelement || t.hasattribute("tabindex") && -1 !== t.getattribute("tabindex") || t.hasattribute("contenteditable") }) }, e } (bi); di.prototype.options_ = { pauseonopen: !0, temporary: !0 }, bi.registercomponent("modaldialog", di); var oi = function(t) { function e() { var i, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null; oe(this, e); var s = ne(this, t.call(this)); if (!r && (r = s, ke)) { r = ce.createelement("custom"); for (var o in e.prototype)"constructor" !== o && (r[o] = e.prototype[o]) } r.tracks_ = [], object.defineproperty(r, "length", { get: function() { return this.tracks_.length } }); for (var a = 0; a < n.length; a++) r.addtrack(n[a]); return i = r, ne(s, i) } return ze(e, t), e.prototype.addtrack = function(t) { var e = this.tracks_.length; "" + e in this || object.defineproperty(this, e, { get: function() { return this.tracks_[e] } }), -1 === this.tracks_.indexof(t) && (this.tracks_.push(t), this.trigger({ track: t, type: "addtrack" })) }, e.prototype.removetrack = function(t) { for (var e = void 0, i = 0, n = this.length; i < n; i++) if (this[i] === t) { e = this[i], e.off && e.off(), this.tracks_.splice(i, 1); break } e && this.trigger({ track: e, type: "removetrack" }) }, e.prototype.gettrackbyid = function(t) { for (var e = null, i = 0, n = this.length; i < n; i++) { var r = this[i]; if (r.id === t) { e = r; break } } return e }, e } (ci); oi.prototype.allowedevents_ = { change: "change", addtrack: "addtrack", removetrack: "removetrack" }; for (var zi in oi.prototype.allowedevents_) oi.prototype["on" + zi] = null; var ni = function(t, e) { for (var i = 0; i < t.length; i++) object.keys(t[i]).length && e.id !== t[i].id && (t[i].enabled = !1) }, bi = function(t) { function e() { var i, n, r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : []; oe(this, e); for (var s = void 0, o = r.length - 1; o >= 0; o--) if (r[o].enabled) { ni(r, r[o]); break } if (ke) { s = ce.createelement("custom"); for (var a in oi.prototype)"constructor" !== a && (s[a] = oi.prototype[a]); for (var l in e.prototype)"constructor" !== l && (s[l] = e.prototype[l]) } return s = i = ne(this, t.call(this, r, s)), s.changing_ = !1, n = s, ne(i, n) } return ze(e, t), e.prototype.addtrack = function(e) { var i = this; e.enabled && ni(this, e), t.prototype.addtrack.call(this, e), e.addeventlistener && e.addeventlistener("enabledchange", function() { i.changing_ || (i.changing_ = !0, ni(i, e), i.changing_ = !1, i.trigger("change")) }) }, e } (oi), li = function(t, e) { for (var i = 0; i < t.length; i++) object.keys(t[i]).length && e.id !== t[i].id && (t[i].selected = !1) }, ri = function(t) { function e() { var i, n, r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : []; oe(this, e); for (var s = void 0, o = r.length - 1; o >= 0; o--) if (r[o].selected) { li(r, r[o]); break } if (ke) { s = ce.createelement("custom"); for (var a in oi.prototype)"constructor" !== a && (s[a] = oi.prototype[a]); for (var l in e.prototype)"constructor" !== l && (s[l] = e.prototype[l]) } return s = i = ne(this, t.call(this, r, s)), s.changing_ = !1, object.defineproperty(s, "selectedindex", { get: function() { for (var t = 0; t < this.length; t++) if (this[t].selected) return t; return - 1 }, set: function() {} }), n = s, ne(i, n) } return ze(e, t), e.prototype.addtrack = function(e) { var i = this; e.selected && li(this, e), t.prototype.addtrack.call(this, e), e.addeventlistener && e.addeventlistener("selectedchange", function() { i.changing_ || (i.changing_ = !0, li(i, e), i.changing_ = !1, i.trigger("change")) }) }, e } (oi), hi = function(t) { function e() { var i, n, r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : []; oe(this, e); var s = void 0; if (ke) { s = ce.createelement("custom"); for (var o in oi.prototype)"constructor" !== o && (s[o] = oi.prototype[o]); for (var a in e.prototype)"constructor" !== a && (s[a] = e.prototype[a]) } return s = i = ne(this, t.call(this, r, s)), n = s, ne(i, n) } return ze(e, t), e.prototype.addtrack = function(e) { t.prototype.addtrack.call(this, e), e.addeventlistener("modechange", ai(this, function() { this.trigger("change") })), -1 === ["metadata", "chapters"].indexof(e.kind) && e.addeventlistener("modechange", ai(this, function() { this.trigger("selectedlanguagechange") })) }, e } (oi), fi = function() { function t() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : []; oe(this, t); var i = this; if (ke) { i = ce.createelement("custom"); for (var n in t.prototype)"constructor" !== n && (i[n] = t.prototype[n]) } i.trackelements_ = [], object.defineproperty(i, "length", { get: function() { return this.trackelements_.length } }); for (var r = 0, s = e.length; r < s; r++) i.addtrackelement_(e[r]); if (ke) return i } return t.prototype.addtrackelement_ = function(t) { var e = this.trackelements_.length; "" + e in this || object.defineproperty(this, e, { get: function() { return this.trackelements_[e] } }), -1 === this.trackelements_.indexof(t) && this.trackelements_.push(t) }, t.prototype.gettrackelementbytrack_ = function(t) { for (var e = void 0, i = 0, n = this.trackelements_.length; i < n; i++) if (t === this.trackelements_[i].track) { e = this.trackelements_[i]; break } return e }, t.prototype.removetrackelement_ = function(t) { for (var e = 0, i = this.trackelements_.length; e < i; e++) if (t === this.trackelements_[e]) { this.trackelements_.splice(e, 1); break } }, t } (), xi = function() { function t(e) { oe(this, t); var i = this; if (ke) { i = ce.createelement("custom"); for (var n in t.prototype)"constructor" !== n && (i[n] = t.prototype[n]) } if (t.prototype.setcues_.call(i, e), object.defineproperty(i, "length", { get: function() { return this.length_ } }), ke) return i } return t.prototype.setcues_ = function(t) { var e = this.length || 0, i = 0, n = t.length; this.cues_ = t, this.length_ = t.length; var r = function(t) { "" + t in this || object.defineproperty(this, "" + t, { get: function() { return this.cues_[t] } }) }; if (e < n) for (i = e; i < n; i++) r.call(this, i) }, t.prototype.getcuebyid = function(t) { for (var e = null, i = 0, n = this.length; i < n; i++) { var r = this[i]; if (r.id === t) { e = r; break } } return e }, t } (), yi = { alternative: "alternative", captions: "captions", main: "main", sign: "sign", subtitles: "subtitles", commentary: "commentary" }, vi = { alternative: "alternative", descriptions: "descriptions", main: "main", "main-desc": "main-desc", translation: "translation", commentary: "commentary" }, wi = { subtitles: "subtitles", captions: "captions", descriptions: "descriptions", chapters: "chapters", metadata: "metadata" }, gi = { disabled: "disabled", hidden: "hidden", showing: "showing" }, qi = function(t) { function e() { var i, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; oe(this, e); var r = ne(this, t.call(this)), s = r; if (ke) { s = ce.createelement("custom"); for (var o in e.prototype)"constructor" !== o && (s[o] = e.prototype[o]) } var a = { id: n.id || "vjs_track_" + n(), kind: n.kind || "", label: n.label || "", language: n.language || "" }; for (var l in a) ! function(t) { object.defineproperty(s, t, { get: function() { return a[t] }, set: function() {} }) } (l); return i = s, ne(r, i) } return ze(e, t), e } (ci), ui = function(t) { var e = ["protocol", "hostname", "port", "pathname", "search", "hash", "host"], i = ce.createelement("a"); i.href = t; var n = "" === i.host && "file:" !== i.protocol, r = void 0; n && (r = ce.createelement("div"), r.innerhtml = '', i = r.firstchild, r.setattribute("style", "display:none; position:absolute;"), ce.body.appendchild(r)); for (var s = {}, o = 0; o < e.length; o++) s[e[o]] = i[e[o]]; return "http:" === s.protocol && (s.host = s.host.replace(/:80$/, "")), "https:" === s.protocol && (s.host = s.host.replace(/:443$/, "")), n && ce.body.removechild(r), s }, ki = function(t) { if (!t.match(/^https?:\/\//)) { var e = ce.createelement("div"); e.innerhtml = 'x', t = e.firstchild.href } return t }, qi = function(t) { if ("string" == typeof t) { var e = /^(\/?)([\s\s]*?)((?:\.{1,2}|[^\/]+?)(\.([^\.\/\?]+)))(?:[\/]*|[\?].*)$/i, i = e.exec(t); if (i) return i.pop().tolowercase() } return "" }, $i = function(t) { var e = re.location, i = ui(t); return (":" === i.protocol ? e.protocol: i.protocol) + i.host !== e.protocol + e.host }, zi = (object.freeze || object)({ parseurl: ui, getabsoluteurl: ki, getfileextension: qi, iscrossorigin: $i }), ji = ot, tn = object.prototype.tostring, en = t(function(t, e) { function i(t) { return t.replace(/^\s*|\s*$/g, "") } e = t.exports = i, e.left = function(t) { return t.replace(/^\s*/, "") }, e.right = function(t) { return t.replace(/\s*$/, "") } }), nn = at, rn = object.prototype.tostring, sn = object.prototype.hasownproperty, on = function(t) { return "[object array]" === object.prototype.tostring.call(t) }, an = function(t) { if (!t) return {}; var e = {}; return nn(en(t).split("\n"), function(t) { var i = t.indexof(":"), n = en(t.slice(0, i)).tolowercase(), r = en(t.slice(i + 1)); void 0 === e[n] ? e[n] = r: on(e[n]) ? e[n].push(r) : e[n] = [e[n], r] }), e }, ln = pt, cn = object.prototype.hasownproperty, hn = ft; ft.xmlhttprequest = re.xmlhttprequest || gt, ft.xdomainrequest = "withcredentials" in new ft.xmlhttprequest ? ft.xmlhttprequest: re.xdomainrequest, function(t, e) { for (var i = 0; i < t.length; i++) ! function(t) { ft["delete" === t ? "del": t] = function(e, i, n) { return i = dt(e, i, n), i.method = t.touppercase(), mt(i) } } (t[i]) } (["get", "put", "post", "patch", "head", "delete"]); var pn = function(t, e) { var i = new re.webvtt.parser(re, re.vttjs, re.webvtt.stringdecoder()), n = []; i.oncue = function(t) { e.addcue(t) }, i.onparsingerror = function(t) { n.push(t) }, i.onflush = function() { e.trigger({ type: "loadeddata", target: e }) }, i.parse(t), n.length > 0 && (re.console && re.console.groupcollapsed && re.console.groupcollapsed("text track parsing errors for " + e.src), n.foreach(function(t) { return ve.error(t) }), re.console && re.console.groupend && re.console.groupend()), i.flush() }, un = function(t, e) { var i = { uri: t }, n = $i(t); n && (i.cors = n), hn(i, ai(this, function(t, i, n) { if (t) return ve.error(t, i); if (e.loaded_ = !0, "function" != typeof re.webvtt) { if (e.tech_) { var r = function() { return pn(n, e) }; e.tech_.on("vttjsloaded", r), e.tech_.on("vttjserror", function() { ve.error("vttjs failed to load, stopping trying to process " + e.src), e.tech_.off("vttjsloaded", r) }) } } else pn(n, e) })) }, dn = function(t) { function e() { var i, n, r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; if (oe(this, e), !r.tech) throw new error("a tech was not provided."); var s = z(r, { kind: wi[r.kind] || "subtitles", language: r.language || r.srclang || "" }), o = gi[s.mode] || "disabled", a = s. default; "metadata" !== s.kind && "chapters" !== s.kind || (o = "hidden"); var l = i = ne(this, t.call(this, s)); if (l.tech_ = s.tech, ke) for (var c in e.prototype)"constructor" !== c && (l[c] = e.prototype[c]); l.cues_ = [], l.activecues_ = []; var h = new xi(l.cues_), p = new xi(l.activecues_), u = !1, d = ai(l, function() { this.activecues, u && (this.trigger("cuechange"), u = !1) }); return "disabled" !== o && l.tech_.ready(function() { l.tech_.on("timeupdate", d) }, !0), object.defineproperty(l, "default", { get: function() { return a }, set: function() {} }), object.defineproperty(l, "mode", { get: function() { return o }, set: function(t) { var e = this; gi[t] && (o = t, "showing" === o && this.tech_.ready(function() { e.tech_.on("timeupdate", d) }, !0), this.trigger("modechange")) } }), object.defineproperty(l, "cues", { get: function() { return this.loaded_ ? h: null }, set: function() {} }), object.defineproperty(l, "activecues", { get: function() { if (!this.loaded_) return null; if (0 === this.cues.length) return p; for (var t = this.tech_.currenttime(), e = [], i = 0, n = this.cues.length; i < n; i++) { var r = this.cues[i]; r.starttime <= t && r.endtime >= t ? e.push(r) : r.starttime === r.endtime && r.starttime <= t && r.starttime + .5 >= t && e.push(r) } if (u = !1, e.length !== this.activecues_.length) u = !0; else for (var s = 0; s < e.length; s++) - 1 === this.activecues_.indexof(e[s]) && (u = !0); return this.activecues_ = e, p.setcues_(this.activecues_), p }, set: function() {} }), s.src ? (l.src = s.src, un(s.src, l)) : l.loaded_ = !0, n = l, ne(i, n) } return ze(e, t), e.prototype.addcue = function(t) { var e = t; if (re.vttjs && !(t instanceof re.vttjs.vttcue)) { e = new re.vttjs.vttcue(t.starttime, t.endtime, t.text); for (var i in t) i in e || (e[i] = t[i]); e.id = t.id, e.originalcue_ = t } for (var n = this.tech_.texttracks(), r = 0; r < n.length; r++) n[r] !== this && n[r].removecue(e); this.cues_.push(e), this.cues.setcues_(this.cues_) }, e.prototype.removecue = function(t) { for (var e = this.cues_.length; e--;) { var i = this.cues_[e]; if (i === t || i.originalcue_ && i.originalcue_ === t) { this.cues_.splice(e, 1), this.cues.setcues_(this.cues_); break } } }, e } (qi); dn.prototype.allowedevents_ = { cuechange: "cuechange" }; var fn = function(t) { function e() { var i, n, r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; oe(this, e); var s = z(r, { kind: vi[r.kind] || "" }), o = i = ne(this, t.call(this, s)), a = !1; if (ke) for (var l in e.prototype)"constructor" !== l && (o[l] = e.prototype[l]); return object.defineproperty(o, "enabled", { get: function() { return a }, set: function(t) { "boolean" == typeof t && t !== a && (a = t, this.trigger("enabledchange")) } }), s.enabled && (o.enabled = s.enabled), o.loaded_ = !0, n = o, ne(i, n) } return ze(e, t), e } (qi), mn = function(t) { function e() { var i, n, r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; oe(this, e); var s = z(r, { kind: yi[r.kind] || "" }), o = i = ne(this, t.call(this, s)), a = !1; if (ke) for (var l in e.prototype)"constructor" !== l && (o[l] = e.prototype[l]); return object.defineproperty(o, "selected", { get: function() { return a }, set: function(t) { "boolean" == typeof t && t !== a && (a = t, this.trigger("selectedchange")) } }), s.selected && (o.selected = s.selected), n = o, ne(i, n) } return ze(e, t), e } (qi), vn = 0, gn = 2, yn = function(t) { function e() { var i = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; oe(this, e); var n = ne(this, t.call(this)), r = void 0, s = n; if (ke) { s = ce.createelement("custom"); for (var o in e.prototype)"constructor" !== o && (s[o] = e.prototype[o]) } var a = new dn(i); if (s.kind = a.kind, s.src = a.src, s.srclang = a.language, s.label = a.label, s. default = a. default, object.defineproperty(s, "readystate", { get: function() { return r } }), object.defineproperty(s, "track", { get: function() { return a } }), r = vn, a.addeventlistener("loadeddata", function() { r = gn, s.trigger({ type: "load", target: s }) }), ke) { var l; return l = s, ne(n, l) } return n } return ze(e, t), e } (ci); yn.prototype.allowedevents_ = { load: "load" }, yn.none = vn, yn.loading = 1, yn.loaded = gn, yn.error = 3; var bn = { audio: { listclass: bi, trackclass: fn, capitalname: "audio" }, video: { listclass: ri, trackclass: mn, capitalname: "video" }, text: { listclass: hi, trackclass: dn, capitalname: "text" } }; object.keys(bn).foreach(function(t) { bn[t].gettername = t + "tracks", bn[t].privatename = t + "tracks_" }); var tn = { remotetext: { listclass: hi, trackclass: dn, capitalname: "remotetext", gettername: "remotetexttracks", privatename: "remotetexttracks_" }, remotetextel: { listclass: fi, trackclass: yn, capitalname: "remotetexttrackels", gettername: "remotetexttrackels", privatename: "remotetexttrackels_" } }, wn = z(bn, tn); tn.names = object.keys(tn), bn.names = object.keys(bn), wn.names = [].concat(tn.names).concat(bn.names); var _n = object.create || function() { function t() {} return function(e) { if (1 !== arguments.length) throw new error("object.create shim only accepts one parameter."); return t.prototype = e, new t } } (); yt.prototype = _n(error.prototype), yt.prototype.constructor = yt, yt.errors = { badsignature: { code: 0, message: "malformed webvtt signature." }, badtimestamp: { code: 1, message: "malformed time stamp." } }, tt.prototype = { set: function(t, e) { this.get(t) || "" === e || (this.values[t] = e) }, get: function(t, e, i) { return i ? this.has(t) ? this.values[t] : e[i] : this.has(t) ? this.values[t] : e }, has: function(t) { return t in this.values }, alt: function(t, e, i) { for (var n = 0; n < i.length; ++n) if (e === i[n]) { this.set(t, e); break } }, integer: function(t, e) { / ^-?\d + $ / .test(e) && this.set(t, parseint(e, 10)) }, percent: function(t, e) { return !! (e.match(/^([\d]{1,3})(\.[\d]*)?%$/) && (e = parsefloat(e)) >= 0 && e <= 100) && (this.set(t, e), !0) } }; var cn = { "&": "&", "<": "<", ">": ">", "‎": "‎", "‏": "‏", " ": " " }, sn = { c: "span", i: "i", b: "b", u: "u", ruby: "ruby", rt: "rt", v: "span", lang: "span" }, xn = { v: "title", lang: "lang" }, kn = { rt: "ruby" }, en = [[1470, 1470], [1472, 1472], [1475, 1475], [1478, 1478], [1488, 1514], [1520, 1524], [1544, 1544], [1547, 1547], [1549, 1549], [1563, 1563], [1566, 1610], [1645, 1647], [1649, 1749], [1765, 1766], [1774, 1775], [1786, 1805], [1807, 1808], [1810, 1839], [1869, 1957], [1969, 1969], [1984, 2026], [2036, 2037], [2042, 2042], [2048, 2069], [2074, 2074], [2084, 2084], [2088, 2088], [2096, 2110], [2112, 2136], [2142, 2142], [2208, 2208], [2210, 2220], [8207, 8207], [64285, 64285], [64287, 64296], [64298, 64310], [64312, 64316], [64318, 64318], [64320, 64321], [64323, 64324], [64326, 64449], [64467, 64829], [64848, 64911], [64914, 64967], [65008, 65020], [65136, 65140], [65142, 65276], [67584, 67589], [67592, 67592], [67594, 67637], [67639, 67640], [67644, 67644], [67647, 67669], [67671, 67679], [67840, 67867], [67872, 67897], [67903, 67903], [67968, 68023], [68030, 68031], [68096, 68096], [68112, 68115], [68117, 68119], [68121, 68147], [68160, 68167], [68176, 68184], [68192, 68223], [68352, 68405], [68416, 68437], [68440, 68466], [68472, 68479], [68608, 68680], [126464, 126467], [126469, 126495], [126497, 126498], [126500, 126500], [126503, 126503], [126505, 126514], [126516, 126519], [126521, 126521], [126523, 126523], [126530, 126530], [126535, 126535], [126537, 126537], [126539, 126539], [126541, 126543], [126545, 126546], [126548, 126548], [126551, 126551], [126553, 126553], [126555, 126555], [126557, 126557], [126559, 126559], [126561, 126562], [126564, 126564], [126567, 126570], [126572, 126578], [126580, 126583], [126585, 126588], [126590, 126590], [126592, 126601], [126603, 126619], [126625, 126627], [126629, 126633], [126635, 126651], [1114109, 1114109]]; et.prototype.applystyles = function(t, e) { e = e || this.div; for (var i in t) t.hasownproperty(i) && (e.style[i] = t[i]) }, et.prototype.formatstyle = function(t, e) { return 0 === t ? 0 : t + e }, pt.prototype = _n(et.prototype), pt.prototype.constructor = pt, mt.prototype.move = function(t, e) { switch (e = void 0 !== e ? e: this.lineheight, t) { case "+x": this.left += e, this.right += e; break; case "-x": this.left -= e, this.right -= e; break; case "+y": this.top += e, this.bottom += e; break; case "-y": this.top -= e, this.bottom -= e } }, mt.prototype.overlaps = function(t) { return this.left < t.right && this.right > t.left && this.top < t.bottom && this.bottom > t.top }, mt.prototype.overlapsany = function(t) { for (var e = 0; e < t.length; e++) if (this.overlaps(t[e])) return ! 0; return ! 1 }, mt.prototype.within = function(t) { return this.top >= t.top && this.bottom <= t.bottom && this.left >= t.left && this.right <= t.right }, mt.prototype.overlapsoppositeaxis = function(t, e) { switch (e) { case "+x": return this.left < t.left; case "-x": return this.right > t.right; case "+y": return this.top < t.top; case "-y": return this.bottom > t.bottom } }, mt.prototype.intersectpercentage = function(t) { return math.max(0, math.min(this.right, t.right) - math.max(this.left, t.left)) * math.max(0, math.min(this.bottom, t.bottom) - math.max(this.top, t.top)) / (this.height * this.width) }, mt.prototype.tocsscompatvalues = function(t) { return { top: this.top - t.top, bottom: t.bottom - this.bottom, left: this.left - t.left, right: t.right - this.right, height: this.height, width: this.width } }, mt.getsimpleboxposition = function(t) { var e = t.div ? t.div.offsetheight: t.tagname ? t.offsetheight: 0, i = t.div ? t.div.offsetwidth: t.tagname ? t.offsetwidth: 0, n = t.div ? t.div.offsettop: t.tagname ? t.offsettop: 0; return t = t.div ? t.div.getboundingclientrect() : t.tagname ? t.getboundingclientrect() : t, { left: t.left, right: t.right, top: t.top || n, height: t.height || e, bottom: t.bottom || n + (t.height || e), width: t.width || i } }, at.stringdecoder = function() { return { decode: function(t) { if (!t) return ""; if ("string" != typeof t) throw new error("error - expected string data."); return decodeuricomponent(encodeuricomponent(t)) } } }, at.convertcuetodomtree = function(t, e) { return t && e ? ct(t, e) : null }, at.processcues = function(t, e, i) { if (!t || !e || !i) return null; for (; i.firstchild;) i.removechild(i.firstchild); var n = t.document.createelement("div"); if (n.style.position = "absolute", n.style.left = "0", n.style.right = "0", n.style.top = "0", n.style.bottom = "0", n.style.margin = "1.5%", i.appendchild(n), function(t) { for (var e = 0; e < t.length; e++) if (t[e].hasbeenreset || !t[e].displaystate) return ! 0; return ! 1 } (e)) { var r = [], s = mt.getsimpleboxposition(n), o = math.round(.05 * s.height * 100) / 100, a = { font: o + "px sans-serif" }; ! function() { for (var i, o, l = 0; l < e.length; l++) o = e[l], i = new pt(t, o, a), n.appendchild(i.div), it(t, i, s, r), o.displaystate = i.div, r.push(mt.getsimpleboxposition(i)) } () } else for (var l = 0; l < e.length; l++) n.appendchild(e[l].displaystate) }, at.parser = function(t, e, i) { i || (i = e, e = {}), e || (e = {}), this.window = t, this.vttjs = e, this.state = "initial", this.buffer = "", this.decoder = i || new textdecoder("utf8"), this.regionlist = [] }, at.parser.prototype = { reportorthrowerror: function(t) { if (! (t instanceof yt)) throw t; this.onparsingerror && this.onparsingerror(t) }, parse: function(t) { function e() { for (var t = r.buffer, e = 0; e < t.length && "\r" !== t[e] && "\n" !== t[e];)++e; var i = t.substr(0, e); return "\r" === t[e] && ++e, "\n" === t[e] && ++e, r.buffer = t.substr(e), i } function i(t) { var e = new tt; if (wt(t, function(t, i) { switch (t) { case "id": e.set(t, i); break; case "width": e.percent(t, i); break; case "lines": e.integer(t, i); break; case "regionanchor": case "viewportanchor": var n = i.split(","); if (2 !== n.length) break; var r = new tt; if (r.percent("x", n[0]), r.percent("y", n[1]), !r.has("x") || !r.has("y")) break; e.set(t + "x", r.get("x")), e.set(t + "y", r.get("y")); break; case "scroll": e.alt(t, i, ["up"]) } }, /=/, /\s/), e.has("id")) { var i = new(r.vttjs.vttregion || r.window.vttregion); i.width = e.get("width", 100), i.lines = e.get("lines", 3), i.regionanchorx = e.get("regionanchorx", 0), i.regionanchory = e.get("regionanchory", 100), i.viewportanchorx = e.get("viewportanchorx", 0), i.viewportanchory = e.get("viewportanchory", 100), i.scroll = e.get("scroll", ""), r.onregion && r.onregion(i), r.regionlist.push({ id: e.get("id"), region: i }) } } function n(t) { var e = new tt; wt(t, function(t, i) { switch (t) { case "mpegt": e.integer(t + "s", i); break; case "loca": e.set(t + "l", bt(i)) } }, /[^\d]:/, /,/), r.ontimestampmap && r.ontimestampmap({ mpegts: e.get("mpegts"), local: e.get("local") }) } var r = this; t && (r.buffer += r.decoder.decode(t, { stream: !0 })); try { var s; if ("initial" === r.state) { if (!/\r\n|\n/.test(r.buffer)) return this; s = e(); var o = s.match(/^webvtt([ \t].*)?$/); if (!o || !o[0]) throw new yt(yt.errors.badsignature); r.state = "header" } for (var a = !1; r.buffer;) { if (!/\r\n|\n/.test(r.buffer)) return this; switch (a ? a = !1 : s = e(), r.state) { case "header": /:/.test(s) ? function(t) { t.match(/x-timestamp-map/) ? wt(t, function(t, e) { switch (t) { case "x-timestamp-map": n(e) } }, /=/) : wt(t, function(t, e) { switch (t) { case "region": i(e) } }, /:/) } (s) : s || (r.state = "id"); continue; case "note": s || (r.state = "id"); continue; case "id": if (/^note($|[ \t])/.test(s)) { r.state = "note"; break } if (!s) continue; if (r.cue = new(r.vttjs.vttcue || r.window.vttcue)(0, 0, ""), r.state = "cue", -1 === s.indexof("--\x3e")) { r.cue.id = s; continue } case "cue": try { _t(s, r.cue, r.regionlist) } catch(t) { r.reportorthrowerror(t), r.cue = null, r.state = "badcue"; continue } r.state = "cuetext"; continue; case "cuetext": var l = -1 !== s.indexof("--\x3e"); if (!s || l && (a = !0)) { r.oncue && r.oncue(r.cue), r.cue = null, r.state = "id"; continue } r.cue.text && (r.cue.text += "\n"), r.cue.text += s; continue; case "badcue": s || (r.state = "id"); continue } } } catch(t) { r.reportorthrowerror(t), "cuetext" === r.state && r.cue && r.oncue && r.oncue(r.cue), r.cue = null, r.state = "initial" === r.state ? "badwebvtt": "badcue" } return this }, flush: function() { var t = this; try { if (t.buffer += t.decoder.decode(), (t.cue || "header" === t.state) && (t.buffer += "\n\n", t.parse()), "initial" === t.state) throw new yt(yt.errors.badsignature) } catch(e) { t.reportorthrowerror(e) } return t.onflush && t.onflush(), this } }; var pn = at, mn = "auto", in = { "": !0, lr: !0, rl: !0 }, an = { start: !0, middle: !0, end: !0, left: !0, right: !0 }; zt.prototype.getcueashtml = function() { return webvtt.convertcuetodomtree(window, this.text) }; var jn = zt, dn = { "": !0, up: !0 }, on = lt, zn = t(function(t) { var e = t.exports = { webvtt: pn, vttcue: jn, vttregion: on }; re.vttjs = e, re.webvtt = e.webvtt; var i = e.vttcue, n = e.vttregion, r = re.vttcue, s = re.vttregion; e.shim = function() { re.vttcue = i, re.vttregion = n }, e.restore = function() { re.vttcue = r, re.vttregion = s }, re.vttcue || e.shim() }), nn = function(t) { function e() { var i = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : function() {}; oe(this, e), i.reporttouchactivity = !1; var r = ne(this, t.call(this, null, i, n)); return r.hasstarted_ = !1, r.on("playing", function() { this.hasstarted_ = !0 }), r.on("loadstart", function() { this.hasstarted_ = !1 }), wn.names.foreach(function(t) { var e = wn[t]; i && i[e.gettername] && (r[e.privatename] = i[e.gettername]) }), r.featuresprogressevents || r.manualprogresson(), r.featurestimeupdateevents || r.manualtimeupdateson(), ["text", "audio", "video"].foreach(function(t) { ! 1 === i["native" + t + "tracks"] && (r["featuresnative" + t + "tracks"] = !1) }), !1 === i.nativecaptions || !1 === i.nativetexttracks ? r.featuresnativetexttracks = !1 : !0 !== i.nativecaptions && !0 !== i.nativetexttracks || (r.featuresnativetexttracks = !0), r.featuresnativetexttracks || r.emulatetexttracks(), r.autoremotetexttracks_ = new wn.text.listclass, r.inittracklisteners(), i.nativecontrolsfortouch || r.emittapevents(), r.constructor && (r.name_ = r.constructor.name || "unknown tech"), r } return ze(e, t), e.prototype.manualprogresson = function() { this.on("durationchange", this.ondurationchange), this.manualprogress = !0, this.one("ready", this.trackprogress) }, e.prototype.manualprogressoff = function() { this.manualprogress = !1, this.stoptrackingprogress(), this.off("durationchange", this.ondurationchange) }, e.prototype.trackprogress = function(t) { this.stoptrackingprogress(), this.progressinterval = this.setinterval(ai(this, function() { var t = this.bufferedpercent(); this.bufferedpercent_ !== t && this.trigger("progress"), this.bufferedpercent_ = t, 1 === t && this.stoptrackingprogress() }), 500) }, e.prototype.ondurationchange = function(t) { this.duration_ = this.duration() }, e.prototype.buffered = function() { return it(0, 0) }, e.prototype.bufferedpercent = function() { return nt(this.buffered(), this.duration_) }, e.prototype.stoptrackingprogress = function() { this.clearinterval(this.progressinterval) }, e.prototype.manualtimeupdateson = function() { this.manualtimeupdates = !0, this.on("play", this.trackcurrenttime), this.on("pause", this.stoptrackingcurrenttime) }, e.prototype.manualtimeupdatesoff = function() { this.manualtimeupdates = !1, this.stoptrackingcurrenttime(), this.off("play", this.trackcurrenttime), this.off("pause", this.stoptrackingcurrenttime) }, e.prototype.trackcurrenttime = function() { this.currenttimeinterval && this.stoptrackingcurrenttime(), this.currenttimeinterval = this.setinterval(function() { this.trigger({ type: "timeupdate", target: this, manuallytriggered: !0 }) }, 250) }, e.prototype.stoptrackingcurrenttime = function() { this.clearinterval(this.currenttimeinterval), this.trigger({ type: "timeupdate", target: this, manuallytriggered: !0 }) }, e.prototype.dispose = function() { this.cleartracks(bn.names), this.manualprogress && this.manualprogressoff(), this.manualtimeupdates && this.manualtimeupdatesoff(), t.prototype.dispose.call(this) }, e.prototype.cleartracks = function(t) { var e = this; t = [].concat(t), t.foreach(function(t) { for (var i = e[t + "tracks"]() || [], n = i.length; n--;) { var r = i[n]; "text" === t && e.removeremotetexttrack(r), i.removetrack(r) } }) }, e.prototype.cleanupautotexttracks = function() { for (var t = this.autoremotetexttracks_ || [], e = t.length; e--;) { var i = t[e]; this.removeremotetexttrack(i) } }, e.prototype.reset = function() {}, e.prototype.error = function(t) { return void 0 !== t && (this.error_ = new rt(t), this.trigger("error")), this.error_ }, e.prototype.played = function() { return this.hasstarted_ ? it(0, 0) : it() }, e.prototype.setcurrenttime = function() { this.manualtimeupdates && this.trigger({ type: "timeupdate", target: this, manuallytriggered: !0 }) }, e.prototype.inittracklisteners = function() { var t = this; bn.names.foreach(function(e) { var i = bn[e], n = function() { t.trigger(e + "trackchange") }, r = t[i.gettername](); r.addeventlistener("removetrack", n), r.addeventlistener("addtrack", n), t.on("dispose", function() { r.removeeventlistener("removetrack", n), r.removeeventlistener("addtrack", n) }) }) }, e.prototype.addwebvttscript_ = function() { var t = this; if (!re.webvtt) if (ce.body.contains(this.el())) { if (!this.options_["vtt.js"] && s(zn) && object.keys(zn).length > 0) return void this.trigger("vttjsloaded"); var e = ce.createelement("script"); e.src = this.options_["vtt.js"] || "https://vjs.zencdn.net/vttjs/0.12.4/vtt.min.js", e.onload = function() { t.trigger("vttjsloaded") }, e.onerror = function() { t.trigger("vttjserror") }, this.on("dispose", function() { e.onload = null, e.onerror = null }), re.webvtt = !0, this.el().parentnode.appendchild(e) } else this.ready(this.addwebvttscript_) }, e.prototype.emulatetexttracks = function() { var t = this, e = this.texttracks(), i = this.remotetexttracks(), n = function(t) { return e.addtrack(t.track) }, r = function(t) { return e.removetrack(t.track) }; i.on("addtrack", n), i.on("removetrack", r), this.addwebvttscript_(); var s = function() { return t.trigger("texttrackchange") }, o = function() { s(); for (var t = 0; t < e.length; t++) { var i = e[t]; i.removeeventlistener("cuechange", s), "showing" === i.mode && i.addeventlistener("cuechange", s) } }; o(), e.addeventlistener("change", o), e.addeventlistener("addtrack", o), e.addeventlistener("removetrack", o), this.on("dispose", function() { i.off("addtrack", n), i.off("removetrack", r), e.removeeventlistener("change", o), e.removeeventlistener("addtrack", o), e.removeeventlistener("removetrack", o); for (var t = 0; t < e.length; t++) e[t].removeeventlistener("cuechange", s) }) }, e.prototype.addtexttrack = function(t, e, i) { if (!t) throw new error("texttrack kind is required but was not provided"); return rt(this, t, e, i) }, e.prototype.createremotetexttrack = function(t) { var e = z(t, { tech: this }); return new tn.remotetextel.trackclass(e) }, e.prototype.addremotetexttrack = function() { var t = this, e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, i = arguments[1], n = this.createremotetexttrack(e); return ! 0 !== i && !1 !== i && (ve.warn('calling addremotetexttrack without explicitly setting the "manualcleanup" parameter to `true` is deprecated and default to `false` in future version of video.js'), i = !0), this.remotetexttrackels().addtrackelement_(n), this.remotetexttracks().addtrack(n.track), !0 !== i && this.ready(function() { return t.autoremotetexttracks_.addtrack(n.track) }), n }, e.prototype.removeremotetexttrack = function(t) { var e = this.remotetexttrackels().gettrackelementbytrack_(t); this.remotetexttrackels().removetrackelement_(e), this.remotetexttracks().removetrack(t), this.autoremotetexttracks_.removetrack(t) }, e.prototype.getvideoplaybackquality = function() { return {} }, e.prototype.setposter = function() {}, e.prototype.playsinline = function() {}, e.prototype.setplaysinline = function() {}, e.prototype.canplaytype = function() { return "" }, e.canplaytype = function() { return "" }, e.canplaysource = function(t, i) { return e.canplaytype(t.type) }, e.istech = function(t) { return t.prototype instanceof e || t instanceof e || t === e }, e.registertech = function(t, i) { if (e.techs_ || (e.techs_ = {}), !e.istech(i)) throw new error("tech " + t + " must be a tech"); if (!e.canplaytype) throw new error("techs must have a static canplaytype method on them"); if (!e.canplaysource) throw new error("techs must have a static canplaysource method on them"); return t = q(t), e.techs_[t] = i, "tech" !== t && e.defaulttechorder_.push(t), i }, e.gettech = function(t) { if (t) return t = q(t), e.techs_ && e.techs_[t] ? e.techs_[t] : re && re.videojs && re.videojs[t] ? (ve.warn("the " + t + " tech was added to the videojs object when it should be registered using videojs.registertech(name, tech)"), re.videojs[t]) : void 0 }, e } (bi); wn.names.foreach(function(t) { var e = wn[t]; nn.prototype[e.gettername] = function() { return this[e.privatename] = this[e.privatename] || new e.listclass, this[e.privatename] } }), nn.prototype.featuresvolumecontrol = !0, nn.prototype.featuresfullscreenresize = !1, nn.prototype.featuresplaybackrate = !1, nn.prototype.featuresprogressevents = !1, nn.prototype.featurestimeupdateevents = !1, nn.prototype.featuresnativetexttracks = !1, nn.withsourcehandlers = function(t) { t.registersourcehandler = function(e, i) { var n = t.sourcehandlers; n || (n = t.sourcehandlers = []), void 0 === i && (i = n.length), n.splice(i, 0, e) }, t.canplaytype = function(e) { for (var i = t.sourcehandlers || [], n = void 0, r = 0; r < i.length; r++) if (n = i[r].canplaytype(e)) return n; return "" }, t.selectsourcehandler = function(e, i) { for (var n = t.sourcehandlers || [], r = 0; r < n.length; r++) if (n[r].canhandlesource(e, i)) return n[r]; return null }, t.canplaysource = function(e, i) { var n = t.selectsourcehandler(e, i); return n ? n.canhandlesource(e, i) : "" }, ["seekable", "duration"].foreach(function(t) { var e = this[t]; "function" == typeof e && (this[t] = function() { return this.sourcehandler_ && this.sourcehandler_[t] ? this.sourcehandler_[t].apply(this.sourcehandler_, arguments) : e.apply(this, arguments) }) }, t.prototype), t.prototype.setsource = function(e) { var i = t.selectsourcehandler(e, this.options_); i || (t.nativesourcehandler ? i = t.nativesourcehandler: ve.error("no source hander found for the current source.")), this.disposesourcehandler(), this.off("dispose", this.disposesourcehandler), i !== t.nativesourcehandler && (this.currentsource_ = e), this.sourcehandler_ = i.handlesource(e, this, this.options_), this.on("dispose", this.disposesourcehandler) }, t.prototype.disposesourcehandler = function() { this.currentsource_ && (this.cleartracks(["audio", "video"]), this.currentsource_ = null), this.cleanupautotexttracks(), this.sourcehandler_ && (this.sourcehandler_.dispose && this.sourcehandler_.dispose(), this.sourcehandler_ = null) } }, bi.registercomponent("tech", nn), nn.registertech("tech", nn), nn.defaulttechorder_ = []; var bn = {}, ln = { buffered: 1, currenttime: 1, duration: 1, seekable: 1, played: 1 }, rn = { setcurrenttime: 1 }, hn = function t(e) { if (array.isarray(e)) { var i = []; e.foreach(function(e) { e = t(e), array.isarray(e) ? i = i.concat(e) : r(e) && i.push(e) }), e = i } else e = "string" == typeof e && e.trim() ? [{ src: e }] : r(e) && "string" == typeof e.src && e.src && e.src.trim() ? [e] : []; return e }, fn = function(t) { function e(i, n, r) { oe(this, e); var s = z({ createel: !1 }, n), o = ne(this, t.call(this, i, s, r)); if (n.playeroptions.sources && 0 !== n.playeroptions.sources.length) i.src(n.playeroptions.sources); else for (var a = 0, l = n.playeroptions.techorder; a < l.length; a++) { var c = q(l[a]), h = nn.gettech(c); if (c || (h = bi.getcomponent(c)), h && h.issupported()) { i.loadtech_(c); break } } return o } return ze(e, t), e } (bi); bi.registercomponent("medialoader", fn); var xn = function(t) { function e(i, n) { oe(this, e); var r = ne(this, t.call(this, i, n)); return r.emittapevents(), r.enable(), r } return ze(e, t), e.prototype.createel = function() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "div", i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; i = n({ innerhtml: '', classname: this.buildcssclass(), tabindex: 0 }, i), "button" === e && ve.error("creating a clickablecomponent with an html element of " + e + " is not supported; use a button instead."), r = n({ role: "button", "aria-live": "polite" }, r), this.tabindex_ = i.tabindex; var s = t.prototype.createel.call(this, e, i, r); return this.createcontroltextel(s), s }, e.prototype.createcontroltextel = function(t) { return this.controltextel_ = f("span", { classname: "vjs-control-text" }), t && t.appendchild(this.controltextel_), this.controltext(this.controltext_, t), this.controltextel_ }, e.prototype.controltext = function(t) { var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.el(); if (!t) return this.controltext_ || "need text"; var i = this.localize(t); this.controltext_ = t, m(this.controltextel_, i), this.noniconcontrol || e.setattribute("title", i) }, e.prototype.buildcssclass = function() { return "vjs-control vjs-button " + t.prototype.buildcssclass.call(this) }, e.prototype.enable = function() { this.enabled_ || (this.enabled_ = !0, this.removeclass("vjs-disabled"), this.el_.setattribute("aria-disabled", "false"), void 0 !== this.tabindex_ && this.el_.setattribute("tabindex", this.tabindex_), this.on(["tap", "click"], this.handleclick), this.on("focus", this.handlefocus), this.on("blur", this.handleblur)) }, e.prototype.disable = function() { this.enabled_ = !1, this.addclass("vjs-disabled"), this.el_.setattribute("aria-disabled", "true"), void 0 !== this.tabindex_ && this.el_.removeattribute("tabindex"), this.off(["tap", "click"], this.handleclick), this.off("focus", this.handlefocus), this.off("blur", this.handleblur) }, e.prototype.handleclick = function(t) {}, e.prototype.handlefocus = function(t) { y(ce, "keydown", ai(this, this.handlekeypress)) }, e.prototype.handlekeypress = function(e) { 32 === e.which || 13 === e.which ? (e.preventdefault(), this.trigger("click")) : t.prototype.handlekeypress && t.prototype.handlekeypress.call(this, e) }, e.prototype.handleblur = function(t) { v(ce, "keydown", ai(this, this.handlekeypress)) }, e } (bi); bi.registercomponent("clickablecomponent", xn); var yn = function(t) { function e(i, n) { oe(this, e); var r = ne(this, t.call(this, i, n)); return r.update(), i.on("posterchange", ai(r, r.update)), r } return ze(e, t), e.prototype.dispose = function() { this.player().off("posterchange", this.update), t.prototype.dispose.call(this) }, e.prototype.createel = function() { var t = f("div", { classname: "vjs-poster", tabindex: -1 }); return ae || (this.fallbackimg_ = f("img"), t.appendchild(this.fallbackimg_)), t }, e.prototype.update = function(t) { var e = this.player().poster(); this.setsrc(e), e ? this.show() : this.hide() }, e.prototype.setsrc = function(t) { if (this.fallbackimg_) this.fallbackimg_.src = t; else { var e = ""; t && (e = 'url("' + t + '")'), this.el_.style.backgroundimage = e } }, e.prototype.handleclick = function(t) { this.player_.controls() && (this.player_.paused() ? this.player_.play() : this.player_.pause()) }, e } (xn); bi.registercomponent("posterimage", yn); var vn = { monospace: "monospace", sansserif: "sans-serif", serif: "serif", monospacesansserif: '"andale mono", "lucida console", monospace', monospaceserif: '"courier new", monospace', proportionalsansserif: "sans-serif", proportionalserif: "serif", casual: '"comic sans ms", impact, fantasy', script: '"monotype corsiva", cursive', smallcaps: '"andale mono", "lucida console", monospace, sans-serif' }, wn = function(t) { function e(i, n, r) { oe(this, e); var s = ne(this, t.call(this, i, n, r)); return i.on("loadstart", ai(s, s.toggledisplay)), i.on("texttrackchange", ai(s, s.updatedisplay)), i.on("loadstart", ai(s, s.preselecttrack)), i.ready(ai(s, function() { if (i.tech_ && i.tech_.featuresnativetexttracks) return void this.hide(); i.on("fullscreenchange", ai(this, this.updatedisplay)); for (var t = this.options_.playeroptions.tracks || [], e = 0; e < t.length; e++) this.player_.addremotetexttrack(t[e], !0); this.preselecttrack() })), s } return ze(e, t), e.prototype.preselecttrack = function() { for (var t = { captions: 1, subtitles: 1 }, e = this.player_.texttracks(), i = this.player_.cache_.selectedlanguage, n = void 0, r = void 0, s = void 0, o = 0; o < e.length; o++) { var a = e[o]; i && i.enabled && i.language === a.language ? a.kind === i.kind ? s = a: s || (s = a) : i && !i.enabled ? (s = null, n = null, r = null) : a. default && ("descriptions" !== a.kind || n ? a.kind in t && !r && (r = a) : n = a) } s ? s.mode = "showing": r ? r.mode = "showing": n && (n.mode = "showing") }, e.prototype.toggledisplay = function() { this.player_.tech_ && this.player_.tech_.featuresnativetexttracks ? this.hide() : this.show() }, e.prototype.createel = function() { return t.prototype.createel.call(this, "div", { classname: "vjs-text-track-display" }, { "aria-live": "off", "aria-atomic": "true" }) }, e.prototype.cleardisplay = function() { "function" == typeof re.webvtt && re.webvtt.processcues(re, [], this.el_) }, e.prototype.updatedisplay = function() { var t = this.player_.texttracks(); this.cleardisplay(); for (var e = null, i = null, n = t.length; n--;) { var r = t[n]; "showing" === r.mode && ("descriptions" === r.kind ? e = r: i = r) } i ? ("off" !== this.getattribute("aria-live") && this.setattribute("aria-live", "off"), this.updatefortrack(i)) : e && ("assertive" !== this.getattribute("aria-live") && this.setattribute("aria-live", "assertive"), this.updatefortrack(e)) }, e.prototype.updatefortrack = function(t) { if ("function" == typeof re.webvtt && t.activecues) { for (var e = this.player_.texttracksettings.getvalues(), i = [], n = 0; n < t.activecues.length; n++) i.push(t.activecues[n]); re.webvtt.processcues(re, i, this.el_); for (var r = i.length; r--;) { var s = i[r]; if (s) { var o = s.displaystate; if (e.color && (o.firstchild.style.color = e.color), e.textopacity && ut(o.firstchild, "color", qt(e.color || "#fff", e.textopacity)), e.backgroundcolor && (o.firstchild.style.backgroundcolor = e.backgroundcolor), e.backgroundopacity && ut(o.firstchild, "backgroundcolor", qt(e.backgroundcolor || "#000", e.backgroundopacity)), e.windowcolor && (e.windowopacity ? ut(o, "backgroundcolor", qt(e.windowcolor, e.windowopacity)) : o.style.backgroundcolor = e.windowcolor), e.edgestyle && ("dropshadow" === e.edgestyle ? o.firstchild.style.textshadow = "2px 2px 3px #222, 2px 2px 4px #222, 2px 2px 5px #222": "raised" === e.edgestyle ? o.firstchild.style.textshadow = "1px 1px #222, 2px 2px #222, 3px 3px #222": "depressed" === e.edgestyle ? o.firstchild.style.textshadow = "1px 1px #ccc, 0 1px #ccc, -1px -1px #222, 0 -1px #222": "uniform" === e.edgestyle && (o.firstchild.style.textshadow = "0 0 4px #222, 0 0 4px #222, 0 0 4px #222, 0 0 4px #222")), e.fontpercent && 1 !== e.fontpercent) { var a = re.parsefloat(o.style.fontsize); o.style.fontsize = a * e.fontpercent + "px", o.style.height = "auto", o.style.top = "auto", o.style.bottom = "2px" } e.fontfamily && "default" !== e.fontfamily && ("small-caps" === e.fontfamily ? o.firstchild.style.fontvariant = "small-caps": o.firstchild.style.fontfamily = vn[e.fontfamily]) } } } }, e } (bi); bi.registercomponent("texttrackdisplay", wn); var gn = function(t) { function e() { return oe(this, e), ne(this, t.apply(this, arguments)) } return ze(e, t), e.prototype.createel = function() { return t.prototype.createel.call(this, "div", { classname: "vjs-loading-spinner", dir: "ltr" }) }, e } (bi); bi.registercomponent("loadingspinner", gn); var qn = function(t) { function e() { return oe(this, e), ne(this, t.apply(this, arguments)) } return ze(e, t), e.prototype.createel = function(t) { var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; t = "button", e = n({ innerhtml: '', classname: this.buildcssclass() }, e), i = n({ type: "button", "aria-live": "polite" }, i); var r = bi.prototype.createel.call(this, t, e, i); return this.createcontroltextel(r), r }, e.prototype.addchild = function(t) { var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, i = this.constructor.name; return ve.warn("adding an actionable (user controllable) child to a button (" + i + ") is not supported; use a clickablecomponent instead."), bi.prototype.addchild.call(this, t, e) }, e.prototype.enable = function() { t.prototype.enable.call(this), this.el_.removeattribute("disabled") }, e.prototype.disable = function() { t.prototype.disable.call(this), this.el_.setattribute("disabled", "disabled") }, e.prototype.handlekeypress = function(e) { 32 !== e.which && 13 !== e.which && t.prototype.handlekeypress.call(this, e) }, e } (xn); bi.registercomponent("button", qn); var un = function(t) { function e(i, n) { oe(this, e); var r = ne(this, t.call(this, i, n)); return r.mouseused_ = !1, r.on("mousedown", r.handlemousedown), r } return ze(e, t), e.prototype.buildcssclass = function() { return "vjs-big-play-button" }, e.prototype.handleclick = function(t) { var e = this.player_.play(); if (! (this.mouseused_ && t.clientx && t.clienty)) { var i = this.player_.getchild("controlbar"), n = i && i.getchild("playtoggle"); if (!n) return void this.player_.focus(); var r = function() { return n.focus() }; if (e && e.then) { var s = function() {}; e.then(r, s) } else this.settimeout(r, 1) } }, e.prototype.handlekeypress = function(e) { this.mouseused_ = !1, t.prototype.handlekeypress.call(this, e) }, e.prototype.handlemousedown = function(t) { this.mouseused_ = !0 }, e } (qn); un.prototype.controltext_ = "play video", bi.registercomponent("bigplaybutton", un); var kn = function(t) { function e(i, n) { oe(this, e); var r = ne(this, t.call(this, i, n)); return r.controltext(n && n.controltext || r.localize("close")), r } return ze(e, t), e.prototype.buildcssclass = function() { return "vjs-close-button " + t.prototype.buildcssclass.call(this) }, e.prototype.handleclick = function(t) { this.trigger({ type: "close", bubbles: !1 }) }, e } (qn); bi.registercomponent("closebutton", kn); var qn = function(t) { function e(i, n) { oe(this, e); var r = ne(this, t.call(this, i, n)); return r.on(i, "play", r.handleplay), r.on(i, "pause", r.handlepause), r.on(i, "ended", r.handleended), r } return ze(e, t), e.prototype.buildcssclass = function() { return "vjs-play-control " + t.prototype.buildcssclass.call(this) }, e.prototype.handleclick = function(t) { this.player_.paused() ? this.player_.play() : this.player_.pause() }, e.prototype.handleplay = function(t) { this.removeclass("vjs-ended"), this.removeclass("vjs-paused"), this.addclass("vjs-playing"), this.controltext("pause") }, e.prototype.handlepause = function(t) { this.removeclass("vjs-playing"), this.addclass("vjs-paused"), this.controltext("play") }, e.prototype.handleended = function(t) { this.removeclass("vjs-playing"), this.addclass("vjs-ended"), this.controltext("replay") }, e } (qn); qn.prototype.controltext_ = "play", bi.registercomponent("playtoggle", qn); var $n = function(t) { function e(i, n) { oe(this, e); var r = ne(this, t.call(this, i, n)); return r.throttledupdatecontent = li(ai(r, r.updatecontent), 25), r.on(i, "timeupdate", r.throttledupdatecontent), r } return ze(e, t), e.prototype.createel = function() { var e = t.prototype.createel.call(this, "div", { classname: "vjs-current-time vjs-time-control vjs-control" }); return this.contentel_ = f("div", { classname: "vjs-current-time-display" }, { "aria-live": "off" }, f("span", { classname: "vjs-control-text", textcontent: this.localize("current time") })), this.updatetextnode_(), e.appendchild(this.contentel_), e }, e.prototype.updatetextnode_ = function() { this.textnode_ && this.contentel_.removechild(this.textnode_), this.textnode_ = ce.createtextnode(" " + (this.formattedtime_ || "0:00")), this.contentel_.appendchild(this.textnode_) }, e.prototype.updatecontent = function(t) { var e = this.player_.scrubbing() ? this.player_.getcache().currenttime: this.player_.currenttime(), i = kt(e, this.player_.duration()); i !== this.formattedtime_ && (this.formattedtime_ = i, this.requestanimationframe(this.updatetextnode_)) }, e } (bi); bi.registercomponent("currenttimedisplay", $n); var zn = function(t) { function e(i, n) { oe(this, e); var r = ne(this, t.call(this, i, n)); return r.throttledupdatecontent = li(ai(r, r.updatecontent), 25), r.on(i, ["durationchange", "loadedmetadata", "timeupdate"], r.throttledupdatecontent), r } return ze(e, t), e.prototype.createel = function() { var e = t.prototype.createel.call(this, "div", { classname: "vjs-duration vjs-time-control vjs-control" }); return this.contentel_ = f("div", { classname: "vjs-duration-display" }, { "aria-live": "off" }, f("span", { classname: "vjs-control-text", textcontent: this.localize("duration time") })), this.updatetextnode_(), e.appendchild(this.contentel_), e }, e.prototype.updatetextnode_ = function() { this.textnode_ && this.contentel_.removechild(this.textnode_), this.textnode_ = ce.createtextnode(" " + (this.formattedtime_ || "0:00")), this.contentel_.appendchild(this.textnode_) }, e.prototype.updatecontent = function(t) { var e = this.player_.duration(); e && this.duration_ !== e && (this.duration_ = e, this.formattedtime_ = kt(e), this.requestanimationframe(this.updatetextnode_)) }, e } (bi); bi.registercomponent("durationdisplay", zn); var jn = function(t) { function e() { return oe(this, e), ne(this, t.apply(this, arguments)) } return ze(e, t), e.prototype.createel = function() { return t.prototype.createel.call(this, "div", { classname: "vjs-time-control vjs-time-divider", innerhtml: "
    /
    " }) }, e } (bi); bi.registercomponent("timedivider", jn); var tr = function(t) { function e(i, n) { oe(this, e); var r = ne(this, t.call(this, i, n)); return r.throttledupdatecontent = li(ai(r, r.updatecontent), 25), r.on(i, ["timeupdate", "durationchange"], r.throttledupdatecontent), r } return ze(e, t), e.prototype.createel = function() { var e = t.prototype.createel.call(this, "div", { classname: "vjs-remaining-time vjs-time-control vjs-control" }); return this.contentel_ = f("div", { classname: "vjs-remaining-time-display" }, { "aria-live": "off" }, f("span", { classname: "vjs-control-text", textcontent: this.localize("remaining time") })), this.updatetextnode_(), e.appendchild(this.contentel_), e }, e.prototype.updatetextnode_ = function() { this.textnode_ && this.contentel_.removechild(this.textnode_), this.textnode_ = ce.createtextnode(" -" + (this.formattedtime_ || "0:00")), this.contentel_.appendchild(this.textnode_) }, e.prototype.updatecontent = function(t) { if (this.player_.duration()) { var e = kt(this.player_.remainingtime()); e !== this.formattedtime_ && (this.formattedtime_ = e, this.requestanimationframe(this.updatetextnode_)) } }, e } (bi); bi.registercomponent("remainingtimedisplay", tr); var er = function(t) { function e(i, n) { oe(this, e); var r = ne(this, t.call(this, i, n)); return r.updateshowing(), r.on(r.player(), "durationchange", r.updateshowing), r } return ze(e, t), e.prototype.createel = function() { var e = t.prototype.createel.call(this, "div", { classname: "vjs-live-control vjs-control" }); return this.contentel_ = f("div", { classname: "vjs-live-display", innerhtml: '' + this.localize("stream type") + "" + this.localize("live") }, { "aria-live": "off" }), e.appendchild(this.contentel_), e }, e.prototype.updateshowing = function(t) { this.player().duration() === 1 / 0 ? this.show() : this.hide() }, e } (bi); bi.registercomponent("livedisplay", er); var ir = function(t) { function e(i, n) { oe(this, e); var r = ne(this, t.call(this, i, n)); return r.bar = r.getchild(r.options_.barname), r.vertical( !! r.options_.vertical), r.on("mousedown", r.handlemousedown), r.on("touchstart", r.handlemousedown), r.on("focus", r.handlefocus), r.on("blur", r.handleblur), r.on("click", r.handleclick), r.on(i, "controlsvisible", r.update), r.playerevent && r.on(i, r.playerevent, r.update), r } return ze(e, t), e.prototype.createel = function(e) { var i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; return i.classname = i.classname + " vjs-slider", i = n({ tabindex: 0 }, i), r = n({ role: "slider", "aria-valuenow": 0, "aria-valuemin": 0, "aria-valuemax": 100, tabindex: 0 }, r), t.prototype.createel.call(this, e, i, r) }, e.prototype.handlemousedown = function(t) { var e = this.bar.el_.ownerdocument; t.preventdefault(), k(), this.addclass("vjs-sliding"), this.trigger("slideractive"), this.on(e, "mousemove", this.handlemousemove), this.on(e, "mouseup", this.handlemouseup), this.on(e, "touchmove", this.handlemousemove), this.on(e, "touchend", this.handlemouseup), this.handlemousemove(t) }, e.prototype.handlemousemove = function(t) {}, e.prototype.handlemouseup = function() { var t = this.bar.el_.ownerdocument; e(), this.removeclass("vjs-sliding"), this.trigger("sliderinactive"), this.off(t, "mousemove", this.handlemousemove), this.off(t, "mouseup", this.handlemouseup), this.off(t, "touchmove", this.handlemousemove), this.off(t, "touchend", this.handlemouseup), this.update() }, e.prototype.update = function() { if (this.el_) { var t = this.getpercent(), e = this.bar; if (e) { ("number" != typeof t || t !== t || t < 0 || t === 1 / 0) && (t = 0); var i = (100 * t).tofixed(2) + "%", n = e.el().style; return this.vertical() ? n.height = i: n.width = i, t } } }, e.prototype.calculatedistance = function(t) { var e = i(this.el_, t); return this.vertical() ? e.y: e.x }, e.prototype.handlefocus = function() { this.on(this.bar.el_.ownerdocument, "keydown", this.handlekeypress) }, e.prototype.handlekeypress = function(t) { 37 === t.which || 40 === t.which ? (t.preventdefault(), this.stepback()) : 38 !== t.which && 39 !== t.which || (t.preventdefault(), this.stepforward()) }, e.prototype.handleblur = function() { this.off(this.bar.el_.ownerdocument, "keydown", this.handlekeypress) }, e.prototype.handleclick = function(t) { t.stopimmediatepropagation(), t.preventdefault() }, e.prototype.vertical = function(t) { if (void 0 === t) return this.vertical_ || !1; this.vertical_ = !!t, this.vertical_ ? this.addclass("vjs-slider-vertical") : this.addclass("vjs-slider-horizontal") }, e } (bi); bi.registercomponent("slider", ir); var nr = function(t) { function e(i, n) { oe(this, e); var r = ne(this, t.call(this, i, n)); return r.partels_ = [], r.on(i, "progress", r.update), r } return ze(e, t), e.prototype.createel = function() { return t.prototype.createel.call(this, "div", { classname: "vjs-load-progress", innerhtml: '' + this.localize("loaded") + ": 0%" }) }, e.prototype.update = function(t) { var e = this.player_.buffered(), i = this.player_.duration(), n = this.player_.bufferedend(), r = this.partels_, s = function(t, e) { var i = t / e || 0; return 100 * (i >= 1 ? 1 : i) + "%" }; this.el_.style.width = s(n, i); for (var o = 0; o < e.length; o++) { var a = e.start(o), l = e.end(o), c = r[o]; c || (c = this.el_.appendchild(f()), r[o] = c), c.style.left = s(a, n), c.style.width = s(l - a, n) } for (var h = r.length; h > e.length; h--) this.el_.removechild(r[h - 1]); r.length = e.length }, e } (bi); bi.registercomponent("loadprogressbar", nr); var rr = function(t) { function e() { return oe(this, e), ne(this, t.apply(this, arguments)) } return ze(e, t), e.prototype.createel = function() { return t.prototype.createel.call(this, "div", { classname: "vjs-time-tooltip" }) }, e.prototype.update = function(t, e, i) { var n = p(this.el_), r = p(this.player_.el()), s = t.width * e; if (r && n) { var o = t.left - r.left + s, a = t.width - s + (r.right - t.right), l = n.width / 2; o < l ? l += l - o: a < l && (l = a), l < 0 ? l = 0 : l > n.width && (l = n.width), this.el_.style.right = "-" + l + "px", m(this.el_, i) } }, e } (bi); bi.registercomponent("timetooltip", rr); var sr = function(t) { function e() { return oe(this, e), ne(this, t.apply(this, arguments)) } return ze(e, t), e.prototype.createel = function() { return t.prototype.createel.call(this, "div", { classname: "vjs-play-progress vjs-slider-bar", innerhtml: '' + this.localize("progress") + ": 0%" }) }, e.prototype.update = function(t, e) { var i = this; this.rafid_ && this.cancelanimationframe(this.rafid_), this.rafid_ = this.requestanimationframe(function() { var n = i.player_.scrubbing() ? i.player_.getcache().currenttime: i.player_.currenttime(), r = kt(n, i.player_.duration()), s = i.getchild("timetooltip"); s && s.update(t, e, r) }) }, e } (bi); sr.prototype.options_ = { children: [] }, ee && !(ee > 8) || ve || ye || sr.prototype.options_.children.push("timetooltip"), bi.registercomponent("playprogressbar", sr); var or = function(t) { function e(i, n) { oe(this, e); var r = ne(this, t.call(this, i, n)); return r.update = li(ai(r, r.update), 25), r } return ze(e, t), e.prototype.createel = function() { return t.prototype.createel.call(this, "div", { classname: "vjs-mouse-display" }) }, e.prototype.update = function(t, e) { var i = this; this.rafid_ && this.cancelanimationframe(this.rafid_), this.rafid_ = this.requestanimationframe(function() { var n = i.player_.duration(), r = kt(e * n, n); i.el_.style.left = t.width * e + "px", i.getchild("timetooltip").update(t, e, r) }) }, e } (bi); or.prototype.options_ = { children: ["timetooltip"] }, bi.registercomponent("mousetimedisplay", or); var ar = function(t) { function e(i, n) { oe(this, e); var r = ne(this, t.call(this, i, n)); return r.update = li(ai(r, r.update), 50), r.on(i, ["timeupdate", "ended"], r.update), r } return ze(e, t), e.prototype.createel = function() { return t.prototype.createel.call(this, "div", { classname: "vjs-progress-holder" }, { "aria-label": this.localize("progress bar") }) }, e.prototype.update = function() { var e = t.prototype.update.call(this), i = this.player_.duration(), n = this.player_.scrubbing() ? this.player_.getcache().currenttime: this.player_.currenttime(); return this.el_.setattribute("aria-valuenow", (100 * e).tofixed(2)), this.el_.setattribute("aria-valuetext", this.localize("progress bar timing: currenttime={1} duration={2}", [kt(n, i), kt(i, i)], "{1} of {2}")), this.bar.update(p(this.el_), e), e }, e.prototype.getpercent = function() { var t = this.player_.scrubbing() ? this.player_.getcache().currenttime: this.player_.currenttime(), e = t / this.player_.duration(); return e >= 1 ? 1 : e }, e.prototype.handlemousedown = function(e) { this.player_.scrubbing(!0), this.videowasplaying = !this.player_.paused(), this.player_.pause(), t.prototype.handlemousedown.call(this, e) }, e.prototype.handlemousemove = function(t) { var e = this.calculatedistance(t) * this.player_.duration(); e === this.player_.duration() && (e -= .1), this.player_.currenttime(e) }, e.prototype.handlemouseup = function(e) { t.prototype.handlemouseup.call(this, e), this.player_.scrubbing(!1), this.videowasplaying && this.player_.play() }, e.prototype.stepforward = function() { this.player_.currenttime(this.player_.currenttime() + 5) }, e.prototype.stepback = function() { this.player_.currenttime(this.player_.currenttime() - 5) }, e.prototype.handleaction = function(t) { this.player_.paused() ? this.player_.play() : this.player_.pause() }, e.prototype.handlekeypress = function(e) { 32 === e.which || 13 === e.which ? (e.preventdefault(), this.handleaction(e)) : t.prototype.handlekeypress && t.prototype.handlekeypress.call(this, e) }, e } (ir); ar.prototype.options_ = { children: ["loadprogressbar", "playprogressbar"], barname: "playprogressbar" }, ee && !(ee > 8) || ve || ye || ar.prototype.options_.children.splice(1, 0, "mousetimedisplay"), ar.prototype.playerevent = "timeupdate", bi.registercomponent("seekbar", ar); var lr = function(t) { function e(i, n) { oe(this, e); var r = ne(this, t.call(this, i, n)); return r.handlemousemove = li(ai(r, r.handlemousemove), 25), r.on(r.el_, "mousemove", r.handlemousemove), r.throttledhandlemouseseek = li(ai(r, r.handlemouseseek), 25), r.on(["mousedown", "touchstart"], r.handlemousedown), r } return ze(e, t), e.prototype.createel = function() { return t.prototype.createel.call(this, "div", { classname: "vjs-progress-control vjs-control" }) }, e.prototype.handlemousemove = function(t) { var e = this.getchild("seekbar"), i = e.getchild("mousetimedisplay"), n = e.el(), r = p(n), s = i(n, t).x; s > 1 ? s = 1 : s < 0 && (s = 0), i && i.update(r, s) }, e.prototype.handlemouseseek = function(t) { this.getchild("seekbar").handlemousemove(t) }, e.prototype.handlemousedown = function(t) { var e = this.el_.ownerdocument; this.on(e, "mousemove", this.throttledhandlemouseseek), this.on(e, "touchmove", this.throttledhandlemouseseek), this.on(e, "mouseup", this.handlemouseup), this.on(e, "touchend", this.handlemouseup) }, e.prototype.handlemouseup = function(t) { var e = this.el_.ownerdocument; this.off(e, "mousemove", this.throttledhandlemouseseek), this.off(e, "touchmove", this.throttledhandlemouseseek), this.off(e, "mouseup", this.handlemouseup), this.off(e, "touchend", this.handlemouseup) }, e } (bi); lr.prototype.options_ = { children: ["seekbar"] }, bi.registercomponent("progresscontrol", lr); var cr = function(t) { function e(i, n) { oe(this, e); var r = ne(this, t.call(this, i, n)); return r.on(i, "fullscreenchange", r.handlefullscreenchange), r } return ze(e, t), e.prototype.buildcssclass = function() { return "vjs-fullscreen-control " + t.prototype.buildcssclass.call(this) }, e.prototype.handlefullscreenchange = function(t) { this.player_.isfullscreen() ? this.controltext("non-fullscreen") : this.controltext("fullscreen") }, e.prototype.handleclick = function(t) { this.player_.isfullscreen() ? this.player_.exitfullscreen() : this.player_.requestfullscreen() }, e } (qn); cr.prototype.controltext_ = "fullscreen", bi.registercomponent("fullscreentoggle", cr); var hr = function(t, e) { e.tech_ && !e.tech_.featuresvolumecontrol && t.addclass("vjs-hidden"), t.on(e, "loadstart", function() { e.tech_.featuresvolumecontrol ? t.removeclass("vjs-hidden") : t.addclass("vjs-hidden") }) }, pr = function(t) { function e() { return oe(this, e), ne(this, t.apply(this, arguments)) } return ze(e, t), e.prototype.createel = function() { return t.prototype.createel.call(this, "div", { classname: "vjs-volume-level", innerhtml: '' }) }, e } (bi); bi.registercomponent("volumelevel", pr); var ur = function(t) { function e(i, n) { oe(this, e); var r = ne(this, t.call(this, i, n)); return r.on("slideractive", r.updatelastvolume_), r.on(i, "volumechange", r.updateariaattributes), i.ready(function() { return r.updateariaattributes() }), r } return ze(e, t), e.prototype.createel = function() { return t.prototype.createel.call(this, "div", { classname: "vjs-volume-bar vjs-slider-bar" }, { "aria-label": this.localize("volume level"), "aria-live": "polite" }) }, e.prototype.handlemousemove = function(t) { this.checkmuted(), this.player_.volume(this.calculatedistance(t)) }, e.prototype.checkmuted = function() { this.player_.muted() && this.player_.muted(!1) }, e.prototype.getpercent = function() { return this.player_.muted() ? 0 : this.player_.volume() }, e.prototype.stepforward = function() { this.checkmuted(), this.player_.volume(this.player_.volume() + .1) }, e.prototype.stepback = function() { this.checkmuted(), this.player_.volume(this.player_.volume() - .1) }, e.prototype.updateariaattributes = function(t) { var e = this.player_.muted() ? 0 : this.volumeaspercentage_(); this.el_.setattribute("aria-valuenow", e), this.el_.setattribute("aria-valuetext", e + "%") }, e.prototype.volumeaspercentage_ = function() { return math.round(100 * this.player_.volume()) }, e.prototype.updatelastvolume_ = function() { var t = this, e = this.player_.volume(); this.one("sliderinactive", function() { 0 === t.player_.volume() && t.player_.lastvolume_(e) }) }, e } (ir); ur.prototype.options_ = { children: ["volumelevel"], barname: "volumelevel" }, ur.prototype.playerevent = "volumechange", bi.registercomponent("volumebar", ur); var dr = function(t) { function e(i) { var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; oe(this, e), n.vertical = n.vertical || !1, (void 0 === n.volumebar || s(n.volumebar)) && (n.volumebar = n.volumebar || {}, n.volumebar.vertical = n.vertical); var r = ne(this, t.call(this, i, n)); return hr(r, i), r.throttledhandlemousemove = li(ai(r, r.handlemousemove), 25), r.on("mousedown", r.handlemousedown), r.on("touchstart", r.handlemousedown), r.on(r.volumebar, ["focus", "slideractive"], function() { r.volumebar.addclass("vjs-slider-active"), r.addclass("vjs-slider-active"), r.trigger("slideractive") }), r.on(r.volumebar, ["blur", "sliderinactive"], function() { r.volumebar.removeclass("vjs-slider-active"), r.removeclass("vjs-slider-active"), r.trigger("sliderinactive") }), r } return ze(e, t), e.prototype.createel = function() { var e = "vjs-volume-horizontal"; return this.options_.vertical && (e = "vjs-volume-vertical"), t.prototype.createel.call(this, "div", { classname: "vjs-volume-control vjs-control " + e }) }, e.prototype.handlemousedown = function(t) { var e = this.el_.ownerdocument; this.on(e, "mousemove", this.throttledhandlemousemove), this.on(e, "touchmove", this.throttledhandlemousemove), this.on(e, "mouseup", this.handlemouseup), this.on(e, "touchend", this.handlemouseup) }, e.prototype.handlemouseup = function(t) { var e = this.el_.ownerdocument; this.off(e, "mousemove", this.throttledhandlemousemove), this.off(e, "touchmove", this.throttledhandlemousemove), this.off(e, "mouseup", this.handlemouseup), this.off(e, "touchend", this.handlemouseup) }, e.prototype.handlemousemove = function(t) { this.volumebar.handlemousemove(t) }, e } (bi); dr.prototype.options_ = { children: ["volumebar"] }, bi.registercomponent("volumecontrol", dr); var fr = function(t) { function e(i, n) { oe(this, e); var r = ne(this, t.call(this, i, n)); return hr(r, i), r.on(i, ["loadstart", "volumechange"], r.update), r } return ze(e, t), e.prototype.buildcssclass = function() { return "vjs-mute-control " + t.prototype.buildcssclass.call(this) }, e.prototype.handleclick = function(t) { var e = this.player_.volume(), i = this.player_.lastvolume_(); if (0 === e) { var n = i < .1 ? .1 : i; this.player_.volume(n), this.player_.muted(!1) } else this.player_.muted(!this.player_.muted()) }, e.prototype.update = function(t) { this.updateicon_(), this.updatecontroltext_() }, e.prototype.updateicon_ = function() { var t = this.player_.volume(), e = 3; 0 === t || this.player_.muted() ? e = 0 : t < .33 ? e = 1 : t < .67 && (e = 2); for (var i = 0; i < 4; i++) b(this.el_, "vjs-vol-" + i); y(this.el_, "vjs-vol-" + e) }, e.prototype.updatecontroltext_ = function() { var t = this.player_.muted() || 0 === this.player_.volume(), e = t ? "unmute": "mute"; this.controltext() !== e && this.controltext(e) }, e } (qn); fr.prototype.controltext_ = "mute", bi.registercomponent("mutetoggle", fr); var mr = function(t) { function e(i) { var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; oe(this, e), void 0 !== n.inline ? n.inline = n.inline: n.inline = !0, (void 0 === n.volumecontrol || s(n.volumecontrol)) && (n.volumecontrol = n.volumecontrol || {}, n.volumecontrol.vertical = !n.inline); var r = ne(this, t.call(this, i, n)); return hr(r, i), r.on(r.volumecontrol, ["slideractive"], r.slideractive_), r.on(r.mutetoggle, "focus", r.slideractive_), r.on(r.volumecontrol, ["sliderinactive"], r.sliderinactive_), r.on(r.mutetoggle, "blur", r.sliderinactive_), r } return ze(e, t), e.prototype.slideractive_ = function() { this.addclass("vjs-slider-active") }, e.prototype.sliderinactive_ = function() { this.removeclass("vjs-slider-active") }, e.prototype.createel = function() { var e = "vjs-volume-panel-horizontal"; return this.options_.inline || (e = "vjs-volume-panel-vertical"), t.prototype.createel.call(this, "div", { classname: "vjs-volume-panel vjs-control " + e }) }, e } (bi); mr.prototype.options_ = { children: ["mutetoggle", "volumecontrol"] }, bi.registercomponent("volumepanel", mr); var vr = function(t) { function e(i, n) { oe(this, e); var r = ne(this, t.call(this, i, n)); return n && (r.menubutton_ = n.menubutton), r.focusedchild_ = -1, r.on("keydown", r.handlekeypress), r } return ze(e, t), e.prototype.additem = function(t) { this.addchild(t), t.on("click", ai(this, function(e) { this.menubutton_ && (this.menubutton_.unpressbutton(), "captionsettingsmenuitem" !== t.name() && this.menubutton_.focus()) })) }, e.prototype.createel = function() { var e = this.options_.contenteltype || "ul"; this.contentel_ = f(e, { classname: "vjs-menu-content" }), this.contentel_.setattribute("role", "menu"); var i = t.prototype.createel.call(this, "div", { append: this.contentel_, classname: "vjs-menu" }); return i.appendchild(this.contentel_), y(i, "click", function(t) { t.preventdefault(), t.stopimmediatepropagation() }), i }, e.prototype.handlekeypress = function(t) { 37 === t.which || 40 === t.which ? (t.preventdefault(), this.stepforward()) : 38 !== t.which && 39 !== t.which || (t.preventdefault(), this.stepback()) }, e.prototype.stepforward = function() { var t = 0; void 0 !== this.focusedchild_ && (t = this.focusedchild_ + 1), this.focus(t) }, e.prototype.stepback = function() { var t = 0; void 0 !== this.focusedchild_ && (t = this.focusedchild_ - 1), this.focus(t) }, e.prototype.focus = function() { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0, e = this.children().slice(); e.length && e[0].classname && /vjs-menu-title/.test(e[0].classname) && e.shift(), e.length > 0 && (t < 0 ? t = 0 : t >= e.length && (t = e.length - 1), this.focusedchild_ = t, e[t].el_.focus()) }, e } (bi); bi.registercomponent("menu", vr); var gr = function(t) { function e(i) { var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; oe(this, e); var r = ne(this, t.call(this, i, n)); r.menubutton_ = new qn(i, n), r.menubutton_.controltext(r.controltext_), r.menubutton_.el_.setattribute("aria-haspopup", "true"); var s = qn.prototype.buildcssclass(); return r.menubutton_.el_.classname = r.buildcssclass() + " " + s, r.menubutton_.removeclass("vjs-control"), r.addchild(r.menubutton_), r.update(), r.enabled_ = !0, r.on(r.menubutton_, "tap", r.handleclick), r.on(r.menubutton_, "click", r.handleclick), r.on(r.menubutton_, "focus", r.handlefocus), r.on(r.menubutton_, "blur", r.handleblur), r.on("keydown", r.handlesubmenukeypress), r } return ze(e, t), e.prototype.update = function() { var t = this.createmenu(); this.menu && this.removechild(this.menu), this.menu = t, this.addchild(t), this.buttonpressed_ = !1, this.menubutton_.el_.setattribute("aria-expanded", "false"), this.items && this.items.length <= this.hidethreshold_ ? this.hide() : this.show() }, e.prototype.createmenu = function() { var t = new vr(this.player_, { menubutton: this }); if (this.hidethreshold_ = 0, this.options_.title) { var e = f("li", { classname: "vjs-menu-title", innerhtml: q(this.options_.title), tabindex: -1 }); this.hidethreshold_ += 1, t.children_.unshift(e), v(e, t.contentel()) } if (this.items = this.createitems(), this.items) for (var i = 0; i < this.items.length; i++) t.additem(this.items[i]); return t }, e.prototype.createitems = function() {}, e.prototype.createel = function() { return t.prototype.createel.call(this, "div", { classname: this.buildwrappercssclass() }, {}) }, e.prototype.buildwrappercssclass = function() { var e = "vjs-menu-button"; return ! 0 === this.options_.inline ? e += "-inline": e += "-popup", "vjs-menu-button " + e + " " + qn.prototype.buildcssclass() + " " + t.prototype.buildcssclass.call(this) }, e.prototype.buildcssclass = function() { var e = "vjs-menu-button"; return ! 0 === this.options_.inline ? e += "-inline": e += "-popup", "vjs-menu-button " + e + " " + t.prototype.buildcssclass.call(this) }, e.prototype.controltext = function(t) { var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.menubutton_.el(); return this.menubutton_.controltext(t, e) }, e.prototype.handleclick = function(t) { this.one(this.menu.contentel(), "mouseleave", ai(this, function(t) { this.unpressbutton(), this.el_.blur() })), this.buttonpressed_ ? this.unpressbutton() : this.pressbutton() }, e.prototype.focus = function() { this.menubutton_.focus() }, e.prototype.blur = function() { this.menubutton_.blur() }, e.prototype.handlefocus = function() { y(ce, "keydown", ai(this, this.handlekeypress)) }, e.prototype.handleblur = function() { v(ce, "keydown", ai(this, this.handlekeypress)) }, e.prototype.handlekeypress = function(t) { 27 === t.which || 9 === t.which ? (this.buttonpressed_ && this.unpressbutton(), 9 !== t.which && (t.preventdefault(), this.menubutton_.el_.focus())) : 38 !== t.which && 40 !== t.which || this.buttonpressed_ || (this.pressbutton(), t.preventdefault()) }, e.prototype.handlesubmenukeypress = function(t) { 27 !== t.which && 9 !== t.which || (this.buttonpressed_ && this.unpressbutton(), 9 !== t.which && (t.preventdefault(), this.menubutton_.el_.focus())) }, e.prototype.pressbutton = function() { this.enabled_ && (this.buttonpressed_ = !0, this.menu.lockshowing(), this.menubutton_.el_.setattribute("aria-expanded", "true"), this.menu.focus()) }, e.prototype.unpressbutton = function() { this.enabled_ && (this.buttonpressed_ = !1, this.menu.unlockshowing(), this.menubutton_.el_.setattribute("aria-expanded", "false")) }, e.prototype.disable = function() { this.unpressbutton(), this.enabled_ = !1, this.addclass("vjs-disabled"), this.menubutton_.disable() }, e.prototype.enable = function() { this.enabled_ = !0, this.removeclass("vjs-disabled"), this.menubutton_.enable() }, e } (bi); bi.registercomponent("menubutton", gr); var yr = function(t) { function e(i, n) { oe(this, e); var r = n.tracks, s = ne(this, t.call(this, i, n)); if (s.items.length <= 1 && s.hide(), !r) return ne(s); var o = ai(s, s.update); return r.addeventlistener("removetrack", o), r.addeventlistener("addtrack", o), s.player_.on("ready", o), s.player_.on("dispose", function() { r.removeeventlistener("removetrack", o), r.removeeventlistener("addtrack", o) }), s } return ze(e, t), e } (gr); bi.registercomponent("trackbutton", yr); var br = function(t) { function e(i, n) { oe(this, e); var r = ne(this, t.call(this, i, n)); return r.selectable = n.selectable, r.selected(n.selected), r.selectable ? r.el_.setattribute("role", "menuitemcheckbox") : r.el_.setattribute("role", "menuitem"), r } return ze(e, t), e.prototype.createel = function(e, i, r) { return this.noniconcontrol = !0, t.prototype.createel.call(this, "li", n({ classname: "vjs-menu-item", innerhtml: '' + this.localize(this.options_.label) + "", tabindex: -1 }, i), r) }, e.prototype.handleclick = function(t) { this.selected(!0) }, e.prototype.selected = function(t) { this.selectable && (t ? (this.addclass("vjs-selected"), this.el_.setattribute("aria-checked", "true"), this.controltext(", selected")) : (this.removeclass("vjs-selected"), this.el_.setattribute("aria-checked", "false"), this.controltext(" "))) }, e } (xn); bi.registercomponent("menuitem", br); var tr = function(t) { function e(i, n) { oe(this, e); var r = n.track, s = i.texttracks(); n.label = r.label || r.language || "unknown", n.selected = "showing" === r.mode; var o = ne(this, t.call(this, i, n)); o.track = r; var a = ai(o, o.handletrackschange), l = ai(o, o.handleselectedlanguagechange); if (i.on(["loadstart", "texttrackchange"], a), s.addeventlistener("change", a), s.addeventlistener("selectedlanguagechange", l), o.on("dispose", function() { s.removeeventlistener("change", a), s.removeeventlistener("selectedlanguagechange", l) }), void 0 === s.onchange) { var c = void 0; o.on(["tap", "click"], function() { if ("object" !== de(re.event)) try { c = new re.event("change") } catch(t) {} c || (c = ce.createevent("event"), c.initevent("change", !0, !0)), s.dispatchevent(c) }) } return o } return ze(e, t), e.prototype.handleclick = function(e) { var i = this.track.kind, n = this.track.kinds, r = this.player_.texttracks(); if (n || (n = [i]), t.prototype.handleclick.call(this, e), r) for (var s = 0; s < r.length; s++) { var o = r[s]; o === this.track && n.indexof(o.kind) > -1 ? "showing" !== o.mode && (o.mode = "showing") : "disabled" !== o.mode && (o.mode = "disabled") } }, e.prototype.handletrackschange = function(t) { this.selected("showing" === this.track.mode) }, e.prototype.handleselectedlanguagechange = function(t) { if ("showing" === this.track.mode) { var e = this.player_.cache_.selectedlanguage; if (e && e.enabled && e.language === this.track.language && e.kind !== this.track.kind) return; this.player_.cache_.selectedlanguage = { enabled: !0, language: this.track.language, kind: this.track.kind } } }, e } (br); bi.registercomponent("texttrackmenuitem", tr); var wr = function(t) { function e(i, n) { oe(this, e), n.track = { player: i, kind: n.kind, kinds: n.kinds, default: !1, mode: "disabled" }, n.kinds || (n.kinds = [n.kind]), n.label ? n.track.label = n.label: n.track.label = n.kinds.join(" and ") + " off", n.selectable = !0; var r = ne(this, t.call(this, i, n)); return r.selected(!0), r } return ze(e, t), e.prototype.handletrackschange = function(t) { for (var e = this.player().texttracks(), i = !0, n = 0, r = e.length; n < r; n++) { var s = e[n]; if (this.options_.kinds.indexof(s.kind) > -1 && "showing" === s.mode) { i = !1; break } } this.selected(i) }, e.prototype.handleselectedlanguagechange = function(t) { for (var e = this.player().texttracks(), i = !0, n = 0, r = e.length; n < r; n++) { var s = e[n]; if (["captions", "descriptions", "subtitles"].indexof(s.kind) > -1 && "showing" === s.mode) { i = !1; break } } i && (this.player_.cache_.selectedlanguage = { enabled: !1 }) }, e } (tr); bi.registercomponent("offtexttrackmenuitem", wr); var _r = function(t) { function e(i) { var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; return oe(this, e), n.tracks = i.texttracks(), ne(this, t.call(this, i, n)) } return ze(e, t), e.prototype.createitems = function() { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : tr, i = void 0; this.label_ && (i = this.label_ + " off"), t.push(new wr(this.player_, { kinds: this.kinds_, kind: this.kind_, label: i })), this.hidethreshold_ += 1; var n = this.player_.texttracks(); array.isarray(this.kinds_) || (this.kinds_ = [this.kind_]); for (var r = 0; r < n.length; r++) { var s = n[r]; if (this.kinds_.indexof(s.kind) > -1) { var o = new e(this.player_, { track: s, selectable: !0 }); o.addclass("vjs-" + s.kind + "-menu-item"), t.push(o) } } return t }, e } (yr); bi.registercomponent("texttrackbutton", _r); var cr = function(t) { function e(i, n) { oe(this, e); var r = n.track, s = n.cue, o = i.currenttime(); n.selectable = !0, n.label = s.text, n.selected = s.starttime <= o && o < s.endtime; var a = ne(this, t.call(this, i, n)); return a.track = r, a.cue = s, r.addeventlistener("cuechange", ai(a, a.update)), a } return ze(e, t), e.prototype.handleclick = function(e) { t.prototype.handleclick.call(this), this.player_.currenttime(this.cue.starttime), this.update(this.cue.starttime) }, e.prototype.update = function(t) { var e = this.cue, i = this.player_.currenttime(); this.selected(e.starttime <= i && i < e.endtime) }, e } (br); bi.registercomponent("chapterstrackmenuitem", cr); var sr = function(t) { function e(i, n, r) { return oe(this, e), ne(this, t.call(this, i, n, r)) } return ze(e, t), e.prototype.buildcssclass = function() { return "vjs-chapters-button " + t.prototype.buildcssclass.call(this) }, e.prototype.buildwrappercssclass = function() { return "vjs-chapters-button " + t.prototype.buildwrappercssclass.call(this) }, e.prototype.update = function(e) { this.track_ && (!e || "addtrack" !== e.type && "removetrack" !== e.type) || this.settrack(this.findchapterstrack()), t.prototype.update.call(this) }, e.prototype.settrack = function(t) { if (this.track_ !== t) { if (this.updatehandler_ || (this.updatehandler_ = this.update.bind(this)), this.track_) { var e = this.player_.remotetexttrackels().gettrackelementbytrack_(this.track_); e && e.removeeventlistener("load", this.updatehandler_), this.track_ = null } if (this.track_ = t, this.track_) { this.track_.mode = "hidden"; var i = this.player_.remotetexttrackels().gettrackelementbytrack_(this.track_); i && i.addeventlistener("load", this.updatehandler_) } } }, e.prototype.findchapterstrack = function() { for (var t = this.player_.texttracks() || [], e = t.length - 1; e >= 0; e--) { var i = t[e]; if (i.kind === this.kind_) return i } }, e.prototype.getmenucaption = function() { return this.track_ && this.track_.label ? this.track_.label: this.localize(q(this.kind_)) }, e.prototype.createmenu = function() { return this.options_.title = this.getmenucaption(), t.prototype.createmenu.call(this) }, e.prototype.createitems = function() { var t = []; if (!this.track_) return t; var e = this.track_.cues; if (!e) return t; for (var i = 0, n = e.length; i < n; i++) { var r = e[i], s = new cr(this.player_, { track: this.track_, cue: r }); t.push(s) } return t }, e } (_r); sr.prototype.kind_ = "chapters", sr.prototype.controltext_ = "chapters", bi.registercomponent("chaptersbutton", sr); var xr = function(t) { function e(i, n, r) { oe(this, e); var s = ne(this, t.call(this, i, n, r)), o = i.texttracks(), a = ai(s, s.handletrackschange); return o.addeventlistener("change", a), s.on("dispose", function() { o.removeeventlistener("change", a) }), s } return ze(e, t), e.prototype.handletrackschange = function(t) { for (var e = this.player().texttracks(), i = !1, n = 0, r = e.length; n < r; n++) { var s = e[n]; if (s.kind !== this.kind_ && "showing" === s.mode) { i = !0; break } } i ? this.disable() : this.enable() }, e.prototype.buildcssclass = function() { return "vjs-descriptions-button " + t.prototype.buildcssclass.call(this) }, e.prototype.buildwrappercssclass = function() { return "vjs-descriptions-button " + t.prototype.buildwrappercssclass.call(this) }, e } (_r); xr.prototype.kind_ = "descriptions", xr.prototype.controltext_ = "descriptions", bi.registercomponent("descriptionsbutton", xr); var kr = function(t) { function e(i, n, r) { return oe(this, e), ne(this, t.call(this, i, n, r)) } return ze(e, t), e.prototype.buildcssclass = function() { return "vjs-subtitles-button " + t.prototype.buildcssclass.call(this) }, e.prototype.buildwrappercssclass = function() { return "vjs-subtitles-button " + t.prototype.buildwrappercssclass.call(this) }, e } (_r); kr.prototype.kind_ = "subtitles", kr.prototype.controltext_ = "subtitles", bi.registercomponent("subtitlesbutton", kr); var er = function(t) { function e(i, n) { oe(this, e), n.track = { player: i, kind: n.kind, label: n.kind + " settings", selectable: !1, default: !1, mode: "disabled" }, n.selectable = !1, n.name = "captionsettingsmenuitem"; var r = ne(this, t.call(this, i, n)); return r.addclass("vjs-texttrack-settings"), r.controltext(", opens " + n.kind + " settings dialog"), r } return ze(e, t), e.prototype.handleclick = function(t) { this.player().getchild("texttracksettings").open() }, e } (tr); bi.registercomponent("captionsettingsmenuitem", er); var pr = function(t) { function e(i, n, r) { return oe(this, e), ne(this, t.call(this, i, n, r)) } return ze(e, t), e.prototype.buildcssclass = function() { return "vjs-captions-button " + t.prototype.buildcssclass.call(this) }, e.prototype.buildwrappercssclass = function() { return "vjs-captions-button " + t.prototype.buildwrappercssclass.call(this) }, e.prototype.createitems = function() { var e = []; return this.player().tech_ && this.player().tech_.featuresnativetexttracks || (e.push(new er(this.player_, { kind: this.kind_ })), this.hidethreshold_ += 1), t.prototype.createitems.call(this, e) }, e } (_r); pr.prototype.kind_ = "captions", pr.prototype.controltext_ = "captions", bi.registercomponent("captionsbutton", pr); var mr = function(t) { function e() { return oe(this, e), ne(this, t.apply(this, arguments)) } return ze(e, t), e.prototype.createel = function(e, i, r) { var s = '' + this.localize(this.options_.label); return "captions" === this.options_.track.kind && (s += '\n \n ' + this.localize("captions") + "\n "), s += "", t.prototype.createel.call(this, e, n({ innerhtml: s }, i), r) }, e } (tr); bi.registercomponent("subscapsmenuitem", mr); var ir = function(t) { function e(i) { var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; oe(this, e); var r = ne(this, t.call(this, i, n)); return r.label_ = "subtitles", ["en", "en-us", "en-ca", "fr-ca"].indexof(r.player_.language_) > -1 && (r.label_ = "captions"), r.menubutton_.controltext(q(r.label_)), r } return ze(e, t), e.prototype.buildcssclass = function() { return "vjs-subs-caps-button " + t.prototype.buildcssclass.call(this) }, e.prototype.buildwrappercssclass = function() { return "vjs-subs-caps-button " + t.prototype.buildwrappercssclass.call(this) }, e.prototype.createitems = function() { var e = []; return this.player().tech_ && this.player().tech_.featuresnativetexttracks || (e.push(new er(this.player_, { kind: this.label_ })), this.hidethreshold_ += 1), e = t.prototype.createitems.call(this, e, mr) }, e } (_r); ir.prototype.kinds_ = ["captions", "subtitles"], ir.prototype.controltext_ = "subtitles", bi.registercomponent("subscapsbutton", ir); var ar = function(t) { function e(i, n) { oe(this, e); var r = n.track, s = i.audiotracks(); n.label = r.label || r.language || "unknown", n.selected = r.enabled; var o = ne(this, t.call(this, i, n)); o.track = r; var a = ai(o, o.handletrackschange); return s.addeventlistener("change", a), o.on("dispose", function() { s.removeeventlistener("change", a) }), o } return ze(e, t), e.prototype.handleclick = function(e) { var i = this.player_.audiotracks(); t.prototype.handleclick.call(this, e); for (var n = 0; n < i.length; n++) { var r = i[n]; r.enabled = r === this.track } }, e.prototype.handletrackschange = function(t) { this.selected(this.track.enabled) }, e } (br); bi.registercomponent("audiotrackmenuitem", ar); var jr = function(t) { function e(i) { var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; return oe(this, e), n.tracks = i.audiotracks(), ne(this, t.call(this, i, n)) } return ze(e, t), e.prototype.buildcssclass = function() { return "vjs-audio-button " + t.prototype.buildcssclass.call(this) }, e.prototype.buildwrappercssclass = function() { return "vjs-audio-button " + t.prototype.buildwrappercssclass.call(this) }, e.prototype.createitems = function() { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : []; this.hidethreshold_ = 1; for (var e = this.player_.audiotracks(), i = 0; i < e.length; i++) { var n = e[i]; t.push(new ar(this.player_, { track: n, selectable: !0 })) } return t }, e } (yr); jr.prototype.controltext_ = "audio track", bi.registercomponent("audiotrackbutton", jr); var dr = function(t) { function e(i, n) { oe(this, e); var r = n.rate, s = parsefloat(r, 10); n.label = r, n.selected = 1 === s, n.selectable = !0; var o = ne(this, t.call(this, i, n)); return o.label = r, o.rate = s, o.on(i, "ratechange", o.update), o } return ze(e, t), e.prototype.handleclick = function(e) { t.prototype.handleclick.call(this), this.player().playbackrate(this.rate) }, e.prototype.update = function(t) { this.selected(this.player().playbackrate() === this.rate) }, e } (br); dr.prototype.contenteltype = "button", bi.registercomponent("playbackratemenuitem", dr); var or = function(t) { function e(i, n) { oe(this, e); var r = ne(this, t.call(this, i, n)); return r.updatevisibility(), r.updatelabel(), r.on(i, "loadstart", r.updatevisibility), r.on(i, "ratechange", r.updatelabel), r } return ze(e, t), e.prototype.createel = function() { var e = t.prototype.createel.call(this); return this.labelel_ = f("div", { classname: "vjs-playback-rate-value", innerhtml: 1 }), e.appendchild(this.labelel_), e }, e.prototype.buildcssclass = function() { return "vjs-playback-rate " + t.prototype.buildcssclass.call(this) }, e.prototype.buildwrappercssclass = function() { return "vjs-playback-rate " + t.prototype.buildwrappercssclass.call(this) }, e.prototype.createmenu = function() { var t = new vr(this.player()), e = this.playbackrates(); if (e) for (var i = e.length - 1; i >= 0; i--) t.addchild(new dr(this.player(), { rate: e[i] + "x" })); return t }, e.prototype.updateariaattributes = function() { this.el().setattribute("aria-valuenow", this.player().playbackrate()) }, e.prototype.handleclick = function(t) { for (var e = this.player().playbackrate(), i = this.playbackrates(), n = i[0], r = 0; r < i.length; r++) if (i[r] > e) { n = i[r]; break } this.player().playbackrate(n) }, e.prototype.playbackrates = function() { return this.options_.playbackrates || this.options_.playeroptions && this.options_.playeroptions.playbackrates }, e.prototype.playbackratesupported = function() { return this.player().tech_ && this.player().tech_.featuresplaybackrate && this.playbackrates() && this.playbackrates().length > 0 }, e.prototype.updatevisibility = function(t) { this.playbackratesupported() ? this.removeclass("vjs-hidden") : this.addclass("vjs-hidden") }, e.prototype.updatelabel = function(t) { this.playbackratesupported() && (this.labelel_.innerhtml = this.player().playbackrate() + "x") }, e } (gr); or.prototype.controltext_ = "playback rate", bi.registercomponent("playbackratemenubutton", or); var zr = function(t) { function e() { return oe(this, e), ne(this, t.apply(this, arguments)) } return ze(e, t), e.prototype.buildcssclass = function() { return "vjs-spacer " + t.prototype.buildcssclass.call(this) }, e.prototype.createel = function() { return t.prototype.createel.call(this, "div", { classname: this.buildcssclass() }) }, e } (bi); bi.registercomponent("spacer", zr); var nr = function(t) { function e() { return oe(this, e), ne(this, t.apply(this, arguments)) } return ze(e, t), e.prototype.buildcssclass = function() { return "vjs-custom-control-spacer " + t.prototype.buildcssclass.call(this) }, e.prototype.createel = function() { var e = t.prototype.createel.call(this, { classname: this.buildcssclass() }); return e.innerhtml = " ", e }, e } (zr); bi.registercomponent("customcontrolspacer", nr); var br = function(t) { function e() { return oe(this, e), ne(this, t.apply(this, arguments)) } return ze(e, t), e.prototype.createel = function() { return t.prototype.createel.call(this, "div", { classname: "vjs-control-bar", dir: "ltr" }, { role: "group" }) }, e } (bi); br.prototype.options_ = { children: ["playtoggle", "volumepanel", "currenttimedisplay", "timedivider", "durationdisplay", "progresscontrol", "livedisplay", "remainingtimedisplay", "customcontrolspacer", "playbackratemenubutton", "chaptersbutton", "descriptionsbutton", "subscapsbutton", "audiotrackbutton", "fullscreentoggle"] }, bi.registercomponent("controlbar", br); var lr = function(t) { function e(i, n) { oe(this, e); var r = ne(this, t.call(this, i, n)); return r.on(i, "error", r.open), r } return ze(e, t), e.prototype.buildcssclass = function() { return "vjs-error-display " + t.prototype.buildcssclass.call(this) }, e.prototype.content = function() { var t = this.player().error(); return t ? this.localize(t.message) : "" }, e } (di); lr.prototype.options_ = z(di.prototype.options_, { pauseonopen: !1, fillalways: !0, temporary: !1, uncloseable: !0 }), bi.registercomponent("errordisplay", lr); var rr = ["#000", "black"], hr = ["#00f", "blue"], fr = ["#0ff", "cyan"], xr = ["#0f0", "green"], yr = ["#f0f", "magenta"], vr = ["#f00", "red"], wr = ["#fff", "white"], gr = ["#ff0", "yellow"], qr = ["1", "opaque"], ur = ["0.5", "semi-transparent"], kr = ["0", "transparent"], qr = { backgroundcolor: { selector: ".vjs-bg-color > select", id: "captions-background-color-%s", label: "color", options: [rr, wr, vr, xr, hr, gr, yr, fr] }, backgroundopacity: { selector: ".vjs-bg-opacity > select", id: "captions-background-opacity-%s", label: "transparency", options: [qr, ur, kr] }, color: { selector: ".vjs-fg-color > select", id: "captions-foreground-color-%s", label: "color", options: [wr, rr, vr, xr, hr, gr, yr, fr] }, edgestyle: { selector: ".vjs-edge-style > select", id: "%s", label: "text edge style", options: [["none", "none"], ["raised", "raised"], ["depressed", "depressed"], ["uniform", "uniform"], ["dropshadow", "dropshadow"]] }, fontfamily: { selector: ".vjs-font-family > select", id: "captions-font-family-%s", label: "font family", options: [["proportionalsansserif", "proportional sans-serif"], ["monospacesansserif", "monospace sans-serif"], ["proportionalserif", "proportional serif"], ["monospaceserif", "monospace serif"], ["casual", "casual"], ["script", "script"], ["small-caps", "small caps"]] }, fontpercent: { selector: ".vjs-font-percent > select", id: "captions-font-size-%s", label: "font size", options: [["0.50", "50%"], ["0.75", "75%"], ["1.00", "100%"], ["1.25", "125%"], ["1.50", "150%"], ["1.75", "175%"], ["2.00", "200%"], ["3.00", "300%"], ["4.00", "400%"]], default: 2, parser: function(t) { return "1.00" === t ? null: number(t) } }, textopacity: { selector: ".vjs-text-opacity > select", id: "captions-foreground-opacity-%s", label: "transparency", options: [qr, ur] }, windowcolor: { selector: ".vjs-window-color > select", id: "captions-window-color-%s", label: "color" }, windowopacity: { selector: ".vjs-window-opacity > select", id: "captions-window-opacity-%s", label: "transparency", options: [kr, ur, qr] } }; qr.windowcolor.options = qr.backgroundcolor.options; var $r = function(t) { function n(i, r) { oe(this, n), r.temporary = !1; var s = ne(this, t.call(this, i, r)); return s.updatedisplay = ai(s, s.updatedisplay), s.fill(), s.hasbeenopened_ = s.hasbeenfilled_ = !0, s.enddialog = f("p", { classname: "vjs-control-text", textcontent: s.localize("end of dialog window.") }), s.el().appendchild(s.enddialog), s.setdefaults(), void 0 === r.persisttexttracksettings && (s.options_.persisttexttracksettings = s.options_.playeroptions.persisttexttracksettings), s.on(s.$(".vjs-done-button"), "click", function() { s.savesettings(), s.close() }), s.on(s.$(".vjs-default-button"), "click", function() { s.setdefaults(), s.updatedisplay() }), e(qr, function(t) { s.on(s.$(t.selector), "change", s.updatedisplay) }), s.options_.persisttexttracksettings && s.restoresettings(), s } return ze(n, t), n.prototype.createelselect_ = function(t) { var e = this, i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "", n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "label", r = qr[t], s = r.id.replace("%s", this.id_); return ["<" + n + ' id="' + s + '" class="' + ("label" === n ? "vjs-label": "") + '">', this.localize(r.label), "", '").join("") }, n.prototype.createelfgcolor_ = function() { var t = "captions-text-legend-" + this.id_; return ['
    ', '', this.localize("text"), "", this.createelselect_("color", t), '', this.createelselect_("textopacity", t), "", "
    "].join("") }, n.prototype.createelbgcolor_ = function() { var t = "captions-background-" + this.id_; return ['
    ', '', this.localize("background"), "", this.createelselect_("backgroundcolor", t), '', this.createelselect_("backgroundopacity", t), "", "
    "].join("") }, n.prototype.createelwincolor_ = function() { var t = "captions-window-" + this.id_; return ['
    ', '', this.localize("window"), "", this.createelselect_("windowcolor", t), '', this.createelselect_("windowopacity", t), "", "
    "].join("") }, n.prototype.createelcolors_ = function() { return f("div", { classname: "vjs-track-settings-colors", innerhtml: [this.createelfgcolor_(), this.createelbgcolor_(), this.createelwincolor_()].join("") }) }, n.prototype.createelfont_ = function() { return f("div", { classname: 'vjs-track-settings-font">', innerhtml: ['
    ', this.createelselect_("fontpercent", "", "legend"), "
    ", '
    ', this.createelselect_("edgestyle", "", "legend"), "
    ", '
    ', this.createelselect_("fontfamily", "", "legend"), "
    "].join("") }) }, n.prototype.createelcontrols_ = function() { var t = this.localize("restore all settings to the default values"); return f("div", { classname: "vjs-track-settings-controls", innerhtml: ['", '"].join("") }) }, n.prototype.content = function() { return [this.createelcolors_(), this.createelfont_(), this.createelcontrols_()] }, n.prototype.label = function() { return this.localize("caption settings dialog") }, n.prototype.description = function() { return this.localize("beginning of dialog window. escape will cancel and close the window.") }, n.prototype.buildcssclass = function() { return t.prototype.buildcssclass.call(this) + " vjs-text-track-settings" }, n.prototype.getvalues = function() { var t = this; return i(qr, function(e, i, n) { var r = $t(t.$(i.selector), i.parser); return void 0 !== r && (e[n] = r), e }, {}) }, n.prototype.setvalues = function(t) { var i = this; e(qr, function(e, n) { zt(i.$(e.selector), t[n], e.parser) }) }, n.prototype.setdefaults = function() { var t = this; e(qr, function(e) { var i = e.hasownproperty("default") ? e. default: 0; t.$(e.selector).selectedindex = i }) }, n.prototype.restoresettings = function() { var t = void 0; try { t = json.parse(re.localstorage.getitem("vjs-text-track-settings")) } catch(t) { ve.warn(t) } t && this.setvalues(t) }, n.prototype.savesettings = function() { if (this.options_.persisttexttracksettings) { var t = this.getvalues(); try { object.keys(t).length ? re.localstorage.setitem("vjs-text-track-settings", json.stringify(t)) : re.localstorage.removeitem("vjs-text-track-settings") } catch(t) { ve.warn(t) } } }, n.prototype.updatedisplay = function() { var t = this.player_.getchild("texttrackdisplay"); t && t.updatedisplay() }, n.prototype.conditionalblur_ = function() { this.previouslyactiveel_ = null, this.off(ce, "keydown", this.handlekeydown); var t = this.player_.controlbar, e = t && t.subscapsbutton, i = t && t.captionsbutton; e ? e.focus() : i && i.focus() }, n } (di); bi.registercomponent("texttracksettings", $r); var zr = be(["text tracks are being loaded from another origin but the crossorigin attribute isn't used.\n this may prevent text tracks from loading."], ["text tracks are being loaded from another origin but the crossorigin attribute isn't used.\n this may prevent text tracks from loading."]), jr = function(t) { function e(i, n) { oe(this, e); var r = ne(this, t.call(this, i, n)), s = i.source, o = !1; if (s && (r.el_.currentsrc !== s.src || i.tag && 3 === i.tag.initnetworkstate_) ? r.setsource(s) : r.handlelateinit_(r.el_), r.el_.haschildnodes()) { for (var a = r.el_.childnodes, l = a.length, c = []; l--;) { var h = a[l]; "track" === h.nodename.tolowercase() && (r.featuresnativetexttracks ? (r.remotetexttrackels().addtrackelement_(h), r.remotetexttracks().addtrack(h.track), r.texttracks().addtrack(h.track), o || r.el_.hasattribute("crossorigin") || !$i(h.src) || (o = !0)) : c.push(h)) } for (var p = 0; p < c.length; p++) r.el_.removechild(c[p]) } return r.proxynativetracks_(), r.featuresnativetexttracks && o && ve.warn(we(zr)), (ie || fe || we) && !0 === i.nativecontrolsfortouch && r.setcontrols(!0), r.proxywebkitfullscreen_(), r.triggerready(), r } return ze(e, t), e.prototype.dispose = function() { e.disposemediaelement(this.el_), t.prototype.dispose.call(this) }, e.prototype.proxynativetracks_ = function() { var t = this; bn.names.foreach(function(e) { var i = bn[e], n = t.el()[i.gettername], r = t[i.gettername](); if (t["featuresnative" + i.capitalname + "tracks"] && n && n.addeventlistener) { var s = { change: function(t) { r.trigger({ type: "change", target: r, currenttarget: r, srcelement: r }) }, addtrack: function(t) { r.addtrack(t.track) }, removetrack: function(t) { r.removetrack(t.track) } }, o = function() { for (var t = [], e = 0; e < r.length; e++) { for (var i = !1, s = 0; s < n.length; s++) if (n[s] === r[e]) { i = !0; break } i || t.push(r[e]) } for (; t.length;) r.removetrack(t.shift()) }; object.keys(s).foreach(function(e) { var i = s[e]; n.addeventlistener(e, i), t.on("dispose", function(t) { return n.removeeventlistener(e, i) }) }), t.on("loadstart", o), t.on("dispose", function(e) { return t.off("loadstart", o) }) } }) }, e.prototype.createel = function() { var t = this.options_.tag; if (!t || !this.options_.playerelingest && !this.movingmediaelementindom) { if (t) { var i = t.clonenode(!0); t.parentnode && t.parentnode.insertbefore(i, t), e.disposemediaelement(t), t = i } else { t = ce.createelement("video"); var r = this.options_.tag && _(this.options_.tag), s = z({}, r); ie && !0 === this.options_.nativecontrolsfortouch || delete s.controls, w(t, n(s, { id: this.options_.techid, class: "vjs-tech" })) } t.playerid = this.options_.playerid } for (var o = ["autoplay", "preload", "loop", "muted", "playsinline"], a = o.length - 1; a >= 0; a--) { var l = o[a], c = {}; void 0 !== this.options_[l] && (c[l] = this.options_[l]), w(t, c) } return t }, e.prototype.handlelateinit_ = function(t) { if (0 !== t.networkstate && 3 !== t.networkstate) { if (0 === t.readystate) { var e = !1, i = function() { e = !0 }; this.on("loadstart", i); var n = function() { e || this.trigger("loadstart") }; return this.on("loadedmetadata", n), void this.ready(function() { this.off("loadstart", i), this.off("loadedmetadata", n), e || this.trigger("loadstart") }) } var r = ["loadstart"]; r.push("loadedmetadata"), t.readystate >= 2 && r.push("loadeddata"), t.readystate >= 3 && r.push("canplay"), t.readystate >= 4 && r.push("canplaythrough"), this.ready(function() { r.foreach(function(t) { this.trigger(t) }, this) }) } }, e.prototype.setcurrenttime = function(t) { try { this.el_.currenttime = t } catch(t) { ve(t, "video is not ready. (video.js)") } }, e.prototype.duration = function() { var t = this; if (this.el_.duration === 1 / 0 && ye && se && 0 === this.el_.currenttime) { var e = function e() { t.el_.currenttime > 0 && (t.el_.duration === 1 / 0 && t.trigger("durationchange"), t.off("timeupdate", e)) }; return this.on("timeupdate", e), nan } return this.el_.duration || nan }, e.prototype.width = function() { return this.el_.offsetwidth }, e.prototype.height = function() { return this.el_.offsetheight }, e.prototype.proxywebkitfullscreen_ = function() { var t = this; if ("webkitdisplayingfullscreen" in this.el_) { var e = function() { this.trigger("fullscreenchange", { isfullscreen: !1 }) }, i = function() { "webkitpresentationmode" in this.el_ && "picture-in-picture" !== this.el_.webkitpresentationmode && (this.one("webkitendfullscreen", e), this.trigger("fullscreenchange", { isfullscreen: !0 })) }; this.on("webkitbeginfullscreen", i), this.on("dispose", function() { t.off("webkitbeginfullscreen", i), t.off("webkitendfullscreen", e) }) } }, e.prototype.supportsfullscreen = function() { if ("function" == typeof this.el_.webkitenterfullscreen) { var t = re.navigator && re.navigator.useragent || ""; if (/android/.test(t) || !/chrome|mac os x 10.5/.test(t)) return ! 0 } return ! 1 }, e.prototype.enterfullscreen = function() { var t = this.el_; t.paused && t.networkstate <= t.have_metadata ? (this.el_.play(), this.settimeout(function() { t.pause(), t.webkitenterfullscreen() }, 0)) : t.webkitenterfullscreen() }, e.prototype.exitfullscreen = function() { this.el_.webkitexitfullscreen() }, e.prototype.src = function(t) { if (void 0 === t) return this.el_.src; this.setsrc(t) }, e.prototype.reset = function() { e.resetmediaelement(this.el_) }, e.prototype.currentsrc = function() { return this.currentsource_ ? this.currentsource_.src: this.el_.currentsrc }, e.prototype.setcontrols = function(t) { this.el_.controls = !!t }, e.prototype.addtexttrack = function(e, i, n) { return this.featuresnativetexttracks ? this.el_.addtexttrack(e, i, n) : t.prototype.addtexttrack.call(this, e, i, n) }, e.prototype.createremotetexttrack = function(e) { if (!this.featuresnativetexttracks) return t.prototype.createremotetexttrack.call(this, e); var i = ce.createelement("track"); return e.kind && (i.kind = e.kind), e.label && (i.label = e.label), (e.language || e.srclang) && (i.srclang = e.language || e.srclang), e. default && (i. default = e. default), e.id && (i.id = e.id), e.src && (i.src = e.src), i }, e.prototype.addremotetexttrack = function(e, i) { var n = t.prototype.addremotetexttrack.call(this, e, i); return this.featuresnativetexttracks && this.el().appendchild(n), n }, e.prototype.removeremotetexttrack = function(e) { if (t.prototype.removeremotetexttrack.call(this, e), this.featuresnativetexttracks) for (var i = this.$$("track"), n = i.length; n--;) e !== i[n] && e !== i[n].track || this.el().removechild(i[n]) }, e.prototype.playsinline = function() { return this.el_.hasattribute("playsinline") }, e.prototype.setplaysinline = function(t) { t ? this.el_.setattribute("playsinline", "playsinline") : this.el_.removeattribute("playsinline") }, e.prototype.getvideoplaybackquality = function() { if ("function" == typeof this.el().getvideoplaybackquality) return this.el().getvideoplaybackquality(); var t = {}; return void 0 !== this.el().webkitdroppedframecount && void 0 !== this.el().webkitdecodedframecount && (t.droppedvideoframes = this.el().webkitdroppedframecount, t.totalvideoframes = this.el().webkitdecodedframecount), re.performance && "function" == typeof re.performance.now ? t.creationtime = re.performance.now() : re.performance && re.performance.timing && "number" == typeof re.performance.timing.navigationstart && (t.creationtime = re.date.now() - re.performance.timing.navigationstart), t }, e } (nn); if (p()) { jr.test_vid = ce.createelement("video"); var ts = ce.createelement("track"); ts.kind = "captions", ts.srclang = "en", ts.label = "english", jr.test_vid.appendchild(ts) } jr.issupported = function() { try { jr.test_vid.volume = .5 } catch(t) { return ! 1 } return ! (!jr.test_vid || !jr.test_vid.canplaytype) }, jr.canplaytype = function(t) { return jr.test_vid.canplaytype(t) }, jr.canplaysource = function(t, e) { return jr.canplaytype(t.type) }, jr.cancontrolvolume = function() { try { var t = jr.test_vid.volume; return jr.test_vid.volume = t / 2 + .1, t !== jr.test_vid.volume } catch(t) { return ! 1 } }, jr.cancontrolplaybackrate = function() { if (ye && se && xe < 58) return ! 1; try { var t = jr.test_vid.playbackrate; return jr.test_vid.playbackrate = t / 2 + .1, t !== jr.test_vid.playbackrate } catch(t) { return ! 1 } }, jr.supportsnativetexttracks = function() { return me }, jr.supportsnativevideotracks = function() { return ! (!jr.test_vid || !jr.test_vid.videotracks) }, jr.supportsnativeaudiotracks = function() { return ! (!jr.test_vid || !jr.test_vid.audiotracks) }, jr.events = ["loadstart", "suspend", "abort", "error", "emptied", "stalled", "loadedmetadata", "loadeddata", "canplay", "canplaythrough", "playing", "waiting", "seeking", "seeked", "ended", "durationchange", "timeupdate", "progress", "play", "pause", "ratechange", "resize", "volumechange"], jr.prototype.featuresvolumecontrol = jr.cancontrolvolume(), jr.prototype.featuresplaybackrate = jr.cancontrolplaybackrate(), jr.prototype.movingmediaelementindom = !ve, jr.prototype.featuresfullscreenresize = !0, jr.prototype.featuresprogressevents = !0, jr.prototype.featurestimeupdateevents = !0, jr.prototype.featuresnativetexttracks = jr.supportsnativetexttracks(), jr.prototype.featuresnativevideotracks = jr.supportsnativevideotracks(), jr.prototype.featuresnativeaudiotracks = jr.supportsnativeaudiotracks(); var es = jr.test_vid && jr.test_vid.constructor.prototype.canplaytype, is = /^application\/(?:x-|vnd\.apple\.)mpegurl/i, ns = /^video\/mp4/i; jr.patchcanplaytype = function() { be >= 4 && !_e ? jr.test_vid.constructor.prototype.canplaytype = function(t) { return t && is.test(t) ? "maybe": es.call(this, t) }: te && (jr.test_vid.constructor.prototype.canplaytype = function(t) { return t && ns.test(t) ? "maybe": es.call(this, t) }) }, jr.unpatchcanplaytype = function() { var t = jr.test_vid.constructor.prototype.canplaytype; return jr.test_vid.constructor.prototype.canplaytype = es, t }, jr.patchcanplaytype(), jr.disposemediaelement = function(t) { if (t) { for (t.parentnode && t.parentnode.removechild(t); t.haschildnodes();) t.removechild(t.firstchild); t.removeattribute("src"), "function" == typeof t.load && function() { try { t.load() } catch(t) {} } () } }, jr.resetmediaelement = function(t) { if (t) { for (var e = t.queryselectorall("source"), i = e.length; i--;) t.removechild(e[i]); t.removeattribute("src"), "function" == typeof t.load && function() { try { t.load() } catch(t) {} } () } }, ["paused", "currenttime", "buffered", "volume", "muted", "defaultmuted", "poster", "preload", "autoplay", "controls", "loop", "error", "seeking", "seekable", "ended", "defaultmuted", "playbackrate", "defaultplaybackrate", "played", "networkstate", "readystate", "videowidth", "videoheight"].foreach(function(t) { jr.prototype[t] = function() { return this.el_[t] } }), ["volume", "muted", "defaultmuted", "src", "poster", "preload", "autoplay", "loop", "playbackrate", "defaultplaybackrate"].foreach(function(t) { jr.prototype["set" + q(t)] = function(e) { this.el_[t] = e } }), ["pause", "load", "play"].foreach(function(t) { jr.prototype[t] = function() { return this.el_[t]() } }), nn.withsourcehandlers(jr), jr.nativesourcehandler = {}, jr.nativesourcehandler.canplaytype = function(t) { try { return jr.test_vid.canplaytype(t) } catch(t) { return "" } }, jr.nativesourcehandler.canhandlesource = function(t, e) { if (t.type) return jr.nativesourcehandler.canplaytype(t.type); if (t.src) { var i = qi(t.src); return jr.nativesourcehandler.canplaytype("video/" + i) } return "" }, jr.nativesourcehandler.handlesource = function(t, e, i) { e.setsrc(t.src) }, jr.nativesourcehandler.dispose = function() {}, jr.registersourcehandler(jr.nativesourcehandler), nn.registertech("html5", jr); var rs = be(["\n using the tech directly can be dangerous. i hope you know what you're doing.\n see https://github.com/videojs/video.js/issues/2617 for more info.\n "], ["\n using the tech directly can be dangerous. i hope you know what you're doing.\n see https://github.com/videojs/video.js/issues/2617 for more info.\n "]), ss = ["progress", "abort", "suspend", "emptied", "stalled", "loadedmetadata", "loadeddata", "timeupdate", "ratechange", "resize", "volumechange", "texttrackchange"], os = function(t) { function e(i, r, s) { if (oe(this, e), i.id = i.id || "vjs_video_" + n(), r = n(e.gettagsettings(i), r), r.initchildren = !1, r.createel = !1, r.reporttouchactivity = !1, !r.language) if ("function" == typeof i.closest) { var o = i.closest("[lang]"); o && (r.language = o.getattribute("lang")) } else for (var a = i; a && 1 === a.nodetype;) { if (_(a).hasownproperty("lang")) { r.language = a.getattribute("lang"); break } a = a.parentnode } var l = ne(this, t.call(this, null, r, s)); if (l.isready_ = !1, !l.options_ || !l.options_.techorder || !l.options_.techorder.length) throw new error("no techorder specified. did you overwrite videojs.options instead of just changing the properties you want to override?"); if (l.tag = i, l.tagattributes = i && _(i), l.language(l.options_.language), r.languages) { var c = {}; object.getownpropertynames(r.languages).foreach(function(t) { c[t.tolowercase()] = r.languages[t] }), l.languages_ = c } else l.languages_ = e.prototype.options_.languages; l.cache_ = {}, l.poster_ = r.poster || "", l.controls_ = !!r.controls, l.cache_.lastvolume = 1, i.controls = !1, l.scrubbing_ = !1, l.el_ = l.createel(), u(l, { eventbuskey: "el_" }); var h = z(l.options_); if (r.plugins) { var p = r.plugins; object.keys(p).foreach(function(t) { if ("function" != typeof this[t]) throw new error('plugin "' + t + '" does not exist'); this[t](p[t]) }, l) } l.options_.playeroptions = h, l.middleware_ = [], l.initchildren(), l.isaudio("audio" === i.nodename.tolowercase()), l.controls() ? l.addclass("vjs-controls-enabled") : l.addclass("vjs-controls-disabled"), l.el_.setattribute("role", "region"), l.isaudio() ? l.el_.setattribute("aria-label", l.localize("audio player")) : l.el_.setattribute("aria-label", l.localize("video player")), l.isaudio() && l.addclass("vjs-audio"), l.flexnotsupported_() && l.addclass("vjs-no-flex"), ve || l.addclass("vjs-workinghover"), e.players[l.id_] = l; var u = ee.split(".")[0]; return l.addclass("vjs-v" + u), l.useractive(!0), l.reportuseractivity(), l.listenforuseractivity_(), l.on("fullscreenchange", l.handlefullscreenchange_), l.on("stageclick", l.handlestageclick_), l.changingsrc_ = !1, l } return ze(e, t), e.prototype.dispose = function() { this.trigger("dispose"), this.off("dispose"), this.styleel_ && this.styleel_.parentnode && this.styleel_.parentnode.removechild(this.styleel_), e.players[this.id_] = null, this.tag && this.tag.player && (this.tag.player = null), this.el_ && this.el_.player && (this.el_.player = null), this.tech_ && this.tech_.dispose(), t.prototype.dispose.call(this) }, e.prototype.createel = function() { var e = this.tag, i = void 0, n = this.playerelingest_ = e.parentnode && e.parentnode.hasattribute && e.parentnode.hasattribute("data-vjs-player"); i = this.el_ = n ? e.parentnode: t.prototype.createel.call(this, "div"), e.setattribute("tabindex", "-1"), e.removeattribute("width"), e.removeattribute("height"); var r = _(e); if (object.getownpropertynames(r).foreach(function(t) { "class" === t ? i.classname += " " + r[t] : i.setattribute(t, r[t]) }), e.playerid = e.id, e.id += "_html5_api", e.classname = "vjs-tech", e.player = i.player = this, this.addclass("vjs-paused"), !0 !== re.videojs_no_dynamic_style) { this.styleel_ = si("vjs-styles-dimensions"); var s = qe(".vjs-styles-defaults"), o = qe("head"); o.insertbefore(this.styleel_, s ? s.nextsibling: o.firstchild) } this.width(this.options_.width), this.height(this.options_.height), this.fluid(this.options_.fluid), this.aspectratio(this.options_.aspectratio); for (var a = e.getelementsbytagname("a"), l = 0; l < a.length; l++) { var c = a.item(l); y(c, "vjs-hidden"), c.setattribute("hidden", "hidden") } return e.initnetworkstate_ = e.networkstate, e.parentnode && !n && e.parentnode.insertbefore(i, e), v(e, i), this.children_.unshift(e), this.el_.setattribute("lang", this.language_), this.el_ = i, i }, e.prototype.width = function(t) { return this.dimension("width", t) }, e.prototype.height = function(t) { return this.dimension("height", t) }, e.prototype.dimension = function(t, e) { var i = t + "_"; if (void 0 === e) return this[i] || 0; if ("" === e) this[i] = void 0; else { var n = parsefloat(e); if (isnan(n)) return void ve.error('improper value "' + e + '" supplied for for ' + t); this[i] = n } this.updatestyleel_() }, e.prototype.fluid = function(t) { if (void 0 === t) return !! this.fluid_; this.fluid_ = !!t, t ? this.addclass("vjs-fluid") : this.removeclass("vjs-fluid"), this.updatestyleel_() }, e.prototype.aspectratio = function(t) { if (void 0 === t) return this.aspectratio_; if (!/^\d+\:\d+$/.test(t)) throw new error("improper value supplied for aspect ratio. the format should be width:height, for example 16:9."); this.aspectratio_ = t, this.fluid(!0), this.updatestyleel_() }, e.prototype.updatestyleel_ = function() { if (!0 === re.videojs_no_dynamic_style) { var t = "number" == typeof this.width_ ? this.width_: this.options_.width, e = "number" == typeof this.height_ ? this.height_: this.options_.height, i = this.tech_ && this.tech_.el(); return void(i && (t >= 0 && (i.width = t), e >= 0 && (i.height = e))) } var n = void 0, r = void 0, s = void 0, o = void 0; s = void 0 !== this.aspectratio_ && "auto" !== this.aspectratio_ ? this.aspectratio_: this.videowidth() > 0 ? this.videowidth() + ":" + this.videoheight() : "16:9"; var a = s.split(":"), l = a[1] / a[0]; n = void 0 !== this.width_ ? this.width_: void 0 !== this.height_ ? this.height_ / l: this.videowidth() || 300, r = void 0 !== this.height_ ? this.height_: n * l, o = /^[^a-za-z]/.test(this.id()) ? "dimensions-" + this.id() : this.id() + "-dimensions", this.addclass(o), oi(this.styleel_, "\n ." + o + " {\n width: " + n + "px;\n height: " + r + "px;\n }\n\n ." + o + ".vjs-fluid {\n padding-top: " + 100 * l + "%;\n }\n ") }, e.prototype.loadtech_ = function(t, e) { var i = this; this.tech_ && this.unloadtech_(); var r = q(t), s = t.charat(0).tolowercase() + t.slice(1); "html5" !== r && this.tag && (nn.gettech("html5").disposemediaelement(this.tag), this.tag.player = null, this.tag = null), this.techname_ = r, this.isready_ = !1; var o = { source: e, nativecontrolsfortouch: this.options_.nativecontrolsfortouch, playerid: this.id(), techid: this.id() + "_" + r + "_api", autoplay: this.options_.autoplay, playsinline: this.options_.playsinline, preload: this.options_.preload, loop: this.options_.loop, muted: this.options_.muted, poster: this.poster(), language: this.language(), playerelingest: this.playerelingest_ || !1, "vtt.js": this.options_["vtt.js"] }; wn.names.foreach(function(t) { var e = wn[t]; o[e.gettername] = i[e.privatename] }), n(o, this.options_[r]), n(o, this.options_[s]), n(o, this.options_[t.tolowercase()]), this.tag && (o.tag = this.tag), e && e.src === this.cache_.src && this.cache_.currenttime > 0 && (o.starttime = this.cache_.currenttime); var a = nn.gettech(t); if (!a) throw new error("no tech named '" + r + "' exists! '" + r + "' should be registered using videojs.registertech()'"); this.tech_ = new a(o), this.tech_.ready(ai(this, this.handletechready_), !0), ai.jsontotexttracks(this.texttracksjson_ || [], this.tech_), ss.foreach(function(t) { i.on(i.tech_, t, i["handletech" + q(t) + "_"]) }), this.on(this.tech_, "loadstart", this.handletechloadstart_), this.on(this.tech_, "waiting", this.handletechwaiting_), this.on(this.tech_, "canplay", this.handletechcanplay_), this.on(this.tech_, "canplaythrough", this.handletechcanplaythrough_), this.on(this.tech_, "playing", this.handletechplaying_), this.on(this.tech_, "ended", this.handletechended_), this.on(this.tech_, "seeking", this.handletechseeking_), this.on(this.tech_, "seeked", this.handletechseeked_), this.on(this.tech_, "play", this.handletechplay_), this.on(this.tech_, "firstplay", this.handletechfirstplay_), this.on(this.tech_, "pause", this.handletechpause_), this.on(this.tech_, "durationchange", this.handletechdurationchange_), this.on(this.tech_, "fullscreenchange", this.handletechfullscreenchange_), this.on(this.tech_, "error", this.handletecherror_), this.on(this.tech_, "loadedmetadata", this.updatestyleel_), this.on(this.tech_, "posterchange", this.handletechposterchange_), this.on(this.tech_, "textdata", this.handletechtextdata_), this.usingnativecontrols(this.techget_("controls")), this.controls() && !this.usingnativecontrols() && this.addtechcontrolslisteners_(), this.tech_.el().parentnode === this.el() || "html5" === r && this.tag || v(this.tech_.el(), this.el()), this.tag && (this.tag.player = null, this.tag = null) }, e.prototype.unloadtech_ = function() { var t = this; wn.names.foreach(function(e) { var i = wn[e]; t[i.privatename] = t[i.gettername]() }), this.texttracksjson_ = ai.texttrackstojson(this.tech_), this.isready_ = !1, this.tech_.dispose(), this.tech_ = !1 }, e.prototype.tech = function(t) { return void 0 === t && ve.warn(we(rs)), this.tech_ }, e.prototype.addtechcontrolslisteners_ = function() { this.removetechcontrolslisteners_(), this.on(this.tech_, "mousedown", this.handletechclick_), this.on(this.tech_, "touchstart", this.handletechtouchstart_), this.on(this.tech_, "touchmove", this.handletechtouchmove_), this.on(this.tech_, "touchend", this.handletechtouchend_), this.on(this.tech_, "tap", this.handletechtap_) }, e.prototype.removetechcontrolslisteners_ = function() { this.off(this.tech_, "tap", this.handletechtap_), this.off(this.tech_, "touchstart", this.handletechtouchstart_), this.off(this.tech_, "touchmove", this.handletechtouchmove_), this.off(this.tech_, "touchend", this.handletechtouchend_), this.off(this.tech_, "mousedown", this.handletechclick_) }, e.prototype.handletechready_ = function() { if (this.triggerready(), this.cache_.volume && this.techcall_("setvolume", this.cache_.volume), this.handletechposterchange_(), this.handletechdurationchange_(), (this.src() || this.currentsrc()) && this.tag && this.options_.autoplay && this.paused()) { try { delete this.tag.poster } catch(t) { ve("deleting tag.poster throws in some browsers", t) } this.play() } }, e.prototype.handletechloadstart_ = function() { this.removeclass("vjs-ended"), this.removeclass("vjs-seeking"), this.error(null), this.paused() ? (this.hasstarted(!1), this.trigger("loadstart")) : (this.trigger("loadstart"), this.trigger("firstplay")) }, e.prototype.hasstarted = function(t) { return void 0 !== t ? void(this.hasstarted_ !== t && (this.hasstarted_ = t, t ? (this.addclass("vjs-has-started"), this.trigger("firstplay")) : this.removeclass("vjs-has-started"))) : !!this.hasstarted_ }, e.prototype.handletechplay_ = function() { this.removeclass("vjs-ended"), this.removeclass("vjs-paused"), this.addclass("vjs-playing"), this.hasstarted(!0), this.trigger("play") }, e.prototype.handletechwaiting_ = function() { var t = this; this.addclass("vjs-waiting"), this.trigger("waiting"), this.one("timeupdate", function() { return t.removeclass("vjs-waiting") }) }, e.prototype.handletechcanplay_ = function() { this.removeclass("vjs-waiting"), this.trigger("canplay") }, e.prototype.handletechcanplaythrough_ = function() { this.removeclass("vjs-waiting"), this.trigger("canplaythrough") }, e.prototype.handletechplaying_ = function() { this.removeclass("vjs-waiting"), this.trigger("playing") }, e.prototype.handletechseeking_ = function() { this.addclass("vjs-seeking"), this.trigger("seeking") }, e.prototype.handletechseeked_ = function() { this.removeclass("vjs-seeking"), this.trigger("seeked") }, e.prototype.handletechfirstplay_ = function() { this.options_.starttime && (ve.warn("passing the `starttime` option to the player will be deprecated in 6.0"), this.currenttime(this.options_.starttime)), this.addclass("vjs-has-started"), this.trigger("firstplay") }, e.prototype.handletechpause_ = function() { this.removeclass("vjs-playing"), this.addclass("vjs-paused"), this.trigger("pause") }, e.prototype.handletechended_ = function() { this.addclass("vjs-ended"), this.options_.loop ? (this.currenttime(0), this.play()) : this.paused() || this.pause(), this.trigger("ended") }, e.prototype.handletechdurationchange_ = function() { this.duration(this.techget_("duration")) }, e.prototype.handletechclick_ = function(t) { 0 === t.button && this.controls() && (this.paused() ? this.play() : this.pause()) }, e.prototype.handletechtap_ = function() { this.useractive(!this.useractive()) }, e.prototype.handletechtouchstart_ = function() { this.userwasactive = this.useractive() }, e.prototype.handletechtouchmove_ = function() { this.userwasactive && this.reportuseractivity() }, e.prototype.handletechtouchend_ = function(t) { t.preventdefault() }, e.prototype.handlefullscreenchange_ = function() { this.isfullscreen() ? this.addclass("vjs-fullscreen") : this.removeclass("vjs-fullscreen") }, e.prototype.handlestageclick_ = function() { this.reportuseractivity() }, e.prototype.handletechfullscreenchange_ = function(t, e) { e && this.isfullscreen(e.isfullscreen), this.trigger("fullscreenchange") }, e.prototype.handletecherror_ = function() { var t = this.tech_.error(); this.error(t) }, e.prototype.handletechtextdata_ = function() { var t = null; arguments.length > 1 && (t = arguments[1]), this.trigger("textdata", t) }, e.prototype.getcache = function() { return this.cache_ }, e.prototype.techcall_ = function(t, e) { this.ready(function() { if (t in rn) return vt(this.middleware_, this.tech_, t, e); try { this.tech_ && this.tech_[t](e) } catch(t) { throw ve(t), t } }, !0) }, e.prototype.techget_ = function(t) { if (this.tech_ && this.tech_.isready_) { if (t in ln) return yt(this.middleware_, this.tech_, t); try { return this.tech_[t]() } catch(e) { throw void 0 === this.tech_[t] ? ve("video.js: " + t + " method not defined for " + this.techname_ + " playback technology.", e) : "typeerror" === e.name ? (ve("video.js: " + t + " unavailable on " + this.techname_ + " playback technology element.", e), this.tech_.isready_ = !1) : ve(e), e } } }, e.prototype.play = function() { if (this.changingsrc_) this.ready(function() { var t = this.techget_("play"); void 0 !== t && "function" == typeof t.then && t.then(null, function(t) {}) }); else { if (this.isready_ && (this.src() || this.currentsrc())) return this.techget_("play"); this.ready(function() { this.tech_.one("loadstart", function() { var t = this.play(); void 0 !== t && "function" == typeof t.then && t.then(null, function(t) {}) }) }) } }, e.prototype.pause = function() { this.techcall_("pause") }, e.prototype.paused = function() { return ! 1 !== this.techget_("paused") }, e.prototype.played = function() { return this.techget_("played") || it(0, 0) }, e.prototype.scrubbing = function(t) { if (void 0 === t) return this.scrubbing_; this.scrubbing_ = !!t, t ? this.addclass("vjs-scrubbing") : this.removeclass("vjs-scrubbing") }, e.prototype.currenttime = function(t) { return void 0 !== t ? void this.techcall_("setcurrenttime", t) : (this.cache_.currenttime = this.techget_("currenttime") || 0, this.cache_.currenttime) }, e.prototype.duration = function(t) { if (void 0 === t) return void 0 !== this.cache_.duration ? this.cache_.duration: nan; t = parsefloat(t), t < 0 && (t = 1 / 0), t !== this.cache_.duration && (this.cache_.duration = t, t === 1 / 0 ? this.addclass("vjs-live") : this.removeclass("vjs-live"), this.trigger("durationchange")) }, e.prototype.remainingtime = function() { return this.duration() - this.currenttime() }, e.prototype.buffered = function() { var t = this.techget_("buffered"); return t && t.length || (t = it(0, 0)), t }, e.prototype.bufferedpercent = function() { return nt(this.buffered(), this.duration()) }, e.prototype.bufferedend = function() { var t = this.buffered(), e = this.duration(), i = t.end(t.length - 1); return i > e && (i = e), i }, e.prototype.volume = function(t) { var e = void 0; return void 0 !== t ? (e = math.max(0, math.min(1, parsefloat(t))), this.cache_.volume = e, this.techcall_("setvolume", e), void(e > 0 && this.lastvolume_(e))) : (e = parsefloat(this.techget_("volume")), isnan(e) ? 1 : e) }, e.prototype.muted = function(t) { return void 0 !== t ? void this.techcall_("setmuted", t) : this.techget_("muted") || !1 }, e.prototype.defaultmuted = function(t) { return void 0 !== t ? this.techcall_("setdefaultmuted", t) : this.techget_("defaultmuted") || !1 }, e.prototype.lastvolume_ = function(t) { return void 0 !== t && 0 !== t ? void(this.cache_.lastvolume = t) : this.cache_.lastvolume }, e.prototype.supportsfullscreen = function() { return this.techget_("supportsfullscreen") || !1 }, e.prototype.isfullscreen = function(t) { return void 0 !== t ? void(this.isfullscreen_ = !!t) : !!this.isfullscreen_ }, e.prototype.requestfullscreen = function() { var t = ti; this.isfullscreen(!0), t.requestfullscreen ? (y(ce, t.fullscreenchange, ai(this, function e(i) { this.isfullscreen(ce[t.fullscreenelement]), !1 === this.isfullscreen() && v(ce, t.fullscreenchange, e), this.trigger("fullscreenchange") })), this.el_[t.requestfullscreen]()) : this.tech_.supportsfullscreen() ? this.techcall_("enterfullscreen") : (this.enterfullwindow(), this.trigger("fullscreenchange")) }, e.prototype.exitfullscreen = function() { var t = ti; this.isfullscreen(!1), t.requestfullscreen ? ce[t.exitfullscreen]() : this.tech_.supportsfullscreen() ? this.techcall_("exitfullscreen") : (this.exitfullwindow(), this.trigger("fullscreenchange")) }, e.prototype.enterfullwindow = function() { this.isfullwindow = !0, this.docorigoverflow = ce.documentelement.style.overflow, y(ce, "keydown", ai(this, this.fullwindowonesckey)), ce.documentelement.style.overflow = "hidden", y(ce.body, "vjs-full-window"), this.trigger("enterfullwindow") }, e.prototype.fullwindowonesckey = function(t) { 27 === t.keycode && (!0 === this.isfullscreen() ? this.exitfullscreen() : this.exitfullwindow()) }, e.prototype.exitfullwindow = function() { this.isfullwindow = !1, v(ce, "keydown", this.fullwindowonesckey), ce.documentelement.style.overflow = this.docorigoverflow, b(ce.body, "vjs-full-window"), this.trigger("exitfullwindow") }, e.prototype.canplaytype = function(t) { for (var e = void 0, i = 0, n = this.options_.techorder; i < n.length; i++) { var r = n[i], s = nn.gettech(r); if (s || (s = bi.getcomponent(r)), s) { if (s.issupported() && (e = s.canplaytype(t))) return e } else ve.error('the "' + r + '" tech is undefined. skipped browser support check for that tech.') } return "" }, e.prototype.selectsource = function(t) { var e = this, i = this.options_.techorder.map(function(t) { return [t, nn.gettech(t)] }).filter(function(t) { var e = t[0], i = t[1]; return i ? i.issupported() : (ve.error('the "' + e + '" tech is undefined. skipped browser support check for that tech.'), !1) }), n = function(t, e, i) { var n = void 0; return t.some(function(t) { return e.some(function(e) { if (n = i(t, e)) return ! 0 }) }), n }, r = function(t, i) { var n = t[0]; if (t[1].canplaysource(i, e.options_[n.tolowercase()])) return { source: i, tech: n } }; return (this.options_.sourceorder ? n(t, i, function(t) { return function(e, i) { return t(i, e) } } (r)) : n(i, t, r)) || !1 }, e.prototype.src = function(t) { var e = this; if (void 0 === t) return this.cache_.src; var i = hn(t); if (!i.length) return void this.settimeout(function() { this.error({ code: 4, message: this.localize(this.options_.notsupportedmessage) }) }, 0); this.cache_.sources = i, this.changingsrc_ = !0, this.cache_.source = i[0], ft(this, i[0], function(t, n) { if (e.middleware_ = n, e.src_(t)) return i.length > 1 ? e.src(i.slice(1)) : (e.settimeout(function() { this.error({ code: 4, message: this.localize(this.options_.notsupportedmessage) }) }, 0), void e.triggerready()); e.changingsrc_ = !1, e.cache_.src = t.src, xt(n, e.tech_) }) }, e.prototype.src_ = function(t) { var e = this.selectsource([t]); return ! e || ($(e.tech, this.techname_) ? (this.ready(function() { this.tech_.constructor.prototype.hasownproperty("setsource") ? this.techcall_("setsource", t) : this.techcall_("src", t.src), "auto" === this.options_.preload && this.load(), this.options_.autoplay && this.play() }, !0), !1) : (this.changingsrc_ = !0, this.loadtech_(e.tech, e.source), !1)) }, e.prototype.load = function() { this.techcall_("load") }, e.prototype.reset = function() { this.loadtech_(this.options_.techorder[0], null), this.techcall_("reset") }, e.prototype.currentsources = function() { var t = this.currentsource(), e = []; return 0 !== object.keys(t).length && e.push(t), this.cache_.sources || e }, e.prototype.currentsource = function() { return this.cache_.source || {} }, e.prototype.currentsrc = function() { return this.currentsource() && this.currentsource().src || "" }, e.prototype.currenttype = function() { return this.currentsource() && this.currentsource().type || "" }, e.prototype.preload = function(t) { return void 0 !== t ? (this.techcall_("setpreload", t), void(this.options_.preload = t)) : this.techget_("preload") }, e.prototype.autoplay = function(t) { return void 0 !== t ? (this.techcall_("setautoplay", t), void(this.options_.autoplay = t)) : this.techget_("autoplay", t) }, e.prototype.playsinline = function(t) { return void 0 !== t ? (this.techcall_("setplaysinline", t), this.options_.playsinline = t, this) : this.techget_("playsinline") }, e.prototype.loop = function(t) { return void 0 !== t ? (this.techcall_("setloop", t), void(this.options_.loop = t)) : this.techget_("loop") }, e.prototype.poster = function(t) { if (void 0 === t) return this.poster_; t || (t = ""), this.poster_ = t, this.techcall_("setposter", t), this.trigger("posterchange") }, e.prototype.handletechposterchange_ = function() { ! this.poster_ && this.tech_ && this.tech_.poster && (this.poster_ = this.tech_.poster() || "", this.trigger("posterchange")) }, e.prototype.controls = function(t) { return void 0 !== t ? (t = !!t, void(this.controls_ !== t && (this.controls_ = t, this.usingnativecontrols() && this.techcall_("setcontrols", t), t ? (this.removeclass("vjs-controls-disabled"), this.addclass("vjs-controls-enabled"), this.trigger("controlsenabled"), this.usingnativecontrols() || this.addtechcontrolslisteners_()) : (this.removeclass("vjs-controls-enabled"), this.addclass("vjs-controls-disabled"), this.trigger("controlsdisabled"), this.usingnativecontrols() || this.removetechcontrolslisteners_())))) : !!this.controls_ }, e.prototype.usingnativecontrols = function(t) { return void 0 !== t ? (t = !!t, void(this.usingnativecontrols_ !== t && (this.usingnativecontrols_ = t, t ? (this.addclass("vjs-using-native-controls"), this.trigger("usingnativecontrols")) : (this.removeclass("vjs-using-native-controls"), this.trigger("usingcustomcontrols"))))) : !!this.usingnativecontrols_ }, e.prototype.error = function(t) { return void 0 === t ? this.error_ || null: null === t ? (this.error_ = t, this.removeclass("vjs-error"), void(this.errordisplay && this.errordisplay.close())) : (this.error_ = new rt(t), this.addclass("vjs-error"), ve.error("(code:" + this.error_.code + " " + rt.errortypes[this.error_.code] + ")", this.error_.message, this.error_), void this.trigger("error")) }, e.prototype.reportuseractivity = function(t) { this.useractivity_ = !0 }, e.prototype.useractive = function(t) { return void 0 !== t ? void((t = !!t) !== this.useractive_ && (this.useractive_ = t, t ? (this.useractivity_ = !0, this.removeclass("vjs-user-inactive"), this.addclass("vjs-user-active"), this.trigger("useractive")) : (this.useractivity_ = !1, this.tech_ && this.tech_.one("mousemove", function(t) { t.stoppropagation(), t.preventdefault() }), this.removeclass("vjs-user-active"), this.addclass("vjs-user-inactive"), this.trigger("userinactive")))) : this.useractive_ }, e.prototype.listenforuseractivity_ = function() { var t = void 0, e = void 0, i = void 0, n = ai(this, this.reportuseractivity), r = function(t) { t.screenx === e && t.screeny === i || (e = t.screenx, i = t.screeny, n()) }, s = function() { n(), this.clearinterval(t), t = this.setinterval(n, 250) }, o = function(e) { n(), this.clearinterval(t) }; this.on("mousedown", s), this.on("mousemove", r), this.on("mouseup", o), this.on("keydown", n), this.on("keyup", n); var a = void 0; this.setinterval(function() { if (this.useractivity_) { this.useractivity_ = !1, this.useractive(!0), this.cleartimeout(a); var t = this.options_.inactivitytimeout; t > 0 && (a = this.settimeout(function() { this.useractivity_ || this.useractive(!1) }, t)) } }, 250) }, e.prototype.playbackrate = function(t) { return void 0 !== t ? void this.techcall_("setplaybackrate", t) : this.tech_ && this.tech_.featuresplaybackrate ? this.techget_("playbackrate") : 1 }, e.prototype.defaultplaybackrate = function(t) { return void 0 !== t ? this.techcall_("setdefaultplaybackrate", t) : this.tech_ && this.tech_.featuresplaybackrate ? this.techget_("defaultplaybackrate") : 1 }, e.prototype.isaudio = function(t) { return void 0 !== t ? void(this.isaudio_ = !!t) : !!this.isaudio_ }, e.prototype.addtexttrack = function(t, e, i) { if (this.tech_) return this.tech_.addtexttrack(t, e, i) }, e.prototype.addremotetexttrack = function(t, e) { if (this.tech_) return this.tech_.addremotetexttrack(t, e) }, e.prototype.removeremotetexttrack = function() { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, e = t.track, i = void 0 === e ? arguments[0] : e; if (this.tech_) return this.tech_.removeremotetexttrack(i) }, e.prototype.getvideoplaybackquality = function() { return this.techget_("getvideoplaybackquality") }, e.prototype.videowidth = function() { return this.tech_ && this.tech_.videowidth && this.tech_.videowidth() || 0 }, e.prototype.videoheight = function() { return this.tech_ && this.tech_.videoheight && this.tech_.videoheight() || 0 }, e.prototype.language = function(t) { if (void 0 === t) return this.language_; this.language_ = string(t).tolowercase() }, e.prototype.languages = function() { return z(e.prototype.options_.languages, this.languages_) }, e.prototype.tojson = function() { var t = z(this.options_), e = t.tracks; t.tracks = []; for (var i = 0; i < e.length; i++) { var n = e[i]; n = z(n), n.player = void 0, t.tracks[i] = n } return t }, e.prototype.createmodal = function(t, e) { var i = this; e = e || {}, e.content = t || ""; var n = new di(this, e); return this.addchild(n), n.on("dispose", function() { i.removechild(n) }), n.open(), n }, e.gettagsettings = function(t) { var e = { sources: [], tracks: [] }, i = _(t), r = i["data-setup"]; if (g(t, "vjs-fluid") && (i.fluid = !0), null !== r) { var s = ei(r || "{}"), o = s[0], a = s[1]; o && ve.error(o), n(i, a) } if (n(e, i), t.haschildnodes()) for (var l = t.childnodes, c = 0, h = l.length; c < h; c++) { var p = l[c], u = p.nodename.tolowercase(); "source" === u ? e.sources.push(_(p)) : "track" === u && e.tracks.push(_(p)) } return e }, e.prototype.flexnotsupported_ = function() { var t = ce.createelement("i"); return ! ("flexbasis" in t.style || "webkitflexbasis" in t.style || "mozflexbasis" in t.style || "msflexbasis" in t.style || "msflexorder" in t.style) }, e } (bi); wn.names.foreach(function(t) { var e = wn[t]; os.prototype[e.gettername] = function() { return this.tech_ ? this.tech_[e.gettername]() : (this[e.privatename] = this[e.privatename] || new e.listclass, this[e.privatename]) } }), os.players = {}; var as = re.navigator; os.prototype.options_ = { techorder: nn.defaulttechorder_, html5: {}, flash: {}, inactivitytimeout: 2e3, playbackrates: [], children: ["medialoader", "posterimage", "texttrackdisplay", "loadingspinner", "bigplaybutton", "controlbar", "errordisplay", "texttracksettings"], language: as && (as.languages && as.languages[0] || as.userlanguage || as.language) || "en", languages: {}, notsupportedmessage: "no compatible source was found for this media." }, ["ended", "seeking", "seekable", "networkstate", "readystate"].foreach(function(t) { os.prototype[t] = function() { return this.techget_(t) } }), ss.foreach(function(t) { os.prototype["handletech" + q(t) + "_"] = function() { return this.trigger(t) } }), bi.registercomponent("player", os); var ls = {}, cs = function(t) { return ls.hasownproperty(t) }, hs = function(t) { return cs(t) ? ls[t] : void 0 }, ps = function(t, e) { t.activeplugins_ = t.activeplugins_ || {}, t.activeplugins_[e] = !0 }, us = function(t, e, i) { var n = (i ? "before": "") + "pluginsetup"; t.trigger(n, e), t.trigger(n + ":" + e.name, e) }, ds = function(t, e) { var i = function() { us(this, { name: t, plugin: e, instance: null }, !0); var i = e.apply(this, arguments); return ps(this, t), us(this, { name: t, plugin: e, instance: i }), i }; return object.keys(e).foreach(function(t) { i[t] = e[t] }), i }, fs = function(t, e) { return e.prototype.name = t, function() { us(this, { name: t, plugin: e, instance: null }, !0); for (var i = arguments.length, n = array(i), r = 0; r < i; r++) n[r] = arguments[r]; var s = new(function.prototype.bind.apply(e, [null].concat([this].concat(n)))); return this[t] = function() { return s }, us(this, s.geteventhash()), s } }, ms = function() { function t(e) { if (oe(this, t), this.constructor === t) throw new error("plugin must be sub-classed; not directly instantiated."); this.player = e, u(this), delete this.trigger, k(this, this.constructor.defaultstate), ps(e, this.name), this.dispose = ai(this, this.dispose), e.on("dispose", this.dispose) } return t.prototype.geteventhash = function() { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; return t.name = this.name, t.plugin = this.constructor, t.instance = this, t }, t.prototype.trigger = function(t) { var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; return w(this.eventbusel_, t, this.geteventhash(e)) }, t.prototype.handlestatechanged = function(t) {}, t.prototype.dispose = function() { var t = this.name, e = this.player; this.trigger("dispose"), this.off(), e.off("dispose", this.dispose), e.activeplugins_[t] = !1, this.player = this.state = null, e[t] = fs(t, ls[t]) }, t.isbasic = function(e) { var i = "string" == typeof e ? hs(e) : e; return "function" == typeof i && !t.prototype.isprototypeof(i.prototype) }, t.registerplugin = function(e, i) { if ("string" != typeof e) throw new error('illegal plugin name, "' + e + '", must be a string, was ' + (void 0 === e ? "undefined": de(e)) + "."); if (cs(e)) ve.warn('a plugin named "' + e + '" already exists. you may want to avoid re-registering plugins!'); else if (os.prototype.hasownproperty(e)) throw new error('illegal plugin name, "' + e + '", cannot share a name with an existing player method!'); if ("function" != typeof i) throw new error('illegal plugin for "' + e + '", must be a function, was ' + (void 0 === i ? "undefined": de(i)) + "."); return ls[e] = i, "plugin" !== e && (t.isbasic(i) ? os.prototype[e] = ds(e, i) : os.prototype[e] = fs(e, i)), i }, t.deregisterplugin = function(t) { if ("plugin" === t) throw new error("cannot de-register base plugin."); cs(t) && (delete ls[t], delete os.prototype[t]) }, t.getplugins = function() { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : object.keys(ls), e = void 0; return t.foreach(function(t) { var i = hs(t); i && (e = e || {}, e[t] = i) }), e }, t.getpluginversion = function(t) { var e = hs(t); return e && e.version || "" }, t } (); ms.getplugin = hs, ms.base_plugin_name = "plugin", ms.registerplugin("plugin", ms), os.prototype.usingplugin = function(t) { return !! this.activeplugins_ && !0 === this.activeplugins_[t] }, os.prototype.hasplugin = function(t) { return !! cs(t) }; var vs = function(t, e) { if ("function" != typeof e && null !== e) throw new typeerror("super expression must either be null or a function, not " + (void 0 === e ? "undefined": de(e))); t.prototype = object.create(e && e.prototype, { constructor: { value: t, enumerable: !1, writable: !0, configurable: !0 } }), e && (t.super_ = e) }, gs = function(t) { var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, i = function() { t.apply(this, arguments) }, n = {}; "object" === (void 0 === e ? "undefined": de(e)) ? (e.constructor !== object.prototype.constructor && (i = e.constructor), n = e) : "function" == typeof e && (i = e), vs(i, t); for (var r in n) n.hasownproperty(r) && (i.prototype[r] = n[r]); return i }; if ("undefined" == typeof htmlvideoelement && p() && (ce.createelement("video"), ce.createelement("audio"), ce.createelement("track")), jt.hooks_ = {}, jt.hooks = function(t, e) { return jt.hooks_[t] = jt.hooks_[t] || [], e && (jt.hooks_[t] = jt.hooks_[t].concat(e)), jt.hooks_[t] }, jt.hook = function(t, e) { jt.hooks(t, e) }, jt.removehook = function(t, e) { var i = jt.hooks(t).indexof(e); return ! (i <= -1 || (jt.hooks_[t] = jt.hooks_[t].slice(), jt.hooks_[t].splice(i, 1), 0)) }, !0 !== re.videojs_no_dynamic_style && p()) { var ys = qe(".vjs-styles-defaults"); if (!ys) { ys = si("vjs-styles-defaults"); var bs = qe("head"); bs && bs.insertbefore(ys, bs.firstchild), oi(ys, "\n .video-js {\n width: 300px;\n height: 150px;\n }\n\n .vjs-fluid {\n padding-top: 56.25%\n }\n ") } } return q(1, jt), jt.version = ee, jt.options = os.prototype.options_, jt.getplayers = function() { return os.players }, jt.players = os.players, jt.getcomponent = bi.getcomponent, jt.registercomponent = function(t, e) { nn.istech(e) && ve.warn("the " + t + " tech was registered as a component. it should instead be registered using videojs.registertech(name, tech)"), bi.registercomponent.call(bi, t, e) }, jt.gettech = nn.gettech, jt.registertech = nn.registertech, jt.use = ht, jt.browser = je, jt.touch_enabled = ie, jt.extend = gs, jt.mergeoptions = z, jt.bind = ai, jt.registerplugin = ms.registerplugin, jt.plugin = function(t, e) { return ve.warn("videojs.plugin() is deprecated; use videojs.registerplugin() instead"), ms.registerplugin(t, e) }, jt.getplugins = ms.getplugins, jt.getplugin = ms.getplugin, jt.getpluginversion = ms.getpluginversion, jt.addlanguage = function(t, e) { var i; return t = ("" + t).tolowercase(), jt.options.languages = z(jt.options.languages, (i = {}, i[t] = e, i)), jt.options.languages[t] }, jt.log = ve, jt.createtimerange = jt.createtimeranges = it, jt.formattime = kt, jt.parseurl = ui, jt.iscrossorigin = $i, jt.eventtarget = ci, jt.on = y, jt.one = g, jt.off = v, jt.trigger = w, jt.xhr = hn, jt.texttrack = dn, jt.audiotrack = fn, jt.videotrack = mn, ["isel", "istextnode", "createel", "hasclass", "addclass", "removeclass", "toggleclass", "setattributes", "getattributes", "emptyel", "appendcontent", "insertcontent"].foreach(function(t) { jt[t] = function() { return ve.warn("videojs." + t + "() is deprecated; use videojs.dom." + t + "() instead"), ke[t].apply(null, arguments) } }), jt.computedstyle = a, jt.dom = ke, jt.url = zi, jt }), function() { ! function(t) { var e = t && t.videojs; e && (e.cdn_version = "6.2.5") } (window), function(t, e, i, n, r, s, o) { e && !1 !== e.help_improve_videojs && (r.random() > .01 || (s = e.location, o = e.videojs || {}, t.src = "//www.google-analytics.com/__utm.gif?utmwv=5.4.2&utmac=ua-16505296-3&utmn=1&utmhn=" + n(s.hostname) + "&utmsr=" + e.screen.availwidth + "x" + e.screen.availheight + "&utmul=" + (i.language || i.userlanguage || "").tolowercase() + "&utmr=" + n(s.href) + "&utmp=" + n(s.hostname + s.pathname) + "&utmcc=__utma%3d1." + r.floor(1e10 * r.random()) + ".1.1.1.1%3b&utme=8(vjsv*cdnv)9(" + o.version + "*" + o.cdn_version + ")")) } (new image, window, navigator, encodeuricomponent, math) } ();