Easy Video Player - Version 1.1.5

Version Description

  • Updated the player to version 7.0.2.
Download this release

Release Info

Developer naa986
Plugin Icon 128x128 Easy Video Player
Version 1.1.5
Comparing to
See all releases

Code changes from version 1.1.4 to 1.1.5

Files changed (43) hide show
  1. easy-video-player.php +27 -19
  2. lib/embed.min.js +0 -1
  3. lib/flowplayer.js +9391 -2049
  4. lib/flowplayer.min.js +6 -3
  5. lib/flowplayer.swf +0 -0
  6. lib/flowplayerhls.swf +0 -0
  7. lib/skin/all-skins.css +0 -700
  8. lib/skin/functional.css +0 -232
  9. lib/skin/icons/flowplayer.eot +0 -0
  10. lib/skin/icons/flowplayer.svg +98 -0
  11. lib/skin/icons/flowplayer.ttf +0 -0
  12. lib/skin/icons/flowplayer.woff +0 -0
  13. lib/skin/icons/flowplayer.woff2 +0 -0
  14. lib/skin/img/black.png +0 -0
  15. lib/skin/img/black@x2.png +0 -0
  16. lib/skin/img/black_rtl.png +0 -0
  17. lib/skin/img/black_rtl@x2.png +0 -0
  18. lib/skin/img/flowplayer.png +0 -0
  19. lib/skin/img/flowplayer@2x.png +0 -0
  20. lib/skin/img/play_black.png +0 -0
  21. lib/skin/img/play_black@x2.png +0 -0
  22. lib/skin/img/play_black_rtl.png +0 -0
  23. lib/skin/img/play_black_rtl@x2.png +0 -0
  24. lib/skin/img/play_white.png +0 -0
  25. lib/skin/img/play_white@x2.png +0 -0
  26. lib/skin/img/play_white_rtl.png +0 -0
  27. lib/skin/img/play_white_rtl@x2.png +0 -0
  28. lib/skin/img/playful_black.png +0 -0
  29. lib/skin/img/playful_black@x2.png +0 -0
  30. lib/skin/img/playful_black_rtl.png +0 -0
  31. lib/skin/img/playful_black_rtl@x2.png +0 -0
  32. lib/skin/img/playful_white.png +0 -0
  33. lib/skin/img/playful_white@x2.png +0 -0
  34. lib/skin/img/playful_white_rtl.png +0 -0
  35. lib/skin/img/playful_white_rtl@x2.png +0 -0
  36. lib/skin/img/white.png +0 -0
  37. lib/skin/img/white@x2.png +0 -0
  38. lib/skin/img/white_rtl.png +0 -0
  39. lib/skin/img/white_rtl@x2.png +0 -0
  40. lib/skin/minimalist.css +0 -232
  41. lib/skin/playful.css +0 -236
  42. lib/skin/skin.css +1010 -0
  43. readme.txt +8 -3
easy-video-player.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /*
3
  Plugin Name: Easy Video Player
4
- Version: 1.1.4
5
  Plugin URI: http://noorsplugin.com/wordpress-video-plugin/
6
  Author: naa986
7
  Author URI: http://noorsplugin.com/
@@ -17,7 +17,7 @@ if (!class_exists('EASY_VIDEO_PLAYER')) {
17
 
18
  class EASY_VIDEO_PLAYER {
19
 
20
- var $plugin_version = '1.1.4';
21
 
22
  function __construct() {
23
  define('EASY_VIDEO_PLAYER_VERSION', $this->plugin_version);
@@ -26,7 +26,7 @@ if (!class_exists('EASY_VIDEO_PLAYER')) {
26
 
27
  function plugin_includes() {
28
  if (is_admin()) {
29
- add_filter('plugin_action_links', array(&$this, 'easy_video_player_plugin_action_links'), 10, 2);
30
  }
31
  add_action('plugins_loaded', array($this, 'plugins_loaded_handler'));
32
  add_action('wp_enqueue_scripts', 'easy_video_player_enqueue_scripts');
@@ -109,7 +109,7 @@ function easy_video_player_enqueue_scripts() {
109
  }
110
  wp_register_script('flowplayer-js', $plugin_url . '/lib/flowplayer.min.js');
111
  wp_enqueue_script('flowplayer-js');
112
- wp_register_style('flowplayer-css', $plugin_url . '/lib/skin/all-skins.css');
113
  wp_enqueue_style('flowplayer-css');
114
  }
115
  }
@@ -128,19 +128,19 @@ function easy_video_player_header() {
128
 
129
  function evp_embed_video_handler($atts) {
130
  extract(shortcode_atts(array(
131
- 'url' => '',
132
- 'width' => '',
133
- 'height' => '',
134
- 'ratio' => '0.417',
135
- 'autoplay' => 'false',
136
- 'poster' => '',
137
- 'loop' => '',
138
- 'muted' => '',
139
- 'preload' => 'metadata',
140
- 'video_id' => '',
141
- 'class' => '',
142
- 'template' => '',
143
- ), $atts));
144
  //check if mediaelement template is specified
145
  if($template=='mediaelement'){
146
  $attr = array();
@@ -189,6 +189,7 @@ function evp_embed_video_handler($atts) {
189
  else{
190
  $muted = "";
191
  }
 
192
  $player = "fp" . uniqid();
193
  $color = '';
194
  if (!empty($poster)) {
@@ -200,10 +201,11 @@ function evp_embed_video_handler($atts) {
200
  if (!empty($width)) {
201
  $size_attr = "max-width: {$width}px;max-height: auto;";
202
  }
 
203
  $class_array = array('flowplayer', 'minimalist');
204
  if(!empty($class)){
205
  $shortcode_class_array = array_map('trim', explode(' ', $class));
206
- $shortcode_class_array = array_filter( $shortcode_class_array, 'strlen' );
207
  $shortcode_class_array = array_values($shortcode_class_array);
208
  if(in_array("functional", $shortcode_class_array) || in_array("playful", $shortcode_class_array)){
209
  $class_array = array_diff($class_array, array('minimalist'));
@@ -214,6 +216,12 @@ function evp_embed_video_handler($atts) {
214
  }
215
 
216
  $classes = implode(" ", $class_array);
 
 
 
 
 
 
217
  $styles = <<<EOT
218
  <style>
219
  #$player {
@@ -224,7 +232,7 @@ function evp_embed_video_handler($atts) {
224
  EOT;
225
 
226
  $output = <<<EOT
227
- <div id="$player" data-ratio="$ratio" class="{$classes}">
228
  <video{$video_id}{$autoplay}{$loop}{$muted}>
229
  <source type="video/mp4" src="$url"/>
230
  </video>
1
  <?php
2
  /*
3
  Plugin Name: Easy Video Player
4
+ Version: 1.1.5
5
  Plugin URI: http://noorsplugin.com/wordpress-video-plugin/
6
  Author: naa986
7
  Author URI: http://noorsplugin.com/
17
 
18
  class EASY_VIDEO_PLAYER {
19
 
20
+ var $plugin_version = '1.1.5';
21
 
22
  function __construct() {
23
  define('EASY_VIDEO_PLAYER_VERSION', $this->plugin_version);
26
 
27
  function plugin_includes() {
28
  if (is_admin()) {
29
+ add_filter('plugin_action_links', array($this, 'easy_video_player_plugin_action_links'), 10, 2);
30
  }
31
  add_action('plugins_loaded', array($this, 'plugins_loaded_handler'));
32
  add_action('wp_enqueue_scripts', 'easy_video_player_enqueue_scripts');
109
  }
110
  wp_register_script('flowplayer-js', $plugin_url . '/lib/flowplayer.min.js');
111
  wp_enqueue_script('flowplayer-js');
112
+ wp_register_style('flowplayer-css', $plugin_url . '/lib/skin/skin.css');
113
  wp_enqueue_style('flowplayer-css');
114
  }
115
  }
128
 
129
  function evp_embed_video_handler($atts) {
130
  extract(shortcode_atts(array(
131
+ 'url' => '',
132
+ 'width' => '',
133
+ 'height' => '',
134
+ 'ratio' => '0.417',
135
+ 'autoplay' => 'false',
136
+ 'poster' => '',
137
+ 'loop' => '',
138
+ 'muted' => '',
139
+ 'preload' => 'metadata',
140
+ 'video_id' => '',
141
+ 'class' => '',
142
+ 'template' => '',
143
+ ), $atts));
144
  //check if mediaelement template is specified
145
  if($template=='mediaelement'){
146
  $attr = array();
189
  else{
190
  $muted = "";
191
  }
192
+
193
  $player = "fp" . uniqid();
194
  $color = '';
195
  if (!empty($poster)) {
201
  if (!empty($width)) {
202
  $size_attr = "max-width: {$width}px;max-height: auto;";
203
  }
204
+ /*
205
  $class_array = array('flowplayer', 'minimalist');
206
  if(!empty($class)){
207
  $shortcode_class_array = array_map('trim', explode(' ', $class));
208
+ $shortcode_class_array = array_filter( $shortcode_class_array, 'strlen' ); //remove NULL, FALSE and Empty Strings (""), but leave values of 0 (zero)
209
  $shortcode_class_array = array_values($shortcode_class_array);
210
  if(in_array("functional", $shortcode_class_array) || in_array("playful", $shortcode_class_array)){
211
  $class_array = array_diff($class_array, array('minimalist'));
216
  }
217
 
218
  $classes = implode(" ", $class_array);
219
+ */
220
+
221
+ if(!empty($class)){
222
+ $class = " ".$class;
223
+ }
224
+
225
  $styles = <<<EOT
226
  <style>
227
  #$player {
232
  EOT;
233
 
234
  $output = <<<EOT
235
+ <div id="$player" data-ratio="$ratio" class="flowplayer{$class}">
236
  <video{$video_id}{$autoplay}{$loop}{$muted}>
237
  <source type="video/mp4" src="$url"/>
238
  </video>
lib/embed.min.js DELETED
@@ -1 +0,0 @@
1
- !function(){function e(e,t,n){if(e)return n(e);if(window.fp5ecc[t])return window.fp5ecc[t].push(n);window.fp5ecc[t]=[n];var r=document.createElement("script");r.onload=r.onreadystatechange=function(){var e=r.readyState;if(void 0===e||/complete|loaded/.test(e))for(var n=window.fp5ecc[t],i=0;i<n.length;i++)n[i]()},r.async=!0,r.src=t,a.insertBefore(r,a.firstChild)}function t(e){if(!window.fp5ecssc[e]){window.fp5ecssc[e]=!0;var t=document.createElement("link");t.rel="stylesheet",t.type="text/css",t.href=e,a.insertBefore(t,a.firstChild)}}for(var n,r=document.getElementsByTagName("script"),i=document.createElement("div"),o=0;o<r.length;o++)if(-1!==r[o].innerHTML.indexOf("<video")){n=r[o],n.parentNode.insertBefore(i,n),n.parentNode.removeChild(n);break}var a=document.getElementsByTagName("head")[0],c="//releases.flowplayer.org/5.5.0/commercial",f=n.getAttribute("data-library")||c+"/flowplayer.min.js",d=n.getAttribute("data-swf")||c+"/flowplayer.swf",s=n.getAttribute("data-skin")||c+"/skin/minimalist.css",l="//www.google-analytics.com/ga.js",u="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js";window.fp5ecc=window.fp5ecc||{},window.fp5ecssc=window.fp5ecssc||{};var p="undefined"!=typeof jQuery?jQuery().jquery:"",w=p.split("."),m="undefined"!=typeof $&&jQuery!=$;e(Number(w[0])>=1&&Number(w[1])>=7,u,function(r){var o;!r&&m&&(o=jQuery.noConflict());var a=!r&&""!==p;e("undefined"!=typeof _gat,l,function(){e("undefined"!=typeof flowplayer,f,function(e){e||t(s),o=o||jQuery;var r=o(n),c=r.attr("src"),l=o(r.html().replace(/^[ \t\n\r]+/gm,"").replace(/[ \n\t\r]+$/gm,""));o(i).replaceWith(l),l.find(":not(video, source)").remove(),l.flowplayer({swf:d,e:1}),l.data("flowplayer").conf.embed={library:f,swf:d,script:c},a&&o.noConflict(!0)})})})}();
 
lib/flowplayer.js CHANGED
@@ -1,2685 +1,10027 @@
1
  /*!
2
 
3
- Flowplayer v5.5.2 (Thursday, 27. November 2014 10:32AM) | flowplayer.org/license
4
 
5
  */
6
- !function($) {
7
-
8
- /*
9
- jQuery.browser for 1.9+
10
-
11
- We all love feature detection but that's sometimes not enough.
 
 
 
 
 
 
 
 
 
 
 
12
 
13
- @author Tero Piirainen
14
- */
15
- !function($) {
16
-
17
- if (!$.browser) {
18
-
19
- var b = $.browser = {},
20
- ua = navigator.userAgent.toLowerCase(),
21
- match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
22
- /(safari)[ \/]([\w.]+)/.exec(ua) ||
23
- /(webkit)[ \/]([\w.]+)/.exec(ua) ||
24
- /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
25
- /(msie) ([\w.]+)/.exec(ua) ||
26
- ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || [];
27
-
28
- if (match[1]) {
29
- b[match[1]] = true;
30
- b.version = match[2] || "0";
31
- }
32
 
33
- }
 
 
34
 
35
- }(jQuery);
36
- // auto-install (any video tag with parent .flowplayer)
37
- $(function() {
38
- if (typeof $.fn.flowplayer == 'function') {
39
- $("video").parent(".flowplayer").flowplayer();
40
- }
41
- });
42
 
43
- var instances = [],
44
- extensions = [],
45
- UA = window.navigator.userAgent;
 
46
 
 
 
 
 
 
 
 
47
 
48
- /* flowplayer() */
49
- window.flowplayer = function(fn) {
50
- return $.isFunction(fn) ? extensions.push(fn) :
51
- typeof fn == 'number' || fn === undefined ? instances[fn || 0] :
52
- $(fn).data("flowplayer");
 
 
 
 
 
 
53
  };
54
 
55
- $(window).on('beforeunload', function() {
56
- $.each(instances, function(i, api) {
57
- if (api.conf.splash) {
58
- api.unload();
 
 
 
59
  } else {
60
- api.bind("error", function () {
61
- $(".flowplayer.is-error .fp-message").remove();
62
- });
63
  }
64
- });
65
- });
66
-
67
- var supportLocalStorage = false;
68
- try {
69
- if (typeof window.localStorage == "object") {
70
- window.localStorage.flowplayerTestStorage = "test";
71
- supportLocalStorage = true;
72
  }
73
- } catch (ignored) {}
74
 
75
- var isSafari = /Safari/.exec(navigator.userAgent) && !/Chrome/.exec(navigator.userAgent);
76
- m = /(\d+\.\d+) Safari/.exec(navigator.userAgent),
77
- safariVersion = m ? Number(m[1]) : 100;
 
 
 
 
78
 
79
- $.extend(flowplayer, {
 
 
80
 
81
- version: '5.5.2',
 
 
82
 
83
- engine: {},
 
 
 
84
 
85
- conf: {},
 
 
 
86
 
87
- support: {},
 
 
88
 
89
- defaults: {
90
 
91
- debug: false,
 
 
 
 
 
92
 
93
- // true = forced playback
94
- disabled: false,
 
 
 
 
95
 
96
- // first engine to try
97
- engine: 'html5',
98
 
99
- fullscreen: window == window.top,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
 
101
- // keyboard shortcuts
102
- keyboard: true,
 
 
 
 
103
 
104
- // default aspect ratio
105
- ratio: 9 / 16,
 
 
 
 
 
 
 
 
 
 
 
 
106
 
107
- adaptiveRatio: false,
 
 
 
 
 
108
 
109
- // scale flash object to video's aspect ratio in normal mode?
110
- flashfit: false,
 
 
 
 
111
 
112
- rtmp: 0,
 
 
113
 
114
- splash: false,
 
 
 
 
 
 
 
115
 
116
- live: false,
 
 
117
 
118
- swf: "//releases.flowplayer.org/5.5.2/flowplayer.swf",
 
 
 
 
 
 
 
 
 
119
 
120
- speeds: [0.25, 0.5, 1, 1.5, 2],
 
 
 
 
 
 
121
 
122
- tooltip: true,
 
 
123
 
124
- // initial volume level
125
- volume: !supportLocalStorage ? 1 : localStorage.muted == "true" ? 0 : !isNaN(localStorage.volume) ? localStorage.volume || 1 : 1,
 
 
126
 
127
- // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#error-codes
128
- errors: [
 
 
 
129
 
130
- // video exceptions
131
- '',
132
- 'Video loading aborted',
133
- 'Network error',
134
- 'Video not properly encoded',
135
- 'Video file not found',
 
 
136
 
137
- // player exceptions
138
- 'Unsupported video',
139
- 'Skin not found',
140
- 'SWF file not found',
141
- 'Subtitles not found',
142
- 'Invalid RTMP URL',
143
- 'Unsupported video format. Try installing Adobe Flash.'
144
- ],
145
- errorUrls: ['','','','','','','','','','',
146
- 'http://get.adobe.com/flashplayer/'
147
- ],
148
- playlist: [],
149
-
150
- hlsFix: isSafari && safariVersion < 8
151
 
152
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
153
 
154
- });
 
 
 
155
 
156
- // keep track of players
157
- var playerCount = 1;
158
-
159
- // jQuery plugin
160
- $.fn.flowplayer = function(opts, callback) {
161
-
162
- if (typeof opts == 'string') opts = { swf: opts }
163
- if ($.isFunction(opts)) { callback = opts; opts = {} }
164
-
165
- return !opts && this.data("flowplayer") || this.each(function() {
166
-
167
- // private variables
168
- var root = $(this).addClass("is-loading"),
169
- conf = $.extend({}, flowplayer.defaults, flowplayer.conf, opts, root.data()),
170
- videoTag = $("video", root).addClass("fp-engine").removeAttr("controls"),
171
- urlResolver = videoTag.length ? new URLResolver(videoTag) : null,
172
- storage = {},
173
- lastSeekPosition,
174
- engine;
175
-
176
- if (conf.playlist.length) { // Create initial video tag if called without
177
- var preload = conf.preload || videoTag.attr('preload'), placeHolder;
178
- if (videoTag.length) videoTag.replaceWith(placeHolder = $('<p />'));
179
- videoTag = $('<video />').addClass('fp-engine');
180
- placeHolder ? placeHolder.replaceWith(videoTag) : root.prepend(videoTag);
181
- if (flowplayer.support.video) videoTag.attr('preload', preload);
182
- if (typeof conf.playlist[0] === 'string') videoTag.attr('src', conf.playlist[0]);
183
- else {
184
- $.each(conf.playlist[0], function(i, plObj) {
185
- for (var type in plObj) {
186
- if (plObj.hasOwnProperty(type)) {
187
- videoTag.append($('<source />').attr({type: 'video/' + type, src: plObj[type]}));
188
- }
189
- }
190
- });
191
- }
192
- urlResolver = new URLResolver(videoTag);
193
 
194
- }
 
 
195
 
196
- //stop old instance
197
- var oldApi = root.data('flowplayer');
198
- if (oldApi) oldApi.unload();
 
 
199
 
200
- root.data('fp-player_id', root.data('fp-player_id') || playerCount++);
 
 
 
 
 
 
 
 
 
 
 
 
 
201
 
202
- try {
203
- storage = supportLocalStorage ? window.localStorage : storage;
204
- } catch(e) {}
205
 
206
- var isRTL = (this.currentStyle && this.currentStyle['direction'] === 'rtl')
207
- || (window.getComputedStyle && window.getComputedStyle(this, null).getPropertyValue('direction') === 'rtl');
 
208
 
209
- if (isRTL) root.addClass('is-rtl');
 
 
210
 
211
- /*** API ***/
212
- var api = oldApi || {
 
213
 
214
- // properties
215
- conf: conf,
216
- currentSpeed: 1,
217
- volumeLevel: typeof conf.volume === "undefined" ? storage.volume * 1 : conf.volume,
218
- video: {},
219
 
220
- // states
221
- disabled: false,
222
- finished: false,
223
- loading: false,
224
- muted: storage.muted == "true" || conf.muted,
225
- paused: false,
226
- playing: false,
227
- ready: false,
228
- splash: false,
229
- rtl: isRTL,
230
 
231
- // methods
232
- load: function(video, callback) {
 
 
233
 
234
- if (api.error || api.loading || api.disabled) return;
235
 
236
- // resolve URL
237
- video = urlResolver.resolve(video);
238
- $.extend(video, engine.pick(video.sources));
 
239
 
240
- if (video.src) {
241
- var e = $.Event("load");
242
- root.trigger(e, [api, video, engine]);
 
243
 
244
- if (!e.isDefaultPrevented()) {
245
- engine.load(video);
 
246
 
247
- // callback
248
- if ($.isFunction(video)) callback = video;
249
- if (callback) root.one("ready", callback);
250
- } else {
251
- api.loading = false;
252
- }
253
- }
254
 
255
- return api;
256
- },
257
 
258
- pause: function(fn) {
259
- if (api.ready && !api.seeking && !api.disabled && !api.loading) {
260
- engine.pause();
261
- api.one("pause", fn);
262
- }
263
- return api;
264
- },
265
 
266
- resume: function() {
267
 
268
- if (api.ready && api.paused && !api.disabled) {
269
- engine.resume();
 
 
 
 
 
 
270
 
271
- // Firefox (+others?) does not fire "resume" after finish
272
- if (api.finished) {
273
- api.trigger("resume", [api]);
274
- api.finished = false;
275
- }
276
- }
277
 
278
- return api;
279
- },
 
 
280
 
281
- toggle: function() {
282
- return api.ready ? api.paused ? api.resume() : api.pause() : api.load();
283
- },
284
 
285
- /*
286
- seek(1.4) -> 1.4s time
287
- seek(true) -> 10% forward
288
- seek(false) -> 10% backward
289
- */
290
- seek: function(time, callback) {
291
- if (api.ready && !api.live) {
292
 
293
- if (typeof time == "boolean") {
294
- var delta = api.video.duration * 0.1;
295
- time = api.video.time + (time ? delta : -delta);
296
- }
297
- time = lastSeekPosition = Math.min(Math.max(time, 0), api.video.duration).toFixed(1);
298
- var ev = $.Event('beforeseek');
299
- root.trigger(ev, [api, time]);
300
- if (!ev.isDefaultPrevented()) {
301
- engine.seek(time);
302
- if ($.isFunction(callback)) root.one("seek", callback);
303
- } else {
304
- api.seeking = false;
305
- root.toggleClass("is-seeking", api.seeking); // remove loading indicator
306
- }
307
  }
308
- return api;
309
- },
 
 
 
 
 
310
 
311
- /*
312
- seekTo(1) -> 10%
313
- seekTo(2) -> 20%
314
- seekTo(3) -> 30%
315
- ...
316
- seekTo() -> last position
317
- */
318
- seekTo: function(position, fn) {
319
- var time = position === undefined ? lastSeekPosition : api.video.duration * 0.1 * position;
320
- return api.seek(time, fn);
321
- },
322
 
323
- mute: function(flag) {
324
- if (flag === undefined) flag = !api.muted;
325
- storage.muted = api.muted = flag;
326
- storage.volume = !isNaN(storage.volume) ? storage.volume : conf.volume; // make sure storage has volume
327
- api.volume(flag ? 0 : storage.volume, true);
328
- api.trigger("mute", flag);
329
- return api;
330
- },
331
 
332
- volume: function(level, skipStore) {
333
- if (api.ready) {
334
- level = Math.min(Math.max(level, 0), 1);
335
- if (!skipStore) storage.volume = level;
336
- engine.volume(level);
337
- }
338
 
339
- return api;
340
- },
 
341
 
342
- speed: function(val, callback) {
 
 
 
 
 
 
 
 
 
 
 
343
 
344
- if (api.ready) {
 
 
345
 
346
- // increase / decrease
347
- if (typeof val == "boolean") {
348
- val = conf.speeds[$.inArray(api.currentSpeed, conf.speeds) + (val ? 1 : -1)] || api.currentSpeed;
349
- }
350
 
351
- engine.speed(val);
352
- if (callback) root.one("speed", callback);
 
 
 
 
 
 
 
 
 
 
 
 
353
  }
 
354
 
355
- return api;
356
- },
357
 
 
 
358
 
359
- stop: function() {
360
- if (api.ready) {
361
- api.pause();
362
- api.seek(0, function() {
363
- root.trigger("stop");
364
- });
 
365
  }
366
- return api;
367
- },
368
 
369
- unload: function() {
370
- if (!root.hasClass("is-embedding")) {
 
 
 
 
 
 
 
 
 
 
 
371
 
372
- if (conf.splash) {
373
- api.trigger("unload");
374
- engine.unload();
375
- } else {
376
- api.stop();
377
- }
378
- }
379
- return api;
380
- },
381
 
382
- disable: function(flag) {
383
- if (flag === undefined) flag = !api.disabled;
384
 
385
- if (flag != api.disabled) {
386
- api.disabled = flag;
387
- api.trigger("disable", flag);
388
  }
389
- return api;
390
- }
391
-
392
- };
393
 
394
- api.conf = $.extend(api.conf, conf);
 
 
 
 
 
 
395
 
 
 
396
 
397
- /* event binding / unbinding */
398
- $.each(['bind', 'one', 'unbind'], function(i, key) {
399
- api[key] = function(type, fn) {
400
- root[key](type, fn);
401
- return api;
402
- };
403
- });
404
 
405
- api.trigger = function(event, arg) {
406
- root.trigger(event, [api, arg]);
407
- return api;
408
- };
409
 
 
410
 
411
- /*** Behaviour ***/
412
- if (!root.data('flowplayer')) { // Only bind once
413
- root.bind("boot", function() {
414
 
415
- // conf
416
- $.each(['autoplay', 'loop', 'preload', 'poster'], function(i, key) {
417
- var val = videoTag.attr(key);
418
- if (val !== undefined) conf[key] = val ? val : true;
 
 
 
419
  });
420
 
421
- // splash
422
- if (conf.splash || root.hasClass("is-splash") || !flowplayer.support.firstframe) {
423
- api.forcedSplash = !conf.splash && !root.hasClass("is-splash");
424
- api.splash = conf.splash = conf.autoplay = true;
425
- root.addClass("is-splash");
426
- if (flowplayer.support.video) videoTag.attr("preload", "none");
427
- }
428
-
429
- if (conf.live || root.hasClass('is-live')) {
430
- api.live = conf.live = true;
431
- root.addClass('is-live');
432
- }
433
 
434
- // extensions
435
- $.each(extensions, function(i) {
436
- this(api, root);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
437
  });
438
 
439
- // 1. use the configured engine
440
- engine = flowplayer.engine[conf.engine];
441
- if (engine) engine = engine(api, root);
442
-
443
- if (engine.pick(urlResolver.initialSources)) {
444
- api.engine = conf.engine;
445
-
446
- // 2. failed -> try another
447
- } else {
448
- $.each(flowplayer.engine, function(name, impl) {
449
- if (name != conf.engine) {
450
- engine = this(api, root);
451
- if (engine.pick(urlResolver.initialSources)) {
452
- api.engine = name;
453
- return false;
454
- }
455
- }
456
- });
457
- }
458
 
459
- // instances
460
- instances.push(api);
 
461
 
462
- // no engine
463
- if (!api.engine) return api.trigger("error", { code: flowplayer.support.flashVideo ? 5 : 10 });
464
 
465
- // start
466
- conf.splash ? api.unload() : api.load();
 
 
467
 
468
- // disabled
469
- if (conf.disabled) api.disable();
470
 
471
- //initial volumelevel
472
- engine.volume(api.volumeLevel);
473
 
474
- // initial callback
475
- root.one("ready", callback);
 
 
476
 
 
477
 
478
- }).bind("load", function(e, api, video) {
 
 
 
 
 
 
 
 
 
479
 
480
- // unload others
481
- if (conf.splash) {
482
- $(".flowplayer").filter(".is-ready, .is-loading").not(root).each(function() {
483
- var api = $(this).data("flowplayer");
484
- if (api.conf.splash) api.unload();
485
- });
486
- }
487
 
488
- // loading
489
- root.addClass("is-loading");
490
- api.loading = true;
491
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
492
 
493
- }).bind("ready", function(e, api, video) {
494
- video.time = 0;
495
- api.video = video;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
496
 
497
- function notLoading() {
498
- root.removeClass("is-loading");
499
- api.loading = false;
500
- }
501
 
502
- if (conf.splash) root.one("progress", notLoading);
503
- else notLoading();
504
 
505
- // saved state
506
- if (api.muted) api.mute(true);
507
- else api.volume(api.volumeLevel);
508
 
509
- // see https://github.com/flowplayer/flowplayer/issues/479
 
510
 
511
- var hlsFix = api.conf.hlsFix && /mpegurl/i.exec(video.type);
512
- root.toggleClass('hls-fix', !!hlsFix);
513
 
514
- }).bind("unload", function(e) {
515
- if (conf.splash) videoTag.remove();
516
- root.removeClass("is-loading");
517
- api.loading = false;
 
 
 
 
 
 
 
 
518
 
 
519
 
520
- }).bind("ready unload", function(e) {
521
- var is_ready = e.type == "ready";
522
- root.toggleClass("is-splash", !is_ready).toggleClass("is-ready", is_ready);
523
- api.ready = is_ready;
524
- api.splash = !is_ready;
525
 
 
 
 
526
 
527
- }).bind("progress", function(e, api, time) {
528
- api.video.time = time;
529
 
 
 
 
530
 
531
- }).bind("speed", function(e, api, val) {
532
- api.currentSpeed = val;
 
 
 
 
 
 
533
 
534
- }).bind("volume", function(e, api, level) {
535
- api.volumeLevel = Math.round(level * 100) / 100;
536
- if (!api.muted) storage.volume = level;
537
- else if (level) api.mute(false);
538
 
 
 
 
 
539
 
540
- }).bind("beforeseek seek", function(e) {
541
- api.seeking = e.type == "beforeseek";
542
- root.toggleClass("is-seeking", api.seeking);
543
 
544
- }).bind("ready pause resume unload finish stop", function(e, _api, video) {
 
545
 
546
- // PAUSED: pause / finish
547
- api.paused = /pause|finish|unload|stop/.test(e.type);
 
 
 
 
 
548
 
549
- // SHAKY HACK: first-frame / preload=none
550
- if (e.type == "ready") {
551
- api.paused = conf.preload == 'none';
552
- if (video) {
553
- api.paused = !video.duration || !conf.autoplay && (conf.preload != 'none');
554
- }
555
- }
556
 
557
- // the opposite
558
- api.playing = !api.paused;
559
 
560
- // CSS classes
561
- root.toggleClass("is-paused", api.paused).toggleClass("is-playing", api.playing);
562
 
563
- // sanity check
564
- if (!api.load.ed) api.pause();
565
 
566
- }).bind("finish", function(e) {
567
- api.finished = true;
 
 
 
568
 
569
- }).bind("error", function() {
570
- videoTag.remove();
571
- });
572
- }
573
 
574
- // boot
575
- root.trigger("boot", [api, root]).data("flowplayer", api);
576
 
577
- });
 
 
578
 
579
- };
 
 
 
 
 
 
580
 
581
- !function() {
 
582
 
583
- var parseIpadVersion = function(UA) {
584
- var e = /Version\/(\d\.\d)/.exec(UA);
585
- if (e && e.length > 1) {
586
- return parseFloat(e[1], 10);
587
- }
588
- return 0;
589
- };
 
 
 
 
590
 
591
- var s = flowplayer.support,
592
- browser = $.browser,
593
- video = $("<video loop autoplay preload/>")[0],
594
- UA = navigator.userAgent,
595
- IS_IE = browser.msie || /Trident\/7/.test(UA),
596
- IS_IPAD = /iPad|MeeGo/.test(UA) && !/CriOS/.test(UA),
597
- IS_IPAD_CHROME = /iPad/.test(UA) && /CriOS/.test(UA),
598
- IS_IPHONE = /iP(hone|od)/i.test(UA) && !/iPad/.test(UA),
599
- IS_ANDROID = /Android/.test(UA) && !/Firefox/.test(UA),
600
- IS_ANDROID_FIREFOX = /Android/.test(UA) && /Firefox/.test(UA),
601
- IS_SILK = /Silk/.test(UA),
602
- IS_WP = /IEMobile/.test(UA),
603
- WP_VER = IS_WP ? parseFloat(/Windows\ Phone\ (\d+\.\d+)/.exec(UA)[1], 10) : 0,
604
- IE_MOBILE_VER = IS_WP ? parseFloat(/IEMobile\/(\d+\.\d+)/.exec(UA)[1], 10) : 0,
605
- IPAD_VER = IS_IPAD ? parseIpadVersion(UA) : 0,
606
- ANDROID_VER = IS_ANDROID ? parseFloat(/Android\ (\d\.\d)/.exec(UA)[1], 10) : 0;
607
- $.extend(s, {
608
- subtitles: !!video.addTextTrack,
609
- fullscreen: typeof document.webkitCancelFullScreen == 'function' && !/Mac OS X 10_5.+Version\/5\.0\.\d Safari/.test(UA) ||
610
- document.mozFullScreenEnabled ||
611
- typeof document.exitFullscreen == 'function' ||
612
- typeof document.msExitFullscreen == 'function',
613
- inlineBlock: !(IS_IE && browser.version < 8),
614
- touch: ('ontouchstart' in window),
615
- dataload: !IS_IPAD && !IS_IPHONE && !IS_WP,
616
- zeropreload: !IS_IE && !IS_ANDROID, // IE supports only preload=metadata
617
- volume: !IS_IPAD && !IS_ANDROID && !IS_IPHONE && !IS_SILK && !IS_IPAD_CHROME,
618
- cachedVideoTag: !IS_IPAD && !IS_IPHONE && !IS_IPAD_CHROME && !IS_WP,
619
- firstframe: !IS_IPHONE && !IS_IPAD && !IS_ANDROID && !IS_SILK && !IS_IPAD_CHROME && !IS_WP && !IS_ANDROID_FIREFOX,
620
- inlineVideo: !IS_IPHONE && (!IS_WP || (WP_VER >= 8.1 && IE_MOBILE_VER >= 11)) && (!IS_ANDROID || ANDROID_VER >= 3),
621
- hlsDuration: !IS_ANDROID && (!browser.safari || IS_IPAD || IS_IPHONE || IS_IPAD_CHROME),
622
- seekable: !IS_IPAD && !IS_IPAD_CHROME
623
- });
624
 
625
- // flashVideo
626
- try {
627
- var plugin = navigator.plugins["Shockwave Flash"],
628
- ver = IS_IE ? new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable('$version') : plugin.description;
629
- if (!IS_IE && !plugin[0].enabledPlugin) s.flashVideo = false;
630
- else {
 
631
 
632
- ver = ver.split(/\D+/);
633
- if (ver.length && !ver[0]) ver = ver.slice(1);
634
 
635
- s.flashVideo = ver[0] > 9 || ver[0] == 9 && ver[3] >= 115;
636
- }
 
 
637
 
638
- } catch (ignored) {}
639
- try {
640
- s.video = !!video.canPlayType;
641
- s.video && video.canPlayType('video/mp4');
642
- } catch (e) {
643
- s.video = false;
644
- }
645
 
646
- // animation
647
- s.animation = (function() {
648
- var vendors = ['','Webkit','Moz','O','ms','Khtml'], el = $("<p/>")[0];
 
 
649
 
650
- for (var i = 0; i < vendors.length; i++) {
651
- if (el.style[vendors[i] + 'AnimationName'] !== 'undefined') return true;
652
- }
653
- })();
 
 
654
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
655
 
 
656
 
657
- }();
658
 
 
 
 
 
 
 
 
 
 
 
659
 
660
- /* The most minimal Flash embedding */
 
 
 
 
 
 
661
 
662
- // movie required in opts
663
- function embed(swf, flashvars, wmode) {
664
- wmode = wmode || "transparent";
 
 
 
 
 
 
665
 
666
- var id = "obj" + ("" + Math.random()).slice(2, 15),
667
- tag = '<object class="fp-engine" id="' + id+ '" name="' + id + '" ';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
668
 
669
- tag += $.browser.msie ? 'classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000">' :
670
- ' data="' + swf + '" type="application/x-shockwave-flash">';
 
671
 
672
- var opts = {
673
- width: "100%",
674
- height: "100%",
675
- allowscriptaccess: "always",
676
- wmode: wmode,
677
- quality: "high",
678
- flashvars: "",
 
679
 
680
- // https://github.com/flowplayer/flowplayer/issues/13#issuecomment-9369919
681
- movie: swf + ($.browser.msie ? "?" + id : ""),
682
- name: id
683
- };
684
 
685
- // flashvars
686
- $.each(flashvars, function(key, value) {
687
- opts.flashvars += key + "=" + value + "&";
688
- });
689
 
690
- // parameters
691
- $.each(opts, function(key, value) {
692
- tag += '<param name="' + key + '" value="'+ value +'"/>';
693
- });
694
 
695
- tag += "</object>";
 
 
 
696
 
697
- return $(tag);
698
- }
 
699
 
 
 
 
700
 
701
- // Flash is buggy allover
702
- if (window.attachEvent) {
703
- window.attachEvent("onbeforeunload", function() {
704
- __flash_savedUnloadHandler = __flash_unloadHandler = function() {};
705
- });
706
- }
707
 
 
 
 
 
 
 
 
708
 
709
- flowplayer.engine.flash = function(player, root) {
 
 
 
 
 
710
 
711
- var conf = player.conf,
712
- video = player.video,
713
- callbackId,
714
- objectTag,
715
- api;
 
 
 
 
 
 
 
 
 
 
 
716
 
717
- var win = $(window);
718
 
719
- var readyCallback = function () {
720
- // write out video url to handle fullscreen toggle and api load
721
- // in WebKit and Safari - see also fsResume
722
- if (VENDOR == "webkit" || IS_SAFARI) {
723
- var flashvars = $("object param[name='flashvars']", root),
724
- flashprops = (flashvars.attr("value") || '').split("&");
725
 
726
- $.each(flashprops, function (i, prop) {
727
- prop = prop.split("=");
728
- if (prop[0] == "url" && prop[1] != player.video.url) {
729
- flashprops[i] = "url=" + player.video.url;
730
- flashvars.attr({value: flashprops.join("&")});
731
- return false;
732
- }
733
- });
734
  }
 
735
 
736
- };
737
- var fullscreenCallback = function(e) {
738
- // handle Flash object aspect ratio
739
- var origH = root.height(),
740
- origW = root.width();
741
-
742
- if (player.conf.flashfit || /full/.test(e.type)) {
743
-
744
- var fs = player.isFullscreen,
745
- truefs = fs && FS_SUPPORT,
746
- ie7 = !flowplayer.support.inlineBlock,
747
- screenW = fs ? (truefs ? screen.width : win.width()) : origW,
748
- screenH = fs ? (truefs ? screen.height : win.height()) : origH,
749
-
750
- // default values for fullscreen-exit without flashfit
751
- hmargin = 0,
752
- vmargin = 0,
753
- objwidth = ie7 ? origW : '',
754
- objheight = ie7 ? origH : '',
755
-
756
- aspectratio, dataratio;
757
-
758
- if (player.conf.flashfit || e.type === "fullscreen") {
759
- aspectratio = player.video.width / player.video.height,
760
- dataratio = player.video.height / player.video.width,
761
- objheight = Math.max(dataratio * screenW),
762
- objwidth = Math.max(aspectratio * screenH);
763
- objheight = objheight > screenH ? objwidth * dataratio : objheight;
764
- objheight = Math.min(Math.round(objheight), screenH);
765
- objwidth = objwidth > screenW ? objheight * aspectratio : objwidth;
766
- objwidth = Math.min(Math.round(objwidth), screenW);
767
- vmargin = Math.max(Math.round((screenH + vmargin - objheight) / 2), 0);
768
- hmargin = Math.max(Math.round((screenW + hmargin - objwidth) / 2), 0);
769
  }
 
770
 
771
- $("object", root).css({
772
- width: objwidth,
773
- height: objheight,
774
- marginTop: vmargin,
775
- marginLeft: hmargin
776
- });
777
- }
778
- };
779
 
 
 
780
 
781
- var engine = {
 
 
 
 
 
 
782
 
783
- pick: function(sources) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
784
 
785
- if (flowplayer.support.flashVideo) {
786
 
787
- // always pick video/flash first
788
- var flash = $.grep(sources, function(source) { return source.type == 'flash'; })[0];
789
- if (flash) return flash;
790
 
791
- for (var i = 0, source; i < sources.length; i++) {
792
- source = sources[i];
793
- if (/mp4|flv/i.test(source.type)) return source;
 
794
  }
795
- }
796
- },
797
 
798
- load: function(video) {
 
 
 
799
 
800
- function escapeURL(url) {
801
- return url.replace(/&amp;/g, '%26').replace(/&/g, '%26').replace(/=/g, '%3D');
802
- }
803
 
804
- var html5Tag = $("video", root),
805
- url = escapeURL(video.src);
806
- is_absolute = /^https?:/.test(url);
807
 
808
- var removeTag = function() {
809
- html5Tag.remove();
810
- };
811
- var hasSupportedSource = function(sources) {
812
- return $.grep(sources, function(src) {
813
- return !!html5Tag[0].canPlayType('video/' + src.type);
814
- }).length > 0;
815
- };
816
- if (flowplayer.support.video &&
817
- html5Tag.prop('autoplay') &&
818
- hasSupportedSource(video.sources)) html5Tag.one('timeupdate', removeTag);
819
- else removeTag();
820
 
821
- // convert to absolute
822
- if (!is_absolute && !conf.rtmp) url = $("<img/>").attr("src", url)[0].src;
823
 
824
- if (api) {
825
- api.__play(url);
826
 
827
- } else {
 
828
 
829
- player.bind('ready', readyCallback)
830
- .bind("ready fullscreen fullscreen-exit", fullscreenCallback);
831
 
832
- callbackId = "fp" + ("" + Math.random()).slice(3, 15);
833
 
834
- var opts = {
835
- hostname: conf.embedded ? conf.hostname : location.hostname,
836
- url: url,
837
- callback: "jQuery."+ callbackId
838
- };
839
- if (root.data("origin")) {
840
- opts.origin = root.data("origin");
841
- }
842
 
843
- if (is_absolute) delete conf.rtmp;
 
 
 
 
 
 
 
844
 
845
- // optional conf
846
- $.each(['key', 'autoplay', 'preload', 'rtmp', 'subscribe', 'live', 'loop', 'debug', 'splash', 'poster', 'rtmpt'], function(i, key) {
847
- if (conf.hasOwnProperty(key)) opts[key] = conf[key];
848
- });
849
- // bufferTime might be 0
850
- if (conf.bufferTime !== undefined) opts.bufferTime = conf.bufferTime;
851
 
852
- // issues #376
853
- if (opts.rtmp) {
854
- opts.rtmp = escapeURL(opts.rtmp);
855
- }
 
856
 
857
- // issues #387
858
- opts.initialVolume = player.volumeLevel;
 
 
 
 
859
 
860
- objectTag = embed(conf.swf, opts, conf.wmode);
 
 
 
 
 
 
 
 
 
 
 
861
 
862
- objectTag.prependTo(root);
863
 
864
- api = objectTag[0];
865
 
866
- // throw error if no loading occurs
867
- setTimeout(function() {
868
- try {
869
- if (!api.PercentLoaded()) {
870
- return root.trigger("error", [player, { code: 7, url: conf.swf }]);
871
  }
872
- } catch (e) {}
873
- }, 5000);
874
 
875
- // detect disabled flash
876
- setTimeout(function() {
877
- if (typeof api.PercentLoaded === 'undefined') {
878
- root.trigger('flashdisabled', [player]);
879
- }
880
- }, 1000);
881
 
882
- api.pollInterval = setInterval(function () {
883
- if (!api) return;
884
- var status = api.__status ? api.__status() : null;
885
- if (!status) return;
886
 
887
- player.trigger("progress", status.time);
 
 
888
 
889
- video.buffer = status.buffer / video.bytes * video.duration;
890
- player.trigger("buffer", video.buffer);
 
 
 
 
 
 
 
891
 
892
- if (!video.buffered && status.time > 0) {
893
- video.buffered = true;
894
- player.trigger("buffered");
895
- }
896
 
897
- }, 250);
898
 
899
- // listen
900
- $[callbackId] = function(type, arg) {
 
 
901
 
902
- if (conf.debug) console.log("--", type, arg);
 
903
 
904
- var event = $.Event(type);
905
 
906
- switch (type) {
907
 
908
- // RTMP sends a lot of finish events in vain
909
- // case "finish": if (conf.rtmp) return;
910
- case "ready": arg = $.extend(video, arg); break;
911
- case "click": event.flash = true; break;
912
- case "keydown": event.which = arg; break;
913
- case "seek": video.time = arg; break;
914
- }
915
 
916
- if (type != 'buffered') {
917
- // add some delay so that player is truly ready after an event
918
- setTimeout(function() { player.trigger(event, arg); }, 1)
919
- }
920
 
921
- };
922
 
923
- }
924
 
925
- },
 
 
 
 
926
 
927
- // not supported yet
928
- speed: $.noop,
 
 
 
929
 
 
 
 
 
 
 
 
930
 
931
- unload: function() {
932
- api && api.__unload && api.__unload();
933
- delete $[callbackId];
934
- $("object", root).remove();
935
- api = 0;
936
- player.unbind('ready', readyCallback).unbind('ready fullscreen fullscreen-exit', fullscreenCallback);
937
- clearInterval(api.pollInterval);
938
- }
939
 
940
- };
 
 
 
 
941
 
942
- $.each("pause,resume,seek,volume".split(","), function(i, name) {
943
 
944
- engine[name] = function(arg) {
945
- try {
946
- if (player.ready) {
 
 
947
 
948
- if (name == 'seek' && player.video.time && !player.paused) {
949
- player.trigger("beforeseek");
950
- }
951
 
952
- if (arg === undefined) {
953
- api["__" + name]();
954
 
955
- } else {
956
- api["__" + name](arg);
957
- }
 
 
 
 
 
958
 
959
- }
960
- } catch (e) {
961
- if (typeof api["__" + name] === 'undefined') { //flash lost it's methods
962
- return root.trigger('flashdisabled', [player]);
963
- }
964
- throw e;
965
- }
966
- };
967
 
968
- });
969
 
970
- return engine;
 
971
 
972
- };
 
 
 
 
973
 
 
974
 
975
- var VIDEO = $('<video/>')[0];
976
 
977
- // HTML5 --> Flowplayer event
978
- var EVENTS = {
979
 
980
- // fired
981
- ended: 'finish',
982
- pause: 'pause',
983
- play: 'resume',
984
- progress: 'buffer',
985
- timeupdate: 'progress',
986
- volumechange: 'volume',
987
- ratechange: 'speed',
988
- //seeking: 'beforeseek',
989
- seeked: 'seek',
990
- // abort: 'resume',
991
 
992
- // not fired
993
- loadeddata: 'ready',
994
- // loadedmetadata: 0,
995
- // canplay: 0,
 
 
 
 
 
 
 
 
 
996
 
997
- // error events
998
- // load: 0,
999
- // emptied: 0,
1000
- // empty: 0,
1001
- error: 'error',
1002
- dataunavailable: 'error'
1003
 
1004
- };
1005
 
1006
- function round(val, per) {
1007
- per = per || 100;
1008
- return Math.round(val * per) / per;
1009
- }
1010
 
1011
- function getType(type) {
1012
- return /mpegurl/i.test(type) ? "application/x-mpegurl" : "video/" + type;
1013
- }
 
 
 
 
1014
 
1015
- function canPlay(type) {
1016
- if (!/^(video|application)/i.test(type))
1017
- type = getType(type);
1018
- return !!VIDEO.canPlayType(type).replace("no", '');
1019
- }
1020
 
1021
- function findFromSourcesByType(sources, type) {
1022
- var arr = $.grep(sources, function(s) {
1023
- return s.type === type;
1024
- });
1025
- return arr.length ? arr[0] : null;
1026
- }
1027
 
1028
- var videoTagCache;
1029
- var createVideoTag = function(video) {
1030
- if (videoTagCache) {
1031
- return videoTagCache.attr({type: getType(video.type), src: video.src});
1032
  }
1033
- return (videoTagCache = $("<video/>", {
1034
- src: video.src,
1035
- type: getType(video.type),
1036
- 'class': 'fp-engine',
1037
- 'autoplay': 'autoplay',
1038
- preload: 'none',
1039
- 'x-webkit-airplay': 'allow'
1040
- }));
1041
- }
1042
 
1043
- flowplayer.engine.html5 = function(player, root) {
1044
 
1045
- var videoTag = $("video", root),
1046
- support = flowplayer.support,
1047
- track = $("track", videoTag),
1048
- conf = player.conf,
1049
- self,
1050
- timer,
1051
- api,
1052
- volumeLevel;
1053
 
1054
- return self = {
 
 
 
 
1055
 
1056
- pick: function(sources) {
1057
- if (support.video) {
1058
- if (conf.videoTypePreference) {
1059
- var mp4source = findFromSourcesByType(sources, conf.videoTypePreference);
1060
- if (mp4source) return mp4source;
1061
- }
1062
- for (var i = 0, source; i < sources.length; i++) {
1063
- if (canPlay(sources[i].type)) return sources[i];
1064
- }
1065
- }
1066
- },
1067
 
1068
- load: function(video) {
1069
 
1070
- if (conf.splash && !api) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1071
 
1072
- videoTag = createVideoTag(video).prependTo(root);
 
 
1073
 
1074
- if (!support.inlineVideo) {
1075
- videoTag.css({
1076
- position: 'absolute',
1077
- top: '-9999em'
1078
- });
1079
- }
1080
 
1081
- //if (track.length) videoTag.append(track.prop("default", true));
 
 
1082
 
1083
- if (conf.loop) videoTag.attr("loop", "loop");
 
 
1084
 
1085
- api = videoTag[0];
1086
- if (typeof volumeLevel !== 'undefined') {
1087
- api.volume = volumeLevel;
1088
- }
 
 
 
 
 
 
 
 
 
 
 
1089
 
1090
- } else {
 
 
 
 
 
 
1091
 
1092
- api = videoTag[0];
1093
- var sources = videoTag.find('source');
1094
- if (!api.src && sources.length) {
1095
- api.src = video.src;
1096
- sources.remove();
1097
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1098
 
1099
- // change of clip
1100
- if (player.video.src && video.src != player.video.src) {
1101
- videoTag.attr("autoplay", "autoplay");
1102
- api.src = video.src;
1103
 
1104
- // preload=none or no initial "loadeddata" event
1105
- } else if (conf.preload == 'none' || !support.dataload) {
 
 
 
1106
 
1107
- if (support.zeropreload) {
1108
- player.trigger("ready", video).trigger("pause").one("ready", function() {
1109
- root.trigger("resume", [player]);
1110
- });
1111
 
1112
- } else {
1113
- player.one("ready", function() {
1114
- root.trigger("pause", [player]);
1115
- });
1116
- }
1117
- }
1118
 
1119
- }
1120
 
1121
- listen(api, $("source", videoTag).add(videoTag), video);
 
 
 
1122
 
1123
- // iPad (+others?) demands load()
1124
- if (conf.preload != 'none' && video.type != "mpegurl" || !support.zeropreload || !support.dataload) api.load();
1125
- if (conf.splash) api.load();
1126
- },
1127
 
1128
- pause: function() {
1129
- api.pause();
1130
- },
 
 
 
 
1131
 
1132
- resume: function() {
1133
- api.play();
1134
- },
 
 
 
 
 
1135
 
1136
- speed: function(val) {
1137
- api.playbackRate = val;
1138
- },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1139
 
1140
- seek: function(time) {
1141
- try {
1142
- var pausedState = player.paused;
1143
- api.currentTime = time;
1144
- if (pausedState) api.pause();
1145
- } catch (ignored) {}
1146
- },
1147
 
1148
- volume: function(level) {
1149
- volumeLevel = level;
1150
- if (api) {
1151
- api.volume = level;
1152
- }
1153
- },
1154
 
1155
- unload: function() {
1156
- $("video.fp-engine", root).remove();
1157
- if (!support.cachedVideoTag) videoTagCache = null;
1158
- timer = clearInterval(timer);
1159
- api = 0;
1160
- }
1161
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1162
  };
1163
 
1164
- function listen(api, sources, video) {
1165
- // listen only once
1166
-
1167
- if (api.listeners && api.listeners.hasOwnProperty(root.data('fp-player_id'))) return;
1168
- (api.listeners || (api.listeners = {}))[root.data('fp-player_id')] = true;
1169
 
1170
- sources.bind("error", function(e) {
1171
- try {
1172
- if (e.originalEvent && $(e.originalEvent.originalTarget).is('img')) return e.preventDefault();
1173
- if (canPlay($(e.target).attr("type"))) {
1174
- player.trigger("error", { code: 4 });
1175
- }
1176
- } catch (er) {
1177
- // Most likely: https://bugzilla.mozilla.org/show_bug.cgi?id=208427
1178
- }
1179
- });
1180
 
1181
- $.each(EVENTS, function(type, flow) {
 
 
 
 
1182
 
1183
- api.addEventListener(type, function(e) {
1184
 
1185
- // safari hack for bad URL (10s before fails)
1186
- if (flow == "progress" && e.srcElement && e.srcElement.readyState === 0) {
1187
- setTimeout(function() {
1188
- if (!player.video.duration && (!player.conf.live || (player.video.type === 'mpegurl' && support.hlsDuration))) {
1189
- flow = "error";
1190
- player.trigger(flow, { code: 4 });
1191
- }
1192
- }, 10000);
1193
- }
1194
 
1195
- if (conf.debug && !/progress/.test(flow)) console.log(type, "->", flow, e);
1196
 
1197
- // no events if player not ready
1198
- if (!player.ready && !/ready|error/.test(flow) || !flow || !$("video", root).length) { return; }
1199
 
1200
- var event = $.Event(flow), arg, vtype;
 
1201
 
1202
- switch (flow) {
 
1203
 
1204
- case "ready":
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1205
 
1206
- arg = $.extend(video, {
1207
- duration: api.duration,
1208
- width: api.videoWidth,
1209
- height: api.videoHeight,
1210
- url: api.currentSrc,
1211
- src: api.currentSrc
1212
- });
1213
 
1214
- try {
1215
- arg.seekable = !conf.live && /mpegurl/i.test(video ? (video.type || '') : '') && api.duration || api.seekable && api.seekable.end(null);
1216
 
1217
- } catch (ignored) {}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1218
 
1219
- // buffer
1220
- timer = timer || setInterval(function() {
1221
 
1222
- try {
1223
- arg.buffer = api.buffered.end(null);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1224
 
1225
- } catch (ignored) {}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1226
 
1227
- if (arg.buffer) {
1228
- if (round(arg.buffer, 1000) < round(arg.duration, 1000) && !arg.buffered) {
1229
- player.trigger("buffer", e);
 
 
 
 
 
 
 
 
1230
 
1231
- } else if (!arg.buffered) {
1232
- arg.buffered = true;
1233
- player.trigger("buffer", e).trigger("buffered", e);
1234
- clearInterval(timer);
1235
- timer = 0;
1236
- }
1237
- }
1238
 
1239
- }, 250);
 
 
 
 
 
 
 
 
 
 
 
1240
 
1241
- if (!conf.live && !arg.duration && !support.hlsDuration && type === "loadeddata") {
1242
- var durationChanged = function() {
1243
- arg.duration = api.duration;
1244
- try {
1245
- arg.seekable = api.seekable && api.seekable.end(null);
1246
 
1247
- } catch (ignored) {}
1248
- player.trigger(event, arg);
1249
- api.removeEventListener('durationchange', durationChanged);
1250
- };
1251
- api.addEventListener('durationchange', durationChanged);
1252
- return;
1253
- }
1254
 
1255
- break;
1256
 
1257
- case "progress": case "seek":
 
 
1258
 
1259
- var dur = player.video.duration
1260
 
1261
- if (api.currentTime > 0 || player.live) {
1262
- arg = Math.max(api.currentTime, 0);
1263
- break;
1264
 
1265
- } else if (flow == 'progress') {
1266
- return;
1267
- }
1268
 
 
1269
 
1270
- case "speed":
1271
- arg = round(api.playbackRate);
1272
- break;
 
1273
 
1274
- case "volume":
1275
- arg = round(api.volume);
1276
- break;
1277
 
1278
- case "error":
1279
- try {
1280
- arg = (e.srcElement || e.originalTarget).error;
1281
- } catch (er) {
1282
- // Most likely https://bugzilla.mozilla.org/show_bug.cgi?id=208427
1283
- return;
1284
  }
1285
- }
 
 
1286
 
1287
- player.trigger(event, arg);
 
 
 
 
 
 
 
1288
 
1289
- }, false);
 
 
1290
 
1291
- });
 
1292
 
1293
- }
1294
 
1295
- };
1296
- var TYPE_RE = /\.(\w{3,4})(\?.*)?$/i;
 
 
1297
 
1298
- function parseSource(el) {
 
 
 
1299
 
1300
- var src = el.attr("src"),
1301
- type = el.attr("type") || "",
1302
- suffix = src.split(TYPE_RE)[1];
1303
-
1304
- type = /mpegurl/i.test(type) ? "mpegurl" : type.replace("video/", "");
1305
-
1306
- return { src: src, suffix: suffix || type, type: type || suffix };
1307
- }
1308
 
1309
- /* Resolves video object from initial configuration and from load() method */
1310
- function URLResolver(videoTag) {
 
 
 
 
 
 
 
1311
 
1312
- var self = this,
1313
- sources = [];
 
 
 
 
 
1314
 
1315
- // initial sources
1316
- $("source", videoTag).each(function() {
1317
- sources.push(parseSource($(this)));
1318
  });
1319
 
1320
- if (!sources.length) sources.push(parseSource(videoTag));
1321
 
1322
- self.initialSources = sources;
 
 
 
 
 
 
 
1323
 
1324
- self.resolve = function(video) {
1325
- if (!video) return { sources: sources };
1326
 
1327
- if ($.isArray(video)) {
 
 
 
1328
 
1329
- video = { sources: $.map(video, function(el) {
1330
- var type, ret = $.extend({}, el);
1331
- $.each(el, function(key, value) { type = key; });
1332
- ret.type = type;
1333
- ret.src = el[type];
1334
- delete ret[type];
1335
- return ret;
1336
- })};
1337
 
1338
- } else if (typeof video == 'string') {
 
 
 
 
1339
 
1340
- video = { src: video, sources: [] };
 
 
 
 
1341
 
1342
- $.each(sources, function(i, source) {
1343
- if (source.type != 'flash') {
1344
- video.sources.push({
1345
- type: source.type,
1346
- src: video.src.replace(TYPE_RE, "." + source.suffix + "$2")
1347
- });
1348
- }
1349
- });
1350
- }
1351
 
1352
- return video;
1353
- };
1354
 
1355
- };
1356
- /* A minimal jQuery Slider plugin with all goodies */
 
 
 
 
1357
 
1358
- // skip IE policies
1359
- // document.ondragstart = function () { return false; };
1360
 
 
 
 
 
 
 
 
 
 
 
 
1361
 
1362
- // execute function every <delay> ms
1363
- $.throttle = function(fn, delay) {
1364
- var locked;
1365
 
1366
- return function () {
1367
- if (!locked) {
1368
- fn.apply(this, arguments);
1369
- locked = 1;
1370
- setTimeout(function () { locked = 0; }, delay);
1371
- }
1372
- };
1373
- };
1374
 
 
1375
 
1376
- $.fn.slider2 = function(rtl) {
 
1377
 
1378
- var IS_IPAD = /iPad/.test(navigator.userAgent) && !/CriOS/.test(navigator.userAgent);
 
 
 
 
1379
 
1380
- return this.each(function() {
 
 
1381
 
1382
- var root = $(this),
1383
- doc = $(document),
1384
- progress = root.children(":last"),
1385
- disabled,
1386
- offset,
1387
- width,
1388
- height,
1389
- vertical,
1390
- size,
1391
- maxValue,
1392
- max,
1393
- skipAnimation = false,
1394
-
1395
- /* private */
1396
- calc = function() {
1397
- offset = root.offset();
1398
- width = root.width();
1399
- height = root.height();
1400
-
1401
- /* exit from fullscreen can mess this up.*/
1402
- // vertical = height > width;
1403
-
1404
- size = vertical ? height : width;
1405
- max = toDelta(maxValue);
1406
- },
1407
 
1408
- fire = function(value) {
1409
- if (!disabled && value != api.value && (!maxValue || value < maxValue)) {
1410
- root.trigger("slide", [ value ]);
1411
- api.value = value;
1412
- }
1413
- },
1414
 
1415
- mousemove = function(e) {
1416
- var pageX = e.pageX;
1417
- if (!pageX && e.originalEvent && e.originalEvent.touches && e.originalEvent.touches.length) {
1418
- pageX = e.originalEvent.touches[0].pageX;
1419
- }
1420
- var delta = vertical ? e.pageY - offset.top : pageX - offset.left;
1421
- delta = Math.max(0, Math.min(max || size, delta));
1422
 
1423
- var value = delta / size;
1424
- if (vertical) value = 1 - value;
1425
- if (rtl) value = 1 - value;
1426
- return move(value, 0, true);
1427
- },
1428
 
1429
- move = function(value, speed) {
1430
- if (speed === undefined) { speed = 0; }
1431
- if (value > 1) value = 1;
1432
 
1433
- var to = (Math.round(value * 1000) / 10) + "%";
 
 
 
1434
 
1435
- if (!maxValue || value <= maxValue) {
1436
- if (!IS_IPAD && !skipAnimation) progress.stop(); // stop() broken on iPad
1437
- if (skipAnimation) {
1438
- progress.css('width', to);
1439
- } else {
1440
- progress.animate(vertical ? { height: to } : { width: to }, speed, "linear");
1441
- }
1442
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1443
 
1444
- return value;
1445
- },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1446
 
1447
- toDelta = function(value) {
1448
- return Math.max(0, Math.min(size, vertical ? (1 - value) * height : value * width));
1449
- },
 
 
 
 
 
 
 
 
 
 
1450
 
1451
- /* public */
1452
- api = {
1453
 
1454
- max: function(value) {
1455
- maxValue = value;
1456
- },
 
 
 
 
 
1457
 
1458
- disable: function(flag) {
1459
- disabled = flag;
1460
- },
 
1461
 
1462
- slide: function(value, speed, fireEvent) {
1463
- calc();
1464
- if (fireEvent) fire(value);
1465
- move(value, speed);
1466
- },
 
 
 
 
1467
 
1468
- // Should animation be handled via css
1469
- disableAnimation: function(value, alsoCssAnimations) {
1470
- skipAnimation = value !== false;
1471
- root.toggleClass('no-animation', !! alsoCssAnimations);
1472
- }
1473
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1474
  };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1475
 
1476
- calc();
1477
-
1478
- // bound dragging into document
1479
- root.data("api", api).bind("mousedown.sld touchstart", function(e) {
1480
- e.preventDefault();
 
1481
 
1482
- if (!disabled) {
1483
 
1484
- // begin --> recalculate. allows dynamic resizing of the slider
1485
- var delayedFire = $.throttle(fire, 100);
1486
- calc();
1487
- api.dragging = true;
1488
- root.addClass('is-dragging');
1489
- fire(mousemove(e));
1490
-
1491
- doc.bind("mousemove.sld touchmove", function(e) {
1492
- e.preventDefault();
1493
- delayedFire(mousemove(e));
1494
-
1495
- }).one("mouseup touchend", function() {
1496
- api.dragging = false;
1497
- root.removeClass('is-dragging');
1498
- doc.unbind("mousemove.sld touchmove");
1499
- });
 
 
 
 
 
 
 
 
 
 
1500
 
1501
- }
1502
 
1503
  });
1504
 
1505
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1506
 
1507
- };
1508
 
1509
- function zeropad(val) {
1510
- val = parseInt(val, 10);
1511
- return val >= 10 ? val : "0" + val;
1512
- }
1513
 
1514
- // display seconds in hh:mm:ss format
1515
- function format(sec) {
 
 
 
1516
 
1517
- sec = sec || 0;
 
 
1518
 
1519
- var h = Math.floor(sec / 3600),
1520
- min = Math.floor(sec / 60);
 
 
 
 
 
1521
 
1522
- sec = sec - (min * 60);
1523
 
1524
- if (h >= 1) {
1525
- min -= h * 60;
1526
- return h + ":" + zeropad(min) + ":" + zeropad(sec);
1527
- }
1528
 
1529
- return zeropad(min) + ":" + zeropad(sec);
1530
  }
1531
 
1532
- flowplayer(function(api, root) {
1533
-
1534
- var conf = api.conf,
1535
- support = flowplayer.support,
1536
- hovertimer;
1537
- root.find('.fp-ratio,.fp-ui').remove();
1538
- root.addClass("flowplayer").append('\
1539
- <div class="ratio"/>\
1540
- <div class="ui">\
1541
- <div class="waiting"><em/><em/><em/></div>\
1542
- <a class="fullscreen"/>\
1543
- <a class="unload"/>\
1544
- <p class="speed"/>\
1545
- <div class="controls">\
1546
- <a class="play"></a>\
1547
- <div class="timeline">\
1548
- <div class="buffer"/>\
1549
- <div class="progress"/>\
1550
- </div>\
1551
- <div class="volume">\
1552
- <a class="mute"></a>\
1553
- <div class="volumeslider">\
1554
- <div class="volumelevel"/>\
1555
- </div>\
1556
- </div>\
1557
- </div>\
1558
- <div class="time">\
1559
- <em class="elapsed">00:00</em>\
1560
- <em class="remaining"/>\
1561
- <em class="duration">00:00</em>\
1562
- </div>\
1563
- <div class="message"><h2/><p/></div>\
1564
- </div>'.replace(/class="/g, 'class="fp-')
1565
- );
1566
-
1567
- function find(klass) {
1568
- return $(".fp-" + klass, root);
1569
- }
1570
 
1571
- // widgets
1572
- var progress = find("progress"),
1573
- buffer = find("buffer"),
1574
- elapsed = find("elapsed"),
1575
- remaining = find("remaining"),
1576
- waiting = find("waiting"),
1577
- ratio = find("ratio"),
1578
- speed = find("speed"),
1579
- durationEl = find("duration"),
1580
- origRatio = ratio.css("paddingTop"),
 
1581
 
1582
- // sliders
1583
- timeline = find("timeline").slider2(api.rtl),
1584
- timelineApi = timeline.data("api"),
1585
 
1586
- volume = find("volume"),
1587
- fullscreen = find("fullscreen"),
1588
- volumeSlider = find("volumeslider").slider2(api.rtl),
1589
- volumeApi = volumeSlider.data("api"),
1590
- noToggle = root.is(".fixed-controls, .no-toggle");
1591
 
1592
- timelineApi.disableAnimation(root.hasClass('is-touch'));
 
 
 
1593
 
1594
- // aspect ratio
1595
- function setRatio(val) {
1596
- if ((root.css('width') === '0px' || root.css('height') === '0px') || val !== flowplayer.defaults.ratio) {
1597
- if (!parseInt(origRatio, 10)) ratio.css("paddingTop", val * 100 + "%");
1598
- }
1599
- if (!support.inlineBlock) $("object", root).height(root.height());
1600
  }
1601
 
1602
- function hover(flag) {
1603
- root.toggleClass("is-mouseover", flag).toggleClass("is-mouseout", !flag);
1604
  }
1605
 
1606
- // loading...
1607
- if (!support.animation) waiting.html("<p>loading &hellip;</p>");
1608
 
1609
- setRatio(conf.ratio);
 
 
 
 
 
 
 
 
 
 
 
1610
 
1611
- // no fullscreen in IFRAME
1612
- try {
1613
- if (!conf.fullscreen) fullscreen.remove();
 
 
 
 
 
 
1614
 
1615
- } catch (e) {
1616
- fullscreen.remove();
1617
- }
 
 
 
 
 
 
1618
 
 
 
 
 
 
 
1619
 
1620
- api.bind("ready", function() {
 
 
1621
 
1622
- var duration = api.video.duration;
 
 
 
1623
 
1624
- timelineApi.disable(api.disabled || !duration);
 
1625
 
1626
- conf.adaptiveRatio && setRatio(api.video.height / api.video.width);
 
 
 
 
 
 
 
 
 
 
 
1627
 
1628
- // initial time & volume
1629
- durationEl.add(remaining).html(format(duration));
1630
 
1631
- // do we need additional space for showing hour
1632
- ((duration >= 3600) && root.addClass('is-long')) || root.removeClass('is-long');
1633
- volumeApi.slide(api.volumeLevel);
 
 
 
 
 
 
 
 
1634
 
1635
- if (api.engine === 'flash') timelineApi.disableAnimation(true, true);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1636
 
 
 
 
 
 
 
 
 
1637
 
1638
- }).bind("unload", function() {
1639
- if (!origRatio) ratio.css("paddingTop", "");
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1640
 
1641
- // buffer
1642
- }).bind("buffer", function() {
1643
- var video = api.video,
1644
- max = video.buffer / video.duration;
1645
 
1646
- if (!video.seekable && support.seekable) timelineApi.max(max);
1647
- if (max < 1) buffer.css("width", (max * 100) + "%");
1648
- else buffer.css({ width: '100%' });
1649
 
1650
- }).bind("speed", function(e, api, val) {
1651
- speed.text(val + "x").addClass("fp-hilite");
1652
- setTimeout(function() { speed.removeClass("fp-hilite") }, 1000);
1653
 
1654
- }).bind("buffered", function() {
1655
- buffer.css({ width: '100%' });
1656
- timelineApi.max(1);
 
1657
 
1658
- // progress
1659
- }).bind("progress", function() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1660
 
1661
- var time = api.video.time,
1662
- duration = api.video.duration;
 
 
 
 
 
 
 
 
 
 
1663
 
1664
- if (!timelineApi.dragging) {
1665
- timelineApi.slide(time / duration, api.seeking ? 0 : 250);
1666
- }
 
 
 
1667
 
1668
- elapsed.html(format(time));
1669
- remaining.html("-" + format(duration - time));
1670
 
1671
- }).bind("finish resume seek", function(e) {
1672
- root.toggleClass("is-finished", e.type == "finish");
 
 
1673
 
1674
- }).bind("stop", function() {
1675
- elapsed.html(format(0));
1676
- timelineApi.slide(0, 100);
1677
 
1678
- }).bind("finish", function() {
1679
- elapsed.html(format(api.video.duration));
1680
- timelineApi.slide(1, 100);
1681
- root.removeClass("is-seeking");
 
 
1682
 
1683
- // misc
1684
- }).bind("beforeseek", function() {
1685
- progress.stop();
 
1686
 
1687
- }).bind("volume", function() {
1688
- volumeApi.slide(api.volumeLevel);
 
1689
 
 
 
 
 
 
 
1690
 
1691
- }).bind("disable", function() {
1692
- var flag = api.disabled;
1693
- timelineApi.disable(flag);
1694
- volumeApi.disable(flag);
1695
- root.toggleClass("is-disabled", api.disabled);
1696
 
1697
- }).bind("mute", function(e, api, flag) {
1698
- root.toggleClass("is-muted", flag);
1699
 
1700
- }).bind("error", function(e, api, error) {
1701
- root.removeClass("is-loading").addClass("is-error");
1702
 
1703
- if (error) {
1704
- error.message = conf.errors[error.code];
1705
- api.error = true;
1706
 
1707
- var el = $(".fp-message", root);
1708
- $("h2", el).text((api.engine || 'html5') + ": " + error.message);
1709
- $("p", el).text(error.url || api.video.url || api.video.src || conf.errorUrls[error.code]);
1710
- root.unbind("mouseenter click").removeClass("is-mouseover");
1711
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1712
 
 
 
 
1713
 
1714
- // hover
1715
- }).bind("mouseenter mouseleave", function(e) {
1716
- if (noToggle) return;
1717
 
1718
- var is_over = e.type == "mouseenter",
1719
- lastMove;
1720
 
1721
- // is-mouseover/out
1722
- hover(is_over);
 
 
1723
 
1724
- if (is_over) {
 
 
 
 
 
1725
 
1726
- root.bind("pause.x mousemove.x volume.x", function() {
1727
- hover(true);
1728
- lastMove = new Date;
1729
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1730
 
1731
- hovertimer = setInterval(function() {
1732
- if (new Date - lastMove > 5000) {
1733
- hover(false)
1734
- lastMove = new Date;
1735
- }
1736
- }, 100);
1737
 
1738
- } else {
1739
- root.unbind(".x");
1740
- clearInterval(hovertimer);
1741
- }
1742
 
 
 
 
 
 
1743
 
1744
- // allow dragging over the player edge
1745
- }).bind("mouseleave", function() {
 
1746
 
1747
- if (timelineApi.dragging || volumeApi.dragging) {
1748
- root.addClass("is-mouseover").removeClass("is-mouseout");
1749
- }
1750
 
1751
- // click
1752
- }).bind("click.player", function(e) {
1753
- if ($(e.target).is(".fp-ui, .fp-engine") || e.flash) {
1754
- e.preventDefault();
1755
- return api.toggle();
1756
- }
1757
- }).bind('contextmenu', function(ev) {
1758
- ev.preventDefault();
1759
- var o = root.offset(),
1760
- w = $(window),
1761
- left = ev.clientX - o.left,
1762
- t = ev.clientY - o.top + w.scrollTop();
1763
- var menu = root.find('.fp-context-menu').css({
1764
- left: left + 'px',
1765
- top: t + 'px',
1766
- display: 'block'
1767
- }).on('click', function(ev) {
1768
- ev.stopPropagation();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1769
  });
1770
- $('html').on('click.outsidemenu', function(ev) {
1771
- menu.hide();
1772
- $('html').off('click.outsidemenu');
 
 
 
 
 
1773
  });
1774
- }).bind('flashdisabled', function() {
1775
- root.addClass('is-flash-disabled').one('ready', function() {
1776
- root.removeClass('is-flash-disabled').find('.fp-flash-disabled').remove();
1777
- }).append('<div class="fp-flash-disabled">Adobe Flash is disabled for this page, click player area to enable.</div>');
1778
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1779
 
1780
- // poster -> background image
1781
- if (conf.poster) root.css("backgroundImage", "url(" + conf.poster + ")");
1782
 
1783
- var bc = root.css("backgroundColor"),
1784
- has_bg = root.css("backgroundImage") != "none" || bc && bc != "rgba(0, 0, 0, 0)" && bc != "transparent";
 
 
 
 
1785
 
1786
- // is-poster class
1787
- if (has_bg && !conf.splash && !conf.autoplay) {
 
 
 
 
 
1788
 
1789
- api.bind("ready stop", function() {
1790
- root.addClass("is-poster").one("progress", function() {
1791
- root.removeClass("is-poster");
1792
- });
1793
- });
 
 
1794
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1795
  }
1796
 
1797
- // default background color if not present
1798
- if (!has_bg && api.forcedSplash) {
1799
- root.css("backgroundColor", "#555");
1800
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1801
 
1802
- $(".fp-toggle, .fp-play", root).click(api.toggle);
 
1803
 
1804
- /* controlbar elements */
1805
- $.each(['mute', 'fullscreen', 'unload'], function(i, key) {
1806
- find(key).click(function() {
1807
- api[key]();
1808
- });
1809
- });
1810
 
1811
- timeline.bind("slide", function(e, val) {
1812
- api.seeking = true;
1813
- api.seek(val * api.video.duration);
1814
- });
 
 
 
1815
 
1816
- volumeSlider.bind("slide", function(e, val) {
1817
- api.volume(val);
1818
- });
1819
 
1820
- // times
1821
- find("time").click(function(e) {
1822
- $(this).toggleClass("is-inverted");
1823
- });
1824
 
1825
- hover(noToggle);
1826
 
1827
- });
1828
 
1829
- var focused,
1830
- focusedRoot,
1831
- IS_HELP = "is-help";
1832
 
1833
- // keyboard. single global listener
1834
- $(document).bind("keydown.fp", function(e) {
1835
 
1836
- var el = focused,
1837
- metaKeyPressed = e.ctrlKey || e.metaKey || e.altKey,
1838
- key = e.which,
1839
- conf = el && el.conf;
1840
 
1841
- if (!el || !conf.keyboard || el.disabled) return;
 
 
1842
 
1843
- // help dialog (shift key not truly required)
1844
- if ($.inArray(key, [63, 187, 191]) != -1) {
1845
- focusedRoot.toggleClass(IS_HELP);
1846
- return false;
1847
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1848
 
1849
- // close help / unload
1850
- if (key == 27 && focusedRoot.hasClass(IS_HELP)) {
1851
- focusedRoot.toggleClass(IS_HELP);
1852
- return false;
1853
- }
 
 
 
1854
 
1855
- if (!metaKeyPressed && el.ready) {
 
 
 
1856
 
1857
- e.preventDefault();
 
1858
 
1859
- // slow motion / fast forward
1860
- if (e.shiftKey) {
1861
- if (key == 39) el.speed(true);
1862
- else if (key == 37) el.speed(false);
1863
- return;
1864
- }
1865
 
1866
- // 1, 2, 3, 4 ..
1867
- if (key < 58 && key > 47) return el.seekTo(key - 48);
1868
 
1869
- switch (key) {
1870
- case 38: case 75: el.volume(el.volumeLevel + 0.15); break; // volume up
1871
- case 40: case 74: el.volume(el.volumeLevel - 0.15); break; // volume down
1872
- case 39: case 76: el.seeking = true; el.seek(true); break; // forward
1873
- case 37: case 72: el.seeking = true; el.seek(false); break; // backward
1874
- case 190: el.seekTo(); break; // to last seek position
1875
- case 32: el.toggle(); break; // spacebar
1876
- case 70: conf.fullscreen && el.fullscreen(); break; // toggle fullscreen
1877
- case 77: el.mute(); break; // mute
1878
- case 81: el.unload(); break; // unload/stop
1879
- }
1880
 
 
 
 
1881
  }
1882
 
1883
- });
1884
-
1885
- flowplayer(function(api, root) {
1886
 
1887
- // no keyboard configured
1888
- if (!api.conf.keyboard) return;
 
 
 
 
 
 
1889
 
1890
- // hover
1891
- root.bind("mouseenter mouseleave", function(e) {
1892
- focused = !api.disabled && e.type == 'mouseenter' ? api : 0;
1893
- if (focused) focusedRoot = root;
1894
- });
1895
 
1896
- var speedhelp = flowplayer.support.video && api.conf.engine !== "flash" &&
1897
- !!$("<video/>")[0].playbackRate ?
1898
- '<p><em>shift</em> + <em>&#8592;</em><em>&#8594;</em>slower / faster</p>' : '';
 
 
 
 
 
 
 
 
 
 
 
 
1899
 
1900
- // TODO: add to player-layout.html
1901
- root.append('\
1902
- <div class="fp-help">\
1903
- <a class="fp-close"></a>\
1904
- <div class="fp-help-section fp-help-basics">\
1905
- <p><em>space</em>play / pause</p>\
1906
- <p><em>q</em>unload | stop</p>\
1907
- <p><em>f</em>fullscreen</p>' + speedhelp + '\
 
 
 
 
1908
  </div>\
1909
- <div class="fp-help-section">\
1910
- <p><em>&#8593;</em><em>&#8595;</em>volume</p>\
1911
- <p><em>m</em>mute</p>\
 
1912
  </div>\
1913
- <div class="fp-help-section">\
1914
- <p><em>&#8592;</em><em>&#8594;</em>seek</p>\
1915
- <p><em>&nbsp;. </em>seek to previous\
1916
- </p><p><em>1</em><em>2</em>&hellip; <em>6</em> seek to 10%, 20% &hellip; 60% </p>\
 
 
 
1917
  </div>\
1918
- </div>\
1919
- ');
1920
-
1921
- if (api.conf.tooltip) {
1922
- $(".fp-ui", root).attr("title", "Hit ? for help").on("mouseout.tip", function() {
1923
- $(this).removeAttr("title").off("mouseout.tip");
1924
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1925
  }
1926
 
1927
- $(".fp-close", root).click(function() {
1928
- root.toggleClass(IS_HELP);
1929
- });
 
 
 
 
 
 
 
 
 
1930
 
1931
- });
 
 
1932
 
1933
- var VENDOR = $.browser.mozilla ? "moz": "webkit",
1934
- FS_ENTER = "fullscreen",
1935
- FS_EXIT = "fullscreen-exit",
1936
- FULL_PLAYER,
1937
- FS_SUPPORT = flowplayer.support.fullscreen,
1938
- FS_NATIVE_SUPPORT = typeof document.exitFullscreen == 'function',
1939
- ua = navigator.userAgent.toLowerCase(),
1940
- IS_SAFARI = /(safari)[ \/]([\w.]+)/.exec(ua) && !/(chrome)[ \/]([\w.]+)/.exec(ua);
1941
 
 
 
 
 
1942
 
1943
- // esc button
1944
- $(document).bind("fullscreenchange webkitfullscreenchange mozfullscreenchange MSFullscreenChange", function(e) {
1945
- var el = $(document.webkitCurrentFullScreenElement || document.mozFullScreenElement || document.fullscreenElement || document.msFullscreenElement || e.target);
1946
- if (el.length && !FULL_PLAYER) {
1947
- FULL_PLAYER = el.trigger(FS_ENTER, [el]);
1948
- } else {
1949
- FULL_PLAYER.trigger(FS_EXIT, [FULL_PLAYER]);
1950
- FULL_PLAYER = null;
1951
- }
1952
 
1953
- });
 
 
 
 
1954
 
 
 
 
 
 
 
 
 
 
1955
 
1956
- flowplayer(function(player, root) {
 
1957
 
1958
- if (!player.conf.fullscreen) return;
1959
 
1960
- var win = $(window),
1961
- fsResume = {apply: false, pos: 0, play: false},
1962
- scrollTop;
1963
 
1964
- player.isFullscreen = false;
 
 
1965
 
1966
- player.fullscreen = function(flag) {
 
 
1967
 
1968
- if (player.disabled) return;
1969
 
1970
- if (flag === undefined) flag = !player.isFullscreen;
1971
 
1972
- if (flag) scrollTop = win.scrollTop();
1973
 
1974
- if ((VENDOR == "webkit" || IS_SAFARI) && player.engine == "flash")
1975
- fsResume = {apply: true, pos: player.video.time, play: player.playing};
1976
 
1977
- if (FS_SUPPORT) {
 
1978
 
1979
- if (flag) {
1980
- var r = root[0];
1981
- $.each(['requestFullScreen', 'webkitRequestFullScreen', 'mozRequestFullScreen', 'msRequestFullscreen'], function(i, fName) {
1982
- if (typeof r[fName] === 'function') {
1983
- r[fName](Element.ALLOW_KEYBOARD_INPUT);
1984
- if (IS_SAFARI && !document.webkitCurrentFullScreenElement && !document.mozFullScreenElement) { // Element.ALLOW_KEYBOARD_INPUT not allowed
1985
- r[fName]();
1986
- }
1987
- return false;
1988
- }
1989
- });
1990
 
1991
- } else {
1992
- $.each(['exitFullscreen', 'webkitCancelFullScreen', 'mozCancelFullScreen', 'msExitFullscreen'], function(i, fName) {
1993
- if (typeof document[fName] === 'function') {
1994
- document[fName]();
1995
- return false;
1996
- }
1997
- });
1998
- }
1999
 
2000
- } else {
2001
- player.trigger(flag ? FS_ENTER : FS_EXIT, [player]);
 
2002
  }
 
2003
 
2004
- return player;
2005
- };
2006
 
2007
- var lastClick;
 
 
 
2008
 
2009
- root.bind("mousedown.fs", function() {
2010
- if (+new Date - lastClick < 150 && player.ready) player.fullscreen();
2011
- lastClick = +new Date;
2012
- });
2013
 
2014
- player.bind(FS_ENTER, function(e) {
2015
- root.addClass("is-fullscreen");
2016
- player.isFullscreen = true;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2017
 
2018
- }).bind(FS_EXIT, function(e) {
2019
- var oldOpacity;
2020
- if (!FS_SUPPORT && player.engine === "html5") {
2021
- oldOpacity = root.css('opacity') || '';
2022
- root.css('opacity', 0);
2023
- }
2024
- root.removeClass("is-fullscreen");
2025
- if (!FS_SUPPORT && player.engine === "html5") setTimeout(function() { root.css('opacity', oldOpacity); });
2026
- player.isFullscreen = false;
2027
- win.scrollTop(scrollTop);
2028
 
2029
- }).bind("ready", function () {
2030
- if (fsResume.apply) {
2031
- var fsreset = function () {
2032
- if (!fsResume.play && !player.conf.live) {
2033
- player.pause();
2034
- } else {
2035
- player.resume();
2036
- }
2037
- $.extend(fsResume, {pos: 0, play: false});
2038
- };
2039
 
2040
- if (player.conf.live) {
2041
- fsreset();
2042
- } else if (player.conf.rtmp && fsResume.pos && !isNaN(fsResume.pos)) {
2043
- player.resume();
2044
- player.seek(fsResume.pos, fsreset);
2045
- } else {
2046
- fsreset();
2047
- }
2048
  }
2049
- });
2050
-
2051
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
2052
 
 
 
 
 
2053
 
2054
- flowplayer(function(player, root) {
 
 
 
2055
 
2056
- var conf = $.extend({ active: 'is-active', advance: true, query: ".fp-playlist a" }, player.conf),
2057
- klass = conf.active;
2058
 
2059
- // getters
2060
- function els() {
2061
- return $(conf.query, root);
2062
- }
2063
 
2064
- function active() {
2065
- return $(conf.query + "." + klass, root);
2066
- }
 
 
2067
 
 
 
2068
 
2069
- player.play = function(i) {
2070
- if (i === undefined) return player.resume();
2071
- if (typeof i === 'number' && !player.conf.playlist[i]) return player;
2072
- else if (typeof i != 'number') player.load.apply(null, arguments);
2073
- player.unbind('resume.fromfirst'); // Don't start from beginning if clip explicitely chosen
2074
- player.video.index = i;
2075
- player.load(typeof player.conf.playlist[i] === 'string' ?
2076
- player.conf.playlist[i].toString() :
2077
- $.map(player.conf.playlist[i], function(item) { return $.extend({}, item); })
2078
- );
2079
- return player;
2080
- };
2081
 
2082
- player.next = function(e) {
2083
- e && e.preventDefault();
2084
- var current = player.video.index;
2085
- if (current != -1) {
2086
- current = current === player.conf.playlist.length - 1 ? 0 : current + 1;
2087
- player.play(current);
2088
  }
2089
- return player;
2090
- };
2091
 
2092
- player.prev = function(e) {
2093
- e && e.preventDefault();
2094
- var current = player.video.index;
2095
- if (current != -1) {
2096
- current = current === 0 ? player.conf.playlist.length - 1 : current - 1;
2097
- player.play(current);
2098
- }
2099
- return player;
2100
- };
2101
 
2102
- $('.fp-next', root).click(player.next);
2103
- $('.fp-prev', root).click(player.prev);
 
 
 
2104
 
2105
- if (conf.advance) {
2106
- root.unbind("finish.pl").bind("finish.pl", function(e, player) {
2107
 
2108
- // next clip is found or loop
2109
- var next = player.video.index >= 0 ? player.video.index + 1 : undefined;
2110
- if (next < player.conf.playlist.length || conf.loop) {
2111
- next = next === player.conf.playlist.length ? 0 : next;
2112
- root.removeClass('is-finished');
2113
- setTimeout(function() { // Let other finish callbacks fire first
2114
- player.play(next);
2115
- });
2116
 
2117
- // stop to last clip, play button starts from 1:st clip
2118
- } else {
2119
- root.addClass("is-playing"); // show play button
2120
 
2121
- // If we have multiple items in playlist, start from first
2122
- if (player.conf.playlist.length > 1) player.one("resume.fromfirst", function() {
2123
- player.play(0);
2124
- return false;
2125
- });
2126
- }
2127
- });
2128
- }
2129
 
2130
- var playlistInitialized = false;
2131
- if (player.conf.playlist.length) { // playlist configured by javascript, generate playlist
2132
- playlistInitialized = true;
2133
- var plEl = root.find('.fp-playlist');
2134
- if (!plEl.length) {
2135
- plEl = $('<div class="fp-playlist"></div>');
2136
- var cntrls = $('.fp-next,.fp-prev', root);
2137
- if (!cntrls.length) $('video', root).after(plEl);
2138
- else cntrls.eq(0).before(plEl);
2139
- }
2140
- plEl.empty();
2141
- $.each(player.conf.playlist, function(i, item) {
2142
- var href;
2143
- if (typeof item === 'string') {
2144
- href = item;
2145
- } else {
2146
- for (var key in item[0]) {
2147
- if (item[0].hasOwnProperty(key)) {
2148
- href = item[0][key];
2149
- break;
2150
- }
2151
  }
2152
- }
2153
- plEl.append($('<a />').attr({
2154
- href: href,
2155
- 'data-index': i
2156
- }));
2157
- });
2158
- }
2159
 
2160
- if (els().length) {
2161
- if (!playlistInitialized) {
2162
- player.conf.playlist = [];
2163
- els().each(function() {
2164
- var src = $(this).attr('href');
2165
- $(this).attr('data-index', player.conf.playlist.length);
2166
- player.conf.playlist.push(src);
2167
- });
2168
  }
2169
 
2170
- /* click -> play */
2171
- root.on("click", conf.query, function(e) {
2172
- e.preventDefault();
2173
- var el = $(e.target).closest(conf.query);
2174
- var toPlay = Number(el.attr('data-index'));
2175
- if (toPlay != -1) {
2176
- player.play(toPlay);
2177
- }
2178
- });
2179
 
2180
- // playlist wide cuepoint support
2181
- var has_cuepoints = els().filter("[data-cuepoints]").length;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2182
 
2183
- // highlight
2184
- player.bind("load", function(e, api, video) {
2185
- var prev = active().removeClass(klass),
2186
- prevIndex = prev.attr('data-index'),
2187
- index = video.index = player.video.index || 0,
2188
- el = $('a[data-index="' + index + '"]', root).addClass(klass),
2189
- is_last = index == player.conf.playlist.length - 1;
2190
- // index
2191
- root.removeClass("video" + prevIndex).addClass("video" + index).toggleClass("last-video", is_last);
 
 
 
 
 
 
 
 
 
2192
 
2193
- // video properties
2194
- video.index = api.video.index = index;
2195
- video.is_last = api.video.is_last = is_last;
2196
 
2197
- // cuepoints
2198
- if (has_cuepoints) player.cuepoints = el.data("cuepoints");
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2199
 
 
 
2200
 
2201
- // without namespace callback called only once. unknown rason.
2202
- }).bind("unload.pl", function() {
2203
- active().toggleClass(klass);
2204
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2205
  });
 
2206
 
 
 
2207
  }
2208
 
2209
- if (player.conf.playlist.length) {
2210
- // disable single clip looping
2211
- player.conf.loop = false;
2212
  }
2213
 
 
 
 
 
2214
 
2215
- });
 
 
2216
 
2217
- var CUE_RE = / ?cue\d+ ?/;
 
 
 
2218
 
2219
- flowplayer(function(player, root) {
 
 
2220
 
2221
- var lastTime = 0;
2222
 
2223
- player.cuepoints = player.conf.cuepoints || [];
 
 
 
2224
 
2225
- function setClass(index) {
2226
- root[0].className = root[0].className.replace(CUE_RE, " ");
2227
- if (index >= 0) root.addClass("cue" + index);
2228
- }
2229
 
2230
- player.bind("progress", function(e, api, time) {
 
 
 
2231
 
2232
- // avoid throwing multiple times
2233
- if (lastTime && time - lastTime < 0.015) return lastTime = time;
2234
- lastTime = time;
2235
 
2236
- var cues = player.cuepoints || [];
2237
 
2238
- for (var i = 0, cue; i < cues.length; i++) {
2239
 
2240
- cue = cues[i];
2241
- if (!isNaN(cue)) cue = { time: cue };
2242
- if (cue.time < 0) cue.time = player.video.duration + cue.time;
2243
- cue.index = i;
2244
 
2245
- // progress_interval / 2 = 0.125
2246
- if (Math.abs(cue.time - time) < 0.125 * player.currentSpeed) {
2247
- setClass(i);
2248
- root.trigger("cuepoint", [player, cue]);
2249
- }
2250
 
2251
- }
 
 
 
 
2252
 
2253
- // no CSS class name
2254
- }).bind("unload seek", setClass);
2255
 
2256
- if (player.conf.generate_cuepoints) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2257
 
2258
- player.bind("load", function() {
 
 
 
2259
 
2260
- // clean up cuepoint elements of previous playlist items
2261
- $(".fp-cuepoint", root).remove();
2262
 
2263
- }).bind("ready", function() {
 
 
 
2264
 
2265
- var cues = player.cuepoints || [],
2266
- duration = player.video.duration,
2267
- timeline = $(".fp-timeline", root).css("overflow", "visible");
2268
 
2269
- $.each(cues, function(i, cue) {
 
 
 
 
2270
 
2271
- var time = cue.time || cue;
2272
- if (time < 0) time = duration + cue;
 
 
 
2273
 
2274
- var el = $("<a/>").addClass("fp-cuepoint fp-cuepoint" + i)
2275
- .css("left", (time / duration * 100) + "%");
2276
 
2277
- el.appendTo(timeline).mousedown(function() {
2278
- player.seek(time);
2279
 
2280
- // preventDefault() doesn't work
2281
- return false;
2282
- });
 
 
 
 
2283
 
2284
- });
2285
 
2286
- });
 
 
2287
 
2288
- }
 
 
 
 
 
 
 
2289
 
2290
- });
2291
- flowplayer(function(player, root, engine) {
2292
 
2293
- var track = $("track", root),
2294
- conf = player.conf;
2295
 
2296
- if (flowplayer.support.subtitles) {
 
 
 
 
 
 
 
 
 
2297
 
2298
- player.subtitles = track.length && track[0].track;
 
 
 
 
2299
 
2300
- if (conf.nativesubtitles && conf.engine == 'html5') {
2301
- if (!player.subtitles) return;
2302
- var setMode = function(mode) {
2303
- var tracks = $('video', root)[0].textTracks;
2304
- if (!tracks.length) return;
2305
- tracks[0].mode = mode;
2306
- };
2307
- setMode('disabled');
2308
- player.one('ready', function() {
2309
- if (player.conf.splash) { // see https://github.com/flowplayer/flowplayer/issues/717
2310
- $('video.fp-engine', root).append($('<track />').attr({
2311
- kind: 'subtitles',
2312
- srclang: player.subtitles.language || 'en',
2313
- label: player.subtitles.language || 'en',
2314
- src: track.attr('src'),
2315
- default: 'default'
2316
- }));
2317
- }
2318
- setMode('disabled');
2319
- setMode('showing');
2320
- });
2321
- return;
2322
- }
2323
- }
2324
 
2325
- // avoid duplicate loads
2326
- track.remove();
 
2327
 
2328
- var TIMECODE_RE = /^(([0-9]{2}:){1,2}[0-9]{2}[,.][0-9]{3}) --\> (([0-9]{2}:){1,2}[0-9]{2}[,.][0-9]{3})(.*)/;
 
 
 
 
 
2329
 
2330
- function seconds(timecode) {
2331
- var els = timecode.split(':');
2332
- if (els.length == 2) els.unshift(0);
2333
- return els[0] * 60 * 60 + els[1] * 60 + parseFloat(els[2].replace(',','.'));
2334
- }
 
 
 
 
 
 
 
 
2335
 
2336
- player.subtitles = [];
 
 
2337
 
2338
- var url = track.attr("src");
2339
 
2340
- if (!url) return;
2341
- setTimeout(function() {
2342
- $.get(url, function(txt) {
 
 
 
 
 
 
2343
 
2344
- for (var i = 0, lines = txt.split("\n"), len = lines.length, entry = {}, title, timecode, text, cue; i < len; i++) {
 
2345
 
2346
- timecode = TIMECODE_RE.exec(lines[i]);
 
 
2347
 
2348
- if (timecode) {
 
2349
 
2350
- // title
2351
- title = lines[i - 1];
 
2352
 
2353
- // text
2354
- text = "<p>" + lines[++i] + "</p><br/>";
2355
- while ($.trim(lines[++i]) && i < lines.length) text += "<p>" + lines[i] + "</p><br/>";
2356
 
2357
- // entry
2358
- entry = {
2359
- title: title,
2360
- startTime: seconds(timecode[1]),
2361
- endTime: seconds(timecode[3]),
2362
- text: text
2363
- };
2364
 
2365
- cue = { time: entry.startTime, subtitle: entry };
 
 
 
 
2366
 
2367
- player.subtitles.push(entry);
2368
- player.cuepoints.push(cue);
2369
- player.cuepoints.push({ time: entry.endTime, subtitleEnd: title });
2370
 
2371
- // initial cuepoint
2372
- if (entry.startTime === 0) {
2373
- player.trigger("cuepoint", cue);
2374
- }
2375
 
2376
- }
 
 
2377
 
2378
- }
 
 
 
 
 
 
 
 
 
 
2379
 
2380
- }).fail(function() {
2381
- player.trigger("error", {code: 8, url: url });
2382
- return false;
2383
  });
2384
- });
2385
- var wrap = $("<div class='fp-subtitle'/>").appendTo(root),
2386
- currentPoint;
 
 
2387
 
2388
- player.bind("cuepoint", function(e, api, cue) {
2389
 
2390
- if (cue.subtitle) {
2391
- currentPoint = cue.index;
2392
- wrap.html(cue.subtitle.text).addClass("fp-active");
2393
 
2394
- } else if (cue.subtitleEnd) {
2395
- wrap.removeClass("fp-active");
2396
- currentPoint = cue.index;
2397
- }
2398
 
2399
- }).bind("seek", function(e, api, time) {
2400
- // Clear future subtitles if seeking backwards
2401
- if (currentPoint && player.cuepoints[currentPoint] && player.cuepoints[currentPoint].time > time) {
2402
- wrap.removeClass('fp-active');
2403
- currentPoint = null;
2404
- }
2405
- $.each(player.cuepoints || [], function(i, cue) {
2406
- var entry = cue.subtitle;
2407
- //Trigger cuepoint if start time before seek position and end time nonexistent or in the future
2408
- if (entry && currentPoint != cue.index) {
2409
- if (time >= cue.time && (!entry.endTime || time <= entry.endTime)) player.trigger("cuepoint", cue);
2410
- } // Also handle cuepoints that act as the removal trigger
2411
- else if (cue.subtitleEnd && time >= cue.time && cue.index == currentPoint + 1) player.trigger("cuepoint", cue);
2412
- });
2413
 
2414
- });
2415
 
2416
- });
 
 
 
 
 
 
 
2417
 
 
 
 
 
 
 
 
 
 
 
 
2418
 
 
 
 
 
 
 
 
 
 
2419
 
2420
- flowplayer(function(player, root) {
 
2421
 
2422
- var id = player.conf.analytics, time = 0, last = 0;
2423
 
2424
- if (id) {
 
 
 
 
 
 
 
 
 
 
 
 
2425
 
2426
- // load Analytics script if needed
2427
- if (typeof _gat == 'undefined') $.getScript("//google-analytics.com/ga.js");
 
 
 
 
 
2428
 
2429
- function track(e) {
 
 
2430
 
2431
- if (time && typeof _gat != 'undefined') {
2432
- var tracker = _gat._getTracker(id),
2433
- video = player.video;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2434
 
2435
- tracker._setAllowLinker(true);
2436
 
2437
- // http://code.google.com/apis/analytics/docs/tracking/eventTrackerGuide.html
2438
- tracker._trackEvent(
2439
- "Video / Seconds played",
2440
- player.engine + "/" + video.type,
2441
- root.attr("title") || video.src.split("/").slice(-1)[0].replace(TYPE_RE, ''),
2442
- Math.round(time / 1000)
2443
- );
2444
- time = 0;
2445
- }
2446
 
2447
- }
2448
 
2449
- player.bind("load unload", track).bind("progress", function() {
2450
 
2451
- if (!player.seeking) {
2452
- time += last ? (+new Date - last) : 0;
2453
- last = +new Date;
2454
- }
2455
 
2456
- }).bind("pause", function() {
2457
- last = 0;
2458
- });
 
2459
 
2460
- $(window).unload(track);
 
 
2461
 
2462
- }
2463
 
2464
- });var isIeMobile = /IEMobile/.test(UA);
2465
- if (flowplayer.support.touch || isIeMobile) {
2466
 
2467
- flowplayer(function(player, root) {
2468
- var isAndroid = /Android/.test(UA) && !/Firefox/.test(UA) && !/Opera/.test(UA),
2469
- isSilk = /Silk/.test(UA),
2470
- androidVer = isAndroid ? parseFloat(/Android\ (\d\.\d)/.exec(UA)[1], 10) : 0;
2471
 
2472
- // custom load for android
2473
- if (isAndroid) {
2474
- if (!/Chrome/.test(UA) && androidVer < 4) {
2475
- var originalLoad = player.load;
2476
- player.load = function(video, callback) {
2477
- var ret = originalLoad.apply(player, arguments);
2478
- player.trigger('ready', [player, player.video]);
2479
- return ret;
2480
- };
2481
- }
2482
- var timer, currentTime = 0;
2483
- var resumeTimer = function(api) {
2484
- timer = setInterval(function() {
2485
- api.video.time = ++currentTime;
2486
- api.trigger('progress', currentTime);
2487
- }, 1000);
2488
- };
2489
- player.bind('ready pause unload', function() {
2490
- if (timer) {
2491
- clearInterval(timer);
2492
- timer = null;
2493
- }
2494
- });
2495
- player.bind('ready', function() {
2496
- currentTime = 0;
2497
- });
2498
- player.bind('resume', function(ev, api) {
2499
- if (!api.live) return;
2500
- if (currentTime) { return resumeTimer(api); }
2501
- player.one('progress', function(ev, api, t) {
2502
- if (t === 0) { // https://github.com/flowplayer/flowplayer/issues/727
2503
- resumeTimer(api);
2504
- }
2505
- });
2506
- });
2507
- }
2508
 
2509
- // hide volume
2510
- if (!flowplayer.support.volume) {
2511
- root.addClass("no-volume no-mute");
2512
- }
2513
- root.addClass("is-touch");
2514
- root.find('.fp-timeline').data('api').disableAnimation();
2515
 
2516
- if (!flowplayer.support.inlineVideo || player.conf.native_fullscreen) player.conf.nativesubtitles = true;
 
2517
 
2518
- // fake mouseover effect with click
2519
- var hasMoved = false;
2520
- root.bind('touchmove', function() {
2521
- hasMoved = true;
2522
- }).bind("touchend click", function(e) {
2523
- if (hasMoved) { //not intentional, most likely scrolling
2524
- hasMoved = false;
2525
- return;
2526
- }
2527
 
2528
- if (player.playing && !root.hasClass("is-mouseover")) {
2529
- root.addClass("is-mouseover").removeClass("is-mouseout");
2530
- return false;
2531
- }
2532
 
2533
- if (player.paused && root.hasClass("is-mouseout") && !player.splash) {
2534
- player.toggle();
2535
- }
2536
 
2537
- if (player.paused && isIeMobile) { // IE on WP7 need an additional api.play() call
2538
- $('video.fp-engine', root)[0].play();
2539
- }
2540
 
2541
- });
2542
 
2543
- // native fullscreen
2544
- if (player.conf.native_fullscreen && typeof $('<video />')[0].webkitEnterFullScreen === 'function') {
2545
- player.fullscreen = function() {
2546
- var video = $('video.fp-engine', root);
2547
- video[0].webkitEnterFullScreen();
2548
- video.one('webkitendfullscreen', function() {
2549
- video.prop('controls', true).prop('controls', false);
2550
- });
2551
- };
2552
- }
2553
 
 
 
2554
 
2555
- // Android browser gives video.duration == 1 until second 'timeupdate' event
2556
- (isAndroid || isSilk) && player.bind("ready", function() {
2557
 
2558
- var video = $('video.fp-engine', root);
2559
- video.one('canplay', function() {
2560
- video[0].play();
2561
- });
2562
- video[0].play();
2563
 
2564
- player.bind("progress.dur", function() {
2565
 
2566
- var duration = video[0].duration;
2567
 
2568
- if (duration !== 1) {
2569
- player.video.duration = duration;
2570
- $(".fp-duration", root).html(format(duration));
2571
- player.unbind("progress.dur");
2572
- }
2573
- });
2574
- });
2575
 
 
 
2576
 
2577
- });
 
 
 
 
 
2578
 
2579
- }
 
 
 
 
 
 
 
 
 
 
 
2580
 
2581
- flowplayer(function(player, root) {
2582
 
2583
- // no embedding
2584
- if (player.conf.embed === false) return;
 
 
 
 
 
2585
 
2586
- var conf = player.conf,
2587
- ui = $(".fp-ui", root),
2588
- trigger = $("<a/>", { "class": "fp-embed", title: 'Copy to your site'}).appendTo(ui),
2589
- target = $("<div/>", { 'class': 'fp-embed-code'})
2590
- .append("<label>Paste this HTML code on your site to embed.</label><textarea/>").appendTo(ui),
2591
- area = $("textarea", target);
2592
 
2593
- player.embedCode = function() {
2594
 
2595
- var video = player.video,
2596
- width = video.width || root.width(),
2597
- height = video.height || root.height(),
2598
- el = $("<div/>", { 'class': 'flowplayer', css: { width: width, height: height }}),
2599
- tag = $("<video/>").appendTo(el);
2600
 
2601
- // configuration
2602
- $.each(['origin', 'analytics', 'key', 'rtmp', 'subscribe', 'bufferTime'], function(i, key) {
2603
- if (conf.hasOwnProperty(key)) {
2604
- el.attr("data-" + key, conf[key]);
2605
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2606
  });
 
 
 
 
2607
 
2608
- //logo
2609
- if (conf.logo) {
2610
- el.attr('data-logo', $('<img />').attr('src', conf.logo)[0].src);
2611
- }
2612
 
2613
- // sources
2614
- $.each(video.sources, function(i, src) {
2615
- var path = src.src;
2616
- if (!/^https?:/.test(src.src) && src.type !== 'flash' || !conf.rtmp) {
2617
- path = $("<img/>").attr("src", src.src)[0].src;
2618
- }
2619
- tag.append($("<source/>",
2620
- { type: src.type != "mpegurl" ? "video/" + src.type : "application/x-mpegurl", src: path }));
2621
- });
 
 
 
 
2622
 
2623
- var scriptAttrs = { src: "//embed.flowplayer.org/5.5.2/embed.min.js" };
2624
- if ($.isPlainObject(conf.embed)) {
2625
- scriptAttrs['data-swf'] = conf.embed.swf;
2626
- scriptAttrs['data-library'] = conf.embed.library;
2627
- scriptAttrs['src'] = conf.embed.script || scriptAttrs['src'];
2628
- if (conf.embed.skin) { scriptAttrs['data-skin'] = conf.embed.skin; }
2629
  }
2630
 
2631
- var code = $("<foo/>", scriptAttrs).append(el);
2632
- return $("<p/>").append(code).html().replace(/<(\/?)foo/g, "<$1script");
2633
- };
2634
 
2635
- root.fptip(".fp-embed", "is-embedding");
2636
 
2637
- area.click(function() {
2638
- this.select();
2639
- });
2640
 
2641
- trigger.click(function() {
2642
- area.text(player.embedCode());
2643
- area[0].focus();
2644
- area[0].select();
2645
- });
2646
 
2647
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2648
 
 
2649
 
2650
- $.fn.fptip = function(trigger, active) {
2651
 
2652
- return this.each(function() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2653
 
2654
- var root = $(this);
 
 
 
2655
 
2656
- function close() {
2657
- root.removeClass(active);
2658
- $(document).unbind(".st");
2659
- }
2660
 
2661
- $(trigger || "a", this).click(function(e) {
 
 
 
 
 
 
2662
 
2663
- e.preventDefault();
 
2664
 
2665
- root.toggleClass(active);
 
2666
 
2667
- if (root.hasClass(active)) {
 
 
 
 
 
2668
 
2669
- $(document).bind("keydown.st", function(e) {
2670
- if (e.which == 27) close();
 
 
2671
 
2672
- // click:close
2673
- }).bind("click.st", function(e) {
2674
- if (!$(e.target).parents("." + active).length) close();
2675
- });
2676
- }
2677
 
2678
- });
 
 
 
 
 
2679
 
2680
- });
 
2681
 
2682
- };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2683
 
2684
- }(jQuery);
2685
- flowplayer(function(e,o){function l(e){var o=a("<a/>")[0];return o.href=e,o.hostname}var a=jQuery,r=e.conf,i=r.swf.indexOf("flowplayer.org")&&r.e&&o.data("origin"),n=i?l(i):location.hostname,t=r.key;if("file:"==location.protocol&&(n="localhost"),e.load.ed=1,r.hostname=n,r.origin=i||location.href,i&&o.addClass("is-embedded"),"string"==typeof t&&(t=t.split(/,\s*/)),t&&"function"==typeof key_check&&key_check(t,n))r.logo&&o.append(a("<a>",{"class":"fp-logo",href:i}).append(a("<img/>",{src:r.logo})));else{var s=a("<a/>").attr("href","http://flowplayer.org").appendTo(o);a(".fp-controls",o);var p=a('<div class="fp-context-menu"><ul><li class="copyright">&copy; 2014</li><li><a href="http://flowplayer.org">About Flowplayer</a></li><li><a href="http://flowplayer.org/license">GPL based license</a></li></ul></div>').appendTo(o);e.bind("pause resume finish unload",function(e,l){var r=-1;l.video.src&&a.each([["org","flowplayer","drive"],["org","flowplayer","my"]],function(e,o){return r=l.video.src.indexOf("://"+o.reverse().join(".")),-1===r}),/pause|resume/.test(e.type)&&"flash"!=l.engine&&4!=r&&5!=r?(s.show().css({position:"absolute",left:16,bottom:36,zIndex:99999,width:100,height:20,backgroundImage:"url("+[".png","logo","/",".net",".cloudfront","d32wqyuo10o653","//"].reverse().join("")+")"}),l.load.ed=s.is(":visible")&&a.contains(o[0],p[0]),l.load.ed||l.pause()):s.hide()})}});
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  /*!
2
 
3
+ Flowplayer v7.0.2 (Tuesday, 07. February 2017 10:39PM) | flowplayer.org/license
4
 
5
  */
6
+ /*! (C) WebReflection Mit Style License */
7
+ (function(e){function g(e,t,n,r){for(var i,s=n.slice(),o=w(t,e),u=0,a=s.length;u<a;u++){handler=s[u],typeof handler=="object"&&typeof handler.handleEvent=="function"?handler.handleEvent(o):handler.call(e,o);if(o.stoppedImmediatePropagation)break}return i=!o.stoppedPropagation,r&&i&&e.parentNode?e.parentNode.dispatchEvent(o):!o.defaultPrevented}function y(e,t){return{configurable:!0,get:e,set:t}}function b(e,t,n){var r=f(t||e,n);u(e,"textContent",y(function(){return r.get.call(this)},function(e){r.set.call(this,e)}))}function w(e,t){return e.currentTarget=t,e.eventPhase=e.target===e.currentTarget?2:3,e}function E(e,t){var n=e.length;while(n--&&e[n]!==t);return n}function S(){if(this.tagName==="BR")return"\n";var e=this.firstChild,t=[];while(e)e.nodeType!==8&&e.nodeType!==7&&t.push(e.textContent),e=e.nextSibling;return t.join("")}function x(e){return e.nodeType!==9&&document.documentElement.contains(e)}function T(e){!n&&d.test(document.readyState)&&(n=!n,document.detachEvent(r,T),e=document.createEvent("Event"),e.initEvent(i,!0,!0),document.dispatchEvent(e))}function N(e){var t;while(t=this.lastChild)this.removeChild(t);e!=null&&this.appendChild(document.createTextNode(e))}function C(t,n){return n||(n=e.event),n.target||(n.target=n.srcElement||n.fromElement||document),n.timeStamp||(n.timeStamp=(new Date).getTime()),n}if(document.createEvent)return;var t=!0,n=!1,r="onreadystatechange",i="DOMContentLoaded",s="__IE8__"+Math.random(),o=e.Object,u=o.defineProperty||function(e,t,n){e[t]=n.value},a=o.defineProperties||function(t,n){for(var r in n)if(l.call(n,r))try{u(t,r,n[r])}catch(i){e.console&&console.log(r+" failed on object:",t,i.message)}},f=o.getOwnPropertyDescriptor,l=o.prototype.hasOwnProperty,c=e.Element.prototype,h=e.Text.prototype,p=/^[a-z]+$/,d=/loaded|complete/,v={},m=document.createElement("div");b(e.HTMLCommentElement.prototype,c,"nodeValue"),b(e.HTMLScriptElement.prototype,null,"text"),b(h,null,"nodeValue"),b(e.HTMLTitleElement.prototype,null,"text"),u(e.HTMLStyleElement.prototype,"textContent",function(e){return y(function(){return e.get.call(this.styleSheet)},function(t){e.set.call(this.styleSheet,t)})}(f(e.CSSStyleSheet.prototype,"cssText"))),a(c,{textContent:{get:S,set:N},firstElementChild:{get:function(){for(var e=this.childNodes||[],t=0,n=e.length;t<n;t++)if(e[t].nodeType==1)return e[t]}},lastElementChild:{get:function(){for(var e=this.childNodes||[],t=e.length;t--;)if(e[t].nodeType==1)return e[t]}},previousElementSibling:{get:function(){var e=this.previousSibling;while(e&&e.nodeType!=1)e=e.previousSibling;return e}},nextElementSibling:{get:function(){var e=this.nextSibling;while(e&&e.nodeType!=1)e=e.nextSibling;return e}},childElementCount:{get:function(){for(var e=0,t=this.childNodes||[],n=t.length;n--;e+=t[n].nodeType==1);return e}},addEventListener:{value:function(e,t,n){var r=this,i="on"+e,o=r[s]||u(r,s,{value:{}})[s],a=o[i]||(o[i]={}),f=a.h||(a.h=[]),c;if(!l.call(a,"w")){a.w=function(e){return e[s]||g(r,C(r,e),f,!1)};if(!l.call(v,i))if(p.test(e))try{c=document.createEventObject(),c[s]=!0,r.nodeType!=9&&r.parentNode==null&&m.appendChild(r),r.fireEvent(i,c),v[i]=!0}catch(c){v[i]=!1;while(m.hasChildNodes())m.removeChild(m.firstChild)}else v[i]=!1;(a.n=v[i])&&r.attachEvent(i,a.w)}E(f,t)<0&&f[n?"unshift":"push"](t)}},dispatchEvent:{value:function(e){var t=this,n="on"+e.type,r=t[s],i=r&&r[n],o=!!i,u;return e.target||(e.target=t),o?i.n?t.fireEvent(n,e):g(t,e,i.h,!0):(u=t.parentNode)?u.dispatchEvent(e):!0,!e.defaultPrevented}},removeEventListener:{value:function(e,t,n){var r=this,i="on"+e,o=r[s],u=o&&o[i],a=u&&u.h,f=a?E(a,t):-1;-1<f&&a.splice(f,1)}}}),a(h,{addEventListener:{value:c.addEventListener},dispatchEvent:{value:c.dispatchEvent},removeEventListener:{value:c.removeEventListener}}),a(e.XMLHttpRequest.prototype,{addEventListener:{value:function(e,t,n){var r=this,i="on"+e,o=r[s]||u(r,s,{value:{}})[s],a=o[i]||(o[i]={}),f=a.h||(a.h=[]);E(f,t)<0&&(r[i]||(r[i]=function(){var t=document.createEvent("Event");t.initEvent(e,!0,!0),r.dispatchEvent(t)}),f[n?"unshift":"push"](t))}},dispatchEvent:{value:function(e){var t=this,n="on"+e.type,r=t[s],i=r&&r[n],o=!!i;return o&&(i.n?t.fireEvent(n,e):g(t,e,i.h,!0))}},removeEventListener:{value:c.removeEventListener}}),a(e.Event.prototype,{bubbles:{value:!0,writable:!0},cancelable:{value:!0,writable:!0},preventDefault:{value:function(){this.cancelable&&(this.defaultPrevented=!0,this.returnValue=!1)}},stopPropagation:{value:function(){this.stoppedPropagation=!0,this.cancelBubble=!0}},stopImmediatePropagation:{value:function(){this.stoppedImmediatePropagation=!0,this.stopPropagation()}},initEvent:{value:function(e,t,n){this.type=e,this.bubbles=!!t,this.cancelable=!!n,this.bubbles||this.stopPropagation()}}}),a(e.HTMLDocument.prototype,{textContent:{get:function(){return this.nodeType===11?S.call(this):null},set:function(e){this.nodeType===11&&N.call(this,e)}},addEventListener:{value:function(n,s,o){var u=this;c.addEventListener.call(u,n,s,o),t&&n===i&&!d.test(u.readyState)&&(t=!1,u.attachEvent(r,T),e==top&&function a(e){try{u.documentElement.doScroll("left"),T()}catch(t){setTimeout(a,50)}}())}},dispatchEvent:{value:c.dispatchEvent},removeEventListener:{value:c.removeEventListener},createEvent:{value:function(e){var t;if(e!=="Event")throw new Error("unsupported "+e);return t=document.createEventObject(),t.timeStamp=(new Date).getTime(),t}}}),a(e.Window.prototype,{getComputedStyle:{value:function(){function i(e){this._=e}function s(){}var e=/^(?:[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|))(?!px)[a-z%]+$/,t=/^(top|right|bottom|left)$/,n=/\-([a-z])/g,r=function(e,t){return t.toUpperCase()};return i.prototype.getPropertyValue=function(i){var s=this._,o=s.style,u=s.currentStyle,a=s.runtimeStyle,f,l,c;return i=(i==="float"?"style-float":i).replace(n,r),f=u?u[i]:o[i],e.test(f)&&!t.test(i)&&(l=o.left,c=a&&a.left,c&&(a.left=u.left),o.left=i==="fontSize"?"1em":f,f=o.pixelLeft+"px",o.left=l,c&&(a.left=c)),f==null?f:f+""||"auto"},s.prototype.getPropertyValue=function(){return null},function(e,t){return t?new s(e):new i(e)}}()},addEventListener:{value:function(t,n,r){var i=e,o="on"+t,u;i[o]||(i[o]=function(e){return g(i,C(i,e),u,!1)}),u=i[o][s]||(i[o][s]=[]),E(u,n)<0&&u[r?"unshift":"push"](n)}},dispatchEvent:{value:function(t){var n=e["on"+t.type];return n?n.call(e,t)!==!1&&!t.defaultPrevented:!0}},removeEventListener:{value:function(t,n,r){var i="on"+t,u=(e[i]||o)[s],a=u?E(u,n):-1;-1<a&&u.splice(a,1)}}})})(this);
8
+ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.flowplayer = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){
9
+ 'use strict';
10
+ var common = module.exports = {},
11
+ ClassList = _dereq_('class-list'),
12
+ $ = window.jQuery,
13
+ punycode = _dereq_('punycode'),
14
+ computedStyle = _dereq_('computed-style');
15
+
16
+ common.noop = function() {};
17
+ common.identity = function(i) { return i; };
18
+
19
+ common.removeNode = function(el) {
20
+ if (!el || !el.parentNode) return;
21
+ el.parentNode.removeChild(el);
22
+ };
23
 
24
+ common.find = function(query, ctx) {
25
+ if ($) return $(query, ctx).toArray();
26
+ ctx = ctx || document;
27
+ return Array.prototype.map.call(ctx.querySelectorAll(query), function(el) { return el; });
28
+ };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
 
30
+ common.text = function(el, txt) {
31
+ el[('innerText' in el) ? 'innerText' : 'textContent'] = txt;
32
+ };
33
 
34
+ common.findDirect = function(query, ctx) {
35
+ return common.find(query, ctx).filter(function(node) {
36
+ return node.parentNode === ctx;
37
+ });
38
+ };
 
 
39
 
40
+ common.hasClass = function(el, kls) {
41
+ if (typeof el.className !== 'string') return false;
42
+ return ClassList(el).contains(kls);
43
+ };
44
 
45
+ common.isSameDomain = function(url) {
46
+ var w = window.location,
47
+ a = common.createElement('a', { href: url });
48
+ return w.hostname === a.hostname &&
49
+ w.protocol === a.protocol &&
50
+ w.port === a.port;
51
+ };
52
 
53
+ common.css = function(el, property, value) {
54
+ if (typeof property === 'object') {
55
+ return Object.keys(property).forEach(function(key) {
56
+ common.css(el, key, property[key]);
57
+ });
58
+ }
59
+ if (typeof value !== 'undefined') {
60
+ if (value === '') return el ? el.style.removeProperty(property) : undefined;
61
+ return el ? el.style.setProperty(property, value) : undefined;
62
+ }
63
+ return el ? computedStyle(el, property) : undefined;
64
  };
65
 
66
+ common.createElement = function(tag, attributes, innerHTML) {
67
+ try {
68
+ var el = document.createElement(tag);
69
+ for (var key in attributes) {
70
+ if (!attributes.hasOwnProperty(key)) continue;
71
+ if (key === 'css') {
72
+ common.css(el, attributes[key]);
73
  } else {
74
+ common.attr(el, key, attributes[key]);
 
 
75
  }
76
+ }
77
+ el.innerHTML = innerHTML || '';
78
+ return el;
79
+ } catch (e) {
80
+ if (!$) throw e;
81
+ return $('<' + tag + '>' + innerHTML + '</' + tag + '>').attr(attributes)[0];
 
 
82
  }
83
+ };
84
 
85
+ common.toggleClass = function(el, cls, flag) {
86
+ if (!el) return;
87
+ var classes = ClassList(el);
88
+ if (typeof flag === 'undefined') classes.toggle(cls);
89
+ else if (flag) classes.add(cls);
90
+ else if (!flag) classes.remove(cls);
91
+ };
92
 
93
+ common.addClass = function(el, cls) {
94
+ return common.toggleClass(el, cls, true);
95
+ };
96
 
97
+ common.removeClass = function(el, cls) {
98
+ return common.toggleClass(el, cls, false);
99
+ };
100
 
101
+ common.append = function(par, child) {
102
+ par.appendChild(child);
103
+ return par;
104
+ };
105
 
106
+ common.appendTo = function(child, par) {
107
+ common.append(par, child);
108
+ return child;
109
+ };
110
 
111
+ common.prepend = function(par, child) {
112
+ par.insertBefore(child, par.firstChild);
113
+ };
114
 
 
115
 
116
+ // Inserts `el` after `child` that is child of `par`
117
+ common.insertAfter = function(par, child, el) {
118
+ if (child == common.lastChild(par)) par.appendChild(el);
119
+ var childIndex = Array.prototype.indexOf.call(par.children, child);
120
+ par.insertBefore(el, par.children[childIndex + 1]);
121
+ };
122
 
123
+ common.html = function(elms, val) {
124
+ elms = elms.length ? elms : [elms];
125
+ elms.forEach(function(elm) {
126
+ elm.innerHTML = val;
127
+ });
128
+ };
129
 
 
 
130
 
131
+ common.attr = function(el, key, val) {
132
+ if (key === 'class') key = 'className';
133
+ if (common.hasOwnOrPrototypeProperty(el, key)) {
134
+ try {
135
+ el[key] = val;
136
+ } catch (e) { // Most likely IE not letting set property
137
+ if ($) {
138
+ $(el).attr(key, val);
139
+ } else {
140
+ throw e;
141
+ }
142
+ }
143
+ } else {
144
+ if (val === false) {
145
+ el.removeAttribute(key);
146
+ } else {
147
+ el.setAttribute(key, val);
148
+ }
149
+ }
150
+ return el;
151
+ };
152
 
153
+ common.prop = function(el, key, val) {
154
+ if (typeof val === 'undefined') {
155
+ return el && el[key];
156
+ }
157
+ el[key] = val;
158
+ };
159
 
160
+ common.offset = function(el) {
161
+ var ret = el.getBoundingClientRect();
162
+ if (el.offsetWidth / el.offsetHeight > el.clientWidth / el.clientHeight) { // https://github.com/flowplayer/flowplayer/issues/757
163
+ ret = {
164
+ left: ret.left * 100,
165
+ right: ret.right * 100,
166
+ top: ret.top * 100,
167
+ bottom: ret.bottom * 100,
168
+ width: ret.width * 100,
169
+ height: ret.height * 100
170
+ };
171
+ }
172
+ return ret;
173
+ };
174
 
175
+ common.width = function(el, val) {
176
+ /*jshint -W093 */
177
+ if (val) return el.style.width = (''+val).replace(/px$/, '') + 'px';
178
+ var ret = common.offset(el).width;
179
+ return typeof ret === 'undefined' ? el.offsetWidth : ret;
180
+ };
181
 
182
+ common.height = function(el, val) {
183
+ /*jshint -W093 */
184
+ if (val) return el.style.height = (''+val).replace(/px$/, '') + 'px';
185
+ var ret = common.offset(el).height;
186
+ return typeof ret === 'undefined' ? el.offsetHeight : ret;
187
+ };
188
 
189
+ common.lastChild = function(el) {
190
+ return el.children[el.children.length - 1];
191
+ };
192
 
193
+ common.hasParent = function(el, parentSelector) {
194
+ var parent = el.parentElement;
195
+ while (parent) {
196
+ if (common.matches(parent, parentSelector)) return true;
197
+ parent = parent.parentElement;
198
+ }
199
+ return false;
200
+ };
201
 
202
+ common.createAbsoluteUrl = function(url) {
203
+ return common.createElement('a', {href: url}).href; // This won't work on IE7
204
+ };
205
 
206
+ common.xhrGet = function(url, successCb, errorCb) {
207
+ var xhr = new XMLHttpRequest();
208
+ xhr.onreadystatechange = function() {
209
+ if (this.readyState !== 4) return;
210
+ if (this.status >= 400) return errorCb();
211
+ successCb(this.responseText);
212
+ };
213
+ xhr.open('get', url, true);
214
+ xhr.send();
215
+ };
216
 
217
+ common.pick = function(obj, props) {
218
+ var ret = {};
219
+ props.forEach(function(prop) {
220
+ if (obj.hasOwnProperty(prop)) ret[prop] = obj[prop];
221
+ });
222
+ return ret;
223
+ };
224
 
225
+ common.hostname = function(host) {
226
+ return punycode.toUnicode(host || window.location.hostname);
227
+ };
228
 
229
+ //Hacks
230
+ common.browser = {
231
+ webkit: 'WebkitAppearance' in document.documentElement.style
232
+ };
233
 
234
+ common.getPrototype = function(el) {
235
+ /* jshint proto:true */
236
+ if (!Object.getPrototypeOf) return el.__proto__;
237
+ return Object.getPrototypeOf(el);
238
+ };
239
 
240
+ common.hasOwnOrPrototypeProperty = function(obj, prop) {
241
+ var o = obj;
242
+ while (o) {
243
+ if (Object.prototype.hasOwnProperty.call(o, prop)) return true;
244
+ o = common.getPrototype(o);
245
+ }
246
+ return false;
247
+ };
248
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
249
 
250
+ // Polyfill for Element.matches
251
+ // adapted from https://developer.mozilla.org/en/docs/Web/API/Element/matches
252
+ common.matches = function(elem, selector) {
253
+ var proto = Element.prototype,
254
+ fn = proto.matches ||
255
+ proto.matchesSelector ||
256
+ proto.mozMatchesSelector ||
257
+ proto.msMatchesSelector ||
258
+ proto.oMatchesSelector ||
259
+ proto.webkitMatchesSelector ||
260
+ function (selector) {
261
+ var element = this,
262
+ matches = (element.document || element.ownerDocument).querySelectorAll(selector),
263
+ i = 0;
264
+ while (matches[i] && matches[i] !== element) {
265
+ i++;
266
+ }
267
 
268
+ return matches[i] ? true : false;
269
+ };
270
+ return fn.call(elem, selector);
271
+ };
272
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
273
 
274
+ // Polyfill for CSSStyleDeclaration
275
+ // from https://github.com/shawnbot/aight
276
+ (function(CSSSDProto) {
277
 
278
+ function getAttribute(property) {
279
+ return property.replace(/-[a-z]/g, function(bit) {
280
+ return bit[1].toUpperCase();
281
+ });
282
+ }
283
 
284
+ // patch CSSStyleDeclaration.prototype using IE8's methods
285
+ if (typeof CSSSDProto.setAttribute !== "undefined") {
286
+ CSSSDProto.setProperty = function(property, value) {
287
+ return this.setAttribute(getAttribute(property), String(value) /*, important */ );
288
+ };
289
+ CSSSDProto.getPropertyValue = function(property) {
290
+ return this.getAttribute(getAttribute(property)) || null;
291
+ };
292
+ CSSSDProto.removeProperty = function(property) {
293
+ var value = this.getPropertyValue(property);
294
+ this.removeAttribute(getAttribute(property));
295
+ return value;
296
+ };
297
+ }
298
 
299
+ })(window.CSSStyleDeclaration.prototype);
 
 
300
 
301
+ },{"class-list":33,"computed-style":34,"punycode":41}],2:[function(_dereq_,module,exports){
302
+ 'use strict';
303
+ var common = _dereq_('../common');
304
 
305
+ // movie required in opts
306
+ module.exports = function embed(swf, flashvars, wmode, bgColor) {
307
+ wmode = wmode || "opaque";
308
 
309
+ var id = "obj" + ("" + Math.random()).slice(2, 15),
310
+ tag = '<object class="fp-engine" id="' + id+ '" name="' + id + '" ',
311
+ msie = navigator.userAgent.indexOf('MSIE') > -1;
312
 
313
+ tag += msie ? 'classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000">' :
314
+ ' data="' + swf + '" type="application/x-shockwave-flash">';
 
 
 
315
 
316
+ var opts = {
317
+ width: "100%",
318
+ height: "100%",
319
+ allowscriptaccess: "always",
320
+ wmode: wmode,
321
+ quality: "high",
322
+ flashvars: "",
 
 
 
323
 
324
+ // https://github.com/flowplayer/flowplayer/issues/13#issuecomment-9369919
325
+ movie: swf + (msie ? "?" + id : ""),
326
+ name: id
327
+ };
328
 
329
+ if (wmode !== 'transparent') opts.bgcolor = bgColor || '#333333';
330
 
331
+ // flashvars
332
+ Object.keys(flashvars).forEach(function(key) {
333
+ opts.flashvars += key + "=" + flashvars[key] + "&";
334
+ });
335
 
336
+ // parameters
337
+ Object.keys(opts).forEach(function(key) {
338
+ tag += '<param name="' + key + '" value="'+ opts[key] +'"/>';
339
+ });
340
 
341
+ tag += "</object>";
342
+ var el = common.createElement('div', {}, tag);
343
+ return common.find('object', el);
344
 
345
+ };
 
 
 
 
 
 
346
 
 
 
347
 
348
+ // Flash is buggy allover
349
+ if (window.attachEvent) {
350
+ window.attachEvent("onbeforeunload", function() {
351
+ window.__flash_savedUnloadHandler = window.__flash_unloadHandler = function() {};
352
+ });
353
+ }
 
354
 
 
355
 
356
+ },{"../common":1}],3:[function(_dereq_,module,exports){
357
+ 'use strict';
358
+ var flowplayer = _dereq_('../flowplayer'),
359
+ common = _dereq_('../common'),
360
+ embed = _dereq_('./embed'),
361
+ extend = _dereq_('extend-object'),
362
+ bean = _dereq_('bean'),
363
+ engineImpl;
364
 
365
+ engineImpl = function flashEngine(player, root) {
 
 
 
 
 
366
 
367
+ var conf = player.conf,
368
+ loadVideo,
369
+ callbackId,
370
+ api;
371
 
372
+ var suspended, timeouts = [];
 
 
373
 
374
+ var engine = {
375
+ engineName: engineImpl.engineName,
 
 
 
 
 
376
 
377
+ pick: function(sources) {
378
+
379
+ var source = extend({}, (function() {
380
+ if (flowplayer.support.flashVideo) {
381
+ var selectedSource;
382
+ for (var i = 0, source; i < sources.length; i++) {
383
+ source = sources[i];
384
+ if (/mp4|flv|flash/i.test(source.type)) selectedSource = source;
385
+ if (player.conf.swfHls && /mpegurl/i.test(source.type)) selectedSource = source;
386
+ if (selectedSource && !/mp4/i.test(selectedSource.type)) return selectedSource;
387
+ // Did not find any source or source was video/mp4, let's try find more
 
 
 
388
  }
389
+ return selectedSource; // Accept the fact we don't have anything or just an MP4
390
+ }
391
+ })());
392
+ if (!source) return;
393
+ if (source.src && !isAbsolute(source.src) && !player.conf.rtmp && !source.rtmp) source.src = common.createAbsoluteUrl(source.src);
394
+ return source;
395
+ },
396
 
397
+ suspendEngine: function() {
398
+ suspended = true;
399
+ },
400
+ resumeEngine: function() {
401
+ suspended = false;
402
+ },
 
 
 
 
 
403
 
404
+ load: function(video) {
405
+ loadVideo = video;
406
+ timeouts.forEach(function(t) { clearTimeout(t); });
 
 
 
 
 
407
 
408
+ function escapeURL(url) {
409
+ return url.replace(/&amp;/g, '%26').replace(/&/g, '%26').replace(/=/g, '%3D');
410
+ }
 
 
 
411
 
412
+ var html5Tag = common.findDirect('video', root)[0] || common.find('.fp-player > video', root)[0],
413
+ url = video.src,
414
+ is_absolute = isAbsolute(url);
415
 
416
+ var removeTag = function() {
417
+ common.removeNode(html5Tag);
418
+ };
419
+ var hasSupportedSource = function(sources) {
420
+ return sources.some(function(src) {
421
+ return !!html5Tag.canPlayType(src.type);
422
+ });
423
+ };
424
+ if (flowplayer.support.video &&
425
+ common.prop(html5Tag, 'autoplay') &&
426
+ hasSupportedSource(video.sources)) bean.one(html5Tag, 'timeupdate', removeTag);
427
+ else removeTag();
428
 
429
+ // convert to absolute
430
+ var rtmp = video.rtmp || conf.rtmp;
431
+ if (!is_absolute && !rtmp) url = common.createAbsoluteUrl(url);
432
 
433
+ if (api && isHLS(video) && api.data !== common.createAbsoluteUrl(conf.swfHls)) engine.unload();
 
 
 
434
 
435
+ if (api) {
436
+ ['live', 'preload', 'loop'].forEach(function(prop) {
437
+ if (!video.hasOwnProperty(prop)) return;
438
+ api.__set(prop, video[prop]);
439
+ });
440
+ Object.keys(video.flashls || {}).forEach(function(key) {
441
+ api.__set('hls_' + key, video.flashls[key]);
442
+ });
443
+ var providerChangeNeeded = false;
444
+ if (!is_absolute && rtmp) api.__set('rtmp', rtmp.url || rtmp);
445
+ else {
446
+ var oldRtmp = api.__get('rtmp');
447
+ providerChangeNeeded = !!oldRtmp;
448
+ api.__set('rtmp', null);
449
  }
450
+ api.__play(url, providerChangeNeeded || video.rtmp && video.rtmp !== conf.rtmp);
451
 
452
+ } else {
 
453
 
454
+ callbackId = "fpCallback" + ("" + Math.random()).slice(3, 15);
455
+ url = escapeURL(url);
456
 
457
+ var opts = {
458
+ hostname: conf.embedded ? common.hostname(conf.hostname) : common.hostname(location.hostname),
459
+ url: url,
460
+ callback: callbackId
461
+ };
462
+ if (root.getAttribute('data-origin')) {
463
+ opts.origin = root.getAttribute('data-origin');
464
  }
 
 
465
 
466
+ // optional conf
467
+ ['proxy', 'key', 'autoplay', 'preload', 'subscribe', 'live', 'loop', 'debug', 'splash', 'poster', 'rtmpt'].forEach(function(key) {
468
+ if (conf.hasOwnProperty(key)) opts[key] = conf[key];
469
+ if (video.hasOwnProperty(key)) opts[key] = video[key];
470
+ if ((conf.rtmp || {}).hasOwnProperty(key)) opts[key] = (conf.rtmp || {})[key];
471
+ if ((video.rtmp || {}).hasOwnProperty(key)) opts[key] = (video.rtmp || {})[key];
472
+ });
473
+ if (conf.rtmp) opts.rtmp = conf.rtmp.url || conf.rtmp;
474
+ if (video.rtmp) opts.rtmp = video.rtmp.url || video.rtmp;
475
+ Object.keys(video.flashls || {}).forEach(function(key) {
476
+ var val = video.flashls[key];
477
+ opts['hls_' + key] = val;
478
+ });
479
 
480
+ var hlsQualities = typeof video.hlsQualities !== 'undefined' ? video.hlsQualities : conf.hlsQualities;
481
+ if (typeof hlsQualities !== 'undefined') opts.hlsQualities = hlsQualities ? encodeURIComponent(JSON.stringify(hlsQualities)) : hlsQualities;
482
+ // bufferTime might be 0
483
+ if (conf.bufferTime !== undefined) opts.bufferTime = conf.bufferTime;
 
 
 
 
 
484
 
485
+ if (is_absolute) delete opts.rtmp;
 
486
 
487
+ // issues #376
488
+ if (opts.rtmp) {
489
+ opts.rtmp = escapeURL(opts.rtmp);
490
  }
 
 
 
 
491
 
492
+ // issues #733, 906
493
+ var bgColor = conf.bgcolor || common.css(root, 'background-color') ||'', bg;
494
+ if (bgColor.indexOf('rgb') === 0) {
495
+ bg = toHex(bgColor);
496
+ } else if (bgColor.indexOf('#') === 0) {
497
+ bg = toLongHex(bgColor);
498
+ }
499
 
500
+ // issues #387
501
+ opts.initialVolume = player.volumeLevel;
502
 
503
+ var swfUrl = isHLS(video) ? conf.swfHls : conf.swf;
 
 
 
 
 
 
504
 
505
+ api = embed(swfUrl, opts, conf.wmode, bg)[0];
 
 
 
506
 
507
+ var container = common.find('.fp-player', root)[0];
508
 
509
+ common.prepend(container, api);
 
 
510
 
511
+ player.off('quality.flashengine').on('quality.flashengine', function(ev, _api, quality) {
512
+ var hlsQualities =
513
+ typeof player.video.hlsQualities !== 'undefined' ?
514
+ player.video.hlsQualities :
515
+ player.conf.hlsQualities;
516
+ if (!hlsQualities) return;
517
+ api.__quality(quality);
518
  });
519
 
520
+ // throw error if no loading occurs
521
+ setTimeout(function() {
522
+ try {
523
+ if (!api.PercentLoaded()) {
524
+ return player.trigger("error", [player, { code: 7, url: conf.swf }]);
525
+ }
526
+ } catch (e) {}
527
+ }, 5000);
 
 
 
 
528
 
529
+ // detect disabled flash
530
+ //
531
+ timeouts.push(setTimeout(function() {
532
+ if (typeof api.PercentLoaded === 'undefined') {
533
+ player.trigger('flashdisabled', [player]);
534
+ }
535
+ }, 15000));
536
+ timeouts.push(setTimeout(function() {
537
+ if (typeof api.PercentLoaded === 'undefined') {
538
+ player.trigger('flashdisabled', [player, false]);
539
+ }
540
+ }, 500));
541
+
542
+ player.off('resume.flashhack').on('resume.flashhack', function() {
543
+ var timer = setTimeout(function() {
544
+ var currentTime = api.__status().time;
545
+ var timer2 = setTimeout(function() {
546
+ if (player.playing && !player.loading && api.__status().time === currentTime) {
547
+ player.trigger('flashdisabled', [player]);
548
+ }
549
+ }, 400);
550
+ timeouts.push(timer2);
551
+ player.one('seek.flashhack pause.flashhack load.flashack', function() { clearTimeout(timer2); });
552
+ }, 800);
553
+ timeouts.push(timer);
554
+ player.one('progress', function() {
555
+ clearTimeout(timer);
556
+ });
557
  });
558
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
559
 
560
+ api.pollInterval = setInterval(function () {
561
+ if (!api || suspended) return;
562
+ var status = api.__status ? api.__status() : null;
563
 
564
+ if (!status) return;
 
565
 
566
+ if (player.conf.live || player.live || video.live) {
567
+ video.seekOffset = status.seekOffset;
568
+ video.duration = status.duration + status.seekOffset;
569
+ }
570
 
571
+ if (player.playing && status.time && status.time !== player.video.time) player.trigger("progress", [player, status.time]);
 
572
 
573
+ video.buffer = status.buffer / video.bytes * video.duration;
574
+ player.trigger("buffer", [player, video.buffer]);
575
 
576
+ if (!video.buffered && status.time > 0) {
577
+ video.buffered = true;
578
+ player.trigger("buffered", [player]);
579
+ }
580
 
581
+ }, 250);
582
 
583
+ // listen
584
+ window[callbackId] = function(type, arg) {
585
+ var video = loadVideo;
586
+
587
+ if (conf.debug) {
588
+ if (type.indexOf('debug') === 0 && arg && arg.length) {
589
+ console.log.apply(console, ['-- ' + type].concat(arg));
590
+ }
591
+ else console.log("--", type, arg);
592
+ }
593
 
594
+ var event = {
595
+ type: type
596
+ };
 
 
 
 
597
 
598
+ switch (type) {
 
 
599
 
600
+ // RTMP sends a lot of finish events in vain
601
+ // case "finish": if (conf.rtmp) return;
602
+ case "ready": arg = extend(video, arg); break;
603
+ case "click": event.flash = true; break;
604
+ case "keydown": event.which = arg; break;
605
+ case "seek": video.time = arg; break;
606
+ case "status":
607
+ player.trigger("progress", [player, arg.time]);
608
+
609
+ if (arg.buffer < video.bytes && !video.buffered) {
610
+ video.buffer = arg.buffer / video.bytes * video.duration;
611
+ player.trigger("buffer", video.buffer);
612
+ } else if (!video.buffered) {
613
+ video.buffered = true;
614
+ player.trigger("buffered");
615
+ }
616
 
617
+ break;
618
+ case "metadata":
619
+ var str = atob(arg);
620
+ arg = {
621
+ key: str.substr(10, 4),
622
+ data: str.substr(21)
623
+ }
624
+ break;
625
+ }
626
+ if (type === 'click' || type === 'keydown') {
627
+ event.target = root;
628
+ bean.fire(root, type, [event]);
629
+ }
630
+ else if (type != 'buffered' && type !== 'unload') {
631
+ // add some delay so that player is truly ready after an event
632
+ setTimeout(function() { player.trigger(event, [player, arg]); }, 1);
633
+ } else if (type === 'unload') {
634
+ player.trigger(event, [player, arg]);
635
+ }
636
 
637
+ };
 
 
 
638
 
639
+ }
 
640
 
641
+ },
 
 
642
 
643
+ // not supported yet
644
+ speed: common.noop,
645
 
 
 
646
 
647
+ unload: function() {
648
+ if (api && api.__unload) api.__unload();
649
+ try {
650
+ if (callbackId && window[callbackId])delete window[callbackId];
651
+ } catch (e) {}
652
+ common.find("object", root).forEach(common.removeNode);
653
+ api = 0;
654
+ player.off('.flashengine');
655
+ player.off('.flashhack');
656
+ clearInterval(api.pollInterval);
657
+ timeouts.forEach(function(t) { clearTimeout(t); });
658
+ }
659
 
660
+ };
661
 
662
+ ['pause','resume','seek','volume'].forEach(function(name) {
 
 
 
 
663
 
664
+ engine[name] = function(arg) {
665
+ try {
666
+ if (player.ready) {
667
 
668
+ if (arg === undefined) {
669
+ api["__" + name]();
670
 
671
+ } else {
672
+ api["__" + name](arg);
673
+ }
674
 
675
+ }
676
+ } catch (e) {
677
+ if (typeof api["__" + name] === 'undefined') { //flash lost it's methods
678
+ return player.trigger('flashdisabled', [player]);
679
+ }
680
+ throw e;
681
+ }
682
+ };
683
 
684
+ });
 
 
 
685
 
686
+ function toHex(bg) {
687
+ function hex(x) {
688
+ return ("0" + parseInt(x).toString(16)).slice(-2);
689
+ }
690
 
691
+ bg = bg.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
692
+ if (!bg) return;
 
693
 
694
+ return '#' + hex(bg[1]) + hex(bg[2]) + hex(bg[3]);
695
+ }
696
 
697
+ function toLongHex(bg) {
698
+ if (bg.length === 7) return bg;
699
+ var a = bg.split('').slice(1);
700
+ return '#' + a.map(function(i) {
701
+ return i + i;
702
+ }).join('');
703
+ }
704
 
705
+ function isHLS(video) {
706
+ return /application\/x-mpegurl/i.test(video.type);
707
+ }
 
 
 
 
708
 
709
+ return engine;
 
710
 
711
+ };
 
712
 
 
 
713
 
714
+ engineImpl.engineName = 'flash';
715
+ engineImpl.canPlay = function(type, conf) {
716
+ return flowplayer.support.flashVideo && /video\/(mp4|flash|flv)/i.test(type) || flowplayer.support.flashVideo && conf.swfHls && /mpegurl/i.test(type);
717
+ };
718
+ flowplayer.engines.push(engineImpl);
719
 
 
 
 
 
720
 
 
 
721
 
722
+ function isAbsolute(url) {
723
+ return /^https?:/.test(url);
724
+ }
725
 
726
+ },{"../common":1,"../flowplayer":28,"./embed":2,"bean":31,"extend-object":36}],4:[function(_dereq_,module,exports){
727
+ 'use strict';
728
+ var flowplayer = _dereq_('../flowplayer'),
729
+ bean = _dereq_('bean'),
730
+ extend = _dereq_('extend-object'),
731
+ common = _dereq_('../common');
732
+ var VIDEO = document.createElement('video');
733
 
734
+ // HTML5 --> Flowplayer event
735
+ var EVENTS = {
736
 
737
+ // fired
738
+ ended: 'finish',
739
+ pause: 'pause',
740
+ play: 'resume',
741
+ //progress: 'buffer',
742
+ timeupdate: 'progress',
743
+ volumechange: 'volume',
744
+ ratechange: 'speed',
745
+ //seeking: 'beforeseek',
746
+ seeked: 'seek',
747
+ // abort: 'resume',
748
 
749
+ // not fired
750
+ loadeddata: 'ready',
751
+ // loadedmetadata: 0,
752
+ // canplay: 0,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
753
 
754
+ // error events
755
+ // load: 0,
756
+ // emptied: 0,
757
+ // empty: 0,
758
+ error: 'error',
759
+ dataunavailable: 'error',
760
+ webkitendfullscreen: !flowplayer.support.inlineVideo && 'unload'
761
 
762
+ };
 
763
 
764
+ function round(val, per) {
765
+ per = per || 100;
766
+ return Math.round(val * per) / per;
767
+ }
768
 
769
+ function getType(type) {
770
+ return /mpegurl/i.test(type) ? "application/x-mpegurl" : type;
771
+ }
 
 
 
 
772
 
773
+ function canPlay(type) {
774
+ if (!/^(video|application)/i.test(type))
775
+ type = getType(type);
776
+ return !!VIDEO.canPlayType(type).replace("no", '');
777
+ }
778
 
779
+ function findFromSourcesByType(sources, type) {
780
+ var arr = sources.filter(function(s) {
781
+ return s.type === type;
782
+ });
783
+ return arr.length ? arr[0] : null;
784
+ }
785
 
786
+ var videoTagCache;
787
+ var createVideoTag = function(video, autoplay, preload, useCache) {
788
+ if (typeof autoplay === 'undefined') autoplay = true;
789
+ if (typeof preload === 'undefined') preload = 'none';
790
+ if (typeof useCache === 'undefined') useCache = true;
791
+ if (useCache && videoTagCache) {
792
+ videoTagCache.type = getType(video.type);
793
+ videoTagCache.src = video.src;
794
+ common.find('track', videoTagCache).forEach(common.removeNode);
795
+ videoTagCache.removeAttribute('crossorigin');
796
+ return videoTagCache;
797
+ }
798
+ var el = document.createElement('video');
799
+ el.src = video.src;
800
+ el.type = getType(video.type);
801
+ el.className = 'fp-engine';
802
+ if (flowplayer.support.autoplay) el.autoplay = autoplay ? 'autoplay' : false;
803
+ if (flowplayer.support.dataload) el.preload = preload;
804
+ el.setAttribute('webkit-playsinline', 'true');
805
+ el.setAttribute('playsinline', 'true');
806
+ if (useCache) videoTagCache = el;
807
+ return el;
808
+ };
809
 
810
+ var engine;
811
 
812
+ engine = function(player, root) {
813
 
814
+ var api = common.findDirect('video', root)[0] || common.find('.fp-player > video', root)[0],
815
+ support = flowplayer.support,
816
+ conf = player.conf,
817
+ self,
818
+ timer,
819
+ lastBuffer,
820
+ volumeLevel;
821
+ /*jshint -W093 */
822
+ return self = {
823
+ engineName: engine.engineName,
824
 
825
+ pick: function(sources) {
826
+ var source = (function() {
827
+ if (support.video) {
828
+ if (conf.videoTypePreference) {
829
+ var mp4source = findFromSourcesByType(sources, conf.videoTypePreference);
830
+ if (mp4source) return mp4source;
831
+ }
832
 
833
+ for (var i = 0; i < sources.length; i++) {
834
+ if (canPlay(sources[i].type)) return sources[i];
835
+ }
836
+ }
837
+ })();
838
+ if (!source) return;
839
+ if (typeof source.src === 'string') source.src = common.createAbsoluteUrl(source.src);
840
+ return source;
841
+ },
842
 
843
+ load: function(video) {
844
+ var container = common.find('.fp-player', root)[0], reload = false, created = false;
845
+ if (conf.splash && !api) {
846
+ api = createVideoTag(video);
847
+ common.prepend(container, api);
848
+ created = true;
849
+ } else if (!api) {
850
+ api = createVideoTag(video, !!video.autoplay || !!conf.autoplay, conf.clip.preload || true, false);
851
+ common.prepend(container, api);
852
+ created = true;
853
+ } else {
854
+ common.addClass(api, 'fp-engine');
855
+ common.find('source,track', api).forEach(common.removeNode);
856
+ if (!player.conf.nativesubtitles) common.attr(api, 'crossorigin', false);
857
+ reload = api.src === video.src;
858
+ }
859
+ if (!support.inlineVideo) {
860
+ common.css(api, {
861
+ position: 'absolute',
862
+ top: '-9999em'
863
+ });
864
+ }
865
+ //TODO subtitles support
866
 
867
+ // IE does not fire delegated timeupdate events
868
+ bean.off(api, 'timeupdate', common.noop);
869
+ bean.on(api, 'timeupdate', common.noop);
870
 
871
+ common.prop(api, 'loop', false);
872
+ player.off('.loophack');
873
+ if (video.loop || conf.loop) {
874
+ if (/mpegurl/i.test(video.type)) {
875
+ player.on('finish.loophack', function() { player.resume(); });
876
+ }
877
+ else common.prop(api, 'loop', true);
878
+ }
879
 
880
+ if (typeof volumeLevel !== 'undefined') {
881
+ api.volume = volumeLevel;
882
+ }
 
883
 
884
+ if (player.video.src && video.src != player.video.src || video.index) common.attr(api, 'autoplay', 'autoplay');
885
+ api.src = video.src;
886
+ api.type = video.type;
 
887
 
888
+ self._listeners = listen(api, common.find("source", api).concat(api), video) || self._listeners;
 
 
 
889
 
890
+ if (reload || (created && !conf.splash)) api.load();
891
+ if (support.iOS.iPad && support.iOS.chrome) api.load();
892
+ if (api.paused && (video.autoplay || conf.autoplay || conf.splash)) api.play();
893
+ },
894
 
895
+ pause: function() {
896
+ api.pause();
897
+ },
898
 
899
+ resume: function() {
900
+ api.play();
901
+ },
902
 
903
+ speed: function(val) {
904
+ api.playbackRate = val;
905
+ },
 
 
 
906
 
907
+ seek: function(time) {
908
+ try {
909
+ var pausedState = player.paused;
910
+ api.currentTime = time;
911
+ if (pausedState) api.pause();
912
+ } catch (ignored) {}
913
+ },
914
 
915
+ volume: function(level) {
916
+ volumeLevel = level;
917
+ if (api) {
918
+ api.volume = level;
919
+ }
920
+ },
921
 
922
+ unload: function() {
923
+ common.find('video.fp-engine', root).forEach(function (videoTag) {
924
+ common.attr(videoTag, 'src', '');
925
+ common.removeNode(videoTag);
926
+ });
927
+ if (!support.cachedVideoTag) videoTagCache = null;
928
+ timer = clearInterval(timer);
929
+ var instanceId = root.getAttribute('data-flowplayer-instance-id');
930
+ delete api.listeners[instanceId];
931
+ api = 0;
932
+ if (self._listeners) Object.keys(self._listeners).forEach(function(typ) {
933
+ self._listeners[typ].forEach(function(l) {
934
+ root.removeEventListener(typ, l, true);
935
+ });
936
+ });
937
+ }
938
 
939
+ };
940
 
941
+ function listen(api, sources, video) {
942
+ // listen only once
943
+ var instanceId = root.getAttribute('data-flowplayer-instance-id');
 
 
 
944
 
945
+ if (api.listeners && api.listeners.hasOwnProperty(instanceId)) {
946
+ api.listeners[instanceId] = video;
947
+ return;
 
 
 
 
 
948
  }
949
+ (api.listeners || (api.listeners = {}))[instanceId] = video;
950
 
951
+ bean.on(sources, 'error', function(e) {
952
+ try {
953
+ if (canPlay(e.target.getAttribute('type'))) {
954
+ player.trigger("error", [player, { code: 4, video: extend(video, {src: api.src, url: api.src}) }]);
955
+ }
956
+ } catch (er) {
957
+ // Most likely: https://bugzilla.mozilla.org/show_bug.cgi?id=208427
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
958
  }
959
+ });
960
 
961
+ player.on('shutdown', function() {
962
+ bean.off(sources);
963
+ bean.off(api, '.dvrhack');
964
+ player.off('.loophack');
965
+ });
 
 
 
966
 
967
+ var eventListeners = {};
968
+ //Special event handling for HLS metadata events
969
 
970
+ var listenMetadata = function(track) {
971
+ if (track.kind !== 'metadata') return;
972
+ track.mode = 'hidden';
973
+ track.addEventListener('cuechange', function() {
974
+ player.trigger('metadata', [player, track.activeCues[0].value]);
975
+ }, false);
976
+ };
977
 
978
+ if (api && api.textTracks.length) Array.prototype.forEach.call(api.textTracks, listenMetadata);
979
+ if (typeof api.textTracks.addEventListener === 'function') api.textTracks.addEventListener('addtrack', function(tev) {
980
+ listenMetadata(tev.track);
981
+ }, false);
982
+ if (player.conf.dvr || player.dvr || video.dvr) {
983
+ bean.on(api, 'progress.dvrhack', function() {
984
+ if (!api.seekable.length) return;
985
+ player.video.duration = api.seekable.end(null);
986
+ player.video.seekOffset = api.seekable.start(null);
987
+ player.trigger('dvrwindow', [player, {
988
+ start: api.seekable.start(null),
989
+ end: api.seekable.end(null)
990
+ }]);
991
+ if (api.currentTime >= api.seekable.start(null)) return;
992
+ api.currentTime = api.seekable.start(null);
993
+ });
994
+ }
995
+
996
+ Object.keys(EVENTS).forEach(function(type) {
997
+ var flow = EVENTS[type];
998
+ if (!flow) return;
999
+ var l = function(e) {
1000
+ video = api.listeners[instanceId];
1001
+ if (!e.target || !common.hasClass(e.target, 'fp-engine')) return;
1002
 
1003
+ if (conf.debug && !/progress/.test(flow)) console.log(type, "->", flow, e);
1004
 
1005
+ var triggerEvent = function() {
1006
+ player.trigger(flow, [player, arg]);
1007
+ };
1008
 
1009
+ // no events if player not ready
1010
+ if (!player.ready && !/ready|error/.test(flow) || !flow || !common.find('video', root).length) {
1011
+ if (flow === 'resume') player.one('ready', function() { setTimeout(function() { triggerEvent(); }) });
1012
+ return;
1013
  }
1014
+ var arg;
 
1015
 
1016
+ if (flow === 'unload') { //Call player unload
1017
+ player.unload();
1018
+ return;
1019
+ }
1020
 
1021
+ switch (flow) {
 
 
1022
 
1023
+ case "ready":
 
 
1024
 
1025
+ arg = extend(video, {
1026
+ duration: api.duration < Number.MAX_VALUE ? api.duration : 0,
1027
+ width: api.videoWidth,
1028
+ height: api.videoHeight,
1029
+ url: api.currentSrc,
1030
+ src: api.currentSrc
1031
+ });
 
 
 
 
 
1032
 
1033
+ try {
1034
+ arg.seekable = /mpegurl/i.test(video ? (video.type || '') : '') && api.duration || api.seekable && api.seekable.end(null) || player.live;
1035
 
1036
+ } catch (ignored) {}
 
1037
 
1038
+ // buffer
1039
+ timer = timer || setInterval(function() {
1040
 
1041
+ try {
1042
+ arg.buffer = api.buffered.end(null);
1043
 
1044
+ } catch (ignored) {}
1045
 
1046
+ if (arg.buffer) {
1047
+ if (round(arg.buffer, 1000) < round(arg.duration, 1000) && !arg.buffered && arg.buffer !== lastBuffer) {
1048
+ player.trigger("buffer", [player, arg.buffer]);
1049
+ lastBuffer = arg.buffer;
 
 
 
 
1050
 
1051
+ } else if (!arg.buffered && arg.buffer !== lastBuffer) {
1052
+ arg.buffered = true;
1053
+ player.trigger("buffer", [player, arg.buffer]).trigger("buffered", e);
1054
+ lastBuffer = arg.buffer;
1055
+ clearInterval(timer);
1056
+ timer = 0;
1057
+ }
1058
+ }
1059
 
1060
+ }, 250);
 
 
 
 
 
1061
 
1062
+ if (!player.live && !arg.duration && !support.hlsDuration && type === "loadeddata") {
1063
+ var durationChanged = function() {
1064
+ arg.duration = api.duration;
1065
+ try {
1066
+ arg.seekable = api.seekable && api.seekable.end(null);
1067
 
1068
+ } catch (ignored) {}
1069
+ triggerEvent();
1070
+ api.removeEventListener('durationchange', durationChanged);
1071
+ common.toggleClass(root, 'is-live', false);
1072
+ };
1073
+ api.addEventListener('durationchange', durationChanged);
1074
 
1075
+ // Ugly hack to handle broken Android devices
1076
+ var timeUpdated = function() {
1077
+ if (!player.ready && !api.duration) { // No duration even though the video already plays
1078
+ arg.duration = 0;
1079
+ common.addClass(root, 'is-live'); // Make UI believe it's live
1080
+ triggerEvent();
1081
+ }
1082
+ api.removeEventListener('timeupdate', timeUpdated);
1083
+ };
1084
+ api.addEventListener('timeupdate', timeUpdated);
1085
+ return;
1086
+ }
1087
 
1088
+ break;
1089
 
1090
+ case "progress": case "seek":
1091
 
1092
+ if (api.currentTime > 0 || player.live) {
1093
+ arg = Math.max(api.currentTime, 0);
1094
+
1095
+ } else if (flow == 'progress') {
1096
+ return;
1097
  }
1098
+ break;
 
1099
 
 
 
 
 
 
 
1100
 
1101
+ case "speed":
1102
+ arg = round(api.playbackRate);
1103
+ break;
 
1104
 
1105
+ case "volume":
1106
+ arg = round(api.volume);
1107
+ break;
1108
 
1109
+ case "error":
1110
+ try {
1111
+ arg = (e.srcElement || e.originalTarget).error;
1112
+ arg.video = extend(video, {src: api.src, url: api.src});
1113
+ } catch (er) {
1114
+ // Most likely https://bugzilla.mozilla.org/show_bug.cgi?id=208427
1115
+ return;
1116
+ }
1117
+ }
1118
 
1119
+ triggerEvent();
 
 
 
1120
 
 
1121
 
1122
+ };
1123
+ root.addEventListener(type, l, true);
1124
+ if (!eventListeners[type]) eventListeners[type] = [];
1125
+ eventListeners[type].push(l);
1126
 
1127
+ });
1128
+ return eventListeners;
1129
 
1130
+ }
1131
 
1132
+ };
1133
 
 
 
 
 
 
 
 
1134
 
1135
+ engine.canPlay = function(type) {
1136
+ return flowplayer.support.video && canPlay(type);
1137
+ };
 
1138
 
1139
+ engine.engineName = 'html5';
1140
 
1141
+ flowplayer.engines.push(engine);
1142
 
1143
+ },{"../common":1,"../flowplayer":28,"bean":31,"extend-object":36}],5:[function(_dereq_,module,exports){
1144
+ 'use strict';
1145
+ var flowplayer = _dereq_('../flowplayer')
1146
+ , common = _dereq_('../common')
1147
+ , bean = _dereq_('bean');
1148
 
1149
+ flowplayer(function(api, root) {
1150
+ api.on('ready', function() {
1151
+ var el = common.find('video.fp-engine', root)[0];
1152
+ if (!el) return;
1153
+ el.setAttribute('x-webkit-airplay', 'allow');
1154
 
1155
+ if (!window.WebKitPlaybackTargetAvailabilityEvent) return;
1156
+ el.addEventListener('webkitplaybacktargetavailabilitychanged', function(ev) {
1157
+ if (ev.availability !== 'available') return;
1158
+ var btnContainer = common.find('.fp-header', root)[0];
1159
+ common.find('.fp-airplay', btnContainer).forEach(common.removeNode);
1160
+ var trigger = common.createElement('a', { 'class': 'fp-airplay fp-icon', title: 'Play on AirPlay device'})
1161
+ btnContainer.insertBefore(trigger, common.find('.fp-fullscreen', btnContainer)[0]);
1162
 
1163
+ });
 
 
 
 
 
 
 
1164
 
1165
+ el.addEventListener('webkitcurrentplaybacktargetiswirelesschanged', function() {
1166
+ var trigger = common.find('.fp-airplay', root)[0];
1167
+ if (!trigger) return;
1168
+ common.toggleClass(trigger, 'fp-active', el.webkitCurrentPlaybackTargetIsWireless);
1169
+ });
1170
 
1171
+ });
1172
 
1173
+ bean.on(root, 'click', '.fp-airplay', function(ev) {
1174
+ ev.preventDefault();
1175
+ var video = common.find('video.fp-engine', root)[0];
1176
+ video.webkitShowPlaybackTargetPicker();
1177
+ });
1178
 
 
 
 
1179
 
1180
+ });
 
1181
 
1182
+ },{"../common":1,"../flowplayer":28,"bean":31}],6:[function(_dereq_,module,exports){
1183
+ 'use strict';
1184
+ /* global _gat */
1185
+ var flowplayer = _dereq_('../flowplayer'),
1186
+ TYPE_RE = _dereq_('./resolve').TYPE_RE,
1187
+ scriptjs = _dereq_('scriptjs'),
1188
+ bean = _dereq_('bean');
1189
+ flowplayer(function(player, root) {
1190
 
1191
+ var id = player.conf.analytics, time = 0, last = 0, timer;
 
 
 
 
 
 
 
1192
 
1193
+ if (id) {
1194
 
1195
+ // load Analytics script if needed
1196
+ if (typeof _gat == 'undefined') scriptjs("//google-analytics.com/ga.js");
1197
 
1198
+ var getTracker = function() {
1199
+ var tracker = _gat._getTracker(id);
1200
+ tracker._setAllowLinker(true);
1201
+ return tracker;
1202
+ };
1203
 
1204
+ var track = function track(e, api, video) {
1205
 
1206
+ video = video || player.video;
1207
 
1208
+ if (time && typeof _gat != 'undefined') {
1209
+ var tracker = getTracker();
1210
 
 
 
 
 
 
 
 
 
 
 
 
1211
 
1212
+ // http://code.google.com/apis/analytics/docs/tracking/eventTrackerGuide.html
1213
+ tracker._trackEvent(
1214
+ "Video / Seconds played",
1215
+ player.engine.engineName + "/" + video.type,
1216
+ video.title || root.getAttribute("title") || video.src.split("/").slice(-1)[0].replace(TYPE_RE, ''),
1217
+ Math.round(time / 1000)
1218
+ );
1219
+ time = 0;
1220
+ if (timer) {
1221
+ clearTimeout(timer);
1222
+ timer = null;
1223
+ }
1224
+ }
1225
 
1226
+ };
 
 
 
 
 
1227
 
1228
+ player.bind("load unload", track).bind("progress", function() {
1229
 
1230
+ if (!player.seeking) {
1231
+ time += last ? (+new Date() - last) : 0;
1232
+ last = +new Date();
1233
+ }
1234
 
1235
+ if (!timer) {
1236
+ timer = setTimeout(function() {
1237
+ timer = null;
1238
+ var tracker = getTracker();
1239
+ tracker._trackEvent('Flowplayer heartbeat', 'Heartbeat', '', 0, true);
1240
+ }, 10*60*1000); // heartbeat every 10 minutes
1241
+ }
1242
 
1243
+ }).bind("pause", function() {
1244
+ last = 0;
1245
+ });
 
 
1246
 
1247
+ player.bind('shutdown', function() {
1248
+ bean.off(window, 'unload', track);
1249
+ });
1250
+
1251
+ bean.on(window, 'unload', track);
 
1252
 
 
 
 
 
1253
  }
 
 
 
 
 
 
 
 
 
1254
 
1255
+ });
1256
 
1257
+ },{"../flowplayer":28,"./resolve":19,"bean":31,"scriptjs":42}],7:[function(_dereq_,module,exports){
1258
+ /* global chrome */
1259
+ /* eslint-disable no-console */
 
 
 
 
 
1260
 
1261
+ 'use strict';
1262
+ var flowplayer = _dereq_('../flowplayer')
1263
+ , common = _dereq_('../common')
1264
+ , bean = _dereq_('bean')
1265
+ , scriptjs = _dereq_('scriptjs');
1266
 
 
 
 
 
 
 
 
 
 
 
 
1267
 
 
1268
 
1269
+ flowplayer(function(api, root) {
1270
+ scriptjs('https://www.gstatic.com/cv/js/sender/v1/cast_sender.js');
1271
+ window['__onGCastApiAvailable'] = function(loaded) {
1272
+ if (!loaded) return;
1273
+ initialize();
1274
+ };
1275
+
1276
+ var conf = api.conf.chromecast || {}
1277
+ , session
1278
+ , timer
1279
+ , trigger;
1280
+
1281
+ function initialize() {
1282
+ var applicationId, sessionRequest, apiConfig;
1283
+ applicationId = conf.applicationId || chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID;
1284
+ sessionRequest = new chrome.cast.SessionRequest(applicationId);
1285
+ apiConfig = new chrome.cast.ApiConfig(
1286
+ sessionRequest,
1287
+ sessionListener,
1288
+ receiverListener
1289
+ );
1290
+ chrome.cast.initialize(apiConfig, onInitSuccess, onError);
1291
+ }
1292
 
1293
+ function sessionListener() {
1294
+ console.log('sessionListener');
1295
+ }
1296
 
1297
+ function receiverListener(ev) {
1298
+ if (ev !== chrome.cast.ReceiverAvailability.AVAILABLE) return;
1299
+ createUIElements();
1300
+ }
 
 
1301
 
1302
+ function onInitSuccess() {
1303
+ /* noop */
1304
+ }
1305
 
1306
+ function onError() {
1307
+ console.log('onError');
1308
+ }
1309
 
1310
+ function createUIElements() {
1311
+ var btnContainer = common.find('.fp-header', root)[0];
1312
+ common.find('.fp-chromecast', btnContainer).forEach(common.removeNode);
1313
+ common.find('.fp-chromecast-engine', root).forEach(common.removeNode);
1314
+ trigger = common.createElement('a', { 'class': 'fp-chromecast fp-icon', title: 'Play on Cast device'})
1315
+ btnContainer.insertBefore(trigger, common.find('.fp-fullscreen', btnContainer)[0]);
1316
+ var chromeCastEngine = common.createElement('div', { 'class': 'fp-chromecast-engine' })
1317
+ , chromeCastStatus = common.createElement('p', { 'class': 'fp-chromecast-engine-status' })
1318
+ , chromeCastIcon = common.createElement('p', { 'class': 'fp-chromecast-engine-icon' });
1319
+ chromeCastEngine.appendChild(chromeCastIcon);
1320
+ chromeCastEngine.appendChild(chromeCastStatus);
1321
+ var engine = common.find('.fp-engine', root)[0];
1322
+ if (!engine) common.prepend(common.find('.fp-player', root)[0] || root, chromeCastEngine);
1323
+ else engine.parentNode.insertBefore(chromeCastEngine, engine);
1324
+ }
1325
 
1326
+ function destroy() {
1327
+ clearInterval(timer);
1328
+ timer = null;
1329
+ api.release();
1330
+ common.toggleClass(root, 'is-chromecast', false);
1331
+ common.toggleClass(trigger, 'fp-active', false);
1332
+ }
1333
 
1334
+ bean.on(root, 'click', '.fp-chromecast', function(ev) {
1335
+ ev.preventDefault();
1336
+ if (session) {
1337
+ api.trigger('pause', [api]);
1338
+ session.stop();
1339
+ session = null;
1340
+ destroy();
1341
+ return;
1342
+ }
1343
+ if (api.playing) api.pause();
1344
+ chrome.cast.requestSession(function(s) {
1345
+ session = s;
1346
+ var receiverName = session.receiver.friendlyName;
1347
+ common.html(common.find('.fp-chromecast-engine-status')[0], 'Playing on device ' + receiverName);
1348
+ var mediaInfo = new chrome.cast.media.MediaInfo(api.video.src);
1349
+ var request = new chrome.cast.media.LoadRequest(mediaInfo);
1350
+ session.loadMedia(request, onMediaDiscovered, function onMediaError() { });
1351
+
1352
+ function onMediaDiscovered(media) {
1353
+ media.addUpdateListener(function(alive) {
1354
+ if (!session) return; // Already destoryed
1355
+ timer = timer || setInterval(function() {
1356
+ api.trigger('progress', [api, media.getEstimatedTime()]);
1357
+ }, 500);
1358
+ if (!alive) {
1359
+ destroy();
1360
+ api.trigger('finish', [api]);
1361
+ } else {
1362
+ common.toggleClass(root, 'is-chromecast', true);
1363
+ common.toggleClass(trigger, 'fp-active', true);
1364
+ api.hijack({
1365
+ pause: function() {
1366
+ media.pause();
1367
+ },
1368
+ resume: function() {
1369
+ media.play();
1370
+ },
1371
+ seek: function(time) {
1372
+ var req = new chrome.cast.media.SeekRequest();
1373
+ req.currentTime = time;
1374
+ media.seek(req);
1375
+ }
1376
+ });
1377
+ }
1378
+ var playerState = media.playerState;
1379
+ if (api.paused && playerState === chrome.cast.media.PlayerState.PLAYING) api.trigger('resume', [api]);
1380
+ if (api.playing && playerState === chrome.cast.media.PlayerState.PAUSED) api.trigger('pause', [api]);
1381
+ common.toggleClass(root, 'is-loading', playerState === chrome.cast.media.PlayerState.BUFFERING);
1382
+ });
1383
+ }
1384
+ }, function(err) {
1385
+ console.error('requestSession error', err);
1386
+ });
1387
+ });
1388
 
1389
+ });
 
 
 
1390
 
1391
+ },{"../common":1,"../flowplayer":28,"bean":31,"scriptjs":42}],8:[function(_dereq_,module,exports){
1392
+ 'use strict';
1393
+ var flowplayer = _dereq_('../flowplayer'),
1394
+ common = _dereq_('../common'),
1395
+ bean = _dereq_('bean');
1396
 
1397
+ flowplayer(function(player, root) {
 
 
 
1398
 
1399
+ var CUE_RE = / ?cue\d+ ?/;
 
 
 
 
 
1400
 
1401
+ var cuepointsDisabled = false;
1402
 
1403
+ function setClass(index) {
1404
+ root.className = root.className.replace(CUE_RE, " ");
1405
+ if (index >= 0) common.addClass(root, 'cue' + index);
1406
+ }
1407
 
1408
+ var segments = {}, lastFiredSegment = -0.125;
 
 
 
1409
 
1410
+ var fire = function(cue) {
1411
+ var idx = player.cuepoints.indexOf(cue);
1412
+ if (!isNaN(cue)) cue = { time: cue };
1413
+ cue.index = idx;
1414
+ setClass(idx);
1415
+ player.trigger('cuepoint', [player, cue]);
1416
+ };
1417
 
1418
+ player.on("progress", function(e, api, time) {
1419
+ if (cuepointsDisabled) return;
1420
+ var segment = segmentForCue(time);
1421
+ while (lastFiredSegment < segment) {
1422
+ lastFiredSegment += 0.125;
1423
+ if (!segments[lastFiredSegment]) continue;
1424
+ segments[lastFiredSegment].forEach(fire);
1425
+ }
1426
 
1427
+ }).on("unload", setClass)
1428
+ .on('beforeseek', function(ev) {
1429
+ setTimeout(function() {
1430
+ if (!ev.defaultPrevented) cuepointsDisabled = true;
1431
+ });
1432
+ }).on("seek", function(ev, api, time) {
1433
+ setClass();
1434
+ lastFiredSegment = segmentForCue(time || 0) - 0.125;
1435
+ cuepointsDisabled = false;
1436
+ if (!time && segments[0]) segments[0].forEach(fire);
1437
+ }).on('ready', function(e, api, video) {
1438
+ lastFiredSegment = -0.125;
1439
+ var cues = video.cuepoints || player.conf.cuepoints || [];
1440
+ player.setCuepoints(cues);
1441
+ }).on('finish', function() {
1442
+ lastFiredSegment = -0.125;
1443
+ });
1444
+ if (player.conf.generate_cuepoints) {
1445
 
1446
+ player.bind("load", function() {
 
 
 
 
 
 
1447
 
1448
+ // clean up cuepoint elements of previous playlist items
1449
+ common.find('.fp-cuepoint', root).forEach(common.removeNode);
 
 
 
 
1450
 
1451
+ });
1452
+ }
 
 
 
 
1453
 
1454
+ /**
1455
+ * API
1456
+ */
1457
+ player.setCuepoints = function(cues) {
1458
+ player.cuepoints = [];
1459
+ segments = {};
1460
+ cues.forEach(player.addCuepoint);
1461
+ return player;
1462
+ };
1463
+ player.addCuepoint = function(cue) {
1464
+ if (!player.cuepoints) player.cuepoints = [];
1465
+ var segment = segmentForCue(cue);
1466
+ if (!segments[segment]) segments[segment] = [];
1467
+ segments[segment].push(cue);
1468
+ player.cuepoints.push(cue);
1469
+
1470
+ if (player.conf.generate_cuepoints && cue.visible !== false) {
1471
+ var duration = player.video.duration,
1472
+ timeline = common.find('.fp-timeline', root)[0];
1473
+ common.css(timeline, "overflow", "visible");
1474
+
1475
+ var time = cue.time || cue;
1476
+ if (time < 0) time = duration + time;
1477
+
1478
+ var el = common.createElement('a', {className: 'fp-cuepoint fp-cuepoint' + (player.cuepoints.length - 1)});
1479
+ common.css(el, "left", (time / duration * 100) + "%");
1480
+
1481
+ timeline.appendChild(el);
1482
+ bean.on(el, 'mousedown', function(e) {
1483
+ e.preventDefault();
1484
+ e.stopPropagation();
1485
+ player.seek(time);
1486
+ });
1487
+ }
1488
+ return player;
1489
  };
1490
 
1491
+ player.removeCuepoint = function(cue) {
1492
+ var idx = player.cuepoints.indexOf(cue),
1493
+ segment = segmentForCue(cue);
1494
+ if (idx === -1) return;
1495
+ player.cuepoints = player.cuepoints.slice(0, idx).concat(player.cuepoints.slice(idx+1));
1496
 
1497
+ var sIdx = segments[segment].indexOf(cue);
1498
+ if (sIdx === -1) return;
1499
+ segments[segment] = segments[segment].slice(0, sIdx).concat(segments[segment].slice(sIdx+1));
1500
+ return player;
1501
+ };
 
 
 
 
 
1502
 
1503
+ function segmentForCue(cue) {
1504
+ var time = cue && !isNaN(cue.time) ? cue.time : cue;
1505
+ if (time < 0) time = player.video.duration + time;
1506
+ return Math.round(time/0.125)*0.125;
1507
+ }
1508
 
1509
+ });
1510
 
1511
+ },{"../common":1,"../flowplayer":28,"bean":31}],9:[function(_dereq_,module,exports){
1512
+ 'use strict';
1513
+ var flowplayer = _dereq_('../flowplayer'),
1514
+ bean = _dereq_('bean'),
1515
+ common = _dereq_('../common'),
1516
+ clipboard = _dereq_('./util/clipboard');
 
 
 
1517
 
1518
+ flowplayer(function(player, root) {
1519
 
1520
+ // no embedding
1521
+ if (player.conf.embed === false || player.conf.share === false) return;
1522
 
1523
+ var btnContainer = common.find('.fp-share-menu', root)[0],
1524
+ trigger = common.createElement('a', { "class": "fp-icon fp-embed", title: 'Copy to your site'}, 'Embed');
1525
 
1526
+ common.append(btnContainer, trigger);
1527
+ //ui.appendChild(target);
1528
 
1529
+ player.embedCode = function() {
1530
+ var embedConf = player.conf.embed || {},
1531
+ video = player.video,
1532
+ width = embedConf.width || video.width || common.width(root),
1533
+ height = embedConf.height || video.height || common.height(root),
1534
+ ratio = player.conf.ratio,
1535
+ itrunc = '<iframe src="' + player.shareUrl(true) + '" allowfullscreen style="border:none;';
1536
+
1537
+ if (embedConf.width || embedConf.height) {
1538
+ if (!isNaN(width)) width += 'px';
1539
+ if (!isNaN(height)) height += 'px';
1540
+ return itrunc + 'width:' + width + ';height:' + height + ';"></iframe>';
1541
+ }
1542
+
1543
+ if (!ratio || player.conf.adaptiveRatio) ratio = height / width;
1544
+ return '<div style="position:relative;width:100%;display:inline-block;">' + itrunc + 'position:absolute;top:0;left:0;width:100%;height:100%;"></iframe><div style="padding-top:' + (ratio * 100) + '%;"></div></div>';
1545
+ };
1546
 
1547
+ bean.on(root, 'click', '.fp-embed', function() {
1548
+ clipboard(player.embedCode(), function() {
1549
+ player.message('The embed code is now on your clipboard', 2000);
1550
+ }, function() {
1551
+ player.textarea(player.embedCode(), 'Copy the code below to embed your video');
1552
+ });
1553
+ });
1554
 
1555
+ });
 
1556
 
1557
+ },{"../common":1,"../flowplayer":28,"./util/clipboard":27,"bean":31}],10:[function(_dereq_,module,exports){
1558
+ 'use strict';
1559
+ /**
1560
+ * Mimimal jQuery-like event emitter implementation
1561
+ */
1562
+ module.exports = function(obj, elem) {
1563
+ if (!elem) elem = document.createElement('div'); //In this case we always want to trigger (Custom)Events on dom element
1564
+ var handlers = {}, eventArguments = {};
1565
+
1566
+ var listenEvent = function(type, hndlr, disposable) {
1567
+ var actualEvent = type.split('.')[0]; //Strip namespace
1568
+ var internalHandler = function(ev) {
1569
+ if (disposable) {
1570
+ elem.removeEventListener(actualEvent, internalHandler);
1571
+ handlers[type].splice(handlers[type].indexOf(internalHandler), 1);
1572
+ }
1573
+ var args = [ev].concat(eventArguments[ev.timeStamp + ev.type] || []);
1574
+ if (hndlr) hndlr.apply(undefined, args);
1575
+ };
1576
+ elem.addEventListener(actualEvent, internalHandler);
1577
+
1578
+ //Store handlers for unbinding
1579
+ if (!handlers[type]) handlers[type] = [];
1580
+ handlers[type].push(internalHandler);
1581
+ };
1582
+
1583
+ obj.on = obj.bind = function(typ, hndlr) {
1584
+ var types = typ.split(' ');
1585
+ types.forEach(function(type) {
1586
+ listenEvent(type, hndlr);
1587
+ });
1588
+ return obj; //for chaining
1589
+ };
1590
+
1591
+ obj.one = function(typ, hndlr) {
1592
+ var types = typ.split(' ');
1593
+ types.forEach(function(type) {
1594
+ listenEvent(type, hndlr, true);
1595
+ });
1596
+ return obj;
1597
+ };
1598
+
1599
+ // Function to check if all items in toBeContained array are in the containing array
1600
+ var containsAll = function(containing, toBeContained) {
1601
+ return toBeContained.filter(function(i) {
1602
+ return containing.indexOf(i) === -1;
1603
+ }).length === 0;
1604
+ };
1605
+
1606
+
1607
+ obj.off = obj.unbind = function(typ) {
1608
+ var types = typ.split(' ');
1609
+ types.forEach(function(type) {
1610
+ var typeNameSpaces = type.split('.').slice(1),
1611
+ actualType = type.split('.')[0];
1612
+ Object.keys(handlers).filter(function(t) {
1613
+ var handlerNamespaces = t.split('.').slice(1);
1614
+ return (!actualType || t.indexOf(actualType) === 0) && containsAll(handlerNamespaces, typeNameSpaces);
1615
+ }).forEach(function(t) {
1616
+ var registererHandlers = handlers[t],
1617
+ actualEvent = t.split('.')[0];
1618
+ handlers[t] = registererHandlers.filter(function(hndlr) {
1619
+ elem.removeEventListener(actualEvent, hndlr);
1620
+ return false;
1621
+ });
1622
+ });
1623
+ });
1624
+ return obj;
1625
+ };
1626
+
1627
+ obj.trigger = function(typ, args, returnEvent) {
1628
+ if (!typ) return;
1629
+ args = (args || []).length ? args || [] : [args];
1630
+ var event = document.createEvent('Event'), typStr;
1631
+ typStr = typ.type || typ;
1632
+ event.initEvent(typStr, false, true);
1633
+ if (Object.defineProperty) event.preventDefault = function() {
1634
+ Object.defineProperty(this, 'defaultPrevented', { get: function() { return true; } });
1635
+ };
1636
+ eventArguments[event.timeStamp + event.type] = args;
1637
+ elem.dispatchEvent(event);
1638
+ return returnEvent ? event : obj;
1639
+ };
1640
+ };
1641
 
 
 
1642
 
1643
+ module.exports.EVENTS = [
1644
+ 'beforeseek',
1645
+ 'disable',
1646
+ 'error',
1647
+ 'finish',
1648
+ 'fullscreen',
1649
+ 'fullscreen-exit',
1650
+ 'load',
1651
+ 'mute',
1652
+ 'pause',
1653
+ 'progress',
1654
+ 'ready',
1655
+ 'resume',
1656
+ 'seek',
1657
+ 'speed',
1658
+ 'stop',
1659
+ 'unload',
1660
+ 'volume',
1661
+ 'boot',
1662
+ 'shutdown'
1663
+ ];
1664
+
1665
+ },{}],11:[function(_dereq_,module,exports){
1666
+ 'use strict';
1667
+
1668
+ var flowplayer = _dereq_('../flowplayer')
1669
+ , common = _dereq_('../common')
1670
+ , bean = _dereq_('bean');
1671
 
1672
+ flowplayer(function(api, root) {
1673
+ var c = api.conf;
1674
+
1675
+ if (c.share === false || !c.facebook) return;
1676
+
1677
+ api.facebook = function() {
1678
+ var left
1679
+ , top
1680
+ , width = 550
1681
+ , height = 420
1682
+ , winHeight = screen.height
1683
+ , winWidth = screen.width
1684
+ , windowOptions = 'scrollbars=yes,resizable=yes,toolbar=no,location=yes'
1685
+ , shareUrl = typeof c.facebook === 'string' ? c.facebook : window.location.toString();
1686
+ left = Math.round((winWidth / 2) - (width / 2));
1687
+ top = 0;
1688
+ if (winHeight > height) {
1689
+ top = Math.round((winHeight / 2) - (height / 2));
1690
+ }
1691
+ window.open(
1692
+ 'https://www.facebook.com/sharer.php?s=100&p[url]=' + encodeURIComponent(shareUrl),
1693
+ 'sharer',
1694
+ windowOptions + ',width=' + width + ',height=' + height + ',left=' + left + ',top=' + top
1695
+ );
1696
+ };
1697
+
1698
+ var btnContainer = common.find('.fp-share-menu', root)[0]
1699
+ , trigger = common.createElement('a', { "class": "fp-icon fp-facebook"}, 'Facebook');
1700
+
1701
+ common.append(btnContainer, trigger);
1702
+
1703
+ bean.on(root, 'click', '.fp-facebook', function() {
1704
+ api.facebook();
1705
+ });
1706
+ });
1707
 
1708
+ },{"../common":1,"../flowplayer":28,"bean":31}],12:[function(_dereq_,module,exports){
1709
+ 'use strict';
1710
+ var flowplayer = _dereq_('../flowplayer'),
1711
+ bean = _dereq_('bean'),
1712
+ common = _dereq_('../common'),
1713
+ FS_ENTER = "fullscreen",
1714
+ FS_EXIT = "fullscreen-exit",
1715
+ FULL_PLAYER,
1716
+ FS_SUPPORT = flowplayer.support.fullscreen,
1717
+ ua = navigator.userAgent.toLowerCase(),
1718
+ IS_SAFARI = /(safari)[ \/]([\w.]+)/.exec(ua) && !/(chrome)[ \/]([\w.]+)/.exec(ua);
1719
 
 
 
 
 
 
 
 
1720
 
1721
+ // esc button
1722
+ bean.on(document, "fullscreenchange.ffscr webkitfullscreenchange.ffscr mozfullscreenchange.ffscr MSFullscreenChange.ffscr", function(e) {
1723
+ var el = document.webkitCurrentFullScreenElement || document.mozFullScreenElement || document.fullscreenElement || document.msFullscreenElement || e.target;
1724
+ if (!FULL_PLAYER && (!el.parentNode || !el.parentNode.getAttribute('data-flowplayer-instance-id'))) return;
1725
+ var player = FULL_PLAYER || flowplayer(el.parentNode);
1726
+ if (el && !FULL_PLAYER) {
1727
+ FULL_PLAYER = player.trigger(FS_ENTER, [el]);
1728
+ } else {
1729
+ FULL_PLAYER.trigger(FS_EXIT, [FULL_PLAYER]);
1730
+ FULL_PLAYER = null;
1731
+ }
1732
+ });
1733
 
1734
+ flowplayer(function(player, root) {
 
 
 
 
1735
 
1736
+ var wrapper = common.createElement('div', {className: 'fp-player'});
1737
+ Array.prototype.map.call(root.children, common.identity).forEach(function(el) {
1738
+ if (common.matches(el, '.fp-ratio,script')) return;
1739
+ wrapper.appendChild(el);
1740
+ });
1741
+ root.appendChild(wrapper);
 
1742
 
1743
+ if (!player.conf.fullscreen) return;
1744
 
1745
+ var win = window,
1746
+ scrollY,
1747
+ scrollX;
1748
 
1749
+ player.isFullscreen = false;
1750
 
1751
+ player.fullscreen = function(flag) {
 
 
1752
 
1753
+ if (player.disabled) return;
 
 
1754
 
1755
+ if (flag === undefined) flag = !player.isFullscreen;
1756
 
1757
+ if (flag) {
1758
+ scrollY = win.scrollY;
1759
+ scrollX = win.scrollX;
1760
+ }
1761
 
1762
+ if (FS_SUPPORT) {
 
 
1763
 
1764
+ if (flag) {
1765
+ ['requestFullScreen', 'webkitRequestFullScreen', 'mozRequestFullScreen', 'msRequestFullscreen'].forEach(function(fName) {
1766
+ if (typeof wrapper[fName] === 'function') {
1767
+ wrapper[fName](Element.ALLOW_KEYBOARD_INPUT);
1768
+ if (IS_SAFARI && !document.webkitCurrentFullScreenElement && !document.mozFullScreenElement) { // Element.ALLOW_KEYBOARD_INPUT not allowed
1769
+ wrapper[fName]();
1770
  }
1771
+ return false;
1772
+ }
1773
+ });
1774
 
1775
+ } else {
1776
+ ['exitFullscreen', 'webkitCancelFullScreen', 'mozCancelFullScreen', 'msExitFullscreen'].forEach(function(fName) {
1777
+ if (typeof document[fName] === 'function') {
1778
+ document[fName]();
1779
+ return false;
1780
+ }
1781
+ });
1782
+ }
1783
 
1784
+ } else {
1785
+ player.trigger(flag ? FS_ENTER : FS_EXIT, [player]);
1786
+ }
1787
 
1788
+ return player;
1789
+ };
1790
 
1791
+ var lastClick;
1792
 
1793
+ player.on("mousedown.fs", function() {
1794
+ if (+new Date() - lastClick < 150 && player.ready) player.fullscreen();
1795
+ lastClick = +new Date();
1796
+ });
1797
 
1798
+ player.on(FS_ENTER, function() {
1799
+ common.addClass(root, 'is-fullscreen');
1800
+ common.toggleClass(root, 'fp-minimal-fullscreen', common.hasClass(root, 'fp-minimal'));
1801
+ common.removeClass(root, 'fp-minimal');
1802
 
1803
+ if (!FS_SUPPORT) common.css(root, 'position', 'fixed');
1804
+ player.isFullscreen = true;
 
 
 
 
 
 
1805
 
1806
+ }).on(FS_EXIT, function() {
1807
+ var oldOpacity;
1808
+ common.toggleClass(root, 'fp-minimal', common.hasClass(root, 'fp-minimal-fullscreen'));
1809
+ common.removeClass(root, 'fp-minimal-fullscreen');
1810
+ if (!FS_SUPPORT && player.engine === "html5") {
1811
+ oldOpacity = root.css('opacity') || '';
1812
+ common.css(root, 'opacity', 0);
1813
+ }
1814
+ if (!FS_SUPPORT) common.css(root, 'position', '');
1815
 
1816
+ common.removeClass(root, 'is-fullscreen');
1817
+ if (!FS_SUPPORT && player.engine === "html5") setTimeout(function() { root.css('opacity', oldOpacity); });
1818
+ player.isFullscreen = false;
1819
+ win.scrollTo(scrollX, scrollY);
1820
+ }).on('unload', function() {
1821
+ if (player.isFullscreen) player.fullscreen();
1822
+ });
1823
 
1824
+ player.on('shutdown', function() {
1825
+ FULL_PLAYER = null;
 
1826
  });
1827
 
1828
+ });
1829
 
1830
+ },{"../common":1,"../flowplayer":28,"bean":31}],13:[function(_dereq_,module,exports){
1831
+ 'use strict';
1832
+ var flowplayer = _dereq_('../flowplayer'),
1833
+ bean = _dereq_('bean'),
1834
+ focused,
1835
+ focusedRoot,
1836
+ IS_HELP = "is-help",
1837
+ common = _dereq_('../common');
1838
 
1839
+ // keyboard. single global listener
1840
+ bean.on(document, "keydown.fp", function(e) {
1841
 
1842
+ var el = focused,
1843
+ metaKeyPressed = e.ctrlKey || e.metaKey || e.altKey,
1844
+ key = e.which,
1845
+ conf = el && el.conf;
1846
 
1847
+ if (!el || !conf.keyboard || el.disabled) return;
 
 
 
 
 
 
 
1848
 
1849
+ // help dialog (shift key not truly required)
1850
+ if ([63, 187, 191].indexOf(key) != -1) {
1851
+ common.toggleClass(focusedRoot, IS_HELP);
1852
+ return false;
1853
+ }
1854
 
1855
+ // close help / unload
1856
+ if (key == 27 && common.hasClass(focusedRoot, IS_HELP)) {
1857
+ common.toggleClass(focusedRoot, IS_HELP);
1858
+ return false;
1859
+ }
1860
 
1861
+ if (!metaKeyPressed && el.ready) {
 
 
 
 
 
 
 
 
1862
 
1863
+ e.preventDefault();
 
1864
 
1865
+ // slow motion / fast forward
1866
+ if (e.shiftKey) {
1867
+ if (key == 39) el.speed(true);
1868
+ else if (key == 37) el.speed(false);
1869
+ return;
1870
+ }
1871
 
1872
+ // 1, 2, 3, 4 ..
1873
+ if (key < 58 && key > 47) return el.seekTo(key - 48);
1874
 
1875
+ switch (key) {
1876
+ case 38: case 75: el.volume(el.volumeLevel + 0.15); break; // volume up
1877
+ case 40: case 74: el.volume(el.volumeLevel - 0.15); break; // volume down
1878
+ case 39: case 76: el.seeking = true; el.seek(true); break; // forward
1879
+ case 37: case 72: el.seeking = true; el.seek(false); break; // backward
1880
+ case 190: el.seekTo(); break; // to last seek position
1881
+ case 32: el.toggle(); break; // spacebar
1882
+ case 70: if(conf.fullscreen) el.fullscreen(); break; // toggle fullscreen
1883
+ case 77: el.mute(); break; // mute
1884
+ case 81: el.unload(); break; // unload/stop
1885
+ }
1886
 
1887
+ }
 
 
1888
 
1889
+ });
 
 
 
 
 
 
 
1890
 
1891
+ flowplayer(function(api, root) {
1892
 
1893
+ // no keyboard configured
1894
+ if (!api.conf.keyboard) return;
1895
 
1896
+ // hover
1897
+ bean.on(root, "mouseenter mouseleave", function(e) {
1898
+ focused = !api.disabled && e.type == 'mouseover' ? api : 0;
1899
+ if (focused) focusedRoot = root;
1900
+ });
1901
 
1902
+ var speedhelp = flowplayer.support.video && api.conf.engine !== "flash" &&
1903
+ !!document.createElement('video').playbackRate ?
1904
+ '<p><em>shift</em> + <em>&#8592;</em><em>&#8594;</em>slower / faster</p>' : '';
1905
 
1906
+ // TODO: add to player-layout.html
1907
+ root.appendChild(common.createElement('div', { className: 'fp-help' }, '\
1908
+ <a class="fp-close"></a>\
1909
+ <div class="fp-help-section fp-help-basics">\
1910
+ <p><em>space</em>play / pause</p>\
1911
+ <p><em>q</em>unload | stop</p>\
1912
+ <p><em>f</em>fullscreen</p>' + speedhelp + '\
1913
+ </div>\
1914
+ <div class="fp-help-section">\
1915
+ <p><em>&#8593;</em><em>&#8595;</em>volume</p>\
1916
+ <p><em>m</em>mute</p>\
1917
+ </div>\
1918
+ <div class="fp-help-section">\
1919
+ <p><em>&#8592;</em><em>&#8594;</em>seek</p>\
1920
+ <p><em>&nbsp;. </em>seek to previous\
1921
+ </p><p><em>1</em><em>2</em>&hellip; <em>6</em> seek to 10%, 20% &hellip; 60% </p>\
1922
+ </div>\
1923
+ '));
 
 
 
 
 
 
 
1924
 
1925
+ bean.on(root, 'click', '.fp-close', function() {
1926
+ common.toggleClass(root, IS_HELP);
1927
+ });
 
 
 
1928
 
1929
+ api.bind('shutdown', function() {
1930
+ if (focusedRoot == root) focusedRoot = null;
1931
+ });
 
 
 
 
1932
 
1933
+ });
 
 
 
 
1934
 
 
 
 
1935
 
1936
+ },{"../common":1,"../flowplayer":28,"bean":31}],14:[function(_dereq_,module,exports){
1937
+ var flowplayer = _dereq_('../flowplayer')
1938
+ , common = _dereq_('../common')
1939
+ , bean = _dereq_('bean');
1940
 
1941
+ flowplayer(function(api, root) {
1942
+ api.showMenu = function(menu, triggerElement) {
1943
+ var ui = common.find('.fp-ui', root)[0];
1944
+ common.toggleClass(menu, 'fp-active', true);
1945
+ setTimeout(function() {
1946
+ bean.one(document, 'click', function() {
1947
+ api.hideMenu(menu);
1948
+ });
1949
+ });
1950
+ var coordinates = triggerElement;
1951
+ if (triggerElement && triggerElement.tagName) {
1952
+ coordinates = {
1953
+ left: common.offset(triggerElement).left,
1954
+ rightFallbackOffset: common.width(triggerElement),
1955
+ top: common.offset(triggerElement).top + common.height(triggerElement)
1956
+ };
1957
+ }
1958
+ if (!coordinates) return;
1959
+ coordinates.rightFallbackOffset = coordinates.rightFallbackOffset || 0;
1960
+ var top = coordinates.top - common.offset(ui).top
1961
+ , left = coordinates.left - common.offset(ui).left
1962
+ if (common.width(menu) + left > common.width(ui)) left = left - common.width(menu) + coordinates.rightFallbackOffset;
1963
+ if (common.height(menu) + top > common.height(ui)) top = top - common.height(menu);
1964
+ common.css(menu, {
1965
+ top: top + 'px',
1966
+ left: left + 'px'
1967
+ });
1968
+ };
1969
+
1970
+ api.hideMenu = function(menu) {
1971
+ common.toggleClass(menu, 'fp-active', false);
1972
+ };
1973
+ });
1974
 
1975
+ },{"../common":1,"../flowplayer":28,"bean":31}],15:[function(_dereq_,module,exports){
1976
+ var flowplayer = _dereq_('../flowplayer')
1977
+ , common = _dereq_('../common')
1978
+ , bean = _dereq_('bean');
1979
+ flowplayer(function(api, root) {
1980
+ var header = common.find('.fp-header', root)[0]
1981
+ , ui = common.find('.fp-ui', root)[0];
1982
+
1983
+ api.message = function(txt, ttl) {
1984
+ var msg = createMessage(txt);
1985
+ var dismiss = function() {
1986
+ common.toggleClass(msg, 'fp-shown');
1987
+ setTimeout(function() { removeMessage(msg); }, 500);
1988
+ };
1989
+ if (ttl) setTimeout(dismiss, ttl);
1990
+ return dismiss;
1991
+ }
1992
 
1993
+ api.textarea = function(txt) {
1994
+ var area = document.createElement('textarea');
1995
+ area.value = txt;
1996
+ area.className = 'fp-textarea';
1997
+ ui.appendChild(area);
1998
+ bean.on(document, 'click.fptextarea', function(ev) {
1999
+ if (ev.target === area) return area.select();
2000
+ ev.stopPropagation();
2001
+ ev.preventDefault();
2002
+ common.removeNode(area);
2003
+ bean.off(document, 'click.fptextarea');
2004
+ });
2005
+ }
2006
 
 
 
2007
 
2008
+ function createMessage(txt) {
2009
+ var msg = common.createElement('div', {
2010
+ className: 'fp-message'
2011
+ }, txt);
2012
+ ui.insertBefore(msg, header);
2013
+ setTimeout(function() { common.toggleClass(msg, 'fp-shown'); });
2014
+ return msg;
2015
+ }
2016
 
2017
+ function removeMessage(msg) {
2018
+ common.removeNode(msg);
2019
+ }
2020
+ });
2021
 
2022
+ },{"../common":1,"../flowplayer":28,"bean":31}],16:[function(_dereq_,module,exports){
2023
+ 'use strict';
2024
+ var flowplayer = _dereq_('../flowplayer'),
2025
+ isIeMobile = /IEMobile/.test(window.navigator.userAgent),
2026
+ common = _dereq_('../common'),
2027
+ bean = _dereq_('bean'),
2028
+ format = _dereq_('./ui').format,
2029
+ UA = window.navigator.userAgent;
2030
+ if (flowplayer.support.touch || isIeMobile) {
2031
 
2032
+ flowplayer(function(player, root) {
2033
+ var isAndroid = /Android/.test(UA) && !/Firefox/.test(UA) && !/Opera/.test(UA),
2034
+ isSilk = /Silk/.test(UA),
2035
+ androidVer = isAndroid ? parseFloat(/Android\ (\d\.\d)/.exec(UA)[1], 10) : 0;
 
2036
 
2037
+ // custom load for android
2038
+ if (isAndroid && !isIeMobile) {
2039
+ if (!/Chrome/.test(UA) && androidVer < 4) {
2040
+ var originalLoad = player.load;
2041
+ player.load = function() {
2042
+ var ret = originalLoad.apply(player, arguments);
2043
+ player.trigger('ready', [player, player.video]);
2044
+ return ret;
2045
+ };
2046
+ }
2047
+ var timer, currentTime = 0;
2048
+ var resumeTimer = function(api) {
2049
+ timer = setInterval(function() {
2050
+ api.video.time = ++currentTime;
2051
+ api.trigger('progress', [api, currentTime]);
2052
+ }, 1000);
2053
  };
2054
+ player.bind('ready pause unload', function() {
2055
+ if (timer) {
2056
+ clearInterval(timer);
2057
+ timer = null;
2058
+ }
2059
+ });
2060
+ player.bind('ready', function() {
2061
+ currentTime = 0;
2062
+ });
2063
+ player.bind('resume', function(ev, api) {
2064
+ if (!api.live) return;
2065
+ if (currentTime) { return resumeTimer(api); }
2066
+ player.one('progress', function(ev, api, t) {
2067
+ if (t === 0) { // https://github.com/flowplayer/flowplayer/issues/727
2068
+ resumeTimer(api);
2069
+ }
2070
+ });
2071
+ });
2072
+ }
2073
 
2074
+ // hide volume
2075
+ if (!flowplayer.support.volume) {
2076
+ common.addClass(root, 'no-volume');
2077
+ }
2078
+ common.addClass(root, 'is-touch');
2079
+ if (player.sliders && player.sliders.timeline) player.sliders.timeline.disableAnimation();
2080
 
2081
+ if (!flowplayer.support.inlineVideo || player.conf.native_fullscreen) player.conf.nativesubtitles = true;
2082
 
2083
+ // fake mouseover effect with click
2084
+ var hasMoved = false;
2085
+ bean.on(root, 'touchmove', function() {
2086
+ hasMoved = true;
2087
+ });
2088
+ bean.on(root, 'touchend click', function(e) {
2089
+ if (hasMoved) { //not intentional, most likely scrolling
2090
+ hasMoved = false;
2091
+ return;
2092
+ }
2093
+
2094
+ if (player.playing && !common.hasClass(root, 'is-mouseover')) {
2095
+ common.addClass(root, 'is-mouseover');
2096
+ common.removeClass(root, 'is-mouseout');
2097
+ e.preventDefault();
2098
+ e.stopPropagation();
2099
+ return;
2100
+ }
2101
+
2102
+ if (!player.playing && !player.splash && common.hasClass(root, 'is-mouseout') && !common.hasClass(root, 'is-mouseover')) {
2103
+ setTimeout(function() {
2104
+ if (!player.disabled && !player.playing && !player.splash) {
2105
+ player.resume();
2106
+ }
2107
+ }, 400);
2108
+ }
2109
 
 
2110
 
2111
  });
2112
 
2113
+ // native fullscreen
2114
+ if (!flowplayer.support.fullscreen && player.conf.native_fullscreen && typeof document.createElement('video').webkitEnterFullScreen === 'function') {
2115
+ var oldFullscreen = player.fullscreen;
2116
+ player.fullscreen = function() {
2117
+ var video = common.find('video.fp-engine', root)[0];
2118
+ if (!video) return oldFullscreen.apply(player);
2119
+ player.trigger('fullscreen', [player]);
2120
+ bean.on(document, 'webkitfullscreenchange.nativefullscreen', function() {
2121
+ if (document.webkitFullscreenElement !== video) return;
2122
+ bean.off(document, '.nativefullscreen');
2123
+ bean.on(document, 'webkitfullscreenchange.nativefullscreen', function() {
2124
+ if (document.webkitFullscreenElement) return;
2125
+ bean.off(document, '.nativefullscreen');
2126
+ player.trigger('fullscreen-exit', [player]);
2127
+ });
2128
+ });
2129
+ video.webkitEnterFullScreen();
2130
+ bean.one(video, 'webkitendfullscreen', function() {
2131
+ bean.off(document, 'fullscreenchange.nativefullscreen');
2132
+ player.trigger('fullscreen-exit', [player]);
2133
+ common.prop(video, 'controls', true);
2134
+ common.prop(video, 'controls', false);
2135
+ });
2136
+ };
2137
+ }
2138
 
 
2139
 
2140
+ // Android browser gives video.duration == 1 until second 'timeupdate' event
2141
+ if (isAndroid || isSilk) player.bind("ready", function() {
 
 
2142
 
2143
+ var video = common.find('video.fp-engine', root)[0];
2144
+ bean.one(video, 'canplay', function() {
2145
+ video.play();
2146
+ });
2147
+ video.play();
2148
 
2149
+ player.bind("progress.dur", function() {
2150
+ if (player.live || player.conf.live) return;
2151
+ var duration = video.duration;
2152
 
2153
+ if (duration !== 1) {
2154
+ player.video.duration = duration;
2155
+ common.find(".fp-duration", root)[0].innerHTML = format(duration);
2156
+ player.unbind("progress.dur");
2157
+ }
2158
+ });
2159
+ });
2160
 
 
2161
 
2162
+ });
 
 
 
2163
 
 
2164
  }
2165
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2166
 
2167
+ },{"../common":1,"../flowplayer":28,"./ui":24,"bean":31}],17:[function(_dereq_,module,exports){
2168
+ 'use strict';
2169
+ var flowplayer = _dereq_('../flowplayer'),
2170
+ extend = _dereq_('extend-object'),
2171
+ bean = _dereq_('bean'),
2172
+ common = _dereq_('../common'),
2173
+ Resolve = _dereq_('./resolve'),
2174
+ resolver = new Resolve(),
2175
+ $ = window.jQuery,
2176
+ externalRe = /^#/;
2177
+ flowplayer(function(player, root) {
2178
 
2179
+ var conf = extend({ active: 'is-active', advance: true, query: ".fp-playlist a" }, player.conf)
2180
+ , klass = conf.active
2181
+ , ui = common.find('.fp-ui', root)[0];
2182
 
2183
+ var hasCustomPlaylist = common.hasClass(root, 'fp-custom-playlist') || !!conf.customPlaylist;
2184
+ common.toggleClass(root, 'fp-custom-playlist', hasCustomPlaylist);
2185
+ common.toggleClass(root, 'fp-default-playlist', !hasCustomPlaylist);
 
 
2186
 
2187
+ // getters
2188
+ function els() {
2189
+ return common.find(conf.query, queryRoot());
2190
+ }
2191
 
2192
+ function queryRoot() {
2193
+ if (externalRe.test(conf.query)) return;
2194
+ return root;
 
 
 
2195
  }
2196
 
2197
+ function active() {
2198
+ return common.find(conf.query + "." + klass, queryRoot());
2199
  }
2200
 
 
 
2201
 
2202
+ player.play = function(i) {
2203
+ if (i === undefined) return player.resume();
2204
+ if (typeof i === 'number' && !player.conf.playlist[i]) return player;
2205
+ else if (typeof i != 'number') return player.load.apply(null, arguments);
2206
+ var arg = extend({index: i}, player.conf.playlist[i]);
2207
+ if (i === player.video.index) return player.load(arg, function() { player.resume(); });
2208
+ player.off('beforeresume.fromfirst'); // Don't start from beginning if clip explicitely chosen
2209
+ player.load(arg, function() {
2210
+ player.video.index = i;
2211
+ });
2212
+ return player;
2213
+ };
2214
 
2215
+ player.next = function(e) {
2216
+ if (e) e.preventDefault();
2217
+ var current = player.video.index;
2218
+ if (current != -1) {
2219
+ current = current === player.conf.playlist.length - 1 ? 0 : current + 1;
2220
+ player.play(current);
2221
+ }
2222
+ return player;
2223
+ };
2224
 
2225
+ player.prev = function(e) {
2226
+ if (e) e.preventDefault();
2227
+ var current = player.video.index;
2228
+ if (current != -1) {
2229
+ current = current === 0 ? player.conf.playlist.length - 1 : current - 1;
2230
+ player.play(current);
2231
+ }
2232
+ return player;
2233
+ };
2234
 
2235
+ player.setPlaylist = function(items) {
2236
+ player.conf.playlist = items;
2237
+ delete player.video.index;
2238
+ generatePlaylist();
2239
+ return player;
2240
+ };
2241
 
2242
+ player.addPlaylistItem = function(item) {
2243
+ return player.setPlaylist(player.conf.playlist.concat([item]));
2244
+ };
2245
 
2246
+ player.removePlaylistItem = function(idx) {
2247
+ var pl = player.conf.playlist;
2248
+ return player.setPlaylist(pl.slice(0, idx).concat(pl.slice(idx+1)));
2249
+ };
2250
 
2251
+ bean.on(root, 'click', '.fp-next', player.next);
2252
+ bean.on(root, 'click', '.fp-prev', player.prev);
2253
 
2254
+ if (conf.advance) {
2255
+ player.off("finish.pl").on("finish.pl", function(e, player) {
2256
+ // clip looping
2257
+ if (player.video.loop) return player.seek(0, function() { player.resume(); });
2258
+ // next clip is found or loop
2259
+ var next = player.video.index >= 0 ? player.video.index + 1 : undefined;
2260
+ if (next < player.conf.playlist.length || conf.loop) {
2261
+ next = next === player.conf.playlist.length ? 0 : next;
2262
+ common.removeClass(root, 'is-finished');
2263
+ setTimeout(function() { // Let other finish callbacks fire first
2264
+ player.play(next);
2265
+ });
2266
 
2267
+ // stop to last clip, play button starts from 1:st clip
2268
+ } else {
2269
 
2270
+ // If we have multiple items in playlist, start from first
2271
+ if (player.conf.playlist.length > 1) {
2272
+ player.one("beforeresume.fromfirst", function(ev) {
2273
+ ev.preventDefault();
2274
+ player.play(0);
2275
+ });
2276
+ player.one('seek', function() { player.off('beforeresume.fromfirst'); });
2277
+ }
2278
+ }
2279
+ });
2280
+ }
2281
 
2282
+ function generatePlaylist() {
2283
+ var plEl = common.find('.fp-playlist', root)[0]
2284
+ if (!plEl) {
2285
+ plEl = common.createElement('div', {className: 'fp-playlist'});
2286
+ var cntrls = common.find('.fp-next,.fp-prev', root);
2287
+ if (!cntrls.length) common.insertAfter(root, common.find('video', root)[0], plEl);
2288
+ else cntrls[0].parentElement.insertBefore(plEl, cntrls[0]);
2289
+ }
2290
+ plEl.innerHTML = '';
2291
+ if (player.conf.playlist[0].length) { // FP5 style playlist
2292
+ player.conf.playlist = player.conf.playlist.map(function(itm) {
2293
+ if (typeof itm === 'string') {
2294
+ var type = itm.split(Resolve.TYPE_RE)[1];
2295
+ return {
2296
+ sources: [{
2297
+ type: type.toLowerCase() === 'm3u8' ? 'application/x-mpegurl' : 'video/' + type,
2298
+ src: itm
2299
+ }]
2300
+ };
2301
+ }
2302
+ return {
2303
+ sources: itm.map(function(src) {
2304
+ var s = {};
2305
+ Object.keys(src).forEach(function(k) {
2306
+ s.type = /mpegurl/i.test(k) ? 'application/x-mpegurl' : 'video/' + k;
2307
+ s.src = src[k];
2308
+ });
2309
+ return s;
2310
+ })
2311
+ };
2312
+ });
2313
+ }
2314
+ player.conf.playlist.forEach(function(item, i) {
2315
+ var href = item.sources[0].src;
2316
+ plEl.appendChild(common.createElement('a', {
2317
+ href: href,
2318
+ 'data-index': i
2319
+ }));
2320
+ });
2321
+ }
2322
 
2323
+ var playlistInitialized = false;
2324
+ if (player.conf.playlist.length) { // playlist configured by javascript, generate playlist
2325
+ playlistInitialized = true;
2326
+ generatePlaylist();
2327
+ if (!player.conf.clip || !player.conf.clip.sources.length) {
2328
+ player.conf.clip = player.conf.playlist[player.conf.startIndex || 0];
2329
+ }
2330
+ }
2331
 
2332
+ if (els().length && !playlistInitialized) { //generate playlist from existing elements
2333
+ player.conf.playlist = [];
2334
+ delete player.conf.startIndex;
2335
+ els().forEach(function(el) {
2336
+ var src = el.href;
2337
+ el.setAttribute('data-index', player.conf.playlist.length);
2338
+ var itm = resolver.resolve(src, player.conf.clip.sources);
2339
+ if ($) {
2340
+ extend(itm, $(el).data());
2341
+ }
2342
+ player.conf.playlist.push(itm);
2343
+ });
2344
+ }
2345
+
2346
+ common.find('.fp-prev,.fp-next,.fp-playlist', root).forEach(function(el) {
2347
+ ui.appendChild(el);
2348
+ });
2349
+
2350
+ /* click -> play */
2351
+ bean.on(externalRe.test(conf.query) ? document : root, "click", conf.query, function(e) {
2352
+ e.preventDefault();
2353
+ var el = e.currentTarget;
2354
+ var toPlay = Number(el.getAttribute('data-index'));
2355
+ if (toPlay != -1) {
2356
+ player.play(toPlay);
2357
+ }
2358
+ });
2359
+
2360
+ // highlight
2361
+ function videoIndex(video) {
2362
+ if (typeof video.index !== 'undefined') return video.index;
2363
+ if (typeof player.video.index !== 'undefined') return player.video.index;
2364
+ return player.conf.startIndex || 0;
2365
+ }
2366
+ player.on("load", function(e, api, video) {
2367
+ if (!player.conf.playlist.length) return;
2368
+ var prev = active()[0],
2369
+ prevIndex = prev && prev.getAttribute('data-index'),
2370
+ index = video.index = videoIndex(video),
2371
+ el = common.find(conf.query +'[data-index="' + index + '"]', queryRoot())[0],
2372
+ is_last = index == player.conf.playlist.length - 1;
2373
+ if (prev) common.removeClass(prev, klass);
2374
+ if (el) common.addClass(el, klass);
2375
+ // index
2376
+ common.removeClass(root, 'video' + prevIndex);
2377
+ common.addClass(root, 'video' + index);
2378
+ common.toggleClass(root, "last-video", is_last);
2379
+
2380
+ // video properties
2381
+ video.index = api.video.index = index;
2382
+ video.is_last = api.video.is_last = is_last;
2383
+
2384
+ // without namespace callback called only once. unknown rason.
2385
+ }).on("unload.pl", function() {
2386
+ if (!player.conf.playlist.length) return;
2387
+ active().forEach(function(el) {
2388
+ common.toggleClass(el, klass);
2389
+ });
2390
+ player.conf.playlist.forEach(function(itm, i) {
2391
+ common.removeClass(root, 'video' + i);
2392
+ });
2393
+ });
2394
 
2395
+ if (player.conf.playlist.length) {
2396
+ // disable single clip looping
2397
+ player.conf.loop = false;
2398
+ }
2399
 
 
 
 
2400
 
2401
+ });
 
 
2402
 
2403
+ },{"../common":1,"../flowplayer":28,"./resolve":19,"bean":31,"extend-object":36}],18:[function(_dereq_,module,exports){
2404
+ var flowplayer = _dereq_('../flowplayer')
2405
+ , common = _dereq_('../common')
2406
+ , bean = _dereq_('bean');
2407
 
2408
+ flowplayer(function(api, root) {
2409
+ var ui = common.find('.fp-ui', root)[0]
2410
+ , controlbar = common.find('.fp-controls', ui)[0];
2411
+
2412
+ bean.on(root, 'click', '.fp-qsel', function() {
2413
+ var menu = common.find('.fp-qsel-menu', root)[0];
2414
+ if (common.hasClass(menu, 'fp-active')) api.hideMenu();
2415
+ else api.showMenu(menu);
2416
+ });
2417
+
2418
+ bean.on(root, 'click', '.fp-qsel-menu a', function(ev) {
2419
+ var q = ev.target.getAttribute('data-quality');
2420
+ api.quality(q);
2421
+ });
2422
+
2423
+ api.quality = function(q) {
2424
+ q = isNaN(Number(q)) ? q : Number(q);
2425
+ api.trigger('quality', [api, q]);
2426
+ };
2427
+
2428
+ api.on('quality', function(_ev, _api, q) {
2429
+ selectQuality(q, _api.video.qualities);
2430
+ });
2431
+
2432
+ api.on('ready', function(_ev, _api, video) {
2433
+ removeMenu();
2434
+ if (!video.qualities || video.qualities.filter(function(q) {
2435
+ return typeof q.value !== 'undefined' ? q.value > -1 : true;
2436
+ }).length < 2) return;
2437
+ createMenu(video.qualities, video.quality);
2438
+ selectQuality(video.quality, video.qualities);
2439
+ });
2440
+
2441
+ function removeMenu() {
2442
+ common.find('.fp-qsel-menu', root).forEach(common.removeNode);
2443
+ common.find('.fp-qsel', root).forEach(common.removeNode);
2444
+ }
2445
 
2446
+ function createMenu(qualities) {
2447
+ controlbar.appendChild(common.createElement('strong', { className: 'fp-qsel' }, 'HD'));
2448
+ var menu = common.createElement('div', { className: 'fp-menu fp-qsel-menu' }, '<strong>Quality</strong>');
2449
+ qualities.forEach(function(q) {
2450
+ var a = document.createElement('a')
2451
+ , quality = typeof q.value !== 'undefined' ? q.value : q;
2452
+ a.setAttribute('data-quality', quality);
2453
+ a.innerHTML = q.label || q;
2454
+ menu.appendChild(a);
2455
+ });
2456
+ ui.appendChild(menu);
2457
+ }
2458
 
2459
+ function selectQuality(quality) {
2460
+ common.find('.fp-qsel-menu a', root).forEach(function(el) {
2461
+ common.toggleClass(el, 'fp-selected', el.getAttribute('data-quality') == quality);
2462
+ common.toggleClass(el, 'fp-color', el.getAttribute('data-quality') == quality);
2463
+ });
2464
+ }
2465
 
2466
+ });
 
2467
 
2468
+ },{"../common":1,"../flowplayer":28,"bean":31}],19:[function(_dereq_,module,exports){
2469
+ 'use strict';
2470
+ var TYPE_RE = /\.(\w{3,4})(\?.*)?$/i,
2471
+ extend = _dereq_('extend-object');
2472
 
2473
+ function parseSource(el) {
 
 
2474
 
2475
+ var src = el.attr("src"),
2476
+ type = el.attr("type") || "",
2477
+ suffix = src.split(TYPE_RE)[1];
2478
+ type = type.toLowerCase();
2479
+ return extend(el.data(), { src: src, suffix: suffix || type, type: type || suffix });
2480
+ }
2481
 
2482
+ function getType(typ) {
2483
+ if (/mpegurl/i.test(typ)) return 'application/x-mpegurl';
2484
+ return 'video/' + typ;
2485
+ }
2486
 
2487
+ /* Resolves video object from initial configuration and from load() method */
2488
+ module.exports = function URLResolver() {
2489
+ var self = this;
2490
 
2491
+ self.sourcesFromVideoTag = function(videoTag, $) {
2492
+ var sources = [];
2493
+ // initial sources
2494
+ $("source", videoTag).each(function() {
2495
+ sources.push(parseSource($(this)));
2496
+ });
2497
 
2498
+ if (!sources.length && videoTag.length) sources.push(parseSource(videoTag));
 
 
 
 
2499
 
2500
+ return sources;
2501
+ };
2502
 
 
 
2503
 
2504
+ self.resolve = function(video, sources) {
2505
+ if (!video) return { sources: sources };
 
2506
 
2507
+ if (typeof video == 'string') {
2508
+ video = { src: video, sources: [] };
2509
+ video.sources = (sources || []).map(function(source) {
2510
+ var suffix = source.src.split(TYPE_RE)[1];
2511
+ return {type: source.type, src: video.src.replace(TYPE_RE, '.' + suffix + "$2")};
2512
+ });
2513
+ }
2514
+
2515
+ if (video instanceof Array) {
2516
+ video = {
2517
+ sources: video.map(function(src) {
2518
+ if (src.type && src.src) return src;
2519
+ return Object.keys(src).reduce(function(m, typ) {
2520
+ return extend(m, {
2521
+ type: getType(typ),
2522
+ src: src[typ]
2523
+ });
2524
+ }, {});
2525
+ })
2526
+ };
2527
+ }
2528
 
2529
+ return video;
2530
+ };
2531
+ };
2532
 
2533
+ module.exports.TYPE_RE = TYPE_RE;
 
 
2534
 
2535
+ },{"extend-object":36}],20:[function(_dereq_,module,exports){
2536
+ 'use strict';
2537
 
2538
+ var flowplayer = _dereq_('../flowplayer')
2539
+ , common = _dereq_('../common')
2540
+ , extend = _dereq_('extend-object')
2541
+ , bean = _dereq_('bean');
2542
 
2543
+ flowplayer(function(api, root) {
2544
+ var c = api.conf;
2545
+ if (c.share === false) {
2546
+ common.find('.fp-share', root).forEach(common.removeNode);
2547
+ return;
2548
+ }
2549
 
2550
+ api.shareUrl = function(directEmbed) {
2551
+ if (directEmbed && c.embed && c.embed.iframe) return c.embed.iframe;
2552
+ if (typeof api.conf.share === 'string') return api.conf.share;
2553
+ var title = encodeURIComponent(api.video.title || (common.find('title')[0] || {}).innerHTML || 'Flowplayer video')
2554
+ , conf = encodeURIComponent(btoa(JSON.stringify(extend({}, api.conf, api.extensions))))
2555
+ , redirect = encodeURIComponent(window.location.toString())
2556
+ , baseUrl = directEmbed ? 'https://flowplayer.org/e/' : 'https://flowplayer.org/s/';
2557
+ return baseUrl + '?t=' + title + '&c=' + conf + '&r=' + redirect;
2558
+ };
2559
+
2560
+ var menu = common.createElement('div', { className: 'fp-menu fp-share-menu' }, '<strong>Share</strong>')
2561
+ , ui = common.find('.fp-ui', root)[0];
2562
+ ui.appendChild(menu);
2563
+
2564
+ var button = common.find('.fp-share', root)[0];
2565
+
2566
+ bean.on(root, 'click', '.fp-share', function(ev) {
2567
+ ev.preventDefault();
2568
+ if (common.hasClass(menu, 'fp-active')) api.hideMenu();
2569
+ else api.showMenu(menu,button);
2570
+ });
2571
+ });
2572
 
2573
+ },{"../common":1,"../flowplayer":28,"bean":31,"extend-object":36}],21:[function(_dereq_,module,exports){
2574
+ 'use strict';
2575
+ var flowplayer = _dereq_('../flowplayer'),
2576
+ common = _dereq_('../common'),
2577
+ bean = _dereq_('bean');
 
2578
 
2579
+ flowplayer.defaults.subtitleParser = function(txt) {
2580
+ var TIMECODE_RE = /^(([0-9]{2}:){1,2}[0-9]{2}[,.][0-9]{3}) --\> (([0-9]{2}:){1,2}[0-9]{2}[,.][0-9]{3})(.*)/;
 
 
2581
 
2582
+ function seconds(timecode) {
2583
+ var els = timecode.split(':');
2584
+ if (els.length == 2) els.unshift(0);
2585
+ return els[0] * 60 * 60 + els[1] * 60 + parseFloat(els[2].replace(',','.'));
2586
+ }
2587
 
2588
+ var entries = [];
2589
+ for (var i = 0, lines = txt.split("\n"), len = lines.length, entry = {}, title, timecode, text; i < len; i++) {
2590
+ timecode = TIMECODE_RE.exec(lines[i]);
2591
 
2592
+ if (timecode) {
 
 
2593
 
2594
+ // title
2595
+ title = lines[i - 1];
2596
+
2597
+ // text
2598
+ text = "<p>" + lines[++i] + "</p><br/>";
2599
+ while (typeof lines[++i] === 'string' && lines[i].trim() && i < lines.length) text += "<p>" + lines[i] + "</p><br/>";
2600
+
2601
+ // entry
2602
+ entry = {
2603
+ title: title,
2604
+ startTime: seconds(timecode[1]),
2605
+ endTime: seconds(timecode[3]),
2606
+ text: text
2607
+ };
2608
+ entries.push(entry);
2609
+ }
2610
+ }
2611
+ return entries;
2612
+ };
2613
+
2614
+ flowplayer(function(p, root) {
2615
+ var currentPoint, wrap,
2616
+ subtitleControl, subtitleMenu;
2617
+
2618
+ var createSubtitleControl = function() {
2619
+ subtitleControl = common.createElement('strong', { className: 'fp-cc' }, 'CC');
2620
+ subtitleMenu = common.createElement('div', {className: 'fp-menu fp-subtitle-menu'}, '<strong>Closed Captions</strong>');
2621
+ subtitleMenu.appendChild(common.createElement('a', {'data-subtitle-index': -1}, 'No subtitles'));
2622
+ (p.video.subtitles || []).forEach(function(st, i) {
2623
+ var srcLang = st.srclang || 'en',
2624
+ label = st.label || 'Default (' + srcLang + ')';
2625
+ var item = common.createElement('a', {'data-subtitle-index': i}, label);
2626
+ subtitleMenu.appendChild(item);
2627
+ });
2628
+ common.find('.fp-ui', root)[0].appendChild(subtitleMenu);
2629
+ common.find('.fp-controls', root)[0].appendChild(subtitleControl);
2630
+ return subtitleControl;
2631
+ };
2632
+
2633
+ bean.on(root, 'click', '.fp-cc', function() {
2634
+ //TODO fix
2635
+ common.toggleClass(subtitleMenu, 'fp-active');
2636
+ });
2637
+
2638
+ bean.on(root, 'click', '.fp-subtitle-menu [data-subtitle-index]', function(ev) {
2639
+ ev.preventDefault();
2640
+ var idx = ev.target.getAttribute('data-subtitle-index');
2641
+ if (idx === '-1') return p.disableSubtitles();
2642
+ p.loadSubtitles(idx);
2643
+ });
2644
+
2645
+ var createUIElements = function() {
2646
+ wrap = common.find('.fp-subtitle', root)[0];
2647
+ wrap = wrap || common.appendTo(common.createElement('div', {'class': 'fp-captions'}), common.find('.fp-player', root)[0]);
2648
+ Array.prototype.forEach.call(wrap.children, common.removeNode);
2649
+ common.find('.fp-subtitle-menu', root).forEach(common.removeNode);
2650
+ createSubtitleControl();
2651
+ };
2652
+
2653
+
2654
+ p.on('ready', function(ev, player, video) {
2655
+ var conf = player.conf;
2656
+ if (flowplayer.support.subtitles && conf.nativesubtitles && player.engine.engineName == 'html5') {
2657
+ var setMode = function(mode) {
2658
+ var tracks = common.find('video', root)[0].textTracks;
2659
+ if (!tracks.length) return;
2660
+ tracks[0].mode = mode;
2661
+ };
2662
+ if (!video.subtitles || !video.subtitles.length) return;
2663
+ var videoTag = common.find('video.fp-engine', root)[0];
2664
+ if (video.subtitles.some(function(st) { return !common.isSameDomain(st.src); })) common.attr(videoTag, 'crossorigin', 'anonymous');
2665
+ if (typeof videoTag.textTracks.addEventListener === 'function') videoTag.textTracks.addEventListener('addtrack', function() {
2666
+ setMode('disabled');
2667
+ setMode('showing');
2668
  });
2669
+ video.subtitles.forEach(function(st) {
2670
+ videoTag.appendChild(common.createElement('track', {
2671
+ kind: 'subtitles',
2672
+ srclang: st.srclang || 'en',
2673
+ label: st.label || 'en',
2674
+ src: st.src,
2675
+ 'default': st['default']
2676
+ }));
2677
  });
2678
+ return;
2679
+ }
2680
+
2681
+ player.subtitles = [];
2682
+
2683
+ createUIElements();
2684
+
2685
+ common.removeClass(root, 'has-menu');
2686
+
2687
+ p.disableSubtitles();
2688
+
2689
+ common.toggleClass(subtitleControl, 'fp-hidden', !video.subtitles || !video.subtitles.length);
2690
+ if (!video.subtitles || !video.subtitles.length) return;
2691
+
2692
+ var defaultSubtitle = video.subtitles.filter(function(one) {
2693
+ return one['default'];
2694
+ })[0];
2695
+ if (defaultSubtitle) player.loadSubtitles(video.subtitles.indexOf(defaultSubtitle));
2696
+ });
2697
+
2698
+ p.bind("cuepoint", function(e, api, cue) {
2699
+ if (cue.subtitle) {
2700
+ currentPoint = cue.index;
2701
+ common.html(wrap, cue.subtitle.text);
2702
+ common.addClass(wrap, 'fp-shown');
2703
+ } else if (cue.subtitleEnd) {
2704
+ common.removeClass(wrap, 'fp-shown');
2705
+ currentPoint = cue.index;
2706
+ }
2707
+ });
2708
+
2709
+ p.bind("seek", function(e, api, time) {
2710
+ // Clear future subtitles if seeking backwards
2711
+ if (currentPoint && p.cuepoints[currentPoint] && p.cuepoints[currentPoint].time > time) {
2712
+ common.removeClass(wrap, 'fp-shown');
2713
+ currentPoint = null;
2714
+ }
2715
+ (p.cuepoints || []).forEach(function(cue) {
2716
+ var entry = cue.subtitle;
2717
+ //Trigger cuepoint if start time before seek position and end time nonexistent or in the future
2718
+ if (entry && currentPoint != cue.index) {
2719
+ if (time >= cue.time && (!entry.endTime || time <= entry.endTime)) p.trigger("cuepoint", [p, cue]);
2720
+ } // Also handle cuepoints that act as the removal trigger
2721
+ else if (cue.subtitleEnd && time >= cue.time && cue.index == currentPoint + 1) p.trigger("cuepoint", [p, cue]);
2722
+ });
2723
+
2724
+ });
2725
+
2726
+ var setActiveSubtitleClass = function(idx) {
2727
+ common.toggleClass(common.find('a.fp-selected', subtitleMenu)[0], 'fp-selected');
2728
+ common.toggleClass(common.find('a[data-subtitle-index="' + idx + '"]', subtitleMenu)[0], 'fp-selected');
2729
+ };
2730
+
2731
+ p.disableSubtitles = function() {
2732
+ p.subtitles = [];
2733
+ (p.cuepoints || []).forEach(function(c) {
2734
+ if (c.subtitle || c.subtitleEnd) p.removeCuepoint(c);
2735
+ });
2736
+ if (wrap) Array.prototype.forEach.call(wrap.children, common.removeNode);
2737
+ setActiveSubtitleClass(-1);
2738
+ return p;
2739
+ };
2740
+
2741
+ p.loadSubtitles = function(i) {
2742
+ //First remove possible old subtitles
2743
+ p.disableSubtitles();
2744
+
2745
+ var st = p.video.subtitles[i];
2746
+
2747
+ var url = st.src;
2748
+ if (!url) return;
2749
+ setActiveSubtitleClass(i);
2750
+ common.xhrGet(url, function(txt) {
2751
+ var entries = p.conf.subtitleParser(txt);
2752
+ entries.forEach(function(entry) {
2753
+ var cue = { time: entry.startTime, subtitle: entry, visible: false };
2754
+ p.subtitles.push(entry);
2755
+ p.addCuepoint(cue);
2756
+ p.addCuepoint({ time: entry.endTime, subtitleEnd: entry.title, visible: false });
2757
+
2758
+ // initial cuepoint
2759
+ if (entry.startTime === 0 && !p.video.time) {
2760
+ p.trigger("cuepoint", [p, cue]);
2761
+ }
2762
+ });
2763
+ }, function() {
2764
+ p.trigger("error", {code: 8, url: url });
2765
+ return false;
2766
+ });
2767
+ return p;
2768
+ };
2769
+ });
2770
 
 
 
2771
 
2772
+ },{"../common":1,"../flowplayer":28,"bean":31}],22:[function(_dereq_,module,exports){
2773
+ 'use strict';
2774
+ /* global ActiveXObject */
2775
+ var flowplayer = _dereq_('../flowplayer'),
2776
+ extend = _dereq_('extend-object');
2777
+ (function() {
2778
 
2779
+ var parseIOSVersion = function(UA) {
2780
+ var e = /iP(ad|hone)(; CPU)? OS (\d+_\d)/.exec(UA);
2781
+ if (e && e.length > 1) {
2782
+ return parseFloat(e[e.length - 1].replace('_', '.'), 10);
2783
+ }
2784
+ return 0;
2785
+ };
2786
 
2787
+ var createVideoTag = function() {
2788
+ var videoTag = document.createElement('video');
2789
+ videoTag.loop = true;
2790
+ videoTag.autoplay = true;
2791
+ videoTag.preload = true;
2792
+ return videoTag;
2793
+ };
2794
 
2795
+ var b = {},
2796
+ d = document.documentElement.style,
2797
+ ua = navigator.userAgent.toLowerCase(),
2798
+ match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
2799
+ /(safari)[ \/]([\w.]+)/.exec(ua) ||
2800
+ /(webkit)[ \/]([\w.]+)/.exec(ua) ||
2801
+ /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
2802
+ /(msie) ([\w.]+)/.exec(ua) ||
2803
+ ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || [];
2804
+
2805
+ if (match[1]) {
2806
+ b[match[1]] = true;
2807
+ b.version = match[2] || "0";
2808
  }
2809
 
2810
+ var video = createVideoTag(),
2811
+ UA = navigator.userAgent,
2812
+ IS_IE = b.msie || /Trident\/7/.test(UA),
2813
+ IS_IPAD = /iPad|MeeGo/.test(UA) && !/CriOS/.test(UA),
2814
+ IS_IPAD_CHROME = /iPad/.test(UA) && /CriOS/.test(UA),
2815
+ IS_IPHONE = /iP(hone|od)/i.test(UA) && !/iPad/.test(UA) && !/IEMobile/i.test(UA),
2816
+ IS_ANDROID = /Android/.test(UA) && !/Firefox/.test(UA),
2817
+ IS_ANDROID_FIREFOX = /Android/.test(UA) && /Firefox/.test(UA),
2818
+ IS_SILK = /Silk/.test(UA),
2819
+ IS_WP = /IEMobile/.test(UA),
2820
+ WP_VER = IS_WP ? parseFloat(/Windows\ Phone\ (\d+\.\d+)/.exec(UA)[1], 10) : 0,
2821
+ IE_MOBILE_VER = IS_WP ? parseFloat(/IEMobile\/(\d+\.\d+)/.exec(UA)[1], 10) : 0,
2822
+ IOS_VER = IS_IPAD || IS_IPHONE ? parseIOSVersion(UA) : 0,
2823
+ ANDROID_VER = IS_ANDROID ? parseFloat(/Android\ (\d\.\d)/.exec(UA)[1], 10) : 0,
2824
+ s = extend(flowplayer.support, {
2825
+
2826
+ browser: b,
2827
+ iOS: {
2828
+ iPhone: IS_IPHONE,
2829
+ iPad: IS_IPAD || IS_IPAD_CHROME,
2830
+ version: IOS_VER,
2831
+ chrome: IS_IPAD_CHROME
2832
+ },
2833
+ subtitles: !!video.addTextTrack,
2834
+ fullscreen: typeof document.webkitCancelFullScreen == 'function' && !/Mac OS X 10_5.+Version\/5\.0\.\d Safari/.test(UA) ||
2835
+ document.mozFullScreenEnabled ||
2836
+ typeof document.exitFullscreen == 'function' ||
2837
+ typeof document.msExitFullscreen == 'function',
2838
+ inlineBlock: !(IS_IE && b.version < 8),
2839
+ touch: ('ontouchstart' in window),
2840
+ dataload: !IS_IPAD && !IS_IPHONE && !IS_WP,
2841
+ flex: ('flexWrap' in d) || ('WebkitFlexWrap' in d) || ('msFlexWrap' in d),
2842
+ svg: !!document.createElementNS && !!document.createElementNS('http://www.w3.org/2000/svg', "svg").createSVGRect,
2843
+ zeropreload: !IS_IE && !IS_ANDROID, // IE supports only preload=metadata
2844
+ volume: !IS_IPAD && !IS_IPHONE && !IS_SILK && !IS_IPAD_CHROME,
2845
+ cachedVideoTag: !IS_IPAD && !IS_IPHONE && !IS_IPAD_CHROME && !IS_WP,
2846
+ firstframe: !IS_IPHONE && !IS_IPAD && !IS_ANDROID && !IS_SILK && !IS_IPAD_CHROME && !IS_WP && !IS_ANDROID_FIREFOX,
2847
+ inlineVideo: (!IS_IPHONE || IOS_VER >= 10) && (!IS_WP || (WP_VER >= 8.1 && IE_MOBILE_VER >= 11)) && (!IS_ANDROID || ANDROID_VER >= 3),
2848
+ hlsDuration: !IS_ANDROID && (!b.safari || IS_IPAD || IS_IPHONE || IS_IPAD_CHROME),
2849
+ seekable: !IS_IPAD && !IS_IPAD_CHROME
2850
+ });
2851
+ s.autoplay = s.firstframe;
2852
+ // flashVideo
2853
+ try {
2854
+ var plugin = navigator.plugins["Shockwave Flash"],
2855
+ ver = IS_IE ? new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable('$version') : plugin.description;
2856
+ if (!IS_IE && !plugin[0].enabledPlugin) s.flashVideo = false;
2857
+ else {
2858
 
2859
+ ver = ver.split(/\D+/);
2860
+ if (ver.length && !ver[0]) ver = ver.slice(1);
2861
 
2862
+ s.flashVideo = ver[0] > 9 || ver[0] == 9 && ver[3] >= 115;
2863
+ }
 
 
 
 
2864
 
2865
+ } catch (ignored) {}
2866
+ try {
2867
+ s.video = !!video.canPlayType;
2868
+ if (s.video) video.canPlayType('video/mp4');
2869
+ } catch (e) {
2870
+ s.video = false;
2871
+ }
2872
 
2873
+ // animation
2874
+ s.animation = (function() {
2875
+ var vendors = ['','Webkit','Moz','O','ms','Khtml'], el = document.createElement('p');
2876
 
2877
+ for (var i = 0; i < vendors.length; i++) {
2878
+ if (typeof el.style[vendors[i] + 'AnimationName'] !== 'undefined') return true;
2879
+ }
2880
+ })();
2881
 
 
2882
 
 
2883
 
2884
+ })();
 
 
2885
 
 
 
2886
 
2887
+ },{"../flowplayer":28,"extend-object":36}],23:[function(_dereq_,module,exports){
2888
+ 'use strict';
 
 
2889
 
2890
+ var flowplayer = _dereq_('../flowplayer')
2891
+ , common = _dereq_('../common')
2892
+ , bean = _dereq_('bean');
2893
 
2894
+ flowplayer(function(api, root) {
2895
+ var c = api.conf;
2896
+
2897
+ if (c.share === false || c.twitter === false) return;
2898
+
2899
+
2900
+ // https://dev.twitter.com/web/intents
2901
+ api.tweet = function() {
2902
+ var left
2903
+ , top
2904
+ , width = 550
2905
+ , height = 420
2906
+ , winHeight = screen.height
2907
+ , winWidth = screen.width
2908
+ , windowOptions = 'scrollbars=yes,resizable=yes,toolbar=no,location=yes'
2909
+ , shareUrl = typeof c.twitter === 'string' ? c.twitter : api.shareUrl();
2910
+ left = Math.round((winWidth / 2) - (width / 2));
2911
+ top = 0;
2912
+ if (winHeight > height) {
2913
+ top = Math.round((winHeight / 2) - (height / 2));
2914
+ }
2915
+ window.open(
2916
+ 'https://twitter.com/intent/tweet?url=' + encodeURIComponent(shareUrl),
2917
+ 'intent',
2918
+ windowOptions + ',width=' + width + ',height=' + height + ',left=' + left + ',top=' + top
2919
+ );
2920
+ };
2921
+
2922
+ var btnContainer = common.find('.fp-share-menu', root)[0]
2923
+ , trigger = common.createElement('a', { "class": "fp-icon fp-twitter"}, 'Twitter');
2924
+
2925
+ common.append(btnContainer, trigger);
2926
+
2927
+ bean.on(root, 'click', '.fp-twitter', function() {
2928
+ api.tweet();
2929
+ });
2930
+ });
2931
 
2932
+ },{"../common":1,"../flowplayer":28,"bean":31}],24:[function(_dereq_,module,exports){
2933
+ (function (Buffer){
2934
+ 'use strict';
2935
+ var flowplayer = _dereq_('../flowplayer'),
2936
+ common = _dereq_('../common'),
2937
+ bean = _dereq_('bean'),
2938
+ slider = _dereq_('./ui/slider'),
2939
+ barSlider = _dereq_('./ui/bar-slider');
2940
 
2941
+ function zeropad(val) {
2942
+ val = parseInt(val, 10);
2943
+ return val >= 10 ? val : "0" + val;
2944
+ }
2945
 
2946
+ // display seconds in hh:mm:ss format
2947
+ function format(sec, remaining) {
2948
 
2949
+ sec = Math.max(sec || 0, 0);
2950
+ sec = remaining ? Math.ceil(sec) : Math.floor(sec);
 
 
 
 
2951
 
2952
+ var h = Math.floor(sec / 3600),
2953
+ min = Math.floor(sec / 60);
2954
 
2955
+ sec = sec - (min * 60);
 
 
 
 
 
 
 
 
 
 
2956
 
2957
+ if (h >= 1) {
2958
+ min -= h * 60;
2959
+ return h + ":" + zeropad(min) + ":" + zeropad(sec);
2960
  }
2961
 
2962
+ return zeropad(min) + ":" + zeropad(sec);
2963
+ }
 
2964
 
2965
+ var PLAY_ROUNDED_OUTLINE = Buffer("PHN2ZyBjbGFzcz0iZnAtcGxheS1yb3VuZGVkLW91dGxpbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDk5Ljg0NCA5OS44NDM0Ij48ZGVmcz48c3R5bGU+LmZwLWNvbG9yLXBsYXl7b3BhY2l0eTowLjY1O30uY29udHJvbGJ1dHRvbntmaWxsOiNmZmY7fTwvc3R5bGU+CjwvZGVmcz4KPHRpdGxlPnBsYXktcm91bmRlZC1vdXRsaW5lPC90aXRsZT48cGF0aCBjbGFzcz0iZnAtY29sb3ItcGxheSIgZD0iTTQ5LjkyMTctLjA3OGE1MCw1MCwwLDEsMCw1MCw1MEE1MC4wNTY0LDUwLjA1NjQsMCwwLDAsNDkuOTIxNy0uMDc4WiIvPjxwYXRoIGNsYXNzPSJjb250cm9sYnV0dG9uIiBkPSJNNDEuMDM1OSw3MS4xOWE1LjA0OTIsNS4wNDkyLDAsMCwxLTIuNTU3NS0uNjY3M2MtMS44MDMxLTEuMDQxLTIuNzk1OC0zLjEyNDgtMi43OTU4LTUuODY2NFYzNS4xODg3YzAtMi43NDI5Ljk5MzMtNC44MjcyLDIuNzk3LTUuODY3NiwxLjgwMjUtMS4wNDIyLDQuMTAzNC0uODYsNi40OC41MTQzTDcwLjQ3ODIsNDQuNTY3MmMyLjM3NTEsMS4zNzExLDMuNjgyNiwzLjI3MjUsMy42ODMyLDUuMzU0NXMtMS4zMDc2LDMuOTg0NS0zLjY4MzIsNS4zNTYyTDQ0Ljk1OTIsNzAuMDExNEE3LjkzODQsNy45Mzg0LDAsMCwxLDQxLjAzNTksNzEuMTlabS4wMDY1LTQwLjEyM2EyLjY3OTQsMi42Nzk0LDAsMCwwLTEuMzU4Mi4zNDEzYy0xLjAyNjMuNTkyNi0xLjU5MTIsMS45MzQ5LTEuNTkxMiwzLjc4VjY0LjY1NjNjMCwxLjg0NDkuNTY0OSwzLjE4NjYsMS41OTA2LDMuNzc5MSwxLjAyODEuNTkzMiwyLjQ3MzMuNDEwOCw0LjA3LS41MTJMNjkuMjczLDUzLjE5MDZjMS41OTgzLS45MjI3LDIuNDc4LTIuMDgzOCwyLjQ3OC0zLjI2ODlzLS44OC0yLjM0NDUtMi40NzgtMy4yNjY2TDQzLjc1NCwzMS45MjI3QTUuNTY4NSw1LjU2ODUsMCwwLDAsNDEuMDQyMywzMS4wNjcxWiIgZmlsdGVyPSJ1cmwoI2YxKSIvPjwvc3ZnPgo=","base64")
2966
+ , PLAY_ROUNDED_FILL = Buffer("PHN2ZyBjbGFzcz0iZnAtcGxheS1yb3VuZGVkLWZpbGwiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEwMCAxMDAiPgogIDxkZWZzPjxzdHlsZT4uYXtmaWxsOiMwMDA7b3BhY2l0eTowLjY1O30uYntmaWxsOiNmZmY7b3BhY2l0eToxLjA7fTwvc3R5bGU+CiAgPC9kZWZzPjx0aXRsZT5wbGF5LXJvdW5kZWQtZmlsbDwvdGl0bGU+CiAgPHBhdGggY2xhc3M9ImZwLWNvbG9yLXBsYXkiIGQ9Ik00OS45MjE3LS4wNzhhNTAsNTAsMCwxLDAsNTAsNTBBNTAuMDU2NCw1MC4wNTY0LDAsMCwwLDQ5LjkyMTctLjA3OFoiLz4KICA8cGF0aCBjbGFzcz0iYiIgZD0iTTM1Ljk0MiwzNS4yMzIzYzAtNC43Mjg5LDMuMzUwNi02LjY2MzcsNy40NDYtNC4yOTcxTDY4LjgzLDQ1LjYyMzVjNC4wOTU2LDIuMzY0LDQuMDk1Niw2LjIzMTksMCw4LjU5NzdMNDMuMzg4LDY4LjkxYy00LjA5NTQsMi4zNjQtNy40NDYuNDMtNy40NDYtNC4yOTc5WiIgZmlsdGVyPSJ1cmwoI2YxKSIvPgogIDwvc3ZnPgogIAo=","base64")
2967
+ , PLAY_SHARP_FILL = Buffer("PHN2ZyBjbGFzcz0iZnAtcGxheS1zaGFycC1maWxsIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj4KICA8ZGVmcz4KICAgIDxzdHlsZT4uZnAtY29sb3ItcGxheXtvcGFjaXR5OjAuNjU7fS5jb250cm9sYnV0dG9ue2ZpbGw6I2ZmZjt9PC9zdHlsZT4KICA8L2RlZnM+CiAgPHRpdGxlPnBsYXktc2hhcnAtZmlsbDwvdGl0bGU+CiAgPHBhdGggY2xhc3M9ImZwLWNvbG9yLXBsYXkiIGQ9Ik00OS45MjE3LS4wNzhhNTAsNTAsMCwxLDAsNTAsNTBBNTAuMDU2NCw1MC4wNTY0LDAsMCwwLDQ5LjkyMTctLjA3OFoiLz4KICA8cG9seWdvbiBjbGFzcz0iY29udHJvbGJ1dHRvbiIgcG9pbnRzPSI3My42MDEgNTAgMzcuOTY4IDcwLjU3MyAzNy45NjggMjkuNDI3IDczLjYwMSA1MCIgZmlsdGVyPSJ1cmwoI2YxKSIvPgo8L3N2Zz4K","base64")
2968
+ , PLAY_SHARP_OUTLINE = Buffer("PHN2ZyBjbGFzcz0iZnAtcGxheS1zaGFycC1vdXRsaW5lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA5OS44NDQgOTkuODQzNCI+PGRlZnM+PHN0eWxlPi5jb250cm9sYnV0dG9uYmd7b3BhY2l0eTowLjY1O30uY29udHJvbGJ1dHRvbntmaWxsOiNmZmY7fTwvc3R5bGU+CjwvZGVmcz48dGl0bGU+cGxheS1zaGFycC1vdXRsaW5lPC90aXRsZT48cGF0aCBjbGFzcz0iZnAtY29sb3ItcGxheSIgZD0iTTQ5LjkyMTctLjA3OGE1MCw1MCwwLDEsMCw1MCw1MEE1MC4wNTY0LDUwLjA1NjQsMCwwLDAsNDkuOTIxNy0uMDc4WiIvPjxwYXRoIGNsYXNzPSJjb250cm9sYnV0dG9uIiBkPSJNMzYuOTQ0Myw3Mi4yNDczVjI3LjI5MTZMNzUuODc3Niw0OS43N1ptMi4yLTQxLjE0NTVWNjguNDM3MUw3MS40Nzc2LDQ5Ljc3WiIgZmlsdGVyPSJ1cmwoI2YxKSIvPjwvc3ZnPgo=","base64")
2969
+ , PAUSE_ROUNDED_OUTLINE = Buffer("PHN2ZyBjbGFzcz0iZnAtcGF1c2Utcm91bmRlZC1vdXRsaW5lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA5OS44NDM0IDk5Ljg0MzQiPjxkZWZzPjxzdHlsZT4uZnAtY29sb3ItcGxheXtvcGFjaXR5OjAuNjU7fS5yZWN0e2ZpbGw6I2ZmZjt9PC9zdHlsZT4KPC9kZWZzPjx0aXRsZT5wYXVzZS1yb3VuZGVkLW91dGxpbmU8L3RpdGxlPjxwYXRoIGNsYXNzPSJmcC1jb2xvci1wbGF5IiBkPSJNNDkuOTIxMi0uMDc4M2E1MCw1MCwwLDEsMCw1MC4wMDA2LDUwQTUwLjA1NjIsNTAuMDU2MiwwLDAsMCw0OS45MjEyLS4wNzgzWiIvPjxnIGNsYXNzPSJjb250cm9sYnV0dG9uIj48cGF0aCBjbGFzcz0icmVjdCIgZD0iTTM5LjAwMzYsNzEuOTcyNmE3LjU2NSw3LjU2NSwwLDAsMS03LjU1Ny03LjU1NnYtMjguOTlhNy41NTY1LDcuNTU2NSwwLDAsMSwxNS4xMTMsMHYyOC45OUE3LjU2NDgsNy41NjQ4LDAsMCwxLDM5LjAwMzYsNzEuOTcyNlptMC00MS45MDRhNS4zNjQ3LDUuMzY0NywwLDAsMC01LjM1OTMsNS4zNTgydjI4Ljk5YTUuMzU4Nyw1LjM1ODcsMCwwLDAsMTAuNzE3NCwwdi0yOC45OUE1LjM2NDUsNS4zNjQ1LDAsMCwwLDM5LjAwMzYsMzAuMDY4NloiIGZpbHRlcj0idXJsKCNmMSkiLz48cGF0aCBjbGFzcz0icmVjdCIgZD0iTTYwLjg0LDcxLjk3MjZhNy41NjQ4LDcuNTY0OCwwLDAsMS03LjU1Ni03LjU1NnYtMjguOTlhNy41NTY1LDcuNTU2NSwwLDAsMSwxNS4xMTMsMHYyOC45OUE3LjU2NSw3LjU2NSwwLDAsMSw2MC44NCw3MS45NzI2Wm0wLTQxLjkwNGE1LjM2NDUsNS4zNjQ1LDAsMCwwLTUuMzU4Miw1LjM1ODJ2MjguOTlhNS4zNTg3LDUuMzU4NywwLDAsMCwxMC43MTc0LDB2LTI4Ljk5QTUuMzY0Nyw1LjM2NDcsMCwwLDAsNjAuODQsMzAuMDY4NloiIGZpbHRlcj0idXJsKCNmMSkiLz48L2c+PC9zdmc+Cg==","base64")
2970
+ , PAUSE_ROUNDED_FILL = Buffer("PHN2ZyBjbGFzcz0iZnAtcGF1c2Utcm91bmRlZC1maWxsIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48ZGVmcz48c3R5bGU+LmZwLWNvbG9yLXBsYXl7b3BhY2l0eTowLjY1O30ucmVjdHtmaWxsOiNmZmY7fTwvc3R5bGU+CjwvZGVmcz48dGl0bGU+cGF1c2Utcm91bmRlZC1maWxsPC90aXRsZT48cGF0aCBjbGFzcz0iZnAtY29sb3ItcGxheSIgZD0iTTQ5LjkyMTctLjA3OGE1MCw1MCwwLDEsMCw1MCw1MEE1MC4wNTY0LDUwLjA1NjQsMCwwLDAsNDkuOTIxNy0uMDc4WiIvPjxnIGNsYXNzPSJjb250cm9sYnV0dG9uIiBmaWx0ZXI9InVybCgjZjEpIj48cmVjdCBjbGFzcz0icmVjdCIgeD0iMzEuODQ0IiB5PSIyOC4xMjMxIiB3aWR0aD0iMTMuNDM2MiIgaGVpZ2h0PSI0My41OTczIiByeD0iNi43MTgxIiByeT0iNi43MTgxIi8+PHJlY3QgY2xhc3M9InJlY3QiIHg9IjU0LjU2MzgiIHk9IjI4LjEyMzEiIHdpZHRoPSIxMy40MzYyIiBoZWlnaHQ9IjQzLjU5NzMiIHJ4PSI2LjcxODEiIHJ5PSI2LjcxODEiLz48L2c+PC9zdmc+Cg==","base64")
2971
+ , PAUSE_SHARP_FILL = Buffer("PHN2ZyBjbGFzcz0iZnAtcGF1c2Utc2hhcnAtZmlsbCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PGRlZnM+PHN0eWxlPi5mcC1jb2xvci1wbGF5e29wYWNpdHk6MC42NTt9LnJlY3R7ZmlsbDojZmZmO308L3N0eWxlPgo8L2RlZnM+PHRpdGxlPnBhdXNlLXNoYXJwLWZpbGw8L3RpdGxlPjxwYXRoIGNsYXNzPSJmcC1jb2xvci1wbGF5IiBkPSJNNDkuOTIxNy0uMDc4YTUwLDUwLDAsMSwwLDUwLDUwQTUwLjA1NjQsNTAuMDU2NCwwLDAsMCw0OS45MjE3LS4wNzhaIi8+PGcgY2xhc3M9ImNvbnRyb2xidXR0b24iIGZpbHRlcj0idXJsKCNmMSkiPjxyZWN0IGNsYXNzPSJyZWN0IiB4PSIzMy41IiB5PSIzMC4xMDQyIiB3aWR0aD0iMTIuMjYzNCIgaGVpZ2h0PSIzOS43OTE3Ii8+PHJlY3QgY2xhc3M9InJlY3QiIHg9IjU0LjIzNjYiIHk9IjMwLjEwNDIiIHdpZHRoPSIxMi4yNjM0IiBoZWlnaHQ9IjM5Ljc5MTciLz48L2c+PC9zdmc+Cg==","base64")
2972
+ , PAUSE_SHARP_OUTLINE = Buffer("PHN2ZyBjbGFzcz0iZnAtcGF1c2Utc2hhcnAtb3V0bGluZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgOTkuODQzNCA5OS44NDM0Ij48ZGVmcz48c3R5bGU+LmZwLWNvbG9yLXBsYXl7b3BhY2l0eTowLjY1O30ucmVjdHtmaWxsOiNmZmY7fTwvc3R5bGU+CjwvZGVmcz48dGl0bGU+cGF1c2Utc2hhcnAtb3V0bGluZTwvdGl0bGU+PHBhdGggY2xhc3M9ImZwLWNvbG9yLXBsYXkiIGQ9Ik00OS45MjEyLS4wNzgzYTUwLDUwLDAsMSwwLDUwLjAwMDYsNTBBNTAuMDU2Miw1MC4wNTYyLDAsMCwwLDQ5LjkyMTItLjA3ODNaIi8+PGcgY2xhc3M9ImNvbnRyb2xidXR0b24iIGZpbHRlcj0idXJsKCNmMSkiPjxwYXRoIGNsYXNzPSJyZWN0IiBkPSJNNDYuODcwOSw2OS45NTMxSDMzLjEzODVWMjkuODlINDYuODcwOVpNMzUuMTQxNiw2Ny45NWg5LjcyNjJWMzEuODkzNUgzNS4xNDE2WiIvPjxwYXRoIGNsYXNzPSJyZWN0IiBkPSJNNjYuNzA0Nyw2OS45NTMxSDUyLjk3MjJWMjkuODlINjYuNzA0N1pNNTQuOTc1NCw2Ny45NWg5LjcyNjJWMzEuODkzNUg1NC45NzU0WiIvPjwvZz48L3N2Zz4K","base64");
2973
 
2974
+ var LOADING_ROUNDED_OUTLINE = Buffer("PHN2ZyBjbGFzcz0iZnAtbG9hZGluZy1yb3VuZGVkLW91dGxpbmUiIHdpZHRoPScxMTJweCcgaGVpZ2h0PScxMTJweCcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPgogICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9Ijc2IiBoZWlnaHQ9Ijc2IiBmaWxsPSJyZ2JhKDAsMCwwLDApIiBjbGFzcz0iYmsiPjwvcmVjdD4KICAgIDxjaXJjbGUgY3g9IjAiIGN5PSIwIiByPSIxMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjUgMjUpIiBmaWxsPSJub25lIiBzdHJva2U9InJnYmEoMCwwLDAsLjUpIiBzdHJva2Utd2lkdGg9IjMlIiBjbGFzcz0ic3EiPgogICAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdHJva2UiIGZyb209InJnYmEoMCwwLDAsMCkiIHRvPSJyZ2JhKDAsMCwwLC41KSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMS42cyIgYmVnaW49IjAuMHMiIHZhbHVlcz0icmdiYSgwLDAsMCwuNSk7cmdiYSgwLDAsMCwwKTtyZ2JhKDAsMCwwLDApO3JnYmEoMCwwLDAsLjUpO3JnYmEoMCwwLDAsLjUpIiBrZXlUaW1lcz0iMDswLjE7MC4yOzAuNDsxIj48L2FuaW1hdGU+CiAgICAgIDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0ic2NhbGUiIGFkZGl0aXZlPSJzdW0iIGZyb209IjAuOCIgdG89IjEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBiZWdpbj0iMC4wcyIgZHVyPSIxLjZzIiB2YWx1ZXM9IjE7MC44OzAuODsxOzEiIGtleVRpbWVzPSIwOzAuMTswLjI7MC40OzEiPjwvYW5pbWF0ZVRyYW5zZm9ybT4KICAgIDwvY2lyY2xlPgogICAgPGNpcmNsZSBjeD0iMCIgY3k9IjAiIHI9IjEwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MCAyNSkiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmdiYSgwLDAsMCwuNSkiIHN0cm9rZS13aWR0aD0iMyUiIGNsYXNzPSJzcSI+CiAgICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9InN0cm9rZSIgZnJvbT0icmdiYSgwLDAsMCwwKSIgdG89InJnYmEoMCwwLDAsLjUpIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgZHVyPSIxLjZzIiBiZWdpbj0iMC40cyIgdmFsdWVzPSJyZ2JhKDAsMCwwLC41KTtyZ2JhKDAsMCwwLDApO3JnYmEoMCwwLDAsMCk7cmdiYSgwLDAsMCwuNSk7cmdiYSgwLDAsMCwuNSkiIGtleVRpbWVzPSIwOzAuMTswLjI7MC40OzEiPjwvYW5pbWF0ZT4KICAgICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJzY2FsZSIgYWRkaXRpdmU9InN1bSIgZnJvbT0iMC44IiB0bz0iMSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGJlZ2luPSIwLjRzIiBkdXI9IjEuNnMiIHZhbHVlcz0iMTswLjg7MC44OzE7MSIga2V5VGltZXM9IjA7MC4xOzAuMjswLjQ7MSI+PC9hbmltYXRlVHJhbnNmb3JtPgogICAgPC9jaXJjbGU+CiAgICA8Y2lyY2xlIGN4PSIwIiBjeT0iMCIgcj0iMTAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUwIDUwKSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZ2JhKDAsMCwwLC41KSIgc3Ryb2tlLXdpZHRoPSIzJSIgY2xhc3M9InNxIj4KICAgICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ic3Ryb2tlIiBmcm9tPSJyZ2JhKDAsMCwwLDApIiB0bz0icmdiYSgwLDAsMCwuNSkiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjEuNnMiIGJlZ2luPSIwLjhzIiB2YWx1ZXM9InJnYmEoMCwwLDAsLjUpO3JnYmEoMCwwLDAsMCk7cmdiYSgwLDAsMCwwKTtyZ2JhKDAsMCwwLC41KTtyZ2JhKDAsMCwwLC41KSIga2V5VGltZXM9IjA7MC4xOzAuMjswLjQ7MSI+PC9hbmltYXRlPgogICAgICA8YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InNjYWxlIiBhZGRpdGl2ZT0ic3VtIiBmcm9tPSIwLjgiIHRvPSIxIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgYmVnaW49IjAuOHMiIGR1cj0iMS42cyIgdmFsdWVzPSIxOzAuODswLjg7MTsxIiBrZXlUaW1lcz0iMDswLjE7MC4yOzAuNDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+CiAgICA8L2NpcmNsZT4KICAgIDxjaXJjbGUgY3g9IjAiIGN5PSIwIiByPSIxMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjUgNTApIiBmaWxsPSJub25lIiBzdHJva2U9InJnYmEoMCwwLDAsLjUpIiBzdHJva2Utd2lkdGg9IjMlIiBjbGFzcz0ic3EiPgogICAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdHJva2UiIGZyb209InJnYmEoMCwwLDAsMCkiIHRvPSJyZ2JhKDAsMCwwLC41KSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMS42cyIgYmVnaW49IjEuMnMiIHZhbHVlcz0icmdiYSgwLDAsMCwuNSk7cmdiYSgwLDAsMCwwKTtyZ2JhKDAsMCwwLDApO3JnYmEoMCwwLDAsLjUpO3JnYmEoMCwwLDAsLjUpIiBrZXlUaW1lcz0iMDswLjE7MC4yOzAuNDsxIj48L2FuaW1hdGU+CiAgICAgIDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0ic2NhbGUiIGFkZGl0aXZlPSJzdW0iIGZyb209IjAuOCIgdG89IjEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBiZWdpbj0iMS4ycyIgZHVyPSIxLjZzIiB2YWx1ZXM9IjE7MC44OzAuODsxOzEiIGtleVRpbWVzPSIwOzAuMTswLjI7MC40OzEiPjwvYW5pbWF0ZVRyYW5zZm9ybT4KICAgIDwvY2lyY2xlPgo8L3N2Zz4K","base64")
2975
+ , LOADING_ROUNDED_FILL = Buffer("PHN2ZyBjbGFzcz0iZnAtbG9hZGluZy1yb3VuZGVkLWZpbGwiIHdpZHRoPScxMTJweCcgaGVpZ2h0PScxMTJweCcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPgogICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9Ijc2IiBoZWlnaHQ9Ijc2IiBmaWxsPSJyZ2JhKDAsMCwwLDApIiBjbGFzcz0iYmsiPjwvcmVjdD4KICAgIDxjaXJjbGUgY3g9IjAiIGN5PSIwIiByPSIxMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjUgMjUpIiBmaWxsPSJyZ2JhKDAsMCwwLC41KSIgY2xhc3M9InNxIj4KICAgICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0iZmlsbCIgZnJvbT0icmdiYSgwLDAsMCwwKSIgdG89InJnYmEoMCwwLDAsLjUpIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgZHVyPSIxLjZzIiBiZWdpbj0iMC4wcyIgdmFsdWVzPSJyZ2JhKDAsMCwwLC41KTtyZ2JhKDAsMCwwLDApO3JnYmEoMCwwLDAsMCk7cmdiYSgwLDAsMCwuNSk7cmdiYSgwLDAsMCwuNSkiIGtleVRpbWVzPSIwOzAuMTswLjI7MC40OzEiPjwvYW5pbWF0ZT4KICAgICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJzY2FsZSIgYWRkaXRpdmU9InN1bSIgZnJvbT0iMC44IiB0bz0iMSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGJlZ2luPSIwLjBzIiBkdXI9IjEuNnMiIHZhbHVlcz0iMTswLjg7MC44OzE7MSIga2V5VGltZXM9IjA7MC4xOzAuMjswLjQ7MSI+PC9hbmltYXRlVHJhbnNmb3JtPgogICAgPC9jaXJjbGU+CiAgICA8Y2lyY2xlIGN4PSIwIiBjeT0iMCIgcj0iMTAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUwIDI1KSIgZmlsbD0icmdiYSgwLDAsMCwuNSkiIGNsYXNzPSJzcSI+CiAgICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9ImZpbGwiIGZyb209InJnYmEoMCwwLDAsMCkiIHRvPSJyZ2JhKDAsMCwwLC41KSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMS42cyIgYmVnaW49IjAuNHMiIHZhbHVlcz0icmdiYSgwLDAsMCwuNSk7cmdiYSgwLDAsMCwwKTtyZ2JhKDAsMCwwLDApO3JnYmEoMCwwLDAsLjUpO3JnYmEoMCwwLDAsLjUpIiBrZXlUaW1lcz0iMDswLjE7MC4yOzAuNDsxIj48L2FuaW1hdGU+CiAgICAgIDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0ic2NhbGUiIGFkZGl0aXZlPSJzdW0iIGZyb209IjAuOCIgdG89IjEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBiZWdpbj0iMC40cyIgZHVyPSIxLjZzIiB2YWx1ZXM9IjE7MC44OzAuODsxOzEiIGtleVRpbWVzPSIwOzAuMTswLjI7MC40OzEiPjwvYW5pbWF0ZVRyYW5zZm9ybT4KICAgIDwvY2lyY2xlPgogICAgPGNpcmNsZSBjeD0iMCIgY3k9IjAiIHI9IjEwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MCA1MCkiIGZpbGw9InJnYmEoMCwwLDAsLjUpIiBjbGFzcz0ic3EiPgogICAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJmaWxsIiBmcm9tPSJyZ2JhKDAsMCwwLDApIiB0bz0icmdiYSgwLDAsMCwuNSkiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjEuNnMiIGJlZ2luPSIwLjhzIiB2YWx1ZXM9InJnYmEoMCwwLDAsLjUpO3JnYmEoMCwwLDAsMCk7cmdiYSgwLDAsMCwwKTtyZ2JhKDAsMCwwLC41KTtyZ2JhKDAsMCwwLC41KSIga2V5VGltZXM9IjA7MC4xOzAuMjswLjQ7MSI+PC9hbmltYXRlPgogICAgICA8YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InNjYWxlIiBhZGRpdGl2ZT0ic3VtIiBmcm9tPSIwLjgiIHRvPSIxIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgYmVnaW49IjAuOHMiIGR1cj0iMS42cyIgdmFsdWVzPSIxOzAuODswLjg7MTsxIiBrZXlUaW1lcz0iMDswLjE7MC4yOzAuNDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+CiAgICA8L2NpcmNsZT4KICAgIDxjaXJjbGUgY3g9IjAiIGN5PSIwIiByPSIxMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjUgNTApIiBmaWxsPSJyZ2JhKDAsMCwwLC41KSIgY2xhc3M9InNxIj4KICAgICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0iZmlsbCIgZnJvbT0icmdiYSgwLDAsMCwwKSIgdG89InJnYmEoMCwwLDAsLjUpIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgZHVyPSIxLjZzIiBiZWdpbj0iMS4ycyIgdmFsdWVzPSJyZ2JhKDAsMCwwLC41KTtyZ2JhKDAsMCwwLDApO3JnYmEoMCwwLDAsMCk7cmdiYSgwLDAsMCwuNSk7cmdiYSgwLDAsMCwuNSkiIGtleVRpbWVzPSIwOzAuMTswLjI7MC40OzEiPjwvYW5pbWF0ZT4KICAgICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJzY2FsZSIgYWRkaXRpdmU9InN1bSIgZnJvbT0iMC44IiB0bz0iMSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGJlZ2luPSIxLjJzIiBkdXI9IjEuNnMiIHZhbHVlcz0iMTswLjg7MC44OzE7MSIga2V5VGltZXM9IjA7MC4xOzAuMjswLjQ7MSI+PC9hbmltYXRlVHJhbnNmb3JtPgogICAgPC9jaXJjbGU+Cjwvc3ZnPgo=","base64")
2976
+ , LOADING_SHARP_FILL = Buffer("PHN2ZyBjbGFzcz0iZnAtbG9hZGluZy1zaGFycC1maWxsIiB3aWR0aD0nMTEycHgnIGhlaWdodD0nMTEycHgnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4KICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNzYiIGhlaWdodD0iNzYiIGZpbGw9InJnYmEoMCwwLDAsMCkiIGNsYXNzPSJiayI+PC9yZWN0PgogIDxyZWN0IHg9Ii0xMCIgeT0iLTEwIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI1IDI1KSIgZmlsbD0icmdiYSgwLDAsMCwuNSkiIGNsYXNzPSJzcSI+CiAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJmaWxsIiBmcm9tPSJyZ2JhKDAsMCwwLDApIiB0bz0icmdiYSgwLDAsMCwuNSkiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjEuNnMiIGJlZ2luPSIwLjBzIiB2YWx1ZXM9InJnYmEoMCwwLDAsLjUpO3JnYmEoMCwwLDAsMCk7cmdiYSgwLDAsMCwwKTtyZ2JhKDAsMCwwLC41KTtyZ2JhKDAsMCwwLC41KSIga2V5VGltZXM9IjA7MC4xOzAuMjswLjQ7MSI+PC9hbmltYXRlPgogICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJzY2FsZSIgYWRkaXRpdmU9InN1bSIgZnJvbT0iMC44IiB0bz0iMSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGJlZ2luPSIwLjBzIiBkdXI9IjEuNnMiIHZhbHVlcz0iMTswLjg7MC44OzE7MSIga2V5VGltZXM9IjA7MC4xOzAuMjswLjQ7MSI+PC9hbmltYXRlVHJhbnNmb3JtPgogIDwvcmVjdD4KICA8cmVjdCB4PSItMTAiIHk9Ii0xMCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MCAyNSkiIGZpbGw9InJnYmEoMCwwLDAsLjUpIiBjbGFzcz0ic3EiPgogICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0iZmlsbCIgZnJvbT0icmdiYSgwLDAsMCwwKSIgdG89InJnYmEoMCwwLDAsLjUpIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgZHVyPSIxLjZzIiBiZWdpbj0iMC40cyIgdmFsdWVzPSJyZ2JhKDAsMCwwLC41KTtyZ2JhKDAsMCwwLDApO3JnYmEoMCwwLDAsMCk7cmdiYSgwLDAsMCwuNSk7cmdiYSgwLDAsMCwuNSkiIGtleVRpbWVzPSIwOzAuMTswLjI7MC40OzEiPjwvYW5pbWF0ZT4KICAgIDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0ic2NhbGUiIGFkZGl0aXZlPSJzdW0iIGZyb209IjAuOCIgdG89IjEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBiZWdpbj0iMC40cyIgZHVyPSIxLjZzIiB2YWx1ZXM9IjE7MC44OzAuODsxOzEiIGtleVRpbWVzPSIwOzAuMTswLjI7MC40OzEiPjwvYW5pbWF0ZVRyYW5zZm9ybT4KICA8L3JlY3Q+CiAgPHJlY3QgeD0iLTEwIiB5PSItMTAiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTAgNTApIiBmaWxsPSJyZ2JhKDAsMCwwLC41KSIgY2xhc3M9InNxIj4KICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9ImZpbGwiIGZyb209InJnYmEoMCwwLDAsMCkiIHRvPSJyZ2JhKDAsMCwwLC41KSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMS42cyIgYmVnaW49IjAuOHMiIHZhbHVlcz0icmdiYSgwLDAsMCwuNSk7cmdiYSgwLDAsMCwwKTtyZ2JhKDAsMCwwLDApO3JnYmEoMCwwLDAsLjUpO3JnYmEoMCwwLDAsLjUpIiBrZXlUaW1lcz0iMDswLjE7MC4yOzAuNDsxIj48L2FuaW1hdGU+CiAgICA8YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InNjYWxlIiBhZGRpdGl2ZT0ic3VtIiBmcm9tPSIwLjgiIHRvPSIxIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgYmVnaW49IjAuOHMiIGR1cj0iMS42cyIgdmFsdWVzPSIxOzAuODswLjg7MTsxIiBrZXlUaW1lcz0iMDswLjE7MC4yOzAuNDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+CiAgPC9yZWN0PgogIDxyZWN0IHg9Ii0xMCIgeT0iLTEwIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI1IDUwKSIgZmlsbD0icmdiYSgwLDAsMCwuNSkiIGNsYXNzPSJzcSI+CiAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJmaWxsIiBmcm9tPSJyZ2JhKDAsMCwwLDApIiB0bz0icmdiYSgwLDAsMCwuNSkiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjEuNnMiIGJlZ2luPSIxLjJzIiB2YWx1ZXM9InJnYmEoMCwwLDAsLjUpO3JnYmEoMCwwLDAsMCk7cmdiYSgwLDAsMCwwKTtyZ2JhKDAsMCwwLC41KTtyZ2JhKDAsMCwwLC41KSIga2V5VGltZXM9IjA7MC4xOzAuMjswLjQ7MSI+PC9hbmltYXRlPgogICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJzY2FsZSIgYWRkaXRpdmU9InN1bSIgZnJvbT0iMC44IiB0bz0iMSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGJlZ2luPSIxLjJzIiBkdXI9IjEuNnMiIHZhbHVlcz0iMTswLjg7MC44OzE7MSIga2V5VGltZXM9IjA7MC4xOzAuMjswLjQ7MSI+PC9hbmltYXRlVHJhbnNmb3JtPgogIDwvcmVjdD4KPC9zdmc+Cg==","base64")
2977
+ , LOADING_SHARP_OUTLINE = Buffer("PHN2ZyBjbGFzcz0iZnAtbG9hZGluZy1zaGFycC1vdXRsaW5lIiB3aWR0aD0nMTEycHgnIGhlaWdodD0nMTEycHgnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4KICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNzYiIGhlaWdodD0iNzYiIGZpbGw9InJnYmEoMCwwLDAsMCkiIGNsYXNzPSJiayI+PC9yZWN0PgogIDxyZWN0IHg9Ii05IiB5PSItOSIgd2lkdGg9IjE4IiBoZWlnaHQ9IjE4IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNSAyNSkiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmdiYSgwLDAsMCwuNSkiIHN0cm9rZS13aWR0aD0iMyUiIGNsYXNzPSJzcSI+CiAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdHJva2UiIGZyb209InJnYmEoMCwwLDAsMCkiIHRvPSJyZ2JhKDAsMCwwLC41KSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMS42cyIgYmVnaW49IjAuMHMiIHZhbHVlcz0icmdiYSgwLDAsMCwuNSk7cmdiYSgwLDAsMCwwKTtyZ2JhKDAsMCwwLDApO3JnYmEoMCwwLDAsLjUpO3JnYmEoMCwwLDAsLjUpIiBrZXlUaW1lcz0iMDswLjE7MC4yOzAuNDsxIj48L2FuaW1hdGU+CiAgICAgIDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0ic2NhbGUiIGFkZGl0aXZlPSJzdW0iIGZyb209IjAuOCIgdG89IjEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBiZWdpbj0iMC4wcyIgZHVyPSIxLjZzIiB2YWx1ZXM9IjE7MC44OzAuODsxOzEiIGtleVRpbWVzPSIwOzAuMTswLjI7MC40OzEiPjwvYW5pbWF0ZVRyYW5zZm9ybT4KICA8L3JlY3Q+CiAgPHJlY3QgeD0iLTkiIHk9Ii05IiB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUwIDI1KSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZ2JhKDAsMCwwLC41KSIgc3Ryb2tlLXdpZHRoPSIzJSIgY2xhc3M9InNxIj4KICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9InN0cm9rZSIgZnJvbT0icmdiYSgwLDAsMCwwKSIgdG89InJnYmEoMCwwLDAsLjUpIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgZHVyPSIxLjZzIiBiZWdpbj0iMC40cyIgdmFsdWVzPSJyZ2JhKDAsMCwwLC41KTtyZ2JhKDAsMCwwLDApO3JnYmEoMCwwLDAsMCk7cmdiYSgwLDAsMCwuNSk7cmdiYSgwLDAsMCwuNSkiIGtleVRpbWVzPSIwOzAuMTswLjI7MC40OzEiPjwvYW5pbWF0ZT4KICAgICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJzY2FsZSIgYWRkaXRpdmU9InN1bSIgZnJvbT0iMC44IiB0bz0iMSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGJlZ2luPSIwLjRzIiBkdXI9IjEuNnMiIHZhbHVlcz0iMTswLjg7MC44OzE7MSIga2V5VGltZXM9IjA7MC4xOzAuMjswLjQ7MSI+PC9hbmltYXRlVHJhbnNmb3JtPgogIDwvcmVjdD4KICA8cmVjdCB4PSItOSIgeT0iLTkiIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTAgNTApIiBmaWxsPSJub25lIiBzdHJva2U9InJnYmEoMCwwLDAsLjUpIiBzdHJva2Utd2lkdGg9IjMlIiBjbGFzcz0ic3EiPgogICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ic3Ryb2tlIiBmcm9tPSJyZ2JhKDAsMCwwLDApIiB0bz0icmdiYSgwLDAsMCwuNSkiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjEuNnMiIGJlZ2luPSIwLjhzIiB2YWx1ZXM9InJnYmEoMCwwLDAsLjUpO3JnYmEoMCwwLDAsMCk7cmdiYSgwLDAsMCwwKTtyZ2JhKDAsMCwwLC41KTtyZ2JhKDAsMCwwLC41KSIga2V5VGltZXM9IjA7MC4xOzAuMjswLjQ7MSI+PC9hbmltYXRlPgogICAgICA8YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InNjYWxlIiBhZGRpdGl2ZT0ic3VtIiBmcm9tPSIwLjgiIHRvPSIxIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgYmVnaW49IjAuOHMiIGR1cj0iMS42cyIgdmFsdWVzPSIxOzAuODswLjg7MTsxIiBrZXlUaW1lcz0iMDswLjE7MC4yOzAuNDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+CiAgPC9yZWN0PgogIDxyZWN0IHg9Ii05IiB5PSItOSIgd2lkdGg9IjE4IiBoZWlnaHQ9IjE4IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNSA1MCkiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmdiYSgwLDAsMCwuNSkiIHN0cm9rZS13aWR0aD0iMyUiIGNsYXNzPSJzcSI+CiAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdHJva2UiIGZyb209InJnYmEoMCwwLDAsMCkiIHRvPSJyZ2JhKDAsMCwwLC41KSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMS42cyIgYmVnaW49IjEuMnMiIHZhbHVlcz0icmdiYSgwLDAsMCwuNSk7cmdiYSgwLDAsMCwwKTtyZ2JhKDAsMCwwLDApO3JnYmEoMCwwLDAsLjUpO3JnYmEoMCwwLDAsLjUpIiBrZXlUaW1lcz0iMDswLjE7MC4yOzAuNDsxIj48L2FuaW1hdGU+CiAgICAgIDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0ic2NhbGUiIGFkZGl0aXZlPSJzdW0iIGZyb209IjAuOCIgdG89IjEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBiZWdpbj0iMS4ycyIgZHVyPSIxLjZzIiB2YWx1ZXM9IjE7MC44OzAuODsxOzEiIGtleVRpbWVzPSIwOzAuMTswLjI7MC40OzEiPjwvYW5pbWF0ZVRyYW5zZm9ybT4KICA8L3JlY3Q+Cjwvc3ZnPgo=","base64");
 
2978
 
2979
+ flowplayer(function(api, root) {
2980
+ common.find('.fp-filters').forEach(common.removeNode);
2981
+ try {
2982
+ var fc;
2983
+ document.body.appendChild(fc = common.createElement('div', {}, Buffer("PHN2ZyBjbGFzcz0iZnAtZmlsdGVycyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMCAwIj4KICA8ZGVmcz4KICAgIDxmaWx0ZXIgaWQ9ImYxIiB4PSItMjAlIiB5PSItMjAlIiB3aWR0aD0iMjAwJSIgaGVpZ2h0PSIyMDAlIj4KICAgICAgPGZlT2Zmc2V0IHJlc3VsdD0ib2ZmT3V0IiBpbj0iU291cmNlQWxwaGEiIGR4PSIwIiBkeT0iMCIgLz4KICAgICAgPGZlQ29sb3JNYXRyaXggcmVzdWx0PSJtYXRyaXhPdXQiIGluPSJvZmZPdXQiIHR5cGU9Im1hdHJpeCIKICAgICAgdmFsdWVzPSIwLjMgMCAwIDAgMCAwIDAuMyAwIDAgMCAwIDAgMC4zIDAgMCAwIDAgMCAwLjQgMCIgLz4KICAgICAgPGZlR2F1c3NpYW5CbHVyIHJlc3VsdD0iYmx1ck91dCIgaW49Im1hdHJpeE91dCIgc3RkRGV2aWF0aW9uPSI0IiAvPgogICAgICA8ZmVCbGVuZCBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJibHVyT3V0IiBtb2RlPSJub3JtYWwiIC8+CiAgICA8L2ZpbHRlcj4KICA8L2RlZnM+Cjwvc3ZnPgo=","base64")));
2984
+ common.css(fc, {
2985
+ width: 0,
2986
+ height: 0,
2987
+ overflow: 'hidden',
2988
+ position: 'absolute',
2989
+ margin: 0,
2990
+ padding: 0
2991
+ });
2992
+
2993
+ } catch (e) { /* omit */ }
2994
 
2995
+ var conf = api.conf,
2996
+ support = flowplayer.support,
2997
+ hovertimer;
2998
+ common.find('.fp-ratio,.fp-ui', root).forEach(common.removeNode);
2999
+ common.addClass(root, 'flowplayer');
3000
+ root.appendChild(common.createElement('div', {className: 'fp-ratio'}));
3001
+ var ui = common.createElement('div', {className: 'fp-ui'}, '\
3002
+ <div class="fp-waiting">\
3003
+ {{ LOADING_SHARP_OUTLINE }}\
3004
+ {{ LOADING_SHARP_FILL }}\
3005
+ {{ LOADING_ROUNDED_FILL }}\
3006
+ {{ LOADING_ROUNDED_OUTLINE }}\
3007
  </div>\
3008
+ <div class="fp-header">\
3009
+ <a class="fp-share fp-icon"></a>\
3010
+ <a class="fp-fullscreen fp-icon"></a>\
3011
+ <a class="fp-unload fp-icon"></a>\
3012
  </div>\
3013
+ <p class="fp-speed-flash"></p>\
3014
+ <div class="fp-play fp-visible">\
3015
+ <a class="fp-icon fp-playbtn"></a>\
3016
+ {{ PLAY_ROUNDED_FILL }}\
3017
+ {{ PLAY_ROUNDED_OUTLINE }}\
3018
+ {{ PLAY_SHARP_FILL }}\
3019
+ {{ PLAY_SHARP_OUTLINE }}\
3020
  </div>\
3021
+ <div class="fp-pause">\
3022
+ <a class="fp-icon fp-playbtn"></a>\
3023
+ {{ PAUSE_SHARP_OUTLINE }}\
3024
+ {{ PAUSE_SHARP_FILL }}\
3025
+ {{ PAUSE_ROUNDED_OUTLINE }}\
3026
+ {{ PAUSE_ROUNDED_FILL }}\
3027
+ </div>\
3028
+ <div class="fp-controls">\
3029
+ <a class="fp-icon fp-playbtn"></a>\
3030
+ <span class="fp-elapsed">00:00</span>\
3031
+ <div class="fp-timeline fp-bar">\
3032
+ <div class="fp-buffer"></div>\
3033
+ <span class="fp-timestamp"></span>\
3034
+ <div class="fp-progress fp-color"></div>\
3035
+ </div>\
3036
+ <span class="fp-duration"></span>\
3037
+ <span class="fp-remaining"></span>\
3038
+ <div class="fp-volume">\
3039
+ <a class="fp-icon fp-volumebtn"></a>\
3040
+ <div class="fp-volumebar fp-bar-slider">\
3041
+ <em></em><em></em><em></em><em></em><em></em><em></em><em></em>\
3042
+ </div>\
3043
+ </div>\
3044
+ <strong class="fp-speed fp-hidden"></strong>\
3045
+ </div>'.replace('{{ PAUSE_ROUNDED_FILL }}', PAUSE_ROUNDED_FILL)
3046
+ .replace('{{ PAUSE_ROUNDED_OUTLINE }}', PAUSE_ROUNDED_OUTLINE)
3047
+ .replace('{{ PAUSE_SHARP_FILL }}', PAUSE_SHARP_FILL)
3048
+ .replace('{{ PAUSE_SHARP_OUTLINE }}', PAUSE_SHARP_OUTLINE)
3049
+ .replace('{{ PLAY_SHARP_OUTLINE }}', PLAY_SHARP_OUTLINE)
3050
+ .replace('{{ PLAY_SHARP_FILL }}', PLAY_SHARP_FILL)
3051
+ .replace('{{ PLAY_ROUNDED_OUTLINE }}', PLAY_ROUNDED_OUTLINE)
3052
+ .replace('{{ PLAY_ROUNDED_FILL }}', PLAY_ROUNDED_FILL)
3053
+ .replace('{{ LOADING_ROUNDED_OUTLINE }}', LOADING_ROUNDED_OUTLINE)
3054
+ .replace('{{ LOADING_ROUNDED_FILL }}', LOADING_ROUNDED_FILL)
3055
+ .replace('{{ LOADING_SHARP_FILL }}', LOADING_SHARP_FILL)
3056
+ .replace('{{ LOADING_SHARP_OUTLINE }}', LOADING_SHARP_OUTLINE)
3057
+ .replace(/url\(#/g, 'url(' + window.location.href.replace(window.location.hash, "").replace(/\#$/g, '') + '#')
3058
+ );
3059
+ root.appendChild(ui);
3060
+ function find(klass) {
3061
+ return common.find(".fp-" + klass, root)[0];
3062
  }
3063
 
3064
+ // widgets
3065
+ var buffer = find("buffer"),
3066
+ waiting = find('waiting'),
3067
+ elapsed = find("elapsed"),
3068
+ ratio = find("ratio"),
3069
+ speedFlash = find('speed-flash'),
3070
+ durationEl = find("duration"),
3071
+ remaining = find('remaining'),
3072
+ timelineTooltip = find('timestamp'),
3073
+ origRatio = common.css(ratio, 'padding-top'),
3074
+ play = find('play'),
3075
+ pause = find('pause'),
3076
 
3077
+ // sliders
3078
+ timeline = find("timeline"),
3079
+ timelineApi = slider(timeline, api.rtl),
3080
 
3081
+ fullscreen = find("fullscreen"),
3082
+ volumeSlider = find("volumebar"),
3083
+ volumeApi = barSlider(volumeSlider, { rtl: api.rtl }),
3084
+ noToggle = common.hasClass(root, 'no-toggle');
 
 
 
 
3085
 
3086
+ timelineApi.disableAnimation(common.hasClass(root, 'is-touch'));
3087
+ api.sliders = api.sliders || {};
3088
+ api.sliders.timeline = timelineApi;
3089
+ api.sliders.volume = volumeApi;
3090
 
3091
+ var speedAnimationTimers = [];
 
 
 
 
 
 
 
 
3092
 
3093
+ // aspect ratio
3094
+ function setRatio(val) {
3095
+ common.css(ratio, 'padding-top', val * 100 + "%");
3096
+ if (!support.inlineBlock) common.height(common.find('object', root)[0], common.height(root));
3097
+ }
3098
 
3099
+ function hover(flag) {
3100
+ if (flag) {
3101
+ common.addClass(root, 'is-mouseover');
3102
+ common.removeClass(root, 'is-mouseout');
3103
+ } else {
3104
+ common.addClass(root, 'is-mouseout');
3105
+ common.removeClass(root, 'is-mouseover');
3106
+ }
3107
+ }
3108
 
3109
+ // loading...
3110
+ if (!support.svg) common.html(waiting, "<p>loading &hellip;</p>");
3111
 
3112
+ if (conf.ratio) setRatio(conf.ratio);
3113
 
3114
+ // no fullscreen in IFRAME
3115
+ try {
3116
+ if (!conf.fullscreen) common.removeNode(fullscreen);
3117
 
3118
+ } catch (e) {
3119
+ common.removeNode(fullscreen);
3120
+ }
3121
 
3122
+ api.on('dvrwindow', function() {
3123
+ timelineApi.disable(false);
3124
+ });
3125
 
3126
+ api.on("ready", function(ev, api, video) {
3127
 
3128
+ var duration = api.video.duration;
3129
 
3130
+ timelineApi.disable(api.disabled || !duration);
3131
 
3132
+ if (conf.adaptiveRatio && !isNaN(video.height / video.width)) setRatio(video.height / video.width, true);
 
3133
 
3134
+ // initial time & volume
3135
+ common.html([durationEl, remaining], api.live ? 'Live' : format(duration));
3136
 
3137
+ // do we need additional space for showing hour
3138
+ common.toggleClass(root, 'is-long', duration >= 3600);
3139
+ volumeApi.slide(api.volumeLevel);
 
 
 
 
 
 
 
 
3140
 
3141
+ if (api.engine.engineName === 'flash') timelineApi.disableAnimation(true, true);
3142
+ else timelineApi.disableAnimation(false);
3143
+ common.find('.fp-title', ui).forEach(common.removeNode);
3144
+ if (video.title) {
 
 
 
 
3145
 
3146
+ common.prepend(ui, common.createElement('div', {
3147
+ className: 'fp-message fp-title'
3148
+ }, video.title));
3149
  }
3150
+ common.toggleClass(root, 'has-title', !!video.title);
3151
 
 
 
3152
 
3153
+ }).on("unload", function() {
3154
+ if (!origRatio && !conf.splash) common.css(ratio, "paddingTop", "");
3155
+ timelineApi.slide(0);
3156
+ common.addClass(play, 'fp-visible');
3157
 
3158
+ // buffer
3159
+ }).on("buffer", function() {
3160
+ var video = api.video,
3161
+ max = video.buffer / video.duration;
3162
 
3163
+ if (!video.seekable && support.seekable) timelineApi.max(api.conf.live ? Infinity : max);
3164
+ if (max < 1) common.css(buffer, "width", (max * 100) + "%");
3165
+ else common.css(buffer, 'width', '100%');
3166
+ }).on("speed", function(e, api, val) {
3167
+ if (api.video.time) {
3168
+ common.text(speedFlash, val + "x");
3169
+ common.addClass(speedFlash, 'fp-shown');
3170
+ speedAnimationTimers = speedAnimationTimers.filter(function(to) {
3171
+ clearTimeout(to);
3172
+ return false;
3173
+ });
3174
+ speedAnimationTimers.push(setTimeout(function() {
3175
+ common.addClass(speedFlash, 'fp-hilite');
3176
+ speedAnimationTimers.push(setTimeout(function() {
3177
+ common.removeClass(speedFlash, 'fp-hilite');
3178
+ speedAnimationTimers.push(setTimeout(function() {
3179
+ common.removeClass(speedFlash, 'fp-shown');
3180
+ }, 300));
3181
+ }, 1000));
3182
+ }));
3183
+ }
3184
+
3185
+ }).on("buffered", function() {
3186
+ common.css(buffer, 'width', '100%');
3187
+ timelineApi.max(1);
3188
 
3189
+ // progress
3190
+ }).on("progress seek", function(_e, _api, time) {
 
 
 
 
 
 
 
 
3191
 
3192
+ var duration = api.video.duration,
3193
+ offset = api.video.seekOffset || 0;
 
 
 
 
 
 
 
 
3194
 
3195
+ time = time || api.video.time;
3196
+ var percentage = (time - offset) / (duration - offset);
3197
+ if (!timelineApi.dragging) {
3198
+ timelineApi.slide(percentage, api.seeking ? 0 : 250);
 
 
 
 
3199
  }
3200
+ common.toggleClass(root, 'is-live-position', duration - time < conf.livePositionOffset);
3201
+
3202
+ common.html(elapsed, format(time));
3203
+ common.html(remaining, format(duration - time, true));
3204
+
3205
+ }).on("finish resume seek", function(e) {
3206
+ common.toggleClass(root, "is-finished", e.type == "finish");
3207
+ }).on('resume', function() {
3208
+ common.addClass(play, 'fp-visible');
3209
+ setTimeout(function() { common.removeClass(play, 'fp-visible'); }, 300);
3210
+ }).on('pause', function() {
3211
+ common.addClass(pause, 'fp-visible');
3212
+ setTimeout(function() { common.removeClass(pause, 'fp-visible'); }, 300);
3213
+ }).on("stop", function() {
3214
+ common.html(elapsed, format(0));
3215
+ timelineApi.slide(0, 100);
3216
 
3217
+ }).on("finish", function() {
3218
+ common.html(elapsed, format(api.video.duration));
3219
+ timelineApi.slide(1, 100);
3220
+ common.removeClass(root, 'is-seeking');
3221
 
3222
+ // misc
3223
+ }).on("beforeseek", function() {
3224
+ //TODO FIXME
3225
+ //progress.stop();
3226
 
3227
+ }).on("volume", function() {
3228
+ volumeApi.slide(api.volumeLevel);
3229
 
 
 
 
 
3230
 
3231
+ }).on("disable", function() {
3232
+ var flag = api.disabled;
3233
+ timelineApi.disable(flag);
3234
+ volumeApi.disable(flag);
3235
+ common.toggleClass(root, 'is-disabled', api.disabled);
3236
 
3237
+ }).on("mute", function(e, api, flag) {
3238
+ common.toggleClass(root, 'is-muted', flag);
3239
 
3240
+ }).on("error", function(e, api, error) {
3241
+ common.removeClass(root, 'is-loading');
3242
+ common.removeClass(root, 'is-seeking');
3243
+ common.addClass(root, 'is-error');
3244
+ if (error) {
3245
+ error.message = conf.errors[error.code];
3246
+ api.error = true;
 
 
 
 
 
3247
 
3248
+ var dismiss = api.message((api.engine && api.engine.engineName || 'html5') + ": " + error.message);
3249
+ //common.find('p', el)[0].innerHTML = error.url || video.url || video.src || conf.errorUrls[error.code];
3250
+ common.removeClass(root, 'is-mouseover');
3251
+ api.one('load progress', function() { dismiss(); });
 
 
3252
  }
 
 
3253
 
 
 
 
 
 
 
 
 
 
3254
 
3255
+ // hover
3256
+ });
3257
+ //Interaction events
3258
+ bean.on(root, "mouseenter mouseleave", function(e) {
3259
+ if (noToggle) return;
3260
 
3261
+ var is_over = e.type == "mouseover",
3262
+ lastMove;
3263
 
3264
+ // is-mouseover/out
3265
+ hover(is_over);
 
 
 
 
 
 
3266
 
3267
+ if (is_over) {
 
 
3268
 
3269
+ var reg = function() {
3270
+ hover(true);
3271
+ lastMove = new Date();
3272
+ };
3273
+ api.on("pause.x volume.x", reg);
3274
+ bean.on(root, 'mousemove.x', reg);
 
 
3275
 
3276
+ hovertimer = setInterval(function() {
3277
+ if (new Date() - lastMove > conf.mouseoutTimeout) {
3278
+ hover(false);
3279
+ lastMove = new Date();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3280
  }
3281
+ }, 100);
 
 
 
 
 
 
3282
 
3283
+ } else {
3284
+ bean.off(root, 'mousemove.x');
3285
+ api.off("pause.x volume.x");
3286
+ clearInterval(hovertimer);
 
 
 
 
3287
  }
3288
 
 
 
 
 
 
 
 
 
 
3289
 
3290
+ // allow dragging over the player edge
3291
+ });
3292
+ bean.on(root, "mouseleave", function() {
3293
+
3294
+ if (timelineApi.dragging || volumeApi.dragging) {
3295
+ common.addClass(root, 'is-mouseover');
3296
+ common.removeClass(root, 'is-mouseout');
3297
+ }
3298
+
3299
+ // click
3300
+ });
3301
+ bean.on(root, "click.player", function(e) {
3302
+ if (api.disabled) return;
3303
+ if (common.hasClass(e.target, 'fp-ui') || common.hasClass(e.target, 'fp-engine') || e.flash || common.hasParent(e.target, '.fp-play,.fp-pause')) {
3304
+ if (e.preventDefault) e.preventDefault();
3305
+ return api.toggle();
3306
+ }
3307
+ });
3308
 
3309
+ bean.on(root, 'mousemove', '.fp-timeline', function(ev) {
3310
+ var x = ev.pageX || ev.clientX,
3311
+ delta = x - common.offset(timeline).left,
3312
+ percentage = delta / common.width(timeline),
3313
+ seconds = (api.rtl ? 1 - percentage : percentage) * api.video.duration;
3314
+ if (percentage < 0) return;
3315
+ common.html(timelineTooltip, format(seconds));
3316
+ var left = (delta - common.width(timelineTooltip) / 2);
3317
+ if (left < 0) left = 0;
3318
+ if (left > common.width(timeline) - common.width(timelineTooltip)) left = false;
3319
+ if (left !== false) common.css(timelineTooltip, {
3320
+ left: left + 'px',
3321
+ right: 'auto'
3322
+ });
3323
+ else common.css(timelineTooltip, {
3324
+ left: 'auto',
3325
+ right: '0px'
3326
+ });
3327
 
3328
+ });
 
 
3329
 
3330
+ bean.on(root, 'contextmenu', function(ev) {
3331
+ var w = window;
3332
+ if (common.hasClass(root, 'is-flash-disabled')) return;
3333
+ var menu = common.find('.fp-context-menu', root)[0];
3334
+ if (!menu) return;
3335
+ ev.preventDefault();
3336
+ api.showMenu(menu, {
3337
+ left: ev.clientX - w.scrollX,
3338
+ top: ev.clientY - w.scrollY
3339
+ });
3340
+ bean.on(root, 'click', '.fp-context-menu', function(ev) {
3341
+ ev.stopPropagation();
3342
+ });
3343
+ });
3344
+ api.on('flashdisabled', function(_e, _a, showMessage) {
3345
+ common.addClass(root, 'is-flash-disabled');
3346
+ var dismiss;
3347
+ if (showMessage !== false) dismiss = api.message('Seems something is blocking Adobe Flash from running');
3348
+ api.one('ready progress', function() {
3349
+ common.removeClass(root, 'is-flash-disabled');
3350
+ if (dismiss) dismiss();
3351
+ });
3352
+ });
3353
 
3354
+ // poster -> background image
3355
+ if (conf.poster) common.css(root, 'background-image', "url(" + conf.poster + ")");
3356
 
3357
+ var bc = common.css(root, 'background-color'),
3358
+ has_bg = common.css(root, 'background-image') != "none" || bc && bc != "rgba(0, 0, 0, 0)" && bc != "transparent";
 
3359
 
3360
+ // is-poster class
3361
+ if (has_bg && !conf.splash) {
3362
+ if (!conf.poster) conf.poster = true;
3363
+ var initPoster = function() {
3364
+ common.addClass(root, "is-poster");
3365
+ common.addClass(play, 'fp-visible');
3366
+ api.poster = true;
3367
+ api.one(conf.autoplay ? "progress seek" : "resume seek", function() {
3368
+ common.removeClass(root, "is-poster");
3369
+ common.removeClass(play, 'fp-visible');
3370
+ api.poster = false;
3371
+ });
3372
+ }
3373
+ api.on('stop', function() { initPoster(); });
3374
+ api.on('ready', function(_ev, _api, video) {
3375
+ if (video.index || video.autoplay) return; // No poster for playlist items
3376
+ initPoster();
3377
  });
3378
+ }
3379
 
3380
+ if (typeof conf.splash === 'string') {
3381
+ common.css(root, 'background-image', "url('" + conf.splash + "')");
3382
  }
3383
 
3384
+ // default background color if not present
3385
+ if (!has_bg && api.forcedSplash) {
3386
+ common.css(root, "background-color", "#555");
3387
  }
3388
 
3389
+ bean.on(root, 'click', '.fp-toggle, .fp-play, .fp-playbtn', function() {
3390
+ if (api.disabled) return;
3391
+ api.toggle();
3392
+ });
3393
 
3394
+ /* controlbar elements */
3395
+ bean.on(root, 'click', '.fp-volumebtn', function() { api.mute(); }); bean.on(root, 'click', '.fp-fullscreen', function() { api.fullscreen(); });
3396
+ bean.on(root, 'click', '.fp-unload', function() { api.unload(); });
3397
 
3398
+ bean.on(timeline, 'slide', function(val) {
3399
+ api.seeking = true;
3400
+ api.seekTo(val * 10);
3401
+ });
3402
 
3403
+ bean.on(volumeSlider, 'slide', function(val) {
3404
+ api.volume(val);
3405
+ });
3406
 
3407
+ // times
3408
 
3409
+ bean.on(root, 'click', '.fp-duration,.fp-remaining', function() {
3410
+ if (api.dvr) return api.seekTo(10);
3411
+ common.toggleClass(root, 'is-inverted');
3412
+ });
3413
 
3414
+ hover(noToggle);
 
 
 
3415
 
3416
+ api.on('shutdown', function() {
3417
+ bean.off(timeline);
3418
+ bean.off(volumeSlider);
3419
+ });
3420
 
3421
+ });
 
 
3422
 
 
3423
 
3424
+ module.exports.format = format;
3425
 
3426
+ }).call(this,_dereq_("buffer").Buffer)
3427
+ },{"../common":1,"../flowplayer":28,"./ui/bar-slider":25,"./ui/slider":26,"bean":31,"buffer":32}],25:[function(_dereq_,module,exports){
3428
+ var bean = _dereq_('bean')
3429
+ , common = _dereq_('../../common');
3430
 
3431
+ function slider(root, opts) {
3432
+ opts = opts || {};
 
 
 
3433
 
3434
+ var activeClass = opts.activeClass || 'fp-color'
3435
+ , inactiveClass = opts.inactiveClass || 'fp-grey'
3436
+ , childSelector = opts.childSelector || 'em'
3437
+ , rtl = !!opts.rtl
3438
+ , disabled = false;
3439
 
3440
+ var totalBars = common.find(childSelector, root).length;
 
3441
 
3442
+ var api = {
3443
+ unload: function() {
3444
+ bean.off(root, '.barslider');
3445
+ },
3446
+ slide: function(to, trigger) {
3447
+ common.find(childSelector, root).forEach(function(bar, idx) {
3448
+ var active = to > idx/totalBars;
3449
+ common.toggleClass(bar, activeClass, active);
3450
+ common.toggleClass(bar, inactiveClass, !active);
3451
+ });
3452
+ if (trigger) bean.fire(root, 'slide', [ to ]);
3453
+ },
3454
+ disable: function(flag) {
3455
+ disabled = flag;
3456
+ }
3457
+ };
3458
+
3459
+ bean.on(root, 'mousedown.sld touchstart.sld', function(ev) {
3460
+ ev.preventDefault();
3461
+ if (disabled) return;
3462
+ api.slide(getMouseValue(ev), true);
3463
+
3464
+ bean.on(root, 'mousemove.sld touchmove.sld', function(ev) {
3465
+ ev.preventDefault();
3466
+ api.slide(getMouseValue(ev), true);
3467
+ });
3468
 
3469
+ bean.one(document, 'mouseup.sld touchup.sld', function() {
3470
+ bean.off(root, 'mousemove.sld touchmove.sld');
3471
+ });
3472
+ });
3473
 
3474
+ return api;
 
3475
 
3476
+ function getMouseValue(ev) {
3477
+ var pageX = ev.pageX || ev.clientX
3478
+ , offset = common.offset(root)
3479
+ , size = common.width(root);
3480
 
 
 
 
3481
 
3482
+ if (!pageX && ev.originalEvent && ev.originalEvent.touches && ev.originalEvent.touches.length) {
3483
+ pageX = ev.originalEvent.touches[0].pageX;
3484
+ }
3485
+ var delta = pageX - offset.left;
3486
+ delta = Math.max(0, Math.min(size, delta));
3487
 
3488
+ var value = delta / size;
3489
+ if (rtl) value = 1 - value;
3490
+ return value;
3491
+ }
3492
+ }
3493
 
 
 
3494
 
3495
+ module.exports = slider;
 
3496
 
3497
+ },{"../../common":1,"bean":31}],26:[function(_dereq_,module,exports){
3498
+ 'use strict';
3499
+ // skip IE policies
3500
+ // document.ondragstart = function () { return false; };
3501
+ //
3502
+ var bean = _dereq_('bean'),
3503
+ common = _dereq_('../../common');
3504
 
 
3505
 
3506
+ // execute function every <delay> ms
3507
+ var throttle = function(fn, delay) {
3508
+ var locked;
3509
 
3510
+ return function () {
3511
+ if (!locked) {
3512
+ fn.apply(this, arguments);
3513
+ locked = 1;
3514
+ setTimeout(function () { locked = 0; }, delay);
3515
+ }
3516
+ };
3517
+ };
3518
 
 
 
3519
 
3520
+ var slider = function(root, rtl) {
 
3521
 
3522
+ var progress = common.lastChild(root),
3523
+ disabled,
3524
+ offset,
3525
+ width,
3526
+ height,
3527
+ vertical,
3528
+ size,
3529
+ maxValue,
3530
+ max,
3531
+ skipAnimation = false,
3532
 
3533
+ /* private */
3534
+ calc = function() {
3535
+ offset = common.offset(root);
3536
+ width = common.width(root);
3537
+ height = common.height(root);
3538
 
3539
+ /* exit from fullscreen can mess this up.*/
3540
+ // vertical = height > width;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3541
 
3542
+ size = vertical ? height : width;
3543
+ max = toDelta(maxValue);
3544
+ },
3545
 
3546
+ fire = function(value) {
3547
+ if (!disabled && value != api.value && (!maxValue || value < maxValue)) {
3548
+ bean.fire(root, 'slide', [ value ]);
3549
+ api.value = value;
3550
+ }
3551
+ },
3552
 
3553
+ mousemove = function(e) {
3554
+ var pageX = e.pageX || e.clientX;
3555
+ if (!pageX && e.originalEvent && e.originalEvent.touches && e.originalEvent.touches.length) {
3556
+ pageX = e.originalEvent.touches[0].pageX;
3557
+ }
3558
+ var delta = vertical ? e.pageY - offset.top : pageX - offset.left;
3559
+ delta = Math.max(0, Math.min(max || size, delta));
3560
+
3561
+ var value = delta / size;
3562
+ if (vertical) value = 1 - value;
3563
+ if (rtl) value = 1 - value;
3564
+ return move(value, 0, true);
3565
+ },
3566
 
3567
+ move = function(value, speed) {
3568
+ if (speed === undefined) { speed = 0; }
3569
+ if (value > 1) value = 1;
3570
 
3571
+ var to = (Math.round(value * 1000) / 10) + "%";
3572
 
3573
+ if (!maxValue || value <= maxValue) {
3574
+ if (skipAnimation) {
3575
+ common.removeClass(progress, 'animated');
3576
+ } else {
3577
+ common.addClass(progress, 'animated');
3578
+ common.css(progress, 'transition-duration', (speed || 0) + 'ms');
3579
+ }
3580
+ common.css(progress, 'width', to);
3581
+ }
3582
 
3583
+ return value;
3584
+ },
3585
 
3586
+ toDelta = function(value) {
3587
+ return Math.max(0, Math.min(size, vertical ? (1 - value) * height : value * width));
3588
+ },
3589
 
3590
+ /* public */
3591
+ api = {
3592
 
3593
+ max: function(value) {
3594
+ maxValue = value;
3595
+ },
3596
 
3597
+ disable: function(flag) {
3598
+ disabled = flag;
3599
+ },
3600
 
3601
+ slide: function(value, speed, fireEvent) {
3602
+ calc();
3603
+ if (fireEvent) fire(value);
3604
+ move(value, speed);
3605
+ },
 
 
3606
 
3607
+ // Should animation be handled via css
3608
+ disableAnimation: function(value, alsoCssAnimations) {
3609
+ skipAnimation = value !== false;
3610
+ common.toggleClass(root, 'no-animation', !!alsoCssAnimations);
3611
+ }
3612
 
3613
+ };
 
 
3614
 
3615
+ calc();
 
 
 
3616
 
3617
+ // bound dragging into document
3618
+ bean.on(root, 'mousedown.sld touchstart', function(e) {
3619
+ e.preventDefault();
3620
 
3621
+ if (!disabled) {
3622
+ // begin --> recalculate. allows dynamic resizing of the slider
3623
+ var delayedFire = throttle(fire, 100);
3624
+ calc();
3625
+ api.dragging = true;
3626
+ common.addClass(root, 'is-dragging');
3627
+ fire(mousemove(e));
3628
+
3629
+ bean.on(document, 'mousemove.sld touchmove.sld', function(e) {
3630
+ e.preventDefault();
3631
+ delayedFire(mousemove(e));
3632
 
 
 
 
3633
  });
3634
+ bean.one(document, 'mouseup touchend', function() {
3635
+ api.dragging = false;
3636
+ common.removeClass(root, 'is-dragging');
3637
+ bean.off(document, 'mousemove.sld touchmove.sld');
3638
+ });
3639
 
3640
+ }
3641
 
3642
+ });
3643
+ return api;
3644
+ };
3645
 
3646
+ module.exports = slider;
 
 
 
3647
 
3648
+ },{"../../common":1,"bean":31}],27:[function(_dereq_,module,exports){
 
 
 
 
 
 
 
 
 
 
 
 
 
3649
 
 
3650
 
3651
+ var clipboard = module.exports = function(text, successCallback, errorCallback) {
3652
+ try {
3653
+ doCopy(text);
3654
+ successCallback();
3655
+ } catch (e) {
3656
+ errorCallback(e);
3657
+ }
3658
+ };
3659
 
3660
+ function doCopy(text) {
3661
+ var textArea = document.createElement('textarea');
3662
+ textArea.value = text;
3663
+ textArea.style.opacity = 0;
3664
+ textArea.style.position = 'absolute';
3665
+ document.body.appendChild(textArea);
3666
+ textArea.select();
3667
+ var success = document.execCommand('copy');
3668
+ document.body.removeChild(textArea);
3669
+ if (!success) throw new Error('Unsuccessfull');
3670
+ }
3671
 
3672
+ },{}],28:[function(_dereq_,module,exports){
3673
+ 'use strict';
3674
+ var extend = _dereq_('extend-object'),
3675
+ isFunction = _dereq_('is-function'),
3676
+ bean = _dereq_('bean'),
3677
+ slider = _dereq_('./ext/ui/slider'),
3678
+ barSlider = _dereq_('./ext/ui/bar-slider'),
3679
+ common = _dereq_('./common'),
3680
+ events = _dereq_('./ext/events');
3681
 
3682
+ var instances = [],
3683
+ extensions = [];
3684
 
 
3685
 
3686
+ var oldHandler = window.onbeforeunload;
3687
+ window.onbeforeunload = function(ev) {
3688
+ instances.forEach(function(api) {
3689
+ if (api.conf.splash) {
3690
+ api.unload();
3691
+ } else {
3692
+ api.bind("error", function () {
3693
+ common.find('.flowplayer.is-error .fp-message').forEach(common.removeNode);
3694
+ });
3695
+ }
3696
+ });
3697
+ if (oldHandler) return oldHandler(ev);
3698
+ };
3699
 
3700
+ var supportLocalStorage = false;
3701
+ try {
3702
+ if (typeof window.localStorage == "object") {
3703
+ window.localStorage.flowplayerTestStorage = "test";
3704
+ supportLocalStorage = true;
3705
+ }
3706
+ } catch (ignored) {}
3707
 
3708
+ var isSafari = /Safari/.exec(navigator.userAgent) && !/Chrome/.exec(navigator.userAgent),
3709
+ m = /(\d+\.\d+) Safari/.exec(navigator.userAgent),
3710
+ safariVersion = m ? Number(m[1]) : 100;
3711
 
3712
+ /* flowplayer() */
3713
+ var flowplayer = module.exports = function(fn, opts, callback) {
3714
+ if (isFunction(fn)) return extensions.push(fn);
3715
+ if (typeof fn == 'number' || typeof fn === 'undefined') return instances[fn || 0];
3716
+ if (fn.nodeType) { // Is an element
3717
+ if (fn.getAttribute('data-flowplayer-instance-id') !== null) { // Already flowplayer instance
3718
+ return instances[fn.getAttribute('data-flowplayer-instance-id')];
3719
+ }
3720
+ if (!opts) return; // Can't initialize without data
3721
+ return initializePlayer(fn, opts, callback);
3722
+ }
3723
+ if (fn.jquery) return flowplayer(fn[0], opts, callback);
3724
+ if (typeof fn === 'string') {
3725
+ var el = common.find(fn)[0];
3726
+ return el && flowplayer(el, opts, callback);
3727
+ }
3728
+ };
3729
 
3730
+ extend(flowplayer, {
3731
 
3732
+ version: '7.0.2',
 
 
 
 
 
 
 
 
3733
 
3734
+ engines: [],
3735
 
3736
+ extensions: [],
3737
 
3738
+ conf: {},
 
 
 
3739
 
3740
+ set: function(key, value) {
3741
+ if (typeof key === 'string') flowplayer.conf[key] = value;
3742
+ else extend(flowplayer.conf, key);
3743
+ },
3744
 
3745
+ registerExtension: function(js, css) {
3746
+ flowplayer.extensions.push([js, css]);
3747
+ },
3748
 
3749
+ support: {},
3750
 
3751
+ defaults: {
 
3752
 
3753
+ debug: supportLocalStorage ? !!localStorage.flowplayerDebug : false,
 
 
 
3754
 
3755
+ // true = forced playback
3756
+ disabled: false,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3757
 
3758
+ fullscreen: window == window.top,
 
 
 
 
 
3759
 
3760
+ // keyboard shortcuts
3761
+ keyboard: true,
3762
 
3763
+ // default aspect ratio
3764
+ ratio: 9 / 16,
 
 
 
 
 
 
 
3765
 
3766
+ adaptiveRatio: false,
 
 
 
3767
 
3768
+ rtmp: 0,
 
 
3769
 
3770
+ proxy: 'best',
 
 
3771
 
3772
+ hlsQualities: true,
3773
 
3774
+ splash: false,
 
 
 
 
 
 
 
 
 
3775
 
3776
+ live: false,
3777
+ livePositionOffset: 120,
3778
 
3779
+ swf: "//releases.flowplayer.org/7.0.2/flowplayer.swf",
3780
+ swfHls: "//releases.flowplayer.org/7.0.2/flowplayerhls.swf",
3781
 
3782
+ speeds: [0.25, 0.5, 1, 1.5, 2],
 
 
 
 
3783
 
3784
+ tooltip: true,
3785
 
3786
+ mouseoutTimeout: 5000,
3787
 
3788
+ // initial volume level
3789
+ volume: !supportLocalStorage ? 1 : localStorage.muted == "true" ? 0 : !isNaN(localStorage.volume) ? localStorage.volume || 1 : 1,
 
 
 
 
 
3790
 
3791
+ // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#error-codes
3792
+ errors: [
3793
 
3794
+ // video exceptions
3795
+ '',
3796
+ 'Video loading aborted',
3797
+ 'Network error',
3798
+ 'Video not properly encoded',
3799
+ 'Video file not found',
3800
 
3801
+ // player exceptions
3802
+ 'Unsupported video',
3803
+ 'Skin not found',
3804
+ 'SWF file not found',
3805
+ 'Subtitles not found',
3806
+ 'Invalid RTMP URL',
3807
+ 'Unsupported video format. Try installing Adobe Flash.'
3808
+ ],
3809
+ errorUrls: ['','','','','','','','','','',
3810
+ 'http://get.adobe.com/flashplayer/'
3811
+ ],
3812
+ playlist: [],
3813
 
3814
+ hlsFix: isSafari && safariVersion < 8
3815
 
3816
+ },
3817
+ // Expose utilities for plugins
3818
+ bean: bean,
3819
+ common: common,
3820
+ slider: slider,
3821
+ barSlider: barSlider,
3822
+ extend: extend
3823
 
 
 
 
 
 
 
3824
 
 
3825
 
3826
+ });
 
 
 
 
3827
 
3828
+ // keep track of players
3829
+ var playerCount = 0;
3830
+
3831
+ var URLResolver = _dereq_('./ext/resolve');
3832
+
3833
+
3834
+
3835
+ if (typeof window.jQuery !== 'undefined') {
3836
+ var $ = window.jQuery;
3837
+ // auto-install (any video tag with parent .flowplayer)
3838
+ $(function() {
3839
+ if (typeof $.fn.flowplayer == 'function') {
3840
+ $('.flowplayer:has(video,script[type="application/json"])').flowplayer();
3841
+ }
3842
+ });
3843
+
3844
+ // jQuery plugin
3845
+ var videoTagConfig = function(videoTag) {
3846
+ if (!videoTag.length) return {};
3847
+ var clip = videoTag.data() || {}, conf = {};
3848
+ $.each(['autoplay', 'loop', 'preload', 'poster'], function(i, key) {
3849
+ var val = videoTag.attr(key);
3850
+ if (val !== undefined && ['autoplay', 'poster'].indexOf(key) !== -1) conf[key] = val ? val : true;
3851
+ else if (val !== undefined) clip[key] = val ? val : true;
3852
+ });
3853
+ clip.subtitles = videoTag.find('track').map(function() {
3854
+ var tr = $(this);
3855
+ return {
3856
+ src: tr.attr('src'),
3857
+ kind: tr.attr('kind'),
3858
+ label: tr.attr('label'),
3859
+ srclang: tr.attr('srclang'),
3860
+ 'default': tr.prop('default')
3861
+ };
3862
+ }).get();
3863
+
3864
+ clip.sources = (new URLResolver()).sourcesFromVideoTag(videoTag, $);
3865
+ return extend(conf, {clip: clip});
3866
+ };
3867
+ $.fn.flowplayer = function(opts, callback) {
3868
+ return this.each(function() {
3869
+ if (typeof opts == 'string') opts = { swf: opts };
3870
+ if (isFunction(opts)) { callback = opts; opts = {}; }
3871
+ var root = $(this),
3872
+ scriptConf = root.find('script[type="application/json"]'),
3873
+ confObject = scriptConf.length ? JSON.parse(scriptConf.text()) : videoTagConfig(root.find('video')),
3874
+ conf = $.extend({}, opts || {}, confObject, root.data());
3875
+ var api = initializePlayer(this, conf, callback);
3876
+ events.EVENTS.forEach(function(evName) {
3877
+ api.on(evName + '.jquery', function(ev) {
3878
+ root.trigger.call(root, ev.type, ev.detail && ev.detail.args);
3879
+ });
3880
  });
3881
+ root.data('flowplayer', api);
3882
+ });
3883
+ };
3884
+ }
3885
 
3886
+ function initializePlayer(element, opts, callback) {
3887
+ if (opts && opts.embed) opts.embed = extend({}, flowplayer.defaults.embed, opts.embed);
 
 
3888
 
3889
+ var root = element,
3890
+ conf = extend({}, flowplayer.defaults, flowplayer.conf, opts),
3891
+ storage = {},
3892
+ lastSeekPosition,
3893
+ engine,
3894
+ urlResolver = new URLResolver();
3895
+
3896
+ common.addClass(root, 'is-loading');
3897
+ common.toggleClass(root, 'no-flex', !flowplayer.support.flex);
3898
+ common.toggleClass(root, 'no-svg', !flowplayer.support.svg);
3899
+ try {
3900
+ storage = supportLocalStorage ? window.localStorage : storage;
3901
+ } catch(e) {}
3902
 
3903
+ if (conf.aspectRatio && typeof conf.aspectRatio === 'string') {
3904
+ var parts = conf.aspectRatio.split(/[:\/]/);
3905
+ conf.ratio = parts[1] / parts[0];
 
 
 
3906
  }
3907
 
3908
+ var isRTL = (root.currentStyle && root.currentStyle.direction === 'rtl') ||
3909
+ (window.getComputedStyle && window.getComputedStyle(root, null) !== null && window.getComputedStyle(root, null).getPropertyValue('direction') === 'rtl');
 
3910
 
3911
+ if (isRTL) common.addClass(root, 'is-rtl');
3912
 
3913
+ /*** API ***/
3914
+ var api = {
 
3915
 
3916
+ // properties
3917
+ conf: conf,
3918
+ currentSpeed: 1,
3919
+ volumeLevel: conf.muted ? 0 : typeof conf.volume === "undefined" ? storage.volume * 1 : conf.volume,
3920
+ video: {},
3921
 
3922
+ // states
3923
+ disabled: false,
3924
+ finished: false,
3925
+ loading: false,
3926
+ muted: storage.muted == "true" || conf.muted,
3927
+ paused: false,
3928
+ playing: false,
3929
+ ready: false,
3930
+ splash: false,
3931
+ rtl: isRTL,
3932
+
3933
+ // methods
3934
+ //
3935
+ hijack: function(hijack) {
3936
+ try {
3937
+ api.engine.suspendEngine();
3938
+ } catch (e) { /* */ }
3939
+ api.hijacked = hijack;
3940
+ },
3941
+ release: function() {
3942
+ try {
3943
+ api.engine.resumeEngine();
3944
+ } catch (e) { /* */ }
3945
+ api.hijacked = false;
3946
+ },
3947
+ load: function(video, callback) {
3948
+
3949
+ if (api.error || api.loading) return;
3950
+ api.video = {};
3951
 
3952
+ api.finished = false;
3953
 
3954
+ video = video || conf.clip;
3955
 
3956
+ // resolve URL
3957
+ video = extend({}, urlResolver.resolve(video, conf.clip.sources));
3958
+ if (api.playing || api.engine) video.autoplay = true;
3959
+ var engineImpl = selectEngine(video);
3960
+ if (!engineImpl) return setTimeout(function() { api.trigger("error", [api, { code: flowplayer.support.flashVideo ? 5 : 10 }]); }) && api;
3961
+ if (!engineImpl.engineName) throw new Error('engineName property of factory should be exposed');
3962
+ if (!api.engine || engineImpl.engineName !== api.engine.engineName) {
3963
+ api.ready = false;
3964
+ if (api.engine) {
3965
+ api.engine.unload();
3966
+ api.conf.autoplay = true;
3967
+ }
3968
+ engine = api.engine = engineImpl(api, root);
3969
+ api.one('ready', function() {
3970
+ setTimeout(function() {
3971
+ if (api.muted) api.mute(true, true);
3972
+ else engine.volume(api.volumeLevel);
3973
+ });
3974
+ });
3975
+ }
3976
 
3977
+ extend(video, engine.pick(video.sources.filter(function(source) { // Filter out sources explicitely configured for some other engine
3978
+ if (!source.engine) return true;
3979
+ return source.engine === engine.engineName;
3980
+ })));
3981
 
3982
+ if (video.src) {
3983
+ var e = api.trigger('load', [api, video, engine], true);
3984
+ if (!e.defaultPrevented) {
3985
+ engine.load(video);
3986
 
3987
+ // callback
3988
+ if (isFunction(video)) callback = video;
3989
+ if (callback) api.one("ready", callback);
3990
+ } else {
3991
+ api.loading = false;
3992
+ }
3993
+ }
3994
 
3995
+ return api;
3996
+ },
3997
 
3998
+ pause: function(fn) {
3999
+ if (api.hijacked) return api.hijacked.pause(fn) | api;
4000
 
4001
+ if (api.ready && !api.seeking && !api.loading) {
4002
+ engine.pause();
4003
+ api.one("pause", fn);
4004
+ }
4005
+ return api;
4006
+ },
4007
 
4008
+ resume: function() {
4009
+ var ev = api.trigger('beforeresume', [api], true);
4010
+ if (ev.defaultPrevented) return;
4011
+ if (api.hijacked) return api.hijacked.resume() | api;
4012
 
4013
+ if (api.ready && api.paused) {
4014
+ engine.resume();
 
 
 
4015
 
4016
+ // Firefox (+others?) does not fire "resume" after finish
4017
+ if (api.finished) {
4018
+ api.trigger("resume", [api]);
4019
+ api.finished = false;
4020
+ }
4021
+ }
4022
 
4023
+ return api;
4024
+ },
4025
 
4026
+ toggle: function() {
4027
+ return api.ready ? api.paused ? api.resume() : api.pause() : api.load();
4028
+ },
4029
+
4030
+ /*
4031
+ seek(1.4) -> 1.4s time
4032
+ seek(true) -> 10% forward
4033
+ seek(false) -> 10% backward
4034
+ */
4035
+ seek: function(time, callback) {
4036
+ if (typeof time == "boolean") {
4037
+ var delta = api.video.duration * 0.1;
4038
+ time = api.video.time + (time ? delta : -delta);
4039
+ time = Math.min(Math.max(time, 0), api.video.duration - 0.1);
4040
+ }
4041
+ if (api.hijacked) return api.hijacked.seek(time, callback) | api;
4042
+ if (api.ready) {
4043
+ lastSeekPosition = time;
4044
+ var ev = api.trigger('beforeseek', [api, time], true);
4045
+ if (!ev.defaultPrevented) {
4046
+ engine.seek(time);
4047
+ if (isFunction(callback)) api.one("seek", callback);
4048
+ } else {
4049
+ api.seeking = false;
4050
+ common.toggleClass(root, 'is-seeking', api.seeking); // remove loading indicator
4051
+ }
4052
+ }
4053
+ return api;
4054
+ },
4055
+
4056
+ /*
4057
+ seekTo(1) -> 10%
4058
+ seekTo(2) -> 20%
4059
+ seekTo(3) -> 30%
4060
+ ...
4061
+ seekTo() -> last position
4062
+ */
4063
+ seekTo: function(position, fn) {
4064
+ if (position === undefined) return api.seek(lastSeekPosition, fn);
4065
+ if (api.video.seekOffset !== undefined) { // Live stream
4066
+ return api.seek(api.video.seekOffset + (api.video.duration - api.video.seekOffset) * 0.1 * position, fn);
4067
+ }
4068
+ return api.seek(api.video.duration * 0.1 * position, fn);
4069
+ },
4070
 
4071
+ mute: function(flag, skipStore) {
4072
+ if (flag === undefined) flag = !api.muted;
4073
+ if (!skipStore) {
4074
+ storage.muted = api.muted = flag;
4075
+ storage.volume = !isNaN(storage.volume) ? storage.volume : conf.volume; // make sure storage has volume
4076
+ }
4077
+ api.volume(flag ? 0 : storage.volume, true);
4078
+ api.trigger("mute", [api, flag]);
4079
+ return api;
4080
+ },
4081
+
4082
+ volume: function(level, skipStore) {
4083
+ if (api.ready) {
4084
+ level = Math.min(Math.max(level, 0), 1);
4085
+ if (!skipStore) storage.volume = level;
4086
+ engine.volume(level);
4087
+ }
4088
+
4089
+ return api;
4090
+ },
4091
+
4092
+ speed: function(val, callback) {
4093
+
4094
+ if (api.ready) {
4095
+
4096
+ // increase / decrease
4097
+ if (typeof val == "boolean") {
4098
+ val = conf.speeds[conf.speeds.indexOf(api.currentSpeed) + (val ? 1 : -1)] || api.currentSpeed;
4099
+ }
4100
+
4101
+ engine.speed(val);
4102
+ if (callback) root.one("speed", callback);
4103
+ }
4104
+
4105
+ return api;
4106
+ },
4107
+
4108
+
4109
+ stop: function() {
4110
+ if (api.ready) {
4111
+ api.pause();
4112
+ api.seek(0, function() {
4113
+ api.trigger("stop", [api]);
4114
+ });
4115
+ }
4116
+ return api;
4117
+ },
4118
+
4119
+ unload: function() {
4120
+
4121
+ if (conf.splash) {
4122
+ api.trigger("unload", [api]);
4123
+ if (engine) {
4124
+ engine.unload();
4125
+ api.engine = engine = 0;
4126
+ }
4127
+ } else {
4128
+ api.stop();
4129
+ }
4130
+ return api;
4131
+ },
4132
+
4133
+ shutdown: function() {
4134
+ api.unload();
4135
+ api.trigger('shutdown', [api]);
4136
+ bean.off(root);
4137
+ delete instances[root.getAttribute('data-flowplayer-instance-id')];
4138
+ root.removeAttribute('data-flowplayer-instance-id');
4139
+ },
4140
+
4141
+ disable: function(flag) {
4142
+ if (flag === undefined) flag = !api.disabled;
4143
+
4144
+ if (flag != api.disabled) {
4145
+ api.disabled = flag;
4146
+ api.trigger("disable", flag);
4147
+ }
4148
+ return api;
4149
+ },
4150
+
4151
+ registerExtension: function(jsUrls, cssUrls) {
4152
+ jsUrls = jsUrls || [];
4153
+ cssUrls = cssUrls || [];
4154
+ if (typeof jsUrls === 'string') jsUrls = [jsUrls];
4155
+ if (typeof cssUrls === 'string') cssUrls = [cssUrls];
4156
+ jsUrls.forEach(function(url) { api.extensions.js.push(url); });
4157
+ cssUrls.forEach(function(url) { api.extensions.css.push(url); });
4158
+ }
4159
+
4160
+ };
4161
+
4162
+ api.conf = extend(api.conf, conf);
4163
+ api.extensions = { js: [], css: [] };
4164
+ flowplayer.extensions.forEach(function(i) {
4165
+ api.registerExtension(i[0], i[1]);
4166
+ });
4167
+ /* event binding / unbinding */
4168
+ events(api);
4169
+
4170
+ var selectEngine = function(clip) {
4171
+ var engine;
4172
+ var engines = flowplayer.engines;
4173
+ if (conf.engine) {
4174
+ var eng = engines.filter(function(e) { return e.engineName === conf.engine; })[0];
4175
+ if (eng && clip.sources.some(function(source) {
4176
+ if (source.engine && source.engine !== eng.engineName) return false;
4177
+ return eng.canPlay(source.type, api.conf);
4178
+ })) return eng;
4179
+ }
4180
+ if (conf.enginePreference) engines = flowplayer.engines.filter(function(one) { return conf.enginePreference.indexOf(one.engineName) > -1; }).sort(function(a, b) {
4181
+ return conf.enginePreference.indexOf(a.engineName) - conf.enginePreference.indexOf(b.engineName);
4182
+ });
4183
+ clip.sources.some(function(source) {
4184
+ var eng = engines.filter(function(engine) {
4185
+ if (source.engine && source.engine !== engine.engineName) return false;
4186
+ return engine.canPlay(source.type, api.conf);
4187
+ }).shift();
4188
+ if (eng) engine = eng;
4189
+ return !!eng;
4190
+ });
4191
+ return engine;
4192
+ };
4193
+
4194
+ /*** Behaviour ***/
4195
+ if (!root.getAttribute('data-flowplayer-instance-id')) { // Only bind once
4196
+ root.setAttribute('data-flowplayer-instance-id', playerCount++);
4197
+
4198
+
4199
+ api.on('boot', function() {
4200
+
4201
+ // splash
4202
+ if (conf.splash || common.hasClass(root, "is-splash") || !flowplayer.support.firstframe) {
4203
+ api.forcedSplash = !conf.splash && !common.hasClass(root, "is-splash");
4204
+ api.splash = conf.autoplay = true;
4205
+ if (!conf.splash) conf.splash = true;
4206
+ common.addClass(root, "is-splash");
4207
+ }
4208
+
4209
+ if (conf.splash) common.find('video', root).forEach(common.removeNode);
4210
+
4211
+ if (conf.dvr || conf.live || common.hasClass(root, 'is-live')) {
4212
+ api.live = conf.live = true;
4213
+ api.dvr = conf.dvr = !!conf.dvr || common.hasClass(root, 'is-dvr');
4214
+ common.addClass(root, 'is-live');
4215
+ common.toggleClass(root, 'is-dvr', api.dvr);
4216
+ }
4217
+
4218
+ // extensions
4219
+ extensions.forEach(function(e) {
4220
+ e(api, root);
4221
+ });
4222
+
4223
+ // instances
4224
+ instances.push(api);
4225
+
4226
+ // start
4227
+ if (conf.splash) api.unload(); else api.load();
4228
+
4229
+ // disabled
4230
+ if (conf.disabled) api.disable();
4231
+
4232
+ // initial callback
4233
+ api.one("ready", callback);
4234
+
4235
+
4236
+ }).on("load", function(e, api, video) {
4237
+
4238
+ // unload others
4239
+ if (conf.splash) {
4240
+ common.find('.flowplayer.is-ready,.flowplayer.is-loading').forEach(function(el) {
4241
+ var playerId = el.getAttribute('data-flowplayer-instance-id');
4242
+ if (playerId === root.getAttribute('data-flowplayer-instance-id')) return;
4243
+ var a = instances[Number(playerId)];
4244
+ if (a && a.conf.splash) a.unload();
4245
+ });
4246
+
4247
+ }
4248
+
4249
+ // loading
4250
+ common.addClass(root, "is-loading");
4251
+ api.loading = true;
4252
+
4253
+ if (typeof video.live !== 'undefined' || typeof video.dvr !== 'undefined') {
4254
+ common.toggleClass(root, 'is-live', video.dvr || video.live);
4255
+ common.toggleClass(root, 'is-dvr', !!video.dvr);
4256
+ api.live = video.dvr || video.live;
4257
+ api.dvr = !!video.dvr;
4258
+ }
4259
+
4260
+
4261
+ }).on("ready", function(e, api, video) {
4262
+ video.time = 0;
4263
+ api.video = video;
4264
+
4265
+ common.removeClass(root, "is-loading");
4266
+ api.loading = false;
4267
+
4268
+ // saved state
4269
+ if (api.muted) api.mute(true, true);
4270
+ else api.volume(api.volumeLevel);
4271
+
4272
+ // see https://github.com/flowplayer/flowplayer/issues/479
4273
+
4274
+ var hlsFix = api.conf.hlsFix && /mpegurl/i.exec(video.type);
4275
+ common.toggleClass(root, 'hls-fix', !!hlsFix);
4276
+
4277
+ }).on("unload", function() {
4278
+ common.removeClass(root, "is-loading");
4279
+ api.loading = false;
4280
+
4281
+
4282
+ }).on("ready unload", function(e) {
4283
+ var is_ready = e.type == "ready";
4284
+ common.toggleClass(root, 'is-splash', !is_ready);
4285
+ common.toggleClass(root, 'is-ready', is_ready);
4286
+ api.ready = is_ready;
4287
+ api.splash = !is_ready;
4288
+
4289
+
4290
+ }).on("progress", function(e, api, time) {
4291
+ api.video.time = time;
4292
+ }).on('buffer', function(e, api, buffer) {
4293
+ api.video.buffer = buffer;
4294
+ }).on("speed", function(e, api, val) {
4295
+ api.currentSpeed = val;
4296
+
4297
+ }).on("volume", function(e, api, level) {
4298
+ api.volumeLevel = Math.round(level * 100) / 100;
4299
+ if (!api.muted) storage.volume = level;
4300
+ else if (level) api.mute(false);
4301
+
4302
+
4303
+ }).on("beforeseek seek", function(e) {
4304
+ api.seeking = e.type == "beforeseek";
4305
+ common.toggleClass(root, 'is-seeking', api.seeking);
4306
+
4307
+ }).on("ready pause resume unload finish stop", function(e) {
4308
+
4309
+ // PAUSED: pause / finish
4310
+ api.paused = /pause|finish|unload|stop/.test(e.type);
4311
+ api.paused = api.paused || e.type === 'ready' && !conf.autoplay && !api.playing;
4312
+
4313
+ // the opposite
4314
+ api.playing = !api.paused;
4315
+
4316
+ // CSS classes
4317
+ common.toggleClass(root, 'is-paused', api.paused);
4318
+ common.toggleClass(root, 'is-playing', api.playing);
4319
+
4320
+ // sanity check
4321
+ if (!api.load.ed) api.pause();
4322
+
4323
+ }).on("finish", function() {
4324
+ api.finished = true;
4325
+
4326
+ }).on("error", function() {
4327
+ });
4328
+ }
4329
+
4330
+ // boot
4331
+ api.trigger('boot', [api, root]);
4332
+ return api;
4333
+ }
4334
+
4335
+ },{"./common":1,"./ext/events":10,"./ext/resolve":19,"./ext/ui/bar-slider":25,"./ext/ui/slider":26,"bean":31,"extend-object":36,"is-function":39}],29:[function(_dereq_,module,exports){
4336
+ /* eslint-disable no-unused-vars */
4337
+
4338
+ //Flowplayer with extensions
4339
+
4340
+ _dereq_('es5-shim');
4341
+
4342
+ var flowplayer = module.exports = _dereq_('./flowplayer');
4343
+ //
4344
+
4345
+ //Support needed before engines
4346
+ _dereq_('./ext/support');
4347
+
4348
+ //Engines
4349
+ _dereq_('./engine/embed');
4350
+ _dereq_('./engine/html5');
4351
+ _dereq_('./engine/flash');
4352
+
4353
+ //Extensions
4354
+ //require('./ext/slider'); //TODO enable
4355
+ _dereq_('./ext/ui');
4356
+ _dereq_('./ext/message');
4357
+ _dereq_('./ext/keyboard');
4358
+ _dereq_('./ext/playlist');
4359
+ _dereq_('./ext/cuepoint');
4360
+ _dereq_('./ext/subtitle');
4361
+ _dereq_('./ext/analytics');
4362
+ _dereq_('./ext/share');
4363
+ _dereq_('./ext/facebook');
4364
+ _dereq_('./ext/twitter');
4365
+ _dereq_('./ext/embed');
4366
+ _dereq_('./ext/airplay');
4367
+ _dereq_('./ext/chromecast');
4368
+ _dereq_('./ext/qsel');
4369
+ _dereq_('./ext/menu');
4370
+ //Have to add fullscreen last
4371
+ _dereq_('./ext/fullscreen');
4372
+
4373
+ _dereq_('./ext/mobile');
4374
+ flowplayer(function(e,o){function a(e){var o=document.createElement("a");return o.href=e,t.hostname(o.hostname)}var l=function(e,o){var a=e.className.split(" ");a.indexOf(o)===-1&&(e.className+=" "+o)},n=function(e){return"none"!==window.getComputedStyle(e).display},r=e.conf,t=flowplayer.common,i=t.createElement,p=r.swf.indexOf("flowplayer.org")&&r.e&&o.getAttribute("data-origin"),s=p?a(p):t.hostname(),d=(document,r.key);if("file:"==location.protocol&&(s="localhost"),e.load.ed=1,r.hostname=s,r.origin=p||location.href,p&&l(o,"is-embedded"),"string"==typeof d&&(d=d.split(/,\s*/)),d&&"function"==typeof key_check&&key_check(d,s)){if(r.logo){var f=t.find(".fp-player",o)[0],c=i("a",{className:"fp-logo"});p&&(c.href=p),r.embed&&r.embed.popup&&(c.target="_blank");var h=i("img",{src:r.logo});c.appendChild(h),(f||o).appendChild(c)}}else{var c=i("a",{href:"https://flowplayer.org/hello"});o.appendChild(c);var y=i("div",{className:"fp-context-menu fp-menu"},'<strong>&copy; 2017 Flowplayer</strong><a href="https://flowplayer.org/hello">About Flowplayer</a><a href="https://flowplayer.org/license">GPL based license</a>'),g=window.location.href.indexOf("localhost"),f=t.find(".fp-player",o)[0];7!==g&&(f||o).appendChild(y),e.on("pause resume finish unload ready",function(e,a){var l=-1;if(a.video.src)for(var r=[["org","flowplayer","drive"],["org","flowplayer","my"],["org","flowplayer","cdn"]],t=0;t<r.length&&(l=a.video.src.indexOf("://"+r[t].reverse().join(".")),l===-1);t++);if(/pause|resume/.test(e.type)&&"flash"!=a.engine.engineName&&4!=l&&5!=l){var i={display:"block",position:"absolute",left:"16px",bottom:"70px",zIndex:99999,width:"100px",height:"20px",backgroundImage:"url("+[".png","logo","/",".net",".cloudfront","d32wqyuo10o653","//"].reverse().join("")+")"};for(var p in i)i.hasOwnProperty(p)&&(c.style[p]=i[p]);a.load.ed=n(c)&&(7===g||y.parentNode==o||y.parentNode==f),a.load.ed||a.pause()}else c.style.display="none"})}});
4375
+
4376
+
4377
+ },{"./engine/embed":2,"./engine/flash":3,"./engine/html5":4,"./ext/airplay":5,"./ext/analytics":6,"./ext/chromecast":7,"./ext/cuepoint":8,"./ext/embed":9,"./ext/facebook":11,"./ext/fullscreen":12,"./ext/keyboard":13,"./ext/menu":14,"./ext/message":15,"./ext/mobile":16,"./ext/playlist":17,"./ext/qsel":18,"./ext/share":20,"./ext/subtitle":21,"./ext/support":22,"./ext/twitter":23,"./ext/ui":24,"./flowplayer":28,"es5-shim":35}],30:[function(_dereq_,module,exports){
4378
+ 'use strict'
4379
+
4380
+ exports.byteLength = byteLength
4381
+ exports.toByteArray = toByteArray
4382
+ exports.fromByteArray = fromByteArray
4383
+
4384
+ var lookup = []
4385
+ var revLookup = []
4386
+ var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
4387
+
4388
+ var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
4389
+ for (var i = 0, len = code.length; i < len; ++i) {
4390
+ lookup[i] = code[i]
4391
+ revLookup[code.charCodeAt(i)] = i
4392
+ }
4393
+
4394
+ revLookup['-'.charCodeAt(0)] = 62
4395
+ revLookup['_'.charCodeAt(0)] = 63
4396
+
4397
+ function placeHoldersCount (b64) {
4398
+ var len = b64.length
4399
+ if (len % 4 > 0) {
4400
+ throw new Error('Invalid string. Length must be a multiple of 4')
4401
+ }
4402
+
4403
+ // the number of equal signs (place holders)
4404
+ // if there are two placeholders, than the two characters before it
4405
+ // represent one byte
4406
+ // if there is only one, then the three characters before it represent 2 bytes
4407
+ // this is just a cheap hack to not do indexOf twice
4408
+ return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
4409
+ }
4410
+
4411
+ function byteLength (b64) {
4412
+ // base64 is 4/3 + up to two characters of the original data
4413
+ return b64.length * 3 / 4 - placeHoldersCount(b64)
4414
+ }
4415
+
4416
+ function toByteArray (b64) {
4417
+ var i, j, l, tmp, placeHolders, arr
4418
+ var len = b64.length
4419
+ placeHolders = placeHoldersCount(b64)
4420
+
4421
+ arr = new Arr(len * 3 / 4 - placeHolders)
4422
+
4423
+ // if there are placeholders, only get up to the last complete 4 chars
4424
+ l = placeHolders > 0 ? len - 4 : len
4425
+
4426
+ var L = 0
4427
+
4428
+ for (i = 0, j = 0; i < l; i += 4, j += 3) {
4429
+ tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
4430
+ arr[L++] = (tmp >> 16) & 0xFF
4431
+ arr[L++] = (tmp >> 8) & 0xFF
4432
+ arr[L++] = tmp & 0xFF
4433
+ }
4434
+
4435
+ if (placeHolders === 2) {
4436
+ tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
4437
+ arr[L++] = tmp & 0xFF
4438
+ } else if (placeHolders === 1) {
4439
+ tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
4440
+ arr[L++] = (tmp >> 8) & 0xFF
4441
+ arr[L++] = tmp & 0xFF
4442
+ }
4443
+
4444
+ return arr
4445
+ }
4446
+
4447
+ function tripletToBase64 (num) {
4448
+ return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
4449
+ }
4450
+
4451
+ function encodeChunk (uint8, start, end) {
4452
+ var tmp
4453
+ var output = []
4454
+ for (var i = start; i < end; i += 3) {
4455
+ tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
4456
+ output.push(tripletToBase64(tmp))
4457
+ }
4458
+ return output.join('')
4459
+ }
4460
+
4461
+ function fromByteArray (uint8) {
4462
+ var tmp
4463
+ var len = uint8.length
4464
+ var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
4465
+ var output = ''
4466
+ var parts = []
4467
+ var maxChunkLength = 16383 // must be multiple of 3
4468
+
4469
+ // go through the array every three bytes, we'll deal with trailing stuff later
4470
+ for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
4471
+ parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
4472
+ }
4473
+
4474
+ // pad the end with zeros, but make sure to not forget the extra bytes
4475
+ if (extraBytes === 1) {
4476
+ tmp = uint8[len - 1]
4477
+ output += lookup[tmp >> 2]
4478
+ output += lookup[(tmp << 4) & 0x3F]
4479
+ output += '=='
4480
+ } else if (extraBytes === 2) {
4481
+ tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
4482
+ output += lookup[tmp >> 10]
4483
+ output += lookup[(tmp >> 4) & 0x3F]
4484
+ output += lookup[(tmp << 2) & 0x3F]
4485
+ output += '='
4486
+ }
4487
+
4488
+ parts.push(output)
4489
+
4490
+ return parts.join('')
4491
+ }
4492
+
4493
+ },{}],31:[function(_dereq_,module,exports){
4494
+ /*!
4495
+ * Bean - copyright (c) Jacob Thornton 2011-2012
4496
+ * https://github.com/fat/bean
4497
+ * MIT license
4498
+ */
4499
+ (function (name, context, definition) {
4500
+ if (typeof module != 'undefined' && module.exports) module.exports = definition()
4501
+ else if (typeof define == 'function' && define.amd) define(definition)
4502
+ else context[name] = definition()
4503
+ })('bean', this, function (name, context) {
4504
+ name = name || 'bean'
4505
+ context = context || this
4506
+
4507
+ var win = window
4508
+ , old = context[name]
4509
+ , namespaceRegex = /[^\.]*(?=\..*)\.|.*/
4510
+ , nameRegex = /\..*/
4511
+ , addEvent = 'addEventListener'
4512
+ , removeEvent = 'removeEventListener'
4513
+ , doc = document || {}
4514
+ , root = doc.documentElement || {}
4515
+ , W3C_MODEL = root[addEvent]
4516
+ , eventSupport = W3C_MODEL ? addEvent : 'attachEvent'
4517
+ , ONE = {} // singleton for quick matching making add() do one()
4518
+
4519
+ , slice = Array.prototype.slice
4520
+ , str2arr = function (s, d) { return s.split(d || ' ') }
4521
+ , isString = function (o) { return typeof o == 'string' }
4522
+ , isFunction = function (o) { return typeof o == 'function' }
4523
+
4524
+ // events that we consider to be 'native', anything not in this list will
4525
+ // be treated as a custom event
4526
+ , standardNativeEvents =
4527
+ 'click dblclick mouseup mousedown contextmenu ' + // mouse buttons
4528
+ 'mousewheel mousemultiwheel DOMMouseScroll ' + // mouse wheel
4529
+ 'mouseover mouseout mousemove selectstart selectend ' + // mouse movement
4530
+ 'keydown keypress keyup ' + // keyboard
4531
+ 'orientationchange ' + // mobile
4532
+ 'focus blur change reset select submit ' + // form elements
4533
+ 'load unload beforeunload resize move DOMContentLoaded ' + // window
4534
+ 'readystatechange message ' + // window
4535
+ 'error abort scroll ' // misc
4536
+ // element.fireEvent('onXYZ'... is not forgiving if we try to fire an event
4537
+ // that doesn't actually exist, so make sure we only do these on newer browsers
4538
+ , w3cNativeEvents =
4539
+ 'show ' + // mouse buttons
4540
+ 'input invalid ' + // form elements
4541
+ 'touchstart touchmove touchend touchcancel ' + // touch
4542
+ 'gesturestart gesturechange gestureend ' + // gesture
4543
+ 'textinput ' + // TextEvent
4544
+ 'readystatechange pageshow pagehide popstate ' + // window
4545
+ 'hashchange offline online ' + // window
4546
+ 'afterprint beforeprint ' + // printing
4547
+ 'dragstart dragenter dragover dragleave drag drop dragend ' + // dnd
4548
+ 'loadstart progress suspend emptied stalled loadmetadata ' + // media
4549
+ 'loadeddata canplay canplaythrough playing waiting seeking ' + // media
4550
+ 'seeked ended durationchange timeupdate play pause ratechange ' + // media
4551
+ 'volumechange cuechange ' + // media
4552
+ 'checking noupdate downloading cached updateready obsolete ' // appcache
4553
+
4554
+ // convert to a hash for quick lookups
4555
+ , nativeEvents = (function (hash, events, i) {
4556
+ for (i = 0; i < events.length; i++) events[i] && (hash[events[i]] = 1)
4557
+ return hash
4558
+ }({}, str2arr(standardNativeEvents + (W3C_MODEL ? w3cNativeEvents : ''))))
4559
+
4560
+ // custom events are events that we *fake*, they are not provided natively but
4561
+ // we can use native events to generate them
4562
+ , customEvents = (function () {
4563
+ var isAncestor = 'compareDocumentPosition' in root
4564
+ ? function (element, container) {
4565
+ return container.compareDocumentPosition && (container.compareDocumentPosition(element) & 16) === 16
4566
+ }
4567
+ : 'contains' in root
4568
+ ? function (element, container) {
4569
+ container = container.nodeType === 9 || container === window ? root : container
4570
+ return container !== element && container.contains(element)
4571
+ }
4572
+ : function (element, container) {
4573
+ while (element = element.parentNode) if (element === container) return 1
4574
+ return 0
4575
+ }
4576
+ , check = function (event) {
4577
+ var related = event.relatedTarget
4578
+ return !related
4579
+ ? related == null
4580
+ : (related !== this && related.prefix !== 'xul' && !/document/.test(this.toString())
4581
+ && !isAncestor(related, this))
4582
+ }
4583
+
4584
+ return {
4585
+ mouseenter: { base: 'mouseover', condition: check }
4586
+ , mouseleave: { base: 'mouseout', condition: check }
4587
+ , mousewheel: { base: /Firefox/.test(navigator.userAgent) ? 'DOMMouseScroll' : 'mousewheel' }
4588
+ }
4589
+ }())
4590
+
4591
+ // we provide a consistent Event object across browsers by taking the actual DOM
4592
+ // event object and generating a new one from its properties.
4593
+ , Event = (function () {
4594
+ // a whitelist of properties (for different event types) tells us what to check for and copy
4595
+ var commonProps = str2arr('altKey attrChange attrName bubbles cancelable ctrlKey currentTarget ' +
4596
+ 'detail eventPhase getModifierState isTrusted metaKey relatedNode relatedTarget shiftKey ' +
4597
+ 'srcElement target timeStamp type view which propertyName')
4598
+ , mouseProps = commonProps.concat(str2arr('button buttons clientX clientY dataTransfer ' +
4599
+ 'fromElement offsetX offsetY pageX pageY screenX screenY toElement'))
4600
+ , mouseWheelProps = mouseProps.concat(str2arr('wheelDelta wheelDeltaX wheelDeltaY wheelDeltaZ ' +
4601
+ 'axis')) // 'axis' is FF specific
4602
+ , keyProps = commonProps.concat(str2arr('char charCode key keyCode keyIdentifier ' +
4603
+ 'keyLocation location'))
4604
+ , textProps = commonProps.concat(str2arr('data'))
4605
+ , touchProps = commonProps.concat(str2arr('touches targetTouches changedTouches scale rotation'))
4606
+ , messageProps = commonProps.concat(str2arr('data origin source'))
4607
+ , stateProps = commonProps.concat(str2arr('state'))
4608
+ , overOutRegex = /over|out/
4609
+ // some event types need special handling and some need special properties, do that all here
4610
+ , typeFixers = [
4611
+ { // key events
4612
+ reg: /key/i
4613
+ , fix: function (event, newEvent) {
4614
+ newEvent.keyCode = event.keyCode || event.which
4615
+ return keyProps
4616
+ }
4617
+ }
4618
+ , { // mouse events
4619
+ reg: /click|mouse(?!(.*wheel|scroll))|menu|drag|drop/i
4620
+ , fix: function (event, newEvent, type) {
4621
+ newEvent.rightClick = event.which === 3 || event.button === 2
4622
+ newEvent.pos = { x: 0, y: 0 }
4623
+ if (event.pageX || event.pageY) {
4624
+ newEvent.clientX = event.pageX
4625
+ newEvent.clientY = event.pageY
4626
+ } else if (event.clientX || event.clientY) {
4627
+ newEvent.clientX = event.clientX + doc.body.scrollLeft + root.scrollLeft
4628
+ newEvent.clientY = event.clientY + doc.body.scrollTop + root.scrollTop
4629
+ }
4630
+ if (overOutRegex.test(type)) {
4631
+ newEvent.relatedTarget = event.relatedTarget
4632
+ || event[(type == 'mouseover' ? 'from' : 'to') + 'Element']
4633
+ }
4634
+ return mouseProps
4635
+ }
4636
+ }
4637
+ , { // mouse wheel events
4638
+ reg: /mouse.*(wheel|scroll)/i
4639
+ , fix: function () { return mouseWheelProps }
4640
+ }
4641
+ , { // TextEvent
4642
+ reg: /^text/i
4643
+ , fix: function () { return textProps }
4644
+ }
4645
+ , { // touch and gesture events
4646
+ reg: /^touch|^gesture/i
4647
+ , fix: function () { return touchProps }
4648
+ }
4649
+ , { // message events
4650
+ reg: /^message$/i
4651
+ , fix: function () { return messageProps }
4652
+ }
4653
+ , { // popstate events
4654
+ reg: /^popstate$/i
4655
+ , fix: function () { return stateProps }
4656
+ }
4657
+ , { // everything else
4658
+ reg: /.*/
4659
+ , fix: function () { return commonProps }
4660
+ }
4661
+ ]
4662
+ , typeFixerMap = {} // used to map event types to fixer functions (above), a basic cache mechanism
4663
+
4664
+ , Event = function (event, element, isNative) {
4665
+ if (!arguments.length) return
4666
+ event = event || ((element.ownerDocument || element.document || element).parentWindow || win).event
4667
+ this.originalEvent = event
4668
+ this.isNative = isNative
4669
+ this.isBean = true
4670
+
4671
+ if (!event) return
4672
+
4673
+ var type = event.type
4674
+ , target = event.target || event.srcElement
4675
+ , i, l, p, props, fixer
4676
+
4677
+ this.target = target && target.nodeType === 3 ? target.parentNode : target
4678
+
4679
+ if (isNative) { // we only need basic augmentation on custom events, the rest expensive & pointless
4680
+ fixer = typeFixerMap[type]
4681
+ if (!fixer) { // haven't encountered this event type before, map a fixer function for it
4682
+ for (i = 0, l = typeFixers.length; i < l; i++) {
4683
+ if (typeFixers[i].reg.test(type)) { // guaranteed to match at least one, last is .*
4684
+ typeFixerMap[type] = fixer = typeFixers[i].fix
4685
+ break
4686
+ }
4687
+ }
4688
+ }
4689
+
4690
+ props = fixer(event, this, type)
4691
+ for (i = props.length; i--;) {
4692
+ if (!((p = props[i]) in this) && p in event) this[p] = event[p]
4693
+ }
4694
+ }
4695
+ }
4696
+
4697
+ // preventDefault() and stopPropagation() are a consistent interface to those functions
4698
+ // on the DOM, stop() is an alias for both of them together
4699
+ Event.prototype.preventDefault = function () {
4700
+ if (this.originalEvent.preventDefault) this.originalEvent.preventDefault()
4701
+ else this.originalEvent.returnValue = false
4702
+ }
4703
+ Event.prototype.stopPropagation = function () {
4704
+ if (this.originalEvent.stopPropagation) this.originalEvent.stopPropagation()
4705
+ else this.originalEvent.cancelBubble = true
4706
+ }
4707
+ Event.prototype.stop = function () {
4708
+ this.preventDefault()
4709
+ this.stopPropagation()
4710
+ this.stopped = true
4711
+ }
4712
+ // stopImmediatePropagation() has to be handled internally because we manage the event list for
4713
+ // each element
4714
+ // note that originalElement may be a Bean#Event object in some situations
4715
+ Event.prototype.stopImmediatePropagation = function () {
4716
+ if (this.originalEvent.stopImmediatePropagation) this.originalEvent.stopImmediatePropagation()
4717
+ this.isImmediatePropagationStopped = function () { return true }
4718
+ }
4719
+ Event.prototype.isImmediatePropagationStopped = function () {
4720
+ return this.originalEvent.isImmediatePropagationStopped && this.originalEvent.isImmediatePropagationStopped()
4721
+ }
4722
+ Event.prototype.clone = function (currentTarget) {
4723
+ //TODO: this is ripe for optimisation, new events are *expensive*
4724
+ // improving this will speed up delegated events
4725
+ var ne = new Event(this, this.element, this.isNative)
4726
+ ne.currentTarget = currentTarget
4727
+ return ne
4728
+ }
4729
+
4730
+ return Event
4731
+ }())
4732
+
4733
+ // if we're in old IE we can't do onpropertychange on doc or win so we use doc.documentElement for both
4734
+ , targetElement = function (element, isNative) {
4735
+ return !W3C_MODEL && !isNative && (element === doc || element === win) ? root : element
4736
+ }
4737
+
4738
+ /**
4739
+ * Bean maintains an internal registry for event listeners. We don't touch elements, objects
4740
+ * or functions to identify them, instead we store everything in the registry.
4741
+ * Each event listener has a RegEntry object, we have one 'registry' for the whole instance.
4742
+ */
4743
+ , RegEntry = (function () {
4744
+ // each handler is wrapped so we can handle delegation and custom events
4745
+ var wrappedHandler = function (element, fn, condition, args) {
4746
+ var call = function (event, eargs) {
4747
+ return fn.apply(element, args ? slice.call(eargs, event ? 0 : 1).concat(args) : eargs)
4748
+ }
4749
+ , findTarget = function (event, eventElement) {
4750
+ return fn.__beanDel ? fn.__beanDel.ft(event.target, element) : eventElement
4751
+ }
4752
+ , handler = condition
4753
+ ? function (event) {
4754
+ var target = findTarget(event, this) // deleated event
4755
+ if (condition.apply(target, arguments)) {
4756
+ if (event) event.currentTarget = target
4757
+ return call(event, arguments)
4758
+ }
4759
+ }
4760
+ : function (event) {
4761
+ if (fn.__beanDel) event = event.clone(findTarget(event)) // delegated event, fix the fix
4762
+ return call(event, arguments)
4763
+ }
4764
+ handler.__beanDel = fn.__beanDel
4765
+ return handler
4766
+ }
4767
+
4768
+ , RegEntry = function (element, type, handler, original, namespaces, args, root) {
4769
+ var customType = customEvents[type]
4770
+ , isNative
4771
+
4772
+ if (type == 'unload') {
4773
+ // self clean-up
4774
+ handler = once(removeListener, element, type, handler, original)
4775
+ }
4776
+
4777
+ if (customType) {
4778
+ if (customType.condition) {
4779
+ handler = wrappedHandler(element, handler, customType.condition, args)
4780
+ }
4781
+ type = customType.base || type
4782
+ }
4783
+
4784
+ this.isNative = isNative = nativeEvents[type] && !!element[eventSupport]
4785
+ this.customType = !W3C_MODEL && !isNative && type
4786
+ this.element = element
4787
+ this.type = type
4788
+ this.original = original
4789
+ this.namespaces = namespaces
4790
+ this.eventType = W3C_MODEL || isNative ? type : 'propertychange'
4791
+ this.target = targetElement(element, isNative)
4792
+ this[eventSupport] = !!this.target[eventSupport]
4793
+ this.root = root
4794
+ this.handler = wrappedHandler(element, handler, null, args)
4795
+ }
4796
+
4797
+ // given a list of namespaces, is our entry in any of them?
4798
+ RegEntry.prototype.inNamespaces = function (checkNamespaces) {
4799
+ var i, j, c = 0
4800
+ if (!checkNamespaces) return true
4801
+ if (!this.namespaces) return false
4802
+ for (i = checkNamespaces.length; i--;) {
4803
+ for (j = this.namespaces.length; j--;) {
4804
+ if (checkNamespaces[i] == this.namespaces[j]) c++
4805
+ }
4806
+ }
4807
+ return checkNamespaces.length === c
4808
+ }
4809
+
4810
+ // match by element, original fn (opt), handler fn (opt)
4811
+ RegEntry.prototype.matches = function (checkElement, checkOriginal, checkHandler) {
4812
+ return this.element === checkElement &&
4813
+ (!checkOriginal || this.original === checkOriginal) &&
4814
+ (!checkHandler || this.handler === checkHandler)
4815
+ }
4816
+
4817
+ return RegEntry
4818
+ }())
4819
+
4820
+ , registry = (function () {
4821
+ // our map stores arrays by event type, just because it's better than storing
4822
+ // everything in a single array.
4823
+ // uses '$' as a prefix for the keys for safety and 'r' as a special prefix for
4824
+ // rootListeners so we can look them up fast
4825
+ var map = {}
4826
+
4827
+ // generic functional search of our registry for matching listeners,
4828
+ // `fn` returns false to break out of the loop
4829
+ , forAll = function (element, type, original, handler, root, fn) {
4830
+ var pfx = root ? 'r' : '$'
4831
+ if (!type || type == '*') {
4832
+ // search the whole registry
4833
+ for (var t in map) {
4834
+ if (t.charAt(0) == pfx) {
4835
+ forAll(element, t.substr(1), original, handler, root, fn)
4836
+ }
4837
+ }
4838
+ } else {
4839
+ var i = 0, l, list = map[pfx + type], all = element == '*'
4840
+ if (!list) return
4841
+ for (l = list.length; i < l; i++) {
4842
+ if ((all || list[i].matches(element, original, handler)) && !fn(list[i], list, i, type)) return
4843
+ }
4844
+ }
4845
+ }
4846
+
4847
+ , has = function (element, type, original, root) {
4848
+ // we're not using forAll here simply because it's a bit slower and this
4849
+ // needs to be fast
4850
+ var i, list = map[(root ? 'r' : '$') + type]
4851
+ if (list) {
4852
+ for (i = list.length; i--;) {
4853
+ if (!list[i].root && list[i].matches(element, original, null)) return true
4854
+ }
4855
+ }
4856
+ return false
4857
+ }
4858
+
4859
+ , get = function (element, type, original, root) {
4860
+ var entries = []
4861
+ forAll(element, type, original, null, root, function (entry) {
4862
+ return entries.push(entry)
4863
+ })
4864
+ return entries
4865
+ }
4866
+
4867
+ , put = function (entry) {
4868
+ var has = !entry.root && !this.has(entry.element, entry.type, null, false)
4869
+ , key = (entry.root ? 'r' : '$') + entry.type
4870
+ ;(map[key] || (map[key] = [])).push(entry)
4871
+ return has
4872
+ }
4873
+
4874
+ , del = function (entry) {
4875
+ forAll(entry.element, entry.type, null, entry.handler, entry.root, function (entry, list, i) {
4876
+ list.splice(i, 1)
4877
+ entry.removed = true
4878
+ if (list.length === 0) delete map[(entry.root ? 'r' : '$') + entry.type]
4879
+ return false
4880
+ })
4881
+ }
4882
+
4883
+ // dump all entries, used for onunload
4884
+ , entries = function () {
4885
+ var t, entries = []
4886
+ for (t in map) {
4887
+ if (t.charAt(0) == '$') entries = entries.concat(map[t])
4888
+ }
4889
+ return entries
4890
+ }
4891
+
4892
+ return { has: has, get: get, put: put, del: del, entries: entries }
4893
+ }())
4894
+
4895
+ // we need a selector engine for delegated events, use querySelectorAll if it exists
4896
+ // but for older browsers we need Qwery, Sizzle or similar
4897
+ , selectorEngine
4898
+ , setSelectorEngine = function (e) {
4899
+ if (!arguments.length) {
4900
+ selectorEngine = doc.querySelectorAll
4901
+ ? function (s, r) {
4902
+ return r.querySelectorAll(s)
4903
+ }
4904
+ : function () {
4905
+ throw new Error('Bean: No selector engine installed') // eeek
4906
+ }
4907
+ } else {
4908
+ selectorEngine = e
4909
+ }
4910
+ }
4911
+
4912
+ // we attach this listener to each DOM event that we need to listen to, only once
4913
+ // per event type per DOM element
4914
+ , rootListener = function (event, type) {
4915
+ if (!W3C_MODEL && type && event && event.propertyName != '_on' + type) return
4916
+
4917
+ var listeners = registry.get(this, type || event.type, null, false)
4918
+ , l = listeners.length
4919
+ , i = 0
4920
+
4921
+ event = new Event(event, this, true)
4922
+ if (type) event.type = type
4923
+
4924
+ // iterate through all handlers registered for this type, calling them unless they have
4925
+ // been removed by a previous handler or stopImmediatePropagation() has been called
4926
+ for (; i < l && !event.isImmediatePropagationStopped(); i++) {
4927
+ if (!listeners[i].removed) listeners[i].handler.call(this, event)
4928
+ }
4929
+ }
4930
+
4931
+ // add and remove listeners to DOM elements
4932
+ , listener = W3C_MODEL
4933
+ ? function (element, type, add) {
4934
+ // new browsers
4935
+ element[add ? addEvent : removeEvent](type, rootListener, false)
4936
+ }
4937
+ : function (element, type, add, custom) {
4938
+ // IE8 and below, use attachEvent/detachEvent and we have to piggy-back propertychange events
4939
+ // to simulate event bubbling etc.
4940
+ var entry
4941
+ if (add) {
4942
+ registry.put(entry = new RegEntry(
4943
+ element
4944
+ , custom || type
4945
+ , function (event) { // handler
4946
+ rootListener.call(element, event, custom)
4947
+ }
4948
+ , rootListener
4949
+ , null
4950
+ , null
4951
+ , true // is root
4952
+ ))
4953
+ if (custom && element['_on' + custom] == null) element['_on' + custom] = 0
4954
+ entry.target.attachEvent('on' + entry.eventType, entry.handler)
4955
+ } else {
4956
+ entry = registry.get(element, custom || type, rootListener, true)[0]
4957
+ if (entry) {
4958
+ entry.target.detachEvent('on' + entry.eventType, entry.handler)
4959
+ registry.del(entry)
4960
+ }
4961
+ }
4962
+ }
4963
+
4964
+ , once = function (rm, element, type, fn, originalFn) {
4965
+ // wrap the handler in a handler that does a remove as well
4966
+ return function () {
4967
+ fn.apply(this, arguments)
4968
+ rm(element, type, originalFn)
4969
+ }
4970
+ }
4971
+
4972
+ , removeListener = function (element, orgType, handler, namespaces) {
4973
+ var type = orgType && orgType.replace(nameRegex, '')
4974
+ , handlers = registry.get(element, type, null, false)
4975
+ , removed = {}
4976
+ , i, l
4977
+
4978
+ for (i = 0, l = handlers.length; i < l; i++) {
4979
+ if ((!handler || handlers[i].original === handler) && handlers[i].inNamespaces(namespaces)) {
4980
+ // TODO: this is problematic, we have a registry.get() and registry.del() that
4981
+ // both do registry searches so we waste cycles doing this. Needs to be rolled into
4982
+ // a single registry.forAll(fn) that removes while finding, but the catch is that
4983
+ // we'll be splicing the arrays that we're iterating over. Needs extra tests to
4984
+ // make sure we don't screw it up. @rvagg
4985
+ registry.del(handlers[i])
4986
+ if (!removed[handlers[i].eventType] && handlers[i][eventSupport])
4987
+ removed[handlers[i].eventType] = { t: handlers[i].eventType, c: handlers[i].type }
4988
+ }
4989
+ }
4990
+ // check each type/element for removed listeners and remove the rootListener where it's no longer needed
4991
+ for (i in removed) {
4992
+ if (!registry.has(element, removed[i].t, null, false)) {
4993
+ // last listener of this type, remove the rootListener
4994
+ listener(element, removed[i].t, false, removed[i].c)
4995
+ }
4996
+ }
4997
+ }
4998
+
4999
+ // set up a delegate helper using the given selector, wrap the handler function
5000
+ , delegate = function (selector, fn) {
5001
+ //TODO: findTarget (therefore $) is called twice, once for match and once for
5002
+ // setting e.currentTarget, fix this so it's only needed once
5003
+ var findTarget = function (target, root) {
5004
+ var i, array = isString(selector) ? selectorEngine(selector, root) : selector
5005
+ for (; target && target !== root; target = target.parentNode) {
5006
+ for (i = array.length; i--;) {
5007
+ if (array[i] === target) return target
5008
+ }
5009
+ }
5010
+ }
5011
+ , handler = function (e) {
5012
+ var match = findTarget(e.target, this)
5013
+ if (match) fn.apply(match, arguments)
5014
+ }
5015
+
5016
+ // __beanDel isn't pleasant but it's a private function, not exposed outside of Bean
5017
+ handler.__beanDel = {
5018
+ ft : findTarget // attach it here for customEvents to use too
5019
+ , selector : selector
5020
+ }
5021
+ return handler
5022
+ }
5023
+
5024
+ , fireListener = W3C_MODEL ? function (isNative, type, element) {
5025
+ // modern browsers, do a proper dispatchEvent()
5026
+ var evt = doc.createEvent(isNative ? 'HTMLEvents' : 'UIEvents')
5027
+ evt[isNative ? 'initEvent' : 'initUIEvent'](type, true, true, win, 1)
5028
+ element.dispatchEvent(evt)
5029
+ } : function (isNative, type, element) {
5030
+ // old browser use onpropertychange, just increment a custom property to trigger the event
5031
+ element = targetElement(element, isNative)
5032
+ isNative ? element.fireEvent('on' + type, doc.createEventObject()) : element['_on' + type]++
5033
+ }
5034
+
5035
+ /**
5036
+ * Public API: off(), on(), add(), (remove()), one(), fire(), clone()
5037
+ */
5038
+
5039
+ /**
5040
+ * off(element[, eventType(s)[, handler ]])
5041
+ */
5042
+ , off = function (element, typeSpec, fn) {
5043
+ var isTypeStr = isString(typeSpec)
5044
+ , k, type, namespaces, i
5045
+
5046
+ if (isTypeStr && typeSpec.indexOf(' ') > 0) {
5047
+ // off(el, 't1 t2 t3', fn) or off(el, 't1 t2 t3')
5048
+ typeSpec = str2arr(typeSpec)
5049
+ for (i = typeSpec.length; i--;)
5050
+ off(element, typeSpec[i], fn)
5051
+ return element
5052
+ }
5053
+
5054
+ type = isTypeStr && typeSpec.replace(nameRegex, '')
5055
+ if (type && customEvents[type]) type = customEvents[type].base
5056
+
5057
+ if (!typeSpec || isTypeStr) {
5058
+ // off(el) or off(el, t1.ns) or off(el, .ns) or off(el, .ns1.ns2.ns3)
5059
+ if (namespaces = isTypeStr && typeSpec.replace(namespaceRegex, '')) namespaces = str2arr(namespaces, '.')
5060
+ removeListener(element, type, fn, namespaces)
5061
+ } else if (isFunction(typeSpec)) {
5062
+ // off(el, fn)
5063
+ removeListener(element, null, typeSpec)
5064
+ } else {
5065
+ // off(el, { t1: fn1, t2, fn2 })
5066
+ for (k in typeSpec) {
5067
+ if (typeSpec.hasOwnProperty(k)) off(element, k, typeSpec[k])
5068
+ }
5069
+ }
5070
+
5071
+ return element
5072
+ }
5073
+
5074
+ /**
5075
+ * on(element, eventType(s)[, selector], handler[, args ])
5076
+ */
5077
+ , on = function(element, events, selector, fn) {
5078
+ var originalFn, type, types, i, args, entry, first
5079
+
5080
+ //TODO: the undefined check means you can't pass an 'args' argument, fix this perhaps?
5081
+ if (selector === undefined && typeof events == 'object') {
5082
+ //TODO: this can't handle delegated events
5083
+ for (type in events) {
5084
+ if (events.hasOwnProperty(type)) {
5085
+ on.call(this, element, type, events[type])
5086
+ }
5087
+ }
5088
+ return
5089
+ }
5090
+
5091
+ if (!isFunction(selector)) {
5092
+ // delegated event
5093
+ originalFn = fn
5094
+ args = slice.call(arguments, 4)
5095
+ fn = delegate(selector, originalFn, selectorEngine)
5096
+ } else {
5097
+ args = slice.call(arguments, 3)
5098
+ fn = originalFn = selector
5099
+ }
5100
+
5101
+ types = str2arr(events)
5102
+
5103
+ // special case for one(), wrap in a self-removing handler
5104
+ if (this === ONE) {
5105
+ fn = once(off, element, events, fn, originalFn)
5106
+ }
5107
+
5108
+ for (i = types.length; i--;) {
5109
+ // add new handler to the registry and check if it's the first for this element/type
5110
+ first = registry.put(entry = new RegEntry(
5111
+ element
5112
+ , types[i].replace(nameRegex, '') // event type
5113
+ , fn
5114
+ , originalFn
5115
+ , str2arr(types[i].replace(namespaceRegex, ''), '.') // namespaces
5116
+ , args
5117
+ , false // not root
5118
+ ))
5119
+ if (entry[eventSupport] && first) {
5120
+ // first event of this type on this element, add root listener
5121
+ listener(element, entry.eventType, true, entry.customType)
5122
+ }
5123
+ }
5124
+
5125
+ return element
5126
+ }
5127
+
5128
+ /**
5129
+ * add(element[, selector], eventType(s), handler[, args ])
5130
+ *
5131
+ * Deprecated: kept (for now) for backward-compatibility
5132
+ */
5133
+ , add = function (element, events, fn, delfn) {
5134
+ return on.apply(
5135
+ null
5136
+ , !isString(fn)
5137
+ ? slice.call(arguments)
5138
+ : [ element, fn, events, delfn ].concat(arguments.length > 3 ? slice.call(arguments, 5) : [])
5139
+ )
5140
+ }
5141
+
5142
+ /**
5143
+ * one(element, eventType(s)[, selector], handler[, args ])
5144
+ */
5145
+ , one = function () {
5146
+ return on.apply(ONE, arguments)
5147
+ }
5148
+
5149
+ /**
5150
+ * fire(element, eventType(s)[, args ])
5151
+ *
5152
+ * The optional 'args' argument must be an array, if no 'args' argument is provided
5153
+ * then we can use the browser's DOM event system, otherwise we trigger handlers manually
5154
+ */
5155
+ , fire = function (element, type, args) {
5156
+ var types = str2arr(type)
5157
+ , i, j, l, names, handlers
5158
+
5159
+ for (i = types.length; i--;) {
5160
+ type = types[i].replace(nameRegex, '')
5161
+ if (names = types[i].replace(namespaceRegex, '')) names = str2arr(names, '.')
5162
+ if (!names && !args && element[eventSupport]) {
5163
+ fireListener(nativeEvents[type], type, element)
5164
+ } else {
5165
+ // non-native event, either because of a namespace, arguments or a non DOM element
5166
+ // iterate over all listeners and manually 'fire'
5167
+ handlers = registry.get(element, type, null, false)
5168
+ args = [false].concat(args)
5169
+ for (j = 0, l = handlers.length; j < l; j++) {
5170
+ if (handlers[j].inNamespaces(names)) {
5171
+ handlers[j].handler.apply(element, args)
5172
+ }
5173
+ }
5174
+ }
5175
+ }
5176
+ return element
5177
+ }
5178
+
5179
+ /**
5180
+ * clone(dstElement, srcElement[, eventType ])
5181
+ *
5182
+ * TODO: perhaps for consistency we should allow the same flexibility in type specifiers?
5183
+ */
5184
+ , clone = function (element, from, type) {
5185
+ var handlers = registry.get(from, type, null, false)
5186
+ , l = handlers.length
5187
+ , i = 0
5188
+ , args, beanDel
5189
+
5190
+ for (; i < l; i++) {
5191
+ if (handlers[i].original) {
5192
+ args = [ element, handlers[i].type ]
5193
+ if (beanDel = handlers[i].handler.__beanDel) args.push(beanDel.selector)
5194
+ args.push(handlers[i].original)
5195
+ on.apply(null, args)
5196
+ }
5197
+ }
5198
+ return element
5199
+ }
5200
+
5201
+ , bean = {
5202
+ 'on' : on
5203
+ , 'add' : add
5204
+ , 'one' : one
5205
+ , 'off' : off
5206
+ , 'remove' : off
5207
+ , 'clone' : clone
5208
+ , 'fire' : fire
5209
+ , 'Event' : Event
5210
+ , 'setSelectorEngine' : setSelectorEngine
5211
+ , 'noConflict' : function () {
5212
+ context[name] = old
5213
+ return this
5214
+ }
5215
+ }
5216
+
5217
+ // for IE, clean up on unload to avoid leaks
5218
+ if (win.attachEvent) {
5219
+ var cleanup = function () {
5220
+ var i, entries = registry.entries()
5221
+ for (i in entries) {
5222
+ if (entries[i].type && entries[i].type !== 'unload') off(entries[i].element, entries[i].type)
5223
+ }
5224
+ win.detachEvent('onunload', cleanup)
5225
+ win.CollectGarbage && win.CollectGarbage()
5226
+ }
5227
+ win.attachEvent('onunload', cleanup)
5228
+ }
5229
+
5230
+ // initialize selector engine to internal default (qSA or throw Error)
5231
+ setSelectorEngine()
5232
+
5233
+ return bean
5234
+ });
5235
+
5236
+ },{}],32:[function(_dereq_,module,exports){
5237
+ (function (global){
5238
+ /*!
5239
+ * The buffer module from node.js, for the browser.
5240
+ *
5241
+ * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
5242
+ * @license MIT
5243
+ */
5244
+ /* eslint-disable no-proto */
5245
+
5246
+ 'use strict'
5247
+
5248
+ var base64 = _dereq_('base64-js')
5249
+ var ieee754 = _dereq_('ieee754')
5250
+ var isArray = _dereq_('isarray')
5251
+
5252
+ exports.Buffer = Buffer
5253
+ exports.SlowBuffer = SlowBuffer
5254
+ exports.INSPECT_MAX_BYTES = 50
5255
+
5256
+ /**
5257
+ * If `Buffer.TYPED_ARRAY_SUPPORT`:
5258
+ * === true Use Uint8Array implementation (fastest)
5259
+ * === false Use Object implementation (most compatible, even IE6)
5260
+ *
5261
+ * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
5262
+ * Opera 11.6+, iOS 4.2+.
5263
+ *
5264
+ * Due to various browser bugs, sometimes the Object implementation will be used even
5265
+ * when the browser supports typed arrays.
5266
+ *
5267
+ * Note:
5268
+ *
5269
+ * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
5270
+ * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
5271
+ *
5272
+ * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
5273
+ *
5274
+ * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
5275
+ * incorrect length in some situations.
5276
+
5277
+ * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
5278
+ * get the Object implementation, which is slower but behaves correctly.
5279
+ */
5280
+ Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined
5281
+ ? global.TYPED_ARRAY_SUPPORT
5282
+ : typedArraySupport()
5283
+
5284
+ /*
5285
+ * Export kMaxLength after typed array support is determined.
5286
+ */
5287
+ exports.kMaxLength = kMaxLength()
5288
+
5289
+ function typedArraySupport () {
5290
+ try {
5291
+ var arr = new Uint8Array(1)
5292
+ arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
5293
+ return arr.foo() === 42 && // typed array instances can be augmented
5294
+ typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`
5295
+ arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`
5296
+ } catch (e) {
5297
+ return false
5298
+ }
5299
+ }
5300
+
5301
+ function kMaxLength () {
5302
+ return Buffer.TYPED_ARRAY_SUPPORT
5303
+ ? 0x7fffffff
5304
+ : 0x3fffffff
5305
+ }
5306
+
5307
+ function createBuffer (that, length) {
5308
+ if (kMaxLength() < length) {
5309
+ throw new RangeError('Invalid typed array length')
5310
+ }
5311
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
5312
+ // Return an augmented `Uint8Array` instance, for best performance
5313
+ that = new Uint8Array(length)
5314
+ that.__proto__ = Buffer.prototype
5315
+ } else {
5316
+ // Fallback: Return an object instance of the Buffer class
5317
+ if (that === null) {
5318
+ that = new Buffer(length)
5319
+ }
5320
+ that.length = length
5321
+ }
5322
+
5323
+ return that
5324
+ }
5325
+
5326
+ /**
5327
+ * The Buffer constructor returns instances of `Uint8Array` that have their
5328
+ * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
5329
+ * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
5330
+ * and the `Uint8Array` methods. Square bracket notation works as expected -- it
5331
+ * returns a single octet.
5332
+ *
5333
+ * The `Uint8Array` prototype remains unmodified.
5334
+ */
5335
+
5336
+ function Buffer (arg, encodingOrOffset, length) {
5337
+ if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {
5338
+ return new Buffer(arg, encodingOrOffset, length)
5339
+ }
5340
+
5341
+ // Common case.
5342
+ if (typeof arg === 'number') {
5343
+ if (typeof encodingOrOffset === 'string') {
5344
+ throw new Error(
5345
+ 'If encoding is specified then the first argument must be a string'
5346
+ )
5347
+ }
5348
+ return allocUnsafe(this, arg)
5349
+ }
5350
+ return from(this, arg, encodingOrOffset, length)
5351
+ }
5352
+
5353
+ Buffer.poolSize = 8192 // not used by this implementation
5354
+
5355
+ // TODO: Legacy, not needed anymore. Remove in next major version.
5356
+ Buffer._augment = function (arr) {
5357
+ arr.__proto__ = Buffer.prototype
5358
+ return arr
5359
+ }
5360
+
5361
+ function from (that, value, encodingOrOffset, length) {
5362
+ if (typeof value === 'number') {
5363
+ throw new TypeError('"value" argument must not be a number')
5364
+ }
5365
+
5366
+ if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
5367
+ return fromArrayBuffer(that, value, encodingOrOffset, length)
5368
+ }
5369
+
5370
+ if (typeof value === 'string') {
5371
+ return fromString(that, value, encodingOrOffset)
5372
+ }
5373
+
5374
+ return fromObject(that, value)
5375
+ }
5376
+
5377
+ /**
5378
+ * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
5379
+ * if value is a number.
5380
+ * Buffer.from(str[, encoding])
5381
+ * Buffer.from(array)
5382
+ * Buffer.from(buffer)
5383
+ * Buffer.from(arrayBuffer[, byteOffset[, length]])
5384
+ **/
5385
+ Buffer.from = function (value, encodingOrOffset, length) {
5386
+ return from(null, value, encodingOrOffset, length)
5387
+ }
5388
+
5389
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
5390
+ Buffer.prototype.__proto__ = Uint8Array.prototype
5391
+ Buffer.__proto__ = Uint8Array
5392
+ if (typeof Symbol !== 'undefined' && Symbol.species &&
5393
+ Buffer[Symbol.species] === Buffer) {
5394
+ // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
5395
+ Object.defineProperty(Buffer, Symbol.species, {
5396
+ value: null,
5397
+ configurable: true
5398
+ })
5399
+ }
5400
+ }
5401
+
5402
+ function assertSize (size) {
5403
+ if (typeof size !== 'number') {
5404
+ throw new TypeError('"size" argument must be a number')
5405
+ } else if (size < 0) {
5406
+ throw new RangeError('"size" argument must not be negative')
5407
+ }
5408
+ }
5409
+
5410
+ function alloc (that, size, fill, encoding) {
5411
+ assertSize(size)
5412
+ if (size <= 0) {
5413
+ return createBuffer(that, size)
5414
+ }
5415
+ if (fill !== undefined) {
5416
+ // Only pay attention to encoding if it's a string. This
5417
+ // prevents accidentally sending in a number that would
5418
+ // be interpretted as a start offset.
5419
+ return typeof encoding === 'string'
5420
+ ? createBuffer(that, size).fill(fill, encoding)
5421
+ : createBuffer(that, size).fill(fill)
5422
+ }
5423
+ return createBuffer(that, size)
5424
+ }
5425
+
5426
+ /**
5427
+ * Creates a new filled Buffer instance.
5428
+ * alloc(size[, fill[, encoding]])
5429
+ **/
5430
+ Buffer.alloc = function (size, fill, encoding) {
5431
+ return alloc(null, size, fill, encoding)
5432
+ }
5433
+
5434
+ function allocUnsafe (that, size) {
5435
+ assertSize(size)
5436
+ that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)
5437
+ if (!Buffer.TYPED_ARRAY_SUPPORT) {
5438
+ for (var i = 0; i < size; ++i) {
5439
+ that[i] = 0
5440
+ }
5441
+ }
5442
+ return that
5443
+ }
5444
+
5445
+ /**
5446
+ * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
5447
+ * */
5448
+ Buffer.allocUnsafe = function (size) {
5449
+ return allocUnsafe(null, size)
5450
+ }
5451
+ /**
5452
+ * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
5453
+ */
5454
+ Buffer.allocUnsafeSlow = function (size) {
5455
+ return allocUnsafe(null, size)
5456
+ }
5457
+
5458
+ function fromString (that, string, encoding) {
5459
+ if (typeof encoding !== 'string' || encoding === '') {
5460
+ encoding = 'utf8'
5461
+ }
5462
+
5463
+ if (!Buffer.isEncoding(encoding)) {
5464
+ throw new TypeError('"encoding" must be a valid string encoding')
5465
+ }
5466
+
5467
+ var length = byteLength(string, encoding) | 0
5468
+ that = createBuffer(that, length)
5469
+
5470
+ var actual = that.write(string, encoding)
5471
+
5472
+ if (actual !== length) {
5473
+ // Writing a hex string, for example, that contains invalid characters will
5474
+ // cause everything after the first invalid character to be ignored. (e.g.
5475
+ // 'abxxcd' will be treated as 'ab')
5476
+ that = that.slice(0, actual)
5477
+ }
5478
+
5479
+ return that
5480
+ }
5481
+
5482
+ function fromArrayLike (that, array) {
5483
+ var length = array.length < 0 ? 0 : checked(array.length) | 0
5484
+ that = createBuffer(that, length)
5485
+ for (var i = 0; i < length; i += 1) {
5486
+ that[i] = array[i] & 255
5487
+ }
5488
+ return that
5489
+ }
5490
+
5491
+ function fromArrayBuffer (that, array, byteOffset, length) {
5492
+ array.byteLength // this throws if `array` is not a valid ArrayBuffer
5493
+
5494
+ if (byteOffset < 0 || array.byteLength < byteOffset) {
5495
+ throw new RangeError('\'offset\' is out of bounds')
5496
+ }
5497
+
5498
+ if (array.byteLength < byteOffset + (length || 0)) {
5499
+ throw new RangeError('\'length\' is out of bounds')
5500
+ }
5501
+
5502
+ if (byteOffset === undefined && length === undefined) {
5503
+ array = new Uint8Array(array)
5504
+ } else if (length === undefined) {
5505
+ array = new Uint8Array(array, byteOffset)
5506
+ } else {
5507
+ array = new Uint8Array(array, byteOffset, length)
5508
+ }
5509
+
5510
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
5511
+ // Return an augmented `Uint8Array` instance, for best performance
5512
+ that = array
5513
+ that.__proto__ = Buffer.prototype
5514
+ } else {
5515
+ // Fallback: Return an object instance of the Buffer class
5516
+ that = fromArrayLike(that, array)
5517
+ }
5518
+ return that
5519
+ }
5520
+
5521
+ function fromObject (that, obj) {
5522
+ if (Buffer.isBuffer(obj)) {
5523
+ var len = checked(obj.length) | 0
5524
+ that = createBuffer(that, len)
5525
+
5526
+ if (that.length === 0) {
5527
+ return that
5528
+ }
5529
+
5530
+ obj.copy(that, 0, 0, len)
5531
+ return that
5532
+ }
5533
+
5534
+ if (obj) {
5535
+ if ((typeof ArrayBuffer !== 'undefined' &&
5536
+ obj.buffer instanceof ArrayBuffer) || 'length' in obj) {
5537
+ if (typeof obj.length !== 'number' || isnan(obj.length)) {
5538
+ return createBuffer(that, 0)
5539
+ }
5540
+ return fromArrayLike(that, obj)
5541
+ }
5542
+
5543
+ if (obj.type === 'Buffer' && isArray(obj.data)) {
5544
+ return fromArrayLike(that, obj.data)
5545
+ }
5546
+ }
5547
+
5548
+ throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
5549
+ }
5550
+
5551
+ function checked (length) {
5552
+ // Note: cannot use `length < kMaxLength()` here because that fails when
5553
+ // length is NaN (which is otherwise coerced to zero.)
5554
+ if (length >= kMaxLength()) {
5555
+ throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
5556
+ 'size: 0x' + kMaxLength().toString(16) + ' bytes')
5557
+ }
5558
+ return length | 0
5559
+ }
5560
+
5561
+ function SlowBuffer (length) {
5562
+ if (+length != length) { // eslint-disable-line eqeqeq
5563
+ length = 0
5564
+ }
5565
+ return Buffer.alloc(+length)
5566
+ }
5567
+
5568
+ Buffer.isBuffer = function isBuffer (b) {
5569
+ return !!(b != null && b._isBuffer)
5570
+ }
5571
+
5572
+ Buffer.compare = function compare (a, b) {
5573
+ if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
5574
+ throw new TypeError('Arguments must be Buffers')
5575
+ }
5576
+
5577
+ if (a === b) return 0
5578
+
5579
+ var x = a.length
5580
+ var y = b.length
5581
+
5582
+ for (var i = 0, len = Math.min(x, y); i < len; ++i) {
5583
+ if (a[i] !== b[i]) {
5584
+ x = a[i]
5585
+ y = b[i]
5586
+ break
5587
+ }
5588
+ }
5589
+
5590
+ if (x < y) return -1
5591
+ if (y < x) return 1
5592
+ return 0
5593
+ }
5594
+
5595
+ Buffer.isEncoding = function isEncoding (encoding) {
5596
+ switch (String(encoding).toLowerCase()) {
5597
+ case 'hex':
5598
+ case 'utf8':
5599
+ case 'utf-8':
5600
+ case 'ascii':
5601
+ case 'latin1':
5602
+ case 'binary':
5603
+ case 'base64':
5604
+ case 'ucs2':
5605
+ case 'ucs-2':
5606
+ case 'utf16le':
5607
+ case 'utf-16le':
5608
+ return true
5609
+ default:
5610
+ return false
5611
+ }
5612
+ }
5613
+
5614
+ Buffer.concat = function concat (list, length) {
5615
+ if (!isArray(list)) {
5616
+ throw new TypeError('"list" argument must be an Array of Buffers')
5617
+ }
5618
+
5619
+ if (list.length === 0) {
5620
+ return Buffer.alloc(0)
5621
+ }
5622
+
5623
+ var i
5624
+ if (length === undefined) {
5625
+ length = 0
5626
+ for (i = 0; i < list.length; ++i) {
5627
+ length += list[i].length
5628
+ }
5629
+ }
5630
+
5631
+ var buffer = Buffer.allocUnsafe(length)
5632
+ var pos = 0
5633
+ for (i = 0; i < list.length; ++i) {
5634
+ var buf = list[i]
5635
+ if (!Buffer.isBuffer(buf)) {
5636
+ throw new TypeError('"list" argument must be an Array of Buffers')
5637
+ }
5638
+ buf.copy(buffer, pos)
5639
+ pos += buf.length
5640
+ }
5641
+ return buffer
5642
+ }
5643
+
5644
+ function byteLength (string, encoding) {
5645
+ if (Buffer.isBuffer(string)) {
5646
+ return string.length
5647
+ }
5648
+ if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&
5649
+ (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {
5650
+ return string.byteLength
5651
+ }
5652
+ if (typeof string !== 'string') {
5653
+ string = '' + string
5654
+ }
5655
+
5656
+ var len = string.length
5657
+ if (len === 0) return 0
5658
+
5659
+ // Use a for loop to avoid recursion
5660
+ var loweredCase = false
5661
+ for (;;) {
5662
+ switch (encoding) {
5663
+ case 'ascii':
5664
+ case 'latin1':
5665
+ case 'binary':
5666
+ return len
5667
+ case 'utf8':
5668
+ case 'utf-8':
5669
+ case undefined:
5670
+ return utf8ToBytes(string).length
5671
+ case 'ucs2':
5672
+ case 'ucs-2':
5673
+ case 'utf16le':
5674
+ case 'utf-16le':
5675
+ return len * 2
5676
+ case 'hex':
5677
+ return len >>> 1
5678
+ case 'base64':
5679
+ return base64ToBytes(string).length
5680
+ default:
5681
+ if (loweredCase) return utf8ToBytes(string).length // assume utf8
5682
+ encoding = ('' + encoding).toLowerCase()
5683
+ loweredCase = true
5684
+ }
5685
+ }
5686
+ }
5687
+ Buffer.byteLength = byteLength
5688
+
5689
+ function slowToString (encoding, start, end) {
5690
+ var loweredCase = false
5691
+
5692
+ // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
5693
+ // property of a typed array.
5694
+
5695
+ // This behaves neither like String nor Uint8Array in that we set start/end
5696
+ // to their upper/lower bounds if the value passed is out of range.
5697
+ // undefined is handled specially as per ECMA-262 6th Edition,
5698
+ // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
5699
+ if (start === undefined || start < 0) {
5700
+ start = 0
5701
+ }
5702
+ // Return early if start > this.length. Done here to prevent potential uint32
5703
+ // coercion fail below.
5704
+ if (start > this.length) {
5705
+ return ''
5706
+ }
5707
+
5708
+ if (end === undefined || end > this.length) {
5709
+ end = this.length
5710
+ }
5711
+
5712
+ if (end <= 0) {
5713
+ return ''
5714
+ }
5715
+
5716
+ // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
5717
+ end >>>= 0
5718
+ start >>>= 0
5719
+
5720
+ if (end <= start) {
5721
+ return ''
5722
+ }
5723
+
5724
+ if (!encoding) encoding = 'utf8'
5725
+
5726
+ while (true) {
5727
+ switch (encoding) {
5728
+ case 'hex':
5729
+ return hexSlice(this, start, end)
5730
+
5731
+ case 'utf8':
5732
+ case 'utf-8':
5733
+ return utf8Slice(this, start, end)
5734
+
5735
+ case 'ascii':
5736
+ return asciiSlice(this, start, end)
5737
+
5738
+ case 'latin1':
5739
+ case 'binary':
5740
+ return latin1Slice(this, start, end)
5741
+
5742
+ case 'base64':
5743
+ return base64Slice(this, start, end)
5744
+
5745
+ case 'ucs2':
5746
+ case 'ucs-2':
5747
+ case 'utf16le':
5748
+ case 'utf-16le':
5749
+ return utf16leSlice(this, start, end)
5750
+
5751
+ default:
5752
+ if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
5753
+ encoding = (encoding + '').toLowerCase()
5754
+ loweredCase = true
5755
+ }
5756
+ }
5757
+ }
5758
+
5759
+ // The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect
5760
+ // Buffer instances.
5761
+ Buffer.prototype._isBuffer = true
5762
+
5763
+ function swap (b, n, m) {
5764
+ var i = b[n]
5765
+ b[n] = b[m]
5766
+ b[m] = i
5767
+ }
5768
+
5769
+ Buffer.prototype.swap16 = function swap16 () {
5770
+ var len = this.length
5771
+ if (len % 2 !== 0) {
5772
+ throw new RangeError('Buffer size must be a multiple of 16-bits')
5773
+ }
5774
+ for (var i = 0; i < len; i += 2) {
5775
+ swap(this, i, i + 1)
5776
+ }
5777
+ return this
5778
+ }
5779
+
5780
+ Buffer.prototype.swap32 = function swap32 () {
5781
+ var len = this.length
5782
+ if (len % 4 !== 0) {
5783
+ throw new RangeError('Buffer size must be a multiple of 32-bits')
5784
+ }
5785
+ for (var i = 0; i < len; i += 4) {
5786
+ swap(this, i, i + 3)
5787
+ swap(this, i + 1, i + 2)
5788
+ }
5789
+ return this
5790
+ }
5791
+
5792
+ Buffer.prototype.swap64 = function swap64 () {
5793
+ var len = this.length
5794
+ if (len % 8 !== 0) {
5795
+ throw new RangeError('Buffer size must be a multiple of 64-bits')
5796
+ }
5797
+ for (var i = 0; i < len; i += 8) {
5798
+ swap(this, i, i + 7)
5799
+ swap(this, i + 1, i + 6)
5800
+ swap(this, i + 2, i + 5)
5801
+ swap(this, i + 3, i + 4)
5802
+ }
5803
+ return this
5804
+ }
5805
+
5806
+ Buffer.prototype.toString = function toString () {
5807
+ var length = this.length | 0
5808
+ if (length === 0) return ''
5809
+ if (arguments.length === 0) return utf8Slice(this, 0, length)
5810
+ return slowToString.apply(this, arguments)
5811
+ }
5812
+
5813
+ Buffer.prototype.equals = function equals (b) {
5814
+ if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
5815
+ if (this === b) return true
5816
+ return Buffer.compare(this, b) === 0
5817
+ }
5818
+
5819
+ Buffer.prototype.inspect = function inspect () {
5820
+ var str = ''
5821
+ var max = exports.INSPECT_MAX_BYTES
5822
+ if (this.length > 0) {
5823
+ str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
5824
+ if (this.length > max) str += ' ... '
5825
+ }
5826
+ return '<Buffer ' + str + '>'
5827
+ }
5828
+
5829
+ Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
5830
+ if (!Buffer.isBuffer(target)) {
5831
+ throw new TypeError('Argument must be a Buffer')
5832
+ }
5833
+
5834
+ if (start === undefined) {
5835
+ start = 0
5836
+ }
5837
+ if (end === undefined) {
5838
+ end = target ? target.length : 0
5839
+ }
5840
+ if (thisStart === undefined) {
5841
+ thisStart = 0
5842
+ }
5843
+ if (thisEnd === undefined) {
5844
+ thisEnd = this.length
5845
+ }
5846
+
5847
+ if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
5848
+ throw new RangeError('out of range index')
5849
+ }
5850
+
5851
+ if (thisStart >= thisEnd && start >= end) {
5852
+ return 0
5853
+ }
5854
+ if (thisStart >= thisEnd) {
5855
+ return -1
5856
+ }
5857
+ if (start >= end) {
5858
+ return 1
5859
+ }
5860
+
5861
+ start >>>= 0
5862
+ end >>>= 0
5863
+ thisStart >>>= 0
5864
+ thisEnd >>>= 0
5865
+
5866
+ if (this === target) return 0
5867
+
5868
+ var x = thisEnd - thisStart
5869
+ var y = end - start
5870
+ var len = Math.min(x, y)
5871
+
5872
+ var thisCopy = this.slice(thisStart, thisEnd)
5873
+ var targetCopy = target.slice(start, end)
5874
+
5875
+ for (var i = 0; i < len; ++i) {
5876
+ if (thisCopy[i] !== targetCopy[i]) {
5877
+ x = thisCopy[i]
5878
+ y = targetCopy[i]
5879
+ break
5880
+ }
5881
+ }
5882
+
5883
+ if (x < y) return -1
5884
+ if (y < x) return 1
5885
+ return 0
5886
+ }
5887
+
5888
+ // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
5889
+ // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
5890
+ //
5891
+ // Arguments:
5892
+ // - buffer - a Buffer to search
5893
+ // - val - a string, Buffer, or number
5894
+ // - byteOffset - an index into `buffer`; will be clamped to an int32
5895
+ // - encoding - an optional encoding, relevant is val is a string
5896
+ // - dir - true for indexOf, false for lastIndexOf
5897
+ function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
5898
+ // Empty buffer means no match
5899
+ if (buffer.length === 0) return -1
5900
+
5901
+ // Normalize byteOffset
5902
+ if (typeof byteOffset === 'string') {
5903
+ encoding = byteOffset
5904
+ byteOffset = 0
5905
+ } else if (byteOffset > 0x7fffffff) {
5906
+ byteOffset = 0x7fffffff
5907
+ } else if (byteOffset < -0x80000000) {
5908
+ byteOffset = -0x80000000
5909
+ }
5910
+ byteOffset = +byteOffset // Coerce to Number.
5911
+ if (isNaN(byteOffset)) {
5912
+ // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
5913
+ byteOffset = dir ? 0 : (buffer.length - 1)
5914
+ }
5915
+
5916
+ // Normalize byteOffset: negative offsets start from the end of the buffer
5917
+ if (byteOffset < 0) byteOffset = buffer.length + byteOffset
5918
+ if (byteOffset >= buffer.length) {
5919
+ if (dir) return -1
5920
+ else byteOffset = buffer.length - 1
5921
+ } else if (byteOffset < 0) {
5922
+ if (dir) byteOffset = 0
5923
+ else return -1
5924
+ }
5925
+
5926
+ // Normalize val
5927
+ if (typeof val === 'string') {
5928
+ val = Buffer.from(val, encoding)
5929
+ }
5930
+
5931
+ // Finally, search either indexOf (if dir is true) or lastIndexOf
5932
+ if (Buffer.isBuffer(val)) {
5933
+ // Special case: looking for empty string/buffer always fails
5934
+ if (val.length === 0) {
5935
+ return -1
5936
+ }
5937
+ return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
5938
+ } else if (typeof val === 'number') {
5939
+ val = val & 0xFF // Search for a byte value [0-255]
5940
+ if (Buffer.TYPED_ARRAY_SUPPORT &&
5941
+ typeof Uint8Array.prototype.indexOf === 'function') {
5942
+ if (dir) {
5943
+ return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
5944
+ } else {
5945
+ return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
5946
+ }
5947
+ }
5948
+ return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
5949
+ }
5950
+
5951
+ throw new TypeError('val must be string, number or Buffer')
5952
+ }
5953
+
5954
+ function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
5955
+ var indexSize = 1
5956
+ var arrLength = arr.length
5957
+ var valLength = val.length
5958
+
5959
+ if (encoding !== undefined) {
5960
+ encoding = String(encoding).toLowerCase()
5961
+ if (encoding === 'ucs2' || encoding === 'ucs-2' ||
5962
+ encoding === 'utf16le' || encoding === 'utf-16le') {
5963
+ if (arr.length < 2 || val.length < 2) {
5964
+ return -1
5965
+ }
5966
+ indexSize = 2
5967
+ arrLength /= 2
5968
+ valLength /= 2
5969
+ byteOffset /= 2
5970
+ }
5971
+ }
5972
+
5973
+ function read (buf, i) {
5974
+ if (indexSize === 1) {
5975
+ return buf[i]
5976
+ } else {
5977
+ return buf.readUInt16BE(i * indexSize)
5978
+ }
5979
+ }
5980
+
5981
+ var i
5982
+ if (dir) {
5983
+ var foundIndex = -1
5984
+ for (i = byteOffset; i < arrLength; i++) {
5985
+ if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
5986
+ if (foundIndex === -1) foundIndex = i
5987
+ if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
5988
+ } else {
5989
+ if (foundIndex !== -1) i -= i - foundIndex
5990
+ foundIndex = -1
5991
+ }
5992
+ }
5993
+ } else {
5994
+ if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
5995
+ for (i = byteOffset; i >= 0; i--) {
5996
+ var found = true
5997
+ for (var j = 0; j < valLength; j++) {
5998
+ if (read(arr, i + j) !== read(val, j)) {
5999
+ found = false
6000
+ break
6001
+ }
6002
+ }
6003
+ if (found) return i
6004
+ }
6005
+ }
6006
+
6007
+ return -1
6008
+ }
6009
+
6010
+ Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
6011
+ return this.indexOf(val, byteOffset, encoding) !== -1
6012
+ }
6013
+
6014
+ Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
6015
+ return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
6016
+ }
6017
+
6018
+ Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
6019
+ return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
6020
+ }
6021
+
6022
+ function hexWrite (buf, string, offset, length) {
6023
+ offset = Number(offset) || 0
6024
+ var remaining = buf.length - offset
6025
+ if (!length) {
6026
+ length = remaining
6027
+ } else {
6028
+ length = Number(length)
6029
+ if (length > remaining) {
6030
+ length = remaining
6031
+ }
6032
+ }
6033
+
6034
+ // must be an even number of digits
6035
+ var strLen = string.length
6036
+ if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
6037
+
6038
+ if (length > strLen / 2) {
6039
+ length = strLen / 2
6040
+ }
6041
+ for (var i = 0; i < length; ++i) {
6042
+ var parsed = parseInt(string.substr(i * 2, 2), 16)
6043
+ if (isNaN(parsed)) return i
6044
+ buf[offset + i] = parsed
6045
+ }
6046
+ return i
6047
+ }
6048
+
6049
+ function utf8Write (buf, string, offset, length) {
6050
+ return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
6051
+ }
6052
+
6053
+ function asciiWrite (buf, string, offset, length) {
6054
+ return blitBuffer(asciiToBytes(string), buf, offset, length)
6055
+ }
6056
+
6057
+ function latin1Write (buf, string, offset, length) {
6058
+ return asciiWrite(buf, string, offset, length)
6059
+ }
6060
+
6061
+ function base64Write (buf, string, offset, length) {
6062
+ return blitBuffer(base64ToBytes(string), buf, offset, length)
6063
+ }
6064
+
6065
+ function ucs2Write (buf, string, offset, length) {
6066
+ return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
6067
+ }
6068
+
6069
+ Buffer.prototype.write = function write (string, offset, length, encoding) {
6070
+ // Buffer#write(string)
6071
+ if (offset === undefined) {
6072
+ encoding = 'utf8'
6073
+ length = this.length
6074
+ offset = 0
6075
+ // Buffer#write(string, encoding)
6076
+ } else if (length === undefined && typeof offset === 'string') {
6077
+ encoding = offset
6078
+ length = this.length
6079
+ offset = 0
6080
+ // Buffer#write(string, offset[, length][, encoding])
6081
+ } else if (isFinite(offset)) {
6082
+ offset = offset | 0
6083
+ if (isFinite(length)) {
6084
+ length = length | 0
6085
+ if (encoding === undefined) encoding = 'utf8'
6086
+ } else {
6087
+ encoding = length
6088
+ length = undefined
6089
+ }
6090
+ // legacy write(string, encoding, offset, length) - remove in v0.13
6091
+ } else {
6092
+ throw new Error(
6093
+ 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
6094
+ )
6095
+ }
6096
+
6097
+ var remaining = this.length - offset
6098
+ if (length === undefined || length > remaining) length = remaining
6099
+
6100
+ if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
6101
+ throw new RangeError('Attempt to write outside buffer bounds')
6102
+ }
6103
+
6104
+ if (!encoding) encoding = 'utf8'
6105
+
6106
+ var loweredCase = false
6107
+ for (;;) {
6108
+ switch (encoding) {
6109
+ case 'hex':
6110
+ return hexWrite(this, string, offset, length)
6111
+
6112
+ case 'utf8':
6113
+ case 'utf-8':
6114
+ return utf8Write(this, string, offset, length)
6115
+
6116
+ case 'ascii':
6117
+ return asciiWrite(this, string, offset, length)
6118
+
6119
+ case 'latin1':
6120
+ case 'binary':
6121
+ return latin1Write(this, string, offset, length)
6122
+
6123
+ case 'base64':
6124
+ // Warning: maxLength not taken into account in base64Write
6125
+ return base64Write(this, string, offset, length)
6126
+
6127
+ case 'ucs2':
6128
+ case 'ucs-2':
6129
+ case 'utf16le':
6130
+ case 'utf-16le':
6131
+ return ucs2Write(this, string, offset, length)
6132
+
6133
+ default:
6134
+ if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
6135
+ encoding = ('' + encoding).toLowerCase()
6136
+ loweredCase = true
6137
+ }
6138
+ }
6139
+ }
6140
+
6141
+ Buffer.prototype.toJSON = function toJSON () {
6142
+ return {
6143
+ type: 'Buffer',
6144
+ data: Array.prototype.slice.call(this._arr || this, 0)
6145
+ }
6146
+ }
6147
+
6148
+ function base64Slice (buf, start, end) {
6149
+ if (start === 0 && end === buf.length) {
6150
+ return base64.fromByteArray(buf)
6151
+ } else {
6152
+ return base64.fromByteArray(buf.slice(start, end))
6153
+ }
6154
+ }
6155
+
6156
+ function utf8Slice (buf, start, end) {
6157
+ end = Math.min(buf.length, end)
6158
+ var res = []
6159
+
6160
+ var i = start
6161
+ while (i < end) {
6162
+ var firstByte = buf[i]
6163
+ var codePoint = null
6164
+ var bytesPerSequence = (firstByte > 0xEF) ? 4
6165
+ : (firstByte > 0xDF) ? 3
6166
+ : (firstByte > 0xBF) ? 2
6167
+ : 1
6168
+
6169
+ if (i + bytesPerSequence <= end) {
6170
+ var secondByte, thirdByte, fourthByte, tempCodePoint
6171
+
6172
+ switch (bytesPerSequence) {
6173
+ case 1:
6174
+ if (firstByte < 0x80) {
6175
+ codePoint = firstByte
6176
+ }
6177
+ break
6178
+ case 2:
6179
+ secondByte = buf[i + 1]
6180
+ if ((secondByte & 0xC0) === 0x80) {
6181
+ tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
6182
+ if (tempCodePoint > 0x7F) {
6183
+ codePoint = tempCodePoint
6184
+ }
6185
+ }
6186
+ break
6187
+ case 3:
6188
+ secondByte = buf[i + 1]
6189
+ thirdByte = buf[i + 2]
6190
+ if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
6191
+ tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
6192
+ if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
6193
+ codePoint = tempCodePoint
6194
+ }
6195
+ }
6196
+ break
6197
+ case 4:
6198
+ secondByte = buf[i + 1]
6199
+ thirdByte = buf[i + 2]
6200
+ fourthByte = buf[i + 3]
6201
+ if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
6202
+ tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
6203
+ if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
6204
+ codePoint = tempCodePoint
6205
+ }
6206
+ }
6207
+ }
6208
+ }
6209
+
6210
+ if (codePoint === null) {
6211
+ // we did not generate a valid codePoint so insert a
6212
+ // replacement char (U+FFFD) and advance only 1 byte
6213
+ codePoint = 0xFFFD
6214
+ bytesPerSequence = 1
6215
+ } else if (codePoint > 0xFFFF) {
6216
+ // encode to utf16 (surrogate pair dance)
6217
+ codePoint -= 0x10000
6218
+ res.push(codePoint >>> 10 & 0x3FF | 0xD800)
6219
+ codePoint = 0xDC00 | codePoint & 0x3FF
6220
+ }
6221
+
6222
+ res.push(codePoint)
6223
+ i += bytesPerSequence
6224
+ }
6225
+
6226
+ return decodeCodePointsArray(res)
6227
+ }
6228
+
6229
+ // Based on http://stackoverflow.com/a/22747272/680742, the browser with
6230
+ // the lowest limit is Chrome, with 0x10000 args.
6231
+ // We go 1 magnitude less, for safety
6232
+ var MAX_ARGUMENTS_LENGTH = 0x1000
6233
+
6234
+ function decodeCodePointsArray (codePoints) {
6235
+ var len = codePoints.length
6236
+ if (len <= MAX_ARGUMENTS_LENGTH) {
6237
+ return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
6238
+ }
6239
+
6240
+ // Decode in chunks to avoid "call stack size exceeded".
6241
+ var res = ''
6242
+ var i = 0
6243
+ while (i < len) {
6244
+ res += String.fromCharCode.apply(
6245
+ String,
6246
+ codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
6247
+ )
6248
+ }
6249
+ return res
6250
+ }
6251
+
6252
+ function asciiSlice (buf, start, end) {
6253
+ var ret = ''
6254
+ end = Math.min(buf.length, end)
6255
+
6256
+ for (var i = start; i < end; ++i) {
6257
+ ret += String.fromCharCode(buf[i] & 0x7F)
6258
+ }
6259
+ return ret
6260
+ }
6261
+
6262
+ function latin1Slice (buf, start, end) {
6263
+ var ret = ''
6264
+ end = Math.min(buf.length, end)
6265
+
6266
+ for (var i = start; i < end; ++i) {
6267
+ ret += String.fromCharCode(buf[i])
6268
+ }
6269
+ return ret
6270
+ }
6271
+
6272
+ function hexSlice (buf, start, end) {
6273
+ var len = buf.length
6274
+
6275
+ if (!start || start < 0) start = 0
6276
+ if (!end || end < 0 || end > len) end = len
6277
+
6278
+ var out = ''
6279
+ for (var i = start; i < end; ++i) {
6280
+ out += toHex(buf[i])
6281
+ }
6282
+ return out
6283
+ }
6284
+
6285
+ function utf16leSlice (buf, start, end) {
6286
+ var bytes = buf.slice(start, end)
6287
+ var res = ''
6288
+ for (var i = 0; i < bytes.length; i += 2) {
6289
+ res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)
6290
+ }
6291
+ return res
6292
+ }
6293
+
6294
+ Buffer.prototype.slice = function slice (start, end) {
6295
+ var len = this.length
6296
+ start = ~~start
6297
+ end = end === undefined ? len : ~~end
6298
+
6299
+ if (start < 0) {
6300
+ start += len
6301
+ if (start < 0) start = 0
6302
+ } else if (start > len) {
6303
+ start = len
6304
+ }
6305
+
6306
+ if (end < 0) {
6307
+ end += len
6308
+ if (end < 0) end = 0
6309
+ } else if (end > len) {
6310
+ end = len
6311
+ }
6312
+
6313
+ if (end < start) end = start
6314
+
6315
+ var newBuf
6316
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
6317
+ newBuf = this.subarray(start, end)
6318
+ newBuf.__proto__ = Buffer.prototype
6319
+ } else {
6320
+ var sliceLen = end - start
6321
+ newBuf = new Buffer(sliceLen, undefined)
6322
+ for (var i = 0; i < sliceLen; ++i) {
6323
+ newBuf[i] = this[i + start]
6324
+ }
6325
+ }
6326
+
6327
+ return newBuf
6328
+ }
6329
+
6330
+ /*
6331
+ * Need to make sure that buffer isn't trying to write out of bounds.
6332
+ */
6333
+ function checkOffset (offset, ext, length) {
6334
+ if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
6335
+ if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
6336
+ }
6337
+
6338
+ Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
6339
+ offset = offset | 0
6340
+ byteLength = byteLength | 0
6341
+ if (!noAssert) checkOffset(offset, byteLength, this.length)
6342
+
6343
+ var val = this[offset]
6344
+ var mul = 1
6345
+ var i = 0
6346
+ while (++i < byteLength && (mul *= 0x100)) {
6347
+ val += this[offset + i] * mul
6348
+ }
6349
+
6350
+ return val
6351
+ }
6352
+
6353
+ Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
6354
+ offset = offset | 0
6355
+ byteLength = byteLength | 0
6356
+ if (!noAssert) {
6357
+ checkOffset(offset, byteLength, this.length)
6358
+ }
6359
+
6360
+ var val = this[offset + --byteLength]
6361
+ var mul = 1
6362
+ while (byteLength > 0 && (mul *= 0x100)) {
6363
+ val += this[offset + --byteLength] * mul
6364
+ }
6365
+
6366
+ return val
6367
+ }
6368
+
6369
+ Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
6370
+ if (!noAssert) checkOffset(offset, 1, this.length)
6371
+ return this[offset]
6372
+ }
6373
+
6374
+ Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
6375
+ if (!noAssert) checkOffset(offset, 2, this.length)
6376
+ return this[offset] | (this[offset + 1] << 8)
6377
+ }
6378
+
6379
+ Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
6380
+ if (!noAssert) checkOffset(offset, 2, this.length)
6381
+ return (this[offset] << 8) | this[offset + 1]
6382
+ }
6383
+
6384
+ Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
6385
+ if (!noAssert) checkOffset(offset, 4, this.length)
6386
+
6387
+ return ((this[offset]) |
6388
+ (this[offset + 1] << 8) |
6389
+ (this[offset + 2] << 16)) +
6390
+ (this[offset + 3] * 0x1000000)
6391
+ }
6392
+
6393
+ Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
6394
+ if (!noAssert) checkOffset(offset, 4, this.length)
6395
+
6396
+ return (this[offset] * 0x1000000) +
6397
+ ((this[offset + 1] << 16) |
6398
+ (this[offset + 2] << 8) |
6399
+ this[offset + 3])
6400
+ }
6401
+
6402
+ Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
6403
+ offset = offset | 0
6404
+ byteLength = byteLength | 0
6405
+ if (!noAssert) checkOffset(offset, byteLength, this.length)
6406
+
6407
+ var val = this[offset]
6408
+ var mul = 1
6409
+ var i = 0
6410
+ while (++i < byteLength && (mul *= 0x100)) {
6411
+ val += this[offset + i] * mul
6412
+ }
6413
+ mul *= 0x80
6414
+
6415
+ if (val >= mul) val -= Math.pow(2, 8 * byteLength)
6416
+
6417
+ return val
6418
+ }
6419
+
6420
+ Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
6421
+ offset = offset | 0
6422
+ byteLength = byteLength | 0
6423
+ if (!noAssert) checkOffset(offset, byteLength, this.length)
6424
+
6425
+ var i = byteLength
6426
+ var mul = 1
6427
+ var val = this[offset + --i]
6428
+ while (i > 0 && (mul *= 0x100)) {
6429
+ val += this[offset + --i] * mul
6430
+ }
6431
+ mul *= 0x80
6432
+
6433
+ if (val >= mul) val -= Math.pow(2, 8 * byteLength)
6434
+
6435
+ return val
6436
+ }
6437
+
6438
+ Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
6439
+ if (!noAssert) checkOffset(offset, 1, this.length)
6440
+ if (!(this[offset] & 0x80)) return (this[offset])
6441
+ return ((0xff - this[offset] + 1) * -1)
6442
+ }
6443
+
6444
+ Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
6445
+ if (!noAssert) checkOffset(offset, 2, this.length)
6446
+ var val = this[offset] | (this[offset + 1] << 8)
6447
+ return (val & 0x8000) ? val | 0xFFFF0000 : val
6448
+ }
6449
+
6450
+ Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
6451
+ if (!noAssert) checkOffset(offset, 2, this.length)
6452
+ var val = this[offset + 1] | (this[offset] << 8)
6453
+ return (val & 0x8000) ? val | 0xFFFF0000 : val
6454
+ }
6455
+
6456
+ Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
6457
+ if (!noAssert) checkOffset(offset, 4, this.length)
6458
+
6459
+ return (this[offset]) |
6460
+ (this[offset + 1] << 8) |
6461
+ (this[offset + 2] << 16) |
6462
+ (this[offset + 3] << 24)
6463
+ }
6464
+
6465
+ Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
6466
+ if (!noAssert) checkOffset(offset, 4, this.length)
6467
+
6468
+ return (this[offset] << 24) |
6469
+ (this[offset + 1] << 16) |
6470
+ (this[offset + 2] << 8) |
6471
+ (this[offset + 3])
6472
+ }
6473
+
6474
+ Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
6475
+ if (!noAssert) checkOffset(offset, 4, this.length)
6476
+ return ieee754.read(this, offset, true, 23, 4)
6477
+ }
6478
+
6479
+ Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
6480
+ if (!noAssert) checkOffset(offset, 4, this.length)
6481
+ return ieee754.read(this, offset, false, 23, 4)
6482
+ }
6483
+
6484
+ Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
6485
+ if (!noAssert) checkOffset(offset, 8, this.length)
6486
+ return ieee754.read(this, offset, true, 52, 8)
6487
+ }
6488
+
6489
+ Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
6490
+ if (!noAssert) checkOffset(offset, 8, this.length)
6491
+ return ieee754.read(this, offset, false, 52, 8)
6492
+ }
6493
+
6494
+ function checkInt (buf, value, offset, ext, max, min) {
6495
+ if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
6496
+ if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
6497
+ if (offset + ext > buf.length) throw new RangeError('Index out of range')
6498
+ }
6499
+
6500
+ Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
6501
+ value = +value
6502
+ offset = offset | 0
6503
+ byteLength = byteLength | 0
6504
+ if (!noAssert) {
6505
+ var maxBytes = Math.pow(2, 8 * byteLength) - 1
6506
+ checkInt(this, value, offset, byteLength, maxBytes, 0)
6507
+ }
6508
+
6509
+ var mul = 1
6510
+ var i = 0
6511
+ this[offset] = value & 0xFF
6512
+ while (++i < byteLength && (mul *= 0x100)) {
6513
+ this[offset + i] = (value / mul) & 0xFF
6514
+ }
6515
+
6516
+ return offset + byteLength
6517
+ }
6518
+
6519
+ Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
6520
+ value = +value
6521
+ offset = offset | 0
6522
+ byteLength = byteLength | 0
6523
+ if (!noAssert) {
6524
+ var maxBytes = Math.pow(2, 8 * byteLength) - 1
6525
+ checkInt(this, value, offset, byteLength, maxBytes, 0)
6526
+ }
6527
+
6528
+ var i = byteLength - 1
6529
+ var mul = 1
6530
+ this[offset + i] = value & 0xFF
6531
+ while (--i >= 0 && (mul *= 0x100)) {
6532
+ this[offset + i] = (value / mul) & 0xFF
6533
+ }
6534
+
6535
+ return offset + byteLength
6536
+ }
6537
+
6538
+ Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
6539
+ value = +value
6540
+ offset = offset | 0
6541
+ if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
6542
+ if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
6543
+ this[offset] = (value & 0xff)
6544
+ return offset + 1
6545
+ }
6546
+
6547
+ function objectWriteUInt16 (buf, value, offset, littleEndian) {
6548
+ if (value < 0) value = 0xffff + value + 1
6549
+ for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {
6550
+ buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
6551
+ (littleEndian ? i : 1 - i) * 8
6552
+ }
6553
+ }
6554
+
6555
+ Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
6556
+ value = +value
6557
+ offset = offset | 0
6558
+ if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
6559
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
6560
+ this[offset] = (value & 0xff)
6561
+ this[offset + 1] = (value >>> 8)
6562
+ } else {
6563
+ objectWriteUInt16(this, value, offset, true)
6564
+ }
6565
+ return offset + 2
6566
+ }
6567
+
6568
+ Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
6569
+ value = +value
6570
+ offset = offset | 0
6571
+ if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
6572
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
6573
+ this[offset] = (value >>> 8)
6574
+ this[offset + 1] = (value & 0xff)
6575
+ } else {
6576
+ objectWriteUInt16(this, value, offset, false)
6577
+ }
6578
+ return offset + 2
6579
+ }
6580
+
6581
+ function objectWriteUInt32 (buf, value, offset, littleEndian) {
6582
+ if (value < 0) value = 0xffffffff + value + 1
6583
+ for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {
6584
+ buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff
6585
+ }
6586
+ }
6587
+
6588
+ Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
6589
+ value = +value
6590
+ offset = offset | 0
6591
+ if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
6592
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
6593
+ this[offset + 3] = (value >>> 24)
6594
+ this[offset + 2] = (value >>> 16)
6595
+ this[offset + 1] = (value >>> 8)
6596
+ this[offset] = (value & 0xff)
6597
+ } else {
6598
+ objectWriteUInt32(this, value, offset, true)
6599
+ }
6600
+ return offset + 4
6601
+ }
6602
+
6603
+ Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
6604
+ value = +value
6605
+ offset = offset | 0
6606
+ if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
6607
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
6608
+ this[offset] = (value >>> 24)
6609
+ this[offset + 1] = (value >>> 16)
6610
+ this[offset + 2] = (value >>> 8)
6611
+ this[offset + 3] = (value & 0xff)
6612
+ } else {
6613
+ objectWriteUInt32(this, value, offset, false)
6614
+ }
6615
+ return offset + 4
6616
+ }
6617
+
6618
+ Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
6619
+ value = +value
6620
+ offset = offset | 0
6621
+ if (!noAssert) {
6622
+ var limit = Math.pow(2, 8 * byteLength - 1)
6623
+
6624
+ checkInt(this, value, offset, byteLength, limit - 1, -limit)
6625
+ }
6626
+
6627
+ var i = 0
6628
+ var mul = 1
6629
+ var sub = 0
6630
+ this[offset] = value & 0xFF
6631
+ while (++i < byteLength && (mul *= 0x100)) {
6632
+ if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
6633
+ sub = 1
6634
+ }
6635
+ this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
6636
+ }
6637
+
6638
+ return offset + byteLength
6639
+ }
6640
+
6641
+ Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
6642
+ value = +value
6643
+ offset = offset | 0
6644
+ if (!noAssert) {
6645
+ var limit = Math.pow(2, 8 * byteLength - 1)
6646
+
6647
+ checkInt(this, value, offset, byteLength, limit - 1, -limit)
6648
+ }
6649
+
6650
+ var i = byteLength - 1
6651
+ var mul = 1
6652
+ var sub = 0
6653
+ this[offset + i] = value & 0xFF
6654
+ while (--i >= 0 && (mul *= 0x100)) {
6655
+ if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
6656
+ sub = 1
6657
+ }
6658
+ this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
6659
+ }
6660
+
6661
+ return offset + byteLength
6662
+ }
6663
+
6664
+ Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
6665
+ value = +value
6666
+ offset = offset | 0
6667
+ if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
6668
+ if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
6669
+ if (value < 0) value = 0xff + value + 1
6670
+ this[offset] = (value & 0xff)
6671
+ return offset + 1
6672
+ }
6673
+
6674
+ Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
6675
+ value = +value
6676
+ offset = offset | 0
6677
+ if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
6678
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
6679
+ this[offset] = (value & 0xff)
6680
+ this[offset + 1] = (value >>> 8)
6681
+ } else {
6682
+ objectWriteUInt16(this, value, offset, true)
6683
+ }
6684
+ return offset + 2
6685
+ }
6686
+
6687
+ Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
6688
+ value = +value
6689
+ offset = offset | 0
6690
+ if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
6691
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
6692
+ this[offset] = (value >>> 8)
6693
+ this[offset + 1] = (value & 0xff)
6694
+ } else {
6695
+ objectWriteUInt16(this, value, offset, false)
6696
+ }
6697
+ return offset + 2
6698
+ }
6699
+
6700
+ Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
6701
+ value = +value
6702
+ offset = offset | 0
6703
+ if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
6704
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
6705
+ this[offset] = (value & 0xff)
6706
+ this[offset + 1] = (value >>> 8)
6707
+ this[offset + 2] = (value >>> 16)
6708
+ this[offset + 3] = (value >>> 24)
6709
+ } else {
6710
+ objectWriteUInt32(this, value, offset, true)
6711
+ }
6712
+ return offset + 4
6713
+ }
6714
+
6715
+ Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
6716
+ value = +value
6717
+ offset = offset | 0
6718
+ if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
6719
+ if (value < 0) value = 0xffffffff + value + 1
6720
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
6721
+ this[offset] = (value >>> 24)
6722
+ this[offset + 1] = (value >>> 16)
6723
+ this[offset + 2] = (value >>> 8)
6724
+ this[offset + 3] = (value & 0xff)
6725
+ } else {
6726
+ objectWriteUInt32(this, value, offset, false)
6727
+ }
6728
+ return offset + 4
6729
+ }
6730
+
6731
+ function checkIEEE754 (buf, value, offset, ext, max, min) {
6732
+ if (offset + ext > buf.length) throw new RangeError('Index out of range')
6733
+ if (offset < 0) throw new RangeError('Index out of range')
6734
+ }
6735
+
6736
+ function writeFloat (buf, value, offset, littleEndian, noAssert) {
6737
+ if (!noAssert) {
6738
+ checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
6739
+ }
6740
+ ieee754.write(buf, value, offset, littleEndian, 23, 4)
6741
+ return offset + 4
6742
+ }
6743
+
6744
+ Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
6745
+ return writeFloat(this, value, offset, true, noAssert)
6746
+ }
6747
+
6748
+ Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
6749
+ return writeFloat(this, value, offset, false, noAssert)
6750
+ }
6751
+
6752
+ function writeDouble (buf, value, offset, littleEndian, noAssert) {
6753
+ if (!noAssert) {
6754
+ checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
6755
+ }
6756
+ ieee754.write(buf, value, offset, littleEndian, 52, 8)
6757
+ return offset + 8
6758
+ }
6759
+
6760
+ Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
6761
+ return writeDouble(this, value, offset, true, noAssert)
6762
+ }
6763
+
6764
+ Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
6765
+ return writeDouble(this, value, offset, false, noAssert)
6766
+ }
6767
+
6768
+ // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
6769
+ Buffer.prototype.copy = function copy (target, targetStart, start, end) {
6770
+ if (!start) start = 0
6771
+ if (!end && end !== 0) end = this.length
6772
+ if (targetStart >= target.length) targetStart = target.length
6773
+ if (!targetStart) targetStart = 0
6774
+ if (end > 0 && end < start) end = start
6775
+
6776
+ // Copy 0 bytes; we're done
6777
+ if (end === start) return 0
6778
+ if (target.length === 0 || this.length === 0) return 0
6779
+
6780
+ // Fatal error conditions
6781
+ if (targetStart < 0) {
6782
+ throw new RangeError('targetStart out of bounds')
6783
+ }
6784
+ if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
6785
+ if (end < 0) throw new RangeError('sourceEnd out of bounds')
6786
+
6787
+ // Are we oob?
6788
+ if (end > this.length) end = this.length
6789
+ if (target.length - targetStart < end - start) {
6790
+ end = target.length - targetStart + start
6791
+ }
6792
+
6793
+ var len = end - start
6794
+ var i
6795
+
6796
+ if (this === target && start < targetStart && targetStart < end) {
6797
+ // descending copy from end
6798
+ for (i = len - 1; i >= 0; --i) {
6799
+ target[i + targetStart] = this[i + start]
6800
+ }
6801
+ } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
6802
+ // ascending copy from start
6803
+ for (i = 0; i < len; ++i) {
6804
+ target[i + targetStart] = this[i + start]
6805
+ }
6806
+ } else {
6807
+ Uint8Array.prototype.set.call(
6808
+ target,
6809
+ this.subarray(start, start + len),
6810
+ targetStart
6811
+ )
6812
+ }
6813
+
6814
+ return len
6815
+ }
6816
+
6817
+ // Usage:
6818
+ // buffer.fill(number[, offset[, end]])
6819
+ // buffer.fill(buffer[, offset[, end]])
6820
+ // buffer.fill(string[, offset[, end]][, encoding])
6821
+ Buffer.prototype.fill = function fill (val, start, end, encoding) {
6822
+ // Handle string cases:
6823
+ if (typeof val === 'string') {
6824
+ if (typeof start === 'string') {
6825
+ encoding = start
6826
+ start = 0
6827
+ end = this.length
6828
+ } else if (typeof end === 'string') {
6829
+ encoding = end
6830
+ end = this.length
6831
+ }
6832
+ if (val.length === 1) {
6833
+ var code = val.charCodeAt(0)
6834
+ if (code < 256) {
6835
+ val = code
6836
+ }
6837
+ }
6838
+ if (encoding !== undefined && typeof encoding !== 'string') {
6839
+ throw new TypeError('encoding must be a string')
6840
+ }
6841
+ if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
6842
+ throw new TypeError('Unknown encoding: ' + encoding)
6843
+ }
6844
+ } else if (typeof val === 'number') {
6845
+ val = val & 255
6846
+ }
6847
+
6848
+ // Invalid ranges are not set to a default, so can range check early.
6849
+ if (start < 0 || this.length < start || this.length < end) {
6850
+ throw new RangeError('Out of range index')
6851
+ }
6852
+
6853
+ if (end <= start) {
6854
+ return this
6855
+ }
6856
+
6857
+ start = start >>> 0
6858
+ end = end === undefined ? this.length : end >>> 0
6859
+
6860
+ if (!val) val = 0
6861
+
6862
+ var i
6863
+ if (typeof val === 'number') {
6864
+ for (i = start; i < end; ++i) {
6865
+ this[i] = val
6866
+ }
6867
+ } else {
6868
+ var bytes = Buffer.isBuffer(val)
6869
+ ? val
6870
+ : utf8ToBytes(new Buffer(val, encoding).toString())
6871
+ var len = bytes.length
6872
+ for (i = 0; i < end - start; ++i) {
6873
+ this[i + start] = bytes[i % len]
6874
+ }
6875
+ }
6876
+
6877
+ return this
6878
+ }
6879
+
6880
+ // HELPER FUNCTIONS
6881
+ // ================
6882
+
6883
+ var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g
6884
+
6885
+ function base64clean (str) {
6886
+ // Node strips out invalid characters like \n and \t from the string, base64-js does not
6887
+ str = stringtrim(str).replace(INVALID_BASE64_RE, '')
6888
+ // Node converts strings with length < 2 to ''
6889
+ if (str.length < 2) return ''
6890
+ // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
6891
+ while (str.length % 4 !== 0) {
6892
+ str = str + '='
6893
+ }
6894
+ return str
6895
+ }
6896
+
6897
+ function stringtrim (str) {
6898
+ if (str.trim) return str.trim()
6899
+ return str.replace(/^\s+|\s+$/g, '')
6900
+ }
6901
+
6902
+ function toHex (n) {
6903
+ if (n < 16) return '0' + n.toString(16)
6904
+ return n.toString(16)
6905
+ }
6906
+
6907
+ function utf8ToBytes (string, units) {
6908
+ units = units || Infinity
6909
+ var codePoint
6910
+ var length = string.length
6911
+ var leadSurrogate = null
6912
+ var bytes = []
6913
+
6914
+ for (var i = 0; i < length; ++i) {
6915
+ codePoint = string.charCodeAt(i)
6916
+
6917
+ // is surrogate component
6918
+ if (codePoint > 0xD7FF && codePoint < 0xE000) {
6919
+ // last char was a lead
6920
+ if (!leadSurrogate) {
6921
+ // no lead yet
6922
+ if (codePoint > 0xDBFF) {
6923
+ // unexpected trail
6924
+ if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6925
+ continue
6926
+ } else if (i + 1 === length) {
6927
+ // unpaired lead
6928
+ if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6929
+ continue
6930
+ }
6931
+
6932
+ // valid lead
6933
+ leadSurrogate = codePoint
6934
+
6935
+ continue
6936
+ }
6937
+
6938
+ // 2 leads in a row
6939
+ if (codePoint < 0xDC00) {
6940
+ if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6941
+ leadSurrogate = codePoint
6942
+ continue
6943
+ }
6944
+
6945
+ // valid surrogate pair
6946
+ codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
6947
+ } else if (leadSurrogate) {
6948
+ // valid bmp char, but last char was a lead
6949
+ if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
6950
+ }
6951
+
6952
+ leadSurrogate = null
6953
+
6954
+ // encode utf8
6955
+ if (codePoint < 0x80) {
6956
+ if ((units -= 1) < 0) break
6957
+ bytes.push(codePoint)
6958
+ } else if (codePoint < 0x800) {
6959
+ if ((units -= 2) < 0) break
6960
+ bytes.push(
6961
+ codePoint >> 0x6 | 0xC0,
6962
+ codePoint & 0x3F | 0x80
6963
+ )
6964
+ } else if (codePoint < 0x10000) {
6965
+ if ((units -= 3) < 0) break
6966
+ bytes.push(
6967
+ codePoint >> 0xC | 0xE0,
6968
+ codePoint >> 0x6 & 0x3F | 0x80,
6969
+ codePoint & 0x3F | 0x80
6970
+ )
6971
+ } else if (codePoint < 0x110000) {
6972
+ if ((units -= 4) < 0) break
6973
+ bytes.push(
6974
+ codePoint >> 0x12 | 0xF0,
6975
+ codePoint >> 0xC & 0x3F | 0x80,
6976
+ codePoint >> 0x6 & 0x3F | 0x80,
6977
+ codePoint & 0x3F | 0x80
6978
+ )
6979
+ } else {
6980
+ throw new Error('Invalid code point')
6981
+ }
6982
+ }
6983
+
6984
+ return bytes
6985
+ }
6986
+
6987
+ function asciiToBytes (str) {
6988
+ var byteArray = []
6989
+ for (var i = 0; i < str.length; ++i) {
6990
+ // Node's code seems to be doing this and not & 0x7F..
6991
+ byteArray.push(str.charCodeAt(i) & 0xFF)
6992
+ }
6993
+ return byteArray
6994
+ }
6995
+
6996
+ function utf16leToBytes (str, units) {
6997
+ var c, hi, lo
6998
+ var byteArray = []
6999
+ for (var i = 0; i < str.length; ++i) {
7000
+ if ((units -= 2) < 0) break
7001
+
7002
+ c = str.charCodeAt(i)
7003
+ hi = c >> 8
7004
+ lo = c % 256
7005
+ byteArray.push(lo)
7006
+ byteArray.push(hi)
7007
+ }
7008
+
7009
+ return byteArray
7010
+ }
7011
+
7012
+ function base64ToBytes (str) {
7013
+ return base64.toByteArray(base64clean(str))
7014
+ }
7015
+
7016
+ function blitBuffer (src, dst, offset, length) {
7017
+ for (var i = 0; i < length; ++i) {
7018
+ if ((i + offset >= dst.length) || (i >= src.length)) break
7019
+ dst[i + offset] = src[i]
7020
+ }
7021
+ return i
7022
+ }
7023
+
7024
+ function isnan (val) {
7025
+ return val !== val // eslint-disable-line no-self-compare
7026
+ }
7027
+
7028
+ }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
7029
+ },{"base64-js":30,"ieee754":37,"isarray":40}],33:[function(_dereq_,module,exports){
7030
+ // contains, add, remove, toggle
7031
+ var indexof = _dereq_('indexof')
7032
+
7033
+ module.exports = ClassList
7034
+
7035
+ function ClassList(elem) {
7036
+ var cl = elem.classList
7037
+
7038
+ if (cl) {
7039
+ return cl
7040
+ }
7041
+
7042
+ var classList = {
7043
+ add: add
7044
+ , remove: remove
7045
+ , contains: contains
7046
+ , toggle: toggle
7047
+ , toString: $toString
7048
+ , length: 0
7049
+ , item: item
7050
+ }
7051
+
7052
+ return classList
7053
+
7054
+ function add(token) {
7055
+ var list = getTokens()
7056
+ if (indexof(list, token) > -1) {
7057
+ return
7058
+ }
7059
+ list.push(token)
7060
+ setTokens(list)
7061
+ }
7062
+
7063
+ function remove(token) {
7064
+ var list = getTokens()
7065
+ , index = indexof(list, token)
7066
+
7067
+ if (index === -1) {
7068
+ return
7069
+ }
7070
+
7071
+ list.splice(index, 1)
7072
+ setTokens(list)
7073
+ }
7074
+
7075
+ function contains(token) {
7076
+ return indexof(getTokens(), token) > -1
7077
+ }
7078
+
7079
+ function toggle(token) {
7080
+ if (contains(token)) {
7081
+ remove(token)
7082
+ return false
7083
+ } else {
7084
+ add(token)
7085
+ return true
7086
+ }
7087
+ }
7088
+
7089
+ function $toString() {
7090
+ return elem.className
7091
+ }
7092
+
7093
+ function item(index) {
7094
+ var tokens = getTokens()
7095
+ return tokens[index] || null
7096
+ }
7097
+
7098
+ function getTokens() {
7099
+ var className = elem.className
7100
+
7101
+ return filter(className.split(" "), isTruthy)
7102
+ }
7103
+
7104
+ function setTokens(list) {
7105
+ var length = list.length
7106
+
7107
+ elem.className = list.join(" ")
7108
+ classList.length = length
7109
+
7110
+ for (var i = 0; i < list.length; i++) {
7111
+ classList[i] = list[i]
7112
+ }
7113
+
7114
+ delete list[length]
7115
+ }
7116
+ }
7117
+
7118
+ function filter (arr, fn) {
7119
+ var ret = []
7120
+ for (var i = 0; i < arr.length; i++) {
7121
+ if (fn(arr[i])) ret.push(arr[i])
7122
+ }
7123
+ return ret
7124
+ }
7125
+
7126
+ function isTruthy(value) {
7127
+ return !!value
7128
+ }
7129
+
7130
+ },{"indexof":38}],34:[function(_dereq_,module,exports){
7131
+ // DEV: We don't use var but favor parameters since these play nicer with minification
7132
+ function computedStyle(el, prop, getComputedStyle, style) {
7133
+ getComputedStyle = window.getComputedStyle;
7134
+ style =
7135
+ // If we have getComputedStyle
7136
+ getComputedStyle ?
7137
+ // Query it
7138
+ // TODO: From CSS-Query notes, we might need (node, null) for FF
7139
+ getComputedStyle(el) :
7140
+
7141
+ // Otherwise, we are in IE and use currentStyle
7142
+ el.currentStyle;
7143
+ if (style) {
7144
+ return style
7145
+ [
7146
+ // Switch to camelCase for CSSOM
7147
+ // DEV: Grabbed from jQuery
7148
+ // https://github.com/jquery/jquery/blob/1.9-stable/src/css.js#L191-L194
7149
+ // https://github.com/jquery/jquery/blob/1.9-stable/src/core.js#L593-L597
7150
+ prop.replace(/-(\w)/gi, function (word, letter) {
7151
+ return letter.toUpperCase();
7152
+ })
7153
+ ];
7154
+ }
7155
+ }
7156
+
7157
+ module.exports = computedStyle;
7158
+
7159
+ },{}],35:[function(_dereq_,module,exports){
7160
+ /*!
7161
+ * https://github.com/es-shims/es5-shim
7162
+ * @license es5-shim Copyright 2009-2015 by contributors, MIT License
7163
+ * see https://github.com/es-shims/es5-shim/blob/master/LICENSE
7164
+ */
7165
+
7166
+ // vim: ts=4 sts=4 sw=4 expandtab
7167
+
7168
+ // Add semicolon to prevent IIFE from being passed as argument to concatenated code.
7169
+ ;
7170
+
7171
+ // UMD (Universal Module Definition)
7172
+ // see https://github.com/umdjs/umd/blob/master/templates/returnExports.js
7173
+ (function (root, factory) {
7174
+ 'use strict';
7175
+
7176
+ /* global define, exports, module */
7177
+ if (typeof define === 'function' && define.amd) {
7178
+ // AMD. Register as an anonymous module.
7179
+ define(factory);
7180
+ } else if (typeof exports === 'object') {
7181
+ // Node. Does not work with strict CommonJS, but
7182
+ // only CommonJS-like enviroments that support module.exports,
7183
+ // like Node.
7184
+ module.exports = factory();
7185
+ } else {
7186
+ // Browser globals (root is window)
7187
+ root.returnExports = factory();
7188
+ }
7189
+ }(this, function () {
7190
+ /**
7191
+ * Brings an environment as close to ECMAScript 5 compliance
7192
+ * as is possible with the facilities of erstwhile engines.
7193
+ *
7194
+ * Annotated ES5: http://es5.github.com/ (specific links below)
7195
+ * ES5 Spec: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
7196
+ * Required reading: http://javascriptweblog.wordpress.com/2011/12/05/extending-javascript-natives/
7197
+ */
7198
+
7199
+ // Shortcut to an often accessed properties, in order to avoid multiple
7200
+ // dereference that costs universally. This also holds a reference to known-good
7201
+ // functions.
7202
+ var $Array = Array;
7203
+ var ArrayPrototype = $Array.prototype;
7204
+ var $Object = Object;
7205
+ var ObjectPrototype = $Object.prototype;
7206
+ var $Function = Function;
7207
+ var FunctionPrototype = $Function.prototype;
7208
+ var $String = String;
7209
+ var StringPrototype = $String.prototype;
7210
+ var $Number = Number;
7211
+ var NumberPrototype = $Number.prototype;
7212
+ var array_slice = ArrayPrototype.slice;
7213
+ var array_splice = ArrayPrototype.splice;
7214
+ var array_push = ArrayPrototype.push;
7215
+ var array_unshift = ArrayPrototype.unshift;
7216
+ var array_concat = ArrayPrototype.concat;
7217
+ var array_join = ArrayPrototype.join;
7218
+ var call = FunctionPrototype.call;
7219
+ var apply = FunctionPrototype.apply;
7220
+ var max = Math.max;
7221
+ var min = Math.min;
7222
+
7223
+ // Having a toString local variable name breaks in Opera so use to_string.
7224
+ var to_string = ObjectPrototype.toString;
7225
+
7226
+ /* global Symbol */
7227
+ /* eslint-disable one-var-declaration-per-line, no-redeclare, max-statements-per-line */
7228
+ var hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';
7229
+ var isCallable; /* inlined from https://npmjs.com/is-callable */ var fnToStr = Function.prototype.toString, constructorRegex = /^\s*class /, isES6ClassFn = function isES6ClassFn(value) { try { var fnStr = fnToStr.call(value); var singleStripped = fnStr.replace(/\/\/.*\n/g, ''); var multiStripped = singleStripped.replace(/\/\*[.\s\S]*\*\//g, ''); var spaceStripped = multiStripped.replace(/\n/mg, ' ').replace(/ {2}/g, ' '); return constructorRegex.test(spaceStripped); } catch (e) { return false; /* not a function */ } }, tryFunctionObject = function tryFunctionObject(value) { try { if (isES6ClassFn(value)) { return false; } fnToStr.call(value); return true; } catch (e) { return false; } }, fnClass = '[object Function]', genClass = '[object GeneratorFunction]', isCallable = function isCallable(value) { if (!value) { return false; } if (typeof value !== 'function' && typeof value !== 'object') { return false; } if (hasToStringTag) { return tryFunctionObject(value); } if (isES6ClassFn(value)) { return false; } var strClass = to_string.call(value); return strClass === fnClass || strClass === genClass; };
7230
+
7231
+ var isRegex; /* inlined from https://npmjs.com/is-regex */ var regexExec = RegExp.prototype.exec, tryRegexExec = function tryRegexExec(value) { try { regexExec.call(value); return true; } catch (e) { return false; } }, regexClass = '[object RegExp]'; isRegex = function isRegex(value) { if (typeof value !== 'object') { return false; } return hasToStringTag ? tryRegexExec(value) : to_string.call(value) === regexClass; };
7232
+ var isString; /* inlined from https://npmjs.com/is-string */ var strValue = String.prototype.valueOf, tryStringObject = function tryStringObject(value) { try { strValue.call(value); return true; } catch (e) { return false; } }, stringClass = '[object String]'; isString = function isString(value) { if (typeof value === 'string') { return true; } if (typeof value !== 'object') { return false; } return hasToStringTag ? tryStringObject(value) : to_string.call(value) === stringClass; };
7233
+ /* eslint-enable one-var-declaration-per-line, no-redeclare, max-statements-per-line */
7234
+
7235
+ /* inlined from http://npmjs.com/define-properties */
7236
+ var supportsDescriptors = $Object.defineProperty && (function () {
7237
+ try {
7238
+ var obj = {};
7239
+ $Object.defineProperty(obj, 'x', { enumerable: false, value: obj });
7240
+ for (var _ in obj) { // jscs:ignore disallowUnusedVariables
7241
+ return false;
7242
+ }
7243
+ return obj.x === obj;
7244
+ } catch (e) { /* this is ES3 */
7245
+ return false;
7246
+ }
7247
+ }());
7248
+ var defineProperties = (function (has) {
7249
+ // Define configurable, writable, and non-enumerable props
7250
+ // if they don't exist.
7251
+ var defineProperty;
7252
+ if (supportsDescriptors) {
7253
+ defineProperty = function (object, name, method, forceAssign) {
7254
+ if (!forceAssign && (name in object)) {
7255
+ return;
7256
+ }
7257
+ $Object.defineProperty(object, name, {
7258
+ configurable: true,
7259
+ enumerable: false,
7260
+ writable: true,
7261
+ value: method
7262
+ });
7263
+ };
7264
+ } else {
7265
+ defineProperty = function (object, name, method, forceAssign) {
7266
+ if (!forceAssign && (name in object)) {
7267
+ return;
7268
+ }
7269
+ object[name] = method;
7270
+ };
7271
+ }
7272
+ return function defineProperties(object, map, forceAssign) {
7273
+ for (var name in map) {
7274
+ if (has.call(map, name)) {
7275
+ defineProperty(object, name, map[name], forceAssign);
7276
+ }
7277
+ }
7278
+ };
7279
+ }(ObjectPrototype.hasOwnProperty));
7280
+
7281
+ //
7282
+ // Util
7283
+ // ======
7284
+ //
7285
+
7286
+ /* replaceable with https://npmjs.com/package/es-abstract /helpers/isPrimitive */
7287
+ var isPrimitive = function isPrimitive(input) {
7288
+ var type = typeof input;
7289
+ return input === null || (type !== 'object' && type !== 'function');
7290
+ };
7291
+
7292
+ var isActualNaN = $Number.isNaN || function isActualNaN(x) {
7293
+ return x !== x;
7294
+ };
7295
+
7296
+ var ES = {
7297
+ // ES5 9.4
7298
+ // http://es5.github.com/#x9.4
7299
+ // http://jsperf.com/to-integer
7300
+ /* replaceable with https://npmjs.com/package/es-abstract ES5.ToInteger */
7301
+ ToInteger: function ToInteger(num) {
7302
+ var n = +num;
7303
+ if (isActualNaN(n)) {
7304
+ n = 0;
7305
+ } else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) {
7306
+ n = (n > 0 || -1) * Math.floor(Math.abs(n));
7307
+ }
7308
+ return n;
7309
+ },
7310
+
7311
+ /* replaceable with https://npmjs.com/package/es-abstract ES5.ToPrimitive */
7312
+ ToPrimitive: function ToPrimitive(input) {
7313
+ var val, valueOf, toStr;
7314
+ if (isPrimitive(input)) {
7315
+ return input;
7316
+ }
7317
+ valueOf = input.valueOf;
7318
+ if (isCallable(valueOf)) {
7319
+ val = valueOf.call(input);
7320
+ if (isPrimitive(val)) {
7321
+ return val;
7322
+ }
7323
+ }
7324
+ toStr = input.toString;
7325
+ if (isCallable(toStr)) {
7326
+ val = toStr.call(input);
7327
+ if (isPrimitive(val)) {
7328
+ return val;
7329
+ }
7330
+ }
7331
+ throw new TypeError();
7332
+ },
7333
+
7334
+ // ES5 9.9
7335
+ // http://es5.github.com/#x9.9
7336
+ /* replaceable with https://npmjs.com/package/es-abstract ES5.ToObject */
7337
+ ToObject: function (o) {
7338
+ if (o == null) { // this matches both null and undefined
7339
+ throw new TypeError("can't convert " + o + ' to object');
7340
+ }
7341
+ return $Object(o);
7342
+ },
7343
+
7344
+ /* replaceable with https://npmjs.com/package/es-abstract ES5.ToUint32 */
7345
+ ToUint32: function ToUint32(x) {
7346
+ return x >>> 0;
7347
+ }
7348
+ };
7349
+
7350
+ //
7351
+ // Function
7352
+ // ========
7353
+ //
7354
+
7355
+ // ES-5 15.3.4.5
7356
+ // http://es5.github.com/#x15.3.4.5
7357
+
7358
+ var Empty = function Empty() {};
7359
+
7360
+ defineProperties(FunctionPrototype, {
7361
+ bind: function bind(that) { // .length is 1
7362
+ // 1. Let Target be the this value.
7363
+ var target = this;
7364
+ // 2. If IsCallable(Target) is false, throw a TypeError exception.
7365
+ if (!isCallable(target)) {
7366
+ throw new TypeError('Function.prototype.bind called on incompatible ' + target);
7367
+ }
7368
+ // 3. Let A be a new (possibly empty) internal list of all of the
7369
+ // argument values provided after thisArg (arg1, arg2 etc), in order.
7370
+ // XXX slicedArgs will stand in for "A" if used
7371
+ var args = array_slice.call(arguments, 1); // for normal call
7372
+ // 4. Let F be a new native ECMAScript object.
7373
+ // 11. Set the [[Prototype]] internal property of F to the standard
7374
+ // built-in Function prototype object as specified in 15.3.3.1.
7375
+ // 12. Set the [[Call]] internal property of F as described in
7376
+ // 15.3.4.5.1.
7377
+ // 13. Set the [[Construct]] internal property of F as described in
7378
+ // 15.3.4.5.2.
7379
+ // 14. Set the [[HasInstance]] internal property of F as described in
7380
+ // 15.3.4.5.3.
7381
+ var bound;
7382
+ var binder = function () {
7383
+
7384
+ if (this instanceof bound) {
7385
+ // 15.3.4.5.2 [[Construct]]
7386
+ // When the [[Construct]] internal method of a function object,
7387
+ // F that was created using the bind function is called with a
7388
+ // list of arguments ExtraArgs, the following steps are taken:
7389
+ // 1. Let target be the value of F's [[TargetFunction]]
7390
+ // internal property.
7391
+ // 2. If target has no [[Construct]] internal method, a
7392
+ // TypeError exception is thrown.
7393
+ // 3. Let boundArgs be the value of F's [[BoundArgs]] internal
7394
+ // property.
7395
+ // 4. Let args be a new list containing the same values as the
7396
+ // list boundArgs in the same order followed by the same
7397
+ // values as the list ExtraArgs in the same order.
7398
+ // 5. Return the result of calling the [[Construct]] internal
7399
+ // method of target providing args as the arguments.
7400
+
7401
+ var result = apply.call(
7402
+ target,
7403
+ this,
7404
+ array_concat.call(args, array_slice.call(arguments))
7405
+ );
7406
+ if ($Object(result) === result) {
7407
+ return result;
7408
+ }
7409
+ return this;
7410
+
7411
+ } else {
7412
+ // 15.3.4.5.1 [[Call]]
7413
+ // When the [[Call]] internal method of a function object, F,
7414
+ // which was created using the bind function is called with a
7415
+ // this value and a list of arguments ExtraArgs, the following
7416
+ // steps are taken:
7417
+ // 1. Let boundArgs be the value of F's [[BoundArgs]] internal
7418
+ // property.
7419
+ // 2. Let boundThis be the value of F's [[BoundThis]] internal
7420
+ // property.
7421
+ // 3. Let target be the value of F's [[TargetFunction]] internal
7422
+ // property.
7423
+ // 4. Let args be a new list containing the same values as the
7424
+ // list boundArgs in the same order followed by the same
7425
+ // values as the list ExtraArgs in the same order.
7426
+ // 5. Return the result of calling the [[Call]] internal method
7427
+ // of target providing boundThis as the this value and
7428
+ // providing args as the arguments.
7429
+
7430
+ // equiv: target.call(this, ...boundArgs, ...args)
7431
+ return apply.call(
7432
+ target,
7433
+ that,
7434
+ array_concat.call(args, array_slice.call(arguments))
7435
+ );
7436
+
7437
+ }
7438
+
7439
+ };
7440
+
7441
+ // 15. If the [[Class]] internal property of Target is "Function", then
7442
+ // a. Let L be the length property of Target minus the length of A.
7443
+ // b. Set the length own property of F to either 0 or L, whichever is
7444
+ // larger.
7445
+ // 16. Else set the length own property of F to 0.
7446
+
7447
+ var boundLength = max(0, target.length - args.length);
7448
+
7449
+ // 17. Set the attributes of the length own property of F to the values
7450
+ // specified in 15.3.5.1.
7451
+ var boundArgs = [];
7452
+ for (var i = 0; i < boundLength; i++) {
7453
+ array_push.call(boundArgs, '$' + i);
7454
+ }
7455
+
7456
+ // XXX Build a dynamic function with desired amount of arguments is the only
7457
+ // way to set the length property of a function.
7458
+ // In environments where Content Security Policies enabled (Chrome extensions,
7459
+ // for ex.) all use of eval or Function costructor throws an exception.
7460
+ // However in all of these environments Function.prototype.bind exists
7461
+ // and so this code will never be executed.
7462
+ bound = $Function('binder', 'return function (' + array_join.call(boundArgs, ',') + '){ return binder.apply(this, arguments); }')(binder);
7463
+
7464
+ if (target.prototype) {
7465
+ Empty.prototype = target.prototype;
7466
+ bound.prototype = new Empty();
7467
+ // Clean up dangling references.
7468
+ Empty.prototype = null;
7469
+ }
7470
+
7471
+ // TODO
7472
+ // 18. Set the [[Extensible]] internal property of F to true.
7473
+
7474
+ // TODO
7475
+ // 19. Let thrower be the [[ThrowTypeError]] function Object (13.2.3).
7476
+ // 20. Call the [[DefineOwnProperty]] internal method of F with
7477
+ // arguments "caller", PropertyDescriptor {[[Get]]: thrower, [[Set]]:
7478
+ // thrower, [[Enumerable]]: false, [[Configurable]]: false}, and
7479
+ // false.
7480
+ // 21. Call the [[DefineOwnProperty]] internal method of F with
7481
+ // arguments "arguments", PropertyDescriptor {[[Get]]: thrower,
7482
+ // [[Set]]: thrower, [[Enumerable]]: false, [[Configurable]]: false},
7483
+ // and false.
7484
+
7485
+ // TODO
7486
+ // NOTE Function objects created using Function.prototype.bind do not
7487
+ // have a prototype property or the [[Code]], [[FormalParameters]], and
7488
+ // [[Scope]] internal properties.
7489
+ // XXX can't delete prototype in pure-js.
7490
+
7491
+ // 22. Return F.
7492
+ return bound;
7493
+ }
7494
+ });
7495
+
7496
+ // _Please note: Shortcuts are defined after `Function.prototype.bind` as we
7497
+ // use it in defining shortcuts.
7498
+ var owns = call.bind(ObjectPrototype.hasOwnProperty);
7499
+ var toStr = call.bind(ObjectPrototype.toString);
7500
+ var arraySlice = call.bind(array_slice);
7501
+ var arraySliceApply = apply.bind(array_slice);
7502
+ var strSlice = call.bind(StringPrototype.slice);
7503
+ var strSplit = call.bind(StringPrototype.split);
7504
+ var strIndexOf = call.bind(StringPrototype.indexOf);
7505
+ var pushCall = call.bind(array_push);
7506
+ var isEnum = call.bind(ObjectPrototype.propertyIsEnumerable);
7507
+ var arraySort = call.bind(ArrayPrototype.sort);
7508
+
7509
+ //
7510
+ // Array
7511
+ // =====
7512
+ //
7513
+
7514
+ var isArray = $Array.isArray || function isArray(obj) {
7515
+ return toStr(obj) === '[object Array]';
7516
+ };
7517
+
7518
+ // ES5 15.4.4.12
7519
+ // http://es5.github.com/#x15.4.4.13
7520
+ // Return len+argCount.
7521
+ // [bugfix, ielt8]
7522
+ // IE < 8 bug: [].unshift(0) === undefined but should be "1"
7523
+ var hasUnshiftReturnValueBug = [].unshift(0) !== 1;
7524
+ defineProperties(ArrayPrototype, {
7525
+ unshift: function () {
7526
+ array_unshift.apply(this, arguments);
7527
+ return this.length;
7528
+ }
7529
+ }, hasUnshiftReturnValueBug);
7530
+
7531
+ // ES5 15.4.3.2
7532
+ // http://es5.github.com/#x15.4.3.2
7533
+ // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/isArray
7534
+ defineProperties($Array, { isArray: isArray });
7535
+
7536
+ // The IsCallable() check in the Array functions
7537
+ // has been replaced with a strict check on the
7538
+ // internal class of the object to trap cases where
7539
+ // the provided function was actually a regular
7540
+ // expression literal, which in V8 and
7541
+ // JavaScriptCore is a typeof "function". Only in
7542
+ // V8 are regular expression literals permitted as
7543
+ // reduce parameters, so it is desirable in the
7544
+ // general case for the shim to match the more
7545
+ // strict and common behavior of rejecting regular
7546
+ // expressions.
7547
+
7548
+ // ES5 15.4.4.18
7549
+ // http://es5.github.com/#x15.4.4.18
7550
+ // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/array/forEach
7551
+
7552
+ // Check failure of by-index access of string characters (IE < 9)
7553
+ // and failure of `0 in boxedString` (Rhino)
7554
+ var boxedString = $Object('a');
7555
+ var splitString = boxedString[0] !== 'a' || !(0 in boxedString);
7556
+
7557
+ var properlyBoxesContext = function properlyBoxed(method) {
7558
+ // Check node 0.6.21 bug where third parameter is not boxed
7559
+ var properlyBoxesNonStrict = true;
7560
+ var properlyBoxesStrict = true;
7561
+ var threwException = false;
7562
+ if (method) {
7563
+ try {
7564
+ method.call('foo', function (_, __, context) {
7565
+ if (typeof context !== 'object') {
7566
+ properlyBoxesNonStrict = false;
7567
+ }
7568
+ });
7569
+
7570
+ method.call([1], function () {
7571
+ 'use strict';
7572
+
7573
+ properlyBoxesStrict = typeof this === 'string';
7574
+ }, 'x');
7575
+ } catch (e) {
7576
+ threwException = true;
7577
+ }
7578
+ }
7579
+ return !!method && !threwException && properlyBoxesNonStrict && properlyBoxesStrict;
7580
+ };
7581
+
7582
+ defineProperties(ArrayPrototype, {
7583
+ forEach: function forEach(callbackfn/*, thisArg*/) {
7584
+ var object = ES.ToObject(this);
7585
+ var self = splitString && isString(this) ? strSplit(this, '') : object;
7586
+ var i = -1;
7587
+ var length = ES.ToUint32(self.length);
7588
+ var T;
7589
+ if (arguments.length > 1) {
7590
+ T = arguments[1];
7591
+ }
7592
+
7593
+ // If no callback function or if callback is not a callable function
7594
+ if (!isCallable(callbackfn)) {
7595
+ throw new TypeError('Array.prototype.forEach callback must be a function');
7596
+ }
7597
+
7598
+ while (++i < length) {
7599
+ if (i in self) {
7600
+ // Invoke the callback function with call, passing arguments:
7601
+ // context, property value, property key, thisArg object
7602
+ if (typeof T === 'undefined') {
7603
+ callbackfn(self[i], i, object);
7604
+ } else {
7605
+ callbackfn.call(T, self[i], i, object);
7606
+ }
7607
+ }
7608
+ }
7609
+ }
7610
+ }, !properlyBoxesContext(ArrayPrototype.forEach));
7611
+
7612
+ // ES5 15.4.4.19
7613
+ // http://es5.github.com/#x15.4.4.19
7614
+ // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/map
7615
+ defineProperties(ArrayPrototype, {
7616
+ map: function map(callbackfn/*, thisArg*/) {
7617
+ var object = ES.ToObject(this);
7618
+ var self = splitString && isString(this) ? strSplit(this, '') : object;
7619
+ var length = ES.ToUint32(self.length);
7620
+ var result = $Array(length);
7621
+ var T;
7622
+ if (arguments.length > 1) {
7623
+ T = arguments[1];
7624
+ }
7625
+
7626
+ // If no callback function or if callback is not a callable function
7627
+ if (!isCallable(callbackfn)) {
7628
+ throw new TypeError('Array.prototype.map callback must be a function');
7629
+ }
7630
+
7631
+ for (var i = 0; i < length; i++) {
7632
+ if (i in self) {
7633
+ if (typeof T === 'undefined') {
7634
+ result[i] = callbackfn(self[i], i, object);
7635
+ } else {
7636
+ result[i] = callbackfn.call(T, self[i], i, object);
7637
+ }
7638
+ }
7639
+ }
7640
+ return result;
7641
+ }
7642
+ }, !properlyBoxesContext(ArrayPrototype.map));
7643
+
7644
+ // ES5 15.4.4.20
7645
+ // http://es5.github.com/#x15.4.4.20
7646
+ // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/filter
7647
+ defineProperties(ArrayPrototype, {
7648
+ filter: function filter(callbackfn/*, thisArg*/) {
7649
+ var object = ES.ToObject(this);
7650
+ var self = splitString && isString(this) ? strSplit(this, '') : object;
7651
+ var length = ES.ToUint32(self.length);
7652
+ var result = [];
7653
+ var value;
7654
+ var T;
7655
+ if (arguments.length > 1) {
7656
+ T = arguments[1];
7657
+ }
7658
+
7659
+ // If no callback function or if callback is not a callable function
7660
+ if (!isCallable(callbackfn)) {
7661
+ throw new TypeError('Array.prototype.filter callback must be a function');
7662
+ }
7663
+
7664
+ for (var i = 0; i < length; i++) {
7665
+ if (i in self) {
7666
+ value = self[i];
7667
+ if (typeof T === 'undefined' ? callbackfn(value, i, object) : callbackfn.call(T, value, i, object)) {
7668
+ pushCall(result, value);
7669
+ }
7670
+ }
7671
+ }
7672
+ return result;
7673
+ }
7674
+ }, !properlyBoxesContext(ArrayPrototype.filter));
7675
+
7676
+ // ES5 15.4.4.16
7677
+ // http://es5.github.com/#x15.4.4.16
7678
+ // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/every
7679
+ defineProperties(ArrayPrototype, {
7680
+ every: function every(callbackfn/*, thisArg*/) {
7681
+ var object = ES.ToObject(this);
7682
+ var self = splitString && isString(this) ? strSplit(this, '') : object;
7683
+ var length = ES.ToUint32(self.length);
7684
+ var T;
7685
+ if (arguments.length > 1) {
7686
+ T = arguments[1];
7687
+ }
7688
+
7689
+ // If no callback function or if callback is not a callable function
7690
+ if (!isCallable(callbackfn)) {
7691
+ throw new TypeError('Array.prototype.every callback must be a function');
7692
+ }
7693
+
7694
+ for (var i = 0; i < length; i++) {
7695
+ if (i in self && !(typeof T === 'undefined' ? callbackfn(self[i], i, object) : callbackfn.call(T, self[i], i, object))) {
7696
+ return false;
7697
+ }
7698
+ }
7699
+ return true;
7700
+ }
7701
+ }, !properlyBoxesContext(ArrayPrototype.every));
7702
+
7703
+ // ES5 15.4.4.17
7704
+ // http://es5.github.com/#x15.4.4.17
7705
+ // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/some
7706
+ defineProperties(ArrayPrototype, {
7707
+ some: function some(callbackfn/*, thisArg */) {
7708
+ var object = ES.ToObject(this);
7709
+ var self = splitString && isString(this) ? strSplit(this, '') : object;
7710
+ var length = ES.ToUint32(self.length);
7711
+ var T;
7712
+ if (arguments.length > 1) {
7713
+ T = arguments[1];
7714
+ }
7715
+
7716
+ // If no callback function or if callback is not a callable function
7717
+ if (!isCallable(callbackfn)) {
7718
+ throw new TypeError('Array.prototype.some callback must be a function');
7719
+ }
7720
+
7721
+ for (var i = 0; i < length; i++) {
7722
+ if (i in self && (typeof T === 'undefined' ? callbackfn(self[i], i, object) : callbackfn.call(T, self[i], i, object))) {
7723
+ return true;
7724
+ }
7725
+ }
7726
+ return false;
7727
+ }
7728
+ }, !properlyBoxesContext(ArrayPrototype.some));
7729
+
7730
+ // ES5 15.4.4.21
7731
+ // http://es5.github.com/#x15.4.4.21
7732
+ // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/reduce
7733
+ var reduceCoercesToObject = false;
7734
+ if (ArrayPrototype.reduce) {
7735
+ reduceCoercesToObject = typeof ArrayPrototype.reduce.call('es5', function (_, __, ___, list) {
7736
+ return list;
7737
+ }) === 'object';
7738
+ }
7739
+ defineProperties(ArrayPrototype, {
7740
+ reduce: function reduce(callbackfn/*, initialValue*/) {
7741
+ var object = ES.ToObject(this);
7742
+ var self = splitString && isString(this) ? strSplit(this, '') : object;
7743
+ var length = ES.ToUint32(self.length);
7744
+
7745
+ // If no callback function or if callback is not a callable function
7746
+ if (!isCallable(callbackfn)) {
7747
+ throw new TypeError('Array.prototype.reduce callback must be a function');
7748
+ }
7749
+
7750
+ // no value to return if no initial value and an empty array
7751
+ if (length === 0 && arguments.length === 1) {
7752
+ throw new TypeError('reduce of empty array with no initial value');
7753
+ }
7754
+
7755
+ var i = 0;
7756
+ var result;
7757
+ if (arguments.length >= 2) {
7758
+ result = arguments[1];
7759
+ } else {
7760
+ do {
7761
+ if (i in self) {
7762
+ result = self[i++];
7763
+ break;
7764
+ }
7765
+
7766
+ // if array contains no values, no initial value to return
7767
+ if (++i >= length) {
7768
+ throw new TypeError('reduce of empty array with no initial value');
7769
+ }
7770
+ } while (true);
7771
+ }
7772
+
7773
+ for (; i < length; i++) {
7774
+ if (i in self) {
7775
+ result = callbackfn(result, self[i], i, object);
7776
+ }
7777
+ }
7778
+
7779
+ return result;
7780
+ }
7781
+ }, !reduceCoercesToObject);
7782
+
7783
+ // ES5 15.4.4.22
7784
+ // http://es5.github.com/#x15.4.4.22
7785
+ // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/reduceRight
7786
+ var reduceRightCoercesToObject = false;
7787
+ if (ArrayPrototype.reduceRight) {
7788
+ reduceRightCoercesToObject = typeof ArrayPrototype.reduceRight.call('es5', function (_, __, ___, list) {
7789
+ return list;
7790
+ }) === 'object';
7791
+ }
7792
+ defineProperties(ArrayPrototype, {
7793
+ reduceRight: function reduceRight(callbackfn/*, initial*/) {
7794
+ var object = ES.ToObject(this);
7795
+ var self = splitString && isString(this) ? strSplit(this, '') : object;
7796
+ var length = ES.ToUint32(self.length);
7797
+
7798
+ // If no callback function or if callback is not a callable function
7799
+ if (!isCallable(callbackfn)) {
7800
+ throw new TypeError('Array.prototype.reduceRight callback must be a function');
7801
+ }
7802
+
7803
+ // no value to return if no initial value, empty array
7804
+ if (length === 0 && arguments.length === 1) {
7805
+ throw new TypeError('reduceRight of empty array with no initial value');
7806
+ }
7807
+
7808
+ var result;
7809
+ var i = length - 1;
7810
+ if (arguments.length >= 2) {
7811
+ result = arguments[1];
7812
+ } else {
7813
+ do {
7814
+ if (i in self) {
7815
+ result = self[i--];
7816
+ break;
7817
+ }
7818
+
7819
+ // if array contains no values, no initial value to return
7820
+ if (--i < 0) {
7821
+ throw new TypeError('reduceRight of empty array with no initial value');
7822
+ }
7823
+ } while (true);
7824
+ }
7825
+
7826
+ if (i < 0) {
7827
+ return result;
7828
+ }
7829
+
7830
+ do {
7831
+ if (i in self) {
7832
+ result = callbackfn(result, self[i], i, object);
7833
+ }
7834
+ } while (i--);
7835
+
7836
+ return result;
7837
+ }
7838
+ }, !reduceRightCoercesToObject);
7839
+
7840
+ // ES5 15.4.4.14
7841
+ // http://es5.github.com/#x15.4.4.14
7842
+ // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf
7843
+ var hasFirefox2IndexOfBug = ArrayPrototype.indexOf && [0, 1].indexOf(1, 2) !== -1;
7844
+ defineProperties(ArrayPrototype, {
7845
+ indexOf: function indexOf(searchElement/*, fromIndex */) {
7846
+ var self = splitString && isString(this) ? strSplit(this, '') : ES.ToObject(this);
7847
+ var length = ES.ToUint32(self.length);
7848
+
7849
+ if (length === 0) {
7850
+ return -1;
7851
+ }
7852
+
7853
+ var i = 0;
7854
+ if (arguments.length > 1) {
7855
+ i = ES.ToInteger(arguments[1]);
7856
+ }
7857
+
7858
+ // handle negative indices
7859
+ i = i >= 0 ? i : max(0, length + i);
7860
+ for (; i < length; i++) {
7861
+ if (i in self && self[i] === searchElement) {
7862
+ return i;
7863
+ }
7864
+ }
7865
+ return -1;
7866
+ }
7867
+ }, hasFirefox2IndexOfBug);
7868
+
7869
+ // ES5 15.4.4.15
7870
+ // http://es5.github.com/#x15.4.4.15
7871
+ // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/lastIndexOf
7872
+ var hasFirefox2LastIndexOfBug = ArrayPrototype.lastIndexOf && [0, 1].lastIndexOf(0, -3) !== -1;
7873
+ defineProperties(ArrayPrototype, {
7874
+ lastIndexOf: function lastIndexOf(searchElement/*, fromIndex */) {
7875
+ var self = splitString && isString(this) ? strSplit(this, '') : ES.ToObject(this);
7876
+ var length = ES.ToUint32(self.length);
7877
+
7878
+ if (length === 0) {
7879
+ return -1;
7880
+ }
7881
+ var i = length - 1;
7882
+ if (arguments.length > 1) {
7883
+ i = min(i, ES.ToInteger(arguments[1]));
7884
+ }
7885
+ // handle negative indices
7886
+ i = i >= 0 ? i : length - Math.abs(i);
7887
+ for (; i >= 0; i--) {
7888
+ if (i in self && searchElement === self[i]) {
7889
+ return i;
7890
+ }
7891
+ }
7892
+ return -1;
7893
+ }
7894
+ }, hasFirefox2LastIndexOfBug);
7895
+
7896
+ // ES5 15.4.4.12
7897
+ // http://es5.github.com/#x15.4.4.12
7898
+ var spliceNoopReturnsEmptyArray = (function () {
7899
+ var a = [1, 2];
7900
+ var result = a.splice();
7901
+ return a.length === 2 && isArray(result) && result.length === 0;
7902
+ }());
7903
+ defineProperties(ArrayPrototype, {
7904
+ // Safari 5.0 bug where .splice() returns undefined
7905
+ splice: function splice(start, deleteCount) {
7906
+ if (arguments.length === 0) {
7907
+ return [];
7908
+ } else {
7909
+ return array_splice.apply(this, arguments);
7910
+ }
7911
+ }
7912
+ }, !spliceNoopReturnsEmptyArray);
7913
+
7914
+ var spliceWorksWithEmptyObject = (function () {
7915
+ var obj = {};
7916
+ ArrayPrototype.splice.call(obj, 0, 0, 1);
7917
+ return obj.length === 1;
7918
+ }());
7919
+ defineProperties(ArrayPrototype, {
7920
+ splice: function splice(start, deleteCount) {
7921
+ if (arguments.length === 0) {
7922
+ return [];
7923
+ }
7924
+ var args = arguments;
7925
+ this.length = max(ES.ToInteger(this.length), 0);
7926
+ if (arguments.length > 0 && typeof deleteCount !== 'number') {
7927
+ args = arraySlice(arguments);
7928
+ if (args.length < 2) {
7929
+ pushCall(args, this.length - start);
7930
+ } else {
7931
+ args[1] = ES.ToInteger(deleteCount);
7932
+ }
7933
+ }
7934
+ return array_splice.apply(this, args);
7935
+ }
7936
+ }, !spliceWorksWithEmptyObject);
7937
+ var spliceWorksWithLargeSparseArrays = (function () {
7938
+ // Per https://github.com/es-shims/es5-shim/issues/295
7939
+ // Safari 7/8 breaks with sparse arrays of size 1e5 or greater
7940
+ var arr = new $Array(1e5);
7941
+ // note: the index MUST be 8 or larger or the test will false pass
7942
+ arr[8] = 'x';
7943
+ arr.splice(1, 1);
7944
+ // note: this test must be defined *after* the indexOf shim
7945
+ // per https://github.com/es-shims/es5-shim/issues/313
7946
+ return arr.indexOf('x') === 7;
7947
+ }());
7948
+ var spliceWorksWithSmallSparseArrays = (function () {
7949
+ // Per https://github.com/es-shims/es5-shim/issues/295
7950
+ // Opera 12.15 breaks on this, no idea why.
7951
+ var n = 256;
7952
+ var arr = [];
7953
+ arr[n] = 'a';
7954
+ arr.splice(n + 1, 0, 'b');
7955
+ return arr[n] === 'a';
7956
+ }());
7957
+ defineProperties(ArrayPrototype, {
7958
+ splice: function splice(start, deleteCount) {
7959
+ var O = ES.ToObject(this);
7960
+ var A = [];
7961
+ var len = ES.ToUint32(O.length);
7962
+ var relativeStart = ES.ToInteger(start);
7963
+ var actualStart = relativeStart < 0 ? max((len + relativeStart), 0) : min(relativeStart, len);
7964
+ var actualDeleteCount = min(max(ES.ToInteger(deleteCount), 0), len - actualStart);
7965
+
7966
+ var k = 0;
7967
+ var from;
7968
+ while (k < actualDeleteCount) {
7969
+ from = $String(actualStart + k);
7970
+ if (owns(O, from)) {
7971
+ A[k] = O[from];
7972
+ }
7973
+ k += 1;
7974
+ }
7975
+
7976
+ var items = arraySlice(arguments, 2);
7977
+ var itemCount = items.length;
7978
+ var to;
7979
+ if (itemCount < actualDeleteCount) {
7980
+ k = actualStart;
7981
+ var maxK = len - actualDeleteCount;
7982
+ while (k < maxK) {
7983
+ from = $String(k + actualDeleteCount);
7984
+ to = $String(k + itemCount);
7985
+ if (owns(O, from)) {
7986
+ O[to] = O[from];
7987
+ } else {
7988
+ delete O[to];
7989
+ }
7990
+ k += 1;
7991
+ }
7992
+ k = len;
7993
+ var minK = len - actualDeleteCount + itemCount;
7994
+ while (k > minK) {
7995
+ delete O[k - 1];
7996
+ k -= 1;
7997
+ }
7998
+ } else if (itemCount > actualDeleteCount) {
7999
+ k = len - actualDeleteCount;
8000
+ while (k > actualStart) {
8001
+ from = $String(k + actualDeleteCount - 1);
8002
+ to = $String(k + itemCount - 1);
8003
+ if (owns(O, from)) {
8004
+ O[to] = O[from];
8005
+ } else {
8006
+ delete O[to];
8007
+ }
8008
+ k -= 1;
8009
+ }
8010
+ }
8011
+ k = actualStart;
8012
+ for (var i = 0; i < items.length; ++i) {
8013
+ O[k] = items[i];
8014
+ k += 1;
8015
+ }
8016
+ O.length = len - actualDeleteCount + itemCount;
8017
+
8018
+ return A;
8019
+ }
8020
+ }, !spliceWorksWithLargeSparseArrays || !spliceWorksWithSmallSparseArrays);
8021
+
8022
+ var originalJoin = ArrayPrototype.join;
8023
+ var hasStringJoinBug;
8024
+ try {
8025
+ hasStringJoinBug = Array.prototype.join.call('123', ',') !== '1,2,3';
8026
+ } catch (e) {
8027
+ hasStringJoinBug = true;
8028
+ }
8029
+ if (hasStringJoinBug) {
8030
+ defineProperties(ArrayPrototype, {
8031
+ join: function join(separator) {
8032
+ var sep = typeof separator === 'undefined' ? ',' : separator;
8033
+ return originalJoin.call(isString(this) ? strSplit(this, '') : this, sep);
8034
+ }
8035
+ }, hasStringJoinBug);
8036
+ }
8037
+
8038
+ var hasJoinUndefinedBug = [1, 2].join(undefined) !== '1,2';
8039
+ if (hasJoinUndefinedBug) {
8040
+ defineProperties(ArrayPrototype, {
8041
+ join: function join(separator) {
8042
+ var sep = typeof separator === 'undefined' ? ',' : separator;
8043
+ return originalJoin.call(this, sep);
8044
+ }
8045
+ }, hasJoinUndefinedBug);
8046
+ }
8047
+
8048
+ var pushShim = function push(item) {
8049
+ var O = ES.ToObject(this);
8050
+ var n = ES.ToUint32(O.length);
8051
+ var i = 0;
8052
+ while (i < arguments.length) {
8053
+ O[n + i] = arguments[i];
8054
+ i += 1;
8055
+ }
8056
+ O.length = n + i;
8057
+ return n + i;
8058
+ };
8059
+
8060
+ var pushIsNotGeneric = (function () {
8061
+ var obj = {};
8062
+ var result = Array.prototype.push.call(obj, undefined);
8063
+ return result !== 1 || obj.length !== 1 || typeof obj[0] !== 'undefined' || !owns(obj, 0);
8064
+ }());
8065
+ defineProperties(ArrayPrototype, {
8066
+ push: function push(item) {
8067
+ if (isArray(this)) {
8068
+ return array_push.apply(this, arguments);
8069
+ }
8070
+ return pushShim.apply(this, arguments);
8071
+ }
8072
+ }, pushIsNotGeneric);
8073
+
8074
+ // This fixes a very weird bug in Opera 10.6 when pushing `undefined
8075
+ var pushUndefinedIsWeird = (function () {
8076
+ var arr = [];
8077
+ var result = arr.push(undefined);
8078
+ return result !== 1 || arr.length !== 1 || typeof arr[0] !== 'undefined' || !owns(arr, 0);
8079
+ }());
8080
+ defineProperties(ArrayPrototype, { push: pushShim }, pushUndefinedIsWeird);
8081
+
8082
+ // ES5 15.2.3.14
8083
+ // http://es5.github.io/#x15.4.4.10
8084
+ // Fix boxed string bug
8085
+ defineProperties(ArrayPrototype, {
8086
+ slice: function (start, end) {
8087
+ var arr = isString(this) ? strSplit(this, '') : this;
8088
+ return arraySliceApply(arr, arguments);
8089
+ }
8090
+ }, splitString);
8091
+
8092
+ var sortIgnoresNonFunctions = (function () {
8093
+ try {
8094
+ [1, 2].sort(null);
8095
+ [1, 2].sort({});
8096
+ return true;
8097
+ } catch (e) {}
8098
+ return false;
8099
+ }());
8100
+ var sortThrowsOnRegex = (function () {
8101
+ // this is a problem in Firefox 4, in which `typeof /a/ === 'function'`
8102
+ try {
8103
+ [1, 2].sort(/a/);
8104
+ return false;
8105
+ } catch (e) {}
8106
+ return true;
8107
+ }());
8108
+ var sortIgnoresUndefined = (function () {
8109
+ // applies in IE 8, for one.
8110
+ try {
8111
+ [1, 2].sort(undefined);
8112
+ return true;
8113
+ } catch (e) {}
8114
+ return false;
8115
+ }());
8116
+ defineProperties(ArrayPrototype, {
8117
+ sort: function sort(compareFn) {
8118
+ if (typeof compareFn === 'undefined') {
8119
+ return arraySort(this);
8120
+ }
8121
+ if (!isCallable(compareFn)) {
8122
+ throw new TypeError('Array.prototype.sort callback must be a function');
8123
+ }
8124
+ return arraySort(this, compareFn);
8125
+ }
8126
+ }, sortIgnoresNonFunctions || !sortIgnoresUndefined || !sortThrowsOnRegex);
8127
+
8128
+ //
8129
+ // Object
8130
+ // ======
8131
+ //
8132
+
8133
+ // ES5 15.2.3.14
8134
+ // http://es5.github.com/#x15.2.3.14
8135
+
8136
+ // http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation
8137
+ var hasDontEnumBug = !isEnum({ 'toString': null }, 'toString');
8138
+ var hasProtoEnumBug = isEnum(function () {}, 'prototype');
8139
+ var hasStringEnumBug = !owns('x', '0');
8140
+ var equalsConstructorPrototype = function (o) {
8141
+ var ctor = o.constructor;
8142
+ return ctor && ctor.prototype === o;
8143
+ };
8144
+ var blacklistedKeys = {
8145
+ $window: true,
8146
+ $console: true,
8147
+ $parent: true,
8148
+ $self: true,
8149
+ $frame: true,
8150
+ $frames: true,
8151
+ $frameElement: true,
8152
+ $webkitIndexedDB: true,
8153
+ $webkitStorageInfo: true,
8154
+ $external: true
8155
+ };
8156
+ var hasAutomationEqualityBug = (function () {
8157
+ /* globals window */
8158
+ if (typeof window === 'undefined') {
8159
+ return false;
8160
+ }
8161
+ for (var k in window) {
8162
+ try {
8163
+ if (!blacklistedKeys['$' + k] && owns(window, k) && window[k] !== null && typeof window[k] === 'object') {
8164
+ equalsConstructorPrototype(window[k]);
8165
+ }
8166
+ } catch (e) {
8167
+ return true;
8168
+ }
8169
+ }
8170
+ return false;
8171
+ }());
8172
+ var equalsConstructorPrototypeIfNotBuggy = function (object) {
8173
+ if (typeof window === 'undefined' || !hasAutomationEqualityBug) {
8174
+ return equalsConstructorPrototype(object);
8175
+ }
8176
+ try {
8177
+ return equalsConstructorPrototype(object);
8178
+ } catch (e) {
8179
+ return false;
8180
+ }
8181
+ };
8182
+ var dontEnums = [
8183
+ 'toString',
8184
+ 'toLocaleString',
8185
+ 'valueOf',
8186
+ 'hasOwnProperty',
8187
+ 'isPrototypeOf',
8188
+ 'propertyIsEnumerable',
8189
+ 'constructor'
8190
+ ];
8191
+ var dontEnumsLength = dontEnums.length;
8192
+
8193
+ // taken directly from https://github.com/ljharb/is-arguments/blob/master/index.js
8194
+ // can be replaced with require('is-arguments') if we ever use a build process instead
8195
+ var isStandardArguments = function isArguments(value) {
8196
+ return toStr(value) === '[object Arguments]';
8197
+ };
8198
+ var isLegacyArguments = function isArguments(value) {
8199
+ return value !== null &&
8200
+ typeof value === 'object' &&
8201
+ typeof value.length === 'number' &&
8202
+ value.length >= 0 &&
8203
+ !isArray(value) &&
8204
+ isCallable(value.callee);
8205
+ };
8206
+ var isArguments = isStandardArguments(arguments) ? isStandardArguments : isLegacyArguments;
8207
+
8208
+ defineProperties($Object, {
8209
+ keys: function keys(object) {
8210
+ var isFn = isCallable(object);
8211
+ var isArgs = isArguments(object);
8212
+ var isObject = object !== null && typeof object === 'object';
8213
+ var isStr = isObject && isString(object);
8214
+
8215
+ if (!isObject && !isFn && !isArgs) {
8216
+ throw new TypeError('Object.keys called on a non-object');
8217
+ }
8218
+
8219
+ var theKeys = [];
8220
+ var skipProto = hasProtoEnumBug && isFn;
8221
+ if ((isStr && hasStringEnumBug) || isArgs) {
8222
+ for (var i = 0; i < object.length; ++i) {
8223
+ pushCall(theKeys, $String(i));
8224
+ }
8225
+ }
8226
+
8227
+ if (!isArgs) {
8228
+ for (var name in object) {
8229
+ if (!(skipProto && name === 'prototype') && owns(object, name)) {
8230
+ pushCall(theKeys, $String(name));
8231
+ }
8232
+ }
8233
+ }
8234
+
8235
+ if (hasDontEnumBug) {
8236
+ var skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);
8237
+ for (var j = 0; j < dontEnumsLength; j++) {
8238
+ var dontEnum = dontEnums[j];
8239
+ if (!(skipConstructor && dontEnum === 'constructor') && owns(object, dontEnum)) {
8240
+ pushCall(theKeys, dontEnum);
8241
+ }
8242
+ }
8243
+ }
8244
+ return theKeys;
8245
+ }
8246
+ });
8247
+
8248
+ var keysWorksWithArguments = $Object.keys && (function () {
8249
+ // Safari 5.0 bug
8250
+ return $Object.keys(arguments).length === 2;
8251
+ }(1, 2));
8252
+ var keysHasArgumentsLengthBug = $Object.keys && (function () {
8253
+ var argKeys = $Object.keys(arguments);
8254
+ return arguments.length !== 1 || argKeys.length !== 1 || argKeys[0] !== 1;
8255
+ }(1));
8256
+ var originalKeys = $Object.keys;
8257
+ defineProperties($Object, {
8258
+ keys: function keys(object) {
8259
+ if (isArguments(object)) {
8260
+ return originalKeys(arraySlice(object));
8261
+ } else {
8262
+ return originalKeys(object);
8263
+ }
8264
+ }
8265
+ }, !keysWorksWithArguments || keysHasArgumentsLengthBug);
8266
+
8267
+ //
8268
+ // Date
8269
+ // ====
8270
+ //
8271
+
8272
+ var hasNegativeMonthYearBug = new Date(-3509827329600292).getUTCMonth() !== 0;
8273
+ var aNegativeTestDate = new Date(-1509842289600292);
8274
+ var aPositiveTestDate = new Date(1449662400000);
8275
+ var hasToUTCStringFormatBug = aNegativeTestDate.toUTCString() !== 'Mon, 01 Jan -45875 11:59:59 GMT';
8276
+ var hasToDateStringFormatBug;
8277
+ var hasToStringFormatBug;
8278
+ var timeZoneOffset = aNegativeTestDate.getTimezoneOffset();
8279
+ if (timeZoneOffset < -720) {
8280
+ hasToDateStringFormatBug = aNegativeTestDate.toDateString() !== 'Tue Jan 02 -45875';
8281
+ hasToStringFormatBug = !(/^Thu Dec 10 2015 \d\d:\d\d:\d\d GMT[-\+]\d\d\d\d(?: |$)/).test(aPositiveTestDate.toString());
8282
+ } else {
8283
+ hasToDateStringFormatBug = aNegativeTestDate.toDateString() !== 'Mon Jan 01 -45875';
8284
+ hasToStringFormatBug = !(/^Wed Dec 09 2015 \d\d:\d\d:\d\d GMT[-\+]\d\d\d\d(?: |$)/).test(aPositiveTestDate.toString());
8285
+ }
8286
+
8287
+ var originalGetFullYear = call.bind(Date.prototype.getFullYear);
8288
+ var originalGetMonth = call.bind(Date.prototype.getMonth);
8289
+ var originalGetDate = call.bind(Date.prototype.getDate);
8290
+ var originalGetUTCFullYear = call.bind(Date.prototype.getUTCFullYear);
8291
+ var originalGetUTCMonth = call.bind(Date.prototype.getUTCMonth);
8292
+ var originalGetUTCDate = call.bind(Date.prototype.getUTCDate);
8293
+ var originalGetUTCDay = call.bind(Date.prototype.getUTCDay);
8294
+ var originalGetUTCHours = call.bind(Date.prototype.getUTCHours);
8295
+ var originalGetUTCMinutes = call.bind(Date.prototype.getUTCMinutes);
8296
+ var originalGetUTCSeconds = call.bind(Date.prototype.getUTCSeconds);
8297
+ var originalGetUTCMilliseconds = call.bind(Date.prototype.getUTCMilliseconds);
8298
+ var dayName = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
8299
+ var monthName = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
8300
+ var daysInMonth = function daysInMonth(month, year) {
8301
+ return originalGetDate(new Date(year, month, 0));
8302
+ };
8303
+
8304
+ defineProperties(Date.prototype, {
8305
+ getFullYear: function getFullYear() {
8306
+ if (!this || !(this instanceof Date)) {
8307
+ throw new TypeError('this is not a Date object.');
8308
+ }
8309
+ var year = originalGetFullYear(this);
8310
+ if (year < 0 && originalGetMonth(this) > 11) {
8311
+ return year + 1;
8312
+ }
8313
+ return year;
8314
+ },
8315
+ getMonth: function getMonth() {
8316
+ if (!this || !(this instanceof Date)) {
8317
+ throw new TypeError('this is not a Date object.');
8318
+ }
8319
+ var year = originalGetFullYear(this);
8320
+ var month = originalGetMonth(this);
8321
+ if (year < 0 && month > 11) {
8322
+ return 0;
8323
+ }
8324
+ return month;
8325
+ },
8326
+ getDate: function getDate() {
8327
+ if (!this || !(this instanceof Date)) {
8328
+ throw new TypeError('this is not a Date object.');
8329
+ }
8330
+ var year = originalGetFullYear(this);
8331
+ var month = originalGetMonth(this);
8332
+ var date = originalGetDate(this);
8333
+ if (year < 0 && month > 11) {
8334
+ if (month === 12) {
8335
+ return date;
8336
+ }
8337
+ var days = daysInMonth(0, year + 1);
8338
+ return (days - date) + 1;
8339
+ }
8340
+ return date;
8341
+ },
8342
+ getUTCFullYear: function getUTCFullYear() {
8343
+ if (!this || !(this instanceof Date)) {
8344
+ throw new TypeError('this is not a Date object.');
8345
+ }
8346
+ var year = originalGetUTCFullYear(this);
8347
+ if (year < 0 && originalGetUTCMonth(this) > 11) {
8348
+ return year + 1;
8349
+ }
8350
+ return year;
8351
+ },
8352
+ getUTCMonth: function getUTCMonth() {
8353
+ if (!this || !(this instanceof Date)) {
8354
+ throw new TypeError('this is not a Date object.');
8355
+ }
8356
+ var year = originalGetUTCFullYear(this);
8357
+ var month = originalGetUTCMonth(this);
8358
+ if (year < 0 && month > 11) {
8359
+ return 0;
8360
+ }
8361
+ return month;
8362
+ },
8363
+ getUTCDate: function getUTCDate() {
8364
+ if (!this || !(this instanceof Date)) {
8365
+ throw new TypeError('this is not a Date object.');
8366
+ }
8367
+ var year = originalGetUTCFullYear(this);
8368
+ var month = originalGetUTCMonth(this);
8369
+ var date = originalGetUTCDate(this);
8370
+ if (year < 0 && month > 11) {
8371
+ if (month === 12) {
8372
+ return date;
8373
+ }
8374
+ var days = daysInMonth(0, year + 1);
8375
+ return (days - date) + 1;
8376
+ }
8377
+ return date;
8378
+ }
8379
+ }, hasNegativeMonthYearBug);
8380
+
8381
+ defineProperties(Date.prototype, {
8382
+ toUTCString: function toUTCString() {
8383
+ if (!this || !(this instanceof Date)) {
8384
+ throw new TypeError('this is not a Date object.');
8385
+ }
8386
+ var day = originalGetUTCDay(this);
8387
+ var date = originalGetUTCDate(this);
8388
+ var month = originalGetUTCMonth(this);
8389
+ var year = originalGetUTCFullYear(this);
8390
+ var hour = originalGetUTCHours(this);
8391
+ var minute = originalGetUTCMinutes(this);
8392
+ var second = originalGetUTCSeconds(this);
8393
+ return dayName[day] + ', ' +
8394
+ (date < 10 ? '0' + date : date) + ' ' +
8395
+ monthName[month] + ' ' +
8396
+ year + ' ' +
8397
+ (hour < 10 ? '0' + hour : hour) + ':' +
8398
+ (minute < 10 ? '0' + minute : minute) + ':' +
8399
+ (second < 10 ? '0' + second : second) + ' GMT';
8400
+ }
8401
+ }, hasNegativeMonthYearBug || hasToUTCStringFormatBug);
8402
+
8403
+ // Opera 12 has `,`
8404
+ defineProperties(Date.prototype, {
8405
+ toDateString: function toDateString() {
8406
+ if (!this || !(this instanceof Date)) {
8407
+ throw new TypeError('this is not a Date object.');
8408
+ }
8409
+ var day = this.getDay();
8410
+ var date = this.getDate();
8411
+ var month = this.getMonth();
8412
+ var year = this.getFullYear();
8413
+ return dayName[day] + ' ' +
8414
+ monthName[month] + ' ' +
8415
+ (date < 10 ? '0' + date : date) + ' ' +
8416
+ year;
8417
+ }
8418
+ }, hasNegativeMonthYearBug || hasToDateStringFormatBug);
8419
+
8420
+ // can't use defineProperties here because of toString enumeration issue in IE <= 8
8421
+ if (hasNegativeMonthYearBug || hasToStringFormatBug) {
8422
+ Date.prototype.toString = function toString() {
8423
+ if (!this || !(this instanceof Date)) {
8424
+ throw new TypeError('this is not a Date object.');
8425
+ }
8426
+ var day = this.getDay();
8427
+ var date = this.getDate();
8428
+ var month = this.getMonth();
8429
+ var year = this.getFullYear();
8430
+ var hour = this.getHours();
8431
+ var minute = this.getMinutes();
8432
+ var second = this.getSeconds();
8433
+ var timezoneOffset = this.getTimezoneOffset();
8434
+ var hoursOffset = Math.floor(Math.abs(timezoneOffset) / 60);
8435
+ var minutesOffset = Math.floor(Math.abs(timezoneOffset) % 60);
8436
+ return dayName[day] + ' ' +
8437
+ monthName[month] + ' ' +
8438
+ (date < 10 ? '0' + date : date) + ' ' +
8439
+ year + ' ' +
8440
+ (hour < 10 ? '0' + hour : hour) + ':' +
8441
+ (minute < 10 ? '0' + minute : minute) + ':' +
8442
+ (second < 10 ? '0' + second : second) + ' GMT' +
8443
+ (timezoneOffset > 0 ? '-' : '+') +
8444
+ (hoursOffset < 10 ? '0' + hoursOffset : hoursOffset) +
8445
+ (minutesOffset < 10 ? '0' + minutesOffset : minutesOffset);
8446
+ };
8447
+ if (supportsDescriptors) {
8448
+ $Object.defineProperty(Date.prototype, 'toString', {
8449
+ configurable: true,
8450
+ enumerable: false,
8451
+ writable: true
8452
+ });
8453
+ }
8454
+ }
8455
+
8456
+ // ES5 15.9.5.43
8457
+ // http://es5.github.com/#x15.9.5.43
8458
+ // This function returns a String value represent the instance in time
8459
+ // represented by this Date object. The format of the String is the Date Time
8460
+ // string format defined in 15.9.1.15. All fields are present in the String.
8461
+ // The time zone is always UTC, denoted by the suffix Z. If the time value of
8462
+ // this object is not a finite Number a RangeError exception is thrown.
8463
+ var negativeDate = -62198755200000;
8464
+ var negativeYearString = '-000001';
8465
+ var hasNegativeDateBug = Date.prototype.toISOString && new Date(negativeDate).toISOString().indexOf(negativeYearString) === -1;
8466
+ var hasSafari51DateBug = Date.prototype.toISOString && new Date(-1).toISOString() !== '1969-12-31T23:59:59.999Z';
8467
+
8468
+ var getTime = call.bind(Date.prototype.getTime);
8469
+
8470
+ defineProperties(Date.prototype, {
8471
+ toISOString: function toISOString() {
8472
+ if (!isFinite(this) || !isFinite(getTime(this))) {
8473
+ // Adope Photoshop requires the second check.
8474
+ throw new RangeError('Date.prototype.toISOString called on non-finite value.');
8475
+ }
8476
+
8477
+ var year = originalGetUTCFullYear(this);
8478
+
8479
+ var month = originalGetUTCMonth(this);
8480
+ // see https://github.com/es-shims/es5-shim/issues/111
8481
+ year += Math.floor(month / 12);
8482
+ month = (month % 12 + 12) % 12;
8483
+
8484
+ // the date time string format is specified in 15.9.1.15.
8485
+ var result = [month + 1, originalGetUTCDate(this), originalGetUTCHours(this), originalGetUTCMinutes(this), originalGetUTCSeconds(this)];
8486
+ year = (
8487
+ (year < 0 ? '-' : (year > 9999 ? '+' : '')) +
8488
+ strSlice('00000' + Math.abs(year), (0 <= year && year <= 9999) ? -4 : -6)
8489
+ );
8490
+
8491
+ for (var i = 0; i < result.length; ++i) {
8492
+ // pad months, days, hours, minutes, and seconds to have two digits.
8493
+ result[i] = strSlice('00' + result[i], -2);
8494
+ }
8495
+ // pad milliseconds to have three digits.
8496
+ return (
8497
+ year + '-' + arraySlice(result, 0, 2).join('-') +
8498
+ 'T' + arraySlice(result, 2).join(':') + '.' +
8499
+ strSlice('000' + originalGetUTCMilliseconds(this), -3) + 'Z'
8500
+ );
8501
+ }
8502
+ }, hasNegativeDateBug || hasSafari51DateBug);
8503
+
8504
+ // ES5 15.9.5.44
8505
+ // http://es5.github.com/#x15.9.5.44
8506
+ // This function provides a String representation of a Date object for use by
8507
+ // JSON.stringify (15.12.3).
8508
+ var dateToJSONIsSupported = (function () {
8509
+ try {
8510
+ return Date.prototype.toJSON &&
8511
+ new Date(NaN).toJSON() === null &&
8512
+ new Date(negativeDate).toJSON().indexOf(negativeYearString) !== -1 &&
8513
+ Date.prototype.toJSON.call({ // generic
8514
+ toISOString: function () { return true; }
8515
+ });
8516
+ } catch (e) {
8517
+ return false;
8518
+ }
8519
+ }());
8520
+ if (!dateToJSONIsSupported) {
8521
+ Date.prototype.toJSON = function toJSON(key) {
8522
+ // When the toJSON method is called with argument key, the following
8523
+ // steps are taken:
8524
+
8525
+ // 1. Let O be the result of calling ToObject, giving it the this
8526
+ // value as its argument.
8527
+ // 2. Let tv be ES.ToPrimitive(O, hint Number).
8528
+ var O = $Object(this);
8529
+ var tv = ES.ToPrimitive(O);
8530
+ // 3. If tv is a Number and is not finite, return null.
8531
+ if (typeof tv === 'number' && !isFinite(tv)) {
8532
+ return null;
8533
+ }
8534
+ // 4. Let toISO be the result of calling the [[Get]] internal method of
8535
+ // O with argument "toISOString".
8536
+ var toISO = O.toISOString;
8537
+ // 5. If IsCallable(toISO) is false, throw a TypeError exception.
8538
+ if (!isCallable(toISO)) {
8539
+ throw new TypeError('toISOString property is not callable');
8540
+ }
8541
+ // 6. Return the result of calling the [[Call]] internal method of
8542
+ // toISO with O as the this value and an empty argument list.
8543
+ return toISO.call(O);
8544
+
8545
+ // NOTE 1 The argument is ignored.
8546
+
8547
+ // NOTE 2 The toJSON function is intentionally generic; it does not
8548
+ // require that its this value be a Date object. Therefore, it can be
8549
+ // transferred to other kinds of objects for use as a method. However,
8550
+ // it does require that any such object have a toISOString method. An
8551
+ // object is free to use the argument key to filter its
8552
+ // stringification.
8553
+ };
8554
+ }
8555
+
8556
+ // ES5 15.9.4.2
8557
+ // http://es5.github.com/#x15.9.4.2
8558
+ // based on work shared by Daniel Friesen (dantman)
8559
+ // http://gist.github.com/303249
8560
+ var supportsExtendedYears = Date.parse('+033658-09-27T01:46:40.000Z') === 1e15;
8561
+ var acceptsInvalidDates = !isNaN(Date.parse('2012-04-04T24:00:00.500Z')) || !isNaN(Date.parse('2012-11-31T23:59:59.000Z')) || !isNaN(Date.parse('2012-12-31T23:59:60.000Z'));
8562
+ var doesNotParseY2KNewYear = isNaN(Date.parse('2000-01-01T00:00:00.000Z'));
8563
+ if (doesNotParseY2KNewYear || acceptsInvalidDates || !supportsExtendedYears) {
8564
+ // XXX global assignment won't work in embeddings that use
8565
+ // an alternate object for the context.
8566
+ /* global Date: true */
8567
+ /* eslint-disable no-undef */
8568
+ var maxSafeUnsigned32Bit = Math.pow(2, 31) - 1;
8569
+ var hasSafariSignedIntBug = isActualNaN(new Date(1970, 0, 1, 0, 0, 0, maxSafeUnsigned32Bit + 1).getTime());
8570
+ /* eslint-disable no-implicit-globals */
8571
+ Date = (function (NativeDate) {
8572
+ /* eslint-enable no-implicit-globals */
8573
+ /* eslint-enable no-undef */
8574
+ // Date.length === 7
8575
+ var DateShim = function Date(Y, M, D, h, m, s, ms) {
8576
+ var length = arguments.length;
8577
+ var date;
8578
+ if (this instanceof NativeDate) {
8579
+ var seconds = s;
8580
+ var millis = ms;
8581
+ if (hasSafariSignedIntBug && length >= 7 && ms > maxSafeUnsigned32Bit) {
8582
+ // work around a Safari 8/9 bug where it treats the seconds as signed
8583
+ var msToShift = Math.floor(ms / maxSafeUnsigned32Bit) * maxSafeUnsigned32Bit;
8584
+ var sToShift = Math.floor(msToShift / 1e3);
8585
+ seconds += sToShift;
8586
+ millis -= sToShift * 1e3;
8587
+ }
8588
+ date = length === 1 && $String(Y) === Y ? // isString(Y)
8589
+ // We explicitly pass it through parse:
8590
+ new NativeDate(DateShim.parse(Y)) :
8591
+ // We have to manually make calls depending on argument
8592
+ // length here
8593
+ length >= 7 ? new NativeDate(Y, M, D, h, m, seconds, millis) :
8594
+ length >= 6 ? new NativeDate(Y, M, D, h, m, seconds) :
8595
+ length >= 5 ? new NativeDate(Y, M, D, h, m) :
8596
+ length >= 4 ? new NativeDate(Y, M, D, h) :
8597
+ length >= 3 ? new NativeDate(Y, M, D) :
8598
+ length >= 2 ? new NativeDate(Y, M) :
8599
+ length >= 1 ? new NativeDate(Y instanceof NativeDate ? +Y : Y) :
8600
+ new NativeDate();
8601
+ } else {
8602
+ date = NativeDate.apply(this, arguments);
8603
+ }
8604
+ if (!isPrimitive(date)) {
8605
+ // Prevent mixups with unfixed Date object
8606
+ defineProperties(date, { constructor: DateShim }, true);
8607
+ }
8608
+ return date;
8609
+ };
8610
+
8611
+ // 15.9.1.15 Date Time String Format.
8612
+ var isoDateExpression = new RegExp('^' +
8613
+ '(\\d{4}|[+-]\\d{6})' + // four-digit year capture or sign +
8614
+ // 6-digit extended year
8615
+ '(?:-(\\d{2})' + // optional month capture
8616
+ '(?:-(\\d{2})' + // optional day capture
8617
+ '(?:' + // capture hours:minutes:seconds.milliseconds
8618
+ 'T(\\d{2})' + // hours capture
8619
+ ':(\\d{2})' + // minutes capture
8620
+ '(?:' + // optional :seconds.milliseconds
8621
+ ':(\\d{2})' + // seconds capture
8622
+ '(?:(\\.\\d{1,}))?' + // milliseconds capture
8623
+ ')?' +
8624
+ '(' + // capture UTC offset component
8625
+ 'Z|' + // UTC capture
8626
+ '(?:' + // offset specifier +/-hours:minutes
8627
+ '([-+])' + // sign capture
8628
+ '(\\d{2})' + // hours offset capture
8629
+ ':(\\d{2})' + // minutes offset capture
8630
+ ')' +
8631
+ ')?)?)?)?' +
8632
+ '$');
8633
+
8634
+ var months = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365];
8635
+
8636
+ var dayFromMonth = function dayFromMonth(year, month) {
8637
+ var t = month > 1 ? 1 : 0;
8638
+ return (
8639
+ months[month] +
8640
+ Math.floor((year - 1969 + t) / 4) -
8641
+ Math.floor((year - 1901 + t) / 100) +
8642
+ Math.floor((year - 1601 + t) / 400) +
8643
+ 365 * (year - 1970)
8644
+ );
8645
+ };
8646
+
8647
+ var toUTC = function toUTC(t) {
8648
+ var s = 0;
8649
+ var ms = t;
8650
+ if (hasSafariSignedIntBug && ms > maxSafeUnsigned32Bit) {
8651
+ // work around a Safari 8/9 bug where it treats the seconds as signed
8652
+ var msToShift = Math.floor(ms / maxSafeUnsigned32Bit) * maxSafeUnsigned32Bit;
8653
+ var sToShift = Math.floor(msToShift / 1e3);
8654
+ s += sToShift;
8655
+ ms -= sToShift * 1e3;
8656
+ }
8657
+ return $Number(new NativeDate(1970, 0, 1, 0, 0, s, ms));
8658
+ };
8659
+
8660
+ // Copy any custom methods a 3rd party library may have added
8661
+ for (var key in NativeDate) {
8662
+ if (owns(NativeDate, key)) {
8663
+ DateShim[key] = NativeDate[key];
8664
+ }
8665
+ }
8666
+
8667
+ // Copy "native" methods explicitly; they may be non-enumerable
8668
+ defineProperties(DateShim, {
8669
+ now: NativeDate.now,
8670
+ UTC: NativeDate.UTC
8671
+ }, true);
8672
+ DateShim.prototype = NativeDate.prototype;
8673
+ defineProperties(DateShim.prototype, {
8674
+ constructor: DateShim
8675
+ }, true);
8676
+
8677
+ // Upgrade Date.parse to handle simplified ISO 8601 strings
8678
+ var parseShim = function parse(string) {
8679
+ var match = isoDateExpression.exec(string);
8680
+ if (match) {
8681
+ // parse months, days, hours, minutes, seconds, and milliseconds
8682
+ // provide default values if necessary
8683
+ // parse the UTC offset component
8684
+ var year = $Number(match[1]),
8685
+ month = $Number(match[2] || 1) - 1,
8686
+ day = $Number(match[3] || 1) - 1,
8687
+ hour = $Number(match[4] || 0),
8688
+ minute = $Number(match[5] || 0),
8689
+ second = $Number(match[6] || 0),
8690
+ millisecond = Math.floor($Number(match[7] || 0) * 1000),
8691
+ // When time zone is missed, local offset should be used
8692
+ // (ES 5.1 bug)
8693
+ // see https://bugs.ecmascript.org/show_bug.cgi?id=112
8694
+ isLocalTime = Boolean(match[4] && !match[8]),
8695
+ signOffset = match[9] === '-' ? 1 : -1,
8696
+ hourOffset = $Number(match[10] || 0),
8697
+ minuteOffset = $Number(match[11] || 0),
8698
+ result;
8699
+ var hasMinutesOrSecondsOrMilliseconds = minute > 0 || second > 0 || millisecond > 0;
8700
+ if (
8701
+ hour < (hasMinutesOrSecondsOrMilliseconds ? 24 : 25) &&
8702
+ minute < 60 && second < 60 && millisecond < 1000 &&
8703
+ month > -1 && month < 12 && hourOffset < 24 &&
8704
+ minuteOffset < 60 && // detect invalid offsets
8705
+ day > -1 &&
8706
+ day < (dayFromMonth(year, month + 1) - dayFromMonth(year, month))
8707
+ ) {
8708
+ result = (
8709
+ (dayFromMonth(year, month) + day) * 24 +
8710
+ hour +
8711
+ hourOffset * signOffset
8712
+ ) * 60;
8713
+ result = (
8714
+ (result + minute + minuteOffset * signOffset) * 60 +
8715
+ second
8716
+ ) * 1000 + millisecond;
8717
+ if (isLocalTime) {
8718
+ result = toUTC(result);
8719
+ }
8720
+ if (-8.64e15 <= result && result <= 8.64e15) {
8721
+ return result;
8722
+ }
8723
+ }
8724
+ return NaN;
8725
+ }
8726
+ return NativeDate.parse.apply(this, arguments);
8727
+ };
8728
+ defineProperties(DateShim, { parse: parseShim });
8729
+
8730
+ return DateShim;
8731
+ }(Date));
8732
+ /* global Date: false */
8733
+ }
8734
+
8735
+ // ES5 15.9.4.4
8736
+ // http://es5.github.com/#x15.9.4.4
8737
+ if (!Date.now) {
8738
+ Date.now = function now() {
8739
+ return new Date().getTime();
8740
+ };
8741
+ }
8742
+
8743
+ //
8744
+ // Number
8745
+ // ======
8746
+ //
8747
+
8748
+ // ES5.1 15.7.4.5
8749
+ // http://es5.github.com/#x15.7.4.5
8750
+ var hasToFixedBugs = NumberPrototype.toFixed && (
8751
+ (0.00008).toFixed(3) !== '0.000' ||
8752
+ (0.9).toFixed(0) !== '1' ||
8753
+ (1.255).toFixed(2) !== '1.25' ||
8754
+ (1000000000000000128).toFixed(0) !== '1000000000000000128'
8755
+ );
8756
+
8757
+ var toFixedHelpers = {
8758
+ base: 1e7,
8759
+ size: 6,
8760
+ data: [0, 0, 0, 0, 0, 0],
8761
+ multiply: function multiply(n, c) {
8762
+ var i = -1;
8763
+ var c2 = c;
8764
+ while (++i < toFixedHelpers.size) {
8765
+ c2 += n * toFixedHelpers.data[i];
8766
+ toFixedHelpers.data[i] = c2 % toFixedHelpers.base;
8767
+ c2 = Math.floor(c2 / toFixedHelpers.base);
8768
+ }
8769
+ },
8770
+ divide: function divide(n) {
8771
+ var i = toFixedHelpers.size;
8772
+ var c = 0;
8773
+ while (--i >= 0) {
8774
+ c += toFixedHelpers.data[i];
8775
+ toFixedHelpers.data[i] = Math.floor(c / n);
8776
+ c = (c % n) * toFixedHelpers.base;
8777
+ }
8778
+ },
8779
+ numToString: function numToString() {
8780
+ var i = toFixedHelpers.size;
8781
+ var s = '';
8782
+ while (--i >= 0) {
8783
+ if (s !== '' || i === 0 || toFixedHelpers.data[i] !== 0) {
8784
+ var t = $String(toFixedHelpers.data[i]);
8785
+ if (s === '') {
8786
+ s = t;
8787
+ } else {
8788
+ s += strSlice('0000000', 0, 7 - t.length) + t;
8789
+ }
8790
+ }
8791
+ }
8792
+ return s;
8793
+ },
8794
+ pow: function pow(x, n, acc) {
8795
+ return (n === 0 ? acc : (n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc)));
8796
+ },
8797
+ log: function log(x) {
8798
+ var n = 0;
8799
+ var x2 = x;
8800
+ while (x2 >= 4096) {
8801
+ n += 12;
8802
+ x2 /= 4096;
8803
+ }
8804
+ while (x2 >= 2) {
8805
+ n += 1;
8806
+ x2 /= 2;
8807
+ }
8808
+ return n;
8809
+ }
8810
+ };
8811
+
8812
+ var toFixedShim = function toFixed(fractionDigits) {
8813
+ var f, x, s, m, e, z, j, k;
8814
+
8815
+ // Test for NaN and round fractionDigits down
8816
+ f = $Number(fractionDigits);
8817
+ f = isActualNaN(f) ? 0 : Math.floor(f);
8818
+
8819
+ if (f < 0 || f > 20) {
8820
+ throw new RangeError('Number.toFixed called with invalid number of decimals');
8821
+ }
8822
+
8823
+ x = $Number(this);
8824
+
8825
+ if (isActualNaN(x)) {
8826
+ return 'NaN';
8827
+ }
8828
+
8829
+ // If it is too big or small, return the string value of the number
8830
+ if (x <= -1e21 || x >= 1e21) {
8831
+ return $String(x);
8832
+ }
8833
+
8834
+ s = '';
8835
+
8836
+ if (x < 0) {
8837
+ s = '-';
8838
+ x = -x;
8839
+ }
8840
+
8841
+ m = '0';
8842
+
8843
+ if (x > 1e-21) {
8844
+ // 1e-21 < x < 1e21
8845
+ // -70 < log2(x) < 70
8846
+ e = toFixedHelpers.log(x * toFixedHelpers.pow(2, 69, 1)) - 69;
8847
+ z = (e < 0 ? x * toFixedHelpers.pow(2, -e, 1) : x / toFixedHelpers.pow(2, e, 1));
8848
+ z *= 0x10000000000000; // Math.pow(2, 52);
8849
+ e = 52 - e;
8850
+
8851
+ // -18 < e < 122
8852
+ // x = z / 2 ^ e
8853
+ if (e > 0) {
8854
+ toFixedHelpers.multiply(0, z);
8855
+ j = f;
8856
+
8857
+ while (j >= 7) {
8858
+ toFixedHelpers.multiply(1e7, 0);
8859
+ j -= 7;
8860
+ }
8861
+
8862
+ toFixedHelpers.multiply(toFixedHelpers.pow(10, j, 1), 0);
8863
+ j = e - 1;
8864
+
8865
+ while (j >= 23) {
8866
+ toFixedHelpers.divide(1 << 23);
8867
+ j -= 23;
8868
+ }
8869
+
8870
+ toFixedHelpers.divide(1 << j);
8871
+ toFixedHelpers.multiply(1, 1);
8872
+ toFixedHelpers.divide(2);
8873
+ m = toFixedHelpers.numToString();
8874
+ } else {
8875
+ toFixedHelpers.multiply(0, z);
8876
+ toFixedHelpers.multiply(1 << (-e), 0);
8877
+ m = toFixedHelpers.numToString() + strSlice('0.00000000000000000000', 2, 2 + f);
8878
+ }
8879
+ }
8880
+
8881
+ if (f > 0) {
8882
+ k = m.length;
8883
+
8884
+ if (k <= f) {
8885
+ m = s + strSlice('0.0000000000000000000', 0, f - k + 2) + m;
8886
+ } else {
8887
+ m = s + strSlice(m, 0, k - f) + '.' + strSlice(m, k - f);
8888
+ }
8889
+ } else {
8890
+ m = s + m;
8891
+ }
8892
+
8893
+ return m;
8894
+ };
8895
+ defineProperties(NumberPrototype, { toFixed: toFixedShim }, hasToFixedBugs);
8896
+
8897
+ var hasToPrecisionUndefinedBug = (function () {
8898
+ try {
8899
+ return 1.0.toPrecision(undefined) === '1';
8900
+ } catch (e) {
8901
+ return true;
8902
+ }
8903
+ }());
8904
+ var originalToPrecision = NumberPrototype.toPrecision;
8905
+ defineProperties(NumberPrototype, {
8906
+ toPrecision: function toPrecision(precision) {
8907
+ return typeof precision === 'undefined' ? originalToPrecision.call(this) : originalToPrecision.call(this, precision);
8908
+ }
8909
+ }, hasToPrecisionUndefinedBug);
8910
+
8911
+ //
8912
+ // String
8913
+ // ======
8914
+ //
8915
+
8916
+ // ES5 15.5.4.14
8917
+ // http://es5.github.com/#x15.5.4.14
8918
+
8919
+ // [bugfix, IE lt 9, firefox 4, Konqueror, Opera, obscure browsers]
8920
+ // Many browsers do not split properly with regular expressions or they
8921
+ // do not perform the split correctly under obscure conditions.
8922
+ // See http://blog.stevenlevithan.com/archives/cross-browser-split
8923
+ // I've tested in many browsers and this seems to cover the deviant ones:
8924
+ // 'ab'.split(/(?:ab)*/) should be ["", ""], not [""]
8925
+ // '.'.split(/(.?)(.?)/) should be ["", ".", "", ""], not ["", ""]
8926
+ // 'tesst'.split(/(s)*/) should be ["t", undefined, "e", "s", "t"], not
8927
+ // [undefined, "t", undefined, "e", ...]
8928
+ // ''.split(/.?/) should be [], not [""]
8929
+ // '.'.split(/()()/) should be ["."], not ["", "", "."]
8930
+
8931
+ if (
8932
+ 'ab'.split(/(?:ab)*/).length !== 2 ||
8933
+ '.'.split(/(.?)(.?)/).length !== 4 ||
8934
+ 'tesst'.split(/(s)*/)[1] === 't' ||
8935
+ 'test'.split(/(?:)/, -1).length !== 4 ||
8936
+ ''.split(/.?/).length ||
8937
+ '.'.split(/()()/).length > 1
8938
+ ) {
8939
+ (function () {
8940
+ var compliantExecNpcg = typeof (/()??/).exec('')[1] === 'undefined'; // NPCG: nonparticipating capturing group
8941
+ var maxSafe32BitInt = Math.pow(2, 32) - 1;
8942
+
8943
+ StringPrototype.split = function (separator, limit) {
8944
+ var string = String(this);
8945
+ if (typeof separator === 'undefined' && limit === 0) {
8946
+ return [];
8947
+ }
8948
+
8949
+ // If `separator` is not a regex, use native split
8950
+ if (!isRegex(separator)) {
8951
+ return strSplit(this, separator, limit);
8952
+ }
8953
+
8954
+ var output = [];
8955
+ var flags = (separator.ignoreCase ? 'i' : '') +
8956
+ (separator.multiline ? 'm' : '') +
8957
+ (separator.unicode ? 'u' : '') + // in ES6
8958
+ (separator.sticky ? 'y' : ''), // Firefox 3+ and ES6
8959
+ lastLastIndex = 0,
8960
+ // Make `global` and avoid `lastIndex` issues by working with a copy
8961
+ separator2, match, lastIndex, lastLength;
8962
+ var separatorCopy = new RegExp(separator.source, flags + 'g');
8963
+ if (!compliantExecNpcg) {
8964
+ // Doesn't need flags gy, but they don't hurt
8965
+ separator2 = new RegExp('^' + separatorCopy.source + '$(?!\\s)', flags);
8966
+ }
8967
+ /* Values for `limit`, per the spec:
8968
+ * If undefined: 4294967295 // maxSafe32BitInt
8969
+ * If 0, Infinity, or NaN: 0
8970
+ * If positive number: limit = Math.floor(limit); if (limit > 4294967295) limit -= 4294967296;
8971
+ * If negative number: 4294967296 - Math.floor(Math.abs(limit))
8972
+ * If other: Type-convert, then use the above rules
8973
+ */
8974
+ var splitLimit = typeof limit === 'undefined' ? maxSafe32BitInt : ES.ToUint32(limit);
8975
+ match = separatorCopy.exec(string);
8976
+ while (match) {
8977
+ // `separatorCopy.lastIndex` is not reliable cross-browser
8978
+ lastIndex = match.index + match[0].length;
8979
+ if (lastIndex > lastLastIndex) {
8980
+ pushCall(output, strSlice(string, lastLastIndex, match.index));
8981
+ // Fix browsers whose `exec` methods don't consistently return `undefined` for
8982
+ // nonparticipating capturing groups
8983
+ if (!compliantExecNpcg && match.length > 1) {
8984
+ /* eslint-disable no-loop-func */
8985
+ match[0].replace(separator2, function () {
8986
+ for (var i = 1; i < arguments.length - 2; i++) {
8987
+ if (typeof arguments[i] === 'undefined') {
8988
+ match[i] = void 0;
8989
+ }
8990
+ }
8991
+ });
8992
+ /* eslint-enable no-loop-func */
8993
+ }
8994
+ if (match.length > 1 && match.index < string.length) {
8995
+ array_push.apply(output, arraySlice(match, 1));
8996
+ }
8997
+ lastLength = match[0].length;
8998
+ lastLastIndex = lastIndex;
8999
+ if (output.length >= splitLimit) {
9000
+ break;
9001
+ }
9002
+ }
9003
+ if (separatorCopy.lastIndex === match.index) {
9004
+ separatorCopy.lastIndex++; // Avoid an infinite loop
9005
+ }
9006
+ match = separatorCopy.exec(string);
9007
+ }
9008
+ if (lastLastIndex === string.length) {
9009
+ if (lastLength || !separatorCopy.test('')) {
9010
+ pushCall(output, '');
9011
+ }
9012
+ } else {
9013
+ pushCall(output, strSlice(string, lastLastIndex));
9014
+ }
9015
+ return output.length > splitLimit ? arraySlice(output, 0, splitLimit) : output;
9016
+ };
9017
+ }());
9018
+
9019
+ // [bugfix, chrome]
9020
+ // If separator is undefined, then the result array contains just one String,
9021
+ // which is the this value (converted to a String). If limit is not undefined,
9022
+ // then the output array is truncated so that it contains no more than limit
9023
+ // elements.
9024
+ // "0".split(undefined, 0) -> []
9025
+ } else if ('0'.split(void 0, 0).length) {
9026
+ StringPrototype.split = function split(separator, limit) {
9027
+ if (typeof separator === 'undefined' && limit === 0) {
9028
+ return [];
9029
+ }
9030
+ return strSplit(this, separator, limit);
9031
+ };
9032
+ }
9033
+
9034
+ var str_replace = StringPrototype.replace;
9035
+ var replaceReportsGroupsCorrectly = (function () {
9036
+ var groups = [];
9037
+ 'x'.replace(/x(.)?/g, function (match, group) {
9038
+ pushCall(groups, group);
9039
+ });
9040
+ return groups.length === 1 && typeof groups[0] === 'undefined';
9041
+ }());
9042
+
9043
+ if (!replaceReportsGroupsCorrectly) {
9044
+ StringPrototype.replace = function replace(searchValue, replaceValue) {
9045
+ var isFn = isCallable(replaceValue);
9046
+ var hasCapturingGroups = isRegex(searchValue) && (/\)[*?]/).test(searchValue.source);
9047
+ if (!isFn || !hasCapturingGroups) {
9048
+ return str_replace.call(this, searchValue, replaceValue);
9049
+ } else {
9050
+ var wrappedReplaceValue = function (match) {
9051
+ var length = arguments.length;
9052
+ var originalLastIndex = searchValue.lastIndex;
9053
+ searchValue.lastIndex = 0;
9054
+ var args = searchValue.exec(match) || [];
9055
+ searchValue.lastIndex = originalLastIndex;
9056
+ pushCall(args, arguments[length - 2], arguments[length - 1]);
9057
+ return replaceValue.apply(this, args);
9058
+ };
9059
+ return str_replace.call(this, searchValue, wrappedReplaceValue);
9060
+ }
9061
+ };
9062
+ }
9063
+
9064
+ // ECMA-262, 3rd B.2.3
9065
+ // Not an ECMAScript standard, although ECMAScript 3rd Edition has a
9066
+ // non-normative section suggesting uniform semantics and it should be
9067
+ // normalized across all browsers
9068
+ // [bugfix, IE lt 9] IE < 9 substr() with negative value not working in IE
9069
+ var string_substr = StringPrototype.substr;
9070
+ var hasNegativeSubstrBug = ''.substr && '0b'.substr(-1) !== 'b';
9071
+ defineProperties(StringPrototype, {
9072
+ substr: function substr(start, length) {
9073
+ var normalizedStart = start;
9074
+ if (start < 0) {
9075
+ normalizedStart = max(this.length + start, 0);
9076
+ }
9077
+ return string_substr.call(this, normalizedStart, length);
9078
+ }
9079
+ }, hasNegativeSubstrBug);
9080
+
9081
+ // ES5 15.5.4.20
9082
+ // whitespace from: http://es5.github.io/#x15.5.4.20
9083
+ var ws = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' +
9084
+ '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028' +
9085
+ '\u2029\uFEFF';
9086
+ var zeroWidth = '\u200b';
9087
+ var wsRegexChars = '[' + ws + ']';
9088
+ var trimBeginRegexp = new RegExp('^' + wsRegexChars + wsRegexChars + '*');
9089
+ var trimEndRegexp = new RegExp(wsRegexChars + wsRegexChars + '*$');
9090
+ var hasTrimWhitespaceBug = StringPrototype.trim && (ws.trim() || !zeroWidth.trim());
9091
+ defineProperties(StringPrototype, {
9092
+ // http://blog.stevenlevithan.com/archives/faster-trim-javascript
9093
+ // http://perfectionkills.com/whitespace-deviations/
9094
+ trim: function trim() {
9095
+ if (typeof this === 'undefined' || this === null) {
9096
+ throw new TypeError("can't convert " + this + ' to object');
9097
+ }
9098
+ return $String(this).replace(trimBeginRegexp, '').replace(trimEndRegexp, '');
9099
+ }
9100
+ }, hasTrimWhitespaceBug);
9101
+ var trim = call.bind(String.prototype.trim);
9102
+
9103
+ var hasLastIndexBug = StringPrototype.lastIndexOf && 'abcあい'.lastIndexOf('あい', 2) !== -1;
9104
+ defineProperties(StringPrototype, {
9105
+ lastIndexOf: function lastIndexOf(searchString) {
9106
+ if (typeof this === 'undefined' || this === null) {
9107
+ throw new TypeError("can't convert " + this + ' to object');
9108
+ }
9109
+ var S = $String(this);
9110
+ var searchStr = $String(searchString);
9111
+ var numPos = arguments.length > 1 ? $Number(arguments[1]) : NaN;
9112
+ var pos = isActualNaN(numPos) ? Infinity : ES.ToInteger(numPos);
9113
+ var start = min(max(pos, 0), S.length);
9114
+ var searchLen = searchStr.length;
9115
+ var k = start + searchLen;
9116
+ while (k > 0) {
9117
+ k = max(0, k - searchLen);
9118
+ var index = strIndexOf(strSlice(S, k, start + searchLen), searchStr);
9119
+ if (index !== -1) {
9120
+ return k + index;
9121
+ }
9122
+ }
9123
+ return -1;
9124
+ }
9125
+ }, hasLastIndexBug);
9126
+
9127
+ var originalLastIndexOf = StringPrototype.lastIndexOf;
9128
+ defineProperties(StringPrototype, {
9129
+ lastIndexOf: function lastIndexOf(searchString) {
9130
+ return originalLastIndexOf.apply(this, arguments);
9131
+ }
9132
+ }, StringPrototype.lastIndexOf.length !== 1);
9133
+
9134
+ // ES-5 15.1.2.2
9135
+ /* eslint-disable radix */
9136
+ if (parseInt(ws + '08') !== 8 || parseInt(ws + '0x16') !== 22) {
9137
+ /* eslint-enable radix */
9138
+ /* global parseInt: true */
9139
+ parseInt = (function (origParseInt) {
9140
+ var hexRegex = /^[\-+]?0[xX]/;
9141
+ return function parseInt(str, radix) {
9142
+ var string = trim(String(str));
9143
+ var defaultedRadix = $Number(radix) || (hexRegex.test(string) ? 16 : 10);
9144
+ return origParseInt(string, defaultedRadix);
9145
+ };
9146
+ }(parseInt));
9147
+ }
9148
+
9149
+ // https://es5.github.io/#x15.1.2.3
9150
+ if (1 / parseFloat('-0') !== -Infinity) {
9151
+ /* global parseFloat: true */
9152
+ parseFloat = (function (origParseFloat) {
9153
+ return function parseFloat(string) {
9154
+ var inputString = trim(String(string));
9155
+ var result = origParseFloat(inputString);
9156
+ return result === 0 && strSlice(inputString, 0, 1) === '-' ? -0 : result;
9157
+ };
9158
+ }(parseFloat));
9159
+ }
9160
+
9161
+ if (String(new RangeError('test')) !== 'RangeError: test') {
9162
+ var errorToStringShim = function toString() {
9163
+ if (typeof this === 'undefined' || this === null) {
9164
+ throw new TypeError("can't convert " + this + ' to object');
9165
+ }
9166
+ var name = this.name;
9167
+ if (typeof name === 'undefined') {
9168
+ name = 'Error';
9169
+ } else if (typeof name !== 'string') {
9170
+ name = $String(name);
9171
+ }
9172
+ var msg = this.message;
9173
+ if (typeof msg === 'undefined') {
9174
+ msg = '';
9175
+ } else if (typeof msg !== 'string') {
9176
+ msg = $String(msg);
9177
+ }
9178
+ if (!name) {
9179
+ return msg;
9180
+ }
9181
+ if (!msg) {
9182
+ return name;
9183
+ }
9184
+ return name + ': ' + msg;
9185
+ };
9186
+ // can't use defineProperties here because of toString enumeration issue in IE <= 8
9187
+ Error.prototype.toString = errorToStringShim;
9188
+ }
9189
+
9190
+ if (supportsDescriptors) {
9191
+ var ensureNonEnumerable = function (obj, prop) {
9192
+ if (isEnum(obj, prop)) {
9193
+ var desc = Object.getOwnPropertyDescriptor(obj, prop);
9194
+ if (desc.configurable) {
9195
+ desc.enumerable = false;
9196
+ Object.defineProperty(obj, prop, desc);
9197
+ }
9198
+ }
9199
+ };
9200
+ ensureNonEnumerable(Error.prototype, 'message');
9201
+ if (Error.prototype.message !== '') {
9202
+ Error.prototype.message = '';
9203
+ }
9204
+ ensureNonEnumerable(Error.prototype, 'name');
9205
+ }
9206
+
9207
+ if (String(/a/mig) !== '/a/gim') {
9208
+ var regexToString = function toString() {
9209
+ var str = '/' + this.source + '/';
9210
+ if (this.global) {
9211
+ str += 'g';
9212
+ }
9213
+ if (this.ignoreCase) {
9214
+ str += 'i';
9215
+ }
9216
+ if (this.multiline) {
9217
+ str += 'm';
9218
+ }
9219
+ return str;
9220
+ };
9221
+ // can't use defineProperties here because of toString enumeration issue in IE <= 8
9222
+ RegExp.prototype.toString = regexToString;
9223
+ }
9224
+ }));
9225
+
9226
+ },{}],36:[function(_dereq_,module,exports){
9227
+ var arr = [];
9228
+ var each = arr.forEach;
9229
+ var slice = arr.slice;
9230
+
9231
+
9232
+ module.exports = function(obj) {
9233
+ each.call(slice.call(arguments, 1), function(source) {
9234
+ if (source) {
9235
+ for (var prop in source) {
9236
+ obj[prop] = source[prop];
9237
+ }
9238
+ }
9239
+ });
9240
+ return obj;
9241
+ };
9242
+
9243
+ },{}],37:[function(_dereq_,module,exports){
9244
+ exports.read = function (buffer, offset, isLE, mLen, nBytes) {
9245
+ var e, m
9246
+ var eLen = nBytes * 8 - mLen - 1
9247
+ var eMax = (1 << eLen) - 1
9248
+ var eBias = eMax >> 1
9249
+ var nBits = -7
9250
+ var i = isLE ? (nBytes - 1) : 0
9251
+ var d = isLE ? -1 : 1
9252
+ var s = buffer[offset + i]
9253
+
9254
+ i += d
9255
+
9256
+ e = s & ((1 << (-nBits)) - 1)
9257
+ s >>= (-nBits)
9258
+ nBits += eLen
9259
+ for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
9260
+
9261
+ m = e & ((1 << (-nBits)) - 1)
9262
+ e >>= (-nBits)
9263
+ nBits += mLen
9264
+ for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
9265
+
9266
+ if (e === 0) {
9267
+ e = 1 - eBias
9268
+ } else if (e === eMax) {
9269
+ return m ? NaN : ((s ? -1 : 1) * Infinity)
9270
+ } else {
9271
+ m = m + Math.pow(2, mLen)
9272
+ e = e - eBias
9273
+ }
9274
+ return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
9275
+ }
9276
+
9277
+ exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
9278
+ var e, m, c
9279
+ var eLen = nBytes * 8 - mLen - 1
9280
+ var eMax = (1 << eLen) - 1
9281
+ var eBias = eMax >> 1
9282
+ var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
9283
+ var i = isLE ? 0 : (nBytes - 1)
9284
+ var d = isLE ? 1 : -1
9285
+ var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
9286
+
9287
+ value = Math.abs(value)
9288
+
9289
+ if (isNaN(value) || value === Infinity) {
9290
+ m = isNaN(value) ? 1 : 0
9291
+ e = eMax
9292
+ } else {
9293
+ e = Math.floor(Math.log(value) / Math.LN2)
9294
+ if (value * (c = Math.pow(2, -e)) < 1) {
9295
+ e--
9296
+ c *= 2
9297
+ }
9298
+ if (e + eBias >= 1) {
9299
+ value += rt / c
9300
+ } else {
9301
+ value += rt * Math.pow(2, 1 - eBias)
9302
+ }
9303
+ if (value * c >= 2) {
9304
+ e++
9305
+ c /= 2
9306
+ }
9307
+
9308
+ if (e + eBias >= eMax) {
9309
+ m = 0
9310
+ e = eMax
9311
+ } else if (e + eBias >= 1) {
9312
+ m = (value * c - 1) * Math.pow(2, mLen)
9313
+ e = e + eBias
9314
+ } else {
9315
+ m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
9316
+ e = 0
9317
+ }
9318
+ }
9319
+
9320
+ for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
9321
+
9322
+ e = (e << mLen) | m
9323
+ eLen += mLen
9324
+ for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
9325
+
9326
+ buffer[offset + i - d] |= s * 128
9327
+ }
9328
+
9329
+ },{}],38:[function(_dereq_,module,exports){
9330
+
9331
+ var indexOf = [].indexOf;
9332
+
9333
+ module.exports = function(arr, obj){
9334
+ if (indexOf) return arr.indexOf(obj);
9335
+ for (var i = 0; i < arr.length; ++i) {
9336
+ if (arr[i] === obj) return i;
9337
+ }
9338
+ return -1;
9339
+ };
9340
+ },{}],39:[function(_dereq_,module,exports){
9341
+ module.exports = isFunction
9342
+
9343
+ var toString = Object.prototype.toString
9344
+
9345
+ function isFunction (fn) {
9346
+ var string = toString.call(fn)
9347
+ return string === '[object Function]' ||
9348
+ (typeof fn === 'function' && string !== '[object RegExp]') ||
9349
+ (typeof window !== 'undefined' &&
9350
+ // IE8 and below
9351
+ (fn === window.setTimeout ||
9352
+ fn === window.alert ||
9353
+ fn === window.confirm ||
9354
+ fn === window.prompt))
9355
+ };
9356
+
9357
+ },{}],40:[function(_dereq_,module,exports){
9358
+ var toString = {}.toString;
9359
+
9360
+ module.exports = Array.isArray || function (arr) {
9361
+ return toString.call(arr) == '[object Array]';
9362
+ };
9363
+
9364
+ },{}],41:[function(_dereq_,module,exports){
9365
+ (function (global){
9366
+ /*! https://mths.be/punycode v1.4.1 by @mathias */
9367
+ ;(function(root) {
9368
+
9369
+ /** Detect free variables */
9370
+ var freeExports = typeof exports == 'object' && exports &&
9371
+ !exports.nodeType && exports;
9372
+ var freeModule = typeof module == 'object' && module &&
9373
+ !module.nodeType && module;
9374
+ var freeGlobal = typeof global == 'object' && global;
9375
+ if (
9376
+ freeGlobal.global === freeGlobal ||
9377
+ freeGlobal.window === freeGlobal ||
9378
+ freeGlobal.self === freeGlobal
9379
+ ) {
9380
+ root = freeGlobal;
9381
+ }
9382
+
9383
+ /**
9384
+ * The `punycode` object.
9385
+ * @name punycode
9386
+ * @type Object
9387
+ */
9388
+ var punycode,
9389
+
9390
+ /** Highest positive signed 32-bit float value */
9391
+ maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1
9392
+
9393
+ /** Bootstring parameters */
9394
+ base = 36,
9395
+ tMin = 1,
9396
+ tMax = 26,
9397
+ skew = 38,
9398
+ damp = 700,
9399
+ initialBias = 72,
9400
+ initialN = 128, // 0x80
9401
+ delimiter = '-', // '\x2D'
9402
+
9403
+ /** Regular expressions */
9404
+ regexPunycode = /^xn--/,
9405
+ regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars
9406
+ regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators
9407
+
9408
+ /** Error messages */
9409
+ errors = {
9410
+ 'overflow': 'Overflow: input needs wider integers to process',
9411
+ 'not-basic': 'Illegal input >= 0x80 (not a basic code point)',
9412
+ 'invalid-input': 'Invalid input'
9413
+ },
9414
+
9415
+ /** Convenience shortcuts */
9416
+ baseMinusTMin = base - tMin,
9417
+ floor = Math.floor,
9418
+ stringFromCharCode = String.fromCharCode,
9419
+
9420
+ /** Temporary variable */
9421
+ key;
9422
+
9423
+ /*--------------------------------------------------------------------------*/
9424
+
9425
+ /**
9426
+ * A generic error utility function.
9427
+ * @private
9428
+ * @param {String} type The error type.
9429
+ * @returns {Error} Throws a `RangeError` with the applicable error message.
9430
+ */
9431
+ function error(type) {
9432
+ throw new RangeError(errors[type]);
9433
+ }
9434
+
9435
+ /**
9436
+ * A generic `Array#map` utility function.
9437
+ * @private
9438
+ * @param {Array} array The array to iterate over.
9439
+ * @param {Function} callback The function that gets called for every array
9440
+ * item.
9441
+ * @returns {Array} A new array of values returned by the callback function.
9442
+ */
9443
+ function map(array, fn) {
9444
+ var length = array.length;
9445
+ var result = [];
9446
+ while (length--) {
9447
+ result[length] = fn(array[length]);
9448
+ }
9449
+ return result;
9450
+ }
9451
+
9452
+ /**
9453
+ * A simple `Array#map`-like wrapper to work with domain name strings or email
9454
+ * addresses.
9455
+ * @private
9456
+ * @param {String} domain The domain name or email address.
9457
+ * @param {Function} callback The function that gets called for every
9458
+ * character.
9459
+ * @returns {Array} A new string of characters returned by the callback
9460
+ * function.
9461
+ */
9462
+ function mapDomain(string, fn) {
9463
+ var parts = string.split('@');
9464
+ var result = '';
9465
+ if (parts.length > 1) {
9466
+ // In email addresses, only the domain name should be punycoded. Leave
9467
+ // the local part (i.e. everything up to `@`) intact.
9468
+ result = parts[0] + '@';
9469
+ string = parts[1];
9470
+ }
9471
+ // Avoid `split(regex)` for IE8 compatibility. See #17.
9472
+ string = string.replace(regexSeparators, '\x2E');
9473
+ var labels = string.split('.');
9474
+ var encoded = map(labels, fn).join('.');
9475
+ return result + encoded;
9476
+ }
9477
+
9478
+ /**
9479
+ * Creates an array containing the numeric code points of each Unicode
9480
+ * character in the string. While JavaScript uses UCS-2 internally,
9481
+ * this function will convert a pair of surrogate halves (each of which
9482
+ * UCS-2 exposes as separate characters) into a single code point,
9483
+ * matching UTF-16.
9484
+ * @see `punycode.ucs2.encode`
9485
+ * @see <https://mathiasbynens.be/notes/javascript-encoding>
9486
+ * @memberOf punycode.ucs2
9487
+ * @name decode
9488
+ * @param {String} string The Unicode input string (UCS-2).
9489
+ * @returns {Array} The new array of code points.
9490
+ */
9491
+ function ucs2decode(string) {
9492
+ var output = [],
9493
+ counter = 0,
9494
+ length = string.length,
9495
+ value,
9496
+ extra;
9497
+ while (counter < length) {
9498
+ value = string.charCodeAt(counter++);
9499
+ if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
9500
+ // high surrogate, and there is a next character
9501
+ extra = string.charCodeAt(counter++);
9502
+ if ((extra & 0xFC00) == 0xDC00) { // low surrogate
9503
+ output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
9504
+ } else {
9505
+ // unmatched surrogate; only append this code unit, in case the next
9506
+ // code unit is the high surrogate of a surrogate pair
9507
+ output.push(value);
9508
+ counter--;
9509
+ }
9510
+ } else {
9511
+ output.push(value);
9512
+ }
9513
+ }
9514
+ return output;
9515
+ }
9516
+
9517
+ /**
9518
+ * Creates a string based on an array of numeric code points.
9519
+ * @see `punycode.ucs2.decode`
9520
+ * @memberOf punycode.ucs2
9521
+ * @name encode
9522
+ * @param {Array} codePoints The array of numeric code points.
9523
+ * @returns {String} The new Unicode string (UCS-2).
9524
+ */
9525
+ function ucs2encode(array) {
9526
+ return map(array, function(value) {
9527
+ var output = '';
9528
+ if (value > 0xFFFF) {
9529
+ value -= 0x10000;
9530
+ output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);
9531
+ value = 0xDC00 | value & 0x3FF;
9532
+ }
9533
+ output += stringFromCharCode(value);
9534
+ return output;
9535
+ }).join('');
9536
+ }
9537
+
9538
+ /**
9539
+ * Converts a basic code point into a digit/integer.
9540
+ * @see `digitToBasic()`
9541
+ * @private
9542
+ * @param {Number} codePoint The basic numeric code point value.
9543
+ * @returns {Number} The numeric value of a basic code point (for use in
9544
+ * representing integers) in the range `0` to `base - 1`, or `base` if
9545
+ * the code point does not represent a value.
9546
+ */
9547
+ function basicToDigit(codePoint) {
9548
+ if (codePoint - 48 < 10) {
9549
+ return codePoint - 22;
9550
+ }
9551
+ if (codePoint - 65 < 26) {
9552
+ return codePoint - 65;
9553
+ }
9554
+ if (codePoint - 97 < 26) {
9555
+ return codePoint - 97;
9556
+ }
9557
+ return base;
9558
+ }
9559
+
9560
+ /**
9561
+ * Converts a digit/integer into a basic code point.
9562
+ * @see `basicToDigit()`
9563
+ * @private
9564
+ * @param {Number} digit The numeric value of a basic code point.
9565
+ * @returns {Number} The basic code point whose value (when used for
9566
+ * representing integers) is `digit`, which needs to be in the range
9567
+ * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is
9568
+ * used; else, the lowercase form is used. The behavior is undefined
9569
+ * if `flag` is non-zero and `digit` has no uppercase form.
9570
+ */
9571
+ function digitToBasic(digit, flag) {
9572
+ // 0..25 map to ASCII a..z or A..Z
9573
+ // 26..35 map to ASCII 0..9
9574
+ return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);
9575
+ }
9576
+
9577
+ /**
9578
+ * Bias adaptation function as per section 3.4 of RFC 3492.
9579
+ * https://tools.ietf.org/html/rfc3492#section-3.4
9580
+ * @private
9581
+ */
9582
+ function adapt(delta, numPoints, firstTime) {
9583
+ var k = 0;
9584
+ delta = firstTime ? floor(delta / damp) : delta >> 1;
9585
+ delta += floor(delta / numPoints);
9586
+ for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {
9587
+ delta = floor(delta / baseMinusTMin);
9588
+ }
9589
+ return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));
9590
+ }
9591
+
9592
+ /**
9593
+ * Converts a Punycode string of ASCII-only symbols to a string of Unicode
9594
+ * symbols.
9595
+ * @memberOf punycode
9596
+ * @param {String} input The Punycode string of ASCII-only symbols.
9597
+ * @returns {String} The resulting string of Unicode symbols.
9598
+ */
9599
+ function decode(input) {
9600
+ // Don't use UCS-2
9601
+ var output = [],
9602
+ inputLength = input.length,
9603
+ out,
9604
+ i = 0,
9605
+ n = initialN,
9606
+ bias = initialBias,
9607
+ basic,
9608
+ j,
9609
+ index,
9610
+ oldi,
9611
+ w,
9612
+ k,
9613
+ digit,
9614
+ t,
9615
+ /** Cached calculation results */
9616
+ baseMinusT;
9617
+
9618
+ // Handle the basic code points: let `basic` be the number of input code
9619
+ // points before the last delimiter, or `0` if there is none, then copy
9620
+ // the first basic code points to the output.
9621
+
9622
+ basic = input.lastIndexOf(delimiter);
9623
+ if (basic < 0) {
9624
+ basic = 0;
9625
+ }
9626
+
9627
+ for (j = 0; j < basic; ++j) {
9628
+ // if it's not a basic code point
9629
+ if (input.charCodeAt(j) >= 0x80) {
9630
+ error('not-basic');
9631
+ }
9632
+ output.push(input.charCodeAt(j));
9633
+ }
9634
+
9635
+ // Main decoding loop: start just after the last delimiter if any basic code
9636
+ // points were copied; start at the beginning otherwise.
9637
+
9638
+ for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {
9639
+
9640
+ // `index` is the index of the next character to be consumed.
9641
+ // Decode a generalized variable-length integer into `delta`,
9642
+ // which gets added to `i`. The overflow checking is easier
9643
+ // if we increase `i` as we go, then subtract off its starting
9644
+ // value at the end to obtain `delta`.
9645
+ for (oldi = i, w = 1, k = base; /* no condition */; k += base) {
9646
+
9647
+ if (index >= inputLength) {
9648
+ error('invalid-input');
9649
+ }
9650
+
9651
+ digit = basicToDigit(input.charCodeAt(index++));
9652
+
9653
+ if (digit >= base || digit > floor((maxInt - i) / w)) {
9654
+ error('overflow');
9655
+ }
9656
+
9657
+ i += digit * w;
9658
+ t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
9659
+
9660
+ if (digit < t) {
9661
+ break;
9662
+ }
9663
+
9664
+ baseMinusT = base - t;
9665
+ if (w > floor(maxInt / baseMinusT)) {
9666
+ error('overflow');
9667
+ }
9668
+
9669
+ w *= baseMinusT;
9670
+
9671
+ }
9672
+
9673
+ out = output.length + 1;
9674
+ bias = adapt(i - oldi, out, oldi == 0);
9675
+
9676
+ // `i` was supposed to wrap around from `out` to `0`,
9677
+ // incrementing `n` each time, so we'll fix that now:
9678
+ if (floor(i / out) > maxInt - n) {
9679
+ error('overflow');
9680
+ }
9681
+
9682
+ n += floor(i / out);
9683
+ i %= out;
9684
+
9685
+ // Insert `n` at position `i` of the output
9686
+ output.splice(i++, 0, n);
9687
+
9688
+ }
9689
+
9690
+ return ucs2encode(output);
9691
+ }
9692
+
9693
+ /**
9694
+ * Converts a string of Unicode symbols (e.g. a domain name label) to a
9695
+ * Punycode string of ASCII-only symbols.
9696
+ * @memberOf punycode
9697
+ * @param {String} input The string of Unicode symbols.
9698
+ * @returns {String} The resulting Punycode string of ASCII-only symbols.
9699
+ */
9700
+ function encode(input) {
9701
+ var n,
9702
+ delta,
9703
+ handledCPCount,
9704
+ basicLength,
9705
+ bias,
9706
+ j,
9707
+ m,
9708
+ q,
9709
+ k,
9710
+ t,
9711
+ currentValue,
9712
+ output = [],
9713
+ /** `inputLength` will hold the number of code points in `input`. */
9714
+ inputLength,
9715
+ /** Cached calculation results */
9716
+ handledCPCountPlusOne,
9717
+ baseMinusT,
9718
+ qMinusT;
9719
+
9720
+ // Convert the input in UCS-2 to Unicode
9721
+ input = ucs2decode(input);
9722
+
9723
+ // Cache the length
9724
+ inputLength = input.length;
9725
+
9726
+ // Initialize the state
9727
+ n = initialN;
9728
+ delta = 0;
9729
+ bias = initialBias;
9730
+
9731
+ // Handle the basic code points
9732
+ for (j = 0; j < inputLength; ++j) {
9733
+ currentValue = input[j];
9734
+ if (currentValue < 0x80) {
9735
+ output.push(stringFromCharCode(currentValue));
9736
+ }
9737
+ }
9738
+
9739
+ handledCPCount = basicLength = output.length;
9740
+
9741
+ // `handledCPCount` is the number of code points that have been handled;
9742
+ // `basicLength` is the number of basic code points.
9743
+
9744
+ // Finish the basic string - if it is not empty - with a delimiter
9745
+ if (basicLength) {
9746
+ output.push(delimiter);
9747
+ }
9748
+
9749
+ // Main encoding loop:
9750
+ while (handledCPCount < inputLength) {
9751
+
9752
+ // All non-basic code points < n have been handled already. Find the next
9753
+ // larger one:
9754
+ for (m = maxInt, j = 0; j < inputLength; ++j) {
9755
+ currentValue = input[j];
9756
+ if (currentValue >= n && currentValue < m) {
9757
+ m = currentValue;
9758
+ }
9759
+ }
9760
+
9761
+ // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,
9762
+ // but guard against overflow
9763
+ handledCPCountPlusOne = handledCPCount + 1;
9764
+ if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {
9765
+ error('overflow');
9766
+ }
9767
+
9768
+ delta += (m - n) * handledCPCountPlusOne;
9769
+ n = m;
9770
+
9771
+ for (j = 0; j < inputLength; ++j) {
9772
+ currentValue = input[j];
9773
+
9774
+ if (currentValue < n && ++delta > maxInt) {
9775
+ error('overflow');
9776
+ }
9777
+
9778
+ if (currentValue == n) {
9779
+ // Represent delta as a generalized variable-length integer
9780
+ for (q = delta, k = base; /* no condition */; k += base) {
9781
+ t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
9782
+ if (q < t) {
9783
+ break;
9784
+ }
9785
+ qMinusT = q - t;
9786
+ baseMinusT = base - t;
9787
+ output.push(
9788
+ stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))
9789
+ );
9790
+ q = floor(qMinusT / baseMinusT);
9791
+ }
9792
+
9793
+ output.push(stringFromCharCode(digitToBasic(q, 0)));
9794
+ bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);
9795
+ delta = 0;
9796
+ ++handledCPCount;
9797
+ }
9798
+ }
9799
+
9800
+ ++delta;
9801
+ ++n;
9802
+
9803
+ }
9804
+ return output.join('');
9805
+ }
9806
+
9807
+ /**
9808
+ * Converts a Punycode string representing a domain name or an email address
9809
+ * to Unicode. Only the Punycoded parts of the input will be converted, i.e.
9810
+ * it doesn't matter if you call it on a string that has already been
9811
+ * converted to Unicode.
9812
+ * @memberOf punycode
9813
+ * @param {String} input The Punycoded domain name or email address to
9814
+ * convert to Unicode.
9815
+ * @returns {String} The Unicode representation of the given Punycode
9816
+ * string.
9817
+ */
9818
+ function toUnicode(input) {
9819
+ return mapDomain(input, function(string) {
9820
+ return regexPunycode.test(string)
9821
+ ? decode(string.slice(4).toLowerCase())
9822
+ : string;
9823
+ });
9824
+ }
9825
+
9826
+ /**
9827
+ * Converts a Unicode string representing a domain name or an email address to
9828
+ * Punycode. Only the non-ASCII parts of the domain name will be converted,
9829
+ * i.e. it doesn't matter if you call it with a domain that's already in
9830
+ * ASCII.
9831
+ * @memberOf punycode
9832
+ * @param {String} input The domain name or email address to convert, as a
9833
+ * Unicode string.
9834
+ * @returns {String} The Punycode representation of the given domain name or
9835
+ * email address.
9836
+ */
9837
+ function toASCII(input) {
9838
+ return mapDomain(input, function(string) {
9839
+ return regexNonASCII.test(string)
9840
+ ? 'xn--' + encode(string)
9841
+ : string;
9842
+ });
9843
+ }
9844
+
9845
+ /*--------------------------------------------------------------------------*/
9846
+
9847
+ /** Define the public API */
9848
+ punycode = {
9849
+ /**
9850
+ * A string representing the current Punycode.js version number.
9851
+ * @memberOf punycode
9852
+ * @type String
9853
+ */
9854
+ 'version': '1.4.1',
9855
+ /**
9856
+ * An object of methods to convert from JavaScript's internal character
9857
+ * representation (UCS-2) to Unicode code points, and back.
9858
+ * @see <https://mathiasbynens.be/notes/javascript-encoding>
9859
+ * @memberOf punycode
9860
+ * @type Object
9861
+ */
9862
+ 'ucs2': {
9863
+ 'decode': ucs2decode,
9864
+ 'encode': ucs2encode
9865
+ },
9866
+ 'decode': decode,
9867
+ 'encode': encode,
9868
+ 'toASCII': toASCII,
9869
+ 'toUnicode': toUnicode
9870
+ };
9871
+
9872
+ /** Expose `punycode` */
9873
+ // Some AMD build optimizers, like r.js, check for specific condition patterns
9874
+ // like the following:
9875
+ if (
9876
+ typeof define == 'function' &&
9877
+ typeof define.amd == 'object' &&
9878
+ define.amd
9879
+ ) {
9880
+ define('punycode', function() {
9881
+ return punycode;
9882
+ });
9883
+ } else if (freeExports && freeModule) {
9884
+ if (module.exports == freeExports) {
9885
+ // in Node.js, io.js, or RingoJS v0.8.0+
9886
+ freeModule.exports = punycode;
9887
+ } else {
9888
+ // in Narwhal or RingoJS v0.7.0-
9889
+ for (key in punycode) {
9890
+ punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);
9891
+ }
9892
+ }
9893
+ } else {
9894
+ // in Rhino or a web browser
9895
+ root.punycode = punycode;
9896
+ }
9897
+
9898
+ }(this));
9899
+
9900
+ }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
9901
+ },{}],42:[function(_dereq_,module,exports){
9902
+ /*!
9903
+ * $script.js JS loader & dependency manager
9904
+ * https://github.com/ded/script.js
9905
+ * (c) Dustin Diaz 2014 | License MIT
9906
+ */
9907
+
9908
+ (function (name, definition) {
9909
+ if (typeof module != 'undefined' && module.exports) module.exports = definition()
9910
+ else if (typeof define == 'function' && define.amd) define(definition)
9911
+ else this[name] = definition()
9912
+ })('$script', function () {
9913
+ var doc = document
9914
+ , head = doc.getElementsByTagName('head')[0]
9915
+ , s = 'string'
9916
+ , f = false
9917
+ , push = 'push'
9918
+ , readyState = 'readyState'
9919
+ , onreadystatechange = 'onreadystatechange'
9920
+ , list = {}
9921
+ , ids = {}
9922
+ , delay = {}
9923
+ , scripts = {}
9924
+ , scriptpath
9925
+ , urlArgs
9926
+
9927
+ function every(ar, fn) {
9928
+ for (var i = 0, j = ar.length; i < j; ++i) if (!fn(ar[i])) return f
9929
+ return 1
9930
+ }
9931
+ function each(ar, fn) {
9932
+ every(ar, function (el) {
9933
+ return !fn(el)
9934
+ })
9935
+ }
9936
+
9937
+ function $script(paths, idOrDone, optDone) {
9938
+ paths = paths[push] ? paths : [paths]
9939
+ var idOrDoneIsDone = idOrDone && idOrDone.call
9940
+ , done = idOrDoneIsDone ? idOrDone : optDone
9941
+ , id = idOrDoneIsDone ? paths.join('') : idOrDone
9942
+ , queue = paths.length
9943
+ function loopFn(item) {
9944
+ return item.call ? item() : list[item]
9945
+ }
9946
+ function callback() {
9947
+ if (!--queue) {
9948
+ list[id] = 1
9949
+ done && done()
9950
+ for (var dset in delay) {
9951
+ every(dset.split('|'), loopFn) && !each(delay[dset], loopFn) && (delay[dset] = [])
9952
+ }
9953
+ }
9954
+ }
9955
+ setTimeout(function () {
9956
+ each(paths, function loading(path, force) {
9957
+ if (path === null) return callback()
9958
+
9959
+ if (!force && !/^https?:\/\//.test(path) && scriptpath) {
9960
+ path = (path.indexOf('.js') === -1) ? scriptpath + path + '.js' : scriptpath + path;
9961
+ }
9962
+
9963
+ if (scripts[path]) {
9964
+ if (id) ids[id] = 1
9965
+ return (scripts[path] == 2) ? callback() : setTimeout(function () { loading(path, true) }, 0)
9966
+ }
9967
+
9968
+ scripts[path] = 1
9969
+ if (id) ids[id] = 1
9970
+ create(path, callback)
9971
+ })
9972
+ }, 0)
9973
+ return $script
9974
+ }
9975
+
9976
+ function create(path, fn) {
9977
+ var el = doc.createElement('script'), loaded
9978
+ el.onload = el.onerror = el[onreadystatechange] = function () {
9979
+ if ((el[readyState] && !(/^c|loade/.test(el[readyState]))) || loaded) return;
9980
+ el.onload = el[onreadystatechange] = null
9981
+ loaded = 1
9982
+ scripts[path] = 2
9983
+ fn()
9984
+ }
9985
+ el.async = 1
9986
+ el.src = urlArgs ? path + (path.indexOf('?') === -1 ? '?' : '&') + urlArgs : path;
9987
+ head.insertBefore(el, head.lastChild)
9988
+ }
9989
+
9990
+ $script.get = create
9991
+
9992
+ $script.order = function (scripts, id, done) {
9993
+ (function callback(s) {
9994
+ s = scripts.shift()
9995
+ !scripts.length ? $script(s, id, done) : $script(s, callback)
9996
+ }())
9997
+ }
9998
+
9999
+ $script.path = function (p) {
10000
+ scriptpath = p
10001
+ }
10002
+ $script.urlArgs = function (str) {
10003
+ urlArgs = str;
10004
+ }
10005
+ $script.ready = function (deps, ready, req) {
10006
+ deps = deps[push] ? deps : [deps]
10007
+ var missing = [];
10008
+ !each(deps, function (dep) {
10009
+ list[dep] || missing[push](dep);
10010
+ }) && every(deps, function (dep) {return list[dep]}) ?
10011
+ ready() : !function (key) {
10012
+ delay[key] = delay[key] || []
10013
+ delay[key][push](ready)
10014
+ req && req(missing)
10015
+ }(deps.join('|'))
10016
+ return $script
10017
+ }
10018
+
10019
+ $script.done = function (idOrDone) {
10020
+ $script([null], idOrDone)
10021
+ }
10022
+
10023
+ return $script
10024
+ });
10025
+
10026
+ },{}]},{},[29])(29)
10027
+ });
lib/flowplayer.min.js CHANGED
@@ -1,7 +1,10 @@
1
  /*!
2
 
3
- Flowplayer v5.5.2 (Thursday, 27. November 2014 10:32AM) | flowplayer.org/license
4
 
5
  */
6
- !function(e){function t(t,n,i){i=i||"transparent";var a="obj"+(""+Math.random()).slice(2,15),o='<object class="fp-engine" id="'+a+'" name="'+a+'" ';o+=e.browser.msie?'classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000">':' data="'+t+'" type="application/x-shockwave-flash">';var r={width:"100%",height:"100%",allowscriptaccess:"always",wmode:i,quality:"high",flashvars:"",movie:t+(e.browser.msie?"?"+a:""),name:a};return e.each(n,function(e,t){r.flashvars+=e+"="+t+"&"}),e.each(r,function(e,t){o+='<param name="'+e+'" value="'+t+'"/>'}),o+="</object>",e(o)}function n(e,t){return t=t||100,Math.round(e*t)/t}function i(e){return/mpegurl/i.test(e)?"application/x-mpegurl":"video/"+e}function a(e){return/^(video|application)/i.test(e)||(e=i(e)),!!b.canPlayType(e).replace("no","")}function o(t,n){var i=e.grep(t,function(e){return e.type===n});return i.length?i[0]:null}function r(e){var t=e.attr("src"),n=e.attr("type")||"",i=t.split(x)[1];return n=/mpegurl/i.test(n)?"mpegurl":n.replace("video/",""),{src:t,suffix:i||n,type:n||i}}function s(t){var n=this,i=[];e("source",t).each(function(){i.push(r(e(this)))}),i.length||i.push(r(t)),n.initialSources=i,n.resolve=function(t){return t?(e.isArray(t)?t={sources:e.map(t,function(t){var n,i=e.extend({},t);return e.each(t,function(e){n=e}),i.type=n,i.src=t[n],delete i[n],i})}:"string"==typeof t&&(t={src:t,sources:[]},e.each(i,function(e,n){"flash"!=n.type&&t.sources.push({type:n.type,src:t.src.replace(x,"."+n.suffix+"$2")})})),t):{sources:i}}}function l(e){return e=parseInt(e,10),e>=10?e:"0"+e}function d(e){e=e||0;var t=Math.floor(e/3600),n=Math.floor(e/60);return e-=60*n,t>=1?(n-=60*t,t+":"+l(n)+":"+l(e)):l(n)+":"+l(e)}!function(e){if(!e.browser){var t=e.browser={},n=navigator.userAgent.toLowerCase(),i=/(chrome)[ \/]([\w.]+)/.exec(n)||/(safari)[ \/]([\w.]+)/.exec(n)||/(webkit)[ \/]([\w.]+)/.exec(n)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(n)||/(msie) ([\w.]+)/.exec(n)||0>n.indexOf("compatible")&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(n)||[];i[1]&&(t[i[1]]=!0,t.version=i[2]||"0")}}(jQuery),e(function(){"function"==typeof e.fn.flowplayer&&e("video").parent(".flowplayer").flowplayer()});var u=[],c=[],f=window.navigator.userAgent;window.flowplayer=function(t){return e.isFunction(t)?c.push(t):"number"==typeof t||void 0===t?u[t||0]:e(t).data("flowplayer")},e(window).on("beforeunload",function(){e.each(u,function(t,n){n.conf.splash?n.unload():n.bind("error",function(){e(".flowplayer.is-error .fp-message").remove()})})});var p=!1;try{"object"==typeof window.localStorage&&(window.localStorage.flowplayerTestStorage="test",p=!0)}catch(v){}var g=/Safari/.exec(navigator.userAgent)&&!/Chrome/.exec(navigator.userAgent);m=/(\d+\.\d+) Safari/.exec(navigator.userAgent),safariVersion=m?Number(m[1]):100,e.extend(flowplayer,{version:"5.5.2",engine:{},conf:{},support:{},defaults:{debug:!1,disabled:!1,engine:"html5",fullscreen:window==window.top,keyboard:!0,ratio:9/16,adaptiveRatio:!1,flashfit:!1,rtmp:0,splash:!1,live:!1,swf:"//releases.flowplayer.org/5.5.2/flowplayer.swf",speeds:[.25,.5,1,1.5,2],tooltip:!0,volume:p?"true"==localStorage.muted?0:isNaN(localStorage.volume)?1:localStorage.volume||1:1,errors:["","Video loading aborted","Network error","Video not properly encoded","Video file not found","Unsupported video","Skin not found","SWF file not found","Subtitles not found","Invalid RTMP URL","Unsupported video format. Try installing Adobe Flash."],errorUrls:["","","","","","","","","","","http://get.adobe.com/flashplayer/"],playlist:[],hlsFix:g&&8>safariVersion}});var h=1;e.fn.flowplayer=function(t,n){return"string"==typeof t&&(t={swf:t}),e.isFunction(t)&&(n=t,t={}),!t&&this.data("flowplayer")||this.each(function(){var i,a,o=e(this).addClass("is-loading"),r=e.extend({},flowplayer.defaults,flowplayer.conf,t,o.data()),l=e("video",o).addClass("fp-engine").removeAttr("controls"),d=l.length?new s(l):null,f={};if(r.playlist.length){var v,m=r.preload||l.attr("preload");l.length&&l.replaceWith(v=e("<p />")),l=e("<video />").addClass("fp-engine"),v?v.replaceWith(l):o.prepend(l),flowplayer.support.video&&l.attr("preload",m),"string"==typeof r.playlist[0]?l.attr("src",r.playlist[0]):e.each(r.playlist[0],function(t,n){for(var i in n)n.hasOwnProperty(i)&&l.append(e("<source />").attr({type:"video/"+i,src:n[i]}))}),d=new s(l)}var g=o.data("flowplayer");g&&g.unload(),o.data("fp-player_id",o.data("fp-player_id")||h++);try{f=p?window.localStorage:f}catch(y){}var b=this.currentStyle&&"rtl"===this.currentStyle.direction||window.getComputedStyle&&"rtl"===window.getComputedStyle(this,null).getPropertyValue("direction");b&&o.addClass("is-rtl");var w=g||{conf:r,currentSpeed:1,volumeLevel:r.volume===void 0?1*f.volume:r.volume,video:{},disabled:!1,finished:!1,loading:!1,muted:"true"==f.muted||r.muted,paused:!1,playing:!1,ready:!1,splash:!1,rtl:b,load:function(t,n){if(!(w.error||w.loading||w.disabled)){if(t=d.resolve(t),e.extend(t,a.pick(t.sources)),t.src){var i=e.Event("load");o.trigger(i,[w,t,a]),i.isDefaultPrevented()?w.loading=!1:(a.load(t),e.isFunction(t)&&(n=t),n&&o.one("ready",n))}return w}},pause:function(e){return!w.ready||w.seeking||w.disabled||w.loading||(a.pause(),w.one("pause",e)),w},resume:function(){return w.ready&&w.paused&&!w.disabled&&(a.resume(),w.finished&&(w.trigger("resume",[w]),w.finished=!1)),w},toggle:function(){return w.ready?w.paused?w.resume():w.pause():w.load()},seek:function(t,n){if(w.ready&&!w.live){if("boolean"==typeof t){var r=.1*w.video.duration;t=w.video.time+(t?r:-r)}t=i=Math.min(Math.max(t,0),w.video.duration).toFixed(1);var s=e.Event("beforeseek");o.trigger(s,[w,t]),s.isDefaultPrevented()?(w.seeking=!1,o.toggleClass("is-seeking",w.seeking)):(a.seek(t),e.isFunction(n)&&o.one("seek",n))}return w},seekTo:function(e,t){var n=void 0===e?i:.1*w.video.duration*e;return w.seek(n,t)},mute:function(e){return void 0===e&&(e=!w.muted),f.muted=w.muted=e,f.volume=isNaN(f.volume)?r.volume:f.volume,w.volume(e?0:f.volume,!0),w.trigger("mute",e),w},volume:function(e,t){return w.ready&&(e=Math.min(Math.max(e,0),1),t||(f.volume=e),a.volume(e)),w},speed:function(t,n){return w.ready&&("boolean"==typeof t&&(t=r.speeds[e.inArray(w.currentSpeed,r.speeds)+(t?1:-1)]||w.currentSpeed),a.speed(t),n&&o.one("speed",n)),w},stop:function(){return w.ready&&(w.pause(),w.seek(0,function(){o.trigger("stop")})),w},unload:function(){return o.hasClass("is-embedding")||(r.splash?(w.trigger("unload"),a.unload()):w.stop()),w},disable:function(e){return void 0===e&&(e=!w.disabled),e!=w.disabled&&(w.disabled=e,w.trigger("disable",e)),w}};w.conf=e.extend(w.conf,r),e.each(["bind","one","unbind"],function(e,t){w[t]=function(e,n){return o[t](e,n),w}}),w.trigger=function(e,t){return o.trigger(e,[w,t]),w},o.data("flowplayer")||o.bind("boot",function(){return e.each(["autoplay","loop","preload","poster"],function(e,t){var n=l.attr(t);void 0!==n&&(r[t]=n?n:!0)}),(r.splash||o.hasClass("is-splash")||!flowplayer.support.firstframe)&&(w.forcedSplash=!r.splash&&!o.hasClass("is-splash"),w.splash=r.splash=r.autoplay=!0,o.addClass("is-splash"),flowplayer.support.video&&l.attr("preload","none")),(r.live||o.hasClass("is-live"))&&(w.live=r.live=!0,o.addClass("is-live")),e.each(c,function(){this(w,o)}),a=flowplayer.engine[r.engine],a&&(a=a(w,o)),a.pick(d.initialSources)?w.engine=r.engine:e.each(flowplayer.engine,function(e){return e!=r.engine&&(a=this(w,o),a.pick(d.initialSources))?(w.engine=e,!1):void 0}),u.push(w),w.engine?(r.splash?w.unload():w.load(),r.disabled&&w.disable(),a.volume(w.volumeLevel),o.one("ready",n),void 0):w.trigger("error",{code:flowplayer.support.flashVideo?5:10})}).bind("load",function(t,n){r.splash&&e(".flowplayer").filter(".is-ready, .is-loading").not(o).each(function(){var t=e(this).data("flowplayer");t.conf.splash&&t.unload()}),o.addClass("is-loading"),n.loading=!0}).bind("ready",function(e,t,n){function i(){o.removeClass("is-loading"),t.loading=!1}n.time=0,t.video=n,r.splash?o.one("progress",i):i(),t.muted?t.mute(!0):t.volume(t.volumeLevel);var a=t.conf.hlsFix&&/mpegurl/i.exec(n.type);o.toggleClass("hls-fix",!!a)}).bind("unload",function(){r.splash&&l.remove(),o.removeClass("is-loading"),w.loading=!1}).bind("ready unload",function(e){var t="ready"==e.type;o.toggleClass("is-splash",!t).toggleClass("is-ready",t),w.ready=t,w.splash=!t}).bind("progress",function(e,t,n){t.video.time=n}).bind("speed",function(e,t,n){t.currentSpeed=n}).bind("volume",function(e,t,n){t.volumeLevel=Math.round(100*n)/100,t.muted?n&&t.mute(!1):f.volume=n}).bind("beforeseek seek",function(e){w.seeking="beforeseek"==e.type,o.toggleClass("is-seeking",w.seeking)}).bind("ready pause resume unload finish stop",function(e,t,n){w.paused=/pause|finish|unload|stop/.test(e.type),"ready"==e.type&&(w.paused="none"==r.preload,n&&(w.paused=!n.duration||!r.autoplay&&"none"!=r.preload)),w.playing=!w.paused,o.toggleClass("is-paused",w.paused).toggleClass("is-playing",w.playing),w.load.ed||w.pause()}).bind("finish",function(){w.finished=!0}).bind("error",function(){l.remove()}),o.trigger("boot",[w,o]).data("flowplayer",w)})},!function(){var t=function(e){var t=/Version\/(\d\.\d)/.exec(e);return t&&t.length>1?parseFloat(t[1],10):0},n=flowplayer.support,i=e.browser,a=e("<video loop autoplay preload/>")[0],o=navigator.userAgent,r=i.msie||/Trident\/7/.test(o),s=/iPad|MeeGo/.test(o)&&!/CriOS/.test(o),l=/iPad/.test(o)&&/CriOS/.test(o),d=/iP(hone|od)/i.test(o)&&!/iPad/.test(o),u=/Android/.test(o)&&!/Firefox/.test(o),c=/Android/.test(o)&&/Firefox/.test(o),f=/Silk/.test(o),p=/IEMobile/.test(o),v=p?parseFloat(/Windows\ Phone\ (\d+\.\d+)/.exec(o)[1],10):0,m=p?parseFloat(/IEMobile\/(\d+\.\d+)/.exec(o)[1],10):0,g=(s?t(o):0,u?parseFloat(/Android\ (\d\.\d)/.exec(o)[1],10):0);e.extend(n,{subtitles:!!a.addTextTrack,fullscreen:"function"==typeof document.webkitCancelFullScreen&&!/Mac OS X 10_5.+Version\/5\.0\.\d Safari/.test(o)||document.mozFullScreenEnabled||"function"==typeof document.exitFullscreen||"function"==typeof document.msExitFullscreen,inlineBlock:!(r&&8>i.version),touch:"ontouchstart"in window,dataload:!s&&!d&&!p,zeropreload:!r&&!u,volume:!(s||u||d||f||l),cachedVideoTag:!(s||d||l||p),firstframe:!(d||s||u||f||l||p||c),inlineVideo:!d&&(!p||v>=8.1&&m>=11)&&(!u||g>=3),hlsDuration:!u&&(!i.safari||s||d||l),seekable:!s&&!l});try{var h=navigator.plugins["Shockwave Flash"],y=r?new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version"):h.description;r||h[0].enabledPlugin?(y=y.split(/\D+/),y.length&&!y[0]&&(y=y.slice(1)),n.flashVideo=y[0]>9||9==y[0]&&y[3]>=115):n.flashVideo=!1}catch(b){}try{n.video=!!a.canPlayType,n.video&&a.canPlayType("video/mp4")}catch(w){n.video=!1}n.animation=function(){for(var t=["","Webkit","Moz","O","ms","Khtml"],n=e("<p/>")[0],i=0;t.length>i;i++)if("undefined"!==n.style[t[i]+"AnimationName"])return!0}()}(),window.attachEvent&&window.attachEvent("onbeforeunload",function(){__flash_savedUnloadHandler=__flash_unloadHandler=function(){}}),flowplayer.engine.flash=function(n,i){var a,o,r,s=n.conf;n.video;var l=e(window),d=function(){if("webkit"==_||P){var t=e("object param[name='flashvars']",i),a=(t.attr("value")||"").split("&");e.each(a,function(e,i){return i=i.split("="),"url"==i[0]&&i[1]!=n.video.url?(a[e]="url="+n.video.url,t.attr({value:a.join("&")}),!1):void 0})}},u=function(t){var a=i.height(),o=i.width();if(n.conf.flashfit||/full/.test(t.type)){var r,s,d=n.isFullscreen,u=d&&A,c=!flowplayer.support.inlineBlock,f=d?u?screen.width:l.width():o,p=d?u?screen.height:l.height():a,v=0,m=0,g=c?o:"",h=c?a:"";(n.conf.flashfit||"fullscreen"===t.type)&&(r=n.video.width/n.video.height,s=n.video.height/n.video.width,h=Math.max(s*f),g=Math.max(r*p),h=h>p?g*s:h,h=Math.min(Math.round(h),p),g=g>f?h*r:g,g=Math.min(Math.round(g),f),m=Math.max(Math.round((p+m-h)/2),0),v=Math.max(Math.round((f+v-g)/2),0)),e("object",i).css({width:g,height:h,marginTop:m,marginLeft:v})}},c={pick:function(t){if(flowplayer.support.flashVideo){var n=e.grep(t,function(e){return"flash"==e.type})[0];if(n)return n;for(var i,a=0;t.length>a;a++)if(i=t[a],/mp4|flv/i.test(i.type))return i}},load:function(l){function c(e){return e.replace(/&amp;/g,"%26").replace(/&/g,"%26").replace(/=/g,"%3D")}var f=e("video",i),p=c(l.src);is_absolute=/^https?:/.test(p);var v=function(){f.remove()},m=function(t){return e.grep(t,function(e){return!!f[0].canPlayType("video/"+e.type)}).length>0};if(flowplayer.support.video&&f.prop("autoplay")&&m(l.sources)?f.one("timeupdate",v):v(),is_absolute||s.rtmp||(p=e("<img/>").attr("src",p)[0].src),r)r.__play(p);else{n.bind("ready",d).bind("ready fullscreen fullscreen-exit",u),a="fp"+(""+Math.random()).slice(3,15);var g={hostname:s.embedded?s.hostname:location.hostname,url:p,callback:"jQuery."+a};i.data("origin")&&(g.origin=i.data("origin")),is_absolute&&delete s.rtmp,e.each(["key","autoplay","preload","rtmp","subscribe","live","loop","debug","splash","poster","rtmpt"],function(e,t){s.hasOwnProperty(t)&&(g[t]=s[t])}),void 0!==s.bufferTime&&(g.bufferTime=s.bufferTime),g.rtmp&&(g.rtmp=c(g.rtmp)),g.initialVolume=n.volumeLevel,o=t(s.swf,g,s.wmode),o.prependTo(i),r=o[0],setTimeout(function(){try{if(!r.PercentLoaded())return i.trigger("error",[n,{code:7,url:s.swf}])}catch(e){}},5e3),setTimeout(function(){r.PercentLoaded===void 0&&i.trigger("flashdisabled",[n])},1e3),r.pollInterval=setInterval(function(){if(r){var e=r.__status?r.__status():null;e&&(n.trigger("progress",e.time),l.buffer=e.buffer/l.bytes*l.duration,n.trigger("buffer",l.buffer),!l.buffered&&e.time>0&&(l.buffered=!0,n.trigger("buffered")))}},250),e[a]=function(t,i){s.debug&&console.log("--",t,i);var a=e.Event(t);switch(t){case"ready":i=e.extend(l,i);break;case"click":a.flash=!0;break;case"keydown":a.which=i;break;case"seek":l.time=i}"buffered"!=t&&setTimeout(function(){n.trigger(a,i)},1)}}},speed:e.noop,unload:function(){r&&r.__unload&&r.__unload(),delete e[a],e("object",i).remove(),r=0,n.unbind("ready",d).unbind("ready fullscreen fullscreen-exit",u),clearInterval(r.pollInterval)}};return e.each("pause,resume,seek,volume".split(","),function(e,t){c[t]=function(e){try{n.ready&&("seek"==t&&n.video.time&&!n.paused&&n.trigger("beforeseek"),void 0===e?r["__"+t]():r["__"+t](e))}catch(a){if(r["__"+t]===void 0)return i.trigger("flashdisabled",[n]);throw a}}}),c};var y,b=e("<video/>")[0],w={ended:"finish",pause:"pause",play:"resume",progress:"buffer",timeupdate:"progress",volumechange:"volume",ratechange:"speed",seeked:"seek",loadeddata:"ready",error:"error",dataunavailable:"error"},k=function(t){return y?y.attr({type:i(t.type),src:t.src}):y=e("<video/>",{src:t.src,type:i(t.type),"class":"fp-engine",autoplay:"autoplay",preload:"none","x-webkit-airplay":"allow"})};flowplayer.engine.html5=function(t,i){function r(o,r,s){o.listeners&&o.listeners.hasOwnProperty(i.data("fp-player_id"))||((o.listeners||(o.listeners={}))[i.data("fp-player_id")]=!0,r.bind("error",function(n){try{if(n.originalEvent&&e(n.originalEvent.originalTarget).is("img"))return n.preventDefault();a(e(n.target).attr("type"))&&t.trigger("error",{code:4})}catch(i){}}),e.each(w,function(a,r){o.addEventListener(a,function(d){if("progress"==r&&d.srcElement&&0===d.srcElement.readyState&&setTimeout(function(){t.video.duration||t.conf.live&&("mpegurl"!==t.video.type||!f.hlsDuration)||(r="error",t.trigger(r,{code:4}))},1e4),p.debug&&!/progress/.test(r)&&console.log(a,"->",r,d),(t.ready||/ready|error/.test(r))&&r&&e("video",i).length){var u,c=e.Event(r);switch(r){case"ready":u=e.extend(s,{duration:o.duration,width:o.videoWidth,height:o.videoHeight,url:o.currentSrc,src:o.currentSrc});try{u.seekable=!p.live&&/mpegurl/i.test(s?s.type||"":"")&&o.duration||o.seekable&&o.seekable.end(null)}catch(v){}if(l=l||setInterval(function(){try{u.buffer=o.buffered.end(null)}catch(e){}u.buffer&&(n(u.buffer,1e3)<n(u.duration,1e3)&&!u.buffered?t.trigger("buffer",d):u.buffered||(u.buffered=!0,t.trigger("buffer",d).trigger("buffered",d),clearInterval(l),l=0))},250),!p.live&&!u.duration&&!f.hlsDuration&&"loadeddata"===a){var m=function(){u.duration=o.duration;try{u.seekable=o.seekable&&o.seekable.end(null)}catch(e){}t.trigger(c,u),o.removeEventListener("durationchange",m)};return o.addEventListener("durationchange",m),void 0}break;case"progress":case"seek":if(t.video.duration,o.currentTime>0||t.live){u=Math.max(o.currentTime,0);break}if("progress"==r)return;case"speed":u=n(o.playbackRate);break;case"volume":u=n(o.volume);break;case"error":try{u=(d.srcElement||d.originalTarget).error}catch(g){return}}t.trigger(c,u)}},!1)}))}var s,l,d,u,c=e("video",i),f=flowplayer.support,p=(e("track",c),t.conf);return s={pick:function(e){if(f.video){if(p.videoTypePreference){var t=o(e,p.videoTypePreference);if(t)return t}for(var n=0;e.length>n;n++)if(a(e[n].type))return e[n]}},load:function(n){if(p.splash&&!d)c=k(n).prependTo(i),f.inlineVideo||c.css({position:"absolute",top:"-9999em"}),p.loop&&c.attr("loop","loop"),d=c[0],u!==void 0&&(d.volume=u);else{d=c[0];var a=c.find("source");!d.src&&a.length&&(d.src=n.src,a.remove()),t.video.src&&n.src!=t.video.src?(c.attr("autoplay","autoplay"),d.src=n.src):"none"!=p.preload&&f.dataload||(f.zeropreload?t.trigger("ready",n).trigger("pause").one("ready",function(){i.trigger("resume",[t])}):t.one("ready",function(){i.trigger("pause",[t])}))}r(d,e("source",c).add(c),n),("none"!=p.preload&&"mpegurl"!=n.type||!f.zeropreload||!f.dataload)&&d.load(),p.splash&&d.load()},pause:function(){d.pause()},resume:function(){d.play()},speed:function(e){d.playbackRate=e},seek:function(e){try{var n=t.paused;d.currentTime=e,n&&d.pause()}catch(i){}},volume:function(e){u=e,d&&(d.volume=e)},unload:function(){e("video.fp-engine",i).remove(),f.cachedVideoTag||(y=null),l=clearInterval(l),d=0}}};var x=/\.(\w{3,4})(\?.*)?$/i;e.throttle=function(e,t){var n;return function(){n||(e.apply(this,arguments),n=1,setTimeout(function(){n=0},t))}},e.fn.slider2=function(t){var n=/iPad/.test(navigator.userAgent)&&!/CriOS/.test(navigator.userAgent);return this.each(function(){var i,a,o,r,s,l,d,u,c=e(this),f=e(document),p=c.children(":last"),v=!1,m=function(){a=c.offset(),o=c.width(),r=c.height(),l=s?r:o,u=b(d)},g=function(e){i||e==w.value||d&&!(d>e)||(c.trigger("slide",[e]),w.value=e)},h=function(e){var n=e.pageX;!n&&e.originalEvent&&e.originalEvent.touches&&e.originalEvent.touches.length&&(n=e.originalEvent.touches[0].pageX);var i=s?e.pageY-a.top:n-a.left;i=Math.max(0,Math.min(u||l,i));var o=i/l;return s&&(o=1-o),t&&(o=1-o),y(o,0,!0)},y=function(e,t){void 0===t&&(t=0),e>1&&(e=1);var i=Math.round(1e3*e)/10+"%";return(!d||d>=e)&&(n||v||p.stop(),v?p.css("width",i):p.animate(s?{height:i}:{width:i},t,"linear")),e},b=function(e){return Math.max(0,Math.min(l,s?(1-e)*r:e*o))},w={max:function(e){d=e},disable:function(e){i=e},slide:function(e,t,n){m(),n&&g(e),y(e,t)},disableAnimation:function(e,t){v=e!==!1,c.toggleClass("no-animation",!!t)}};m(),c.data("api",w).bind("mousedown.sld touchstart",function(t){if(t.preventDefault(),!i){var n=e.throttle(g,100);m(),w.dragging=!0,c.addClass("is-dragging"),g(h(t)),f.bind("mousemove.sld touchmove",function(e){e.preventDefault(),n(h(e))}).one("mouseup touchend",function(){w.dragging=!1,c.removeClass("is-dragging"),f.unbind("mousemove.sld touchmove")})}})})},flowplayer(function(t,n){function i(t){return e(".fp-"+t,n)}function a(t){("0px"===n.css("width")||"0px"===n.css("height")||t!==flowplayer.defaults.ratio)&&(parseInt(y,10)||m.css("paddingTop",100*t+"%")),l.inlineBlock||e("object",n).height(n.height())}function o(e){n.toggleClass("is-mouseover",e).toggleClass("is-mouseout",!e)}var r,s=t.conf,l=flowplayer.support;n.find(".fp-ratio,.fp-ui").remove(),n.addClass("flowplayer").append(' <div class="ratio"/> <div class="ui"> <div class="waiting"><em/><em/><em/></div> <a class="fullscreen"/> <a class="unload"/> <p class="speed"/> <div class="controls"> <a class="play"></a> <div class="timeline"> <div class="buffer"/> <div class="progress"/> </div> <div class="volume"> <a class="mute"></a> <div class="volumeslider"> <div class="volumelevel"/> </div> </div> </div> <div class="time"> <em class="elapsed">00:00</em> <em class="remaining"/> <em class="duration">00:00</em> </div> <div class="message"><h2/><p/></div> </div>'.replace(/class="/g,'class="fp-'));var u=i("progress"),c=i("buffer"),f=i("elapsed"),p=i("remaining"),v=i("waiting"),m=i("ratio"),g=i("speed"),h=i("duration"),y=m.css("paddingTop"),b=i("timeline").slider2(t.rtl),w=b.data("api"),k=(i("volume"),i("fullscreen")),x=i("volumeslider").slider2(t.rtl),C=x.data("api"),T=n.is(".fixed-controls, .no-toggle");w.disableAnimation(n.hasClass("is-touch")),l.animation||v.html("<p>loading &hellip;</p>"),a(s.ratio);try{s.fullscreen||k.remove()}catch(S){k.remove()}t.bind("ready",function(){var e=t.video.duration;w.disable(t.disabled||!e),s.adaptiveRatio&&a(t.video.height/t.video.width),h.add(p).html(d(e)),e>=3600&&n.addClass("is-long")||n.removeClass("is-long"),C.slide(t.volumeLevel),"flash"===t.engine&&w.disableAnimation(!0,!0)}).bind("unload",function(){y||m.css("paddingTop","")}).bind("buffer",function(){var e=t.video,n=e.buffer/e.duration;!e.seekable&&l.seekable&&w.max(n),1>n?c.css("width",100*n+"%"):c.css({width:"100%"})}).bind("speed",function(e,t,n){g.text(n+"x").addClass("fp-hilite"),setTimeout(function(){g.removeClass("fp-hilite")},1e3)}).bind("buffered",function(){c.css({width:"100%"}),w.max(1)}).bind("progress",function(){var e=t.video.time,n=t.video.duration;w.dragging||w.slide(e/n,t.seeking?0:250),f.html(d(e)),p.html("-"+d(n-e))}).bind("finish resume seek",function(e){n.toggleClass("is-finished","finish"==e.type)}).bind("stop",function(){f.html(d(0)),w.slide(0,100)}).bind("finish",function(){f.html(d(t.video.duration)),w.slide(1,100),n.removeClass("is-seeking")}).bind("beforeseek",function(){u.stop()}).bind("volume",function(){C.slide(t.volumeLevel)}).bind("disable",function(){var e=t.disabled;w.disable(e),C.disable(e),n.toggleClass("is-disabled",t.disabled)}).bind("mute",function(e,t,i){n.toggleClass("is-muted",i)}).bind("error",function(t,i,a){if(n.removeClass("is-loading").addClass("is-error"),a){a.message=s.errors[a.code],i.error=!0;var o=e(".fp-message",n);e("h2",o).text((i.engine||"html5")+": "+a.message),e("p",o).text(a.url||i.video.url||i.video.src||s.errorUrls[a.code]),n.unbind("mouseenter click").removeClass("is-mouseover")}}).bind("mouseenter mouseleave",function(e){if(!T){var t,i="mouseenter"==e.type;o(i),i?(n.bind("pause.x mousemove.x volume.x",function(){o(!0),t=new Date}),r=setInterval(function(){new Date-t>5e3&&(o(!1),t=new Date)},100)):(n.unbind(".x"),clearInterval(r))}}).bind("mouseleave",function(){(w.dragging||C.dragging)&&n.addClass("is-mouseover").removeClass("is-mouseout")}).bind("click.player",function(n){return e(n.target).is(".fp-ui, .fp-engine")||n.flash?(n.preventDefault(),t.toggle()):void 0}).bind("contextmenu",function(t){t.preventDefault();var i=n.offset(),a=e(window),o=t.clientX-i.left,r=t.clientY-i.top+a.scrollTop(),s=n.find(".fp-context-menu").css({left:o+"px",top:r+"px",display:"block"}).on("click",function(e){e.stopPropagation()});e("html").on("click.outsidemenu",function(){s.hide(),e("html").off("click.outsidemenu")})}).bind("flashdisabled",function(){n.addClass("is-flash-disabled").one("ready",function(){n.removeClass("is-flash-disabled").find(".fp-flash-disabled").remove()}).append('<div class="fp-flash-disabled">Adobe Flash is disabled for this page, click player area to enable.</div>')}),s.poster&&n.css("backgroundImage","url("+s.poster+")");var F=n.css("backgroundColor"),_="none"!=n.css("backgroundImage")||F&&"rgba(0, 0, 0, 0)"!=F&&"transparent"!=F;!_||s.splash||s.autoplay||t.bind("ready stop",function(){n.addClass("is-poster").one("progress",function(){n.removeClass("is-poster")})}),!_&&t.forcedSplash&&n.css("backgroundColor","#555"),e(".fp-toggle, .fp-play",n).click(t.toggle),e.each(["mute","fullscreen","unload"],function(e,n){i(n).click(function(){t[n]()})}),b.bind("slide",function(e,n){t.seeking=!0,t.seek(n*t.video.duration)}),x.bind("slide",function(e,n){t.volume(n)}),i("time").click(function(){e(this).toggleClass("is-inverted")}),o(T)});var C,T,S="is-help";e(document).bind("keydown.fp",function(t){var n=C,i=t.ctrlKey||t.metaKey||t.altKey,a=t.which,o=n&&n.conf;if(n&&o.keyboard&&!n.disabled){if(-1!=e.inArray(a,[63,187,191]))return T.toggleClass(S),!1;if(27==a&&T.hasClass(S))return T.toggleClass(S),!1;if(!i&&n.ready){if(t.preventDefault(),t.shiftKey)return 39==a?n.speed(!0):37==a&&n.speed(!1),void 0;if(58>a&&a>47)return n.seekTo(a-48);switch(a){case 38:case 75:n.volume(n.volumeLevel+.15);break;case 40:case 74:n.volume(n.volumeLevel-.15);break;case 39:case 76:n.seeking=!0,n.seek(!0);break;case 37:case 72:n.seeking=!0,n.seek(!1);break;case 190:n.seekTo();break;case 32:n.toggle();break;case 70:o.fullscreen&&n.fullscreen();break;case 77:n.mute();break;case 81:n.unload()}}}}),flowplayer(function(t,n){if(t.conf.keyboard){n.bind("mouseenter mouseleave",function(e){C=t.disabled||"mouseenter"!=e.type?0:t,C&&(T=n)});var i=flowplayer.support.video&&"flash"!==t.conf.engine&&e("<video/>")[0].playbackRate?"<p><em>shift</em> + <em>&#8592;</em><em>&#8594;</em>slower / faster</p>":"";n.append(' <div class="fp-help"> <a class="fp-close"></a> <div class="fp-help-section fp-help-basics"> <p><em>space</em>play / pause</p> <p><em>q</em>unload | stop</p> <p><em>f</em>fullscreen</p>'+i+' </div> <div class="fp-help-section"> <p><em>&#8593;</em><em>&#8595;</em>volume</p> <p><em>m</em>mute</p> </div> <div class="fp-help-section"> <p><em>&#8592;</em><em>&#8594;</em>seek</p> <p><em>&nbsp;. </em>seek to previous </p><p><em>1</em><em>2</em>&hellip; <em>6</em> seek to 10%, 20% &hellip; 60% </p> </div> </div> '),t.conf.tooltip&&e(".fp-ui",n).attr("title","Hit ? for help").on("mouseout.tip",function(){e(this).removeAttr("title").off("mouseout.tip")}),e(".fp-close",n).click(function(){n.toggleClass(S)})}});var F,_=e.browser.mozilla?"moz":"webkit",E="fullscreen",M="fullscreen-exit",A=flowplayer.support.fullscreen,D=("function"==typeof document.exitFullscreen,navigator.userAgent.toLowerCase()),P=/(safari)[ \/]([\w.]+)/.exec(D)&&!/(chrome)[ \/]([\w.]+)/.exec(D);e(document).bind("fullscreenchange webkitfullscreenchange mozfullscreenchange MSFullscreenChange",function(t){var n=e(document.webkitCurrentFullScreenElement||document.mozFullScreenElement||document.fullscreenElement||document.msFullscreenElement||t.target);n.length&&!F?F=n.trigger(E,[n]):(F.trigger(M,[F]),F=null)}),flowplayer(function(t,n){if(t.conf.fullscreen){var i,a=e(window),o={apply:!1,pos:0,play:!1};t.isFullscreen=!1,t.fullscreen=function(r){if(!t.disabled){if(void 0===r&&(r=!t.isFullscreen),r&&(i=a.scrollTop()),"webkit"!=_&&!P||"flash"!=t.engine||(o={apply:!0,pos:t.video.time,play:t.playing}),A)if(r){var s=n[0];e.each(["requestFullScreen","webkitRequestFullScreen","mozRequestFullScreen","msRequestFullscreen"],function(e,t){return"function"==typeof s[t]?(s[t](Element.ALLOW_KEYBOARD_INPUT),!P||document.webkitCurrentFullScreenElement||document.mozFullScreenElement||s[t](),!1):void 0})}else e.each(["exitFullscreen","webkitCancelFullScreen","mozCancelFullScreen","msExitFullscreen"],function(e,t){return"function"==typeof document[t]?(document[t](),!1):void 0});else t.trigger(r?E:M,[t]);return t}};var r;n.bind("mousedown.fs",function(){150>+new Date-r&&t.ready&&t.fullscreen(),r=+new Date}),t.bind(E,function(){n.addClass("is-fullscreen"),t.isFullscreen=!0}).bind(M,function(){var e;A||"html5"!==t.engine||(e=n.css("opacity")||"",n.css("opacity",0)),n.removeClass("is-fullscreen"),A||"html5"!==t.engine||setTimeout(function(){n.css("opacity",e)}),t.isFullscreen=!1,a.scrollTop(i)}).bind("ready",function(){if(o.apply){var n=function(){o.play||t.conf.live?t.resume():t.pause(),e.extend(o,{pos:0,play:!1})};t.conf.live?n():t.conf.rtmp&&o.pos&&!isNaN(o.pos)?(t.resume(),t.seek(o.pos,n)):n()}})}}),flowplayer(function(t,n){function i(){return e(o.query,n)}function a(){return e(o.query+"."+r,n)}var o=e.extend({active:"is-active",advance:!0,query:".fp-playlist a"},t.conf),r=o.active;t.play=function(n){return void 0===n?t.resume():"number"!=typeof n||t.conf.playlist[n]?("number"!=typeof n&&t.load.apply(null,arguments),t.unbind("resume.fromfirst"),t.video.index=n,t.load("string"==typeof t.conf.playlist[n]?""+t.conf.playlist[n]:e.map(t.conf.playlist[n],function(t){return e.extend({},t)})),t):t},t.next=function(e){e&&e.preventDefault();var n=t.video.index;return-1!=n&&(n=n===t.conf.playlist.length-1?0:n+1,t.play(n)),t},t.prev=function(e){e&&e.preventDefault();var n=t.video.index;return-1!=n&&(n=0===n?t.conf.playlist.length-1:n-1,t.play(n)),t},e(".fp-next",n).click(t.next),e(".fp-prev",n).click(t.prev),o.advance&&n.unbind("finish.pl").bind("finish.pl",function(e,t){var i=t.video.index>=0?t.video.index+1:void 0;t.conf.playlist.length>i||o.loop?(i=i===t.conf.playlist.length?0:i,n.removeClass("is-finished"),setTimeout(function(){t.play(i)})):(n.addClass("is-playing"),t.conf.playlist.length>1&&t.one("resume.fromfirst",function(){return t.play(0),!1}))});var s=!1;if(t.conf.playlist.length){s=!0;var l=n.find(".fp-playlist");if(!l.length){l=e('<div class="fp-playlist"></div>');var d=e(".fp-next,.fp-prev",n);d.length?d.eq(0).before(l):e("video",n).after(l)}l.empty(),e.each(t.conf.playlist,function(t,n){var i;if("string"==typeof n)i=n;else for(var a in n[0])if(n[0].hasOwnProperty(a)){i=n[0][a];break}l.append(e("<a />").attr({href:i,"data-index":t}))})}if(i().length){s||(t.conf.playlist=[],i().each(function(){var n=e(this).attr("href");e(this).attr("data-index",t.conf.playlist.length),t.conf.playlist.push(n)})),n.on("click",o.query,function(n){n.preventDefault();var i=e(n.target).closest(o.query),a=Number(i.attr("data-index"));-1!=a&&t.play(a)});var u=i().filter("[data-cuepoints]").length;t.bind("load",function(i,o,s){var l=a().removeClass(r),d=l.attr("data-index"),c=s.index=t.video.index||0,f=e('a[data-index="'+c+'"]',n).addClass(r),p=c==t.conf.playlist.length-1;n.removeClass("video"+d).addClass("video"+c).toggleClass("last-video",p),s.index=o.video.index=c,s.is_last=o.video.is_last=p,u&&(t.cuepoints=f.data("cuepoints"))}).bind("unload.pl",function(){a().toggleClass(r)})}t.conf.playlist.length&&(t.conf.loop=!1)});var L=/ ?cue\d+ ?/;flowplayer(function(t,n){function i(e){n[0].className=n[0].className.replace(L," "),e>=0&&n.addClass("cue"+e)}var a=0;t.cuepoints=t.conf.cuepoints||[],t.bind("progress",function(e,o,r){if(a&&.015>r-a)return a=r;a=r;for(var s,l=t.cuepoints||[],d=0;l.length>d;d++)s=l[d],isNaN(s)||(s={time:s}),0>s.time&&(s.time=t.video.duration+s.time),s.index=d,Math.abs(s.time-r)<.125*t.currentSpeed&&(i(d),n.trigger("cuepoint",[t,s]))}).bind("unload seek",i),t.conf.generate_cuepoints&&t.bind("load",function(){e(".fp-cuepoint",n).remove()}).bind("ready",function(){var i=t.cuepoints||[],a=t.video.duration,o=e(".fp-timeline",n).css("overflow","visible");e.each(i,function(n,i){var r=i.time||i;0>r&&(r=a+i);var s=e("<a/>").addClass("fp-cuepoint fp-cuepoint"+n).css("left",100*(r/a)+"%");s.appendTo(o).mousedown(function(){return t.seek(r),!1})})})}),flowplayer(function(t,n){function i(e){var t=e.split(":");return 2==t.length&&t.unshift(0),60*60*t[0]+60*t[1]+parseFloat(t[2].replace(",","."))}var a=e("track",n),o=t.conf;if(flowplayer.support.subtitles&&(t.subtitles=a.length&&a[0].track,o.nativesubtitles&&"html5"==o.engine)){if(!t.subtitles)return;var r=function(t){var i=e("video",n)[0].textTracks;i.length&&(i[0].mode=t)};return r("disabled"),t.one("ready",function(){t.conf.splash&&e("video.fp-engine",n).append(e("<track />").attr({kind:"subtitles",srclang:t.subtitles.language||"en",label:t.subtitles.language||"en",src:a.attr("src"),"default":"default"})),r("disabled"),r("showing")
7
- }),void 0}a.remove();var s=/^(([0-9]{2}:){1,2}[0-9]{2}[,.][0-9]{3}) --\> (([0-9]{2}:){1,2}[0-9]{2}[,.][0-9]{3})(.*)/;t.subtitles=[];var l=a.attr("src");if(l){setTimeout(function(){e.get(l,function(n){for(var a,o,r,l,d=0,u=n.split("\n"),c=u.length,f={};c>d;d++)if(o=s.exec(u[d])){for(a=u[d-1],r="<p>"+u[++d]+"</p><br/>";e.trim(u[++d])&&u.length>d;)r+="<p>"+u[d]+"</p><br/>";f={title:a,startTime:i(o[1]),endTime:i(o[3]),text:r},l={time:f.startTime,subtitle:f},t.subtitles.push(f),t.cuepoints.push(l),t.cuepoints.push({time:f.endTime,subtitleEnd:a}),0===f.startTime&&t.trigger("cuepoint",l)}}).fail(function(){return t.trigger("error",{code:8,url:l}),!1})});var d,u=e("<div class='fp-subtitle'/>").appendTo(n);t.bind("cuepoint",function(e,t,n){n.subtitle?(d=n.index,u.html(n.subtitle.text).addClass("fp-active")):n.subtitleEnd&&(u.removeClass("fp-active"),d=n.index)}).bind("seek",function(n,i,a){d&&t.cuepoints[d]&&t.cuepoints[d].time>a&&(u.removeClass("fp-active"),d=null),e.each(t.cuepoints||[],function(e,n){var i=n.subtitle;i&&d!=n.index?a>=n.time&&(!i.endTime||i.endTime>=a)&&t.trigger("cuepoint",n):n.subtitleEnd&&a>=n.time&&n.index==d+1&&t.trigger("cuepoint",n)})})}}),flowplayer(function(t,n){function i(){if(o&&"undefined"!=typeof _gat){var e=_gat._getTracker(a),i=t.video;e._setAllowLinker(!0),e._trackEvent("Video / Seconds played",t.engine+"/"+i.type,n.attr("title")||i.src.split("/").slice(-1)[0].replace(x,""),Math.round(o/1e3)),o=0}}var a=t.conf.analytics,o=0,r=0;a&&("undefined"==typeof _gat&&e.getScript("//google-analytics.com/ga.js"),t.bind("load unload",i).bind("progress",function(){t.seeking||(o+=r?+new Date-r:0,r=+new Date)}).bind("pause",function(){r=0}),e(window).unload(i))});var I=/IEMobile/.test(f);(flowplayer.support.touch||I)&&flowplayer(function(t,n){var i=/Android/.test(f)&&!/Firefox/.test(f)&&!/Opera/.test(f),a=/Silk/.test(f),o=i?parseFloat(/Android\ (\d\.\d)/.exec(f)[1],10):0;if(i){if(!/Chrome/.test(f)&&4>o){var r=t.load;t.load=function(){var e=r.apply(t,arguments);return t.trigger("ready",[t,t.video]),e}}var s,l=0,u=function(e){s=setInterval(function(){e.video.time=++l,e.trigger("progress",l)},1e3)};t.bind("ready pause unload",function(){s&&(clearInterval(s),s=null)}),t.bind("ready",function(){l=0}),t.bind("resume",function(e,n){return n.live?l?u(n):(t.one("progress",function(e,t,n){0===n&&u(t)}),void 0):void 0})}flowplayer.support.volume||n.addClass("no-volume no-mute"),n.addClass("is-touch"),n.find(".fp-timeline").data("api").disableAnimation(),(!flowplayer.support.inlineVideo||t.conf.native_fullscreen)&&(t.conf.nativesubtitles=!0);var c=!1;n.bind("touchmove",function(){c=!0}).bind("touchend click",function(){return c?(c=!1,void 0):t.playing&&!n.hasClass("is-mouseover")?(n.addClass("is-mouseover").removeClass("is-mouseout"),!1):(t.paused&&n.hasClass("is-mouseout")&&!t.splash&&t.toggle(),t.paused&&I&&e("video.fp-engine",n)[0].play(),void 0)}),t.conf.native_fullscreen&&"function"==typeof e("<video />")[0].webkitEnterFullScreen&&(t.fullscreen=function(){var t=e("video.fp-engine",n);t[0].webkitEnterFullScreen(),t.one("webkitendfullscreen",function(){t.prop("controls",!0).prop("controls",!1)})}),(i||a)&&t.bind("ready",function(){var i=e("video.fp-engine",n);i.one("canplay",function(){i[0].play()}),i[0].play(),t.bind("progress.dur",function(){var a=i[0].duration;1!==a&&(t.video.duration=a,e(".fp-duration",n).html(d(a)),t.unbind("progress.dur"))})})}),flowplayer(function(t,n){if(t.conf.embed!==!1){var i=t.conf,a=e(".fp-ui",n),o=e("<a/>",{"class":"fp-embed",title:"Copy to your site"}).appendTo(a),r=e("<div/>",{"class":"fp-embed-code"}).append("<label>Paste this HTML code on your site to embed.</label><textarea/>").appendTo(a),s=e("textarea",r);t.embedCode=function(){var a=t.video,o=a.width||n.width(),r=a.height||n.height(),s=e("<div/>",{"class":"flowplayer",css:{width:o,height:r}}),l=e("<video/>").appendTo(s);e.each(["origin","analytics","key","rtmp","subscribe","bufferTime"],function(e,t){i.hasOwnProperty(t)&&s.attr("data-"+t,i[t])}),i.logo&&s.attr("data-logo",e("<img />").attr("src",i.logo)[0].src),e.each(a.sources,function(t,n){var a=n.src;(!/^https?:/.test(n.src)&&"flash"!==n.type||!i.rtmp)&&(a=e("<img/>").attr("src",n.src)[0].src),l.append(e("<source/>",{type:"mpegurl"!=n.type?"video/"+n.type:"application/x-mpegurl",src:a}))});var d={src:"//embed.flowplayer.org/5.5.2/embed.min.js"};e.isPlainObject(i.embed)&&(d["data-swf"]=i.embed.swf,d["data-library"]=i.embed.library,d.src=i.embed.script||d.src,i.embed.skin&&(d["data-skin"]=i.embed.skin));var u=e("<foo/>",d).append(s);return e("<p/>").append(u).html().replace(/<(\/?)foo/g,"<$1script")},n.fptip(".fp-embed","is-embedding"),s.click(function(){this.select()}),o.click(function(){s.text(t.embedCode()),s[0].focus(),s[0].select()})}}),e.fn.fptip=function(t,n){return this.each(function(){function i(){a.removeClass(n),e(document).unbind(".st")}var a=e(this);e(t||"a",this).click(function(t){t.preventDefault(),a.toggleClass(n),a.hasClass(n)&&e(document).bind("keydown.st",function(e){27==e.which&&i()}).bind("click.st",function(t){e(t.target).parents("."+n).length||i()})})})}}(jQuery);flowplayer(function(e,o){function l(e){var o=a("<a/>")[0];return o.href=e,o.hostname}var a=jQuery,r=e.conf,i=r.swf.indexOf("flowplayer.org")&&r.e&&o.data("origin"),n=i?l(i):location.hostname,t=r.key;if("file:"==location.protocol&&(n="localhost"),e.load.ed=1,r.hostname=n,r.origin=i||location.href,i&&o.addClass("is-embedded"),"string"==typeof t&&(t=t.split(/,\s*/)),t&&"function"==typeof key_check&&key_check(t,n))r.logo&&o.append(a("<a>",{"class":"fp-logo",href:i}).append(a("<img/>",{src:r.logo})));else{var s=a("<a/>").attr("href","http://flowplayer.org").appendTo(o);a(".fp-controls",o);var p=a('<div class="fp-context-menu"><ul><li class="copyright">&copy; 2014</li><li><a href="http://flowplayer.org">About Flowplayer</a></li><li><a href="http://flowplayer.org/license">GPL based license</a></li></ul></div>').appendTo(o);e.bind("pause resume finish unload",function(e,l){var r=-1;l.video.src&&a.each([["org","flowplayer","drive"],["org","flowplayer","my"]],function(e,o){return r=l.video.src.indexOf("://"+o.reverse().join(".")),-1===r}),/pause|resume/.test(e.type)&&"flash"!=l.engine&&4!=r&&5!=r?(s.show().css({position:"absolute",left:16,bottom:36,zIndex:99999,width:100,height:20,backgroundImage:"url("+[".png","logo","/",".net",".cloudfront","d32wqyuo10o653","//"].reverse().join("")+")"}),l.load.ed=s.is(":visible")&&a.contains(o[0],p[0]),l.load.ed||l.pause()):s.hide()})}});
 
 
 
1
  /*!
2
 
3
+ Flowplayer v7.0.2 (Tuesday, 07. February 2017 10:39PM) | flowplayer.org/license
4
 
5
  */
6
+ !function(e){function t(e,t,n,i){for(var o,a=n.slice(),s=r(t,e),l=0,u=a.length;u>l&&(handler=a[l],"object"==typeof handler&&"function"==typeof handler.handleEvent?handler.handleEvent(s):handler.call(e,s),!s.stoppedImmediatePropagation);l++);return o=!s.stoppedPropagation,i&&o&&e.parentNode?e.parentNode.dispatchEvent(s):!s.defaultPrevented}function n(e,t){return{configurable:!0,get:e,set:t}}function i(e,t,i){var r=y(t||e,i);m(e,"textContent",n(function(){return r.get.call(this)},function(e){r.set.call(this,e)}))}function r(e,t){return e.currentTarget=t,e.eventPhase=e.target===e.currentTarget?2:3,e}function o(e,t){for(var n=e.length;n--&&e[n]!==t;);return n}function a(){if("BR"===this.tagName)return"\n";for(var e=this.firstChild,t=[];e;)8!==e.nodeType&&7!==e.nodeType&&t.push(e.textContent),e=e.nextSibling;return t.join("")}function s(e){!f&&M.test(document.readyState)&&(f=!f,document.detachEvent(d,s),e=document.createEvent("Event"),e.initEvent(p,!0,!0),document.dispatchEvent(e))}function l(e){for(var t;t=this.lastChild;)this.removeChild(t);null!=e&&this.appendChild(document.createTextNode(e))}function u(t,n){return n||(n=e.event),n.target||(n.target=n.srcElement||n.fromElement||document),n.timeStamp||(n.timeStamp=(new Date).getTime()),n}if(!document.createEvent){var c=!0,f=!1,d="onreadystatechange",p="DOMContentLoaded",h="__IE8__"+Math.random(),g=e.Object,m=g.defineProperty||function(e,t,n){e[t]=n.value},v=g.defineProperties||function(t,n){for(var i in n)if(w.call(n,i))try{m(t,i,n[i])}catch(r){e.console&&console.log(i+" failed on object:",t,r.message)}},y=g.getOwnPropertyDescriptor,w=g.prototype.hasOwnProperty,b=e.Element.prototype,I=e.Text.prototype,C=/^[a-z]+$/,M=/loaded|complete/,A={},S=document.createElement("div");i(e.HTMLCommentElement.prototype,b,"nodeValue"),i(e.HTMLScriptElement.prototype,null,"text"),i(I,null,"nodeValue"),i(e.HTMLTitleElement.prototype,null,"text"),m(e.HTMLStyleElement.prototype,"textContent",function(e){return n(function(){return e.get.call(this.styleSheet)},function(t){e.set.call(this.styleSheet,t)})}(y(e.CSSStyleSheet.prototype,"cssText"))),v(b,{textContent:{get:a,set:l},firstElementChild:{get:function(){for(var e=this.childNodes||[],t=0,n=e.length;n>t;t++)if(1==e[t].nodeType)return e[t]}},lastElementChild:{get:function(){for(var e=this.childNodes||[],t=e.length;t--;)if(1==e[t].nodeType)return e[t]}},previousElementSibling:{get:function(){for(var e=this.previousSibling;e&&1!=e.nodeType;)e=e.previousSibling;return e}},nextElementSibling:{get:function(){for(var e=this.nextSibling;e&&1!=e.nodeType;)e=e.nextSibling;return e}},childElementCount:{get:function(){for(var e=0,t=this.childNodes||[],n=t.length;n--;e+=1==t[n].nodeType);return e}},addEventListener:{value:function(e,n,i){var r,a=this,s="on"+e,l=a[h]||m(a,h,{value:{}})[h],c=l[s]||(l[s]={}),f=c.h||(c.h=[]);if(!w.call(c,"w")){if(c.w=function(e){return e[h]||t(a,u(a,e),f,!1)},!w.call(A,s))if(C.test(e))try{r=document.createEventObject(),r[h]=!0,9!=a.nodeType&&null==a.parentNode&&S.appendChild(a),a.fireEvent(s,r),A[s]=!0}catch(r){for(A[s]=!1;S.hasChildNodes();)S.removeChild(S.firstChild)}else A[s]=!1;(c.n=A[s])&&a.attachEvent(s,c.w)}o(f,n)<0&&f[i?"unshift":"push"](n)}},dispatchEvent:{value:function(e){var n,i=this,r="on"+e.type,o=i[h],a=o&&o[r],s=!!a;return e.target||(e.target=i),s?a.n?i.fireEvent(r,e):t(i,e,a.h,!0):(n=i.parentNode)?n.dispatchEvent(e):!0,!e.defaultPrevented}},removeEventListener:{value:function(e,t,n){var i=this,r="on"+e,a=i[h],s=a&&a[r],l=s&&s.h,u=l?o(l,t):-1;u>-1&&l.splice(u,1)}}}),v(I,{addEventListener:{value:b.addEventListener},dispatchEvent:{value:b.dispatchEvent},removeEventListener:{value:b.removeEventListener}}),v(e.XMLHttpRequest.prototype,{addEventListener:{value:function(e,t,n){var i=this,r="on"+e,a=i[h]||m(i,h,{value:{}})[h],s=a[r]||(a[r]={}),l=s.h||(s.h=[]);o(l,t)<0&&(i[r]||(i[r]=function(){var t=document.createEvent("Event");t.initEvent(e,!0,!0),i.dispatchEvent(t)}),l[n?"unshift":"push"](t))}},dispatchEvent:{value:function(e){var n=this,i="on"+e.type,r=n[h],o=r&&r[i],a=!!o;return a&&(o.n?n.fireEvent(i,e):t(n,e,o.h,!0))}},removeEventListener:{value:b.removeEventListener}}),v(e.Event.prototype,{bubbles:{value:!0,writable:!0},cancelable:{value:!0,writable:!0},preventDefault:{value:function(){this.cancelable&&(this.defaultPrevented=!0,this.returnValue=!1)}},stopPropagation:{value:function(){this.stoppedPropagation=!0,this.cancelBubble=!0}},stopImmediatePropagation:{value:function(){this.stoppedImmediatePropagation=!0,this.stopPropagation()}},initEvent:{value:function(e,t,n){this.type=e,this.bubbles=!!t,this.cancelable=!!n,this.bubbles||this.stopPropagation()}}}),v(e.HTMLDocument.prototype,{textContent:{get:function(){return 11===this.nodeType?a.call(this):null},set:function(e){11===this.nodeType&&l.call(this,e)}},addEventListener:{value:function(t,n,i){var r=this;b.addEventListener.call(r,t,n,i),c&&t===p&&!M.test(r.readyState)&&(c=!1,r.attachEvent(d,s),e==top&&function o(e){try{r.documentElement.doScroll("left"),s()}catch(t){setTimeout(o,50)}}())}},dispatchEvent:{value:b.dispatchEvent},removeEventListener:{value:b.removeEventListener},createEvent:{value:function(e){var t;if("Event"!==e)throw new Error("unsupported "+e);return t=document.createEventObject(),t.timeStamp=(new Date).getTime(),t}}}),v(e.Window.prototype,{getComputedStyle:{value:function(){function e(e){this._=e}function t(){}var n=/^(?:[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|))(?!px)[a-z%]+$/,i=/^(top|right|bottom|left)$/,r=/\-([a-z])/g,o=function(e,t){return t.toUpperCase()};return e.prototype.getPropertyValue=function(e){var t,a,s,l=this._,u=l.style,c=l.currentStyle,f=l.runtimeStyle;return e=("float"===e?"style-float":e).replace(r,o),t=c?c[e]:u[e],n.test(t)&&!i.test(e)&&(a=u.left,s=f&&f.left,s&&(f.left=c.left),u.left="fontSize"===e?"1em":t,t=u.pixelLeft+"px",u.left=a,s&&(f.left=s)),null==t?t:t+""||"auto"},t.prototype.getPropertyValue=function(){return null},function(n,i){return i?new t(n):new e(n)}}()},addEventListener:{value:function(n,i,r){var a,s=e,l="on"+n;s[l]||(s[l]=function(e){return t(s,u(s,e),a,!1)}),a=s[l][h]||(s[l][h]=[]),o(a,i)<0&&a[r?"unshift":"push"](i)}},dispatchEvent:{value:function(t){var n=e["on"+t.type];return n?n.call(e,t)!==!1&&!t.defaultPrevented:!0}},removeEventListener:{value:function(t,n,i){var r="on"+t,a=(e[r]||g)[h],s=a?o(a,n):-1;s>-1&&a.splice(s,1)}}})}}(this),function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.flowplayer=e()}}(function(){var e;return function t(e,n,i){function r(a,s){if(!n[a]){if(!e[a]){var l="function"==typeof require&&require;if(!s&&l)return l(a,!0);if(o)return o(a,!0);var u=new Error("Cannot find module '"+a+"'");throw u.code="MODULE_NOT_FOUND",u}var c=n[a]={exports:{}};e[a][0].call(c.exports,function(t){var n=e[a][1][t];return r(n?n:t)},c,c.exports,t,e,n,i)}return n[a].exports}for(var o="function"==typeof require&&require,a=0;a<i.length;a++)r(i[a]);return r}({1:[function(e,t,n){"use strict";var i=t.exports={},r=e("class-list"),o=window.jQuery,a=e("punycode"),s=e("computed-style");i.noop=function(){},i.identity=function(e){return e},i.removeNode=function(e){e&&e.parentNode&&e.parentNode.removeChild(e)},i.find=function(e,t){return o?o(e,t).toArray():(t=t||document,Array.prototype.map.call(t.querySelectorAll(e),function(e){return e}))},i.text=function(e,t){e["innerText"in e?"innerText":"textContent"]=t},i.findDirect=function(e,t){return i.find(e,t).filter(function(e){return e.parentNode===t})},i.hasClass=function(e,t){return"string"!=typeof e.className?!1:r(e).contains(t)},i.isSameDomain=function(e){var t=window.location,n=i.createElement("a",{href:e});return t.hostname===n.hostname&&t.protocol===n.protocol&&t.port===n.port},i.css=function(e,t,n){return"object"==typeof t?Object.keys(t).forEach(function(n){i.css(e,n,t[n])}):"undefined"!=typeof n?""===n?e?e.style.removeProperty(t):void 0:e?e.style.setProperty(t,n):void 0:e?s(e,t):void 0},i.createElement=function(e,t,n){try{var r=document.createElement(e);for(var a in t)t.hasOwnProperty(a)&&("css"===a?i.css(r,t[a]):i.attr(r,a,t[a]));return r.innerHTML=n||"",r}catch(s){if(!o)throw s;return o("<"+e+">"+n+"</"+e+">").attr(t)[0]}},i.toggleClass=function(e,t,n){if(e){var i=r(e);"undefined"==typeof n?i.toggle(t):n?i.add(t):n||i.remove(t)}},i.addClass=function(e,t){return i.toggleClass(e,t,!0)},i.removeClass=function(e,t){return i.toggleClass(e,t,!1)},i.append=function(e,t){return e.appendChild(t),e},i.appendTo=function(e,t){return i.append(t,e),e},i.prepend=function(e,t){e.insertBefore(t,e.firstChild)},i.insertAfter=function(e,t,n){t==i.lastChild(e)&&e.appendChild(n);var r=Array.prototype.indexOf.call(e.children,t);e.insertBefore(n,e.children[r+1])},i.html=function(e,t){e=e.length?e:[e],e.forEach(function(e){e.innerHTML=t})},i.attr=function(e,t,n){if("class"===t&&(t="className"),i.hasOwnOrPrototypeProperty(e,t))try{e[t]=n}catch(r){if(!o)throw r;o(e).attr(t,n)}else n===!1?e.removeAttribute(t):e.setAttribute(t,n);return e},i.prop=function(e,t,n){return"undefined"==typeof n?e&&e[t]:void(e[t]=n)},i.offset=function(e){var t=e.getBoundingClientRect();return e.offsetWidth/e.offsetHeight>e.clientWidth/e.clientHeight&&(t={left:100*t.left,right:100*t.right,top:100*t.top,bottom:100*t.bottom,width:100*t.width,height:100*t.height}),t},i.width=function(e,t){if(t)return e.style.width=(""+t).replace(/px$/,"")+"px";var n=i.offset(e).width;return"undefined"==typeof n?e.offsetWidth:n},i.height=function(e,t){if(t)return e.style.height=(""+t).replace(/px$/,"")+"px";var n=i.offset(e).height;return"undefined"==typeof n?e.offsetHeight:n},i.lastChild=function(e){return e.children[e.children.length-1]},i.hasParent=function(e,t){for(var n=e.parentElement;n;){if(i.matches(n,t))return!0;n=n.parentElement}return!1},i.createAbsoluteUrl=function(e){return i.createElement("a",{href:e}).href},i.xhrGet=function(e,t,n){var i=new XMLHttpRequest;i.onreadystatechange=function(){return 4===this.readyState?this.status>=400?n():void t(this.responseText):void 0},i.open("get",e,!0),i.send()},i.pick=function(e,t){var n={};return t.forEach(function(t){e.hasOwnProperty(t)&&(n[t]=e[t])}),n},i.hostname=function(e){return a.toUnicode(e||window.location.hostname)},i.browser={webkit:"WebkitAppearance"in document.documentElement.style},i.getPrototype=function(e){return Object.getPrototypeOf?Object.getPrototypeOf(e):e.__proto__},i.hasOwnOrPrototypeProperty=function(e,t){for(var n=e;n;){if(Object.prototype.hasOwnProperty.call(n,t))return!0;n=i.getPrototype(n)}return!1},i.matches=function(e,t){var n=Element.prototype,i=n.matches||n.matchesSelector||n.mozMatchesSelector||n.msMatchesSelector||n.oMatchesSelector||n.webkitMatchesSelector||function(e){for(var t=this,n=(t.document||t.ownerDocument).querySelectorAll(e),i=0;n[i]&&n[i]!==t;)i++;return n[i]?!0:!1};return i.call(e,t)},function(e){function t(e){return e.replace(/-[a-z]/g,function(e){return e[1].toUpperCase()})}"undefined"!=typeof e.setAttribute&&(e.setProperty=function(e,n){return this.setAttribute(t(e),String(n))},e.getPropertyValue=function(e){return this.getAttribute(t(e))||null},e.removeProperty=function(e){var n=this.getPropertyValue(e);return this.removeAttribute(t(e)),n})}(window.CSSStyleDeclaration.prototype)},{"class-list":33,"computed-style":34,punycode:41}],2:[function(e,t,n){"use strict";var i=e("../common");t.exports=function(e,t,n,r){n=n||"opaque";var o="obj"+(""+Math.random()).slice(2,15),a='<object class="fp-engine" id="'+o+'" name="'+o+'" ',s=navigator.userAgent.indexOf("MSIE")>-1;a+=s?'classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000">':' data="'+e+'" type="application/x-shockwave-flash">';var l={width:"100%",height:"100%",allowscriptaccess:"always",wmode:n,quality:"high",flashvars:"",movie:e+(s?"?"+o:""),name:o};"transparent"!==n&&(l.bgcolor=r||"#333333"),Object.keys(t).forEach(function(e){l.flashvars+=e+"="+t[e]+"&"}),Object.keys(l).forEach(function(e){a+='<param name="'+e+'" value="'+l[e]+'"/>'}),a+="</object>";var u=i.createElement("div",{},a);return i.find("object",u)},window.attachEvent&&window.attachEvent("onbeforeunload",function(){window.__flash_savedUnloadHandler=window.__flash_unloadHandler=function(){}})},{"../common":1}],3:[function(e,t,n){"use strict";function i(e){return/^https?:/.test(e)}var r,o=e("../flowplayer"),a=e("../common"),s=e("./embed"),l=e("extend-object"),u=e("bean");r=function(e,t){function n(e){function t(e){return("0"+parseInt(e).toString(16)).slice(-2)}return(e=e.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/))?"#"+t(e[1])+t(e[2])+t(e[3]):void 0}function c(e){if(7===e.length)return e;var t=e.split("").slice(1);return"#"+t.map(function(e){return e+e}).join("")}function f(e){return/application\/x-mpegurl/i.test(e.type)}var d,p,h,g,m=e.conf,v=[],y={engineName:r.engineName,pick:function(t){var n=l({},function(){if(o.support.flashVideo){for(var n,i,r=0;r<t.length;r++)if(i=t[r],/mp4|flv|flash/i.test(i.type)&&(n=i),e.conf.swfHls&&/mpegurl/i.test(i.type)&&(n=i),n&&!/mp4/i.test(n.type))return n;return n}}());if(n)return!n.src||i(n.src)||e.conf.rtmp||n.rtmp||(n.src=a.createAbsoluteUrl(n.src)),n},suspendEngine:function(){g=!0},resumeEngine:function(){g=!1},load:function(r){function w(e){return e.replace(/&amp;/g,"%26").replace(/&/g,"%26").replace(/=/g,"%3D")}d=r,v.forEach(function(e){clearTimeout(e)});var b=a.findDirect("video",t)[0]||a.find(".fp-player > video",t)[0],I=r.src,C=i(I),M=function(){a.removeNode(b)},A=function(e){return e.some(function(e){return!!b.canPlayType(e.type)})};o.support.video&&a.prop(b,"autoplay")&&A(r.sources)?u.one(b,"timeupdate",M):M();var S=r.rtmp||m.rtmp;if(C||S||(I=a.createAbsoluteUrl(I)),h&&f(r)&&h.data!==a.createAbsoluteUrl(m.swfHls)&&y.unload(),h){["live","preload","loop"].forEach(function(e){r.hasOwnProperty(e)&&h.__set(e,r[e])}),Object.keys(r.flashls||{}).forEach(function(e){h.__set("hls_"+e,r.flashls[e])});var D=!1;if(!C&&S)h.__set("rtmp",S.url||S);else{var E=h.__get("rtmp");D=!!E,h.__set("rtmp",null)}h.__play(I,D||r.rtmp&&r.rtmp!==m.rtmp)}else{p="fpCallback"+(""+Math.random()).slice(3,15),I=w(I);var N={hostname:m.embedded?a.hostname(m.hostname):a.hostname(location.hostname),url:I,callback:p};t.getAttribute("data-origin")&&(N.origin=t.getAttribute("data-origin")),["proxy","key","autoplay","preload","subscribe","live","loop","debug","splash","poster","rtmpt"].forEach(function(e){m.hasOwnProperty(e)&&(N[e]=m[e]),r.hasOwnProperty(e)&&(N[e]=r[e]),(m.rtmp||{}).hasOwnProperty(e)&&(N[e]=(m.rtmp||{})[e]),(r.rtmp||{}).hasOwnProperty(e)&&(N[e]=(r.rtmp||{})[e])}),m.rtmp&&(N.rtmp=m.rtmp.url||m.rtmp),r.rtmp&&(N.rtmp=r.rtmp.url||r.rtmp),Object.keys(r.flashls||{}).forEach(function(e){var t=r.flashls[e];N["hls_"+e]=t});var j="undefined"!=typeof r.hlsQualities?r.hlsQualities:m.hlsQualities;"undefined"!=typeof j&&(N.hlsQualities=j?encodeURIComponent(JSON.stringify(j)):j),void 0!==m.bufferTime&&(N.bufferTime=m.bufferTime),C&&delete N.rtmp,N.rtmp&&(N.rtmp=w(N.rtmp));var L,x=m.bgcolor||a.css(t,"background-color")||"";0===x.indexOf("rgb")?L=n(x):0===x.indexOf("#")&&(L=c(x)),N.initialVolume=e.volumeLevel;var T=f(r)?m.swfHls:m.swf;h=s(T,N,m.wmode,L)[0];var Z=a.find(".fp-player",t)[0];a.prepend(Z,h),e.off("quality.flashengine").on("quality.flashengine",function(t,n,i){var r="undefined"!=typeof e.video.hlsQualities?e.video.hlsQualities:e.conf.hlsQualities;r&&h.__quality(i)}),setTimeout(function(){try{if(!h.PercentLoaded())return e.trigger("error",[e,{code:7,url:m.swf}])}catch(t){}},5e3),v.push(setTimeout(function(){"undefined"==typeof h.PercentLoaded&&e.trigger("flashdisabled",[e])},15e3)),v.push(setTimeout(function(){"undefined"==typeof h.PercentLoaded&&e.trigger("flashdisabled",[e,!1])},500)),e.off("resume.flashhack").on("resume.flashhack",function(){var t=setTimeout(function(){var t=h.__status().time,n=setTimeout(function(){e.playing&&!e.loading&&h.__status().time===t&&e.trigger("flashdisabled",[e])},400);v.push(n),e.one("seek.flashhack pause.flashhack load.flashack",function(){clearTimeout(n)})},800);v.push(t),e.one("progress",function(){clearTimeout(t)})}),h.pollInterval=setInterval(function(){if(h&&!g){var t=h.__status?h.__status():null;t&&((e.conf.live||e.live||r.live)&&(r.seekOffset=t.seekOffset,r.duration=t.duration+t.seekOffset),e.playing&&t.time&&t.time!==e.video.time&&e.trigger("progress",[e,t.time]),r.buffer=t.buffer/r.bytes*r.duration,e.trigger("buffer",[e,r.buffer]),!r.buffered&&t.time>0&&(r.buffered=!0,e.trigger("buffered",[e])))}},250),window[p]=function(n,i){var r=d;m.debug&&(0===n.indexOf("debug")&&i&&i.length?console.log.apply(console,["-- "+n].concat(i)):console.log("--",n,i));var o={type:n};switch(n){case"ready":i=l(r,i);break;case"click":o.flash=!0;break;case"keydown":o.which=i;break;case"seek":r.time=i;break;case"status":e.trigger("progress",[e,i.time]),i.buffer<r.bytes&&!r.buffered?(r.buffer=i.buffer/r.bytes*r.duration,e.trigger("buffer",r.buffer)):r.buffered||(r.buffered=!0,e.trigger("buffered"));break;case"metadata":var a=atob(i);i={key:a.substr(10,4),data:a.substr(21)}}"click"===n||"keydown"===n?(o.target=t,u.fire(t,n,[o])):"buffered"!=n&&"unload"!==n?setTimeout(function(){e.trigger(o,[e,i])},1):"unload"===n&&e.trigger(o,[e,i])}}},speed:a.noop,unload:function(){h&&h.__unload&&h.__unload();try{p&&window[p]&&delete window[p]}catch(n){}a.find("object",t).forEach(a.removeNode),h=0,e.off(".flashengine"),e.off(".flashhack"),clearInterval(h.pollInterval),v.forEach(function(e){clearTimeout(e)})}};return["pause","resume","seek","volume"].forEach(function(t){y[t]=function(n){try{e.ready&&(void 0===n?h["__"+t]():h["__"+t](n))}catch(i){if("undefined"==typeof h["__"+t])return e.trigger("flashdisabled",[e]);throw i}}}),y},r.engineName="flash",r.canPlay=function(e,t){return o.support.flashVideo&&/video\/(mp4|flash|flv)/i.test(e)||o.support.flashVideo&&t.swfHls&&/mpegurl/i.test(e)},o.engines.push(r)},{"../common":1,"../flowplayer":28,"./embed":2,bean:31,"extend-object":36}],4:[function(e,t,n){"use strict";function i(e,t){return t=t||100,Math.round(e*t)/t}function r(e){return/mpegurl/i.test(e)?"application/x-mpegurl":e}function o(e){return/^(video|application)/i.test(e)||(e=r(e)),!!p.canPlayType(e).replace("no","")}function a(e,t){var n=e.filter(function(e){return e.type===t});return n.length?n[0]:null}var s,l,u=e("../flowplayer"),c=e("bean"),f=e("extend-object"),d=e("../common"),p=document.createElement("video"),h={ended:"finish",pause:"pause",play:"resume",timeupdate:"progress",volumechange:"volume",ratechange:"speed",seeked:"seek",loadeddata:"ready",error:"error",dataunavailable:"error",webkitendfullscreen:!u.support.inlineVideo&&"unload"},g=function(e,t,n,i){if("undefined"==typeof t&&(t=!0),"undefined"==typeof n&&(n="none"),"undefined"==typeof i&&(i=!0),i&&s)return s.type=r(e.type),s.src=e.src,d.find("track",s).forEach(d.removeNode),s.removeAttribute("crossorigin"),s;var o=document.createElement("video");return o.src=e.src,o.type=r(e.type),o.className="fp-engine",u.support.autoplay&&(o.autoplay=t?"autoplay":!1),u.support.dataload&&(o.preload=n),o.setAttribute("webkit-playsinline","true"),o.setAttribute("playsinline","true"),i&&(s=o),o};l=function(e,t){function n(n,r,a){var s=t.getAttribute("data-flowplayer-instance-id");if(n.listeners&&n.listeners.hasOwnProperty(s))return void(n.listeners[s]=a);(n.listeners||(n.listeners={}))[s]=a,c.on(r,"error",function(t){try{o(t.target.getAttribute("type"))&&e.trigger("error",[e,{code:4,video:f(a,{src:n.src,url:n.src})}])}catch(i){}}),e.on("shutdown",function(){c.off(r),c.off(n,".dvrhack"),e.off(".loophack")});var l={},u=function(t){"metadata"===t.kind&&(t.mode="hidden",t.addEventListener("cuechange",function(){e.trigger("metadata",[e,t.activeCues[0].value])},!1))};return n&&n.textTracks.length&&Array.prototype.forEach.call(n.textTracks,u),"function"==typeof n.textTracks.addEventListener&&n.textTracks.addEventListener("addtrack",function(e){u(e.track)},!1),(e.conf.dvr||e.dvr||a.dvr)&&c.on(n,"progress.dvrhack",function(){n.seekable.length&&(e.video.duration=n.seekable.end(null),e.video.seekOffset=n.seekable.start(null),e.trigger("dvrwindow",[e,{start:n.seekable.start(null),end:n.seekable.end(null)}]),n.currentTime>=n.seekable.start(null)||(n.currentTime=n.seekable.start(null)))}),Object.keys(h).forEach(function(r){var o=h[r];if(o){var u=function(l){if(a=n.listeners[s],l.target&&d.hasClass(l.target,"fp-engine")){b.debug&&!/progress/.test(o)&&console.log(r,"->",o,l);var u=function(){e.trigger(o,[e,c])};if(!e.ready&&!/ready|error/.test(o)||!o||!d.find("video",t).length)return void("resume"===o&&e.one("ready",function(){setTimeout(function(){u()})}));var c;if("unload"===o)return void e.unload();switch(o){case"ready":c=f(a,{duration:n.duration<Number.MAX_VALUE?n.duration:0,width:n.videoWidth,height:n.videoHeight,url:n.currentSrc,src:n.currentSrc});try{c.seekable=/mpegurl/i.test(a?a.type||"":"")&&n.duration||n.seekable&&n.seekable.end(null)||e.live}catch(h){}if(p=p||setInterval(function(){try{c.buffer=n.buffered.end(null)}catch(t){}c.buffer&&(i(c.buffer,1e3)<i(c.duration,1e3)&&!c.buffered&&c.buffer!==m?(e.trigger("buffer",[e,c.buffer]),m=c.buffer):c.buffered||c.buffer===m||(c.buffered=!0,e.trigger("buffer",[e,c.buffer]).trigger("buffered",l),m=c.buffer,clearInterval(p),p=0))},250),!e.live&&!c.duration&&!w.hlsDuration&&"loadeddata"===r){var g=function(){c.duration=n.duration;try{c.seekable=n.seekable&&n.seekable.end(null)}catch(e){}u(),n.removeEventListener("durationchange",g),d.toggleClass(t,"is-live",!1)};n.addEventListener("durationchange",g);var v=function(){e.ready||n.duration||(c.duration=0,d.addClass(t,"is-live"),u()),n.removeEventListener("timeupdate",v)};return void n.addEventListener("timeupdate",v)}break;case"progress":case"seek":if(n.currentTime>0||e.live)c=Math.max(n.currentTime,0);else if("progress"==o)return;break;case"speed":c=i(n.playbackRate);break;case"volume":c=i(n.volume);break;case"error":try{c=(l.srcElement||l.originalTarget).error,c.video=f(a,{src:n.src,url:n.src})}catch(y){return}}u()}};t.addEventListener(r,u,!0),l[r]||(l[r]=[]),l[r].push(u)}}),l}var r,p,m,v,y=d.findDirect("video",t)[0]||d.find(".fp-player > video",t)[0],w=u.support,b=e.conf;return r={engineName:l.engineName,pick:function(e){var t=function(){if(w.video){if(b.videoTypePreference){var t=a(e,b.videoTypePreference);if(t)return t}for(var n=0;n<e.length;n++)if(o(e[n].type))return e[n]}}();if(t)return"string"==typeof t.src&&(t.src=d.createAbsoluteUrl(t.src)),t},load:function(i){var o=d.find(".fp-player",t)[0],a=!1,s=!1;b.splash&&!y?(y=g(i),d.prepend(o,y),s=!0):y?(d.addClass(y,"fp-engine"),d.find("source,track",y).forEach(d.removeNode),e.conf.nativesubtitles||d.attr(y,"crossorigin",!1),a=y.src===i.src):(y=g(i,!!i.autoplay||!!b.autoplay,b.clip.preload||!0,!1),d.prepend(o,y),s=!0),w.inlineVideo||d.css(y,{position:"absolute",top:"-9999em"}),c.off(y,"timeupdate",d.noop),c.on(y,"timeupdate",d.noop),d.prop(y,"loop",!1),e.off(".loophack"),(i.loop||b.loop)&&(/mpegurl/i.test(i.type)?e.on("finish.loophack",function(){e.resume()}):d.prop(y,"loop",!0)),"undefined"!=typeof v&&(y.volume=v),(e.video.src&&i.src!=e.video.src||i.index)&&d.attr(y,"autoplay","autoplay"),y.src=i.src,y.type=i.type,r._listeners=n(y,d.find("source",y).concat(y),i)||r._listeners,(a||s&&!b.splash)&&y.load(),w.iOS.iPad&&w.iOS.chrome&&y.load(),y.paused&&(i.autoplay||b.autoplay||b.splash)&&y.play()},pause:function(){y.pause()},resume:function(){y.play()},speed:function(e){y.playbackRate=e},seek:function(t){try{var n=e.paused;y.currentTime=t,n&&y.pause()}catch(i){}},volume:function(e){v=e,y&&(y.volume=e)},unload:function(){d.find("video.fp-engine",t).forEach(function(e){d.attr(e,"src",""),d.removeNode(e)}),w.cachedVideoTag||(s=null),p=clearInterval(p);var e=t.getAttribute("data-flowplayer-instance-id");delete y.listeners[e],y=0,r._listeners&&Object.keys(r._listeners).forEach(function(e){r._listeners[e].forEach(function(n){t.removeEventListener(e,n,!0)})})}}},l.canPlay=function(e){return u.support.video&&o(e)},l.engineName="html5",u.engines.push(l)},{"../common":1,"../flowplayer":28,bean:31,"extend-object":36}],5:[function(e,t,n){"use strict";var i=e("../flowplayer"),r=e("../common"),o=e("bean");i(function(e,t){e.on("ready",function(){var e=r.find("video.fp-engine",t)[0];e&&(e.setAttribute("x-webkit-airplay","allow"),window.WebKitPlaybackTargetAvailabilityEvent&&(e.addEventListener("webkitplaybacktargetavailabilitychanged",function(e){if("available"===e.availability){var n=r.find(".fp-header",t)[0];r.find(".fp-airplay",n).forEach(r.removeNode);var i=r.createElement("a",{"class":"fp-airplay fp-icon",title:"Play on AirPlay device"});n.insertBefore(i,r.find(".fp-fullscreen",n)[0])}}),e.addEventListener("webkitcurrentplaybacktargetiswirelesschanged",function(){var n=r.find(".fp-airplay",t)[0];n&&r.toggleClass(n,"fp-active",e.webkitCurrentPlaybackTargetIsWireless)})))}),o.on(t,"click",".fp-airplay",function(e){e.preventDefault();var n=r.find("video.fp-engine",t)[0];n.webkitShowPlaybackTargetPicker()})})},{"../common":1,"../flowplayer":28,bean:31}],6:[function(e,t,n){"use strict";var i=e("../flowplayer"),r=e("./resolve").TYPE_RE,o=e("scriptjs"),a=e("bean");i(function(e,t){var n,i=e.conf.analytics,s=0,l=0;if(i){"undefined"==typeof _gat&&o("//google-analytics.com/ga.js");var u=function(){var e=_gat._getTracker(i);return e._setAllowLinker(!0),e},c=function(i,o,a){if(a=a||e.video,s&&"undefined"!=typeof _gat){var l=u();l._trackEvent("Video / Seconds played",e.engine.engineName+"/"+a.type,a.title||t.getAttribute("title")||a.src.split("/").slice(-1)[0].replace(r,""),Math.round(s/1e3)),s=0,n&&(clearTimeout(n),n=null)}};e.bind("load unload",c).bind("progress",function(){e.seeking||(s+=l?+new Date-l:0,l=+new Date),n||(n=setTimeout(function(){n=null;var e=u();e._trackEvent("Flowplayer heartbeat","Heartbeat","",0,!0)},6e5))}).bind("pause",function(){l=0}),e.bind("shutdown",function(){a.off(window,"unload",c)}),a.on(window,"unload",c)}})},{"../flowplayer":28,"./resolve":19,bean:31,scriptjs:42}],7:[function(e,t,n){"use strict";var i=e("../flowplayer"),r=e("../common"),o=e("bean"),a=e("scriptjs");i(function(e,t){function n(){var e,t,n;e=g.applicationId||chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,t=new chrome.cast.SessionRequest(e),n=new chrome.cast.ApiConfig(t,i,s),chrome.cast.initialize(n,l,u)}function i(){console.log("sessionListener")}function s(e){e===chrome.cast.ReceiverAvailability.AVAILABLE&&c()}function l(){}function u(){console.log("onError")}function c(){var e=r.find(".fp-header",t)[0];r.find(".fp-chromecast",e).forEach(r.removeNode),r.find(".fp-chromecast-engine",t).forEach(r.removeNode),h=r.createElement("a",{"class":"fp-chromecast fp-icon",title:"Play on Cast device"}),e.insertBefore(h,r.find(".fp-fullscreen",e)[0]);var n=r.createElement("div",{"class":"fp-chromecast-engine"}),i=r.createElement("p",{"class":"fp-chromecast-engine-status"}),o=r.createElement("p",{"class":"fp-chromecast-engine-icon"});n.appendChild(o),n.appendChild(i);var a=r.find(".fp-engine",t)[0];a?a.parentNode.insertBefore(n,a):r.prepend(r.find(".fp-player",t)[0]||t,n)}function f(){clearInterval(p),p=null,e.release(),r.toggleClass(t,"is-chromecast",!1),r.toggleClass(h,"fp-active",!1)}a("https://www.gstatic.com/cv/js/sender/v1/cast_sender.js"),window.__onGCastApiAvailable=function(e){e&&n()};var d,p,h,g=e.conf.chromecast||{};o.on(t,"click",".fp-chromecast",function(n){return n.preventDefault(),d?(e.trigger("pause",[e]),d.stop(),d=null,void f()):(e.playing&&e.pause(),void chrome.cast.requestSession(function(n){function i(n){n.addUpdateListener(function(i){if(d){p=p||setInterval(function(){e.trigger("progress",[e,n.getEstimatedTime()])},500),i?(r.toggleClass(t,"is-chromecast",!0),r.toggleClass(h,"fp-active",!0),e.hijack({pause:function(){n.pause()},resume:function(){n.play()},seek:function(e){var t=new chrome.cast.media.SeekRequest;t.currentTime=e,n.seek(t)}})):(f(),e.trigger("finish",[e]));var o=n.playerState;e.paused&&o===chrome.cast.media.PlayerState.PLAYING&&e.trigger("resume",[e]),e.playing&&o===chrome.cast.media.PlayerState.PAUSED&&e.trigger("pause",[e]),r.toggleClass(t,"is-loading",o===chrome.cast.media.PlayerState.BUFFERING)}})}d=n;var o=d.receiver.friendlyName;r.html(r.find(".fp-chromecast-engine-status")[0],"Playing on device "+o);var a=new chrome.cast.media.MediaInfo(e.video.src),s=new chrome.cast.media.LoadRequest(a);d.loadMedia(s,i,function(){})},function(e){console.error("requestSession error",e)}))})})},{"../common":1,"../flowplayer":28,bean:31,scriptjs:42}],8:[function(e,t,n){"use strict";var i=e("../flowplayer"),r=e("../common"),o=e("bean");i(function(e,t){function n(e){t.className=t.className.replace(a," "),e>=0&&r.addClass(t,"cue"+e)}function i(t){var n=t&&!isNaN(t.time)?t.time:t;return 0>n&&(n=e.video.duration+n),.125*Math.round(n/.125)}var a=/ ?cue\d+ ?/,s=!1,l={},u=-.125,c=function(t){var i=e.cuepoints.indexOf(t);isNaN(t)||(t={time:t}),t.index=i,n(i),e.trigger("cuepoint",[e,t])};e.on("progress",function(e,t,n){if(!s)for(var r=i(n);r>u;)u+=.125,l[u]&&l[u].forEach(c)}).on("unload",n).on("beforeseek",function(e){setTimeout(function(){e.defaultPrevented||(s=!0)})}).on("seek",function(e,t,r){n(),u=i(r||0)-.125,s=!1,!r&&l[0]&&l[0].forEach(c)}).on("ready",function(t,n,i){u=-.125;var r=i.cuepoints||e.conf.cuepoints||[];e.setCuepoints(r)}).on("finish",function(){u=-.125}),e.conf.generate_cuepoints&&e.bind("load",function(){r.find(".fp-cuepoint",t).forEach(r.removeNode)}),e.setCuepoints=function(t){return e.cuepoints=[],l={},t.forEach(e.addCuepoint),e},e.addCuepoint=function(n){e.cuepoints||(e.cuepoints=[]);var a=i(n);if(l[a]||(l[a]=[]),l[a].push(n),e.cuepoints.push(n),e.conf.generate_cuepoints&&n.visible!==!1){var s=e.video.duration,u=r.find(".fp-timeline",t)[0];r.css(u,"overflow","visible");var c=n.time||n;0>c&&(c=s+c);var f=r.createElement("a",{className:"fp-cuepoint fp-cuepoint"+(e.cuepoints.length-1)});r.css(f,"left",c/s*100+"%"),u.appendChild(f),o.on(f,"mousedown",function(t){t.preventDefault(),t.stopPropagation(),e.seek(c)})}return e},e.removeCuepoint=function(t){var n=e.cuepoints.indexOf(t),r=i(t);if(-1!==n){e.cuepoints=e.cuepoints.slice(0,n).concat(e.cuepoints.slice(n+1));var o=l[r].indexOf(t);if(-1!==o)return l[r]=l[r].slice(0,o).concat(l[r].slice(o+1)),e}}})},{"../common":1,"../flowplayer":28,bean:31}],9:[function(e,t,n){"use strict";var i=e("../flowplayer"),r=e("bean"),o=e("../common"),a=e("./util/clipboard");i(function(e,t){if(e.conf.embed!==!1&&e.conf.share!==!1){var n=o.find(".fp-share-menu",t)[0],i=o.createElement("a",{"class":"fp-icon fp-embed",title:"Copy to your site"},"Embed");o.append(n,i),e.embedCode=function(){var n=e.conf.embed||{},i=e.video,r=n.width||i.width||o.width(t),a=n.height||i.height||o.height(t),s=e.conf.ratio,l='<iframe src="'+e.shareUrl(!0)+'" allowfullscreen style="border:none;';return n.width||n.height?(isNaN(r)||(r+="px"),isNaN(a)||(a+="px"),l+"width:"+r+";height:"+a+';"></iframe>'):((!s||e.conf.adaptiveRatio)&&(s=a/r),'<div style="position:relative;width:100%;display:inline-block;">'+l+'position:absolute;top:0;left:0;width:100%;height:100%;"></iframe><div style="padding-top:'+100*s+'%;"></div></div>')},r.on(t,"click",".fp-embed",function(){a(e.embedCode(),function(){e.message("The embed code is now on your clipboard",2e3)},function(){e.textarea(e.embedCode(),"Copy the code below to embed your video")})})}})},{"../common":1,"../flowplayer":28,"./util/clipboard":27,bean:31}],10:[function(e,t,n){"use strict";t.exports=function(e,t){t||(t=document.createElement("div"));var n={},i={},r=function(e,r,o){var a=e.split(".")[0],s=function(l){o&&(t.removeEventListener(a,s),n[e].splice(n[e].indexOf(s),1));var u=[l].concat(i[l.timeStamp+l.type]||[]);r&&r.apply(void 0,u)};t.addEventListener(a,s),n[e]||(n[e]=[]),n[e].push(s)};e.on=e.bind=function(t,n){var i=t.split(" ");return i.forEach(function(e){r(e,n)}),e},e.one=function(t,n){var i=t.split(" ");return i.forEach(function(e){r(e,n,!0)}),e};var o=function(e,t){
7
+ return 0===t.filter(function(t){return-1===e.indexOf(t)}).length};e.off=e.unbind=function(i){var r=i.split(" ");return r.forEach(function(e){var i=e.split(".").slice(1),r=e.split(".")[0];Object.keys(n).filter(function(e){var t=e.split(".").slice(1);return(!r||0===e.indexOf(r))&&o(t,i)}).forEach(function(e){var i=n[e],r=e.split(".")[0];n[e]=i.filter(function(e){return t.removeEventListener(r,e),!1})})}),e},e.trigger=function(n,r,o){if(n){r=(r||[]).length?r||[]:[r];var a,s=document.createEvent("Event");return a=n.type||n,s.initEvent(a,!1,!0),Object.defineProperty&&(s.preventDefault=function(){Object.defineProperty(this,"defaultPrevented",{get:function(){return!0}})}),i[s.timeStamp+s.type]=r,t.dispatchEvent(s),o?s:e}}},t.exports.EVENTS=["beforeseek","disable","error","finish","fullscreen","fullscreen-exit","load","mute","pause","progress","ready","resume","seek","speed","stop","unload","volume","boot","shutdown"]},{}],11:[function(e,t,n){"use strict";var i=e("../flowplayer"),r=e("../common"),o=e("bean");i(function(e,t){var n=e.conf;if(n.share!==!1&&n.facebook){e.facebook=function(){var e,t,i=550,r=420,o=screen.height,a=screen.width,s="scrollbars=yes,resizable=yes,toolbar=no,location=yes",l="string"==typeof n.facebook?n.facebook:window.location.toString();e=Math.round(a/2-i/2),t=0,o>r&&(t=Math.round(o/2-r/2)),window.open("https://www.facebook.com/sharer.php?s=100&p[url]="+encodeURIComponent(l),"sharer",s+",width="+i+",height="+r+",left="+e+",top="+t)};var i=r.find(".fp-share-menu",t)[0],a=r.createElement("a",{"class":"fp-icon fp-facebook"},"Facebook");r.append(i,a),o.on(t,"click",".fp-facebook",function(){e.facebook()})}})},{"../common":1,"../flowplayer":28,bean:31}],12:[function(e,t,n){"use strict";var i,r=e("../flowplayer"),o=e("bean"),a=e("../common"),s="fullscreen",l="fullscreen-exit",u=r.support.fullscreen,c=navigator.userAgent.toLowerCase(),f=/(safari)[ \/]([\w.]+)/.exec(c)&&!/(chrome)[ \/]([\w.]+)/.exec(c);o.on(document,"fullscreenchange.ffscr webkitfullscreenchange.ffscr mozfullscreenchange.ffscr MSFullscreenChange.ffscr",function(e){var t=document.webkitCurrentFullScreenElement||document.mozFullScreenElement||document.fullscreenElement||document.msFullscreenElement||e.target;if(i||t.parentNode&&t.parentNode.getAttribute("data-flowplayer-instance-id")){var n=i||r(t.parentNode);t&&!i?i=n.trigger(s,[t]):(i.trigger(l,[i]),i=null)}}),r(function(e,t){var n=a.createElement("div",{className:"fp-player"});if(Array.prototype.map.call(t.children,a.identity).forEach(function(e){a.matches(e,".fp-ratio,script")||n.appendChild(e)}),t.appendChild(n),e.conf.fullscreen){var r,o,c=window;e.isFullscreen=!1,e.fullscreen=function(t){return e.disabled?void 0:(void 0===t&&(t=!e.isFullscreen),t&&(r=c.scrollY,o=c.scrollX),u?t?["requestFullScreen","webkitRequestFullScreen","mozRequestFullScreen","msRequestFullscreen"].forEach(function(e){return"function"==typeof n[e]?(n[e](Element.ALLOW_KEYBOARD_INPUT),!f||document.webkitCurrentFullScreenElement||document.mozFullScreenElement||n[e](),!1):void 0}):["exitFullscreen","webkitCancelFullScreen","mozCancelFullScreen","msExitFullscreen"].forEach(function(e){return"function"==typeof document[e]?(document[e](),!1):void 0}):e.trigger(t?s:l,[e]),e)};var d;e.on("mousedown.fs",function(){+new Date-d<150&&e.ready&&e.fullscreen(),d=+new Date}),e.on(s,function(){a.addClass(t,"is-fullscreen"),a.toggleClass(t,"fp-minimal-fullscreen",a.hasClass(t,"fp-minimal")),a.removeClass(t,"fp-minimal"),u||a.css(t,"position","fixed"),e.isFullscreen=!0}).on(l,function(){var n;a.toggleClass(t,"fp-minimal",a.hasClass(t,"fp-minimal-fullscreen")),a.removeClass(t,"fp-minimal-fullscreen"),u||"html5"!==e.engine||(n=t.css("opacity")||"",a.css(t,"opacity",0)),u||a.css(t,"position",""),a.removeClass(t,"is-fullscreen"),u||"html5"!==e.engine||setTimeout(function(){t.css("opacity",n)}),e.isFullscreen=!1,c.scrollTo(o,r)}).on("unload",function(){e.isFullscreen&&e.fullscreen()}),e.on("shutdown",function(){i=null})}})},{"../common":1,"../flowplayer":28,bean:31}],13:[function(e,t,n){"use strict";var i,r,o=e("../flowplayer"),a=e("bean"),s="is-help",l=e("../common");a.on(document,"keydown.fp",function(e){var t=i,n=e.ctrlKey||e.metaKey||e.altKey,o=e.which,a=t&&t.conf;if(t&&a.keyboard&&!t.disabled){if(-1!=[63,187,191].indexOf(o))return l.toggleClass(r,s),!1;if(27==o&&l.hasClass(r,s))return l.toggleClass(r,s),!1;if(!n&&t.ready){if(e.preventDefault(),e.shiftKey)return void(39==o?t.speed(!0):37==o&&t.speed(!1));if(58>o&&o>47)return t.seekTo(o-48);switch(o){case 38:case 75:t.volume(t.volumeLevel+.15);break;case 40:case 74:t.volume(t.volumeLevel-.15);break;case 39:case 76:t.seeking=!0,t.seek(!0);break;case 37:case 72:t.seeking=!0,t.seek(!1);break;case 190:t.seekTo();break;case 32:t.toggle();break;case 70:a.fullscreen&&t.fullscreen();break;case 77:t.mute();break;case 81:t.unload()}}}}),o(function(e,t){if(e.conf.keyboard){a.on(t,"mouseenter mouseleave",function(n){i=e.disabled||"mouseover"!=n.type?0:e,i&&(r=t)});var n=o.support.video&&"flash"!==e.conf.engine&&document.createElement("video").playbackRate?"<p><em>shift</em> + <em>&#8592;</em><em>&#8594;</em>slower / faster</p>":"";t.appendChild(l.createElement("div",{className:"fp-help"},' <a class="fp-close"></a> <div class="fp-help-section fp-help-basics"> <p><em>space</em>play / pause</p> <p><em>q</em>unload | stop</p> <p><em>f</em>fullscreen</p>'+n+' </div> <div class="fp-help-section"> <p><em>&#8593;</em><em>&#8595;</em>volume</p> <p><em>m</em>mute</p> </div> <div class="fp-help-section"> <p><em>&#8592;</em><em>&#8594;</em>seek</p> <p><em>&nbsp;. </em>seek to previous </p><p><em>1</em><em>2</em>&hellip; <em>6</em> seek to 10%, 20% &hellip; 60% </p> </div> ')),a.on(t,"click",".fp-close",function(){l.toggleClass(t,s)}),e.bind("shutdown",function(){r==t&&(r=null)})}})},{"../common":1,"../flowplayer":28,bean:31}],14:[function(e,t,n){var i=e("../flowplayer"),r=e("../common"),o=e("bean");i(function(e,t){e.showMenu=function(n,i){var a=r.find(".fp-ui",t)[0];r.toggleClass(n,"fp-active",!0),setTimeout(function(){o.one(document,"click",function(){e.hideMenu(n)})});var s=i;if(i&&i.tagName&&(s={left:r.offset(i).left,rightFallbackOffset:r.width(i),top:r.offset(i).top+r.height(i)}),s){s.rightFallbackOffset=s.rightFallbackOffset||0;var l=s.top-r.offset(a).top,u=s.left-r.offset(a).left;r.width(n)+u>r.width(a)&&(u=u-r.width(n)+s.rightFallbackOffset),r.height(n)+l>r.height(a)&&(l-=r.height(n)),r.css(n,{top:l+"px",left:u+"px"})}},e.hideMenu=function(e){r.toggleClass(e,"fp-active",!1)}})},{"../common":1,"../flowplayer":28,bean:31}],15:[function(e,t,n){var i=e("../flowplayer"),r=e("../common"),o=e("bean");i(function(e,t){function n(e){var t=r.createElement("div",{className:"fp-message"},e);return s.insertBefore(t,a),setTimeout(function(){r.toggleClass(t,"fp-shown")}),t}function i(e){r.removeNode(e)}var a=r.find(".fp-header",t)[0],s=r.find(".fp-ui",t)[0];e.message=function(e,t){var o=n(e),a=function(){r.toggleClass(o,"fp-shown"),setTimeout(function(){i(o)},500)};return t&&setTimeout(a,t),a},e.textarea=function(e){var t=document.createElement("textarea");t.value=e,t.className="fp-textarea",s.appendChild(t),o.on(document,"click.fptextarea",function(e){return e.target===t?t.select():(e.stopPropagation(),e.preventDefault(),r.removeNode(t),void o.off(document,"click.fptextarea"))})}})},{"../common":1,"../flowplayer":28,bean:31}],16:[function(e,t,n){"use strict";var i=e("../flowplayer"),r=/IEMobile/.test(window.navigator.userAgent),o=e("../common"),a=e("bean"),s=e("./ui").format,l=window.navigator.userAgent;(i.support.touch||r)&&i(function(e,t){var n=/Android/.test(l)&&!/Firefox/.test(l)&&!/Opera/.test(l),u=/Silk/.test(l),c=n?parseFloat(/Android\ (\d\.\d)/.exec(l)[1],10):0;if(n&&!r){if(!/Chrome/.test(l)&&4>c){var f=e.load;e.load=function(){var t=f.apply(e,arguments);return e.trigger("ready",[e,e.video]),t}}var d,p=0,h=function(e){d=setInterval(function(){e.video.time=++p,e.trigger("progress",[e,p])},1e3)};e.bind("ready pause unload",function(){d&&(clearInterval(d),d=null)}),e.bind("ready",function(){p=0}),e.bind("resume",function(t,n){return n.live?p?h(n):void e.one("progress",function(e,t,n){0===n&&h(t)}):void 0})}i.support.volume||o.addClass(t,"no-volume"),o.addClass(t,"is-touch"),e.sliders&&e.sliders.timeline&&e.sliders.timeline.disableAnimation(),(!i.support.inlineVideo||e.conf.native_fullscreen)&&(e.conf.nativesubtitles=!0);var g=!1;if(a.on(t,"touchmove",function(){g=!0}),a.on(t,"touchend click",function(n){return g?void(g=!1):e.playing&&!o.hasClass(t,"is-mouseover")?(o.addClass(t,"is-mouseover"),o.removeClass(t,"is-mouseout"),n.preventDefault(),void n.stopPropagation()):void(e.playing||e.splash||!o.hasClass(t,"is-mouseout")||o.hasClass(t,"is-mouseover")||setTimeout(function(){e.disabled||e.playing||e.splash||e.resume()},400))}),!i.support.fullscreen&&e.conf.native_fullscreen&&"function"==typeof document.createElement("video").webkitEnterFullScreen){var m=e.fullscreen;e.fullscreen=function(){var n=o.find("video.fp-engine",t)[0];return n?(e.trigger("fullscreen",[e]),a.on(document,"webkitfullscreenchange.nativefullscreen",function(){document.webkitFullscreenElement===n&&(a.off(document,".nativefullscreen"),a.on(document,"webkitfullscreenchange.nativefullscreen",function(){document.webkitFullscreenElement||(a.off(document,".nativefullscreen"),e.trigger("fullscreen-exit",[e]))}))}),n.webkitEnterFullScreen(),void a.one(n,"webkitendfullscreen",function(){a.off(document,"fullscreenchange.nativefullscreen"),e.trigger("fullscreen-exit",[e]),o.prop(n,"controls",!0),o.prop(n,"controls",!1)})):m.apply(e)}}(n||u)&&e.bind("ready",function(){var n=o.find("video.fp-engine",t)[0];a.one(n,"canplay",function(){n.play()}),n.play(),e.bind("progress.dur",function(){if(!e.live&&!e.conf.live){var i=n.duration;1!==i&&(e.video.duration=i,o.find(".fp-duration",t)[0].innerHTML=s(i),e.unbind("progress.dur"))}})})})},{"../common":1,"../flowplayer":28,"./ui":24,bean:31}],17:[function(e,t,n){"use strict";var i=e("../flowplayer"),r=e("extend-object"),o=e("bean"),a=e("../common"),s=e("./resolve"),l=new s,u=window.jQuery,c=/^#/;i(function(e,t){function n(){return a.find(h.query,i())}function i(){return c.test(h.query)?void 0:t}function f(){return a.find(h.query+"."+g,i())}function d(){var n=a.find(".fp-playlist",t)[0];if(!n){n=a.createElement("div",{className:"fp-playlist"});var i=a.find(".fp-next,.fp-prev",t);i.length?i[0].parentElement.insertBefore(n,i[0]):a.insertAfter(t,a.find("video",t)[0],n)}n.innerHTML="",e.conf.playlist[0].length&&(e.conf.playlist=e.conf.playlist.map(function(e){if("string"==typeof e){var t=e.split(s.TYPE_RE)[1];return{sources:[{type:"m3u8"===t.toLowerCase()?"application/x-mpegurl":"video/"+t,src:e}]}}return{sources:e.map(function(e){var t={};return Object.keys(e).forEach(function(n){t.type=/mpegurl/i.test(n)?"application/x-mpegurl":"video/"+n,t.src=e[n]}),t})}})),e.conf.playlist.forEach(function(e,t){var i=e.sources[0].src;n.appendChild(a.createElement("a",{href:i,"data-index":t}))})}function p(t){return"undefined"!=typeof t.index?t.index:"undefined"!=typeof e.video.index?e.video.index:e.conf.startIndex||0}var h=r({active:"is-active",advance:!0,query:".fp-playlist a"},e.conf),g=h.active,m=a.find(".fp-ui",t)[0],v=a.hasClass(t,"fp-custom-playlist")||!!h.customPlaylist;a.toggleClass(t,"fp-custom-playlist",v),a.toggleClass(t,"fp-default-playlist",!v),e.play=function(t){if(void 0===t)return e.resume();if("number"==typeof t&&!e.conf.playlist[t])return e;if("number"!=typeof t)return e.load.apply(null,arguments);var n=r({index:t},e.conf.playlist[t]);return t===e.video.index?e.load(n,function(){e.resume()}):(e.off("beforeresume.fromfirst"),e.load(n,function(){e.video.index=t}),e)},e.next=function(t){t&&t.preventDefault();var n=e.video.index;return-1!=n&&(n=n===e.conf.playlist.length-1?0:n+1,e.play(n)),e},e.prev=function(t){t&&t.preventDefault();var n=e.video.index;return-1!=n&&(n=0===n?e.conf.playlist.length-1:n-1,e.play(n)),e},e.setPlaylist=function(t){return e.conf.playlist=t,delete e.video.index,d(),e},e.addPlaylistItem=function(t){return e.setPlaylist(e.conf.playlist.concat([t]))},e.removePlaylistItem=function(t){var n=e.conf.playlist;return e.setPlaylist(n.slice(0,t).concat(n.slice(t+1)))},o.on(t,"click",".fp-next",e.next),o.on(t,"click",".fp-prev",e.prev),h.advance&&e.off("finish.pl").on("finish.pl",function(e,n){if(n.video.loop)return n.seek(0,function(){n.resume()});var i=n.video.index>=0?n.video.index+1:void 0;i<n.conf.playlist.length||h.loop?(i=i===n.conf.playlist.length?0:i,a.removeClass(t,"is-finished"),setTimeout(function(){n.play(i)})):n.conf.playlist.length>1&&(n.one("beforeresume.fromfirst",function(e){e.preventDefault(),n.play(0)}),n.one("seek",function(){n.off("beforeresume.fromfirst")}))});var y=!1;e.conf.playlist.length&&(y=!0,d(),e.conf.clip&&e.conf.clip.sources.length||(e.conf.clip=e.conf.playlist[e.conf.startIndex||0])),n().length&&!y&&(e.conf.playlist=[],delete e.conf.startIndex,n().forEach(function(t){var n=t.href;t.setAttribute("data-index",e.conf.playlist.length);var i=l.resolve(n,e.conf.clip.sources);u&&r(i,u(t).data()),e.conf.playlist.push(i)})),a.find(".fp-prev,.fp-next,.fp-playlist",t).forEach(function(e){m.appendChild(e)}),o.on(c.test(h.query)?document:t,"click",h.query,function(t){t.preventDefault();var n=t.currentTarget,i=Number(n.getAttribute("data-index"));-1!=i&&e.play(i)}),e.on("load",function(n,r,o){if(e.conf.playlist.length){var s=f()[0],l=s&&s.getAttribute("data-index"),u=o.index=p(o),c=a.find(h.query+'[data-index="'+u+'"]',i())[0],d=u==e.conf.playlist.length-1;s&&a.removeClass(s,g),c&&a.addClass(c,g),a.removeClass(t,"video"+l),a.addClass(t,"video"+u),a.toggleClass(t,"last-video",d),o.index=r.video.index=u,o.is_last=r.video.is_last=d}}).on("unload.pl",function(){e.conf.playlist.length&&(f().forEach(function(e){a.toggleClass(e,g)}),e.conf.playlist.forEach(function(e,n){a.removeClass(t,"video"+n)}))}),e.conf.playlist.length&&(e.conf.loop=!1)})},{"../common":1,"../flowplayer":28,"./resolve":19,bean:31,"extend-object":36}],18:[function(e,t,n){var i=e("../flowplayer"),r=e("../common"),o=e("bean");i(function(e,t){function n(){r.find(".fp-qsel-menu",t).forEach(r.removeNode),r.find(".fp-qsel",t).forEach(r.removeNode)}function i(e){l.appendChild(r.createElement("strong",{className:"fp-qsel"},"HD"));var t=r.createElement("div",{className:"fp-menu fp-qsel-menu"},"<strong>Quality</strong>");e.forEach(function(e){var n=document.createElement("a"),i="undefined"!=typeof e.value?e.value:e;n.setAttribute("data-quality",i),n.innerHTML=e.label||e,t.appendChild(n)}),s.appendChild(t)}function a(e){r.find(".fp-qsel-menu a",t).forEach(function(t){r.toggleClass(t,"fp-selected",t.getAttribute("data-quality")==e),r.toggleClass(t,"fp-color",t.getAttribute("data-quality")==e)})}var s=r.find(".fp-ui",t)[0],l=r.find(".fp-controls",s)[0];o.on(t,"click",".fp-qsel",function(){var n=r.find(".fp-qsel-menu",t)[0];r.hasClass(n,"fp-active")?e.hideMenu():e.showMenu(n)}),o.on(t,"click",".fp-qsel-menu a",function(t){var n=t.target.getAttribute("data-quality");e.quality(n)}),e.quality=function(t){t=isNaN(Number(t))?t:Number(t),e.trigger("quality",[e,t])},e.on("quality",function(e,t,n){a(n,t.video.qualities)}),e.on("ready",function(e,t,r){n(),!r.qualities||r.qualities.filter(function(e){return"undefined"!=typeof e.value?e.value>-1:!0}).length<2||(i(r.qualities,r.quality),a(r.quality,r.qualities))})})},{"../common":1,"../flowplayer":28,bean:31}],19:[function(e,t,n){"use strict";function i(e){var t=e.attr("src"),n=e.attr("type")||"",i=t.split(o)[1];return n=n.toLowerCase(),a(e.data(),{src:t,suffix:i||n,type:n||i})}function r(e){return/mpegurl/i.test(e)?"application/x-mpegurl":"video/"+e}var o=/\.(\w{3,4})(\?.*)?$/i,a=e("extend-object");t.exports=function(){var e=this;e.sourcesFromVideoTag=function(e,t){var n=[];return t("source",e).each(function(){n.push(i(t(this)))}),!n.length&&e.length&&n.push(i(e)),n},e.resolve=function(e,t){return e?("string"==typeof e&&(e={src:e,sources:[]},e.sources=(t||[]).map(function(t){var n=t.src.split(o)[1];return{type:t.type,src:e.src.replace(o,"."+n+"$2")}})),e instanceof Array&&(e={sources:e.map(function(e){return e.type&&e.src?e:Object.keys(e).reduce(function(t,n){return a(t,{type:r(n),src:e[n]})},{})})}),e):{sources:t}}},t.exports.TYPE_RE=o},{"extend-object":36}],20:[function(e,t,n){"use strict";var i=e("../flowplayer"),r=e("../common"),o=e("extend-object"),a=e("bean");i(function(e,t){var n=e.conf;if(n.share===!1)return void r.find(".fp-share",t).forEach(r.removeNode);e.shareUrl=function(t){if(t&&n.embed&&n.embed.iframe)return n.embed.iframe;if("string"==typeof e.conf.share)return e.conf.share;var i=encodeURIComponent(e.video.title||(r.find("title")[0]||{}).innerHTML||"Flowplayer video"),a=encodeURIComponent(btoa(JSON.stringify(o({},e.conf,e.extensions)))),s=encodeURIComponent(window.location.toString()),l=t?"https://flowplayer.org/e/":"https://flowplayer.org/s/";return l+"?t="+i+"&c="+a+"&r="+s};var i=r.createElement("div",{className:"fp-menu fp-share-menu"},"<strong>Share</strong>"),s=r.find(".fp-ui",t)[0];s.appendChild(i);var l=r.find(".fp-share",t)[0];a.on(t,"click",".fp-share",function(t){t.preventDefault(),r.hasClass(i,"fp-active")?e.hideMenu():e.showMenu(i,l)})})},{"../common":1,"../flowplayer":28,bean:31,"extend-object":36}],21:[function(e,t,n){"use strict";var i=e("../flowplayer"),r=e("../common"),o=e("bean");i.defaults.subtitleParser=function(e){function t(e){var t=e.split(":");return 2==t.length&&t.unshift(0),60*t[0]*60+60*t[1]+parseFloat(t[2].replace(",","."))}for(var n,i,r,o=/^(([0-9]{2}:){1,2}[0-9]{2}[,.][0-9]{3}) --\> (([0-9]{2}:){1,2}[0-9]{2}[,.][0-9]{3})(.*)/,a=[],s=0,l=e.split("\n"),u=l.length,c={};u>s;s++)if(i=o.exec(l[s])){for(n=l[s-1],r="<p>"+l[++s]+"</p><br/>";"string"==typeof l[++s]&&l[s].trim()&&s<l.length;)r+="<p>"+l[s]+"</p><br/>";c={title:n,startTime:t(i[1]),endTime:t(i[3]),text:r},a.push(c)}return a},i(function(e,t){var n,a,s,l,u=function(){return s=r.createElement("strong",{className:"fp-cc"},"CC"),l=r.createElement("div",{className:"fp-menu fp-subtitle-menu"},"<strong>Closed Captions</strong>"),l.appendChild(r.createElement("a",{"data-subtitle-index":-1},"No subtitles")),(e.video.subtitles||[]).forEach(function(e,t){var n=e.srclang||"en",i=e.label||"Default ("+n+")",o=r.createElement("a",{"data-subtitle-index":t},i);l.appendChild(o)}),r.find(".fp-ui",t)[0].appendChild(l),r.find(".fp-controls",t)[0].appendChild(s),s};o.on(t,"click",".fp-cc",function(){r.toggleClass(l,"fp-active")}),o.on(t,"click",".fp-subtitle-menu [data-subtitle-index]",function(t){t.preventDefault();var n=t.target.getAttribute("data-subtitle-index");return"-1"===n?e.disableSubtitles():void e.loadSubtitles(n)});var c=function(){a=r.find(".fp-subtitle",t)[0],a=a||r.appendTo(r.createElement("div",{"class":"fp-captions"}),r.find(".fp-player",t)[0]),Array.prototype.forEach.call(a.children,r.removeNode),r.find(".fp-subtitle-menu",t).forEach(r.removeNode),u()};e.on("ready",function(n,o,a){var l=o.conf;if(i.support.subtitles&&l.nativesubtitles&&"html5"==o.engine.engineName){var u=function(e){var n=r.find("video",t)[0].textTracks;n.length&&(n[0].mode=e)};if(!a.subtitles||!a.subtitles.length)return;var f=r.find("video.fp-engine",t)[0];return a.subtitles.some(function(e){return!r.isSameDomain(e.src)})&&r.attr(f,"crossorigin","anonymous"),"function"==typeof f.textTracks.addEventListener&&f.textTracks.addEventListener("addtrack",function(){u("disabled"),u("showing")}),void a.subtitles.forEach(function(e){f.appendChild(r.createElement("track",{kind:"subtitles",srclang:e.srclang||"en",label:e.label||"en",src:e.src,"default":e["default"]}))})}if(o.subtitles=[],c(),r.removeClass(t,"has-menu"),e.disableSubtitles(),r.toggleClass(s,"fp-hidden",!a.subtitles||!a.subtitles.length),a.subtitles&&a.subtitles.length){var d=a.subtitles.filter(function(e){return e["default"]})[0];d&&o.loadSubtitles(a.subtitles.indexOf(d))}}),e.bind("cuepoint",function(e,t,i){i.subtitle?(n=i.index,r.html(a,i.subtitle.text),r.addClass(a,"fp-shown")):i.subtitleEnd&&(r.removeClass(a,"fp-shown"),n=i.index)}),e.bind("seek",function(t,i,o){n&&e.cuepoints[n]&&e.cuepoints[n].time>o&&(r.removeClass(a,"fp-shown"),n=null),(e.cuepoints||[]).forEach(function(t){var i=t.subtitle;i&&n!=t.index?o>=t.time&&(!i.endTime||o<=i.endTime)&&e.trigger("cuepoint",[e,t]):t.subtitleEnd&&o>=t.time&&t.index==n+1&&e.trigger("cuepoint",[e,t])})});var f=function(e){r.toggleClass(r.find("a.fp-selected",l)[0],"fp-selected"),r.toggleClass(r.find('a[data-subtitle-index="'+e+'"]',l)[0],"fp-selected")};e.disableSubtitles=function(){return e.subtitles=[],(e.cuepoints||[]).forEach(function(t){(t.subtitle||t.subtitleEnd)&&e.removeCuepoint(t)}),a&&Array.prototype.forEach.call(a.children,r.removeNode),f(-1),e},e.loadSubtitles=function(t){e.disableSubtitles();var n=e.video.subtitles[t],i=n.src;return i?(f(t),r.xhrGet(i,function(t){var n=e.conf.subtitleParser(t);n.forEach(function(t){var n={time:t.startTime,subtitle:t,visible:!1};e.subtitles.push(t),e.addCuepoint(n),e.addCuepoint({time:t.endTime,subtitleEnd:t.title,visible:!1}),0!==t.startTime||e.video.time||e.trigger("cuepoint",[e,n])})},function(){return e.trigger("error",{code:8,url:i}),!1}),e):void 0}})},{"../common":1,"../flowplayer":28,bean:31}],22:[function(e,t,n){"use strict";var i=e("../flowplayer"),r=e("extend-object");!function(){var e=function(e){var t=/iP(ad|hone)(; CPU)? OS (\d+_\d)/.exec(e);return t&&t.length>1?parseFloat(t[t.length-1].replace("_","."),10):0},t=function(){var e=document.createElement("video");return e.loop=!0,e.autoplay=!0,e.preload=!0,e},n={},o=document.documentElement.style,a=navigator.userAgent.toLowerCase(),s=/(chrome)[ \/]([\w.]+)/.exec(a)||/(safari)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];s[1]&&(n[s[1]]=!0,n.version=s[2]||"0");var l=t(),u=navigator.userAgent,c=n.msie||/Trident\/7/.test(u),f=/iPad|MeeGo/.test(u)&&!/CriOS/.test(u),d=/iPad/.test(u)&&/CriOS/.test(u),p=/iP(hone|od)/i.test(u)&&!/iPad/.test(u)&&!/IEMobile/i.test(u),h=/Android/.test(u)&&!/Firefox/.test(u),g=/Android/.test(u)&&/Firefox/.test(u),m=/Silk/.test(u),v=/IEMobile/.test(u),y=v?parseFloat(/Windows\ Phone\ (\d+\.\d+)/.exec(u)[1],10):0,w=v?parseFloat(/IEMobile\/(\d+\.\d+)/.exec(u)[1],10):0,b=f||p?e(u):0,I=h?parseFloat(/Android\ (\d\.\d)/.exec(u)[1],10):0,C=r(i.support,{browser:n,iOS:{iPhone:p,iPad:f||d,version:b,chrome:d},subtitles:!!l.addTextTrack,fullscreen:"function"==typeof document.webkitCancelFullScreen&&!/Mac OS X 10_5.+Version\/5\.0\.\d Safari/.test(u)||document.mozFullScreenEnabled||"function"==typeof document.exitFullscreen||"function"==typeof document.msExitFullscreen,inlineBlock:!(c&&n.version<8),touch:"ontouchstart"in window,dataload:!f&&!p&&!v,flex:"flexWrap"in o||"WebkitFlexWrap"in o||"msFlexWrap"in o,svg:!!document.createElementNS&&!!document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect,zeropreload:!c&&!h,volume:!(f||p||m||d),cachedVideoTag:!(f||p||d||v),firstframe:!(p||f||h||m||d||v||g),inlineVideo:(!p||b>=10)&&(!v||y>=8.1&&w>=11)&&(!h||I>=3),hlsDuration:!h&&(!n.safari||f||p||d),seekable:!f&&!d});C.autoplay=C.firstframe;try{var M=navigator.plugins["Shockwave Flash"],A=c?new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version"):M.description;c||M[0].enabledPlugin?(A=A.split(/\D+/),A.length&&!A[0]&&(A=A.slice(1)),C.flashVideo=A[0]>9||9==A[0]&&A[3]>=115):C.flashVideo=!1}catch(S){}try{C.video=!!l.canPlayType,C.video&&l.canPlayType("video/mp4")}catch(D){C.video=!1}C.animation=function(){for(var e=["","Webkit","Moz","O","ms","Khtml"],t=document.createElement("p"),n=0;n<e.length;n++)if("undefined"!=typeof t.style[e[n]+"AnimationName"])return!0}()}()},{"../flowplayer":28,"extend-object":36}],23:[function(e,t,n){"use strict";var i=e("../flowplayer"),r=e("../common"),o=e("bean");i(function(e,t){var n=e.conf;if(n.share!==!1&&n.twitter!==!1){e.tweet=function(){var t,i,r=550,o=420,a=screen.height,s=screen.width,l="scrollbars=yes,resizable=yes,toolbar=no,location=yes",u="string"==typeof n.twitter?n.twitter:e.shareUrl();t=Math.round(s/2-r/2),i=0,a>o&&(i=Math.round(a/2-o/2)),window.open("https://twitter.com/intent/tweet?url="+encodeURIComponent(u),"intent",l+",width="+r+",height="+o+",left="+t+",top="+i)};var i=r.find(".fp-share-menu",t)[0],a=r.createElement("a",{"class":"fp-icon fp-twitter"},"Twitter");r.append(i,a),o.on(t,"click",".fp-twitter",function(){e.tweet()})}})},{"../common":1,"../flowplayer":28,bean:31}],24:[function(e,t,n){(function(n){"use strict";function i(e){return e=parseInt(e,10),e>=10?e:"0"+e}function r(e,t){e=Math.max(e||0,0),e=t?Math.ceil(e):Math.floor(e);var n=Math.floor(e/3600),r=Math.floor(e/60);return e-=60*r,n>=1?(r-=60*n,n+":"+i(r)+":"+i(e)):i(r)+":"+i(e)}var o=e("../flowplayer"),a=e("../common"),s=e("bean"),l=e("./ui/slider"),u=e("./ui/bar-slider"),c=n("PHN2ZyBjbGFzcz0iZnAtcGxheS1yb3VuZGVkLW91dGxpbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDk5Ljg0NCA5OS44NDM0Ij48ZGVmcz48c3R5bGU+LmZwLWNvbG9yLXBsYXl7b3BhY2l0eTowLjY1O30uY29udHJvbGJ1dHRvbntmaWxsOiNmZmY7fTwvc3R5bGU+CjwvZGVmcz4KPHRpdGxlPnBsYXktcm91bmRlZC1vdXRsaW5lPC90aXRsZT48cGF0aCBjbGFzcz0iZnAtY29sb3ItcGxheSIgZD0iTTQ5LjkyMTctLjA3OGE1MCw1MCwwLDEsMCw1MCw1MEE1MC4wNTY0LDUwLjA1NjQsMCwwLDAsNDkuOTIxNy0uMDc4WiIvPjxwYXRoIGNsYXNzPSJjb250cm9sYnV0dG9uIiBkPSJNNDEuMDM1OSw3MS4xOWE1LjA0OTIsNS4wNDkyLDAsMCwxLTIuNTU3NS0uNjY3M2MtMS44MDMxLTEuMDQxLTIuNzk1OC0zLjEyNDgtMi43OTU4LTUuODY2NFYzNS4xODg3YzAtMi43NDI5Ljk5MzMtNC44MjcyLDIuNzk3LTUuODY3NiwxLjgwMjUtMS4wNDIyLDQuMTAzNC0uODYsNi40OC41MTQzTDcwLjQ3ODIsNDQuNTY3MmMyLjM3NTEsMS4zNzExLDMuNjgyNiwzLjI3MjUsMy42ODMyLDUuMzU0NXMtMS4zMDc2LDMuOTg0NS0zLjY4MzIsNS4zNTYyTDQ0Ljk1OTIsNzAuMDExNEE3LjkzODQsNy45Mzg0LDAsMCwxLDQxLjAzNTksNzEuMTlabS4wMDY1LTQwLjEyM2EyLjY3OTQsMi42Nzk0LDAsMCwwLTEuMzU4Mi4zNDEzYy0xLjAyNjMuNTkyNi0xLjU5MTIsMS45MzQ5LTEuNTkxMiwzLjc4VjY0LjY1NjNjMCwxLjg0NDkuNTY0OSwzLjE4NjYsMS41OTA2LDMuNzc5MSwxLjAyODEuNTkzMiwyLjQ3MzMuNDEwOCw0LjA3LS41MTJMNjkuMjczLDUzLjE5MDZjMS41OTgzLS45MjI3LDIuNDc4LTIuMDgzOCwyLjQ3OC0zLjI2ODlzLS44OC0yLjM0NDUtMi40NzgtMy4yNjY2TDQzLjc1NCwzMS45MjI3QTUuNTY4NSw1LjU2ODUsMCwwLDAsNDEuMDQyMywzMS4wNjcxWiIgZmlsdGVyPSJ1cmwoI2YxKSIvPjwvc3ZnPgo=","base64"),f=n("PHN2ZyBjbGFzcz0iZnAtcGxheS1yb3VuZGVkLWZpbGwiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEwMCAxMDAiPgogIDxkZWZzPjxzdHlsZT4uYXtmaWxsOiMwMDA7b3BhY2l0eTowLjY1O30uYntmaWxsOiNmZmY7b3BhY2l0eToxLjA7fTwvc3R5bGU+CiAgPC9kZWZzPjx0aXRsZT5wbGF5LXJvdW5kZWQtZmlsbDwvdGl0bGU+CiAgPHBhdGggY2xhc3M9ImZwLWNvbG9yLXBsYXkiIGQ9Ik00OS45MjE3LS4wNzhhNTAsNTAsMCwxLDAsNTAsNTBBNTAuMDU2NCw1MC4wNTY0LDAsMCwwLDQ5LjkyMTctLjA3OFoiLz4KICA8cGF0aCBjbGFzcz0iYiIgZD0iTTM1Ljk0MiwzNS4yMzIzYzAtNC43Mjg5LDMuMzUwNi02LjY2MzcsNy40NDYtNC4yOTcxTDY4LjgzLDQ1LjYyMzVjNC4wOTU2LDIuMzY0LDQuMDk1Niw2LjIzMTksMCw4LjU5NzdMNDMuMzg4LDY4LjkxYy00LjA5NTQsMi4zNjQtNy40NDYuNDMtNy40NDYtNC4yOTc5WiIgZmlsdGVyPSJ1cmwoI2YxKSIvPgogIDwvc3ZnPgogIAo=","base64"),d=n("PHN2ZyBjbGFzcz0iZnAtcGxheS1zaGFycC1maWxsIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj4KICA8ZGVmcz4KICAgIDxzdHlsZT4uZnAtY29sb3ItcGxheXtvcGFjaXR5OjAuNjU7fS5jb250cm9sYnV0dG9ue2ZpbGw6I2ZmZjt9PC9zdHlsZT4KICA8L2RlZnM+CiAgPHRpdGxlPnBsYXktc2hhcnAtZmlsbDwvdGl0bGU+CiAgPHBhdGggY2xhc3M9ImZwLWNvbG9yLXBsYXkiIGQ9Ik00OS45MjE3LS4wNzhhNTAsNTAsMCwxLDAsNTAsNTBBNTAuMDU2NCw1MC4wNTY0LDAsMCwwLDQ5LjkyMTctLjA3OFoiLz4KICA8cG9seWdvbiBjbGFzcz0iY29udHJvbGJ1dHRvbiIgcG9pbnRzPSI3My42MDEgNTAgMzcuOTY4IDcwLjU3MyAzNy45NjggMjkuNDI3IDczLjYwMSA1MCIgZmlsdGVyPSJ1cmwoI2YxKSIvPgo8L3N2Zz4K","base64"),p=n("PHN2ZyBjbGFzcz0iZnAtcGxheS1zaGFycC1vdXRsaW5lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA5OS44NDQgOTkuODQzNCI+PGRlZnM+PHN0eWxlPi5jb250cm9sYnV0dG9uYmd7b3BhY2l0eTowLjY1O30uY29udHJvbGJ1dHRvbntmaWxsOiNmZmY7fTwvc3R5bGU+CjwvZGVmcz48dGl0bGU+cGxheS1zaGFycC1vdXRsaW5lPC90aXRsZT48cGF0aCBjbGFzcz0iZnAtY29sb3ItcGxheSIgZD0iTTQ5LjkyMTctLjA3OGE1MCw1MCwwLDEsMCw1MCw1MEE1MC4wNTY0LDUwLjA1NjQsMCwwLDAsNDkuOTIxNy0uMDc4WiIvPjxwYXRoIGNsYXNzPSJjb250cm9sYnV0dG9uIiBkPSJNMzYuOTQ0Myw3Mi4yNDczVjI3LjI5MTZMNzUuODc3Niw0OS43N1ptMi4yLTQxLjE0NTVWNjguNDM3MUw3MS40Nzc2LDQ5Ljc3WiIgZmlsdGVyPSJ1cmwoI2YxKSIvPjwvc3ZnPgo=","base64"),h=n("PHN2ZyBjbGFzcz0iZnAtcGF1c2Utcm91bmRlZC1vdXRsaW5lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA5OS44NDM0IDk5Ljg0MzQiPjxkZWZzPjxzdHlsZT4uZnAtY29sb3ItcGxheXtvcGFjaXR5OjAuNjU7fS5yZWN0e2ZpbGw6I2ZmZjt9PC9zdHlsZT4KPC9kZWZzPjx0aXRsZT5wYXVzZS1yb3VuZGVkLW91dGxpbmU8L3RpdGxlPjxwYXRoIGNsYXNzPSJmcC1jb2xvci1wbGF5IiBkPSJNNDkuOTIxMi0uMDc4M2E1MCw1MCwwLDEsMCw1MC4wMDA2LDUwQTUwLjA1NjIsNTAuMDU2MiwwLDAsMCw0OS45MjEyLS4wNzgzWiIvPjxnIGNsYXNzPSJjb250cm9sYnV0dG9uIj48cGF0aCBjbGFzcz0icmVjdCIgZD0iTTM5LjAwMzYsNzEuOTcyNmE3LjU2NSw3LjU2NSwwLDAsMS03LjU1Ny03LjU1NnYtMjguOTlhNy41NTY1LDcuNTU2NSwwLDAsMSwxNS4xMTMsMHYyOC45OUE3LjU2NDgsNy41NjQ4LDAsMCwxLDM5LjAwMzYsNzEuOTcyNlptMC00MS45MDRhNS4zNjQ3LDUuMzY0NywwLDAsMC01LjM1OTMsNS4zNTgydjI4Ljk5YTUuMzU4Nyw1LjM1ODcsMCwwLDAsMTAuNzE3NCwwdi0yOC45OUE1LjM2NDUsNS4zNjQ1LDAsMCwwLDM5LjAwMzYsMzAuMDY4NloiIGZpbHRlcj0idXJsKCNmMSkiLz48cGF0aCBjbGFzcz0icmVjdCIgZD0iTTYwLjg0LDcxLjk3MjZhNy41NjQ4LDcuNTY0OCwwLDAsMS03LjU1Ni03LjU1NnYtMjguOTlhNy41NTY1LDcuNTU2NSwwLDAsMSwxNS4xMTMsMHYyOC45OUE3LjU2NSw3LjU2NSwwLDAsMSw2MC44NCw3MS45NzI2Wm0wLTQxLjkwNGE1LjM2NDUsNS4zNjQ1LDAsMCwwLTUuMzU4Miw1LjM1ODJ2MjguOTlhNS4zNTg3LDUuMzU4NywwLDAsMCwxMC43MTc0LDB2LTI4Ljk5QTUuMzY0Nyw1LjM2NDcsMCwwLDAsNjAuODQsMzAuMDY4NloiIGZpbHRlcj0idXJsKCNmMSkiLz48L2c+PC9zdmc+Cg==","base64"),g=n("PHN2ZyBjbGFzcz0iZnAtcGF1c2Utcm91bmRlZC1maWxsIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48ZGVmcz48c3R5bGU+LmZwLWNvbG9yLXBsYXl7b3BhY2l0eTowLjY1O30ucmVjdHtmaWxsOiNmZmY7fTwvc3R5bGU+CjwvZGVmcz48dGl0bGU+cGF1c2Utcm91bmRlZC1maWxsPC90aXRsZT48cGF0aCBjbGFzcz0iZnAtY29sb3ItcGxheSIgZD0iTTQ5LjkyMTctLjA3OGE1MCw1MCwwLDEsMCw1MCw1MEE1MC4wNTY0LDUwLjA1NjQsMCwwLDAsNDkuOTIxNy0uMDc4WiIvPjxnIGNsYXNzPSJjb250cm9sYnV0dG9uIiBmaWx0ZXI9InVybCgjZjEpIj48cmVjdCBjbGFzcz0icmVjdCIgeD0iMzEuODQ0IiB5PSIyOC4xMjMxIiB3aWR0aD0iMTMuNDM2MiIgaGVpZ2h0PSI0My41OTczIiByeD0iNi43MTgxIiByeT0iNi43MTgxIi8+PHJlY3QgY2xhc3M9InJlY3QiIHg9IjU0LjU2MzgiIHk9IjI4LjEyMzEiIHdpZHRoPSIxMy40MzYyIiBoZWlnaHQ9IjQzLjU5NzMiIHJ4PSI2LjcxODEiIHJ5PSI2LjcxODEiLz48L2c+PC9zdmc+Cg==","base64"),m=n("PHN2ZyBjbGFzcz0iZnAtcGF1c2Utc2hhcnAtZmlsbCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PGRlZnM+PHN0eWxlPi5mcC1jb2xvci1wbGF5e29wYWNpdHk6MC42NTt9LnJlY3R7ZmlsbDojZmZmO308L3N0eWxlPgo8L2RlZnM+PHRpdGxlPnBhdXNlLXNoYXJwLWZpbGw8L3RpdGxlPjxwYXRoIGNsYXNzPSJmcC1jb2xvci1wbGF5IiBkPSJNNDkuOTIxNy0uMDc4YTUwLDUwLDAsMSwwLDUwLDUwQTUwLjA1NjQsNTAuMDU2NCwwLDAsMCw0OS45MjE3LS4wNzhaIi8+PGcgY2xhc3M9ImNvbnRyb2xidXR0b24iIGZpbHRlcj0idXJsKCNmMSkiPjxyZWN0IGNsYXNzPSJyZWN0IiB4PSIzMy41IiB5PSIzMC4xMDQyIiB3aWR0aD0iMTIuMjYzNCIgaGVpZ2h0PSIzOS43OTE3Ii8+PHJlY3QgY2xhc3M9InJlY3QiIHg9IjU0LjIzNjYiIHk9IjMwLjEwNDIiIHdpZHRoPSIxMi4yNjM0IiBoZWlnaHQ9IjM5Ljc5MTciLz48L2c+PC9zdmc+Cg==","base64"),v=n("PHN2ZyBjbGFzcz0iZnAtcGF1c2Utc2hhcnAtb3V0bGluZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgOTkuODQzNCA5OS44NDM0Ij48ZGVmcz48c3R5bGU+LmZwLWNvbG9yLXBsYXl7b3BhY2l0eTowLjY1O30ucmVjdHtmaWxsOiNmZmY7fTwvc3R5bGU+CjwvZGVmcz48dGl0bGU+cGF1c2Utc2hhcnAtb3V0bGluZTwvdGl0bGU+PHBhdGggY2xhc3M9ImZwLWNvbG9yLXBsYXkiIGQ9Ik00OS45MjEyLS4wNzgzYTUwLDUwLDAsMSwwLDUwLjAwMDYsNTBBNTAuMDU2Miw1MC4wNTYyLDAsMCwwLDQ5LjkyMTItLjA3ODNaIi8+PGcgY2xhc3M9ImNvbnRyb2xidXR0b24iIGZpbHRlcj0idXJsKCNmMSkiPjxwYXRoIGNsYXNzPSJyZWN0IiBkPSJNNDYuODcwOSw2OS45NTMxSDMzLjEzODVWMjkuODlINDYuODcwOVpNMzUuMTQxNiw2Ny45NWg5LjcyNjJWMzEuODkzNUgzNS4xNDE2WiIvPjxwYXRoIGNsYXNzPSJyZWN0IiBkPSJNNjYuNzA0Nyw2OS45NTMxSDUyLjk3MjJWMjkuODlINjYuNzA0N1pNNTQuOTc1NCw2Ny45NWg5LjcyNjJWMzEuODkzNUg1NC45NzU0WiIvPjwvZz48L3N2Zz4K","base64"),y=n("PHN2ZyBjbGFzcz0iZnAtbG9hZGluZy1yb3VuZGVkLW91dGxpbmUiIHdpZHRoPScxMTJweCcgaGVpZ2h0PScxMTJweCcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPgogICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9Ijc2IiBoZWlnaHQ9Ijc2IiBmaWxsPSJyZ2JhKDAsMCwwLDApIiBjbGFzcz0iYmsiPjwvcmVjdD4KICAgIDxjaXJjbGUgY3g9IjAiIGN5PSIwIiByPSIxMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjUgMjUpIiBmaWxsPSJub25lIiBzdHJva2U9InJnYmEoMCwwLDAsLjUpIiBzdHJva2Utd2lkdGg9IjMlIiBjbGFzcz0ic3EiPgogICAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdHJva2UiIGZyb209InJnYmEoMCwwLDAsMCkiIHRvPSJyZ2JhKDAsMCwwLC41KSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMS42cyIgYmVnaW49IjAuMHMiIHZhbHVlcz0icmdiYSgwLDAsMCwuNSk7cmdiYSgwLDAsMCwwKTtyZ2JhKDAsMCwwLDApO3JnYmEoMCwwLDAsLjUpO3JnYmEoMCwwLDAsLjUpIiBrZXlUaW1lcz0iMDswLjE7MC4yOzAuNDsxIj48L2FuaW1hdGU+CiAgICAgIDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0ic2NhbGUiIGFkZGl0aXZlPSJzdW0iIGZyb209IjAuOCIgdG89IjEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBiZWdpbj0iMC4wcyIgZHVyPSIxLjZzIiB2YWx1ZXM9IjE7MC44OzAuODsxOzEiIGtleVRpbWVzPSIwOzAuMTswLjI7MC40OzEiPjwvYW5pbWF0ZVRyYW5zZm9ybT4KICAgIDwvY2lyY2xlPgogICAgPGNpcmNsZSBjeD0iMCIgY3k9IjAiIHI9IjEwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MCAyNSkiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmdiYSgwLDAsMCwuNSkiIHN0cm9rZS13aWR0aD0iMyUiIGNsYXNzPSJzcSI+CiAgICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9InN0cm9rZSIgZnJvbT0icmdiYSgwLDAsMCwwKSIgdG89InJnYmEoMCwwLDAsLjUpIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgZHVyPSIxLjZzIiBiZWdpbj0iMC40cyIgdmFsdWVzPSJyZ2JhKDAsMCwwLC41KTtyZ2JhKDAsMCwwLDApO3JnYmEoMCwwLDAsMCk7cmdiYSgwLDAsMCwuNSk7cmdiYSgwLDAsMCwuNSkiIGtleVRpbWVzPSIwOzAuMTswLjI7MC40OzEiPjwvYW5pbWF0ZT4KICAgICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJzY2FsZSIgYWRkaXRpdmU9InN1bSIgZnJvbT0iMC44IiB0bz0iMSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGJlZ2luPSIwLjRzIiBkdXI9IjEuNnMiIHZhbHVlcz0iMTswLjg7MC44OzE7MSIga2V5VGltZXM9IjA7MC4xOzAuMjswLjQ7MSI+PC9hbmltYXRlVHJhbnNmb3JtPgogICAgPC9jaXJjbGU+CiAgICA8Y2lyY2xlIGN4PSIwIiBjeT0iMCIgcj0iMTAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUwIDUwKSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZ2JhKDAsMCwwLC41KSIgc3Ryb2tlLXdpZHRoPSIzJSIgY2xhc3M9InNxIj4KICAgICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ic3Ryb2tlIiBmcm9tPSJyZ2JhKDAsMCwwLDApIiB0bz0icmdiYSgwLDAsMCwuNSkiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjEuNnMiIGJlZ2luPSIwLjhzIiB2YWx1ZXM9InJnYmEoMCwwLDAsLjUpO3JnYmEoMCwwLDAsMCk7cmdiYSgwLDAsMCwwKTtyZ2JhKDAsMCwwLC41KTtyZ2JhKDAsMCwwLC41KSIga2V5VGltZXM9IjA7MC4xOzAuMjswLjQ7MSI+PC9hbmltYXRlPgogICAgICA8YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InNjYWxlIiBhZGRpdGl2ZT0ic3VtIiBmcm9tPSIwLjgiIHRvPSIxIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgYmVnaW49IjAuOHMiIGR1cj0iMS42cyIgdmFsdWVzPSIxOzAuODswLjg7MTsxIiBrZXlUaW1lcz0iMDswLjE7MC4yOzAuNDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+CiAgICA8L2NpcmNsZT4KICAgIDxjaXJjbGUgY3g9IjAiIGN5PSIwIiByPSIxMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjUgNTApIiBmaWxsPSJub25lIiBzdHJva2U9InJnYmEoMCwwLDAsLjUpIiBzdHJva2Utd2lkdGg9IjMlIiBjbGFzcz0ic3EiPgogICAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdHJva2UiIGZyb209InJnYmEoMCwwLDAsMCkiIHRvPSJyZ2JhKDAsMCwwLC41KSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMS42cyIgYmVnaW49IjEuMnMiIHZhbHVlcz0icmdiYSgwLDAsMCwuNSk7cmdiYSgwLDAsMCwwKTtyZ2JhKDAsMCwwLDApO3JnYmEoMCwwLDAsLjUpO3JnYmEoMCwwLDAsLjUpIiBrZXlUaW1lcz0iMDswLjE7MC4yOzAuNDsxIj48L2FuaW1hdGU+CiAgICAgIDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0ic2NhbGUiIGFkZGl0aXZlPSJzdW0iIGZyb209IjAuOCIgdG89IjEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBiZWdpbj0iMS4ycyIgZHVyPSIxLjZzIiB2YWx1ZXM9IjE7MC44OzAuODsxOzEiIGtleVRpbWVzPSIwOzAuMTswLjI7MC40OzEiPjwvYW5pbWF0ZVRyYW5zZm9ybT4KICAgIDwvY2lyY2xlPgo8L3N2Zz4K","base64"),w=n("PHN2ZyBjbGFzcz0iZnAtbG9hZGluZy1yb3VuZGVkLWZpbGwiIHdpZHRoPScxMTJweCcgaGVpZ2h0PScxMTJweCcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPgogICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9Ijc2IiBoZWlnaHQ9Ijc2IiBmaWxsPSJyZ2JhKDAsMCwwLDApIiBjbGFzcz0iYmsiPjwvcmVjdD4KICAgIDxjaXJjbGUgY3g9IjAiIGN5PSIwIiByPSIxMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjUgMjUpIiBmaWxsPSJyZ2JhKDAsMCwwLC41KSIgY2xhc3M9InNxIj4KICAgICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0iZmlsbCIgZnJvbT0icmdiYSgwLDAsMCwwKSIgdG89InJnYmEoMCwwLDAsLjUpIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgZHVyPSIxLjZzIiBiZWdpbj0iMC4wcyIgdmFsdWVzPSJyZ2JhKDAsMCwwLC41KTtyZ2JhKDAsMCwwLDApO3JnYmEoMCwwLDAsMCk7cmdiYSgwLDAsMCwuNSk7cmdiYSgwLDAsMCwuNSkiIGtleVRpbWVzPSIwOzAuMTswLjI7MC40OzEiPjwvYW5pbWF0ZT4KICAgICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJzY2FsZSIgYWRkaXRpdmU9InN1bSIgZnJvbT0iMC44IiB0bz0iMSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGJlZ2luPSIwLjBzIiBkdXI9IjEuNnMiIHZhbHVlcz0iMTswLjg7MC44OzE7MSIga2V5VGltZXM9IjA7MC4xOzAuMjswLjQ7MSI+PC9hbmltYXRlVHJhbnNmb3JtPgogICAgPC9jaXJjbGU+CiAgICA8Y2lyY2xlIGN4PSIwIiBjeT0iMCIgcj0iMTAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUwIDI1KSIgZmlsbD0icmdiYSgwLDAsMCwuNSkiIGNsYXNzPSJzcSI+CiAgICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9ImZpbGwiIGZyb209InJnYmEoMCwwLDAsMCkiIHRvPSJyZ2JhKDAsMCwwLC41KSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMS42cyIgYmVnaW49IjAuNHMiIHZhbHVlcz0icmdiYSgwLDAsMCwuNSk7cmdiYSgwLDAsMCwwKTtyZ2JhKDAsMCwwLDApO3JnYmEoMCwwLDAsLjUpO3JnYmEoMCwwLDAsLjUpIiBrZXlUaW1lcz0iMDswLjE7MC4yOzAuNDsxIj48L2FuaW1hdGU+CiAgICAgIDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0ic2NhbGUiIGFkZGl0aXZlPSJzdW0iIGZyb209IjAuOCIgdG89IjEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBiZWdpbj0iMC40cyIgZHVyPSIxLjZzIiB2YWx1ZXM9IjE7MC44OzAuODsxOzEiIGtleVRpbWVzPSIwOzAuMTswLjI7MC40OzEiPjwvYW5pbWF0ZVRyYW5zZm9ybT4KICAgIDwvY2lyY2xlPgogICAgPGNpcmNsZSBjeD0iMCIgY3k9IjAiIHI9IjEwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MCA1MCkiIGZpbGw9InJnYmEoMCwwLDAsLjUpIiBjbGFzcz0ic3EiPgogICAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJmaWxsIiBmcm9tPSJyZ2JhKDAsMCwwLDApIiB0bz0icmdiYSgwLDAsMCwuNSkiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjEuNnMiIGJlZ2luPSIwLjhzIiB2YWx1ZXM9InJnYmEoMCwwLDAsLjUpO3JnYmEoMCwwLDAsMCk7cmdiYSgwLDAsMCwwKTtyZ2JhKDAsMCwwLC41KTtyZ2JhKDAsMCwwLC41KSIga2V5VGltZXM9IjA7MC4xOzAuMjswLjQ7MSI+PC9hbmltYXRlPgogICAgICA8YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InNjYWxlIiBhZGRpdGl2ZT0ic3VtIiBmcm9tPSIwLjgiIHRvPSIxIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgYmVnaW49IjAuOHMiIGR1cj0iMS42cyIgdmFsdWVzPSIxOzAuODswLjg7MTsxIiBrZXlUaW1lcz0iMDswLjE7MC4yOzAuNDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+CiAgICA8L2NpcmNsZT4KICAgIDxjaXJjbGUgY3g9IjAiIGN5PSIwIiByPSIxMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjUgNTApIiBmaWxsPSJyZ2JhKDAsMCwwLC41KSIgY2xhc3M9InNxIj4KICAgICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0iZmlsbCIgZnJvbT0icmdiYSgwLDAsMCwwKSIgdG89InJnYmEoMCwwLDAsLjUpIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgZHVyPSIxLjZzIiBiZWdpbj0iMS4ycyIgdmFsdWVzPSJyZ2JhKDAsMCwwLC41KTtyZ2JhKDAsMCwwLDApO3JnYmEoMCwwLDAsMCk7cmdiYSgwLDAsMCwuNSk7cmdiYSgwLDAsMCwuNSkiIGtleVRpbWVzPSIwOzAuMTswLjI7MC40OzEiPjwvYW5pbWF0ZT4KICAgICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJzY2FsZSIgYWRkaXRpdmU9InN1bSIgZnJvbT0iMC44IiB0bz0iMSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGJlZ2luPSIxLjJzIiBkdXI9IjEuNnMiIHZhbHVlcz0iMTswLjg7MC44OzE7MSIga2V5VGltZXM9IjA7MC4xOzAuMjswLjQ7MSI+PC9hbmltYXRlVHJhbnNmb3JtPgogICAgPC9jaXJjbGU+Cjwvc3ZnPgo=","base64"),b=n("PHN2ZyBjbGFzcz0iZnAtbG9hZGluZy1zaGFycC1maWxsIiB3aWR0aD0nMTEycHgnIGhlaWdodD0nMTEycHgnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4KICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNzYiIGhlaWdodD0iNzYiIGZpbGw9InJnYmEoMCwwLDAsMCkiIGNsYXNzPSJiayI+PC9yZWN0PgogIDxyZWN0IHg9Ii0xMCIgeT0iLTEwIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI1IDI1KSIgZmlsbD0icmdiYSgwLDAsMCwuNSkiIGNsYXNzPSJzcSI+CiAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJmaWxsIiBmcm9tPSJyZ2JhKDAsMCwwLDApIiB0bz0icmdiYSgwLDAsMCwuNSkiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjEuNnMiIGJlZ2luPSIwLjBzIiB2YWx1ZXM9InJnYmEoMCwwLDAsLjUpO3JnYmEoMCwwLDAsMCk7cmdiYSgwLDAsMCwwKTtyZ2JhKDAsMCwwLC41KTtyZ2JhKDAsMCwwLC41KSIga2V5VGltZXM9IjA7MC4xOzAuMjswLjQ7MSI+PC9hbmltYXRlPgogICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJzY2FsZSIgYWRkaXRpdmU9InN1bSIgZnJvbT0iMC44IiB0bz0iMSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGJlZ2luPSIwLjBzIiBkdXI9IjEuNnMiIHZhbHVlcz0iMTswLjg7MC44OzE7MSIga2V5VGltZXM9IjA7MC4xOzAuMjswLjQ7MSI+PC9hbmltYXRlVHJhbnNmb3JtPgogIDwvcmVjdD4KICA8cmVjdCB4PSItMTAiIHk9Ii0xMCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MCAyNSkiIGZpbGw9InJnYmEoMCwwLDAsLjUpIiBjbGFzcz0ic3EiPgogICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0iZmlsbCIgZnJvbT0icmdiYSgwLDAsMCwwKSIgdG89InJnYmEoMCwwLDAsLjUpIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgZHVyPSIxLjZzIiBiZWdpbj0iMC40cyIgdmFsdWVzPSJyZ2JhKDAsMCwwLC41KTtyZ2JhKDAsMCwwLDApO3JnYmEoMCwwLDAsMCk7cmdiYSgwLDAsMCwuNSk7cmdiYSgwLDAsMCwuNSkiIGtleVRpbWVzPSIwOzAuMTswLjI7MC40OzEiPjwvYW5pbWF0ZT4KICAgIDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0ic2NhbGUiIGFkZGl0aXZlPSJzdW0iIGZyb209IjAuOCIgdG89IjEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBiZWdpbj0iMC40cyIgZHVyPSIxLjZzIiB2YWx1ZXM9IjE7MC44OzAuODsxOzEiIGtleVRpbWVzPSIwOzAuMTswLjI7MC40OzEiPjwvYW5pbWF0ZVRyYW5zZm9ybT4KICA8L3JlY3Q+CiAgPHJlY3QgeD0iLTEwIiB5PSItMTAiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTAgNTApIiBmaWxsPSJyZ2JhKDAsMCwwLC41KSIgY2xhc3M9InNxIj4KICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9ImZpbGwiIGZyb209InJnYmEoMCwwLDAsMCkiIHRvPSJyZ2JhKDAsMCwwLC41KSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMS42cyIgYmVnaW49IjAuOHMiIHZhbHVlcz0icmdiYSgwLDAsMCwuNSk7cmdiYSgwLDAsMCwwKTtyZ2JhKDAsMCwwLDApO3JnYmEoMCwwLDAsLjUpO3JnYmEoMCwwLDAsLjUpIiBrZXlUaW1lcz0iMDswLjE7MC4yOzAuNDsxIj48L2FuaW1hdGU+CiAgICA8YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InNjYWxlIiBhZGRpdGl2ZT0ic3VtIiBmcm9tPSIwLjgiIHRvPSIxIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgYmVnaW49IjAuOHMiIGR1cj0iMS42cyIgdmFsdWVzPSIxOzAuODswLjg7MTsxIiBrZXlUaW1lcz0iMDswLjE7MC4yOzAuNDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+CiAgPC9yZWN0PgogIDxyZWN0IHg9Ii0xMCIgeT0iLTEwIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI1IDUwKSIgZmlsbD0icmdiYSgwLDAsMCwuNSkiIGNsYXNzPSJzcSI+CiAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJmaWxsIiBmcm9tPSJyZ2JhKDAsMCwwLDApIiB0bz0icmdiYSgwLDAsMCwuNSkiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjEuNnMiIGJlZ2luPSIxLjJzIiB2YWx1ZXM9InJnYmEoMCwwLDAsLjUpO3JnYmEoMCwwLDAsMCk7cmdiYSgwLDAsMCwwKTtyZ2JhKDAsMCwwLC41KTtyZ2JhKDAsMCwwLC41KSIga2V5VGltZXM9IjA7MC4xOzAuMjswLjQ7MSI+PC9hbmltYXRlPgogICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJzY2FsZSIgYWRkaXRpdmU9InN1bSIgZnJvbT0iMC44IiB0bz0iMSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGJlZ2luPSIxLjJzIiBkdXI9IjEuNnMiIHZhbHVlcz0iMTswLjg7MC44OzE7MSIga2V5VGltZXM9IjA7MC4xOzAuMjswLjQ7MSI+PC9hbmltYXRlVHJhbnNmb3JtPgogIDwvcmVjdD4KPC9zdmc+Cg==","base64"),I=n("PHN2ZyBjbGFzcz0iZnAtbG9hZGluZy1zaGFycC1vdXRsaW5lIiB3aWR0aD0nMTEycHgnIGhlaWdodD0nMTEycHgnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4KICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNzYiIGhlaWdodD0iNzYiIGZpbGw9InJnYmEoMCwwLDAsMCkiIGNsYXNzPSJiayI+PC9yZWN0PgogIDxyZWN0IHg9Ii05IiB5PSItOSIgd2lkdGg9IjE4IiBoZWlnaHQ9IjE4IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNSAyNSkiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmdiYSgwLDAsMCwuNSkiIHN0cm9rZS13aWR0aD0iMyUiIGNsYXNzPSJzcSI+CiAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdHJva2UiIGZyb209InJnYmEoMCwwLDAsMCkiIHRvPSJyZ2JhKDAsMCwwLC41KSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMS42cyIgYmVnaW49IjAuMHMiIHZhbHVlcz0icmdiYSgwLDAsMCwuNSk7cmdiYSgwLDAsMCwwKTtyZ2JhKDAsMCwwLDApO3JnYmEoMCwwLDAsLjUpO3JnYmEoMCwwLDAsLjUpIiBrZXlUaW1lcz0iMDswLjE7MC4yOzAuNDsxIj48L2FuaW1hdGU+CiAgICAgIDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0ic2NhbGUiIGFkZGl0aXZlPSJzdW0iIGZyb209IjAuOCIgdG89IjEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBiZWdpbj0iMC4wcyIgZHVyPSIxLjZzIiB2YWx1ZXM9IjE7MC44OzAuODsxOzEiIGtleVRpbWVzPSIwOzAuMTswLjI7MC40OzEiPjwvYW5pbWF0ZVRyYW5zZm9ybT4KICA8L3JlY3Q+CiAgPHJlY3QgeD0iLTkiIHk9Ii05IiB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUwIDI1KSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZ2JhKDAsMCwwLC41KSIgc3Ryb2tlLXdpZHRoPSIzJSIgY2xhc3M9InNxIj4KICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9InN0cm9rZSIgZnJvbT0icmdiYSgwLDAsMCwwKSIgdG89InJnYmEoMCwwLDAsLjUpIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgZHVyPSIxLjZzIiBiZWdpbj0iMC40cyIgdmFsdWVzPSJyZ2JhKDAsMCwwLC41KTtyZ2JhKDAsMCwwLDApO3JnYmEoMCwwLDAsMCk7cmdiYSgwLDAsMCwuNSk7cmdiYSgwLDAsMCwuNSkiIGtleVRpbWVzPSIwOzAuMTswLjI7MC40OzEiPjwvYW5pbWF0ZT4KICAgICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJzY2FsZSIgYWRkaXRpdmU9InN1bSIgZnJvbT0iMC44IiB0bz0iMSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGJlZ2luPSIwLjRzIiBkdXI9IjEuNnMiIHZhbHVlcz0iMTswLjg7MC44OzE7MSIga2V5VGltZXM9IjA7MC4xOzAuMjswLjQ7MSI+PC9hbmltYXRlVHJhbnNmb3JtPgogIDwvcmVjdD4KICA8cmVjdCB4PSItOSIgeT0iLTkiIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTAgNTApIiBmaWxsPSJub25lIiBzdHJva2U9InJnYmEoMCwwLDAsLjUpIiBzdHJva2Utd2lkdGg9IjMlIiBjbGFzcz0ic3EiPgogICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ic3Ryb2tlIiBmcm9tPSJyZ2JhKDAsMCwwLDApIiB0bz0icmdiYSgwLDAsMCwuNSkiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjEuNnMiIGJlZ2luPSIwLjhzIiB2YWx1ZXM9InJnYmEoMCwwLDAsLjUpO3JnYmEoMCwwLDAsMCk7cmdiYSgwLDAsMCwwKTtyZ2JhKDAsMCwwLC41KTtyZ2JhKDAsMCwwLC41KSIga2V5VGltZXM9IjA7MC4xOzAuMjswLjQ7MSI+PC9hbmltYXRlPgogICAgICA8YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InNjYWxlIiBhZGRpdGl2ZT0ic3VtIiBmcm9tPSIwLjgiIHRvPSIxIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgYmVnaW49IjAuOHMiIGR1cj0iMS42cyIgdmFsdWVzPSIxOzAuODswLjg7MTsxIiBrZXlUaW1lcz0iMDswLjE7MC4yOzAuNDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+CiAgPC9yZWN0PgogIDxyZWN0IHg9Ii05IiB5PSItOSIgd2lkdGg9IjE4IiBoZWlnaHQ9IjE4IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNSA1MCkiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmdiYSgwLDAsMCwuNSkiIHN0cm9rZS13aWR0aD0iMyUiIGNsYXNzPSJzcSI+CiAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdHJva2UiIGZyb209InJnYmEoMCwwLDAsMCkiIHRvPSJyZ2JhKDAsMCwwLC41KSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMS42cyIgYmVnaW49IjEuMnMiIHZhbHVlcz0icmdiYSgwLDAsMCwuNSk7cmdiYSgwLDAsMCwwKTtyZ2JhKDAsMCwwLDApO3JnYmEoMCwwLDAsLjUpO3JnYmEoMCwwLDAsLjUpIiBrZXlUaW1lcz0iMDswLjE7MC4yOzAuNDsxIj48L2FuaW1hdGU+CiAgICAgIDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0ic2NhbGUiIGFkZGl0aXZlPSJzdW0iIGZyb209IjAuOCIgdG89IjEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBiZWdpbj0iMS4ycyIgZHVyPSIxLjZzIiB2YWx1ZXM9IjE7MC44OzAuODsxOzEiIGtleVRpbWVzPSIwOzAuMTswLjI7MC40OzEiPjwvYW5pbWF0ZVRyYW5zZm9ybT4KICA8L3JlY3Q+Cjwvc3ZnPgo=","base64");
8
+ o(function(e,t){function i(e){return a.find(".fp-"+e,t)[0]}function C(e){a.css(Z,"padding-top",100*e+"%"),N.inlineBlock||a.height(a.find("object",t)[0],a.height(t))}function M(e){e?(a.addClass(t,"is-mouseover"),a.removeClass(t,"is-mouseout")):(a.addClass(t,"is-mouseout"),a.removeClass(t,"is-mouseover"))}a.find(".fp-filters").forEach(a.removeNode);try{var A;document.body.appendChild(A=a.createElement("div",{},n("PHN2ZyBjbGFzcz0iZnAtZmlsdGVycyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMCAwIj4KICA8ZGVmcz4KICAgIDxmaWx0ZXIgaWQ9ImYxIiB4PSItMjAlIiB5PSItMjAlIiB3aWR0aD0iMjAwJSIgaGVpZ2h0PSIyMDAlIj4KICAgICAgPGZlT2Zmc2V0IHJlc3VsdD0ib2ZmT3V0IiBpbj0iU291cmNlQWxwaGEiIGR4PSIwIiBkeT0iMCIgLz4KICAgICAgPGZlQ29sb3JNYXRyaXggcmVzdWx0PSJtYXRyaXhPdXQiIGluPSJvZmZPdXQiIHR5cGU9Im1hdHJpeCIKICAgICAgdmFsdWVzPSIwLjMgMCAwIDAgMCAwIDAuMyAwIDAgMCAwIDAgMC4zIDAgMCAwIDAgMCAwLjQgMCIgLz4KICAgICAgPGZlR2F1c3NpYW5CbHVyIHJlc3VsdD0iYmx1ck91dCIgaW49Im1hdHJpeE91dCIgc3RkRGV2aWF0aW9uPSI0IiAvPgogICAgICA8ZmVCbGVuZCBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJibHVyT3V0IiBtb2RlPSJub3JtYWwiIC8+CiAgICA8L2ZpbHRlcj4KICA8L2RlZnM+Cjwvc3ZnPgo=","base64"))),a.css(A,{width:0,height:0,overflow:"hidden",position:"absolute",margin:0,padding:0})}catch(S){}var D,E=e.conf,N=o.support;a.find(".fp-ratio,.fp-ui",t).forEach(a.removeNode),a.addClass(t,"flowplayer"),t.appendChild(a.createElement("div",{className:"fp-ratio"}));var j=a.createElement("div",{className:"fp-ui"},' <div class="fp-waiting"> {{ LOADING_SHARP_OUTLINE }} {{ LOADING_SHARP_FILL }} {{ LOADING_ROUNDED_FILL }} {{ LOADING_ROUNDED_OUTLINE }} </div> <div class="fp-header"> <a class="fp-share fp-icon"></a> <a class="fp-fullscreen fp-icon"></a> <a class="fp-unload fp-icon"></a> </div> <p class="fp-speed-flash"></p> <div class="fp-play fp-visible"> <a class="fp-icon fp-playbtn"></a> {{ PLAY_ROUNDED_FILL }} {{ PLAY_ROUNDED_OUTLINE }} {{ PLAY_SHARP_FILL }} {{ PLAY_SHARP_OUTLINE }} </div> <div class="fp-pause"> <a class="fp-icon fp-playbtn"></a> {{ PAUSE_SHARP_OUTLINE }} {{ PAUSE_SHARP_FILL }} {{ PAUSE_ROUNDED_OUTLINE }} {{ PAUSE_ROUNDED_FILL }} </div> <div class="fp-controls"> <a class="fp-icon fp-playbtn"></a> <span class="fp-elapsed">00:00</span> <div class="fp-timeline fp-bar"> <div class="fp-buffer"></div> <span class="fp-timestamp"></span> <div class="fp-progress fp-color"></div> </div> <span class="fp-duration"></span> <span class="fp-remaining"></span> <div class="fp-volume"> <a class="fp-icon fp-volumebtn"></a> <div class="fp-volumebar fp-bar-slider"> <em></em><em></em><em></em><em></em><em></em><em></em><em></em> </div> </div> <strong class="fp-speed fp-hidden"></strong> </div>'.replace("{{ PAUSE_ROUNDED_FILL }}",g).replace("{{ PAUSE_ROUNDED_OUTLINE }}",h).replace("{{ PAUSE_SHARP_FILL }}",m).replace("{{ PAUSE_SHARP_OUTLINE }}",v).replace("{{ PLAY_SHARP_OUTLINE }}",p).replace("{{ PLAY_SHARP_FILL }}",d).replace("{{ PLAY_ROUNDED_OUTLINE }}",c).replace("{{ PLAY_ROUNDED_FILL }}",f).replace("{{ LOADING_ROUNDED_OUTLINE }}",y).replace("{{ LOADING_ROUNDED_FILL }}",w).replace("{{ LOADING_SHARP_FILL }}",b).replace("{{ LOADING_SHARP_OUTLINE }}",I).replace(/url\(#/g,"url("+window.location.href.replace(window.location.hash,"").replace(/\#$/g,"")+"#"));t.appendChild(j);var L=i("buffer"),x=i("waiting"),T=i("elapsed"),Z=i("ratio"),P=i("speed-flash"),Y=i("duration"),k=i("remaining"),z=i("timestamp"),G=a.css(Z,"padding-top"),O=i("play"),R=i("pause"),W=i("timeline"),U=l(W,e.rtl),J=i("fullscreen"),B=i("volumebar"),V=u(B,{rtl:e.rtl}),H=a.hasClass(t,"no-toggle");U.disableAnimation(a.hasClass(t,"is-touch")),e.sliders=e.sliders||{},e.sliders.timeline=U,e.sliders.volume=V;var F=[];N.svg||a.html(x,"<p>loading &hellip;</p>"),E.ratio&&C(E.ratio);try{E.fullscreen||a.removeNode(J)}catch(S){a.removeNode(J)}e.on("dvrwindow",function(){U.disable(!1)}),e.on("ready",function(e,n,i){var o=n.video.duration;U.disable(n.disabled||!o),E.adaptiveRatio&&!isNaN(i.height/i.width)&&C(i.height/i.width,!0),a.html([Y,k],n.live?"Live":r(o)),a.toggleClass(t,"is-long",o>=3600),V.slide(n.volumeLevel),"flash"===n.engine.engineName?U.disableAnimation(!0,!0):U.disableAnimation(!1),a.find(".fp-title",j).forEach(a.removeNode),i.title&&a.prepend(j,a.createElement("div",{className:"fp-message fp-title"},i.title)),a.toggleClass(t,"has-title",!!i.title)}).on("unload",function(){G||E.splash||a.css(Z,"paddingTop",""),U.slide(0),a.addClass(O,"fp-visible")}).on("buffer",function(){var t=e.video,n=t.buffer/t.duration;!t.seekable&&N.seekable&&U.max(e.conf.live?1/0:n),1>n?a.css(L,"width",100*n+"%"):a.css(L,"width","100%")}).on("speed",function(e,t,n){t.video.time&&(a.text(P,n+"x"),a.addClass(P,"fp-shown"),F=F.filter(function(e){return clearTimeout(e),!1}),F.push(setTimeout(function(){a.addClass(P,"fp-hilite"),F.push(setTimeout(function(){a.removeClass(P,"fp-hilite"),F.push(setTimeout(function(){a.removeClass(P,"fp-shown")},300))},1e3))})))}).on("buffered",function(){a.css(L,"width","100%"),U.max(1)}).on("progress seek",function(n,i,o){var s=e.video.duration,l=e.video.seekOffset||0;o=o||e.video.time;var u=(o-l)/(s-l);U.dragging||U.slide(u,e.seeking?0:250),a.toggleClass(t,"is-live-position",s-o<E.livePositionOffset),a.html(T,r(o)),a.html(k,r(s-o,!0))}).on("finish resume seek",function(e){a.toggleClass(t,"is-finished","finish"==e.type)}).on("resume",function(){a.addClass(O,"fp-visible"),setTimeout(function(){a.removeClass(O,"fp-visible")},300)}).on("pause",function(){a.addClass(R,"fp-visible"),setTimeout(function(){a.removeClass(R,"fp-visible")},300)}).on("stop",function(){a.html(T,r(0)),U.slide(0,100)}).on("finish",function(){a.html(T,r(e.video.duration)),U.slide(1,100),a.removeClass(t,"is-seeking")}).on("beforeseek",function(){}).on("volume",function(){V.slide(e.volumeLevel)}).on("disable",function(){var n=e.disabled;U.disable(n),V.disable(n),a.toggleClass(t,"is-disabled",e.disabled)}).on("mute",function(e,n,i){a.toggleClass(t,"is-muted",i)}).on("error",function(e,n,i){if(a.removeClass(t,"is-loading"),a.removeClass(t,"is-seeking"),a.addClass(t,"is-error"),i){i.message=E.errors[i.code],n.error=!0;var r=n.message((n.engine&&n.engine.engineName||"html5")+": "+i.message);a.removeClass(t,"is-mouseover"),n.one("load progress",function(){r()})}}),s.on(t,"mouseenter mouseleave",function(n){if(!H){var i,r="mouseover"==n.type;if(M(r),r){var o=function(){M(!0),i=new Date};e.on("pause.x volume.x",o),s.on(t,"mousemove.x",o),D=setInterval(function(){new Date-i>E.mouseoutTimeout&&(M(!1),i=new Date)},100)}else s.off(t,"mousemove.x"),e.off("pause.x volume.x"),clearInterval(D)}}),s.on(t,"mouseleave",function(){(U.dragging||V.dragging)&&(a.addClass(t,"is-mouseover"),a.removeClass(t,"is-mouseout"))}),s.on(t,"click.player",function(t){return e.disabled?void 0:a.hasClass(t.target,"fp-ui")||a.hasClass(t.target,"fp-engine")||t.flash||a.hasParent(t.target,".fp-play,.fp-pause")?(t.preventDefault&&t.preventDefault(),e.toggle()):void 0}),s.on(t,"mousemove",".fp-timeline",function(t){var n=t.pageX||t.clientX,i=n-a.offset(W).left,o=i/a.width(W),s=(e.rtl?1-o:o)*e.video.duration;if(!(0>o)){a.html(z,r(s));var l=i-a.width(z)/2;0>l&&(l=0),l>a.width(W)-a.width(z)&&(l=!1),l!==!1?a.css(z,{left:l+"px",right:"auto"}):a.css(z,{left:"auto",right:"0px"})}}),s.on(t,"contextmenu",function(n){var i=window;if(!a.hasClass(t,"is-flash-disabled")){var r=a.find(".fp-context-menu",t)[0];r&&(n.preventDefault(),e.showMenu(r,{left:n.clientX-i.scrollX,top:n.clientY-i.scrollY}),s.on(t,"click",".fp-context-menu",function(e){e.stopPropagation()}))}}),e.on("flashdisabled",function(n,i,r){a.addClass(t,"is-flash-disabled");var o;r!==!1&&(o=e.message("Seems something is blocking Adobe Flash from running")),e.one("ready progress",function(){a.removeClass(t,"is-flash-disabled"),o&&o()})}),E.poster&&a.css(t,"background-image","url("+E.poster+")");var X=a.css(t,"background-color"),_="none"!=a.css(t,"background-image")||X&&"rgba(0, 0, 0, 0)"!=X&&"transparent"!=X;if(_&&!E.splash){E.poster||(E.poster=!0);var K=function(){a.addClass(t,"is-poster"),a.addClass(O,"fp-visible"),e.poster=!0,e.one(E.autoplay?"progress seek":"resume seek",function(){a.removeClass(t,"is-poster"),a.removeClass(O,"fp-visible"),e.poster=!1})};e.on("stop",function(){K()}),e.on("ready",function(e,t,n){n.index||n.autoplay||K()})}"string"==typeof E.splash&&a.css(t,"background-image","url('"+E.splash+"')"),!_&&e.forcedSplash&&a.css(t,"background-color","#555"),s.on(t,"click",".fp-toggle, .fp-play, .fp-playbtn",function(){e.disabled||e.toggle()}),s.on(t,"click",".fp-volumebtn",function(){e.mute()}),s.on(t,"click",".fp-fullscreen",function(){e.fullscreen()}),s.on(t,"click",".fp-unload",function(){e.unload()}),s.on(W,"slide",function(t){e.seeking=!0,e.seekTo(10*t)}),s.on(B,"slide",function(t){e.volume(t)}),s.on(t,"click",".fp-duration,.fp-remaining",function(){return e.dvr?e.seekTo(10):void a.toggleClass(t,"is-inverted")}),M(H),e.on("shutdown",function(){s.off(W),s.off(B)})}),t.exports.format=r}).call(this,e("buffer").Buffer)},{"../common":1,"../flowplayer":28,"./ui/bar-slider":25,"./ui/slider":26,bean:31,buffer:32}],25:[function(e,t,n){function i(e,t){function n(t){var n=t.pageX||t.clientX,i=o.offset(e),r=o.width(e);!n&&t.originalEvent&&t.originalEvent.touches&&t.originalEvent.touches.length&&(n=t.originalEvent.touches[0].pageX);var a=n-i.left;a=Math.max(0,Math.min(r,a));var s=a/r;return l&&(s=1-s),s}t=t||{};var i=t.activeClass||"fp-color",a=t.inactiveClass||"fp-grey",s=t.childSelector||"em",l=!!t.rtl,u=!1,c=o.find(s,e).length,f={unload:function(){r.off(e,".barslider")},slide:function(t,n){o.find(s,e).forEach(function(e,n){var r=t>n/c;o.toggleClass(e,i,r),o.toggleClass(e,a,!r)}),n&&r.fire(e,"slide",[t])},disable:function(e){u=e}};return r.on(e,"mousedown.sld touchstart.sld",function(t){t.preventDefault(),u||(f.slide(n(t),!0),r.on(e,"mousemove.sld touchmove.sld",function(e){e.preventDefault(),f.slide(n(e),!0)}),r.one(document,"mouseup.sld touchup.sld",function(){r.off(e,"mousemove.sld touchmove.sld")}))}),f}var r=e("bean"),o=e("../../common");t.exports=i},{"../../common":1,bean:31}],26:[function(e,t,n){"use strict";var i=e("bean"),r=e("../../common"),o=function(e,t){var n;return function(){n||(e.apply(this,arguments),n=1,setTimeout(function(){n=0},t))}},a=function(e,t){var n,a,s,l,u,c,f,d,p=r.lastChild(e),h=!1,g=function(){a=r.offset(e),s=r.width(e),l=r.height(e),c=u?l:s,d=w(f)},m=function(t){n||t==b.value||f&&!(f>t)||(i.fire(e,"slide",[t]),b.value=t)},v=function(e){var n=e.pageX||e.clientX;!n&&e.originalEvent&&e.originalEvent.touches&&e.originalEvent.touches.length&&(n=e.originalEvent.touches[0].pageX);var i=u?e.pageY-a.top:n-a.left;i=Math.max(0,Math.min(d||c,i));var r=i/c;return u&&(r=1-r),t&&(r=1-r),y(r,0,!0)},y=function(e,t){void 0===t&&(t=0),e>1&&(e=1);var n=Math.round(1e3*e)/10+"%";return(!f||f>=e)&&(h?r.removeClass(p,"animated"):(r.addClass(p,"animated"),r.css(p,"transition-duration",(t||0)+"ms")),r.css(p,"width",n)),e},w=function(e){return Math.max(0,Math.min(c,u?(1-e)*l:e*s))},b={max:function(e){f=e},disable:function(e){n=e},slide:function(e,t,n){g(),n&&m(e),y(e,t)},disableAnimation:function(t,n){h=t!==!1,r.toggleClass(e,"no-animation",!!n)}};return g(),i.on(e,"mousedown.sld touchstart",function(t){if(t.preventDefault(),!n){var a=o(m,100);g(),b.dragging=!0,r.addClass(e,"is-dragging"),m(v(t)),i.on(document,"mousemove.sld touchmove.sld",function(e){e.preventDefault(),a(v(e))}),i.one(document,"mouseup touchend",function(){b.dragging=!1,r.removeClass(e,"is-dragging"),i.off(document,"mousemove.sld touchmove.sld")})}}),b};t.exports=a},{"../../common":1,bean:31}],27:[function(e,t,n){function i(e){var t=document.createElement("textarea");t.value=e,t.style.opacity=0,t.style.position="absolute",document.body.appendChild(t),t.select();var n=document.execCommand("copy");if(document.body.removeChild(t),!n)throw new Error("Unsuccessfull")}t.exports=function(e,t,n){try{i(e),t()}catch(r){n(r)}}},{}],28:[function(e,t,n){"use strict";function i(e,t,n){t&&t.embed&&(t.embed=r({},w.defaults.embed,t.embed));var i,s,l=e,p=r({},w.defaults,w.conf,t),g={},m=new I;u.addClass(l,"is-loading"),u.toggleClass(l,"no-flex",!w.support.flex),u.toggleClass(l,"no-svg",!w.support.svg);try{g=h?window.localStorage:g}catch(v){}if(p.aspectRatio&&"string"==typeof p.aspectRatio){var y=p.aspectRatio.split(/[:\/]/);p.ratio=y[1]/y[0]}var C=l.currentStyle&&"rtl"===l.currentStyle.direction||window.getComputedStyle&&null!==window.getComputedStyle(l,null)&&"rtl"===window.getComputedStyle(l,null).getPropertyValue("direction");C&&u.addClass(l,"is-rtl");var M={conf:p,currentSpeed:1,volumeLevel:p.muted?0:"undefined"==typeof p.volume?1*g.volume:p.volume,video:{},disabled:!1,finished:!1,loading:!1,muted:"true"==g.muted||p.muted,paused:!1,playing:!1,ready:!1,splash:!1,rtl:C,hijack:function(e){try{M.engine.suspendEngine()}catch(t){}M.hijacked=e},release:function(){try{M.engine.resumeEngine()}catch(e){}M.hijacked=!1},load:function(e,t){if(!M.error&&!M.loading){M.video={},M.finished=!1,e=e||p.clip,e=r({},m.resolve(e,p.clip.sources)),(M.playing||M.engine)&&(e.autoplay=!0);var n=A(e);if(!n)return setTimeout(function(){M.trigger("error",[M,{code:w.support.flashVideo?5:10}])})&&M;if(!n.engineName)throw new Error("engineName property of factory should be exposed");if(M.engine&&n.engineName===M.engine.engineName||(M.ready=!1,M.engine&&(M.engine.unload(),M.conf.autoplay=!0),s=M.engine=n(M,l),M.one("ready",function(){setTimeout(function(){M.muted?M.mute(!0,!0):s.volume(M.volumeLevel)})})),r(e,s.pick(e.sources.filter(function(e){return e.engine?e.engine===s.engineName:!0}))),e.src){var i=M.trigger("load",[M,e,s],!0);i.defaultPrevented?M.loading=!1:(s.load(e),o(e)&&(t=e),t&&M.one("ready",t))}return M}},pause:function(e){return M.hijacked?M.hijacked.pause(e)|M:(!M.ready||M.seeking||M.loading||(s.pause(),M.one("pause",e)),M)},resume:function(){var e=M.trigger("beforeresume",[M],!0);if(!e.defaultPrevented)return M.hijacked?M.hijacked.resume()|M:(M.ready&&M.paused&&(s.resume(),M.finished&&(M.trigger("resume",[M]),M.finished=!1)),M)},toggle:function(){return M.ready?M.paused?M.resume():M.pause():M.load()},seek:function(e,t){if("boolean"==typeof e){var n=.1*M.video.duration;e=M.video.time+(e?n:-n),e=Math.min(Math.max(e,0),M.video.duration-.1)}if(M.hijacked)return M.hijacked.seek(e,t)|M;if(M.ready){i=e;var r=M.trigger("beforeseek",[M,e],!0);r.defaultPrevented?(M.seeking=!1,u.toggleClass(l,"is-seeking",M.seeking)):(s.seek(e),o(t)&&M.one("seek",t))}return M},seekTo:function(e,t){return void 0===e?M.seek(i,t):void 0!==M.video.seekOffset?M.seek(M.video.seekOffset+.1*(M.video.duration-M.video.seekOffset)*e,t):M.seek(.1*M.video.duration*e,t)},mute:function(e,t){return void 0===e&&(e=!M.muted),t||(g.muted=M.muted=e,g.volume=isNaN(g.volume)?p.volume:g.volume),M.volume(e?0:g.volume,!0),M.trigger("mute",[M,e]),M},volume:function(e,t){return M.ready&&(e=Math.min(Math.max(e,0),1),t||(g.volume=e),s.volume(e)),M},speed:function(e,t){return M.ready&&("boolean"==typeof e&&(e=p.speeds[p.speeds.indexOf(M.currentSpeed)+(e?1:-1)]||M.currentSpeed),s.speed(e),t&&l.one("speed",t)),M},stop:function(){return M.ready&&(M.pause(),M.seek(0,function(){M.trigger("stop",[M])})),M},unload:function(){return p.splash?(M.trigger("unload",[M]),s&&(s.unload(),M.engine=s=0)):M.stop(),M},shutdown:function(){M.unload(),M.trigger("shutdown",[M]),a.off(l),delete f[l.getAttribute("data-flowplayer-instance-id")],l.removeAttribute("data-flowplayer-instance-id")},disable:function(e){return void 0===e&&(e=!M.disabled),e!=M.disabled&&(M.disabled=e,M.trigger("disable",e)),M},registerExtension:function(e,t){e=e||[],t=t||[],"string"==typeof e&&(e=[e]),"string"==typeof t&&(t=[t]),e.forEach(function(e){M.extensions.js.push(e)}),t.forEach(function(e){M.extensions.css.push(e)})}};M.conf=r(M.conf,p),M.extensions={js:[],css:[]},w.extensions.forEach(function(e){M.registerExtension(e[0],e[1])}),c(M);var A=function(e){var t,n=w.engines;if(p.engine){var i=n.filter(function(e){return e.engineName===p.engine})[0];if(i&&e.sources.some(function(e){return e.engine&&e.engine!==i.engineName?!1:i.canPlay(e.type,M.conf)}))return i}return p.enginePreference&&(n=w.engines.filter(function(e){return p.enginePreference.indexOf(e.engineName)>-1}).sort(function(e,t){return p.enginePreference.indexOf(e.engineName)-p.enginePreference.indexOf(t.engineName)})),e.sources.some(function(e){var i=n.filter(function(t){return e.engine&&e.engine!==t.engineName?!1:t.canPlay(e.type,M.conf)}).shift();return i&&(t=i),!!i}),t};return l.getAttribute("data-flowplayer-instance-id")||(l.setAttribute("data-flowplayer-instance-id",b++),M.on("boot",function(){(p.splash||u.hasClass(l,"is-splash")||!w.support.firstframe)&&(M.forcedSplash=!p.splash&&!u.hasClass(l,"is-splash"),M.splash=p.autoplay=!0,p.splash||(p.splash=!0),u.addClass(l,"is-splash")),p.splash&&u.find("video",l).forEach(u.removeNode),(p.dvr||p.live||u.hasClass(l,"is-live"))&&(M.live=p.live=!0,M.dvr=p.dvr=!!p.dvr||u.hasClass(l,"is-dvr"),u.addClass(l,"is-live"),u.toggleClass(l,"is-dvr",M.dvr)),d.forEach(function(e){e(M,l)}),f.push(M),p.splash?M.unload():M.load(),p.disabled&&M.disable(),M.one("ready",n)}).on("load",function(e,t,n){p.splash&&u.find(".flowplayer.is-ready,.flowplayer.is-loading").forEach(function(e){var t=e.getAttribute("data-flowplayer-instance-id");if(t!==l.getAttribute("data-flowplayer-instance-id")){var n=f[Number(t)];n&&n.conf.splash&&n.unload()}}),u.addClass(l,"is-loading"),t.loading=!0,("undefined"!=typeof n.live||"undefined"!=typeof n.dvr)&&(u.toggleClass(l,"is-live",n.dvr||n.live),u.toggleClass(l,"is-dvr",!!n.dvr),t.live=n.dvr||n.live,t.dvr=!!n.dvr)}).on("ready",function(e,t,n){n.time=0,t.video=n,u.removeClass(l,"is-loading"),t.loading=!1,t.muted?t.mute(!0,!0):t.volume(t.volumeLevel);var i=t.conf.hlsFix&&/mpegurl/i.exec(n.type);u.toggleClass(l,"hls-fix",!!i)}).on("unload",function(){u.removeClass(l,"is-loading"),M.loading=!1}).on("ready unload",function(e){var t="ready"==e.type;u.toggleClass(l,"is-splash",!t),u.toggleClass(l,"is-ready",t),M.ready=t,M.splash=!t}).on("progress",function(e,t,n){t.video.time=n}).on("buffer",function(e,t,n){t.video.buffer=n}).on("speed",function(e,t,n){t.currentSpeed=n}).on("volume",function(e,t,n){t.volumeLevel=Math.round(100*n)/100,t.muted?n&&t.mute(!1):g.volume=n}).on("beforeseek seek",function(e){M.seeking="beforeseek"==e.type,u.toggleClass(l,"is-seeking",M.seeking)}).on("ready pause resume unload finish stop",function(e){M.paused=/pause|finish|unload|stop/.test(e.type),M.paused=M.paused||"ready"===e.type&&!p.autoplay&&!M.playing,M.playing=!M.paused,u.toggleClass(l,"is-paused",M.paused),u.toggleClass(l,"is-playing",M.playing),M.load.ed||M.pause()}).on("finish",function(){M.finished=!0}).on("error",function(){})),M.trigger("boot",[M,l]),M}var r=e("extend-object"),o=e("is-function"),a=e("bean"),s=e("./ext/ui/slider"),l=e("./ext/ui/bar-slider"),u=e("./common"),c=e("./ext/events"),f=[],d=[],p=window.onbeforeunload;window.onbeforeunload=function(e){return f.forEach(function(e){e.conf.splash?e.unload():e.bind("error",function(){u.find(".flowplayer.is-error .fp-message").forEach(u.removeNode)})}),p?p(e):void 0};var h=!1;try{"object"==typeof window.localStorage&&(window.localStorage.flowplayerTestStorage="test",h=!0)}catch(g){}var m=/Safari/.exec(navigator.userAgent)&&!/Chrome/.exec(navigator.userAgent),v=/(\d+\.\d+) Safari/.exec(navigator.userAgent),y=v?Number(v[1]):100,w=t.exports=function(e,t,n){if(o(e))return d.push(e);if("number"==typeof e||"undefined"==typeof e)return f[e||0];if(e.nodeType){if(null!==e.getAttribute("data-flowplayer-instance-id"))return f[e.getAttribute("data-flowplayer-instance-id")];if(!t)return;return i(e,t,n)}if(e.jquery)return w(e[0],t,n);if("string"==typeof e){var r=u.find(e)[0];return r&&w(r,t,n)}};r(w,{version:"7.0.2",engines:[],extensions:[],conf:{},set:function(e,t){"string"==typeof e?w.conf[e]=t:r(w.conf,e)},registerExtension:function(e,t){w.extensions.push([e,t])},support:{},defaults:{debug:h?!!localStorage.flowplayerDebug:!1,disabled:!1,fullscreen:window==window.top,keyboard:!0,ratio:9/16,adaptiveRatio:!1,rtmp:0,proxy:"best",hlsQualities:!0,splash:!1,live:!1,livePositionOffset:120,swf:"//releases.flowplayer.org/7.0.2/flowplayer.swf",swfHls:"//releases.flowplayer.org/7.0.2/flowplayerhls.swf",speeds:[.25,.5,1,1.5,2],tooltip:!0,mouseoutTimeout:5e3,volume:h?"true"==localStorage.muted?0:isNaN(localStorage.volume)?1:localStorage.volume||1:1,errors:["","Video loading aborted","Network error","Video not properly encoded","Video file not found","Unsupported video","Skin not found","SWF file not found","Subtitles not found","Invalid RTMP URL","Unsupported video format. Try installing Adobe Flash."],errorUrls:["","","","","","","","","","","http://get.adobe.com/flashplayer/"],playlist:[],hlsFix:m&&8>y},bean:a,common:u,slider:s,barSlider:l,extend:r});var b=0,I=e("./ext/resolve");if("undefined"!=typeof window.jQuery){var C=window.jQuery;C(function(){"function"==typeof C.fn.flowplayer&&C('.flowplayer:has(video,script[type="application/json"])').flowplayer()});var M=function(e){if(!e.length)return{};var t=e.data()||{},n={};return C.each(["autoplay","loop","preload","poster"],function(i,r){var o=e.attr(r);void 0!==o&&-1!==["autoplay","poster"].indexOf(r)?n[r]=o?o:!0:void 0!==o&&(t[r]=o?o:!0)}),t.subtitles=e.find("track").map(function(){var e=C(this);return{src:e.attr("src"),kind:e.attr("kind"),label:e.attr("label"),srclang:e.attr("srclang"),"default":e.prop("default")}}).get(),t.sources=(new I).sourcesFromVideoTag(e,C),r(n,{clip:t})};C.fn.flowplayer=function(e,t){return this.each(function(){"string"==typeof e&&(e={swf:e}),o(e)&&(t=e,e={});var n=C(this),r=n.find('script[type="application/json"]'),a=r.length?JSON.parse(r.text()):M(n.find("video")),s=C.extend({},e||{},a,n.data()),l=i(this,s,t);c.EVENTS.forEach(function(e){l.on(e+".jquery",function(e){n.trigger.call(n,e.type,e.detail&&e.detail.args)})}),n.data("flowplayer",l)})}}},{"./common":1,"./ext/events":10,"./ext/resolve":19,"./ext/ui/bar-slider":25,"./ext/ui/slider":26,bean:31,"extend-object":36,"is-function":39}],29:[function(e,t,n){e("es5-shim");var i=t.exports=e("./flowplayer");e("./ext/support"),e("./engine/embed"),e("./engine/html5"),e("./engine/flash"),e("./ext/ui"),e("./ext/message"),e("./ext/keyboard"),e("./ext/playlist"),e("./ext/cuepoint"),e("./ext/subtitle"),e("./ext/analytics"),e("./ext/share"),e("./ext/facebook"),e("./ext/twitter"),e("./ext/embed"),e("./ext/airplay"),e("./ext/chromecast"),e("./ext/qsel"),e("./ext/menu"),e("./ext/fullscreen"),e("./ext/mobile"),i(function(e,t){function n(e){var t=document.createElement("a");return t.href=e,s.hostname(t.hostname)}var r=function(e,t){var n=e.className.split(" ");-1===n.indexOf(t)&&(e.className+=" "+t)},o=function(e){return"none"!==window.getComputedStyle(e).display},a=e.conf,s=i.common,l=s.createElement,u=a.swf.indexOf("flowplayer.org")&&a.e&&t.getAttribute("data-origin"),c=u?n(u):s.hostname(),f=(document,a.key);if("file:"==location.protocol&&(c="localhost"),e.load.ed=1,a.hostname=c,a.origin=u||location.href,u&&r(t,"is-embedded"),"string"==typeof f&&(f=f.split(/,\s*/)),f&&"function"==typeof key_check&&key_check(f,c)){if(a.logo){var d=s.find(".fp-player",t)[0],p=l("a",{className:"fp-logo"});u&&(p.href=u),a.embed&&a.embed.popup&&(p.target="_blank");var h=l("img",{src:a.logo});p.appendChild(h),(d||t).appendChild(p)}}else{var p=l("a",{href:"https://flowplayer.org/hello"});t.appendChild(p);var g=l("div",{className:"fp-context-menu fp-menu"},'<strong>&copy; 2017 Flowplayer</strong><a href="https://flowplayer.org/hello">About Flowplayer</a><a href="https://flowplayer.org/license">GPL based license</a>'),m=window.location.href.indexOf("localhost"),d=s.find(".fp-player",t)[0];7!==m&&(d||t).appendChild(g),e.on("pause resume finish unload ready",function(e,n){var i=-1;if(n.video.src)for(var r=[["org","flowplayer","drive"],["org","flowplayer","my"],["org","flowplayer","cdn"]],a=0;a<r.length&&(i=n.video.src.indexOf("://"+r[a].reverse().join(".")),-1===i);a++);if(/pause|resume/.test(e.type)&&"flash"!=n.engine.engineName&&4!=i&&5!=i){var s={display:"block",position:"absolute",left:"16px",bottom:"70px",zIndex:99999,width:"100px",height:"20px",backgroundImage:"url("+[".png","logo","/",".net",".cloudfront","d32wqyuo10o653","//"].reverse().join("")+")"};for(var l in s)s.hasOwnProperty(l)&&(p.style[l]=s[l]);n.load.ed=o(p)&&(7===m||g.parentNode==t||g.parentNode==d),n.load.ed||n.pause()}else p.style.display="none"})}})},{"./engine/embed":2,"./engine/flash":3,"./engine/html5":4,"./ext/airplay":5,"./ext/analytics":6,"./ext/chromecast":7,"./ext/cuepoint":8,"./ext/embed":9,"./ext/facebook":11,"./ext/fullscreen":12,"./ext/keyboard":13,"./ext/menu":14,"./ext/message":15,"./ext/mobile":16,"./ext/playlist":17,"./ext/qsel":18,"./ext/share":20,"./ext/subtitle":21,"./ext/support":22,"./ext/twitter":23,"./ext/ui":24,"./flowplayer":28,"es5-shim":35}],30:[function(e,t,n){"use strict";function i(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===e[t-2]?2:"="===e[t-1]?1:0}function r(e){return 3*e.length/4-i(e)}function o(e){var t,n,r,o,a,s,l=e.length;a=i(e),s=new f(3*l/4-a),r=a>0?l-4:l;var u=0;for(t=0,n=0;r>t;t+=4,n+=3)o=c[e.charCodeAt(t)]<<18|c[e.charCodeAt(t+1)]<<12|c[e.charCodeAt(t+2)]<<6|c[e.charCodeAt(t+3)],s[u++]=o>>16&255,s[u++]=o>>8&255,s[u++]=255&o;return 2===a?(o=c[e.charCodeAt(t)]<<2|c[e.charCodeAt(t+1)]>>4,s[u++]=255&o):1===a&&(o=c[e.charCodeAt(t)]<<10|c[e.charCodeAt(t+1)]<<4|c[e.charCodeAt(t+2)]>>2,s[u++]=o>>8&255,s[u++]=255&o),s}function a(e){return u[e>>18&63]+u[e>>12&63]+u[e>>6&63]+u[63&e]}function s(e,t,n){for(var i,r=[],o=t;n>o;o+=3)i=(e[o]<<16)+(e[o+1]<<8)+e[o+2],r.push(a(i));return r.join("")}function l(e){for(var t,n=e.length,i=n%3,r="",o=[],a=16383,l=0,c=n-i;c>l;l+=a)o.push(s(e,l,l+a>c?c:l+a));return 1===i?(t=e[n-1],r+=u[t>>2],r+=u[t<<4&63],r+="=="):2===i&&(t=(e[n-2]<<8)+e[n-1],r+=u[t>>10],r+=u[t>>4&63],r+=u[t<<2&63],r+="="),o.push(r),o.join("")}n.byteLength=r,n.toByteArray=o,n.fromByteArray=l;for(var u=[],c=[],f="undefined"!=typeof Uint8Array?Uint8Array:Array,d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",p=0,h=d.length;h>p;++p)u[p]=d[p],c[d.charCodeAt(p)]=p;c["-".charCodeAt(0)]=62,c["_".charCodeAt(0)]=63},{}],31:[function(t,n,i){!function(t,i,r){"undefined"!=typeof n&&n.exports?n.exports=r():"function"==typeof e&&e.amd?e(r):i[t]=r()}("bean",this,function(e,t){e=e||"bean",t=t||this;var n,i=window,r=t[e],o=/[^\.]*(?=\..*)\.|.*/,a=/\..*/,s="addEventListener",l="removeEventListener",u=document||{},c=u.documentElement||{},f=c[s],d=f?s:"attachEvent",p={},h=Array.prototype.slice,g=function(e,t){return e.split(t||" ")},m=function(e){return"string"==typeof e},v=function(e){return"function"==typeof e},y="click dblclick mouseup mousedown contextmenu mousewheel mousemultiwheel DOMMouseScroll mouseover mouseout mousemove selectstart selectend keydown keypress keyup orientationchange focus blur change reset select submit load unload beforeunload resize move DOMContentLoaded readystatechange message error abort scroll ",w="show input invalid touchstart touchmove touchend touchcancel gesturestart gesturechange gestureend textinput readystatechange pageshow pagehide popstate hashchange offline online afterprint beforeprint dragstart dragenter dragover dragleave drag drop dragend loadstart progress suspend emptied stalled loadmetadata loadeddata canplay canplaythrough playing waiting seeking seeked ended durationchange timeupdate play pause ratechange volumechange cuechange checking noupdate downloading cached updateready obsolete ",b=function(e,t,n){for(n=0;n<t.length;n++)t[n]&&(e[t[n]]=1);return e}({},g(y+(f?w:""))),I=function(){var e="compareDocumentPosition"in c?function(e,t){return t.compareDocumentPosition&&16===(16&t.compareDocumentPosition(e))}:"contains"in c?function(e,t){return t=9===t.nodeType||t===window?c:t,t!==e&&t.contains(e)}:function(e,t){for(;e=e.parentNode;)if(e===t)return 1;return 0},t=function(t){var n=t.relatedTarget;return n?n!==this&&"xul"!==n.prefix&&!/document/.test(this.toString())&&!e(n,this):null==n};return{mouseenter:{base:"mouseover",condition:t},mouseleave:{base:"mouseout",condition:t},mousewheel:{base:/Firefox/.test(navigator.userAgent)?"DOMMouseScroll":"mousewheel"}}}(),C=function(){var e=g("altKey attrChange attrName bubbles cancelable ctrlKey currentTarget detail eventPhase getModifierState isTrusted metaKey relatedNode relatedTarget shiftKey srcElement target timeStamp type view which propertyName"),t=e.concat(g("button buttons clientX clientY dataTransfer fromElement offsetX offsetY pageX pageY screenX screenY toElement")),n=t.concat(g("wheelDelta wheelDeltaX wheelDeltaY wheelDeltaZ axis")),r=e.concat(g("char charCode key keyCode keyIdentifier keyLocation location")),o=e.concat(g("data")),a=e.concat(g("touches targetTouches changedTouches scale rotation")),s=e.concat(g("data origin source")),l=e.concat(g("state")),f=/over|out/,d=[{reg:/key/i,fix:function(e,t){return t.keyCode=e.keyCode||e.which,r}},{reg:/click|mouse(?!(.*wheel|scroll))|menu|drag|drop/i,fix:function(e,n,i){return n.rightClick=3===e.which||2===e.button,n.pos={x:0,y:0},e.pageX||e.pageY?(n.clientX=e.pageX,n.clientY=e.pageY):(e.clientX||e.clientY)&&(n.clientX=e.clientX+u.body.scrollLeft+c.scrollLeft,n.clientY=e.clientY+u.body.scrollTop+c.scrollTop),f.test(i)&&(n.relatedTarget=e.relatedTarget||e[("mouseover"==i?"from":"to")+"Element"]),t}},{reg:/mouse.*(wheel|scroll)/i,fix:function(){return n}},{reg:/^text/i,fix:function(){return o}},{reg:/^touch|^gesture/i,fix:function(){return a}},{reg:/^message$/i,fix:function(){return s}},{reg:/^popstate$/i,fix:function(){return l}},{reg:/.*/,fix:function(){return e}}],p={},h=function(e,t,n){if(arguments.length&&(e=e||((t.ownerDocument||t.document||t).parentWindow||i).event,this.originalEvent=e,this.isNative=n,this.isBean=!0,e)){var r,o,a,s,l,u=e.type,c=e.target||e.srcElement;if(this.target=c&&3===c.nodeType?c.parentNode:c,n){if(l=p[u],!l)for(r=0,o=d.length;o>r;r++)if(d[r].reg.test(u)){p[u]=l=d[r].fix;break}for(s=l(e,this,u),r=s.length;r--;)!((a=s[r])in this)&&a in e&&(this[a]=e[a])}}};return h.prototype.preventDefault=function(){this.originalEvent.preventDefault?this.originalEvent.preventDefault():this.originalEvent.returnValue=!1},h.prototype.stopPropagation=function(){this.originalEvent.stopPropagation?this.originalEvent.stopPropagation():this.originalEvent.cancelBubble=!0},h.prototype.stop=function(){this.preventDefault(),this.stopPropagation(),this.stopped=!0},h.prototype.stopImmediatePropagation=function(){this.originalEvent.stopImmediatePropagation&&this.originalEvent.stopImmediatePropagation(),this.isImmediatePropagationStopped=function(){return!0}},h.prototype.isImmediatePropagationStopped=function(){return this.originalEvent.isImmediatePropagationStopped&&this.originalEvent.isImmediatePropagationStopped()},h.prototype.clone=function(e){var t=new h(this,this.element,this.isNative);return t.currentTarget=e,t},h}(),M=function(e,t){return f||t||e!==u&&e!==i?e:c},A=function(){var e=function(e,t,n,i){var r=function(n,r){return t.apply(e,i?h.call(r,n?0:1).concat(i):r)},o=function(n,i){return t.__beanDel?t.__beanDel.ft(n.target,e):i},a=n?function(e){var t=o(e,this);return n.apply(t,arguments)?(e&&(e.currentTarget=t),r(e,arguments)):void 0}:function(e){return t.__beanDel&&(e=e.clone(o(e))),r(e,arguments)};return a.__beanDel=t.__beanDel,a},t=function(t,n,i,r,o,a,s){var l,u=I[n];"unload"==n&&(i=j(L,t,n,i,r)),u&&(u.condition&&(i=e(t,i,u.condition,a)),n=u.base||n),this.isNative=l=b[n]&&!!t[d],this.customType=!f&&!l&&n,this.element=t,this.type=n,this.original=r,
9
+ this.namespaces=o,this.eventType=f||l?n:"propertychange",this.target=M(t,l),this[d]=!!this.target[d],this.root=s,this.handler=e(t,i,null,a)};return t.prototype.inNamespaces=function(e){var t,n,i=0;if(!e)return!0;if(!this.namespaces)return!1;for(t=e.length;t--;)for(n=this.namespaces.length;n--;)e[t]==this.namespaces[n]&&i++;return e.length===i},t.prototype.matches=function(e,t,n){return!(this.element!==e||t&&this.original!==t||n&&this.handler!==n)},t}(),S=function(){var e={},t=function(n,i,r,o,a,s){var l=a?"r":"$";if(i&&"*"!=i){var u,c=0,f=e[l+i],d="*"==n;if(!f)return;for(u=f.length;u>c;c++)if((d||f[c].matches(n,r,o))&&!s(f[c],f,c,i))return}else for(var p in e)p.charAt(0)==l&&t(n,p.substr(1),r,o,a,s)},n=function(t,n,i,r){var o,a=e[(r?"r":"$")+n];if(a)for(o=a.length;o--;)if(!a[o].root&&a[o].matches(t,i,null))return!0;return!1},i=function(e,n,i,r){var o=[];return t(e,n,i,null,r,function(e){return o.push(e)}),o},r=function(t){var n=!t.root&&!this.has(t.element,t.type,null,!1),i=(t.root?"r":"$")+t.type;return(e[i]||(e[i]=[])).push(t),n},o=function(n){t(n.element,n.type,null,n.handler,n.root,function(t,n,i){return n.splice(i,1),t.removed=!0,0===n.length&&delete e[(t.root?"r":"$")+t.type],!1})},a=function(){var t,n=[];for(t in e)"$"==t.charAt(0)&&(n=n.concat(e[t]));return n};return{has:n,get:i,put:r,del:o,entries:a}}(),D=function(e){n=arguments.length?e:u.querySelectorAll?function(e,t){return t.querySelectorAll(e)}:function(){throw new Error("Bean: No selector engine installed")}},E=function(e,t){if(f||!t||!e||e.propertyName=="_on"+t){var n=S.get(this,t||e.type,null,!1),i=n.length,r=0;for(e=new C(e,this,!0),t&&(e.type=t);i>r&&!e.isImmediatePropagationStopped();r++)n[r].removed||n[r].handler.call(this,e)}},N=f?function(e,t,n){e[n?s:l](t,E,!1)}:function(e,t,n,i){var r;n?(S.put(r=new A(e,i||t,function(t){E.call(e,t,i)},E,null,null,!0)),i&&null==e["_on"+i]&&(e["_on"+i]=0),r.target.attachEvent("on"+r.eventType,r.handler)):(r=S.get(e,i||t,E,!0)[0],r&&(r.target.detachEvent("on"+r.eventType,r.handler),S.del(r)))},j=function(e,t,n,i,r){return function(){i.apply(this,arguments),e(t,n,r)}},L=function(e,t,n,i){var r,o,s=t&&t.replace(a,""),l=S.get(e,s,null,!1),u={};for(r=0,o=l.length;o>r;r++)n&&l[r].original!==n||!l[r].inNamespaces(i)||(S.del(l[r]),!u[l[r].eventType]&&l[r][d]&&(u[l[r].eventType]={t:l[r].eventType,c:l[r].type}));for(r in u)S.has(e,u[r].t,null,!1)||N(e,u[r].t,!1,u[r].c)},x=function(e,t){var i=function(t,i){for(var r,o=m(e)?n(e,i):e;t&&t!==i;t=t.parentNode)for(r=o.length;r--;)if(o[r]===t)return t},r=function(e){var n=i(e.target,this);n&&t.apply(n,arguments)};return r.__beanDel={ft:i,selector:e},r},T=f?function(e,t,n){var r=u.createEvent(e?"HTMLEvents":"UIEvents");r[e?"initEvent":"initUIEvent"](t,!0,!0,i,1),n.dispatchEvent(r)}:function(e,t,n){n=M(n,e),e?n.fireEvent("on"+t,u.createEventObject()):n["_on"+t]++},Z=function(e,t,n){var i,r,s,l,u=m(t);if(u&&t.indexOf(" ")>0){for(t=g(t),l=t.length;l--;)Z(e,t[l],n);return e}if(r=u&&t.replace(a,""),r&&I[r]&&(r=I[r].base),!t||u)(s=u&&t.replace(o,""))&&(s=g(s,".")),L(e,r,n,s);else if(v(t))L(e,null,t);else for(i in t)t.hasOwnProperty(i)&&Z(e,i,t[i]);return e},P=function(e,t,i,r){var s,l,u,c,f,m,y;{if(void 0!==i||"object"!=typeof t){for(v(i)?(f=h.call(arguments,3),r=s=i):(s=r,f=h.call(arguments,4),r=x(i,s,n)),u=g(t),this===p&&(r=j(Z,e,t,r,s)),c=u.length;c--;)y=S.put(m=new A(e,u[c].replace(a,""),r,s,g(u[c].replace(o,""),"."),f,!1)),m[d]&&y&&N(e,m.eventType,!0,m.customType);return e}for(l in t)t.hasOwnProperty(l)&&P.call(this,e,l,t[l])}},Y=function(e,t,n,i){return P.apply(null,m(n)?[e,n,t,i].concat(arguments.length>3?h.call(arguments,5):[]):h.call(arguments))},k=function(){return P.apply(p,arguments)},z=function(e,t,n){var i,r,s,l,u,c=g(t);for(i=c.length;i--;)if(t=c[i].replace(a,""),(l=c[i].replace(o,""))&&(l=g(l,".")),l||n||!e[d])for(u=S.get(e,t,null,!1),n=[!1].concat(n),r=0,s=u.length;s>r;r++)u[r].inNamespaces(l)&&u[r].handler.apply(e,n);else T(b[t],t,e);return e},G=function(e,t,n){for(var i,r,o=S.get(t,n,null,!1),a=o.length,s=0;a>s;s++)o[s].original&&(i=[e,o[s].type],(r=o[s].handler.__beanDel)&&i.push(r.selector),i.push(o[s].original),P.apply(null,i));return e},O={on:P,add:Y,one:k,off:Z,remove:Z,clone:G,fire:z,Event:C,setSelectorEngine:D,noConflict:function(){return t[e]=r,this}};if(i.attachEvent){var R=function(){var e,t=S.entries();for(e in t)t[e].type&&"unload"!==t[e].type&&Z(t[e].element,t[e].type);i.detachEvent("onunload",R),i.CollectGarbage&&i.CollectGarbage()};i.attachEvent("onunload",R)}return D(),O})},{}],32:[function(e,t,n){(function(t){"use strict";function i(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()&&"function"==typeof e.subarray&&0===e.subarray(1,1).byteLength}catch(t){return!1}}function r(){return a.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function o(e,t){if(r()<t)throw new RangeError("Invalid typed array length");return a.TYPED_ARRAY_SUPPORT?(e=new Uint8Array(t),e.__proto__=a.prototype):(null===e&&(e=new a(t)),e.length=t),e}function a(e,t,n){if(!(a.TYPED_ARRAY_SUPPORT||this instanceof a))return new a(e,t,n);if("number"==typeof e){if("string"==typeof t)throw new Error("If encoding is specified then the first argument must be a string");return c(this,e)}return s(this,e,t,n)}function s(e,t,n,i){if("number"==typeof t)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer?p(e,t,n,i):"string"==typeof t?f(e,t,n):h(e,t)}function l(e){if("number"!=typeof e)throw new TypeError('"size" argument must be a number');if(0>e)throw new RangeError('"size" argument must not be negative')}function u(e,t,n,i){return l(t),0>=t?o(e,t):void 0!==n?"string"==typeof i?o(e,t).fill(n,i):o(e,t).fill(n):o(e,t)}function c(e,t){if(l(t),e=o(e,0>t?0:0|g(t)),!a.TYPED_ARRAY_SUPPORT)for(var n=0;t>n;++n)e[n]=0;return e}function f(e,t,n){if(("string"!=typeof n||""===n)&&(n="utf8"),!a.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var i=0|v(t,n);e=o(e,i);var r=e.write(t,n);return r!==i&&(e=e.slice(0,r)),e}function d(e,t){var n=t.length<0?0:0|g(t.length);e=o(e,n);for(var i=0;n>i;i+=1)e[i]=255&t[i];return e}function p(e,t,n,i){if(t.byteLength,0>n||t.byteLength<n)throw new RangeError("'offset' is out of bounds");if(t.byteLength<n+(i||0))throw new RangeError("'length' is out of bounds");return t=void 0===n&&void 0===i?new Uint8Array(t):void 0===i?new Uint8Array(t,n):new Uint8Array(t,n,i),a.TYPED_ARRAY_SUPPORT?(e=t,e.__proto__=a.prototype):e=d(e,t),e}function h(e,t){if(a.isBuffer(t)){var n=0|g(t.length);return e=o(e,n),0===e.length?e:(t.copy(e,0,0,n),e)}if(t){if("undefined"!=typeof ArrayBuffer&&t.buffer instanceof ArrayBuffer||"length"in t)return"number"!=typeof t.length||K(t.length)?o(e,0):d(e,t);if("Buffer"===t.type&&$(t.data))return d(e,t.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}function g(e){if(e>=r())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+r().toString(16)+" bytes");return 0|e}function m(e){return+e!=e&&(e=0),a.alloc(+e)}function v(e,t){if(a.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var i=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return V(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return X(e).length;default:if(i)return V(e).length;t=(""+t).toLowerCase(),i=!0}}function y(e,t,n){var i=!1;if((void 0===t||0>t)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),0>=n)return"";if(n>>>=0,t>>>=0,t>=n)return"";for(e||(e="utf8");;)switch(e){case"hex":return Z(this,t,n);case"utf8":case"utf-8":return j(this,t,n);case"ascii":return x(this,t,n);case"latin1":case"binary":return T(this,t,n);case"base64":return N(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return P(this,t,n);default:if(i)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),i=!0}}function w(e,t,n){var i=e[t];e[t]=e[n],e[n]=i}function b(e,t,n,i,r){if(0===e.length)return-1;if("string"==typeof n?(i=n,n=0):n>2147483647?n=2147483647:-2147483648>n&&(n=-2147483648),n=+n,isNaN(n)&&(n=r?0:e.length-1),0>n&&(n=e.length+n),n>=e.length){if(r)return-1;n=e.length-1}else if(0>n){if(!r)return-1;n=0}if("string"==typeof t&&(t=a.from(t,i)),a.isBuffer(t))return 0===t.length?-1:I(e,t,n,i,r);if("number"==typeof t)return t=255&t,a.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?r?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):I(e,[t],n,i,r);throw new TypeError("val must be string, number or Buffer")}function I(e,t,n,i,r){function o(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}var a=1,s=e.length,l=t.length;if(void 0!==i&&(i=String(i).toLowerCase(),"ucs2"===i||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(e.length<2||t.length<2)return-1;a=2,s/=2,l/=2,n/=2}var u;if(r){var c=-1;for(u=n;s>u;u++)if(o(e,u)===o(t,-1===c?0:u-c)){if(-1===c&&(c=u),u-c+1===l)return c*a}else-1!==c&&(u-=u-c),c=-1}else for(n+l>s&&(n=s-l),u=n;u>=0;u--){for(var f=!0,d=0;l>d;d++)if(o(e,u+d)!==o(t,d)){f=!1;break}if(f)return u}return-1}function C(e,t,n,i){n=Number(n)||0;var r=e.length-n;i?(i=Number(i),i>r&&(i=r)):i=r;var o=t.length;if(o%2!==0)throw new TypeError("Invalid hex string");i>o/2&&(i=o/2);for(var a=0;i>a;++a){var s=parseInt(t.substr(2*a,2),16);if(isNaN(s))return a;e[n+a]=s}return a}function M(e,t,n,i){return _(V(t,e.length-n),e,n,i)}function A(e,t,n,i){return _(H(t),e,n,i)}function S(e,t,n,i){return A(e,t,n,i)}function D(e,t,n,i){return _(X(t),e,n,i)}function E(e,t,n,i){return _(F(t,e.length-n),e,n,i)}function N(e,t,n){return 0===t&&n===e.length?Q.fromByteArray(e):Q.fromByteArray(e.slice(t,n))}function j(e,t,n){n=Math.min(e.length,n);for(var i=[],r=t;n>r;){var o=e[r],a=null,s=o>239?4:o>223?3:o>191?2:1;if(n>=r+s){var l,u,c,f;switch(s){case 1:128>o&&(a=o);break;case 2:l=e[r+1],128===(192&l)&&(f=(31&o)<<6|63&l,f>127&&(a=f));break;case 3:l=e[r+1],u=e[r+2],128===(192&l)&&128===(192&u)&&(f=(15&o)<<12|(63&l)<<6|63&u,f>2047&&(55296>f||f>57343)&&(a=f));break;case 4:l=e[r+1],u=e[r+2],c=e[r+3],128===(192&l)&&128===(192&u)&&128===(192&c)&&(f=(15&o)<<18|(63&l)<<12|(63&u)<<6|63&c,f>65535&&1114112>f&&(a=f))}}null===a?(a=65533,s=1):a>65535&&(a-=65536,i.push(a>>>10&1023|55296),a=56320|1023&a),i.push(a),r+=s}return L(i)}function L(e){var t=e.length;if(ee>=t)return String.fromCharCode.apply(String,e);for(var n="",i=0;t>i;)n+=String.fromCharCode.apply(String,e.slice(i,i+=ee));return n}function x(e,t,n){var i="";n=Math.min(e.length,n);for(var r=t;n>r;++r)i+=String.fromCharCode(127&e[r]);return i}function T(e,t,n){var i="";n=Math.min(e.length,n);for(var r=t;n>r;++r)i+=String.fromCharCode(e[r]);return i}function Z(e,t,n){var i=e.length;(!t||0>t)&&(t=0),(!n||0>n||n>i)&&(n=i);for(var r="",o=t;n>o;++o)r+=B(e[o]);return r}function P(e,t,n){for(var i=e.slice(t,n),r="",o=0;o<i.length;o+=2)r+=String.fromCharCode(i[o]+256*i[o+1]);return r}function Y(e,t,n){if(e%1!==0||0>e)throw new RangeError("offset is not uint");if(e+t>n)throw new RangeError("Trying to access beyond buffer length")}function k(e,t,n,i,r,o){if(!a.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>r||o>t)throw new RangeError('"value" argument is out of bounds');if(n+i>e.length)throw new RangeError("Index out of range")}function z(e,t,n,i){0>t&&(t=65535+t+1);for(var r=0,o=Math.min(e.length-n,2);o>r;++r)e[n+r]=(t&255<<8*(i?r:1-r))>>>8*(i?r:1-r)}function G(e,t,n,i){0>t&&(t=4294967295+t+1);for(var r=0,o=Math.min(e.length-n,4);o>r;++r)e[n+r]=t>>>8*(i?r:3-r)&255}function O(e,t,n,i,r,o){if(n+i>e.length)throw new RangeError("Index out of range");if(0>n)throw new RangeError("Index out of range")}function R(e,t,n,i,r){return r||O(e,t,n,4,3.4028234663852886e38,-3.4028234663852886e38),q.write(e,t,n,i,23,4),n+4}function W(e,t,n,i,r){return r||O(e,t,n,8,1.7976931348623157e308,-1.7976931348623157e308),q.write(e,t,n,i,52,8),n+8}function U(e){if(e=J(e).replace(te,""),e.length<2)return"";for(;e.length%4!==0;)e+="=";return e}function J(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function B(e){return 16>e?"0"+e.toString(16):e.toString(16)}function V(e,t){t=t||1/0;for(var n,i=e.length,r=null,o=[],a=0;i>a;++a){if(n=e.charCodeAt(a),n>55295&&57344>n){if(!r){if(n>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(a+1===i){(t-=3)>-1&&o.push(239,191,189);continue}r=n;continue}if(56320>n){(t-=3)>-1&&o.push(239,191,189),r=n;continue}n=(r-55296<<10|n-56320)+65536}else r&&(t-=3)>-1&&o.push(239,191,189);if(r=null,128>n){if((t-=1)<0)break;o.push(n)}else if(2048>n){if((t-=2)<0)break;o.push(n>>6|192,63&n|128)}else if(65536>n){if((t-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(1114112>n))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function H(e){for(var t=[],n=0;n<e.length;++n)t.push(255&e.charCodeAt(n));return t}function F(e,t){for(var n,i,r,o=[],a=0;a<e.length&&!((t-=2)<0);++a)n=e.charCodeAt(a),i=n>>8,r=n%256,o.push(r),o.push(i);return o}function X(e){return Q.toByteArray(U(e))}function _(e,t,n,i){for(var r=0;i>r&&!(r+n>=t.length||r>=e.length);++r)t[r+n]=e[r];return r}function K(e){return e!==e}var Q=e("base64-js"),q=e("ieee754"),$=e("isarray");n.Buffer=a,n.SlowBuffer=m,n.INSPECT_MAX_BYTES=50,a.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:i(),n.kMaxLength=r(),a.poolSize=8192,a._augment=function(e){return e.__proto__=a.prototype,e},a.from=function(e,t,n){return s(null,e,t,n)},a.TYPED_ARRAY_SUPPORT&&(a.prototype.__proto__=Uint8Array.prototype,a.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&a[Symbol.species]===a&&Object.defineProperty(a,Symbol.species,{value:null,configurable:!0})),a.alloc=function(e,t,n){return u(null,e,t,n)},a.allocUnsafe=function(e){return c(null,e)},a.allocUnsafeSlow=function(e){return c(null,e)},a.isBuffer=function(e){return!(null==e||!e._isBuffer)},a.compare=function(e,t){if(!a.isBuffer(e)||!a.isBuffer(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var n=e.length,i=t.length,r=0,o=Math.min(n,i);o>r;++r)if(e[r]!==t[r]){n=e[r],i=t[r];break}return i>n?-1:n>i?1:0},a.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},a.concat=function(e,t){if(!$(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return a.alloc(0);var n;if(void 0===t)for(t=0,n=0;n<e.length;++n)t+=e[n].length;var i=a.allocUnsafe(t),r=0;for(n=0;n<e.length;++n){var o=e[n];if(!a.isBuffer(o))throw new TypeError('"list" argument must be an Array of Buffers');o.copy(i,r),r+=o.length}return i},a.byteLength=v,a.prototype._isBuffer=!0,a.prototype.swap16=function(){var e=this.length;if(e%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;e>t;t+=2)w(this,t,t+1);return this},a.prototype.swap32=function(){var e=this.length;if(e%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;e>t;t+=4)w(this,t,t+3),w(this,t+1,t+2);return this},a.prototype.swap64=function(){var e=this.length;if(e%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;e>t;t+=8)w(this,t,t+7),w(this,t+1,t+6),w(this,t+2,t+5),w(this,t+3,t+4);return this},a.prototype.toString=function(){var e=0|this.length;return 0===e?"":0===arguments.length?j(this,0,e):y.apply(this,arguments)},a.prototype.equals=function(e){if(!a.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e?!0:0===a.compare(this,e)},a.prototype.inspect=function(){var e="",t=n.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString("hex",0,t).match(/.{2}/g).join(" "),this.length>t&&(e+=" ... ")),"<Buffer "+e+">"},a.prototype.compare=function(e,t,n,i,r){if(!a.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===i&&(i=0),void 0===r&&(r=this.length),0>t||n>e.length||0>i||r>this.length)throw new RangeError("out of range index");if(i>=r&&t>=n)return 0;if(i>=r)return-1;if(t>=n)return 1;if(t>>>=0,n>>>=0,i>>>=0,r>>>=0,this===e)return 0;for(var o=r-i,s=n-t,l=Math.min(o,s),u=this.slice(i,r),c=e.slice(t,n),f=0;l>f;++f)if(u[f]!==c[f]){o=u[f],s=c[f];break}return s>o?-1:o>s?1:0},a.prototype.includes=function(e,t,n){return-1!==this.indexOf(e,t,n)},a.prototype.indexOf=function(e,t,n){return b(this,e,t,n,!0)},a.prototype.lastIndexOf=function(e,t,n){return b(this,e,t,n,!1)},a.prototype.write=function(e,t,n,i){if(void 0===t)i="utf8",n=this.length,t=0;else if(void 0===n&&"string"==typeof t)i=t,n=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t=0|t,isFinite(n)?(n=0|n,void 0===i&&(i="utf8")):(i=n,n=void 0)}var r=this.length-t;if((void 0===n||n>r)&&(n=r),e.length>0&&(0>n||0>t)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");for(var o=!1;;)switch(i){case"hex":return C(this,e,t,n);case"utf8":case"utf-8":return M(this,e,t,n);case"ascii":return A(this,e,t,n);case"latin1":case"binary":return S(this,e,t,n);case"base64":return D(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return E(this,e,t,n);default:if(o)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),o=!0}},a.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var ee=4096;a.prototype.slice=function(e,t){var n=this.length;e=~~e,t=void 0===t?n:~~t,0>e?(e+=n,0>e&&(e=0)):e>n&&(e=n),0>t?(t+=n,0>t&&(t=0)):t>n&&(t=n),e>t&&(t=e);var i;if(a.TYPED_ARRAY_SUPPORT)i=this.subarray(e,t),i.__proto__=a.prototype;else{var r=t-e;i=new a(r,void 0);for(var o=0;r>o;++o)i[o]=this[o+e]}return i},a.prototype.readUIntLE=function(e,t,n){e=0|e,t=0|t,n||Y(e,t,this.length);for(var i=this[e],r=1,o=0;++o<t&&(r*=256);)i+=this[e+o]*r;return i},a.prototype.readUIntBE=function(e,t,n){e=0|e,t=0|t,n||Y(e,t,this.length);for(var i=this[e+--t],r=1;t>0&&(r*=256);)i+=this[e+--t]*r;return i},a.prototype.readUInt8=function(e,t){return t||Y(e,1,this.length),this[e]},a.prototype.readUInt16LE=function(e,t){return t||Y(e,2,this.length),this[e]|this[e+1]<<8},a.prototype.readUInt16BE=function(e,t){return t||Y(e,2,this.length),this[e]<<8|this[e+1]},a.prototype.readUInt32LE=function(e,t){return t||Y(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},a.prototype.readUInt32BE=function(e,t){return t||Y(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},a.prototype.readIntLE=function(e,t,n){e=0|e,t=0|t,n||Y(e,t,this.length);for(var i=this[e],r=1,o=0;++o<t&&(r*=256);)i+=this[e+o]*r;return r*=128,i>=r&&(i-=Math.pow(2,8*t)),i},a.prototype.readIntBE=function(e,t,n){e=0|e,t=0|t,n||Y(e,t,this.length);for(var i=t,r=1,o=this[e+--i];i>0&&(r*=256);)o+=this[e+--i]*r;return r*=128,o>=r&&(o-=Math.pow(2,8*t)),o},a.prototype.readInt8=function(e,t){return t||Y(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},a.prototype.readInt16LE=function(e,t){t||Y(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},a.prototype.readInt16BE=function(e,t){t||Y(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},a.prototype.readInt32LE=function(e,t){return t||Y(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},a.prototype.readInt32BE=function(e,t){return t||Y(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},a.prototype.readFloatLE=function(e,t){return t||Y(e,4,this.length),q.read(this,e,!0,23,4)},a.prototype.readFloatBE=function(e,t){return t||Y(e,4,this.length),q.read(this,e,!1,23,4)},a.prototype.readDoubleLE=function(e,t){return t||Y(e,8,this.length),q.read(this,e,!0,52,8)},a.prototype.readDoubleBE=function(e,t){return t||Y(e,8,this.length),q.read(this,e,!1,52,8)},a.prototype.writeUIntLE=function(e,t,n,i){if(e=+e,t=0|t,n=0|n,!i){var r=Math.pow(2,8*n)-1;k(this,e,t,n,r,0)}var o=1,a=0;for(this[t]=255&e;++a<n&&(o*=256);)this[t+a]=e/o&255;return t+n},a.prototype.writeUIntBE=function(e,t,n,i){if(e=+e,t=0|t,n=0|n,!i){var r=Math.pow(2,8*n)-1;k(this,e,t,n,r,0)}var o=n-1,a=1;for(this[t+o]=255&e;--o>=0&&(a*=256);)this[t+o]=e/a&255;return t+n},a.prototype.writeUInt8=function(e,t,n){return e=+e,t=0|t,n||k(this,e,t,1,255,0),a.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},a.prototype.writeUInt16LE=function(e,t,n){return e=+e,t=0|t,n||k(this,e,t,2,65535,0),a.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):z(this,e,t,!0),t+2},a.prototype.writeUInt16BE=function(e,t,n){return e=+e,t=0|t,n||k(this,e,t,2,65535,0),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):z(this,e,t,!1),t+2},a.prototype.writeUInt32LE=function(e,t,n){return e=+e,t=0|t,n||k(this,e,t,4,4294967295,0),a.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):G(this,e,t,!0),t+4},a.prototype.writeUInt32BE=function(e,t,n){return e=+e,t=0|t,n||k(this,e,t,4,4294967295,0),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):G(this,e,t,!1),t+4},a.prototype.writeIntLE=function(e,t,n,i){if(e=+e,t=0|t,!i){var r=Math.pow(2,8*n-1);k(this,e,t,n,r-1,-r)}var o=0,a=1,s=0;for(this[t]=255&e;++o<n&&(a*=256);)0>e&&0===s&&0!==this[t+o-1]&&(s=1),this[t+o]=(e/a>>0)-s&255;return t+n},a.prototype.writeIntBE=function(e,t,n,i){if(e=+e,t=0|t,!i){var r=Math.pow(2,8*n-1);k(this,e,t,n,r-1,-r)}var o=n-1,a=1,s=0;for(this[t+o]=255&e;--o>=0&&(a*=256);)0>e&&0===s&&0!==this[t+o+1]&&(s=1),this[t+o]=(e/a>>0)-s&255;return t+n},a.prototype.writeInt8=function(e,t,n){return e=+e,t=0|t,n||k(this,e,t,1,127,-128),a.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),0>e&&(e=255+e+1),this[t]=255&e,t+1},a.prototype.writeInt16LE=function(e,t,n){return e=+e,t=0|t,n||k(this,e,t,2,32767,-32768),a.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):z(this,e,t,!0),t+2},a.prototype.writeInt16BE=function(e,t,n){return e=+e,t=0|t,n||k(this,e,t,2,32767,-32768),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):z(this,e,t,!1),t+2},a.prototype.writeInt32LE=function(e,t,n){return e=+e,t=0|t,n||k(this,e,t,4,2147483647,-2147483648),a.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):G(this,e,t,!0),t+4},a.prototype.writeInt32BE=function(e,t,n){return e=+e,t=0|t,n||k(this,e,t,4,2147483647,-2147483648),0>e&&(e=4294967295+e+1),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):G(this,e,t,!1),t+4},a.prototype.writeFloatLE=function(e,t,n){return R(this,e,t,!0,n)},a.prototype.writeFloatBE=function(e,t,n){return R(this,e,t,!1,n)},a.prototype.writeDoubleLE=function(e,t,n){return W(this,e,t,!0,n)},a.prototype.writeDoubleBE=function(e,t,n){return W(this,e,t,!1,n)},a.prototype.copy=function(e,t,n,i){if(n||(n=0),i||0===i||(i=this.length),t>=e.length&&(t=e.length),t||(t=0),i>0&&n>i&&(i=n),i===n)return 0;if(0===e.length||0===this.length)return 0;if(0>t)throw new RangeError("targetStart out of bounds");if(0>n||n>=this.length)throw new RangeError("sourceStart out of bounds");if(0>i)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),e.length-t<i-n&&(i=e.length-t+n);var r,o=i-n;if(this===e&&t>n&&i>t)for(r=o-1;r>=0;--r)e[r+t]=this[r+n];else if(1e3>o||!a.TYPED_ARRAY_SUPPORT)for(r=0;o>r;++r)e[r+t]=this[r+n];else Uint8Array.prototype.set.call(e,this.subarray(n,n+o),t);return o},a.prototype.fill=function(e,t,n,i){if("string"==typeof e){if("string"==typeof t?(i=t,t=0,n=this.length):"string"==typeof n&&(i=n,n=this.length),1===e.length){var r=e.charCodeAt(0);256>r&&(e=r)}if(void 0!==i&&"string"!=typeof i)throw new TypeError("encoding must be a string");if("string"==typeof i&&!a.isEncoding(i))throw new TypeError("Unknown encoding: "+i)}else"number"==typeof e&&(e=255&e);if(0>t||this.length<t||this.length<n)throw new RangeError("Out of range index");if(t>=n)return this;t>>>=0,n=void 0===n?this.length:n>>>0,e||(e=0);var o;if("number"==typeof e)for(o=t;n>o;++o)this[o]=e;else{var s=a.isBuffer(e)?e:V(new a(e,i).toString()),l=s.length;for(o=0;n-t>o;++o)this[o+t]=s[o%l]}return this};var te=/[^+\/0-9A-Za-z-_]/g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"base64-js":30,ieee754:37,isarray:40}],33:[function(e,t,n){function i(e){function t(e){var t=c();a(t,e)>-1||(t.push(e),f(t))}function n(e){var t=c(),n=a(t,e);-1!==n&&(t.splice(n,1),f(t))}function i(e){return a(c(),e)>-1}function s(e){return i(e)?(n(e),!1):(t(e),!0)}function l(){return e.className}function u(e){var t=c();return t[e]||null}function c(){var t=e.className;return r(t.split(" "),o)}function f(t){var n=t.length;e.className=t.join(" "),p.length=n;for(var i=0;i<t.length;i++)p[i]=t[i];delete t[n]}var d=e.classList;if(d)return d;var p={add:t,remove:n,contains:i,toggle:s,toString:l,length:0,item:u};return p}function r(e,t){for(var n=[],i=0;i<e.length;i++)t(e[i])&&n.push(e[i]);return n}function o(e){return!!e}var a=e("indexof");t.exports=i},{indexof:38}],34:[function(e,t,n){function i(e,t,n,i){return n=window.getComputedStyle,i=n?n(e):e.currentStyle,i?i[t.replace(/-(\w)/gi,function(e,t){return t.toUpperCase()})]:void 0}t.exports=i},{}],35:[function(t,n,i){!function(t,r){"use strict";"function"==typeof e&&e.amd?e(r):"object"==typeof i?n.exports=r():t.returnExports=r()}(this,function(){var e,t,n=Array,i=n.prototype,r=Object,o=r.prototype,a=Function,s=a.prototype,l=String,u=l.prototype,c=Number,f=c.prototype,d=i.slice,p=i.splice,h=i.push,g=i.unshift,m=i.concat,v=i.join,y=s.call,w=s.apply,b=Math.max,I=Math.min,C=o.toString,M="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag,A=Function.prototype.toString,S=/^\s*class /,D=function(e){try{var t=A.call(e),n=t.replace(/\/\/.*\n/g,""),i=n.replace(/\/\*[.\s\S]*\*\//g,""),r=i.replace(/\n/gm," ").replace(/ {2}/g," ");return S.test(r)}catch(o){return!1}},E=function(e){try{return D(e)?!1:(A.call(e),!0)}catch(t){return!1}},N="[object Function]",j="[object GeneratorFunction]",e=function(e){if(!e)return!1;if("function"!=typeof e&&"object"!=typeof e)return!1;if(M)return E(e);if(D(e))return!1;var t=C.call(e);return t===N||t===j},L=RegExp.prototype.exec,x=function(e){try{return L.call(e),!0}catch(t){return!1}},T="[object RegExp]";t=function(e){return"object"!=typeof e?!1:M?x(e):C.call(e)===T};var Z,P=String.prototype.valueOf,Y=function(e){try{return P.call(e),!0}catch(t){return!1}},k="[object String]";Z=function(e){return"string"==typeof e?!0:"object"!=typeof e?!1:M?Y(e):C.call(e)===k};var z=r.defineProperty&&function(){try{var e={};r.defineProperty(e,"x",{enumerable:!1,value:e});for(var t in e)return!1;return e.x===e}catch(n){return!1}}(),G=function(e){var t;return t=z?function(e,t,n,i){!i&&t in e||r.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:!0,value:n})}:function(e,t,n,i){!i&&t in e||(e[t]=n)},function(n,i,r){for(var o in i)e.call(i,o)&&t(n,o,i[o],r)}}(o.hasOwnProperty),O=function(e){var t=typeof e;return null===e||"object"!==t&&"function"!==t},R=c.isNaN||function(e){return e!==e},W={ToInteger:function(e){var t=+e;return R(t)?t=0:0!==t&&t!==1/0&&t!==-(1/0)&&(t=(t>0||-1)*Math.floor(Math.abs(t))),t},ToPrimitive:function(t){var n,i,r;if(O(t))return t;if(i=t.valueOf,e(i)&&(n=i.call(t),O(n)))return n;if(r=t.toString,e(r)&&(n=r.call(t),O(n)))return n;throw new TypeError},ToObject:function(e){if(null==e)throw new TypeError("can't convert "+e+" to object");return r(e)},ToUint32:function(e){return e>>>0}},U=function(){};G(s,{bind:function(t){var n=this;if(!e(n))throw new TypeError("Function.prototype.bind called on incompatible "+n);for(var i,o=d.call(arguments,1),s=function(){if(this instanceof i){var e=w.call(n,this,m.call(o,d.call(arguments)));return r(e)===e?e:this}return w.call(n,t,m.call(o,d.call(arguments)))},l=b(0,n.length-o.length),u=[],c=0;l>c;c++)h.call(u,"$"+c);return i=a("binder","return function ("+v.call(u,",")+"){ return binder.apply(this, arguments); }")(s),n.prototype&&(U.prototype=n.prototype,i.prototype=new U,U.prototype=null),i}});var J=y.bind(o.hasOwnProperty),B=y.bind(o.toString),V=y.bind(d),H=w.bind(d),F=y.bind(u.slice),X=y.bind(u.split),_=y.bind(u.indexOf),K=y.bind(h),Q=y.bind(o.propertyIsEnumerable),q=y.bind(i.sort),$=n.isArray||function(e){return"[object Array]"===B(e)},ee=1!==[].unshift(0);G(i,{unshift:function(){return g.apply(this,arguments),this.length}},ee),G(n,{isArray:$});var te=r("a"),ne="a"!==te[0]||!(0 in te),ie=function(e){var t=!0,n=!0,i=!1;if(e)try{e.call("foo",function(e,n,i){"object"!=typeof i&&(t=!1)}),e.call([1],function(){"use strict";n="string"==typeof this},"x")}catch(r){i=!0}return!!e&&!i&&t&&n};G(i,{forEach:function(t){var n,i=W.ToObject(this),r=ne&&Z(this)?X(this,""):i,o=-1,a=W.ToUint32(r.length);if(arguments.length>1&&(n=arguments[1]),!e(t))throw new TypeError("Array.prototype.forEach callback must be a function");for(;++o<a;)o in r&&("undefined"==typeof n?t(r[o],o,i):t.call(n,r[o],o,i))}},!ie(i.forEach)),G(i,{map:function(t){var i,r=W.ToObject(this),o=ne&&Z(this)?X(this,""):r,a=W.ToUint32(o.length),s=n(a);if(arguments.length>1&&(i=arguments[1]),!e(t))throw new TypeError("Array.prototype.map callback must be a function");for(var l=0;a>l;l++)l in o&&("undefined"==typeof i?s[l]=t(o[l],l,r):s[l]=t.call(i,o[l],l,r));return s}},!ie(i.map)),G(i,{filter:function(t){var n,i,r=W.ToObject(this),o=ne&&Z(this)?X(this,""):r,a=W.ToUint32(o.length),s=[];if(arguments.length>1&&(i=arguments[1]),!e(t))throw new TypeError("Array.prototype.filter callback must be a function");for(var l=0;a>l;l++)l in o&&(n=o[l],("undefined"==typeof i?t(n,l,r):t.call(i,n,l,r))&&K(s,n));return s}},!ie(i.filter)),G(i,{every:function(t){var n,i=W.ToObject(this),r=ne&&Z(this)?X(this,""):i,o=W.ToUint32(r.length);if(arguments.length>1&&(n=arguments[1]),!e(t))throw new TypeError("Array.prototype.every callback must be a function");for(var a=0;o>a;a++)if(a in r&&!("undefined"==typeof n?t(r[a],a,i):t.call(n,r[a],a,i)))return!1;return!0}},!ie(i.every)),G(i,{some:function(t){var n,i=W.ToObject(this),r=ne&&Z(this)?X(this,""):i,o=W.ToUint32(r.length);if(arguments.length>1&&(n=arguments[1]),!e(t))throw new TypeError("Array.prototype.some callback must be a function");for(var a=0;o>a;a++)if(a in r&&("undefined"==typeof n?t(r[a],a,i):t.call(n,r[a],a,i)))return!0;return!1}},!ie(i.some));var re=!1;i.reduce&&(re="object"==typeof i.reduce.call("es5",function(e,t,n,i){return i})),G(i,{reduce:function(t){var n=W.ToObject(this),i=ne&&Z(this)?X(this,""):n,r=W.ToUint32(i.length);if(!e(t))throw new TypeError("Array.prototype.reduce callback must be a function");if(0===r&&1===arguments.length)throw new TypeError("reduce of empty array with no initial value");var o,a=0;if(arguments.length>=2)o=arguments[1];else for(;;){if(a in i){o=i[a++];break}if(++a>=r)throw new TypeError("reduce of empty array with no initial value")}for(;r>a;a++)a in i&&(o=t(o,i[a],a,n));return o}},!re);var oe=!1;i.reduceRight&&(oe="object"==typeof i.reduceRight.call("es5",function(e,t,n,i){return i})),G(i,{reduceRight:function(t){var n=W.ToObject(this),i=ne&&Z(this)?X(this,""):n,r=W.ToUint32(i.length);if(!e(t))throw new TypeError("Array.prototype.reduceRight callback must be a function");if(0===r&&1===arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var o,a=r-1;if(arguments.length>=2)o=arguments[1];else for(;;){if(a in i){o=i[a--];break}if(--a<0)throw new TypeError("reduceRight of empty array with no initial value")}if(0>a)return o;do a in i&&(o=t(o,i[a],a,n));while(a--);return o}},!oe);var ae=i.indexOf&&-1!==[0,1].indexOf(1,2);G(i,{indexOf:function(e){var t=ne&&Z(this)?X(this,""):W.ToObject(this),n=W.ToUint32(t.length);
10
+ if(0===n)return-1;var i=0;for(arguments.length>1&&(i=W.ToInteger(arguments[1])),i=i>=0?i:b(0,n+i);n>i;i++)if(i in t&&t[i]===e)return i;return-1}},ae);var se=i.lastIndexOf&&-1!==[0,1].lastIndexOf(0,-3);G(i,{lastIndexOf:function(e){var t=ne&&Z(this)?X(this,""):W.ToObject(this),n=W.ToUint32(t.length);if(0===n)return-1;var i=n-1;for(arguments.length>1&&(i=I(i,W.ToInteger(arguments[1]))),i=i>=0?i:n-Math.abs(i);i>=0;i--)if(i in t&&e===t[i])return i;return-1}},se);var le=function(){var e=[1,2],t=e.splice();return 2===e.length&&$(t)&&0===t.length}();G(i,{splice:function(e,t){return 0===arguments.length?[]:p.apply(this,arguments)}},!le);var ue=function(){var e={};return i.splice.call(e,0,0,1),1===e.length}();G(i,{splice:function(e,t){if(0===arguments.length)return[];var n=arguments;return this.length=b(W.ToInteger(this.length),0),arguments.length>0&&"number"!=typeof t&&(n=V(arguments),n.length<2?K(n,this.length-e):n[1]=W.ToInteger(t)),p.apply(this,n)}},!ue);var ce=function(){var e=new n(1e5);return e[8]="x",e.splice(1,1),7===e.indexOf("x")}(),fe=function(){var e=256,t=[];return t[e]="a",t.splice(e+1,0,"b"),"a"===t[e]}();G(i,{splice:function(e,t){for(var n,i=W.ToObject(this),r=[],o=W.ToUint32(i.length),a=W.ToInteger(e),s=0>a?b(o+a,0):I(a,o),u=I(b(W.ToInteger(t),0),o-s),c=0;u>c;)n=l(s+c),J(i,n)&&(r[c]=i[n]),c+=1;var f,d=V(arguments,2),p=d.length;if(u>p){c=s;for(var h=o-u;h>c;)n=l(c+u),f=l(c+p),J(i,n)?i[f]=i[n]:delete i[f],c+=1;c=o;for(var g=o-u+p;c>g;)delete i[c-1],c-=1}else if(p>u)for(c=o-u;c>s;)n=l(c+u-1),f=l(c+p-1),J(i,n)?i[f]=i[n]:delete i[f],c-=1;c=s;for(var m=0;m<d.length;++m)i[c]=d[m],c+=1;return i.length=o-u+p,r}},!ce||!fe);var de,pe=i.join;try{de="1,2,3"!==Array.prototype.join.call("123",",")}catch(he){de=!0}de&&G(i,{join:function(e){var t="undefined"==typeof e?",":e;return pe.call(Z(this)?X(this,""):this,t)}},de);var ge="1,2"!==[1,2].join(void 0);ge&&G(i,{join:function(e){var t="undefined"==typeof e?",":e;return pe.call(this,t)}},ge);var me=function(e){for(var t=W.ToObject(this),n=W.ToUint32(t.length),i=0;i<arguments.length;)t[n+i]=arguments[i],i+=1;return t.length=n+i,n+i},ve=function(){var e={},t=Array.prototype.push.call(e,void 0);return 1!==t||1!==e.length||"undefined"!=typeof e[0]||!J(e,0)}();G(i,{push:function(e){return $(this)?h.apply(this,arguments):me.apply(this,arguments)}},ve);var ye=function(){var e=[],t=e.push(void 0);return 1!==t||1!==e.length||"undefined"!=typeof e[0]||!J(e,0)}();G(i,{push:me},ye),G(i,{slice:function(e,t){var n=Z(this)?X(this,""):this;return H(n,arguments)}},ne);var we=function(){try{return[1,2].sort(null),[1,2].sort({}),!0}catch(e){}return!1}(),be=function(){try{return[1,2].sort(/a/),!1}catch(e){}return!0}(),Ie=function(){try{return[1,2].sort(void 0),!0}catch(e){}return!1}();G(i,{sort:function(t){if("undefined"==typeof t)return q(this);if(!e(t))throw new TypeError("Array.prototype.sort callback must be a function");return q(this,t)}},we||!Ie||!be);var Ce=!Q({toString:null},"toString"),Me=Q(function(){},"prototype"),Ae=!J("x","0"),Se=function(e){var t=e.constructor;return t&&t.prototype===e},De={$window:!0,$console:!0,$parent:!0,$self:!0,$frame:!0,$frames:!0,$frameElement:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$external:!0},Ee=function(){if("undefined"==typeof window)return!1;for(var e in window)try{!De["$"+e]&&J(window,e)&&null!==window[e]&&"object"==typeof window[e]&&Se(window[e])}catch(t){return!0}return!1}(),Ne=function(e){if("undefined"==typeof window||!Ee)return Se(e);try{return Se(e)}catch(t){return!1}},je=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],Le=je.length,xe=function(e){return"[object Arguments]"===B(e)},Te=function(t){return null!==t&&"object"==typeof t&&"number"==typeof t.length&&t.length>=0&&!$(t)&&e(t.callee)},Ze=xe(arguments)?xe:Te;G(r,{keys:function(t){var n=e(t),i=Ze(t),r=null!==t&&"object"==typeof t,o=r&&Z(t);if(!r&&!n&&!i)throw new TypeError("Object.keys called on a non-object");var a=[],s=Me&&n;if(o&&Ae||i)for(var u=0;u<t.length;++u)K(a,l(u));if(!i)for(var c in t)s&&"prototype"===c||!J(t,c)||K(a,l(c));if(Ce)for(var f=Ne(t),d=0;Le>d;d++){var p=je[d];f&&"constructor"===p||!J(t,p)||K(a,p)}return a}});var Pe=r.keys&&function(){return 2===r.keys(arguments).length}(1,2),Ye=r.keys&&function(){var e=r.keys(arguments);return 1!==arguments.length||1!==e.length||1!==e[0]}(1),ke=r.keys;G(r,{keys:function(e){return ke(Ze(e)?V(e):e)}},!Pe||Ye);var ze,Ge,Oe=0!==new Date(-0xc782b5b342b24).getUTCMonth(),Re=new Date(-0x55d318d56a724),We=new Date(14496624e5),Ue="Mon, 01 Jan -45875 11:59:59 GMT"!==Re.toUTCString(),Je=Re.getTimezoneOffset();-720>Je?(ze="Tue Jan 02 -45875"!==Re.toDateString(),Ge=!/^Thu Dec 10 2015 \d\d:\d\d:\d\d GMT[-\+]\d\d\d\d(?: |$)/.test(We.toString())):(ze="Mon Jan 01 -45875"!==Re.toDateString(),Ge=!/^Wed Dec 09 2015 \d\d:\d\d:\d\d GMT[-\+]\d\d\d\d(?: |$)/.test(We.toString()));var Be=y.bind(Date.prototype.getFullYear),Ve=y.bind(Date.prototype.getMonth),He=y.bind(Date.prototype.getDate),Fe=y.bind(Date.prototype.getUTCFullYear),Xe=y.bind(Date.prototype.getUTCMonth),_e=y.bind(Date.prototype.getUTCDate),Ke=y.bind(Date.prototype.getUTCDay),Qe=y.bind(Date.prototype.getUTCHours),qe=y.bind(Date.prototype.getUTCMinutes),$e=y.bind(Date.prototype.getUTCSeconds),et=y.bind(Date.prototype.getUTCMilliseconds),tt=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],nt=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],it=function(e,t){return He(new Date(t,e,0))};G(Date.prototype,{getFullYear:function(){if(!(this&&this instanceof Date))throw new TypeError("this is not a Date object.");var e=Be(this);return 0>e&&Ve(this)>11?e+1:e},getMonth:function(){if(!(this&&this instanceof Date))throw new TypeError("this is not a Date object.");var e=Be(this),t=Ve(this);return 0>e&&t>11?0:t},getDate:function(){if(!(this&&this instanceof Date))throw new TypeError("this is not a Date object.");var e=Be(this),t=Ve(this),n=He(this);if(0>e&&t>11){if(12===t)return n;var i=it(0,e+1);return i-n+1}return n},getUTCFullYear:function(){if(!(this&&this instanceof Date))throw new TypeError("this is not a Date object.");var e=Fe(this);return 0>e&&Xe(this)>11?e+1:e},getUTCMonth:function(){if(!(this&&this instanceof Date))throw new TypeError("this is not a Date object.");var e=Fe(this),t=Xe(this);return 0>e&&t>11?0:t},getUTCDate:function(){if(!(this&&this instanceof Date))throw new TypeError("this is not a Date object.");var e=Fe(this),t=Xe(this),n=_e(this);if(0>e&&t>11){if(12===t)return n;var i=it(0,e+1);return i-n+1}return n}},Oe),G(Date.prototype,{toUTCString:function(){if(!(this&&this instanceof Date))throw new TypeError("this is not a Date object.");var e=Ke(this),t=_e(this),n=Xe(this),i=Fe(this),r=Qe(this),o=qe(this),a=$e(this);return tt[e]+", "+(10>t?"0"+t:t)+" "+nt[n]+" "+i+" "+(10>r?"0"+r:r)+":"+(10>o?"0"+o:o)+":"+(10>a?"0"+a:a)+" GMT"}},Oe||Ue),G(Date.prototype,{toDateString:function(){if(!(this&&this instanceof Date))throw new TypeError("this is not a Date object.");var e=this.getDay(),t=this.getDate(),n=this.getMonth(),i=this.getFullYear();return tt[e]+" "+nt[n]+" "+(10>t?"0"+t:t)+" "+i}},Oe||ze),(Oe||Ge)&&(Date.prototype.toString=function(){if(!(this&&this instanceof Date))throw new TypeError("this is not a Date object.");var e=this.getDay(),t=this.getDate(),n=this.getMonth(),i=this.getFullYear(),r=this.getHours(),o=this.getMinutes(),a=this.getSeconds(),s=this.getTimezoneOffset(),l=Math.floor(Math.abs(s)/60),u=Math.floor(Math.abs(s)%60);return tt[e]+" "+nt[n]+" "+(10>t?"0"+t:t)+" "+i+" "+(10>r?"0"+r:r)+":"+(10>o?"0"+o:o)+":"+(10>a?"0"+a:a)+" GMT"+(s>0?"-":"+")+(10>l?"0"+l:l)+(10>u?"0"+u:u)},z&&r.defineProperty(Date.prototype,"toString",{configurable:!0,enumerable:!1,writable:!0}));var rt=-621987552e5,ot="-000001",at=Date.prototype.toISOString&&-1===new Date(rt).toISOString().indexOf(ot),st=Date.prototype.toISOString&&"1969-12-31T23:59:59.999Z"!==new Date(-1).toISOString(),lt=y.bind(Date.prototype.getTime);G(Date.prototype,{toISOString:function(){if(!isFinite(this)||!isFinite(lt(this)))throw new RangeError("Date.prototype.toISOString called on non-finite value.");var e=Fe(this),t=Xe(this);e+=Math.floor(t/12),t=(t%12+12)%12;var n=[t+1,_e(this),Qe(this),qe(this),$e(this)];e=(0>e?"-":e>9999?"+":"")+F("00000"+Math.abs(e),e>=0&&9999>=e?-4:-6);for(var i=0;i<n.length;++i)n[i]=F("00"+n[i],-2);return e+"-"+V(n,0,2).join("-")+"T"+V(n,2).join(":")+"."+F("000"+et(this),-3)+"Z"}},at||st);var ut=function(){try{return Date.prototype.toJSON&&null===new Date(NaN).toJSON()&&-1!==new Date(rt).toJSON().indexOf(ot)&&Date.prototype.toJSON.call({toISOString:function(){return!0}})}catch(e){return!1}}();ut||(Date.prototype.toJSON=function(t){var n=r(this),i=W.ToPrimitive(n);if("number"==typeof i&&!isFinite(i))return null;var o=n.toISOString;if(!e(o))throw new TypeError("toISOString property is not callable");return o.call(n)});var ct=1e15===Date.parse("+033658-09-27T01:46:40.000Z"),ft=!isNaN(Date.parse("2012-04-04T24:00:00.500Z"))||!isNaN(Date.parse("2012-11-31T23:59:59.000Z"))||!isNaN(Date.parse("2012-12-31T23:59:60.000Z")),dt=isNaN(Date.parse("2000-01-01T00:00:00.000Z"));if(dt||ft||!ct){var pt=Math.pow(2,31)-1,ht=R(new Date(1970,0,1,0,0,0,pt+1).getTime());Date=function(e){var t=function(n,i,r,o,a,s,u){var c,f=arguments.length;if(this instanceof e){var d=s,p=u;if(ht&&f>=7&&u>pt){var h=Math.floor(u/pt)*pt,g=Math.floor(h/1e3);d+=g,p-=1e3*g}c=1===f&&l(n)===n?new e(t.parse(n)):f>=7?new e(n,i,r,o,a,d,p):f>=6?new e(n,i,r,o,a,d):f>=5?new e(n,i,r,o,a):f>=4?new e(n,i,r,o):f>=3?new e(n,i,r):f>=2?new e(n,i):f>=1?new e(n instanceof e?+n:n):new e}else c=e.apply(this,arguments);return O(c)||G(c,{constructor:t},!0),c},n=new RegExp("^(\\d{4}|[+-]\\d{6})(?:-(\\d{2})(?:-(\\d{2})(?:T(\\d{2}):(\\d{2})(?::(\\d{2})(?:(\\.\\d{1,}))?)?(Z|(?:([-+])(\\d{2}):(\\d{2})))?)?)?)?$"),i=[0,31,59,90,120,151,181,212,243,273,304,334,365],r=function(e,t){var n=t>1?1:0;return i[t]+Math.floor((e-1969+n)/4)-Math.floor((e-1901+n)/100)+Math.floor((e-1601+n)/400)+365*(e-1970)},o=function(t){var n=0,i=t;if(ht&&i>pt){var r=Math.floor(i/pt)*pt,o=Math.floor(r/1e3);n+=o,i-=1e3*o}return c(new e(1970,0,1,0,0,n,i))};for(var a in e)J(e,a)&&(t[a]=e[a]);G(t,{now:e.now,UTC:e.UTC},!0),t.prototype=e.prototype,G(t.prototype,{constructor:t},!0);var s=function(t){var i=n.exec(t);if(i){var a,s=c(i[1]),l=c(i[2]||1)-1,u=c(i[3]||1)-1,f=c(i[4]||0),d=c(i[5]||0),p=c(i[6]||0),h=Math.floor(1e3*c(i[7]||0)),g=Boolean(i[4]&&!i[8]),m="-"===i[9]?1:-1,v=c(i[10]||0),y=c(i[11]||0),w=d>0||p>0||h>0;return(w?24:25)>f&&60>d&&60>p&&1e3>h&&l>-1&&12>l&&24>v&&60>y&&u>-1&&u<r(s,l+1)-r(s,l)&&(a=60*(24*(r(s,l)+u)+f+v*m),a=1e3*(60*(a+d+y*m)+p)+h,g&&(a=o(a)),a>=-864e13&&864e13>=a)?a:NaN}return e.parse.apply(this,arguments)};return G(t,{parse:s}),t}(Date)}Date.now||(Date.now=function(){return(new Date).getTime()});var gt=f.toFixed&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==0xde0b6b3a7640080.toFixed(0)),mt={base:1e7,size:6,data:[0,0,0,0,0,0],multiply:function(e,t){for(var n=-1,i=t;++n<mt.size;)i+=e*mt.data[n],mt.data[n]=i%mt.base,i=Math.floor(i/mt.base)},divide:function(e){for(var t=mt.size,n=0;--t>=0;)n+=mt.data[t],mt.data[t]=Math.floor(n/e),n=n%e*mt.base},numToString:function(){for(var e=mt.size,t="";--e>=0;)if(""!==t||0===e||0!==mt.data[e]){var n=l(mt.data[e]);""===t?t=n:t+=F("0000000",0,7-n.length)+n}return t},pow:function kt(e,t,n){return 0===t?n:t%2===1?kt(e,t-1,n*e):kt(e*e,t/2,n)},log:function(e){for(var t=0,n=e;n>=4096;)t+=12,n/=4096;for(;n>=2;)t+=1,n/=2;return t}},vt=function(e){var t,n,i,r,o,a,s,u;if(t=c(e),t=R(t)?0:Math.floor(t),0>t||t>20)throw new RangeError("Number.toFixed called with invalid number of decimals");if(n=c(this),R(n))return"NaN";if(-1e21>=n||n>=1e21)return l(n);if(i="",0>n&&(i="-",n=-n),r="0",n>1e-21)if(o=mt.log(n*mt.pow(2,69,1))-69,a=0>o?n*mt.pow(2,-o,1):n/mt.pow(2,o,1),a*=4503599627370496,o=52-o,o>0){for(mt.multiply(0,a),s=t;s>=7;)mt.multiply(1e7,0),s-=7;for(mt.multiply(mt.pow(10,s,1),0),s=o-1;s>=23;)mt.divide(1<<23),s-=23;mt.divide(1<<s),mt.multiply(1,1),mt.divide(2),r=mt.numToString()}else mt.multiply(0,a),mt.multiply(1<<-o,0),r=mt.numToString()+F("0.00000000000000000000",2,2+t);return t>0?(u=r.length,r=t>=u?i+F("0.0000000000000000000",0,t-u+2)+r:i+F(r,0,u-t)+"."+F(r,u-t)):r=i+r,r};G(f,{toFixed:vt},gt);var yt=function(){try{return"1"===1..toPrecision(void 0)}catch(e){return!0}}(),wt=f.toPrecision;G(f,{toPrecision:function(e){return"undefined"==typeof e?wt.call(this):wt.call(this,e)}},yt),2!=="ab".split(/(?:ab)*/).length||4!==".".split(/(.?)(.?)/).length||"t"==="tesst".split(/(s)*/)[1]||4!=="test".split(/(?:)/,-1).length||"".split(/.?/).length||".".split(/()()/).length>1?!function(){var e="undefined"==typeof/()??/.exec("")[1],n=Math.pow(2,32)-1;u.split=function(i,r){var o=String(this);if("undefined"==typeof i&&0===r)return[];if(!t(i))return X(this,i,r);var a,s,l,u,c=[],f=(i.ignoreCase?"i":"")+(i.multiline?"m":"")+(i.unicode?"u":"")+(i.sticky?"y":""),d=0,p=new RegExp(i.source,f+"g");e||(a=new RegExp("^"+p.source+"$(?!\\s)",f));var g="undefined"==typeof r?n:W.ToUint32(r);for(s=p.exec(o);s&&(l=s.index+s[0].length,!(l>d&&(K(c,F(o,d,s.index)),!e&&s.length>1&&s[0].replace(a,function(){for(var e=1;e<arguments.length-2;e++)"undefined"==typeof arguments[e]&&(s[e]=void 0)}),s.length>1&&s.index<o.length&&h.apply(c,V(s,1)),u=s[0].length,d=l,c.length>=g)));)p.lastIndex===s.index&&p.lastIndex++,s=p.exec(o);return d===o.length?(u||!p.test(""))&&K(c,""):K(c,F(o,d)),c.length>g?V(c,0,g):c}}():"0".split(void 0,0).length&&(u.split=function(e,t){return"undefined"==typeof e&&0===t?[]:X(this,e,t)});var bt=u.replace,It=function(){var e=[];return"x".replace(/x(.)?/g,function(t,n){K(e,n)}),1===e.length&&"undefined"==typeof e[0]}();It||(u.replace=function(n,i){var r=e(i),o=t(n)&&/\)[*?]/.test(n.source);if(r&&o){var a=function(e){var t=arguments.length,r=n.lastIndex;n.lastIndex=0;var o=n.exec(e)||[];return n.lastIndex=r,K(o,arguments[t-2],arguments[t-1]),i.apply(this,o)};return bt.call(this,n,a)}return bt.call(this,n,i)});var Ct=u.substr,Mt="".substr&&"b"!=="0b".substr(-1);G(u,{substr:function(e,t){var n=e;return 0>e&&(n=b(this.length+e,0)),Ct.call(this,n,t)}},Mt);var At=" \n\f\r   ᠎              \u2028\u2029\ufeff",St="​",Dt="["+At+"]",Et=new RegExp("^"+Dt+Dt+"*"),Nt=new RegExp(Dt+Dt+"*$"),jt=u.trim&&(At.trim()||!St.trim());G(u,{trim:function(){if("undefined"==typeof this||null===this)throw new TypeError("can't convert "+this+" to object");return l(this).replace(Et,"").replace(Nt,"")}},jt);var Lt=y.bind(String.prototype.trim),xt=u.lastIndexOf&&-1!=="abcあい".lastIndexOf("あい",2);G(u,{lastIndexOf:function(e){if("undefined"==typeof this||null===this)throw new TypeError("can't convert "+this+" to object");for(var t=l(this),n=l(e),i=arguments.length>1?c(arguments[1]):NaN,r=R(i)?1/0:W.ToInteger(i),o=I(b(r,0),t.length),a=n.length,s=o+a;s>0;){s=b(0,s-a);var u=_(F(t,s,o+a),n);if(-1!==u)return s+u}return-1}},xt);var Tt=u.lastIndexOf;if(G(u,{lastIndexOf:function(e){return Tt.apply(this,arguments)}},1!==u.lastIndexOf.length),(8!==parseInt(At+"08")||22!==parseInt(At+"0x16"))&&(parseInt=function(e){var t=/^[\-+]?0[xX]/;return function(n,i){var r=Lt(String(n)),o=c(i)||(t.test(r)?16:10);return e(r,o)}}(parseInt)),1/parseFloat("-0")!==-(1/0)&&(parseFloat=function(e){return function(t){var n=Lt(String(t)),i=e(n);return 0===i&&"-"===F(n,0,1)?-0:i}}(parseFloat)),"RangeError: test"!==String(new RangeError("test"))){var Zt=function(){if("undefined"==typeof this||null===this)throw new TypeError("can't convert "+this+" to object");var e=this.name;"undefined"==typeof e?e="Error":"string"!=typeof e&&(e=l(e));var t=this.message;return"undefined"==typeof t?t="":"string"!=typeof t&&(t=l(t)),e?t?e+": "+t:e:t};Error.prototype.toString=Zt}if(z){var Pt=function(e,t){if(Q(e,t)){var n=Object.getOwnPropertyDescriptor(e,t);n.configurable&&(n.enumerable=!1,Object.defineProperty(e,t,n))}};Pt(Error.prototype,"message"),""!==Error.prototype.message&&(Error.prototype.message=""),Pt(Error.prototype,"name")}if("/a/gim"!==String(/a/gim)){var Yt=function(){var e="/"+this.source+"/";return this.global&&(e+="g"),this.ignoreCase&&(e+="i"),this.multiline&&(e+="m"),e};RegExp.prototype.toString=Yt}})},{}],36:[function(e,t,n){var i=[],r=i.forEach,o=i.slice;t.exports=function(e){return r.call(o.call(arguments,1),function(t){if(t)for(var n in t)e[n]=t[n]}),e}},{}],37:[function(e,t,n){n.read=function(e,t,n,i,r){var o,a,s=8*r-i-1,l=(1<<s)-1,u=l>>1,c=-7,f=n?r-1:0,d=n?-1:1,p=e[t+f];for(f+=d,o=p&(1<<-c)-1,p>>=-c,c+=s;c>0;o=256*o+e[t+f],f+=d,c-=8);for(a=o&(1<<-c)-1,o>>=-c,c+=i;c>0;a=256*a+e[t+f],f+=d,c-=8);if(0===o)o=1-u;else{if(o===l)return a?NaN:(p?-1:1)*(1/0);a+=Math.pow(2,i),o-=u}return(p?-1:1)*a*Math.pow(2,o-i)},n.write=function(e,t,n,i,r,o){var a,s,l,u=8*o-r-1,c=(1<<u)-1,f=c>>1,d=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,p=i?0:o-1,h=i?1:-1,g=0>t||0===t&&0>1/t?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,a=c):(a=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-a))<1&&(a--,l*=2),t+=a+f>=1?d/l:d*Math.pow(2,1-f),t*l>=2&&(a++,l/=2),a+f>=c?(s=0,a=c):a+f>=1?(s=(t*l-1)*Math.pow(2,r),a+=f):(s=t*Math.pow(2,f-1)*Math.pow(2,r),a=0));r>=8;e[n+p]=255&s,p+=h,s/=256,r-=8);for(a=a<<r|s,u+=r;u>0;e[n+p]=255&a,p+=h,a/=256,u-=8);e[n+p-h]|=128*g}},{}],38:[function(e,t,n){var i=[].indexOf;t.exports=function(e,t){if(i)return e.indexOf(t);for(var n=0;n<e.length;++n)if(e[n]===t)return n;return-1}},{}],39:[function(e,t,n){function i(e){var t=r.call(e);return"[object Function]"===t||"function"==typeof e&&"[object RegExp]"!==t||"undefined"!=typeof window&&(e===window.setTimeout||e===window.alert||e===window.confirm||e===window.prompt)}t.exports=i;var r=Object.prototype.toString},{}],40:[function(e,t,n){var i={}.toString;t.exports=Array.isArray||function(e){return"[object Array]"==i.call(e)}},{}],41:[function(t,n,i){(function(t){!function(r){function o(e){throw new RangeError(P[e])}function a(e,t){for(var n=e.length,i=[];n--;)i[n]=t(e[n]);return i}function s(e,t){var n=e.split("@"),i="";n.length>1&&(i=n[0]+"@",e=n[1]),e=e.replace(Z,".");var r=e.split("."),o=a(r,t).join(".");return i+o}function l(e){for(var t,n,i=[],r=0,o=e.length;o>r;)t=e.charCodeAt(r++),t>=55296&&56319>=t&&o>r?(n=e.charCodeAt(r++),56320==(64512&n)?i.push(((1023&t)<<10)+(1023&n)+65536):(i.push(t),r--)):i.push(t);return i}function u(e){return a(e,function(e){var t="";return e>65535&&(e-=65536,t+=z(e>>>10&1023|55296),e=56320|1023&e),t+=z(e)}).join("")}function c(e){return 10>e-48?e-22:26>e-65?e-65:26>e-97?e-97:M}function f(e,t){return e+22+75*(26>e)-((0!=t)<<5)}function d(e,t,n){var i=0;for(e=n?k(e/E):e>>1,e+=k(e/t);e>Y*S>>1;i+=M)e=k(e/Y);return k(i+(Y+1)*e/(e+D))}function p(e){var t,n,i,r,a,s,l,f,p,h,g=[],m=e.length,v=0,y=j,w=N;for(n=e.lastIndexOf(L),0>n&&(n=0),i=0;n>i;++i)e.charCodeAt(i)>=128&&o("not-basic"),g.push(e.charCodeAt(i));for(r=n>0?n+1:0;m>r;){for(a=v,s=1,l=M;r>=m&&o("invalid-input"),f=c(e.charCodeAt(r++)),(f>=M||f>k((C-v)/s))&&o("overflow"),v+=f*s,p=w>=l?A:l>=w+S?S:l-w,!(p>f);l+=M)h=M-p,s>k(C/h)&&o("overflow"),s*=h;t=g.length+1,w=d(v-a,t,0==a),k(v/t)>C-y&&o("overflow"),y+=k(v/t),v%=t,g.splice(v++,0,y)}return u(g)}function h(e){var t,n,i,r,a,s,u,c,p,h,g,m,v,y,w,b=[];for(e=l(e),m=e.length,t=j,n=0,a=N,s=0;m>s;++s)g=e[s],128>g&&b.push(z(g));for(i=r=b.length,r&&b.push(L);m>i;){for(u=C,s=0;m>s;++s)g=e[s],g>=t&&u>g&&(u=g);for(v=i+1,u-t>k((C-n)/v)&&o("overflow"),n+=(u-t)*v,t=u,s=0;m>s;++s)if(g=e[s],t>g&&++n>C&&o("overflow"),g==t){for(c=n,p=M;h=a>=p?A:p>=a+S?S:p-a,!(h>c);p+=M)w=c-h,y=M-h,b.push(z(f(h+w%y,0))),c=k(w/y);b.push(z(f(c,0))),a=d(n,v,i==r),n=0,++i}++n,++t}return b.join("")}function g(e){return s(e,function(e){return x.test(e)?p(e.slice(4).toLowerCase()):e})}function m(e){return s(e,function(e){return T.test(e)?"xn--"+h(e):e})}var v="object"==typeof i&&i&&!i.nodeType&&i,y="object"==typeof n&&n&&!n.nodeType&&n,w="object"==typeof t&&t;(w.global===w||w.window===w||w.self===w)&&(r=w);var b,I,C=2147483647,M=36,A=1,S=26,D=38,E=700,N=72,j=128,L="-",x=/^xn--/,T=/[^\x20-\x7E]/,Z=/[\x2E\u3002\uFF0E\uFF61]/g,P={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},Y=M-A,k=Math.floor,z=String.fromCharCode;if(b={version:"1.4.1",ucs2:{decode:l,encode:u},decode:p,encode:h,toASCII:m,toUnicode:g},"function"==typeof e&&"object"==typeof e.amd&&e.amd)e("punycode",function(){return b});else if(v&&y)if(n.exports==v)y.exports=b;else for(I in b)b.hasOwnProperty(I)&&(v[I]=b[I]);else r.punycode=b}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],42:[function(t,n,i){!function(t,i){"undefined"!=typeof n&&n.exports?n.exports=i():"function"==typeof e&&e.amd?e(i):this[t]=i()}("$script",function(){function e(e,t){for(var n=0,i=e.length;i>n;++n)if(!t(e[n]))return l;return 1}function t(t,n){e(t,function(e){return!n(e)})}function n(o,a,s){function l(e){return e.call?e():d[e]}function c(){if(!--y){d[v]=1,m&&m();for(var n in h)e(n.split("|"),l)&&!t(h[n],l)&&(h[n]=[])}}o=o[u]?o:[o];var f=a&&a.call,m=f?a:s,v=f?o.join(""):a,y=o.length;return setTimeout(function(){t(o,function e(t,n){return null===t?c():(n||/^https?:\/\//.test(t)||!r||(t=-1===t.indexOf(".js")?r+t+".js":r+t),g[t]?(v&&(p[v]=1),2==g[t]?c():setTimeout(function(){e(t,!0)},0)):(g[t]=1,v&&(p[v]=1),void i(t,c)))})},0),n}function i(e,t){var n,i=a.createElement("script");i.onload=i.onerror=i[f]=function(){i[c]&&!/^c|loade/.test(i[c])||n||(i.onload=i[f]=null,n=1,g[e]=2,t())},i.async=1,i.src=o?e+(-1===e.indexOf("?")?"?":"&")+o:e,s.insertBefore(i,s.lastChild)}var r,o,a=document,s=a.getElementsByTagName("head")[0],l=!1,u="push",c="readyState",f="onreadystatechange",d={},p={},h={},g={};return n.get=i,n.order=function(e,t,i){!function r(o){o=e.shift(),e.length?n(o,r):n(o,t,i)}()},n.path=function(e){r=e},n.urlArgs=function(e){o=e},n.ready=function(i,r,o){i=i[u]?i:[i];var a=[];return!t(i,function(e){d[e]||a[u](e)})&&e(i,function(e){return d[e]})?r():!function(e){h[e]=h[e]||[],h[e][u](r),o&&o(a)}(i.join("|")),n},n.done=function(e){n([null],e)},n})},{}]},{},[29])(29)});
lib/flowplayer.swf CHANGED
Binary file
lib/flowplayerhls.swf ADDED
Binary file
lib/skin/all-skins.css DELETED
@@ -1,700 +0,0 @@
1
- .minimalist{position:relative;width:100%;background-size:contain;background-repeat:no-repeat;background-position:center center;display:inline-block;}
2
- .minimalist *{font-weight:inherit;font-family:inherit;font-style:inherit;text-decoration:inherit;font-size:100%;padding:0;border:0;margin:0;list-style-type:none}
3
- .minimalist a:focus{outline:0}
4
- .minimalist video{width:100%}
5
- .minimalist.is-ipad video{-webkit-transform:translateX(-2048px);}
6
- .is-ready.minimalist.is-ipad video{-webkit-transform:translateX(0)}
7
- .minimalist .fp-engine,.minimalist .fp-ui,.minimalist .fp-message{position:absolute;top:0;left:0;width:100%;height:100%;cursor:pointer;z-index:1}
8
- .minimalist .fp-message{display:none;text-align:center;padding-top:5%;cursor:default;}
9
- .minimalist .fp-message h2{font-size:120%;margin-bottom:1em}
10
- .minimalist .fp-message p{color:#666;font-size:95%}
11
- .minimalist .fp-controls{position:absolute;bottom:0;width:100%;}
12
- .no-background.minimalist .fp-controls{background-color:transparent !important;background-image:-moz-linear-gradient(transparent,transparent) !important;background-image:-webkit-gradient(linear,0 0,0 100%,from(transparent),to(transparent)) !important}
13
- .is-fullscreen.minimalist .fp-controls{bottom:3px}
14
- .is-mouseover.minimalist .fp-controls{bottom:0}
15
- .minimalist .fp-waiting{display:none;margin:19% auto;text-align:center;}
16
- .minimalist .fp-waiting *{-webkit-box-shadow:0 0 5px #333;-moz-box-shadow:0 0 5px #333;box-shadow:0 0 5px #333}
17
- .minimalist .fp-waiting em{width:1em;height:1em;-webkit-border-radius:1em;-moz-border-radius:1em;border-radius:1em;background-color:rgba(255,255,255,0.8);display:inline-block;-webkit-animation:pulse .6s infinite;-moz-animation:pulse .6s infinite;animation:pulse .6s infinite;margin:.3em;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);}
18
- .minimalist .fp-waiting em:nth-child(1){-webkit-animation-delay:.3s;-moz-animation-delay:.3s;animation-delay:.3s}
19
- .minimalist .fp-waiting em:nth-child(2){-webkit-animation-delay:.45s;-moz-animation-delay:.45s;animation-delay:.45s}
20
- .minimalist .fp-waiting em:nth-child(3){-webkit-animation-delay:.6s;-moz-animation-delay:.6s;animation-delay:.6s}
21
- .minimalist .fp-waiting p{color:#ccc;font-weight:bold}
22
- .minimalist .fp-speed{font-size:30px;background-color:#333;background-color:rgba(51,51,51,0.8);color:#eee;margin:0 auto;text-align:center;width:120px;padding:.1em 0 0;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .5s;-moz-transition:opacity .5s;transition:opacity .5s;}
23
- .minimalist .fp-speed.fp-hilite{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
24
- .minimalist .fp-help{position:absolute;top:0;left:-9999em;z-index:100;background-color:#333;background-color:rgba(51,51,51,0.9);width:100%;height:100%;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .2s;-moz-transition:opacity .2s;transition:opacity .2s;text-align:center;}
25
- .is-help.minimalist .fp-help{left:0;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
26
- .minimalist .fp-help .fp-help-section{margin:3%;direction:ltr}
27
- .minimalist .fp-help .fp-help-basics{margin-top:6%}
28
- .minimalist .fp-help p{color:#eee;margin:.5em 0;font-size:14px;line-height:1.5;display:inline-block;margin:1% 2%}
29
- .minimalist .fp-help em{background:#eee;-webkit-border-radius:.3em;-moz-border-radius:.3em;border-radius:.3em;margin-right:.4em;padding:.3em .6em;color:#333}
30
- .minimalist .fp-help small{font-size:90%;color:#aaa}
31
- .minimalist .fp-help .fp-close{display:block}
32
- @media (max-width: 600px){.minimalist .fp-help p{font-size:9px}
33
- }.minimalist .fp-subtitle{position:absolute;bottom:40px;left:-99999em;z-index:10;text-align:center;width:100%;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .3s;-moz-transition:opacity .3s;transition:opacity .3s;}
34
- .minimalist .fp-subtitle p{display:inline;background-color:#333;background-color:rgba(51,51,51,0.9);color:#eee;padding:.1em .4em;font-size:16px;line-height:1.6;}
35
- .minimalist .fp-subtitle p:after{content:'';clear:both}
36
- .minimalist .fp-subtitle.fp-active{left:0;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
37
- .minimalist .fp-fullscreen,.minimalist .fp-unload,.minimalist .fp-mute,.minimalist .fp-embed,.minimalist .fp-close,.minimalist .fp-play{background-image:url(img/white.png);background-size:37px 300px;}
38
- .is-rtl.minimalist .fp-fullscreen,.is-rtl.minimalist .fp-unload,.is-rtl.minimalist .fp-mute,.is-rtl.minimalist .fp-embed,.is-rtl.minimalist .fp-close,.is-rtl.minimalist .fp-play{background-image:url(img/white_rtl.png)}
39
- .color-light.minimalist .fp-fullscreen,.color-light.minimalist .fp-unload,.color-light.minimalist .fp-mute,.color-light.minimalist .fp-embed,.color-light.minimalist .fp-close,.color-light.minimalist .fp-play{background-image:url(img/black.png);}
40
- .is-rtl.color-light.minimalist .fp-fullscreen,.is-rtl.color-light.minimalist .fp-unload,.is-rtl.color-light.minimalist .fp-mute,.is-rtl.color-light.minimalist .fp-embed,.is-rtl.color-light.minimalist .fp-close,.is-rtl.color-light.minimalist .fp-play{background-image:url(img/black_rtl.png)}
41
- @media (-webkit-min-device-pixel-ratio: 2){.color-light.minimalist .fp-fullscreen,.color-light.minimalist .fp-unload,.color-light.minimalist .fp-mute,.color-light.minimalist .fp-embed,.color-light.minimalist .fp-close,.color-light.minimalist .fp-play{background-image:url(img/black@x2.png)}
42
- .is-rtl.color-light.minimalist .fp-fullscreen,.is-rtl.color-light.minimalist .fp-unload,.is-rtl.color-light.minimalist .fp-mute,.is-rtl.color-light.minimalist .fp-embed,.is-rtl.color-light.minimalist .fp-close,.is-rtl.color-light.minimalist .fp-play{background-image:url(img/black_rtl@x2.png)}
43
- }@media (-webkit-min-device-pixel-ratio: 2){.minimalist .fp-fullscreen,.minimalist .fp-unload,.minimalist .fp-mute,.minimalist .fp-embed,.minimalist .fp-close,.minimalist .fp-play{background-image:url(img/white@x2.png)}
44
- .is-rtl.minimalist .fp-fullscreen,.is-rtl.minimalist .fp-unload,.is-rtl.minimalist .fp-mute,.is-rtl.minimalist .fp-embed,.is-rtl.minimalist .fp-close,.is-rtl.minimalist .fp-play{background-image:url(img/white_rtl@x2.png)}
45
- }.minimalist .fp-flash-disabled{background:#333;width:390px;margin:0 auto;position:absolute;bottom:0;color:#fff}
46
- .is-splash.minimalist .fp-ui,.is-paused.minimalist .fp-ui{background:url(img/play_white.png) center no-repeat;background-size:12%;}
47
- .is-rtl.is-splash.minimalist .fp-ui,.is-rtl.is-paused.minimalist .fp-ui{background:url(img/play_white_rtl.png) center no-repeat;background-size:12%}
48
- @media (-webkit-min-device-pixel-ratio: 2){.is-splash.minimalist .fp-ui,.is-paused.minimalist .fp-ui{background:url(img/play_white@x2.png) center no-repeat;background-size:12%}
49
- .is-rtl.is-splash.minimalist .fp-ui,.is-rtl.is-paused.minimalist .fp-ui{background:url(img/play_white_rtl@x2.png) center no-repeat;background-size:12%}
50
- }.color-light.is-splash.minimalist .fp-ui,.color-light.is-paused.minimalist .fp-ui{background-image:url(img/play_black.png);}
51
- .is-rtl.color-light.is-splash.minimalist .fp-ui,.is-rtl.color-light.is-paused.minimalist .fp-ui{background-image:url(img/play_black_rtl.png)}
52
- @media (-webkit-min-device-pixel-ratio: 2){.color-light.is-splash.minimalist .fp-ui,.color-light.is-paused.minimalist .fp-ui{background-image:url(img/play_black@x2.png);}
53
- .is-rtl.color-light.is-splash.minimalist .fp-ui,.is-rtl.color-light.is-paused.minimalist .fp-ui{background-image:url(img/play_black_rtl@x2.png)}
54
- }.is-fullscreen.minimalist .fp-ui{background-size:auto}
55
- .is-seeking.minimalist .fp-ui,.is-loading.minimalist .fp-ui{background-image:none}
56
- .minimalist .fp-logo{position:absolute;top:auto;left:15px;bottom:30px;cursor:pointer;display:none;z-index:100;}
57
- .minimalist .fp-logo img{width:100%}
58
- .is-embedded.minimalist .fp-logo{display:block}
59
- .fixed-controls.minimalist .fp-logo{bottom:15px}
60
- .minimalist .fp-fullscreen,.minimalist .fp-unload,.minimalist .fp-close{position:absolute;top:5px;left:auto;right:5px;display:block;width:30px;height:23px;background-position:12px -197px;cursor:pointer;}
61
- .is-rtl.minimalist .fp-fullscreen,.is-rtl.minimalist .fp-unload,.is-rtl.minimalist .fp-close{right:auto;left:5px;background-position:18px -197px}
62
- .minimalist .fp-unload,.minimalist .fp-close{background-position:14px -175px;display:none;}
63
- .is-rtl.minimalist .fp-unload,.is-rtl.minimalist .fp-close{background-position:14px -175px}
64
- .minimalist .fp-play{display:none;width:27px;height:20px;background-position:9px -24px;position:absolute;bottom:0;left:0;}
65
- .is-rtl.minimalist .fp-play{background-position:18px -24px;left:auto;right:0}
66
- .play-button.minimalist .fp-play{display:block}
67
- .is-paused.minimalist .fp-play{background-position:9px 7px;}
68
- .is-rtl.is-paused.minimalist .fp-play{background-position:18px 7px}
69
- .minimalist.is-ready.is-closeable .fp-unload{display:block}
70
- .minimalist.is-ready.is-closeable .fp-fullscreen{display:none}
71
- .minimalist.is-fullscreen .fp-fullscreen{background-position:10px -217px;display:block !important;}
72
- .is-rtl.minimalist.is-fullscreen .fp-fullscreen{background-position:21px -217px}
73
- .minimalist.is-fullscreen .fp-unload,.minimalist.is-fullscreen .fp-close{display:none !important}
74
- .minimalist .fp-timeline{height:3px;position:relative;overflow:hidden;top:5px;height:10px;margin:0 150px 0 45px;}
75
- .no-volume.minimalist .fp-timeline{margin-right:60px}
76
- .no-mute.minimalist .fp-timeline{margin-right:140px}
77
- .no-mute.no-volume.minimalist .fp-timeline{margin-right:45px}
78
- .play-button.minimalist .fp-timeline{margin-left:67px}
79
- .is-rtl.minimalist .fp-timeline{margin:0 45px 0 150px;}
80
- .no-volume.is-rtl.minimalist .fp-timeline{margin-left:60px}
81
- .no-mute.is-rtl.minimalist .fp-timeline{margin-left:140px}
82
- .no-mute.no-volume.is-rtl.minimalist .fp-timeline{margin-left:45px}
83
- .play-button.is-rtl.minimalist .fp-timeline{margin-right:67px}
84
- .is-long.minimalist .fp-timeline{margin:0 180px 0 75px;}
85
- .no-volume.is-long.minimalist .fp-timeline{margin-right:90px}
86
- .no-mute.is-long.minimalist .fp-timeline{margin-right:75px}
87
- .play-button.is-long.minimalist .fp-timeline{margin-left:97px}
88
- .is-rtl.is-long.minimalist .fp-timeline{margin:75px 0 180px 0;}
89
- .no-volume.is-rtl.is-long.minimalist .fp-timeline{margin-left:90px}
90
- .no-mute.is-rtl.is-long.minimalist .fp-timeline{margin-left:75px}
91
- .play-button.is-rtl.is-long.minimalist .fp-timeline{margin-left:97px}
92
- .aside-time.minimalist .fp-timeline,.no-time.minimalist .fp-timeline{margin:0 110px 0 5px}
93
- .aside-time.no-volume.minimalist .fp-timeline,.no-time.no-volume.minimalist .fp-timeline{margin-right:20px}
94
- .aside-time.no-mute.minimalist .fp-timeline,.no-time.no-mute.minimalist .fp-timeline{margin-right:5px}
95
- .play-button.no-time.minimalist .fp-timeline,.play-button.aside-time.minimalist .fp-timeline{margin-left:27px}
96
- .is-rtl.aside-time.minimalist .fp-timeline,.is-rtl.no-time.minimalist .fp-timeline{margin:0 5px 0 110px}
97
- .is-rtl.aside-time.no-volume.minimalist .fp-timeline,.is-rtl.no-time.no-volume.minimalist .fp-timeline{margin-left:20px}
98
- .is-rtl.aside-time.no-mute.minimalist .fp-timeline,.is-rtl.no-time.no-mute.minimalist .fp-timeline{margin-left:5px}
99
- .is-rtl.play-button.no-time.minimalist .fp-timeline,.is-rtl.play-button.aside-time.minimalist .fp-timeline{margin-right:27px}
100
- .minimalist .fp-buffer,.minimalist .fp-progress{position:absolute;top:0;left:auto;height:100%;cursor:col-resize}
101
- .minimalist .fp-buffer{-webkit-transition:width .25s linear;-moz-transition:width .25s linear;transition:width .25s linear}
102
- .minimalist .fp-timeline.no-animation .fp-buffer{-webkit-transition:none;-moz-transition:none;transition:none}
103
- .minimalist.is-touch .fp-timeline{overflow:visible}
104
- .minimalist.is-touch .fp-progress{-webkit-transition:width .2s linear;-moz-transition:width .2s linear;transition:width .2s linear}
105
- .minimalist.is-touch .fp-timeline.is-dragging .fp-progress{-webkit-transition:right .1s linear,border .1s linear,top .1s linear,left .1s linear;-moz-transition:right .1s linear,border .1s linear,top .1s linear,left .1s linear;transition:right .1s linear,border .1s linear,top .1s linear,left .1s linear}
106
- .minimalist.is-touch.is-mouseover .fp-progress:after,.minimalist.is-touch.is-mouseover .fp-progress:before{content:'';display:block;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;position:absolute;right:-5px}
107
- .minimalist.is-touch.is-rtl.is-mouseover .fp-progress:after,.minimalist.is-touch.is-rtl.is-mouseover .fp-progress:before{right:auto;left:-5px}
108
- .minimalist.is-touch.is-rtl.is-mouseover .fp-progress:after{left:-10px;-webkit-box-shadow:-1px 0 4px rgba(0,0,0,0.5);-moz-box-shadow:-1px 0 4px rgba(0,0,0,0.5);box-shadow:-1px 0 4px rgba(0,0,0,0.5)}
109
- .minimalist.is-touch.is-mouseover .fp-progress:before{width:10px;height:10px}
110
- .minimalist.is-touch.is-mouseover .fp-progress:after{height:10px;width:10px;top:-5px;right:-10px;border:5px solid rgba(255,255,255,0.65);-webkit-box-shadow:1px 0 4px rgba(0,0,0,0.5);-moz-box-shadow:1px 0 4px rgba(0,0,0,0.5);box-shadow:1px 0 4px rgba(0,0,0,0.5)}
111
- .minimalist.is-touch.is-mouseover .fp-timeline.is-dragging .fp-progress:after{border:10px solid #fff;-webkit-border-radius:20px;-moz-border-radius:20px;border-radius:20px;-webkit-transition:inherit;-moz-transition:inherit;transition:inherit;top:-10px;right:-15px}
112
- .minimalist.is-touch.is-rtl.is-mouseover .fp-timeline.is-dragging .fp-progress:after{left:-15px;right:auto;border:10px solid #fff}
113
- .minimalist .fp-volume{position:absolute;top:7.5px;right:5px;}
114
- .is-rtl.minimalist .fp-volume{right:auto;left:5px}
115
- .minimalist .fp-mute{position:relative;width:10px;height:15px;float:left;top:-5px;cursor:pointer;background-position:-2px -99px;}
116
- .is-rtl.minimalist .fp-mute{float:right;background-position:-25px -99px}
117
- .no-mute.minimalist .fp-mute{display:none}
118
- .minimalist .fp-volumeslider{width:90px;height:5px;cursor:col-resize;float:left;}
119
- .is-rtl.minimalist .fp-volumeslider{float:right}
120
- .no-volume.minimalist .fp-volumeslider{display:none}
121
- .minimalist .fp-volumelevel{height:100%}
122
- .minimalist .fp-time{text-shadow:0 0 1px #000;font-size:12px;font-weight:bold;color:#fff;width:100%;}
123
- .minimalist .fp-time.is-inverted .fp-duration{display:none}
124
- .minimalist .fp-time.is-inverted .fp-remaining{display:inline}
125
- .minimalist .fp-time em{width:35px;height:10px;line-height:10px;text-align:center;position:absolute;bottom:5px}
126
- .no-time.minimalist .fp-time{display:none}
127
- .is-long.minimalist .fp-time em{width:65px}
128
- .minimalist .fp-elapsed{left:5px;}
129
- .play-button.minimalist .fp-elapsed{left:27px}
130
- .is-rtl.minimalist .fp-elapsed{left:auto;right:5px;}
131
- .play-button.is-rtl.minimalist .fp-elapsed{right:27px}
132
- .minimalist .fp-remaining,.minimalist .fp-duration{right:110px;color:#eee;}
133
- .no-volume.minimalist .fp-remaining,.no-volume.minimalist .fp-duration{right:20px}
134
- .no-mute.minimalist .fp-remaining,.no-mute.minimalist .fp-duration{right:100px}
135
- .no-mute.no-volume.minimalist .fp-remaining,.no-mute.no-volume.minimalist .fp-duration{right:5px}
136
- .is-rtl.minimalist .fp-remaining,.is-rtl.minimalist .fp-duration{right:auto;left:110px;}
137
- .no-volume.is-rtl.minimalist .fp-remaining,.no-volume.is-rtl.minimalist .fp-duration{left:20px}
138
- .no-mute.is-rtl.minimalist .fp-remaining,.no-mute.is-rtl.minimalist .fp-duration{left:100px}
139
- .no-mute.no-volume.is-rtl.minimalist .fp-remaining,.no-mute.no-volume.is-rtl.minimalist .fp-duration{left:5px}
140
- .minimalist .fp-remaining{display:none}
141
- .minimalist.color-light .fp-time{color:#222;text-shadow:0 0 1px #fff}
142
- .minimalist.color-light .fp-remaining,.minimalist.color-light .fp-duration{color:#666}
143
- .minimalist.aside-time .fp-time{position:absolute;top:5px;left:5px;bottom:auto !important;width:85px;}
144
- .minimalist.aside-time .fp-time strong,.minimalist.aside-time .fp-time em{position:static}
145
- .minimalist.aside-time .fp-time .fp-elapsed{margin-right:5px;}
146
- .is-rtl.minimalist.aside-time .fp-time .fp-elapsed{margin-right:auto;margin-left:5px}
147
- .minimalist.is-long.aside-time .fp-time{width:130px}
148
- .minimalist.is-splash,.minimalist.is-poster{cursor:pointer;}
149
- .minimalist.is-splash .fp-controls,.minimalist.is-poster .fp-controls,.minimalist.is-splash .fp-fullscreen,.minimalist.is-poster .fp-fullscreen,.minimalist.is-splash .fp-unload,.minimalist.is-poster .fp-unload,.minimalist.is-splash .fp-time,.minimalist.is-poster .fp-time,.minimalist.is-splash .fp-embed,.minimalist.is-poster .fp-embed{display:none !important}
150
- .minimalist.is-poster .fp-engine{top:-9999em}
151
- .minimalist.is-loading .fp-waiting{display:block}
152
- .minimalist.is-loading .fp-controls,.minimalist.is-loading .fp-time{display:none}
153
- .minimalist.is-loading .fp-ui{background-position:-9999em}
154
- .minimalist.is-loading video.fp-engine{position:absolute;top:-9999em}
155
- .minimalist.is-seeking .fp-waiting{display:block}
156
- .minimalist.is-playing{background-image:none !important;background-color:#333;}
157
- .minimalist.is-playing.hls-fix.is-finished .fp-engine{position:absolute;top:-9999em}
158
- .minimalist.is-fullscreen{position:fixed !important;top:0 !important;left:0 !important;border:0 !important;margin:0 !important;width:100% !important;height:100% !important;max-width:100% !important;z-index:99999 !important;-webkit-box-shadow:0 !important;-moz-box-shadow:0 !important;box-shadow:0 !important;background-image:none !important;background-color:#333;}
159
- .is-rtl.minimalist.is-fullscreen{left:auto !important;right:0 !important}
160
- .minimalist.is-error{border:1px solid #909090;background:#fdfdfd !important;}
161
- .minimalist.is-error h2{font-weight:bold;font-size:large;margin-top:10%}
162
- .minimalist.is-error .fp-message{display:block}
163
- .minimalist.is-error object,.minimalist.is-error video,.minimalist.is-error .fp-controls,.minimalist.is-error .fp-time,.minimalist.is-error .fp-subtitle{display:none}
164
- .minimalist.is-ready.is-muted .fp-mute{opacity:.5;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50)}
165
- .minimalist.is-mouseout .fp-controls{height:0;-webkit-transition:height .15s .3s;-moz-transition:height .15s .3s;transition:height .15s .3s}
166
- .minimalist.is-mouseout .fp-timeline{margin:0 !important}
167
- .minimalist.is-mouseout .fp-timeline{-webkit-transition:height .15s .3s,top .15s .3s,margin .15s .3s;-moz-transition:height .15s .3s,top .15s .3s,margin .15s .3s;transition:height .15s .3s,top .15s .3s,margin .15s .3s;height:4px;top:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}
168
- .minimalist.is-mouseout .fp-fullscreen,.minimalist.is-mouseout .fp-unload,.minimalist.is-mouseout .fp-elapsed,.minimalist.is-mouseout .fp-remaining,.minimalist.is-mouseout .fp-duration,.minimalist.is-mouseout .fp-embed,.minimalist.is-mouseout .fp-volume,.minimalist.is-mouseout .fp-play{opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .15s .3s;-moz-transition:opacity .15s .3s;transition:opacity .15s .3s}
169
- .minimalist.is-mouseover .fp-controls,.minimalist.fixed-controls .fp-controls{height:20px}
170
- .minimalist.is-mouseover .fp-fullscreen,.minimalist.fixed-controls .fp-fullscreen,.minimalist.is-mouseover .fp-unload,.minimalist.fixed-controls .fp-unload,.minimalist.is-mouseover .fp-elapsed,.minimalist.fixed-controls .fp-elapsed,.minimalist.is-mouseover .fp-remaining,.minimalist.fixed-controls .fp-remaining,.minimalist.is-mouseover .fp-duration,.minimalist.fixed-controls .fp-duration,.minimalist.is-mouseover .fp-embed,.minimalist.fixed-controls .fp-embed,.minimalist.is-mouseover .fp-logo,.minimalist.fixed-controls .fp-logo,.minimalist.is-mouseover .fp-volume,.minimalist.fixed-controls .fp-volume,.minimalist.is-mouseover .fp-play,.minimalist.fixed-controls .fp-play{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
171
- .minimalist.fixed-controls .fp-volume{display:block}
172
- .minimalist.fixed-controls .fp-controls{bottom:-20px;}
173
- .is-fullscreen.minimalist.fixed-controls .fp-controls{bottom:0}
174
- .minimalist.fixed-controls .fp-time em{bottom:-15px;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);}
175
- .is-fullscreen.minimalist.fixed-controls .fp-time em{bottom:5px}
176
- .minimalist.is-disabled .fp-progress{background-color:#999}
177
- .minimalist.is-flash-disabled{background-color:#333;}
178
- .minimalist.is-flash-disabled object.fp-engine{z-index:100}
179
- .minimalist.is-flash-disabled .fp-flash-disabled{display:block;z-index:101}
180
- .minimalist .fp-embed{position:absolute;top:5px;left:5px;display:block;width:25px;height:20px;background-position:3px -237px;}
181
- .is-rtl.minimalist .fp-embed{background-position:22px -237px;left:auto;right:5px}
182
- .minimalist .fp-embed-code{position:absolute;display:none;top:10px;left:40px;background-color:#333;padding:3px 5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 3px #ccc;-moz-box-shadow:0 0 3px #ccc;box-shadow:0 0 3px #ccc;font-size:12px;}
183
- .minimalist .fp-embed-code:before{content:'';width:0;height:0;position:absolute;top:2px;left:-10px;border:5px solid transparent;border-right-color:#333}
184
- .is-rtl.minimalist .fp-embed-code{left:auto;right:40px;}
185
- .is-rtl.minimalist .fp-embed-code:before{left:auto;right:-10px;border-right-color:transparent;border-left-color:#333}
186
- .minimalist .fp-embed-code textarea{width:400px;height:16px;font-family:monaco,"courier new",verdana;color:#777;white-space:nowrap;resize:none;overflow:hidden;border:0;outline:0;background-color:transparent;color:#ccc}
187
- .minimalist .fp-embed-code label{display:block;color:#999}
188
- .minimalist.is-embedding .fp-embed,.minimalist.is-embedding .fp-embed-code{display:block;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
189
- .minimalist.aside-time .fp-embed{left:85px;}
190
- .is-rtl.minimalist.aside-time .fp-embed{left:auto;right:85px}
191
- .minimalist.aside-time .fp-embed-code{left:115px;}
192
- .is-rtl.minimalist.aside-time .fp-embed-code{left:auto;right:115px}
193
- .minimalist.aside-time.is-embedding .fp-time{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
194
- .minimalist.is-long.aside-time .fp-embed{left:130px;}
195
- .is-rtl.minimalist.is-long.aside-time .fp-embed{left:auto;right:130px}
196
- .minimalist.no-time .fp-embed{left:5px !important;}
197
- .is-rtl.minimalist.no-time .fp-embed{left:auto;right:5px !important}
198
- .minimalist.is-live .fp-timeline,.minimalist.is-live .fp-duration,.minimalist.is-live .fp-remaining{display:none}
199
- .minimalist .fp-context-menu{position:absolute;display:none;z-index:1001;background-color:#fff;padding:10px;border:1px solid #aaa;-webkit-box-shadow:0 0 4px #888;-moz-box-shadow:0 0 4px #888;box-shadow:0 0 4px #888;width:170px;}
200
- .minimalist .fp-context-menu li{text-align:center;padding:10px;color:#444;margin:0 -10px 0 -10px;}
201
- .minimalist .fp-context-menu li a{color:#00a7c8;font-size:110%}
202
- .minimalist .fp-context-menu li:hover:not(.copyright){background-color:#eee}
203
- .minimalist .fp-context-menu li.copyright{margin:0;padding-left:110px;background-image:url("img/flowplayer.png");background-repeat:no-repeat;background-size:100px 20px;background-position:5px 5px;border-bottom:1px solid #bbb;}
204
- @media (-webkit-min-device-pixel-ratio: 2){.minimalist .fp-context-menu li.copyright{background-image:url("img/flowplayer@2x.png")}
205
- }@-moz-keyframes pulse{0%{opacity:0}
206
- 100%{opacity:1}
207
- }@-webkit-keyframes pulse{0%{opacity:0}
208
- 100%{opacity:1}
209
- }@-o-keyframes pulse{0%{opacity:0}
210
- 100%{opacity:1}
211
- }@-ms-keyframes pulse{0%{opacity:0}
212
- 100%{opacity:1}
213
- }@keyframes pulse{0%{opacity:0}
214
- 100%{opacity:1}
215
- }.minimalist .fp-controls{background-color:#333;background-color:rgba(51,51,51,0.6)}
216
- .minimalist.fixed-controls .fp-controls{background-color:#333}
217
- .minimalist .fp-timeline{background-color:#666}
218
- .minimalist .fp-buffer{background-color:#eee}
219
- .minimalist .fp-progress{background-color:#00a7c8}
220
- .minimalist .fp-volumeslider{background-color:#000}
221
- .minimalist .fp-volumelevel{background-color:#fff}
222
- .minimalist .fp-play{height:24px}
223
- .minimalist.is-touch.is-mouseover .fp-progress:before{background-color:#00a7c8}
224
- .minimalist.color-light .fp-controls{background-color:rgba(255,255,255,0.6)}
225
- .minimalist.color-light.fixed-controls .fp-controls{background-color:#fff}
226
- .minimalist.color-light .fp-volumeslider{background-color:#ddd}
227
- .minimalist.color-light .fp-volumelevel{background-color:#222}
228
- .minimalist.color-alt .fp-progress{background-color:#fff}
229
- .minimalist.color-alt.is-touch.is-mouseover .fp-progress:before{background-color:#fff}
230
- .minimalist.color-alt .fp-buffer{background-color:#999}
231
- .minimalist.color-alt2 .fp-progress{background-color:#900}
232
- .minimalist.color-alt2.is-touch.is-mouseover .fp-progress:before{background-color:#900}
233
- .functional{position:relative;width:100%;background-size:contain;background-repeat:no-repeat;background-position:center center;display:inline-block;}
234
- .functional *{font-weight:inherit;font-family:inherit;font-style:inherit;text-decoration:inherit;font-size:100%;padding:0;border:0;margin:0;list-style-type:none}
235
- .functional a:focus{outline:0}
236
- .functional video{width:100%}
237
- .functional.is-ipad video{-webkit-transform:translateX(-2048px);}
238
- .is-ready.functional.is-ipad video{-webkit-transform:translateX(0)}
239
- .functional .fp-engine,.functional .fp-ui,.functional .fp-message{position:absolute;top:0;left:0;width:100%;height:100%;cursor:pointer;z-index:1}
240
- .functional .fp-message{display:none;text-align:center;padding-top:5%;cursor:default;}
241
- .functional .fp-message h2{font-size:120%;margin-bottom:1em}
242
- .functional .fp-message p{color:#666;font-size:95%}
243
- .functional .fp-controls{position:absolute;bottom:0;width:100%;}
244
- .no-background.functional .fp-controls{background-color:transparent !important;background-image:-moz-linear-gradient(transparent,transparent) !important;background-image:-webkit-gradient(linear,0 0,0 100%,from(transparent),to(transparent)) !important}
245
- .is-fullscreen.functional .fp-controls{bottom:3px}
246
- .is-mouseover.functional .fp-controls{bottom:0}
247
- .functional .fp-waiting{display:none;margin:19% auto;text-align:center;}
248
- .functional .fp-waiting *{-webkit-box-shadow:0 0 5px #333;-moz-box-shadow:0 0 5px #333;box-shadow:0 0 5px #333}
249
- .functional .fp-waiting em{width:1em;height:1em;-webkit-border-radius:1em;-moz-border-radius:1em;border-radius:1em;background-color:rgba(255,255,255,0.8);display:inline-block;-webkit-animation:pulse .6s infinite;-moz-animation:pulse .6s infinite;animation:pulse .6s infinite;margin:.3em;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);}
250
- .functional .fp-waiting em:nth-child(1){-webkit-animation-delay:.3s;-moz-animation-delay:.3s;animation-delay:.3s}
251
- .functional .fp-waiting em:nth-child(2){-webkit-animation-delay:.45s;-moz-animation-delay:.45s;animation-delay:.45s}
252
- .functional .fp-waiting em:nth-child(3){-webkit-animation-delay:.6s;-moz-animation-delay:.6s;animation-delay:.6s}
253
- .functional .fp-waiting p{color:#ccc;font-weight:bold}
254
- .functional .fp-speed{font-size:30px;background-color:#333;background-color:rgba(51,51,51,0.8);color:#eee;margin:0 auto;text-align:center;width:120px;padding:.1em 0 0;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .5s;-moz-transition:opacity .5s;transition:opacity .5s;}
255
- .functional .fp-speed.fp-hilite{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
256
- .functional .fp-help{position:absolute;top:0;left:-9999em;z-index:100;background-color:#333;background-color:rgba(51,51,51,0.9);width:100%;height:100%;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .2s;-moz-transition:opacity .2s;transition:opacity .2s;text-align:center;}
257
- .is-help.functional .fp-help{left:0;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
258
- .functional .fp-help .fp-help-section{margin:3%;direction:ltr}
259
- .functional .fp-help .fp-help-basics{margin-top:6%}
260
- .functional .fp-help p{color:#eee;margin:.5em 0;font-size:14px;line-height:1.5;display:inline-block;margin:1% 2%}
261
- .functional .fp-help em{background:#eee;-webkit-border-radius:.3em;-moz-border-radius:.3em;border-radius:.3em;margin-right:.4em;padding:.3em .6em;color:#333}
262
- .functional .fp-help small{font-size:90%;color:#aaa}
263
- .functional .fp-help .fp-close{display:block}
264
- @media (max-width: 600px){.functional .fp-help p{font-size:9px}
265
- }.functional .fp-subtitle{position:absolute;bottom:40px;left:-99999em;z-index:10;text-align:center;width:100%;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .3s;-moz-transition:opacity .3s;transition:opacity .3s;}
266
- .functional .fp-subtitle p{display:inline;background-color:#333;background-color:rgba(51,51,51,0.9);color:#eee;padding:.1em .4em;font-size:16px;line-height:1.6;}
267
- .functional .fp-subtitle p:after{content:'';clear:both}
268
- .functional .fp-subtitle.fp-active{left:0;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
269
- .functional .fp-fullscreen,.functional .fp-unload,.functional .fp-mute,.functional .fp-embed,.functional .fp-close,.functional .fp-play{background-image:url(img/white.png);background-size:37px 300px;}
270
- .is-rtl.functional .fp-fullscreen,.is-rtl.functional .fp-unload,.is-rtl.functional .fp-mute,.is-rtl.functional .fp-embed,.is-rtl.functional .fp-close,.is-rtl.functional .fp-play{background-image:url(img/white_rtl.png)}
271
- .color-light.functional .fp-fullscreen,.color-light.functional .fp-unload,.color-light.functional .fp-mute,.color-light.functional .fp-embed,.color-light.functional .fp-close,.color-light.functional .fp-play{background-image:url(img/black.png);}
272
- .is-rtl.color-light.functional .fp-fullscreen,.is-rtl.color-light.functional .fp-unload,.is-rtl.color-light.functional .fp-mute,.is-rtl.color-light.functional .fp-embed,.is-rtl.color-light.functional .fp-close,.is-rtl.color-light.functional .fp-play{background-image:url(img/black_rtl.png)}
273
- @media (-webkit-min-device-pixel-ratio: 2){.color-light.functional .fp-fullscreen,.color-light.functional .fp-unload,.color-light.functional .fp-mute,.color-light.functional .fp-embed,.color-light.functional .fp-close,.color-light.functional .fp-play{background-image:url(img/black@x2.png)}
274
- .is-rtl.color-light.functional .fp-fullscreen,.is-rtl.color-light.functional .fp-unload,.is-rtl.color-light.functional .fp-mute,.is-rtl.color-light.functional .fp-embed,.is-rtl.color-light.functional .fp-close,.is-rtl.color-light.functional .fp-play{background-image:url(img/black_rtl@x2.png)}
275
- }@media (-webkit-min-device-pixel-ratio: 2){.functional .fp-fullscreen,.functional .fp-unload,.functional .fp-mute,.functional .fp-embed,.functional .fp-close,.functional .fp-play{background-image:url(img/white@x2.png)}
276
- .is-rtl.functional .fp-fullscreen,.is-rtl.functional .fp-unload,.is-rtl.functional .fp-mute,.is-rtl.functional .fp-embed,.is-rtl.functional .fp-close,.is-rtl.functional .fp-play{background-image:url(img/white_rtl@x2.png)}
277
- }.functional .fp-flash-disabled{background:#333;width:390px;margin:0 auto;position:absolute;bottom:0;color:#fff}
278
- .is-splash.functional .fp-ui,.is-paused.functional .fp-ui{background:url(img/play_white.png) center no-repeat;background-size:12%;}
279
- .is-rtl.is-splash.functional .fp-ui,.is-rtl.is-paused.functional .fp-ui{background:url(img/play_white_rtl.png) center no-repeat;background-size:12%}
280
- @media (-webkit-min-device-pixel-ratio: 2){.is-splash.functional .fp-ui,.is-paused.functional .fp-ui{background:url(img/play_white@x2.png) center no-repeat;background-size:12%}
281
- .is-rtl.is-splash.functional .fp-ui,.is-rtl.is-paused.functional .fp-ui{background:url(img/play_white_rtl@x2.png) center no-repeat;background-size:12%}
282
- }.color-light.is-splash.functional .fp-ui,.color-light.is-paused.functional .fp-ui{background-image:url(img/play_black.png);}
283
- .is-rtl.color-light.is-splash.functional .fp-ui,.is-rtl.color-light.is-paused.functional .fp-ui{background-image:url(img/play_black_rtl.png)}
284
- @media (-webkit-min-device-pixel-ratio: 2){.color-light.is-splash.functional .fp-ui,.color-light.is-paused.functional .fp-ui{background-image:url(img/play_black@x2.png);}
285
- .is-rtl.color-light.is-splash.functional .fp-ui,.is-rtl.color-light.is-paused.functional .fp-ui{background-image:url(img/play_black_rtl@x2.png)}
286
- }.is-fullscreen.functional .fp-ui{background-size:auto}
287
- .is-seeking.functional .fp-ui,.is-loading.functional .fp-ui{background-image:none}
288
- .functional .fp-logo{position:absolute;top:auto;left:15px;bottom:40px;cursor:pointer;display:none;z-index:100;}
289
- .functional .fp-logo img{width:100%}
290
- .is-embedded.functional .fp-logo{display:block}
291
- .fixed-controls.functional .fp-logo{bottom:15px}
292
- .functional .fp-fullscreen,.functional .fp-unload,.functional .fp-close{position:absolute;top:10px;left:auto;right:10px;display:block;width:30px;height:23px;background-position:12px -197px;cursor:pointer;}
293
- .is-rtl.functional .fp-fullscreen,.is-rtl.functional .fp-unload,.is-rtl.functional .fp-close{right:auto;left:10px;background-position:18px -197px}
294
- .functional .fp-unload,.functional .fp-close{background-position:14px -175px;display:none;}
295
- .is-rtl.functional .fp-unload,.is-rtl.functional .fp-close{background-position:14px -175px}
296
- .functional .fp-play{display:none;width:27px;height:30px;background-position:9px -24px;position:absolute;bottom:0;left:0;}
297
- .is-rtl.functional .fp-play{background-position:18px -24px;left:auto;right:0}
298
- .play-button.functional .fp-play{display:block}
299
- .is-paused.functional .fp-play{background-position:9px 7px;}
300
- .is-rtl.is-paused.functional .fp-play{background-position:18px 7px}
301
- .functional.is-ready.is-closeable .fp-unload{display:block}
302
- .functional.is-ready.is-closeable .fp-fullscreen{display:none}
303
- .functional.is-fullscreen .fp-fullscreen{background-position:10px -217px;display:block !important;}
304
- .is-rtl.functional.is-fullscreen .fp-fullscreen{background-position:21px -217px}
305
- .functional.is-fullscreen .fp-unload,.functional.is-fullscreen .fp-close{display:none !important}
306
- .functional .fp-timeline{height:3px;position:relative;overflow:hidden;top:10px;height:10px;margin:0 165px 0 55px;}
307
- .no-volume.functional .fp-timeline{margin-right:75px}
308
- .no-mute.functional .fp-timeline{margin-right:155px}
309
- .no-mute.no-volume.functional .fp-timeline{margin-right:55px}
310
- .play-button.functional .fp-timeline{margin-left:72px}
311
- .is-rtl.functional .fp-timeline{margin:0 55px 0 165px;}
312
- .no-volume.is-rtl.functional .fp-timeline{margin-left:75px}
313
- .no-mute.is-rtl.functional .fp-timeline{margin-left:155px}
314
- .no-mute.no-volume.is-rtl.functional .fp-timeline{margin-left:55px}
315
- .play-button.is-rtl.functional .fp-timeline{margin-right:72px}
316
- .is-long.functional .fp-timeline{margin:0 195px 0 85px;}
317
- .no-volume.is-long.functional .fp-timeline{margin-right:105px}
318
- .no-mute.is-long.functional .fp-timeline{margin-right:85px}
319
- .play-button.is-long.functional .fp-timeline{margin-left:102px}
320
- .is-rtl.is-long.functional .fp-timeline{margin:85px 0 195px 0;}
321
- .no-volume.is-rtl.is-long.functional .fp-timeline{margin-left:105px}
322
- .no-mute.is-rtl.is-long.functional .fp-timeline{margin-left:85px}
323
- .play-button.is-rtl.is-long.functional .fp-timeline{margin-left:102px}
324
- .aside-time.functional .fp-timeline,.no-time.functional .fp-timeline{margin:0 120px 0 10px}
325
- .aside-time.no-volume.functional .fp-timeline,.no-time.no-volume.functional .fp-timeline{margin-right:30px}
326
- .aside-time.no-mute.functional .fp-timeline,.no-time.no-mute.functional .fp-timeline{margin-right:10px}
327
- .play-button.no-time.functional .fp-timeline,.play-button.aside-time.functional .fp-timeline{margin-left:27px}
328
- .is-rtl.aside-time.functional .fp-timeline,.is-rtl.no-time.functional .fp-timeline{margin:0 10px 0 120px}
329
- .is-rtl.aside-time.no-volume.functional .fp-timeline,.is-rtl.no-time.no-volume.functional .fp-timeline{margin-left:30px}
330
- .is-rtl.aside-time.no-mute.functional .fp-timeline,.is-rtl.no-time.no-mute.functional .fp-timeline{margin-left:10px}
331
- .is-rtl.play-button.no-time.functional .fp-timeline,.is-rtl.play-button.aside-time.functional .fp-timeline{margin-right:27px}
332
- .functional .fp-buffer,.functional .fp-progress{position:absolute;top:0;left:auto;height:100%;cursor:col-resize}
333
- .functional .fp-buffer{-webkit-transition:width .25s linear;-moz-transition:width .25s linear;transition:width .25s linear}
334
- .functional .fp-timeline.no-animation .fp-buffer{-webkit-transition:none;-moz-transition:none;transition:none}
335
- .functional.is-touch .fp-timeline{overflow:visible}
336
- .functional.is-touch .fp-progress{-webkit-transition:width .2s linear;-moz-transition:width .2s linear;transition:width .2s linear}
337
- .functional.is-touch .fp-timeline.is-dragging .fp-progress{-webkit-transition:right .1s linear,border .1s linear,top .1s linear,left .1s linear;-moz-transition:right .1s linear,border .1s linear,top .1s linear,left .1s linear;transition:right .1s linear,border .1s linear,top .1s linear,left .1s linear}
338
- .functional.is-touch.is-mouseover .fp-progress:after,.functional.is-touch.is-mouseover .fp-progress:before{content:'';display:block;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;position:absolute;right:-5px}
339
- .functional.is-touch.is-rtl.is-mouseover .fp-progress:after,.functional.is-touch.is-rtl.is-mouseover .fp-progress:before{right:auto;left:-5px}
340
- .functional.is-touch.is-rtl.is-mouseover .fp-progress:after{left:-10px;-webkit-box-shadow:-1px 0 4px rgba(0,0,0,0.5);-moz-box-shadow:-1px 0 4px rgba(0,0,0,0.5);box-shadow:-1px 0 4px rgba(0,0,0,0.5)}
341
- .functional.is-touch.is-mouseover .fp-progress:before{width:10px;height:10px}
342
- .functional.is-touch.is-mouseover .fp-progress:after{height:10px;width:10px;top:-5px;right:-10px;border:5px solid rgba(255,255,255,0.65);-webkit-box-shadow:1px 0 4px rgba(0,0,0,0.5);-moz-box-shadow:1px 0 4px rgba(0,0,0,0.5);box-shadow:1px 0 4px rgba(0,0,0,0.5)}
343
- .functional.is-touch.is-mouseover .fp-timeline.is-dragging .fp-progress:after{border:10px solid #fff;-webkit-border-radius:20px;-moz-border-radius:20px;border-radius:20px;-webkit-transition:inherit;-moz-transition:inherit;transition:inherit;top:-10px;right:-15px}
344
- .functional.is-touch.is-rtl.is-mouseover .fp-timeline.is-dragging .fp-progress:after{left:-15px;right:auto;border:10px solid #fff}
345
- .functional .fp-volume{position:absolute;top:11px;right:10px;}
346
- .is-rtl.functional .fp-volume{right:auto;left:10px}
347
- .functional .fp-mute{position:relative;width:10px;height:15px;float:left;top:-3.5px;cursor:pointer;background-position:-2px -99px;}
348
- .is-rtl.functional .fp-mute{float:right;background-position:-25px -99px}
349
- .no-mute.functional .fp-mute{display:none}
350
- .functional .fp-volumeslider{width:90px;height:8px;cursor:col-resize;float:left;}
351
- .is-rtl.functional .fp-volumeslider{float:right}
352
- .no-volume.functional .fp-volumeslider{display:none}
353
- .functional .fp-volumelevel{height:100%}
354
- .functional .fp-time{text-shadow:0 0 1px #000;font-size:12px;font-weight:bold;color:#fff;width:100%;}
355
- .functional .fp-time.is-inverted .fp-duration{display:none}
356
- .functional .fp-time.is-inverted .fp-remaining{display:inline}
357
- .functional .fp-time em{width:35px;height:10px;line-height:10px;text-align:center;position:absolute;bottom:10px}
358
- .no-time.functional .fp-time{display:none}
359
- .is-long.functional .fp-time em{width:65px}
360
- .functional .fp-elapsed{left:10px;}
361
- .play-button.functional .fp-elapsed{left:27px}
362
- .is-rtl.functional .fp-elapsed{left:auto;right:10px;}
363
- .play-button.is-rtl.functional .fp-elapsed{right:27px}
364
- .functional .fp-remaining,.functional .fp-duration{right:120px;color:#eee;}
365
- .no-volume.functional .fp-remaining,.no-volume.functional .fp-duration{right:30px}
366
- .no-mute.functional .fp-remaining,.no-mute.functional .fp-duration{right:110px}
367
- .no-mute.no-volume.functional .fp-remaining,.no-mute.no-volume.functional .fp-duration{right:10px}
368
- .is-rtl.functional .fp-remaining,.is-rtl.functional .fp-duration{right:auto;left:120px;}
369
- .no-volume.is-rtl.functional .fp-remaining,.no-volume.is-rtl.functional .fp-duration{left:30px}
370
- .no-mute.is-rtl.functional .fp-remaining,.no-mute.is-rtl.functional .fp-duration{left:110px}
371
- .no-mute.no-volume.is-rtl.functional .fp-remaining,.no-mute.no-volume.is-rtl.functional .fp-duration{left:10px}
372
- .functional .fp-remaining{display:none}
373
- .functional.color-light .fp-time{color:#222;text-shadow:0 0 1px #fff}
374
- .functional.color-light .fp-remaining,.functional.color-light .fp-duration{color:#666}
375
- .functional.aside-time .fp-time{position:absolute;top:10px;left:10px;bottom:auto !important;width:100px;}
376
- .functional.aside-time .fp-time strong,.functional.aside-time .fp-time em{position:static}
377
- .functional.aside-time .fp-time .fp-elapsed{margin-right:10px;}
378
- .is-rtl.functional.aside-time .fp-time .fp-elapsed{margin-right:auto;margin-left:10px}
379
- .functional.is-long.aside-time .fp-time{width:130px}
380
- .functional.is-splash,.functional.is-poster{cursor:pointer;}
381
- .functional.is-splash .fp-controls,.functional.is-poster .fp-controls,.functional.is-splash .fp-fullscreen,.functional.is-poster .fp-fullscreen,.functional.is-splash .fp-unload,.functional.is-poster .fp-unload,.functional.is-splash .fp-time,.functional.is-poster .fp-time,.functional.is-splash .fp-embed,.functional.is-poster .fp-embed{display:none !important}
382
- .functional.is-poster .fp-engine{top:-9999em}
383
- .functional.is-loading .fp-waiting{display:block}
384
- .functional.is-loading .fp-controls,.functional.is-loading .fp-time{display:none}
385
- .functional.is-loading .fp-ui{background-position:-9999em}
386
- .functional.is-loading video.fp-engine{position:absolute;top:-9999em}
387
- .functional.is-seeking .fp-waiting{display:block}
388
- .functional.is-playing{background-image:none !important;background-color:#333;}
389
- .functional.is-playing.hls-fix.is-finished .fp-engine{position:absolute;top:-9999em}
390
- .functional.is-fullscreen{position:fixed !important;top:0 !important;left:0 !important;border:0 !important;margin:0 !important;width:100% !important;height:100% !important;max-width:100% !important;z-index:99999 !important;-webkit-box-shadow:0 !important;-moz-box-shadow:0 !important;box-shadow:0 !important;background-image:none !important;background-color:#333;}
391
- .is-rtl.functional.is-fullscreen{left:auto !important;right:0 !important}
392
- .functional.is-error{border:1px solid #909090;background:#fdfdfd !important;}
393
- .functional.is-error h2{font-weight:bold;font-size:large;margin-top:10%}
394
- .functional.is-error .fp-message{display:block}
395
- .functional.is-error object,.functional.is-error video,.functional.is-error .fp-controls,.functional.is-error .fp-time,.functional.is-error .fp-subtitle{display:none}
396
- .functional.is-ready.is-muted .fp-mute{opacity:.5;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50)}
397
- .functional.is-mouseout .fp-controls{height:0;-webkit-transition:height .15s .3s;-moz-transition:height .15s .3s;transition:height .15s .3s}
398
- .functional.is-mouseout .fp-timeline{margin:0 !important}
399
- .functional.is-mouseout .fp-timeline{-webkit-transition:height .15s .3s,top .15s .3s,margin .15s .3s;-moz-transition:height .15s .3s,top .15s .3s,margin .15s .3s;transition:height .15s .3s,top .15s .3s,margin .15s .3s;height:4px;top:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}
400
- .functional.is-mouseout .fp-fullscreen,.functional.is-mouseout .fp-unload,.functional.is-mouseout .fp-elapsed,.functional.is-mouseout .fp-remaining,.functional.is-mouseout .fp-duration,.functional.is-mouseout .fp-embed,.functional.is-mouseout .fp-volume,.functional.is-mouseout .fp-play{opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .15s .3s;-moz-transition:opacity .15s .3s;transition:opacity .15s .3s}
401
- .functional.is-mouseover .fp-controls,.functional.fixed-controls .fp-controls{height:30px}
402
- .functional.is-mouseover .fp-fullscreen,.functional.fixed-controls .fp-fullscreen,.functional.is-mouseover .fp-unload,.functional.fixed-controls .fp-unload,.functional.is-mouseover .fp-elapsed,.functional.fixed-controls .fp-elapsed,.functional.is-mouseover .fp-remaining,.functional.fixed-controls .fp-remaining,.functional.is-mouseover .fp-duration,.functional.fixed-controls .fp-duration,.functional.is-mouseover .fp-embed,.functional.fixed-controls .fp-embed,.functional.is-mouseover .fp-logo,.functional.fixed-controls .fp-logo,.functional.is-mouseover .fp-volume,.functional.fixed-controls .fp-volume,.functional.is-mouseover .fp-play,.functional.fixed-controls .fp-play{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
403
- .functional.fixed-controls .fp-volume{display:block}
404
- .functional.fixed-controls .fp-controls{bottom:-30px;}
405
- .is-fullscreen.functional.fixed-controls .fp-controls{bottom:0}
406
- .functional.fixed-controls .fp-time em{bottom:-20px;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);}
407
- .is-fullscreen.functional.fixed-controls .fp-time em{bottom:10px}
408
- .functional.is-disabled .fp-progress{background-color:#999}
409
- .functional.is-flash-disabled{background-color:#333;}
410
- .functional.is-flash-disabled object.fp-engine{z-index:100}
411
- .functional.is-flash-disabled .fp-flash-disabled{display:block;z-index:101}
412
- .functional .fp-embed{position:absolute;top:10px;left:10px;display:block;width:25px;height:20px;background-position:3px -237px;}
413
- .is-rtl.functional .fp-embed{background-position:22px -237px;left:auto;right:10px}
414
- .functional .fp-embed-code{position:absolute;display:none;top:10px;left:40px;background-color:#333;padding:3px 5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 3px #ccc;-moz-box-shadow:0 0 3px #ccc;box-shadow:0 0 3px #ccc;font-size:12px;}
415
- .functional .fp-embed-code:before{content:'';width:0;height:0;position:absolute;top:2px;left:-10px;border:5px solid transparent;border-right-color:#333}
416
- .is-rtl.functional .fp-embed-code{left:auto;right:40px;}
417
- .is-rtl.functional .fp-embed-code:before{left:auto;right:-10px;border-right-color:transparent;border-left-color:#333}
418
- .functional .fp-embed-code textarea{width:400px;height:16px;font-family:monaco,"courier new",verdana;color:#777;white-space:nowrap;resize:none;overflow:hidden;border:0;outline:0;background-color:transparent;color:#ccc}
419
- .functional .fp-embed-code label{display:block;color:#999}
420
- .functional.is-embedding .fp-embed,.functional.is-embedding .fp-embed-code{display:block;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
421
- .functional.aside-time .fp-embed{left:100px;}
422
- .is-rtl.functional.aside-time .fp-embed{left:auto;right:100px}
423
- .functional.aside-time .fp-embed-code{left:130px;}
424
- .is-rtl.functional.aside-time .fp-embed-code{left:auto;right:130px}
425
- .functional.aside-time.is-embedding .fp-time{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
426
- .functional.is-long.aside-time .fp-embed{left:130px;}
427
- .is-rtl.functional.is-long.aside-time .fp-embed{left:auto;right:130px}
428
- .functional.no-time .fp-embed{left:10px !important;}
429
- .is-rtl.functional.no-time .fp-embed{left:auto;right:10px !important}
430
- .functional.is-live .fp-timeline,.functional.is-live .fp-duration,.functional.is-live .fp-remaining{display:none}
431
- .functional .fp-context-menu{position:absolute;display:none;z-index:1001;background-color:#fff;padding:10px;border:1px solid #aaa;-webkit-box-shadow:0 0 4px #888;-moz-box-shadow:0 0 4px #888;box-shadow:0 0 4px #888;width:170px;}
432
- .functional .fp-context-menu li{text-align:center;padding:10px;color:#444;margin:0 -10px 0 -10px;}
433
- .functional .fp-context-menu li a{color:#00a7c8;font-size:110%}
434
- .functional .fp-context-menu li:hover:not(.copyright){background-color:#eee}
435
- .functional .fp-context-menu li.copyright{margin:0;padding-left:110px;background-image:url("img/flowplayer.png");background-repeat:no-repeat;background-size:100px 20px;background-position:5px 5px;border-bottom:1px solid #bbb;}
436
- @media (-webkit-min-device-pixel-ratio: 2){.functional .fp-context-menu li.copyright{background-image:url("img/flowplayer@2x.png")}
437
- }@-moz-keyframes pulse{0%{opacity:0}
438
- 100%{opacity:1}
439
- }@-webkit-keyframes pulse{0%{opacity:0}
440
- 100%{opacity:1}
441
- }@-o-keyframes pulse{0%{opacity:0}
442
- 100%{opacity:1}
443
- }@-ms-keyframes pulse{0%{opacity:0}
444
- 100%{opacity:1}
445
- }@keyframes pulse{0%{opacity:0}
446
- 100%{opacity:1}
447
- }.functional .fp-controls{background-color:#111}
448
- .functional .fp-timeline{background-color:#555}
449
- .functional .fp-buffer{background-color:#eee}
450
- .functional .fp-progress{background-color:#4da5d8}
451
- .functional.is-touch.is-mouseover .fp-progress:before{background-color:#4da5d8}
452
- .functional .fp-volumelevel{background-color:#fff}
453
- .functional .fp-volumeslider{background-color:#555}
454
- .functional .fp-timeline,.functional .fp-volumeslider{border:1px inset;border-color:rgba(0,0,0,0.2) rgba(17,17,17,0.05)}
455
- .functional .fp-controls,.functional .fp-progress{background-image:-moz-linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.01));background-image:-webkit-gradient(linear,0 0,0 100%,from(rgba(255,255,255,0.4)),to(rgba(255,255,255,0.01)))}
456
- .functional .fp-timeline,.functional .fp-buffer,.functional .fp-progress,.functional .fp-volumeslider,.functional .fp-volumelevel{-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}
457
- .functional.color-light .fp-controls{background-color:#eee;background-image:-moz-linear-gradient(rgba(0,0,0,0.01),rgba(0,0,0,0.3));background-image:-webkit-gradient(linear,0 0,0 100%,from(rgba(0,0,0,0.01)),to(rgba(0,0,0,0.3)))}
458
- .functional.color-light .fp-timeline,.functional.color-light .fp-volumeslider{border-color:#eee #ccc}
459
- .functional.color-light .fp-timeline,.functional.color-light .fp-volumeslider{background-color:#ccc;font-size:10px}
460
- .functional.color-alt .fp-progress{background-image:-moz-linear-gradient(#999,#111);background-image:-webkit-gradient(linear,0 0,0 100%,from(#999),to(#111))}
461
- .functional.color-alt.is-touch.is-mouseover .fp-progress:before{background-image:-moz-linear-gradient(#999,#111);background-image:-webkit-gradient(linear,0 0,0 100%,from(#999),to(#111))}
462
- .functional.color-alt .fp-timeline,.functional.color-alt .fp-volumeslider{background-color:#111}
463
- .functional.color-alt2 .fp-progress{background-color:#900}
464
- .functional.color-alt2.is-touch.is-mouseover .fp-progress:before{background-color:#900}
465
- .playful{position:relative;width:100%;background-size:contain;background-repeat:no-repeat;background-position:center center;display:inline-block;}
466
- .playful *{font-weight:inherit;font-family:inherit;font-style:inherit;text-decoration:inherit;font-size:100%;padding:0;border:0;margin:0;list-style-type:none}
467
- .playful a:focus{outline:0}
468
- .playful video{width:100%}
469
- .playful.is-ipad video{-webkit-transform:translateX(-2048px);}
470
- .is-ready.playful.is-ipad video{-webkit-transform:translateX(0)}
471
- .playful .fp-engine,.playful .fp-ui,.playful .fp-message{position:absolute;top:0;left:0;width:100%;height:100%;cursor:pointer;z-index:1}
472
- .playful .fp-message{display:none;text-align:center;padding-top:5%;cursor:default;}
473
- .playful .fp-message h2{font-size:120%;margin-bottom:1em}
474
- .playful .fp-message p{color:#666;font-size:95%}
475
- .playful .fp-controls{position:absolute;bottom:0;width:100%;}
476
- .no-background.playful .fp-controls{background-color:transparent !important;background-image:-moz-linear-gradient(transparent,transparent) !important;background-image:-webkit-gradient(linear,0 0,0 100%,from(transparent),to(transparent)) !important}
477
- .is-fullscreen.playful .fp-controls{bottom:3px}
478
- .is-mouseover.playful .fp-controls{bottom:0}
479
- .playful .fp-waiting{display:none;margin:19% auto;text-align:center;}
480
- .playful .fp-waiting *{-webkit-box-shadow:0 0 5px #333;-moz-box-shadow:0 0 5px #333;box-shadow:0 0 5px #333}
481
- .playful .fp-waiting em{width:1em;height:1em;-webkit-border-radius:1em;-moz-border-radius:1em;border-radius:1em;background-color:rgba(255,255,255,0.8);display:inline-block;-webkit-animation:pulse .6s infinite;-moz-animation:pulse .6s infinite;animation:pulse .6s infinite;margin:.3em;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);}
482
- .playful .fp-waiting em:nth-child(1){-webkit-animation-delay:.3s;-moz-animation-delay:.3s;animation-delay:.3s}
483
- .playful .fp-waiting em:nth-child(2){-webkit-animation-delay:.45s;-moz-animation-delay:.45s;animation-delay:.45s}
484
- .playful .fp-waiting em:nth-child(3){-webkit-animation-delay:.6s;-moz-animation-delay:.6s;animation-delay:.6s}
485
- .playful .fp-waiting p{color:#ccc;font-weight:bold}
486
- .playful .fp-speed{font-size:30px;background-color:#333;background-color:rgba(51,51,51,0.8);color:#eee;margin:0 auto;text-align:center;width:120px;padding:.1em 0 0;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .5s;-moz-transition:opacity .5s;transition:opacity .5s;}
487
- .playful .fp-speed.fp-hilite{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
488
- .playful .fp-help{position:absolute;top:0;left:-9999em;z-index:100;background-color:#333;background-color:rgba(51,51,51,0.9);width:100%;height:100%;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .2s;-moz-transition:opacity .2s;transition:opacity .2s;text-align:center;}
489
- .is-help.playful .fp-help{left:0;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
490
- .playful .fp-help .fp-help-section{margin:3%;direction:ltr}
491
- .playful .fp-help .fp-help-basics{margin-top:6%}
492
- .playful .fp-help p{color:#eee;margin:.5em 0;font-size:14px;line-height:1.5;display:inline-block;margin:1% 2%}
493
- .playful .fp-help em{background:#eee;-webkit-border-radius:.3em;-moz-border-radius:.3em;border-radius:.3em;margin-right:.4em;padding:.3em .6em;color:#333}
494
- .playful .fp-help small{font-size:90%;color:#aaa}
495
- .playful .fp-help .fp-close{display:block}
496
- @media (max-width: 600px){.playful .fp-help p{font-size:9px}
497
- }.playful .fp-subtitle{position:absolute;bottom:40px;left:-99999em;z-index:10;text-align:center;width:100%;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .3s;-moz-transition:opacity .3s;transition:opacity .3s;}
498
- .playful .fp-subtitle p{display:inline;background-color:#333;background-color:rgba(51,51,51,0.9);color:#eee;padding:.1em .4em;font-size:16px;line-height:1.6;}
499
- .playful .fp-subtitle p:after{content:'';clear:both}
500
- .playful .fp-subtitle.fp-active{left:0;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
501
- .playful .fp-fullscreen,.playful .fp-unload,.playful .fp-mute,.playful .fp-embed,.playful .fp-close,.playful .fp-play{background-image:url(img/playful_white.png);background-size:37px 300px;}
502
- .is-rtl.playful .fp-fullscreen,.is-rtl.playful .fp-unload,.is-rtl.playful .fp-mute,.is-rtl.playful .fp-embed,.is-rtl.playful .fp-close,.is-rtl.playful .fp-play{background-image:url(img/playful_white_rtl.png)}
503
- .color-light.playful .fp-fullscreen,.color-light.playful .fp-unload,.color-light.playful .fp-mute,.color-light.playful .fp-embed,.color-light.playful .fp-close,.color-light.playful .fp-play{background-image:url(img/playful_black.png);}
504
- .is-rtl.color-light.playful .fp-fullscreen,.is-rtl.color-light.playful .fp-unload,.is-rtl.color-light.playful .fp-mute,.is-rtl.color-light.playful .fp-embed,.is-rtl.color-light.playful .fp-close,.is-rtl.color-light.playful .fp-play{background-image:url(img/playful_black_rtl.png)}
505
- @media (-webkit-min-device-pixel-ratio: 2){.color-light.playful .fp-fullscreen,.color-light.playful .fp-unload,.color-light.playful .fp-mute,.color-light.playful .fp-embed,.color-light.playful .fp-close,.color-light.playful .fp-play{background-image:url(img/playful_black@x2.png)}
506
- .is-rtl.color-light.playful .fp-fullscreen,.is-rtl.color-light.playful .fp-unload,.is-rtl.color-light.playful .fp-mute,.is-rtl.color-light.playful .fp-embed,.is-rtl.color-light.playful .fp-close,.is-rtl.color-light.playful .fp-play{background-image:url(img/playful_black_rtl@x2.png)}
507
- }@media (-webkit-min-device-pixel-ratio: 2){.playful .fp-fullscreen,.playful .fp-unload,.playful .fp-mute,.playful .fp-embed,.playful .fp-close,.playful .fp-play{background-image:url(img/playful_white@x2.png)}
508
- .is-rtl.playful .fp-fullscreen,.is-rtl.playful .fp-unload,.is-rtl.playful .fp-mute,.is-rtl.playful .fp-embed,.is-rtl.playful .fp-close,.is-rtl.playful .fp-play{background-image:url(img/playful_white_rtl@x2.png)}
509
- }.playful .fp-flash-disabled{background:#333;width:390px;margin:0 auto;position:absolute;bottom:0;color:#fff}
510
- .is-splash.playful .fp-ui,.is-paused.playful .fp-ui{background:url(img/play_white.png) center no-repeat;background-size:12%;}
511
- .is-rtl.is-splash.playful .fp-ui,.is-rtl.is-paused.playful .fp-ui{background:url(img/play_white_rtl.png) center no-repeat;background-size:12%}
512
- @media (-webkit-min-device-pixel-ratio: 2){.is-splash.playful .fp-ui,.is-paused.playful .fp-ui{background:url(img/play_white@x2.png) center no-repeat;background-size:12%}
513
- .is-rtl.is-splash.playful .fp-ui,.is-rtl.is-paused.playful .fp-ui{background:url(img/play_white_rtl@x2.png) center no-repeat;background-size:12%}
514
- }.color-light.is-splash.playful .fp-ui,.color-light.is-paused.playful .fp-ui{background-image:url(img/play_black.png);}
515
- .is-rtl.color-light.is-splash.playful .fp-ui,.is-rtl.color-light.is-paused.playful .fp-ui{background-image:url(img/play_black_rtl.png)}
516
- @media (-webkit-min-device-pixel-ratio: 2){.color-light.is-splash.playful .fp-ui,.color-light.is-paused.playful .fp-ui{background-image:url(img/play_black@x2.png);}
517
- .is-rtl.color-light.is-splash.playful .fp-ui,.is-rtl.color-light.is-paused.playful .fp-ui{background-image:url(img/play_black_rtl@x2.png)}
518
- }.is-fullscreen.playful .fp-ui{background-size:auto}
519
- .is-seeking.playful .fp-ui,.is-loading.playful .fp-ui{background-image:none}
520
- .playful .fp-logo{position:absolute;top:auto;left:15px;bottom:45px;cursor:pointer;display:none;z-index:100;}
521
- .playful .fp-logo img{width:100%}
522
- .is-embedded.playful .fp-logo{display:block}
523
- .fixed-controls.playful .fp-logo{bottom:15px}
524
- .playful .fp-fullscreen,.playful .fp-unload,.playful .fp-close{position:absolute;top:12px;left:auto;right:12px;display:block;width:30px;height:23px;background-position:12px -197px;cursor:pointer;}
525
- .is-rtl.playful .fp-fullscreen,.is-rtl.playful .fp-unload,.is-rtl.playful .fp-close{right:auto;left:12px;background-position:18px -197px}
526
- .playful .fp-unload,.playful .fp-close{background-position:14px -175px;display:none;}
527
- .is-rtl.playful .fp-unload,.is-rtl.playful .fp-close{background-position:14px -175px}
528
- .playful .fp-play{display:none;width:27px;height:35px;background-position:9px -24px;position:absolute;bottom:0;left:0;}
529
- .is-rtl.playful .fp-play{background-position:18px -24px;left:auto;right:0}
530
- .play-button.playful .fp-play{display:block}
531
- .is-paused.playful .fp-play{background-position:9px 7px;}
532
- .is-rtl.is-paused.playful .fp-play{background-position:18px 7px}
533
- .playful.is-ready.is-closeable .fp-unload{display:block}
534
- .playful.is-ready.is-closeable .fp-fullscreen{display:none}
535
- .playful.is-fullscreen .fp-fullscreen{background-position:10px -217px;display:block !important;}
536
- .is-rtl.playful.is-fullscreen .fp-fullscreen{background-position:21px -217px}
537
- .playful.is-fullscreen .fp-unload,.playful.is-fullscreen .fp-close{display:none !important}
538
- .playful .fp-timeline{height:3px;position:relative;overflow:hidden;top:12px;height:11px;margin:0 199px 0 59px;}
539
- .no-volume.playful .fp-timeline{margin-right:109px}
540
- .no-mute.playful .fp-timeline{margin-right:161px}
541
- .no-mute.no-volume.playful .fp-timeline{margin-right:59px}
542
- .play-button.playful .fp-timeline{margin-left:74px}
543
- .is-rtl.playful .fp-timeline{margin:0 59px 0 199px;}
544
- .no-volume.is-rtl.playful .fp-timeline{margin-left:109px}
545
- .no-mute.is-rtl.playful .fp-timeline{margin-left:161px}
546
- .no-mute.no-volume.is-rtl.playful .fp-timeline{margin-left:59px}
547
- .play-button.is-rtl.playful .fp-timeline{margin-right:74px}
548
- .is-long.playful .fp-timeline{margin:0 229px 0 89px;}
549
- .no-volume.is-long.playful .fp-timeline{margin-right:139px}
550
- .no-mute.is-long.playful .fp-timeline{margin-right:89px}
551
- .play-button.is-long.playful .fp-timeline{margin-left:104px}
552
- .is-rtl.is-long.playful .fp-timeline{margin:89px 0 229px 0;}
553
- .no-volume.is-rtl.is-long.playful .fp-timeline{margin-left:139px}
554
- .no-mute.is-rtl.is-long.playful .fp-timeline{margin-left:89px}
555
- .play-button.is-rtl.is-long.playful .fp-timeline{margin-left:104px}
556
- .aside-time.playful .fp-timeline,.no-time.playful .fp-timeline{margin:0 152px 0 12px}
557
- .aside-time.no-volume.playful .fp-timeline,.no-time.no-volume.playful .fp-timeline{margin-right:62px}
558
- .aside-time.no-mute.playful .fp-timeline,.no-time.no-mute.playful .fp-timeline{margin-right:12px}
559
- .play-button.no-time.playful .fp-timeline,.play-button.aside-time.playful .fp-timeline{margin-left:27px}
560
- .is-rtl.aside-time.playful .fp-timeline,.is-rtl.no-time.playful .fp-timeline{margin:0 12px 0 152px}
561
- .is-rtl.aside-time.no-volume.playful .fp-timeline,.is-rtl.no-time.no-volume.playful .fp-timeline{margin-left:62px}
562
- .is-rtl.aside-time.no-mute.playful .fp-timeline,.is-rtl.no-time.no-mute.playful .fp-timeline{margin-left:12px}
563
- .is-rtl.play-button.no-time.playful .fp-timeline,.is-rtl.play-button.aside-time.playful .fp-timeline{margin-right:27px}
564
- .playful .fp-buffer,.playful .fp-progress{position:absolute;top:0;left:auto;height:100%;cursor:col-resize}
565
- .playful .fp-buffer{-webkit-transition:width .25s linear;-moz-transition:width .25s linear;transition:width .25s linear}
566
- .playful .fp-timeline.no-animation .fp-buffer{-webkit-transition:none;-moz-transition:none;transition:none}
567
- .playful.is-touch .fp-timeline{overflow:visible}
568
- .playful.is-touch .fp-progress{-webkit-transition:width .2s linear;-moz-transition:width .2s linear;transition:width .2s linear}
569
- .playful.is-touch .fp-timeline.is-dragging .fp-progress{-webkit-transition:right .1s linear,border .1s linear,top .1s linear,left .1s linear;-moz-transition:right .1s linear,border .1s linear,top .1s linear,left .1s linear;transition:right .1s linear,border .1s linear,top .1s linear,left .1s linear}
570
- .playful.is-touch.is-mouseover .fp-progress:after,.playful.is-touch.is-mouseover .fp-progress:before{content:'';display:block;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;position:absolute;right:-5px}
571
- .playful.is-touch.is-rtl.is-mouseover .fp-progress:after,.playful.is-touch.is-rtl.is-mouseover .fp-progress:before{right:auto;left:-5px}
572
- .playful.is-touch.is-rtl.is-mouseover .fp-progress:after{left:-10px;-webkit-box-shadow:-1px 0 4px rgba(0,0,0,0.5);-moz-box-shadow:-1px 0 4px rgba(0,0,0,0.5);box-shadow:-1px 0 4px rgba(0,0,0,0.5)}
573
- .playful.is-touch.is-mouseover .fp-progress:before{width:10px;height:10px}
574
- .playful.is-touch.is-mouseover .fp-progress:after{height:10px;width:10px;top:-5px;right:-10px;border:5px solid rgba(255,255,255,0.65);-webkit-box-shadow:1px 0 4px rgba(0,0,0,0.5);-moz-box-shadow:1px 0 4px rgba(0,0,0,0.5);box-shadow:1px 0 4px rgba(0,0,0,0.5)}
575
- .playful.is-touch.is-mouseover .fp-timeline.is-dragging .fp-progress:after{border:10px solid #fff;-webkit-border-radius:20px;-moz-border-radius:20px;border-radius:20px;-webkit-transition:inherit;-moz-transition:inherit;transition:inherit;top:-10px;right:-15px}
576
- .playful.is-touch.is-rtl.is-mouseover .fp-timeline.is-dragging .fp-progress:after{left:-15px;right:auto;border:10px solid #fff}
577
- .playful .fp-volume{position:absolute;top:12px;right:12px;}
578
- .is-rtl.playful .fp-volume{right:auto;left:12px}
579
- .playful .fp-mute{position:relative;width:38px;height:20px;float:left;top:-4.5px;cursor:pointer;background-position:-2px -99px;}
580
- .is-rtl.playful .fp-mute{float:right;background-position:-25px -99px}
581
- .no-mute.playful .fp-mute{display:none}
582
- .playful .fp-volumeslider{width:90px;height:11px;cursor:col-resize;float:left;}
583
- .is-rtl.playful .fp-volumeslider{float:right}
584
- .no-volume.playful .fp-volumeslider{display:none}
585
- .playful .fp-volumelevel{height:100%}
586
- .playful .fp-time{text-shadow:0 0 1px #000;font-size:12px;font-weight:bold;color:#fff;width:100%;}
587
- .playful .fp-time.is-inverted .fp-duration{display:none}
588
- .playful .fp-time.is-inverted .fp-remaining{display:inline}
589
- .playful .fp-time em{width:35px;height:11px;line-height:11px;text-align:center;position:absolute;bottom:12px}
590
- .no-time.playful .fp-time{display:none}
591
- .is-long.playful .fp-time em{width:65px}
592
- .playful .fp-elapsed{left:12px;}
593
- .play-button.playful .fp-elapsed{left:27px}
594
- .is-rtl.playful .fp-elapsed{left:auto;right:12px;}
595
- .play-button.is-rtl.playful .fp-elapsed{right:27px}
596
- .playful .fp-remaining,.playful .fp-duration{right:152px;color:#eee;}
597
- .no-volume.playful .fp-remaining,.no-volume.playful .fp-duration{right:62px}
598
- .no-mute.playful .fp-remaining,.no-mute.playful .fp-duration{right:114px}
599
- .no-mute.no-volume.playful .fp-remaining,.no-mute.no-volume.playful .fp-duration{right:12px}
600
- .is-rtl.playful .fp-remaining,.is-rtl.playful .fp-duration{right:auto;left:152px;}
601
- .no-volume.is-rtl.playful .fp-remaining,.no-volume.is-rtl.playful .fp-duration{left:62px}
602
- .no-mute.is-rtl.playful .fp-remaining,.no-mute.is-rtl.playful .fp-duration{left:114px}
603
- .no-mute.no-volume.is-rtl.playful .fp-remaining,.no-mute.no-volume.is-rtl.playful .fp-duration{left:12px}
604
- .playful .fp-remaining{display:none}
605
- .playful.color-light .fp-time{color:#222;text-shadow:0 0 1px #fff}
606
- .playful.color-light .fp-remaining,.playful.color-light .fp-duration{color:#666}
607
- .playful.aside-time .fp-time{position:absolute;top:12px;left:12px;bottom:auto !important;width:110px;}
608
- .playful.aside-time .fp-time strong,.playful.aside-time .fp-time em{position:static}
609
- .playful.aside-time .fp-time .fp-elapsed{margin-right:12px;}
610
- .is-rtl.playful.aside-time .fp-time .fp-elapsed{margin-right:auto;margin-left:12px}
611
- .playful.is-long.aside-time .fp-time{width:130px}
612
- .playful.is-splash,.playful.is-poster{cursor:pointer;}
613
- .playful.is-splash .fp-controls,.playful.is-poster .fp-controls,.playful.is-splash .fp-fullscreen,.playful.is-poster .fp-fullscreen,.playful.is-splash .fp-unload,.playful.is-poster .fp-unload,.playful.is-splash .fp-time,.playful.is-poster .fp-time,.playful.is-splash .fp-embed,.playful.is-poster .fp-embed{display:none !important}
614
- .playful.is-poster .fp-engine{top:-9999em}
615
- .playful.is-loading .fp-waiting{display:block}
616
- .playful.is-loading .fp-controls,.playful.is-loading .fp-time{display:none}
617
- .playful.is-loading .fp-ui{background-position:-9999em}
618
- .playful.is-loading video.fp-engine{position:absolute;top:-9999em}
619
- .playful.is-seeking .fp-waiting{display:block}
620
- .playful.is-playing{background-image:none !important;background-color:#333;}
621
- .playful.is-playing.hls-fix.is-finished .fp-engine{position:absolute;top:-9999em}
622
- .playful.is-fullscreen{position:fixed !important;top:0 !important;left:0 !important;border:0 !important;margin:0 !important;width:100% !important;height:100% !important;max-width:100% !important;z-index:99999 !important;-webkit-box-shadow:0 !important;-moz-box-shadow:0 !important;box-shadow:0 !important;background-image:none !important;background-color:#333;}
623
- .is-rtl.playful.is-fullscreen{left:auto !important;right:0 !important}
624
- .playful.is-error{border:1px solid #909090;background:#fdfdfd !important;}
625
- .playful.is-error h2{font-weight:bold;font-size:large;margin-top:10%}
626
- .playful.is-error .fp-message{display:block}
627
- .playful.is-error object,.playful.is-error video,.playful.is-error .fp-controls,.playful.is-error .fp-time,.playful.is-error .fp-subtitle{display:none}
628
- .playful.is-ready.is-muted .fp-mute{opacity:.5;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50)}
629
- .playful.is-mouseout .fp-controls{height:0;-webkit-transition:height .15s .3s;-moz-transition:height .15s .3s;transition:height .15s .3s}
630
- .playful.is-mouseout .fp-timeline{margin:0 !important}
631
- .playful.is-mouseout .fp-timeline{-webkit-transition:height .15s .3s,top .15s .3s,margin .15s .3s;-moz-transition:height .15s .3s,top .15s .3s,margin .15s .3s;transition:height .15s .3s,top .15s .3s,margin .15s .3s;height:4px;top:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}
632
- .playful.is-mouseout .fp-fullscreen,.playful.is-mouseout .fp-unload,.playful.is-mouseout .fp-elapsed,.playful.is-mouseout .fp-remaining,.playful.is-mouseout .fp-duration,.playful.is-mouseout .fp-embed,.playful.is-mouseout .fp-volume,.playful.is-mouseout .fp-play{opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .15s .3s;-moz-transition:opacity .15s .3s;transition:opacity .15s .3s}
633
- .playful.is-mouseover .fp-controls,.playful.fixed-controls .fp-controls{height:35px}
634
- .playful.is-mouseover .fp-fullscreen,.playful.fixed-controls .fp-fullscreen,.playful.is-mouseover .fp-unload,.playful.fixed-controls .fp-unload,.playful.is-mouseover .fp-elapsed,.playful.fixed-controls .fp-elapsed,.playful.is-mouseover .fp-remaining,.playful.fixed-controls .fp-remaining,.playful.is-mouseover .fp-duration,.playful.fixed-controls .fp-duration,.playful.is-mouseover .fp-embed,.playful.fixed-controls .fp-embed,.playful.is-mouseover .fp-logo,.playful.fixed-controls .fp-logo,.playful.is-mouseover .fp-volume,.playful.fixed-controls .fp-volume,.playful.is-mouseover .fp-play,.playful.fixed-controls .fp-play{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
635
- .playful.fixed-controls .fp-volume{display:block}
636
- .playful.fixed-controls .fp-controls{bottom:-35px;}
637
- .is-fullscreen.playful.fixed-controls .fp-controls{bottom:0}
638
- .playful.fixed-controls .fp-time em{bottom:-23px;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);}
639
- .is-fullscreen.playful.fixed-controls .fp-time em{bottom:12px}
640
- .playful.is-disabled .fp-progress{background-color:#999}
641
- .playful.is-flash-disabled{background-color:#333;}
642
- .playful.is-flash-disabled object.fp-engine{z-index:100}
643
- .playful.is-flash-disabled .fp-flash-disabled{display:block;z-index:101}
644
- .playful .fp-embed{position:absolute;top:12px;left:12px;display:block;width:25px;height:20px;background-position:3px -237px;}
645
- .is-rtl.playful .fp-embed{background-position:22px -237px;left:auto;right:12px}
646
- .playful .fp-embed-code{position:absolute;display:none;top:10px;left:40px;background-color:#333;padding:3px 5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 3px #ccc;-moz-box-shadow:0 0 3px #ccc;box-shadow:0 0 3px #ccc;font-size:12px;}
647
- .playful .fp-embed-code:before{content:'';width:0;height:0;position:absolute;top:2px;left:-10px;border:5px solid transparent;border-right-color:#333}
648
- .is-rtl.playful .fp-embed-code{left:auto;right:40px;}
649
- .is-rtl.playful .fp-embed-code:before{left:auto;right:-10px;border-right-color:transparent;border-left-color:#333}
650
- .playful .fp-embed-code textarea{width:400px;height:16px;font-family:monaco,"courier new",verdana;color:#777;white-space:nowrap;resize:none;overflow:hidden;border:0;outline:0;background-color:transparent;color:#ccc}
651
- .playful .fp-embed-code label{display:block;color:#999}
652
- .playful.is-embedding .fp-embed,.playful.is-embedding .fp-embed-code{display:block;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
653
- .playful.aside-time .fp-embed{left:110px;}
654
- .is-rtl.playful.aside-time .fp-embed{left:auto;right:110px}
655
- .playful.aside-time .fp-embed-code{left:140px;}
656
- .is-rtl.playful.aside-time .fp-embed-code{left:auto;right:140px}
657
- .playful.aside-time.is-embedding .fp-time{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
658
- .playful.is-long.aside-time .fp-embed{left:130px;}
659
- .is-rtl.playful.is-long.aside-time .fp-embed{left:auto;right:130px}
660
- .playful.no-time .fp-embed{left:12px !important;}
661
- .is-rtl.playful.no-time .fp-embed{left:auto;right:12px !important}
662
- .playful.is-live .fp-timeline,.playful.is-live .fp-duration,.playful.is-live .fp-remaining{display:none}
663
- .playful .fp-context-menu{position:absolute;display:none;z-index:1001;background-color:#fff;padding:10px;border:1px solid #aaa;-webkit-box-shadow:0 0 4px #888;-moz-box-shadow:0 0 4px #888;box-shadow:0 0 4px #888;width:170px;}
664
- .playful .fp-context-menu li{text-align:center;padding:10px;color:#444;margin:0 -10px 0 -10px;}
665
- .playful .fp-context-menu li a{color:#00a7c8;font-size:110%}
666
- .playful .fp-context-menu li:hover:not(.copyright){background-color:#eee}
667
- .playful .fp-context-menu li.copyright{margin:0;padding-left:110px;background-image:url("img/flowplayer.png");background-repeat:no-repeat;background-size:100px 20px;background-position:5px 5px;border-bottom:1px solid #bbb;}
668
- @media (-webkit-min-device-pixel-ratio: 2){.playful .fp-context-menu li.copyright{background-image:url("img/flowplayer@2x.png")}
669
- }@-moz-keyframes pulse{0%{opacity:0}
670
- 100%{opacity:1}
671
- }@-webkit-keyframes pulse{0%{opacity:0}
672
- 100%{opacity:1}
673
- }@-o-keyframes pulse{0%{opacity:0}
674
- 100%{opacity:1}
675
- }@-ms-keyframes pulse{0%{opacity:0}
676
- 100%{opacity:1}
677
- }@keyframes pulse{0%{opacity:0}
678
- 100%{opacity:1}
679
- }.playful .fp-controls{background-color:#111}
680
- .playful .fp-timeline,.playful .fp-volumeslider{background-color:#555;background-image:-moz-linear-gradient(rgba(255,255,255,0.01),rgba(255,255,255,0.3));background-image:-webkit-gradient(linear,0 0,0 100%,from(rgba(255,255,255,0.01)),to(rgba(255,255,255,0.3)))}
681
- .playful .fp-buffer{background-color:#eee}
682
- .playful .fp-progress{background-color:#008000}
683
- .playful.is-touch.is-mouseover .fp-progress:before{background-color:#008000}
684
- .playful .fp-volumelevel{background-color:#fff}
685
- .playful .fp-mute{display:block;width:38px;height:20px;background-position:0 -79px;}
686
- .is-rtl.playful .fp-mute{background-position:0 -79px}
687
- .is-muted.playful .fp-mute{background-position:0 -109px;opacity:.85;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=85)}
688
- .playful .fp-play{background-position:9px -20px;}
689
- .is-rtl.playful .fp-play{background-position:18px -20px}
690
- .is-paused.playful .fp-play{background-position:9px 11px;}
691
- .is-rtl.is-paused.playful .fp-play{background-position:18px 11px}
692
- .playful .fp-timeline,.playful .fp-volumeslider{border:1px inset;border-color:rgba(0,0,0,0.3) rgba(17,17,17,0.05)}
693
- .playful .fp-controls,.playful .fp-progress{background-image:-moz-linear-gradient(rgba(255,255,255,0.3),rgba(255,255,255,0.01));background-image:-webkit-gradient(linear,0 0,0 100%,from(rgba(255,255,255,0.3)),to(rgba(255,255,255,0.01)))}
694
- .playful .fp-timeline,.playful .fp-progress,.playful .fp-buffer,.playful .fp-volumeslider,.playful .fp-volumelevel{-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}
695
- .playful.color-light .fp-controls{background-color:#eee;background-image:-moz-linear-gradient(rgba(0,0,0,0.01),rgba(0,0,0,0.3));background-image:-webkit-gradient(linear,0 0,0 100%,from(rgba(0,0,0,0.01)),to(rgba(0,0,0,0.3)))}
696
- .playful.color-light .fp-timeline,.playful.color-light .fp-volumeslider{border-color:#eee #ccc}
697
- .playful.color-alt .fp-progress,.playful.color-alt .fp-volumelevel{background-color:#111}
698
- .playful.color-alt.is-touch.is-mouseover .fp-progress:before{background-color:#111}
699
- .playful.color-alt2 .fp-progress,.playful.color-alt2 .fp-volumelevel{background-color:#900}
700
- .playful.color-alt2.is-touch.is-mouseover .fp-progress:before{background-color:#900}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/skin/functional.css DELETED
@@ -1,232 +0,0 @@
1
- .flowplayer{position:relative;width:100%;background-size:contain;background-repeat:no-repeat;background-position:center center;display:inline-block;}
2
- .flowplayer *{font-weight:inherit;font-family:inherit;font-style:inherit;text-decoration:inherit;font-size:100%;padding:0;border:0;margin:0;list-style-type:none}
3
- .flowplayer a:focus{outline:0}
4
- .flowplayer video{width:100%}
5
- .flowplayer.is-ipad video{-webkit-transform:translateX(-2048px);}
6
- .is-ready.flowplayer.is-ipad video{-webkit-transform:translateX(0)}
7
- .flowplayer .fp-engine,.flowplayer .fp-ui,.flowplayer .fp-message{position:absolute;top:0;left:0;width:100%;height:100%;cursor:pointer;z-index:1}
8
- .flowplayer .fp-message{display:none;text-align:center;padding-top:5%;cursor:default;}
9
- .flowplayer .fp-message h2{font-size:120%;margin-bottom:1em}
10
- .flowplayer .fp-message p{color:#666;font-size:95%}
11
- .flowplayer .fp-controls{position:absolute;bottom:0;width:100%;}
12
- .no-background.flowplayer .fp-controls{background-color:transparent !important;background-image:-moz-linear-gradient(transparent,transparent) !important;background-image:-webkit-gradient(linear,0 0,0 100%,from(transparent),to(transparent)) !important}
13
- .is-fullscreen.flowplayer .fp-controls{bottom:3px}
14
- .is-mouseover.flowplayer .fp-controls{bottom:0}
15
- .flowplayer .fp-waiting{display:none;margin:19% auto;text-align:center;}
16
- .flowplayer .fp-waiting *{-webkit-box-shadow:0 0 5px #333;-moz-box-shadow:0 0 5px #333;box-shadow:0 0 5px #333}
17
- .flowplayer .fp-waiting em{width:1em;height:1em;-webkit-border-radius:1em;-moz-border-radius:1em;border-radius:1em;background-color:rgba(255,255,255,0.8);display:inline-block;-webkit-animation:pulse .6s infinite;-moz-animation:pulse .6s infinite;animation:pulse .6s infinite;margin:.3em;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);}
18
- .flowplayer .fp-waiting em:nth-child(1){-webkit-animation-delay:.3s;-moz-animation-delay:.3s;animation-delay:.3s}
19
- .flowplayer .fp-waiting em:nth-child(2){-webkit-animation-delay:.45s;-moz-animation-delay:.45s;animation-delay:.45s}
20
- .flowplayer .fp-waiting em:nth-child(3){-webkit-animation-delay:.6s;-moz-animation-delay:.6s;animation-delay:.6s}
21
- .flowplayer .fp-waiting p{color:#ccc;font-weight:bold}
22
- .flowplayer .fp-speed{font-size:30px;background-color:#333;background-color:rgba(51,51,51,0.8);color:#eee;margin:0 auto;text-align:center;width:120px;padding:.1em 0 0;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .5s;-moz-transition:opacity .5s;transition:opacity .5s;}
23
- .flowplayer .fp-speed.fp-hilite{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
24
- .flowplayer .fp-help{position:absolute;top:0;left:-9999em;z-index:100;background-color:#333;background-color:rgba(51,51,51,0.9);width:100%;height:100%;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .2s;-moz-transition:opacity .2s;transition:opacity .2s;text-align:center;}
25
- .is-help.flowplayer .fp-help{left:0;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
26
- .flowplayer .fp-help .fp-help-section{margin:3%;direction:ltr}
27
- .flowplayer .fp-help .fp-help-basics{margin-top:6%}
28
- .flowplayer .fp-help p{color:#eee;margin:.5em 0;font-size:14px;line-height:1.5;display:inline-block;margin:1% 2%}
29
- .flowplayer .fp-help em{background:#eee;-webkit-border-radius:.3em;-moz-border-radius:.3em;border-radius:.3em;margin-right:.4em;padding:.3em .6em;color:#333}
30
- .flowplayer .fp-help small{font-size:90%;color:#aaa}
31
- .flowplayer .fp-help .fp-close{display:block}
32
- @media (max-width: 600px){.flowplayer .fp-help p{font-size:9px}
33
- }.flowplayer .fp-subtitle{position:absolute;bottom:40px;left:-99999em;z-index:10;text-align:center;width:100%;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .3s;-moz-transition:opacity .3s;transition:opacity .3s;}
34
- .flowplayer .fp-subtitle p{display:inline;background-color:#333;background-color:rgba(51,51,51,0.9);color:#eee;padding:.1em .4em;font-size:16px;line-height:1.6;}
35
- .flowplayer .fp-subtitle p:after{content:'';clear:both}
36
- .flowplayer .fp-subtitle.fp-active{left:0;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
37
- .flowplayer .fp-fullscreen,.flowplayer .fp-unload,.flowplayer .fp-mute,.flowplayer .fp-embed,.flowplayer .fp-close,.flowplayer .fp-play{background-image:url(img/white.png);background-size:37px 300px;}
38
- .is-rtl.flowplayer .fp-fullscreen,.is-rtl.flowplayer .fp-unload,.is-rtl.flowplayer .fp-mute,.is-rtl.flowplayer .fp-embed,.is-rtl.flowplayer .fp-close,.is-rtl.flowplayer .fp-play{background-image:url(img/white_rtl.png)}
39
- .color-light.flowplayer .fp-fullscreen,.color-light.flowplayer .fp-unload,.color-light.flowplayer .fp-mute,.color-light.flowplayer .fp-embed,.color-light.flowplayer .fp-close,.color-light.flowplayer .fp-play{background-image:url(img/black.png);}
40
- .is-rtl.color-light.flowplayer .fp-fullscreen,.is-rtl.color-light.flowplayer .fp-unload,.is-rtl.color-light.flowplayer .fp-mute,.is-rtl.color-light.flowplayer .fp-embed,.is-rtl.color-light.flowplayer .fp-close,.is-rtl.color-light.flowplayer .fp-play{background-image:url(img/black_rtl.png)}
41
- @media (-webkit-min-device-pixel-ratio: 2){.color-light.flowplayer .fp-fullscreen,.color-light.flowplayer .fp-unload,.color-light.flowplayer .fp-mute,.color-light.flowplayer .fp-embed,.color-light.flowplayer .fp-close,.color-light.flowplayer .fp-play{background-image:url(img/black@x2.png)}
42
- .is-rtl.color-light.flowplayer .fp-fullscreen,.is-rtl.color-light.flowplayer .fp-unload,.is-rtl.color-light.flowplayer .fp-mute,.is-rtl.color-light.flowplayer .fp-embed,.is-rtl.color-light.flowplayer .fp-close,.is-rtl.color-light.flowplayer .fp-play{background-image:url(img/black_rtl@x2.png)}
43
- }@media (-webkit-min-device-pixel-ratio: 2){.flowplayer .fp-fullscreen,.flowplayer .fp-unload,.flowplayer .fp-mute,.flowplayer .fp-embed,.flowplayer .fp-close,.flowplayer .fp-play{background-image:url(img/white@x2.png)}
44
- .is-rtl.flowplayer .fp-fullscreen,.is-rtl.flowplayer .fp-unload,.is-rtl.flowplayer .fp-mute,.is-rtl.flowplayer .fp-embed,.is-rtl.flowplayer .fp-close,.is-rtl.flowplayer .fp-play{background-image:url(img/white_rtl@x2.png)}
45
- }.flowplayer .fp-flash-disabled{background:#333;width:390px;margin:0 auto;position:absolute;bottom:0;color:#fff}
46
- .is-splash.flowplayer .fp-ui,.is-paused.flowplayer .fp-ui{background:url(img/play_white.png) center no-repeat;background-size:12%;}
47
- .is-rtl.is-splash.flowplayer .fp-ui,.is-rtl.is-paused.flowplayer .fp-ui{background:url(img/play_white_rtl.png) center no-repeat;background-size:12%}
48
- @media (-webkit-min-device-pixel-ratio: 2){.is-splash.flowplayer .fp-ui,.is-paused.flowplayer .fp-ui{background:url(img/play_white@x2.png) center no-repeat;background-size:12%}
49
- .is-rtl.is-splash.flowplayer .fp-ui,.is-rtl.is-paused.flowplayer .fp-ui{background:url(img/play_white_rtl@x2.png) center no-repeat;background-size:12%}
50
- }.color-light.is-splash.flowplayer .fp-ui,.color-light.is-paused.flowplayer .fp-ui{background-image:url(img/play_black.png);}
51
- .is-rtl.color-light.is-splash.flowplayer .fp-ui,.is-rtl.color-light.is-paused.flowplayer .fp-ui{background-image:url(img/play_black_rtl.png)}
52
- @media (-webkit-min-device-pixel-ratio: 2){.color-light.is-splash.flowplayer .fp-ui,.color-light.is-paused.flowplayer .fp-ui{background-image:url(img/play_black@x2.png);}
53
- .is-rtl.color-light.is-splash.flowplayer .fp-ui,.is-rtl.color-light.is-paused.flowplayer .fp-ui{background-image:url(img/play_black_rtl@x2.png)}
54
- }.is-fullscreen.flowplayer .fp-ui{background-size:auto}
55
- .is-seeking.flowplayer .fp-ui,.is-loading.flowplayer .fp-ui{background-image:none}
56
- .flowplayer .fp-logo{position:absolute;top:auto;left:15px;bottom:40px;cursor:pointer;display:none;z-index:100;}
57
- .flowplayer .fp-logo img{width:100%}
58
- .is-embedded.flowplayer .fp-logo{display:block}
59
- .fixed-controls.flowplayer .fp-logo{bottom:15px}
60
- .flowplayer .fp-fullscreen,.flowplayer .fp-unload,.flowplayer .fp-close{position:absolute;top:10px;left:auto;right:10px;display:block;width:30px;height:23px;background-position:12px -197px;cursor:pointer;}
61
- .is-rtl.flowplayer .fp-fullscreen,.is-rtl.flowplayer .fp-unload,.is-rtl.flowplayer .fp-close{right:auto;left:10px;background-position:18px -197px}
62
- .flowplayer .fp-unload,.flowplayer .fp-close{background-position:14px -175px;display:none;}
63
- .is-rtl.flowplayer .fp-unload,.is-rtl.flowplayer .fp-close{background-position:14px -175px}
64
- .flowplayer .fp-play{display:none;width:27px;height:30px;background-position:9px -24px;position:absolute;bottom:0;left:0;}
65
- .is-rtl.flowplayer .fp-play{background-position:18px -24px;left:auto;right:0}
66
- .play-button.flowplayer .fp-play{display:block}
67
- .is-paused.flowplayer .fp-play{background-position:9px 7px;}
68
- .is-rtl.is-paused.flowplayer .fp-play{background-position:18px 7px}
69
- .flowplayer.is-ready.is-closeable .fp-unload{display:block}
70
- .flowplayer.is-ready.is-closeable .fp-fullscreen{display:none}
71
- .flowplayer.is-fullscreen .fp-fullscreen{background-position:10px -217px;display:block !important;}
72
- .is-rtl.flowplayer.is-fullscreen .fp-fullscreen{background-position:21px -217px}
73
- .flowplayer.is-fullscreen .fp-unload,.flowplayer.is-fullscreen .fp-close{display:none !important}
74
- .flowplayer .fp-timeline{height:3px;position:relative;overflow:hidden;top:10px;height:10px;margin:0 165px 0 55px;}
75
- .no-volume.flowplayer .fp-timeline{margin-right:75px}
76
- .no-mute.flowplayer .fp-timeline{margin-right:155px}
77
- .no-mute.no-volume.flowplayer .fp-timeline{margin-right:55px}
78
- .play-button.flowplayer .fp-timeline{margin-left:72px}
79
- .is-rtl.flowplayer .fp-timeline{margin:0 55px 0 165px;}
80
- .no-volume.is-rtl.flowplayer .fp-timeline{margin-left:75px}
81
- .no-mute.is-rtl.flowplayer .fp-timeline{margin-left:155px}
82
- .no-mute.no-volume.is-rtl.flowplayer .fp-timeline{margin-left:55px}
83
- .play-button.is-rtl.flowplayer .fp-timeline{margin-right:72px}
84
- .is-long.flowplayer .fp-timeline{margin:0 195px 0 85px;}
85
- .no-volume.is-long.flowplayer .fp-timeline{margin-right:105px}
86
- .no-mute.is-long.flowplayer .fp-timeline{margin-right:85px}
87
- .play-button.is-long.flowplayer .fp-timeline{margin-left:102px}
88
- .is-rtl.is-long.flowplayer .fp-timeline{margin:85px 0 195px 0;}
89
- .no-volume.is-rtl.is-long.flowplayer .fp-timeline{margin-left:105px}
90
- .no-mute.is-rtl.is-long.flowplayer .fp-timeline{margin-left:85px}
91
- .play-button.is-rtl.is-long.flowplayer .fp-timeline{margin-left:102px}
92
- .aside-time.flowplayer .fp-timeline,.no-time.flowplayer .fp-timeline{margin:0 120px 0 10px}
93
- .aside-time.no-volume.flowplayer .fp-timeline,.no-time.no-volume.flowplayer .fp-timeline{margin-right:30px}
94
- .aside-time.no-mute.flowplayer .fp-timeline,.no-time.no-mute.flowplayer .fp-timeline{margin-right:10px}
95
- .play-button.no-time.flowplayer .fp-timeline,.play-button.aside-time.flowplayer .fp-timeline{margin-left:27px}
96
- .is-rtl.aside-time.flowplayer .fp-timeline,.is-rtl.no-time.flowplayer .fp-timeline{margin:0 10px 0 120px}
97
- .is-rtl.aside-time.no-volume.flowplayer .fp-timeline,.is-rtl.no-time.no-volume.flowplayer .fp-timeline{margin-left:30px}
98
- .is-rtl.aside-time.no-mute.flowplayer .fp-timeline,.is-rtl.no-time.no-mute.flowplayer .fp-timeline{margin-left:10px}
99
- .is-rtl.play-button.no-time.flowplayer .fp-timeline,.is-rtl.play-button.aside-time.flowplayer .fp-timeline{margin-right:27px}
100
- .flowplayer .fp-buffer,.flowplayer .fp-progress{position:absolute;top:0;left:auto;height:100%;cursor:col-resize}
101
- .flowplayer .fp-buffer{-webkit-transition:width .25s linear;-moz-transition:width .25s linear;transition:width .25s linear}
102
- .flowplayer .fp-timeline.no-animation .fp-buffer{-webkit-transition:none;-moz-transition:none;transition:none}
103
- .flowplayer.is-touch .fp-timeline{overflow:visible}
104
- .flowplayer.is-touch .fp-progress{-webkit-transition:width .2s linear;-moz-transition:width .2s linear;transition:width .2s linear}
105
- .flowplayer.is-touch .fp-timeline.is-dragging .fp-progress{-webkit-transition:right .1s linear,border .1s linear,top .1s linear,left .1s linear;-moz-transition:right .1s linear,border .1s linear,top .1s linear,left .1s linear;transition:right .1s linear,border .1s linear,top .1s linear,left .1s linear}
106
- .flowplayer.is-touch.is-mouseover .fp-progress:after,.flowplayer.is-touch.is-mouseover .fp-progress:before{content:'';display:block;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;position:absolute;right:-5px}
107
- .flowplayer.is-touch.is-rtl.is-mouseover .fp-progress:after,.flowplayer.is-touch.is-rtl.is-mouseover .fp-progress:before{right:auto;left:-5px}
108
- .flowplayer.is-touch.is-rtl.is-mouseover .fp-progress:after{left:-10px;-webkit-box-shadow:-1px 0 4px rgba(0,0,0,0.5);-moz-box-shadow:-1px 0 4px rgba(0,0,0,0.5);box-shadow:-1px 0 4px rgba(0,0,0,0.5)}
109
- .flowplayer.is-touch.is-mouseover .fp-progress:before{width:10px;height:10px}
110
- .flowplayer.is-touch.is-mouseover .fp-progress:after{height:10px;width:10px;top:-5px;right:-10px;border:5px solid rgba(255,255,255,0.65);-webkit-box-shadow:1px 0 4px rgba(0,0,0,0.5);-moz-box-shadow:1px 0 4px rgba(0,0,0,0.5);box-shadow:1px 0 4px rgba(0,0,0,0.5)}
111
- .flowplayer.is-touch.is-mouseover .fp-timeline.is-dragging .fp-progress:after{border:10px solid #fff;-webkit-border-radius:20px;-moz-border-radius:20px;border-radius:20px;-webkit-transition:inherit;-moz-transition:inherit;transition:inherit;top:-10px;right:-15px}
112
- .flowplayer.is-touch.is-rtl.is-mouseover .fp-timeline.is-dragging .fp-progress:after{left:-15px;right:auto;border:10px solid #fff}
113
- .flowplayer .fp-volume{position:absolute;top:11px;right:10px;}
114
- .is-rtl.flowplayer .fp-volume{right:auto;left:10px}
115
- .flowplayer .fp-mute{position:relative;width:10px;height:15px;float:left;top:-3.5px;cursor:pointer;background-position:-2px -99px;}
116
- .is-rtl.flowplayer .fp-mute{float:right;background-position:-25px -99px}
117
- .no-mute.flowplayer .fp-mute{display:none}
118
- .flowplayer .fp-volumeslider{width:90px;height:8px;cursor:col-resize;float:left;}
119
- .is-rtl.flowplayer .fp-volumeslider{float:right}
120
- .no-volume.flowplayer .fp-volumeslider{display:none}
121
- .flowplayer .fp-volumelevel{height:100%}
122
- .flowplayer .fp-time{text-shadow:0 0 1px #000;font-size:12px;font-weight:bold;color:#fff;width:100%;}
123
- .flowplayer .fp-time.is-inverted .fp-duration{display:none}
124
- .flowplayer .fp-time.is-inverted .fp-remaining{display:inline}
125
- .flowplayer .fp-time em{width:35px;height:10px;line-height:10px;text-align:center;position:absolute;bottom:10px}
126
- .no-time.flowplayer .fp-time{display:none}
127
- .is-long.flowplayer .fp-time em{width:65px}
128
- .flowplayer .fp-elapsed{left:10px;}
129
- .play-button.flowplayer .fp-elapsed{left:27px}
130
- .is-rtl.flowplayer .fp-elapsed{left:auto;right:10px;}
131
- .play-button.is-rtl.flowplayer .fp-elapsed{right:27px}
132
- .flowplayer .fp-remaining,.flowplayer .fp-duration{right:120px;color:#eee;}
133
- .no-volume.flowplayer .fp-remaining,.no-volume.flowplayer .fp-duration{right:30px}
134
- .no-mute.flowplayer .fp-remaining,.no-mute.flowplayer .fp-duration{right:110px}
135
- .no-mute.no-volume.flowplayer .fp-remaining,.no-mute.no-volume.flowplayer .fp-duration{right:10px}
136
- .is-rtl.flowplayer .fp-remaining,.is-rtl.flowplayer .fp-duration{right:auto;left:120px;}
137
- .no-volume.is-rtl.flowplayer .fp-remaining,.no-volume.is-rtl.flowplayer .fp-duration{left:30px}
138
- .no-mute.is-rtl.flowplayer .fp-remaining,.no-mute.is-rtl.flowplayer .fp-duration{left:110px}
139
- .no-mute.no-volume.is-rtl.flowplayer .fp-remaining,.no-mute.no-volume.is-rtl.flowplayer .fp-duration{left:10px}
140
- .flowplayer .fp-remaining{display:none}
141
- .flowplayer.color-light .fp-time{color:#222;text-shadow:0 0 1px #fff}
142
- .flowplayer.color-light .fp-remaining,.flowplayer.color-light .fp-duration{color:#666}
143
- .flowplayer.aside-time .fp-time{position:absolute;top:10px;left:10px;bottom:auto !important;width:100px;}
144
- .flowplayer.aside-time .fp-time strong,.flowplayer.aside-time .fp-time em{position:static}
145
- .flowplayer.aside-time .fp-time .fp-elapsed{margin-right:10px;}
146
- .is-rtl.flowplayer.aside-time .fp-time .fp-elapsed{margin-right:auto;margin-left:10px}
147
- .flowplayer.is-long.aside-time .fp-time{width:130px}
148
- .flowplayer.is-splash,.flowplayer.is-poster{cursor:pointer;}
149
- .flowplayer.is-splash .fp-controls,.flowplayer.is-poster .fp-controls,.flowplayer.is-splash .fp-fullscreen,.flowplayer.is-poster .fp-fullscreen,.flowplayer.is-splash .fp-unload,.flowplayer.is-poster .fp-unload,.flowplayer.is-splash .fp-time,.flowplayer.is-poster .fp-time,.flowplayer.is-splash .fp-embed,.flowplayer.is-poster .fp-embed{display:none !important}
150
- .flowplayer.is-poster .fp-engine{top:-9999em}
151
- .flowplayer.is-loading .fp-waiting{display:block}
152
- .flowplayer.is-loading .fp-controls,.flowplayer.is-loading .fp-time{display:none}
153
- .flowplayer.is-loading .fp-ui{background-position:-9999em}
154
- .flowplayer.is-loading video.fp-engine{position:absolute;top:-9999em}
155
- .flowplayer.is-seeking .fp-waiting{display:block}
156
- .flowplayer.is-playing{background-image:none !important;background-color:#333;}
157
- .flowplayer.is-playing.hls-fix.is-finished .fp-engine{position:absolute;top:-9999em}
158
- .flowplayer.is-fullscreen{position:fixed !important;top:0 !important;left:0 !important;border:0 !important;margin:0 !important;width:100% !important;height:100% !important;max-width:100% !important;z-index:99999 !important;-webkit-box-shadow:0 !important;-moz-box-shadow:0 !important;box-shadow:0 !important;background-image:none !important;background-color:#333;}
159
- .is-rtl.flowplayer.is-fullscreen{left:auto !important;right:0 !important}
160
- .flowplayer.is-error{border:1px solid #909090;background:#fdfdfd !important;}
161
- .flowplayer.is-error h2{font-weight:bold;font-size:large;margin-top:10%}
162
- .flowplayer.is-error .fp-message{display:block}
163
- .flowplayer.is-error object,.flowplayer.is-error video,.flowplayer.is-error .fp-controls,.flowplayer.is-error .fp-time,.flowplayer.is-error .fp-subtitle{display:none}
164
- .flowplayer.is-ready.is-muted .fp-mute{opacity:.5;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50)}
165
- .flowplayer.is-mouseout .fp-controls{height:0;-webkit-transition:height .15s .3s;-moz-transition:height .15s .3s;transition:height .15s .3s}
166
- .flowplayer.is-mouseout .fp-timeline{margin:0 !important}
167
- .flowplayer.is-mouseout .fp-timeline{-webkit-transition:height .15s .3s,top .15s .3s,margin .15s .3s;-moz-transition:height .15s .3s,top .15s .3s,margin .15s .3s;transition:height .15s .3s,top .15s .3s,margin .15s .3s;height:4px;top:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}
168
- .flowplayer.is-mouseout .fp-fullscreen,.flowplayer.is-mouseout .fp-unload,.flowplayer.is-mouseout .fp-elapsed,.flowplayer.is-mouseout .fp-remaining,.flowplayer.is-mouseout .fp-duration,.flowplayer.is-mouseout .fp-embed,.flowplayer.is-mouseout .fp-volume,.flowplayer.is-mouseout .fp-play{opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .15s .3s;-moz-transition:opacity .15s .3s;transition:opacity .15s .3s}
169
- .flowplayer.is-mouseover .fp-controls,.flowplayer.fixed-controls .fp-controls{height:30px}
170
- .flowplayer.is-mouseover .fp-fullscreen,.flowplayer.fixed-controls .fp-fullscreen,.flowplayer.is-mouseover .fp-unload,.flowplayer.fixed-controls .fp-unload,.flowplayer.is-mouseover .fp-elapsed,.flowplayer.fixed-controls .fp-elapsed,.flowplayer.is-mouseover .fp-remaining,.flowplayer.fixed-controls .fp-remaining,.flowplayer.is-mouseover .fp-duration,.flowplayer.fixed-controls .fp-duration,.flowplayer.is-mouseover .fp-embed,.flowplayer.fixed-controls .fp-embed,.flowplayer.is-mouseover .fp-logo,.flowplayer.fixed-controls .fp-logo,.flowplayer.is-mouseover .fp-volume,.flowplayer.fixed-controls .fp-volume,.flowplayer.is-mouseover .fp-play,.flowplayer.fixed-controls .fp-play{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
171
- .flowplayer.fixed-controls .fp-volume{display:block}
172
- .flowplayer.fixed-controls .fp-controls{bottom:-30px;}
173
- .is-fullscreen.flowplayer.fixed-controls .fp-controls{bottom:0}
174
- .flowplayer.fixed-controls .fp-time em{bottom:-20px;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);}
175
- .is-fullscreen.flowplayer.fixed-controls .fp-time em{bottom:10px}
176
- .flowplayer.is-disabled .fp-progress{background-color:#999}
177
- .flowplayer.is-flash-disabled{background-color:#333;}
178
- .flowplayer.is-flash-disabled object.fp-engine{z-index:100}
179
- .flowplayer.is-flash-disabled .fp-flash-disabled{display:block;z-index:101}
180
- .flowplayer .fp-embed{position:absolute;top:10px;left:10px;display:block;width:25px;height:20px;background-position:3px -237px;}
181
- .is-rtl.flowplayer .fp-embed{background-position:22px -237px;left:auto;right:10px}
182
- .flowplayer .fp-embed-code{position:absolute;display:none;top:10px;left:40px;background-color:#333;padding:3px 5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 3px #ccc;-moz-box-shadow:0 0 3px #ccc;box-shadow:0 0 3px #ccc;font-size:12px;}
183
- .flowplayer .fp-embed-code:before{content:'';width:0;height:0;position:absolute;top:2px;left:-10px;border:5px solid transparent;border-right-color:#333}
184
- .is-rtl.flowplayer .fp-embed-code{left:auto;right:40px;}
185
- .is-rtl.flowplayer .fp-embed-code:before{left:auto;right:-10px;border-right-color:transparent;border-left-color:#333}
186
- .flowplayer .fp-embed-code textarea{width:400px;height:16px;font-family:monaco,"courier new",verdana;color:#777;white-space:nowrap;resize:none;overflow:hidden;border:0;outline:0;background-color:transparent;color:#ccc}
187
- .flowplayer .fp-embed-code label{display:block;color:#999}
188
- .flowplayer.is-embedding .fp-embed,.flowplayer.is-embedding .fp-embed-code{display:block;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
189
- .flowplayer.aside-time .fp-embed{left:100px;}
190
- .is-rtl.flowplayer.aside-time .fp-embed{left:auto;right:100px}
191
- .flowplayer.aside-time .fp-embed-code{left:130px;}
192
- .is-rtl.flowplayer.aside-time .fp-embed-code{left:auto;right:130px}
193
- .flowplayer.aside-time.is-embedding .fp-time{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
194
- .flowplayer.is-long.aside-time .fp-embed{left:130px;}
195
- .is-rtl.flowplayer.is-long.aside-time .fp-embed{left:auto;right:130px}
196
- .flowplayer.no-time .fp-embed{left:10px !important;}
197
- .is-rtl.flowplayer.no-time .fp-embed{left:auto;right:10px !important}
198
- .flowplayer.is-live .fp-timeline,.flowplayer.is-live .fp-duration,.flowplayer.is-live .fp-remaining{display:none}
199
- .flowplayer .fp-context-menu{position:absolute;display:none;z-index:1001;background-color:#fff;padding:10px;border:1px solid #aaa;-webkit-box-shadow:0 0 4px #888;-moz-box-shadow:0 0 4px #888;box-shadow:0 0 4px #888;width:170px;}
200
- .flowplayer .fp-context-menu li{text-align:center;padding:10px;color:#444;margin:0 -10px 0 -10px;}
201
- .flowplayer .fp-context-menu li a{color:#00a7c8;font-size:110%}
202
- .flowplayer .fp-context-menu li:hover:not(.copyright){background-color:#eee}
203
- .flowplayer .fp-context-menu li.copyright{margin:0;padding-left:110px;background-image:url("img/flowplayer.png");background-repeat:no-repeat;background-size:100px 20px;background-position:5px 5px;border-bottom:1px solid #bbb;}
204
- @media (-webkit-min-device-pixel-ratio: 2){.flowplayer .fp-context-menu li.copyright{background-image:url("img/flowplayer@2x.png")}
205
- }@-moz-keyframes pulse{0%{opacity:0}
206
- 100%{opacity:1}
207
- }@-webkit-keyframes pulse{0%{opacity:0}
208
- 100%{opacity:1}
209
- }@-o-keyframes pulse{0%{opacity:0}
210
- 100%{opacity:1}
211
- }@-ms-keyframes pulse{0%{opacity:0}
212
- 100%{opacity:1}
213
- }@keyframes pulse{0%{opacity:0}
214
- 100%{opacity:1}
215
- }.flowplayer .fp-controls{background-color:#111}
216
- .flowplayer .fp-timeline{background-color:#555}
217
- .flowplayer .fp-buffer{background-color:#eee}
218
- .flowplayer .fp-progress{background-color:#4da5d8}
219
- .flowplayer.is-touch.is-mouseover .fp-progress:before{background-color:#4da5d8}
220
- .flowplayer .fp-volumelevel{background-color:#fff}
221
- .flowplayer .fp-volumeslider{background-color:#555}
222
- .flowplayer .fp-timeline,.flowplayer .fp-volumeslider{border:1px inset;border-color:rgba(0,0,0,0.2) rgba(17,17,17,0.05)}
223
- .flowplayer .fp-controls,.flowplayer .fp-progress{background-image:-moz-linear-gradient(rgba(255,255,255,0.4),rgba(255,255,255,0.01));background-image:-webkit-gradient(linear,0 0,0 100%,from(rgba(255,255,255,0.4)),to(rgba(255,255,255,0.01)))}
224
- .flowplayer .fp-timeline,.flowplayer .fp-buffer,.flowplayer .fp-progress,.flowplayer .fp-volumeslider,.flowplayer .fp-volumelevel{-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px}
225
- .flowplayer.color-light .fp-controls{background-color:#eee;background-image:-moz-linear-gradient(rgba(0,0,0,0.01),rgba(0,0,0,0.3));background-image:-webkit-gradient(linear,0 0,0 100%,from(rgba(0,0,0,0.01)),to(rgba(0,0,0,0.3)))}
226
- .flowplayer.color-light .fp-timeline,.flowplayer.color-light .fp-volumeslider{border-color:#eee #ccc}
227
- .flowplayer.color-light .fp-timeline,.flowplayer.color-light .fp-volumeslider{background-color:#ccc;font-size:10px}
228
- .flowplayer.color-alt .fp-progress{background-image:-moz-linear-gradient(#999,#111);background-image:-webkit-gradient(linear,0 0,0 100%,from(#999),to(#111))}
229
- .flowplayer.color-alt.is-touch.is-mouseover .fp-progress:before{background-image:-moz-linear-gradient(#999,#111);background-image:-webkit-gradient(linear,0 0,0 100%,from(#999),to(#111))}
230
- .flowplayer.color-alt .fp-timeline,.flowplayer.color-alt .fp-volumeslider{background-color:#111}
231
- .flowplayer.color-alt2 .fp-progress{background-color:#900}
232
- .flowplayer.color-alt2.is-touch.is-mouseover .fp-progress:before{background-color:#900}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/skin/icons/flowplayer.eot ADDED
Binary file
lib/skin/icons/flowplayer.svg ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
+ <svg xmlns="http://www.w3.org/2000/svg">
4
+ <metadata>Generated by IcoMoon</metadata>
5
+ <defs>
6
+ <font id="icomoon" horiz-adv-x="1024">
7
+ <font-face units-per-em="1024" ascent="819.2" descent="-204.8" />
8
+ <missing-glyph horiz-adv-x="1024" />
9
+ <glyph unicode="&#x20;" horiz-adv-x="256" d="" />
10
+ <glyph unicode="&#xe001;" glyph-name="uniE001" d="M701.44 75.264q11.264-20.48 10.24-34.816 0-4.096-1.024-6.144 0-5.12-4.096-11.264-4.096-7.168-12.288-13.312-13.312-8.192-35.84-8.192h-292.864q-17.408 0-30.72 5.12-14.336 8.192-20.48 21.504-2.048 8.192-2.048 12.288-1.024 14.336 10.24 34.816l146.432 253.952q2.048 4.096 4.608 7.68t4.608 6.656q18.432 19.456 38.912 16.384h2.048q2.048-1.024 4.096-1.536t4.096-1.536 3.584-1.536 3.584-2.56q11.264-8.192 20.48-23.552zM809.984 597.504q24.576 0 42.496-17.408t17.92-43.008v-370.688q0-25.6-17.92-43.008t-42.496-17.408h-63.488q-2.048 4.096-3.072 5.12l-146.432 254.976q-31.744 54.272-84.992 54.272t-84.992-54.272l-146.432-254.976q-1.024-1.024-3.072-5.12h-63.488q-24.576 0-42.496 17.408t-17.92 43.008v370.688q0 25.6 17.92 43.008t42.496 17.408h595.968zM691.2 105.984l-136.192 235.52z" />
11
+ <glyph unicode="&#xe002;" glyph-name="uniE002" d="M181.248 44.544l87.040 326.656q3.072 12.288 12.288 20.48t19.968 11.264 22.528 0.512 20.992-11.776l239.616-239.616q9.216-9.216 11.776-20.992t-0.512-22.528-11.264-19.968-20.48-12.288l-326.656-87.040q-12.288-3.072-24.064 0t-19.968 11.264-11.264 19.968 0 24.064zM842.752 595.456l-87.040-326.656q-3.072-12.288-12.288-20.48t-19.968-11.264-22.528-0.512-20.992 11.776l-239.616 239.616q-9.216 9.216-11.776 20.992t0.512 22.528 11.264 19.968 20.48 12.288l326.656 87.040q12.288 3.072 24.064 0t19.968-11.264 11.264-19.968 0-24.064z" />
12
+ <glyph unicode="&#xe003;" glyph-name="uniE003" d="M465.92 12.8q-31.744 0-50.176 26.624l-180.224 316.416q-14.336 21.504-10.24 47.104t25.6 39.936q20.48 14.336 46.080 10.24t39.936-25.6l122.88-186.368 320.512 460.8q10.24 18.432 28.16 25.088t32.256-1.536q17.408-10.24 23.040-26.624t-5.632-35.84l-337.92-618.496q-8.192-14.336-21.504-22.528t-28.672-9.216h-4.096z" />
13
+ <glyph unicode="&#xe004;" glyph-name="uniE004" d="M510.976 667.136q1.024 18.432 8.704 34.304t19.968 28.16 28.16 18.944 34.304 6.656q36.864-1.024 62.976-27.136t26.112-62.976q0-20.48-8.192-37.888t-22.528-29.696q-6.144-6.144-14.848-13.824t-8.704-15.872q0-9.216 5.12-16.384t13.312-12.8 17.92-8.192 18.944-0.512l116.736 17.408 20.48-192.512q2.048-21.504-12.288-37.376t-35.84-15.872h-6.144q-31.744 0-51.2 22.528-25.6 30.72-67.584 30.72-19.456 0-36.352-7.68t-29.184-20.48-18.944-30.72-5.632-37.376q2.048-32.768 26.624-57.344t58.368-25.6q21.504-2.048 39.936 6.656t32.768 23.040q18.432 23.552 50.176 23.552h7.168q21.504 0 35.328-15.872t11.776-37.376l-19.456-167.936h-470.016q-1.024 0-1.024 1.024l18.432 152.576q1.024 11.264-2.048 23.552t-10.24 22.016-17.408 15.872-21.504 6.144-20.48-8.704-16.384-16.896q-25.6-27.648-65.536-27.648-36.864 0-63.488 26.112t-26.624 62.976q0 18.432 6.656 34.304t18.432 28.16 27.648 19.968 34.304 7.68q41.984 2.048 67.584-27.648 8.192-8.192 17.408-16.896t20.48-8.704h1.024q11.264 0 21.504 6.144t16.896 15.872 10.24 22.016 2.56 23.552l-19.456 178.176 174.080-19.456q8.192-1.024 17.92 1.536t17.408 7.68 12.8 12.8 5.12 16.896v1.024q0 8.192-8.704 15.872t-14.848 13.824q-30.72 25.6-30.72 69.632z" />
14
+ <glyph unicode="&#xe005;" glyph-name="uniE005" d="M176.128 166.4q41.984-7.168 71.168-36.352t36.352-71.168q3.072-11.264-5.12-19.456-6.144-8.192-18.432-8.192h-88.064q-10.24 0-16.896 6.656t-6.656 16.896v88.064q0 12.288 8.192 18.432 8.192 8.192 19.456 5.12zM172.032 279.040q46.080 0 87.040-17.408t71.68-48.128 48.128-71.68 17.408-87.040q0-12.288-8.192-20.48t-20.48-8.192q-11.264 0-19.456 8.192t-8.192 20.48q0 34.816-13.312 65.024t-36.352 53.248-53.248 36.352-65.024 13.312q-12.288 0-20.48 8.192t-8.192 20.48q0 11.264 8.192 19.456t20.48 8.192zM172.032 394.752q70.656 0 132.096-26.624t107.52-72.704 72.704-108.032 26.624-132.608q0-12.288-8.192-20.48t-19.456-8.192q-12.288 0-20.48 8.192t-8.192 20.48q0 58.368-22.528 109.568t-60.928 89.6-89.6 60.928-109.568 22.528q-12.288 0-20.48 8.704t-8.192 19.968 8.192 19.968 20.48 8.704zM779.264 572.928q33.792 0 57.344-23.552t23.552-57.344v-322.56q0-33.792-23.552-57.344t-57.344-23.552h-214.016q-6.144 71.68-36.352 135.168t-78.848 111.616-112.128 77.824-136.192 35.84v43.008q0 33.792 24.064 57.344t56.832 23.552h496.64z" />
15
+ <glyph unicode="&#xe006;" glyph-name="uniE006" d="M820.224 100.864q-16.384-12.288-35.84-19.456t-41.984-7.168h-460.8q-22.528 0-41.984 7.168t-35.84 19.456l218.112 189.44 41.984-35.84q19.456-18.432 48.128-18.432 27.648 0 48.128 18.432l41.984 35.84zM390.144 317.952l-215.040-187.392q-21.504 32.768-21.504 71.68v235.52q0 37.888 19.456 68.608zM200.704 537.088q33.792 28.672 80.896 28.672h460.8q47.104 0 80.896-28.672l-289.792-251.904q-9.216-8.192-21.504-8.192t-21.504 8.192zM633.856 317.952l217.088 188.416q19.456-30.72 19.456-68.608v-235.52q0-38.912-21.504-71.68z" />
16
+ <glyph unicode="&#xe007;" glyph-name="uniE007" d="M223.232 564.736q0 29.696 9.728 50.176t26.624 30.208 39.424 7.68 48.128-16.384l422.912-244.736q25.6-15.36 38.4-33.792t12.8-37.888-12.8-37.888-38.4-33.792l-422.912-244.736q-25.6-14.336-48.128-16.384t-39.424 7.68-26.624 30.208-9.728 50.176v489.472z" />
17
+ <glyph unicode="&#xe008;" glyph-name="uniE008" d="M340.992-7.68q-41.984 0-71.168 29.184t-29.184 72.192v452.608q0 43.008 29.184 72.192t71.168 29.184q43.008 0 72.192-29.184t29.184-72.192v-452.608q0-43.008-29.184-72.192t-72.192-29.184zM683.008-7.68q-43.008 0-72.192 29.184t-29.184 72.192v452.608q0 43.008 29.184 72.192t72.192 29.184q41.984 0 71.168-29.184t29.184-72.192v-452.608q0-43.008-29.184-72.192t-71.168-29.184z" />
18
+ <glyph unicode="&#xe009;" glyph-name="uniE009" d="M742.4 357.888q17.408 12.288 17.408 33.28t-17.408 33.28l-150.528 110.592q-9.216 6.144-18.944 1.536t-9.728-15.872v-71.68h-25.6q-62.464 0-114.688-23.552t-87.552-64.512-51.712-95.232-6.144-115.712q4.096-26.624 14.336-53.248 2.048-5.12 7.68-4.608t6.656 6.656q6.144 46.080 28.16 86.528t55.808 69.632 76.288 46.080 90.624 16.896h6.144v-60.416q0-11.264 9.728-15.872t18.944 1.536l150.528 114.688zM772.096 652.8q29.696 0 51.2-21.504t21.504-51.2v-520.192q0-29.696-21.504-51.2t-51.2-21.504h-520.192q-29.696 0-51.2 21.504t-21.504 51.2v520.192q0 29.696 21.504 51.2t51.2 21.504h520.192z" />
19
+ <glyph unicode="&#xe00a;" glyph-name="uniE00A" d="M637.952 392.704h-74.752v40.96q0 17.408 4.608 25.6t28.16 8.192h41.984v81.92h-66.56q-59.392 0-83.456-28.16t-24.064-79.36v-49.152h-49.152v-81.92h49.152v-239.616h99.328v239.616h66.56zM512 678.4q73.728 0 139.264-28.16t114.176-76.8 76.8-114.176 28.16-139.264-28.16-139.264-76.8-114.176-114.176-76.8-139.264-28.16-139.264 28.16-114.176 76.8-76.8 114.176-28.16 139.264 28.16 139.264 76.8 114.176 114.176 76.8 139.264 28.16z" />
20
+ <glyph unicode="&#xe00b;" glyph-name="uniE00B" d="M451.584 599.552q9.216 8.192 19.456 9.216t19.456-2.56 15.36-12.288 6.144-19.968v-507.904q0-11.264-6.144-19.968t-15.36-12.288-19.456-2.56-19.456 9.216l-136.192 124.928h-58.368q-31.744 0-59.904 12.288t-49.152 33.28-33.28 49.152-12.288 59.904 12.288 59.904 33.28 49.152 49.152 33.28 59.904 12.288h58.368l136.192 124.928z" />
21
+ <glyph unicode="&#xe00c;" glyph-name="uniE00C" d="M705.536 392.704q27.648 20.48 49.152 50.176-26.624-11.264-56.32-15.36 15.36 9.216 26.112 23.040t16.896 31.232q-29.696-17.408-61.44-24.576-28.672 30.72-70.656 30.72-20.48 0-37.888-7.68t-30.208-20.48-20.48-30.72-7.68-37.376v-11.264t2.048-11.264q-61.44 3.072-112.64 30.208t-87.040 71.168q-5.12-11.264-8.704-23.040t-3.584-26.112q0-24.576 11.264-45.568t31.744-34.304q-23.552 1.024-44.032 12.288v-1.024q0-35.84 22.016-61.952t54.784-33.28q-11.264-3.072-24.576-3.072h-9.728t-8.704 2.048q9.216-29.696 33.792-48.128t56.32-19.456q-24.576-19.456-55.296-30.208t-64.512-10.752h-11.776t-10.752 1.024q31.744-20.48 69.12-31.744t78.336-11.264q66.56 0 117.76 25.088t86.528 64.512 53.248 88.064 17.92 96.768q0 8.192-1.024 12.288zM512 678.4q74.752 0 139.776-28.16t113.664-76.8 76.8-114.176 28.16-139.264q0-74.752-28.16-139.776t-76.8-113.664-113.664-76.8-139.776-28.16q-73.728 0-139.264 28.16t-114.176 76.8-76.8 113.664-28.16 139.776q0 73.728 28.16 139.264t76.8 114.176 114.176 76.8 139.264 28.16z" />
22
+ <glyph unicode="&#xe00d;" glyph-name="uniE00D" d="M907.264 231.936q14.336-14.336 14.336-34.304t-14.336-34.304-33.792-14.336q-18.432 0-34.816 14.336l-88.064 88.064-88.064-88.064q-14.336-14.336-33.792-14.336-18.432 0-34.816 14.336-14.336 14.336-14.336 34.304t14.336 34.304l89.088 88.064-89.088 88.064q-14.336 14.336-14.336 34.304t14.336 34.304 34.304 14.336 34.304-14.336l88.064-88.064 88.064 88.064q14.336 14.336 34.304 14.336t34.304-14.336 14.336-34.304-14.336-34.304l-88.064-88.064zM451.584 599.552q9.216 8.192 19.456 9.216t19.456-2.56 15.36-12.288 6.144-19.968v-507.904q0-11.264-6.144-19.968t-15.36-12.288-19.456-2.56-19.456 9.216l-136.192 124.928h-58.368q-31.744 0-59.904 12.288t-49.152 33.28-33.28 49.152-12.288 59.904 12.288 59.904 33.28 49.152 49.152 33.28 59.904 12.288h58.368l136.192 124.928z" />
23
+ <glyph unicode="&#xe00e;" glyph-name="uniE00E" d="M733.184 446.976q19.456 19.456 19.456 46.592t-19.456 47.616q-21.504 19.456-47.104 19.456t-47.104-19.456l-58.368-59.392q-27.648-27.648-17.408-63.488l25.6 25.6q9.216 10.24 23.040 10.24t24.064-10.24 10.24-24.064-10.24-23.040l-25.6-25.6q35.84-10.24 63.488 17.408l59.392 58.368zM443.392 158.208q27.648 27.648 17.408 63.488l-25.6-25.6q-9.216-9.216-23.552-9.216-13.312 0-23.552 9.216-10.24 10.24-10.24 24.064t10.24 23.040l25.6 25.6q-5.12 1.024-8.704 1.536t-7.68 0.512q-28.672 0-47.104-19.456l-59.392-58.368q-19.456-19.456-19.456-46.592t19.456-47.616q20.48-19.456 47.616-19.456t46.592 19.456l58.368 59.392zM780.288 588.288q19.456-19.456 29.184-44.032t9.728-50.176-9.728-50.176-29.184-44.032l-59.392-59.392q-19.456-19.456-43.52-29.184t-50.688-9.728q-35.84 0-66.56 18.432l-48.128-48.128q22.528-37.888 17.408-82.944t-37.888-77.824l-59.392-59.392q-19.456-19.456-44.032-29.184t-50.176-9.728-50.176 9.728-44.032 29.184-29.184 44.032-9.728 50.176 9.728 50.176 29.184 44.032l59.392 59.392q32.768 32.768 77.824 37.888t82.944-17.408l48.128 48.128q-22.528 37.888-17.408 82.944t37.888 77.824l59.392 59.392q19.456 19.456 44.032 29.184t50.176 9.728 50.176-9.728 44.032-29.184z" />
24
+ <glyph unicode="&#xe00f;" glyph-name="uniE00F" d="M799.744 126.464q19.456-20.48 19.456-47.616t-19.456-46.592-47.104-19.456q-12.288 0-24.576 4.608t-22.528 14.848l-193.536 193.536-193.536-193.536q-10.24-10.24-22.528-14.848t-24.576-4.608q-27.648 0-47.104 19.456t-19.456 46.592 19.456 47.616l193.536 193.536-193.536 193.536q-19.456 20.48-19.456 47.616t19.456 46.592 46.592 19.456 47.616-19.456l193.536-193.536 193.536 193.536q20.48 19.456 47.616 19.456t46.592-19.456 19.456-46.592-19.456-47.616l-193.536-193.536z" />
25
+ <glyph unicode="&#xe010;" glyph-name="uniE010" d="M194.56 256.512q-27.648 0-47.104 19.456t-19.456 47.104q0 28.672 19.456 48.128t47.104 19.456q28.672 0 48.128-19.456t19.456-48.128q0-27.648-19.456-47.104t-48.128-19.456zM194.56 380.416q-23.552 0-39.936-16.896t-16.384-40.448 16.384-39.936 39.936-16.384 40.448 16.384 16.896 39.936-16.896 40.448-40.448 16.896zM178.176 344.576q0 7.168 7.168 4.096l36.864-20.48q6.144-5.12 0-9.216l-36.864-20.48q-7.168-4.096-7.168 4.096v41.984zM324.608 364.032q-4.096 2.048-7.168 2.048-9.216 0-9.216-10.24v-7.168h14.336v-16.384h-14.336v-56.32h-20.48v56.32h-11.264v16.384h11.264v8.192q0 25.6 25.6 25.6 8.192 0 11.264-2.048v-16.384zM352.256 275.968h-20.48v105.472h20.48v-105.472zM394.24 274.944q-16.384 0-26.112 10.24t-9.728 26.624q0 17.408 9.728 27.648t26.112 10.24q15.36 0 25.088-10.24t9.728-27.648q0-16.384-9.728-26.624t-25.088-10.24zM394.24 333.312q-8.192 0-11.776-6.144t-3.584-15.36q0-8.192 3.584-14.336t11.776-6.144 11.776 6.144 3.584 14.336q0 9.216-3.584 15.36t-11.776 6.144zM500.736 302.592l12.288 46.080h19.456l-21.504-72.704h-18.432l-12.288 44.032-11.264-44.032h-18.432l-22.528 72.704h20.48l12.288-46.080 12.288 46.080h15.36zM557.056 249.344h-19.456v99.328h19.456v-6.144q5.12 7.168 18.432 7.168 15.36 0 24.064-11.264t8.704-26.624-8.704-26.112-24.064-10.752q-13.312 0-18.432 7.168v-32.768zM557.056 300.544q3.072-8.192 13.312-8.192 17.408 0 17.408 19.456 0 20.48-17.408 20.48-10.24 0-13.312-8.192v-23.552zM634.88 275.968h-20.48v105.472h20.48v-105.472zM686.080 275.968v4.096q-2.048-2.048-7.168-3.584t-11.264-1.536q-11.264 0-18.944 6.144t-7.68 17.408q0 10.24 8.192 16.384t20.48 6.144q10.24 0 16.384-4.096v5.12q0 11.264-12.288 11.264-9.216 0-10.24-6.144h-19.456q2.048 10.24 10.24 16.384t20.48 6.144q29.696 0 29.696-27.648v-46.080h-18.432zM686.080 300.544q-4.096 7.168-13.312 7.168-5.12 0-9.216-2.048t-4.096-7.168 4.096-7.168 9.216-2.048q9.216 0 13.312 6.144v5.12zM722.944 249.344l11.264 26.624-27.648 72.704h20.48l17.408-48.128 16.384 48.128h19.456l-36.864-99.328h-20.48zM845.824 299.52q-5.12-24.576-32.768-24.576-15.36 0-25.088 10.24t-9.728 26.624q0 17.408 9.728 27.648t25.088 10.24q16.384 0 24.576-9.728t8.192-26.112v-6.144h-48.128q2.048-17.408 15.36-17.408 11.264 0 13.312 9.216h19.456zM797.696 320h28.672q0 13.312-13.312 13.312-12.288 0-15.36-13.312zM896 328.192q-5.12 3.072-10.24 3.072-11.264 0-13.312-10.24v-45.056h-20.48v72.704h20.48v-7.168q5.12 8.192 16.384 8.192 6.144 0 7.168-1.024v-20.48z" />
26
+ <glyph unicode="&#xe011;" glyph-name="uniE011" d="M313.344 370.176l283.648 283.648q22.528 22.528 54.784 24.576t55.808-20.48q12.288-11.264 17.92-25.6t5.632-29.696-5.632-29.696-16.896-26.624l-226.304-226.304 226.304-226.304q23.552-22.528 23.552-54.272t-23.552-55.296q-11.264-11.264-25.6-16.896t-28.672-5.632q-32.768 0-55.296 22.528l-285.696 286.72q-20.48 20.48-20.48 49.664t20.48 49.664z" />
27
+ <glyph unicode="&#xe012;" glyph-name="uniE012" d="M710.656 370.176q20.48-20.48 20.48-49.664t-20.48-49.664l-285.696-286.72q-22.528-22.528-55.296-22.528-14.336 0-28.672 5.632t-25.6 16.896q-23.552 23.552-23.552 55.296t23.552 54.272l226.304 226.304-226.304 226.304q-11.264 12.288-16.896 26.624t-5.632 29.696 5.632 29.696 17.92 25.6q23.552 22.528 55.808 20.48t54.784-24.576l283.648-283.648z" />
28
+ <glyph unicode="&#xe013;" glyph-name="_19" d="M819.2 320q0-63.488-24.064-119.808t-65.536-97.792-97.792-65.536-119.808-24.064-119.808 24.064-97.792 65.536-65.536 97.792-24.064 119.808 24.064 119.808 65.536 97.792 97.792 65.536 119.808 24.064 119.808-24.064 97.792-65.536 65.536-97.792 24.064-119.808z" />
29
+ <glyph unicode="&#xe014;" glyph-name="_20" d="M512-38.4q-73.728 0-139.264 28.16t-114.176 76.8-76.8 114.176-28.16 139.264 28.16 139.264 76.8 114.176 114.176 76.8 139.264 28.16 139.264-28.16 114.176-76.8 76.8-114.176 28.16-139.264-28.16-139.264-76.8-114.176-114.176-76.8-139.264-28.16zM512 629.248q-63.488 0-119.808-24.576t-98.304-66.56-66.56-98.304-24.576-119.808 24.576-119.808 66.56-98.304 98.304-66.56 119.808-24.576 119.808 24.576 98.304 66.56 66.56 98.304 24.576 119.808-24.576 119.808-66.56 98.304-98.304 66.56-119.808 24.576zM424.96 416.256q0 23.552 14.336 31.744t34.816-3.072l166.912-96.256q20.48-12.288 20.48-28.672t-20.48-28.672l-166.912-96.256q-20.48-11.264-34.816-3.072t-14.336 31.744v192.512z" />
30
+ <glyph unicode="&#xe015;" glyph-name="_21" d="M512-38.4q-73.728 0-139.264 28.16t-114.176 76.8-76.8 114.176-28.16 139.264 28.16 139.264 76.8 114.176 114.176 76.8 139.264 28.16 139.264-28.16 114.176-76.8 76.8-114.176 28.16-139.264-28.16-139.264-76.8-114.176-114.176-76.8-139.264-28.16zM512 629.248q-63.488 0-119.808-24.576t-98.304-66.56-66.56-98.304-24.576-119.808 24.576-119.808 66.56-98.304 98.304-66.56 119.808-24.576 119.808 24.576 98.304 66.56 66.56 98.304 24.576 119.808-24.576 119.808-66.56 98.304-98.304 66.56-119.808 24.576zM439.296 180.736q-17.408 0-30.208 12.288t-12.8 30.72v192.512q0 18.432 12.8 31.232t30.208 12.8 30.208-12.8 12.8-31.232v-192.512q0-18.432-12.8-30.72t-30.208-12.288zM584.704 180.736q-17.408 0-30.208 12.288t-12.8 30.72v192.512q0 18.432 12.8 31.232t30.208 12.8 30.208-12.8 12.8-31.232v-192.512q0-18.432-12.8-30.72t-30.208-12.288z" />
31
+ <glyph unicode="&#xe016;" glyph-name="_22" d="M521.216 382.464l82.944 311.296q3.072 12.288 11.776 19.968t19.456 10.752 21.504 0.512 19.968-11.776l228.352-228.352q9.216-9.216 11.776-19.968t-0.512-21.504-10.752-19.456-19.968-11.776l-311.296-82.944q-12.288-3.072-23.552 0t-18.944 10.752-10.752 18.944 0 23.552zM502.784 257.536l-82.944-311.296q-3.072-12.288-11.776-19.968t-19.456-10.752-21.504-0.512-19.968 11.776l-228.352 228.352q-9.216 9.216-11.776 19.968t0.512 21.504 10.752 19.456 19.968 11.776l311.296 82.944q12.288 3.072 23.552 0t18.944-10.752 10.752-18.944 0-23.552z" />
32
+ <glyph unicode="&#xe101;" glyph-name="uniE101" d="M746.496 3.584v0 0h-457.728l228.352 396.288 145.408-251.904zM870.4 595.456v-491.52h-119.808l-191.488 331.776-41.984 71.68-40.96-71.68-192.512-331.776h-130.048v491.52h716.8z" />
33
+ <glyph unicode="&#xe102;" glyph-name="uniE102" d="M179.2-12.8l121.856 452.608 330.752-330.752zM844.8 652.8l-121.856-452.608-330.752 330.752z" />
34
+ <glyph unicode="&#xe103;" glyph-name="uniE103" d="M447.488 12.8l-221.184 367.616 75.776 53.248 133.12-190.464 304.128 486.4 58.368-31.744z" />
35
+ <glyph unicode="&#xe104;" glyph-name="uniE104" d="M509.952 673.28q0 38.912 27.136 65.536t66.048 26.624 65.536-26.624 26.624-65.536q0-25.6-12.288-46.592t-32.768-33.28v-66.56h179.2v-217.088h-77.824q-12.288 20.48-32.768 32.768t-46.080 12.288q-38.912 0-66.048-27.136t-27.136-66.048 27.136-65.536 66.048-26.624q25.6 0 46.080 12.288t32.768 32.768h77.824v-217.088h-484.352v217.088h-60.416q-12.288-20.48-33.28-32.768t-46.592-12.288q-38.912 0-65.536 26.624t-26.624 65.536 26.624 66.048 65.536 27.136q25.6 0 46.592-12.288t33.28-32.768h60.416v217.088h209.92v66.56q-20.48 12.288-32.768 33.28t-12.288 46.592z" />
36
+ <glyph unicode="&#xe105;" glyph-name="uniE105" d="M149.504 153.088q24.576 0 45.568-9.216t37.376-25.6 25.6-37.888 9.216-46.080v-5.12h-123.904v123.904h6.144zM149.504 266.752q48.128 0 90.112-18.432t73.728-49.664 49.664-73.728 17.92-90.624v-5.12h-58.368v5.12q0 35.84-13.824 67.584t-37.376 55.296-54.784 37.376-67.072 13.824h-6.144v58.368h6.144zM149.504 385.536q72.704 0 136.192-27.648t111.104-75.264 75.264-111.616 27.648-136.704v-5.12h-58.368v5.12q0 60.416-23.040 113.664t-62.464 93.184-92.672 62.976-113.664 23.040h-6.144v58.368h6.144zM860.16 569.856v-499.712h-304.128q-6.144 74.752-37.888 139.776t-81.92 114.688-115.712 80.384-140.288 36.864v128h679.936z" />
37
+ <glyph unicode="&#xe106;" glyph-name="uniE106" d="M870.4 518.656v-401.408l-231.424 200.704zM854.016 74.24h-684.032l247.808 215.040 94.208-81.92 94.208 81.92zM860.16 565.76l-348.16-302.080-348.16 302.080h696.32zM153.6 117.248v401.408l231.424-200.704z" />
38
+ <glyph unicode="&#xe107;" glyph-name="uniE107" d="M809.984 320l-575.488-332.8v665.6z" />
39
+ <glyph unicode="&#xe108;" glyph-name="uniE108" d="M442.368-7.68h-201.728v655.36h201.728v-655.36zM783.36-7.68h-201.728v655.36h201.728v-655.36z" />
40
+ <glyph unicode="&#xe109;" glyph-name="uniE109" d="M787.456 391.68l-224.256 163.84v-106.496h-25.6q-62.464 0-114.688-23.552t-87.552-64.512-51.712-95.232-6.144-115.712q4.096-26.624 14.336-53.248 2.048-5.12 7.68-4.608t6.656 6.656q6.144 46.080 28.16 86.528t55.808 69.632 76.288 46.080 90.624 16.896h6.144v-96.256zM844.8 652.8v-665.6h-665.6v665.6h665.6z" />
41
+ <glyph unicode="&#xe10a;" glyph-name="uniE10A" d="M629.76 387.584h-70.656v37.888q0 15.36 5.12 23.040t25.6 7.68h38.912v76.8h-61.44q-55.296 0-77.312-26.112t-22.016-73.216v-46.080h-46.080v-75.776h46.080v-222.208h91.136v222.208h61.44zM844.8 652.8v-665.6h-665.6v665.6h665.6z" />
42
+ <glyph unicode="&#xe10b;" glyph-name="uniE10B" d="M286.72 472.576l194.56 178.176v-661.504l-194.56 178.176h-184.32v305.152h184.32z" />
43
+ <glyph unicode="&#xe10c;" glyph-name="uniE10C" d="M688.128 384.512q26.624 17.408 46.080 47.104-26.624-11.264-52.224-14.336 28.672 17.408 39.936 50.176-14.336-8.192-28.16-13.824t-30.208-8.704q-12.288 14.336-29.184 22.016t-36.352 7.68q-38.912 0-65.536-26.624t-26.624-64.512q0-5.12 0.512-10.752t1.536-10.752q-57.344 3.072-105.472 28.672t-81.92 66.56q-12.288-20.48-12.288-46.080 0-23.552 11.264-43.52t28.672-32.256q-22.528 2.048-40.96 12.288v-2.048q0-32.768 20.48-57.344t52.224-31.744q-11.264-3.072-23.552-3.072h-9.216t-8.192 2.048q8.192-27.648 31.744-45.568t53.248-17.92q-23.552-18.432-51.712-28.672t-60.928-10.24h-10.752t-10.752 1.024q61.44-40.96 139.264-40.96 62.464 0 111.104 23.552t81.92 60.928 50.176 83.456 16.896 91.136q0 8.192-1.024 12.288zM844.8 652.8v-665.6h-665.6v665.6h665.6z" />
44
+ <glyph unicode="&#xe10d;" glyph-name="uniE10D" d="M802.816 320l118.784-118.784-67.584-67.584-118.784 118.784-119.808-118.784-67.584 67.584 119.808 118.784-119.808 118.784 67.584 67.584 119.808-118.784 118.784 118.784 67.584-67.584zM286.72 472.576l194.56 178.176v-661.504l-194.56 178.176h-184.32v305.152h184.32z" />
45
+ <glyph unicode="&#xe10e;" glyph-name="uniE10E" d="M549.888 397.824l46.080 46.080 41.984-37.888-48.128-48.128 19.456-19.456 130.048 129.024-79.872 79.872-129.024-130.048zM474.112 242.176l-45.056-45.056-44.032 35.84 49.152 49.152-19.456 19.456-130.048-129.024 79.872-79.872 129.024 130.048zM549.888 317.952l-35.84-35.84 60.416-59.392-209.92-209.92-159.744 159.744 209.92 209.92 59.392-60.416 35.84 35.84-60.416 59.392 209.92 209.92 159.744-159.744-209.92-209.92z" />
46
+ <glyph unicode="&#xe10f;" glyph-name="uniE10F" d="M599.040 320l220.16-220.16-87.040-87.040-220.16 220.16-220.16-220.16-87.040 87.040 220.16 220.16-220.16 220.16 87.040 87.040 220.16-220.16 220.16 220.16 87.040-87.040z" />
47
+ <glyph unicode="&#xe110;" glyph-name="uniE110" d="M656.384 342.528q16.384-9.216 16.384-22.528t-16.384-22.528l-195.584-112.64q-15.36-9.216-26.624-2.56t-11.264 25.088v225.28q0 18.432 11.264 25.088t26.624-2.56l195.584-112.64zM512 13.824q63.488 0 119.296 24.064t97.28 65.536 65.536 97.28 24.064 119.296-24.064 119.296-65.536 97.28-97.28 65.536-119.296 24.064-119.296-24.064-97.28-65.536-65.536-97.28-24.064-119.296 24.064-119.296 65.536-97.28 97.28-65.536 119.296-24.064zM512 678.4q73.728 0 139.264-28.16t114.176-76.8 76.8-114.176 28.16-139.264-28.16-139.264-76.8-114.176-114.176-76.8-139.264-28.16-139.264 28.16-114.176 76.8-76.8 114.176-28.16 139.264 28.16 139.264 76.8 114.176 114.176 76.8 139.264 28.16z" />
48
+ <glyph unicode="&#xe111;" glyph-name="uniE111" d="M641.024 678.4l100.352-101.376-257.024-257.024 257.024-257.024-100.352-101.376-358.4 358.4z" />
49
+ <glyph unicode="&#xe112;" glyph-name="uniE112" d="M741.376 320l-358.4-358.4-100.352 101.376 257.024 257.024-257.024 257.024 100.352 101.376z" />
50
+ <glyph unicode="&#xe113;" glyph-name="_46" d="M768 64h-512v512h512v-512z" />
51
+ <glyph unicode="&#xe114;" glyph-name="_47" d="M512-38.4q-73.728 0-139.264 28.16t-114.176 76.8-76.8 114.176-28.16 139.264 28.16 139.264 76.8 114.176 114.176 76.8 139.264 28.16 139.264-28.16 114.176-76.8 76.8-114.176 28.16-139.264-28.16-139.264-76.8-114.176-114.176-76.8-139.264-28.16zM512 629.248q-63.488 0-119.808-24.576t-98.304-66.56-66.56-98.304-24.576-119.808 24.576-119.808 66.56-98.304 98.304-66.56 119.808-24.576 119.808 24.576 98.304 66.56 66.56 98.304 24.576 119.808-24.576 119.808-66.56 98.304-98.304 66.56-119.808 24.576zM680.96 320l-254.976-147.456v294.912z" />
52
+ <glyph unicode="&#xe115;" glyph-name="_48" d="M512-38.4q-73.728 0-139.264 28.16t-114.176 76.8-76.8 114.176-28.16 139.264 28.16 139.264 76.8 114.176 114.176 76.8 139.264 28.16 139.264-28.16 114.176-76.8 76.8-114.176 28.16-139.264-28.16-139.264-76.8-114.176-114.176-76.8-139.264-28.16zM512 629.248q-63.488 0-119.808-24.576t-98.304-66.56-66.56-98.304-24.576-119.808 24.576-119.808 66.56-98.304 98.304-66.56 119.808-24.576 119.808 24.576 98.304 66.56 66.56 98.304 24.576 119.808-24.576 119.808-66.56 98.304-98.304 66.56-119.808 24.576zM483.328 183.808h-83.968v272.384h83.968v-272.384zM624.64 183.808h-83.968v272.384h83.968v-272.384z" />
53
+ <glyph unicode="&#xe116;" glyph-name="_49" d="M521.216 329.216l115.712 432.128 316.416-316.416zM502.784 310.784l-115.712-432.128-316.416 316.416z" />
54
+ <glyph unicode="&#xe201;" glyph-name="uniE201" d="M661.504 54.784q0 1.024-0.512 1.536t-0.512 1.536l-147.456 253.952q0 1.024-1.024 2.048 0-1.024-0.512-1.024t-0.512-1.024l-147.456-253.952q0-2.048-1.024-3.072h299.008zM701.44 81.408q17.408-30.72 5.12-52.736t-48.128-22.016h-292.864q-35.84 0-48.128 22.016t5.12 52.736l146.432 253.952q18.432 30.72 43.008 30.72t43.008-30.72zM809.984 592.384q24.576 0 42.496-17.92t17.92-43.52v-370.688q0-24.576-17.92-42.496t-42.496-17.92h-63.488l-3.072 6.144-24.576 41.984h91.136q12.288 0 12.288 12.288v370.688q0 13.312-12.288 13.312h-595.968q-5.12 0-8.704-4.096t-3.584-9.216v-370.688q0-5.12 3.584-8.704t8.704-3.584h91.136l-24.576-41.984-3.072-6.144h-63.488q-24.576 0-42.496 17.92t-17.92 42.496v370.688q0 25.6 17.92 43.52t42.496 17.92h595.968z" />
55
+ <glyph unicode="&#xe202;" glyph-name="uniE202" d="M844.8 619.008v-2.048l-28.672-261.12q-2.048-12.288-10.752-20.48t-20.992-8.192h-4.096q-13.312 2.048-22.016 11.776t-6.656 24.064l18.432 168.96-185.344-185.344q-9.216-9.216-22.528-9.216t-23.552 9.216q-9.216 10.24-9.216 23.552t9.216 22.528l185.344 185.344-168.96-18.432q-14.336-2.048-24.064 6.656t-11.776 22.016q-2.048 14.336 6.144 24.064t22.528 11.776l262.144 28.672h7.168q1.024-1.024 4.096-1.024 1.024-1.024 2.048-1.024 2.048-1.024 2.56-1.024t2.56-1.024l1.024-1.024q2.048-1.024 3.072-2.048t3.072-2.048q1.024-2.048 4.096-5.12 0-1.024 1.024-2.048l2.048-4.096q0-2.048 1.024-3.072 0-2.048 1.024-4.096v-6.144zM468.992 80.384q14.336 2.048 24.064-6.656t11.776-22.016q2.048-14.336-6.144-24.064t-22.528-11.776l-261.12-28.672h-3.072q-14.336 0-23.552 9.216t-9.216 23.552v3.072l28.672 261.12q2.048 14.336 11.776 22.528t24.064 6.144q13.312-2.048 22.016-11.776t6.656-24.064l-18.432-168.96 185.344 185.344q9.216 9.216 22.528 9.216t23.552-9.216q9.216-9.216 9.216-23.040t-9.216-23.040l-185.344-185.344 168.96 18.432z" />
56
+ <glyph unicode="&#xe203;" glyph-name="uniE203" d="M826.368 693.76q6.144-20.48-4.096-38.912l-340.992-615.424q-13.312-24.576-40.96-26.624h-3.072q-25.6 0-40.96 21.504l-161.792 297.984q-11.264 17.408-8.192 37.888 5.12 21.504 21.504 31.744 16.384 13.312 36.864 8.192 20.48-3.072 32.768-20.48l114.688-220.16 302.080 533.504q11.264 18.432 30.72 24.576t37.888-4.096 23.552-29.696z" />
57
+ <glyph unicode="&#xe204;" glyph-name="uniE204" d="M791.552 190.976q1.024 12.288-7.168 24.576-10.24 10.24-23.552 10.24h-6.144q-22.528 0-37.888-17.408-30.72-35.84-78.848-32.768-35.84 2.048-62.464 28.16t-28.672 61.952q-3.072 43.008 25.6 73.728 14.336 14.336 32.768 22.528t38.912 8.192 39.936-8.192 33.792-24.576q14.336-17.408 36.864-17.408h6.144q14.336 0 23.552 11.264 8.192 8.192 8.192 23.552l-18.432 165.888-106.496-14.336q-12.288-2.048-25.6 2.048t-23.552 13.312q-17.408 14.336-17.408 33.792 0 11.264 7.68 19.968t15.872 14.848l3.072 3.072q23.552 20.48 23.552 53.248 0 28.672-19.968 49.152t-49.664 20.48h-1.024q-27.648 0-48.128-19.968t-21.504-47.616q-1.024-16.384 5.632-30.72t17.92-24.576l3.072-3.072q8.192-6.144 15.872-14.848t7.68-19.968v-1.024q0-19.456-16.384-33.792-10.24-9.216-23.552-13.824t-25.6-2.56l-133.12 16.384 15.36-149.504q3.072-32.768-19.456-57.344-17.408-20.48-41.984-20.48h-1.024q-13.312 0-23.552 8.704t-18.432 16.896l-2.048 2.048q-21.504 22.528-53.248 22.528-28.672-1.024-48.64-21.504t-19.968-50.176q1.024-28.672 21.504-49.152t49.152-20.48q30.72 0 51.2 22.528l2.048 2.048q8.192 8.192 18.432 16.896t23.552 8.704q24.576 0 43.008-20.48 11.264-11.264 16.384-27.136t3.072-30.208l-15.36-128h411.648l17.408 144.384zM760.832 262.656q30.72 0 51.2-22.528 19.456-24.576 16.384-53.248l-18.432-156.672q-1.024-9.216-7.68-15.36t-15.872-6.144h-439.296q-11.264 0-17.408 8.192-8.192 8.192-6.144 18.432l17.408 143.36q2.048 15.36-10.24 28.672-2.048 2.048-5.632 5.12t-8.704 3.072q-3.072-1.024-16.384-14.336l-2.048-2.048q-31.744-33.792-77.824-33.792-21.504 0-40.96 8.192t-34.304 23.040-23.552 34.304-8.704 40.96 7.68 40.96 22.016 34.304 33.792 23.552 40.96 9.728h3.072q46.080 0 77.824-33.792l2.048-2.048q13.312-13.312 16.384-14.336 5.12 0 8.704 3.072t5.632 5.12q12.288 13.312 10.24 28.672l-17.408 166.912q-2.048 10.24 7.168 19.456 6.144 6.144 16.384 6.144h3.072l149.504-18.432h2.048q9.216 0 18.432 7.168 3.072 3.072 3.072 5.12l-3.072 3.072t-6.144 5.12q-1.024 2.048-2.048 2.56t-2.048 1.536q-17.408 15.36-27.136 37.376t-9.728 46.592q1.024 21.504 9.728 40.448t23.040 33.28 33.792 22.528 40.96 8.192h2.048q21.504 0 40.96-8.704t33.792-23.552 22.528-34.304 8.192-40.96q0-49.152-35.84-81.92-2.048-1.024-4.096-3.072-8.192-7.168-9.216-8.192l4.096-4.096q6.144-6.144 17.408-6.144h2.048l120.832 16.384h3.072q9.216 0 14.336-4.096 7.168-6.144 9.216-16.384l19.456-180.224q3.072-30.72-17.408-53.248t-51.2-22.528h-6.144q-38.912 0-65.536 29.696-17.408 20.48-45.056 20.48-26.624 0-44.032-19.456-18.432-18.432-16.384-45.056 2.048-23.552 17.92-38.912t38.4-17.408h4.096q27.648 0 45.056 20.48 27.648 29.696 65.536 29.696h6.144z" />
58
+ <glyph unicode="&#xe205;" glyph-name="uniE205" d="M169.984 157.184q39.936-7.168 68.608-35.84t34.816-67.584q2.048-8.192-3.584-15.36t-13.824-7.168h-89.088q-8.192 0-13.312 5.632t-5.12 13.824v88.064q0 8.192 6.656 14.336t14.848 4.096zM165.888 270.848q46.080 0 86.016-17.408t70.144-47.616 47.616-70.144 17.408-86.016q0-9.216-6.656-15.872t-15.872-6.656q-10.24 0-16.896 6.656t-6.656 15.872q0 35.84-13.824 67.584t-37.376 55.808-55.296 37.888-68.608 13.824q-9.216 0-15.872 6.656t-6.656 15.872q0 10.24 6.656 16.896t15.872 6.656zM165.888 386.56q69.632 0 131.072-26.624t107.008-72.192 72.192-107.008 26.624-131.072q0-9.216-6.656-15.872t-15.872-6.656q-10.24 0-16.896 6.656t-6.656 15.872q0 60.416-23.040 113.152t-62.464 92.16-92.16 62.464-113.152 23.040q-9.216 0-15.872 6.656t-6.656 16.896q0 9.216 6.656 15.872t15.872 6.656zM778.24 571.904q33.792 0 57.856-23.552t24.064-58.368v-324.608q0-33.792-24.064-57.344t-57.856-23.552h-215.040q-2.048 23.552-6.144 45.056h221.184q15.36 0 25.6 10.752t10.24 25.088v324.608q0 15.36-10.24 26.112t-25.6 10.752h-499.712q-15.36 0-25.6-10.752t-10.24-26.112v-49.152q-23.552 4.096-46.080 6.144v43.008q0 34.816 24.064 58.368t57.856 23.552h499.712z" />
59
+ <glyph unicode="&#xe206;" glyph-name="uniE206" d="M784.384 117.248h4.096l-198.656 172.032-17.408-15.36q-25.6-22.528-60.416-22.528t-60.416 22.528l-17.408 15.36-198.656-172.032h548.864zM401.408 317.952l-202.752 176.128q-1.024-4.096-1.536-7.168t-0.512-7.168v-319.488q0-10.24 3.072-17.408zM239.616 522.752h-8.192l248.832-217.088q14.336-11.264 31.744-11.264t31.744 11.264l248.832 217.088h-552.96zM827.392 479.744q0 4.096-0.512 7.168t-1.536 7.168l-202.752-176.128 201.728-175.104q3.072 7.168 3.072 17.408v319.488zM784.384 565.76q17.408 0 33.28-6.656t27.648-18.432 18.432-27.136 6.656-33.792v-319.488q0-18.432-6.656-33.792t-18.432-27.136-27.648-18.432-33.28-6.656h-544.768q-17.408 0-33.28 6.656t-27.648 18.432-18.432 27.136-6.656 33.792v319.488q0 18.432 6.656 33.792t18.432 27.136 27.648 18.432 33.28 6.656h544.768z" />
60
+ <glyph unicode="&#xe207;" glyph-name="uniE207" d="M305.152-12.8q-22.528 0-39.936 10.24-44.032 25.6-44.032 92.16v460.8q0 66.56 44.032 92.16 43.008 25.6 101.376-8.192l399.36-230.4q57.344-33.792 57.344-83.968t-57.344-83.968l-399.36-230.4q-32.768-18.432-61.44-18.432zM305.152 614.912q-11.264 0-21.504-5.12-24.576-14.336-24.576-59.392v-460.8q0-21.504 6.144-36.864t18.432-22.528q25.6-14.336 63.488 8.192l399.36 230.4q38.912 21.504 38.912 51.2t-38.912 51.2l-399.36 230.4q-22.528 13.312-41.984 13.312z" />
61
+ <glyph unicode="&#xe208;" glyph-name="uniE208" d="M350.208-7.68q-23.552 0-44.032 8.704t-35.84 24.064-24.064 35.84-8.704 44.032v430.080q0 23.552 8.704 44.032t24.064 35.84 35.84 24.064 44.032 8.704q22.528 0 43.008-8.704t35.84-24.064 24.064-35.84 8.704-44.032v-430.080q0-23.552-8.704-44.032t-24.064-35.84-35.84-24.064-43.008-8.704zM350.208 614.912q-32.768 0-56.32-23.552t-23.552-56.32v-430.080q0-32.768 23.552-56.32t56.32-23.552q16.384 0 30.72 6.144t25.088 16.896 16.896 25.6 6.144 31.232v430.080q0 16.384-6.144 31.232t-16.896 25.6-25.088 16.896-30.72 6.144zM673.792-7.68q-23.552 0-43.52 8.704t-35.328 24.064-24.064 35.84-8.704 44.032v430.080q0 23.552 8.704 44.032t24.064 35.84 35.328 24.064 43.52 8.704 44.032-8.704 35.84-24.064 24.064-35.84 8.704-44.032v-430.080q0-23.552-8.704-44.032t-24.064-35.84-35.84-24.064-44.032-8.704zM673.792 614.912q-16.384 0-30.72-6.144t-25.088-16.896-16.896-25.6-6.144-31.232v-430.080q0-16.384 6.144-31.232t16.896-25.6 25.088-16.896 30.72-6.144q32.768 0 56.32 23.552t23.552 56.32v430.080q0 32.768-23.552 56.32t-56.32 23.552z" />
62
+ <glyph unicode="&#xe209;" glyph-name="uniE209" d="M799.744 583.168q0 10.24-7.168 17.408t-17.408 7.168h-526.336q-10.24 0-17.408-7.168t-7.168-17.408v-526.336q0-10.24 7.168-17.408t17.408-7.168h526.336q10.24 0 17.408 7.168t7.168 17.408v526.336zM775.168 652.8q28.672 0 49.152-20.48t20.48-49.152v-526.336q0-28.672-20.48-49.152t-49.152-20.48h-526.336q-28.672 0-49.152 20.48t-20.48 49.152v526.336q0 28.672 20.48 49.152t49.152 20.48h526.336zM739.328 418.304q9.216-6.144 9.216-17.408t-9.216-17.408l-175.104-139.264q-7.168-5.12-13.312-5.12-11.264 0-17.408 8.192t-5.12 17.408 8.192 14.336l124.928 99.328h-114.688q-33.792 0-69.632-10.24t-65.024-38.912-47.616-79.36-18.432-131.584q0-9.216-6.144-15.872t-16.384-6.656q-9.216 0-15.36 6.656t-6.144 15.872q0 146.432 63.488 225.792t181.248 79.36h114.688l-124.928 98.304q-7.168 6.144-8.192 15.36t5.12 16.384q5.12 8.192 14.336 8.704t16.384-4.608l175.104-139.264z" />
63
+ <glyph unicode="&#xe20a;" glyph-name="uniE20A" d="M545.792 401.92h71.68l-9.216-76.8h-62.464v-225.28h-92.16v225.28h-47.104v76.8h47.104v47.104q0 48.128 22.016 74.24t78.336 26.112h62.464v-77.824h-38.912q-21.504 0-26.624-7.68t-5.12-23.040v-38.912zM512 3.584q65.536 0 122.88 25.088t100.352 68.096 68.096 100.352 25.088 122.88-25.088 122.88-68.096 100.352-100.352 68.096-122.88 25.088-122.88-25.088-100.352-68.096-68.096-100.352-25.088-122.88 25.088-122.88 68.096-100.352 100.352-68.096 122.88-25.088zM512 678.4q73.728 0 139.264-28.16t114.176-76.8 76.8-114.176 28.16-139.264-28.16-139.264-76.8-114.176-114.176-76.8-139.264-28.16-139.264 28.16-114.176 76.8-76.8 114.176-28.16 139.264 28.16 139.264 76.8 114.176 114.176 76.8 139.264 28.16z" />
64
+ <glyph unicode="&#xe20b;" glyph-name="uniE20B" d="M518.144 570.88q0 8.192-4.096 12.288t-6.144 5.12-7.68 1.536-11.776-4.608l-145.408-129.024h-64.512q-28.672 0-54.272-10.24t-44.544-28.672-30.208-43.52-11.264-53.76 10.24-54.272 28.672-44.544 43.52-30.208 53.76-11.264l65.536-1.024 142.336-132.096q5.12-6.144 11.264-5.632t8.192 1.536 6.144 5.12 5.12 12.288zM522.24 620.032q14.336-6.144 23.040-19.456t8.704-29.696l-6.144-512q0-34.816-32.768-48.128-12.288-5.12-21.504-5.12-19.456 0-35.84 14.336l-132.096 123.904h-51.2q-35.84 0-67.584 14.336t-54.784 37.888-36.352 55.808-13.312 68.096 14.336 67.584 37.888 54.784 55.808 36.352 68.096 13.312h51.2l135.168 119.808q11.264 11.264 27.136 13.312t30.208-5.12z" />
65
+ <glyph unicode="&#xe20c;" glyph-name="uniE20C" d="M512 3.584q65.536 0 122.88 25.088t100.352 68.096 68.096 100.352 25.088 122.88-25.088 122.88-68.096 100.352-100.352 68.096-122.88 25.088-122.88-25.088-100.352-68.096-68.096-100.352-25.088-122.88 25.088-122.88 68.096-100.352 100.352-68.096 122.88-25.088zM512 678.4q73.728 0 139.264-28.16t114.176-76.8 76.8-114.176 28.16-139.264-28.16-139.264-76.8-114.176-114.176-76.8-139.264-28.16-139.264 28.16-114.176 76.8-76.8 114.176-28.16 139.264 28.16 139.264 76.8 114.176 114.176 76.8 139.264 28.16zM699.392 449.024q-10.24-29.696-34.816-44.032 24.576 3.072 46.080 12.288-8.192-11.264-18.432-22.016t-21.504-18.944v-10.24q0-38.912-14.848-78.336t-43.008-71.68-70.144-52.736-96.256-20.48q-65.536 0-119.808 34.816 5.12-1.024 9.216-1.024h9.216q55.296 0 97.28 33.792-25.6 0-45.568 15.36t-27.136 38.912q4.096-1.024 14.336-1.024 11.264 0 20.48 3.072-26.624 5.12-44.544 26.624t-17.92 50.176v1.024q14.336-8.192 34.816-10.24-15.36 11.264-25.088 28.16t-9.728 37.376q0 22.528 11.264 39.936 29.696-35.84 71.168-57.856t90.624-24.064q-2.048 10.24-2.048 17.408 0 32.768 23.040 55.808t55.808 23.040q34.816 0 57.344-24.576 14.336 2.048 26.624 7.168t23.552 12.288z" />
66
+ <glyph unicode="&#xe20d;" glyph-name="uniE20D" d="M913.408 200.192q5.12-5.12 5.12-12.8t-5.12-12.8-12.288-5.12q-6.144 0-13.312 5.12l-109.568 112.64-111.616-109.568q-7.168-5.12-13.312-5.12-5.12 0-12.288 5.12-5.12 5.12-4.608 12.8t5.632 12.8l111.616 109.568-109.568 111.616q-5.12 5.12-5.12 12.8t5.12 12.8 12.8 5.12 12.8-5.12l109.568-112.64 112.64 109.568q5.12 5.12 12.288 5.12t12.288-5.12 5.12-12.8-5.12-12.8l-112.64-109.568zM518.144 570.88q0 8.192-4.096 12.288t-6.144 5.12-7.68 1.536-11.776-4.608l-145.408-129.024h-64.512q-28.672 0-54.272-10.24t-44.544-28.672-30.208-43.52-11.264-53.76 10.24-54.272 28.672-44.544 43.52-30.208 53.76-11.264l65.536-1.024 142.336-132.096q5.12-6.144 11.264-5.632t8.192 1.536 6.144 5.12 5.12 12.288zM522.24 620.032q14.336-6.144 23.040-19.456t8.704-29.696l-6.144-512q0-34.816-32.768-48.128-12.288-5.12-21.504-5.12-19.456 0-35.84 14.336l-132.096 123.904h-51.2q-35.84 0-67.584 14.336t-54.784 37.888-36.352 55.808-13.312 68.096 14.336 67.584 37.888 54.784 55.808 36.352 68.096 13.312h51.2l135.168 119.808q11.264 11.264 27.136 13.312t30.208-5.12z" />
67
+ <glyph unicode="&#xe20e;" glyph-name="uniE20E" d="M749.568 443.904q11.264 11.264 16.896 26.112t5.632 30.208-5.632 30.208-16.896 27.136q-11.264 11.264-26.624 17.408t-30.72 6.144q-32.768 0-56.32-23.552l-61.44-61.44q-19.456-19.456-22.528-45.568t9.216-48.64l37.888 37.888q7.168 7.168 16.384 7.168t16.384-7.168q7.168-6.144 7.168-15.872t-7.168-16.896l-37.888-37.888q22.528-12.288 48.64-9.216t45.568 22.528l61.44 61.44zM449.536 143.872q19.456 19.456 22.528 45.568t-9.216 49.664l-37.888-38.912q-7.168-7.168-16.384-7.168-10.24 0-16.384 7.168-7.168 7.168-7.168 16.384t7.168 16.384l37.888 37.888q-16.384 10.24-37.888 10.24-32.768 0-56.32-23.552l-61.44-61.44q-11.264-11.264-17.408-26.112t-6.144-30.208 6.144-30.208 17.408-27.136q12.288-11.264 27.136-17.408t30.208-6.144 30.208 6.144 26.112 17.408l61.44 61.44zM782.336 590.336q18.432-18.432 27.648-41.984t9.216-47.616-9.216-47.616-27.648-41.984l-61.44-61.44q-18.432-18.432-41.984-27.648t-47.104-9.216q-39.936 0-71.68 22.528l-63.488-63.488q12.288-18.432 17.92-39.424t4.096-42.496-10.752-41.984-25.6-36.864l-61.44-61.44q-18.432-18.432-41.984-27.648t-47.104-9.216q-24.576 0-48.128 9.216t-41.984 27.648-27.648 41.984-9.216 47.616 9.216 47.616 27.648 41.984l61.44 61.44q16.384 16.384 36.864 25.6t41.984 10.752 42.496-4.096 39.424-17.92l63.488 63.488q-12.288 18.432-17.92 39.424t-4.096 42.496 10.752 41.984 25.6 36.864l61.44 61.44q18.432 18.432 41.984 27.648t47.616 9.216 47.616-9.216 41.984-27.648z" />
68
+ <glyph unicode="&#xe20f;" glyph-name="uniE20F" d="M811.008 62.976q8.192-8.192 8.192-20.48t-8.192-21.504q-10.24-8.192-21.504-8.192-12.288 0-20.48 8.192l-257.024 257.024-257.024-257.024q-8.192-8.192-20.48-8.192-11.264 0-21.504 8.192-8.192 9.216-8.192 21.504t8.192 20.48l257.024 257.024-257.024 257.024q-8.192 8.192-8.192 20.48t8.192 21.504q9.216 8.192 21.504 8.192t20.48-8.192l257.024-257.024 257.024 257.024q8.192 8.192 20.48 8.192t21.504-8.192q8.192-9.216 8.192-21.504t-8.192-20.48l-257.024-257.024z" />
69
+ <glyph unicode="&#xe210;" glyph-name="uniE210" d="M166.912 383.488q-6.144 2.048-10.24 2.048-12.288 0-12.288-13.312v-9.216h19.456v-21.504h-19.456v-74.752h-26.624v74.752h-15.36v21.504h15.36v11.264q0 16.384 9.216 25.088t24.576 8.704q7.168 0 15.36-2.048v-22.528zM202.752 266.752h-26.624v139.264h26.624v-139.264zM258.048 264.704q-20.48 0-33.792 13.824t-13.312 36.352 13.312 36.352 33.792 13.824 33.792-13.824 13.312-36.352-13.312-36.352-33.792-13.824zM258.048 342.528q-10.24 0-15.36-7.68t-5.12-19.968q0-11.264 5.12-19.456t15.36-8.192 15.36 8.192 5.12 19.456q0 12.288-5.12 19.968t-15.36 7.68zM398.336 301.568l17.408 61.44h25.6l-28.672-96.256h-24.576l-15.36 59.392-16.384-59.392h-24.576l-28.672 96.256h26.624l17.408-61.44 15.36 61.44h20.48zM474.112 231.936h-26.624v131.072h26.624v-8.192q3.072 4.096 9.216 7.168t14.336 3.072q20.48 0 32.256-14.848t11.776-35.328-11.776-35.328-32.256-14.848q-8.192 0-14.336 3.072t-9.216 7.168v-43.008zM474.112 299.52q5.12-11.264 17.408-11.264 11.264 0 16.896 7.68t5.632 18.944-5.632 18.944-16.896 7.68q-12.288 0-17.408-11.264v-30.72zM576.512 266.752h-26.624v139.264h26.624v-139.264zM644.096 266.752v5.12q-8.192-6.144-23.552-6.144-14.336 0-25.088 8.192t-10.752 22.528 10.752 22.528 26.112 8.192q14.336 0 22.528-6.144v7.168q0 6.144-4.096 10.752t-12.288 4.608q-9.216 0-13.312-9.216h-25.6q2.048 13.312 12.8 22.016t27.136 8.704q19.456 0 29.696-9.728t10.24-27.136v-61.44h-24.576zM644.096 300.544q-5.12 8.192-17.408 8.192-7.168 0-12.288-3.072t-5.12-9.216 5.12-8.704 12.288-2.56q12.288 0 17.408 8.192v7.168zM693.248 231.936l14.336 34.816-36.864 96.256h27.648l22.528-63.488 21.504 63.488h26.624l-50.176-131.072h-25.6zM855.040 298.496q-3.072-15.36-13.824-24.576t-29.184-9.216q-20.48 0-33.28 13.824t-12.8 36.352q0 21.504 12.8 35.84t33.28 14.336 31.744-13.312 11.264-34.816v-7.168h-63.488q2.048-23.552 20.48-23.552 15.36 0 18.432 12.288h24.576zM792.576 325.12h36.864q0 8.192-4.608 13.312t-12.8 5.12q-16.384 0-19.456-18.432zM921.6 336.384q-6.144 3.072-13.312 3.072-15.36 0-18.432-13.312v-59.392h-26.624v96.256h26.624v-9.216q7.168 11.264 21.504 11.264 8.192 0 10.24-2.048v-26.624z" />
70
+ <glyph unicode="&#xe211;" glyph-name="uniE211" d="M326.656 346.624l320.512 320.512q10.24 10.24 24.576 11.264t24.576-8.192q11.264-10.24 11.776-25.088t-10.752-25.088l-299.008-300.032 297.984-297.984q10.24-10.24 11.264-24.064t-8.192-24.064q-11.264-12.288-25.6-12.288-15.36 0-24.576 10.24l-322.56 321.536q-11.264 11.264-11.264 26.624t11.264 26.624z" />
71
+ <glyph unicode="&#xe212;" glyph-name="uniE212" d="M697.344 346.624q11.264-11.264 11.264-26.624t-11.264-26.624l-322.56-321.536q-9.216-10.24-24.576-10.24t-25.6 12.288q-9.216 10.24-8.192 24.064t11.264 24.064l297.984 297.984-299.008 300.032q-11.264 10.24-10.752 25.088t11.776 25.088q10.24 9.216 24.576 8.192t24.576-11.264l320.512-320.512z" />
72
+ <glyph unicode="&#xe213;" glyph-name="_73" d="M742.4 320q0-48.128-17.92-89.6t-49.664-73.216-73.728-49.664-89.088-17.92q-48.128 0-89.6 17.92t-73.216 49.664-49.664 73.216-17.92 89.6q0 47.104 17.92 89.088t49.664 73.728 73.216 49.664 89.6 17.92q47.104 0 89.088-17.92t73.728-49.664 49.664-73.728 17.92-89.088z" />
73
+ <glyph unicode="&#xe214;" glyph-name="_74" d="M451.584 180.736q-9.216 0-16.384 4.096-18.432 10.24-18.432 38.912v192.512q0 27.648 18.432 38.912 18.432 9.216 41.984-3.072l167.936-97.28q23.552-12.288 23.552-34.816 0-20.48-23.552-34.816l-167.936-97.28q-11.264-7.168-25.6-7.168zM451.584 443.904q-5.12 0-8.192-3.072-10.24-4.096-10.24-24.576v-192.512q0-20.48 10.24-24.576 10.24-7.168 26.624 3.072l166.912 96.256q16.384 10.24 16.384 21.504t-16.384 21.504l-166.912 96.256q-11.264 6.144-18.432 6.144zM512-38.4q-73.728 0-139.264 28.16t-114.176 76.8-76.8 114.176-28.16 139.264 28.16 139.264 76.8 114.176 114.176 76.8 139.264 28.16 139.264-28.16 114.176-76.8 76.8-114.176 28.16-139.264-28.16-139.264-76.8-114.176-114.176-76.8-139.264-28.16zM512 663.040q-70.656 0-133.12-27.136t-109.056-73.728-73.728-109.056-27.136-133.12 27.136-133.12 73.728-109.056 109.056-73.728 133.12-27.136 133.12 27.136 109.056 73.728 73.728 109.056 27.136 133.12-27.136 133.12-73.728 109.056-109.056 73.728-133.12 27.136z" />
74
+ <glyph unicode="&#xe215;" glyph-name="_75" d="M512-38.4q-73.728 0-139.264 28.16t-114.176 76.8-76.8 114.176-28.16 139.264 28.16 139.264 76.8 114.176 114.176 76.8 139.264 28.16 139.264-28.16 114.176-76.8 76.8-114.176 28.16-139.264-28.16-139.264-76.8-114.176-114.176-76.8-139.264-28.16zM512 663.040q-70.656 0-133.12-27.136t-109.056-73.728-73.728-109.056-27.136-133.12 27.136-133.12 73.728-109.056 109.056-73.728 133.12-27.136 133.12 27.136 109.056 73.728 73.728 109.056 27.136 133.12-27.136 133.12-73.728 109.056-109.056 73.728-133.12 27.136zM440.32 176.64q-20.48 0-34.816 14.848t-14.336 35.328v189.44q0 20.48 14.336 34.816t34.816 14.336 35.328-14.336 14.848-34.816v-189.44q0-20.48-14.848-35.328t-35.328-14.848zM440.32 451.072q-14.336 0-24.576-10.24t-10.24-24.576v-189.44q0-14.336 10.24-25.088t24.576-10.752 25.088 10.752 10.752 25.088v189.44q0 14.336-10.752 24.576t-25.088 10.24zM583.68 176.64q-20.48 0-35.328 14.848t-14.848 35.328v189.44q0 20.48 14.848 34.816t35.328 14.336 34.816-14.336 14.336-34.816v-189.44q0-20.48-14.336-35.328t-34.816-14.848zM583.68 451.072q-14.336 0-25.088-10.24t-10.752-24.576v-189.44q0-14.336 10.752-25.088t25.088-10.752 24.576 10.752 10.24 25.088v189.44q0 14.336-10.24 24.576t-24.576 10.24z" />
75
+ <glyph unicode="&#xe216;" glyph-name="_76" d="M504.832 279.040v-2.048l-28.672-261.12q-1.024-12.288-10.24-20.48t-21.504-8.192h-3.072q-14.336 2.048-22.528 11.776t-7.168 24.064l18.432 168.96-185.344-184.32q-9.216-10.24-22.528-10.24t-22.528 10.24q-10.24 9.216-10.24 22.528t10.24 22.528l184.32 185.344-168.96-18.432q-13.312-1.024-23.552 7.168t-12.288 22.528q-2.048 13.312 6.656 23.552t22.016 11.264l262.144 28.672h7.168q2.048 0 2.56-0.512t2.56-0.512l2.048-1.024q2.048 0 4.096-2.048 1.024 0 2.048-1.024 2.048-1.024 5.12-4.096 2.048-2.048 2.56-3.072t1.536-2.048 1.024-2.048l2.048-4.096q0-1.024 0.512-1.536t0.512-1.536 0.512-1.536 0.512-2.56v-6.144zM808.96 420.352q14.336 1.024 24.064-7.168t11.776-22.528q2.048-13.312-6.656-23.552t-22.016-11.264l-261.12-28.672h-4.096q-13.312 0-22.528 9.216t-9.216 22.528v4.096l28.672 261.12q1.024 13.312 11.264 22.016t23.552 6.656q14.336-2.048 23.040-11.776t6.656-24.064l-18.432-168.96 185.344 185.344q9.216 9.216 22.528 9.216t23.552-9.216q9.216-10.24 9.216-23.552t-9.216-22.528l-185.344-185.344 168.96 18.432z" />
76
+ <glyph unicode="&#xe301;" glyph-name="uniE301" d="M663.552 52.736l-146.432 252.928-145.408-252.928h291.84zM517.12 400.896l229.376-396.288h-457.728zM870.4 585.216v-492.544h-119.808l-27.648 48.128h99.328v396.288h-620.544v-396.288h110.592l-28.672-48.128h-130.048v492.544h716.8z" />
77
+ <glyph unicode="&#xe302;" glyph-name="uniE302" d="M844.8 648.704l-33.792-313.344-66.56 7.168 18.432 176.128-192.512-191.488-47.104 47.104 192.512 192.512-176.128-19.456-7.168 67.584zM500.736 256.512l-192.512-191.488 176.128 18.432 7.168-66.56-312.32-33.792 33.792 312.32 66.56-7.168-18.432-176.128 192.512 192.512z" />
78
+ <glyph unicode="&#xe303;" glyph-name="uniE303" d="M814.080 685.568l-391.168-676.864-212.992 337.92 77.824 47.104 126.976-204.8 316.416 546.816z" />
79
+ <glyph unicode="&#xe304;" glyph-name="uniE304" d="M791.552 498.176h-166.912v84.992l6.144 4.096q35.84 21.504 35.84 62.464 0 29.696-21.504 50.688t-51.2 20.992-50.688-20.992-20.992-50.688q0-41.984 34.816-62.464l7.168-4.096v-84.992h-196.608v-202.752h-78.848l-4.096 7.168q-9.216 17.408-25.6 26.112t-35.84 8.704q-29.696 0-51.2-20.992t-21.504-50.688 21.504-51.2 51.2-21.504q19.456 0 35.84 9.216t25.6 25.6l4.096 7.168h78.848v-202.752h423.936v175.104h-51.2q-14.336-20.48-35.84-31.232t-46.080-10.752q-41.984 0-71.168 29.184t-29.184 71.168 29.184 71.168 71.168 29.184q24.576 0 46.080-11.264t35.84-30.72h51.2v174.080zM829.44 536.064v-249.856h-109.568l-3.072 4.096-4.096 7.168q-8.192 14.336-22.528 22.528t-31.744 8.192q-25.6 0-44.032-18.432t-18.432-44.032q0-26.624 18.432-44.544t44.032-17.92q35.84 0 54.272 29.696l4.096 7.168 3.072 5.12h109.568v-250.88h-499.712v202.752h-20.48q-15.36-20.48-37.888-31.232t-48.128-10.752q-23.552 0-43.52 8.704t-34.816 23.552-23.552 34.816-8.704 43.52q0 22.528 8.704 42.496t23.552 35.328 34.816 24.064 43.52 8.704q25.6 0 48.128-11.264t37.888-31.744h20.48v202.752h195.584v26.624q-19.456 15.36-30.72 38.4t-11.264 48.64q0 22.528 8.704 42.496t24.064 34.816 35.328 23.552 42.496 8.704 43.008-8.704 35.328-23.552 23.552-34.816 8.704-42.496q0-25.6-10.752-48.64t-31.232-38.4v-26.624h166.912z" />
80
+ <glyph unicode="&#xe305;" glyph-name="uniE305" d="M143.36 138.752q23.552 0 44.032-9.216t35.84-24.576 24.576-35.84 9.216-44.032h-113.664v113.664zM143.36 253.44q47.104 0 88.576-17.92t72.704-49.152 49.152-72.704 17.92-88.576h-47.104q0 37.888-14.336 70.656t-38.912 57.344-57.856 38.912-70.144 14.336v47.104zM143.36 373.248q71.68 0 135.168-27.648t110.592-74.752 74.752-110.592 27.648-135.168h-47.104q0 62.464-23.552 117.248t-64.512 95.744-95.744 64.512-117.248 23.552v47.104zM860.16 564.736v-503.808h-306.176q-2.048 11.264-3.584 23.552t-3.584 23.552h266.24v409.6h-590.848v-88.064q-22.528 4.096-47.104 6.144v129.024h685.056z" />
81
+ <glyph unicode="&#xe306;" glyph-name="uniE306" d="M827.392 138.752v349.184l-200.704-175.104zM231.424 112.128h561.152l-198.656 173.056-81.92-71.68-81.92 71.68zM196.608 487.936v-349.184l200.704 174.080zM797.696 518.656h-571.392l285.696-248.832zM870.4 561.664v-492.544h-716.8v492.544h716.8z" />
82
+ <glyph unicode="&#xe307;" glyph-name="uniE307" d="M234.496-16.896v665.6l575.488-332.8zM266.24 593.408v-555.008l480.256 277.504z" />
83
+ <glyph unicode="&#xe308;" glyph-name="uniE308" d="M461.824-11.776h-224.256v655.36h224.256v-655.36zM270.336 20.992h158.72v589.824h-158.72v-589.824zM786.432-11.776h-224.256v655.36h224.256v-655.36zM594.944 20.992h158.72v589.824h-158.72v-589.824z" />
84
+ <glyph unicode="&#xe309;" glyph-name="uniE309" d="M795.648 599.552h-567.296v-568.32h567.296v568.32zM844.8 648.704v-665.6h-665.6v665.6h665.6zM537.6 379.392q-36.864 0-75.776-11.264t-70.656-42.496-51.712-86.528-19.968-143.36h-48.128q0 158.72 69.12 245.248t197.12 86.528h124.928l-136.192 107.52 30.72 38.912 214.016-171.008-214.016-169.984-29.696 37.888 135.168 108.544h-124.928z" />
85
+ <glyph unicode="&#xe30a;" glyph-name="uniE30A" d="M453.632 320h-47.104v77.824h47.104v46.080q0 48.128 22.016 74.752t78.336 26.624h62.464v-77.824h-38.912q-21.504 0-26.624-7.68t-5.12-23.040v-38.912h71.68l-9.216-77.824h-62.464v-224.256h-92.16v224.256zM828.416 631.296h-632.832v-631.808h632.832v631.808zM870.4 674.304v-716.8h-716.8v716.8h716.8z" />
86
+ <glyph unicode="&#xe30b;" glyph-name="uniE30B" d="M315.392 458.24h-177.152v-276.48h177.152l174.080-158.72v593.92zM302.080 494.080l222.208 203.776v-755.712l-222.208 203.776h-199.68v348.16h199.68z" />
87
+ <glyph unicode="&#xe30c;" glyph-name="uniE30C" d="M321.536 167.424q4.096-1.024 8.704-1.024h9.728q28.672 0 53.76 9.216t45.568 25.6q-26.624 0-46.592 15.872t-28.16 39.424q5.12-1.024 15.36-1.024h10.24t10.24 2.048q-27.648 6.144-45.568 27.648t-17.92 51.2v1.024q14.336-8.192 35.84-10.24-16.384 11.264-26.112 28.672t-9.728 37.888q0 22.528 11.264 39.936 29.696-35.84 72.192-58.368t92.672-24.576q-2.048 10.24-2.048 18.432 0 32.768 23.552 56.32t56.32 23.552q35.84 0 58.368-25.6 14.336 2.048 27.136 7.168t24.064 12.288q-9.216-28.672-35.84-44.032 25.6 3.072 47.104 12.288-8.192-11.264-18.432-22.016t-22.528-18.944q1.024-4.096 1.024-11.264 0-39.936-14.848-80.384t-44.032-73.216-71.68-53.248-97.792-20.48q-33.792 0-64.512 9.216t-57.344 26.624zM804.864 588.288h-585.728v-586.752h585.728v586.752zM844.8 628.224v-665.6h-665.6v665.6h665.6z" />
88
+ <glyph unicode="&#xe30d;" glyph-name="uniE30D" d="M795.648 320l125.952-125.952-24.576-25.6-126.976 126.976-125.952-126.976-24.576 25.6 125.952 125.952-125.952 125.952 24.576 25.6 125.952-126.976 126.976 126.976 24.576-25.6zM315.392 458.24h-177.152v-276.48h177.152l174.080-158.72v593.92zM302.080 494.080l222.208 203.776v-755.712l-222.208 203.776h-199.68v348.16h199.68z" />
89
+ <glyph unicode="&#xe30e;" glyph-name="uniE30E" d="M550.912 383.488l48.128 47.104 30.72-24.576-50.176-51.2 34.816-34.816 148.48 149.504-96.256 97.28-149.504-149.504zM472.064 248.32l-49.152-49.152-27.648 27.648 49.152 49.152-34.816 34.816-148.48-149.504 96.256-97.28 149.504 149.504zM551.936 327.168l-51.2-51.2 62.464-62.464-205.824-204.8-152.576 152.576 204.8 204.8 62.464-61.44 51.2 50.176-62.464 62.464 205.824 205.824 152.576-153.6-204.8-204.8z" />
90
+ <glyph unicode="&#xe30f;" glyph-name="uniE30F" d="M555.008 315.904l264.192-264.192-43.008-43.008-264.192 264.192-264.192-264.192-43.008 43.008 264.192 264.192-264.192 264.192 43.008 43.008 264.192-264.192 264.192 264.192 43.008-43.008z" />
91
+ <glyph unicode="&#xe310;" glyph-name="uniE310" d="M457.728 281.088q-14.336-8.192-24.064-2.56t-9.728 22.016v194.56q0 15.36 9.728 20.992t24.064-2.56l167.936-97.28q14.336-8.192 14.336-18.944t-14.336-18.944l-167.936-97.28zM500.736 660.992q-54.272 0-102.4-20.48t-83.968-56.32-56.32-83.968-20.48-102.4 20.48-102.4 56.32-83.968 83.968-56.832 102.4-20.992q55.296 0 103.424 20.992t83.968 56.832 56.32 83.968 20.48 102.4-20.48 102.4-56.32 83.968-83.968 56.32-103.424 20.48zM500.736 88.576q-63.488 0-119.808 24.064t-98.304 66.048-66.048 98.304-24.064 120.832q0 63.488 24.064 119.808t66.048 98.304 98.304 66.048 119.808 24.064q64.512 0 120.832-24.064t98.304-66.048 66.048-98.304 24.064-119.808q0-64.512-24.064-120.832t-66.048-98.304-98.304-66.048-120.832-24.064zM861.184 0.512q7.168 0 9.216-2.048v-22.528q-6.144 2.048-11.264 2.048-13.312 0-16.384-11.264v-52.224h-23.552v83.968h23.552v-8.192q7.168 10.24 18.432 10.24zM789.504-34.304q0 15.36-15.36 15.36-14.336 0-17.408-15.36h32.768zM774.144 0.512q18.432 0 28.16-11.776t9.728-30.208v-7.168h-55.296q2.048-19.456 18.432-19.456 12.288 0 15.36 10.24h21.504q-2.048-13.312-11.776-21.504t-25.088-8.192q-18.432 0-29.696 12.288t-11.264 31.744 11.264 31.744 28.672 12.288zM737.28-1.536l-44.032-114.688h-22.528l12.288 30.72-32.768 83.968h24.576l19.456-55.296 19.456 55.296h23.552zM626.688-56.832q-3.072 8.192-14.336 8.192-5.12 0-10.24-3.072t-5.12-8.192 5.12-7.68 10.24-2.56q11.264 0 14.336 8.192v5.12zM614.4 0.512q34.816 0 34.816-32.768v-53.248h-22.528v5.12q-4.096-6.144-19.456-6.144-13.312 0-22.528 6.656t-9.216 19.968q0 12.288 9.216 19.456t23.552 7.168q12.288 0 18.432-4.096v6.144q0 12.288-13.312 12.288-9.216 0-12.288-7.168h-21.504q2.048 11.264 11.264 18.944t23.552 7.68zM544.768 36.352h23.552v-121.856h-23.552v121.856zM494.592-67.072q9.216 0 14.336 6.656t5.12 16.896-5.12 16.896-14.336 6.656q-11.264 0-16.384-9.216v-27.648q5.12-10.24 16.384-10.24zM499.712 0.512q17.408 0 27.648-13.312t10.24-30.72-10.24-30.72-27.648-13.312q-7.168 0-12.8 3.072t-8.704 6.144v-37.888h-22.528v114.688h22.528v-7.168q7.168 9.216 21.504 9.216zM428.032-1.536h22.528l-25.6-83.968h-21.504l-13.312 51.2-14.336-51.2h-21.504l-24.576 83.968h22.528l15.36-53.248 13.312 53.248h18.432l13.312-53.248zM289.792-67.072q17.408 0 17.408 23.552 0 11.264-4.608 17.92t-12.8 6.656-13.312-6.656-5.12-17.92q0-23.552 18.432-23.552zM289.792 0.512q18.432 0 29.696-12.288t11.264-31.744-11.264-31.744-29.696-12.288-29.696 12.288-11.264 31.744 11.264 31.744 29.696 12.288zM218.112 36.352h23.552v-121.856h-23.552v121.856zM166.912 8.704q0 14.336 8.192 22.016t21.504 7.68q8.192 0 13.312-3.072v-19.456q-3.072 2.048-8.192 2.048-11.264 0-11.264-11.264v-8.192h17.408v-18.432h-17.408v-65.536h-23.552v65.536h-13.312v18.432h13.312v10.24z" />
92
+ <glyph unicode="&#xe311;" glyph-name="uniE311" d="M665.6 674.304l51.2-50.176-308.224-308.224 308.224-308.224-51.2-50.176-358.4 358.4z" />
93
+ <glyph unicode="&#xe312;" glyph-name="uniE312" d="M716.8 315.904l-358.4-358.4-51.2 50.176 308.224 308.224-308.224 308.224 51.2 50.176z" />
94
+ <glyph unicode="&#xe313;" glyph-name="_100" d="M716.8 111.104h-409.6v409.6h409.6v-409.6z" />
95
+ <glyph unicode="&#xe314;" glyph-name="_101" d="M418.816 155.136v322.56l279.552-160.768zM434.176 451.072v-268.288l232.448 134.144zM512-42.496q-73.728 0-139.264 28.16t-114.176 76.8-76.8 114.176-28.16 139.264 28.16 139.264 76.8 114.176 114.176 76.8 139.264 28.16 139.264-28.16 114.176-76.8 76.8-114.176 28.16-139.264-28.16-139.264-76.8-114.176-114.176-76.8-139.264-28.16zM512 657.92q-70.656 0-133.12-27.136t-109.056-73.216-73.728-108.544-27.136-133.12 27.136-133.12 73.728-109.056 109.056-73.728 133.12-27.136 133.12 27.136 109.056 73.728 73.728 109.056 27.136 133.12-27.136 133.12-73.728 108.544-109.056 73.216-133.12 27.136z" />
96
+ <glyph unicode="&#xe315;" glyph-name="_102" d="M512-42.496q-73.728 0-139.264 28.16t-114.176 76.8-76.8 114.176-28.16 139.264 28.16 139.264 76.8 114.176 114.176 76.8 139.264 28.16 139.264-28.16 114.176-76.8 76.8-114.176 28.16-139.264-28.16-139.264-76.8-114.176-114.176-76.8-139.264-28.16zM512 657.92q-70.656 0-133.12-27.136t-109.056-73.216-73.728-108.544-27.136-133.12 27.136-133.12 73.728-109.056 109.056-73.728 133.12-27.136 133.12 27.136 109.056 73.728 73.728 109.056 27.136 133.12-27.136 133.12-73.728 108.544-109.056 73.216-133.12 27.136zM490.496 171.52h-98.304v287.744h98.304v-287.744zM406.528 185.856h69.632v259.072h-69.632v-259.072zM631.808 171.52h-98.304v287.744h98.304v-287.744zM547.84 185.856h69.632v259.072h-69.632v-259.072z" />
97
+ <glyph unicode="&#xe316;" glyph-name="_103" d="M496.64 299.52l-32.768-312.32-64.512 7.168 18.432 176.128-187.392-192.512-46.080 48.128 186.368 192.512-171.008-19.456-6.144 66.56zM839.68 604.672l-187.392-191.488 171.008 18.432 7.168-66.56-303.104-33.792 32.768 312.32 64.512-7.168-18.432-176.128 187.392 192.512z" />
98
+ </font></defs></svg>
lib/skin/icons/flowplayer.ttf ADDED
Binary file
lib/skin/icons/flowplayer.woff ADDED
Binary file
lib/skin/icons/flowplayer.woff2 ADDED
Binary file
lib/skin/img/black.png DELETED
Binary file
lib/skin/img/black@x2.png DELETED
Binary file
lib/skin/img/black_rtl.png DELETED
Binary file
lib/skin/img/black_rtl@x2.png DELETED
Binary file
lib/skin/img/flowplayer.png DELETED
Binary file
lib/skin/img/flowplayer@2x.png DELETED
Binary file
lib/skin/img/play_black.png DELETED
Binary file
lib/skin/img/play_black@x2.png DELETED
Binary file
lib/skin/img/play_black_rtl.png DELETED
Binary file
lib/skin/img/play_black_rtl@x2.png DELETED
Binary file
lib/skin/img/play_white.png DELETED
Binary file
lib/skin/img/play_white@x2.png DELETED
Binary file
lib/skin/img/play_white_rtl.png DELETED
Binary file
lib/skin/img/play_white_rtl@x2.png DELETED
Binary file
lib/skin/img/playful_black.png DELETED
Binary file
lib/skin/img/playful_black@x2.png DELETED
Binary file
lib/skin/img/playful_black_rtl.png DELETED
Binary file
lib/skin/img/playful_black_rtl@x2.png DELETED
Binary file
lib/skin/img/playful_white.png DELETED
Binary file
lib/skin/img/playful_white@x2.png DELETED
Binary file
lib/skin/img/playful_white_rtl.png DELETED
Binary file
lib/skin/img/playful_white_rtl@x2.png DELETED
Binary file
lib/skin/img/white.png DELETED
Binary file
lib/skin/img/white@x2.png DELETED
Binary file
lib/skin/img/white_rtl.png DELETED
Binary file
lib/skin/img/white_rtl@x2.png DELETED
Binary file
lib/skin/minimalist.css DELETED
@@ -1,232 +0,0 @@
1
- .flowplayer{position:relative;width:100%;background-size:contain;background-repeat:no-repeat;background-position:center center;display:inline-block;}
2
- .flowplayer *{font-weight:inherit;font-family:inherit;font-style:inherit;text-decoration:inherit;font-size:100%;padding:0;border:0;margin:0;list-style-type:none}
3
- .flowplayer a:focus{outline:0}
4
- .flowplayer video{width:100%}
5
- .flowplayer.is-ipad video{-webkit-transform:translateX(-2048px);}
6
- .is-ready.flowplayer.is-ipad video{-webkit-transform:translateX(0)}
7
- .flowplayer .fp-engine,.flowplayer .fp-ui,.flowplayer .fp-message{position:absolute;top:0;left:0;width:100%;height:100%;cursor:pointer;z-index:1}
8
- .flowplayer .fp-message{display:none;text-align:center;padding-top:5%;cursor:default;}
9
- .flowplayer .fp-message h2{font-size:120%;margin-bottom:1em}
10
- .flowplayer .fp-message p{color:#666;font-size:95%}
11
- .flowplayer .fp-controls{position:absolute;bottom:0;width:100%;}
12
- .no-background.flowplayer .fp-controls{background-color:transparent !important;background-image:-moz-linear-gradient(transparent,transparent) !important;background-image:-webkit-gradient(linear,0 0,0 100%,from(transparent),to(transparent)) !important}
13
- .is-fullscreen.flowplayer .fp-controls{bottom:3px}
14
- .is-mouseover.flowplayer .fp-controls{bottom:0}
15
- .flowplayer .fp-waiting{display:none;margin:19% auto;text-align:center;}
16
- .flowplayer .fp-waiting *{-webkit-box-shadow:0 0 5px #333;-moz-box-shadow:0 0 5px #333;box-shadow:0 0 5px #333}
17
- .flowplayer .fp-waiting em{width:1em;height:1em;-webkit-border-radius:1em;-moz-border-radius:1em;border-radius:1em;background-color:rgba(255,255,255,0.8);display:inline-block;-webkit-animation:pulse .6s infinite;-moz-animation:pulse .6s infinite;animation:pulse .6s infinite;margin:.3em;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);}
18
- .flowplayer .fp-waiting em:nth-child(1){-webkit-animation-delay:.3s;-moz-animation-delay:.3s;animation-delay:.3s}
19
- .flowplayer .fp-waiting em:nth-child(2){-webkit-animation-delay:.45s;-moz-animation-delay:.45s;animation-delay:.45s}
20
- .flowplayer .fp-waiting em:nth-child(3){-webkit-animation-delay:.6s;-moz-animation-delay:.6s;animation-delay:.6s}
21
- .flowplayer .fp-waiting p{color:#ccc;font-weight:bold}
22
- .flowplayer .fp-speed{font-size:30px;background-color:#333;background-color:rgba(51,51,51,0.8);color:#eee;margin:0 auto;text-align:center;width:120px;padding:.1em 0 0;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .5s;-moz-transition:opacity .5s;transition:opacity .5s;}
23
- .flowplayer .fp-speed.fp-hilite{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
24
- .flowplayer .fp-help{position:absolute;top:0;left:-9999em;z-index:100;background-color:#333;background-color:rgba(51,51,51,0.9);width:100%;height:100%;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .2s;-moz-transition:opacity .2s;transition:opacity .2s;text-align:center;}
25
- .is-help.flowplayer .fp-help{left:0;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
26
- .flowplayer .fp-help .fp-help-section{margin:3%;direction:ltr}
27
- .flowplayer .fp-help .fp-help-basics{margin-top:6%}
28
- .flowplayer .fp-help p{color:#eee;margin:.5em 0;font-size:14px;line-height:1.5;display:inline-block;margin:1% 2%}
29
- .flowplayer .fp-help em{background:#eee;-webkit-border-radius:.3em;-moz-border-radius:.3em;border-radius:.3em;margin-right:.4em;padding:.3em .6em;color:#333}
30
- .flowplayer .fp-help small{font-size:90%;color:#aaa}
31
- .flowplayer .fp-help .fp-close{display:block}
32
- @media (max-width: 600px){.flowplayer .fp-help p{font-size:9px}
33
- }.flowplayer .fp-subtitle{position:absolute;bottom:40px;left:-99999em;z-index:10;text-align:center;width:100%;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .3s;-moz-transition:opacity .3s;transition:opacity .3s;}
34
- .flowplayer .fp-subtitle p{display:inline;background-color:#333;background-color:rgba(51,51,51,0.9);color:#eee;padding:.1em .4em;font-size:16px;line-height:1.6;}
35
- .flowplayer .fp-subtitle p:after{content:'';clear:both}
36
- .flowplayer .fp-subtitle.fp-active{left:0;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
37
- .flowplayer .fp-fullscreen,.flowplayer .fp-unload,.flowplayer .fp-mute,.flowplayer .fp-embed,.flowplayer .fp-close,.flowplayer .fp-play{background-image:url(img/white.png);background-size:37px 300px;}
38
- .is-rtl.flowplayer .fp-fullscreen,.is-rtl.flowplayer .fp-unload,.is-rtl.flowplayer .fp-mute,.is-rtl.flowplayer .fp-embed,.is-rtl.flowplayer .fp-close,.is-rtl.flowplayer .fp-play{background-image:url(img/white_rtl.png)}
39
- .color-light.flowplayer .fp-fullscreen,.color-light.flowplayer .fp-unload,.color-light.flowplayer .fp-mute,.color-light.flowplayer .fp-embed,.color-light.flowplayer .fp-close,.color-light.flowplayer .fp-play{background-image:url(img/black.png);}
40
- .is-rtl.color-light.flowplayer .fp-fullscreen,.is-rtl.color-light.flowplayer .fp-unload,.is-rtl.color-light.flowplayer .fp-mute,.is-rtl.color-light.flowplayer .fp-embed,.is-rtl.color-light.flowplayer .fp-close,.is-rtl.color-light.flowplayer .fp-play{background-image:url(img/black_rtl.png)}
41
- @media (-webkit-min-device-pixel-ratio: 2){.color-light.flowplayer .fp-fullscreen,.color-light.flowplayer .fp-unload,.color-light.flowplayer .fp-mute,.color-light.flowplayer .fp-embed,.color-light.flowplayer .fp-close,.color-light.flowplayer .fp-play{background-image:url(img/black@x2.png)}
42
- .is-rtl.color-light.flowplayer .fp-fullscreen,.is-rtl.color-light.flowplayer .fp-unload,.is-rtl.color-light.flowplayer .fp-mute,.is-rtl.color-light.flowplayer .fp-embed,.is-rtl.color-light.flowplayer .fp-close,.is-rtl.color-light.flowplayer .fp-play{background-image:url(img/black_rtl@x2.png)}
43
- }@media (-webkit-min-device-pixel-ratio: 2){.flowplayer .fp-fullscreen,.flowplayer .fp-unload,.flowplayer .fp-mute,.flowplayer .fp-embed,.flowplayer .fp-close,.flowplayer .fp-play{background-image:url(img/white@x2.png)}
44
- .is-rtl.flowplayer .fp-fullscreen,.is-rtl.flowplayer .fp-unload,.is-rtl.flowplayer .fp-mute,.is-rtl.flowplayer .fp-embed,.is-rtl.flowplayer .fp-close,.is-rtl.flowplayer .fp-play{background-image:url(img/white_rtl@x2.png)}
45
- }.flowplayer .fp-flash-disabled{background:#333;width:390px;margin:0 auto;position:absolute;bottom:0;color:#fff}
46
- .is-splash.flowplayer .fp-ui,.is-paused.flowplayer .fp-ui{background:url(img/play_white.png) center no-repeat;background-size:12%;}
47
- .is-rtl.is-splash.flowplayer .fp-ui,.is-rtl.is-paused.flowplayer .fp-ui{background:url(img/play_white_rtl.png) center no-repeat;background-size:12%}
48
- @media (-webkit-min-device-pixel-ratio: 2){.is-splash.flowplayer .fp-ui,.is-paused.flowplayer .fp-ui{background:url(img/play_white@x2.png) center no-repeat;background-size:12%}
49
- .is-rtl.is-splash.flowplayer .fp-ui,.is-rtl.is-paused.flowplayer .fp-ui{background:url(img/play_white_rtl@x2.png) center no-repeat;background-size:12%}
50
- }.color-light.is-splash.flowplayer .fp-ui,.color-light.is-paused.flowplayer .fp-ui{background-image:url(img/play_black.png);}
51
- .is-rtl.color-light.is-splash.flowplayer .fp-ui,.is-rtl.color-light.is-paused.flowplayer .fp-ui{background-image:url(img/play_black_rtl.png)}
52
- @media (-webkit-min-device-pixel-ratio: 2){.color-light.is-splash.flowplayer .fp-ui,.color-light.is-paused.flowplayer .fp-ui{background-image:url(img/play_black@x2.png);}
53
- .is-rtl.color-light.is-splash.flowplayer .fp-ui,.is-rtl.color-light.is-paused.flowplayer .fp-ui{background-image:url(img/play_black_rtl@x2.png)}
54
- }.is-fullscreen.flowplayer .fp-ui{background-size:auto}
55
- .is-seeking.flowplayer .fp-ui,.is-loading.flowplayer .fp-ui{background-image:none}
56
- .flowplayer .fp-logo{position:absolute;top:auto;left:15px;bottom:30px;cursor:pointer;display:none;z-index:100;}
57
- .flowplayer .fp-logo img{width:100%}
58
- .is-embedded.flowplayer .fp-logo{display:block}
59
- .fixed-controls.flowplayer .fp-logo{bottom:15px}
60
- .flowplayer .fp-fullscreen,.flowplayer .fp-unload,.flowplayer .fp-close{position:absolute;top:5px;left:auto;right:5px;display:block;width:30px;height:23px;background-position:12px -197px;cursor:pointer;}
61
- .is-rtl.flowplayer .fp-fullscreen,.is-rtl.flowplayer .fp-unload,.is-rtl.flowplayer .fp-close{right:auto;left:5px;background-position:18px -197px}
62
- .flowplayer .fp-unload,.flowplayer .fp-close{background-position:14px -175px;display:none;}
63
- .is-rtl.flowplayer .fp-unload,.is-rtl.flowplayer .fp-close{background-position:14px -175px}
64
- .flowplayer .fp-play{display:none;width:27px;height:20px;background-position:9px -24px;position:absolute;bottom:0;left:0;}
65
- .is-rtl.flowplayer .fp-play{background-position:18px -24px;left:auto;right:0}
66
- .play-button.flowplayer .fp-play{display:block}
67
- .is-paused.flowplayer .fp-play{background-position:9px 7px;}
68
- .is-rtl.is-paused.flowplayer .fp-play{background-position:18px 7px}
69
- .flowplayer.is-ready.is-closeable .fp-unload{display:block}
70
- .flowplayer.is-ready.is-closeable .fp-fullscreen{display:none}
71
- .flowplayer.is-fullscreen .fp-fullscreen{background-position:10px -217px;display:block !important;}
72
- .is-rtl.flowplayer.is-fullscreen .fp-fullscreen{background-position:21px -217px}
73
- .flowplayer.is-fullscreen .fp-unload,.flowplayer.is-fullscreen .fp-close{display:none !important}
74
- .flowplayer .fp-timeline{height:3px;position:relative;overflow:hidden;top:5px;height:10px;margin:0 150px 0 45px;}
75
- .no-volume.flowplayer .fp-timeline{margin-right:60px}
76
- .no-mute.flowplayer .fp-timeline{margin-right:140px}
77
- .no-mute.no-volume.flowplayer .fp-timeline{margin-right:45px}
78
- .play-button.flowplayer .fp-timeline{margin-left:67px}
79
- .is-rtl.flowplayer .fp-timeline{margin:0 45px 0 150px;}
80
- .no-volume.is-rtl.flowplayer .fp-timeline{margin-left:60px}
81
- .no-mute.is-rtl.flowplayer .fp-timeline{margin-left:140px}
82
- .no-mute.no-volume.is-rtl.flowplayer .fp-timeline{margin-left:45px}
83
- .play-button.is-rtl.flowplayer .fp-timeline{margin-right:67px}
84
- .is-long.flowplayer .fp-timeline{margin:0 180px 0 75px;}
85
- .no-volume.is-long.flowplayer .fp-timeline{margin-right:90px}
86
- .no-mute.is-long.flowplayer .fp-timeline{margin-right:75px}
87
- .play-button.is-long.flowplayer .fp-timeline{margin-left:97px}
88
- .is-rtl.is-long.flowplayer .fp-timeline{margin:75px 0 180px 0;}
89
- .no-volume.is-rtl.is-long.flowplayer .fp-timeline{margin-left:90px}
90
- .no-mute.is-rtl.is-long.flowplayer .fp-timeline{margin-left:75px}
91
- .play-button.is-rtl.is-long.flowplayer .fp-timeline{margin-left:97px}
92
- .aside-time.flowplayer .fp-timeline,.no-time.flowplayer .fp-timeline{margin:0 110px 0 5px}
93
- .aside-time.no-volume.flowplayer .fp-timeline,.no-time.no-volume.flowplayer .fp-timeline{margin-right:20px}
94
- .aside-time.no-mute.flowplayer .fp-timeline,.no-time.no-mute.flowplayer .fp-timeline{margin-right:5px}
95
- .play-button.no-time.flowplayer .fp-timeline,.play-button.aside-time.flowplayer .fp-timeline{margin-left:27px}
96
- .is-rtl.aside-time.flowplayer .fp-timeline,.is-rtl.no-time.flowplayer .fp-timeline{margin:0 5px 0 110px}
97
- .is-rtl.aside-time.no-volume.flowplayer .fp-timeline,.is-rtl.no-time.no-volume.flowplayer .fp-timeline{margin-left:20px}
98
- .is-rtl.aside-time.no-mute.flowplayer .fp-timeline,.is-rtl.no-time.no-mute.flowplayer .fp-timeline{margin-left:5px}
99
- .is-rtl.play-button.no-time.flowplayer .fp-timeline,.is-rtl.play-button.aside-time.flowplayer .fp-timeline{margin-right:27px}
100
- .flowplayer .fp-buffer,.flowplayer .fp-progress{position:absolute;top:0;left:auto;height:100%;cursor:col-resize}
101
- .flowplayer .fp-buffer{-webkit-transition:width .25s linear;-moz-transition:width .25s linear;transition:width .25s linear}
102
- .flowplayer .fp-timeline.no-animation .fp-buffer{-webkit-transition:none;-moz-transition:none;transition:none}
103
- .flowplayer.is-touch .fp-timeline{overflow:visible}
104
- .flowplayer.is-touch .fp-progress{-webkit-transition:width .2s linear;-moz-transition:width .2s linear;transition:width .2s linear}
105
- .flowplayer.is-touch .fp-timeline.is-dragging .fp-progress{-webkit-transition:right .1s linear,border .1s linear,top .1s linear,left .1s linear;-moz-transition:right .1s linear,border .1s linear,top .1s linear,left .1s linear;transition:right .1s linear,border .1s linear,top .1s linear,left .1s linear}
106
- .flowplayer.is-touch.is-mouseover .fp-progress:after,.flowplayer.is-touch.is-mouseover .fp-progress:before{content:'';display:block;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;position:absolute;right:-5px}
107
- .flowplayer.is-touch.is-rtl.is-mouseover .fp-progress:after,.flowplayer.is-touch.is-rtl.is-mouseover .fp-progress:before{right:auto;left:-5px}
108
- .flowplayer.is-touch.is-rtl.is-mouseover .fp-progress:after{left:-10px;-webkit-box-shadow:-1px 0 4px rgba(0,0,0,0.5);-moz-box-shadow:-1px 0 4px rgba(0,0,0,0.5);box-shadow:-1px 0 4px rgba(0,0,0,0.5)}
109
- .flowplayer.is-touch.is-mouseover .fp-progress:before{width:10px;height:10px}
110
- .flowplayer.is-touch.is-mouseover .fp-progress:after{height:10px;width:10px;top:-5px;right:-10px;border:5px solid rgba(255,255,255,0.65);-webkit-box-shadow:1px 0 4px rgba(0,0,0,0.5);-moz-box-shadow:1px 0 4px rgba(0,0,0,0.5);box-shadow:1px 0 4px rgba(0,0,0,0.5)}
111
- .flowplayer.is-touch.is-mouseover .fp-timeline.is-dragging .fp-progress:after{border:10px solid #fff;-webkit-border-radius:20px;-moz-border-radius:20px;border-radius:20px;-webkit-transition:inherit;-moz-transition:inherit;transition:inherit;top:-10px;right:-15px}
112
- .flowplayer.is-touch.is-rtl.is-mouseover .fp-timeline.is-dragging .fp-progress:after{left:-15px;right:auto;border:10px solid #fff}
113
- .flowplayer .fp-volume{position:absolute;top:7.5px;right:5px;}
114
- .is-rtl.flowplayer .fp-volume{right:auto;left:5px}
115
- .flowplayer .fp-mute{position:relative;width:10px;height:15px;float:left;top:-5px;cursor:pointer;background-position:-2px -99px;}
116
- .is-rtl.flowplayer .fp-mute{float:right;background-position:-25px -99px}
117
- .no-mute.flowplayer .fp-mute{display:none}
118
- .flowplayer .fp-volumeslider{width:90px;height:5px;cursor:col-resize;float:left;}
119
- .is-rtl.flowplayer .fp-volumeslider{float:right}
120
- .no-volume.flowplayer .fp-volumeslider{display:none}
121
- .flowplayer .fp-volumelevel{height:100%}
122
- .flowplayer .fp-time{text-shadow:0 0 1px #000;font-size:12px;font-weight:bold;color:#fff;width:100%;}
123
- .flowplayer .fp-time.is-inverted .fp-duration{display:none}
124
- .flowplayer .fp-time.is-inverted .fp-remaining{display:inline}
125
- .flowplayer .fp-time em{width:35px;height:10px;line-height:10px;text-align:center;position:absolute;bottom:5px}
126
- .no-time.flowplayer .fp-time{display:none}
127
- .is-long.flowplayer .fp-time em{width:65px}
128
- .flowplayer .fp-elapsed{left:5px;}
129
- .play-button.flowplayer .fp-elapsed{left:27px}
130
- .is-rtl.flowplayer .fp-elapsed{left:auto;right:5px;}
131
- .play-button.is-rtl.flowplayer .fp-elapsed{right:27px}
132
- .flowplayer .fp-remaining,.flowplayer .fp-duration{right:110px;color:#eee;}
133
- .no-volume.flowplayer .fp-remaining,.no-volume.flowplayer .fp-duration{right:20px}
134
- .no-mute.flowplayer .fp-remaining,.no-mute.flowplayer .fp-duration{right:100px}
135
- .no-mute.no-volume.flowplayer .fp-remaining,.no-mute.no-volume.flowplayer .fp-duration{right:5px}
136
- .is-rtl.flowplayer .fp-remaining,.is-rtl.flowplayer .fp-duration{right:auto;left:110px;}
137
- .no-volume.is-rtl.flowplayer .fp-remaining,.no-volume.is-rtl.flowplayer .fp-duration{left:20px}
138
- .no-mute.is-rtl.flowplayer .fp-remaining,.no-mute.is-rtl.flowplayer .fp-duration{left:100px}
139
- .no-mute.no-volume.is-rtl.flowplayer .fp-remaining,.no-mute.no-volume.is-rtl.flowplayer .fp-duration{left:5px}
140
- .flowplayer .fp-remaining{display:none}
141
- .flowplayer.color-light .fp-time{color:#222;text-shadow:0 0 1px #fff}
142
- .flowplayer.color-light .fp-remaining,.flowplayer.color-light .fp-duration{color:#666}
143
- .flowplayer.aside-time .fp-time{position:absolute;top:5px;left:5px;bottom:auto !important;width:85px;}
144
- .flowplayer.aside-time .fp-time strong,.flowplayer.aside-time .fp-time em{position:static}
145
- .flowplayer.aside-time .fp-time .fp-elapsed{margin-right:5px;}
146
- .is-rtl.flowplayer.aside-time .fp-time .fp-elapsed{margin-right:auto;margin-left:5px}
147
- .flowplayer.is-long.aside-time .fp-time{width:130px}
148
- .flowplayer.is-splash,.flowplayer.is-poster{cursor:pointer;}
149
- .flowplayer.is-splash .fp-controls,.flowplayer.is-poster .fp-controls,.flowplayer.is-splash .fp-fullscreen,.flowplayer.is-poster .fp-fullscreen,.flowplayer.is-splash .fp-unload,.flowplayer.is-poster .fp-unload,.flowplayer.is-splash .fp-time,.flowplayer.is-poster .fp-time,.flowplayer.is-splash .fp-embed,.flowplayer.is-poster .fp-embed{display:none !important}
150
- .flowplayer.is-poster .fp-engine{top:-9999em}
151
- .flowplayer.is-loading .fp-waiting{display:block}
152
- .flowplayer.is-loading .fp-controls,.flowplayer.is-loading .fp-time{display:none}
153
- .flowplayer.is-loading .fp-ui{background-position:-9999em}
154
- .flowplayer.is-loading video.fp-engine{position:absolute;top:-9999em}
155
- .flowplayer.is-seeking .fp-waiting{display:block}
156
- .flowplayer.is-playing{background-image:none !important;background-color:#333;}
157
- .flowplayer.is-playing.hls-fix.is-finished .fp-engine{position:absolute;top:-9999em}
158
- .flowplayer.is-fullscreen{position:fixed !important;top:0 !important;left:0 !important;border:0 !important;margin:0 !important;width:100% !important;height:100% !important;max-width:100% !important;z-index:99999 !important;-webkit-box-shadow:0 !important;-moz-box-shadow:0 !important;box-shadow:0 !important;background-image:none !important;background-color:#333;}
159
- .is-rtl.flowplayer.is-fullscreen{left:auto !important;right:0 !important}
160
- .flowplayer.is-error{border:1px solid #909090;background:#fdfdfd !important;}
161
- .flowplayer.is-error h2{font-weight:bold;font-size:large;margin-top:10%}
162
- .flowplayer.is-error .fp-message{display:block}
163
- .flowplayer.is-error object,.flowplayer.is-error video,.flowplayer.is-error .fp-controls,.flowplayer.is-error .fp-time,.flowplayer.is-error .fp-subtitle{display:none}
164
- .flowplayer.is-ready.is-muted .fp-mute{opacity:.5;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50)}
165
- .flowplayer.is-mouseout .fp-controls{height:0;-webkit-transition:height .15s .3s;-moz-transition:height .15s .3s;transition:height .15s .3s}
166
- .flowplayer.is-mouseout .fp-timeline{margin:0 !important}
167
- .flowplayer.is-mouseout .fp-timeline{-webkit-transition:height .15s .3s,top .15s .3s,margin .15s .3s;-moz-transition:height .15s .3s,top .15s .3s,margin .15s .3s;transition:height .15s .3s,top .15s .3s,margin .15s .3s;height:4px;top:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}
168
- .flowplayer.is-mouseout .fp-fullscreen,.flowplayer.is-mouseout .fp-unload,.flowplayer.is-mouseout .fp-elapsed,.flowplayer.is-mouseout .fp-remaining,.flowplayer.is-mouseout .fp-duration,.flowplayer.is-mouseout .fp-embed,.flowplayer.is-mouseout .fp-volume,.flowplayer.is-mouseout .fp-play{opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .15s .3s;-moz-transition:opacity .15s .3s;transition:opacity .15s .3s}
169
- .flowplayer.is-mouseover .fp-controls,.flowplayer.fixed-controls .fp-controls{height:20px}
170
- .flowplayer.is-mouseover .fp-fullscreen,.flowplayer.fixed-controls .fp-fullscreen,.flowplayer.is-mouseover .fp-unload,.flowplayer.fixed-controls .fp-unload,.flowplayer.is-mouseover .fp-elapsed,.flowplayer.fixed-controls .fp-elapsed,.flowplayer.is-mouseover .fp-remaining,.flowplayer.fixed-controls .fp-remaining,.flowplayer.is-mouseover .fp-duration,.flowplayer.fixed-controls .fp-duration,.flowplayer.is-mouseover .fp-embed,.flowplayer.fixed-controls .fp-embed,.flowplayer.is-mouseover .fp-logo,.flowplayer.fixed-controls .fp-logo,.flowplayer.is-mouseover .fp-volume,.flowplayer.fixed-controls .fp-volume,.flowplayer.is-mouseover .fp-play,.flowplayer.fixed-controls .fp-play{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
171
- .flowplayer.fixed-controls .fp-volume{display:block}
172
- .flowplayer.fixed-controls .fp-controls{bottom:-20px;}
173
- .is-fullscreen.flowplayer.fixed-controls .fp-controls{bottom:0}
174
- .flowplayer.fixed-controls .fp-time em{bottom:-15px;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);}
175
- .is-fullscreen.flowplayer.fixed-controls .fp-time em{bottom:5px}
176
- .flowplayer.is-disabled .fp-progress{background-color:#999}
177
- .flowplayer.is-flash-disabled{background-color:#333;}
178
- .flowplayer.is-flash-disabled object.fp-engine{z-index:100}
179
- .flowplayer.is-flash-disabled .fp-flash-disabled{display:block;z-index:101}
180
- .flowplayer .fp-embed{position:absolute;top:5px;left:5px;display:block;width:25px;height:20px;background-position:3px -237px;}
181
- .is-rtl.flowplayer .fp-embed{background-position:22px -237px;left:auto;right:5px}
182
- .flowplayer .fp-embed-code{position:absolute;display:none;top:10px;left:40px;background-color:#333;padding:3px 5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 3px #ccc;-moz-box-shadow:0 0 3px #ccc;box-shadow:0 0 3px #ccc;font-size:12px;}
183
- .flowplayer .fp-embed-code:before{content:'';width:0;height:0;position:absolute;top:2px;left:-10px;border:5px solid transparent;border-right-color:#333}
184
- .is-rtl.flowplayer .fp-embed-code{left:auto;right:40px;}
185
- .is-rtl.flowplayer .fp-embed-code:before{left:auto;right:-10px;border-right-color:transparent;border-left-color:#333}
186
- .flowplayer .fp-embed-code textarea{width:400px;height:16px;font-family:monaco,"courier new",verdana;color:#777;white-space:nowrap;resize:none;overflow:hidden;border:0;outline:0;background-color:transparent;color:#ccc}
187
- .flowplayer .fp-embed-code label{display:block;color:#999}
188
- .flowplayer.is-embedding .fp-embed,.flowplayer.is-embedding .fp-embed-code{display:block;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
189
- .flowplayer.aside-time .fp-embed{left:85px;}
190
- .is-rtl.flowplayer.aside-time .fp-embed{left:auto;right:85px}
191
- .flowplayer.aside-time .fp-embed-code{left:115px;}
192
- .is-rtl.flowplayer.aside-time .fp-embed-code{left:auto;right:115px}
193
- .flowplayer.aside-time.is-embedding .fp-time{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
194
- .flowplayer.is-long.aside-time .fp-embed{left:130px;}
195
- .is-rtl.flowplayer.is-long.aside-time .fp-embed{left:auto;right:130px}
196
- .flowplayer.no-time .fp-embed{left:5px !important;}
197
- .is-rtl.flowplayer.no-time .fp-embed{left:auto;right:5px !important}
198
- .flowplayer.is-live .fp-timeline,.flowplayer.is-live .fp-duration,.flowplayer.is-live .fp-remaining{display:none}
199
- .flowplayer .fp-context-menu{position:absolute;display:none;z-index:1001;background-color:#fff;padding:10px;border:1px solid #aaa;-webkit-box-shadow:0 0 4px #888;-moz-box-shadow:0 0 4px #888;box-shadow:0 0 4px #888;width:170px;}
200
- .flowplayer .fp-context-menu li{text-align:center;padding:10px;color:#444;margin:0 -10px 0 -10px;}
201
- .flowplayer .fp-context-menu li a{color:#00a7c8;font-size:110%}
202
- .flowplayer .fp-context-menu li:hover:not(.copyright){background-color:#eee}
203
- .flowplayer .fp-context-menu li.copyright{margin:0;padding-left:110px;background-image:url("img/flowplayer.png");background-repeat:no-repeat;background-size:100px 20px;background-position:5px 5px;border-bottom:1px solid #bbb;}
204
- @media (-webkit-min-device-pixel-ratio: 2){.flowplayer .fp-context-menu li.copyright{background-image:url("img/flowplayer@2x.png")}
205
- }@-moz-keyframes pulse{0%{opacity:0}
206
- 100%{opacity:1}
207
- }@-webkit-keyframes pulse{0%{opacity:0}
208
- 100%{opacity:1}
209
- }@-o-keyframes pulse{0%{opacity:0}
210
- 100%{opacity:1}
211
- }@-ms-keyframes pulse{0%{opacity:0}
212
- 100%{opacity:1}
213
- }@keyframes pulse{0%{opacity:0}
214
- 100%{opacity:1}
215
- }.flowplayer .fp-controls{background-color:#333;background-color:rgba(51,51,51,0.6)}
216
- .flowplayer.fixed-controls .fp-controls{background-color:#333}
217
- .flowplayer .fp-timeline{background-color:#666}
218
- .flowplayer .fp-buffer{background-color:#eee}
219
- .flowplayer .fp-progress{background-color:#00a7c8}
220
- .flowplayer .fp-volumeslider{background-color:#000}
221
- .flowplayer .fp-volumelevel{background-color:#fff}
222
- .flowplayer .fp-play{height:24px}
223
- .flowplayer.is-touch.is-mouseover .fp-progress:before{background-color:#00a7c8}
224
- .flowplayer.color-light .fp-controls{background-color:rgba(255,255,255,0.6)}
225
- .flowplayer.color-light.fixed-controls .fp-controls{background-color:#fff}
226
- .flowplayer.color-light .fp-volumeslider{background-color:#ddd}
227
- .flowplayer.color-light .fp-volumelevel{background-color:#222}
228
- .flowplayer.color-alt .fp-progress{background-color:#fff}
229
- .flowplayer.color-alt.is-touch.is-mouseover .fp-progress:before{background-color:#fff}
230
- .flowplayer.color-alt .fp-buffer{background-color:#999}
231
- .flowplayer.color-alt2 .fp-progress{background-color:#900}
232
- .flowplayer.color-alt2.is-touch.is-mouseover .fp-progress:before{background-color:#900}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/skin/playful.css DELETED
@@ -1,236 +0,0 @@
1
- .flowplayer{position:relative;width:100%;background-size:contain;background-repeat:no-repeat;background-position:center center;display:inline-block;}
2
- .flowplayer *{font-weight:inherit;font-family:inherit;font-style:inherit;text-decoration:inherit;font-size:100%;padding:0;border:0;margin:0;list-style-type:none}
3
- .flowplayer a:focus{outline:0}
4
- .flowplayer video{width:100%}
5
- .flowplayer.is-ipad video{-webkit-transform:translateX(-2048px);}
6
- .is-ready.flowplayer.is-ipad video{-webkit-transform:translateX(0)}
7
- .flowplayer .fp-engine,.flowplayer .fp-ui,.flowplayer .fp-message{position:absolute;top:0;left:0;width:100%;height:100%;cursor:pointer;z-index:1}
8
- .flowplayer .fp-message{display:none;text-align:center;padding-top:5%;cursor:default;}
9
- .flowplayer .fp-message h2{font-size:120%;margin-bottom:1em}
10
- .flowplayer .fp-message p{color:#666;font-size:95%}
11
- .flowplayer .fp-controls{position:absolute;bottom:0;width:100%;}
12
- .no-background.flowplayer .fp-controls{background-color:transparent !important;background-image:-moz-linear-gradient(transparent,transparent) !important;background-image:-webkit-gradient(linear,0 0,0 100%,from(transparent),to(transparent)) !important}
13
- .is-fullscreen.flowplayer .fp-controls{bottom:3px}
14
- .is-mouseover.flowplayer .fp-controls{bottom:0}
15
- .flowplayer .fp-waiting{display:none;margin:19% auto;text-align:center;}
16
- .flowplayer .fp-waiting *{-webkit-box-shadow:0 0 5px #333;-moz-box-shadow:0 0 5px #333;box-shadow:0 0 5px #333}
17
- .flowplayer .fp-waiting em{width:1em;height:1em;-webkit-border-radius:1em;-moz-border-radius:1em;border-radius:1em;background-color:rgba(255,255,255,0.8);display:inline-block;-webkit-animation:pulse .6s infinite;-moz-animation:pulse .6s infinite;animation:pulse .6s infinite;margin:.3em;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);}
18
- .flowplayer .fp-waiting em:nth-child(1){-webkit-animation-delay:.3s;-moz-animation-delay:.3s;animation-delay:.3s}
19
- .flowplayer .fp-waiting em:nth-child(2){-webkit-animation-delay:.45s;-moz-animation-delay:.45s;animation-delay:.45s}
20
- .flowplayer .fp-waiting em:nth-child(3){-webkit-animation-delay:.6s;-moz-animation-delay:.6s;animation-delay:.6s}
21
- .flowplayer .fp-waiting p{color:#ccc;font-weight:bold}
22
- .flowplayer .fp-speed{font-size:30px;background-color:#333;background-color:rgba(51,51,51,0.8);color:#eee;margin:0 auto;text-align:center;width:120px;padding:.1em 0 0;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .5s;-moz-transition:opacity .5s;transition:opacity .5s;}
23
- .flowplayer .fp-speed.fp-hilite{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
24
- .flowplayer .fp-help{position:absolute;top:0;left:-9999em;z-index:100;background-color:#333;background-color:rgba(51,51,51,0.9);width:100%;height:100%;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .2s;-moz-transition:opacity .2s;transition:opacity .2s;text-align:center;}
25
- .is-help.flowplayer .fp-help{left:0;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
26
- .flowplayer .fp-help .fp-help-section{margin:3%;direction:ltr}
27
- .flowplayer .fp-help .fp-help-basics{margin-top:6%}
28
- .flowplayer .fp-help p{color:#eee;margin:.5em 0;font-size:14px;line-height:1.5;display:inline-block;margin:1% 2%}
29
- .flowplayer .fp-help em{background:#eee;-webkit-border-radius:.3em;-moz-border-radius:.3em;border-radius:.3em;margin-right:.4em;padding:.3em .6em;color:#333}
30
- .flowplayer .fp-help small{font-size:90%;color:#aaa}
31
- .flowplayer .fp-help .fp-close{display:block}
32
- @media (max-width: 600px){.flowplayer .fp-help p{font-size:9px}
33
- }.flowplayer .fp-subtitle{position:absolute;bottom:40px;left:-99999em;z-index:10;text-align:center;width:100%;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .3s;-moz-transition:opacity .3s;transition:opacity .3s;}
34
- .flowplayer .fp-subtitle p{display:inline;background-color:#333;background-color:rgba(51,51,51,0.9);color:#eee;padding:.1em .4em;font-size:16px;line-height:1.6;}
35
- .flowplayer .fp-subtitle p:after{content:'';clear:both}
36
- .flowplayer .fp-subtitle.fp-active{left:0;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
37
- .flowplayer .fp-fullscreen,.flowplayer .fp-unload,.flowplayer .fp-mute,.flowplayer .fp-embed,.flowplayer .fp-close,.flowplayer .fp-play{background-image:url(img/playful_white.png);background-size:37px 300px;}
38
- .is-rtl.flowplayer .fp-fullscreen,.is-rtl.flowplayer .fp-unload,.is-rtl.flowplayer .fp-mute,.is-rtl.flowplayer .fp-embed,.is-rtl.flowplayer .fp-close,.is-rtl.flowplayer .fp-play{background-image:url(img/playful_white_rtl.png)}
39
- .color-light.flowplayer .fp-fullscreen,.color-light.flowplayer .fp-unload,.color-light.flowplayer .fp-mute,.color-light.flowplayer .fp-embed,.color-light.flowplayer .fp-close,.color-light.flowplayer .fp-play{background-image:url(img/playful_black.png);}
40
- .is-rtl.color-light.flowplayer .fp-fullscreen,.is-rtl.color-light.flowplayer .fp-unload,.is-rtl.color-light.flowplayer .fp-mute,.is-rtl.color-light.flowplayer .fp-embed,.is-rtl.color-light.flowplayer .fp-close,.is-rtl.color-light.flowplayer .fp-play{background-image:url(img/playful_black_rtl.png)}
41
- @media (-webkit-min-device-pixel-ratio: 2){.color-light.flowplayer .fp-fullscreen,.color-light.flowplayer .fp-unload,.color-light.flowplayer .fp-mute,.color-light.flowplayer .fp-embed,.color-light.flowplayer .fp-close,.color-light.flowplayer .fp-play{background-image:url(img/playful_black@x2.png)}
42
- .is-rtl.color-light.flowplayer .fp-fullscreen,.is-rtl.color-light.flowplayer .fp-unload,.is-rtl.color-light.flowplayer .fp-mute,.is-rtl.color-light.flowplayer .fp-embed,.is-rtl.color-light.flowplayer .fp-close,.is-rtl.color-light.flowplayer .fp-play{background-image:url(img/playful_black_rtl@x2.png)}
43
- }@media (-webkit-min-device-pixel-ratio: 2){.flowplayer .fp-fullscreen,.flowplayer .fp-unload,.flowplayer .fp-mute,.flowplayer .fp-embed,.flowplayer .fp-close,.flowplayer .fp-play{background-image:url(img/playful_white@x2.png)}
44
- .is-rtl.flowplayer .fp-fullscreen,.is-rtl.flowplayer .fp-unload,.is-rtl.flowplayer .fp-mute,.is-rtl.flowplayer .fp-embed,.is-rtl.flowplayer .fp-close,.is-rtl.flowplayer .fp-play{background-image:url(img/playful_white_rtl@x2.png)}
45
- }.flowplayer .fp-flash-disabled{background:#333;width:390px;margin:0 auto;position:absolute;bottom:0;color:#fff}
46
- .is-splash.flowplayer .fp-ui,.is-paused.flowplayer .fp-ui{background:url(img/play_white.png) center no-repeat;background-size:12%;}
47
- .is-rtl.is-splash.flowplayer .fp-ui,.is-rtl.is-paused.flowplayer .fp-ui{background:url(img/play_white_rtl.png) center no-repeat;background-size:12%}
48
- @media (-webkit-min-device-pixel-ratio: 2){.is-splash.flowplayer .fp-ui,.is-paused.flowplayer .fp-ui{background:url(img/play_white@x2.png) center no-repeat;background-size:12%}
49
- .is-rtl.is-splash.flowplayer .fp-ui,.is-rtl.is-paused.flowplayer .fp-ui{background:url(img/play_white_rtl@x2.png) center no-repeat;background-size:12%}
50
- }.color-light.is-splash.flowplayer .fp-ui,.color-light.is-paused.flowplayer .fp-ui{background-image:url(img/play_black.png);}
51
- .is-rtl.color-light.is-splash.flowplayer .fp-ui,.is-rtl.color-light.is-paused.flowplayer .fp-ui{background-image:url(img/play_black_rtl.png)}
52
- @media (-webkit-min-device-pixel-ratio: 2){.color-light.is-splash.flowplayer .fp-ui,.color-light.is-paused.flowplayer .fp-ui{background-image:url(img/play_black@x2.png);}
53
- .is-rtl.color-light.is-splash.flowplayer .fp-ui,.is-rtl.color-light.is-paused.flowplayer .fp-ui{background-image:url(img/play_black_rtl@x2.png)}
54
- }.is-fullscreen.flowplayer .fp-ui{background-size:auto}
55
- .is-seeking.flowplayer .fp-ui,.is-loading.flowplayer .fp-ui{background-image:none}
56
- .flowplayer .fp-logo{position:absolute;top:auto;left:15px;bottom:45px;cursor:pointer;display:none;z-index:100;}
57
- .flowplayer .fp-logo img{width:100%}
58
- .is-embedded.flowplayer .fp-logo{display:block}
59
- .fixed-controls.flowplayer .fp-logo{bottom:15px}
60
- .flowplayer .fp-fullscreen,.flowplayer .fp-unload,.flowplayer .fp-close{position:absolute;top:12px;left:auto;right:12px;display:block;width:30px;height:23px;background-position:12px -197px;cursor:pointer;}
61
- .is-rtl.flowplayer .fp-fullscreen,.is-rtl.flowplayer .fp-unload,.is-rtl.flowplayer .fp-close{right:auto;left:12px;background-position:18px -197px}
62
- .flowplayer .fp-unload,.flowplayer .fp-close{background-position:14px -175px;display:none;}
63
- .is-rtl.flowplayer .fp-unload,.is-rtl.flowplayer .fp-close{background-position:14px -175px}
64
- .flowplayer .fp-play{display:none;width:27px;height:35px;background-position:9px -24px;position:absolute;bottom:0;left:0;}
65
- .is-rtl.flowplayer .fp-play{background-position:18px -24px;left:auto;right:0}
66
- .play-button.flowplayer .fp-play{display:block}
67
- .is-paused.flowplayer .fp-play{background-position:9px 7px;}
68
- .is-rtl.is-paused.flowplayer .fp-play{background-position:18px 7px}
69
- .flowplayer.is-ready.is-closeable .fp-unload{display:block}
70
- .flowplayer.is-ready.is-closeable .fp-fullscreen{display:none}
71
- .flowplayer.is-fullscreen .fp-fullscreen{background-position:10px -217px;display:block !important;}
72
- .is-rtl.flowplayer.is-fullscreen .fp-fullscreen{background-position:21px -217px}
73
- .flowplayer.is-fullscreen .fp-unload,.flowplayer.is-fullscreen .fp-close{display:none !important}
74
- .flowplayer .fp-timeline{height:3px;position:relative;overflow:hidden;top:12px;height:11px;margin:0 199px 0 59px;}
75
- .no-volume.flowplayer .fp-timeline{margin-right:109px}
76
- .no-mute.flowplayer .fp-timeline{margin-right:161px}
77
- .no-mute.no-volume.flowplayer .fp-timeline{margin-right:59px}
78
- .play-button.flowplayer .fp-timeline{margin-left:74px}
79
- .is-rtl.flowplayer .fp-timeline{margin:0 59px 0 199px;}
80
- .no-volume.is-rtl.flowplayer .fp-timeline{margin-left:109px}
81
- .no-mute.is-rtl.flowplayer .fp-timeline{margin-left:161px}
82
- .no-mute.no-volume.is-rtl.flowplayer .fp-timeline{margin-left:59px}
83
- .play-button.is-rtl.flowplayer .fp-timeline{margin-right:74px}
84
- .is-long.flowplayer .fp-timeline{margin:0 229px 0 89px;}
85
- .no-volume.is-long.flowplayer .fp-timeline{margin-right:139px}
86
- .no-mute.is-long.flowplayer .fp-timeline{margin-right:89px}
87
- .play-button.is-long.flowplayer .fp-timeline{margin-left:104px}
88
- .is-rtl.is-long.flowplayer .fp-timeline{margin:89px 0 229px 0;}
89
- .no-volume.is-rtl.is-long.flowplayer .fp-timeline{margin-left:139px}
90
- .no-mute.is-rtl.is-long.flowplayer .fp-timeline{margin-left:89px}
91
- .play-button.is-rtl.is-long.flowplayer .fp-timeline{margin-left:104px}
92
- .aside-time.flowplayer .fp-timeline,.no-time.flowplayer .fp-timeline{margin:0 152px 0 12px}
93
- .aside-time.no-volume.flowplayer .fp-timeline,.no-time.no-volume.flowplayer .fp-timeline{margin-right:62px}
94
- .aside-time.no-mute.flowplayer .fp-timeline,.no-time.no-mute.flowplayer .fp-timeline{margin-right:12px}
95
- .play-button.no-time.flowplayer .fp-timeline,.play-button.aside-time.flowplayer .fp-timeline{margin-left:27px}
96
- .is-rtl.aside-time.flowplayer .fp-timeline,.is-rtl.no-time.flowplayer .fp-timeline{margin:0 12px 0 152px}
97
- .is-rtl.aside-time.no-volume.flowplayer .fp-timeline,.is-rtl.no-time.no-volume.flowplayer .fp-timeline{margin-left:62px}
98
- .is-rtl.aside-time.no-mute.flowplayer .fp-timeline,.is-rtl.no-time.no-mute.flowplayer .fp-timeline{margin-left:12px}
99
- .is-rtl.play-button.no-time.flowplayer .fp-timeline,.is-rtl.play-button.aside-time.flowplayer .fp-timeline{margin-right:27px}
100
- .flowplayer .fp-buffer,.flowplayer .fp-progress{position:absolute;top:0;left:auto;height:100%;cursor:col-resize}
101
- .flowplayer .fp-buffer{-webkit-transition:width .25s linear;-moz-transition:width .25s linear;transition:width .25s linear}
102
- .flowplayer .fp-timeline.no-animation .fp-buffer{-webkit-transition:none;-moz-transition:none;transition:none}
103
- .flowplayer.is-touch .fp-timeline{overflow:visible}
104
- .flowplayer.is-touch .fp-progress{-webkit-transition:width .2s linear;-moz-transition:width .2s linear;transition:width .2s linear}
105
- .flowplayer.is-touch .fp-timeline.is-dragging .fp-progress{-webkit-transition:right .1s linear,border .1s linear,top .1s linear,left .1s linear;-moz-transition:right .1s linear,border .1s linear,top .1s linear,left .1s linear;transition:right .1s linear,border .1s linear,top .1s linear,left .1s linear}
106
- .flowplayer.is-touch.is-mouseover .fp-progress:after,.flowplayer.is-touch.is-mouseover .fp-progress:before{content:'';display:block;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;position:absolute;right:-5px}
107
- .flowplayer.is-touch.is-rtl.is-mouseover .fp-progress:after,.flowplayer.is-touch.is-rtl.is-mouseover .fp-progress:before{right:auto;left:-5px}
108
- .flowplayer.is-touch.is-rtl.is-mouseover .fp-progress:after{left:-10px;-webkit-box-shadow:-1px 0 4px rgba(0,0,0,0.5);-moz-box-shadow:-1px 0 4px rgba(0,0,0,0.5);box-shadow:-1px 0 4px rgba(0,0,0,0.5)}
109
- .flowplayer.is-touch.is-mouseover .fp-progress:before{width:10px;height:10px}
110
- .flowplayer.is-touch.is-mouseover .fp-progress:after{height:10px;width:10px;top:-5px;right:-10px;border:5px solid rgba(255,255,255,0.65);-webkit-box-shadow:1px 0 4px rgba(0,0,0,0.5);-moz-box-shadow:1px 0 4px rgba(0,0,0,0.5);box-shadow:1px 0 4px rgba(0,0,0,0.5)}
111
- .flowplayer.is-touch.is-mouseover .fp-timeline.is-dragging .fp-progress:after{border:10px solid #fff;-webkit-border-radius:20px;-moz-border-radius:20px;border-radius:20px;-webkit-transition:inherit;-moz-transition:inherit;transition:inherit;top:-10px;right:-15px}
112
- .flowplayer.is-touch.is-rtl.is-mouseover .fp-timeline.is-dragging .fp-progress:after{left:-15px;right:auto;border:10px solid #fff}
113
- .flowplayer .fp-volume{position:absolute;top:12px;right:12px;}
114
- .is-rtl.flowplayer .fp-volume{right:auto;left:12px}
115
- .flowplayer .fp-mute{position:relative;width:38px;height:20px;float:left;top:-4.5px;cursor:pointer;background-position:-2px -99px;}
116
- .is-rtl.flowplayer .fp-mute{float:right;background-position:-25px -99px}
117
- .no-mute.flowplayer .fp-mute{display:none}
118
- .flowplayer .fp-volumeslider{width:90px;height:11px;cursor:col-resize;float:left;}
119
- .is-rtl.flowplayer .fp-volumeslider{float:right}
120
- .no-volume.flowplayer .fp-volumeslider{display:none}
121
- .flowplayer .fp-volumelevel{height:100%}
122
- .flowplayer .fp-time{text-shadow:0 0 1px #000;font-size:12px;font-weight:bold;color:#fff;width:100%;}
123
- .flowplayer .fp-time.is-inverted .fp-duration{display:none}
124
- .flowplayer .fp-time.is-inverted .fp-remaining{display:inline}
125
- .flowplayer .fp-time em{width:35px;height:11px;line-height:11px;text-align:center;position:absolute;bottom:12px}
126
- .no-time.flowplayer .fp-time{display:none}
127
- .is-long.flowplayer .fp-time em{width:65px}
128
- .flowplayer .fp-elapsed{left:12px;}
129
- .play-button.flowplayer .fp-elapsed{left:27px}
130
- .is-rtl.flowplayer .fp-elapsed{left:auto;right:12px;}
131
- .play-button.is-rtl.flowplayer .fp-elapsed{right:27px}
132
- .flowplayer .fp-remaining,.flowplayer .fp-duration{right:152px;color:#eee;}
133
- .no-volume.flowplayer .fp-remaining,.no-volume.flowplayer .fp-duration{right:62px}
134
- .no-mute.flowplayer .fp-remaining,.no-mute.flowplayer .fp-duration{right:114px}
135
- .no-mute.no-volume.flowplayer .fp-remaining,.no-mute.no-volume.flowplayer .fp-duration{right:12px}
136
- .is-rtl.flowplayer .fp-remaining,.is-rtl.flowplayer .fp-duration{right:auto;left:152px;}
137
- .no-volume.is-rtl.flowplayer .fp-remaining,.no-volume.is-rtl.flowplayer .fp-duration{left:62px}
138
- .no-mute.is-rtl.flowplayer .fp-remaining,.no-mute.is-rtl.flowplayer .fp-duration{left:114px}
139
- .no-mute.no-volume.is-rtl.flowplayer .fp-remaining,.no-mute.no-volume.is-rtl.flowplayer .fp-duration{left:12px}
140
- .flowplayer .fp-remaining{display:none}
141
- .flowplayer.color-light .fp-time{color:#222;text-shadow:0 0 1px #fff}
142
- .flowplayer.color-light .fp-remaining,.flowplayer.color-light .fp-duration{color:#666}
143
- .flowplayer.aside-time .fp-time{position:absolute;top:12px;left:12px;bottom:auto !important;width:110px;}
144
- .flowplayer.aside-time .fp-time strong,.flowplayer.aside-time .fp-time em{position:static}
145
- .flowplayer.aside-time .fp-time .fp-elapsed{margin-right:12px;}
146
- .is-rtl.flowplayer.aside-time .fp-time .fp-elapsed{margin-right:auto;margin-left:12px}
147
- .flowplayer.is-long.aside-time .fp-time{width:130px}
148
- .flowplayer.is-splash,.flowplayer.is-poster{cursor:pointer;}
149
- .flowplayer.is-splash .fp-controls,.flowplayer.is-poster .fp-controls,.flowplayer.is-splash .fp-fullscreen,.flowplayer.is-poster .fp-fullscreen,.flowplayer.is-splash .fp-unload,.flowplayer.is-poster .fp-unload,.flowplayer.is-splash .fp-time,.flowplayer.is-poster .fp-time,.flowplayer.is-splash .fp-embed,.flowplayer.is-poster .fp-embed{display:none !important}
150
- .flowplayer.is-poster .fp-engine{top:-9999em}
151
- .flowplayer.is-loading .fp-waiting{display:block}
152
- .flowplayer.is-loading .fp-controls,.flowplayer.is-loading .fp-time{display:none}
153
- .flowplayer.is-loading .fp-ui{background-position:-9999em}
154
- .flowplayer.is-loading video.fp-engine{position:absolute;top:-9999em}
155
- .flowplayer.is-seeking .fp-waiting{display:block}
156
- .flowplayer.is-playing{background-image:none !important;background-color:#333;}
157
- .flowplayer.is-playing.hls-fix.is-finished .fp-engine{position:absolute;top:-9999em}
158
- .flowplayer.is-fullscreen{position:fixed !important;top:0 !important;left:0 !important;border:0 !important;margin:0 !important;width:100% !important;height:100% !important;max-width:100% !important;z-index:99999 !important;-webkit-box-shadow:0 !important;-moz-box-shadow:0 !important;box-shadow:0 !important;background-image:none !important;background-color:#333;}
159
- .is-rtl.flowplayer.is-fullscreen{left:auto !important;right:0 !important}
160
- .flowplayer.is-error{border:1px solid #909090;background:#fdfdfd !important;}
161
- .flowplayer.is-error h2{font-weight:bold;font-size:large;margin-top:10%}
162
- .flowplayer.is-error .fp-message{display:block}
163
- .flowplayer.is-error object,.flowplayer.is-error video,.flowplayer.is-error .fp-controls,.flowplayer.is-error .fp-time,.flowplayer.is-error .fp-subtitle{display:none}
164
- .flowplayer.is-ready.is-muted .fp-mute{opacity:.5;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50)}
165
- .flowplayer.is-mouseout .fp-controls{height:0;-webkit-transition:height .15s .3s;-moz-transition:height .15s .3s;transition:height .15s .3s}
166
- .flowplayer.is-mouseout .fp-timeline{margin:0 !important}
167
- .flowplayer.is-mouseout .fp-timeline{-webkit-transition:height .15s .3s,top .15s .3s,margin .15s .3s;-moz-transition:height .15s .3s,top .15s .3s,margin .15s .3s;transition:height .15s .3s,top .15s .3s,margin .15s .3s;height:4px;top:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}
168
- .flowplayer.is-mouseout .fp-fullscreen,.flowplayer.is-mouseout .fp-unload,.flowplayer.is-mouseout .fp-elapsed,.flowplayer.is-mouseout .fp-remaining,.flowplayer.is-mouseout .fp-duration,.flowplayer.is-mouseout .fp-embed,.flowplayer.is-mouseout .fp-volume,.flowplayer.is-mouseout .fp-play{opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .15s .3s;-moz-transition:opacity .15s .3s;transition:opacity .15s .3s}
169
- .flowplayer.is-mouseover .fp-controls,.flowplayer.fixed-controls .fp-controls{height:35px}
170
- .flowplayer.is-mouseover .fp-fullscreen,.flowplayer.fixed-controls .fp-fullscreen,.flowplayer.is-mouseover .fp-unload,.flowplayer.fixed-controls .fp-unload,.flowplayer.is-mouseover .fp-elapsed,.flowplayer.fixed-controls .fp-elapsed,.flowplayer.is-mouseover .fp-remaining,.flowplayer.fixed-controls .fp-remaining,.flowplayer.is-mouseover .fp-duration,.flowplayer.fixed-controls .fp-duration,.flowplayer.is-mouseover .fp-embed,.flowplayer.fixed-controls .fp-embed,.flowplayer.is-mouseover .fp-logo,.flowplayer.fixed-controls .fp-logo,.flowplayer.is-mouseover .fp-volume,.flowplayer.fixed-controls .fp-volume,.flowplayer.is-mouseover .fp-play,.flowplayer.fixed-controls .fp-play{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
171
- .flowplayer.fixed-controls .fp-volume{display:block}
172
- .flowplayer.fixed-controls .fp-controls{bottom:-35px;}
173
- .is-fullscreen.flowplayer.fixed-controls .fp-controls{bottom:0}
174
- .flowplayer.fixed-controls .fp-time em{bottom:-23px;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);}
175
- .is-fullscreen.flowplayer.fixed-controls .fp-time em{bottom:12px}
176
- .flowplayer.is-disabled .fp-progress{background-color:#999}
177
- .flowplayer.is-flash-disabled{background-color:#333;}
178
- .flowplayer.is-flash-disabled object.fp-engine{z-index:100}
179
- .flowplayer.is-flash-disabled .fp-flash-disabled{display:block;z-index:101}
180
- .flowplayer .fp-embed{position:absolute;top:12px;left:12px;display:block;width:25px;height:20px;background-position:3px -237px;}
181
- .is-rtl.flowplayer .fp-embed{background-position:22px -237px;left:auto;right:12px}
182
- .flowplayer .fp-embed-code{position:absolute;display:none;top:10px;left:40px;background-color:#333;padding:3px 5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 3px #ccc;-moz-box-shadow:0 0 3px #ccc;box-shadow:0 0 3px #ccc;font-size:12px;}
183
- .flowplayer .fp-embed-code:before{content:'';width:0;height:0;position:absolute;top:2px;left:-10px;border:5px solid transparent;border-right-color:#333}
184
- .is-rtl.flowplayer .fp-embed-code{left:auto;right:40px;}
185
- .is-rtl.flowplayer .fp-embed-code:before{left:auto;right:-10px;border-right-color:transparent;border-left-color:#333}
186
- .flowplayer .fp-embed-code textarea{width:400px;height:16px;font-family:monaco,"courier new",verdana;color:#777;white-space:nowrap;resize:none;overflow:hidden;border:0;outline:0;background-color:transparent;color:#ccc}
187
- .flowplayer .fp-embed-code label{display:block;color:#999}
188
- .flowplayer.is-embedding .fp-embed,.flowplayer.is-embedding .fp-embed-code{display:block;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
189
- .flowplayer.aside-time .fp-embed{left:110px;}
190
- .is-rtl.flowplayer.aside-time .fp-embed{left:auto;right:110px}
191
- .flowplayer.aside-time .fp-embed-code{left:140px;}
192
- .is-rtl.flowplayer.aside-time .fp-embed-code{left:auto;right:140px}
193
- .flowplayer.aside-time.is-embedding .fp-time{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
194
- .flowplayer.is-long.aside-time .fp-embed{left:130px;}
195
- .is-rtl.flowplayer.is-long.aside-time .fp-embed{left:auto;right:130px}
196
- .flowplayer.no-time .fp-embed{left:12px !important;}
197
- .is-rtl.flowplayer.no-time .fp-embed{left:auto;right:12px !important}
198
- .flowplayer.is-live .fp-timeline,.flowplayer.is-live .fp-duration,.flowplayer.is-live .fp-remaining{display:none}
199
- .flowplayer .fp-context-menu{position:absolute;display:none;z-index:1001;background-color:#fff;padding:10px;border:1px solid #aaa;-webkit-box-shadow:0 0 4px #888;-moz-box-shadow:0 0 4px #888;box-shadow:0 0 4px #888;width:170px;}
200
- .flowplayer .fp-context-menu li{text-align:center;padding:10px;color:#444;margin:0 -10px 0 -10px;}
201
- .flowplayer .fp-context-menu li a{color:#00a7c8;font-size:110%}
202
- .flowplayer .fp-context-menu li:hover:not(.copyright){background-color:#eee}
203
- .flowplayer .fp-context-menu li.copyright{margin:0;padding-left:110px;background-image:url("img/flowplayer.png");background-repeat:no-repeat;background-size:100px 20px;background-position:5px 5px;border-bottom:1px solid #bbb;}
204
- @media (-webkit-min-device-pixel-ratio: 2){.flowplayer .fp-context-menu li.copyright{background-image:url("img/flowplayer@2x.png")}
205
- }@-moz-keyframes pulse{0%{opacity:0}
206
- 100%{opacity:1}
207
- }@-webkit-keyframes pulse{0%{opacity:0}
208
- 100%{opacity:1}
209
- }@-o-keyframes pulse{0%{opacity:0}
210
- 100%{opacity:1}
211
- }@-ms-keyframes pulse{0%{opacity:0}
212
- 100%{opacity:1}
213
- }@keyframes pulse{0%{opacity:0}
214
- 100%{opacity:1}
215
- }.flowplayer .fp-controls{background-color:#111}
216
- .flowplayer .fp-timeline,.flowplayer .fp-volumeslider{background-color:#555;background-image:-moz-linear-gradient(rgba(255,255,255,0.01),rgba(255,255,255,0.3));background-image:-webkit-gradient(linear,0 0,0 100%,from(rgba(255,255,255,0.01)),to(rgba(255,255,255,0.3)))}
217
- .flowplayer .fp-buffer{background-color:#eee}
218
- .flowplayer .fp-progress{background-color:#008000}
219
- .flowplayer.is-touch.is-mouseover .fp-progress:before{background-color:#008000}
220
- .flowplayer .fp-volumelevel{background-color:#fff}
221
- .flowplayer .fp-mute{display:block;width:38px;height:20px;background-position:0 -79px;}
222
- .is-rtl.flowplayer .fp-mute{background-position:0 -79px}
223
- .is-muted.flowplayer .fp-mute{background-position:0 -109px;opacity:.85;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=85)}
224
- .flowplayer .fp-play{background-position:9px -20px;}
225
- .is-rtl.flowplayer .fp-play{background-position:18px -20px}
226
- .is-paused.flowplayer .fp-play{background-position:9px 11px;}
227
- .is-rtl.is-paused.flowplayer .fp-play{background-position:18px 11px}
228
- .flowplayer .fp-timeline,.flowplayer .fp-volumeslider{border:1px inset;border-color:rgba(0,0,0,0.3) rgba(17,17,17,0.05)}
229
- .flowplayer .fp-controls,.flowplayer .fp-progress{background-image:-moz-linear-gradient(rgba(255,255,255,0.3),rgba(255,255,255,0.01));background-image:-webkit-gradient(linear,0 0,0 100%,from(rgba(255,255,255,0.3)),to(rgba(255,255,255,0.01)))}
230
- .flowplayer .fp-timeline,.flowplayer .fp-progress,.flowplayer .fp-buffer,.flowplayer .fp-volumeslider,.flowplayer .fp-volumelevel{-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}
231
- .flowplayer.color-light .fp-controls{background-color:#eee;background-image:-moz-linear-gradient(rgba(0,0,0,0.01),rgba(0,0,0,0.3));background-image:-webkit-gradient(linear,0 0,0 100%,from(rgba(0,0,0,0.01)),to(rgba(0,0,0,0.3)))}
232
- .flowplayer.color-light .fp-timeline,.flowplayer.color-light .fp-volumeslider{border-color:#eee #ccc}
233
- .flowplayer.color-alt .fp-progress,.flowplayer.color-alt .fp-volumelevel{background-color:#111}
234
- .flowplayer.color-alt.is-touch.is-mouseover .fp-progress:before{background-color:#111}
235
- .flowplayer.color-alt2 .fp-progress,.flowplayer.color-alt2 .fp-volumelevel{background-color:#900}
236
- .flowplayer.color-alt2.is-touch.is-mouseover .fp-progress:before{background-color:#900}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/skin/skin.css ADDED
@@ -0,0 +1,1010 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @charset "UTF-8";
2
+ @font-face {
3
+ font-family: flowplayer;
4
+ src: url("icons/flowplayer.eot?#iefix") format("embedded-opentype"), url("icons/flowplayer.woff2") format("woff2"), url("icons/flowplayer.woff") format("woff"); }
5
+
6
+ .fp-icon {
7
+ display: inline-block; }
8
+ .fp-icon:before {
9
+ font-family: flowplayer;
10
+ font-size: 1.7em; }
11
+
12
+ .fp-airplay:before {
13
+ content: "\e001"; }
14
+
15
+ .fp-fullscreen:before {
16
+ content: "\e002"; }
17
+
18
+ .fp-checked:before {
19
+ content: "\e003"; }
20
+
21
+ .fp-embed:before {
22
+ content: "\e004";
23
+ color: #fff; }
24
+
25
+ .fp-chromecast:before {
26
+ content: "\e005"; }
27
+
28
+ .fp-email:before {
29
+ content: "\e006"; }
30
+
31
+ .fp-playbtn:before {
32
+ content: "\e007"; }
33
+
34
+ .fp-share:before {
35
+ content: "\e009"; }
36
+
37
+ .fp-share2:before {
38
+ content: "\e00a"; }
39
+
40
+ .fp-twitter:before {
41
+ content: "\e00c";
42
+ color: #1da1f2; }
43
+
44
+ .fp-facebook:before {
45
+ content: "\e00a";
46
+ color: #3b5998; }
47
+
48
+ .fp-volumebtn:before {
49
+ content: "\e00b"; }
50
+
51
+ .fp-volume-off:before {
52
+ content: "\e00d"; }
53
+
54
+ .fp-unload:before {
55
+ content: "\e00f"; }
56
+
57
+ .fp-prevbtn:before {
58
+ content: "\e011"; }
59
+
60
+ .fp-nextbtn:before {
61
+ content: "\e012"; }
62
+
63
+ .flowplayer.is-mouseover .fp-captions, .flowplayer.is-paused .fp-captions {
64
+ bottom: 3em; }
65
+
66
+ .flowplayer.is-poster .fp-engine {
67
+ filter: alpha(opacity=0);
68
+ opacity: 0; }
69
+
70
+ .flowplayer.is-loading .fp-engine {
71
+ top: -9999em; }
72
+
73
+ .flowplayer.is-loading .fp-ui .fp-header, .flowplayer.is-loading .fp-ui .fp-controls {
74
+ filter: alpha(opacity=0);
75
+ opacity: 0; }
76
+
77
+ .flowplayer.is-splash .fp-ui > *, .flowplayer.is-poster .fp-ui > * {
78
+ display: none; }
79
+
80
+ .flowplayer.is-splash .fp-ui > .fp-play, .flowplayer.is-poster .fp-ui > .fp-play {
81
+ display: block; }
82
+
83
+ .flowplayer.is-splash.is-loading .fp-ui > .fp-play, .flowplayer.is-poster.is-loading .fp-ui > .fp-play {
84
+ display: none; }
85
+
86
+ .flowplayer.is-poster .fp-engine {
87
+ left: -9999em;
88
+ top: -9999em; }
89
+
90
+ .flowplayer.is-disabled .fp-color {
91
+ background-color: #999; }
92
+
93
+ .flowplayer.has-title .fp-header {
94
+ top: 0;
95
+ text-align: right; }
96
+
97
+ .flowplayer.is-fullscreen {
98
+ top: 0 !important;
99
+ left: 0 !important;
100
+ border: 0 !important;
101
+ margin: 0 !important;
102
+ width: 100% !important;
103
+ height: 100% !important;
104
+ max-width: 100% !important;
105
+ z-index: 99999 !important;
106
+ -webkit-box-shadow: 0 !important;
107
+ box-shadow: 0 !important;
108
+ background-image: none !important;
109
+ background-color: #333; }
110
+ .flowplayer.is-fullscreen .fp-player {
111
+ background-color: #333; }
112
+ .flowplayer.is-fullscreen .fp-fullscreen:before {
113
+ content: "\e016"; }
114
+
115
+ .flowplayer.is-fullscreen.fp-outlined .fp-fullscreen:before, .flowplayer.is-fullscreen.fp-minimal .fp-fullscreen:before {
116
+ content: "\e216"; }
117
+
118
+ .flowplayer.is-fullscreen.fp-edgy .fp-fullscreen:before {
119
+ content: "\e116"; }
120
+
121
+ .flowplayer.is-fullscreen.fp-edgy.fp-outlined .fp-fullscreen:before, .flowplayer.is-fullscreen.fp-edgy.fp-minimal .fp-fullscreen:before {
122
+ content: "\e316"; }
123
+
124
+ .flowplayer.is-loading .fp-waiting svg, .flowplayer.is-loading .fp-waiting p, .flowplayer.is-seeking .fp-waiting svg, .flowplayer.is-seeking .fp-waiting p {
125
+ filter: alpha(opacity=100);
126
+ opacity: 1; }
127
+
128
+ .flowplayer.is-loading .fp-play, .flowplayer.is-seeking .fp-play {
129
+ display: none !important; }
130
+
131
+ .flowplayer.is-playing {
132
+ background-image: none !important; }
133
+ .flowplayer.is-playing .fp-playbtn:before {
134
+ content: "\e008"; }
135
+
136
+ .flowplayer.is-playing.fp-outlined .fp-playbtn:before, .flowplayer.is-playing.fp-minimal .fp-playbtn:before {
137
+ content: "\e208"; }
138
+
139
+ .flowplayer.is-playing.fp-edgy .fp-playbtn:before {
140
+ content: "\e108"; }
141
+
142
+ .flowplayer.is-playing.fp-edgy.fp-outlined .fp-playbtn:before, .flowplayer.is-playing.fp-edgy.fp-minimal .fp-playbtn:before {
143
+ content: "\e308"; }
144
+
145
+ .flowplayer.is-muted .fp-volumebtn:before {
146
+ content: "\e00d"; }
147
+
148
+ .flowplayer.is-muted.fp-outlined .fp-volumebtn:before, .flowplayer.is-muted.fp-minimal .fp-volumebtn:before {
149
+ content: "\e20d"; }
150
+
151
+ .flowplayer.is-muted.fp-edgy .fp-volumebtn:before {
152
+ content: "\e10d"; }
153
+
154
+ .flowplayer.is-muted.fp-edgy.fp-outlined .fp-volumebtn:before, .flowplayer.is-muted.fp-edgy.fp-minimal .fp-volumebtn:before {
155
+ content: "\e30d"; }
156
+
157
+ .flowplayer.is-inverted .fp-duration {
158
+ display: none; }
159
+
160
+ .flowplayer.is-inverted .fp-remaining {
161
+ display: block; }
162
+
163
+ .flowplayer.is-closeable .fp-header .fp-unload {
164
+ display: block; }
165
+
166
+ .flowplayer.is-error {
167
+ background-color: #aaa; }
168
+ .flowplayer.is-error .fp-ui {
169
+ filter: alpha(opacity=100);
170
+ opacity: 1; }
171
+
172
+ .flowplayer.is-live .fp-timeline {
173
+ visibility: hidden; }
174
+
175
+ .flowplayer.is-live.is-dvr .fp-timeline {
176
+ visibility: visible; }
177
+
178
+ .flowplayer.is-live.is-dvr.is-live-position .fp-duration {
179
+ color: #00abcd; }
180
+
181
+ .flowplayer.is-live .fp-timestamp {
182
+ display: none !important; }
183
+
184
+ .flowplayer.is-flash-disabled .fp-waiting {
185
+ display: none !important; }
186
+
187
+ .flowplayer.is-flash-disabled .fp-ui {
188
+ height: auto;
189
+ background: none;
190
+ filter: alpha(opacity=100);
191
+ opacity: 1; }
192
+ .flowplayer.is-flash-disabled .fp-ui .fp-header, .flowplayer.is-flash-disabled .fp-ui .fp-controls {
193
+ display: none; }
194
+
195
+ .flowplayer.is-flash-disabled .fp-engine {
196
+ top: 0; }
197
+
198
+ .flowplayer.no-buffer .fp-ui .fp-controls .fp-timeline .fp-buffer {
199
+ display: none; }
200
+
201
+ .flowplayer.no-volume .fp-volumebar {
202
+ display: none; }
203
+
204
+ .flowplayer.fp-mute .fp-volumebtn {
205
+ display: inline-block; }
206
+
207
+ @-webkit-keyframes pulse {
208
+ 0% {
209
+ filter: alpha(opacity=0);
210
+ opacity: 0; }
211
+ 100% {
212
+ filter: alpha(opacity=100);
213
+ opacity: 1; } }
214
+
215
+ @keyframes pulse {
216
+ 0% {
217
+ filter: alpha(opacity=0);
218
+ opacity: 0; }
219
+ 100% {
220
+ filter: alpha(opacity=100);
221
+ opacity: 1; } }
222
+
223
+ .flowplayer .fp-chromecast-engine {
224
+ position: absolute;
225
+ display: none;
226
+ top: 0;
227
+ bottom: 0;
228
+ right: 0;
229
+ left: 0;
230
+ color: #fff; }
231
+ .flowplayer .fp-chromecast-engine .fp-chromecast-engine-status {
232
+ font-size: 150%;
233
+ text-align: center; }
234
+ .flowplayer .fp-chromecast-engine .fp-chromecast-engine-icon {
235
+ -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiIG9wYWNpdHk9Ii4xIi8+CiAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+CiAgICA8cGF0aCBkPSJNMSAxOHYzaDNjMC0xLjY2LTEuMzQtMy0zLTN6bTAtNHYyYzIuNzYgMCA1IDIuMjQgNSA1aDJjMC0zLjg3LTMuMTMtNy03LTd6bTE4LTdINXYxLjYzYzMuOTYgMS4yOCA3LjA5IDQuNDEgOC4zNyA4LjM3SDE5Vjd6TTEgMTB2MmM0Ljk3IDAgOSA0LjAzIDkgOWgyYzAtNi4wOC00LjkzLTExLTExLTExem0yMC03SDNjLTEuMSAwLTIgLjktMiAydjNoMlY1aDE4djE0aC03djJoN2MxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yeiIvPgo8L3N2Zz4=");
236
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiIG9wYWNpdHk9Ii4xIi8+CiAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+CiAgICA8cGF0aCBkPSJNMSAxOHYzaDNjMC0xLjY2LTEuMzQtMy0zLTN6bTAtNHYyYzIuNzYgMCA1IDIuMjQgNSA1aDJjMC0zLjg3LTMuMTMtNy03LTd6bTE4LTdINXYxLjYzYzMuOTYgMS4yOCA3LjA5IDQuNDEgOC4zNyA4LjM3SDE5Vjd6TTEgMTB2MmM0Ljk3IDAgOSA0LjAzIDkgOWgyYzAtNi4wOC00LjkzLTExLTExLTExem0yMC03SDNjLTEuMSAwLTIgLjktMiAydjNoMlY1aDE4djE0aC03djJoN2MxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yeiIvPgo8L3N2Zz4=");
237
+ -webkit-mask-size: 100% 100%;
238
+ background-color: #fff;
239
+ margin: 10% auto 2em;
240
+ height: 5em;
241
+ width: 5em; }
242
+
243
+ .flowplayer.is-chromecast {
244
+ background-color: #333; }
245
+ .flowplayer.is-chromecast .fp-chromecast-engine {
246
+ display: block; }
247
+ .flowplayer.is-chromecast .fp-flash-disabled {
248
+ display: none !important; }
249
+ .flowplayer.is-chromecast .fp-engine {
250
+ left: -9999em;
251
+ top: -9999em;
252
+ bottom: auto;
253
+ right: auto; }
254
+
255
+ .flowplayer.fp-default-playlist .fp-prev, .flowplayer.fp-default-playlist .fp-next {
256
+ position: absolute;
257
+ top: 45%;
258
+ filter: alpha(opacity=30);
259
+ opacity: 0.3;
260
+ -webkit-transition: opacity 0.2s;
261
+ transition: opacity 0.2s; }
262
+ .flowplayer.fp-default-playlist .fp-prev:hover, .flowplayer.fp-default-playlist .fp-next:hover {
263
+ filter: alpha(opacity=100);
264
+ opacity: 1; }
265
+ .flowplayer.fp-default-playlist .fp-prev:before, .flowplayer.fp-default-playlist .fp-next:before {
266
+ font-family: flowplayer;
267
+ font-size: 2.8em; }
268
+
269
+ .flowplayer.fp-default-playlist .fp-prev {
270
+ left: 0.4em; }
271
+ .flowplayer.fp-default-playlist .fp-prev:before {
272
+ content: "\e011"; }
273
+
274
+ .flowplayer.fp-default-playlist .fp-next {
275
+ right: 0.4em; }
276
+ .flowplayer.fp-default-playlist .fp-next:before {
277
+ content: "\e012"; }
278
+
279
+ .flowplayer.fp-default-playlist .fp-playlist {
280
+ position: absolute;
281
+ right: 0.4em;
282
+ bottom: 3em;
283
+ width: 100%;
284
+ text-align: center; }
285
+ .flowplayer.fp-default-playlist .fp-playlist a {
286
+ background-color: #fff;
287
+ height: 0.8em;
288
+ border-radius: 50%;
289
+ width: 0.8em;
290
+ filter: alpha(opacity=70);
291
+ opacity: 0.7;
292
+ display: inline-block;
293
+ -webkit-transition: -webkit-transform 0.2s;
294
+ transition: -webkit-transform 0.2s;
295
+ transition: transform 0.2s;
296
+ transition: transform 0.2s, -webkit-transform 0.2s; }
297
+ .flowplayer.fp-default-playlist .fp-playlist a:hover {
298
+ -webkit-transform: scale(1.2, 1.2);
299
+ -ms-transform: scale(1.2, 1.2);
300
+ transform: scale(1.2, 1.2); }
301
+ .flowplayer.fp-default-playlist .fp-playlist a.is-active {
302
+ filter: alpha(opacity=100);
303
+ opacity: 1; }
304
+
305
+ .flowplayer.fp-default-playlist.fp-edgy .fp-prev:before {
306
+ content: "\e111"; }
307
+
308
+ .flowplayer.fp-default-playlist.fp-edgy .fp-next:before {
309
+ content: "\e112"; }
310
+
311
+ .flowplayer.fp-default-playlist.fp-outlined .fp-prev:before, .flowplayer.fp-default-playlist.fp-minimal .fp-prev:before {
312
+ content: "\e211"; }
313
+
314
+ .flowplayer.fp-default-playlist.fp-outlined .fp-next:before, .flowplayer.fp-default-playlist.fp-minimal .fp-next:before {
315
+ content: "\e212"; }
316
+
317
+ .flowplayer.fp-default-playlist.fp-edgy.fp-outlined .fp-prev:before, .flowplayer.fp-default-playlist.fp-edgy.fp-minimal .fp-prev:before {
318
+ content: "\e311"; }
319
+
320
+ .flowplayer.fp-default-playlist.fp-edgy.fp-outlined .fp-next:before, .flowplayer.fp-default-playlist.fp-edgy.fp-minimal .fp-next:before {
321
+ content: "\e312"; }
322
+
323
+ .flowplayer.fp-custom-playlist {
324
+ overflow: visible; }
325
+ .flowplayer.fp-custom-playlist .fp-playlist, .flowplayer.fp-custom-playlist.is-splash .fp-playlist, .flowplayer.fp-custom-playlist.is-poster .fp-playlist, .flowplayer.fp-custom-playlist.is-loading .fp-playlist {
326
+ display: block;
327
+ filter: alpha(opacity=100);
328
+ opacity: 1; }
329
+
330
+ .flowplayer.fp-edgy .fp-play svg.fp-play-rounded-fill, .flowplayer.fp-edgy .fp-play svg.fp-pause-rounded-fill, .flowplayer.fp-edgy .fp-play svg.fp-play-rounded-outline, .flowplayer.fp-edgy .fp-play svg.fp-pause-rounded-outline, .flowplayer.fp-edgy .fp-play svg.fp-loading-rounded-outline, .flowplayer.fp-edgy .fp-play svg.fp-loading-rounded-fill, .flowplayer.fp-edgy .fp-pause svg.fp-play-rounded-fill, .flowplayer.fp-edgy .fp-pause svg.fp-pause-rounded-fill, .flowplayer.fp-edgy .fp-pause svg.fp-play-rounded-outline, .flowplayer.fp-edgy .fp-pause svg.fp-pause-rounded-outline, .flowplayer.fp-edgy .fp-pause svg.fp-loading-rounded-outline, .flowplayer.fp-edgy .fp-pause svg.fp-loading-rounded-fill, .flowplayer.fp-edgy .fp-waiting svg.fp-play-rounded-fill, .flowplayer.fp-edgy .fp-waiting svg.fp-pause-rounded-fill, .flowplayer.fp-edgy .fp-waiting svg.fp-play-rounded-outline, .flowplayer.fp-edgy .fp-waiting svg.fp-pause-rounded-outline, .flowplayer.fp-edgy .fp-waiting svg.fp-loading-rounded-outline, .flowplayer.fp-edgy .fp-waiting svg.fp-loading-rounded-fill {
331
+ display: none !important; }
332
+
333
+ .flowplayer.fp-edgy .fp-play svg.fp-play-sharp-fill, .flowplayer.fp-edgy .fp-play svg.fp-pause-sharp-fill, .flowplayer.fp-edgy .fp-play svg.fp-loading-sharp-fill, .flowplayer.fp-edgy .fp-pause svg.fp-play-sharp-fill, .flowplayer.fp-edgy .fp-pause svg.fp-pause-sharp-fill, .flowplayer.fp-edgy .fp-pause svg.fp-loading-sharp-fill, .flowplayer.fp-edgy .fp-waiting svg.fp-play-sharp-fill, .flowplayer.fp-edgy .fp-waiting svg.fp-pause-sharp-fill, .flowplayer.fp-edgy .fp-waiting svg.fp-loading-sharp-fill {
334
+ display: block; }
335
+
336
+ .flowplayer.fp-edgy.fp-outlined .fp-play svg.fp-play-sharp-fill, .flowplayer.fp-edgy.fp-minimal .fp-play svg.fp-play-sharp-fill, .flowplayer.fp-edgy.fp-outlined .fp-play svg.fp-pause-sharp-fill, .flowplayer.fp-edgy.fp-minimal .fp-play svg.fp-pause-sharp-fill, .flowplayer.fp-edgy.fp-outlined .fp-play svg.fp-loading-sharp-fill, .flowplayer.fp-edgy.fp-minimal .fp-play svg.fp-loading-sharp-fill, .flowplayer.fp-edgy.fp-outlined .fp-pause svg.fp-play-sharp-fill, .flowplayer.fp-edgy.fp-minimal .fp-pause svg.fp-play-sharp-fill, .flowplayer.fp-edgy.fp-outlined .fp-pause svg.fp-pause-sharp-fill, .flowplayer.fp-edgy.fp-minimal .fp-pause svg.fp-pause-sharp-fill, .flowplayer.fp-edgy.fp-outlined .fp-pause svg.fp-loading-sharp-fill, .flowplayer.fp-edgy.fp-minimal .fp-pause svg.fp-loading-sharp-fill, .flowplayer.fp-edgy.fp-outlined .fp-waiting svg.fp-play-sharp-fill, .flowplayer.fp-edgy.fp-minimal .fp-waiting svg.fp-play-sharp-fill, .flowplayer.fp-edgy.fp-outlined .fp-waiting svg.fp-pause-sharp-fill, .flowplayer.fp-edgy.fp-minimal .fp-waiting svg.fp-pause-sharp-fill, .flowplayer.fp-edgy.fp-outlined .fp-waiting svg.fp-loading-sharp-fill, .flowplayer.fp-edgy.fp-minimal .fp-waiting svg.fp-loading-sharp-fill {
337
+ display: none; }
338
+
339
+ .flowplayer.fp-edgy.fp-outlined .fp-play svg.fp-play-sharp-outline, .flowplayer.fp-edgy.fp-minimal .fp-play svg.fp-play-sharp-outline, .flowplayer.fp-edgy.fp-outlined .fp-play svg.fp-pause-sharp-outline, .flowplayer.fp-edgy.fp-minimal .fp-play svg.fp-pause-sharp-outline, .flowplayer.fp-edgy.fp-outlined .fp-play svg.fp-loading-sharp-outline, .flowplayer.fp-edgy.fp-minimal .fp-play svg.fp-loading-sharp-outline, .flowplayer.fp-edgy.fp-outlined .fp-pause svg.fp-play-sharp-outline, .flowplayer.fp-edgy.fp-minimal .fp-pause svg.fp-play-sharp-outline, .flowplayer.fp-edgy.fp-outlined .fp-pause svg.fp-pause-sharp-outline, .flowplayer.fp-edgy.fp-minimal .fp-pause svg.fp-pause-sharp-outline, .flowplayer.fp-edgy.fp-outlined .fp-pause svg.fp-loading-sharp-outline, .flowplayer.fp-edgy.fp-minimal .fp-pause svg.fp-loading-sharp-outline, .flowplayer.fp-edgy.fp-outlined .fp-waiting svg.fp-play-sharp-outline, .flowplayer.fp-edgy.fp-minimal .fp-waiting svg.fp-play-sharp-outline, .flowplayer.fp-edgy.fp-outlined .fp-waiting svg.fp-pause-sharp-outline, .flowplayer.fp-edgy.fp-minimal .fp-waiting svg.fp-pause-sharp-outline, .flowplayer.fp-edgy.fp-outlined .fp-waiting svg.fp-loading-sharp-outline, .flowplayer.fp-edgy.fp-minimal .fp-waiting svg.fp-loading-sharp-outline {
340
+ display: block; }
341
+
342
+ .flowplayer.fp-edgy, .flowplayer.fp-edgy .fp-menu, .flowplayer.fp-edgy .fp-captions p, .flowplayer.fp-edgy .fp-textarea, .flowplayer.fp-edgy .fp-bar, .flowplayer.fp-edgy .fp-bar-slider, .flowplayer.fp-edgy .fp-bar > *, .flowplayer.fp-edgy .fp-bar-slider > *, .flowplayer.fp-edgy .fp-timestamp {
343
+ border-radius: 0; }
344
+
345
+ .flowplayer.fp-edgy .fp-airplay:before {
346
+ content: "\e101"; }
347
+
348
+ .flowplayer.fp-edgy .fp-fullscreen:before {
349
+ content: "\e102"; }
350
+
351
+ .flowplayer.fp-edgy .fp-checked:before {
352
+ content: "\e103"; }
353
+
354
+ .flowplayer.fp-edgy .fp-embed:before {
355
+ content: "\e104"; }
356
+
357
+ .flowplayer.fp-edgy .fp-chromecast:before {
358
+ content: "\e105"; }
359
+
360
+ .flowplayer.fp-edgy .fp-email:before {
361
+ content: "\e106"; }
362
+
363
+ .flowplayer.fp-edgy .fp-playbtn:before {
364
+ content: "\e107"; }
365
+
366
+ .flowplayer.fp-edgy .fp-share:before {
367
+ content: "\e109"; }
368
+
369
+ .flowplayer.fp-edgy .fp-share2:before {
370
+ content: "\e10a"; }
371
+
372
+ .flowplayer.fp-edgy .fp-twitter:before {
373
+ content: "\e10c"; }
374
+
375
+ .flowplayer.fp-edgy .fp-facebook:before {
376
+ content: "\e10a"; }
377
+
378
+ .flowplayer.fp-edgy .fp-volumebtn:before {
379
+ content: "\e10b"; }
380
+
381
+ .flowplayer.fp-edgy .fp-volume-off:before {
382
+ content: "\e10d"; }
383
+
384
+ .flowplayer.fp-edgy .fp-unload:before {
385
+ content: "\e10f"; }
386
+
387
+ .flowplayer.fp-edgy .fp-prevbtn:before {
388
+ content: "\e111"; }
389
+
390
+ .flowplayer.fp-edgy .fp-nextbtn:before {
391
+ content: "\e112"; }
392
+
393
+ .flowplayer.fp-edgy.fp-outlined .fp-airplay:before, .flowplayer.fp-edgy.fp-minimal .fp-airplay:before {
394
+ content: "\e301"; }
395
+
396
+ .flowplayer.fp-edgy.fp-outlined .fp-fullscreen:before, .flowplayer.fp-edgy.fp-minimal .fp-fullscreen:before {
397
+ content: "\e302"; }
398
+
399
+ .flowplayer.fp-edgy.fp-outlined .fp-checked:before, .flowplayer.fp-edgy.fp-minimal .fp-checked:before {
400
+ content: "\e303"; }
401
+
402
+ .flowplayer.fp-edgy.fp-outlined .fp-embed:before, .flowplayer.fp-edgy.fp-minimal .fp-embed:before {
403
+ content: "\e304"; }
404
+
405
+ .flowplayer.fp-edgy.fp-outlined .fp-chromecast:before, .flowplayer.fp-edgy.fp-minimal .fp-chromecast:before {
406
+ content: "\e305"; }
407
+
408
+ .flowplayer.fp-edgy.fp-outlined .fp-email:before, .flowplayer.fp-edgy.fp-minimal .fp-email:before {
409
+ content: "\e306"; }
410
+
411
+ .flowplayer.fp-edgy.fp-outlined .fp-playbtn:before, .flowplayer.fp-edgy.fp-minimal .fp-playbtn:before {
412
+ content: "\e307"; }
413
+
414
+ .flowplayer.fp-edgy.fp-outlined .fp-share:before, .flowplayer.fp-edgy.fp-minimal .fp-share:before {
415
+ content: "\e309"; }
416
+
417
+ .flowplayer.fp-edgy.fp-outlined .fp-share2:before, .flowplayer.fp-edgy.fp-minimal .fp-share2:before {
418
+ content: "\e30a"; }
419
+
420
+ .flowplayer.fp-edgy.fp-outlined .fp-twitter:before, .flowplayer.fp-edgy.fp-minimal .fp-twitter:before {
421
+ content: "\e30c"; }
422
+
423
+ .flowplayer.fp-edgy.fp-outlined .fp-facebook:before, .flowplayer.fp-edgy.fp-minimal .fp-facebook:before {
424
+ content: "\e30a"; }
425
+
426
+ .flowplayer.fp-edgy.fp-outlined .fp-volumebtn:before, .flowplayer.fp-edgy.fp-minimal .fp-volumebtn:before {
427
+ content: "\e30b"; }
428
+
429
+ .flowplayer.fp-edgy.fp-outlined .fp-volume-off:before, .flowplayer.fp-edgy.fp-minimal .fp-volume-off:before {
430
+ content: "\e30d"; }
431
+
432
+ .flowplayer.fp-edgy.fp-outlined .fp-unload:before, .flowplayer.fp-edgy.fp-minimal .fp-unload:before {
433
+ content: "\e30f"; }
434
+
435
+ .flowplayer.fp-edgy.fp-outlined .fp-prevbtn:before, .flowplayer.fp-edgy.fp-minimal .fp-prevbtn:before {
436
+ content: "\e311"; }
437
+
438
+ .flowplayer.fp-edgy.fp-outlined .fp-nextbtn:before, .flowplayer.fp-edgy.fp-minimal .fp-nextbtn:before {
439
+ content: "\e312"; }
440
+
441
+ .flowplayer.no-svg .fp-ui .fp-header, .flowplayer.no-svg .fp-ui .fp-controls {
442
+ background-color: #333; }
443
+
444
+ .flowplayer.no-svg .fp-ui .fp-play.fp-visible {
445
+ background-color: #ccc;
446
+ position: absolute;
447
+ padding-top: 17%;
448
+ top: 0;
449
+ left: 0;
450
+ right: 0;
451
+ bottom: 0; }
452
+ .flowplayer.no-svg .fp-ui .fp-play.fp-visible svg {
453
+ display: none; }
454
+ .flowplayer.no-svg .fp-ui .fp-play.fp-visible .fp-playbtn {
455
+ display: inline; }
456
+
457
+ .flowplayer .fp-player, .flowplayer .fp-ui, .flowplayer .fp-header, .flowplayer .fp-captions, .flowplayer .fp-controls {
458
+ position: absolute;
459
+ width: 100%; }
460
+
461
+ .flowplayer {
462
+ font-family: avenir, sans-serif;
463
+ font-size: 16px;
464
+ position: relative;
465
+ max-height: 100%;
466
+ overflow: hidden;
467
+ border-radius: .24em;
468
+ background-position: center;
469
+ background-repeat: no-repeat;
470
+ background-size: contain;
471
+ zoom: 1 !important;
472
+ width: 100%;
473
+ display: inline-block; }
474
+ .flowplayer .fp-hidden {
475
+ display: none; }
476
+ .flowplayer .fp-shown {
477
+ display: block !important; }
478
+ .flowplayer * {
479
+ -webkit-box-sizing: border-box;
480
+ -moz-box-sizing: border-box;
481
+ box-sizing: border-box; }
482
+ .flowplayer.is-ready:not(.is-poster) {
483
+ background-color: #333; }
484
+ .flowplayer .fp-engine {
485
+ display: block;
486
+ width: 100%;
487
+ position: absolute;
488
+ top: 0;
489
+ bottom: 0;
490
+ left: 0;
491
+ right: 0;
492
+ height: 100%;
493
+ width: 100%; }
494
+ .flowplayer video.fp-engine::-webkit-media-controls {
495
+ display: none !important; }
496
+ .flowplayer .fp-player {
497
+ position: absolute;
498
+ bottom: 0;
499
+ top: 0; }
500
+ .flowplayer .fp-waiting p {
501
+ filter: alpha(opacity=0);
502
+ opacity: 0;
503
+ color: #ccc;
504
+ font-weight: bold; }
505
+ .flowplayer .fp-ui {
506
+ height: 100%;
507
+ top: 0;
508
+ background-image: none;
509
+ -webkit-transition: background-image .1s;
510
+ transition: background-image .1s;
511
+ text-align: center;
512
+ cursor: pointer;
513
+ color: #fff; }
514
+ .flowplayer .fp-ui a, .flowplayer .fp-ui strong {
515
+ color: inherit !important;
516
+ font-style: normal !important;
517
+ text-decoration: none !important; }
518
+ .flowplayer .fp-ui strong {
519
+ font-weight: bold !important; }
520
+ .flowplayer .fp-ui > * {
521
+ -webkit-transition: opacity .1s;
522
+ transition: opacity .1s;
523
+ filter: alpha(opacity=0);
524
+ opacity: 0; }
525
+ .flowplayer.fp-ui-shown .fp-ui, .flowplayer.is-paused .fp-ui, .flowplayer.is-mouseover .fp-ui, .flowplayer.is-loading .fp-ui {
526
+ background-image: -webkit-gradient(linear, left bottom, left top, from(rgba(0, 0, 0, 0.25)), color-stop(15%, transparent));
527
+ background-image: -webkit-linear-gradient(bottom, rgba(0, 0, 0, 0.25), transparent 15%);
528
+ background-image: linear-gradient(to top, rgba(0, 0, 0, 0.25), transparent 15%); }
529
+ .flowplayer.fp-ui-shown .fp-ui > *, .flowplayer.is-paused .fp-ui > *, .flowplayer.is-mouseover .fp-ui > *, .flowplayer.is-loading .fp-ui > * {
530
+ filter: alpha(opacity=100);
531
+ opacity: 1; }
532
+ .flowplayer .fp-header {
533
+ top: 0;
534
+ background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.25)), to(transparent));
535
+ background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.25), transparent);
536
+ background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.25), transparent);
537
+ text-align: left;
538
+ height: 3.6em;
539
+ -webkit-transition: opacity 0.3s;
540
+ transition: opacity 0.3s;
541
+ padding-left: .9em; }
542
+ .flowplayer .fp-header .fp-icon {
543
+ margin: .9em .9em 0 0; }
544
+ .flowplayer .fp-header .fp-icon.fp-active {
545
+ color: #ec6c4c; }
546
+ .flowplayer .fp-header .fp-fullscreen, .flowplayer .fp-header .fp-unload {
547
+ float: right; }
548
+ .flowplayer .fp-header .fp-unload {
549
+ display: none; }
550
+ .flowplayer .fp-help {
551
+ display: none; }
552
+ .flowplayer .fp-message {
553
+ background-color: rgba(0, 0, 0, 0.5);
554
+ text-align: left;
555
+ font-size: 1.2em;
556
+ overflow: hidden;
557
+ filter: alpha(opacity=0);
558
+ opacity: 0;
559
+ padding: .6em .9em;
560
+ -webkit-transition: opacity 0.3s;
561
+ transition: opacity 0.3s; }
562
+ .flowplayer .fp-message.fp-shown {
563
+ filter: alpha(opacity=100);
564
+ opacity: 1; }
565
+ .flowplayer .fp-message.fp-shown + .fp-header {
566
+ filter: alpha(opacity=0);
567
+ opacity: 0; }
568
+ .flowplayer .fp-textarea {
569
+ background-color: rgba(0, 0, 0, 0.5);
570
+ width: 80%;
571
+ position: absolute;
572
+ left: 10%;
573
+ top: 15%;
574
+ color: #fff;
575
+ outline: 0;
576
+ border-radius: .2em;
577
+ border: 0;
578
+ min-height: 60%; }
579
+ .flowplayer .fp-logo {
580
+ position: absolute;
581
+ bottom: 3em;
582
+ left: 0.9em; }
583
+ .flowplayer .fp-logo img {
584
+ width: 100%; }
585
+ .flowplayer .fp-captions {
586
+ bottom: 1.2em;
587
+ display: none;
588
+ text-align: center;
589
+ color: #fff; }
590
+ .flowplayer .fp-captions p {
591
+ background-color: rgba(0, 0, 0, 0.65);
592
+ border-radius: .2em;
593
+ font-size: 110%;
594
+ display: inline-block;
595
+ padding: .1em .3em;
596
+ margin: .1em; }
597
+ .flowplayer .fp-speed-flash {
598
+ position: absolute;
599
+ left: 0;
600
+ right: 0;
601
+ bottom: 0;
602
+ top: 0;
603
+ margin: auto;
604
+ font-size: 4em;
605
+ color: #fff;
606
+ font-weight: bold;
607
+ text-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
608
+ filter: alpha(opacity=0) !important;
609
+ opacity: 0 !important;
610
+ -webkit-transform: scale(0.8);
611
+ -ms-transform: scale(0.8);
612
+ transform: scale(0.8);
613
+ -webkit-transition: all .2s;
614
+ transition: all .2s;
615
+ width: 4em;
616
+ height: 2em;
617
+ display: none; }
618
+ .flowplayer .fp-speed-flash.fp-hilite {
619
+ filter: alpha(opacity=100) !important;
620
+ opacity: 1 !important;
621
+ -webkit-transform: scale(1);
622
+ -ms-transform: scale(1);
623
+ transform: scale(1); }
624
+ .flowplayer .fp-play .fp-playbtn, .flowplayer .fp-pause .fp-playbtn, .flowplayer .fp-waiting .fp-playbtn {
625
+ display: none; }
626
+ .flowplayer .fp-play svg, .flowplayer .fp-pause svg, .flowplayer .fp-waiting svg {
627
+ position: absolute;
628
+ pointer-events: none;
629
+ left: 0;
630
+ right: 0;
631
+ bottom: 0;
632
+ top: 0;
633
+ width: 6em;
634
+ height: 6em;
635
+ filter: alpha(opacity=0);
636
+ opacity: 0;
637
+ margin: auto;
638
+ max-height: 30%;
639
+ -webkit-transform: scale(0.8);
640
+ -ms-transform: scale(0.8);
641
+ transform: scale(0.8);
642
+ -webkit-transition: all .2s;
643
+ transition: all .2s;
644
+ display: none; }
645
+ .flowplayer .fp-play svg.fp-play-rounded-fill, .flowplayer .fp-play svg.fp-pause-rounded-fill, .flowplayer .fp-play svg.fp-loading-rounded-fill, .flowplayer .fp-pause svg.fp-play-rounded-fill, .flowplayer .fp-pause svg.fp-pause-rounded-fill, .flowplayer .fp-pause svg.fp-loading-rounded-fill, .flowplayer .fp-waiting svg.fp-play-rounded-fill, .flowplayer .fp-waiting svg.fp-pause-rounded-fill, .flowplayer .fp-waiting svg.fp-loading-rounded-fill {
646
+ display: block; }
647
+ .flowplayer .fp-play.fp-visible svg, .flowplayer .fp-pause.fp-visible svg, .flowplayer .fp-waiting.fp-visible svg {
648
+ -webkit-transform: scale(1.5);
649
+ -ms-transform: scale(1.5);
650
+ transform: scale(1.5);
651
+ filter: alpha(opacity=100);
652
+ opacity: 1; }
653
+ .flowplayer .fp-remaining {
654
+ display: none; }
655
+ .flowplayer .fp-controls {
656
+ display: -ms-flexbox;
657
+ display: -webkit-flex;
658
+ display: -webkit-box;
659
+ display: -moz-box;
660
+ display: flex;
661
+ -ms-flex-pack: justify;
662
+ -webkit-justify-content: space-around;
663
+ justify-content: space-around;
664
+ -ms-flex-align: center;
665
+ -webkit-align-items: center;
666
+ -webkit-box-align: center;
667
+ -moz-box-align: center;
668
+ align-items: center;
669
+ height: 2.4em;
670
+ bottom: 0;
671
+ z-index: 2;
672
+ padding-left: 0.3em;
673
+ padding-right: 0.3em; }
674
+ .flowplayer .fp-controls > * {
675
+ margin: 0 .6em; }
676
+ .flowplayer .fp-controls > strong {
677
+ letter-spacing: 1px; }
678
+ .flowplayer .fp-controls img {
679
+ width: 1.2em; }
680
+ .flowplayer .fp-bar, .flowplayer .fp-bar-slider {
681
+ background-color: #ccc;
682
+ background-color: rgba(255, 255, 255, 0.5);
683
+ position: relative;
684
+ cursor: col-resize;
685
+ height: .9em;
686
+ border-radius: 0.24em;
687
+ -ms-flex: 1;
688
+ -webkit-box-flex: 1;
689
+ -webkit-flex: 1;
690
+ -moz-box-flex: 1;
691
+ flex: 1; }
692
+ .flowplayer .fp-bar > *, .flowplayer .fp-bar-slider > * {
693
+ background-color: rgba(255, 255, 255, 0.6);
694
+ position: absolute;
695
+ height: 100%;
696
+ border-radius: 0.24em; }
697
+ .flowplayer .fp-bar > *.fp-progress.animated, .flowplayer .fp-bar-slider > *.fp-progress.animated {
698
+ -webkit-transition-timing-function: linear;
699
+ transition-timing-function: linear;
700
+ -webkit-transition-property: width, height;
701
+ transition-property: width, height; }
702
+ .flowplayer .fp-bar > *.fp-buffer, .flowplayer .fp-bar-slider > *.fp-buffer {
703
+ -webkit-transition: width .25s linear;
704
+ transition: width .25s linear; }
705
+ .flowplayer .fp-bar.no-animation > *, .flowplayer .no-animation.fp-bar-slider > * {
706
+ -webkit-transition: none;
707
+ transition: none; }
708
+ .flowplayer .fp-timeline {
709
+ -webkit-transition: height .2s;
710
+ transition: height .2s; }
711
+ .flowplayer .fp-cuepoint {
712
+ background-color: #000;
713
+ position: absolute;
714
+ height: 100%;
715
+ width: 2px; }
716
+ .flowplayer .fp-timestamp {
717
+ background-color: rgba(0, 0, 0, 0.65);
718
+ display: none;
719
+ border-radius: .2em;
720
+ padding: .1em .3em;
721
+ font-size: 90%;
722
+ bottom: 1.4em;
723
+ height: auto; }
724
+ .flowplayer .fp-timeline:hover .fp-timestamp {
725
+ display: inline; }
726
+ .flowplayer .fp-volume {
727
+ display: -ms-flexbox;
728
+ display: -webkit-box;
729
+ display: -webkit-flex;
730
+ display: -moz-box;
731
+ display: flex;
732
+ height: 100%;
733
+ -ms-flex-align: center;
734
+ -webkit-box-align: center;
735
+ -webkit-align-items: center;
736
+ -moz-box-align: center;
737
+ align-items: center; }
738
+ .flowplayer .fp-volumebtn {
739
+ display: none; }
740
+ .flowplayer .fp-bar-slider {
741
+ background-color: transparent;
742
+ -webkit-user-select: none;
743
+ -moz-user-select: none;
744
+ -ms-user-select: none;
745
+ user-select: none;
746
+ -webkit-transition: height .2s;
747
+ transition: height .2s;
748
+ white-space: nowrap;
749
+ -ms-flex: 1 0 auto; }
750
+ .flowplayer .fp-bar-slider em {
751
+ border-radius: 2px;
752
+ display: inline-block;
753
+ width: 5px;
754
+ height: 100%;
755
+ position: relative;
756
+ vertical-align: top;
757
+ margin-left: 3px;
758
+ -webkit-transition: -webkit-transform 0.4s;
759
+ transition: -webkit-transform 0.4s;
760
+ transition: transform 0.4s;
761
+ transition: transform 0.4s, -webkit-transform 0.4s;
762
+ -webkit-transform-origin: bottom;
763
+ -ms-transform-origin: bottom;
764
+ transform-origin: bottom;
765
+ -webkit-user-select: none;
766
+ -moz-user-select: none;
767
+ -ms-user-select: none;
768
+ user-select: none;
769
+ -webkit-transform: scale(1.1);
770
+ -ms-transform: scale(1.1);
771
+ transform: scale(1.1); }
772
+ .flowplayer .fp-bar-slider em:hover {
773
+ -webkit-transform: scaleY(1.35);
774
+ -ms-transform: scaleY(1.35);
775
+ transform: scaleY(1.35);
776
+ -webkit-transition: -webkit-transform 0.2s;
777
+ transition: -webkit-transform 0.2s;
778
+ transition: transform 0.2s;
779
+ transition: transform 0.2s, -webkit-transform 0.2s; }
780
+ .flowplayer .fp-bar-slider em.fp-grey {
781
+ background-color: rgba(255, 255, 255, 0.75); }
782
+ .flowplayer.no-flex .fp-controls {
783
+ white-space: nowrap; }
784
+ .flowplayer.no-flex .fp-controls > * {
785
+ display: inline-block;
786
+ vertical-align: center;
787
+ margin: 0 .3em; }
788
+ .flowplayer.no-flex .fp-timeline {
789
+ width: 40%; }
790
+ .flowplayer.no-flex.fp-full .fp-timeline {
791
+ margin-bottom: .6em;
792
+ height: .9em; }
793
+ .flowplayer.no-flex.fp-fat .fp-bar, .flowplayer.no-flex.fp-playful .fp-bar, .flowplayer.no-flex.fp-fat .fp-bar-slider, .flowplayer.no-flex.fp-playful .fp-bar-slider {
794
+ height: .9em !important; }
795
+ .flowplayer.fp-fat .fp-bar, .flowplayer.fp-playful .fp-bar, .flowplayer.fp-fat .fp-bar-slider, .flowplayer.fp-playful .fp-bar-slider {
796
+ height: 100%;
797
+ border-radius: 0; }
798
+ .flowplayer.fp-fat .fp-bar > *, .flowplayer.fp-playful .fp-bar > *, .flowplayer.fp-fat .fp-bar-slider > *, .flowplayer.fp-playful .fp-bar-slider > * {
799
+ border-radius: 0; }
800
+ .flowplayer.fp-fat .fp-timestamp, .flowplayer.fp-playful .fp-timestamp {
801
+ bottom: 3.2em; }
802
+ .flowplayer.fp-fat .fp-bar-slider em, .flowplayer.fp-playful .fp-bar-slider em {
803
+ -webkit-transform: scaleY(0.6);
804
+ -ms-transform: scaleY(0.6);
805
+ transform: scaleY(0.6);
806
+ -webkit-transform-origin: center;
807
+ -ms-transform-origin: center;
808
+ transform-origin: center; }
809
+ .flowplayer.fp-fat .fp-bar-slider em:hover, .flowplayer.fp-playful .fp-bar-slider em:hover {
810
+ -webkit-transform: scaleY(0.75);
811
+ -ms-transform: scaleY(0.75);
812
+ transform: scaleY(0.75); }
813
+ .flowplayer.fp-slim .fp-timeline {
814
+ height: .2em; }
815
+ .flowplayer.fp-slim .fp-controls:hover .fp-timeline {
816
+ height: .9em; }
817
+ .flowplayer.fp-slim .fp-cue {
818
+ width: 4px; }
819
+ .flowplayer.fp-slim .fp-bar-slider {
820
+ height: .2em; }
821
+ .flowplayer.fp-slim .fp-controls:hover .fp-bar-slider {
822
+ height: 0.9em; }
823
+ .flowplayer.fp-full .fp-timeline {
824
+ position: absolute;
825
+ height: .3em;
826
+ bottom: 2.8em;
827
+ margin: 0;
828
+ width: 100%;
829
+ border-radius: 0;
830
+ overflow: inherit;
831
+ left: 0; }
832
+ .flowplayer.fp-full .fp-timeline:before {
833
+ content: "";
834
+ width: 100%;
835
+ height: 1.2em;
836
+ position: absolute;
837
+ top: -1.2em;
838
+ left: 0; }
839
+ .flowplayer.fp-full .fp-controls {
840
+ height: 2.8em; }
841
+ .flowplayer.fp-full .fp-controls:hover .fp-timeline {
842
+ height: 1em; }
843
+ .flowplayer.fp-full .fp-volume {
844
+ margin-right: auto; }
845
+ .flowplayer.fp-full .fp-duration, .flowplayer.fp-full .fp-remaining {
846
+ margin-left: 0; }
847
+ .flowplayer.fp-full .fp-duration:before, .flowplayer.fp-full .fp-remaining:before {
848
+ position: relative;
849
+ content: "/";
850
+ left: -.3em; }
851
+ .flowplayer.fp-minimal .fp-controls {
852
+ background-color: transparent !important; }
853
+ .flowplayer.fp-minimal .fp-controls > * {
854
+ display: none; }
855
+ .flowplayer.fp-minimal .fp-header > * {
856
+ display: none; }
857
+ .flowplayer.fp-minimal .fp-header .fp-fullscreen {
858
+ display: inherit; }
859
+ .flowplayer.fp-minimal .fp-timeline {
860
+ height: .3em;
861
+ max-width: 12em;
862
+ width: 100%;
863
+ display: block;
864
+ margin: 0 auto;
865
+ -webkit-box-flex: 0;
866
+ -webkit-flex: none;
867
+ -moz-box-flex: 0;
868
+ -ms-flex: none;
869
+ flex: none; }
870
+ .flowplayer.fp-playful .fp-color, .flowplayer.fp-playful .fp-color-play {
871
+ background-color: #ec6c4c;
872
+ fill: #ec6c4c; }
873
+ .flowplayer.fp-playful .fp-controls {
874
+ background-color: #006680; }
875
+ .flowplayer .fp-selected:before {
876
+ content: "✓ "; }
877
+ .flowplayer .fp-menu {
878
+ background-color: rgba(0, 0, 0, 0.5);
879
+ border-radius: .24em;
880
+ position: absolute;
881
+ width: 8em;
882
+ right: .5em;
883
+ z-index: 2;
884
+ font-size: 90%;
885
+ -webkit-transition: opacity .2s, height .2s, -webkit-transform .2s;
886
+ transition: opacity .2s, height .2s, -webkit-transform .2s;
887
+ transition: opacity .2s, transform .2s, height .2s;
888
+ transition: opacity .2s, transform .2s, height .2s, -webkit-transform .2s;
889
+ -webkit-transform: scale(0.95);
890
+ -ms-transform: scale(0.95);
891
+ transform: scale(0.95);
892
+ bottom: -100%;
893
+ height: 0;
894
+ filter: alpha(opacity=0) !important;
895
+ opacity: 0 !important; }
896
+ .flowplayer .fp-menu.fp-active {
897
+ -webkit-transform: scale(1);
898
+ -ms-transform: scale(1);
899
+ transform: scale(1);
900
+ height: auto;
901
+ bottom: 3.2em;
902
+ filter: alpha(opacity=100) !important;
903
+ opacity: 1 !important; }
904
+ .flowplayer .fp-menu > * {
905
+ display: block;
906
+ padding: .4em 1.2em;
907
+ text-align: right; }
908
+ .flowplayer .fp-menu strong {
909
+ display: block;
910
+ padding: .7em 1.2em;
911
+ border-bottom: 1px solid rgba(255, 255, 255, 0.2);
912
+ background-color: rgba(0, 0, 0, 0.3);
913
+ text-transform: uppercase;
914
+ letter-spacing: 1px;
915
+ cursor: default;
916
+ font-size: 90%; }
917
+ .flowplayer .fp-menu a {
918
+ color: rgba(255, 255, 255, 0.8); }
919
+ .flowplayer .fp-menu a:hover:not(.fp-selected) {
920
+ background-color: #000;
921
+ color: #fff; }
922
+ .flowplayer .fp-menu .fp-icon {
923
+ cursor: pointer; }
924
+ .flowplayer .fp-menu .fp-icon:before {
925
+ margin-right: .1em;
926
+ font-size: 1.5em;
927
+ vertical-align: -0.1em; }
928
+ .flowplayer .fp-qsel-menu {
929
+ width: auto; }
930
+ .flowplayer .fp-context-menu {
931
+ width: auto;
932
+ right: auto;
933
+ bottom: auto !important;
934
+ display: none; }
935
+ .flowplayer .fp-context-menu.fp-active {
936
+ display: block; }
937
+ .flowplayer .fp-context-menu a, .flowplayer .fp-context-menu strong {
938
+ text-align: left;
939
+ color: #fff;
940
+ white-space: nowrap; }
941
+ .flowplayer .fp-share-menu {
942
+ width: 9em;
943
+ padding-bottom: 0.2em; }
944
+ .flowplayer .fp-share-menu.fp-active {
945
+ bottom: auto; }
946
+ .flowplayer .fp-share-menu a, .flowplayer .fp-share-menu strong {
947
+ text-align: left; }
948
+ .flowplayer.fp-outlined .fp-play svg.fp-play-rounded-fill, .flowplayer.fp-minimal .fp-play svg.fp-play-rounded-fill, .flowplayer.fp-outlined .fp-play svg.fp-pause-rounded-fill, .flowplayer.fp-minimal .fp-play svg.fp-pause-rounded-fill, .flowplayer.fp-outlined .fp-play svg.fp-loading-rounded-fill, .flowplayer.fp-minimal .fp-play svg.fp-loading-rounded-fill, .flowplayer.fp-outlined .fp-pause svg.fp-play-rounded-fill, .flowplayer.fp-minimal .fp-pause svg.fp-play-rounded-fill, .flowplayer.fp-outlined .fp-pause svg.fp-pause-rounded-fill, .flowplayer.fp-minimal .fp-pause svg.fp-pause-rounded-fill, .flowplayer.fp-outlined .fp-pause svg.fp-loading-rounded-fill, .flowplayer.fp-minimal .fp-pause svg.fp-loading-rounded-fill, .flowplayer.fp-outlined .fp-waiting svg.fp-play-rounded-fill, .flowplayer.fp-minimal .fp-waiting svg.fp-play-rounded-fill, .flowplayer.fp-outlined .fp-waiting svg.fp-pause-rounded-fill, .flowplayer.fp-minimal .fp-waiting svg.fp-pause-rounded-fill, .flowplayer.fp-outlined .fp-waiting svg.fp-loading-rounded-fill, .flowplayer.fp-minimal .fp-waiting svg.fp-loading-rounded-fill {
949
+ display: none; }
950
+ .flowplayer.fp-outlined .fp-play svg.fp-play-rounded-outline, .flowplayer.fp-minimal .fp-play svg.fp-play-rounded-outline, .flowplayer.fp-outlined .fp-play svg.fp-pause-rounded-outline, .flowplayer.fp-minimal .fp-play svg.fp-pause-rounded-outline, .flowplayer.fp-outlined .fp-play svg.fp-loading-rounded-outline, .flowplayer.fp-minimal .fp-play svg.fp-loading-rounded-outline, .flowplayer.fp-outlined .fp-pause svg.fp-play-rounded-outline, .flowplayer.fp-minimal .fp-pause svg.fp-play-rounded-outline, .flowplayer.fp-outlined .fp-pause svg.fp-pause-rounded-outline, .flowplayer.fp-minimal .fp-pause svg.fp-pause-rounded-outline, .flowplayer.fp-outlined .fp-pause svg.fp-loading-rounded-outline, .flowplayer.fp-minimal .fp-pause svg.fp-loading-rounded-outline, .flowplayer.fp-outlined .fp-waiting svg.fp-play-rounded-outline, .flowplayer.fp-minimal .fp-waiting svg.fp-play-rounded-outline, .flowplayer.fp-outlined .fp-waiting svg.fp-pause-rounded-outline, .flowplayer.fp-minimal .fp-waiting svg.fp-pause-rounded-outline, .flowplayer.fp-outlined .fp-waiting svg.fp-loading-rounded-outline, .flowplayer.fp-minimal .fp-waiting svg.fp-loading-rounded-outline {
951
+ display: block; }
952
+ .flowplayer.fp-outlined .fp-airplay:before, .flowplayer.fp-minimal .fp-airplay:before {
953
+ content: "\e201"; }
954
+ .flowplayer.fp-outlined .fp-fullscreen:before, .flowplayer.fp-minimal .fp-fullscreen:before {
955
+ content: "\e202"; }
956
+ .flowplayer.fp-outlined .fp-checked:before, .flowplayer.fp-minimal .fp-checked:before {
957
+ content: "\e203"; }
958
+ .flowplayer.fp-outlined .fp-embed:before, .flowplayer.fp-minimal .fp-embed:before {
959
+ content: "\e204"; }
960
+ .flowplayer.fp-outlined .fp-chromecast:before, .flowplayer.fp-minimal .fp-chromecast:before {
961
+ content: "\e205"; }
962
+ .flowplayer.fp-outlined .fp-email:before, .flowplayer.fp-minimal .fp-email:before {
963
+ content: "\e206"; }
964
+ .flowplayer.fp-outlined .fp-playbtn:before, .flowplayer.fp-minimal .fp-playbtn:before {
965
+ content: "\e207"; }
966
+ .flowplayer.fp-outlined .fp-share:before, .flowplayer.fp-minimal .fp-share:before {
967
+ content: "\e209"; }
968
+ .flowplayer.fp-outlined .fp-share2:before, .flowplayer.fp-minimal .fp-share2:before {
969
+ content: "\e20a"; }
970
+ .flowplayer.fp-outlined .fp-twitter:before, .flowplayer.fp-minimal .fp-twitter:before {
971
+ content: "\e20c"; }
972
+ .flowplayer.fp-outlined .fp-facebook:before, .flowplayer.fp-minimal .fp-facebook:before {
973
+ content: "\e20a"; }
974
+ .flowplayer.fp-outlined .fp-volumebtn:before, .flowplayer.fp-minimal .fp-volumebtn:before {
975
+ content: "\e20b"; }
976
+ .flowplayer.fp-outlined .fp-volume-off:before, .flowplayer.fp-minimal .fp-volume-off:before {
977
+ content: "\e20d"; }
978
+ .flowplayer.fp-outlined .fp-unload:before, .flowplayer.fp-minimal .fp-unload:before {
979
+ content: "\e20f"; }
980
+ .flowplayer.fp-outlined .fp-prevbtn:before, .flowplayer.fp-minimal .fp-prevbtn:before {
981
+ content: "\e211"; }
982
+ .flowplayer.fp-outlined .fp-nextbtn:before, .flowplayer.fp-minimal .fp-nextbtn:before {
983
+ content: "\e212"; }
984
+ .flowplayer .fp-color {
985
+ background-color: #00abcd;
986
+ fill: rgba(0, 0, 0, 0.2); }
987
+ .flowplayer .fp-color-play {
988
+ fill: transparent; }
989
+ .flowplayer.is-rtl {
990
+ direction: rtl; }
991
+ .flowplayer.is-rtl .fp-icon {
992
+ -webkit-transform: rotate(180deg);
993
+ -ms-transform: rotate(180deg);
994
+ transform: rotate(180deg); }
995
+ .flowplayer.-grayscale video.fp-engine {
996
+ -webkit-filter: grayscale(100%);
997
+ filter: grayscale(100%); }
998
+ .flowplayer.-sepia video.fp-engine {
999
+ -webkit-filter: sepia(100%);
1000
+ filter: sepia(100%); }
1001
+ .flowplayer.-blur video.fp-engine {
1002
+ -webkit-filter: blur(5px);
1003
+ filter: blur(5px); }
1004
+
1005
+ .fp-filters {
1006
+ width: 0 !important;
1007
+ height: 0 !important;
1008
+ overflow: hidden !important;
1009
+ position: absolute; }
1010
+
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: http://noorsplugin.com/
4
  Tags: video, wpvideo, flash, html5, iPad, iphone, ipod, mobile, playlists, embed video, flowplayer, video html5, flash player, player, video player
5
  Requires at least: 4.3
6
  Tested up to: 4.7
7
- Stable tag: 1.1.4
8
  License: GPLv3 or later
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
@@ -63,9 +63,11 @@ The player ratio is set to "0.417" by default. You can override it by specifying
63
 
64
  **Control Player Skin**
65
 
66
- By default, the player uses the "minimalist" skin. You can override it by specifying a different skin in the shortcode:
67
 
68
- `[evp_embed_video url="http://example.com/wp-content/uploads/videos/myvid.mp4" class="functional"]`
 
 
69
 
70
  **Video Loop**
71
 
@@ -136,6 +138,9 @@ none
136
 
137
  == Changelog ==
138
 
 
 
 
139
  = 1.1.4 =
140
  * Added a new shortcode parameter - "video_id". It can be used to specify a custom ID for a video.
141
 
4
  Tags: video, wpvideo, flash, html5, iPad, iphone, ipod, mobile, playlists, embed video, flowplayer, video html5, flash player, player, video player
5
  Requires at least: 4.3
6
  Tested up to: 4.7
7
+ Stable tag: 1.1.5
8
  License: GPLv3 or later
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
63
 
64
  **Control Player Skin**
65
 
66
+ The video player comes with a default skin. But you can override it by specifying a different skin in the shortcode:
67
 
68
+ `[evp_embed_video url="http://example.com/wp-content/uploads/videos/myvid.mp4" class="fp-minimal"]`
69
+
70
+ `[evp_embed_video url="http://example.com/wp-content/uploads/videos/myvid.mp4" class="fp-playful"]`
71
 
72
  **Video Loop**
73
 
138
 
139
  == Changelog ==
140
 
141
+ = 1.1.5 =
142
+ * Updated the player to version 7.0.2.
143
+
144
  = 1.1.4 =
145
  * Added a new shortcode parameter - "video_id". It can be used to specify a custom ID for a video.
146