PageSourceSearch

https://www.mapuche-nation.org/esp/wp-content/themes/mapuche/assets/vendors/plyr/plyr.js?ver=2.3.8

js mapuche-nation.org collected 2026-10-02 07:08:24 UTC 54,318 bytes, 1,270 lines download raw bytes

1!function (e, t) {
2	"use strict";
3	"object" == typeof module && "object" == typeof module.exports ? module.exports = t(e, document) : "function" == typeof define && define.amd ? define([], function () {
4						return t(e, document)
5					}) : e.plyr = t(e, document)
6}("undefined" != typeof window ? window : this, function (e, t) {
7	"use strict";
8	function n() {
9		var e, n, r, a = navigator.userAgent, s = navigator.appName, o = "" + parseFloat(navigator.appVersion), i = parseInt(navigator.appVersion, 10), l = !1, u = !1, c = !1, d = !1;
10		return navigator.appVersion.indexOf("Windows NT") !== -1 && navigator.appVersion.indexOf("rv:11") !== -1 ? (l = !0, s = "IE", o = "11") : (n = a.indexOf("MSIE")) !== -1 ? (l = !0, s = "IE", o = a.substring(n + 5)) : (n = a.indexOf("Chrome")) !== -1 ? (c = !0, s = "Chrome", o = a.substring(n + 7)) : (n = a.indexOf("Safari")) !== -1 ? (d = !0, s = "Safari", o = a.substring(n + 7), (n = a.indexOf("Version")) !== -1 && (o = a.substring(n + 8))) : (n = a.indexOf("Firefox")) !== -1 ? (u = !0, s = "Firefox", o = a.substring(n + 8)) : (e = a.lastIndexOf(" ") + 1) < (n = a.lastIndexOf("/")) && (s = a.substring(e, n), o = a.substring(n + 1), s.toLowerCase() === s.toUpperCase() && (s = navigator.appName)), (r = o.indexOf(";")) !== -1 && (o = o.substring(0, r)), (r = o.indexOf(" ")) !== -1 && (o = o.substring(0, r)), i = parseInt("" + o, 10), isNaN(i) && (o = "" + parseFloat(navigator.appVersion), i = parseInt(navigator.appVersion, 10)), {
11			name     : s,
12			version  : i,
13			isIE     : l,
14			isFirefox: u,
15			isChrome : c,
16			isSafari : d,
17			isIos    : /(iPad|iPhone|iPod)/g.test(navigator.platform),
18			isIphone : /(iPhone|iPod)/g.test(navigator.userAgent),
19			isTouch  : "ontouchstart" in t.documentElement
20		}
21	}
22
23	function r(e, t) {
24		var n = e.media;
25		if ( "video" === e.type )switch ( t ) {
26			case"video/webm":
27				return !(!n.canPlayType || !n.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/no/, ""));
28			case"video/mp4":
29				return !(!n.canPlayType || !n.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"').replace(/no/, ""));
30			case"video/ogg":
31				return !(!n.canPlayType || !n.canPlayType('video/ogg; codecs="theora"').replace(/no/, ""))
32		} else if ( "audio" === e.type )switch ( t ) {
33			case"audio/mpeg":
34				return !(!n.canPlayType || !n.canPlayType("audio/mpeg;").replace(/no/, ""));
35			case"audio/ogg":
36				return !(!n.canPlayType || !n.canPlayType('audio/ogg; codecs="vorbis"').replace(/no/, ""));
37			case"audio/wav":
38				return !(!n.canPlayType || !n.canPlayType('audio/wav; codecs="1"').replace(/no/, ""))
39		}
40		return !1
41	}
42
43	function a(e) {
44		if ( !t.querySelectorAll('script[src="' + e + '"]').length ) {
45			var n = t.createElement("script");
46			n.src = e;
47			var r = t.getElementsByTagName("script")[ 0 ];
48			r.parentNode.insertBefore(n, r)
49		}
50	}
51
52	function s(e, t) {
53		return Array.prototype.indexOf && e.indexOf(t) !== -1
54	}
55
56	function o(e, t, n) {
57		return e.replace(new RegExp(t.replace(/([.*+?\^=!:${}()|\[\]\/\\])/g, "\\$1"), "g"), n)
58	}
59
60	function i(e, t) {
61		e.length || (e = [ e ]);
62		for ( var n = e.length - 1; n >= 0; n-- ) {
63			var r = n > 0 ? t.cloneNode(!0) : t, a = e[ n ], s = a.parentNode, o = a.nextSibling;
64			return r.appendChild(a), o ? s.insertBefore(r, o) : s.appendChild(r), r
65		}
66	}
67
68	function l(e) {
69		e && e.parentNode.removeChild(e)
70	}
71
72	function u(e, t) {
73		e.insertBefore(t, e.firstChild)
74	}
75
76	function c(e, t) {
77		for ( var n in t )e.setAttribute(n, O.boolean(t[ n ]) && t[ n ] ? "" : t[ n ])
78	}
79
80	function d(e, n, r) {
81		var a = t.createElement(e);
82		c(a, r), u(n, a)
83	}
84
85	function p(e) {
86		return e.replace(".", "")
87	}
88
89	function m(e, t, n) {
90		if ( e )if ( e.classList ) e.classList[ n ? "add" : "remove" ](t); else {
91			var r = (" " + e.className + " ").replace(/\s+/g, " ").replace(" " + t + " ", "");
92			e.className = r + (n ? " " + t : "")
93		}
94	}
95
96	function f(e, t) {
97		return !!e && (e.classList ? e.classList.contains(t) : new RegExp("(\\s|^)" + t + "(\\s|$)").test(e.className))
98	}
99
100	function y(e, n) {
101		var r = Element.prototype, a = r.matches || r.webkitMatchesSelector || r.mozMatchesSelector || r.msMatchesSelector || function (e) {
102					return [].indexOf.call(t.querySelectorAll(e), this) !== -1
103				};
104		return a.call(e, n)
105	}
106
107	function b(e, t, n, r, a) {
108		g(e, t, function (t) {
109			n && n.apply(e, [ t ]), r.apply(e, [ t ])
110		}, a)
111	}
112
113	function v(e, t, n, r, a) {
114		var s = t.split(" ");
115		if ( O.boolean(a) || (a = !1), e instanceof NodeList )for ( var o = 0; o < e.length; o++ )e[ o ] instanceof Node && v(e[ o ], arguments[ 1 ], arguments[ 2 ], arguments[ 3 ]); else for ( var i = 0; i < s.length; i++ )e[ r ? "addEventListener" : "removeEventListener" ](s[ i ], n, a)
116	}
117
118	function g(e, t, n, r) {
119		e && v(e, t, n, !0, r)
120	}
121
122	function h(e, t, n, r) {
123		if ( e && t ) {
124			O.boolean(n) || (n = !1);
125			var a = new CustomEvent(t, { bubbles: n, detail: r });
126			e.dispatchEvent(a)
127		}
128	}
129
130	function k(e, t) {
131		if ( e )return t = O.boolean(t) ? t : !e.getAttribute("aria-pressed"), e.setAttribute("aria-pressed", t), t
132	}
133
134	function w(e, t) {
135		return 0 === e || 0 === t || isNaN(e) || isNaN(t) ? 0 : (e / t * 100).toFixed(2)
136	}
137
138	function x() {
139		var e = arguments;
140		if ( e.length ) {
141			if ( 1 === e.length )return e[ 0 ];
142			for ( var t = Array.prototype.shift.call(e), n = e.length, r = 0; r < n; r++ ) {
143				var a = e[ r ];
144				for ( var s in a )a[ s ] && a[ s ].constructor && a[ s ].constructor === Object ? (t[ s ] = t[ s ] || {}, x(t[ s ], a[ s ])) : t[ s ] = a[ s ]
145			}
146			return t
147		}
148	}
149
150	function T(e) {
151		var t = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/;
152		return e.match(t) ? RegExp.$2 : e
153	}
154
155	function S(e) {
156		var t = /^.*(vimeo.com\/|video\/)(\d+).*/;
157		return e.match(t) ? RegExp.$2 : e
158	}
159
160	function _() {
161		var e = {
162			supportsFullScreen    : !1, isFullScreen: function () {
163				return !1
164			}, requestFullScreen  : function () {
165			}, cancelFullScreen   : function () {
166			}, fullScreenEventName: "", element: null, prefix: ""
167		}, n = "webkit o moz ms khtml".split(" ");
168		if ( O.undefined(t.cancelFullScreen) )for ( var r = 0, a = n.length; r < a; r++ ) {
169			if ( e.prefix = n[ r ], !O.undefined(t[ e.prefix + "CancelFullScreen" ]) ) {
170				e.supportsFullScreen = !0;
171				break
172			}
173			if ( !O.undefined(t.msExitFullscreen) && t.msFullscreenEnabled ) {
174				e.prefix = "ms", e.supportsFullScreen = !0;
175				break
176			}
177		} else e.supportsFullScreen = !0;
178		return e.supportsFullScreen && (e.fullScreenEventName = "ms" === e.prefix ? "MSFullscreenChange" : e.prefix + "fullscreenchange", e.isFullScreen = function (e) {
179			switch ( O.undefined(e) && (e = t.body), this.prefix ) {
180				case"":
181					return t.fullscreenElement === e;
182				case"moz":
183					return t.mozFullScreenElement === e;
184				default:
185					return t[ this.prefix + "FullscreenElement" ] === e
186			}
187		}, e.requestFullScreen = function (e) {
188			return O.undefined(e) && (e = t.body), "" === this.prefix ? e.requestFullScreen() : e[ this.prefix + ("ms" === this.prefix ? "RequestFullscreen" : "RequestFullScreen") ]()
189		}, e.cancelFullScreen = function () {
190			return "" === this.prefix ? t.cancelFullScreen() : t[ this.prefix + ("ms" === this.prefix ? "ExitFullscreen" : "CancelFullScreen") ]()
191		}, e.element = function () {
192			return "" === this.prefix ? t.fullscreenElement : t[ this.prefix + "FullscreenElement" ]
193		}), e
194	}
195
196	function E(v, E) {
197		function A(e, t, n, r) {
198			h(e, t, n, x({}, r, { plyr: Be }))
199		}
200
201		function j(t, n) {
202			E.debug && e.console && (n = Array.prototype.slice.call(n), O.string(E.logPrefix) && E.logPrefix.length && n.unshift(E.logPrefix), console[ t ].apply(console, n))
203		}
204
205		function V() {
206			return { url: E.iconUrl, absolute: 0 === E.iconUrl.indexOf("http") || Ue.browser.isIE }
207		}
208
209		function R() {
210			var e = [], t = V(), n = (t.absolute ? "" : t.url) + "#" + E.iconPrefix;
211			return s(E.controls, "play-large") && e.push('<button type="button" data-plyr="play" class="plyr__play-large">', '<svg><use xlink:href="' + n + '-play" /></svg>', '<span class="plyr__sr-only">' + E.i18n.play + "</span>", "</button>"), e.push('<div class="plyr__controls">'), s(E.controls, "restart") && e.push('<button type="button" data-plyr="restart">', '<svg><use xlink:href="' + n + '-restart" /></svg>', '<span class="plyr__sr-only">' + E.i18n.restart + "</span>", "</button>"), s(E.controls, "rewind") && e.push('<button type="button" data-plyr="rewind">', '<svg><use xlink:href="' + n + '-rewind" /></svg>', '<span class="plyr__sr-only">' + E.i18n.rewind + "</span>", "</button>"), s(E.controls, "play") && e.push('<button type="button" data-plyr="play">', '<svg><use xlink:href="' + n + '-play" /></svg>', '<span class="plyr__sr-only">' + E.i18n.play + "</span>", "</button>", '<button type="button" data-plyr="pause">', '<svg><use xlink:href="' + n + '-pause" /></svg>', '<span class="plyr__sr-only">' + E.i18n.pause + "</span>", "</button>"), s(E.controls, "fast-forward") && e.push('<button type="button" data-plyr="fast-forward">', '<svg><use xlink:href="' + n + '-fast-forward" /></svg>', '<span class="plyr__sr-only">' + E.i18n.forward + "</span>", "</button>"), s(E.controls, "progress") && (e.push('<span class="plyr__progress">', '<label for="seek{id}" class="plyr__sr-only">Seek</label>', '<input id="seek{id}" class="plyr__progress--seek" type="range" min="0" max="100" step="0.1" value="0" data-plyr="seek">', '<progress class="plyr__progress--played" max="100" value="0" role="presentation"></progress>', '<progress class="plyr__progress--buffer" max="100" value="0">', "<span>0</span>% " + E.i18n.buffered, "</progress>"), E.tooltips.seek && e.push('<span class="plyr__tooltip">00:00</span>'), e.push("</span>")), s(E.controls, "current-time") && e.push('<span class="plyr__time">', '<span class="plyr__sr-only">' + E.i18n.currentTime + "</span>", '<span class="plyr__time--current">00:00</span>', "</span>"), s(E.controls, "duration") && e.push('<span class="plyr__time">', '<span class="plyr__sr-only">' + E.i18n.duration + "</span>", '<span class="plyr__time--duration">00:00</span>', "</span>"), s(E.controls, "mute") && e.push('<button type="button" data-plyr="mute">', '<svg class="icon--muted"><use xlink:href="' + n + '-muted" /></svg>', '<svg><use xlink:href="' + n + '-volume" /></svg>', '<span class="plyr__sr-only">' + E.i18n.toggleMute + "</span>", "</button>"), s(E.controls, "volume") && e.push('<span class="plyr__volume">', '<label for="volume{id}" class="plyr__sr-only">' + E.i18n.volume + "</label>", '<input id="volume{id}" class="plyr__volume--input" type="range" min="' + E.volumeMin + '" max="' + E.volumeMax + '" value="' + E.volume 
211+ '" data-plyr="volume">', '<progress class="plyr__volume--display" max="' + E.volumeMax + '" value="' + E.volumeMin + '" role="presentation"></progress>', "</span>"), s(E.controls, "captions") && e.push('<button type="button" data-plyr="captions">', '<svg class="icon--captions-on"><use xlink:href="' + n + '-captions-on" /></svg>', '<svg><use xlink:href="' + n + '-captions-off" /></svg>', '<span class="plyr__sr-only">' + E.i18n.toggleCaptions + "</span>", "</button>"), s(E.controls, "fullscreen") && e.push('<button type="button" data-plyr="fullscreen">', '<svg class="icon--exit-fullscreen"><use xlink:href="' + n + '-exit-fullscreen" /></svg>', '<svg><use xlink:href="' + n + '-enter-fullscreen" /></svg>', '<span class="plyr__sr-only">' + E.i18n.toggleFullscreen + "</span>", "</button>"), e.push("</div>"), e.join("")
212		}
213
214		function q() {
215			if ( Ue.supported.full && ("audio" !== Ue.type || E.fullscreen.allowAudio) && E.fullscreen.enabled ) {
216				var e = N.supportsFullScreen;
217				e || E.fullscreen.fallback && !X() ? (Je((e ? "Native" : "Fallback") + " fullscreen enabled"), m(Ue.container, E.classes.fullscreen.enabled, !0)) : Je("Fullscreen not supported and fallback disabled"), Ue.buttons && Ue.buttons.fullscreen && k(Ue.buttons.fullscreen, !1), $()
218			}
219		}
220
221		function D() {
222			if ( "video" === Ue.type ) {
223				U(E.selectors.captions) || Ue.videoContainer.insertAdjacentHTML("afterbegin", '<div class="' + p(E.selectors.captions) + '"></div>'), Ue.usingTextTracks = !1, Ue.media.textTracks && (Ue.usingTextTracks = !0);
224				for ( var e, t = "", n = Ue.media.childNodes, r = 0; r < n.length; r++ )"track" === n[ r ].nodeName.toLowerCase() && (e = n[ r ].kind, "captions" !== e && "subtitles" !== e || (t = n[ r ].getAttribute("src")));
225				if ( Ue.captionExists = !0, "" === t ? (Ue.captionExists = !1, Je("No caption track found")) : Je("Caption track found; URI: " + t), Ue.captionExists ) {
226					for ( var a = Ue.media.textTracks, s = 0; s < a.length; s++ )a[ s ].mode = "hidden";
227					if ( Y(Ue), (Ue.browser.isIE && Ue.browser.version >= 10 || Ue.browser.isFirefox && Ue.browser.version >= 31) && (Je("Detected browser with known TextTrack issues - using manual fallback"), Ue.usingTextTracks = !1), Ue.usingTextTracks ) {
228						Je("TextTracks supported");
229						for ( var o = 0; o < a.length; o++ ) {
230							var i = a[ o ];
231							"captions" !== i.kind && "subtitles" !== i.kind || g(i, "cuechange", function () {
232								this.activeCues[ 0 ] && "text" in this.activeCues[ 0 ] ? H(this.activeCues[ 0 ].getCueAsHTML()) : H()
233							})
234						}
235					} else if ( Je("TextTracks not supported so rendering captions manually"), Ue.currentCaption = "", Ue.captions = [], "" !== t ) {
236						var l = new XMLHttpRequest;
237						l.onreadystatechange = function () {
238							if ( 4 === l.readyState )if ( 200 === l.status ) {
239								var e, t = [], n = l.responseText, r = "\r\n";
240								n.indexOf(r + r) === -1 && (r = n.indexOf("\r\r") !== -1 ? "\r" : "\n"), t = n.split(r + r);
241								for ( var a = 0; a < t.length; a++ ) {
242									e = t[ a ], Ue.captions[ a ] = [];
243									var s = e.split(r), o = 0;
244									s[ o ].indexOf(":") === -1 && (o = 1), Ue.captions[ a ] = [ s[ o ], s[ o + 1 ] ]
245								}
246								Ue.captions.shift(), Je("Successfully loaded the caption file via AJAX")
247							} else ze(E.logPrefix + "There was a problem loading the caption file via AJAX")
248						}, l.open("get", t, !0), l.send()
249					}
250				} else m(Ue.container, E.classes.captions.enabled)
251			}
252		}
253
254		function H(e) {
255			var n = U(E.selectors.captions), r = t.createElement("span");
256			n.innerHTML = "", O.undefined(e) && (e = ""), O.string(e) ? r.innerHTML = e.trim() : r.appendChild(e), n.appendChild(r);
257			n.offsetHeight
258		}
259
260		function W(e) {
261			function t(e, t) {
262				var n = [];
263				n = e.split(" --> ");
264				for ( var r = 0; r < n.length; r++ )n[ r ] = n[ r ].replace(/(\d+:\d+:\d+\.\d+).*/, "$1");
265				return a(n[ t ])
266			}
267
268			function n(e) {
269				return t(e, 0)
270			}
271
272			function r(e) {
273				return t(e, 1)
274			}
275
276			function a(e) {
277				if ( null === e || void 0 === e )return 0;
278				var t, n = [], r = [];
279				return n = e.split(","), r = n[ 0 ].split(":"), t = Math.floor(60 * r[ 0 ] * 60) + Math.floor(60 * r[ 1 ]) + Math.floor(r[ 2 ])
280			}
281
282			if ( !Ue.usingTextTracks && "video" === Ue.type && Ue.supported.full && (Ue.subcount = 0, e = O.number(e) ? e : Ue.media.currentTime, Ue.captions[ Ue.subcount ]) ) {
283				for ( ; r(Ue.captions[ Ue.subcount ][ 0 ]) < e.toFixed(1); )if ( Ue.subcount++, Ue.subcount > Ue.captions.length - 1 ) {
284					Ue.subcount = Ue.captions.length - 1;
285					break
286				}
287				Ue.media.currentTime.toFixed(1) >= n(Ue.captions[ Ue.subcount ][ 0 ]) && Ue.media.currentTime.toFixed(1) <= r(Ue.captions[ Ue.subcount ][ 0 ]) ? (Ue.currentCaption = Ue.captions[ Ue.subcount ][ 1 ], H(Ue.currentCaption)) : H()
288			}
289		}
290
291		function Y() {
292			if ( Ue.buttons.captions ) {
293				m(Ue.container, E.classes.captions.enabled, !0);
294				var e = Ue.storage.captionsEnabled;
295				O.boolean(e) || (e = E.captions.defaultActive), e && (m(Ue.container, E.classes.captions.active, !0), k(Ue.buttons.captions, !0))
296			}
297		}
298
299		function B(e) {
300			return Ue.container.querySelectorAll(e)
301		}
302
303		function U(e) {
304			return B(e)[ 0 ]
305		}
306
307		function X() {
308			try {
309				return e.self !== e.top
310			} catch ( e ) {
311				return !0
312			}
313		}
314
315		function $() {
316			function e(e) {
317				9 === e.which && Ue.isFullscreen && (e.target !== r || e.shiftKey ? e.target === n && e.shiftKey && (e.preventDefault(), r.focus()) : (e.preventDefault(), n.focus()))
318			}
319
320			var t = B("input:not([disabled]), button:not([disabled])"), n = t[ 0 ], r = t[ t.length - 1 ];
321			g(Ue.container, "keydown", e)
322		}
323
324		function J(e, t) {
325			if ( O.string(t) ) d(e, Ue.media, { src: t }); else if ( t.constructor === Array )for ( var n = t.length - 1; n >= 0; n-- )d(e, Ue.media, t[ n ])
326		}
327
328		function z() {
329			if ( E.loadSprite ) {
330				var e = V();
331				e.absolute ? (Je("AJAX loading absolute SVG sprite" + (Ue.browser.isIE ? " (due to IE)" : "")), C(e.url, "sprite-plyr")) : Je("Sprite will be used as external resource directly")
332			}
333			var n = E.html;
334			Je("Injecting custom controls"), n || (n = R()), n = o(n, "{seektime}", E.seekTime), n = o(n, "{id}", Math.floor(1e4 * Math.random()));
335			var r;
336			if ( O.string(E.selectors.controls.container) && (r = t.querySelector(E.selectors.controls.container)), O.htmlElement(r) || (r = Ue.container), r.insertAdjacentHTML("beforeend", n), E.tooltips.controls )for ( var a = B([ E.selectors.controls.wrapper, " ", E.selectors.labels, " .", E.classes.hidden ].join("")), s = a.length - 1; s >= 0; s-- ) {
337				var i = a[ s ];
338				m(i, E.classes.hidden, !1), m(i, E.classes.tooltip, !0)
339			}
340		}
341
342		function G() {
343			try {
344				return Ue.controls = U(E.selectors.controls.wrapper), Ue.buttons = {}, Ue.buttons.seek = U(E.selectors.buttons.seek), Ue.buttons.play = B(E.selectors.buttons.play), Ue.buttons.pause = U(E.selectors.buttons.pause), Ue.buttons.restart = U(E.selectors.buttons.restart), Ue.buttons.rewind = U(E.selectors.buttons.rewind), Ue.buttons.forward = U(E.selectors.buttons.forward), Ue.buttons.fullscreen = U(E.selectors.buttons.fullscreen), Ue.buttons.mute = U(E.selectors.buttons.mute), Ue.buttons.captions = 
344U(E.selectors.buttons.captions), Ue.progress = {}, Ue.progress.container = U(E.selectors.progress.container), Ue.progress.buffer = {}, Ue.progress.buffer.bar = U(E.selectors.progress.buffer), Ue.progress.buffer.text = Ue.progress.buffer.bar && Ue.progress.buffer.bar.getElementsByTagName("span")[ 0 ], Ue.progress.played = U(E.selectors.progress.played), Ue.progress.tooltip = Ue.progress.container && Ue.progress.container.querySelector("." + E.classes.tooltip), Ue.volume = {}, Ue.volume.input = U(E.selectors.volume.input), Ue.volume.display = U(E.selectors.volume.display), Ue.duration = U(E.selectors.duration), Ue.currentTime = U(E.selectors.currentTime), Ue.seekTime = B(E.selectors.seekTime), !0
345			} catch ( e ) {
346				return ze("It looks like there is a problem with your controls HTML"), Q(!0), !1
347			}
348		}
349
350		function K() {
351			m(Ue.container, E.selectors.container.replace(".", ""), Ue.supported.full)
352		}
353
354		function Q(e) {
355			e && s(E.types.html5, Ue.type) ? Ue.media.setAttribute("controls", "") : Ue.media.removeAttribute("controls")
356		}
357
358		function Z(e) {
359			var t = E.i18n.play;
360			if ( O.string(E.title) && E.title.length && (t += ", " + E.title, Ue.container.setAttribute("aria-label", E.title)), Ue.supported.full && Ue.buttons.play )for ( var n = Ue.buttons.play.length - 1; n >= 0; n-- )Ue.buttons.play[ n ].setAttribute("aria-label", t);
361			O.htmlElement(e) && e.setAttribute("title", E.i18n.frameTitle.replace("{title}", E.title))
362		}
363
364		function ee() {
365			var t = null;
366			Ue.storage = {}, L.supported && E.storage.enabled && (e.localStorage.removeItem("plyr-volume"), t = e.localStorage.getItem(E.storage.key), t && (/^\d+(\.\d+)?$/.test(t) ? te({ volume: parseFloat(t) }) : Ue.storage = JSON.parse(t)))
367		}
368
369		function te(t) {
370			L.supported && E.storage.enabled && (x(Ue.storage, t), e.localStorage.setItem(E.storage.key, JSON.stringify(Ue.storage)))
371		}
372
373		function ne() {
374			if ( !Ue.media )return void ze("No media element found!");
375			if ( Ue.supported.full && (m(Ue.container, E.classes.type.replace("{0}", Ue.type), !0), s(E.types.embed, Ue.type) && m(Ue.container, E.classes.type.replace("{0}", "video"), !0), m(Ue.container, E.classes.stopped, E.autoplay), m(Ue.ontainer, E.classes.isIos, Ue.browser.isIos), m(Ue.container, E.classes.isTouch, Ue.browser.isTouch), "video" === Ue.type) ) {
376				var e = t.createElement("div");
377				e.setAttribute("class", E.classes.videoWrapper), i(Ue.media, e), Ue.videoContainer = e
378			}
379			s(E.types.embed, Ue.type) && re()
380		}
381
382		function re() {
383			var n, r = t.createElement("div"), s = Ue.type + "-" + Math.floor(1e4 * Math.random());
384			switch ( Ue.type ) {
385				case"youtube":
386					n = T(Ue.embedId);
387					break;
388				case"vimeo":
389					n = S(Ue.embedId);
390					break;
391				default:
392					n = Ue.embedId
393			}
394			for ( var o = B('[id^="' + Ue.type + '-"]'), i = o.length - 1; i >= 0; i-- )l(o[ i ]);
395			if ( m(Ue.media, E.classes.videoWrapper, !0), m(Ue.media, E.classes.embedWrapper, !0), "youtube" === Ue.type ) Ue.media.appendChild(r), r.setAttribute("id", s), O.object(e.YT) ? se(n, r) : (a(E.urls.youtube.api), e.onYouTubeReadyCallbacks = e.onYouTubeReadyCallbacks || [], e.onYouTubeReadyCallbacks.push(function () {
396						se(n, r)
397					}), e.onYouTubeIframeAPIReady = function () {
398						e.onYouTubeReadyCallbacks.forEach(function (e) {
399							e()
400						})
401					}); else if ( "vimeo" === Ue.type )if ( Ue.supported.full ? Ue.media.appendChild(r) : r = Ue.media, r.setAttribute("id", s), O.object(e.Vimeo) ) oe(n, r); else {
402				a(E.urls.vimeo.api);
403				var u = e.setInterval(function () {
404					O.object(e.Vimeo) && (e.clearInterval(u), oe(n, r))
405				}, 50)
406			} else if ( "soundcloud" === Ue.type ) {
407				var d = t.createElement("iframe");
408				d.loaded = !1, g(d, "load", function () {
409					d.loaded = !0
410				}), c(d, {
411					src: "https://w.soundcloud.com/player/?url=https://api.soundcloud.com/tracks/" + n,
412					id : s
413				}), r.appendChild(d), Ue.media.appendChild(r), e.SC || a(E.urls.soundcloud.api);
414				var p = e.setInterval(function () {
415					e.SC && d.loaded && (e.clearInterval(p), ie.call(d))
416				}, 50)
417			}
418		}
419
420		function ae() {
421			Ue.supported.full && (We(), Ye()), Z(U("iframe"))
422		}
423
424		function se(t, n) {
425			Ue.embed = new e.YT.Player(n.id, {
426				videoId   : t,
427				playerVars: {
428					autoplay      : E.autoplay ? 1 : 0,
429					controls      : Ue.supported.full ? 0 : 1,
430					rel           : 0,
431					showinfo      : 0,
432					iv_load_policy: 3,
433					cc_load_policy: E.captions.defaultActive ? 1 : 0,
434					cc_lang_pref  : "en",
435					wmode         : "transparent",
436					modestbranding: 1,
437					disablekb     : 1,
438					origin        : "*"
439				},
440				events    : {
441					onError         : function (e) {
442						A(Ue.container, "error", !0, { code: e.data, embed: e.target })
443					}, onReady      : function (t) {
444						var n = t.target;
445						Ue.media.play = function () {
446							n.playVideo(), Ue.media.paused = !1
447						}, Ue.media.pause = function () {
448							n.pauseVideo(), Ue.media.paused = !0
449						}, Ue.media.stop = function () {
450							n.stopVideo(), Ue.media.paused = !0
451						}, Ue.media.duration = n.getDuration(), Ue.media.paused = !0, Ue.media.currentTime = 0, Ue.media.muted = n.isMuted(), E.title = n.getVideoData().title, Ue.supported.full && Ue.media.querySelector("iframe").setAttribute("tabindex", "-1"), ae(), A(Ue.media, "timeupdate"), A(Ue.media, "durationchange"), e.clearInterval(Xe.buffering), Xe.buffering = e.setInterval(function () {
452							Ue.media.buffered = n.getVideoLoadedFraction(), (null === Ue.media.lastBuffered || Ue.media.lastBuffered < Ue.media.buffered) && A(Ue.media, "progress"), Ue.media.lastBuffered = Ue.media.buffered, 1 === Ue.media.buffered && (e.clearInterval(Xe.buffering), A(Ue.media, "canplaythrough"))
453						}, 200)
454					}, onStateChange: function (t) {
455						var n = t.target;
456						switch ( e.clearInterval(Xe.playing), t.data ) {
457							case 0:
458								Ue.media.paused = !0, A(Ue.media, "ended");
459								break;
460							case 1:
461								Ue.media.paused = !1, Ue.media.seeking && A(Ue.media, "seeked"), Ue.media.seeking = !1, A(Ue.media, "play"), A(Ue.media, "playing"), Xe.playing = e.setInterval(function () {
462									Ue.media.currentTime = n.getCurrentTime(), A(Ue.media, "timeupdate")
463								}, 100), Ue.media.duration !== n.getDuration() && (Ue.media.duration = n.getDuration(), A(Ue.media, "durationchange"));
464								break;
465							case 2:
466								Ue.media.paused = !0, A(Ue.media, "pause")
467						}
468						A(Ue.container, "statechange", !1, { code: t.data })
469					}
470				}
471			})
472		}
473
474		function oe(t, n) {
475			Ue.embed = new e.Vimeo.Player(n, {
476				id      : parseInt(t),
477				loop    : E.loop,
478				autoplay: E.autoplay,
479				byline  : !1,
480				portrait: !1,
481				title   : !1
482			}), Ue.media.play = function () {
483				Ue.embed.play(), Ue.media.paused = !1
484			}, Ue.media.pause = function () {
485				Ue.embed.pause(), Ue.media.paused = !0
486			}, Ue.media.stop = function () {
487				Ue.embed.stop(), Ue.media.paused = !0
488			}, Ue.media.paused = !0, Ue.media.currentTime = 0, ae(), Ue.embed.getCurrentTime().then(function (e) {
489				Ue.media.currentTime = e, A(Ue.media, "timeupdate")
490			}), Ue.embed.getDuration().then(function (e) {
491				Ue.media.duration = e, A(Ue.media, "durationchange")
492			}), Ue.embed.on("loaded", function () {
493				O.htmlElement(Ue.embed.element) && Ue.supported.full && Ue.embed.element.setAttribute("tabindex", "-1")
494			}), Ue.embed.on("play", function () {
495				Ue.media.paused = !1, A(Ue.media, "play"), A(Ue.media, "playing")
496			}), Ue.embed.on("pause", function () {
497				Ue.media.paused = !0, A(Ue.media, "pause")
498			}), Ue.embed.on("timeupdate", function (e) {
499				Ue.media.seeking = !1, Ue.media.currentTime = e.seconds, A(Ue.media, "timeupdate")
500			}), Ue.embed.on("progress", function (e) {
501				Ue.media.buffered = e.percent, A(Ue.media, "progress"), 1 === parseInt(e.percent) && A(Ue.media, "canplaythrough")
502			}), Ue.embed.on("seeked", function () {
503				Ue.media.seeking = !1, A(Ue.media, "seeked"), A(Ue.media, "play")
504			}), Ue.embed.on("ended", function () {
505				Ue.media.paused = !0, A(Ue.media, "ended")
506			})
507		}
508
509		function ie() {
510			Ue.embed = e.SC.Widget(this), Ue.embed.bind(e.SC.Widget.Events.READY, function () {
511				Ue.media.play = function () {
512					Ue.embed.play(), Ue.media.paused = !1
513				}, Ue.media.pause = function () {
514					Ue.embed.pause(), Ue.media.paused = !0
515				}, Ue.media.stop = function () {
516					Ue.embed.seekTo(0), Ue.embed.pause(), Ue.media.paused = !0
517				}, Ue.media.paused = !0, Ue.media.currentTime = 0, Ue.embed.getDuration(function (e) {
518					Ue.media.duration = e / 1e3, ae()
519				}), Ue.embed.getPosition(function (e) {
520					Ue.media.currentTime = e, A(Ue.media, "timeupdate")
521				}), Ue.embed.bind(e.SC.Widget.Events.PLAY, function () {
522					Ue.media.paused = !1, A(Ue.media, "play"), A(Ue.media, "playing")
523				}), Ue.embed.bind(e.SC.Widget.Events.PAUSE, function () {
524					Ue.media.paused = !0, A(Ue.media, "pause")
525				}), Ue.embed.bind(e.SC.Widget.Events.PLAY_PROGRESS, function (e) {
526					Ue.media.seeking = !1, Ue.media.currentTime = e.currentPosition / 1e3, A(Ue.media, "timeupdate")
527				}), Ue.embed.bind(e.SC.Widget.Events.LOAD_PROGRESS, function (e) {
528					Ue.media.buffered = e.loadProgress, A(Ue.media, "progress"), 1 === parseInt(e.loadProgress) && A(Ue.media, "canplaythrough")
529				}), Ue.embed.bind(e.SC.Widget.Events.FINISH, function () {
530					Ue.media.paused = !0, A(Ue.media, "ended")
531				})
532			})
533		}
534
535		function le() {
536			"play" in Ue.media && Ue.media.play()
537		}
538
539		function ue() {
540			"pause" in Ue.media && Ue.media.pause()
541		}
542
543		function ce(e) {
544			return O.boolean(e) || (e = Ue.media.paused), e ? le() : ue(), e
545		}
546
547		function de(e) {
548			O.number(e) || (e = E.seekTime), me(Ue.media.currentTime - e)
549		}
550
551		function pe(e) {
552			O.number(e) || (e = E.seekTime), me(Ue.media.currentTime + e)
553		}
554
555		function me(e) {
556			var t = 0, n = Ue.media.paused, r = fe();
557			O.number(e) ? t = e : O.object(e) && s([ "input", "change" ], e.type) && (t = e.target.value / e.target.max * r), t < 0 ? t = 0 : t > r && (t = r), Ne(t);
558			try {
559				Ue.media.currentTime = t.toFixed(4)
560			} catch ( e ) {
561			}
562			if ( s(E.types.embed, Ue.type) ) {
563				switch ( Ue.type ) {
564					case"youtube":
565						Ue.embed.seekTo(t);
566						break;
567					case"vimeo":
568						Ue.embed.setCurrentTime(t.toFixed(0));
569						break;
570					case"soundcloud":
571						Ue.embed.seekTo(1e3 * t)
572				}
573				n && ue(), A(Ue.media, "timeupdate"), Ue.media.seeking = !0, A(Ue.media, "seeking")
574			}
575			Je("Seeking to " + Ue.media.currentTime + " seconds"), W(t)
576		}
577
578		function fe() {
579			var e = parseInt(E.duration), t = 0;
580			return null === Ue.media.duration || isNaN(Ue.media.duration) || (t = Ue.media.duration), isNaN(e) ? t : e
581		}
582
583		function ye() {
584			m(Ue.container, E.classes.playing, !Ue.media.paused), m(Ue.container, E.classes.stopped, Ue.media.paused), Me(Ue.media.paused)
585		}
586
587		function be() {
588			P = { x: e.pageXOffset || 0, y: e.pageYOffset || 0 }
589		}
590
591		function ve() {
592			e.scrollTo(P.x, P.y)
593		}
594
595		function ge(e) {
596			var n = N.supportsFullScreen;
597			if ( n ) {
598				if ( !e || e.type !== N.fullScreenEventName )return N.isFullScreen(Ue.container) ? N.cancelFullScreen() : (be(), N.requestFullScreen(Ue.container)), void(Ue.isFullscreen = 
598N.isFullScreen(Ue.container));
599				Ue.isFullscreen = N.isFullScreen(Ue.container)
600			} else Ue.isFullscreen = !Ue.isFullscreen, t.body.style.overflow = Ue.isFullscreen ? "hidden" : "";
601			m(Ue.container, E.classes.fullscreen.active, Ue.isFullscreen), $(Ue.isFullscreen), Ue.buttons && Ue.buttons.fullscreen && k(Ue.buttons.fullscreen, Ue.isFullscreen), A(Ue.container, Ue.isFullscreen ? "enterfullscreen" : "exitfullscreen", !0), !Ue.isFullscreen && n && ve()
602		}
603
604		function he(e) {
605			if ( O.boolean(e) || (e = !Ue.media.muted), k(Ue.buttons.mute, e), Ue.media.muted = e, 0 === Ue.media.volume && ke(E.volume), s(E.types.embed, Ue.type) ) {
606				switch ( Ue.type ) {
607					case"youtube":
608						Ue.embed[ Ue.media.muted ? "mute" : "unMute" ]();
609						break;
610					case"vimeo":
611					case"soundcloud":
612						Ue.embed.setVolume(Ue.media.muted ? 0 : parseFloat(E.volume / E.volumeMax))
613				}
614				A(Ue.media, "volumechange")
615			}
616		}
617
618		function ke(e) {
619			var t = E.volumeMax, n = E.volumeMin;
620			if ( O.undefined(e) && (e = Ue.storage.volume), (null === e || isNaN(e)) && (e = E.volume), e > t && (e = t), e < n && (e = n), Ue.media.volume = parseFloat(e / t), Ue.volume.display && (Ue.volume.display.value = e), s(E.types.embed, Ue.type) ) {
621				switch ( Ue.type ) {
622					case"youtube":
623						Ue.embed.setVolume(100 * Ue.media.volume);
624						break;
625					case"vimeo":
626					case"soundcloud":
627						Ue.embed.setVolume(Ue.media.volume)
628				}
629				A(Ue.media, "volumechange")
630			}
631			0 === e ? Ue.media.muted = !0 : Ue.media.muted && e > 0 && he()
632		}
633
634		function we(e) {
635			var t = Ue.media.muted ? 0 : Ue.media.volume * E.volumeMax;
636			O.number(e) || (e = E.volumeStep), ke(t + e)
637		}
638
639		function xe(e) {
640			var t = Ue.media.muted ? 0 : Ue.media.volume * E.volumeMax;
641			O.number(e) || (e = E.volumeStep), ke(t - e)
642		}
643
644		function Te() {
645			var e = Ue.media.muted ? 0 : Ue.media.volume * E.volumeMax;
646			Ue.supported.full && (Ue.volume.input && (Ue.volume.input.value = e), Ue.volume.display && (Ue.volume.display.value = e)), te({ volume: e }), m(Ue.container, E.classes.muted, 0 === e), Ue.supported.full && Ue.buttons.mute && k(Ue.buttons.mute, 0 === e)
647		}
648
649		function Se(e) {
650			Ue.supported.full && Ue.buttons.captions && (O.boolean(e) || (e = Ue.container.className.indexOf(E.classes.captions.active) === -1), Ue.captionsEnabled = e, k(Ue.buttons.captions, Ue.captionsEnabled), m(Ue.container, E.classes.captions.active, Ue.captionsEnabled), A(Ue.container, Ue.captionsEnabled ? "captionsenabled" : "captionsdisabled", !0), te({ captionsEnabled: Ue.captionsEnabled }))
651		}
652
653		function _e(e) {
654			var t = "waiting" === e.type;
655			clearTimeout(Xe.loading), Xe.loading = setTimeout(function () {
656				m(Ue.container, E.classes.loading, t), Me(t)
657			}, t ? 250 : 0)
658		}
659
660		function Ee(e) {
661			if ( Ue.supported.full ) {
662				var t = Ue.progress.played, n = 0, r = fe();
663				if ( e )switch ( e.type ) {
664					case"timeupdate":
665					case"seeking":
666						if ( Ue.controls.pressed )return;
667						n = w(Ue.media.currentTime, r), "timeupdate" === e.type && Ue.buttons.seek && (Ue.buttons.seek.value = n);
668						break;
669					case"playing":
670					case"progress":
671						t = Ue.progress.buffer, n = function () {
672							var e = Ue.media.buffered;
673							return e && e.length ? w(e.end(0), r) : O.number(e) ? 100 * e : 0
674						}()
675				}
676				Ce(t, n)
677			}
678		}
679
680		function Ce(e, t) {
681			if ( Ue.supported.full ) {
682				if ( O.undefined(t) && (t = 0), O.undefined(e) ) {
683					if ( !Ue.progress || !Ue.progress.buffer )return;
684					e = Ue.progress.buffer
685				}
686				O.htmlElement(e) ? e.value = t : e && (e.bar && (e.bar.value = t), e.text && (e.text.innerHTML = t))
687			}
688		}
689
690		function Fe(e, t) {
691			if ( t ) {
692				isNaN(e) && (e = 0), Ue.secs = parseInt(e % 60), Ue.mins = parseInt(e / 60 % 60), Ue.hours = parseInt(e / 60 / 60 % 60);
693				var n = parseInt(fe() / 60 / 60 % 60) > 0;
694				Ue.secs = ("0" + Ue.secs).slice(-2), Ue.mins = ("0" + Ue.mins).slice(-2), t.innerHTML = (n ? Ue.hours + ":" : "") + Ue.mins + ":" + Ue.secs
695			}
696		}
697
698		function Ae() {
699			if ( Ue.supported.full ) {
700				var e = fe() || 0;
701				!Ue.duration && E.displayDuration && Ue.media.paused && Fe(e, Ue.currentTime), Ue.duration && Fe(e, Ue.duration), Pe()
702			}
703		}
704
705		function Ie(e) {
706			Fe(Ue.media.currentTime, Ue.currentTime), e && "timeupdate" === e.type && Ue.media.seeking || Ee(e)
707		}
708
709		function Ne(e) {
710			O.number(e) || (e = 0);
711			var t = fe(), n = w(e, t);
712			Ue.progress && Ue.progress.played && (Ue.progress.played.value = n), Ue.buttons && Ue.buttons.seek && (Ue.buttons.seek.value = n)
713		}
714
715		function Pe(e) {
716			var t = fe();
717			if ( E.tooltips.seek && Ue.progress.container && 0 !== t ) {
718				var n = Ue.progress.container.getBoundingClientRect(), r = 0, a = E.classes.tooltip + "--visible";
719				if ( e ) r = 100 / n.width * (e.pageX - n.left); else {
720					if ( !f(Ue.progress.tooltip, a) )return;
721					r = Ue.progress.tooltip.style.left.replace("%", "")
722				}
723				r < 0 ? r = 0 : r > 100 && (r = 100), Fe(t / 100 * r, Ue.progress.tooltip), Ue.progress.tooltip.style.left = r + "%", e && s([ "mouseenter", "mouseleave" ], e.type) && m(Ue.progress.tooltip, a, "mouseenter" === e.type)
724			}
725		}
726
727		function Me(t) {
728			if ( E.hideControls && "audio" !== Ue.type ) {
729				var n = 0, r = !1, a = t, o = f(Ue.container, E.classes.loading);
730				if ( O.boolean(t) || (t && t.type ? (r = "enterfullscreen" === t.type, a = s([ "mousemove", "touchstart", "mouseenter", "focu
730s" ], t.type), s([ "mousemove", "touchmove" ], t.type) && (n = 2e3), "focus" === t.type && (n = 3e3)) : a = f(Ue.container, E.classes.hideControls)), e.clearTimeout(Xe.hover), a || Ue.media.paused || o ) {
731					if ( m(Ue.container, E.classes.hideControls, !1), Ue.media.paused || o )return;
732					Ue.browser.isTouch && (n = 3e3)
733				}
734				a && Ue.media.paused || (Xe.hover = e.setTimeout(function () {
735					(!Ue.controls.pressed && !Ue.controls.hover || r) && m(Ue.container, E.classes.hideControls, !0)
736				}, n))
737			}
738		}
739
740		function Oe(e) {
741			if ( !O.undefined(e) )return void Le(e);
742			var t;
743			switch ( Ue.type ) {
744				case"youtube":
745					t = Ue.embed.getVideoUrl();
746					break;
747				case"vimeo":
748					Ue.embed.getVideoUrl.then(function (e) {
749						t = e
750					});
751					break;
752				case"soundcloud":
753					Ue.embed.getCurrentSound(function (e) {
754						t = e.permalink_url
755					});
756					break;
757				default:
758					t = Ue.media.currentSrc
759			}
760			return t || ""
761		}
762
763		function Le(e) {
764			function n() {
765				if ( Ue.embed = null, l(Ue.media), "video" === Ue.type && Ue.videoContainer && l(Ue.videoContainer), Ue.container && Ue.container.removeAttribute("class"), "type" in e && (Ue.type = e.type, "video" === Ue.type) ) {
766					var n = e.sources[ 0 ];
767					"type" in n && s(E.types.embed, n.type) && (Ue.type = n.type)
768				}
769				switch ( Ue.supported = F(Ue.type), Ue.type ) {
770					case"video":
771						Ue.media = t.createElement("video");
772						break;
773					case"audio":
774						Ue.media = t.createElement("audio");
775						break;
776					case"youtube":
777					case"vimeo":
778					case"soundcloud":
779						Ue.media = t.createElement("div"), Ue.embedId = e.sources[ 0 ].src
780				}
781				u(Ue.container, Ue.media), O.boolean(e.autoplay) && (E.autoplay = e.autoplay), s(E.types.html5, Ue.type) && (E.crossorigin && Ue.media.setAttribute("crossorigin", ""), E.autoplay && Ue.media.setAttribute("autoplay", ""), "poster" in e && Ue.media.setAttribute("poster", e.poster), E.loop && Ue.media.setAttribute("loop", "")), m(Ue.container, E.classes.fullscreen.active, Ue.isFullscreen), m(Ue.container, E.classes.captions.active, Ue.captionsEnabled), K(), s(E.types.html5, Ue.type) && J("source", e.sources), ne(), s(E.types.html5, Ue.type) && ("tracks" in e && J("track", e.tracks), Ue.media.load()), (s(E.types.html5, Ue.type) || s(E.types.embed, Ue.type) && !Ue.supported.full) && (We(), Ye()), E.title = e.title, Z()
782			}
783
784			return O.object(e) && "sources" in e && e.sources.length ? (m(Ue.container, E.classes.ready, !1), ue(), Ne(), Ce(), qe(), void De(n, !1)) : void ze("Invalid source format")
785		}
786
787		function je(e) {
788			"video" === Ue.type && Ue.media.setAttribute("poster", e)
789		}
790
791		function Ve() {
792			function n() {
793				var e = ce(), t = Ue.buttons[ e ? "play" : "pause" ], n = Ue.buttons[ e ? "pause" : "play" ];
794				if ( n = n && n.length > 1 ? n[ n.length - 1 ] : n[ 0 ] ) {
795					var r = f(t, E.classes.tabFocus);
796					setTimeout(function () {
797						n.focus(), r && (m(t, E.classes.tabFocus, !1), m(n, E.classes.tabFocus, !0))
798					}, 100)
799				}
800			}
801
802			function r() {
803				var e = t.activeElement;
804				return e = e && e !== t.body ? t.querySelector(":focus") : null
805			}
806
807			function a(e) {
808				return e.keyCode ? e.keyCode : e.which
809			}
810
811			function o(e) {
812				for ( var t in Ue.buttons ) {
813					var n = Ue.buttons[ t ];
814					if ( O.nodeList(n) )for ( var r = 0; r < n.length; r++ )m(n[ r ], E.classes.tabFocus, n[ r ] === e); else m(n, E.classes.tabFocus, n === e)
815				}
816			}
817
818			function i(e) {
819				function t() {
820					var e = Ue.media.duration;
821					O.number(e) && me(e / 10 * (n - 48))
822				}
823
824				var n = a(e), r = "keydown" === e.type, o = r && n === u;
825				if ( O.number(n) )if ( r ) {
826					var i = [ 48, 49, 50, 51, 52, 53, 54, 56, 57, 32, 75, 38, 40, 77, 39, 37, 70, 67 ];
827					switch ( s(i, n) && (e.preventDefault(), e.stopPropagation()), n ) {
828						case 48:
829						case 49:
830						case 50:
831						case 51:
832						case 52:
833						case 53:
834						case 54:
835						case 55:
836						case 56:
837						case 57:
838							o || t();
839							break;
840						case 32:
841						case 75:
842							o || ce();
843							break;
844						case 38:
845							we();
846							break;
847						case 40:
848							xe();
849							break;
850						case 77:
851							o || he();
852							break;
853						case 39:
854							pe();
855							break;
856						case 37:
857							de();
858							break;
859						case 70:
860							ge();
861							break;
862						case 67:
863							o || Se()
864					}
865					!N.supportsFullScreen && Ue.isFullscreen && 27 === n && ge(), u = n
866				} else u = null
867			}
868
869			var l = Ue.browser.isIE ? "change" : "input";
870			if ( E.keyboardShorcuts.focused ) {
871				var u = null;
872				E.keyboardShorcuts.global && g(e, "keydown keyup", function (e) {
873					var t = a(e), n = r(), o = [ 48, 49, 50, 51, 52, 53, 54, 56, 57, 75, 77, 70, 67 ], l = I().length;
874					1 !== l || !s(o, t) || O.htmlElement(n) && y(n, E.selectors.editable) || i(e)
875				}), g(Ue.container, "keydown keyup", i)
876			}
877			g(e, "keyup", function (e) {
878				var t = a(e), n = r();
879				9 === t && o(n)
880			}), g(t.body, "click", function () {
881				m(U("." + E.classes.tabFocus), E.classes.tabFocus, !1)
882			});
883			for ( var c in Ue.buttons ) {
884				var d = Ue.buttons[ c ];
885				g(d, "blur", function () {
886					m(d, "tab-focus", !1);
887				})
888			}
889			b(Ue.buttons.play, "click", E.listeners.play, n), b(Ue.buttons.pause, "click", E.listeners.pause, n), b(Ue.buttons.restart, "click", E.listeners.restart, me), b(Ue.buttons.rewind, "click", E.listeners.rewind, de), b(Ue.buttons.forward, "click", E.listeners.forward, pe), b(Ue.buttons.seek, l, E.listeners.seek, me), b(Ue.volume.input, l, E.listeners.volume, function () {
890				ke(Ue.volume.input.value)
891			}), b(Ue.buttons.mute, "click", E.listeners.mute, he), b(Ue.buttons.fullscreen, "click", E.listeners.fullscreen, ge), N.supportsFullScreen && g(t, N.fullScreenEventName, ge), g(Ue.buttons.captions, "click", Se), g(Ue.progress.container, "mouseenter mouseleave mousemove", Pe), E.hideControls && (g(Ue.container, "mouseenter mouseleave mousemove touchstart touchend touchcancel touchmove enterfullscreen", Me), g(Ue.controls, "mouseenter mouseleave", function (e) {
892				Ue.controls.hover = "mouseenter" === e.type
893			}), g(Ue.controls, "mousedown mouseup touchstart touchend touchcancel", function (e) {
894				Ue.controls.pressed = s([ "mousedown", "touchstart" ], e.type)
895			}), g(Ue.controls, "focus blur", Me, !0)), g(Ue.volume.input, "wheel", function (e) {
896				e.preventDefault();
897				var t = e.webkitDirectionInvertedFromDevice, n = E.volumeStep / 5;
898				(e.deltaY < 0 || e.deltaX > 0) && (t ? xe(n) : we(n)), (e.deltaY > 0 || e.deltaX < 0) && (t ? we(n) : xe(n))
899			})
900		}
901
902		function Re() {
903			if ( g(Ue.media, "timeupdate seeking", Ie), g(Ue.media, "timeupdate", W), g(Ue.media, "durationchange loadedmetadata", Ae), g(Ue.media, "ended", function () {
904						"video" === Ue.type && E.showPosterOnEnd && ("video" === Ue.type && H(), me(), Ue.media.load())
905					}), g(Ue.media, "progress playing", Ee), g(Ue.media, "volumechange", Te), g(Ue.media, "play pause ended", ye), g(Ue.media, "waiting canplay seeked", _e), E.clickToPlay && "audio" !== Ue.type ) {
906				var e = U("." + E.classes.videoWrapper);
907				if ( !e )return;
908				e.style.cursor = "pointer", g(e, "click", function () {
909					E.hideControls && Ue.browser.isTouch && !Ue.media.paused || (Ue.media.paused ? le() : Ue.media.ended ? (me(), le()) : ue())
910				})
911			}
912			E.disableContextMenu && g(Ue.media, "contextmenu", function (e) {
913				e.preventDefault()
914			}), g(Ue.media, E.events.concat([ "keyup", "keydown" ]).join(" "), function (e) {
915				A(Ue.container, e.type, !0)
916			})
917		}
918
919		function qe() {
920			if ( s(E.types.html5, Ue.type) ) {
921				for ( var e = Ue.media.querySelectorAll("source"), t = 0; t < e.length; t++ )l(e[ t ]);
922				Ue.media.setAttribute("src", "https://cdn.selz.com/plyr/blank.mp4"), Ue.media.load(), Je("Cancelled network requests")
923			}
924		}
925
926		function De(n, r) {
927			function a() {
928				clearTimeout(Xe.cleanUp), O.boolean(r) || (r = !0), O.function(n) && n.call($e), r && (Ue.init = !1, Ue.container.parentNode.replaceChild($e, Ue.container), t.body.style.overflow = "", A($e, "destroyed", !0))
929			}
930
931			if ( !Ue.init )return null;
932			switch ( Ue.type ) {
933				case"youtube":
934					e.clearInterval(Xe.buffering), e.clearInterval(Xe.playing), Ue.embed.destroy(), a();
935					break;
936				case"vimeo":
937					Ue.embed.unload().then(a), Xe.cleanUp = e.setTimeout(a, 200);
938					break;
939				case"video":
940				case"audio":
941					Q(!0), a()
942			}
943		}
944
945		function He() {
946			if ( Ue.init )return null;
947			if ( N = _(), Ue.browser = n(), O.htmlElement(Ue.media) ) {
948				ee();
949				var e = v.tagName.toLowerCase();
950				"div" === e ? (Ue.type = v.getAttribute("data-type"), Ue.embedId = v.getAttribute("data-video-id"), v.removeAttribute("data-type"), v.removeAttribute("data-video-id")) : (Ue.type = e, E.crossorigin = null !== v.getAttribute("crossorigin"), E.autoplay = E.autoplay || null !== v.getAttribute("autoplay"), E.loop = E.loop || null !== v.getAttribute("loop")), Ue.supported = F(Ue.type), Ue.supported.basic && (Ue.container = i(v, t.createElement("div")), Ue.container.setAttribute("tabindex", 0), K(), Je("" + Ue.browser.name + " " + Ue.browser.version), ne(), (s(E.types.html5, Ue.type) || s(E.types.embed, Ue.type) && !Ue.supported.full) && (We(), Ye(), Z()), Ue.init = !0)
951			}
952		}
953
954		function We() {
955			if ( !Ue.supported.full )return ze("Basic support only", Ue.type), l(U(E.selectors.controls.wrapper)), l(U(E.selectors.buttons.play)), void Q(!0);
956			var e = !B(E.selectors.controls.wrapper).length;
957			e && z(), G() && (e && Ve(), Re(), Q(), q(), D(), ke(), Te(), Ie(), ye())
958		}
959
960		function Ye() {
961			e.setTimeout(function () {
962				A(Ue.media, "ready")
963			}, 0), m(Ue.media, M.classes.setup, !0), m(Ue.container, E.classes.ready, !0), Ue.media.plyr = Be, E.autoplay && le()
964		}
965
966		var Be, Ue = this, Xe = {};
967		Ue.media = v;
968		var $e = v.cloneNode(!0), Je = function () {
969			j("log", arguments)
970		}, ze = function () {
971			j("warn", arguments)
972		};
973		return Je("Config", E), Be = {
974			getOriginal     : function () {
975				return $e
976			},
977			getContainer    : function () {
978				return Ue.container
979			},
980			getEmbed        : function () {
981				return Ue.embed
982			},
983			getMedia        : function () {
984				return Ue.media
985			},
986			getType         : function () {
987				return Ue.type
988			},
989			getDuration     : fe,
990			getCurrentTime  : function () {
991				return Ue.media.currentTime
992			},
993			getVolume       : function () {
994				return Ue.media.volume
995			},
996			isMuted         : function () {
997				return Ue.media.muted
998			},
999			isReady         : function () {
1000				return f(Ue.container, E.classes.ready)
1001			},
1002			isLoading       : function () {
1003				return f(Ue.container, E.classes.loading)
1004			},
1005			isPaused        : function () {
1006				return Ue.media.paused
1007			},
1008			on              : function (e, t) {
1009				return g(Ue.container, e, t), this
1010			},
1011			play            : le,
1012			pause           : ue,
1013			stop            : function () {
1014				ue(), me()
1015			},
1016			restart         : me,
1017			rewind          : de,
1018			forward         : pe,
1019			seek            : me,
1020			source          : Oe,
1021			poster          : je,
1022			setVolume       : ke,
1023			togglePlay      : ce,
1024			toggleMute      : he,
1025			toggleCaptions  : Se,
1026			toggleFullscreen: ge,
1027			toggleControls  : Me,
1028			isFullscreen    : function () {
1029				return Ue.isFullscreen || !1
1030			},
1031			support         : function (e) {
1032				return r(Ue, e)
1033			},
1034			destroy         : De
1035		}, He(), Ue.init ? Be : null
1036	}
1037
1038	function C(e, n) {
1039		var r = new XMLHttpRequest;
1040		if ( !O.string(n) || !O.htmlElement(t.querySelector("#" + n)) ) {
1041			var a = t.createElement("div");
1042			a.setAttribute("hidden", ""), O.string(n) && a.setAttribute("id", n), t.body.insertBefore(a, t.body.childNodes[ 0 ]), "withCredentials" in r && (r.open("GET", e, !0), r.onload = function () {
1043				a.innerHTML = r.responseText
1044			}, r.send())
1045		}
1046	}
1047
1048	function F(e) {
1049		var r = n(), a = r.isIE && r.version <= 9, s = r.isIos, o = r.isIphone, i = !!t.createElement("audio").canPlayType, l = !!t.createElement("video").canPlayType, u = !1, c = !1;
1050		switch ( e ) {
1051			case"video":
1052				u = l, c = u && !a && !o;
1053				break;
1054			case"audio":
1055				u = i, c = u && !a;
1056				break;
1057			case"vimeo":
1058				u = !0, c = !a && !s;
1059				break;
1060			case"youtube":
1061				u = !0, c = !a && !s, s && !o && r.version >= 10 && (c = !0);
1062				break;
1063			case"soundcloud":
1064				u = !0, c = !a && !o;
1065				break;
1066			default:
1067				u = i && l, c = u && !a
1068		}
1069		return { basic: u, full: c }
1070	}
1071
1072	function A(e, n) {
1073		function r(e, t) {
1074			f(t, M.classes.hook) || a.push({ target: e, media: t })
1075		}
1076
1077		var a = [], s = [], o = [ M.selectors.html5, M.selectors.embed ].join(",");
1078		if ( O.string(e) ? e = t.querySelectorAll(e) : O.htmlElement(e) ? e = [ e ] : O.nodeList(e) || O.array(e) || O.string(e) || (O.undefined(n) && O.object(e) && (n = e), e = t.querySelectorAll(
1078o)), O.nodeList(e) && (e = Array.prototype.slice.call(e)), !F().basic || !e.length )return !1;
1079		for ( var i = 0; i < e.length; i++ ) {
1080			var l = e[ i ], u = l.querySelectorAll(o);
1081			if ( u.length )for ( var c = 0; c < u.length; c++ )r(l, u[ c ]); else y(l, o) && r(l, l)
1082		}
1083		return a.forEach(function (e) {
1084			var t = e.target, r = e.media, a = !1;
1085			r === t && (a = !0);
1086			var o = {};
1087			try {
1088				o = JSON.parse(t.getAttribute("data-plyr"))
1089			} catch ( e ) {
1090			}
1091			var i = x({}, M, n, o);
1092			if ( !i.enabled )return null;
1093			var l = new E(r, i);
1094			if ( O.object(l) ) {
1095				if ( i.debug ) {
1096					var u = i.events.concat([ "setup", "statechange", "enterfullscreen", "exitfullscreen", "captionsenabled", "captionsdisabled" ]);
1097					g(l.getContainer(), u.join(" "), function (e) {
1098						console.log([ i.logPrefix, "event:", e.type ].join(" "), e.detail.plyr)
1099					})
1100				}
1101				h(l.getContainer(), "setup", !0, { plyr: l }), s.push(l)
1102			}
1103		}), s
1104	}
1105
1106	function I(e) {
1107		if ( O.string(e) ? e = t.querySelector(e) : O.undefined(e) && (e = t.body), O.htmlElement(e) ) {
1108			var n = e.querySelectorAll("." + M.classes.setup), r = [];
1109			return Array.prototype.slice.call(n).forEach(function (e) {
1110				O.object(e.plyr) && r.push(e.plyr)
1111			}), r
1112		}
1113		return []
1114	}
1115
1116	var N, P = { x: 0, y: 0 }, M = {
1117		enabled           : !0,
1118		debug             : !1,
1119		autoplay          : !1,
1120		loop              : !1,
1121		seekTime          : 10,
1122		volume            : 10,
1123		volumeMin         : 0,
1124		volumeMax         : 10,
1125		volumeStep        : 1,
1126		duration          : null,
1127		displayDuration   : !0,
1128		loadSprite        : !0,
1129		iconPrefix        : "plyr",
1130		iconUrl           : "https://cdn.plyr.io/2.0.10/plyr.svg",
1131		clickToPlay       : !0,
1132		hideControls      : !0,
1133		showPosterOnEnd   : !1,
1134		disableContextMenu: !0,
1135		keyboardShorcuts  : { focused: !0, global: !1 },
1136		tooltips          : { controls: !1, seek: !0 },
1137		selectors         : {
1138			html5      : "video, audio",
1139			embed      : "[data-type]",
1140			editable   : "input, textarea, select, [contenteditable]",
1141			container  : ".plyr",
1142			controls   : { container: null, wrapper: ".plyr__controls" },
1143			labels     : "[data-plyr]",
1144			buttons    : {
1145				seek      : '[data-plyr="seek"]',
1146				play      : '[data-plyr="play"]',
1147				pause     : '[data-plyr="pause"]',
1148				restart   : '[data-plyr="restart"]',
1149				rewind    : '[data-plyr="rewind"]',
1150				forward   : '[data-plyr="fast-forward"]',
1151				mute      : '[data-plyr="mute"]',
1152				captions  : '[data-plyr="captions"]',
1153				fullscreen: '[data-plyr="fullscreen"]'
1154			},
1155			volume     : { input: '[data-plyr="volume"]', display: ".plyr__volume--display" },
1156			progress   : {
1157				container: ".plyr__progress",
1158				buffer   : ".plyr__progress--buffer",
1159				played   : ".plyr__progress--played"
1160			},
1161			captions   : ".plyr__captions",
1162			currentTime: ".plyr__time--current",
1163			duration   : ".plyr__time--duration"
1164		},
1165		classes           : {
1166			setup       : "plyr--setup",
1167			ready       : "plyr--ready",
1168			videoWrapper: "plyr__video-wrapper",
1169			embedWrapper: "plyr__video-embed",
1170			type        : "plyr--{0}",
1171			stopped     : "plyr--stopped",
1172			playing     : "plyr--playing",
1173			muted       : "plyr--muted",
1174			loading     : "plyr--loading",
1175			hover       : "plyr--hover",
1176			tooltip     : "plyr__tooltip",
1177			hidden      : "plyr__sr-only",
1178			hideControls: "plyr--hide-controls",
1179			isIos       : "plyr--is-ios",
1180			isTouch     : "plyr--is-touch",
1181			captions    : { enabled: "plyr--captions-enabled", active: "plyr--captions-active" },
1182			fullscreen  : { enabled: "plyr--fullscreen-enabled", active: "plyr--fullscreen-active" },
1183			tabFocus    : "tab-focus"
1184		},
1185		captions          : { defaultActive: !1 },
1186		fullscreen        : { enabled: !0, fallback: !0, allowAudio: !1 },
1187		storage           : { enabled: !0, key: "plyr" },
1188		controls          : [ "play-large", "play", "progress", "current-time", "mute", "volume", "captions", "fullscreen" ],
1189		i18n              : {
1190			restart         : "Restart",
1191			rewind          : "Rewind {seektime} secs",
1192			play            : "Play",
1193			pause           : "Pause",
1194			forward         : "Forward {seektime} secs",
1195			played          : "played",
1196			buffered        : "buffered",
1197			currentTime     : "Current time",
1198			duration        : "Duration",
1199			volume          : "Volume",
1200			toggleMute      : "Toggle Mute",
1201			toggleCaptions  : "Toggle Captions",
1202			toggleFullscreen: "Toggle Fullscreen",
1203			frameTitle      : "Player for {title}"
1204		},
1205		types             : {
1206			embed: [ "youtube", "vimeo", "soundcloud" ],
1207			html5: [ "video", "audio" ]
1208		},
1209		urls              : {
1210			vimeo     : { api: "https://player.vimeo.com/api/player.js" },
1211			youtube   : { api: "https://www.youtube.com/iframe_api" },
1212			soundcloud: { api: "https://w.soundcloud.com/player/api.js" }
1213		},
1214		listeners         : {
1215			seek      : null,
1216			play      : null,
1217			pause     : null,
1218			restart   : null,
1219			rewind    : null,
1220			forward   : null,
1221			mute      : null,
1222			volume    : null,
1223			captions  : null,
1224			fullscreen: null
1225		},
1226		events            : [ "ready", "ended", "progress", "stalled", "playing", "waiting", "canplay", "canplaythrough", "loadstart", "loadeddata", "loadedmetadata", "timeupdate", "volumechange", "play", "pause", "error", "seeking", "seeked", "emptied" ],
1227		logPrefix         : "[Plyr]"
1228	}, O = {
1229		object        : function (e) {
1230			return null !== e && "object" == typeof e
1231		}, array      : function (e) {
1232			return null !== e && "object" == typeof e && e.constructor === Array
1233		}, number     : function (e) {
1234			return null !== e && ("number" == typeof e && !isNaN(e - 0) || "object" == typeof e && e.constructor === Number)
1235		}, string     : function (e) {
1236			return null !== e && ("string" == typeof e || "object" == typeof e && e.constructor === String)
1237		}, boolean    : function (e) {
1238			return null !== e && "boolean" == typeof e
1239		}, nodeList   : function (e) {
1240			return null !== e && e instanceof NodeList
1241		}, htmlElement: function (e) {
1242			return null !== e && e instanceof HTMLElement
1243		}, function   : function (e) {
1244			return null !== e && "function" == typeof e
1245		}, undefined  : function (e) {
1246			return null !== e && "undefined" == typeof e
1247		}
1248	}, L = {
1249		supported: function () {
1250			if ( !("localStorage" in e) )return !1;
1251			try {
1252				e.localStorage.setItem("___test", "OK");
1253				var t = e.localStorage.getItem("___test");
1254				return e.localStorage.removeItem("___test"), "OK" === t
1255			} catch ( e ) {
1256				return !1
1257			}
1258			return !1
1259		}()
1260	};
1261	return { setup: A, supported: F, loadSprite: C, get: I }
1262}), function () {
1263	function e(e, t) {
1264		t = t || { bubbles: !1, cancelable: !1, detail: void 0 };
1265		var n = document.createEvent("CustomEvent");
1266		return n.initCustomEvent(e, t.bubbles, t.cancelable, t.detail), n
1267	}
1268
1269	"function" != typeof window.CustomEvent && (e.prototype = window.Event.prototype, window.CustomEvent = e)
1270}();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.